From kde-kimageshop Wed Apr 29 16:17:27 2015 From: Dmitry Kazakov Date: Wed, 29 Apr 2015 16:17:27 +0000 To: kde-kimageshop Subject: [calligra/calligra/2.9] krita: [NEED TESTING FROM USERS!] A HUGE optimization for the merger framewo Message-Id: X-MARC-Message: https://marc.info/?l=kde-kimageshop&m=143032650017906 R2l0IGNvbW1pdCBmOTNhNzE1YjVhNTI4N2YwY2M4OTc2ZjhjNzY4MTVmODY0NmIwN2U1IGJ5IERt aXRyeSBLYXpha292LgpDb21taXR0ZWQgb24gMjkvMDQvMjAxNSBhdCAxNjowNi4KUHVzaGVkIGJ5 IGRrYXpha292IGludG8gYnJhbmNoICdjYWxsaWdyYS8yLjknLgoKW05FRUQgVEVTVElORyBGUk9N IFVTRVJTIV0gQSBIVUdFIG9wdGltaXphdGlvbiBmb3IgdGhlIG1lcmdlciBmcmFtZXdvcmsKCk5v dyB0aGUgbWVyZ2VyIGRlYWxzIG11Y2ggbW9yZSBjYXJlZnVsbHkgd2l0aCB0aGUgbGF5ZXIncyBl eHRlbnQgYW5kCmRvZXNuJ3Qgd3JpdGUgZGF0YSBpZiB0aGUgYXJlYSBpbiBxdWVzdGlvbiBpcyBl bXB0eSEgVGhhdCBpcyByZWFsbHkKaW1wb3J0YW50IHdoZW4gd29ya2luZyB3aXRoIHRyYW5zZm9y bWF0aW9uIGFuZCB0cmFuc3BhcmVuY3kgbWFza3MuCgpXaGF0IG5lZWRzIHRvIGJlIHRlc3RlZCBy ZWFsbHkgdGhvcm91Z2hseToKCjEpIFVzaW5nIE1vdmUgVG9vbAoKKiBvbiB1c3VhbCBsYXllcnMK KiBvbiBncm91cCBsYXllcnMKKiBvbiBsYXllcnMgd2l0aCB0cmFuc3BhcmVuY3kgbWFza3MKKiBv biBsYXllcnMgd2l0aCB0cmFuc2Zvcm1hdGlvbiBtYXNrcwoKMikgVXBkYXRlcyB3aGVuIHVzaW5n IFRyYW5zZm9ybWF0aW9uIE1hc2tzCgozKSBVcGRhdGVzIHdoZW4gdXNpbmcgVHJhbnNwYXJlbmN5 IE1hc2tzCgoKQ0NNQUlMOmtpbWFnZXNob3BAa2RlLm9yZwoKTSAgKzEgICAgLTQgICAga3JpdGEv aW1hZ2UvZmlsdGVyL2tpc19maWx0ZXIuY2MKTSAgKzMgICAgLTcgICAga3JpdGEvaW1hZ2Uva2lz X2FzeW5jX21lcmdlci5jcHAKTSAgKzQgICAgLTQgICAga3JpdGEvaW1hZ2Uva2lzX2Jhc2VfcmVj dHNfd2Fsa2VyLmgKTSAgKzEgICAgLTMgICAga3JpdGEvaW1hZ2Uva2lzX2Nsb25lX2xheWVyLmNw cApNICArNSAgICAtNyAgICBrcml0YS9pbWFnZS9raXNfZnVsbF9yZWZyZXNoX3dhbGtlci5oCk0g ICszICAgIC03ICAgIGtyaXRhL2ltYWdlL2tpc19sYXllci5jYwpNICArMSAgICAtMSAgICBrcml0 YS9pbWFnZS9raXNfbGF5ZXIuaApNICArNyAgICAtMiAgICBrcml0YS9pbWFnZS9raXNfbGF5ZXJf cHJvamVjdGlvbl9wbGFuZS5jcHAKTSAgKzIgICAgLTggICAga3JpdGEvaW1hZ2Uva2lzX21hc2su Y2MKTSAgKzEgICAgLTAgICAga3JpdGEvaW1hZ2Uva2lzX21lcmdlX3dhbGtlci5oCk0gICsxMiAg IC0yICAgIGtyaXRhL2ltYWdlL2tpc19wYWludF9kZXZpY2UuY2MKTSAgKzIgICAgLTMgICAga3Jp dGEvaW1hZ2Uva2lzX3BhaW50X2xheWVyLmNjCk0gICs3MSAgIC0wICAgIGtyaXRhL2ltYWdlL2tp c19wYWludGVyLmNjCk0gICsxNiAgIC0wICAgIGtyaXRhL2ltYWdlL2tpc19wYWludGVyLmgKTSAg KzMgICAgLTQgICAga3JpdGEvaW1hZ2Uva2lzX3BlcnNwZWN0aXZldHJhbnNmb3JtX3dvcmtlci5j cHAKTSAgKzEgICAgLTQgICAga3JpdGEvaW1hZ2Uva2lzX3BpeGVsX3NlbGVjdGlvbi5jcHAKTSAg KzIgICAgLTIgICAga3JpdGEvaW1hZ2Uva2lzX3JlZnJlc2hfc3VidHJlZV93YWxrZXIuaApNICAr MiAgICAtMiAgICBrcml0YS9pbWFnZS9raXNfc2VsZWN0aW9uX2Jhc2VkX2xheWVyLmNwcApNICAr MiAgICAtNCAgICBrcml0YS9pbWFnZS9raXNfdHJhbnNmb3JtX21hc2suY3BwCk0gICsxICAgIC0z ICAgIGtyaXRhL2ltYWdlL2tpc190cmFuc2Zvcm1fbWFza19wYXJhbXNfaW50ZXJmYWNlLmNwcApN ICArMTAgICAtMjAgICBrcml0YS9pbWFnZS9raXNfdHJhbnNmb3JtX3dvcmtlci5jYwpNICArMSAg ICAtMyAgICBrcml0YS9pbWFnZS9raXNfdHJhbnNwYXJlbmN5X21hc2suY2MKTSAgKzEyNCAgLTAg ICAga3JpdGEvaW1hZ2UvdGVzdHMva2lzX3RyYW5zZm9ybV9tYXNrX3Rlc3QuY3BwCk0gICsyICAg IC0wICAgIGtyaXRhL2ltYWdlL3Rlc3RzL2tpc190cmFuc2Zvcm1fbWFza190ZXN0LmgKTSAgKzIg ICAgLTIgICAga3JpdGEvaW1hZ2UvdGVzdHMva2lzX3RyYW5zcGFyZW5jeV9tYXNrX3Rlc3QuY3Bw Ck0gICszNiAgIC0yMyAgIGtyaXRhL2ltYWdlL3RpbGVzMy9raXNfdGlsZWRfZGF0YV9tYW5hZ2Vy LmNjCk0gICsyICAgIC0wICAgIGtyaXRhL2ltYWdlL3RpbGVzMy9raXNfdGlsZWRfZGF0YV9tYW5h Z2VyLmgKTSAgKzEgICAgLTQgICAga3JpdGEvc2tldGNoL0ltYWdlQnVpbGRlci5jcHAKTSAgKzIg ICAgLTkgICAga3JpdGEvdWkvYWN0aW9ucy9raXNfc2VsZWN0aW9uX2FjdGlvbl9mYWN0b3JpZXMu Y3BwCk0gICszICAgIC00ICAgIGtyaXRhL3VpL2ZsYWtlL2tpc19zaGFwZV9sYXllcl9jYW52YXMu Y3BwCk0gICszICAgIC0zICAgIGtyaXRhL3VpL2tpc19sYXllcl9tYW5hZ2VyLmNjCk0gICsxICAg IC00ICAgIGtyaXRhL3VpL3Rvb2wvc3Ryb2tlcy9raXNfZmlsdGVyX3N0cm9rZV9zdHJhdGVneS5j cHAKTSAgKzMgICAgLTQgICAga3JpdGEvdWkvd2lkZ2V0cy9raXNfaW1hZ2VfZnJvbV9jbGlwYm9h cmRfd2lkZ2V0LmNwcAoKaHR0cDovL2NvbW1pdHMua2RlLm9yZy9jYWxsaWdyYS9mOTNhNzE1YjVh NTI4N2YwY2M4OTc2ZjhjNzY4MTVmODY0NmIwN2U1CgpkaWZmIC0tZ2l0IGEva3JpdGEvaW1hZ2Uv ZmlsdGVyL2tpc19maWx0ZXIuY2MgYi9rcml0YS9pbWFnZS9maWx0ZXIva2lzX2ZpbHRlci5jYwpp bmRleCA5NzgxOTdjLi5hYjc3NjNmIDEwMDY0NAotLS0gYS9rcml0YS9pbWFnZS9maWx0ZXIva2lz X2ZpbHRlci5jYworKysgYi9rcml0YS9pbWFnZS9maWx0ZXIva2lzX2ZpbHRlci5jYwpAQCAtMTM0 LDEwICsxMzQsNyBAQCB2b2lkIEtpc0ZpbHRlcjo6cHJvY2Vzcyhjb25zdCBLaXNQYWludERldmlj ZVNQIHNyYywKIAogICAgIGlmKHRyYW5zYWN0aW9uKSB7CiAgICAgICAgIGRlbGV0ZSB0cmFuc2Fj dGlvbjsKLSAgICAgICAgS2lzUGFpbnRlciBwKGRzdCk7Ci0gICAgICAgIHAuc2V0Q29tcG9zaXRl T3AoQ09NUE9TSVRFX0NPUFkpOwotICAgICAgICBwLnNldFNlbGVjdGlvbihzZWxlY3Rpb24pOwot ICAgICAgICBwLmJpdEJsdChhcHBseVJlY3QudG9wTGVmdCgpLCB0ZW1wb3JhcnksIGFwcGx5UmVj dCk7CisgICAgICAgIEtpc1BhaW50ZXI6OmNvcHlBcmVhT3B0aW1pemVkKGFwcGx5UmVjdC50b3BM ZWZ0KCksIHRlbXBvcmFyeSwgZHN0LCBhcHBseVJlY3QsIHNlbGVjdGlvbik7CiAgICAgfQogfQog CmRpZmYgLS1naXQgYS9rcml0YS9pbWFnZS9raXNfYXN5bmNfbWVyZ2VyLmNwcCBiL2tyaXRhL2lt YWdlL2tpc19hc3luY19tZXJnZXIuY3BwCmluZGV4IDhmZTEwM2UuLmI3OTZmNjYgMTAwNjQ0Ci0t LSBhL2tyaXRhL2ltYWdlL2tpc19hc3luY19tZXJnZXIuY3BwCisrKyBiL2tyaXRhL2ltYWdlL2tp c19hc3luY19tZXJnZXIuY3BwCkBAIC0xMDMsOSArMTAzLDcgQEAgcHVibGljOgogICAgICAgICAg ICAgICogZmlsdGVyIGluc2lkZS4gVGhlbiB0aGUgbGF5ZXIgaGFzIHdvcmsgYXMgYSBwYXNzLXRo cm91Z2gKICAgICAgICAgICAgICAqIG5vZGUuIEp1c3QgY29weSB0aGUgbWVyZ2VkIGRhdGEgdG8g dGhlIGxheWVyJ3Mgb3JpZ2luYWwuCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIEtpc1Bh aW50ZXIgZ2Mob3JpZ2luYWxEZXZpY2UpOwotICAgICAgICAgICAgZ2Muc2V0Q29tcG9zaXRlT3Ao Q09NUE9TSVRFX0NPUFkpOwotICAgICAgICAgICAgZ2MuYml0Qmx0KGFwcGx5UmVjdC50b3BMZWZ0 KCksIG1fcHJvamVjdGlvbiwgYXBwbHlSZWN0KTsKKyAgICAgICAgICAgIEtpc1BhaW50ZXI6OmNv cHlBcmVhT3B0aW1pemVkKGFwcGx5UmVjdC50b3BMZWZ0KCksIG1fcHJvamVjdGlvbiwgb3JpZ2lu YWxEZXZpY2UsIGFwcGx5UmVjdCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg fQogCkBAIC0zMjcsOSArMzI1LDcgQEAgdm9pZCBLaXNBc3luY01lcmdlcjo6d3JpdGVQcm9qZWN0 aW9uKEtpc05vZGVTUCB0b3Btb3N0Tm9kZSwgYm9vbCB1c2VUZW1wUHJvamVjdGkKICAgICBpZiAo IW1fY3VycmVudFByb2plY3Rpb24pIHJldHVybjsKIAogICAgIGlmKG1fY3VycmVudFByb2plY3Rp b24gIT0gbV9maW5hbFByb2plY3Rpb24pIHsKLSAgICAgICAgS2lzUGFpbnRlciBnYyhtX2ZpbmFs UHJvamVjdGlvbik7Ci0gICAgICAgIGdjLnNldENvbXBvc2l0ZU9wKG1fZmluYWxQcm9qZWN0aW9u LT5jb2xvclNwYWNlKCktPmNvbXBvc2l0ZU9wKENPTVBPU0lURV9DT1BZKSk7Ci0gICAgICAgIGdj LmJpdEJsdChyZWN0LnRvcExlZnQoKSwgbV9jdXJyZW50UHJvamVjdGlvbiwgcmVjdCk7CisgICAg ICAgIEtpc1BhaW50ZXI6OmNvcHlBcmVhT3B0aW1pemVkKHJlY3QudG9wTGVmdCgpLCBtX2N1cnJl bnRQcm9qZWN0aW9uLCBtX2ZpbmFsUHJvamVjdGlvbiwgcmVjdCk7CiAgICAgfQogICAgIERFQlVH X05PREVfQUNUSU9OKCJXcml0aW5nIHByb2plY3Rpb24iLCAiIiwgdG9wbW9zdE5vZGUtPnBhcmVu dCgpLCByZWN0KTsKIH0KQEAgLTM0Miw3ICszMzgsNyBAQCBib29sIEtpc0FzeW5jTWVyZ2VyOjpj b21wb3NpdGVXaXRoUHJvamVjdGlvbihLaXNMYXllclNQIGxheWVyLCBjb25zdCBRUmVjdCAmcmVj dAogICAgIEtpc1BhaW50ZXIgZ2MobV9jdXJyZW50UHJvamVjdGlvbik7CiAgICAgbGF5ZXItPnBy b2plY3Rpb25QbGFuZSgpLT5hcHBseSgmZ2MsIHJlY3QpOwogCi0gICAgREVCVUdfTk9ERV9BQ1RJ T04oIkNvbXBvc2l0aW5nIHByb2plY3Rpb24iLCAiIiwgbGF5ZXIsIG5lZWRSZWN0KTsKKyAgICBE RUJVR19OT0RFX0FDVElPTigiQ29tcG9zaXRpbmcgcHJvamVjdGlvbiIsICIiLCBsYXllciwgcmVj dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL2tyaXRhL2ltYWdlL2tpc19i YXNlX3JlY3RzX3dhbGtlci5oIGIva3JpdGEvaW1hZ2Uva2lzX2Jhc2VfcmVjdHNfd2Fsa2VyLmgK aW5kZXggYWZiNzk4NC4uNmFlZmFjMCAxMDA2NDQKLS0tIGEva3JpdGEvaW1hZ2Uva2lzX2Jhc2Vf cmVjdHNfd2Fsa2VyLmgKKysrIGIva3JpdGEvaW1hZ2Uva2lzX2Jhc2VfcmVjdHNfd2Fsa2VyLmgK QEAgLTE2NywxNSArMTY3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY2xvbmVOb3Rp ZmljYXRpb25zOwogICAgIH0KIAotICAgIGlubGluZSBjb25zdCBRUmVjdCYgYWNjZXNzUmVjdCgp IGNvbnN0IHsKKyAgICBpbmxpbmUgUVJlY3QgYWNjZXNzUmVjdCgpIGNvbnN0IHsKICAgICAgICAg cmV0dXJuIG1fcmVzdWx0QWNjZXNzUmVjdDsKICAgICB9CiAKLSAgICBpbmxpbmUgY29uc3QgUVJl Y3QmIGNoYW5nZVJlY3QoKSBjb25zdCB7CisgICAgaW5saW5lIFFSZWN0IGNoYW5nZVJlY3QoKSBj b25zdCB7CiAgICAgICAgIHJldHVybiBtX3Jlc3VsdENoYW5nZVJlY3Q7CiAgICAgfQogCi0gICAg aW5saW5lIGNvbnN0IFFSZWN0JiB1bmNyb3BwZWRDaGFuZ2VSZWN0KCkgY29uc3QgeworICAgIGlu bGluZSBRUmVjdCB1bmNyb3BwZWRDaGFuZ2VSZWN0KCkgY29uc3QgewogICAgICAgICByZXR1cm4g bV9yZXN1bHRVbmNyb3BwZWRDaGFuZ2VSZWN0OwogICAgIH0KIApAQCAtMTkxLDcgKzE5MSw3IEBA IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc3RhcnROb2RlOwogICAgIH0KIAotICAgIGlubGlu ZSBjb25zdCBRUmVjdCYgcmVxdWVzdGVkUmVjdCgpIGNvbnN0IHsKKyAgICBpbmxpbmUgUVJlY3Qg cmVxdWVzdGVkUmVjdCgpIGNvbnN0IHsKICAgICAgICAgcmV0dXJuIG1fcmVxdWVzdGVkUmVjdDsK ICAgICB9CiAKZGlmZiAtLWdpdCBhL2tyaXRhL2ltYWdlL2tpc19jbG9uZV9sYXllci5jcHAgYi9r cml0YS9pbWFnZS9raXNfY2xvbmVfbGF5ZXIuY3BwCmluZGV4IGYzN2M4NjAuLmQ5M2IwYTEgMTAw NjQ0Ci0tLSBhL2tyaXRhL2ltYWdlL2tpc19jbG9uZV9sYXllci5jcHAKKysrIGIva3JpdGEvaW1h Z2Uva2lzX2Nsb25lX2xheWVyLmNwcApAQCAtMTM2LDkgKzEzNiw3IEBAIHZvaWQgS2lzQ2xvbmVM YXllcjo6Y29weU9yaWdpbmFsVG9Qcm9qZWN0aW9uKGNvbnN0IEtpc1BhaW50RGV2aWNlU1Agb3Jp Z2luYWwsCiAgICAgUVJlY3QgY29weVJlY3QgPSByZWN0OwogICAgIGNvcHlSZWN0LnRyYW5zbGF0 ZSgtbV9kLT54LCAtbV9kLT55KTsKIAotICAgIEtpc1BhaW50ZXIgZ2MocHJvamVjdGlvbik7Ci0g ICAgZ2Muc2V0Q29tcG9zaXRlT3AoY29sb3JTcGFjZSgpLT5jb21wb3NpdGVPcChDT01QT1NJVEVf Q09QWSkpOwotICAgIGdjLmJpdEJsdChyZWN0LnRvcExlZnQoKSwgb3JpZ2luYWwsIGNvcHlSZWN0 KTsKKyAgICBLaXNQYWludGVyOjpjb3B5QXJlYU9wdGltaXplZChyZWN0LnRvcExlZnQoKSwgb3Jp Z2luYWwsIHByb2plY3Rpb24sIGNvcHlSZWN0KTsKIH0KIAogdm9pZCBLaXNDbG9uZUxheWVyOjpz ZXREaXJ0eU9yaWdpbmFsKGNvbnN0IFFSZWN0ICZyZWN0KQpkaWZmIC0tZ2l0IGEva3JpdGEvaW1h Z2Uva2lzX2Z1bGxfcmVmcmVzaF93YWxrZXIuaCBiL2tyaXRhL2ltYWdlL2tpc19mdWxsX3JlZnJl c2hfd2Fsa2VyLmgKaW5kZXggMmZhYzVkYy4uZTM5ZmMwYyAxMDA2NDQKLS0tIGEva3JpdGEvaW1h Z2Uva2lzX2Z1bGxfcmVmcmVzaF93YWxrZXIuaAorKysgYi9rcml0YS9pbWFnZS9raXNfZnVsbF9y ZWZyZXNoX3dhbGtlci5oCkBAIC0yNyw3ICsyNyw3IEBAIGNsYXNzIEtpc0Z1bGxSZWZyZXNoV2Fs a2VyIDogcHVibGljIEtpc1JlZnJlc2hTdWJ0cmVlV2Fsa2VyLCBwdWJsaWMgS2lzTWVyZ2VXYWxr CiB7CiBwdWJsaWM6CiAgICAgS2lzRnVsbFJlZnJlc2hXYWxrZXIoUVJlY3QgY3JvcFJlY3QpCi0g ICAgICAgIDogbV9maXJzdFJ1bih0cnVlKQorICAgICAgICA6IEtpc01lcmdlV2Fsa2VyKE5PX0ZJ TFRIWSksIG1fZmlyc3RSdW4odHJ1ZSkKICAgICB7CiAgICAgICAgIHNldENyb3BSZWN0KGNyb3BS ZWN0KTsKICAgICB9CkBAIC02OSwxNCArNjksMTIgQEAgcHVibGljOgogICAgICAgICAgICAgICog dHJ1ZSBpbiBjYXNlIG9mIGZ1bGwgcmVmcmVzaCB3YWxrZXIsIGJlY2F1c2UgYWxsIHRoZQogICAg ICAgICAgICAgICogY2hpbGRyZW4gb2YgdGhlIGRpcnR5IG5vZGUgYXJlIGRpcnR5IGFzIHdlbGws IHRoYXQgaXMKICAgICAgICAgICAgICAqIHdoeSB3ZSBzaG91bGRuJ3QgcmVseSBvbiB1c3VhbCBy ZWdpc3RlckNoYW5nZVJlY3QoKQotICAgICAgICAgICAgICogbWVjaGFuaXNtIGZvciB0aGlzIG5v ZGUuIEFjdHVhbGx5LCBub2RlLT5jaGFuZ2VSZWN0KCkKLSAgICAgICAgICAgICAqIG1heSBub3Qg YmUgdmFsaWQgaW4gY2FzZSBpdHMgbWFza3MgaGF2ZSBiZWVuIGNoYW5nZXMuCi0gICAgICAgICAg ICAgKiBUaGF0IGlzIHdoeSB3ZSBqdXN0IHVuaXRlIHRoZSBjaGFuZ2VSZWN0cyBvZiBhbGwgaXRz Ci0gICAgICAgICAgICAgKiBjaGlsZHJlbiBoZXJlLgorICAgICAgICAgICAgICogbWVjaGFuaXNt IGZvciB0aGlzIG5vZGUuIFRoYXQgaXMgd2h5IHdlIGp1c3QgdW5pdGUgdGhlCisgICAgICAgICAg ICAgKiBjaGFuZ2VSZWN0cyBvZiBhbGwgaXRzIGNoaWxkcmVuIGhlcmUuCiAgICAgICAgICAgICAg Ki8KIAotICAgICAgICAgICAgaWYobm9kZSA9PSBzdGFydE5vZGUoKSkgewotICAgICAgICAgICAg ICAgIEtpc1JlZnJlc2hTdWJ0cmVlV2Fsa2VyOjpjYWxjdWxhdGVDaGFuZ2VSZWN0KG5vZGUsIGNo YW5nZVJlY3QoKSk7CisgICAgICAgICAgICBpZihub2RlID09IHN0YXJ0Tm9kZSgpICYmIG5vZGUt PnBhcmVudCgpKSB7CisgICAgICAgICAgICAgICAgS2lzUmVmcmVzaFN1YnRyZWVXYWxrZXI6OmNh bGN1bGF0ZUNoYW5nZVJlY3Qobm9kZSwgcmVxdWVzdGVkUmVjdCgpKTsKICAgICAgICAgICAgIH0K ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEtpc01lcmdlV2Fsa2VyOjpyZWdp c3RlckNoYW5nZVJlY3Qobm9kZSwgcG9zaXRpb24pOwpkaWZmIC0tZ2l0IGEva3JpdGEvaW1hZ2Uv a2lzX2xheWVyLmNjIGIva3JpdGEvaW1hZ2Uva2lzX2xheWVyLmNjCmluZGV4IGVjYTFkMDcuLjVl NDZhN2MgMTAwNjQ0Ci0tLSBhL2tyaXRhL2ltYWdlL2tpc19sYXllci5jYworKysgYi9rcml0YS9p bWFnZS9raXNfbGF5ZXIuY2MKQEAgLTUxMyw3ICs1MTMsNyBAQCBLaXNOb2RlOjpQb3NpdGlvblRv RmlsdGh5IGNhbGN1bGF0ZVBvc2l0aW9uVG9GaWx0aHkoS2lzTm9kZVNQIG5vZGVJblF1ZXN0aW9u LAogfQogCiBRUmVjdCBLaXNMYXllcjo6YXBwbHlNYXNrcyhjb25zdCBLaXNQYWludERldmljZVNQ IHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEtpc1BhaW50RGV2aWNl U1AgZGVzdGluYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBLaXNQYWludERldmlj ZVNQIGRlc3RpbmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVJlY3Qg JnJlcXVlc3RlZFJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBLaXNOb2RlU1AgZmls dGh5Tm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtpc05vZGVTUCBsYXN0Tm9kZSkg Y29uc3QKQEAgLTU5NCw5ICs1OTQsNyBAQCBRUmVjdCBLaXNMYXllcjo6YXBwbHlNYXNrcyhjb25z dCBLaXNQYWludERldmljZVNQIHNvdXJjZSwKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFFf QVNTRVJUKGFwcGx5UmVjdHMuaXNFbXB0eSgpKTsKIAotICAgICAgICAgICAgS2lzUGFpbnRlciBn YzIoZGVzdGluYXRpb24pOwotICAgICAgICAgICAgZ2MyLnNldENvbXBvc2l0ZU9wKGNvbG9yU3Bh Y2UoKS0+Y29tcG9zaXRlT3AoQ09NUE9TSVRFX0NPUFkpKTsKLSAgICAgICAgICAgIGdjMi5iaXRC bHQoY2hhbmdlUmVjdC50b3BMZWZ0KCksIHRlbXBEZXZpY2UsIGNoYW5nZVJlY3QpOworICAgICAg ICAgICAgS2lzUGFpbnRlcjo6Y29weUFyZWFPcHRpbWl6ZWQoY2hhbmdlUmVjdC50b3BMZWZ0KCks IHRlbXBEZXZpY2UsIGRlc3RpbmF0aW9uLCBjaGFuZ2VSZWN0KTsKICAgICAgICAgfQogICAgIH0K IApAQCAtNjYzLDkgKzY2MSw3IEBAIHZvaWQgS2lzTGF5ZXI6OmNvcHlPcmlnaW5hbFRvUHJvamVj dGlvbihjb25zdCBLaXNQYWludERldmljZVNQIG9yaWdpbmFsLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEtpc1BhaW50RGV2aWNlU1AgcHJvamVjdGlvbiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRUmVjdCYgcmVjdCkgY29u c3QKIHsKLSAgICBLaXNQYWludGVyIGdjKHByb2plY3Rpb24pOwotICAgIGdjLnNldENvbXBvc2l0 ZU9wKGNvbG9yU3BhY2UoKS0+Y29tcG9zaXRlT3AoQ09NUE9TSVRFX0NPUFkpKTsKLSAgICBnYy5i aXRCbHQocmVjdC50b3BMZWZ0KCksIG9yaWdpbmFsLCByZWN0KTsKKyAgICBLaXNQYWludGVyOjpj b3B5QXJlYU9wdGltaXplZChyZWN0LnRvcExlZnQoKSwgb3JpZ2luYWwsIHByb2plY3Rpb24sIHJl Y3QpOwogfQogCiBLaXNBYnN0cmFjdFByb2plY3Rpb25QbGFuZVNQIEtpc0xheWVyOjpwcm9qZWN0 aW9uUGxhbmUoKSBjb25zdApkaWZmIC0tZ2l0IGEva3JpdGEvaW1hZ2Uva2lzX2xheWVyLmggYi9r cml0YS9pbWFnZS9raXNfbGF5ZXIuaAppbmRleCAxODU2OWE3Li4wODAzMDc1IDEwMDY0NAotLS0g YS9rcml0YS9pbWFnZS9raXNfbGF5ZXIuaAorKysgYi9rcml0YS9pbWFnZS9raXNfbGF5ZXIuaApA QCAtMzYyLDcgKzM2Miw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAgICAgICAgIGJv b2wgJnJlY3RWYXJpZXNGbGFnKSBjb25zdDsKIAogICAgIFFSZWN0IGFwcGx5TWFza3MoY29uc3Qg S2lzUGFpbnREZXZpY2VTUCBzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBLaXNQ YWludERldmljZVNQIGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgS2lzUGFpbnRE ZXZpY2VTUCBkZXN0aW5hdGlvbiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFSZWN0ICZy ZXF1ZXN0ZWRSZWN0LAogICAgICAgICAgICAgICAgICAgICAgS2lzTm9kZVNQIGZpbHRoeU5vZGUs IEtpc05vZGVTUCBsYXN0Tm9kZSkgY29uc3Q7CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEva3JpdGEv aW1hZ2Uva2lzX2xheWVyX3Byb2plY3Rpb25fcGxhbmUuY3BwIGIva3JpdGEvaW1hZ2Uva2lzX2xh eWVyX3Byb2plY3Rpb25fcGxhbmUuY3BwCmluZGV4IGU4MjVlZmIuLjIzMWE5ZWUgMTAwNjQ0Ci0t LSBhL2tyaXRhL2ltYWdlL2tpc19sYXllcl9wcm9qZWN0aW9uX3BsYW5lLmNwcAorKysgYi9rcml0 YS9pbWFnZS9raXNfbGF5ZXJfcHJvamVjdGlvbl9wbGFuZS5jcHAKQEAgLTIxLDYgKzIxLDcgQEAK ICNpbmNsdWRlIDxRQml0QXJyYXk+CiAjaW5jbHVkZSA8S29Db2xvclNwYWNlLmg+CiAjaW5jbHVk ZSA8S29DaGFubmVsSW5mby5oPgorI2luY2x1ZGUgPEtvQ29tcG9zaXRlT3BSZWdpc3RyeS5oPgog I2luY2x1ZGUgImtpc19wYWludGVyLmgiCiAKIApAQCAtNTAsNyArNTEsMTIgQEAgdm9pZCBLaXNM YXllclByb2plY3Rpb25QbGFuZTo6YXBwbHkoS2lzUGFpbnRlciAqcGFpbnRlciwgY29uc3QgUVJl Y3QgJnJlY3QpCiAgICAgS2lzUGFpbnREZXZpY2VTUCBkZXZpY2UgPSBtX2QtPmxheWVyLT5wcm9q ZWN0aW9uKCk7CiAgICAgaWYgKCFkZXZpY2UpIHJldHVybjsKIAotICAgIFFSZWN0IG5lZWRSZWN0 ID0gcmVjdCAmIGRldmljZS0+ZXh0ZW50KCk7CisgICAgUVJlY3QgbmVlZFJlY3QgPSByZWN0Owor CisgICAgaWYgKG1fZC0+bGF5ZXItPmNvbXBvc2l0ZU9wSWQoKSAhPSBDT01QT1NJVEVfQ09QWSkg eworICAgICAgICBuZWVkUmVjdCAmPSBkZXZpY2UtPmV4dGVudCgpOworICAgIH0KKwogICAgIGlm KG5lZWRSZWN0LmlzRW1wdHkoKSkgcmV0dXJuOwogCiAgICAgUUJpdEFycmF5IGNoYW5uZWxGbGFn cyA9IG1fZC0+bGF5ZXItPmNoYW5uZWxGbGFncygpOwpAQCAtODQsNyArOTAsNiBAQCB2b2lkIEtp c0xheWVyUHJvamVjdGlvblBsYW5lOjphcHBseShLaXNQYWludGVyICpwYWludGVyLCBjb25zdCBR UmVjdCAmcmVjdCkKICAgICB9CiAKICAgICBwYWludGVyLT5zZXRDaGFubmVsRmxhZ3MoY2hhbm5l bEZsYWdzKTsKLQogICAgIHBhaW50ZXItPnNldENvbXBvc2l0ZU9wKG1fZC0+bGF5ZXItPmNvbXBv c2l0ZU9wKCkpOwogICAgIHBhaW50ZXItPnNldE9wYWNpdHkobV9kLT5sYXllci0+b3BhY2l0eSgp KTsKICAgICBwYWludGVyLT5iaXRCbHQobmVlZFJlY3QudG9wTGVmdCgpLCBkZXZpY2UsIG5lZWRS ZWN0KTsKZGlmZiAtLWdpdCBhL2tyaXRhL2ltYWdlL2tpc19tYXNrLmNjIGIva3JpdGEvaW1hZ2Uv a2lzX21hc2suY2MKaW5kZXggNTgyNjI4Ny4uYzQxNTg0YyAxMDA2NDQKLS0tIGEva3JpdGEvaW1h Z2Uva2lzX21hc2suY2MKKysrIGIva3JpdGEvaW1hZ2Uva2lzX21hc2suY2MKQEAgLTE1NSwxMCAr MTU1LDggQEAgdm9pZCBLaXNNYXNrOjpQcml2YXRlOjppbml0U2VsZWN0aW9uSW1wbChLaXNTZWxl Y3Rpb25TUCBjb3B5RnJvbSwgS2lzTGF5ZXJTUCBwYXIKICAgICB9IGVsc2UgaWYgKGNvcHlGcm9t RGV2aWNlKSB7CiAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBLaXNTZWxlY3Rpb24obmV3IEtpc1Nl bGVjdGlvbkRlZmF1bHRCb3VuZHMocGFyZW50UGFpbnREZXZpY2UsIHBhcmVudExheWVyLT5pbWFn ZSgpKSk7CiAKLSAgICAgICAgS2lzUGFpbnRlciBnYyhzZWxlY3Rpb24tPnBpeGVsU2VsZWN0aW9u KCkpOwotICAgICAgICBnYy5zZXRDb21wb3NpdGVPcChDT01QT1NJVEVfQ09QWSk7CiAgICAgICAg IFFSZWN0IHJjKGNvcHlGcm9tRGV2aWNlLT5leHRlbnQoKSk7Ci0gICAgICAgIGdjLmJpdEJsdChy Yy50b3BMZWZ0KCksIGNvcHlGcm9tRGV2aWNlLCByYyk7CisgICAgICAgIEtpc1BhaW50ZXI6OmNv cHlBcmVhT3B0aW1pemVkKHJjLnRvcExlZnQoKSwgY29weUZyb21EZXZpY2UsIHNlbGVjdGlvbi0+ cGl4ZWxTZWxlY3Rpb24oKSwgcmMpOwogICAgICAgICBzZWxlY3Rpb24tPnBpeGVsU2VsZWN0aW9u KCktPmludmFsaWRhdGVPdXRsaW5lQ2FjaGUoKTsKIAogICAgIH0gZWxzZSB7CkBAIC0yNDYsMTIg KzI0NCw4IEBAIHZvaWQgS2lzTWFzazo6YXBwbHkoS2lzUGFpbnREZXZpY2VTUCBwcm9qZWN0aW9u LCBjb25zdCBRUmVjdCAmYXBwbHlSZWN0LCBjb25zdCBRCiAKICAgICAgICAgUVJlY3QgdXBkYXRl ZFJlY3QgPSBkZWNvcmF0ZVJlY3QocHJvamVjdGlvbiwgY2FjaGVEZXZpY2UsIGFwcGx5UmVjdCwg bWFza1Bvcyk7CiAKLSAgICAgICAgS2lzUGFpbnRlciBnYyhwcm9qZWN0aW9uKTsKICAgICAgICAg Ly8gbWFza3MgZG9uJ3QgaGF2ZSBhbnkgY29tcG9zaXRpb25pbmcKLSAgICAgICAgZ2Muc2V0Q29t cG9zaXRlT3AoQ09NUE9TSVRFX0NPUFkpOwotICAgICAgICBnYy5zZXRTZWxlY3Rpb24obV9kLT5z ZWxlY3Rpb24pOwotICAgICAgICBnYy5iaXRCbHQodXBkYXRlZFJlY3QudG9wTGVmdCgpLCBjYWNo ZURldmljZSwgdXBkYXRlZFJlY3QpOwotCisgICAgICAgIEtpc1BhaW50ZXI6OmNvcHlBcmVhT3B0 aW1pemVkKHVwZGF0ZWRSZWN0LnRvcExlZnQoKSwgY2FjaGVEZXZpY2UsIHByb2plY3Rpb24sIHVw ZGF0ZWRSZWN0LCBtX2QtPnNlbGVjdGlvbik7CiAgICAgICAgIG1fZC0+cGFpbnREZXZpY2VDYWNo ZS5wdXREZXZpY2UoY2FjaGVEZXZpY2UpOwogCiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2ty aXRhL2ltYWdlL2tpc19tZXJnZV93YWxrZXIuaCBiL2tyaXRhL2ltYWdlL2tpc19tZXJnZV93YWxr ZXIuaAppbmRleCAxYTc4NzhjLi5jZDBjYjM0IDEwMDY0NAotLS0gYS9rcml0YS9pbWFnZS9raXNf bWVyZ2Vfd2Fsa2VyLmgKKysrIGIva3JpdGEvaW1hZ2Uva2lzX21lcmdlX3dhbGtlci5oCkBAIC01 MCw2ICs1MCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEtpc01lcmdlV2Fsa2VyKCkg OiBtX2ZsYWdzKERFRkFVTFQpIHt9CisgICAgS2lzTWVyZ2VXYWxrZXIoRmxhZ3MgZmxhZ3MpIDog bV9mbGFncyhmbGFncykge30KIAogICAgIC8qKgogICAgICAqIEJlZ2lucyB2aXNpdGluZyBub2Rl cyBzdGFydGluZyB3aXRoIEBzdGFydFdpdGguCmRpZmYgLS1naXQgYS9rcml0YS9pbWFnZS9raXNf cGFpbnRfZGV2aWNlLmNjIGIva3JpdGEvaW1hZ2Uva2lzX3BhaW50X2RldmljZS5jYwppbmRleCA5 MWRkYWY5Li42ZjYxMDE2IDEwMDY0NAotLS0gYS9rcml0YS9pbWFnZS9raXNfcGFpbnRfZGV2aWNl LmNjCisrKyBiL2tyaXRhL2ltYWdlL2tpc19wYWludF9kZXZpY2UuY2MKQEAgLTMyMywxMyArMzIz LDIzIEBAIHZvaWQgS2lzUGFpbnREZXZpY2U6OnByZXBhcmVDbG9uZShLaXNQYWludERldmljZVNQ IHNyYykKIHZvaWQgS2lzUGFpbnREZXZpY2U6Om1ha2VDbG9uZUZyb20oS2lzUGFpbnREZXZpY2VT UCBzcmMsIGNvbnN0IFFSZWN0ICZyZWN0KQogewogICAgIHByZXBhcmVDbG9uZShzcmMpOwotICAg IGZhc3RCaXRCbHQoc3JjLCByZWN0KTsKKworICAgICAvLyB3ZSBndWFyYW50ZWUgdGhhdCAqdGhp cyBpcyB0b3RhbGx5IGVtcHR5LCBzbyBjb3B5IHBpeGVscyB0aGF0CisgICAgLy8gYXJlIGFyZWFs bHkgcHJlc2VudCBvbiB0aGUgc291cmNlIGltYWdlIG9ubHkKKyAgICBjb25zdCBRUmVjdCBvcHRp bWl6ZWRSZWN0ID0gcmVjdCAmIHNyYy0+ZXh0ZW50KCk7CisKKyAgICBmYXN0Qml0Qmx0KHNyYywg b3B0aW1pemVkUmVjdCk7CiB9CiAKIHZvaWQgS2lzUGFpbnREZXZpY2U6Om1ha2VDbG9uZUZyb21S b3VnaChLaXNQYWludERldmljZVNQIHNyYywgY29uc3QgUVJlY3QgJm1pbmltYWxSZWN0KQogewog ICAgIHByZXBhcmVDbG9uZShzcmMpOwotICAgIGZhc3RCaXRCbHRSb3VnaChzcmMsIG1pbmltYWxS ZWN0KTsKKworICAgIC8vIHdlIGd1YXJhbnRlZSB0aGF0ICp0aGlzIGlzIHRvdGFsbHkgZW1wdHks IHNvIGNvcHkgcGl4ZWxzIHRoYXQKKyAgICAvLyBhcmUgYXJlYWxseSBwcmVzZW50IG9uIHRoZSBz b3VyY2UgaW1hZ2Ugb25seQorICAgIGNvbnN0IFFSZWN0IG9wdGltaXplZFJlY3QgPSBtaW5pbWFs UmVjdCAmIHNyYy0+ZXh0ZW50KCk7CisKKyAgICBmYXN0Qml0Qmx0Um91Z2goc3JjLCBvcHRpbWl6 ZWRSZWN0KTsKIH0KIAogdm9pZCBLaXNQYWludERldmljZTo6c2V0RGlydHkoKQpkaWZmIC0tZ2l0 IGEva3JpdGEvaW1hZ2Uva2lzX3BhaW50X2xheWVyLmNjIGIva3JpdGEvaW1hZ2Uva2lzX3BhaW50 X2xheWVyLmNjCmluZGV4IGNiZmZjMzIuLjFjMGM1YjAgMTAwNjQ0Ci0tLSBhL2tyaXRhL2ltYWdl L2tpc19wYWludF9sYXllci5jYworKysgYi9rcml0YS9pbWFnZS9raXNfcGFpbnRfbGF5ZXIuY2MK QEAgLTExNSwxMSArMTE1LDEwIEBAIHZvaWQgS2lzUGFpbnRMYXllcjo6Y29weU9yaWdpbmFsVG9Q cm9qZWN0aW9uKGNvbnN0IEtpc1BhaW50RGV2aWNlU1Agb3JpZ2luYWwsCiB7CiAgICAgbG9ja1Rl bXBvcmFyeVRhcmdldCgpOwogCi0gICAgS2lzUGFpbnRlciBnYyhwcm9qZWN0aW9uKTsKLSAgICBn Yy5zZXRDb21wb3NpdGVPcChwcm9qZWN0aW9uLT5jb2xvclNwYWNlKCktPmNvbXBvc2l0ZU9wKENP TVBPU0lURV9DT1BZKSk7Ci0gICAgZ2MuYml0Qmx0KHJlY3QudG9wTGVmdCgpLCBvcmlnaW5hbCwg cmVjdCk7CisgICAgS2lzUGFpbnRlcjo6Y29weUFyZWFPcHRpbWl6ZWQocmVjdC50b3BMZWZ0KCks IG9yaWdpbmFsLCBwcm9qZWN0aW9uLCByZWN0KTsKIAogICAgIGlmIChoYXNUZW1wb3JhcnlUYXJn ZXQoKSkgeworICAgICAgICBLaXNQYWludGVyIGdjKHByb2plY3Rpb24pOwogICAgICAgICBzZXR1 cFRlbXBvcmFyeVBhaW50ZXIoJmdjKTsKICAgICAgICAgZ2MuYml0Qmx0KHJlY3QudG9wTGVmdCgp LCB0ZW1wb3JhcnlUYXJnZXQoKSwgcmVjdCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEva3JpdGEvaW1h Z2Uva2lzX3BhaW50ZXIuY2MgYi9rcml0YS9pbWFnZS9raXNfcGFpbnRlci5jYwppbmRleCA0NDA2 YWE2Li5jMGY4NTA5IDEwMDY0NAotLS0gYS9rcml0YS9pbWFnZS9raXNfcGFpbnRlci5jYworKysg Yi9rcml0YS9pbWFnZS9raXNfcGFpbnRlci5jYwpAQCAtMTg2LDYgKzE4Niw3NyBAQCBLaXNQYWlu dGVyOjp+S2lzUGFpbnRlcigpCiAgICAgZGVsZXRlIGQ7CiB9CiAKK3RlbXBsYXRlIDxib29sIHVz ZU9sZERhdGE+Cit2b2lkIGNvcHlBcmVhT3B0aW1pemVkSW1wbChjb25zdCBRUG9pbnQgJmRzdFB0 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgS2lzUGFpbnREZXZpY2VTUCBzcmMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBLaXNQYWludERldmljZVNQIGRzdCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IFFSZWN0ICZzcmNSZWN0KQoreworICAgIGNvbnN0IFFSZWN0 IGRzdFJlY3QoZHN0UHQsIHNyY1JlY3Quc2l6ZSgpKTsKKworICAgIGNvbnN0IGJvb2wgc3JjRW1w dHkgPSAoc3JjLT5leHRlbnQoKSAmIHNyY1JlY3QpLmlzRW1wdHkoKTsKKyAgICBjb25zdCBib29s IGRzdEVtcHR5ID0gKGRzdC0+ZXh0ZW50KCkgJiBkc3RSZWN0KS5pc0VtcHR5KCk7CisKKyAgICBp ZiAoIXNyY0VtcHR5IHx8ICFkc3RFbXB0eSkgeworICAgICAgICBpZiAoc3JjRW1wdHkpIHsKKyAg ICAgICAgICAgIGRzdC0+Y2xlYXIoZHN0UmVjdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICBLaXNQYWludGVyIGdjKGRzdCk7CisgICAgICAgICAgICBnYy5zZXRDb21wb3NpdGVPcChk c3QtPmNvbG9yU3BhY2UoKS0+Y29tcG9zaXRlT3AoQ09NUE9TSVRFX0NPUFkpKTsKKworICAgICAg ICAgICAgaWYgKHVzZU9sZERhdGEpIHsKKyAgICAgICAgICAgICAgICBnYy5iaXRCbHRPbGREYXRh KGRzdFJlY3QudG9wTGVmdCgpLCBzcmMsIHNyY1JlY3QpOworICAgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgICAgICBnYy5iaXRCbHQoZHN0UmVjdC50b3BMZWZ0KCksIHNyYywgc3JjUmVj dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgS2lzUGFpbnRl cjo6Y29weUFyZWFPcHRpbWl6ZWQoY29uc3QgUVBvaW50ICZkc3RQdCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgS2lzUGFpbnREZXZpY2VTUCBzcmMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEtpc1BhaW50RGV2aWNlU1AgZHN0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRUmVjdCAmc3JjUmVjdCkKK3sKKyAgICBjb3B5 QXJlYU9wdGltaXplZEltcGw8ZmFsc2U+KGRzdFB0LCBzcmMsIGRzdCwgc3JjUmVjdCk7Cit9CisK K3ZvaWQgS2lzUGFpbnRlcjo6Y29weUFyZWFPcHRpbWl6ZWRPbGREYXRhKGNvbnN0IFFQb2ludCAm ZHN0UHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLaXNQYWlu dERldmljZVNQIHNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEtpc1BhaW50RGV2aWNlU1AgZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgUVJlY3QgJnNyY1JlY3QpCit7CisgICAgY29weUFyZWFPcHRpbWl6ZWRJ bXBsPHRydWU+KGRzdFB0LCBzcmMsIGRzdCwgc3JjUmVjdCk7Cit9CisKK3ZvaWQgS2lzUGFpbnRl cjo6Y29weUFyZWFPcHRpbWl6ZWQoY29uc3QgUVBvaW50ICZkc3RQdCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgS2lzUGFpbnREZXZpY2VTUCBzcmMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEtpc1BhaW50RGV2aWNlU1AgZHN0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRUmVjdCAmb3JpZ2luYWxTcmNSZWN0LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLaXNTZWxlY3Rpb25TUCBzZWxlY3Rpb24p Cit7CisgICAgY29uc3QgUVJlY3Qgc2VsZWN0aW9uUmVjdCA9IHNlbGVjdGlvbi0+c2VsZWN0ZWRS ZWN0KCk7CisgICAgY29uc3QgUVJlY3Qgc3JjUmVjdCA9IG9yaWdpbmFsU3JjUmVjdCAmIHNlbGVj dGlvblJlY3Q7CisgICAgY29uc3QgUVBvaW50IGRzdE9mZnNldCA9IHNyY1JlY3QudG9wTGVmdCgp IC0gb3JpZ2luYWxTcmNSZWN0LnRvcExlZnQoKTsKKyAgICBjb25zdCBRUmVjdCBkc3RSZWN0ID0g UVJlY3QoZHN0UHQgKyBkc3RPZmZzZXQsIHNyY1JlY3Quc2l6ZSgpKTsKKworICAgIGNvbnN0IGJv b2wgc3JjRW1wdHkgPSAoc3JjLT5leHRlbnQoKSAmIHNyY1JlY3QpLmlzRW1wdHkoKTsKKyAgICBj b25zdCBib29sIGRzdEVtcHR5ID0gKGRzdC0+ZXh0ZW50KCkgJiBkc3RSZWN0KS5pc0VtcHR5KCk7 CisKKyAgICBpZiAoIXNyY0VtcHR5IHx8ICFkc3RFbXB0eSkgeworICAgICAgICAvL2lmIChzcmNF bXB0eSkgeworICAgICAgICAvLyBkb2Vzbid0IHN1cHBvcnQgZHN0UmVjdAorICAgICAgICAvLyBk c3QtPmNsZWFyU2VsZWN0aW9uKHNlbGVjdGlvbik7CisgICAgICAgIC8vIH0gZWxzZSAqLworICAg ICAgICB7CisgICAgICAgICAgICBLaXNQYWludGVyIGdjKGRzdCk7CisgICAgICAgICAgICBnYy5z ZXRTZWxlY3Rpb24oc2VsZWN0aW9uKTsKKyAgICAgICAgICAgIGdjLnNldENvbXBvc2l0ZU9wKGRz dC0+Y29sb3JTcGFjZSgpLT5jb21wb3NpdGVPcChDT01QT1NJVEVfQ09QWSkpOworICAgICAgICAg ICAgZ2MuYml0Qmx0KGRzdFJlY3QudG9wTGVmdCgpLCBzcmMsIHNyY1JlY3QpOworICAgICAgICB9 CisgICAgfQorfQorCiB2b2lkIEtpc1BhaW50ZXI6OmJlZ2luKEtpc1BhaW50RGV2aWNlU1AgZGV2 aWNlKQogewogICAgIGJlZ2luKGRldmljZSwgZC0+c2VsZWN0aW9uKTsKZGlmZiAtLWdpdCBhL2ty aXRhL2ltYWdlL2tpc19wYWludGVyLmggYi9rcml0YS9pbWFnZS9raXNfcGFpbnRlci5oCmluZGV4 IGI0NDE5MDkuLjYwMTNhNzggMTAwNjQ0Ci0tLSBhL2tyaXRhL2ltYWdlL2tpc19wYWludGVyLmgK KysrIGIva3JpdGEvaW1hZ2Uva2lzX3BhaW50ZXIuaApAQCAtODcsNiArODcsMjIgQEAgcHVibGlj OgogICAgIHZpcnR1YWwgfktpc1BhaW50ZXIoKTsKIAogcHVibGljOgorICAgIHN0YXRpYyB2b2lk IGNvcHlBcmVhT3B0aW1pemVkKGNvbnN0IFFQb2ludCAmZHN0UHQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgS2lzUGFpbnREZXZpY2VTUCBzcmMsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgS2lzUGFpbnREZXZpY2VTUCBkc3QsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgUVJlY3QgJm9yaWdpbmFsU3JjUmVjdCk7CisKKyAgICBz dGF0aWMgdm9pZCBjb3B5QXJlYU9wdGltaXplZE9sZERhdGEoY29uc3QgUVBvaW50ICZkc3RQdCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2lzUGFpbnREZXZpY2VT UCBzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtpc1BhaW50 RGV2aWNlU1AgZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBRUmVjdCAmb3JpZ2luYWxTcmNSZWN0KTsKKworICAgIHN0YXRpYyB2b2lkIGNvcHlBcmVh T3B0aW1pemVkKGNvbnN0IFFQb2ludCAmZHN0UHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgS2lzUGFpbnREZXZpY2VTUCBzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgS2lzUGFpbnREZXZpY2VTUCBkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgUVJlY3QgJm9yaWdpbmFsU3JjUmVjdCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBLaXNTZWxlY3Rpb25TUCBzZWxlY3Rpb24pOworCiAgICAgLyoqCiAg ICAgICogU3RhcnQgcGFpbnRpbmcgb24gdGhlIHNwZWNpZmllZCBkZXZpY2UuIE5vdCB1bmRvYWJs ZS4KICAgICAgKi8KZGlmZiAtLWdpdCBhL2tyaXRhL2ltYWdlL2tpc19wZXJzcGVjdGl2ZXRyYW5z Zm9ybV93b3JrZXIuY3BwIGIva3JpdGEvaW1hZ2Uva2lzX3BlcnNwZWN0aXZldHJhbnNmb3JtX3dv cmtlci5jcHAKaW5kZXggNmRkZTJlMS4uZDQ2ZDk1OSAxMDA2NDQKLS0tIGEva3JpdGEvaW1hZ2Uv a2lzX3BlcnNwZWN0aXZldHJhbnNmb3JtX3dvcmtlci5jcHAKKysrIGIva3JpdGEvaW1hZ2Uva2lz X3BlcnNwZWN0aXZldHJhbnNmb3JtX3dvcmtlci5jcHAKQEAgLTE1MCwxOCArMTUwLDE3IEBAIHZv aWQgS2lzUGVyc3BlY3RpdmVUcmFuc2Zvcm1Xb3JrZXI6OnJ1blBhcnRpYWxEc3QoS2lzUGFpbnRE ZXZpY2VTUCBzcmNEZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IFFSZWN0ICZkc3RSZWN0KQogewogICAgIGlmIChtX2lzSWRlbnRpdHkp IHsKLSAgICAgICAgS2lzUGFpbnRlciBnYyhkc3REZXYpOwotICAgICAgICBnYy5zZXRDb21wb3Np dGVPcChDT01QT1NJVEVfQ09QWSk7Ci0gICAgICAgIGdjLmJpdEJsdE9sZERhdGEoZHN0UmVjdC50 b3BMZWZ0KCksIHNyY0RldiwgZHN0UmVjdCk7CisgICAgICAgIEtpc1BhaW50ZXI6OmNvcHlBcmVh T3B0aW1pemVkT2xkRGF0YShkc3RSZWN0LnRvcExlZnQoKSwgc3JjRGV2LCBkc3REZXYsIGRzdFJl Y3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUVJlY3RGIHNyY0NsaXBSZWN0ID0g c3JjRGV2LT5leGFjdEJvdW5kcygpOworICAgIGlmIChzcmNDbGlwUmVjdC5pc0VtcHR5KCkpIHJl dHVybjsKIAogICAgIEtpc1Byb2dyZXNzVXBkYXRlSGVscGVyIHByb2dyZXNzSGVscGVyKG1fcHJv Z3Jlc3NVcGRhdGVyLCAxMDAsIGRzdFJlY3QuaGVpZ2h0KCkpOwogCiAgICAgS2lzUmFuZG9tU3Vi QWNjZXNzb3JTUCBzcmNBY2MgPSBzcmNEZXYtPmNyZWF0ZVJhbmRvbVN1YkFjY2Vzc29yKCk7Ci0g ICAgS2lzUmFuZG9tQWNjZXNzb3JTUCBhY2Nlc3NvciA9IGRzdERldi0+Y3JlYXRlUmFuZG9tQWNj ZXNzb3JORygwLCAwKTsKKyAgICBLaXNSYW5kb21BY2Nlc3NvclNQIGFjY2Vzc29yID0gZHN0RGV2 LT5jcmVhdGVSYW5kb21BY2Nlc3Nvck5HKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CiAKICAg ICBmb3IgKGludCB5ID0gZHN0UmVjdC55KCk7IHkgPCBkc3RSZWN0LnkoKSArIGRzdFJlY3QuaGVp Z2h0KCk7ICsreSkgewogICAgICAgICBmb3IgKGludCB4ID0gZHN0UmVjdC54KCk7IHggPCBkc3RS ZWN0LngoKSArIGRzdFJlY3Qud2lkdGgoKTsgKyt4KSB7CmRpZmYgLS1naXQgYS9rcml0YS9pbWFn ZS9raXNfcGl4ZWxfc2VsZWN0aW9uLmNwcCBiL2tyaXRhL2ltYWdlL2tpc19waXhlbF9zZWxlY3Rp b24uY3BwCmluZGV4IDI1ZjJiZTUuLjBmYmQzYWUgMTAwNjQ0Ci0tLSBhL2tyaXRhL2ltYWdlL2tp c19waXhlbF9zZWxlY3Rpb24uY3BwCisrKyBiL2tyaXRhL2ltYWdlL2tpc19waXhlbF9zZWxlY3Rp b24uY3BwCkBAIC01MjUsOSArNTI1LDYgQEAgdm9pZCBLaXNQaXhlbFNlbGVjdGlvbjo6cmVuZGVy VG9Qcm9qZWN0aW9uKEtpc1BhaW50RGV2aWNlU1AgcHJvamVjdGlvbiwgY29uc3QgUVIKICAgICBR UmVjdCB1cGRhdGVSZWN0ID0gcmMgJiBzZWxlY3RlZEV4YWN0UmVjdCgpOwogCiAgICAgaWYgKHVw ZGF0ZVJlY3QuaXNWYWxpZCgpKSB7Ci0gICAgICAgIEtpc1BhaW50ZXIgcGFpbnRlcihwcm9qZWN0 aW9uKTsKLSAgICAgICAgcGFpbnRlci5zZXRDb21wb3NpdGVPcChDT01QT1NJVEVfQ09QWSk7Ci0g ICAgICAgIHBhaW50ZXIuYml0Qmx0KHVwZGF0ZVJlY3QudG9wTGVmdCgpLCBLaXNQYWludERldmlj ZVNQKHRoaXMpLCB1cGRhdGVSZWN0KTsKLSAgICAgICAgcGFpbnRlci5lbmQoKTsKKyAgICAgICAg S2lzUGFpbnRlcjo6Y29weUFyZWFPcHRpbWl6ZWQodXBkYXRlUmVjdC50b3BMZWZ0KCksIEtpc1Bh aW50RGV2aWNlU1AodGhpcyksIHByb2plY3Rpb24sIHVwZGF0ZVJlY3QpOwogICAgIH0KIH0KZGlm ZiAtLWdpdCBhL2tyaXRhL2ltYWdlL2tpc19yZWZyZXNoX3N1YnRyZWVfd2Fsa2VyLmggYi9rcml0 YS9pbWFnZS9raXNfcmVmcmVzaF9zdWJ0cmVlX3dhbGtlci5oCmluZGV4IDc4MjZiNTYuLjlmMGU4 NDIgMTAwNjQ0Ci0tLSBhL2tyaXRhL2ltYWdlL2tpc19yZWZyZXNoX3N1YnRyZWVfd2Fsa2VyLmgK KysrIGIva3JpdGEvaW1hZ2Uva2lzX3JlZnJlc2hfc3VidHJlZV93YWxrZXIuaApAQCAtNzMsNyAr NzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBuZXh0Tm9kZSA9IGN1cnJlbnROb2RlLT5u ZXh0U2libGluZygpOwogCiAgICAgICAgICAgICBpZihpc0xheWVyKGN1cnJlbnROb2RlKSkgewot ICAgICAgICAgICAgICAgIHRlbXBSZWN0ID0gY2FsY3VsYXRlQ2hhbmdlUmVjdChjdXJyZW50Tm9k ZSwgdGVtcFJlY3QpOworICAgICAgICAgICAgICAgIHRlbXBSZWN0IHw9IGNhbGN1bGF0ZUNoYW5n ZVJlY3QoY3VycmVudE5vZGUsIHJlcXVlc3RlZFJlY3QpOwogCiAgICAgICAgICAgICAgICAgaWYo IWNoYW5nZVJlY3RWYXJpZXMpCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZVJlY3RWYXJpZXMg PSB0ZW1wUmVjdCAhPSByZXF1ZXN0ZWRSZWN0OwpAQCAtOTYsNyArOTYsNyBAQCBwcm90ZWN0ZWQ6 CiAgICAgfQogCiAgICAgdm9pZCBzdGFydFRyaXAoS2lzTm9kZVNQIHN0YXJ0V2l0aCkgewotICAg ICAgICBjYWxjdWxhdGVDaGFuZ2VSZWN0KHN0YXJ0V2l0aCwgcmVxdWVzdGVkUmVjdCgpKTsKKyAg ICAgICAgc2V0RXhwbGljaXRDaGFuZ2VSZWN0KHN0YXJ0V2l0aCwgcmVxdWVzdGVkUmVjdCgpLCBm YWxzZSk7CiAKICAgICAgICAgaWYoc3RhcnRXaXRoID09IHN0YXJ0Tm9kZSgpKSB7CiAgICAgICAg ICAgICBOb2RlUG9zaXRpb24gcG9zID0gTl9FWFRSQSB8IGNhbGN1bGF0ZU5vZGVQb3NpdGlvbihz dGFydFdpdGgpOwpkaWZmIC0tZ2l0IGEva3JpdGEvaW1hZ2Uva2lzX3NlbGVjdGlvbl9iYXNlZF9s YXllci5jcHAgYi9rcml0YS9pbWFnZS9raXNfc2VsZWN0aW9uX2Jhc2VkX2xheWVyLmNwcAppbmRl eCAwN2IyY2IyLi5kOGMxNzI5IDEwMDY0NAotLS0gYS9rcml0YS9pbWFnZS9raXNfc2VsZWN0aW9u X2Jhc2VkX2xheWVyLmNwcAorKysgYi9rcml0YS9pbWFnZS9raXNfc2VsZWN0aW9uX2Jhc2VkX2xh eWVyLmNwcApAQCAtMTQwLDkgKzE0MCw5IEBAIHZvaWQgS2lzU2VsZWN0aW9uQmFzZWRMYXllcjo6 Y29weU9yaWdpbmFsVG9Qcm9qZWN0aW9uKGNvbnN0IEtpc1BhaW50RGV2aWNlU1Agb3JpCiAgICAg ICAgIHByb2plY3Rpb24tPmNsZWFyKHJlY3QpOwogICAgICAgICBnYy5zZXRDb21wb3NpdGVPcChj b2xvclNwYWNlKCktPmNvbXBvc2l0ZU9wKENPTVBPU0lURV9PVkVSKSk7CiAgICAgICAgIGdjLnNl dFNlbGVjdGlvbih0ZW1wU2VsZWN0aW9uKTsKLSAgICB9IGVsc2UKKyAgICB9IGVsc2UgewogICAg ICAgICBnYy5zZXRDb21wb3NpdGVPcChjb2xvclNwYWNlKCktPmNvbXBvc2l0ZU9wKENPTVBPU0lU RV9DT1BZKSk7Ci0KKyAgICB9CiAKICAgICBnYy5iaXRCbHQocmVjdC50b3BMZWZ0KCksIG9yaWdp bmFsLCByZWN0KTsKIApkaWZmIC0tZ2l0IGEva3JpdGEvaW1hZ2Uva2lzX3RyYW5zZm9ybV9tYXNr LmNwcCBiL2tyaXRhL2ltYWdlL2tpc190cmFuc2Zvcm1fbWFzay5jcHAKaW5kZXggMjlhM2ExNC4u OGQ3MTY4NyAxMDA2NDQKLS0tIGEva3JpdGEvaW1hZ2Uva2lzX3RyYW5zZm9ybV9tYXNrLmNwcAor KysgYi9rcml0YS9pbWFnZS9raXNfdHJhbnNmb3JtX21hc2suY3BwCkBAIC0yNDksMTUgKzI0OSwx MyBAQCBRUmVjdCBLaXNUcmFuc2Zvcm1NYXNrOjpkZWNvcmF0ZVJlY3QoS2lzUGFpbnREZXZpY2VT UCAmc3JjLAogICAgICAgICBtX2QtPndvcmtlci5ydW5QYXJ0aWFsRHN0KHNyYywgZHN0LCByYyk7 CiAKICNpZmRlZiBERUJVR19SRU5ERVJJTkcKLSAgICAgICAgcURlYnVnKCkgPDwgIlBhcnRpYWwi IDw8IG5hbWUoKSA8PCBwcFZhcihzcmMtPmV4YWN0Qm91bmRzKCkpIDw8IHBwVmFyKGRzdC0+ZXhh Y3RCb3VuZHMoKSkgPDwgcHBWYXIocmMpOworICAgICAgICBxRGVidWcoKSA8PCAiUGFydGlhbCIg PDwgbmFtZSgpIDw8IHBwVmFyKHNyYy0+ZXhhY3RCb3VuZHMoKSkgPDwgcHBWYXIoc3JjLT5leHRl bnQoKSkgPDwgcHBWYXIoZHN0LT5leGFjdEJvdW5kcygpKSA8PCBwcFZhcihkc3QtPmV4dGVudCgp KSA8PCBwcFZhcihyYyk7CiAgICAgICAgIEtJU19EVU1QX0RFVklDRV8yKHNyYywgRFVNUF9SRUNU LCAicGFydGlhbF9zcmMiLCAiZGQiKTsKICAgICAgICAgS0lTX0RVTVBfREVWSUNFXzIoZHN0LCBE VU1QX1JFQ1QsICJwYXJ0aWFsX2RzdCIsICJkZCIpOwogI2VuZGlmIC8qIERFQlVHX1JFTkRFUklO RyAqLwogCiAgICAgfSBlbHNlIHsKLSAgICAgICAgS2lzUGFpbnRlciBnYyhkc3QpOwotICAgICAg ICBnYy5zZXRDb21wb3NpdGVPcChDT01QT1NJVEVfQ09QWSk7Ci0gICAgICAgIGdjLmJpdEJsdChy Yy50b3BMZWZ0KCksIG1fZC0+c3RhdGljQ2FjaGVEZXZpY2UsIHJjKTsKKyAgICAgICAgS2lzUGFp bnRlcjo6Y29weUFyZWFPcHRpbWl6ZWQocmMudG9wTGVmdCgpLCBtX2QtPnN0YXRpY0NhY2hlRGV2 aWNlLCBkc3QsIHJjKTsKIAogI2lmZGVmIERFQlVHX1JFTkRFUklORwogICAgICAgICBxRGVidWco KSA8PCAiRmV0Y2giIDw8IG5hbWUoKSA8PCBwcFZhcihzcmMtPmV4YWN0Qm91bmRzKCkpIDw8IHBw VmFyKGRzdC0+ZXhhY3RCb3VuZHMoKSkgPDwgcHBWYXIocmMpOwpkaWZmIC0tZ2l0IGEva3JpdGEv aW1hZ2Uva2lzX3RyYW5zZm9ybV9tYXNrX3BhcmFtc19pbnRlcmZhY2UuY3BwIGIva3JpdGEvaW1h Z2Uva2lzX3RyYW5zZm9ybV9tYXNrX3BhcmFtc19pbnRlcmZhY2UuY3BwCmluZGV4IDZmZmJmYWQu LjQ0NmNiNWUgMTAwNjQ0Ci0tLSBhL2tyaXRhL2ltYWdlL2tpc190cmFuc2Zvcm1fbWFza19wYXJh bXNfaW50ZXJmYWNlLmNwcAorKysgYi9rcml0YS9pbWFnZS9raXNfdHJhbnNmb3JtX21hc2tfcGFy YW1zX2ludGVyZmFjZS5jcHAKQEAgLTk1LDkgKzk1LDcgQEAgdm9pZCBLaXNEdW1iVHJhbnNmb3Jt TWFza1BhcmFtczo6dHJhbnNmb3JtRGV2aWNlKEtpc05vZGVTUCBub2RlLCBLaXNQYWludERldmlj ZVMKICAgICAgICAgcVdhcm5pbmcoKSA8PCBwcFZhcih0KTsKICAgICB9CiAKLSAgICBLaXNQYWlu dGVyIGdjKGRzdCk7Ci0gICAgZ2Muc2V0Q29tcG9zaXRlT3AoQ09NUE9TSVRFX0NPUFkpOwotICAg IGdjLmJpdEJsdChkc3RUb3BMZWZ0LCBzcmMsIHJjKTsKKyAgICBLaXNQYWludGVyOjpjb3B5QXJl YU9wdGltaXplZChkc3RUb3BMZWZ0LCBzcmMsIGRzdCwgcmMpOwogfQogCiBRU3RyaW5nIEtpc0R1 bWJUcmFuc2Zvcm1NYXNrUGFyYW1zOjppZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9rcml0YS9pbWFn ZS9raXNfdHJhbnNmb3JtX3dvcmtlci5jYyBiL2tyaXRhL2ltYWdlL2tpc190cmFuc2Zvcm1fd29y a2VyLmNjCmluZGV4IGVjZjVhOTEuLmRkNTdlYTEgMTAwNjQ0Ci0tLSBhL2tyaXRhL2ltYWdlL2tp c190cmFuc2Zvcm1fd29ya2VyLmNjCisrKyBiL2tyaXRhL2ltYWdlL2tpc190cmFuc2Zvcm1fd29y a2VyLmNjCkBAIC02MzUsOCArNjM1LDYgQEAgdm9pZCBLaXNUcmFuc2Zvcm1Xb3JrZXI6Om9mZnNl dChLaXNQYWludERldmljZVNQIGRldmljZSwgY29uc3QgUVBvaW50JiBvZmZzZXRQb3MKICAgICB9 CiAKICAgICBLaXNQYWludERldmljZVNQIG9mZnNldERldmljZSA9IG5ldyBLaXNQYWludERldmlj ZShkZXZpY2UtPmNvbG9yU3BhY2UoKSk7Ci0gICAgS2lzUGFpbnRlciBnYyhvZmZzZXREZXZpY2Up OwotICAgIGdjLnNldENvbXBvc2l0ZU9wKENPTVBPU0lURV9DT1BZKTsKIAogICAgIGludCBzcmNY ID0gMDsKICAgICBpbnQgc3JjWSA9IDA7CkBAIC02NDcsMTAgKzY0NSw5IEBAIHZvaWQgS2lzVHJh bnNmb3JtV29ya2VyOjpvZmZzZXQoS2lzUGFpbnREZXZpY2VTUCBkZXZpY2UsIGNvbnN0IFFQb2lu dCYgb2Zmc2V0UG9zCiAgICAgd2lkdGggPSBxQm91bmQ8aW50PigwLCB3aWR0aCAtIG9mZnNldFgs IHdpZHRoKTsKICAgICBoZWlnaHQgPSBxQm91bmQ8aW50PigwLCBoZWlnaHQgLSBvZmZzZXRZLCBo ZWlnaHQpOwogCi0gICAgaWYgKCh3aWR0aCAhPSAwKSAmJiAoaGVpZ2h0ICE9IDApKQotICAgIHsK KyAgICBpZiAoKHdpZHRoICE9IDApICYmIChoZWlnaHQgIT0gMCkpIHsKICAgICAgICAgLy8gY29u dmVydCBiYWNrIHRvIHBhaW50IGRldmljZSBzcGFjZQotICAgICAgICBnYy5iaXRCbHQoZGVzdFgg KyBzeCwgZGVzdFkgKyBzeSwgZGV2aWNlLCBzcmNYICsgc3gsIHNyY1kgKyBzeSwgd2lkdGgsIGhl aWdodCk7CisgICAgICAgIEtpc1BhaW50ZXI6OmNvcHlBcmVhT3B0aW1pemVkKFFQb2ludChkZXN0 WCArIHN4LCBkZXN0WSArIHN5KSwgZGV2aWNlLCBvZmZzZXREZXZpY2UsIFFSZWN0KHNyY1ggKyBz eCwgc3JjWSArIHN5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgfQogCiAgICAgc3JjWCA9IHdyYXBS ZWN0LndpZHRoKCkgLSBvZmZzZXRYOwpAQCAtNjU5LDI4ICs2NTYsMjEgQEAgdm9pZCBLaXNUcmFu c2Zvcm1Xb3JrZXI6Om9mZnNldChLaXNQYWludERldmljZVNQIGRldmljZSwgY29uc3QgUVBvaW50 JiBvZmZzZXRQb3MKICAgICBkZXN0WCA9IChzcmNYICsgb2Zmc2V0WCkgJSB3cmFwUmVjdC53aWR0 aCgpOwogICAgIGRlc3RZID0gKHNyY1kgKyBvZmZzZXRZKSAlIHdyYXBSZWN0LmhlaWdodCgpOwog Ci0gICAgaWYgKG9mZnNldFggIT0gMCAmJiBvZmZzZXRZICE9IDApCi0gICAgewotICAgICAgICAg IGdjLmJpdEJsdChkZXN0WCArIHN4LCBkZXN0WSArIHN5LCBkZXZpY2UsIHNyY1ggKyBzeCwgc3Jj WSArIHN5LCBvZmZzZXRYLCBvZmZzZXRZKTsKKyAgICBpZiAob2Zmc2V0WCAhPSAwICYmIG9mZnNl dFkgIT0gMCkgeworICAgICAgICAgIEtpc1BhaW50ZXI6OmNvcHlBcmVhT3B0aW1pemVkKFFQb2lu dChkZXN0WCArIHN4LCBkZXN0WSArIHN5KSwgZGV2aWNlLCBvZmZzZXREZXZpY2UsIFFSZWN0KHNy Y1ggKyBzeCwgc3JjWSArIHN5LCBvZmZzZXRYLCBvZmZzZXRZKSk7CiAgICAgfQogCi0gICAgaWYg KG9mZnNldFggIT0gMCkKLSAgICB7Ci0gICAgICAgIGdjLmJpdEJsdChkZXN0WCArIHN4LCAoZGVz dFkgKyBvZmZzZXRZKSArIHN5LCBkZXZpY2UsIHNyY1ggKyBzeCwgMCArIHN5LCBvZmZzZXRYLCB3 cmFwUmVjdC5oZWlnaHQoKSAtIG9mZnNldFkpOworICAgIGlmIChvZmZzZXRYICE9IDApIHsKKyAg ICAgICAgS2lzUGFpbnRlcjo6Y29weUFyZWFPcHRpbWl6ZWQoUVBvaW50KGRlc3RYICsgc3gsIChk ZXN0WSArIG9mZnNldFkpICsgc3kpLCBkZXZpY2UsIG9mZnNldERldmljZSwgUVJlY3Qoc3JjWCAr IHN4LCAwICsgc3ksIG9mZnNldFgsIHdyYXBSZWN0LmhlaWdodCgpIC0gb2Zmc2V0WSkpOwogICAg IH0KIAotICAgIGlmIChvZmZzZXRZICE9IDApCi0gICAgewotICAgICAgICBnYy5iaXRCbHQoKGRl c3RYICsgb2Zmc2V0WCkgKyBzeCwgZGVzdFkgKyBzeSwgZGV2aWNlLCAwICsgc3gsIHNyY1kgKyBz eSwgd3JhcFJlY3Qud2lkdGgoKSAtIG9mZnNldFgsIG9mZnNldFkpOworICAgIGlmIChvZmZzZXRZ ICE9IDApIHsKKyAgICAgICAgS2lzUGFpbnRlcjo6Y29weUFyZWFPcHRpbWl6ZWQoUVBvaW50KChk ZXN0WCArIG9mZnNldFgpICsgc3gsIGRlc3RZICsgc3kpLCBkZXZpY2UsIG9mZnNldERldmljZSwg UVJlY3QoMCArIHN4LCBzcmNZICsgc3ksIHdyYXBSZWN0LndpZHRoKCkgLSBvZmZzZXRYLCBvZmZz ZXRZKSk7CiAgICAgfQogCi0gICAgZ2MuZW5kKCk7Ci0KICAgICAvLyBiaXRibHQgdGhlIHJlc3Vs dCBiYWNrCi0gICAgS2lzUGFpbnRlciBnYzIoZGV2aWNlKTsKLSAgICBnYzIuc2V0Q29tcG9zaXRl T3AoQ09NUE9TSVRFX0NPUFkpOwotICAgIGdjMi5iaXRCbHQoc3gsc3ksb2Zmc2V0RGV2aWNlLCBz eCwgc3ksIHdyYXBSZWN0LndpZHRoKCksIHdyYXBSZWN0LmhlaWdodCgpKTsKLSAgICBnYzIuZW5k KCk7CisgICAgUVJlY3QgcmVzdWx0UmVjdChzeCwgc3ksIHdyYXBSZWN0LndpZHRoKCksIHdyYXBS ZWN0LmhlaWdodCgpKTsKKyAgICBLaXNQYWludGVyOjpjb3B5QXJlYU9wdGltaXplZChyZXN1bHRS ZWN0LnRvcExlZnQoKSwgb2Zmc2V0RGV2aWNlLCBkZXZpY2UsIHJlc3VsdFJlY3QpOwogfQogCiAK ZGlmZiAtLWdpdCBhL2tyaXRhL2ltYWdlL2tpc190cmFuc3BhcmVuY3lfbWFzay5jYyBiL2tyaXRh L2ltYWdlL2tpc190cmFuc3BhcmVuY3lfbWFzay5jYwppbmRleCA0NGI5OTE3Li4yMmUxNTVjIDEw MDY0NAotLS0gYS9rcml0YS9pbWFnZS9raXNfdHJhbnNwYXJlbmN5X21hc2suY2MKKysrIGIva3Jp dGEvaW1hZ2Uva2lzX3RyYW5zcGFyZW5jeV9tYXNrLmNjCkBAIC01Miw5ICs1Miw3IEBAIFFSZWN0 IEtpc1RyYW5zcGFyZW5jeU1hc2s6OmRlY29yYXRlUmVjdChLaXNQYWludERldmljZVNQICZzcmMs CiAgICAgUV9VTlVTRUQobWFza1Bvcyk7CiAKICAgICBpZiAoc3JjICE9IGRzdCkgewotICAgICAg ICBLaXNQYWludGVyIGdjKGRzdCk7Ci0gICAgICAgIGdjLnNldENvbXBvc2l0ZU9wKHNyYy0+Y29s b3JTcGFjZSgpLT5jb21wb3NpdGVPcChDT01QT1NJVEVfQ09QWSkpOwotICAgICAgICBnYy5iaXRC bHQocmMudG9wTGVmdCgpLCBzcmMsIHJjKTsKKyAgICAgICAgS2lzUGFpbnRlcjo6Y29weUFyZWFP cHRpbWl6ZWQocmMudG9wTGVmdCgpLCBzcmMsIGRzdCwgcmMpOwogICAgICAgICBzcmMtPmZpbGwo cmMsIEtvQ29sb3IoUXQ6OnRyYW5zcGFyZW50LCBzcmMtPmNvbG9yU3BhY2UoKSkpOwogICAgIH0K IApkaWZmIC0tZ2l0IGEva3JpdGEvaW1hZ2UvdGVzdHMva2lzX3RyYW5zZm9ybV9tYXNrX3Rlc3Qu Y3BwIGIva3JpdGEvaW1hZ2UvdGVzdHMva2lzX3RyYW5zZm9ybV9tYXNrX3Rlc3QuY3BwCmluZGV4 IGFmOGQ1NmYuLjUzZjc1N2UgMTAwNjQ0Ci0tLSBhL2tyaXRhL2ltYWdlL3Rlc3RzL2tpc190cmFu c2Zvcm1fbWFza190ZXN0LmNwcAorKysgYi9rcml0YS9pbWFnZS90ZXN0cy9raXNfdHJhbnNmb3Jt X21hc2tfdGVzdC5jcHAKQEAgLTgxMCw0ICs4MTAsMTI4IEBAIHZvaWQgS2lzVHJhbnNmb3JtTWFz a1Rlc3Q6OnRlc3RNYXNrV2l0aE9mZnNldCgpCiAgICAgUVZFUklGWShjaGsudGVzdFBhc3NlZCgp KTsKIH0KIAordm9pZCBLaXNUcmFuc2Zvcm1NYXNrVGVzdDo6dGVzdFdlaXJkRnVsbFVwZGF0ZXMo KQoreworICAgIC8vVGVzdFV0aWw6OkV4dGVybmFsSW1hZ2VDaGVja2VyIGNoaygibWFza193aXRo X29mZnNldCIsICJ0cmFuc2Zvcm1fbWFza191cGRhdGVzIik7CisKKyAgICBRUmVjdCBpbWFnZVJl Y3QoMCwwLDUxMiw1MTIpOworICAgIFFSZWN0IGZpbGxSZWN0KDEwLCAxMCwgMjM2LCAyMzYpOwor ICAgIFRlc3RVdGlsOjpNYXNrUGFyZW50IHAoaW1hZ2VSZWN0KTsKKworICAgIHAubGF5ZXItPnBh aW50RGV2aWNlKCktPmZpbGwoZmlsbFJlY3QsIEtvQ29sb3IoUXQ6OnJlZCwgcC5sYXllci0+Y29s b3JTcGFjZSgpKSk7CisKKyAgICBLaXNQYWludExheWVyU1AgcGxheWVyMSA9IG5ldyBLaXNQYWlu dExheWVyKHAuaW1hZ2UsICJwbDEiLCBPUEFDSVRZX09QQVFVRV9VOCwgcC5pbWFnZS0+Y29sb3JT cGFjZSgpKTsKKyAgICBwbGF5ZXIxLT5wYWludERldmljZSgpLT5maWxsKGZpbGxSZWN0LCBLb0Nv bG9yKFF0OjpyZWQsIHAubGF5ZXItPmNvbG9yU3BhY2UoKSkpOworICAgIHAuaW1hZ2UtPmFkZE5v ZGUocGxheWVyMSwgcC5pbWFnZS0+cm9vdCgpKTsKKworICAgIEtpc1RyYW5zZm9ybU1hc2tTUCBt YXNrMSA9IG5ldyBLaXNUcmFuc2Zvcm1NYXNrKCk7CisgICAgbWFzazEtPnNldE5hbWUoIm1hc2sx Iik7CisgICAgUVRyYW5zZm9ybSB0cmFuc2Zvcm0xID0KKyAgICAgICAgUVRyYW5zZm9ybTo6ZnJv bVRyYW5zbGF0ZSgyNTYsIDApOworICAgIG1hc2sxLT5zZXRUcmFuc2Zvcm1QYXJhbXMoS2lzVHJh bnNmb3JtTWFza1BhcmFtc0ludGVyZmFjZVNQKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5ldyBLaXNEdW1iVHJhbnNmb3JtTWFza1BhcmFtcyh0cmFuc2Zvcm0xKSkpOworCisg ICAgcC5pbWFnZS0+YWRkTm9kZShtYXNrMSwgcGxheWVyMSk7CisKKworICAgIEtpc1BhaW50TGF5 ZXJTUCBwbGF5ZXIyID0gbmV3IEtpc1BhaW50TGF5ZXIocC5pbWFnZSwgInBsMiIsIE9QQUNJVFlf T1BBUVVFX1U4LCBwLmltYWdlLT5jb2xvclNwYWNlKCkpOworICAgIHBsYXllcjItPnBhaW50RGV2 aWNlKCktPmZpbGwoZmlsbFJlY3QsIEtvQ29sb3IoUXQ6OnJlZCwgcC5sYXllci0+Y29sb3JTcGFj ZSgpKSk7CisgICAgcC5pbWFnZS0+YWRkTm9kZShwbGF5ZXIyLCBwLmltYWdlLT5yb290KCkpOwor CisgICAgS2lzVHJhbnNmb3JtTWFza1NQIG1hc2syID0gbmV3IEtpc1RyYW5zZm9ybU1hc2soKTsK KyAgICBtYXNrMi0+c2V0TmFtZSgibWFzazIiKTsKKyAgICBRVHJhbnNmb3JtIHRyYW5zZm9ybTIg PQorICAgICAgICBRVHJhbnNmb3JtOjpmcm9tVHJhbnNsYXRlKDAsIDI1Nik7CisgICAgbWFzazIt PnNldFRyYW5zZm9ybVBhcmFtcyhLaXNUcmFuc2Zvcm1NYXNrUGFyYW1zSW50ZXJmYWNlU1AoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEtpc0R1bWJUcmFuc2Zvcm1NYXNr UGFyYW1zKHRyYW5zZm9ybTIpKSk7CisKKyAgICBwLmltYWdlLT5hZGROb2RlKG1hc2syLCBwbGF5 ZXIyKTsKKworCisgICAgS2lzUGFpbnRMYXllclNQIHBsYXllcjMgPSBuZXcgS2lzUGFpbnRMYXll cihwLmltYWdlLCAicGwzIiwgT1BBQ0lUWV9PUEFRVUVfVTgsIHAuaW1hZ2UtPmNvbG9yU3BhY2Uo KSk7CisgICAgcGxheWVyMy0+cGFpbnREZXZpY2UoKS0+ZmlsbChmaWxsUmVjdCwgS29Db2xvcihR dDo6cmVkLCBwLmxheWVyLT5jb2xvclNwYWNlKCkpKTsKKyAgICBwLmltYWdlLT5hZGROb2RlKHBs YXllcjMsIHAuaW1hZ2UtPnJvb3QoKSk7CisKKyAgICBLaXNUcmFuc2Zvcm1NYXNrU1AgbWFzazMg PSBuZXcgS2lzVHJhbnNmb3JtTWFzaygpOworICAgIG1hc2szLT5zZXROYW1lKCJtYXNrMyIpOwor ICAgIFFUcmFuc2Zvcm0gdHJhbnNmb3JtMyA9CisgICAgICAgIFFUcmFuc2Zvcm06OmZyb21UcmFu c2xhdGUoMjU2LCAyNTYpOworICAgIG1hc2szLT5zZXRUcmFuc2Zvcm1QYXJhbXMoS2lzVHJhbnNm b3JtTWFza1BhcmFtc0ludGVyZmFjZVNQKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5ldyBLaXNEdW1iVHJhbnNmb3JtTWFza1BhcmFtcyh0cmFuc2Zvcm0zKSkpOworCisgICAg cC5pbWFnZS0+YWRkTm9kZShtYXNrMywgcGxheWVyMyk7CisKKworCisgICAgLy9wLmltYWdlLT5p bml0aWFsUmVmcmVzaEdyYXBoKCk7CisKKyAgICBwLmltYWdlLT5yZWZyZXNoR3JhcGhBc3luYygw LCBRUmVjdCgwLDAsMjU2LDI1NiksIFFSZWN0KCkpOworICAgIHAuaW1hZ2UtPndhaXRGb3JEb25l KCk7CisKKyAgICBRVkVSSUZZKHBsYXllcjEtPnByb2plY3Rpb24oKS0+ZXh0ZW50KCkuaXNFbXB0 eSgpKTsKKyAgICBRVkVSSUZZKHBsYXllcjEtPnByb2plY3Rpb24oKS0+ZXhhY3RCb3VuZHMoKS5p c0VtcHR5KCkpOworCisgICAgUVZFUklGWShwbGF5ZXIyLT5wcm9qZWN0aW9uKCktPmV4dGVudCgp LmlzRW1wdHkoKSk7CisgICAgUVZFUklGWShwbGF5ZXIyLT5wcm9qZWN0aW9uKCktPmV4YWN0Qm91 bmRzKCkuaXNFbXB0eSgpKTsKKworICAgIFFWRVJJRlkocGxheWVyMy0+cHJvamVjdGlvbigpLT5l eHRlbnQoKS5pc0VtcHR5KCkpOworICAgIFFWRVJJRlkocGxheWVyMy0+cHJvamVjdGlvbigpLT5l eGFjdEJvdW5kcygpLmlzRW1wdHkoKSk7CisKKyAgICBRQ09NUEFSRShwLmltYWdlLT5wcm9qZWN0 aW9uKCktPmV4YWN0Qm91bmRzKCksIFFSZWN0KFFSZWN0KDEwLDEwLDIzNiwyMzYpKSk7CisKKwor CisgICAgcC5pbWFnZS0+cmVmcmVzaEdyYXBoQXN5bmMoMCwgUVJlY3QoMCwyNTYsMjU2LDI1Niks IFFSZWN0KCkpOworICAgIHAuaW1hZ2UtPndhaXRGb3JEb25lKCk7CisKKyAgICBRVkVSSUZZKHBs YXllcjEtPnByb2plY3Rpb24oKS0+ZXh0ZW50KCkuaXNFbXB0eSgpKTsKKyAgICBRVkVSSUZZKHBs YXllcjEtPnByb2plY3Rpb24oKS0+ZXhhY3RCb3VuZHMoKS5pc0VtcHR5KCkpOworCisgICAgUVZF UklGWSghcGxheWVyMi0+cHJvamVjdGlvbigpLT5leHRlbnQoKS5pc0VtcHR5KCkpOworICAgIFFW RVJJRlkoIXBsYXllcjItPnByb2plY3Rpb24oKS0+ZXhhY3RCb3VuZHMoKS5pc0VtcHR5KCkpOwor CisgICAgUVZFUklGWShwbGF5ZXIzLT5wcm9qZWN0aW9uKCktPmV4dGVudCgpLmlzRW1wdHkoKSk7 CisgICAgUVZFUklGWShwbGF5ZXIzLT5wcm9qZWN0aW9uKCktPmV4YWN0Qm91bmRzKCkuaXNFbXB0 eSgpKTsKKworICAgIFFDT01QQVJFKHAuaW1hZ2UtPnByb2plY3Rpb24oKS0+ZXhhY3RCb3VuZHMo KSwgUVJlY3QoUVJlY3QoMTAsMTAsMjM2LDQ5MikpKTsKKworCisgICAgcC5pbWFnZS0+cmVmcmVz aEdyYXBoQXN5bmMoMCwgUVJlY3QoMjU2LDAsMjU2LDI1NiksIFFSZWN0KCkpOworICAgIHAuaW1h Z2UtPndhaXRGb3JEb25lKCk7CisKKyAgICBRVkVSSUZZKCFwbGF5ZXIxLT5wcm9qZWN0aW9uKCkt PmV4dGVudCgpLmlzRW1wdHkoKSk7CisgICAgUVZFUklGWSghcGxheWVyMS0+cHJvamVjdGlvbigp LT5leGFjdEJvdW5kcygpLmlzRW1wdHkoKSk7CisKKyAgICBRVkVSSUZZKCFwbGF5ZXIyLT5wcm9q ZWN0aW9uKCktPmV4dGVudCgpLmlzRW1wdHkoKSk7CisgICAgUVZFUklGWSghcGxheWVyMi0+cHJv amVjdGlvbigpLT5leGFjdEJvdW5kcygpLmlzRW1wdHkoKSk7CisKKyAgICBRVkVSSUZZKHBsYXll cjMtPnByb2plY3Rpb24oKS0+ZXh0ZW50KCkuaXNFbXB0eSgpKTsKKyAgICBRVkVSSUZZKHBsYXll cjMtPnByb2plY3Rpb24oKS0+ZXhhY3RCb3VuZHMoKS5pc0VtcHR5KCkpOworCisgICAgUUNPTVBB UkUocC5pbWFnZS0+cHJvamVjdGlvbigpLT5leGFjdEJvdW5kcygpLCBRUmVjdChRUmVjdCgxMCwx MCw0OTIsNDkyKSkpOworICAgIFFWRVJJRlkoKHAuaW1hZ2UtPnByb2plY3Rpb24oKS0+cmVnaW9u KCkgJiBRUmVjdCgyNTYsMjU2LDI1NiwyNTYpKS5pc0VtcHR5KCkpOworCisKKworICAgIHAuaW1h Z2UtPnJlZnJlc2hHcmFwaEFzeW5jKDAsIFFSZWN0KDI1NiwyNTYsMjU2LDI1NiksIFFSZWN0KCkp OworICAgIHAuaW1hZ2UtPndhaXRGb3JEb25lKCk7CisKKyAgICBRVkVSSUZZKCFwbGF5ZXIxLT5w cm9qZWN0aW9uKCktPmV4dGVudCgpLmlzRW1wdHkoKSk7CisgICAgUVZFUklGWSghcGxheWVyMS0+ cHJvamVjdGlvbigpLT5leGFjdEJvdW5kcygpLmlzRW1wdHkoKSk7CisKKyAgICBRVkVSSUZZKCFw bGF5ZXIyLT5wcm9qZWN0aW9uKCktPmV4dGVudCgpLmlzRW1wdHkoKSk7CisgICAgUVZFUklGWSgh cGxheWVyMi0+cHJvamVjdGlvbigpLT5leGFjdEJvdW5kcygpLmlzRW1wdHkoKSk7CisKKyAgICBR VkVSSUZZKCFwbGF5ZXIzLT5wcm9qZWN0aW9uKCktPmV4dGVudCgpLmlzRW1wdHkoKSk7CisgICAg UVZFUklGWSghcGxheWVyMy0+cHJvamVjdGlvbigpLT5leGFjdEJvdW5kcygpLmlzRW1wdHkoKSk7 CisKKyAgICBRQ09NUEFSRShwLmltYWdlLT5wcm9qZWN0aW9uKCktPmV4YWN0Qm91bmRzKCksIFFS ZWN0KFFSZWN0KDEwLDEwLDQ5Miw0OTIpKSk7CisgICAgUVZFUklGWSghKHAuaW1hZ2UtPnByb2pl Y3Rpb24oKS0+cmVnaW9uKCkgJiBRUmVjdCgyNTYsMjU2LDI1NiwyNTYpKS5pc0VtcHR5KCkpOwor CisgICAgcC5pbWFnZS0+d2FpdEZvckRvbmUoKTsKKworICAgIEtJU19EVU1QX0RFVklDRV8yKHAu aW1hZ2UtPnByb2plY3Rpb24oKSwgaW1hZ2VSZWN0LCAiaW1hZ2VfcHJvaiIsICJkZCIpOworCit9 CisKIFFURVNUX0tERU1BSU4oS2lzVHJhbnNmb3JtTWFza1Rlc3QsIEdVSSkKZGlmZiAtLWdpdCBh L2tyaXRhL2ltYWdlL3Rlc3RzL2tpc190cmFuc2Zvcm1fbWFza190ZXN0LmggYi9rcml0YS9pbWFn ZS90ZXN0cy9raXNfdHJhbnNmb3JtX21hc2tfdGVzdC5oCmluZGV4IDI4NjYzN2YuLjc2Y2NlMDAg MTAwNjQ0Ci0tLSBhL2tyaXRhL2ltYWdlL3Rlc3RzL2tpc190cmFuc2Zvcm1fbWFza190ZXN0LmgK KysrIGIva3JpdGEvaW1hZ2UvdGVzdHMva2lzX3RyYW5zZm9ybV9tYXNrX3Rlc3QuaApAQCAtMzQs NiArMzQsOCBAQCBwcml2YXRlIFFfU0xPVFM6CiAKICAgICB2b2lkIHRlc3RNdWx0aXBsZU1hc2tz KCk7CiAgICAgdm9pZCB0ZXN0TWFza1dpdGhPZmZzZXQoKTsKKworICAgIHZvaWQgdGVzdFdlaXJk RnVsbFVwZGF0ZXMoKTsKIH07CiAKICNlbmRpZiAvKiBfX0tJU19UUkFOU0ZPUk1fTUFTS19URVNU X0ggKi8KZGlmZiAtLWdpdCBhL2tyaXRhL2ltYWdlL3Rlc3RzL2tpc190cmFuc3BhcmVuY3lfbWFz a190ZXN0LmNwcCBiL2tyaXRhL2ltYWdlL3Rlc3RzL2tpc190cmFuc3BhcmVuY3lfbWFza190ZXN0 LmNwcAppbmRleCBjNTY1NjMyLi4yNmJkOTZkIDEwMDY0NAotLS0gYS9rcml0YS9pbWFnZS90ZXN0 cy9raXNfdHJhbnNwYXJlbmN5X21hc2tfdGVzdC5jcHAKKysrIGIva3JpdGEvaW1hZ2UvdGVzdHMv a2lzX3RyYW5zcGFyZW5jeV9tYXNrX3Rlc3QuY3BwCkBAIC0xNDEsMTIgKzE0MSwxMiBAQCB2b2lk IEtpc1RyYW5zcGFyZW5jeU1hc2tUZXN0Ojp0ZXN0TW92ZVBhcmVudExheWVyKCkKICAgICBsYXll ci0+c2V0WCgxMDApOwogICAgIGxheWVyLT5zZXRZKDEwMCk7CiAKLSAgICBxRGVidWcoKSA8PCAi U2VsLiByZWN0IGJlZm9yZToiIDw8IG1hc2stPnNlbGVjdGlvbigpLT5zZWxlY3RlZFJlY3QoKTsK KyAgICBxRGVidWcoKSA8PCAiU2VsLiByZWN0IGJlZm9yZToiIDw8IG1hc2stPnNlbGVjdGlvbigp LT5zZWxlY3RlZEV4YWN0UmVjdCgpOwogCiAgICAgbWFzay0+c2V0WCgxMDApOwogICAgIG1hc2st PnNldFkoMTAwKTsKIAotICAgIHFEZWJ1ZygpIDw8ICJTZWwuIHJlY3QgYWZ0ZXI6IiA8PCBtYXNr LT5zZWxlY3Rpb24oKS0+c2VsZWN0ZWRSZWN0KCk7CisgICAgcURlYnVnKCkgPDwgIlNlbC4gcmVj dCBhZnRlcjoiIDw8IG1hc2stPnNlbGVjdGlvbigpLT5zZWxlY3RlZEV4YWN0UmVjdCgpOwogCiAg ICAgUVJlY3QgZmluYWxSZWN0KDEwMCwxMDAsMjAwLDEwMCk7CiAgICAgUUNPTVBBUkUobGF5ZXIt PmV4YWN0Qm91bmRzKCksIGZpbmFsUmVjdCk7CmRpZmYgLS1naXQgYS9rcml0YS9pbWFnZS90aWxl czMva2lzX3RpbGVkX2RhdGFfbWFuYWdlci5jYyBiL2tyaXRhL2ltYWdlL3RpbGVzMy9raXNfdGls ZWRfZGF0YV9tYW5hZ2VyLmNjCmluZGV4IGVlZWEyNTguLjU1OWJmNTIgMTAwNjQ0Ci0tLSBhL2ty aXRhL2ltYWdlL3RpbGVzMy9raXNfdGlsZWRfZGF0YV9tYW5hZ2VyLmNjCisrKyBiL2tyaXRhL2lt YWdlL3RpbGVzMy9raXNfdGlsZWRfZGF0YV9tYW5hZ2VyLmNjCkBAIC0zMzgsNiArMzM4LDEwIEBA IHZvaWQgS2lzVGlsZWREYXRhTWFuYWdlcjo6Y2xlYXIoUVJlY3QgY2xlYXJSZWN0LCBjb25zdCBx dWludDggKmNsZWFyUGl4ZWwpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAocGl4ZWxCeXRl c0FyZURlZmF1bHQpIHsKKyAgICAgICAgY2xlYXJSZWN0ICY9IGV4dGVudEltcGwoKTsKKyAgICB9 CisKICAgICBxaW50MzIgZmlyc3RDb2x1bW4gPSB4VG9Db2woY2xlYXJSZWN0LmxlZnQoKSk7CiAg ICAgcWludDMyIGxhc3RDb2x1bW4gPSB4VG9Db2woY2xlYXJSZWN0LnJpZ2h0KCkpOwogCkBAIC0z NTIsMjAgKzM1NiwxNiBAQCB2b2lkIEtpc1RpbGVkRGF0YU1hbmFnZXI6OmNsZWFyKFFSZWN0IGNs ZWFyUmVjdCwgY29uc3QgcXVpbnQ4ICpjbGVhclBpeGVsKQogICAgIGNsZWFyUGl4ZWxEYXRhID0g ZHVwbGljYXRlUGl4ZWwobWF4UnVuTGVuZ3RoLCBjbGVhclBpeGVsKTsKIAogICAgIEtpc1RpbGVE YXRhICp0ZCA9IDA7Ci0gICAgaWYgKGNsZWFyUmVjdC53aWR0aCgpID49IEtpc1RpbGVEYXRhOjpX SURUSCAmJgotICAgICAgICAgICAgY2xlYXJSZWN0LmhlaWdodCgpID49IEtpc1RpbGVEYXRhOjpI RUlHSFQpIHsKLSAgICAgICAgaWYgKHBpeGVsQnl0ZXNBcmVEZWZhdWx0KQotICAgICAgICAgICAg LyoqCi0gICAgICAgICAgICAgKiBGSVhNRTogVGhlb3JldGljYWwgcmFjZSBjb25kaXRpb24KLSAg ICAgICAgICAgICAqICAgICAgICBpZiBzZXREZWZhdWx0UGl4ZWwgaGFzIGJlZW4gY2FsbGVkIGZp cnN0Ci0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHRkID0gbV9oYXNoVGFibGUtPmRlZmF1 bHRUaWxlRGF0YSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZCA9IEtpc1RpbGVEYXRh U3RvcmU6Omluc3RhbmNlKCktPmNyZWF0ZURlZmF1bHRUaWxlRGF0YShwaXhlbFNpemUsIGNsZWFy UGl4ZWwpOworICAgIGlmICghcGl4ZWxCeXRlc0FyZURlZmF1bHQgJiYKKyAgICAgICAgY2xlYXJS ZWN0LndpZHRoKCkgPj0gS2lzVGlsZURhdGE6OldJRFRIICYmCisgICAgICAgIGNsZWFyUmVjdC5o ZWlnaHQoKSA+PSBLaXNUaWxlRGF0YTo6SEVJR0hUKSB7CiAKKyAgICAgICAgdGQgPSBLaXNUaWxl RGF0YVN0b3JlOjppbnN0YW5jZSgpLT5jcmVhdGVEZWZhdWx0VGlsZURhdGEocGl4ZWxTaXplLCBj bGVhclBpeGVsKTsKICAgICAgICAgdGQtPmFjcXVpcmUoKTsKICAgICB9CiAKKyAgICBib29sIG5l ZWRzUmVjYWxjdWxhdGVFeHRlbnQgPSBmYWxzZTsKKwogICAgIGZvciAocWludDMyIHJvdyA9IGZp cnN0Um93OyByb3cgPD0gbGFzdFJvdzsgKytyb3cpIHsKICAgICAgICAgZm9yIChxaW50MzIgY29s dW1uID0gZmlyc3RDb2x1bW47IGNvbHVtbiA8PSBsYXN0Q29sdW1uOyArK2NvbHVtbikgewogCkBA IC0zNzYsOSArMzc2LDEzIEBAIHZvaWQgS2lzVGlsZWREYXRhTWFuYWdlcjo6Y2xlYXIoUVJlY3Qg Y2xlYXJSZWN0LCBjb25zdCBxdWludDggKmNsZWFyUGl4ZWwpCiAgICAgICAgICAgICBpZiAoY2xl YXJUaWxlUmVjdCA9PSB0aWxlUmVjdCkgewogICAgICAgICAgICAgICAgICAvLyBDbGVhciB3aG9s ZSB0aWxlCiAgICAgICAgICAgICAgICAgIG1faGFzaFRhYmxlLT5kZWxldGVUaWxlKGNvbHVtbiwg cm93KTsKLSAgICAgICAgICAgICAgICAgS2lzVGlsZVNQIGNsZWFyZWRUaWxlID0gbmV3IEtpc1Rp bGUoY29sdW1uLCByb3csIHRkLCBtX21lbWVudG9NYW5hZ2VyKTsKLSAgICAgICAgICAgICAgICAg bV9oYXNoVGFibGUtPmFkZFRpbGUoY2xlYXJlZFRpbGUpOwotICAgICAgICAgICAgICAgICB1cGRh dGVFeHRlbnQoY29sdW1uLCByb3cpOworICAgICAgICAgICAgICAgICBuZWVkc1JlY2FsY3VsYXRl RXh0ZW50ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgICBpZiAoIXBpeGVsQnl0ZXNBcmVEZWZh dWx0KSB7CisgICAgICAgICAgICAgICAgICAgICBLaXNUaWxlU1AgY2xlYXJlZFRpbGUgPSBuZXcg S2lzVGlsZShjb2x1bW4sIHJvdywgdGQsIG1fbWVtZW50b01hbmFnZXIpOworICAgICAgICAgICAg ICAgICAgICAgbV9oYXNoVGFibGUtPmFkZFRpbGUoY2xlYXJlZFRpbGUpOworICAgICAgICAgICAg ICAgICAgICAgdXBkYXRlRXh0ZW50KGNvbHVtbiwgcm93KTsKKyAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBjb25zdCBxaW50MzIgbGluZVNp emUgPSBjbGVhclRpbGVSZWN0LndpZHRoKCkgKiBwaXhlbFNpemU7CiAgICAgICAgICAgICAgICAg cWludDMyIHJvd3NSZW1haW5pbmcgPSBjbGVhclRpbGVSZWN0LmhlaWdodCgpOwpAQCAtNDA1LDYg KzQwOSwxMSBAQCB2b2lkIEtpc1RpbGVkRGF0YU1hbmFnZXI6OmNsZWFyKFFSZWN0IGNsZWFyUmVj dCwgY29uc3QgcXVpbnQ4ICpjbGVhclBpeGVsKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg ICAgfQorCisgICAgaWYgKG5lZWRzUmVjYWxjdWxhdGVFeHRlbnQpIHsKKyAgICAgICAgcmVjYWxj dWxhdGVFeHRlbnQoKTsKKyAgICB9CisKICAgICBpZiAodGQpIHRkLT5yZWxlYXNlKCk7CiAgICAg ZGVsZXRlW10gY2xlYXJQaXhlbERhdGE7CiB9CkBAIC02NTAsMjIgKzY1OSwyNiBAQCB2b2lkIEtp c1RpbGVkRGF0YU1hbmFnZXI6OnVwZGF0ZUV4dGVudChxaW50MzIgY29sLCBxaW50MzIgcm93KQog ICAgIG1fZXh0ZW50TWF4WSA9IHFNYXgobV9leHRlbnRNYXhZLCB0aWxlTWF4WSk7CiB9CiAKLXZv aWQgS2lzVGlsZWREYXRhTWFuYWdlcjo6ZXh0ZW50KHFpbnQzMiAmeCwgcWludDMyICZ5LCBxaW50 MzIgJncsIHFpbnQzMiAmaCkgY29uc3QKK1FSZWN0IEtpc1RpbGVkRGF0YU1hbmFnZXI6OmV4dGVu dEltcGwoKSBjb25zdAogewotICAgIFFSZWFkTG9ja2VyIGxvY2tlcigmbV9sb2NrKTsKKyAgICBx aW50MzIgeCA9IG1fZXh0ZW50TWluWDsKKyAgICBxaW50MzIgeSA9IG1fZXh0ZW50TWluWTsKKyAg ICBxaW50MzIgdyA9IChtX2V4dGVudE1heFggPj0gbV9leHRlbnRNaW5YKSA/IG1fZXh0ZW50TWF4 WCAtIG1fZXh0ZW50TWluWCArIDEgOiAwOworICAgIHFpbnQzMiBoID0gKG1fZXh0ZW50TWF4WSA+ PSBtX2V4dGVudE1pblkpID8gbV9leHRlbnRNYXhZIC0gbV9leHRlbnRNaW5ZICsgMSA6IDA7CiAK LSAgICB4ID0gbV9leHRlbnRNaW5YOwotICAgIHkgPSBtX2V4dGVudE1pblk7Ci0gICAgdyA9ICht X2V4dGVudE1heFggPj0gbV9leHRlbnRNaW5YKSA/IG1fZXh0ZW50TWF4WCAtIG1fZXh0ZW50TWlu WCArIDEgOiAwOwotICAgIGggPSAobV9leHRlbnRNYXhZID49IG1fZXh0ZW50TWluWSkgPyBtX2V4 dGVudE1heFkgLSBtX2V4dGVudE1pblkgKyAxIDogMDsKKyAgICByZXR1cm4gUVJlY3QoeCwgeSwg dywgaCk7CiB9CiAKLVFSZWN0IEtpc1RpbGVkRGF0YU1hbmFnZXI6OmV4dGVudCgpIGNvbnN0Cit2 b2lkIEtpc1RpbGVkRGF0YU1hbmFnZXI6OmV4dGVudChxaW50MzIgJngsIHFpbnQzMiAmeSwgcWlu dDMyICZ3LCBxaW50MzIgJmgpIGNvbnN0CiB7Ci0gICAgcWludDMyIHgsIHksIHcsIGg7Ci0gICAg ZXh0ZW50KHgsIHksIHcsIGgpOworICAgIFFSZWN0IHJlY3QgPSBleHRlbnQoKTsKKyAgICByZWN0 LmdldFJlY3QoJngsICZ5LCAmdywgJmgpOworfQogCi0gICAgcmV0dXJuIFFSZWN0KHgsIHksIHcs IGgpOworUVJlY3QgS2lzVGlsZWREYXRhTWFuYWdlcjo6ZXh0ZW50KCkgY29uc3QKK3sKKyAgICBR UmVhZExvY2tlciBsb2NrZXIoJm1fbG9jayk7CisgICAgcmV0dXJuIGV4dGVudEltcGwoKTsKIH0K IAogUVJlZ2lvbiBLaXNUaWxlZERhdGFNYW5hZ2VyOjpyZWdpb24oKSBjb25zdApkaWZmIC0tZ2l0 IGEva3JpdGEvaW1hZ2UvdGlsZXMzL2tpc190aWxlZF9kYXRhX21hbmFnZXIuaCBiL2tyaXRhL2lt YWdlL3RpbGVzMy9raXNfdGlsZWRfZGF0YV9tYW5hZ2VyLmgKaW5kZXggZmJhMDhlYy4uMDE0ZmZh YSAxMDA2NDQKLS0tIGEva3JpdGEvaW1hZ2UvdGlsZXMzL2tpc190aWxlZF9kYXRhX21hbmFnZXIu aAorKysgYi9rcml0YS9pbWFnZS90aWxlczMva2lzX3RpbGVkX2RhdGFfbWFuYWdlci5oCkBAIC0z MjQsNiArMzI0LDggQEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgdm9pZCBzZXREZWZhdWx0UGl4 ZWxJbXBsKGNvbnN0IHF1aW50OCAqZGVmUGl4ZWwpOwogCisgICAgUVJlY3QgZXh0ZW50SW1wbCgp IGNvbnN0OworCiAgICAgYm9vbCB3cml0ZVRpbGVzSGVhZGVyKEtpc1BhaW50RGV2aWNlV3JpdGVy ICZzdG9yZSwgcXVpbnQzMiBudW1UaWxlcyk7CiAgICAgYm9vbCBwcm9jZXNzVGlsZXNIZWFkZXIo UUlPRGV2aWNlICpzdHJlYW0sIHF1aW50MzIgJm51bVRpbGVzKTsKIApkaWZmIC0tZ2l0IGEva3Jp dGEvc2tldGNoL0ltYWdlQnVpbGRlci5jcHAgYi9rcml0YS9za2V0Y2gvSW1hZ2VCdWlsZGVyLmNw cAppbmRleCA1OTAxNWNmLi43YTE1YjlkIDEwMDY0NAotLS0gYS9rcml0YS9za2V0Y2gvSW1hZ2VC dWlsZGVyLmNwcAorKysgYi9rcml0YS9za2V0Y2gvSW1hZ2VCdWlsZGVyLmNwcApAQCAtODYsMTAg Kzg2LDcgQEAgdm9pZCBJbWFnZUJ1aWxkZXI6OmNyZWF0ZUltYWdlRnJvbUNsaXBib2FyZERlbGF5 ZWQoKQogICAgICAgICBsYXllci0+c2V0T3BhY2l0eShPUEFDSVRZX09QQVFVRV9VOCk7CiAgICAg ICAgIFFSZWN0IHIgPSBjbGlwRGV2aWNlLT5leGFjdEJvdW5kcygpOwogCi0gICAgICAgIEtpc1Bh aW50ZXIgcGFpbnRlcjsKLSAgICAgICAgcGFpbnRlci5iZWdpbihsYXllci0+cGFpbnREZXZpY2Uo KSk7Ci0gICAgICAgIHBhaW50ZXIuc2V0Q29tcG9zaXRlT3AoQ09NUE9TSVRFX0NPUFkpOwotICAg ICAgICBwYWludGVyLmJpdEJsdChRUG9pbnQoMCwgMCksIGNsaXBEZXZpY2UsIHIpOworICAgICAg ICBLaXNQYWludGVyOjpjb3B5QXJlYU9wdGltaXplZChRUG9pbnQoKSwgY2xpcERldmljZSwgbGF5 ZXItPnBhaW50RGV2aWNlKCksIHIpOwogICAgICAgICBsYXllci0+c2V0RGlydHkoUVJlY3QoMCwg MCwgc3oud2lkdGgoKSwgc3ouaGVpZ2h0KCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9rcml0 YS91aS9hY3Rpb25zL2tpc19zZWxlY3Rpb25fYWN0aW9uX2ZhY3Rvcmllcy5jcHAgYi9rcml0YS91 aS9hY3Rpb25zL2tpc19zZWxlY3Rpb25fYWN0aW9uX2ZhY3Rvcmllcy5jcHAKaW5kZXggZDczN2Nh OC4uMjMyYTI3MCAxMDA2NDQKLS0tIGEva3JpdGEvdWkvYWN0aW9ucy9raXNfc2VsZWN0aW9uX2Fj dGlvbl9mYWN0b3JpZXMuY3BwCisrKyBiL2tyaXRhL3VpL2FjdGlvbnMva2lzX3NlbGVjdGlvbl9h Y3Rpb25fZmFjdG9yaWVzLmNwcApAQCAtODEsMTEgKzgxLDcgQEAgbmFtZXNwYWNlIEFjdGlvbkhl bHBlciB7CiAgICAgLy8gVE9ETyBpZiB0aGUgc291cmNlIGlzIGxpbmtlZC4uLiBjb3B5IGZyb20g YWxsIGxpbmtlZCBsYXllcnM/IT8KIAogICAgIC8vIENvcHkgaW1hZ2UgZGF0YQotICAgIEtpc1Bh aW50ZXIgZ2M7Ci0gICAgZ2MuYmVnaW4oY2xpcCk7Ci0gICAgZ2Muc2V0Q29tcG9zaXRlT3AoQ09N UE9TSVRFX0NPUFkpOwotICAgIGdjLmJpdEJsdCgwLCAwLCBkZXZpY2UsIHJjLngoKSwgcmMueSgp LCByYy53aWR0aCgpLCByYy5oZWlnaHQoKSk7Ci0gICAgZ2MuZW5kKCk7CisgICAgS2lzUGFpbnRl cjo6Y29weUFyZWFPcHRpbWl6ZWQoUVBvaW50KCksIGRldmljZSwgY2xpcCwgcmMpOwogCiAgICAg aWYgKHNlbGVjdGlvbikgewogICAgICAgICAvLyBBcHBseSBzZWxlY3Rpb24gbWFzay4KQEAgLTQx NiwxMCArNDEyLDcgQEAgdm9pZCBLaXNQYXN0ZU5ld0FjdGlvbkZhY3Rvcnk6OnJ1bihLaXNWaWV3 TWFuYWdlciAqdmlld01hbmFnZXIpCiAgICAgICAgICAgICBuZXcgS2lzUGFpbnRMYXllcihpbWFn ZS5kYXRhKCksIGNsaXAtPm9iamVjdE5hbWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE9QQUNJVFlfT1BBUVVFX1U4LCBjbGlwLT5jb2xvclNwYWNlKCkpOwogCi0gICAgS2lzUGFp bnRlciBwKGxheWVyLT5wYWludERldmljZSgpKTsKLSAgICBwLnNldENvbXBvc2l0ZU9wKENPTVBP U0lURV9DT1BZKTsKLSAgICBwLmJpdEJsdCgwLCAwLCBjbGlwLCByZWN0LngoKSwgcmVjdC55KCks IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgcC5lbmQoKTsKKyAgICBLaXNQYWlu dGVyOjpjb3B5QXJlYU9wdGltaXplZChRUG9pbnQoKSwgY2xpcCwgbGF5ZXItPnBhaW50RGV2aWNl KCksIHJlY3QpOwogCiAgICAgaW1hZ2UtPmFkZE5vZGUobGF5ZXIuZGF0YSgpLCBpbWFnZS0+cm9v dExheWVyKCkpOwogICAgIGRvYy0+c2V0Q3VycmVudEltYWdlKGltYWdlKTsKZGlmZiAtLWdpdCBh L2tyaXRhL3VpL2ZsYWtlL2tpc19zaGFwZV9sYXllcl9jYW52YXMuY3BwIGIva3JpdGEvdWkvZmxh a2Uva2lzX3NoYXBlX2xheWVyX2NhbnZhcy5jcHAKaW5kZXggZDYwZjJlNC4uNmVhMThkMiAxMDA2 NDQKLS0tIGEva3JpdGEvdWkvZmxha2Uva2lzX3NoYXBlX2xheWVyX2NhbnZhcy5jcHAKKysrIGIv a3JpdGEvdWkvZmxha2Uva2lzX3NoYXBlX2xheWVyX2NhbnZhcy5jcHAKQEAgLTEzNCwxMCArMTM0 LDkgQEAgdm9pZCBLaXNTaGFwZUxheWVyQ2FudmFzOjpyZXBhaW50KCkKIAogICAgIEtpc1BhaW50 RGV2aWNlU1AgZGV2ID0gbmV3IEtpc1BhaW50RGV2aWNlKG1fcHJvamVjdGlvbi0+Y29sb3JTcGFj ZSgpKTsKICAgICBkZXYtPmNvbnZlcnRGcm9tUUltYWdlKGltYWdlLCAwKTsKLSAgICBLaXNQYWlu dGVyIGtwKG1fcHJvamVjdGlvbi5kYXRhKCkpOwotICAgIGtwLnNldENvbXBvc2l0ZU9wKG1fcHJv amVjdGlvbi0+Y29sb3JTcGFjZSgpLT5jb21wb3NpdGVPcChDT01QT1NJVEVfQ09QWSkpOwotICAg IGtwLmJpdEJsdChyLngoKSwgci55KCksIGRldiwgMCwgMCwgci53aWR0aCgpLCByLmhlaWdodCgp KTsKLSAgICBrcC5lbmQoKTsKKworICAgIEtpc1BhaW50ZXI6OmNvcHlBcmVhT3B0aW1pemVkKHIu dG9wTGVmdCgpLCBkZXYsIG1fcHJvamVjdGlvbiwgUVJlY3QoUVBvaW50KCksIHIuc2l6ZSgpKSk7 CisKICAgICBtX3BhcmVudExheWVyLT5zZXREaXJ0eShyKTsKIH0KIApkaWZmIC0tZ2l0IGEva3Jp dGEvdWkva2lzX2xheWVyX21hbmFnZXIuY2MgYi9rcml0YS91aS9raXNfbGF5ZXJfbWFuYWdlci5j YwppbmRleCAxNzNhYTg5Li41MjA1NzFhIDEwMDY0NAotLS0gYS9rcml0YS91aS9raXNfbGF5ZXJf bWFuYWdlci5jYworKysgYi9rcml0YS91aS9raXNfbGF5ZXJfbWFuYWdlci5jYwpAQCAtNDkyLDEw ICs0OTIsMTAgQEAgdm9pZCBLaXNMYXllck1hbmFnZXI6OmNvbnZlcnROb2RlVG9QYWludExheWVy KEtpc05vZGVTUCBzb3VyY2UpCiAgICAgICAgICAgKnNyY0RldmljZS0+Y29tcG9zaXRpb25Tb3Vy Y2VDb2xvclNwYWNlKCkpKSB7CiAKICAgICAgICAgY2xvbmUgPSBuZXcgS2lzUGFpbnREZXZpY2Uo c3JjRGV2aWNlLT5jb21wb3NpdGlvblNvdXJjZUNvbG9yU3BhY2UoKSk7Ci0gICAgICAgIEtpc1Bh aW50ZXIgZ2MoY2xvbmUpOwotICAgICAgICBnYy5zZXRDb21wb3NpdGVPcChDT01QT1NJVEVfQ09Q WSk7CisKICAgICAgICAgUVJlY3QgcmMoc3JjRGV2aWNlLT5leHRlbnQoKSk7Ci0gICAgICAgIGdj LmJpdEJsdChyYy50b3BMZWZ0KCksIHNyY0RldmljZSwgcmMpOworICAgICAgICBLaXNQYWludGVy Ojpjb3B5QXJlYU9wdGltaXplZChyYy50b3BMZWZ0KCksIHNyY0RldmljZSwgY2xvbmUsIHJjKTsK KwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNsb25lID0gbmV3IEtpc1BhaW50RGV2aWNlKCpzcmNE ZXZpY2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL2tyaXRhL3VpL3Rvb2wvc3Ryb2tlcy9raXNfZmls dGVyX3N0cm9rZV9zdHJhdGVneS5jcHAgYi9rcml0YS91aS90b29sL3N0cm9rZXMva2lzX2ZpbHRl cl9zdHJva2Vfc3RyYXRlZ3kuY3BwCmluZGV4IDMxYWVkODAuLjkyY2M5NDcgMTAwNjQ0Ci0tLSBh L2tyaXRhL3VpL3Rvb2wvc3Ryb2tlcy9raXNfZmlsdGVyX3N0cm9rZV9zdHJhdGVneS5jcHAKKysr IGIva3JpdGEvdWkvdG9vbC9zdHJva2VzL2tpc19maWx0ZXJfc3Ryb2tlX3N0cmF0ZWd5LmNwcApA QCAtMTA2LDEwICsxMDYsNyBAQCB2b2lkIEtpc0ZpbHRlclN0cm9rZVN0cmF0ZWd5Ojpkb1N0cm9r ZUNhbGxiYWNrKEtpc1N0cm9rZUpvYkRhdGEgKmRhdGEpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtX2QtPmZpbHRlckNvbmZpZy5kYXRhKCksIGhlbHBlci51cGRhdGVyKCkpOwog CiAgICAgICAgIGlmIChtX2QtPnNlY29uZGFyeVRyYW5zYWN0aW9uKSB7Ci0gICAgICAgICAgICBL aXNQYWludGVyIHAodGFyZ2V0RGV2aWNlKCkpOwotICAgICAgICAgICAgcC5zZXRDb21wb3NpdGVP cChDT01QT1NJVEVfQ09QWSk7Ci0gICAgICAgICAgICBwLnNldFNlbGVjdGlvbihhY3RpdmVTZWxl Y3Rpb24oKSk7Ci0gICAgICAgICAgICBwLmJpdEJsdChyYy50b3BMZWZ0KCksIG1fZC0+ZmlsdGVy RGV2aWNlLCByYyk7CisgICAgICAgICAgICBLaXNQYWludGVyOjpjb3B5QXJlYU9wdGltaXplZChy Yy50b3BMZWZ0KCksIG1fZC0+ZmlsdGVyRGV2aWNlLCB0YXJnZXREZXZpY2UoKSwgcmMsIGFjdGl2 ZVNlbGVjdGlvbigpKTsKIAogICAgICAgICAgICAgLy8gRnJlZSBtZW1vcnkKICAgICAgICAgICAg IG1fZC0+ZmlsdGVyRGV2aWNlLT5jbGVhcihyYyk7CmRpZmYgLS1naXQgYS9rcml0YS91aS93aWRn ZXRzL2tpc19pbWFnZV9mcm9tX2NsaXBib2FyZF93aWRnZXQuY3BwIGIva3JpdGEvdWkvd2lkZ2V0 cy9raXNfaW1hZ2VfZnJvbV9jbGlwYm9hcmRfd2lkZ2V0LmNwcAppbmRleCA2Nzg0MGQ4Li5iMzQ4 ZTM1IDEwMDY0NAotLS0gYS9rcml0YS91aS93aWRnZXRzL2tpc19pbWFnZV9mcm9tX2NsaXBib2Fy ZF93aWRnZXQuY3BwCisrKyBiL2tyaXRhL3VpL3dpZGdldHMva2lzX2ltYWdlX2Zyb21fY2xpcGJv YXJkX3dpZGdldC5jcHAKQEAgLTk0LDEwICs5NCw5IEBAIHZvaWQgS2lzSW1hZ2VGcm9tQ2xpcGJv YXJkOjpjcmVhdGVJbWFnZSgpCiAgICAgICAgIEtpc1BhaW50RGV2aWNlU1AgY2xpcCA9IEtpc0Ns aXBib2FyZDo6aW5zdGFuY2UoKS0+Y2xpcChRUmVjdCgpLCB0cnVlKTsKICAgICAgICAgaWYgKGNs aXApIHsKICAgICAgICAgICAgIFFSZWN0IHIgPSBjbGlwLT5leGFjdEJvdW5kcygpOwotICAgICAg ICAgICAgS2lzUGFpbnRlciBwYWludGVyOwotICAgICAgICAgICAgcGFpbnRlci5iZWdpbihsYXll ci0+cGFpbnREZXZpY2UoKSk7Ci0gICAgICAgICAgICBwYWludGVyLnNldENvbXBvc2l0ZU9wKENP TVBPU0lURV9DT1BZKTsKLSAgICAgICAgICAgIHBhaW50ZXIuYml0Qmx0KDAsIDAsIGNsaXAsIHIu eCgpLCByLnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpKTsKKworICAgICAgICAgICAgS2lzUGFp bnRlcjo6Y29weUFyZWFPcHRpbWl6ZWQoUVBvaW50KCksIGNsaXAsIGxheWVyLT5wYWludERldmlj ZSgpLCByKTsKKwogICAgICAgICAgICAgbGF5ZXItPnNldERpcnR5KCk7CiAgICAgICAgIH0KIApf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpLcml0YSBtYWls aW5nIGxpc3QKa2ltYWdlc2hvcEBrZGUub3JnCmh0dHBzOi8vbWFpbC5rZGUub3JnL21haWxtYW4v bGlzdGluZm8va2ltYWdlc2hvcAo=