From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 22299 invoked from network); 4 Jul 2023 14:19:27 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 4 Jul 2023 14:19:27 -0000 Content-Type: multipart/mixed; boundary="===============5810808617483966177==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_ffmpeg6_split?= To: ml@inbox.vuxu.org From: zlice Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Tue, 04 Jul 2023 16:19:27 +0200 List-Id: Message-ID: <20230704141927.liWe64LChrj8NVUtD_5oFOI5xxXH6kGth0ALqhSJzyM@z> GitHub notification mails are now in MIME to allow UTF8. --===============5810808617483966177== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgemxpY2UgYWdhaW5zdCBtYXN0ZXIg b24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL3psaWNl L3ZvaWQtcGFja2FnZXMgZmZtcGVnNi1zcGxpdApodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NjEKCmZmbXBlZzYgc3BsaXQKW2NpIHNraXBdDQoNCg0K IyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQoNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhp cyBQUjogKipZRVMqKg0KDQptYWluIHRlc3RpbmcgaGFzIGJlZW4gdmFhcGkgaW4gRmlyZWZveCBO aWdodGx5IGFuZCBlbmMvZGVjIGluIFNob3RjdXQgb24gSW50ZWwgQTc3MA0KDQojIyMjIE5ldyBw YWNrYWdlDQoNCi0gVGhpcyBuZXcgcGFja2FnZSBjb25mb3JtcyB0byB0aGUgW3BhY2thZ2UgcmVx dWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Js b2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCNwYWNrYWdlLXJlcXVpcmVtZW50cyk6ICoqWUVTKioN Cg0KIyMjIyBMb2NhbCBidWlsZCB0ZXN0aW5nDQoNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkg Zm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsICoqeDg2XzY0KioNCg0KIyMjIyBEaXNjdXNzaW9u DQoNCkNvbnRpbnVhdGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBh Y2thZ2VzL3B1bGwvMzYzMTUNCg0KYGxpYmF2cmVzYW1wbGVgIGlzIGRlcHJlY2F0ZWQsIGJ1dCBt YXJrZWQgYXMgYSBkZXBlbmRlbmN5IHdoZW4gdHJ5aW5nIHRvIGJ1aWxkIG90aGVyIHBhY2thZ2Vz IGFuZCBpbnN0YWxsIGBmZm1wZWdgKDYpLiBJIHRoaW5rIHRoZSByaWdodCB3YXkgdG8gaGFuZGxl IHRoaXMgaXMgbWFrZSBhIG1ldGEgcGFja2FnZSBhbmQgdGhlIGFkZCB0byByZW1vdmFscz8NCg0K DQojIyMjIyBDb21taXQgbmFtaW5nIC8gbWlzYw0KDQp+fkNvbW1pdHMgYXJlICdkaXJ0eScgcmln aHQgbm93LCBydW5uaW5nIHdpdGggW2dzdHJlYW1lciAxLjIyLjEgdXBkYXRlc10oaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQyODYxKSBhbmQgW0ludGVs IE9wZW5DTF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxs LzQzMDg0KS4gVGhpcyB3aWxsIGFsc28gbWFrZSBbaW50ZWwgcGFja2FnZXMgcHJdKGh0dHBzOi8v Z2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80MTEzMikgb2Jzb2xldGUu fn4gKHNlZSBSZXF1aXJlbWVudHMgYmVsb3cpDQoNCk1haW50YWluZXIgZm9yIHByZXZpb3VzIGZm bXBlZyg0KSB3YXMgb3JwaGFuZWQsIEkgY2FuIHB1dCBteSBuYW1lIGluIHRoZXJlIGlmIHRoYXQg bWF0dGVycywgdGhvdWdoIEkgZG9uJ3QgZXhhY3RseSBzZWUgbXlzZWxmIGtlZXBpbmcgdXAgb24g ZmZtcGVnLg0KDQpUaGlzIHVwZGF0ZXMgUVQ1IHdoaWNoIGxvb2tzIGxpa2UgaXQgaXMgdXN1YWxs eSBob3N0ZWQgYnkgSm9obm55LiBOb3Qgc3VyZSBpZiB0aGVyZSdzIGFueSByZWFzb24gdG8gc3Rh eSB0aGVyZSBvciB0aGVzZSBzb3VyY2VzIGFyZSBmaW5lLg0KDQojIyMjIyBTVElMTCBGRk1QRUc0 DQoNClRoZXNlIGFyZSBhIG1peCBvZiBlbXVsYXRvcnMsIGdhbWVzIGFuZC9vciBvbGRlciBwYWNr YWdlcy4NCg0KLSBhdHRyYWN0IChtdWx0aXBsZSBwYXRjaGVzIGluIG1hc3RlcikNCi0gYXVkYWNp dHkgKGh0dHBzOi8vZ2l0aHViLmNvbS9hdWRhY2l0eS9hdWRhY2l0eS9pc3N1ZXMvMjMwNSBhbmQg aHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9wb3J0bWVkaWEvd2lraS9wb3J0c21mLyBpcyAnYmV0 YScpDQotIGNjZXh0cmFjdG9yIChtYXN0ZXIgcGF0Y2hlcz8gbm8gcmVsZWFzZSkNCi0gdmljZQ0K LSBrb2RpDQotIG1sdCAob25seSBkZXAgbGVmdCBpcyBmbG93YmxhZGUpDQotIH5+c3luZmlnICht bHQpfn4gKHdvcmsgd2l0aCBtbHQ3LCBidW1wIHN5bmZpZ3N0dWRpbykNCi0gdHZoZWFkZW5kDQot IHNzcg0KLSBzcGVrLWFsdGVybmF0aXZlDQotIHBwc3NwcA0KLSBvbGl2ZQ0KLSBtb2MNCi0gbWVk aWFzdHJlYW1lcg0KLSBsaWJleHRyYWN0b3INCi0gaWRqYw0KLSBoZWRnZXdhcnMNCi0gfn5mZm1w ZWd0aHVtYm5haWxlcn5+IChwYXRjaGVzIGZvciBtb3ZpZWRlY29kZXIueHh4IGZpbGVzKQ0KLSB+ fmZmbXBlZ3RodW1ic35+IChsYXRlc3QgY29tcGlsZXMpDQotIGRlYWRiZWVmDQotIG9teHBsYXll cg0KLSBxdGF2IChmb3JrIGhhcyBmZm1wZWcgNSBwYXRjaCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9j bWd1by9RdEFWKQ0KLSBgdmxjYCAodmxjNCB3aWxsIHN1cHBvcnQgZmZtcGVnNSwgdGhlcmUncyBh IHBhdGNoIHRvIGJ1aWxkIDMueCB3aXRoIGZmbXBlZzUgYnV0IGl0IHdpbGwgbGFjayB2YWFwaSkN Ci0gYG9zZ2AgKE9wZW5TY2VuZUdyYXBoIHBsdXMgYHhpbmUtbGliYCkNCg0KDQojIyMjIyBIQVZF IE5PVCBCVUlMVCBZRVQNCg0KLSBvbXhwbGF5ZXIgKHJwaSBvbmx5PyBmZm1wZWc0KQ0KLSBrb2Rp IChiaWcsIGJ1dCBmZm1wZWc0KQ0KDQoNCiMjIyMjIFVQREFURUQgKGZvciBmZm1wZWc2KQ0KDQot IH5+YmxlbmRlcjogdXBkYXRlIHRvIDMuNS4xfn4gfn53aWxsIGJlIHJldmJ1bXAgd2l0aH5+IGh0 dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80Mzk5Mg0KLSB1 bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAuDQotIGd1dmN2aWV3OiB1cGRhdGUgdG8gMi4wLjguDQot IHF0NTogdXBkYXRlIHRvIDUuMTUuOA0KLSBxdDUtd2ViZW5naW5lOiB1cGRhdGUgdG8gNS4xOC4x Mw0KLSBzaGlib2tlbjI6IHJldmJ1bXAgZm9yIHF0NS4xNS44IChwYXRjaCkNCi0gcHl0aG9uMy1w eXNpZGUyOiB1cGRhdGUgdG8gNS4xNS44IChwYXRjaCkNCg0KDQojIyMjIyBSZXF1aXJlbWVudHMN Cg0KLSB+fltnc3RyZWFtZXIgMS4yMi4yXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvNDI4NjEpfn4gLSBhIGZldyBwYWNrYWdlcyB1c2UgZmZtcGVnLWRl dmVsIGFuZCByZXF1aXJlIGEgcmV2YnVtcA0KDQotIFtJbnRlbCBQYWNrYWdlc10oaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQxMTMyKSAtIGZmbXBlZzQg dXNlcyBkaWZmZXJlbnQgbGlicmFyaWVzIHRoYW4gNiAobGlibWZ4IC8gSW50ZWwtTWVkaWFTREsg dnMgb25seSBvbmVWUEwgdGhhdCBJbnRlbCBpcyBtb3ZpbmcgdG8pLCBib3RoIGFyZSBpbmNsdWRl ZCBoZXJlDQoNCi0gfn5bc2hvdGN1dCAyMy4wNS4xNF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQt bGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQ0MjYwKX5+CgpBIHBhdGNoIGZpbGUgZnJvbSBodHRw czovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NjEucGF0Y2gg aXMgYXR0YWNoZWQ= --===============5810808617483966177== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSA0ODllZjgwOTFmMTdiYjE3MjYyMmJiYmNjOGY1OGZjZGZhYzFhNWJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDE5OjU1OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTEzXSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLi93b3JrYXJv dW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0tLQogc3JjcGtn cy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgNDEgKysrKystLS0tLS0t LQogNSBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxNDAgZGVsZXRpb25zKC0pCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvZmlsZXMvYWx0aXZlYy5wYXRjaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmct cG9pbnQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3dv cmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaAoKZGlmZiAtLWdpdCBhL2NvbW1v bi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDRlNmE1YTY2M2ZhMC4uYTc3MzQ2Y2NlM2U5 IDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTM4Nywx NSArMzg3LDIzIEBAIGxpYmlkM3RhZy5zby4wIGxpYmlkM3RhZy0wLjE1LjFiXzEKIGxpYmdpZi5z by43IGdpZmxpYi01LjEuMF8xCiBsaWJJbWxpYjIuc28uMSBpbWxpYjItMS40LjJfMQogbGlibXAz bGFtZS5zby4wIGxhbWUtMy45OC4yXzEKLWxpYmF2ZGV2aWNlLnNvLjU4IGxpYmF2ZGV2aWNlLTQu MF8xCi1saWJhdmZvcm1hdC5zby41OCBsaWJhdmZvcm1hdC00LjBfMQotbGlic3dzY2FsZS5zby41 IGxpYnN3c2NhbGUtNC4wXzEKLWxpYnN3cmVzYW1wbGUuc28uMyBsaWJzd3Jlc2FtcGxlLTQuMF8x Ci1saWJhdnJlc2FtcGxlLnNvLjQgbGliYXZyZXNhbXBsZS00LjBfMQotbGlicG9zdHByb2Muc28u NTUgbGlicG9zdHByb2MtNC4wXzEKLWxpYmF2Y29kZWMuc28uNTggbGliYXZjb2RlYy00LjBfMQot bGliYXZ1dGlsLnNvLjU2IGxpYmF2dXRpbC00LjBfMQotbGliYXZmaWx0ZXIuc28uNyBsaWJhdmZp bHRlci00LjBfMQorbGliYXZkZXZpY2Uuc28uNjAgbGliYXZkZXZpY2UtNi4wXzEKK2xpYmF2Zm9y bWF0LnNvLjYwIGxpYmF2Zm9ybWF0LTYuMF8xCitsaWJzd3NjYWxlLnNvLjcgbGlic3dzY2FsZS02 LjBfMQorbGlic3dyZXNhbXBsZS5zby40IGxpYnN3cmVzYW1wbGUtNi4wXzEKK2xpYnBvc3Rwcm9j LnNvLjU3IGxpYnBvc3Rwcm9jLTYuMF8xCitsaWJhdmNvZGVjLnNvLjYwIGxpYmF2Y29kZWMtNi4w XzEKK2xpYmF2dXRpbC5zby41OCBsaWJhdnV0aWwtNi4wXzEKK2xpYmF2ZmlsdGVyLnNvLjkgbGli YXZmaWx0ZXItNi4wXzEKK2xpYmF2ZGV2aWNlLnNvLjU4IGxpYmF2ZGV2aWNlNC00LjBfMQorbGli YXZmb3JtYXQuc28uNTggbGliYXZmb3JtYXQ0LTQuMF8xCitsaWJzd3NjYWxlLnNvLjUgbGlic3dz Y2FsZTQtNC4wXzEKK2xpYnN3cmVzYW1wbGUuc28uMyBsaWJzd3Jlc2FtcGxlNC00LjBfMQorbGli YXZyZXNhbXBsZS5zby40IGxpYmF2cmVzYW1wbGU0LTQuMF8xCitsaWJwb3N0cHJvYy5zby41NSBs aWJwb3N0cHJvYzQtNC4wXzEKK2xpYmF2Y29kZWMuc28uNTggbGliYXZjb2RlYzQtNC4wXzEKK2xp YmF2dXRpbC5zby41NiBsaWJhdnV0aWw0LTQuMF8xCitsaWJhdmZpbHRlci5zby43IGxpYmF2Zmls dGVyNC00LjBfMQogbGliU0RMLTEuMi5zby4wIFNETC0xLjIuMTRfMQogbGliU0RMX2ltYWdlLTEu Mi5zby4wIFNETF9pbWFnZS0xLjIuMTBfMQogbGlieDI2NC5zby4xNTcgeDI2NC0yMDE5MDUwNy4y MjQ1XzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2ZWMucGF0Y2ggYi9z cmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA5YzU3MjAwNDYzMzIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9m aWxlcy9hbHRpdmVjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotcmV2ZXJ0 IHNvbWUgYWx0aXZlYyBzcGVjaWZpYyBjaGFuZ2Ugb24gYWxsIHBwYyogZXhjZXB0IHBwYzY0bGUq Ci0KLXE2NjogIldlIHNob3VsZCBhbHNvIHRocm93IGluIGEgcmV2ZXJ0IG9mIEZGbXBlZy9GRm1w ZWdAM2E1NTdjNSBidXQgb25seQotY29uZGl0aW9uYWxseSwgZm9yIHBwYyogYnV0IG5vdCBwcGM2 NGxlKiAodGhlIG5ldyBjb2RlIGlzIHZhbGlkIGZvcgotUE9XRVI4IFZTWCB3aGljaCBMRSB0YXJn ZXRzIGFzIGEgYmFzZWxpbmUgYnV0IG5vdCBCRSkiCi0KLQotVGhpcyByZXZlcnRzIGNvbW1pdCAz YTU1N2M1ZDg4YjdiMTViNTk1NGJhMjc0M2ZlYmIwNTU1NDliNTM2LgotLS0tCi0gbGlic3dzY2Fs ZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMgfCAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0KLSAx IGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAt LWdpdCBhL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jIGIvbGlic3dzY2FsZS9wcGMv eXV2MnJnYl9hbHRpdmVjLmMKLWluZGV4IDUzNjU0NTI5M2QuLmMxZTI4NTJhZGIgMTAwNjQ0Ci0t LS0gYS9saWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYwotKysrIGIvbGlic3dzY2FsZS9w cGMveXV2MnJnYl9hbHRpdmVjLmMKLUBAIC0zMDUsNiArMzA1LDkgQEAgc3RhdGljIGludCBhbHRp dmVjXyAjIyBuYW1lKFN3c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAg ICAgICAgXAotICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IFIxLCBHMSwgQjE7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHVuc2lnbmVkIGNo YXIgUiwgRywgQjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciAqeTFpdlAsICp5Mml2UCwgKnVpdlAsICp2aXZQOyAgICAgICAgICAgICAgICAgIFwKLSsgICAg dmVjdG9yIHVuc2lnbmVkIGNoYXIgYWxpZ25fcGVybTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3Ig c2lnbmVkIHNob3J0IGxDWSAgICAgICA9IGMtPkNZOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsT1kgICAgICAgPSBjLT5PWTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQg c2hvcnQgbENSViAgICAgID0gYy0+Q1JWOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotQEAgLTMzNSwxMyArMzM4LDI2IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFtZShT d3NDb250ZXh0ICpjLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKLSAgICAg ICAgIHZlY19kc3RzdChvdXRlLCAoMHgwMjAwMDAwMiB8ICgoKHcgKiAzICsgMzIpIC8gMzIpIDw8 IDE2KSksIDEpOyAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgZm9y IChqID0gMDsgaiA8IHcgLyAxNjsgaisrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLS0gICAgICAgICAgICB5MCA9IHZlY194bCgwLCB5MWkpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgeTFpdlAg PSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgeTFpOyAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgICAgICAgICAgIHkyaXZQID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICop IHkyaTsgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB1aXZQICA9IChjb25z dCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB1aTsgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICAgICAgICAgICAgdml2UCAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdmk7ICAg ICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAg ICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgeTFpKTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgeTAgPSAodmVjdG9yIHVuc2lnbmVkIGNoYXIp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAg ICAgICAgIHZlY19wZXJtKHkxaXZQWzBdLCB5MWl2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAg ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgeTEgPSB2ZWNf eGwoMCwgeTJpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MmkpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MSA9ICh2ZWN0b3IgdW5z aWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAg ICAgICAgICAgICAgICAgICAgdmVjX3Blcm0oeTJpdlBbMF0sIHkyaXZQWzFdLCBhbGlnbl9wZXJt KTsgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAg ICB1ID0gKHZlY3RvciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHVpKTsgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0rICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHVpKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHUgPSAo dmVjdG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHVpdlBbMF0sIHVpdlBbMV0sIGFs aWduX3Blcm0pOyAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot LSAgICAgICAgICAgIHYgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdmkpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2 c2woMCwgdmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAg ICAgICAgdiA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odml2UFswXSwg dml2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAg dmVjX3N1Yih1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLS0tIAotMi4yNy4wCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJt djV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL2FybXY1 dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5 YTU1MTc4Yzc0ZjAuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL2Fy bXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBA QAotLS0tIGEvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTEwLTI2IDIxOjAzOjAzLjAw MDAwMDAwMCArMDIwMAotKysrIGIvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTExLTIx IDExOjA2OjQ5LjYwMjI4NDQyMiArMDEwMAotQEAgLTM5LDYgKzM5LDE1IEBACi0gI2VuZGlmCi0g I2luY2x1ZGUgPGZlbnYuaD4KLSAKLSsjaWYgKEZFX0FMTF9FWENFUFQgPT0gMCkKLSsvKiBFLmcu IEFSTSBzb2Z0IGZsb2F0IGRvZXMgbm90IGRlZmluZSB0aGVzZSAqLwotKyNkZWZpbmUgRkVfSU5W QUxJRCAgICAwCi0rI2RlZmluZSBGRV9ESVZCWVpFUk8gIDAKLSsjZGVmaW5lIEZFX09WRVJGTE9X ICAgMAotKyNkZWZpbmUgRkVfVU5ERVJGTE9XICAwCi0rI2RlZmluZSBGRV9JTkVYQUNUICAgIDAK LSsjZW5kaWYKLSsKLSAjaWYgQ09ORklHX0xJQkZPTlRDT05GSUcKLSAjaW5jbHVkZSA8Zm9udGNv bmZpZy9mb250Y29uZmlnLmg+Ci0gI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZy9w YXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaCBiL3NyY3BrZ3Mv ZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGUzZjY4YTQxNWIuLjAwMDAwMDAwMDAwMAot LS0gYS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBp LWJ1Zy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gODExZDI5MDg0 NDIwNmZjNzNkYzM5YzNlNWI2N2Q1ZDg5NWJhZWRmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IFJhaW5lciBIb2NoZWNrZXIgPGZlcm5ldG1lbnRhQG9ubGluZS5kZT4KLURhdGU6IFNh dCwgMjYgSmFuIDIwMTkgMTk6NDg6MzUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy92 YWFwaV9oMjY0OiBza2lwIGRlY29kZSBpZiBwaWMgaGFzIG5vIHNsaWNlcwotCi1UaGlzIGZpeGVz IC8gd29ya2Fyb3VuZHMgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9MTA1MzY4LgotSXQgd2FzIGhpdCBmcmVxdWVudGx5IHdoZW4gd2F0Y2hpbmcgaDI2NCBjaGFu bmVscyByZWNlaXZlZCB2aWEgRFZCLVguCi1Db3JyZXNwb25kaW5nIGtvZGkgYnVnOiBodHRwczov L2dpdGh1Yi5jb20veGJtYy94Ym1jL2lzc3Vlcy8xNTcwNAotLS0tCi0gbGliYXZjb2RlYy92YWFw aV9oMjY0LmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1k aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMgYi9saWJhdmNvZGVjL3ZhYXBpX2gy NjQuYwotaW5kZXggNTg1NDU4N2EyNTUuLmYxMmZkYzQ1N2E0IDEwMDY0NAotLS0tIGEvbGliYXZj b2RlYy92YWFwaV9oMjY0LmMKLSsrKyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCi1AQCAtMzE3 LDYgKzMxNywxMSBAQCBzdGF0aWMgaW50IHZhYXBpX2gyNjRfZW5kX2ZyYW1lKEFWQ29kZWNDb250 ZXh0ICphdmN0eCkKLSAgICAgSDI2NFNsaWNlQ29udGV4dCAqc2wgPSAmaC0+c2xpY2VfY3R4WzBd OwotICAgICBpbnQgcmV0OwotIAotKyAgICBpZiAocGljLT5uYl9zbGljZXMgPT0gMCkgewotKyAg ICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsgICAgICAgIGdvdG8gZmluaXNoOwot KyAgICB9Ci0rCi0gICAgIHJldCA9IGZmX3ZhYXBpX2RlY29kZV9pc3N1ZShhdmN0eCwgcGljKTsK LSAgICAgaWYgKHJldCA8IDApCi0gICAgICAgICBnb3RvIGZpbmlzaDsKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZmZtcGVnL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUKaW5kZXggYWEw NThhYWI5Y2E5Li5hMmM1ZDg3NTBkZDYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmZtcGVnL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVnL3RlbXBsYXRlCkBAIC0xLDE1ICsxLDE0IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdmZm1wZWcnCiAjIGF1ZGFjaXR5IGFsc28gbmVlZHMgdG8gYmUgYnVt cGVkIHdoZW4gYSBuZXcgZmZtcGVnIHZlcnNpb24gYnVtcHMgbGliYXZmb3JtYXQncyBzb25hbWUh Ci1wa2duYW1lPWZmbXBlZwotdmVyc2lvbj00LjQuNAotcmV2aXNpb249MgordmVyc2lvbj02LjAK K3JldmlzaW9uPTEKIHNob3J0X2Rlc2M9IkRlY29kaW5nLCBlbmNvZGluZyBhbmQgc3RyZWFtaW5n IHNvZnR3YXJlIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIK IGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cuZmZtcGVn Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0ZGbXBl Zy9GRm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly93d3cuZmZtcGVn Lm9yZy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1lODBiMzgw ZDU5NWM4MDkwNjBmNjZmOTZhNWQ4NDk1MTFlZjRhNzZhMjZiNzZlYWNmNTc3OGI5NGMzNTcwMzA5 CitjaGVja3N1bT01N2JlODdjMjJkOWI0OWMxMTJiNmQyNGJjNjdkNDI1MDg2NjBlNmI3MThiM2Ri ODljNDRlNDdlMjg5MTM3MDgyCiAKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBwZXJsIgog bWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxzYS1s aWItZGV2ZWwgbGliWGZpeGVzLWRldmVsCkBAIC0yNiwxMiArMjUsMTMgQEAgbWFrZWRlcGVuZHM9 InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGli WGZpeGVzLWRldmUKICAkKHZvcHRfaWYgd2VicCBsaWJ3ZWJwLWRldmVsKSAkKHZvcHRfaWYgc29m YSBsaWJteXNvZmEtZGV2ZWwpCiAgJCh2b3B0X2lmIGRybSBsaWJkcm0tZGV2ZWwpICQodm9wdF9p ZiBzdnRhdjEgbGlic3Z0LWF2MS1kZXZlbCkKICAkKHZvcHRfaWYgc3J0IHNydC1kZXZlbCkgJCh2 b3B0X2lmIHJpc3QgbGlicmlzdC1kZXZlbCkKLSAkKHZvcHRfaWYgdnVsa2FuICd2dWxrYW4tbG9h ZGVyIFZ1bGthbi1IZWFkZXJzJykKKyAkKHZvcHRfaWYgdnVsa2FuICd2dWxrYW4tbG9hZGVyIFZ1 bGthbi1IZWFkZXJzIFZ1bGthbi1Ub29scyBWdWxrYW4tVmFsaWRhdGlvbkxheWVycycpCisgJCh2 b3B0X2lmIG9uZXZwbCAnb25ldnBsIG9uZXZwbC1kZXZlbCcpCiAgJCh2b3B0X2lmIG52ZW5jIG52 LWNvZGVjLWhlYWRlcnMpICQodm9wdF9pZiBudmRlYyBudi1jb2RlYy1oZWFkZXJzKSIKIGRlcGVu ZHM9ImZmcGxheT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAogYnVpbGRfb3B0aW9ucz0ieDI2 NSB2NGwyIHZhYXBpIHZkcGF1IHZweCBmZGtfYWFjIGFvbSBudmVuYyBzbmRpbyBwdWxzZWF1ZGlv Ci0gZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZkZWMi CisgZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZkZWMg b25ldnBsIgogYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJ4MjY1IHY0bDIgdnB4IGFvbSBzbmRpbyBw dWxzZWF1ZGlvIGRhdjFkIHdlYnAgdnVsa2FuIGRybSBzcnQgcmlzdCIKIGRlc2Nfb3B0aW9uX3Ny dD0iRW5hYmxlIHN1cHBvcnQgZm9yIFNSVCAoU2VjdXJlLCBSZWxpYWJsZSwgVHJhbnNwb3J0KSIK IGRlc2Nfb3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBwb3J0IGZvciBSSVNUIChSZWxpYWJsZSBJbnRl cm5ldCBTdHJlYW0gVHJhbnNwb3J0KSIKQEAgLTM5LDEwICszOSw4IEBAIGRlc2Nfb3B0aW9uX3Nv ZmE9IkVuYWJsZSBzdXBwb3J0IGZvciBBRVMgU09GQSIKIGRlc2Nfb3B0aW9uX3dlYnA9IkVuYWJs ZSBzdXBwb3J0IGZvciBXZWJQIgogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQlp Njg2Knx4ODZfNjQqKQotCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIKLQkJYnVpbGRfb3B0aW9u c19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52ZGVjIgotCQk7OworCWk2ODYqKSBidWls ZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbnZlbmMgbnZkZWMiOzsKKwl4ODZfNjQq KSBidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbnZlbmMgbnZkZWMgb25ldnBs Ijs7CiAJcHBjNjQqKSBidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUiOzsKIAlt aXBzKikgQ0ZMQUdTPSItbW5hbj1sZWdhY3kiOzsKIGVzYWMKQEAgLTExOSwxOCArMTE3LDE5IEBA IGRvX2NvbmZpZ3VyZSgpIHsKIAkJJCh2b3B0X2VuYWJsZSB4MjY1IGxpYngyNjUpIFwKIAkJJCh2 b3B0X2VuYWJsZSB2NGwyIGxpYnY0bDIpIFwKIAkJJCh2b3B0X2VuYWJsZSBhb20gbGliYW9tKSAk KHZvcHRfZW5hYmxlIHZhYXBpKSAkKHZvcHRfZW5hYmxlIHZkcGF1KSBcCi0JCS0tZW5hYmxlLWxp YmJzMmIgLS1lbmFibGUtYXZyZXNhbXBsZSAtLWVuYWJsZS1saWJ2aWRzdGFiIFwKKwkJLS1lbmFi bGUtbGliYnMyYiAtLWVuYWJsZS1saWJ2aWRzdGFiIFwKIAkJJCh2b3B0X2VuYWJsZSBkYXYxZCBs aWJkYXYxZCkgXAogCQkkKHZvcHRfZW5hYmxlIHppbWcgbGliemltZykgXAogCQkkKHZvcHRfZW5h YmxlIHdlYnAgbGlid2VicCkgXAogCQkkKHZvcHRfZW5hYmxlIHNvZmEgbGlibXlzb2ZhKSBcCiAJ CSQodm9wdF9lbmFibGUgdnVsa2FuKSBcCisJCSQodm9wdF9lbmFibGUgb25ldnBsIGxpYnZwbCkg XAogCQkkKHZvcHRfZW5hYmxlIGRybSBsaWJkcm0pIFwKIAkJJCh2b3B0X2VuYWJsZSBzdnRhdjEg bGlic3Z0YXYxKSBcCiAJCSQodm9wdF9lbmFibGUgc3J0IGxpYnNydCkgXAogCQkkKHZvcHRfZW5h YmxlIHJpc3QgbGlicmlzdCkgXAotCQkkKHZvcHRfaWYgbnZlbmMgJy0tZW5hYmxlLW52ZW5jJykg XAotCQkkKHZvcHRfaWYgbnZkZWMgJy0tZW5hYmxlLW52ZGVjJykKKwkJJCh2b3B0X2VuYWJsZSBu dmVuYyBudmVuYykgXAorCQkkKHZvcHRfZW5hYmxlIG52ZGVjIG52ZGVjKQogfQogCiBkb19idWls ZCgpIHsKQEAgLTE1NywxMCArMTU2LDggQEAgbGliYXZkZXZpY2VfcGFja2FnZSgpIHsKIH0KIAog bGliYXZyZXNhbXBsZV9wYWNrYWdlKCkgewotCXNob3J0X2Rlc2M9IkZGbXBlZyBhdWRpbyByZXNh bXBsaW5nIGxpYnJhcnkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmF2 cmVzYW1wbGUuc28uKiIKLQl9CisJc2hvcnRfZGVzYz0iUGFja2FnZSBkZXByZWNhdGVkLCByZW1v dmFsIG5lZWRlZCIKKwlidWlsZF9zdHlsZT1tZXRhCiB9CiAKIGxpYmF2Zm9ybWF0X3BhY2thZ2Uo KSB7CkBAIC0yMTQsMTUgKzIxMSw5IEBAIGZmbXBlZy1kZXZlbF9wYWNrYWdlKCkgewogCQlsaWJh dmZpbHRlcj49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQlsaWJwb3N0cHJvYz49JHt2ZXJzaW9u fV8ke3JldmlzaW9ufQogCQlsaWJzd3NjYWxlPj0ke3ZlcnNpb259XyR7cmV2aXNpb259Ci0JCWxp YnN3cmVzYW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KLQkJbGliYXZyZXNhbXBsZT49JHt2 ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwkJbGlic3dyZXNhbXBsZT49JHt2ZXJzaW9ufV8ke3Jldmlz aW9ufSIKIAlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCi0KLQlpZiBbICIkWEJQ U19UQVJHRVRfTUFDSElORSIgPSAiaTY4NiIgXTsgdGhlbgotCQkjIC91c3IvYmluL3N0cmlwOiBl cnJvcjogdGhlIGlucHV0IGZpbGUgJy9kZXN0ZGlyLy9mZm1wZWctZGV2ZWwtNC40LjQvdXNyL2xp Yi9saWJhdmZpbHRlci5hKHZmX2F0YWRlbm9pc2UubyknIGhhcyBubyBzZWN0aW9ucwotCQlub3N0 cmlwX2ZpbGVzPSIvdXNyL2xpYi9saWJhdmZpbHRlci5hIgotCWZpCi0KKwljb25mbGljdHM9ImZm bXBlZzQtZGV2ZWwiCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9pbmNsdWRlCiAJCXZt b3ZlIHVzci9saWIvcGtnY29uZmlnCgpGcm9tIGRiMjBmMDZiYWFhNmIxZjdlNjA4MmRmYjFhM2Rm YjVmNGJiYzA2ZDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTY6MjIgLTA0MDAKU3ViamVj dDogW1BBVENIIDAwMi8xMTNdIE5ldyBwYWNrYWdlOiBmZm1wZWc0LTQuNC40LgoKLS0tCiBzcmNw a2dzL2ZmbXBlZzQtZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtn cy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2ggICAgICAgICAgIHwgIDYwICsrKysrCiAuLi4v cGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAgMTggKysKIC4uLmgt bGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiB8ICA0MCArKysKIC4uLi93 b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8ICAyOCArKwogc3JjcGtn cy9mZm1wZWc0L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgIHwgMjQwICsrKysrKysrKysr KysrKysrKwogc3JjcGtncy9saWJhdmNvZGVjNCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyY3BrZ3MvbGliYXZkZXZpY2U0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MSArCiBzcmNwa2dzL2xpYmF2ZmlsdGVyNCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjcGtncy9saWJhdmZvcm1hdDQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyY3BrZ3MvbGliYXZyZXNhbXBsZTQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmNwa2dzL2xpYmF2dXRpbDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj cGtncy9saWJwb3N0cHJvYzQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3Br Z3MvbGlic3dyZXNhbXBsZTQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dz L2xpYnN3c2NhbGU0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogMTUgZmlsZXMg Y2hhbmdlZCwgMzk2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2Zm bXBlZzQtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0 aXZlYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL2Fy bXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9m Zm1wZWc0L3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQu ZGlmZgogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91 bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZmZtcGVnNC90ZW1wbGF0ZQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZjb2Rl YzQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2ZGV2aWNlNAogY3JlYXRlIG1vZGUg MTIwMDAwIHNyY3BrZ3MvbGliYXZmaWx0ZXI0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9s aWJhdmZvcm1hdDQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2cmVzYW1wbGU0CiBj cmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdnV0aWw0CiBjcmVhdGUgbW9kZSAxMjAwMDAg c3JjcGtncy9saWJwb3N0cHJvYzQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYnN3cmVz YW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJzd3NjYWxlNAoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbCBiL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbApuZXcgZmls ZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbApAQCAtMCwwICsxIEBACitmZm1wZWc0Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L2Zp bGVzL2FsdGl2ZWMucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjljNTcyMDA0NjMzMgotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNoCkBAIC0w LDAgKzEsNjAgQEAKK3JldmVydCBzb21lIGFsdGl2ZWMgc3BlY2lmaWMgY2hhbmdlIG9uIGFsbCBw cGMqIGV4Y2VwdCBwcGM2NGxlKgorCitxNjY6ICJXZSBzaG91bGQgYWxzbyB0aHJvdyBpbiBhIHJl dmVydCBvZiBGRm1wZWcvRkZtcGVnQDNhNTU3YzUgYnV0IG9ubHkKK2NvbmRpdGlvbmFsbHksIGZv ciBwcGMqIGJ1dCBub3QgcHBjNjRsZSogKHRoZSBuZXcgY29kZSBpcyB2YWxpZCBmb3IKK1BPV0VS OCBWU1ggd2hpY2ggTEUgdGFyZ2V0cyBhcyBhIGJhc2VsaW5lIGJ1dCBub3QgQkUpIgorCisKK1Ro aXMgcmV2ZXJ0cyBjb21taXQgM2E1NTdjNWQ4OGI3YjE1YjU5NTRiYTI3NDNmZWJiMDU1NTQ5YjUz Ni4KKy0tLQorIGxpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jIHwgMjQgKysrKysrKysr KysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDQgZGVs ZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMu YyBiL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCitpbmRleCA1MzY1NDUyOTNkLi5j MWUyODUyYWRiIDEwMDY0NAorLS0tIGEvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMK KysrKyBiL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCitAQCAtMzA1LDYgKzMwNSw5 IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFtZShTd3NDb250ZXh0ICpjLCBjb25zdCB1bnNp Z25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKKyAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBSMSwg RzEsIEIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg IHZlY3RvciB1bnNpZ25lZCBjaGFyIFIsIEcsIEI7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgY29uc3Qg dmVjdG9yIHVuc2lnbmVkIGNoYXIgKnkxaXZQLCAqeTJpdlAsICp1aXZQLCAqdml2UDsgICAgICAg ICAgICAgICAgICBcCisrICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIGFsaWduX3Blcm07ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsQ1kgICAgICAgPSBjLT5DWTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIHZlY3RvciBzaWduZWQgc2hvcnQg bE9ZICAgICAgID0gYy0+T1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor ICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxDUlYgICAgICA9IGMtPkNSVjsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0zMzUsMTMgKzMzOCwyNiBAQCBzdGF0aWMgaW50 IGFsdGl2ZWNfICMjIG5hbWUoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmlu LCAgICAgICAgICBcCisgICAgICAgICB2ZWNfZHN0c3Qob3V0ZSwgKDB4MDIwMDAwMDIgfCAoKCh3 ICogMyArIDMyKSAvIDMyKSA8PCAxNikpLCAxKTsgICAgICAgXAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgIGZvciAoaiA9IDA7IGogPCB3IC8gMTY7IGorKykgeyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgeTAgPSB2ZWNfeGwo MCwgeTFpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor KyAgICAgICAgICAgIHkxaXZQID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHkxaTsg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB5Mml2UCA9IChjb25zdCB2ZWN0 b3IgdW5zaWduZWQgY2hhciAqKSB5Mmk7ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAg ICAgICAgdWl2UCAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdWk7ICAgICAgICAg ICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHZpdlAgID0gKGNvbnN0IHZlY3RvciB1bnNp Z25lZCBjaGFyICopIHZpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisrICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkxaSk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkwID0gKHZl Y3RvciB1bnNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKysgICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh5MWl2UFswXSwgeTFpdlBbMV0sIGFs aWduX3Blcm0pOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAg ICAgICAgICAgIHkxID0gdmVjX3hsKDAsIHkyaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2wo MCwgeTJpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAg ICAgeTEgPSAodmVjdG9yIHVuc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHkyaXZQWzBdLCB5 Mml2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCistICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB1 aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIGFsaWduX3Blcm0g PSB2ZWNfbHZzbCgwLCB1aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh1 aXZQWzBdLCB1aXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB2ID0gKHZlY3RvciBzaWduZWQgY2hhcikg dmVjX3hsKDAsIHZpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAg YWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHZpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorKyAgICAgICAgICAgIHYgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAg IHZlY19wZXJtKHZpdlBbMF0sIHZpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAgICAgICAg ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgIHUgPSAodmVjdG9yIHNp Z25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgICAgICAgICAgICAgIHZlY19zdWIodSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCistLSAKKzIuMjcuMAorCmRpZmYgLS1naXQgYS9zcmNwa2dz L2ZmbXBlZzQvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCBiL3NyY3BrZ3Mv ZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWE1NTE3OGM3NGYwCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0 Y2gKQEAgLTAsMCArMSwxOCBAQAorLS0tIGEvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3 LTEwLTI2IDIxOjAzOjAzLjAwMDAwMDAwMCArMDIwMAorKysrIGIvbGliYXZmaWx0ZXIvdmZfZHJh d3RleHQuYwkyMDE3LTExLTIxIDExOjA2OjQ5LjYwMjI4NDQyMiArMDEwMAorQEAgLTM5LDYgKzM5 LDE1IEBACisgI2VuZGlmCisgI2luY2x1ZGUgPGZlbnYuaD4KKyAKKysjaWYgKEZFX0FMTF9FWENF UFQgPT0gMCkKKysvKiBFLmcuIEFSTSBzb2Z0IGZsb2F0IGRvZXMgbm90IGRlZmluZSB0aGVzZSAq LworKyNkZWZpbmUgRkVfSU5WQUxJRCAgICAwCisrI2RlZmluZSBGRV9ESVZCWVpFUk8gIDAKKysj ZGVmaW5lIEZFX09WRVJGTE9XICAgMAorKyNkZWZpbmUgRkVfVU5ERVJGTE9XICAwCisrI2RlZmlu ZSBGRV9JTkVYQUNUICAgIDAKKysjZW5kaWYKKysKKyAjaWYgQ09ORklHX0xJQkZPTlRDT05GSUcK KyAjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29uZmlnLmg+CisgI2VuZGlmCmRpZmYgLS1naXQg YS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9wYXRjaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5f Yml0X2Zvcm1hdC5kaWZmIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvcGF0Y2gtbGliYXZjb2Rl Yy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLmFhOTQ4ZjdhOGEyZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mv ZmZtcGVnNC9wYXRjaGVzL3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0YXYxLXRlbl9iaXRfZm9ybWF0 LmRpZmYKQEAgLTAsMCArMSw0MCBAQAorIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisjIEZyb20gMDMxZjE1NjFjZDI4NjU5NmNkYjM3NGRhMzJmOGFhODE2Y2UzYjEz NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKKyMgRnJvbTogQ2hyaXN0b3BoZXIgRGVnYXdhIDxj aHJpc3RvcGhlci5kZWdhd2FAaW50ZWwuY29tPgorIyBEYXRlOiBUaHUsIDIwIE9jdCAyMDIyIDIy OjU1OjI3IC0wNTAwCisjIFN1YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy9saWJzdnRhdjE6IHJlbW92 ZSBjb21wcmVzc2VkX3Rlbl9iaXRfZm9ybWF0IGFuZCBzaW1wbGlmeSBhbGxvY19idWZmZXIKKyMK KyMgY29tcHJlc3NlZF90ZW5fYml0X2Zvcm1hdCBoYXMgYmVlbiBkZXByZWNhdGVkIHVwc3RyZWFt IGFuZCBoYXMgbm8gZWZmZWN0CisjIGFuZCBjYW4gYmUgcmVtb3ZlZC4gUGx1cywgdGVjaG5pY2Fs bHkgaXQgd2FzIG5ldmVyIHVzZWQgaW4gdGhlIGZpcnN0IHBsYWNlCisjIHNpbmNlIGl0IHdvdWxk IHJlcXVpcmUgdGhlIGFwcCAoZmZtcGVnKSB0byBzZXQgaXQgYW5kIGRvIGFkZGl0aW9uYWwKKyMg cHJvY2Vzc2luZyBvZiB0aGUgaW5wdXQgZnJhbWVzLgorIworIyBBbHNvIHNpbXBsaWZ5IGFsbG9j X2J1ZmZlciBieSByZW1vdmluZyBjYWxjdWxhdGlvbnMgcmVsYXRpbmcgdG8gdGhlIG5vbi1leGlz dGFudCBwcm9jZXNzaW5nLgorIworIyBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBEZWdhd2Eg PGNocmlzdG9waGVyLmRlZ2F3YUBpbnRlbC5jb20+CisjPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBhL2xpYmF2Y29kZWMvbGlic3Z0YXYxLmMKKysrKyBiL2xp YmF2Y29kZWMvbGlic3Z0YXYxLmMKK0BAIC0xMjQsMTYgKzEyNCwxMiBAQCBzdGF0aWMgaW50IHN2 dF9wcmludF9lcnJvcih2b2lkICpsb2dfY3R4LCBFYkVycm9yVHlwZSBlcnIsCisgCisgc3RhdGlj IGludCBhbGxvY19idWZmZXIoRWJTdnRBdjFFbmNDb25maWd1cmF0aW9uICpjb25maWcsIFN2dENv bnRleHQgKnN2dF9lbmMpCisgeworLSAgICBjb25zdCBpbnQgICAgcGFja19tb2RlXzEwYml0ID0K Ky0gICAgICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCkgJiYgKGNvbmZpZy0+Y29t cHJlc3NlZF90ZW5fYml0X2Zvcm1hdCA9PSAwKSA/IDEgOiAwOworLSAgICBjb25zdCBzaXplX3Qg bHVtYV9zaXplXzhiaXQgID0KKy0gICAgICAgIGNvbmZpZy0+c291cmNlX3dpZHRoICogY29uZmln LT5zb3VyY2VfaGVpZ2h0ICogKDEgPDwgcGFja19tb2RlXzEwYml0KTsKKy0gICAgY29uc3Qgc2l6 ZV90IGx1bWFfc2l6ZV8xMGJpdCA9CistICAgICAgICAoY29uZmlnLT5lbmNvZGVyX2JpdF9kZXB0 aCA+IDggJiYgcGFja19tb2RlXzEwYml0ID09IDApID8gbHVtYV9zaXplXzhiaXQgOiAwOworKyAg ICBjb25zdCBzaXplX3QgbHVtYV9zaXplID0gY29uZmlnLT5zb3VyY2Vfd2lkdGggKiBjb25maWct PnNvdXJjZV9oZWlnaHQgKgorKyAgICAgICAgKGNvbmZpZy0+ZW5jb2Rlcl9iaXRfZGVwdGggPiA4 ID8gMiA6IDEpOworIAorICAgICBFYlN2dElPRm9ybWF0ICppbl9kYXRhOworIAorLSAgICBzdnRf ZW5jLT5yYXdfc2l6ZSA9IChsdW1hX3NpemVfOGJpdCArIGx1bWFfc2l6ZV8xMGJpdCkgKiAzIC8g MjsKKysgICAgc3Z0X2VuYy0+cmF3X3NpemUgPSBsdW1hX3NpemUgKiAzIC8gMjsKKyAKKyAgICAg Ly8gYWxsb2NhdGUgYnVmZmVyIGZvciBpbiBhbmQgb3V0CisgICAgIHN2dF9lbmMtPmluX2J1ZiAg ICAgICAgICAgPSBhdl9tYWxsb2N6KHNpemVvZigqc3Z0X2VuYy0+aW5fYnVmKSk7CistLSAKK0dp dExhYgorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3JrYXJvdW5kLW1l c2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3Jr YXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi4wMGUzZjY4YTQxNWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0 Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA4MTFkMjkwODQ0MjA2ZmM3M2RjMzljM2U1YjY3ZDVk ODk1YmFlZGY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmFpbmVyIEhvY2hlY2tl ciA8ZmVybmV0bWVudGFAb25saW5lLmRlPgorRGF0ZTogU2F0LCAyNiBKYW4gMjAxOSAxOTo0ODoz NSArMDEwMAorU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL3ZhYXBpX2gyNjQ6IHNraXAgZGVjb2Rl IGlmIHBpYyBoYXMgbm8gc2xpY2VzCisKK1RoaXMgZml4ZXMgLyB3b3JrYXJvdW5kcyBodHRwczov L2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUzNjguCitJdCB3YXMgaGl0 IGZyZXF1ZW50bHkgd2hlbiB3YXRjaGluZyBoMjY0IGNoYW5uZWxzIHJlY2VpdmVkIHZpYSBEVkIt WC4KK0NvcnJlc3BvbmRpbmcga29kaSBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS94Ym1jL3hibWMv aXNzdWVzLzE1NzA0CistLS0KKyBsaWJhdmNvZGVjL3ZhYXBpX2gyNjQuYyB8IDUgKysrKysKKyAx IGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVj L3ZhYXBpX2gyNjQuYyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCitpbmRleCA1ODU0NTg3YTI1 NS4uZjEyZmRjNDU3YTQgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYworKysr IGIvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKK0BAIC0zMTcsNiArMzE3LDExIEBAIHN0YXRpYyBp bnQgdmFhcGlfaDI2NF9lbmRfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQorICAgICBIMjY0 U2xpY2VDb250ZXh0ICpzbCA9ICZoLT5zbGljZV9jdHhbMF07CisgICAgIGludCByZXQ7CisgCisr ICAgIGlmIChwaWMtPm5iX3NsaWNlcyA9PSAwKSB7CisrICAgICAgICByZXQgPSBBVkVSUk9SX0lO VkFMSUREQVRBOworKyAgICAgICAgZ290byBmaW5pc2g7CisrICAgIH0KKysKKyAgICAgcmV0ID0g ZmZfdmFhcGlfZGVjb2RlX2lzc3VlKGF2Y3R4LCBwaWMpOworICAgICBpZiAocmV0IDwgMCkKKyAg ICAgICAgIGdvdG8gZmluaXNoOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRl IGIvc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uZjJjODUxNjkzZDM2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1w ZWc0L3RlbXBsYXRlCkBAIC0wLDAgKzEsMjQwIEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1w ZWc0JworIyBhdWRhY2l0eSBhbHNvIG5lZWRzIHRvIGJlIGJ1bXBlZCB3aGVuIGEgbmV3IGZmbXBl ZyB2ZXJzaW9uIGJ1bXBzIGxpYmF2Zm9ybWF0J3Mgc29uYW1lIQorcGtnbmFtZT1mZm1wZWc0Cit2 ZXJzaW9uPTQuNC40CityZXZpc2lvbj0xCitzaG9ydF9kZXNjPSJEZWNvZGluZywgZW5jb2Rpbmcg YW5kIHN0cmVhbWluZyBzb2Z0d2FyZSAtIGZmbXBlZzQgbGlicmFyaWVzIG9ubHkiCittYWludGFp bmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgorbGljZW5zZT0iR1BMLTMuMC1v ci1sYXRlciIKK2hvbWVwYWdlPSJodHRwczovL3d3dy5mZm1wZWcub3JnIgorY2hhbmdlbG9nPSJo dHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vRkZtcGVnL0ZGbXBlZy9tYXN0ZXIvQ2hh bmdlbG9nIgorZGlzdGZpbGVzPSJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzL2ZmbXBl Zy0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNrc3VtPWU4MGIzODBkNTk1YzgwOTA2MGY2NmY5NmE1 ZDg0OTUxMWVmNGE3NmEyNmI3NmVhY2Y1Nzc4Yjk0YzM1NzAzMDkKKworaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIHBlcmwiCittYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBm cmVldHlwZS1kZXZlbCBhbHNhLWxpYi1kZXZlbCBsaWJYZml4ZXMtZGV2ZWwKKyBsaWJYZXh0LWRl dmVsIGxpYlh2TUMtZGV2ZWwgbGlieGNiLWRldmVsIGxhbWUtZGV2ZWwgbGlidGhlb3JhLWRldmVs CisgbGlidm9yYmlzLWRldmVsIHgyNjQtZGV2ZWwgeHZpZGNvcmUtZGV2ZWwgamFjay1kZXZlbCBT REwyLWRldmVsCisgbGliY2Rpby1wYXJhbm9pYS1kZXZlbCBsaWJydG1wLWRldmVsIGxpYm1vZHBs dWctZGV2ZWwgZ251dGxzLWRldmVsCisgc3BlZXgtZGV2ZWwgY2VsdC1kZXZlbCBoYXJmYnV6ei1k ZXZlbCBsaWJhc3MtZGV2ZWwgb3B1cy1kZXZlbCBvY2wtaWNkLWRldmVsCisgbGliYnMyYi1kZXZl bCBsaWJ2aWRzdGFiLWRldmVsIHZtYWYtZGV2ZWwgJCh2b3B0X2lmIHB1bHNlYXVkaW8gcHVsc2Vh dWRpby1kZXZlbCkKKyAkKHZvcHRfaWYgdmFhcGkgbGlidmEtZGV2ZWwpICQodm9wdF9pZiB2ZHBh dSBsaWJ2ZHBhdS1kZXZlbCkKKyAkKHZvcHRfaWYgeDI2NSB4MjY1LWRldmVsKSAkKHZvcHRfaWYg djRsMiB2NGwtdXRpbHMtZGV2ZWwpCisgJCh2b3B0X2lmIGZka19hYWMgZmRrLWFhYy1kZXZlbCkg JCh2b3B0X2lmIHZweCBsaWJ2cHgtZGV2ZWwpCisgJCh2b3B0X2lmIGFvbSBsaWJhb20tZGV2ZWwp ICQodm9wdF9pZiBzbmRpbyBzbmRpby1kZXZlbCkKKyAkKHZvcHRfaWYgZGF2MWQgbGliZGF2MWQt ZGV2ZWwpICQodm9wdF9pZiB6aW1nIHppbWctZGV2ZWwpCisgJCh2b3B0X2lmIHdlYnAgbGlid2Vi cC1kZXZlbCkgJCh2b3B0X2lmIHNvZmEgbGlibXlzb2ZhLWRldmVsKQorICQodm9wdF9pZiBkcm0g bGliZHJtLWRldmVsKSAkKHZvcHRfaWYgc3Z0YXYxIGxpYnN2dC1hdjEtZGV2ZWwpCisgJCh2b3B0 X2lmIHNydCBzcnQtZGV2ZWwpICQodm9wdF9pZiByaXN0IGxpYnJpc3QtZGV2ZWwpCisgJCh2b3B0 X2lmIHZ1bGthbiAndnVsa2FuLWxvYWRlciBWdWxrYW4tSGVhZGVycycpCisgJCh2b3B0X2lmIG1m eCAnbGlibWZ4IGxpYm1meC1kZXZlbCcpCisgJCh2b3B0X2lmIG52ZW5jIG52LWNvZGVjLWhlYWRl cnMpICQodm9wdF9pZiBudmRlYyBudi1jb2RlYy1oZWFkZXJzKSIKKworYnVpbGRfb3B0aW9ucz0i eDI2NSB2NGwyIHZhYXBpIHZkcGF1IHZweCBmZGtfYWFjIGFvbSBudmVuYyBzbmRpbyBwdWxzZWF1 ZGlvCisgZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZk ZWMgbWZ4IgorYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJ4MjY1IHY0bDIgdnB4IGFvbSBzbmRpbyBw dWxzZWF1ZGlvIGRhdjFkIHdlYnAgdnVsa2FuIGRybSBzcnQgcmlzdCIKKworZGVzY19vcHRpb25f c3J0PSJFbmFibGUgc3VwcG9ydCBmb3IgU1JUIChTZWN1cmUsIFJlbGlhYmxlLCBUcmFuc3BvcnQp IgorZGVzY19vcHRpb25fcmlzdD0iRW5hYmxlIHN1cHBvcnQgZm9yIFJJU1QgKFJlbGlhYmxlIElu dGVybmV0IFN0cmVhbSBUcmFuc3BvcnQpIgorZGVzY19vcHRpb25fc29mYT0iRW5hYmxlIHN1cHBv cnQgZm9yIEFFUyBTT0ZBIgorZGVzY19vcHRpb25fd2VicD0iRW5hYmxlIHN1cHBvcnQgZm9yIFdl YlAiCisKK2Nhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCWk2ODYqKQorCQkJaG9zdG1h a2VkZXBlbmRzKz0iIG5hc20iCisJCQlidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRw YXUgbnZlbmMgbnZkZWMiCisJCQk7OworCXg4Nl82NCopCisJCQlob3N0bWFrZWRlcGVuZHMrPSIg bmFzbSIKKwkJCWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSBtZnggbnZlbmMg bnZkZWMiCisJCQk7OworCXBwYzY0KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZk cGF1Ijs7CisJbWlwcyopIENGTEFHUz0iLW1uYW49bGVnYWN5Ijs7Citlc2FjCisKK2lmIFsgIiRY QlBTX1RBUkdFVF9XT1JEU0laRSIgIT0gIjMyIiBdOyB0aGVuCisJYnVpbGRfb3B0aW9uc19kZWZh dWx0Kz0iIHN2dGF2MSIKK2ZpCisKK2lmIFsgIiRYQlBTX1RBUkdFVF9OT19BVE9NSUM4IiBdOyB0 aGVuCisJbWFrZWRlcGVuZHMrPSIgbGliYXRvbWljLWRldmVsIgorZmkKKworX2FwcGx5X3BhdGNo KCkgeworCWxvY2FsIGFyZ3M9IiQxIiBwbmFtZT0iJChiYXNlbmFtZSAkMikiCisKKwlpZiBbICEg LWYgIi4ke3BuYW1lfV9kb25lIiBdOyB0aGVuCisJCXBhdGNoIC1OICRhcmdzIC1pICQyCisJCXRv dWNoIC4ke3BuYW1lfV9kb25lCisJZmkKK30KKworcG9zdF9wYXRjaCgpIHsKKwljYXNlICIkWEJQ U19UQVJHRVRfTUFDSElORSIgaW4KKwkJcHBjNjRsZSopIDs7CisJCXBwYyopIF9hcHBseV9wYXRj aCAtcDEgJHtGSUxFU0RJUn0vYWx0aXZlYy5wYXRjaCA7OworCWVzYWMKKworCXZzZWQgLWkgbGli YXZmaWx0ZXIvdmZfbGlidm1hZi5jIC1lICdzIS91c3IvbG9jYWwvc2hhcmUvbW9kZWwvXCh2bWFm X3YwLjYuMVwpLnBrbCEvdXNyL3NoYXJlL3ZtYWYvXDEuanNvbiEnCit9CisKK2RvX2NvbmZpZ3Vy ZSgpIHsKKwkjIEZpeCBnY2Mgb24geDg2XzY0LW11c2wgb25seQorCWlmIFsgIiRYQlBTX1RBUkdF VF9NQUNISU5FIiA9ICJ4ODZfNjQtbXVzbCIgXTsgdGhlbgorCQl2c2VkIC1pIGNvbmZpZ3VyZSAt ZSAicztfY2ZsYWdzX3NwZWVkPSctTzMnO19jZmxhZ3Nfc3BlZWQ9Jy1PMic7IgorCWZpCisKKwlp ZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KKwkJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUi IGluCisJCQlhcm0qKSBfYXJjaD0iYXJtIjs7CisJCQlhYXJjaDY0KikgX2FyY2g9ImFhcmNoNjQi OzsKKwkJCW1pcHMqKSBfYXJjaD0ibWlwcyI7OworCQkJcHBjNjQqKSBfYXJjaD0icHBjNjQiOzsK KwkJCXBwYyopIF9hcmNoPSJwcGMiOzsKKwkJCSopIF9hcmNoPSIke1hCUFNfVEFSR0VUX01BQ0hJ TkUlJS1tdXNsfSI7OworCQllc2FjCisKKwkJX2FyZ3MrPSIgLS1lbmFibGUtY3Jvc3MtY29tcGls ZQorCQkJLS1zeXNyb290PSRYQlBTX0NST1NTX0JBU0UKKwkJCS0tY3Jvc3MtcHJlZml4PSR7WEJQ U19DUk9TU19UUklQTEVUfS0KKwkJCS0tdGFyZ2V0LW9zPWxpbnV4IC0tYXJjaD0ke19hcmNofSIK KwlmaQorCisJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXBwY3xwcGMtbXVzbCkg X2FyZ3MrPSIgLS1kaXNhYmxlLWFsdGl2ZWMiOzsKKwllc2FjCisKKwlpZiBbICIkWEJQU19UQVJH RVRfTk9fQVRPTUlDOCIgXTsgdGhlbgorCQlfYXJncys9IiAtLWV4dHJhLWxpYnM9LWxhdG9taWMi CisJZmkKKworCS4vY29uZmlndXJlIC0tcHJlZml4PS91c3IgLS1kaXNhYmxlLWRlYnVnIC0tZW5h YmxlLWdwbCAtLWVuYWJsZS1nbnV0bHMgXAorCQktLWRpc2FibGUtc3RyaXBwaW5nIFwKKwkJLS1l bmFibGUtbGliY2RpbyAtLWVuYWJsZS12ZXJzaW9uMyAtLWVuYWJsZS1ydW50aW1lLWNwdWRldGVj dCBcCisJCS0tZW5hYmxlLWxpYm1wM2xhbWUgLS1lbmFibGUtbGlidm9yYmlzIC0tZW5hYmxlLWxp Ynh2aWQgXAorCQktLWVuYWJsZS1saWJ4MjY0ICQodm9wdF9lbmFibGUgdnB4IGxpYnZweCkgLS1l bmFibGUtbGlidGhlb3JhIFwKKwkJLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXN0YXRpYyAtLWVu YWJsZS1saWJ4Y2IgXAorCQkkKHZvcHRfZW5hYmxlIHB1bHNlYXVkaW8gbGlicHVsc2UpIC0tZW5h YmxlLWxpYmZyZWV0eXBlIC0tZW5hYmxlLWxpYm1vZHBsdWcgXAorCQktLWVuYWJsZS1saWJzcGVl eCAtLWVuYWJsZS1saWJjZWx0IC0tZW5hYmxlLWxpYmFzcyBcCisJCS0tZW5hYmxlLWxpYm9wdXMg LS1lbmFibGUtbGlicnRtcCAtLWVuYWJsZS1saWJqYWNrIFwKKwkJJCh2b3B0X2lmIGZka19hYWMg Jy0tZW5hYmxlLW5vbmZyZWUgLS1lbmFibGUtbGliZmRrLWFhYycpIFwKKwkJLS1kaXNhYmxlLWxp Ym9wZW5jb3JlX2Ftcm5iIC0tZGlzYWJsZS1saWJvcGVuY29yZV9hbXJ3YiBcCisJCS0tZGlzYWJs ZS1saWJvcGVuanBlZyBcCisJCS0tZW5hYmxlLXBvc3Rwcm9jIC0tZW5hYmxlLW9wZW5jbCAke19h cmdzfSAtLWVuYWJsZS1saWJ2bWFmICR7X2FyZ3N9IFwKKwkJJCh2b3B0X2VuYWJsZSB4MjY1IGxp YngyNjUpIFwKKwkJJCh2b3B0X2VuYWJsZSB2NGwyIGxpYnY0bDIpIFwKKwkJJCh2b3B0X2VuYWJs ZSBhb20gbGliYW9tKSAkKHZvcHRfZW5hYmxlIHZhYXBpKSAkKHZvcHRfZW5hYmxlIHZkcGF1KSBc CisJCS0tZW5hYmxlLWxpYmJzMmIgLS1lbmFibGUtYXZyZXNhbXBsZSAtLWVuYWJsZS1saWJ2aWRz dGFiIFwKKwkJJCh2b3B0X2VuYWJsZSBkYXYxZCBsaWJkYXYxZCkgXAorCQkkKHZvcHRfZW5hYmxl IHppbWcgbGliemltZykgXAorCQkkKHZvcHRfZW5hYmxlIHdlYnAgbGlid2VicCkgXAorCQkkKHZv cHRfZW5hYmxlIHNvZmEgbGlibXlzb2ZhKSBcCisJCSQodm9wdF9lbmFibGUgdnVsa2FuKSBcCisJ CSQodm9wdF9lbmFibGUgZHJtIGxpYmRybSkgXAorCQkkKHZvcHRfZW5hYmxlIHN2dGF2MSBsaWJz dnRhdjEpIFwKKwkJJCh2b3B0X2VuYWJsZSBzcnQgbGlic3J0KSBcCisJCSQodm9wdF9lbmFibGUg cmlzdCBsaWJyaXN0KSBcCisJCSQodm9wdF9lbmFibGUgbWZ4IGxpYm1meCkgXAorCQkkKHZvcHRf aWYgbnZlbmMgJy0tZW5hYmxlLW52ZW5jJykgXAorCQkkKHZvcHRfaWYgbnZkZWMgJy0tZW5hYmxl LW52ZGVjJykKK30KKworZG9fYnVpbGQoKSB7CisJbWFrZSAke21ha2Vqb2JzfQorCW1ha2UgZG9j L2Zme21wZWcscGxheX0uMQorfQorCitkb19pbnN0YWxsKCkgeworCW1ha2UgREVTVERJUj0ke0RF U1RESVJ9IGluc3RhbGwgaW5zdGFsbC1tYW4KKwlybSAtcmYgJHtERVNURElSfS91c3IvYmluCit9 CisKK2xpYmF2Y29kZWM0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGNvZGVjIGxp YnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2Y29kZWMuc28u KiIKKwl9Cit9CisKK2xpYmF2ZGV2aWNlNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBl ZyBkZXZpY2UgaGFuZGxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVz ci9saWIvbGliYXZkZXZpY2Uuc28uKiIKKwl9Cit9CisKK2xpYmF2cmVzYW1wbGU0X3BhY2thZ2Uo KSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGF1ZGlvIHJlc2FtcGxpbmcgbGlicmFyeSIKKwlwa2df aW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZyZXNhbXBsZS5zby4qIgorCX0KK30K KworbGliYXZmb3JtYXQ0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGZpbGUgZm9y bWF0IGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2Zm9y bWF0LnNvLioiCisJfQorfQorCitsaWJhdnV0aWw0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0i RkZtcGVnIHV0aWxpdHkgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9s aWIvbGliYXZ1dGlsLnNvLioiCisJfQorfQorCitsaWJhdmZpbHRlcjRfcGFja2FnZSgpIHsKKwlz aG9ydF9kZXNjPSJGRm1wZWcgYXVkaW8vdmlkZW8gZmlsdGVyIGxpYnJhcnkiCisJcGtnX2luc3Rh bGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2ZmlsdGVyLnNvLioiCisJfQorfQorCitsaWJw b3N0cHJvYzRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgdmlkZW8gcG9zdHByb2Nl c3NpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGlicG9z dHByb2Muc28uKiIKKwl9Cit9CisKK2xpYnN3c2NhbGU0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVz Yz0iRkZtcGVnIHZpZGVvIHNjYWxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1v dmUgInVzci9saWIvbGlic3dzY2FsZS5zby4qIgorCX0KK30KKworbGlic3dyZXNhbXBsZTRfcGFj a2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgdmlkZW8gcmVzYW1wbGluZyBsaWJyYXJ5Igor CXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJzd3Jlc2FtcGxlLnNvLioiCisJ fQorfQorCitmZm1wZWc0LWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iCisJCWxpYmF2Y29k ZWM0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYmF2ZGV2aWNlND49JHt2ZXJzaW9ufV8k e3JldmlzaW9ufQorCQlsaWJhdmZvcm1hdDQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGli YXZ1dGlsND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdmZpbHRlcjQ+PSR7dmVyc2lv bn1fJHtyZXZpc2lvbn0KKwkJbGlicG9zdHByb2M0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJ CWxpYnN3c2NhbGU0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnN3cmVzYW1wbGU0Pj0k e3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYmF2cmVzYW1wbGU0Pj0ke3ZlcnNpb259XyR7cmV2 aXNpb259IgorCXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwljb25mbGljdHM9 ImZmbXBlZy1kZXZlbCIKKwlpZiBbICIkWEJQU19UQVJHRVRfTUFDSElORSIgPSAiaTY4NiIgXTsg dGhlbgorCQkjIC91c3IvYmluL3N0cmlwOiBlcnJvcjogdGhlIGlucHV0IGZpbGUgJy9kZXN0ZGly Ly9mZm1wZWctZGV2ZWwtNC40LjQvdXNyL2xpYi9saWJhdmZpbHRlci5hKHZmX2F0YWRlbm9pc2Uu byknIGhhcyBubyBzZWN0aW9ucworCQlub3N0cmlwX2ZpbGVzPSIvdXNyL2xpYi9saWJhdmZpbHRl ci5hIgorCWZpCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlCisJCXZtb3Zl IHVzci9saWIvcGtnY29uZmlnCisJCXZtb3ZlICJ1c3IvbGliLyouYSIKKwkJdm1vdmUgInVzci9s aWIvKi5zbyIKKwkJdm1vdmUgdXNyL3NoYXJlL2ZmbXBlZy9leGFtcGxlcworCQl2bW92ZSB1c3Iv c2hhcmUvbWFuL21hbjMKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2Y29kZWM0IGIv c3JjcGtncy9saWJhdmNvZGVjNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAw MDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZjb2RlYzQK QEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGliYXZkZXZpY2U0IGIvc3JjcGtncy9saWJhdmRldmljZTQKbmV3IGZp bGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2xpYmF2ZGV2aWNlNApAQCAtMCwwICsxIEBACitmZm1wZWc0Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmZpbHRl cjQgYi9zcmNwa2dzL2xpYmF2ZmlsdGVyNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAw MDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZm aWx0ZXI0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2Zm9ybWF0NCBiL3NyY3BrZ3MvbGliYXZmb3JtYXQ0 Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdmZvcm1hdDQKQEAgLTAsMCArMSBAQAorZmZt cGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGli YXZyZXNhbXBsZTQgYi9zcmNwa2dzL2xpYmF2cmVzYW1wbGU0Cm5ldyBmaWxlIG1vZGUgMTIwMDAw CmluZGV4IDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9saWJhdnJlc2FtcGxlNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdnV0aWw0IGIvc3JjcGtncy9s aWJhdnV0aWw0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uODg3ZjM1 NGU3YzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdnV0aWw0CkBAIC0wLDAgKzEg QEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNw a2dzL2xpYnBvc3Rwcm9jNCBiL3NyY3BrZ3MvbGlicG9zdHByb2M0Cm5ldyBmaWxlIG1vZGUgMTIw MDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9saWJwb3N0cHJvYzQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlic3dyZXNhbXBsZTQgYi9zcmNw a2dzL2xpYnN3cmVzYW1wbGU0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAw MC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJzd3Jlc2FtcGxl NApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9saWJzd3NjYWxlNCBiL3NyY3BrZ3MvbGlic3dzY2FsZTQKbmV3IGZp bGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2xpYnN3c2NhbGU0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpGcm9tIGU3NTg1N2FhOGYzOTllZWZhZmU4MGJiZWMz NTg5OGRkMDhmNDBhYmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6MDQgLTA0MDAKU3Vi amVjdDogW1BBVENIIDAwMy8xMTNdIG9wZW5jdjogdXBkYXRlIHRvIDQuNy4wLgoKLS0tCiBjb21t b24vc2hsaWJzICAgICAgICAgICB8IDEwNCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0tCiBzcmNwa2dzL29wZW5jdi90ZW1wbGF0ZSB8ICAgOCArKy0tCiAyIGZpbGVzIGNo YW5nZWQsIDU2IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Nv bW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IGE3NzM0NmNjZTNlOS4uY2EwZWUwNjYy MTVlIDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTIx MzYsNTggKzIxMzYsNTggQEAgbGliY2Fwc3RvbmUuc28uNCBjYXBzdG9uZS00LjBfMQogbGliaGF2 ZWdlLnNvLjIgbGliaGF2ZWdlZC0xLjkuMTFfMQogbGlibmloLnNvLjEgbGlibmloLTEuMC4zXzEK IGxpYm5paC1kYnVzLnNvLjEgbGlibmloLTEuMC4zXzEKLWxpYm9wZW5jdl9xdWFsaXR5LnNvLjQw NiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3JlZy5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9zdXJmYWNlX21hdGNoaW5nLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X3hwaG90by5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mcmVl dHlwZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mdXp6eS5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9oZnMuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3ZfaW1nX2hhc2guc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfbGlu ZV9kZXNjcmlwdG9yLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3NhbGllbmN5 LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N0cnVjdHVyZWRfbGlnaHQuc28u NDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfYXJ1Y28uc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3ZfYmdzZWdtLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X2Jpb2luc3BpcmVkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2NjYWxp Yi5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mYWNlLnNvLjQwNiBsaWJvcGVu Y3YtNC42LjBfMQotbGlib3BlbmN2X3RyYWNraW5nLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X3hmZWF0dXJlczJkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2 X29wdGZsb3cuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfeGltZ3Byb2Muc28u NDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcGxvdC5zby40MDYgbGlib3BlbmN2LTQu Ni4wXzEKLWxpYm9wZW5jdl90ZXh0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2 X21sLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X29iamRldGVjdC5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kbm4uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8x Ci1saWJvcGVuY3Zfc2hhcGUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3Rp dGNoaW5nLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3Bob3RvLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3ZpZGVvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X2NhbGliM2Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf ZmVhdHVyZXMyZC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mbGFubi5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9oaWdoZ3VpLnNvLjQwNiBsaWJvcGVuY3Yt NC42LjBfMQotbGlib3BlbmN2X3ZpZGVvaW8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJv cGVuY3ZfaW1nY29kZWNzLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ltZ3By b2Muc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfY29yZS5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zdXBlcnJlcy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl92aWRlb3N0YWIuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf Z2FwaS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94b2JqZGV0ZWN0LnNvLjQw NiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2RhdGFzZXRzLnNvLjQwNiBsaWJvcGVuY3Yt NC42LjBfMQotbGlib3BlbmN2X2Rubl9vYmpkZXRlY3Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8x Ci1saWJvcGVuY3ZfZG5uX3N1cGVycmVzLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X2RwbS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9waGFzZV91bndyYXBw aW5nLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N0ZXJlby5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9yYXBpZC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9pbnRlbnNpdHlfdHJhbnNmb3JtLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X2FscGhhbWF0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Jh cmNvZGUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfbWNjLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQorbGlib3BlbmN2X3F1YWxpdHkuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8x CitsaWJvcGVuY3ZfcmVnLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N1cmZh Y2VfbWF0Y2hpbmcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfeHBob3RvLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ZyZWV0eXBlLnNvLjQwNyBsaWJvcGVu Y3YtNC43LjBfMQorbGlib3BlbmN2X2Z1enp5LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X2hmcy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9pbWdfaGFzaC5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9saW5lX2Rlc2NyaXB0b3Iuc28uNDA3 IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfc2FsaWVuY3kuc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3Zfc3RydWN0dXJlZF9saWdodC5zby40MDcgbGlib3BlbmN2LTQuNy4w XzEKK2xpYm9wZW5jdl9hcnVjby5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9i Z3NlZ20uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYmlvaW5zcGlyZWQuc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfY2NhbGliLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X2ZhY2Uuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVu Y3ZfdHJhY2tpbmcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfeGZlYXR1cmVz MmQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfb3B0Zmxvdy5zby40MDcgbGli b3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl94aW1ncHJvYy5zby40MDcgbGlib3BlbmN2LTQuNy4w XzEKK2xpYm9wZW5jdl9wbG90LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3Rl eHQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfbWwuc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3Zfb2JqZGV0ZWN0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X2Rubi5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zaGFwZS5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zdGl0Y2hpbmcuc28uNDA3IGxpYm9w ZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfcGhvdG8uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfdmlkZW8uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfY2FsaWIz ZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mZWF0dXJlczJkLnNvLjQwNyBs aWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ZsYW5uLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X2hpZ2hndWkuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zf dmlkZW9pby5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9pbWdjb2RlY3Muc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfaW1ncHJvYy5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9jb3JlLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X3N1cGVycmVzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3ZpZGVvc3Rh Yi5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9nYXBpLnNvLjQwNyBsaWJvcGVu Y3YtNC43LjBfMQorbGlib3BlbmN2X3hvYmpkZXRlY3Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8x CitsaWJvcGVuY3ZfZGF0YXNldHMuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zf ZG5uX29iamRldGVjdC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9kbm5fc3Vw ZXJyZXMuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZHBtLnNvLjQwNyBsaWJv cGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3BoYXNlX3Vud3JhcHBpbmcuc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3Zfc3RlcmVvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X3JhcGlkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ludGVuc2l0 eV90cmFuc2Zvcm0uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYWxwaGFtYXQu c28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYmFyY29kZS5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9tY2Muc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCiBsaWJ1 bmljb25mLnNvLjQuNiB3dnN0cmVhbXMtNC42LjFfMjAKIGxpYnd2YmFzZS5zby40LjYgd3ZzdHJl YW1zLTQuNi4xXzIwCiBsaWJ3dnV0aWxzLnNvLjQuNiB3dnN0cmVhbXMtNC42LjFfMjAKZGlmZiAt LWdpdCBhL3NyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUK aW5kZXggNjljNjM1YjFhZDJiLi40MWYzMTgzZjE1ODIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3Bl bmN2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbmN2JwogcGtnbmFtZT1vcGVuY3YKLXZlcnNpb249 NC42LjAKLXJldmlzaW9uPTQKK3ZlcnNpb249NC43LjAKK3JldmlzaW9uPTEKIGNyZWF0ZV93cmtz cmM9eWVzCiBidWlsZF93cmtzcmM9JHtwa2duYW1lfS0ke3ZlcnNpb259CiBidWlsZF9zdHlsZT1j bWFrZQpAQCAtMjQsOCArMjQsOCBAQCBob21lcGFnZT0iaHR0cHM6Ly9vcGVuY3Yub3JnIgogY2hh bmdlbG9nPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi93aWtpL0NoYW5nZUxvZyIK IGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3YvYXJjaGl2ZS8ke3Zl cnNpb259LnRhci5negogIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2X2NvbnRyaWIv YXJjaGl2ZS8ke3ZlcnNpb259LnRhci5nej5jb250cmliLnRhci5neiIKLWNoZWNrc3VtPSIxZWMx Y2JhNjVmOWYyMGZlNWE0MWZkYTE1ODZlMDFjNzBlYTBjOWE2ZDdiNjdjOWUxM2VkZjBjZmUyMjM5 Mjc3Ci0gMTc3N2Q1ZmQyYjU5MDI5Y2Y1MzdlNWZkNmY4YWE2OGQ3MDcwNzU4MjJmOTBiZGU2ODNm Y2RlMDg2Zjg1ZjdhNyIKK2NoZWNrc3VtPSI4ZGYwMDc5Y2RiZTE3OTc0OGExOGQ0NDczMWFmNjJh MjQ1YTQ1ZWJmNTA4NTIyM2RjMDMxMzM5NTRjNjYyOTczCisgNDJkZjg0MGNmOTA1NWU1OWQwZTIy YzI0OWNmYjE5ZjA0NzQzZTFiZGFkMTEzZDMxYjE1NzNkMzkzNGQ2MjU4NCIKIHBhdGNoX2FyZ3M9 Ii1OcDEgLWQgJHtidWlsZF93cmtzcmN9IgogIyB0ZXN0cyBoYW5nIGluZGVuZmluaXRlbHksIGV2 ZW4gd2l0aCB0ZXN0IGRhdGEgaW5jbHVkZWQKIG1ha2VfY2hlY2s9bm8KCkZyb20gODcyYjI3Y2Nh YjgzZjZlNjY1MjRkOGU2ZDM2NWU0MDc2NzlkYTE2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAx OTo1OTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA0LzExM10gYWN0aW9uYTogcmV2YnVtcCBm b3Igb3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZSB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZQppbmRl eCBjZjVmMGI3YTJhZTYuLjBkODk5MzExZTZkZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9hY3Rpb25h L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2FjdGlvbmEnCiBwa2duYW1lPWFjdGlvbmEKIHZlcnNpb249 My4xMC4xCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1xbWFrZQogY29uZmln dXJlX2FyZ3M9IlBLR0NPTkZJR19PUEVOQ1Y9b3BlbmN2NCIKIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyBxdDUtcGx1Z2luLW15c3FsIHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKCkZyb20g MWQ3MmU5MTIwODc3ZmRjZmRiOWVjNTU4YjU5NDMyYWFkZTI0NWU1YSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA1LzExM10gcWltZ3Y6IHJl dmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL3FpbWd2L3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKaW5k ZXggN2ViMzBkYjMzOTkyLi5kZDM0MWRmZTFiZmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcWltZ3Yv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3FpbWd2JwogcGtnbmFtZT1xaW1ndgogdmVyc2lvbj0xLjAuMgot cmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdz PSIkKHZvcHRfaWYgdmlkZW8gLURWSURFT19TVVBQT1JUPU9OIC1EVklERU9fU1VQUE9SVD1PRkYp CiAgJCh2b3B0X2lmIHNjYWxlIC1ET1BFTkNWX1NVUFBPUlQ9T04gLURPUEVOQ1ZfU1VQUE9SVD1P RkYpCgpGcm9tIGEzZGRkNzRlMzA2MDlkZjc2MmNkZDRkYTY5YjQxM2FiYjY4OWJhODcgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNi8xMTNd IHJldHJvc2hhcmU6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL3JldHJv c2hhcmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgYi9z cmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKaW5kZXggOGEwNzg2YzIxYTA4Li43MjAyM2ZhOThi NzUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmV0cm9zaGFyZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3JldHJvc2hhcmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdyZXRyb3NoYXJlJwogcGtnbmFtZT1yZXRyb3NoYXJlCiB2ZXJzaW9uPTAuNi42Ci1yZXZpc2lv bj0yCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1xbWFrZQogI1hYWCBicm9hZGNhc3QgZmVhdHVy ZSByZXF1aXJlcyBhbiBhbmNpZW50IHVkcC1kaXNjb3ZlcnktY3BwIHdoaWNoIGVpdGhlciBuZWVk cwogIyB0byBiZSBmZXRjaGVkK3BhdGNoZWQgKEZUQkZTKSBoZXJlIG9yIHBhY2thZ2VkIDovCgpG cm9tIGY1Y2QzYjA4YjNmMTZjNjJiZTNjYTBiNWY3Y2VkM2JjOTgzYTM4ZjIgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNy8xMTNdIHdhaWZ1 MngtY29udmVydGVyLWNwcDogcmV2YnVtcCBmb3Igb3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3Mv d2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy93YWlmdTJ4 LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUgYi9zcmNwa2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90 ZW1wbGF0ZQppbmRleCA4YzA5NWQwZDdiYWIuLmFhNTJkOGM5ODFhOCAxMDA2NDQKLS0tIGEvc3Jj cGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93YWlmdTJ4 LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICd3YWlmdTJ4LWNvbnZlcnRlci1jcHAnCiBwa2duYW1lPXdhaWZ1MngtY29udmVydGVyLWNw cAogdmVyc2lvbj01LjIuNAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21h a2UKIGNvbmZpZ3VyZV9hcmdzPSItRElOU1RBTExfTU9ERUxTPU9OIgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIgoKRnJvbSBmMGRhMTc0YTcwODE0NzM2ZjdkYzQyMTNiMDEzZmRiYmI4MmU2 ZDAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAwOjM4IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwMDgvMTEzXSB2bGM6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy92 bGMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy92bGMvdGVtcGxhdGUgYi9zcmNwa2dz L3ZsYy90ZW1wbGF0ZQppbmRleCAyMTA3NjJiMGE3ZTIuLjg1NWNhNTIzODY2MiAxMDA2NDQKLS0t IGEvc3JjcGtncy92bGMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy92bGMvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd2bGMnCiBwa2duYW1lPXZsYwogdmVyc2lv bj0zLjAuMTgKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1 cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtZ21lIC0tZGlzYWJsZS1saWJ0YXIgLS1lbmFi bGUtamFjawogIC0tZW5hYmxlLWxpdmU1NTUgLS1kaXNhYmxlLWZsdWlkc3ludGggLS1lbmFibGUt ZHZkcmVhZApAQCAtMjUsNyArMjUsNyBAQCBsaWIzMmRpc2FibGVkPXllcwogaG9zdG1ha2VkZXBl bmRzPSJhdXRvbWFrZSBsaWJ0b29sIHBrZy1jb25maWcgZmxleCBnZXR0ZXh0IGxpYmdjcnlwdC1k ZXZlbAogIGxpdmU1NTUtZGV2ZWwgZ2V0dGV4dC1kZXZlbCAkKHZvcHRfaWYgbHVhIGx1YTUyKSAk KHZvcHRfaWYgY2hyb21lY2FzdCBwcm90b2J1ZikiCiBtYWtlZGVwZW5kcz0iCi0gYXZhaGktbGli cy1kZXZlbCBkYnVzLWdsaWItZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWVmb250 LXR0ZgorIGF2YWhpLWxpYnMtZGV2ZWwgZGJ1cy1nbGliLWRldmVsIGZhYWQyLWRldmVsIGZmbXBl ZzQtZGV2ZWwgZnJlZWZvbnQtdHRmCiAgZ251dGxzLWRldmVsIGphY2stZGV2ZWwgbGliYTUyLWRl dmVsIGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2ZWwKICBsaWJjZGlvLWRldmVsIGxpYmRjYS1k ZXZlbCBsaWJkdmJwc2ktZGV2ZWwgbGliZHZkbmF2LWRldmVsIGxpYm1hZC1kZXZlbAogIGxpYm1h dHJvc2thLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGlibXBjZGVjLWRldmVsIGxpYm1wZWcyLWRl dmVsCgpGcm9tIDdlYmVhOWQ1NjY4ZWRiOGJjMWM2NTUwNWZmNTI0MjJjZmU0ZDMxYjQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDA6NTUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwOS8xMTNd IG9zZzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL29zZy90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUK aW5kZXggYTllYmJkMjg3OTMzLi43NTU3OTNmN2UxMWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3Nn L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlCkBAIC04LDcgKzgsNyBAQCBidWls ZF9oZWxwZXI9InFlbXUiCiBjb25maWd1cmVfYXJncz0iLURMSUJfUE9TVEZJWD0iCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWcgeHJhbmRyIgogbWFrZWRlcGVuZHM9Ik1lc2FMaWItZGV2ZWwg Z3RrZ2xleHQtZGV2ZWwgbGliY3VybC1kZXZlbCBnaWZsaWItZGV2ZWwgbGlicnN2Zy1kZXZlbAot IGphc3Blci1kZXZlbCB0aWZmLWRldmVsIGxpYmdkYWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBl Zy1kZXZlbCB4aW5lLWxpYi1kZXZlbAorIGphc3Blci1kZXZlbCB0aWZmLWRldmVsIGxpYmdkYWwt ZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZzQtZGV2ZWwgeGluZS1saWItZGV2ZWwKICBTREwyLWRl dmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsCiAgJCh2b3B0X2lmIG9wZW5leHIgbGlib3BlbmV4 ci1kZXZlbCkKICAkKHZvcHRfaWYgcG9wcGxlciBwb3BwbGVyLWdsaWItZGV2ZWwpCgpGcm9tIDc5 OWM0ODkxM2RiYzFmZTQwODQxMTIxYzdmNjkxMmQ2MWMwODgxMTggTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6MTMgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMC8xMTNdIHhpbmUtbGliOiBy ZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUg fCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3hpbmUtbGliL3RlbXBsYXRlIGIvc3JjcGtncy94aW5l LWxpYi90ZW1wbGF0ZQppbmRleCBmNzEzZWZmNDliMDcuLmVkNjE5NGMxN2QxMSAxMDA2NDQKLS0t IGEvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3hpbmUtbGliL3RlbXBs YXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAneGluZS1saWInCiBwa2du YW1lPXhpbmUtbGliCi12ZXJzaW9uPTEuMi4xMgordmVyc2lvbj0xLjIuMTMKIHJldmlzaW9uPTEK IGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtdmNk IC0tZGlzYWJsZS1nbm9tZXZmcyAtLXdpdGhvdXQtZXNvdW5kIC0tZGlzYWJsZS1keHIzCkBAIC04 LDcgKzgsNyBAQCBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXZjZCAtLWRpc2FibGUtZ25vbWV2 ZnMgLS13aXRob3V0LWVzb3VuZCAtLWRpc2FibGUtZHhyMwogaG9zdG1ha2VkZXBlbmRzPSJhdXRv bWFrZSBnZXR0ZXh0LWRldmVsIGxpYnRvb2wgcGtnLWNvbmZpZyBwZXJsIgogbWFrZWRlcGVuZHM9 IgogIHpsaWItZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGlieGNiLWRldmVsIGxpYlNNLWRldmVsIGxp YlhleHQtZGV2ZWwgbGliWHYtZGV2ZWwKLSBsaWJYdk1DLWRldmVsIGxpYmE1Mi1kZXZlbCBsaWJt YWQtZGV2ZWwgZmZtcGVnLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKKyBsaWJYdk1DLWRldmVsIGxp YmE1Mi1kZXZlbCBsaWJtYWQtZGV2ZWwgZmZtcGVnNC1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAg amFjay1kZXZlbCBzYW1iYS1kZXZlbCBsaWJmbGFjLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGli bXBjZGVjLWRldmVsCiAgc3BlZXgtZGV2ZWwgbGlidGhlb3JhLWRldmVsIGxpYnZvcmJpcy1kZXZl bCBsaWJkY2EtZGV2ZWwgZmFhZDItZGV2ZWwKICBsaWJjZGlvLWRldmVsIGxpYmJsdXJheS1kZXZl bCBhYWxpYi1kZXZlbCBsaWJjYWNhLWRldmVsIGxpYlhpbmVyYW1hLWRldmVsCkBAIC0xOSw3ICsx OSw3IEBAIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIsIExHUEwtMi4wLW9yLWxhdGVyIgogaG9t ZXBhZ2U9Imh0dHA6Ly93d3cueGluZS1wcm9qZWN0Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9z b3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMveGluZS9maWxlcy94aW5lLWxpYi8ke3ZlcnNpb259L1JF QURNRS50eHQvdmlldyIKIGRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JHRV9TSVRFfS94aW5lLyR7cGtn bmFtZX0tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1kNjA2MjcwNDY4ZTE1NDBjMmE4OWMw ZDdmNWZkZjExZTE3ZWNjMGMyNjk4Y2MwYmNiMTA2NWZmMjZhYmVlMDk4CitjaGVja3N1bT01ZjEw ZDZkNzE4YTRhNTFjMTdlZDFiMzJiMDMxZDRmOWI4MGIwNjFlODI3NjUzNWIyYmUzMWU1YWM0Yjc1 ZTZmCiAKIGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCWk2ODYtbXVzbCkKCkZyb20g NmEwOGE0ZGQ0OGU3YWQ2YTQxNzc0NDZmNDY1Mzk4ZjkyOGM2NGVjZiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDExLzExM10gUU1QbGF5Mjog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxh dGUKaW5kZXggODUwZGY5ZDQxOGI5Li44ZDJjZTdhNzYxNTYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv UU1QbGF5Mi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdRTVBsYXkyJwogcGtnbmFtZT1RTVBsYXkyCiB2 ZXJzaW9uPTIzLjA2LjE3Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFr ZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIK IG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWctZGV2ZWwgbGliYXNzLWRldmVsIGxp YmNkaW8tZGV2ZWwgbGliZ21lLWRldmVsCgpGcm9tIDJiNmIzNTY3YWU0MDI3ODBjN2U3Y2I1OGUy NmNjYjY2ZTcyYzUyOTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3Vi amVjdDogW1BBVENIIDAxMi8xMTNdIGFsc2EtcGx1Z2luczogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv YWxzYS1wbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtncy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUKaW5k ZXggMGJmYTZkOWZkMjY0Li5hNTcwOGE3ZDgyYTggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWxzYS1w bHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYWxzYS1wbHVnaW5zJwogcGtnbmFtZT1h bHNhLXBsdWdpbnMKIHZlcnNpb249MS4yLjcuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1tYWVtby1w bHVnaW4iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIGY4MzQwZjJmZjU2NGJj ODdhYzVkZjRlNDEyMDg2OTI1YWYxNjg5YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMy8xMTNdIGFyY2FuOiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvYXJjYW4vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Fy Y2FuL3RlbXBsYXRlIGIvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZQppbmRleCA3YmU5NjUyZWNjZjMu LmNjYzdkZjExY2VhYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2FyY2FuL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogIyAhISBrZWVwIHN5bmNlZCB3 aXRoOiBhY2ZnZnMgYWNsaXAgYWxvYWRpbWFnZQogcGtnbmFtZT1hcmNhbgogdmVyc2lvbj0wLjYu Mi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jr c3JjPWFyY2FuL3NyYwogYnVpbGRfc3R5bGU9Y21ha2UKCkZyb20gMzZjMDUyOTk3MzBhYTI3MDMx YTAxNDZhMzNhMGI0MTQ0Y2Y0Y2UxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE0LzExM10gYXR0cmFjdDogcmV2YnVtcCBmb3IgZmZtcGVn NC00LjQuMwoKLS0tCiBzcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9hdHRyYWN0L3RlbXBsYXRlIGIvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlCmluZGV4IDI2 MTQ0ZTkzMWEzYy4uZTc2MGJmMGQxOGFlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2F0dHJhY3QvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdhdHRyYWN0JwogcGtnbmFtZT1hdHRyYWN0CiB2ZXJzaW9uPTIu Ni4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1h a2VfYnVpbGRfYXJncz0iVkVSQk9TRT0xIgogbWFrZV91c2VfZW52PXllcwogaG9zdG1ha2VkZXBl bmRzPSJwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9IlNGTUwtZGV2ZWwgZmZtcGVnLWRldmVsIGZv bnRjb25maWctZGV2ZWwgZ2x1LWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwKK21ha2VkZXBlbmRzPSJT Rk1MLWRldmVsIGZmbXBlZzQtZGV2ZWwgZm9udGNvbmZpZy1kZXZlbCBnbHUtZGV2ZWwgbGliYXJj aGl2ZS1kZXZlbAogIGxpYmN1cmwtZGV2ZWwgbGlianBlZy10dXJiby1kZXZlbCB4aW5lLWxpYiBy YXBpZGpzb24gbGliWHJhbmRyLWRldmVsIgogZGVwZW5kcz0iZ2l0Igogc2hvcnRfZGVzYz0iQXR0 cmFjdC1Nb2RlIGlzIGEgZ3JhcGhpY2FsIGZyb250ZW5kIGZvciBlbXVsYXRvcnMiCgpGcm9tIDUw MGU2ZDZiZWFlNGZkOTZmZTk3YWIwYzVjZTViNTBmMTFmNzI4ZGIgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNS8xMTNdIGF1YmlvOiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBh dGNoIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9hdWJpby90ZW1wbGF0 ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9hdWJpby9wYXRjaGVz L2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1YmlvL3BhdGNoZXMvZmZtcGVn NS5wYXRjaCBiL3NyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWFjZTQxYTZlNmQ5Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwyNSBA QAorRnJvbSA4YTA1NDIwZTVkZDhjN2I4YjI0NDdmODJkYzkxOTc2NTg3NjUxMWIzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBCcm9zc2llciA8cGllbUBwaWVtLm9yZz4KK0Rh dGU6IFR1ZSwgMjUgSmFuIDIwMjIgMTg6MzA6MjcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW3Nv dXJjZV9hdmNvZGVjXSBkZWZpbmUgRkZfQVBJX0xBVkZfQVZDVFggZm9yIGxpYmF2Y29kZWMgPgor IDU5LCB0aHggQGJlcm9saW51eCAoY2xvc2VzIGdoLTM1MykKKworLS0tCisgc3JjL2lvL3NvdXJj ZV9hdmNvZGVjLmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisK K2RpZmYgLS1naXQgYS9zcmMvaW8vc291cmNlX2F2Y29kZWMuYyBiL3NyYy9pby9zb3VyY2VfYXZj b2RlYy5jCitpbmRleCBlMGFlOTNiNS4uMTQyMWJkOWEgMTAwNjQ0CistLS0gYS9zcmMvaW8vc291 cmNlX2F2Y29kZWMuYworKysrIGIvc3JjL2lvL3NvdXJjZV9hdmNvZGVjLmMKK0BAIC02OCw2ICs2 OCwxMCBAQAorICNkZWZpbmUgQVVCSU9fQVZDT0RFQ19NQVhfQlVGRkVSX1NJWkUgQVZfSU5QVVRf QlVGRkVSX01JTl9TSVpFCisgI2VuZGlmCisgCisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpP UiA+PSA1OQorKyNkZWZpbmUgRkZfQVBJX0xBVkZfQVZDVFggMQorKyNlbmRpZgorKworIHN0cnVj dCBfYXViaW9fc291cmNlX2F2Y29kZWNfdCB7CisgICB1aW50X3QgaG9wX3NpemU7CisgICB1aW50 X3Qgc2FtcGxlcmF0ZTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXViaW8vdGVtcGxhdGUgYi9zcmNw a2dzL2F1YmlvL3RlbXBsYXRlCmluZGV4IGFkMWM0YjI1Njk5MS4uN2Q4NzVjYzAyNTQxIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYXViaW8vdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhdWJpbycKIHBrZ25hbWU9 YXViaW8KIHZlcnNpb249MC40LjkKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PXdhZjMKICMgWFhYIGxhc2gsIHB1cmUgYW5kIHN3aWcgc3VwcG9ydC4KIGhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyB0eHQybWFuIgoKRnJvbSBlZDVjMzExMzA5NzhlYjBhMWNhMjY1Y2EwN2Qw NzNjNDYzMjdkYmI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMTYvMTEzXSBhdWRhY2lvdXMtcGx1Z2luczogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiAuLi4vYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoICAg fCA0MyArKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBs YXRlICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9hdWRhY2lvdXMtcGx1 Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1ZGFjaW91 cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdp bnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uNGU1ZTM0MDk5ZDcxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9hdWRhY2lv dXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorY29tbWl0 IDI5OGFhMzcxYzU2YzJmNTJjMjVhMzNkOWJkZWM0OTE4YjExY2ViZGMKK0F1dGhvcjogdGliZXF1 YWRvcmlhbiA8dGliZXF1YWRvcmlhbkBwb3N0ZW8uZGU+CitEYXRlOiAgIFNhdCBNYXIgMTkgMTg6 NDA6MTIgMjAyMiArMDEwMAorCisgICAgYXVkYWNpb3VzLXBsdWdpbnM6IHJlYnVpbGQgYWdhaW5z dCBmZm1wZWctNS4wCisKK2RpZmYgLS1naXQgYS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3Bh dGNoZXMvZmZtcGVnLTUuMC5wYXRjaCBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hl cy9mZm1wZWctNS4wLnBhdGNoCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAw MC4uNjE3YzExMjE1YgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1 Z2lucy9wYXRjaGVzL2ZmbXBlZy01LjAucGF0Y2gKK0BAIC0wLDAgKzEsMzEgQEAKKytGcm9tIGY2 MGJlYjQwMGVlYjFlNDc3OGJiZmQ3MzhiYzRhNGNjZWYzZGU1MzkgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCisrRnJvbTogSm9obiBMaW5kZ3JlbiA8am9obkBqbGluZGdyZW4ubmV0PgorK0RhdGU6 IFNhdCwgNSBNYXIgMjAyMiAxMjowNTozNCAtMDUwMAorK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1 aWxkIHdpdGggRkZtcGVnIDUuMAorKworKy0tLQorKyBzcmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUu Y2MgfCA0ICsrLS0KKysgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKKysKKytkaWZmIC0tZ2l0IGEvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjIGIvc3Jj L2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisraW5kZXggMTZkYzYzZTNhLi5hMmI5NWZkNmMgMTAw NjQ0CisrLS0tIGEvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisrKysrIGIvc3JjL2ZmYXVk aW8vZmZhdWRpby1jb3JlLmNjCisrQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgQVZJbnB1dEZv cm1hdCAqIGdldF9mb3JtYXRfYnlfY29udGVudCAoY29uc3QgY2hhciAqIG5hbWUsIFZGU0ZpbGUg JiBmaWxlKQorKyAgICAgICAgIEFWUHJvYmVEYXRhIGQgPSB7bmFtZSwgYnVmLCBmaWxsZWR9Owor KyAgICAgICAgIHNjb3JlID0gdGFyZ2V0OworKyAKKystICAgICAgICBmID0gYXZfcHJvYmVfaW5w dXRfZm9ybWF0MiAoJiBkLCB0cnVlLCAmIHNjb3JlKTsKKysrICAgICAgICBmID0gKEFWSW5wdXRG b3JtYXQgKikgYXZfcHJvYmVfaW5wdXRfZm9ybWF0MiAoJiBkLCB0cnVlLCAmIHNjb3JlKTsKKysg ICAgICAgICBpZiAoZikKKysgICAgICAgICAgICAgYnJlYWs7CisrIAorK0BAIC0zNDcsNyArMzQ3 LDcgQEAgc3RhdGljIGJvb2wgZmluZF9jb2RlYyAoQVZGb3JtYXRDb250ZXh0ICogYywgQ29kZWNJ bmZvICogY2luZm8pCisrICNlbmRpZgorKyAgICAgICAgIGlmIChzdHJlYW0gJiYgc3RyZWFtLT5j b2RlY3BhciAmJiBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9B VURJTykKKysgICAgICAgICB7CisrLSAgICAgICAgICAgIEFWQ29kZWMgKiBjb2RlYyA9IGF2Y29k ZWNfZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrKyAgICAgICAg ICAgIEFWQ29kZWMgKiBjb2RlYyA9IChBVkNvZGVjICopIGF2Y29kZWNfZmluZF9kZWNvZGVyIChz dHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrIAorKyAgICAgICAgICAgICBpZiAoY29kZWMp CisrICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMv dGVtcGxhdGUgYi9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlCmluZGV4IDg4Y2Jj MTY3MWZjNi4uYmVlYmZhZTU5ZWQ0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVn aW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUKQEAg LTIsNyArMiw3IEBACiAjS2VlcCBpbiBzeW5jIHdpdGggYXVkYWNpb3VzIQogcGtnbmFtZT1hdWRh Y2lvdXMtcGx1Z2lucwogdmVyc2lvbj00LjMuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSIkKHZvcHRfYm9vbCBndGszIGd0aykgJCh2 b3B0X2Jvb2wgZ3RrMykKICAkKHZvcHRfYm9vbCBxdCkgJCh2b3B0X2Jvb2wgcXQgcXQ2KSIKCkZy b20gMzFkN2EzYmIxYWZkMWYwMTg5NzA3OWY0ZmUyMWMzNThkZTY1ZTBlZiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE3LzExM10gYXVkYWNp dHk6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9hdWRhY2l0eS90ZW1w bGF0ZSB8IDUgKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZSBiL3NyY3BrZ3Mv YXVkYWNpdHkvdGVtcGxhdGUKaW5kZXggZDUwOWMwYTg5NDA3Li4xMWUyMDI1NTY4NWIgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdWRhY2l0eS90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F1ZGFjaXR5Jwog cGtnbmFtZT1hdWRhY2l0eQogdmVyc2lvbj0yLjQuMQotcmV2aXNpb249MgorcmV2aXNpb249Mwog YnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0td2l0aC1mZm1wZWc9 c3lzdGVtIC0td2l0aC1saWJzbmRmaWxlPXN5c3RlbSAtLXdpdGgtZXhwYXQ9c3lzdGVtCiAgLS13 aXRoLWxpYnNveHI9c3lzdGVtIC0td2l0aC1sYW1lPXN5c3RlbSAtLXdpdGgtbHYyPXN5c3RlbSBh Y19jdl9wYXRoX1dYX0NPTkZJRz13eC1jb25maWctZ3RrMyIKQEAgLTksNyArOSw3IEBAIGhvc3Rt YWtlZGVwZW5kcz0icGtnLWNvbmZpZyBjbWFrZSBnZXR0ZXh0IGxpYnRvb2wgbTQgd2hpY2giCiBt YWtlZGVwZW5kcz0iamFjay1kZXZlbCB3eFdpZGdldHMtZ3RrMy1kZXZlbCBndGsrMy1kZXZlbAog IGxpYm1hZC1kZXZlbCBzb3VuZHRvdWNoLWRldmVsIGxpYnNveHItZGV2ZWwKICB2YW1wLXBsdWdp bi1zZGstZGV2ZWwgbGFtZS1kZXZlbCBsaWJpZDN0YWctZGV2ZWwgbGliZmxhYy1kZXZlbAotIGZm bXBlZy1kZXZlbCB0d29sYW1lLWRldmVsIHNlcmQtZGV2ZWwgbHYyIGxpbHYtZGV2ZWwgc3VpbC1k ZXZlbCIKKyBmZm1wZWc0LWRldmVsIHR3b2xhbWUtZGV2ZWwgc2VyZC1kZXZlbCBsdjIgbGlsdi1k ZXZlbCBzdWlsLWRldmVsIgogZGVwZW5kcz0iZGVza3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNv bi10aGVtZSIKIHNob3J0X2Rlc2M9IkdyYXBoaWNhbCBjcm9zcy1wbGF0Zm9ybSBhdWRpbyBlZGl0 b3IiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgpAQCAtMzMs NSArMzMsNCBAQCBwb3N0X2luc3RhbGwoKSB7CiAJdmNvcHkgcGx1Zy1pbnMgL3Vzci9zaGFyZS9h dWRhY2l0eQogCiAJcm0gJHtERVNURElSfS91c3Ivc2hhcmUvZG9jL2F1ZGFjaXR5L0xJQ0VOU0Uu dHh0Ci0JdmxpY2Vuc2UgTElDRU5TRS50eHQgTElDRU5TRQogfQoKRnJvbSAxMGFkZTlkNzkzNTk0 YzNhNTk4NWJkYTY3MzY3MTJkYzEwZWY0ZDBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTgvMTEzXSBhdmlkZW11eDogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2F2aWRlbXV4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9hdmlkZW11eC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKaW5kZXgg MjUzYTAyNDNlMjI1Li41NTcyODU5ODJkMmIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXZpZGVtdXgv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F2aWRlbXV4JwogcGtnbmFtZT1hdmlkZW11eAogdmVyc2lv bj0yLjguMAotcmV2aXNpb249MgorcmV2aXNpb249MwogIyBDYW4ndCBiZSBjb21waWxlZCBmb3Ig YWFyY2g2NCwgYXJtKiBvciBtaXBzKgogYXJjaHM9Ing4Nl82NCogaTY4NioiCiBob3N0bWFrZWRl cGVuZHM9ImNtYWtlIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LWRldmVsIHRhciB5YXNt IgoKRnJvbSAwNWM5OWU2NTgzNTgwMGE1MjhlZTMxMDdlNjAzMmVmMTFiZWFkZTBlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTkvMTEzXSBi YXJlc2lwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYmFyZXNpcC90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYmFyZXNp cC90ZW1wbGF0ZQppbmRleCBmMWJkMTgxNzA0OGIuLmIyMWUyMjMzNDMxNiAxMDA2NDQKLS0tIGEv c3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2JhcmVzaXAnCiBwa2duYW1lPWJh cmVzaXAKIHZlcnNpb249Mi4xMC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHls ZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGdsaWItZGV2ZWwiCiBtYWtlZGVw ZW5kcz0ibGliZ3NtLWRldmVsIGxpYnBuZy1kZXZlbCBvcGVuc3NsLWRldmVsIGxpYnNuZGZpbGUt ZGV2ZWwKCkZyb20gNGNkZjI5ZjEzZmM2OTRiMTMxNTBiMDYwZjRkMmQwYTQwZmU5NzJhOCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIwLzEx M10gYmxlbmRlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2JsZW5kZXIv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlIGIvc3JjcGtn cy9ibGVuZGVyL3RlbXBsYXRlCmluZGV4IDdhNzEwYWMwZGY0OS4uMGY3Mjg3NmQ0ZDcwIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9ibGVuZGVyL3Rl bXBsYXRlCkBAIC05LDggKzksOCBAQCBjb25maWd1cmVfYXJncz0iLURXSVRIX0lOU1RBTExfUE9S VEFCTEU9T0ZGIC1EV0lUSF9QWVRIT05fSU5TVEFMTD1PRkYKICAtRFdJVEhfSkFDSz1PTiAtRFdJ VEhfQ09ERUNfRkZNUEVHPU9OIC1EV0lUSF9DT0RFQ19TTkRGSUxFPU9OIC1EV0lUSF9PUEVOTVA9 T04KICAtRFdJVEhfRkZUVzM9T04gLURXSVRIX01PRF9PQ0VBTlNJTT1PTiAtRFdJVEhfQ1lDTEVT X0VNQlJFRT1PRkYgLURXSVRIX09QRU5DT0xPUklPPU9OCiAgLURXSVRIX0lNQUdFX09QRU5FWFI9 T04gLURXSVRIX0lNQUdFX09QRU5KUEVHPU9OIC1EV0lUSF9PUEVOU1VCRElWPU9OCi0gLURXSVRI X09QRU5DT0xMQURBPU9OIC1EV0lUSF9TWVNURU1fR0xFVz1PTiAtRFdJVEhfT1BFTlZEQj1PTiAt RFdJVEhfQUxFTUJJQz1PTgotIC1EV0lUSF9HSE9TVF9YMTE9T04gLURXSVRIX0dIT1NUX1dBWUxB TkQ9T04gLURXSVRIX0dIT1NUX0xJQkRFQ09SPU9OCisgLURXSVRIX09QRU5DT0xMQURBPU9OIC1E V0lUSF9PUEVOVkRCPU9OIC1EV0lUSF9BTEVNQklDPU9OCisgLURXSVRIX0dIT1NUX1gxMT1PTiAt RFdJVEhfR0hPU1RfV0FZTEFORD1PTiAtRFdJVEhfR0hPU1RfV0FZTEFORF9MSUJERUNPUj1PTgog IC1EV0lUSF9CVUlMRElORk89T0ZGIC1EUFlUSE9OX1ZFUlNJT049JHtweTNfdmVyfSAtRFBZVEhP Tl9MSUJQQVRIPS91c3IvbGliCiAgLURQWVRIT05fTElCUkFSWT1weXRob24ke3B5M192ZXJ9JHtw eTNfYWJpdmVyfSAtRFBZVEhPTl9JTkNMVURFX0RJUlM9LyR7cHkzX2luY30KICAtRFdJVEhfU1lT VEVNX0xaTz1PTiAtRFdJVEhfU1lTVEVNX0VJR0VOMz1PTiAtRFdJVEhfU1lTVEVNX0ZSRUVUWVBF PU9OIgoKRnJvbSA5NDAzMjlkYWFlM2ExNGZjNDVhOTdjOTAxNzBhNDk2ZjlhMzJkMmI3IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjEvMTEz XSBjYW50YXRhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvY2FudGF0YS90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2FudGF0YS90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2Fu dGF0YS90ZW1wbGF0ZQppbmRleCA0YjQxN2Q4MGQ1YzIuLjhhOTBhYWE0YzA3YSAxMDA2NDQKLS0t IGEvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2FudGF0YS90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2NhbnRhdGEnCiBwa2duYW1l PWNhbnRhdGEKIHZlcnNpb249Mi41LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0 eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LXFtYWtlIHF0NS1ob3N0 LXRvb2xzIHF0NS10b29scyIKIG1ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LXRvb2xzLWRldmVs IHF0NS1zdmctZGV2ZWwgcXQ1LXhtbHBhdHRlcm5zLWRldmVsCgpGcm9tIDYyYTA4MTE5ZGY4MDAw M2FhZmJjYTVhZmMxYmYxY2JjOThhMzk4YTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyMi8xMTNdIGNjZXh0cmFjdG9yOiByZXZidW1wIGZv ciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvY2NleHRyYWN0b3IvdGVtcGxhdGUgfCA0ICsr LS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2NleHRyYWN0 b3IvdGVtcGxhdGUKaW5kZXggOWFiY2Q4Mjg1MmIyLi42ZWNjYWQ1ODg1YWYgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvY2NleHRyYWN0b3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jY2V4dHJhY3Rvci90 ZW1wbGF0ZQpAQCAtMSwxMiArMSwxMiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY2NleHRyYWN0 b3InCiBwa2duYW1lPWNjZXh0cmFjdG9yCiB2ZXJzaW9uPTAuOTMKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3dya3NyYz0ibGludXgiCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBj b25maWd1cmVfYXJncz0iLS1lbmFibGUtb2NyIC0tZW5hYmxlLWhhcmRzdWJ4IgogaG9zdG1ha2Vk ZXBlbmRzPSJhdXRvbWFrZSBwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9ImxlcHRvbmljYS1kZXZl bCB0ZXNzZXJhY3Qtb2NyLWRldmVsIGZmbXBlZy1kZXZlbCIKK21ha2VkZXBlbmRzPSJsZXB0b25p Y2EtZGV2ZWwgdGVzc2VyYWN0LW9jci1kZXZlbCBmZm1wZWc0LWRldmVsIgogc2hvcnRfZGVzYz0i RXh0cmFjdCBzdWJ0aXRsZXMgZnJvbSB2aWRlbyBzdHJlYW1zIgogbWFpbnRhaW5lcj0ibmV3Ymx1 ZW1vb24gPGJsYXVtb2xjaEBtYWlsYm94Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVy IgoKRnJvbSBiYjk5YWQ5M2Y1ZDUwMjg1MDcxMWZjZDA4ZTU0YzRhOWU5Njc1MGE5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjMvMTEzXSBj aHJvbWFwcmludDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Nocm9tYXBy aW50L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDU2OSArKysrKysrKysrKysrKysrKysrKysrCiBz cmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlICAgICAgICAgICAgICB8ICAgMiArLQogMiBmaWxl cyBjaGFuZ2VkLCA1NzAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dz L2Nocm9tYXByaW50L3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmE5ZmQzMDdhMjNjOAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsNTY5IEBACitG cm9tIDhjY2FkNjkzNzE3N2IxYjkyZTQwYWI4ZjQ0NDdlYTI3YmFjMDA5YTcgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/THVrPUMzPUExPUM1PUExPTIwTGFsaW5zaz1D Mz1CRD89IDxsYWxpbnNreUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDQgTm92IDIwMjIgMjE6NDc6 MzggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIEZGbXBlZyA1LnggKCMxMjApCisKKyogVXNl IEZGbXBlZyA1LjEuMiBmb3IgQ0kgYnVpbGRzCisKKyogQnVpbGQgb24gVWJ1bnR1IDIwLjA0CisK KyogVXBncmFkZSBjb2RlIHRvIEZGbXBlZyA1LnggQVBJcworCisqIE9ubHkgc2V0IEZGbXBlZyBp bmNsdWRlIGRpcnMgaWYgYnVpbGRpbmcgdG9vbHMKKworKiBObyBsb25nZXIgbmVlZGVkCisKKyog VXNlIHVidW50dSAyMC4wNAorLS0tCisgLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueW1sICAgICAg ICAgICAgICAgICAgIHwgICA2ICstCisgQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDE2IC0tCisgcGFja2FnZS9idWlsZC5zaCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICA0ICstCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Iu aCAgICAgICAgICAgIHwgICAyIC0KKyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9h dnJlc2FtcGxlLmggfCAgNzIgLS0tLS0tLQorIHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vz c29yX3N3cmVzYW1wbGUuaCB8ICAxOCArLQorIHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVy LmggICAgICAgICAgICAgICB8IDE5NyArKysrKysrKystLS0tLS0tLS0KKyB0ZXN0cy9DTWFrZUxp c3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKworIDggZmlsZXMgY2hhbmdl ZCwgMTIyIGluc2VydGlvbnMoKyksIDE5OSBkZWxldGlvbnMoLSkKKyBkZWxldGUgbW9kZSAxMDA2 NDQgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oCisKK2RpZmYg LS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCBmOGQ2YTMyLi40 ZGEyNDA1IDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0 CitAQCAtODQsOSArODQsNiBAQCBmaW5kX3BhY2thZ2UoRkZtcGVnKQorIGlmKEZGTVBFR19MSUJS QVJJRVMpCisgCWNtYWtlX3B1c2hfY2hlY2tfc3RhdGUoUkVTRVQpCisgCXNldChDTUFLRV9SRVFV SVJFRF9MSUJSQVJJRVMgJHtGRk1QRUdfTElCUkFSSUVTfSAke0NNQUtFX1RIUkVBRF9MSUJTX0lO SVR9IC1sbSkKKy0JY2hlY2tfZnVuY3Rpb25fZXhpc3RzKGF2X3BhY2tldF91bnJlZiBIQVZFX0FW X1BBQ0tFVF9VTlJFRikKKy0JY2hlY2tfZnVuY3Rpb25fZXhpc3RzKGF2X2ZyYW1lX2FsbG9jIEhB VkVfQVZfRlJBTUVfQUxMT0MpCistCWNoZWNrX2Z1bmN0aW9uX2V4aXN0cyhhdl9mcmFtZV9mcmVl IEhBVkVfQVZfRlJBTUVfRlJFRSkKKyAJY21ha2VfcG9wX2NoZWNrX3N0YXRlKCkKKyBlbmRpZigp CisKK0BAIC0xNjMsMTQgKzE2MCwxMSBAQCBtZXNzYWdlKFNUQVRVUyAiVXNpbmcgJHtGRlRfTElC fSBmb3IgRkZUIGNhbGN1bGF0aW9ucyIpCisgaWYoTk9UIEFVRElPX1BST0NFU1NPUl9MSUIpCisg CWlmKEZGTVBFR19MSUJTV1JFU0FNUExFX0ZPVU5EKQorIAkJc2V0KEFVRElPX1BST0NFU1NPUl9M SUIgInN3cmVzYW1wbGUiKQorLQllbHNlaWYoRkZNUEVHX0xJQkFWUkVTQU1QTEVfRk9VTkQpCist CQlzZXQoQVVESU9fUFJPQ0VTU09SX0xJQiAiYXZyZXNhbXBsZSIpCisgCWVuZGlmKCkKKyBlbmRp ZigpCisKKyBpZihBVURJT19QUk9DRVNTT1JfTElCIFNUUkVRVUFMICJzd3Jlc2FtcGxlIikKKyAJ aWYoRkZNUEVHX0xJQlNXUkVTQU1QTEVfRk9VTkQpCistCQlzZXQoVVNFX0FWUkVTQU1QTEUgT0ZG KQorIAkJc2V0KFVTRV9TV1JFU0FNUExFIE9OKQorIAkJc2V0KEFVRElPX1BST0NFU1NPUl9MSUJS QVJJRVMgJHtGRk1QRUdfTElCU1dSRVNBTVBMRV9MSUJSQVJJRVN9KQorIAkJc2V0KEFVRElPX1BS T0NFU1NPUl9JTkNMVURFX0RJUlMgJHtGRk1QRUdfTElCU1dSRVNBTVBMRV9JTkNMVURFX0RJUlN9 KQorQEAgLTE3OCwxNiArMTcyLDYgQEAgaWYoQVVESU9fUFJPQ0VTU09SX0xJQiBTVFJFUVVBTCAi c3dyZXNhbXBsZSIpCisgCQltZXNzYWdlKEZBVEFMX0VSUk9SICJTZWxlY3RlZCAke0FVRElPX1BS T0NFU1NPUl9MSUJ9IGZvciBhdWRpbyBwcm9jZXNzaW5nLCBidXQgdGhlIGxpYnJhcnkgaXMgbm90 IGZvdW5kIikKKyAJZW5kaWYoKQorIAltZXNzYWdlKFNUQVRVUyAiVXNpbmcgJHtBVURJT19QUk9D RVNTT1JfTElCfSBmb3IgYXVkaW8gY29udmVyc2lvbiIpCistZWxzZWlmKEFVRElPX1BST0NFU1NP Ul9MSUIgU1RSRVFVQUwgImF2cmVzYW1wbGUiKQorLQlpZihGRk1QRUdfTElCQVZSRVNBTVBMRV9G T1VORCkKKy0JCXNldChVU0VfQVZSRVNBTVBMRSBPTikKKy0JCXNldChVU0VfU1dSRVNBTVBMRSBP RkYpCistCQlzZXQoQVVESU9fUFJPQ0VTU09SX0xJQlJBUklFUyAke0ZGTVBFR19MSUJBVlJFU0FN UExFX0xJQlJBUklFU30pCistCQlzZXQoQVVESU9fUFJPQ0VTU09SX0lOQ0xVREVfRElSUyAke0ZG TVBFR19MSUJBVlJFU0FNUExFX0lOQ0xVREVfRElSU30pCistCWVsc2UoKQorLQkJbWVzc2FnZShG QVRBTF9FUlJPUiAiU2VsZWN0ZWQgJHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3IgYXVkaW8gcHJv Y2Vzc2luZywgYnV0IHRoZSBsaWJyYXJ5IGlzIG5vdCBmb3VuZCIpCistCWVuZGlmKCkKKy0JbWVz c2FnZShTVEFUVVMgIlVzaW5nICR7QVVESU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIGNvbnZl cnNpb24iKQorIGVsc2UoKQorIAltZXNzYWdlKFNUQVRVUyAiQnVpbGRpbmcgd2l0aG91dCBhdWRp byBjb252ZXJzaW9uIHN1cHBvcnQsIHBsZWFzZSBpbnN0YWxsIEZGbXBlZyB3aXRoIGxpYnN3cmVz YW1wbGUiKQorIGVuZGlmKCkKK2RpZmYgLS1naXQgYS9wYWNrYWdlL2J1aWxkLnNoIGIvcGFja2Fn ZS9idWlsZC5zaAoraW5kZXggZGE2MzFhZS4uYjQxZDM2ZSAxMDA3NTUKKy0tLSBhL3BhY2thZ2Uv YnVpbGQuc2gKKysrKyBiL3BhY2thZ2UvYnVpbGQuc2gKK0BAIC03LDggKzcsOCBAQCBzZXQgLWV1 eAorCisgQkFTRV9ESVI9JChjZCAkKGRpcm5hbWUgJDApLy4uICYmIHB3ZCkKKworLUZGTVBFR19W RVJTSU9OPTQuNC4xCistRkZNUEVHX0JVSUxEX1RBRz12NC40LjEtMQorK0ZGTVBFR19WRVJTSU9O PTUuMS4yCisrRkZNUEVHX0JVSUxEX1RBRz12JHtGRk1QRUdfVkVSU0lPTn0tMQorCisgVE1QX0JV SUxEX0RJUj0kQkFTRV9ESVIvJChta3RlbXAgLWQgYnVpbGQuWFhYWFhYWFgpCisgdHJhcCAncm0g LXJmICRUTVBfQlVJTERfRElSJyBFWElUCitkaWZmIC0tZ2l0IGEvc3JjL2F1ZGlvL2ZmbXBlZ19h dWRpb19wcm9jZXNzb3IuaCBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmgKK2lu ZGV4IDc2MjhmYzcuLjM5ZjRmNmQgMTAwNjQ0CistLS0gYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlv X3Byb2Nlc3Nvci5oCisrKysgYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oCitA QCAtMTAsOCArMTAsNiBAQAorCisgI2lmIGRlZmluZWQoVVNFX1NXUkVTQU1QTEUpCisgI2luY2x1 ZGUgImF1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oIgorLSNlbGlmIGRl ZmluZWQoVVNFX0FWUkVTQU1QTEUpCistI2luY2x1ZGUgImF1ZGlvL2ZmbXBlZ19hdWRpb19wcm9j ZXNzb3JfYXZyZXNhbXBsZS5oIgorICNlbHNlCisgI2Vycm9yICJubyBhdWRpbyBwcm9jZXNzaW5n IGxpYnJhcnkiCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19w cm9jZXNzb3JfYXZyZXNhbXBsZS5oIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jf YXZyZXNhbXBsZS5oCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IGJkODVmOTIuLjAw MDAwMDAKKy0tLSBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUu aAorKysrIC9kZXYvbnVsbAorQEAgLTEsNzIgKzAsMCBAQAorLS8vIENvcHlyaWdodCAoQykgMjAx NiAgTHVrYXMgTGFsaW5za3kKKy0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2Us IHNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgorLQorLSNpZm5kZWYgQ0hST01BUFJJ TlRfQVVESU9fRkZNUEVHX0FVRElPX1BST0NFU1NPUl9BVlJFU0FNUExFX0hfCistI2RlZmluZSBD SFJPTUFQUklOVF9BVURJT19GRk1QRUdfQVVESU9fUFJPQ0VTU09SX0FWUkVTQU1QTEVfSF8KKy0K Ky1leHRlcm4gIkMiIHsKKy0jaW5jbHVkZSA8bGliYXZyZXNhbXBsZS9hdnJlc2FtcGxlLmg+Cist fQorLQorLW5hbWVzcGFjZSBjaHJvbWFwcmludCB7CistCistY2xhc3MgRkZtcGVnQXVkaW9Qcm9j ZXNzb3IgeworLXB1YmxpYzoKKy0JRkZtcGVnQXVkaW9Qcm9jZXNzb3IoKSB7CistCQltX3Jlc2Ft cGxlX2N0eCA9IGF2cmVzYW1wbGVfYWxsb2NfY29udGV4dCgpOworLQl9CistCistCX5GRm1wZWdB dWRpb1Byb2Nlc3NvcigpIHsKKy0JCWF2cmVzYW1wbGVfZnJlZSgmbV9yZXNhbXBsZV9jdHgpOwor LQl9CistCistCXZvaWQgU2V0Q29tcGF0aWJsZU1vZGUoKSB7CistCQlhdl9vcHRfc2V0X2ludCht X3Jlc2FtcGxlX2N0eCwgImZpbHRlcl9zaXplIiwgMTYsIDApOworLQkJYXZfb3B0X3NldF9pbnQo bV9yZXNhbXBsZV9jdHgsICJwaGFzZV9zaGlmdCIsIDgsIDApOworLQkJYXZfb3B0X3NldF9pbnQo bV9yZXNhbXBsZV9jdHgsICJsaW5lYXJfaW50ZXJwIiwgMSwgMCk7CistCQlhdl9vcHRfc2V0X2Rv dWJsZShtX3Jlc2FtcGxlX2N0eCwgImN1dG9mZiIsIDAuOCwgMCk7CistCX0KKy0KKy0Jdm9pZCBT ZXRJbnB1dENoYW5uZWxMYXlvdXQoaW50NjRfdCBjaGFubmVsX2xheW91dCkgeworLQkJYXZfb3B0 X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJpbl9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5 b3V0LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldElucHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9y bWF0IHNhbXBsZV9mb3JtYXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAi aW5fc2FtcGxlX2ZtdCIsIHNhbXBsZV9mb3JtYXQsIDApOworLQl9CistCistCXZvaWQgU2V0SW5w dXRTYW1wbGVSYXRlKGludCBzYW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNh bXBsZV9jdHgsICJpbl9zYW1wbGVfcmF0ZSIsIHNhbXBsZV9yYXRlLCAwKTsKKy0JfQorLQorLQl2 b2lkIFNldE91dHB1dENoYW5uZWxMYXlvdXQoaW50NjRfdCBjaGFubmVsX2xheW91dCkgeworLQkJ YXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJvdXRfY2hhbm5lbF9sYXlvdXQiLCBjaGFu bmVsX2xheW91dCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRPdXRwdXRTYW1wbGVGb3JtYXQoQVZT YW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBs ZV9jdHgsICJvdXRfc2FtcGxlX2ZtdCIsIHNhbXBsZV9mb3JtYXQsIDApOworLQl9CistCistCXZv aWQgU2V0T3V0cHV0U2FtcGxlUmF0ZShpbnQgc2FtcGxlX3JhdGUpIHsKKy0JCWF2X29wdF9zZXRf aW50KG1fcmVzYW1wbGVfY3R4LCAib3V0X3NhbXBsZV9mbXQiLCBzYW1wbGVfcmF0ZSwgMCk7Cist CX0KKy0KKy0JaW50IEluaXQoKSB7CistCQlyZXR1cm4gYXZyZXNhbXBsZV9vcGVuKG1fcmVzYW1w bGVfY3R4KTsKKy0JfQorLQorLQlpbnQgQ29udmVydCh1aW50OF90ICoqb3V0LCBpbnQgb3V0X2Nv dW50LCBjb25zdCB1aW50OF90ICoqaW4sIGludCBpbl9jb3VudCkgeworLQkJcmV0dXJuIGF2cmVz YW1wbGVfY29udmVydChtX3Jlc2FtcGxlX2N0eCwgb3V0LCAwLCBvdXRfY291bnQsICh1aW50OF90 ICoqKSBpbiwgMCwgaW5fY291bnQpOworLQl9CistCistCWludCBGbHVzaCh1aW50OF90ICoqb3V0 LCBpbnQgb3V0X2NvdW50KSB7CistCQlyZXR1cm4gYXZyZXNhbXBsZV9yZWFkKG1fcmVzYW1wbGVf Y3R4LCBvdXQsIG91dF9jb3VudCk7CistCX0KKy0KKy1wcml2YXRlOgorLQlBVkF1ZGlvUmVzYW1w bGVDb250ZXh0ICptX3Jlc2FtcGxlX2N0eCA9IG51bGxwdHI7CistfTsKKy0KKy19OyAvLyBuYW1l c3BhY2UgY2hyb21hcHJpbnQKKy0KKy0jZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZt cGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlv X3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmgKK2luZGV4IGI4NjI2NmIuLmIxZDRiZWEgMTAwNjQ0Cist LS0gYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmgKKysrKyBi L3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaAorQEAgLTI4LDMw ICsyOCwyOCBAQCBwdWJsaWM6CisgCQlhdl9vcHRfc2V0X2RvdWJsZShtX3N3cl9jdHgsICJjdXRv ZmYiLCAwLjgsIDApOworIAl9CisKKy0Jdm9pZCBTZXRJbnB1dENoYW5uZWxMYXlvdXQoaW50NjRf dCBjaGFubmVsX2xheW91dCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaWNsIiwg Y2hhbm5lbF9sYXlvdXQsIDApOworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaWNoIiwg YXZfZ2V0X2NoYW5uZWxfbGF5b3V0X25iX2NoYW5uZWxzKGNoYW5uZWxfbGF5b3V0KSwgMCk7Cisr CXZvaWQgU2V0SW5wdXRDaGFubmVsTGF5b3V0KEFWQ2hhbm5lbExheW91dCAqY2hhbm5lbF9sYXlv dXQpIHsKKysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImluX2NoYW5uZWxfbGF5b3V0Iiwg Y2hhbm5lbF9sYXlvdXQtPnUubWFzaywgMCk7CisgCX0KKworIAl2b2lkIFNldElucHV0U2FtcGxl Rm9ybWF0KEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9mb3JtYXQpIHsKKy0JCWF2X29wdF9zZXRfaW50 KG1fc3dyX2N0eCwgImlzZiIsIHNhbXBsZV9mb3JtYXQsIDApOworKwkJYXZfb3B0X3NldF9zYW1w bGVfZm10KG1fc3dyX2N0eCwgImluX3NhbXBsZV9mbXQiLCBzYW1wbGVfZm9ybWF0LCAwKTsKKyAJ fQorCisgCXZvaWQgU2V0SW5wdXRTYW1wbGVSYXRlKGludCBzYW1wbGVfcmF0ZSkgeworLQkJYXZf b3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaXNyIiwgc2FtcGxlX3JhdGUsIDApOworKwkJYXZfb3B0 X3NldF9pbnQobV9zd3JfY3R4LCAiaW5fc2FtcGxlX3JhdGUiLCBzYW1wbGVfcmF0ZSwgMCk7Cisg CX0KKworLQl2b2lkIFNldE91dHB1dENoYW5uZWxMYXlvdXQoaW50NjRfdCBjaGFubmVsX2xheW91 dCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib2NsIiwgY2hhbm5lbF9sYXlvdXQs IDApOworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib2NoIiwgYXZfZ2V0X2NoYW5uZWxf bGF5b3V0X25iX2NoYW5uZWxzKGNoYW5uZWxfbGF5b3V0KSwgMCk7CisrCXZvaWQgU2V0T3V0cHV0 Q2hhbm5lbExheW91dChBVkNoYW5uZWxMYXlvdXQgKmNoYW5uZWxfbGF5b3V0KSB7CisrCQlhdl9v cHRfc2V0X2ludChtX3N3cl9jdHgsICJvdXRfY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xheW91 dC0+dS5tYXNrLCAwKTsKKyAJfQorCisgCXZvaWQgU2V0T3V0cHV0U2FtcGxlRm9ybWF0KEFWU2Ft cGxlRm9ybWF0IHNhbXBsZV9mb3JtYXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwg Im9zZiIsIHNhbXBsZV9mb3JtYXQsIDApOworKwkJYXZfb3B0X3NldF9zYW1wbGVfZm10KG1fc3dy X2N0eCwgIm91dF9zYW1wbGVfZm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CisgCX0KKworIAl2b2lk IFNldE91dHB1dFNhbXBsZVJhdGUoaW50IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2lu dChtX3N3cl9jdHgsICJvc3IiLCBzYW1wbGVfcmF0ZSwgMCk7CisrCQlhdl9vcHRfc2V0X2ludCht X3N3cl9jdHgsICJvdXRfc2FtcGxlX3JhdGUiLCBzYW1wbGVfcmF0ZSwgMCk7CisgCX0KKworIAlp bnQgSW5pdCgpIHsKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlci5o IGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaAoraW5kZXggNTU1MDE2NC4uMWM2YjM0 NiAxMDA2NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmgKKysrKyBiL3Ny Yy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmgKK0BAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK KyAJYm9vbCBSZWFkKGNvbnN0IGludDE2X3QgKipkYXRhLCBzaXplX3QgKnNpemUpOworCisgCWJv b2wgSXNPcGVuKCkgY29uc3QgeyByZXR1cm4gbV9vcGVuZWQ7IH0KKy0JYm9vbCBJc0ZpbmlzaGVk KCkgY29uc3QgeyByZXR1cm4gbV9maW5pc2hlZCAmJiAhbV9nb3RfZnJhbWU7IH0KKysJYm9vbCBJ c0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gIW1faGFzX21vcmVfcGFja2V0cyAmJiAhbV9oYXNf bW9yZV9mcmFtZXM7IH0KKworIAlzdGQ6OnN0cmluZyBHZXRFcnJvcigpIGNvbnN0IHsgcmV0dXJu IG1fZXJyb3I7IH0KKyAJaW50IEdldEVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3Jf Y29kZTsgfQorQEAgLTc0LDIwICs3NCwxOSBAQCBwcml2YXRlOgorIAl1aW50OF90ICptX2NvbnZl cnRfYnVmZmVyWzFdID0geyBudWxscHRyIH07CisgCWludCBtX2NvbnZlcnRfYnVmZmVyX25iX3Nh bXBsZXMgPSAwOworCistCUFWSW5wdXRGb3JtYXQgKm1faW5wdXRfZm10ID0gbnVsbHB0cjsKKysJ Y29uc3QgQVZJbnB1dEZvcm1hdCAqbV9pbnB1dF9mbXQgPSBudWxscHRyOworIAlBVkRpY3Rpb25h cnkgKm1faW5wdXRfb3B0cyA9IG51bGxwdHI7CisKKyAJQVZGb3JtYXRDb250ZXh0ICptX2Zvcm1h dF9jdHggPSBudWxscHRyOworIAlBVkNvZGVjQ29udGV4dCAqbV9jb2RlY19jdHggPSBudWxscHRy OworLQlBVkZyYW1lICptX2ZyYW1lID0gbnVsbHB0cjsKKyAJaW50IG1fc3RyZWFtX2luZGV4ID0g LTE7CisgCXN0ZDo6c3RyaW5nIG1fZXJyb3I7CisgCWludCBtX2Vycm9yX2NvZGUgPSAwOworLQli b29sIG1fZmluaXNoZWQgPSBmYWxzZTsKKyAJYm9vbCBtX29wZW5lZCA9IGZhbHNlOworLQlpbnQg bV9nb3RfZnJhbWUgPSAwOworLQlBVlBhY2tldCBtX3BhY2tldDsKKy0JQVZQYWNrZXQgbV9wYWNr ZXQwOworKwlib29sIG1faGFzX21vcmVfcGFja2V0cyA9IHRydWU7CisrCWJvb2wgbV9oYXNfbW9y ZV9mcmFtZXMgPSB0cnVlOworKwlBVlBhY2tldCAqbV9wYWNrZXQgPSBudWxscHRyOworKwlBVkZy YW1lICptX2ZyYW1lID0gbnVsbHB0cjsKKworIAlpbnQgbV9vdXRwdXRfc2FtcGxlX3JhdGUgPSAw OworIAlpbnQgbV9vdXRwdXRfY2hhbm5lbHMgPSAwOworQEAgLTk4LDE5ICs5NywxMiBAQCBwcml2 YXRlOgorCisgaW5saW5lIEZGbXBlZ0F1ZGlvUmVhZGVyOjpGRm1wZWdBdWRpb1JlYWRlcigpIHsK KyAJYXZfbG9nX3NldF9sZXZlbChBVl9MT0dfUVVJRVQpOworLQorLQlhdl9pbml0X3BhY2tldCgm bV9wYWNrZXQpOworLQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JbV9wYWNrZXQuc2l6ZSA9 IDA7CistCistCW1fcGFja2V0MCA9IG1fcGFja2V0OworIH0KKworIGlubGluZSBGRm1wZWdBdWRp b1JlYWRlcjo6fkZGbXBlZ0F1ZGlvUmVhZGVyKCkgeworIAlDbG9zZSgpOworIAlhdl9kaWN0X2Zy ZWUoJm1faW5wdXRfb3B0cyk7CisgCWF2X2ZyZWVwKCZtX2NvbnZlcnRfYnVmZmVyWzBdKTsKKy0J YXZfcGFja2V0X3VucmVmKCZtX3BhY2tldDApOworIH0KKworIGlubGluZSBib29sIEZGbXBlZ0F1 ZGlvUmVhZGVyOjpTZXRJbnB1dEZvcm1hdChjb25zdCBjaGFyICpuYW1lKSB7CitAQCAtMTM1LDEx ICsxMjcsMTAgQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3Rk OjpzdHJpbmcgJmZpbGVfbmFtZSkgeworCisgCUNsb3NlKCk7CisKKy0gICAgYXZfaW5pdF9wYWNr ZXQoJm1fcGFja2V0KTsKKy0JbV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7CistCW1fcGFja2V0LnNp emUgPSAwOworLQorLQltX3BhY2tldDAgPSBtX3BhY2tldDsKKysJbV9wYWNrZXQgPSBhdl9wYWNr ZXRfYWxsb2MoKTsKKysJaWYgKCFtX3BhY2tldCkgeworKwkJcmV0dXJuIGZhbHNlOworKwl9CisK KyAJcmV0ID0gYXZmb3JtYXRfb3Blbl9pbnB1dCgmbV9mb3JtYXRfY3R4LCBmaWxlX25hbWUuY19z dHIoKSwgbV9pbnB1dF9mbXQsICZtX2lucHV0X29wdHMpOworIAlpZiAocmV0IDwgMCkgeworQEAg LTE1MywyNiArMTQ0LDMxIEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNv bnN0IHN0ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorCist CUFWQ29kZWMgKmNvZGVjOworKwljb25zdCBBVkNvZGVjICpjb2RlYzsKKyAJcmV0ID0gYXZfZmlu ZF9iZXN0X3N0cmVhbShtX2Zvcm1hdF9jdHgsIEFWTUVESUFfVFlQRV9BVURJTywgLTEsIC0xLCAm Y29kZWMsIDApOworIAlpZiAocmV0IDwgMCkgeworIAkJU2V0RXJyb3IoIkNvdWxkIG5vdCBmaW5k IGFueSBhdWRpbyBzdHJlYW0gaW4gdGhlIGZpbGUiLCByZXQpOworIAkJcmV0dXJuIGZhbHNlOwor IAl9CisgCW1fc3RyZWFtX2luZGV4ID0gcmV0OworKwlhdXRvIHN0cmVhbSA9IG1fZm9ybWF0X2N0 eC0+c3RyZWFtc1ttX3N0cmVhbV9pbmRleF07CisKKy0JbV9jb2RlY19jdHggPSBtX2Zvcm1hdF9j dHgtPnN0cmVhbXNbbV9zdHJlYW1faW5kZXhdLT5jb2RlYzsKKysJbV9jb2RlY19jdHggPSBhdmNv ZGVjX2FsbG9jX2NvbnRleHQzKGNvZGVjKTsKKyAJbV9jb2RlY19jdHgtPnJlcXVlc3Rfc2FtcGxl X2ZtdCA9IEFWX1NBTVBMRV9GTVRfUzE2OworCisrCXJldCA9IGF2Y29kZWNfcGFyYW1ldGVyc190 b19jb250ZXh0KG1fY29kZWNfY3R4LCBzdHJlYW0tPmNvZGVjcGFyKTsKKysJaWYgKHJldCA8IDAp IHsKKysJCVNldEVycm9yKCJDb3VsZCBub3QgY29weSB0aGUgc3RyZWFtIHBhcmFtZXRlcnMiLCBy ZXQpOworKwkJcmV0dXJuIGZhbHNlOworKwl9CisrCisgCXJldCA9IGF2Y29kZWNfb3BlbjIobV9j b2RlY19jdHgsIGNvZGVjLCBudWxscHRyKTsKKyAJaWYgKHJldCA8IDApIHsKKyAJCVNldEVycm9y KCJDb3VsZCBub3Qgb3BlbiB0aGUgY29kZWMiLCByZXQpOworIAkJcmV0dXJuIGZhbHNlOworIAl9 CisKKy0JaWYgKCFtX2NvZGVjX2N0eC0+Y2hhbm5lbF9sYXlvdXQpIHsKKy0JCW1fY29kZWNfY3R4 LT5jaGFubmVsX2xheW91dCA9IGF2X2dldF9kZWZhdWx0X2NoYW5uZWxfbGF5b3V0KG1fY29kZWNf Y3R4LT5jaGFubmVscyk7CistCX0KKysJYXZfZHVtcF9mb3JtYXQobV9mb3JtYXRfY3R4LCAwLCAi Zm9vIiwgMCk7CisKKyAJbV9mcmFtZSA9IGF2X2ZyYW1lX2FsbG9jKCk7CisgCWlmICghbV9mcmFt ZSkgeworQEAgLTE4MywxOSArMTc5LDIzIEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVy OjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKyAJCW1fb3V0cHV0X3NhbXBs ZV9yYXRlID0gbV9jb2RlY19jdHgtPnNhbXBsZV9yYXRlOworIAl9CisKKy0JaWYgKCFtX291dHB1 dF9jaGFubmVscykgeworLQkJbV9vdXRwdXRfY2hhbm5lbHMgPSBtX2NvZGVjX2N0eC0+Y2hhbm5l bHM7CisrCUFWQ2hhbm5lbExheW91dCBvdXRwdXRfY2hhbm5lbF9sYXlvdXQ7CisrCWlmIChtX291 dHB1dF9jaGFubmVscykgeworKwkJYXZfY2hhbm5lbF9sYXlvdXRfZGVmYXVsdCgmb3V0cHV0X2No YW5uZWxfbGF5b3V0LCBtX291dHB1dF9jaGFubmVscyk7CisrCX0gZWxzZSB7CisrCQltX291dHB1 dF9jaGFubmVscyA9IG1fY29kZWNfY3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7CisrCQlhdl9j aGFubmVsX2xheW91dF9kZWZhdWx0KCZvdXRwdXRfY2hhbm5lbF9sYXlvdXQsIG1fb3V0cHV0X2No YW5uZWxzKTsKKyAJfQorCistCWlmIChtX2NvZGVjX2N0eC0+c2FtcGxlX2ZtdCAhPSBBVl9TQU1Q TEVfRk1UX1MxNiB8fCBtX2NvZGVjX2N0eC0+Y2hhbm5lbHMgIT0gbV9vdXRwdXRfY2hhbm5lbHMg fHwgbV9jb2RlY19jdHgtPnNhbXBsZV9yYXRlICE9IG1fb3V0cHV0X3NhbXBsZV9yYXRlKSB7Cisr CWlmIChtX2NvZGVjX2N0eC0+c2FtcGxlX2ZtdCAhPSBBVl9TQU1QTEVfRk1UX1MxNiB8fCBtX2Nv ZGVjX2N0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzICE9IG1fb3V0cHV0X2NoYW5uZWxzIHx8IG1f Y29kZWNfY3R4LT5zYW1wbGVfcmF0ZSAhPSBtX291dHB1dF9zYW1wbGVfcmF0ZSkgeworIAkJbV9j b252ZXJ0ZXIucmVzZXQobmV3IEZGbXBlZ0F1ZGlvUHJvY2Vzc29yKCkpOworIAkJbV9jb252ZXJ0 ZXItPlNldENvbXBhdGlibGVNb2RlKCk7CisgCQltX2NvbnZlcnRlci0+U2V0SW5wdXRTYW1wbGVG b3JtYXQobV9jb2RlY19jdHgtPnNhbXBsZV9mbXQpOworIAkJbV9jb252ZXJ0ZXItPlNldElucHV0 U2FtcGxlUmF0ZShtX2NvZGVjX2N0eC0+c2FtcGxlX3JhdGUpOworLQkJbV9jb252ZXJ0ZXItPlNl dElucHV0Q2hhbm5lbExheW91dChtX2NvZGVjX2N0eC0+Y2hhbm5lbF9sYXlvdXQpOworKwkJbV9j b252ZXJ0ZXItPlNldElucHV0Q2hhbm5lbExheW91dCgmKG1fY29kZWNfY3R4LT5jaF9sYXlvdXQp KTsKKyAJCW1fY29udmVydGVyLT5TZXRPdXRwdXRTYW1wbGVGb3JtYXQoQVZfU0FNUExFX0ZNVF9T MTYpOworIAkJbV9jb252ZXJ0ZXItPlNldE91dHB1dFNhbXBsZVJhdGUobV9vdXRwdXRfc2FtcGxl X3JhdGUpOworLQkJbV9jb252ZXJ0ZXItPlNldE91dHB1dENoYW5uZWxMYXlvdXQoYXZfZ2V0X2Rl ZmF1bHRfY2hhbm5lbF9sYXlvdXQobV9vdXRwdXRfY2hhbm5lbHMpKTsKKysJCW1fY29udmVydGVy LT5TZXRPdXRwdXRDaGFubmVsTGF5b3V0KCZvdXRwdXRfY2hhbm5lbF9sYXlvdXQpOworIAkJYXV0 byByZXQgPSBtX2NvbnZlcnRlci0+SW5pdCgpOworIAkJaWYgKHJldCAhPSAwKSB7CisgCQkJU2V0 RXJyb3IoIkNvdWxkIG5vdCBjcmVhdGUgYW4gYXVkaW8gY29udmVydGVyIGluc3RhbmNlIiwgcmV0 KTsKK0BAIC0yMDMsMTAgKzIwMywxMSBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6 T3Blbihjb25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1lKSB7CisgCQl9CisgCX0KKworKwlhdl9j aGFubmVsX2xheW91dF91bmluaXQoJm91dHB1dF9jaGFubmVsX2xheW91dCk7CisrCisgCW1fb3Bl bmVkID0gdHJ1ZTsKKy0JbV9maW5pc2hlZCA9IGZhbHNlOworLQltX2dvdF9mcmFtZSA9IDA7Cist CW1fbmJfcGFja2V0cyA9IDA7CisrCW1faGFzX21vcmVfcGFja2V0cyA9IHRydWU7CisrCW1faGFz X21vcmVfZnJhbWVzID0gdHJ1ZTsKKyAJbV9kZWNvZGVfZXJyb3IgPSAwOworCisgCXJldHVybiB0 cnVlOworQEAgLTIxNCw2ICsyMTUsNyBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6 T3Blbihjb25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1lKSB7CisKKyBpbmxpbmUgdm9pZCBGRm1w ZWdBdWRpb1JlYWRlcjo6Q2xvc2UoKSB7CisgCWF2X2ZyYW1lX2ZyZWUoJm1fZnJhbWUpOworKwlh dl9wYWNrZXRfZnJlZSgmbV9wYWNrZXQpOworCisgCW1fc3RyZWFtX2luZGV4ID0gLTE7CisKK0BA IC0yNTIsOTEgKzI1NCw5OCBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6UmVhZChj b25zdCBpbnQxNl90ICoqZGF0YSwgc2l6ZV90ICpzaXplKSB7CisgCQlyZXR1cm4gZmFsc2U7Cisg CX0KKworKwkqZGF0YSA9IG51bGxwdHI7CisrCSpzaXplID0gMDsKKysKKyAJaW50IHJldDsKKysJ Ym9vbCBuZWVkc19wYWNrZXQgPSBmYWxzZTsKKyAJd2hpbGUgKHRydWUpIHsKKy0JCXdoaWxlICht X3BhY2tldC5zaXplIDw9IDApIHsKKy0JCQlhdl9wYWNrZXRfdW5yZWYoJm1fcGFja2V0MCk7Cist CQkJYXZfaW5pdF9wYWNrZXQoJm1fcGFja2V0KTsKKy0JCQltX3BhY2tldC5kYXRhID0gbnVsbHB0 cjsKKy0JCQltX3BhY2tldC5zaXplID0gMDsKKy0JCQlyZXQgPSBhdl9yZWFkX2ZyYW1lKG1fZm9y bWF0X2N0eCwgJm1fcGFja2V0KTsKKysJCXdoaWxlIChuZWVkc19wYWNrZXQgJiYgbV9wYWNrZXQt PnNpemUgPT0gMCkgeworKwkJCXJldCA9IGF2X3JlYWRfZnJhbWUobV9mb3JtYXRfY3R4LCBtX3Bh Y2tldCk7CisgCQkJaWYgKHJldCA8IDApIHsKKyAJCQkJaWYgKHJldCA9PSBBVkVSUk9SX0VPRikg eworLQkJCQkJbV9maW5pc2hlZCA9IHRydWU7CisrCQkJCQluZWVkc19wYWNrZXQgPSBmYWxzZTsK KysJCQkJCW1faGFzX21vcmVfcGFja2V0cyA9IGZhbHNlOworIAkJCQkJYnJlYWs7CistCQkJCX0g ZWxzZSB7CisrCQkJCX0KKysJCQkJU2V0RXJyb3IoIkVycm9yIHJlYWRpbmcgZnJvbSB0aGUgYXVk aW8gc291cmNlIiwgcmV0KTsKKysJCQkJcmV0dXJuIGZhbHNlOworKwkJCX0KKysJCQlpZiAobV9w YWNrZXQtPnN0cmVhbV9pbmRleCA9PSBtX3N0cmVhbV9pbmRleCkgeworKwkJCQluZWVkc19wYWNr ZXQgPSBmYWxzZTsKKysJCQl9IGVsc2UgeworKwkJCQlhdl9wYWNrZXRfdW5yZWYobV9wYWNrZXQp OworKwkJCX0KKysJCX0KKysKKysJCWlmIChtX3BhY2tldC0+c2l6ZSAhPSAwKSB7CisrCQkJcmV0 ID0gYXZjb2RlY19zZW5kX3BhY2tldChtX2NvZGVjX2N0eCwgbV9wYWNrZXQpOworKwkJCWlmIChy ZXQgPCAwKSB7CisrCQkJCWlmIChyZXQgIT0gQVZFUlJPUihFQUdBSU4pKSB7CisgCQkJCQlTZXRF cnJvcigiRXJyb3IgcmVhZGluZyBmcm9tIHRoZSBhdWRpbyBzb3VyY2UiLCByZXQpOworIAkJCQkJ cmV0dXJuIGZhbHNlOworIAkJCQl9CistCQkJfQorLQkJCW1fcGFja2V0MCA9IG1fcGFja2V0Owor LQkJCWlmIChtX3BhY2tldC5zdHJlYW1faW5kZXggIT0gbV9zdHJlYW1faW5kZXgpIHsKKy0JCQkJ bV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7CistCQkJCW1fcGFja2V0LnNpemUgPSAwOworIAkJCX0g ZWxzZSB7CistCQkJCW1fbmJfcGFja2V0cysrOworKwkJCQlhdl9wYWNrZXRfdW5yZWYobV9wYWNr ZXQpOworIAkJCX0KKyAJCX0KKworLQkJcmV0ID0gYXZjb2RlY19kZWNvZGVfYXVkaW80KG1fY29k ZWNfY3R4LCBtX2ZyYW1lLCAmbV9nb3RfZnJhbWUsICZtX3BhY2tldCk7CisrCQlyZXQgPSBhdmNv ZGVjX3JlY2VpdmVfZnJhbWUobV9jb2RlY19jdHgsIG1fZnJhbWUpOworIAkJaWYgKHJldCA8IDAp IHsKKy0JCQlpZiAobV9kZWNvZGVfZXJyb3IpIHsKKy0JCQkJU2V0RXJyb3IoIkVycm9yIGRlY29k aW5nIGF1ZGlvIGZyYW1lIiwgbV9kZWNvZGVfZXJyb3IpOworLQkJCQlyZXR1cm4gZmFsc2U7Cisr CQkJaWYgKHJldCA9PSBBVkVSUk9SX0VPRikgeworKwkJCQltX2hhc19tb3JlX2ZyYW1lcyA9IGZh bHNlOworKwkJCX0gZWxzZSBpZiAocmV0ID09IEFWRVJST1IoRUFHQUlOKSkgeworKwkJCQlpZiAo bV9oYXNfbW9yZV9wYWNrZXRzKSB7CisrCQkJCQluZWVkc19wYWNrZXQgPSB0cnVlOworKwkJCQkJ Y29udGludWU7CisrCQkJCX0gZWxzZSB7CisrCQkJCQltX2hhc19tb3JlX2ZyYW1lcyA9IGZhbHNl OworKwkJCQl9CisgCQkJfQorLQkJCW1fZGVjb2RlX2Vycm9yID0gcmV0OworLQkJCW1fcGFja2V0 LmRhdGEgPSBudWxscHRyOworLQkJCW1fcGFja2V0LnNpemUgPSAwOworLQkJCWNvbnRpbnVlOwor KwkJCVNldEVycm9yKCJFcnJvciBkZWNvZGluZyB0aGUgYXVkaW8gc291cmNlIiwgcmV0KTsKKysJ CQlyZXR1cm4gZmFsc2U7CisgCQl9CisKKy0JCWJyZWFrOworLQl9CistCistCW1fZGVjb2RlX2Vy cm9yID0gMDsKKy0KKy0JY29uc3QgaW50IGRlY29kZWQgPSBzdGQ6Om1pbihyZXQsIG1fcGFja2V0 LnNpemUpOworLQltX3BhY2tldC5kYXRhICs9IGRlY29kZWQ7CistCW1fcGFja2V0LnNpemUgLT0g ZGVjb2RlZDsKKy0KKy0JaWYgKG1fZ290X2ZyYW1lKSB7CistCQlpZiAobV9jb252ZXJ0ZXIpIHsK Ky0JCQlpZiAobV9mcmFtZS0+bmJfc2FtcGxlcyA+IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxl cykgeworLQkJCQlpbnQgbGluc2l6ZTsKKy0JCQkJYXZfZnJlZXAoJm1fY29udmVydF9idWZmZXJb MF0pOworLQkJCQltX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMgPSBzdGQ6Om1heCgxMDI0ICog OCwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7CistCQkJCXJldCA9IGF2X3NhbXBsZXNfYWxsb2MobV9j b252ZXJ0X2J1ZmZlciwgJmxpbnNpemUsIG1fY29kZWNfY3R4LT5jaGFubmVscywgbV9jb252ZXJ0 X2J1ZmZlcl9uYl9zYW1wbGVzLCBBVl9TQU1QTEVfRk1UX1MxNiwgMSk7CistCQkJCWlmIChyZXQg PCAwKSB7CistCQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgYWxsb2NhdGUgYXVkaW8gY29udmVydGVy IGJ1ZmZlciIsIHJldCk7CisrCQlpZiAobV9mcmFtZS0+bmJfc2FtcGxlcyA+IDApIHsKKysJCQlp ZiAobV9jb252ZXJ0ZXIpIHsKKysJCQkJaWYgKG1fZnJhbWUtPm5iX3NhbXBsZXMgPiBtX2NvbnZl cnRfYnVmZmVyX25iX3NhbXBsZXMpIHsKKysJCQkJCWludCBsaW5zaXplOworKwkJCQkJYXZfZnJl ZXAoJm1fY29udmVydF9idWZmZXJbMF0pOworKwkJCQkJbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1w bGVzID0gc3RkOjptYXgoMTAyNCAqIDgsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOworKwkJCQkJcmV0 ID0gYXZfc2FtcGxlc19hbGxvYyhtX2NvbnZlcnRfYnVmZmVyLCAmbGluc2l6ZSwgbV9jb2RlY19j dHgtPmNoX2xheW91dC5uYl9jaGFubmVscywgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzLCBB Vl9TQU1QTEVfRk1UX1MxNiwgMSk7CisrCQkJCQlpZiAocmV0IDwgMCkgeworKwkJCQkJCVNldEVy cm9yKCJDb3VsZG4ndCBhbGxvY2F0ZSBhdWRpbyBjb252ZXJ0ZXIgYnVmZmVyIiwgcmV0KTsKKysJ CQkJCQlyZXR1cm4gZmFsc2U7CisrCQkJCQl9CisrCQkJCX0KKysJCQkJYXV0byBuYl9zYW1wbGVz ID0gbV9jb252ZXJ0ZXItPkNvbnZlcnQobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZl cl9uYl9zYW1wbGVzLCAoY29uc3QgdWludDhfdCAqKikgbV9mcmFtZS0+ZGF0YSwgbV9mcmFtZS0+ bmJfc2FtcGxlcyk7CisrCQkJCWlmIChuYl9zYW1wbGVzIDwgMCkgeworKwkJCQkJU2V0RXJyb3Io IkNvdWxkbid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOworIAkJCQkJcmV0dXJuIGZhbHNlOworIAkJ CQl9CistCQkJfQorLQkJCWF1dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5Db252ZXJ0KG1f Y29udmVydF9idWZmZXIsIG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcywgKGNvbnN0IHVpbnQ4 X3QgKiopIG1fZnJhbWUtPmRhdGEsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOworLQkJCWlmIChuYl9z YW1wbGVzIDwgMCkgeworLQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIsIHJl dCk7CistCQkJCXJldHVybiBmYWxzZTsKKy0JCQl9CistCQkJKmRhdGEgPSAoY29uc3QgaW50MTZf dCAqKSBtX2NvbnZlcnRfYnVmZmVyWzBdOworLQkJCSpzaXplID0gbmJfc2FtcGxlczsKKy0JCX0g ZWxzZSB7CistCQkJKmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2ZyYW1lLT5kYXRhWzBdOwor LQkJCSpzaXplID0gbV9mcmFtZS0+bmJfc2FtcGxlczsKKy0JCX0KKy0JfSBlbHNlIHsKKy0JCWlm IChtX2ZpbmlzaGVkICYmIG1fY29udmVydGVyKSB7CistCQkJYXV0byBuYl9zYW1wbGVzID0gbV9j b252ZXJ0ZXItPkZsdXNoKG1fY29udmVydF9idWZmZXIsIG1fY29udmVydF9idWZmZXJfbmJfc2Ft cGxlcyk7CistCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7CistCQkJCVNldEVycm9yKCJDb3VsZG4n dCBjb252ZXJ0IGF1ZGlvIiwgcmV0KTsKKy0JCQkJcmV0dXJuIGZhbHNlOworLQkJCX0gZWxzZSBp ZiAobmJfc2FtcGxlcyA+IDApIHsKKy0JCQkJbV9nb3RfZnJhbWUgPSAxOworIAkJCQkqZGF0YSA9 IChjb25zdCBpbnQxNl90ICopIG1fY29udmVydF9idWZmZXJbMF07CisgCQkJCSpzaXplID0gbmJf c2FtcGxlczsKKysJCQl9IGVsc2UgeworKwkJCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1f ZnJhbWUtPmRhdGFbMF07CisrCQkJCSpzaXplID0gbV9mcmFtZS0+bmJfc2FtcGxlczsKKysJCQl9 CisrCQl9IGVsc2UgeworKwkJCWlmIChtX2NvbnZlcnRlcikgeworKwkJCQlpZiAoSXNGaW5pc2hl ZCgpKSB7CisrCQkJCQlhdXRvIG5iX3NhbXBsZXMgPSBtX2NvbnZlcnRlci0+Rmx1c2gobV9jb252 ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKTsKKysJCQkJCWlmIChuYl9z YW1wbGVzIDwgMCkgeworKwkJCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlvIiwg cmV0KTsKKysJCQkJCQlyZXR1cm4gZmFsc2U7CisrCQkJCQl9IGVsc2UgaWYgKG5iX3NhbXBsZXMg PiAwKSB7CisrCQkJCQkJKmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2NvbnZlcnRfYnVmZmVy WzBdOworKwkJCQkJCSpzaXplID0gbmJfc2FtcGxlczsKKysJCQkJCX0KKysJCQkJfQorIAkJCX0K KyAJCX0KKy0JfQorCistCXJldHVybiB0cnVlOworKwkJcmV0dXJuIHRydWU7CisrCX0KKyB9CisK KyBpbmxpbmUgdm9pZCBGRm1wZWdBdWRpb1JlYWRlcjo6U2V0RXJyb3IoY29uc3QgY2hhciAqbWVz c2FnZSwgaW50IGVycm51bSkgeworZGlmZiAtLWdpdCBhL3Rlc3RzL0NNYWtlTGlzdHMudHh0IGIv dGVzdHMvQ01ha2VMaXN0cy50eHQKK2luZGV4IGEyYjUxN2IuLjEyM2U2NDMgMTAwNjQ0CistLS0g YS90ZXN0cy9DTWFrZUxpc3RzLnR4dAorKysrIGIvdGVzdHMvQ01ha2VMaXN0cy50eHQKK0BAIC0z OCw2ICszOCwxMiBAQCBzZXQoU1JDUworCisgaWYoQlVJTERfVE9PTFMpCisgCXNldChTUkNTICR7 U1JDU30gLi4vc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXJfdGVzdC5jcHApCisrICAgIGlu Y2x1ZGVfZGlyZWN0b3JpZXMoCisrICAgICAgICAke0ZGTVBFR19MSUJBVkZPUk1BVF9JTkNMVURF X0RJUlN9CisrICAgICAgICAke0ZGTVBFR19MSUJBVkNPREVDX0lOQ0xVREVfRElSU30KKysgICAg ICAgICR7RkZNUEVHX0xJQkFWVVRJTF9JTkNMVURFX0RJUlN9CisrICAgICAgICAke0FVRElPX1BS T0NFU1NPUl9JTkNMVURFX0RJUlN9CisrICAgICkKKyAJbGlua19saWJyYXJpZXMoZnBjYWxjX2xp YnMpCisgZW5kaWYoKQorCistLSAKKzIuMzguMQorCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hy b21hcHJpbnQvdGVtcGxhdGUgYi9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlCmluZGV4IDdl Zjc4Mzg5NDlmMy4uMWY3YmJjNzBhMjJjIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Nocm9tYXByaW50 L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjaHJvbWFwcmludCcKIHBrZ25hbWU9Y2hyb21hcHJp bnQKIHZlcnNpb249MS41LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNt YWtlCiBjb25maWd1cmVfYXJncz0iLURCVUlMRF9UT09MUz1PTiIKIG1ha2VfY2hlY2tfdGFyZ2V0 PSJjaGVjayIKCkZyb20gMWM2ZGE2ZDFkMmNmNmJhZmRkZDVkOTQ3YzZjOWQ0NGU1ZWE5ZTcyOCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI0 LzExM10gY2hyb21pdW06IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL3BhdGNoZXMv Y2hyb21pdW0tOTMtZmZtcGVnLTQuNC5wYXRjaCAgICAgIHwgMzYgLS0tLS0tLS0tLS0tLS0KIHNy Y3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoICAgICAgICB8IDQ3ICsrKysrKysr KysrKysrKysrKysKIHNyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUgICAgICAgICAgICAgICAgICAg ICB8ICAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9u cygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1 bS05My1mZm1wZWctNC40LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWl1 bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9taXVtL3Bh dGNoZXMvY2hyb21pdW0tOTMtZmZtcGVnLTQuNC5wYXRjaCBiL3NyY3BrZ3MvY2hyb21pdW0vcGF0 Y2hlcy9jaHJvbWl1bS05My1mZm1wZWctNC40LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBmMGVjNzM2Zjk4YmMuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Nocm9taXVt L3BhdGNoZXMvY2hyb21pdW0tOTMtZmZtcGVnLTQuNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDM2ICswLDAgQEAKLWRpZmYgLS1naXQgYS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNj IGIvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwotaW5kZXggYWM0NzEzYjA3MjY4Li40 OTJhOWEzN2QwOTYgMTAwNjQ0Ci0tLS0gYS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNj Ci0rKysgYi9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCi1AQCAtNDI3LDExICs0Mjcs MTEgQEAgdm9pZCBGRm1wZWdEZW11eGVyU3RyZWFtOjpFbnF1ZXVlUGFja2V0KFNjb3BlZEFWUGFj a2V0IHBhY2tldCkgewotICAgc2NvcGVkX3JlZnB0cjxEZWNvZGVyQnVmZmVyPiBidWZmZXI7Ci0g Ci0gICBpZiAodHlwZSgpID09IERlbXV4ZXJTdHJlYW06OlRFWFQpIHsKLS0gICAgc2l6ZV90IGlk X3NpemUgPSAwOwotKyAgICBpbnQgaWRfc2l6ZSA9IDA7Ci0gICAgIHVpbnQ4X3QqIGlkX2RhdGEg PSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtU X0RBVEFfV0VCVlRUX0lERU5USUZJRVIsICZpZF9zaXplKTsKLSAKLS0gICAgc2l6ZV90IHNldHRp bmdzX3NpemUgPSAwOwotKyAgICBpbnQgc2V0dGluZ3Nfc2l6ZSA9IDA7Ci0gICAgIHVpbnQ4X3Qq IHNldHRpbmdzX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgIHBhY2tl dC5nZXQoKSwgQVZfUEtUX0RBVEFfV0VCVlRUX1NFVFRJTkdTLCAmc2V0dGluZ3Nfc2l6ZSk7Ci0g Ci1AQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgRkZtcGVnRGVtdXhlclN0cmVhbTo6RW5xdWV1ZVBh Y2tldChTY29wZWRBVlBhY2tldCBwYWNrZXQpIHsKLSAgICAgYnVmZmVyID0gRGVjb2RlckJ1ZmZl cjo6Q29weUZyb20ocGFja2V0LT5kYXRhLCBwYWNrZXQtPnNpemUsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpZGVfZGF0YS5kYXRhKCksIHNpZGVfZGF0YS5zaXplKCkp OwotICAgfSBlbHNlIHsKLS0gICAgc2l6ZV90IHNpZGVfZGF0YV9zaXplID0gMDsKLSsgICAgaW50 IHNpZGVfZGF0YV9zaXplID0gMDsKLSAgICAgdWludDhfdCogc2lkZV9kYXRhID0gYXZfcGFja2V0 X2dldF9zaWRlX2RhdGEoCi0gICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX01BVFJP U0tBX0JMT0NLQURESVRJT05BTCwgJnNpZGVfZGF0YV9zaXplKTsKLSAKLUBAIC01MDQsNyArNTA0 LDcgQEAgdm9pZCBGRm1wZWdEZW11eGVyU3RyZWFtOjpFbnF1ZXVlUGFja2V0KFNjb3BlZEFWUGFj a2V0IHBhY2tldCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh Y2tldC0+c2l6ZSAtIGRhdGFfb2Zmc2V0KTsKLSAgICAgfQotIAotLSAgICBzaXplX3Qgc2tpcF9z YW1wbGVzX3NpemUgPSAwOwotKyAgICBpbnQgc2tpcF9zYW1wbGVzX3NpemUgPSAwOwotICAgICBj b25zdCB1aW50MzJfdCogc2tpcF9zYW1wbGVzX3B0ciA9Ci0gICAgICAgICByZWludGVycHJldF9j YXN0PGNvbnN0IHVpbnQzMl90Kj4oYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCi0gICAgICAgICAg ICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9TS0lQX1NBTVBMRVMsICZza2lwX3NhbXBsZXNf c2l6ZSkpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2ggYi9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI0ZTJkYTM4ZTM0YwotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsNDcg QEAKKy0tLSBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJMjAyMy0wMS0yMyAxNzoz Mzo1Ny4zNjYyMTM4MDUgKzAyMDAKKysrKyBiL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIu Y2MJMjAyMy0wMS0yMyAxNzo0MzowOS4yODM0MzY5ODMgKzAyMDAKK0BAIC05MiwyNCArOTIsMTIg QEAKKyAKKyBzdGF0aWMgYmFzZTo6VGltZURlbHRhIEV4dHJhY3RTdGFydFRpbWUoQVZTdHJlYW0q IHN0cmVhbSkgeworICAgLy8gVGhlIGRlZmF1bHQgc3RhcnQgdGltZSBpcyB6ZXJvLgorLSAgYmFz ZTo6VGltZURlbHRhIHN0YXJ0X3RpbWU7CisrICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZSA9 IGtOb1RpbWVzdGFtcDsKKyAKKyAgIC8vIEZpcnN0IHRyeSB0byB1c2UgIHRoZSB8c3RhcnRfdGlt ZXwgdmFsdWUgYXMgaXMuCistICBpZiAoc3RyZWFtLT5zdGFydF90aW1lICE9IGtOb0ZGbXBlZ1Rp bWVzdGFtcCkKKysgIGlmIChzdHJlYW0tPnN0YXJ0X3RpbWUgIT0ga05vRkZtcGVnVGltZXN0YW1w KSAvLyBBVl9OT1BUU19WQUxVRQorICAgICBzdGFydF90aW1lID0gQ29udmVydEZyb21UaW1lQmFz ZShzdHJlYW0tPnRpbWVfYmFzZSwgc3RyZWFtLT5zdGFydF90aW1lKTsKKyAKKy0gIC8vIE5leHQg dHJ5IHRvIHVzZSB0aGUgZmlyc3QgRFRTIHZhbHVlLCBmb3IgY29kZWNzIHdoZXJlIHdlIGtub3cg UFRTID09IERUUworLSAgLy8gKGV4Y2x1ZGVzIGFsbCBIMjZ4IGNvZGVjcykuIFRoZSBzdGFydCB0 aW1lIG11c3QgYmUgcmV0dXJuZWQgaW4gUFRTLgorLSAgaWYgKGF2X3N0cmVhbV9nZXRfZmlyc3Rf ZHRzKHN0cmVhbSkgIT0ga05vRkZtcGVnVGltZXN0YW1wICYmCistICAgICAgc3RyZWFtLT5jb2Rl Y3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSEVWQyAmJgorLSAgICAgIHN0cmVhbS0+Y29k ZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0gyNjQgJiYKKy0gICAgICBzdHJlYW0tPmNv ZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NUEVHNCkgeworLSAgICBjb25zdCBiYXNl OjpUaW1lRGVsdGEgZmlyc3RfcHRzID0KKy0gICAgICAgIENvbnZlcnRGcm9tVGltZUJhc2Uoc3Ry ZWFtLT50aW1lX2Jhc2UsIGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0cmVhbSkpOworLSAgICBp ZiAoZmlyc3RfcHRzIDwgc3RhcnRfdGltZSkKKy0gICAgICBzdGFydF90aW1lID0gZmlyc3RfcHRz OworLSAgfQorLQorICAgcmV0dXJuIHN0YXJ0X3RpbWU7CisgfQorIAorQEAgLTE1OTcsNyArMTU4 NSw3IEBACisgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHN0cmVhbXNfKSB7CisgICAgIGlm ICghc3RyZWFtIHx8IHN0cmVhbS0+SXNFbmFibGVkKCkgIT0gZW5hYmxlZCkKKyAgICAgICBjb250 aW51ZTsKKy0gICAgaWYgKGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0cmVhbS0+YXZfc3RyZWFt KCkpID09IGtJbnZhbGlkUFRTTWFya2VyKQorKyAgICBpZiAoc3RyZWFtLT5hdl9zdHJlYW0oKS0+ c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICBjb250aW51ZTsKKyAgICAgaWYg KCFsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gfHwKKyAgICAgICAgIHN0cmVhbS0+c3RhcnRfdGlt ZSgpIDwgbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtLT5zdGFydF90aW1lKCkpIHsKK0BAIC0xNjE4 LDcgKzE2MDYsNyBAQAorICAgICBpZiAoc3RyZWFtLT50eXBlKCkgIT0gRGVtdXhlclN0cmVhbTo6 VklERU8pCisgICAgICAgY29udGludWU7CisgCistICAgIGlmIChhdl9zdHJlYW1fZ2V0X2ZpcnN0 X2R0cyhzdHJlYW0tPmF2X3N0cmVhbSgpKSA9PSBrSW52YWxpZFBUU01hcmtlcikKKysgICAgaWYg KHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9QVFNfVkFMVUUpCisgICAg ICAgY29udGludWU7CisgCisgICAgIGlmICghc3RyZWFtLT5Jc0VuYWJsZWQoKSkKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUgYi9zcmNwa2dzL2Nocm9taXVtL3RlbXBsYXRl CmluZGV4IGI0YTM5ZGZkMzgxNS4uYzI5NDUzY2QxZjUwIDEwMDY0NAotLS0gYS9zcmNwa2dzL2No cm9taXVtL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKQEAgLTIsNyAr Miw3IEBACiBwa2duYW1lPWNocm9taXVtCiAjIFNlZSBodHRwczovL2Nocm9taXVtZGFzaC5hcHBz cG90LmNvbS9yZWxlYXNlcz9wbGF0Zm9ybT1MaW51eCBmb3IgdGhlIGxhdGVzdCB2ZXJzaW9uCiB2 ZXJzaW9uPTExNC4wLjU3MzUuMTA2Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0iaTY4 NiogeDg2XzY0KiBhYXJjaDY0KiBhcm12N2wqIgogaG9zdG1ha2VkZXBlbmRzPSIKICAkKHZvcHRf aWYgY2xhbmcgImNsYW5nIGxsZCBsbHZtMTUiKQoKRnJvbSBhMmQ2YjE0YjQyNzJiMTc4ODhkNzA5 ZDJiYThlYWJjZjkxNTI5Y2IxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMjUvMTEzXSBjbXVzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2ggfCAxMiArKysrKysrKysrKysK IHNyY3BrZ3MvY211cy90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFu Z2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv Y211cy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2ggYi9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2 LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmZhOTVhYjgx MTEwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRj aApAQCAtMCwwICsxLDEyIEBACistLS0gYS9pcC9mZm1wZWcuYworKysrIGIvaXAvZmZtcGVnLmMK K0BAIC0yMDIsOSArMjAyLDYgQEAgc3RhdGljIGludCBmZm1wZWdfb3BlbihzdHJ1Y3QgaW5wdXRf cGx1Z2luX2RhdGEgKmlwX2RhdGEpCisgCQkJYnJlYWs7CisgCQl9CisgCistCQlpZiAoY29kZWMt PmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9UUlVOQ0FURUQpCistCQkJY2MtPmZsYWdzIHw9 IEFWX0NPREVDX0ZMQUdfVFJVTkNBVEVEOworLQorIAkJaWYgKGF2Y29kZWNfb3BlbjIoY2MsIGNv ZGVjLCBOVUxMKSA8IDApIHsKKyAJCQlkX3ByaW50KCJjb3VsZCBub3Qgb3BlbiBjb2RlYzogJWQs ICVzXG4iLCBjYy0+Y29kZWNfaWQsIGF2Y29kZWNfZ2V0X25hbWUoY2MtPmNvZGVjX2lkKSk7Cisg CQkJZXJyID0gLUlQX0VSUk9SX1VOU1VQUE9SVEVEX0ZJTEVfVFlQRTsKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvY211cy90ZW1wbGF0ZSBiL3NyY3BrZ3MvY211cy90ZW1wbGF0ZQppbmRleCAwZmNiNDI0 Y2UzMzYuLjA1Yjc3ZDBmZWNhZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9jbXVzL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvY211cy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ2NtdXMnCiBwa2duYW1lPWNtdXMKIHZlcnNpb249Mi4xMC4wCi1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSJwcmVmaXg9 L3VzciBMRD0kQ0MiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIGI1NTI4MGYx NmQ2YTgyODI2N2VlYjc5OWMwZTZjY2M0MzVkYTg0OTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyNi8xMTNdIGN5YW5yaXA6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9jeWFucmlwL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9jeWFucmlwL3RlbXBsYXRlIGIvc3JjcGtncy9jeWFucmlwL3RlbXBsYXRlCmluZGV4 IDk3OTZlMzQ2MTYwMS4uNWRiMzBlMDIwZDE3IDEwMDY0NAotLS0gYS9zcmNwa2dzL2N5YW5yaXAv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9jeWFucmlwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnY3lhbnJpcCcKIHBrZ25hbWU9Y3lhbnJpcAogdmVyc2lvbj0w LjkuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGliY2Rpby1k ZXZlbCBsaWJjZGlvLXBhcmFub2lhLWRldmVsIGxpYmN1cmwtZGV2ZWwgbGlibXVzaWNicmFpbno1 LWRldmVsIgoKRnJvbSA4MDA5MDZhMTBhZGY3OTVmOTgyYjQzODQ0NmUzNGIzZjMyMjQwMjZiIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjcv MTEzXSBkZWFkYmVlZjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2Rl YWRiZWVmL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUg Yi9zcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlCmluZGV4IGI2NjRiYjFiOWJkOS4uMTY1YjNjN2I5 Y2FkIDEwMDY0NAotLS0gYS9zcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv ZGVhZGJlZWYvdGVtcGxhdGUKQEAgLTEsMTQgKzEsMTQgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2RlYWRiZWVmJwogcGtnbmFtZT1kZWFkYmVlZgogdmVyc2lvbj0xLjguOAotcmV2aXNpb249MQor cmV2aXNpb249MgogY3JlYXRlX3dya3NyYz15ZXMKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUK IGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtb3NzIC0tZGlzYWJsZS1sZm0gLS1kaXNhYmxlLW5v dGlmeSAtLWRpc2FibGUtZ3RrMiIKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgbGlidG9vbCBn ZXR0ZXh0IGdldHRleHQtZGV2ZWwgaW50bHRvb2wgcGtnLWNvbmZpZwogIHlhc20gY2xhbmcgZ2xp Yi1kZXZlbCIKIG1ha2VkZXBlbmRzPSIKLSBhbHNhLWxpYi1kZXZlbCBkYnVzLWRldmVsIGZhYWQy LWRldmVsIGZmbXBlZy1kZXZlbCBndGsrMy1kZXZlbCBpbWxpYjItZGV2ZWwKKyBhbHNhLWxpYi1k ZXZlbCBkYnVzLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZzQtZGV2ZWwgZ3RrKzMtZGV2ZWwgaW1s aWIyLWRldmVsCiAgamFuc3Nvbi1kZXZlbCBsaWJjZGRiLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGli Y3VybC1kZXZlbCBsaWJmbGFjLWRldmVsCiAgbGlibWFkLWRldmVsIGxpYnBuZy1kZXZlbCBsaWJz YW1wbGVyYXRlLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwgbGlidm9yYmlzLWRldmVsCiAgbGliemlw LWRldmVsIG1wZzEyMy1kZXZlbCBvcHVzZmlsZS1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsIHdhdnBh Y2stZGV2ZWwiCgpGcm9tIDhkZDEwOWM4OTJjODcyYzVlODQ1MzEwNzBhOWU3NjllNDcwMWQ3MDcg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAy OC8xMTNdIGRvbHBoaW4tZW11OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv ZG9scGhpbi1lbXUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBs YXRlIGIvc3JjcGtncy9kb2xwaGluLWVtdS90ZW1wbGF0ZQppbmRleCA3ZWExOTdjZWIyYTguLjdh ZWIwYTViNjQ1ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9kb2xwaGluLWVtdS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnZG9scGhpbi1lbXUnCiBwa2duYW1lPWRvbHBoaW4tZW11CiB2ZXJzaW9uPTUu MC4xNjEwMQotcmV2aXNpb249MQorcmV2aXNpb249MgogX2RvbHBoaW5fY29tbWl0PThlY2ZhNTM3 YTI0MmRlNzRkMmUzNzJlMzBkOWQ3OWIxNDU4NGIyZmIKIF9tZ2JhX2NvbW1pdD00MGQ0YzQzMGZj MzZjYWViN2VhMzJmZDM5NjI0OTQ3ZWQ0ODdkMmYyCiAjVmVyc2lvbi9oYXNoIHBhaXIgY2FuIGJl IGZvdW5kIGF0IGh0dHBzOi8vZG9scGhpbi1lbXUub3JnL2Rvd25sb2FkLwoKRnJvbSBkZDMwNzM0 YTAwMmZmZDUwOTczOTM1MzE1ZDk1NWI1ZTM5ZjdhNThiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjkvMTEzXSBkcm9pZGNhbS1vYnMtcGx1 Z2luOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZHJvaWRjYW0tb2JzLXBs dWdpbi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1w bGF0ZSBiL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1wbGF0ZQppbmRleCBmYzljOWJm NmI5ZDUuLmZiMDQ4MDc1NGRmNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1 Z2luL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Ryb2lkY2FtLW9icy1wbHVnaW4n CiBwa2duYW1lPWRyb2lkY2FtLW9icy1wbHVnaW4KIHZlcnNpb249Mi4wLjEKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogbWFrZV91c2VfZW52PXllcwog bWFrZV9idWlsZF9hcmdzPSJBTExPV19TVEFUSUM9bm8iCgpGcm9tIDY2YTRjZmMxMDg4YzRhZDgx ZmQwMDI3ZWEwZGUzMTg5ZDc4YmYyMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYg LTA0MDAKU3ViamVjdDogW1BBVENIIDAzMC8xMTNdIGRyb2lkY2FtOiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2Ryb2lkY2FtL3RlbXBsYXRlIGIvc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZQppbmRleCAxYzNm MWI4YjFmYzYuLjMyYTkyMjBiNzlhNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9kcm9pZGNhbS90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2Ryb2lkY2FtL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZHJvaWRjYW0nCiBwa2duYW1lPWRyb2lkY2FtCiB2ZXJzaW9uPTEu OC4yCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1h a2VfYnVpbGRfYXJncz0iVVNCTVVYRD0tbHVzYm11eGQtMi4wIEpQRUc9LWx0dXJib2pwZWciCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIDBjYTVhYzkwZjhjMmFiOWM2NzVhYTlk NDkzOGRiMmYzYjIzMGQ2YmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAK U3ViamVjdDogW1BBVENIIDAzMS8xMTNdIGZmbXBlZ3RodW1ibmFpbGVyOiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIC4uLi9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0 Y2ggICB8IDIwMiArKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIv dGVtcGxhdGUgICAgICAgICAgICB8ICAgNiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyMDUgaW5zZXJ0 aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBl Z3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv ZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoIGIvc3JjcGtncy9mZm1wZWd0 aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi4zNjNmZjM1YTI4NDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApAQCAtMCwwICsxLDIwMiBA QAorLS0tIGEvbGliZmZtcGVndGh1bWJuYWlsZXIvbW92aWVkZWNvZGVyLmNwcAkyMDE3LTExLTIx IDE0OjA2OjU3LjAwMDAwMDAwMCAtMDUwMAorKysrIGIvbGliZmZtcGVndGh1bWJuYWlsZXIvbW92 aWVkZWNvZGVyLmNwcAkyMDIzLTA1LTA1IDEzOjE0OjQ3Ljk0NjU2MDY2OCAtMDQwMAorQEAgLTQx LDExICs0MSw2IEBACisgbmFtZXNwYWNlIGZmbXBlZ3RodW1ibmFpbGVyCisgeworIAorLXN0cnVj dCBTaWxlbmNlTG9nTGV2ZWwKKy17CistICAgIFNpbGVuY2VMb2dMZXZlbCgpIHsgYXZfbG9nX3Nl dF9sZXZlbChBVl9MT0dfUVVJRVQpOyB9CistfTsKKy0KKyBNb3ZpZURlY29kZXI6Ok1vdmllRGVj b2RlcihBVkZvcm1hdENvbnRleHQqIHBhdkNvbnRleHQpCisgOiBtX1ZpZGVvU3RyZWFtKC0xKQor ICwgbV9wRm9ybWF0Q29udGV4dChwYXZDb250ZXh0KQorQEAgLTcwLDggKzY1LDYgQEAKKyAKKyB2 b2lkIE1vdmllRGVjb2Rlcjo6aW5pdGlhbGl6ZShjb25zdCBzdHJpbmcmIGZpbGVuYW1lLCBib29s IHByZWZlckVtYmVkZGVkTWV0YWRhdGEpCisgeworLSAgICBhdl9yZWdpc3Rlcl9hbGwoKTsKKy0g ICAgYXZjb2RlY19yZWdpc3Rlcl9hbGwoKTsKKyAgICAgYXZmb3JtYXRfbmV0d29ya19pbml0KCk7 CisgCisgICAgIHN0cmluZyBpbnB1dEZpbGUgPSBmaWxlbmFtZSA9PSAiLSIgPyAicGlwZToiIDog ZmlsZW5hbWU7CitAQCAtOTcsOCArOTAsNyBAQAorIHsKKyAgICAgaWYgKG1fcFZpZGVvQ29kZWND b250ZXh0KQorICAgICB7CistICAgICAgICBhdmNvZGVjX2Nsb3NlKG1fcFZpZGVvQ29kZWNDb250 ZXh0KTsKKy0gICAgICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0ID0gbnVsbHB0cjsKKysgICAgICAg IGF2Y29kZWNfZnJlZV9jb250ZXh0KCZtX3BWaWRlb0NvZGVjQ29udGV4dCk7CisgICAgIH0KKyAK KyAgICAgaWYgKCghbV9Gb3JtYXRDb250ZXh0V2FzR2l2ZW4pICYmIG1fcEZvcm1hdENvbnRleHQp CitAQCAtMTUyLDEwICsxNDQsMTAgQEAKKyAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg PCBtX3BGb3JtYXRDb250ZXh0LT5uYl9zdHJlYW1zOyArK2kpCisgICAgIHsKKyAgICAgICAgIEFW U3RyZWFtICpzdHJlYW0gPSBtX3BGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldOworLSAgICAgICAg YXV0byBjdHggPSBtX3BGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlYzsKKy0gICAgICAg IGlmIChjdHgtPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKQorKyAgICAgICAgYXV0 byBwYXIgPSBtX3BGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3BhcjsKKysgICAgICAg IGlmIChwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKQorICAgICAgICAgewor LSAgICAgICAgICAgIGlmICghcHJlZmVyRW1iZWRkZWRNZXRhZGF0YSB8fCAhaXNTdGlsbEltYWdl Q29kZWMoY3R4LT5jb2RlY19pZCkpCisrICAgICAgICAgICAgaWYgKCFwcmVmZXJFbWJlZGRlZE1l dGFkYXRhIHx8ICFpc1N0aWxsSW1hZ2VDb2RlYyhwYXItPmNvZGVjX2lkKSkKKyAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgIHZpZGVvU3RyZWFtcy5wdXNoX2JhY2soaSk7CisgICAgICAg ICAgICAgICAgIGNvbnRpbnVlOworQEAgLTIwMyw4ICsxOTUsNyBAQAorICAgICB9CisgCisgICAg IG1fcFZpZGVvU3RyZWFtID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1ttX1ZpZGVvU3RyZWFt XTsKKy0gICAgbV9wVmlkZW9Db2RlY0NvbnRleHQgPSBtX3BWaWRlb1N0cmVhbS0+Y29kZWM7Cist ICAgIG1fcFZpZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihtX3BWaWRlb0NvZGVjQ29u dGV4dC0+Y29kZWNfaWQpOworKyAgICBtX3BWaWRlb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29k ZXIobV9wVmlkZW9TdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgCisgICAgIGlmIChtX3BW aWRlb0NvZGVjID09IG51bGxwdHIpCisgICAgIHsKK0BAIC0yMTQsNiArMjA1LDIwIEBACisgICAg ICAgICB0aHJvdyBsb2dpY19lcnJvcigiVmlkZW8gQ29kZWMgbm90IGZvdW5kIik7CisgICAgIH0K KyAKKysgICAgbV9wVmlkZW9Db2RlY0NvbnRleHQgPSBhdmNvZGVjX2FsbG9jX2NvbnRleHQzKG1f cFZpZGVvQ29kZWMpOworKworKyAgICBpZiAobV9wVmlkZW9Db2RlY0NvbnRleHQgPT0gbnVsbHB0 cikKKysgICAgeworKyAgICAgICAgZGVzdHJveSgpOworKyAgICAgICAgdGhyb3cgbG9naWNfZXJy b3IoIkNvdWxkIG5vdCBhbGxvY2F0ZSB2aWRlbyBjb2RlYyBjb250ZXh0Iik7CisrICAgIH0KKysK KysgICAgaWYgKGF2Y29kZWNfcGFyYW1ldGVyc190b19jb250ZXh0KG1fcFZpZGVvQ29kZWNDb250 ZXh0LCBtX3BWaWRlb1N0cmVhbS0+Y29kZWNwYXIpIDwgMCkKKysgICAgeworKyAgICAgICAgZGVz dHJveSgpOworKyAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkNvdWxkIG5vdCBjb25maWd1cmUg dmlkZW8gY29kZWMgY29udGV4dCIpOworKyAgICB9CisrCisgICAgIG1fcFZpZGVvQ29kZWNDb250 ZXh0LT53b3JrYXJvdW5kX2J1Z3MgPSAxOworIAorICAgICBpZiAoYXZjb2RlY19vcGVuMihtX3BW aWRlb0NvZGVjQ29udGV4dCwgbV9wVmlkZW9Db2RlYywgbnVsbHB0cikgPCAwKQorQEAgLTM4Niwx MyArMzkxLDYgQEAKKyAKKyB2b2lkIE1vdmllRGVjb2Rlcjo6aW5pdGlhbGl6ZUZpbHRlckdyYXBo KGNvbnN0IEFWUmF0aW9uYWwmIHRpbWVCYXNlLCBjb25zdCBzdGQ6OnN0cmluZyYgc2l6ZSwgYm9v bCBtYWludGFpbkFzcGVjdFJhdGlvKQorIHsKKy0gICAgc3RhdGljIGNvbnN0IEFWUGl4ZWxGb3Jt YXQgcGl4ZWxGb3JtYXRzW10gPSB7IEFWX1BJWF9GTVRfUkdCMjQsIEFWX1BJWF9GTVRfTk9ORSB9 OworLQorLSAgICBhdXRvIGRlbCA9IFtdIChBVkJ1ZmZlclNpbmtQYXJhbXMqIHApIHsgYXZfZnJl ZXAocCk7IH07CistICAgIHN0ZDo6dW5pcXVlX3B0cjxBVkJ1ZmZlclNpbmtQYXJhbXMsIGRlY2x0 eXBlKGRlbCk+IGJ1ZmZlcnNpbmtQYXJhbXMoYXZfYnVmZmVyc2lua19wYXJhbXNfYWxsb2MoKSwg ZGVsKTsKKy0KKy0gICAgYXZmaWx0ZXJfcmVnaXN0ZXJfYWxsKCk7CistCisgICAgIG1fcEZpbHRl ckdyYXBoID0gYXZmaWx0ZXJfZ3JhcGhfYWxsb2MoKTsKKyAgICAgYXNzZXJ0KG1fcEZpbHRlckdy YXBoKTsKKyAKK0BAIC00MDQsMTAgKzQwMiw4IEBACisgCisgICAgIGNoZWNrUmMoYXZmaWx0ZXJf Z3JhcGhfY3JlYXRlX2ZpbHRlcigmbV9wRmlsdGVyU291cmNlLCBhdmZpbHRlcl9nZXRfYnlfbmFt ZSgiYnVmZmVyIiksICJ0aHVtYl9idWZmZXIiLCBzcy5zdHIoKS5jX3N0cigpLCBudWxscHRyLCBt X3BGaWx0ZXJHcmFwaCksCisgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgZmlsdGVyIHNv dXJjZSIpOworLSAgICBidWZmZXJzaW5rUGFyYW1zLT5waXhlbF9mbXRzID0gcGl4ZWxGb3JtYXRz OworLSAgICBjaGVja1JjKGF2ZmlsdGVyX2dyYXBoX2NyZWF0ZV9maWx0ZXIoJm1fcEZpbHRlclNp bmssIGF2ZmlsdGVyX2dldF9ieV9uYW1lKCJidWZmZXJzaW5rIiksICJ0aHVtYl9idWZmZXJzaW5r IiwgbnVsbHB0ciwgYnVmZmVyc2lua1BhcmFtcy5nZXQoKSwgbV9wRmlsdGVyR3JhcGgpLAorKyAg ICBjaGVja1JjKGF2ZmlsdGVyX2dyYXBoX2NyZWF0ZV9maWx0ZXIoJm1fcEZpbHRlclNpbmssIGF2 ZmlsdGVyX2dldF9ieV9uYW1lKCJidWZmZXJzaW5rIiksICJ0aHVtYl9idWZmZXJzaW5rIiwgbnVs bHB0ciwgbnVsbHB0ciwgbV9wRmlsdGVyR3JhcGgpLAorICAgICAgICAgICAgICJGYWlsZWQgdG8g Y3JlYXRlIGZpbHRlciBzaW5rIik7CistICAgIGJ1ZmZlcnNpbmtQYXJhbXMucmVsZWFzZSgpOwor IAorICAgICBBVkZpbHRlckNvbnRleHQqIHlhZGlmRmlsdGVyID0gbnVsbHB0cjsKKyAgICAgaWYg KG1fcEZyYW1lLT5pbnRlcmxhY2VkX2ZyYW1lICE9IDApCitAQCAtNTAwLDE1ICs0OTYsMTUgQEAK KyAgICAgfQorIAorICAgICBjaGVja1JjKGF2X3NlZWtfZnJhbWUobV9wRm9ybWF0Q29udGV4dCwg LTEsIHRpbWVzdGFtcCwgMCksICJTZWVraW5nIGluIHZpZGVvIGZhaWxlZCIpOworLSAgICBhdmNv ZGVjX2ZsdXNoX2J1ZmZlcnMobV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1ttX1ZpZGVvU3RyZWFt XS0+Y29kZWMpOworKyAgICBhdmNvZGVjX2ZsdXNoX2J1ZmZlcnMobV9wVmlkZW9Db2RlY0NvbnRl eHQpOworIAorICAgICBpbnQga2V5RnJhbWVBdHRlbXB0cyA9IDA7CistICAgIGJvb2wgZ290RnJh bWUgPSAwOworKyAgICBib29sIGdvdEZyYW1lOworIAorICAgICBkbworICAgICB7CisgICAgICAg ICBpbnQgY291bnQgPSAwOworLSAgICAgICAgZ290RnJhbWUgPSAwOworKyAgICAgICAgZ290RnJh bWUgPSBmYWxzZTsKKyAKKyAgICAgICAgIHdoaWxlICghZ290RnJhbWUgJiYgY291bnQgPCAyMCkK KyAgICAgICAgIHsKK0BAIC01NTIsMTcgKzU0OCwzMyBAQAorICAgICAgICAgcmV0dXJuIGZhbHNl OworICAgICB9CisgCistICAgIGF2X2ZyYW1lX3VucmVmKG1fcEZyYW1lKTsKKy0KKy0gICAgaW50 IGZyYW1lRmluaXNoZWQ7CisrICAgIGludCByYyA9IGF2Y29kZWNfc2VuZF9wYWNrZXQobV9wVmlk ZW9Db2RlY0NvbnRleHQsIG1fcFBhY2tldCk7CisrICAgIGlmKHJjID09IEFWRVJST1IoRUFHQUlO KSkKKysgICAgeworKyAgICAgICAgcmMgPSAwOworKyAgICB9CisgCistICAgIGludCBieXRlc0Rl Y29kZWQgPSBhdmNvZGVjX2RlY29kZV92aWRlbzIobV9wVmlkZW9Db2RlY0NvbnRleHQsIG1fcEZy YW1lLCAmZnJhbWVGaW5pc2hlZCwgbV9wUGFja2V0KTsKKy0gICAgaWYgKGJ5dGVzRGVjb2RlZCA8 IDApCisrICAgIGlmKHJjID09IEFWRVJST1JfRU9GKQorKyAgICB7CisrICAgICAgICByZXR1cm4g ZmFsc2U7CisrICAgIH0KKysgICAgZWxzZSBpZihyYyA8IDApCisgICAgIHsKKy0gICAgICAgIHRo cm93IGxvZ2ljX2Vycm9yKCJGYWlsZWQgdG8gZGVjb2RlIHZpZGVvIGZyYW1lOiBieXRlc0RlY29k ZWQgPCAwIik7CisrICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigiRmFpbGVkIHRvIGRlY29kZSB2 aWRlbyBmcmFtZTogYXZjb2RlY19zZW5kX3BhY2tldCgpIDwgMCIpOworICAgICB9CisgCistICAg IHJldHVybiBmcmFtZUZpbmlzaGVkID4gMDsKKysgICAgcmMgPSBhdmNvZGVjX3JlY2VpdmVfZnJh bWUobV9wVmlkZW9Db2RlY0NvbnRleHQsIG1fcEZyYW1lKTsKKysgICAgc3dpdGNoKHJjKQorKyAg ICB7CisrICAgICAgICBjYXNlIDA6CisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrCisrICAg ICAgICBjYXNlIEFWRVJST1IoRUFHQUlOKToKKysgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisr CisrICAgICAgICBkZWZhdWx0OgorKyAgICAgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJGYWls ZWQgdG8gZGVjb2RlIHZpZGVvIGZyYW1lOiBhdmNvZGVjX3JlY2VpdmVfZnJhbWUoKSA8IDAiKTsK KysgICAgfQorIH0KKyAKKyBib29sIE1vdmllRGVjb2Rlcjo6Z2V0VmlkZW9QYWNrZXQoKQorQEAg LTU3MCw4ICs1ODIsNiBAQAorICAgICBib29sIGZyYW1lc0F2YWlsYWJsZSA9IHRydWU7CisgICAg IGJvb2wgZnJhbWVEZWNvZGVkID0gZmFsc2U7CisgCistICAgIGludCBhdHRlbXB0cyA9IDA7Cist CisgICAgIGlmIChtX3BQYWNrZXQpCisgICAgIHsKKyAgICAgICAgIGF2X3BhY2tldF91bnJlZiht X3BQYWNrZXQpOworQEAgLTU4MCw2ICs1OTAsNyBAQAorIAorICAgICBtX3BQYWNrZXQgPSBuZXcg QVZQYWNrZXQoKTsKKyAKKysKKyAgICAgd2hpbGUgKGZyYW1lc0F2YWlsYWJsZSAmJiAhZnJhbWVE ZWNvZGVkKQorICAgICB7CisgICAgICAgICBmcmFtZXNBdmFpbGFibGUgPSBhdl9yZWFkX2ZyYW1l KG1fcEZvcm1hdENvbnRleHQsIG1fcFBhY2tldCkgPj0gMDsKK0BAIC02NDQsNyArNjU1LDcgQEAK KyAKKyBpbnQzMl90IE1vdmllRGVjb2Rlcjo6Z2V0U3RyZWFtUm90YXRpb24oKQorIHsKKy0gICAg aW50MzJfdCogbWF0cml4ID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4oYXZfc3RyZWFtX2dl dF9zaWRlX2RhdGEobV9wVmlkZW9TdHJlYW0sIEFWX1BLVF9EQVRBX0RJU1BMQVlNQVRSSVgsIG51 bGxwdHIpKTsKKysgICAgYXV0byBtYXRyaXggPSByZWludGVycHJldF9jYXN0PGludDMyX3QqPihh dl9zdHJlYW1fZ2V0X3NpZGVfZGF0YShtX3BWaWRlb1N0cmVhbSwgQVZfUEtUX0RBVEFfRElTUExB WU1BVFJJWCwgbnVsbHB0cikpOworICAgICBpZiAobWF0cml4KQorICAgICB7CisgICAgICAgICBh dXRvIGFuZ2xlID0gbHJvdW5kKGF2X2Rpc3BsYXlfcm90YXRpb25fZ2V0KG1hdHJpeCkpOworCist LS0gYS9saWJmZm1wZWd0aHVtYm5haWxlci9tb3ZpZWRlY29kZXIuaAkyMDE3LTExLTEyIDA0OjIz OjM4LjAwMDAwMDAwMCAtMDUwMAorKysrIGIvbGliZmZtcGVndGh1bWJuYWlsZXIvbW92aWVkZWNv ZGVyLmgJMjAyMy0wNS0wNSAxMzoyNjowNy4wOTU1Mjk5MTEgLTA0MDAKK0BAIC03OCw3ICs3OCw3 IEBACisgICAgIGludCAgICAgICAgICAgICAgICAgICAgIG1fVmlkZW9TdHJlYW07DQorICAgICBB VkZvcm1hdENvbnRleHQqICAgICAgICBtX3BGb3JtYXRDb250ZXh0Ow0KKyAgICAgQVZDb2RlY0Nv bnRleHQqICAgICAgICAgbV9wVmlkZW9Db2RlY0NvbnRleHQ7DQorLSAgICBBVkNvZGVjKiAgICAg ICAgICAgICAgICBtX3BWaWRlb0NvZGVjOw0KKysgICAgY29uc3QgQVZDb2RlYyogICAgICAgICAg bV9wVmlkZW9Db2RlYzsNCisgICAgIEFWRmlsdGVyR3JhcGgqICAgICAgICAgIG1fcEZpbHRlckdy YXBoOw0KKyAgICAgQVZGaWx0ZXJDb250ZXh0KiAgICAgICAgbV9wRmlsdGVyU291cmNlOw0KKyAg ICAgQVZGaWx0ZXJDb250ZXh0KiAgICAgICAgbV9wRmlsdGVyU2luazsNCmRpZmYgLS1naXQgYS9z cmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1wZWd0aHVtYm5h aWxlci90ZW1wbGF0ZQppbmRleCAwMzllZWE3NjIyYjMuLjM1ZDU0NjAxOGQxMiAxMDA2NDQKLS0t IGEvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZmbXBl Z3RodW1ibmFpbGVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnZmZtcGVndGh1bWJuYWlsZXInCiBwa2duYW1lPWZmbXBlZ3RodW1ibmFpbGVyCiB2ZXJzaW9u PTIuMi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9ImxpYnBuZy1kZXZlbCBsaWJqcGVn LXR1cmJvLWRldmVsIGZmbXBlZy1kZXZlbCIKQEAgLTksOCArOSw4IEBAIGRlcGVuZHM9ImZmbXBl ZyIKIHNob3J0X2Rlc2M9IkxpZ2h0d2VpZ2h0IHZpZGVvIHRodW1ibmFpbGVyIgogbWFpbnRhaW5l cj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3It bGF0ZXIiCi1ob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2Rpcmt2ZGIvJHtwa2duYW1lfSIK LWRpc3RmaWxlcz0iJHtob21lcGFnZX0vcmVsZWFzZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS8ke3Br Z25hbWV9LSR7dmVyc2lvbn0udGFyLmJ6MiIKK2hvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20v ZGlya3ZkYiIKK2Rpc3RmaWxlcz0iJHtob21lcGFnZX0vJHtwa2duYW1lfS9yZWxlYXNlcy9kb3du bG9hZC8ke3ZlcnNpb259LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIuYnoyIgogY2hlY2tzdW09 MWNiMjQwNTljMzgyMjNmNjU3YjMwMGM4NGRkODA0OTFiNzA0MGQ0YjY5NDcxYzRmZWE2OWJlODYy YmM5OWI1YgogCiBwb3N0X2luc3RhbGwoKSB7CgpGcm9tIDk1Y2ZjNGZmN2YyZGY1MDE1NTQxMzY1 YjRlNjNiY2JkODFiMGM2MzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAK U3ViamVjdDogW1BBVENIIDAzMi8xMTNdIGZmbXBlZ3RodW1iczogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUK aW5kZXggNWYwYjk0MTRkYWRhLi4xMWI4ODE5MzUyOGYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmZt cGVndGh1bWJzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZmZtcGVndGh1bWJzJwogcGtnbmFt ZT1mZm1wZWd0aHVtYnMKIHZlcnNpb249MjIuMTIuMQotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21ha2UtbW9kdWxlcyBr Y29yZWFkZG9ucyBrY29uZmlnLWRldmVsCiAgcGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUt cW1ha2UgZ2V0dGV4dCIKCkZyb20gOTZjYmZkMzk1OTQ5NDc4YjAxN2ZlNDIwNzJkMzBmN2E3ZTJj ZjEyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDMzLzExM10gZmZtczI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9m Zm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggfCA0MjQgKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogc3JjcGtncy9mZm1zMi90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgIDIgKy0KIDIgZmls ZXMgY2hhbmdlZCwgNDI1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9mZm1zMi9wYXRj aGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li4xNDc5ZmFiY2FmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZmbXMyL3BhdGNoZXMv ZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDQyNCBAQAorRnJvbSA0NTY3MzE0OWU5YTJmNTU4Njg1 NWFkNDcyZTMwNTkwODRlYWEzNmIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVy ZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQg TWF5IDIwMjEgMTQ6NDE6MjEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIGF1dG8gZm9yIEFW Q29kZWMKKworVGhlIGdlbml1c2VzIG92ZXIgYXQgRkZtcGVnIGRlY2lkZWQgdG8gY29uc3RpZnkg dGhpcyBBUEksIHNvIG9sZAordmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkgd2lsbCByZXR1cm4gQVZD b2RlYyAqLCB3aGlsZSBuZXcgdmVyc2lvbnMKK29mIHRoZSBsaWJhcnkgd2lsbCByZXR1cm4gY29u c3QgQVZDb2RlYyAqLCB3aGljaCwgaW4gQysrLCBhcmUgbm90CitPSyB0byBjb252ZXJ0IGJldHdl ZW4uCisKK1JhdGhlciB0aGFuIHVzZSBzb21lIG1hY3JvIGhlbGwgaW4gZmZtc2NvbXBhdC5oLCB3 ZSBjYW4gd29yayBhcm91bmQKK3RoaXMgYnkgdXNpbmcgYXV0by4KKworR3Jvc3MuCisKK1NpZ25l ZC1vZmYtYnk6IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgor LS0tCisgc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwIHwgMiArLQorIHNyYy9jb3JlL2luZGV4aW5n LmNwcCAgICB8IDYgKysrLS0tCisgc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwIHwgMiArLQorIDMg ZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0t Z2l0IGEvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3Bw CitpbmRleCBlNGNlOTdjLi5hYzA5NjY2IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvYXVkaW9zb3Vy Y2UuY3BwCisrKysgYi9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKK0BAIC00NjksNyArNDY5LDcg QEAgdm9pZCBGRk1TX0F1ZGlvU291cmNlOjpPcGVuRmlsZSgpIHsKKyAKKyAgICAgTEFWRk9wZW5G aWxlKFNvdXJjZUZpbGUuY19zdHIoKSwgRm9ybWF0Q29udGV4dCwgVHJhY2tOdW1iZXIpOworIAor LSAgICBBVkNvZGVjICpDb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQt PnN0cmVhbXNbVHJhY2tOdW1iZXJdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICBhdXRvICpD b2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tO dW1iZXJdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAgICBpZiAoQ29kZWMgPT0gbnVsbHB0cikK KyAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfREVDT0RJTkcsIEZGTVNf RVJST1JfQ09ERUMsCisgICAgICAgICAgICAgIkF1ZGlvIGNvZGVjIG5vdCBmb3VuZCIpOworZGlm ZiAtLWdpdCBhL3NyYy9jb3JlL2luZGV4aW5nLmNwcCBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAor aW5kZXggZTU0N2M1YS4uNTlmYjRlOCAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2luZGV4aW5nLmNw cAorKysrIGIvc3JjL2NvcmUvaW5kZXhpbmcuY3BwCitAQCAtMzg0LDcgKzM4NCw3IEBAIEZGTVNf VHJhY2tUeXBlIEZGTVNfSW5kZXhlcjo6R2V0VHJhY2tUeXBlKGludCBUcmFjaykgeworIH0KKyAK KyBjb25zdCBjaGFyICpGRk1TX0luZGV4ZXI6OkdldFRyYWNrQ29kZWMoaW50IFRyYWNrKSB7Cist ICAgIEFWQ29kZWMgKmNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+ c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgIGF1dG8gKmNvZGVjID0g YXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVj cGFyLT5jb2RlY19pZCk7CisgICAgIHJldHVybiBjb2RlYyA/IGNvZGVjLT5uYW1lIDogbnVsbHB0 cjsKKyB9CisgCitAQCAtNDAyLDcgKzQwMiw3IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6 RG9JbmRleGluZygpIHsKKyAgICAgICAgICAgICBVc2VEVFMpOworIAorICAgICAgICAgaWYgKElu ZGV4TWFzay5jb3VudChpKSAmJiBGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+ Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pIHsKKy0gICAgICAgICAgICBBVkNvZGVj ICpWaWRlb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFt c1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgICAgICAgICAgICBhdXRvICpWaWRlb0NvZGVj ID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNw YXItPmNvZGVjX2lkKTsKKyAgICAgICAgICAgICBpZiAoIVZpZGVvQ29kZWMpIHsKKyAgICAgICAg ICAgICAgICAgRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+ZGlzY2FyZCA9IEFWRElTQ0FSRF9B TEw7CisgICAgICAgICAgICAgICAgIEluZGV4TWFzay5lcmFzZShpKTsKK0BAIC00MzMsNyArNDMz LDcgQEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAg ICAgICAgICBJbmRleE1hc2suaW5zZXJ0KGkpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0g ZWxzZSBpZiAoSW5kZXhNYXNrLmNvdW50KGkpICYmIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0t PmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykgeworLSAgICAgICAg ICAgIEFWQ29kZWMgKkF1ZGlvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250 ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICAgICAgICAgIGF1dG8g KkF1ZGlvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1z W2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAgICAgICAgICAgIGlmIChBdWRpb0NvZGVjID09 IG51bGxwdHIpCisgICAgICAgICAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJS T1JfQ09ERUMsIEZGTVNfRVJST1JfVU5TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAgICAi QXVkaW8gY29kZWMgbm90IGZvdW5kIik7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvdmlkZW9zb3Vy Y2UuY3BwIGIvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwCitpbmRleCBiODg5OTcwLi44OTU2YzIy IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwCisrKysgYi9zcmMvY29yZS92 aWRlb3NvdXJjZS5jcHAKK0BAIC0xNzEsNyArMTcxLDcgQEAgRkZNU19WaWRlb1NvdXJjZTo6RkZN U19WaWRlb1NvdXJjZShjb25zdCBjaGFyICpTb3VyY2VGaWxlLCBGRk1TX0luZGV4ICZJbmRleCwg aW4KKyAKKyAgICAgICAgIExBVkZPcGVuRmlsZShTb3VyY2VGaWxlLCBGb3JtYXRDb250ZXh0LCBW aWRlb1RyYWNrKTsKKyAKKy0gICAgICAgIEFWQ29kZWMgKkNvZGVjID0gYXZjb2RlY19maW5kX2Rl Y29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tWaWRlb1RyYWNrXS0+Y29kZWNwYXItPmNvZGVj X2lkKTsKKysgICAgICAgIGF1dG8gKkNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0 Q29udGV4dC0+c3RyZWFtc1tWaWRlb1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAg ICAgIGlmIChDb2RlYyA9PSBudWxscHRyKQorICAgICAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0 aW9uKEZGTVNfRVJST1JfREVDT0RJTkcsIEZGTVNfRVJST1JfQ09ERUMsCisgICAgICAgICAgICAg ICAgICJWaWRlbyBjb2RlYyBub3QgZm91bmQiKTsKKy0tIAorMi40MC4wCisKK0Zyb20gOTZjYmYz OGVhOTM4MTgyOWExMzE0ZjQzMmEyYzYwNDk1ZGNlZmFhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb206IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgor RGF0ZTogVHVlLCA0IE1heSAyMDIxIDE0OjEyOjQxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGFs bDogVXBkYXRlIEFWUGFja2V0IEFQSSB1c2FnZQorCitBVlBhY2tldHMgbXVzdCBhbGwgYmUgb24g dGhlIGhlYXAgbm93LCBzaW5jZSBpdCBpcyBubyBsb25nZXIKK3BhcnQgb2YgdGhlIGxpYmF2KiBB QkkuCisKK1NpZ25lZC1vZmYtYnk6IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNA Z21haWwuY29tPgorLS0tCisgc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwIHwgMTYgKysrKysrLS0t LQorIHNyYy9jb3JlL2luZGV4aW5nLmNwcCAgICB8IDYzICsrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0KKyBzcmMvY29yZS9pbmRleGluZy5oICAgICAgfCAgNCArLS0KKyBz cmMvY29yZS91dGlscy5jcHAgICAgICAgfCAgNiAtLS0tCisgc3JjL2NvcmUvdXRpbHMuaCAgICAg ICAgIHwgIDEgLQorIHNyYy9jb3JlL3ZpZGVvc291cmNlLmNwcCB8IDMwICsrKysrKysrKystLS0t LS0tLS0KKyA2IGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygt KQorCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwIGIvc3JjL2NvcmUvYXVk aW9zb3VyY2UuY3BwCitpbmRleCAzN2NmOWFlLi5lNGNlOTdjIDEwMDY0NAorLS0tIGEvc3JjL2Nv cmUvYXVkaW9zb3VyY2UuY3BwCisrKysgYi9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKK0BAIC0y ODUsMTAgKzI4NSwxNSBAQCBGRk1TX0F1ZGlvU291cmNlOjpBdWRpb0Jsb2NrICpGRk1TX0F1ZGlv U291cmNlOjpDYWNoZUJsb2NrKENhY2hlSXRlcmF0b3IgJnBvcykgeworIGludCBGRk1TX0F1ZGlv U291cmNlOjpEZWNvZGVOZXh0QmxvY2soQ2FjaGVJdGVyYXRvciAqcG9zKSB7CisgICAgIEN1cnJl bnRGcmFtZSA9ICZGcmFtZXNbUGFja2V0TnVtYmVyXTsKKyAKKy0gICAgQVZQYWNrZXQgUGFja2V0 OworLSAgICBpZiAoIVJlYWRQYWNrZXQoJlBhY2tldCkpCisrICAgIEFWUGFja2V0ICpQYWNrZXQg PSBhdl9wYWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQYWNrZXQpCisrICAgICAgICB0aHJvdyBG Rk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX1BBUlNFUiwgRkZNU19FUlJPUl9BTExPQ0FUSU9OX0ZB SUxFRCwKKysgICAgICAgICAgICAiQ291bGQgbm90IGFsbG9jYXRlIHBhY2tldC4iKTsKKysgICAg aWYgKCFSZWFkUGFja2V0KFBhY2tldCkpIHsKKysgICAgICAgIGF2X3BhY2tldF9mcmVlKCZQYWNr ZXQpOworICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9QQVJTRVIsIEZG TVNfRVJST1JfVU5LTk9XTiwKKyAgICAgICAgICAgICAiUmVhZFBhY2tldCB1bmV4cGVjdGVkbHkg ZmFpbGVkIHRvIHJlYWQgYSBwYWNrZXQiKTsKKysgICAgfQorIAorICAgICAvLyBSZWFkUGFja2V0 IG1heSBoYXZlIGNoYW5nZWQgdGhlIHBhY2tldCBudW1iZXIKKyAgICAgQ3VycmVudEZyYW1lID0g JkZyYW1lc1tQYWNrZXROdW1iZXJdOworQEAgLTI5Nyw4ICszMDIsOSBAQCBpbnQgRkZNU19BdWRp b1NvdXJjZTo6RGVjb2RlTmV4dEJsb2NrKENhY2hlSXRlcmF0b3IgKnBvcykgeworICAgICBpbnQg TnVtYmVyT2ZTYW1wbGVzID0gMDsKKyAgICAgQXVkaW9CbG9jayAqQ2FjaGVkQmxvY2sgPSBudWxs cHRyOworICAgICAKKy0gICAgaW50IFJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoQ29kZWNDb250 ZXh0LCAmUGFja2V0KTsKKy0gICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAgICBpbnQg UmV0ID0gYXZjb2RlY19zZW5kX3BhY2tldChDb2RlY0NvbnRleHQsIFBhY2tldCk7CisrICAgIGF2 X3BhY2tldF91bnJlZihQYWNrZXQpOworKyAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAK KyAgICAgYXZfZnJhbWVfdW5yZWYoRGVjb2RlRnJhbWUpOworICAgICBSZXQgPSBhdmNvZGVjX3Jl Y2VpdmVfZnJhbWUoQ29kZWNDb250ZXh0LCBEZWNvZGVGcmFtZSk7CitAQCAtNTEzLDggKzUxOSw2 IEBAIHZvaWQgRkZNU19BdWRpb1NvdXJjZTo6U2VlaygpIHsKKyB9CisgCisgYm9vbCBGRk1TX0F1 ZGlvU291cmNlOjpSZWFkUGFja2V0KEFWUGFja2V0ICpQYWNrZXQpIHsKKy0gICAgSW5pdE51bGxQ YWNrZXQoKlBhY2tldCk7CistCisgICAgIHdoaWxlIChhdl9yZWFkX2ZyYW1lKEZvcm1hdENvbnRl eHQsIFBhY2tldCkgPj0gMCkgeworICAgICAgICAgaWYgKFBhY2tldC0+c3RyZWFtX2luZGV4ID09 IFRyYWNrTnVtYmVyKSB7CisgICAgICAgICAgICAgLy8gUmVxdWlyZWQgYmVjYXVzZSBub3QgYWxs IGF1ZGlvIHBhY2tldHMsIGVzcGVjaWFsbHkgaW4gb2dnLCBoYXZlIGEgcHRzLiBVc2UgdGhlIHBy ZXZpb3VzIHZhbGlkIHBhY2tldCdzIHB0cyBpbnN0ZWFkLgorZGlmZiAtLWdpdCBhL3NyYy9jb3Jl L2luZGV4aW5nLmNwcCBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAoraW5kZXggMjNmYjk1Yi4uZTU0 N2M1YSAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2luZGV4aW5nLmNwcAorKysrIGIvc3JjL2NvcmUv aW5kZXhpbmcuY3BwCitAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgRkZNU19JbmRleGVyOjpDaGVj a0F1ZGlvUHJvcGVydGllcyhpbnQgVHJhY2ssIEFWQ29kZWNDb250ZXh0ICpDb250ZXh0KSB7Cisg ICAgIH0KKyB9CisgCistdm9pZCBGRk1TX0luZGV4ZXI6OlBhcnNlVmlkZW9QYWNrZXQoU2hhcmVk QVZDb250ZXh0ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICZwa3QsIGludCAqUmVwZWF0UGljdCwK Kyt2b2lkIEZGTVNfSW5kZXhlcjo6UGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZp ZGVvQ29udGV4dCwgQVZQYWNrZXQgKnBrdCwgaW50ICpSZXBlYXRQaWN0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqRnJhbWVUeXBlLCBib29sICpJbnZpc2libGUs IGVudW0gQVZQaWN0dXJlU3RydWN0dXJlICpMYXN0UGljU3RydWN0KSB7CisgICAgIGlmIChWaWRl b0NvbnRleHQuUGFyc2VyKSB7CisgICAgICAgICB1aW50OF90ICpPQjsKK0BAIC0zMzAsOCArMzMw LDggQEAgdm9pZCBGRk1TX0luZGV4ZXI6OlBhcnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZDb250ZXh0 ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICZwa3QKKyAgICAgICAgIGF2X3BhcnNlcl9wYXJzZTIo VmlkZW9Db250ZXh0LlBhcnNlciwKKyAgICAgICAgICAgICBWaWRlb0NvbnRleHQuQ29kZWNDb250 ZXh0LAorICAgICAgICAgICAgICZPQiwgJk9CU2l6ZSwKKy0gICAgICAgICAgICBwa3QuZGF0YSwg cGt0LnNpemUsCistICAgICAgICAgICAgcGt0LnB0cywgcGt0LmR0cywgcGt0LnBvcyk7CisrICAg ICAgICAgICAgcGt0LT5kYXRhLCBwa3QtPnNpemUsCisrICAgICAgICAgICAgcGt0LT5wdHMsIHBr dC0+ZHRzLCBwa3QtPnBvcyk7CisgCisgICAgICAgICAvLyBILjI2NCAoUEFGRikgYW5kIEhFVkMg bWF5IGhhdmUgb25lIGZpZWxkIHBlciBwYWNrZXQsIHNvIHdlIG5lZWQgdG8gdHJhY2sKKyAgICAg ICAgIC8vIHdoZW4gd2UgaGF2ZSBhIGZ1bGwgb3IgaGFsZiBmcmFtZSBhdmFpbGFibGUsIGFuZCBt YXJrIG9uZSBvZiB0aGVtIGFzCitAQCAtMzUxLDE1ICszNTEsMTUgQEAgdm9pZCBGRk1TX0luZGV4 ZXI6OlBhcnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZDb250ZXh0ICZWaWRlb0NvbnRleHQsIEFWUGFj a2V0ICZwa3QKKyAKKyAgICAgICAgICpSZXBlYXRQaWN0ID0gVmlkZW9Db250ZXh0LlBhcnNlci0+ cmVwZWF0X3BpY3Q7CisgICAgICAgICAqRnJhbWVUeXBlID0gVmlkZW9Db250ZXh0LlBhcnNlci0+ cGljdF90eXBlOworLSAgICAgICAgKkludmlzaWJsZSA9IChJbmNvbXBsZXRlRnJhbWUgfHwgVmlk ZW9Db250ZXh0LlBhcnNlci0+cmVwZWF0X3BpY3QgPCAwIHx8IChwa3QuZmxhZ3MgJiBBVl9QS1Rf RkxBR19ESVNDQVJEKSk7CisrICAgICAgICAqSW52aXNpYmxlID0gKEluY29tcGxldGVGcmFtZSB8 fCBWaWRlb0NvbnRleHQuUGFyc2VyLT5yZXBlYXRfcGljdCA8IDAgfHwgKHBrdC0+ZmxhZ3MgJiBB Vl9QS1RfRkxBR19ESVNDQVJEKSk7CisgICAgIH0gZWxzZSB7CistICAgICAgICAqSW52aXNpYmxl ID0gISEocGt0LmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCk7CisrICAgICAgICAqSW52aXNp YmxlID0gISEocGt0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpOworICAgICB9CisgCisg ICAgIGlmIChWaWRlb0NvbnRleHQuQ29kZWNDb250ZXh0LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9WUDgpCistICAgICAgICBQYXJzZVZQOChwa3QuZGF0YVswXSwgSW52aXNpYmxlLCBGcmFtZVR5 cGUpOworKyAgICAgICAgUGFyc2VWUDgocGt0LT5kYXRhWzBdLCBJbnZpc2libGUsIEZyYW1lVHlw ZSk7CisgICAgIGVsc2UgaWYgKFZpZGVvQ29udGV4dC5Db2RlY0NvbnRleHQtPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX1ZQOSkKKy0gICAgICAgIFBhcnNlVlA5KHBrdC5kYXRhWzBdLCBJbnZpc2li bGUsIEZyYW1lVHlwZSk7CisrICAgICAgICBQYXJzZVZQOShwa3QtPmRhdGFbMF0sIEludmlzaWJs ZSwgRnJhbWVUeXBlKTsKKyB9CisgCisgdm9pZCBGRk1TX0luZGV4ZXI6OkZyZWUoKSB7CitAQCAt NDU4LDMyICs0NTgsMzYgQEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkg eworICAgICAgICAgfQorICAgICB9CisgCistICAgIEFWUGFja2V0IFBhY2tldDsKKy0gICAgSW5p dE51bGxQYWNrZXQoUGFja2V0KTsKKysgICAgQVZQYWNrZXQgKlBhY2tldCA9IGF2X3BhY2tldF9h bGxvYygpOworKyAgICBpZiAoIVBhY2tldCkKKysgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9u KEZGTVNfRVJST1JfQ09ERUMsIEZGTVNfRVJST1JfQUxMT0NBVElPTl9GQUlMRUQsCisrICAgICAg ICAgICAgIkNvdWxkIG5vdCBhbGxvY2F0ZSBwYWNrZXQuIik7CisgICAgIHN0ZDo6dmVjdG9yPGlu dDY0X3Q+IExhc3RWYWxpZFRTKEZvcm1hdENvbnRleHQtPm5iX3N0cmVhbXMsIEFWX05PUFRTX1ZB TFVFKTsKKyAKKyAgICAgaW50NjRfdCBmaWxlc2l6ZSA9IGF2aW9fc2l6ZShGb3JtYXRDb250ZXh0 LT5wYik7CisgICAgIGVudW0gQVZQaWN0dXJlU3RydWN0dXJlIExhc3RQaWNTdHJ1Y3QgPSBBVl9Q SUNUVVJFX1NUUlVDVFVSRV9VTktOT1dOOworLSAgICB3aGlsZSAoYXZfcmVhZF9mcmFtZShGb3Jt YXRDb250ZXh0LCAmUGFja2V0KSA+PSAwKSB7CisrICAgIHdoaWxlIChhdl9yZWFkX2ZyYW1lKEZv cm1hdENvbnRleHQsIFBhY2tldCkgPj0gMCkgeworICAgICAgICAgLy8gVXBkYXRlIHByb2dyZXNz CisgICAgICAgICAvLyBGb3JtYXRDb250ZXh0LT5wYiBjYW4gYXBwYXJlbnRseSBiZSBOVUxMIHdo ZW4gb3BlbmluZyBpbWFnZXMuCisgICAgICAgICBpZiAoSUMgJiYgRm9ybWF0Q29udGV4dC0+cGIp IHsKKy0gICAgICAgICAgICBpZiAoKCpJQykoRm9ybWF0Q29udGV4dC0+cGItPnBvcywgZmlsZXNp emUsIElDUHJpdmF0ZSkpCisrICAgICAgICAgICAgaWYgKCgqSUMpKEZvcm1hdENvbnRleHQtPnBi LT5wb3MsIGZpbGVzaXplLCBJQ1ByaXZhdGUpKSB7CisrICAgICAgICAgICAgICAgIGF2X3BhY2tl dF9mcmVlKCZQYWNrZXQpOworICAgICAgICAgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihG Rk1TX0VSUk9SX0NBTkNFTExFRCwgRkZNU19FUlJPUl9VU0VSLAorICAgICAgICAgICAgICAgICAg ICAgIkNhbmNlbGxlZCBieSB1c2VyIik7CisrICAgICAgICAgICAgfQorICAgICAgICAgfQorLSAg ICAgICAgaWYgKCFJbmRleE1hc2suY291bnQoUGFja2V0LnN0cmVhbV9pbmRleCkpIHsKKy0gICAg ICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CisrICAgICAgICBpZiAoIUluZGV4TWFz ay5jb3VudChQYWNrZXQtPnN0cmVhbV9pbmRleCkpIHsKKysgICAgICAgICAgICBhdl9wYWNrZXRf dW5yZWYoUGFja2V0KTsKKyAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKyAKKy0g ICAgICAgIGludCBUcmFjayA9IFBhY2tldC5zdHJlYW1faW5kZXg7CisrICAgICAgICBpbnQgVHJh Y2sgPSBQYWNrZXQtPnN0cmVhbV9pbmRleDsKKyAgICAgICAgIEZGTVNfVHJhY2sgJlRyYWNrSW5m byA9ICgqVHJhY2tJbmRpY2VzKVtUcmFja107CistICAgICAgICBib29sIEtleUZyYW1lID0gISEo UGFja2V0LmZsYWdzICYgQVZfUEtUX0ZMQUdfS0VZKTsKKysgICAgICAgIGJvb2wgS2V5RnJhbWUg PSAhIShQYWNrZXQtPmZsYWdzICYgQVZfUEtUX0ZMQUdfS0VZKTsKKyAgICAgICAgIFJlYWRUUyhQ YWNrZXQsIExhc3RWYWxpZFRTW1RyYWNrXSwgKCpUcmFja0luZGljZXMpW1RyYWNrXS5Vc2VEVFMp OworIAorICAgICAgICAgaWYgKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bh ci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pIHsKKy0gICAgICAgICAgICBpbnQ2 NF90IFBUUyA9IFRyYWNrSW5mby5Vc2VEVFMgPyBQYWNrZXQuZHRzIDogUGFja2V0LnB0czsKKysg ICAgICAgICAgICBpbnQ2NF90IFBUUyA9IFRyYWNrSW5mby5Vc2VEVFMgPyBQYWNrZXQtPmR0cyA6 IFBhY2tldC0+cHRzOworICAgICAgICAgICAgIGlmIChQVFMgPT0gQVZfTk9QVFNfVkFMVUUpIHsK KyAgICAgICAgICAgICAgICAgLy8gVlB4IGFsdC1yZWZzIGFyZSBvdXRwdXQgYXMgcGFja2V0cyB3 aGljaCBsYWNrIHRpbWVzdG1wcyBvciBkdXJhdGlvbnMsIHNpbmNlCisgICAgICAgICAgICAgICAg IC8vIHRoZXkgYXJlIGludmlzaWJsZS4gQ3VycmVudGx5LCB0aGUgdGltZXN0YW1wIG1hbmdsaW5n IGNvZGUgaW4gbGliYXZmb3JtYXQKK0BAIC00OTUsOSArNDk5LDExIEBAIEZGTVNfSW5kZXggKkZG TVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAgICAgICAgICAgICAgLy8gRkZNUzIgY3Vy cmVudGx5IHNvcnRzIHBhY2tldHMgYnkgUFRTLCB3aGljaCB3aWxsIGJyZWFrIGRlY29kaW5nLCBv dGhlcndpc2UuCisgICAgICAgICAgICAgICAgIGJvb2wgSGFzQWx0UmVmcyA9IChGb3JtYXRDb250 ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQ OCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0Q29udGV4dC0+ c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpOwor LSAgICAgICAgICAgICAgICBpZiAoUGFja2V0LmR1cmF0aW9uID09IDAgJiYgIUhhc0FsdFJlZnMp CisrICAgICAgICAgICAgICAgIGlmIChQYWNrZXQtPmR1cmF0aW9uID09IDAgJiYgIUhhc0FsdFJl ZnMpIHsKKysgICAgICAgICAgICAgICAgICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworICAg ICAgICAgICAgICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9JTkRFWElO RywgRkZNU19FUlJPUl9QQVJTRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQg cGFja2V0IHB0cywgZHRzLCBhbmQgZHVyYXRpb24iKTsKKysgICAgICAgICAgICAgICAgfQorIAor ICAgICAgICAgICAgICAgICBpZiAoVHJhY2tJbmZvLmVtcHR5KCkpCisgICAgICAgICAgICAgICAg ICAgICBQVFMgPSAwOworQEAgLTUxMyw3ICs1MTksNyBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4 ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgUGFyc2VWaWRlb1BhY2tldChBVkNvbnRl eHRzW1RyYWNrXSwgUGFja2V0LCAmUmVwZWF0UGljdCwgJkZyYW1lVHlwZSwgJkludmlzaWJsZSwg Jkxhc3RQaWNTdHJ1Y3QpOworIAorICAgICAgICAgICAgIFRyYWNrSW5mby5BZGRWaWRlb0ZyYW1l KFBUUywgUmVwZWF0UGljdCwgS2V5RnJhbWUsCistICAgICAgICAgICAgICAgIEZyYW1lVHlwZSwg UGFja2V0LnBvcywgSW52aXNpYmxlKTsKKysgICAgICAgICAgICAgICAgRnJhbWVUeXBlLCBQYWNr ZXQtPnBvcywgSW52aXNpYmxlKTsKKyAgICAgICAgIH0gZWxzZSBpZiAoRm9ybWF0Q29udGV4dC0+ c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJ TykgeworICAgICAgICAgICAgIC8vIEZvciB2aWRlbyBzZWVraW5nIHRpbWVzdGFtcHMgYXJlIHVz ZWQgb25seSBpZiBhbGwgcGFja2V0cyBoYXZlCisgICAgICAgICAgICAgLy8gdGltZXN0YW1wcywg d2hpbGUgZm9yIGF1ZGlvIHRoZXkncmUgdXNlZCBpZiBhbnkgaGF2ZSB0aW1lc3RhbXBzLAorQEAg LTUyMiwyOCArNTI4LDI5IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGluZygp IHsKKyAgICAgICAgICAgICAgICAgVHJhY2tJbmZvLkhhc1RTID0gdHJ1ZTsKKyAKKyAgICAgICAg ICAgICBpbnQ2NF90IFN0YXJ0U2FtcGxlID0gQVZDb250ZXh0c1tUcmFja10uQ3VycmVudFNhbXBs ZTsKKy0gICAgICAgICAgICB1aW50MzJfdCBTYW1wbGVDb3VudCA9IEluZGV4QXVkaW9QYWNrZXQo VHJhY2ssICZQYWNrZXQsIEFWQ29udGV4dHNbVHJhY2tdLCAqVHJhY2tJbmRpY2VzKTsKKysgICAg ICAgICAgICB1aW50MzJfdCBTYW1wbGVDb3VudCA9IEluZGV4QXVkaW9QYWNrZXQoVHJhY2ssIFBh Y2tldCwgQVZDb250ZXh0c1tUcmFja10sICpUcmFja0luZGljZXMpOworICAgICAgICAgICAgIFRy YWNrSW5mby5TYW1wbGVSYXRlID0gQVZDb250ZXh0c1tUcmFja10uQ29kZWNDb250ZXh0LT5zYW1w bGVfcmF0ZTsKKyAKKyAgICAgICAgICAgICBUcmFja0luZm8uQWRkQXVkaW9GcmFtZShMYXN0VmFs aWRUU1tUcmFja10sCistICAgICAgICAgICAgICAgIFN0YXJ0U2FtcGxlLCBTYW1wbGVDb3VudCwg S2V5RnJhbWUsIFBhY2tldC5wb3MsIFBhY2tldC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQp OworKyAgICAgICAgICAgICAgICBTdGFydFNhbXBsZSwgU2FtcGxlQ291bnQsIEtleUZyYW1lLCBQ YWNrZXQtPnBvcywgUGFja2V0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpOworICAgICAg ICAgfQorIAorLSAgICAgICAgaWYgKCEoUGFja2V0LmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FS RCkpCistICAgICAgICAgICAgVHJhY2tJbmZvLkxhc3REdXJhdGlvbiA9IFBhY2tldC5kdXJhdGlv bjsKKysgICAgICAgIGlmICghKFBhY2tldC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKSkK KysgICAgICAgICAgICBUcmFja0luZm8uTGFzdER1cmF0aW9uID0gUGFja2V0LT5kdXJhdGlvbjsK KyAKKy0gICAgICAgIGF2X3BhY2tldF91bnJlZigmUGFja2V0KTsKKysgICAgICAgIGF2X3BhY2tl dF91bnJlZihQYWNrZXQpOworICAgICB9CisrICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOwor IAorICAgICBUcmFja0luZGljZXMtPkZpbmFsaXplKEFWQ29udGV4dHMsIEZvcm1hdENvbnRleHQt Pmlmb3JtYXQtPm5hbWUpOworICAgICByZXR1cm4gVHJhY2tJbmRpY2VzLnJlbGVhc2UoKTsKKyB9 CisgCistdm9pZCBGRk1TX0luZGV4ZXI6OlJlYWRUUyhjb25zdCBBVlBhY2tldCAmUGFja2V0LCBp bnQ2NF90ICZUUywgYm9vbCAmVXNlRFRTKSB7CistICAgIGlmICghVXNlRFRTICYmIFBhY2tldC5w dHMgIT0gQVZfTk9QVFNfVkFMVUUpCistICAgICAgICBUUyA9IFBhY2tldC5wdHM7Cisrdm9pZCBG Rk1TX0luZGV4ZXI6OlJlYWRUUyhjb25zdCBBVlBhY2tldCAqUGFja2V0LCBpbnQ2NF90ICZUUywg Ym9vbCAmVXNlRFRTKSB7CisrICAgIGlmICghVXNlRFRTICYmIFBhY2tldC0+cHRzICE9IEFWX05P UFRTX1ZBTFVFKQorKyAgICAgICAgVFMgPSBQYWNrZXQtPnB0czsKKyAgICAgaWYgKFRTID09IEFW X05PUFRTX1ZBTFVFKQorICAgICAgICAgVXNlRFRTID0gdHJ1ZTsKKy0gICAgaWYgKFVzZURUUyAm JiBQYWNrZXQuZHRzICE9IEFWX05PUFRTX1ZBTFVFKQorLSAgICAgICAgVFMgPSBQYWNrZXQuZHRz OworKyAgICBpZiAoVXNlRFRTICYmIFBhY2tldC0+ZHRzICE9IEFWX05PUFRTX1ZBTFVFKQorKyAg ICAgICAgVFMgPSBQYWNrZXQtPmR0czsKKyB9CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvaW5kZXhp bmcuaCBiL3NyYy9jb3JlL2luZGV4aW5nLmgKK2luZGV4IDNjZmMzYzMuLjVjMDY4NjggMTAwNjQ0 CistLS0gYS9zcmMvY29yZS9pbmRleGluZy5oCisrKysgYi9zcmMvY29yZS9pbmRleGluZy5oCitA QCAtODAsMTAgKzgwLDEwIEBAIHByaXZhdGU6CisgICAgIGludDY0X3QgRmlsZXNpemU7CisgICAg IHVpbnQ4X3QgRGlnZXN0WzIwXTsKKyAKKy0gICAgdm9pZCBSZWFkVFMoY29uc3QgQVZQYWNrZXQg JlBhY2tldCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUyk7CisrICAgIHZvaWQgUmVhZFRTKGNv bnN0IEFWUGFja2V0ICpQYWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMpOworICAgICB2 b2lkIENoZWNrQXVkaW9Qcm9wZXJ0aWVzKGludCBUcmFjaywgQVZDb2RlY0NvbnRleHQgKkNvbnRl eHQpOworICAgICB1aW50MzJfdCBJbmRleEF1ZGlvUGFja2V0KGludCBUcmFjaywgQVZQYWNrZXQg KlBhY2tldCwgU2hhcmVkQVZDb250ZXh0ICZDb250ZXh0LCBGRk1TX0luZGV4ICZUcmFja0luZGlj ZXMpOworLSAgICB2b2lkIFBhcnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZDb250ZXh0ICZWaWRlb0Nv bnRleHQsIEFWUGFja2V0ICZwa3QsIGludCAqUmVwZWF0UGljdCwgaW50ICpGcmFtZVR5cGUsIGJv b2wgKkludmlzaWJsZSwgZW51bSBBVlBpY3R1cmVTdHJ1Y3R1cmUgKkxhc3RQaWNTdHJ1Y3QpOwor KyAgICB2b2lkIFBhcnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZDb250ZXh0ICZWaWRlb0NvbnRleHQs IEFWUGFja2V0ICpwa3QsIGludCAqUmVwZWF0UGljdCwgaW50ICpGcmFtZVR5cGUsIGJvb2wgKklu dmlzaWJsZSwgZW51bSBBVlBpY3R1cmVTdHJ1Y3R1cmUgKkxhc3RQaWNTdHJ1Y3QpOworICAgICB2 b2lkIEZyZWUoKTsKKyBwdWJsaWM6CisgICAgIEZGTVNfSW5kZXhlcihjb25zdCBjaGFyICpGaWxl bmFtZSk7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvdXRpbHMuY3BwIGIvc3JjL2NvcmUvdXRpbHMu Y3BwCitpbmRleCBjZTY3NTMzLi44YTJlOTk3IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdXRpbHMu Y3BwCisrKysgYi9zcmMvY29yZS91dGlscy5jcHAKK0BAIC02MiwxMiArNjIsNiBAQCB2b2lkIENs ZWFyRXJyb3JJbmZvKEZGTVNfRXJyb3JJbmZvICpFcnJvckluZm8pIHsKKyAgICAgfQorIH0KKyAK Ky12b2lkIEluaXROdWxsUGFja2V0KEFWUGFja2V0ICZwa3QpIHsKKy0gICAgYXZfaW5pdF9wYWNr ZXQoJnBrdCk7CistICAgIHBrdC5kYXRhID0gbnVsbHB0cjsKKy0gICAgcGt0LnNpemUgPSAwOwor LX0KKy0KKyB2b2lkIEZpbGxBUChGRk1TX0F1ZGlvUHJvcGVydGllcyAmQVAsIEFWQ29kZWNDb250 ZXh0ICpDVFgsIEZGTVNfVHJhY2sgJkZyYW1lcykgeworICAgICBBUC5TYW1wbGVGb3JtYXQgPSBz dGF0aWNfY2FzdDxGRk1TX1NhbXBsZUZvcm1hdD4oYXZfZ2V0X3BhY2tlZF9zYW1wbGVfZm10KENU WC0+c2FtcGxlX2ZtdCkpOworICAgICBBUC5CaXRzUGVyU2FtcGxlID0gYXZfZ2V0X2J5dGVzX3Bl cl9zYW1wbGUoQ1RYLT5zYW1wbGVfZm10KSAqIDg7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvdXRp bHMuaCBiL3NyYy9jb3JlL3V0aWxzLmgKK2luZGV4IDk4MTlkYzcuLjAwM2FiNzkgMTAwNjQ0Cist LS0gYS9zcmMvY29yZS91dGlscy5oCisrKysgYi9zcmMvY29yZS91dGlscy5oCitAQCAtNTgsNyAr NTgsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8VD4gbWFrZV91bmlxdWUoQXJncyYmLi4uIGFyZ3MpIHsK KyB9CisgCisgdm9pZCBDbGVhckVycm9ySW5mbyhGRk1TX0Vycm9ySW5mbyAqRXJyb3JJbmZvKTsK Ky12b2lkIEluaXROdWxsUGFja2V0KEFWUGFja2V0ICZwa3QpOworIHZvaWQgRmlsbEFQKEZGTVNf QXVkaW9Qcm9wZXJ0aWVzICZBUCwgQVZDb2RlY0NvbnRleHQgKkNUWCwgRkZNU19UcmFjayAmRnJh bWVzKTsKKyAKKyB2b2lkIExBVkZPcGVuRmlsZShjb25zdCBjaGFyICpTb3VyY2VGaWxlLCBBVkZv cm1hdENvbnRleHQgKiZGb3JtYXRDb250ZXh0LCBpbnQgVHJhY2spOworZGlmZiAtLWdpdCBhL3Ny Yy9jb3JlL3ZpZGVvc291cmNlLmNwcCBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAoraW5kZXgg MDZiZDE2MS4uYjg4OTk3MCAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAor KysrIGIvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwCitAQCAtNjczLDMwICs2NzMsMzQgQEAgdm9p ZCBGRk1TX1ZpZGVvU291cmNlOjpEZWNvZGVOZXh0RnJhbWUoaW50NjRfdCAmQVN0YXJ0VGltZSwg aW50NjRfdCAmUG9zKSB7CisgICAgIGlmIChIYXNQZW5kaW5nRGVsYXllZEZyYW1lcygpKQorICAg ICAgICAgcmV0dXJuOworIAorLSAgICBBVlBhY2tldCBQYWNrZXQ7CistICAgIEluaXROdWxsUGFj a2V0KFBhY2tldCk7CistCistICAgIHdoaWxlIChSZWFkRnJhbWUoJlBhY2tldCkgPj0gMCkgewor LSAgICAgICAgaWYgKFBhY2tldC5zdHJlYW1faW5kZXggIT0gVmlkZW9UcmFjaykgeworLSAgICAg ICAgICAgIGF2X3BhY2tldF91bnJlZigmUGFja2V0KTsKKysgICAgQVZQYWNrZXQgKlBhY2tldCA9 IGF2X3BhY2tldF9hbGxvYygpOworKyAgICBpZiAoIVBhY2tldCkKKysgICAgICAgIHRocm93IEZG TVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfREVDT0RJTkcsIEZGTVNfRVJST1JfQUxMT0NBVElPTl9G QUlMRUQsCisrICAgICAgICAgICAgIkNvdWxkIG5vdCBhbGxvY2F0ZSBwYWNrZXQuIik7CisrCisr ICAgIHdoaWxlIChSZWFkRnJhbWUoUGFja2V0KSA+PSAwKSB7CisrICAgICAgICBpZiAoUGFja2V0 LT5zdHJlYW1faW5kZXggIT0gVmlkZW9UcmFjaykgeworKyAgICAgICAgICAgIGF2X3BhY2tldF91 bnJlZihQYWNrZXQpOworICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgfQorIAorICAg ICAgICAgaWYgKEFTdGFydFRpbWUgPCAwKQorLSAgICAgICAgICAgIEFTdGFydFRpbWUgPSBGcmFt ZXMuVXNlRFRTID8gUGFja2V0LmR0cyA6IFBhY2tldC5wdHM7CisrICAgICAgICAgICAgQVN0YXJ0 VGltZSA9IEZyYW1lcy5Vc2VEVFMgPyBQYWNrZXQtPmR0cyA6IFBhY2tldC0+cHRzOworIAorICAg ICAgICAgaWYgKFBvcyA8IDApCistICAgICAgICAgICAgUG9zID0gUGFja2V0LnBvczsKKysgICAg ICAgICAgICBQb3MgPSBQYWNrZXQtPnBvczsKKyAKKy0gICAgICAgIGJvb2wgRnJhbWVGaW5pc2hl ZCA9IERlY29kZVBhY2tldCgmUGFja2V0KTsKKy0gICAgICAgIGF2X3BhY2tldF91bnJlZigmUGFj a2V0KTsKKy0gICAgICAgIGlmIChGcmFtZUZpbmlzaGVkKQorKyAgICAgICAgYm9vbCBGcmFtZUZp bmlzaGVkID0gRGVjb2RlUGFja2V0KFBhY2tldCk7CisrICAgICAgICBhdl9wYWNrZXRfdW5yZWYo UGFja2V0KTsKKysgICAgICAgIGlmIChGcmFtZUZpbmlzaGVkKSB7CisrICAgICAgICAgICAgYXZf cGFja2V0X2ZyZWUoJlBhY2tldCk7CisgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQor ICAgICB9CisgCisgICAgIC8vIEZsdXNoIGZpbmFsIGZyYW1lcworLSAgICBJbml0TnVsbFBhY2tl dChQYWNrZXQpOworLSAgICBEZWNvZGVQYWNrZXQoJlBhY2tldCk7CisrICAgIERlY29kZVBhY2tl dChQYWNrZXQpOworKyAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyB9CisgCisgYm9vbCBG Rk1TX1ZpZGVvU291cmNlOjpTZWVrVG8oaW50IG4sIGludCBTZWVrT2Zmc2V0KSB7CistLSAKKzIu NDAuMAorCitGcm9tIGJmOWUwM2U5ZTA4NTM0YzAyNGU1YTc0NGE2NDM3YzRhYWMxNjAyMDEgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0 ZW5odWlzQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNCBNYXkgMjAyMSAxNDoyMDo0NyArMDEwMAor U3ViamVjdDogW1BBVENIIDIvM10gY29uZmlndXJlOiBSZW1vdmUgZGVwcmVjYXRlZCBBUEkgdXNl CisKK1NpZ25lZC1vZmYtYnk6IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21h aWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5h YyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYjM1ZWY4MGJjLi5kMTk3MTRkMGYgMTAwNjQ0CistLS0g YS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTEwMiwxMCArMTAyLDEwIEBA IENGTEFHUz0iJF9DRkxBR1MgJEZGTVBFR19DRkxBR1MiCisKKyBBQ19ERUZVTihbVEVTVF9GRk1Q RUddLAorICAgICAgICAgIFtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCistICAg ICAgICAgICAgI2luY2x1ZGUgPGxpYmF2Y29kZWMvYXZjb2RlYy5oPgorKyAgICAgICAgICAgICNp bmNsdWRlIDxsaWJhdmZvcm1hdC9hdmZvcm1hdC5oPgorICAgICAgICAgICAgICNpbmNsdWRlIDxs aWJzd3NjYWxlL3N3c2NhbGUuaD4KKyAgICAgICAgICAgICBdXSxbWworLSAgICAgICAgICAgICAg ICBhdmNvZGVjX3JlZ2lzdGVyX2FsbCgpOworKyAgICAgICAgICAgICAgICBhdmZvcm1hdF9uZXR3 b3JrX2luaXQoKTsKKyAgICAgICAgICAgICAgICAgc3dzY2FsZV92ZXJzaW9uKCk7CisgICAgICAg ICAgICAgXV0pXSwgW2V2YWwgJDE9eWVzXSwgW2V2YWwgJDE9bm9dKQorICAgICAgICAgXSkKKwpk aWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1zMi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtczIvdGVtcGxh dGUKaW5kZXggNjhlOGEwYzE0YmNlLi4yYWNmYWRhYzQ0YjMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv ZmZtczIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mZm1zMi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZmbXMyJwogcGtnbmFtZT1mZm1zMgogdmVyc2lvbj0y LjQwCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBj b25maWd1cmVfYXJncz0iLS1lbmFibGUtc2hhcmVkIC0tZGlzYWJsZS1zdGF0aWMiCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWcgYXV0b2NvbmYgYXV0b21ha2UgbGlidG9vbCIKCkZyb20gZTg3 NDA0MWYzZjMzNTRlNmQyZWM0Y2QzYjMzNWFkYmFlOWEwMjIzNiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM0LzExM10gZnJlZXJkcDogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEy Y2I5YWEucGF0Y2ggICAgfCA0MiArKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2ZyZWVyZHAv dGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA0 MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRjaAoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2ggYi9zcmNwa2dzL2Zy ZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uYTQzMjRkYTNhODgyCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRjaApAQCAtMCwwICsxLDQy IEBACitGcm9tIGFhMmNiOWFhNWZmNTU2MjQzMzU5OGJhMTY4YTQ2NmUwNzUyYmNhMGUgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBha2FsbGFiZXRoIDxha2FsbGFiZXRoQHBvc3Rlby5u ZXQ+CitEYXRlOiBUdWUsIDE0IEZlYiAyMDIzIDA3OjQ4OjU0ICswMTAwCitTdWJqZWN0OiBbUEFU Q0hdIEZpeGVkICM4Njg2OiBVcGRhdGUgaDI2NCB0byB1c2UgbmV3IEZGTVBFRyBBUEkKKworLS0t CisgY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMgfCAyICsrCisgbGli ZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jICAgICAgICAgICAgfCAyICsrCisgMiBmaWxlcyBj aGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NoYW5uZWxzL3RzbWYvY2xp ZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jIGIvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3Rz bWZfZmZtcGVnLmMKK2luZGV4IDMzOTQ2MmQ4NjVmLi5iZWVhODBiN2ExZSAxMDA2NDQKKy0tLSBh L2NoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jCisrKysgYi9jaGFubmVs cy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYworQEAgLTIzOSw4ICsyMzksMTAgQEAg c3RhdGljIEJPT0wgdHNtZl9mZm1wZWdfaW5pdF9zdHJlYW0oSVRTTUZEZWNvZGVyKiBkZWNvZGVy LCBjb25zdCBUU19BTV9NRURJQV9UWVAKKyAJCX0KKyAJfQorIAorKyNpZiBMSUJBVkNPREVDX1ZF UlNJT05fSU5UIDwgQVZfVkVSU0lPTl9JTlQoNTksIDE4LCAxMDApCisgCWlmIChtZGVjb2Rlci0+ Y29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9UUlVOQ0FURUQpCisgCQltZGVjb2Rl ci0+Y29kZWNfY29udGV4dC0+ZmxhZ3MgfD0gQVZfQ09ERUNfRkxBR19UUlVOQ0FURUQ7CisrI2Vu ZGlmCisgCisgCXJldHVybiBUUlVFOworIH0KK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NvZGVj L2gyNjRfZmZtcGVnLmMgYi9saWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMKK2luZGV4IDhh MjNkYjI0NzNjLi44OTZhMzMzMDE5YiAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29kZWMvaDI2 NF9mZm1wZWcuYworKysrIGIvbGliZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jCitAQCAtNjE1 LDEwICs2MTUsMTIgQEAgc3RhdGljIEJPT0wgbGliYXZjb2RlY19pbml0KEgyNjRfQ09OVEVYVCog aDI2NCkKKyAJCQlnb3RvIEVYQ0VQVElPTjsKKyAJCX0KKyAKKysjaWYgTElCQVZDT0RFQ19WRVJT SU9OX0lOVCA8IEFWX1ZFUlNJT05fSU5UKDU5LCAxOCwgMTAwKQorIAkJaWYgKHN5cy0+Y29kZWNE ZWNvZGVyLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBfVFJVTkNBVEVEKQorIAkJeworIAkJ CXN5cy0+Y29kZWNEZWNvZGVyQ29udGV4dC0+ZmxhZ3MgfD0gQVZfQ09ERUNfRkxBR19UUlVOQ0FU RUQ7CisgCQl9CisrI2VuZGlmCisgCisgI2lmZGVmIFdJVEhfVkFBUEkKKyAKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZnJlZXJkcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZnJlZXJkcC90ZW1wbGF0ZQppbmRl eCAyNWU4YWE5Njc3ZjAuLjRkNTFjODE4OTkwMiAxMDA2NDQKLS0tIGEvc3JjcGtncy9mcmVlcmRw L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZnJlZXJkcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZyZWVyZHAnCiBwa2duYW1lPWZyZWVyZHAKIHZlcnNpb249 Mi4xMC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmln dXJlX2FyZ3M9Ii1EV0lUSF9BTFNBPU9OIC1EV0lUSF9DVVBTPU9GRiAtRFdJVEhfRkZNUEVHPU9O CiAgLURXSVRIX0dTVFJFQU1FUl8wXzEwPU9GRiAtRFdJVEhfR1NUUkVBTUVSXzFfMD1PRkYgLURX SVRIX0pQRUc9T04KCkZyb20gOGM4OGE4OWVjOTMxYjZlYTc0MmQ3ZmFkYTMzNzQ2ZDFmNGUyOTkz NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDM1LzExM10gZ2VyYmVyYTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dl cmJlcmEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dlcmJlcmEvdGVtcGxhdGUgYi9zcmNw a2dzL2dlcmJlcmEvdGVtcGxhdGUKaW5kZXggYWUxNGYzNWM3NjdjLi4yZGMwYWMwY2UwM2IgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dlcmJlcmEv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnZXJiZXJhJwog cGtnbmFtZT1nZXJiZXJhCiB2ZXJzaW9uPTEuMTIuMQotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfU1lTVEVNRD0wIC1EV0lU SF9BVkNPREVDPTEiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIDIyOGZlMWU2 YTE1MTJmZGM2OTRiZWQzM2RlM2Y2YThkOTBlMTc3N2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNi8xMTNdIGdvbGRlbmRpY3Q6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVn NS5wYXRjaCB8IDIzMiArKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9nb2xkZW5kaWN0 L3RlbXBsYXRlICAgICAgICAgICAgICB8ICAgNCArLQogMiBmaWxlcyBjaGFuZ2VkLCAyMzQgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2dv bGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nb2xk ZW5kaWN0L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVz L2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43 Y2ZjOThhZGEzNjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hl cy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsMjMyIEBACitGcm9tIDAzYmJlMDFiNzlhMWYwN2E2 NzgwY2I2MGYyM2EwODcxMDRjNWQ3N2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBB YnM2MiA8b3R0b21hbm5AeWFuZGV4LnJ1PgorRGF0ZTogRnJpLCAzMCBNYXIgMjAxOCAyMjo1Mzoy NCArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggd2FybmluZ3Mgd2hpbGUgY29tcGlsZSB3aXRo IEZGTXBlZyAzLjQuMiAoaXNzdWUgIzk3OCkKKworLS0tCisgZmZtcGVnYXVkaW8uY2MgfCA2OCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQorIDEgZmls ZSBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0 IGEvZmZtcGVnYXVkaW8uY2MgYi9mZm1wZWdhdWRpby5jYworaW5kZXggZWQxMTcyYmRkLi41NmU4 Zjc4OGUgMTAwNjQ0CistLS0gYS9mZm1wZWdhdWRpby5jYworKysrIGIvZmZtcGVnYXVkaW8uY2MK K0BAIC05MSw2ICs5MSw3IEBAIHN0cnVjdCBEZWNvZGVyQ29udGV4dAorICAgUUJ5dGVBcnJheSBh dWRpb0RhdGFfOworICAgUURhdGFTdHJlYW0gYXVkaW9EYXRhU3RyZWFtXzsKKyAgIEFWRm9ybWF0 Q29udGV4dCAqIGZvcm1hdENvbnRleHRfOworKyAgQVZDb2RlYyAqIGNvZGVjXzsKKyAgIEFWQ29k ZWNDb250ZXh0ICogY29kZWNDb250ZXh0XzsKKyAgIEFWSU9Db250ZXh0ICogYXZpb0NvbnRleHRf OworICAgQVZTdHJlYW0gKiBhdWRpb1N0cmVhbV87CitAQCAtMTE0LDYgKzExNSw3IEBAIERlY29k ZXJDb250ZXh0OjpEZWNvZGVyQ29udGV4dCggUUJ5dGVBcnJheSBjb25zdCAmIGF1ZGlvRGF0YSwg UUF0b21pY0ludCAmIGlzQ2FuCisgICBhdWRpb0RhdGFfKCBhdWRpb0RhdGEgKSwKKyAgIGF1ZGlv RGF0YVN0cmVhbV8oIGF1ZGlvRGF0YV8gKSwKKyAgIGZvcm1hdENvbnRleHRfKCBOVUxMICksCisr ICBjb2RlY18oIE5VTEwgKSwKKyAgIGNvZGVjQ29udGV4dF8oIE5VTEwgKSwKKyAgIGF2aW9Db250 ZXh0XyggTlVMTCApLAorICAgYXVkaW9TdHJlYW1fKCBOVUxMICksCitAQCAtMTQzLDcgKzE0NSwx MSBAQCBib29sIERlY29kZXJDb250ZXh0OjpvcGVuQ29kZWMoIFFTdHJpbmcgJiBlcnJvclN0cmlu ZyApCisgICAgIHJldHVybiBmYWxzZTsKKyAgIH0KKworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05f TUFKT1IgPCA1NiB8fCAoIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1NiAmJiBMSUJBVkNP REVDX1ZFUlNJT05fTUlOT1IgPCA1NiApCisgICB1bnNpZ25lZCBjaGFyICogYXZpb0J1ZmZlciA9 ICggdW5zaWduZWQgY2hhciAqIClhdl9tYWxsb2MoIGtCdWZmZXJTaXplICsgRkZfSU5QVVRfQlVG RkVSX1BBRERJTkdfU0laRSApOworKyNlbHNlCisrICB1bnNpZ25lZCBjaGFyICogYXZpb0J1ZmZl ciA9ICggdW5zaWduZWQgY2hhciAqIClhdl9tYWxsb2MoIGtCdWZmZXJTaXplICsgQVZfSU5QVVRf QlVGRkVSX1BBRERJTkdfU0laRSApOworKyNlbmRpZgorICAgaWYgKCAhYXZpb0J1ZmZlciApCisg ICB7CisgICAgIGVycm9yU3RyaW5nID0gUU9iamVjdDo6dHIoICJhdl9tYWxsb2MoKSBmYWlsZWQu IiApOworQEAgLTE4Niw3ICsxOTIsMTEgQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6b3BlbkNvZGVj KCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICAgLy8gRmluZCBhdWRpbyBzdHJlYW0sIHVzZSB0 aGUgZmlyc3QgYXVkaW8gc3RyZWFtIGlmIGF2YWlsYWJsZQorICAgZm9yICggdW5zaWduZWQgaSA9 IDA7IGkgPCBmb3JtYXRDb250ZXh0Xy0+bmJfc3RyZWFtczsgaSsrICkKKyAgIHsKKysjaWYgTElC QVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1Ig PT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwgMzMgKQorICAgICBpZiAoIGZvcm1h dENvbnRleHRfLT5zdHJlYW1zW2ldLT5jb2RlYy0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVf QVVESU8gKQorKyNlbHNlCisrICAgICAgaWYgKCBmb3JtYXRDb250ZXh0Xy0+c3RyZWFtc1tpXS0+ Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPICkKKysjZW5kaWYKKyAg ICAgeworICAgICAgIGF1ZGlvU3RyZWFtXyA9IGZvcm1hdENvbnRleHRfLT5zdHJlYW1zW2ldOwor ICAgICAgIGJyZWFrOworQEAgLTE5OCwyMiArMjA4LDM4IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6 Om9wZW5Db2RlYyggUVN0cmluZyAmIGVycm9yU3RyaW5nICkKKyAgICAgcmV0dXJuIGZhbHNlOwor ICAgfQorCisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU3IHx8ICggTElCQVZDT0RF Q19WRVJTSU9OX01BSk9SID09IDU3ICYmIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiA8IDMzICkK KyAgIGNvZGVjQ29udGV4dF8gPSBhdWRpb1N0cmVhbV8tPmNvZGVjOworLSAgQVZDb2RlYyAqIGNv ZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoIGNvZGVjQ29udGV4dF8tPmNvZGVjX2lkICk7Cist ICBpZiAoICFjb2RlYyApCisrICBjb2RlY18gPSBhdmNvZGVjX2ZpbmRfZGVjb2RlciggY29kZWND b250ZXh0Xy0+Y29kZWNfaWQgKTsKKysgIGlmICggIWNvZGVjXyApCisgICB7CisgICAgIGVycm9y U3RyaW5nID0gUU9iamVjdDo6dHIoICJDb2RlYyBbaWQ6ICUxXSBub3QgZm91bmQuIiApLmFyZygg Y29kZWNDb250ZXh0Xy0+Y29kZWNfaWQgKTsKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorKyNl bHNlCisrICBjb2RlY18gPSBhdmNvZGVjX2ZpbmRfZGVjb2RlciggYXVkaW9TdHJlYW1fLT5jb2Rl Y3Bhci0+Y29kZWNfaWQgKTsKKysgIGlmICggIWNvZGVjXyApCisrICB7CisrICAgIGVycm9yU3Ry aW5nID0gUU9iamVjdDo6dHIoICJDb2RlYyBbaWQ6ICUxXSBub3QgZm91bmQuIiApLmFyZyggYXVk aW9TdHJlYW1fLT5jb2RlY3Bhci0+Y29kZWNfaWQgKTsKKysgICAgcmV0dXJuIGZhbHNlOworKyAg fQorKyAgY29kZWNDb250ZXh0XyA9IGF2Y29kZWNfYWxsb2NfY29udGV4dDMoIGNvZGVjXyApOwor KyAgaWYgKCAhY29kZWNDb250ZXh0XyApCisrICB7CisrICAgIGVycm9yU3RyaW5nID0gUU9iamVj dDo6dHIoICJhdmNvZGVjX2FsbG9jX2NvbnRleHQzKCkgZmFpbGVkLiIgKTsKKysgICAgcmV0dXJu IGZhbHNlOworKyAgfQorKyAgYXZjb2RlY19wYXJhbWV0ZXJzX3RvX2NvbnRleHQoIGNvZGVjQ29u dGV4dF8sIGF1ZGlvU3RyZWFtXy0+Y29kZWNwYXIgKTsKKysjZW5kaWYKKworLSAgcmV0ID0gYXZj b2RlY19vcGVuMiggY29kZWNDb250ZXh0XywgY29kZWMsIE5VTEwgKTsKKysgIHJldCA9IGF2Y29k ZWNfb3BlbjIoIGNvZGVjQ29udGV4dF8sIGNvZGVjXywgTlVMTCApOworICAgaWYgKCByZXQgPCAw ICkKKyAgIHsKKyAgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0ciggImF2Y29kZWNfb3BlbjIo KSBmYWlsZWQ6ICUxLiIgKS5hcmcoIGF2RXJyb3JTdHJpbmcoIHJldCApICk7CisgICAgIHJldHVy biBmYWxzZTsKKyAgIH0KKworLSAgYXZfbG9nKCBOVUxMLCBBVl9MT0dfSU5GTywgIkNvZGVjIG9w ZW46ICVzOiBjaGFubmVsczogJWQsIHJhdGU6ICVkLCBmb3JtYXQ6ICVzXG4iLCBjb2RlYy0+bG9u Z19uYW1lLAorKyAgYXZfbG9nKCBOVUxMLCBBVl9MT0dfSU5GTywgIkNvZGVjIG9wZW46ICVzOiBj aGFubmVsczogJWQsIHJhdGU6ICVkLCBmb3JtYXQ6ICVzXG4iLCBjb2RlY18tPmxvbmdfbmFtZSwK KyAgICAgICAgICAgY29kZWNDb250ZXh0Xy0+Y2hhbm5lbHMsIGNvZGVjQ29udGV4dF8tPnNhbXBs ZV9yYXRlLCBhdl9nZXRfc2FtcGxlX2ZtdF9uYW1lKCBjb2RlY0NvbnRleHRfLT5zYW1wbGVfZm10 ICkgKTsKKyAgIHJldHVybiB0cnVlOworIH0KK0BAIC0yNTIsMTAgKzI3OCwxMyBAQCB2b2lkIERl Y29kZXJDb250ZXh0OjpjbG9zZUNvZGVjKCkKKworICAgLy8gQ2xvc2luZyBhIGNvZGVjIGNvbnRl eHQgd2l0aG91dCBwcmlvciBhdmNvZGVjX29wZW4yKCkgd2lsbCByZXN1bHQgaW4KKyAgIC8vIGEg Y3Jhc2ggaW4gZmZtcGVnCistICBpZiAoIGF1ZGlvU3RyZWFtXyAmJiBhdWRpb1N0cmVhbV8tPmNv ZGVjICYmIGF1ZGlvU3RyZWFtXy0+Y29kZWMtPmNvZGVjICkKKysgIGlmICggYXVkaW9TdHJlYW1f ICYmIGNvZGVjQ29udGV4dF8gJiYgY29kZWNfICkKKyAgIHsKKyAgICAgYXVkaW9TdHJlYW1fLT5k aXNjYXJkID0gQVZESVNDQVJEX0FMTDsKKy0gICAgYXZjb2RlY19jbG9zZSggYXVkaW9TdHJlYW1f LT5jb2RlYyApOworKyAgICBhdmNvZGVjX2Nsb3NlKCBjb2RlY0NvbnRleHRfICk7CisrI2lmIExJ QkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA+IDU3IHx8ICggTElCQVZDT0RFQ19WRVJTSU9OX01BSk9S ID09IDU3ICYmIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiA+PSAzMyApCisrICAgIGF2Y29kZWNf ZnJlZV9jb250ZXh0KCAmY29kZWNDb250ZXh0XyApOworKyNlbmRpZgorICAgfQorCisgICBhdmZv cm1hdF9jbG9zZV9pbnB1dCggJmZvcm1hdENvbnRleHRfICk7CitAQCAtMzU2LDYgKzM4NSw3IEBA IGJvb2wgRGVjb2RlckNvbnRleHQ6OnBsYXkoIFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgICAg IGlmICggcGFja2V0LnN0cmVhbV9pbmRleCA9PSBhdWRpb1N0cmVhbV8tPmluZGV4ICkKKyAgICAg eworICAgICAgIEFWUGFja2V0IHBhY2sgPSBwYWNrZXQ7CisrI2lmIExJQkFWQ09ERUNfVkVSU0lP Tl9NQUpPUiA8IDU3IHx8ICggTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID09IDU3ICYmIExJQkFW Q09ERUNfVkVSU0lPTl9NSU5PUiA8IDM3ICkKKyAgICAgICBpbnQgZ290RnJhbWUgPSAwOworICAg ICAgIGRvCisgICAgICAgeworQEAgLTM3MCw2ICs0MDAsMTkgQEAgYm9vbCBEZWNvZGVyQ29udGV4 dDo6cGxheSggUVN0cmluZyAmIGVycm9yU3RyaW5nICkKKyAgICAgICAgIHBhY2suZGF0YSArPSBs ZW47CisgICAgICAgfQorICAgICAgIHdoaWxlKCBwYWNrLnNpemUgPiAwICk7CisrI2Vsc2UKKysg ICAgICBpbnQgcmV0ID0gYXZjb2RlY19zZW5kX3BhY2tldCggY29kZWNDb250ZXh0XywgJnBhY2sg KTsKKysgICAgICAvKiByZWFkIGFsbCB0aGUgb3V0cHV0IGZyYW1lcyAoaW4gZ2VuZXJhbCB0aGVy ZSBtYXkgYmUgYW55IG51bWJlciBvZiB0aGVtKSAqLworKyAgICAgIHdoaWxlKCByZXQgPj0gMCAp CisrICAgICAgeworKyAgICAgICAgcmV0ID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1lKCBjb2RlY0Nv bnRleHRfLCBmcmFtZSk7CisrCisrICAgICAgICBpZiAoIFF0NHg1OjpBdG9taWNJbnQ6OmxvYWRB Y3F1aXJlKCBpc0NhbmNlbGxlZF8gKSB8fCByZXQgPCAwICkKKysgICAgICAgICAgYnJlYWs7Cisr CisrICAgICAgICBwbGF5RnJhbWUoIGZyYW1lICk7CisrICAgICAgfQorKyNlbmRpZgorICAgICB9 CisgICAgIC8vIGF2X2ZyZWVfcGFja2V0KCkgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgZWFjaCBjYWxs IHRvIGF2X3JlYWRfZnJhbWUoKQorICNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1NyB8 fCAoIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1NyAmJiBMSUJBVkNPREVDX1ZFUlNJT05f TUlOT1IgPCA3ICkKK0BAIC0zNzksNiArNDIyLDcgQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6cGxh eSggUVN0cmluZyAmIGVycm9yU3RyaW5nICkKKyAjZW5kaWYKKyAgIH0KKworKyNpZiBMSUJBVkNP REVDX1ZFUlNJT05fTUFKT1IgPCA1NyB8fCAoIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1 NyAmJiBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgPCAzNyApCisgICBpZiAoICFRdDR4NTo6QXRv bWljSW50Ojpsb2FkQWNxdWlyZSggaXNDYW5jZWxsZWRfICkgJiYKKyAgICAgICAgY29kZWNDb250 ZXh0Xy0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIENPREVDX0NBUF9ERUxBWSApCisgICB7CitAQCAt MzkxLDYgKzQzNSwxOCBAQCBib29sIERlY29kZXJDb250ZXh0OjpwbGF5KCBRU3RyaW5nICYgZXJy b3JTdHJpbmcgKQorICAgICAgIHBsYXlGcmFtZSggZnJhbWUgKTsKKyAgICAgfQorICAgfQorKyNl bHNlCisrICAvKiBmbHVzaCB0aGUgZGVjb2RlciAqLworKyAgYXZfaW5pdF9wYWNrZXQoICZwYWNr ZXQgKTsKKysgIGludCByZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KGNvZGVjQ29udGV4dF8sICZw YWNrZXQgKTsKKysgIHdoaWxlKCByZXQgPj0gMCApCisrICB7CisrICAgIHJldCA9IGF2Y29kZWNf cmVjZWl2ZV9mcmFtZShjb2RlY0NvbnRleHRfLCBmcmFtZSk7CisrICAgIGlmICggUXQ0eDU6OkF0 b21pY0ludDo6bG9hZEFjcXVpcmUoIGlzQ2FuY2VsbGVkXyApIHx8IHJldCA8IDAgKQorKyAgICAg IGJyZWFrOworKyAgICBwbGF5RnJhbWUoIGZyYW1lICk7CisrICB9CisrI2VuZGlmCisKKyAjaWYg TElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTQKKyAgIGF2X2ZyZWUoIGZyYW1lICk7CiszMgor c3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVnNS0yLnBhdGNoCitDb21tZW50IG9uIHRo aXMgZmlsZQorQEAgLTAsMCArMSwzMiBAQAorRnJvbSA5NjZmNGE4Yjc4ZTYzMjRiOTMwZTVhNTBm MmJiOTMwYmQ4N2U1NjVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWJzNjIgPG90 dG9tYW5uQHlhbmRleC5ydT4KK0RhdGU6IEZyaSwgMjcgU2VwIDIwMTkgMTc6MDA6NTIgKzAzMDAK K1N1YmplY3Q6IFtQQVRDSF0gRkZtcGVnIHBsYXllcjogRml4IHNvbWUgY3Jhc2hlcyBvbiBicm9r ZW4gZmlsZXMKKworLS0tCisgZmZtcGVnYXVkaW8uY2MgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdl ZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9mZm1wZWdhdWRpby5jYyBiL2ZmbXBl Z2F1ZGlvLmNjCitpbmRleCA1NmU4Zjc4OGUuLjQxNWZjNzljYiAxMDA2NDQKKy0tLSBhL2ZmbXBl Z2F1ZGlvLmNjCisrKysgYi9mZm1wZWdhdWRpby5jYworQEAgLTUxLDcgKzUxLDkgQEAgQXVkaW9T ZXJ2aWNlICYgQXVkaW9TZXJ2aWNlOjppbnN0YW5jZSgpCisKKyBBdWRpb1NlcnZpY2U6OkF1ZGlv U2VydmljZSgpCisgeworKyNpZiBMSUJBVkZPUk1BVF9WRVJTSU9OX01BSk9SIDwgNTggfHwgKCBM SUJBVkZPUk1BVF9WRVJTSU9OX01BSk9SID09IDU4ICYmIExJQkFWRk9STUFUX1ZFUlNJT05fTUlO T1IgPCA5ICkKKyAgIGF2X3JlZ2lzdGVyX2FsbCgpOworKyNlbmRpZgorICAgYW9faW5pdGlhbGl6 ZSgpOworIH0KKworQEAgLTQzOCw2ICs0NDAsOCBAQCBib29sIERlY29kZXJDb250ZXh0OjpwbGF5 KCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICNlbHNlCisgICAvKiBmbHVzaCB0aGUgZGVjb2Rl ciAqLworICAgYXZfaW5pdF9wYWNrZXQoICZwYWNrZXQgKTsKKysgIHBhY2tldC5kYXRhID0gTlVM TDsKKysgIHBhY2tldC5zaXplID0gMDsKKyAgIGludCByZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0 KGNvZGVjQ29udGV4dF8sICZwYWNrZXQgKTsKKyAgIHdoaWxlKCByZXQgPj0gMCApCisgICB7Cisy NQorc3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVnNS0zLnBhdGNoCitDb21tZW50IG9u IHRoaXMgZmlsZQorQEAgLTAsMCArMSwyNSBAQAorRnJvbSA4YWNiMjg4YzllOWJkYjNjNmJmMmU4 MDM5NTRkZDNiNmFjMjczYzA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGlhbyBK dW54dWFuIDxtaWtlbGp4QDEyNi5jb20+CitEYXRlOiBTdW4sIDIwIEZlYiAyMDIyIDEyOjI4OjA1 ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFkZCBzdXBwb3J0IGZvciBmZm1wZWcgNS4wCisKKy0t LQorIGZmbXBlZ2F1ZGlvLmNjIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9u cygrKQorCitkaWZmIC0tZ2l0IGEvZmZtcGVnYXVkaW8uY2MgYi9mZm1wZWdhdWRpby5jYworaW5k ZXggZDU1MGY0YTc3Li43OTQ4ZDIxODcgMTAwNjQ0CistLS0gYS9mZm1wZWdhdWRpby5jYworKysr IGIvZmZtcGVnYXVkaW8uY2MKK0BAIC05NCw3ICs5NCwxMSBAQCBzdHJ1Y3QgRGVjb2RlckNvbnRl eHQKKyAgIFFCeXRlQXJyYXkgYXVkaW9EYXRhXzsKKyAgIFFEYXRhU3RyZWFtIGF1ZGlvRGF0YVN0 cmVhbV87CisgICBBVkZvcm1hdENvbnRleHQgKiBmb3JtYXRDb250ZXh0XzsKKysjaWYgTElCQVZD T0RFQ19WRVJTSU9OX01BSk9SIDwgNTkKKyAgIEFWQ29kZWMgKiBjb2RlY187CisrI2Vsc2UKKysg IGNvbnN0IEFWQ29kZWMgKiBjb2RlY187CisrI2VuZGlmCisgICBBVkNvZGVjQ29udGV4dCAqIGNv ZGVjQ29udGV4dF87CisgICBBVklPQ29udGV4dCAqIGF2aW9Db250ZXh0XzsKKyAgIEFWU3RyZWFt ICogYXVkaW9TdHJlYW1fOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRl IGIvc3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlCmluZGV4IGY0YTA1NzU5ZjY5My4uOTdmNDQz NDdiMDNhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnZ29sZGVuZGljdCcKIHBrZ25hbWU9Z29sZGVuZGljdAogdmVyc2lvbj0xLjUuMAotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSJD T05GSUcrPXppbV9zdXBwb3J0IGdvbGRlbmRpY3QucHJvIgogaG9zdG1ha2VkZXBlbmRzPSJxdDUt cW1ha2UgcGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyIKQEAgLTEwLDcgKzEwLDcgQEAgbWFrZWRl cGVuZHM9InRpZmYtZGV2ZWwgcXQ1LWRldmVsIGxpYnZvcmJpcy1kZXZlbCB6bGliLWRldmVsCiAg cXQ1LXdlYmtpdC1kZXZlbCBsem8tZGV2ZWwgYnppcDItZGV2ZWwgbGliYW8tZGV2ZWwgcXQ1LXN2 Zy1kZXZlbAogIGxpYmViLWRldmVsIHF0NS14MTFleHRyYXMtZGV2ZWwgZmZtcGVnLWRldmVsIGxp Ymx6bWEtZGV2ZWwKICBxdDUtbXVsdGltZWRpYS1kZXZlbCIKLXNob3J0X2Rlc2M9IkEgZmVhdHVy ZS1yaWNoIGRpY3Rpb25hcnkgbG9va3VwIHByb2dyYW0iCitzaG9ydF9kZXNjPSJGZWF0dXJlLXJp Y2ggZGljdGlvbmFyeSBsb29rdXAgcHJvZ3JhbSIKIG1haW50YWluZXI9IkpvaG4gPG1lQGpvaG5u eW5hdG9yLmRldj4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHA6 Ly9nb2xkZW5kaWN0Lm9yZy8iCgpGcm9tIDEwOTJjYWI3MGViNzAyMzM4ZmNkYTM5NDU4YWYzMDc1 YTg0OTg5ZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDog W1BBVENIIDAzNy8xMTNdIGdzdC1saWJhdjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LWxpYmF2L3Rl bXBsYXRlIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKaW5kZXggOGM3MmZjM2U5N2VlLi4w NGMzOWJmZjE0ODkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnZ3N0LWxpYmF2JwogcGtnbmFtZT1nc3QtbGliYXYKIHZlcnNpb249MS4yMi4yCi1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIHlhc20iCiBtYWtlZGVwZW5kcz0ib3JjLWRldmVsIGdzdC1wbHVnaW5zLWJh c2UxLWRldmVsIGZmbXBlZy1kZXZlbCIKCkZyb20gNzk1ZjAxZjFkYjM1ZmRkNjVjMmYxMmMyMWVi MTE3ODJiMDJiZjFkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDM4LzExM10gZ3N0LXBsdWdpbnMtYmFkMTogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWJh ZDEvdGVtcGxhdGUKaW5kZXggNzdiZjc5OTgxYzIwLi41YzE1ODcyNGE2YzcgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1wbHVn aW5zLWJhZDEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdn c3QtcGx1Z2lucy1iYWQxJwogcGtnbmFtZT1nc3QtcGx1Z2lucy1iYWQxCiB2ZXJzaW9uPTEuMjIu MgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfaGVscGVyPSJnaXIiCiBidWlsZF9zdHls ZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EcGFja2FnZS1vcmlnaW49aHR0cHM6Ly92b2lkbGlu dXgub3JnIC1EZG9jPWRpc2FibGVkCgpGcm9tIDI2MWNmMmMwY2Y3OTVkMjA4NTkwMTM2NDg1Y2Ey NWZmYjU5NGZlMTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVj dDogW1BBVENIIDAzOS8xMTNdIGdzdC1ydHNwLXNlcnZlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVt cGxhdGUKaW5kZXggMmYwYzBjNDVmZjgyLi45ODBmZDcyY2RkNGMgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVy L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXJ0c3At c2VydmVyJwogcGtnbmFtZT1nc3QtcnRzcC1zZXJ2ZXIKIHZlcnNpb249MS4yMi4yCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIHB5dGhvbjMiCiBtYWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBnc3QtcGx1Z2lucy1iYWQx LWRldmVsIGdvYmplY3QtaW50cm9zcGVjdGlvbgoKRnJvbSA0ZWY5ZGFlYjVmYzg0NzE5NTllMDBl ZDk1NDcwNDExYzM2ZGYyODI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNDAvMTEzXSBndXZjdmlldzogdXBkYXRlIHRvIDIuMC44LgoKLS0t CiBzcmNwa2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2ggfCAxMCArKysrKysr KysrCiBzcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgfCAgNSArKy0t LQogMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRj aAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRj aCBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjUwM2MyYWYzYjc4YwotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApAQCAtMCww ICsxLDEwIEBACistLS0gYS9ndXZjdmlldy9ndXZjdmlldy5jCisrKysgYi9ndXZjdmlldy9ndXZj dmlldy5jCitAQCAtMjgsNiArMjgsNyBAQAorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNs dWRlIDxzeXMvcmVzb3VyY2UuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8bG9j YWxlLmg+CisgCisgI2luY2x1ZGUgImd2aWV3LmgiCisgI2luY2x1ZGUgImd2aWV3djRsMmNvcmUu aCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUgYi9zcmNwa2dzL2d1dmN2 aWV3L3RlbXBsYXRlCmluZGV4IDM0NWNmNjAwNmYyNC4uODZhN2ZkNjE5NjEyIDEwMDY0NAotLS0g YS9zcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxh dGUKQEAgLTEsOCArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdndXZjdmlldycKIHBrZ25h bWU9Z3V2Y3ZpZXcKLXZlcnNpb249Mi4wLjcKK3ZlcnNpb249Mi4wLjgKIHJldmlzaW9uPTEKLWNy ZWF0ZV93cmtzcmM9eWVzCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJn cz0iLS1kaXNhYmxlLXN0YXRpYyAtLWRpc2FibGUtZGViaWFuLW1lbnUiCiBob3N0bWFrZWRlcGVu ZHM9InBrZy1jb25maWcgaW50bHRvb2wgYXV0b2NvbmYgYXV0b21ha2UgbGlidG9vbCBnbGliLWRl dmVsIgpAQCAtMTQsNyArMTMsNyBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRs aW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwOi8v Z3V2Y3ZpZXcuc291cmNlZm9yZ2UubmV0LyIKIGRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JHRV9TSVRF fS8ke3BrZ25hbWV9LyR7cGtnbmFtZX0tc3JjLSR7dmVyc2lvbn0udGFyLmJ6MiIKLWNoZWNrc3Vt PWY0N2Q1MWZiZDA2ZTQ0ZWVhYTFhODJmNGExNTNjOTI3NTI3YzkwZDk0NTE0MTk3YTcwYjI5NTYw MjhjYzhhZDQKK2NoZWNrc3VtPWEyMWY0ZTQ0ODI4NjY2NmNmMjdiYWZlZjUyOTBjYzk1M2EwYTE3 OTZiNzUyZTViYmU1MjEyNjZkYzEyMzBjODEKIAogcG9zdF9wYXRjaCgpIHsKIAlzZWQgJzMxYSNp bmNsdWRlIDxsb2NhbGUuaD4nIC1pICBndXZjdmlldy9ndXZjdmlldy5jCgpGcm9tIGIyNGYwMzY0 ZjA1MzljZWVlZWEyNTRhODA5ZjhjOGExOTZhNjVjYTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0MS8xMTNdIGhhbmRicmFrZTogdXBkYXRl IHRvIDEuNi4xCgotLS0KIC4uLi9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBh dGNoICAgIHwgMTEgKysrKysrLS0tLS0KIC4uLi9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwt aW5jbHVkZS5wYXRjaCAgIHwgMTUgKysrKysrKysrKysrKysrCiBzcmNwa2dzL2hhbmRicmFrZS90 ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICB8IDE3ICsrKysrKysrKystLS0tLS0tCiAzIGZp bGVzIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0 Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5nLXgy NjUtbGluay1mbGFnLnBhdGNoIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2lu Zy14MjY1LWxpbmstZmxhZy5wYXRjaAppbmRleCAyNmRiMDM4NjdhMGMuLmQ2YmIyZWRhNjI3YSAx MDA2NDQKLS0tIGEvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxp bmstZmxhZy5wYXRjaAorKysgYi9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5n LXgyNjUtbGluay1mbGFnLnBhdGNoCkBAIC0xLDE0ICsxLDE1IEBACiAtLS0gYS9ndGsvY29uZmln dXJlLmFjCiArKysgYi9ndGsvY29uZmlndXJlLmFjCiBAQCAtMjAzLDcgKzIwMyw3IEBACi0gCisK ICBBTV9DT05ESVRJT05BTChbTUlOR1ddLCBbdGVzdCAieCRtaW5nd19mbGFnIiA9ICJ4eWVzIl0p Ci0gCi0tSEJfTElCUz0iJEhCX0xJQlMgLWxoYW5kYnJha2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVy IC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRhdjFkIC1sc3dyZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZk bmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUgLWx2b3JiaXMgLWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3Nj YWxlIC1sdGhlb3JhZW5jIC1sdGhlb3JhZGVjIC1sdnB4IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFz cyAtbGZvbnRjb25maWcgLWxmcmVldHlwZSAtbHhtbDIgLWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4 IC1sdHVyYm9qcGVnIC1sbHptYSAtbHppbWciCi0rSEJfTElCUz0iJEhCX0xJQlMgLWxoYW5kYnJh a2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVyIC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRhdjFkIC1sc3dy ZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZkbmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUgLWx2b3JiaXMg LWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3NjYWxlIC1sdGhlb3JhZW5jIC1sdGhlb3JhZGVjIC1sdnB4 IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFzcyAtbGZvbnRjb25maWcgLWxmcmVldHlwZSAtbHhtbDIg LWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4IC1sdHVyYm9qcGVnIC1sbHptYSAtbHppbWcgLWxkbCIK KworLUhCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAt bGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5h diAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2Fs ZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3Mg LWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAt bHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sU3Z0QXYxRW5jIgorK0hCX0xJQlM9IiRIQl9MSUJT IC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxk YXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1l IC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9y YWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5 cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6 aW1nIC1sU3Z0QXYxRW5jIC1sZGwiCiAgSEJfQ1BQRkxBR1M9IiRIQl9DUFBGTEFHUyAkSEJJTkMi Ci0gCisKICBQS0dfQ0hFQ0tfTU9EVUxFUyhbeDI2NF0sIFt4MjY0XSwgc3lzX3gyNjQ9eWVzLCBz eXNfeDI2ND1ubykKKwogLS0tIGEvdGVzdC9tb2R1bGUuZGVmcwogKysrIGIvdGVzdC9tb2R1bGUu ZGVmcwogQEAgLTY5LDYgKzY5LDkgQEAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGFuZGJyYWtlL3Bh dGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2ggYi9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVz L2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMjk4ZjlmNGFiMjhmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9oYW5kYnJh a2UvcGF0Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDE1IEBACistLS0g YS9saWJoYi9tb2R1bGUuZGVmcwkyMDIzLTAxLTIyIDExOjM2OjQ5LjAwMDAwMDAwMCAtMDUwMAor KysrIGIvbGliaGIvbW9kdWxlLmRlZnMJMjAyMy0wNC0wMyAyMjozNzo1Mi4zOTU0NjcwMTAgLTA0 MDAKK0BAIC00NiwxMSArNDYsNyBAQAorIExJQkhCLkdDQy5JICs9ICQoTElCSEIuYnVpbGQvKSAk KENPTlRSSUIuYnVpbGQvKWluY2x1ZGUKKyAKKyBpZmVxICgxLCQoRkVBVFVSRS5xc3YpKQorLSAg ICBpZmVxICgkKEhPU1Quc3lzdGVtKSxmcmVlYnNkKSkKKy0gICAgICAgIExJQkhCLkdDQy5JICs9 ICQoTE9DQUxCQVNFKS9pbmNsdWRlL3ZwbAorLSAgICBlbHNlCistICAgICAgICBMSUJIQi5HQ0Mu SSArPSAkKENPTlRSSUIuYnVpbGQvKWluY2x1ZGUvdnBsCistICAgIGVuZGlmCisrICAgIExJQkhC LkdDQy5JICs9IC91c3IvaW5jbHVkZS92cGwKKyBlbmRpZgorIAorIGlmbmVxICgsJChmaWx0ZXIg JChIT1NULnN5c3RlbSksZnJlZWJzZCBuZXRic2Qgb3BlbmJzZCkpCmRpZmYgLS1naXQgYS9zcmNw a2dzL2hhbmRicmFrZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlCmluZGV4 IGNhNWU0NTcxZTQ5Yy4uYzMyY2IxYmZhMzFmIDEwMDY0NAotLS0gYS9zcmNwa2dzL2hhbmRicmFr ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZQpAQCAtMSwxMCArMSwx MCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnaGFuZGJyYWtlJwogcGtnbmFtZT1oYW5kYnJha2UK LXZlcnNpb249MS41LjEKK3ZlcnNpb249MS42LjEKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdu dS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWZvcmNlIC0tZGlzYWJsZS1ndGstdXBkYXRl LWNoZWNrcyAtLWRpc2FibGUtZGYtZmV0Y2ggLS1oYXJkZW4KLSAkKHZvcHRfZW5hYmxlIGZka19h YWMgZmRrLWFhYykgJCh2b3B0X2VuYWJsZSBudmVuYykiCisgJCh2b3B0X2VuYWJsZSBmZGtfYWFj IGZkay1hYWMpICQodm9wdF9lbmFibGUgbnZlbmMpICQodm9wdF9lbmFibGUgcXN2KSIKIG1ha2Vf YnVpbGRfYXJncz0iLUMgJHtYQlBTX1RSSVBMRVR9IgogbWFrZV9pbnN0YWxsX2FyZ3M9Ii1DICR7 WEJQU19UUklQTEVUfSIKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgY21ha2UgZ2V0dGV4dC1k ZXZlbCBnbGliLWRldmVsIGludGx0b29sIGxpYnRvb2wgbTQgbWVzb24gbmFzbSBwa2ctY29uZmln IHB5dGhvbjMiCkBAIC0xMiw4ICsxMiwxMSBAQCBtYWtlZGVwZW5kcz0iYnppcDItZGV2ZWwgZmZt cGVnLWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIGd0ayszLWRldmVsCiAgamFuc3Nvbi1k ZXZlbCBsYW1lLWRldmVsIGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2ZWwgbGliZGF2MWQtZGV2 ZWwKICBsaWJkdmRuYXYtZGV2ZWwgbGliZHZkcmVhZC1kZXZlbCBsaWJndWRldi1kZXZlbCBsaWJu dW1hLWRldmVsCiAgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJ0aGVvcmEtZGV2ZWwgbGlidm9yYmlz LWRldmVsIGxpYnZweC1kZXZlbCBsaWJ4bWwyLWRldmVsCi0gb3B1cy1kZXZlbCBzcGVleC1kZXZl bCB4MjY0LWRldmVsIHgyNjUtZGV2ZWwgemltZy1kZXZlbAorIG9wdXMtZGV2ZWwgc3BlZXgtZGV2 ZWwgeDI2NC1kZXZlbCB4MjY1LWRldmVsIHppbWctZGV2ZWwgbGlic3Z0LWF2MS1kZXZlbAogICQo dm9wdF9pZiBmZGtfYWFjIGZkay1hYWMtZGV2ZWwpCisgJCh2b3B0X2lmIHFzdiBsaWJ2YS1kZXZl bCkKKyAkKHZvcHRfaWYgcXN2IGxpYmRybS1kZXZlbCkKKyAkKHZvcHRfaWYgcXN2IG9uZXZwbC1k ZXZlbCkKICAkKHZvcHRfaWYgbnZlbmMgbnYtY29kZWMtaGVhZGVycykiCiBkZXBlbmRzPSJkZXNr dG9wLWZpbGUtdXRpbHMgZ3N0LXBsdWdpbnMtZ29vZDEgaGljb2xvci1pY29uLXRoZW1lIgogc2hv cnRfZGVzYz0iTXVsdGl0aHJlYWRlZCB2aWRlbyB0cmFuc2NvZGVyIgpAQCAtMjEsMTUgKzI0LDE1 IEBAIG1haW50YWluZXI9IkVubm8gQm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4iCiBsaWNl bnNlPSJHUEwtMi4wLW9ubHkiCiBob21lcGFnZT0iaHR0cHM6Ly9oYW5kYnJha2UuZnIvIgogZGlz dGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vSGFuZEJyYWtlL0hhbmRCcmFrZS9yZWxlYXNlcy9k b3dubG9hZC8ke3ZlcnNpb259L0hhbmRCcmFrZS0ke3ZlcnNpb259LXNvdXJjZS50YXIuYnoyIgot Y2hlY2tzdW09Mzk5OWZlMDZkNTMwOWM4MTk3OTlhNzNhOTY4YThlYzM4NDBlNzg0MGMyYjY0YWY4 ZjVjZGI3ZmQ4Yzk0MzBmMAorY2hlY2tzdW09OTRjY2ZlMDNkYjkxN2E5MTY1MDAwMGM1MTBmN2Zk NTNmODQ0ZGExOWYxOWFkNGI0YmUxYjhmNmJjMzFhOGQ0Ywogbm9jcm9zcz15ZXMKIAotYnVpbGRf b3B0aW9ucz0iZmRrX2FhYyBudmVuYyIKK2J1aWxkX29wdGlvbnM9ImZka19hYWMgbnZlbmMgcXN2 IgogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KIAl4ODZfNjQqfGk2ODYqKQogCQlD RkxBR1M9Ii1tc3NlIgotCQlidWlsZF9vcHRpb25zX2RlZmF1bHQ9Im52ZW5jIgorCQlidWlsZF9v cHRpb25zX2RlZmF1bHQ9Im52ZW5jIHFzdiIKIAkJOzsKIGVzYWMKIApAQCAtMzcsNyArNDAsNyBA QCBwcmVfY29uZmlndXJlKCkgewogCSMgdXNlIHN5c3RlbSBsaWJyYXJpZXMsIGRvbid0IGRvd25s b2FkIHRoZW0KIAlybSAtcmYgY29udHJpYi8KIAlmb3IgbW9kdWxlIGluIGZkay1hYWMgZmZtcGVn IGxpYmJsdXJheSBsaWJkYXYxZCBsaWJkdmRuYXYgbGliZHZkcmVhZCBudmVuYyBcCi0JCXgyNjUg emltZzsgZG8KKwkJeDI2NSB6aW1nIHN2dC1hdjEgbGlidnBsOyBkbwogCSAgICB2c2VkIC1pICIv TU9EVUxFUyArPSBjb250cmliXC8ke21vZHVsZX0vZCIgbWFrZS9pbmNsdWRlL21haW4uZGVmcwog CWRvbmUKIH0KCkZyb20gODQyODYzNGU4MWQ5NDZlYzVmOTQ1OWZiNTNkNTE1MGU5ZTI1YTlkOSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQy LzExM10gaGVkZ2V3YXJzOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mv aGVkZ2V3YXJzL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBs YXRlIGIvc3JjcGtncy9oZWRnZXdhcnMvdGVtcGxhdGUKaW5kZXggNDE5ZjI5Yjk4YjQ0Li45MjZm ZTRmZTNlNjggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCkBAIC0xLDEzICsxLDEzIEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdoZWRnZXdhcnMnCiBwa2duYW1lPWhlZGdld2FycwogdmVyc2lvbj0xLjAuMgotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIt RE5PU0VSVkVSPTEgLUREQVRBX0lOU1RBTExfRElSPS91c3Ivc2hhcmUvJHtwa2duYW1lfQogIC1E UEhZU0ZTX1NZU1RFTT0xIC1ETUlOSU1BTF9GTEFHUz0xIgogbWFrZV9jbWQ9bWFrZQogaG9zdG1h a2VkZXBlbmRzPSJsdWE1MSBwa2ctY29uZmlnIHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKLW1h a2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbHVhNTEtZGV2ZWwgcGh5c2ZzLWRldmVsIHF0NS10b29s cy1kZXZlbCBTREwyX2ltYWdlLWRldmVsCittYWtlZGVwZW5kcz0iZmZtcGVnNC1kZXZlbCBsdWE1 MS1kZXZlbCBwaHlzZnMtZGV2ZWwgcXQ1LXRvb2xzLWRldmVsIFNETDJfaW1hZ2UtZGV2ZWwKICBT REwyX21peGVyLWRldmVsIFNETDJfbmV0LWRldmVsIFNETDJfdHRmLWRldmVsIgogZGVwZW5kcz0i bGliZnJlZWdsdXQiCiBzaG9ydF9kZXNjPSJGdW5ueSB0dXJuLWJhc2VkIGFydGlsbGVyeSBnYW1l LCBmZWF0dXJpbmcgZmlnaHRpbmcgSGVkZ2Vob2dzISIKCkZyb20gNTc0MzMwYTA1NjExM2IyYmNh NjVhNjljMTRmMjMwYjliYTdmZWViYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQzLzExM10gaWRqYzogcmV2YnVtcCBmb3IgZmZtcGVnNC00 LjQuMwoKLS0tCiBzcmNwa2dzL2lkamMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9p ZGpjL3RlbXBsYXRlIGIvc3JjcGtncy9pZGpjL3RlbXBsYXRlCmluZGV4IGRmNjAzMThiM2RiOS4u MzZhNzViYWY1OTdjIDEwMDY0NAotLS0gYS9zcmNwa2dzL2lkamMvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9pZGpjL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdpZGpjJwogcGtnbmFtZT1pZGpjCiB2ZXJzaW9uPTAuOS4xCi1yZXZpc2lvbj0zCityZXZpc2lv bj00CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25m aWcgZ2l0IHB5dGhvbjMgYXV0b21ha2UgZ2V0dGV4dC1kZXZlbCBsaWJ0b29sIgogbWFrZWRlcGVu ZHM9ImxpYnZvcmJpcy1kZXZlbCBsaWJvZ2ctZGV2ZWwgamFjay1kZXZlbCBsaWJzYW1wbGVyYXRl LWRldmVsCi0gbGliZmxhYy1kZXZlbCBsaWJzbmRmaWxlLWRldmVsIG1wZzEyMy1kZXZlbCBmZm1w ZWctZGV2ZWwgc3BlZXgtZGV2ZWwKKyBsaWJmbGFjLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwgbXBn MTIzLWRldmVsIGZmbXBlZzQtZGV2ZWwgc3BlZXgtZGV2ZWwKICBnbGliLWRldmVsIHBpeG1hbi1k ZXZlbCBsYW1lLWRldmVsIHB5dGhvbjMtZ29iamVjdC1kZXZlbCBsaWJzaG91dC1pZGpjLWRldmVs CiAgb3B1cy1kZXZlbCB0d29sYW1lLWRldmVsIHB5dGhvbjMtbXV0YWdlbiBweXRob24zLWRldmVs IgogZGVwZW5kcz0icHl0aG9uMy1nb2JqZWN0IHB5dGhvbjMtbXV0YWdlbiBkZXNrdG9wLWZpbGUt dXRpbHMgc2hhcmVkLW1pbWUtaW5mbyBweXRob24zLWRidXMgamFjayIKCkZyb20gNmY5YjQyYzdi N2IzOWMzZjc5ODZkNTlhZWE4ZGM1YzlmN2ViOGJiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ0LzExM10ga2ZpbGVtZXRhZGF0YTU6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUgYi9zcmNwa2dzL2tm aWxlbWV0YWRhdGE1L3RlbXBsYXRlCmluZGV4IDRiOTFjZjE5ZjI5OC4uYTM2NzFhMzhjZTU5IDEw MDY0NAotLS0gYS9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv a2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdrZmlsZW1ldGFkYXRhNScKIHBrZ25hbWU9a2ZpbGVtZXRhZGF0YTUKIHZlcnNpb249NS4x MDcuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtl ZGVwZW5kcz0ia2NvcmVhZGRvbnMgZXh0cmEtY21ha2UtbW9kdWxlcyBwa2ctY29uZmlnIHF0NS1o b3N0LXRvb2xzIHF0NS1xbWFrZQogIGdldHRleHQga2NvcmVhZGRvbnMgcHl0aG9uMyIKCkZyb20g ZDFiYzRhNzZlZDIzZjlmMzdhZmI0Zjk0YmY4Y2EzMjZlN2VkOGYyYyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ1LzExM10ga2lkMzogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBh dGNoIHwgMTcgKysrKysrKysrKysrKysrKysKIHNyY3BrZ3Mva2lkMy90ZW1wbGF0ZSAgICAgICAg ICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5w YXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9z cmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uMTM1ZmM1MGUwN2M5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDE3IEBACisjIGh0dHBzOi8v YXVyLmFyY2hsaW51eC5vcmcvY2dpdC9hdXIuZ2l0L2RpZmYvZmZtcGVnNS5wYXRjaD9oPWtpZDMt Y2xpJmlkPTEyNDEwYTc0OTA2NjEyZTdlZmMwZWM4ZmJjZTczOWI0YTBmZWY3ZTcKK2RpZmYgLS1n aXQgYS9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRlY29kZXIu Y3BwIGIvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVy LmNwcAoraW5kZXggZTE1NmQ0MjQuLmUxMmI5YWJkIDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMv YWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAorKysrIGIvc3JjL3Bs dWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAorQEAgLTIz Miw3ICsyMzIsMTEgQEAgcHJpdmF0ZToKKyAgIGZyaWVuZCBjbGFzcyBGb3JtYXQ7CisgICBmcmll bmQgY2xhc3MgQ29udmVydGVyOworICAgQVZDb2RlY0NvbnRleHQqIG1fcHRyOworKyNpZiBMSUJB VkNPREVDX1ZFUlNJT05fSU5UIDwgQVZfVkVSU0lPTl9JTlQoNTksIDAsIDApCisgICBBVkNvZGVj KiBtX2ltcGw7CisrI2Vsc2UKKysgIGNvbnN0IEFWQ29kZWMqIG1faW1wbDsKKysjZW5kaWYKKyAg IEFWRnJhbWUqIG1fZnJhbWU7CisgICBib29sIG1fb3BlbmVkOworIH07CmRpZmYgLS1naXQgYS9z cmNwa2dzL2tpZDMvdGVtcGxhdGUgYi9zcmNwa2dzL2tpZDMvdGVtcGxhdGUKaW5kZXggNDU2MjA2 ZDkwZTE2Li5mMzJmOWRlY2IwZTcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva2lkMy90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2tpZDMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdraWQzJwogcGtnbmFtZT1raWQzCiB2ZXJzaW9uPTMuOS4xCi1yZXZpc2lvbj0yCity ZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9BUFBT PSdDTEk7JCh2b3B0X2lmIEtERSBLREUgUXQpJwogIC1EV0lUSF9ET0NCT09LRElSPS91c3Ivc2hh cmUveHNsL2RvY2Jvb2sgLURXSVRIX0ZMQUM9JCh2b3B0X2lmIGZsYWMgT04gT0ZGKQoKRnJvbSA1 NDM3NmNhNzkwODBlZjA4YjEwZWQ3NTFlZTQ4ZWE4YTIxODQwNWFiIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDYvMTEzXSBrb2RpOiByZXZi dW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mva29kaS90ZW1wbGF0ZSB8IDQgKyst LQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2tvZGkvdGVtcGxhdGUgYi9zcmNwa2dzL2tvZGkvdGVtcGxhdGUKaW5k ZXggODA1Nzk2NGQ3OGEzLi42Y2MxODc0YmU3YmEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva29kaS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tvZGkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdrb2RpJwogcGtnbmFtZT1rb2RpCiB2ZXJzaW9uPTE5LjQKLXJldmlz aW9uPTYKK3JldmlzaW9uPTcKIF9jb2RlbmFtZT0iTWF0cml4IgogYnVpbGRfc3R5bGU9Y21ha2UK IGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfRkZNUEVHPS91c3IgLURFTkFCTEVfTERHT0xEPU9GRgpA QCAtNTQsNyArNTQsNyBAQCBtYWtlZGVwZW5kcz0iCiAgbGlibWFkLWRldmVsIGZvbnRjb25maWct ZGV2ZWwgbGliWGluZXJhbWEtZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJtbXMtZGV2ZWwK ICBlbmNhLWRldmVsIGJvb3N0LWRldmVsIGxpYmN1cmwtZGV2ZWwgbGlidmEtZGV2ZWwgbGlidmRw YXUtZGV2ZWwgbGliYXNzLWRldmVsCiAgbGliYmx1ZXRvb3RoLWRldmVsIHlhamwtZGV2ZWwgbGli cGxpc3QtZGV2ZWwgbGlicnRtcC1kZXZlbCB0aW55eG1sLWRldmVsCi0gdGFnbGliLWRldmVsIGxp YmNhcC1kZXZlbCBsYW1lLWRldmVsIGxpYmJsdXJheS1kZXZlbCBsaWJuZnMtZGV2ZWwgZmZtcGVn LWRldmVsCisgdGFnbGliLWRldmVsIGxpYmNhcC1kZXZlbCBsYW1lLWRldmVsIGxpYmJsdXJheS1k ZXZlbCBsaWJuZnMtZGV2ZWwgZmZtcGVnNC1kZXZlbAogIGdpZmxpYi1kZXZlbCBsaWJ4c2x0LWRl dmVsIGdudXRscy1kZXZlbCBsaWJzc2gtZGV2ZWwgbGlibWljcm9odHRwZC1kZXZlbAogIGxpYmNl Yy1kZXZlbCBkY2FkZWMtZGV2ZWwgZmxhdGJ1ZmZlcnMtZGV2ZWwgZm10LWRldmVsIGxjbXMyLWRl dmVsCiAgbGliZnN0cmNtcC1kZXZlbCByYXBpZGpzb24gbGliY2Rpby1wYXJhbm9pYSBzcGRsb2cg bGlid2F5bGFuZHBwLWRldmVsCgpGcm9tIGQ4MzJjZGQ2Y2ZlODBjOGY0Mjk4N2U5NzEwODNjZmM2 NTQyZTRhOGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDog W1BBVENIIDA0Ny8xMTNdIGtwaXBld2lyZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL2twaXBld2lyZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva3BpcGV3aXJlL3Rl bXBsYXRlIGIvc3JjcGtncy9rcGlwZXdpcmUvdGVtcGxhdGUKaW5kZXggZGI0ZTQyZjBkNDU2Li4y MzM0YmY4Njc4MDYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAna3BpcGV3aXJlJwogcGtnbmFtZT1rcGlwZXdpcmUKIHZlcnNpb249NS4yNy42Ci1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRz PSJleHRyYS1jbWFrZS1tb2R1bGVzIHBsYXNtYS13YXlsYW5kLXByb3RvY29scyBnZXR0ZXh0CiAg cXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHBrZy1jb25maWcgd2F5bGFuZC1kZXZlbCBrY29yZWFk ZG9ucwoKRnJvbSBhYjQ4NzVmM2RlZDc0ZjQ5N2Q4YzQ5MjU1M2JjYjM5NGFjZjgyMzBiIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDgvMTEz XSBsaWJleHRyYWN0b3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9s aWJleHRyYWN0b3IvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1w bGF0ZSBiL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlCmluZGV4IGRkZDQ3OTBmOTNlOC4u MWZiOWNhNTZhOTZhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQpAQCAtNyw3ICs3LDcgQEAgY29uZmln dXJlX2FyZ3M9Ii0tZGlzYWJsZS1zdGF0aWMiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWci CiBtYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBleGl2Mi1kZXZlbCB0aWZmLWRl dmVsIGxpYnBuZy1kZXZlbAogIGxpYmpwZWctdHVyYm8tZGV2ZWwgbGlidm9yYmlzLWRldmVsIGxp YmZsYWMtZGV2ZWwgZ2lmbGliLWRldmVsIGxpYm1wZWcyLWRldmVsCi0gZmZtcGVnLWRldmVsIGd0 ayszLWRldmVsIGxpYmx0ZGwtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbCBmaWxlLWRldmVsIGxpYmdz Zi1kZXZlbCIKKyBmZm1wZWc0LWRldmVsIGd0ayszLWRldmVsIGxpYmx0ZGwtZGV2ZWwgbGliYXJj aGl2ZS1kZXZlbCBmaWxlLWRldmVsIGxpYmdzZi1kZXZlbCIKIHNob3J0X2Rlc2M9IkxpYnJhcnkg dXNlZCB0byBleHRyYWN0IG1ldGEgZGF0YSBmcm9tIGZpbGVzIgogbWFpbnRhaW5lcj0iTWFydGlu IFJpZXNlIDxncmF1ZWhhYXJlQGdteC5kZT4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgoK RnJvbSBlN2IwMGMzMTQyMmI1Nzc1OWU4NTI1ZDk3ZjgwMzg1YWFiZmEyNDM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDkvMTEzXSBsaWJv cGVuYWw6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9saWJvcGVuYWwvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGli b3BlbmFsL3RlbXBsYXRlCmluZGV4IDc3MjE4ZjllNTM5ZC4uM2Y0OWVkNzVhMWZkIDEwMDY0NAot LS0gYS9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYm9wZW5hbC90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xpYm9wZW5hbCcK IHBrZ25hbWU9bGlib3BlbmFsCiB2ZXJzaW9uPTEuMjIuMgotcmV2aXNpb249MQorcmV2aXNpb249 MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREFMU09GVF9FWEFNUExFUz1P RkYiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIGI1ZjMxZmJhOTNlMTljMzFh MGM5NjQwYThhODQ4ODI2Y2RmNGFjNTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDgg LTA0MDAKU3ViamVjdDogW1BBVENIIDA1MC8xMTNdIGxpYm9wZW5zaG90OiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbGlib3BlbnNob3QvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlIGIvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0 ZQppbmRleCBkYjgzMWY2OWI0NzQuLjgxYWEwZDcxMzZkOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9s aWJvcGVuc2hvdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGlib3BlbnNob3QnCiBwa2duYW1l PWxpYm9wZW5zaG90CiB2ZXJzaW9uPTAuMy4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWls ZF9zdHlsZT1jbWFrZQogIyBCdWlsZHMgZmFpbCB3aXRoIFJ1YnktMi40LjEKIGNvbmZpZ3VyZV9h cmdzPSItREVOQUJMRV9SVUJZPU9GRiAtRFVTRV9TWVNURU1fSlNPTkNQUD1PTiIKCkZyb20gYmQ4 YWU0ZWJiZmY1OWFjYzZjNzZmMTE3MmE0NzRmZGE3NzZmMTMzYSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDUxLzExM10gbG91ZGdhaW46IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBl ZzUucGF0Y2ggfCAxMSArKysrKysrKysrKwogc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0ZSAgICAg ICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2Zm bXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMvZmZtcGVn NS5wYXRjaCBiL3NyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTZkNDUxMGVlOThmCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCAr MSwxMSBAQAorLS0tIGEvc3JjL3NjYW4uYwkyMDE5LTA5LTA2IDExOjMxOjE5LjAwMDAwMDAwMCAt MDQwMAorKysrIGIvc3JjL3NjYW4uYwkyMDIzLTAzLTIzIDExOjE1OjQwLjg2Nzk2ODUyMSAtMDQw MAorQEAgLTY5LDggKzY5LDYgQEAKKyAJICogSXQgaXMgbm93IHVzZWxlc3MKKyAJICogaHR0cHM6 Ly9naXRodWIuY29tL0ZGbXBlZy9GRm1wZWcvYmxvYi83MGQyNTI2OGMyMWNiZWU1ZjA4MzA0ZGE5 NWJlMWY2NDdjNjMwYzE1L2RvYy9BUEljaGFuZ2VzI0w4NgorIAkgKi8KKy0gIGlmIChhdmZvcm1h dF92ZXJzaW9uKCkgPCBBVl9WRVJTSU9OX0lOVCg1OCw5LDEwMCkpCistICAgIGF2X3JlZ2lzdGVy X2FsbCgpOworIAorIAlhdl9sb2dfc2V0X2NhbGxiYWNrKHNjYW5fYXZfbG9nKTsKKyAKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUgYi9zcmNwa2dzL2xvdWRnYWluL3RlbXBs YXRlCmluZGV4IGRhNGYyZDU2ZTk0Yy4uNGQ2YmYyOWVmYjRmIDEwMDY0NAotLS0gYS9zcmNwa2dz L2xvdWRnYWluL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsb3VkZ2FpbicKIHBrZ25hbWU9bG91ZGdh aW4KIHZlcnNpb249MC42LjgKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNt YWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0ibGliZWJ1cjEy OC1kZXZlbCB0YWdsaWItZGV2ZWwgZmZtcGVnLWRldmVsIgoKRnJvbSA4MDkyYTNhYjc4M2ZmNjkw M2FmMjNmYzQ0MDVhNzBjYTU2ZDhlOTU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTIvMTEzXSBtZWRpYXN0cmVhbWVyOiByZXZidW1wIGZv ciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZSB8IDQg KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUgYi9zcmNwa2dzL21lZGlh c3RyZWFtZXIvdGVtcGxhdGUKaW5kZXggZDBlOTdlODU4ZTI5Li4xYmRlMDMxNDQzYTUgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21lZGlh c3RyZWFtZXIvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J21lZGlhc3RyZWFtZXInCiBwa2duYW1lPW1lZGlhc3RyZWFtZXIKIHZlcnNpb249NS4yLjYKLXJl dmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0i LURFTkFCTEVfU1RSSUNUPTAgLURFTkFCTEVfVU5JVF9URVNUUz0wIgogaG9zdG1ha2VkZXBlbmRz PSJweXRob24zIgotbWFrZWRlcGVuZHM9ImJ6cnRwLWRldmVsIGZmbXBlZy1kZXZlbCBnbGV3LWRl dmVsIGxpYlh2LWRldmVsIGxpYnNydHAtZGV2ZWwKK21ha2VkZXBlbmRzPSJienJ0cC1kZXZlbCBm Zm1wZWc0LWRldmVsIGdsZXctZGV2ZWwgbGliWHYtZGV2ZWwgbGlic3J0cC1kZXZlbAogIGxpYnVw bnAtZGV2ZWwgbGlidnB4LWRldmVsIG1iZWR0bHMtZGV2ZWwgb3B1cy1kZXZlbCBvcnRwLWRldmVs IHB1bHNlYXVkaW8tZGV2ZWwKICBsaWJ0aGVvcmEtZGV2ZWwgc3BlZXgtZGV2ZWwgdjRsLXV0aWxz LWRldmVsIGJjZzcyOS1kZXZlbCBiY21hdHJvc2thMi1kZXZlbCBsaWJnc20tZGV2ZWwiCiAjIHp4 aW5nLWNwcC1kZXZlbCAoMS4yLjAgcHJvYmFibHkgbm90IGNvbXBhdGlibGUsIGNoZWNrIGFnYWlu IGFmdGVyIHVwZGFpbmcgeHppbmcpCgpGcm9tIGQyMTcwNTcyODdmNTU4OWFiOTk3MDc1MjNjOWVl NGExZjIwNzJiZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVj dDogW1BBVENIIDA1My8xMTNdIG1nYmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9tZ2JhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tZ2JhL3RlbXBsYXRlIGIvc3Jj cGtncy9tZ2JhL3RlbXBsYXRlCmluZGV4IGFlMDUwNDMxMWVlZS4uZDMxMjk1YTBjZDNkIDEwMDY0 NAotLS0gYS9zcmNwa2dzL21nYmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tZ2JhL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWdiYScKIHBrZ25hbWU9bWdi YQogdmVyc2lvbj0wLjEwLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNt YWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtl IGRlc2t0b3AtZmlsZS11dGlscyIKIG1ha2VkZXBlbmRzPSJTREwyLWRldmVsIGZmbXBlZy1kZXZl bCBsaWJlZGl0LWRldmVsIGxpYmVwb3h5LWRldmVsIGxpYm1hZ2ljay1kZXZlbAoKRnJvbSBjMTI0 OWY0N2MyMWU3MDk4NTU5Yjc4MGEzMjFhYWJhM2NlOTc2YzRhIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTQvMTEzXSBtaW5pZGxuYTogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxh dGUKaW5kZXggZDU1MWU0OWVkNDY1Li41ZmE5MjlmM2EwYzEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv bWluaWRsbmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21pbmlkbG5hJwogcGtnbmFtZT1taW5pZGxu YQogdmVyc2lvbj0xLjMuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251 LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9IgogIC0tc2JpbmRpcj0vdXNyL2JpbgoKRnJvbSA0 YWU0ZGRmNzFhMmUxNDI5MGQ5MjBlMGExMmQyNGUwODAyZTYwMWQyIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTUvMTEzXSBtaXh4eDogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21peHh4L3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9taXh4eC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUKaW5kZXgg NjE5ZGRjYTBkMzMyLi40YjllYTAwZDNmYjMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWl4eHgvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9taXh4eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ21peHh4JwogcGtnbmFtZT1taXh4eAogdmVyc2lvbj0yLjMuMwotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIt RENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSIKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21ha2Ut bW9kdWxlcyBwa2ctY29uZmlnIHByb3RvYnVmIHF0NS1ob3N0LXRvb2xzIHF0NS1kZXZlbCIKCkZy b20gYTQ2ZTgwNDA4YjU5NThiZDMxMTRiMzQxMmM5ODVkZmNjMmZlMGYzOCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU2LzExM10gbWx0OiBy ZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbWx0L3RlbXBsYXRlIHwgNCAr Ky0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbWx0L3RlbXBsYXRlIGIvc3JjcGtncy9tbHQvdGVtcGxhdGUKaW5k ZXggODkzM2ViNGU3YmI5Li43MzM1M2ZlZGFmYjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWx0L3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvbWx0L3RlbXBsYXRlCkBAIC0xLDE0ICsxLDE0IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdtbHQnCiBwa2duYW1lPW1sdAogdmVyc2lvbj02LjI2LjEKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9 Ii0tcHJlZml4PS91c3IgLS1saWJkaXI9L3Vzci9saWIkWEJQU19UQVJHRVRfV09SRFNJWkUKICAt LWVuYWJsZS1ncGwgLS1lbmFibGUtZ3BsMyAtLWRpc2FibGUtc3dmZGVjIC0td2l0aG91dC1rZGUK ICAtLXN3aWctbGFuZ3VhZ2VzPXB5dGhvbiIKIGhvc3RtYWtlZGVwZW5kcz0iZG94eWdlbiBwa2ct Y29uZmlnIGxhZHNwYS1zZGsgc3dpZyBweXRob24zIHdoaWNoIgogIyBYWFg6IG1vdml0IHZpZC5z dGFiCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnLWRldmVsIGd0aystZGV2ZWwg amFjay1kZXZlbCBsYWRzcGEtc2RrCittYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVn NC1kZXZlbCBndGsrLWRldmVsIGphY2stZGV2ZWwgbGFkc3BhLXNkawogIGxpYmV4aWYtZGV2ZWwg bGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJ4bWwyLWRldmVsIHNveC1kZXZlbCBTRExfaW1hZ2UtZGV2 ZWwKICBmZnR3LWRldmVsIGZyZWkwci1wbHVnaW5zIHB5dGhvbjMtZGV2ZWwgcHVsc2VhdWRpby1k ZXZlbCBtb3ZpdC1kZXZlbAogIGxpYnZpZHN0YWItZGV2ZWwgbGliYXRvbWljLWRldmVsIgoKRnJv bSAxNGI5YzgzN2U0OWE4MTA2YTIzMmNmMzQ2MmUwZDY1MmZlNGY0YTAzIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTcvMTEzXSBtb2M6IHJl dmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9tb2MvdGVtcGxhdGUgfCA0ICsr LS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9tb2MvdGVtcGxhdGUgYi9zcmNwa2dzL21vYy90ZW1wbGF0ZQppbmRl eCBjNDJiZTY1MGExZDIuLmQ0ZjBlZWZiYWQ1MiAxMDA2NDQKLS0tIGEvc3JjcGtncy9tb2MvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9tb2MvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ21vYycKIHBrZ25hbWU9bW9jCiB2ZXJzaW9uPTIuNS4yCi1yZXZpc2lv bj02CityZXZpc2lvbj03CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVu ZHM9InBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iZGItZGV2ZWwgbmN1cnNlcy1kZXZlbCBsaWJj dXJsLWRldmVsIHBvcHQtZGV2ZWwgZmZtcGVnLWRldmVsCittYWtlZGVwZW5kcz0iZGItZGV2ZWwg bmN1cnNlcy1kZXZlbCBsaWJjdXJsLWRldmVsIHBvcHQtZGV2ZWwgZmZtcGVnNC1kZXZlbAogIGph Y2stZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGlibHRkbC1kZXZlbCBsaWJmbGFjLWRldmVsIGxpYnZv cmJpcy1kZXZlbAogIGxpYm1hZC1kZXZlbCBsaWJtcGNkZWMtZGV2ZWwgbGlibW9kcGx1Zy1kZXZl bCBsaWJpZDN0YWctZGV2ZWwgZmFhZDItZGV2ZWwKICB0YWdsaWItZGV2ZWwgbGlic25kZmlsZS1k ZXZlbCB3YXZwYWNrLWRldmVsIHNwZWV4LWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwKCkZyb20g ODEzMzYyZWMwY2M3MDU5OTQxZjA5NjdkZmZkZjAzMmVjYjlhNmNmYiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU4LzExM10gbW90aW9uOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbW90aW9uL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUgYi9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZQpp bmRleCAzY2YzYzMwMzVjNWIuLjdkY2ExMmQ4NTFlMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9tb3Rp b24vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtb3Rpb24nCiBwa2duYW1lPW1vdGlvbgogdmVyc2lvbj00 LjUuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQog aG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBwa2ctY29uZmlnIGdldHRleHQtZGV2ZWwgdGFyIgog bWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBsaWJtaWNyb2h0dHBkLWRldmVsIHY0bC11dGlscy1k ZXZlbCBnZXR0ZXh0LWRldmVsIgoKRnJvbSAxZmQzNTliNjdiZjYwOGJjODBjZGQwNTdhYmEwMzI2 NDJhNzJlMWQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNTkvMTEzXSBtcHY6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9tcHYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21wdi90ZW1wbGF0ZSBiL3NyY3BrZ3Mv bXB2L3RlbXBsYXRlCmluZGV4IGUxNjNjNDk2YzZlYi4uZDRmZWZiZjVlM2M3IDEwMDY0NAotLS0g YS9zcmNwa2dzL21wdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21wdi90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21wdicKIHBrZ25hbWU9bXB2CiB2ZXJzaW9u PTAuMzUuMQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZp Z3VyZV9hcmdzPSItRGNkZGE9ZW5hYmxlZCAtRGR2YmluPWVuYWJsZWQgLURkdmRuYXY9ZW5hYmxl ZAogIC1EbGlibXB2PXRydWUgLURjcGx1Z2lucz1lbmFibGVkCgpGcm9tIGM4YzU5M2RhODFjZWZm Mjk0ODYwZmNmY2I0N2U1ZjE2NTNjMTU2ZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2MC8xMTNdIG11c2lrY3ViZTogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL211c2lrY3ViZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlIGIvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUKaW5k ZXggN2M1NjkzMDNjMDU0Li5hNGRlYTQ2MGMzNzEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbXVzaWtj dWJlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbXVzaWtjdWJlJwogcGtnbmFtZT1tdXNpa2N1YmUK IHZlcnNpb249My4wLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtl CiBtYWtlX2NtZD1tYWtlCiBjb25maWd1cmVfYXJncz0iLUROT19OQ1VSU0VTVz0xIgoKRnJvbSAz Njk5NDNmMGY0NGFmN2UzNDhkNGViYTJiN2Y0ZmJhYjhlMzk1MjlkIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjEvMTEzXSBub3RjdXJzZXM6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvbm90Y3Vyc2Vz L3RlbXBsYXRlCmluZGV4IDZkZDhhMDkxMzE5Zi4uMzExMGMzMGM5YWZmIDEwMDY0NAotLS0gYS9z cmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ25vdGN1cnNlcycKIHBrZ25h bWU9bm90Y3Vyc2VzCiB2ZXJzaW9uPTMuMC45Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWls ZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EVVNFX1NUQVRJQz1PTiAkKHZvcHRfYm9v bCBtYW4gVVNFX1BBTkRPQykiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgJCh2b3B0X2lm IG1hbiBwYW5kb2MpIgoKRnJvbSA4YTMwY2Y5ZTZhODQzZTFmMDBmZjdjOWFmYzg2MDQ5NmIxYzdm YTE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNjIvMTEzXSBvYnM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vYnMv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29icy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb2JzL3Rl bXBsYXRlCmluZGV4IDdiNjljNjMwZDMwZC4uMmM4ZDY4ZDcxZjNhIDEwMDY0NAotLS0gYS9zcmNw a2dzL29icy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29icy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29icycKIHBrZ25hbWU9b2JzCiB2ZXJzaW9uPTI5LjEu MgotcmV2aXNpb249MQorcmV2aXNpb249MgogYXJjaHM9Imk2ODYqIHg4Nl82NCogcHBjNjRsZSog YWFyY2g2NCoiCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ET0JTX1ZFUlNJ T05fT1ZFUlJJREU9JHt2ZXJzaW9ufSAtREVOQUJMRV9KQUNLPU9OCgpGcm9tIDdkNDU0MDI1OWUy ZDcyYTU5ZjUxNDQ5N2Y1YjZlMGQzMDAzYjRmZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2My8xMTNdIG9saXZlOiByZXZidW1wIGZvciBm Zm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmls ZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9vbGl2ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUKaW5kZXggMTJh NDY5MzZjOTkwLi41YzI5MTdiOWM1MTIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb2xpdmUvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnb2xpdmUnCiBwa2duYW1lPW9saXZlCiB2ZXJzaW9uPTAuMS4yCi1yZXZp c2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1xbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJx dDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMgcGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJxdDUtZGV2 ZWwgcXQ1LW11bHRpbWVkaWEtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBmZm1wZWctZGV2ZWwgZnJlaTBy LXBsdWdpbnMiCittYWtlZGVwZW5kcz0icXQ1LWRldmVsIHF0NS1tdWx0aW1lZGlhLWRldmVsIHF0 NS1zdmctZGV2ZWwgZmZtcGVnNC1kZXZlbCBmcmVpMHItcGx1Z2lucyIKIHNob3J0X2Rlc2M9Ik5v bi1saW5lYXIgdmlkZW8gZWRpdG9yIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lk bGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCgpGcm9tIDUwOGZmYmVjMjA0 M2EzMzFjMDA2Njk4MTZjODMwNzRmNjJkZDRlNWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2NC8xMTNdIG9teHBsYXllcjogcmV2YnVtcCBm b3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL29teHBsYXllci90ZW1wbGF0ZSB8IDYgKysr LS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlIGIvc3JjcGtncy9vbXhwbGF5ZXIv dGVtcGxhdGUKaW5kZXggZTcwYmY3ODczZDRkLi4wZTliYzcwZTdjOGUgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRl CkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvbXhwbGF5ZXInCiBwa2du YW1lPW9teHBsYXllcgogdmVyc2lvbj0yMDE5MDEwMgotcmV2aXNpb249MQorcmV2aXNpb249Mgog c2hvcnRfZGVzYz0iQ29tbWFuZGxpbmUgT01YIHBsYXllciBmb3IgdGhlIFJhc3BiZXJyeSBQaSIK IG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCi1saWNlbnNlPSJH UEwtMiIKK2xpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9naXRo dWIuY29tL3BvcGNvcm5taXgvb214cGxheWVyIgogCiBfY29tbWl0PSJmMDYyMzVjYzk2OTBhNmQ1 ODE4NzUxNDQ1MmRmOGNmOGZjZGFhY2VjIgpAQCAtMTUsNyArMTUsNyBAQCBjaGVja3N1bT1hZjJk OTQ1MGY4OTQ3ODQyZWE4YzQwMWZlOWY3MWVlYzQ0NDAxM2ViYmRlZTI5ZjJhYzgyOGM5YzQ5M2Mx MzI5CiBhcmNocz0iYXJtdjZsKiBhcm12N2wqIgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBo b3N0bWFrZWRlcGVuZHM9ImN1cmwgcGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJhbHNhLWxpYi1k ZXZlbCBycGktdXNlcmxhbmQtZGV2ZWwgcGNyZS1kZXZlbCBib29zdC1kZXZlbCBmcmVldHlwZS1k ZXZlbCBmZm1wZWctZGV2ZWwgZGJ1cy1kZXZlbCIKK21ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZl bCBycGktdXNlcmxhbmQtZGV2ZWwgcGNyZS1kZXZlbCBib29zdC1kZXZlbCBmcmVldHlwZS1kZXZl bCBmZm1wZWc0LWRldmVsIGRidXMtZGV2ZWwiCiBkZXBlbmRzPSJmcmVlZm9udC10dGYiCiAKIGRv X2J1aWxkKCkgewoKRnJvbSAyY2NlMGE4MzgzNjhlZjc5YWU1ZTllNjE2Y2I4ZjQ0NGM3OTBiOWI4 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NjUvMTEzXSBvcGVuc2hvdDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29w ZW5zaG90L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZSBiL3Ny Y3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUKaW5kZXggMzIyNzE3ZDQwYWJjLi5jMDc0ZTAzMzg3NzMg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVu c2hvdC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5z aG90JwogcGtnbmFtZT1vcGVuc2hvdAogdmVyc2lvbj0zLjAuMAotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUKIGhvc3RtYWtlZGVwZW5kcz0icHl0aG9u MyBweXRob24zLXNldHVwdG9vbHMiCiBtYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHB5dGhvbjMt UHlRdDUiCgpGcm9tIDUzODg4ZDYzYTM1Y2M4NmEyMmNlY2EzMTBkOWE4YzFmMGU2NmVmYTkgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2Ni8x MTNdIG9wZW50b29uejogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29wZW50 b29uei90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlIGIvc3Jj cGtncy9vcGVudG9vbnovdGVtcGxhdGUKaW5kZXggZWU5Zjc2MDNmNTVmLi4zZTgxODM0Y2EwZWQg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3Bl bnRvb256L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3Bl bnRvb256JwogcGtnbmFtZT1vcGVudG9vbnoKIHZlcnNpb249MS42LjAKLXJldmlzaW9uPTIKK3Jl dmlzaW9uPTMKIGJ1aWxkX3dya3NyYz0idG9vbnovc291cmNlcyIKIGJ1aWxkX3N0eWxlPWNtYWtl CiBtYWtlX2NtZD1tYWtlCgpGcm9tIGNhZjBkNWVhZjA1YTMxYzc2N2NkNjdlZDY4MmY5YzEzMWU2 Yzc3NjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BB VENIIDA2Ny8xMTNdIHBpYW5vYmFyOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvcGlhbm9iYXIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRl IGIvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQppbmRleCBlM2ZlYmI4MjFhNDUuLjFlM2RjMWJm OTMwOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3BpYW5vYmFyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn cGlhbm9iYXInCiBwa2duYW1lPXBpYW5vYmFyCiB2ZXJzaW9uPTIwMjIuMDQuMDEKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogbWFrZV9idWlsZF9hcmdz PSJWPTEiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIDNlZWI1MTdlY2YyM2Ey NWYxMWU4ZDFkZWViYWY1MDg4YWZjNmVmNTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2OC8xMTNdIHBwc3NwcDogcmV2YnVtcCBmb3IgZmZt cGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZSB8IDcgKysrLS0tLQogMSBm aWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlCmluZGV4 IDc5ODRhNzMzZDRiZS4uMTVhNDJmZDJjOTkzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3Bwc3NwcC90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3Bwc3NwcCcKIHBrZ25hbWU9cHBzc3BwCiB2ZXJzaW9uPTEuMTQu NAotcmV2aXNpb249MQorcmV2aXNpb249MgogX2dsc2xhbmdfY29tbWl0PWRjMTFhZGRlMjNjNDU1 YTI0ZTEzZGQ1NGRlOWI0ZWRlOGJkZDdkYjgKIF9TUElSVl9Dcm9zc19jb21taXQ9OWFjYjllYzMx ZjVhOGVmODBlYTZiOTk0YmI3N2JlNzg3YjA4ZDNkMQogX2FybWlwc19jb21taXQ9NjcxOWVkZWJh YWUwMzMzMGVlNTQ0MWQ5YjI4MjgwNjcyZWRmMDBkNQpAQCAtMTMsNyArMTMsNyBAQCBjb25maWd1 cmVfYXJncz0iLURIRUFETEVTUz0xIC1EVVNFX1NZU1RFTV9GRk1QRUc9MSAtRFVOSVRURVNUPU9O CiAgLURVU0lOR19RVF9VST0kKHZvcHRfaWYgcXQgT04gT0ZGKSAtRFVTRV9TWVNURU1fWlNURD1P TgogIC1EQVJNSVBTX1VTRV9TVERfRklMRVNZU1RFTT1PTiIKIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyBweXRob24zICQodm9wdF9pZiBxdCBxdDUtaG9zdC10b29scykiCi1tYWtlZGVwZW5k cz0iemxpYi1kZXZlbCBnbGV3LWRldmVsIGZmbXBlZy1kZXZlbCBsaWJ6aXAtZGV2ZWwKK21ha2Vk ZXBlbmRzPSJ6bGliLWRldmVsIGdsZXctZGV2ZWwgZmZtcGVnNC1kZXZlbCBsaWJ6aXAtZGV2ZWwK ICBzbmFwcHktZGV2ZWwgcmFwaWRqc29uIGxpYnBuZy1kZXZlbCBsaWJ6c3RkLWRldmVsCiAgJCh2 b3B0X2lmIHNkbDIgU0RMMi1kZXZlbCkgJCh2b3B0X2lmIHdheWxhbmQgd2F5bGFuZC1kZXZlbCkK ICAkKHZvcHRfaWYgcXQgJ3F0NS1kZXZlbCBxdDUtbXVsdGltZWRpYS1kZXZlbCcpIgpAQCAtNjIs MTMgKzYyLDEyIEBAIHBvc3RfZXh0cmFjdCgpIHsKIAltdiAke3dya3NyY30vbWluaXVwbnAtJHtf bWluaXVwbnBfY29tbWl0fSAke3dya3NyY30vZXh0L21pbml1cG5wCiB9CiAKLXBvc3RfcGF0Y2go KXsKK3Bvc3RfcGF0Y2goKSB7CiAJIyBkaXNhYmxlIGdpdCB2ZXJzaW9uaW5nCiAJdnNlZCAtZSAn c3xmaW5kX3BhY2thZ2UoR2l0KXwjICZ8JyAtaSBnaXQtdmVyc2lvbi5jbWFrZQogfQogCiBkb19p bnN0YWxsKCkgewotCXZsaWNlbnNlIExJQ0VOU0UuVFhUCiAJdmluc3RhbGwgaWNvbnMvaWNvbi5z dmcgNjQ0IHVzci9zaGFyZS9waXhtYXBzIHBwc3NwcC5zdmcKIAl2aW5zdGFsbCBRdC9QUFNTUFAu ZGVza3RvcCA2NDQgdXNyL3NoYXJlL2FwcGxpY2F0aW9ucwogCXZiaW4gYnVpbGQvUFBTU1BQSGVh ZGxlc3MgcHBzc3BwLWhlYWRsZXNzCgpGcm9tIDA1OTdmNmU4MTRhNzBjZjgzMGUwNWEwYzUwYmUy MDhlYzg5NjRlOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVj dDogW1BBVENIIDA2OS8xMTNdIHBxaXY6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9wcWl2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9wcWl2L3RlbXBsYXRlIGIvc3Jj cGtncy9wcWl2L3RlbXBsYXRlCmluZGV4IDU0MmZjMjdhMmQzMi4uOTMwOGQ5NDliNmExIDEwMDY0 NAotLS0gYS9zcmNwa2dzL3BxaXYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9wcWl2L3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHFpdicKIHBrZ25hbWU9cHFp dgogdmVyc2lvbj0yLjEyCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUt bWFrZWZpbGUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJnbGli LWRldmVsIGd0ayszLWRldmVsICQodm9wdF9pZiBmZm1wZWcgZmZtcGVnLWRldmVsKQoKRnJvbSBj MzJkZjQ2Y2FlOGM4ODg4ZTQ3ODJiOWE0NzFjN2QyNjU5MjRkZjBiIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzAvMTEzXSBxbW1wOiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcW1tcC90ZW1wbGF0ZSB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZQppbmRleCAyNmM2 NjFlZDE2YmUuLmExNTBkNzQ0MWM3YSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xbW1wL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ3FtbXAnCiBwa2duYW1lPXFtbXAKIHZlcnNpb249MS42LjEKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURVU0VfSEFM OkJPT0w9RkFMU0UgLURRTU1QX0RFRkFVTFRfVUk6U1RSSU5HPXNpbXBsZSIKIGhvc3RtYWtlZGVw ZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UiCgpGcm9tIDgyYWZkMTg5 MDVhZWI4MWFjZDIxMTY1MWFmM2MzNzQ1NzRmOTI1NTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3MS8xMTNdIHF0NS13ZWJlbmdpbmU6IHVw ZGF0ZSB0byA1LjE1LjEzCgotLS0KIC4uLi9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0LnBh dGNoICAgICAgICB8ICAxMSArKwogc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVn NS5wYXRjaCAgIHwgMTc5ICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9xdDUtd2ViZW5naW5l L3RlbXBsYXRlICAgICAgICAgICAgICAgIHwgIDEwICstCiAzIGZpbGVzIGNoYW5nZWQsIDE5NSBp bnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv cXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvY2hyb21p dW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRj aGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNGFkYzU0MGYyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0 LnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRp YS9maWx0ZXJzL0JVSUxELmduCTIwMjMtMDItMjcgMTM6MzI6NTkuMDAwMDAwMDAwIC0wNTAwCisr KysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9CVUlMRC5nbgkyMDIzLTA0 LTAyIDE3OjIxOjM5LjIwNDA2NjM4NCAtMDQwMAorQEAgLTk2LDYgKzk2LDggQEAKKyAgICAgIi8v dWkvZ2Z4L2dlb21ldHJ5Omdlb21ldHJ5IiwKKyAgIF0KKyAKKysgIGNmbGFnc19jYyA9IFsgIi1z dGQ9YysrMTQiIF0KKysKKyAgIGxpYnMgPSBbXQorIAorICAgaWYgKHByb3ByaWV0YXJ5X2NvZGVj cykgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5w YXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hYzU1ZTE2MzQ0MjMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBA IC0wLDAgKzEsMTc5IEBACistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVy cy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTA0LTAyIDE2OjUwOjU3LjczMjU0NzQ0NiAtMDQwMAor KysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIu Y2MJMjAyMy0wNC0wMiAxNjo1MDowOS40ODY0Nzg5OTUgLTA0MDAKK0BAIC01Nyw2ICs1Nyw4IEBA CisgCisgbmFtZXNwYWNlIHsKKyAKKytjb25zdGV4cHIgaW50NjRfdCBrUmVsYXRpdmVUc0Jhc2Ug PSBzdGF0aWNfY2FzdDxpbnQ2NF90PigweDdmZmVmZmZmZmZmZmZmZmYpOworKworIHZvaWQgU2V0 QVZTdHJlYW1EaXNjYXJkKEFWU3RyZWFtKiBzdHJlYW0sIEFWRGlzY2FyZCBkaXNjYXJkKSB7Cisg ICBEQ0hFQ0soc3RyZWFtKTsKKyAgIHN0cmVhbS0+ZGlzY2FyZCA9IGRpc2NhcmQ7CitAQCAtOTAs MjQgKzkyLDEyIEBACisgCisgc3RhdGljIGJhc2U6OlRpbWVEZWx0YSBFeHRyYWN0U3RhcnRUaW1l KEFWU3RyZWFtKiBzdHJlYW0pIHsKKyAgIC8vIFRoZSBkZWZhdWx0IHN0YXJ0IHRpbWUgaXMgemVy by4KKy0gIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lOworKyAgYmFzZTo6VGltZURlbHRhIHN0 YXJ0X3RpbWUgPSBrTm9UaW1lc3RhbXA7CisgCisgICAvLyBGaXJzdCB0cnkgdG8gdXNlICB0aGUg fHN0YXJ0X3RpbWV8IHZhbHVlIGFzIGlzLgorICAgaWYgKHN0cmVhbS0+c3RhcnRfdGltZSAhPSBr Tm9GRm1wZWdUaW1lc3RhbXApCisgICAgIHN0YXJ0X3RpbWUgPSBDb252ZXJ0RnJvbVRpbWVCYXNl KHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPnN0YXJ0X3RpbWUpOworIAorLSAgLy8gTmV4dCB0 cnkgdG8gdXNlIHRoZSBmaXJzdCBEVFMgdmFsdWUsIGZvciBjb2RlY3Mgd2hlcmUgd2Uga25vdyBQ VFMgPT0gRFRTCistICAvLyAoZXhjbHVkZXMgYWxsIEgyNnggY29kZWNzKS4gVGhlIHN0YXJ0IHRp bWUgbXVzdCBiZSByZXR1cm5lZCBpbiBQVFMuCistICBpZiAoc3RyZWFtLT5maXJzdF9kdHMgIT0g a05vRkZtcGVnVGltZXN0YW1wICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQg IT0gQVZfQ09ERUNfSURfSEVWQyAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lk ICE9IEFWX0NPREVDX0lEX0gyNjQgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19p ZCAhPSBBVl9DT0RFQ19JRF9NUEVHNCkgeworLSAgICBjb25zdCBiYXNlOjpUaW1lRGVsdGEgZmly c3RfcHRzID0KKy0gICAgICAgIENvbnZlcnRGcm9tVGltZUJhc2Uoc3RyZWFtLT50aW1lX2Jhc2Us IHN0cmVhbS0+Zmlyc3RfZHRzKTsKKy0gICAgaWYgKGZpcnN0X3B0cyA8IHN0YXJ0X3RpbWUpCist ICAgICAgc3RhcnRfdGltZSA9IGZpcnN0X3B0czsKKy0gIH0KKy0KKyAgIHJldHVybiBzdGFydF90 aW1lOworIH0KKyAKK0BAIC00MDgsMTEgKzM5OCwxMSBAQAorICAgc2NvcGVkX3JlZnB0cjxEZWNv ZGVyQnVmZmVyPiBidWZmZXI7CisgCisgICBpZiAodHlwZSgpID09IERlbXV4ZXJTdHJlYW06OlRF WFQpIHsKKy0gICAgaW50IGlkX3NpemUgPSAwOworKyAgICBzaXplX3QgaWRfc2l6ZSA9IDA7Cisg ICAgIHVpbnQ4X3QqIGlkX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAgICAgICAg IHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfV0VCVlRUX0lERU5USUZJRVIsICZpZF9zaXplKTsK KyAKKy0gICAgaW50IHNldHRpbmdzX3NpemUgPSAwOworKyAgICBzaXplX3Qgc2V0dGluZ3Nfc2l6 ZSA9IDA7CisgICAgIHVpbnQ4X3QqIHNldHRpbmdzX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVf ZGF0YSgKKyAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfV0VCVlRUX1NFVFRJTkdT LCAmc2V0dGluZ3Nfc2l6ZSk7CisgCitAQCAtNDI0LDcgKzQxNCw3IEBACisgICAgIGJ1ZmZlciA9 IERlY29kZXJCdWZmZXI6OkNvcHlGcm9tKHBhY2tldC0+ZGF0YSwgcGFja2V0LT5zaXplLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlX2RhdGEuZGF0YSgpLCBzaWRl X2RhdGEuc2l6ZSgpKTsKKyAgIH0gZWxzZSB7CistICAgIGludCBzaWRlX2RhdGFfc2l6ZSA9IDA7 CisrICAgIHNpemVfdCBzaWRlX2RhdGFfc2l6ZSA9IDA7CisgICAgIHVpbnQ4X3QqIHNpZGVfZGF0 YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9Q S1RfREFUQV9NQVRST1NLQV9CTE9DS0FERElUSU9OQUwsICZzaWRlX2RhdGFfc2l6ZSk7CisgCitA QCAtNDg1LDcgKzQ3NSw3IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGFja2V0LT5zaXplIC0gZGF0YV9vZmZzZXQpOworICAgICB9CisgCistICAgIGludCBza2lw X3NhbXBsZXNfc2l6ZSA9IDA7CisrICAgIHNpemVfdCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7Cisg ICAgIGNvbnN0IHVpbnQzMl90KiBza2lwX3NhbXBsZXNfcHRyID0KKyAgICAgICAgIHJlaW50ZXJw cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAgICAg ICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1NLSVBfU0FNUExFUywgJnNraXBfc2Ft cGxlc19zaXplKSk7CitAQCAtMTU4Nyw2ICsxNTc3LDggQEAKKyAgIGZvciAoY29uc3QgYXV0byYg c3RyZWFtIDogc3RyZWFtc18pIHsKKyAgICAgaWYgKCFzdHJlYW0gfHwgc3RyZWFtLT5Jc0VuYWJs ZWQoKSAhPSBlbmFibGVkKQorICAgICAgIGNvbnRpbnVlOworKyAgICBpZiAoc3RyZWFtLT5hdl9z dHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKysgICAgICBjb250aW51ZTsK KyAgICAgaWYgKCFsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gfHwKKyAgICAgICAgIHN0cmVhbS0+ c3RhcnRfdGltZSgpIDwgbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtLT5zdGFydF90aW1lKCkpIHsK KyAgICAgICBsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gPSBzdHJlYW0uZ2V0KCk7CitAQCAtMTYw NCw2ICsxNTk2LDggQEAKKyAgICAgaWYgKHN0cmVhbSAmJiBzdHJlYW0tPnR5cGUoKSA9PSBEZW11 eGVyU3RyZWFtOjpWSURFTyAmJgorICAgICAgICAgc3RyZWFtLT5Jc0VuYWJsZWQoKSkgeworICAg ICAgIHZpZGVvX3N0cmVhbSA9IHN0cmVhbS5nZXQoKTsKKysgICAgICBpZiAoc3RyZWFtLT5hdl9z dHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKysgICAgICAgIGNvbnRpbnVl OworICAgICAgIGlmICh2aWRlb19zdHJlYW0tPnN0YXJ0X3RpbWUoKSA8PSBzZWVrX3RpbWUpIHsK KyAgICAgICAgIHJldHVybiB2aWRlb19zdHJlYW07CisgICAgICAgfQorZGlmZiAtTmF1cnAgcXR3 ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcv ZmZtcGVnX2NvbW1vbi5oIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVt L21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmgKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAw MDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBl Z19jb21tb24uaAkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAtMDUwMAorQEAgLTI5LDYg KzI5LDcgQEAgZXh0ZXJuICJDIiB7CisgI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2Zm9ybWF0Lmg+ CisgI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2aW8uaD4KKyAjaW5jbHVkZSA8bGliYXZ1dGlsL2F2 dXRpbC5oPgorKyNpbmNsdWRlIDxsaWJhdnV0aWwvY2hhbm5lbF9sYXlvdXQuaD4KKyAjaW5jbHVk ZSA8bGliYXZ1dGlsL2ltZ3V0aWxzLmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9sb2cuaD4KKyAj aW5jbHVkZSA8bGliYXZ1dGlsL21hc3RlcmluZ19kaXNwbGF5X21ldGFkYXRhLmg+CitkaWZmIC1O YXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlh L2ZpbHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MgcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3Jk cGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5jYworLS0tIGEv c3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MJ MjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjCTIwMjItMDctMTEgMjI6 MTI6NDcuOTE3MTkyNzg4IC0wNTAwCitAQCAtODUsNyArODUsNyBAQCBib29sIEF1ZGlvRmlsZVJl YWRlcjo6T3BlbkRlbXV4ZXIoKSB7CisgfQorIAorIGJvb2wgQXVkaW9GaWxlUmVhZGVyOjpPcGVu RGVjb2RlcigpIHsKKy0gIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29k ZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKysgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2Rl Y19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKyAgIGlmIChjb2RlYykg eworICAgICAvLyBNUDMgZGVjb2RlcyB0byBTMTZQIHdoaWNoIHdlIGRvbid0IHN1cHBvcnQsIHRl bGwgaXQgdG8gdXNlIFMxNiBpbnN0ZWFkLgorICAgICBpZiAoY29kZWNfY29udGV4dF8tPnNhbXBs ZV9mbXQgPT0gQVZfU0FNUExFX0ZNVF9TMTZQKQorZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4x NS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRp b19kZWNvZGVyLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21l ZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19kZWNvZGVyLmNjCTIwMjItMDUtMjMg MDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVk aWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3Ljkx NzE5Mjc4OCAtMDUwMAorQEAgLTMyOSw3ICszMjksNyBAQCBib29sIEZGbXBlZ0F1ZGlvRGVjb2Rl cjo6Q29uZmlndXJlRGVjb2RlCisgICAgIH0KKyAgIH0KKyAKKy0gIEFWQ29kZWMqIGNvZGVjID0g YXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKysgIGNvbnN0 IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNv ZGVjX2lkKTsKKyAgIGlmICghY29kZWMgfHwKKyAgICAgICBhdmNvZGVjX29wZW4yKGNvZGVjX2Nv bnRleHRfLmdldCgpLCBjb2RlYywgJmNvZGVjX29wdGlvbnMpIDwgMCkgeworICAgICBETE9HKEVS Uk9SKSA8PCAiQ291bGQgbm90IGluaXRpYWxpemUgYXVkaW8gZGVjb2RlcjogIgorZGlmZiAtTmF1 cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9m aWx0ZXJzL2ZmbXBlZ19nbHVlLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2No cm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAu MDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVy cy9mZm1wZWdfZ2x1ZS5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAtMDUwMAorQEAg LTU5LDcgKzU5LDYgQEAgc3RhdGljIGludDY0X3QgQVZJT1NlZWtPcGVyYXRpb24odm9pZCogbwor IH0KKyAKKyB2b2lkIEZGbXBlZ0dsdWU6OkluaXRpYWxpemVGRm1wZWcoKSB7CistICBhdl9yZWdp c3Rlcl9hbGwoKTsKKyB9CisgCisgc3RhdGljIHZvaWQgTG9nQ29udGFpbmVyKGJvb2wgaXNfbG9j YWxfZmlsZSwKK0BAIC05NSw5ICs5NCw2IEBAIEZGbXBlZ0dsdWU6OkZGbXBlZ0dsdWUoRkZtcGVn VVJMUHJvdG9jb2wKKyAgIC8vIEVuYWJsZSBmYXN0LCBidXQgaW5hY2N1cmF0ZSBzZWVrcyBmb3Ig TVAzLgorICAgZm9ybWF0X2NvbnRleHRfLT5mbGFncyB8PSBBVkZNVF9GTEFHX0ZBU1RfU0VFSzsK KyAKKy0gIC8vIEVuc3VyZXMgd2UgY2FuIHJlYWQgb3V0IHZhcmlvdXMgbWV0YWRhdGEgYml0cyBs aWtlIHZwOCBhbHBoYS4KKy0gIGZvcm1hdF9jb250ZXh0Xy0+ZmxhZ3MgfD0gQVZGTVRfRkxBR19L RUVQX1NJREVfREFUQTsKKy0KKyAgIC8vIEVuc3VyZXMgZm9ybWF0IHBhcnNpbmcgZXJyb3JzIHdp bGwgYmFpbCBvdXQuIEZyb20gYW4gYXVkaXQgb24gMTEvMjAxNywgYWxsCisgICAvLyBpbnN0YW5j ZXMgd2VyZSByZWFsIGZhaWx1cmVzLiBTb2x2ZXMgYnVncyBsaWtlIGh0dHA6Ly9jcmJ1Zy5jb20v NzEwNzkxLgorICAgZm9ybWF0X2NvbnRleHRfLT5lcnJvcl9yZWNvZ25pdGlvbiB8PSBBVl9FRl9F WFBMT0RFOworZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjIHF0d2ViZW5n aW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX3Zp ZGVvX2RlY29kZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJz L2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0w NTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlk ZW9fZGVjb2Rlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAtMDUwMAorQEAgLTM5 MSw3ICszOTEsNyBAQCBib29sIEZGbXBlZ1ZpZGVvRGVjb2Rlcjo6Q29uZmlndXJlRGVjb2RlCisg ICBpZiAoZGVjb2RlX25hbHVzXykKKyAgICAgY29kZWNfY29udGV4dF8tPmZsYWdzMiB8PSBBVl9D T0RFQ19GTEFHMl9DSFVOS1M7CisgCistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9k ZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2Rl YyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBp ZiAoIWNvZGVjIHx8IGF2Y29kZWNfb3BlbjIoY29kZWNfY29udGV4dF8uZ2V0KCksIGNvZGVjLCBO VUxMKSA8IDApIHsKKyAgICAgUmVsZWFzZUZGbXBlZ1Jlc291cmNlcygpOworICAgICByZXR1cm4g ZmFsc2U7CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjIHF0d2ViZW5naW5l LTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9j aGVja2VyLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9tZWRp YV9maWxlX2NoZWNrZXIuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysr KyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2ZpbGVfY2hlY2tl ci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAtMDUwMAorQEAgLTY4LDcgKzY4LDcg QEAgYm9vbCBNZWRpYUZpbGVDaGVja2VyOjpTdGFydChiYXNlOjpUaW1lRAorICAgICAgIGF1dG8g Y29udGV4dCA9IEFWU3RyZWFtVG9BVkNvZGVjQ29udGV4dChmb3JtYXRfY29udGV4dC0+c3RyZWFt c1tpXSk7CisgICAgICAgaWYgKCFjb250ZXh0KQorICAgICAgICAgY29udGludWU7CistICAgICAg QVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihjcC0+Y29kZWNfaWQpOworKyAg ICAgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY3AtPmNvZGVj X2lkKTsKKyAgICAgICBpZiAoY29kZWMgJiYgYXZjb2RlY19vcGVuMihjb250ZXh0LmdldCgpLCBj b2RlYywgbnVsbHB0cikgPj0gMCkgeworICAgICAgICAgYXV0byBsb29wID0gc3RkOjptYWtlX3Vu aXF1ZTxGRm1wZWdEZWNvZGluZ0xvb3A+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICAgc3RyZWFt X2NvbnRleHRzW2ldID0ge3N0ZDo6bW92ZShjb250ZXh0KSwgc3RkOjptb3ZlKGxvb3ApfTsKK2Rp ZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRf ZGVjb2Rlcl9pbXBsLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0 X2RlY29kZXJfaW1wbC5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1w bC5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl Y3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3 OSAtMDUwMAorQEAgLTIwMyw3ICsyMDMsNyBAQCBpbnQzMl90IEgyNjREZWNvZGVySW1wbDo6SW5p dERlY29kZShjb25zCisgICAvLyBhIHBvaW50ZXIgfHRoaXN8LgorICAgYXZfY29udGV4dF8tPm9w YXF1ZSA9IHRoaXM7CisgCistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVy KGF2X2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29k ZWNfZmluZF9kZWNvZGVyKGF2X2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAoIWNvZGVjKSB7 CisgICAgIC8vIFRoaXMgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IEZGbXBlZyBoYXMgbm90IGJlZW4g aW5pdGlhbGl6ZWQgb3IgaXQgaGFzIG5vdAorICAgICAvLyBiZWVuIGNvbXBpbGVkL2luaXRpYWxp emVkIHdpdGggdGhlIGNvcnJlY3Qgc2V0IG9mIGNvZGVjcy4KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQpp bmRleCA4NTI2N2M3Y2Y4YTMuLjA5NWFiNjc3MDFlNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUt d2ViZW5naW5lL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQpA QCAtMSw5ICsxLDkgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS13ZWJlbmdpbmUnCiBwa2du YW1lPXF0NS13ZWJlbmdpbmUKLXZlcnNpb249NS4xNS4xMQotcmV2aXNpb249MwordmVyc2lvbj01 LjE1LjEzCityZXZpc2lvbj0xCiBfdmVyc2lvbj0iJHt2ZXJzaW9ufS1sdHMiCi1fY2hyb21pdW1f Y29tbWl0PWJlMzQ5ZWFmNjJlNzc5NTU3OTFkN2JmMjlmODkzZjFlOGEzN2RhZjQKK19jaHJvbWl1 bV9jb21taXQ9ZTQ4ZGY3ODAzYzdjOThiMGIyNDcxYzk0MDU3ZDMyZTQ0YTMwMWFkNQogYXJjaHM9 Ing4Nl82NCogaTY4NiogYXJtdls2N10qIHBwYzY0KiBhYXJjaDY0KiIKIGNyZWF0ZV93cmtzcmM9 eWVzCiBidWlsZF9zdHlsZT1xbWFrZQpAQCAtMzIsOCArMzIsOCBAQCBsaWNlbnNlPSJHUEwtMy4w LW9yLWxhdGVyLCBMR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3F0LmlvLyIK IGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL3F0L3F0d2ViZW5naW5lL2FyY2hpdmUvdiR7 X3ZlcnNpb259LnRhci5negogIGh0dHBzOi8vZ2l0aHViLmNvbS9xdC9xdHdlYmVuZ2luZS1jaHJv bWl1bS9hcmNoaXZlLyR7X2Nocm9taXVtX2NvbW1pdH0udGFyLmd6IgotY2hlY2tzdW09ImFhNzQ2 NjM1NmM0NTBjNWY1ODcwZjk3OWI5M2NkN2U3ZTYyZGExMTY1YzMyOGZmY2FiMWE5OTI4ZGIxOGFk NjcKLSA2ZjQ3ZWQ4YWI4Y2MwNjI0MTFmNmYyMDZkYTYzNTNiYzgyNjNkNmVkNmQ2MjkwYzY4OWEw NWMwMWQ5MWY2NDZiIgorY2hlY2tzdW09IjRiNTk4MzhlZDc1ZWY3ODhiNTllMWU0MTI1MzVhMGU0 MmRkOWQzMTE2NjFmZGVhZGIxOTFiNTgxYmE4MTVjNjMKKyBhOTE2ODY1NjJiMWQ0ZThiMjIwZTBi YmNiYWI1ZmViNjQ2MzBlMmRlOTc0YjM1YWMwMzRiZjM4OGFmNzcxYTZjIgogCiBub19nZW5lcmlj X3BrZ2NvbmZpZ19saW5rPXllcwogYnVpbGRfb3B0aW9ucz0ic25kaW8gcGlwZXdpcmUiCgpGcm9t IGRhMjNkOGFiODBhNmZhMWIxZDYxOWY0ZTYxOGEzYjg0MmY5OThjODQgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3Mi8xMTNdIHF0NTogdXBk YXRlIHRvIDUuMTUuOAoKLS0tCiAuLi5lcnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1Ljgta2Y1 LTEucGF0Y2ggfCAxMjkxMyArKysrKysrKysrKysrKysrCiBzcmNwa2dzL3F0NS90ZW1wbGF0ZSAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxMjkx OSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEu cGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5d2hlcmUtb3Bl bnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1l dmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk2NmM5OGJjZDNiYgotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1 Ljgta2Y1LTEucGF0Y2gKQEAgLTAsMCArMSwxMjkxMyBAQAorU3VibWl0dGVkIEJ5OiAgICAgICAg ICAgIFBpZXJyZSBMYWJhc3RpZSA8cGllcnJlX2RvdF9sYWJhc3RpZV9hdF9uZXVmX2RvdF9mcj4K K0RhdGU6ICAgICAgICAgICAgICAgICAgICAyMDIzLTAxLTA1CitJbml0aWFsIFBhY2thZ2UgVmVy c2lvbjogNS4xNS44CitVcHN0cmVhbSBTdGF0dXM6ICAgICAgICAgQXBwbGllZCAoYWNjb3JkaW5n IHRvIEtERSkKK09yaWdpbjogICAgICAgICAgICAgICAgICBLREUgcGF0Y2ggc2V0CitEZXNjcmlw dGlvbjogICAgICAgICAgICAgUGF0Y2ggc2V0IG1haW50YWluZWQgYnkgdGhlIEtERSBmb2xrcwor c2VlIGh0dHBzOi8vZG90LmtkZS5vcmcvMjAyMS8wNC8wNi9hbm5vdW5jaW5nLWtkZXMtcXQtNS1w YXRjaC1jb2xsZWN0aW9uCitQYXRjaCBnZW5lcmF0ZWQgdXNpbmcgdGhlIHByb2NlZHVyZSBpbgor aHR0cHM6Ly93aWtpLmxpbnV4ZnJvbXNjcmF0Y2gub3JnL2JsZnMvdGlja2V0LzE3NDc2I2NvbW1l bnQ6MworCitTdWJtb2R1bGUgcXRiYXNlIDRlZTRmYzE4Li45Y2Y1ODZkNjoKK2RpZmYgLS1naXQg YS9xdGJhc2UvbWtzcGVjcy9jb21tb24vYW5kcm9pZC9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2Uv bWtzcGVjcy9jb21tb24vYW5kcm9pZC9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IGY3NWJjNDA5M2Iu LjJiZDU5NDEwZDQgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9jb21tb24vYW5kcm9pZC9x cGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0 Zm9ybWRlZnMuaAorQEAgLTE0NCwxMSArMTQ0LDcgQEAKKyAjZGVmaW5lIFFUX1NJR05BTF9BUkdT ICAgICAgICAgIGludAorICNkZWZpbmUgUVRfU0lHTkFMX0lHTk9SRSAgICAgICAgU0lHX0lHTgor IAorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorICNkZWZpbmUg UVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NP Q0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9YT1BFTl9T T1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRGICAg ICAgICAgICAgIDo6c25wcmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9mZWF0dXJl cy9tYWMvc2RrLm1rIGIvcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5taworaW5kZXgg ZjMwYjU4MzBiNC4uYTMyY2VhY2I2YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2ZlYXR1 cmVzL21hYy9zZGsubWsKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsK K0BAIC0xLDYgKzEsNiBAQAorIAorIGlmZXEgKCQoUVRfTUFDX1NES19OT19WRVJTSU9OX0NIRUNL KSwpCistICAgIENIRUNLX1NES19DT01NQU5EID0gL3Vzci9iaW4veGNydW4gLS1zZGsgJChFWFBP UlRfUU1BS0VfTUFDX1NESykgLXNob3ctc2RrLXZlcnNpb24gMj4mMQorKyAgICBDSEVDS19TREtf Q09NTUFORCA9IC91c3IvYmluL3hjcnVuIC0tc2RrICQoRVhQT1JUX1FNQUtFX01BQ19TREspIC1z aG93LXNkay12ZXJzaW9uIDI+L2Rldi9udWxsCisgICAgIENVUlJFTlRfTUFDX1NES19WRVJTSU9O IDo9ICQoc2hlbGwgREVWRUxPUEVSX0RJUj0kKEVYUE9SVF9RTUFLRV9YQ09ERV9ERVZFTE9QRVJf UEFUSCkgJChDSEVDS19TREtfQ09NTUFORCkpCisgICAgIGlmbmVxICgkKENVUlJFTlRfTUFDX1NE S19WRVJTSU9OKSwkKEVYUE9SVF9RTUFLRV9NQUNfU0RLX1ZFUlNJT04pKQorICAgICAgICAgIyBX ZSBkb24ndCB3YW50IHRvIGNvbXBsYWluIGFib3V0IG91dCBvZiBkYXRlIFNESyB1bmxlc3MgdGhl IHRhcmdldCBuZWVkcyB0byBiZSByZW1hZGUuCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3Mv bGludXgtY2xhbmcvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcv cXBsYXRmb3JtZGVmcy5oCitpbmRleCBhODE4ZDk3M2YwLi5jMWFiNzJmYmM2IDEwMDY0NAorLS0t IGEvcXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJh c2UvbWtzcGVjcy9saW51eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmgKK0BAIC03OSwxNCArNzksNiBA QAorICNkZWZpbmUgUVRfVVNFX1hPUEVOX0xGU19FWFRFTlNJT05TCisgI2luY2x1ZGUgIi4uL2Nv bW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorLQor LSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRf U09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tM RU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VS Q0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAg ICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5URiAgICAgICAgICAgIDo6dnNu cHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRl ZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IDEz NTIzZjA3MDIuLjRkMjc1MGQ5ZWMgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1n KysvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9saW51eC1nKysvcXBsYXRm b3JtZGVmcy5oCitAQCAtNzksMTQgKzc5LDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9YT1BFTl9MRlNf RVhURU5TSU9OUworICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgor IAorLSN1bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChf X0dMSUJDX18gPCAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2Vs c2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbmRpZgor LQorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkK KyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFU X1ZTTlBSSU5URiAgICAgICAgICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21r c3BlY3MvbGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1s bHZtL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggZGM3NTBhYjFlZi4uZDNjYzM5YjQ3ZiAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5oCisrKysgYi9x dGJhc2UvbWtzcGVjcy9saW51eC1sbHZtL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTgwLDE0ICs4MCw2 IEBACisgI2RlZmluZSBRVF9VU0VfWE9QRU5fTEZTX0VYVEVOU0lPTlMKKyAjaW5jbHVkZSAiLi4v Y29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCist CistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49IDIpCistI2RlZmluZSBR VF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09D S0xFTl9UICAgICAgICAgICAgaW50CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NP VVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAg ICAgICAgICAgOjpzbnByaW50ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2 c25wcmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0 Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5o CitpbmRleCA0YzRlNTNkYTJhLi44M2JhZmZiM2UzIDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3Bl Y3MvbGludXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xp bnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oCitAQCAtODUsMTYgKzg1LDkgQEAKKyAjaW5jbHVk ZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKyAjdW5kZWYgUVRfT1BFTl9M QVJHRUZJTEUKKy0jdW5kZWYgUVRfU09DS0xFTl9UCisgCisgI2RlZmluZSBRVF9PUEVOX0xBUkdF RklMRSAgICAgICAwCisgCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49 IDIpCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQor LSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2VuZGlmCistCisgI2lmbmRl ZiBTSU9DR0lGQlJEQUREUgorICMgIGRlZmluZSBTSU9DR0lGQlJEQUREUiAweDg5MTkKKyAjZW5k aWYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMu aCBiL3F0YmFzZS9ta3NwZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oCitpbmRleCA0MzM5 ZWEyYjIzLi42MDA3YWYwMDU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvbHlueG9zLWcr Ky9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2x5bnhvcy1nKysvcXBsYXRm b3JtZGVmcy5oCitAQCAtNzIsMTQgKzcyLDYgQEAKKyAKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bv c2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lmIGRl ZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49IDIpCistI2RlZmluZSBRVF9TT0NLTEVO X1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAg ICAgICAgICAgaW50CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYg KF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAg OjpzbnByaW50ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2c25wcmludGYK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5k bGVBbGxvY2F0b3IuY3BwIGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUv SGFuZGxlQWxsb2NhdG9yLmNwcAoraW5kZXggYzNjMTg0MjU4Zi4uMzJhZjNmOGYyOSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvM3JkcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9j YXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvM3JkcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hh bmRsZUFsbG9jYXRvci5jcHAKK0BAIC0xMCw2ICsxMCw3IEBACisgI2luY2x1ZGUgImxpYkFOR0xF L0hhbmRsZUFsbG9jYXRvci5oIgorIAorICNpbmNsdWRlIDxhbGdvcml0aG0+CisrI2luY2x1ZGUg PGxpbWl0cz4KKyAKKyAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisgCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMgYi9xdGJhc2Uvc3JjLzNy ZHBhcnR5L2ZvcmtmZC9mb3JrZmRfbGludXguYworaW5kZXggZmZlMGU5YTVlMi4uYjFmNTQwOGQx MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5j CisrKysgYi9xdGJhc2Uvc3JjLzNyZHBhcnR5L2ZvcmtmZC9mb3JrZmRfbGludXguYworQEAgLTgy LDcgKzgyLDggQEAgc3RhdGljIGludCBzeXNfY2xvbmUodW5zaWduZWQgbG9uZyBjbG9uZWZsYWdz LCBpbnQgKnB0aWQpCisgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfY2xvbmUsIGNsb25lZmxhZ3Ms IGNoaWxkX3N0YWNrLCBzdGFja19zaXplLCBwdGlkLCBuZXd0bHMsIGN0aWQpOworICNlbGlmIGRl ZmluZWQoX19hcmNfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9f KSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisgICAgIGRlZmluZWQoX19uZHMzMl9fKSB8fCBk ZWZpbmVkKF9faHBwYV9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBcCistICAgIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3h0ZW5zYV9f KSB8fCBkZWZpbmVkKF9fYWxwaGFfXykgfHwgZGVmaW5lZChfX3Jpc2N2KQorKyAgICBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX194dGVuc2FfXykgfHwgZGVmaW5lZChfX2FscGhhX18p IHx8IGRlZmluZWQoX19yaXNjdikgfHwgXAorKyAgICBkZWZpbmVkKF9fbG9vbmdhcmNoX18pCisg ICAgIC8qIGN0aWQgYW5kIG5ld3RscyBhcmUgaW52ZXJ0ZWQgb24gQ09ORklHX0NMT05FX0JBQ0tX QVJEUyBhcmNoaXRlY3R1cmVzLAorICAgICAgKiBidXQgc2luY2UgYm90aCB2YWx1ZXMgYXJlIDAs IHRoZXJlJ3Mgbm8gaGFybS4gKi8KKyAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9jbG9uZSwgY2xv bmVmbGFncywgY2hpbGRfc3RhY2ssIHB0aWQsIGN0aWQsIG5ld3Rscyk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9hbmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9pZC9RdE5h dGl2ZS5qYXZhIGIvcXRiYXNlL3NyYy9hbmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUv YW5kcm9pZC9RdE5hdGl2ZS5qYXZhCitpbmRleCA1NzkyYjViMmY1Li4yZjc0NzUwZmNmIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9hbmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5k cm9pZC9RdE5hdGl2ZS5qYXZhCisrKysgYi9xdGJhc2Uvc3JjL2FuZHJvaWQvamFyL3NyYy9vcmcv cXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEKK0BAIC0xMTYsNiArMTE2LDcgQEAg cHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgIHB1YmxpYyBzdGF0aWMgUXRUaHJlYWQgbV9xdFRo cmVhZCA9IG5ldyBRdFRocmVhZCgpOworICAgICBwcml2YXRlIHN0YXRpYyBIYXNoTWFwPFN0cmlu ZywgVXJpPiBtX2NhY2hlZFVyaXMgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFVyaT4oKTsKKyAgICAg cHJpdmF0ZSBzdGF0aWMgQXJyYXlMaXN0PFN0cmluZz4gbV9rbm93bkRpcnMgPSBuZXcgQXJyYXlM aXN0PFN0cmluZz4oKTsKKysgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5vUGVybWlz c2lvbkVycm9yTWVzc2FnZSA9ICJObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSI7CisgCisgICAg IHByaXZhdGUgc3RhdGljIGZpbmFsIFJ1bm5hYmxlIHJ1blBlbmRpbmdDcHBSdW5uYWJsZXNSdW5u YWJsZSA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgIEBPdmVycmlkZQorQEAgLTE5MywxMSAr MTk0LDEwIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGl0ZXJVcmk7CisgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgIC8vIEFuZHJvaWQg NiBhbmQgZWFybGllciBjb3VsZCBzdGlsbCBtYW5hZ2UgdG8gb3BlbiB0aGUgZmlsZSBzbyB3ZSBj YW4gcmV0dXJuIHRoZQorLSAgICAgICAgICAgIC8vIHBhcnNlZCB1cmkgaGVyZQorLSAgICAgICAg ICAgIGlmIChCdWlsZC5WRVJTSU9OLlNES19JTlQgPCAyNCkKKy0gICAgICAgICAgICAgICAgcmV0 dXJuIHBhcnNlZFVyaTsKKy0gICAgICAgICAgICByZXR1cm4gbnVsbDsKKysgICAgICAgICAgICAv LyBpZiB3ZSBvbmx5IGhhdmUgdHJhbnNpZW50IHBlcm1pc3Npb25zIG9uIHVyaSBhbGwgdGhlIGFi b3ZlIHdpbGwgZmFpbCwKKysgICAgICAgICAgICAvLyBidXQgd2Ugd2lsbCBiZSBhYmxlIHRvIHJl YWQgdGhlIGZpbGUgYW55d2F5LCBzbyBjb250aW51ZSB3aXRoIHVyaSBoZXJlIGFueXdheQorKyAg ICAgICAgICAgIC8vIGFuZCBjaGVjayBmb3IgU2VjdXJpdHlFeGNlcHRpb25zIGxhdGVyCisrICAg ICAgICAgICAgcmV0dXJuIHBhcnNlZFVyaTsKKyAgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhj ZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAg ICAgIHJldHVybiBudWxsOworQEAgLTI0NCw3ICsyNDQsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRp dmUKKyAgICAgICAgIGludCBlcnJvciA9IC0xOworIAorICAgICAgICAgaWYgKHVyaSA9PSBudWxs KSB7CistICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJvcGVuRmRGb3JDb250ZW50VXJsKCk6IE5v IHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJv cGVuRmRGb3JDb250ZW50VXJsKCk6ICIgKyBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAg ICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgIH0KKyAKK0BAIC0yNTQsMTIgKzI1NCwx MyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgICAgICByZXR1cm4gZmREZXNjLmRl dGFjaEZkKCk7CisgICAgICAgICB9IGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZSkgewor ICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGVy cm9yOworICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAg ICAgICAgICAgICBMb2cuZShRdFRBRywgIm9wZW5GZEZvckNvbnRlbnRVcmwoKTogSW52YWxpZCBV cmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJl dHVybiBlcnJvcjsKKysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysg ICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAg ICAgIH0KKysgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgfQorIAorICAgICBwdWJsaWMgc3Rh dGljIGxvbmcgZ2V0U2l6ZShDb250ZXh0IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorQEAg LTI3MCw3ICsyNzEsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgICAgICB1cmkg PSBnZXRVcmlXaXRoVmFsaWRQZXJtaXNzaW9uKGNvbnRleHQsIGNvbnRlbnRVcmwsICJyIik7Cisg CisgICAgICAgICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cuZShRdFRBRywg ImdldFNpemUoKTogTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiKTsKKysgICAgICAgICAgICBM b2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1 cm4gc2l6ZTsKKyAgICAgICAgIH0gZWxzZSBpZiAoIW1fY2FjaGVkVXJpcy5jb250YWluc0tleShj b250ZW50VXJsKSkgeworICAgICAgICAgICAgIG1fY2FjaGVkVXJpcy5wdXQoY29udGVudFVybCwg dXJpKTsKK0BAIC0yODgsMTIgKzI4OSwxMyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAg ICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAg TG9nLmUoUXRUQUcsICJnZXRTaXplKCk6IEludmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5w cmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgICAgIH0g IGNhdGNoIChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAg TG9nLmUoUXRUQUcsICJnZXRTaXplKCk6IFVuc3VwcG9ydGVkIG9wZXJhdGlvbiBmb3IgZ2l2ZW4g VXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICBy ZXR1cm4gc2l6ZTsKKysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysg ICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAg ICAgIH0KKysgICAgICAgIHJldHVybiBzaXplOworICAgICB9CisgCisgICAgIHB1YmxpYyBzdGF0 aWMgYm9vbGVhbiBjaGVja0ZpbGVFeGlzdHMoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVu dFVybCkKK0BAIC0zMDMsNyArMzA1LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAg ICBpZiAodXJpID09IG51bGwpCisgICAgICAgICAgICAgdXJpID0gZ2V0VXJpV2l0aFZhbGlkUGVy bWlzc2lvbihjb250ZXh0LCBjb250ZW50VXJsLCAiciIpOworICAgICAgICAgaWYgKHVyaSA9PSBu dWxsKSB7CistICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0ZpbGVFeGlzdHMoKTogTm8g cGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiKTsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9Q ZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1cm4gZXhpc3RzOworICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBpZiAoIW1fY2FjaGVkVXJpcy5jb250YWluc0tl eShjb250ZW50VXJsKSkKK0BAIC0zMjEsMTIgKzMyMywxMyBAQCBwdWJsaWMgY2xhc3MgUXROYXRp dmUKKyAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAg ICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0ZpbGVFeGlzdHMoKTogSW52YWxpZCBVcmkiKTsK KyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBl eGlzdHM7CisgICAgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBl KSB7CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0ZpbGVFeGlzdHMoKTogVW5zdXBw b3J0ZWQgb3BlcmF0aW9uIGZvciBnaXZlbiBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3Rh Y2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgIH0gY2F0Y2gg KFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJt aXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgIH0KKysgICAgICAgIHJldHVybiBleGlzdHM7 CisgICAgIH0KKyAKKyAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGNoZWNrSWZXcml0YWJsZShD b250ZXh0IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorQEAgLTM0NCw3ICszNDcsNyBAQCBw dWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgICAgICB1cmkgPSBnZXRVcmlXaXRoVmFsaWRQ ZXJtaXNzaW9uKGNvbnRleHQsIGNvbnRlbnRVcmwsICJyIik7CisgICAgICAgICB9CisgICAgICAg ICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cuZShRdFRBRywgImlzRGlyKCk6 IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcs IE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgcmV0dXJuIGlzRGlyOwor ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBpZiAoIW1fY2FjaGVkVXJpcy5jb250YWlu c0tleShjb250ZW50VXJsKSkKK0BAIC0zNzQsMTIgKzM3NywxMyBAQCBwdWJsaWMgY2xhc3MgUXRO YXRpdmUKKyAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7Cisg ICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0lmRGlyKCk6IEludmFsaWQgVXJpIik7Cisg ICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBlKSB7 CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0lmRGlyKCk6IFVuc3VwcG9ydGVkIG9w ZXJhdGlvbiBmb3IgZ2l2ZW4gVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2Uo KTsKKy0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0 eUV4Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVy cm9yTWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0K KyAgICAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBsaXN0Q29udGVudHNGcm9tVHJlZVVyaShDb250 ZXh0IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorICAgICB7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oIGIvcXRiYXNlL3Ny Yy9jb25jdXJyZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oCitpbmRleCA4ZjlhOTM4OTUy Li5hOThkZWRlZjJlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3Vy cmVudHJlZHVjZWtlcm5lbC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJy ZW50cmVkdWNla2VybmVsLmgKK0BAIC0yMTIsMTEgKzIxMiwxMyBAQCBwdWJsaWM6CisgCisgICAg IGlubGluZSBib29sIHNob3VsZFRocm90dGxlKCkKKyAgICAgeworKyAgICAgICAgc3RkOjpsb2Nr X2d1YXJkPFFNdXRleD4gbG9ja2VyKG11dGV4KTsKKyAgICAgICAgIHJldHVybiAocmVzdWx0c01h cFNpemUgPiAoUmVkdWNlUXVldWVUaHJvdHRsZUxpbWl0ICogdGhyZWFkQ291bnQpKTsKKyAgICAg fQorIAorICAgICBpbmxpbmUgYm9vbCBzaG91bGRTdGFydFRocmVhZCgpCisgICAgIHsKKysgICAg ICAgIHN0ZDo6bG9ja19ndWFyZDxRTXV0ZXg+IGxvY2tlcihtdXRleCk7CisgICAgICAgICByZXR1 cm4gKHJlc3VsdHNNYXBTaXplIDw9IChSZWR1Y2VRdWV1ZVN0YXJ0TGltaXQgKiB0aHJlYWRDb3Vu dCkpOworICAgICB9CisgfTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRj b25jdXJyZW50dGhyZWFkZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1 cnJlbnR0aHJlYWRlbmdpbmUuY3BwCitpbmRleCBlYTZjZTNhYzQyLi43ZjkxYTJiYTY4IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5j cHAKKysrKyBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUu Y3BwCitAQCAtMTc2LDYgKzE3NiwzOSBAQCB2b2lkIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0U2lu Z2xlVGhyZWFkZWQoKQorICAgICBmaW5pc2goKTsKKyB9CisgCisrdm9pZCBUaHJlYWRFbmdpbmVC YXNlOjpzdGFydEJsb2NraW5nKCkKKyt7CisrICAgIHN0YXJ0KCk7CisrICAgIGJhcnJpZXIuYWNx dWlyZSgpOworKyAgICBzdGFydFRocmVhZHMoKTsKKysKKysgICAgYm9vbCB0aHJvdHRsZWQgPSBm YWxzZTsKKysjaWZuZGVmIFFUX05PX0VYQ0VQVElPTlMKKysgICAgdHJ5IHsKKysjZW5kaWYKKysg ICAgICAgIHdoaWxlICh0aHJlYWRGdW5jdGlvbigpID09IFRocm90dGxlVGhyZWFkKSB7CisrICAg ICAgICAgICAgaWYgKHRocmVhZFRocm90dGxlRXhpdCgpKSB7CisrICAgICAgICAgICAgICAgIHRo cm90dGxlZCA9IHRydWU7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0K KysgICAgICAgIH0KKysjaWZuZGVmIFFUX05PX0VYQ0VQVElPTlMKKysgICAgfSBjYXRjaCAoUUV4 Y2VwdGlvbiAmZSkgeworKyAgICAgICAgaGFuZGxlRXhjZXB0aW9uKGUpOworKyAgICB9IGNhdGNo ICguLi4pIHsKKysgICAgICAgIGhhbmRsZUV4Y2VwdGlvbihRVW5oYW5kbGVkRXhjZXB0aW9uKCkp OworKyAgICB9CisrI2VuZGlmCisrCisrICAgIGlmICh0aHJvdHRsZWQgPT0gZmFsc2UpIHsKKysg ICAgICAgIGJhcnJpZXIucmVsZWFzZSgpOworKyAgICB9CisrCisrICAgIGJhcnJpZXIud2FpdCgp OworKyAgICBmaW5pc2goKTsKKysgICAgZXhjZXB0aW9uU3RvcmUudGhyb3dQb3NzaWJsZUV4Y2Vw dGlvbigpOworK30KKysKKyB2b2lkIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0VGhyZWFkKCkKKyB7 CisgICAgIHN0YXJ0VGhyZWFkSW50ZXJuYWwoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2Nv bmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmggYi9xdGJhc2Uvc3JjL2NvbmN1cnJl bnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmgKK2luZGV4IDdjMzBjZWJkYmMuLmE0Yzg1NDhj YzQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFk ZW5naW5lLmgKKysrKyBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRl bmdpbmUuaAorQEAgLTkxLDYgKzkxLDcgQEAgcHVibGljOgorICAgICBUaHJlYWRFbmdpbmVCYXNl KCk7CisgICAgIHZpcnR1YWwgflRocmVhZEVuZ2luZUJhc2UoKTsKKyAgICAgdm9pZCBzdGFydFNp bmdsZVRocmVhZGVkKCk7CisrICAgIHZvaWQgc3RhcnRCbG9ja2luZygpOworICAgICB2b2lkIHN0 YXJ0VGhyZWFkKCk7CisgICAgIGJvb2wgaXNDYW5jZWxlZCgpOworICAgICB2b2lkIHdhaXRGb3JS ZXN1bWUoKTsKK0BAIC0xNDMsNiArMTQ0LDE1IEBAIHB1YmxpYzoKKyAgICAgICAgIHJldHVybiBy ZXN1bHQoKTsKKyAgICAgfQorIAorKyAgICAvLyBSdW5zIHRoZSB1c2VyIGFsZ29yaXRobSB1c2lu ZyBtdWx0aXBsZSB0aHJlYWRzLgorKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGJsb2NrcyB1bnRpbCB0 aGUgYWxnb3JpdGhtIGlzIGZpbmlzaGVkLAorKyAgICAvLyBhbmQgdGhlbiByZXR1cm5zIHRoZSBy ZXN1bHQuCisrICAgIFQgKnN0YXJ0QmxvY2tpbmcoKQorKyAgICB7CisrICAgICAgICBUaHJlYWRF bmdpbmVCYXNlOjpzdGFydEJsb2NraW5nKCk7CisrICAgICAgICByZXR1cm4gcmVzdWx0KCk7Cisr ICAgIH0KKysKKyAgICAgLy8gUnVucyB0aGUgdXNlciBhbGdvcml0aG0gdXNpbmcgbXVsdGlwbGUg dGhyZWFkcy4KKyAgICAgLy8gRG9lcyBub3QgYmxvY2ssIHJldHVybnMgYSBmdXR1cmUuCisgICAg IFFGdXR1cmU8VD4gc3RhcnRBc3luY2hyb25vdXNseSgpCitAQCAtMjIzLDYgKzIzMywxMyBAQCBj bGFzcyBUaHJlYWRFbmdpbmVTdGFydGVyIDogcHVibGljIFRocmVhZEVuZ2luZVN0YXJ0ZXJCYXNl PFQ+CisgcHVibGljOgorICAgICBUaHJlYWRFbmdpbmVTdGFydGVyKFR5cGVkVGhyZWFkRW5naW5l ICplbmcpCisgICAgICAgICA6IEJhc2UoZW5nKSB7IH0KKysKKysgICAgVCBzdGFydEJsb2NraW5n KCkKKysgICAgeworKyAgICAgICAgVCB0ID0gKnRoaXMtPnRocmVhZEVuZ2luZS0+c3RhcnRCbG9j a2luZygpOworKyAgICAgICAgZGVsZXRlIHRoaXMtPnRocmVhZEVuZ2luZTsKKysgICAgICAgIHJl dHVybiB0OworKyAgICB9CisgfTsKKyAKKyAvLyBGdWxsIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9u IHdoZXJlIFQgaXMgdm9pZC4KK0BAIC0yMzIsNiArMjQ5LDEyIEBAIGNsYXNzIFRocmVhZEVuZ2lu ZVN0YXJ0ZXI8dm9pZD4gOiBwdWJsaWMgVGhyZWFkRW5naW5lU3RhcnRlckJhc2U8dm9pZD4KKyBw dWJsaWM6CisgICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXIoVGhyZWFkRW5naW5lPHZvaWQ+ICpfdGhy ZWFkRW5naW5lKQorICAgICAgICAgOiBUaHJlYWRFbmdpbmVTdGFydGVyQmFzZTx2b2lkPihfdGhy ZWFkRW5naW5lKSB7fQorKworKyAgICB2b2lkIHN0YXJ0QmxvY2tpbmcoKQorKyAgICB7CisrICAg ICAgICB0aGlzLT50aHJlYWRFbmdpbmUtPnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGRlbGV0 ZSB0aGlzLT50aHJlYWRFbmdpbmU7CisrICAgIH0KKyB9OworIAorIC8vISBbcXRjb25jdXJyZW50 dGhyZWFkZW5naW5lLTFdCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1hdGlv bi9xdmFyaWFudGFuaW1hdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2 YXJpYW50YW5pbWF0aW9uLmNwcAoraW5kZXggOThiMDJmMDIwMi4uZWFjMTUyNDEwNyAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3Bw CisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0aW9uLmNw cAorQEAgLTI3Niw3ICsyNzYsOSBAQCB2b2lkIFFWYXJpYW50QW5pbWF0aW9uUHJpdmF0ZTo6c2V0 Q3VycmVudFZhbHVlRm9yUHJvZ3Jlc3MoY29uc3QgcXJlYWwgcHJvZ3Jlc3MpCisgCisgICAgIGNv bnN0IHFyZWFsIHN0YXJ0UHJvZ3Jlc3MgPSBjdXJyZW50SW50ZXJ2YWwuc3RhcnQuZmlyc3Q7Cisg ICAgIGNvbnN0IHFyZWFsIGVuZFByb2dyZXNzID0gY3VycmVudEludGVydmFsLmVuZC5maXJzdDsK Ky0gICAgY29uc3QgcXJlYWwgbG9jYWxQcm9ncmVzcyA9IChwcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jl c3MpIC8gKGVuZFByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcyk7CisrICAgIGNvbnN0IHFyZWFsIGxv Y2FsUHJvZ3Jlc3MgPQorKyAgICAgICAgICAgIHFJc051bGwocHJvZ3Jlc3MgLSBzdGFydFByb2dy ZXNzKSA/IDAuMCAvLyBhdm9pZCAwLzAgYmVsb3cKKysgICAgICAgICAgICAvKiBlbHNlICovICAg ICAgICAgICAgICAgICAgICAgICAgOiAocHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKSAvIChlbmRQ cm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpOworIAorICAgICBRVmFyaWFudCByZXQgPSBxLT5pbnRl cnBvbGF0ZWQoY3VycmVudEludGVydmFsLnN0YXJ0LnNlY29uZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbnRlcnZhbC5lbmQuc2Vjb25kLAorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oIGIvcXRiYXNlL3NyYy9j b3JlbGliL2dsb2JhbC9xbmFtZXNwYWNlLmgKK2luZGV4IGFkNDE1MGIzMTcuLmJmMTliMTYyN2Ig MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1lc3BhY2UuaAorKysr IGIvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xbmFtZXNwYWNlLmgKK0BAIC0xODY0LDcgKzE4 NjQsNyBAQCBwdWJsaWM6CisgICAgIFFUX1FfRU5VTShUaW1lclR5cGUpCisgICAgIFFUX1FfRU5V TShTY3JvbGxQaGFzZSkKKyAgICAgUVRfUV9FTlVNKE1vdXNlRXZlbnRTb3VyY2UpCistICAgIFFU X1FfRkxBRyhNb3VzZUV2ZW50RmxhZykKKysgICAgUVRfUV9GTEFHKE1vdXNlRXZlbnRGbGFncykK KyAgICAgUVRfUV9FTlVNKENoZWNrc3VtVHlwZSkKKyAgICAgUVRfUV9FTlVNKEhpZ2hEcGlTY2Fs ZUZhY3RvclJvdW5kaW5nUG9saWN5KQorICAgICBRVF9RX0VOVU0oVGFiRm9jdXNCZWhhdmlvcikK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20uY3BwIGIvcXRi YXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcAoraW5kZXggMTA2NzJjMWY5Mi4uMjVm ODdjN2U2YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5j cHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAKK0BAIC0zODMs NyArMzgzLDYgQEAgc3RydWN0IFFSYW5kb21HZW5lcmF0b3I6OlN5c3RlbUFuZEdsb2JhbEdlbmVy YXRvcnMKKyAKKyAgICAgICAgIGNvbnN0ZXhwciBTeXN0ZW1BbmRHbG9iYWxHZW5lcmF0b3JzIGcg PSB7fTsKKyAgICAgICAgIFFfVU5VU0VEKGcpOworLSAgICAgICAgUV9TVEFUSUNfQVNTRVJUKHN0 ZDo6aXNfbGl0ZXJhbF90eXBlPFN5c3RlbUFuZEdsb2JhbEdlbmVyYXRvcnM+Ojp2YWx1ZSk7Cisg I2VuZGlmCisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1 ZmZlci5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1ZmZlci5jcHAKK2luZGV4IDU5NWZj ZDI3MjQuLjAzMmMwZGRkNGIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1 ZmZlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVyLmNwcAorQEAgLTQx LDYgKzQxLDggQEAKKyAjaW5jbHVkZSA8UXRDb3JlL3FtZXRhb2JqZWN0Lmg+CisgI2luY2x1ZGUg InByaXZhdGUvcWlvZGV2aWNlX3AuaCIKKyAKKysjaW5jbHVkZSA8bGltaXRzPgorKworIFFUX0JF R0lOX05BTUVTUEFDRQorIAorIC8qKiBRQnVmZmVyUHJpdmF0ZSAqKi8KK0BAIC0zNjYsNyArMzY4 LDkgQEAgcWludDY0IFFCdWZmZXI6OnNpemUoKSBjb25zdAorIGJvb2wgUUJ1ZmZlcjo6c2Vlayhx aW50NjQgcG9zKQorIHsKKyAgICAgUV9EKFFCdWZmZXIpOworLSAgICBpZiAocG9zID4gZC0+YnVm LT5zaXplKCkgJiYgaXNXcml0YWJsZSgpKSB7CisrICAgIGNvbnN0IGF1dG8gb2xkQnVmU2l6ZSA9 IGQtPmJ1Zi0+c2l6ZSgpOworKyAgICBjb25zdGV4cHIgcWludDY0IE1heFNlZWtQb3MgPSAoc3Rk OjpudW1lcmljX2xpbWl0czxkZWNsdHlwZShvbGRCdWZTaXplKT46Om1heCkoKTsKKysgICAgaWYg KHBvcyA8PSBNYXhTZWVrUG9zICYmIHBvcyA+IG9sZEJ1ZlNpemUgJiYgaXNXcml0YWJsZSgpKSB7 CisgICAgICAgICBpZiAoc2VlayhkLT5idWYtPnNpemUoKSkpIHsKKyAgICAgICAgICAgICBjb25z dCBxaW50NjQgZ2FwU2l6ZSA9IHBvcyAtIGQtPmJ1Zi0+c2l6ZSgpOworICAgICAgICAgICAgIGlm ICh3cml0ZShRQnl0ZUFycmF5KGdhcFNpemUsIDApKSAhPSBnYXBTaXplKSB7CitAQCAtMzc3LDcg KzM4MSw3IEBAIGJvb2wgUUJ1ZmZlcjo6c2VlayhxaW50NjQgcG9zKQorICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIGlmIChwb3MgPiBkLT5idWYtPnNp emUoKSB8fCBwb3MgPCAwKSB7CistICAgICAgICBxV2FybmluZygiUUJ1ZmZlcjo6c2VlazogSW52 YWxpZCBwb3M6ICVkIiwgaW50KHBvcykpOworKyAgICAgICAgcVdhcm5pbmcoIlFCdWZmZXI6OnNl ZWs6IEludmFsaWQgcG9zOiAlbGxkIiwgcG9zKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgfQorICAgICByZXR1cm4gUUlPRGV2aWNlOjpzZWVrKHBvcyk7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAgYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW1lbmdpbmVfd2luLmNwcAoraW5kZXggODFkM2E3MTk4Ni4u Yzg2ZWQxZjliMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3Rl bWVuZ2luZV93aW4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW1l bmdpbmVfd2luLmNwcAorQEAgLTY2NCwxNCArNjY0LDE0IEBAIFFGaWxlU3lzdGVtRW50cnkgUUZp bGVTeXN0ZW1FbmdpbmU6OmFic29sdXRlTmFtZShjb25zdCBRRmlsZVN5c3RlbUVudHJ5ICZlbnRy eSkKKyAgICAgcmV0dXJuIFFGaWxlU3lzdGVtRW50cnkocmV0LCBRRmlsZVN5c3RlbUVudHJ5OjpG cm9tSW50ZXJuYWxQYXRoKCkpOworIH0KKyAKKy0jaWYgZGVmaW5lZChRX0NDX01JTkdXKSAmJiBX SU5WRVIgPCAweDA2MDIgLy8gIFdpbmRvd3MgOCBvbndhcmRzCisrI2lmIGRlZmluZWQoUV9DQ19N SU5HVykgJiYgV0lOVkVSIDwgMHgwNjAyICYmIF9XSU4zMl9XSU5OVCA8IF9XSU4zMl9XSU5OVF9X SU44IC8vICBXaW5kb3dzIDggb253YXJkcworIAorIHR5cGVkZWYgc3RydWN0IF9GSUxFX0lEX0lO Rk8geworICAgICBVTE9OR0xPTkcgVm9sdW1lU2VyaWFsTnVtYmVyOworICAgICBGSUxFX0lEXzEy OCBGaWxlSWQ7CisgfSBGSUxFX0lEX0lORk8sICpQRklMRV9JRF9JTkZPOworIAorLSNlbmRpZiAv LyBpZiBkZWZpbmVkIChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAweDA2MDIKKysjZW5kaWYgLy8g aWYgZGVmaW5lZChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAweDA2MDIgJiYgX1dJTjMyX1dJTk5U IDwgX1dJTjMyX1dJTk5UX1dJTjgKKyAKKyAvLyBGaWxlIElEIGZvciBXaW5kb3dzIHVwIHRvIHZl cnNpb24gNyBhbmQgRkFUMzIgZHJpdmVzCisgc3RhdGljIGlubGluZSBRQnl0ZUFycmF5IGZpbGVJ ZChIQU5ETEUgaGFuZGxlKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmls ZXN5c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVz eXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwCitpbmRleCA5NGQ5ZDA2YmNiLi4yN2UwYjEzYjBiIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90 aWZ5LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9p bm90aWZ5LmNwcAorQEAgLTM2Niw3ICszNjYsOSBAQCB2b2lkIFFJbm90aWZ5RmlsZVN5c3RlbVdh dGNoZXJFbmdpbmU6OnJlYWRGcm9tSW5vdGlmeSgpCisgICAgIC8vIHFEZWJ1ZygiUUlub3RpZnlG aWxlU3lzdGVtV2F0Y2hlckVuZ2luZTo6cmVhZEZyb21Jbm90aWZ5Iik7CisgCisgICAgIGludCBi dWZmU2l6ZSA9IDA7CistICAgIGlvY3RsKGlub3RpZnlGZCwgRklPTlJFQUQsIChjaGFyICopICZi dWZmU2l6ZSk7CisrICAgIGlmIChpb2N0bChpbm90aWZ5RmQsIEZJT05SRUFELCAoY2hhciAqKSAm YnVmZlNpemUpID09IC0xIHx8IGJ1ZmZTaXplID09IDApCisrICAgICAgICByZXR1cm47CisrCisg ICAgIFFWYXJMZW5ndGhBcnJheTxjaGFyLCA0MDk2PiBidWZmZXIoYnVmZlNpemUpOworICAgICBi dWZmU2l6ZSA9IHJlYWQoaW5vdGlmeUZkLCBidWZmZXIuZGF0YSgpLCBidWZmU2l6ZSk7CisgICAg IGNoYXIgKmF0ID0gYnVmZmVyLmRhdGEoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVs aWIvaW8vcWxvY2tmaWxlX3dpbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxl X3dpbi5jcHAKK2luZGV4IDI3N2Y4ZDQyMzAuLjM4ZWNlZjU1NTAgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dpbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29y ZWxpYi9pby9xbG9ja2ZpbGVfd2luLmNwcAorQEAgLTQ4LDYgKzQ4LDggQEAKKyAjaW5jbHVkZSAi UXRDb3JlL3FkZWJ1Zy5oIgorICNpbmNsdWRlICJRdENvcmUvcXRocmVhZC5oIgorIAorKyNpbmNs dWRlICJwcml2YXRlL3FzeXN0ZW1saWJyYXJ5X3AuaCIKKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UK KyAKKyBzdGF0aWMgaW5saW5lIGJvb2wgZmlsZUV4aXN0cyhjb25zdCB3Y2hhcl90ICpmaWxlTmFt ZSkKK0BAIC0xNTAsNyArMTUyLDcgQEAgUVN0cmluZyBRTG9ja0ZpbGVQcml2YXRlOjpwcm9jZXNz TmFtZUJ5UGlkKHFpbnQ2NCBwaWQpCisgI2lmICFkZWZpbmVkKFFfT1NfV0lOUlQpCisgICAgIHR5 cGVkZWYgRFdPUkQgKFdJTkFQSSAqR2V0TW9kdWxlRmlsZU5hbWVFeEZ1bmMpKEhBTkRMRSwgSE1P RFVMRSwgTFBUU1RSLCBEV09SRCk7CisgCistICAgIEhNT0RVTEUgaFBzYXBpID0gTG9hZExpYnJh cnlBKCJwc2FwaSIpOworKyAgICBITU9EVUxFIGhQc2FwaSA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2Fk KEwicHNhcGkiKTsKKyAgICAgaWYgKCFoUHNhcGkpCisgICAgICAgICByZXR1cm4gUVN0cmluZygp OworICAgICBHZXRNb2R1bGVGaWxlTmFtZUV4RnVuYyBxR2V0TW9kdWxlRmlsZU5hbWVFeCA9IHJl aW50ZXJwcmV0X2Nhc3Q8R2V0TW9kdWxlRmlsZU5hbWVFeEZ1bmM+KAorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvY29yZWxpYi9pby9xcHJvY2Vzc191bml4LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxp Yi9pby9xcHJvY2Vzc191bml4LmNwcAoraW5kZXggNTAzOTBlNTdmNS4uMTVjOGYzMDc0NSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xcHJvY2Vzc191bml4LmNwcAorKysrIGIv cXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fwcm9jZXNzX3VuaXguY3BwCitAQCAtMSw3ICsxLDcgQEAK KyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICoqCisgKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBR dCBDb21wYW55IEx0ZC4KKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24u CisrKiogQ29weXJpZ2h0IChDKSAyMDIyIEludGVsIENvcnBvcmF0aW9uLgorICoqIENvbnRhY3Q6 IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBRdENvcmUgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTQyMiwxNCArNDIy LDE1IEBAIHZvaWQgUVByb2Nlc3NQcml2YXRlOjpzdGFydFByb2Nlc3MoKQorICAgICAvLyBBZGQg dGhlIHByb2dyYW0gbmFtZSB0byB0aGUgYXJndW1lbnQgbGlzdC4KKyAgICAgYXJndlswXSA9IG51 bGxwdHI7CisgICAgIGlmICghcHJvZ3JhbS5jb250YWlucyhRTGF0aW4xQ2hhcignLycpKSkgewor KyAgICAgICAgLy8gZmluZEV4ZWN1dGFibGUoKSByZXR1cm5zIGl0cyBhcmd1bWVudCBpZiBpdCdz IGFuIGFic29sdXRlIHBhdGgsCisrICAgICAgICAvLyBvdGhlcndpc2UgaXQgc2VhcmNoZXMgJFBB VEg7IHJldHVybnMgZW1wdHkgaWYgbm90IGZvdW5kICh3ZSBoYW5kbGUKKysgICAgICAgIC8vIHRo YXQgY2FzZSBtdWNoIGxhdGVyKQorICAgICAgICAgY29uc3QgUVN0cmluZyAmZXhlRmlsZVBhdGgg PSBRU3RhbmRhcmRQYXRoczo6ZmluZEV4ZWN1dGFibGUocHJvZ3JhbSk7CistICAgICAgICBpZiAo IWV4ZUZpbGVQYXRoLmlzRW1wdHkoKSkgeworLSAgICAgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkg JnRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKy0gICAgICAgICAgICBhcmd2 WzBdID0gOjpzdHJkdXAodG1wLmNvbnN0RGF0YSgpKTsKKy0gICAgICAgIH0KKy0gICAgfQorLSAg ICBpZiAoIWFyZ3ZbMF0pCisrICAgICAgICBjb25zdCBRQnl0ZUFycmF5ICZ0bXAgPSBRRmlsZTo6 ZW5jb2RlTmFtZShleGVGaWxlUGF0aCk7CisrICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAodG1w LmNvbnN0RGF0YSgpKTsKKysgICAgfSBlbHNlIHsKKyAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1 cChlbmNvZGVkUHJvZ3JhbU5hbWUuY29uc3REYXRhKCkpOworKyAgICB9CisgCisgICAgIC8vIEFk ZCBldmVyeSBhcmd1bWVudCB0byB0aGUgbGlzdAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFy Z3VtZW50cy5jb3VudCgpOyArK2kpCitAQCAtOTgzLDE1ICs5ODQsMTYgQEAgYm9vbCBRUHJvY2Vz c1ByaXZhdGU6OnN0YXJ0RGV0YWNoZWQocWludDY0ICpwaWQpCisgICAgICAgICAgICAgICAgIGVu dnAgPSBfcV9kdXBFbnZpcm9ubWVudChlbnZpcm9ubWVudC5kLmNvbnN0RGF0YSgpLT52YXJzLCAm ZW52Yyk7CisgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgIFFCeXRlQXJyYXkgdG1wOwor ICAgICAgICAgICAgIGlmICghcHJvZ3JhbS5jb250YWlucyhRTGF0aW4xQ2hhcignLycpKSkgewor KyAgICAgICAgICAgICAgICAvLyBmaW5kRXhlY3V0YWJsZSgpIHJldHVybnMgaXRzIGFyZ3VtZW50 IGlmIGl0J3MgYW4gYWJzb2x1dGUgcGF0aCwKKysgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNl IGl0IHNlYXJjaGVzICRQQVRIOyByZXR1cm5zIGVtcHR5IGlmIG5vdCBmb3VuZCAod2UgaGFuZGxl CisrICAgICAgICAgICAgICAgIC8vIHRoYXQgY2FzZSBtdWNoIGxhdGVyKQorICAgICAgICAgICAg ICAgICBjb25zdCBRU3RyaW5nICZleGVGaWxlUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjpmaW5kRXhl Y3V0YWJsZShwcm9ncmFtKTsKKy0gICAgICAgICAgICAgICAgaWYgKCFleGVGaWxlUGF0aC5pc0Vt cHR5KCkpCistICAgICAgICAgICAgICAgICAgICB0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVG aWxlUGF0aCk7CisrICAgICAgICAgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgJnRtcCA9IFFGaWxl OjplbmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKysgICAgICAgICAgICAgICAgYXJndlswXSA9IDo6 c3RyZHVwKHRtcC5jb25zdERhdGEoKSk7CisrICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAg ICAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKFFGaWxlOjplbmNvZGVOYW1lKHByb2dyYW0pKTsK KyAgICAgICAgICAgICB9CistICAgICAgICAgICAgaWYgKHRtcC5pc0VtcHR5KCkpCistICAgICAg ICAgICAgICAgIHRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKHByb2dyYW0pOworLSAgICAgICAgICAg IGFyZ3ZbMF0gPSB0bXAuZGF0YSgpOworIAorICAgICAgICAgICAgIGlmIChlbnZwKQorICAgICAg ICAgICAgICAgICBxdF9zYWZlX2V4ZWN2ZShhcmd2WzBdLCBhcmd2LCBlbnZwKTsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3Bw IGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRlbW1vZGVsLmNwcAor aW5kZXggM2E3OWM1MDJhZi4uOTk3YTYzNGU3NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29y ZWxpYi9pdGVtbW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Y29yZWxpYi9pdGVtbW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAKK0BAIC0zMTk2LDkgKzMx OTYsOCBAQCBib29sIFFBYnN0cmFjdEl0ZW1Nb2RlbDo6YmVnaW5Nb3ZlQ29sdW1ucyhjb25zdCBR TW9kZWxJbmRleCAmc291cmNlUGFyZW50LCBpbnQgcworICAgICBkZXN0aW5hdGlvbkNoYW5nZS5u ZWVkc0FkanVzdCA9IGRlc3RpbmF0aW9uUGFyZW50LmlzVmFsaWQoKSAmJiBkZXN0aW5hdGlvblBh cmVudC5yb3coKSA+PSBzb3VyY2VMYXN0ICYmIGRlc3RpbmF0aW9uUGFyZW50LnBhcmVudCgpID09 IHNvdXJjZVBhcmVudDsKKyAgICAgZC0+Y2hhbmdlcy5wdXNoKGRlc3RpbmF0aW9uQ2hhbmdlKTsK KyAKKy0gICAgZC0+aXRlbXNBYm91dFRvQmVNb3ZlZChzb3VyY2VQYXJlbnQsIHNvdXJjZUZpcnN0 LCBzb3VyY2VMYXN0LCBkZXN0aW5hdGlvblBhcmVudCwgZGVzdGluYXRpb25DaGlsZCwgUXQ6Okhv cml6b250YWwpOworLQorICAgICBlbWl0IGNvbHVtbnNBYm91dFRvQmVNb3ZlZChzb3VyY2VQYXJl bnQsIHNvdXJjZUZpcnN0LCBzb3VyY2VMYXN0LCBkZXN0aW5hdGlvblBhcmVudCwgZGVzdGluYXRp b25DaGlsZCwgUVByaXZhdGVTaWduYWwoKSk7CisrICAgIGQtPml0ZW1zQWJvdXRUb0JlTW92ZWQo c291cmNlUGFyZW50LCBzb3VyY2VGaXJzdCwgc291cmNlTGFzdCwgZGVzdGluYXRpb25QYXJlbnQs IGRlc3RpbmF0aW9uQ2hpbGQsIFF0OjpIb3Jpem9udGFsKTsKKyAgICAgcmV0dXJuIHRydWU7Cisg fQorIAorQEAgLTMyMzEsNyArMzIzMCw2IEBAIHZvaWQgUUFic3RyYWN0SXRlbU1vZGVsOjplbmRN b3ZlQ29sdW1ucygpCisgICAgICAgYWRqdXN0ZWRTb3VyY2UgPSBjcmVhdGVJbmRleChhZGp1c3Rl ZFNvdXJjZS5yb3coKSwgYWRqdXN0ZWRTb3VyY2UuY29sdW1uKCkgKyBudW1Nb3ZlZCwgYWRqdXN0 ZWRTb3VyY2UuaW50ZXJuYWxQb2ludGVyKCkpOworIAorICAgICBkLT5pdGVtc01vdmVkKGFkanVz dGVkU291cmNlLCByZW1vdmVDaGFuZ2UuZmlyc3QsIHJlbW92ZUNoYW5nZS5sYXN0LCBhZGp1c3Rl ZERlc3RpbmF0aW9uLCBpbnNlcnRDaGFuZ2UuZmlyc3QsIFF0OjpIb3Jpem9udGFsKTsKKy0KKyAg ICAgZW1pdCBjb2x1bW5zTW92ZWQoYWRqdXN0ZWRTb3VyY2UsIHJlbW92ZUNoYW5nZS5maXJzdCwg cmVtb3ZlQ2hhbmdlLmxhc3QsIGFkanVzdGVkRGVzdGluYXRpb24sIGluc2VydENoYW5nZS5maXJz dCwgUVByaXZhdGVTaWduYWwoKSk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29y ZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9kZWwuY3BwCitpbmRleCBkYzYzNzlk OWZiLi5jNWUyODdlZTg0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2Rl bHMvcXNvcnRmaWx0ZXJwcm94eW1vZGVsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0 ZW1tb2RlbHMvcXNvcnRmaWx0ZXJwcm94eW1vZGVsLmNwcAorQEAgLTkzOSw4ICs5MzksOSBAQCB2 b2lkIFFTb3J0RmlsdGVyUHJveHlNb2RlbFByaXZhdGU6Omluc2VydF9zb3VyY2VfaXRlbXMoCisg ICAgICAgICAgICAgICAgIHEtPmJlZ2luSW5zZXJ0Q29sdW1ucyhwcm94eV9wYXJlbnQsIHByb3h5 X3N0YXJ0LCBwcm94eV9lbmQpOworICAgICAgICAgfQorIAorLSAgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBzb3VyY2VfaXRlbXMuc2l6ZSgpOyArK2kpCistICAgICAgICAgICAgcHJveHlfdG9f c291cmNlLmluc2VydChwcm94eV9zdGFydCArIGksIHNvdXJjZV9pdGVtcy5hdChpKSk7CisrICAg ICAgICAvLyBUT0RPOiB1c2UgdGhlIHJhbmdlIFFMaXN0OjppbnNlcnQoKSBvdmVybG9hZCBvbmNl IGl0IGlzIGltcGxlbWVudGVkIChRVEJVRy01ODYzMykuCisrICAgICAgICBwcm94eV90b19zb3Vy Y2UuaW5zZXJ0KHByb3h5X3N0YXJ0LCBzb3VyY2VfaXRlbXMuc2l6ZSgpLCAwKTsKKysgICAgICAg IHN0ZDo6Y29weShzb3VyY2VfaXRlbXMuY2JlZ2luKCksIHNvdXJjZV9pdGVtcy5jZW5kKCksIHBy b3h5X3RvX3NvdXJjZS5iZWdpbigpICsgcHJveHlfc3RhcnQpOworIAorICAgICAgICAgYnVpbGRf c291cmNlX3RvX3Byb3h5X21hcHBpbmcocHJveHlfdG9fc291cmNlLCBzb3VyY2VfdG9fcHJveHkp OworIAorQEAgLTMxMjMsOCArMzEyNCw5IEBAIGJvb2wgUVNvcnRGaWx0ZXJQcm94eU1vZGVsOjpm aWx0ZXJBY2NlcHRzUm93KGludCBzb3VyY2Vfcm93LCBjb25zdCBRTW9kZWxJbmRleCAmCisgCisg ICAgIGlmIChkLT5maWx0ZXJfZGF0YS5pc0VtcHR5KCkpCisgICAgICAgICByZXR1cm4gdHJ1ZTsK KysKKysgICAgaW50IGNvbHVtbl9jb3VudCA9IGQtPm1vZGVsLT5jb2x1bW5Db3VudChzb3VyY2Vf cGFyZW50KTsKKyAgICAgaWYgKGQtPmZpbHRlcl9jb2x1bW4gPT0gLTEpIHsKKy0gICAgICAgIGlu dCBjb2x1bW5fY291bnQgPSBkLT5tb2RlbC0+Y29sdW1uQ291bnQoc291cmNlX3BhcmVudCk7Cisg ICAgICAgICBmb3IgKGludCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBjb2x1bW5fY291bnQ7ICsrY29s dW1uKSB7CisgICAgICAgICAgICAgUU1vZGVsSW5kZXggc291cmNlX2luZGV4ID0gZC0+bW9kZWwt PmluZGV4KHNvdXJjZV9yb3csIGNvbHVtbiwgc291cmNlX3BhcmVudCk7CisgICAgICAgICAgICAg UVN0cmluZyBrZXkgPSBkLT5tb2RlbC0+ZGF0YShzb3VyY2VfaW5kZXgsIGQtPmZpbHRlcl9yb2xl KS50b1N0cmluZygpOworQEAgLTMxMzMsOSArMzEzNSwxMCBAQCBib29sIFFTb3J0RmlsdGVyUHJv eHlNb2RlbDo6ZmlsdGVyQWNjZXB0c1JvdyhpbnQgc291cmNlX3JvdywgY29uc3QgUU1vZGVsSW5k ZXggJgorICAgICAgICAgfQorICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CistICAgIFFN b2RlbEluZGV4IHNvdXJjZV9pbmRleCA9IGQtPm1vZGVsLT5pbmRleChzb3VyY2Vfcm93LCBkLT5m aWx0ZXJfY29sdW1uLCBzb3VyY2VfcGFyZW50KTsKKy0gICAgaWYgKCFzb3VyY2VfaW5kZXguaXNW YWxpZCgpKSAvLyB0aGUgY29sdW1uIG1heSBub3QgZXhpc3QKKysKKysgICAgaWYgKGQtPmZpbHRl cl9jb2x1bW4gPj0gY29sdW1uX2NvdW50KSAvLyB0aGUgY29sdW1uIG1heSBub3QgZXhpc3QKKyAg ICAgICAgIHJldHVybiB0cnVlOworKyAgICBRTW9kZWxJbmRleCBzb3VyY2VfaW5kZXggPSBkLT5t b2RlbC0+aW5kZXgoc291cmNlX3JvdywgZC0+ZmlsdGVyX2NvbHVtbiwgc291cmNlX3BhcmVudCk7 CisgICAgIFFTdHJpbmcga2V5ID0gZC0+bW9kZWwtPmRhdGEoc291cmNlX2luZGV4LCBkLT5maWx0 ZXJfcm9sZSkudG9TdHJpbmcoKTsKKyAgICAgcmV0dXJuIGQtPmZpbHRlcl9kYXRhLmhhc01hdGNo KGtleSk7CisgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVh cHBsaWNhdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBwbGljYXRp b24uY3BwCitpbmRleCBjYTI4NjRkZjgzLi4xMzJiMmVhZTUyIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcAorQEAgLTExNTcsNyArMTE1Nyw3 IEBAIHN0YXRpYyBib29sIGRvTm90aWZ5KFFPYmplY3QgKnJlY2VpdmVyLCBRRXZlbnQgKmV2ZW50 KQorIGJvb2wgUUNvcmVBcHBsaWNhdGlvblByaXZhdGU6OnNlbmRUaHJvdWdoQXBwbGljYXRpb25F dmVudEZpbHRlcnMoUU9iamVjdCAqcmVjZWl2ZXIsIFFFdmVudCAqZXZlbnQpCisgeworICAgICAv LyBXZSBjYW4ndCBhY2Nlc3MgdGhlIGFwcGxpY2F0aW9uIGV2ZW50IGZpbHRlcnMgb3V0c2lkZSBv ZiB0aGUgbWFpbiB0aHJlYWQgKHJhY2UgY29uZGl0aW9ucykKKy0gICAgUV9BU1NFUlQocmVjZWl2 ZXItPmRfZnVuYygpLT50aHJlYWREYXRhLmxvYWRSZWxheGVkKCktPnRocmVhZC5sb2FkQWNxdWly ZSgpID09IG1haW5UaHJlYWQoKSk7CisrICAgIFFfQVNTRVJUKHJlY2VpdmVyLT5kX2Z1bmMoKS0+ dGhyZWFkRGF0YS5sb2FkQWNxdWlyZSgpLT50aHJlYWQubG9hZFJlbGF4ZWQoKSA9PSBtYWluVGhy ZWFkKCkpOworIAorICAgICBpZiAoZXh0cmFEYXRhKSB7CisgICAgICAgICAvLyBhcHBsaWNhdGlv biBldmVudCBmaWx0ZXJzIGFyZSBvbmx5IGNhbGxlZCBmb3Igb2JqZWN0cyBpbiB0aGUgR1VJIHRo cmVhZAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdC5jcHAg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3QuY3BwCitpbmRleCAxZWI3OTEzOGQ5 Li4zNmNkNzgwZWUxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2Jq ZWN0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcAorQEAg LTEwMTAsNyArMTAxMCw3IEBAIFFPYmplY3Q6On5RT2JqZWN0KCkKKyAgICAgICAgIGVtaXQgZGVz dHJveWVkKHRoaXMpOworICAgICB9CisgCistICAgIGlmIChkLT5kZWNsYXJhdGl2ZURhdGEpIHsK KysgICAgaWYgKCFkLT5pc0RlbGV0aW5nQ2hpbGRyZW4gJiYgZC0+ZGVjbGFyYXRpdmVEYXRhKSB7 CisgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8UUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhSW1wbCo+ KGQtPmRlY2xhcmF0aXZlRGF0YSktPm93bmVkQnlRbWwxKSB7CisgICAgICAgICAgICAgaWYgKFFB YnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6ZGVzdHJveWVkX3FtbDEpCisgICAgICAgICAgICAgICAg IFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6ZGVzdHJveWVkX3FtbDEoZC0+ZGVjbGFyYXRpdmVE YXRhLCB0aGlzKTsKK0BAIC0xNTgwLDcgKzE1ODAsNyBAQCB2b2lkIFFPYmplY3Q6Om1vdmVUb1Ro cmVhZChRVGhyZWFkICp0YXJnZXRUaHJlYWQpCisgCisgICAgIFFUaHJlYWREYXRhICpjdXJyZW50 RGF0YSA9IFFUaHJlYWREYXRhOjpjdXJyZW50KCk7CisgICAgIFFUaHJlYWREYXRhICp0YXJnZXRE YXRhID0gdGFyZ2V0VGhyZWFkID8gUVRocmVhZERhdGE6OmdldDIodGFyZ2V0VGhyZWFkKSA6IG51 bGxwdHI7CistICAgIFFUaHJlYWREYXRhICp0aGlzVGhyZWFkRGF0YSA9IGQtPnRocmVhZERhdGEu bG9hZFJlbGF4ZWQoKTsKKysgICAgUVRocmVhZERhdGEgKnRoaXNUaHJlYWREYXRhID0gZC0+dGhy ZWFkRGF0YS5sb2FkQWNxdWlyZSgpOworICAgICBpZiAoIXRoaXNUaHJlYWREYXRhLT50aHJlYWQu bG9hZEFjcXVpcmUoKSAmJiBjdXJyZW50RGF0YSA9PSB0YXJnZXREYXRhKSB7CisgICAgICAgICAv LyBvbmUgZXhjZXB0aW9uIHRvIHRoZSBydWxlOiB3ZSBhbGxvdyBtb3Zpbmcgb2JqZWN0cyB3aXRo IG5vIHRocmVhZCBhZmZpbml0eSB0byB0aGUgY3VycmVudCB0aHJlYWQKKyAgICAgICAgIGN1cnJl bnREYXRhID0gZC0+dGhyZWFkRGF0YTsKK0BAIC0yNjIwLDcgKzI2MjAsNyBAQCBpbnQgUU9iamVj dDo6cmVjZWl2ZXJzKGNvbnN0IGNoYXIgKnNpZ25hbCkgY29uc3QKKyAgICAgICAgIGlmICghZC0+ aXNTaWduYWxDb25uZWN0ZWQoc2lnbmFsX2luZGV4KSkKKyAgICAgICAgICAgICByZXR1cm4gcmVj ZWl2ZXJzOworIAorLSAgICAgICAgaWYgKGQtPmRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3RE ZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycykgeworKyAgICAgICAgaWYgKCFkLT5pc0RlbGV0aW5n Q2hpbGRyZW4gJiYgZC0+ZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0 YTo6cmVjZWl2ZXJzKSB7CisgICAgICAgICAgICAgcmVjZWl2ZXJzICs9IFFBYnN0cmFjdERlY2xh cmF0aXZlRGF0YTo6cmVjZWl2ZXJzKGQtPmRlY2xhcmF0aXZlRGF0YSwgdGhpcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ln bmFsX2luZGV4KTsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIv a2VybmVsL3FvYmplY3RfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3Au aAoraW5kZXggMGI4MjdhNTJjYS4uMTNmZmI4ODk5OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29yZWxpYi9rZXJuZWwvcW9iamVjdF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJu ZWwvcW9iamVjdF9wLmgKK0BAIC00NDQsNyArNDQ0LDcgQEAgaW5saW5lIHZvaWQgUU9iamVjdFBy aXZhdGU6OmNoZWNrRm9ySW5jb21wYXRpYmxlTGlicmFyeVZlcnNpb24oaW50IHZlcnNpb24pIGNv bnMKKyAKKyBpbmxpbmUgYm9vbCBRT2JqZWN0UHJpdmF0ZTo6aXNEZWNsYXJhdGl2ZVNpZ25hbENv bm5lY3RlZCh1aW50IHNpZ25hbF9pbmRleCkgY29uc3QKKyB7CistICAgIHJldHVybiBkZWNsYXJh dGl2ZURhdGEgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjppc1NpZ25hbENvbm5lY3RlZAor KyAgICByZXR1cm4gIWlzRGVsZXRpbmdDaGlsZHJlbiAmJiBkZWNsYXJhdGl2ZURhdGEgJiYgUUFi c3RyYWN0RGVjbGFyYXRpdmVEYXRhOjppc1NpZ25hbENvbm5lY3RlZAorICAgICAgICAgICAgICYm IFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0ZWQoZGVjbGFyYXRpdmVE YXRhLCBxX2Z1bmMoKSwgc2lnbmFsX2luZGV4KTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv a2VybmVsL3F0cmFuc2xhdG9yLmNwcAoraW5kZXggMjgxMmZmYjdlYS4uYmMwMTc3YzVlYyAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3IuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3F0cmFuc2xhdG9yLmNwcAorQEAgLTkwMiw3ICs5 MDIsNyBAQCBzdGF0aWMgUVN0cmluZyBnZXRNZXNzYWdlKGNvbnN0IHVjaGFyICptLCBjb25zdCB1 Y2hhciAqZW5kLCBjb25zdCBjaGFyICpjb250ZXh0LAorICAgICAgICAgICAgIGdvdG8gZW5kOwor ICAgICAgICAgY2FzZSBUYWdfVHJhbnNsYXRpb246IHsKKyAgICAgICAgICAgICBpbnQgbGVuID0g cmVhZDMyKG0pOworLSAgICAgICAgICAgIGlmIChsZW4gJSAxKQorKyAgICAgICAgICAgIGlmIChs ZW4gJiAxKQorICAgICAgICAgICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgICAgICAgICAg IG0gKz0gNDsKKyAgICAgICAgICAgICBpZiAoIW51bWVydXMtLSkgeworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAgYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwCitpbmRleCA5ZGUyMmNlZjMzLi5m Zjg2OGEzMjY4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWlt ZWRhdGFiYXNlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRh dGFiYXNlLmNwcAorQEAgLTM4OSwyMCArMzg5LDIzIEBAIFFNaW1lVHlwZSBRTWltZURhdGFiYXNl UHJpdmF0ZTo6bWltZVR5cGVGb3JGaWxlTmFtZUFuZERhdGEoY29uc3QgUVN0cmluZyAmZmlsZU5h CisgICAgICAgICAvLyBEaXNhbWJpZ3VhdGUgY29uZmxpY3RpbmcgZXh0ZW5zaW9ucyAoaWYgbWFn aWMgbWF0Y2hpbmcgZm91bmQgc29tZXRoaW5nKQorICAgICAgICAgaWYgKGNhbmRpZGF0ZUJ5RGF0 YS5pc1ZhbGlkKCkgJiYgbWFnaWNBY2N1cmFjeSA+IDApIHsKKyAgICAgICAgICAgICBjb25zdCBR U3RyaW5nIHNuaWZmZWRNaW1lID0gY2FuZGlkYXRlQnlEYXRhLm5hbWUoKTsKKy0gICAgICAgICAg ICAvLyBJZiB0aGUgc25pZmZlZE1pbWUgbWF0Y2hlcyBhIGdsb2IgbWF0Y2gsIHVzZSBpdAorKyAg ICAgICAgICAgIC8vIElmIHRoZSBzbmlmZmVkTWltZSBtYXRjaGVzIGEgaGlnaGVzdC13ZWlnaHQg Z2xvYiBtYXRjaCwgdXNlIGl0CisgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXNCeU5hbWUubV9t YXRjaGluZ01pbWVUeXBlcy5jb250YWlucyhzbmlmZmVkTWltZSkpIHsKKyAgICAgICAgICAgICAg ICAgKmFjY3VyYWN5UHRyID0gMTAwOworICAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRl QnlEYXRhOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBmb3IgKGNvbnN0IFFTdHJpbmcg Jm0gOiBxQXNDb25zdChjYW5kaWRhdGVzQnlOYW1lLm1fbWF0Y2hpbmdNaW1lVHlwZXMpKSB7Cisr ICAgICAgICAgICAgZm9yIChjb25zdCBRU3RyaW5nICZtIDogcUFzQ29uc3QoY2FuZGlkYXRlc0J5 TmFtZS5tX2FsbE1hdGNoaW5nTWltZVR5cGVzKSkgeworICAgICAgICAgICAgICAgICBpZiAoaW5o ZXJpdHMobSwgc25pZmZlZE1pbWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZl IG1hZ2ljICsgcGF0dGVybiBwb2ludGluZyB0byB0aGlzLCBzbyBpdCdzIGEgcHJldHR5IGdvb2Qg bWF0Y2gKKyAgICAgICAgICAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IDEwMDsKKyAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBtaW1lVHlwZUZvck5hbWUobSk7CisgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgKmFjY3VyYWN5UHRyID0gbWFnaWNBY2N1 cmFjeTsKKy0gICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlQnlEYXRhOworKyAgICAgICAgICAg IGlmIChjYW5kaWRhdGVzQnlOYW1lLm1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKSB7 CisrICAgICAgICAgICAgICAgIC8vIE5vIGdsb2IsIHVzZSBtYWdpYworKyAgICAgICAgICAgICAg ICAqYWNjdXJhY3lQdHIgPSBtYWdpY0FjY3VyYWN5OworKyAgICAgICAgICAgICAgICByZXR1cm4g Y2FuZGlkYXRlQnlEYXRhOworKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorIAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVy bi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBhdHRlcm4uY3Bw CitpbmRleCBhODExMTJkMjI3Li5mYThmNGM1NDVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9j b3JlbGliL21pbWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcAorKysrIGIvcXRiYXNlL3NyYy9j b3JlbGliL21pbWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcAorQEAgLTgzLDcgKzgzLDEwIEBA IHZvaWQgUU1pbWVHbG9iTWF0Y2hSZXN1bHQ6OmFkZE1hdGNoKGNvbnN0IFFTdHJpbmcgJm1pbWVU eXBlLCBpbnQgd2VpZ2h0LCBjb25zdCBRCisgICAgIH0KKyAgICAgaWYgKCFtX21hdGNoaW5nTWlt ZVR5cGVzLmNvbnRhaW5zKG1pbWVUeXBlKSkgeworICAgICAgICAgbV9tYXRjaGluZ01pbWVUeXBl cy5hcHBlbmQobWltZVR5cGUpOworLSAgICAgICAgbV9hbGxNYXRjaGluZ01pbWVUeXBlcy5hcHBl bmQobWltZVR5cGUpOworKyAgICAgICAgaWYgKHJlcGxhY2UpCisrICAgICAgICAgICAgbV9hbGxN YXRjaGluZ01pbWVUeXBlcy5wcmVwZW5kKG1pbWVUeXBlKTsgLy8gaGlnaGVzdC13ZWlnaHQgZmly c3QKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBtX2FsbE1hdGNoaW5nTWltZVR5cGVzLmFw cGVuZChtaW1lVHlwZSk7CisgICAgICAgICBtX2tub3duU3VmZml4TGVuZ3RoID0ga25vd25TdWZm aXhMZW5ndGg7CisgICAgIH0KKyB9CitAQCAtOTQsNyArOTcsNyBAQCBRTWltZUdsb2JQYXR0ZXJu OjpQYXR0ZXJuVHlwZSBRTWltZUdsb2JQYXR0ZXJuOjpkZXRlY3RQYXR0ZXJuVHlwZShjb25zdCBR U3RyaW5nCisgICAgIGlmICghcGF0dGVybkxlbmd0aCkKKyAgICAgICAgIHJldHVybiBPdGhlclBh dHRlcm47CisgCistICAgIGNvbnN0IGJvb2wgc3RhckNvdW50ID0gcGF0dGVybi5jb3VudChRTGF0 aW4xQ2hhcignKicpKSA9PSAxOworKyAgICBjb25zdCBpbnQgc3RhckNvdW50ID0gcGF0dGVybi5j b3VudChRTGF0aW4xQ2hhcignKicpKTsKKyAgICAgY29uc3QgYm9vbCBoYXNTcXVhcmVCcmFja2V0 ID0gcGF0dGVybi5pbmRleE9mKFFMYXRpbjFDaGFyKCdbJykpICE9IC0xOworICAgICBjb25zdCBi b29sIGhhc1F1ZXN0aW9uTWFyayA9IHBhdHRlcm4uaW5kZXhPZihRTGF0aW4xQ2hhcignPycpKSAh PSAtMTsKKyAKK0BAIC0xMDYsMTAgKzEwOSwxMCBAQCBRTWltZUdsb2JQYXR0ZXJuOjpQYXR0ZXJu VHlwZSBRTWltZUdsb2JQYXR0ZXJuOjpkZXRlY3RQYXR0ZXJuVHlwZShjb25zdCBRU3RyaW5nCisg ICAgICAgICAgICAgLy8gUGF0dGVybnMgbGlrZSAiUkVBRE1FKiIgKHdlbGwgdGhpcyBpcyBjdXJy ZW50bHkgdGhlIG9ubHkgb25lIGxpa2UgdGhhdC4uLikKKyAgICAgICAgICAgICBpZiAocGF0dGVy bi5hdChwYXR0ZXJuTGVuZ3RoIC0gMSkgPT0gUUxhdGluMUNoYXIoJyonKSkKKyAgICAgICAgICAg ICAgICAgcmV0dXJuIFByZWZpeFBhdHRlcm47CistICAgICAgICB9CistICAgICAgICAvLyBOYW1l cyB3aXRob3V0IGFueSB3aWxkY2FyZHMgbGlrZSAiUkVBRE1FIgorLSAgICAgICAgaWYgKHN0YXJD b3VudCA9PSAwKQorKyAgICAgICAgfSBlbHNlIGlmIChzdGFyQ291bnQgPT0gMCkgeworKyAgICAg ICAgICAgIC8vIE5hbWVzIHdpdGhvdXQgYW55IHdpbGRjYXJkcyBsaWtlICJSRUFETUUiCisgICAg ICAgICAgICAgcmV0dXJuIExpdGVyYWxQYXR0ZXJuOworKyAgICAgICAgfQorICAgICB9CisgCisg ICAgIGlmIChwYXR0ZXJuID09IFFMYXRpbjFTdHJpbmcoIlswLTldWzAtOV1bMC05XS52ZHIiKSkK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIu Y3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3ZpZGVyLmNwcAoraW5k ZXggMjU4ZGRkZjhjYi4uNDY0MmQwZjJkMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxp Yi9taW1ldHlwZXMvcW1pbWVwcm92aWRlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9t aW1ldHlwZXMvcW1pbWVwcm92aWRlci5jcHAKK0BAIC0yNDQsMTUgKzI0NCwxOCBAQCB2b2lkIFFN aW1lQmluYXJ5UHJvdmlkZXI6OmFkZEZpbGVOYW1lTWF0Y2hlcyhjb25zdCBRU3RyaW5nICZmaWxl TmFtZSwgUU1pbWVHbG9iTQorICAgICBjb25zdCBRU3RyaW5nIGxvd2VyRmlsZU5hbWUgPSBmaWxl TmFtZS50b0xvd2VyKCk7CisgICAgIC8vIENoZWNrIGxpdGVyYWxzIChlLmcuICJNYWtlZmlsZSIp CisgICAgIG1hdGNoR2xvYkxpc3QocmVzdWx0LCBtX2NhY2hlRmlsZSwgbV9jYWNoZUZpbGUtPmdl dFVpbnQzMihQb3NMaXRlcmFsTGlzdE9mZnNldCksIGZpbGVOYW1lKTsKKy0gICAgLy8gQ2hlY2sg Y29tcGxleCBnbG9icyAoZS5nLiAiY2FsbGdyaW5kLm91dFswLTldKiIpCistICAgIG1hdGNoR2xv Ykxpc3QocmVzdWx0LCBtX2NhY2hlRmlsZSwgbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NHbG9i TGlzdE9mZnNldCksIGZpbGVOYW1lKTsKKyAgICAgLy8gQ2hlY2sgdGhlIHZlcnkgY29tbW9uICou dHh0IGNhc2VzIHdpdGggdGhlIHN1ZmZpeCB0cmVlCistICAgIGNvbnN0IGludCByZXZlcnNlU3Vm Zml4VHJlZU9mZnNldCA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIoUG9zUmV2ZXJzZVN1ZmZpeFRy ZWVPZmZzZXQpOworLSAgICBjb25zdCBpbnQgbnVtUm9vdHMgPSBtX2NhY2hlRmlsZS0+Z2V0VWlu dDMyKHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKy0gICAgY29uc3QgaW50IGZpcnN0Um9vdE9m ZnNldCA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgKyA0 KTsKKy0gICAgbWF0Y2hTdWZmaXhUcmVlKHJlc3VsdCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBm aXJzdFJvb3RPZmZzZXQsIGxvd2VyRmlsZU5hbWUsIGxvd2VyRmlsZU5hbWUubGVuZ3RoKCkgLSAx LCBmYWxzZSk7CisrICAgIGlmIChyZXN1bHQubV9tYXRjaGluZ01pbWVUeXBlcy5pc0VtcHR5KCkp IHsKKysgICAgICAgIGNvbnN0IGludCByZXZlcnNlU3VmZml4VHJlZU9mZnNldCA9IG1fY2FjaGVG aWxlLT5nZXRVaW50MzIoUG9zUmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQpOworKyAgICAgICAgY29u c3QgaW50IG51bVJvb3RzID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJl ZU9mZnNldCk7CisrICAgICAgICBjb25zdCBpbnQgZmlyc3RSb290T2Zmc2V0ID0gbV9jYWNoZUZp bGUtPmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCArIDQpOworKyAgICAgICAgbWF0 Y2hTdWZmaXhUcmVlKHJlc3VsdCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZz ZXQsIGxvd2VyRmlsZU5hbWUsIGxvd2VyRmlsZU5hbWUubGVuZ3RoKCkgLSAxLCBmYWxzZSk7Cisr ICAgICAgICBpZiAocmVzdWx0Lm1fbWF0Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKQorKyAgICAg ICAgICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmly c3RSb290T2Zmc2V0LCBmaWxlTmFtZSwgZmlsZU5hbWUubGVuZ3RoKCkgLSAxLCB0cnVlKTsKKysg ICAgfQorKyAgICAvLyBDaGVjayBjb21wbGV4IGdsb2JzIChlLmcuICJjYWxsZ3JpbmQub3V0WzAt OV0qIiBvciAiUkVBRE1FKiIpCisgICAgIGlmIChyZXN1bHQubV9tYXRjaGluZ01pbWVUeXBlcy5p c0VtcHR5KCkpCistICAgICAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBtX2NhY2hlRmlsZSwg bnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgZmlsZU5hbWUsIGZpbGVOYW1lLmxlbmd0aCgpIC0g MSwgdHJ1ZSk7CisrICAgICAgICBtYXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNoZUZpbGUsIG1f Y2FjaGVGaWxlLT5nZXRVaW50MzIoUG9zR2xvYkxpc3RPZmZzZXQpLCBmaWxlTmFtZSk7CisgfQor IAorIHZvaWQgUU1pbWVCaW5hcnlQcm92aWRlcjo6bWF0Y2hHbG9iTGlzdChRTWltZUdsb2JNYXRj aFJlc3VsdCAmcmVzdWx0LCBDYWNoZUZpbGUgKmNhY2hlRmlsZSwgaW50IG9mZiwgY29uc3QgUVN0 cmluZyAmZmlsZU5hbWUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6 YXRpb24vcWpzb25wYXJzZXIuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24v cWpzb25wYXJzZXIuY3BwCitpbmRleCAxN2U2ZjExMWFiLi4yZTQwYjZjOGZiIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcWpzb25wYXJzZXIuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAKK0BAIC0z NzksMTAgKzM3OSwzMCBAQCBlcnJvcjoKKyAgICAgcmV0dXJuIFFDYm9yVmFsdWUoKTsKKyB9Cisg CisrLy8gV2UgbmVlZCB0byByZXRhaW4gdGhlIF9sYXN0XyB2YWx1ZSBmb3IgYW55IGR1cGxpY2F0 ZSBrZXlzIGFuZCB3ZSBuZWVkIHRvIGRlcmVmIGNvbnRhaW5lcnMuCisrLy8gVGhlcmVmb3JlIHRo ZSBtYW51YWwgaW1wbGVtZW50YXRpb24gb2Ygc3RkOjp1bmlxdWUoKS4KKyt0ZW1wbGF0ZTx0eXBl bmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZSwgdHlwZW5hbWUgQXNzaWduPgorK3N0YXRp YyBJdGVyYXRvciBjdXN0b21Bc3NpZ25pbmdVbmlxdWVMYXN0KEl0ZXJhdG9yIGZpcnN0LCBJdGVy YXRvciBsYXN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv bXBhcmUgY29tcGFyZSwgQXNzaWduIGFzc2lnbikKKyt7CisrICAgIGZpcnN0ID0gc3RkOjphZGph Y2VudF9maW5kKGZpcnN0LCBsYXN0LCBjb21wYXJlKTsKKysgICAgaWYgKGZpcnN0ID09IGxhc3Qp CisrICAgICAgICByZXR1cm4gbGFzdDsKKysKKysgICAgSXRlcmF0b3IgcmVzdWx0ID0gZmlyc3Q7 CisrICAgIHdoaWxlICgrK2ZpcnN0ICE9IGxhc3QpIHsKKysgICAgICAgIGlmICghY29tcGFyZSgq cmVzdWx0LCAqZmlyc3QpKQorKyAgICAgICAgICAgICsrcmVzdWx0OworKyAgICAgICAgaWYgKHJl c3VsdCAhPSBmaXJzdCkKKysgICAgICAgICAgICBhc3NpZ24oKnJlc3VsdCwgKmZpcnN0KTsKKysg ICAgfQorKworKyAgICByZXR1cm4gKytyZXN1bHQ7CisrfQorKworIHN0YXRpYyB2b2lkIHNvcnRD b250YWluZXIoUUNib3JDb250YWluZXJQcml2YXRlICpjb250YWluZXIpCisgeworICAgICB1c2lu ZyBGb3J3YXJkID0gUUpzb25Qcml2YXRlOjpLZXlJdGVyYXRvcjsKKy0gICAgdXNpbmcgUmV2ZXJz ZSA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxGb3J3YXJkPjsKKyAgICAgdXNpbmcgVmFsdWUgPSBG b3J3YXJkOjp2YWx1ZV90eXBlOworIAorICAgICBhdXRvIGNvbXBhcmUgPSBbY29udGFpbmVyXShj b25zdCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpCitAQCAtNDIwLDE3ICs0NDAsMzEgQEAgc3Rh dGljIHZvaWQgc29ydENvbnRhaW5lcihRQ2JvckNvbnRhaW5lclByaXZhdGUgKmNvbnRhaW5lcikK KyAgICAgICAgIH0KKyAgICAgfTsKKyAKKy0gICAgc3RkOjpzb3J0KEZvcndhcmQoY29udGFpbmVy LT5lbGVtZW50cy5iZWdpbigpKSwgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmVuZCgpKSwK Ky0gICAgICAgICAgICAgIFsmY29tcGFyZV0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZi KSB7IHJldHVybiBjb21wYXJlKGEsIGIpIDwgMDsgfSk7CisrICAgIC8vIFRoZSBlbGVtZW50cycg Y29udGFpbmVycyBhcmUgb3duZWQgYnkgdGhlIG91dGVyIGNvbnRhaW5lciwgbm90IGJ5IHRoZSBl bGVtZW50cyB0aGVtc2VsdmVzLgorKyAgICBhdXRvIG1vdmUgPSBbXShGb3J3YXJkOjpyZWZlcmVu Y2UgdGFyZ2V0LCBGb3J3YXJkOjpyZWZlcmVuY2Ugc291cmNlKQorKyAgICB7CisrICAgICAgICBR dENib3I6OkVsZW1lbnQgJnRhcmdldFZhbHVlID0gdGFyZ2V0LnZhbHVlKCk7CisrCisrICAgICAg ICAvLyBJZiB0aGUgdGFyZ2V0IGhhcyBhIGNvbnRhaW5lciwgZGVyZWYgaXQgYmVmb3JlIG92ZXJ3 cml0aW5nLCBzbyB0aGF0IHdlIGRvbid0IGxlYWsuCisrICAgICAgICBpZiAodGFyZ2V0VmFsdWUu ZmxhZ3MgJiBRdENib3I6OkVsZW1lbnQ6OklzQ29udGFpbmVyKQorKyAgICAgICAgICAgIHRhcmdl dFZhbHVlLmNvbnRhaW5lci0+ZGVyZWYoKTsKKysKKysgICAgICAgIC8vIERvIG5vdCBtb3ZlLCBz byB0aGF0IHdlIGNhbiBjbGVhciB0aGUgdmFsdWUgYWZ0ZXJ3YXJkcy4KKysgICAgICAgIHRhcmdl dCA9IHNvdXJjZTsKKysKKysgICAgICAgIC8vIENsZWFyIHRoZSBzb3VyY2UgdmFsdWUsIHNvIHRo YXQgd2UgZG9uJ3Qgc3RvcmUgdGhlIHNhbWUgY29udGFpbmVyIHR3aWNlLgorKyAgICAgICAgc291 cmNlLnZhbHVlKCkgPSBRdENib3I6OkVsZW1lbnQoKTsKKysgICAgfTsKKysKKysgICAgc3RkOjpz dGFibGVfc29ydCgKKysgICAgICAgICAgICAgICAgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRz LmJlZ2luKCkpLCBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLAorKyAgICAgICAg ICAgICAgICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeyByZXR1 cm4gY29tcGFyZShhLCBiKSA8IDA7IH0pOworIAorLSAgICAvLyBXZSBuZWVkIHRvIHJldGFpbiB0 aGUgX2xhc3RfIHZhbHVlIGZvciBhbnkgZHVwbGljYXRlIGtleXMuIFRoZXJlZm9yZSB0aGUgcmV2 ZXJzZSBkYW5jZSBoZXJlLgorLSAgICBhdXRvIGl0ID0gc3RkOjp1bmlxdWUoUmV2ZXJzZShjb250 YWluZXItPmVsZW1lbnRzLmVuZCgpKSwgUmV2ZXJzZShjb250YWluZXItPmVsZW1lbnRzLmJlZ2lu KCkpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAm YSwgY29uc3QgVmFsdWUgJmIpIHsKKy0gICAgICAgIHJldHVybiBjb21wYXJlKGEsIGIpID09IDA7 CistICAgIH0pLmJhc2UoKS5lbGVtZW50c0l0ZXJhdG9yKCk7CisrICAgIEZvcndhcmQgcmVzdWx0 ID0gY3VzdG9tQXNzaWduaW5nVW5pcXVlTGFzdCgKKysgICAgICAgICAgICAgICAgRm9yd2FyZChj b250YWluZXItPmVsZW1lbnRzLmJlZ2luKCkpLCAgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRz LmVuZCgpKSwKKysgICAgICAgICAgICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAmYSwgY29u c3QgVmFsdWUgJmIpIHsgcmV0dXJuIGNvbXBhcmUoYSwgYikgPT0gMDsgfSwgbW92ZSk7CisgCist ICAgIC8vIFRoZSBlcmFzZSBmcm9tIGJlZ2lubmluZyBpcyBleHBlbnNpdmUgYnV0IGhvcGVmdWxs eSByYXJlLgorLSAgICBjb250YWluZXItPmVsZW1lbnRzLmVyYXNlKGNvbnRhaW5lci0+ZWxlbWVu dHMuYmVnaW4oKSwgaXQpOworKyAgICBjb250YWluZXItPmVsZW1lbnRzLmVyYXNlKHJlc3VsdC5l bGVtZW50c0l0ZXJhdG9yKCksIGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpOworIH0KKyAKKyAK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFt LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwCitp bmRleCBiMmY4NDY1NDRkLi43Y2Q0NTdiYTNhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3Jl bGliL3NlcmlhbGl6YXRpb24vcXhtbHN0cmVhbS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxp Yi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwCitAQCAtOTgwLDcgKzk4MCw3IEBAIGlubGlu ZSB1aW50IFFYbWxTdHJlYW1SZWFkZXJQcml2YXRlOjpwZWVrQ2hhcigpCisgYm9vbCBRWG1sU3Ry ZWFtUmVhZGVyUHJpdmF0ZTo6c2NhblVudGlsKGNvbnN0IGNoYXIgKnN0ciwgc2hvcnQgdG9rZW5U b0luamVjdCkKKyB7CisgICAgIGludCBwb3MgPSB0ZXh0QnVmZmVyLnNpemUoKTsKKy0gICAgaW50 IG9sZExpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOworKyAgICBjb25zdCBhdXRvIG9sZExpbmVOdW1i ZXIgPSBsaW5lTnVtYmVyOworIAorICAgICB1aW50IGM7CisgICAgIHdoaWxlICgoYyA9IGdldENo YXIoKSkgIT0gU3RyZWFtRU9GKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rl eHQvcXN0cmluZy5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcAoraW5k ZXggM2U4OGFiNDg1OS4uOGRlZWFlNDdiYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxp Yi90ZXh0L3FzdHJpbmcuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5n LmNwcAorQEAgLTEyMzEyLDcgKzEyMzEyLDcgQEAgc3RhdGljIHFzaXpldHlwZSBxTGFzdEluZGV4 T2YoSGF5c3RhY2sgaGF5c3RhY2swLCBxc2l6ZXR5cGUgZnJvbSwKKyAgICAgY29uc3QgYXV0byBu ZWVkbGUgPSBuZWVkbGUwLmRhdGEoKTsKKyAgICAgY29uc3QgYXV0byAqZW5kID0gaGF5c3RhY2s7 CisgICAgIGhheXN0YWNrICs9IGZyb207CistICAgIGNvbnN0IHN0ZDo6c2l6ZV90IHNsX21pbnVz XzEgPSBzbCAtIDE7CisrICAgIGNvbnN0IHN0ZDo6c2l6ZV90IHNsX21pbnVzXzEgPSBzbCA/IHNs IC0gMSA6IDA7CisgICAgIGNvbnN0IGF1dG8gKm4gPSBuZWVkbGUgKyBzbF9taW51c18xOworICAg ICBjb25zdCBhdXRvICpoID0gaGF5c3RhY2sgKyBzbF9taW51c18xOworICAgICBzdGQ6OnNpemVf dCBoYXNoTmVlZGxlID0gMCwgaGFzaEhheXN0YWNrID0gMDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0b3JfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGli L3RleHQvcXN0cmluZ2l0ZXJhdG9yX3AuaAoraW5kZXggMjE5NTg5YjZlNC4uMWQwYzY2Y2M3OCAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmgK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmgKK0BAIC02 MSw2ICs2MSw4IEBAIGNsYXNzIFFTdHJpbmdJdGVyYXRvcgorIHsKKyAgICAgUVN0cmluZzo6Y29u c3RfaXRlcmF0b3IgaSwgcG9zLCBlOworICAgICBRX1NUQVRJQ19BU1NFUlQoKHN0ZDo6aXNfc2Ft ZTxRU3RyaW5nOjpjb25zdF9pdGVyYXRvciwgY29uc3QgUUNoYXIgKj46OnZhbHVlKSk7CisrICAg IHN0YXRpYyBib29sIGxlc3MoY29uc3QgUUNoYXIgKmxocywgY29uc3QgUUNoYXIgKnJocykgbm9l eGNlcHQKKysgICAgeyByZXR1cm4gc3RkOjpsZXNzPFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPnt9 KGxocywgcmhzKTsgfQorIHB1YmxpYzoKKyAgICAgZXhwbGljaXQgUVN0cmluZ0l0ZXJhdG9yKFFT dHJpbmdWaWV3IHN0cmluZywgcXNpemV0eXBlIGlkeCA9IDApCisgICAgICAgICA6IGkoc3RyaW5n LmJlZ2luKCkpLAorQEAgLTk1LDcgKzk3LDggQEAgcHVibGljOgorIAorICAgICBpbmxpbmUgdm9p ZCBzZXRQb3NpdGlvbihRU3RyaW5nOjpjb25zdF9pdGVyYXRvciBwb3NpdGlvbikKKyAgICAgewor LSAgICAgICAgUV9BU1NFUlRfWChpIDw9IHBvc2l0aW9uICYmIHBvc2l0aW9uIDw9IGUsIFFfRlVO Q19JTkZPLCAicG9zaXRpb24gb3V0IG9mIGJvdW5kcyIpOworKyAgICAgICAgUV9BU1NFUlRfWCgh bGVzcyhwb3NpdGlvbiwgaSkgJiYgIWxlc3MoZSwgcG9zaXRpb24pLAorKyAgICAgICAgICAgICAg ICAgICBRX0ZVTkNfSU5GTywgInBvc2l0aW9uIG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgIHBv cyA9IHBvc2l0aW9uOworICAgICB9CisgCitAQCAtMTAzLDcgKzEwNiw3IEBAIHB1YmxpYzoKKyAK KyAgICAgaW5saW5lIGJvb2wgaGFzTmV4dCgpIGNvbnN0CisgICAgIHsKKy0gICAgICAgIHJldHVy biBwb3MgPCBlOworKyAgICAgICAgcmV0dXJuIGxlc3MocG9zLCBlKTsKKyAgICAgfQorIAorICAg ICBpbmxpbmUgdm9pZCBhZHZhbmNlKCkKK0BAIC0xMjAsMTYgKzEyMywyMCBAQCBwdWJsaWM6Cisg ICAgIHsKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzTmV4dCgpLCBRX0ZVTkNfSU5GTywgIml0ZXJh dG9yIGhhc24ndCBhIG5leHQgaXRlbSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoKHBv cysrKS0+aXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkoKHBvcysr KS0+aXNIaWdoU3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzTmV4dCgp ICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgKytwb3M7CisrICAgICAg ICB9CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHVpbnQgcGVla05leHRVbmNoZWNrZWQoKSBjb25z dAorICAgICB7CisgICAgICAgICBRX0FTU0VSVF9YKGhhc05leHQoKSwgUV9GVU5DX0lORk8sICJp dGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0ZW0iKTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElLRUxZ KHBvcy0+aXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9zLT5p c0hpZ2hTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVChsZXNzKHBvcyArIDEs IGUpICYmIHBvc1sxXS5pc0xvd1N1cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICByZXR1cm4gUUNo YXI6OnN1cnJvZ2F0ZVRvVWNzNChwb3NbMF0sIHBvc1sxXSk7CisrICAgICAgICB9CisgCisgICAg ICAgICByZXR1cm4gcG9zLT51bmljb2RlKCk7CisgICAgIH0KK0BAIC0xNTUsOCArMTYyLDEwIEBA IHB1YmxpYzoKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzTmV4dCgpLCBRX0ZVTkNfSU5GTywgIml0 ZXJhdG9yIGhhc24ndCBhIG5leHQgaXRlbSIpOworIAorICAgICAgICAgY29uc3QgUUNoYXIgY3Vy ID0gKnBvcysrOworLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoY3VyLmlzSGlnaFN1cnJvZ2F0ZSgp KSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKGN1ci5pc0hpZ2hTdXJyb2dhdGUoKSkpIHsKKysg ICAgICAgICAgICBRX0FTU0VSVChoYXNOZXh0KCkgJiYgcG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKTsK KyAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNChjdXIsICpwb3MrKyk7 CisrICAgICAgICB9CisgICAgICAgICByZXR1cm4gY3VyLnVuaWNvZGUoKTsKKyAgICAgfQorIAor QEAgLTE2Niw3ICsxNzUsNyBAQCBwdWJsaWM6CisgCisgICAgICAgICBjb25zdCBRQ2hhciB1YyA9 ICpwb3MrKzsKKyAgICAgICAgIGlmIChRX1VOTElLRUxZKHVjLmlzU3Vycm9nYXRlKCkpKSB7Cist ICAgICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzSGlnaFN1cnJvZ2F0ZSgpICYmIHBvcyA8IGUg JiYgcG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgICAgICBpZiAoUV9MSUtFTFkodWMu aXNIaWdoU3Vycm9nYXRlKCkgJiYgaGFzTmV4dCgpICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUoKSkp CisgICAgICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KHVjLCAqcG9z KyspOworICAgICAgICAgICAgIHJldHVybiBpbnZhbGlkQXM7CisgICAgICAgICB9CitAQCAtMTc4 LDcgKzE4Nyw3IEBAIHB1YmxpYzoKKyAKKyAgICAgaW5saW5lIGJvb2wgaGFzUHJldmlvdXMoKSBj b25zdAorICAgICB7CistICAgICAgICByZXR1cm4gcG9zID4gaTsKKysgICAgICAgIHJldHVybiBs ZXNzKGksIHBvcyk7CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHZvaWQgcmVjZWRlKCkKK0BAIC0x OTYsMTYgKzIwNSwyMCBAQCBwdWJsaWM6CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUX1goaGFz UHJldmlvdXMoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBwcmV2aW91cyBpdGVt Iik7CisgCistICAgICAgICBpZiAoUV9VTkxJS0VMWSgoLS1wb3MpLT5pc0xvd1N1cnJvZ2F0ZSgp KSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKCgtLXBvcyktPmlzTG93U3Vycm9nYXRlKCkpKSB7 CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzUHJldmlvdXMoKSAmJiBwb3NbLTFdLmlzSGlnaFN1 cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICAtLXBvczsKKysgICAgICAgIH0KKyAgICAgfQorIAor ICAgICBpbmxpbmUgdWludCBwZWVrUHJldmlvdXNVbmNoZWNrZWQoKSBjb25zdAorICAgICB7Cisg ICAgICAgICBRX0FTU0VSVF9YKGhhc1ByZXZpb3VzKCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3Ig aGFzbid0IGEgcHJldmlvdXMgaXRlbSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9z Wy0xXS5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKHBvc1stMV0u aXNMb3dTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVChsZXNzKGkgKyAxLCBw b3MpICYmIHBvc1stMl0uaXNIaWdoU3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIHJldHVybiBR Q2hhcjo6c3Vycm9nYXRlVG9VY3M0KHBvc1stMl0sIHBvc1stMV0pOworKyAgICAgICAgfQorICAg ICAgICAgcmV0dXJuIHBvc1stMV0udW5pY29kZSgpOworICAgICB9CisgCitAQCAtMjMwLDggKzI0 MywxMCBAQCBwdWJsaWM6CisgICAgICAgICBRX0FTU0VSVF9YKGhhc1ByZXZpb3VzKCksIFFfRlVO Q19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgcHJldmlvdXMgaXRlbSIpOworIAorICAgICAgICAg Y29uc3QgUUNoYXIgY3VyID0gKi0tcG9zOworLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoY3VyLmlz TG93U3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkoY3VyLmlzTG93U3Vycm9n YXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzUHJldmlvdXMoKSAmJiBwb3NbLTFd LmlzSGlnaFN1cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0 ZVRvVWNzNCgqLS1wb3MsIGN1cik7CisrICAgICAgICB9CisgICAgICAgICByZXR1cm4gY3VyLnVu aWNvZGUoKTsKKyAgICAgfQorIAorQEAgLTI0MSw3ICsyNTYsNyBAQCBwdWJsaWM6CisgCisgICAg ICAgICBjb25zdCBRQ2hhciB1YyA9ICotLXBvczsKKyAgICAgICAgIGlmIChRX1VOTElLRUxZKHVj LmlzU3Vycm9nYXRlKCkpKSB7CistICAgICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzTG93U3Vy cm9nYXRlKCkgJiYgcG9zID4gaSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAg ICAgICAgICBpZiAoUV9MSUtFTFkodWMuaXNMb3dTdXJyb2dhdGUoKSAmJiBoYXNQcmV2aW91cygp ICYmIHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpKQorICAgICAgICAgICAgICAgICByZXR1cm4g UUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNCgqLS1wb3MsIHVjKTsKKyAgICAgICAgICAgICByZXR1cm4g aW52YWxpZEFzOworICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90 aHJlYWQvcWZ1dGV4X3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcWZ1dGV4X3AuaAor aW5kZXggZjI4N2I3NTJkNy4uZTI5NDUzNzc4NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29y ZWxpYi90aHJlYWQvcWZ1dGV4X3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9x ZnV0ZXhfcC5oCitAQCAtNTIsNiArNTIsNyBAQAorIC8vCisgCisgI2luY2x1ZGUgPHFnbG9iYWwu aD4KKysjaW5jbHVkZSA8UXRDb3JlL3F0c2FuX2ltcGwuaD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BB Q0UKKyAKK0BAIC0xMDYsMTYgKzEwNywxMyBAQCBuYW1lc3BhY2UgUXRMaW51eEZ1dGV4IHsKKyAg ICAgaW5saW5lIGludCBfcV9mdXRleChpbnQgKmFkZHIsIGludCBvcCwgaW50IHZhbCwgcXVpbnRw dHIgdmFsMiA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICphZGRyMiA9IG51bGxw dHIsIGludCB2YWwzID0gMCkgbm9leGNlcHQKKyAgICAgeworLSAgICAgICAgLy8gQSBmdXRleCBj YWxsIGVuc3VyZXMgdG90YWwgb3JkZXJpbmcgb24gdGhlIGZ1dGV4IHdvcmRzCistICAgICAgICAv LyAoaW4gZWl0aGVyIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgY2FsbCkuIEluc3RydWN0IFRT QU4gYWNjb3JkaW5nbHksCistICAgICAgICAvLyBhcyBUU0FOIGRvZXMgbm90IHVuZGVyc3RhbmQg dGhlIGZ1dGV4KDIpIHN5c2NhbGwuCistICAgICAgICBfcV90c2FuX3JlbGVhc2UoYWRkciwgYWRk cjIpOworKyAgICAgICAgUXRUc2FuOjpmdXRleFJlbGVhc2UoYWRkciwgYWRkcjIpOworIAorICAg ICAgICAgLy8gd2UgdXNlIF9fTlJfZnV0ZXggYmVjYXVzZSBzb21lIGxpYmNzIChsaWtlIEFuZHJv aWQncyBiaW9uaWMpIGRvbid0CisgICAgICAgICAvLyBwcm92aWRlIFNZU19mdXRleCBldGMuCisg ICAgICAgICBpbnQgcmVzdWx0ID0gc3lzY2FsbChfX05SX2Z1dGV4LCBhZGRyLCBvcCB8IEZVVEVY X1BSSVZBVEVfRkxBRywgdmFsLCB2YWwyLCBhZGRyMiwgdmFsMyk7CisgCistICAgICAgICBfcV90 c2FuX2FjcXVpcmUoYWRkciwgYWRkcjIpOworKyAgICAgICAgUXRUc2FuOjpmdXRleEFjcXVpcmUo YWRkciwgYWRkcjIpOworIAorICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgfQorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmNwcCBiL3F0YmFzZS9zcmMv Y29yZWxpYi90aHJlYWQvcW11dGV4LmNwcAoraW5kZXggMzEwZDFjYjE0Zi4uNzA5NzEyMmQ4ZSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmNwcAorKysrIGIv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguY3BwCitAQCAtMTUyLDYgKzE1Miw3IEBA IHB1YmxpYzoKKyAKKyAvKiEKKyAgICAgXGVudW0gUU11dGV4OjpSZWN1cnNpb25Nb2RlCisrICAg IFxvYnNvbGV0ZSBVc2UgUVJlY3Vyc2l2ZU11dGV4IHRvIGNyZWF0ZSBhIHJlY3Vyc2l2ZSBtdXRl eC4KKyAKKyAgICAgXHZhbHVlIFJlY3Vyc2l2ZSAgSW4gdGhpcyBtb2RlLCBhIHRocmVhZCBjYW4g bG9jayB0aGUgc2FtZSBtdXRleAorICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSB0aW1l cyBhbmQgdGhlIG11dGV4IHdvbid0IGJlIHVubG9ja2VkCitAQCAtMTczLDYgKzE3NCw3IEBAIHB1 YmxpYzoKKyAKKyAvKiEKKyAgICAgQ29uc3RydWN0cyBhIG5ldyBtdXRleC4gVGhlIG11dGV4IGlz IGNyZWF0ZWQgaW4gYW4gdW5sb2NrZWQgc3RhdGUuCisrICAgIFxvYnNvbGV0ZSBVc2UgUVJlY3Vy c2l2ZU11dGV4IHRvIGNyZWF0ZSBhIHJlY3Vyc2l2ZSBtdXRleC4KKyAKKyAgICAgSWYgXGEgbW9k ZSBpcyBRTXV0ZXg6OlJlY3Vyc2l2ZSwgYSB0aHJlYWQgY2FuIGxvY2sgdGhlIHNhbWUgbXV0ZXgK KyAgICAgbXVsdGlwbGUgdGltZXMgYW5kIHRoZSBtdXRleCB3b24ndCBiZSB1bmxvY2tlZCB1bnRp bCBhCitAQCAtMTk3LDcgKzE5OSw3IEBAIFFNdXRleDo6UU11dGV4KFJlY3Vyc2lvbk1vZGUgbW9k ZSkKKyBRTXV0ZXg6On5RTXV0ZXgoKQorIHsKKyAgICAgUU11dGV4RGF0YSAqZCA9IGRfcHRyLmxv YWRSZWxheGVkKCk7CistICAgIGlmIChpc1JlY3Vyc2l2ZSgpKSB7CisrICAgIGlmIChRQmFzaWNN dXRleDo6aXNSZWN1cnNpdmUoKSkgeworICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFFSZWN1 cnNpdmVNdXRleFByaXZhdGUgKj4oZCk7CisgICAgIH0gZWxzZSBpZiAoZCkgeworICNpZm5kZWYg UVRfTElOVVhfRlVURVgKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3Ft dXRleC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguaAoraW5kZXggNzNjOWUw MDY2My4uMWJhZTU3M2EwMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQv cW11dGV4LmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmgKK0BAIC00 Miw2ICs0Miw3IEBACisgCisgI2luY2x1ZGUgPFF0Q29yZS9xZ2xvYmFsLmg+CisgI2luY2x1ZGUg PFF0Q29yZS9xYXRvbWljLmg+CisrI2luY2x1ZGUgPFF0Q29yZS9xdHNhbl9pbXBsLmg+CisgI2lu Y2x1ZGUgPG5ldz4KKyAKKyAjaWYgX19oYXNfaW5jbHVkZSg8Y2hyb25vPikKK0BAIC03NywxOSAr NzgsMzcgQEAgcHVibGljOgorIAorICAgICAvLyBCYXNpY0xvY2thYmxlIGNvbmNlcHQKKyAgICAg aW5saW5lIHZvaWQgbG9jaygpIFFUX01VVEVYX0xPQ0tfTk9FWENFUFQgeworKyAgICAgICAgUXRU c2FuOjptdXRleFByZUxvY2sodGhpcywgMHUpOworKworICAgICAgICAgaWYgKCFmYXN0VHJ5TG9j aygpKQorICAgICAgICAgICAgIGxvY2tJbnRlcm5hbCgpOworKworKyAgICAgICAgUXRUc2FuOjpt dXRleFBvc3RMb2NrKHRoaXMsIDB1LCAwKTsKKyAgICAgfQorIAorICAgICAvLyBCYXNpY0xvY2th YmxlIGNvbmNlcHQKKyAgICAgaW5saW5lIHZvaWQgdW5sb2NrKCkgbm9leGNlcHQgeworICAgICAg ICAgUV9BU1NFUlQoZF9wdHIubG9hZFJlbGF4ZWQoKSk7IC8vbXV0ZXggbXVzdCBiZSBsb2NrZWQK KysKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQcmVVbmxvY2sodGhpcywgMHUpOworKworICAgICAg ICAgaWYgKCFmYXN0VHJ5VW5sb2NrKCkpCisgICAgICAgICAgICAgdW5sb2NrSW50ZXJuYWwoKTsK KysKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQb3N0VW5sb2NrKHRoaXMsIDB1KTsKKyAgICAgfQor IAorICAgICBib29sIHRyeUxvY2soKSBub2V4Y2VwdCB7CistICAgICAgICByZXR1cm4gZmFzdFRy eUxvY2soKTsKKysgICAgICAgIHVuc2lnbmVkIHRzYW5GbGFncyA9IFF0VHNhbjo6VHJ5TG9jazsK KysgICAgICAgIFF0VHNhbjo6bXV0ZXhQcmVMb2NrKHRoaXMsIHRzYW5GbGFncyk7CisrCisrICAg ICAgICBjb25zdCBib29sIHN1Y2Nlc3MgPSBmYXN0VHJ5TG9jaygpOworKworKyAgICAgICAgaWYg KCFzdWNjZXNzKQorKyAgICAgICAgICAgIHRzYW5GbGFncyB8PSBRdFRzYW46OlRyeUxvY2tGYWls ZWQ7CisrICAgICAgICBRdFRzYW46Om11dGV4UG9zdExvY2sodGhpcywgdHNhbkZsYWdzLCAwKTsK KysKKysgICAgICAgIHJldHVybiBzdWNjZXNzOworICAgICB9CisgCisgICAgIC8vIExvY2thYmxl IGNvbmNlcHQKK0BAIC0xMzQsOCArMTUzLDE2IEBAIHB1YmxpYzoKKyAjZWxzZQorICAgICBRTXV0 ZXgoKSB7IGRfcHRyLnN0b3JlUmVsYXhlZChudWxscHRyKTsgfQorICNlbmRpZgorKyNpZiBRVF9E RVBSRUNBVEVEX1NJTkNFKDUsMTUpCisgICAgIGVudW0gUmVjdXJzaW9uTW9kZSB7IE5vblJlY3Vy c2l2ZSwgUmVjdXJzaXZlIH07CisrICAgIFFUX0RFUFJFQ0FURURfVkVSU0lPTl9YKDUsIDE1LCAi VXNlIFFSZWN1cnNpdmVNdXRleCBpbnN0ZWFkIG9mIGEgcmVjdXJzaXZlIFFNdXRleCIpCisgICAg IGV4cGxpY2l0IFFNdXRleChSZWN1cnNpb25Nb2RlIG1vZGUpOworKworKyAgICBRVF9ERVBSRUNB VEVEX1ZFUlNJT05fWCg1LCAxNSwgIlVzZSBRUmVjdXJzaXZlTXV0ZXggaW5zdGVhZCBvZiBhIHJl Y3Vyc2l2ZSBRTXV0ZXgiKQorKyAgICBib29sIGlzUmVjdXJzaXZlKCkgY29uc3Qgbm9leGNlcHQK KysgICAgeyByZXR1cm4gUUJhc2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCk7IH0KKysjZW5kaWYKKysK KyAgICAgflFNdXRleCgpOworIAorICAgICAvLyBCYXNpY0xvY2thYmxlIGNvbmNlcHQKK0BAIC0x NjYsOSArMTkzLDYgQEAgcHVibGljOgorICAgICB9CisgI2VuZGlmCisgCistICAgIGJvb2wgaXNS ZWN1cnNpdmUoKSBjb25zdCBub2V4Y2VwdAorLSAgICB7IHJldHVybiBRQmFzaWNNdXRleDo6aXNS ZWN1cnNpdmUoKTsgfQorLQorIHByaXZhdGU6CisgICAgIFFfRElTQUJMRV9DT1BZKFFNdXRleCkK KyAgICAgZnJpZW5kIGNsYXNzIFFNdXRleExvY2tlcjsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90 aHJlYWQvcXJlYWR3cml0ZWxvY2suY3BwCitpbmRleCA4YzI4NTA3ZDVhLi45ZGQ4NTAzMTE2IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5jcHAK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJlYWR3cml0ZWxvY2suY3BwCitAQCAt MTU1LDcgKzE1NSw3IEBAIFFSZWFkV3JpdGVMb2NrOjpRUmVhZFdyaXRlTG9jayhSZWN1cnNpb25N b2RlIHJlY3Vyc2lvbk1vZGUpCisgKi8KKyBRUmVhZFdyaXRlTG9jazo6flFSZWFkV3JpdGVMb2Nr KCkKKyB7CistICAgIGF1dG8gZCA9IGRfcHRyLmxvYWRSZWxheGVkKCk7CisrICAgIGF1dG8gZCA9 IGRfcHRyLmxvYWRBY3F1aXJlKCk7CisgICAgIGlmIChpc1VuY29udGVuZGVkTG9ja2VkKGQpKSB7 CisgICAgICAgICBxV2FybmluZygiUVJlYWRXcml0ZUxvY2s6IGRlc3Ryb3lpbmcgbG9ja2VkIFFS ZWFkV3JpdGVMb2NrIik7CisgICAgICAgICByZXR1cm47CitAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZv aWQgUVJlYWRXcml0ZUxvY2s6OnVubG9jaygpCisgLyohIFxpbnRlcm5hbCAgSGVscGVyIGZvciBR V2FpdENvbmRpdGlvbjo6d2FpdCAqLworIFFSZWFkV3JpdGVMb2NrOjpTdGF0ZUZvcldhaXRDb25k aXRpb24gUVJlYWRXcml0ZUxvY2s6OnN0YXRlRm9yV2FpdENvbmRpdGlvbigpIGNvbnN0Cisgewor LSAgICBRUmVhZFdyaXRlTG9ja1ByaXZhdGUgKmQgPSBkX3B0ci5sb2FkUmVsYXhlZCgpOworKyAg ICBRUmVhZFdyaXRlTG9ja1ByaXZhdGUgKmQgPSBkX3B0ci5sb2FkQWNxdWlyZSgpOworICAgICBz d2l0Y2ggKHF1aW50cHRyKGQpICYgU3RhdGVNYXNrKSB7CisgICAgIGNhc2UgU3RhdGVMb2NrZWRG b3JSZWFkOiByZXR1cm4gTG9ja2VkRm9yUmVhZDsKKyAgICAgY2FzZSBTdGF0ZUxvY2tlZEZvcldy aXRlOiByZXR1cm4gTG9ja2VkRm9yV3JpdGU7CitAQCAtNDUzLDYgKzQ1Myw3IEBAIFFSZWFkV3Jp dGVMb2NrOjpTdGF0ZUZvcldhaXRDb25kaXRpb24gUVJlYWRXcml0ZUxvY2s6OnN0YXRlRm9yV2Fp dENvbmRpdGlvbigpIGNvCisgCisgICAgIGlmICghZCkKKyAgICAgICAgIHJldHVybiBVbmxvY2tl ZDsKKysgICAgY29uc3QgYXV0byBsb2NrID0gcXRfc2NvcGVkX2xvY2soZC0+bXV0ZXgpOworICAg ICBpZiAoZC0+d3JpdGVyQ291bnQgPiAxKQorICAgICAgICAgcmV0dXJuIFJlY3Vyc2l2ZWx5TG9j a2VkOworICAgICBlbHNlIGlmIChkLT53cml0ZXJDb3VudCA9PSAxKQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3FzZW1hcGhvcmUuY3BwCitpbmRleCAxZDAxZmMxYjI4Li4zZWNkZWUzNzQ3IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNwcAorKysr IGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNwcAorQEAgLTM1NCw3ICsz NTQsMTIgQEAgdm9pZCBRU2VtYXBob3JlOjpyZWxlYXNlKGludCBuKQorICAgICAgICAgcXVpbnRw dHIgbm4gPSB1bnNpZ25lZChuKTsKKyAgICAgICAgIGlmIChmdXRleEhhc1dhaXRlckNvdW50KQor ICAgICAgICAgICAgIG5uIHw9IHF1aW50NjQobm4pIDw8IDMyOyAgICAvLyB0b2tlbiBjb3VudCBy ZXBsaWNhdGVkIGluIGhpZ2ggd29yZAorLSAgICAgICAgcXVpbnRwdHIgcHJldlZhbHVlID0gdS5m ZXRjaEFuZEFkZFJlbGVhc2Uobm4pOworKyAgICAgICAgcXVpbnRwdHIgcHJldlZhbHVlID0gdS5s b2FkUmVsYXhlZCgpOworKyAgICAgICAgcXVpbnRwdHIgbmV3VmFsdWU7CisrICAgICAgICBkbyB7 IC8vIGxvb3AganVzdCB0byBlbnN1cmUgdGhlIG9wZXJhdGlvbnMgYXJlIGRvbmUgYXRvbWljYWxs eQorKyAgICAgICAgICAgIG5ld1ZhbHVlID0gcHJldlZhbHVlICsgbm47CisrICAgICAgICAgICAg bmV3VmFsdWUgJj0gKGZ1dGV4TmVlZHNXYWtlQWxsQml0IC0gMSk7CisrICAgICAgICB9IHdoaWxl ICghdS50ZXN0QW5kU2V0UmVsZWFzZShwcmV2VmFsdWUsIG5ld1ZhbHVlLCBwcmV2VmFsdWUpKTsK KyAgICAgICAgIGlmIChmdXRleE5lZWRzV2FrZShwcmV2VmFsdWUpKSB7CisgI2lmZGVmIEZVVEVY X09QCisgICAgICAgICAgICAgaWYgKGZ1dGV4SGFzV2FpdGVyQ291bnQpIHsKK0BAIC0zNzYsNyAr MzgxLDYgQEAgdm9pZCBRU2VtYXBob3JlOjpyZWxlYXNlKGludCBuKQorICAgICAgICAgICAgICAg ICBxdWludDMyIG9wYXJnID0gMDsKKyAgICAgICAgICAgICAgICAgcXVpbnQzMiBjbXAgPSBGVVRF WF9PUF9DTVBfTkU7CisgICAgICAgICAgICAgICAgIHF1aW50MzIgY21wYXJnID0gMDsKKy0gICAg ICAgICAgICAgICAgdS5mZXRjaEFuZEFuZFJlbGVhc2UoZnV0ZXhOZWVkc1dha2VBbGxCaXQgLSAx KTsKKyAgICAgICAgICAgICAgICAgZnV0ZXhXYWtlT3AoKmZ1dGV4TG93MzIoJnUpLCBuLCBJTlRf TUFYLCAqZnV0ZXhIaWdoMzIoJnUpLCBGVVRFWF9PUChvcCwgb3BhcmcsIGNtcCwgY21wYXJnKSk7 CisgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICB9CitAQCAtMzg4LDcgKzM5 Miw2IEBAIHZvaWQgUVNlbWFwaG9yZTo6cmVsZWFzZShpbnQgbikKKyAgICAgICAgICAgICAvLyAg ICBpdHMgYWNxdWlzaXRpb24gYW55d2F5LCBzbyBpdCBoYXMgdG8gd2FpdDsKKyAgICAgICAgICAg ICAvLyAyKSBpdCBkaWQgbm90IHNlZSB0aGUgbmV3IGNvdW50ZXIgdmFsdWUsIGluIHdoaWNoIGNh c2UgaXRzCisgICAgICAgICAgICAgLy8gICAgZnV0ZXhXYWl0IHdpbGwgZmFpbC4KKy0gICAgICAg ICAgICB1LmZldGNoQW5kQW5kUmVsZWFzZShmdXRleE5lZWRzV2FrZUFsbEJpdCAtIDEpOworICAg ICAgICAgICAgIGlmIChmdXRleEhhc1dhaXRlckNvdW50KSB7CisgICAgICAgICAgICAgICAgIGZ1 dGV4V2FrZUFsbCgqZnV0ZXhMb3czMigmdSkpOworICAgICAgICAgICAgICAgICBmdXRleFdha2VB bGwoKmZ1dGV4SGlnaDMyKCZ1KSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xdGhyZWFkX3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmgK K2luZGV4IGIyZDE2MjhlNmUuLmYzMmY2ZjA0NjAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3F0aHJlYWRfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFk L3F0aHJlYWRfcC5oCitAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKKyAgICAgaW50IHJldHVy bkNvZGU7CisgCisgICAgIHVpbnQgc3RhY2tTaXplOworLSAgICBRVGhyZWFkOjpQcmlvcml0eSBw cmlvcml0eTsKKysgICAgc3RkOjp1bmRlcmx5aW5nX3R5cGU8UVRocmVhZDo6UHJpb3JpdHk+Ojp0 eXBlIHByaW9yaXR5OworIAorICAgICBzdGF0aWMgUVRocmVhZCAqdGhyZWFkRm9ySWQoaW50IGlk KTsKKyAKK0BAIC0yMTMsNiArMjEzLDEzIEBAIHB1YmxpYzoKKyAgICAgICAgICAgICBRQ29yZUFw cGxpY2F0aW9uOjppbnN0YW5jZSgpLT5wb3N0RXZlbnQocV9wdHIsIG5ldyBRRXZlbnQoUUV2ZW50 OjpRdWl0KSk7CisgICAgICAgICB9CisgICAgIH0KKysKKysjaWZuZGVmIFFfT1NfSU5URUdSSVRZ CisrcHJpdmF0ZToKKysgICAgLy8gVXNlZCBpbiBRVGhyZWFkKFByaXZhdGUpOjpzdGFydCB0byBh dm9pZCByYWN5IGFjY2VzcyB0byBRT2JqZWN0OjpvYmplY3ROYW1lLAorKyAgICAvLyB1bnNldCBh ZnRlcndhcmRzLiBPbiBJTlRFR1JJVFkgd2Ugc2V0IHRoZSB0aHJlYWQgbmFtZSBiZWZvcmUgc3Rh cnRpbmcgaXQuCisrICAgIFFTdHJpbmcgb2JqZWN0TmFtZTsKKysjZW5kaWYKKyB9OworIAorICNl bHNlIC8vIFFUX0NPTkZJRyh0aHJlYWQpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGli L3RocmVhZC9xdGhyZWFkX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhy ZWFkX3VuaXguY3BwCitpbmRleCA1NmE4ZTBhMDM4Li42MTAxMTdhNjQwIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3VuaXguY3BwCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfdW5peC5jcHAKK0BAIC0xNjksOCArMTY5LDcgQEAg c3RhdGljIHZvaWQgc2V0X3RocmVhZF9kYXRhKFFUaHJlYWREYXRhICpkYXRhKQorIAorIHN0YXRp YyB2b2lkIGNsZWFyX3RocmVhZF9kYXRhKCkKKyB7CistICAgIGN1cnJlbnRUaHJlYWREYXRhID0g bnVsbHB0cjsKKy0gICAgcHRocmVhZF9zZXRzcGVjaWZpYyhjdXJyZW50X3RocmVhZF9kYXRhX2tl eSwgbnVsbHB0cik7CisrICAgIHNldF90aHJlYWRfZGF0YShudWxscHRyKTsKKyB9CisgCisgdGVt cGxhdGUgPHR5cGVuYW1lIFQ+CitAQCAtMjk2LDcgKzI5NSw3IEBAIHZvaWQgKlFUaHJlYWRQcml2 YXRlOjpzdGFydCh2b2lkICphcmcpCisgICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigm dGhyLT5kX2Z1bmMoKS0+bXV0ZXgpOworIAorICAgICAgICAgICAgIC8vIGRvIHdlIG5lZWQgdG8g cmVzZXQgdGhlIHRocmVhZCBwcmlvcml0eT8KKy0gICAgICAgICAgICBpZiAoaW50KHRoci0+ZF9m dW5jKCktPnByaW9yaXR5KSAmIFRocmVhZFByaW9yaXR5UmVzZXRGbGFnKSB7CisrICAgICAgICAg ICAgaWYgKHRoci0+ZF9mdW5jKCktPnByaW9yaXR5ICYgVGhyZWFkUHJpb3JpdHlSZXNldEZsYWcp IHsKKyAgICAgICAgICAgICAgICAgdGhyLT5kX2Z1bmMoKS0+c2V0UHJpb3JpdHkoUVRocmVhZDo6 UHJpb3JpdHkodGhyLT5kX2Z1bmMoKS0+cHJpb3JpdHkgJiB+VGhyZWFkUHJpb3JpdHlSZXNldEZs YWcpKTsKKyAgICAgICAgICAgICB9CisgCitAQCAtMzE2LDEwICszMTUsMTAgQEAgdm9pZCAqUVRo cmVhZFByaXZhdGU6OnN0YXJ0KHZvaWQgKmFyZykKKyAgICAgICAgICAgICAvLyBTZXRzIHRoZSBu YW1lIG9mIHRoZSBjdXJyZW50IHRocmVhZC4gV2UgY2FuIG9ubHkgZG8gdGhpcworICAgICAgICAg ICAgIC8vIHdoZW4gdGhlIHRocmVhZCBpcyBzdGFydGluZywgYXMgd2UgZG9uJ3QgaGF2ZSBhIGNy b3NzCisgICAgICAgICAgICAgLy8gcGxhdGZvcm0gd2F5IG9mIHNldHRpbmcgdGhlIG5hbWUgb2Yg YW4gYXJiaXRyYXJ5IHRocmVhZC4KKy0gICAgICAgICAgICBpZiAoUV9MSUtFTFkodGhyLT5vYmpl Y3ROYW1lKCkuaXNFbXB0eSgpKSkKKysgICAgICAgICAgICBpZiAoUV9MSUtFTFkodGhyLT5kX2Z1 bmMoKS0+b2JqZWN0TmFtZS5pc0VtcHR5KCkpKQorICAgICAgICAgICAgICAgICBzZXRDdXJyZW50 VGhyZWFkTmFtZSh0aHItPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkpOworICAgICAgICAgICAg IGVsc2UKKy0gICAgICAgICAgICAgICAgc2V0Q3VycmVudFRocmVhZE5hbWUodGhyLT5vYmplY3RO YW1lKCkudG9Mb2NhbDhCaXQoKSk7CisrICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUaHJlYWRO YW1lKHN0ZDo6ZXhjaGFuZ2UodGhyLT5kX2Z1bmMoKS0+b2JqZWN0TmFtZSwge30pLnRvTG9jYWw4 Qml0KCkpOworICAgICAgICAgfQorICNlbmRpZgorIAorQEAgLTY3MSw3ICs2NzAsNyBAQCB2b2lk IFFUaHJlYWQ6OnN0YXJ0KFByaW9yaXR5IHByaW9yaXR5KQorICAgICAgICAgICAgICAgICAvLyBj b3VsZCBub3Qgc2V0IHNjaGVkdWxpbmcgaGludHMsIGZhbGxiYWNrIHRvIGluaGVyaXRpbmcgdGhl bQorICAgICAgICAgICAgICAgICAvLyB3ZSdsbCB0cnkgYWdhaW4gZnJvbSBpbnNpZGUgdGhlIHRo cmVhZAorICAgICAgICAgICAgICAgICBwdGhyZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkKCZhdHRy LCBQVEhSRUFEX0lOSEVSSVRfU0NIRUQpOworLSAgICAgICAgICAgICAgICBkLT5wcmlvcml0eSA9 IFByaW9yaXR5KHByaW9yaXR5IHwgVGhyZWFkUHJpb3JpdHlSZXNldEZsYWcpOworKyAgICAgICAg ICAgICAgICBkLT5wcmlvcml0eSA9IHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPFFU aHJlYWQ6OlByaW9yaXR5Pjo6dHlwZT4ocHJpb3JpdHkpIHwgVGhyZWFkUHJpb3JpdHlSZXNldEZs YWc7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorQEAg LTcwMiw3ICs3MDEsMTAgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkK KyAgICAgICAgIHB0aHJlYWRfYXR0cl9zZXR0aHJlYWRuYW1lKCZhdHRyLCBtZXRhT2JqZWN0KCkt PmNsYXNzTmFtZSgpKTsKKyAgICAgZWxzZQorICAgICAgICAgcHRocmVhZF9hdHRyX3NldHRocmVh ZG5hbWUoJmF0dHIsIG9iamVjdE5hbWUoKS50b0xvY2FsOEJpdCgpKTsKKysjZWxzZQorKyAgICBk LT5vYmplY3ROYW1lID0gb2JqZWN0TmFtZSgpOworICNlbmRpZgorKworICAgICBwdGhyZWFkX3Qg dGhyZWFkSWQ7CisgICAgIGludCBjb2RlID0gcHRocmVhZF9jcmVhdGUoJnRocmVhZElkLCAmYXR0 ciwgUVRocmVhZFByaXZhdGU6OnN0YXJ0LCB0aGlzKTsKKyAgICAgaWYgKGNvZGUgPT0gRVBFUk0p IHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNw cCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3BwCitpbmRleCBiYzcw ZTMxNzhhLi40ZTc2OTcyNDk4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xdGhyZWFkX3dpbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVh ZF93aW4uY3BwCitAQCAtMzk0LDEwICszOTQsOSBAQCB1bnNpZ25lZCBpbnQgX19zdGRjYWxsIFFU X0VOU1VSRV9TVEFDS19BTElHTkVEX0ZPUl9TU0UgUVRocmVhZFByaXZhdGU6OnN0YXJ0KHZvaQor IAorICNpZiAhZGVmaW5lZChRVF9OT19ERUJVRykgJiYgZGVmaW5lZChRX0NDX01TVkMpICYmICFk ZWZpbmVkKFFfT1NfV0lOUlQpCisgICAgIC8vIHNldHMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQg dGhyZWFkLgorLSAgICBRQnl0ZUFycmF5IG9iamVjdE5hbWUgPSB0aHItPm9iamVjdE5hbWUoKS50 b0xvY2FsOEJpdCgpOworLSAgICBxdF9zZXRfdGhyZWFkX25hbWUoSEFORExFKC0xKSwKKy0gICAg ICAgICAgICAgICAgICAgICAgIG9iamVjdE5hbWUuaXNFbXB0eSgpID8KKy0gICAgICAgICAgICAg ICAgICAgICAgIHRoci0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSA6IG9iamVjdE5hbWUuY29u c3REYXRhKCkpOworKyAgICBxdF9zZXRfdGhyZWFkX25hbWUoSEFORExFKC0xKSwgdGhyLT5kX2Z1 bmMoKS0+b2JqZWN0TmFtZS5pc0VtcHR5KCkKKysgICAgICAgICAgICAgICAgICAgICAgICA/IHRo ci0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgIDog c3RkOjpleGNoYW5nZSh0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLCB7fSkudG9Mb2NhbDhCaXQo KS5jb25zdERhdGEoKSk7CisgI2VuZGlmCisgCisgICAgIGVtaXQgdGhyLT5zdGFydGVkKFFUaHJl YWQ6OlFQcml2YXRlU2lnbmFsKCkpOworQEAgLTUwMyw2ICs1MDIsNyBAQCB2b2lkIFFUaHJlYWQ6 OnN0YXJ0KFByaW9yaXR5IHByaW9yaXR5KQorICAgICBpZiAoZC0+cnVubmluZykKKyAgICAgICAg IHJldHVybjsKKyAKKysgICAgZC0+b2JqZWN0TmFtZSA9IG9iamVjdE5hbWUoKTsKKyAgICAgZC0+ cnVubmluZyA9IHRydWU7CisgICAgIGQtPmZpbmlzaGVkID0gZmFsc2U7CisgICAgIGQtPmV4aXRl ZCA9IGZhbHNlOworQEAgLTU0OCw3ICs1NDgsNyBAQCB2b2lkIFFUaHJlYWQ6OnN0YXJ0KFByaW9y aXR5IHByaW9yaXR5KQorIAorICAgICBpbnQgcHJpbzsKKyAgICAgZC0+cHJpb3JpdHkgPSBwcmlv cml0eTsKKy0gICAgc3dpdGNoIChkLT5wcmlvcml0eSkgeworKyAgICBzd2l0Y2ggKHByaW9yaXR5 KSB7CisgICAgIGNhc2UgSWRsZVByaW9yaXR5OgorICAgICAgICAgcHJpbyA9IFRIUkVBRF9QUklP UklUWV9JRExFOworICAgICAgICAgYnJlYWs7CitAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgUVRo cmVhZFByaXZhdGU6OnNldFByaW9yaXR5KFFUaHJlYWQ6OlByaW9yaXR5IHRocmVhZFByaW9yaXR5 KQorIAorICAgICBpbnQgcHJpbzsKKyAgICAgcHJpb3JpdHkgPSB0aHJlYWRQcmlvcml0eTsKKy0g ICAgc3dpdGNoIChwcmlvcml0eSkgeworKyAgICBzd2l0Y2ggKHRocmVhZFByaW9yaXR5KSB7Cisg ICAgIGNhc2UgUVRocmVhZDo6SWRsZVByaW9yaXR5OgorICAgICAgICAgcHJpbyA9IFRIUkVBRF9Q UklPUklUWV9JRExFOworICAgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xdHNhbl9pbXBsLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0 c2FuX2ltcGwuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjU4MGE3 MzhiOTEKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRz YW5faW1wbC5oCitAQCAtMCwwICsxLDExNSBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioK KysqKiBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24uCisrKiogQ29weXJpZ2h0 IChDKSAyMDIyIEtsYXLDpGx2ZGFsZW5zIERhdGFrb25zdWx0IEFCLCBhIEtEQUIgR3JvdXAgY29t cGFueSwgaW5mb0BrZGFiLmNvbSwgYXV0aG9yIEdpdXNlcHBlIEQnQW5nZWxvIDxnaXVzZXBwZS5k YW5nZWxvQGtkYWIuY29tPgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2lu Zy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdENvcmUgbW9kdWxlIG9mIHRo ZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21t ZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJj aWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRo IHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiog U29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMg Y29udGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhl IFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUg aHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZv cm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0 LXVzLgorKyoqCisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisr KiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVh cmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2th Z2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlv biB0bworKyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZl cnNpb24gMyByZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp b24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxp Y2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUg RnJlZQorKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBm aWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBh Y2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGlu Zm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWly ZW1lbnRzIHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3Bs LTIuMC5odG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5o dG1sLgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKysKKysjaWZuZGVmIFFUU0FOX0lNUExfSAorKyNkZWZpbmUgUVRTQU5fSU1QTF9ICisrCisr I2luY2x1ZGUgPFF0Q29yZS9xZ2xvYmFsLmg+CisrCisrI2lmIChfX2hhc19mZWF0dXJlKHRocmVh ZF9zYW5pdGl6ZXIpIHx8IGRlZmluZWQoX19TQU5JVElaRV9USFJFQURfXykpICYmIF9faGFzX2lu Y2x1ZGUoPHNhbml0aXplci90c2FuX2ludGVyZmFjZS5oPikKKysjICBkZWZpbmUgUVRfQlVJTERJ TkdfVU5ERVJfVFNBTgorKyMgIGluY2x1ZGUgPHNhbml0aXplci90c2FuX2ludGVyZmFjZS5oPgor KyNlbmRpZgorKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworK25hbWVzcGFjZSBRdFRzYW4gewor KyNpZmRlZiBRVF9CVUlMRElOR19VTkRFUl9UU0FOCisraW5saW5lIHZvaWQgZnV0ZXhBY3F1aXJl KHZvaWQgKmFkZHIsIHZvaWQgKmFkZHIyID0gbnVsbHB0cikKKyt7CisrICAgIC8vIEEgZnV0ZXgg Y2FsbCBlbnN1cmVzIHRvdGFsIG9yZGVyaW5nIG9uIHRoZSBmdXRleCB3b3JkcworKyAgICAvLyAo aW4gZWl0aGVyIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgY2FsbCkuIEluc3RydWN0IFRTQU4g YWNjb3JkaW5nbHksCisrICAgIC8vIGFzIFRTQU4gZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgZnV0 ZXgoMikgc3lzY2FsbCAob3IgZXF1aXZhbGVudCkuCisrICAgIDo6X190c2FuX2FjcXVpcmUoYWRk cik7CisrICAgIGlmIChhZGRyMikKKysgICAgICAgIDo6X190c2FuX2FjcXVpcmUoYWRkcjIpOwor K30KKysKKytpbmxpbmUgdm9pZCBmdXRleFJlbGVhc2Uodm9pZCAqYWRkciwgdm9pZCAqYWRkcjIg PSBudWxscHRyKQorK3sKKysgICAgaWYgKGFkZHIyKQorKyAgICAgICAgOjpfX3RzYW5fcmVsZWFz ZShhZGRyMik7CisrICAgIDo6X190c2FuX3JlbGVhc2UoYWRkcik7CisrfQorKworK2lubGluZSB2 b2lkIG11dGV4UHJlTG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAgIDo6 X190c2FuX211dGV4X3ByZV9sb2NrKGFkZHIsIGZsYWdzKTsKKyt9CisrCisraW5saW5lIHZvaWQg bXV0ZXhQb3N0TG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncywgaW50IHJlY3Vyc2lvbikK Kyt7CisrICAgIDo6X190c2FuX211dGV4X3Bvc3RfbG9jayhhZGRyLCBmbGFncywgcmVjdXJzaW9u KTsKKyt9CisrCisraW5saW5lIHZvaWQgbXV0ZXhQcmVVbmxvY2sodm9pZCAqYWRkciwgdW5zaWdu ZWQgZmxhZ3MpCisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wcmVfdW5sb2NrKGFkZHIsIGZsYWdz KTsKKyt9CisrCisraW5saW5lIHZvaWQgbXV0ZXhQb3N0VW5sb2NrKHZvaWQgKmFkZHIsIHVuc2ln bmVkIGZsYWdzKQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcG9zdF91bmxvY2soYWRkciwgZmxh Z3MpOworK30KKysKKytlbnVtIDogdW5zaWduZWQgeworKyAgICBNdXRleFdyaXRlUmVlbnRyYW50 ID0gOjpfX3RzYW5fbXV0ZXhfd3JpdGVfcmVlbnRyYW50LAorKyAgICBUcnlMb2NrID0gOjpfX3Rz YW5fbXV0ZXhfdHJ5X2xvY2ssCisrICAgIFRyeUxvY2tGYWlsZWQgPSA6Ol9fdHNhbl9tdXRleF90 cnlfbG9ja19mYWlsZWQsCisrfTsKKysjZWxzZQorK2lubGluZSB2b2lkIGZ1dGV4QWNxdWlyZSh2 b2lkICosIHZvaWQgKiA9IG51bGxwdHIpIHt9CisraW5saW5lIHZvaWQgZnV0ZXhSZWxlYXNlKHZv aWQgKiwgdm9pZCAqID0gbnVsbHB0cikge30KKysKKytlbnVtIDogdW5zaWduZWQgeworKyAgICBN dXRleFdyaXRlUmVlbnRyYW50LAorKyAgICBUcnlMb2NrLAorKyAgICBUcnlMb2NrRmFpbGVkLAor K307CisraW5saW5lIHZvaWQgbXV0ZXhQcmVMb2NrKHZvaWQgKiwgdW5zaWduZWQpIHt9CisraW5s aW5lIHZvaWQgbXV0ZXhQb3N0TG9jayh2b2lkICosIHVuc2lnbmVkLCBpbnQpIHt9CisraW5saW5l IHZvaWQgbXV0ZXhQcmVVbmxvY2sodm9pZCAqLCB1bnNpZ25lZCkge30KKytpbmxpbmUgdm9pZCBt dXRleFBvc3RVbmxvY2sodm9pZCAqLCB1bnNpZ25lZCkge30KKysjZW5kaWYgLy8gUVRfQlVJTERJ TkdfVU5ERVJfVFNBTgorK30gLy8gbmFtZXNwYWNlIFF0VHNhbgorKworK1FUX0VORF9OQU1FU1BB Q0UKKysKKysjZW5kaWYgLy8gUVRTQU5fSU1QTF9ICitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxp Yi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAKK2luZGV4IDg4YjA1OGY0MTAuLjBmMWRh NGRjOWIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0 aW9uX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0 aW9uX3VuaXguY3BwCitAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgUVdhaXRDb25kaXRpb246Ondh aXQoUU11dGV4ICptdXRleCwgUURlYWRsaW5lVGltZXIgZGVhZGxpbmUpCisgeworICAgICBpZiAo ISBtdXRleCkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgaWYgKG11dGV4LT5pc1JlY3Vy c2l2ZSgpKSB7CisrICAgIGlmIChzdGF0aWNfY2FzdDxRQmFzaWNNdXRleCAqPihtdXRleCktPmlz UmVjdXJzaXZlKCkpIHsKKyAgICAgICAgIHFXYXJuaW5nKCJRV2FpdENvbmRpdGlvbjogY2Fubm90 IHdhaXQgb24gcmVjdXJzaXZlIG11dGV4ZXMiKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3FkYXRldGltZS5jcHAg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwCitpbmRleCBlYzEyNTY5ZTNm Li4yYzBiMDk4MDc5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0 aW1lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcAorQEAg LTQzLDYgKzQzLDcgQEAKKyAjaWYgUVRfQ09ORklHKGRhdGV0aW1lcGFyc2VyKQorICNpbmNsdWRl ICJwcml2YXRlL3FkYXRldGltZXBhcnNlcl9wLmgiCisgI2VuZGlmCisrI2luY2x1ZGUgPHByaXZh dGUvcW51bWVyaWNfcC5oPgorIAorICNpbmNsdWRlICJxZGF0YXN0cmVhbS5oIgorICNpbmNsdWRl ICJxc2V0LmgiCitAQCAtMTQyOSw5ICsxNDMwLDExIEBAIFFEYXRlIFFEYXRlOjphZGREYXlzKHFp bnQ2NCBuZGF5cykgY29uc3QKKyAgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICAgcmV0dXJuIFFE YXRlKCk7CisgCistICAgIC8vIER1ZSB0byBsaW1pdHMgb24gbWluSmQoKSBhbmQgbWF4SmQoKSB3 ZSBrbm93IHRoYXQgYW55IG92ZXJmbG93CistICAgIC8vIHdpbGwgYmUgaW52YWxpZCBhbmQgY2F1 Z2h0IGJ5IGZyb21KdWxpYW5EYXkoKS4KKy0gICAgcmV0dXJuIGZyb21KdWxpYW5EYXkoamQgKyBu ZGF5cyk7CisrICAgIHFpbnQ2NCByOworKyAgICBpZiAoUV9VTkxJS0VMWShhZGRfb3ZlcmZsb3co amQsIG5kYXlzLCAmcikpKQorKyAgICAgICAgcmV0dXJuIFFEYXRlKCk7CisrICAgIGVsc2UKKysg ICAgICAgIHJldHVybiBmcm9tSnVsaWFuRGF5KHIpOworIH0KKyAKKyAvKiEKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3BwIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3RpbWUvcXRpbWV6b25lLmNwcAoraW5kZXggMDMwOWU0M2U1Mi4uM2Q0NTE2OTZhMSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAKK0BAIC0xLDYgKzEsNiBAQAorIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTMgSm9obiBMYXl0 IDxqbGF5dEBrZGUub3JnPgorKyoqIENvcHlyaWdodCAoQykgMjAyMCBKb2huIExheXQgPGpsYXl0 QGtkZS5vcmc+CisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoq CisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0Q29yZSBtb2R1bGUgb2YgdGhlIFF0IFRv b2xraXQuCitAQCAtOTc1LDkgKzk3NSwxNSBAQCBRTGlzdDxRQnl0ZUFycmF5PiBRVGltZVpvbmU6 OndpbmRvd3NJZFRvSWFuYUlkcyhjb25zdCBRQnl0ZUFycmF5ICZ3aW5kb3dzSWQsCisgfQorIAor ICNpZm5kZWYgUVRfTk9fREFUQVNUUkVBTQorKy8vIEludmFsaWQsIGFzIGFuIElBTkEgSUQ6IHRv byBsb25nLCBzdGFydHMgd2l0aCAtIGFuZCBoYXMgb3RoZXIgaW52YWxpZCBjaGFyYWN0ZXJzIGlu IGl0Cisrc3RhdGljIGlubGluZSBRU3RyaW5nIGludmFsaWRJZCgpIHsgcmV0dXJuIFFTdHJpbmdM aXRlcmFsKCItTm8gVGltZSBab25lIFNwZWNpZmllZCEiKTsgfQorKworIFFEYXRhU3RyZWFtICZv cGVyYXRvcjw8KFFEYXRhU3RyZWFtICZkcywgY29uc3QgUVRpbWVab25lICZ0eikKKyB7CistICAg IHR6LmQtPnNlcmlhbGl6ZShkcyk7CisrICAgIGlmICh0ei5pc1ZhbGlkKCkpCisrICAgICAgICB0 ei5kLT5zZXJpYWxpemUoZHMpOworKyAgICBlbHNlCisrICAgICAgICBkcyA8PCBpbnZhbGlkSWQo KTsKKyAgICAgcmV0dXJuIGRzOworIH0KKyAKK0BAIC05ODUsNyArOTkxLDkgQEAgUURhdGFTdHJl YW0gJm9wZXJhdG9yPj4oUURhdGFTdHJlYW0gJmRzLCBRVGltZVpvbmUgJnR6KQorIHsKKyAgICAg UVN0cmluZyBpYW5hSWQ7CisgICAgIGRzID4+IGlhbmFJZDsKKy0gICAgaWYgKGlhbmFJZCA9PSBR TGF0aW4xU3RyaW5nKCJPZmZzZXRGcm9tVXRjIikpIHsKKysgICAgaWYgKGlhbmFJZCA9PSBpbnZh bGlkSWQoKSkgeworKyAgICAgICAgdHogPSBRVGltZVpvbmUoKTsKKysgICAgfSBlbHNlIGlmIChp YW5hSWQgPT0gUUxhdGluMVN0cmluZygiT2Zmc2V0RnJvbVV0YyIpKSB7CisgICAgICAgICBpbnQg dXRjT2Zmc2V0OworICAgICAgICAgUVN0cmluZyBuYW1lOworICAgICAgICAgUVN0cmluZyBhYmJy ZXZpYXRpb247CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25l cHJpdmF0ZV90ei5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRl X3R6LmNwcAoraW5kZXggYjE2MTFkN2RkYi4uYTdhNmE3MmNjZiAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3BwCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNwcAorQEAgLTQyLDYgKzQyLDcg QEAKKyAjaW5jbHVkZSAicXRpbWV6b25lLmgiCisgI2luY2x1ZGUgInF0aW1lem9uZXByaXZhdGVf cC5oIgorICNpbmNsdWRlICJwcml2YXRlL3Fsb2NhbGVfdG9vbHNfcC5oIgorKyNpbmNsdWRlICJw cml2YXRlL3Fsb2NraW5nX3AuaCIKKyAKKyAjaW5jbHVkZSA8UXRDb3JlL1FEYXRhU3RyZWFtPgor ICNpbmNsdWRlIDxRdENvcmUvUURhdGVUaW1lPgorQEAgLTYyLDYgKzYzLDEwIEBACisgCisgUVRf QkVHSU5fTkFNRVNQQUNFCisgCisrI2lmIFFUX0NPTkZJRyhpY3UpCisrc3RhdGljIFFCYXNpY011 dGV4IHNfaWN1X211dGV4OworKyNlbmRpZgorKworIC8qCisgICAgIFByaXZhdGUKKyAKK0BAIC02 NzAsNiArNjc1LDkgQEAgUVR6VGltZVpvbmVQcml2YXRlOjp+UVR6VGltZVpvbmVQcml2YXRlKCkK KyAKKyBRVHpUaW1lWm9uZVByaXZhdGUgKlFUelRpbWVab25lUHJpdmF0ZTo6Y2xvbmUoKSBjb25z dAorIHsKKysjaWYgUVRfQ09ORklHKGljdSkKKysgICAgY29uc3QgYXV0byBsb2NrID0gcXRfc2Nv cGVkX2xvY2soc19pY3VfbXV0ZXgpOworKyNlbmRpZgorICAgICByZXR1cm4gbmV3IFFUelRpbWVa b25lUHJpdmF0ZSgqdGhpcyk7CisgfQorIAorQEAgLTkxMywxMiArOTIxLDE0IEBAIFFTdHJpbmcg UVR6VGltZVpvbmVQcml2YXRlOjpkaXNwbGF5TmFtZShxaW50NjQgYXRNU2Vjc1NpbmNlRXBvY2gs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFMb2NhbGUg JmxvY2FsZSkgY29uc3QKKyB7CisgI2lmIFFUX0NPTkZJRyhpY3UpCisrICAgIGF1dG8gbG9jayA9 IHF0X3VuaXF1ZV9sb2NrKHNfaWN1X211dGV4KTsKKyAgICAgaWYgKCFtX2ljdSkKKyAgICAgICAg IG1faWN1ID0gbmV3IFFJY3VUaW1lWm9uZVByaXZhdGUobV9pZCk7CisgICAgIC8vIFRPRE8gc21h bGwgcmlzayBtYXkgbm90IG1hdGNoIGlmIHRyYW4gdGltZXMgZGlmZmVyIGR1ZSB0byBvdXRkYXRl ZCBmaWxlcworICAgICAvLyBUT0RPIFNvbWUgdmFsaWQgVFogbmFtZXMgYXJlIG5vdCB2YWxpZCBJ Q1UgbmFtZXMsIHVzZSB0cmFuc2xhdGlvbiB0YWJsZT8KKyAgICAgaWYgKG1faWN1LT5pc1ZhbGlk KCkpCisgICAgICAgICByZXR1cm4gbV9pY3UtPmRpc3BsYXlOYW1lKGF0TVNlY3NTaW5jZUVwb2No LCBuYW1lVHlwZSwgbG9jYWxlKTsKKysgICAgbG9jay51bmxvY2soKTsKKyAjZWxzZQorICAgICBR X1VOVVNFRChuYW1lVHlwZSkKKyAgICAgUV9VTlVTRUQobG9jYWxlKQorQEAgLTkzMiwxMiArOTQy LDE0IEBAIFFTdHJpbmcgUVR6VGltZVpvbmVQcml2YXRlOjpkaXNwbGF5TmFtZShRVGltZVpvbmU6 OlRpbWVUeXBlIHRpbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBRTG9jYWxlICZsb2NhbGUpIGNvbnN0CisgeworICNpZiBRVF9DT05GSUcoaWN1 KQorKyAgICBhdXRvIGxvY2sgPSBxdF91bmlxdWVfbG9jayhzX2ljdV9tdXRleCk7CisgICAgIGlm ICghbV9pY3UpCisgICAgICAgICBtX2ljdSA9IG5ldyBRSWN1VGltZVpvbmVQcml2YXRlKG1faWQp OworICAgICAvLyBUT0RPIHNtYWxsIHJpc2sgbWF5IG5vdCBtYXRjaCBpZiB0cmFuIHRpbWVzIGRp ZmZlciBkdWUgdG8gb3V0ZGF0ZWQgZmlsZXMKKyAgICAgLy8gVE9ETyBTb21lIHZhbGlkIFRaIG5h bWVzIGFyZSBub3QgdmFsaWQgSUNVIG5hbWVzLCB1c2UgdHJhbnNsYXRpb24gdGFibGU/CisgICAg IGlmIChtX2ljdS0+aXNWYWxpZCgpKQorICAgICAgICAgcmV0dXJuIG1faWN1LT5kaXNwbGF5TmFt ZSh0aW1lVHlwZSwgbmFtZVR5cGUsIGxvY2FsZSk7CisrICAgIGxvY2sudW5sb2NrKCk7CisgI2Vs c2UKKyAgICAgUV9VTlVTRUQodGltZVR5cGUpCisgICAgIFFfVU5VU0VEKG5hbWVUeXBlKQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlkYXRhLmggYi9xdGJhc2Uv c3JjL2NvcmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5oCitpbmRleCBkY2Q5NTkyNGMxLi5kMDE3Mzll N2U2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaAorQEAgLTQyLDYgKzQy LDcgQEAKKyAKKyAjaW5jbHVkZSA8UXRDb3JlL3FyZWZjb3VudC5oPgorICNpbmNsdWRlIDxzdHJp bmcuaD4KKysjaW5jbHVkZSA8Y3N0ZGludD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKK0BA IC01OCwxNCArNTksMTQgQEAgc3RydWN0IFFfQ09SRV9FWFBPUlQgUUFycmF5RGF0YQorICAgICB7 CisgICAgICAgICBRX0FTU0VSVChzaXplID09IDAKKyAgICAgICAgICAgICAgICAgfHwgb2Zmc2V0 IDwgMCB8fCBzaXplX3Qob2Zmc2V0KSA+PSBzaXplb2YoUUFycmF5RGF0YSkpOworLSAgICAgICAg cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciAqPih0aGlzKSArIG9mZnNldDsKKysgICAgICAg IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQgKj4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0 cl90Pih0aGlzKSArIG9mZnNldCk7CisgICAgIH0KKyAKKyAgICAgY29uc3Qgdm9pZCAqZGF0YSgp IGNvbnN0CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUKHNpemUgPT0gMAorICAgICAgICAgICAg ICAgICB8fCBvZmZzZXQgPCAwIHx8IHNpemVfdChvZmZzZXQpID49IHNpemVvZihRQXJyYXlEYXRh KSk7CistICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KHRoaXMp ICsgb2Zmc2V0OworKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPiAocmVp bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgb2Zmc2V0KTsKKyAgICAgfQorIAorICAg ICAvLyBUaGlzIHJlZmVycyB0byBhcnJheSBkYXRhIG11dGFiaWxpdHksIG5vdCAiaGVhZGVyIGRh dGEiIHJlcHJlc2VudGVkIGJ5CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xz L3FmcmVlbGlzdF9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaAor aW5kZXggNWJhMjNiMzQ0Yi4uOTk3NDEwMjEzNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29y ZWxpYi90b29scy9xZnJlZWxpc3RfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMv cWZyZWVsaXN0X3AuaAorQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBRRnJlZUxpc3QKKyAgICAg ICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICAgeCAtPSBzaXplOworICAgICAgICAg fQorLSAgICAgICAgUV9BU1NFUlQoZmFsc2UpOworKyAgICAgICAgUV9VTlJFQUNIQUJMRSgpOwor ICAgICAgICAgcmV0dXJuIC0xOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMv cXZlcnNpb25udW1iZXIuaAoraW5kZXggZDQzYjg2YmE1MS4uMjg0M2YyYjA0MyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oCisrKysgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZlcnNpb25udW1iZXIuaAorQEAgLTI3MywxMCArMjczLDEw IEBAIHB1YmxpYzoKKyAKKyAgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBRU3Ry aW5nIHRvU3RyaW5nKCkgY29uc3Q7CisgI2lmIFFUX1NUUklOR1ZJRVdfTEVWRUwgPCAyCistICAg IFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFfREVDTF9QVVJFX0ZVTkNU SU9OIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoY29uc3QgUVN0cmluZyAmc3RyaW5nLCBpbnQg KnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisrICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9F WFBPUlQgc3RhdGljIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoY29uc3QgUVN0cmluZyAmc3Ry aW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisgI2VuZGlmCistICAgIFFfUkVRVUlS RURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFfREVDTF9QVVJFX0ZVTkNUSU9OIFFWZXJz aW9uTnVtYmVyIGZyb21TdHJpbmcoUUxhdGluMVN0cmluZyBzdHJpbmcsIGludCAqc3VmZml4SW5k ZXggPSBudWxscHRyKTsKKy0gICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0 aWMgUV9ERUNMX1BVUkVfRlVOQ1RJT04gUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhRU3RyaW5n VmlldyBzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKysgICAgUV9SRVFVSVJF RF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhR TGF0aW4xU3RyaW5nIHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworKyAgICBR X1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRVmVyc2lvbk51bWJlciBmcm9t U3RyaW5nKFFTdHJpbmdWaWV3IHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOwor IAorIHByaXZhdGU6CisgI2lmbmRlZiBRVF9OT19EQVRBU1RSRUFNCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAgYi9xdGJhc2Uvc3JjL2RidXMvcWRidXNp bnRlZ3JhdG9yLmNwcAoraW5kZXggNWI2NmNlOTcxYi4uMjhhM2IwZmZlYSAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2Ri dXMvcWRidXNpbnRlZ3JhdG9yLmNwcAorQEAgLTExMzUsNyArMTEzNSwxMyBAQCB2b2lkIFFEQnVz Q29ubmVjdGlvblByaXZhdGU6OmNsb3NlQ29ubmVjdGlvbigpCisgICAgICAgICB9CisgICAgIH0K KyAKKy0gICAgcURlbGV0ZUFsbChwZW5kaW5nQ2FsbHMpOworKyAgICBmb3IgKGF1dG8gaXQgPSBw ZW5kaW5nQ2FsbHMuYmVnaW4oKTsgaXQgIT0gcGVuZGluZ0NhbGxzLmVuZCgpOyArK2l0KSB7Cisr ICAgICAgICBhdXRvIGNhbGwgPSAqaXQ7CisrICAgICAgICBpZiAoIWNhbGwtPnJlZi5kZXJlZigp KSB7CisrICAgICAgICAgICAgZGVsZXRlIGNhbGw7CisrICAgICAgICB9CisrICAgIH0KKysgICAg cGVuZGluZ0NhbGxzLmNsZWFyKCk7CisgCisgICAgIC8vIERpc2Nvbm5lY3QgYWxsIHNpZ25hbHMg ZnJvbSBzaWduYWwgaG9va3MgYW5kIGZyb20gdGhlIG9iamVjdCB0cmVlIHRvCisgICAgIC8vIGF2 b2lkIFFPYmplY3Q6OmRlc3Ryb3llZCBiZWluZyBzZW50IHRvIGRidXMgZGFlbW9uIHRocmVhZCB3 aGljaCBoYXMKK0BAIC0yNTg0LDYgKzI1OTAsMTEgQEAgUURCdXNDb25uZWN0aW9uUHJpdmF0ZTo6 ZmluZE1ldGFPYmplY3QoY29uc3QgUVN0cmluZyAmc2VydmljZSwgY29uc3QgUVN0cmluZyAmcGEK KyAgICAgICAgIGlmIChtbykKKyAgICAgICAgICAgICByZXR1cm4gbW87CisgICAgIH0KKysgICAg aWYgKHBhdGguaXNFbXB0eSgpKSB7CisrICAgICAgICBlcnJvciA9IFFEQnVzRXJyb3IoUURCdXNF cnJvcjo6SW52YWxpZE9iamVjdFBhdGgsIFFMYXRpbjFTdHJpbmcoIk9iamVjdCBwYXRoIGNhbm5v dCBiZSBlbXB0eSIpKTsKKysgICAgICAgIGxhc3RFcnJvciA9IGVycm9yOworKyAgICAgICAgcmV0 dXJuIG51bGxwdHI7CisrICAgIH0KKyAKKyAgICAgLy8gaW50cm9zcGVjdCB0aGUgdGFyZ2V0IG9i amVjdAorICAgICBRREJ1c01lc3NhZ2UgbXNnID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RD YWxsKHNlcnZpY2UsIHBhdGgsCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0 YW9iamVjdC5jcHAgYi9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcAoraW5kZXgg NTI2NTU2OGY0Mi4uN2U5ZjBmMWFjYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1 c21ldGFvYmplY3QuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNw cAorQEAgLTIxMCw2ICsyMTAsOSBAQCBRREJ1c01ldGFPYmplY3RHZW5lcmF0b3I6OmZpbmRUeXBl KGNvbnN0IFFCeXRlQXJyYXkgJnNpZ25hdHVyZSwKKyAgICAgICAgIH0gZWxzZSBpZiAoc2lnbmF0 dXJlID09ICJhe3NzfSIpIHsKKyAgICAgICAgICAgICByZXN1bHQubmFtZSA9ICJRTWFwPFFTdHJp bmcsUVN0cmluZz4iOworICAgICAgICAgICAgIHR5cGUgPSBxTWV0YVR5cGVJZDxRTWFwPFFTdHJp bmcsIFFTdHJpbmc+ID4oKTsKKysgICAgICAgIH0gZWxzZSBpZiAoc2lnbmF0dXJlID09ICJhYXki KSB7CisrICAgICAgICAgICAgcmVzdWx0Lm5hbWUgPSAiUUJ5dGVBcnJheUxpc3QiOworKyAgICAg ICAgICAgIHR5cGUgPSBxTWV0YVR5cGVJZDxRQnl0ZUFycmF5TGlzdD4oKTsKKyAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgcmVzdWx0Lm5hbWUgPSAie0QtQnVzIHR5cGUgXCIiICsgc2ln bmF0dXJlICsgIlwifSI7CisgICAgICAgICAgICAgdHlwZSA9IHJlZ2lzdGVyQ29tcGxleERCdXNU eXBlKHJlc3VsdC5uYW1lKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxl L3FhY2Nlc3NpYmxlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUu Y3BwCitpbmRleCBkNzA1YmZjY2I1Li4wY2FmM2M4MDhjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2Fj Y2Vzc2libGUvcWFjY2Vzc2libGUuY3BwCitAQCAtNTQsNiArNTQsNyBAQAorICNpbmNsdWRlIDxR dENvcmUvcWRlYnVnLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xbG9nZ2luZ2NhdGVnb3J5Lmg+Cisg I2luY2x1ZGUgPFF0Q29yZS9xbWV0YW9iamVjdC5oPgorKyNpbmNsdWRlIDxRdENvcmUvcHJpdmF0 ZS9xbWV0YW9iamVjdF9wLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xaGFzaC5oPgorICNpbmNsdWRl IDxwcml2YXRlL3FmYWN0b3J5bG9hZGVyX3AuaD4KKyAKK0BAIC02ODEsNiArNjgyLDI1IEBAIFFB Y2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNl KFFPYmplY3QgKm9iamVjdCkKKyAgICAgLy8gQ3JlYXRlIGEgUUFjY2Vzc2libGVJbnRlcmZhY2Ug Zm9yIHRoZSBvYmplY3QgY2xhc3MuIFN0YXJ0IGJ5IHRoZSBtb3N0CisgICAgIC8vIGRlcml2ZWQg Y2xhc3MgYW5kIHdhbGsgdXAgdGhlIGNsYXNzIGhpZXJhcmNoeS4KKyAgICAgY29uc3QgUU1ldGFP YmplY3QgKm1vID0gb2JqZWN0LT5tZXRhT2JqZWN0KCk7CisrICAgIGNvbnN0IGF1dG8gKm9iamVj dFByaXYgPSBRT2JqZWN0UHJpdmF0ZTo6Z2V0KG9iamVjdCk7CisrICAgIC8qCisrICAgICBXZSBk byBub3Qgd2FudCB0byBjYWNoZSBlYWNoIGFuZCBldmVyeSBRTUwgbWV0YW9iamVjdCAoQnV0dG9u X1FNTFRZUEVfMTI0LAorKyAgICAgQnV0dG9uX1FNTFRZUEVfMTI1LCBldGMuKS4gVGhvc2UgZHlu YW1pYyBtZXRhb2JqZWN0cyBzaG91bGRuJ3QgaGF2ZSBhbgorKyAgICAgYWNjZXNzaWJsZSBpbnRl cmZhY2UgaW4gYW55IGNhc2UuIEluc3RlYWQsIHdlIHN0YXJ0IHRoZSB3aG9sZSBjaGVja2luZwor KyAgICAgd2l0aCB0aGUgZmlyc3Qgbm9uLWR5bmFtaWMgbWV0YS1vYmplY3QuIFRvIGF2b2lkIHBv dGVudGlhbCByZWdyZXNzaW9ucworKyAgICAgaW4gb3RoZXIgYXJlYXMgb2YgUXQgdGhhdCBhbHNv IHVzZSBkeW5hbWljIG1ldGFvYmplY3RzLCB3ZSBvbmx5IGRvIHRoaXMKKysgICAgIGZvciBvYmpl Y3RzIHRoYXQgYXJlIFFNTC1yZWxhdGVkIChhcHByb3hpbWF0ZWQgYnkgY2hlY2tpbmcgd2hldGhl ciB0aGV5CisrICAgICBoYXZlIGRkYXRhIHNldCkuCisrICAgICovCisrICAgIGNvbnN0IGJvb2wg cW1sUmVsYXRlZCA9ICFvYmplY3RQcml2LT5pc0RlbGV0aW5nQ2hpbGRyZW4gJiYKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb2JqZWN0UHJpdi0+ZGVjbGFyYXRpdmVEYXRhOworKyAgICB3 aGlsZSAocW1sUmVsYXRlZCAmJiBtbykgeworKyAgICAgICAgYXV0byBtb3AgPSBRTWV0YU9iamVj dFByaXZhdGU6OmdldChtbyk7CisrICAgICAgICBpZiAoIW1vcCB8fCAhKG1vcC0+ZmxhZ3MgJiBE eW5hbWljTWV0YU9iamVjdCkpCisrICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICBtbyA9 IG1vLT5zdXBlckNsYXNzKCk7CisrICAgIH07CisgICAgIHdoaWxlIChtbykgeworICAgICAgICAg Y29uc3QgUVN0cmluZyBjbiA9IFFMYXRpbjFTdHJpbmcobW8tPmNsYXNzTmFtZSgpKTsKKyAKK0BA IC02OTYsMTQgKzcxNiwxNSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGU6OnF1 ZXJ5QWNjZXNzaWJsZUludGVyZmFjZShRT2JqZWN0ICpvYmplY3QpCisgICAgICAgICAvLyBGaW5k IGEgUUFjY2Vzc2libGVQbHVnaW4gKGZhY3RvcnkpIGZvciB0aGUgY2xhc3MgbmFtZS4gSWYgdGhl cmUncworICAgICAgICAgLy8gbm8gZW50cnkgaW4gdGhlIGNhY2hlIHRyeSB0byBjcmVhdGUgaXQg dXNpbmcgdGhlIHBsdWdpbiBsb2FkZXIuCisgICAgICAgICBpZiAoIXFBY2Nlc3NpYmxlUGx1Z2lu cygpLT5jb250YWlucyhjbikpIHsKKysgICAgICAgICAgICBRQWNjZXNzaWJsZVBsdWdpbiAqZmFj dG9yeSA9IG51bGxwdHI7IC8vIDAgbWVhbnMgIm5vIHBsdWdpbiBmb3VuZCIuIFRoaXMgaXMgY2Fj aGVkIGFzIHdlbGwuCisgICAgICAgICAgICAgY29uc3QgaW50IGluZGV4ID0gbG9hZGVyKCktPmlu ZGV4T2YoY24pOworLSAgICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkgeworLSAgICAgICAgICAg ICAgICBRQWNjZXNzaWJsZVBsdWdpbiAqZmFjdG9yeSA9IHFvYmplY3RfY2FzdDxRQWNjZXNzaWJs ZVBsdWdpbiAqPihsb2FkZXIoKS0+aW5zdGFuY2UoaW5kZXgpKTsKKy0gICAgICAgICAgICAgICAg cUFjY2Vzc2libGVQbHVnaW5zKCktPmluc2VydChjbiwgZmFjdG9yeSk7CistICAgICAgICAgICAg fQorKyAgICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkKKysgICAgICAgICAgICAgICAgZmFjdG9y eSA9IHFvYmplY3RfY2FzdDxRQWNjZXNzaWJsZVBsdWdpbiAqPihsb2FkZXIoKS0+aW5zdGFuY2Uo aW5kZXgpKTsKKysgICAgICAgICAgICBxQWNjZXNzaWJsZVBsdWdpbnMoKS0+aW5zZXJ0KGNuLCBm YWN0b3J5KTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGNh Y2hlIHNob3VsZCBjb250YWluIGEgdmFsaWQgZmFjdG9yeSBwb2ludGVyIG9yIDA6CisrICAgICAg ICBRX0FTU0VSVChxQWNjZXNzaWJsZVBsdWdpbnMoKS0+Y29udGFpbnMoY24pKTsKKyAgICAgICAg IFFBY2Nlc3NpYmxlUGx1Z2luICpmYWN0b3J5ID0gcUFjY2Vzc2libGVQbHVnaW5zKCktPnZhbHVl KGNuKTsKKyAgICAgICAgIGlmIChmYWN0b3J5KSB7CisgICAgICAgICAgICAgUUFjY2Vzc2libGVJ bnRlcmZhY2UgKnJlc3VsdCA9IGZhY3RvcnktPmNyZWF0ZShjbiwgb2JqZWN0KTsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2d1aS9jb25maWd1cmUuanNvbiBiL3F0YmFzZS9zcmMvZ3VpL2NvbmZp Z3VyZS5qc29uCitpbmRleCAxZjA4Nzk1YzU3Li4xMmM5NTc0MmQyIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9ndWkvY29uZmlndXJlLmpzb24KKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3Vy ZS5qc29uCitAQCAtODM0LDcgKzgzNCw4IEBACisgICAgICAgICAgICAgICAgICAgICAiLy8gZW1i ZWRkZWQgZGV2aWNlcywgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIHRvZ2V0aGVyIHdpdGgg WC4gRUdMIHN1cHBvcnQiLAorICAgICAgICAgICAgICAgICAgICAgIi8vIGhhcyB0byBiZSBkaXNh YmxlZCBpbiBwbHVnaW5zIGxpa2UgeGNiIGluIHRoaXMgY2FzZSBzaW5jZSB0aGUgbmF0aXZlIGRp c3BsYXksIiwKKyAgICAgICAgICAgICAgICAgICAgICIvLyB3aW5kb3cgYW5kIHBpeG1hcCB0eXBl cyB3aWxsIGJlIGRpZmZlcmVudCB0aGFuIHdoYXQgYW4gWC1iYXNlZCBwbGF0Zm9ybSIsCistICAg ICAgICAgICAgICAgICAgICAiLy8gcGx1Z2luIHdvdWxkIGV4cGVjdC4iCisrICAgICAgICAgICAg ICAgICAgICAiLy8gcGx1Z2luIHdvdWxkIGV4cGVjdC4iLAorKyAgICAgICAgICAgICAgICAgICAg IiNkZWZpbmUgVVNFX1gxMSIKKyAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg ImluY2x1ZGUiOiBbICJFR0wvZWdsLmgiLCAiWDExL1hsaWIuaCIgXSwKKyAgICAgICAgICAgICAg ICAgIm1haW4iOiBbCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhhbmRs ZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhhbmRsZXIuY3BwCitpbmRleCA5NmYx ZThjYjFkLi4wZTczYmJiZGIwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJt cGhhbmRsZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAK K0BAIC0xNTAsMTYgKzE1MCw0MiBAQCBzdGF0aWMgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoUURh dGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSkKKyAgICAgcmV0dXJuIHM7CisgfQor IAorLXN0YXRpYyBpbnQgY2FsY19zaGlmdCh1aW50IG1hc2spCisrc3RhdGljIHVpbnQgY2FsY19z aGlmdCh1aW50IG1hc2spCisgeworLSAgICBpbnQgcmVzdWx0ID0gMDsKKy0gICAgd2hpbGUgKG1h c2sgJiYgIShtYXNrICYgMSkpIHsKKysgICAgdWludCByZXN1bHQgPSAwOworKyAgICB3aGlsZSAo KG1hc2sgPj0gMHgxMDApIHx8ICghKG1hc2sgJiAxKSAmJiBtYXNrKSkgeworICAgICAgICAgcmVz dWx0Kys7CisgICAgICAgICBtYXNrID4+PSAxOworICAgICB9CisgICAgIHJldHVybiByZXN1bHQ7 CisgfQorIAorK3N0YXRpYyB1aW50IGNhbGNfc2NhbGUodWludCBsb3dfbWFzaykKKyt7CisrICAg IHVpbnQgcmVzdWx0ID0gODsKKysgICAgd2hpbGUgKGxvd19tYXNrICYmIHJlc3VsdCkgeworKyAg ICAgICAgcmVzdWx0LS07CisrICAgICAgICBsb3dfbWFzayA+Pj0gMTsKKysgICAgfQorKyAgICBy ZXR1cm4gcmVzdWx0OworK30KKysKKytzdGF0aWMgaW5saW5lIHVpbnQgYXBwbHlfc2NhbGUodWlu dCB2YWx1ZSwgdWludCBzY2FsZSkKKyt7CisrICAgIGlmICghKHNjYWxlICYgMHgwNykpIC8vIHJl dHVybiBpbW1lZGlhdGVseSBpZiBzY2FsZSA9PSA4IG9yIDAKKysgICAgICAgIHJldHVybiB2YWx1 ZTsKKysKKysgICAgdWludCBmaWxsZWQgPSA4IC0gc2NhbGU7CisrICAgIHVpbnQgcmVzdWx0ID0g dmFsdWUgPDwgc2NhbGU7CisrCisrICAgIGRvIHsKKysgICAgICAgIHJlc3VsdCB8PSByZXN1bHQg Pj4gZmlsbGVkOworKyAgICAgICAgZmlsbGVkIDw8PSAxOworKyAgICB9IHdoaWxlIChmaWxsZWQg PCA4KTsKKysKKysgICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisgc3RhdGljIGJvb2wgcmVhZF9k aWJfZmlsZWhlYWRlcihRRGF0YVN0cmVhbSAmcywgQk1QX0ZJTEVIRFIgJmJmKQorIHsKKyAgICAg Ly8gcmVhZCBCTVAgZmlsZSBoZWFkZXIKK0BAIC0yMjIsMTQgKzI0OCwxNCBAQCBzdGF0aWMgYm9v bCByZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmksIHFp bnQ2NCBvZmZzZXQsCisgICAgIHVpbnQgZ3JlZW5fbWFzayA9IDA7CisgICAgIHVpbnQgYmx1ZV9t YXNrID0gMDsKKyAgICAgdWludCBhbHBoYV9tYXNrID0gMDsKKy0gICAgaW50IHJlZF9zaGlmdCA9 IDA7CistICAgIGludCBncmVlbl9zaGlmdCA9IDA7CistICAgIGludCBibHVlX3NoaWZ0ID0gMDsK Ky0gICAgaW50IGFscGhhX3NoaWZ0ID0gMDsKKy0gICAgaW50IHJlZF9zY2FsZSA9IDA7CistICAg IGludCBncmVlbl9zY2FsZSA9IDA7CistICAgIGludCBibHVlX3NjYWxlID0gMDsKKy0gICAgaW50 IGFscGhhX3NjYWxlID0gMDsKKysgICAgdWludCByZWRfc2hpZnQgPSAwOworKyAgICB1aW50IGdy ZWVuX3NoaWZ0ID0gMDsKKysgICAgdWludCBibHVlX3NoaWZ0ID0gMDsKKysgICAgdWludCBhbHBo YV9zaGlmdCA9IDA7CisrICAgIHVpbnQgcmVkX3NjYWxlID0gMDsKKysgICAgdWludCBncmVlbl9z Y2FsZSA9IDA7CisrICAgIHVpbnQgYmx1ZV9zY2FsZSA9IDA7CisrICAgIHVpbnQgYWxwaGFfc2Nh bGUgPSAwOworIAorICAgICBpZiAoIWQtPmlzU2VxdWVudGlhbCgpKQorICAgICAgICAgZC0+c2Vl ayhzdGFydHBvcyArIEJNUF9GSUxFSERSX1NJWkUgKyBiaS5iaVNpemUpOyAvLyBnb3RvIHN0YXJ0 IG9mIGNvbG9ybWFwIG9yIG1hc2tzCitAQCAtMzA4LDE5ICszMzQsMTkgQEAgc3RhdGljIGJvb2wg cmVhZF9kaWJfYm9keShRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpLCBxaW50 NjQgb2Zmc2V0LAorICAgICAgICAgcmVkX3NoaWZ0ID0gY2FsY19zaGlmdChyZWRfbWFzayk7Cisg ICAgICAgICBpZiAoKChyZWRfbWFzayA+PiByZWRfc2hpZnQpICsgMSkgPT0gMCkKKyAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICByZWRfc2NhbGUgPSAyNTYgLyAoKHJlZF9tYXNr ID4+IHJlZF9zaGlmdCkgKyAxKTsKKysgICAgICAgIHJlZF9zY2FsZSA9IGNhbGNfc2NhbGUocmVk X21hc2sgPj4gcmVkX3NoaWZ0KTsKKyAgICAgICAgIGdyZWVuX3NoaWZ0ID0gY2FsY19zaGlmdChn cmVlbl9tYXNrKTsKKyAgICAgICAgIGlmICgoKGdyZWVuX21hc2sgPj4gZ3JlZW5fc2hpZnQpICsg MSkgPT0gMCkKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICBncmVlbl9zY2Fs ZSA9IDI1NiAvICgoZ3JlZW5fbWFzayA+PiBncmVlbl9zaGlmdCkgKyAxKTsKKysgICAgICAgIGdy ZWVuX3NjYWxlID0gY2FsY19zY2FsZShncmVlbl9tYXNrID4+IGdyZWVuX3NoaWZ0KTsKKyAgICAg ICAgIGJsdWVfc2hpZnQgPSBjYWxjX3NoaWZ0KGJsdWVfbWFzayk7CisgICAgICAgICBpZiAoKChi bHVlX21hc2sgPj4gYmx1ZV9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKKy0gICAgICAgIGJsdWVfc2NhbGUgPSAyNTYgLyAoKGJsdWVfbWFzayA+PiBibHVlX3No aWZ0KSArIDEpOworKyAgICAgICAgYmx1ZV9zY2FsZSA9IGNhbGNfc2NhbGUoYmx1ZV9tYXNrID4+ IGJsdWVfc2hpZnQpOworICAgICAgICAgYWxwaGFfc2hpZnQgPSBjYWxjX3NoaWZ0KGFscGhhX21h c2spOworICAgICAgICAgaWYgKCgoYWxwaGFfbWFzayA+PiBhbHBoYV9zaGlmdCkgKyAxKSA9PSAw KQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgICAgIGFscGhhX3NjYWxlID0gMjU2 IC8gKChhbHBoYV9tYXNrID4+IGFscGhhX3NoaWZ0KSArIDEpOworKyAgICAgICAgYWxwaGFfc2Nh bGUgPSBjYWxjX3NjYWxlKGFscGhhX21hc2sgPj4gYWxwaGFfc2hpZnQpOworICAgICB9IGVsc2Ug aWYgKGNvbXAgPT0gQk1QX1JHQiAmJiAobmJpdHMgPT0gMjQgfHwgbmJpdHMgPT0gMzIpKSB7Cisg ICAgICAgICBibHVlX21hc2sgPSAweDAwMDAwMGZmOworICAgICAgICAgZ3JlZW5fbWFzayA9IDB4 MDAwMGZmMDA7CitAQCAtMzI4LDE3ICszNTQsMTUgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9k eShRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAor ICAgICAgICAgYmx1ZV9zaGlmdCA9IDA7CisgICAgICAgICBncmVlbl9zaGlmdCA9IDg7CisgICAg ICAgICByZWRfc2hpZnQgPSAxNjsKKy0gICAgICAgIGJsdWVfc2NhbGUgPSBncmVlbl9zY2FsZSA9 IHJlZF9zY2FsZSA9IDE7CisrICAgICAgICBibHVlX3NjYWxlID0gZ3JlZW5fc2NhbGUgPSByZWRf c2NhbGUgPSAwOworICAgICB9IGVsc2UgaWYgKGNvbXAgPT0gQk1QX1JHQiAmJiBuYml0cyA9PSAx NikgeworICAgICAgICAgYmx1ZV9tYXNrID0gMHgwMDFmOworICAgICAgICAgZ3JlZW5fbWFzayA9 IDB4MDNlMDsKKyAgICAgICAgIHJlZF9tYXNrID0gMHg3YzAwOworICAgICAgICAgYmx1ZV9zaGlm dCA9IDA7CistICAgICAgICBncmVlbl9zaGlmdCA9IDI7CistICAgICAgICByZWRfc2hpZnQgPSA3 OworLSAgICAgICAgcmVkX3NjYWxlID0gMTsKKy0gICAgICAgIGdyZWVuX3NjYWxlID0gMTsKKy0g ICAgICAgIGJsdWVfc2NhbGUgPSA4OworKyAgICAgICAgZ3JlZW5fc2hpZnQgPSA1OworKyAgICAg ICAgcmVkX3NoaWZ0ID0gMTA7CisrICAgICAgICBibHVlX3NjYWxlID0gZ3JlZW5fc2NhbGUgPSBy ZWRfc2NhbGUgPSAzOworICAgICB9CisgCisgI2lmIDAKK0BAIC01NDQsMTAgKzU2OCwxMCBAQCBz dGF0aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hE UiAmYmksIHFpbnQ2NCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICBjIHw9ICoodWNoYXIq KShiKzIpPDwxNjsKKyAgICAgICAgICAgICAgICAgaWYgKG5iaXRzID4gMjQpCisgICAgICAgICAg ICAgICAgICAgICBjIHw9ICoodWNoYXIqKShiKzMpPDwyNDsKKy0gICAgICAgICAgICAgICAgKnAr KyA9IHFSZ2JhKCgoYyAmIHJlZF9tYXNrKSA+PiByZWRfc2hpZnQpICogcmVkX3NjYWxlLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGMgJiBncmVlbl9tYXNrKSA+ PiBncmVlbl9zaGlmdCkgKiBncmVlbl9zY2FsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKChjICYgYmx1ZV9tYXNrKSA+PiBibHVlX3NoaWZ0KSAqIGJsdWVfc2Nh bGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcCA/ICgo YyAmIGFscGhhX21hc2spID4+IGFscGhhX3NoaWZ0KSAqIGFscGhhX3NjYWxlIDogMHhmZik7Cisr ICAgICAgICAgICAgICAgICpwKysgPSBxUmdiYShhcHBseV9zY2FsZSgoYyAmIHJlZF9tYXNrKSA+ PiByZWRfc2hpZnQsIHJlZF9zY2FsZSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh cHBseV9zY2FsZSgoYyAmIGdyZWVuX21hc2spID4+IGdyZWVuX3NoaWZ0LCBncmVlbl9zY2FsZSks CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBseV9zY2FsZSgoYyAmIGJsdWVfbWFz aykgPj4gYmx1ZV9zaGlmdCwgYmx1ZV9zY2FsZSksCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0cmFuc3AgPyBhcHBseV9zY2FsZSgoYyAmIGFscGhhX21hc2spID4+IGFscGhhX3NoaWZ0 LCBhbHBoYV9zY2FsZSkgOiAweGZmKTsKKyAgICAgICAgICAgICAgICAgYiArPSBuYml0cy84Owor ICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9p bWFnZS9xaW1hZ2UuY3BwIGIvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcAoraW5kZXgg NzE1MmFjMTYwNy4uMGRmNzcyNTY0YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdl L3FpbWFnZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAKK0BAIC00 Njk0LDYgKzQ2OTQsOCBAQCBRSW1hZ2UgUUltYWdlOjpzbW9vdGhTY2FsZWQoaW50IHcsIGludCBo KSBjb25zdCB7Cisgc3RhdGljIFFJbWFnZSByb3RhdGVkOTAoY29uc3QgUUltYWdlICZpbWFnZSkK KyB7CisgICAgIFFJbWFnZSBvdXQoaW1hZ2UuaGVpZ2h0KCksIGltYWdlLndpZHRoKCksIGltYWdl LmZvcm1hdCgpKTsKKysgICAgaWYgKG91dC5pc051bGwoKSkKKysgICAgICAgIHJldHVybiBvdXQ7 CisgICAgIGNvcHlNZXRhZGF0YSgmb3V0LCBpbWFnZSk7CisgICAgIGlmIChpbWFnZS5jb2xvckNv dW50KCkgPiAwKQorICAgICAgICAgb3V0LnNldENvbG9yVGFibGUoaW1hZ2UuY29sb3JUYWJsZSgp KTsKK0BAIC00NzIyLDYgKzQ3MjQsOCBAQCBzdGF0aWMgUUltYWdlIHJvdGF0ZWQxODAoY29uc3Qg UUltYWdlICZpbWFnZSkKKyAgICAgICAgIHJldHVybiBpbWFnZS5taXJyb3JlZCh0cnVlLCB0cnVl KTsKKyAKKyAgICAgUUltYWdlIG91dChpbWFnZS53aWR0aCgpLCBpbWFnZS5oZWlnaHQoKSwgaW1h Z2UuZm9ybWF0KCkpOworKyAgICBpZiAob3V0LmlzTnVsbCgpKQorKyAgICAgICAgcmV0dXJuIG91 dDsKKyAgICAgY29weU1ldGFkYXRhKCZvdXQsIGltYWdlKTsKKyAgICAgaWYgKGltYWdlLmNvbG9y Q291bnQoKSA+IDApCisgICAgICAgICBvdXQuc2V0Q29sb3JUYWJsZShpbWFnZS5jb2xvclRhYmxl KCkpOworQEAgLTQ3MzQsNiArNDczOCw4IEBAIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDE4MChjb25z dCBRSW1hZ2UgJmltYWdlKQorIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDI3MChjb25zdCBRSW1hZ2Ug JmltYWdlKQorIHsKKyAgICAgUUltYWdlIG91dChpbWFnZS5oZWlnaHQoKSwgaW1hZ2Uud2lkdGgo KSwgaW1hZ2UuZm9ybWF0KCkpOworKyAgICBpZiAob3V0LmlzTnVsbCgpKQorKyAgICAgICAgcmV0 dXJuIG91dDsKKyAgICAgY29weU1ldGFkYXRhKCZvdXQsIGltYWdlKTsKKyAgICAgaWYgKGltYWdl LmNvbG9yQ291bnQoKSA+IDApCisgICAgICAgICBvdXQuc2V0Q29sb3JUYWJsZShpbWFnZS5jb2xv clRhYmxlKCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNw cCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNwcAoraW5kZXggZDZjY2FmZjhlZC4u NDU1MDg4MjQxYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNw cAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwCitAQCAtMjUxLDcgKzI1 MSw4IEBAIHZvaWQgUUN1cnNvcjo6c2V0UG9zKFFTY3JlZW4gKnNjcmVlbiwgaW50IHgsIGludCB5 KQorIHsKKyAgICAgaWYgKHNjcmVlbikgeworICAgICAgICAgaWYgKFFQbGF0Zm9ybUN1cnNvciAq Y3Vyc29yID0gc2NyZWVuLT5oYW5kbGUoKS0+Y3Vyc29yKCkpIHsKKy0gICAgICAgICAgICBjb25z dCBRUG9pbnQgZGV2aWNlUG9zID0gUUhpZ2hEcGk6OnRvTmF0aXZlUGl4ZWxzKFFQb2ludCh4LCB5 KSwgc2NyZWVuKTsKKysgICAgICAgICAgICBjb25zdCBRUG9pbnQgcG9zKHgsIHkpOworKyAgICAg ICAgICAgIGNvbnN0IFFQb2ludCBkZXZpY2VQb3MgPSBRSGlnaERwaTo6dG9OYXRpdmVQaXhlbHMo cG9zLCBzY3JlZW4tPnZpcnR1YWxTaWJsaW5nQXQocG9zKSk7CisgICAgICAgICAgICAgLy8gTmVl ZCB0byBjaGVjaywgc2luY2Ugc29tZSBYIHNlcnZlcnMgZ2VuZXJhdGUgbnVsbCBtb3VzZSBtb3Zl CisgICAgICAgICAgICAgLy8gZXZlbnRzLCBjYXVzaW5nIGxvb3BpbmcgaW4gYXBwbGljYXRpb25z IHdoaWNoIGNhbGwgc2V0UG9zKCkgb24KKyAgICAgICAgICAgICAvLyBldmVyeSBtb3VzZSBtb3Zl IGV2ZW50LgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxp bmcuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAKK2luZGV4 IDliYmYyNzczYTkuLjNhYzRhNGQ4YjYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FoaWdo ZHBpc2NhbGluZy5jcHAKK0BAIC01ODAsOSArNTgwLDggQEAgdm9pZCBRSGlnaERwaVNjYWxpbmc6 OnNldFNjcmVlbkZhY3RvcihRU2NyZWVuICpzY3JlZW4sIHFyZWFsIGZhY3RvcikKKyAgICAgZWxz ZQorICAgICAgICAgcU5hbWVkU2NyZWVuU2NhbGVGYWN0b3JzKCktPmluc2VydChuYW1lLCBmYWN0 b3IpOworIAorLSAgICAvLyBoYWNrIHRvIGZvcmNlIHJlLWV2YWx1YXRpb24gb2Ygc2NyZWVuIGdl b21ldHJ5CisgICAgIGlmIChzY3JlZW4tPmhhbmRsZSgpKQorLSAgICAgICAgc2NyZWVuLT5kX2Z1 bmMoKS0+c2V0UGxhdGZvcm1TY3JlZW4oc2NyZWVuLT5oYW5kbGUoKSk7IC8vIHVwZGF0ZXMgZ2Vv bWV0cmllcyBiYXNlZCBvbiBzY2FsZSBmYWN0b3IKKysgICAgICAgIHNjcmVlbi0+ZF9mdW5jKCkt PnVwZGF0ZUxvZ2ljYWxEcGkoKTsKKyB9CisgCisgUVBvaW50IFFIaWdoRHBpU2NhbGluZzo6bWFw UG9zaXRpb25Ub05hdGl2ZShjb25zdCBRUG9pbnQgJnBvcywgY29uc3QgUVBsYXRmb3JtU2NyZWVu ICpwbGF0Zm9ybVNjcmVlbikKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtl eXNlcXVlbmNlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwCitp bmRleCBhNzViOGVmOTIwLi40ZjJkMjk0NzM5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkv a2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5 c2VxdWVuY2UuY3BwCitAQCAtNzAxLDYgKzcwMSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsK KyAgICAgeyBRdDo6S2V5X1RvdWNocGFkVG9nZ2xlLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9y dGN1dCIsICJUb3VjaHBhZCBUb2dnbGUiKSB9LAorICAgICB7IFF0OjpLZXlfVG91Y2hwYWRPbiwg IFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiVG91Y2hwYWQgT24iKSB9LAorICAgICB7 IFF0OjpLZXlfVG91Y2hwYWRPZmYsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlRv dWNocGFkIE9mZiIpIH0sCisrICAgIHsgUXQ6OktleV9TaGlmdCwgIFFUX1RSQU5TTEFURV9OT09Q KCJRU2hvcnRjdXQiLCAiU2hpZnQiKSB9LAorKyAgICB7IFF0OjpLZXlfQ29udHJvbCwgIFFUX1RS QU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiQ29udHJvbCIpIH0sCisrICAgIHsgUXQ6OktleV9B bHQsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIkFsdCIpIH0sCisrICAgIHsgUXQ6 OktleV9NZXRhLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJNZXRhIikgfSwKKyAK KyB9OworIHN0YXRpYyBRX0NPTlNURVhQUiBpbnQgbnVtS2V5TmFtZXMgPSBzaXplb2Yga2V5bmFt ZSAvIHNpemVvZiAqa2V5bmFtZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwv cXBsYXRmb3Jtc2VydmljZXMuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNl cnZpY2VzLmNwcAoraW5kZXggZmRjNmE2YzRhYS4uYWM0N2Y5OGM1ZCAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAKKysrKyBiL3F0YmFzZS9z cmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAKK0BAIC01NSw2ICs1NSwxOSBAQCBR VF9CRUdJTl9OQU1FU1BBQ0UKKyAgICAgXGJyaWVmIFRoZSBRUGxhdGZvcm1TZXJ2aWNlcyBwcm92 aWRlcyB0aGUgYmFja2VuZCBmb3IgZGVza3RvcC1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCisgKi8K KyAKKysvKiEKKysgICAgXGVudW0gUVBsYXRmb3JtU2VydmljZXM6OkNhcGFiaWxpdHkKKysKKysg ICAgQ2FwYWJpbGl0aWVzIGFyZSB1c2VkIHRvIGRldGVybWluZSBhIHNwZWNpZmljIHBsYXRmb3Jt IHNlcnZpY2UncyBhdmFpbGFiaWxpdHkuCisrCisrICAgIFx2YWx1ZSBDb2xvclBpY2tpbmdGcm9t U2NyZWVuIFRoZSBwbGF0Zm9ybSBuYXRpdmVseSBzdXBwb3J0cyBjb2xvciBwaWNraW5nIGZyb20g c2NyZWVuLgorKyAgICBUaGlzIGNhcGFiaWxpdHkgaW5kaWNhdGVzIHRoYXQgdGhlIHBsYXRmb3Jt IHN1cHBvcnRzICJvcGFxdWUiIGNvbG9yIHBpY2tpbmcsIHdoZXJlIHRoZQorKyAgICBwbGF0Zm9y bSBpbXBsZW1lbnRzIGEgY29tcGxldGUgdXNlciBleHBlcmllbmNlIGZvciBjb2xvciBwaWNraW5n IGFuZCBvdXRwdXRzIGEgY29sb3IuCisrICAgIFRoaXMgaXMgaW4gY29udHJhc3QgdG8gdGhlIGFw cGxpY2F0aW9uIGltcGxlbWVudGluZyB0aGUgY29sb3IgcGlja2luZyB1c2VyIGV4cGVyaWVuY2UK KysgICAgKHRha2luZyBjYXJlIG9mIHNob3dpbmcgYSBjcm9zcyBoYWlyLCBpbnN0cnVjdGluZyB0 aGUgcGxhdGZvcm0gaW50ZWdyYXRpb24gdG8gb2J0YWluCisrICAgIHRoZSBjb2xvciBhdCBhIGdp dmVuIHBpeGVsLCBldGMuKS4gVGhlIHJlbGF0ZWQgc2VydmljZSBmdW5jdGlvbiBpcyBwaWNrQ29s b3IoKS4KKysgKi8KKysKKyBRUGxhdGZvcm1TZXJ2aWNlczo6UVBsYXRmb3JtU2VydmljZXMoKQor IHsgfQorIAorQEAgLTg1LDUgKzk4LDE2IEBAIFFCeXRlQXJyYXkgUVBsYXRmb3JtU2VydmljZXM6 OmRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0CisgICAgIHJldHVybiBRQnl0ZUFycmF5KCJVTktO T1dOIik7CisgfQorIAorK1FQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqUVBsYXRmb3JtU2Vy dmljZXM6OmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCkKKyt7CisrICAgIFFfVU5VU0VEKHBh cmVudCk7CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKytib29sIFFQbGF0Zm9ybVNlcnZp Y2VzOjpoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3QKKyt7CisrICAg IFFfVU5VU0VEKGNhcGFiaWxpdHkpCisrICAgIHJldHVybiBmYWxzZTsKKyt9CisgCisgUVRfRU5E X05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1z ZXJ2aWNlcy5oIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmgKK2lu ZGV4IDVkZTk2Y2ZhN2QuLmE4YjJhNGNlNzEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9r ZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3Fw bGF0Zm9ybXNlcnZpY2VzLmgKK0BAIC01MCwxNiArNTAsMzIgQEAKKyAvLworIAorICNpbmNsdWRl IDxRdEd1aS9xdGd1aWdsb2JhbC5oPgorKyNpbmNsdWRlIDxRdENvcmUvcW9iamVjdC5oPgorIAor IFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFVcmw7CisrY2xhc3MgUVdpbmRvdzsKKysK KytjbGFzcyBRX0dVSV9FWFBPUlQgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyIDogcHVibGlj IFFPYmplY3QKKyt7CisrICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAgICB1c2luZyBRT2JqZWN0 OjpRT2JqZWN0OworKyAgICB2aXJ0dWFsIHZvaWQgcGlja0NvbG9yKCkgPSAwOworK1FfU0lHTkFM UzoKKysgICAgdm9pZCBjb2xvclBpY2tlZChjb25zdCBRQ29sb3IgJmNvbG9yKTsKKyt9OworIAor IGNsYXNzIFFfR1VJX0VYUE9SVCBRUGxhdGZvcm1TZXJ2aWNlcworIHsKKyBwdWJsaWM6CisgICAg IFFfRElTQUJMRV9DT1BZX01PVkUoUVBsYXRmb3JtU2VydmljZXMpCisgCisrICAgIGVudW0gQ2Fw YWJpbGl0eSB7CisrICAgICAgICBDb2xvclBpY2tpbmcsCisrICAgIH07CisrCisgICAgIFFQbGF0 Zm9ybVNlcnZpY2VzKCk7CisgICAgIHZpcnR1YWwgflFQbGF0Zm9ybVNlcnZpY2VzKCkgeyB9Cisg CitAQCAtNjcsNiArODMsMTAgQEAgcHVibGljOgorICAgICB2aXJ0dWFsIGJvb2wgb3BlbkRvY3Vt ZW50KGNvbnN0IFFVcmwgJnVybCk7CisgCisgICAgIHZpcnR1YWwgUUJ5dGVBcnJheSBkZXNrdG9w RW52aXJvbm1lbnQoKSBjb25zdDsKKysKKysgICAgdmlydHVhbCBib29sIGhhc0NhcGFiaWxpdHko Q2FwYWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdDsKKysKKysgICAgdmlydHVhbCBRUGxhdGZvcm1T ZXJ2aWNlQ29sb3JQaWNrZXIgKmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCA9IG51bGxwdHIp OworIH07CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3Vp L2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRm b3JtdGhlbWUuY3BwCitpbmRleCA3MTUyMWMwMzM5Li4yMzI1ODczMjQ1IDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcAorQEAgLTE2Myw2ICsxNjMsOCBAQCBRVF9C RUdJTl9OQU1FU1BBQ0UKKyAKKyAgICAgXHZhbHVlIFNob3dTaG9ydGN1dHNJbkNvbnRleHRNZW51 cyAoYm9vbCkgV2hldGhlciB0byBkaXNwbGF5IHNob3J0Y3V0IGtleSBzZXF1ZW5jZXMgaW4gY29u dGV4dCBtZW51cy4KKyAKKysgICAgXHZhbHVlIEJ1dHRvblByZXNzS2V5cyAoUUxpc3Q8UXQ6Oktl eT4pIEEgbGlzdCBvZiBrZXlzIHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJlc3MgYnV0dG9ucyB2aWEg a2V5Ym9hcmQgaW5wdXQuCisrCisgICAgIFxzYSB0aGVtZUhpbnQoKSwgUVN0eWxlOjpwaXhlbE1l dHJpYygpCisgKi8KKyAKK0BAIC01NjMsNiArNTY1LDggQEAgUVZhcmlhbnQgUVBsYXRmb3JtVGhl bWU6OmRlZmF1bHRUaGVtZUhpbnQoVGhlbWVIaW50IGhpbnQpCisgICAgICAgICB9CisgICAgIGNh c2UgTW91c2VRdWlja1NlbGVjdGlvblRocmVzaG9sZDoKKyAgICAgICAgIHJldHVybiBRVmFyaWFu dCgxMCk7CisrICAgIGNhc2UgQnV0dG9uUHJlc3NLZXlzOgorKyAgICAgICAgcmV0dXJuIFFWYXJp YW50Ojpmcm9tVmFsdWUoUUxpc3Q8UXQ6OktleT4oeyBRdDo6S2V5X1NwYWNlLCBRdDo6S2V5X1Nl bGVjdCB9KSk7CisgICAgIH0KKyAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisgfQorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oIGIvcXRiYXNlL3NyYy9n dWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmgKK2luZGV4IDMxODVmYzQ1NDEuLjdlNmM5ZDU3NDAg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuaAorKysr IGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmgKK0BAIC0xMjAsNyArMTIw LDggQEAgcHVibGljOgorICAgICAgICAgVG91Y2hEb3VibGVUYXBEaXN0YW5jZSwKKyAgICAgICAg IFNob3dTaG9ydGN1dHNJbkNvbnRleHRNZW51cywKKyAgICAgICAgIEljb25GYWxsYmFja1NlYXJj aFBhdGhzLAorLSAgICAgICAgTW91c2VRdWlja1NlbGVjdGlvblRocmVzaG9sZAorKyAgICAgICAg TW91c2VRdWlja1NlbGVjdGlvblRocmVzaG9sZCwKKysgICAgICAgIEJ1dHRvblByZXNzS2V5cwor ICAgICB9OworIAorICAgICBlbnVtIERpYWxvZ1R5cGUgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvZ3VpL2tlcm5lbC9xc2NyZWVuLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVu LmNwcAoraW5kZXggOGUwZWIzNTExNi4uNWQxNzJhNThkZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvZ3VpL2tlcm5lbC9xc2NyZWVuLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3Fz Y3JlZW4uY3BwCitAQCAtNzcsNiArNzcsMTIgQEAgUVNjcmVlbjo6UVNjcmVlbihRUGxhdGZvcm1T Y3JlZW4gKnNjcmVlbikKKyAgICAgZC0+c2V0UGxhdGZvcm1TY3JlZW4oc2NyZWVuKTsKKyB9Cisg Cisrdm9pZCBRU2NyZWVuUHJpdmF0ZTo6dXBkYXRlTG9naWNhbERwaSgpCisreworKyAgICBsb2dp Y2FsRHBpID0gUVBsYXRmb3JtU2NyZWVuOjpvdmVycmlkZURwaShwbGF0Zm9ybVNjcmVlbi0+bG9n aWNhbERwaSgpKTsKKysgICAgdXBkYXRlR2VvbWV0cmllc1dpdGhTaWduYWxzKCk7IC8vIHVwZGF0 ZXMgZ2VvbWV0cmllcyBiYXNlZCBvbiBzY2FsZSBmYWN0b3IKKyt9CisrCisgdm9pZCBRU2NyZWVu UHJpdmF0ZTo6dXBkYXRlR2VvbWV0cmllc1dpdGhTaWduYWxzKCkKKyB7CisgICAgIGNvbnN0IFFS ZWN0IG9sZEdlb21ldHJ5ID0gZ2VvbWV0cnk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkv a2VybmVsL3FzY3JlZW5fcC5oIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW5fcC5oCitp bmRleCA3ZGE1NDJjMjVlLi5lNTBmYzMxOTBiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkv a2VybmVsL3FzY3JlZW5fcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9w LmgKK0BAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKKyAgICAgICAgIGdlb21ldHJ5ID0gcGxhdGZv cm1TY3JlZW4tPmRldmljZUluZGVwZW5kZW50R2VvbWV0cnkoKTsKKyAgICAgICAgIGF2YWlsYWJs ZUdlb21ldHJ5ID0gUUhpZ2hEcGk6OmZyb21OYXRpdmUocGxhdGZvcm1TY3JlZW4tPmF2YWlsYWJs ZUdlb21ldHJ5KCksIFFIaWdoRHBpU2NhbGluZzo6ZmFjdG9yKHBsYXRmb3JtU2NyZWVuKSwgZ2Vv bWV0cnkudG9wTGVmdCgpKTsKKyAgICAgfQorKyAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxEcGkoKTsK KyAKKyAgICAgdm9pZCB1cGRhdGVQcmltYXJ5T3JpZW50YXRpb24oKTsKKyAgICAgdm9pZCB1cGRh dGVHZW9tZXRyaWVzV2l0aFNpZ25hbHMoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9w YWludGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJs ZW5kZnVuY3Rpb25zX3AuaAoraW5kZXggMDgwZGE5OGVjNC4uNjk5N2Q2MmIzYyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgKKysrKyBiL3F0 YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgKK0BAIC0yNDYsMjUgKzI0 NiwzMiBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhl bHMsIGludCBkYnBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHVk eCwgaW50IGR2ZHgsIGludCBkdWR5LCBpbnQgZHZkeSwgaW50IHUwLCBpbnQgdjAsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsZW5kZXIgYmxlbmRlcikKKyB7CistICAgIGlu dCBmcm9tWSA9IHFNYXgocVJvdW5kKHRvcFkpLCBjbGlwLnRvcCgpKTsKKy0gICAgaW50IHRvWSA9 IHFNaW4ocVJvdW5kKGJvdHRvbVkpLCBjbGlwLnRvcCgpICsgY2xpcC5oZWlnaHQoKSk7CisrICAg IHFpbnQ2NCBmcm9tWSA9IHFNYXgocVJvdW5kKHRvcFkpLCBjbGlwLnRvcCgpKTsKKysgICAgcWlu dDY0IHRvWSA9IHFNaW4ocVJvdW5kKGJvdHRvbVkpLCBjbGlwLnRvcCgpICsgY2xpcC5oZWlnaHQo KSk7CisgICAgIGlmIChmcm9tWSA+PSB0b1kpCisgICAgICAgICByZXR1cm47CisgCisgICAgIHFy ZWFsIGxlZnRTbG9wZSA9IChib3R0b21MZWZ0LnggLSB0b3BMZWZ0LngpIC8gKGJvdHRvbUxlZnQu eSAtIHRvcExlZnQueSk7CisgICAgIHFyZWFsIHJpZ2h0U2xvcGUgPSAoYm90dG9tUmlnaHQueCAt IHRvcFJpZ2h0LngpIC8gKGJvdHRvbVJpZ2h0LnkgLSB0b3BSaWdodC55KTsKKy0gICAgaW50IGR4 X2wgPSBpbnQobGVmdFNsb3BlICogMHgxMDAwMCk7CistICAgIGludCBkeF9yID0gaW50KHJpZ2h0 U2xvcGUgKiAweDEwMDAwKTsKKy0gICAgaW50IHhfbCA9IGludCgodG9wTGVmdC54ICsgKHFyZWFs KDAuNSkgKyBmcm9tWSAtIHRvcExlZnQueSkgKiBsZWZ0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4 MTAwMDApOworLSAgICBpbnQgeF9yID0gaW50KCh0b3BSaWdodC54ICsgKHFyZWFsKDAuNSkgKyBm cm9tWSAtIHRvcFJpZ2h0LnkpICogcmlnaHRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7 CistCistICAgIGludCBmcm9tWCwgdG9YLCB4MSwgeDIsIHUsIHYsIGksIGlpOworKyAgICBxaW50 NjQgZHhfbCA9IHFpbnQ2NChsZWZ0U2xvcGUgKiAweDEwMDAwKTsKKysgICAgcWludDY0IGR4X3Ig PSBxaW50NjQocmlnaHRTbG9wZSAqIDB4MTAwMDApOworKyAgICBxaW50NjQgeF9sID0gcWludDY0 KCh0b3BMZWZ0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wTGVmdC55KSAqIGxlZnRTbG9w ZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7CisrICAgIHFpbnQ2NCB4X3IgPSBxaW50NjQoKHRv cFJpZ2h0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wUmlnaHQueSkgKiByaWdodFNsb3Bl ICsgcXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKysKKysgICAgcWludDY0IHNvdXJjZVJlY3RUb3Ag PSBxaW50NjQoc291cmNlUmVjdC50b3AoKSk7CisrICAgIHFpbnQ2NCBzb3VyY2VSZWN0TGVmdCA9 IHFpbnQ2NChzb3VyY2VSZWN0LmxlZnQoKSk7CisrICAgIHFpbnQ2NCBzb3VyY2VSZWN0V2lkdGgg PSBxaW50NjQoc291cmNlUmVjdC53aWR0aCgpKTsKKysgICAgcWludDY0IHNvdXJjZVJlY3RIZWln aHQgPSBxaW50NjQoc291cmNlUmVjdC5oZWlnaHQoKSk7CisrICAgIHFpbnQ2NCBjbGlwTGVmdCA9 IHFpbnQ2NChjbGlwLmxlZnQoKSk7CisrICAgIHFpbnQ2NCBjbGlwV2lkdGggPSBxaW50NjQoY2xp cC53aWR0aCgpKTsKKysKKysgICAgcWludDY0IGZyb21YLCB0b1gsIHgxLCB4MiwgdSwgdiwgaSwg aWk7CisgICAgIERlc3RUICpsaW5lOworLSAgICBmb3IgKGludCB5ID0gZnJvbVk7IHkgPCB0b1k7 ICsreSkgeworKyAgICBmb3IgKHFpbnQ2NCB5ID0gZnJvbVk7IHkgPCB0b1k7ICsreSkgeworICAg ICAgICAgbGluZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGVzdFQgKj4ocmVpbnRlcnByZXRfY2FzdDx1 Y2hhciAqPihkZXN0UGl4ZWxzKSArIHkgKiBkYnBsKTsKKyAKKy0gICAgICAgIGZyb21YID0gcU1h eCh4X2wgPj4gMTYsIGNsaXAubGVmdCgpKTsKKy0gICAgICAgIHRvWCA9IHFNaW4oeF9yID4+IDE2 LCBjbGlwLmxlZnQoKSArIGNsaXAud2lkdGgoKSk7CisrICAgICAgICBmcm9tWCA9IHFNYXgoeF9s ID4+IDE2LCBjbGlwTGVmdCk7CisrICAgICAgICB0b1ggPSBxTWluKHhfciA+PiAxNiwgY2xpcExl ZnQgKyBjbGlwV2lkdGgpOworICAgICAgICAgaWYgKGZyb21YIDwgdG9YKSB7CisgICAgICAgICAg ICAgLy8gQmVjYXVzZSBvZiByb3VuZGluZywgd2UgY2FuIGdldCBzb3VyY2UgY29vcmRpbmF0ZXMg b3V0c2lkZSB0aGUgc291cmNlIGltYWdlLgorICAgICAgICAgICAgIC8vIENsYW1wIHRoZXNlIGNv b3JkaW5hdGVzIHRvIHRoZSBzb3VyY2UgcmVjdCB0byBhdm9pZCBzZWdtZW50YXRpb24gZmF1bHQg YW5kCitAQCAtMjc1LDEwICsyODIsMTAgQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVy aXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICB1ID0geDEgKiBk dWR4ICsgeSAqIGR1ZHkgKyB1MDsKKyAgICAgICAgICAgICB2ID0geDEgKiBkdmR4ICsgeSAqIGR2 ZHkgKyB2MDsKKyAgICAgICAgICAgICBmb3IgKDsgeDEgPCB0b1g7ICsreDEpIHsKKy0gICAgICAg ICAgICAgICAgaW50IHV1ID0gdSA+PiAxNjsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gdiA+ PiAxNjsKKy0gICAgICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJjZVJlY3QubGVmdCgpICYmIHV1 IDwgc291cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VSZWN0LndpZHRoKCkKKy0gICAgICAgICAgICAg ICAgICAgICYmIHZ2ID49IHNvdXJjZVJlY3QudG9wKCkgJiYgdnYgPCBzb3VyY2VSZWN0LnRvcCgp ICsgc291cmNlUmVjdC5oZWlnaHQoKSkgeworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSB1 ID4+IDE2OworKyAgICAgICAgICAgICAgICBxaW50NjQgdnYgPSB2ID4+IDE2OworKyAgICAgICAg ICAgICAgICBpZiAodXUgPj0gc291cmNlUmVjdExlZnQgJiYgdXUgPCBzb3VyY2VSZWN0TGVmdCAr IHNvdXJjZVJlY3RXaWR0aAorKyAgICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVj dFRvcCAmJiB2diA8IHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0KSB7CisgICAgICAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICB1ICs9IGR1ZHg7CitAQCAtMjkwLDEwICsyOTcsMTAgQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1h Z2VfcmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICB1 ID0gKHgyIC0gMSkgKiBkdWR4ICsgeSAqIGR1ZHkgKyB1MDsKKyAgICAgICAgICAgICB2ID0gKHgy IC0gMSkgKiBkdmR4ICsgeSAqIGR2ZHkgKyB2MDsKKyAgICAgICAgICAgICBmb3IgKDsgeDIgPiB4 MTsgLS14MikgeworLSAgICAgICAgICAgICAgICBpbnQgdXUgPSB1ID4+IDE2OworLSAgICAgICAg ICAgICAgICBpbnQgdnYgPSB2ID4+IDE2OworLSAgICAgICAgICAgICAgICBpZiAodXUgPj0gc291 cmNlUmVjdC5sZWZ0KCkgJiYgdXUgPCBzb3VyY2VSZWN0LmxlZnQoKSArIHNvdXJjZVJlY3Qud2lk dGgoKQorLSAgICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVjdC50b3AoKSAmJiB2 diA8IHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgpKSB7CisrICAgICAgICAg ICAgICAgIHFpbnQ2NCB1dSA9IHUgPj4gMTY7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9 IHYgPj4gMTY7CisrICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0TGVmdCAmJiB1 dSA8IHNvdXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoCisrICAgICAgICAgICAgICAgICAg ICAmJiB2diA+PSBzb3VyY2VSZWN0VG9wICYmIHZ2IDwgc291cmNlUmVjdFRvcCArIHNvdXJjZVJl Y3RIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgIHUgLT0gZHVkeDsKK0BAIC0zMDgsOCArMzE1LDggQEAgdm9p ZCBxdF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJw bCwKKyAgICAgICAgICAgICAvLyBCZWdpbm5pbmcgb2YgdGhlIHNjYW4gbGluZSwgd2l0aCBwZXIt cGl4ZWwgY2hlY2tzLgorICAgICAgICAgICAgIGkgPSB4MSAtIGZyb21YOworICAgICAgICAgICAg IHdoaWxlIChpKSB7CistICAgICAgICAgICAgICAgIGludCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0 LmxlZnQoKSwgdSA+PiAxNiwgc291cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VSZWN0LndpZHRoKCkg LSAxKTsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3QudG9wKCks IHYgPj4gMTYsIHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgpIC0gMSk7Cisr ICAgICAgICAgICAgICAgIHFpbnQ2NCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0TGVmdCwgdSA+PiAx Niwgc291cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGggLSAxKTsKKysgICAgICAgICAgICAg ICAgcWludDY0IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3RUb3AsIHYgPj4gMTYsIHNvdXJjZVJlY3RU b3AgKyBzb3VyY2VSZWN0SGVpZ2h0IC0gMSk7CisgICAgICAgICAgICAgICAgIGJsZW5kZXIud3Jp dGUobGluZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBTcmNUICo+KHJlaW50ZXJwcmV0X2Nhc3Q8 Y29uc3QgdWNoYXIgKj4oc3JjUGl4ZWxzKSArIHZ2ICogc2JwbClbdXVdKTsKKyAgICAgICAgICAg ICAgICAgdSArPSBkdWR4OworICAgICAgICAgICAgICAgICB2ICs9IGR2ZHg7CitAQCAtMzQ4LDgg KzM1NSw4IEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBp eGVscywgaW50IGRicGwsCisgICAgICAgICAgICAgLy8gRW5kIG9mIHRoZSBzY2FuIGxpbmUsIHdp dGggcGVyLXBpeGVsIGNoZWNrcy4KKyAgICAgICAgICAgICBpID0gdG9YIC0geDI7CisgICAgICAg ICAgICAgd2hpbGUgKGkpIHsKKy0gICAgICAgICAgICAgICAgaW50IHV1ID0gcUJvdW5kKHNvdXJj ZVJlY3QubGVmdCgpLCB1ID4+IDE2LCBzb3VyY2VSZWN0LmxlZnQoKSArIHNvdXJjZVJlY3Qud2lk dGgoKSAtIDEpOworLSAgICAgICAgICAgICAgICBpbnQgdnYgPSBxQm91bmQoc291cmNlUmVjdC50 b3AoKSwgdiA+PiAxNiwgc291cmNlUmVjdC50b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkgLSAx KTsKKysgICAgICAgICAgICAgICAgcWludDY0IHV1ID0gcUJvdW5kKHNvdXJjZVJlY3RMZWZ0LCB1 ID4+IDE2LCBzb3VyY2VSZWN0TGVmdCArIHNvdXJjZVJlY3RXaWR0aCAtIDEpOworKyAgICAgICAg ICAgICAgICBxaW50NjQgdnYgPSBxQm91bmQoc291cmNlUmVjdFRvcCwgdiA+PiAxNiwgc291cmNl UmVjdFRvcCArIHNvdXJjZVJlY3RIZWlnaHQgLSAxKTsKKyAgICAgICAgICAgICAgICAgYmxlbmRl ci53cml0ZShsaW5lLCByZWludGVycHJldF9jYXN0PGNvbnN0IFNyY1QgKj4ocmVpbnRlcnByZXRf Y2FzdDxjb25zdCB1Y2hhciAqPihzcmNQaXhlbHMpICsgdnYgKiBzYnBsKVt1dV0pOworICAgICAg ICAgICAgICAgICB1ICs9IGR1ZHg7CisgICAgICAgICAgICAgICAgIHYgKz0gZHZkeDsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29sb3J0cmNsdXRfcC5oIGIvcXRiYXNl L3NyYy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaAoraW5kZXggNzZhNmE2MDgwMy4uMjRm ZDUyMmU2YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1 dF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9wLmgKK0BA IC0xMTgsNiArMTE4LDcgQEAgcHVibGljOgorICAgICAgICAgcmV0dXJuIFFSZ2JhNjQ6OmZyb21S Z2JhNjQociwgZywgYiwgcUFscGhhKHJnYjMyKSAqIDI1Nyk7CisgI2VuZGlmCisgICAgIH0KKysg ICAgUVJnYmE2NCB0b0xpbmVhcjY0KFFSZ2JhNjQpIGNvbnN0ID0gZGVsZXRlOworIAorICAgICBR UmdiIHRvTGluZWFyKFFSZ2IgcmdiMzIpIGNvbnN0CisgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2d1aS9wYWludGluZy9xZHJhd2hlbHBlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWlu dGluZy9xZHJhd2hlbHBlci5jcHAKK2luZGV4IGE2MTc5MzUwOGEuLjViYTJkMjc3YjcgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xZHJhd2hlbHBlci5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FkcmF3aGVscGVyLmNwcAorQEAgLTYwOTEsNyArNjA5MSw3 IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhbHBoYXJnYmJsZW5kX2FyZ2IzMihxdWludDMyICpkc3Qs IHVpbnQgY292ZXJhZ2UsIGNvbnN0IFFSZ2JhCisgc3RhdGljIGlubGluZSB2b2lkIHJnYkJsZW5k UGl4ZWwoUVJnYmE2NCAmZHN0LCBpbnQgY292ZXJhZ2UsIFFSZ2JhNjQgc2xpbmVhciwgY29uc3Qg UUNvbG9yVHJjTHV0ICpjb2xvclByb2ZpbGUpCisgeworICAgICAvLyBEbyBhIGdhbW1hY29ycmVj dGVkIFJHQiBhbHBoYWJsZW5kLi4uCistICAgIGNvbnN0IFFSZ2JhNjQgZGxpbmVhciA9IGNvbG9y UHJvZmlsZSA/IGNvbG9yUHJvZmlsZS0+dG9MaW5lYXI2NChkc3QpIDogZHN0OworKyAgICBjb25z dCBRUmdiYTY0IGRsaW5lYXIgPSBjb2xvclByb2ZpbGUgPyBjb2xvclByb2ZpbGUtPnRvTGluZWFy KGRzdCkgOiBkc3Q7CisgCisgICAgIFFSZ2JhNjQgYmxlbmQgPSByZ2JCbGVuZChkbGluZWFyLCBz bGluZWFyLCBjb3ZlcmFnZSk7CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRp bmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFp bnRlbmdpbmVfcmFzdGVyLmNwcAoraW5kZXggMjgzOTIzZGU1Mi4uZjA4ZWI5Y2JlZSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwCisr KysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyLmNwcAorQEAg LTU2MCwzMSArNTYwLDYgQEAgdm9pZCBRUmFzdGVyUGFpbnRFbmdpbmU6OnVwZGF0ZU1hdHJpeChj b25zdCBRVHJhbnNmb3JtICZtYXRyaXgpCisgICAgIFFSYXN0ZXJQYWludEVuZ2luZVN0YXRlICpz ID0gc3RhdGUoKTsKKyAgICAgLy8gRkFMQ09OOiBnZXQgcmlkIG9mIHRoaXMgbGluZSwgc2VlIGRy YXdJbWFnZSBjYWxsIGJlbG93LgorICAgICBzLT5tYXRyaXggPSBtYXRyaXg7CistICAgIFFUcmFu c2Zvcm06OlRyYW5zZm9ybWF0aW9uVHlwZSB0eG9wID0gcy0+bWF0cml4LnR5cGUoKTsKKy0KKy0g ICAgc3dpdGNoICh0eG9wKSB7CistCistICAgIGNhc2UgUVRyYW5zZm9ybTo6VHhOb25lOgorLSAg ICAgICAgcy0+ZmxhZ3MuaW50X3hmb3JtID0gdHJ1ZTsKKy0gICAgICAgIGJyZWFrOworLQorLSAg ICBjYXNlIFFUcmFuc2Zvcm06OlR4VHJhbnNsYXRlOgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hm b3JtID0gcXJlYWwoaW50KHMtPm1hdHJpeC5keCgpKSkgPT0gcy0+bWF0cml4LmR4KCkKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5keSgpKSkgPT0g cy0+bWF0cml4LmR5KCk7CistICAgICAgICBicmVhazsKKy0KKy0gICAgY2FzZSBRVHJhbnNmb3Jt OjpUeFNjYWxlOgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hmb3JtID0gcXJlYWwoaW50KHMtPm1h dHJpeC5keCgpKSkgPT0gcy0+bWF0cml4LmR4KCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5keSgpKSkgPT0gcy0+bWF0cml4LmR5KCkKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5tMTEoKSkpID09 IHMtPm1hdHJpeC5tMTEoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBxcmVhbChp bnQocy0+bWF0cml4Lm0yMigpKSkgPT0gcy0+bWF0cml4Lm0yMigpOworLSAgICAgICAgYnJlYWs7 CistCistICAgIGRlZmF1bHQ6IC8vIHNoZWFyIC8gcGVyc3BlY3RpdmUuLi4KKy0gICAgICAgIHMt PmZsYWdzLmludF94Zm9ybSA9IGZhbHNlOworLSAgICAgICAgYnJlYWs7CistICAgIH0KKy0KKyAg ICAgcy0+ZmxhZ3MudHhfbm9zaGVhciA9IHF0X3NjYWxlRm9yVHJhbnNmb3JtKHMtPm1hdHJpeCwg JnMtPnR4c2NhbGUpOworIAorICAgICBlbnN1cmVPdXRsaW5lTWFwcGVyKCk7CitAQCAtNjE3LDcg KzU5Miw2IEBAIFFSYXN0ZXJQYWludEVuZ2luZVN0YXRlOjpRUmFzdGVyUGFpbnRFbmdpbmVTdGF0 ZSgpCisgICAgIGZsYWdzLmJpbGluZWFyID0gZmFsc2U7CisgICAgIGZsYWdzLmxlZ2FjeV9yb3Vu ZGluZyA9IGZhbHNlOworICAgICBmbGFncy5mYXN0X3RleHQgPSB0cnVlOworLSAgICBmbGFncy5p bnRfeGZvcm0gPSB0cnVlOworICAgICBmbGFncy50eF9ub3NoZWFyID0gdHJ1ZTsKKyAgICAgZmxh Z3MuZmFzdF9pbWFnZXMgPSB0cnVlOworIAorQEAgLTE3OTMsNyArMTc2Nyw3IEBAIHZvaWQgUVJh c3RlclBhaW50RW5naW5lOjpmaWxsKGNvbnN0IFFWZWN0b3JQYXRoICZwYXRoLCBjb25zdCBRQnJ1 c2ggJmJydXNoKQorICAgICBRUmVjdEYgY3BSZWN0ID0gcGF0aC5jb250cm9sUG9pbnRSZWN0KCk7 CisgICAgIGNvbnN0IFFSZWN0RiBwYXRoRGV2aWNlUmVjdCA9IHMtPm1hdHJpeC5tYXBSZWN0KGNw UmVjdCk7CisgICAgIC8vIFNraXAgcGF0aHMgdGhhdCBieSBjb25zZXJ2YXRpdmUgZXN0aW1hdGVz IGFyZSBjb21wbGV0ZWx5IG91dHNpZGUgdGhlIHBhaW50IGRldmljZS4KKy0gICAgaWYgKCFwYXRo RGV2aWNlUmVjdC5pbnRlcnNlY3RzKFFSZWN0RihkLT5kZXZpY2VSZWN0KSkpCisrICAgIGlmICgh cGF0aERldmljZVJlY3QuaW50ZXJzZWN0cyhRUmVjdEYoZC0+ZGV2aWNlUmVjdCkpIHx8ICFwYXRo RGV2aWNlUmVjdC5pc1ZhbGlkKCkpCisgICAgICAgICByZXR1cm47CisgCisgICAgIFByb2Nlc3NT cGFucyBibGVuZCA9IGQtPmdldEJydXNoRnVuYyhwYXRoRGV2aWNlUmVjdCwgJnMtPmJydXNoRGF0 YSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jh c3Rlcl9wLmggYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3Au aAoraW5kZXggMDg5YWFkYzNmNy4uYmY3MzYzZDVhYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Z3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaAorQEAgLTExMSw3ICsxMTEsNiBAQCBw dWJsaWM6CisgICAgICAgICB1aW50IGJpbGluZWFyIDogMTsKKyAgICAgICAgIHVpbnQgbGVnYWN5 X3JvdW5kaW5nIDogMTsKKyAgICAgICAgIHVpbnQgZmFzdF90ZXh0IDogMTsKKy0gICAgICAgIHVp bnQgaW50X3hmb3JtIDogMTsKKyAgICAgICAgIHVpbnQgdHhfbm9zaGVhciA6IDE7CisgICAgICAg ICB1aW50IGZhc3RfaW1hZ2VzIDogMTsKKyAgICAgfTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cXBhaW50ZXJwYXRoLmNwcAoraW5kZXggZjk1NDRhMzI0MS4uZDgwZmFmZWFmMSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAKK0BAIC0xMjUzLDcgKzEyNTMsNyBA QCB2b2lkIFFQYWludGVyUGF0aDo6YWRkVGV4dChjb25zdCBRUG9pbnRGICZwb2ludCwgY29uc3Qg UUZvbnQgJmYsIGNvbnN0IFFTdHJpbmcgJgorIAorICAgICAgICAgaWYgKHNpLmFuYWx5c2lzLmZs YWdzIDwgUVNjcmlwdEFuYWx5c2lzOjpUYWJPck9iamVjdCkgeworICAgICAgICAgICAgIFFHbHlw aExheW91dCBnbHlwaHMgPSBlbmctPnNoYXBlZEdseXBocygmc2kpOworLSAgICAgICAgICAgIFFG b250RW5naW5lICpmZSA9IGYuZC0+ZW5naW5lRm9yU2NyaXB0KHNpLmFuYWx5c2lzLnNjcmlwdCk7 CisrICAgICAgICAgICAgUUZvbnRFbmdpbmUgKmZlID0gZW5nLT5mb250RW5naW5lKHNpKTsKKyAg ICAgICAgICAgICBRX0FTU0VSVChmZSk7CisgICAgICAgICAgICAgZmUtPmFkZE91dGxpbmVUb1Bh dGgoeCwgeSwgZ2x5cGhzLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpLmFuYWx5c2lzLmJpZGlMZXZlbCAlIDIKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9w YWludGluZy9xcGF0aGNsaXBwZXJfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhj bGlwcGVyX3AuaAoraW5kZXggOTQ0NGE4N2I3MS4uMThmNjRjNWU4YyAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYXRoY2xpcHBlcl9wLmgKKysrKyBiL3F0YmFzZS9zcmMv Z3VpL3BhaW50aW5nL3FwYXRoY2xpcHBlcl9wLmgKK0BAIC0xNTYsNyArMTU2LDcgQEAgcHVibGlj OgorICAgICBpbnQgdmVydGV4KERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0OworIAorIHByaXZh dGU6CistICAgIGludCBtX25leHRbMl1bMl07CisrICAgIGludCBtX25leHRbMl1bMl0gPSB7IHsg LTEsIC0xIH0sIHsgLTEsIC0xIH0gfTsKKyB9OworIAorIGNsYXNzIFFQYXRoU2VnbWVudHMKK0BA IC0yOTYsMTAgKzI5Niw2IEBAIGlubGluZSBRUGF0aEVkZ2U6OlFQYXRoRWRnZShpbnQgYSwgaW50 IGIpCisgICAgICwgYW5nbGUoMCkKKyAgICAgLCBpbnZBbmdsZSgwKQorIHsKKy0gICAgbV9uZXh0 WzBdWzBdID0gLTE7CistICAgIG1fbmV4dFsxXVswXSA9IC0xOworLSAgICBtX25leHRbMF1bMF0g PSAtMTsKKy0gICAgbV9uZXh0WzFdWzBdID0gLTE7CisgfQorIAorIGlubGluZSBpbnQgUVBhdGhF ZGdlOjpuZXh0KFRyYXZlcnNhbCB0cmF2ZXJzYWwsIERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAgYi9xdGJhc2Uv c3JjL2d1aS9wYWludGluZy9xcGRmLmNwcAoraW5kZXggMzA2Njc0NGYxYi4uMmM4ZDNjM2I1MyAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2d1aS9wYWludGluZy9xcGRmLmNwcAorQEAgLTI3NjAsNiArMjc2MCw4IEBAIGludCBR UGRmRW5naW5lUHJpdmF0ZTo6YWRkQnJ1c2hQYXR0ZXJuKGNvbnN0IFFUcmFuc2Zvcm0gJm0sIGJv b2wgKnNwZWNpZnlDb2xvciwKKyAgICAgICAgIHJldHVybiBncmFkaWVudEJydXNoKGJydXNoLCBt YXRyaXgsIGdTdGF0ZU9iamVjdCk7CisgICAgIH0KKyAKKysgICAgbWF0cml4ID0gYnJ1c2gudHJh bnNmb3JtKCkgKiBtYXRyaXg7CisrCisgICAgIGlmICgoIWJydXNoLmlzT3BhcXVlKCkgJiYgYnJ1 c2guc3R5bGUoKSA8IFF0OjpMaW5lYXJHcmFkaWVudFBhdHRlcm4pIHx8IG9wYWNpdHkgIT0gMS4w KQorICAgICAgICAgKmdTdGF0ZU9iamVjdCA9IGFkZENvbnN0YW50QWxwaGFPYmplY3QocVJvdW5k KGJydXNoLmNvbG9yKCkuYWxwaGEoKSAqIG9wYWNpdHkpLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcVJvdW5kKHBlbi5jb2xvcigpLmFscGhhKCkgKiBv cGFjaXR5KSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9rZXIu Y3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9rZXIuY3BwCitpbmRleCBjYjVkMzk1 ZTgwLi4zYjYzNTdhODkzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0 cm9rZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAKK0BA IC0xMTgyLDYgKzExODIsNyBAQCB2b2lkIFFEYXNoU3Ryb2tlcjo6cHJvY2Vzc0N1cnJlbnRTdWJw YXRoKCkKKyAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBlbnRpcmUgbGluZSBzaG91bGQgYmUgY2xp cHBlZCBhd2F5IG9yIHNpbXBsaWZpZWQKKyAgICAgICAgIGJvb2wgY2xpcEl0ID0gY2xpcHBpbmcg JiYgIWxpbmVJbnRlcnNlY3RzUmVjdChwcmV2LCBlLCBjbGlwX3RsLCBjbGlwX2JyKTsKKyAgICAg ICAgIGJvb2wgc2tpcERhc2hpbmcgPSBlbGVuICogaW52U3VtTGVuZ3RoID4gcmVwZXRpdGlvbkxp bWl0KCk7CisrICAgICAgICBpbnQgbWF4RGFzaGVzID0gZGFzaENvdW50OworICAgICAgICAgaWYg KHNraXBEYXNoaW5nIHx8IGNsaXBJdCkgeworICAgICAgICAgICAgIC8vIEN1dCBhd2F5IGZ1bGwg ZGFzaCBzZXF1ZW5jZXMuCisgICAgICAgICAgICAgZWxlbiAtPSBzdGQ6OmZsb29yKGVsZW4gKiBp bnZTdW1MZW5ndGgpICogc3VtTGVuZ3RoOworQEAgLTExOTYsNyArMTE5Nyw3IEBAIHZvaWQgUURh c2hTdHJva2VyOjpwcm9jZXNzQ3VycmVudFN1YnBhdGgoKQorICAgICAgICAgICAgICAgICAgICAg cG9zID0gZXN0b3A7IC8vIG1vdmUgcG9zIHRvIG5leHQgcGF0aCBlbGVtZW50CisgICAgICAgICAg ICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gRGFz aCBpcyBvbiB0aGlzIGxpbmUKKy0gICAgICAgICAgICAgICAgICAgIHBvcyA9IGRwb3MgKyBlc3Rh cnQ7CisrICAgICAgICAgICAgICAgICAgICBwb3MgPSAtLW1heERhc2hlcyA+IDAgPyBkcG9zICsg ZXN0YXJ0IDogZXN0b3A7CisgICAgICAgICAgICAgICAgICAgICBkb25lID0gcG9zID49IGVzdG9w OworICAgICAgICAgICAgICAgICAgICAgaWYgKCsraWRhc2ggPj0gZGFzaENvdW50KQorICAgICAg ICAgICAgICAgICAgICAgICAgIGlkYXNoID0gMDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29uIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cXRfYXR0cmlidXRpb24uanNvbgoraW5kZXggN2IxNmU4YzIxMS4uMGU4N2QzMGFhMiAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24KKysrKyBi L3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24KK0BAIC0xMCw3ICsx MCw3IEBACisgICAgICAgICAiSG9tZXBhZ2UiOiAiaHR0cDovL3d3dy5mcmVldHlwZS5vcmciLAor ICAgICAgICAgIkxpY2Vuc2UiOiAiRnJlZXR5cGUgUHJvamVjdCBMaWNlbnNlIG9yIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHYyLjAgb25seSIsCisgICAgICAgICAiTGljZW5zZUlkIjogIkZU TCBvciBHUEwtMi4wIiwKKy0gICAgICAgICJMaWNlbnNlRmlsZSI6ICIuLi8uLi8zcmRwYXJ0eS9m cmVldHlwZS9kb2NzL0xJQ0VOU0UuVFhUIiwKKysgICAgICAgICJMaWNlbnNlRmlsZSI6ICIuLi8u Li8zcmRwYXJ0eS9mcmVldHlwZS9MSUNFTlNFLlRYVCIsCisgICAgICAgICAiQ29weXJpZ2h0Ijog IkNvcHlyaWdodCAyMDAwLTIwMTYgYnkgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5k IFdlcm5lciBMZW1iZXJnLiIKKyAgICAgfSwKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvZ3VpL3JoaS9xc2hhZGVyX3BfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9w LmgKK2luZGV4IGVjOWQyNTk3MWYuLjRhNWE3YTZkNTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2d1aS9yaGkvcXNoYWRlcl9wX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJf cF9wLmgKK0BAIC02OCwxMyArNjgsMTMgQEAgc3RydWN0IFFfR1VJX0VYUE9SVCBRU2hhZGVyUHJp dmF0ZQorICAgICB7CisgICAgIH0KKyAKKy0gICAgUVNoYWRlclByaXZhdGUoY29uc3QgUVNoYWRl clByaXZhdGUgKm90aGVyKQorKyAgICBRU2hhZGVyUHJpdmF0ZShjb25zdCBRU2hhZGVyUHJpdmF0 ZSAmb3RoZXIpCisgICAgICAgICA6IHJlZigxKSwKKy0gICAgICAgICAgcXNiVmVyc2lvbihvdGhl ci0+cXNiVmVyc2lvbiksCistICAgICAgICAgIHN0YWdlKG90aGVyLT5zdGFnZSksCistICAgICAg ICAgIGRlc2Mob3RoZXItPmRlc2MpLAorLSAgICAgICAgICBzaGFkZXJzKG90aGVyLT5zaGFkZXJz KSwKKy0gICAgICAgICAgYmluZGluZ3Mob3RoZXItPmJpbmRpbmdzKQorKyAgICAgICAgICBxc2JW ZXJzaW9uKG90aGVyLnFzYlZlcnNpb24pLAorKyAgICAgICAgICBzdGFnZShvdGhlci5zdGFnZSks CisrICAgICAgICAgIGRlc2Mob3RoZXIuZGVzYyksCisrICAgICAgICAgIHNoYWRlcnMob3RoZXIu c2hhZGVycyksCisrICAgICAgICAgIGJpbmRpbmdzKG90aGVyLmJpbmRpbmdzKQorICAgICB7Cisg ICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0 aW9uX3BfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9wX3AuaAor aW5kZXggZWMyYjBiNmI0Yy4uM2RhMzNhOGEyYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3Vp L3JoaS9xc2hhZGVyZGVzY3JpcHRpb25fcF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9x c2hhZGVyZGVzY3JpcHRpb25fcF9wLmgKK0BAIC02MywxNiArNjMsMTYgQEAgc3RydWN0IFFfR1VJ X0VYUE9SVCBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlCisgICAgICAgICBsb2NhbFNpemVbMF0g PSBsb2NhbFNpemVbMV0gPSBsb2NhbFNpemVbMl0gPSAwOworICAgICB9CisgCistICAgIFFTaGFk ZXJEZXNjcmlwdGlvblByaXZhdGUoY29uc3QgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZSAqb3Ro ZXIpCisrICAgIFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUoY29uc3QgUVNoYWRlckRlc2NyaXB0 aW9uUHJpdmF0ZSAmb3RoZXIpCisgICAgICAgICA6IHJlZigxKSwKKy0gICAgICAgICAgaW5WYXJz KG90aGVyLT5pblZhcnMpLAorLSAgICAgICAgICBvdXRWYXJzKG90aGVyLT5vdXRWYXJzKSwKKy0g ICAgICAgICAgdW5pZm9ybUJsb2NrcyhvdGhlci0+dW5pZm9ybUJsb2NrcyksCistICAgICAgICAg IHB1c2hDb25zdGFudEJsb2NrcyhvdGhlci0+cHVzaENvbnN0YW50QmxvY2tzKSwKKy0gICAgICAg ICAgc3RvcmFnZUJsb2NrcyhvdGhlci0+c3RvcmFnZUJsb2NrcyksCistICAgICAgICAgIGNvbWJp bmVkSW1hZ2VTYW1wbGVycyhvdGhlci0+Y29tYmluZWRJbWFnZVNhbXBsZXJzKSwKKy0gICAgICAg ICAgc3RvcmFnZUltYWdlcyhvdGhlci0+c3RvcmFnZUltYWdlcyksCistICAgICAgICAgIGxvY2Fs U2l6ZShvdGhlci0+bG9jYWxTaXplKQorKyAgICAgICAgICBpblZhcnMob3RoZXIuaW5WYXJzKSwK KysgICAgICAgICAgb3V0VmFycyhvdGhlci5vdXRWYXJzKSwKKysgICAgICAgICAgdW5pZm9ybUJs b2NrcyhvdGhlci51bmlmb3JtQmxvY2tzKSwKKysgICAgICAgICAgcHVzaENvbnN0YW50QmxvY2tz KG90aGVyLnB1c2hDb25zdGFudEJsb2NrcyksCisrICAgICAgICAgIHN0b3JhZ2VCbG9ja3Mob3Ro ZXIuc3RvcmFnZUJsb2NrcyksCisrICAgICAgICAgIGNvbWJpbmVkSW1hZ2VTYW1wbGVycyhvdGhl ci5jb21iaW5lZEltYWdlU2FtcGxlcnMpLAorKyAgICAgICAgICBzdG9yYWdlSW1hZ2VzKG90aGVy LnN0b3JhZ2VJbWFnZXMpLAorKyAgICAgICAgICBsb2NhbFNpemUob3RoZXIubG9jYWxTaXplKQor ICAgICB7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3Fmb250 ZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcAoraW5k ZXggYTY1N2E4YzUxNi4uNGZjMDEwMDk1OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3Rl eHQvcWZvbnRkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRh YmFzZS5jcHAKK0BAIC05ODMsNyArOTgzLDcgQEAgUUZvbnRFbmdpbmUgKmxvYWRTaW5nbGVFbmdp bmUoaW50IHNjcmlwdCwKKyAgICAgICAgIGlmIChzdHlsZS0+a2V5LnN0cmV0Y2ggIT0gMCAmJiBy ZXF1ZXN0LnN0cmV0Y2ggIT0gMAorICAgICAgICAgICAgICYmIChyZXF1ZXN0LnN0eWxlTmFtZS5p c0VtcHR5KCkgfHwgcmVxdWVzdC5zdHlsZU5hbWUgIT0gc3R5bGUtPnN0eWxlTmFtZSkpIHsKKyAg ICAgICAgICAgICBkZWYuc3RyZXRjaCA9IChyZXF1ZXN0LnN0cmV0Y2ggKiAxMDAgKyBzdHlsZS0+ a2V5LnN0cmV0Y2ggLyAyKSAvIHN0eWxlLT5rZXkuc3RyZXRjaDsKKy0gICAgICAgIH0gZWxzZSB7 CisrICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3Quc3RyZXRjaCA9PSBRRm9udDo6QW55U3RyZXRj aCkgeworICAgICAgICAgICAgIGRlZi5zdHJldGNoID0gMTAwOworICAgICAgICAgfQorIAorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAgYi9x dGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwCitpbmRleCBmM2U2ZWEy MTAwLi43MjI2N2U5MzgwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRv Y3VtZW50bGF5b3V0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRvY3VtZW50 bGF5b3V0LmNwcAorQEAgLTIxMjMsNyArMjEyMyw3IEBAIHZvaWQgUVRleHREb2N1bWVudExheW91 dFByaXZhdGU6OmRyYXdMaXN0SXRlbShjb25zdCBRUG9pbnRGICZvZmZzZXQsIFFQYWludGVyICpw CisgeworICAgICBRX1EoY29uc3QgUVRleHREb2N1bWVudExheW91dCk7CisgICAgIGNvbnN0IFFU ZXh0QmxvY2tGb3JtYXQgYmxvY2tGb3JtYXQgPSBibC5ibG9ja0Zvcm1hdCgpOworLSAgICBjb25z dCBRVGV4dENoYXJGb3JtYXQgY2hhckZvcm1hdCA9IFFUZXh0Q3Vyc29yKGJsKS5jaGFyRm9ybWF0 KCk7CisrICAgIGNvbnN0IFFUZXh0Q2hhckZvcm1hdCBjaGFyRm9ybWF0ID0gYmwuY2hhckZvcm1h dCgpOworICAgICBRRm9udCBmb250KGNoYXJGb3JtYXQuZm9udCgpKTsKKyAgICAgaWYgKHEtPnBh aW50RGV2aWNlKCkpCisgICAgICAgICBmb250ID0gUUZvbnQoZm9udCwgcS0+cGFpbnREZXZpY2Uo KSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAgYi9x dGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcAoraW5kZXggY2U0YWJhYzQ3Mi4uYTZj NjZlNWQyZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRlbmdpbmUuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcAorQEAgLTEsNiArMSw2 IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBU aGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55 IEx0ZC4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAq KiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRHdWkgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0 LgorQEAgLTE1NjUsNiArMTU2NSwxMiBAQCB2b2lkIFFUZXh0RW5naW5lOjpzaGFwZVRleHQoaW50 IGl0ZW0pIGNvbnN0CisgICAgICAgICAvLyBPdmVyd3JpdGUgd2l0aCAwIHRva2VuIHRvIGluZGlj YXRlIGZhaWx1cmUKKyAgICAgICAgIFFHbHlwaExheW91dCBnID0gYXZhaWxhYmxlR2x5cGhzKCZz aSk7CisgICAgICAgICBnLmdseXBoc1swXSA9IDA7CisrICAgICAgICBnLmF0dHJpYnV0ZXNbMF0u Y2x1c3RlclN0YXJ0ID0gdHJ1ZTsKKysKKysgICAgICAgIHVzaG9ydCAqbG9nX2NsdXN0ZXJzID0g bG9nQ2x1c3RlcnMoJnNpKTsKKysgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlbUxlbmd0 aDsgKytpKQorKyAgICAgICAgICAgIGxvZ19jbHVzdGVyc1tpXSA9IDA7CisrCisgICAgICAgICBy ZXR1cm47CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNr dG9wc2VydmljZXMuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNw cAoraW5kZXggZmJiNjNhOTQwOC4uNGQ1ZmFmYWFhNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Z3VpL3V0aWwvcWRlc2t0b3BzZXJ2aWNlcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3V0aWwv cWRlc2t0b3BzZXJ2aWNlcy5jcHAKK0BAIC01NCw2ICs1NCw4IEBACisgI2luY2x1ZGUgPHFwYS9x cGxhdGZvcm1pbnRlZ3JhdGlvbi5oPgorICNpbmNsdWRlIDxxZGlyLmg+CisgCisrI2luY2x1ZGUg PFF0Q29yZS9wcml2YXRlL3Fsb2NraW5nX3AuaD4KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAK KyBjbGFzcyBRT3BlblVybEhhbmRsZXJSZWdpc3RyeSA6IHB1YmxpYyBRT2JqZWN0CitAQCAtODEs NiArODMsNyBAQCBRX0dMT0JBTF9TVEFUSUMoUU9wZW5VcmxIYW5kbGVyUmVnaXN0cnksIGhhbmRs ZXJSZWdpc3RyeSkKKyAKKyB2b2lkIFFPcGVuVXJsSGFuZGxlclJlZ2lzdHJ5OjpoYW5kbGVyRGVz dHJveWVkKFFPYmplY3QgKmhhbmRsZXIpCisgeworKyAgICBjb25zdCBhdXRvIGxvY2sgPSBxdF9z Y29wZWRfbG9jayhtdXRleCk7CisgICAgIEhhbmRsZXJIYXNoOjpJdGVyYXRvciBpdCA9IGhhbmRs ZXJzLmJlZ2luKCk7CisgICAgIHdoaWxlIChpdCAhPSBoYW5kbGVycy5lbmQoKSkgeworICAgICAg ICAgaWYgKGl0LT5yZWNlaXZlciA9PSBoYW5kbGVyKSB7CitAQCAtMjk0LDcgKzI5Nyw4IEBAIHZv aWQgUURlc2t0b3BTZXJ2aWNlczo6c2V0VXJsSGFuZGxlcihjb25zdCBRU3RyaW5nICZzY2hlbWUs IFFPYmplY3QgKnJlY2VpdmVyLCBjCisgICAgIGgubmFtZSA9IG1ldGhvZDsKKyAgICAgcmVnaXN0 cnktPmhhbmRsZXJzLmluc2VydChzY2hlbWUudG9Mb3dlcigpLCBoKTsKKyAgICAgUU9iamVjdDo6 Y29ubmVjdChyZWNlaXZlciwgU0lHTkFMKGRlc3Ryb3llZChRT2JqZWN0KikpLAorLSAgICAgICAg ICAgICAgICAgICAgIHJlZ2lzdHJ5LCBTTE9UKGhhbmRsZXJEZXN0cm95ZWQoUU9iamVjdCopKSk7 CisrICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIFNMT1QoaGFuZGxlckRlc3Ryb3llZChR T2JqZWN0KikpLAorKyAgICAgICAgICAgICAgICAgICAgIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsK KyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxl ci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcAoraW5kZXggZTBjM2I3 NWVmZS4uMzQxNGY5ZDhiYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcXBrbWhh bmRsZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcAorQEAg LTU3LDcgKzU3LDcgQEAgc3RydWN0IFBrbVR5cGUKKyAgICAgcXVpbnQzMiBieXRlc1BlckJsb2Nr OworIH07CisgCistc3RhdGljIFBrbVR5cGUgdHlwZU1hcFs1XSA9IHsKKytzdGF0aWMgY29uc3Rl eHByIFBrbVR5cGUgdHlwZU1hcFs1XSA9IHsKKyAgICAgeyAweDhENjQsICA4IH0sICAgLy8gR0xf RVRDMV9SR0I4X09FUworICAgICB7IDB4OTI3NCwgIDggfSwgICAvLyBHTF9DT01QUkVTU0VEX1JH QjhfRVRDMgorICAgICB7IDAsIDAgfSwgICAgICAgICAvLyB1bnVzZWQgKG9ic29sZXRlKQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBs LmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNw cAoraW5kZXggYjZiZTkzMTQ3YS4uNmU2OWI0YzRkMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv bmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3BwCitAQCAtODksOSArODks MTAgQEAgUU5ldHdvcmtSZXBseUZpbGVJbXBsOjpRTmV0d29ya1JlcGx5RmlsZUltcGwoUU5ldHdv cmtBY2Nlc3NNYW5hZ2VyICptYW5hZ2VyLCBjb24KKyAgICAgICAgIC8vIHdlIGhhbmRsZSBvbmx5 IGxvY2FsIGZpbGVzCisgICAgICAgICBRU3RyaW5nIG1zZyA9IFFDb3JlQXBwbGljYXRpb246OnRy YW5zbGF0ZSgiUU5ldHdvcmtBY2Nlc3NGaWxlQmFja2VuZCIsICJSZXF1ZXN0IGZvciBvcGVuaW5n IG5vbi1sb2NhbCBmaWxlICUxIikuYXJnKHVybC50b1N0cmluZygpKTsKKyAgICAgICAgIHNldEVy cm9yKFFOZXR3b3JrUmVwbHk6OlByb3RvY29sSW52YWxpZE9wZXJhdGlvbkVycm9yLCBtc2cpOwor KyAgICAgICAgc2V0RmluaXNoZWQodHJ1ZSk7IC8vIFdlJ3JlIGZpbmlzaGVkLCB3aWxsIGVtaXQg ZmluaXNoZWQoKSBhZnRlciBjdG9yIGlzIGRvbmUuCisgICAgICAgICBRTWV0YU9iamVjdDo6aW52 b2tlTWV0aG9kKHRoaXMsICJlcnJvck9jY3VycmVkIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24sCisg ICAgICAgICAgICAgUV9BUkcoUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yLCBRTmV0d29ya1Jl cGx5OjpQcm90b2NvbEludmFsaWRPcGVyYXRpb25FcnJvcikpOworLSAgICAgICAgZmlsZU9wZW5G aW5pc2hlZChmYWxzZSk7CisrICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMs IFt0aGlzXSgpeyBmaWxlT3BlbkZpbmlzaGVkKGZhbHNlKTsgfSwgUXQ6OlF1ZXVlZENvbm5lY3Rp b24pOworICAgICAgICAgcmV0dXJuOworICAgICB9CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAgYi9xdGJhc2Uvc3Jj L25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlpbXBsLmNwcAoraW5kZXggYmNkZjZlZTJmMS4u M2I2ZGViODJiZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdv cmtyZXBseWltcGwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3Jr cmVwbHlpbXBsLmNwcAorQEAgLTY4MCw3ICs2ODAsNyBAQCB2b2lkIFFOZXR3b3JrUmVwbHlJbXBs UHJpdmF0ZTo6YXBwZW5kRG93bnN0cmVhbURhdGEoUUlPRGV2aWNlICpkYXRhKQorICAgICAvLyBy ZWFkIHVudGlsIEVPRiBmcm9tIGRhdGEKKyAgICAgaWYgKFFfVU5MSUtFTFkoY29weURldmljZSkp IHsKKyAgICAgICAgIHFDcml0aWNhbCgiUU5ldHdvcmtSZXBseUltcGw6IGNvcHkgZnJvbSBRSU9E ZXZpY2UgYWxyZWFkeSBpbiBwcm9ncmVzcyAtLSAiCistICAgICAgICAgICAgICAgICAgImJhY2tl bmQgcHJvYmx5IG5lZWRzIHRvIGJlIGZpeGVkIik7CisrICAgICAgICAgICAgICAgICAgImJhY2tl bmQgcHJvYmFibHkgbmVlZHMgdG8gYmUgZml4ZWQiKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAg fQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0 b3IuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5jcHAKK2lu ZGV4IGQ5ZmU3YmM0N2IuLmNjZDA0YjI5NGEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdv cmsva2VybmVsL3FhdXRoZW50aWNhdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2tl cm5lbC9xYXV0aGVudGljYXRvci5jcHAKK0BAIC01MCw2ICs1MCw3IEBACisgI2luY2x1ZGUgPHFz dHJpbmcuaD4KKyAjaW5jbHVkZSA8cWRhdGV0aW1lLmg+CisgI2luY2x1ZGUgPHFyYW5kb20uaD4K KysjaW5jbHVkZSAicHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmgiCisgCisgI2lmZGVmIFFfT1Nf V0lOCisgI2luY2x1ZGUgPHFtdXRleC5oPgorQEAgLTE1NjMsNyArMTU2NCw3IEBAIHN0YXRpYyBi b29sIHFfU1NQSV9saWJyYXJ5X2xvYWQoKQorIAorICAgICAvLyBJbml0aWFsaXplIHNlY3VyaXR5 IGludGVyZmFjZQorICAgICBpZiAocFNlY3VyaXR5RnVuY3Rpb25UYWJsZSA9PSBudWxscHRyKSB7 CistICAgICAgICBzZWN1cml0eURMTEhhbmRsZSA9IExvYWRMaWJyYXJ5KEwic2VjdXIzMi5kbGwi KTsKKysgICAgICAgIHNlY3VyaXR5RExMSGFuZGxlID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJz ZWN1cjMyIik7CisgICAgICAgICBpZiAoc2VjdXJpdHlETExIYW5kbGUgIT0gbnVsbHB0cikgewor ICAgICAgICAgICAgIElOSVRfU0VDVVJJVFlfSU5URVJGQUNFIHBJbml0U2VjdXJpdHlJbnRlcmZh Y2UgPQorICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PElOSVRfU0VDVVJJVFlfSU5U RVJGQUNFPigKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5m b191bml4LmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3Bw CitpbmRleCA5YjBhMmVlNjY5Li43MzY3OWM5ZWYxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9u ZXR3b3JrL2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29y ay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwCitAQCAtMTIyLDcgKzEyMiw2IEBAIHN0YXRpYyBR RnVuY3Rpb25Qb2ludGVyIHJlc29sdmVTeW1ib2woUUxpYnJhcnkgJmxpYiwgY29uc3QgY2hhciAq c3ltKQorIAorIExpYlJlc29sdjo6TGliUmVzb2x2KCkKKyB7CistICAgIFFMaWJyYXJ5IGxpYjsK KyAjaWZkZWYgTElCUkVTT0xWX1NPCisgICAgIGxpYi5zZXRGaWxlTmFtZShRU3RyaW5nTGl0ZXJh bChMSUJSRVNPTFZfU08pKTsKKyAgICAgaWYgKCFsaWIubG9hZCgpKQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvbmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAgYi9xdGJhc2Uv c3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3BwCitpbmRleCAzYTA0NmZk MTE2Li45N2ZhZGNhMGIzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9x c29ja3M1c29ja2V0ZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9x c29ja3M1c29ja2V0ZW5naW5lLmNwcAorQEAgLTEyOTYsNyArMTI5Niw3IEBAIHZvaWQgUVNvY2tz NVNvY2tldEVuZ2luZVByaXZhdGU6Ol9xX3VkcFNvY2tldFJlYWROb3RpZmljYXRpb24oKQorICAg ICAgICAgaW50IHBvcyA9IDA7CisgICAgICAgICBjb25zdCBjaGFyICpidWYgPSBpbkJ1Zi5jb25z dERhdGEoKTsKKyAgICAgICAgIGlmIChpbkJ1Zi5zaXplKCkgPCA0KSB7CistICAgICAgICAgICAg UVNPQ0tTNV9EX0RFQlVHIDw8ICJidWd1cyB1ZHAgZGF0YSwgZGlzY2FyZGluZyI7CisrICAgICAg ICAgICAgUVNPQ0tTNV9EX0RFQlVHIDw8ICJib2d1cyB1ZHAgZGF0YSwgZGlzY2FyZGluZyI7Cisg ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICAgICAgUVNvY2tzNVJldml2ZWRE YXRhZ3JhbSBkYXRhZ3JhbTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fz c2xjb250ZXh0X29wZW5zc2wuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsY29udGV4 dF9vcGVuc3NsLmNwcAoraW5kZXggYzlmMjAyZjU3My4uYzk5MmRhOWQ4ZSAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAKK0BAIC00MDksNyAr NDA5LDcgQEAgaW5pdF9jb250ZXh0OgorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUVNzbDo6 RHRsc1YxXzBPckxhdGVyOgorICAgICAgICAgbWluVmVyc2lvbiA9IERUTFMxX1ZFUlNJT047Cist ICAgICAgICBtYXhWZXJzaW9uID0gRFRMU19NQVhfVkVSU0lPTjsKKysgICAgICAgIG1heFZlcnNp b24gPSAwOworICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUVNzbDo6RHRsc1YxXzI6CisgICAg ICAgICBtaW5WZXJzaW9uID0gRFRMUzFfMl9WRVJTSU9OOworQEAgLTQxNyw3ICs0MTcsNyBAQCBp bml0X2NvbnRleHQ6CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpEdGxzVjFfMk9y TGF0ZXI6CisgICAgICAgICBtaW5WZXJzaW9uID0gRFRMUzFfMl9WRVJTSU9OOworLSAgICAgICAg bWF4VmVyc2lvbiA9IERUTFNfTUFYX1ZFUlNJT047CisrICAgICAgICBtYXhWZXJzaW9uID0gMDsK KyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIFFTc2w6OlRsc1YxXzNPckxhdGVyOgorICNpZmRl ZiBUTFMxXzNfVkVSU0lPTgorQEAgLTQ1NSw3ICs0NTUsNyBAQCBpbml0X2NvbnRleHQ6CisgICAg IH0KKyAKKyAgICAgLy8gRW5hYmxlIGJ1ZyB3b3JrYXJvdW5kcy4KKy0gICAgbG9uZyBvcHRpb25z ID0gUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKGNvbmZpZ3Vy YXRpb24ucHJvdG9jb2woKSwgY29uZmlndXJhdGlvbi5kLT5zc2xPcHRpb25zKTsKKysgICAgcXNz bG9wdGlvbnMgb3B0aW9ucyA9IFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVuU3Ns T3B0aW9ucyhjb25maWd1cmF0aW9uLnByb3RvY29sKCksIGNvbmZpZ3VyYXRpb24uZC0+c3NsT3B0 aW9ucyk7CisgICAgIHFfU1NMX0NUWF9zZXRfb3B0aW9ucyhzc2xDb250ZXh0LT5jdHgsIG9wdGlv bnMpOworIAorICAgICAvLyBUZWxsIE9wZW5TU0wgdG8gcmVsZWFzZSBtZW1vcnkgZWFybHkKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1l dGVyc19vcGVuc3NsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGRpZmZpZWhlbGxt YW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwCitpbmRleCBhYWY4NzQxMTMwLi5iNTg5MzUzNzJjIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFt ZXRlcnNfb3BlbnNzbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGRpZmZp ZWhlbGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwCitAQCAtNTksNTcgKzU5LDYgQEAKKyAKKyBR VF9CRUdJTl9OQU1FU1BBQ0UKKyAKKy0jaWZkZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAor LQorLXN0YXRpYyBpbnQgcV9ESF9jaGVjayhESCAqZGgsIGludCAqc3RhdHVzKQorLXsKKy0gICAg Ly8gREhfY2hlY2sgd2FzIGZpcnN0IGRlcHJlY2F0ZWQgaW4gT3BlblNTTCAzLjAuMCwgYXMgbG93 LWxldmVsCistICAgIC8vIEFQSTsgdGhlIEVWUF9QS0VZIGZhbWlseSBvZiBmdW5jdGlvbnMgd2Fz IGFkdmlzZWQgYXMgYW4gYWx0ZXJuYXRpdmUuCistICAgIC8vIEFzIG9mIG5vdyBFVlBfUEtFWV9w YXJhbXNfY2hlY2sgZW5kcyB1cCBjYWxsaW5nIC4uLiBESF9jaGVjaywKKy0gICAgLy8gd2hpY2gg aXMgZ29vZCBlbm91Z2guCistCistICAgIFFfQVNTRVJUKGRoKTsKKy0gICAgUV9BU1NFUlQoc3Rh dHVzKTsKKy0KKy0gICAgRVZQX1BLRVkgKmtleSA9IHFfRVZQX1BLRVlfbmV3KCk7CistICAgIGlm ICgha2V5KSB7CistICAgICAgICBxQ1dhcm5pbmcobGNTc2wsICJFVlBfUEtFWV9uZXcgZmFpbGVk Iik7CistICAgICAgICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OmxvZ0FuZENsZWFyRXJyb3JR dWV1ZSgpOworLSAgICAgICAgcmV0dXJuIDA7CistICAgIH0KKy0gICAgY29uc3QgYXV0byBrZXlE ZWxldGVyID0gcVNjb3BlR3VhcmQoW2tleV0oKXsKKy0gICAgICAgIHFfRVZQX1BLRVlfZnJlZShr ZXkpOworLSAgICB9KTsKKy0gICAgaWYgKCFxX0VWUF9QS0VZX3NldDFfREgoa2V5LCBkaCkpIHsK Ky0gICAgICAgIHFDV2FybmluZyhsY1NzbCwgIkVWUF9QS0VZX3NldDFfREggZmFpbGVkIik7Cist ICAgICAgICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OmxvZ0FuZENsZWFyRXJyb3JRdWV1ZSgp OworLSAgICAgICAgcmV0dXJuIDA7CistICAgIH0KKy0KKy0gICAgRVZQX1BLRVlfQ1RYICprZXlD dHggPSBxX0VWUF9QS0VZX0NUWF9uZXcoa2V5LCBudWxscHRyKTsKKy0gICAgaWYgKCFrZXlDdHgp IHsKKy0gICAgICAgIHFDV2FybmluZyhsY1NzbCwgIkVWUF9QS0VZX0NUWF9uZXcgZmFpbGVkIik7 CistICAgICAgICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OmxvZ0FuZENsZWFyRXJyb3JRdWV1 ZSgpOworLSAgICAgICAgcmV0dXJuIDA7CistICAgIH0KKy0gICAgY29uc3QgYXV0byBjdHhEZWxl dGVyID0gcVNjb3BlR3VhcmQoW2tleUN0eF17CistICAgICAgICBxX0VWUF9QS0VZX0NUWF9mcmVl KGtleUN0eCk7CistICAgIH0pOworLQorLSAgICBjb25zdCBpbnQgcmVzdWx0ID0gcV9FVlBfUEtF WV9wYXJhbV9jaGVjayhrZXlDdHgpOworLSAgICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6Omxv Z0FuZENsZWFyRXJyb3JRdWV1ZSgpOworLSAgICAvLyBOb3RlOiB1bmxpa2UgREhfY2hlY2ssIHdl IGNhbm5vdCBvYnRhaW4gdGhlICdzdGF0dXMnLAorLSAgICAvLyBpZiB0aGUgJ3Jlc3VsdCcgaXMg MCAoYWN0dWFsbHkgdGhlIHJlc3VsdCBpcyAxIG9ubHkKKy0gICAgLy8gaWYgdGhpcyAnc3RhdHVz JyB3YXMgMCkuIFdlIGNvdWxkIHByb2JhYmx5IGNoZWNrIHRoZQorLSAgICAvLyBlcnJvcnMgZnJv bSB0aGUgZXJyb3IgcXVldWUsIGJ1dCBpdCdzIG5vdCBuZWVkZWQgYW55d2F5CistICAgIC8vIC0g c2VlIHRoZSAnaXNTYWZlREgnIGJlbG93LCBob3cgaXQgcmV0dXJucyBpbW1lZGlhdGVseQorLSAg ICAvLyBvbiAwLgorLSAgICBRX1VOVVNFRChzdGF0dXMpCistCistICAgIHJldHVybiByZXN1bHQ7 CistfQorLSNlbmRpZiAvLyBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCistCisgc3RhdGljIGJv b2wgaXNTYWZlREgoREggKmRoKQorIHsKKyAgICAgaW50IHN0YXR1cyA9IDA7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwIGIvcXRiYXNl L3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwCitpbmRleCAzN2ZhZDJhNjhm Li44ZjY4NThjODY3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29j a2V0X29wZW5zc2wuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRf b3BlbnNzbC5jcHAKK0BAIC01NTAsOSArNTUwLDkgQEAgc3RhdGljIHZvaWQgcV9sb2FkQ2lwaGVy c0ZvckNvbm5lY3Rpb24oU1NMICpjb25uZWN0aW9uLCBRTGlzdDxRU3NsQ2lwaGVyPiAmY2lwaGUK KyAvLyBEZWZpbmVkIGluIHFzc2xzb2NrZXQuY3BwCisgdm9pZCBxX3NldERlZmF1bHREdGxzQ2lw aGVycyhjb25zdCBRTGlzdDxRU3NsQ2lwaGVyPiAmY2lwaGVycyk7CisgCistbG9uZyBRU3NsU29j a2V0QmFja2VuZFByaXZhdGU6OnNldHVwT3BlblNzbE9wdGlvbnMoUVNzbDo6U3NsUHJvdG9jb2wg cHJvdG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucykKKytxc3Nsb3B0aW9ucyBRU3Ns U29ja2V0QmFja2VuZFByaXZhdGU6OnNldHVwT3BlblNzbE9wdGlvbnMoUVNzbDo6U3NsUHJvdG9j b2wgcHJvdG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucykKKyB7CistICAgIGxvbmcg b3B0aW9uczsKKysgICAgcXNzbG9wdGlvbnMgb3B0aW9uczsKKyAgICAgaWYgKHByb3RvY29sID09 IFFTc2w6OlRsc1YxU3NsVjMpCisgICAgICAgICBvcHRpb25zID0gU1NMX09QX0FMTHxTU0xfT1Bf Tk9fU1NMdjJ8U1NMX09QX05PX1NTTHYzOworICAgICBlbHNlIGlmIChwcm90b2NvbCA9PSBRU3Ns OjpTZWN1cmVQcm90b2NvbHMpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9x c3Nsc29ja2V0X29wZW5zc2xfcC5oIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0 X29wZW5zc2xfcC5oCitpbmRleCA0MTAzZGUyM2U4Li41NTQ3NTg5MjU2IDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfcC5oCisrKysgYi9xdGJh c2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmgKK0BAIC0xMDcsNiArMTA3 LDEyIEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisrI2lmIGRlZmluZWQoT1BFTlNTTF9W RVJTSU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworK3R5cGVkZWYgdWlu dDY0X3QgcXNzbG9wdGlvbnM7CisrI2Vsc2UKKyt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcXNzbG9w dGlvbnM7CisrI2VuZGlmCisrCisgc3RydWN0IFFTc2xFcnJvckVudHJ5IHsKKyAgICAgaW50IGNv ZGU7CisgICAgIGludCBkZXB0aDsKK0BAIC0xNzEsNyArMTc3LDcgQEAgcHVibGljOgorICAgICBR VmVjdG9yPFFTc2xFcnJvcj4gb2NzcEVycm9yczsKKyAgICAgUUJ5dGVBcnJheSBvY3NwUmVzcG9u c2VEZXI7CisgCistICAgIFFfQVVUT1RFU1RfRVhQT1JUIHN0YXRpYyBsb25nIHNldHVwT3BlblNz bE9wdGlvbnMoUVNzbDo6U3NsUHJvdG9jb2wgcHJvdG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMgc3Ns T3B0aW9ucyk7CisrICAgIFFfQVVUT1RFU1RfRVhQT1JUIHN0YXRpYyBxc3Nsb3B0aW9ucyBzZXR1 cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRp b25zIHNzbE9wdGlvbnMpOworICAgICBzdGF0aWMgUVNzbENpcGhlciBRU3NsQ2lwaGVyX2Zyb21f U1NMX0NJUEhFUihjb25zdCBTU0xfQ0lQSEVSICpjaXBoZXIpOworICAgICBzdGF0aWMgUUxpc3Q8 UVNzbENlcnRpZmljYXRlPiBTVEFDS09GWDUwOV90b19RU3NsQ2VydGlmaWNhdGVzKFNUQUNLX09G KFg1MDkpICp4NTA5KTsKKyAgICAgc3RhdGljIFFMaXN0PFFTc2xFcnJvcj4gdmVyaWZ5KGNvbnN0 IFFMaXN0PFFTc2xDZXJ0aWZpY2F0ZT4gJmNlcnRpZmljYXRlQ2hhaW4sIGNvbnN0IFFTdHJpbmcg Jmhvc3ROYW1lKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2Nr ZXRfb3BlbnNzbF9zeW1ib2xzLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tl dF9vcGVuc3NsX3N5bWJvbHMuY3BwCitpbmRleCBlNTNmYjI3OWYwLi40NTljY2QwYjE5IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9s cy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5 bWJvbHMuY3BwCitAQCAtMTQ4LDcgKzE0OCw2IEBAIERFRklORUZVTkMoaW50LCBFVlBfUEtFWV91 cF9yZWYsIEVWUF9QS0VZICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMyKEVW UF9QS0VZX0NUWCAqLCBFVlBfUEtFWV9DVFhfbmV3LCBFVlBfUEtFWSAqcGtleSwgcGtleSwgRU5H SU5FICplLCBlLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBFVlBf UEtFWV9wYXJhbV9jaGVjaywgRVZQX1BLRVlfQ1RYICpjdHgsIGN0eCwgcmV0dXJuIDAsIHJldHVy bikKKyBERUZJTkVGVU5DKHZvaWQsIEVWUF9QS0VZX0NUWF9mcmVlLCBFVlBfUEtFWV9DVFggKmN0 eCwgY3R4LCByZXR1cm4sIHJldHVybikKKy1ERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfYmFzZV9p ZCwgRVZQX1BLRVkgKmEsIGEsIHJldHVybiBOSURfdW5kZWYsIHJldHVybikKKyBERUZJTkVGVU5D KGludCwgUlNBX2JpdHMsIFJTQSAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5D KGludCwgRFNBX2JpdHMsIERTQSAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5D KGludCwgT1BFTlNTTF9za19udW0sIE9QRU5TU0xfU1RBQ0sgKmEsIGEsIHJldHVybiAtMSwgcmV0 dXJuKQorQEAgLTE1OCw3ICsxNTcsNyBAQCBERUZJTkVGVU5DMih2b2lkLCBPUEVOU1NMX3NrX3B1 c2gsIE9QRU5TU0xfU1RBQ0sgKmEsIGEsIHZvaWQgKmIsIGIsIHJldHVybiwgRFVNTQorIERFRklO RUZVTkModm9pZCwgT1BFTlNTTF9za19mcmVlLCBPUEVOU1NMX1NUQUNLICphLCBhLCByZXR1cm4s IERVTU1ZQVJHKQorIERFRklORUZVTkMyKHZvaWQgKiwgT1BFTlNTTF9za192YWx1ZSwgT1BFTlNT TF9TVEFDSyAqYSwgYSwgaW50IGIsIGIsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5F RlVOQyhpbnQsIFNTTF9zZXNzaW9uX3JldXNlZCwgU1NMICphLCBhLCByZXR1cm4gMCwgcmV0dXJu KQorLURFRklORUZVTkMyKHVuc2lnbmVkIGxvbmcsIFNTTF9DVFhfc2V0X29wdGlvbnMsIFNTTF9D VFggKmN0eCwgY3R4LCB1bnNpZ25lZCBsb25nIG9wLCBvcCwgcmV0dXJuIDAsIHJldHVybikKKytE RUZJTkVGVU5DMihxc3Nsb3B0aW9ucywgU1NMX0NUWF9zZXRfb3B0aW9ucywgU1NMX0NUWCAqY3R4 LCBjdHgsIHFzc2xvcHRpb25zIG9wLCBvcCwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5D KGludCwgU1NMX0NUWF9nZXRfc2VjdXJpdHlfbGV2ZWwsIGNvbnN0IFNTTF9DVFggKmN0eCwgY3R4 LCByZXR1cm4gLTEsIHJldHVybikKKyBERUZJTkVGVU5DMih2b2lkLCBTU0xfQ1RYX3NldF9zZWN1 cml0eV9sZXZlbCwgU1NMX0NUWCAqY3R4LCBjdHgsIGludCBsZXZlbCwgbGV2ZWwsIHJldHVybiwg cmV0dXJuKQorICNpZmRlZiBUTFMxXzNfVkVSU0lPTgorQEAgLTM3MSw3ICszNzAsMTUgQEAgREVG SU5FRlVOQyhjb25zdCBTU0xfQ0lQSEVSICosIFNTTF9nZXRfY3VycmVudF9jaXBoZXIsIFNTTCAq YSwgYSwgcmV0dXJuIG51bGxwdHIKKyBERUZJTkVGVU5DKGludCwgU1NMX3ZlcnNpb24sIGNvbnN0 IFNTTCAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DMihpbnQsIFNTTF9nZXRf ZXJyb3IsIFNTTCAqYSwgYSwgaW50IGIsIGIsIHJldHVybiAtMSwgcmV0dXJuKQorIERFRklORUZV TkMoU1RBQ0tfT0YoWDUwOSkgKiwgU1NMX2dldF9wZWVyX2NlcnRfY2hhaW4sIFNTTCAqYSwgYSwg cmV0dXJuIG51bGxwdHIsIHJldHVybikKKysKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05f TUFKT1IpICYmIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrREVGSU5FRlVOQyhYNTA5ICos IFNTTF9nZXQxX3BlZXJfY2VydGlmaWNhdGUsIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxwdHIsIHJl dHVybikKKytERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfZ2V0X2Jhc2VfaWQsIGNvbnN0IEVWUF9Q S0VZICpwa2V5LCBwa2V5LCByZXR1cm4gLTEsIHJldHVybikKKysjZWxzZQorIERFRklORUZVTkMo WDUwOSAqLCBTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUsIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxw dHIsIHJldHVybikKKytERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfYmFzZV9pZCwgRVZQX1BLRVkg KmEsIGEsIHJldHVybiBOSURfdW5kZWYsIHJldHVybikKKysjZW5kaWYgLy8gT1BFTlNTTF9WRVJT SU9OX01BSk9SID49IDMKKysKKyBERUZJTkVGVU5DKGxvbmcsIFNTTF9nZXRfdmVyaWZ5X3Jlc3Vs dCwgY29uc3QgU1NMICphLCBhLCByZXR1cm4gLTEsIHJldHVybikKKyBERUZJTkVGVU5DKFNTTCAq LCBTU0xfbmV3LCBTU0xfQ1RYICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklO RUZVTkMoU1NMX0NUWCAqLCBTU0xfZ2V0X1NTTF9DVFgsIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxw dHIsIHJldHVybikKK0BAIC00OTIsOSArNDk5LDcgQEAgREVGSU5FRlVOQyhESCAqLCBESF9uZXcs IERVTU1ZQVJHLCBEVU1NWUFSRywgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5D KHZvaWQsIERIX2ZyZWUsIERIICpkaCwgZGgsIHJldHVybiwgRFVNTVlBUkcpCisgREVGSU5FRlVO QzMoREggKiwgZDJpX0RIcGFyYW1zLCBESCoqYSwgYSwgY29uc3QgdW5zaWduZWQgY2hhciAqKnBw LCBwcCwgbG9uZyBsZW5ndGgsIGxlbmd0aCwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJ TkVGVU5DMihpbnQsIGkyZF9ESHBhcmFtcywgREggKmEsIGEsIHVuc2lnbmVkIGNoYXIgKipwLCBw LCByZXR1cm4gLTEsIHJldHVybikKKy0jaWZuZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAK KyBERUZJTkVGVU5DMihpbnQsIERIX2NoZWNrLCBESCAqZGgsIGRoLCBpbnQgKmNvZGVzLCBjb2Rl cywgcmV0dXJuIDAsIHJldHVybikKKy0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNf MAorIERFRklORUZVTkMzKEJJR05VTSAqLCBCTl9iaW4yYm4sIGNvbnN0IHVuc2lnbmVkIGNoYXIg KnMsIHMsIGludCBsZW4sIGxlbiwgQklHTlVNICpyZXQsIHJldCwgcmV0dXJuIG51bGxwdHIsIHJl dHVybikKKyAKKyAjaWZuZGVmIE9QRU5TU0xfTk9fRUMKK0BAIC04NjgsNyArODczLDYgQEAgYm9v bCBxX3Jlc29sdmVPcGVuU3NsU3ltYm9scygpCisgICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX0NU WF9uZXcpCisgICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX3BhcmFtX2NoZWNrKQorICAgICBSRVNP TFZFRlVOQyhFVlBfUEtFWV9DVFhfZnJlZSkKKy0gICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfYmFz ZV9pZCkKKyAgICAgUkVTT0xWRUZVTkMoUlNBX2JpdHMpCisgICAgIFJFU09MVkVGVU5DKE9QRU5T U0xfc2tfbmV3X251bGwpCisgICAgIFJFU09MVkVGVU5DKE9QRU5TU0xfc2tfcHVzaCkKK0BAIC0x MTA3LDcgKzExMTEsMTUgQEAgYm9vbCBxX3Jlc29sdmVPcGVuU3NsU3ltYm9scygpCisgICAgIFJF U09MVkVGVU5DKFNTTF92ZXJzaW9uKQorICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X2Vycm9yKQor ICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X3BlZXJfY2VydF9jaGFpbikKKysKKysjaWYgZGVmaW5l ZChPUEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisr ICAgIFJFU09MVkVGVU5DKFNTTF9nZXQxX3BlZXJfY2VydGlmaWNhdGUpCisrICAgIFJFU09MVkVG VU5DKEVWUF9QS0VZX2dldF9iYXNlX2lkKQorKyNlbHNlCisgICAgIFJFU09MVkVGVU5DKFNTTF9n ZXRfcGVlcl9jZXJ0aWZpY2F0ZSkKKysgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfYmFzZV9pZCkK KysjZW5kaWYgLy8gT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKysKKyAgICAgUkVTT0xWRUZV TkMoU1NMX2dldF92ZXJpZnlfcmVzdWx0KQorICAgICBSRVNPTFZFRlVOQyhTU0xfbmV3KQorICAg ICBSRVNPTFZFRlVOQyhTU0xfZ2V0X1NTTF9DVFgpCitAQCAtMTIwNiw5ICsxMjE4LDcgQEAgYm9v bCBxX3Jlc29sdmVPcGVuU3NsU3ltYm9scygpCisgICAgIFJFU09MVkVGVU5DKERIX2ZyZWUpCisg ICAgIFJFU09MVkVGVU5DKGQyaV9ESHBhcmFtcykKKyAgICAgUkVTT0xWRUZVTkMoaTJkX0RIcGFy YW1zKQorLSNpZm5kZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorICAgICBSRVNPTFZFRlVO QyhESF9jaGVjaykKKy0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorICAgICBS RVNPTFZFRlVOQyhCTl9iaW4yYm4pCisgCisgI2lmbmRlZiBPUEVOU1NMX05PX0VDCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9sc19w LmggYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3Au aAoraW5kZXggOTVlODg5N2EzYi4uMjdhZWZmYTE4YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv bmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oCisrKysgYi9xdGJhc2Uv c3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaAorQEAgLTIzNyw3 ICsyMzcsNiBAQCBRX0FVVE9URVNUX0VYUE9SVCBpbnQgcV9FVlBfUEtFWV91cF9yZWYoRVZQX1BL RVkgKmEpOworIEVWUF9QS0VZX0NUWCAqcV9FVlBfUEtFWV9DVFhfbmV3KEVWUF9QS0VZICpwa2V5 LCBFTkdJTkUgKmUpOworIHZvaWQgcV9FVlBfUEtFWV9DVFhfZnJlZShFVlBfUEtFWV9DVFggKmN0 eCk7CisgaW50IHFfRVZQX1BLRVlfcGFyYW1fY2hlY2soRVZQX1BLRVlfQ1RYICpjdHgpOworLWlu dCBxX0VWUF9QS0VZX2Jhc2VfaWQoRVZQX1BLRVkgKmEpOworIGludCBxX1JTQV9iaXRzKFJTQSAq YSk7CisgUV9BVVRPVEVTVF9FWFBPUlQgaW50IHFfT1BFTlNTTF9za19udW0oT1BFTlNTTF9TVEFD SyAqYSk7CisgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCBxX09QRU5TU0xfc2tfcG9wX2ZyZWUoT1BF TlNTTF9TVEFDSyAqYSwgdm9pZCAoKmIpKHZvaWQgKikpOworQEAgLTI0Niw3ICsyNDUsNyBAQCBR X0FVVE9URVNUX0VYUE9SVCB2b2lkIHFfT1BFTlNTTF9za19wdXNoKE9QRU5TU0xfU1RBQ0sgKnN0 LCB2b2lkICpkYXRhKTsKKyBRX0FVVE9URVNUX0VYUE9SVCB2b2lkIHFfT1BFTlNTTF9za19mcmVl KE9QRU5TU0xfU1RBQ0sgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQgKiBxX09QRU5TU0xf c2tfdmFsdWUoT1BFTlNTTF9TVEFDSyAqYSwgaW50IGIpOworIGludCBxX1NTTF9zZXNzaW9uX3Jl dXNlZChTU0wgKmEpOworLXVuc2lnbmVkIGxvbmcgcV9TU0xfQ1RYX3NldF9vcHRpb25zKFNTTF9D VFggKmN0eCwgdW5zaWduZWQgbG9uZyBvcCk7CisrcXNzbG9wdGlvbnMgcV9TU0xfQ1RYX3NldF9v cHRpb25zKFNTTF9DVFggKmN0eCwgcXNzbG9wdGlvbnMgb3ApOworIGludCBxX09QRU5TU0xfaW5p dF9zc2wodWludDY0X3Qgb3B0cywgY29uc3QgT1BFTlNTTF9JTklUX1NFVFRJTkdTICpzZXR0aW5n cyk7Cisgc2l6ZV90IHFfU1NMX2dldF9jbGllbnRfcmFuZG9tKFNTTCAqYSwgdW5zaWduZWQgY2hh ciAqb3V0LCBzaXplX3Qgb3V0bGVuKTsKKyBzaXplX3QgcV9TU0xfU0VTU0lPTl9nZXRfbWFzdGVy X2tleShjb25zdCBTU0xfU0VTU0lPTiAqc2Vzc2lvbiwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXpl X3Qgb3V0bGVuKTsKK0BAIC01MTAsNyArNTA5LDYgQEAgY29uc3QgU1NMX0NJUEhFUiAqcV9TU0xf Z2V0X2N1cnJlbnRfY2lwaGVyKFNTTCAqYSk7CisgaW50IHFfU1NMX3ZlcnNpb24oY29uc3QgU1NM ICphKTsKKyBpbnQgcV9TU0xfZ2V0X2Vycm9yKFNTTCAqYSwgaW50IGIpOworIFNUQUNLX09GKFg1 MDkpICpxX1NTTF9nZXRfcGVlcl9jZXJ0X2NoYWluKFNTTCAqYSk7CistWDUwOSAqcV9TU0xfZ2V0 X3BlZXJfY2VydGlmaWNhdGUoU1NMICphKTsKKyBsb25nIHFfU1NMX2dldF92ZXJpZnlfcmVzdWx0 KGNvbnN0IFNTTCAqYSk7CisgU1NMICpxX1NTTF9uZXcoU1NMX0NUWCAqYSk7CisgU1NMX0NUWCAq cV9TU0xfZ2V0X1NTTF9DVFgoU1NMICphKTsKK0BAIC01ODIsMTAgKzU4MCw3IEBAIERIICpxX0RI X25ldygpOworIHZvaWQgcV9ESF9mcmVlKERIICpkaCk7CisgREggKnFfZDJpX0RIcGFyYW1zKERI ICoqYSwgY29uc3QgdW5zaWduZWQgY2hhciAqKnBwLCBsb25nIGxlbmd0aCk7CisgaW50IHFfaTJk X0RIcGFyYW1zKERIICphLCB1bnNpZ25lZCBjaGFyICoqcCk7CistCistI2lmbmRlZiBPUEVOU1NM X05PX0RFUFJFQ0FURURfM18wCisgaW50IHFfREhfY2hlY2soREggKmRoLCBpbnQgKmNvZGVzKTsK Ky0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIAorIEJJR05VTSAqcV9CTl9i aW4yYm4oY29uc3QgdW5zaWduZWQgY2hhciAqcywgaW50IGxlbiwgQklHTlVNICpyZXQpOworICNk ZWZpbmUgcV9TU0xfQ1RYX3NldF90bXBfZGgoY3R4LCBkaCkgcV9TU0xfQ1RYX2N0cmwoKGN0eCks IFNTTF9DVFJMX1NFVF9UTVBfREgsIDAsIChjaGFyICopZGgpCitAQCAtNzU0LDYgKzc0OSwxNyBA QCB2b2lkIHFfQ1JZUFRPX2ZyZWUodm9pZCAqc3RyLCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGlu ZSk7CisgaW50IHFfU1NMX0NUWF9nZXRfc2VjdXJpdHlfbGV2ZWwoY29uc3QgU1NMX0NUWCAqY3R4 KTsKKyB2b2lkIHFfU1NMX0NUWF9zZXRfc2VjdXJpdHlfbGV2ZWwoU1NMX0NUWCAqY3R4LCBpbnQg bGV2ZWwpOworIAorKy8vIEhlcmUgd2UgaGF2ZSB0aGUgb25lcyB0aGF0IG1ha2UgZGlmZmVyZW5j ZSBiZXR3ZWVuIE9wZW5TU0wgcHJlL3Bvc3QgdjM6CisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJT SU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworK1g1MDkgKnFfU1NMX2dl dDFfcGVlcl9jZXJ0aWZpY2F0ZShTU0wgKmEpOworKyNkZWZpbmUgcV9TU0xfZ2V0X3BlZXJfY2Vy dGlmaWNhdGUgcV9TU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlCisraW50IHFfRVZQX1BLRVlfZ2V0 X2Jhc2VfaWQoY29uc3QgRVZQX1BLRVkgKnBrZXkpOworKyNkZWZpbmUgcV9FVlBfUEtFWV9iYXNl X2lkIHFfRVZQX1BLRVlfZ2V0X2Jhc2VfaWQKKysjZWxzZQorK1g1MDkgKnFfU1NMX2dldF9wZWVy X2NlcnRpZmljYXRlKFNTTCAqYSk7CisraW50IHFfRVZQX1BLRVlfYmFzZV9pZChFVlBfUEtFWSAq YSk7CisrI2VuZGlmIC8vIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrCisgUVRfRU5EX05B TUVTUEFDRQorIAorICNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9y dC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oCitpbmRleCBiZjM3ZDA3ZmQ4Li5kYmQ0MmZiNzk5 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2Uv cXRfZWdsX3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVu Y2UvcXRfZWdsX3AuaAorQEAgLTYxLDcgKzYxLDExIEBACisgIyBpZiAhZGVmaW5lZChRX09TX0lO VEVHUklUWSkKKyAjICBkZWZpbmUgV0lOX0lOVEVSRkFDRV9DVVNUT00gICAvLyBOVgorICMgZW5k aWYgLy8gUV9PU19JTlRFR1JJVFkKKy0jZW5kaWYgIC8vIFFUX0VHTF9OT19YMTEKKysjZWxzZSAv LyBRVF9FR0xfTk9fWDExCisrLy8gSWYgb25lIGhhcyBhbiBlZ2xwbGF0Zm9ybS5oIHdpdGggaHR0 cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9FR0wtUmVnaXN0cnkvcHVsbC8xMzAKKysvLyB0 aGF0IG5lZWRzIFVTRV9YMTEgdG8gYmUgZGVmaW5lZC4KKysjIGRlZmluZSBVU0VfWDExCisrI2Vu ZGlmCisgCisgI2lmZGVmIFFUX0VHTF9XQVlMQU5ECisgIyBkZWZpbmUgV0FZTEFORCAvLyBOVgor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ZvbnRkYXRhYmFzZXMvZm9u dGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L2ZvbnRkYXRhYmFzZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcAoraW5k ZXggMTU5YjQ5MGNlMC4uMDBhYTgwY2Q1OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L2ZvbnRkYXRhYmFzZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNw cAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29u ZmlnL3Fmb250Y29uZmlnZGF0YWJhc2UuY3BwCitAQCAtNTY3LDYgKzU2Nyw4IEBAIHZvaWQgUUZv bnRjb25maWdEYXRhYmFzZTo6cG9wdWxhdGVGb250RGF0YWJhc2UoKQorICAgICAgICAgZm9udHMg PSBGY0ZvbnRMaXN0KG51bGxwdHIsIHBhdHRlcm4sIG9zKTsKKyAgICAgICAgIEZjT2JqZWN0U2V0 RGVzdHJveShvcyk7CisgICAgICAgICBGY1BhdHRlcm5EZXN0cm95KHBhdHRlcm4pOworKyAgICAg ICAgaWYgKCFmb250cykKKysgICAgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKyAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBmb250cy0+bmZvbnQ7IGkrKykKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAgYi9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAKK2lu ZGV4IGI3MTNjMTk0NDcuLjdjYjlhOGM3OWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAKKysrKyBiL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uLmNwcAorQEAgLTk1 LDYgKzk1LDcgQEAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBhdXRvIEtleVRibCA9IHFNYWtlQXJy YXkoCisgICAgICAgICBYa2IyUXQ8WEtCX0tFWV9DbGVhciwgICAgICAgICAgICAgICAgICAgUXQ6 OktleV9EZWxldGU+LAorICAgICAgICAgWGtiMlF0PFhLQl9LRVlfUGF1c2UsICAgICAgICAgICAg ICAgICAgIFF0OjpLZXlfUGF1c2U+LAorICAgICAgICAgWGtiMlF0PFhLQl9LRVlfUHJpbnQsICAg ICAgICAgICAgICAgICAgIFF0OjpLZXlfUHJpbnQ+LAorKyAgICAgICAgWGtiMlF0PFhLQl9LRVlf U3lzX1JlcSwgICAgICAgICAgICAgICAgIFF0OjpLZXlfU3lzUmVxPiwKKyAgICAgICAgIFhrYjJR dDwweDEwMDVGRjYwLCAgICAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1N5c1JlcT4sICAgICAg ICAgLy8gaGFyZGNvZGVkIFN1biBTeXNSZXEKKyAgICAgICAgIFhrYjJRdDwweDEwMDdmZjAwLCAg ICAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1N5c1JlcT4sICAgICAgICAgLy8gaGFyZGNvZGVk IFgzODYgU3lzUmVxCisgCitAQCAtNDcxLDcgKzQ3Miw3IEBAIFFWZWN0b3I8eGtiX2tleXN5bV90 PiBRWGtiQ29tbW9uOjp0b0tleXN5bShRS2V5RXZlbnQgKmV2ZW50KQorICAgICB9IGVsc2UgaWYg KGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpLZXlwYWRNb2RpZmllcikgeworICAgICAgICAgaWYg KHF0S2V5ID49IFF0OjpLZXlfMCAmJiBxdEtleSA8PSBRdDo6S2V5XzkpCisgICAgICAgICAgICAg a2V5c3ltcy5hcHBlbmQoWEtCX0tFWV9LUF8wICsgKHF0S2V5IC0gUXQ6OktleV8wKSk7CistICAg IH0gZWxzZSBpZiAoaXNMYXRpbihxdEtleSkgJiYgZXZlbnQtPnRleHQoKS5pc1VwcGVyKCkpIHsK KysgICAgfSBlbHNlIGlmIChpc0xhdGluMShxdEtleSkgJiYgZXZlbnQtPnRleHQoKS5pc1VwcGVy KCkpIHsKKyAgICAgICAgIGtleXN5bXMuYXBwZW5kKHF0S2V5KTsKKyAgICAgfQorIAorQEAgLTUy Myw3ICs1MjQsNyBAQCBpbnQgUVhrYkNvbW1vbjo6a2V5c3ltVG9RdEtleSh4a2Jfa2V5c3ltX3Qg a2V5c3ltLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kaWZpZQorICAgICAgICAgLy8gV2l0aCBz dGFuZGFyZCBzaG9ydGN1dHMgd2Ugc2hvdWxkIHByZWZlciBhIGxhdGluIGNoYXJhY3RlciwgdGhp cyBpcworICAgICAgICAgLy8gZm9yIGNoZWNrcyBsaWtlICJzb21lIHFrZXlldmVudCA9PSBRS2V5 U2VxdWVuY2U6OkNvcHkiIHRvIHdvcmsgZXZlbgorICAgICAgICAgLy8gd2hlbiB1c2luZyBmb3Ig ZXhhbXBsZSAncnVzc2lhbicga2V5Ym9hcmQgbGF5b3V0LgorLSAgICAgICAgaWYgKCFRWGtiQ29t bW9uOjppc0xhdGluKGtleXN5bSkpIHsKKysgICAgICAgIGlmICghUVhrYkNvbW1vbjo6aXNMYXRp bjEoa2V5c3ltKSkgeworICAgICAgICAgICAgIHhrYl9rZXlzeW1fdCBsYXRpbktleXN5bSA9IFFY a2JDb21tb246Omxvb2t1cExhdGluS2V5c3ltKHN0YXRlLCBjb2RlKTsKKyAgICAgICAgICAgICBp ZiAobGF0aW5LZXlzeW0gIT0gWEtCX0tFWV9Ob1N5bWJvbCkKKyAgICAgICAgICAgICAgICAga2V5 c3ltID0gbGF0aW5LZXlzeW07CitAQCAtNTQ2LDcgKzU0Nyw3IEBAIHN0YXRpYyBpbnQga2V5c3lt VG9RdEtleV9pbnRlcm5hbCh4a2Jfa2V5c3ltX3Qga2V5c3ltLCBRdDo6S2V5Ym9hcmRNb2RpZmll cnMgbW9kCisgICAgIH0gZWxzZSBpZiAoa2V5c3ltID49IFhLQl9LRVlfS1BfMCAmJiBrZXlzeW0g PD0gWEtCX0tFWV9LUF85KSB7CisgICAgICAgICAvLyBudW1lcmljIGtleXBhZCBrZXlzCisgICAg ICAgICBxdEtleSA9IFF0OjpLZXlfMCArIChrZXlzeW0gLSBYS0JfS0VZX0tQXzApOworLSAgICB9 IGVsc2UgaWYgKFFYa2JDb21tb246OmlzTGF0aW4oa2V5c3ltKSkgeworKyAgICB9IGVsc2UgaWYg KFFYa2JDb21tb246OmlzTGF0aW4xKGtleXN5bSkpIHsKKyAgICAgICAgIHF0S2V5ID0gUVhrYkNv bW1vbjo6cXhrYmNvbW1vbl94a2Jfa2V5c3ltX3RvX3VwcGVyKGtleXN5bSk7CisgICAgIH0gZWxz ZSB7CisgICAgICAgICAvLyBjaGVjayBpZiB3ZSBoYXZlIGEgZGlyZWN0IG1hcHBpbmcKK0BAIC02 NzgsNyArNjc5LDcgQEAgUUxpc3Q8aW50PiBRWGtiQ29tbW9uOjpwb3NzaWJsZUtleXMoeGtiX3N0 YXRlICpzdGF0ZSwgY29uc3QgUUtleUV2ZW50ICpldmVudCwKKyAgICAgICAgIFF0OjpLZXlib2Fy ZE1vZGlmaWVycyBuZWVkZWRNb2RzID0gTW9kc1RibFtpXTsKKyAgICAgICAgIGlmICgobW9kaWZp ZXJzICYgbmVlZGVkTW9kcykgPT0gbmVlZGVkTW9kcykgeworICAgICAgICAgICAgIGlmIChpID09 IDgpIHsKKy0gICAgICAgICAgICAgICAgaWYgKGlzTGF0aW4oYmFzZVF0S2V5KSkKKysgICAgICAg ICAgICAgICAgaWYgKGlzTGF0aW4xKGJhc2VRdEtleSkpCisgICAgICAgICAgICAgICAgICAgICBj b250aW51ZTsKKyAgICAgICAgICAgICAgICAgLy8gYWRkIGEgbGF0aW4ga2V5IGFzIGEgZmFsbCBi YWNrIGtleQorICAgICAgICAgICAgICAgICBzeW0gPSBsb29rdXBMYXRpbktleXN5bShzdGF0ZSwg a2V5Y29kZSk7CitAQCAtNzMzLDcgKzczNCw3IEBAIHZvaWQgUVhrYkNvbW1vbjo6dmVyaWZ5SGFz TGF0aW5MYXlvdXQoeGtiX2tleW1hcCAqa2V5bWFwKQorICAgICBmb3IgKHhrYl9sYXlvdXRfaW5k ZXhfdCBsYXlvdXQgPSAwOyBsYXlvdXQgPCBsYXlvdXRDb3VudDsgKytsYXlvdXQpIHsKKyAgICAg ICAgIGZvciAoeGtiX2tleWNvZGVfdCBjb2RlID0gbWluS2V5Y29kZTsgY29kZSA8IG1heEtleWNv ZGU7ICsrY29kZSkgeworICAgICAgICAgICAgIHhrYl9rZXltYXBfa2V5X2dldF9zeW1zX2J5X2xl dmVsKGtleW1hcCwgY29kZSwgbGF5b3V0LCAwLCAma2V5c3ltcyk7CistICAgICAgICAgICAgaWYg KGtleXN5bXMgJiYgaXNMYXRpbihrZXlzeW1zWzBdKSkKKysgICAgICAgICAgICBpZiAoa2V5c3lt cyAmJiBpc0xhdGluMShrZXlzeW1zWzBdKSkKKyAgICAgICAgICAgICAgICAgbnJMYXRpbktleXMr KzsKKyAgICAgICAgICAgICBpZiAobnJMYXRpbktleXMgPiAxMCkgLy8gYXJiaXRyYXJpbHkgY2hv c2VuIHRocmVzaG9sZAorICAgICAgICAgICAgICAgICByZXR1cm47CitAQCAtNzY2LDcgKzc2Nyw3 IEBAIHhrYl9rZXlzeW1fdCBRWGtiQ29tbW9uOjpsb29rdXBMYXRpbktleXN5bSh4a2Jfc3RhdGUg KnN0YXRlLCB4a2Jfa2V5Y29kZV90IGtleWNvCisgICAgICAgICB4a2JfbGV2ZWxfaW5kZXhfdCBs ZXZlbCA9IHhrYl9zdGF0ZV9rZXlfZ2V0X2xldmVsKHN0YXRlLCBrZXljb2RlLCBsYXlvdXQpOwor ICAgICAgICAgaWYgKHhrYl9rZXltYXBfa2V5X2dldF9zeW1zX2J5X2xldmVsKGtleW1hcCwga2V5 Y29kZSwgbGF5b3V0LCBsZXZlbCwgJnN5bXMpICE9IDEpCisgICAgICAgICAgICAgY29udGludWU7 CistICAgICAgICBpZiAoaXNMYXRpbihzeW1zWzBdKSkgeworKyAgICAgICAgaWYgKGlzTGF0aW4x KHN5bXNbMF0pKSB7CisgICAgICAgICAgICAgc3ltID0gc3ltc1swXTsKKyAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9y dC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbl9wLmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbl9wLmgKK2luZGV4IDU2MWVhZTAzZGIuLjgz ODliZDhmNWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94 a2Jjb21tb24vcXhrYmNvbW1vbl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uX3AuaAorQEAgLTk0LDggKzk0LDggQEAgcHVibGlj OgorICAgICBzdGF0aWMgdm9pZCB2ZXJpZnlIYXNMYXRpbkxheW91dCh4a2Jfa2V5bWFwICprZXlt YXApOworICAgICBzdGF0aWMgeGtiX2tleXN5bV90IGxvb2t1cExhdGluS2V5c3ltKHhrYl9zdGF0 ZSAqc3RhdGUsIHhrYl9rZXljb2RlX3Qga2V5Y29kZSk7CisgCistICAgIHN0YXRpYyBib29sIGlz TGF0aW4oeGtiX2tleXN5bV90IHN5bSkgeworLSAgICAgICAgcmV0dXJuICgoc3ltID49ICdhJyAm JiBzeW0gPD0gJ3onKSB8fCAoc3ltID49ICdBJyAmJiBzeW0gPD0gJ1onKSk7CisrICAgIHN0YXRp YyBib29sIGlzTGF0aW4xKHhrYl9rZXlzeW1fdCBzeW0pIHsKKysgICAgICAgIHJldHVybiBzeW0g PD0gMHhmZjsKKyAgICAgfQorICAgICBzdGF0aWMgYm9vbCBpc0tleXBhZCh4a2Jfa2V5c3ltX3Qg c3ltKSB7CisgICAgICAgICByZXR1cm4gc3ltID49IFhLQl9LRVlfS1BfU3BhY2UgJiYgc3ltIDw9 IFhLQl9LRVlfS1BfOTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9r bXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L2ttc2NvbnZlbmllbmNlL3FrbXNkZXZpY2UuY3BwCitpbmRleCA4Y2Q3ZjliMzY4Li40MDZmODQ2 NjNmIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVu Y2UvcWttc2RldmljZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2Nv bnZlbmllbmNlL3FrbXNkZXZpY2UuY3BwCitAQCAtMzE4LDcgKzMxOCw3IEBAIFFQbGF0Zm9ybVNj cmVlbiAqUUttc0RldmljZTo6Y3JlYXRlU2NyZWVuRm9yQ29ubmVjdG9yKGRybU1vZGVSZXNQdHIg cmVzb3VyY2VzLAorIAorICAgICBpZiAoY3VycmVudCA8IDAgJiYgY3J0Y19tb2RlLmNsb2NrICE9 IDApIHsKKyAgICAgICAgIG1vZGVzIDw8IGNydGNfbW9kZTsKKy0gICAgICAgIGN1cnJlbnQgPSBt b2RlLnNpemUoKSAtIDE7CisrICAgICAgICBjdXJyZW50ID0gbW9kZXMuc2l6ZSgpIC0gMTsKKyAg ICAgfQorIAorICAgICBpZiAoY29uZmlndXJhdGlvbiA9PSBPdXRwdXRDb25maWdDdXJyZW50KQor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0 eS9hdHNwaWFkYXB0b3IuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nl c3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAKK2luZGV4IDkxNTNmZDIwYmIuLjI1NWVhNWUzM2Ug MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxp dHkvYXRzcGlhZGFwdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGlu dXhhY2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAKK0BAIC0xOTQsNiArMTk0LDkgQEAgUVN0 cmluZyBBdFNwaUFkYXB0b3I6OmludHJvc3BlY3QoY29uc3QgUVN0cmluZyAmcGF0aCkgY29uc3QK KyAgICAgICAgICAgICAgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPVwib3V0XCIgdHlwZT1cIihz bylcIi8+XG4iCisgICAgICAgICAgICAgICAgICIgICAgICA8YW5ub3RhdGlvbiB2YWx1ZT1cIlFT cGlPYmplY3RSZWZlcmVuY2VcIiBuYW1lPVwib3JnLnF0cHJvamVjdC5RdERCdXMuUXRUeXBlTmFt ZS5PdXQwXCIvPlxuIgorICAgICAgICAgICAgICAgICAiICAgIDwvbWV0aG9kPlxuIgorKyAgICAg ICAgICAgICAgICAiICAgIDxtZXRob2QgbmFtZT1cIkdldEFjY2Vzc2libGVJZFwiPlxuIgorKyAg ICAgICAgICAgICAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249XCJvdXRcIiB0eXBlPVwic1wiLz5c biIKKysgICAgICAgICAgICAgICAgIiAgICA8L21ldGhvZD5cbiIKKyAgICAgICAgICAgICAgICAg IiAgPC9pbnRlcmZhY2U+XG4iCisgICAgICAgICAgICAgICAgICk7CisgCitAQCAtOTEzLDggKzkx NiwxNyBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6bm90aWZ5KFFBY2Nlc3NpYmxlRXZlbnQgKmV2ZW50 KQorICAgICB9CisgICAgIGNhc2UgUUFjY2Vzc2libGU6Ok5hbWVDaGFuZ2VkOiB7CisgICAgICAg ICBpZiAoc2VuZE9iamVjdCB8fCBzZW5kT2JqZWN0X3Byb3BlcnR5X2NoYW5nZSB8fCBzZW5kT2Jq ZWN0X3Byb3BlcnR5X2NoYW5nZV9hY2Nlc3NpYmxlX25hbWUpIHsKKy0gICAgICAgICAgICBRU3Ry aW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCkp OworLSAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1bWVu dHMoUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsIHZhcmlhbnRGb3JQYXRo KHBhdGgpKTsKKysgICAgICAgICAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UgPSBldmVu dC0+YWNjZXNzaWJsZUludGVyZmFjZSgpOworKyAgICAgICAgICAgIGlmICghaWZhY2UpIHsKKysg ICAgICAgICAgICAgICAgcUNEZWJ1ZyhsY0FjY2Vzc2liaWxpdHlBdHNwaSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAiTmFtZUNoYW5nZWQgZXZlbnQgZnJvbSBpbnZhbGlkIGFjY2Vzc2libGUu Iik7CisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAgICB9CisrCisrICAgICAg ICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShpZmFjZSk7CisrICAgICAgICAg ICAgUVZhcmlhbnRMaXN0IGFyZ3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cygKKysgICAgICAg ICAgICAgICAgUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsCisrICAgICAg ICAgICAgICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50KGlmYWNlLT50ZXh0KFFB Y2Nlc3NpYmxlOjpOYW1lKSkpKTsKKyAgICAgICAgICAgICBzZW5kREJ1c1NpZ25hbChwYXRoLCBR TGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNfSU5URVJGQUNFX0VWRU5UX09CSkVDVCksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUHJvcGVydHlDaGFuZ2UiKSwgYXJn cyk7CisgICAgICAgICB9CitAQCAtOTIyLDggKzkzNCwxNyBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6 bm90aWZ5KFFBY2Nlc3NpYmxlRXZlbnQgKmV2ZW50KQorICAgICB9CisgICAgIGNhc2UgUUFjY2Vz c2libGU6OkRlc2NyaXB0aW9uQ2hhbmdlZDogeworICAgICAgICAgaWYgKHNlbmRPYmplY3QgfHwg c2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2UgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2Vf YWNjZXNzaWJsZV9kZXNjcmlwdGlvbikgeworLSAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBh dGhGb3JJbnRlcmZhY2UoZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKSk7CistICAgICAgICAg ICAgUVZhcmlhbnRMaXN0IGFyZ3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhRTGF0aW4xU3Ry aW5nKCJhY2Nlc3NpYmxlLWRlc2NyaXB0aW9uIiksIDAsIDAsIHZhcmlhbnRGb3JQYXRoKHBhdGgp KTsKKysgICAgICAgICAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UgPSBldmVudC0+YWNj ZXNzaWJsZUludGVyZmFjZSgpOworKyAgICAgICAgICAgIGlmICghaWZhY2UpIHsKKysgICAgICAg ICAgICAgICAgcUNEZWJ1ZyhsY0FjY2Vzc2liaWxpdHlBdHNwaSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAiRGVzY3JpcHRpb25DaGFuZ2VkIGV2ZW50IGZyb20gaW52YWxpZCBhY2Nlc3NpYmxl LiIpOworKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgfQorKworKyAgICAg ICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoaWZhY2UpOworKyAgICAgICAg ICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoCisrICAgICAg ICAgICAgICAgIFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtZGVzY3JpcHRpb24iKSwgMCwgMCwK KysgICAgICAgICAgICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoaWZhY2Ut PnRleHQoUUFjY2Vzc2libGU6OkRlc2NyaXB0aW9uKSkpKTsKKyAgICAgICAgICAgICBzZW5kREJ1 c1NpZ25hbChwYXRoLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNfSU5URVJGQUNFX0VWRU5UX09C SkVDVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUHJvcGVy dHlDaGFuZ2UiKSwgYXJncyk7CisgICAgICAgICB9CitAQCAtMTAzOCw3ICsxMDU5LDkgQEAgdm9p ZCBBdFNwaUFkYXB0b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2ZW50ICpldmVudCkKKyAgICAgICAg ICAgICAgICAgLy8gQ29tYm8gQm94IHdpdGggQVQtU1BJIGxpa2VzIHRvIGJlIHNwZWNpYWwKKyAg ICAgICAgICAgICAgICAgLy8gSXQgcmVxdWlyZXMgYSBuYW1lLWNoYW5nZSB0byB1cGRhdGUgY2Fj aGVzIGFuZCB0aGVuIHNlbGVjdGlvbi1jaGFuZ2VkCisgICAgICAgICAgICAgICAgIFFTdHJpbmcg cGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoaWZhY2UpOworLSAgICAgICAgICAgICAgICBRVmFyaWFu dExpc3QgYXJnczEgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhRTGF0aW4xU3RyaW5nKCJhY2Nl c3NpYmxlLW5hbWUiKSwgMCwgMCwgdmFyaWFudEZvclBhdGgocGF0aCkpOworKyAgICAgICAgICAg ICAgICBRVmFyaWFudExpc3QgYXJnczEgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cygKKysgICAg ICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLAor KyAgICAgICAgICAgICAgICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoaWZh Y2UtPnRleHQoUUFjY2Vzc2libGU6Ok5hbWUpKSkpOworICAgICAgICAgICAgICAgICBzZW5kREJ1 c1NpZ25hbChwYXRoLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNfSU5URVJGQUNFX0VWRU5UX09C SkVDVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlBy b3BlcnR5Q2hhbmdlIiksIGFyZ3MxKTsKKyAgICAgICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFy Z3MyID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoUVN0cmluZygpLCAwLCAwLCBRVmFyaWFudDo6 ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChRVmFyaWFudCgwKSkpKTsKK0BAIC0xMzU4LDYgKzEzODEs MjYgQEAgdm9pZCBBdFNwaUFkYXB0b3I6OnJlZ2lzdGVyQXBwbGljYXRpb24oKQorICAgICBkZWxl dGUgcmVnaXN0cnk7CisgfQorIAorK25hbWVzcGFjZSB7CisrUVN0cmluZyBhY2Nlc3NpYmxlSWRG b3JBY2Nlc3NpYmxlKFFBY2Nlc3NpYmxlSW50ZXJmYWNlICphY2Nlc3NpYmxlKQorK3sKKysgICAg UVN0cmluZyByZXN1bHQ7CisrICAgIHdoaWxlIChhY2Nlc3NpYmxlKSB7CisrICAgICAgICBpZiAo IXJlc3VsdC5pc0VtcHR5KCkpCisrICAgICAgICAgICAgcmVzdWx0LnByZXBlbmQoUUxhdGluMUNo YXIoJy4nKSk7CisrICAgICAgICBpZiAoYXV0byBvYmogPSBhY2Nlc3NpYmxlLT5vYmplY3QoKSkg eworKyAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgbmFtZSA9IG9iai0+b2JqZWN0TmFtZSgpOwor KyAgICAgICAgICAgIGlmICghbmFtZS5pc0VtcHR5KCkpCisrICAgICAgICAgICAgICAgIHJlc3Vs dC5wcmVwZW5kKG5hbWUpOworKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgcmVz dWx0LnByZXBlbmQoUVN0cmluZzo6ZnJvbVV0Zjgob2JqLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFt ZSgpKSk7CisrICAgICAgICB9CisrICAgICAgICBhY2Nlc3NpYmxlID0gYWNjZXNzaWJsZS0+cGFy ZW50KCk7CisrICAgIH0KKysgICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrfSAvLyBuYW1lc3BhY2UK KysKKyAvLyBBY2Nlc3NpYmxlCisgYm9vbCBBdFNwaUFkYXB0b3I6OmFjY2Vzc2libGVJbnRlcmZh Y2UoUUFjY2Vzc2libGVJbnRlcmZhY2UgKmludGVyZmFjZSwgY29uc3QgUVN0cmluZyAmZnVuY3Rp b24sIGNvbnN0IFFEQnVzTWVzc2FnZSAmbWVzc2FnZSwgY29uc3QgUURCdXNDb25uZWN0aW9uICZj b25uZWN0aW9uKQorIHsKK0BAIC0xNDQxLDYgKzE0ODQsOSBAQCBib29sIEF0U3BpQWRhcHRvcjo6 YWNjZXNzaWJsZUludGVyZmFjZShRQWNjZXNzaWJsZUludGVyZmFjZSAqaW50ZXJmYWNlLCBjb25z dCBRUworICAgICAgICAgICAgIGNoaWxkcmVuIDw8IHJlZjsKKyAgICAgICAgIH0KKyAgICAgICAg IGNvbm5lY3Rpb24uc2VuZChtZXNzYWdlLmNyZWF0ZVJlcGx5KFFWYXJpYW50Ojpmcm9tVmFsdWUo Y2hpbGRyZW4pKSk7CisrICAgIH0gZWxzZSBpZiAoZnVuY3Rpb24gPT0gUUxhdGluMVN0cmluZygi R2V0QWNjZXNzaWJsZUlkIikpIHsKKysgICAgICAgIHNlbmRSZXBseShjb25uZWN0aW9uLCBtZXNz YWdlLAorKyAgICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50 KGFjY2Vzc2libGVJZEZvckFjY2Vzc2libGUoaW50ZXJmYWNlKSkpKTsKKyAgICAgfSBlbHNlIHsK KyAgICAgICAgIHFDRGVidWcobGNBY2Nlc3NpYmlsaXR5QXRzcGkpIDw8ICJXQVJOSU5HOiBBdFNw aUFkYXB0b3I6OmFjY2Vzc2libGVJbnRlcmZhY2UgZG9lcyBub3QgaW1wbGVtZW50ICIgPDwgZnVu Y3Rpb24gPDwgbWVzc2FnZS5wYXRoKCk7CisgICAgICAgICByZXR1cm4gZmFsc2U7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNj b25uZWN0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJp bGl0eS9kYnVzY29ubmVjdGlvbi5jcHAKK2luZGV4IDQ1ZGRjOGU0OTYuLmNjNzM0YWJjNjMgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkv ZGJ1c2Nvbm5lY3Rpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51 eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwCitAQCAtNjksNiArNjksMjEgQEAgUVRf QkVHSU5fTkFNRVNQQUNFCisgREJ1c0Nvbm5lY3Rpb246OkRCdXNDb25uZWN0aW9uKFFPYmplY3Qg KnBhcmVudCkKKyAgICAgOiBRT2JqZWN0KHBhcmVudCksIG1fYTExeUNvbm5lY3Rpb24oUVN0cmlu ZygpKSwgbV9lbmFibGVkKGZhbHNlKQorIHsKKysgICAgLy8gSWYgdGhlIGJ1cyBpcyBleHBsaWNp dGx5IHNldCB2aWEgZW52IHZhciBpdCBvdmVycmlkZXMgZXZlcnl0aGluZyBlbHNlLgorKyAgICBR Qnl0ZUFycmF5IGFkZHJlc3NFbnYgPSBxZ2V0ZW52KCJBVF9TUElfQlVTX0FERFJFU1MiKTsKKysg ICAgaWYgKCFhZGRyZXNzRW52LmlzRW1wdHkoKSkgeworKyAgICAgICAgLy8gT25seSBjb25uZWN0 IG9uIG5leHQgbG9vcCBydW4sIGNvbm5lY3Rpb25zIHRvIG91ciBlbmFibGVkIHNpZ25hbCBhcmUK KysgICAgICAgIC8vIG9ubHkgZXN0YWJsaXNoZWQgYWZ0ZXIgdGhlIGN0b3IgcmV0dXJucy4KKysg ICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QoCisrICAgICAgICAgICAgICAgIHRoaXMs CisrICAgICAgICAgICAgICAgIFt0aGlzLCBhZGRyZXNzRW52XSB7CisrICAgICAgICAgICAgICAg ICAgICBtX2VuYWJsZWQgPSB0cnVlOworKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdEExMXlC dXMoUVN0cmluZzo6ZnJvbUxvY2FsOEJpdChhZGRyZXNzRW52KSk7CisrICAgICAgICAgICAgICAg IH0sCisrICAgICAgICAgICAgICAgIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKysgICAgICAgIHJl dHVybjsKKysgICAgfQorKworICAgICAvLyBTdGFydCBtb25pdG9yaW5nIGlmICJvcmcuYTExeS5C dXMiIGlzIHJlZ2lzdGVyZWQgYXMgREJ1cyBzZXJ2aWNlLgorICAgICBRREJ1c0Nvbm5lY3Rpb24g YyA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpOworICAgICBpZiAoIWMuaXNDb25uZWN0 ZWQoKSkgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2Vz L2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcAor aW5kZXggMWEzY2FiMjc1ZC4uMmFiZTAzOTEyNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNw cAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgv cWdlbmVyaWN1bml4c2VydmljZXMuY3BwCitAQCAtNTEsNiArNTEsOSBAQAorICNpbmNsdWRlIDxR dENvcmUvUVN0YW5kYXJkUGF0aHM+CisgI2luY2x1ZGUgPFF0Q29yZS9RVXJsPgorIAorKyNpbmNs dWRlIDxRdEd1aS9RR3VpQXBwbGljYXRpb24+CisrI2luY2x1ZGUgPFF0R3VpL1FXaW5kb3c+Cisr CisgI2lmIFFUX0NPTkZJRyhkYnVzKQorIC8vIFRoZXNlIFF0Q29yZSBpbmNsdWRlcyBhcmUgbmVl ZGVkIGZvciB4ZGctZGVza3RvcC1wb3J0YWwgc3VwcG9ydAorICNpbmNsdWRlIDxRdENvcmUvcHJp dmF0ZS9xY29yZV91bml4X3AuaD4KK0BAIC01OCw2ICs2MSw4IEBACisgI2luY2x1ZGUgPFF0Q29y ZS9RRmlsZUluZm8+CisgI2luY2x1ZGUgPFF0Q29yZS9RVXJsUXVlcnk+CisgCisrI2luY2x1ZGUg PFF0R3VpL1FDb2xvcj4KKysKKyAjaW5jbHVkZSA8UXREQnVzL1FEQnVzQ29ubmVjdGlvbj4KKyAj aW5jbHVkZSA8UXREQnVzL1FEQnVzTWVzc2FnZT4KKyAjaW5jbHVkZSA8UXREQnVzL1FEQnVzUGVu ZGluZ0NhbGw+CitAQCAtMTQyLDYgKzE0Nyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkZXRlY3RX ZWJCcm93c2VyKGNvbnN0IFFCeXRlQXJyYXkgJmRlc2t0b3AsCisgICAgIH0KKyAKKyAgICAgaWYg KGRlc2t0b3AgPT0gUUJ5dGVBcnJheSgiS0RFIikpIHsKKysgICAgICAgIGlmIChjaGVja0V4ZWN1 dGFibGUoUVN0cmluZ0xpdGVyYWwoImtkZS1vcGVuNSIpLCBicm93c2VyKSkKKysgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIC8vIEtvbnF1ZXJvciBsYXVuY2hlcgorICAgICAgICAg aWYgKGNoZWNrRXhlY3V0YWJsZShRU3RyaW5nTGl0ZXJhbCgia2ZtY2xpZW50IiksIGJyb3dzZXIp KSB7CisgICAgICAgICAgICAgYnJvd3Nlci0+YXBwZW5kKFFMYXRpbjFTdHJpbmcoIiBleGVjIikp OworQEAgLTI5Niw4ICszMDMsMTM1IEBAIHN0YXRpYyBpbmxpbmUgUURCdXNNZXNzYWdlIHhkZ0Rl c2t0b3BQb3J0YWxTZW5kRW1haWwoY29uc3QgUVVybCAmdXJsKQorIAorICAgICByZXR1cm4gUURC dXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuY2FsbChtZXNzYWdlKTsKKyB9CisrCisrbmFtZXNw YWNlIHsKKytzdHJ1Y3QgWERHRGVza3RvcENvbG9yCisreworKyAgICBkb3VibGUgciA9IDA7Cisr ICAgIGRvdWJsZSBnID0gMDsKKysgICAgZG91YmxlIGIgPSAwOworKworKyAgICBRQ29sb3IgdG9R Q29sb3IoKSBjb25zdAorKyAgICB7CisrICAgICAgICBjb25zdGV4cHIgYXV0byByZ2JNYXggPSAy NTU7CisrICAgICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxpbnQ+KHIgKiByZ2JNYXgpLCBzdGF0 aWNfY2FzdDxpbnQ+KGcgKiByZ2JNYXgpLAorKyAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8 aW50PihiICogcmdiTWF4KSB9OworKyAgICB9CisrfTsKKysKKytjb25zdCBRREJ1c0FyZ3VtZW50 ICZvcGVyYXRvcj4+KGNvbnN0IFFEQnVzQXJndW1lbnQgJmFyZ3VtZW50LCBYREdEZXNrdG9wQ29s b3IgJm15U3RydWN0KQorK3sKKysgICAgYXJndW1lbnQuYmVnaW5TdHJ1Y3R1cmUoKTsKKysgICAg YXJndW1lbnQgPj4gbXlTdHJ1Y3QuciA+PiBteVN0cnVjdC5nID4+IG15U3RydWN0LmI7CisrICAg IGFyZ3VtZW50LmVuZFN0cnVjdHVyZSgpOworKyAgICByZXR1cm4gYXJndW1lbnQ7CisrfQorKwor K2NsYXNzIFhkZ0Rlc2t0b3BQb3J0YWxDb2xvclBpY2tlciA6IHB1YmxpYyBRUGxhdGZvcm1TZXJ2 aWNlQ29sb3JQaWNrZXIKKyt7CisrICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAgICBYZGdEZXNr dG9wUG9ydGFsQ29sb3JQaWNrZXIoY29uc3QgUVN0cmluZyAmcGFyZW50V2luZG93SWQsIFFXaW5k b3cgKnBhcmVudCkKKysgICAgICAgIDogUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyKHBhcmVu dCksIG1fcGFyZW50V2luZG93SWQocGFyZW50V2luZG93SWQpCisrICAgIHsKKysgICAgfQorKwor KyAgICB2b2lkIHBpY2tDb2xvcigpIG92ZXJyaWRlCisrICAgIHsKKysgICAgICAgIC8vIERCdXMg c2lnbmF0dXJlOgorKyAgICAgICAgLy8gUGlja0NvbG9yIChJTiAgIHMgICAgICBwYXJlbnRfd2lu ZG93LAorKyAgICAgICAgLy8gICAgICAgICAgICBJTiAgIGF7c3Z9ICBvcHRpb25zCisrICAgICAg ICAvLyAgICAgICAgICAgIE9VVCAgbyAgICAgIGhhbmRsZSkKKysgICAgICAgIC8vIE9wdGlvbnM6 CisrICAgICAgICAvLyBoYW5kbGVfdG9rZW4gKHMpIC0gIEEgc3RyaW5nIHRoYXQgd2lsbCBiZSB1 c2VkIGFzIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIEBoYW5kbGUuCisrCisrICAgICAgICBRREJ1 c01lc3NhZ2UgbWVzc2FnZSA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9kQ2FsbCgKKysgICAg ICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuRGVza3Rv cCIpLCBRU3RyaW5nTGl0ZXJhbCgiL29yZy9mcmVlZGVza3RvcC9wb3J0YWwvZGVza3RvcCIpLAor KyAgICAgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5T Y3JlZW5zaG90IiksIFFTdHJpbmdMaXRlcmFsKCJQaWNrQ29sb3IiKSk7CisrICAgICAgICBtZXNz YWdlIDw8IG1fcGFyZW50V2luZG93SWQgPDwgUVZhcmlhbnRNYXAoKTsKKysKKysgICAgICAgIFFE QnVzUGVuZGluZ0NhbGwgcGVuZGluZ0NhbGwgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMo KS5hc3luY0NhbGwobWVzc2FnZSk7CisrICAgICAgICBhdXRvIHdhdGNoZXIgPSBuZXcgUURCdXNQ ZW5kaW5nQ2FsbFdhdGNoZXIocGVuZGluZ0NhbGwsIHRoaXMpOworKyAgICAgICAgY29ubmVjdCh3 YXRjaGVyLCAmUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB0aGlzLAorKyAgICAg ICAgICAgICAgICBbdGhpc10oUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKysg ICAgICAgICAgICAgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxhdGVyKCk7CisrICAgICAgICAgICAg ICAgICAgICBRREJ1c1BlbmRpbmdSZXBseTxRREJ1c09iamVjdFBhdGg+IHJlcGx5ID0gKndhdGNo ZXI7CisrICAgICAgICAgICAgICAgICAgICBpZiAocmVwbHkuaXNFcnJvcigpKSB7CisrICAgICAg ICAgICAgICAgICAgICAgICAgcVdhcm5pbmcoIkRCdXMgY2FsbCB0byBwaWNrIGNvbG9yIGZhaWxl ZDogJXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFibGUocmVw bHkuZXJyb3IoKS5tZXNzYWdlKCkpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBRX0VNSVQg Y29sb3JQaWNrZWQoe30pOworKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAg ICAgICAgICAgICAgICAgICBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5jb25uZWN0KAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVl ZGVza3RvcC5wb3J0YWwuRGVza3RvcCIpLCByZXBseS52YWx1ZSgpLnBhdGgoKSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3Au cG9ydGFsLlJlcXVlc3QiKSwgUVN0cmluZ0xpdGVyYWwoIlJlc3BvbnNlIiksIHRoaXMsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTTE9UKGdvdENvbG9yUmVzcG9uc2UodWludCxRVmFy aWFudE1hcCkpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGFuZy1mb3Jt YXQgb24KKysgICAgICAgICAgICAgICAgICAgICAgICApOworKyAgICAgICAgICAgICAgICAgICAg fQorKyAgICAgICAgICAgICAgICB9KTsKKysgICAgfQorKworK3ByaXZhdGUgUV9TTE9UUzoKKysg ICAgdm9pZCBnb3RDb2xvclJlc3BvbnNlKHVpbnQgcmVzdWx0LCBjb25zdCBRVmFyaWFudE1hcCAm bWFwKQorKyAgICB7CisrICAgICAgICBpZiAocmVzdWx0ICE9IDApCisrICAgICAgICAgICAgcmV0 dXJuOworKyAgICAgICAgWERHRGVza3RvcENvbG9yIGNvbG9ye307CisrICAgICAgICBtYXAudmFs dWUoUVN0cmluZ0xpdGVyYWwoImNvbG9yIikpLnZhbHVlPFFEQnVzQXJndW1lbnQ+KCkgPj4gY29s b3I7CisrICAgICAgICBRX0VNSVQgY29sb3JQaWNrZWQoY29sb3IudG9RQ29sb3IoKSk7CisrICAg ICAgICBkZWxldGVMYXRlcigpOworKyAgICB9CisrCisrcHJpdmF0ZToKKysgICAgY29uc3QgUVN0 cmluZyBtX3BhcmVudFdpbmRvd0lkOworK307CisrfSAvLyBuYW1lc3BhY2UKKysKKyAjZW5kaWYg Ly8gUVRfQ09ORklHKGRidXMpCisgCisrUUdlbmVyaWNVbml4U2VydmljZXM6OlFHZW5lcmljVW5p eFNlcnZpY2VzKCkKKyt7CisrI2lmIFFUX0NPTkZJRyhkYnVzKQorKyAgICBpZiAocUVudmlyb25t ZW50VmFyaWFibGVJbnRWYWx1ZSgiUVRfTk9fWERHX0RFU0tUT1BfUE9SVEFMIikgPiAwKSB7Cisr ICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgUURCdXNNZXNzYWdlIG1lc3NhZ2UgPSBRREJ1 c01lc3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwoCisrICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwo Im9yZy5mcmVlZGVza3RvcC5wb3J0YWwuRGVza3RvcCIpLCBRU3RyaW5nTGl0ZXJhbCgiL29yZy9m cmVlZGVza3RvcC9wb3J0YWwvZGVza3RvcCIpLAorKyAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFs KCJvcmcuZnJlZWRlc2t0b3AuREJ1cy5Qcm9wZXJ0aWVzIiksIFFTdHJpbmdMaXRlcmFsKCJHZXQi KSk7CisrICAgIG1lc3NhZ2UgPDwgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0 YWwuU2NyZWVuc2hvdCIpCisrICAgICAgICAgICAgPDwgUVN0cmluZ0xpdGVyYWwoInZlcnNpb24i KTsKKysKKysgICAgUURCdXNQZW5kaW5nQ2FsbCBwZW5kaW5nQ2FsbCA9IFFEQnVzQ29ubmVjdGlv bjo6c2Vzc2lvbkJ1cygpLmFzeW5jQ2FsbChtZXNzYWdlKTsKKysgICAgYXV0byB3YXRjaGVyID0g bmV3IFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyKHBlbmRpbmdDYWxsKTsKKysgICAgUU9iamVjdDo6 Y29ubmVjdCh3YXRjaGVyLCAmUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB3YXRj aGVyLAorKyAgICAgICAgICAgICAgICAgICAgIFt0aGlzXShRREJ1c1BlbmRpbmdDYWxsV2F0Y2hl ciAqd2F0Y2hlcikgeworKyAgICAgICAgICAgICAgICAgICAgICAgICB3YXRjaGVyLT5kZWxldGVM YXRlcigpOworKyAgICAgICAgICAgICAgICAgICAgICAgICBRREJ1c1BlbmRpbmdSZXBseTxRVmFy aWFudD4gcmVwbHkgPSAqd2F0Y2hlcjsKKysgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFy ZXBseS5pc0Vycm9yKCkgJiYgcmVwbHkudmFsdWUoKS50b1VJbnQoKSA+PSAyKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbV9oYXNTY3JlZW5zaG90UG9ydGFsV2l0aENvbG9yUGlja2lu ZyA9IHRydWU7CisrICAgICAgICAgICAgICAgICAgICAgfSk7CisrCisrI2VuZGlmCisrfQorKwor K1FQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqUUdlbmVyaWNVbml4U2VydmljZXM6OmNvbG9y UGlja2VyKFFXaW5kb3cgKnBhcmVudCkKKyt7CisrI2lmIFFUX0NPTkZJRyhkYnVzKQorKyAgICAv LyBNYWtlIGRvdWJsZSBzdXJlIHRoYXQgd2UgYXJlIGluIGEgd2F5bGFuZCBlbnZpcm9ubWVudC4g SW4gcGFydGljdWxhciBjaGVjaworKyAgICAvLyBXQVlMQU5EX0RJU1BMQVkgc28gYWxzbyBYV2F5 bGFuZCBhcHBzIGJlbmVmaXQgZnJvbSBwb3J0YWwtYmFzZWQgY29sb3IgcGlja2luZy4KKysgICAg Ly8gT3V0c2lkZSB3YXlsYW5kIHdlJ2xsIHJhdGhlciByZWx5IG9uIG90aGVyIG1lYW5zIHRoYW4g dGhlIFhERyBkZXNrdG9wIHBvcnRhbC4KKysgICAgaWYgKCFxRW52aXJvbm1lbnRWYXJpYWJsZUlz RW1wdHkoIldBWUxBTkRfRElTUExBWSIpCisrICAgICAgICB8fCBRR3VpQXBwbGljYXRpb246OnBs YXRmb3JtTmFtZSgpLnN0YXJ0c1dpdGgoUUxhdGluMVN0cmluZygid2F5bGFuZCIpKSkgeworKyAg ICAgICAgcmV0dXJuIG5ldyBYZGdEZXNrdG9wUG9ydGFsQ29sb3JQaWNrZXIocG9ydGFsV2luZG93 SWRlbnRpZmllcihwYXJlbnQpLCBwYXJlbnQpOworKyAgICB9CisrICAgIHJldHVybiBudWxscHRy OworKyNlbHNlCisrICAgIFFfVU5VU0VEKHBhcmVudCk7CisrICAgIHJldHVybiBudWxscHRyOwor KyNlbmRpZgorK30KKysKKyBRQnl0ZUFycmF5IFFHZW5lcmljVW5peFNlcnZpY2VzOjpkZXNrdG9w RW52aXJvbm1lbnQoKSBjb25zdAorIHsKKyAgICAgc3RhdGljIGNvbnN0IFFCeXRlQXJyYXkgcmVz dWx0ID0gZGV0ZWN0RGVza3RvcEVudmlyb25tZW50KCk7CitAQCAtMzUyLDYgKzQ4Niw4IEBAIGJv b2wgUUdlbmVyaWNVbml4U2VydmljZXM6Om9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpCisg fQorIAorICNlbHNlCisrUUdlbmVyaWNVbml4U2VydmljZXM6OlFHZW5lcmljVW5peFNlcnZpY2Vz KCkgPSBkZWZhdWx0OworKworIFFCeXRlQXJyYXkgUUdlbmVyaWNVbml4U2VydmljZXM6OmRlc2t0 b3BFbnZpcm9ubWVudCgpIGNvbnN0CisgeworICAgICByZXR1cm4gUUJ5dGVBcnJheUxpdGVyYWwo IlVOS05PV04iKTsKK0BAIC0zNzEsNiArNTA3LDMwIEBAIGJvb2wgUUdlbmVyaWNVbml4U2Vydmlj ZXM6Om9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpCisgICAgIHJldHVybiBmYWxzZTsKKyB9 CisgCisrUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpRR2VuZXJpY1VuaXhTZXJ2aWNlczo6 Y29sb3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50KQorK3sKKysgICAgUV9VTlVTRUQocGFyZW50KTsK KysgICAgcmV0dXJuIG51bGxwdHI7CisrfQorKworICNlbmRpZiAvLyBRVF9OT19NVUxUSVBST0NF U1MKKyAKKytRU3RyaW5nIFFHZW5lcmljVW5peFNlcnZpY2VzOjpwb3J0YWxXaW5kb3dJZGVudGlm aWVyKFFXaW5kb3cgKndpbmRvdykKKyt7CisrICAgIGlmIChRR3VpQXBwbGljYXRpb246OnBsYXRm b3JtTmFtZSgpID09IFFMYXRpbjFTdHJpbmcoInhjYiIpKQorKyAgICAgICAgcmV0dXJuIFFTdHJp bmdMaXRlcmFsKCJ4MTE6IikgKyBRU3RyaW5nOjpudW1iZXIod2luZG93LT53aW5JZCgpLCAxNik7 CisrICAgIHJldHVybiBRU3RyaW5nKCk7CisrfQorKworK2Jvb2wgUUdlbmVyaWNVbml4U2Vydmlj ZXM6Omhhc0NhcGFiaWxpdHkoQ2FwYWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdAorK3sKKysgICAg c3dpdGNoIChjYXBhYmlsaXR5KSB7CisrICAgIGNhc2UgQ2FwYWJpbGl0eTo6Q29sb3JQaWNraW5n OgorKyAgICAgICAgcmV0dXJuIG1faGFzU2NyZWVuc2hvdFBvcnRhbFdpdGhDb2xvclBpY2tpbmc7 CisrICAgIH0KKysgICAgcmV0dXJuIGZhbHNlOworK30KKysKKyBRVF9FTkRfTkFNRVNQQUNFCisr CisrI2luY2x1ZGUgInFnZW5lcmljdW5peHNlcnZpY2VzLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhz ZXJ2aWNlc19wLmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmlj dW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlc19wLmgKK2luZGV4IDhhYzNkZTZmMDMuLjMwOTI0ZTY0 YmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5l cmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlc19wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzX3AuaAor QEAgLTU5LDE2ICs1OSwyMSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyBjbGFzcyBRR2VuZXJpY1Vu aXhTZXJ2aWNlcyA6IHB1YmxpYyBRUGxhdGZvcm1TZXJ2aWNlcworIHsKKyBwdWJsaWM6CistICAg IFFHZW5lcmljVW5peFNlcnZpY2VzKCkge30KKysgICAgUUdlbmVyaWNVbml4U2VydmljZXMoKTsK KyAKKyAgICAgUUJ5dGVBcnJheSBkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdCBvdmVycmlkZTsK KyAKKysgICAgYm9vbCBoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3Qg b3ZlcnJpZGU7CisgICAgIGJvb2wgb3BlblVybChjb25zdCBRVXJsICZ1cmwpIG92ZXJyaWRlOwor ICAgICBib29sIG9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpIG92ZXJyaWRlOworKyAgICBR UGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCA9 IG51bGxwdHIpIG92ZXJyaWRlOworKworKyAgICB2aXJ0dWFsIFFTdHJpbmcgcG9ydGFsV2luZG93 SWRlbnRpZmllcihRV2luZG93ICp3aW5kb3cpOworIAorIHByaXZhdGU6CisgICAgIFFTdHJpbmcg bV93ZWJCcm93c2VyOworICAgICBRU3RyaW5nIG1fZG9jdW1lbnRMYXVuY2hlcjsKKysgICAgYm9v bCBtX2hhc1NjcmVlbnNob3RQb3J0YWxXaXRoQ29sb3JQaWNraW5nID0gZmFsc2U7CisgfTsKKyAK KyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBv cnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb24uY3BwIGIv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3Fk YnVzbWVudWNvbm5lY3Rpb24uY3BwCitpbmRleCAwOTQ3MGJjY2M2Li5jYzdjN2Q0ZDhhIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2Ri dXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5j cHAKK0BAIC02OSw2ICs2OSw3IEBAIGNvbnN0IFFTdHJpbmcgTWVudUJhclBhdGggPSBRTGF0aW4x U3RyaW5nKCIvTWVudUJhciIpOworICovCisgUURCdXNNZW51Q29ubmVjdGlvbjo6UURCdXNNZW51 Q29ubmVjdGlvbihRT2JqZWN0ICpwYXJlbnQsIGNvbnN0IFFTdHJpbmcgJnNlcnZpY2VOYW1lKQor ICAgICA6IFFPYmplY3QocGFyZW50KQorKyAgICAsIG1fc2VydmljZU5hbWUoc2VydmljZU5hbWUp CisgICAgICwgbV9jb25uZWN0aW9uKHNlcnZpY2VOYW1lLmlzTnVsbCgpID8gUURCdXNDb25uZWN0 aW9uOjpzZXNzaW9uQnVzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOiBRREJ1c0Nvbm5lY3Rpb246OmNvbm5lY3RUb0J1cyhRREJ1c0Nvbm5lY3Rpb246OlNlc3Np b25CdXMsIHNlcnZpY2VOYW1lKSkKKyAgICAgLCBtX2RidXNXYXRjaGVyKG5ldyBRREJ1c1NlcnZp Y2VXYXRjaGVyKFN0YXR1c05vdGlmaWVyV2F0Y2hlclNlcnZpY2UsIG1fY29ubmVjdGlvbiwgUURC dXNTZXJ2aWNlV2F0Y2hlcjo6V2F0Y2hGb3JSZWdpc3RyYXRpb24sIHRoaXMpKQorQEAgLTgzLDYg Kzg0LDEyIEBAIFFEQnVzTWVudUNvbm5lY3Rpb246OlFEQnVzTWVudUNvbm5lY3Rpb24oUU9iamVj dCAqcGFyZW50LCBjb25zdCBRU3RyaW5nICZzZXJ2aWNlCisgI2VuZGlmCisgfQorIAorK1FEQnVz TWVudUNvbm5lY3Rpb246On5RREJ1c01lbnVDb25uZWN0aW9uKCkKKyt7CisrICBpZiAoIW1fc2Vy dmljZU5hbWUuaXNFbXB0eSgpICYmIG1fY29ubmVjdGlvbi5pc0Nvbm5lY3RlZCgpKQorKyAgICAg IFFEQnVzQ29ubmVjdGlvbjo6ZGlzY29ubmVjdEZyb21CdXMobV9zZXJ2aWNlTmFtZSk7CisrfQor KworIHZvaWQgUURCdXNNZW51Q29ubmVjdGlvbjo6ZGJ1c0Vycm9yKGNvbnN0IFFEQnVzRXJyb3Ig JmVycm9yKQorIHsKKyAgICAgcVdhcm5pbmcoKSA8PCAiUURCdXNUcmF5SWNvbiBlbmNvdW50ZXJl ZCBhIEQtQnVzIGVycm9yOiIgPDwgZXJyb3I7CitAQCAtMTA1LDEzICsxMTIsNyBAQCB2b2lkIFFE QnVzTWVudUNvbm5lY3Rpb246OnVucmVnaXN0ZXJUcmF5SWNvbk1lbnUoUURCdXNUcmF5SWNvbiAq aXRlbSkKKyAKKyBib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnJlZ2lzdGVyVHJheUljb24oUURC dXNUcmF5SWNvbiAqaXRlbSkKKyB7CistICAgIGJvb2wgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS5y ZWdpc3RlclNlcnZpY2UoaXRlbS0+aW5zdGFuY2VJZCgpKTsKKy0gICAgaWYgKCFzdWNjZXNzKSB7 CistICAgICAgICBxV2FybmluZygpIDw8ICJmYWlsZWQgdG8gcmVnaXN0ZXIgc2VydmljZSIgPDwg aXRlbS0+aW5zdGFuY2VJZCgpOworLSAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICB9CistCist ICAgIHN1Y2Nlc3MgPSBjb25uZWN0aW9uKCkucmVnaXN0ZXJPYmplY3QoU3RhdHVzTm90aWZpZXJJ dGVtUGF0aCwgaXRlbSk7CisrICAgIGJvb2wgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS5yZWdpc3Rl ck9iamVjdChTdGF0dXNOb3RpZmllckl0ZW1QYXRoLCBpdGVtKTsKKyAgICAgaWYgKCFzdWNjZXNz KSB7CisgICAgICAgICB1bnJlZ2lzdGVyVHJheUljb24oaXRlbSk7CisgICAgICAgICBxV2Fybmlu ZygpIDw8ICJmYWlsZWQgdG8gcmVnaXN0ZXIiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKSA8PCBTdGF0 dXNOb3RpZmllckl0ZW1QYXRoOworQEAgLTEyNiwyMSArMTI3LDE4IEBAIGJvb2wgUURCdXNNZW51 Q29ubmVjdGlvbjo6cmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQorIAorIGJv b2wgUURCdXNNZW51Q29ubmVjdGlvbjo6cmVnaXN0ZXJUcmF5SWNvbldpdGhXYXRjaGVyKFFEQnVz VHJheUljb24gKml0ZW0pCisgeworKyAgICBRX1VOVVNFRChpdGVtKTsKKyAgICAgUURCdXNNZXNz YWdlIHJlZ2lzdGVyTWV0aG9kID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxsKAorICAg ICAgICAgICAgICAgICBTdGF0dXNOb3RpZmllcldhdGNoZXJTZXJ2aWNlLCBTdGF0dXNOb3RpZmll cldhdGNoZXJQYXRoLCBTdGF0dXNOb3RpZmllcldhdGNoZXJTZXJ2aWNlLAorICAgICAgICAgICAg ICAgICBRTGF0aW4xU3RyaW5nKCJSZWdpc3RlclN0YXR1c05vdGlmaWVySXRlbSIpKTsKKy0gICAg cmVnaXN0ZXJNZXRob2Quc2V0QXJndW1lbnRzKFFWYXJpYW50TGlzdCgpIDw8IGl0ZW0tPmluc3Rh bmNlSWQoKSk7CisrICAgIHJlZ2lzdGVyTWV0aG9kLnNldEFyZ3VtZW50cyhRVmFyaWFudExpc3Qo KSA8PCBtX2Nvbm5lY3Rpb24uYmFzZVNlcnZpY2UoKSk7CisgICAgIHJldHVybiBtX2Nvbm5lY3Rp b24uY2FsbFdpdGhDYWxsYmFjayhyZWdpc3Rlck1ldGhvZCwgdGhpcywgU0lHTkFMKHRyYXlJY29u UmVnaXN0ZXJlZCgpKSwgU0xPVChkYnVzRXJyb3IoUURCdXNFcnJvcikpKTsKKyB9CisgCistYm9v bCBRREJ1c01lbnVDb25uZWN0aW9uOjp1bnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAq aXRlbSkKKyt2b2lkIFFEQnVzTWVudUNvbm5lY3Rpb246OnVucmVnaXN0ZXJUcmF5SWNvbihRREJ1 c1RyYXlJY29uICppdGVtKQorIHsKKyAgICAgdW5yZWdpc3RlclRyYXlJY29uTWVudShpdGVtKTsK KyAgICAgY29ubmVjdGlvbigpLnVucmVnaXN0ZXJPYmplY3QoU3RhdHVzTm90aWZpZXJJdGVtUGF0 aCk7CistICAgIGJvb2wgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS51bnJlZ2lzdGVyU2VydmljZShp dGVtLT5pbnN0YW5jZUlkKCkpOworLSAgICBpZiAoIXN1Y2Nlc3MpCistICAgICAgICBxV2Fybmlu ZygpIDw8ICJmYWlsZWQgdG8gdW5yZWdpc3RlciBzZXJ2aWNlIiA8PCBpdGVtLT5pbnN0YW5jZUlk KCk7CistICAgIHJldHVybiBzdWNjZXNzOworIH0KKyAjZW5kaWYgLy8gUVRfTk9fU1lTVEVNVFJB WUlDT04KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMv Z2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbl9wLmggYi9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29u bmVjdGlvbl9wLmgKK2luZGV4IGY0ODQ3OTVmYmIuLjk3YmRmYWJiODUgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRi dXNtZW51Y29ubmVjdGlvbl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3Ro ZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaAorQEAgLTcw LDYgKzcwLDcgQEAgY2xhc3MgUURCdXNNZW51Q29ubmVjdGlvbiA6IHB1YmxpYyBRT2JqZWN0Cisg CisgcHVibGljOgorICAgICBRREJ1c01lbnVDb25uZWN0aW9uKFFPYmplY3QgKnBhcmVudCA9IG51 bGxwdHIsIGNvbnN0IFFTdHJpbmcgJnNlcnZpY2VOYW1lID0gUVN0cmluZygpKTsKKysgICAgflFE QnVzTWVudUNvbm5lY3Rpb24oKTsKKyAgICAgUURCdXNDb25uZWN0aW9uIGNvbm5lY3Rpb24oKSBj b25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKyAgICAgUURCdXNTZXJ2aWNlV2F0Y2hlciAq ZGJ1c1dhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2RidXNXYXRjaGVyOyB9CisgICAgIGJvb2wg aXNTdGF0dXNOb3RpZmllckhvc3RSZWdpc3RlcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNO b3RpZmllckhvc3RSZWdpc3RlcmVkOyB9CitAQCAtNzgsNyArNzksNyBAQCBwdWJsaWM6CisgICAg IHZvaWQgdW5yZWdpc3RlclRyYXlJY29uTWVudShRREJ1c1RyYXlJY29uICppdGVtKTsKKyAgICAg Ym9vbCByZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pOworICAgICBib29sIHJl Z2lzdGVyVHJheUljb25XaXRoV2F0Y2hlcihRREJ1c1RyYXlJY29uICppdGVtKTsKKy0gICAgYm9v bCB1bnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSk7CisrICAgIHZvaWQgdW5y ZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pOworICNlbmRpZiAvLyBRVF9OT19T WVNURU1UUkFZSUNPTgorIAorIFFfU0lHTkFMUzoKK0BAIC05MCw2ICs5MSw3IEBAIHByaXZhdGUg UV9TTE9UUzoKKyAgICAgdm9pZCBkYnVzRXJyb3IoY29uc3QgUURCdXNFcnJvciAmZXJyb3IpOwor IAorIHByaXZhdGU6CisrICAgIFFTdHJpbmcgbV9zZXJ2aWNlTmFtZTsKKyAgICAgUURCdXNDb25u ZWN0aW9uIG1fY29ubmVjdGlvbjsKKyAgICAgUURCdXNTZXJ2aWNlV2F0Y2hlciAqbV9kYnVzV2F0 Y2hlcjsKKyAgICAgYm9vbCBtX3N0YXR1c05vdGlmaWVySG9zdFJlZ2lzdGVyZWQ7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXN0 cmF5L3FkYnVzdHJheWljb24uY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVz L2dlbmVyaWN1bml4L2RidXN0cmF5L3FkYnVzdHJheWljb24uY3BwCitpbmRleCBiZWRlNzA5NzVh Li43NmJmZWM1ZTVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhl bWVzL2dlbmVyaWN1bml4L2RidXN0cmF5L3FkYnVzdHJheWljb24uY3BwCisrKysgYi9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0cmF5 aWNvbi5jcHAKK0BAIC03MSw4ICs3MSwxMiBAQCBRX0xPR0dJTkdfQ0FURUdPUlkocUxjVHJheSwg InF0LnFwYS50cmF5IikKKyBzdGF0aWMgUVN0cmluZyBpY29uVGVtcFBhdGgoKQorIHsKKyAgICAg UVN0cmluZyB0ZW1wUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjp3cml0YWJsZUxvY2F0aW9uKFFTdGFu ZGFyZFBhdGhzOjpSdW50aW1lTG9jYXRpb24pOworLSAgICBpZiAoIXRlbXBQYXRoLmlzRW1wdHko KSkKKysgICAgaWYgKCF0ZW1wUGF0aC5pc0VtcHR5KCkpIHsKKysgICAgICAgIFFTdHJpbmcgZmxh dHBha0lkID0gcUVudmlyb25tZW50VmFyaWFibGUoIkZMQVRQQUtfSUQiKTsKKysgICAgICAgIGlm ICghZmxhdHBha0lkLmlzRW1wdHkoKSAmJiBRRmlsZUluZm86OmV4aXN0cyhRTGF0aW4xU3RyaW5n KCIvLmZsYXRwYWstaW5mbyIpKSkKKysgICAgICAgICAgICB0ZW1wUGF0aCArPSBRTGF0aW4xU3Ry aW5nKCIvYXBwLyIpICsgZmxhdHBha0lkOworICAgICAgICAgcmV0dXJuIHRlbXBQYXRoOworKyAg ICB9CisgCisgICAgIHRlbXBQYXRoID0gUVN0YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24o UVN0YW5kYXJkUGF0aHM6OkdlbmVyaWNDYWNoZUxvY2F0aW9uKTsKKyAKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4 dGhlbWVzLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5p eC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwCitpbmRleCBjYjFiMzlkYjY0Li42ZTAxYWYwNTJjIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4 L3FnZW5lcmljdW5peHRoZW1lcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L3RoZW1lcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwCitAQCAtNzU1LDYgKzc1 NSw5IEBAIFFWYXJpYW50IFFHbm9tZVRoZW1lOjp0aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OlRo ZW1lSGludCBoaW50KSBjb25zdAorICAgICAgICAgcmV0dXJuIFFWYXJpYW50KFFDaGFyKDB4MjAy MikpOworICAgICBjYXNlIFFQbGF0Zm9ybVRoZW1lOjpVaUVmZmVjdHM6CisgICAgICAgICByZXR1 cm4gUVZhcmlhbnQoaW50KEhvdmVyRWZmZWN0KSk7CisrICAgIGNhc2UgUVBsYXRmb3JtVGhlbWU6 OkJ1dHRvblByZXNzS2V5czoKKysgICAgICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlKAor KyAgICAgICAgICAgICAgICBRTGlzdDxRdDo6S2V5Pih7IFF0OjpLZXlfU3BhY2UsIFF0OjpLZXlf UmV0dXJuLCBRdDo6S2V5X0VudGVyLCBRdDo6S2V5X1NlbGVjdCB9KSk7CisgICAgIGRlZmF1bHQ6 CisgICAgICAgICBicmVhazsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3IuY3BwCitpbmRleCA5OGUwNTE5NWVl Li4xZTkyZjQzZGVjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9l Z2xmcy9hcGkvcWVnbGZzY3Vyc29yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy9lZ2xmcy9hcGkvcWVnbGZzY3Vyc29yLmNwcAorQEAgLTM0Myw4ICszNDMsNyBAQCB2b2lk IFFFZ2xGU0N1cnNvcjo6cGFpbnRPblNjcmVlbigpCisgICAgIC8vIHNjcmVlbnMgYXJlIHNpYmxp bmdzIG9mIGVhY2ggb3RoZXIuIFdoZW4gbm90IGVuYWJsZWQsIHRoZSBzaWJsaW5nIGxpc3QKKyAg ICAgLy8gb25seSBjb250YWlucyBtX3NjcmVlbiBpdHNlbGYuCisgICAgIGZvciAoUVBsYXRmb3Jt U2NyZWVuICpzY3JlZW4gOiBtX3NjcmVlbi0+dmlydHVhbFNpYmxpbmdzKCkpIHsKKy0gICAgICAg IGlmIChzY3JlZW4tPmdlb21ldHJ5KCkuY29udGFpbnMoY3IudG9wTGVmdCgpLnRvUG9pbnQoKSAr IG1fY3Vyc29yLmhvdFNwb3QpCistICAgICAgICAgICAgJiYgUU9wZW5HTENvbnRleHQ6OmN1cnJl bnRDb250ZXh0KCktPnNjcmVlbigpID09IHNjcmVlbi0+c2NyZWVuKCkpCisrICAgICAgICBpZiAo c2NyZWVuLT5nZW9tZXRyeSgpLmNvbnRhaW5zKGNyLnRvcExlZnQoKS50b1BvaW50KCkgKyBtX2N1 cnNvci5ob3RTcG90KSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBjci50cmFuc2xhdGUoLXNj cmVlbi0+Z2VvbWV0cnkoKS50b3BMZWZ0KCkpOworICAgICAgICAgICAgIGNvbnN0IFFTaXplIHNj cmVlblNpemUgPSBzY3JlZW4tPmdlb21ldHJ5KCkuc2l6ZSgpOworQEAgLTQ2OCwxMSArNDY3LDEy IEBAIHZvaWQgUUVnbEZTQ3Vyc29yOjpkcmF3KGNvbnN0IFFSZWN0RiAmcikKKyB7CisgICAgIFN0 YXRlU2F2ZXIgc3RhdGVTYXZlcjsKKyAKKy0gICAgUUVnbEZTQ3Vyc29yRGF0YSAmZ2Z4ID0gc3Rh dGljX2Nhc3Q8UUVnbEZTQ29udGV4dCo+KFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgp LT5oYW5kbGUoKSktPmN1cnNvckRhdGE7CistICAgIGlmICghZ2Z4LnByb2dyYW0pIHsKKy0gICAg ICAgIC8vIG9uZSB0aW1lIGluaXRpYWxpemF0aW9uCisrICAgIC8vIG9uZSB0aW1lIGluaXRpYWxp emF0aW9uCisrICAgIGlmICghUU9wZW5HTEZ1bmN0aW9uczo6ZF9wdHIpCisgICAgICAgICBpbml0 aWFsaXplT3BlbkdMRnVuY3Rpb25zKCk7CisgCisrICAgIFFFZ2xGU0N1cnNvckRhdGEgJmdmeCA9 IHN0YXRpY19jYXN0PFFFZ2xGU0NvbnRleHQqPihRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRl eHQoKS0+aGFuZGxlKCkpLT5jdXJzb3JEYXRhOworKyAgICBpZiAoIWdmeC5wcm9ncmFtKSB7Cisg ICAgICAgICBjcmVhdGVTaGFkZXJQcm9ncmFtcygpOworIAorICAgICAgICAgaWYgKCFnZnguYXRs YXNUZXh0dXJlKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9l Z2xmcy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVudHJl YWRlci5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVn cmF0aW9uL2VnbGZzX2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcAoraW5kZXgg NjQ1YTBhZTJlOS4uM2UwZTQwNmYxYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21zX3N1cHBvcnQvcWVnbGZz a21zZXZlbnRyZWFkZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2Vn bGZzL2RldmljZWludGVncmF0aW9uL2VnbGZzX2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVh ZGVyLmNwcAorQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIFFFZ2xGU0ttc0V2ZW50UmVhZGVyOjpj cmVhdGUoUUVnbEZTS21zRGV2aWNlICpkZXZpY2UpCisgCisgICAgIG1fZGV2aWNlID0gZGV2aWNl OworIAorLSAgICBxQ0RlYnVnKHFMY0VnbGZzS21zRGVidWcsICJJbml0YWxpemluZyBldmVudCBy ZWFkZXIgZm9yIGRldmljZSAlcCBmZCAlZCIsCisrICAgIHFDRGVidWcocUxjRWdsZnNLbXNEZWJ1 ZywgIkluaXRpYWxpemluZyBldmVudCByZWFkZXIgZm9yIGRldmljZSAlcCBmZCAlZCIsCisgICAg ICAgICAgICAgbV9kZXZpY2UsIG1fZGV2aWNlLT5mZCgpKTsKKyAKKyAgICAgbV90aHJlYWQgPSBu ZXcgUUVnbEZTS21zRXZlbnRSZWFkZXJUaHJlYWQobV9kZXZpY2UtPmZkKCkpOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRl Z3JhdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zm c2NyZWVuaW50ZWdyYXRpb24uY3BwCitpbmRleCAxNDFmYjY4YTIzLi5kNDI5NGQ0MjVhIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVl bmludGVncmF0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZz Y3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNwcAorQEAgLTEyMiwxMSArMTIyLDEzIEBAIFFP ZmZzY3JlZW5JbnRlZ3JhdGlvbjo6UU9mZnNjcmVlbkludGVncmF0aW9uKCkKKyAjZW5kaWYKKyAg ICAgbV9zZXJ2aWNlcy5yZXNldChuZXcgUVBsYXRmb3JtU2VydmljZXMpOworIAorLSAgICBRV2lu ZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVTY3JlZW5BZGRlZChuZXcgUU9mZnNjcmVlblNjcmVl bik7CisrICAgIG1fc2NyZWVuID0gbmV3IFFPZmZzY3JlZW5TY3JlZW47CisrICAgIFFXaW5kb3dT eXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVNjcmVlbkFkZGVkKG1fc2NyZWVuKTsKKyB9CisgCisgUU9m ZnNjcmVlbkludGVncmF0aW9uOjp+UU9mZnNjcmVlbkludGVncmF0aW9uKCkKKyB7CisrICAgIFFX aW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVNjcmVlblJlbW92ZWQobV9zY3JlZW4pOworIH0K KyAKKyB2b2lkIFFPZmZzY3JlZW5JbnRlZ3JhdGlvbjo6aW5pdGlhbGl6ZSgpCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVn cmF0aW9uLmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2Ny ZWVuaW50ZWdyYXRpb24uaAoraW5kZXggMGVhOTBmNmMyZi4uZmUwMGZkZTA3YyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRl Z3JhdGlvbi5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9x b2Zmc2NyZWVuaW50ZWdyYXRpb24uaAorQEAgLTg0LDYgKzg0LDcgQEAgcHJvdGVjdGVkOgorICNl bmRpZgorICAgICBRU2NvcGVkUG9pbnRlcjxRUGxhdGZvcm1JbnB1dENvbnRleHQ+IG1faW5wdXRD b250ZXh0OworICAgICBRU2NvcGVkUG9pbnRlcjxRUGxhdGZvcm1TZXJ2aWNlcz4gbV9zZXJ2aWNl czsKKysgICAgUVBsYXRmb3JtU2NyZWVuICptX3NjcmVlbjsKKyAgICAgbXV0YWJsZSBRU2NvcGVk UG9pbnRlcjxRUGxhdGZvcm1OYXRpdmVJbnRlcmZhY2U+IG1fbmF0aXZlSW50ZXJmYWNlOworIH07 CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3 aW5kb3dzZ2xjb250ZXh0LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93 cy9xd2luZG93c2dsY29udGV4dC5jcHAKK2luZGV4IDZmYTVhOGEyYjMuLjFmNDlmMGFlZmQgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3Nn bGNvbnRleHQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3Mv cXdpbmRvd3NnbGNvbnRleHQuY3BwCitAQCAtNDgsNiArNDgsNyBAQAorICNpbmNsdWRlIDxxcGEv cXBsYXRmb3JtbmF0aXZlaW50ZXJmYWNlLmg+CisgI2luY2x1ZGUgPFF0UGxhdGZvcm1IZWFkZXJz L3F3Z2xuYXRpdmVjb250ZXh0Lmg+CisgCisrI2luY2x1ZGUgPHByaXZhdGUvcXN5c3RlbWxpYnJh cnlfcC5oPgorICNpbmNsdWRlIDxhbGdvcml0aG0+CisgCisgI2luY2x1ZGUgPHdpbmdkaS5oPgor QEAgLTE2MiwxOSArMTYzLDI1IEBAIFFGdW5jdGlvblBvaW50ZXIgUVdpbmRvd3NPcGVuZ2wzMkRM TDo6cmVzb2x2ZShjb25zdCBjaGFyICpuYW1lKQorIAorIGJvb2wgUVdpbmRvd3NPcGVuZ2wzMkRM TDo6aW5pdChib29sIHNvZnR3YXJlUmVuZGVyaW5nKQorIHsKKy0gICAgY29uc3QgUUJ5dGVBcnJh eSBvcGVuZ2wzMiA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMi5kbGwiKTsKKy0gICAgY29u c3QgUUJ5dGVBcnJheSBzd29wZW5nbCA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMnN3LmRs bCIpOworKyAgICBjb25zdCBRQnl0ZUFycmF5IG9wZW5nbDMyID0gUUJ5dGVBcnJheUxpdGVyYWwo Im9wZW5nbDMyIik7CisrICAgIGNvbnN0IFFCeXRlQXJyYXkgc3dvcGVuZ2wgPSBRQnl0ZUFycmF5 TGl0ZXJhbCgib3BlbmdsMzJzdyIpOworKyAgICBib29sIHVzZVN5c3RlbUxpYiA9IGZhbHNlOwor IAorICAgICBRQnl0ZUFycmF5IG9wZW5nbERsbCA9IHFnZXRlbnYoIlFUX09QRU5HTF9ETEwiKTsK Ky0gICAgaWYgKG9wZW5nbERsbC5pc0VtcHR5KCkpCisrICAgIGlmIChvcGVuZ2xEbGwuaXNFbXB0 eSgpKSB7CisgICAgICAgICBvcGVuZ2xEbGwgPSBzb2Z0d2FyZVJlbmRlcmluZyA/IHN3b3Blbmds IDogb3BlbmdsMzI7CisrICAgICAgICB1c2VTeXN0ZW1MaWIgPSAhc29mdHdhcmVSZW5kZXJpbmc7 CisrICAgIH0KKyAKKyAgICAgb3BlbmdsRGxsID0gb3BlbmdsRGxsLnRvTG93ZXIoKTsKKyAgICAg bV9ub25PcGVuZ2wzMiA9IG9wZW5nbERsbCAhPSBvcGVuZ2wzMjsKKyAKKyAgICAgcUNEZWJ1Zyhs Y1FwYUdsKSA8PCAiUXQ6IFVzaW5nIFdHTCBhbmQgT3BlbkdMIGZyb20iIDw8IG9wZW5nbERsbDsK KyAKKy0gICAgbV9saWIgPSA6OkxvYWRMaWJyYXJ5QShvcGVuZ2xEbGwuY29uc3REYXRhKCkpOwor KyAgICBpZiAodXNlU3lzdGVtTGliKQorKyAgICAgICAgbV9saWIgPSBRU3lzdGVtTGlicmFyeTo6 bG9hZCgod2NoYXJfdCopKFFTdHJpbmc6OmZyb21MYXRpbjEob3BlbmdsRGxsKS51dGYxNigpKSk7 CisrICAgIGVsc2UKKysgICAgICAgIG1fbGliID0gTG9hZExpYnJhcnlBKG9wZW5nbERsbC5jb25z dERhdGEoKSk7CisgICAgIGlmICghbV9saWIpIHsKKyAgICAgICAgIHFFcnJub1dhcm5pbmcoOjpH ZXRMYXN0RXJyb3IoKSwgIkZhaWxlZCB0byBsb2FkICVzIiwgb3BlbmdsRGxsLmNvbnN0RGF0YSgp KTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKK0BAIC0xODQsNyArMTkxLDcgQEAgYm9vbCBRV2lu ZG93c09wZW5nbDMyRExMOjppbml0KGJvb2wgc29mdHdhcmVSZW5kZXJpbmcpCisgICAgICAgICAv LyBMb2FkIG9wZW5nbDMyLmRsbCBhbHdheXMuIEdESSBmdW5jdGlvbnMgbGlrZSBDaG9vc2VQaXhl bEZvcm1hdCBkbworICAgICAgICAgLy8gR2V0TW9kdWxlSGFuZGxlIGZvciBvcGVuZ2wzMi5kbGwg YW5kIGJlaGF2ZSBkaWZmZXJlbnRseSAoYW5kIGNhbGwgYmFjayBpbnRvCisgICAgICAgICAvLyBv cGVuZ2wzMikgd2hlbiB0aGUgbW9kdWxlIGlzIHByZXNlbnQuIFRoaXMgaXMgZmluZSBmb3IgZHVt bXkgY29udGV4dHMgYW5kIHdpbmRvd3MuCistICAgICAgICA6OkxvYWRMaWJyYXJ5QSgib3Blbmds MzIuZGxsIik7CisrICAgICAgICBRU3lzdGVtTGlicmFyeTo6bG9hZChMIm9wZW5nbDMyIik7Cisg ICAgIH0KKyAKKyAgICAgd2dsQ3JlYXRlQ29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEdMUkMg KFdJTkFQSSAqKShIREMpPihyZXNvbHZlKCJ3Z2xDcmVhdGVDb250ZXh0IikpOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5nbHRl c3Rlci5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3Nv cGVuZ2x0ZXN0ZXIuY3BwCitpbmRleCBkN2QxODZlODA0Li45ZWI0MDExYmYyIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVz dGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5k b3dzb3BlbmdsdGVzdGVyLmNwcAorQEAgLTQ5LDYgKzQ5LDcgQEAKKyAjaW5jbHVkZSA8UXRDb3Jl L3FzdGFuZGFyZHBhdGhzLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xbGlicmFyeWluZm8uaD4KKyAj aW5jbHVkZSA8UXRDb3JlL3FoYXNoLmg+CisrI2luY2x1ZGUgPHByaXZhdGUvcXN5c3RlbWxpYnJh cnlfcC5oPgorIAorICNpZm5kZWYgUVRfTk9fT1BFTkdMCisgI2luY2x1ZGUgPHByaXZhdGUvcW9w ZW5nbF9wLmg+CitAQCAtMzk2LDcgKzM5Nyw3IEBAIGJvb2wgUVdpbmRvd3NPcGVuR0xUZXN0ZXI6 OnRlc3REZXNrdG9wR0woKQorIAorICAgICAvLyBUZXN0ICMxOiBMb2FkIG9wZW5nbDMyLmRsbCBh bmQgdHJ5IHRvIHJlc29sdmUgYW4gT3BlbkdMIDIgZnVuY3Rpb24uCisgICAgIC8vIFRoaXMgd2ls bCB0eXBpY2FsbHkgZmFpbCBvbiBzeXN0ZW1zIHRoYXQgZG8gbm90IGhhdmUgYSByZWFsIE9wZW5H TCBkcml2ZXIuCistICAgIGxpYiA9IExvYWRMaWJyYXJ5QSgib3BlbmdsMzIuZGxsIik7CisrICAg IGxpYiA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKEwib3BlbmdsMzIiKTsKKyAgICAgaWYgKGxpYikg eworICAgICAgICAgQ3JlYXRlQ29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q3JlYXRlQ29udGV4 dFR5cGU+KAorICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UUZ1bmN0aW9uUG9pbnRlcj4o OjpHZXRQcm9jQWRkcmVzcyhsaWIsICJ3Z2xDcmVhdGVDb250ZXh0IikpKTsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2Vs bGF0b3IuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRp bmcvcXRlc3NlbGxhdG9yLmNwcAoraW5kZXggMWFmYTAwY2ZjOS4uMTE4YWY2Y2U3MyAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL25hdGl2ZXBhaW50aW5nL3F0 ZXNzZWxsYXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL25h dGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAKK0BAIC00MSw2ICs0MSw3IEBACisgCisgI2lu Y2x1ZGUgPFFSZWN0PgorICNpbmNsdWRlIDxRTGlzdD4KKysjaW5jbHVkZSA8UU1hcD4KKyAjaW5j bHVkZSA8UURlYnVnPgorIAorICNpbmNsdWRlIDxxbWF0aC5oPgorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNwcCBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNwcAoraW5kZXggOWUyYTM3 YTZhMS4uZTZlMTc1YTExOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvcXhjYmNvbm5lY3Rpb24uY3BwCitAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9pZCBR WGNiQ29ubmVjdGlvbjo6cHJpbnRYY2JFcnJvcihjb25zdCBjaGFyICptZXNzYWdlLCB4Y2JfZ2Vu ZXJpY19lcnJvcl90ICplcnIKKyAgICAgdWludCBjbGFtcGVkX2Vycm9yX2NvZGUgPSBxTWluPHVp bnQ+KGVycm9yLT5lcnJvcl9jb2RlLCAoc2l6ZW9mKHhjYl9lcnJvcnMpIC8gc2l6ZW9mKHhjYl9l cnJvcnNbMF0pKSAtIDEpOworICAgICB1aW50IGNsYW1wZWRfbWFqb3JfY29kZSA9IHFNaW48dWlu dD4oZXJyb3ItPm1ham9yX2NvZGUsIChzaXplb2YoeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXMp IC8gc2l6ZW9mKHhjYl9wcm90b2NvbF9yZXF1ZXN0X2NvZGVzWzBdKSkgLSAxKTsKKyAKKy0gICAg cUNXYXJuaW5nKGxjUXBhWGNiLCAiJXM6ICVkICglcyksIHNlcXVlbmNlOiAlZCwgcmVzb3VyY2Ug aWQ6ICVkLCBtYWpvciBjb2RlOiAlZCAoJXMpLCBtaW5vciBjb2RlOiAlZCIsCistICAgICAgICAg ICAgIG1lc3NhZ2UsCistICAgICAgICAgICAgIGludChlcnJvci0+ZXJyb3JfY29kZSksIHhjYl9l cnJvcnNbY2xhbXBlZF9lcnJvcl9jb2RlXSwKKy0gICAgICAgICAgICAgaW50KGVycm9yLT5zZXF1 ZW5jZSksIGludChlcnJvci0+cmVzb3VyY2VfaWQpLAorLSAgICAgICAgICAgICBpbnQoZXJyb3It Pm1ham9yX2NvZGUpLCB4Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2Rlc1tjbGFtcGVkX21ham9yX2Nv ZGVdLAorLSAgICAgICAgICAgICBpbnQoZXJyb3ItPm1pbm9yX2NvZGUpKTsKKysgICAgcUNEZWJ1 ZyhsY1FwYVhjYiwgIiVzOiAlZCAoJXMpLCBzZXF1ZW5jZTogJWQsIHJlc291cmNlIGlkOiAlZCwg bWFqb3IgY29kZTogJWQgKCVzKSwgbWlub3IgY29kZTogJWQiLAorKyAgICAgICAgICAgIG1lc3Nh Z2UsCisrICAgICAgICAgICAgaW50KGVycm9yLT5lcnJvcl9jb2RlKSwgeGNiX2Vycm9yc1tjbGFt cGVkX2Vycm9yX2NvZGVdLAorKyAgICAgICAgICAgIGludChlcnJvci0+c2VxdWVuY2UpLCBpbnQo ZXJyb3ItPnJlc291cmNlX2lkKSwKKysgICAgICAgICAgICBpbnQoZXJyb3ItPm1ham9yX2NvZGUp LCB4Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2Rlc1tjbGFtcGVkX21ham9yX2NvZGVdLAorKyAgICAg ICAgICAgIGludChlcnJvci0+bWlub3JfY29kZSkpOworIH0KKyAKKyBzdGF0aWMgUXQ6Ok1vdXNl QnV0dG9ucyB0cmFuc2xhdGVNb3VzZUJ1dHRvbnMoaW50IHMpCitAQCAtNzAyLDYgKzcwMiw4IEBA IHZvaWQgUVhjYkNvbm5lY3Rpb246OmhhbmRsZVhjYkV2ZW50KHhjYl9nZW5lcmljX2V2ZW50X3Qg KmV2ZW50KQorICAgICAgICAgICAgIFFYY2JWaXJ0dWFsRGVza3RvcCAqdmlydHVhbERlc2t0b3Ag PSB2aXJ0dWFsRGVza3RvcEZvclJvb3RXaW5kb3cocHJvcGVydHlOb3RpZnktPndpbmRvdyk7Cisg ICAgICAgICAgICAgaWYgKHZpcnR1YWxEZXNrdG9wKQorICAgICAgICAgICAgICAgICB2aXJ0dWFs RGVza3RvcC0+dXBkYXRlV29ya0FyZWEoKTsKKysgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlO b3RpZnktPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9TVVBQT1JURUQpKSB7CisrICAgICAg ICAgICAgbV93bVN1cHBvcnQtPnVwZGF0ZU5ldFdNQXRvbXMoKTsKKyAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgSEFORExFX1BMQVRGT1JNX1dJTkRPV19FVkVOVCh4Y2JfcHJvcGVydHlf bm90aWZ5X2V2ZW50X3QsIHdpbmRvdywgaGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudCk7CisgICAg ICAgICB9CitAQCAtNzUwLDcgKzc1Miw3IEBAIHZvaWQgUVhjYkNvbm5lY3Rpb246OmhhbmRsZVhj YkV2ZW50KHhjYl9nZW5lcmljX2V2ZW50X3QgKmV2ZW50KQorICAgICAgICAgICAgICAgICBjYXNl IFhDQl9YS0JfTkVXX0tFWUJPQVJEX05PVElGWTogeworICAgICAgICAgICAgICAgICAgICAgeGNi X3hrYl9uZXdfa2V5Ym9hcmRfbm90aWZ5X2V2ZW50X3QgKmV2ID0gJnhrYl9ldmVudC0+bmV3X2tl eWJvYXJkX25vdGlmeTsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChldi0+Y2hhbmdlZCAmIFhD Ql9YS0JfTktOX0RFVEFJTF9LRVlDT0RFUykKKy0gICAgICAgICAgICAgICAgICAgICAgICBtX2tl eWJvYXJkLT51cGRhdGVLZXltYXAoZXYpOworKyAgICAgICAgICAgICAgICAgICAgICAgIG1fa2V5 Ym9hcmQtPnVwZGF0ZUtleW1hcCgpOworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgZGVmYXVsdDoKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwIGIvcXRi YXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVncmF0aW9uLmNwcAoraW5kZXgg NzY4NjljZWQ2MC4uMDJkMmVlYmI1NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMveGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMveGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAKK0BAIC0yNzQsOCArMjc0LDcgQEAg UVBsYXRmb3JtV2luZG93ICpRWGNiSW50ZWdyYXRpb246OmNyZWF0ZUZvcmVpZ25XaW5kb3coUVdp bmRvdyAqd2luZG93LCBXSWQgbmF0aXYKKyAjaWZuZGVmIFFUX05PX09QRU5HTAorIFFQbGF0Zm9y bU9wZW5HTENvbnRleHQgKlFYY2JJbnRlZ3JhdGlvbjo6Y3JlYXRlUGxhdGZvcm1PcGVuR0xDb250 ZXh0KFFPcGVuR0xDb250ZXh0ICpjb250ZXh0KSBjb25zdAorIHsKKy0gICAgUVhjYlNjcmVlbiAq c2NyZWVuID0gc3RhdGljX2Nhc3Q8UVhjYlNjcmVlbiAqPihjb250ZXh0LT5zY3JlZW4oKS0+aGFu ZGxlKCkpOworLSAgICBRWGNiR2xJbnRlZ3JhdGlvbiAqZ2xJbnRlZ3JhdGlvbiA9IHNjcmVlbi0+ Y29ubmVjdGlvbigpLT5nbEludGVncmF0aW9uKCk7CisrICAgIFFYY2JHbEludGVncmF0aW9uICpn bEludGVncmF0aW9uID0gZGVmYXVsdENvbm5lY3Rpb24oKS0+Z2xJbnRlZ3JhdGlvbigpOworICAg ICBpZiAoIWdsSW50ZWdyYXRpb24pIHsKKyAgICAgICAgIHFXYXJuaW5nKCJRWGNiSW50ZWdyYXRp b246IENhbm5vdCBjcmVhdGUgcGxhdGZvcm0gT3BlbkdMIGNvbnRleHQsIG5laXRoZXIgR0xYIG5v ciBFR0wgYXJlIGVuYWJsZWQiKTsKKyAgICAgICAgIHJldHVybiBudWxscHRyOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuY3BwCitpbmRleCBl ZmVjZDdlMmQxLi5lODI4NjM4MWEyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmNwcAorQEAgLTM2NSwxNyArMzY1LDYgQEAgdm9pZCBR WGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCh4Y2JfbWFwcGluZ19ub3RpZnlfZXZlbnRfdCAqZXZl bnQpCisgICAgIHVwZGF0ZUtleW1hcCgpOworIH0KKyAKKy12b2lkIFFYY2JLZXlib2FyZDo6dXBk YXRlS2V5bWFwKHhjYl94a2JfbmV3X2tleWJvYXJkX25vdGlmeV9ldmVudF90ICpldmVudCkKKy17 CistICAgIGlmICghZXZlbnQpCistICAgICAgICByZXR1cm47CistCistICAgIGlmIChldmVudC0+ ZGV2aWNlSUQgIT0gZXZlbnQtPm9sZERldmljZUlEKQorLSAgICAgICAgbV9jb25maWcgPSBmYWxz ZTsKKy0KKy0gICAgdXBkYXRlS2V5bWFwKCk7CistfQorLQorIHZvaWQgUVhjYktleWJvYXJkOjp1 cGRhdGVLZXltYXAoKQorIHsKKyAgICAgS2V5c3ltTW9kaWZpZXJNYXAga2V5c3ltTW9kczsKK0BA IC0zODMsNiArMzcyLDggQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCgpCisgICAg ICAgICBrZXlzeW1Nb2RzID0ga2V5c3ltc1RvTW9kaWZpZXJzKCk7CisgICAgIHVwZGF0ZU1vZGlm aWVycyhrZXlzeW1Nb2RzKTsKKyAKKysgICAgbV9jb25maWcgPSB0cnVlOworKworICAgICBpZiAo IW1feGtiQ29udGV4dCkgeworICAgICAgICAgbV94a2JDb250ZXh0LnJlc2V0KHhrYl9jb250ZXh0 X25ldyhYS0JfQ09OVEVYVF9OT19ERUZBVUxUX0lOQ0xVREVTKSk7CisgICAgICAgICBpZiAoIW1f eGtiQ29udGV4dCkgeworQEAgLTM5OCwxMyArMzg5LDggQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVw ZGF0ZUtleW1hcCgpCisgICAgIGlmIChjb25uZWN0aW9uKCktPmhhc1hLQigpKSB7CisgICAgICAg ICBtX3hrYktleW1hcC5yZXNldCh4a2JfeDExX2tleW1hcF9uZXdfZnJvbV9kZXZpY2UobV94a2JD b250ZXh0LmdldCgpLCB4Y2JfY29ubmVjdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVfZGV2aWNlX2lkLCBYS0JfS0VZ TUFQX0NPTVBJTEVfTk9fRkxBR1MpKTsKKy0gICAgICAgIGlmIChtX3hrYktleW1hcCkgeworLSAg ICAgICAgICAgIGlmIChtX2NvbmZpZykKKy0gICAgICAgICAgICAgICAgbV94a2JTdGF0ZS5yZXNl dCh4a2Jfc3RhdGVfbmV3KG1feGtiS2V5bWFwLmdldCgpKSk7CistICAgICAgICAgICAgZWxzZQor LSAgICAgICAgICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhrYl94MTFfc3RhdGVfbmV3X2Zyb21f ZGV2aWNlKG1feGtiS2V5bWFwLmdldCgpLCB4Y2JfY29ubmVjdGlvbigpLCBjb3JlX2RldmljZV9p ZCkpOworLQorLSAgICAgICAgfQorKyAgICAgICAgaWYgKG1feGtiS2V5bWFwKQorKyAgICAgICAg ICAgIG1feGtiU3RhdGUucmVzZXQoeGtiX3gxMV9zdGF0ZV9uZXdfZnJvbV9kZXZpY2UobV94a2JL ZXltYXAuZ2V0KCksIHhjYl9jb25uZWN0aW9uKCksIGNvcmVfZGV2aWNlX2lkKSk7CisgICAgIH0g ZWxzZSB7CisgICAgICAgICBtX3hrYktleW1hcC5yZXNldChrZXltYXBGcm9tQ29yZShrZXlzeW1N b2RzKSk7CisgICAgICAgICBpZiAobV94a2JLZXltYXApCitAQCAtNDI1LDggKzQxMSw2IEBAIHZv aWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoKQorICAgICB1cGRhdGVYS0JNb2RzKCk7Cisg CisgICAgIFFYa2JDb21tb246OnZlcmlmeUhhc0xhdGluTGF5b3V0KG1feGtiS2V5bWFwLmdldCgp KTsKKy0KKy0gICAgbV9jb25maWcgPSB0cnVlOworIH0KKyAKKyBRTGlzdDxpbnQ+IFFYY2JLZXli b2FyZDo6cG9zc2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmggYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuaAoraW5kZXggYjY1 MmM4NWZlMy4uMGVlMDhhZWZmMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL3hjYi9xeGNia2V5Ym9hcmQuaAorQEAgLTY5LDcgKzY5LDYgQEAgcHVibGljOgorIAorICAg ICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgdHJhbnNsYXRlTW9kaWZpZXJzKGludCBzKSBjb25zdDsK KyAgICAgdm9pZCB1cGRhdGVLZXltYXAoeGNiX21hcHBpbmdfbm90aWZ5X2V2ZW50X3QgKmV2ZW50 KTsKKy0gICAgdm9pZCB1cGRhdGVLZXltYXAoeGNiX3hrYl9uZXdfa2V5Ym9hcmRfbm90aWZ5X2V2 ZW50X3QgKmV2ZW50KTsKKyAgICAgdm9pZCB1cGRhdGVLZXltYXAoKTsKKyAgICAgUUxpc3Q8aW50 PiBwb3NzaWJsZUtleXMoY29uc3QgUUtleUV2ZW50ICpldmVudCkgY29uc3Q7CisgCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmNwcAoraW5kZXggZmZk YTdiNmE1Ny4uODYzZTk2MWY0YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMveGNiL3F4Y2J3aW5kb3cuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL3hjYi9xeGNid2luZG93LmNwcAorQEAgLTU2NCwxMSArNTY0LDYgQEAgdm9pZCBRWGNiV2lu ZG93OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcmVjdCkKKyB7CisgICAgIFFQbGF0Zm9ybVdp bmRvdzo6c2V0R2VvbWV0cnkocmVjdCk7CisgCistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFz azo6U2V0R2VvbWV0cnkpKSB7CistICAgICAgICBtX2RlZmVycmVkR2VvbWV0cnkgPSByZWN0Owor LSAgICAgICAgcmV0dXJuOworLSAgICB9CistCisgICAgIHByb3BhZ2F0ZVNpemVIaW50cygpOwor IAorICAgICBRWGNiU2NyZWVuICpjdXJyZW50U2NyZWVuID0geGNiU2NyZWVuKCk7CitAQCAtNjkz LDkgKzY4OCw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCisg Cisgdm9pZCBRWGNiV2luZG93OjpzaG93KCkKKyB7CistICAgIGlmIChzaG91bGREZWZlclRhc2so VGFzazo6TWFwKSkKKy0gICAgICAgIHJldHVybjsKKy0KKyAgICAgaWYgKHdpbmRvdygpLT5pc1Rv cExldmVsKCkpIHsKKyAKKyAgICAgICAgIC8vIHVwZGF0ZSBXTV9OT1JNQUxfSElOVFMKK0BAIC03 MDYsNyArNjk4LDcgQEAgdm9pZCBRWGNiV2luZG93OjpzaG93KCkKKyAgICAgICAgIGlmIChpc1Ry YW5zaWVudCh3aW5kb3coKSkpIHsKKyAgICAgICAgICAgICBjb25zdCBRV2luZG93ICp0cCA9IHdp bmRvdygpLT50cmFuc2llbnRQYXJlbnQoKTsKKyAgICAgICAgICAgICBpZiAodHAgJiYgdHAtPmhh bmRsZSgpKQorLSAgICAgICAgICAgICAgICB0cmFuc2llbnRYY2JQYXJlbnQgPSBzdGF0aWNfY2Fz dDxjb25zdCBRWGNiV2luZG93ICo+KHRwLT5oYW5kbGUoKSktPndpbklkKCk7CisrICAgICAgICAg ICAgICAgIHRyYW5zaWVudFhjYlBhcmVudCA9IHRwLT5oYW5kbGUoKS0+d2luSWQoKTsKKyAgICAg ICAgICAgICAvLyBEZWZhdWx0IHRvIGNsaWVudCBsZWFkZXIgaWYgdGhlcmUgaXMgbm8gdHJhbnNp ZW50IHBhcmVudCwgZWxzZSBtb2RhbCBkaWFsb2dzIGNhbgorICAgICAgICAgICAgIC8vIGJlIGhp ZGRlbiBieSB0aGVpciBwYXJlbnRzLgorICAgICAgICAgICAgIGlmICghdHJhbnNpZW50WGNiUGFy ZW50KQorQEAgLTc0NiwxMCArNzM4LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzaG93KCkKKyAKKyB2 b2lkIFFYY2JXaW5kb3c6OmhpZGUoKQorIHsKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNr OjpVbm1hcCkpCistICAgICAgICByZXR1cm47CistCistICAgIG1fd21TdGF0ZVZhbGlkID0gZmFs c2U7CisgICAgIHhjYl91bm1hcF93aW5kb3coeGNiX2Nvbm5lY3Rpb24oKSwgbV93aW5kb3cpOwor IAorICAgICAvLyBzZW5kIHN5bnRoZXRpYyBVbm1hcE5vdGlmeSBldmVudCBhY2NvcmRpbmcgdG8g aWNjY20gNC4xLjQKK0BAIC05MDksOSArODk3LDYgQEAgUVhjYldpbmRvdzo6TmV0V21TdGF0ZXMg UVhjYldpbmRvdzo6bmV0V21TdGF0ZXMoKQorIAorIHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93 RmxhZ3MoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKQorIHsKKy0gICAgaWYgKHNob3VsZERlZmVyVGFz ayhUYXNrOjpTZXRXaW5kb3dGbGFncykpCistICAgICAgICByZXR1cm47CistCisgICAgIFF0OjpX aW5kb3dUeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxRdDo6V2luZG93VHlwZT4oaW50KGZsYWdzICYg UXQ6OldpbmRvd1R5cGVfTWFzaykpOworIAorICAgICBpZiAodHlwZSA9PSBRdDo6VG9vbFRpcCkK K0BAIC05NDEsOCArOTI2LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dGbGFncyhRdDo6 V2luZG93RmxhZ3MgZmxhZ3MpCisgCisgICAgIHNldFRyYW5zcGFyZW50Rm9yTW91c2VFdmVudHMo ZmxhZ3MgJiBRdDo6V2luZG93VHJhbnNwYXJlbnRGb3JJbnB1dCk7CisgICAgIHVwZGF0ZURvZXNO b3RBY2NlcHRGb2N1cyhmbGFncyAmIFF0OjpXaW5kb3dEb2VzTm90QWNjZXB0Rm9jdXMpOworLQor LSAgICBtX2lzV21NYW5hZ2VkV2luZG93ID0gIShmbGFncyAmIFF0OjpYMTFCeXBhc3NXaW5kb3dN YW5hZ2VySGludCk7CisgfQorIAorIHZvaWQgUVhjYldpbmRvdzo6c2V0TW90aWZXbUhpbnRzKFF0 OjpXaW5kb3dGbGFncyBmbGFncykKK0BAIC0xMTQyLDkgKzExMjUsNiBAQCB2b2lkIFFYY2JXaW5k b3c6OnNldFdpbmRvd1N0YXRlKFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGUpCisgICAgIGlmIChzdGF0 ZSA9PSBtX3dpbmRvd1N0YXRlKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBpZiAoc2hvdWxk RGVmZXJUYXNrKFRhc2s6OlNldFdpbmRvd1N0YXRlKSkKKy0gICAgICAgIHJldHVybjsKKy0KKyAg ICAgLy8gdW5zZXQgb2xkIHN0YXRlCisgICAgIGlmIChtX3dpbmRvd1N0YXRlICYgUXQ6OldpbmRv d01pbmltaXplZCkKKyAgICAgICAgIHhjYl9tYXBfd2luZG93KHhjYl9jb25uZWN0aW9uKCksIG1f d2luZG93KTsKK0BAIC0xMzUwLDYgKzEzMzAsMTIgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5k b3dJY29uKGNvbnN0IFFJY29uICZpY29uKQorICAgICB9CisgCisgICAgIGlmICghaWNvbl9kYXRh LmlzRW1wdHkoKSkgeworKyAgICAgICAgLy8gSWdub3JlIGljb24gZXhjZWVkaW5nIG1heGltdW0g eGNiIHJlcXVlc3QgbGVuZ3RoCisrICAgICAgICBpZiAoaWNvbl9kYXRhLnNpemUoKSA+IHhjYl9n ZXRfbWF4aW11bV9yZXF1ZXN0X2xlbmd0aCh4Y2JfY29ubmVjdGlvbigpKSkgeworKyAgICAgICAg ICAgIHFXYXJuaW5nKCJJZ25vcmluZyB3aW5kb3cgaWNvbjogU2l6ZSAlbGx1IGV4Y2VlZHMgbWF4 aW11bSB4Y2IgcmVxdWVzdCBsZW5ndGggJXUuIiwKKysgICAgICAgICAgICAgICAgICAgICBpY29u X2RhdGEuc2l6ZSgpLCB4Y2JfZ2V0X21heGltdW1fcmVxdWVzdF9sZW5ndGgoeGNiX2Nvbm5lY3Rp b24oKSkpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKyAgICAgICAgIHhjYl9j aGFuZ2VfcHJvcGVydHkoeGNiX2Nvbm5lY3Rpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgWENCX1BST1BfTU9ERV9SRVBMQUNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtX3dpbmRvdywKK0BAIC0xNjM5LDcgKzE2MjUsNyBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFdt V2luZG93VHlwZShRWGNiV2luZG93RnVuY3Rpb25zOjpXbVdpbmRvd1R5cGVzIHR5cGVzLCBRdDo6 VworICAgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKy0gICAgaWYgKChmbGFncyAmIFF0OjpGcmFt ZWxlc3NXaW5kb3dIaW50KSAmJiAhKHR5cGUgJiBRWGNiV2luZG93RnVuY3Rpb25zOjpLZGVPdmVy cmlkZSkpIHsKKysgICAgaWYgKChmbGFncyAmIFF0OjpGcmFtZWxlc3NXaW5kb3dIaW50KSAmJiAh KHR5cGVzICYgUVhjYldpbmRvd0Z1bmN0aW9uczo6S2RlT3ZlcnJpZGUpKSB7CisgICAgICAgICAv LyBvdmVycmlkZSBuZXR3bSB0eXBlIC0gcXVpY2sgYW5kIGVhc3kgZm9yIEtERSBub2JvcmRlcgor ICAgICAgICAgYXRvbXMuYXBwZW5kKGF0b20oUVhjYkF0b206Ol9LREVfTkVUX1dNX1dJTkRPV19U WVBFX09WRVJSSURFKSk7CisgICAgIH0KK0BAIC0xODk0LDEwICsxODgwLDYgQEAgdm9pZCBRWGNi V2luZG93OjpoYW5kbGVVbm1hcE5vdGlmeUV2ZW50KGNvbnN0IHhjYl91bm1hcF9ub3RpZnlfZXZl bnRfdCAqZXZlbnQpCisgICAgIGlmIChldmVudC0+d2luZG93ID09IG1fd2luZG93KSB7CisgICAg ICAgICBtX21hcHBlZCA9IGZhbHNlOworICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6 aGFuZGxlRXhwb3NlRXZlbnQod2luZG93KCksIFFSZWdpb24oKSk7CistICAgICAgICBpZiAoIW1f aXNXbU1hbmFnZWRXaW5kb3cgfHwgcGFyZW50KCkpIHsKKy0gICAgICAgICAgICBtX3dtU3RhdGVW YWxpZCA9IHRydWU7CistICAgICAgICAgICAgaGFuZGxlRGVmZXJyZWRUYXNrcygpOworLSAgICAg ICAgfQorICAgICB9CisgfQorIAorQEAgLTIyMTIsOTggKzIxOTQsMzAgQEAgdm9pZCBRWGNiV2lu ZG93OjpoYW5kbGVMZWF2ZU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9sZWF2ZV9ub3RpZnlfZXZlbnRf dCAqZXZlbnQpCisgICAgIGhhbmRsZUxlYXZlTm90aWZ5RXZlbnQoZXZlbnQtPnJvb3RfeCwgZXZl bnQtPnJvb3RfeSwgZXZlbnQtPm1vZGUsIGV2ZW50LT5kZXRhaWwsIGV2ZW50LT50aW1lKTsKKyB9 CisgCistYm9vbCBRWGNiV2luZG93OjpzaG91bGREZWZlclRhc2soVGFzayB0YXNrKQorLXsKKy0g ICAgaWYgKG1fd21TdGF0ZVZhbGlkKQorLSAgICAgICAgcmV0dXJuIGZhbHNlOworLQorLSAgICBt X2RlZmVycmVkVGFza3MuYXBwZW5kKHRhc2spOworLSAgICByZXR1cm4gdHJ1ZTsKKy19CistCist dm9pZCBRWGNiV2luZG93OjpoYW5kbGVEZWZlcnJlZFRhc2tzKCkKKy17CistICAgIFFfQVNTRVJU KG1fd21TdGF0ZVZhbGlkID09IHRydWUpOworLSAgICBpZiAobV9kZWZlcnJlZFRhc2tzLmlzRW1w dHkoKSkKKy0gICAgICAgIHJldHVybjsKKy0KKy0gICAgYm9vbCBtYXAgPSBmYWxzZTsKKy0gICAg Ym9vbCB1bm1hcCA9IGZhbHNlOworLQorLSAgICBRVmVjdG9yPFRhc2s+IHRhc2tzOworLSAgICBm b3IgKGF1dG8gdGFza0l0ID0gbV9kZWZlcnJlZFRhc2tzLnJiZWdpbigpOyB0YXNrSXQgIT0gbV9k ZWZlcnJlZFRhc2tzLnJlbmQoKTsgKyt0YXNrSXQpIHsKKy0gICAgICAgIGlmICghdGFza3MuY29u dGFpbnMoKnRhc2tJdCkpCistICAgICAgICAgICAgdGFza3MucHJlcGVuZCgqdGFza0l0KTsKKy0g ICAgfQorLQorLSAgICBmb3IgKFRhc2sgdGFzayA6IHRhc2tzKSB7CistICAgICAgICBzd2l0Y2gg KHRhc2spIHsKKy0gICAgICAgIGNhc2UgVGFzazo6TWFwOgorLSAgICAgICAgICAgIG1hcCA9IHRy dWU7CistICAgICAgICAgICAgdW5tYXAgPSBmYWxzZTsKKy0gICAgICAgICAgICBicmVhazsKKy0g ICAgICAgIGNhc2UgVGFzazo6VW5tYXA6CistICAgICAgICAgICAgdW5tYXAgPSB0cnVlOworLSAg ICAgICAgICAgIG1hcCA9IGZhbHNlOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2Fz ZSBUYXNrOjpTZXRHZW9tZXRyeToKKy0gICAgICAgICAgICBzZXRHZW9tZXRyeShtX2RlZmVycmVk R2VvbWV0cnkpOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBUYXNrOjpTZXRX aW5kb3dGbGFnczoKKy0gICAgICAgICAgICBzZXRXaW5kb3dGbGFncyh3aW5kb3coKS0+ZmxhZ3Mo KSk7CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlNldFdpbmRvd1N0 YXRlOgorLSAgICAgICAgICAgIHNldFdpbmRvd1N0YXRlKHdpbmRvdygpLT53aW5kb3dTdGF0ZSgp KTsKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgICAgIH0KKy0gICAgfQorLSAgICBtX2RlZmVy cmVkVGFza3MuY2xlYXIoKTsKKy0KKy0gICAgaWYgKG1hcCkgeworLSAgICAgICAgUV9BU1NFUlQo dW5tYXAgPT0gZmFsc2UpOworLSAgICAgICAgc2hvdygpOworLSAgICB9CistICAgIGlmICh1bm1h cCkgeworLSAgICAgICAgUV9BU1NFUlQobWFwID09IGZhbHNlKTsKKy0gICAgICAgIGhpZGUoKTsK Ky0gICAgfQorLX0KKy0KKyB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZVByb3BlcnR5Tm90aWZ5RXZl bnQoY29uc3QgeGNiX3Byb3BlcnR5X25vdGlmeV9ldmVudF90ICpldmVudCkKKyB7CisgICAgIGNv bm5lY3Rpb24oKS0+c2V0VGltZShldmVudC0+dGltZSk7CisgCistICAgIGNvbnN0IGJvb2wgd21T dGF0ZUNoYW5nZWQgPSBldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSk7Cist ICAgIGNvbnN0IGJvb2wgbmV0V21TdGF0ZUNoYW5nZWQgPSBldmVudC0+YXRvbSA9PSBhdG9tKFFY Y2JBdG9tOjpfTkVUX1dNX1NUQVRFKTsKKy0gICAgaWYgKG5ldFdtU3RhdGVDaGFuZ2VkIHx8IHdt U3RhdGVDaGFuZ2VkKSB7CistICAgICAgICBpZiAod21TdGF0ZUNoYW5nZWQgJiYgIW1fd21TdGF0 ZVZhbGlkICYmIG1faXNXbU1hbmFnZWRXaW5kb3cpIHsKKy0gICAgICAgICAgICAvLyBJQ0NDTSA0 LjEuNAorLSAgICAgICAgICAgIC8vIENsaWVudHMgdGhhdCB3YW50IHRvIHJlLXVzZSBhIGNsaWVu dCB3aW5kb3cgKGUuZy4gYnkgbWFwcGluZyBpdCBhZ2FpbikKKy0gICAgICAgICAgICAvLyBhZnRl ciB3aXRoZHJhd2luZyBpdCBtdXN0IHdhaXQgZm9yIHRoZSB3aXRoZHJhd2FsIHRvIGJlIGNvbXBs ZXRlIGJlZm9yZQorLSAgICAgICAgICAgIC8vIHByb2NlZWRpbmcuIFRoZSBwcmVmZXJyZWQgbWV0 aG9kIGZvciBkb2luZyB0aGlzIGlzIGZvciBjbGllbnRzIHRvIHdhaXQgZm9yCistICAgICAgICAg ICAgLy8gYSB3aW5kb3cgbWFuYWdlciB0byB1cGRhdGUgb3IgcmVtb3ZlIHRoZSBXTV9TVEFURSBw cm9wZXJ0eS4KKy0gICAgICAgICAgICBtX3dtU3RhdGVWYWxpZCA9IHRydWU7CistICAgICAgICAg ICAgaGFuZGxlRGVmZXJyZWRUYXNrcygpOworLSAgICAgICAgfQorLSAgICAgICAgaWYgKGV2ZW50 LT5zdGF0ZSA9PSBYQ0JfUFJPUEVSVFlfREVMRVRFKQorKyAgICBjb25zdCBib29sIHByb3BlcnR5 RGVsZXRlZCA9IGV2ZW50LT5zdGF0ZSA9PSBYQ0JfUFJPUEVSVFlfREVMRVRFOworKworKyAgICBp ZiAoZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9XTV9TVEFURSkgfHwgZXZlbnQt PmF0b20gPT0gYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpKSB7CisrICAgICAgICBpZiAocHJvcGVy dHlEZWxldGVkKQorICAgICAgICAgICAgIHJldHVybjsKKyAKKy0gICAgICAgIGlmICh3bVN0YXRl Q2hhbmdlZCkgeworKyAgICAgICAgUXQ6OldpbmRvd1N0YXRlcyBuZXdTdGF0ZSA9IFF0OjpXaW5k b3dOb1N0YXRlOworKworKyAgICAgICAgaWYgKGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206 OldNX1NUQVRFKSkgeyAvLyBXTV9TVEFURTogUXVpY2sgY2hlY2sgZm9yICdNaW5pbWl6ZScuCisg ICAgICAgICAgICAgYXV0byByZXBseSA9IFFfWENCX1JFUExZKHhjYl9nZXRfcHJvcGVydHksIHhj Yl9jb25uZWN0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs IG1fd2luZG93LCBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFhDQl9BVE9NX0FOWSwgMCwgMTAyNCk7CisgICAgICAgICAgICAg aWYgKHJlcGx5ICYmIHJlcGx5LT5mb3JtYXQgPT0gMzIgJiYgcmVwbHktPnR5cGUgPT0gYXRvbShR WGNiQXRvbTo6V01fU1RBVEUpKSB7CistICAgICAgICAgICAgICAgIGF1dG8gZGF0YSA9IHN0YXRp Y19jYXN0PGNvbnN0IHF1aW50MzIgKj4oeGNiX2dldF9wcm9wZXJ0eV92YWx1ZShyZXBseS5nZXQo KSkpOworLSAgICAgICAgICAgICAgICBpZiAocmVwbHktPmxlbmd0aCAhPSAwKSB7CistICAgICAg ICAgICAgICAgICAgICBjb25zdCBib29sIGNoYW5nZWRUb1dpdGhkcmF3biA9IGRhdGFbMF0gPT0g WENCX0lDQ0NNX1dNX1NUQVRFX1dJVEhEUkFXTjsKKy0gICAgICAgICAgICAgICAgICAgIGNvbnN0 IGJvb2wgY2hhbmdlZFRvSWNvbmljID0gZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfSUNP TklDOworLSAgICAgICAgICAgICAgICAgICAgbV9taW5pbWl6ZWQgPSBjaGFuZ2VkVG9JY29uaWMg fHwgKGNoYW5nZWRUb1dpdGhkcmF3biAmJiBtX21pbmltaXplZCk7CistICAgICAgICAgICAgICAg IH0KKysgICAgICAgICAgICAgICAgY29uc3QgcXVpbnQzMiAqZGF0YSA9IChjb25zdCBxdWludDMy ICopeGNiX2dldF9wcm9wZXJ0eV92YWx1ZShyZXBseS5nZXQoKSk7CisrICAgICAgICAgICAgICAg IGlmIChyZXBseS0+bGVuZ3RoICE9IDApCisrICAgICAgICAgICAgICAgICAgICBtX21pbmltaXpl ZCA9IChkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9JQ09OSUMKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHx8IChkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9X SVRIRFJBV04gJiYgbV9taW5pbWl6ZWQpKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9Cisg CistICAgICAgICAvLyBfTkVUX1dNX1NUQVRFIGhhbmRsaW5nCistICAgICAgICBRdDo6V2luZG93 U3RhdGVzIG5ld1N0YXRlID0gUXQ6OldpbmRvd05vU3RhdGU7CisgICAgICAgICBjb25zdCBOZXRX bVN0YXRlcyBzdGF0ZXMgPSBuZXRXbVN0YXRlcygpOworICAgICAgICAgLy8gX05FVF9XTV9TVEFU RV9ISURERU4gc2hvdWxkIGJlIHNldCBieSB0aGUgV2luZG93IE1hbmFnZXIgdG8gaW5kaWNhdGUg dGhhdCBhIHdpbmRvdyB3b3VsZAorICAgICAgICAgLy8gbm90IGJlIHZpc2libGUgb24gdGhlIHNj cmVlbiBpZiBpdHMgZGVza3RvcC92aWV3cG9ydCB3ZXJlIGFjdGl2ZSBhbmQgaXRzIGNvb3JkaW5h dGVzIHdlcmUKK0BAIC0yMzI1LDYgKzIyMzksNyBAQCB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZVBy b3BlcnR5Tm90aWZ5RXZlbnQoY29uc3QgeGNiX3Byb3BlcnR5X25vdGlmeV9ldmVudF90ICpldgor ICAgICAgICAgICAgIGlmICgobV93aW5kb3dTdGF0ZSAmIFF0OjpXaW5kb3dNaW5pbWl6ZWQpICYm IGNvbm5lY3Rpb24oKS0+bW91c2VHcmFiYmVyKCkgPT0gdGhpcykKKyAgICAgICAgICAgICAgICAg Y29ubmVjdGlvbigpLT5zZXRNb3VzZUdyYWJiZXIobnVsbHB0cik7CisgICAgICAgICB9CisrICAg ICAgICByZXR1cm47CisgICAgIH0gZWxzZSBpZiAoZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRv bTo6X05FVF9GUkFNRV9FWFRFTlRTKSkgeworICAgICAgICAgbV9kaXJ0eUZyYW1lTWFyZ2lucyA9 IHRydWU7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L3hjYi9xeGNid2luZG93LmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNi d2luZG93LmgKK2luZGV4IDU1YWY5Mjc5YjEuLjZmNWMxZjVlZDkgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmgKKysrKyBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaAorQEAgLTc0LDE0ICs3NCw2IEBA IHB1YmxpYzoKKyAKKyAgICAgUV9ERUNMQVJFX0ZMQUdTKE5ldFdtU3RhdGVzLCBOZXRXbVN0YXRl KQorIAorLSAgICBlbnVtIFRhc2sgeworLSAgICAgICAgTWFwLAorLSAgICAgICAgVW5tYXAsCist ICAgICAgICBTZXRHZW9tZXRyeSwKKy0gICAgICAgIFNldFdpbmRvd0ZsYWdzLAorLSAgICAgICAg U2V0V2luZG93U3RhdGUKKy0gICAgfTsKKy0KKyAgICAgUVhjYldpbmRvdyhRV2luZG93ICp3aW5k b3cpOworICAgICB+UVhjYldpbmRvdygpOworIAorQEAgLTE1MSw5ICsxNDMsNiBAQCBwdWJsaWM6 CisgCisgICAgIFFYY2JXaW5kb3cgKnRvV2luZG93KCkgb3ZlcnJpZGU7CisgCistICAgIGJvb2wg c2hvdWxkRGVmZXJUYXNrKFRhc2sgdGFzayk7CistICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRUYXNr cygpOworLQorICAgICB2b2lkIGhhbmRsZU1vdXNlRXZlbnQoeGNiX3RpbWVzdGFtcF90IHRpbWUs IGNvbnN0IFFQb2ludCAmbG9jYWwsIGNvbnN0IFFQb2ludCAmZ2xvYmFsLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWVycywgUUV2ZW50OjpU eXBlIHR5cGUsIFF0OjpNb3VzZUV2ZW50U291cmNlIHNvdXJjZSk7CisgCitAQCAtMjkyLDExICsy ODEsNiBAQCBwcm90ZWN0ZWQ6CisgICAgIGludCBtX3N3YXBJbnRlcnZhbCA9IC0xOworIAorICAg ICBxcmVhbCBtX3NpemVIaW50c1NjYWxlRmFjdG9yID0gMS4wOworLQorLSAgICBib29sIG1fd21T dGF0ZVZhbGlkID0gdHJ1ZTsKKy0gICAgUVZlY3RvcjxUYXNrPiBtX2RlZmVycmVkVGFza3M7Cist ICAgIGJvb2wgbV9pc1dtTWFuYWdlZFdpbmRvdyA9IHRydWU7CistICAgIFFSZWN0IG1fZGVmZXJy ZWRHZW9tZXRyeTsKKyB9OworIAorIGNsYXNzIFFYY2JGb3JlaWduV2luZG93IDogcHVibGljIFFY Y2JXaW5kb3cKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMv Z3RrMy9xZ3RrM21lbnUuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL2d0 azMvcWd0azNtZW51LmNwcAoraW5kZXggZDlkMTE3ZmFlYi4uNjQwYjQ5ZGFhMCAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAK KysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5j cHAKK0BAIC04NSw2ICs4NSw3IEBAIFFHdGszTWVudUl0ZW06OlFHdGszTWVudUl0ZW0oKQorICAg ICAgIG1fY2hlY2thYmxlKGZhbHNlKSwKKyAgICAgICBtX2NoZWNrZWQoZmFsc2UpLAorICAgICAg IG1fZW5hYmxlZCh0cnVlKSwKKysgICAgICBtX2V4Y2x1c2l2ZShmYWxzZSksCisgICAgICAgbV91 bmRlcmxpbmUoZmFsc2UpLAorICAgICAgIG1faW52YWxpZCh0cnVlKSwKKyAgICAgICBtX21lbnUo bnVsbHB0ciksCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVz L3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcCBiL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9w cG9ydGFsZmlsZWRpYWxvZy5jcHAKK2luZGV4IDAwNDhiYmMxZTYuLjM5NmU3ZjZkMWMgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRh bC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVk aWFsb2cuY3BwCitAQCAtMTAyLDE1ICsxMDIsMTIgQEAgY29uc3QgUURCdXNBcmd1bWVudCAmb3Bl cmF0b3IgPj4oY29uc3QgUURCdXNBcmd1bWVudCAmYXJnLCBRWGRnRGVza3RvcFBvcnRhbEZpbGUK KyBjbGFzcyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlCisgeworIHB1YmxpYzoK Ky0gICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShRUGxhdGZvcm1GaWxlRGlh bG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nKQorKyAgICBRWGRnRGVza3RvcFBvcnRhbEZpbGVE aWFsb2dQcml2YXRlKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cs IHVpbnQgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKQorICAgICAgICAgOiBuYXRpdmVGaWxlRGlh bG9nKG5hdGl2ZUZpbGVEaWFsb2cpCisrICAgICAgICAsIGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lv bihmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pCisgICAgIHsgfQorIAorLSAgICBXSWQgd2luSWQg PSAwOworLSAgICBib29sIGRpcmVjdG9yeU1vZGUgPSBmYWxzZTsKKy0gICAgYm9vbCBtb2RhbCA9 IGZhbHNlOworLSAgICBib29sIG11bHRpcGxlRmlsZXMgPSBmYWxzZTsKKy0gICAgYm9vbCBzYXZl RmlsZSA9IGZhbHNlOworKyAgICBRRXZlbnRMb29wIGxvb3A7CisgICAgIFFTdHJpbmcgYWNjZXB0 TGFiZWw7CisgICAgIFFTdHJpbmcgZGlyZWN0b3J5OworICAgICBRU3RyaW5nIHRpdGxlOworQEAg LTEyMSwxOSArMTE4LDI3IEBAIHB1YmxpYzoKKyAgICAgUVN0cmluZyBzZWxlY3RlZE1pbWVUeXBl RmlsdGVyOworICAgICBRU3RyaW5nIHNlbGVjdGVkTmFtZUZpbHRlcjsKKyAgICAgUVN0cmluZ0xp c3Qgc2VsZWN0ZWRGaWxlczsKKy0gICAgUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZl RmlsZURpYWxvZyA9IG51bGxwdHI7CisrICAgIHN0ZDo6dW5pcXVlX3B0cjxRUGxhdGZvcm1GaWxl RGlhbG9nSGVscGVyPiBuYXRpdmVGaWxlRGlhbG9nOworKyAgICB1aW50IGZpbGVDaG9vc2VyUG9y dGFsVmVyc2lvbiA9IDA7CisrICAgIGJvb2wgZmFpbGVkVG9PcGVuID0gZmFsc2U7CisrICAgIGJv b2wgZGlyZWN0b3J5TW9kZSA9IGZhbHNlOworKyAgICBib29sIG11bHRpcGxlRmlsZXMgPSBmYWxz ZTsKKysgICAgYm9vbCBzYXZlRmlsZSA9IGZhbHNlOworIH07CisgCistUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nOjpRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coUVBsYXRmb3JtRmlsZURp YWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZykKKytRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFs b2c6OlFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVy ICpuYXRpdmVGaWxlRGlhbG9nLCB1aW50IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikKKyAgICAg OiBRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyKCkKKy0gICAgLCBkX3B0cihuZXcgUVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShuYXRpdmVGaWxlRGlhbG9nKSkKKysgICAgLCBkX3B0 cihuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShuYXRpdmVGaWxlRGlhbG9n LCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pKQorIHsKKyAgICAgUV9EKFFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZyk7CisgCisgICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nKSB7CistICAg ICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2csIFNJR05BTChhY2NlcHQoKSksIHRoaXMs IFNJR05BTChhY2NlcHQoKSkpOworLSAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlhbG9n LCBTSUdOQUwocmVqZWN0KCkpLCB0aGlzLCBTSUdOQUwocmVqZWN0KCkpKTsKKysgICAgICAgIGNv bm5lY3QoZC0+bmF0aXZlRmlsZURpYWxvZy5nZXQoKSwgU0lHTkFMKGFjY2VwdCgpKSwgdGhpcywg U0lHTkFMKGFjY2VwdCgpKSk7CisrICAgICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2cu Z2V0KCksIFNJR05BTChyZWplY3QoKSksIHRoaXMsIFNJR05BTChyZWplY3QoKSkpOworICAgICB9 CisrCisrICAgIGQtPmxvb3AuY29ubmVjdCh0aGlzLCBTSUdOQUwoYWNjZXB0KCkpLCBTTE9UKHF1 aXQoKSkpOworKyAgICBkLT5sb29wLmNvbm5lY3QodGhpcywgU0lHTkFMKHJlamVjdCgpKSwgU0xP VChxdWl0KCkpKTsKKyB9CisgCisgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjp+UVhkZ0Rl c2t0b3BQb3J0YWxGaWxlRGlhbG9nKCkKK0BAIC0xNzcsNyArMTgyLDcgQEAgdm9pZCBRWGRnRGVz a3RvcFBvcnRhbEZpbGVEaWFsb2c6OmluaXRpYWxpemVEaWFsb2coKQorICAgICBzZXREaXJlY3Rv cnkob3B0aW9ucygpLT5pbml0aWFsRGlyZWN0b3J5KCkpOworIH0KKyAKKy12b2lkIFFYZGdEZXNr dG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbCgpCisrdm9pZCBRWGRnRGVza3RvcFBvcnRh bEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoUXQ6OldpbmRvd0ZsYWdzIHdpbmRvd0ZsYWdzLCBRdDo6 V2luZG93TW9kYWxpdHkgd2luZG93TW9kYWxpdHksIFFXaW5kb3cgKnBhcmVudCkKKyB7CisgICAg IFFfRChRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorQEAgLTE4NSwxMyArMTkwLDEz IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxh dGluMVN0cmluZygiL29yZy9mcmVlZGVza3RvcC9wb3J0YWwvZGVza3RvcCIpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4x U3RyaW5nKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkZpbGVDaG9vc2VyIiksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPnNhdmVG aWxlID8gUUxhdGluMVN0cmluZygiU2F2ZUZpbGUiKSA6IFFMYXRpbjFTdHJpbmcoIk9wZW5GaWxl IikpOworLSAgICBRU3RyaW5nIHBhcmVudFdpbmRvd0lkID0gUUxhdGluMVN0cmluZygieDExOiIp ICsgUVN0cmluZzo6bnVtYmVyKGQtPndpbklkLCAxNik7CisrICAgIFFTdHJpbmcgcGFyZW50V2lu ZG93SWQgPSBRTGF0aW4xU3RyaW5nKCJ4MTE6IikgKyBRU3RyaW5nOjpudW1iZXIocGFyZW50ID8g cGFyZW50LT53aW5JZCgpIDogMCwgMTYpOworIAorICAgICBRVmFyaWFudE1hcCBvcHRpb25zOwor ICAgICBpZiAoIWQtPmFjY2VwdExhYmVsLmlzRW1wdHkoKSkKKyAgICAgICAgIG9wdGlvbnMuaW5z ZXJ0KFFMYXRpbjFTdHJpbmcoImFjY2VwdF9sYWJlbCIpLCBkLT5hY2NlcHRMYWJlbCk7CisgCist ICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoIm1vZGFsIiksIGQtPm1vZGFsKTsKKysg ICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygibW9kYWwiKSwgd2luZG93TW9kYWxpdHkg IT0gUXQ6Ok5vbk1vZGFsKTsKKyAgICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygibXVs dGlwbGUiKSwgZC0+bXVsdGlwbGVGaWxlcyk7CisgICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFT dHJpbmcoImRpcmVjdG9yeSIpLCBkLT5kaXJlY3RvcnlNb2RlKTsKKyAKK0BAIC0yOTAsMTAgKzI5 NSwxOCBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbCgpCisg CisgICAgIFFEQnVzUGVuZGluZ0NhbGwgcGVuZGluZ0NhbGwgPSBRREJ1c0Nvbm5lY3Rpb246OnNl c3Npb25CdXMoKS5hc3luY0NhbGwobWVzc2FnZSk7CisgICAgIFFEQnVzUGVuZGluZ0NhbGxXYXRj aGVyICp3YXRjaGVyID0gbmV3IFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyKHBlbmRpbmdDYWxsKTsK Ky0gICAgY29ubmVjdCh3YXRjaGVyLCAmUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVk LCB0aGlzLCBbdGhpc10gKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7CisrICAg IGNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hlZCwgdGhp cywgWz1dIChRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlcikgeworICAgICAgICAgUURC dXNQZW5kaW5nUmVwbHk8UURCdXNPYmplY3RQYXRoPiByZXBseSA9ICp3YXRjaGVyOworLSAgICAg ICAgaWYgKHJlcGx5LmlzRXJyb3IoKSkgeworLSAgICAgICAgICAgIFFfRU1JVCByZWplY3QoKTsK KysgICAgICAgIC8vIEFueSBlcnJvciBtZWFucyB0aGUgZGlhbG9nIGlzIG5vdCBzaG93biBhbmQg d2UgbmVlZCB0byBmYWxsYmFjaworKyAgICAgICAgZC0+ZmFpbGVkVG9PcGVuID0gcmVwbHkuaXNF cnJvcigpOworKyAgICAgICAgaWYgKGQtPmZhaWxlZFRvT3BlbikgeworKyAgICAgICAgICAgIGlm IChkLT5uYXRpdmVGaWxlRGlhbG9nKSB7CisrICAgICAgICAgICAgICAgIGQtPm5hdGl2ZUZpbGVE aWFsb2ctPnNob3cod2luZG93RmxhZ3MsIHdpbmRvd01vZGFsaXR5LCBwYXJlbnQpOworKyAgICAg ICAgICAgICAgICBpZiAoZC0+bG9vcC5pc1J1bm5pbmcoKSkKKysgICAgICAgICAgICAgICAgICAg IGQtPm5hdGl2ZUZpbGVEaWFsb2ctPmV4ZWMoKTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAg ICAgICAgICAgICAgICBRX0VNSVQgcmVqZWN0KCk7CisrICAgICAgICAgICAgfQorICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5jb25u ZWN0KG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXBseS52YWx1ZSgpLnBhdGgoKSwKK0BAIC0zMDIsNiArMzE1LDcgQEAgdm9pZCBR WGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QoZ290UmVzcG9uc2UodWlu dCxRVmFyaWFudE1hcCkpKTsKKyAgICAgICAgIH0KKysgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxh dGVyKCk7CisgICAgIH0pOworIH0KKyAKK0BAIC0zMjYsNyArMzQwLDcgQEAgUVVybCBRWGRnRGVz a3RvcFBvcnRhbEZpbGVEaWFsb2c6OmRpcmVjdG9yeSgpIGNvbnN0CisgeworICAgICBRX0QoY29u c3QgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQtPm5hdGl2ZUZp bGVEaWFsb2cgJiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6 OkRpcmVjdG9yeSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25z OjpEaXJlY3RvcnlPbmx5KSkKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0 aXZlRmlsZURpYWxvZygpKQorICAgICAgICAgcmV0dXJuIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPmRp cmVjdG9yeSgpOworIAorICAgICByZXR1cm4gZC0+ZGlyZWN0b3J5OworQEAgLTM0OCw3ICszNjIs NyBAQCBRTGlzdDxRVXJsPiBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OnNlbGVjdGVkRmls ZXMoKSBjb25zdAorIHsKKyAgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv Zyk7CisgCistICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVN b2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxl TW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpCisrICAgIGlmIChk LT5uYXRpdmVGaWxlRGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coKSkKKyAgICAgICAgIHJl dHVybiBkLT5uYXRpdmVGaWxlRGlhbG9nLT5zZWxlY3RlZEZpbGVzKCk7CisgCisgICAgIFFMaXN0 PFFVcmw+IGZpbGVzOworQEAgLTQwMywxNiArNDE3LDEzIEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nOjpleGVjKCkKKyB7CisgICAgIFFfRChRWGRnRGVza3RvcFBvcnRhbEZpbGVE aWFsb2cpOworIAorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygpLT5m aWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMoKS0+ ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKSB7CisrICAg IGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coKSkgeworICAg ICAgICAgZC0+bmF0aXZlRmlsZURpYWxvZy0+ZXhlYygpOworICAgICAgICAgcmV0dXJuOworICAg ICB9CisgCisgICAgIC8vIEhBQ0sgd2UgaGF2ZSB0byBhdm9pZCByZXR1cm5pbmcgdW50aWwgd2Ug ZW1pdCB0aGF0IHRoZSBkaWFsb2cgd2FzIGFjY2VwdGVkIG9yIHJlamVjdGVkCistICAgIFFFdmVu dExvb3AgbG9vcDsKKy0gICAgbG9vcC5jb25uZWN0KHRoaXMsIFNJR05BTChhY2NlcHQoKSksIFNM T1QocXVpdCgpKSk7CistICAgIGxvb3AuY29ubmVjdCh0aGlzLCBTSUdOQUwocmVqZWN0KCkpLCBT TE9UKHF1aXQoKSkpOworLSAgICBsb29wLmV4ZWMoKTsKKysgICAgZC0+bG9vcC5leGVjKCk7Cisg fQorIAorIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpoaWRlKCkKK0BAIC00Mjks MTMgKzQ0MCwxMCBAQCBib29sIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6c2hvdyhRdDo6 V2luZG93RmxhZ3Mgd2luZG93RmxhZ3MsIFF0OjpXaW5kb3dNbworIAorICAgICBpbml0aWFsaXpl RGlhbG9nKCk7CisgCistICAgIGQtPm1vZGFsID0gd2luZG93TW9kYWxpdHkgIT0gUXQ6Ok5vbk1v ZGFsOworLSAgICBkLT53aW5JZCA9IHBhcmVudCA/IHBhcmVudC0+d2luSWQoKSA6IDA7CistCist ICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0g UUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09 IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpCisrICAgIGlmIChkLT5uYXRpdmVG aWxlRGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coT3BlbkZhbGxiYWNrKSkKKyAgICAgICAg IHJldHVybiBkLT5uYXRpdmVGaWxlRGlhbG9nLT5zaG93KHdpbmRvd0ZsYWdzLCB3aW5kb3dNb2Rh bGl0eSwgcGFyZW50KTsKKyAKKy0gICAgb3BlblBvcnRhbCgpOworKyAgICBvcGVuUG9ydGFsKHdp bmRvd0ZsYWdzLCB3aW5kb3dNb2RhbGl0eSwgcGFyZW50KTsKKyAKKyAgICAgcmV0dXJuIHRydWU7 CisgfQorQEAgLTQ2NSw0ICs0NzMsMjEgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFs b2c6OmdvdFJlc3BvbnNlKHVpbnQgcmVzcG9uc2UsIGNvbnN0IFFWYXJpYW50TWFwICYKKyAgICAg fQorIH0KKyAKKytib29sIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6dXNlTmF0aXZlRmls ZURpYWxvZyhRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OkZhbGxiYWNrVHlwZSBmYWxsYmFj a1R5cGUpIGNvbnN0CisreworKyAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlh bG9nKTsKKysKKysgICAgaWYgKGQtPmZhaWxlZFRvT3BlbiAmJiBmYWxsYmFja1R5cGUgIT0gT3Bl bkZhbGxiYWNrKQorKyAgICAgICAgcmV0dXJuIHRydWU7CisrCisrICAgIGlmIChkLT5maWxlQ2hv b3NlclBvcnRhbFZlcnNpb24gPCAzKSB7CisrICAgICAgICBpZiAob3B0aW9ucygpLT5maWxlTW9k ZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5KQorKyAgICAgICAgICAgIHJldHVy biB0cnVlOworKyAgICAgICAgZWxzZSBpZiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxl RGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KysgICAgfQorKworKyAgICByZXR1cm4gZmFsc2U7CisrfQorKworIFFUX0VORF9OQU1FU1BBQ0UK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3Rv cHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oIGIvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxl ZGlhbG9nX3AuaAoraW5kZXggNGY0ZGU5NmVjZi4uNjVlMjJhNWNmMiAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNr dG9wcG9ydGFsZmlsZWRpYWxvZ19wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZ19wLmgK K0BAIC01MSw2ICs1MSwxMSBAQCBjbGFzcyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cgOiBw dWJsaWMgUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcgorICAgICBRX09CSkVDVAorICAgICBRX0RF Q0xBUkVfUFJJVkFURShRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpCisgcHVibGljOgorKyAg ICBlbnVtIEZhbGxiYWNrVHlwZSB7CisrICAgICAgICBHZW5lcmljRmFsbGJhY2ssCisrICAgICAg ICBPcGVuRmFsbGJhY2sKKysgICAgfTsKKysKKyAgICAgZW51bSBDb25kaXRpb25UeXBlIDogdWlu dCB7CisgICAgICAgICBHbG9iYWxQYXR0ZXJuID0gMCwKKyAgICAgICAgIE1pbWVUeXBlID0gMQor QEAgLTY5LDcgKzc0LDcgQEAgcHVibGljOgorICAgICB9OworICAgICB0eXBlZGVmIFFWZWN0b3I8 RmlsdGVyPiBGaWx0ZXJMaXN0OworIAorLSAgICBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2co UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZyA9IG51bGxwdHIpOwor KyAgICBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBl ciAqbmF0aXZlRmlsZURpYWxvZyA9IG51bGxwdHIsIHVpbnQgZmlsZUNob29zZXJQb3J0YWxWZXJz aW9uID0gMCk7CisgICAgIH5RWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coKTsKKyAKKyAgICAg Ym9vbCBkZWZhdWx0TmFtZUZpbHRlckRpc2FibGVzKCkgY29uc3Qgb3ZlcnJpZGU7CitAQCAtOTIs NyArOTcsOCBAQCBwcml2YXRlIFFfU0xPVFM6CisgCisgcHJpdmF0ZToKKyAgICAgdm9pZCBpbml0 aWFsaXplRGlhbG9nKCk7CistICAgIHZvaWQgb3BlblBvcnRhbCgpOworKyAgICB2b2lkIG9wZW5Q b3J0YWwoUXQ6OldpbmRvd0ZsYWdzIHdpbmRvd0ZsYWdzLCBRdDo6V2luZG93TW9kYWxpdHkgd2lu ZG93TW9kYWxpdHksIFFXaW5kb3cgKnBhcmVudCk7CisrICAgIGJvb2wgdXNlTmF0aXZlRmlsZURp YWxvZyhGYWxsYmFja1R5cGUgZmFsbGJhY2tUeXBlID0gR2VuZXJpY0ZhbGxiYWNrKSBjb25zdDsK KyAKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0 ZT4gZF9wdHI7CisgfTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10 aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcCBiL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9w cG9ydGFsdGhlbWUuY3BwCitpbmRleCBmYjMyNGFmYmQ4Li5iODA5NTAzMTIyIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhk Z2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3BwCitAQCAt MTExLDYgKzExMSw3IEBAIFFYZGdEZXNrdG9wUG9ydGFsVGhlbWU6OlFYZGdEZXNrdG9wUG9ydGFs VGhlbWUoKQorICAgICAgICAgaWYgKHJlcGx5LmlzVmFsaWQoKSkgeworICAgICAgICAgICAgIGQt PmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA9IHJlcGx5LnZhbHVlKCkudG9VSW50KCk7CisgICAg ICAgICB9CisrICAgICAgICB3YXRjaGVyLT5kZWxldGVMYXRlcigpOworICAgICB9KTsKKyB9Cisg CitAQCAtMTUyLDExICsxNTMsMTIgQEAgUVBsYXRmb3JtRGlhbG9nSGVscGVyKiBRWGRnRGVza3Rv cFBvcnRhbFRoZW1lOjpjcmVhdGVQbGF0Zm9ybURpYWxvZ0hlbHBlcihEaWFsb2cKKyB7CisgICAg IFFfRChjb25zdCBRWGRnRGVza3RvcFBvcnRhbFRoZW1lKTsKKyAKKy0gICAgaWYgKHR5cGUgPT0g RmlsZURpYWxvZykgeworKyAgICBpZiAodHlwZSA9PSBGaWxlRGlhbG9nICYmIGQtPmZpbGVDaG9v c2VyUG9ydGFsVmVyc2lvbikgeworICAgICAgICAgLy8gT2xkZXIgdmVyc2lvbnMgb2YgRmlsZUNo b29zZXIgcG9ydGFsIGRvbid0IHN1cHBvcnQgb3BlbmluZyBkaXJlY3RvcmllcywgdGhlcmVmb3Jl IHdlIGZhbGxiYWNrCisgICAgICAgICAvLyB0byBuYXRpdmUgZmlsZSBkaWFsb2cgb3BlbmVkIGlu c2lkZSB0aGUgc2FuZGJveCB0byBvcGVuIGEgZGlyZWN0b3J5LgorLSAgICAgICAgaWYgKGQtPmZp bGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA8IDMgJiYgZC0+YmFzZVRoZW1lLT51c2VQbGF0Zm9ybU5h dGl2ZURpYWxvZyh0eXBlKSkKKy0gICAgICAgICAgICByZXR1cm4gbmV3IFFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZyhzdGF0aWNfY2FzdDxRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyKj4oZC0+ YmFzZVRoZW1lLT5jcmVhdGVQbGF0Zm9ybURpYWxvZ0hlbHBlcih0eXBlKSkpOworKyAgICAgICAg aWYgKGQtPmJhc2VUaGVtZS0+dXNlUGxhdGZvcm1OYXRpdmVEaWFsb2codHlwZSkpCisrICAgICAg ICAgICAgcmV0dXJuIG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coc3RhdGljX2Nhc3Q8 UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcio+KGQtPmJhc2VUaGVtZS0+Y3JlYXRlUGxhdGZvcm1E aWFsb2dIZWxwZXIodHlwZSkpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbik7CisgCisgICAgICAg ICByZXR1cm4gbmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzsKKyAgICAgfQorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5n aW5lLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50 ZW5naW5lLmNwcAoraW5kZXggNDNkNWUxMTlhZC4uMWY5Y2JjNDU2NSAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lLmNwcAor KysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdp bmUuY3BwCitAQCAtODksOCArODksMTAgQEAgdm9pZCBRQ3Vwc1ByaW50RW5naW5lOjpzZXRQcm9w ZXJ0eShQcmludEVuZ2luZVByb3BlcnR5S2V5IGtleSwgY29uc3QgUVZhcmlhbnQgJnYKKyAgICAg ICAgIGJyZWFrOworICAgICBjYXNlIFBQS19EdXBsZXg6IHsKKyAgICAgICAgIFFQcmludDo6RHVw bGV4TW9kZSBtb2RlID0gUVByaW50OjpEdXBsZXhNb2RlKHZhbHVlLnRvSW50KCkpOworLSAgICAg ICAgaWYgKG1vZGUgIT0gZC0+ZHVwbGV4ICYmIGQtPm1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVw bGV4TW9kZXMoKS5jb250YWlucyhtb2RlKSkKKysgICAgICAgIGlmIChkLT5tX3ByaW50RGV2aWNl LnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMobW9kZSkpIHsKKyAgICAgICAgICAgICBk LT5kdXBsZXggPSBtb2RlOworKyAgICAgICAgICAgIGQtPmR1cGxleFJlcXVlc3RlZEV4cGxpY2l0 bHkgPSB0cnVlOworKyAgICAgICAgfQorICAgICAgICAgYnJlYWs7CisgICAgIH0KKyAgICAgY2Fz ZSBQUEtfUHJpbnRlck5hbWU6CitAQCAtMjc3LDkgKzI3OSwxMiBAQCB2b2lkIFFDdXBzUHJpbnRF bmdpbmVQcml2YXRlOjpjaGFuZ2VQcmludGVyKGNvbnN0IFFTdHJpbmcgJm5ld1ByaW50ZXIpCisg ICAgIG1fcHJpbnREZXZpY2Uuc3dhcChwcmludERldmljZSk7CisgICAgIHByaW50ZXJOYW1lID0g bV9wcmludERldmljZS5pZCgpOworIAorLSAgICAvLyBDaGVjayBpZiBuZXcgcHJpbnRlciBzdXBw b3J0cyBjdXJyZW50IHNldHRpbmdzLCBvdGhlcndpc2UgdXMgZGVmYXVsdHMKKy0gICAgaWYgKGR1 cGxleCAhPSBRUHJpbnQ6OkR1cGxleEF1dG8gJiYgIW1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVw bGV4TW9kZXMoKS5jb250YWlucyhkdXBsZXgpKQorKyAgICAvLyBpbiBjYXNlIGEgZHVwbGV4IHZh bHVlIHdhcyBleHBsaWNpdGx5IHNldCwgY2hlY2sgaWYgbmV3IHByaW50ZXIgc3VwcG9ydHMgY3Vy cmVudCB2YWx1ZSwKKysgICAgLy8gb3RoZXJ3aXNlIHVzZSBkZXZpY2UgZGVmYXVsdAorKyAgICBp ZiAoIWR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgfHwgIW1fcHJpbnREZXZpY2Uuc3VwcG9ydGVk RHVwbGV4TW9kZXMoKS5jb250YWlucyhkdXBsZXgpKSB7CisgICAgICAgICBkdXBsZXggPSBtX3By aW50RGV2aWNlLmRlZmF1bHREdXBsZXhNb2RlKCk7CisrICAgICAgICBkdXBsZXhSZXF1ZXN0ZWRF eHBsaWNpdGx5ID0gZmFsc2U7CisrICAgIH0KKyAgICAgUVByaW50OjpDb2xvck1vZGUgY29sb3JN b2RlID0gZ3JheXNjYWxlID8gUVByaW50OjpHcmF5U2NhbGUgOiBRUHJpbnQ6OkNvbG9yOworICAg ICBpZiAoIW1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkQ29sb3JNb2RlcygpLmNvbnRhaW5zKGNvbG9y TW9kZSkpCisgICAgICAgICBncmF5c2NhbGUgPSBtX3ByaW50RGV2aWNlLmRlZmF1bHRDb2xvck1v ZGUoKSA9PSBRUHJpbnQ6OkdyYXlTY2FsZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9wLmggYi9xdGJhc2Uvc3JjL3Bs dWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9wLmgKK2luZGV4IGMwMjFi MGM2NDMuLjhmODFmZTQ3OGQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRz dXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lX3AuaAorQEAgLTEwMCw2ICsxMDAs NyBAQCBwcml2YXRlOgorICAgICBRU3RyaW5nTGlzdCBjdXBzT3B0aW9uczsKKyAgICAgUVN0cmlu ZyBjdXBzVGVtcEZpbGU7CisgICAgIFFQcmludDo6RHVwbGV4TW9kZSBkdXBsZXg7CisrICAgIGJv b2wgZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSA9IGZhbHNlOworIH07CisgCisgUVRfRU5EX05B TUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2liYXNl L3FzcWxfaWJhc2UuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNx bF9pYmFzZS5jcHAKK2luZGV4IDY3ZTcxNTRmYTYuLjQwODc2MTUyZTUgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcAorKysrIGIv cXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAKK0BAIC04 MTcsNyArODE3LDcgQEAgYm9vbCBRSUJhc2VSZXN1bHRQcml2YXRlOjp3cml0ZUFycmF5KGludCBj b2x1bW4sIGNvbnN0IFFMaXN0PFFWYXJpYW50PiAmbGlzdCkKKyAgICAgYmEucmVzaXplKGludChi dWZMZW4pKTsKKyAKKyAgICAgaWYgKGxpc3Quc2l6ZSgpID4gYXJyYXlTaXplKSB7CistICAgICAg ICBlcnJvciA9IFFMYXRpbjFTdHJpbmcoIkFycmF5IHNpemUgbWlzc21hdGNoOiBzaXplIG9mICUx IGlzICUyLCBzaXplIG9mIHByb3ZpZGVkIGxpc3QgaXMgJTMiKTsKKysgICAgICAgIGVycm9yID0g UUxhdGluMVN0cmluZygiQXJyYXkgc2l6ZSBtaXNtYXRjaDogc2l6ZSBvZiAlMSBpcyAlMiwgc2l6 ZSBvZiBwcm92aWRlZCBsaXN0IGlzICUzIik7CisgICAgICAgICBlcnJvciA9IGVycm9yLmFyZyhR TGF0aW4xU3RyaW5nKHNxbG5hbWUpKS5hcmcoYXJyYXlTaXplKS5hcmcobGlzdC5zaXplKCkpOwor ICAgICAgICAgcS0+c2V0TGFzdEVycm9yKFFTcWxFcnJvcihlcnJvciwgUUxhdGluMVN0cmluZygi IiksIFFTcWxFcnJvcjo6U3RhdGVtZW50RXJyb3IpKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3FsX215 c3FsLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwu Y3BwCitpbmRleCA3Y2EwNTVlZWEyLi42YmM5ZDQ2NzU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9wbHVnaW5zL3NxbGRyaXZlcnMvbXlzcWwvcXNxbF9teXNxbC5jcHAKKysrKyBiL3F0YmFzZS9z cmMvcGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3BwCitAQCAtMjIzLDcgKzIy Myw3IEBAIHB1YmxpYzoKKyAgICAgc3RydWN0IFFNeUZpZWxkCisgICAgIHsKKyAgICAgICAgIGNo YXIgKm91dEZpZWxkID0gbnVsbHB0cjsKKy0gICAgICAgIE1ZU1FMX0ZJRUxEICpteUZpZWxkID0g bnVsbHB0cjsKKysgICAgICAgIGNvbnN0IE1ZU1FMX0ZJRUxEICpteUZpZWxkID0gbnVsbHB0cjsK KyAgICAgICAgIFFNZXRhVHlwZTo6VHlwZSB0eXBlID0gUU1ldGFUeXBlOjpVbmtub3duVHlwZTsK KyAgICAgICAgIG15X2Jvb2wgbnVsbEluZGljYXRvciA9IGZhbHNlOworICAgICAgICAgdWxvbmcg YnVmTGVuZ3RoID0gMHVsOworQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgYm9vbCBxSXNJbnRl Z2VyKGludCB0KQorIHZvaWQgUU1ZU1FMUmVzdWx0UHJpdmF0ZTo6YmluZEJsb2JzKCkKKyB7Cisg ICAgIGludCBpOworLSAgICBNWVNRTF9GSUVMRCAqZmllbGRJbmZvOworKyAgICBjb25zdCBNWVNR TF9GSUVMRCAqZmllbGRJbmZvOworICAgICBNWVNRTF9CSU5EICpiaW5kOworIAorICAgICBmb3Io aSA9IDA7IGkgPCBmaWVsZHMuY291bnQoKTsgKytpKSB7CitAQCAtMzc5LDcgKzM3OSw2IEBAIHZv aWQgUU1ZU1FMUmVzdWx0UHJpdmF0ZTo6YmluZEJsb2JzKCkKKyBib29sIFFNWVNRTFJlc3VsdFBy aXZhdGU6OmJpbmRJblZhbHVlcygpCisgeworICAgICBNWVNRTF9CSU5EICpiaW5kOworLSAgICBj aGFyICpmaWVsZDsKKyAgICAgaW50IGkgPSAwOworIAorICAgICBpZiAoIW1ldGEpCitAQCAtMzky LDM1ICszOTEsMzQgQEAgYm9vbCBRTVlTUUxSZXN1bHRQcml2YXRlOjpiaW5kSW5WYWx1ZXMoKQor ICAgICBpbkJpbmRzID0gbmV3IE1ZU1FMX0JJTkRbZmllbGRzLnNpemUoKV07CisgICAgIG1lbXNl dChpbkJpbmRzLCAwLCBmaWVsZHMuc2l6ZSgpICogc2l6ZW9mKE1ZU1FMX0JJTkQpKTsKKyAKKy0g ICAgTVlTUUxfRklFTEQgKmZpZWxkSW5mbzsKKysgICAgY29uc3QgTVlTUUxfRklFTEQgKmZpZWxk SW5mbzsKKyAKKyAgICAgd2hpbGUoKGZpZWxkSW5mbyA9IG15c3FsX2ZldGNoX2ZpZWxkKG1ldGEp KSkgeworKyAgICAgICAgYmluZCA9ICZpbkJpbmRzW2ldOworKworICAgICAgICAgUU15RmllbGQg JmYgPSBmaWVsZHNbaV07CisgICAgICAgICBmLm15RmllbGQgPSBmaWVsZEluZm87CistCisrICAg ICAgICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSBmaWVsZEluZm8tPmxlbmd0 aCArIDE7CisrICAgICAgICBiaW5kLT5idWZmZXJfdHlwZSA9IGZpZWxkSW5mby0+dHlwZTsKKyAg ICAgICAgIGYudHlwZSA9IHFEZWNvZGVNWVNRTFR5cGUoZmllbGRJbmZvLT50eXBlLCBmaWVsZElu Zm8tPmZsYWdzKTsKKyAgICAgICAgIGlmIChxSXNCbG9iKGZpZWxkSW5mby0+dHlwZSkpIHsKKyAg ICAgICAgICAgICAvLyB0aGUgc2l6ZSBvZiBhIGJsb2ItZmllbGQgaXMgYXZhaWxhYmxlIGFzIHNv b24gYXMgd2UgY2FsbAorICAgICAgICAgICAgIC8vIG15c3FsX3N0bXRfc3RvcmVfcmVzdWx0KCkK KyAgICAgICAgICAgICAvLyBhZnRlciBteXNxbF9zdG10X2V4ZWMoKSBpbiBRTVlTUUxSZXN1bHQ6 OmV4ZWMoKQorLSAgICAgICAgICAgIGZpZWxkSW5mby0+bGVuZ3RoID0gMDsKKysgICAgICAgICAg ICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSAwOworICAgICAgICAgICAgIGhh c0Jsb2JzID0gdHJ1ZTsKKyAgICAgICAgIH0gZWxzZSBpZiAocUlzSW50ZWdlcihmLnR5cGUpKSB7 CistICAgICAgICAgICAgZmllbGRJbmZvLT5sZW5ndGggPSA4OworKyAgICAgICAgICAgIGJpbmQt PmJ1ZmZlcl9sZW5ndGggPSBmLmJ1Zkxlbmd0aCA9IDg7CisgICAgICAgICB9IGVsc2UgeworLSAg ICAgICAgICAgIGZpZWxkSW5mby0+dHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworKyAgICAgICAg ICAgIGJpbmQtPmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisgICAgICAgICB9Cist ICAgICAgICBiaW5kID0gJmluQmluZHNbaV07CistICAgICAgICBmaWVsZCA9IG5ldyBjaGFyW2Zp ZWxkSW5mby0+bGVuZ3RoICsgMV07CistICAgICAgICBtZW1zZXQoZmllbGQsIDAsIGZpZWxkSW5m by0+bGVuZ3RoICsgMSk7CisgCistICAgICAgICBiaW5kLT5idWZmZXJfdHlwZSA9IGZpZWxkSW5m by0+dHlwZTsKKy0gICAgICAgIGJpbmQtPmJ1ZmZlciA9IGZpZWxkOworLSAgICAgICAgYmluZC0+ YnVmZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3RoID0gZmllbGRJbmZvLT5sZW5ndGggKyAxOworICAg ICAgICAgYmluZC0+aXNfbnVsbCA9ICZmLm51bGxJbmRpY2F0b3I7CisgICAgICAgICBiaW5kLT5s ZW5ndGggPSAmZi5idWZMZW5ndGg7CisgICAgICAgICBiaW5kLT5pc191bnNpZ25lZCA9IGZpZWxk SW5mby0+ZmxhZ3MgJiBVTlNJR05FRF9GTEFHID8gMSA6IDA7CistICAgICAgICBmLm91dEZpZWxk PWZpZWxkOworKworKyAgICAgICAgY2hhciAqZmllbGQgPSBuZXcgY2hhcltiaW5kLT5idWZmZXJf bGVuZ3RoICsgMV17fTsKKysgICAgICAgIGJpbmQtPmJ1ZmZlciA9IGYub3V0RmllbGQgPSBmaWVs ZDsKKyAKKyAgICAgICAgICsraTsKKyAgICAgfQorQEAgLTEzNjksMjAgKzEzNjcsMjAgQEAgYm9v bCBRTVlTUUxEcml2ZXI6Om9wZW4oY29uc3QgUVN0cmluZyYgZGIsCisgICAgIH0KKyAKKyAjaWYg TVlTUUxfVkVSU0lPTl9JRCA+PSA1MDAwNworLSAgICBpZiAobXlzcWxfZ2V0X2NsaWVudF92ZXJz aW9uKCkgPj0gNTA1MDMgJiYgbXlzcWxfZ2V0X3NlcnZlcl92ZXJzaW9uKGQtPm15c3FsKSA+PSA1 MDUwMykgeworLSAgICAgICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRpb24gdG8gYmUgdXRmOG1i NCAob25seSB1dGY4bWI0IHN1cHBvcnRzIDQtYnl0ZSBjaGFyYWN0ZXJzKQorLSAgICAgICAgbXlz cWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4bWI0Iik7CisrICAgIC8vIGZvcmNl IHRoZSBjb21tdW5pY2F0aW9uIHRvIGJlIHV0ZjhtYjQgKG9ubHkgdXRmOG1iNCBzdXBwb3J0cyA0 LWJ5dGUgY2hhcmFjdGVycykKKysgICAgaWYgKG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15 c3FsLCAidXRmOG1iNCIpKSB7CisrICAgICAgICAvLyB0aGlzIGZhaWxlZCwgdHJ5IGZvcmNpbmcg aXQgdG8gdXRmIChCTVAgb25seSkKKysgICAgICAgIGlmIChteXNxbF9zZXRfY2hhcmFjdGVyX3Nl dChkLT5teXNxbCwgInV0ZjgiKSkKKysgICAgICAgICAgICBxV2FybmluZygpIDw8ICJNeVNRTDog VW5hYmxlIHRvIHNldCB0aGUgY2xpZW50IGNoYXJhY3RlciBzZXQgdG8gdXRmOC4iOworICNpZiBR VF9DT05GSUcodGV4dGNvZGVjKQorLSAgICAgICAgZC0+dGMgPSBRVGV4dENvZGVjOjpjb2RlY0Zv ck5hbWUoIlVURi04Iik7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgZC0+dGMgPSBjb2Rl YyhkLT5teXNxbCk7CisgI2VuZGlmCistICAgIH0gZWxzZQorLSAgICB7CistICAgICAgICAvLyBm b3JjZSB0aGUgY29tbXVuaWNhdGlvbiB0byBiZSB1dGY4CistICAgICAgICBteXNxbF9zZXRfY2hh cmFjdGVyX3NldChkLT5teXNxbCwgInV0ZjgiKTsKKysgICAgfQorICNpZiBRVF9DT05GSUcodGV4 dGNvZGVjKQorLSAgICAgICAgZC0+dGMgPSBjb2RlYyhkLT5teXNxbCk7CisrICAgIGVsc2UKKysg ICAgICAgIGQtPnRjID0gUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lKCJVVEYtOCIpOworICNlbmRp ZgorLSAgICB9CisgI2VuZGlmICAvLyBNWVNRTF9WRVJTSU9OX0lEID49IDUwMDA3CisgCisgICAg IGQtPnByZXBhcmVkUXVlcnlzRW5hYmxlZCA9IGNoZWNrUHJlcGFyZWRRdWVyaWVzKGQtPm15c3Fs KTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9w cmludC0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmlu dGVyLTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50LTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnRlci0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludC0zMi5wbmcgYi9xdGJhc2Uvc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVyLTMyLnBuZworc2ltaWxhcml0eSBp bmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3By aW50LTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJp bnRlci0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dz L2ltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMjQucG5nCitzaW1pbGFyaXR5IGluZGV4 IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1w YWdlLXNpZGVkLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvdmlldy1wYWdlcy1mYWNpbmctMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTMyLnBuZyBiL3F0YmFzZS9z cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTMyLnBuZwor c2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTMyLnBuZworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0y NC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Vz LW92ZXJ2aWV3LTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0yNC5wbmcKK3JlbmFt ZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXct MjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvdmlldy1wYWdlLW11bHRpLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEw MCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdl LW11bHRpLTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv dmlldy1wYWdlcy1vdmVydmlldy0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTI0LnBuZyBiL3F0YmFzZS9zcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTI0LnBuZworc2lt aWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL3ZpZXctcGFnZS1vbmUtMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTMyLnBuZyBi L3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xl LTMyLnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1vbmUtMzIucG5nCityZW5hbWUgdG8gc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0zMi5wbmcKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0y NC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC1w YWdlLTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtcGFnZS0yNC5wbmcKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0zMi5wbmcg Yi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC1wYWdlLTMy LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBv cnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtcGFnZS0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMjQucG5nIGIvcXRi YXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtd2lkdGgtMjQucG5n CitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvZml0LXdpZHRoLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtd2lkdGgtMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRoLTMyLnBuZyBiL3F0YmFz ZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTMyLnBuZwor c2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL2ZpdC13aWR0aC0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcCBiL3F0YmFz ZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcAoraW5k ZXggNzhlNWI4ZDFlZi4uMmEyODUxNjcxOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcGFnZXNldHVwZGlhbG9nX3VuaXguY3BwCitAQCAtNTMy LDYgKzUzMiw3IEBAIHZvaWQgUVBhZ2VTZXR1cFdpZGdldDo6dXBkYXRlV2lkZ2V0KCkKKyB2b2lk IFFQYWdlU2V0dXBXaWRnZXQ6OnNldHVwUHJpbnRlcigpIGNvbnN0CisgeworICAgICBtX3ByaW50 ZXItPnNldFBhZ2VMYXlvdXQobV9wYWdlTGF5b3V0KTsKKysgICAgbV9wcmludGVyLT5zZXRQYWdl T3JpZW50YXRpb24obV9wYWdlTGF5b3V0Lm9yaWVudGF0aW9uKCkpOworICNpZiBRVF9DT05GSUco Y3VwcykKKyAgICAgUUNVUFNTdXBwb3J0OjpQYWdlc1BlclNoZWV0IHBhZ2VzUGVyU2hlZXQgPSBx dmFyaWFudF9jYXN0PFFDVVBTU3VwcG9ydDo6UGFnZXNQZXJTaGVldD4obV91aS5wYWdlc1BlclNo ZWV0Q29tYm8tPmN1cnJlbnREYXRhKCkKKyApOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nLnFyYyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nLnFyYworaW5kZXggNWE1NzliYWE1NS4uMTBiOGUxZDM0 MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlh bG9nLnFyYworKysrIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFs b2cucXJjCitAQCAtMSw5ICsxLDkgQEAKKyA8IURPQ1RZUEUgUkNDPjxSQ0MgdmVyc2lvbj0iMS4w Ij4KKyA8cXJlc291cmNlIHByZWZpeD0iL3F0LXByb2plY3Qub3JnL2RpYWxvZ3MvcXByaW50cHJl dmlld2RpYWxvZyI+CistPGZpbGU+aW1hZ2VzL2ZpdC1wYWdlLTI0LnBuZzwvZmlsZT4KKy08Zmls ZT5pbWFnZXMvZml0LXBhZ2UtMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy9maXQtd2lkdGgt MjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy9maXQtd2lkdGgtMzIucG5nPC9maWxlPgorKzxm aWxlPmltYWdlcy96b29tLWZpdC1wYWdlLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9v bS1maXQtcGFnZS0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXdpZHRoLTI0 LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQtd2lkdGgtMzIucG5nPC9maWxlPgor IDxmaWxlPmltYWdlcy9nby1maXJzdC0yNC5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL2dvLWZp cnN0LTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tbGFzdC0yNC5wbmc8L2ZpbGU+CitA QCAtMTgsMTQgKzE4LDE0IEBACisgPGZpbGU+aW1hZ2VzL2xheW91dC1wb3J0cmFpdC0zMi5wbmc8 L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3BhZ2Utc2V0dXAtMjQucG5nPC9maWxlPgorIDxmaWxlPmlt YWdlcy9wYWdlLXNldHVwLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvcHJpbnQtMjQucG5n PC9maWxlPgorLTxmaWxlPmltYWdlcy9wcmludC0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2Vz L3ZpZXctcGFnZS1tdWx0aS0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1t dWx0aS0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1vbmUtMjQucG5nPC9m aWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utb25lLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5p bWFnZXMvdmlldy1wYWdlLXNpZGVkLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1w YWdlLXNpZGVkLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvcHJpbnRlci0yNC5wbmc8L2Zp bGU+CisrPGZpbGU+aW1hZ2VzL3ByaW50ZXItMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92 aWV3LXBhZ2VzLW92ZXJ2aWV3LTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdl cy1vdmVydmlldy0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xl LTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMzIucG5nPC9m aWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0yNC5wbmc8L2ZpbGU+CisrPGZp bGU+aW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMv em9vbS1pbi0yNC5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3pvb20taW4tMzIucG5nPC9maWxl PgorIDxmaWxlPmltYWdlcy96b29tLW91dC0yNC5wbmc8L2ZpbGU+CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5peC5jcHAgYi9xdGJh c2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcAoraW5kZXgg YzViODQ1ZjRlYy4uNWE1YmExZDBhOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcAorQEAgLTcwMiwxMyArNzAyLDE0 IEBAIHZvaWQgUVByaW50RGlhbG9nUHJpdmF0ZTo6c2VsZWN0UHJpbnRlcihjb25zdCBRUHJpbnRl cjo6T3V0cHV0Rm9ybWF0IG91dHB1dEZvcm1hCisgICAgICAgICBlbHNlCisgICAgICAgICAgICAg b3B0aW9ucy5ncmF5c2NhbGUtPnNldENoZWNrZWQodHJ1ZSk7CisgCistICAgICAgICAvLyBrZWVw IGR1cGxleCB2YWx1ZSBleHBsaWNpdGx5IHNldCBieSB1c2VyLCBpZiBhbnksIGFuZCBzZWxlY3Rl ZCBwcmludGVyIHN1cHBvcnRzIGl0OworLSAgICAgICAgLy8gdXNlIGRldmljZSBkZWZhdWx0IG90 aGVyd2lzZQorKyAgICAgICAgLy8gZHVwbGV4IHByaW9yaXRpZXMgdG8gYmUgYXMgZm9sbG93czoK KysgICAgICAgIC8vIDEpIGEgdXNlci1zZWxlY3RlZCBkdXBsZXggdmFsdWUgaW4gdGhlIGRpYWxv ZyBoYXMgaGlnaGVzdCBwcm9yaXR5CisrICAgICAgICAvLyAyKSBkdXBsZXggdmFsdWUgc2V0IGlu IHRoZSBRUHJpbnRlcgorICAgICAgICAgUVByaW50OjpEdXBsZXhNb2RlIGR1cGxleDsKKyAgICAg ICAgIGlmIChleHBsaWNpdER1cGxleE1vZGUgIT0gUVByaW50OjpEdXBsZXhBdXRvICYmIHN1cHBv cnRlZER1cGxleE1vZGUuY29udGFpbnMoZXhwbGljaXREdXBsZXhNb2RlKSkKKyAgICAgICAgICAg ICBkdXBsZXggPSBleHBsaWNpdER1cGxleE1vZGU7CisgICAgICAgICBlbHNlCistICAgICAgICAg ICAgZHVwbGV4ID0gdG9wLT5kLT5tX2N1cnJlbnRQcmludERldmljZS5kZWZhdWx0RHVwbGV4TW9k ZSgpOworKyAgICAgICAgICAgIGR1cGxleCA9IHN0YXRpY19jYXN0PFFQcmludDo6RHVwbGV4TW9k ZT4ocC0+ZHVwbGV4KCkpOworICAgICAgICAgc3dpdGNoIChkdXBsZXgpIHsKKyAgICAgICAgIGNh c2UgUVByaW50OjpEdXBsZXhOb25lOgorICAgICAgICAgICAgIG9wdGlvbnMubm9EdXBsZXgtPnNl dENoZWNrZWQodHJ1ZSk7IGJyZWFrOworQEAgLTEyNDIsMTAgKzEyNDMsMTAgQEAgdm9pZCBRVW5p eFByaW50V2lkZ2V0UHJpdmF0ZTo6X3FfcHJpbnRlckNoYW5nZWQoaW50IGluZGV4KQorICAgICAg ICAgICAgIFFTdHJpbmcgZmlsZW5hbWUgPSB3aWRnZXQuZmlsZW5hbWUtPnRleHQoKTsKKyAgICAg ICAgICAgICB3aWRnZXQuZmlsZW5hbWUtPnNldFRleHQoZmlsZW5hbWUpOworICAgICAgICAgICAg IHdpZGdldC5sT3V0cHV0LT5zZXRFbmFibGVkKHRydWUpOworLSAgICAgICAgICAgIGlmIChvcHRp b25zUGFuZSkKKy0gICAgICAgICAgICAgICAgb3B0aW9uc1BhbmUtPnNlbGVjdFByaW50ZXIoUVBy aW50ZXI6OlBkZkZvcm1hdCk7CisgICAgICAgICAgICAgcHJpbnRlci0+c2V0T3V0cHV0Rm9ybWF0 KFFQcmludGVyOjpQZGZGb3JtYXQpOworICAgICAgICAgICAgIG1fY3VycmVudFByaW50RGV2aWNl ID0gUVByaW50RGV2aWNlKCk7CisrICAgICAgICAgICAgaWYgKG9wdGlvbnNQYW5lKQorKyAgICAg ICAgICAgICAgICBvcHRpb25zUGFuZS0+c2VsZWN0UHJpbnRlcihRUHJpbnRlcjo6UGRmRm9ybWF0 KTsKKyAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICB9CisgICAgIH0KK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3Bw IGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nLmNw cAoraW5kZXggMzk1NzVkNWY1Ny4uMjNiN2U4OTUzOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAKK0BAIC0z NTIsNyArMzUyLDcgQEAgdm9pZCBRUHJpbnRQcmV2aWV3RGlhbG9nUHJpdmF0ZTo6aW5pdChRUHJp bnRlciAqX3ByaW50ZXIpCisgc3RhdGljIGlubGluZSB2b2lkIHF0X3NldHVwQWN0aW9uSWNvbihR QWN0aW9uICphY3Rpb24sIFFMYXRpbjFTdHJpbmcgbmFtZSkKKyB7CisgICAgIFFMYXRpbjFTdHJp bmcgaW1hZ2VQcmVmaXgoIjovcXQtcHJvamVjdC5vcmcvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlh bG9nL2ltYWdlcy8iKTsKKy0gICAgUUljb24gaWNvbjsKKysgICAgUUljb24gaWNvbiA9IFFJY29u Ojpmcm9tVGhlbWUobmFtZSk7CisgICAgIGljb24uYWRkRmlsZShpbWFnZVByZWZpeCArIG5hbWUg KyBRTGF0aW4xU3RyaW5nKCItMjQucG5nIiksIFFTaXplKDI0LCAyNCkpOworICAgICBpY29uLmFk ZEZpbGUoaW1hZ2VQcmVmaXggKyBuYW1lICsgUUxhdGluMVN0cmluZygiLTMyLnBuZyIpLCBRU2l6 ZSgzMiwgMzIpKTsKKyAgICAgYWN0aW9uLT5zZXRJY29uKGljb24pOworQEAgLTM4Myw4ICszODMs OCBAQCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQcml2YXRlOjpzZXR1cEFjdGlvbnMoKQorICAg ICBmaXRQYWdlQWN0aW9uLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFTdHJpbmcoImZpdFBhZ2VBY3Rp b24iKSk7CisgICAgIGZpdFdpZHRoQWN0aW9uLT5zZXRDaGVja2FibGUodHJ1ZSk7CisgICAgIGZp dFBhZ2VBY3Rpb24tPnNldENoZWNrYWJsZSh0cnVlKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29u KGZpdFdpZHRoQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJmaXQtd2lkdGgiKSk7CistICAgIHF0X3Nl dHVwQWN0aW9uSWNvbihmaXRQYWdlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJmaXQtcGFnZSIpKTsK KysgICAgcXRfc2V0dXBBY3Rpb25JY29uKGZpdFdpZHRoQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ6 b29tLWZpdC13aWR0aCIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKGZpdFBhZ2VBY3Rpb24s IFFMYXRpbjFTdHJpbmcoInpvb20tZml0LXBhZ2UiKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3Qo Zml0R3JvdXAsIFNJR05BTCh0cmlnZ2VyZWQoUUFjdGlvbiopKSwgcSwgU0xPVChfcV9maXQoUUFj dGlvbiopKSk7CisgCisgICAgIC8vIFpvb20KK0BAIC00MTAsOSArNDEwLDkgQEAgdm9pZCBRUHJp bnRQcmV2aWV3RGlhbG9nUHJpdmF0ZTo6c2V0dXBBY3Rpb25zKCkKKyAgICAgc2luZ2xlTW9kZUFj dGlvbiA9IG1vZGVHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi UVByaW50UHJldmlld0RpYWxvZyIsICJTaG93IHNpbmdsZSBwYWdlIikpOworICAgICBmYWNpbmdN b2RlQWN0aW9uID0gbW9kZUdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs YXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlNob3cgZmFjaW5nIHBhZ2VzIikpOworICAgICBv dmVydmlld01vZGVBY3Rpb24gPSBtb2RlR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9u Ojp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiU2hvdyBvdmVydmlldyBvZiBhbGwg cGFnZXMiKSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihzaW5nbGVNb2RlQWN0aW9uLCBRTGF0 aW4xU3RyaW5nKCJ2aWV3LXBhZ2Utb25lIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oZmFj aW5nTW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlLXNpZGVkIikpOworLSAgICBx dF9zZXR1cEFjdGlvbkljb24ob3ZlcnZpZXdNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3 LXBhZ2UtbXVsdGkiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihzaW5nbGVNb2RlQWN0aW9u LCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2VzLXNpbmdsZSIpKTsKKysgICAgcXRfc2V0dXBBY3Rp b25JY29uKGZhY2luZ01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZXMtZmFjaW5n IikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24ob3ZlcnZpZXdNb2RlQWN0aW9uLCBRTGF0aW4x U3RyaW5nKCJ2aWV3LXBhZ2VzLW92ZXJ2aWV3IikpOworICAgICBzaW5nbGVNb2RlQWN0aW9uLT5z ZXRPYmplY3ROYW1lKFFMYXRpbjFTdHJpbmcoInNpbmdsZU1vZGVBY3Rpb24iKSk7CisgICAgIGZh Y2luZ01vZGVBY3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0cmluZygiZmFjaW5nTW9kZUFj dGlvbiIpKTsKKyAgICAgb3ZlcnZpZXdNb2RlQWN0aW9uLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFT dHJpbmcoIm92ZXJ2aWV3TW9kZUFjdGlvbiIpKTsKK0BAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBR UHJpbnRQcmV2aWV3RGlhbG9nUHJpdmF0ZTo6c2V0dXBBY3Rpb25zKCkKKyAgICAgcHJpbnRlckdy b3VwID0gbmV3IFFBY3Rpb25Hcm91cChxKTsKKyAgICAgcHJpbnRBY3Rpb24gPSBwcmludGVyR3Jv dXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdE aWFsb2ciLCAiUHJpbnQiKSk7CisgICAgIHBhZ2VTZXR1cEFjdGlvbiA9IHByaW50ZXJHcm91cC0+ YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxv ZyIsICJQYWdlIHNldHVwIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24ocHJpbnRBY3Rpb24s IFFMYXRpbjFTdHJpbmcoInByaW50IikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24ocHJpbnRB Y3Rpb24sIFFMYXRpbjFTdHJpbmcoInByaW50ZXIiKSk7CisgICAgIHF0X3NldHVwQWN0aW9uSWNv bihwYWdlU2V0dXBBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInBhZ2Utc2V0dXAiKSk7CisgICAgIFFP YmplY3Q6OmNvbm5lY3QocHJpbnRBY3Rpb24sIFNJR05BTCh0cmlnZ2VyZWQoYm9vbCkpLCBxLCBT TE9UKF9xX3ByaW50KCkpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChwYWdlU2V0dXBBY3Rpb24s IFNJR05BTCh0cmlnZ2VyZWQoYm9vbCkpLCBxLCBTTE9UKF9xX3BhZ2VTZXR1cCgpKSk7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAgYi9xdGJhc2Uvc3Jj L3NxbC9rZXJuZWwvcXNxbHF1ZXJ5LmNwcAoraW5kZXggMzJjNjE2NmM3OS4uNjBhZmVmMTBjMyAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVlcnkuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5LmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29t cGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBRdCBDb21wYW55IEx0ZC4KKyAq KiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgUXRTcWwgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTM3 Nyw2ICszNzcsMTAgQEAgYm9vbCBRU3FsUXVlcnk6OmV4ZWMoY29uc3QgUVN0cmluZyYgcXVlcnkp CisgICAgIFFFbGFwc2VkVGltZXIgdDsKKyAgICAgdC5zdGFydCgpOworICNlbmRpZgorKyAgICBp ZiAoIWRyaXZlcigpKSB7CisrICAgICAgICBxV2FybmluZygiUVNxbFF1ZXJ5OjpleGVjOiBjYWxs ZWQgYmVmb3JlIGRyaXZlciBoYXMgYmVlbiBzZXQgdXAiKTsKKysgICAgICAgIHJldHVybiBmYWxz ZTsKKysgICAgfQorICAgICBpZiAoZC0+cmVmLmxvYWRSZWxheGVkKCkgIT0gMSkgeworICAgICAg ICAgYm9vbCBmbyA9IGlzRm9yd2FyZE9ubHkoKTsKKyAgICAgICAgICp0aGlzID0gUVNxbFF1ZXJ5 KGRyaXZlcigpLT5jcmVhdGVSZXN1bHQoKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy90ZXN0 bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFi c3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAoraW5kZXggOGVmYjljNTNkNC4uY2UwNjJmNjZkNyAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNw cAorQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIFFBYnN0cmFjdEl0ZW1Nb2RlbFRlc3RlclByaXZh dGU6OnBhcmVudCgpCisgCisgICAgIC8vIENvbW1vbiBlcnJvciB0ZXN0ICMyLCBtYWtlIHN1cmUg dGhhdCBhIHNlY29uZCBsZXZlbCBpbmRleCBoYXMgYSBwYXJlbnQKKyAgICAgLy8gdGhhdCBpcyB0 aGUgZmlyc3QgbGV2ZWwgaW5kZXguCistICAgIGlmIChtb2RlbC0+cm93Q291bnQodG9wSW5kZXgp ID4gMCkgeworKyAgICBpZiAobW9kZWwtPnJvd0NvdW50KHRvcEluZGV4KSA+IDAgJiYgbW9kZWwt PmNvbHVtbkNvdW50KHRvcEluZGV4KSA+IDApIHsKKyAgICAgICAgIFFNb2RlbEluZGV4IGNoaWxk SW5kZXggPSBtb2RlbC0+aW5kZXgoMCwgMCwgdG9wSW5kZXgpOworICAgICAgICAgTU9ERUxURVNU RVJfVkVSSUZZKGNoaWxkSW5kZXguaXNWYWxpZCgpKTsKKyAgICAgICAgIE1PREVMVEVTVEVSX0NP TVBBUkUobW9kZWwtPnBhcmVudChjaGlsZEluZGV4KSwgdG9wSW5kZXgpOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwIGIvcXRiYXNlL3NyYy90ZXN0bGliL3Fh c2NpaWtleS5jcHAKK2luZGV4IDlhMzA4ZGEyYmMuLjkzNDk4YjI1NmYgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcAorKysrIGIvcXRiYXNlL3NyYy90ZXN0bGli L3Fhc2NpaWtleS5jcHAKK0BAIC00OTgsNiArNDk4LDExIEBAIGNoYXIgUVRlc3Q6OmtleVRvQXNj aWkoUXQ6OktleSBrZXkpCisgICAgIGNhc2UgUXQ6OktleV9MYXVuY2hFIDogcmV0dXJuIDA7IC8v ID0gMHgxMGIwLAorICAgICBjYXNlIFF0OjpLZXlfTGF1bmNoRiA6IHJldHVybiAwOyAvLyA9IDB4 MTBiMSwKKyAKKysgICAgLy8gS2V5cGFkIG5hdmlnYXRpb24ga2V5cworKyAgICBjYXNlIFF0OjpL ZXlfU2VsZWN0IDogcmV0dXJuIDA7IC8vID0gMHgwMTAxMDAwMAorKyAgICBjYXNlIFF0OjpLZXlf WWVzIDogcmV0dXJuIDA7IC8vID0gMHgwMTAxMDAwMQorKyAgICBjYXNlIFF0OjpLZXlfTm8gOiBy ZXR1cm4gMDsgLy8gPSAweDAxMDEwMDAyCisrCisgICAgIGRlZmF1bHQ6IFFURVNUX0FTU0VSVChm YWxzZSk7IHJldHVybiAwOworICAgICB9CisgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvdGVz dGxpYi9xdGVzdHJlc3VsdC5jcHAgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3Bw CitpbmRleCA4ODAyOGFhYzZlLi4yZTg5OTMwNzc2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy90 ZXN0bGliL3F0ZXN0cmVzdWx0LmNwcAorKysrIGIvcXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVz dWx0LmNwcAorQEAgLTI1MSw3ICsyNTEsOCBAQCBib29sIFFUZXN0UmVzdWx0Ojp2ZXJpZnkoYm9v bCBzdGF0ZW1lbnQsIGNvbnN0IGNoYXIgKnN0YXRlbWVudFN0ciwKKyB7CisgICAgIFFURVNUX0FT U0VSVChzdGF0ZW1lbnRTdHIpOworIAorLSAgICBjaGFyIG1zZ1sxMDI0XSA9IHsnXDAnfTsKKysg ICAgY2hhciBtc2dbMTAyNF07CisrICAgIG1zZ1swXSA9ICdcMCc7CisgCisgICAgIGlmIChRVGVz dExvZzo6dmVyYm9zZUxldmVsKCkgPj0gMikgeworICAgICAgICAgcXNucHJpbnRmKG1zZywgMTAy NCwgIlFWRVJJRlkoJXMpIiwgc3RhdGVtZW50U3RyKTsKK0BAIC0zMDksNyArMzEwLDggQEAgc3Rh dGljIGJvb2wgY29tcGFyZUhlbHBlcihib29sIHN1Y2Nlc3MsIGNvbnN0IGNoYXIgKmZhaWx1cmVN c2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhhc1ZhbHVlcyA9IHRydWUpCisg eworICAgICBjb25zdCBzaXplX3QgbWF4TXNnTGVuID0gMTAyNDsKKy0gICAgY2hhciBtc2dbbWF4 TXNnTGVuXSA9IHsnXDAnfTsKKysgICAgY2hhciBtc2dbbWF4TXNnTGVuXTsKKysgICAgbXNnWzBd ID0gJ1wwJzsKKyAKKyAgICAgUVRFU1RfQVNTRVJUKGV4cGVjdGVkKTsKKyAgICAgUVRFU1RfQVNT RVJUKGFjdHVhbCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNv bG9yZGlhbG9nLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5j cHAKK2luZGV4IDQyNDc3MzEyNzUuLmNiMzI1YmU4NWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3dpZGdldHMvZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdl dHMvZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwCitAQCAtNzgsNyArNzgsMTAgQEAKKyAjaW5jbHVk ZSAicXdpbmRvdy5oIgorIAorICNpbmNsdWRlICJwcml2YXRlL3FkaWFsb2dfcC5oIgorKyNpbmNs dWRlICJwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmgiCisgCisrI2luY2x1ZGUgPHFwYS9xcGxh dGZvcm1zZXJ2aWNlcy5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtaW50ZWdyYXRpb24uaD4K KyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorQEAgLTE2MTEs NiArMTYxNCwyMCBAQCB2b2lkIFFDb2xvckRpYWxvZ1ByaXZhdGU6Ol9xX25ld1N0YW5kYXJkKGlu dCByLCBpbnQgYykKKyB2b2lkIFFDb2xvckRpYWxvZ1ByaXZhdGU6Ol9xX3BpY2tTY3JlZW5Db2xv cigpCisgeworICAgICBRX1EoUUNvbG9yRGlhbG9nKTsKKysKKysgICAgYXV0byAqcGxhdGZvcm1T ZXJ2aWNlcyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ c2VydmljZXMoKTsKKysgICAgaWYgKHBsYXRmb3JtU2VydmljZXMtPmhhc0NhcGFiaWxpdHkoUVBs YXRmb3JtU2VydmljZXM6OkNhcGFiaWxpdHk6OkNvbG9yUGlja2luZykpIHsKKysgICAgICAgIGlm IChhdXRvICpjb2xvclBpY2tlciA9IHBsYXRmb3JtU2VydmljZXMtPmNvbG9yUGlja2VyKHEtPndp bmRvd0hhbmRsZSgpKSkgeworKyAgICAgICAgICAgIHEtPmNvbm5lY3QoY29sb3JQaWNrZXIsICZR UGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXI6OmNvbG9yUGlja2VkLCBxLAorKyAgICAgICAgICAg ICAgICAgICAgICAgW3EsIGNvbG9yUGlja2VyXShjb25zdCBRQ29sb3IgJmNvbG9yKSB7CisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JQaWNrZXItPmRlbGV0ZUxhdGVyKCk7CisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgcS0+c2V0Q3VycmVudENvbG9yKGNvbG9yKTsKKysgICAg ICAgICAgICAgICAgICAgICAgIH0pOworKyAgICAgICAgICAgIGNvbG9yUGlja2VyLT5waWNrQ29s b3IoKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrICAgIH0KKysKKyAgICAg aWYgKCFjb2xvclBpY2tpbmdFdmVudEZpbHRlcikKKyAgICAgICAgIGNvbG9yUGlja2luZ0V2ZW50 RmlsdGVyID0gbmV3IFFDb2xvclBpY2tpbmdFdmVudEZpbHRlcih0aGlzLCBxKTsKKyAgICAgcS0+ aW5zdGFsbEV2ZW50RmlsdGVyKGNvbG9yUGlja2luZ0V2ZW50RmlsdGVyKTsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAg Yi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAK K2luZGV4IGUxMjA4MTdlZGMuLjhlYTM2YjU0MjcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dp ZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAKKysrKyBiL3F0YmFzZS9z cmMvd2lkZ2V0cy9pdGVtdmlld3MvcWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcAorQEAgLTQwMCwx MiArNDAwLDcgQEAgYm9vbCBRQWJzdHJhY3RJdGVtRGVsZWdhdGU6OmhlbHBFdmVudChRSGVscEV2 ZW50ICpldmVudCwKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcgdG9vbHRpcCA9IGluZGV4LmlzVmFs aWQoKSA/CisgICAgICAgICAgICAgICBkLT50ZXh0Rm9yUm9sZShRdDo6VG9vbFRpcFJvbGUsIGlu ZGV4LmRhdGEoUXQ6OlRvb2xUaXBSb2xlKSwgb3B0aW9uLmxvY2FsZSwgcHJlY2lzaW9uKSA6Cisg ICAgICAgICAgICAgICBRU3RyaW5nKCk7CistICAgICAgICBRUmVjdCByZWN0OworLSAgICAgICAg aWYgKGluZGV4LmlzVmFsaWQoKSkgeworLSAgICAgICAgICAgIGNvbnN0IFFSZWN0IHIgPSB2aWV3 LT52aXN1YWxSZWN0KGluZGV4KTsKKy0gICAgICAgICAgICByZWN0ID0gUVJlY3Qodmlldy0+bWFw VG9HbG9iYWwoci50b3BMZWZ0KCkpLCByLnNpemUoKSk7CistICAgICAgICB9CistICAgICAgICBR VG9vbFRpcDo6c2hvd1RleHQoaGUtPmdsb2JhbFBvcygpLCB0b29sdGlwLCB2aWV3LCByZWN0KTsK KysgICAgICAgIFFUb29sVGlwOjpzaG93VGV4dChoZS0+Z2xvYmFsUG9zKCksIHRvb2x0aXAsIHZp ZXctPnZpZXdwb3J0KCksIG9wdGlvbi5yZWN0KTsKKyAgICAgICAgIGV2ZW50LT5zZXRBY2NlcHRl ZCghdG9vbHRpcC5pc0VtcHR5KCkpOworICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xbGlzdHZpZXcuY3BwIGIvcXRi YXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xbGlzdHZpZXcuY3BwCitpbmRleCAyYjM0NDc2NjQy Li5lZWJmYWEwMzBlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9x bGlzdHZpZXcuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0dmll dy5jcHAKK0BAIC0zMzg2LDYgKzMzODYsNyBAQCB2b2lkIFFJY29uTW9kZVZpZXdCYXNlOjp1cGRh dGVDb250ZW50c1NpemUoKQorICovCisgdm9pZCBRTGlzdFZpZXc6OmN1cnJlbnRDaGFuZ2VkKGNv bnN0IFFNb2RlbEluZGV4ICZjdXJyZW50LCBjb25zdCBRTW9kZWxJbmRleCAmcHJldmlvdXMpCisg eworKyAgICBRQWJzdHJhY3RJdGVtVmlldzo6Y3VycmVudENoYW5nZWQoY3VycmVudCwgcHJldmlv dXMpOworICNpZm5kZWYgUVRfTk9fQUNDRVNTSUJJTElUWQorICAgICBpZiAoUUFjY2Vzc2libGU6 OmlzQWN0aXZlKCkpIHsKKyAgICAgICAgIGlmIChjdXJyZW50LmlzVmFsaWQoKSkgeworQEAgLTMz OTYsNyArMzM5Nyw2IEBAIHZvaWQgUUxpc3RWaWV3OjpjdXJyZW50Q2hhbmdlZChjb25zdCBRTW9k ZWxJbmRleCAmY3VycmVudCwgY29uc3QgUU1vZGVsSW5kZXggJnByCisgICAgICAgICB9CisgICAg IH0KKyAjZW5kaWYKKy0gICAgUUFic3RyYWN0SXRlbVZpZXc6OmN1cnJlbnRDaGFuZ2VkKGN1cnJl bnQsIHByZXZpb3VzKTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRn ZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmll d3MvcXRhYmxldmlldy5jcHAKK2luZGV4IDkzNGFjNTgxYjIuLmY3OWJiMjQyNDkgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwCitAQCAtMTAxMyw2ICsx MDEzLDcgQEAgdm9pZCBRVGFibGVWaWV3UHJpdmF0ZTo6ZHJhd0NlbGwoUVBhaW50ZXIgKnBhaW50 ZXIsIGNvbnN0IFFTdHlsZU9wdGlvblZpZXdJdGVtICYKKyBpbnQgUVRhYmxlVmlld1ByaXZhdGU6 OndpZHRoSGludEZvckluZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRleCwgaW50IGhpbnQsIGNv bnN0IFFTdHlsZU9wdGlvblZpZXdJdGVtICZvcHRpb24pIGNvbnN0CisgeworICAgICBRX1EoY29u c3QgUVRhYmxlVmlldyk7CisrICAgIGNvbnN0IGludCBvbGRIaW50ID0gaGludDsKKyAgICAgUVdp ZGdldCAqZWRpdG9yID0gZWRpdG9yRm9ySW5kZXgoaW5kZXgpLndpZGdldC5kYXRhKCk7CisgICAg IGlmIChlZGl0b3IgJiYgcGVyc2lzdGVudC5jb250YWlucyhlZGl0b3IpKSB7CisgICAgICAgICBo aW50ID0gcU1heChoaW50LCBlZGl0b3ItPnNpemVIaW50KCkud2lkdGgoKSk7CitAQCAtMTAyMSw2 ICsxMDIyLDE3IEBAIGludCBRVGFibGVWaWV3UHJpdmF0ZTo6d2lkdGhIaW50Rm9ySW5kZXgoY29u c3QgUU1vZGVsSW5kZXggJmluZGV4LCBpbnQgaGludCwgY29uCisgICAgICAgICBoaW50ID0gcUJv dW5kKG1pbiwgaGludCwgbWF4KTsKKyAgICAgfQorICAgICBoaW50ID0gcU1heChoaW50LCBxLT5p dGVtRGVsZWdhdGUoaW5kZXgpLT5zaXplSGludChvcHRpb24sIGluZGV4KS53aWR0aCgpKTsKKysK KysgICAgaWYgKGhhc1NwYW5zKCkpIHsKKysgICAgICAgIGF1dG8gc3BhbiA9IHNwYW5zLnNwYW5B dChpbmRleC5jb2x1bW4oKSwgaW5kZXgucm93KCkpOworKyAgICAgICAgaWYgKHNwYW4gJiYgc3Bh bi0+bV9sZWZ0ID09IGluZGV4LmNvbHVtbigpICYmIHNwYW4tPm1fdG9wID09IGluZGV4LnJvdygp KSB7CisrICAgICAgICAgICAgLy8gc3BhbnMgYXJlIHNjcmV3ZWQgdXAgd2hlbiBzZWN0aW9ucyBh cmUgbW92ZWQKKysgICAgICAgICAgICBjb25zdCBhdXRvIGxlZnQgPSBsb2dpY2FsQ29sdW1uKHNw YW4tPm1fbGVmdCk7CisrICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gc3Bhbi0+d2lk dGgoKTsgKytpKQorKyAgICAgICAgICAgICAgIGhpbnQgLT0gcS0+Y29sdW1uV2lkdGgodmlzdWFs Q29sdW1uKGxlZnQgKyBpKSk7CisrICAgICAgICB9CisrICAgICAgICBoaW50ID0gc3RkOjptYXgo aGludCwgb2xkSGludCk7CisrICAgIH0KKyAgICAgcmV0dXJuIGhpbnQ7CisgfQorIAorQEAgLTEw NTMsNiArMTA2NSwxMSBAQCBpbnQgUVRhYmxlVmlld1ByaXZhdGU6OmhlaWdodEhpbnRGb3JJbmRl eChjb25zdCBRTW9kZWxJbmRleCAmaW5kZXgsIGludCBoaW50LCBRUworICAgICAgICAgb3B0aW9u LnJlY3Quc2V0SGVpZ2h0KGhlaWdodCk7CisgICAgICAgICBvcHRpb24ucmVjdC5zZXRYKHEtPmNv bHVtblZpZXdwb3J0UG9zaXRpb24oaW5kZXguY29sdW1uKCkpKTsKKyAgICAgICAgIG9wdGlvbi5y ZWN0LnNldFdpZHRoKHEtPmNvbHVtbldpZHRoKGluZGV4LmNvbHVtbigpKSk7CisrICAgICAgICBp ZiAoaGFzU3BhbnMoKSkgeworKyAgICAgICAgICAgIGF1dG8gc3BhbiA9IHNwYW5zLnNwYW5BdChp bmRleC5jb2x1bW4oKSwgaW5kZXgucm93KCkpOworKyAgICAgICAgICAgIGlmIChzcGFuICYmIHNw YW4tPm1fbGVmdCA9PSBpbmRleC5jb2x1bW4oKSAmJiBzcGFuLT5tX3RvcCA9PSBpbmRleC5yb3co KSkKKysgICAgICAgICAgICAgICAgb3B0aW9uLnJlY3Quc2V0V2lkdGgoc3RkOjptYXgob3B0aW9u LnJlY3Qud2lkdGgoKSwgdmlzdWFsU3BhblJlY3QoKnNwYW4pLndpZHRoKCkpKTsKKysgICAgICAg IH0KKyAgICAgICAgIC8vIDFweCBsZXNzIHNwYWNlIHdoZW4gZ3JpZCBpcyBzaG93biAoc2VlIGRy YXdDZWxsKQorICAgICAgICAgaWYgKHNob3dHcmlkKQorICAgICAgICAgICAgIG9wdGlvbi5yZWN0 LnNldFdpZHRoKG9wdGlvbi5yZWN0LndpZHRoKCkgLSAxKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3dpZGdldHMva2VybmVsL3FhY3Rpb24uaCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwv cWFjdGlvbi5oCitpbmRleCAyNThhMWVhMGEwLi43MzdjMWU4Mjg1IDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmgKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0 cy9rZXJuZWwvcWFjdGlvbi5oCitAQCAtODEsNyArODEsNyBAQCBjbGFzcyBRX1dJREdFVFNfRVhQ T1JUIFFBY3Rpb24gOiBwdWJsaWMgUU9iamVjdAorICAgICBRX1BST1BFUlRZKE1lbnVSb2xlIG1l bnVSb2xlIFJFQUQgbWVudVJvbGUgV1JJVEUgc2V0TWVudVJvbGUgTk9USUZZIGNoYW5nZWQpCisg ICAgIFFfUFJPUEVSVFkoYm9vbCBpY29uVmlzaWJsZUluTWVudSBSRUFEIGlzSWNvblZpc2libGVJ bk1lbnUgV1JJVEUgc2V0SWNvblZpc2libGVJbk1lbnUgTk9USUZZIGNoYW5nZWQpCisgICAgIFFf UFJPUEVSVFkoYm9vbCBzaG9ydGN1dFZpc2libGVJbkNvbnRleHRNZW51IFJFQUQgaXNTaG9ydGN1 dFZpc2libGVJbkNvbnRleHRNZW51IFdSSVRFIHNldFNob3J0Y3V0VmlzaWJsZUluQ29udGV4dE1l bnUgTk9USUZZIGNoYW5nZWQpCistICAgIFFfUFJPUEVSVFkoUHJpb3JpdHkgcHJpb3JpdHkgUkVB RCBwcmlvcml0eSBXUklURSBzZXRQcmlvcml0eSkKKysgICAgUV9QUk9QRVJUWShQcmlvcml0eSBw cmlvcml0eSBSRUFEIHByaW9yaXR5IFdSSVRFIHNldFByaW9yaXR5IE5PVElGWSBjaGFuZ2VkKQor IAorIHB1YmxpYzoKKyAgICAgLy8gbm90ZSB0aGlzIGlzIGNvcGllZCBpbnRvIHFwbGF0Zm9ybW1l bnUuaCwgd2hpY2ggbXVzdCBzdGF5IGluIHN5bmMKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dp ZGdldHMva2VybmVsL3F3aWRnZXQuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lk Z2V0LmNwcAoraW5kZXggOWViYTFlMDAxZS4uMjZmNmQyN2UxOCAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0 cy9rZXJuZWwvcXdpZGdldC5jcHAKK0BAIC01Mjk2LDcgKzUyOTYsNyBAQCB2b2lkIFFXaWRnZXRQ cml2YXRlOjpkcmF3V2lkZ2V0KFFQYWludERldmljZSAqcGRldiwgY29uc3QgUVJlZ2lvbiAmcmdu LCBjb25zdCBRUAorICAgICAgICAgUVdpZGdldEVmZmVjdFNvdXJjZVByaXZhdGUgKnNvdXJjZWQg PSBzdGF0aWNfY2FzdDxRV2lkZ2V0RWZmZWN0U291cmNlUHJpdmF0ZSAqPgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2UtPmRf ZnVuYygpKTsKKyAgICAgICAgIGlmICghc291cmNlZC0+Y29udGV4dCkgeworLSAgICAgICAgICAg IGNvbnN0IFFSZWdpb24gZWZmZWN0UmduKHJnbi5ib3VuZGluZ1JlY3QoKSk7CisrICAgICAgICAg ICAgY29uc3QgUVJlZ2lvbiBlZmZlY3RSZ24oKGZsYWdzICYgVXNlRWZmZWN0UmVnaW9uQm91bmRz KSA/IHJnbi5ib3VuZGluZ1JlY3QoKSA6IHJnbik7CisgICAgICAgICAgICAgUVdpZGdldFBhaW50 Q29udGV4dCBjb250ZXh0KHBkZXYsIGVmZmVjdFJnbiwgb2Zmc2V0LCBmbGFncywgc2hhcmVkUGFp bnRlciwgcmVwYWludE1hbmFnZXIpOworICAgICAgICAgICAgIHNvdXJjZWQtPmNvbnRleHQgPSAm Y29udGV4dDsKKyAgICAgICAgICAgICBpZiAoIXNoYXJlZFBhaW50ZXIpIHsKK0BAIC01MzI4LDYg KzUzMjgsNyBAQCB2b2lkIFFXaWRnZXRQcml2YXRlOjpkcmF3V2lkZ2V0KFFQYWludERldmljZSAq cGRldiwgY29uc3QgUVJlZ2lvbiAmcmduLCBjb25zdCBRUAorICAgICAgICAgfQorICAgICB9Cisg I2VuZGlmIC8vIFFUX0NPTkZJRyhncmFwaGljc2VmZmVjdCkKKysgICAgZmxhZ3MgPSBmbGFncyAm IH5Vc2VFZmZlY3RSZWdpb25Cb3VuZHM7CisgCisgICAgIGNvbnN0IGJvb2wgYWxzb09uU2NyZWVu ID0gZmxhZ3MgJiBEcmF3UGFpbnRPblNjcmVlbjsKKyAgICAgY29uc3QgYm9vbCByZWN1cnNpdmUg PSBmbGFncyAmIERyYXdSZWN1cnNpdmU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRz L2tlcm5lbC9xd2lkZ2V0X3AuaCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9w LmgKK2luZGV4IGVlZjZiOGZhMmMuLmM0MzJmNGI1ZDUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3dpZGdldHMva2VybmVsL3F3aWRnZXRfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2Vy bmVsL3F3aWRnZXRfcC5oCitAQCAtMjI5LDcgKzIyOSw4IEBAIHB1YmxpYzoKKyAgICAgICAgIERv bnRTdWJ0cmFjdE9wYXF1ZUNoaWxkcmVuID0gMHgxMCwKKyAgICAgICAgIERvbnREcmF3T3BhcXVl Q2hpbGRyZW4gPSAweDIwLAorICAgICAgICAgRG9udERyYXdOYXRpdmVDaGlsZHJlbiA9IDB4NDAs CistICAgICAgICBEb250U2V0Q29tcG9zaXRpb25Nb2RlID0gMHg4MAorKyAgICAgICAgRG9udFNl dENvbXBvc2l0aW9uTW9kZSA9IDB4ODAsCisrICAgICAgICBVc2VFZmZlY3RSZWdpb25Cb3VuZHMg PSAweDEwMAorICAgICB9OworICAgICBRX0RFQ0xBUkVfRkxBR1MoRHJhd1dpZGdldEZsYWdzLCBE cmF3V2lkZ2V0RmxhZykKKyAgICAgUV9GTEFHKERyYXdXaWRnZXRGbGFncykKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAgYi9x dGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAKK2luZGV4 IDAyODgwYjM0ZGEuLjBkNDRlMTMyNmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMv a2VybmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0 cy9rZXJuZWwvcXdpZGdldHJlcGFpbnRtYW5hZ2VyLmNwcAorQEAgLTEwMTgsNyArMTAxOCw4IEBA IHZvaWQgUVdpZGdldFJlcGFpbnRNYW5hZ2VyOjpwYWludEFuZEZsdXNoKCkKKyAKKyAgICAgLy8g UGFpbnQgdGhlIHJlc3Qgd2l0aCBjb21wb3NpdGlvbi4KKyAgICAgaWYgKHJlcGFpbnRBbGxXaWRn ZXRzIHx8ICFkaXJ0eUNvcHkuaXNFbXB0eSgpKSB7CistICAgICAgICBRV2lkZ2V0UHJpdmF0ZTo6 RHJhd1dpZGdldEZsYWdzIGZsYWdzID0gUVdpZGdldFByaXZhdGU6OkRyYXdBc1Jvb3QgfCBRV2lk Z2V0UHJpdmF0ZTo6RHJhd1JlY3Vyc2l2ZTsKKysgICAgICAgIFFXaWRnZXRQcml2YXRlOjpEcmF3 V2lkZ2V0RmxhZ3MgZmxhZ3MgPSBRV2lkZ2V0UHJpdmF0ZTo6RHJhd0FzUm9vdCB8IFFXaWRnZXRQ cml2YXRlOjpEcmF3UmVjdXJzaXZlCisrICAgICAgICAgICAgICAgIHwgUVdpZGdldFByaXZhdGU6 OlVzZUVmZmVjdFJlZ2lvbkJvdW5kczsKKyAgICAgICAgIHRsdy0+ZF9mdW5jKCktPmRyYXdXaWRn ZXQoc3RvcmUtPnBhaW50RGV2aWNlKCksIGRpcnR5Q29weSwgUVBvaW50KCksIGZsYWdzLCBudWxs cHRyLCB0aGlzKTsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9z dHlsZXMvcWZ1c2lvbnN0eWxlLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lv bnN0eWxlLmNwcAoraW5kZXggZjQzNDVkOTdjNC4uOTYyOTEyYzgzOCAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lvbnN0eWxlLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy93aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5bGUuY3BwCitAQCAtMTc3MiwxNCArMTc3Miw2IEBA IHZvaWQgUUZ1c2lvblN0eWxlOjpkcmF3Q29udHJvbChDb250cm9sRWxlbWVudCBlbGVtZW50LCBj b25zdCBRU3R5bGVPcHRpb24gKm9wdGlvCisgICAgICAgICAgICAgcHJveHkoKS0+ZHJhd0NvbnRy b2woQ0VfUHVzaEJ1dHRvbkxhYmVsLCAmc3Vib3B0LCBwYWludGVyLCB3aWRnZXQpOworICAgICAg ICAgfQorICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgQ0VfUHVzaEJ1dHRvbkxhYmVsOgorLSAg ICAgICAgaWYgKGNvbnN0IFFTdHlsZU9wdGlvbkJ1dHRvbiAqYnV0dG9uID0gcXN0eWxlb3B0aW9u X2Nhc3Q8Y29uc3QgUVN0eWxlT3B0aW9uQnV0dG9uICo+KG9wdGlvbikpIHsKKy0gICAgICAgICAg ICBRU3R5bGVPcHRpb25CdXR0b24gYigqYnV0dG9uKTsKKy0gICAgICAgICAgICAvLyBubyBQTV9C dXR0b25TaGlmdEhvcml6b250YWwgYW5kIFBNX0J1dHRvblNoaWZ0VmVydGljYWwgZm9yIGZ1c2lv biBzdHlsZQorLSAgICAgICAgICAgIGIuc3RhdGUgJj0gfihTdGF0ZV9PbiB8IFN0YXRlX1N1bmtl bik7CistICAgICAgICAgICAgUUNvbW1vblN0eWxlOjpkcmF3Q29udHJvbChlbGVtZW50LCAmYiwg cGFpbnRlciwgd2lkZ2V0KTsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworICAgICBjYXNl IENFX01lbnVCYXJFbXB0eUFyZWE6CisgICAgICAgICBwYWludGVyLT5zYXZlKCk7CisgICAgIHsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcCBiL3F0 YmFzZS9zcmMvd2lkZ2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwCitpbmRleCAxOGIyNDA2M2Q4Li5l ZjcyMDdhOGEzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3V0aWwvcWNvbXBsZXRl ci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwCitAQCAt MTEyMCw2ICsxMTIwLDggQEAgdm9pZCBRQ29tcGxldGVyOjpzZXRNb2RlbChRQWJzdHJhY3RJdGVt TW9kZWwgKm1vZGVsKQorIHsKKyAgICAgUV9EKFFDb21wbGV0ZXIpOworICAgICBRQWJzdHJhY3RJ dGVtTW9kZWwgKm9sZE1vZGVsID0gZC0+cHJveHktPnNvdXJjZU1vZGVsKCk7CisrICAgIGlmIChv bGRNb2RlbCA9PSBtb2RlbCkKKysgICAgICAgIHJldHVybjsKKyAjaWYgUVRfQ09ORklHKGZpbGVz eXN0ZW1tb2RlbCkKKyAgICAgaWYgKHFvYmplY3RfY2FzdDxjb25zdCBRRmlsZVN5c3RlbU1vZGVs ICo+KG9sZE1vZGVsKSkKKyAgICAgICAgIHNldENvbXBsZXRpb25Sb2xlKFF0OjpFZGl0Um9sZSk7 IC8vIFFUQlVHLTU0NjQyLCBjbGVhciBGaWxlTmFtZVJvbGUgc2V0IGJ5IFFGaWxlU3lzdGVtTW9k ZWwKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0 b24uY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uLmNwcAor aW5kZXggYTEyOGIyMzk1MC4uZGM0MGJmNjJmYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lk Z2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0 cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHAKK0BAIC01Niw2ICs1Niw3IEBACisgI2lmbmRl ZiBRVF9OT19BQ0NFU1NJQklMSVRZCisgI2luY2x1ZGUgInFhY2Nlc3NpYmxlLmgiCisgI2VuZGlm CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorIAorICNpbmNsdWRlIDxhbGdvcml0 aG0+CisgCitAQCAtMTA3NiwxOSArMTA3NywxOSBAQCB2b2lkIFFBYnN0cmFjdEJ1dHRvbjo6a2V5 UHJlc3NFdmVudChRS2V5RXZlbnQgKmUpCisgeworICAgICBRX0QoUUFic3RyYWN0QnV0dG9uKTsK KyAgICAgYm9vbCBuZXh0ID0gdHJ1ZTsKKy0gICAgc3dpdGNoIChlLT5rZXkoKSkgeworLSAgICBj YXNlIFF0OjpLZXlfRW50ZXI6CistICAgIGNhc2UgUXQ6OktleV9SZXR1cm46CistICAgICAgICBl LT5pZ25vcmUoKTsKKy0gICAgICAgIGJyZWFrOworLSAgICBjYXNlIFF0OjpLZXlfU2VsZWN0Ogor LSAgICBjYXNlIFF0OjpLZXlfU3BhY2U6CistICAgICAgICBpZiAoIWUtPmlzQXV0b1JlcGVhdCgp KSB7CistICAgICAgICAgICAgc2V0RG93bih0cnVlKTsKKy0gICAgICAgICAgICByZXBhaW50KCk7 CistICAgICAgICAgICAgZC0+ZW1pdFByZXNzZWQoKTsKKy0gICAgICAgIH0KKy0gICAgICAgIGJy ZWFrOworKworKyAgICBjb25zdCBhdXRvIGtleSA9IHN0YXRpY19jYXN0PFF0OjpLZXk+KGUtPmtl eSgpKTsKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Q cml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6 OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoa2V5KSAmJiAhZS0+ aXNBdXRvUmVwZWF0KCkpIHsKKysgICAgICAgIHNldERvd24odHJ1ZSk7CisrICAgICAgICByZXBh aW50KCk7CisrICAgICAgICBkLT5lbWl0UHJlc3NlZCgpOworKyAgICAgICAgcmV0dXJuOworKyAg ICB9CisrCisrICAgIHN3aXRjaCAoa2V5KSB7CisgICAgIGNhc2UgUXQ6OktleV9VcDoKKyAgICAg ICAgIG5leHQgPSBmYWxzZTsKKyAgICAgICAgIFFfRkFMTFRIUk9VR0goKTsKK0BAIC0xMTUzLDE1 ICsxMTU0LDE1IEBAIHZvaWQgUUFic3RyYWN0QnV0dG9uOjprZXlSZWxlYXNlRXZlbnQoUUtleUV2 ZW50ICplKQorICAgICBpZiAoIWUtPmlzQXV0b1JlcGVhdCgpKQorICAgICAgICAgZC0+cmVwZWF0 VGltZXIuc3RvcCgpOworIAorLSAgICBzd2l0Y2ggKGUtPmtleSgpKSB7CistICAgIGNhc2UgUXQ6 OktleV9TZWxlY3Q6CistICAgIGNhc2UgUXQ6OktleV9TcGFjZToKKy0gICAgICAgIGlmICghZS0+ aXNBdXRvUmVwZWF0KCkgJiYgZC0+ZG93bikKKy0gICAgICAgICAgICBkLT5jbGljaygpOworLSAg ICAgICAgYnJlYWs7CistICAgIGRlZmF1bHQ6CistICAgICAgICBlLT5pZ25vcmUoKTsKKysgICAg Y29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0 Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7Cisr ICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoc3RhdGljX2Nhc3Q8UXQ6OktleT4oZS0+ a2V5KCkpKSAmJiAhZS0+aXNBdXRvUmVwZWF0KCkgJiYgZC0+ZG93bikgeworKyAgICAgICAgZC0+ Y2xpY2soKTsKKysgICAgICAgIHJldHVybjsKKyAgICAgfQorKworKyAgICBlLT5pZ25vcmUoKTsK KyB9CisgCisgLyohXHJlaW1wCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdl dHMvcWNvbWJvYm94LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5j cHAKK2luZGV4IDdhNDk2YzI3ZTAuLjBhM2Q5NjY0N2IgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3guY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMv d2lkZ2V0cy9xY29tYm9ib3guY3BwCitAQCAtMzM1Miw3ICszMzUyLDIzIEBAIHZvaWQgUUNvbWJv Qm94OjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCAqZSkKKyAKKyAgICAgTW92ZSBtb3ZlID0gTm9N b3ZlOworICAgICBpbnQgbmV3SW5kZXggPSBjdXJyZW50SW5kZXgoKTsKKy0gICAgc3dpdGNoIChl LT5rZXkoKSkgeworKworKyAgICBib29sIHByZXNzTGlrZUJ1dHRvbiA9ICFkLT5saW5lRWRpdDsK KysjaWZkZWYgUVRfS0VZUEFEX05BVklHQVRJT04KKysgICAgcHJlc3NMaWtlQnV0dG9uIHw9IFFB cHBsaWNhdGlvblByaXZhdGU6OmtleXBhZE5hdmlnYXRpb25FbmFibGVkKCkgJiYgIWhhc0VkaXRG b2N1cygpOworKyNlbmRpZgorKyAgICBhdXRvIGtleSA9IHN0YXRpY19jYXN0PFF0OjpLZXk+KGUt PmtleSgpKTsKKysgICAgaWYgKHByZXNzTGlrZUJ1dHRvbikgeworKyAgICAgICAgY29uc3QgYXV0 byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1l KCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1l SGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysg ICAgICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoa2V5KSkgeworKyAgICAgICAgICAg IHNob3dQb3B1cCgpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAgfQor KworKyAgICBzd2l0Y2ggKGtleSkgeworICAgICBjYXNlIFF0OjpLZXlfVXA6CisgICAgICAgICBp ZiAoZS0+bW9kaWZpZXJzKCkgJiBRdDo6Q29udHJvbE1vZGlmaWVyKQorICAgICAgICAgICAgIGJy ZWFrOyAvLyBwYXNzIHRvIGxpbmUgZWRpdCBmb3IgYXV0byBjb21wbGV0aW9uCitAQCAtMzM5NCwy NiArMzQxMCwxMSBAQCB2b2lkIFFDb21ib0JveDo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQgKmUp CisgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICAgICAgYnJlYWs7CistICAg IGNhc2UgUXQ6OktleV9TcGFjZToKKy0gICAgICAgIGlmICghZC0+bGluZUVkaXQpIHsKKy0gICAg ICAgICAgICBzaG93UG9wdXAoKTsKKy0gICAgICAgICAgICByZXR1cm47CistICAgICAgICB9Cist ICAgICAgICBicmVhazsKKy0gICAgY2FzZSBRdDo6S2V5X0VudGVyOgorLSAgICBjYXNlIFF0OjpL ZXlfUmV0dXJuOgorICAgICBjYXNlIFF0OjpLZXlfRXNjYXBlOgorICAgICAgICAgaWYgKCFkLT5s aW5lRWRpdCkKKyAgICAgICAgICAgICBlLT5pZ25vcmUoKTsKKyAgICAgICAgIGJyZWFrOworICNp ZmRlZiBRVF9LRVlQQURfTkFWSUdBVElPTgorLSAgICBjYXNlIFF0OjpLZXlfU2VsZWN0OgorLSAg ICAgICAgaWYgKFFBcHBsaWNhdGlvblByaXZhdGU6OmtleXBhZE5hdmlnYXRpb25FbmFibGVkKCkK Ky0gICAgICAgICAgICAgICAgJiYgKCFoYXNFZGl0Rm9jdXMoKSB8fCAhZC0+bGluZUVkaXQpKSB7 CistICAgICAgICAgICAgc2hvd1BvcHVwKCk7CistICAgICAgICAgICAgcmV0dXJuOworLSAgICAg ICAgfQorLSAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUXQ6OktleV9MZWZ0OgorICAgICBjYXNl IFF0OjpLZXlfUmlnaHQ6CisgICAgICAgICBpZiAoUUFwcGxpY2F0aW9uUHJpdmF0ZTo6a2V5cGFk TmF2aWdhdGlvbkVuYWJsZWQoKSAmJiAhaGFzRWRpdEZvY3VzKCkpCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmggYi9xdGJhc2Uvc3JjL3dp ZGdldHMvd2lkZ2V0cy9xZGF0ZXRpbWVlZGl0X3AuaAoraW5kZXggZDM2YjZmOGY5YS4uZTBkZjVi NTE1OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGltZWVk aXRfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZGF0ZXRpbWVlZGl0X3Au aAorQEAgLTEsNiArMSw2IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHly aWdodCAoQykgMjAxOCBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIx IFRoZSBRdCBDb21wYW55IEx0ZC4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNl bnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRXaWRnZXRzIG1vZHVs ZSBvZiB0aGUgUXQgVG9vbGtpdC4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lk Z2V0cy9xZ3JvdXBib3guY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94 LmNwcAoraW5kZXggMDJhMGJlZDMyNS4uM2YzZWNjYzM3MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0 cy93aWRnZXRzL3Fncm91cGJveC5jcHAKK0BAIC01NCw2ICs1NCw4IEBACisgI2luY2x1ZGUgInFh Y2Nlc3NpYmxlLmgiCisgI2VuZGlmCisgI2luY2x1ZGUgPHByaXZhdGUvcXdpZGdldF9wLmg+Cisr I2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5jbHVkZSA8cXBhL3Fw bGF0Zm9ybXRoZW1lLmg+CisgCisgI2luY2x1ZGUgInFkZWJ1Zy5oIgorIAorQEAgLTM2MCw3ICsz NjIsMTAgQEAgYm9vbCBRR3JvdXBCb3g6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgICAgIHJldHVy biB0cnVlOworICAgICBjYXNlIFFFdmVudDo6S2V5UHJlc3M6IHsKKyAgICAgICAgIFFLZXlFdmVu dCAqayA9IHN0YXRpY19jYXN0PFFLZXlFdmVudCo+KGUpOworLSAgICAgICAgaWYgKCFrLT5pc0F1 dG9SZXBlYXQoKSAmJiAoay0+a2V5KCkgPT0gUXQ6OktleV9TZWxlY3QgfHwgay0+a2V5KCkgPT0g UXQ6OktleV9TcGFjZSkpIHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0g UUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6 OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoIWstPmlzQXV0 b1JlcGVhdCgpICYmIGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhzdGF0aWNfY2FzdDxRdDo6S2V5 PihrLT5rZXkoKSkpKSB7CisgICAgICAgICAgICAgZC0+cHJlc3NlZENvbnRyb2wgPSBRU3R5bGU6 OlNDX0dyb3VwQm94Q2hlY2tCb3g7CisgICAgICAgICAgICAgdXBkYXRlKHN0eWxlKCktPnN1YkNv bnRyb2xSZWN0KFFTdHlsZTo6Q0NfR3JvdXBCb3gsICZib3gsIFFTdHlsZTo6U0NfR3JvdXBCb3hD aGVja0JveCwgdGhpcykpOworICAgICAgICAgICAgIHJldHVybiB0cnVlOworQEAgLTM2OSw3ICsz NzQsMTAgQEAgYm9vbCBRR3JvdXBCb3g6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgfQorICAgICBj YXNlIFFFdmVudDo6S2V5UmVsZWFzZTogeworICAgICAgICAgUUtleUV2ZW50ICprID0gc3RhdGlj X2Nhc3Q8UUtleUV2ZW50Kj4oZSk7CistICAgICAgICBpZiAoIWstPmlzQXV0b1JlcGVhdCgpICYm IChrLT5rZXkoKSA9PSBRdDo6S2V5X1NlbGVjdCB8fCBrLT5rZXkoKSA9PSBRdDo6S2V5X1NwYWNl KSkgeworKyAgICAgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRp b25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NL ZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1 ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYg YnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKHN0YXRpY19jYXN0PFF0OjpLZXk+KGstPmtleSgpKSkp IHsKKyAgICAgICAgICAgICBib29sIHRvZ2dsZSA9IChkLT5wcmVzc2VkQ29udHJvbCA9PSBRU3R5 bGU6OlNDX0dyb3VwQm94TGFiZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBkLT5w cmVzc2VkQ29udHJvbCA9PSBRU3R5bGU6OlNDX0dyb3VwQm94Q2hlY2tCb3gpOworICAgICAgICAg ICAgIGQtPnByZXNzZWRDb250cm9sID0gUVN0eWxlOjpTQ19Ob25lOworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMv d2lkZ2V0cy9xbGFiZWwuY3BwCitpbmRleCAzMGZmODBjYmIwLi5jZjI2MDVjMTdjIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNwcAorKysrIGIvcXRiYXNl L3NyYy93aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNwcAorQEAgLTQyMSw5ICs0MjEsNiBAQCB2b2lk IFFMYWJlbDo6c2V0UGl4bWFwKGNvbnN0IFFQaXhtYXAgJnBpeG1hcCkKKyAgICAgICAgIGQtPnBp eG1hcCA9IG5ldyBRUGl4bWFwKHBpeG1hcCk7CisgICAgIH0KKyAKKy0gICAgaWYgKGQtPnBpeG1h cC0+ZGVwdGgoKSA9PSAxICYmICFkLT5waXhtYXAtPm1hc2soKSkKKy0gICAgICAgIGQtPnBpeG1h cC0+c2V0TWFzaygqKChRQml0bWFwICopZC0+cGl4bWFwKSk7CistCisgICAgIGQtPnVwZGF0ZUxh YmVsKCk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0 b29sYmFyYXJlYWxheW91dC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xdG9vbGJh cmFyZWFsYXlvdXQuY3BwCitpbmRleCA0OTNjMDk0Y2MxLi5kNWY0YjU5MDE3IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcAorKysr IGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcAorQEAg LTEzNjcsNyArMTM2Nyw3IEBAIGJvb2wgUVRvb2xCYXJBcmVhTGF5b3V0OjpyZXN0b3JlU3RhdGUo UURhdGFTdHJlYW0gJnN0cmVhbSwgY29uc3QgUUxpc3Q8UVRvb2xCYXIqCisgICAgICAgICAgICAg ICAgIGl0ZW0ud2lkZ2V0SXRlbSA9IG5ldyBRV2lkZ2V0SXRlbVYyKHRvb2xCYXIpOworICAgICAg ICAgICAgICAgICB0b29sQmFyLT5zZXRPcmllbnRhdGlvbihmbG9hdGluZyA/ICgoc2hvd24gJiAy KSA/IFF0OjpWZXJ0aWNhbCA6IFF0OjpIb3Jpem9udGFsKSA6IGRvY2subyk7CisgICAgICAgICAg ICAgICAgIHRvb2xCYXItPnNldFZpc2libGUoc2hvd24gJiAxKTsKKy0gICAgICAgICAgICAgICAg dG9vbEJhci0+ZF9mdW5jKCktPnNldFdpbmRvd1N0YXRlKGZsb2F0aW5nLCB0cnVlLCByZWN0KTsK KysgICAgICAgICAgICAgICAgdG9vbEJhci0+ZF9mdW5jKCktPnNldFdpbmRvd1N0YXRlKGZsb2F0 aW5nLCBmYWxzZSwgcmVjdCk7CisgCisgICAgICAgICAgICAgICAgIGl0ZW0ucHJlZmVycmVkU2l6 ZSA9IGl0ZW0uc2l6ZTsKKyAgICAgICAgICAgICAgICAgbGluZS50b29sQmFySXRlbXMuYXBwZW5k KGl0ZW0pOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25j dXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAgYi9x dGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0 X3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwuY3BwCitpbmRleCAyMTJjMGEyZTEzLi4zYzc3YjFi YTBiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJl bnRpdGVyYXRla2VybmVsL3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcAorKysrIGIv cXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsL3Rz dF9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcAorQEAgLTEyNiw4ICsxMjYsNyBAQCBwdWJs aWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6aW5zdGFudGlhdGUo KQorIHsKKy0gICAgYXV0byBmdXR1cmUgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgUHJpbnRGb3Io MCwgNDApKS5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgIGZ1dHVyZS53YWl0Rm9yRmluaXNo ZWQoKTsKKysgICAgc3RhcnRUaHJlYWRFbmdpbmUobmV3IFByaW50Rm9yKDAsIDQwKSkuc3RhcnRC bG9ja2luZygpOworICAgICBRQ09NUEFSRShpdGVyYXRpb25zLmxvYWRSZWxheGVkKCksIDQwKTsK KyB9CisgCitAQCAtMTY2LDEwICsxNjUsOCBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRl S2VybmVsOjpzdHJlc3N0ZXN0KCkKKyAgICAgY29uc3QgaW50IHRpbWVzID0gNTA7CisgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgdGltZXM7ICsraSkgeworICAgICAgICAgY291bnRlci5zdG9yZVJl bGF4ZWQoMCk7CistICAgICAgICAvLyBUaHJlYWRFbmdpbmUgd2lsbCBkZWxldGUgZiB3aGVuIGl0 IGZpbmlzaGVzCistICAgICAgICBhdXRvIGYgPSBuZXcgQ291bnRGb3IoMCwgaXRlcmF0aW9ucyk7 CistICAgICAgICBhdXRvIGZ1dHVyZSA9IGYtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAg ICAgIGZ1dHVyZS53YWl0Rm9yRmluaXNoZWQoKTsKKysgICAgICAgIENvdW50Rm9yIGYoMCwgaXRl cmF0aW9ucyk7CisrICAgICAgICBmLnN0YXJ0QmxvY2tpbmcoKTsKKyAgICAgICAgIFFDT01QQVJF KGNvdW50ZXIubG9hZFJlbGF4ZWQoKSwgaXRlcmF0aW9ucyk7CisgICAgIH0KKyB9CitAQCAtMTc3 LDExICsxNzQsOCBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVsOjpzdHJlc3N0 ZXN0KCkKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVsOjpub0l0ZXJhdGlvbnMo KQorIHsKKyAgICAgY29uc3QgaW50IHRpbWVzID0gMjAwMDA7CistICAgIGZvciAoaW50IGkgPSAw OyBpIDwgdGltZXM7ICsraSkgeworLSAgICAgICAgYXV0byBmdXR1cmUgPSBzdGFydFRocmVhZEVu Z2luZShuZXcgSXRlcmF0ZUtlcm5lbDxUZXN0SXRlcmF0b3IsIHZvaWQ+KDAsIDApKQorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgICAg ICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CistICAgIH0KKysgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCB0aW1lczsgKytpKQorKyAgICAgICAgc3RhcnRUaHJlYWRFbmdpbmUobmV3IEl0ZXJhdGVL ZXJuZWw8VGVzdEl0ZXJhdG9yLCB2b2lkPigwLCAwKSkuc3RhcnRCbG9ja2luZygpOworIH0KKyAK KyBRTXV0ZXggdGhyZWFkc011dGV4OworQEAgLTIzNiwxMCArMjMwLDggQEAgdm9pZCB0c3RfUXRD b25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6dGhyb3R0bGluZygpCisgCisgICAgIHRocmVhZHMuY2xl YXIoKTsKKyAKKy0gICAgLy8gVGhyZWFkRW5naW5lIHdpbGwgZGVsZXRlIGYgd2hlbiBpdCBmaW5p c2hlcworLSAgICBhdXRvIGYgPSBuZXcgVGhyb3R0bGVGb3IoMCwgdG90YWxJdGVyYXRpb25zKTsK Ky0gICAgYXV0byBmdXR1cmUgPSBmLT5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgIGZ1dHVy ZS53YWl0Rm9yRmluaXNoZWQoKTsKKysgICAgVGhyb3R0bGVGb3IgZigwLCB0b3RhbEl0ZXJhdGlv bnMpOworKyAgICBmLnN0YXJ0QmxvY2tpbmcoKTsKKyAKKyAgICAgUUNPTVBBUkUoaXRlcmF0aW9u cy5sb2FkUmVsYXhlZCgpLCB0b3RhbEl0ZXJhdGlvbnMpOworIAorZGlmZiAtLWdpdCBhL3F0YmFz ZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNv bmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9x dGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAK K2luZGV4IGFjN2JlN2FjZGQuLjgxYmM2NGM4ZDkgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMv YXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90c3RfcXRjb25jdXJyZW50 dGhyZWFkZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNv bmN1cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKK0BA IC02NSw5ICs2NSwxNiBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFk RW5naW5lOjpydW5EaXJlY3RseSgpCisgeworLSAgICBQcmludFVzZXIgKmVuZ2luZSA9IG5ldyBQ cmludFVzZXIoKTsKKy0gICAgUUZ1dHVyZTx2b2lkPiBmID0gZW5naW5lLT5zdGFydEFzeW5jaHJv bm91c2x5KCk7CistICAgIGYud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIHsKKysgICAgICAgIFBy aW50VXNlciBlbmdpbmU7CisrICAgICAgICBlbmdpbmUuc3RhcnRTaW5nbGVUaHJlYWRlZCgpOwor KyAgICAgICAgZW5naW5lLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgfQorKyAgICB7CisrICAgICAg ICBQcmludFVzZXIgKmVuZ2luZSA9IG5ldyBQcmludFVzZXIoKTsKKysgICAgICAgIFFGdXR1cmU8 dm9pZD4gZiA9IGVuZ2luZS0+c3RhcnRBc3luY2hyb25vdXNseSgpOworKyAgICAgICAgZi53YWl0 Rm9yRmluaXNoZWQoKTsKKysgICAgfQorIH0KKyAKKyBjbGFzcyBTdHJpbmdSZXN1bHRVc2VyIDog cHVibGljIFRocmVhZEVuZ2luZTxRU3RyaW5nPgorQEAgLTk5LDEwICsxMDYsOCBAQCBwdWJsaWM6 CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpyZXN1bHQoKQorIHsKKy0g ICAgLy8gVGhyZWFkRW5naW5lIHdpbGwgZGVsZXRlICdlbmdpbmUnIHdoZW4gaXQgZmluaXNoZXMK Ky0gICAgYXV0byBlbmdpbmUgPSBuZXcgU3RyaW5nUmVzdWx0VXNlcigpOworLSAgICBhdXRvIGZ1 dHVyZSA9IGVuZ2luZS0+c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBRQ09NUEFSRShmdXR1 cmUucmVzdWx0KCksIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgU3RyaW5nUmVzdWx0VXNlciBlbmdp bmU7CisrICAgIFFDT01QQVJFKCplbmdpbmUuc3RhcnRCbG9ja2luZygpLCBRU3RyaW5nKCJGb28i KSk7CisgfQorIAorIGNsYXNzIFZvaWRSZXN1bHRVc2VyIDogcHVibGljIFRocmVhZEVuZ2luZTx2 b2lkPgorQEAgLTEyOCw5ICsxMzMsMTcgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3Vy cmVudFRocmVhZEVuZ2luZTo6cnVuVGhyb3VnaFN0YXJ0ZXIoKQorIHsKKy0gICAgVGhyZWFkRW5n aW5lU3RhcnRlcjxRU3RyaW5nPiBzdGFydGVyID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFN0cmlu Z1Jlc3VsdFVzZXIoKSk7CistICAgIFFGdXR1cmU8UVN0cmluZz4gZiA9IHN0YXJ0ZXIuc3RhcnRB c3luY2hyb25vdXNseSgpOworLSAgICBRQ09NUEFSRShmLnJlc3VsdCgpLCBRU3RyaW5nKCJGb28i KSk7CisrICAgIHsKKysgICAgICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4gc3RhcnRl ciA9IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBTdHJpbmdSZXN1bHRVc2VyKCkpOworKyAgICAgICAg UUZ1dHVyZTxRU3RyaW5nPiAgZiA9IHN0YXJ0ZXIuc3RhcnRBc3luY2hyb25vdXNseSgpOworKyAg ICAgICAgUUNPTVBBUkUoZi5yZXN1bHQoKSwgUVN0cmluZygiRm9vIikpOworKyAgICB9CisrCisr ICAgIHsKKysgICAgICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4gc3RhcnRlciA9IHN0 YXJ0VGhyZWFkRW5naW5lKG5ldyBTdHJpbmdSZXN1bHRVc2VyKCkpOworKyAgICAgICAgUVN0cmlu ZyBzdHIgPSBzdGFydGVyLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIFFDT01QQVJFKHN0ciwg UVN0cmluZygiRm9vIikpOworKyAgICB9CisgfQorIAorIGNsYXNzIENhbmNlbFVzZXIgOiBwdWJs aWMgVGhyZWFkRW5naW5lPHZvaWQ+CitAQCAtMjEzLDYgKzIyNiwxMiBAQCB2b2lkIHRzdF9RdENv bmN1cnJlbnRUaHJlYWRFbmdpbmU6OnRocm90dGxlKCkKKyAgICAgICAgIGYud2FpdEZvckZpbmlz aGVkKCk7CisgICAgICAgICBRQ09NUEFSRShjb3VudC5sb2FkUmVsYXhlZCgpLCAwKTsKKyAgICAg fQorKworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdHM7ICsraSkgeworKyAgICAgICAg VGhyb3R0bGVBbHdheXNVc2VyIHQ7CisrICAgICAgICB0LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAg ICAgIFFDT01QQVJFKGNvdW50LmxvYWRSZWxheGVkKCksIDApOworKyAgICB9CisgfQorIAorIFFT ZXQ8UVRocmVhZCAqPiB0aHJlYWRzOworQEAgLTI0OSwxNyArMjY4LDM1IEBAIHZvaWQgdHN0X1F0 Q29uY3VycmVudFRocmVhZEVuZ2luZTo6dGhyZWFkQ291bnQoKQorIHsKKyAgICAgY29uc3QgaW50 IHJlcGVhdHMgPSAxMDsKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXRzOyArK2kpIHsK KysgICAgICAgIFRocmVhZENvdW50VXNlciB0OworKyAgICAgICAgdC5zdGFydEJsb2NraW5nKCk7 CisrICAgICAgICBpbnQgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBpbnQgY291 bnRfZXhwZWN0ZWQgPSBRVGhyZWFkUG9vbDo6Z2xvYmFsSW5zdGFuY2UoKS0+bWF4VGhyZWFkQ291 bnQoKSArIDE7IC8vICsxIGZvciB0aGUgbWFpbiB0aHJlYWQuCisrICAgICAgICBpZiAoY291bnQg IT0gY291bnRfZXhwZWN0ZWQpCisrICAgICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRCVUct MjMzMzMiLCBBYm9ydCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudCwgY291bnRfZXhwZWN0ZWQp OworKworICAgICAgICAgKG5ldyBUaHJlYWRDb3VudFVzZXIoKSktPnN0YXJ0QXN5bmNocm9ub3Vz bHkoKS53YWl0Rm9yRmluaXNoZWQoKTsKKy0gICAgICAgIGNvbnN0IGF1dG8gY291bnQgPSB0aHJl YWRzLmNvdW50KCk7CistICAgICAgICBjb25zdCBhdXRvIG1heFRocmVhZENvdW50ID0gUVRocmVh ZFBvb2w6Omdsb2JhbEluc3RhbmNlKCktPm1heFRocmVhZENvdW50KCk7CistICAgICAgICBRVkVS SUZZKGNvdW50IDw9IG1heFRocmVhZENvdW50KTsKKy0gICAgICAgIFFWRVJJRlkoIXRocmVhZHMu Y29udGFpbnMoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKSk7CisrICAgICAgICBjb3VudCA9IHRo cmVhZHMuY291bnQoKTsKKysgICAgICAgIGNvdW50X2V4cGVjdGVkID0gUVRocmVhZFBvb2w6Omds b2JhbEluc3RhbmNlKCktPm1heFRocmVhZENvdW50KCk7CisrICAgICAgICBpZiAoY291bnQgIT0g Y291bnRfZXhwZWN0ZWQpCisrICAgICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRCVUctMjMz MzMiLCBBYm9ydCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudCwgY291bnRfZXhwZWN0ZWQpOwor ICAgICB9CisgCisgICAgIC8vIFNldCB0aGUgZmluaXNoIGZsYWcgaW1tZWRpYXRlbHksIHRoaXMg c2hvdWxkIGdpdmUgdXMgb25lIHRocmVhZCBvbmx5LgorICAgICBmb3IgKGludCBpID0gMDsgaSA8 IHJlcGVhdHM7ICsraSkgeworKyAgICAgICAgVGhyZWFkQ291bnRVc2VyIHQodHJ1ZSAvKmZpbmlz aEltbWVkaWF0ZWx5Ki8pOworKyAgICAgICAgdC5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBp bnQgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBpZiAoY291bnQgIT0gMSkKKysg ICAgICAgICAgICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKysgICAg ICAgIFFDT01QQVJFKGNvdW50LCAxKTsKKysKKyAgICAgICAgIChuZXcgVGhyZWFkQ291bnRVc2Vy KHRydWUgLypmaW5pc2hJbW1lZGlhdGVseSovKSktPnN0YXJ0QXN5bmNocm9ub3VzbHkoKS53YWl0 Rm9yRmluaXNoZWQoKTsKKy0gICAgICAgIGNvbnN0IGF1dG8gY291bnQgPSB0aHJlYWRzLmNvdW50 KCk7CisrICAgICAgICBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGlmIChjb3Vu dCAhPSAxKQorKyAgICAgICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJv cnQpOworICAgICAgICAgUUNPTVBBUkUoY291bnQsIDEpOworICAgICAgICAgUVZFUklGWSghdGhy ZWFkcy5jb250YWlucyhRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkpKTsKKyAgICAgfQorQEAgLTQw MCw2ICs0MzcsNyBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5n aW5lOjpleGNlcHRpb25zKCkKKyB7CisrICAgIC8vIEFzeW5jaHJvbm91cyBtb2RlOgorICAgICB7 CisgICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOworICAgICAgICAgdHJ5ICB7CitAQCAtNDEy LDYgKzQ1MCwzMiBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OmV4Y2VwdGlv bnMoKQorICAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7 CisgICAgIH0KKyAKKysgICAgLy8gQmxvY2tpbmcgbW9kZToKKysgICAgLy8gdGVzdCB0aHJvd2lu ZyB0aGUgZXhjZXB0aW9uIGZyb20gYSB3b3JrZXIgdGhyZWFkLgorKyAgICB7CisrICAgICAgICBi b29sIGNhdWdodCA9IGZhbHNlOworKyAgICAgICAgdHJ5ICB7CisrICAgICAgICAgICAgUXRDb25j dXJyZW50RXhjZXB0aW9uVGhyb3dlciBlKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSk7CisrICAg ICAgICAgICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNhdGNoIChjb25zdCBRRXhj ZXB0aW9uICYpIHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0cnVlOworKyAgICAgICAgfQorKyAg ICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisrICAgIH0K KysKKysgICAgLy8gdGVzdCB0aHJvd2luZyB0aGUgZXhjZXB0aW9uIGZyb20gdGhlIG1haW4gdGhy ZWFkIChkaWZmZXJlbnQgY29kZSBwYXRoKQorKyAgICB7CisrICAgICAgICBib29sIGNhdWdodCA9 IGZhbHNlOworKyAgICAgICAgdHJ5ICB7CisrICAgICAgICAgICAgUXRDb25jdXJyZW50RXhjZXB0 aW9uVGhyb3dlciBlKDApOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygpOworKyAgICAg ICAgfSBjYXRjaCAoY29uc3QgUUV4Y2VwdGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1Z2h0ID0g dHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0 IGV4Y2VwdGlvbiIpOworKyAgICB9CisrCisrICAgIC8vIEFzeW5jaHJvbm91cyBtb2RlOgorICAg ICB7CisgICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOworICAgICAgICAgdHJ5ICB7CitAQCAt NDIzLDYgKzQ4NywzMSBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OmV4Y2Vw dGlvbnMoKQorICAgICAgICAgfQorICAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBn ZXQgZXhjZXB0aW9uIik7CisgICAgIH0KKysKKysgICAgLy8gQmxvY2tpbmcgbW9kZToKKysgICAg Ly8gdGVzdCB0aHJvd2luZyB0aGUgZXhjZXB0aW9uIGZyb20gYSB3b3JrZXIgdGhyZWFkLgorKyAg ICB7CisrICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOworKyAgICAgICAgdHJ5ICB7CisrICAg ICAgICAgICAgVW5yZWxhdGVkRXhjZXB0aW9uVGhyb3dlciBlKFFUaHJlYWQ6OmN1cnJlbnRUaHJl YWQoKSk7CisrICAgICAgICAgICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNhdGNo IChjb25zdCBRVW5oYW5kbGVkRXhjZXB0aW9uICYpIHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0 cnVlOworKyAgICAgICAgfQorKyAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQg ZXhjZXB0aW9uIik7CisrICAgIH0KKysKKysgICAgLy8gdGVzdCB0aHJvd2luZyB0aGUgZXhjZXB0 aW9uIGZyb20gdGhlIG1haW4gdGhyZWFkIChkaWZmZXJlbnQgY29kZSBwYXRoKQorKyAgICB7Cisr ICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOworKyAgICAgICAgdHJ5ICB7CisrICAgICAgICAg ICAgVW5yZWxhdGVkRXhjZXB0aW9uVGhyb3dlciBlKDApOworKyAgICAgICAgICAgIGUuc3RhcnRC bG9ja2luZygpOworKyAgICAgICAgfSBjYXRjaCAoY29uc3QgUVVuaGFuZGxlZEV4Y2VwdGlvbiAm KSB7CisrICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFW RVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAgICB9CisgfQorIAor ICNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZl ci90c3RfcWJ1ZmZlci5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3FidWZmZXIv dHN0X3FidWZmZXIuY3BwCitpbmRleCA0OTY4NzQyMTEwLi5mNGMzZmI3MTFkIDEwMDY0NAorLS0t IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcAor KysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNw cAorQEAgLTQyLDYgKzQyLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB3cml0ZUJsb2Nr X2RhdGEoKTsKKyAgICAgdm9pZCB3cml0ZUJsb2NrKCk7CisgICAgIHZvaWQgc2VlaygpOworKyAg ICB2b2lkIGludmFsaWRTZWVrcygpOworICAgICB2b2lkIHNlZWtUZXN0X2RhdGEoKTsKKyAgICAg dm9pZCBzZWVrVGVzdCgpOworICAgICB2b2lkIHJlYWRfcmF3ZGF0YSgpOworQEAgLTI4Niw2ICsy ODcsMjkgQEAgdm9pZCB0c3RfUUJ1ZmZlcjo6c2VlaygpCisgICAgIFFDT01QQVJFKGJ1ZmZlci5z aXplKCksIHBvcyk7CisgfQorIAorK3ZvaWQgdHN0X1FCdWZmZXI6OmludmFsaWRTZWVrcygpCisr eworKyAgICBpZiBjb25zdGV4cHIgKHNpemVvZihxc2l6ZXR5cGUpID09IHNpemVvZihxaW50NjQp KSB7CisrICAgICAgICAvLyBzaXplb2YocXNpemV0eXBlKSA9PSBzaXplb2YocWludDY0KSwgc28g KzEgd291bGQgb3ZlcmZsb3cKKysgICAgICAgIFFTS0lQKCJUaGlzIGlzIGEgMzItYml0LW9ubHkg dGVzdC4iKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIFFCdWZmZXIgYnVmZmVyOworKyAgICAg ICAgYnVmZmVyLm9wZW4oUUlPRGV2aWNlOjpXcml0ZU9ubHkpOworKyAgICAgICAgUUNPTVBBUkUo YnVmZmVyLmJ1ZmZlcigpLnNpemUoKSwgcXNpemV0eXBlKDApKTsKKysgICAgICAgIFFDT01QQVJF KGJ1ZmZlci5wb3MoKSwgcWludDY0KDApKTsKKysgICAgICAgIGNvbnN0ZXhwciBxaW50NjQgTWF4 UUJ5dGVBcnJheUNhcGFjaXR5ID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8cXNpemV0eXBlPjo6bWF4 KSgpOworKyAgICAgICAgLy8gdGhpcyBzaG91bGQgZmFpbCBmYXN0LCBub3QgYWZ0ZXIgdHJ5aW5n IHRvIGFsbG9jYXRlIG5lYXJseSAyIEdpQiBvZiBkYXRhLAorKyAgICAgICAgLy8gcG90ZW50aWFs bHkgY3Jhc2hpbmcgaW4gdGhlIHByb2Nlc3M6CisrICAgICAgICBRVkVSSUZZKCFidWZmZXIuc2Vl aygyICogTWF4UUJ5dGVBcnJheUNhcGFjaXR5IC0gMSkpOworKyAgICAgICAgUUNPTVBBUkUoYnVm ZmVyLmJ1ZmZlcigpLnNpemUoKSwgcXNpemV0eXBlKDApKTsKKysgICAgICAgIFFDT01QQVJFKGJ1 ZmZlci5wb3MoKSwgcWludDY0KDApKTsKKysgICAgICAgIC8vIGRpdHRvOgorKyAgICAgICAgUVZF UklGWSghYnVmZmVyLnNlZWsoTWF4UUJ5dGVBcnJheUNhcGFjaXR5ICsgMSkpOworKyAgICAgICAg UUNPTVBBUkUoYnVmZmVyLmJ1ZmZlcigpLnNpemUoKSwgcXNpemV0eXBlKDApKTsKKysgICAgICAg IFFDT01QQVJFKGJ1ZmZlci5wb3MoKSwgcWludDY0KDApKTsKKysgICAgfQorK30KKysKKyB2b2lk IHRzdF9RQnVmZmVyOjpzZWVrVGVzdF9kYXRhKCkKKyB7CisgICAgIHdyaXRlQmxvY2tfZGF0YSgp OworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWlvZGV2aWNlL3Rz dF9xaW9kZXZpY2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2Uv dHN0X3Fpb2RldmljZS5jcHAKK2luZGV4IGRhNTMyNzU5NGMuLjRhMDRlMGY3YzYgMTAwNjQ0Cist LS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNl LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fp b2RldmljZS5jcHAKK0BAIC01NjEsNyArNTYxLDggQEAgcHJvdGVjdGVkOgorICAgICBxaW50NjQg cmVhZERhdGEoY2hhciAqZGF0YSwgcWludDY0IG1heFNpemUpIG92ZXJyaWRlCisgICAgIHsKKyAg ICAgICAgIG1heFNpemUgPSBxTWluKG1heFNpemUsIHFpbnQ2NChidWYtPnNpemUoKSAtIG9mZnNl dCkpOworLSAgICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi0+Y29uc3REYXRhKCkgKyBvZmZzZXQsIG1h eFNpemUpOworKyAgICAgICAgaWYgKG1heFNpemUgPiAwKQorKyAgICAgICAgICAgIG1lbWNweShk YXRhLCBidWYtPmNvbnN0RGF0YSgpICsgb2Zmc2V0LCBtYXhTaXplKTsKKyAgICAgICAgIG9mZnNl dCArPSBtYXhTaXplOworICAgICAgICAgcmV0dXJuIG1heFNpemU7CisgICAgIH0KK0BAIC02MDQs MTMgKzYwNSwxNSBAQCBwcm90ZWN0ZWQ6CisgICAgIHFpbnQ2NCByZWFkRGF0YShjaGFyICpkYXRh LCBxaW50NjQgbWF4U2l6ZSkgb3ZlcnJpZGUKKyAgICAgeworICAgICAgICAgbWF4U2l6ZSA9IHFN aW4obWF4U2l6ZSwgcWludDY0KGJ1Zi5zaXplKCkgLSBwb3MoKSkpOworLSAgICAgICAgbWVtY3B5 KGRhdGEsIGJ1Zi5jb25zdERhdGEoKSArIHBvcygpLCBtYXhTaXplKTsKKysgICAgICAgIGlmICht YXhTaXplID4gMCkKKysgICAgICAgICAgICBtZW1jcHkoZGF0YSwgYnVmLmNvbnN0RGF0YSgpICsg cG9zKCksIG1heFNpemUpOworICAgICAgICAgcmV0dXJuIG1heFNpemU7CisgICAgIH0KKyAgICAg cWludDY0IHdyaXRlRGF0YShjb25zdCBjaGFyICpkYXRhLCBxaW50NjQgbWF4U2l6ZSkgb3ZlcnJp ZGUKKyAgICAgeworICAgICAgICAgbWF4U2l6ZSA9IHFNaW4obWF4U2l6ZSwgcWludDY0KGJ1Zi5z aXplKCkgLSBwb3MoKSkpOworLSAgICAgICAgbWVtY3B5KGJ1Zi5kYXRhKCkgKyBwb3MoKSwgZGF0 YSwgbWF4U2l6ZSk7CisrICAgICAgICBpZiAobWF4U2l6ZSA+IDApCisrICAgICAgICAgICAgbWVt Y3B5KGJ1Zi5kYXRhKCkgKyBwb3MoKSwgZGF0YSwgbWF4U2l6ZSk7CisgICAgICAgICByZXR1cm4g bWF4U2l6ZTsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVs aWIvaW8vcXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVs aWIvaW8vcXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcAoraW5kZXggZGI2MGJlYWQ2NC4uZjM0NWE0 NDQxNCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcXByb2Nlc3Mv dHN0X3Fwcm9jZXNzLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJv Y2Vzcy90c3RfcXByb2Nlc3MuY3BwCitAQCAtMSw3ICsxLDggQEAKKyAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorICoqCisgKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKy0q KiBDb3B5cmlnaHQgKEMpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24uCisrKiogQ29weXJpZ2h0IChD KSAyMDIwIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgSW50ZWwg Q29ycG9yYXRpb24uCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLwor ICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qgc3VpdGUgb2YgdGhlIFF0IFRv b2xraXQuCitAQCAtMTUwLDYgKzE1MSw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgc3Rh cnRTdG9wU3RhcnRTdG9wQnVmZmVycygpOworICAgICB2b2lkIHByb2Nlc3NFdmVudHNJbkFSZWFk eVJlYWRTbG90X2RhdGEoKTsKKyAgICAgdm9pZCBwcm9jZXNzRXZlbnRzSW5BUmVhZHlSZWFkU2xv dCgpOworKyAgICB2b2lkIHN0YXJ0RnJvbUN1cnJlbnRXb3JraW5nRGlyX2RhdGEoKTsKKysgICAg dm9pZCBzdGFydEZyb21DdXJyZW50V29ya2luZ0RpcigpOworIAorICAgICAvLyBrZWVwIHRoZXNl IGF0IHRoZSBlbmQsIHNpbmNlIHRoZXkgdXNlIGxvdHMgb2YgcHJvY2Vzc2VzIGFuZCBzb21ldGlt ZXMKKyAgICAgLy8gY2F1c2VkIG9ic2N1cmUgZmFpbHVyZXMgdG8gb2NjdXIgaW4gdGVzdHMgdGhh dCBmb2xsb3dlZCB0aGVtIChlc3AuIG9uIHRoZSBNYWMpCitAQCAtMjczMSw1ICsyNzM0LDk0IEBA IHZvaWQgdHN0X1FQcm9jZXNzOjpmaW5pc2hQcm9jZXNzQmVmb3JlUmVhZGluZ0RvbmVfZGVwcmVj YXRlZCgpCisgCisgI2VuZGlmCisgCisrZW51bSBjbGFzcyBDaGRpck1vZGUgeworKyAgICBOb25l ID0gMCwKKysgICAgSW5QYXJlbnQsCisrICAgIEluQ2hpbGQKKyt9OworK1FfREVDTEFSRV9NRVRB VFlQRShDaGRpck1vZGUpCisrCisrdm9pZCB0c3RfUVByb2Nlc3M6OnN0YXJ0RnJvbUN1cnJlbnRX b3JraW5nRGlyX2RhdGEoKQorK3sKKysgICAgcVJlZ2lzdGVyTWV0YVR5cGU8Q2hkaXJNb2RlPigp OworKyAgICBRVGVzdDo6YWRkQ29sdW1uPFFTdHJpbmc+KCJwcm9ncmFtUHJlZml4Iik7CisrICAg IFFUZXN0OjphZGRDb2x1bW48Q2hkaXJNb2RlPigiY2hkaXJNb2RlIik7CisrICAgIFFUZXN0Ojph ZGRDb2x1bW48Ym9vbD4oInN1Y2Nlc3MiKTsKKysKKysgICAgY29uc3RleHByIGJvb2wgSXNXaW5k b3dzID0gdHJ1ZQorKyNpZmRlZiBRX09TX1VOSVgKKysgICAgICAgICAgICAmJiBmYWxzZQorKyNl bmRpZgorKyAgICAgICAgICAgIDsKKysKKysgICAgLy8gYmFzZWxpbmU6IHRyeWluZyB0byBleGVj dXRlIHRoZSBkaXJlY3RvcnksIHRoaXMgY2FuJ3QgcG9zc2libHkgc3VjY2VlZCEKKysgICAgUVRl c3Q6Om5ld1JvdygicGxhaW4tc2FtZS1jd2QiKSA8PCBRU3RyaW5nKCkgPDwgQ2hkaXJNb2RlOjpO b25lIDw8IGZhbHNlOworKworKyAgICAvLyBjcm9zcy1wbGF0Zm9ybSBiZWhhdmlvcjogbmVpdGhl ciBPUyBzZWFyY2hlcyB0aGUgc2V0V29ya2luZ0RpcmVjdG9yeSgpCisrICAgIC8vIGRpciB3aXRo b3V0ICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicGxhaW4tY2hpbGQtY2hkaXIiKSA8PCBRU3Ry aW5nKCkgPDwgQ2hkaXJNb2RlOjpJbkNoaWxkIDw8IGZhbHNlOworKworKyAgICAvLyBjcm9zcy1w bGF0Zm9ybSBiZWhhdmlvcjogYm90aCBPU2VzIHNlYXJjaCB0aGUgcGFyZW50J3MgQ1dEIHdpdGgg Ii4vIgorKyAgICBRVGVzdDo6bmV3Um93KCJwcmVmaXhlZC1wYXJlbnQtY2hkaXIiKSA8PCAiLi8i IDw8IENoZGlyTW9kZTo6SW5QYXJlbnQgPDwgdHJ1ZTsKKysKKysgICAgLy8gb3Bwb3NpdGUgYmVo YXZpb3JzOiBXaW5kb3dzIHNlYXJjaGVzIHRoZSBwYXJlbnQncyBDV0QgYW5kIFVuaXggc2VhcmNo ZXMKKysgICAgLy8gdGhlIGNoaWxkJ3Mgd2l0aCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3coInBy ZWZpeGVkLWNoaWxkLWNoZGlyIikgPDwgIi4vIiA8PCBDaGRpck1vZGU6OkluQ2hpbGQgPDwgIUlz V2luZG93czsKKysKKysgICAgLy8gV2luZG93cyBzZWFyY2hlcyB0aGUgcGFyZW50J3MgQ1dEIHdp dGhvdXQgIi4vIgorKyAgICBRVGVzdDo6bmV3Um93KCJwbGFpbi1wYXJlbnQtY2hkaXIiKSA8PCBR U3RyaW5nKCkgPDwgQ2hkaXJNb2RlOjpJblBhcmVudCA8PCBJc1dpbmRvd3M7CisrfQorKworK3Zv aWQgdHN0X1FQcm9jZXNzOjpzdGFydEZyb21DdXJyZW50V29ya2luZ0RpcigpCisreworKyAgICBR RkVUQ0goUVN0cmluZywgcHJvZ3JhbVByZWZpeCk7CisrICAgIFFGRVRDSChDaGRpck1vZGUsIGNo ZGlyTW9kZSk7CisrICAgIFFGRVRDSChib29sLCBzdWNjZXNzKTsKKysKKysgICAgUVByb2Nlc3Mg cHJvY2VzczsKKysgICAgcVJlZ2lzdGVyTWV0YVR5cGU8UVByb2Nlc3M6OlByb2Nlc3NFcnJvcj4o KTsKKysgICAgUVNpZ25hbFNweSBlcnJvclNweSgmcHJvY2VzcywgJlFQcm9jZXNzOjplcnJvck9j Y3VycmVkKTsKKysgICAgUVZFUklGWShlcnJvclNweS5pc1ZhbGlkKCkpOworKworKyAgICAvLyBi b3RoIHRoZSBkaXIgbmFtZSBhbmQgdGhlIGV4ZWN1dGFibGUgbmFtZQorKyAgICBjb25zdCBRU3Ry aW5nIHRhcmdldCA9IFFTdHJpbmdMaXRlcmFsKCJ0ZXN0UHJvY2Vzc05vcm1hbCIpOworKyAgICBw cm9jZXNzLnNldFByb2dyYW0ocHJvZ3JhbVByZWZpeCArIHRhcmdldCk7CisrCisrI2lmZGVmIFFf T1NfVU5JWAorKyAgICAvLyBSZXNldCBQQVRILCB0byBiZSBzdXJlIGl0IGRvZXNuJ3QgY29udGFp biAuIG9yIHRoZSBlbXB0eSBwYXRoLgorKyAgICAvLyBXZSBjYW4ndCBkbyB0aGlzIG9uIFdpbmRv d3MgYmVjYXVzZSBETExzIGFyZSBzZWFyY2hlZCBpbiBQQVRICisrICAgIC8vIGFuZCBXaW5kb3dz IGFsd2F5cyBzZWFyY2hlcyAiLiIgYW55d2F5LgorKyAgICBhdXRvIHJlc3RvcmVFbnYgPSBxU2Nv cGVHdWFyZChbb2xkID0gcWdldGVudigiUEFUSCIpXSB7CisrICAgICAgICBxcHV0ZW52KCJQQVRI Iiwgb2xkKTsKKysgICAgfSk7CisrICAgIHFwdXRlbnYoIlBBVEgiLCAiLyIpOworKyNlbmRpZgor KworKyAgICBzd2l0Y2ggKGNoZGlyTW9kZSkgeworKyAgICBjYXNlIENoZGlyTW9kZTo6SW5QYXJl bnQ6IHsKKysgICAgICAgIGF1dG8gcmVzdG9yZUN3ZCA9IHFTY29wZUd1YXJkKFtvbGQgPSBRRGly OjpjdXJyZW50UGF0aCgpXSB7CisrICAgICAgICAgICAgUURpcjo6c2V0Q3VycmVudChvbGQpOwor KyAgICAgICAgfSk7CisrICAgICAgICBRVkVSSUZZKFFEaXI6OnNldEN1cnJlbnQodGFyZ2V0KSk7 CisrICAgICAgICBwcm9jZXNzLnN0YXJ0KCk7CisrICAgICAgICBicmVhazsKKysgICAgfQorKyAg ICBjYXNlIENoZGlyTW9kZTo6SW5DaGlsZDoKKysgICAgICAgIHByb2Nlc3Muc2V0V29ya2luZ0Rp cmVjdG9yeSh0YXJnZXQpOworKyAgICAgICAgUV9GQUxMVEhST1VHSCgpOworKyAgICBjYXNlIENo ZGlyTW9kZTo6Tm9uZToKKysgICAgICAgIHByb2Nlc3Muc3RhcnQoKTsKKysgICAgICAgIGJyZWFr OworKyAgICB9CisrCisrICAgIFFDT01QQVJFKHByb2Nlc3Mud2FpdEZvclN0YXJ0ZWQoKSwgc3Vj Y2Vzcyk7CisrICAgIFFDT01QQVJFKGVycm9yU3B5LmNvdW50KCksIGludCghc3VjY2VzcykpOwor KyAgICBpZiAoc3VjY2VzcykgeworKyAgICAgICAgUVZFUklGWShwcm9jZXNzLndhaXRGb3JGaW5p c2hlZCgpKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIFFDT01QQVJFKHByb2Nlc3MuZXJyb3Io KSwgUVByb2Nlc3M6OkZhaWxlZFRvU3RhcnQpOworKyAgICB9CisrfQorKworIFFURVNUX01BSU4o dHN0X1FQcm9jZXNzKQorICNpbmNsdWRlICJ0c3RfcXByb2Nlc3MubW9jIgorZGlmZiAtLWdpdCBh L3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNw cm94eW1vZGVsL3RzdF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLmNwcCBiL3F0YmFzZS90 ZXN0cy9hdXRvL2NvcmVsaWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVs L3RzdF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLmNwcAoraW5kZXggZTFlYTdhNDU1Mi4u OTA5NzJjYWE1NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaXRlbW1v ZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsL3RzdF9xY29uY2F0ZW5hdGV0YWJsZXNw cm94eW1vZGVsLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVtbW9kZWxz L3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5 bW9kZWwuY3BwCitAQCAtMTE3LDYgKzExNyw3IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9p ZCBzaG91bGRQcm9wYWdhdGVEcm9wQWZ0ZXJMYXN0Um93X2RhdGEoKTsKKyAgICAgdm9pZCBzaG91 bGRQcm9wYWdhdGVEcm9wQWZ0ZXJMYXN0Um93KCk7CisgICAgIHZvaWQgcXRidWc5MTc4OCgpOwor KyAgICB2b2lkIHF0YnVnOTE4NzgoKTsKKyAKKyBwcml2YXRlOgorICAgICBRU3RhbmRhcmRJdGVt TW9kZWwgbW9kOworQEAgLTg0Myw2ICs4NDQsMjIgQEAgdm9pZCB0c3RfUUNvbmNhdGVuYXRlVGFi bGVzUHJveHlNb2RlbDo6cXRidWc5MTc4OCgpCisgICAgIFFDT01QQVJFKHByb3h5Q29uY2F0LmNv bHVtbkNvdW50KCksIDApOworIH0KKyAKKyt2b2lkIHRzdF9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94 eU1vZGVsOjpxdGJ1ZzkxODc4KCkKKyt7CisrICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCBtOworKyAg ICBtLnNldFJvd0NvdW50KDQpOworKyAgICBtLnNldENvbHVtbkNvdW50KDQpOworKworKyAgICBR Q29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsIHBtOworKyAgICBRU29ydEZpbHRlclByb3h5TW9k ZWwgcHJveHlGaWx0ZXI7CisrICAgIHByb3h5RmlsdGVyLnNldFNvdXJjZU1vZGVsKCZwbSk7Cisr ICAgIHByb3h5RmlsdGVyLnNldEZpbHRlckZpeGVkU3RyaW5nKCJzb21ldGhpbmciKTsKKysgICAg cG0uYWRkU291cmNlTW9kZWwoJm0pOyAgLy8gVGhpcyBzaG91bGQgbm90IGFzc2VydAorKworKyAg ICBRQ09NUEFSRShwbS5jb2x1bW5Db3VudCgpLCA0KTsKKysgICAgUUNPTVBBUkUocG0ucm93Q291 bnQoKSwgNCk7CisrfQorKworIFFURVNUX0dVSUxFU1NfTUFJTih0c3RfUUNvbmNhdGVuYXRlVGFi bGVzUHJveHlNb2RlbCkKKyAKKyAjaW5jbHVkZSAidHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5 bW9kZWwubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIva2VybmVs L3FvYmplY3QvdHN0X3FvYmplY3QuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJu ZWwvcW9iamVjdC90c3RfcW9iamVjdC5jcHAKK2luZGV4IDliZDY2YzA4MzUuLmVkNGEwYmFlNWQg MTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3Rz dF9xb2JqZWN0LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9i amVjdC90c3RfcW9iamVjdC5jcHAKK0BAIC0xNTgsNiArMTU4LDcgQEAgcHJpdmF0ZSBzbG90czoK KyAgICAgdm9pZCBudWxsUmVjZWl2ZXIoKTsKKyAgICAgdm9pZCBmdW5jdG9yUmVmZXJlbmNlc0Nv bm5lY3Rpb24oKTsKKyAgICAgdm9pZCBkaXNjb25uZWN0RGlzY29ubmVjdHMoKTsKKysgICAgdm9p ZCBkZWNsYXJhdGl2ZURhdGEoKTsKKyB9OworIAorIHN0cnVjdCBRT2JqZWN0Q3JlYXRlZE9uU2h1 dGRvd24KK0BAIC03Njc5LDUgKzc2ODAsODEgQEAgdm9pZCB0c3RfUU9iamVjdDo6ZGlzY29ubmVj dERpc2Nvbm5lY3RzKCkKKyBRX1NUQVRJQ19BU1NFUlQoUXRQcml2YXRlOjpIYXNRX09CSkVDVF9N YWNybzx0c3RfUU9iamVjdD46OlZhbHVlKTsKKyBRX1NUQVRJQ19BU1NFUlQoIVF0UHJpdmF0ZTo6 SGFzUV9PQkpFQ1RfTWFjcm88U2libGluZ0RlbGV0ZXI+OjpWYWx1ZSk7CisgCisrI2lmZGVmIFFU X0JVSUxEX0lOVEVSTkFMCisrLyoKKysgICAgU2luY2UgUU9iamVjdFByaXZhdGUgc3RvcmVzIHRo ZSBkZWNsYXJhdGl2ZURhdGEgcG9pbnRlciBpbiBhIHVuaW9uIHdpdGggdGhlIHBvaW50ZXIKKysg ICAgdG8gdGhlIGN1cnJlbnRseSBkZXN0cm95ZWQgY2hpbGQsIGNhbGxzIHRvIHRoZSBRdERlY2xh cmF0aXZlIGhhbmRsZXJzIG5lZWQgdG8gYmUKKysgICAgY29ycmVjdGx5IGd1YXJkZWQuIFFUQlVH LTEwNTI4NgorKyovCisrbmFtZXNwYWNlIFF0RGVjbGFyYXRpdmUgeworK3N0YXRpYyBRQWJzdHJh Y3REZWNsYXJhdGl2ZURhdGEgKnRoZURhdGE7CisrCisrc3RhdGljIHZvaWQgZGVzdHJveWVkKFFB YnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgUU9iamVjdCAqKQorK3sKKysgICAgUUNPTVBB UkUoZGF0YSwgdGhlRGF0YSk7CisrfQorK3N0YXRpYyB2b2lkIHNpZ25hbEVtaXR0ZWQoUUFic3Ry YWN0RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBRT2JqZWN0ICosIGludCwgdm9pZCAqKikKKyt7Cisr ICAgIFFDT01QQVJFKGRhdGEsIHRoZURhdGEpOworK30KKysvLyB3ZSBjYW4ndCB1c2UgUUNPTVBB UkUgaW4gdGhlIG5leHQgdHdvIGZ1bmN0aW9ucywgYXMgdGhleSBkb24ndCByZXR1cm4gdm9pZAor K3N0YXRpYyBpbnQgcmVjZWl2ZXJzKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgY29u c3QgUU9iamVjdCAqLCBpbnQpCisreworKyAgICBRVGVzdDo6cUNvbXBhcmUoZGF0YSwgdGhlRGF0 YSwgImRhdGEiLCAidGhlRGF0YSIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisrICAgIHJldHVybiAw OworK30KKytzdGF0aWMgYm9vbCBpc1NpZ25hbENvbm5lY3RlZChRQWJzdHJhY3REZWNsYXJhdGl2 ZURhdGEgKmRhdGEsIGNvbnN0IFFPYmplY3QgKiwgaW50KQorK3sKKysgICAgUVRlc3Q6OnFDb21w YXJlKGRhdGEsIHRoZURhdGEsICJkYXRhIiwgInRoZURhdGEiLCBfX0ZJTEVfXywgX19MSU5FX18p OworKyAgICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrY2xhc3MgT2JqZWN0IDogcHVibGljIFFPYmpl Y3QKKyt7CisrICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAgICB1c2luZyBRT2JqZWN0OjpRT2Jq ZWN0OworKyAgICB+T2JqZWN0KCkKKysgICAgeworKyAgICAgICAgaWYgKE9iamVjdCAqcCA9IHN0 YXRpY19jYXN0PE9iamVjdCAqPihwYXJlbnQoKSkpCisrICAgICAgICAgICAgcC0+ZW1pdFNpZ25h bCgpOworKyAgICB9CisrCisrICAgIHZvaWQgZW1pdFNpZ25hbCgpCisrICAgIHsKKysgICAgICAg IGVtaXQgdGhlU2lnbmFsKCk7CisrICAgIH0KKysKKytzaWduYWxzOgorKyAgICB2b2lkIHRoZVNp Z25hbCgpOworK307CisrCisrfQorKyNlbmRpZgorKworK3ZvaWQgdHN0X1FPYmplY3Q6OmRlY2xh cmF0aXZlRGF0YSgpCisreworKyNpZmRlZiBRVF9CVUlMRF9JTlRFUk5BTAorKyAgICBRU2NvcGVk VmFsdWVSb2xsYmFjayBkZXN0cm95ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpkZXN0cm95 ZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZlOjpk ZXN0cm95ZWQpOworKyAgICBRU2NvcGVkVmFsdWVSb2xsYmFjayBzaWduYWxFbWl0dGVkKFFBYnN0 cmFjdERlY2xhcmF0aXZlRGF0YTo6c2lnbmFsRW1pdHRlZCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZlOjpzaWduYWxFbWl0dGVkKTsKKysgICAg UVNjb3BlZFZhbHVlUm9sbGJhY2sgcmVjZWl2ZXJzKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6 cmVjZWl2ZXJzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJh dGl2ZTo6cmVjZWl2ZXJzKTsKKysgICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sgaXNTaWduYWxDb25u ZWN0ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjppc1NpZ25hbENvbm5lY3RlZCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2ZTo6aXNT aWduYWxDb25uZWN0ZWQpOworKworKyAgICBRdERlY2xhcmF0aXZlOjpPYmplY3QgcDsKKysgICAg UU9iamVjdFByaXZhdGUgKnByaXYgPSBRT2JqZWN0UHJpdmF0ZTo6Z2V0KCZwKTsKKysgICAgcHJp di0+ZGVjbGFyYXRpdmVEYXRhID0gUXREZWNsYXJhdGl2ZTo6dGhlRGF0YSA9IG5ldyBRQWJzdHJh Y3REZWNsYXJhdGl2ZURhdGE7CisrCisrICAgIGNvbm5lY3QoJnAsICZRdERlY2xhcmF0aXZlOjpP YmplY3Q6OnRoZVNpZ25hbCwgJnAsIFtdeworKyAgICB9KTsKKysKKysgICAgUXREZWNsYXJhdGl2 ZTo6T2JqZWN0ICpjaGlsZCA9IG5ldyBRdERlY2xhcmF0aXZlOjpPYmplY3Q7CisrICAgIGNoaWxk LT5zZXRQYXJlbnQoJnApOworKyNlbmRpZgorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RT2JqZWN0 KQorICNpbmNsdWRlICJ0c3RfcW9iamVjdC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3Rz L2F1dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5j cHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlL3Rz dF9xbWltZWRhdGFiYXNlLmNwcAoraW5kZXggMGVhNDIyZWNiYy4uMWEzMjU2NTM0YiAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2Uv dHN0X3FtaW1lZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21p bWV0eXBlcy9xbWltZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcAorQEAgLTcwLDE1ICs3 MCwxNSBAQCBzdGF0aWMgaW5saW5lIFFTdHJpbmcgdGVzdFN1aXRlV2FybmluZygpCisgCisgICAg IFFTdHJpbmcgcmVzdWx0OworICAgICBRVGV4dFN0cmVhbSBzdHIoJnJlc3VsdCk7CistICAgIHN0 ciA8PCAiXG5DYW5ub3QgZmluZCB0aGUgc2hhcmVkLW1pbWUtaW5mbyB0ZXN0IHN1aXRlXG5zdGFy dGluZyBmcm9tOiAiCisrICAgIHN0ciA8PCAiXG5DYW5ub3QgZmluZCB0aGUgc2hhcmVkLW1pbWUt aW5mbyB0ZXN0IHN1aXRlXG5pbiB0aGUgcGFyZW50IG9mOiAiCisgICAgICAgICA8PCBRRGlyOjp0 b05hdGl2ZVNlcGFyYXRvcnMoUURpcjo6Y3VycmVudFBhdGgoKSkgPDwgIlxuIgorICAgICAgICAg ICAgImNkICIgPDwgUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKFFTdHJpbmdMaXRlcmFsKCJ0ZXN0 cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UiKSkgPDwgIlxuIgorLSAgICAg ICAgICAgIndnZXQgaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hkZy9zaGFyZWQtbWltZS1p bmZvL3NuYXBzaG90L1JlbGVhc2UtMS0xMC56aXBcbiIKKy0gICAgICAgICAgICJ1bnppcCBSZWxl YXNlLTEtMTAuemlwXG4iOworKyAgICAgICAgICAgIndnZXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRl c2t0b3Aub3JnL3hkZy9zaGFyZWQtbWltZS1pbmZvLy0vYXJjaGl2ZS8yLjEvc2hhcmVkLW1pbWUt aW5mby0yLjEuemlwXG4iCisrICAgICAgICAgICAidW56aXAgc2hhcmVkLW1pbWUtaW5mby0yLjEu emlwXG4iOworICNpZmRlZiBRX09TX1dJTgorLSAgICBzdHIgPDwgIm1rZGlyIHRlc3RmaWxlc1xu eGNvcHkgL3MgUmVsZWFzZS0xLTEwIHMtbS1pXG4iOworKyAgICBzdHIgPDwgIm1rZGlyIHRlc3Rm aWxlc1xueGNvcHkgL3Mgc2hhcmVkLW1pbWUtaW5mby0yLjEgcy1tLWlcbiI7CisgI2Vsc2UKKy0g ICAgc3RyIDw8ICJsbiAtcyBSZWxlYXNlLTEtMTAgcy1tLWlcbiI7CisrICAgIHN0ciA8PCAibG4g LXMgc2hhcmVkLW1pbWUtaW5mby0yLjEgcy1tLWlcbiI7CisgI2VuZGlmCisgICAgIHJldHVybiBy ZXN1bHQ7CisgfQorQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIHRzdF9RTWltZURhdGFiYXNlOjpp bml0VGVzdENhc2UoKQorICAgICBRVkVSSUZZMihjb3B5UmVzb3VyY2VGaWxlKHhtbEZpbGVOYW1l LCB4bWxUYXJnZXRGaWxlTmFtZSwgJmVycm9yTWVzc2FnZSksIHFQcmludGFibGUoZXJyb3JNZXNz YWdlKSk7CisgI2VuZGlmCisgCistICAgIG1fdGVzdFN1aXRlID0gUUZJTkRURVNUREFUQSgicy1t LWkvdGVzdHMiKTsKKysgICAgbV90ZXN0U3VpdGUgPSBRRklORFRFU1REQVRBKCJzLW0taS90ZXN0 cy9taW1lLWRldGVjdGlvbiIpOworICAgICBpZiAobV90ZXN0U3VpdGUuaXNFbXB0eSgpKQorICAg ICAgICAgcVdhcm5pbmcoIiVzIiwgcVByaW50YWJsZSh0ZXN0U3VpdGVXYXJuaW5nKCkpKTsKKyAK K0BAIC02MTEsNyArNjExLDcgQEAgdm9pZCB0c3RfUU1pbWVEYXRhYmFzZTo6YWxsTWltZVR5cGVz KCkKKyAgICAgUVZFUklGWSghbHN0LmlzRW1wdHkoKSk7CisgCisgICAgIC8vIEhhcmRjb2Rpbmcg dGhpcyBpcyB0aGUgb25seSB3YXkgdG8gY2hlY2sgYm90aCBwcm92aWRlcnMgZmluZCB0aGUgc2Ft ZSBudW1iZXIgb2YgbWltZXR5cGVzLgorLSAgICBRQ09NUEFSRShsc3QuY291bnQoKSwgNzc5KTsK KysgICAgUUNPTVBBUkUobHN0LmNvdW50KCksIDgxMSk7CisgCisgICAgIGZvcmVhY2ggKGNvbnN0 IFFNaW1lVHlwZSAmbWltZSwgbHN0KSB7CisgICAgICAgICBjb25zdCBRU3RyaW5nIG5hbWUgPSBt aW1lLm5hbWUoKTsKK0BAIC02MzEsMTAgKzYzMSw5IEBAIHZvaWQgdHN0X1FNaW1lRGF0YWJhc2U6 OnN1ZmZpeGVzX2RhdGEoKQorIAorICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIGEg c2luZ2xlIHBhdHRlcm4iKSA8PCAiYXBwbGljYXRpb24vcGRmIiA8PCAiKi5wZGYiIDw8ICJwZGYi OworICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG11bHRpcGxlIHBhdHRlcm5zIikg PDwgImFwcGxpY2F0aW9uL3gta3ByZXNlbnRlciIgPDwgIioua3ByOyoua3B0IiA8PCAia3ByIjsK Ky0gICAgUVRlc3Q6Om5ld1JvdygianBlZyIpIDw8ICJpbWFnZS9qcGVnIiA8PCAiKi5qcGU7Ki5q cGc7Ki5qcGVnIiA8PCAianBlZyI7CistICAgIC8vaWYgKEtNaW1lVHlwZTo6c2hhcmVkTWltZUlu Zm9WZXJzaW9uKCkgPiBLREVfTUFLRV9WRVJTSU9OKDAsIDYwLCAwKSkgeworLSAgICAgICAgUVRl c3Q6Om5ld1JvdygibWltZXR5cGUgd2l0aCBtYW55IHBhdHRlcm5zIikgPDwgImFwcGxpY2F0aW9u L3ZuZC53b3JkcGVyZmVjdCIgPDwgIioud3A7Ki53cDQ7Ki53cDU7Ki53cDY7Ki53cGQ7Ki53cHAi IDw8ICJ3cCI7CistICAgIC8vfQorKyAgICAvLyBUaGUgcHJlZmVycmVkIHN1ZmZpeCBmb3IgaW1h Z2UvanBlZyBpcyAqLmpwZywgYXMgcGVyIGh0dHBzOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNn aT9pZD0xNzY3MzcKKysgICAgUVRlc3Q6Om5ld1JvdygianBlZyIpIDw8ICJpbWFnZS9qcGVnIiA8 PCAiKi5qcGU7Ki5qcGc7Ki5qcGVnIiA8PCAianBnIjsKKysgICAgUVRlc3Q6Om5ld1JvdygibWlt ZXR5cGUgd2l0aCBtYW55IHBhdHRlcm5zIikgPDwgImFwcGxpY2F0aW9uL3ZuZC53b3JkcGVyZmVj dCIgPDwgIioud3A7Ki53cDQ7Ki53cDU7Ki53cDY7Ki53cGQ7Ki53cHAiIDw8ICJ3cCI7CisgICAg IFFUZXN0OjpuZXdSb3coIm9hc2lzIHRleHQgbWltZXR5cGUiKSA8PCAiYXBwbGljYXRpb24vdm5k Lm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0IiA8PCAiKi5vZHQiIDw8ICJvZHQiOworICAgICBRVGVz dDo6bmV3Um93KCJvYXNpcyBwcmVzZW50YXRpb24gbWltZXR5cGUiKSA8PCAiYXBwbGljYXRpb24v dm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24iIDw8ICIqLm9kcCIgPDwgIm9kcCI7 CisgICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbXVsdGlwbGUgcGF0dGVybnMiKSA8 PCAidGV4dC9wbGFpbiIgPDwgIiouYXNjOyoudHh0OyosdiIgPDwgInR4dCI7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxpemF0aW9uL2pzb24vdHN0X3F0anNv bi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6YXRpb24vanNvbi90c3Rf cXRqc29uLmNwcAoraW5kZXggM2U1OGRkMDNjYy4uYzhmODJlZjVkNSAxMDA2NDQKKy0tLSBhL3F0 YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3Bw CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6YXRpb24vanNvbi90c3Rf cXRqc29uLmNwcAorQEAgLTE3Niw2ICsxNzYsOCBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZv aWQgZnJvbVRvVmFyaWFudENvbnZlcnNpb25zX2RhdGEoKTsKKyAgICAgdm9pZCBmcm9tVG9WYXJp YW50Q29udmVyc2lvbnMoKTsKKyAKKysgICAgdm9pZCBub0xlYWtPbk5hbWVDbGFzaCgpOworKwor IHByaXZhdGU6CisgICAgIFFTdHJpbmcgdGVzdERhdGFEaXI7CisgfTsKK0BAIC0zNjg1LDUgKzM2 ODcsMjMgQEAgdm9pZCB0c3RfUXRKc29uOjpmcm9tVG9WYXJpYW50Q29udmVyc2lvbnMoKQorICAg ICB9CisgfQorIAorK3ZvaWQgdHN0X1F0SnNvbjo6bm9MZWFrT25OYW1lQ2xhc2goKQorK3sKKysg ICAgUUpzb25Eb2N1bWVudCBkb2MgPSBRSnNvbkRvY3VtZW50Ojpmcm9tSnNvbigie1wiXCI6e1wi XCI6MH0sXCJcIjowfSIpOworKyAgICBRVkVSSUZZKCFkb2MuaXNOdWxsKCkpOworKyAgICBjb25z dCBRSnNvbk9iamVjdCBvYmogPSBkb2Mub2JqZWN0KCk7CisrCisrICAgIC8vIFJlbW92ZWQgdGhl IGR1cGxpY2F0ZSBrZXkuCisrICAgIFFDT01QQVJFKG9iai5sZW5ndGgoKSwgMSk7CisrCisrICAg IC8vIFJldGFpbmVkIHRoZSBsYXN0IG9mIHRoZSBkdXBsaWNhdGVzLgorKyAgICBjb25zdCBRSnNv blZhbHVlIHZhbCA9IG9iai5iZWdpbigpLnZhbHVlKCk7CisrICAgIFFWRVJJRlkodmFsLmlzRG91 YmxlKCkpOworKyAgICBRQ09NUEFSRSh2YWwudG9Eb3VibGUoKSwgMC4wKTsKKysKKysgICAgLy8g SXQgc2hvdWxkIG5vdCBsZWFrLgorKyAgICAvLyBJbiBwYXJ0aWN1bGFyIGl0IHNob3VsZCBub3Qg Zm9yZ2V0IHRvIGRlcmVmIHRoZSBjb250YWluZXIgZm9yIHRoZSBpbm5lciBvYmplY3QuCisrfQor KworIFFURVNUX01BSU4odHN0X1F0SnNvbikKKyAjaW5jbHVkZSAidHN0X3F0anNvbi5tb2MiCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1lem9uZS90c3Rf cXRpbWV6b25lLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvdGltZS9xdGltZXpvbmUv dHN0X3F0aW1lem9uZS5jcHAKK2luZGV4IGE1OWI1OGQ1N2YuLjI0MWMzZTg0YWMgMTAwNjQ0Cist LS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9xdGltZXpv bmUuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3Rz dF9xdGltZXpvbmUuY3BwCitAQCAtNjMsNiArNjMsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2 b2lkIGlzVmFsaWRJZF9kYXRhKCk7CisgICAgIHZvaWQgaXNWYWxpZElkKCk7CisgICAgIHZvaWQg bWFsZm9ybWVkKCk7CisrICAgIHZvaWQgc2VyaWFsaXplKCk7CisgICAgIC8vIEJhY2tlbmQgdGVz dHMKKyAgICAgdm9pZCB1dGNUZXN0KCk7CisgICAgIHZvaWQgaWN1VGVzdCgpOworQEAgLTk0Nyw2 ICs5NDgsMzMgQEAgdm9pZCB0c3RfUVRpbWVab25lOjptYWxmb3JtZWQoKQorICAgICAgICAgYmFy Zi5vZmZzZXRGcm9tVXRjKG5vdyk7CisgfQorIAorK3ZvaWQgdHN0X1FUaW1lWm9uZTo6c2VyaWFs aXplKCkKKyt7CisrICAgIGludCBwYXJ0cyA9IDA7CisrI2lmbmRlZiBRVF9OT19ERUJVR19TVFJF QU0KKysgICAgcURlYnVnKCkgPDwgUVRpbWVab25lKCk7IC8vIHRvIHZlcmlmeSBubyBjcmFzaAor KyAgICBwYXJ0cysrOworKyNlbmRpZgorKyNpZm5kZWYgUVRfTk9fREFUQVNUUkVBTQorKyAgICBR Qnl0ZUFycmF5IGJsb2I7CisrICAgIHsKKysgICAgICAgIFFEYXRhU3RyZWFtIHN0cmVhbSgmYmxv YiwgUUlPRGV2aWNlOjpXcml0ZU9ubHkpOworKyAgICAgICAgc3RyZWFtIDw8IFFUaW1lWm9uZSgi RXVyb3BlL09zbG8iKSA8PCBRVGltZVpvbmUoNDIwKSA8PCBRVGltZVpvbmUoKSA8PCBxaW50NjQo LTEpOworKyAgICB9CisrICAgIFFEYXRhU3RyZWFtIHN0cmVhbSgmYmxvYiwgUUlPRGV2aWNlOjpS ZWFkT25seSk7CisrICAgIFFUaW1lWm9uZSBpbnZhbGlkLCBvZmZzZXQsIG9zbG87CisrICAgIHFp bnQ2NCBtaW51c29uZTsKKysgICAgc3RyZWFtID4+IG9zbG8gPj4gb2Zmc2V0ID4+IGludmFsaWQg Pj4gbWludXNvbmU7CisrICAgIFFDT01QQVJFKG9zbG8sIFFUaW1lWm9uZSgiRXVyb3BlL09zbG8i KSk7CisrICAgIFFDT01QQVJFKG9mZnNldCwgUVRpbWVab25lKDQyMCkpOworKyAgICBRVkVSSUZZ KCFpbnZhbGlkLmlzVmFsaWQoKSk7CisrICAgIFFDT01QQVJFKG1pbnVzb25lLCBxaW50NjQoLTEp KTsKKysgICAgcGFydHMrKzsKKysjZW5kaWYKKysgICAgaWYgKCFwYXJ0cykKKysgICAgICAgIFFT S0lQKCJObyBzZXJpYWxpemF0aW9uIGVuYWJsZWQiKTsKKyt9CisrCisgdm9pZCB0c3RfUVRpbWVa b25lOjp1dGNUZXN0KCkKKyB7CisgI2lmZGVmIFFUX0JVSUxEX0lOVEVSTkFMCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNpbnRlcmZh Y2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNp bnRlcmZhY2UuY3BwCitpbmRleCAwNTQ4MGM2ZGQyLi43MGY0Yzc1NzU2IDEwMDY0NAorLS0tIGEv cXRiYXNlL3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNpbnRlcmZhY2Uu Y3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9kYnVzL3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1 c2ludGVyZmFjZS5jcHAKK0BAIC0zMjQsNiArMzI0LDEzIEBAIHZvaWQgdHN0X1FEQnVzSW50ZXJm YWNlOjpub3RWYWxpZCgpCisgCisgICAgIFFWRVJJRlkoIWludGVyZmFjZS5pc1ZhbGlkKCkpOwor ICAgICBRVkVSSUZZKCFRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKCZpbnRlcmZhY2UsICJMaXN0 TmFtZXMiLCBRdDo6RGlyZWN0Q29ubmVjdGlvbikpOworKworKyAgICAvLyBXaXRoIGEgY29ubmVj dGlvbiwgYnV0IGVtcHR5L251bGwgc2VydmljZSBhbmQgcGF0aCBzcGVjaWZpZWQKKysgICAgUURC dXNDb25uZWN0aW9uIGNvbiA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpOworKyAgICBR VkVSSUZZKGNvbi5pc0Nvbm5lY3RlZCgpKTsKKysgICAgUURCdXNJbnRlcmZhY2UgaWZhY2Uoe30s IHt9LCB7fSwgY29uKTsKKysgICAgUVZFUklGWSghaWZhY2UuaXNWYWxpZCgpKTsKKysgICAgUVZF UklGWSghUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCgmaW50ZXJmYWNlLCAiTGlzdE5hbWVzIiwg UXQ6OkRpcmVjdENvbm5lY3Rpb24pKTsKKyB9CisgCisgdm9pZCB0c3RfUURCdXNJbnRlcmZhY2U6 Om5vdFZhbGlkRGVyaXZlZCgpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tl cm5lbC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlzZXF1ZW5jZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0 by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVlbmNlLmNwcAoraW5kZXggODc0 NDY4Yzk1NC4uMDRjZWI0YWI2NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9r ZXJuZWwvcWtleXNlcXVlbmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwCisrKysgYi9xdGJhc2UvdGVz dHMvYXV0by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVlbmNlLmNwcAorQEAg LTUwNyw2ICs1MDcsMTAgQEAgdm9pZCB0c3RfUUtleVNlcXVlbmNlOjp0b1N0cmluZ0Zyb21LZXlj b2RlX2RhdGEoKQorICAgICBRVGVzdDo6bmV3Um93KCJDdHJsK0FsdCtOdW0rRGVsIikgPDwgUUtl eVNlcXVlbmNlKFF0OjpDb250cm9sTW9kaWZpZXIgfCBRdDo6QWx0TW9kaWZpZXIgfCBRdDo6S2V5 cGFkTW9kaWZpZXIgfCBRdDo6S2V5X0RlbGV0ZSkgPDwgIkN0cmwrQWx0K051bStEZWwiOworICAg ICBRVGVzdDo6bmV3Um93KCJDdHJsK0lucyIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6Q29udHJvbE1v ZGlmaWVyIHwgUXQ6OktleV9JbnNlcnQpIDw8ICJDdHJsK0lucyI7CisgICAgIFFUZXN0OjpuZXdS b3coIkN0cmwrTnVtK0lucygxKSIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X0luc2VydCB8IFF0 OjpLZXlwYWRNb2RpZmllciB8IFF0OjpDb250cm9sTW9kaWZpZXIpIDw8ICJDdHJsK051bStJbnMi OworKyAgICBRVGVzdDo6bmV3Um93KCJDdHJsIikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfQ29u dHJvbCkgPDwgIkNvbnRyb2wiOworKyAgICBRVGVzdDo6bmV3Um93KCJBbHQiKSA8PCBRS2V5U2Vx dWVuY2UoUXQ6OktleV9BbHQpIDw8ICJBbHQiOworKyAgICBRVGVzdDo6bmV3Um93KCJTaGlmdCIp IDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X1NoaWZ0KSA8PCAiU2hpZnQiOworKyAgICBRVGVzdDo6 bmV3Um93KCJNZXRhIikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfTWV0YSkgPDwgIk1ldGEiOwor IH0KKyAKKyB2b2lkIHRzdF9RS2V5U2VxdWVuY2U6OnRvU3RyaW5nRnJvbUtleWNvZGUoKQorZGlm ZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fm b250ZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRkYXRhYmFz ZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAKK2luZGV4IDE1ZTBlY2FkYWEuLmI0ZWNhNzQyODMgMTAw NjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9x Zm9udGRhdGFiYXNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRk YXRhYmFzZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAKK0BAIC04MSw2ICs4MSw4IEBAIHByaXZhdGUg c2xvdHM6CisgICAgIHZvaWQgcmVnaXN0ZXJPcGVuVHlwZVByZWZlcnJlZE5hbWVzU3lzdGVtKCk7 CisgICAgIHZvaWQgcmVnaXN0ZXJPcGVuVHlwZVByZWZlcnJlZE5hbWVzQXBwbGljYXRpb24oKTsK KyAKKysgICAgdm9pZCBzdHJldGNoUmVzcGVjdGVkKCk7CisrCisgcHJpdmF0ZToKKyAgICAgUVN0 cmluZyBtX2xlZEZvbnQ7CisgICAgIFFTdHJpbmcgbV90ZXN0Rm9udDsKK0BAIC0zNTUsNiArMzU3 LDI4IEBAIHN0YXRpYyBRU3RyaW5nIHRlc3RTdHJpbmcoKQorICAgICByZXR1cm4gUVN0cmluZ0xp dGVyYWwoImZvbyBiYXIiKTsKKyB9CisgCisrdm9pZCB0c3RfUUZvbnREYXRhYmFzZTo6c3RyZXRj aFJlc3BlY3RlZCgpCisreworKyAgICBpbnQgaXRhbGljSWQgPSBRRm9udERhdGFiYXNlOjphZGRB cHBsaWNhdGlvbkZvbnQobV90ZXN0Rm9udEl0YWxpYyk7CisrICAgIFFWRVJJRlkoaXRhbGljSWQg IT0gLTEpOworKworKyAgICBRVkVSSUZZKCFRRm9udERhdGFiYXNlOjphcHBsaWNhdGlvbkZvbnRG YW1pbGllcyhpdGFsaWNJZCkuaXNFbXB0eSgpKTsKKysKKysgICAgUVN0cmluZyBpdGFsaWNGb250 TmFtZSA9IFFGb250RGF0YWJhc2U6OmFwcGxpY2F0aW9uRm9udEZhbWlsaWVzKGl0YWxpY0lkKS5m aXJzdCgpOworKworKyAgICBRRm9udCBpdGFsaWNGb250ID0gUUZvbnREYXRhYmFzZSgpLmZvbnQo aXRhbGljRm9udE5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRU3RyaW5nOjpmcm9tTGF0aW4xKCJJdGFsaWMiKSwgMTQpOworKyAgICBRVkVSSUZZKGl0 YWxpY0ZvbnQuaXRhbGljKCkpOworKworKyAgICBRRm9udCBpdGFsaWNTdHJldGNoZWRGb250ID0g aXRhbGljRm9udDsKKysgICAgaXRhbGljU3RyZXRjaGVkRm9udC5zZXRTdHJldGNoKCA0MDAgKTsK KysKKysgICAgUVZFUklGWShRRm9udE1ldHJpY3NGKGl0YWxpY0ZvbnQpLmhvcml6b250YWxBZHZh bmNlKFFTdHJpbmdMaXRlcmFsKCJmb29iYXIiKSkgPAorKyAgICAgICAgICAgIFFGb250TWV0cmlj c0YoaXRhbGljU3RyZXRjaGVkRm9udCkuaG9yaXpvbnRhbEFkdmFuY2UoUVN0cmluZ0xpdGVyYWwo ImZvb2JhciIpKSk7CisrCisrICAgIFFGb250RGF0YWJhc2U6OnJlbW92ZUFwcGxpY2F0aW9uRm9u dChpdGFsaWNJZCk7CisrfQorKworIHZvaWQgdHN0X1FGb250RGF0YWJhc2U6OmNvbmRlbnNlZEZv bnRXaWR0aE5vRm9udE1lcmdpbmcoKQorIHsKKyAgICAgaW50IHJlZ3VsYXJGb250SWQgPSBRRm9u dERhdGFiYXNlOjphZGRBcHBsaWNhdGlvbkZvbnQobV90ZXN0Rm9udCk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdv cmtyZXBseS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3Jl cGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcAoraW5kZXggM2Q0YTA5NGM0My4uYjQyM2UxMWE5OSAx MDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVw bHkvdHN0X3FuZXR3b3JrcmVwbHkuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3Jr L2FjY2Vzcy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcAorQEAgLTI4MSw2ICsy ODEsNyBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgaW9HZXRGcm9tRmlsZVNwZWNpYWwo KTsKKyAgICAgdm9pZCBpb0dldEZyb21GaWxlX2RhdGEoKTsKKyAgICAgdm9pZCBpb0dldEZyb21G aWxlKCk7CisrICAgIHZvaWQgaW9HZXRGcm9tRmlsZVVybCgpOworICAgICB2b2lkIGlvR2V0RnJv bUZ0cF9kYXRhKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRnRwKCk7CisgICAgIHZvaWQgaW9HZXRG cm9tRnRwV2l0aFJldXNlKCk7CitAQCAtMzMwMCw2ICszMzAxLDE4IEBAIHZvaWQgdHN0X1FOZXR3 b3JrUmVwbHk6OmlvR2V0RnJvbUZpbGUoKQorICAgICBRQ09NUEFSRShyZWFkZXIuZGF0YSwgZGF0 YSk7CisgfQorIAorK3ZvaWQgdHN0X1FOZXR3b3JrUmVwbHk6OmlvR2V0RnJvbUZpbGVVcmwoKQor K3sKKysgICAgLy8gVGhpcyBpbW1lZGlhdGVseSBmYWlscyBvbiBub24td2luZG93cyBwbGF0Zm9y bXM6CisrICAgIFFOZXR3b3JrUmVxdWVzdCByZXF1ZXN0KFFVcmwoImZpbGU6Ly91bmMtc2VydmVy L3NvbWUvcGF0aCIpKTsKKysgICAgUU5ldHdvcmtSZXBseVB0ciByZXBseShtYW5hZ2VyLmdldChy ZXF1ZXN0KSk7CisrICAgIFFTaWduYWxTcHkgZmluaXNoZWRTcHkocmVwbHkuZ2V0KCksICZRTmV0 d29ya1JlcGx5OjpmaW5pc2hlZCk7CisrICAgIC8vIFFUQlVHLTEwNTYxODogVGhpcyB3b3VsZCwg b24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLCBuZXZlciBoYXBwZW4gYmVjYXVzZSB0aGUgc2lnbmFs CisrICAgIC8vIHdhcyBlbWl0dGVkIGJlZm9yZSB0aGUgY29uc3RydWN0b3IgZmluaXNoZWQsIGxl YXZpbmcgbm8gY2hhbmNlIGF0IGFsbCB0byBjb25uZWN0IHRvIHRoZQorKyAgICAvLyBzaWduYWwK KysgICAgUVZFUklGWShmaW5pc2hlZFNweS53YWl0KCkpOworK30KKysKKyB2b2lkIHRzdF9RTmV0 d29ya1JlcGx5Ojppb0dldEZyb21GdHBfZGF0YSgpCisgeworICAgICBRVGVzdDo6YWRkQ29sdW1u PFFTdHJpbmc+KCJmaWxlTmFtZSIpOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25l dHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydCBiL3F0YmFzZS90ZXN0cy9hdXRv L25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydAoraW5kZXggMDY5ZmE2YjM0 MS4uNGNjNGQ5YTVlYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3Ns L3Fzc2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0 d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5jZXJ0CitAQCAtMSw3NSArMSwzNCBAQAor LUNlcnRpZmljYXRlOgorLSAgICBEYXRhOgorLSAgICAgICAgVmVyc2lvbjogMyAoMHgyKQorLSAg ICAgICAgU2VyaWFsIE51bWJlcjogMCAoMHgwKQorLSAgICAgICAgU2lnbmF0dXJlIEFsZ29yaXRo bTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCistICAgICAgICBJc3N1ZXI6IEM9Tk8sIFNUPU9zbG8s IEw9TnlkYWxlbiwgTz1Ob2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll cyksIE9VPURldmVsb3BtZW50LCBDTj1mbHVrZS50cm9sbC5uby9lbWFpbEFkZHJlc3M9YWhhbnNz ZW5AdHJvbGx0ZWNoLmNvbQorLSAgICAgICAgVmFsaWRpdHkKKy0gICAgICAgICAgICBOb3QgQmVm b3JlOiBEZWMgIDQgMDE6MTA6MzIgMjAwNyBHTVQKKy0gICAgICAgICAgICBOb3QgQWZ0ZXIgOiBB cHIgMjEgMDE6MTA6MzIgMjAzNSBHTVQKKy0gICAgICAgIFN1YmplY3Q6IEM9Tk8sIFNUPU9zbG8s IE89Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLCBPVT1EZXZl bG9wbWVudCwgQ049Zmx1a2UudHJvbGwubm8KKy0gICAgICAgIFN1YmplY3QgUHVibGljIEtleSBJ bmZvOgorLSAgICAgICAgICAgIFB1YmxpYyBLZXkgQWxnb3JpdGhtOiByc2FFbmNyeXB0aW9uCist ICAgICAgICAgICAgUlNBIFB1YmxpYyBLZXk6ICgxMDI0IGJpdCkKKy0gICAgICAgICAgICAgICAg TW9kdWx1cyAoMTAyNCBiaXQpOgorLSAgICAgICAgICAgICAgICAgICAgMDA6YTc6Yzg6YTA6NGE6 YzQ6MTk6MDU6MWI6NjY6YmE6MzI6ZTI6ZDI6ZjE6CistICAgICAgICAgICAgICAgICAgICAxYzo2 ZjoxNzo4MjplNDozOToyZTowMTo1MTo5MDpkYjowNDozNDozMjoxMToKKy0gICAgICAgICAgICAg ICAgICAgIDIxOmMyOjBkOjZmOjU5OmQ4OjUzOjkwOjU0OjNmOjgzOjhmOmE5OmQzOmIzOgorLSAg ICAgICAgICAgICAgICAgICAgZDU6ZWU6MWE6OWI6ODA6YWU6YzM6MjU6Yzk6NWU6YTU6YWY6NGI6 NjA6MDU6CistICAgICAgICAgICAgICAgICAgICBhYTphMDpkMTo5MTowMToxZjpjYTowNDo4Mzpl Mzo1ODoxYzo5OTozMjo0NToKKy0gICAgICAgICAgICAgICAgICAgIDg0OjcwOjcyOjU4OjAzOjk4 OjRhOjYzOjhiOjQxOmY1OjA4OjQ5OmQyOjkxOgorLSAgICAgICAgICAgICAgICAgICAgMDI6NjA6 NmI6ZTQ6NjQ6ZmU6ZGQ6YTA6YWE6NzQ6MDg6ZTk6MzQ6NGM6OTE6CistICAgICAgICAgICAgICAg ICAgICA1ZjoxMjozZDozNzo0ZDo1NDoyYzphZDo3Zjo1Yjo5ODo2MDozNjowMjo4YzoKKy0gICAg ICAgICAgICAgICAgICAgIDNiOmY2OjQ1OmYzOjI3OjZhOjliOjk0OjlkCistICAgICAgICAgICAg ICAgIEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKKy0gICAgICAgIFg1MDl2MyBleHRlbnNpb25z OgorLSAgICAgICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJhaW50czogCistICAgICAgICAgICAg ICAgIENBOkZBTFNFCistICAgICAgICAgICAgTmV0c2NhcGUgQ29tbWVudDogCistICAgICAgICAg ICAgICAgIE9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlCistICAgICAgICAgICAgWDUwOXYz IFN1YmplY3QgS2V5IElkZW50aWZpZXI6IAorLSAgICAgICAgICAgICAgICAyMTo4NTowNDozRDoy MzowMTo2NjpFNTpGNzo5RjoxQTo4NDoyNDo4QTpBRjowQTo3OTpGNDpFNTpBQworLSAgICAgICAg ICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAorLSAgICAgICAgICAgICAgICBE aXJOYW1lOi9DPU5PL1NUPU9zbG8vTD1OeWRhbGVuL089Tm9raWEgQ29ycG9yYXRpb24gYW5kL29y IGl0cyBzdWJzaWRpYXJ5KC1pZXMpL09VPURldmVsb3BtZW50L0NOPWZsdWtlLnRyb2xsLm5vL2Vt YWlsQWRkcmVzcz1haGFuc3NlbkB0cm9sbHRlY2guY29tCistICAgICAgICAgICAgICAgIHNlcmlh bDo4RTpBODpCNDpFODo5MTpCNzo1NDoyRQorLQorLSAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBz aGExV2l0aFJTQUVuY3J5cHRpb24KKy0gICAgICAgIDZkOjU3OjVmOmQxOjA1OjQzOmYwOjYyOjA1 OmVjOjJhOjcxOmE1OmRjOjE5OjA4OmYyOmM0OgorLSAgICAgICAgYTY6YmQ6YmI6MjU6ZDk6Y2E6 ODk6MDE6MGU6ZTQ6Y2Y6MWY6YzE6OGM6Yzg6MjQ6MTg6MzU6CistICAgICAgICA1Mzo1OTo3Yjpj MDo0MzpiNDozMjplNjo5ODpiMjphNjplZjoxNTowNTowYjo0ODo1ZjplMToKKy0gICAgICAgIGEw OjBjOjk3OmE5OmExOjc3OmQ4OjM1OjE4OjMwOmJjOmE5OjhmOmQzOmI3OjU0OmM3OmYxOgorLSAg ICAgICAgYTk6OWU6NWQ6ZTY6MTk6YmY6ZjY6M2M6NWI6MmI6ZDg6ZTQ6M2U6NjI6MTg6ODg6OGI6 ZDM6CistICAgICAgICAyNDplMTo0MDo5YjowYzplNjoyOToxNjo2MjphYjplYTowNToyNDo3MDoz NjphYTo1NTo5MzoKKy0gICAgICAgIGVmOjAyOjgxOjFiOjIzOjEwOmEyOjA0OmViOjU2Ojk1Ojc1 OmZjOmY4Ojk0OmIxOjVkOjQyOgorLSAgICAgICAgYzU6M2Y6MzY6NDQ6ODU6NWQ6M2E6MmU6OTA6 NDY6OGE6YTI6Yjk6NmY6ODc6YWU6MGM6MTU6CistICAgICAgICA0MDoxOTozMTo5MDpmYzozYjoy NTpiYjphZTpmMTo2NjoxMzowZDo4NTo5MDpkOTo0OTozNDoKKy0gICAgICAgIDhmOmYyOjVkOmY5 OjdhOmRiOjRkOjVkOjI3OmY2Ojc2OjlkOjM1OjhjOjA2OmE2OjRjOmEzOgorLSAgICAgICAgYjE6 YjI6YjY6NmY6MWQ6ZDc6YTM6MDA6ZmQ6NzI6ZWI6OWU6ZWE6NDQ6YTE6YWY6MjE6MzQ6CistICAg ICAgICA3ZDpjNzo0MjplMjo0OTo5MToxOTo4YjpjMDphZDpiYTo4Mjo4MDphODo3MTo3MDpmNDoz NToKKy0gICAgICAgIDMxOjkxOjYzOjg0OjIwOjk1OmU5OjYwOmFmOjY0OjhiOmNjOmZmOjNkOjhh Ojc2Ojc0OjNkOgorLSAgICAgICAgYzg6NTU6NmQ6ZTQ6OGU6YzM6MmI6MWM6ZTg6NDI6MTg6YWU6 OWY6ZTY6NmI6OWM6MzQ6MDY6CistICAgICAgICBlYzo2YTpmMjpjMworIC0tLS0tQkVHSU4gQ0VS VElGSUNBVEUtLS0tLQorLU1JSUVFekNDQXZ1Z0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRVUZB RENCbkRFTE1Ba0dBMVVFQmhNQ1RrOHgKKy1EVEFMQmdOVkJBZ1RCRTl6Ykc4eEVEQU9CZ05WQkFj VEIwNTVaR0ZzWlc0eEZqQVVCZ05WQkFvVERWUnliMnhzCistZEdWamFDQkJVMEV4RkRBU0JnTlZC QXNUQzBSbGRtVnNiM0J0Wlc1ME1SY3dGUVlEVlFRREV3NW1iSFZyWlM1MAorLWNtOXNiQzV1YnpF bE1DTUdDU3FHU0liM0RRRUpBUllXWVdoaGJuTnpaVzVBZEhKdmJHeDBaV05vTG1OdmJUQWUKKy1G dzB3TnpFeU1EUXdNVEV3TXpKYUZ3MHpOVEEwTWpFd01URXdNekphTUdNeEN6QUpCZ05WQkFZVEFr NVBNUTB3CistQ3dZRFZRUUlFd1JQYzJ4dk1SWXdGQVlEVlFRS0V3MVVjbTlzYkhSbFkyZ2dRVk5C TVJRd0VnWURWUVFMRXd0RQorLVpYWmxiRzl3YldWdWRERVhNQlVHQTFVRUF4TU9abXgxYTJVdWRI SnZiR3d1Ym04d2daOHdEUVlKS29aSWh2Y04KKy1BUUVCQlFBRGdZMEFNSUdKQW9HQkFLZklvRXJF R1FVYlpyb3k0dEx4SEc4WGd1UTVMZ0ZSa05zRU5ESVJJY0lOCistYjFuWVU1QlVQNE9QcWRPejFl NGFtNEN1d3lYSlhxV3ZTMkFGcXFEUmtRRWZ5Z1NENDFnY21USkZoSEJ5V0FPWQorLVNtT0xRZlVJ U2RLUkFtQnI1R1QrM2FDcWRBanBORXlSWHhJOU4wMVVMSzEvVzVoZ05nS01PL1pGOHlkcW01U2QK Ky1BZ01CQUFHamdnRWFNSUlCRmpBSkJnTlZIUk1FQWpBQU1Dd0dDV0NHU0FHRytFSUJEUVFmRmgx UGNHVnVVMU5NCistSUVkbGJtVnlZWFJsWkNCRFpYSjBhV1pwWTJGMFpUQWRCZ05WSFE0RUZnUVVJ WVVFUFNNQlp1WDNueHFFSklxdgorLUNubjA1YXd3Z2JzR0ExVWRJd1NCc3pDQnNLR0JvcVNCbnpD Qm5ERUxNQWtHQTFVRUJoTUNUazh4RFRBTEJnTlYKKy1CQWdUQkU5emJHOHhFREFPQmdOVkJBY1RC MDU1WkdGc1pXNHhGakFVQmdOVkJBb1REVlJ5YjJ4c2RHVmphQ0JCCistVTBFeEZEQVNCZ05WQkFz VEMwUmxkbVZzYjNCdFpXNTBNUmN3RlFZRFZRUURFdzVtYkhWclpTNTBjbTlzYkM1dQorLWJ6RWxN Q01HQ1NxR1NJYjNEUUVKQVJZV1lXaGhibk56Wlc1QWRISnZiR3gwWldOb0xtTnZiWUlKQUk2b3RP aVIKKy10MVF1TUEwR0NTcUdTSWIzRFFFQkJRVUFBNElCQVFCdFYxL1JCVVB3WWdYc0tuR2wzQmtJ OHNTbXZic2wyY3FKCistQVE3a3p4L0JqTWdrR0RWVFdYdkFRN1F5NXBpeXB1OFZCUXRJWCtHZ0RK ZXBvWGZZTlJnd3ZLbVAwN2RVeC9HcAorLW5sM21HYi8yUEZzcjJPUStZaGlJaTlNazRVQ2JET1lw Rm1LcjZnVWtjRGFxVlpQdkFvRWJJeENpQk90V2xYWDgKKy0rSlN4WFVMRlB6WkVoVjA2THBCR2lx SzViNGV1REJWQUdUR1EvRHNsdTY3eFpoTU5oWkRaU1RTUDhsMzVldHROCistWFNmMmRwMDFqQWFt VEtPeHNyWnZIZGVqQVAxeTY1N3FSS0d2SVRSOXgwTGlTWkVaaThDdHVvS0FxSEZ3OURVeAorLWtX T0VJSlhwWUs5a2k4ei9QWXAyZEQzSVZXM2tqc01ySE9oQ0dLNmY1bXVjTkFic2F2TEQKKytNSUlG NnpDQ0E5T2dBd0lCQWdJVWZvOWFtSnRKR1dxV0U2ZitTa0FPODV6a0dyNHdEUVlKS29aSWh2Y05B UUVMCisrQlFBd2dZTXhDekFKQmdOVkJBWVRBazVQTVEwd0N3WURWUVFJREFSUGMyeHZNUTB3Q3dZ RFZRUUhEQVJQYzJ4dgorK01SY3dGUVlEVlFRS0RBNVVhR1VnVVhRZ1EyOXRjR0Z1ZVRFTU1Bb0dB MVVFQ3d3RFVpWkVNUkl3RUFZRFZRUUQKKytEQWxJTWlCVVpYTjBaWEl4R3pBWkJna3Foa2lHOXcw QkNRRVdERzFwYm1sdGFVQnhkQzVwYnpBZ0Z3MHlNREV3CisrTWpZeE1qQXhNekZhR0E4eU1USXdN VEF3TWpFeU1ERXpNVm93Z1lNeEN6QUpCZ05WQkFZVEFrNVBNUTB3Q3dZRAorK1ZRUUlEQVJQYzJ4 dk1RMHdDd1lEVlFRSERBUlBjMnh2TVJjd0ZRWURWUVFLREE1VWFHVWdVWFFnUTI5dGNHRnUKKytl VEVNTUFvR0ExVUVDd3dEVWlaRU1SSXdFQVlEVlFRRERBbElNaUJVWlhOMFpYSXhHekFaQmdrcWhr aUc5dzBCCisrQ1FFV0RHMXBibWx0YVVCeGRDNXBiekNDQWlJd0RRWUpLb1pJaHZjTkFRRUJCUUFE Z2dJUEFEQ0NBZ29DZ2dJQgorK0FPaVVwNStFNGJsb3VLSDdxK3JWTlI4Tm9ZWDJYa0JXK3ErcnB5 MXp1NXNzUlN6YnF4QWpEeDlka2h0N1FsbmYKKytWbERUMDBKdnBPV2RldVBvbjU5MTVlZFFSc1k0 VW5sNm1LSDI5cmEzT3RVYTEveUNKWHNHVkpUS0NqN2s0QnhiCisrNW1aemIvZlRsWm50TUxkVElC TWZVYnc2MkZLaXIxV2pLSWNKOWZDb0c4SmFHZUtWTzRSaDVwMGV6ZDRVVVVJZAorK3IxQlhsNU5x ZHF5MnZUTXNFRG5qT3NEM2Vna3Y4STJTS040TzZuL0Mzd1dZcE1PV1laa0dvWmlLejdySnMvaS8K Kytlejdic1Y3Smx3ZHpUbGhwSnprY09TVkZCUDZKbEVPeFROTnhaMXd0S3k3UHRaR21zU1NBVHEy ZTYrYnczOEFlCisrT3AwWG56enFjR2p0RERvZkJtVDdPRnpaV2pTOVZaUzYrRE9PZTJRSFdsZTFu Q0hjSHlINGt1NklSbHNyOXhrUgorK05BSWxPZm52SEh4cUpVZW5vZWFaNG9RRGpDQktTMUtYeWdK Ty90TDdCTFRRVm4veEsxRW1QdktObmp6V2s0dFIKKytQbmliVWhoczU2MzVxcE9VL1lQcUZCaDFK alZydVpic1djREFoUmNldzB1eE9OWE9hOUUrNGx0dFE5eVNZYTFBCisrTHZXcUp1QVg3Z3UyQnNC TUx5cWZtODExWW5BN0NJRk15TytIbHFta0xGZnY1TC94SVJBWFI3bDI2WUdPMFZ3WAorK0NHak1m ejROVlBNTWtlNG5CN3FhOU5rcFhRQlFLTW1zM1F6ZDVKVzBIeTlSdWo1TzhHUGNGWm1WMHR3amQx dUoKKytQRC9jQWprV0xhWGpkTnNKMTZRV2MybmdoUVJTNkhZcUtSWDZqK0NYT3h1cEFnTUJBQUdq VXpCUk1CMEdBMVVkCisrRGdRV0JCUlNDT1U1OGo5Tkpaa01hbXQ2MjNxeUNyaE4zVEFmQmdOVkhT TUVHREFXZ0JSU0NPVTU4ajlOSlprTQorK2FtdDYyM3F5Q3JoTjNUQVBCZ05WSFJNQkFmOEVCVEFE QVFIL01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQ3EKKytxNGp4c1dlTkR2NU5xMTRoSnRGOUhC K1pMNjR6Y1p0UmpKUDFZZ05zMFFwcEtJQ21qUE9MMm5JTUdtSS9qS3JzCisrMGVHQUwvOVhYTlZI UHhtMU9QT25jdmltTU1tVTZlbVpmcE1kRXRUZktQNDMrUGc5SGdLUmpMb1FwNDA2dkdlUQorKzhr aS9tYkJockl0VlBnRW0zdHUyQUZBMDJYVFlpK1l4Q0k5a1JaTEdrTTNGYmd0T3VUTFBsMFo5eStr aVBjOUYKKyt1Q1NDMDNhbkJFcXYrdkRTSTgrd09EeW1RL0lKM0p5ejFseElSRGZwNHFBZWtteTBq VTJjOTFWT0hIRW1PbXFxCisra3F5Z0dGUmR3YmU5OW05eVA2M3I2cTBiNUszWDJVbko2Ym5zMGht VHdUaFl3cFZQWExVOGpkYVRkZGJNdWtOMgorKy9FZjk2VHN3OG5XT0VPUE15U0hPVElQZ3d5WlJw MjZiMGtBOUVtaEx3T1A0MDFTeFhWUUNtU1JtdHdOYWdtdGcKKytqSkttWm9ZQk4rLy9ENDVpYks4 ejZRMG9PbTlQK1doZi91VVhlaGNSeEJ4eVYzeHo3azB3S0dRYkhqL2Rkd2N5CisrSVVvSU40bHJB bGliK2xLMTcwa1RLTjM1MlBEbXJwbzJnbUl6UEVzZnVyS0FJTVNlbERsNkgra2loMTZCdFo4eQor K056NmZoOVNvcXJnM09TQXdhcmU4cHhWN2s1MWNyQk1vUExONzhLb1JWOE1GQ0s0SzdGZGRxNHJS SVNxNmhpWHEKKytyMW5zam9FUHVLTTlodXBybVpWWmU5dDVZY0RhMkkrd2IzSWlFM3V3cFpiQWRh TER5UTVuNkYvcXBzaUlrWlhuCisrZ3RjRjdvcXBHNW9ZcndDY1o1M3kvZXpVZ1VnN1BsU3oyWHdB R3ZRdGdnPT0KKyAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5rZXkgYi9xdGJh c2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleQoraW5k ZXggOWQxNjY0ZDYwOS4uMzM3Y2U1NDFhNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5CisrKysgYi9xdGJhc2UvdGVz dHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleQorQEAgLTEsMTUg KzEsNTIgQEAKKy0tLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCistTUlJQ1hBSUJBQUtC Z1FDbnlLQkt4QmtGRzJhNk11TFM4Unh2RjRMa09TNEJVWkRiQkRReUVTSENEVzlaMkZPUQorLVZE K0RqNm5UczlYdUdwdUFyc01seVY2bHIwdGdCYXFnMFpFQkg4b0VnK05ZSEpreVJZUndjbGdEbUVw amkwSDEKKy1DRW5Ta1FKZ2ErUmsvdDJncW5RSTZUUk1rVjhTUFRkTlZDeXRmMXVZWURZQ2pEdjJS Zk1uYXB1VW5RSURBUUFCCistQW9HQU5GekxrYW5UZVNHTkZNMHV0dEJpcEZUOUY0YTAwZHFIejZK bk83elhBVDI2STVyOHNVMXBxUUJiNnVMegorLS8rUXo1WndrOFJVQVFjc01SZ0pldHVQUVViMEpa akY2RHV2MjRoTmF6cVhCQ3U3QVp6VWVuamFmd21LQy84cmkKKy1LcFgzZlR3cXpmemkvL0ZLR2di WFE4MHl5a1NTbGlETDNrbi9kckFUeHNMQ2dRRUNRUURYaEVGV0xKMHZWWjFzCistMUVrZiszTklU RStEUjE2WCtMUTRXNnZ5RUhBalRiYU5XdGNUS2RBV0xBMmw2TjRXQUFQWVNpNmF3bSt6TXh4NAor LVZvbVZUc2pkQWtFQXgweitlN25hdExlRmNycnE4cGJVK3dhNlNBUDFWZmhRV0tpdHhMMWU3dS9R TzkwTkNweEUKKy1vUVlLek1rbW1wT09GalF3RU1BeTFkdkZNYm00TEhsZXdRSkFDL2tzREJhVWNR SEhxamt0Q3RyVWI4clZqQXlXCistQThsc2Nja2VCMmZFWXlHNUo2ZEpWYVk0Q2xOT09zNXlNRFMy QWZrMUY2SC94S3Z0US81Q3pJbkEvUUpBVER1YgorLUsrQlBVOGpPOXErZ3B1SWkzVklaZHVwc3NW R21DZ09iVkNITGFrRzR1TzA0eTlJeVBoVjlsQTl0QUx0b0lmNGMKKy1WSXZ2NWZXR1hCclo0OGta QVFKQkFKbVZDZHpReGQ5TFpJNXZ4aWpVQ2o1RUk0ZSt4NURScVZVdnlQOEtDWnJDCistQWlOeW9E UDg1VCtoQlphU1hLM2FZR3BWd2VseWozYnZvMUdyVE53TldMdz0KKy0tLS0tLUVORCBSU0EgUFJJ VkFURSBLRVktLS0tLQorKy0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQorK01JSUpRZ0lCQURB TkJna3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRRG9sS2VmaE9HNWFMaWgKKysr NnZxMVRVZkRhR0Y5bDVBVnZxdnE2Y3RjN3ViTEVVczI2c1FJdzhmWFpJYmUwSlozMVpRMDlOQ2I2 VGxuWHJqCisrNkorZmRlWG5VRWJHT0ZKNWVwaWg5dmEydHpyVkd0ZjhnaVY3QmxTVXlnbys1T0Fj VytabWMyLzMwNVdaN1RDMworK1V5QVRIMUc4T3RoU29xOVZveWlIQ2ZYd3FCdkNXaG5pbFR1RVll YWRIczNlRkZGQ0hhOVFWNWVUYW5hc3RyMHoKKytMQkE1NHpyQTkzb0pML0NOa2lqZUR1cC93dDhG bUtURGxtR1pCcUdZaXMrNnliUDR2M3MrMjdGZXlaY0hjMDVZCisrYVNjNUhEa2xSUVQraVpSRHNV elRjV2RjTFNzdXo3V1JwckVrZ0U2dG51dm04Ti9BSGpxZEY1ODg2bkJvN1F3NgorK0h3Wmsremhj MlZvMHZWV1V1dmd6am50a0IxcFh0WndoM0I4aCtKTHVpRVpiSy9jWkVUUUNKVG41N3h4OGFpVkgK KytwNkhtbWVLRUE0d2dTa3RTbDhvQ1R2N1Mrd1MwMEZaLzhTdFJKajd5alo0ODFwT0xVVDU0bTFJ WWJPZXQrYXFUCisrbFAyRDZoUVlkU1kxYTdtVzdGbkF3SVVYSHNOTHNUalZ6bXZSUHVKYmJVUGNr bUd0UUM3MXFpYmdGKzRMdGdiQQorK1RDOHFuNXZOZFdKd093aUJUTWp2aDVhcHBDeFg3K1MvOFNF UUYwZTVkdW1CanRGY0Z3aG96SDgrRFZUekRKSHUKKytKd2U2bXZUWktWMEFVQ2pKck4wTTNlU1Z0 Qjh2VWJvK1R2QmozQldabGRMY0kzZGJpVHcvM0FJNUZpMmw0M1RiCisrQ2Rla0ZuTnA0SVVFVXVo Mktpa1Yrby9nbHpzYnFRSURBUUFCQW9JQ0FGdzFxNnRyNUk0OHZZN0RGK3JYc3VMbgorKzVaVVdF MUlRNmZ6QjRscjcybkp2LzlFRUduTWdZenQ5UHBNVXNENnZkQ3BCZ1MyQzArNlJIQXJGekp0TkEr Uk0KKytpSExJRzdLNzcwMnZleXIveEJ4L013aVNsTWVNdi9YcGtGeFZJNkU2c2tNR0cyczNBTVh4 S3ZKVHk1Q3BSeCtJCisrZVFGeUxHK1lhMVgybGdKZXMvcSsvQ3BBSGtPakNPcGNMeVNRQzVOWjc0 cTczNFY3blNkbW4rWnMzdFlFaCtPLworK2VpdXdUUC9qNWIzOFRlNXZWVHFEeFRjaUpQbWxqbVhM Q3dhME4xMDBsV2xiY3B2dzhxYnFpVEkySm0zWENiVUUKKytBekhqVzl2bXJGM2NSUzFmWHhLRkdT aHczU1JxbGtieGpmZVdvaThxRFBVQlM0bThMT3I4cUc5V281TmZvbjB6CisrekxQNGJjaTN6SER2 VmNhYVpycnNVQnMveVpiZytEZ2thMURtWDdla21lY2NyMnlUZEtERmdQdXBZVXl4VmJUbAorK2E5 WkxKeXNqRkQ3cmdCdjFaY2xIb25McDZWYm0rWm9UcXZ0ZW80aWtBeTZMOVJ0QldKMjNYRUszNFBr UC8rYzUKKysydldaYU9ybmpTZUJIYkZjZThjZEpTeHFXcFArZVNDSTVJOVhiRHJZRklzUS9ncUtn dHpES3kyaWhKMlk4U1RMCisreU80aHlGUEZqeGMrR2c0L1AyUHBtVDVDWTJ0eTQ0TTBCV3MrSkdX OTZDSlBycnBsZjJsbVFVUUpqNUxaWTY2WAorK1ovNEM5TDdaWXRLWiticzVTdlU0NnlXdWdBdlFa WDIyWG05eExYV3lWWFJkeDNiaiszTTNmRG5GOWRpL3pkYmgKKytDZ0x4N29XUE5yWGM3RkNham5u OUFvSUJBUUQ1Rk1Zd1JwdzlOV1Q5V0R4UXd4K2NTSTRJY2JkODhCeVRXNjNTCisrTHplUndaQTBK OS9TZndPK2FCUnVwemM5R2tHWENpWmNHTXczQUdzQ3RpZzh5Rmx3OEU1S256TjdLbGZ0RE1uTQor KzlOVXh4emxSOFZ3S3lMblpmRzdzRFRsMDU3WmxVdWpucWhtdC9GOEY3ZEl5N0ZWTzFkRS84bm5n QStGWVRDT0cKKytVWmRHand5QkRsRE0wSkpkVVdHWTN4c2x1dGNwQ0RONW16U1RLank5ZHJNdklt QXNoUmF3eFJGNldCcG43dnIyCisrbkM2dmNpcWZ4MU16eDF2eWswSm0waWxheWREZExNQURqdC9p TDROa3IwQkVzNGsrVXpRaUtEd3A4Z3U3YWJRMQorK2VCZnhkOUlhcjRodFFhMkkxRXdsNlAwMUcv cStaWXdnSGhKOVJWbjRBeFFYZWZJTEFvSUJBUUR2Q291T1JkUVgKKytDOHdzeXA3TXdYbEYvM05R ZU5ONS8rQjJtaGJ4ckJPZjdQbU1DWExua1JXY2p3SnR6eXBXRnFKMHNxYWkvMiswCisrYnFiTWNq WDVtYVQ4c3RUMnNobDN6WGUvRWp0MmUzVEJZcGMxdHl1c2VzOEtiNUJNVThodTZ0VGQzRzJDTVhw RAorK2RUNkRWZW1KWkNUdHdqOWFCTkl4U2l6dmxnTW9sSm5DcHpoUG5sZkhTSTZFK2czbS9MVFRv M0h3YmpNU3cvVXEKKytpcmdqT3BJMndTQkI2TFpQU2dqdmZjWVBSeVdVazE2TDRBNXVTWDBjQURu b3ZERkxhNS9oMHdKdk4vT29DU1FnCisrckxDWEc1RTE4RXlMNVdjNThCQ1kxWnZ4bWpHM2xRdGdQ eFl1Mkp3YzM2Ui95L0pLbHhXNXN1RVI1Wk5wYmJENAorK3VPeVR0MlZ4TVEyYkFvSUJBUUM1K016 UkZxZG8vQWpmTDVZNUpyYmZWVHpYQ1REYTA5eENHZDE2WlU2MFFUV04KKysrNGVkL3IrbzFzVUtx VWNSRkIyTXpFTS8yRFFCalFwWkIvQ2JFV3ZXYTFYSldYeHlwWGJvd3ZlWlUrUXFPbm1OCisrdVF2 ajhXTHlBM28rUE5GOWU5UXZhdXdDckhwbjhWcHhidFBXdWFZb0tuVUZyZUZaWlF4SGhQR3hSQklT MkpPWgorK2VEclQ4WmFXbmtDa2gxQVpwNXNtUTcxTE9wclNsbUtyZzRqZDFHakNWTXhRUjVONUtY YnR5djBPVENaL1VGcUsKKysyYVJCc01QeUpna2FCQ2hrWlBMUmNLd2MrL3dsUVJ4MWZIUWIxNERO VEFwTXhvWEZPN2VPd3FtT2twQXQ5aXlsCisrU0JJd29TMFVVSTVhYjg4K2JCbVhOdktjdUZkTnVR NG5vd1RKVW45cEFvSUJBRE1Oa0lMQlhTdlM1RGVJeXVPMgorK1NwMXRrb1pVVis1TmZQWTNzTURL M0tJaWJhVy8rdCtFT0JabzRMN3RLUUNiOHZSemwyMW1tc2Z4ZmdSYVBEYmoKKyszcjN0djlnMGI0 WUx4eEJ5NTJwRnNjai9zb1hSYWkxN1NTN1Vad0EyUUsrWHpnRFliRGNMTkM2bUlzVFFHNEd4Cisr ZHNXazMvenMzS3VVU1FhZWhtd3JXSytmSVVLMzhjMXBMSzh2N0xveHJMa3F4bEh3WjA0UnRoSHc4 S1R0aEg3WAorK1BubDFKMExGOENTZU95ZldMU3VQVWZrVDBHRXpwdG5OSHBFYmFIZlFNNlI2ZWFH aFZKUEY2QVptZTR5NllZZ2cKKyttMmloaFN0MW4wWFZFV3BIWVdqeEZ5M21LMm16NzV1bkZDNExN K05FWTJwMnp1VVFvQ3c3TmpuWTNRWXJmQ254CisrclJNQ2dnRUFYZVhzTVNMRmpqeXVvTDdpS2JB eG81MkhEL1AwZkJveTU4THlSY3dmTlZyMGx2WWFuNHBZRXgrbworK0tpakloOUsxNlBxWFpYS01B OXYwMDNCK3VsbUY4Yko3U2RkQ1o1Tkd2bkZoVVREZTREZFRLZ3AyUnV3UTNCc2MKKyszc2tQSURi aFZFVHlPTEN0eXMzNFVTSHJxOFUvMERsR1kzZUxSZnh3OUduYkt4U0JHYS9LRXUvcVFMUE5VbzUw CisrN3hIWkRnN0dLZUMza3FOSmVxS005cmtwMFZ6SUdrRW5hRDkxMjdMZU5EbUVSRGZmdHhKekZv Qy9USHZVQkxmVQorKzZTdXMyWll3UkU4VkZ2S0MzMFE0NXQvYzU0WDNJdWhZdkF1aUN1VG15ZkU0 cnV5enlPd0t6aFVrZWVMcTFBUFgKKytnMHZlRmJ5ZnpsSjBxOHF6RC9pZmZxcUlhMlpTbVE9PQor Ky0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0KK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0 by9vdGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcCBi L3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmlsaXR5bGludXgvdHN0X3FhY2Nlc3Np YmlsaXR5bGludXguY3BwCitpbmRleCA3YmEzNzE1ZTEzLi43NTJhYTEyMmY2IDEwMDY0NAorLS0t IGEvcXRiYXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vz c2liaWxpdHlsaW51eC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3Np YmlsaXR5bGludXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwCitAQCAtMTc5LDYgKzE3OSw3 IEBAIHZvaWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGludXg6OmluaXRUZXN0Q2FzZSgpCisgICAgIFFW RVJJRlkoIWFkZHJlc3MuaXNFbXB0eSgpKTsKKyAKKyAgICAgbV93aW5kb3cgPSBuZXcgQWNjZXNz aWJsZVRlc3RXaW5kb3coKTsKKysgICAgbV93aW5kb3ctPnNldE9iamVjdE5hbWUoIm1haW5XaW5k b3ciX0wxKTsKKyAgICAgbV93aW5kb3ctPnNob3coKTsKKyAKKyAgICAgUVZFUklGWShRVGVzdDo6 cVdhaXRGb3JXaW5kb3dFeHBvc2VkKG1fd2luZG93KSk7CitAQCAtMjM2LDggKzIzNywxMSBAQCBi b29sIGhhc1N0YXRlKFFEQnVzSW50ZXJmYWNlICppbnRlcmZhY2UsIEF0c3BpU3RhdGVUeXBlIHN0 YXRlKQorIHZvaWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGludXg6OnRlc3RMYWJlbCgpCisgeworICAg ICBRTGFiZWwgKmwgPSBuZXcgUUxhYmVsKG1fd2luZG93KTsKKysgICAgbC0+c2V0T2JqZWN0TmFt ZSgidGhlT2JqZWN0TmFtZSJfTDEpOworICAgICBsLT5zZXRUZXh0KCJIZWxsbyBBMTF5Iik7Cisg ICAgIG1fd2luZG93LT5hZGRXaWRnZXQobCk7CisrICAgIGF1dG8gYTExeUVtcHR5ID0gbmV3IFFM YWJlbChtX3dpbmRvdyk7CisrICAgIG1fd2luZG93LT5hZGRXaWRnZXQobCk7CisgCisgICAgIC8v IEFwcGxpY2F0aW9uCisgICAgIFFDT01QQVJFKGdldFBhcmVudChtYWluV2luZG93KSwgUUxhdGlu MVN0cmluZyhBVFNQSV9EQlVTX1BBVEhfUk9PVCkpOworQEAgLTI0OSw2ICsyNTMsOCBAQCB2b2lk IHRzdF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojp0ZXN0TGFiZWwoKQorICAgICBRQ09NUEFSRShnZXRD aGlsZHJlbihsYWJlbEludGVyZmFjZSkuY291bnQoKSwgMCk7CisgICAgIFFDT01QQVJFKGxhYmVs SW50ZXJmYWNlLT5jYWxsKFFEQnVzOjpCbG9jaywgIkdldFJvbGVOYW1lIikuYXJndW1lbnRzKCku Zmlyc3QoKS50b1N0cmluZygpLCBRTGF0aW4xU3RyaW5nKCJsYWJlbCIpKTsKKyAgICAgUUNPTVBB UkUobGFiZWxJbnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAiR2V0Um9sZSIpLmFyZ3VtZW50 cygpLmZpcnN0KCkudG9VSW50KCksIDI5dSk7CisrICAgIFFDT01QQVJFKGxhYmVsSW50ZXJmYWNl LT5jYWxsKFFEQnVzOjpCbG9jaywgIkdldEFjY2Vzc2libGVJZCIpLmFyZ3VtZW50cygpLmZpcnN0 KCkudG9TdHJpbmcoKSwKKysgICAgICAgICAgICAgUUxhdGluMVN0cmluZygibWFpbldpbmRvdy50 aGVPYmplY3ROYW1lIikpOworICAgICBRQ09NUEFSRShnZXRQYXJlbnQobGFiZWxJbnRlcmZhY2Up LCBtYWluV2luZG93LT5wYXRoKCkpOworICAgICBRVkVSSUZZKCFoYXNTdGF0ZShsYWJlbEludGVy ZmFjZSwgQVRTUElfU1RBVEVfRURJVEFCTEUpKTsKKyAgICAgUVZFUklGWShoYXNTdGF0ZShsYWJl bEludGVyZmFjZSwgQVRTUElfU1RBVEVfUkVBRF9PTkxZKSk7CitAQCAtMjU2LDcgKzI2MiwxMiBA QCB2b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojp0ZXN0TGFiZWwoKQorICAgICBsLT5zZXRU ZXh0KCJOZXcgdGV4dCIpOworICAgICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+cHJvcGVydHko Ik5hbWUiKS50b1N0cmluZygpLCBsLT50ZXh0KCkpOworIAorKyAgICBhdXRvICphMTF5RW1wdHlJ bnRlcmZhY2UgPSBnZXRJbnRlcmZhY2UoY2hpbGRyZW4uYXQoMSksICJvcmcuYTExeS5hdHNwaS5B Y2Nlc3NpYmxlIik7CisrICAgIFFDT01QQVJFKGExMXlFbXB0eUludGVyZmFjZS0+Y2FsbChRREJ1 czo6QmxvY2ssICJHZXRBY2Nlc3NpYmxlSWQiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvU3RyaW5n KCksCisrICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIm1haW5XaW5kb3cuUUxhYmVsIikpOwor KworICAgICBtX3dpbmRvdy0+Y2xlYXJDaGlsZHJlbigpOworKyAgICBkZWxldGUgYTExeUVtcHR5 SW50ZXJmYWNlOworICAgICBkZWxldGUgbGFiZWxJbnRlcmZhY2U7CisgfQorIAorZGlmZiAtLWdp dCBhL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5L3RzdF9xc3FscXVlcnku Y3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVy eS5jcHAKK2luZGV4IDc2ZGY2MWM4OTIuLjZkNmQ2NWI3OTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uv dGVzdHMvYXV0by9zcWwva2VybmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcAorKysrIGIv cXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAK K0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmln aHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBU aGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5z aW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qgc3VpdGUgb2YgdGhl IFF0IFRvb2xraXQuCitAQCAtNjgsNiArNjgsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lk IHF1ZXJ5X2V4ZWMoKTsKKyAgICAgdm9pZCBleGVjRXJyb3JSZWNvdmVyeV9kYXRhKCkgeyBnZW5l cmljX2RhdGEoKTsgfQorICAgICB2b2lkIGV4ZWNFcnJvclJlY292ZXJ5KCk7CisrICAgIHZvaWQg cHJlbWF0dXJlRXhlY19kYXRhKCkgeyBnZW5lcmljX2RhdGEoKTsgfQorKyAgICB2b2lkIHByZW1h dHVyZUV4ZWMoKTsKKyAgICAgdm9pZCBmaXJzdF9kYXRhKCkgeyBnZW5lcmljX2RhdGEoKTsgfQor ICAgICB2b2lkIGZpcnN0KCk7CisgICAgIHZvaWQgbmV4dF9kYXRhKCkgeyBnZW5lcmljX2RhdGEo KTsgfQorQEAgLTI3NzAsNiArMjc3MiwzNSBAQCB2b2lkIHRzdF9RU3FsUXVlcnk6OmV4ZWNFcnJv clJlY292ZXJ5KCkKKyAgICAgUVZFUklGWV9TUUwoIHEsIGV4ZWMoKSApOworIH0KKyAKKyt2b2lk IHRzdF9RU3FsUXVlcnk6OnByZW1hdHVyZUV4ZWMoKQorK3sKKysgICAgUUZFVENIKFFTdHJpbmcs IGRiTmFtZSk7CisrICAgIC8vIFdlIG9ubHkgd2FudCB0aGUgZW5naW5lIG5hbWUsIGZvciBhZGRE YXRhYmFzZSgpOgorKyAgICBpbnQgY3V0ID0gZGJOYW1lLmluZGV4T2YoUUNoYXIoJ0AnKSk7Cisr ICAgIGlmIChjdXQgPCAwKQorKyAgICAgICAgUVNLSVAoIkZhaWxlZCB0byBwYXJzZSBkYXRhYmFz ZSB0eXBlIG91dCBvZiBuYW1lIik7CisrICAgIGRiTmFtZS50cnVuY2F0ZShjdXQpOworKyAgICBj dXQgPSBkYk5hbWUuaW5kZXhPZihRQ2hhcignXycpKTsKKysgICAgaWYgKGN1dCA+PSAwKQorKyAg ICAgICAgZGJOYW1lID0gZGJOYW1lLm1pZChjdXQgKyAxKTsKKysKKysgICAgYXV0byBkYiA9IFFT cWxEYXRhYmFzZTo6YWRkRGF0YWJhc2UoZGJOYW1lKTsKKysgICAgUVNxbFF1ZXJ5IHEoZGIpOwor KworKyAgICBRVGVzdDo6aWdub3JlTWVzc2FnZShRdFdhcm5pbmdNc2csCisrICAgICAgICAgICAg ICAgICAgICAgICAgICJRU3FsRGF0YWJhc2VQcml2YXRlOjpyZW1vdmVEYXRhYmFzZTogY29ubmVj dGlvbiAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICIncXRfc3FsX2RlZmF1bHRfY29ubmVj dGlvbicgaXMgc3RpbGwgaW4gdXNlLCBhbGwgIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAi cXVlcmllcyB3aWxsIGNlYXNlIHRvIHdvcmsuIik7CisrICAgIFFUZXN0OjppZ25vcmVNZXNzYWdl KFF0V2FybmluZ01zZywKKysgICAgICAgICAgICAgICAgICAgICAgICAgIlFTcWxEYXRhYmFzZVBy aXZhdGU6OmFkZERhdGFiYXNlOiBkdXBsaWNhdGUgY29ubmVjdGlvbiBuYW1lICIKKysgICAgICAg ICAgICAgICAgICAgICAgICAgIidxdF9zcWxfZGVmYXVsdF9jb25uZWN0aW9uJywgb2xkIGNvbm5l Y3Rpb24gcmVtb3ZlZC4iKTsKKysgICAgYXV0byBvdGhlckRiID0gUVNxbERhdGFiYXNlOjphZGRE YXRhYmFzZShkYk5hbWUpOworKworKyAgICBRVGVzdDo6aWdub3JlTWVzc2FnZShRdFdhcm5pbmdN c2csICJRU3FsUXVlcnk6OmV4ZWM6IGNhbGxlZCBiZWZvcmUgZHJpdmVyIGhhcyBiZWVuIHNldCB1 cCIpOworKyAgICAvLyBRVEJVRy0xMDAwMzc6IHNob3VsZG4ndCBjcmFzaCAhCisrICAgIFFWRVJJ RlkoIXEuZXhlYygic2VsZWN0IHN0dWZmIGZyb20gVGhlVm9pZCIpKTsKKyt9CisrCisgdm9pZCB0 c3RfUVNxbFF1ZXJ5OjpsYXN0SW5zZXJ0SWQoKQorIHsKKyAgICAgUUZFVENIKCBRU3RyaW5nLCBk Yk5hbWUgKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFj dGl0ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcCBiL3F0YmFz ZS90ZXN0cy9hdXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJh Y3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCitpbmRleCA0YWEzZjhkNjBiLi5kMjA1MGE2MWFhIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0 ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9h dXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9k ZWx0ZXN0ZXIuY3BwCitAQCAtMTE1LDYgKzExNSwxMCBAQCB2b2lkIHRzdF9RQWJzdHJhY3RJdGVt TW9kZWxUZXN0ZXI6OnN0YW5kYXJkSXRlbU1vZGVsWmVyb0NvbHVtbnMoKQorICAgICAvLyBRVEJV Ry05Mjg4NgorICAgICBtb2RlbC5pbnNlcnRSb3dzKDAsIDUpOworICAgICBtb2RlbC5yZW1vdmVS b3dzKDEsIDIpOworKworKyAgICBjb25zdCBRTW9kZWxJbmRleCBwYXJlbnRJbmRleCA9IG1vZGVs LmluZGV4KDAsIDApOworKyAgICBtb2RlbC5pbnNlcnRSb3dzKDAsIDUsIHBhcmVudEluZGV4KTsK KysgICAgbW9kZWwucmVtb3ZlUm93cygxLCAyLCBwYXJlbnRJbmRleCk7CisgfQorIAorIHZvaWQg dHN0X1FBYnN0cmFjdEl0ZW1Nb2RlbFRlc3Rlcjo6dGVzdEluc2VydFRocm91Z2hQcm94eSgpCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVf aW4uanNvbiBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2NzX2Jhc2VsaW5lX2lu Lmpzb24KK2luZGV4IDEyYTRhMjJhMTkuLmNlNTE4ZTc4ZmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uv dGVzdHMvYXV0by90b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5qc29uCisrKysgYi9xdGJh c2UvdGVzdHMvYXV0by90b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5qc29uCitAQCAtNjY4 LDUwICs2NjgsNiBAQAorICAgICAgICAgImlucHV0RmlsZSI6ICJ0YXNrMTkyNTUyLmgiLAorICAg ICAgICAgIm91dHB1dFJldmlzaW9uIjogNjcKKyAgICAgfSwKKy0gICAgeworLSAgICAgICAgImNs YXNzZXMiOiBbCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAiY2xhc3NOYW1lIjog IklubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24iLAorLSAgICAgICAgICAgICAgICAib2Jq ZWN0IjogdHJ1ZSwKKy0gICAgICAgICAgICAgICAgInF1YWxpZmllZENsYXNzTmFtZSI6ICJJbmxp bmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uIiwKKy0gICAgICAgICAgICAgICAgInNsb3RzIjog WworLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nl c3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhIiwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAg ICAgICAgICAgfSwKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAg ICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUi OiAiYiIsCistICAgICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0g ICAgICAgICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAg ICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICJuYW1lIjogImMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjog InZvaWQiCistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAgICAgewor LSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAibmFtZSI6ICJkIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAicmV0 dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAg ICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCist ICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZSIsCistICAgICAgICAgICAgICAgICAg ICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0KKy0gICAg ICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgInN1cGVyQ2xhc3NlcyI6IFsKKy0gICAg ICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1 YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiUU9iamVjdCIKKy0gICAg ICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgIH0KKy0g ICAgICAgIF0sCistICAgICAgICAiaW5wdXRGaWxlIjogInRhc2sxODk5OTYuaCIsCistICAgICAg ICAib3V0cHV0UmV2aXNpb24iOiA2NworLSAgICB9LAorICAgICB7CisgICAgICAgICAiY2xhc3Nl cyI6IFsKKyAgICAgICAgICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9v bHMvbW9jL21vYy5wcm8gYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybworaW5k ZXggYzMyNGIzYThjZC4uNGFjZWI3OGRjMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L3Rvb2xzL21vYy9tb2MucHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9j LnBybworQEAgLTE1LDcgKzE1LDcgQEAgY3Jvc3NfY29tcGlsZTogREVGSU5FUyArPSBNT0NfQ1JP U1NfQ09NUElMRUQKKyBIRUFERVJTICs9IHVzaW5nLW5hbWVzcGFjZXMuaCBuby1rZXl3b3Jkcy5o IHRhc2s4Nzg4My5oIGMtY29tbWVudHMuaCBiYWNrc2xhc2gtbmV3bGluZXMuaCBvbGRzdHlsZS1j YXN0cy5oIFwKKyAgICAgICAgICAgIHNsb3RzLXdpdGgtdm9pZC10ZW1wbGF0ZS5oIHFpbnZva2Fi bGUuaCBuYW1lc3BhY2VkLWZsYWdzLmggdHJpZ3JhcGhzLmggXAorICAgICAgICAgICAgZXNjYXBl cy1pbi1zdHJpbmctbGl0ZXJhbHMuaCBjc3R5bGUtZW51bXMuaCBxcHJpdmF0ZXNsb3RzLmggZ2Fk Z2V0d2l0aG5vZW51bXMuaCBcCistICAgICAgICAgICBkaXItaW4taW5jbHVkZS1wYXRoLmggc2lu Z2xlX2Z1bmN0aW9uX2tleXdvcmQuaCB0YXNrMTkyNTUyLmggdGFzazE4OTk5Ni5oIFwKKysgICAg ICAgICAgIGRpci1pbi1pbmNsdWRlLXBhdGguaCBzaW5nbGVfZnVuY3Rpb25fa2V5d29yZC5oIHRh c2sxOTI1NTIuaCBcCisgICAgICAgICAgICB0YXNrMjM0OTA5LmggdGFzazI0MDM2OC5oIHB1cmUt dmlydHVhbC1zaWduYWxzLmggY3h4MTEtZW51bXMuaCBcCisgICAgICAgICAgICBjeHgxMS1maW5h bC1jbGFzc2VzLmggXAorICAgICAgICAgICAgY3h4MTEtZXhwbGljaXQtb3ZlcnJpZGUtY29udHJv bC5oIFwKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdGFzazE4OTk5 Ni5oIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3Rhc2sxODk5OTYuaAorZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CitpbmRleCBmOTRhMDUxYjNhLi4wMDAwMDAwMDAwCistLS0gYS9xdGJh c2UvdGVzdHMvYXV0by90b29scy9tb2MvdGFzazE4OTk5Ni5oCisrKysgL2Rldi9udWxsCitAQCAt MSw0NyArMCwwIEBACistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0qKgorLSoqIENvcHlyaWdodCAo QykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCistKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQu aW8vbGljZW5zaW5nLworLSoqCistKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qgc3Vp dGUgb2YgdGhlIFF0IFRvb2xraXQuCistKioKKy0qKiAkUVRfQkVHSU5fTElDRU5TRTpHUEwtRVhD RVBUJAorLSoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorLSoqIExpY2Vuc2VlcyBob2xkaW5n IHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKy0qKiBh Y2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQg d2l0aCB0aGUKKy0qKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3 aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKy0qKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdl ZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworLSoqIGFuZCBj b25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVy dGhlcgorLSoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3 LnF0LmlvL2NvbnRhY3QtdXMuCistKioKKy0qKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBV c2FnZQorLSoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVQorLSoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorLSoqIEZvdW5kYXRpb24gd2l0aCBleGNl cHRpb25zIGFzIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDMtRVhDRVBUCistKiog aW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhl IGZvbGxvd2luZworLSoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKKy0qKiBiZSBtZXQ6IGh0dHBzOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorLSoqCistKiogJFFUX0VORF9MSUNFTlNFJAor LSoqCistKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0vLyBpbmxpbmUgZnVuY3Rpb25zIGNhbiBoYXZl IHRocm93IGRlY2xhcmF0aW9ucworLQorLSNpZm5kZWYgVEFTSzE4OTk5Nl9ICistI2RlZmluZSBU QVNLMTg5OTk2X0gKKy0KKy0jaW5jbHVkZSA8UU9iamVjdD4KKy0KKy1jbGFzcyBJbmxpbmVTbG90 c1dpdGhUaHJvd0RlY2xhcmF0aW9uIDogcHVibGljIFFPYmplY3QKKy17CistICAgIFFfT0JKRUNU CistCistcHVibGljIHNsb3RzOgorLSAgICB2b2lkIGEoKSB0aHJvdygpIHsgfQorLSAgICB2b2lk IGIoKSBjb25zdCB0aHJvdygpIHsgfQorLSAgICB2b2lkIGMoKSB0aHJvdygpOworLSAgICB2b2lk IGQoKSB0aHJvdyhpbnQpIHsgfQorLSAgICB2b2lkIGUoKSBjb25zdCB0aHJvdyhpbnQsZG91Ymxl KSB7IH0KKy19OworLQorLSNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rv b2xzL21vYy90c3RfbW9jLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9j LmNwcAoraW5kZXggYzcxNmFlYWQyMS4uMTVkZDllNDFlNSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90 ZXN0cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9jLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8v dG9vbHMvbW9jL3RzdF9tb2MuY3BwCitAQCAtNjMxLDcgKzYzMSw2IEBAIHB1YmxpYzoKKyBwcml2 YXRlIHNsb3RzOgorICAgICB2b2lkIGluaXRUZXN0Q2FzZSgpOworIAorLSAgICB2b2lkIHNsb3RX aXRoRXhjZXB0aW9uKCkgdGhyb3coTXlTdHJ1Y3QpOworICAgICB2b2lkIGRvbnRTdHJpcE5hbWVz cGFjZXMoKTsKKyAgICAgdm9pZCBvbGRTdHlsZUNhc3RzKCk7CisgICAgIHZvaWQgd2Fybk9uRXh0 cmFTaWduYWxTbG90UXVhbGlmaWFjdGlvbigpOworQEAgLTY3Myw3ICs2NzIsNiBAQCBwcml2YXRl IHNsb3RzOgorICAgICB2b2lkIHRlbXBsYXRlR3RHdCgpOworICAgICB2b2lkIHFwcml2YXRlc2xv dHMoKTsKKyAgICAgdm9pZCBxcHJpdmF0ZXByb3BlcnRpZXMoKTsKKy0gICAgdm9pZCBpbmxpbmVT bG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uKCk7CisgICAgIHZvaWQgd2Fybk9uUHJvcGVydHlXaXRo b3V0UkVBRCgpOworICAgICB2b2lkIGNvbnN0cnVjdG9ycygpOworICAgICB2b2lkIHR5cGVuYW1l V2l0aFVuc2lnbmVkKCk7CitAQCAtNzg0LDEyICs3ODIsNiBAQCB2b2lkIHRzdF9Nb2M6OmluaXRU ZXN0Q2FzZSgpCisgI2VuZGlmCisgfQorIAorLXZvaWQgdHN0X01vYzo6c2xvdFdpdGhFeGNlcHRp b24oKSB0aHJvdyhNeVN0cnVjdCkKKy17CistICAgIC8vIGJlIGhhcHB5CistICAgIFFWRVJJRlko dHJ1ZSk7CistfQorLQorIHZvaWQgdHN0X01vYzo6ZG9udFN0cmlwTmFtZXNwYWNlcygpCisgewor ICAgICBTZW5kZXIgc2VuZGVyOworQEAgLTgyNCw3ICs4MTYsNyBAQCB2b2lkIHRzdF9Nb2M6Om9s ZFN0eWxlQ2FzdHMoKQorIAorICAgICBRU3RyaW5nTGlzdCBhcmdzOworICAgICBhcmdzIDw8ICIt YyIgPDwgIi14IiA8PCAiYysrIiA8PCAiLVdvbGQtc3R5bGUtY2FzdCIgPDwgIi1JIiA8PCAiLiIK Ky0gICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxs IiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzExIiA8PCAiLSI7CisrICAgICAgICAgPDwgIi1JIiA8 PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0 ZD1jKysxeiIgPDwgIi0iOworICAgICBwcm9jLnN0YXJ0KCJnY2MiLCBhcmdzKTsKKyAgICAgUVZF UklGWShwcm9jLndhaXRGb3JTdGFydGVkKCkpOworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitA QCAtODk0LDcgKzg4Niw3IEBAIHZvaWQgdHN0X01vYzo6aW5wdXRGaWxlTmFtZVdpdGhEb3RzQnV0 Tm9FeHRlbnNpb24oKQorIAorICAgICBRU3RyaW5nTGlzdCBhcmdzOworICAgICBhcmdzIDw8ICIt YyIgPDwgIi14IiA8PCAiYysrIiA8PCAiLUkiIDw8ICIuLiIKKy0gICAgICAgICA8PCAiLUkiIDw8 IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3Rk PWMrKzExIiA8PCAiLSI7CisrICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICIt byIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxeiIgPDwgIi0iOworICAg ICBwcm9jLnN0YXJ0KCJnY2MiLCBhcmdzKTsKKyAgICAgUVZFUklGWShwcm9jLndhaXRGb3JTdGFy dGVkKCkpOworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitAQCAtMTE3NCw3ICsxMTY2LDcgQEAg dm9pZCB0c3RfTW9jOjppZ25vcmVPcHRpb25DbGFzaGVzKCkKKyAgICAgUVN0cmluZ0xpc3QgZ2Nj QXJnczsKKyAgICAgZ2NjQXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1JIiA8PCAi Li4iCisgICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItSSIgPDwgaW5jbHVk ZURpciA8PCAiLW8iIDw8ICIvZGV2L251bGwiCistICAgICAgICAgPDwgIi1mUElDIiA8PCAiLXN0 ZD1jKysxMSIgPDwgICItIjsKKysgICAgICAgICA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8 PCAgIi0iOworICAgICBwcm9jLnN0YXJ0KCJnY2MiLCBnY2NBcmdzKTsKKyAgICAgUVZFUklGWShw cm9jLndhaXRGb3JTdGFydGVkKCkpOworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitAQCAtMTU5 MywyMSArMTU4NSw2IEBAIHZvaWQgdHN0X01vYzo6cXByaXZhdGVwcm9wZXJ0aWVzKCkKKyAKKyB9 CisgCistI2luY2x1ZGUgInRhc2sxODk5OTYuaCIKKy0KKy12b2lkIElubGluZVNsb3RzV2l0aFRo cm93RGVjbGFyYXRpb246OmMoKSB0aHJvdygpIHt9CistCistdm9pZCB0c3RfTW9jOjppbmxpbmVT bG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uKCkKKy17CistICAgIElubGluZVNsb3RzV2l0aFRocm93 RGVjbGFyYXRpb24gdHN0OworLSAgICBjb25zdCBRTWV0YU9iamVjdCAqbW9iaiA9IHRzdC5tZXRh T2JqZWN0KCk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImEoKSIpICE9IC0xKTsK Ky0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiYigpIikgIT0gLTEpOworLSAgICBRVkVS SUZZKG1vYmotPmluZGV4T2ZTbG90KCJjKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+ aW5kZXhPZlNsb3QoImQoKSIpICE9IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xv dCgiZSgpIikgIT0gLTEpOworLX0KKy0KKyB2b2lkIHRzdF9Nb2M6Ondhcm5PblByb3BlcnR5V2l0 aG91dFJFQUQoKQorIHsKKyAjaWZkZWYgTU9DX0NST1NTX0NPTVBJTEVECitAQCAtMTg2OSw3ICsx ODQ2LDcgQEAgdm9pZCB0c3RfTW9jOjpub3RpZnlFcnJvcigpCisgCisgICAgIFFTdHJpbmdMaXN0 IGFyZ3M7CisgICAgIGFyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysiIDw8ICItSSIgPDwgIi4i CistICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVs bCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgIi0iOworKyAgICAgICAgIDw8ICItSSIg PDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1z dGQ9YysrMXoiIDw8ICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgYXJncyk7CisgICAgIFFW RVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQpOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2 aWV3L3RzdF9xaGVhZGVydmlldy5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12 aWV3cy9xaGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3BwCitpbmRleCBjMzU1ZWU5NjY1Li44 OGMwOWRlOGUwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmll d3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcAorQEAg LTI1MSw2ICsyNTEsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHRlc3RSZXNldENhY2hl ZFNpemVIaW50KCk7CisgICAgIHZvaWQgc3RhdHVzVGlwcygpOworICAgICB2b2lkIHRlc3RSZW1v dmluZ0NvbHVtbnNWaWFMYXlvdXRDaGFuZ2VkKCk7CisrICAgIHZvaWQgdGVzdE1vZGVsTW92aW5n Q29sdW1ucygpOworIAorIHByb3RlY3RlZDoKKyAgICAgdm9pZCBzZXR1cFRlc3REYXRhKGJvb2wg dXNlX3Jlc2V0X21vZGVsID0gZmFsc2UpOworQEAgLTM2MCw2ICszNjEsMTIgQEAgcHVibGljOgor ICAgICAgICAgZW5kUmVtb3ZlQ29sdW1ucygpOworICAgICB9CisgCisrICAgIHZvaWQgbW92ZUNv bHVtbihpbnQgZnJvbSwgaW50IHRvKQorKyAgICB7CisrICAgICAgICBiZWdpbk1vdmVDb2x1bW5z KFFNb2RlbEluZGV4KCksIGZyb20sIGZyb20sIFFNb2RlbEluZGV4KCksIHRvKTsKKysgICAgICAg IGVuZE1vdmVDb2x1bW5zKCk7CisrICAgIH0KKysKKyAgICAgdm9pZCBjbGVhbnVwKCkKKyAgICAg eworICAgICAgICAgZW1pdCBsYXlvdXRBYm91dFRvQmVDaGFuZ2VkKCk7CitAQCAtMzYyNyw1ICsz NjM0LDE4IEBAIHZvaWQgdHN0X1FIZWFkZXJWaWV3Ojp0ZXN0UmVtb3ZpbmdDb2x1bW5zVmlhTGF5 b3V0Q2hhbmdlZCgpCisgICAgIC8vIFRoZSBtYWluIHBvaW50IG9mIHRoaXMgdGVzdCBpcyB0aGF0 IHRoZSBzZWN0aW9uLXNpemUgcmVzdG9yaW5nIGNvZGUgZGlkbid0IGdvIG91dCBvZiBib3VuZHMu CisgfQorIAorK3ZvaWQgdHN0X1FIZWFkZXJWaWV3Ojp0ZXN0TW9kZWxNb3ZpbmdDb2x1bW5zKCkK Kyt7CisrICAgIFF0VGVzdE1vZGVsIG1vZGVsKDEwLCAxMCk7CisrICAgIFFIZWFkZXJWaWV3IGh2 KFF0OjpIb3Jpem9udGFsKTsKKysgICAgaHYuc2V0TW9kZWwoJm1vZGVsKTsKKysgICAgaHYucmVz aXplU2VjdGlvbnMoUUhlYWRlclZpZXc6OlJlc2l6ZVRvQ29udGVudHMpOworKyAgICBodi5zaG93 KCk7CisrCisrICAgIFFQZXJzaXN0ZW50TW9kZWxJbmRleCBpbmRleDMgPSBtb2RlbC5pbmRleCgw LCAzKTsKKysgICAgbW9kZWwubW92ZUNvbHVtbigzLCAxKTsKKysgICAgUUNPTVBBUkUoaW5kZXgz LmNvbHVtbigpLCAxKTsKKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUUhlYWRlclZpZXcpCisgI2lu Y2x1ZGUgInRzdF9xaGVhZGVydmlldy5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAgYi9xdGJh c2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3L3RzdF9xdGFibGV2aWV3 LmNwcAoraW5kZXggNzYxMzU3YjI1Mi4uMDZiYjcwNjA3NCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3Bw CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3L3Rz dF9xdGFibGV2aWV3LmNwcAorQEAgLTM5Nyw2ICszOTcsNyBAQCBwcml2YXRlIHNsb3RzOgorICAg ICB2b2lkIGNoZWNrSGVhZGVyTWluU2l6ZSgpOworIAorICAgICB2b2lkIHJlc2l6ZVRvQ29udGVu dHMoKTsKKysgICAgdm9pZCByZXNpemVUb0NvbnRlbnRzU3BhbnMoKTsKKyAKKyAgICAgdm9pZCB0 YWJGb2N1cygpOworICAgICB2b2lkIGJpZ01vZGVsKCk7CitAQCAtMzcyMSw2ICszNzIyLDcwIEBA IHZvaWQgdHN0X1FUYWJsZVZpZXc6OnJlc2l6ZVRvQ29udGVudHMoKQorIAorIH0KKyAKKysKKytj bGFzcyBTcGFuTW9kZWwgOiBwdWJsaWMgUUFic3RyYWN0VGFibGVNb2RlbAorK3sKKytwdWJsaWM6 CisrICAgIFNwYW5Nb2RlbChib29sIHNlY3Rpb25zTW92ZWQpCisrICAgICAgICA6IF9zZWN0aW9u c01vdmVkKHNlY3Rpb25zTW92ZWQpCisrICAgIHt9CisrICAgIGludCBjb2x1bW5Db3VudChjb25z dCBRTW9kZWxJbmRleCAmID0ge30pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDI7IH0KKysgICAg aW50IHJvd0NvdW50KGNvbnN0IFFNb2RlbEluZGV4ICYgPSB7fSkgY29uc3Qgb3ZlcnJpZGUgeyBy ZXR1cm4gMTsgfQorKyAgICBRVmFyaWFudCBkYXRhKGNvbnN0IFFNb2RlbEluZGV4ICZpZHgsIGlu dCByb2xlID0gUXQ6OkRpc3BsYXlSb2xlKSBjb25zdCBvdmVycmlkZQorKyAgICB7CisrICAgICAg ICBpZiAocm9sZSAhPSBRdDo6RGlzcGxheVJvbGUpCisrICAgICAgICAgICAgcmV0dXJuIFFWYXJp YW50KCk7CisrICAgICAgICBjb25zdCBpbnQgY29sID0gX3NlY3Rpb25zTW92ZWQgPyAxIC0gaWR4 LmNvbHVtbigpIDogaWR4LmNvbHVtbigpOworKyAgICAgICAgaWYgKGNvbCA9PSAwKQorKyAgICAg ICAgICAgIHJldHVybiAiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFk aXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3Jl IGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIjsKKysgICAgICAgIHJldHVybiBRVmFyaWFudCgpOwor KyAgICB9CisrcHJpdmF0ZToKKysgICAgYm9vbCBfc2VjdGlvbnNNb3ZlZDsKKyt9OworKworKwor K3ZvaWQgdHN0X1FUYWJsZVZpZXc6OnJlc2l6ZVRvQ29udGVudHNTcGFucygpCisreworKyAgICBT cGFuTW9kZWwgbW9kZWwxKGZhbHNlKTsKKysgICAgU3Bhbk1vZGVsIG1vZGVsMih0cnVlKTsKKysg ICAgUVRhYmxlVmlldyB2aWV3MSwgdmlldzIsIHZpZXczOworKyAgICB2aWV3MS5zZXRNb2RlbCgm bW9kZWwxKTsKKysgICAgdmlldzIuc2V0TW9kZWwoJm1vZGVsMik7CisrICAgIHZpZXcyLmhvcml6 b250YWxIZWFkZXIoKS0+bW92ZVNlY3Rpb24oMCwgMSk7CisrICAgIHZpZXczLnNldE1vZGVsKCZt b2RlbDEpOworKworKyAgICB2aWV3MS5zZXRTcGFuKDAsIDAsIDEsIDIpOworKyAgICB2aWV3Mi5z ZXRTcGFuKDAsIDEsIDEsIDIpOworKyAgICB2aWV3MS5zaG93KCk7CisrICAgIHZpZXcyLnNob3co KTsKKysgICAgdmlldzMuc2hvdygpOworKyAgICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRv d0V4cG9zZWQoJnZpZXcxKSk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhw b3NlZCgmdmlldzIpKTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2Vk KCZ2aWV3MykpOworKyAgICB2aWV3MS5zZXRDb2x1bW5XaWR0aCgwLCAxMDApOworKyAgICB2aWV3 MS5zZXRDb2x1bW5XaWR0aCgxLCAxMDApOworKyAgICB2aWV3Mi5zZXRDb2x1bW5XaWR0aCgwLCAx MDApOworKyAgICB2aWV3Mi5zZXRDb2x1bW5XaWR0aCgxLCAxMDApOworKyAgICB2aWV3My5zZXRD b2x1bW5XaWR0aCgwLCAyMDApOworKworKyAgICB2aWV3MS5yZXNpemVSb3dUb0NvbnRlbnRzKDAp OworKyAgICB2aWV3Mi5yZXNpemVSb3dUb0NvbnRlbnRzKDApOworKyAgICB2aWV3My5yZXNpemVS b3dUb0NvbnRlbnRzKDApOworKyAgICBRQ09NUEFSRSh2aWV3MS5yb3dIZWlnaHQoMCksIHZpZXcz LnJvd0hlaWdodCgwKSk7CisrICAgIFFDT01QQVJFKHZpZXcyLnJvd0hlaWdodCgwKSwgdmlldzMu cm93SGVpZ2h0KDApKTsKKysKKysgICAgdmlldzMucmVzaXplQ29sdW1uVG9Db250ZW50cygwKTsK KysgICAgdmlldzMucmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAgLy8gaGVpZ2h0IHNob3Vs ZCBiZSBvbmx5IDEgdGV4dCBsaW5lIGZvciBlYXN5IHRlc3RpbmcKKysgICAgdmlldzEuc2V0Um93 SGVpZ2h0KDAsIHZpZXczLnZlcnRpY2FsSGVhZGVyKCktPnNlY3Rpb25TaXplKDApKTsKKysgICAg dmlldzIuc2V0Um93SGVpZ2h0KDAsIHZpZXczLnZlcnRpY2FsSGVhZGVyKCktPnNlY3Rpb25TaXpl KDApKTsKKysgICAgdmlldzEucmVzaXplQ29sdW1uVG9Db250ZW50cygwKTsKKysgICAgdmlldzIu cmVzaXplQ29sdW1uVG9Db250ZW50cygxKTsKKysgICAgUUNPTVBBUkUodmlldzEuY29sdW1uV2lk dGgoMCksIHZpZXczLmNvbHVtbldpZHRoKDApIC0gdmlldzEuY29sdW1uV2lkdGgoMSkpOworKyAg ICBRQ09NUEFSRSh2aWV3Mi5jb2x1bW5XaWR0aCgwKSwgdmlldzMuY29sdW1uV2lkdGgoMCkgLSB2 aWV3Mi5jb2x1bW5XaWR0aCgxKSk7CisrfQorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIGV4dGVy biBib29sIFFfV0lER0VUU19FWFBPUlQgcXRfdGFiX2FsbF93aWRnZXRzKCk7IC8vIHFhcHBsaWNh dGlvbi5jcHAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3BwIGIvcXRi YXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRp b24uY3BwCitpbmRleCBhM2I4ZWY3OGQ4Li40OTU1Y2ViZDVkIDEwMDY0NAorLS0tIGEvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24u Y3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5lbC9xYXBwbGljYXRpb24v dHN0X3FhcHBsaWNhdGlvbi5jcHAKK0BAIC0xNDk4LDcgKzE0OTgsNyBAQCB2b2lkIHRzdF9RQXBw bGljYXRpb246OmRlc2t0b3BTZXR0aW5nc0F3YXJlKCkKKyAgICAgZW52aXJvbm1lbnQgKz0gUUxh dGluMVN0cmluZygiUVRfTUFDX0RJU0FCTEVfRk9SRUdST1VORF9BUFBMSUNBVElPTl9UUkFOU0ZP Uk09MSIpOworICAgICB0ZXN0UHJvY2Vzcy5zZXRFbnZpcm9ubWVudChlbnZpcm9ubWVudCk7Cisg I2VuZGlmCistICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCJkZXNrdG9wc2V0dGluZ3Nhd2FyZV9oZWxw ZXIiKTsKKysgICAgdGVzdFByb2Nlc3Muc3RhcnQoIi4vZGVza3RvcHNldHRpbmdzYXdhcmVfaGVs cGVyIik7CisgICAgIFFWRVJJRlkyKHRlc3RQcm9jZXNzLndhaXRGb3JTdGFydGVkKCksCisgICAg ICAgICAgICAgIHFQcmludGFibGUoUVN0cmluZzo6ZnJvbUxhdGluMSgiQ2Fubm90IHN0YXJ0ICdk ZXNrdG9wc2V0dGluZ3Nhd2FyZV9oZWxwZXInOiAlMSIpLmFyZyh0ZXN0UHJvY2Vzcy5lcnJvclN0 cmluZygpKSkpOworICAgICBRVkVSSUZZKHRlc3RQcm9jZXNzLndhaXRGb3JGaW5pc2hlZCgxMDAw MCkpOworQEAgLTI0NTIsNyArMjQ1Miw3IEBAIHZvaWQgdHN0X1FBcHBsaWNhdGlvbjo6cXRidWdf MTI2NzMoKQorICNpZiBRVF9DT05GSUcocHJvY2VzcykKKyAgICAgUVByb2Nlc3MgdGVzdFByb2Nl c3M7CisgICAgIFFTdHJpbmdMaXN0IGFyZ3VtZW50czsKKy0gICAgdGVzdFByb2Nlc3Muc3RhcnQo Im1vZGFsX2hlbHBlciIsIGFyZ3VtZW50cyk7CisrICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCIuL21v ZGFsX2hlbHBlciIsIGFyZ3VtZW50cyk7CisgICAgIFFWRVJJRlkyKHRlc3RQcm9jZXNzLndhaXRG b3JTdGFydGVkKCksCisgICAgICAgICAgICAgIHFQcmludGFibGUoUVN0cmluZzo6ZnJvbUxhdGlu MSgiQ2Fubm90IHN0YXJ0ICdtb2RhbF9oZWxwZXInOiAlMSIpLmFyZyh0ZXN0UHJvY2Vzcy5lcnJv clN0cmluZygpKSkpOworICAgICBRVkVSSUZZKHRlc3RQcm9jZXNzLndhaXRGb3JGaW5pc2hlZCgy MDAwMCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9x YWJzdHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0 by93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3Bw CitpbmRleCBlYjEwOGE0MGRlLi5kY2E1NTI4YzFiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3Rz L2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3RfcWFic3RyYWN0YnV0dG9u LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1 dHRvbi90c3RfcWFic3RyYWN0YnV0dG9uLmNwcAorQEAgLTQxLDYgKzQxLDcgQEAKKyAKKyAjaW5j bHVkZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorICNpbmNsdWRlIDxxcGEvcXBsYXRm b3JtaW50ZWdyYXRpb24uaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisgCisg Y2xhc3MgdHN0X1FBYnN0cmFjdEJ1dHRvbiA6IHB1YmxpYyBRT2JqZWN0CisgeworQEAgLTc2LDYg Kzc3LDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBrZXlOYXZpZ2F0aW9uKCk7CisgI2Vu ZGlmCisgCisrICAgIHZvaWQgYnV0dG9uUHJlc3NLZXlzKCk7CisrCisgcHJvdGVjdGVkIHNsb3Rz OgorICAgICB2b2lkIG9uQ2xpY2tlZCgpOworICAgICB2b2lkIG9uVG9nZ2xlZCggYm9vbCBvbiAp OworQEAgLTI2OSw3ICsyNzIsMTMgQEAgdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpzZXRBdXRv UmVwZWF0KCkKKyAgICAgICAgIFFDT01QQVJFKHByZXNzX2NvdW50LCBjbGlja19jb3VudCk7Cisg ICAgICAgICBRVkVSSUZZKGNsaWNrX2NvdW50ID4gMSk7CisgICAgICAgICBicmVhazsKKy0gICAg Y2FzZSA0OgorKyAgICBjYXNlIDQ6IHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NL ZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3Jt VGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoYnV0 dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICAgICAgUVNL SVAoInBsYXRmb3JtIHRoZW1lIGhhcyBLZXlfRW50ZXIgaW4gQnV0dG9uUHJlc3NLZXlzIik7Cisr ICAgICAgICB9CisgICAgICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBl ZmZlY3Qgd2hlbiBhdXRvcmVwZWF0IGlzIGZhbHNlCisgICAgICAgICB0ZXN0V2lkZ2V0LT5zZXRE b3duKCBmYWxzZSApOworICAgICAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggZmFsc2Ug KTsKK0BAIC0yODYsNyArMjk1LDE0IEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6c2V0QXV0 b1JlcGVhdCgpCisgCisgICAgICAgICBRVkVSSUZZKCBjbGlja19jb3VudCA9PSAwICk7CisgICAg ICAgICBicmVhazsKKy0gICAgY2FzZSA1OgorKyAgICB9CisrICAgIGNhc2UgNTogeworKyAgICAg ICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpw bGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6 S2V5Pj4oKTsKKysgICAgICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9F bnRlcikpIHsKKysgICAgICAgICAgICBRU0tJUCgicGxhdGZvcm0gdGhlbWUgaGFzIEtleV9FbnRl ciBpbiBCdXR0b25QcmVzc0tleXMiKTsKKysgICAgICAgIH0KKyAgICAgICAgIC8vIGNoZWNrIHRo YXQgcHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVjdCB3aGVuIGF1dG9yZXBlYXQgaXMgdHJ1ZQor ICAgICAgICAgdGVzdFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKyAgICAgICAgIHRlc3RXaWRn ZXQtPnNldEF1dG9SZXBlYXQoIHRydWUgKTsKK0BAIC0zMDQsNiArMzIwLDcgQEAgdm9pZCB0c3Rf UUFic3RyYWN0QnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkKKyAKKyAgICAgICAgIFFWRVJJRlkoIGNs aWNrX2NvdW50ID09IDAgKTsKKyAgICAgICAgIGJyZWFrOworKyAgICB9CisgICAgIGNhc2UgNjoK KyAgICAgICAgIC8vIHZlcmlmeSBhdXRvcmVwZWF0IGlzIG9mZiBieSBkZWZhdWx0LgorICAgICAg ICAgTXlCdXR0b24gdG1wKCAwKTsKK0BAIC02NTEsNSArNjY4LDE2IEBAIHZvaWQgdHN0X1FBYnN0 cmFjdEJ1dHRvbjo6a2V5TmF2aWdhdGlvbigpCisgfQorICNlbmRpZgorIAorK3ZvaWQgdHN0X1FB YnN0cmFjdEJ1dHRvbjo6YnV0dG9uUHJlc3NLZXlzKCkKKyt7CisrICAgIGNvbnN0IGF1dG8gYnV0 dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxh dGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBmb3IgKGludCBp ID0gMDsgaSA8IGJ1dHRvblByZXNzS2V5cy5sZW5ndGgoKTsgKytpKSB7CisrICAgICAgICBRVGVz dDo6a2V5Q2xpY2sodGVzdFdpZGdldCwgYnV0dG9uUHJlc3NLZXlzW2ldKTsKKysgICAgICAgIFFD T01QQVJFKGNsaWNrX2NvdW50LCBpICsgMSk7CisrICAgIH0KKyt9CisrCisgUVRFU1RfTUFJTih0 c3RfUUFic3RyYWN0QnV0dG9uKQorICNpbmNsdWRlICJ0c3RfcWFic3RyYWN0YnV0dG9uLm1vYyIK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94 L3RzdF9xY29tYm9ib3guY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fj b21ib2JveC90c3RfcWNvbWJvYm94LmNwcAoraW5kZXggMzI0MzcwNTBmNS4uNDZiNWFmNmQ2MyAx MDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gv dHN0X3Fjb21ib2JveC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0 cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAKK0BAIC0xNjgsNiArMTY4LDcgQEAgcHJpdmF0 ZSBzbG90czoKKyAgICAgdm9pZCBjaGVja01lbnVJdGVtUG9zV2hlblN0eWxlU2hlZXRJc1NldCgp OworICAgICB2b2lkIGNoZWNrRW1iZWRkZWRMaW5lRWRpdFdoZW5TdHlsZVNoZWV0SXNTZXQoKTsK KyAgICAgdm9pZCBwcm9wYWdhdGVTdHlsZUNoYW5nZXMoKTsKKysgICAgdm9pZCBidXR0b25QcmVz c0tleXMoKTsKKyAKKyBwcml2YXRlOgorICAgICBQbGF0Zm9ybUlucHV0Q29udGV4dCBtX3BsYXRm b3JtSW5wdXRDb250ZXh0OworQEAgLTE2ODIsNiArMTY4MywxNiBAQCB2b2lkIHRzdF9RQ29tYm9C b3g6OnNldE1vZGVsKCkKKyAgICAgUUNPTVBBUkUoYm94LnJvb3RNb2RlbEluZGV4KCksIHJvb3RN b2RlbEluZGV4KTsKKyAgICAgYm94LnNldE1vZGVsKGJveC5tb2RlbCgpKTsKKyAgICAgUUNPTVBB UkUoYm94LnJvb3RNb2RlbEluZGV4KCksIHJvb3RNb2RlbEluZGV4KTsKKysKKysgICAgLy8gY2hl Y2sgdGhhdCBzZXR0aW5nIHRoZSBzYW1lIG1vZGVsIGFzIHRoZSBjb21wbGV0ZXIncyBkb2Vzbid0 IGNyYXNoCisrICAgIFFDb21wbGV0ZXIgKmNvbXBsZXRlciA9IG5ldyBRQ29tcGxldGVyKCZib3gp OworKyAgICBib3guc2V0RWRpdGFibGUodHJ1ZSk7CisrICAgIGJveC5zZXRDb21wbGV0ZXIoY29t cGxldGVyKTsKKysgICAgYXV0byAqbGlzdE1vZGVsID0gbmV3IFFTdHJpbmdMaXN0TW9kZWwoeyAi b25lIiwgInR3byIgfSwgY29tcGxldGVyKTsKKysgICAgY29tcGxldGVyLT5zZXRNb2RlbChsaXN0 TW9kZWwpOworKyAgICBRQ09NUEFSRShsaXN0TW9kZWwtPnJvd0NvdW50KCksIDIpOyAvLyBtYWtl IHN1cmUgaXQgd2Fzbid0IGRlbGV0ZWQKKysgICAgYm94LnNldE1vZGVsKGxpc3RNb2RlbCk7Cisr ICAgIFFDT01QQVJFKGxpc3RNb2RlbC0+cm93Q291bnQoKSwgMik7IC8vIG1ha2Ugc3VyZSBpdCB3 YXNuJ3QgZGVsZXRlZAorIH0KKyAKKyB2b2lkIHRzdF9RQ29tYm9Cb3g6OnNldEN1c3RvbU1vZGVs QW5kVmlldygpCitAQCAtMzYzMiw1ICszNjQzLDI0IEBAIHZvaWQgdHN0X1FDb21ib0JveDo6cHJv cGFnYXRlU3R5bGVDaGFuZ2VzKCkKKyAgICAgUVZFUklGWShmcmFtZVN0eWxlLmlucXVpcmVkKTsK KyB9CisgCisrdm9pZCB0c3RfUUNvbWJvQm94OjpidXR0b25QcmVzc0tleXMoKQorK3sKKysgICAg UUNvbWJvQm94IGNvbWJvQm94OworKyAgICBjb21ib0JveC5zZXRFZGl0YWJsZShmYWxzZSk7Cisr ICAgIGNvbWJvQm94LmFkZEl0ZW0oUVN0cmluZzo6bnVtYmVyKDEpKTsKKysgICAgY29tYm9Cb3gu YWRkSXRlbShRU3RyaW5nOjpudW1iZXIoMikpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNz S2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhl bWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkg PCBidXR0b25QcmVzc0tleXMubGVuZ3RoKCk7ICsraSkgeworKyAgICAgICAgUVRlc3Q6OmtleUNs aWNrKCZjb21ib0JveCwgYnV0dG9uUHJlc3NLZXlzW2ldKTsKKysgICAgICAgIC8vIE9uIHNvbWUg cGxhdGZvcm1zLCBhIHdpbmRvdyB3aWxsIG5vdCBiZSBpbW1lZGlhdGVseSB2aXNpYmxlLAorKyAg ICAgICAgLy8gYnV0IHRha2Ugc29tZSBldmVudC1sb29wIGl0ZXJhdGlvbnMgdG8gY29tcGxldGUu CisrICAgICAgICAvLyBVc2luZyBRVFJZX1ZFUklGWSB0byBkZWFsIHdpdGggdGhhdC4KKysgICAg ICAgIFFUUllfVkVSSUZZKGNvbWJvQm94LnZpZXcoKS0+aXNWaXNpYmxlKCkpOworKyAgICAgICAg Y29tYm9Cb3guaGlkZVBvcHVwKCk7CisrICAgIH0KKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUUNv bWJvQm94KQorICNpbmNsdWRlICJ0c3RfcWNvbWJvYm94Lm1vYyIKK2RpZmYgLS1naXQgYS9xdGJh c2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3Fjb21tYW5k bGlua2J1dHRvbi5wcm8gYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1h bmRsaW5rYnV0dG9uL3Fjb21tYW5kbGlua2J1dHRvbi5wcm8KK2luZGV4IGJlM2NmY2QxMDQuLmMy MjhmZGZjY2EgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMv cWNvbW1hbmRsaW5rYnV0dG9uL3Fjb21tYW5kbGlua2J1dHRvbi5wcm8KKysrKyBiL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5r YnV0dG9uLnBybworQEAgLTEsNiArMSw2IEBACisgQ09ORklHICs9IHRlc3RjYXNlCisgVEFSR0VU ID0gdHN0X3Fjb21tYW5kbGlua2J1dHRvbgorLVFUICs9IHdpZGdldHMgdGVzdGxpYgorK1FUICs9 IHdpZGdldHMgdGVzdGxpYiBndWktcHJpdmF0ZQorIFNPVVJDRVMgICs9IHRzdF9xY29tbWFuZGxp bmtidXR0b24uY3BwCisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0 cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcCBi L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0 X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAKK2luZGV4IDAwNDRkMzNjNjYuLjRjZjA2Mjk2ZTQgMTAw NjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5r YnV0dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0 by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0 b24uY3BwCitAQCAtNDAsNiArNDAsOSBAQAorICNpbmNsdWRlIDxRR3JpZExheW91dD4KKyAjaW5j bHVkZSA8UVBhaW50ZXI+CisgCisrI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3Au aD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisrCisgY2xhc3MgdHN0X1FDb21t YW5kTGlua0J1dHRvbiA6IHB1YmxpYyBRT2JqZWN0CisgeworICAgICBRX09CSkVDVAorQEAgLTIy Myw2ICsyMjYsMTMgQEAgdm9pZCB0c3RfUUNvbW1hbmRMaW5rQnV0dG9uOjpzZXRBdXRvUmVwZWF0 KCkKKyAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBoYXMgbm8gZWZmZWN0CisgICAg IHJlc2V0Q291bnRlcnMoKTsKKyAgICAgdGVzdFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKysg ICAgLy8gU2tpcCBhZnRlciByZXNldCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtleV9FbnRlcgor KyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6 OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4o KTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgewor KyAgICAgICAgcmV0dXJuOworKyAgICB9CisgICAgIHRlc3RXaWRnZXQtPnNldEF1dG9SZXBlYXQo IGZhbHNlICk7CisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVzdFdpZGdldCwgUXQ6OktleV9FbnRl ciApOworIAorQEAgLTI1NSw2ICsyNjUsMTQgQEAgdm9pZCB0c3RfUUNvbW1hbmRMaW5rQnV0dG9u OjpwcmVzc2VkKCkKKyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAg IFFDT01QQVJFKCByZWxlYXNlX2NvdW50LCAodWludCkxICk7CisgCisrICAgIC8vIFNraXAgaWYg QnV0dG9uUHJlc3NLZXlzIGhhcyBLZXlfRW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVz c0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRo ZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tl eXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQor KworICAgICBRVGVzdDo6a2V5UHJlc3MoIHRlc3RXaWRnZXQsUXQ6OktleV9FbnRlciApOworICAg ICBRQ09NUEFSRSggcHJlc3NfY291bnQsICh1aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVh c2VfY291bnQsICh1aW50KTEgKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRn ZXRzL3dpZGdldHMvcWdyb3VwYm94L3Fncm91cGJveC5wcm8gYi9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3Fncm91cGJveC5wcm8KK2luZGV4IDRhNWU3NmZmNjUu LmEyMzVmYTFmYWMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcWdyb3VwYm94L3Fncm91cGJveC5wcm8KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdl dHMvd2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3VwYm94LnBybworQEAgLTEsNiArMSw2IEBACisgQ09O RklHICs9IHRlc3RjYXNlCisgVEFSR0VUID0gdHN0X3Fncm91cGJveAorLVFUICs9IHdpZGdldHMg dGVzdGxpYgorK1FUICs9IHdpZGdldHMgdGVzdGxpYiBndWktcHJpdmF0ZQorIFNPVVJDRVMgICs9 IHRzdF9xZ3JvdXBib3guY3BwCisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC90c3RfcWdyb3VwYm94LmNwcCBiL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fncm91cGJveC5jcHAKK2luZGV4 IDRmYjVkMjYyY2EuLmQ4ZDc1NjJiNzMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3RzdF9xZ3JvdXBib3guY3BwCisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3RzdF9xZ3JvdXBib3guY3BwCitA QCAtMzUsNiArMzUsOSBAQAorICNpbmNsdWRlIDxRUmFkaW9CdXR0b24+CisgI2luY2x1ZGUgPFFE aWFsb2c+CisgCisrI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5j bHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisrCisgI2luY2x1ZGUgInFncm91cGJveC5oIgor IAorIGNsYXNzIHRzdF9RR3JvdXBCb3ggOiBwdWJsaWMgUU9iamVjdAorQEAgLTY5LDYgKzcyLDcg QEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBwcm9wYWdhdGVGb2N1cygpOworICAgICB2b2lk IHRhc2tfUVRCVUdfMTkxNzBfaWdub3JlTW91c2VSZWxlYXNlRXZlbnQoKTsKKyAgICAgdm9pZCB0 YXNrX1FUQlVHXzE1NTE5X3Byb3BhZ2F0ZU1vdXNlRXZlbnRzKCk7CisrICAgIHZvaWQgYnV0dG9u UHJlc3NLZXlzKCk7CisgCisgcHJpdmF0ZToKKyAgICAgYm9vbCBjaGVja2VkOworQEAgLTYxMCw2 ICs2MTQsMjAgQEAgdm9pZCB0c3RfUUdyb3VwQm94Ojp0YXNrX1FUQlVHXzE1NTE5X3Byb3BhZ2F0 ZU1vdXNlRXZlbnRzKCkKKyAgICAgUUNPTVBBUkUocGFyZW50Lm1vdXNlTW92ZWQsIHRydWUpOwor IH0KKyAKKyt2b2lkIHRzdF9RR3JvdXBCb3g6OmJ1dHRvblByZXNzS2V5cygpCisreworKyAgICBR R3JvdXBCb3ggZ3JvdXBCb3g7CisrICAgIGdyb3VwQm94LnNldENoZWNrYWJsZSh0cnVlKTsKKysg ICAgUVNpZ25hbFNweSBjbGlja2VkU3B5KCZncm91cEJveCwgJlFHcm91cEJveDo6Y2xpY2tlZCk7 CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0 ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+ PigpOworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ1dHRvblByZXNzS2V5cy5sZW5ndGgoKTsg KytpKSB7CisrICAgICAgICBRVGVzdDo6a2V5Q2xpY2soJmdyb3VwQm94LCBidXR0b25QcmVzc0tl eXNbaV0pOworKyAgICAgICAgUUNPTVBBUkUoY2xpY2tlZFNweS5sZW5ndGgoKSwgaSArIDEpOwor KyAgICB9CisrfQorKworIHZvaWQgdHN0X1FHcm91cEJveDo6c2VuZE1vdXNlTW92ZUV2ZW50KFFX aWRnZXQgKndpZGdldCwgY29uc3QgUVBvaW50ICZsb2NhbFBvcykKKyB7CisgICAgIC8vIFNlbmQg YSBNb3VzZU1vdmUgZXZlbnQgd2l0aG91dCBhY3R1YWxseSBtb3ZpbmcgdGhlIHBvaW50ZXIKK2Rp ZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24v cXB1c2hidXR0b24ucHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNo YnV0dG9uL3FwdXNoYnV0dG9uLnBybworaW5kZXggMzUzYWQwNmNhMi4uZTU1ZjYxNDhmMiAxMDA2 NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9x cHVzaGJ1dHRvbi5wcm8KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9x cHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8KK0BAIC0xLDYgKzEsNiBAQAorIENPTkZJRyArPSB0 ZXN0Y2FzZQorIFRBUkdFVCA9IHRzdF9xcHVzaGJ1dHRvbgorLVFUICs9IHdpZGdldHMgdGVzdGxp YgorK1FUICs9IHdpZGdldHMgdGVzdGxpYiBndWktcHJpdmF0ZQorIFNPVVJDRVMgICs9IHRzdF9x cHVzaGJ1dHRvbi5jcHAKKyAKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRn ZXRzL3dpZGdldHMvcXB1c2hidXR0b24vdHN0X3FwdXNoYnV0dG9uLmNwcCBiL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1c2hidXR0b24uY3BwCitp bmRleCBlODE4NTE0YTc5Li40MDQzZTkzMjZhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAKKysrKyBi L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1c2hi dXR0b24uY3BwCitAQCAtNDEsNiArNDEsOSBAQAorICNpbmNsdWRlIDxRU3R5bGVGYWN0b3J5Pgor ICNpbmNsdWRlIDxRVGFiV2lkZ2V0PgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNh dGlvbl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorKworIGNsYXNzIHRz dF9RUHVzaEJ1dHRvbiA6IHB1YmxpYyBRT2JqZWN0CisgeworIFFfT0JKRUNUCitAQCAtMjEyLDYg KzIxNSwxMyBAQCB2b2lkIHRzdF9RUHVzaEJ1dHRvbjo6YXV0b1JlcGVhdCgpCisgICAgIC8vIGNo ZWNrIHRoYXQgcHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVjdAorICAgICByZXNldENvdW50ZXJz KCk7CisgICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7CisrICAgIC8vIFNraXAgYWZ0 ZXIgcmVzZXQgaWYgQnV0dG9uUHJlc3NLZXlzIGhhcyBLZXlfRW50ZXIKKysgICAgY29uc3QgYXV0 byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1l KCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50 KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChi dXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgIHJldHVy bjsKKysgICAgfQorICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCBmYWxzZSApOworICAg ICBRVGVzdDo6a2V5UHJlc3MoIHRlc3RXaWRnZXQsIFF0OjpLZXlfRW50ZXIgKTsKKyAKK0BAIC0y NDcsNiArMjU3LDE0IEBAIHZvaWQgdHN0X1FQdXNoQnV0dG9uOjpwcmVzc2VkKCkKKyAgICAgUUNP TVBBUkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFDT01QQVJFKCByZWxlYXNlX2Nv dW50LCAodWludCkxICk7CisgCisrICAgIC8vIFNraXAgaWYgQnV0dG9uUHJlc3NLZXlzIGhhcyBL ZXlfRW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRp b25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMp CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8 UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9F bnRlcikpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworICAgICBRVGVzdDo6a2V5UHJl c3MoIHRlc3RXaWRnZXQsUXQ6OktleV9FbnRlciApOworICAgICBRQ09NUEFSRSggcHJlc3NfY291 bnQsICh1aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291bnQsICh1aW50KTEgKTsK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvbWFudWFsL3JoaS9jdWJlbWFwX3JlbmRlci9idWls ZHNoYWRlci5iYXQgYi9xdGJhc2UvdGVzdHMvbWFudWFsL3JoaS9jdWJlbWFwX3JlbmRlci9idWls ZHNoYWRlci5iYXQKK29sZCBtb2RlIDEwMDc1NQorbmV3IG1vZGUgMTAwNjQ0CitTdWJtb2R1bGUg cXRjb25uZWN0aXZpdHkgZTk1N2Q0ODEuLjA1NjI5NGMwOgorZGlmZiAtLWdpdCBhL3F0Y29ubmVj dGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAgYi9xdGNvbm5lY3Rpdml0 eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hjaW1hbmFnZXIuY3BwCitpbmRleCBlMjYzNWZhZS4uYThi OGUzYjkgMTAwNjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hj aW1hbmFnZXIuY3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hj aW1hbmFnZXIuY3BwCitAQCAtNTYzLDkgKzU2MywxMSBAQCB2b2lkIEhjaU1hbmFnZXI6OmhhbmRs ZUhjaUFjbFBhY2tldChjb25zdCBxdWludDggKmRhdGEsIGludCBzaXplKQorIAorIHZvaWQgSGNp TWFuYWdlcjo6aGFuZGxlTGVNZXRhRXZlbnQoY29uc3QgcXVpbnQ4ICpkYXRhKQorIHsKKy0gICAg Ly8gU3BlYyB2NC4yLCBWb2wgMiwgcGFydCBFLCA3LjcuNjVmZgorKyAgICAvLyBTcGVjIHY1LjMs IFZvbCA0LCBwYXJ0IEUsIDcuNy42NS4qCisgICAgIHN3aXRjaCAoKmRhdGEpIHsKKy0gICAgY2Fz ZSAweDE6IHsKKysgICAgY2FzZSAweDE6IC8vIEhDSV9MRV9Db25uZWN0aW9uX0NvbXBsZXRlCisr ICAgIGNhc2UgMHhBOiAvLyBIQ0lfTEVfRW5oYW5jZWRfQ29ubmVjdGlvbl9Db21wbGV0ZQorKyAg ICB7CisgICAgICAgICBjb25zdCBxdWludDE2IGhhbmRsZSA9IGJ0X2dldF9sZTE2KGRhdGEgKyAy KTsKKyAgICAgICAgIGVtaXQgY29ubmVjdGlvbkNvbXBsZXRlKGhhbmRsZSk7CisgICAgICAgICBi cmVhazsKK2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9v dGhzZXJ2aWNlZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwIGIvcXRjb25uZWN0aXZpdHkvc3JjL2Js dWV0b290aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNwcAoraW5kZXgg NmE5MzE0M2IuLjRhMThjZmM3IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0 b290aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNwcAorKysrIGIvcXRj b25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50 X2JsdWV6LmNwcAorQEAgLTMyMCw3ICszMjAsMTAgQEAgdm9pZCBRQmx1ZXRvb3RoU2VydmljZURp c2NvdmVyeUFnZW50UHJpdmF0ZTo6X3FfZmluaXNoU2RwU2NhbihRQmx1ZXRvb3RoU2VydmljZUQK KyAgICAgICAgICAgICBmb3IgKGNvbnN0IFFCbHVldG9vdGhVdWlkICZpZCA6IHNlcnZpY2VDbGFz c1V1aWRzKSB7CisgICAgICAgICAgICAgICAgIGlmIChpZC5taW5pbXVtU2l6ZSgpID09IDE2KSB7 CisgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlSW5mby5zZXRTZXJ2aWNlVXVpZChpZCk7Cist ICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlSW5mby5zZXRTZXJ2aWNlTmFtZShRQmx1ZXRvb3Ro U2VydmljZURpc2NvdmVyeUFnZW50Ojp0cigiQ3VzdG9tIFNlcnZpY2UiKSk7CisrICAgICAgICAg ICAgICAgICAgICBpZiAoc2VydmljZUluZm8uc2VydmljZU5hbWUoKS5pc0VtcHR5KCkpIHsKKysg ICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlSW5mby5zZXRTZXJ2aWNlTmFtZSgKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRQmx1ZXRvb3RoU2VydmljZURpc2NvdmVy eUFnZW50Ojp0cigiQ3VzdG9tIFNlcnZpY2UiKSk7CisrICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgICAgICBRQmx1ZXRvb3RoU2VydmljZUluZm86OlNlcXVlbmNlIG1vZFNl cSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJbmZvLmF0dHJpYnV0ZShR Qmx1ZXRvb3RoU2VydmljZUluZm86OlNlcnZpY2VDbGFzc0lkcykudmFsdWU8UUJsdWV0b290aFNl cnZpY2VJbmZvOjpTZXF1ZW5jZT4oKTsKKyAgICAgICAgICAgICAgICAgICAgIG1vZFNlcS5yZW1v dmVPbmUoUVZhcmlhbnQ6OmZyb21WYWx1ZShpZCkpOworQEAgLTMzNCw4ICszMzcsMTAgQEAgdm9p ZCBRQmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFnZW50UHJpdmF0ZTo6X3FfZmluaXNoU2RwU2Nh bihRQmx1ZXRvb3RoU2VydmljZUQKKyAgICAgICAgICAgICAgICAgcUNEZWJ1ZyhRVF9CVF9CTFVF WikgPDwgIkRpc2NvdmVyZWQgc2VydmljZXMiIDw8IGRpc2NvdmVyZWREZXZpY2VzLmF0KDApLmFk ZHJlc3MoKS50b1N0cmluZygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDw8IHNlcnZpY2VJbmZvLnNlcnZpY2VOYW1lKCkgPDwgc2VydmljZUluZm8uc2VydmljZVV1aWQo KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiPj4+IiA8PCBzZXJ2 aWNlSW5mby5zZXJ2aWNlQ2xhc3NVdWlkcygpOworLQorLSAgICAgICAgICAgICAgICBlbWl0IHEt PnNlcnZpY2VEaXNjb3ZlcmVkKHNlcnZpY2VJbmZvKTsKKysgICAgICAgICAgICAgICAgLy8gVXNl IHF1ZXVlZCBjb25uZWN0aW9uIHRvIGFsbG93IHVzIGZpbmlzaCB0aGUgc2VydmljZSBsb29waW5n OyB0aGUgYXBwbGljYXRpb24KKysgICAgICAgICAgICAgICAgLy8gbWlnaHQgY2FsbCBzdG9wKCkg d2hlbiBpdCBoYXMgZGV0ZWN0ZWQgdGhlIHNlcnZpY2Utb2YtaW50ZXJlc3QuCisrICAgICAgICAg ICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QocSwgInNlcnZpY2VEaXNjb3ZlcmVkIiwg UXQ6OlF1ZXVlZENvbm5lY3Rpb24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUV9BUkcoUUJsdWV0b290aFNlcnZpY2VJbmZvLCBzZXJ2aWNlSW5mbykpOworICAg ICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2 aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5jcHAgYi9xdGNvbm5lY3Rpdml0eS9z cmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXQuY3BwCitpbmRleCBlNGQ4NTQ0Ny4uYWFkZDQ3 NTUgMTAwNjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhz b2NrZXQuY3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhz b2NrZXQuY3BwCitAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgUUJsdWV0b290aFNvY2tldDo6c2V0 U29ja2V0U3RhdGUoUUJsdWV0b290aFNvY2tldDo6U29ja2V0U3RhdGUgc3RhdGUpCisgYm9vbCBR Qmx1ZXRvb3RoU29ja2V0OjpjYW5SZWFkTGluZSgpIGNvbnN0CisgeworICAgICBRX0QoY29uc3Qg UUJsdWV0b290aFNvY2tldEJhc2UpOworLSAgICByZXR1cm4gZC0+Y2FuUmVhZExpbmUoKTsKKysg ICAgcmV0dXJuIGQtPmNhblJlYWRMaW5lKCkgfHwgUUlPRGV2aWNlOjpjYW5SZWFkTGluZSgpOwor IH0KKyAKKyAvKiEKK2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3Fi bHVldG9vdGhzb2NrZXRfYmx1ZXpkYnVzLmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9v dGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3BwCitpbmRleCAwODRhYTk1OC4uZDZhYTE3 YTcgMTAwNjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhz b2NrZXRfYmx1ZXpkYnVzLmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9x Ymx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAKK0BAIC0yODQsNiArMjg0LDEwIEBAIHZvaWQg UUJsdWV0b290aFNvY2tldFByaXZhdGVCbHVlekRCdXM6OmNvbm5lY3RUb1NlcnZpY2UoCisgICAg ICAgICByZXR1cm47CisgICAgIH0KKyAKKysgICAgaWYgKHNlcnZpY2Uuc29ja2V0UHJvdG9jb2wo KSAhPSBRQmx1ZXRvb3RoU2VydmljZUluZm86OlByb3RvY29sOjpVbmtub3duUHJvdG9jb2wpCisr ICAgICAgICBzb2NrZXRUeXBlID0gc2VydmljZS5zb2NrZXRQcm90b2NvbCgpOworKyAgICBxQ0Rl YnVnKFFUX0JUX0JMVUVaKSA8PCAiU29ja2V0IHByb3RvY29sIHVzZWQ6IiA8PCBzb2NrZXRUeXBl OworKworICAgICBjb25uZWN0VG9TZXJ2aWNlKHNlcnZpY2UuZGV2aWNlKCkuYWRkcmVzcygpLCB0 YXJnZXRTZXJ2aWNlLCBvcGVuTW9kZSk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2 aXR5L3Rlc3RzL2F1dG8vcWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAg Yi9xdGNvbm5lY3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0X3FibHVldG9v dGhzb2NrZXQuY3BwCitpbmRleCAwNWJjMWEwZi4uYTdiNWVmMWYgMTAwNjQ0CistLS0gYS9xdGNv bm5lY3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0X3FibHVldG9vdGhzb2Nr ZXQuY3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQv dHN0X3FibHVldG9vdGhzb2NrZXQuY3BwCitAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgdHN0X1FC bHVldG9vdGhTb2NrZXQ6OmluaXRUZXN0Q2FzZSgpCisgICAgIHFEZWJ1ZygpIDw8ICJTdGFydGlu ZyBkaXNjb3ZlcnkiOworIAorICAgICBzZGEtPnNldFV1aWRGaWx0ZXIoUUJsdWV0b290aFV1aWQo UVN0cmluZyhURVNUX1NFUlZJQ0VfVVVJRCkpKTsKKy0gICAgc2RhLT5zdGFydChRQmx1ZXRvb3Ro U2VydmljZURpc2NvdmVyeUFnZW50OjpNaW5pbWFsRGlzY292ZXJ5KTsKKysgICAgc2RhLT5zdGFy dChRQmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFnZW50OjpGdWxsRGlzY292ZXJ5KTsKKyAKKyAg ICAgZm9yIChpbnQgY29ubmVjdFRpbWUgPSBNYXhDb25uZWN0VGltZTsgIWRvbmVfZGlzY292ZXJ5 ICYmIGNvbm5lY3RUaW1lID4gMDsgY29ubmVjdFRpbWUgLT0gMTAwMCkKKyAgICAgICAgIFFUZXN0 OjpxV2FpdCgxMDAwKTsKK1N1Ym1vZHVsZSBxdGRlY2xhcmF0aXZlIGY1NzAxZjBkLi44ZGVmZTdi ZjoKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29tbW9uL3FxbWxqc2ZpeGVk cG9vbGFycmF5X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRw b29sYXJyYXlfcC5oCitpbmRleCBiNjViOTk0ZDZjLi4xNWE4Y2Q2ODc4IDEwMDY0NAorLS0tIGEv cXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2NvbW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmgKKysr KyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29sYXJyYXlfcC5o CitAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CisgICAgICAgICBpZiAoUVR5cGVJbmZvPFQ+Ojpp c0NvbXBsZXgpIHsKKyAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kp CisgICAgICAgICAgICAgICAgIG5ldyAoZGF0YSArIGkpIFQodmVjdG9yLmF0KGkpKTsKKy0gICAg ICAgIH0gZWxzZSB7CisrICAgICAgICB9IGVsc2UgaWYgKGNvdW50KSB7CisgICAgICAgICAgICAg bWVtY3B5KGRhdGEsIHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPih2ZWN0b3IuY29uc3REYXRhKCkp LCBjb3VudCAqIHNpemVvZihUKSk7CisgICAgICAgICB9CisgICAgIH0KK2RpZmYgLS1naXQgYS9x dGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3cmFwcGVyLmNwcCBiL3F0 ZGVjbGFyYXRpdmUvc3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwCitpbmRl eCBlNTdjZGQ4Mjc4Li45NDYxMzU5OGFmIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMv cW1sL2pzcnVudGltZS9xdjRxb2JqZWN0d3JhcHBlci5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUv c3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwCitAQCAtMTE0NSw4ICsxMTQ1 LDcgQEAgdm9pZCBIZWFwOjpRT2JqZWN0V3JhcHBlcjo6bWFya09iamVjdHMoSGVhcDo6QmFzZSAq dGhhdCwgUVY0OjpNYXJrU3RhY2sgKm1hcmtTdGEKKyB2b2lkIFFPYmplY3RXcmFwcGVyOjpkZXN0 cm95T2JqZWN0KGJvb2wgbGFzdENhbGwpCisgeworICAgICBIZWFwOjpRT2JqZWN0V3JhcHBlciAq aCA9IGQoKTsKKy0gICAgaWYgKCFoLT5pbnRlcm5hbENsYXNzKQorLSAgICAgICAgcmV0dXJuOyAv LyBkZXN0cm95T2JqZWN0IGFscmVhZHkgZ290IGNhbGxlZAorKyAgICBRX0FTU0VSVChoLT5pbnRl cm5hbENsYXNzKTsKKyAKKyAgICAgaWYgKGgtPm9iamVjdCgpKSB7CisgICAgICAgICBRUW1sRGF0 YSAqZGRhdGEgPSBRUW1sRGF0YTo6Z2V0KGgtPm9iamVjdCgpLCBmYWxzZSk7CitAQCAtMTE3Niw3 ICsxMTc1LDcgQEAgdm9pZCBRT2JqZWN0V3JhcHBlcjo6ZGVzdHJveU9iamVjdChib29sIGxhc3RD YWxsKQorICAgICAgICAgfQorICAgICB9CisgCistICAgIGgtPn5EYXRhKCk7CisrICAgIGgtPmRl c3Ryb3koKTsKKyB9CisgCisgCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21l bW9yeS9xdjRtbS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcAor aW5kZXggMDZjYWYwNGU1YS4uZGExNDlhNjdjNCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUv c3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVt b3J5L3F2NG1tLmNwcAorQEAgLTk4MSw3ICs5ODEsNyBAQCB2b2lkIE1lbW9yeU1hbmFnZXI6OnN3 ZWVwKGJvb2wgbGFzdFN3ZWVwLCBDbGFzc0Rlc3Ryb3lTdGF0c0NhbGxiYWNrIGNsYXNzQ291bnRQ dAorIAorICAgICBpZiAoTXVsdGlwbHlXcmFwcGVkUU9iamVjdE1hcCAqbXVsdGlwbHlXcmFwcGVk UU9iamVjdHMgPSBlbmdpbmUtPm1fbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMpIHsKKyAgICAgICAg IGZvciAoTXVsdGlwbHlXcmFwcGVkUU9iamVjdE1hcDo6SXRlcmF0b3IgaXQgPSBtdWx0aXBseVdy YXBwZWRRT2JqZWN0cy0+YmVnaW4oKTsgaXQgIT0gbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMtPmVu ZCgpOykgeworLSAgICAgICAgICAgIGlmICghaXQudmFsdWUoKS5pc051bGxPclVuZGVmaW5lZCgp KQorKyAgICAgICAgICAgIGlmIChpdC52YWx1ZSgpLmlzTnVsbE9yVW5kZWZpbmVkKCkpCisgICAg ICAgICAgICAgICAgIGl0ID0gbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMtPmVyYXNlKGl0KTsKKyAg ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICsraXQ7CitkaWZmIC0tZ2l0IGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcCBiL3F0ZGVjbGFy YXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKK2luZGV4IDIwNzlhOGVk MDQuLmE1NzdjYjIzNTEgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMv cXFtbGRlbGVnYXRlbW9kZWwuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMv cXFtbGRlbGVnYXRlbW9kZWwuY3BwCitAQCAtMzg5LDYgKzM4OSwxMiBAQCB2b2lkIFFRbWxEZWxl Z2F0ZU1vZGVsUHJpdmF0ZTo6Y29ubmVjdFRvQWJzdHJhY3RJdGVtTW9kZWwoKQorICAgICAgICAg ICAgICAgICAgICAgICBxLCAgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3Ffcm93c1JlbW92ZWQo UU1vZGVsSW5kZXgsaW50LGludCkpKTsKKyAgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJz dHJhY3RJdGVtTW9kZWwsIFNJR05BTChyb3dzQWJvdXRUb0JlUmVtb3ZlZChRTW9kZWxJbmRleCxp bnQsaW50KSksCisgICAgICAgICAgICAgICAgICAgICAgIHEsICBRUW1sRGVsZWdhdGVNb2RlbCwg U0xPVChfcV9yb3dzQWJvdXRUb0JlUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAg ICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKGNvbHVt bnNJbnNlcnRlZChRTW9kZWxJbmRleCxpbnQsaW50KSksCisrICAgICAgICAgICAgICAgICAgICAg IHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2NvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRl eCxpbnQsaW50KSkpOworKyAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1N b2RlbCwgU0lHTkFMKGNvbHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwKKysgICAg ICAgICAgICAgICAgICAgICAgcSwgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3FfY29sdW1uc1Jl bW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWlt LCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChjb2x1bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50 LGludCxRTW9kZWxJbmRleCxpbnQpKSwKKysgICAgICAgICAgICAgICAgICAgICAgcSwgUVFtbERl bGVnYXRlTW9kZWwsIFNMT1QoX3FfY29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1v ZGVsSW5kZXgsaW50KSkpOworICAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0 ZW1Nb2RlbCwgU0lHTkFMKGRhdGFDaGFuZ2VkKFFNb2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0 b3I8aW50PikpLAorICAgICAgICAgICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwg U0xPVChfcV9kYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9yPGludD4p KSk7CisgICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdO QUwocm93c01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSksCitAQCAt NDEzLDYgKzQxOSwxMiBAQCB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsUHJpdmF0ZTo6ZGlzY29ubmVj dEZyb21BYnN0cmFjdEl0ZW1Nb2RlbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgcSwgU0xP VChfcV9yb3dzQWJvdXRUb0JlUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworICAgICBR T2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKHJvd3NSZW1vdmVkKFFNb2RlbEluZGV4LGlu dCxpbnQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBxLCBTTE9UKF9xX3Jvd3NSZW1vdmVk KFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBT SUdOQUwoY29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwgcSwKKysgICAgICAg ICAgICAgICAgICAgICAgICBTTE9UKF9xX2NvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRleCxpbnQs aW50KSkpOworKyAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGNvbHVtbnNSZW1v dmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwgcSwKKysgICAgICAgICAgICAgICAgICAgICAgICBT TE9UKF9xX2NvbHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIFFPYmpl Y3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwoY29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxp bnQsUU1vZGVsSW5kZXgsaW50KSksIHEsCisrICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChf cV9jb2x1bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSk7Cisg ICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwoZGF0YUNoYW5nZWQoUU1vZGVsSW5k ZXgsUU1vZGVsSW5kZXgsUVZlY3RvcjxpbnQ+KSksCisgICAgICAgICAgICAgICAgICAgICAgICAg cSwgU0xPVChfcV9kYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9yPGlu dD4pKSk7CisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwocm93c01vdmVkKFFN b2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSksCitAQCAtMTk3Myw2ICsxOTg1LDM4 IEBAIHZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX3Jvd3NNb3ZlZCgKKyAgICAgfQorIH0KKyAK Kyt2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9jb2x1bW5zSW5zZXJ0ZWQoY29uc3QgUU1vZGVs SW5kZXggJnBhcmVudCwgaW50IGJlZ2luLCBpbnQgZW5kKQorK3sKKysgICAgUV9EKFFRbWxEZWxl Z2F0ZU1vZGVsKTsKKysgICAgUV9VTlVTRUQoZW5kKTsKKysgICAgaWYgKHBhcmVudCA9PSBkLT5t X2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYgYmVnaW4gPT0gMCkgeworKyAgICAgICAgLy8gbWFy ayBhbGwgaXRlbXMgYXMgY2hhbmdlZAorKyAgICAgICAgX3FfaXRlbXNDaGFuZ2VkKDAsIGQtPm1f Y291bnQsIFFWZWN0b3I8aW50PigpKTsKKysgICAgfQorK30KKysKKyt2b2lkIFFRbWxEZWxlZ2F0 ZU1vZGVsOjpfcV9jb2x1bW5zUmVtb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQg YmVnaW4sIGludCBlbmQpCisreworKyAgICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOworKyAgICBR X1VOVVNFRChlbmQpOworKyAgICBpZiAocGFyZW50ID09IGQtPm1fYWRhcHRvck1vZGVsLnJvb3RJ bmRleCAmJiBiZWdpbiA9PSAwKSB7CisrICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBjaGFu Z2VkCisrICAgICAgICBfcV9pdGVtc0NoYW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3RvcjxpbnQ+ KCkpOworKyAgICB9CisrfQorKworK3ZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2NvbHVtbnNN b3ZlZChjb25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQgc3RhcnQsIGludCBlbmQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFNb2RlbEluZGV4ICZk ZXN0aW5hdGlvbiwgaW50IGNvbHVtbikKKyt7CisrICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7 CisrICAgIFFfVU5VU0VEKGVuZCk7CisrICAgIGlmICgocGFyZW50ID09IGQtPm1fYWRhcHRvck1v ZGVsLnJvb3RJbmRleCAmJiBzdGFydCA9PSAwKQorKyAgICAgICAgfHwgKGRlc3RpbmF0aW9uID09 IGQtPm1fYWRhcHRvck1vZGVsLnJvb3RJbmRleCAmJiBjb2x1bW4gPT0gMCkpIHsKKysgICAgICAg IC8vIG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5nZWQKKysgICAgICAgIF9xX2l0ZW1zQ2hhbmdlZCgw LCBkLT5tX2NvdW50LCBRVmVjdG9yPGludD4oKSk7CisrICAgIH0KKyt9CisrCisgdm9pZCBRUW1s RGVsZWdhdGVNb2RlbDo6X3FfZGF0YUNoYW5nZWQoY29uc3QgUU1vZGVsSW5kZXggJmJlZ2luLCBj b25zdCBRTW9kZWxJbmRleCAmZW5kLCBjb25zdCBRVmVjdG9yPGludD4gJnJvbGVzKQorIHsKKyAg ICAgUV9EKFFRbWxEZWxlZ2F0ZU1vZGVsKTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Ny Yy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1s bW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaAoraW5kZXggOGFhYjRiYWRjYS4uZDE0MGJmYmFh ZiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVt b2RlbF9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVt b2RlbF9wLmgKK0BAIC0xNTIsNiArMTUyLDkgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lk IF9xX2l0ZW1zTW92ZWQoaW50IGZyb20sIGludCB0bywgaW50IGNvdW50KTsKKyAgICAgdm9pZCBf cV9tb2RlbFJlc2V0KCk7CisgICAgIHZvaWQgX3Ffcm93c0luc2VydGVkKGNvbnN0IFFNb2RlbElu ZGV4ICYsaW50LGludCk7CisrICAgIHZvaWQgX3FfY29sdW1uc0luc2VydGVkKGNvbnN0IFFNb2Rl bEluZGV4ICYsIGludCwgaW50KTsKKysgICAgdm9pZCBfcV9jb2x1bW5zUmVtb3ZlZChjb25zdCBR TW9kZWxJbmRleCAmLCBpbnQsIGludCk7CisrICAgIHZvaWQgX3FfY29sdW1uc01vdmVkKGNvbnN0 IFFNb2RlbEluZGV4ICYsIGludCwgaW50LCBjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQpOworICAg ICB2b2lkIF9xX3Jvd3NBYm91dFRvQmVSZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQs IGludCBiZWdpbiwgaW50IGVuZCk7CisgICAgIHZvaWQgX3Ffcm93c1JlbW92ZWQoY29uc3QgUU1v ZGVsSW5kZXggJixpbnQsaW50KTsKKyAgICAgdm9pZCBfcV9yb3dzTW92ZWQoY29uc3QgUU1vZGVs SW5kZXggJiwgaW50LCBpbnQsIGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCk7CitkaWZmIC0tZ2l0 IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNraXRl bS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVp Y2tpdGVtLmNwcAoraW5kZXggODU3MTlmZGM4MC4uNzhlMmFiMzAyYyAxMDA2NDQKKy0tLSBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3Bw CisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVp Y2tpdGVtLmNwcAorQEAgLTQ2LDYgKzQ2LDcgQEAKKyAjaW5jbHVkZSAiUXRRdWljay9wcml2YXRl L3FxdWlja3RleHRpbnB1dF9wLmgiCisgI2luY2x1ZGUgIlF0UXVpY2svcHJpdmF0ZS9xcXVpY2th Y2Nlc3NpYmxlYXR0YWNoZWRfcC5oIgorICNpbmNsdWRlICJRdFF1aWNrL3FxdWlja3RleHRkb2N1 bWVudC5oIgorKyNpbmNsdWRlICJRdFF1aWNrL3FxdWlja3JlbmRlcmNvbnRyb2wuaCIKKyBRVF9C RUdJTl9OQU1FU1BBQ0UKKyAKKyAjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCitAQCAtNTcs NyArNTgsMTkgQEAgUUFjY2Vzc2libGVRdWlja0l0ZW06OlFBY2Nlc3NpYmxlUXVpY2tJdGVtKFFR dWlja0l0ZW0gKml0ZW0pCisgCisgUVdpbmRvdyAqUUFjY2Vzc2libGVRdWlja0l0ZW06OndpbmRv dygpIGNvbnN0CisgeworLSAgICByZXR1cm4gaXRlbSgpLT53aW5kb3coKTsKKysgICAgUVF1aWNr V2luZG93ICp3aW5kb3cgPSBpdGVtKCktPndpbmRvdygpOworKworKyAgICAvLyBGb3IgUVF1aWNr V2lkZ2V0IHRoZSBhYm92ZSB3aW5kb3cgd2lsbCBiZSB0aGUgb2Zmc2NyZWVuIFFRdWlja1dpbmRv dywKKysgICAgLy8gd2hpY2ggaXMgbm90IGEgcGFydCBvZiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVl LiBEZXRlY3QgdGhpcyBjYXNlIGFuZAorKyAgICAvLyByZXR1cm4gdGhlIHdpbmRvdyBmb3IgdGhl IFFRdWlja1dpZGdldCBpbnN0ZWFkLgorKyAgICBpZiAod2luZG93ICYmICF3aW5kb3ctPmhhbmRs ZSgpKSB7CisrICAgICAgICBpZiAoUVF1aWNrUmVuZGVyQ29udHJvbCAqcmVuZGVyQ29udHJvbCA9 IFFRdWlja1dpbmRvd1ByaXZhdGU6OmdldCh3aW5kb3cpLT5yZW5kZXJDb250cm9sKSB7CisrICAg ICAgICAgICAgaWYgKFFXaW5kb3cgKnJlbmRlcldpbmRvdyA9IHJlbmRlckNvbnRyb2wtPnJlbmRl cldpbmRvdyhudWxscHRyKSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcldpbmRvdzsK KysgICAgICAgIH0KKysgICAgfQorKworKyAgICByZXR1cm4gd2luZG93OworIH0KKyAKKyBpbnQg UUFjY2Vzc2libGVRdWlja0l0ZW06OmNoaWxkQ291bnQoKSBjb25zdAorQEAgLTExMywxOSArMTI2 LDE1IEBAIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrSXRlbTo6Y2hpbGRB dChpbnQgeCwgaW50IHkpIGNvbnN0CisgUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxl UXVpY2tJdGVtOjpwYXJlbnQoKSBjb25zdAorIHsKKyAgICAgUVF1aWNrSXRlbSAqcGFyZW50ID0g aXRlbSgpLT5wYXJlbnRJdGVtKCk7CistICAgIFFRdWlja1dpbmRvdyAqd2luZG93ID0gaXRlbSgp LT53aW5kb3coKTsKKy0gICAgUVF1aWNrSXRlbSAqY2kgPSB3aW5kb3cgPyB3aW5kb3ctPmNvbnRl bnRJdGVtKCkgOiBudWxscHRyOworKyAgICBRUXVpY2tXaW5kb3cgKml0ZW1XaW5kb3cgPSBpdGVt KCktPndpbmRvdygpOworKyAgICBRUXVpY2tJdGVtICpjaSA9IGl0ZW1XaW5kb3cgPyBpdGVtV2lu ZG93LT5jb250ZW50SXRlbSgpIDogbnVsbHB0cjsKKyAgICAgd2hpbGUgKHBhcmVudCAmJiAhUVF1 aWNrSXRlbVByaXZhdGU6OmdldChwYXJlbnQpLT5pc0FjY2Vzc2libGUgJiYgcGFyZW50ICE9IGNp KQorICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRJdGVtKCk7CisgCisgICAgIGlmIChw YXJlbnQpIHsKKyAgICAgICAgIGlmIChwYXJlbnQgPT0gY2kpIHsKKy0gICAgICAgICAgICAvLyBK dW1wIG91dCB0byB0aGUgc2NlbmUgd2lkZ2V0IGlmIHRoZSBwYXJlbnQgaXMgdGhlIHJvb3QgaXRl bS4KKy0gICAgICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHJvb3QgaXRlbXMsIFFRdWlja1dpbmRv dzo6cm9vdEl0ZW0gYW5kCistICAgICAgICAgICAgLy8gUVF1aWNrVmlldzo6ZGVjbGFyYXRpdmVS b290LiBUaGUgZm9ybWVyIGlzIHRoZSB0cnVlIHJvb3QgaXRlbSwKKy0gICAgICAgICAgICAvLyBi dXQgaXMgbm90IGEgcGFydCBvZiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiBDaGVjayBpZiB3ZSBo aXQKKy0gICAgICAgICAgICAvLyBpdCBoZXJlIGFuZCByZXR1cm4gYW4gaW50ZXJmYWNlIGZvciB0 aGUgc2NlbmUgaW5zdGVhZC4KKy0gICAgICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OnF1ZXJ5 QWNjZXNzaWJsZUludGVyZmFjZSh3aW5kb3cpOworKyAgICAgICAgICAgIC8vIEp1bXAgb3V0IHRv IHRoZSB3aW5kb3cgaWYgdGhlIHBhcmVudCBpcyB0aGUgcm9vdCBpdGVtCisrICAgICAgICAgICAg cmV0dXJuIFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uod2luZG93KCkpOwor ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICB3aGlsZSAocGFyZW50ICYmICFwYXJlbnQt PmRfZnVuYygpLT5pc0FjY2Vzc2libGUpCisgICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVu dC0+cGFyZW50SXRlbSgpOworQEAgLTE4OCw3ICsxOTcsNyBAQCBRQWNjZXNzaWJsZTo6U3RhdGUg UUFjY2Vzc2libGVRdWlja0l0ZW06OnN0YXRlKCkgY29uc3QKKyAgICAgUVJlY3Qgdmlld1JlY3Rf ID0gdmlld1JlY3QoKTsKKyAgICAgUVJlY3QgaXRlbVJlY3QgPSByZWN0KCk7CisgCistICAgIGlm ICh2aWV3UmVjdF8uaXNOdWxsKCkgfHwgaXRlbVJlY3QuaXNOdWxsKCkgfHwgIWl0ZW0oKS0+d2lu ZG93KCkgfHwgIWl0ZW0oKS0+d2luZG93KCktPmlzVmlzaWJsZSgpIHx8IWl0ZW0oKS0+aXNWaXNp YmxlKCkgfHwgcUZ1enp5SXNOdWxsKGl0ZW0oKS0+b3BhY2l0eSgpKSkKKysgICAgaWYgKHZpZXdS ZWN0Xy5pc051bGwoKSB8fCBpdGVtUmVjdC5pc051bGwoKSB8fCAhd2luZG93KCkgfHwgIXdpbmRv dygpLT5pc1Zpc2libGUoKSB8fCFpdGVtKCktPmlzVmlzaWJsZSgpIHx8IHFGdXp6eUlzTnVsbChp dGVtKCktPm9wYWNpdHkoKSkpCisgICAgICAgICBzdGF0ZS5pbnZpc2libGUgPSB0cnVlOworICAg ICBpZiAoIXZpZXdSZWN0Xy5pbnRlcnNlY3RzKGl0ZW1SZWN0KSkKKyAgICAgICAgIHN0YXRlLm9m ZnNjcmVlbiA9IHRydWU7CitAQCAtMjAxLDYgKzIxMCwxMCBAQCBRQWNjZXNzaWJsZTo6U3RhdGUg UUFjY2Vzc2libGVRdWlja0l0ZW06OnN0YXRlKCkgY29uc3QKKyAgICAgaWYgKHJvbGUoKSA9PSBR QWNjZXNzaWJsZTo6RWRpdGFibGVUZXh0KQorICAgICAgICAgaWYgKGF1dG8gdGkgPSBxb2JqZWN0 X2Nhc3Q8UVF1aWNrVGV4dElucHV0ICo+KGl0ZW0oKSkpCisgICAgICAgICAgICAgc3RhdGUucGFz c3dvcmRFZGl0ID0gdGktPmVjaG9Nb2RlKCkgIT0gUVF1aWNrVGV4dElucHV0OjpOb3JtYWw7Cisr ICAgIGlmICghaXRlbSgpLT5pc0VuYWJsZWQoKSkgeworKyAgICAgICAgc3RhdGUuZm9jdXNhYmxl ID0gZmFsc2U7CisrICAgICAgICBzdGF0ZS5kaXNhYmxlZCA9IHRydWU7CisrICAgIH0KKyAgICAg cmV0dXJuIHN0YXRlOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj ay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oCitpbmRleCAzOWZmY2Fm MzljLi44YmFhMDEzMzBjIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNj ZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oCitAQCAtNTgsNyArNTgs NyBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyAjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkp CisgCistY2xhc3MgUUFjY2Vzc2libGVRdWlja1dpbmRvdyA6IHB1YmxpYyBRQWNjZXNzaWJsZU9i amVjdAorK2NsYXNzIFFfUVVJQ0tfRVhQT1JUIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cgOiBwdWJs aWMgUUFjY2Vzc2libGVPYmplY3QKKyB7CisgcHVibGljOgorICAgICBRQWNjZXNzaWJsZVF1aWNr V2luZG93KFFRdWlja1dpbmRvdyAqb2JqZWN0KTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L2l0ZW1zL3FxdWlja2RyYWcuY3BwCitpbmRleCA4MzIxZmNmZWVkLi4zODMwNzhiM2I5IDEwMDY0 NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAKKysr KyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2RyYWcuY3BwCitAQCAtNDgx LDcgKzQ4MSw5IEBAIHZvaWQgUVF1aWNrRHJhZ0F0dGFjaGVkOjpzZXRLZXlzKGNvbnN0IFFTdHJp bmdMaXN0ICZrZXlzKQorICAgICBccW1sYXR0YWNoZWRwcm9wZXJ0eSBzdHJpbmdsaXN0IFF0UXVp Y2s6OkRyYWc6Om1pbWVEYXRhCisgICAgIFxzaW5jZSA1LjIKKyAKKy0gICAgVGhpcyBwcm9wZXJ0 eSBob2xkcyBhIG1hcCBvZiBtaW1lRGF0YSB0aGF0IGlzIHVzZWQgZHVyaW5nIHN0YXJ0RHJhZy4K KysgICAgVGhpcyBwcm9wZXJ0eSBob2xkcyBhIG1hcCBmcm9tIG1pbWUgdHlwZSB0byBkYXRhIHRo YXQgaXMgdXNlZCBkdXJpbmcgc3RhcnREcmFnLgorKyAgICBUaGUgbWltZSBkYXRhIG5lZWRzIHRv IGJlIGEgXGMgc3RyaW5nLCBvciBhbiBcYyBBcnJheUJ1ZmZlciB3aXRoIHRoZSBkYXRhIGVuY29k ZWQKKysgICAgYWNjb3JkaW5nIHRvIHRoZSBtaW1lIHR5cGUuCisgKi8KKyAKKyBRVmFyaWFudE1h cCBRUXVpY2tEcmFnQXR0YWNoZWQ6Om1pbWVEYXRhKCkgY29uc3QKK0BAIC03NjYsOCArNzY4LDEy IEBAIFF0OjpEcm9wQWN0aW9uIFFRdWlja0RyYWdBdHRhY2hlZFByaXZhdGU6OnN0YXJ0RHJhZyhR dDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0CisgICAgIFFEcmFnICpkcmFnID0gbmV3IFFEcmFn KHNvdXJjZSA/IHNvdXJjZSA6IHEpOworICAgICBRTWltZURhdGEgKm1pbWVEYXRhID0gbmV3IFFN aW1lRGF0YSgpOworIAorLSAgICBmb3IgKGF1dG8gaXQgPSBleHRlcm5hbE1pbWVEYXRhLmNiZWdp bigpLCBlbmQgPSBleHRlcm5hbE1pbWVEYXRhLmNlbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorLSAg ICAgICAgbWltZURhdGEtPnNldERhdGEoaXQua2V5KCksIGl0LnZhbHVlKCkudG9TdHJpbmcoKS50 b1V0ZjgoKSk7CisrICAgIGZvciAoYXV0byBpdCA9IGV4dGVybmFsTWltZURhdGEuY2JlZ2luKCks IGVuZCA9IGV4dGVybmFsTWltZURhdGEuY2VuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKysgICAg ICAgIGlmIChzdGF0aWNfY2FzdDxRTWV0YVR5cGU6OlR5cGU+KGl0LnZhbHVlKCkudHlwZSgpKSA9 PSBRTWV0YVR5cGU6OlFCeXRlQXJyYXkpCisrICAgICAgICAgICAgbWltZURhdGEtPnNldERhdGEo aXQua2V5KCksIGl0LnZhbHVlKCkudG9CeXRlQXJyYXkoKSk7CisrICAgICAgICBlbHNlCisrICAg ICAgICAgICAgbWltZURhdGEtPnNldERhdGEoaXQua2V5KCksIGl0LnZhbHVlKCkudG9TdHJpbmco KS50b1V0ZjgoKSk7CisrICAgIH0KKyAKKyAgICAgZHJhZy0+c2V0TWltZURhdGEobWltZURhdGEp OworICAgICBpZiAocGl4bWFwTG9hZGVyLmlzUmVhZHkoKSkgeworZGlmZiAtLWdpdCBhL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbS5jcHAKK2luZGV4IDc1ZjE0NTc4MTYuLmRlYzBhZTE5 YWUgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVt LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbS5jcHAK K0BAIC01OSw2ICs1OSw3IEBACisgI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3FudW1lcmljX3Au aD4KKyAjaW5jbHVkZSA8UXRHdWkvcXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisgI2luY2x1ZGUgPFF0 Q29yZS9xbG9nZ2luZ2NhdGVnb3J5Lmg+CisrI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3FkdXBs aWNhdGV0cmFja2VyX3AuaD4KKyAKKyAjaW5jbHVkZSA8cHJpdmF0ZS9xcW1sZ2xvYmFsX3AuaD4K KyAjaW5jbHVkZSA8cHJpdmF0ZS9xcW1sZW5naW5lX3AuaD4KK0BAIC0yMzI2LDYgKzIzMjcsNyBA QCBRUXVpY2tJdGVtOjpRUXVpY2tJdGVtKFFRdWlja0l0ZW1Qcml2YXRlICZkZCwgUVF1aWNrSXRl bSAqcGFyZW50KQorIFFRdWlja0l0ZW06On5RUXVpY2tJdGVtKCkKKyB7CisgICAgIFFfRChRUXVp Y2tJdGVtKTsKKysgICAgZC0+aW5EZXN0cnVjdG9yID0gdHJ1ZTsKKyAKKyAgICAgaWYgKGQtPndp bmRvd1JlZkNvdW50ID4gMSkKKyAgICAgICAgIGQtPndpbmRvd1JlZkNvdW50ID0gMTsgLy8gTWFr ZSBzdXJlIHdpbmRvdyBpcyBzZXQgdG8gbnVsbCBpbiBuZXh0IGNhbGwgdG8gZGVyZWZXaW5kb3co KS4KK0BAIC0yNTI2LDYgKzI1MjgsNyBAQCBRUXVpY2tJdGVtKiBRUXVpY2tJdGVtUHJpdmF0ZTo6 bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluKFFRdWlja0l0ZW0gKml0ZW0sIGJvbworICAgICBR UXVpY2tJdGVtICpjdXJyZW50ID0gaXRlbTsKKyAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJR UXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluOiBzdGFydEl0ZW06 IiA8PCBzdGFydEl0ZW07CisgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVBy aXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogZmlyc3RGcm9tSXRlbToiIDw8IGZp cnN0RnJvbUl0ZW07CisrICAgIFFEdXBsaWNhdGVUcmFja2VyPFFRdWlja0l0ZW0gKj4gY3ljbGVE ZXRlY3RvcjsKKyAgICAgZG8geworICAgICAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVp Y2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluOiBjdXJyZW50OiIgPDwg Y3VycmVudDsKKyAgICAgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZh dGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogZnJvbToiIDw8IGZyb207CitAQCAtMjU5 Miw3ICsyNTk1LDEwIEBAIFFRdWlja0l0ZW0qIFFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0 ZW1JblRhYkZvY3VzQ2hhaW4oUVF1aWNrSXRlbSAqaXRlbSwgYm9vCisgICAgICAgICAvLyB0cmF2 ZXJzZWQgYWxsIG9mIHRoZSBjaGFpbiAoYnkgY29tcGFyZSB0aGUgW2N1cnJlbnRdIGl0ZW0gd2l0 aCBbc3RhcnRJdGVtXSkKKyAgICAgICAgIC8vIFNpbmNlIHRoZSBbc3RhcnRJdGVtXSBtaWdodCBi ZSBwcm9tb3RlZCB0byBpdHMgcGFyZW50IGlmIGl0IGlzIGludmlzaWJsZSwKKyAgICAgICAgIC8v IHdlIHN0aWxsIGhhdmUgdG8gY2hlY2sgW2N1cnJlbnRdIGl0ZW0gd2l0aCBvcmlnaW5hbCBzdGFy dCBpdGVtCistICAgICAgICBpZiAoKGN1cnJlbnQgPT0gc3RhcnRJdGVtIHx8IGN1cnJlbnQgPT0g b3JpZ2luYWxTdGFydEl0ZW0pICYmIGZyb20gPT0gZmlyc3RGcm9tSXRlbSkgeworKyAgICAgICAg Ly8gV2UgbWlnaHQgYWxzbyBydW4gaW50byBhIGN5Y2xlIGJlZm9yZSB3ZSByZWFjaCBmaXJzdEZy b21JdGVtIGFnYWluCisrICAgICAgICAvLyBidXQgbm90ZSB0aGF0IHdlIGhhdmUgdG8gaWdub3Jl IGN1cnJlbnQgaWYgd2UgYXJlIG1lYW50IHRvIHNraXAgaXQKKysgICAgICAgIGlmICgoKGN1cnJl bnQgPT0gc3RhcnRJdGVtIHx8IGN1cnJlbnQgPT0gb3JpZ2luYWxTdGFydEl0ZW0pICYmIGZyb20g PT0gZmlyc3RGcm9tSXRlbSkgfHwKKysgICAgICAgICAgICAgICAgKCFza2lwICYmIGN5Y2xlRGV0 ZWN0b3IuaGFzU2VlbihjdXJyZW50KSkpIHsKKyAgICAgICAgICAgICAvLyB3cmFwcGVkIGFyb3Vu ZCwgYXZvaWQgZW5kbGVzcyBsb29wcworICAgICAgICAgICAgIGlmIChpdGVtID09IGNvbnRlbnRJ dGVtKSB7CisgICAgICAgICAgICAgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRl bVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogbG9vcGVkLCByZXR1cm4gY29u dGVudEl0ZW0iOworQEAgLTI2ODksOSArMjY5NSw4IEBAIHZvaWQgUVF1aWNrSXRlbTo6c2V0UGFy ZW50SXRlbShRUXVpY2tJdGVtICpwYXJlbnRJdGVtKQorIAorICAgICAgICAgY29uc3QgYm9vbCB3 YXNWaXNpYmxlID0gaXNWaXNpYmxlKCk7CisgICAgICAgICBvcC0+cmVtb3ZlQ2hpbGQodGhpcyk7 CistICAgICAgICBpZiAod2FzVmlzaWJsZSkgeworKyAgICAgICAgaWYgKHdhc1Zpc2libGUgJiYg IW9wLT5pbkRlc3RydWN0b3IpCisgICAgICAgICAgICAgZW1pdCBvbGRQYXJlbnRJdGVtLT52aXNp YmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CistICAgICAgICB9CisgICAgIH0gZWxzZSBpZiAoZC0+d2lu ZG93KSB7CisgICAgICAgICBRUXVpY2tXaW5kb3dQcml2YXRlOjpnZXQoZC0+d2luZG93KS0+cGFy ZW50bGVzc0l0ZW1zLnJlbW92ZSh0aGlzKTsKKyAgICAgfQorQEAgLTI3NjgsOCArMjc3Myw5IEBA IHZvaWQgUVF1aWNrSXRlbTo6c2V0UGFyZW50SXRlbShRUXVpY2tJdGVtICpwYXJlbnRJdGVtKQor IAorICAgICBkLT5pdGVtQ2hhbmdlKEl0ZW1QYXJlbnRIYXNDaGFuZ2VkLCBkLT5wYXJlbnRJdGVt KTsKKyAKKy0gICAgZW1pdCBwYXJlbnRDaGFuZ2VkKGQtPnBhcmVudEl0ZW0pOworLSAgICBpZiAo aXNWaXNpYmxlKCkgJiYgZC0+cGFyZW50SXRlbSkKKysgICAgaWYgKCFkLT5pbkRlc3RydWN0b3Ip CisrICAgICAgICBlbWl0IHBhcmVudENoYW5nZWQoZC0+cGFyZW50SXRlbSk7CisrICAgIGlmIChp c1Zpc2libGUoKSAmJiBkLT5wYXJlbnRJdGVtICYmICFRUXVpY2tJdGVtUHJpdmF0ZTo6Z2V0KGQt PnBhcmVudEl0ZW0pLT5pbkRlc3RydWN0b3IpCisgICAgICAgICBlbWl0IGQtPnBhcmVudEl0ZW0t PnZpc2libGVDaGlsZHJlbkNoYW5nZWQoKTsKKyB9CisgCitAQCAtMjk2NSw3ICsyOTcxLDggQEAg dm9pZCBRUXVpY2tJdGVtUHJpdmF0ZTo6cmVtb3ZlQ2hpbGQoUVF1aWNrSXRlbSAqY2hpbGQpCisg CisgICAgIGl0ZW1DaGFuZ2UoUVF1aWNrSXRlbTo6SXRlbUNoaWxkUmVtb3ZlZENoYW5nZSwgY2hp bGQpOworIAorLSAgICBlbWl0IHEtPmNoaWxkcmVuQ2hhbmdlZCgpOworKyAgICBpZiAoIWluRGVz dHJ1Y3RvcikKKysgICAgICAgIGVtaXQgcS0+Y2hpbGRyZW5DaGFuZ2VkKCk7CisgfQorIAorIHZv aWQgUVF1aWNrSXRlbVByaXZhdGU6OnJlZldpbmRvdyhRUXVpY2tXaW5kb3cgKmMpCitAQCAtMzE5 NCw2ICszMjAxLDcgQEAgUVF1aWNrSXRlbVByaXZhdGU6OlFRdWlja0l0ZW1Qcml2YXRlKCkKKyAg ICAgLCB0b3VjaEVuYWJsZWQoZmFsc2UpCisgI2VuZGlmCisgICAgICwgaGFzQ3Vyc29ySGFuZGxl cihmYWxzZSkKKysgICAgLCBpbkRlc3RydWN0b3IoZmFsc2UpCisgICAgICwgZGlydHlBdHRyaWJ1 dGVzKDApCisgICAgICwgbmV4dERpcnR5SXRlbShudWxscHRyKQorICAgICAsIHByZXZEaXJ0eUl0 ZW0obnVsbHB0cikKK0BAIC01MTIwLDYgKzUxMjgsMTMgQEAgdm9pZCBRUXVpY2tJdGVtOjpjb21w b25lbnRDb21wbGV0ZSgpCisgICAgICAgICBkLT5hZGRUb0RpcnR5TGlzdCgpOworICAgICAgICAg UVF1aWNrV2luZG93UHJpdmF0ZTo6Z2V0KGQtPndpbmRvdyktPmRpcnR5SXRlbSh0aGlzKTsKKyAg ICAgfQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgaWYgKGQtPmlzQWNj ZXNzaWJsZSAmJiBkLT5lZmZlY3RpdmVWaXNpYmxlKSB7CisrICAgICAgICBRQWNjZXNzaWJsZUV2 ZW50IGV2KHRoaXMsIFFBY2Nlc3NpYmxlOjpPYmplY3RTaG93KTsKKysgICAgICAgIFFBY2Nlc3Np YmxlOjp1cGRhdGVBY2Nlc3NpYmlsaXR5KCZldik7CisrICAgIH0KKysjZW5kaWYKKyB9CisgCisg UVF1aWNrU3RhdGVHcm91cCAqUVF1aWNrSXRlbVByaXZhdGU6Ol9zdGF0ZXMoKQorQEAgLTYxMDYs OSArNjEyMSwxMSBAQCBib29sIFFRdWlja0l0ZW1Qcml2YXRlOjpzZXRFZmZlY3RpdmVWaXNpYmxl UmVjdXIoYm9vbCBuZXdFZmZlY3RpdmVWaXNpYmxlKQorICAgICAgICAgUUFjY2Vzc2libGU6OnVw ZGF0ZUFjY2Vzc2liaWxpdHkoJmV2KTsKKyAgICAgfQorICNlbmRpZgorLSAgICBlbWl0IHEtPnZp c2libGVDaGFuZ2VkKCk7CistICAgIGlmIChjaGlsZFZpc2liaWxpdHlDaGFuZ2VkKQorLSAgICAg ICAgZW1pdCBxLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisrICAgIGlmICghaW5EZXN0cnVj dG9yKSB7CisrICAgICAgICBlbWl0IHEtPnZpc2libGVDaGFuZ2VkKCk7CisrICAgICAgICBpZiAo Y2hpbGRWaXNpYmlsaXR5Q2hhbmdlZCkKKysgICAgICAgICAgICBlbWl0IHEtPnZpc2libGVDaGls ZHJlbkNoYW5nZWQoKTsKKysgICAgfQorIAorICAgICByZXR1cm4gdHJ1ZTsgICAgLy8gZWZmZWN0 aXZlIHZpc2liaWxpdHkgRElEIGNoYW5nZQorIH0KK0BAIC02MTU3LDYgKzYxNzQsMTUgQEAgdm9p ZCBRUXVpY2tJdGVtUHJpdmF0ZTo6c2V0RWZmZWN0aXZlRW5hYmxlUmVjdXIoUVF1aWNrSXRlbSAq c2NvcGUsIGJvb2wgbmV3RWZmZWMKKyAgICAgfQorIAorICAgICBpdGVtQ2hhbmdlKFFRdWlja0l0 ZW06Okl0ZW1FbmFibGVkSGFzQ2hhbmdlZCwgZWZmZWN0aXZlRW5hYmxlKTsKKysjaWYgUVRfQ09O RklHKGFjY2Vzc2liaWxpdHkpCisrICAgIGlmIChpc0FjY2Vzc2libGUpIHsKKysgICAgICAgIFFB Y2Nlc3NpYmxlOjpTdGF0ZSBjaGFuZ2VkU3RhdGU7CisrICAgICAgICBjaGFuZ2VkU3RhdGUuZGlz YWJsZWQgPSB0cnVlOworKyAgICAgICAgY2hhbmdlZFN0YXRlLmZvY3VzYWJsZSA9IHRydWU7Cisr ICAgICAgICBRQWNjZXNzaWJsZVN0YXRlQ2hhbmdlRXZlbnQgZXYocSwgY2hhbmdlZFN0YXRlKTsK KysgICAgICAgIFFBY2Nlc3NpYmxlOjp1cGRhdGVBY2Nlc3NpYmlsaXR5KCZldik7CisrICAgIH0K KysjZW5kaWYKKyAgICAgZW1pdCBxLT5lbmFibGVkQ2hhbmdlZCgpOworIH0KKyAKK2RpZmYgLS1n aXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaCBiL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5oCitpbmRleCA4NDFkOTFiYjQw Li5hZGU4ZmI2MWYyIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMv cXF1aWNraXRlbV9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlj a2l0ZW1fcC5oCitAQCAtNDcyLDYgKzQ3Miw3IEBAIHB1YmxpYzoKKyAgICAgYm9vbCByZXBsYXlp bmdQcmVzc0V2ZW50OjE7CisgICAgIGJvb2wgdG91Y2hFbmFibGVkOjE7CisgICAgIGJvb2wgaGFz Q3Vyc29ySGFuZGxlcjoxOworKyAgICBxdWludDMyIGluRGVzdHJ1Y3RvcjoxOyAvLyBoYXMgZW50 ZXJlZCB+UVF1aWNrSXRlbQorIAorICAgICBlbnVtIERpcnR5VHlwZSB7CisgICAgICAgICBUcmFu c2Zvcm1PcmlnaW4gICAgICAgICA9IDB4MDAwMDAwMDEsCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwCitpbmRleCAwMTBhMDE1MmUxLi5mOGFk MTY4YTE3IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNr aXRlbXZpZXcuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tp dGVtdmlldy5jcHAKK0BAIC0xNzg1LDcgKzE3ODUsNyBAQCB2b2lkIFFRdWlja0l0ZW1WaWV3UHJp dmF0ZTo6cmVmaWxsKHFyZWFsIGZyb20sIHFyZWFsIHRvKQorIAorICAgICBkbyB7CisgICAgICAg ICBidWZmZXJQYXVzZS5zdG9wKCk7CistICAgICAgICBpZiAoY3VycmVudENoYW5nZXMuaGFzUGVu ZGluZ0NoYW5nZXMoKSB8fCBidWZmZXJlZENoYW5nZXMuaGFzUGVuZGluZ0NoYW5nZXMoKSkgewor KyAgICAgICAgaWYgKGN1cnJlbnRDaGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkgfHwgYnVmZmVy ZWRDaGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkgfHwgY3VycmVudENoYW5nZXMuYWN0aXZlKSB7 CisgICAgICAgICAgICAgY3VycmVudENoYW5nZXMucmVzZXQoKTsKKyAgICAgICAgICAgICBidWZm ZXJlZENoYW5nZXMucmVzZXQoKTsKKyAgICAgICAgICAgICByZWxlYXNlVmlzaWJsZUl0ZW1zKHJl dXNhYmxlRmxhZyk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMv cXF1aWNrbW91c2VhcmVhX3BfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1 aWNrbW91c2VhcmVhX3BfcC5oCitpbmRleCBmYmEzODNlMjY4Li4wZDYzNjE4NjIyIDEwMDY0NAor LS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrbW91c2VhcmVhX3BfcC5o CisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9w LmgKK0BAIC02MSw3ICs2MSw2IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFRdWlj a01vdXNlRXZlbnQ7CisgY2xhc3MgUVF1aWNrTW91c2VBcmVhOworLWNsYXNzIFFRdWlja1BvaW50 ZXJNYXNrOworIGNsYXNzIFFRdWlja01vdXNlQXJlYVByaXZhdGUgOiBwdWJsaWMgUVF1aWNrSXRl bVByaXZhdGUKKyB7CisgICAgIFFfREVDTEFSRV9QVUJMSUMoUVF1aWNrTW91c2VBcmVhKQorQEAg LTEwMCw3ICs5OSw2IEBAIHB1YmxpYzoKKyAjaWYgUVRfQ09ORklHKHF1aWNrX2RyYWdhbmRkcm9w KQorICAgICBRUXVpY2tEcmFnICpkcmFnOworICNlbmRpZgorLSAgICBRUG9pbnRlcjxRUXVpY2tQ b2ludGVyTWFzaz4gbWFzazsKKyAgICAgUVBvaW50RiBzdGFydFNjZW5lOworICAgICBRUG9pbnRG IHRhcmdldFN0YXJ0UG9zOworICAgICBRUG9pbnRGIGxhc3RQb3M7CitkaWZmIC0tZ2l0IGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAgYi9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9pdGVtcy9xcXVpY2t0ZXh0LmNwcAoraW5kZXggNjIzMDE4NjkzMy4uZTgyM2Nh MTA5NSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja3Rl eHQuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2t0ZXh0LmNw cAorQEAgLTIxNjgsNyArMjE2OCw3IEBAIHZvaWQgUVF1aWNrVGV4dDo6cmVzZXRNYXhpbXVtTGlu ZUNvdW50KCkKKyAgICAgPGltZyBzcmM9IiIgYWxpZ249InRvcCxtaWRkbGUsYm90dG9tIiB3aWR0 aD0iIiBoZWlnaHQ9IiI+IC0gaW5saW5lIGltYWdlcworICAgICA8b2wgdHlwZT0iIj4sIDx1bCB0 eXBlPSIiPiBhbmQgPGxpPiAtIG9yZGVyZWQgYW5kIHVub3JkZXJlZCBsaXN0cworICAgICA8cHJl PjwvcHJlPiAtIHByZWZvcm1hdHRlZAorLSAgICAmZ3Q7ICZsdDsgJmFtcDsKKysgICAgJmd0OyAm bHQ7ICZhbXA7ICZxdW90OyAmbmJzcDsgJmFwb3M7CisgICAgIFxlbmRjb2RlCisgCisgICAgIFxj IFRleHQuU3R5bGVkVGV4dCBwYXJzZXIgaXMgc3RyaWN0LCByZXF1aXJpbmcgdGFncyB0byBiZSBj b3JyZWN0bHkgbmVzdGVkLgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3Nj ZW5lZ3JhcGgvcXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxkZ2x5cGhjYWNoZS5jcHAK K2luZGV4IGViNGRiMGY4NWUuLjIzMjVhMjY2NWIgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcAor KysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZp ZWxkZ2x5cGhjYWNoZS5jcHAKK0BAIC00NDYsNyArNDQ2LDcgQEAgYm9vbCBRU0dSaGlEaXN0YW5j ZUZpZWxkR2x5cGhDYWNoZTo6bG9hZFByZWdlbmVyYXRlZENhY2hlKGNvbnN0IFFSYXdGb250ICZm b250KQorIAorICAgICAgICAgY29uc3QgY2hhciAqdGV4dHVyZVJlY29yZCA9IGFsbG9jYXRvckRh dGE7CisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRleHR1cmVDb3VudDsgKytpLCB0ZXh0 dXJlUmVjb3JkICs9IFF0ZGY6OlRleHR1cmVSZWNvcmRTaXplKSB7CistICAgICAgICAgICAgaWYg KHRleHR1cmVSZWNvcmQgKyBRdGRmOjpUZXh0dXJlUmVjb3JkU2l6ZSA+IHF0ZGZUYWJsZUVuZCkg eworKyAgICAgICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSB0ZXh0dXJlUmVjb3JkIDwgUXRkZjo6 VGV4dHVyZVJlY29yZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgcVdhcm5pbmcoInF0ZGYgdGFi bGUgdG9vIHNtYWxsIGluIGZvbnQgJyVzJy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBx UHJpbnRhYmxlKGZvbnQuZmFtaWx5TmFtZSgpKSk7CisgICAgICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKK0BAIC00NjIsNyArNDYyLDcgQEAgYm9vbCBRU0dSaGlEaXN0YW5jZUZpZWxkR2x5cGhD YWNoZTo6bG9hZFByZWdlbmVyYXRlZENhY2hlKGNvbnN0IFFSYXdGb250ICZmb250KQorIAorICAg ICAgICAgY29uc3QgY2hhciAqZ2x5cGhSZWNvcmQgPSB0ZXh0dXJlUmVjb3JkOworICAgICAgICAg Zm9yIChxdWludDMyIGkgPSAwOyBpIDwgZ2x5cGhDb3VudDsgKytpLCBnbHlwaFJlY29yZCArPSBR dGRmOjpHbHlwaFJlY29yZFNpemUpIHsKKy0gICAgICAgICAgICBpZiAoZ2x5cGhSZWNvcmQgKyBR dGRmOjpHbHlwaFJlY29yZFNpemUgPiBxdGRmVGFibGVFbmQpIHsKKysgICAgICAgICAgICBpZiAo cXRkZlRhYmxlRW5kIC0gZ2x5cGhSZWNvcmQgPCBRdGRmOjogR2x5cGhSZWNvcmRTaXplKSB7Cisg ICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJxdGRmIHRhYmxlIHRvbyBzbWFsbCBpbiBmb250ICcl cycuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcVByaW50YWJsZShmb250LmZhbWlseU5h bWUoKSkpOworICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtNTEyLDggKzUxMiw4 IEBAIGJvb2wgUVNHUmhpRGlzdGFuY2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0ZWRD YWNoZShjb25zdCBRUmF3Rm9udCAmZm9udCkKKyAKKyAgICAgICAgICAgICBpbnQgd2lkdGggPSB0 ZXhJbmZvLT5hbGxvY2F0ZWRBcmVhLndpZHRoKCk7CisgICAgICAgICAgICAgaW50IGhlaWdodCA9 IHRleEluZm8tPmFsbG9jYXRlZEFyZWEuaGVpZ2h0KCk7CistICAgICAgICAgICAgcWludDY0IHNp emUgPSB3aWR0aCAqIGhlaWdodDsKKy0gICAgICAgICAgICBpZiAocmVpbnRlcnByZXRfY2FzdDxj b25zdCBjaGFyICo+KHRleHR1cmVEYXRhICsgc2l6ZSkgPiBxdGRmVGFibGVFbmQpIHsKKysgICAg ICAgICAgICBxaW50NjQgc2l6ZSA9IHFpbnQ2NCh3aWR0aCkgKiBoZWlnaHQ7CisrICAgICAgICAg ICAgaWYgKHF0ZGZUYWJsZUVuZCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPih0ZXh0 dXJlRGF0YSkgPCBzaXplKSB7CisgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJxdGRmIHRhYmxl IHRvbyBzbWFsbCBpbiBmb250ICclcycuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcVBy aW50YWJsZShmb250LmZhbWlseU5hbWUoKSkpOworICAgICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHls ZWR0ZXh0LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNrc3R5bGVkdGV4 dC5jcHAKK2luZGV4IGQ1MzFmYzkyMDUuLmEyNWFmOTA0MTQgMTAwNjQ0CistLS0gYS9xdGRlY2xh cmF0aXZlL3NyYy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3BwCisrKysgYi9xdGRlY2xh cmF0aXZlL3NyYy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3BwCitAQCAtNTY0LDYgKzU2 NCw4IEBAIHZvaWQgUVF1aWNrU3R5bGVkVGV4dFByaXZhdGU6OnBhcnNlRW50aXR5KGNvbnN0IFFD aGFyIComY2gsIGNvbnN0IFFTdHJpbmcgJnRleHRJCisgICAgICAgICAgICAgICAgIHRleHRPdXQg Kz0gUUNoYXIoNjApOworICAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3Ry aW5nKCJhbXAiKSkKKyAgICAgICAgICAgICAgICAgdGV4dE91dCArPSBRQ2hhcigzOCk7CisrICAg ICAgICAgICAgZWxzZSBpZiAoZW50aXR5ID09IFFMYXRpbjFTdHJpbmcoImFwb3MiKSkKKysgICAg ICAgICAgICAgICAgdGV4dE91dCArPSBRQ2hhcigzOSk7CisgICAgICAgICAgICAgZWxzZSBpZiAo ZW50aXR5ID09IFFMYXRpbjFTdHJpbmcoInF1b3QiKSkKKyAgICAgICAgICAgICAgICAgdGV4dE91 dCArPSBRQ2hhcigzNCk7CisgICAgICAgICAgICAgZWxzZSBpZiAoZW50aXR5ID09IFFMYXRpbjFT dHJpbmcoIm5ic3AiKSkKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdl dHMvcWFjY2Vzc2libGVxdWlja3dpZGdldC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dp ZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldC5jcHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwMDAwLi44YTFjOTAxODgwCistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xh cmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldC5jcHAKK0BAIC0w LDAgKzEsMTEwIEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAo QykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQu aW8vbGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sg bW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQ TCQKKysqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2 YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNj b3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdp dGggdGhlCisrKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0 aCB0aGUgdGVybXMgY29udGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVu IHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29u ZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRo ZXIKKysqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5x dC5pby9jb250YWN0LXVzLgorKyoqCisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRp b24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRo ZQorKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2lu ZyBpbmZvcm1hdGlvbiB0bworKyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5 IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisr KiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVk IGJ5IHRoZSBLREUgRnJlZQorKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFy aW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVk ZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxv d2luZworKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvZ3BsLTMuMC5odG1sLgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKysKKysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgi CisrCisrI2luY2x1ZGUgInFxdWlja3dpZGdldF9wLmgiCisrCisrUVRfQkVHSU5fTkFNRVNQQUNF CisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworK1FBY2Nlc3NpYmxlUXVpY2tX aWRnZXQ6OlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQoUVF1aWNrV2lkZ2V0KiB3aWRnZXQpCisrOiBR QWNjZXNzaWJsZVdpZGdldCh3aWRnZXQpCisrLCBtX2FjY2Vzc2libGVXaW5kb3coUVF1aWNrV2lk Z2V0UHJpdmF0ZTo6Z2V0KHdpZGdldCktPm9mZnNjcmVlbldpbmRvdykKKyt7CisrICAgIC8vIE5P VEU6IG1fYWNjZXNzaWJsZVdpbmRvdyBpcyBhIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3csIGFuZCBu b3QgYQorKyAgICAvLyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93IChkZWZp bmVkIGJlbG93KS4gVGhpcyBtZWFucworKyAgICAvLyBpdCB3aWxsIHJldHVybiB0aGUgUXVpY2sg aXRlbSBjaGlsZCBpbnRlcmZhY2VzLCB3aGljaCBpcyB3aGF0J3MgbmVlZGVkIGhlcmUKKysgICAg Ly8gKHVubGlrZSBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93LCB3aGljaCB3 aWxsIHJlcG9ydCAwIGNoaWxkcmVuKS4KKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFB Y2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmNoaWxkKGludCBpbmRleCkgY29uc3QKKyt7CisrICAgIHJl dHVybiBtX2FjY2Vzc2libGVXaW5kb3cuY2hpbGQoaW5kZXgpOworK30KKysKKytpbnQgUUFjY2Vz c2libGVRdWlja1dpZGdldDo6Y2hpbGRDb3VudCgpIGNvbnN0CisreworKyAgICByZXR1cm4gbV9h Y2Nlc3NpYmxlV2luZG93LmNoaWxkQ291bnQoKTsKKyt9CisrCisraW50IFFBY2Nlc3NpYmxlUXVp Y2tXaWRnZXQ6OmluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2Up IGNvbnN0CisreworKyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmluZGV4T2ZDaGlsZChp ZmFjZSk7CisrfQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lk Z2V0OjpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3QKKyt7CisrICAgIHJldHVybiBtX2FjY2Vz c2libGVXaW5kb3cuY2hpbGRBdCh4LCB5KTsKKyt9CisrCisrUUFjY2Vzc2libGVRdWlja1dpZGdl dE9mZnNjcmVlbldpbmRvdzo6UUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhR UXVpY2tXaW5kb3cgKndpbmRvdykKKys6UUFjY2Vzc2libGVRdWlja1dpbmRvdyh3aW5kb3cpCisr eworKworK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdl dE9mZnNjcmVlbldpbmRvdzo6Y2hpbGQoaW50IGluZGV4KSBjb25zdAorK3sKKysgICAgUV9VTlVT RUQoaW5kZXgpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisraW50IFFBY2Nlc3NpYmxl UXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmNoaWxkQ291bnQoKSBjb25zdAorK3sKKysgICAg cmV0dXJuIDA7CisrfQorKworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2lu ZG93OjppbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25z dAorK3sKKysgICAgUV9VTlVTRUQoaWZhY2UpOworKyAgICByZXR1cm4gLTE7CisrfQorKworK1FB Y2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93 OjpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpjaGlsZEF0KGludCB4LCBp bnQgeSkgY29uc3QKKyt7CisrICAgIFFfVU5VU0VEKHgpOworKyAgICBRX1VOVVNFRCh5KTsKKysg ICAgcmV0dXJuIG51bGxwdHI7CisrfQorKworKyNlbmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisr UVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lk Z2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr d2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAwMDAuLjdjMmFiOTMwZTAKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaAorQEAg LTAsMCArMSw5NSBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQg KEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0 LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1aWNr IG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxH UEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcg dmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFj Y29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3 aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdp dGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2Vl biB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNv bmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0 aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cu cXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0 aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0 aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dp bmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBz Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1h eSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAor KyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3Zl ZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVh cmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1 ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xs b3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu c2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisrCisrI2lmbmRlZiBRQUNDRVNTSUJMRVFVSUNLV0lER0VUX0gKKysj ZGVmaW5lIFFBQ0NFU1NJQkxFUVVJQ0tXSURHRVRfSAorKworKy8vCisrLy8gIFcgQSBSIE4gSSBO IEcKKysvLyAgLS0tLS0tLS0tLS0tLQorKy8vCisrLy8gVGhpcyBmaWxlIGlzIG5vdCBwYXJ0IG9m IHRoZSBRdCBBUEkuICBJdCBleGlzdHMgcHVyZWx5IGFzIGFuCisrLy8gaW1wbGVtZW50YXRpb24g ZGV0YWlsLiAgVGhpcyBoZWFkZXIgZmlsZSBtYXkgY2hhbmdlIGZyb20gdmVyc2lvbiB0bworKy8v IHZlcnNpb24gd2l0aG91dCBub3RpY2UsIG9yIGV2ZW4gYmUgcmVtb3ZlZC4KKysvLworKy8vIFdl IG1lYW4gaXQuCisrLy8KKysKKysjaW5jbHVkZSAicXF1aWNrd2lkZ2V0LmgiCisrI2luY2x1ZGUg PFF0V2lkZ2V0cy9xYWNjZXNzaWJsZXdpZGdldC5oPgorKworKyNpbmNsdWRlIDxwcml2YXRlL3Fh Y2Nlc3NpYmxlcXVpY2t2aWV3X3AuaD4KKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysjaWYg UVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrCisrLy8gVGhlc2UgY2xhc3NlcyBpbXBsZW1lbnQg dGhlIFFRdWlja1dpZ2V0IGFjY2Vzc2liaWxpdHkgc3dpdGNoYXJvbywKKysvLyB3aGVyZSB0aGUg Y2hpbGQgaXRlbXMgb2YgdGhlIFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyBhcmUgcmVwb3J0 ZWQKKysvLyBhcyBjaGlsZCBhY2Nlc3NpYmxlIGludGVyZmFjZXMgb2YgdGhlIFFBY2Nlc3NpYmxl UXVpY2tXaWRnZXQuCisrY2xhc3MgUUFjY2Vzc2libGVRdWlja1dpZGdldDogcHVibGljIFFBY2Nl c3NpYmxlV2lkZ2V0CisreworK3B1YmxpYzoKKysgICAgUUFjY2Vzc2libGVRdWlja1dpZGdldChR UXVpY2tXaWRnZXQqIHdpZGdldCk7CisrCisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGls ZChpbnQgaW5kZXgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBpbnQgY2hpbGRDb3VudCgpIGNvbnN0 IG92ZXJyaWRlOworKyAgICBpbnQgaW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJm YWNlICppZmFjZSkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpj aGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3Qgb3ZlcnJpZGU7CisrCisrcHJpdmF0ZToKKysgICAg UUFjY2Vzc2libGVRdWlja1dpbmRvdyBtX2FjY2Vzc2libGVXaW5kb3c7CisrICAgIFFfRElTQUJM RV9DT1BZKFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQpCisrfTsKKysKKytjbGFzcyBRQWNjZXNzaWJs ZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OiBwdWJsaWMgUUFjY2Vzc2libGVRdWlja1dpbmRv dworK3sKKytwdWJsaWM6CisrICAgIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5k b3coUVF1aWNrV2luZG93ICp3aW5kb3cpOworKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqY2hp bGQoaW50IGluZGV4KSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50IGNoaWxkQ291bnQoKSBjb25z dCBvdmVycmlkZTsKKysgICAgaW50IGluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUludGVy ZmFjZSAqaWZhY2UpIGNvbnN0IG92ZXJyaWRlOworKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAq Y2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0IG92ZXJyaWRlOworK307CisrCisrI2VuZGlmIC8v IGFjY2Vzc2liaWxpdHkKKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCisrI2VuZGlmCitkaWZmIC0t Z2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRn ZXRmYWN0b3J5LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJs ZXF1aWNrd2lkZ2V0ZmFjdG9yeS5jcHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwMDAwLi43YmE4OGExNzY5CistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwCitAQCAtMCww ICsxLDYwIEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykg MjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8v bGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9k dWxlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQK KysqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxp ZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3Jk YW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGgg dGhlCisrKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0 aGUgdGVybXMgY29udGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlv dSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0 aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIK KysqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5p by9jb250YWN0LXVzLgorKyoqCisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVy c2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24g YW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQor KyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBp bmZvcm1hdGlvbiB0bworKyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJl IHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiog UHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5 IHRoZSBLREUgRnJlZQorKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5n IGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQg aW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2lu ZworKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgcmVxdWlyZW1lbnRzIHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Z3BsLTMuMC5odG1sLgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKysKKysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3Rvcnlf cC5oIgorKyNpbmNsdWRlICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCIKKysKKytRVF9CRUdJ Tl9OQU1FU1BBQ0UKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrCisrUUFjY2Vz c2libGVJbnRlcmZhY2UgKnFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRGYWN0b3J5KGNvbnN0IFFTdHJp bmcgJmNsYXNzbmFtZSwgUU9iamVjdCAqb2JqZWN0KQorK3sKKysgICAgaWYgKGNsYXNzbmFtZSA9 PSBRTGF0aW4xU3RyaW5nKCJRUXVpY2tXaWRnZXQiKSkgeworKyAgICAgICAgcmV0dXJuIG5ldyBR QWNjZXNzaWJsZVF1aWNrV2lkZ2V0KHFvYmplY3RfY2FzdDxRUXVpY2tXaWRnZXQgKj4ob2JqZWN0 KSk7CisrICAgIH0gZWxzZSBpZiAoY2xhc3NuYW1lID09IFFMYXRpbjFTdHJpbmcoIlFRdWlja1dp ZGdldE9mZnNjcmVlbldpbmRvdyIpKSB7CisrICAgICAgICByZXR1cm4gbmV3IFFBY2Nlc3NpYmxl UXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3cocW9iamVjdF9jYXN0PFFRdWlja1dpbmRvdyAqPihv YmplY3QpKTsKKysgICAgfQorKyAgICByZXR1cm4gMDsKKyt9CisrCisrI2VuZGlmIC8vIGFjY2Vz c2liaWxpdHkKKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaCBi L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFj dG9yeV9wLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi44YzYzYjA5 ZjgxCistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMv cWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oCitAQCAtMCwwICsxLDY2IEBACisrLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29t cGFueSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoq CisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9kdWxlIG9mIHRoZSBRdCBU b29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFs IExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0 IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBj b21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdh cmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFp bmVkIGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENv bXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6 Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlv biB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgor KyoqCisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0 ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBp biB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBv ZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bwor KyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24g MyByZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug VXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4w IG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2Ug dmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQor KyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJ Q0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2lu ZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0 aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRz IHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5o dG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgor KyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysK KysjaW5jbHVkZSA8UXRHdWkvcWFjY2Vzc2libGUuaD4KKysKKysjaWZuZGVmIFFBQ0NFU1NJQkxF UVVJQ0tXSURHRVRGQUNUT1JZX0gKKysjZGVmaW5lIFFBQ0NFU1NJQkxFUVVJQ0tXSURHRVRGQUNU T1JZX0gKKysKKysvLworKy8vICBXIEEgUiBOIEkgTiBHCisrLy8gIC0tLS0tLS0tLS0tLS0KKysv LworKy8vIFRoaXMgZmlsZSBpcyBub3QgcGFydCBvZiB0aGUgUXQgQVBJLiAgSXQgZXhpc3RzIHB1 cmVseSBhcyBhbgorKy8vIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFRoaXMgaGVhZGVyIGZpbGUg bWF5IGNoYW5nZSBmcm9tIHZlcnNpb24gdG8KKysvLyB2ZXJzaW9uIHdpdGhvdXQgbm90aWNlLCBv ciBldmVuIGJlIHJlbW92ZWQuCisrLy8KKysvLyBXZSBtZWFuIGl0LgorKy8vCisrCisrUVRfQkVH SU5fTkFNRVNQQUNFCisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworK1FBY2Nl c3NpYmxlSW50ZXJmYWNlICpxQWNjZXNzaWJsZVF1aWNrV2lkZ2V0RmFjdG9yeShjb25zdCBRU3Ry aW5nICZjbGFzc25hbWUsIFFPYmplY3QgKm9iamVjdCk7CisrCisrI2VuZGlmCisrCisrUVRfRU5E X05BTUVTUEFDRQorKworKyNlbmRpZgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRn ZXRzL3FxdWlja3dpZGdldC5jcHAKK2luZGV4IDM5NzgwZjhkZTMuLjljOTdiNDM1MTggMTAwNjQ0 CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcAor KysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldC5jcHAKK0BA IC0zOSw2ICszOSw3IEBACisgCisgI2luY2x1ZGUgInFxdWlja3dpZGdldC5oIgorICNpbmNsdWRl ICJxcXVpY2t3aWRnZXRfcC5oIgorKyNpbmNsdWRlICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFj dG9yeV9wLmgiCisgCisgI2luY2x1ZGUgInByaXZhdGUvcXF1aWNrd2luZG93X3AuaCIKKyAjaW5j bHVkZSAicHJpdmF0ZS9xcXVpY2tpdGVtX3AuaCIKK0BAIC03NSw5ICs3NiwxNiBAQAorIAorIFFU X0JFR0lOX05BTUVTUEFDRQorIAorK1FRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6UVF1aWNr V2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvd1ByaXZhdGUgJmRkLCBRUXVpY2tSZW5k ZXJDb250cm9sICpjb250cm9sKQorKzpRUXVpY2tXaW5kb3coZGQsIGNvbnRyb2wpCisreworKyAg ICBzZXRUaXRsZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJPZmZzY3JlZW4iKSk7CisrICAgIHNldE9i amVjdE5hbWUoUVN0cmluZzo6ZnJvbUxhdGluMSgiUVF1aWNrT2ZmU2NyZWVuV2luZG93IikpOwor K30KKysKKyAvLyBvdmVycmlkZSBzZXRWaXNibGUgdG8gcHJldmVudCBhY2NpZGVudGFsIG9mZnNj cmVlbiB3aW5kb3cgYmVpbmcgY3JlYXRlZAorIC8vIGJ5IGJhc2UgY2xhc3MuCistY2xhc3MgUVF1 aWNrT2ZmY3JlZW5XaW5kb3dQcml2YXRlOiBwdWJsaWMgUVF1aWNrV2luZG93UHJpdmF0ZSB7Cisr Y2xhc3MgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93UHJpdmF0ZTogcHVibGljIFFRdWlja1dp bmRvd1ByaXZhdGUgeworIHB1YmxpYzoKKyAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wgdmlzaWJs ZSkgb3ZlcnJpZGUgeworICAgICAgICAgUV9RKFFXaW5kb3cpOworQEAgLTEwNSw5ICsxMTMsOCBA QCB2b2lkIFFRdWlja1dpZGdldFByaXZhdGU6OmluaXQoUVFtbEVuZ2luZSogZSkKKyAgICAgUV9R KFFRdWlja1dpZGdldCk7CisgCisgICAgIHJlbmRlckNvbnRyb2wgPSBuZXcgUVF1aWNrV2lkZ2V0 UmVuZGVyQ29udHJvbChxKTsKKy0gICAgb2Zmc2NyZWVuV2luZG93ID0gbmV3IFFRdWlja1dpbmRv dygqbmV3IFFRdWlja09mZmNyZWVuV2luZG93UHJpdmF0ZSgpLHJlbmRlckNvbnRyb2wpOworLSAg ICBvZmZzY3JlZW5XaW5kb3ctPnNldFRpdGxlKFFTdHJpbmc6OmZyb21MYXRpbjEoIk9mZnNjcmVl biIpKTsKKy0gICAgb2Zmc2NyZWVuV2luZG93LT5zZXRPYmplY3ROYW1lKFFTdHJpbmc6OmZyb21M YXRpbjEoIlFRdWlja09mZlNjcmVlbldpbmRvdyIpKTsKKysgICAgb2Zmc2NyZWVuV2luZG93ID0g bmV3IFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdygqbmV3IFFRdWlja1dpZGdldE9mZnNjcmVl bldpbmRvd1ByaXZhdGUoKSwgcmVuZGVyQ29udHJvbCk7CisrICAgIG9mZnNjcmVlbldpbmRvdy0+ c2V0U2NyZWVuKHEtPnNjcmVlbigpKTsKKyAgICAgLy8gRG8gbm90IGNhbGwgY3JlYXRlKCkgb24g b2Zmc2NyZWVuV2luZG93LgorIAorICAgICAvLyBDaGVjayBpZiB0aGUgU29mdHdhcmUgQWRhcHRh dGlvbiBpcyBiZWluZyB1c2VkCitAQCAtMTM4LDYgKzE0NSwxMCBAQCB2b2lkIFFRdWlja1dpZGdl dFByaXZhdGU6OmluaXQoUVFtbEVuZ2luZSogZSkKKyAgICAgUVdpZGdldDo6Y29ubmVjdChvZmZz Y3JlZW5XaW5kb3csICZRUXVpY2tXaW5kb3c6OmZvY3VzT2JqZWN0Q2hhbmdlZCwgcSwgJlFRdWlj a1dpZGdldDo6cHJvcGFnYXRlRm9jdXNPYmplY3RDaGFuZ2VkKTsKKyAgICAgUU9iamVjdDo6Y29u bmVjdChyZW5kZXJDb250cm9sLCBTSUdOQUwocmVuZGVyUmVxdWVzdGVkKCkpLCBxLCBTTE9UKHRy aWdnZXJVcGRhdGUoKSkpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHJlbmRlckNvbnRyb2wsIFNJ R05BTChzY2VuZUNoYW5nZWQoKSksIHEsIFNMT1QodHJpZ2dlclVwZGF0ZSgpKSk7CisrCisrI2lm IFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKyAgICBRQWNjZXNzaWJsZTo6aW5zdGFsbEZhY3Rv cnkoJnFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRGYWN0b3J5KTsKKysjZW5kaWYKKyB9CisgCisgdm9p ZCBRUXVpY2tXaWRnZXRQcml2YXRlOjplbnN1cmVFbmdpbmUoKSBjb25zdAorQEAgLTkwMSw5ICs5 MTIsNyBAQCB2b2lkIFFRdWlja1dpZGdldFByaXZhdGU6OmNyZWF0ZUNvbnRleHQoKQorIAorICAg ICAgICAgY29udGV4dCA9IG5ldyBRT3BlbkdMQ29udGV4dDsKKyAgICAgICAgIGNvbnRleHQtPnNl dEZvcm1hdChvZmZzY3JlZW5XaW5kb3ctPnJlcXVlc3RlZEZvcm1hdCgpKTsKKy0gICAgICAgIGNv bnN0IFFXaW5kb3cgKndpbiA9IHEtPndpbmRvdygpLT53aW5kb3dIYW5kbGUoKTsKKy0gICAgICAg IGlmICh3aW4gJiYgd2luLT5zY3JlZW4oKSkKKy0gICAgICAgICAgICBjb250ZXh0LT5zZXRTY3Jl ZW4od2luLT5zY3JlZW4oKSk7CisrICAgICAgICBjb250ZXh0LT5zZXRTY3JlZW4ocS0+c2NyZWVu KCkpOworICAgICAgICAgUU9wZW5HTENvbnRleHQgKnNoYXJlQ29udGV4dCA9IHF0X2dsX2dsb2Jh bF9zaGFyZV9jb250ZXh0KCk7CisgICAgICAgICBpZiAoIXNoYXJlQ29udGV4dCkKKyAgICAgICAg ICAgICBzaGFyZUNvbnRleHQgPSBRV2lkZ2V0UHJpdmF0ZTo6Z2V0KHEtPndpbmRvdygpKS0+c2hh cmVDb250ZXh0KCk7CitAQCAtMTUyMCwxOSArMTUyOSwxNiBAQCBib29sIFFRdWlja1dpZGdldDo6 ZXZlbnQoUUV2ZW50ICplKQorICAgICAgICAgZC0+aGFuZGxlV2luZG93Q2hhbmdlKCk7CisgICAg ICAgICBicmVhazsKKyAKKy0gICAgY2FzZSBRRXZlbnQ6OlNjcmVlbkNoYW5nZUludGVybmFsOgor LSAgICAgICAgaWYgKFFXaW5kb3cgKndpbmRvdyA9IHRoaXMtPndpbmRvdygpLT53aW5kb3dIYW5k bGUoKSkgeworLSAgICAgICAgICAgIFFTY3JlZW4gKm5ld1NjcmVlbiA9IHdpbmRvdy0+c2NyZWVu KCk7CistCistICAgICAgICAgICAgaWYgKGQtPm9mZnNjcmVlbldpbmRvdykKKy0gICAgICAgICAg ICAgICAgZC0+b2Zmc2NyZWVuV2luZG93LT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKy0gICAgICAg ICAgICBpZiAoZC0+b2Zmc2NyZWVuU3VyZmFjZSkKKy0gICAgICAgICAgICAgICAgZC0+b2Zmc2Ny ZWVuU3VyZmFjZS0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisrICAgIGNhc2UgUUV2ZW50OjpTY3Jl ZW5DaGFuZ2VJbnRlcm5hbDogeworKyAgICAgICAgUVNjcmVlbiAqbmV3U2NyZWVuID0gc2NyZWVu KCk7CisrICAgICAgICBpZiAoZC0+b2Zmc2NyZWVuV2luZG93KQorKyAgICAgICAgICAgIGQtPm9m ZnNjcmVlbldpbmRvdy0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisrICAgICAgICBpZiAoZC0+b2Zm c2NyZWVuU3VyZmFjZSkKKysgICAgICAgICAgICBkLT5vZmZzY3JlZW5TdXJmYWNlLT5zZXRTY3Jl ZW4obmV3U2NyZWVuKTsKKyAjaWYgUVRfQ09ORklHKG9wZW5nbCkKKy0gICAgICAgICAgICBpZiAo ZC0+Y29udGV4dCkKKy0gICAgICAgICAgICAgICAgZC0+Y29udGV4dC0+c2V0U2NyZWVuKG5ld1Nj cmVlbik7CisrICAgICAgICBpZiAoZC0+Y29udGV4dCkKKysgICAgICAgICAgICBkLT5jb250ZXh0 LT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKyAjZW5kaWYKKy0gICAgICAgIH0KKyAKKyAgICAgICAg IGlmIChkLT51c2VTb2Z0d2FyZVJlbmRlcmVyCisgI2lmIFFUX0NPTkZJRyhvcGVuZ2wpCitAQCAt MTU0NSw3ICsxNTUxLDcgQEAgYm9vbCBRUXVpY2tXaWRnZXQ6OmV2ZW50KFFFdmVudCAqZSkKKyAg ICAgICAgICAgICBkLT5yZW5kZXIodHJ1ZSk7CisgICAgICAgICB9CisgICAgICAgICBicmVhazsK Ky0KKysgICAgfQorICAgICBjYXNlIFFFdmVudDo6U2hvdzoKKyAgICAgY2FzZSBRRXZlbnQ6Ok1v dmU6CisgICAgICAgICBkLT51cGRhdGVQb3NpdGlvbigpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldF9wLmgKK2luZGV4IDg4MWY3ZjkyMjAuLjFhOTQ2 YmNjNzEgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNr d2lkZ2V0X3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dp ZGdldF9wLmgKK0BAIC0xNDgsNiArMTQ4LDE0IEBAIHB1YmxpYzoKKyAgICAgYm9vbCBmb3JjZUZ1 bGxVcGRhdGU7CisgfTsKKyAKKytjbGFzcyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6IHB1 YmxpYyBRUXVpY2tXaW5kb3cKKyt7CisrICAgIFFfT0JKRUNUCisrCisrcHVibGljOgorKyAgICBR UXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coUVF1aWNrV2luZG93UHJpdmF0ZSAmZGQsIFFRdWlj a1JlbmRlckNvbnRyb2wgKmNvbnRyb2wpOworK307CisrCisgUVRfRU5EX05BTUVTUEFDRQorIAor ICNlbmRpZiAvLyBRUXVpY2tXaWRnZXRfUF9ICitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8gYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj a3dpZGdldHMvcXVpY2t3aWRnZXRzLnBybworaW5kZXggMjQzOGU1NzdhZS4uODVkMTU2YjhhMyAx MDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMu cHJvCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXVpY2t3aWRnZXRzLnBy bworQEAgLTcsOSArNywxMyBAQCBERUZJTkVTICAgKz0gUVRfTk9fVVJMX0NBU1RfRlJPTV9TVFJJ TkcgUVRfTk9fSU5URUdFUl9FVkVOVF9DT09SRElOQVRFUyBRVF9OT19GTworIEhFQURFUlMgKz0g XAorICAgICBxcXVpY2t3aWRnZXQuaCBcCisgICAgIHFxdWlja3dpZGdldF9wLmggXAorLSAgICBx dHF1aWNrd2lkZ2V0c2dsb2JhbC5oCisrICAgIHF0cXVpY2t3aWRnZXRzZ2xvYmFsLmggXAorKyAg ICBxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCBcCisrICAgIHFhY2Nlc3NpYmxlcXVpY2t3aWRn ZXRmYWN0b3J5X3AuaAorIAorIFNPVVJDRVMgKz0gXAorLSAgICBxcXVpY2t3aWRnZXQuY3BwCisr ICAgIHFxdWlja3dpZGdldC5jcHAgXAorKyAgICBxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0LmNwcCBc CisrICAgIHFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5LmNwcAorIAorIGxvYWQocXRfbW9k dWxlKQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcWpzZW5naW5l L3RzdF9xanNlbmdpbmUuY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdp bmUvdHN0X3Fqc2VuZ2luZS5jcHAKK2luZGV4IDNiN2Q3NGRmNjMuLmI3NWJmODIwZDUgMTAwNjQ0 CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5n aW5lLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0 X3Fqc2VuZ2luZS5jcHAKK0BAIC0xMDIsNiArMTAyLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAg dm9pZCB2YWx1ZUNvbnZlcnNpb25fUmVndWxhckV4cHJlc3Npb24oKTsKKyAgICAgdm9pZCBjYXN0 V2l0aE11bHRpcGxlSW5oZXJpdGFuY2UoKTsKKyAgICAgdm9pZCBjb2xsZWN0R2FyYmFnZSgpOwor KyAgICB2b2lkIGNvbGxlY3RHYXJiYWdlTmVzdGVkV3JhcHBlcnNUd29FbmdpbmVzKCk7CisgICAg IHZvaWQgZ2NXaXRoTmVzdGVkRGF0YVN0cnVjdHVyZSgpOworICAgICB2b2lkIHN0YWNrdHJhY2Uo KTsKKyAgICAgdm9pZCBudW1iZXJQYXJzaW5nX2RhdGEoKTsKK0BAIC0xODA5LDYgKzE4MTAsNDQg QEAgdm9pZCB0c3RfUUpTRW5naW5lOjpjb2xsZWN0R2FyYmFnZSgpCisgICAgIFFWRVJJRlkocHRy LmlzTnVsbCgpKTsKKyB9CisgCisrY2xhc3MgVGVzdE9iamVjdENvbnRhaW5lciA6IHB1YmxpYyBR T2JqZWN0CisreworKyAgICBRX09CSkVDVAorKyAgICBRX1BST1BFUlRZKFFPYmplY3QgKmR1bW15 IE1FTUJFUiBtX2R1bW15IENPTlNUQU5UKQorKworK3B1YmxpYzoKKysgICAgVGVzdE9iamVjdENv bnRhaW5lcigpIDogbV9kdW1teShuZXcgUU9iamVjdCh0aGlzKSkge30KKysKKytwcml2YXRlOgor KyAgICBRT2JqZWN0ICptX2R1bW15OworK307CisrCisrdm9pZCB0c3RfUUpTRW5naW5lOjpjb2xs ZWN0R2FyYmFnZU5lc3RlZFdyYXBwZXJzVHdvRW5naW5lcygpCisreworKyAgICBRSlNFbmdpbmUg ZW5naW5lMTsKKysgICAgUUpTRW5naW5lIGVuZ2luZTI7CisrCisrICAgIFRlc3RPYmplY3RDb250 YWluZXIgY29udGFpbmVyOworKyAgICBRUW1sRW5naW5lOjpzZXRPYmplY3RPd25lcnNoaXAoJmNv bnRhaW5lciwgUVFtbEVuZ2luZTo6Q3BwT3duZXJzaGlwKTsKKysKKysgICAgZW5naW5lMS5nbG9i YWxPYmplY3QoKS5zZXRQcm9wZXJ0eSgiZm9vYmFyIiwgZW5naW5lMS5uZXdRT2JqZWN0KCZjb250 YWluZXIpKTsKKysgICAgZW5naW5lMi5nbG9iYWxPYmplY3QoKS5zZXRQcm9wZXJ0eSgiZm9vYmFy IiwgZW5naW5lMi5uZXdRT2JqZWN0KCZjb250YWluZXIpKTsKKysKKysgICAgZW5naW5lMS5ldmFs dWF0ZSgiZm9vYmFyLmR1bW15LmJheiA9IDQyIik7CisrICAgIGVuZ2luZTIuZXZhbHVhdGUoImZv b2Jhci5kdW1teS5iYXogPSA0MyIpOworKworKyAgICBRQ09NUEFSRShlbmdpbmUxLmV2YWx1YXRl KCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDIpOworKyAgICBRQ09NUEFSRShlbmdpbmUy LmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDMpOworKworKyAgICBlbmdp bmUxLmNvbGxlY3RHYXJiYWdlKCk7CisrICAgIGVuZ2luZTIuY29sbGVjdEdhcmJhZ2UoKTsKKysK KysgICAgLy8gVGhlIEdDIHNob3VsZCBub3QgY29sbGVjdCBkdW1teSBvYmplY3Qgd3JhcHBlcnMg bmVpdGhlciBpbiBlbmdpbmUxIG5vciBlbmdpbmUyLCB3ZQorKyAgICAvLyB2ZXJpZnkgdGhhdCBi eSBjaGVja2luZyB3aGV0aGVyIHRoZSBiYXogcHJvcGVydHkgc3RpbGwgaGFzIGl0cyBwcmV2aW91 cyB2YWx1ZS4KKysgICAgUUNPTVBBUkUoZW5naW5lMS5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJh eiIpLnRvSW50KCksIDQyKTsKKysgICAgUUNPTVBBUkUoZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFy LmR1bW15LmJheiIpLnRvSW50KCksIDQzKTsKKyt9CisrCisgdm9pZCB0c3RfUUpTRW5naW5lOjpn Y1dpdGhOZXN0ZWREYXRhU3RydWN0dXJlKCkKKyB7CisgICAgIC8vIFRoZSBHQyBtdXN0IGJlIGFi bGUgdG8gdHJhdmVyc2UgZGVlcGx5IG5lc3RlZCBvYmplY3RzLCBvdGhlcndpc2UgdGhpcworZGlm ZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwv ZGF0YS9yZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0 by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvZGF0YS9yZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbAor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjIwNjEzM2JiMzkKKy0tLSAv ZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRl bW9kZWwvZGF0YS9yZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbAorQEAgLTAsMCArMSwxMSBAQAor K2ltcG9ydCBRdFF1aWNrIDIuOAorKworK0xpc3RWaWV3IHsKKysgICAgaWQ6IHJvb3QKKysgICAg d2lkdGg6IDIwMAorKyAgICBoZWlnaHQ6IDIwMAorKworKyAgICBkZWxlZ2F0ZTogVGV4dCB7Cisr ICAgICAgICB0ZXh0OiBkaXNwbGF5CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJh dGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90c3RfcXFtbGRlbGVnYXRlbW9k ZWwuY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90 c3RfcXFtbGRlbGVnYXRlbW9kZWwuY3BwCitpbmRleCAzNWYxZTJjOTRkLi4xNzIyNDQ3ODMwIDEw MDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2Rl bC90c3RfcXFtbGRlbGVnYXRlbW9kZWwuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1 dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKK0BAIC0y Nyw2ICsyNyw4IEBACisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAKKyAjaW5jbHVkZSA8UXRUZXN0 L3F0ZXN0Lmg+CisrI2luY2x1ZGUgPFF0Q29yZS9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVs PgorKyNpbmNsdWRlIDxRdEd1aS9RU3RhbmRhcmRJdGVtTW9kZWw+CisgI2luY2x1ZGUgPFF0UW1s L3FxbWxjb21wb25lbnQuaD4KKyAjaW5jbHVkZSA8UXRRbWxNb2RlbHMvcHJpdmF0ZS9xcW1sZGVs ZWdhdGVtb2RlbF9wLmg+CisgI2luY2x1ZGUgPFF0UXVpY2svcXF1aWNrdmlldy5oPgorQEAgLTQ3 LDYgKzQ5LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBmaWx0ZXJPbkdyb3VwX3JlbW92 ZVdoZW5Db21wbGV0ZWQoKTsKKyAgICAgdm9pZCBxdGJ1Z184NjAxNygpOworICAgICB2b2lkIGNv bnRleHRBY2Nlc3NlZEJ5SGFuZGxlcigpOworKyAgICB2b2lkIHJlZHJhd1Vwb25Db2x1bW5DaGFu Z2UoKTsKKyB9OworIAorIGNsYXNzIEFic3RyYWN0SXRlbU1vZGVsIDogcHVibGljIFFBYnN0cmFj dEl0ZW1Nb2RlbAorQEAgLTE4Niw2ICsxODksMzAgQEAgdm9pZCB0c3RfUVFtbERlbGVnYXRlTW9k ZWw6OmNvbnRleHRBY2Nlc3NlZEJ5SGFuZGxlcigpCisgICAgIFFWRVJJRlkocm9vdC0+cHJvcGVy dHkoIndvcmtzIikudG9Cb29sKCkpOworIH0KKyAKKyt2b2lkIHRzdF9RUW1sRGVsZWdhdGVNb2Rl bDo6cmVkcmF3VXBvbkNvbHVtbkNoYW5nZSgpCisreworKyAgICBRU3RhbmRhcmRJdGVtTW9kZWwg bTE7CisrICAgIG0xLmFwcGVuZFJvdyh7CisrICAgICAgICAgICAgbmV3IFFTdGFuZGFyZEl0ZW0o IkJhbmFuYSIpLAorKyAgICAgICAgICAgIG5ldyBRU3RhbmRhcmRJdGVtKCJDb2NvbnV0IiksCisr ICAgIH0pOworKworKyAgICBRUXVpY2tWaWV3IHZpZXcodGVzdEZpbGVVcmwoInJlZHJhd1Vwb25D b2x1bW5DaGFuZ2UucW1sIikpOworKyAgICBRQ09NUEFSRSh2aWV3LnN0YXR1cygpLCBRUXVpY2tW aWV3OjpSZWFkeSk7CisrICAgIHZpZXcuc2hvdygpOworKyAgICBRUXVpY2tJdGVtICpyb290ID0g dmlldy5yb290T2JqZWN0KCk7CisrICAgIHJvb3QtPnNldFByb3BlcnR5KCJtb2RlbCIsIFFWYXJp YW50Ojpmcm9tVmFsdWU8UU9iamVjdCAqPigmbTEpKTsKKysKKysgICAgUU9iamVjdCAqaXRlbSA9 IHJvb3QtPnByb3BlcnR5KCJjdXJyZW50SXRlbSIpLnZhbHVlPFFPYmplY3QgKj4oKTsKKysgICAg UVZFUklGWShpdGVtKTsKKysgICAgUUNPTVBBUkUoaXRlbS0+cHJvcGVydHkoInRleHQiKS50b1N0 cmluZygpLCAiQmFuYW5hIik7CisrCisrICAgIFFWRVJJRlkocm9vdCk7CisrICAgIG0xLnJlbW92 ZUNvbHVtbigwKTsKKysKKysgICAgUUNPTVBBUkUoaXRlbS0+cHJvcGVydHkoInRleHQiKS50b1N0 cmluZygpLCAiQ29jb251dCIpOworK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RUW1sRGVsZWdhdGVN b2RlbCkKKyAKKyAjaW5jbHVkZSAidHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLm1vYyIKK2RpZmYgLS1n aXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAgYi9x dGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAKK2luZGV4IDVk NjM1YWE2M2IuLjgyNGZkODllNWIgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1 dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0 by9xbWwvcXY0bW0vdHN0X3F2NG1tLmNwcAorQEAgLTc2LDEwICs3NiwxMCBAQCB2b2lkIHRzdF9x djRtbTo6bXVsdGlXcmFwcGVkUU9iamVjdHMoKQorICAgICAgICAgUUNPTVBBUkUoZW5naW5lMS5t ZW1vcnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDEp OworICAgICAgICAgUUNPTVBBUkUoZW5naW5lMi5tZW1vcnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVl ZE9iamVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDApOworIAorLSAgICAgICAgLy8gTW92ZXMgdGhl IGFkZGl0aW9uYWwgV2Vha1ZhbHVlIGZyb20gbV9tdWx0aXBseVdyYXBwZWRRT2JqZWN0cyB0bwor LSAgICAgICAgLy8gbV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuIEl0J3Mgc3RpbGwg YWxpdmUgYWZ0ZXIgYWxsLgorKyAgICAgICAgLy8gVGhlIGFkZGl0aW9uYWwgV2Vha1ZhbHVlIGZy b20gbV9tdWx0aXBseVdyYXBwZWRRT2JqZWN0cyBoYXNuJ3QgYmVlbiBtb3ZlZAorKyAgICAgICAg Ly8gdG8gbV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUgeWV0LiBJdCdzIHN0aWxsIGFs aXZlIGFmdGVyIGFsbC4KKyAgICAgICAgIGVuZ2luZTEubWVtb3J5TWFuYWdlci0+cnVuR0MoKTsK Ky0gICAgICAgIFFDT01QQVJFKGVuZ2luZTEubWVtb3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRP YmplY3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAyKTsKKysgICAgICAgIFFDT01QQVJFKGVuZ2luZTEu bWVtb3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAx KTsKKyAKKyAgICAgICAgIC8vIGVuZ2luZTIgZG9lc24ndCBvd24gdGhlIG9iamVjdCBhcyBlbmdp bmUxIHdhcyB0aGUgZmlyc3QgdG8gd3JhcCBpdCBhYm92ZS4KKyAgICAgICAgIC8vIFRoZXJlZm9y ZSwgbm8gZWZmZWN0IGhlcmUuCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRv L3F1aWNrL3FxdWlja2l0ZW0yL2RhdGEvYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFt bCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi9kYXRhL2FjdGl2 ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wMy5xbWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwMDAwLi44ODllNDgwZjNiCistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0 aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvZGF0YS9hY3RpdmVGb2N1c09uVGFiX2lu ZmluaXRlTG9vcDMucW1sCitAQCAtMCwwICsxLDEzIEBACisraW1wb3J0IFF0UXVpY2sgMi42Cisr CisrSXRlbSB7CisrICAgIHZpc2libGU6IHRydWUKKysgICAgSXRlbSB7CisrICAgICAgICB2aXNp YmxlOiBmYWxzZQorKyAgICAgICAgSXRlbSB7CisrICAgICAgICAgICAgb2JqZWN0TmFtZTogImhp ZGRlbkNoaWxkIgorKyAgICAgICAgICAgIGFjdGl2ZUZvY3VzT25UYWI6IHRydWUKKysgICAgICAg ICAgICBmb2N1czogdHJ1ZQorKyAgICAgICAgfQorKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL3F0 ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRlbS5j cHAgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlj a2l0ZW0uY3BwCitpbmRleCBjOGYyNTFkYmUxLi5jOGVmMzZlZTY4IDEwMDY0NAorLS0tIGEvcXRk ZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNw cAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL3RzdF9x cXVpY2tpdGVtLmNwcAorQEAgLTY3LDYgKzY3LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9p ZCBhY3RpdmVGb2N1c09uVGFiMTAoKTsKKyAgICAgdm9pZCBhY3RpdmVGb2N1c09uVGFiX2luZmlu aXRlTG9vcF9kYXRhKCk7CisgICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3Ao KTsKKysgICAgdm9pZCBhY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcENvbnRyb2xzKCk7Cisg CisgICAgIHZvaWQgbmV4dEl0ZW1JbkZvY3VzQ2hhaW4oKTsKKyAgICAgdm9pZCBuZXh0SXRlbUlu Rm9jdXNDaGFpbjIoKTsKK0BAIC0xMDU3LDYgKzEwNTgsMTcgQEAgdm9pZCB0c3RfUVF1aWNrSXRl bTo6YWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AoKQorICAgICBRQ09NUEFSRShpdGVtLCB3 aW5kb3ctPnJvb3RPYmplY3QoKSk7CisgfQorIAorKworK3ZvaWQgdHN0X1FRdWlja0l0ZW06OmFj dGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wQ29udHJvbHMoKQorK3sKKysgICAgYXV0byBzb3Vy Y2UgPSB0ZXN0RmlsZVVybCgiYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbCIpOwor KyAgICBRU2NvcGVkUG9pbnRlcjxRUXVpY2tWaWV3PndpbmRvdyhuZXcgUVF1aWNrVmlldygpKTsK KysgICAgd2luZG93LT5zZXRTb3VyY2Uoc291cmNlKTsKKysgICAgd2luZG93LT5zaG93KCk7Cisr ICAgIFFWRVJJRlkod2luZG93LT5lcnJvcnMoKS5pc0VtcHR5KCkpOworKyAgICBRVGVzdDo6a2V5 Q2xpY2sod2luZG93LmdldCgpLCBRdDo6S2V5X1RhYik7IC8vIHNob3VsZCBub3QgaGFuZworK30K KysKKyB2b2lkIHRzdF9RUXVpY2tJdGVtOjpuZXh0SXRlbUluRm9jdXNDaGFpbigpCisgeworICAg ICBpZiAoIXF0X3RhYl9hbGxfd2lkZ2V0cygpKQorU3VibW9kdWxlIHF0ZG9jIGMwYzdiZjA3Li4u NzlkNmVmNjk6CitTdWJtb2R1bGUgcXRpbWFnZWZvcm1hdHMgMmRjZjI4OTkuLmFiZTQ0YzBmOgor ZGlmZiAtLWdpdCBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25z L3FpY25zaGFuZGxlci5jcHAgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1h dHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwCitpbmRleCBkZGU3ODNjLi4xYmY5MDc0IDEwMDY0NAor LS0tIGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNo YW5kbGVyLmNwcAorKysrIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRz L2ljbnMvcWljbnNoYW5kbGVyLmNwcAorQEAgLTQ2Miw4ICs0NjIsMTIgQEAgc3RhdGljIGJvb2wg cGFyc2VJY29uRW50cnlJbmZvKElDTlNFbnRyeSAmaWNvbikKKyAgICAgaWYgKGlzSWNvbkNvbXBy ZXNzZWQoaWNvbikpCisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgLy8gSWNvbiBkZXB0aDoK Ky0gICAgaWYgKCFkZXB0aC5pc0VtcHR5KCkpCistICAgICAgICBpY29uLmRlcHRoID0gSUNOU0Vu dHJ5OjpEZXB0aChkZXB0aC50b1VJbnQoKSk7CisrICAgIGlmICghZGVwdGguaXNFbXB0eSgpKSB7 CisrICAgICAgICBjb25zdCB1aW50IGRlcHRoVUludCA9IGRlcHRoLnRvVUludCgpOworKyAgICAg ICAgaWYgKGRlcHRoVUludCA+IDMyKQorKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAg ICAgIGljb24uZGVwdGggPSBJQ05TRW50cnk6OkRlcHRoKGRlcHRoVUludCk7CisrICAgIH0KKyAg ICAgLy8gVHJ5IG1vbm8gaWYgZGVwdGggbm90IGZvdW5kCisgICAgIGlmIChpY29uLmRlcHRoID09 IElDTlNFbnRyeTo6RGVwdGhVbmtub3duKQorICAgICAgICAgaWNvbi5kZXB0aCA9IElDTlNFbnRy eTo6RGVwdGhNb25vOworQEAgLTUxNSw2ICs1MTksOSBAQCBzdGF0aWMgYm9vbCBwYXJzZUljb25F bnRyeUluZm8oSUNOU0VudHJ5ICZpY29uKQorICAgICAgICAgfQorICAgICAgICAgaWNvbi5oZWln aHQgPSBpY29uLndpZHRoOworICAgICB9CisrICAgIC8vIFNhbml0eSBjaGVjaworKyAgICBpZiAo aWNvbi53aWR0aCA9PSAwIHx8IGljb24ud2lkdGggPiA0MDk2KQorKyAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICByZXR1cm4gdHJ1ZTsKKyB9CisgCitAQCAtNjg1LDcgKzY5Miw3IEBAIGJvb2wg UUlDTlNIYW5kbGVyOjpjYW5SZWFkKCkgY29uc3QKKyBib29sIFFJQ05TSGFuZGxlcjo6cmVhZChR SW1hZ2UgKm91dEltYWdlKQorIHsKKyAgICAgUUltYWdlIGltZzsKKy0gICAgaWYgKCFlbnN1cmVT Y2FubmVkKCkpIHsKKysgICAgaWYgKCFlbnN1cmVTY2FubmVkKCkgfHwgbV9jdXJyZW50SWNvbklu ZGV4ID49IG1faWNvbnMuc2l6ZSgpKSB7CisgICAgICAgICBxV2FybmluZygiUUlDTlNIYW5kbGVy OjpyZWFkKCk6IFRoZSBkZXZpY2Ugd2Fzbid0IHBhcnNlZCBwcm9wZXJseSEiKTsKKyAgICAgICAg IHJldHVybiBmYWxzZTsKKyAgICAgfQorQEAgLTg5Miw3ICs4OTksNyBAQCBib29sIFFJQ05TSGFu ZGxlcjo6c2NhbkRldmljZSgpCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgICAg ICAgY29uc3QgcWludDY0IGJsb2NrRGF0YU9mZnNldCA9IGRldmljZSgpLT5wb3MoKTsKKy0gICAg ICAgIGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGJsb2NrSGVhZGVyKSkgeworKyAgICAgICAgaWYg KCFpc0Jsb2NrSGVhZGVyVmFsaWQoYmxvY2tIZWFkZXIsIElDTlNCbG9ja0hlYWRlclNpemUgKyBm aWxlbGVuZ3RoIC0gYmxvY2tEYXRhT2Zmc2V0KSkgeworICAgICAgICAgICAgIHFXYXJuaW5nKCJR SUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKTogRmFpbGVkLCBiYWQgaGVhZGVyIGF0IHBvcyAlcy4g T1NUeXBlIFwiJXNcIiwgbGVuZ3RoICV1IiwKKyAgICAgICAgICAgICAgICAgICAgICBRQnl0ZUFy cmF5OjpudW1iZXIoYmxvY2tEYXRhT2Zmc2V0KS5jb25zdERhdGEoKSwKKyAgICAgICAgICAgICAg ICAgICAgICBuYW1lRnJvbU9TVHlwZShibG9ja0hlYWRlci5vc3R5cGUpLmNvbnN0RGF0YSgpLCBi bG9ja0hlYWRlci5sZW5ndGgpOworQEAgLTkyNywxMSArOTM0LDE0IEBAIGJvb2wgUUlDTlNIYW5k bGVyOjpzY2FuRGV2aWNlKCkKKyAgICAgICAgIGNhc2UgSUNOU0Jsb2NrSGVhZGVyOjpUeXBlT2Ry cDoKKyAgICAgICAgICAgICAvLyBJY25zIGNvbnRhaW5lciBzZWVtcyB0byBoYXZlIGFuIGVtYmVk ZGVkIGljb24gdmFyaWFudCBjb250YWluZXIKKyAgICAgICAgICAgICAvLyBMZXQncyBzdGFydCBh IHNjYW4gZm9yIGVudHJpZXMKKy0gICAgICAgICAgICB3aGlsZSAoZGV2aWNlKCktPnBvcygpIDwg bmV4dEJsb2NrT2Zmc2V0KSB7CisrICAgICAgICAgICAgd2hpbGUgKCFzdHJlYW0uYXRFbmQoKSAm JiBkZXZpY2UoKS0+cG9zKCkgPCBuZXh0QmxvY2tPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAg SUNOU0Jsb2NrSGVhZGVyIGljb247CisgICAgICAgICAgICAgICAgIHN0cmVhbSA+PiBpY29uOwor KyAgICAgICAgICAgICAgICBpZiAoc3RyZWFtLnN0YXR1cygpICE9IFFEYXRhU3RyZWFtOjpPaykK KysgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgLy8g Q2hlY2sgZm9yIGluY29ycmVjdCB2YXJpYW50IGVudHJ5IGhlYWRlciBhbmQgc3RvcCBzY2FuCist ICAgICAgICAgICAgICAgIGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGljb24sIGJsb2NrRGF0YUxl bmd0aCkpCisrICAgICAgICAgICAgICAgIHF1aW50NjQgcmVtYWluaW5nID0gYmxvY2tEYXRhTGVu Z3RoIC0gKGRldmljZSgpLT5wb3MoKSAtIGJsb2NrRGF0YU9mZnNldCk7CisrICAgICAgICAgICAg ICAgIGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGljb24sIElDTlNCbG9ja0hlYWRlclNpemUgKyBy ZW1haW5pbmcpKQorICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg IGlmICghYWRkRW50cnkoaWNvbiwgZGV2aWNlKCktPnBvcygpLCBibG9ja0hlYWRlci5vc3R5cGUp KQorICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTEwMDMsNyArMTAxMyw3 IEBAIGJvb2wgUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCkKKyAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgIH0KKyAgICAgfQorLSAgICByZXR1cm4gdHJ1ZTsKKysgICAgcmV0dXJuIChtX2lj b25zLnNpemUoKSA+IDApOworIH0KKyAKKyBjb25zdCBJQ05TRW50cnkgJlFJQ05TSGFuZGxlcjo6 Z2V0SWNvbk1hc2soY29uc3QgSUNOU0VudHJ5ICZpY29uKSBjb25zdAorZGlmZiAtLWdpdCBhL3F0 aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIvcWpwMmhhbmRsZXIuY3Bw IGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxl ci5jcHAKK2luZGV4IDUwODIwMjMuLmNiMzQzNzQgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0 cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcAorKysrIGIvcXRp bWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxlci5jcHAK K0BAIC00Myw2ICs0Myw3IEBACisgI2luY2x1ZGUgInFpbWFnZS5oIgorICNpbmNsdWRlICJxdmFy aWFudC5oIgorICNpbmNsdWRlICJxY29sb3IuaCIKKysjaW5jbHVkZSAicWltYWdlcmVhZGVyLmgi CisgCisgI2luY2x1ZGUgPGphc3Blci9qYXNwZXIuaD4KKyAjaW5jbHVkZSA8bWF0aC5oPiAvLyBm b3IgcG93CitAQCAtMzMzLDE2ICszMzQsNDYgQEAgcHJpdmF0ZToKKyBKcGVnMjAwMEphc3BlclJl YWRlcjo6SnBlZzIwMDBKYXNwZXJSZWFkZXIoUUlPRGV2aWNlICppb2QsIFN1YkZvcm1hdCBmb3Jt YXQpCisgICAgIDogamFzcGVyT2sodHJ1ZSksIGlvRGV2aWNlKGlvZCksIGZvcm1hdChmb3JtYXQp LCBoYXNBbHBoYShmYWxzZSkKKyB7CisrI2lmIEpBU19WRVJTSU9OX01BSk9SIDwgMworICAgICBp ZiAoamFzX2luaXQoKSkgeworICAgICAgICAgamFzcGVyT2sgPSBmYWxzZTsKKyAgICAgICAgIHFE ZWJ1ZygiSmFzcGVyIExpYnJhcnkgaW5pdGlhbGl6YXRpb24gZmFpbGVkIik7CisgICAgIH0KKysj ZWxzZQorKyAgICBqYXNfY29uZl9jbGVhcigpOworKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJ T05fQ0hFQ0soNiwgMCwgMCkKKysgICAgamFzX2NvbmZfc2V0X21heF9tZW1fdXNhZ2UoUUltYWdl UmVhZGVyOjphbGxvY2F0aW9uTGltaXQoKSAqIDEwMjQgKiAxMDI0KTsKKysjZWxzZQorKyAgICAv LyAxMjhNQiBzZWVtcyB0byBiZSBlbm91Z2guCisrICAgIGphc19jb25mX3NldF9tYXhfbWVtX3Vz YWdlKDEyOCAqIDEwMjQgKiAxMDI0KTsKKysjZW5kaWYKKysgICAgaWYgKGphc19pbml0X2xpYnJh cnkoKSkgeworKyAgICAgICAgamFzcGVyT2sgPSBmYWxzZTsKKysgICAgICAgIHFEZWJ1ZygiSmFz cGVyIGxpYnJhcnkgaW5pdGlhbGl6YXRpb24gZmFpbGVkIik7CisrICAgIH0KKysgICAgaWYgKGph c19pbml0X3RocmVhZCgpKSB7CisrICAgICAgICBqYXNfY2xlYW51cF9saWJyYXJ5KCk7CisrICAg ICAgICBqYXNwZXJPayA9IGZhbHNlOworKyAgICAgICAgcURlYnVnKCJKYXNwZXIgdGhyZWFkIGlu aXRpYWxpemF0aW9uIGZhaWxlZCIpOworKyAgICB9CisrI2VuZGlmCisgfQorIAorIEpwZWcyMDAw SmFzcGVyUmVhZGVyOjp+SnBlZzIwMDBKYXNwZXJSZWFkZXIoKQorIHsKKysjaWYgSkFTX1ZFUlNJ T05fTUFKT1IgPCAzCisgICAgIGlmIChqYXNwZXJPaykKKyAgICAgICAgIGphc19jbGVhbnVwKCk7 CisrI2Vsc2UKKysgICAgaWYgKGphc3Blck9rKSB7CisrICAgICAgICBpZiAoamFzX2NsZWFudXBf dGhyZWFkKCkpIHsKKysgICAgICAgICAgICBxRGVidWcoIkphc3BlciB0aHJlYWQgY2xlYW51cCBm YWlsZWQiKTsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChqYXNfY2xlYW51cF9saWJyYXJ5KCkp IHsKKysgICAgICAgICAgICBxRGVidWcoIkphc3BlciBsaWJyYXJ5IGNsZWFudXAgZmFpbGVkIik7 CisrICAgICAgICB9CisrICAgIH0KKysjZW5kaWYKKyB9CisgCisgLyohIFxpbnRlcm5hbAorQEAg LTg1Nyw3ICs4ODgsNyBAQCBib29sIEpwZWcyMDAwSmFzcGVyUmVhZGVyOjp3cml0ZShjb25zdCBR SW1hZ2UgJmltYWdlLCBpbnQgcXVhbGl0eSkKKyAgICAgfQorIAorICAgICAvLyBPcGVuIGFuIGVt cHR5IGphc3BlciBzdHJlYW0gdGhhdCBncm93cyBhdXRvbWF0aWNhbGx5CistICAgIGphc19zdHJl YW1fdCAqIG1lbW9yeV9zdHJlYW0gPSBqYXNfc3RyZWFtX21lbW9wZW4oMCwgLTEpOworKyAgICBq YXNfc3RyZWFtX3QgKiBtZW1vcnlfc3RyZWFtID0gamFzX3N0cmVhbV9tZW1vcGVuKDAsIDApOwor IAorICAgICAvLyBKYXNwZXIgd2FudHMgYSBub24tY29uc3Qgc3RyaW5nLgorICAgICBjaGFyICpz dHIgPSBxc3RyZHVwKGphc3BlckZvcm1hdFN0cmluZy50b0xhdGluMSgpLmNvbnN0RGF0YSgpKTsK K2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlm Zi9xdGlmZmhhbmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3Jt YXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcAoraW5kZXggMTM4Njc1MC4uYWM4OTU2YyAxMDA2NDQK Ky0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZm aGFuZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0 cy90aWZmL3F0aWZmaGFuZGxlci5jcHAKK0BAIC0zNjEsNiArMzYxLDggQEAgYm9vbCBRVGlmZkhh bmRsZXI6OnJlYWQoUUltYWdlICppbWFnZSkKKyAgICAgfQorIAorICAgICBUSUZGICpjb25zdCB0 aWZmID0gZC0+dGlmZjsKKysgICAgaWYgKFRJRkZJc1RpbGVkKHRpZmYpICYmIFRJRkZUaWxlU2l6 ZTY0KHRpZmYpID4gdWludDY0X3QoaW1hZ2UtPnNpemVJbkJ5dGVzKCkpKSAvLyBDb3JydXB0IGlt YWdlCisrICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIGNvbnN0IHF1aW50MzIgd2lkdGggPSBk LT5zaXplLndpZHRoKCk7CisgICAgIGNvbnN0IHF1aW50MzIgaGVpZ2h0ID0gZC0+c2l6ZS5oZWln aHQoKTsKKyAKK2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZv cm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMv aW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcAoraW5kZXggODJkMzhjYi4uZDAyZWIw NSAxMDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93 ZWJwL3F3ZWJwaGFuZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2lt YWdlZm9ybWF0cy93ZWJwL3F3ZWJwaGFuZGxlci5jcHAKK0BAIC00NSw2ICs0NSw3IEBACisgI2lu Y2x1ZGUgPHFkZWJ1Zy5oPgorICNpbmNsdWRlIDxxcGFpbnRlci5oPgorICNpbmNsdWRlIDxxdmFy aWFudC5oPgorKyNpbmNsdWRlIDxRdEVuZGlhbj4KKyAKKyBzdGF0aWMgY29uc3QgaW50IHJpZmZI ZWFkZXJTaXplID0gMTI7IC8vIFJJRkZfSEVBREVSX1NJWkUgZnJvbSB3ZWJwL2Zvcm1hdF9jb25z dGFudHMuaAorIAorQEAgLTEwMiwyMSArMTAzLDIzIEBAIGJvb2wgUVdlYnBIYW5kbGVyOjplbnN1 cmVTY2FubmVkKCkgY29uc3QKKyAKKyAgICAgbV9zY2FuU3RhdGUgPSBTY2FuRXJyb3I7CisgCist ICAgIGlmIChkZXZpY2UoKS0+aXNTZXF1ZW50aWFsKCkpIHsKKy0gICAgICAgIHFXYXJuaW5nKCkg PDwgIlNlcXVlbnRpYWwgZGV2aWNlcyBhcmUgbm90IHN1cHBvcnRlZCI7CisrICAgIFFXZWJwSGFu ZGxlciAqdGhhdCA9IGNvbnN0X2Nhc3Q8UVdlYnBIYW5kbGVyICo+KHRoaXMpOworKyAgICBjb25z dCBpbnQgaGVhZGVyQnl0ZXNOZWVkZWQgPSBzaXplb2YoV2ViUEJpdHN0cmVhbUZlYXR1cmVzKTsK KysgICAgUUJ5dGVBcnJheSBoZWFkZXIgPSBkZXZpY2UoKS0+cGVlayhoZWFkZXJCeXRlc05lZWRl ZCk7CisrICAgIGlmIChoZWFkZXIuc2l6ZSgpIDwgaGVhZGVyQnl0ZXNOZWVkZWQpCisgICAgICAg ICByZXR1cm4gZmFsc2U7CistICAgIH0KKyAKKy0gICAgcWludDY0IG9sZFBvcyA9IGRldmljZSgp LT5wb3MoKTsKKy0gICAgZGV2aWNlKCktPnNlZWsoMCk7CistCistICAgIFFXZWJwSGFuZGxlciAq dGhhdCA9IGNvbnN0X2Nhc3Q8UVdlYnBIYW5kbGVyICo+KHRoaXMpOworLSAgICBRQnl0ZUFycmF5 IGhlYWRlciA9IGRldmljZSgpLT5wZWVrKHNpemVvZihXZWJQQml0c3RyZWFtRmVhdHVyZXMpKTsK KysgICAgLy8gV2UgZG8gbm8gcmFuZG9tIGFjY2VzcyBkdXJpbmcgZGVjb2RpbmcsIGp1c3QgYSBy ZWFkQWxsKCkgb2YgdGhlIHdob2xlIGltYWdlIGZpbGUuIFNvIGlmCisrICAgIC8vIGlmIGl0IGlz IGFsbCBhdmFpbGFibGUgYWxyZWFkeSwgd2UgY2FuIGFjY2VwdCBhIHNlcXVlbnRpYWwgZGV2aWNl LiBUaGUgcmlmZiBoZWFkZXIgY29udGFpbnMKKysgICAgLy8gdGhlIGZpbGUgc2l6ZSBtaW51cyA4 IGJ5dGVzIGhlYWRlcgorKyAgICBxaW50NjQgYnl0ZVNpemUgPSBxRnJvbUxpdHRsZUVuZGlhbjxx dWludDMyPihoZWFkZXIuY29uc3REYXRhKCkgKyA0KTsKKysgICAgaWYgKGRldmljZSgpLT5pc1Nl cXVlbnRpYWwoKSAmJiBkZXZpY2UoKS0+Ynl0ZXNBdmFpbGFibGUoKSA8IGJ5dGVTaXplICsgOCkg eworKyAgICAgICAgcVdhcm5pbmcoKSA8PCAiUVdlYnBIYW5kbGVyOiBJbnN1ZmZpY2llbnQgZGF0 YSBhdmFpbGFibGUgaW4gc2VxdWVudGlhbCBkZXZpY2UiOworKyAgICAgICAgcmV0dXJuIGZhbHNl OworKyAgICB9CisgICAgIGlmIChXZWJQR2V0RmVhdHVyZXMoKGNvbnN0IHVpbnQ4X3QqKWhlYWRl ci5jb25zdERhdGEoKSwgaGVhZGVyLnNpemUoKSwgJih0aGF0LT5tX2ZlYXR1cmVzKSkgPT0gVlA4 X1NUQVRVU19PSykgeworICAgICAgICAgaWYgKG1fZmVhdHVyZXMuaGFzX2FuaW1hdGlvbikgewor ICAgICAgICAgICAgIC8vIEZvciBhbmltYXRpb24sIHdlIGhhdmUgdG8gcmVhZCBhbmQgc2NhbiB3 aG9sZSBmaWxlIHRvIGRldGVybWluZSBsb29wIGNvdW50IGFuZCBpbWFnZXMgY291bnQKKy0gICAg ICAgICAgICBkZXZpY2UoKS0+c2VlayhvbGRQb3MpOworLQorICAgICAgICAgICAgIGlmICh0aGF0 LT5lbnN1cmVEZW11eGVyKCkpIHsKKyAgICAgICAgICAgICAgICAgdGhhdC0+bV9sb29wID0gV2Vi UERlbXV4R2V0SShtX2RlbXV4ZXIsIFdFQlBfRkZfTE9PUF9DT1VOVCk7CisgICAgICAgICAgICAg ICAgIHRoYXQtPm1fZnJhbWVDb3VudCA9IFdlYlBEZW11eEdldEkobV9kZW11eGVyLCBXRUJQX0ZG X0ZSQU1FX0NPVU5UKTsKK0BAIC0xMjYsMTcgKzEyOSwxMyBAQCBib29sIFFXZWJwSGFuZGxlcjo6 ZW5zdXJlU2Nhbm5lZCgpIGNvbnN0CisgICAgICAgICAgICAgICAgIGlmICh0aGF0LT5tX2ZlYXR1 cmVzLmhhc19hbHBoYSkKKyAgICAgICAgICAgICAgICAgICAgIHRoYXQtPm1fY29tcG9zaXRlZC0+ ZmlsbChRdDo6dHJhbnNwYXJlbnQpOworIAorLSAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qg cmVzZXQgZGV2aWNlIHBvc2l0aW9uIHNpbmNlIHdlIGhhdmUgcmVhZCBpbiBhbGwgZGF0YQorICAg ICAgICAgICAgICAgICBtX3NjYW5TdGF0ZSA9IFNjYW5TdWNjZXNzOworLSAgICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgIG1fc2NhblN0YXRlID0gU2NhblN1Y2Nlc3M7CisgICAgICAgICB9CisgICAgIH0KKyAK Ky0gICAgZGV2aWNlKCktPnNlZWsob2xkUG9zKTsKKy0KKyAgICAgcmV0dXJuIG1fc2NhblN0YXRl ID09IFNjYW5TdWNjZXNzOworIH0KKyAKK0BAIC0xNTksNyArMTU4LDcgQEAgYm9vbCBRV2VicEhh bmRsZXI6OmVuc3VyZURlbXV4ZXIoKQorIAorIGJvb2wgUVdlYnBIYW5kbGVyOjpyZWFkKFFJbWFn ZSAqaW1hZ2UpCisgeworLSAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSB8fCBkZXZpY2UoKS0+aXNT ZXF1ZW50aWFsKCkgfHwgIWVuc3VyZURlbXV4ZXIoKSkKKysgICAgaWYgKCFlbnN1cmVTY2FubmVk KCkgfHwgIWVuc3VyZURlbXV4ZXIoKSkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAKKyAgICAg UVJlY3QgcHJldkZyYW1lUmVjdDsKK1N1Ym1vZHVsZSBxdGxvY2F0aW9uIDk4YTVjNTExLi5mOTkx ZTI4YzoKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1cmUuanNv biBiL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29uCitpbmRleCA2ZDAxYTlh My4uZDFlNjIzYTEgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1 cmUuanNvbgorKysrIGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vY29uZmlndXJlLmpzb24KK0BA IC05LDcgKzksNyBAQAorICAgICAgICAgICAgICJsYWJlbCI6ICJRdC5sYWJzLmxvY2F0aW9uIGV4 cGVyaW1lbnRhbCBRTUwgcGx1Z2luIiwKKyAgICAgICAgICAgICAicHVycG9zZSI6ICJQcm92aWRl cyBleHBlcmltZW50YWwgUXRMb2NhdGlvbiBRTUwgdHlwZXMiLAorICAgICAgICAgICAgICJzZWN0 aW9uIjogIkxvY2F0aW9uIiwKKy0gICAgICAgICAgICAiY29uZGl0aW9uIjogImNvbmZpZy5vcGVu Z2wiLAorKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiZmVhdHVyZXMub3BlbmdsIiwKKyAgICAg ICAgICAgICAib3V0cHV0IjogWyAicHJpdmF0ZUZlYXR1cmUiIF0KKyAgICAgICAgIH0sCisgICAg ICAgICAiZ2Vvc2VydmljZXNfb3NtIjogeworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL2xv Y2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNwcCBiL3F0bG9jYXRpb24v c3JjL2xvY2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNwcAoraW5kZXgg YTk3ODU3M2QuLjExZTE0NjZmIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24v bGFicy9xc2cvcWdlb21hcG9iamVjdHFzZ3N1cHBvcnQuY3BwCisrKysgYi9xdGxvY2F0aW9uL3Ny Yy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9ydC5jcHAKK0BAIC0xNTgs NyArMTU4LDcgQEAgdm9pZCBRR2VvTWFwT2JqZWN0UVNHU3VwcG9ydDo6dXBkYXRlTWFwT2JqZWN0 cyhRU0dOb2RlICpyb290LCBRUXVpY2tXaW5kb3cgKndpbmQKKyAgICAgaWYgKCFyb290KQorICAg ICAgICAgcmV0dXJuOworIAorLSAgICBpZiAobV9tYXBPYmplY3RzUm9vdE5vZGUgJiYgbV9tYXBP YmplY3RzUm9vdE5vZGUtPnBhcmVudCgpKQorKyAgICBpZiAobV9tYXBPYmplY3RzUm9vdE5vZGUg JiYgIW1fbWFwT2JqZWN0c1Jvb3ROb2RlLT5wYXJlbnQoKSkKKyAgICAgICAgIHJvb3QtPmFwcGVu ZENoaWxkTm9kZShtX21hcE9iamVjdHNSb290Tm9kZS5nZXQoKSk7CisgCisgICAgIGlmICghbV9t YXBPYmplY3RzUm9vdE5vZGUpIHsKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5z L2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9j YXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5l X2VzcmkuY3BwCitpbmRleCA1YTQwNDY3ZS4uZDEyM2M2YTggMTAwNjQ0CistLS0gYS9xdGxvY2F0 aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9l c3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dl b2NvZGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK0BAIC01OSw4ICs1OSwxMCBAQCBRVF9CRUdJ Tl9OQU1FU1BBQ0UKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrUHJlZml4RXNyaShRU3RyaW5nTGl0 ZXJhbCgiZXNyaS4iKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1BhcmFtVXNlckFnZW50KGtQ cmVmaXhFc3JpICsgUVN0cmluZ0xpdGVyYWwoInVzZXJhZ2VudCIpKTsKKyAKKy1zdGF0aWMgY29u c3QgUVN0cmluZyBrVXJsR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgiaHR0cDovL2dlb2NvZGUuYXJj Z2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyL2ZpbmRBZGRy ZXNzQ2FuZGlkYXRlcyIpKTsKKy1zdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUmV2ZXJzZUdlb2Nv ZGUoUVN0cmluZ0xpdGVyYWwoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qv c2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlci9yZXZlcnNlR2VvY29kZSIpKTsKKytzdGF0aWMg Y29uc3QgUVN0cmluZyBrVXJsR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgiaHR0cHM6Ly9nZW9jb2Rl LmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvIgorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXb3JsZC9HZW9jb2RlU2VydmVyL2ZpbmRBZGRy ZXNzQ2FuZGlkYXRlcyIpKTsKKytzdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUmV2ZXJzZUdlb2Nv ZGUoUVN0cmluZ0xpdGVyYWwoCisrICAgICAgICAiaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20v YXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlci9yZXZlcnNlR2VvY29kZSIp KTsKKyAKKyBzdGF0aWMgUVN0cmluZyBhZGRyZXNzVG9RdWVyeShjb25zdCBRR2VvQWRkcmVzcyAm YWRkcmVzcykKKyB7CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2 aWNlcy9lc3JpL2dlb3JvdXRlanNvbnBhcnNlcl9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3Bs dWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5jcHAKK2luZGV4 IDE3NDkyZDk0Li45NmMxMmIxYiAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMv Z2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5jcHAKKysrKyBiL3F0bG9j YXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNy aS5jcHAKK0BAIC00Niw3ICs0Niw4IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCistLy8g SlNPTiByZWZlcmVuY2U6IGh0dHA6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dp cy1yZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRpb24vMDJy MzAwMDAwMDM2MDAwMDAwLworKy8vIEpTT04gcmVmZXJlbmNlOgorKy8vIGh0dHBzOi8vcmVzb3Vy Y2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dp dGhfc3luY2hyb25vdXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKyAKKyBzdGF0aWMg Y29uc3QgUVN0cmluZyBrRXJyb3JNZXNzYWdlKFFTdHJpbmdMaXRlcmFsKCJFcnJvciAlMTogJTIu IikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtFcnJvckpzb24oUVN0cmluZ0xpdGVyYWwoIkVy cm9yOiBpbnZhbGlkZSBKU09OIGRvY3VtZW50LiIpKTsKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9u L3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcCBiL3F0 bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZXJlcGx5X2Vzcmku Y3BwCitpbmRleCA4Y2FkZmIyOS4uOTJiNmJiMTMgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3Ny Yy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcAorKysrIGIv cXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNy aS5jcHAKK0BAIC00NCw3ICs0NCw4IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCistLy8g SlNPTiByZWZlcmVuY2U6IGh0dHA6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dp cy1yZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRpb24vMDJy MzAwMDAwMDM2MDAwMDAwLworKy8vIEpTT04gcmVmZXJlbmNlOgorKy8vIGh0dHBzOi8vcmVzb3Vy Y2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dp dGhfc3luY2hyb25vdXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKyAKKyBHZW9Sb3V0 ZVJlcGx5RXNyaTo6R2VvUm91dGVSZXBseUVzcmkoUU5ldHdvcmtSZXBseSAqcmVwbHksIGNvbnN0 IFFHZW9Sb3V0ZVJlcXVlc3QgJnJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFPYmplY3QgKnBhcmVudCkgOgorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3Jj L3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNw cCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5nbWFu YWdlcmVuZ2luZV9lc3JpLmNwcAoraW5kZXggMGU2YmMyYzcuLmVkNjEzZjRiIDEwMDY0NAorLS0t IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5h Z2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZp Y2VzL2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK0BAIC00OCw3ICs0OCw4 IEBAIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQcmVmaXhFc3JpKFFTdHJpbmdMaXRlcmFsKCJlc3Jp LiIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrUGFyYW1Vc2VyQWdlbnQoa1ByZWZpeEVzcmkg KyBRU3RyaW5nTGl0ZXJhbCgidXNlcmFnZW50IikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQ YXJhbVRva2VuKGtQcmVmaXhFc3JpICsgUVN0cmluZ0xpdGVyYWwoInRva2VuIikpOworIAorLXN0 YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxSb3V0aW5nKFFTdHJpbmdMaXRlcmFsKCJodHRwOi8vcm91 dGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9Sb3V0ZS9OQVNlcnZlci9S b3V0ZV9Xb3JsZC9zb2x2ZSIpKTsKKytzdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUm91dGluZyhR U3RyaW5nTGl0ZXJhbCgKKysgICAgICAgICJodHRwczovL3JvdXRlLmFyY2dpcy5jb20vYXJjZ2lz L3Jlc3Qvc2VydmljZXMvV29ybGQvUm91dGUvTkFTZXJ2ZXIvUm91dGVfV29ybGQvc29sdmUiKSk7 CisgCisgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpHZW9Sb3V0aW5nTWFuYWdlckVuZ2lu ZUVzcmkoY29uc3QgUVZhcmlhbnRNYXAgJnBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUdlb1NlcnZpY2VQcm92aWRl cjo6RXJyb3IgKmVycm9yLAorQEAgLTcwLDcgKzcxLDggQEAgR2VvUm91dGluZ01hbmFnZXJFbmdp bmVFc3JpOjp+R2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpKCkKKyB7CisgfQorIAorLS8vIFJF U1QgcmVmZXJlbmNlOiBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMt cmVzdC1hcGkvaW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorKy8vIFJFU1QgcmVmZXJl bmNlOgorKy8vIGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVz dC1hcGkvaW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorIAorIFFHZW9Sb3V0ZVJlcGx5 ICpHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6OmNhbGN1bGF0ZVJvdXRlKGNvbnN0IFFHZW9S b3V0ZVJlcXVlc3QgJnJlcXVlc3QpCisgeworQEAgLTEyNSw3ICsxMjcsNyBAQCB2b2lkIEdlb1Jv dXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6cmVwbHlFcnJvcihRR2VvUm91dGVSZXBseTo6RXJyb3Ig ZXJyb3JDb2RlLCBjbworIFFTdHJpbmcgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpwcmVm ZXJlZERpcmVjdGlvbkxhbmdhZ2UoKQorIHsKKyAgICAgLy8gbGlzdCBvZiBzdXBwb3J0ZWQgbGFu Z2FnZXMgaXMgZGVmaW5lZCBpbjoKKy0gICAgLy8gaHR0cDovL3Jlc291cmNlcy5hcmNnaXMuY29t L2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYwMDAwMDAK KysgICAgLy8gaHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0 LWFwaS9pbmRleC5odG1sIy8vMDJyMzAwMDAwMDM2MDAwMDAwCisgICAgIGNvbnN0IFFTdHJpbmdM aXN0IHN1cHBvcnRlZExhbmd1YWdlcyA9IHsKKyAgICAgICAgICJhciIsIC8vIEdlbmVyYXRlIGRp cmVjdGlvbnMgaW4gQXJhYmljCisgICAgICAgICAiY3MiLCAvLyBHZW5lcmF0ZSBkaXJlY3Rpb25z IGluIEN6ZWNoCitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNl cy9lc3JpL2dlb3RpbGVkbWFwcGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAgYi9xdGxvY2F0aW9u L3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2lu ZV9lc3JpLmNwcAoraW5kZXggNWQxNTgzNWQuLjI0MTQ4Zjk1IDEwMDY0NAorLS0tIGEvcXRsb2Nh dGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGluZ21hbmFnZXJl bmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMv ZXNyaS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtMjMwLDcgKzIz MCw4IEBAIFFHZW9NYXAgKkdlb1RpbGVkTWFwcGluZ01hbmFnZXJFbmdpbmVFc3JpOjpjcmVhdGVN YXAoKQorIC8vICR7eX0gPSBZCisgLy8gJHt0b2tlbn0gPSBUb2tlbgorIAorLS8vIHRlbXBsYXRl ID0gJ2h0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2Vz L1dvcmxkX1RvcG9fTWFwL01hcFNlcnZlci90aWxlL3t7en19L3t7eX19L3t7eH19LnBuZycKKysv LyB0ZW1wbGF0ZSA9CisrLy8gJ2h0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNH SVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2ZXIvdGlsZS97e3p9fS97e3l9 fS97e3h9fS5wbmcnCisgCisgYm9vbCBHZW9UaWxlZE1hcHBpbmdNYW5hZ2VyRW5naW5lRXNyaTo6 aW5pdGlhbGl6ZU1hcFNvdXJjZXMoUUdlb1NlcnZpY2VQcm92aWRlcjo6RXJyb3IgKmVycm9yLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFTdHJpbmcgKmVycm9yU3RyaW5nLAorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3Bs dWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24gYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5z L2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5qc29uCitpbmRleCA4MTY3YWU3ZC4uODYyZTA4N2QgMTAw NjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5q c29uCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5q c29uCitAQCAtNiw4ICs2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXJjR0lT IE9ubGluZSBXb3JsZCBTdHJlZXQgTWFwIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwK KyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6 Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1N0 cmVldF9NYXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29w eTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTNiOTMz Mzc5ODNlOTQzNmY4ZGI5NTBlMzhhODYyOWFmJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAg ICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lT L3Jlc3Qvc2VydmljZXMvV29ybGRfU3RyZWV0X01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAg ICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29t L2hvbWUvaXRlbS5odG1sP2lkPTNiOTMzMzc5ODNlOTQzNmY4ZGI5NTBlMzhhODYyOWFmJz5Fc3Jp PC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTE2LDgg KzE2LDggQEAKKyAgICAgICAgICAgICAiIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgSW1hZ2VyeSIs CisgICAgICAgICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFs c2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20v QXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfSW1hZ2VyeS9NYXBTZXJ2ZXIiLAorLSAgICAgICAg ICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5j b20vaG9tZS9pdGVtLmh0bWw/aWQ9MTBkZjIyNzlmOTY4NGU0YTlmNmE3ZjA4ZmViYWMyYTknPkVz cmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVy LmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfSW1hZ2VyeS9NYXBT ZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdo dHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTEwZGYyMjc5Zjk2ODRlNGE5 ZjZhN2YwOGZlYmFjMmE5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAor ICAgICAgICAgeworQEAgLTI2LDggKzI2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24i OiAiQXJjR0lTIE9ubGluZSBXb3JsZCBUZXJyYWluIEJhc2UiLAorICAgICAgICAgICAgICJtb2Jp bGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAi dXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNl cy9Xb3JsZF9UZXJyYWluX0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0 VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5o dG1sP2lkPWM2MWFkOGFiMDE3ZDQ5ZTFhODJmNTgwZWUxMjk4OTMxJz5Fc3JpPC9hPiBjb250cmli dXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUu Y29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RlcnJhaW5fQmFzZS9NYXBTZXJ2ZXIiLAor KyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3 dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWM2MWFkOGFiMDE3ZDQ5ZTFhODJmNTgwZWUx Mjk4OTMxJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAg eworQEAgLTM2LDggKzM2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXJjR0lT IE9ubGluZSBXb3JsZCBUb3BvZ3JhcGh5IiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwK KyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6 Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3Bv X01hcC9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8 YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MzBlNWZlMzE0 OWMzNGRmMWJhOTIyZTZmNWJiZjgwOGYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAg ICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qv c2VydmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJp Z2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0 ZW0uaHRtbD9pZD0zMGU1ZmUzMTQ5YzM0ZGYxYmE5MjJlNmY1YmJmODA4Zic+RXNyaTwvYT4gY29u dHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC00Niw4ICs0Niw4IEBA CisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgbWFwIHByZXNlbnRzIGxhbmQgY292 ZXIgYW5kIGRldGFpbGVkIHRvcG9ncmFwaGljIG1hcHMgZm9yIHRoZSBVbml0ZWQgU3RhdGVzLiIs CisgICAgICAgICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFs c2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNv bS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9VU0FfVG9wb19NYXBzL01hcFNlcnZlciIsCistICAgICAg ICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lz LmNvbS9ob21lL2l0ZW0uaHRtbD9pZD05OWNkNWZiZDk4OTM0MDI4ODAyYjRmNzk3YzRiMTczMic+ RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2 aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1VTQV9Ub3BvX01hcHMv TWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJl Zj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD05OWNkNWZiZDk4OTM0 MDI4ODAyYjRmNzk3YzRiMTczMic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwK KyAKKyAgICAgICAgIHsKK0BAIC01Niw4ICs1Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0 aW9uIjogIk5hdGlvbmFsIEdlb2dyYXBoaWMgV29ybGQgTWFwIiwKKyAgICAgICAgICAgICAibW9i aWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAg InVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2 aWNlcy9OYXRHZW9fV29ybGRfTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdo dFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0u aHRtbD9pZD1iOWIxYjQyMjE5ODk0NGZiYmQ1MjUwYjMyNDE2OTFiNic+RXNyaTwvYT4gY29udHJp YnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxp bmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL05hdEdlb19Xb3JsZF9NYXAvTWFwU2VydmVyIiwK KysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93 d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1iOWIxYjQyMjE5ODk0NGZiYmQ1MjUwYjMy NDE2OTFiNic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAg IHsKK0BAIC02Niw4ICs2Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZW1h dGljIGNvbnRlbnQgcHJvdmlkaW5nIGEgbmV1dHJhbCBiYWNrZ3JvdW5kIHdpdGggbWluaW1hbCBj b2xvcnMiLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdo dCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29u bGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0xpZ2h0X0dyYXlfQmFz ZS9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBo cmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9ZWQ3MTJjYjFkYjNl NGJhZTllODUzMjkwNDBmYjlhNDknPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAg ICAidXJsIjogImh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9z ZXJ2aWNlcy9DYW52YXMvV29ybGRfTGlnaHRfR3JheV9CYXNlL01hcFNlcnZlciIsCisrICAgICAg ICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dp cy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9ZWQ3MTJjYjFkYjNlNGJhZTllODUzMjkwNDBmYjlhNDkn PkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAt NzYsOCArNzYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJOYXR1cmFsIEVhcnRo IHBoeXNpY2FsIG1hcCBmb3IgdGhlIHdvcmxkIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFs c2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJo dHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRf UGh5c2ljYWxfTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAi JmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1j NGVjNzIyYTFjZDM0Y2YwYTIzOTA0YWFkZjg5MjNhMCc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgor KyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNH SVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9QaHlzaWNhbF9NYXAvTWFwU2VydmVyIiwKKysgICAgICAg ICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lz LmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1jNGVjNzIyYTFjZDM0Y2YwYTIzOTA0YWFkZjg5MjNhMCc+ RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC04 Niw4ICs4Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBvcnRyYXlzIHN1cmZh Y2UgZWxldmF0aW9uIGFzIHNoYWRlZCByZWxpZWYiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBm YWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjog Imh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3Js ZF9TaGFkZWRfUmVsaWVmL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQi OiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9p ZD05YzUzNzBkMGI1NGY0ZGUxYjQ4YTM3OTJkNzM3N2ZmMic+RXNyaTwvYT4gY29udHJpYnV0b3Jz IgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9B cmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9TaGFkZWRfUmVsaWVmL01hcFNlcnZlciIsCisrICAg ICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFy Y2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9OWM1MzcwZDBiNTRmNGRlMWI0OGEzNzkyZDczNzdm ZjInPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitA QCAtOTYsOCArOTYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIG1hcCBp cyBkZXNpZ25lZCB0byBiZSB1c2VkIGFzIGEgYmFzZW1hcCBieSBtYXJpbmUgR0lTIHByb2Zlc3Np b25hbHMgYW5kIGFzIGEgcmVmZXJlbmNlIG1hcCBieSBhbnlvbmUgaW50ZXJlc3RlZCBpbiBvY2Vh biBkYXRhIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5p Z2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29u bGluZS5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvT2NlYW4vV29ybGRfT2NlYW5fQmFzZS9NYXBT ZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdo dHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MWUxMjZlNzUyMGY5NDY2Yzlj YTI4YjhmMjhiNWU1MDAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJs IjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMv T2NlYW4vV29ybGRfT2NlYW5fQmFzZS9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmln aHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRl bS5odG1sP2lkPTFlMTI2ZTc1MjBmOTQ2NmM5Y2EyOGI4ZjI4YjVlNTAwJz5Fc3JpPC9hPiBjb250 cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTEwNiw4ICsxMDYsOCBA QAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGVtYXRpYyBjb250ZW50IHByb3ZpZGlu ZyBhIG5ldXRyYWwgYmFja2dyb3VuZCB3aXRoIG1pbmltYWwgY29sb3JzIiwKKyAgICAgICAgICAg ICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogdHJ1ZSwKKy0gICAgICAg ICAgICAidXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0 L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9EYXJrX0dyYXlfQmFzZS9NYXBTZXJ2ZXIiLAorLSAgICAg ICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dp cy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YTI4NGE5Yjk5YjM0NDZhMzkxMGQ0MTQ0YTUwOTkwZjYn PkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2Vy dmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9DYW52YXMvV29ybGRf RGFya19HcmF5X0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6 ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9p ZD1hMjg0YTliOTliMzQ0NmEzOTEwZDQxNDRhNTA5OTBmNic+RXNyaTwvYT4gY29udHJpYnV0b3Jz IgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0xMTYsOCArMTE2LDggQEAKKyAgICAg ICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGVMb3JtZeKAmXMgdG9wb2dyYXBoaWMgYmFzZW1hcCBp cyBhIHNlYW1sZXNzIGdsb2JhbCBkYXRhIHNldCB0aGF0IHBvcnRyYXlzIHRyYW5zcG9ydGF0aW9u LCBoeWRyb2dyYXBoeSwganVyaXNkaWN0aW9uIGJvdW5kYXJpZXMsIGFuZCBtYWpvciBnZW9ncmFw aGljIGZlYXR1cmVzIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAg ICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFy Y2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvU3BlY2lhbHR5L0RlTG9ybWVfV29y bGRfQmFzZV9NYXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICIm Y29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWIx NjVjM2RmNDUzZTRiZTZiNWFjNGZkYjI0MWVmZmJlJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisr ICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJ Uy9yZXN0L3NlcnZpY2VzL1NwZWNpYWx0eS9EZUxvcm1lX1dvcmxkX0Jhc2VfTWFwL01hcFNlcnZl ciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBz Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjE2NWMzZGY0NTNlNGJlNmI1YWM0 ZmRiMjQxZWZmYmUnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0KKyAgICAgXQor IH0KK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vzcmkv cGxhY2VtYW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9z ZXJ2aWNlcy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAoraW5kZXggMzg1OGRkZjUu LmFmNjZmMjhlIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNl cy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMv cGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorQEAg LTYzLDggKzYzLDEwIEBAIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtDb3VudHJpZXNLZXkoUVN0cmlu Z0xpdGVyYWwoImRldGFpbGVkQ291bnRyaWVzIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtM b2NhbGl6ZWROYW1lc0tleShRU3RyaW5nTGl0ZXJhbCgibG9jYWxpemVkTmFtZXMiKSk7Cisgc3Rh dGljIGNvbnN0IFFTdHJpbmcga01heExvY2F0aW9uc0tleShRU3RyaW5nTGl0ZXJhbCgibWF4TG9j YXRpb25zIikpOworIAorLXN0YXRpYyBjb25zdCBRVXJsIGtVcmxHZW9jb2RlU2VydmVyKCJodHRw Oi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVT ZXJ2ZXI/Zj1wanNvbiIpOworLXN0YXRpYyBjb25zdCBRVXJsIGtVcmxGaW5kQWRkcmVzc0NhbmRp ZGF0ZXMoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29y bGQvR2VvY29kZVNlcnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKTsKKytzdGF0aWMgY29uc3Qg UVVybCBrVXJsR2VvY29kZVNlcnZlcigKKysgICAgICAgICJodHRwczovL2dlb2NvZGUuYXJjZ2lz LmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyP2Y9cGpzb24iKTsK KytzdGF0aWMgY29uc3QgUVVybCBrVXJsRmluZEFkZHJlc3NDYW5kaWRhdGVzKCJodHRwczovL2dl b2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC8iCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2VvY29kZVNlcnZlci9maW5kQWRk cmVzc0NhbmRpZGF0ZXMiKTsKKyAKKyBQbGFjZU1hbmFnZXJFbmdpbmVFc3JpOjpQbGFjZU1hbmFn ZXJFbmdpbmVFc3JpKGNvbnN0IFFWYXJpYW50TWFwICZwYXJhbWV0ZXJzLCBRR2VvU2VydmljZVBy b3ZpZGVyOjpFcnJvciAqZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRU3RyaW5nICplcnJvclN0cmluZykgOgorU3VibW9kdWxlIHF0bXVsdGlt ZWRpYSBmMDM0NDA3OS4uMGQ3Y2MzM2E6CitkaWZmIC0tZ2l0IGEvcXRtdWx0aW1lZGlhL3NyYy9w bHVnaW5zL3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3BwIGIvcXRtdWx0aW1lZGlhL3Ny Yy9wbHVnaW5zL3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3BwCitpbmRleCAyYjUzMjUx MzIuLmI2OGI0YWYxYiAxMDA2NDQKKy0tLSBhL3F0bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxz ZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNwcAorKysrIGIvcXRtdWx0aW1lZGlhL3NyYy9wbHVn aW5zL3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3BwCitAQCAtNDAyLDYgKzQwMiw4IEBA IGludCBRUHVsc2VBdWRpb0lucHV0OjpieXRlc1JlYWR5KCkgY29uc3QKKyAKKyBxaW50NjQgUVB1 bHNlQXVkaW9JbnB1dDo6cmVhZChjaGFyICpkYXRhLCBxaW50NjQgbGVuKQorIHsKKysgICAgUV9B U1NFUlQoZGF0YSAhPSBudWxscHRyIHx8IGxlbiA9PSAwKTsKKysKKyAgICAgbV9ieXRlc0F2YWls YWJsZSA9IGNoZWNrQnl0ZXNSZWFkeSgpOworIAorICAgICBzZXRFcnJvcihRQXVkaW86Ok5vRXJy b3IpOworQEAgLTQxMSw3ICs0MTMsOCBAQCBxaW50NjQgUVB1bHNlQXVkaW9JbnB1dDo6cmVhZChj aGFyICpkYXRhLCBxaW50NjQgbGVuKQorIAorICAgICBpZiAoIW1fcHVsbE1vZGUgJiYgIW1fdGVt cEJ1ZmZlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgIHJlYWRCeXRlcyA9IHFNaW4oc3RhdGljX2Nh c3Q8aW50PihsZW4pLCBtX3RlbXBCdWZmZXIuc2l6ZSgpKTsKKy0gICAgICAgIG1lbWNweShkYXRh LCBtX3RlbXBCdWZmZXIuY29uc3REYXRhKCksIHJlYWRCeXRlcyk7CisrICAgICAgICBpZiAocmVh ZEJ5dGVzKQorKyAgICAgICAgICAgIG1lbWNweShkYXRhLCBtX3RlbXBCdWZmZXIuY29uc3REYXRh KCksIHJlYWRCeXRlcyk7CisgICAgICAgICBtX3RvdGFsVGltZVZhbHVlICs9IHJlYWRCeXRlczsK KyAKKyAgICAgICAgIGlmIChyZWFkQnl0ZXMgPCBtX3RlbXBCdWZmZXIuc2l6ZSgpKSB7CitAQCAt NTAyLDkgKzUwNSwxMCBAQCBxaW50NjQgUVB1bHNlQXVkaW9JbnB1dDo6cmVhZChjaGFyICpkYXRh LCBxaW50NjQgbGVuKQorIAorIHZvaWQgUVB1bHNlQXVkaW9JbnB1dDo6YXBwbHlWb2x1bWUoY29u c3Qgdm9pZCAqc3JjLCB2b2lkICpkZXN0LCBpbnQgbGVuKQorIHsKKysgICAgUV9BU1NFUlQoKHNy YyAmJiBkZXN0KSB8fCBsZW4gPT0gMCk7CisgICAgIGlmIChtX3ZvbHVtZSA8IDEuZikKKyAgICAg ICAgIFFBdWRpb0hlbHBlckludGVybmFsOjpxTXVsdGlwbHlTYW1wbGVzKG1fdm9sdW1lLCBtX2Zv cm1hdCwgc3JjLCBkZXN0LCBsZW4pOworLSAgICBlbHNlCisrICAgIGVsc2UgaWYgKGxlbikKKyAg ICAgICAgIG1lbWNweShkZXN0LCBzcmMsIGxlbik7CisgfQorIAorU3VibW9kdWxlIHF0cGltIDAy ZWZlZjVlLi4uZjlhOGYwZmMgKGNvbW1pdHMgbm90IHByZXNlbnQpCitTdWJtb2R1bGUgcXRxdWlj azNkIGI4NWNmNjIyLi40N2RlZmM4YjoKK2RpZmYgLS1naXQgYS9xdHF1aWNrM2Qvc3JjL3BsdWdp bnMvYXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8gYi9xdHF1aWNrM2Qvc3JjL3BsdWdp bnMvYXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8KK2luZGV4IGNhNWM0OTllLi4xNzRh MDc1YiAxMDA2NDQKKy0tLSBhL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9h c3NpbXAvYXNzaW1wLnBybworKysrIGIvcXRxdWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0 ZXJzL2Fzc2ltcC9hc3NpbXAucHJvCitAQCAtMTAsNyArMTAsNyBAQCBRVF9GT1JfQ09ORklHICs9 IGFzc2V0aW1wb3J0ZXJzLXByaXZhdGUKKyBpbmNsdWRlKCQkT1VUX1BXRC8uLi9xdGFzc2V0aW1w b3J0ZXJzLWNvbmZpZy5wcmkpCisgCisgcXRDb25maWcoc3lzdGVtLWFzc2ltcCk6IWlmKGNyb3Nz X2NvbXBpbGU6aG9zdF9idWlsZCkgeworLSAgICBRTUFLRV9VU0VfUFJJVkFURSArPSBhc3NpbXAK KysgICAgUU1BS0VfVVNFX1BSSVZBVEUgKz0gcXVpY2szZC1hc3NpbXAKKyB9IGVsc2UgeworICAg ICBpbmNsdWRlKC4uLy4uLy4uLzNyZHBhcnR5L2Fzc2ltcC9hc3NpbXAucHJpKQorIH0KK1N1Ym1v ZHVsZSBxdHF1aWNrY29udHJvbHMyIDNhNjU3ZGMwLi41NmNlODIzMzoKK2RpZmYgLS1naXQgYS9x dHF1aWNrY29udHJvbHMyL3NyYy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdldHMvcXdpZGdldHBsYXRm b3JtbWVudS5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdl dHMvcXdpZGdldHBsYXRmb3JtbWVudS5jcHAKK2luZGV4IGU1ZmU3MzRmNy4uZTM2OTIyNzc1IDEw MDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRz L3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9pbXBv cnRzL3BsYXRmb3JtL3dpZGdldHMvcXdpZGdldHBsYXRmb3JtbWVudS5jcHAKK0BAIC0zOCw2ICsz OCw3IEBACisgI2luY2x1ZGUgInF3aWRnZXRwbGF0Zm9ybW1lbnVpdGVtX3AuaCIKKyAKKyAjaW5j bHVkZSA8UXRHdWkvcXdpbmRvdy5oPgorKyNpbmNsdWRlIDxRdEd1aS9wcml2YXRlL3FoaWdoZHBp c2NhbGluZ19wLmg+CisgI2luY2x1ZGUgPFF0V2lkZ2V0cy9xbWVudS5oPgorICNpbmNsdWRlIDxR dFdpZGdldHMvcWFjdGlvbi5oPgorIAorQEAgLTE0NSw3ICsxNDYsNyBAQCB2b2lkIFFXaWRnZXRQ bGF0Zm9ybU1lbnU6OnNob3dQb3B1cChjb25zdCBRV2luZG93ICp3aW5kb3csIGNvbnN0IFFSZWN0 ICZ0YXJnZXRSZQorIAorICAgICBRUG9pbnQgdGFyZ2V0UG9zID0gdGFyZ2V0UmVjdC5ib3R0b21M ZWZ0KCk7CisgICAgIGlmICh3aW5kb3cpCistICAgICAgICB0YXJnZXRQb3MgPSB3aW5kb3ctPm1h cFRvR2xvYmFsKHRhcmdldFBvcyk7CisrICAgICAgICB0YXJnZXRQb3MgPSB3aW5kb3ctPm1hcFRv R2xvYmFsKFFIaWdoRHBpOjpmcm9tTmF0aXZlTG9jYWxQb3NpdGlvbih0YXJnZXRQb3MsIHdpbmRv dykpOworIAorICAgICBjb25zdCBRV2lkZ2V0UGxhdGZvcm1NZW51SXRlbSAqd2lkZ2V0SXRlbSA9 IHFvYmplY3RfY2FzdDxjb25zdCBRV2lkZ2V0UGxhdGZvcm1NZW51SXRlbSAqPihpdGVtKTsKKyAg ICAgbV9tZW51LT5wb3B1cCh0YXJnZXRQb3MsIHdpZGdldEl0ZW0gPyB3aWRnZXRJdGVtLT5hY3Rp b24oKSA6IG51bGxwdHIpOworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNr dGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3Ny Yy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3BwCitpbmRleCA5NTBlNGUw OTkuLmI4MWZiZWEwYiAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVt cGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIv c3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAKK0BAIC0zODcsNiAr Mzg3LDE3IEBAIHZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0b25Qcml2YXRlOjppdGVtSW1wbGljaXRI ZWlnaHRDaGFuZ2VkKFFRdWlja0l0ZW0gKml0ZW0pCisgICAgICAgICBlbWl0IHEtPmltcGxpY2l0 SW5kaWNhdG9ySGVpZ2h0Q2hhbmdlZCgpOworIH0KKyAKKyt2b2lkIFFRdWlja0Fic3RyYWN0QnV0 dG9uUHJpdmF0ZTo6aXRlbURlc3Ryb3llZChRUXVpY2tJdGVtICppdGVtKQorK3sKKysgICAgUV9R KFFRdWlja0Fic3RyYWN0QnV0dG9uKTsKKysgICAgUVF1aWNrQ29udHJvbFByaXZhdGU6Oml0ZW1E ZXN0cm95ZWQoaXRlbSk7CisrICAgIGlmIChpdGVtID09IGluZGljYXRvcikgeworKyAgICAgICAg aW5kaWNhdG9yID0gbnVsbHB0cjsKKysgICAgICAgIGVtaXQgcS0+aW1wbGljaXRJbmRpY2F0b3JX aWR0aENoYW5nZWQoKTsKKysgICAgICAgIGVtaXQgcS0+aW1wbGljaXRJbmRpY2F0b3JIZWlnaHRD aGFuZ2VkKCk7CisrICAgIH0KKyt9CisrCisgUVF1aWNrQWJzdHJhY3RCdXR0b24gKlFRdWlja0Fi c3RyYWN0QnV0dG9uUHJpdmF0ZTo6ZmluZENoZWNrZWRCdXR0b24oKSBjb25zdAorIHsKKyAgICAg UV9RKGNvbnN0IFFRdWlja0Fic3RyYWN0QnV0dG9uKTsKK0BAIC0xMTc2LDYgKzExODcsMTIgQEAg UUFjY2Vzc2libGU6OlJvbGUgUVF1aWNrQWJzdHJhY3RCdXR0b246OmFjY2Vzc2libGVSb2xlKCkg Y29uc3QKKyAgICAgfQorICAgICByZXR1cm4gUUFjY2Vzc2libGU6OkJ1dHRvbjsKKyB9CisrCisr dm9pZCBRUXVpY2tBYnN0cmFjdEJ1dHRvbjo6YWNjZXNzaWJsZVByZXNzQWN0aW9uKCkKKyt7Cisr ICAgIFFfRChRUXVpY2tBYnN0cmFjdEJ1dHRvbik7CisrICAgIGQtPnRyaWdnZXIoKTsKKyt9Cisg I2VuZGlmCisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9s czIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmggYi9xdHF1aWNr Y29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcC5oCitp bmRleCAwZmE0ODk4MGUuLmFiNjYyMjBkMCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIv c3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmgKKysrKyBiL3F0cXVp Y2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmgK K0BAIC0yMDksNiArMjA5LDcgQEAgcHJvdGVjdGVkOgorICNpZiBRVF9DT05GSUcoYWNjZXNzaWJp bGl0eSkKKyAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5QWN0aXZlQ2hhbmdlZChib29sIGFjdGl2ZSkg b3ZlcnJpZGU7CisgICAgIFFBY2Nlc3NpYmxlOjpSb2xlIGFjY2Vzc2libGVSb2xlKCkgY29uc3Qg b3ZlcnJpZGU7CisrICAgIFFfSU5WT0tBQkxFIHZvaWQgYWNjZXNzaWJsZVByZXNzQWN0aW9uKCk7 CisgI2VuZGlmCisgCisgcHJpdmF0ZToKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3Ny Yy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcF9wLmggYi9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcF9wLmgKK2lu ZGV4IDkyOTFjMWE4Ny4uYjcyOTcyMGYyIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9z cmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3BfcC5oCisrKysgYi9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcF9w LmgKK0BAIC0xMDksNiArMTA5LDcgQEAgcHVibGljOgorIAorICAgICB2b2lkIGl0ZW1JbXBsaWNp dFdpZHRoQ2hhbmdlZChRUXVpY2tJdGVtICppdGVtKSBvdmVycmlkZTsKKyAgICAgdm9pZCBpdGVt SW1wbGljaXRIZWlnaHRDaGFuZ2VkKFFRdWlja0l0ZW0gKml0ZW0pIG92ZXJyaWRlOworKyAgICB2 b2lkIGl0ZW1EZXN0cm95ZWQoUVF1aWNrSXRlbSAqaXRlbSkgb3ZlcnJpZGU7CisgCisgICAgIC8v IGNvcGllZCBmcm9tIHFhYnN0cmFjdGJ1dHRvbi5jcHAKKyAgICAgc3RhdGljIGNvbnN0IGludCBB VVRPX1JFUEVBVF9ERUxBWSA9IDMwMDsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3Ny Yy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3Jj L3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rpb24uY3BwCitpbmRleCAyMDQxZTc3NDEuLjg2MTBj ZGZhZSAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2thY3Rpb24uY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRl czIvcXF1aWNrYWN0aW9uLmNwcAorQEAgLTE0NSw3ICsxNDUsNyBAQCBpbnQgUVF1aWNrQWN0aW9u UHJpdmF0ZTo6U2hvcnRjdXRFbnRyeTo6c2hvcnRjdXRJZCgpIGNvbnN0CisgCisgdm9pZCBRUXVp Y2tBY3Rpb25Qcml2YXRlOjpTaG9ydGN1dEVudHJ5OjpncmFiKGNvbnN0IFFLZXlTZXF1ZW5jZSAm c2hvcnRjdXQsIGJvb2wgZW5hYmxlZCkKKyB7CistICAgIGlmIChzaG9ydGN1dC5pc0VtcHR5KCkp CisrICAgIGlmIChzaG9ydGN1dC5pc0VtcHR5KCkgfHwgbV9zaG9ydGN1dElkKQorICAgICAgICAg cmV0dXJuOworIAorICAgICBRdDo6U2hvcnRjdXRDb250ZXh0IGNvbnRleHQgPSBRdDo6V2luZG93 U2hvcnRjdXQ7IC8vIFRPRE8KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlj a3RlbXBsYXRlczIvcXF1aWNrY29udGFpbmVyLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1 aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250YWluZXIuY3BwCitpbmRleCBmMzhjMmIwOWMuLjZlZWQy YTAyNCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2tjb250YWluZXIuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBs YXRlczIvcXF1aWNrY29udGFpbmVyLmNwcAorQEAgLTIyNSw2ICsyMjUsNyBAQCB2b2lkIFFRdWlj a0NvbnRhaW5lclByaXZhdGU6OmNsZWFudXAoKQorICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGNv bnRlbnRNb2RlbCwgJlFRbWxPYmplY3RNb2RlbDo6Y291bnRDaGFuZ2VkLCBxLCAmUVF1aWNrQ29u dGFpbmVyOjpjb3VudENoYW5nZWQpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGNvbnRlbnRN b2RlbCwgJlFRbWxPYmplY3RNb2RlbDo6Y2hpbGRyZW5DaGFuZ2VkLCBxLCAmUVF1aWNrQ29udGFp bmVyOjpjb250ZW50Q2hpbGRyZW5DaGFuZ2VkKTsKKyAgICAgZGVsZXRlIGNvbnRlbnRNb2RlbDsK KysgICAgY29udGVudE1vZGVsID0gbnVsbHB0cjsKKyB9CisgCisgUVF1aWNrSXRlbSAqUVF1aWNr Q29udGFpbmVyUHJpdmF0ZTo6aXRlbUF0KGludCBpbmRleCkgY29uc3QKK0BAIC00MzYsNyArNDM3 LDcgQEAgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjpjb250ZW50Q2hpbGRyZW5fY2xlYXIo UVFtbExpc3RQcm9wZXJ0eTxRUXVpY2tJdGVtPgorIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0 ZTo6dXBkYXRlQ29udGVudFdpZHRoKCkKKyB7CisgICAgIFFfUShRUXVpY2tDb250YWluZXIpOwor LSAgICBpZiAoaGFzQ29udGVudFdpZHRoIHx8IHFGdXp6eUNvbXBhcmUoY29udGVudFdpZHRoLCBp bXBsaWNpdENvbnRlbnRXaWR0aCkpCisrICAgIGlmIChoYXNDb250ZW50V2lkdGggfHwgcUZ1enp5 Q29tcGFyZShjb250ZW50V2lkdGgsIGltcGxpY2l0Q29udGVudFdpZHRoKSB8fCAhY29udGVudE1v ZGVsKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBjb250ZW50V2lkdGggPSBpbXBsaWNpdENv bnRlbnRXaWR0aDsKK0BAIC00NDYsNyArNDQ3LDcgQEAgdm9pZCBRUXVpY2tDb250YWluZXJQcml2 YXRlOjp1cGRhdGVDb250ZW50V2lkdGgoKQorIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6 dXBkYXRlQ29udGVudEhlaWdodCgpCisgeworICAgICBRX1EoUVF1aWNrQ29udGFpbmVyKTsKKy0g ICAgaWYgKGhhc0NvbnRlbnRIZWlnaHQgfHwgcUZ1enp5Q29tcGFyZShjb250ZW50SGVpZ2h0LCBp bXBsaWNpdENvbnRlbnRIZWlnaHQpKQorKyAgICBpZiAoaGFzQ29udGVudEhlaWdodCB8fCBxRnV6 enlDb21wYXJlKGNvbnRlbnRIZWlnaHQsIGltcGxpY2l0Q29udGVudEhlaWdodCkgfHwgIWNvbnRl bnRNb2RlbCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgY29udGVudEhlaWdodCA9IGltcGxp Y2l0Q29udGVudEhlaWdodDsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlj a3RlbXBsYXRlczIvcXF1aWNrY29udHJvbC5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlj a3RlbXBsYXRlczIvcXF1aWNrY29udHJvbC5jcHAKK2luZGV4IGJiYmQwZTYyMi4uMWY0YjQ3MzQz IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlj a2NvbnRyb2wuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIv cXF1aWNrY29udHJvbC5jcHAKK0BAIC04NDUsNiArODQ1LDEzIEBAIHZvaWQgUVF1aWNrQ29udHJv bFByaXZhdGU6OmV4ZWN1dGVCYWNrZ3JvdW5kKGJvb2wgY29tcGxldGUpCisgICAgICAgICBxdWlj a0NvbXBsZXRlRGVmZXJyZWQocSwgYmFja2dyb3VuZE5hbWUoKSwgYmFja2dyb3VuZCk7CisgfQor IAorKy8qCisrICAgIFxpbnRlcm5hbAorKworKyAgICBIaWRlcyBhbiBpdGVtIHRoYXQgd2FzIHJl cGxhY2VkIGJ5IGEgbmV3ZXIgb25lLCByYXRoZXIgdGhhbgorKyAgICBkZWxldGluZyBpdCwgYXMg dGhlIGl0ZW0gaXMgdHlwaWNhbGx5IGNyZWF0ZWQgaW4gUU1MIGFuZCBoZW5jZQorKyAgICB3ZSBk b24ndCBvd24gaXQuCisrKi8KKyB2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjpoaWRlT2xkSXRl bShRUXVpY2tJdGVtICppdGVtKQorIHsKKyAgICAgaWYgKCFpdGVtKQorQEAgLTg2Myw2ICs4NzAs MjkgQEAgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6aGlkZU9sZEl0ZW0oUVF1aWNrSXRlbSAq aXRlbSkKKyAjZW5kaWYKKyB9CisgCisrLyoKKysgICAgXGludGVybmFsCisrCisrICAgIE5hbWVk ICJ1bmhpZGUiIGJlY2F1c2UgaXQncyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpdGVtCisrICAg IHRoYXQgd2FzIHByZXZpb3VzbHkgaGlkZGVuIGJ5IFxsIGhpZGVPbGRJdGVtKCkgd2FudHMgdG8g YmUKKysgICAgc2hvd24gYnkgYSBjb250cm9sIGFnYWluLCBzdWNoIGFzIGEgU2Nyb2xsQmFyIGlu IFNjcm9sbFZpZXcuCisrKi8KKyt2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1bmhpZGVPbGRJ dGVtKFFRdWlja0NvbnRyb2wgKmNvbnRyb2wsIFFRdWlja0l0ZW0gKml0ZW0pCisreworKyAgICBR X0FTU0VSVChpdGVtKTsKKysgICAgcUNEZWJ1ZyhsY0l0ZW1NYW5hZ2VtZW50KSA8PCAidW5oaWRp bmcgb2xkIGl0ZW0iIDw8IGl0ZW07CisrCisrICAgIGl0ZW0tPnNldFZpc2libGUodHJ1ZSk7Cisr ICAgIGl0ZW0tPnNldFBhcmVudEl0ZW0oY29udHJvbCk7CisrCisrI2lmIFFUX0NPTkZJRyhhY2Nl c3NpYmlsaXR5KQorKyAgICAvLyBBZGQgdGhlIGl0ZW0gYmFjayBpbiB0byB0aGUgYWNjZXNzaWJp bGl0eSB0cmVlLgorKyAgICBRUXVpY2tBY2Nlc3NpYmxlQXR0YWNoZWQgKmFjY2Vzc2libGUgPSBh Y2Nlc3NpYmxlQXR0YWNoZWQoaXRlbSk7CisrICAgIGlmIChhY2Nlc3NpYmxlKQorKyAgICAgICAg YWNjZXNzaWJsZS0+c2V0SWdub3JlZChmYWxzZSk7CisrI2VuZGlmCisrfQorKworIHZvaWQgUVF1 aWNrQ29udHJvbFByaXZhdGU6OnVwZGF0ZUJhc2VsaW5lT2Zmc2V0KCkKKyB7CisgICAgIFFfUShR UXVpY2tDb250cm9sKTsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrY29udHJvbF9wX3AuaCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNr dGVtcGxhdGVzMi9xcXVpY2tjb250cm9sX3BfcC5oCitpbmRleCA4ZTk3OTA3OWUuLmE2ZTYyNGM5 MSAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVp Y2tjb250cm9sX3BfcC5oCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRl czIvcXF1aWNrY29udHJvbF9wX3AuaAorQEAgLTE3Myw2ICsxNzMsNyBAQCBwdWJsaWM6CisgICAg IHZpcnR1YWwgdm9pZCBleGVjdXRlQmFja2dyb3VuZChib29sIGNvbXBsZXRlID0gZmFsc2UpOwor IAorICAgICBzdGF0aWMgdm9pZCBoaWRlT2xkSXRlbShRUXVpY2tJdGVtICppdGVtKTsKKysgICAg c3RhdGljIHZvaWQgdW5oaWRlT2xkSXRlbShRUXVpY2tDb250cm9sICpjb250cm9sLCBRUXVpY2tJ dGVtICppdGVtKTsKKyAKKyAgICAgdm9pZCB1cGRhdGVCYXNlbGluZU9mZnNldCgpOworIAorZGlm ZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tkaWFs b2didXR0b25ib3guY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3Fx dWlja2RpYWxvZ2J1dHRvbmJveC5jcHAKK2luZGV4IGU2ZGIxNGViNS4uNjE5N2QxNTQ3IDEwMDY0 NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxv Z2J1dHRvbmJveC5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVz Mi9xcXVpY2tkaWFsb2didXR0b25ib3guY3BwCitAQCAtMjM3LDcgKzIzNyw3IEBAIHN0YXRpYyBR UmVjdEYgYWxpZ25lZFJlY3QoUXQ6OkxheW91dERpcmVjdGlvbiBkaXJlY3Rpb24sIFF0OjpBbGln bm1lbnQgYWxpZ25tZW50Cisgdm9pZCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpyZXNp emVDb250ZW50KCkKKyB7CisgICAgIFFfUShRUXVpY2tEaWFsb2dCdXR0b25Cb3gpOworLSAgICBp ZiAoIWNvbnRlbnRJdGVtKQorKyAgICBpZiAoIWNvbnRlbnRJdGVtIHx8ICFjb250ZW50TW9kZWwp CisgICAgICAgICByZXR1cm47CisgCisgICAgIFFSZWN0RiBnZW9tZXRyeSA9IHEtPmJvdW5kaW5n UmVjdCgpLmFkanVzdGVkKHEtPmxlZnRQYWRkaW5nKCksIHEtPnRvcFBhZGRpbmcoKSwgLXEtPnJp Z2h0UGFkZGluZygpLCAtcS0+Ym90dG9tUGFkZGluZygpKTsKK0BAIC0zMjIsNiArMzIyLDkgQEAg dm9pZCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjp1cGRhdGVMYXlvdXQoKQorIHFyZWFs IFFRdWlja0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OmdldENvbnRlbnRXaWR0aCgpIGNvbnN0Cisg eworICAgICBRX1EoY29uc3QgUVF1aWNrRGlhbG9nQnV0dG9uQm94KTsKKysgICAgaWYgKCFjb250 ZW50TW9kZWwpCisrICAgICAgICByZXR1cm4gMDsKKysKKyAgICAgY29uc3QgaW50IGNvdW50ID0g Y29udGVudE1vZGVsLT5jb3VudCgpOworICAgICBjb25zdCBxcmVhbCB0b3RhbFNwYWNpbmcgPSBx TWF4KDAsIGNvdW50IC0gMSkgKiBzcGFjaW5nOworICAgICBxcmVhbCB0b3RhbFdpZHRoID0gdG90 YWxTcGFjaW5nOworQEAgLTM0MSw2ICszNDQsOSBAQCBxcmVhbCBRUXVpY2tEaWFsb2dCdXR0b25C b3hQcml2YXRlOjpnZXRDb250ZW50V2lkdGgoKSBjb25zdAorIHFyZWFsIFFRdWlja0RpYWxvZ0J1 dHRvbkJveFByaXZhdGU6OmdldENvbnRlbnRIZWlnaHQoKSBjb25zdAorIHsKKyAgICAgUV9RKGNv bnN0IFFRdWlja0RpYWxvZ0J1dHRvbkJveCk7CisrICAgIGlmICghY29udGVudE1vZGVsKQorKyAg ICAgICAgcmV0dXJuIDA7CisrCisgICAgIGNvbnN0IGludCBjb3VudCA9IGNvbnRlbnRNb2RlbC0+ Y291bnQoKTsKKyAgICAgcXJlYWwgbWF4SGVpZ2h0ID0gMDsKKyAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBjb3VudDsgKytpKSB7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVp Y2t0ZW1wbGF0ZXMyL3FxdWlja292ZXJsYXkuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVp Y2t0ZW1wbGF0ZXMyL3FxdWlja292ZXJsYXkuY3BwCitpbmRleCA5MWJkNTkxODQuLjBjZTUxOGY4 NCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVp Y2tvdmVybGF5LmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMy L3FxdWlja292ZXJsYXkuY3BwCitAQCAtMzk5LDggKzM5OSwxMSBAQCB2b2lkIFFRdWlja092ZXJs YXk6Oml0ZW1DaGFuZ2UoSXRlbUNoYW5nZSBjaGFuZ2UsIGNvbnN0IEl0ZW1DaGFuZ2VEYXRhICZk YXRhKQorICAgICBRX0QoUVF1aWNrT3ZlcmxheSk7CisgICAgIFFRdWlja0l0ZW06Oml0ZW1DaGFu Z2UoY2hhbmdlLCBkYXRhKTsKKyAKKy0gICAgaWYgKGNoYW5nZSA9PSBJdGVtQ2hpbGRBZGRlZENo YW5nZSB8fCBjaGFuZ2UgPT0gSXRlbUNoaWxkUmVtb3ZlZENoYW5nZSkKKysgICAgaWYgKGNoYW5n ZSA9PSBJdGVtQ2hpbGRBZGRlZENoYW5nZSB8fCBjaGFuZ2UgPT0gSXRlbUNoaWxkUmVtb3ZlZENo YW5nZSkgeworICAgICAgICAgc2V0VmlzaWJsZSghZC0+YWxsRHJhd2Vycy5pc0VtcHR5KCkgfHwg IWNoaWxkSXRlbXMoKS5pc0VtcHR5KCkpOworKyAgICAgICAgaWYgKGRhdGEuaXRlbS0+cGFyZW50 KCkgPT0gZC0+bW91c2VHcmFiYmVyUG9wdXApCisrICAgICAgICAgICAgZC0+c2V0TW91c2VHcmFi YmVyUG9wdXAobnVsbHB0cik7CisrICAgIH0KKyB9CisgCisgdm9pZCBRUXVpY2tPdmVybGF5Ojpn ZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGICZuZXdHZW9tZXRyeSwgY29uc3QgUVJlY3RGICZv bGRHZW9tZXRyeSkKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBs YXRlczIvcXF1aWNrc2Nyb2xsYmFyLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVt cGxhdGVzMi9xcXVpY2tzY3JvbGxiYXIuY3BwCitpbmRleCA0ZTJmNTA5ZGIuLjFjNGIzMDhjZCAx MDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tz Y3JvbGxiYXIuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIv cXF1aWNrc2Nyb2xsYmFyLmNwcAorQEAgLTc5Nyw2ICs3OTcsMTQgQEAgdm9pZCBRUXVpY2tTY3Jv bGxCYXJBdHRhY2hlZFByaXZhdGU6OmluaXRIb3Jpem9udGFsKCkKKyAgICAgaWYgKHBhcmVudCAm JiBwYXJlbnQgPT0gZmxpY2thYmxlLT5wYXJlbnRJdGVtKCkpCisgICAgICAgICBob3Jpem9udGFs LT5zdGFja0FmdGVyKGZsaWNrYWJsZSk7CisgCisrICAgIC8vIElmIGEgc2Nyb2xsIGJhciB3YXMg cHJldmlvdXNseSBoaWRkZW4gKGR1ZSB0byBlLmcuIHNldHRpbmcgYSBuZXcgY29udGVudEl0ZW0K KysgICAgLy8gb24gYSBTY3JvbGxWaWV3KSwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSB1 bi1oaWRlIGl0LgorKyAgICAvLyBXZSBkb24ndCBib3RoZXIgY2hlY2tpbmcgaWYgdGhlIGl0ZW0g aXMgYWN0dWFsbHkgdGhlIG9sZCBvbmUsIGJlY2F1c2UKKysgICAgLy8gaWYgaXQncyBub3QsIGFs bCBvZiB0aGUgdGhpbmdzIHRoZSBmdW5jdGlvbiBkb2VzIChzZXR0aW5nIHBhcmVudCwgdmlzaWJp bGl0eSwgZXRjLikKKysgICAgLy8gc2hvdWxkIGJlIG5vLW9wcyBhbnl3YXkuCisrICAgIGlmIChh dXRvIGNvbnRyb2wgPSBxb2JqZWN0X2Nhc3Q8UVF1aWNrQ29udHJvbCo+KHFfcHRyLT5wYXJlbnQo KSkpCisrICAgICAgICBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dW5oaWRlT2xkSXRlbShjb250cm9s LCBob3Jpem9udGFsKTsKKysKKyAgICAgbGF5b3V0SG9yaXpvbnRhbCgpOworICAgICBob3Jpem9u dGFsLT5zZXRTaXplKGFyZWEtPnByb3BlcnR5KCJ3aWR0aFJhdGlvIikudG9SZWFsKCkpOworICAg ICBob3Jpem9udGFsLT5zZXRQb3NpdGlvbihhcmVhLT5wcm9wZXJ0eSgieFBvc2l0aW9uIikudG9S ZWFsKCkpOworQEAgLTgxOCw2ICs4MjYsOSBAQCB2b2lkIFFRdWlja1Njcm9sbEJhckF0dGFjaGVk UHJpdmF0ZTo6aW5pdFZlcnRpY2FsKCkKKyAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQgPT0gZmxp Y2thYmxlLT5wYXJlbnRJdGVtKCkpCisgICAgICAgICB2ZXJ0aWNhbC0+c3RhY2tBZnRlcihmbGlj a2FibGUpOworIAorKyAgICBpZiAoYXV0byBjb250cm9sID0gcW9iamVjdF9jYXN0PFFRdWlja0Nv bnRyb2wqPihxX3B0ci0+cGFyZW50KCkpKQorKyAgICAgICAgUVF1aWNrQ29udHJvbFByaXZhdGU6 OnVuaGlkZU9sZEl0ZW0oY29udHJvbCwgdmVydGljYWwpOworKworICAgICBsYXlvdXRWZXJ0aWNh bCgpOworICAgICB2ZXJ0aWNhbC0+c2V0U2l6ZShhcmVhLT5wcm9wZXJ0eSgiaGVpZ2h0UmF0aW8i KS50b1JlYWwoKSk7CisgICAgIHZlcnRpY2FsLT5zZXRQb3NpdGlvbihhcmVhLT5wcm9wZXJ0eSgi eVBvc2l0aW9uIikudG9SZWFsKCkpOworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVz dHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3LnFtbCBiL3F0cXVpY2tjb250cm9s czIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3LnFtbAoraW5kZXggMGU4 YjA4MzUyLi5jZDQ5MzExODQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1 dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwKKysrKyBiL3F0cXVpY2tjb250cm9s czIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3LnFtbAorQEAgLTU3Niw0 ICs1NzYsNTEgQEAgVGVzdENhc2UgeworICAgICAgICAgdmVyaWZ5KG5ld0hvcml6b250YWxTY3Jv bGxCYXIudmlzaWJsZSkKKyAgICAgICAgIHZlcmlmeSghb2xkSG9yaXpvbnRhbFNjcm9sbEJhci52 aXNpYmxlKQorICAgICB9CisrCisrICAgIENvbXBvbmVudCB7CisrICAgICAgICBpZDogYmluZGlu Z1RvQ29udGVudEl0ZW1BbmRTdGFuZGFsb25lRmxpY2thYmxlCisrCisrICAgICAgICBJdGVtIHsK KysgICAgICAgICAgICB3aWR0aDogMjAwCisrICAgICAgICAgICAgaGVpZ2h0OiAyMDAKKysKKysg ICAgICAgICAgICBwcm9wZXJ0eSBhbGlhcyBzY3JvbGxWaWV3OiBzY3JvbGxWaWV3CisrCisrICAg ICAgICAgICAgU2Nyb2xsVmlldyB7CisrICAgICAgICAgICAgICAgIGlkOiBzY3JvbGxWaWV3Cisr ICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisrICAgICAgICAgICAgICAgIGNv bnRlbnRJdGVtOiBsaXN0VmlldworKworKyAgICAgICAgICAgICAgICBwcm9wZXJ0eSBJdGVtIHNv bWVCaW5kaW5nOiBjb250ZW50SXRlbQorKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBMaXN0 VmlldyB7CisrICAgICAgICAgICAgICAgIGlkOiBsaXN0VmlldworKyAgICAgICAgICAgICAgICBt b2RlbDogMTAKKysgICAgICAgICAgICAgICAgZGVsZWdhdGU6IEl0ZW1EZWxlZ2F0ZSB7CisrICAg ICAgICAgICAgICAgICAgICB0ZXh0OiBtb2RlbERhdGEKKysgICAgICAgICAgICAgICAgICAgIHdp ZHRoOiBsaXN0Vmlldy53aWR0aAorKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQor KyAgICAgICAgfQorKyAgICB9CisrCisrICAgIC8vIFRlc3RzIHRoYXQgc2Nyb2xsIGJhcnMgc2hv dyB1cCBmb3IgYSBTY3JvbGxWaWV3IHdoZXJlCisrICAgIC8vIC0gaXRzIGNvbnRlbnRJdGVtIGlz IGRlY2xhcmVkIGFzIGEgc3RhbmRhbG9uZSwgc2VwYXJhdGUgaXRlbQorKyAgICAvLyAtIHRoZXJl IGlzIGEgYmluZGluZyB0byBjb250ZW50SXRlbSAod2hpY2ggY2F1c2VzIGEgZGVmYXVsdCBGbGlj a2FibGUgdG8gYmUgY3JlYXRlZCkKKysgICAgZnVuY3Rpb24gdGVzdF9iaW5kaW5nVG9Db250ZW50 SXRlbUFuZFN0YW5kYWxvbmVGbGlja2FibGUoKSB7CisrICAgICAgICBsZXQgcm9vdCA9IGNyZWF0 ZVRlbXBvcmFyeU9iamVjdChiaW5kaW5nVG9Db250ZW50SXRlbUFuZFN0YW5kYWxvbmVGbGlja2Fi bGUsIHRlc3RDYXNlKQorKyAgICAgICAgdmVyaWZ5KHJvb3QpCisrCisrICAgICAgICBsZXQgY29u dHJvbCA9IHJvb3Quc2Nyb2xsVmlldworKyAgICAgICAgbGV0IHZlcnRpY2FsU2Nyb2xsQmFyID0g Y29udHJvbC5TY3JvbGxCYXIudmVydGljYWwKKysgICAgICAgIGxldCBob3Jpem9udGFsU2Nyb2xs QmFyID0gY29udHJvbC5TY3JvbGxCYXIuaG9yaXpvbnRhbAorKyAgICAgICAgY29tcGFyZSh2ZXJ0 aWNhbFNjcm9sbEJhci5wYXJlbnQsIGNvbnRyb2wpCisrICAgICAgICBjb21wYXJlKGhvcml6b250 YWxTY3JvbGxCYXIucGFyZW50LCBjb250cm9sKQorKyAgICAgICAgdmVyaWZ5KHZlcnRpY2FsU2Ny b2xsQmFyLnZpc2libGUpCisrICAgICAgICB2ZXJpZnkoaG9yaXpvbnRhbFNjcm9sbEJhci52aXNp YmxlKQorKworKyAgICAgICAgbW91c2VEcmFnKHZlcnRpY2FsU2Nyb2xsQmFyLCB2ZXJ0aWNhbFNj cm9sbEJhci53aWR0aCAvIDIsIHZlcnRpY2FsU2Nyb2xsQmFyLmhlaWdodCAvIDIsIDAsIDUwKQor KyAgICAgICAgdmVyaWZ5KHZlcnRpY2FsU2Nyb2xsQmFyLmFjdGl2ZSkKKysgICAgICAgIHZlcmlm eShob3Jpem9udGFsU2Nyb2xsQmFyLmFjdGl2ZSkKKysgICAgfQorIH0KK2RpZmYgLS1naXQgYS9x dHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFtbCBi L3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1s CitpbmRleCBiM2ZhYjQxY2EuLjEwYjZiYWEwMiAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9s czIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1sCisrKysgYi9xdHF1aWNr Y29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFtbAorQEAgLTYw OCw0ICs2MDgsMjcgQEAgVGVzdENhc2UgeworICAgICAgICAgbW91c2VDbGljayhjb250cm9sLmlu ZGljYXRvcikKKyAgICAgICAgIHZlcmlmeShjb250cm9sLmFjdGl2ZUZvY3VzKQorICAgICB9Cisr CisrICAgIENvbXBvbmVudCB7CisrICAgICAgICBpZDogZGVsZXRpb25PcmRlcjEKKysgICAgICAg IEl0ZW0geworKyAgICAgICAgICAgIEltYWdlIHsgaWQ6IGlubmVySW1hZ2UgfQorKyAgICAgICAg ICAgIFN3aXRjaCB7IGluZGljYXRvcjogaW5uZXJJbWFnZSB9CisrICAgICAgICB9CisrICAgIH0K KysKKysgICAgQ29tcG9uZW50IHsKKysgICAgICAgIGlkOiBkZWxldGlvbk9yZGVyMgorKyAgICAg ICAgSXRlbSB7CisrICAgICAgICAgICAgU3dpdGNoIHsgaW5kaWNhdG9yOiBpbm5lckltYWdlIH0K KysgICAgICAgICAgICBJbWFnZSB7IGlkOiBpbm5lckltYWdlIH0KKysgICAgICAgIH0KKysgICAg fQorKworKyAgICBmdW5jdGlvbiB0ZXN0X2RlbGV0aW9uT3JkZXIoKSB7CisrICAgICAgICB2YXIg Y29udHJvbDEgPSBjcmVhdGVUZW1wb3JhcnlPYmplY3QoZGVsZXRpb25PcmRlcjEsIHRlc3RDYXNl KQorKyAgICAgICAgdmVyaWZ5KGNvbnRyb2wxKQorKyAgICAgICAgdmFyIGNvbnRyb2wyID0gY3Jl YXRlVGVtcG9yYXJ5T2JqZWN0KGRlbGV0aW9uT3JkZXIyLCB0ZXN0Q2FzZSkKKysgICAgICAgIHZl cmlmeShjb250cm9sMikKKysgICAgfQorIH0KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMy L3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvZGF0YS9yZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbi5x bWwgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvZGF0YS9yZWxlYXNl QWZ0ZXJFeGl0VHJhbnNpdGlvbi5xbWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwMDAuLjllNDU5OGI5ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90 ZXN0cy9hdXRvL3FxdWlja3BvcHVwL2RhdGEvcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1s CitAQCAtMCwwICsxLDc4IEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHly aWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93 d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRl c3Qgc3VpdGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpC U0QkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcg dmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFj Y29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3 aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdp dGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2Vl biB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNv bmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0 aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cu cXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEJTRCBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJu YXRpdmVseSwgeW91IG1heSB1c2UgdGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQlNE IGxpY2Vuc2UKKysqKiBhcyBmb2xsb3dzOgorKyoqCisrKiogIlJlZGlzdHJpYnV0aW9uIGFuZCB1 c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyoqIG1vZGlm aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9ucyBhcmUKKysqKiBtZXQ6CisrKiogICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrKiogICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysqKiAgICog UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj b3B5cmlnaHQKKysqKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisrKiogICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiAgICAgZGlzdHJpYnV0aW9u LgorKyoqICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFRoZSBRdCBDb21wYW55IEx0ZCBub3IgdGhl IG5hbWVzIG9mIGl0cworKyoqICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKysqKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKyoqCisrKioKKysq KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg Q09OVFJJQlVUT1JTCisrKiogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKysqKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKysqKiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS SUdIVAorKyoqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs IElORElSRUNULCBJTkNJREVOVEFMLAorKyoqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKysqKiBMSU1JVEVEIFRPLCBQUk9D VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKysq KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV U0VEIEFORCBPTiBBTlkKKysqKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisrKiogKElOQ0xVRElORyBORUdMSUdFTkNF IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisrKiogT0Yg VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI IERBTUFHRS4iCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworKworK2ltcG9ydCBRdFF1aWNrIDIuMTUKKytpbXBvcnQgUXRRdWljay5Db250cm9s cyAyLjE1CisrCisrQXBwbGljYXRpb25XaW5kb3cgeworKyAgICBpZDogd2luZG93CisrICAgIHdp ZHRoOiA0MDAKKysgICAgaGVpZ2h0OiA0MDAKKysgICAgdGl0bGU6ICJyZWxlYXNlQWZ0ZXJFeGl0 VHJhbnNpdGlvbiIKKysKKysgICAgcHJvcGVydHkgYWxpYXMgcG9wdXA6IHBvcHVwCisrICAgIHBy b3BlcnR5IGFsaWFzIG1vZGFsUG9wdXA6IG1vZGFsUG9wdXAKKysKKysgICAgUG9wdXAgeworKyAg ICAgICAgaWQ6IHBvcHVwCisrICAgICAgICB5OiBwYXJlbnQuaGVpZ2h0IC0gaGVpZ2h0CisrICAg ICAgICB3aWR0aDogNTAKKysgICAgICAgIGhlaWdodDogNTAKKysgICAgfQorKworKyAgICBQb3B1 cCB7CisrICAgICAgICBpZDogbW9kYWxQb3B1cAorKyAgICAgICAgbW9kYWw6IHRydWUKKysgICAg ICAgIHk6IHBhcmVudC5oZWlnaHQgLSBoZWlnaHQKKysgICAgICAgIHdpZHRoOiA1MAorKyAgICAg ICAgaGVpZ2h0OiA1MAorKyAgICAgICAgZXhpdDogIFRyYW5zaXRpb24geyBQYXVzZUFuaW1hdGlv biB7IGR1cmF0aW9uOiAxMDAgfSB9CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvcXRxdWlja2Nv bnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5jcHAgYi9xdHF1 aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvdHN0X3FxdWlja3BvcHVwLmNwcAor aW5kZXggNTQ5NTJkMTI4Li4zZDUwZTJkZDQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMy L3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvdHN0X3FxdWlja3BvcHVwLmNwcAorKysrIGIvcXRxdWlj a2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5jcHAKK0BA IC0xMDAsNiArMTAwLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBpbnZpc2libGVUb29s VGlwT3BlbigpOworICAgICB2b2lkIGNlbnRlckluT3ZlcmxheVdpdGhpblN0YWNrVmlld0l0ZW0o KTsKKyAgICAgdm9pZCBkZXN0cm95RHVyaW5nRXhpdFRyYW5zaXRpb24oKTsKKysgICAgdm9pZCBy ZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbigpOworIH07CisgCisgdm9pZCB0c3RfUVF1aWNrUG9w dXA6OmluaXRUZXN0Q2FzZSgpCitAQCAtMTU3NSw2ICsxNTc2LDM0IEBAIHZvaWQgdHN0X1FRdWlj a1BvcHVwOjpkZXN0cm95RHVyaW5nRXhpdFRyYW5zaXRpb24oKQorICAgICBRVkVSSUZZKCFidXR0 b24tPmlzRG93bigpKTsKKyB9CisgCisrdm9pZCB0c3RfUVF1aWNrUG9wdXA6OnJlbGVhc2VBZnRl ckV4aXRUcmFuc2l0aW9uKCkKKyt7CisrICAgIFFRdWlja0FwcGxpY2F0aW9uSGVscGVyIGhlbHBl cih0aGlzLCAicmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sIik7CisrICAgIFFWRVJJRlky KGhlbHBlci5yZWFkeSwgaGVscGVyLmZhaWx1cmVNZXNzYWdlKCkpOworKworKyAgICBRUXVpY2tX aW5kb3cgKndpbmRvdyA9IGhlbHBlci53aW5kb3c7CisrICAgIHdpbmRvdy0+c2hvdygpOworKyAg ICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0FjdGl2ZSh3aW5kb3cpKTsKKysKKysgICAg UVF1aWNrT3ZlcmxheSAqb3ZlcmxheSA9IFFRdWlja092ZXJsYXk6Om92ZXJsYXkod2luZG93KTsK KysgICAgUVF1aWNrUG9wdXAgKm1vZGFsUG9wdXAgPSB3aW5kb3ctPnByb3BlcnR5KCJtb2RhbFBv cHVwIikudmFsdWU8UVF1aWNrUG9wdXAgKj4oKTsKKysgICAgUVF1aWNrUG9wdXAgKnBvcHVwID0g d2luZG93LT5wcm9wZXJ0eSgicG9wdXAiKS52YWx1ZTxRUXVpY2tQb3B1cCAqPigpOworKworKyAg ICBtb2RhbFBvcHVwLT5vcGVuKCk7CisrICAgIFFUUllfVkVSSUZZKG1vZGFsUG9wdXAtPmlzT3Bl bmVkKCkpOworKworKyAgICBRVGVzdDo6bW91c2VQcmVzcyh3aW5kb3csIFF0OjpMZWZ0QnV0dG9u LCBRdDo6Tm9Nb2RpZmllciwgUVBvaW50KDEsIDEpKTsKKysgICAgLy8gd2FpdCB1bnRpbCB0aGUg dHJhbnNpdGlvbiBpcyBmaW5pc2hlZCBhbmQgdGhlIG92ZXJsYXkgaGlkZXMgaXRzZWxmCisrICAg IFFUUllfVkVSSUZZKCFvdmVybGF5LT5pc1Zpc2libGUoKSk7CisrICAgIFFUZXN0Ojptb3VzZVJl bGVhc2Uod2luZG93LCBRdDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIsIFFQb2ludCgxLCAx KSk7CisrCisrICAgIHBvcHVwLT5vcGVuKCk7CisrICAgIFFUUllfVkVSSUZZKHBvcHVwLT5pc09w ZW5lZCgpKTsKKysgICAgUVRlc3Q6Om1vdXNlQ2xpY2sod2luZG93LCBRdDo6TGVmdEJ1dHRvbiwg UXQ6Ok5vTW9kaWZpZXIsIFFQb2ludCgxLCAxKSk7CisrICAgIFFUUllfVkVSSUZZKCFwb3B1cC0+ aXNPcGVuZWQoKSk7CisrfQorKworKworIFFURVNUX1FVSUNLQ09OVFJPTFNfTUFJTih0c3RfUVF1 aWNrUG9wdXApCisgCisgI2luY2x1ZGUgInRzdF9xcXVpY2twb3B1cC5tb2MiCitTdWJtb2R1bGUg cXRzY3JpcHQgNWJlOTVmOTYuLi40ZDhlNGJkMiAoY29tbWl0cyBub3QgcHJlc2VudCkKK1N1Ym1v ZHVsZSBxdHNwZWVjaCAxN2ZjOWZkZS4uMjU1ODQ1ZTI6CitkaWZmIC0tZ2l0IGEvcXRzcGVlY2gv c3JjL3BsdWdpbnMvdHRzL3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNw cCBiL3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVl Y2hfc3BlZWNoZC5jcHAKK2luZGV4IDZlYjc0YjguLmJjYzdkZDEgMTAwNjQ0CistLS0gYS9xdHNw ZWVjaC9zcmMvcGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hlci9xdGV4dHRvc3BlZWNoX3NwZWVj aGQuY3BwCisrKysgYi9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hlci9x dGV4dHRvc3BlZWNoX3NwZWVjaGQuY3BwCitAQCAtMzU3LDcgKzM1Nyw5IEBAIFFWZWN0b3I8UUxv Y2FsZT4gUVRleHRUb1NwZWVjaEVuZ2luZVNwZWVjaGQ6OmF2YWlsYWJsZUxvY2FsZXMoKSBjb25z dAorIAorIFFWZWN0b3I8UVZvaWNlPiBRVGV4dFRvU3BlZWNoRW5naW5lU3BlZWNoZDo6YXZhaWxh YmxlVm9pY2VzKCkgY29uc3QKKyB7CistICAgIHJldHVybiBtX3ZvaWNlcy52YWx1ZXMobV9jdXJy ZW50TG9jYWxlLm5hbWUoKSkudG9WZWN0b3IoKTsKKysgICAgUUxpc3Q8UVZvaWNlPiByZXN1bHRM aXN0ID0gbV92b2ljZXMudmFsdWVzKG1fY3VycmVudExvY2FsZS5uYW1lKCkpOworKyAgICBzdGQ6 OnJldmVyc2UocmVzdWx0TGlzdC5iZWdpbigpLCByZXN1bHRMaXN0LmVuZCgpKTsKKysgICAgcmV0 dXJuIHJlc3VsdExpc3QudG9WZWN0b3IoKTsKKyB9CisgCisgLy8gV2UgaGF2ZSBubyB3YXkgb2Yg a25vd2luZyBvdXIgb3duIGNsaWVudF9pZCBzaW5jZSBzcGVlY2gtZGlzcGF0Y2hlciBzZWVtcyB0 byBiZSBpbmNvbXBsZXRlCitTdWJtb2R1bGUgcXRzdmcgMGMwNTc4MGUuLmE3YTBmMjQ5OgorZGlm ZiAtLWdpdCBhL3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxl ci5jcHAgYi9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdpb2hhbmRsZXIu Y3BwCitpbmRleCA1NjFlNzdlLi4xMmUwNTc0IDEwMDY0NAorLS0tIGEvcXRzdmcvc3JjL3BsdWdp bnMvaW1hZ2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcAorKysrIGIvcXRzdmcvc3JjL3Bs dWdpbnMvaW1hZ2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcAorQEAgLTE5MSw2ICsxOTEs OCBAQCBib29sIFFTdmdJT0hhbmRsZXI6OnJlYWQoUUltYWdlICppbWFnZSkKKyAgICAgICAgICAg ICB9CisgICAgICAgICB9CisgICAgICAgICBpZiAoIWZpbmFsU2l6ZS5pc0VtcHR5KCkpIHsKKysg ICAgICAgICAgICBpZiAocU1heChmaW5hbFNpemUud2lkdGgoKSwgZmluYWxTaXplLmhlaWdodCgp KSA+IDB4ZmZmZikKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBc3N1bWUgY29y cnVwdGVkIGZpbGUKKyAgICAgICAgICAgICBpbWFnZS0+ZmlsbChkLT5iYWNrQ29sb3IucmdiYSgp KTsKKyAgICAgICAgICAgICBRUGFpbnRlciBwKGltYWdlKTsKKyAgICAgICAgICAgICBkLT5yLnJl bmRlcigmcCwgYm91bmRzKTsKK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVy LmNwcCBiL3F0c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwCitpbmRleCBhNWY4NzdmLi44ZGRh NTYzIDEwMDY0NAorLS0tIGEvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFuZGxlci5jcHAKKysrKyBiL3F0 c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwCitAQCAtMTM5Myw5ICsxMzkzLDEwIEBAIHN0YXRp YyB2b2lkIHBhcnNlRm9udChRU3ZnTm9kZSAqbm9kZSwKKyAgICAgICAgIGNhc2UgRm9udFNpemVO b25lOgorICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgY2FzZSBGb250U2l6ZVZhbHVlOiB7 CistICAgICAgICAgICAgUVN2Z0hhbmRsZXI6Okxlbmd0aFR5cGUgZHVtbXk7IC8vIHNob3VsZCBh bHdheXMgYmUgcGl4ZWwgc2l6ZQorLSAgICAgICAgICAgIGZvbnRTdHlsZS0+c2V0U2l6ZShxTWlu KHBhcnNlTGVuZ3RoKGF0dHJpYnV0ZXMuZm9udFNpemUsIGR1bW15LCBoYW5kbGVyKSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxcmVhbCgweGZmZmYpKSk7CisrICAgICAg ICAgICAgUVN2Z0hhbmRsZXI6Okxlbmd0aFR5cGUgdHlwZTsKKysgICAgICAgICAgICBxcmVhbCBm cyA9IHBhcnNlTGVuZ3RoKGF0dHJpYnV0ZXMuZm9udFNpemUsIHR5cGUsIGhhbmRsZXIpOworKyAg ICAgICAgICAgIGZzID0gY29udmVydFRvUGl4ZWxzKGZzLCB0cnVlLCB0eXBlKTsKKysgICAgICAg ICAgICBmb250U3R5bGUtPnNldFNpemUocU1pbihmcywgcXJlYWwoMHhmZmZmKSkpOworICAgICAg ICAgfQorICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgZGVmYXVsdDoKK0BAIC0yNTEzLDYg KzI1MTQsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZUFuaW1hdGVUcmFuc2Zvcm1Ob2RlKFFTdmdOb2Rl ICpwYXJlbnQsCisgICAgICAgICAgICAgKytzOworICAgICAgICAgfQorICAgICB9CisrICAgIGlm ICh2YWxzLmNvdW50KCkgJSAzICE9IDApCisrICAgICAgICByZXR1cm4gZmFsc2U7CisgCisgICAg IGJvb2wgb2sgPSB0cnVlOworICAgICBpbnQgYmVnaW4gPSBwYXJzZUNsb2NrVmFsdWUoYmVnaW5T dHIsICZvayk7CitAQCAtMjU3Niw2ICsyNTc5LDggQEAgc3RhdGljIFFTdmdOb2RlICpjcmVhdGVD aXJjbGVOb2RlKFFTdmdOb2RlICpwYXJlbnQsCisgICAgIHFyZWFsIG5jeCA9IHRvRG91YmxlKGN4 KTsKKyAgICAgcXJlYWwgbmN5ID0gdG9Eb3VibGUoY3kpOworICAgICBxcmVhbCBuciAgPSB0b0Rv dWJsZShyKTsKKysgICAgaWYgKG5yIDwgMC4wKQorKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg CisgICAgIFFSZWN0RiByZWN0KG5jeC1uciwgbmN5LW5yLCBucioyLCBucioyKTsKKyAgICAgUVN2 Z05vZGUgKmNpcmNsZSA9IG5ldyBRU3ZnQ2lyY2xlKHBhcmVudCwgcmVjdCk7CitAQCAtMzA0Niwx NSArMzA1MSwxNiBAQCBzdGF0aWMgUVN2Z1N0eWxlUHJvcGVydHkgKmNyZWF0ZVJhZGlhbEdyYWRp ZW50Tm9kZShRU3ZnTm9kZSAqbm9kZSwKKyAKKyAgICAgcXJlYWwgbmN4ID0gMC41OworICAgICBx cmVhbCBuY3kgPSAwLjU7CistICAgIHFyZWFsIG5yICA9IDAuNTsKKyAgICAgaWYgKCFjeC5pc0Vt cHR5KCkpCisgICAgICAgICBuY3ggPSB0b0RvdWJsZShjeCk7CisgICAgIGlmICghY3kuaXNFbXB0 eSgpKQorICAgICAgICAgbmN5ID0gdG9Eb3VibGUoY3kpOworKworKyAgICBxcmVhbCBuciA9IDAu MDsKKyAgICAgaWYgKCFyLmlzRW1wdHkoKSkKKyAgICAgICAgIG5yID0gdG9Eb3VibGUocik7Cist ICAgIGlmIChuciA8IDAuNSkKKy0gICAgICAgIG5yID0gMC41OworKyAgICBpZiAobnIgPD0gMC4w KQorKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgCisgICAgIHFyZWFsIG5meCA9IG5jeDsKKyAg ICAgaWYgKCFmeC5pc0VtcHR5KCkpCitAQCAtMzM1MCw3ICszMzU2LDkgQEAgc3RhdGljIFFTdmdO b2RlICpjcmVhdGVUZXh0Tm9kZShRU3ZnTm9kZSAqcGFyZW50LAorICAgICAvLyMjIyBlZGl0YWJs ZSBhbmQgcm90YXRlIG5vdCBoYW5kbGVkCisgICAgIFFTdmdIYW5kbGVyOjpMZW5ndGhUeXBlIHR5 cGU7CisgICAgIHFyZWFsIG54ID0gcGFyc2VMZW5ndGgoeCwgdHlwZSwgaGFuZGxlcik7CisrICAg IG54ID0gY29udmVydFRvUGl4ZWxzKG54LCB0cnVlLCB0eXBlKTsKKyAgICAgcXJlYWwgbnkgPSBw YXJzZUxlbmd0aCh5LCB0eXBlLCBoYW5kbGVyKTsKKysgICAgbnkgPSBjb252ZXJ0VG9QaXhlbHMo bnksIHRydWUsIHR5cGUpOworIAorICAgICBRU3ZnTm9kZSAqdGV4dCA9IG5ldyBRU3ZnVGV4dChw YXJlbnQsIFFQb2ludEYobngsIG55KSk7CisgICAgIHJldHVybiB0ZXh0OworQEAgLTM2OTEsOSAr MzY5OSw3IEBAIHZvaWQgUVN2Z0hhbmRsZXI6OnBhcnNlKCkKKyAgICAgICAgIGNhc2UgUVhtbFN0 cmVhbVJlYWRlcjo6RW5kRWxlbWVudDoKKyAgICAgICAgICAgICBlbmRFbGVtZW50KHhtbC0+bmFt ZSgpKTsKKyAgICAgICAgICAgICArK3JlbWFpbmluZ1VuZmluaXNoZWRFbGVtZW50czsKKy0gICAg ICAgICAgICAvLyBpZiB3ZSBhcmUgdXNpbmcgc29tZWJvZHkgZWxzZSdzIHF4bWxzdHJlYW1yZWFk ZXIKKy0gICAgICAgICAgICAvLyB3ZSBzaG91bGQgbm90IHJlYWQgdW50aWwgdGhlIGVuZCBvZiB0 aGUgc3RyZWFtCistICAgICAgICAgICAgZG9uZSA9ICFtX293bnNSZWFkZXIgJiYgKHhtbC0+bmFt ZSgpID09IFFMYXRpbjFTdHJpbmcoInN2ZyIpKTsKKysgICAgICAgICAgICBkb25lID0gKHhtbC0+ bmFtZSgpID09IFFMYXRpbjFTdHJpbmcoInN2ZyIpKTsKKyAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgIGNhc2UgUVhtbFN0cmVhbVJlYWRlcjo6Q2hhcmFjdGVyczoKKyAgICAgICAgICAgICBj aGFyYWN0ZXJzKHhtbC0+dGV4dCgpKTsKK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvc3ZnL3Fzdmdz dHJ1Y3R1cmUuY3BwIGIvcXRzdmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcAoraW5kZXggYjg5 NjA4Yi4uODljOWU0ZSAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5j cHAKKysrKyBiL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAKK0BAIC0yNTUsOSArMjU1 LDEzIEBAIGlubGluZSBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFN2Z0ZlYXR1cmUoY29uc3QgUVN0 cmluZyAmc3RyKQorICAgICB9OworIAorICAgICBpZiAoc3RyLmxlbmd0aCgpIDw9IE1BWF9XT1JE X0xFTkdUSCAmJiBzdHIubGVuZ3RoKCkgPj0gTUlOX1dPUkRfTEVOR1RIKSB7CisrICAgICAgICBj b25zdCBjaGFyMTZfdCB1bmljb2RlNDQgPSBzdHIuYXQoNDQpLnVuaWNvZGUoKTsKKysgICAgICAg IGNvbnN0IGNoYXIxNl90IHVuaWNvZGU0NSA9IHN0ci5hdCg0NSkudW5pY29kZSgpOworKyAgICAg ICAgaWYgKHVuaWNvZGU0NCA+PSBzaXplb2YoYXNzb192YWx1ZXMpIHx8IHVuaWNvZGU0NSA+PSBz aXplb2YoYXNzb192YWx1ZXMpKQorKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg IGNvbnN0IGludCBrZXkgPSBzdHIubGVuZ3RoKCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAr IGFzc29fdmFsdWVzW3N0ci5hdCg0NSkudW5pY29kZSgpXQorLSAgICAgICAgICAgICAgICAgICAg ICAgICsgYXNzb192YWx1ZXNbc3RyLmF0KDQ0KS51bmljb2RlKCldOworKyAgICAgICAgICAgICAg ICAgICAgICAgICsgYXNzb192YWx1ZXNbdW5pY29kZTQ1XQorKyAgICAgICAgICAgICAgICAgICAg ICAgICsgYXNzb192YWx1ZXNbdW5pY29kZTQ0XTsKKyAgICAgICAgIGlmIChrZXkgPD0gTUFYX0hB U0hfVkFMVUUgJiYga2V5ID49IDApCisgICAgICAgICAgICAgcmV0dXJuIHN0ciA9PSBRTGF0aW4x U3RyaW5nKHdvcmRsaXN0W2tleV0pOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3N2 Zy9xc3ZndGlueWRvY3VtZW50LmNwcCBiL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5j cHAKK2luZGV4IDYzZDA3OTcuLjE5ZTcxNTQgMTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvc3ZnL3Fz dmd0aW55ZG9jdW1lbnQuY3BwCisrKysgYi9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9jdW1lbnQu Y3BwCitAQCAtNDMzLDggKzQzMywxNiBAQCB2b2lkIFFTdmdUaW55RG9jdW1lbnQ6OmRyYXcoUVBh aW50ZXIgKnAsIFFTdmdFeHRyYVN0YXRlcyAmKQorICAgICBkcmF3KHApOworIH0KKyAKKytzdGF0 aWMgYm9vbCBpc1ZhbGlkTWF0cml4KGNvbnN0IFFUcmFuc2Zvcm0gJnRyYW5zZm9ybSkKKyt7Cisr ICAgIHFyZWFsIGRldGVybWluYW50ID0gdHJhbnNmb3JtLmRldGVybWluYW50KCk7CisrICAgIHJl dHVybiBxSXNGaW5pdGUoZGV0ZXJtaW5hbnQpOworK30KKysKKyB2b2lkIFFTdmdUaW55RG9jdW1l bnQ6Om1hcFNvdXJjZVRvVGFyZ2V0KFFQYWludGVyICpwLCBjb25zdCBRUmVjdEYgJnRhcmdldFJl Y3QsIGNvbnN0IFFSZWN0RiAmc291cmNlUmVjdCkKKyB7CisrICAgIFFUcmFuc2Zvcm0gb2xkVHJh bnNmb3JtID0gcC0+d29ybGRUcmFuc2Zvcm0oKTsKKysKKyAgICAgUVJlY3RGIHRhcmdldCA9IHRh cmdldFJlY3Q7CisgICAgIGlmICh0YXJnZXQuaXNFbXB0eSgpKSB7CisgICAgICAgICBRUGFpbnRE ZXZpY2UgKmRldiA9IHAtPmRldmljZSgpOworQEAgLTQ4Nyw2ICs0OTUsOSBAQCB2b2lkIFFTdmdU aW55RG9jdW1lbnQ6Om1hcFNvdXJjZVRvVGFyZ2V0KFFQYWludGVyICpwLCBjb25zdCBRUmVjdEYg JnRhcmdldFJlY3QsCisgICAgICAgICB9CisgI2VuZGlmCisgICAgIH0KKysKKysgICAgaWYgKCFp c1ZhbGlkTWF0cml4KHAtPndvcmxkVHJhbnNmb3JtKCkpKQorKyAgICAgICAgcC0+c2V0V29ybGRU cmFuc2Zvcm0ob2xkVHJhbnNmb3JtKTsKKyB9CisgCisgUVJlY3RGIFFTdmdUaW55RG9jdW1lbnQ6 OmJvdW5kc09uRWxlbWVudChjb25zdCBRU3RyaW5nICZpZCkgY29uc3QKK2RpZmYgLS1naXQgYS9x dHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcCBiL3F0c3Zn L3Rlc3RzL2F1dG8vcXN2Z3JlbmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIuY3BwCitpbmRleCAzNmM3 NmVjLi5kYjcxZTAyIDEwMDY0NAorLS0tIGEvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIv dHN0X3FzdmdyZW5kZXJlci5jcHAKKysrKyBiL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2Z3JlbmRlcmVy L3RzdF9xc3ZncmVuZGVyZXIuY3BwCitAQCAtODYsNiArODYsOCBAQCBwcml2YXRlIHNsb3RzOgor ICAgICB2b2lkIG9zc19mdXp6XzIzNzMxKCk7CisgICAgIHZvaWQgb3NzX2Z1enpfMjQxMzEoKTsK KyAgICAgdm9pZCBvc3NfZnV6el8yNDczOCgpOworKyAgICB2b2lkIGlsbGVnYWxBbmltYXRlVHJh bnNmb3JtX2RhdGEoKTsKKysgICAgdm9pZCBpbGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybSgpOworIAor ICNpZm5kZWYgUVRfTk9fQ09NUFJFU1MKKyAgICAgdm9pZCB0ZXN0R3pMb2FkaW5nKCk7CitAQCAt MTY0Niw1ICsxNjQ4LDIyIEBAIHZvaWQgdHN0X1FTdmdSZW5kZXJlcjo6b3NzX2Z1enpfMjQ3Mzgo KQorICAgICBRU3ZnUmVuZGVyZXIoKS5sb2FkKFFCeXRlQXJyYXkoIjxzdmc+PHBhdGggZD1cImEg MiAxZS0yMTIuLi4uLlwiPiIpKTsKKyB9CisgCisrdm9pZCB0c3RfUVN2Z1JlbmRlcmVyOjppbGxl Z2FsQW5pbWF0ZVRyYW5zZm9ybV9kYXRhKCkKKyt7CisrICAgIFFUZXN0OjphZGRDb2x1bW48UUJ5 dGVBcnJheT4oInN2ZyIpOworKworKyAgICBRVGVzdDo6bmV3Um93KCJjYXNlMSIpIDw8IFFCeXRl QXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1cInJvdGF0ZVwiIGJlZ2luPVwiMVwi IGR1cj1cIjJcIiB2YWx1ZXM9XCI4LDAsNSwwXCI+Iik7CisrICAgIFFUZXN0OjpuZXdSb3coImNh c2UyIikgPDwgUUJ5dGVBcnJheSgiPHN2Zz48YW5pbWF0ZVRyYW5zZm9ybSB0eXBlPVwicm90YXRl XCIgYmVnaW49XCIxXCIgZHVyPVwiMlwiIHZhbHVlcz1cIjEsMlwiPiIpOworKyAgICBRVGVzdDo6 bmV3Um93KCJjYXNlMyIpIDw8IFFCeXRlQXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlw ZT1cInJvdGF0ZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiBmcm9tPVwiLi4gNSAyXCIgdG89XCJm XCI+Iik7CisrICAgIFFUZXN0OjpuZXdSb3coImNhc2U0IikgPDwgUUJ5dGVBcnJheSgiPHN2Zz48 YW5pbWF0ZVRyYW5zZm9ybSB0eXBlPVwic2NhbGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgYnk9 XCItLSwuLlwiPiIpOworK30KKysKKyt2b2lkIHRzdF9RU3ZnUmVuZGVyZXI6OmlsbGVnYWxBbmlt YXRlVHJhbnNmb3JtKCkKKyt7CisrICAgIFFGRVRDSChRQnl0ZUFycmF5LCBzdmcpOworKyAgICBR U3ZnUmVuZGVyZXIgcmVuZGVyZXI7CisrICAgIFFWRVJJRlkoIXJlbmRlcmVyLmxvYWQoc3ZnKSk7 IC8vIGFsc28gc2hvdWxkbid0IGFzc2VydAorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RU3ZnUmVu ZGVyZXIpCisgI2luY2x1ZGUgInRzdF9xc3ZncmVuZGVyZXIubW9jIgorU3VibW9kdWxlIHF0dG9v bHMgNjkxNGY3YzguLjA5MGU1MjZlOgorZGlmZiAtLWdpdCBhL3F0dG9vbHMvc3JjL2Fzc2lzdGFu dC9xaGVscGdlbmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNwcCBiL3F0dG9vbHMvc3JjL2Fzc2lzdGFu dC9xaGVscGdlbmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNwcAoraW5kZXggZmVhYjFlMmQ1Li5jYmZi ODI1MDcgMTAwNjQ0CistLS0gYS9xdHRvb2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3Iv aGVscGdlbmVyYXRvci5jcHAKKysrKyBiL3F0dG9vbHMvc3JjL2Fzc2lzdGFudC9xaGVscGdlbmVy YXRvci9oZWxwZ2VuZXJhdG9yLmNwcAorQEAgLTQ0NSw3ICs0NDUsOSBAQCBib29sIEhlbHBHZW5l cmF0b3JQcml2YXRlOjppbnNlcnRGaWxlcyhjb25zdCBRU3RyaW5nTGlzdCAmZmlsZXMsIGNvbnN0 IFFTdHJpbmcgJgorICAgICBpZiAoZmlsdGVyU2V0SWQgPCAwKQorICAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICArK2ZpbHRlclNldElkOworLSAgICBmb3IgKGludCBhdHRJZCA6IHFBc0NvbnN0 KGZpbHRlckF0dHMpKSB7CisrICAgIFFMaXN0PGludD4gYXR0VmFsdWVzID0gZmlsdGVyQXR0cy52 YWx1ZXMoKTsKKysgICAgc3RkOjpzb3J0KGF0dFZhbHVlcy5iZWdpbigpLCBhdHRWYWx1ZXMuZW5k KCkpOworKyAgICBmb3IgKGludCBhdHRJZCA6IHFBc0NvbnN0KGF0dFZhbHVlcykpIHsKKyAgICAg ICAgIG1fcXVlcnktPnByZXBhcmUoUUxhdGluMVN0cmluZygiSU5TRVJUIElOVE8gRmlsZUF0dHJp YnV0ZVNldFRhYmxlICIKKyAgICAgICAgICAgICAiVkFMVUVTKD8sID8pIikpOworICAgICAgICAg bV9xdWVyeS0+YmluZFZhbHVlKDAsIGZpbHRlclNldElkKTsKK1N1Ym1vZHVsZSBxdHdheWxhbmQg ZGZiMDEyOWMuLjI5MDRlMWIzOgorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2Nv bmZpZ3VyZS5qc29uIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24KK2luZGV4 IDJmNDI0NTgwLi4yOTIyMjM1NyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2Nv bmZpZ3VyZS5qc29uCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbgor QEAgLTE0OSw4ICsxNDksNyBAQAorICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZiIKKyAgICAg ICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgImxpYnMiOiAiLWxk cm0iLAorLSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAgICAgICJ1c2UiOiAiZHJt IGVnbCIKKyAgICAgICAgIH0sCisgICAgICAgICAidnVsa2FuLXNlcnZlci1idWZmZXIiOiB7Cisg ICAgICAgICAgICAgImxhYmVsIjogIlZ1bGthbiBCdWZmZXIgU2hhcmluZyIsCitAQCAtMTY4LDcg KzE2Nyw4IEBACisgICAgICAgICAgICAgICAgICAgICAiZXhwb3J0QWxsb2NJbmZvLmhhbmRsZVR5 cGVzID0gVktfRVhURVJOQUxfTUVNT1JZX0hBTkRMRV9UWVBFX09QQVFVRV9GRF9CSVRfS0hSOyIs CisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIDA7IgorICAgICAgICAgICAgICAgICBdCist ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0sCisrICAgICAgICAgICAgInVzZSI6ICJ3YXls YW5kLWNsaWVudCIKKyAgICAgICAgIH0sCisgICAgICAgICAiZWdsXzFfNS13YXlsYW5kIjogewor ICAgICAgICAgICAgICJsYWJlbCI6ICJFR0wgMS41IHdpdGggV2F5bGFuZCBQbGF0Zm9ybSIsCitA QCAtMTgzLDcgKzE4Myw3IEBACisgICAgICAgICAgICAgICAgICAgICAiZWdsR2V0UGxhdGZvcm1E aXNwbGF5KEVHTF9QTEFURk9STV9XQVlMQU5EX0VYVCwgKHN0cnVjdCB3bF9kaXNwbGF5ICopKG51 bGxwdHIpLCBudWxscHRyKTsiCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9LAor LSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAgICAgICJ1c2UiOiAiZWdsIHdheWxh bmQtY2xpZW50IgorICAgICAgICAgfQorICAgICB9LAorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5jcHAgYi9xdHdheWxh bmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uY3BwCitpbmRleCAx MjViMWUxOS4uZWRjY2ZlNjMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9i YWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uY3BwCitAQCAtNzQsNyArNzQsMTAgQEAg dm9pZCBRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6OmhhbmRsZVJlZ2lzdHJ5R2xvYmFs KHZvaWQgKmRhdGEsIDo6d2xfcmVnaXMKKyB2b2lkIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjph ZGRSZWdpc3RyeUxpc3RlbmVyKCkKKyB7CisgICAgIFFfRChRV2F5bGFuZENsaWVudEV4dGVuc2lv bik7CistICAgIGQtPndheWxhbmRJbnRlZ3JhdGlvbi0+ZGlzcGxheSgpLT5hZGRSZWdpc3RyeUxp c3RlbmVyKCZRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6OmhhbmRsZVJlZ2lzdHJ5R2xv YmFsLCB0aGlzKTsKKysgICAgaWYgKCFkLT5yZWdpc3RlcmVkKSB7CisrICAgICAgICBkLT53YXls YW5kSW50ZWdyYXRpb24tPmRpc3BsYXkoKS0+YWRkUmVnaXN0cnlMaXN0ZW5lcigmUVdheWxhbmRD bGllbnRFeHRlbnNpb25Qcml2YXRlOjpoYW5kbGVSZWdpc3RyeUdsb2JhbCwgdGhpcyk7CisrICAg ICAgICBkLT5yZWdpc3RlcmVkID0gdHJ1ZTsKKysgICAgfQorIH0KKyAKKyBRV2F5bGFuZENsaWVu dEV4dGVuc2lvbjo6UVdheWxhbmRDbGllbnRFeHRlbnNpb24oY29uc3QgaW50IHZlcikKK0BAIC04 OCw2ICs5MSwxMyBAQCBRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6UVdheWxhbmRDbGllbnRFeHRl bnNpb24oY29uc3QgaW50IHZlcikKKyAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlz LCAiYWRkUmVnaXN0cnlMaXN0ZW5lciIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyB9CisgCisr UVdheWxhbmRDbGllbnRFeHRlbnNpb246On5RV2F5bGFuZENsaWVudEV4dGVuc2lvbigpCisrewor KyAgICBRX0QoUVdheWxhbmRDbGllbnRFeHRlbnNpb24pOworKyAgICBpZiAoZC0+cmVnaXN0ZXJl ZCAmJiAhUUNvcmVBcHBsaWNhdGlvbjo6Y2xvc2luZ0Rvd24oKSkKKysgICAgICAgIGQtPndheWxh bmRJbnRlZ3JhdGlvbi0+ZGlzcGxheSgpLT5yZW1vdmVMaXN0ZW5lcigmUVdheWxhbmRDbGllbnRF eHRlbnNpb25Qcml2YXRlOjpoYW5kbGVSZWdpc3RyeUdsb2JhbCwgdGhpcyk7CisrfQorKworIFF0 V2F5bGFuZENsaWVudDo6UVdheWxhbmRJbnRlZ3JhdGlvbiAqUVdheWxhbmRDbGllbnRFeHRlbnNp b246OmludGVncmF0aW9uKCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRV2F5bGFuZENsaWVu dEV4dGVuc2lvbik7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3 YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdh eWxhbmRjbGllbnRleHRlbnNpb24uaAoraW5kZXggOTgyNzJlNTcuLjViZDI4Mzk4IDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9u LmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVu c2lvbi5oCitAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBR V2F5bGFuZENsaWVudEV4dGVuc2lvbiA6IHB1YmxpYyBRT2JqZWN0CisgICAgIFFfUFJPUEVSVFko Ym9vbCBhY3RpdmUgUkVBRCBpc0FjdGl2ZSBOT1RJRlkgYWN0aXZlQ2hhbmdlZCkKKyBwdWJsaWM6 CisgICAgIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXJzaW9uKTsKKysgICAg flFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKCk7CisgCisgICAgIFF0V2F5bGFuZENsaWVudDo6UVdh eWxhbmRJbnRlZ3JhdGlvbiAqaW50ZWdyYXRpb24oKSBjb25zdDsKKyAgICAgaW50IHZlcnNpb24o KSBjb25zdDsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxh bmRjbGllbnRleHRlbnNpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXls YW5kY2xpZW50ZXh0ZW5zaW9uX3AuaAoraW5kZXggNjljYzQ2YTAuLjkwOTFlZmJlIDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9u X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0 ZW5zaW9uX3AuaAorQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgorICAgICBRdFdheWxhbmRDbGll bnQ6OlFXYXlsYW5kSW50ZWdyYXRpb24gKndheWxhbmRJbnRlZ3JhdGlvbiA9IG51bGxwdHI7Cisg ICAgIGludCB2ZXJzaW9uID0gLTE7CisgICAgIGJvb2wgYWN0aXZlID0gZmFsc2U7CisrICAgIGJv b2wgcmVnaXN0ZXJlZCA9IGZhbHNlOworIH07CisgCisgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9F WFBPUlQgUVdheWxhbmRDbGllbnRFeHRlbnNpb25UZW1wbGF0ZVByaXZhdGUgOiBwdWJsaWMgUVdh eWxhbmRDbGllbnRFeHRlbnNpb25Qcml2YXRlCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkYXRhZGV2aWNlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YWRldmljZS5jcHAKK2luZGV4IDdlMmUzMzA4Li5lM2U2MGVkNSAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5jcHAKKysrKyBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5jcHAKK0BAIC03Miw2ICs3Miw4IEBA IFFXYXlsYW5kRGF0YURldmljZTo6UVdheWxhbmREYXRhRGV2aWNlKFFXYXlsYW5kRGF0YURldmlj ZU1hbmFnZXIgKm1hbmFnZXIsIFFXYXlsCisgCisgUVdheWxhbmREYXRhRGV2aWNlOjp+UVdheWxh bmREYXRhRGV2aWNlKCkKKyB7CisrICAgIGlmICh3bF9kYXRhX2RldmljZV9nZXRfdmVyc2lvbihv YmplY3QoKSkgPj0gV0xfREFUQV9ERVZJQ0VfUkVMRUFTRV9TSU5DRV9WRVJTSU9OKQorKyAgICAg ICAgcmVsZWFzZSgpOworIH0KKyAKKyBRV2F5bGFuZERhdGFPZmZlciAqUVdheWxhbmREYXRhRGV2 aWNlOjpzZWxlY3Rpb25PZmZlcigpIGNvbnN0CitAQCAtMTEwLDcgKzExMiw3IEBAIFFXYXlsYW5k RGF0YU9mZmVyICpRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdPZmZlcigpIGNvbnN0CisgICAgIHJl dHVybiBtX2RyYWdPZmZlci5kYXRhKCk7CisgfQorIAorLWJvb2wgUVdheWxhbmREYXRhRGV2aWNl OjpzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUVdheWxhbmRXaW5kb3cgKmljb24pCisr Ym9vbCBRV2F5bGFuZERhdGFEZXZpY2U6OnN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBR dDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgUVdheWxhbmRXaW5kb3cgKmljb24pCisg eworICAgICBhdXRvICpzZWF0ID0gbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKTsKKyAg ICAgYXV0byAqb3JpZ2luID0gc2VhdC0+cG9pbnRlckZvY3VzKCk7CitAQCAtMTIzLDcgKzEyNSwy OCBAQCBib29sIFFXYXlsYW5kRGF0YURldmljZTo6c3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURh dGEsIFFXYXlsYW5kV2luZG93ICppY29uKQorICAgICB9CisgCisgICAgIG1fZHJhZ1NvdXJjZS5y ZXNldChuZXcgUVdheWxhbmREYXRhU291cmNlKG1fZGlzcGxheS0+ZG5kU2VsZWN0aW9uSGFuZGxl cigpLCBtaW1lRGF0YSkpOworKworKyAgICBpZiAod2xfZGF0YV9kZXZpY2VfZ2V0X3ZlcnNpb24o b2JqZWN0KCkpID49IDMpCisrICAgICAgICBtX2RyYWdTb3VyY2UtPnNldF9hY3Rpb25zKGRyb3BB Y3Rpb25zVG9XbChzdXBwb3J0ZWRBY3Rpb25zKSk7CisrCisgICAgIGNvbm5lY3QobV9kcmFnU291 cmNlLmRhdGEoKSwgJlFXYXlsYW5kRGF0YVNvdXJjZTo6Y2FuY2VsbGVkLCB0aGlzLCAmUVdheWxh bmREYXRhRGV2aWNlOjpkcmFnU291cmNlQ2FuY2VsbGVkKTsKKysgICAgY29ubmVjdChtX2RyYWdT b3VyY2UuZGF0YSgpLCAmUVdheWxhbmREYXRhU291cmNlOjpkbmRSZXNwb25zZVVwZGF0ZWQsIHRo aXMsIFt0aGlzXShib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rpb24pIHsKKysgICAg ICAgICAgICBhdXRvIGRyYWcgPSBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxp Y2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpOworKyAgICAgICAg ICAgIC8vIGluIG9sZCB2ZXJzaW9ucyBkcm9wIGFjdGlvbiBpcyBub3Qgc2V0LCBzbyB3ZSBndWVz cworKyAgICAgICAgICAgIGlmICh3bF9kYXRhX3NvdXJjZV9nZXRfdmVyc2lvbihtX2RyYWdTb3Vy Y2UtPm9iamVjdCgpKSA8IDMpIHsKKysgICAgICAgICAgICAgICAgZHJhZy0+c2V0UmVzcG9uc2Uo YWNjZXB0ZWQpOworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIFFQbGF0 Zm9ybURyb3BRdFJlc3BvbnNlIHJlc3BvbnNlKGFjY2VwdGVkLCBhY3Rpb24pOworKyAgICAgICAg ICAgICAgICBkcmFnLT5zZXRSZXNwb25zZShyZXNwb25zZSk7CisrICAgICAgICAgICAgfQorKyAg ICB9KTsKKysgICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxhbmREYXRhU291 cmNlOjpkbmREcm9wcGVkLCB0aGlzLCBbXShib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBh Y3Rpb24pIHsKKysgICAgICAgIFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlIHJlc3BvbnNlKGFjY2Vw dGVkLCBhY3Rpb24pOworKyAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlB cHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+c2V0RHJv cFJlc3BvbnNlKHJlc3BvbnNlKTsKKysgICAgfSk7CisrICAgIGNvbm5lY3QobV9kcmFnU291cmNl LmRhdGEoKSwgJlFXYXlsYW5kRGF0YVNvdXJjZTo6ZmluaXNoZWQsIHRoaXMsIFtdKCkgeworKyAg ICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6 OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+ZmluaXNoRHJhZygpOworKyAgICB9KTsK KyAKKyAgICAgc3RhcnRfZHJhZyhtX2RyYWdTb3VyY2UtPm9iamVjdCgpLCBvcmlnaW4tPndsU3Vy ZmFjZSgpLCBpY29uLT53bFN1cmZhY2UoKSwgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2Uo KS0+c2VyaWFsKCkpOworICAgICByZXR1cm4gdHJ1ZTsKK0BAIC0xNTIsNyArMTc1LDcgQEAgdm9p ZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2Ryb3AoKQorICAgICAgICAgc3VwcG9y dGVkQWN0aW9ucyA9IGRyYWctPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIGlmICht X2RyYWdPZmZlcikgeworICAgICAgICAgZHJhZ0RhdGEgPSBtX2RyYWdPZmZlci0+bWltZURhdGEo KTsKKy0gICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0OjpNb3Zl QWN0aW9uIHwgUXQ6OkxpbmtBY3Rpb247CisrICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gbV9k cmFnT2ZmZXItPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHJl dHVybjsKKyAgICAgfQorQEAgLTE2Miw3ICsxODUsMTEgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZp Y2U6OmRhdGFfZGV2aWNlX2Ryb3AoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUd1aUFwcGxpY2F0aW9u OjprZXlib2FyZE1vZGlmaWVycygpKTsKKyAKKyAgICAgaWYgKGRyYWcpIHsKKy0gICAgICAgIHN0 YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9y bUludGVncmF0aW9uKCktPmRyYWcoKSktPmZpbmlzaERyYWcocmVzcG9uc2UpOworKyAgICAgICAg YXV0byBkcmFnID0gIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Q cml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSk7CisrICAgICAgICBkcmFnLT5z ZXREcm9wUmVzcG9uc2UocmVzcG9uc2UpOworKyAgICAgICAgZHJhZy0+ZmluaXNoRHJhZygpOwor KyAgICB9IGVsc2UgaWYgKG1fZHJhZ09mZmVyKSB7CisrICAgICAgICBtX2RyYWdPZmZlci0+Zmlu aXNoKCk7CisgICAgIH0KKyB9CisgCitAQCAtMTg2LDcgKzIxMyw3IEBAIHZvaWQgUVdheWxhbmRE YXRhRGV2aWNlOjpkYXRhX2RldmljZV9lbnRlcih1aW50MzJfdCBzZXJpYWwsIHdsX3N1cmZhY2Ug KnN1cmZhY2UsCisgICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gZHJhZy0+c3VwcG9ydGVkQWN0 aW9ucygpOworICAgICB9IGVsc2UgaWYgKG1fZHJhZ09mZmVyKSB7CisgICAgICAgICBkcmFnRGF0 YSA9IG1fZHJhZ09mZmVyLT5taW1lRGF0YSgpOworLSAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9 IFF0OjpDb3B5QWN0aW9uIHwgUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6TGlua0FjdGlvbjsKKysgICAg ICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBtX2RyYWdPZmZlci0+c3VwcG9ydGVkQWN0aW9ucygpOwor ICAgICB9CisgCisgICAgIGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSA9 IFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZURyYWcobV9kcmFnV2luZG93LCBkcmFnRGF0 YSwgbV9kcmFnUG9pbnQsIHN1cHBvcnRlZEFjdGlvbnMsCitAQCAtMTk3LDExICsyMjQsNyBAQCB2 b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZW50ZXIodWludDMyX3Qgc2VyaWFs LCB3bF9zdXJmYWNlICpzdXJmYWNlLAorICAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFn ICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygp KS0+c2V0UmVzcG9uc2UocmVzcG9uc2UpOworICAgICB9CisgCistICAgIGlmIChyZXNwb25zZS5p c0FjY2VwdGVkKCkpIHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVy LT5vYmplY3QoKSwgbV9lbnRlclNlcmlhbCwgbV9kcmFnT2ZmZXItPmZpcnN0Rm9ybWF0KCkudG9V dGY4KCkuY29uc3REYXRhKCkpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgd2xfZGF0YV9vZmZl cl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2VyaWFsLCBudWxscHRyKTsK Ky0gICAgfQorKyAgICBzZW5kUmVzcG9uc2Uoc3VwcG9ydGVkQWN0aW9ucywgcmVzcG9uc2UpOwor IH0KKyAKKyB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfbGVhdmUoKQorQEAg LTIzNSwxMCArMjU4LDEwIEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9t b3Rpb24odWludDMyX3QgdGltZSwgd2xfZml4ZWRfdCB4LCB3bF9maXhlCisgICAgICAgICBzdXBw b3J0ZWRBY3Rpb25zID0gZHJhZy0+c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9IGVsc2Ugewor ICAgICAgICAgZHJhZ0RhdGEgPSBtX2RyYWdPZmZlci0+bWltZURhdGEoKTsKKy0gICAgICAgIHN1 cHBvcnRlZEFjdGlvbnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0OjpNb3ZlQWN0aW9uIHwgUXQ6Okxp bmtBY3Rpb247CisrICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gbV9kcmFnT2ZmZXItPnN1cHBv cnRlZEFjdGlvbnMoKTsKKyAgICAgfQorIAorLSAgICBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSBy ZXNwb25zZSA9IFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZURyYWcobV9kcmFnV2luZG93 LCBkcmFnRGF0YSwgbV9kcmFnUG9pbnQsIHN1cHBvcnRlZEFjdGlvbnMsCisrICAgIGNvbnN0IFFQ bGF0Zm9ybURyYWdRdFJlc3BvbnNlIHJlc3BvbnNlID0gUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6 aGFuZGxlRHJhZyhtX2RyYWdXaW5kb3csIGRyYWdEYXRhLCBtX2RyYWdQb2ludCwgc3VwcG9ydGVk QWN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHdWlBcHBsaWNhdGlvbjo6bW91c2VCdXR0b25z KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRR3VpQXBwbGljYXRpb246OmtleWJvYXJkTW9kaWZpZXJz KCkpOworIAorQEAgLTI0NiwxMSArMjY5LDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRh dGFfZGV2aWNlX21vdGlvbih1aW50MzJfdCB0aW1lLCB3bF9maXhlZF90IHgsIHdsX2ZpeGUKKyAg ICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRl OjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPnNldFJlc3BvbnNlKHJlc3BvbnNlKTsK KyAgICAgfQorIAorLSAgICBpZiAocmVzcG9uc2UuaXNBY2NlcHRlZCgpKSB7CistICAgICAgICB3 bF9kYXRhX29mZmVyX2FjY2VwdChtX2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWws IG1fZHJhZ09mZmVyLT5maXJzdEZvcm1hdCgpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKy0gICAg fSBlbHNlIHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5vYmpl Y3QoKSwgbV9lbnRlclNlcmlhbCwgbnVsbHB0cik7CistICAgIH0KKysgICAgc2VuZFJlc3BvbnNl KHN1cHBvcnRlZEFjdGlvbnMsIHJlc3BvbnNlKTsKKyB9CisgI2VuZGlmIC8vIFFUX0NPTkZJRyhk cmFnYW5kZHJvcCkKKyAKK0BAIC0yNzcsMTQgKzI5NiwxMCBAQCB2b2lkIFFXYXlsYW5kRGF0YURl dmljZTo6c2VsZWN0aW9uU291cmNlQ2FuY2VsbGVkKCkKKyAjaWYgUVRfQ09ORklHKGRyYWdhbmRk cm9wKQorIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkcmFnU291cmNlQ2FuY2VsbGVkKCkKKyB7 CisrICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRl OjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPmZpbmlzaERyYWcoKTsKKyAgICAgbV9k cmFnU291cmNlLnJlc2V0KCk7CisgfQorIAorLXZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkcmFn U291cmNlVGFyZ2V0Q2hhbmdlZChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSkKKy17CistICAgIHN0 YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9y bUludGVncmF0aW9uKCktPmRyYWcoKSktPnVwZGF0ZVRhcmdldChtaW1lVHlwZSk7CistfQorLQor IFFQb2ludCBRV2F5bGFuZERhdGFEZXZpY2U6OmNhbGN1bGF0ZURyYWdQb3NpdGlvbihpbnQgeCwg aW50IHksIFFXaW5kb3cgKnduZCkgY29uc3QKKyB7CisgICAgIFFQb2ludCBwbnQod2xfZml4ZWRf dG9faW50KHgpLCB3bF9maXhlZF90b19pbnQoeSkpOworQEAgLTI5Nyw2ICszMTIsMzMgQEAgUVBv aW50IFFXYXlsYW5kRGF0YURldmljZTo6Y2FsY3VsYXRlRHJhZ1Bvc2l0aW9uKGludCB4LCBpbnQg eSwgUVdpbmRvdyAqd25kKSBjb24KKyAgICAgfQorICAgICByZXR1cm4gcG50OworIH0KKysKKyt2 b2lkIFFXYXlsYW5kRGF0YURldmljZTo6c2VuZFJlc3BvbnNlKFF0OjpEcm9wQWN0aW9ucyBzdXBw b3J0ZWRBY3Rpb25zLCBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2UpCisr eworKyAgICBpZiAocmVzcG9uc2UuaXNBY2NlcHRlZCgpKSB7CisrICAgICAgICBpZiAod2xfZGF0 YV9kZXZpY2VfZ2V0X3ZlcnNpb24ob2JqZWN0KCkpID49IDMpCisrICAgICAgICAgICAgbV9kcmFn T2ZmZXItPnNldF9hY3Rpb25zKGRyb3BBY3Rpb25zVG9XbChzdXBwb3J0ZWRBY3Rpb25zKSwgZHJv cEFjdGlvbnNUb1dsKHJlc3BvbnNlLmFjY2VwdGVkQWN0aW9uKCkpKTsKKysKKysgICAgICAgIG1f ZHJhZ09mZmVyLT5hY2NlcHQobV9lbnRlclNlcmlhbCwgbV9kcmFnT2ZmZXItPmZpcnN0Rm9ybWF0 KCkpOworKyAgICB9IGVsc2UgeworKyAgICAgICAgbV9kcmFnT2ZmZXItPmFjY2VwdChtX2VudGVy U2VyaWFsLCBRU3RyaW5nKCkpOworKyAgICB9CisrfQorKworK2ludCBRV2F5bGFuZERhdGFEZXZp Y2U6OmRyb3BBY3Rpb25zVG9XbChRdDo6RHJvcEFjdGlvbnMgYWN0aW9ucykKKyt7CisrCisrICAg IGludCB3bEFjdGlvbnMgPSBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fTk9ORTsK KysgICAgaWYgKGFjdGlvbnMgJiBRdDo6Q29weUFjdGlvbikKKysgICAgICAgIHdsQWN0aW9ucyB8 PSBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fQ09QWTsKKysgICAgaWYgKGFjdGlv bnMgJiAoUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6VGFyZ2V0TW92ZUFjdGlvbikpCisrICAgICAgICB3 bEFjdGlvbnMgfD0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX01PVkU7CisrCisr ICAgIC8vIHdheWxhbmQgZG9lcyBub3Qgc3VwcG9ydCBMaW5rQWN0aW9uIGF0IHRoZSB0aW1lIG9m IHdyaXRpbmcKKysgICAgcmV0dXJuIHdsQWN0aW9uczsKKyt9CisrCisrCisgI2VuZGlmIC8vIFFU X0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkYXRhZGV2aWNlX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YWRldmljZV9wLmgKK2luZGV4IDE2YzNhZDI4Li44MDFkY2MyYyAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9wLmgKKysrKyBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9wLmgKK0BAIC02NCw2ICs2NCw3IEBA IFFUX1JFUVVJUkVfQ09ORklHKHdheWxhbmRfZGF0YWRldmljZSk7CisgUVRfQkVHSU5fTkFNRVNQ QUNFCisgCisgY2xhc3MgUU1pbWVEYXRhOworK2NsYXNzIFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNl OworIGNsYXNzIFFXaW5kb3c7CisgCisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7CitAQCAt ODksNyArOTAsNyBAQCBwdWJsaWM6CisgCisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAg ICAgUVdheWxhbmREYXRhT2ZmZXIgKmRyYWdPZmZlcigpIGNvbnN0OworLSAgICBib29sIHN0YXJ0 RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRV2F5bGFuZFdpbmRvdyAqaWNvbik7CisrICAgIGJv b2wgc3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0 ZWRBY3Rpb25zLCBRV2F5bGFuZFdpbmRvdyAqaWNvbik7CisgICAgIHZvaWQgY2FuY2VsRHJhZygp OworICNlbmRpZgorIAorQEAgLTEwOSwxMyArMTEwLDE2IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAK KyAjaWYgUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorICAgICB2b2lkIGRyYWdTb3VyY2VDYW5jZWxs ZWQoKTsKKy0gICAgdm9pZCBkcmFnU291cmNlVGFyZ2V0Q2hhbmdlZChjb25zdCBRU3RyaW5nICZt aW1lVHlwZSk7CisgI2VuZGlmCisgCisgcHJpdmF0ZToKKyAjaWYgUVRfQ09ORklHKGRyYWdhbmRk cm9wKQorICAgICBRUG9pbnQgY2FsY3VsYXRlRHJhZ1Bvc2l0aW9uKGludCB4LCBpbnQgeSwgUVdp bmRvdyAqd25kKSBjb25zdDsKKyAjZW5kaWYKKysgICAgdm9pZCBzZW5kUmVzcG9uc2UoUXQ6OkRy b3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNl ICZyZXNwb25zZSk7CisrCisrICAgIHN0YXRpYyBpbnQgZHJvcEFjdGlvbnNUb1dsKFF0OjpEcm9w QWN0aW9ucyBkcm9wQWN0aW9ucyk7CisrCisgCisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNw bGF5ID0gbnVsbHB0cjsKKyAgICAgUVdheWxhbmRJbnB1dERldmljZSAqbV9pbnB1dERldmljZSA9 IG51bGxwdHI7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh ZGV2aWNlbWFuYWdlci5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZp Y2VtYW5hZ2VyLmNwcAoraW5kZXggMzVkNjczMDcuLjZkYzRmNzdmIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlci5jcHAKKysrKyBiL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwCitAQCAtNTAs OCArNTAsOCBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xp ZW50IHsKKyAKKy1RV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyOjpRV2F5bGFuZERhdGFEZXZpY2VN YW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwgdWludDMyX3QgaWQpCistICAgIDogd2xf ZGF0YV9kZXZpY2VfbWFuYWdlcihkaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgMSkKKytRV2F5 bGFuZERhdGFEZXZpY2VNYW5hZ2VyOjpRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFXYXlsYW5k RGlzcGxheSAqZGlzcGxheSwgaW50IHZlcnNpb24sIHVpbnQzMl90IGlkKQorKyAgICA6IHdsX2Rh dGFfZGV2aWNlX21hbmFnZXIoZGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIHFNaW4odmVyc2lv biwgMykpCisgICAgICwgbV9kaXNwbGF5KGRpc3BsYXkpCisgeworICAgICAvLyBDcmVhdGUgdHJh bnNmZXIgZGV2aWNlcyBmb3IgYWxsIGlucHV0IGRldmljZXMuCitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9wLmggYi9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAoraW5kZXggYmQwNWMwZmIu LjUxMGQ5YmU0IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh ZGV2aWNlbWFuYWdlcl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0 YWRldmljZW1hbmFnZXJfcC5oCitAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBRV2F5bGFuZElucHV0 RGV2aWNlOworIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kRGF0YURldmlj ZU1hbmFnZXIgOiBwdWJsaWMgUXRXYXlsYW5kOjp3bF9kYXRhX2RldmljZV9tYW5hZ2VyCisgewor IHB1YmxpYzoKKy0gICAgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkg KmRpc3BsYXksIHVpbnQzMl90IGlkKTsKKysgICAgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihR V2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIGludCB2ZXJzaW9uLCB1aW50MzJfdCBpZCk7CisgICAg IH5RV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKCkgb3ZlcnJpZGU7CisgCisgICAgIFFXYXlsYW5k RGF0YURldmljZSAqZ2V0RGF0YURldmljZShRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmlj ZSk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIu Y3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCitpbmRleCAy Mjk3ZThhMS4uZmUwZWE4YzkgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRhdGFvZmZlci5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0 YW9mZmVyLmNwcAorQEAgLTgyLDYgKzgyLDE1IEBAIFFNaW1lRGF0YSAqUVdheWxhbmREYXRhT2Zm ZXI6Om1pbWVEYXRhKCkKKyAgICAgcmV0dXJuIG1fbWltZURhdGEuZGF0YSgpOworIH0KKyAKKytR dDo6RHJvcEFjdGlvbnMgUVdheWxhbmREYXRhT2ZmZXI6OnN1cHBvcnRlZEFjdGlvbnMoKSBjb25z dAorK3sKKysgICAgaWYgKHdsX2RhdGFfb2ZmZXJfZ2V0X3ZlcnNpb24oY29uc3RfY2FzdDw6Onds X2RhdGFfb2ZmZXIqPihvYmplY3QoKSkpIDwgMykgeworKyAgICAgICAgcmV0dXJuIFF0OjpNb3Zl QWN0aW9uIHwgUXQ6OkNvcHlBY3Rpb247CisrICAgIH0KKysKKysgICAgcmV0dXJuIG1fc3VwcG9y dGVkQWN0aW9uczsKKyt9CisrCisgdm9pZCBRV2F5bGFuZERhdGFPZmZlcjo6c3RhcnRSZWNlaXZp bmcoY29uc3QgUVN0cmluZyAmbWltZVR5cGUsIGludCBmZCkKKyB7CisgICAgIHJlY2VpdmUobWlt ZVR5cGUsIGZkKTsKK0BAIC05Myw2ICsxMDIsMjIgQEAgdm9pZCBRV2F5bGFuZERhdGFPZmZlcjo6 ZGF0YV9vZmZlcl9vZmZlcihjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUpCisgICAgIG1fbWltZURh dGEtPmFwcGVuZEZvcm1hdChtaW1lX3R5cGUpOworIH0KKyAKKyt2b2lkIFFXYXlsYW5kRGF0YU9m ZmVyOjpkYXRhX29mZmVyX2FjdGlvbih1aW50MzJfdCBkbmRfYWN0aW9uKQorK3sKKysgICAgUV9V TlVTRUQoZG5kX2FjdGlvbik7CisrICAgIC8vIFRoaXMgaXMgdGhlIGNvbXBvc2l0b3IgdGVsbGlu ZyB0aGUgZHJhZyB0YXJnZXQgd2hhdCBhY3Rpb24gaXQgc2hvdWxkIHBlcmZvcm0KKysgICAgLy8g SXQgZG9lcyBub3QgbWFwIG5pY2VseSBpbnRvIFF0IGZpbmFsIGRyb3Agc2VtYW50aWNzLCBvdGhl ciB0aGFuIHByZXRlbmRpbmcgdGhlcmUgaXMgb25seSBvbmUgc3VwcG9ydGVkIGFjdGlvbj8KKyt9 CisrCisrdm9pZCBRV2F5bGFuZERhdGFPZmZlcjo6ZGF0YV9vZmZlcl9zb3VyY2VfYWN0aW9ucyh1 aW50MzJfdCBzb3VyY2VfYWN0aW9ucykKKyt7CisrICAgIG1fc3VwcG9ydGVkQWN0aW9ucyA9IFF0 OjpEcm9wQWN0aW9ucygpOworKyAgICBpZiAoc291cmNlX2FjdGlvbnMgJiBXTF9EQVRBX0RFVklD RV9NQU5BR0VSX0RORF9BQ1RJT05fTU9WRSkKKysgICAgICAgIG1fc3VwcG9ydGVkQWN0aW9ucyB8 PSBRdDo6TW92ZUFjdGlvbjsKKysgICAgaWYgKHNvdXJjZV9hY3Rpb25zICYgV0xfREFUQV9ERVZJ Q0VfTUFOQUdFUl9ETkRfQUNUSU9OX0NPUFkpCisrICAgICAgICBtX3N1cHBvcnRlZEFjdGlvbnMg fD0gUXQ6OkNvcHlBY3Rpb247CisrfQorKworIFFXYXlsYW5kTWltZURhdGE6OlFXYXlsYW5kTWlt ZURhdGEoUVdheWxhbmRBYnN0cmFjdERhdGFPZmZlciAqZGF0YU9mZmVyKQorICAgICA6IG1fZGF0 YU9mZmVyKGRhdGFPZmZlcikKKyB7CitAQCAtMTYzLDE3ICsxODgsMTggQEAgUVZhcmlhbnQgUVdh eWxhbmRNaW1lRGF0YTo6cmV0cmlldmVEYXRhX3N5cyhjb25zdCBRU3RyaW5nICZtaW1lVHlwZSwg UVZhcmlhbnQ6OlQKKyAKKyBpbnQgUVdheWxhbmRNaW1lRGF0YTo6cmVhZERhdGEoaW50IGZkLCBR Qnl0ZUFycmF5ICZkYXRhKSBjb25zdAorIHsKKy0gICAgZmRfc2V0IHJlYWRzZXQ7CistICAgIEZE X1pFUk8oJnJlYWRzZXQpOworLSAgICBGRF9TRVQoZmQsICZyZWFkc2V0KTsKKy0gICAgc3RydWN0 IHRpbWV2YWwgdGltZW91dDsKKysgICAgc3RydWN0IHBvbGxmZCByZWFkc2V0OworKyAgICByZWFk c2V0LmZkID0gZmQ7CisrICAgIHJlYWRzZXQuZXZlbnRzID0gUE9MTElOOworKyAgICBzdHJ1Y3Qg dGltZXNwZWMgdGltZW91dDsKKyAgICAgdGltZW91dC50dl9zZWMgPSAxOworLSAgICB0aW1lb3V0 LnR2X3VzZWMgPSAwOworKyAgICB0aW1lb3V0LnR2X25zZWMgPSAwOworKworIAorICAgICBRX0ZP UkVWRVIgeworLSAgICAgICAgaW50IHJlYWR5ID0gc2VsZWN0KEZEX1NFVFNJWkUsICZyZWFkc2V0 LCBudWxscHRyLCBudWxscHRyLCAmdGltZW91dCk7CisrICAgICAgICBpbnQgcmVhZHkgPSBxdF9z YWZlX3BvbGwoJnJlYWRzZXQsIDEsICZ0aW1lb3V0KTsKKyAgICAgICAgIGlmIChyZWFkeSA8IDAp IHsKKy0gICAgICAgICAgICBxV2FybmluZygpIDw8ICJRV2F5bGFuZERhdGFPZmZlcjogc2VsZWN0 KCkgZmFpbGVkIjsKKysgICAgICAgICAgICBxV2FybmluZygpIDw8ICJRV2F5bGFuZERhdGFPZmZl cjogcXRfc2FmZV9wb2xsKCkgZmFpbGVkIjsKKyAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAg ICAgICB9IGVsc2UgaWYgKHJlYWR5ID09IDApIHsKKyAgICAgICAgICAgICBxV2FybmluZygiUVdh eWxhbmREYXRhT2ZmZXI6IHRpbWVvdXQgcmVhZGluZyBmcm9tIHBpcGUiKTsKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlcl9wLmggYi9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlcl9wLmgKK2luZGV4IDljZjE0ODNjLi42ZjY2NzM5 OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyX3Au aAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oCitAQCAt ODIsNiArODIsNyBAQCBwdWJsaWM6CisgICAgIGV4cGxpY2l0IFFXYXlsYW5kRGF0YU9mZmVyKFFX YXlsYW5kRGlzcGxheSAqZGlzcGxheSwgc3RydWN0IDo6d2xfZGF0YV9vZmZlciAqb2ZmZXIpOwor ICAgICB+UVdheWxhbmREYXRhT2ZmZXIoKSBvdmVycmlkZTsKKyAgICAgUU1pbWVEYXRhICptaW1l RGF0YSgpIG92ZXJyaWRlOworKyAgICBRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucygp IGNvbnN0OworIAorICAgICBRU3RyaW5nIGZpcnN0Rm9ybWF0KCkgY29uc3Q7CisgCitAQCAtODks MTAgKzkwLDEzIEBAIHB1YmxpYzoKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgZGF0YV9vZmZl cl9vZmZlcihjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUpIG92ZXJyaWRlOworKyAgICB2b2lkIGRh dGFfb2ZmZXJfc291cmNlX2FjdGlvbnModWludDMyX3Qgc291cmNlX2FjdGlvbnMpIG92ZXJyaWRl OworKyAgICB2b2lkIGRhdGFfb2ZmZXJfYWN0aW9uKHVpbnQzMl90IGRuZF9hY3Rpb24pIG92ZXJy aWRlOworIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5ID0gbnVs bHB0cjsKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRNaW1lRGF0YT4gbV9taW1lRGF0YTsK KysgICAgUXQ6OkRyb3BBY3Rpb25zIG1fc3VwcG9ydGVkQWN0aW9uczsKKyB9OworIAorIAorZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAgYi9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2UuY3BwCitpbmRleCBmNDUxMjJm Yi4uNTU5OWNiZDQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRh dGFzb3VyY2UuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3Vy Y2UuY3BwCitAQCAtMTAxLDcgKzEwMSwzMiBAQCB2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0 YV9zb3VyY2Vfc2VuZChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUsIGludDMyX3QgZmQpCisgCisg dm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX3RhcmdldChjb25zdCBRU3RyaW5n ICZtaW1lX3R5cGUpCisgeworLSAgICBRX0VNSVQgdGFyZ2V0Q2hhbmdlZChtaW1lX3R5cGUpOwor KyAgICBtX2FjY2VwdGVkID0gIW1pbWVfdHlwZS5pc0VtcHR5KCk7CisrICAgIFFfRU1JVCBkbmRS ZXNwb25zZVVwZGF0ZWQobV9hY2NlcHRlZCwgbV9kcm9wQWN0aW9uKTsKKyt9CisrCisrdm9pZCBR V2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX2FjdGlvbih1aW50MzJfdCBhY3Rpb24pCisr eworKyAgICBRdDo6RHJvcEFjdGlvbiBxdEFjdGlvbiA9IFF0OjpJZ25vcmVBY3Rpb247CisrCisr ICAgIGlmIChhY3Rpb24gPT0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX01PVkUp CisrICAgICAgICBxdEFjdGlvbiA9IFF0OjpNb3ZlQWN0aW9uOworKyAgICBlbHNlIGlmIChhY3Rp b24gPT0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX0NPUFkpCisrICAgICAgICBx dEFjdGlvbiA9IFF0OjpDb3B5QWN0aW9uOworKworKyAgICBtX2Ryb3BBY3Rpb24gPSBxdEFjdGlv bjsKKysgICAgUV9FTUlUIGRuZFJlc3BvbnNlVXBkYXRlZChtX2FjY2VwdGVkLCBtX2Ryb3BBY3Rp b24pOworK30KKysKKyt2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2VfZG5kX2Zp bmlzaGVkKCkKKyt7CisrICAgIFFfRU1JVCBmaW5pc2hlZCgpOworK30KKysKKyt2b2lkIFFXYXls YW5kRGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2VfZG5kX2Ryb3BfcGVyZm9ybWVkKCkKKyt7CisrCisr ICAgIFFfRU1JVCBkbmREcm9wcGVkKG1fYWNjZXB0ZWQsIG1fZHJvcEFjdGlvbik7CisgfQorIAor IH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2Vf cC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlX3AuaAoraW5kZXgg MjVhZmZmNzkuLjk2ZjA3YmMzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkYXRhc291cmNlX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRk YXRhc291cmNlX3AuaAorQEAgLTc3LDE3ICs3NywyNSBAQCBwdWJsaWM6CisgICAgIFFNaW1lRGF0 YSAqbWltZURhdGEoKSBjb25zdDsKKyAKKyBRX1NJR05BTFM6CistICAgIHZvaWQgdGFyZ2V0Q2hh bmdlZChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUpOworICAgICB2b2lkIGNhbmNlbGxlZCgpOwor KyAgICB2b2lkIGZpbmlzaGVkKCk7CisrCisrICAgIHZvaWQgZG5kUmVzcG9uc2VVcGRhdGVkKGJv b2wgYWNjZXB0ZWQsIFF0OjpEcm9wQWN0aW9uIGFjdGlvbik7CisrICAgIHZvaWQgZG5kRHJvcHBl ZChib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rpb24pOworIAorIHByb3RlY3RlZDoK KyAgICAgdm9pZCBkYXRhX3NvdXJjZV9jYW5jZWxsZWQoKSBvdmVycmlkZTsKKyAgICAgdm9pZCBk YXRhX3NvdXJjZV9zZW5kKGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSwgaW50MzJfdCBmZCkgb3Zl cnJpZGU7CisgICAgIHZvaWQgZGF0YV9zb3VyY2VfdGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1pbWVf dHlwZSkgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9zb3VyY2VfZG5kX2Ryb3BfcGVyZm9ybWVk KCkgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9zb3VyY2VfZG5kX2ZpbmlzaGVkKCkgb3ZlcnJp ZGU7CisrICAgIHZvaWQgZGF0YV9zb3VyY2VfYWN0aW9uKHVpbnQzMl90IGFjdGlvbikgb3ZlcnJp ZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxs cHRyOworICAgICBRTWltZURhdGEgKm1fbWltZV9kYXRhID0gbnVsbHB0cjsKKysgICAgYm9vbCBt X2FjY2VwdGVkID0gZmFsc2U7CisrICAgIFF0OjpEcm9wQWN0aW9uIG1fZHJvcEFjdGlvbiA9IFF0 OjpJZ25vcmVBY3Rpb247CisgfTsKKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkaXNwbGF5LmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k ZGlzcGxheS5jcHAKK2luZGV4IGYxMGMxZjc5Li5jMDFlMjM4YiAxMDA2NDQKKy0tLSBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGlzcGxheS5jcHAKK0BAIC04NSwxMCArODUsMjAzIEBACisgCisgI2lu Y2x1ZGUgPGVycm5vLmg+CisgCisrI2luY2x1ZGUgPHR1cGxlPiAvLyBmb3Igc3RkOjp0aWUKKysK KytzdGF0aWMgdm9pZCBjaGVja1dheWxhbmRFcnJvcihzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxh eSkKKyt7CisrICAgIGludCBlY29kZSA9IHdsX2Rpc3BsYXlfZ2V0X2Vycm9yKGRpc3BsYXkpOwor KyAgICBpZiAoKGVjb2RlID09IEVQSVBFIHx8IGVjb2RlID09IEVDT05OUkVTRVQpKSB7CisrICAg ICAgICAvLyBzcGVjaWFsIGNhc2UgdGhpcyB0byBwcm92aWRlIGEgbmljZXIgZXJyb3IKKysgICAg ICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9uIGJyb2tlLiBEaWQgdGhlIFdheWxh bmQgY29tcG9zaXRvciBkaWU/Iik7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBxV2FybmluZygi VGhlIFdheWxhbmQgY29ubmVjdGlvbiBleHBlcmllbmNlZCBhIGZhdGFsIGVycm9yOiAlcyIsIHN0 cmVycm9yKGVjb2RlKSk7CisrICAgIH0KKysgICAgX2V4aXQoMSk7CisrfQorKworIFFUX0JFR0lO X05BTUVTUEFDRQorIAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQgeworIAorK2NsYXNzIEV2 ZW50VGhyZWFkIDogcHVibGljIFFUaHJlYWQKKyt7CisrICAgIFFfT0JKRUNUCisrcHVibGljOgor KyAgICBlbnVtIE9wZXJhdGluZ01vZGUgeworKyAgICAgICAgRW1pdFRvRGlzcGF0Y2gsIC8vIEVt aXQgdGhlIHNpZ25hbCwgYWxsb3cgZGlzcGF0Y2hpbmcgaW4gYSBkaWZmZXJudCB0aHJlYWQuCisr ICAgICAgICBTZWxmRGlzcGF0Y2gsIC8vIERpc3BhdGNoIHRoZSBldmVudHMgaW5zaWRlIHRoaXMg dGhyZWFkLgorKyAgICB9OworKworKyAgICBFdmVudFRocmVhZChzdHJ1Y3Qgd2xfZGlzcGxheSAq IHdsLCBzdHJ1Y3Qgd2xfZXZlbnRfcXVldWUgKiBldl9xdWV1ZSwKKysgICAgICAgICAgICAgICAg T3BlcmF0aW5nTW9kZSBtb2RlKQorKyAgICAgICAgOiBtX2ZkKHdsX2Rpc3BsYXlfZ2V0X2ZkKHds KSkKKysgICAgICAgICwgbV9waXBlZmR7IC0xLCAtMSB9CisrICAgICAgICAsIG1fd2xkaXNwbGF5 KHdsKQorKyAgICAgICAgLCBtX3dsZXZxdWV1ZShldl9xdWV1ZSkKKysgICAgICAgICwgbV9tb2Rl KG1vZGUpCisrICAgICAgICAsIG1fcmVhZGluZyh0cnVlKQorKyAgICAgICAgLCBtX3F1aXR0aW5n KGZhbHNlKQorKyAgICB7CisrICAgICAgICBzZXRPYmplY3ROYW1lKFFTdHJpbmdMaXRlcmFsKCJX YXlsYW5kRXZlbnRUaHJlYWQiKSk7CisrICAgIH0KKysKKysgICAgdm9pZCByZWFkQW5kRGlzcGF0 Y2hFdmVudHMoKQorKyAgICB7CisrICAgICAgICAvKgorKyAgICAgICAgICogRGlzcGF0Y2ggcGVu ZGluZyBldmVudHMgYW5kIGZsdXNoIHRoZSByZXF1ZXN0cyBhdCBsZWFzdCBvbmNlLiBJZiB0aGUg ZXZlbnQgdGhyZWFkCisrICAgICAgICAgKiBpcyBub3QgcmVhZGluZywgdHJ5IHRvIGNhbGwgX3By ZXBhcmVfcmVhZCgpIHRvIGFsbG93IHRoZSBldmVudCB0aHJlYWQgdG8gcG9sbCgpLgorKyAgICAg ICAgICogSWYgdGhhdCBmYWlscywgcmUtdHJ5IGRpc3BhdGNoICYgZmx1c2ggYWdhaW4gdW50aWwg X3ByZXBhcmVfcmVhZCgpIGlzIHN1Y2Nlc3NmdWwuCisrICAgICAgICAgKgorKyAgICAgICAgICog VGhpcyBhbGxvdyBhbnkgY2FsbCB0byByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKSB0byBzdGFydCBl dmVudCB0aHJlYWQncyBwb2xsaW5nLAorKyAgICAgICAgICogbm90IG9ubHkgdGhlIG9uZSBpc3N1 ZWQgZnJvbSBldmVudCB0aHJlYWQncyB3YWl0Rm9yUmVhZGluZygpLCB3aGljaCBtZWFucyBmdW5j dGlvbnMKKysgICAgICAgICAqIGNhbGxlZCBmcm9tIGRpc3BhdGNoX3BlbmRpbmcoKSBjYW4gc2Fm ZWx5IHNwaW4gYW4gZXZlbnQgbG9vcC4KKysgICAgICAgICAqLworKyAgICAgICAgZm9yICg7Oykg eworKyAgICAgICAgICAgIGlmIChkaXNwYXRjaFF1ZXVlUGVuZGluZygpIDwgMCkgeworKyAgICAg ICAgICAgICAgICBjaGVja1dheWxhbmRFcnJvcihtX3dsZGlzcGxheSk7CisrICAgICAgICAgICAg ICAgIHJldHVybjsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgd2xfZGlzcGxheV9m bHVzaChtX3dsZGlzcGxheSk7CisrCisrICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBjaGVjayBp ZiBldmVudCB0aHJlYWQgaXMgcmVhZGluZyBldmVyeSB0aW1lIHdlIGRpc3BhdGNoCisrICAgICAg ICAgICAgLy8gc29tZXRoaW5nLCBhcyB0aGF0IG1heSByZWN1cnNpdmVseSBjYWxsIHRoaXMgZnVu Y3Rpb24uCisrICAgICAgICAgICAgaWYgKG1fcmVhZGluZy5sb2FkQWNxdWlyZSgpKQorKyAgICAg ICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgICAgICBpZiAocHJlcGFyZVJlYWRRdWV1ZSgp ID09IDApIHsKKysgICAgICAgICAgICAgICAgUU11dGV4TG9ja2VyIGwoJm1fbXV0ZXgpOworKyAg ICAgICAgICAgICAgICBtX3JlYWRpbmcuc3RvcmVSZWxlYXNlKHRydWUpOworKyAgICAgICAgICAg ICAgICBtX2NvbmQud2FrZU9uZSgpOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAg ICAgICB9CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgdm9pZCBzdG9wKCkKKysgICAgewor KyAgICAgICAgLy8gV2UgaGF2ZSB0byBib3RoIHdyaXRlIHRvIHRoZSBwaXBlIGFuZCBzZXQgdGhl IGZsYWcsIGFzIHRoZSB0aHJlYWQgbWF5IGJlCisrICAgICAgICAvLyBlaXRoZXIgaW4gdGhlIHBv bGwoKSBvciB3YWl0aW5nIGZvciBfcHJlcGFyZV9yZWFkKCkuCisrICAgICAgICBpZiAobV9waXBl ZmRbMV0gIT0gLTEgJiYgd3JpdGUobV9waXBlZmRbMV0sICJcMCIsIDEpID09IC0xKQorKyAgICAg ICAgICAgIHFXYXJuaW5nKCJGYWlsZWQgdG8gd3JpdGUgdG8gdGhlIHBpcGU6ICVzLiIsIHN0cmVy cm9yKGVycm5vKSk7CisrCisrICAgICAgICB7CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGwo Jm1fbXV0ZXgpOworKyAgICAgICAgICAgIG1fcXVpdHRpbmcgPSB0cnVlOworKyAgICAgICAgICAg IG1fY29uZC53YWtlT25lKCk7CisrICAgICAgICB9CisrCisrICAgICAgICB3YWl0KCk7CisrICAg IH0KKysKKytRX1NJR05BTFM6CisrICAgIHZvaWQgbmVlZFJlYWRBbmREaXNwYXRjaCgpOworKwor K3Byb3RlY3RlZDoKKysgICAgdm9pZCBydW4oKSBvdmVycmlkZQorKyAgICB7CisrICAgICAgICAv LyB3ZSB1c2UgdGhpcyBwaXBlIHRvIG1ha2UgdGhlIGxvb3AgZXhpdCBvdGhlcndpc2UgaWYgd2Ug c2ltcGx5IHVzZWQgYSBmbGFnIG9uIHRoZSBsb29wIGNvbmRpdGlvbiwgaWYgc3RvcCgpIGdldHMK KysgICAgICAgIC8vIGNhbGxlZCB3aGlsZSBwb2xsKCkgaXMgYmxvY2tpbmcgdGhlIHRocmVhZCB3 aWxsIG5ldmVyIHF1aXQgc2luY2UgdGhlcmUgYXJlIG5vIHdheWxhbmQgbWVzc2FnZXMgY29taW5n IGFueW1vcmUuCisrICAgICAgICBzdHJ1Y3QgUGlwZQorKyAgICAgICAgeworKyAgICAgICAgICAg IFBpcGUoaW50ICpmZHMpCisrICAgICAgICAgICAgICAgIDogZmRzKGZkcykKKysgICAgICAgICAg ICB7CisrICAgICAgICAgICAgICAgIGlmIChxdF9zYWZlX3BpcGUoZmRzKSAhPSAwKQorKyAgICAg ICAgICAgICAgICAgICAgcVdhcm5pbmcoIlBpcGUgY3JlYXRpb24gZmFpbGVkLiBRdWl0dGluZyBt YXkgaGFuZy4iKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgflBpcGUoKQorKyAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgaWYgKGZkc1swXSAhPSAtMSkgeworKyAgICAgICAg ICAgICAgICAgICAgY2xvc2UoZmRzWzBdKTsKKysgICAgICAgICAgICAgICAgICAgIGNsb3NlKGZk c1sxXSk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrCisrICAgICAgICAg ICAgaW50ICpmZHM7CisrICAgICAgICB9IHBpcGUobV9waXBlZmQpOworKworKyAgICAgICAgLy8g TWFrZSB0aGUgbWFpbiB0aHJlYWQgY2FsbCB3bF9wcmVwYXJlX3JlYWQoKSwgZGlzcGF0Y2ggdGhl IHBlbmRpbmcgbWVzc2FnZXMgYW5kIGZsdXNoIHRoZQorKyAgICAgICAgLy8gb3V0Ym91bmQgb25l cy4gV2FpdCB1bnRpbCBpdCdzIGRvbmUgYmVmb3JlIHByb2NlZWRpbmcsIHVubGVzcyB3ZSdyZSB0 b2xkIHRvIHF1aXQuCisrICAgICAgICB3aGlsZSAod2FpdEZvclJlYWRpbmcoKSkgeworKyAgICAg ICAgICAgIHBvbGxmZCBmZHNbMl0gPSB7IHsgbV9mZCwgUE9MTElOLCAwIH0sIHsgbV9waXBlZmRb MF0sIFBPTExJTiwgMCB9IH07CisrICAgICAgICAgICAgcG9sbChmZHMsIDIsIC0xKTsKKysKKysg ICAgICAgICAgICBpZiAoZmRzWzFdLnJldmVudHMgJiBQT0xMSU4pIHsKKysgICAgICAgICAgICAg ICAgLy8gd2UgZG9uJ3QgcmVhbGx5IGNhcmUgdG8gcmVhZCB0aGUgYnl0ZSB0aGF0IHdhcyB3cml0 dGVuIGhlcmUgc2luY2Ugd2UncmUgY2xvc2luZyBkb3duCisrICAgICAgICAgICAgICAgIHdsX2Rp c3BsYXlfY2FuY2VsX3JlYWQobV93bGRpc3BsYXkpOworKyAgICAgICAgICAgICAgICBicmVhazsK KysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgaWYgKGZkc1swXS5yZXZlbnRzICYgUE9M TElOKQorKyAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKG1fd2xkaXNwbGF5 KTsKKysgICAgICAgICAgICAgICAgLy8gVGhlIHBvbGxsIHdhcyBzdWNjZXNmdWxsIGFuZCB0aGUg ZXZlbnQgdGhyZWFkIGRpZCB0aGUgd2xfZGlzcGxheV9yZWFkX2V2ZW50cygpLiBPbiB0aGUgbmV4 dCBpdGVyYXRpb24gb2YgdGhlIGxvb3AKKysgICAgICAgICAgICAgICAgLy8gdGhlIGV2ZW50IHNl bnQgdG8gdGhlIG1haW4gdGhyZWFkIHdpbGwgY2F1c2UgaXQgdG8gZGlzcGF0Y2ggdGhlIG1lc3Nh Z2VzIGp1c3QgcmVhZCwgdW5sZXNzIHRoZSBsb29wIGV4aXRzIGluIHdoaWNoCisrICAgICAgICAg ICAgICAgIC8vIGNhc2Ugd2UgZG9uJ3QgY2FyZSBhbnltb3JlIGFib3V0IHRoZW0uCisrICAgICAg ICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X2NhbmNlbF9yZWFkKG1fd2xk aXNwbGF5KTsKKysgICAgICAgIH0KKysgICAgfQorKworK3ByaXZhdGU6CisrICAgIGJvb2wgd2Fp dEZvclJlYWRpbmcoKQorKyAgICB7CisrICAgICAgICBRX0FTU0VSVChRVGhyZWFkOjpjdXJyZW50 VGhyZWFkKCkgPT0gdGhpcyk7CisrCisrICAgICAgICBtX3JlYWRpbmcuc3RvcmVSZWxlYXNlKGZh bHNlKTsKKysKKysgICAgICAgIGlmIChtX21vZGUgPT0gU2VsZkRpc3BhdGNoKSB7CisrICAgICAg ICAgICAgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCk7CisrICAgICAgICB9IGVsc2UgeworKyAgICAg ICAgICAgIFFfRU1JVCBuZWVkUmVhZEFuZERpc3BhdGNoKCk7CisrCisrICAgICAgICAgICAgUU11 dGV4TG9ja2VyIGxvY2soJm1fbXV0ZXgpOworKyAgICAgICAgICAgIC8vIG1fcmVhZGluZyBtaWdo dCBiZSBzZXQgZnJvbSBvdXIgZW1pdCBvciBzb21lIG90aGVyIGludm9jYXRpb24gb2YKKysgICAg ICAgICAgICAvLyByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKS4KKysgICAgICAgICAgICB3aGlsZSAo IW1fcmVhZGluZy5sb2FkUmVsYXhlZCgpICYmICFtX3F1aXR0aW5nKQorKyAgICAgICAgICAgICAg ICBtX2NvbmQud2FpdCgmbV9tdXRleCk7CisrICAgICAgICB9CisrCisrICAgICAgICByZXR1cm4g IW1fcXVpdHRpbmc7CisrICAgIH0KKysKKysgICAgaW50IGRpc3BhdGNoUXVldWVQZW5kaW5nKCkK KysgICAgeworKyAgICAgICAgaWYgKG1fd2xldnF1ZXVlKQorKyAgICAgICAgICAgIHJldHVybiB3 bF9kaXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobV93bGRpc3BsYXksIG1fd2xldnF1ZXVl KTsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICByZXR1cm4gd2xfZGlzcGxheV9kaXNwYXRj aF9wZW5kaW5nKG1fd2xkaXNwbGF5KTsKKysgICAgfQorKworKyAgICBpbnQgcHJlcGFyZVJlYWRR dWV1ZSgpCisrICAgIHsKKysgICAgICAgIGlmIChtX3dsZXZxdWV1ZSkKKysgICAgICAgICAgICBy ZXR1cm4gd2xfZGlzcGxheV9wcmVwYXJlX3JlYWRfcXVldWUobV93bGRpc3BsYXksIG1fd2xldnF1 ZXVlKTsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICByZXR1cm4gd2xfZGlzcGxheV9wcmVw YXJlX3JlYWQobV93bGRpc3BsYXkpOworKyAgICB9CisrCisrICAgIGludCBtX2ZkOworKyAgICBp bnQgbV9waXBlZmRbMl07CisrICAgIHdsX2Rpc3BsYXkgKm1fd2xkaXNwbGF5OworKyAgICB3bF9l dmVudF9xdWV1ZSAqbV93bGV2cXVldWU7CisrICAgIE9wZXJhdGluZ01vZGUgbV9tb2RlOworKwor KyAgICAvKiBDb25jdXJyZW5jeSBub3RlIHdoZW4gb3BlcmF0aW5nIGluIEVtaXRUb0Rpc3BhdGNo IG1vZGU6CisrICAgICAqIG1fcmVhZGluZyBpcyBzZXQgdG8gZmFsc2UgaW5zaWRlIGV2ZW50IHRo cmVhZCdzIHdhaXRGb3JSZWFkaW5nKCksIGFuZCBpcworKyAgICAgKiBzZXQgdG8gdHJ1ZSBpbnNp ZGUgbWFpbiB0aHJlYWQncyByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKS4KKysgICAgICogVGhlIGxv Y2sgaXMgbm90IHRha2VuIHdoZW4gc2V0dGluZyBtX3JlYWRpbmcgdG8gZmFsc2UsIGFzIHRoZSBt YWluIHRocmVhZAorKyAgICAgKiBpcyBub3QgYWN0aXZlbHkgd2FpdGluZyBmb3IgaXQgdG8gdHVy biBmYWxzZS4gSG93ZXZlciwgdGhlIGxvY2sgaXMgdGFrZW4KKysgICAgICogaW5zaWRlIHJlYWRB bmREaXNwYXRjaEV2ZW50cygpIGJlZm9yZSBzZXR0aW5nIG1fcmVhZGluZyB0byB0cnVlLAorKyAg ICAgKiBhcyB0aGUgZXZlbnQgdGhyZWFkIGlzIGFjdGl2ZWx5IHdhaXRpbmcgZm9yIGl0IHVuZGVy IHRoZSB3YWl0IGNvbmRpdGlvbi4KKysgICAgICovCisrCisrICAgIFFBdG9taWNJbnRlZ2VyPGJv b2w+IG1fcmVhZGluZzsKKysgICAgYm9vbCBtX3F1aXR0aW5nOworKyAgICBRTXV0ZXggbV9tdXRl eDsKKysgICAgUVdhaXRDb25kaXRpb24gbV9jb25kOworK307CisrCisgUV9MT0dHSU5HX0NBVEVH T1JZKGxjUXBhV2F5bGFuZCwgInF0LnFwYS53YXlsYW5kIik7IC8vIGZvciBnZW5lcmFsICh1bmNh dGVnb3JpemVkKSBXYXlsYW5kIHBsYXRmb3JtIGxvZ2dpbmcKKyAKKyBzdHJ1Y3Qgd2xfc3VyZmFj ZSAqUVdheWxhbmREaXNwbGF5OjpjcmVhdGVTdXJmYWNlKHZvaWQgKmhhbmRsZSkKK0BAIC0xNTgs MTcgKzM1MSwxNiBAQCBRV2F5bGFuZERpc3BsYXk6OlFXYXlsYW5kRGlzcGxheShRV2F5bGFuZElu dGVncmF0aW9uICp3YXlsYW5kSW50ZWdyYXRpb24pCisgICAgIGlmICghbVhrYkNvbnRleHQpCisg ICAgICAgICBxQ1dhcm5pbmcobGNRcGFXYXlsYW5kLCAiZmFpbGVkIHRvIGNyZWF0ZSB4a2IgY29u dGV4dCIpOworICNlbmRpZgorLQorLSAgICBmb3JjZVJvdW5kVHJpcCgpOworLQorLSAgICBpZiAo IW1XYWl0aW5nU2NyZWVucy5pc0VtcHR5KCkpIHsKKy0gICAgICAgIC8vIEdpdmUgd2xfb3V0cHV0 LmRvbmUgYW5kIHp4ZGdfb3V0cHV0X3YxLmRvbmUgZXZlbnRzIGEgY2hhbmNlIHRvIGFycml2ZQor LSAgICAgICAgZm9yY2VSb3VuZFRyaXAoKTsKKy0gICAgfQorIH0KKyAKKyBRV2F5bGFuZERpc3Bs YXk6On5RV2F5bGFuZERpc3BsYXkodm9pZCkKKyB7CisrICAgIGlmIChtX2V2ZW50VGhyZWFkKQor KyAgICAgICAgbV9ldmVudFRocmVhZC0+c3RvcCgpOworKworKyAgICBpZiAobV9mcmFtZUV2ZW50 UXVldWVUaHJlYWQpCisrICAgICAgICBtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZC0+c3RvcCgpOwor KworICAgICBpZiAobVN5bmNDYWxsYmFjaykKKyAgICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3ko bVN5bmNDYWxsYmFjayk7CisgCitAQCAtMTg3LDYgKzM3OSwyMSBAQCBRV2F5bGFuZERpc3BsYXk6 On5RV2F5bGFuZERpc3BsYXkodm9pZCkKKyAjZW5kaWYKKyAgICAgaWYgKG1EaXNwbGF5KQorICAg ICAgICAgd2xfZGlzcGxheV9kaXNjb25uZWN0KG1EaXNwbGF5KTsKKysKKysgICAgaWYgKG1fZnJh bWVFdmVudFF1ZXVlKQorKyAgICAgICAgd2xfZXZlbnRfcXVldWVfZGVzdHJveShtX2ZyYW1lRXZl bnRRdWV1ZSk7CisrfQorKworKy8vIFN0ZXBzIHdoaWNoIGlzIGNhbGxlZCBqdXN0IGFmdGVyIGNv bnN0cnVjdG9yLiBUaGlzIHNlcGFyYXRlcyByZWdpc3RyeV9nbG9iYWwoKSBvdXQgb2YgdGhlIGNv bnN0cnVjdG9yCisrLy8gc28gdGhhdCBmYWN0b3J5IGZ1bmN0aW9ucyBpbiBpbnRlZ3JhdGlvbiBj YW4gYmUgb3ZlcnJpZGRlbi4KKyt2b2lkIFFXYXlsYW5kRGlzcGxheTo6aW5pdGlhbGl6ZSgpCisr eworKyAgICBmb3JjZVJvdW5kVHJpcCgpOworKworKyAgICBpZiAoIW1XYWl0aW5nU2NyZWVucy5p c0VtcHR5KCkpIHsKKysgICAgICAgIC8vIEdpdmUgd2xfb3V0cHV0LmRvbmUgYW5kIHp4ZGdfb3V0 cHV0X3YxLmRvbmUgZXZlbnRzIGEgY2hhbmNlIHRvIGFycml2ZQorKyAgICAgICAgZm9yY2VSb3Vu ZFRyaXAoKTsKKysgICAgfQorIH0KKyAKKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6ZW5zdXJlU2Ny ZWVuKCkKK0BAIC0yMDMsOTggKzQxMCwzNyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6ZW5zdXJl U2NyZWVuKCkKKyAKKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6Y2hlY2tFcnJvcigpIGNvbnN0Cisg eworLSAgICBpbnQgZWNvZGUgPSB3bF9kaXNwbGF5X2dldF9lcnJvcihtRGlzcGxheSk7CistICAg IGlmICgoZWNvZGUgPT0gRVBJUEUgfHwgZWNvZGUgPT0gRUNPTk5SRVNFVCkpIHsKKy0gICAgICAg IC8vIHNwZWNpYWwgY2FzZSB0aGlzIHRvIHByb3ZpZGUgYSBuaWNlciBlcnJvcgorLSAgICAgICAg cVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gYnJva2UuIERpZCB0aGUgV2F5bGFuZCBj b21wb3NpdG9yIGRpZT8iKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIHFXYXJuaW5nKCJUaGUg V2F5bGFuZCBjb25uZWN0aW9uIGV4cGVyaWVuY2VkIGEgZmF0YWwgZXJyb3I6ICVzIiwgc3RyZXJy b3IoZWNvZGUpKTsKKy0gICAgfQorLSAgICBfZXhpdCgxKTsKKysgICAgY2hlY2tXYXlsYW5kRXJy b3IobURpc3BsYXkpOworIH0KKyAKKysvLyBDYWxsZWQgaW4gbWFpbiB0aHJlYWQsIGVpdGhlciBm cm9tIHF1ZXVlZCBzaWduYWwgb3IgZGlyZWN0bHkuCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmZs dXNoUmVxdWVzdHMoKQorIHsKKy0gICAgaWYgKHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkKG1EaXNw bGF5KSA9PSAwKSB7CistICAgICAgICB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKG1EaXNwbGF5KTsK Ky0gICAgfQorLQorLSAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaF9wZW5kaW5nKG1EaXNwbGF5 KSA8IDApCistICAgICAgICBjaGVja0Vycm9yKCk7CistCistICAgIHsKKy0gICAgICAgIFFSZWFk TG9ja2VyIGxvY2tlcigmbV9mcmFtZVF1ZXVlTG9jayk7CistICAgICAgICBmb3IgKGNvbnN0IEZy YW1lUXVldWUgJnEgOiBtRXh0ZXJuYWxRdWV1ZXMpIHsKKy0gICAgICAgICAgICBRTXV0ZXhMb2Nr ZXIgbG9ja2VyKHEubXV0ZXgpOworLSAgICAgICAgICAgIHdoaWxlICh3bF9kaXNwbGF5X3ByZXBh cmVfcmVhZF9xdWV1ZShtRGlzcGxheSwgcS5xdWV1ZSkgIT0gMCkKKy0gICAgICAgICAgICAgICAg d2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxLnF1ZXVlKTsKKy0g ICAgICAgICAgICB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKG1EaXNwbGF5KTsKKy0gICAgICAgICAg ICB3bF9kaXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHEucXVldWUpOwor LSAgICAgICAgfQorLSAgICB9CistCistICAgIHdsX2Rpc3BsYXlfZmx1c2gobURpc3BsYXkpOwor LX0KKy0KKy12b2lkIFFXYXlsYW5kRGlzcGxheTo6YmxvY2tpbmdSZWFkRXZlbnRzKCkKKy17Cist ICAgIGlmICh3bF9kaXNwbGF5X2Rpc3BhdGNoKG1EaXNwbGF5KSA8IDApCistICAgICAgICBjaGVj a0Vycm9yKCk7CistfQorLQorLXZvaWQgUVdheWxhbmREaXNwbGF5OjpkZXN0cm95RnJhbWVRdWV1 ZShjb25zdCBRV2F5bGFuZERpc3BsYXk6OkZyYW1lUXVldWUgJnEpCisteworLSAgICBRV3JpdGVM b2NrZXIgbG9ja2VyKCZtX2ZyYW1lUXVldWVMb2NrKTsKKy0gICAgYXV0byBpdCA9IHN0ZDo6Zmlu ZF9pZihtRXh0ZXJuYWxRdWV1ZXMuYmVnaW4oKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICBtRXh0ZXJuYWxRdWV1ZXMuZW5kKCksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgWyZx XSAoY29uc3QgUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlICZvdGhlcil7IHJldHVybiBvdGhl ci5xdWV1ZSA9PSBxLnF1ZXVlOyB9KTsKKy0gICAgUV9BU1NFUlQoaXQgIT0gbUV4dGVybmFsUXVl dWVzLmVuZCgpKTsKKy0gICAgbUV4dGVybmFsUXVldWVzLmVyYXNlKGl0KTsKKy0gICAgaWYgKHEu cXVldWUgIT0gbnVsbHB0cikKKy0gICAgICAgIHdsX2V2ZW50X3F1ZXVlX2Rlc3Ryb3kocS5xdWV1 ZSk7CistICAgIGRlbGV0ZSBxLm11dGV4OworKyAgICBtX2V2ZW50VGhyZWFkLT5yZWFkQW5kRGlz cGF0Y2hFdmVudHMoKTsKKyB9CisgCistUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlIFFXYXls YW5kRGlzcGxheTo6Y3JlYXRlRnJhbWVRdWV1ZSgpCisrLy8gV2UgaGF2ZSB0byB3YWl0IHVudGls IHdlIGhhdmUgYW4gZXZlbnREaXNwYXRjaGVyIGJlZm9yZSBjcmVhdGluZyB0aGUgZXZlbnRUaHJl YWQsCisrLy8gb3RoZXJ3aXNlIGZvcmNlUm91bmRUcmlwKCkgbWF5IGJsb2NrIGluc2lkZSBfZXZl bnRzX3JlYWQoKSBiZWNhdXNlIGV2ZW50VGhyZWFkIGlzCisrLy8gcG9sbGluZy4KKyt2b2lkIFFX YXlsYW5kRGlzcGxheTo6aW5pdEV2ZW50VGhyZWFkKCkKKyB7CistICAgIFFXcml0ZUxvY2tlciBs b2NrZXIoJm1fZnJhbWVRdWV1ZUxvY2spOworLSAgICBGcmFtZVF1ZXVlIHF7Y3JlYXRlRXZlbnRR dWV1ZSgpfTsKKy0gICAgbUV4dGVybmFsUXVldWVzLmFwcGVuZChxKTsKKy0gICAgcmV0dXJuIHE7 CistfQorKyAgICBtX2V2ZW50VGhyZWFkLnJlc2V0KAorKyAgICAgICAgICAgIG5ldyBFdmVudFRo cmVhZChtRGlzcGxheSwgLyogZGVmYXVsdCBxdWV1ZSAqLyBudWxscHRyLCBFdmVudFRocmVhZDo6 RW1pdFRvRGlzcGF0Y2gpKTsKKysgICAgY29ubmVjdChtX2V2ZW50VGhyZWFkLmdldCgpLCAmRXZl bnRUaHJlYWQ6Om5lZWRSZWFkQW5kRGlzcGF0Y2gsIHRoaXMsCisrICAgICAgICAgICAgJlFXYXls YW5kRGlzcGxheTo6Zmx1c2hSZXF1ZXN0cywgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworKyAgICBt X2V2ZW50VGhyZWFkLT5zdGFydCgpOworIAorLXdsX2V2ZW50X3F1ZXVlICpRV2F5bGFuZERpc3Bs YXk6OmNyZWF0ZUV2ZW50UXVldWUoKQorLXsKKy0gICAgcmV0dXJuIHdsX2Rpc3BsYXlfY3JlYXRl X3F1ZXVlKG1EaXNwbGF5KTsKKysgICAgLy8gd2xfZGlzcGxheV9kaXNjb25uZWN0KCkgZnJlZSB0 aGlzLgorKyAgICBtX2ZyYW1lRXZlbnRRdWV1ZSA9IHdsX2Rpc3BsYXlfY3JlYXRlX3F1ZXVlKG1E aXNwbGF5KTsKKysgICAgbV9mcmFtZUV2ZW50UXVldWVUaHJlYWQucmVzZXQoCisrICAgICAgICAg ICAgbmV3IEV2ZW50VGhyZWFkKG1EaXNwbGF5LCBtX2ZyYW1lRXZlbnRRdWV1ZSwgRXZlbnRUaHJl YWQ6OlNlbGZEaXNwYXRjaCkpOworKyAgICBtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZC0+c3RhcnQo KTsKKyB9CisgCistdm9pZCBRV2F5bGFuZERpc3BsYXk6OmRpc3BhdGNoUXVldWVXaGlsZSh3bF9l dmVudF9xdWV1ZSAqcXVldWUsIHN0ZDo6ZnVuY3Rpb248Ym9vbCAoKT4gY29uZGl0aW9uLCBpbnQg dGltZW91dCkKKyt2b2lkIFFXYXlsYW5kRGlzcGxheTo6YmxvY2tpbmdSZWFkRXZlbnRzKCkKKyB7 CistICAgIGlmICghY29uZGl0aW9uKCkpCistICAgICAgICByZXR1cm47CistCistICAgIFFFbGFw c2VkVGltZXIgdGltZXI7CistICAgIHRpbWVyLnN0YXJ0KCk7CistICAgIHN0cnVjdCBwb2xsZmQg cEZkID0gcXRfbWFrZV9wb2xsZmQod2xfZGlzcGxheV9nZXRfZmQobURpc3BsYXkpLCBQT0xMSU4p OworLSAgICB3aGlsZSAodGltZW91dCA9PSAtMSB8fCB0aW1lci5lbGFwc2VkKCkgPCB0aW1lb3V0 KSB7CistICAgICAgICB3aGlsZSAod2xfZGlzcGxheV9wcmVwYXJlX3JlYWRfcXVldWUobURpc3Bs YXksIHF1ZXVlKSAhPSAwKQorLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVf cGVuZGluZyhtRGlzcGxheSwgcXVldWUpOworLQorLSAgICAgICAgd2xfZGlzcGxheV9mbHVzaCht RGlzcGxheSk7CistCistICAgICAgICBjb25zdCBpbnQgcmVtYWluaW5nID0gcU1heCh0aW1lb3V0 IC0gdGltZXIuZWxhcHNlZCgpLCAwbGwpOworLSAgICAgICAgY29uc3QgaW50IHBvbGxUaW1lb3V0 ID0gdGltZW91dCA9PSAtMSA/IC0xIDogcmVtYWluaW5nOworLSAgICAgICAgaWYgKHF0X3BvbGxf bXNlY3MoJnBGZCwgMSwgcG9sbFRpbWVvdXQpID4gMCkKKy0gICAgICAgICAgICB3bF9kaXNwbGF5 X3JlYWRfZXZlbnRzKG1EaXNwbGF5KTsKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgICB3bF9k aXNwbGF5X2NhbmNlbF9yZWFkKG1EaXNwbGF5KTsKKy0KKy0gICAgICAgIGlmICh3bF9kaXNwbGF5 X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHF1ZXVlKSA8IDApCistICAgICAgICAg ICAgY2hlY2tFcnJvcigpOworLQorLSAgICAgICAgaWYgKCFjb25kaXRpb24oKSkKKy0gICAgICAg ICAgICBicmVhazsKKy0gICAgfQorKyAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaChtRGlzcGxh eSkgPCAwKQorKyAgICAgICAgY2hlY2tXYXlsYW5kRXJyb3IobURpc3BsYXkpOworIH0KKyAKKyBR V2F5bGFuZFNjcmVlbiAqUVdheWxhbmREaXNwbGF5OjpzY3JlZW5Gb3JPdXRwdXQoc3RydWN0IHds X291dHB1dCAqb3V0cHV0KSBjb25zdAorQEAgLTM0NSw3ICs0OTEsNyBAQCB2b2lkIFFXYXlsYW5k RGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsKHVpbnQzMl90IGlkLCBjb25zdCBRU3RyaW5nICZpbnRl cmZhY2UsIHVpbgorICAgICBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9vdXRw dXQiKSkgeworICAgICAgICAgbVdhaXRpbmdTY3JlZW5zIDw8IG5ldyBRV2F5bGFuZFNjcmVlbih0 aGlzLCB2ZXJzaW9uLCBpZCk7CisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdM aXRlcmFsKCJ3bF9jb21wb3NpdG9yIikpIHsKKy0gICAgICAgIG1Db21wb3NpdG9yVmVyc2lvbiA9 IHFNaW4oKGludCl2ZXJzaW9uLCAzKTsKKysgICAgICAgIG1Db21wb3NpdG9yVmVyc2lvbiA9IHFN aW4oKGludCl2ZXJzaW9uLCA0KTsKKyAgICAgICAgIG1Db21wb3NpdG9yLmluaXQocmVnaXN0cnks IGlkLCBtQ29tcG9zaXRvclZlcnNpb24pOworICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBR U3RyaW5nTGl0ZXJhbCgid2xfc2htIikpIHsKKyAgICAgICAgIG1TaG0ucmVzZXQobmV3IFFXYXls YW5kU2htKHRoaXMsIHZlcnNpb24sIGlkKSk7CitAQCAtMzU0LDcgKzUwMCw3IEBAIHZvaWQgUVdh eWxhbmREaXNwbGF5OjpyZWdpc3RyeV9nbG9iYWwodWludDMyX3QgaWQsIGNvbnN0IFFTdHJpbmcg JmludGVyZmFjZSwgdWluCisgICAgICAgICBtSW5wdXREZXZpY2VzLmFwcGVuZChpbnB1dERldmlj ZSk7CisgI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2RhdGFkZXZpY2UpCisgICAgIH0gZWxzZSBpZiAo aW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9kYXRhX2RldmljZV9tYW5hZ2VyIikpIHsK Ky0gICAgICAgIG1EbmRTZWxlY3Rpb25IYW5kbGVyLnJlc2V0KG5ldyBRV2F5bGFuZERhdGFEZXZp Y2VNYW5hZ2VyKHRoaXMsIGlkKSk7CisrICAgICAgICBtRG5kU2VsZWN0aW9uSGFuZGxlci5yZXNl dChuZXcgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcih0aGlzLCB2ZXJzaW9uLCBpZCkpOworICNl bmRpZgorICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgicXRfc3Vy ZmFjZV9leHRlbnNpb24iKSkgeworICAgICAgICAgbVdpbmRvd0V4dGVuc2lvbi5yZXNldChuZXcg UXRXYXlsYW5kOjpxdF9zdXJmYWNlX2V4dGVuc2lvbihyZWdpc3RyeSwgaWQsIDEpKTsKK0BAIC0z NjksNiArNTE1LDggQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbCh1aW50 MzJfdCBpZCwgY29uc3QgUVN0cmluZyAmaW50ZXJmYWNlLCB1aW4KKyAjaWYgUVRfQ09ORklHKHdh eWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorICAgICB9IGVsc2UgaWYgKGludGVyZmFj ZSA9PSBRU3RyaW5nTGl0ZXJhbCgiendwX3ByaW1hcnlfc2VsZWN0aW9uX2RldmljZV9tYW5hZ2Vy X3YxIikpIHsKKyAgICAgICAgIG1QcmltYXJ5U2VsZWN0aW9uTWFuYWdlci5yZXNldChuZXcgUVdh eWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxKHRoaXMsIGlkLCAxKSk7CisrICAg ICAgICBmb3IgKFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWNlIDogcUFzQ29uc3QobUlu cHV0RGV2aWNlcykpCisrICAgICAgICAgICAgaW5wdXREZXZpY2UtPnNldFByaW1hcnlTZWxlY3Rp b25EZXZpY2UobVByaW1hcnlTZWxlY3Rpb25NYW5hZ2VyLT5jcmVhdGVEZXZpY2UoaW5wdXREZXZp Y2UpKTsKKyAjZW5kaWYKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVy YWwoInp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjIiKSAmJiAhbUNsaWVudFNpZGVJbnB1dENvbnRl eHRSZXF1ZXN0ZWQpIHsKKyAgICAgICAgIG1UZXh0SW5wdXRNYW5hZ2VyLnJlc2V0KG5ldyBRdFdh eWxhbmQ6Onp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjIocmVnaXN0cnksIGlkLCAxKSk7CitAQCAt NDI3LDYgKzU3NSwxMyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsX3Jl bW92ZSh1aW50MzJfdCBpZCkKKyAgICAgICAgICAgICAgICAgICAgIGlucHV0RGV2aWNlLT5zZXRU ZXh0SW5wdXQobnVsbHB0cik7CisgICAgICAgICAgICAgICAgIG1XYXlsYW5kSW50ZWdyYXRpb24t PnJlY29uZmlndXJlSW5wdXRDb250ZXh0KCk7CisgICAgICAgICAgICAgfQorKyNpZiBRVF9DT05G SUcod2F5bGFuZF9jbGllbnRfcHJpbWFyeV9zZWxlY3Rpb24pCisrICAgICAgICAgICAgaWYgKGds b2JhbC5pbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInp3cF9wcmltYXJ5X3NlbGVjdGlvbl9k ZXZpY2VfbWFuYWdlcl92MSIpKSB7CisrICAgICAgICAgICAgICAgIG1QcmltYXJ5U2VsZWN0aW9u TWFuYWdlci5yZXNldCgpOworKyAgICAgICAgICAgICAgICBmb3IgKFFXYXlsYW5kSW5wdXREZXZp Y2UgKmlucHV0RGV2aWNlIDogcUFzQ29uc3QobUlucHV0RGV2aWNlcykpCisrICAgICAgICAgICAg ICAgICAgICBpbnB1dERldmljZS0+c2V0UHJpbWFyeVNlbGVjdGlvbkRldmljZShudWxscHRyKTsK KysgICAgICAgICAgICB9CisrI2VuZGlmCisgICAgICAgICAgICAgbUdsb2JhbHMucmVtb3ZlQXQo aSk7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitAQCAtNDUyLDkgKzYwNywxMCBA QCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6YWRkUmVnaXN0cnlMaXN0ZW5lcihSZWdpc3RyeUxpc3Rl bmVyIGxpc3RlbmVyLCB2b2lkICpkYXRhKQorIAorIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZW1v dmVMaXN0ZW5lcihSZWdpc3RyeUxpc3RlbmVyIGxpc3RlbmVyLCB2b2lkICpkYXRhKQorIHsKKy0g ICAgc3RkOjpyZW1vdmVfaWYobVJlZ2lzdHJ5TGlzdGVuZXJzLmJlZ2luKCksIG1SZWdpc3RyeUxp c3RlbmVycy5lbmQoKSwgWz1dKExpc3RlbmVyIGwpeworKyAgICBhdXRvIGl0ZXIgPSBzdGQ6OnJl bW92ZV9pZihtUmVnaXN0cnlMaXN0ZW5lcnMuYmVnaW4oKSwgbVJlZ2lzdHJ5TGlzdGVuZXJzLmVu ZCgpLCBbPV0oTGlzdGVuZXIgbCl7CisgICAgICAgICByZXR1cm4gKGwubGlzdGVuZXIgPT0gbGlz dGVuZXIgJiYgbC5kYXRhID09IGRhdGEpOworICAgICB9KTsKKysgICAgbVJlZ2lzdHJ5TGlzdGVu ZXJzLmVyYXNlKGl0ZXIsIG1SZWdpc3RyeUxpc3RlbmVycy5lbmQoKSk7CisgfQorIAorIHVpbnQz Ml90IFFXYXlsYW5kRGlzcGxheTo6Y3VycmVudFRpbWVNaWxsaXNlYygpCitAQCAtNDY3LDUwICs2 MjMsOSBAQCB1aW50MzJfdCBRV2F5bGFuZERpc3BsYXk6OmN1cnJlbnRUaW1lTWlsbGlzZWMoKQor ICAgICByZXR1cm4gMDsKKyB9CisgCistc3RhdGljIHZvaWQKKy1zeW5jX2NhbGxiYWNrKHZvaWQg KmRhdGEsIHN0cnVjdCB3bF9jYWxsYmFjayAqY2FsbGJhY2ssIHVpbnQzMl90IHNlcmlhbCkKKy17 CistICAgIFFfVU5VU0VEKHNlcmlhbCkKKy0gICAgYm9vbCAqZG9uZSA9IHN0YXRpY19jYXN0PGJv b2wgKj4oZGF0YSk7CistCistICAgICpkb25lID0gdHJ1ZTsKKy0KKy0gICAgLy8gSWYgdGhlIHds X2NhbGxiYWNrIGRvbmUgZXZlbnQgaXMgcmVjZWl2ZWQgYWZ0ZXIgdGhlIGNvbmRpdGlvbiBjaGVj ayBpbiB0aGUgd2hpbGUgbG9vcCBpbgorLSAgICAvLyBmb3JjZVJvdW5kVHJpcCgpLCBidXQgYmVm b3JlIHRoZSBjYWxsIHRvIHByb2Nlc3NFdmVudHMsIHRoZSBjYWxsIHRvIHByb2Nlc3NFdmVudHMg bWF5IGJsb2NrCistICAgIC8vIGZvcmV2ZXIgaWYgbm8gbW9yZSBldmVudHMgYXJlIHBvc3RlZCAo ZXZlbnRob3VnaCB0aGUgY2FsbGJhY2sgaXMgaGFuZGxlZCBpbiByZXNwb25zZSB0byB0aGUKKy0g ICAgLy8gYWJvdXRUb0Jsb2NrIHNpZ25hbCkuIEhlbmNlLCB3ZSB3YWtlIHVwIHRoZSBldmVudCBk aXNwYXRjaGVyIHNvIGZvcmNlUm91bmRUcmlwIG1heSByZXR1cm4uCistICAgIC8vIChRVEJVRy02 NDY5NikKKy0gICAgaWYgKGF1dG8gKmRpc3BhdGNoZXIgPSBRVGhyZWFkOjpjdXJyZW50VGhyZWFk KCktPmV2ZW50RGlzcGF0Y2hlcigpKQorLSAgICAgICAgZGlzcGF0Y2hlci0+d2FrZVVwKCk7Cist CistICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJhY2spOworLX0KKy0KKy1zdGF0aWMgY29u c3Qgc3RydWN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIHN5bmNfbGlzdGVuZXIgPSB7CistICAgIHN5 bmNfY2FsbGJhY2sKKy19OworLQorIHZvaWQgUVdheWxhbmREaXNwbGF5Ojpmb3JjZVJvdW5kVHJp cCgpCisgeworLSAgICAvLyB3bF9kaXNwbGF5X3JvdW5kdHJpcCgpIHdvcmtzIG9uIHRoZSBtYWlu IHF1ZXVlIG9ubHksCistICAgIC8vIGJ1dCB3ZSB1c2UgYSBzZXBhcmF0ZSBvbmUsIHNvIGJhc2lj YWxseSByZWltcGxlbWVudCBpdCBoZXJlCistICAgIGludCByZXQgPSAwOworLSAgICBib29sIGRv bmUgPSBmYWxzZTsKKy0gICAgd2xfY2FsbGJhY2sgKmNhbGxiYWNrID0gd2xfZGlzcGxheV9zeW5j KG1EaXNwbGF5KTsKKy0gICAgd2xfY2FsbGJhY2tfYWRkX2xpc3RlbmVyKGNhbGxiYWNrLCAmc3lu Y19saXN0ZW5lciwgJmRvbmUpOworLSAgICBmbHVzaFJlcXVlc3RzKCk7CistICAgIGlmIChRVGhy ZWFkOjpjdXJyZW50VGhyZWFkKCktPmV2ZW50RGlzcGF0Y2hlcigpKSB7CistICAgICAgICB3aGls ZSAoIWRvbmUgJiYgcmV0ID49IDApIHsKKy0gICAgICAgICAgICBRVGhyZWFkOjpjdXJyZW50VGhy ZWFkKCktPmV2ZW50RGlzcGF0Y2hlcigpLT5wcm9jZXNzRXZlbnRzKFFFdmVudExvb3A6OldhaXRG b3JNb3JlRXZlbnRzKTsKKy0gICAgICAgICAgICByZXQgPSB3bF9kaXNwbGF5X2Rpc3BhdGNoX3Bl bmRpbmcobURpc3BsYXkpOworLSAgICAgICAgfQorLSAgICB9IGVsc2UgeworLSAgICAgICAgd2hp bGUgKCFkb25lICYmIHJldCA+PSAwKQorLSAgICAgICAgICAgIHJldCA9IHdsX2Rpc3BsYXlfZGlz cGF0Y2gobURpc3BsYXkpOworLSAgICB9CistCistICAgIGlmIChyZXQgPT0gLTEgJiYgIWRvbmUp CistICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsKKysgICAgIHdsX2Rpc3Bs YXlfcm91bmR0cmlwKG1EaXNwbGF5KTsKKyB9CisgCisgYm9vbCBRV2F5bGFuZERpc3BsYXk6OnN1 cHBvcnRzV2luZG93RGVjb3JhdGlvbigpIGNvbnN0CitAQCAtNTc0LDE0ICs2ODksMTAgQEAgdm9p ZCBRV2F5bGFuZERpc3BsYXk6OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kSW5w dXREZXZpY2UgKmlucHV0RGV2aWMKKyAgICAgaWYgKG1MYXN0S2V5Ym9hcmRGb2N1cyA9PSBrZXli b2FyZEZvY3VzKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBpZiAobVdheWxhbmRJbnRlZ3Jh dGlvbi0+bVNoZWxsSW50ZWdyYXRpb24pIHsKKy0gICAgICAgIG1XYXlsYW5kSW50ZWdyYXRpb24t Pm1TaGVsbEludGVncmF0aW9uLT5oYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChrZXlib2FyZEZv Y3VzLCBtTGFzdEtleWJvYXJkRm9jdXMpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgaWYgKGtl eWJvYXJkRm9jdXMpCistICAgICAgICAgICAgaGFuZGxlV2luZG93QWN0aXZhdGVkKGtleWJvYXJk Rm9jdXMpOworLSAgICAgICAgaWYgKG1MYXN0S2V5Ym9hcmRGb2N1cykKKy0gICAgICAgICAgICBo YW5kbGVXaW5kb3dEZWFjdGl2YXRlZChtTGFzdEtleWJvYXJkRm9jdXMpOworLSAgICB9CisrICAg IGlmIChrZXlib2FyZEZvY3VzKQorKyAgICAgICAgaGFuZGxlV2luZG93QWN0aXZhdGVkKGtleWJv YXJkRm9jdXMpOworKyAgICBpZiAobUxhc3RLZXlib2FyZEZvY3VzKQorKyAgICAgICAgaGFuZGxl V2luZG93RGVhY3RpdmF0ZWQobUxhc3RLZXlib2FyZEZvY3VzKTsKKyAKKyAgICAgbUxhc3RLZXli b2FyZEZvY3VzID0ga2V5Ym9hcmRGb2N1czsKKyB9CitAQCAtNjAwLDYgKzcxMSwxOSBAQCB2b2lk IFFXYXlsYW5kRGlzcGxheTo6aGFuZGxlV2F5bGFuZFN5bmMoKQorICAgICBRV2luZG93ICphY3Rp dmVXaW5kb3cgPSBtQWN0aXZlV2luZG93cy5lbXB0eSgpID8gbnVsbHB0ciA6IG1BY3RpdmVXaW5k b3dzLmxhc3QoKS0+d2luZG93KCk7CisgICAgIGlmIChhY3RpdmVXaW5kb3cgIT0gUUd1aUFwcGxp Y2F0aW9uOjpmb2N1c1dpbmRvdygpKQorICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6 aGFuZGxlV2luZG93QWN0aXZhdGVkKGFjdGl2ZVdpbmRvdyk7CisrCisrICAgIGlmICghYWN0aXZl V2luZG93KSB7CisrICAgICAgICBpZiAobGFzdElucHV0RGV2aWNlKCkpIHsKKysjaWYgUVRfQ09O RklHKGNsaXBib2FyZCkKKysgICAgICAgICAgICBpZiAoYXV0byAqZGF0YURldmljZSA9IGxhc3RJ bnB1dERldmljZSgpLT5kYXRhRGV2aWNlKCkpCisrICAgICAgICAgICAgICAgIGRhdGFEZXZpY2Ut PmludmFsaWRhdGVTZWxlY3Rpb25PZmZlcigpOworKyNlbmRpZgorKyNpZiBRVF9DT05GSUcod2F5 bGFuZF9jbGllbnRfcHJpbWFyeV9zZWxlY3Rpb24pCisrICAgICAgICAgICAgaWYgKGF1dG8gKmRl dmljZSA9IGxhc3RJbnB1dERldmljZSgpLT5wcmltYXJ5U2VsZWN0aW9uRGV2aWNlKCkpCisrICAg ICAgICAgICAgICAgIGRldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7CisrI2VuZGlm CisrICAgICAgICB9CisrICAgIH0KKyB9CisgCisgY29uc3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIg UVdheWxhbmREaXNwbGF5OjpzeW5jQ2FsbGJhY2tMaXN0ZW5lciA9IHsKK0BAIC02MjYsNiArNzUw LDEzIEBAIFFXYXlsYW5kSW5wdXREZXZpY2UgKlFXYXlsYW5kRGlzcGxheTo6ZGVmYXVsdElucHV0 RGV2aWNlKCkgY29uc3QKKyAgICAgcmV0dXJuIG1JbnB1dERldmljZXMuaXNFbXB0eSgpID8gMCA6 IG1JbnB1dERldmljZXMuZmlyc3QoKTsKKyB9CisgCisrYm9vbCBRV2F5bGFuZERpc3BsYXk6Omlz S2V5Ym9hcmRBdmFpbGFibGUoKSBjb25zdAorK3sKKysgICAgcmV0dXJuIHN0ZDo6YW55X29mKAor KyAgICAgICAgICAgIG1JbnB1dERldmljZXMuY29uc3RCZWdpbigpLCBtSW5wdXREZXZpY2VzLmNv bnN0RW5kKCksCisrICAgICAgICAgICAgW3RoaXNdKGNvbnN0IFFXYXlsYW5kSW5wdXREZXZpY2Ug KmRldmljZSkgeyByZXR1cm4gZGV2aWNlLT5rZXlib2FyZCgpICE9IG51bGxwdHI7IH0pOworK30K KysKKyAjaWYgUVRfQ09ORklHKGN1cnNvcikKKyAKKyBRV2F5bGFuZEN1cnNvciAqUVdheWxhbmRE aXNwbGF5Ojp3YXlsYW5kQ3Vyc29yKCkKK0BAIC02NTIsNCArNzgzLDYgQEAgUVdheWxhbmRDdXJz b3JUaGVtZSAqUVdheWxhbmREaXNwbGF5Ojpsb2FkQ3Vyc29yVGhlbWUoY29uc3QgUVN0cmluZyAm bmFtZSwgaW50IHAKKyAKKyB9IC8vIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQKKyAKKysjaW5j bHVkZSAicXdheWxhbmRkaXNwbGF5Lm1vYyIKKysKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5X3AuaCBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheV9wLmgKK2luZGV4IDNiMDkyYmM4Li40MmJjNjYx ZCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheV9wLmgK KysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheV9wLmgKK0BAIC0xMDks NiArMTA5LDcgQEAgY2xhc3MgUVdheWxhbmRTdXJmYWNlOworIGNsYXNzIFFXYXlsYW5kU2hlbGxJ bnRlZ3JhdGlvbjsKKyBjbGFzcyBRV2F5bGFuZEN1cnNvcjsKKyBjbGFzcyBRV2F5bGFuZEN1cnNv clRoZW1lOworK2NsYXNzIEV2ZW50VGhyZWFkOworIAorIHR5cGVkZWYgdm9pZCAoKlJlZ2lzdHJ5 TGlzdGVuZXIpKHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHdsX3JlZ2lzdHJ5ICpyZWdpc3RyeSwKK0BAIC0xMjAsMTUgKzEyMSwxMSBAQCBjbGFz cyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZERpc3BsYXkgOiBwdWJsaWMgUU9iamVj dCwgcHVibGljIFF0V2F5bGFuZAorICAgICBRX09CSkVDVAorIAorIHB1YmxpYzoKKy0gICAgc3Ry dWN0IEZyYW1lUXVldWUgeworLSAgICAgICAgRnJhbWVRdWV1ZSh3bF9ldmVudF9xdWV1ZSAqcSA9 IG51bGxwdHIpIDogcXVldWUocSksIG11dGV4KG5ldyBRTXV0ZXgpIHt9CistICAgICAgICB3bF9l dmVudF9xdWV1ZSAqcXVldWU7CistICAgICAgICBRTXV0ZXggKm11dGV4OworLSAgICB9OworLQor ICAgICBRV2F5bGFuZERpc3BsYXkoUVdheWxhbmRJbnRlZ3JhdGlvbiAqd2F5bGFuZEludGVncmF0 aW9uKTsKKyAgICAgflFXYXlsYW5kRGlzcGxheSh2b2lkKSBvdmVycmlkZTsKKyAKKysgICAgdm9p ZCBpbml0aWFsaXplKCk7CisrCisgI2lmIFFUX0NPTkZJRyh4a2Jjb21tb24pCisgICAgIHN0cnVj dCB4a2JfY29udGV4dCAqeGtiQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1Ya2JDb250ZXh0Lmdl dCgpOyB9CisgI2VuZGlmCitAQCAtMjEwLDExICsyMDcsMTEgQEAgcHVibGljOgorICAgICB2b2lk IGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2 aWNlKTsKKyAgICAgdm9pZCBoYW5kbGVXaW5kb3dEZXN0cm95ZWQoUVdheWxhbmRXaW5kb3cgKndp bmRvdyk7CisgCistICAgIHdsX2V2ZW50X3F1ZXVlICpjcmVhdGVFdmVudFF1ZXVlKCk7CistICAg IEZyYW1lUXVldWUgY3JlYXRlRnJhbWVRdWV1ZSgpOworLSAgICB2b2lkIGRlc3Ryb3lGcmFtZVF1 ZXVlKGNvbnN0IEZyYW1lUXVldWUgJnEpOworLSAgICB2b2lkIGRpc3BhdGNoUXVldWVXaGlsZSh3 bF9ldmVudF9xdWV1ZSAqcXVldWUsIHN0ZDo6ZnVuY3Rpb248Ym9vbCgpPiBjb25kaXRpb24sIGlu dCB0aW1lb3V0ID0gLTEpOworKyAgICB3bF9ldmVudF9xdWV1ZSAqZnJhbWVFdmVudFF1ZXVlKCkg eyByZXR1cm4gbV9mcmFtZUV2ZW50UXVldWU7IH07CisrCisrICAgIGJvb2wgaXNLZXlib2FyZEF2 YWlsYWJsZSgpIGNvbnN0OworIAorKyAgICB2b2lkIGluaXRFdmVudFRocmVhZCgpOworIHB1Ymxp YyBzbG90czoKKyAgICAgdm9pZCBibG9ja2luZ1JlYWRFdmVudHMoKTsKKyAgICAgdm9pZCBmbHVz aFJlcXVlc3RzKCk7CitAQCAtMjM3LDYgKzIzNCw5IEBAIHByaXZhdGU6CisgICAgIH07CisgCisg ICAgIHN0cnVjdCB3bF9kaXNwbGF5ICptRGlzcGxheSA9IG51bGxwdHI7CisrICAgIFFTY29wZWRQ b2ludGVyPEV2ZW50VGhyZWFkPiBtX2V2ZW50VGhyZWFkOworKyAgICB3bF9ldmVudF9xdWV1ZSAq bV9mcmFtZUV2ZW50UXVldWUgPSBudWxscHRyOworKyAgICBRU2NvcGVkUG9pbnRlcjxFdmVudFRo cmVhZD4gbV9mcmFtZUV2ZW50UXVldWVUaHJlYWQ7CisgICAgIFF0V2F5bGFuZDo6d2xfY29tcG9z aXRvciBtQ29tcG9zaXRvcjsKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRTaG0+IG1TaG07 CisgICAgIFFMaXN0PFFXYXlsYW5kU2NyZWVuICo+IG1XYWl0aW5nU2NyZWVuczsKK0BAIC0yNzMs MTEgKzI3Myw5IEBAIHByaXZhdGU6CisgICAgIFFXYXlsYW5kSW5wdXREZXZpY2UgKm1MYXN0SW5w dXREZXZpY2UgPSBudWxscHRyOworICAgICBRUG9pbnRlcjxRV2F5bGFuZFdpbmRvdz4gbUxhc3RJ bnB1dFdpbmRvdzsKKyAgICAgUVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+IG1MYXN0S2V5Ym9hcmRG b2N1czsKKy0gICAgUVZlY3RvcjxRV2F5bGFuZFdpbmRvdyAqPiBtQWN0aXZlV2luZG93czsKKy0g ICAgUVZlY3RvcjxGcmFtZVF1ZXVlPiBtRXh0ZXJuYWxRdWV1ZXM7CisrICAgIFFMaXN0PFFXYXls YW5kV2luZG93ICo+IG1BY3RpdmVXaW5kb3dzOworICAgICBzdHJ1Y3Qgd2xfY2FsbGJhY2sgKm1T eW5jQ2FsbGJhY2sgPSBudWxscHRyOworICAgICBzdGF0aWMgY29uc3Qgd2xfY2FsbGJhY2tfbGlz dGVuZXIgc3luY0NhbGxiYWNrTGlzdGVuZXI7CistICAgIFFSZWFkV3JpdGVMb2NrIG1fZnJhbWVR dWV1ZUxvY2s7CisgCisgICAgIGJvb2wgbUNsaWVudFNpZGVJbnB1dENvbnRleHRSZXF1ZXN0ZWQg PSAhUVBsYXRmb3JtSW5wdXRDb250ZXh0RmFjdG9yeTo6cmVxdWVzdGVkKCkuaXNOdWxsKCk7Cisg CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmQuY3BwIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmQuY3BwCitpbmRleCA2NTM1YWExNi4uN2M1M2Y1 ZmEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZC5jcHAKKysr KyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcAorQEAgLTY2LDcgKzY2LDcg QEAgdm9pZCBRV2F5bGFuZERyYWc6OnN0YXJ0RHJhZygpCisgeworICAgICBRQmFzaWNEcmFnOjpz dGFydERyYWcoKTsKKyAgICAgUVdheWxhbmRXaW5kb3cgKmljb24gPSBzdGF0aWNfY2FzdDxRV2F5 bGFuZFdpbmRvdyAqPihzaGFwZWRQaXhtYXBXaW5kb3coKS0+aGFuZGxlKCkpOworLSAgICBpZiAo bV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+ZGF0YURldmljZSgpLT5zdGFydERyYWco ZHJhZygpLT5taW1lRGF0YSgpLCBpY29uKSkgeworKyAgICBpZiAobV9kaXNwbGF5LT5jdXJyZW50 SW5wdXREZXZpY2UoKS0+ZGF0YURldmljZSgpLT5zdGFydERyYWcoZHJhZygpLT5taW1lRGF0YSgp LCBkcmFnKCktPnN1cHBvcnRlZEFjdGlvbnMoKSwgaWNvbikpIHsKKyAgICAgICAgIGljb24tPmFk ZEF0dGFjaE9mZnNldCgtZHJhZygpLT5ob3RTcG90KCkpOworICAgICB9IGVsc2UgeworICAgICAg ICAgLy8gQ2FuY2VsbGluZyBpbW1lZGlhdGVseSBkb2VzIG5vdCB3b3JrLCBzaW5jZSB0aGUgZXZl bnQgbG9vcCBmb3IgUURyYWc6OmV4ZWMgaXMgc3RhcnRlZAorQEAgLTgwLDYgKzgwLDkgQEAgdm9p ZCBRV2F5bGFuZERyYWc6OmNhbmNlbCgpCisgICAgIFFCYXNpY0RyYWc6OmNhbmNlbCgpOworIAor ICAgICBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5kYXRhRGV2aWNlKCktPmNhbmNl bERyYWcoKTsKKysKKysgICAgaWYgKGRyYWcoKSkKKysgICAgICAgIGRyYWcoKS0+ZGVsZXRlTGF0 ZXIoKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZERyYWc6Om1vdmUoY29uc3QgUVBvaW50ICZnbG9i YWxQb3MsIFF0OjpNb3VzZUJ1dHRvbnMgYiwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZHMpCitA QCAtMTAzLDMzICsxMDYsNDEgQEAgdm9pZCBRV2F5bGFuZERyYWc6OmVuZERyYWcoKQorICAgICBt X2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5oYW5kbGVFbmREcmFnKCk7CisgfQorIAor LXZvaWQgUVdheWxhbmREcmFnOjp1cGRhdGVUYXJnZXQoY29uc3QgUVN0cmluZyAmbWltZVR5cGUp Cisrdm9pZCBRV2F5bGFuZERyYWc6OnNldFJlc3BvbnNlKGJvb2wgYWNjZXB0ZWQpCisgeworLSAg ICBzZXRDYW5Ecm9wKCFtaW1lVHlwZS5pc0VtcHR5KCkpOworLQorLSAgICBpZiAoY2FuRHJvcCgp KSB7CistICAgICAgICB1cGRhdGVDdXJzb3IoZGVmYXVsdEFjdGlvbihkcmFnKCktPnN1cHBvcnRl ZEFjdGlvbnMoKSwgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+bW9kaWZpZXJzKCkp KTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIHVwZGF0ZUN1cnNvcihRdDo6SWdub3JlQWN0aW9u KTsKKy0gICAgfQorKyAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvciBvbGQgRGF0YURldmlj ZXMgd2hlcmUgdGhlIGRyYWcgYWN0aW9uIGlzIG5vdCBjb21tdW5pY2F0ZWQKKysgICAgUXQ6OkRy b3BBY3Rpb24gYWN0aW9uID0gZGVmYXVsdEFjdGlvbihkcmFnKCktPnN1cHBvcnRlZEFjdGlvbnMo KSwgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+bW9kaWZpZXJzKCkpOworKyAgICBz ZXRSZXNwb25zZShRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZShhY2NlcHRlZCwgYWN0aW9uKSk7Cisg fQorIAorLXZvaWQgUVdheWxhbmREcmFnOjpzZXRSZXNwb25zZShjb25zdCBRUGxhdGZvcm1EcmFn UXRSZXNwb25zZSAmcmVzcG9uc2UpCisrdm9pZCBRV2F5bGFuZERyYWc6OnNldFJlc3BvbnNlKGNv bnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSkKKyB7CisgICAgIHNldENhbkRy b3AocmVzcG9uc2UuaXNBY2NlcHRlZCgpKTsKKyAKKyAgICAgaWYgKGNhbkRyb3AoKSkgeworLSAg ICAgICAgdXBkYXRlQ3Vyc29yKGRlZmF1bHRBY3Rpb24oZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25z KCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPm1vZGlmaWVycygpKSk7CisrICAg ICAgICB1cGRhdGVDdXJzb3IocmVzcG9uc2UuYWNjZXB0ZWRBY3Rpb24oKSk7CisgICAgIH0gZWxz ZSB7CisgICAgICAgICB1cGRhdGVDdXJzb3IoUXQ6Oklnbm9yZUFjdGlvbik7CisgICAgIH0KKyB9 CisgCistdm9pZCBRV2F5bGFuZERyYWc6OmZpbmlzaERyYWcoY29uc3QgUVBsYXRmb3JtRHJvcFF0 UmVzcG9uc2UgJnJlc3BvbnNlKQorK3ZvaWQgUVdheWxhbmREcmFnOjpzZXREcm9wUmVzcG9uc2Uo Y29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKQorIHsKKyAgICAgc2V0RXhl Y3V0ZWREcm9wQWN0aW9uKHJlc3BvbnNlLmFjY2VwdGVkQWN0aW9uKCkpOworK30KKysKKyt2b2lk IFFXYXlsYW5kRHJhZzo6ZmluaXNoRHJhZygpCisreworICAgICBRS2V5RXZlbnQgZXZlbnQoUUV2 ZW50OjpLZXlQcmVzcywgUXQ6OktleV9Fc2NhcGUsIFF0OjpOb01vZGlmaWVyKTsKKyAgICAgZXZl bnRGaWx0ZXIoc2hhcGVkUGl4bWFwV2luZG93KCksICZldmVudCk7CisrCisrICAgIGlmIChkcmFn KCkpCisrICAgICAgICBkcmFnKCktPmRlbGV0ZUxhdGVyKCk7CisrfQorKworK2Jvb2wgUVdheWxh bmREcmFnOjpvd25zRHJhZ09iamVjdCgpIGNvbnN0CisreworKyAgICByZXR1cm4gdHJ1ZTsKKyB9 CisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kX3Au aCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kX3AuaAoraW5kZXggNDc0ZmUyYWIu LjQ2ZjYyOWFjIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmRf cC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmgKK0BAIC03MSw5 ICs3MSwxMCBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kRHJhZyhRV2F5bGFuZERpc3BsYXkgKmRp c3BsYXkpOworICAgICB+UVdheWxhbmREcmFnKCkgb3ZlcnJpZGU7CisgCistICAgIHZvaWQgdXBk YXRlVGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlKTsKKy0gICAgdm9pZCBzZXRSZXNwb25z ZShjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2UpOworLSAgICB2b2lkIGZp bmlzaERyYWcoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysgICAg dm9pZCBzZXRSZXNwb25zZShib29sIGFjY2VwdGVkKTsKKysgICAgdm9pZCBzZXRSZXNwb25zZShj b25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKyAgICB2b2lkIHNldERy b3BSZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKyAg ICB2b2lkIGZpbmlzaERyYWcoKTsKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgc3RhcnREcmFn KCkgb3ZlcnJpZGU7CitAQCAtODIsNiArODMsNyBAQCBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgZHJv cChjb25zdCBRUG9pbnQgJmdsb2JhbFBvcywgUXQ6Ok1vdXNlQnV0dG9ucyBiLCBRdDo6S2V5Ym9h cmRNb2RpZmllcnMgbW9kcykgb3ZlcnJpZGU7CisgICAgIHZvaWQgZW5kRHJhZygpIG92ZXJyaWRl OworIAorKyAgICBib29sIG93bnNEcmFnT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgCisgcHJp dmF0ZToKKyAgICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2UuY3BwIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAKK2luZGV4IDYxM2ZlODYy Li40YjkwZGU4NCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5w dXRkZXZpY2UuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlucHV0ZGV2 aWNlLmNwcAorQEAgLTY4NSw2ICs2ODUsMTEgQEAgcHVibGljOgorIAorIHZvaWQgUVdheWxhbmRJ bnB1dERldmljZTo6UG9pbnRlcjo6cG9pbnRlcl9sZWF2ZSh1aW50MzJfdCB0aW1lLCBzdHJ1Y3Qg d2xfc3VyZmFjZSAqc3VyZmFjZSkKKyB7CisrICAgIGludmFsaWRhdGVGb2N1cygpOworKyAgICBt QnV0dG9ucyA9IFF0OjpOb0J1dHRvbjsKKysKKysgICAgbVBhcmVudC0+bVRpbWUgPSB0aW1lOwor KworICAgICAvLyBUaGUgZXZlbnQgbWF5IGFycml2ZSBhZnRlciBkZXN0cm95aW5nIHRoZSB3aW5k b3csIGluZGljYXRlZCBieQorICAgICAvLyBhIG51bGwgc3VyZmFjZS4KKyAgICAgaWYgKCFzdXJm YWNlKQorQEAgLTY5NiwxMSArNzAxLDYgQEAgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpQb2lu dGVyOjpwb2ludGVyX2xlYXZlKHVpbnQzMl90IHRpbWUsIHN0cnVjdCB3bF9zdXJmYWMKKyAKKyAg ICAgaWYgKCFRV2F5bGFuZFdpbmRvdzo6bW91c2VHcmFiKCkpCisgICAgICAgICBzZXRGcmFtZUV2 ZW50KG5ldyBMZWF2ZUV2ZW50KHdpbmRvdywgbVN1cmZhY2VQb3MsIG1HbG9iYWxQb3MpKTsKKy0K Ky0gICAgaW52YWxpZGF0ZUZvY3VzKCk7CistICAgIG1CdXR0b25zID0gUXQ6Ok5vQnV0dG9uOwor LQorLSAgICBtUGFyZW50LT5tVGltZSA9IHRpbWU7CisgfQorIAorIGNsYXNzIE1vdGlvbkV2ZW50 IDogcHVibGljIFFXYXlsYW5kUG9pbnRlckV2ZW50CitAQCAtMTMwMCwxNCArMTMwMCw2IEBAIHZv aWQgUVdheWxhbmRJbnB1dERldmljZTo6S2V5Ym9hcmQ6OmhhbmRsZUZvY3VzRGVzdHJveWVkKCkK KyB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OktleWJvYXJkOjpoYW5kbGVGb2N1c0xvc3QoKQor IHsKKyAgICAgbUZvY3VzID0gbnVsbHB0cjsKKy0jaWYgUVRfQ09ORklHKGNsaXBib2FyZCkKKy0g ICAgaWYgKGF1dG8gKmRhdGFEZXZpY2UgPSBtUGFyZW50LT5kYXRhRGV2aWNlKCkpCistICAgICAg ICBkYXRhRGV2aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKy0jZW5kaWYKKy0jaWYg UVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorLSAgICBpZiAoYXV0 byAqZGV2aWNlID0gbVBhcmVudC0+cHJpbWFyeVNlbGVjdGlvbkRldmljZSgpKQorLSAgICAgICAg ZGV2aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKy0jZW5kaWYKKyAgICAgbVBhcmVu dC0+bVFEaXNwbGF5LT5oYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChtUGFyZW50KTsKKyAgICAg bVJlcGVhdFRpbWVyLnN0b3AoKTsKKyB9CitAQCAtMTM5Niw2ICsxMzg4LDcgQEAgdm9pZCBRV2F5 bGFuZElucHV0RGV2aWNlOjpUb3VjaDo6dG91Y2hfY2FuY2VsKCkKKyAgICAgaWYgKHRvdWNoRXh0 KQorICAgICAgICAgdG91Y2hFeHQtPnRvdWNoQ2FuY2VsZWQoKTsKKyAKKysgICAgbUZvY3VzID0g bnVsbHB0cjsKKyAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlVG91Y2hDYW5jZWxF dmVudChudWxscHRyLCBtUGFyZW50LT5tVG91Y2hEZXZpY2UpOworIH0KKyAKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb24uY3BwCitpbmRleCBjNTNjY2I3OC4uNTQ4 NjE2MDAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0 aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbi5j cHAKK0BAIC0xMjUsNiArMTI1LDkgQEAgUVdheWxhbmRJbnRlZ3JhdGlvbjo6UVdheWxhbmRJbnRl Z3JhdGlvbigpCisgI2VuZGlmCisgCisgICAgIHJlY29uZmlndXJlSW5wdXRDb250ZXh0KCk7Cisr CisrICAgIFFXYXlsYW5kV2luZG93OjpmaXhlZFRvcGxldmVsUG9zaXRpb25zID0KKysgICAgICAg ICAgICAhcUVudmlyb25tZW50VmFyaWFibGVJc1NldCgiUVRfV0FZTEFORF9ESVNBQkxFX0ZJWEVE X1BPU0lUSU9OUyIpOworIH0KKyAKKyBRV2F5bGFuZEludGVncmF0aW9uOjp+UVdheWxhbmRJbnRl Z3JhdGlvbigpCitAQCAtMTkyLDE0ICsxOTUsMTggQEAgUUFic3RyYWN0RXZlbnREaXNwYXRjaGVy ICpRV2F5bGFuZEludGVncmF0aW9uOjpjcmVhdGVFdmVudERpc3BhdGNoZXIoKSBjb25zdAorIAor IHZvaWQgUVdheWxhbmRJbnRlZ3JhdGlvbjo6aW5pdGlhbGl6ZSgpCisgeworKyAgICBtRGlzcGxh eS0+aW5pdEV2ZW50VGhyZWFkKCk7CisrCisrICAgIC8vIENhbGwgYWZ0ZXIgZXZlbnREaXNwYXRj aGVyIGlzIGZ1bGx5IGNvbm5lY3RlZCwgZm9yIFFXYXlsYW5kRGlzcGxheTo6Zm9yY2VSb3VuZFRy aXAoKQorKyAgICBtRGlzcGxheS0+aW5pdGlhbGl6ZSgpOworKworKyAgICAvLyBCdXQgdGhlIGFi b3V0VG9CbG9jaygpIGFuZCBhd2FrZSgpIHNob3VsZCBiZSBjb25uZWN0ZWQgYWZ0ZXIgaW5pdGlh bGl6ZVBsYXRmb3JtKCkuCisrICAgIC8vIE90aGVyd2lzZSB0aGUgY29ubmVjdGVkIGZsdXNoUmVx dWVzdHMoKSBtYXkgY29uc3VtZXMgdXAgYWxsIGV2ZW50cyBiZWZvcmUgcHJvY2Vzc0V2ZW50cyBz dGFydHMgdG8gd2FpdCwKKysgICAgLy8gc28gdGhhdCBwcm9jZXNzRXZlbnRzKFFFdmVudExvb3A6 OldhaXRGb3JNb3JlRXZlbnRzKSBtYXkgYmUgYmxvY2tlZCBpbiB0aGUgZm9yY2VSb3VuZFRyaXAo KS4KKyAgICAgUUFic3RyYWN0RXZlbnREaXNwYXRjaGVyICpkaXNwYXRjaGVyID0gUUd1aUFwcGxp Y2F0aW9uUHJpdmF0ZTo6ZXZlbnREaXNwYXRjaGVyOworICAgICBRT2JqZWN0Ojpjb25uZWN0KGRp c3BhdGNoZXIsIFNJR05BTChhYm91dFRvQmxvY2soKSksIG1EaXNwbGF5LmRhdGEoKSwgU0xPVChm bHVzaFJlcXVlc3RzKCkpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChkaXNwYXRjaGVyLCBTSUdO QUwoYXdha2UoKSksIG1EaXNwbGF5LmRhdGEoKSwgU0xPVChmbHVzaFJlcXVlc3RzKCkpKTsKKyAK Ky0gICAgaW50IGZkID0gd2xfZGlzcGxheV9nZXRfZmQobURpc3BsYXktPndsX2Rpc3BsYXkoKSk7 CistICAgIFFTb2NrZXROb3RpZmllciAqc24gPSBuZXcgUVNvY2tldE5vdGlmaWVyKGZkLCBRU29j a2V0Tm90aWZpZXI6OlJlYWQsIG1EaXNwbGF5LmRhdGEoKSk7CistICAgIFFPYmplY3Q6OmNvbm5l Y3Qoc24sIFNJR05BTChhY3RpdmF0ZWQoUVNvY2tldERlc2NyaXB0b3IpKSwgbURpc3BsYXkuZGF0 YSgpLCBTTE9UKGZsdXNoUmVxdWVzdHMoKSkpOworLQorICAgICAvLyBRdCBkb2VzIG5vdCBzdXBw b3J0IHJ1bm5pbmcgd2l0aCBubyBzY3JlZW5zCisgICAgIG1EaXNwbGF5LT5lbnN1cmVTY3JlZW4o KTsKKyB9CitAQCAtMjYyLDYgKzI2OSwxNCBAQCBRV2F5bGFuZERpc3BsYXkgKlFXYXlsYW5kSW50 ZWdyYXRpb246OmRpc3BsYXkoKSBjb25zdAorICAgICByZXR1cm4gbURpc3BsYXkuZGF0YSgpOwor IH0KKyAKKytRdDo6S2V5Ym9hcmRNb2RpZmllcnMgUVdheWxhbmRJbnRlZ3JhdGlvbjo6cXVlcnlL ZXlib2FyZE1vZGlmaWVycygpIGNvbnN0CisreworKyAgICBpZiAoYXV0byAqc2VhdCA9IG1EaXNw bGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKSkgeworKyAgICAgICAgcmV0dXJuIHNlYXQtPm1vZGlm aWVycygpOworKyAgICB9CisrICAgIHJldHVybiBRdDo6Tm9Nb2RpZmllcjsKKyt9CisrCisgUUxp c3Q8aW50PiBRV2F5bGFuZEludGVncmF0aW9uOjpwb3NzaWJsZUtleXMoY29uc3QgUUtleUV2ZW50 ICpldmVudCkgY29uc3QKKyB7CisgICAgIGlmIChhdXRvICpzZWF0ID0gbURpc3BsYXktPmN1cnJl bnRJbnB1dERldmljZSgpKQorQEAgLTQ3OSw3ICs0OTQsNyBAQCB2b2lkIFFXYXlsYW5kSW50ZWdy YXRpb246OnJlY29uZmlndXJlSW5wdXRDb250ZXh0KCkKKyAgICAgfQorICNlbmRpZgorIAorLSAg ICBxQ0RlYnVnKGxjUXBhV2F5bGFuZCkgPDwgInVzaW5nIGlucHV0IG1ldGhvZDoiIDw8IGlucHV0 Q29udGV4dCgpLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpOworKyAgICBxQ0RlYnVnKGxjUXBh V2F5bGFuZCkgPDwgInVzaW5nIGlucHV0IG1ldGhvZDoiIDw8IChpbnB1dENvbnRleHQoKSA/IGlu cHV0Q29udGV4dCgpLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpIDogIjxub25lPiIpOworIH0K KyAKKyBRV2F5bGFuZFNoZWxsSW50ZWdyYXRpb24gKlFXYXlsYW5kSW50ZWdyYXRpb246OmNyZWF0 ZVNoZWxsSW50ZWdyYXRpb24oY29uc3QgUVN0cmluZyAmaW50ZWdyYXRpb25OYW1lKQorZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25fcC5oIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGZmNzBhZTI1 Li43M2I4MDY1OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50 ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0 aW9uX3AuaAorQEAgLTEwNyw2ICsxMDcsOCBAQCBwdWJsaWM6CisgCisgICAgIFFXYXlsYW5kRGlz cGxheSAqZGlzcGxheSgpIGNvbnN0OworIAorKyAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgcXVl cnlLZXlib2FyZE1vZGlmaWVycygpIGNvbnN0IG92ZXJyaWRlOworKworICAgICBRTGlzdDxpbnQ+ IHBvc3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2ZW50KSBjb25zdCBvdmVycmlkZTsKKyAK KyAgICAgUVN0cmluZ0xpc3QgdGhlbWVOYW1lcygpIGNvbnN0IG92ZXJyaWRlOworZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcCBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcAoraW5k ZXggODMyZjk2NzguLmVhNTA4NzcxIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZHByaW1hcnlzZWxlY3Rpb252MS5jcHAKK0BAIC01NCwxMSArNTQsNiBAQCBRV2F5 bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjE6OlFXYXlsYW5kUHJpbWFyeVNlbGVj dGlvbkRldmljZU1hbmFnZXJWMQorICAgICA6IHp3cF9wcmltYXJ5X3NlbGVjdGlvbl9kZXZpY2Vf bWFuYWdlcl92MShkaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCB1aW50 KDEpKSkKKyAgICAgLCBtX2Rpc3BsYXkoZGlzcGxheSkKKyB7CistICAgIC8vIENyZWF0ZSBkZXZp Y2VzIGZvciBhbGwgc2VhdHMuCistICAgIC8vIFRoaXMgb25seSB3b3JrcyBpZiB3ZSBnZXQgdGhl IGdsb2JhbCBiZWZvcmUgYWxsIGRldmljZXMKKy0gICAgY29uc3QgYXV0byBzZWF0cyA9IG1fZGlz cGxheS0+aW5wdXREZXZpY2VzKCk7CistICAgIGZvciAoYXV0byAqc2VhdCA6IHNlYXRzKQorLSAg ICAgICAgc2VhdC0+c2V0UHJpbWFyeVNlbGVjdGlvbkRldmljZShjcmVhdGVEZXZpY2Uoc2VhdCkp OworIH0KKyAKKyBRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VWMSAqUVdheWxhbmRQcmlt YXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxOjpjcmVhdGVEZXZpY2UoUVdheWxhbmRJbnB1dERl dmljZSAqc2VhdCkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNj cmVlbi5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAKK2luZGV4 IDZjYjMzN2RlLi41NTM3ZGFmZCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kc2NyZWVuLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3Jl ZW4uY3BwCitAQCAtNjAsNyArNjAsNyBAQCBRV2F5bGFuZFhkZ091dHB1dE1hbmFnZXJWMTo6UVdh eWxhbmRYZGdPdXRwdXRNYW5hZ2VyVjEoUVdheWxhbmREaXNwbGF5KiBkaXNwbGF5LAorIH0KKyAK KyBRV2F5bGFuZFNjcmVlbjo6UVdheWxhbmRTY3JlZW4oUVdheWxhbmREaXNwbGF5ICp3YXlsYW5k RGlzcGxheSwgaW50IHZlcnNpb24sIHVpbnQzMl90IGlkKQorLSAgICA6IFF0V2F5bGFuZDo6d2xf b3V0cHV0KHdheWxhbmREaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCAy KSkKKysgICAgOiBRdFdheWxhbmQ6OndsX291dHB1dCh3YXlsYW5kRGlzcGxheS0+d2xfcmVnaXN0 cnkoKSwgaWQsIHFNaW4odmVyc2lvbiwgMykpCisgICAgICwgbV9vdXRwdXRJZChpZCkKKyAgICAg LCBtV2F5bGFuZERpc3BsYXkod2F5bGFuZERpc3BsYXkpCisgICAgICwgbU91dHB1dE5hbWUoUVN0 cmluZ0xpdGVyYWwoIlNjcmVlbiUxIikuYXJnKGlkKSkKK0BAIC03Miw3ICs3Miw3IEBAIFFXYXls YW5kU2NyZWVuOjpRV2F5bGFuZFNjcmVlbihRV2F5bGFuZERpc3BsYXkgKndheWxhbmREaXNwbGF5 LCBpbnQgdmVyc2lvbiwgdWluCisgICAgICAgICBxQ1dhcm5pbmcobGNRcGFXYXlsYW5kKSA8PCAi d2xfb3V0cHV0IGRvbmUgZXZlbnQgbm90IHN1cHBvcnRlZCBieSBjb21wb3NpdG9yLCIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJRU2NyZWVuIG1heSBub3Qgd29yayBjb3Jy ZWN0bHkiOworICAgICAgICAgbVdheWxhbmREaXNwbGF5LT5mb3JjZVJvdW5kVHJpcCgpOyAvLyBH aXZlIHRoZSBjb21wb3NpdG9yIGEgY2hhbmNlIHRvIHNlbmQgZ2VvbWV0cnkgZXRjLgorLSAgICAg ICAgbU91dHB1dERvbmUgPSB0cnVlOyAvLyBGYWtlIHRoZSBkb25lIGV2ZW50CisrICAgICAgICBt UHJvY2Vzc2VkRXZlbnRzIHw9IE91dHB1dERvbmVFdmVudDsgLy8gRmFrZSB0aGUgZG9uZSBldmVu dAorICAgICAgICAgbWF5YmVJbml0aWFsaXplKCk7CisgICAgIH0KKyB9CitAQCAtODEsMTYgKzgx LDI5IEBAIFFXYXlsYW5kU2NyZWVuOjp+UVdheWxhbmRTY3JlZW4oKQorIHsKKyAgICAgaWYgKHp4 ZGdfb3V0cHV0X3YxOjppc0luaXRpYWxpemVkKCkpCisgICAgICAgICB6eGRnX291dHB1dF92MTo6 ZGVzdHJveSgpOworKyAgICBpZiAod2xfb3V0cHV0Ojppc0luaXRpYWxpemVkKCkgJiYgd2xfb3V0 cHV0X2dldF92ZXJzaW9uKHdsX291dHB1dDo6b2JqZWN0KCkpID49IFdMX09VVFBVVF9SRUxFQVNF X1NJTkNFX1ZFUlNJT04pCisrICAgICAgICB3bF9vdXRwdXQ6OnJlbGVhc2UoKTsKKyt9CisrCisr dWludCBRV2F5bGFuZFNjcmVlbjo6cmVxdWlyZWRFdmVudHMoKSBjb25zdAorK3sKKysgICAgdWlu dCByZXQgPSBPdXRwdXREb25lRXZlbnQ7CisrCisrICAgIGlmIChtV2F5bGFuZERpc3BsYXktPnhk Z091dHB1dE1hbmFnZXIoKSkgeworKyAgICAgICAgcmV0IHw9IFhkZ091dHB1dE5hbWVFdmVudDsK KysKKysgICAgICAgIGlmIChtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKS0+dmVy c2lvbigpIDwgMykKKysgICAgICAgICAgICByZXQgfD0gWGRnT3V0cHV0RG9uZUV2ZW50OworKyAg ICB9CisrICAgIHJldHVybiByZXQ7CisgfQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46Om1heWJl SW5pdGlhbGl6ZSgpCisgeworICAgICBRX0FTU0VSVCghbUluaXRpYWxpemVkKTsKKyAKKy0gICAg aWYgKCFtT3V0cHV0RG9uZSkKKy0gICAgICAgIHJldHVybjsKKy0KKy0gICAgaWYgKG1XYXlsYW5k RGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpICYmICFtWGRnT3V0cHV0RG9uZSkKKysgICAgY29u c3QgdWludCByZXF1aXJlZEV2ZW50cyA9IHRoaXMtPnJlcXVpcmVkRXZlbnRzKCk7CisrICAgIGlm ICgobVByb2Nlc3NlZEV2ZW50cyAmIHJlcXVpcmVkRXZlbnRzKSAhPSByZXF1aXJlZEV2ZW50cykK KyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgbUluaXRpYWxpemVkID0gdHJ1ZTsKK0BAIC0yNzYs OSArMjg5LDggQEAgdm9pZCBRV2F5bGFuZFNjcmVlbjo6b3V0cHV0X3NjYWxlKGludDMyX3QgZmFj dG9yKQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46Om91dHB1dF9kb25lKCkKKyB7CistICAgIG1P dXRwdXREb25lID0gdHJ1ZTsKKy0gICAgaWYgKHp4ZGdfb3V0cHV0X3YxOjppc0luaXRpYWxpemVk KCkgJiYgbVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCktPnZlcnNpb24oKSA+PSAz KQorLSAgICAgICAgbVhkZ091dHB1dERvbmUgPSB0cnVlOworKyAgICBtUHJvY2Vzc2VkRXZlbnRz IHw9IE91dHB1dERvbmVFdmVudDsKKysKKyAgICAgaWYgKG1Jbml0aWFsaXplZCkgeworICAgICAg ICAgdXBkYXRlT3V0cHV0UHJvcGVydGllcygpOworICAgICAgICAgaWYgKHp4ZGdfb3V0cHV0X3Yx Ojppc0luaXRpYWxpemVkKCkpCitAQCAtMzM5LDcgKzM1MSw3IEBAIHZvaWQgUVdheWxhbmRTY3Jl ZW46Onp4ZGdfb3V0cHV0X3YxX2RvbmUoKQorICAgICBpZiAoUV9VTkxJS0VMWShtV2F5bGFuZERp c3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKS0+dmVyc2lvbigpID49IDMpKQorICAgICAgICAgcVdh cm5pbmcobGNRcGFXYXlsYW5kKSA8PCAienhkZ19vdXRwdXRfdjEuZG9uZSByZWNlaXZlZCBvbiB2 ZXJzaW9uIDMgb3IgbmV3ZXIsIHRoaXMgaXMgbW9zdCBsaWtlbHkgYSBidWcgaW4gdGhlIGNvbXBv c2l0b3IiOworIAorLSAgICBtWGRnT3V0cHV0RG9uZSA9IHRydWU7CisrICAgIG1Qcm9jZXNzZWRF dmVudHMgfD0gWGRnT3V0cHV0RG9uZUV2ZW50OworICAgICBpZiAobUluaXRpYWxpemVkKQorICAg ICAgICAgdXBkYXRlWGRnT3V0cHV0UHJvcGVydGllcygpOworICAgICBlbHNlCitAQCAtMzQ4LDcg KzM2MCwxMSBAQCB2b2lkIFFXYXlsYW5kU2NyZWVuOjp6eGRnX291dHB1dF92MV9kb25lKCkKKyAK KyB2b2lkIFFXYXlsYW5kU2NyZWVuOjp6eGRnX291dHB1dF92MV9uYW1lKGNvbnN0IFFTdHJpbmcg Jm5hbWUpCisgeworKyAgICBpZiAoUV9VTkxJS0VMWShtSW5pdGlhbGl6ZWQpKQorKyAgICAgICAg cVdhcm5pbmcobGNRcGFXYXlsYW5kKSA8PCAienhkZ19vdXRwdXRfdjEubmFtZSByZWNlaXZlZCBh ZnRlciBvdXRwdXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIHRoaXMgaXMgbW9zdCBsaWtlbHkgYSBi dWcgaW4gdGhlIGNvbXBvc2l0b3IiOworKworICAgICBtT3V0cHV0TmFtZSA9IG5hbWU7CisrICAg IG1Qcm9jZXNzZWRFdmVudHMgfD0gWGRnT3V0cHV0TmFtZUV2ZW50OworIH0KKyAKKyB2b2lkIFFX YXlsYW5kU2NyZWVuOjp1cGRhdGVYZGdPdXRwdXRQcm9wZXJ0aWVzKCkKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbl9wLmggYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZHNjcmVlbl9wLmgKK2luZGV4IGRmMWM5NGYyLi4wNTBjZmRjMCAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuX3AuaAorKysrIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oCitAQCAtMTE2LDYgKzExNiwxMyBA QCBwdWJsaWM6CisgICAgIHN0YXRpYyBRV2F5bGFuZFNjcmVlbiAqZnJvbVdsT3V0cHV0KDo6d2xf b3V0cHV0ICpvdXRwdXQpOworIAorIHByaXZhdGU6CisrICAgIGVudW0gRXZlbnQgOiB1aW50IHsK KysgICAgICAgIFhkZ091dHB1dERvbmVFdmVudCA9IDB4MSwKKysgICAgICAgIE91dHB1dERvbmVF dmVudCA9IDB4MiwKKysgICAgICAgIFhkZ091dHB1dE5hbWVFdmVudCA9IDB4NCwKKysgICAgfTsK KysgICAgdWludCByZXF1aXJlZEV2ZW50cygpIGNvbnN0OworKworICAgICB2b2lkIG91dHB1dF9t b2RlKHVpbnQzMl90IGZsYWdzLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCByZWZyZXNoKSBv dmVycmlkZTsKKyAgICAgdm9pZCBvdXRwdXRfZ2VvbWV0cnkoaW50MzJfdCB4LCBpbnQzMl90IHks CisgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0 LAorQEAgLTE0OCw4ICsxNTUsNyBAQCBwcml2YXRlOgorICAgICBRU2l6ZSBtUGh5c2ljYWxTaXpl OworICAgICBRU3RyaW5nIG1PdXRwdXROYW1lOworICAgICBRdDo6U2NyZWVuT3JpZW50YXRpb24g bV9vcmllbnRhdGlvbiA9IFF0OjpQcmltYXJ5T3JpZW50YXRpb247CistICAgIGJvb2wgbU91dHB1 dERvbmUgPSBmYWxzZTsKKy0gICAgYm9vbCBtWGRnT3V0cHV0RG9uZSA9IGZhbHNlOworKyAgICB1 aW50IG1Qcm9jZXNzZWRFdmVudHMgPSAwOworICAgICBib29sIG1Jbml0aWFsaXplZCA9IGZhbHNl OworIAorICNpZiBRVF9DT05GSUcoY3Vyc29yKQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcAoraW5kZXggZGM3ZmY2NzAuLjQxY2ZmZGY3IDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5nc3RvcmUu Y3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5j cHAKK0BAIC01Miw2ICs1Miw3IEBACisgCisgI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2 YXRlL3dheWxhbmQtd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaD4KKyAKKysjaW5jbHVkZSA8ZmNu dGwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisgCitA QCAtNjEsNiArNjIsOSBAQAorICMgIGlmbmRlZiBNRkRfQ0xPRVhFQworICMgICAgZGVmaW5lIE1G RF9DTE9FWEVDICAgICAweDAwMDFVCisgIyAgZW5kaWYKKysjICBpZm5kZWYgTUZEX0FMTE9XX1NF QUxJTkcKKysjICAgIGRlZmluZSBNRkRfQUxMT1dfU0VBTElORyAweDAwMDJVCisrIyAgZW5kaWYK KyAjZW5kaWYKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKK0BAIC03NCw4ICs3OCwxMCBAQCBRV2F5 bGFuZFNobUJ1ZmZlcjo6UVdheWxhbmRTaG1CdWZmZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5 LAorICAgICBpbnQgYWxsb2MgPSBzdHJpZGUgKiBzaXplLmhlaWdodCgpOworICAgICBpbnQgZmQg PSAtMTsKKyAKKy0jaWZkZWYgU1lTX21lbWZkX2NyZWF0ZQorLSAgICBmZCA9IHN5c2NhbGwoU1lT X21lbWZkX2NyZWF0ZSwgIndheWxhbmQtc2htIiwgTUZEX0NMT0VYRUMpOworKyNpZiBkZWZpbmVk KFNZU19tZW1mZF9jcmVhdGUpICYmIGRlZmluZWQoRl9TRUFMX1NFQUwpCisrICAgIGZkID0gc3lz Y2FsbChTWVNfbWVtZmRfY3JlYXRlLCAid2F5bGFuZC1zaG0iLCBNRkRfQ0xPRVhFQyB8IE1GRF9B TExPV19TRUFMSU5HKTsKKysgICAgaWYgKGZkID49IDApCisrICAgICAgICBmY250bChmZCwgRl9B RERfU0VBTFMsIEZfU0VBTF9TSFJJTksgfCBGX1NFQUxfU0VBTCk7CisgI2VuZGlmCisgCisgICAg IFFTY29wZWRQb2ludGVyPFFGaWxlPiBmaWxlUG9pbnRlcjsKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvdy5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZHdpbmRvdy5jcHAKK2luZGV4IGNiODI4NTdhLi5mYjJjNTlkYyAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcAorKysrIGIvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3BwCitAQCAtNzYsNyArNzYsNiBAQCBRV2F5bGFu ZFdpbmRvdyAqUVdheWxhbmRXaW5kb3c6Om1Nb3VzZUdyYWIgPSBudWxscHRyOworIFFXYXlsYW5k V2luZG93OjpRV2F5bGFuZFdpbmRvdyhRV2luZG93ICp3aW5kb3csIFFXYXlsYW5kRGlzcGxheSAq ZGlzcGxheSkKKyAgICAgOiBRUGxhdGZvcm1XaW5kb3cod2luZG93KQorICAgICAsIG1EaXNwbGF5 KGRpc3BsYXkpCistICAgICwgbUZyYW1lUXVldWUobURpc3BsYXktPmNyZWF0ZUZyYW1lUXVldWUo KSkKKyAgICAgLCBtUmVzaXplQWZ0ZXJTd2FwKHFFbnZpcm9ubWVudFZhcmlhYmxlSXNTZXQoIlFU X1dBWUxBTkRfUkVTSVpFX0FGVEVSX1NXQVAiKSkKKyB7CisgICAgIHsKK0BAIC05NSw5ICs5NCw2 IEBAIFFXYXlsYW5kV2luZG93OjpRV2F5bGFuZFdpbmRvdyhRV2luZG93ICp3aW5kb3csIFFXYXls YW5kRGlzcGxheSAqZGlzcGxheSkKKyAKKyBRV2F5bGFuZFdpbmRvdzo6flFXYXlsYW5kV2luZG93 KCkKKyB7CistICAgIG1EaXNwbGF5LT5kZXN0cm95RnJhbWVRdWV1ZShtRnJhbWVRdWV1ZSk7Cist ICAgIG1EaXNwbGF5LT5oYW5kbGVXaW5kb3dEZXN0cm95ZWQodGhpcyk7CistCisgICAgIGRlbGV0 ZSBtV2luZG93RGVjb3JhdGlvbjsKKyAKKyAgICAgaWYgKG1TdXJmYWNlKQorQEAgLTI0Myw2ICsy MzksNyBAQCBib29sIFFXYXlsYW5kV2luZG93OjpzaG91bGRDcmVhdGVTdWJTdXJmYWNlKCkgY29u c3QKKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXNldCgpCisgeworKyAgICBjbG9zZUNoaWxk UG9wdXBzKCk7CisgICAgIGRlbGV0ZSBtU2hlbGxTdXJmYWNlOworICAgICBtU2hlbGxTdXJmYWNl ID0gbnVsbHB0cjsKKyAgICAgZGVsZXRlIG1TdWJTdXJmYWNlV2luZG93OworQEAgLTI1NSwxNyAr MjUyLDIyIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlc2V0KCkKKyAgICAgICAgIG1TdXJmYWNl LnJlc2V0KCk7CisgICAgIH0KKyAKKy0gICAgaWYgKG1GcmFtZUNhbGxiYWNrKSB7CistICAgICAg ICB3bF9jYWxsYmFja19kZXN0cm95KG1GcmFtZUNhbGxiYWNrKTsKKy0gICAgICAgIG1GcmFtZUNh bGxiYWNrID0gbnVsbHB0cjsKKy0gICAgfQorKyAgICB7CisrICAgICAgICBRTXV0ZXhMb2NrZXIg bG9jaygmbUZyYW1lU3luY011dGV4KTsKKysgICAgICAgIGlmIChtRnJhbWVDYWxsYmFjaykgewor KyAgICAgICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobUZyYW1lQ2FsbGJhY2spOworKyAgICAg ICAgICAgIG1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKysgICAgICAgIH0KKyAKKy0gICAgbUZy YW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworLSAgICBtV2FpdGluZ0ZvckZy YW1lQ2FsbGJhY2sgPSBmYWxzZTsKKysgICAgICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVy LmludmFsaWRhdGUoKTsKKysgICAgICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNl OworKyAgICB9CisgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsKKyAKKyAgICAg bU1hc2sgPSBRUmVnaW9uKCk7CisgICAgIG1RdWV1ZWRCdWZmZXIgPSBudWxscHRyOworKworKyAg ICBtRGlzcGxheS0+aGFuZGxlV2luZG93RGVzdHJveWVkKHRoaXMpOworIH0KKyAKKyBRV2F5bGFu ZFdpbmRvdyAqUVdheWxhbmRXaW5kb3c6OmZyb21XbFN1cmZhY2UoOjp3bF9zdXJmYWNlICpzdXJm YWNlKQorQEAgLTM1MSwxOSArMzUzLDI1IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21l dHJ5X2hlbHBlcihjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgfQorIH0KKyAKKy12b2lkIFFXYXls YW5kV2luZG93OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcmVjdCkKKyt2b2lkIFFXYXlsYW5k V2luZG93OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcikKKyB7CisrICAgIGF1dG8gcmVjdCA9 IHI7CisrICAgIGlmIChmaXhlZFRvcGxldmVsUG9zaXRpb25zICYmICFRUGxhdGZvcm1XaW5kb3c6 OnBhcmVudCgpICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlBvcHVwCisrICAgICAgICAmJiB3 aW5kb3coKS0+dHlwZSgpICE9IFF0OjpUb29sVGlwKSB7CisrICAgICAgICByZWN0Lm1vdmVUbyhz Y3JlZW4oKS0+Z2VvbWV0cnkoKS50b3BMZWZ0KCkpOworKyAgICB9CisgICAgIHNldEdlb21ldHJ5 X2hlbHBlcihyZWN0KTsKKyAKKyAgICAgaWYgKHdpbmRvdygpLT5pc1Zpc2libGUoKSAmJiByZWN0 LmlzVmFsaWQoKSkgeworICAgICAgICAgaWYgKG1XaW5kb3dEZWNvcmF0aW9uKQorICAgICAgICAg ICAgIG1XaW5kb3dEZWNvcmF0aW9uLT51cGRhdGUoKTsKKyAKKy0gICAgICAgIGlmIChtUmVzaXpl QWZ0ZXJTd2FwICYmIHdpbmRvd1R5cGUoKSA9PSBFZ2wgJiYgbVNlbnRJbml0aWFsUmVzaXplKQor KyAgICAgICAgaWYgKG1SZXNpemVBZnRlclN3YXAgJiYgd2luZG93VHlwZSgpID09IEVnbCAmJiBt U2VudEluaXRpYWxSZXNpemUpIHsKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbVJl c2l6ZUxvY2spOworICAgICAgICAgICAgIG1SZXNpemVEaXJ0eSA9IHRydWU7CistICAgICAgICBl bHNlCisrICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZh Y2U6OmhhbmRsZUdlb21ldHJ5Q2hhbmdlKHdpbmRvdygpLCBnZW9tZXRyeSgpKTsKKy0KKysgICAg ICAgIH0KKyAgICAgICAgIG1TZW50SW5pdGlhbFJlc2l6ZSA9IHRydWU7CisgICAgIH0KKyAgICAg UVJlY3QgZXhwb3NlR2VvbWV0cnkoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKTsKK0BAIC0z NzQsNyArMzgyLDcgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJl Y3QgJnJlY3QpCisgICAgICAgICBtU2hlbGxTdXJmYWNlLT5zZXRXaW5kb3dHZW9tZXRyeSh3aW5k b3dDb250ZW50R2VvbWV0cnkoKSk7CisgCisgICAgIGlmIChpc09wYXF1ZSgpICYmIG1NYXNrLmlz RW1wdHkoKSkKKy0gICAgICAgIHNldE9wYXF1ZUFyZWEocmVjdCk7CisrICAgICAgICBzZXRPcGFx dWVBcmVhKFFSZWN0KFFQb2ludCgwLCAwKSwgcmVjdC5zaXplKCkpKTsKKyB9CisgCisgdm9pZCBR V2F5bGFuZFdpbmRvdzo6cmVzaXplRnJvbUFwcGx5Q29uZmlndXJlKGNvbnN0IFFTaXplICZzaXpl V2l0aE1hcmdpbnMsIGNvbnN0IFFQb2ludCAmb2Zmc2V0KQorQEAgLTM5OSwyMSArNDA3LDYgQEAg dm9pZCBRV2F5bGFuZFdpbmRvdzo6c2VuZEV4cG9zZUV2ZW50KGNvbnN0IFFSZWN0ICZyZWN0KQor ICAgICBtTGFzdEV4cG9zZUdlb21ldHJ5ID0gcmVjdDsKKyB9CisgCistCistc3RhdGljIFFWZWN0 b3I8UVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+PiBhY3RpdmVQb3B1cHM7CistCistdm9pZCBRV2F5 bGFuZFdpbmRvdzo6Y2xvc2VQb3B1cHMoUVdheWxhbmRXaW5kb3cgKnBhcmVudCkKKy17CistICAg IHdoaWxlICghYWN0aXZlUG9wdXBzLmlzRW1wdHkoKSkgeworLSAgICAgICAgYXV0byBwb3B1cCA9 IGFjdGl2ZVBvcHVwcy50YWtlTGFzdCgpOworLSAgICAgICAgaWYgKHBvcHVwLmlzTnVsbCgpKQor LSAgICAgICAgICAgIGNvbnRpbnVlOworLSAgICAgICAgaWYgKHBvcHVwLmRhdGEoKSA9PSBwYXJl bnQpCistICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgcG9wdXAtPnJlc2V0KCk7CistICAg IH0KKy19CistCisgUVBsYXRmb3JtU2NyZWVuICpRV2F5bGFuZFdpbmRvdzo6Y2FsY3VsYXRlU2Ny ZWVuRnJvbVN1cmZhY2VFdmVudHMoKSBjb25zdAorIHsKKyAgICAgUVJlYWRMb2NrZXIgbG9jaygm bVN1cmZhY2VMb2NrKTsKK0BAIC00MzMsMTAgKzQyNiw3IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6 OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQorICAgICBsYXN0VmlzaWJsZSA9IHZpc2libGU7Cisg CisgICAgIGlmICh2aXNpYmxlKSB7CistICAgICAgICBpZiAod2luZG93KCktPnR5cGUoKSA9PSBR dDo6UG9wdXAgfHwgd2luZG93KCktPnR5cGUoKSA9PSBRdDo6VG9vbFRpcCkKKy0gICAgICAgICAg ICBhY3RpdmVQb3B1cHMgPDwgdGhpczsKKyAgICAgICAgIGluaXRXaW5kb3coKTsKKy0gICAgICAg IG1EaXNwbGF5LT5mbHVzaFJlcXVlc3RzKCk7CisgCisgICAgICAgICBzZXRHZW9tZXRyeSh3aW5k b3dHZW9tZXRyeSgpKTsKKyAgICAgICAgIC8vIERvbid0IGZsdXNoIHRoZSBldmVudHMgaGVyZSwg b3IgZWxzZSB0aGUgbmV3bHkgdmlzaWJsZSB3aW5kb3cgbWF5IHN0YXJ0IGRyYXdpbmcsIGJ1dCBz aW5jZQorQEAgLTQ0NCw3ICs0MzQsNiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRWaXNpYmxl KGJvb2wgdmlzaWJsZSkKKyAgICAgICAgIC8vIFFXYXlsYW5kU2htQmFja2luZ1N0b3JlOjpiZWdp blBhaW50KCkuCisgICAgIH0gZWxzZSB7CisgICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3Qo KSk7CistICAgICAgICBjbG9zZVBvcHVwcyh0aGlzKTsKKyAgICAgICAgIHJlc2V0KCk7CisgICAg IH0KKyB9CitAQCAtNTU2LDEyICs1NDUsMTIgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2VuZFJl Y3Vyc2l2ZUV4cG9zZUV2ZW50KCkKKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjphdHRhY2goUVdh eWxhbmRCdWZmZXIgKmJ1ZmZlciwgaW50IHgsIGludCB5KQorIHsKKy0gICAgUV9BU1NFUlQoIWJ1 ZmZlci0+Y29tbWl0dGVkKCkpOworICAgICBRUmVhZExvY2tlciBsb2NrZXIoJm1TdXJmYWNlTG9j ayk7CisgICAgIGlmIChtU3VyZmFjZSA9PSBudWxscHRyKQorICAgICAgICAgcmV0dXJuOworIAor ICAgICBpZiAoYnVmZmVyKSB7CisrICAgICAgICBRX0FTU0VSVCghYnVmZmVyLT5jb21taXR0ZWQo KSk7CisgICAgICAgICBoYW5kbGVVcGRhdGUoKTsKKyAgICAgICAgIGJ1ZmZlci0+c2V0QnVzeSgp OworIAorQEAgLTU4Myw3ICs1NzIsMTEgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6ZGFtYWdlKGNv bnN0IFFSZWN0ICZyZWN0KQorICAgICBpZiAobVN1cmZhY2UgPT0gbnVsbHB0cikKKyAgICAgICAg IHJldHVybjsKKyAKKy0gICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJl Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisrICAgIGNvbnN0IGludCBzID0gc2NhbGUoKTsK KysgICAgaWYgKG1EaXNwbGF5LT5jb21wb3NpdG9yVmVyc2lvbigpID49IDQpCisrICAgICAgICBt U3VyZmFjZS0+ZGFtYWdlX2J1ZmZlcihzICogcmVjdC54KCksIHMgKiByZWN0LnkoKSwgcyAqIHJl Y3Qud2lkdGgoKSwgcyAqIHJlY3QuaGVpZ2h0KCkpOworKyAgICBlbHNlCisrICAgICAgICBtU3Vy ZmFjZS0+ZGFtYWdlKHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdo dCgpKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2FmZUNvbW1pdChRV2F5bGFuZEJ1 ZmZlciAqYnVmZmVyLCBjb25zdCBRUmVnaW9uICZkYW1hZ2UpCitAQCAtNjE5LDggKzYxMiwxNCBA QCB2b2lkIFFXYXlsYW5kV2luZG93Ojpjb21taXQoUVdheWxhbmRCdWZmZXIgKmJ1ZmZlciwgY29u c3QgUVJlZ2lvbiAmZGFtYWdlKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBhdHRhY2hPZmZz ZXQoYnVmZmVyKTsKKy0gICAgZm9yIChjb25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQorLSAgICAg ICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVj dC5oZWlnaHQoKSk7CisrICAgIGlmIChtRGlzcGxheS0+Y29tcG9zaXRvclZlcnNpb24oKSA+PSA0 KSB7CisrICAgICAgICBjb25zdCBpbnQgcyA9IHNjYWxlKCk7CisrICAgICAgICBmb3IgKGNvbnN0 IFFSZWN0ICZyZWN0OiBkYW1hZ2UpCisrICAgICAgICAgICAgbVN1cmZhY2UtPmRhbWFnZV9idWZm ZXIocyAqIHJlY3QueCgpLCBzICogcmVjdC55KCksIHMgKiByZWN0LndpZHRoKCksIHMgKiByZWN0 LmhlaWdodCgpKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIGZvciAoY29uc3QgUVJlY3QgJnJl Y3Q6IGRhbWFnZSkKKysgICAgICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlKHJlY3QueCgpLCByZWN0 LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKysgICAgfQorICAgICBRX0FTU0VS VCghYnVmZmVyLT5jb21taXR0ZWQoKSk7CisgICAgIGJ1ZmZlci0+c2V0Q29tbWl0dGVkKCk7Cisg ICAgIG1TdXJmYWNlLT5jb21taXQoKTsKK0BAIC02MzUsNDIgKzYzNCw1MyBAQCB2b2lkIFFXYXls YW5kV2luZG93Ojpjb21taXQoKQorIAorIGNvbnN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIFFXYXls YW5kV2luZG93OjpjYWxsYmFja0xpc3RlbmVyID0geworICAgICBbXSh2b2lkICpkYXRhLCB3bF9j YWxsYmFjayAqY2FsbGJhY2ssIHVpbnQzMl90IHRpbWUpIHsKKy0gICAgICAgIFFfVU5VU0VEKGNh bGxiYWNrKTsKKyAgICAgICAgIFFfVU5VU0VEKHRpbWUpOworICAgICAgICAgYXV0byAqd2luZG93 ID0gc3RhdGljX2Nhc3Q8UVdheWxhbmRXaW5kb3cqPihkYXRhKTsKKy0gICAgICAgIHdpbmRvdy0+ aGFuZGxlRnJhbWVDYWxsYmFjaygpOworKyAgICAgICAgd2luZG93LT5oYW5kbGVGcmFtZUNhbGxi YWNrKGNhbGxiYWNrKTsKKyAgICAgfQorIH07CisgCistdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFu ZGxlRnJhbWVDYWxsYmFjaygpCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlRnJhbWVDYWxs YmFjayh3bF9jYWxsYmFjayogY2FsbGJhY2spCisgeworKyAgICBRTXV0ZXhMb2NrZXIgbG9ja2Vy KCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICBpZiAoIW1GcmFtZUNhbGxiYWNrKSB7CisrICAgICAg ICAvLyBUaGlzIG1lYW5zIHRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IHVuc2V0IGJ5IFFXYXlsYW5k V2luZG93OjpyZXNldC4KKysgICAgICAgIC8vIFRoZSB3bF9jYWxsYmFjayBvYmplY3Qgd2lsbCBi ZSBkZXN0cm95ZWQgdGhlcmUgdG9vLgorKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIFFf QVNTRVJUKGNhbGxiYWNrID09IG1GcmFtZUNhbGxiYWNrKTsKKysgICAgd2xfY2FsbGJhY2tfZGVz dHJveShjYWxsYmFjayk7CisrICAgIG1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKysKKyAgICAg bVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisgICAgIG1GcmFtZUNhbGxiYWNrRWxh cHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKyAKKyAgICAgLy8gVGhlIHJlc3QgY2FuIHdhaXQgdW50 aWwgd2UgY2FuIHJ1biBpdCBvbiB0aGUgY29ycmVjdCB0aHJlYWQKKy0gICAgaWYgKCFtV2FpdGlu Z0ZvclVwZGF0ZURlbGl2ZXJ5KSB7CistICAgICAgICBhdXRvIGRvSGFuZGxlRXhwb3NlID0gW3Ro aXNdKCkgeworLSAgICAgICAgICAgIGJvb2wgd2FzRXhwb3NlZCA9IGlzRXhwb3NlZCgpOworLSAg ICAgICAgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsKKy0gICAgICAgICAgICBp ZiAoIXdhc0V4cG9zZWQgJiYgaXNFeHBvc2VkKCkpIC8vIERpZCBzZXR0aW5nIG1GcmFtZUNhbGxi YWNrVGltZWRPdXQgbWFrZSB0aGUgd2luZG93IGV4cG9zZWQ/CistICAgICAgICAgICAgICAgIHNl bmRFeHBvc2VFdmVudChRUmVjdChRUG9pbnQoKSwgZ2VvbWV0cnkoKS5zaXplKCkpKTsKKy0gICAg ICAgICAgICBpZiAod2FzRXhwb3NlZCAmJiBoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKQorLSAg ICAgICAgICAgICAgICBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpOworLQorLSAgICAgICAgICAgIG1X YWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSBmYWxzZTsKKy0gICAgICAgIH07CisrICAgIGF1dG8g ZG9IYW5kbGVFeHBvc2UgPSBbdGhpc10oKSB7CisrICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZURl bGl2ZXJ5LnN0b3JlUmVsZWFzZShmYWxzZSk7CisrICAgICAgICBib29sIHdhc0V4cG9zZWQgPSBp c0V4cG9zZWQoKTsKKysgICAgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsKKysg ICAgICAgIGlmICghd2FzRXhwb3NlZCAmJiBpc0V4cG9zZWQoKSkgLy8gRGlkIHNldHRpbmcgbUZy YW1lQ2FsbGJhY2tUaW1lZE91dCBtYWtlIHRoZSB3aW5kb3cgZXhwb3NlZD8KKysgICAgICAgICAg ICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKSk7Cisr ICAgICAgICBpZiAod2FzRXhwb3NlZCAmJiBoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKQorKyAg ICAgICAgICAgIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCk7CisrICAgIH07CisgCisrICAgIGlmICht V2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5LnRlc3RBbmRTZXRBY3F1aXJlKGZhbHNlLCB0cnVlKSkg eworICAgICAgICAgLy8gUXVldWVkIGNvbm5lY3Rpb24sIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBj YWxsIGhhbmRsZVVwZGF0ZSgpIGZyb20gaW5zaWRlIHdhaXRGb3JGcmFtZVN5bmMoKQorICAgICAg ICAgLy8gaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBjYXNlLgorLSAgICAgICAgbVdhaXRpbmdGb3JV cGRhdGVEZWxpdmVyeSA9IHRydWU7CisgICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9k KHRoaXMsIGRvSGFuZGxlRXhwb3NlLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAgIH0KKysK KysgICAgbUZyYW1lU3luY1dhaXQubm90aWZ5X2FsbCgpOworIH0KKyAKKyBib29sIFFXYXlsYW5k V2luZG93Ojp3YWl0Rm9yRnJhbWVTeW5jKGludCB0aW1lb3V0KQorIHsKKy0gICAgUU11dGV4TG9j a2VyIGxvY2tlcihtRnJhbWVRdWV1ZS5tdXRleCk7CistICAgIG1EaXNwbGF5LT5kaXNwYXRjaFF1 ZXVlV2hpbGUobUZyYW1lUXVldWUucXVldWUsIFsmXSgpIHsgcmV0dXJuIG1XYWl0aW5nRm9yRnJh bWVDYWxsYmFjazsgfSwgdGltZW91dCk7CisrICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFt ZVN5bmNNdXRleCk7CisrCisrICAgIFFEZWFkbGluZVRpbWVyIGRlYWRsaW5lKHRpbWVvdXQpOwor KyAgICB3aGlsZSAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrICYmIG1GcmFtZVN5bmNXYWl0Lndh aXQoJm1GcmFtZVN5bmNNdXRleCwgZGVhZGxpbmUpKSB7IH0KKyAKKyAgICAgaWYgKG1XYWl0aW5n Rm9yRnJhbWVDYWxsYmFjaykgeworICAgICAgICAgcUNEZWJ1ZyhsY1dheWxhbmRCYWNraW5nc3Rv cmUpIDw8ICJEaWRuJ3QgcmVjZWl2ZSBmcmFtZSBjYWxsYmFjayBpbiB0aW1lLCB3aW5kb3cgc2hv dWxkIG5vdyBiZSBpbmV4cG9zZWQiOworQEAgLTg2OCw2ICs4NzgsMTcgQEAgYm9vbCBRV2F5bGFu ZFdpbmRvdzo6Y3JlYXRlRGVjb3JhdGlvbigpCisgICAgICAgICAgICAgc3Vic3VyZi0+c2V0X3Bv c2l0aW9uKHBvcy54KCkgKyBtLmxlZnQoKSwgcG9zLnkoKSArIG0udG9wKCkpOworICAgICAgICAg fQorICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNp emUoKSkpOworKworKyAgICAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUg YnVmZmVyIGlzIHJlY3JlYXRlZCwgYnV0IHNpbmNlCisrICAgICAgICAvLyB0aGUgY29udGVudCBy ZWN0IHJlbWFpbnMgdGhlIHNhbWUsIHRoZSB3aWRnZXRzIHJlbWFpbiB0aGUgc2FtZQorKyAgICAg ICAgLy8gc2l6ZSBhbmQgYXJlIG5vdCByZWRyYXduLCBsZWF2aW5nIHRoZSBuZXcgYnVmZmVyIGVt cHR5LiBBcyBhIHNpbXBsZQorKyAgICAgICAgLy8gd29yay1hcm91bmQsIHdlIHRyaWdnZXIgYSBm dWxsIGV4dHJhIHVwZGF0ZSB3aGVuZXZlciB0aGUgY2xpZW50LXNpZGUKKysgICAgICAgIC8vIHdp bmRvdyBkZWNvcmF0aW9ucyBhcmUgdG9nZ2xlZCB3aGlsZSB0aGUgd2luZG93IGlzIHNob3dpbmcu CisrICAgICAgICAvLyBOb3RlOiBjcmVhdGVEZWNvcmF0aW9uKCkgaXMgc29tZXRpbWVzIGNhbGxl ZCBmcm9tIHRoZSByZW5kZXIgdGhyZWFkCisrICAgICAgICAvLyBvZiBRdCBRdWljay4gVGhpcyBp cyBlc3NlbnRpYWxseSB3cm9uZyBhbmQgY291bGQgcG90ZW50aWFsbHkgY2F1c2UgcHJvYmxlbXMs CisrICAgICAgICAvLyBidXQgdW50aWwgdGhlIHVuZGVybHlpbmcgaXNzdWUgaGFzIGJlZW4gZml4 ZWQsIHdlIGhhdmUgdG8gdXNlIGludm9rZU1ldGhvZCgpCisrICAgICAgICAvLyBoZXJlIHRvIGF2 b2lkIGFzc2VydHMuCisrICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHdpbmRvdygp LCAmUVdpbmRvdzo6cmVxdWVzdFVwZGF0ZSk7CisgICAgIH0KKyAKKyAgICAgcmV0dXJuIG1XaW5k b3dEZWNvcmF0aW9uOworQEAgLTEwMjMsNiArMTA0NCwxMyBAQCB2b2lkIFFXYXlsYW5kV2luZG93 OjpoYW5kbGVTY3JlZW5zQ2hhbmdlZCgpCisgCisgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6 OmhhbmRsZVdpbmRvd1NjcmVlbkNoYW5nZWQod2luZG93KCksIG5ld1NjcmVlbi0+UVBsYXRmb3Jt U2NyZWVuOjpzY3JlZW4oKSk7CisgICAgIG1MYXN0UmVwb3J0ZWRTY3JlZW4gPSBuZXdTY3JlZW47 CisrICAgIGlmIChmaXhlZFRvcGxldmVsUG9zaXRpb25zICYmICFRUGxhdGZvcm1XaW5kb3c6OnBh cmVudCgpICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlBvcHVwCisrICAgICAgICAmJiB3aW5k b3coKS0+dHlwZSgpICE9IFF0OjpUb29sVGlwCisrICAgICAgICAmJiBnZW9tZXRyeSgpLnRvcExl ZnQoKSAhPSBuZXdTY3JlZW4tPmdlb21ldHJ5KCkudG9wTGVmdCgpKSB7CisrICAgICAgICBhdXRv IGdlb21ldHJ5ID0gdGhpcy0+Z2VvbWV0cnkoKTsKKysgICAgICAgIGdlb21ldHJ5Lm1vdmVUbyhu ZXdTY3JlZW4tPmdlb21ldHJ5KCkudG9wTGVmdCgpKTsKKysgICAgICAgIHNldEdlb21ldHJ5KGdl b21ldHJ5KTsKKysgICAgfQorIAorICAgICBpbnQgc2NhbGUgPSBuZXdTY3JlZW4tPmlzUGxhY2Vo b2xkZXIoKSA/IDEgOiBzdGF0aWNfY2FzdDxRV2F5bGFuZFNjcmVlbiAqPihuZXdTY3JlZW4pLT5z Y2FsZSgpOworICAgICBpZiAoc2NhbGUgIT0gbVNjYWxlKSB7CitAQCAtMTA5NCwxMCArMTEyMiwx OCBAQCBib29sIFFXYXlsYW5kV2luZG93OjpzZXRNb3VzZUdyYWJFbmFibGVkKGJvb2wgZ3JhYikK KyAgICAgcmV0dXJuIHRydWU7CisgfQorIAorK1F0OjpXaW5kb3dTdGF0ZXMgUVdheWxhbmRXaW5k b3c6OndpbmRvd1N0YXRlcygpIGNvbnN0CisreworKyAgICByZXR1cm4gbUxhc3RSZXBvcnRlZFdp bmRvd1N0YXRlczsKKyt9CisrCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlV2luZG93U3Rh dGVzQ2hhbmdlZChRdDo6V2luZG93U3RhdGVzIHN0YXRlcykKKyB7CisgICAgIGNyZWF0ZURlY29y YXRpb24oKTsKKy0gICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93U3RhdGVD aGFuZ2VkKHdpbmRvdygpLCBzdGF0ZXMsIG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXMpOworKyAg ICBRdDo6V2luZG93U3RhdGVzIHN0YXRlc1dpdGhvdXRBY3RpdmUgPSBzdGF0ZXMgJiB+UXQ6Oldp bmRvd0FjdGl2ZTsKKysgICAgUXQ6OldpbmRvd1N0YXRlcyBsYXN0U3RhdGVzV2l0aG91dEFjdGl2 ZSA9IG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXMgJiB+UXQ6OldpbmRvd0FjdGl2ZTsKKysgICAg UVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93U3RhdGVDaGFuZ2VkKHdpbmRvdygp LCBzdGF0ZXNXaXRob3V0QWN0aXZlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGFzdFN0YXRlc1dpdGhvdXRBY3RpdmUpOworICAgICBtTGFz dFJlcG9ydGVkV2luZG93U3RhdGVzID0gc3RhdGVzOworIH0KKyAKK0BAIC0xMTM5LDE5ICsxMTc1 LDI0IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQgKmV2ZW50 KQorICAgICBpZiAoZXZlbnQtPnRpbWVySWQoKSAhPSBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2 YWxUaW1lcklkKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBib29sIGNhbGxiYWNrVGltZXJF eHBpcmVkID0gbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaGFzRXhwaXJlZChtRnJhbWVDYWxs YmFja1RpbWVvdXQpOworLSAgICBpZiAoIW1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFs aWQoKSB8fCBjYWxsYmFja1RpbWVyRXhwaXJlZCApIHsKKy0gICAgICAgIGtpbGxUaW1lcihtRnJh bWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkKTsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNr Q2hlY2tJbnRlcnZhbFRpbWVySWQgPSAtMTsKKy0gICAgfQorLSAgICBpZiAobUZyYW1lQ2FsbGJh Y2tFbGFwc2VkVGltZXIuaXNWYWxpZCgpICYmIGNhbGxiYWNrVGltZXJFeHBpcmVkKSB7CistICAg ICAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisrICAgIHsKKysg ICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtRnJhbWVTeW5jTXV0ZXgpOworIAorLSAgICAgICAg cUNEZWJ1ZyhsY1dheWxhbmRCYWNraW5nc3RvcmUpIDw8ICJEaWRuJ3QgcmVjZWl2ZSBmcmFtZSBj YWxsYmFjayBpbiB0aW1lLCB3aW5kb3cgc2hvdWxkIG5vdyBiZSBpbmV4cG9zZWQiOworLSAgICAg ICAgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IHRydWU7CistICAgICAgICBtV2FpdGluZ0ZvclVw ZGF0ZSA9IGZhbHNlOworLSAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KCkpOworKyAgICAg ICAgYm9vbCBjYWxsYmFja1RpbWVyRXhwaXJlZCA9IG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVy Lmhhc0V4cGlyZWQobUZyYW1lQ2FsbGJhY2tUaW1lb3V0KTsKKysgICAgICAgIGlmICghbUZyYW1l Q2FsbGJhY2tFbGFwc2VkVGltZXIuaXNWYWxpZCgpIHx8IGNhbGxiYWNrVGltZXJFeHBpcmVkICkg eworKyAgICAgICAgICAgIGtpbGxUaW1lcihtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1l cklkKTsKKysgICAgICAgICAgICBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0g LTE7CisrICAgICAgICB9CisrICAgICAgICBpZiAoIW1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVy LmlzVmFsaWQoKSB8fCAhY2FsbGJhY2tUaW1lckV4cGlyZWQpIHsKKysgICAgICAgICAgICByZXR1 cm47CisrICAgICAgICB9CisrICAgICAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZh bGlkYXRlKCk7CisgICAgIH0KKysKKysgICAgcUNEZWJ1ZyhsY1dheWxhbmRCYWNraW5nc3RvcmUp IDw8ICJEaWRuJ3QgcmVjZWl2ZSBmcmFtZSBjYWxsYmFjayBpbiB0aW1lLCB3aW5kb3cgc2hvdWxk IG5vdyBiZSBpbmV4cG9zZWQiOworKyAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gdHJ1ZTsK KysgICAgbVdhaXRpbmdGb3JVcGRhdGUgPSBmYWxzZTsKKysgICAgc2VuZEV4cG9zZUV2ZW50KFFS ZWN0KCkpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0VXBkYXRlKCkKK0BA IC0xMTYwLDggKzEyMDEsMTEgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgp CisgICAgIFFfQVNTRVJUKGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkpOyAvLyBzaG91bGQgYmUg c2V0IGJ5IFFQQQorIAorICAgICAvLyBJZiB3ZSBoYXZlIGEgZnJhbWUgY2FsbGJhY2sgYWxsIGlz IGdvb2QgYW5kIHdpbGwgYmUgdGFrZW4gY2FyZSBvZiB0aGVyZQorLSAgICBpZiAobVdhaXRpbmdG b3JGcmFtZUNhbGxiYWNrKQorLSAgICAgICAgcmV0dXJuOworKyAgICB7CisrICAgICAgICBRTXV0 ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICAgICAgaWYgKG1XYWl0aW5n Rm9yRnJhbWVDYWxsYmFjaykKKysgICAgICAgICAgICByZXR1cm47CisrICAgIH0KKyAKKyAgICAg Ly8gSWYgd2UndmUgYWxyZWFkeSBjYWxsZWQgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKSwgYnV0IGhh dmVuJ3Qgc2VlbiBhbnkgYXR0YWNoK2NvbW1pdC9zd2FwIHlldAorICAgICAvLyBUaGlzIGlzIGEg c29tZXdoYXQgcmVkdW5kYW50IGJlaGF2aW9yIGFuZCBtaWdodCBpbmRpY2F0ZSBhIGJ1ZyBpbiB0 aGUgY2FsbGluZyBjb2RlLCBzbyBsb2cKK0BAIC0xMTc0LDcgKzEyMTgsMTIgQEAgdm9pZCBRV2F5 bGFuZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgpCisgICAgIC8vIHNvIHVzZSBpbnZva2VNZXRob2Qg dG8gZGVsYXkgdGhlIGRlbGl2ZXJ5IGEgYml0LgorICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0 aG9kKHRoaXMsIFt0aGlzXSB7CisgICAgICAgICAvLyBUaGluZ3MgbWlnaHQgaGF2ZSBjaGFuZ2Vk IGluIHRoZSBtZWFudGltZQorLSAgICAgICAgaWYgKGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkg JiYgIW1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKysgICAgICAgIHsKKysgICAgICAgICAgICBR TXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICAgICAgICAgIGlmICht V2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAg ICAgIH0KKysgICAgICAgIGlmIChoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKQorICAgICAgICAg ICAgIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCk7CisgICAgIH0sIFF0OjpRdWV1ZWRDb25uZWN0aW9u KTsKKyB9CitAQCAtMTE4NSwxOSArMTIzNCwxOCBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1 ZXN0VXBkYXRlKCkKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVVcGRhdGUoKQorIHsKKyAg ICAgcUNEZWJ1ZyhsY1dheWxhbmRCYWNraW5nc3RvcmUpIDw8ICJoYW5kbGVVcGRhdGUiIDw8IFFU aHJlYWQ6OmN1cnJlbnRUaHJlYWQoKTsKKysKKyAgICAgLy8gVE9ETzogU2hvdWxkIHN5bmMgc3Vi c3VyZmFjZXMgYXZvaWQgcmVxdWVzdGluZyBmcmFtZSBjYWxsYmFja3M/CisgICAgIFFSZWFkTG9j a2VyIGxvY2soJm1TdXJmYWNlTG9jayk7CisgICAgIGlmICghbVN1cmZhY2UpCisgICAgICAgICBy ZXR1cm47CisgCistICAgIGlmIChtRnJhbWVDYWxsYmFjaykgeworLSAgICAgICAgd2xfY2FsbGJh Y2tfZGVzdHJveShtRnJhbWVDYWxsYmFjayk7CistICAgICAgICBtRnJhbWVDYWxsYmFjayA9IG51 bGxwdHI7CistICAgIH0KKysgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4 KTsKKysgICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKysgICAgICAgIHJldHVybjsK KyAKKy0gICAgUU11dGV4TG9ja2VyIGxvY2tlcihtRnJhbWVRdWV1ZS5tdXRleCk7CisgICAgIHN0 cnVjdCA6OndsX3N1cmZhY2UgKndyYXBwZWRTdXJmYWNlID0gcmVpbnRlcnByZXRfY2FzdDxzdHJ1 Y3QgOjp3bF9zdXJmYWNlICo+KHdsX3Byb3h5X2NyZWF0ZV93cmFwcGVyKG1TdXJmYWNlLT5vYmpl Y3QoKSkpOworLSAgICB3bF9wcm94eV9zZXRfcXVldWUocmVpbnRlcnByZXRfY2FzdDx3bF9wcm94 eSAqPih3cmFwcGVkU3VyZmFjZSksIG1GcmFtZVF1ZXVlLnF1ZXVlKTsKKysgICAgd2xfcHJveHlf c2V0X3F1ZXVlKHJlaW50ZXJwcmV0X2Nhc3Q8d2xfcHJveHkgKj4od3JhcHBlZFN1cmZhY2UpLCBt RGlzcGxheS0+ZnJhbWVFdmVudFF1ZXVlKCkpOworICAgICBtRnJhbWVDYWxsYmFjayA9IHdsX3N1 cmZhY2VfZnJhbWUod3JhcHBlZFN1cmZhY2UpOworICAgICB3bF9wcm94eV93cmFwcGVyX2Rlc3Ry b3kod3JhcHBlZFN1cmZhY2UpOworICAgICB3bF9jYWxsYmFja19hZGRfbGlzdGVuZXIobUZyYW1l Q2FsbGJhY2ssICZRV2F5bGFuZFdpbmRvdzo6Y2FsbGJhY2tMaXN0ZW5lciwgdGhpcyk7CitAQCAt MTIwNyw2ICsxMjU1LDggQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlVXBkYXRlKCkKKyAg ICAgLy8gU3RhcnQgYSB0aW1lciBmb3IgaGFuZGxpbmcgdGhlIGNhc2Ugd2hlbiB0aGUgY29tcG9z aXRvciBzdG9wcyBzZW5kaW5nIGZyYW1lIGNhbGxiYWNrcy4KKyAgICAgaWYgKG1GcmFtZUNhbGxi YWNrVGltZW91dCA+IDApIHsKKyAgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhp cywgW3RoaXNdIHsKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5j TXV0ZXgpOworKworICAgICAgICAgICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spIHsK KyAgICAgICAgICAgICAgICAgaWYgKG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQg PCAwKQorICAgICAgICAgICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGlt ZXJJZCA9IHN0YXJ0VGltZXIobUZyYW1lQ2FsbGJhY2tUaW1lb3V0KTsKK0BAIC0xMjY3LDYgKzEz MTcsMjAgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0T3BhcXVlQXJlYShjb25zdCBRUmVnaW9u ICZvcGFxdWVBcmVhKQorICAgICB3bF9yZWdpb25fZGVzdHJveShyZWdpb24pOworIH0KKyAKKyt2 b2lkIFFXYXlsYW5kV2luZG93OjphZGRDaGlsZFBvcHVwKFFXYXlsYW5kV2luZG93ICpzdXJmYWNl KSB7CisrICAgIG1DaGlsZFBvcHVwcy5hcHBlbmQoc3VyZmFjZSk7CisrfQorKworK3ZvaWQgUVdh eWxhbmRXaW5kb3c6OnJlbW92ZUNoaWxkUG9wdXAoUVdheWxhbmRXaW5kb3cgKnN1cmZhY2UpIHsK KysgICAgbUNoaWxkUG9wdXBzLnJlbW92ZUFsbChzdXJmYWNlKTsKKyt9CisrCisrdm9pZCBRV2F5 bGFuZFdpbmRvdzo6Y2xvc2VDaGlsZFBvcHVwcygpIHsKKysgICAgd2hpbGUgKCFtQ2hpbGRQb3B1 cHMuaXNFbXB0eSgpKSB7CisrICAgICAgICBhdXRvIHBvcHVwID0gbUNoaWxkUG9wdXBzLnRha2VM YXN0KCk7CisrICAgICAgICBwb3B1cC0+cmVzZXQoKTsKKysgICAgfQorK30KKyB9CisgCisgUVRf RU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k d2luZG93X3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3AuaAoraW5k ZXggMDEzMzdjZmYuLjJmMjE5ZDhjIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmR3aW5kb3dfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdp bmRvd19wLmgKK0BAIC05OCw2ICs5OCw5IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRXaW5kb3co UVdpbmRvdyAqd2luZG93LCBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpOworICAgICB+UVdheWxh bmRXaW5kb3coKSBvdmVycmlkZTsKKyAKKysgICAgLy8gS2VlcCBUb3BsZXZlbHMgcG9zaXRpb24g b24gdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGVpciBzY3JlZW4KKysgICAgc3RhdGljIGlubGlu ZSBib29sIGZpeGVkVG9wbGV2ZWxQb3NpdGlvbnMgPSB0cnVlOworKworICAgICB2aXJ0dWFsIFdp bmRvd1R5cGUgd2luZG93VHlwZSgpIGNvbnN0ID0gMDsKKyAgICAgdmlydHVhbCB2b2lkIGVuc3Vy ZVNpemUoKTsKKyAgICAgV0lkIHdpbklkKCkgY29uc3Qgb3ZlcnJpZGU7CitAQCAtMTQ4LDYgKzE1 MSw3IEBAIHB1YmxpYzoKKyAgICAgdm9pZCBzZXRXaW5kb3dTdGF0ZShRdDo6V2luZG93U3RhdGVz IHN0YXRlcykgb3ZlcnJpZGU7CisgICAgIHZvaWQgc2V0V2luZG93RmxhZ3MoUXQ6OldpbmRvd0Zs YWdzIGZsYWdzKSBvdmVycmlkZTsKKyAgICAgdm9pZCBoYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2Vk KFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzKTsKKysgICAgUXQ6OldpbmRvd1N0YXRlcyB3aW5kb3dT dGF0ZXMoKSBjb25zdDsKKyAKKyAgICAgdm9pZCByYWlzZSgpIG92ZXJyaWRlOworICAgICB2b2lk IGxvd2VyKCkgb3ZlcnJpZGU7CitAQCAtMjA2LDYgKzIxMCwxMCBAQCBwdWJsaWM6CisgICAgIHZv aWQgaGFuZGxlVXBkYXRlKCk7CisgICAgIHZvaWQgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKSBvdmVy cmlkZTsKKyAKKysgICAgdm9pZCBhZGRDaGlsZFBvcHVwKFFXYXlsYW5kV2luZG93KiBjaGlsZCk7 CisrICAgIHZvaWQgcmVtb3ZlQ2hpbGRQb3B1cChRV2F5bGFuZFdpbmRvdyogY2hpbGQpOworKyAg ICB2b2lkIGNsb3NlQ2hpbGRQb3B1cHMoKTsKKysKKyBwdWJsaWMgc2xvdHM6CisgICAgIHZvaWQg YXBwbHlDb25maWd1cmUoKTsKKyAKK0BAIC0yMTUsNyArMjIzLDExIEBAIHNpZ25hbHM6CisgCisg cHJvdGVjdGVkOgorICAgICBRV2F5bGFuZERpc3BsYXkgKm1EaXNwbGF5ID0gbnVsbHB0cjsKKysK KysgICAgLy8gbVN1cmZhY2UgY2FuIGJlIHdyaXR0ZW4gYnkgdGhlIG1haW4gdGhyZWFkLiBPdGhl ciB0aHJlYWRzIHNob3VsZCBjbGFpbSBhIHJlYWQgbG9jayBmb3IgYWNjZXNzCisrICAgIG11dGFi bGUgUVJlYWRXcml0ZUxvY2sgbVN1cmZhY2VMb2NrOworICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5 bGFuZFN1cmZhY2U+IG1TdXJmYWNlOworKworICAgICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqbVNo ZWxsU3VyZmFjZSA9IG51bGxwdHI7CisgICAgIFFXYXlsYW5kU3ViU3VyZmFjZSAqbVN1YlN1cmZh Y2VXaW5kb3cgPSBudWxscHRyOworICAgICBRVmVjdG9yPFFXYXlsYW5kU3ViU3VyZmFjZSAqPiBt Q2hpbGRyZW47CitAQCAtMjI1LDEzICsyMzcsMTQgQEAgcHJvdGVjdGVkOgorICAgICBRdDo6TW91 c2VCdXR0b25zIG1Nb3VzZVByZXNzZWRJbkNvbnRlbnRBcmVhID0gUXQ6Ok5vQnV0dG9uOworIAor ICAgICBXSWQgbVdpbmRvd0lkOworLSAgICBib29sIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9 IGZhbHNlOworICAgICBib29sIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsgLy8gV2hl dGhlciB0aGUgZnJhbWUgY2FsbGJhY2sgaGFzIHRpbWVkIG91dAorLSAgICBib29sIG1XYWl0aW5n Rm9yVXBkYXRlRGVsaXZlcnkgPSBmYWxzZTsKKyAgICAgaW50IG1GcmFtZUNhbGxiYWNrQ2hlY2tJ bnRlcnZhbFRpbWVySWQgPSAtMTsKKy0gICAgUUVsYXBzZWRUaW1lciBtRnJhbWVDYWxsYmFja0Vs YXBzZWRUaW1lcjsKKy0gICAgc3RydWN0IDo6d2xfY2FsbGJhY2sgKm1GcmFtZUNhbGxiYWNrID0g bnVsbHB0cjsKKy0gICAgUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlIG1GcmFtZVF1ZXVlOwor KyAgICBRQXRvbWljSW50IG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSBmYWxzZTsKKysKKysg ICAgYm9vbCBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsgLy8gUHJvdGVjdGVkIGJ5 IG1GcmFtZVN5bmNNdXRleAorKyAgICBRRWxhcHNlZFRpbWVyIG1GcmFtZUNhbGxiYWNrRWxhcHNl ZFRpbWVyOyAvLyBQcm90ZWN0ZWQgYnkgbUZyYW1lU3luY011dGV4CisrICAgIHN0cnVjdCA6Onds X2NhbGxiYWNrICptRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7IC8vIFByb3RlY3RlZCBieSBtRnJh bWVTeW5jTXV0ZXgKKysgICAgUU11dGV4IG1GcmFtZVN5bmNNdXRleDsKKyAgICAgUVdhaXRDb25k aXRpb24gbUZyYW1lU3luY1dhaXQ7CisgCisgICAgIC8vIFRydWUgd2hlbiB3ZSBoYXZlIGNhbGxl ZCBkZWxpdmVyUmVxdWVzdFVwZGF0ZSwgYnV0IHRoZSBjbGllbnQgaGFzIG5vdCB5ZXQgYXR0YWNo ZWQgYSBuZXcgYnVmZmVyCitAQCAtMjYxLDYgKzI3NCw4IEBAIHByb3RlY3RlZDoKKyAgICAgUVdh eWxhbmRCdWZmZXIgKm1RdWV1ZWRCdWZmZXIgPSBudWxscHRyOworICAgICBRUmVnaW9uIG1RdWV1 ZWRCdWZmZXJEYW1hZ2U7CisgCisrICAgIFFMaXN0PFFQb2ludGVyPFFXYXlsYW5kV2luZG93Pj4g bUNoaWxkUG9wdXBzOworKworIHByaXZhdGU6CisgICAgIHZvaWQgc2V0R2VvbWV0cnlfaGVscGVy KGNvbnN0IFFSZWN0ICZyZWN0KTsKKyAgICAgdm9pZCBpbml0V2luZG93KCk7CitAQCAtMjgzLDEy ICsyOTgsMTAgQEAgcHJpdmF0ZToKKyAgICAgUVJlY3QgbUxhc3RFeHBvc2VHZW9tZXRyeTsKKyAK KyAgICAgc3RhdGljIGNvbnN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIGNhbGxiYWNrTGlzdGVuZXI7 CistICAgIHZvaWQgaGFuZGxlRnJhbWVDYWxsYmFjaygpOworKyAgICB2b2lkIGhhbmRsZUZyYW1l Q2FsbGJhY2soc3RydWN0IDo6d2xfY2FsbGJhY2sqIGNhbGxiYWNrKTsKKyAKKyAgICAgc3RhdGlj IFFXYXlsYW5kV2luZG93ICptTW91c2VHcmFiOworIAorLSAgICBtdXRhYmxlIFFSZWFkV3JpdGVM b2NrIG1TdXJmYWNlTG9jazsKKy0KKyAgICAgZnJpZW5kIGNsYXNzIFFXYXlsYW5kU3ViU3VyZmFj ZTsKKyB9OworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50ZWdy YXRpb24vcXdheWxhbmRzaGVsbGludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3NoZWxsaW50ZWdyYXRpb24vcXdheWxhbmRzaGVsbGludGVncmF0aW9uX3AuaAoraW5kZXggY2Nh ZDAwNDguLjRjYzliM2I4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxp bnRlZ3JhdGlvbi9xd2F5bGFuZHNoZWxsaW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQv c3JjL2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9wLmgK K0BAIC03MywxMSArNzMsMTAgQEAgcHVibGljOgorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg IH0KKyAgICAgdmlydHVhbCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNl KFFXYXlsYW5kV2luZG93ICp3aW5kb3cpID0gMDsKKysgICAgLy8ga2VwdCBmb3IgYmluYXJ5IGNv bXBhdCB3aXRoIGxheWVyLXNoZWxsLXF0CisgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlib2Fy ZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpv bGRGb2N1cykgeworLSAgICAgICAgaWYgKG5ld0ZvY3VzKQorLSAgICAgICAgICAgIG1fZGlzcGxh eS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsKKy0gICAgICAgIGlmIChvbGRGb2N1 cykKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG9sZEZv Y3VzKTsKKysgICAgICAgIFFfVU5VU0VEKG5ld0ZvY3VzKTsKKysgICAgICAgIFFfVU5VU0VEKG9s ZEZvY3VzKTsKKyAgICAgfQorICAgICB2aXJ0dWFsIHZvaWQgKm5hdGl2ZVJlc291cmNlRm9yV2lu ZG93KGNvbnN0IFFCeXRlQXJyYXkgJnJlc291cmNlLCBRV2luZG93ICp3aW5kb3cpIHsKKyAgICAg ICAgIFFfVU5VU0VEKHJlc291cmNlKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NvbXBv c2l0b3IvY29uZmlndXJlLmpzb24gYi9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJl Lmpzb24KK2luZGV4IGJjZmQ1MjE1Li5kYTk1ZDA3YiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbgorKysrIGIvcXR3YXlsYW5kL3NyYy9jb21wb3Np dG9yL2NvbmZpZ3VyZS5qc29uCitAQCAtNyw2ICs3LDMxIEBACisgICAgICJ0ZXN0RGlyIjogIi4u Ly4uL2NvbmZpZy50ZXN0cyIsCisgCisgICAgICJsaWJyYXJpZXMiOiB7CisrICAgICAgICAid2F5 bGFuZC1jbGllbnQiOiB7CisrICAgICAgICAgICAgImxhYmVsIjogIldheWxhbmQgY2xpZW50IGxp YnJhcnkiLAorKyAgICAgICAgICAgICJoZWFkZXJzIjogIndheWxhbmQtdmVyc2lvbi5oIiwKKysg ICAgICAgICAgICAidGVzdCI6IHsKKysgICAgICAgICAgICAgICAgIm1haW4iOiBbCisrICAgICAg ICAgICAgICAgICAgICAiI2lmIFdBWUxBTkRfVkVSU0lPTl9NQUpPUiA8IDEiLAorKyAgICAgICAg ICAgICAgICAgICAgIiMgZXJyb3IgV2F5bGFuZCAxLjguMCBvciBoaWdoZXIgcmVxdWlyZWQiLAor KyAgICAgICAgICAgICAgICAgICAgIiNlbmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiI2lm IFdBWUxBTkRfVkVSU0lPTl9NQUpPUiA9PSAxIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGlm IFdBWUxBTkRfVkVSU0lPTl9NSU5PUiA8IDgiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgIGVy cm9yIFdheWxhbmQgMS44LjAgb3IgaGlnaGVyIHJlcXVpcmVkIiwKKysgICAgICAgICAgICAgICAg ICAgICIjIGVuZGlmIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGlmIFdBWUxBTkRfVkVSU0lP Tl9NSU5PUiA9PSA4IiwKKysgICAgICAgICAgICAgICAgICAgICIjICBpZiBXQVlMQU5EX1ZFUlNJ T05fTUlDUk8gPCAwIiwKKysgICAgICAgICAgICAgICAgICAgICIjICAgZXJyb3IgV2F5bGFuZCAx LjguMCBvciBoaWdoZXIgcmVxdWlyZWQiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgIGVuZGlm IiwKKysgICAgICAgICAgICAgICAgICAgICIjIGVuZGlmIiwKKysgICAgICAgICAgICAgICAgICAg ICIjZW5kaWYiCisrICAgICAgICAgICAgICAgICBdCisrICAgICAgICAgICAgfSwKKysgICAgICAg ICAgICAic291cmNlcyI6IFsKKysgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJwa2dDb25maWci LCAiYXJncyI6ICJ3YXlsYW5kLWNsaWVudCIgfSwKKysgICAgICAgICAgICAgICAgIi1sd2F5bGFu ZC1jbGllbnQiCisrICAgICAgICAgICAgXQorKyAgICAgICAgfSwKKyAgICAgICAgICJ3YXlsYW5k LXNlcnZlciI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAid2F5bGFuZC1zZXJ2ZXIiLAorICAg ICAgICAgICAgICJoZWFkZXJzIjogIndheWxhbmQtdmVyc2lvbi5oIiwKK0BAIC0xNTEsOCArMTc2 LDcgQEAKKyAgICAgICAgICAgICAgICAgICAgICIjZW5kaWYiCisgICAgICAgICAgICAgICAgIF0K KyAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICJsaWJzIjogIi1sZHJtIiwKKy0gICAgICAg ICAgICAidXNlIjogImVnbCIKKysgICAgICAgICAgICAidXNlIjogImRybSBlZ2wiCisgICAgICAg ICB9LAorICAgICAgICAgImRtYWJ1Zi1jbGllbnQtYnVmZmVyIjogeworICAgICAgICAgICAgICJs YWJlbCI6ICJMaW51eCBDbGllbnQgZG1hLWJ1ZiBCdWZmZXIgU2hhcmluZyIsCitAQCAtMTc2LDgg KzIwMCw3IEBACisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIDA7IgorICAgICAgICAgICAg ICAgICBdCisgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAibGlicyI6ICItbGRybSIsCist ICAgICAgICAgICAgInVzZSI6ICJlZ2wiCisrICAgICAgICAgICAgInVzZSI6ICJkcm0gZWdsIgor ICAgICAgICAgfSwKKyAgICAgICAgICJ2dWxrYW4tc2VydmVyLWJ1ZmZlciI6IHsKKyAgICAgICAg ICAgICAibGFiZWwiOiAiVnVsa2FuIEJ1ZmZlciBTaGFyaW5nIiwKK0BAIC0xOTUsNyArMjE4LDgg QEAKKyAgICAgICAgICAgICAgICAgICAgICJleHBvcnRBbGxvY0luZm8uaGFuZGxlVHlwZXMgPSBW S19FWFRFUk5BTF9NRU1PUllfSEFORExFX1RZUEVfT1BBUVVFX0ZEX0JJVF9LSFI7IiwKKyAgICAg ICAgICAgICAgICAgICAgICJyZXR1cm4gMDsiCisgICAgICAgICAgICAgICAgIF0KKy0gICAgICAg ICAgICB9CisrICAgICAgICAgICAgfSwKKysgICAgICAgICAgICAidXNlIjogIndheWxhbmQtY2xp ZW50IgorICAgICAgICAgfQorICAgICB9LAorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMv aGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cu Y3BwIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVn bC9xd2F5bGFuZGVnbHdpbmRvdy5jcHAKK2luZGV4IDc4ODlmNTc1Li42NDE0MDY3MiAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1l Z2wvcXdheWxhbmRlZ2x3aW5kb3cuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50 ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcAorQEAgLTQw LDYgKzQwLDcgQEAKKyAjaW5jbHVkZSAicXdheWxhbmRlZ2x3aW5kb3cuaCIKKyAKKyAjaW5jbHVk ZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvcXdheWxhbmRzY3JlZW5fcC5oPgorKyNpbmNsdWRl IDxRdFdheWxhbmRDbGllbnQvcHJpdmF0ZS9xd2F5bGFuZHN1cmZhY2VfcC5oPgorICNpbmNsdWRl ICJxd2F5bGFuZGdsY29udGV4dC5oIgorIAorICNpbmNsdWRlIDxRdEVnbFN1cHBvcnQvcHJpdmF0 ZS9xZWdsY29udmVuaWVuY2VfcC5oPgorQEAgLTEyNCw2ICsxMjUsNyBAQCB2b2lkIFFXYXlsYW5k RWdsV2luZG93Ojp1cGRhdGVTdXJmYWNlKGJvb2wgY3JlYXRlKQorICAgICAgICAgfQorICAgICAg ICAgbU9mZnNldCA9IFFQb2ludCgpOworICAgICB9IGVsc2UgeworKyAgICAgICAgUVJlYWRMb2Nr ZXIgbG9ja2VyKCZtU3VyZmFjZUxvY2spOworICAgICAgICAgaWYgKG1fd2F5bGFuZEVnbFdpbmRv dykgeworICAgICAgICAgICAgIGludCBjdXJyZW50X3dpZHRoLCBjdXJyZW50X2hlaWdodDsKKyAg ICAgICAgICAgICBzdGF0aWMgYm9vbCBkaXNhYmxlUmVzaXplQ2hlY2sgPSBxZ2V0ZW52KCJRVF9X QVlMQU5EX0RJU0FCTEVfUkVTSVpFQ0hFQ0siKS50b0ludCgpOworQEAgLTEzMSwxNCArMTMzLDE2 IEBAIHZvaWQgUVdheWxhbmRFZ2xXaW5kb3c6OnVwZGF0ZVN1cmZhY2UoYm9vbCBjcmVhdGUpCisg ICAgICAgICAgICAgaWYgKCFkaXNhYmxlUmVzaXplQ2hlY2spIHsKKyAgICAgICAgICAgICAgICAg d2xfZWdsX3dpbmRvd19nZXRfYXR0YWNoZWRfc2l6ZShtX3dheWxhbmRFZ2xXaW5kb3csICZjdXJy ZW50X3dpZHRoLCAmY3VycmVudF9oZWlnaHQpOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAg ICBpZiAoZGlzYWJsZVJlc2l6ZUNoZWNrIHx8IChjdXJyZW50X3dpZHRoICE9IHNpemVXaXRoTWFy Z2lucy53aWR0aCgpIHx8IGN1cnJlbnRfaGVpZ2h0ICE9IHNpemVXaXRoTWFyZ2lucy5oZWlnaHQo KSkpIHsKKysgICAgICAgICAgICBpZiAoZGlzYWJsZVJlc2l6ZUNoZWNrIHx8IChjdXJyZW50X3dp ZHRoICE9IHNpemVXaXRoTWFyZ2lucy53aWR0aCgpIHx8IGN1cnJlbnRfaGVpZ2h0ICE9IHNpemVX aXRoTWFyZ2lucy5oZWlnaHQoKSkgfHwgbV9yZXF1ZXN0ZWRTaXplICE9IHNpemVXaXRoTWFyZ2lu cykgeworICAgICAgICAgICAgICAgICB3bF9lZ2xfd2luZG93X3Jlc2l6ZShtX3dheWxhbmRFZ2xX aW5kb3csIHNpemVXaXRoTWFyZ2lucy53aWR0aCgpLCBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCks IG1PZmZzZXQueCgpLCBtT2Zmc2V0LnkoKSk7CisrICAgICAgICAgICAgICAgIG1fcmVxdWVzdGVk U2l6ZSA9IHNpemVXaXRoTWFyZ2luczsKKyAgICAgICAgICAgICAgICAgbU9mZnNldCA9IFFQb2lu dCgpOworIAorICAgICAgICAgICAgICAgICBtX3Jlc2l6ZSA9IHRydWU7CisgICAgICAgICAgICAg fQorLSAgICAgICAgfSBlbHNlIGlmIChjcmVhdGUgJiYgd2xTdXJmYWNlKCkpIHsKKy0gICAgICAg ICAgICBtX3dheWxhbmRFZ2xXaW5kb3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZSh3bFN1cmZhY2Uo KSwgc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCksIHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSk7Cisr ICAgICAgICB9IGVsc2UgaWYgKGNyZWF0ZSAmJiBtU3VyZmFjZSkgeworKyAgICAgICAgICAgIG1f d2F5bGFuZEVnbFdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKG1TdXJmYWNlLT5vYmplY3Qo KSwgc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCksIHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSk7Cisr ICAgICAgICAgICAgbV9yZXF1ZXN0ZWRTaXplID0gc2l6ZVdpdGhNYXJnaW5zOworICAgICAgICAg fQorIAorICAgICAgICAgaWYgKCFtX2VnbFN1cmZhY2UgJiYgbV93YXlsYW5kRWdsV2luZG93ICYm IGNyZWF0ZSkgeworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlv bi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuaCBiL3F0d2F5bGFuZC9zcmMv aGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cu aAoraW5kZXggNWIxZjRkNTYuLjAwNzlkZmVmIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9o YXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5o CisrKysgYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQt ZWdsL3F3YXlsYW5kZWdsd2luZG93LmgKK0BAIC04OCw2ICs4OCw3IEBAIHByaXZhdGU6CisgICAg IG11dGFibGUgUU9wZW5HTEZyYW1lYnVmZmVyT2JqZWN0ICptX2NvbnRlbnRGQk8gPSBudWxscHRy OworIAorICAgICBRU3VyZmFjZUZvcm1hdCBtX2Zvcm1hdDsKKysgICAgUVNpemUgbV9yZXF1ZXN0 ZWRTaXplOworIH07CisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVp bnRlZ3JhdGlvbi9jb21wb3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1 Zi5oIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGludXgt ZG1hYnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgKK2luZGV4IDU2YTcxMGMzLi5jNmE4YjZj NiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jb21wb3Np dG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5oCisrKysgYi9xdHdheWxh bmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFi bGUtdjEvbGludXhkbWFidWYuaAorQEAgLTQxLDYgKzQxLDggQEAKKyAjaW5jbHVkZSA8UXRDb3Jl L1FUZXh0U3RyZWFtPgorICNpbmNsdWRlIDxRdEd1aS9RT3BlbkdMVGV4dHVyZT4KKyAKKysjaW5j bHVkZSA8YXJyYXk+CisrCisgI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyAjaW5jbHVkZSA8RUdML2Vn bGV4dC5oPgorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9u cy9icmFkaWVudC9tYWluLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9ucy9i cmFkaWVudC9tYWluLmNwcAoraW5kZXggZTc1ZmRhM2MuLmZhODg1MTQzIDEwMDY0NAorLS0tIGEv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwCisrKysg Yi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAKK0BA IC0xNjQsMTMgKzE2NCwxMCBAQCB2b2lkIFFXYXlsYW5kQnJhZGllbnREZWNvcmF0aW9uOjpwYWlu dChRUGFpbnREZXZpY2UgKmRldmljZSkKKyAgICAgLy8gV2luZG93IGljb24KKyAgICAgUUljb24g aWNvbiA9IHdheWxhbmRXaW5kb3coKS0+d2luZG93SWNvbigpOworICAgICBpZiAoIWljb24uaXNO dWxsKCkpIHsKKy0gICAgICAgIFFQaXhtYXAgcGl4bWFwID0gaWNvbi5waXhtYXAoUVNpemUoMTI4 LCAxMjgpKTsKKy0gICAgICAgIFFQaXhtYXAgc2NhbGVkID0gcGl4bWFwLnNjYWxlZCgyMiwgMjIs IFF0OjpJZ25vcmVBc3BlY3RSYXRpbywgUXQ6OlNtb290aFRyYW5zZm9ybWF0aW9uKTsKKy0KKyAg ICAgICAgIFFSZWN0RiBpY29uUmVjdCgwLCAwLCAyMiwgMjIpOworLSAgICAgICAgcC5kcmF3UGl4 bWFwKGljb25SZWN0LmFkanVzdGVkKG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lORywg NCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5zKCkubGVm dCgpICsgQlVUVE9OX1NQQUNJTkcsIDQpLAorLSAgICAgICAgICAgICAgICAgICAgIHNjYWxlZCwg aWNvblJlY3QpOworKyAgICAgICAgaWNvblJlY3QuYWRqdXN0KG1hcmdpbnMoKS5sZWZ0KCkgKyBC VVRUT05fU1BBQ0lORywgNCwKKysgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5zKCkubGVm dCgpICsgQlVUVE9OX1NQQUNJTkcsIDQpLAorKyAgICAgICAgaWNvbi5wYWludCgmcCwgaWNvblJl Y3QudG9SZWN0KCkpOworICAgICB9CisgCisgICAgIC8vIFdpbmRvdyB0aXRsZQorZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9x d2F5bGFuZHhkZ3BvcHVwdjUuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NS5jcHAKK2luZGV4IDg1ZDI1ZTNj Li42MGJkZDQ5MSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVn cmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3BwCisrKysgYi9xdHdheWxh bmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdw b3B1cHY1LmNwcAorQEAgLTQ3LDE4ICs0NywyMSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBu YW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50IHsKKyAKKy1RV2F5bGFuZFhkZ1BvcHVwVjU6OlFXYXls YW5kWGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFuZFdpbmRv dyAqd2luZG93KQorK1FXYXlsYW5kWGRnUG9wdXBWNTo6UVdheWxhbmRYZGdQb3B1cFY1KHN0cnVj dCA6OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93KiBwYXJlbnQsIFFXYXlsYW5k V2luZG93ICp3aW5kb3cpCisgICAgIDogUVdheWxhbmRTaGVsbFN1cmZhY2Uod2luZG93KQorICAg ICAsIFF0V2F5bGFuZDo6eGRnX3BvcHVwX3Y1KHBvcHVwKQorKyAgICAsIG1fcGFyZW50KHBhcmVu dCkKKyAgICAgLCBtX3dpbmRvdyh3aW5kb3cpCisgeworICAgICBpZiAod2luZG93LT5kaXNwbGF5 KCktPndpbmRvd0V4dGVuc2lvbigpKQorICAgICAgICAgbV9leHRlbmRlZFdpbmRvdyA9IG5ldyBR V2F5bGFuZEV4dGVuZGVkU3VyZmFjZSh3aW5kb3cpOworKyAgICBtX3BhcmVudC0+YWRkQ2hpbGRQ b3B1cChtX3dpbmRvdyk7CisgfQorIAorIFFXYXlsYW5kWGRnUG9wdXBWNTo6flFXYXlsYW5kWGRn UG9wdXBWNSgpCisgeworICAgICB4ZGdfcG9wdXBfZGVzdHJveShvYmplY3QoKSk7CisrICAgIG1f cGFyZW50LT5yZW1vdmVDaGlsZFBvcHVwKG1fd2luZG93KTsKKyAgICAgZGVsZXRlIG1fZXh0ZW5k ZWRXaW5kb3c7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjVfcC5oIGIvcXR3YXls YW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRn cG9wdXB2NV9wLmgKK2luZGV4IDc0OTRmNmE2Li5kODVmMTMwYiAxMDA2NDQKKy0tLSBhL3F0d2F5 bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhk Z3BvcHVwdjVfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaAorQEAgLTcwLDcgKzcwLDcgQEAg Y2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmRYZGdQb3B1cFY1IDogcHVibGlj IFFXYXlsYW5kU2hlbGxTdXJmYWNlCisgeworICAgICBRX09CSkVDVAorIHB1YmxpYzoKKy0gICAg UVdheWxhbmRYZGdQb3B1cFY1KHN0cnVjdCA6OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5k V2luZG93ICp3aW5kb3cpOworKyAgICBRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3Bv cHVwX3Y1ICpwb3B1cCwgUVdheWxhbmRXaW5kb3cqIHBhcmVudCwgUVdheWxhbmRXaW5kb3cgKndp bmRvdyk7CisgICAgIH5RV2F5bGFuZFhkZ1BvcHVwVjUoKSBvdmVycmlkZTsKKyAKKyBwcm90ZWN0 ZWQ6CitAQCAtNzgsNiArNzgsNyBAQCBwcm90ZWN0ZWQ6CisgCisgcHJpdmF0ZToKKyAgICAgUVdh eWxhbmRFeHRlbmRlZFN1cmZhY2UgKm1fZXh0ZW5kZWRXaW5kb3cgPSBudWxscHRyOworKyAgICBR V2F5bGFuZFdpbmRvdyAqbV9wYXJlbnQgPSBudWxscHRyOworICAgICBRV2F5bGFuZFdpbmRvdyAq bV93aW5kb3cgPSBudWxscHRyOworIH07CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NS5j cHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUv cXdheWxhbmR4ZGdzaGVsbHY1LmNwcAoraW5kZXggN2UyNDJjNGEuLmRlZjg0NTJhIDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1 L3F3YXlsYW5keGRnc2hlbGx2NS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwCitAQCAtODQs NyArODQsNyBAQCBRV2F5bGFuZFhkZ1BvcHVwVjUgKlFXYXlsYW5kWGRnU2hlbGxWNTo6Y3JlYXRl WGRnUG9wdXAoUVdheWxhbmRXaW5kb3cgKndpbmRvdywgUQorICAgICBpbnQgeCA9IHBvc2l0aW9u LngoKSArIHBhcmVudFdpbmRvdy0+ZnJhbWVNYXJnaW5zKCkubGVmdCgpOworICAgICBpbnQgeSA9 IHBvc2l0aW9uLnkoKSArIHBhcmVudFdpbmRvdy0+ZnJhbWVNYXJnaW5zKCkudG9wKCk7CisgCist ICAgIGF1dG8gcG9wdXAgPSBuZXcgUVdheWxhbmRYZGdQb3B1cFY1KGdldF94ZGdfcG9wdXAod2lu ZG93LT53bFN1cmZhY2UoKSwgcGFyZW50U3VyZmFjZSwgc2VhdCwgbV9wb3B1cFNlcmlhbCwgeCwg eSksIHdpbmRvdyk7CisrICAgIGF1dG8gcG9wdXAgPSBuZXcgUVdheWxhbmRYZGdQb3B1cFY1KGdl dF94ZGdfcG9wdXAod2luZG93LT53bFN1cmZhY2UoKSwgcGFyZW50U3VyZmFjZSwgc2VhdCwgbV9w b3B1cFNlcmlhbCwgeCwgeSksIHBhcmVudFdpbmRvdywgd2luZG93KTsKKyAgICAgbV9wb3B1cHMu YXBwZW5kKHdpbmRvdyk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocG9wdXAsICZRV2F5bGFuZFhk Z1BvcHVwVjU6OmRlc3Ryb3llZCwgW3RoaXMsIHdpbmRvd10oKXsKKyAgICAgICAgIG1fcG9wdXBz LnJlbW92ZU9uZSh3aW5kb3cpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlv bi5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwt djUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb24uY3BwCitpbmRleCA0ZTI1OTQ5Zi4uY2Zj NjA5MzkgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb24uY3BwCisrKysgYi9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxh bmR4ZGdzaGVsbHY1aW50ZWdyYXRpb24uY3BwCitAQCAtODUsMTMgKzg1LDYgQEAgUVdheWxhbmRT aGVsbFN1cmZhY2UgKlFXYXlsYW5kWGRnU2hlbGxWNUludGVncmF0aW9uOjpjcmVhdGVTaGVsbFN1 cmZhY2UoUVdheWxhbmQKKyAgICAgcmV0dXJuIG1feGRnU2hlbGwtPmNyZWF0ZVhkZ1N1cmZhY2Uo d2luZG93KTsKKyB9CisgCistdm9pZCBRV2F5bGFuZFhkZ1NoZWxsVjVJbnRlZ3JhdGlvbjo6aGFu ZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFu ZFdpbmRvdyAqb2xkRm9jdXMpIHsKKy0gICAgaWYgKG5ld0ZvY3VzICYmIHFvYmplY3RfY2FzdDxR V2F5bGFuZFhkZ1BvcHVwVjUgKj4obmV3Rm9jdXMtPnNoZWxsU3VyZmFjZSgpKSkKKy0gICAgICAg IG1fZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsKKy0gICAgaWYgKG9s ZEZvY3VzICYmIHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1BvcHVwVjUgKj4ob2xkRm9jdXMtPnNo ZWxsU3VyZmFjZSgpKSkKKy0gICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93RGVhY3RpdmF0 ZWQob2xkRm9jdXMpOworLX0KKy0KKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9x d2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRp b25fcC5oCitpbmRleCBjZTZiZGI5ZS4uYWVkODg2NzAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVs bHY1aW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRl Z3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb25fcC5oCitA QCAtNjcsNyArNjcsNiBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kWGRnU2hlbGxWNUludGVncmF0 aW9uKCkge30KKyAgICAgYm9vbCBpbml0aWFsaXplKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkg b3ZlcnJpZGU7CisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2Uo UVdheWxhbmRXaW5kb3cgKndpbmRvdykgb3ZlcnJpZGU7CistICAgIHZvaWQgaGFuZGxlS2V5Ym9h cmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAq b2xkRm9jdXMpIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFTY29wZWRQb2ludGVyPFFX YXlsYW5kWGRnU2hlbGxWNT4gbV94ZGdTaGVsbDsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2 LmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12 Ni9xd2F5bGFuZHhkZ3NoZWxsdjYuY3BwCitpbmRleCA4YzM3MTY2MS4uMTUxYzc4ZTMgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwt djYvcXdheWxhbmR4ZGdzaGVsbHY2LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAKK0BAIC0x NzQsNiArMTc0LDcgQEAgUVdheWxhbmRYZGdTdXJmYWNlVjY6OlBvcHVwOjpQb3B1cChRV2F5bGFu ZFhkZ1N1cmZhY2VWNiAqeGRnU3VyZmFjZSwgUVdheWxhbmRYZGcKKyAgICAgLCBtX3hkZ1N1cmZh Y2UoeGRnU3VyZmFjZSkKKyAgICAgLCBtX3BhcmVudChwYXJlbnQpCisgeworKyAgICBtX3BhcmVu dC0+d2luZG93KCktPmFkZENoaWxkUG9wdXAobV94ZGdTdXJmYWNlLT53aW5kb3coKSk7CisgfQor IAorIFFXYXlsYW5kWGRnU3VyZmFjZVY2OjpQb3B1cDo6flBvcHVwKCkKK0BAIC0xODEsNiArMTgy LDggQEAgUVdheWxhbmRYZGdTdXJmYWNlVjY6OlBvcHVwOjp+UG9wdXAoKQorICAgICBpZiAoaXNJ bml0aWFsaXplZCgpKQorICAgICAgICAgZGVzdHJveSgpOworIAorKyAgICBtX3BhcmVudC0+d2lu ZG93KCktPnJlbW92ZUNoaWxkUG9wdXAobV94ZGdTdXJmYWNlLT53aW5kb3coKSk7CisrCisgICAg IGlmIChtX2dyYWJiaW5nKSB7CisgICAgICAgICBhdXRvICpzaGVsbCA9IG1feGRnU3VyZmFjZS0+ bV9zaGVsbDsKKyAgICAgICAgIFFfQVNTRVJUKHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVw ID09IHRoaXMpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVn cmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAgYi9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxh bmR4ZGdzaGVsbHY2aW50ZWdyYXRpb24uY3BwCitpbmRleCAwMzE2NDMxNi4uZThkYThiYTEgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb24uY3BwCisrKysgYi9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVs bHY2aW50ZWdyYXRpb24uY3BwCitAQCAtNjgsMjAgKzY4LDYgQEAgUVdheWxhbmRTaGVsbFN1cmZh Y2UgKlFXYXlsYW5kWGRnU2hlbGxWNkludGVncmF0aW9uOjpjcmVhdGVTaGVsbFN1cmZhY2UoUVdh eWxhbmQKKyAgICAgcmV0dXJuIG1feGRnU2hlbGwtPmdldFhkZ1N1cmZhY2Uod2luZG93KTsKKyB9 CisgCistdm9pZCBRV2F5bGFuZFhkZ1NoZWxsVjZJbnRlZ3JhdGlvbjo6aGFuZGxlS2V5Ym9hcmRG b2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xk Rm9jdXMpCisteworLSAgICBpZiAobmV3Rm9jdXMpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZh Y2UgPSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlVjYgKj4obmV3Rm9jdXMtPnNoZWxs U3VyZmFjZSgpKTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNlLT5oYW5k bGVzQWN0aXZlU3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0Fj dGl2YXRlZChuZXdGb2N1cyk7CistICAgIH0KKy0gICAgaWYgKG9sZEZvY3VzICYmIHFvYmplY3Rf Y2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2VWNiAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKSB7 CistICAgICAgICBhdXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3Vy ZmFjZVY2ICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRnU3Vy ZmFjZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAgICAg bV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CistICAgIH0KKy19 CistCisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2 aW50ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24v eGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaAoraW5kZXggMjYx ZjhjYmIuLmMxYmNkNWM2IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uX3Au aAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxs LXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaAorQEAgLTY1LDcgKzY1LDYgQEAg cHVibGljOgorICAgICBRV2F5bGFuZFhkZ1NoZWxsVjZJbnRlZ3JhdGlvbigpIHt9CisgICAgIGJv b2wgaW5pdGlhbGl6ZShRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAgICBR V2F5bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2luZG93ICp3 aW5kb3cpIG92ZXJyaWRlOworLSAgICB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFX YXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSBvdmVycmlk ZTsKKyAKKyBwcml2YXRlOgorICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZFhkZ1NoZWxsVjY+ IG1feGRnU2hlbGw7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwIGIvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwCitp bmRleCBmM2UzYzMzMC4uZmE2ZDU4MDggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAKKysrKyBi L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFu ZHhkZ3NoZWxsLmNwcAorQEAgLTY3LDExICs2Nyw2IEBAIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9w bGV2ZWw6OlRvcGxldmVsKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSkKKyAKKyBRV2F5 bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjp+VG9wbGV2ZWwoKQorIHsKKy0gICAgaWYgKG1fYXBw bGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSB7CistICAgICAgICBRV2F5bGFuZFdpbmRv dyAqd2luZG93ID0gbV94ZGdTdXJmYWNlLT53aW5kb3coKTsKKy0gICAgICAgIHdpbmRvdy0+ZGlz cGxheSgpLT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZCh3aW5kb3cpOworLSAgICB9CistCisgICAg IC8vIFRoZSBwcm90b2NvbCBzcGVjIHJlcXVpcmVzIHRoYXQgdGhlIGRlY29yYXRpb24gb2JqZWN0 IGlzIGRlbGV0ZWQgYmVmb3JlIHhkZ190b3BsZXZlbC4KKyAgICAgZGVsZXRlIG1fZGVjb3JhdGlv bjsKKyAgICAgbV9kZWNvcmF0aW9uID0gbnVsbHB0cjsKK0BAIC04NSwxNiArODAsMTUgQEAgdm9p ZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjphcHBseUNvbmZpZ3VyZSgpCisgICAgIGlm ICghKG1fYXBwbGllZC5zdGF0ZXMgJiAoUXQ6OldpbmRvd01heGltaXplZHxRdDo6V2luZG93RnVs bFNjcmVlbikpKQorICAgICAgICAgbV9ub3JtYWxTaXplID0gbV94ZGdTdXJmYWNlLT5tX3dpbmRv dy0+d2luZG93RnJhbWVHZW9tZXRyeSgpLnNpemUoKTsKKyAKKy0gICAgaWYgKChtX3BlbmRpbmcu c3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgJiYgIShtX2FwcGxpZWQuc3RhdGVzICYgUXQ6Oldp bmRvd0FjdGl2ZSkpCisrICAgIGlmICgobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3Rp dmUpICYmICEobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpCisrICAgICAgICAm JiAhbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5pc0tleWJvYXJkQXZhaWxhYmxl KCkpCisgICAgICAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5kaXNwbGF5KCktPmhhbmRsZVdp bmRvd0FjdGl2YXRlZChtX3hkZ1N1cmZhY2UtPm1fd2luZG93KTsKKyAKKy0gICAgaWYgKCEobV9w ZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmIChtX2FwcGxpZWQuc3RhdGVzICYg UXQ6OldpbmRvd0FjdGl2ZSkpCisrICAgIGlmICghKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2lu ZG93QWN0aXZlKSAmJiAobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpCisrICAg ICAgICAmJiAhbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5pc0tleWJvYXJkQXZh aWxhYmxlKCkpCisgICAgICAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5kaXNwbGF5KCktPmhh bmRsZVdpbmRvd0RlYWN0aXZhdGVkKG1feGRnU3VyZmFjZS0+bV93aW5kb3cpOworIAorLSAgICAv LyBUT0RPOiBub25lIG9mIHRoZSBvdGhlciBwbHVnaW5zIHNlbmQgV2luZG93QWN0aXZlIGVpdGhl ciwgYnV0IGlzIGl0IG9uIHB1cnBvc2U/CistICAgIFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzV2l0 aG91dEFjdGl2ZSA9IG1fcGVuZGluZy5zdGF0ZXMgJiB+UXQ6OldpbmRvd0FjdGl2ZTsKKy0KKy0g ICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+aGFuZGxlV2luZG93U3RhdGVzQ2hhbmdlZChzdGF0 ZXNXaXRob3V0QWN0aXZlKTsKKysgICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+aGFuZGxlV2lu ZG93U3RhdGVzQ2hhbmdlZChtX3BlbmRpbmcuc3RhdGVzKTsKKyAKKyAgICAgaWYgKG1fcGVuZGlu Zy5zaXplLmlzRW1wdHkoKSkgeworICAgICAgICAgLy8gQW4gZW1wdHkgc2l6ZSBpbiB0aGUgY29u ZmlndXJlIG1lYW5zIGl0J3MgdXAgdG8gdGhlIGNsaWVudCB0byBjaG9vc2UgdGhlIHNpemUKK0BA IC0xMDUsOCArOTksNiBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6OmFwcGx5 Q29uZmlndXJlKCkKKyAgICAgICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPnJlc2l6ZUZyb21B cHBseUNvbmZpZ3VyZShtX3BlbmRpbmcuc2l6ZSk7CisgICAgIH0KKyAKKy0gICAgbV94ZGdTdXJm YWNlLT5zZXRTaXplSGludHMoKTsKKy0KKyAgICAgbV9hcHBsaWVkID0gbV9wZW5kaW5nOworICAg ICBxQ0RlYnVnKGxjUXBhV2F5bGFuZCkgPDwgIkFwcGxpZWQgcGVuZGluZyB4ZGdfdG9wbGV2ZWwg Y29uZmlndXJlIGV2ZW50OiIgPDwgbV9hcHBsaWVkLnNpemUgPDwgbV9hcHBsaWVkLnN0YXRlczsK KyB9CitAQCAtMjAzLDEyICsxOTUsMTcgQEAgUXRXYXlsYW5kOjp4ZGdfdG9wbGV2ZWw6OnJlc2l6 ZV9lZGdlIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6OmNvbnZlcnRUb1Jlc2kKKyAgICAg ICAgICAgICAgICAgfCAoKGVkZ2VzICYgUXQ6OlJpZ2h0RWRnZSkgPyByZXNpemVfZWRnZV9yaWdo dCA6IDApKTsKKyB9CisgCistUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6UG9wdXAoUVdheWxh bmRYZGdTdXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFhkZ1N1cmZhY2UgKnBhcmVudCwKKytR V2F5bGFuZFhkZ1N1cmZhY2U6OlBvcHVwOjpQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1 cmZhY2UsIFFXYXlsYW5kV2luZG93ICpwYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lciAqcG9zaXRpb25lcikKKy0gICAgOiB4 ZGdfcG9wdXAoeGRnU3VyZmFjZS0+Z2V0X3BvcHVwKHBhcmVudC0+b2JqZWN0KCksIHBvc2l0aW9u ZXItPm9iamVjdCgpKSkKKy0gICAgLCBtX3hkZ1N1cmZhY2UoeGRnU3VyZmFjZSkKKysgICAgOiBt X3hkZ1N1cmZhY2UoeGRnU3VyZmFjZSkKKysgICAgLCBtX3BhcmVudFhkZ1N1cmZhY2UocW9iamVj dF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihwYXJlbnQtPnNoZWxsU3VyZmFjZSgpKSkKKyAg ICAgLCBtX3BhcmVudChwYXJlbnQpCisgeworKworKyAgICBpbml0KHhkZ1N1cmZhY2UtPmdldF9w b3B1cChtX3BhcmVudFhkZ1N1cmZhY2UgPyBtX3BhcmVudFhkZ1N1cmZhY2UtPm9iamVjdCgpIDog bnVsbHB0ciwgcG9zaXRpb25lci0+b2JqZWN0KCkpKTsKKysgICAgaWYgKG1fcGFyZW50KSB7Cisr ICAgICAgICBtX3BhcmVudC0+YWRkQ2hpbGRQb3B1cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsK KysgICAgfQorIH0KKyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2U6OlBvcHVwOjp+UG9wdXAoKQorQEAg LTIxNiwxMCArMjEzLDI0IEBAIFFXYXlsYW5kWGRnU3VyZmFjZTo6UG9wdXA6On5Qb3B1cCgpCisg ICAgIGlmIChpc0luaXRpYWxpemVkKCkpCisgICAgICAgICBkZXN0cm95KCk7CisgCisrICAgIGlm IChtX3BhcmVudCkgeworKyAgICAgICAgbV9wYXJlbnQtPnJlbW92ZUNoaWxkUG9wdXAobV94ZGdT dXJmYWNlLT53aW5kb3coKSk7CisrICAgIH0KKysKKyAgICAgaWYgKG1fZ3JhYmJpbmcpIHsKKyAg ICAgICAgIGF1dG8gKnNoZWxsID0gbV94ZGdTdXJmYWNlLT5tX3NoZWxsOworICAgICAgICAgUV9B U1NFUlQoc2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPT0gdGhpcyk7CistICAgICAgICBz aGVsbC0+bV90b3Btb3N0R3JhYmJpbmdQb3B1cCA9IG1fcGFyZW50LT5tX3BvcHVwOworKyAgICAg ICAgc2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPSBtX3BhcmVudFhkZ1N1cmZhY2UgPyBt X3BhcmVudFhkZ1N1cmZhY2UtPm1fcG9wdXAgOiBudWxscHRyOworKyAgICAgICAgbV9ncmFiYmlu ZyA9IGZhbHNlOworKworKyAgICAgICAgLy8gU3ludGhlc2l6ZSBRdCBlbnRlci9sZWF2ZSBldmVu dHMgZm9yIHBvcHVwCisrICAgICAgICBRV2luZG93ICpsZWF2ZSA9IG51bGxwdHI7CisrICAgICAg ICBpZiAobV94ZGdTdXJmYWNlICYmIG1feGRnU3VyZmFjZS0+d2luZG93KCkpCisrICAgICAgICAg ICAgbGVhdmUgPSBtX3hkZ1N1cmZhY2UtPndpbmRvdygpLT53aW5kb3coKTsKKysgICAgICAgIFFX aW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUxlYXZlRXZlbnQobGVhdmUpOworKworKyAgICAg ICAgaWYgKFFXaW5kb3cgKmVudGVyID0gUUd1aUFwcGxpY2F0aW9uOjp0b3BMZXZlbEF0KFFDdXJz b3I6OnBvcygpKSkKKysgICAgICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVF bnRlckV2ZW50KGVudGVyLCBlbnRlci0+bWFwRnJvbUdsb2JhbChRQ3Vyc29yOjpwb3MoKSksIFFD dXJzb3I6OnBvcygpKTsKKyAgICAgfQorIH0KKyAKK0BAIC0yNTcsNiArMjY4LDcgQEAgUVdheWxh bmRYZGdTdXJmYWNlOjpRV2F5bGFuZFhkZ1N1cmZhY2UoUVdheWxhbmRYZGdTaGVsbCAqc2hlbGws IDo6eGRnX3N1cmZhY2UgKnMKKyAgICAgICAgICAgICAgICAgbV90b3BsZXZlbC0+c2V0X3BhcmVu dChwYXJlbnRYZGdTdXJmYWNlLT5tX3RvcGxldmVsLT5vYmplY3QoKSk7CisgICAgICAgICB9Cisg ICAgIH0KKysgICAgc2V0U2l6ZUhpbnRzKCk7CisgfQorIAorIFFXYXlsYW5kWGRnU3VyZmFjZTo6 flFXYXlsYW5kWGRnU3VyZmFjZSgpCitAQCAtNDAwLDggKzQxMiw2IEBAIHZvaWQgUVdheWxhbmRY ZGdTdXJmYWNlOjpzZXRQb3B1cChRV2F5bGFuZFdpbmRvdyAqcGFyZW50KQorIHsKKyAgICAgUV9B U1NFUlQoIW1fdG9wbGV2ZWwgJiYgIW1fcG9wdXApOworIAorLSAgICBhdXRvIHBhcmVudFhkZ1N1 cmZhY2UgPSBzdGF0aWNfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4ocGFyZW50LT5zaGVsbFN1 cmZhY2UoKSk7CistCisgICAgIGF1dG8gcG9zaXRpb25lciA9IG5ldyBRdFdheWxhbmQ6OnhkZ19w b3NpdGlvbmVyKG1fc2hlbGwtPmNyZWF0ZV9wb3NpdGlvbmVyKCkpOworICAgICAvLyBzZXRfcG9w dXAgZXhwZWN0cyBhIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQKKyAgICAgUVBvaW50 IHRyYW5zaWVudFBvcyA9IG1fd2luZG93LT5nZW9tZXRyeSgpLnRvcExlZnQoKTsgLy8gdGhpcyBp cyBhYnNvbHV0ZQorQEAgLTQxNCw4ICs0MjQsOSBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6 c2V0UG9wdXAoUVdheWxhbmRXaW5kb3cgKnBhcmVudCkKKyAgICAgcG9zaXRpb25lci0+c2V0X2Fu Y2hvcihRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyOjphbmNob3JfdG9wX2xlZnQpOworICAgICBw b3NpdGlvbmVyLT5zZXRfZ3Jhdml0eShRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyOjpncmF2aXR5 X2JvdHRvbV9yaWdodCk7CisgICAgIHBvc2l0aW9uZXItPnNldF9zaXplKG1fd2luZG93LT5nZW9t ZXRyeSgpLndpZHRoKCksIG1fd2luZG93LT5nZW9tZXRyeSgpLmhlaWdodCgpKTsKKy0gICAgbV9w b3B1cCA9IG5ldyBQb3B1cCh0aGlzLCBwYXJlbnRYZGdTdXJmYWNlLCBwb3NpdGlvbmVyKTsKKysg ICAgbV9wb3B1cCA9IG5ldyBQb3B1cCh0aGlzLCBwYXJlbnQsIHBvc2l0aW9uZXIpOworICAgICBw b3NpdGlvbmVyLT5kZXN0cm95KCk7CisrCisgICAgIGRlbGV0ZSBwb3NpdGlvbmVyOworIH0KKyAK K0BAIC00MzcsNiArNDQ4LDIzIEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpzZXRHcmFiUG9w dXAoUVdheWxhbmRXaW5kb3cgKnBhcmVudCwgUVdheWxhbmRJbnB1dERldmljCisgICAgIH0KKyAg ICAgc2V0UG9wdXAocGFyZW50KTsKKyAgICAgbV9wb3B1cC0+Z3JhYihkZXZpY2UsIHNlcmlhbCk7 CisrCisrICAgIC8vIFN5bnRoZXNpemUgUXQgZW50ZXIvbGVhdmUgZXZlbnRzIGZvciBwb3B1cAor KyAgICBpZiAoIXBhcmVudCkKKysgICAgICAgIHJldHVybjsKKysgICAgUVdpbmRvdyAqY3VycmVu dCA9IFFHdWlBcHBsaWNhdGlvbjo6dG9wTGV2ZWxBdChRQ3Vyc29yOjpwb3MoKSk7CisrICAgIFFX aW5kb3cgKmxlYXZlID0gcGFyZW50LT53aW5kb3coKTsKKysgICAgaWYgKGN1cnJlbnQgIT0gbGVh dmUpCisrICAgICAgICByZXR1cm47CisrCisrICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6Omhh bmRsZUxlYXZlRXZlbnQobGVhdmUpOworKworKyAgICBRV2luZG93ICplbnRlciA9IG51bGxwdHI7 CisrICAgIGlmIChtX3BvcHVwICYmIG1fcG9wdXAtPm1feGRnU3VyZmFjZSAmJiBtX3BvcHVwLT5t X3hkZ1N1cmZhY2UtPndpbmRvdygpKQorKyAgICAgICAgZW50ZXIgPSBtX3BvcHVwLT5tX3hkZ1N1 cmZhY2UtPndpbmRvdygpLT53aW5kb3coKTsKKysKKysgICAgaWYgKGVudGVyKQorKyAgICAgICAg UVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlRW50ZXJFdmVudChlbnRlciwgZW50ZXItPm1h cEZyb21HbG9iYWwoUUN1cnNvcjo6cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSk7CisgfQorIAorIHZv aWQgUVdheWxhbmRYZGdTdXJmYWNlOjp4ZGdfc3VyZmFjZV9jb25maWd1cmUodWludDMyX3Qgc2Vy aWFsKQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3AuaAoraW5kZXggOTY3 ODUyMDUuLjRiNTE4ZjBhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxfcC5oCisrKysgYi9xdHdheWxh bmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVs bF9wLmgKK0BAIC0xMzEsMTQgKzEzMSwxNSBAQCBwcml2YXRlOgorIAorICAgICBjbGFzcyBQb3B1 cCA6IHB1YmxpYyBRdFdheWxhbmQ6OnhkZ19wb3B1cCB7CisgICAgIHB1YmxpYzoKKy0gICAgICAg IFBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRYZGdTdXJmYWNl ICpwYXJlbnQsIFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIgKnBvc2l0aW9uZXIpOworKyAgICAg ICAgUG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFdpbmRvdyAq cGFyZW50LCBRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyICpwb3NpdGlvbmVyKTsKKyAgICAgICAg IH5Qb3B1cCgpIG92ZXJyaWRlOworIAorICAgICAgICAgdm9pZCBncmFiKFFXYXlsYW5kSW5wdXRE ZXZpY2UgKnNlYXQsIHVpbnQgc2VyaWFsKTsKKyAgICAgICAgIHZvaWQgeGRnX3BvcHVwX3BvcHVw X2RvbmUoKSBvdmVycmlkZTsKKyAKKyAgICAgICAgIFFXYXlsYW5kWGRnU3VyZmFjZSAqbV94ZGdT dXJmYWNlID0gbnVsbHB0cjsKKy0gICAgICAgIFFXYXlsYW5kWGRnU3VyZmFjZSAqbV9wYXJlbnQg PSBudWxscHRyOworKyAgICAgICAgUVdheWxhbmRYZGdTdXJmYWNlICptX3BhcmVudFhkZ1N1cmZh Y2UgPSBudWxscHRyOworKyAgICAgICAgUVdheWxhbmRXaW5kb3cgKm1fcGFyZW50ID0gbnVsbHB0 cjsKKyAgICAgICAgIGJvb2wgbV9ncmFiYmluZyA9IGZhbHNlOworICAgICB9OworIAorZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9x d2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAK K2luZGV4IDg3NjlkOTcxLi5kYTBkZDZhNyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRp b24uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcAorQEAgLTY5LDIwICs2OSw2IEBA IFFXYXlsYW5kU2hlbGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsSW50ZWdyYXRpb246OmNyZWF0 ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpCisgICAgIHJldHVybiBtX3hkZ1NoZWxsLT5nZXRYZGdT dXJmYWNlKHdpbmRvdyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRYZGdTaGVsbEludGVncmF0aW9u OjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFX YXlsYW5kV2luZG93ICpvbGRGb2N1cykKKy17CistICAgIGlmIChuZXdGb2N1cykgeworLSAgICAg ICAgYXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4o bmV3Rm9jdXMtPnNoZWxsU3VyZmFjZSgpKTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNlICYmICF4 ZGdTdXJmYWNlLT5oYW5kbGVzQWN0aXZlU3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rpc3BsYXkt PmhhbmRsZVdpbmRvd0FjdGl2YXRlZChuZXdGb2N1cyk7CistICAgIH0KKy0gICAgaWYgKG9sZEZv Y3VzICYmIHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4ob2xkRm9jdXMtPnNoZWxs U3VyZmFjZSgpKSkgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxR V2F5bGFuZFhkZ1N1cmZhY2UgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFjZSgpKTsKKy0gICAgICAg IGlmICh4ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNlLT5oYW5kbGVzQWN0aXZlU3RhdGUoKSkKKy0g ICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG9sZEZvY3VzKTsK Ky0gICAgfQorLX0KKy0KKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhk Z3NoZWxsaW50ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGI2 Y2FhNmM5Li4yZjkyOWY5OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb25fcC5oCisr KysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdh eWxhbmR4ZGdzaGVsbGludGVncmF0aW9uX3AuaAorQEAgLTY1LDcgKzY1LDYgQEAgcHVibGljOgor ICAgICBRV2F5bGFuZFhkZ1NoZWxsSW50ZWdyYXRpb24oKSB7fQorICAgICBib29sIGluaXRpYWxp emUoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAgICAgUVdheWxhbmRTaGVs bFN1cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSBvdmVy cmlkZTsKKy0gICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRv dyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgb3ZlcnJpZGU7CisgCisgcHJp dmF0ZToKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRYZGdTaGVsbD4gbV94ZGdTaGVsbDsK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZGlucHV0bWV0aG9kZXZl bnRidWlsZGVyLmNwcCBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kaW5wdXRtZXRob2Rl dmVudGJ1aWxkZXIuY3BwCitpbmRleCA1MjZkMGVmNC4uZjUwY2NmMzAgMTAwNjQ0CistLS0gYS9x dHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcAor KysrIGIvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRl ci5jcHAKK0BAIC0zOSw3ICszOSwxMCBAQAorIAorICNpbmNsdWRlICJxd2F5bGFuZGlucHV0bWV0 aG9kZXZlbnRidWlsZGVyX3AuaCIKKyAKKysjaW5jbHVkZSA8UUJydXNoPgorKyNpbmNsdWRlIDxR R3VpQXBwbGljYXRpb24+CisgI2luY2x1ZGUgPFFJbnB1dE1ldGhvZD4KKysjaW5jbHVkZSA8UVBh bGV0dGU+CisgI2luY2x1ZGUgPFFUZXh0Q2hhckZvcm1hdD4KKyAKKyAjaWZkZWYgUVRfQlVJTERf V0FZTEFORENPTVBPU0lUT1JfTElCCitAQCAtODEsMzIgKzg0LDM4IEBAIHZvaWQgUVdheWxhbmRJ bnB1dE1ldGhvZEV2ZW50QnVpbGRlcjo6YWRkUHJlZWRpdFN0eWxpbmcodWludDMyX3QgaW5kZXgs IHVpbnQzMl90CisgICAgIFFUZXh0Q2hhckZvcm1hdCBmb3JtYXQ7CisgCisgICAgIHN3aXRjaCAo c3R5bGUpIHsKKy0gICAgY2FzZSAwOgorLSAgICBjYXNlIDE6CisrICAgIGNhc2UgWldQX1RFWFRf SU5QVVRfVjJfUFJFRURJVF9TVFlMRV9OT05FOgorKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2Ug WldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9ERUZBVUxUOgorKyAgICBjYXNlIFpXUF9U RVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfVU5ERVJMSU5FOgorICAgICAgICAgZm9ybWF0LnNl dEZvbnRVbmRlcmxpbmUodHJ1ZSk7CisgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUo UVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOworICAgICAgICAgbV9wcmVlZGl0U3R5 bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50 OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKyAgICAgICAgIGJyZWFrOwor LSAgICBjYXNlIDI6CistICAgIGNhc2UgMzoKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9Q UkVFRElUX1NUWUxFX0FDVElWRToKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElU X1NUWUxFX0lOQUNUSVZFOgorICAgICAgICAgZm9ybWF0LnNldEZvbnRXZWlnaHQoUUZvbnQ6OkJv bGQpOworICAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CisgICAgICAgICBm b3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUp OworICAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0 cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3Jt YXQpKTsKKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIDQ6CistICAgICAgICBmb3JtYXQuc2V0 Rm9udFVuZGVybGluZSh0cnVlKTsKKy0gICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShR VGV4dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7CistICAgICAgICBtX3ByZWVkaXRTdHls ZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6 OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworKyAgICBjYXNlIFpXUF9URVhU X0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfSElHSExJR0hUOgorKyAgICBjYXNlIFpXUF9URVhUX0lO UFVUX1YyX1BSRUVESVRfU1RZTEVfU0VMRUNUSU9OOgorKyAgICAgICAgeworKyAgICAgICAgICAg IGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworKyAgICAgICAgICAgIGZvcm1hdC5zZXRV bmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7CisrICAgICAg ICAgICAgUVBhbGV0dGUgcGFsZXR0ZSA9IHFBcHAtPnBhbGV0dGUoKTsKKysgICAgICAgICAgICBm b3JtYXQuc2V0QmFja2dyb3VuZChRQnJ1c2gocGFsZXR0ZS5jb2xvcihRUGFsZXR0ZTo6QWN0aXZl LCBRUGFsZXR0ZTo6SGlnaGxpZ2h0KSkpOworKyAgICAgICAgICAgIGZvcm1hdC5zZXRGb3JlZ3Jv dW5kKFFCcnVzaChwYWxldHRlLmNvbG9yKFFQYWxldHRlOjpBY3RpdmUsIFFQYWxldHRlOjpIaWdo bGlnaHRlZFRleHQpKSk7CisrICAgICAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5w dXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBp bmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKysgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLSAg ICBjYXNlIDU6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9JTkNP UlJFQ1Q6CisgICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKyAgICAgICAg IGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OldhdmVVbmRlcmxpbmUp OworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZUNvbG9yKFFDb2xvcihRdDo6cmVkKSk7Cisg ICAgICAgICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1 dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkp OworICAgICAgICAgYnJlYWs7CistLy8gICAgY2FzZSBRdFdheWxhbmQ6OndsX3RleHRfaW5wdXQ6 OnByZWVkaXRfc3R5bGVfc2VsZWN0aW9uOgorLS8vICAgIGNhc2UgUXRXYXlsYW5kOjp3bF90ZXh0 X2lucHV0OjpwcmVlZGl0X3N0eWxlX25vbmU6CisgICAgIGRlZmF1bHQ6CisgICAgICAgICBicmVh azsKKyAgICAgfQorQEAgLTE1Myw3ICsxNjIsNyBAQCBRSW5wdXRNZXRob2RFdmVudCBRV2F5bGFu ZElucHV0TWV0aG9kRXZlbnRCdWlsZGVyOjpidWlsZFByZWVkaXQoY29uc3QgUVN0cmluZyAmdAor IAorICAgICBpZiAobV9wcmVlZGl0Q3Vyc29yIDwgMCkgeworICAgICAgICAgYXR0cmlidXRlcy5h cHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6Q3Vy c29yLCAwLCAwLCBRVmFyaWFudCgpKSk7CistICAgIH0gZWxzZSBpZiAobV9wcmVlZGl0Q3Vyc29y ID4gMCkgeworKyAgICB9IGVsc2UgeworICAgICAgICAgYXR0cmlidXRlcy5hcHBlbmQoUUlucHV0 TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6Q3Vyc29yLCBpbmRleEZy b21XYXlsYW5kKHRleHQsIG1fcHJlZWRpdEN1cnNvciksIDEsIFFWYXJpYW50KCkpKTsKKyAgICAg fQorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBl ci5jcHAgYi9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZG1pbWVoZWxwZXIuY3BwCitpbmRl eCBhNWZkZDM0ZC4uZTJmZTE5MjggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3NoYXJlZC9x d2F5bGFuZG1pbWVoZWxwZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFu ZG1pbWVoZWxwZXIuY3BwCitAQCAtNjAsNyArNjAsNyBAQCBRQnl0ZUFycmF5IFFXYXlsYW5kTWlt ZUhlbHBlcjo6Z2V0Qnl0ZUFycmF5KFFNaW1lRGF0YSAqbWltZURhdGEsIGNvbnN0IFFTdHJpbmcg JgorICAgICAgICAgICAgIGJ1Zi5vcGVuKFFJT0RldmljZTo6UmVhZFdyaXRlKTsKKyAgICAgICAg ICAgICBRQnl0ZUFycmF5IGZtdCA9ICJCTVAiOworICAgICAgICAgICAgIGlmIChtaW1lVHlwZS5z dGFydHNXaXRoKFFMYXRpbjFTdHJpbmcoImltYWdlLyIpKSkgeworLSAgICAgICAgICAgICAgICBR Qnl0ZUFycmF5IGltZ0ZtdCA9IG1pbWVUeXBlLm1pZCg2KS50b1VwcGVyKCkudG9MYXRpbjEoKTsK KysgICAgICAgICAgICAgICAgUUJ5dGVBcnJheSBpbWdGbXQgPSBtaW1lVHlwZS5taWQoNikudG9M b3dlcigpLnRvTGF0aW4xKCk7CisgICAgICAgICAgICAgICAgIGlmIChRSW1hZ2VXcml0ZXI6OnN1 cHBvcnRlZEltYWdlRm9ybWF0cygpLmNvbnRhaW5zKGltZ0ZtdCkpCisgICAgICAgICAgICAgICAg ICAgICBmbXQgPSBpbWdGbXQ7CisgICAgICAgICAgICAgfQorQEAgLTc0LDcgKzc0LDcgQEAgUUJ5 dGVBcnJheSBRV2F5bGFuZE1pbWVIZWxwZXI6OmdldEJ5dGVBcnJheShRTWltZURhdGEgKm1pbWVE YXRhLCBjb25zdCBRU3RyaW5nICYKKyAgICAgICAgIFFMaXN0PFFVcmw+IHVybHMgPSBtaW1lRGF0 YS0+dXJscygpOworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB1cmxzLmNvdW50KCk7ICsr aSkgeworICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKHVybHMuYXQoaSkudG9FbmNvZGVkKCkp OworLSAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdcbicpOworKyAgICAgICAgICAgIGNvbnRl bnQuYXBwZW5kKCJcclxuIik7CisgICAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICBj b250ZW50ID0gbWltZURhdGEtPmRhdGEobWltZVR5cGUpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC90ZXN0cy9hdXRvL2NsaWVudC9kYXRhZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAgYi9x dHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEu Y3BwCitpbmRleCAxNTY4YjNiOS4uMDY3NDEwZDAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVz dHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEuY3BwCisrKysgYi9x dHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEu Y3BwCitAQCAtMzUsNyArMzUsNyBAQAorIAorIHVzaW5nIG5hbWVzcGFjZSBNb2NrQ29tcG9zaXRv cjsKKyAKKy1jb25zdGV4cHIgaW50IGRhdGFEZXZpY2VWZXJzaW9uID0gMTsKKytjb25zdGV4cHIg aW50IGRhdGFEZXZpY2VWZXJzaW9uID0gMzsKKyAKKyBjbGFzcyBEYXRhRGV2aWNlQ29tcG9zaXRv ciA6IHB1YmxpYyBEZWZhdWx0Q29tcG9zaXRvciB7CisgcHVibGljOgorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAgYi9xdHdheWxh bmQvdGVzdHMvYXV0by9jbGllbnQvc2VhdHY1L3RzdF9zZWF0djUuY3BwCitpbmRleCA5MzEyYzJl NS4uMmVhMzgyZjEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2Vh dHY1L3RzdF9zZWF0djUuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2Vh dHY1L3RzdF9zZWF0djUuY3BwCitAQCAtNzMsNiArNzMsNyBAQCBwcml2YXRlIHNsb3RzOgorICAg ICB2b2lkIG11bHRpVG91Y2goKTsKKyAgICAgdm9pZCBtdWx0aVRvdWNoVXBBbmRNb3Rpb25GcmFt ZSgpOworICAgICB2b2lkIHRhcEFuZE1vdmVJblNhbWVGcmFtZSgpOworKyAgICB2b2lkIGNhbmNl bFRvdWNoKCk7CisgfTsKKyAKKyB2b2lkIHRzdF9zZWF0djU6OmJpbmRzVG9TZWF0KCkKK0BAIC02 NDYsNSArNjQ3LDM0IEBAIHZvaWQgdHN0X3NlYXR2NTo6dGFwQW5kTW92ZUluU2FtZUZyYW1lKCkK KyAgICAgUVRSWV9DT01QQVJFKHdpbmRvdy5tX2V2ZW50cy5sYXN0KCkudG91Y2hQb2ludHMuZmly c3QoKS5zdGF0ZSgpLCBRdDo6VG91Y2hQb2ludFN0YXRlOjpUb3VjaFBvaW50UmVsZWFzZWQpOwor IH0KKyAKKyt2b2lkIHRzdF9zZWF0djU6OmNhbmNlbFRvdWNoKCkKKyt7CisrICAgIFRvdWNoV2lu ZG93IHdpbmRvdzsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdTdXJmYWNlKCkgJiYg eGRnU3VyZmFjZSgpLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrCisrICAgIGV4ZWMo Wz1dIHsKKysgICAgICAgIGF1dG8gKnQgPSB0b3VjaCgpOworKyAgICAgICAgYXV0byAqYyA9IGNs aWVudCgpOworKyAgICAgICAgdC0+c2VuZERvd24oeGRnVG9wbGV2ZWwoKS0+c3VyZmFjZSgpLCB7 MzIsIDMyfSwgMSk7CisrICAgICAgICB0LT5zZW5kRnJhbWUoYyk7CisrICAgICAgICB0LT5zZW5k Q2FuY2VsKGMpOworKyAgICAgICAgdC0+c2VuZEZyYW1lKGMpOworKyAgICB9KTsKKysKKysgICAg UVRSWV9WRVJJRlkoIXdpbmRvdy5tX2V2ZW50cy5lbXB0eSgpKTsKKysgICAgeworKyAgICAgICAg YXV0byBlID0gd2luZG93Lm1fZXZlbnRzLnRha2VGaXJzdCgpOworKyAgICAgICAgUUNPTVBBUkUo ZS50eXBlLCBRRXZlbnQ6OlRvdWNoQmVnaW4pOworKyAgICAgICAgUUNPTVBBUkUoZS50b3VjaFBv aW50U3RhdGVzLCBRdDo6VG91Y2hQb2ludFByZXNzZWQpOworKyAgICAgICAgUUNPTVBBUkUoZS50 b3VjaFBvaW50cy5sZW5ndGgoKSwgMSk7CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRz LmZpcnN0KCkucG9zKCksIFFQb2ludEYoMzItd2luZG93LmZyYW1lTWFyZ2lucygpLmxlZnQoKSwg MzItd2luZG93LmZyYW1lTWFyZ2lucygpLnRvcCgpKSk7CisrICAgIH0KKysgICAgeworKyAgICAg ICAgYXV0byBlID0gd2luZG93Lm1fZXZlbnRzLnRha2VGaXJzdCgpOworKyAgICAgICAgUUNPTVBB UkUoZS50eXBlLCBRRXZlbnQ6OlRvdWNoQ2FuY2VsKTsKKysgICAgICAgIFFDT01QQVJFKGUudG91 Y2hQb2ludHMubGVuZ3RoKCksIDApOworKyAgICB9CisrfQorKworIFFDT01QT1NJVE9SX1RFU1Rf TUFJTih0c3Rfc2VhdHY1KQorICNpbmNsdWRlICJ0c3Rfc2VhdHY1Lm1vYyIKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVjb21wb3NpdG9yLmNwcCBi L3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwCitp bmRleCA1YzZjODNiYS4uZmE5Yjc2NjIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0 by9jbGllbnQvc2hhcmVkL2NvcmVjb21wb3NpdG9yLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3Rz L2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5jcHAKK0BAIC0yNyw2ICsyNyw3IEBA CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKyAKKyAjaW5jbHVkZSAiY29yZWNvbXBvc2l0b3IuaCIK KysjaW5jbHVkZSA8dGhyZWFkPgorIAorIG5hbWVzcGFjZSBNb2NrQ29tcG9zaXRvciB7CisgCitk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9j b2wuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wu Y3BwCitpbmRleCAwZDk4ODUyMS4uZDFhMmU3Y2IgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVz dHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAKKysrKyBiL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmNwcAorQEAgLTQ1MSw2ICs0NTEs MTMgQEAgdm9pZCBUb3VjaDo6c2VuZEZyYW1lKHdsX2NsaWVudCAqY2xpZW50KQorICAgICAgICAg c2VuZF9mcmFtZShyLT5oYW5kbGUpOworIH0KKyAKKyt2b2lkIFRvdWNoOjpzZW5kQ2FuY2VsKHds X2NsaWVudCAqY2xpZW50KQorK3sKKysgICAgY29uc3QgYXV0byB0b3VjaFJlc291cmNlcyA9IHJl c291cmNlTWFwKCkudmFsdWVzKGNsaWVudCk7CisrICAgIGZvciAoYXV0byAqciA6IHRvdWNoUmVz b3VyY2VzKQorKyAgICAgICAgc2VuZF9jYW5jZWwoci0+aGFuZGxlKTsKKyt9CisrCisgdWludCBL ZXlib2FyZDo6c2VuZEVudGVyKFN1cmZhY2UgKnN1cmZhY2UpCisgeworICAgICBhdXRvIHNlcmlh bCA9IG1fc2VhdC0+bV9jb21wb3NpdG9yLT5uZXh0U2VyaWFsKCk7CitkaWZmIC0tZ2l0IGEvcXR3 YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaCBiL3F0d2F5bGFu ZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmgKK2luZGV4IGExYWYxMzdh Li4yMTBkOGRkYiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFy ZWQvY29yZXByb3RvY29sLmgKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFy ZWQvY29yZXByb3RvY29sLmgKK0BAIC0xNTgsNyArMTU4LDcgQEAgY2xhc3MgV2xDb21wb3NpdG9y IDogcHVibGljIEdsb2JhbCwgcHVibGljIFF0V2F5bGFuZFNlcnZlcjo6d2xfY29tcG9zaXRvcgor IHsKKyAgICAgUV9PQkpFQ1QKKyBwdWJsaWM6CistICAgIGV4cGxpY2l0IFdsQ29tcG9zaXRvcihD b3JlQ29tcG9zaXRvciAqY29tcG9zaXRvciwgaW50IHZlcnNpb24gPSAzKQorKyAgICBleHBsaWNp dCBXbENvbXBvc2l0b3IoQ29yZUNvbXBvc2l0b3IgKmNvbXBvc2l0b3IsIGludCB2ZXJzaW9uID0g NCkKKyAgICAgICAgIDogUXRXYXlsYW5kU2VydmVyOjp3bF9jb21wb3NpdG9yKGNvbXBvc2l0b3It Pm1fZGlzcGxheSwgdmVyc2lvbikKKyAgICAgICAgICwgbV9jb21wb3NpdG9yKGNvbXBvc2l0b3Ip CisgICAgIHt9CitAQCAtMzY0LDYgKzM2NCw3IEBAIHB1YmxpYzoKKyAgICAgdWludCBzZW5kVXAo d2xfY2xpZW50ICpjbGllbnQsIGludCBpZCk7CisgICAgIHZvaWQgc2VuZE1vdGlvbih3bF9jbGll bnQgKmNsaWVudCwgY29uc3QgUVBvaW50RiAmcG9zaXRpb24sIGludCBpZCk7CisgICAgIHZvaWQg c2VuZEZyYW1lKHdsX2NsaWVudCAqY2xpZW50KTsKKysgICAgdm9pZCBzZW5kQ2FuY2VsKHdsX2Ns aWVudCAqY2xpZW50KTsKKyAKKyAgICAgU2VhdCAqbV9zZWF0ID0gbnVsbHB0cjsKKyB9OworZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tjb21w b3NpdG9yLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tj b21wb3NpdG9yLmNwcAoraW5kZXggYTQxNWNiZjUuLmIxZDNkMDdkIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwCisr KysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2NrY29tcG9zaXRv ci5jcHAKK0BAIC0zNDIsNyArMzQyLDcgQEAgQ29tcG9zaXRvcjo6Q29tcG9zaXRvcihNb2NrQ29t cG9zaXRvciAqbW9ja0NvbXBvc2l0b3IpCisgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7Cisg ICAgIH0KKyAKKy0gICAgd2xfZ2xvYmFsX2NyZWF0ZShtX2Rpc3BsYXksICZ3bF9jb21wb3NpdG9y X2ludGVyZmFjZSwgMSwgdGhpcywgYmluZENvbXBvc2l0b3IpOworKyAgICB3bF9nbG9iYWxfY3Jl YXRlKG1fZGlzcGxheSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCA0LCB0aGlzLCBiaW5kQ29t cG9zaXRvcik7CisgCisgICAgIG1fZGF0YV9kZXZpY2VfbWFuYWdlci5yZXNldChuZXcgRGF0YURl dmljZU1hbmFnZXIodGhpcywgbV9kaXNwbGF5KSk7CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwIGIvcXR3YXlsYW5k L3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwCitpbmRleCBlOWRm NWY5MC4uYzMyNDZlNGEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQv c2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmNwcAorQEAgLTEyNSw2ICsxMjUsMTYgQEAgdm9p ZCBTdXJmYWNlOjpzdXJmYWNlX2RhbWFnZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgIFFfVU5V U0VEKGhlaWdodCk7CisgfQorIAorK3ZvaWQgU3VyZmFjZTo6c3VyZmFjZV9kYW1hZ2VfYnVmZmVy KFJlc291cmNlICpyZXNvdXJjZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisr eworKyAgICBRX1VOVVNFRChyZXNvdXJjZSk7CisrICAgIFFfVU5VU0VEKHgpOworKyAgICBRX1VO VVNFRCh5KTsKKysgICAgUV9VTlVTRUQod2lkdGgpOworKyAgICBRX1VOVVNFRChoZWlnaHQpOwor K30KKysKKyB2b2lkIFN1cmZhY2U6OnN1cmZhY2VfZnJhbWUoUmVzb3VyY2UgKnJlc291cmNlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjYWxsYmFjaykKKyB7CitkaWZm IC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZh Y2UuaCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNl LmgKK2luZGV4IDk0OWRjMjNkLi5kMTc2ODM3ZSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0 cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmgKKysrKyBiL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmgKK0BAIC02NSw2ICs2NSw4 IEBAIHByb3RlY3RlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2xfcmVzb3Vy Y2UgKmJ1ZmZlciwgaW50IHgsIGludCB5KSBvdmVycmlkZTsKKyAgICAgdm9pZCBzdXJmYWNlX2Rh bWFnZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJf dCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KSBvdmVycmlkZTsK KysgICAgdm9pZCBzdXJmYWNlX2RhbWFnZV9idWZmZXIoUmVzb3VyY2UgKnJlc291cmNlLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpIG92ZXJyaWRlOworICAgICB2b2lkIHN1cmZhY2VfZnJh bWUoUmVzb3VyY2UgKnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg Y2FsbGJhY2spIG92ZXJyaWRlOworICAgICB2b2lkIHN1cmZhY2VfY29tbWl0KFJlc291cmNlICpy ZXNvdXJjZSkgb3ZlcnJpZGU7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L3N1cmZhY2UvdHN0X3N1cmZhY2UuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50 L3N1cmZhY2UvdHN0X3N1cmZhY2UuY3BwCitpbmRleCA5NWU0ZTYwOS4uNjBjNjcyY2UgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFjZS5j cHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNl LmNwcAorQEAgLTEyOSw2ICsxMjksMTAgQEAgdm9pZCB0c3Rfc3VyZmFjZTo6d2FpdEZvckZyYW1l Q2FsbGJhY2tHbCgpCisgICAgIC8vIE1ha2Ugc3VyZSB3ZSBmb2xsb3cgZnJhbWUgY2FsbGJhY2tz IGZvciBzb21lIGZyYW1lcworICAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7ICsraSkgeworICAg ICAgICAgeGRnUGluZ0FuZFdhaXRGb3JQb25nKCk7IC8vIE1ha2Ugc3VyZSB0aGluZ3MgaGF2ZSBo YXBwZW5lZCBvbiB0aGUgY2xpZW50CisrICAgICAgICBpZiAoIXFFbnZpcm9ubWVudFZhcmlhYmxl SW50VmFsdWUoIlFUX1dBWUxBTkRfRElTQUJMRV9XSU5ET1dERUNPUkFUSU9OIikgJiYgaSA9PSAw KSB7CisrICAgICAgICAgICAgUUNPTVBBUkUoYnVmZmVyU3B5LmNvdW50KCksIDEpOworKyAgICAg ICAgICAgIGJ1ZmZlclNweS5yZW1vdmVGaXJzdCgpOworKyAgICAgICAgfQorICAgICAgICAgZXhl YyhbJl0geworICAgICAgICAgICAgIFFWRVJJRlkoYnVmZmVyU3B5LmVtcHR5KCkpOyAvLyBNYWtl IHN1cmUgbm8gZXh0cmEgYnVmZmVycyBoYXZlIGFycml2ZWQKKyAgICAgICAgICAgICBRVkVSSUZZ KCF4ZGdUb3BsZXZlbCgpLT5zdXJmYWNlKCktPm1fd2FpdGluZ0ZyYW1lQ2FsbGJhY2tzLmVtcHR5 KCkpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC94ZGdzaGVsbC90 c3RfeGRnc2hlbGwuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3Rz dF94ZGdzaGVsbC5jcHAKK2luZGV4IDIyNzdiYmI4Li43NDc4NzViNCAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwCisrKysg Yi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcAor QEAgLTMxLDYgKzMxLDcgQEAKKyAjaW5jbHVkZSA8UXRHdWkvUU9wZW5HTFdpbmRvdz4KKyAjaW5j bHVkZSA8UXRHdWkvcXBhL3FwbGF0Zm9ybW5hdGl2ZWludGVyZmFjZS5oPgorICNpbmNsdWRlIDxR dFdheWxhbmRDbGllbnQvcHJpdmF0ZS93YXlsYW5kLXdheWxhbmQtY2xpZW50LXByb3RvY29sLmg+ CisrI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3F3YXlsYW5kd2luZG93X3AuaD4K KyAKKyB1c2luZyBuYW1lc3BhY2UgTW9ja0NvbXBvc2l0b3I7CisgCitAQCAtNDUsNiArNDYsNyBA QCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGNvbmZpZ3VyZVN0YXRlcygpOworICAgICB2b2lk IHBvcHVwKCk7CisgICAgIHZvaWQgdG9vbHRpcE9uUG9wdXAoKTsKKysgICAgdm9pZCB0b29sdGlw QW5kU2libGluZ1BvcHVwKCk7CisgICAgIHZvaWQgc3dpdGNoUG9wdXBzKCk7CisgICAgIHZvaWQg aGlkZVBvcHVwUGFyZW50KCk7CisgICAgIHZvaWQgcG9uZ3MoKTsKK0BAIC0xMzgsNiArMTQwLDcg QEAgdm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVNpemUoKQorIAorIHZvaWQgdHN0X3hkZ3No ZWxsOjpjb25maWd1cmVTdGF0ZXMoKQorIHsKKysgICAgUVZFUklGWShxcHV0ZW52KCJRVF9XQVlM QU5EX0ZSQU1FX0NBTExCQUNLX1RJTUVPVVQiLCAiMCIpKTsKKyAgICAgUVJhc3RlcldpbmRvdyB3 aW5kb3c7CisgICAgIHdpbmRvdy5yZXNpemUoNjQsIDQ4KTsKKyAgICAgd2luZG93LnNob3coKTsK K0BAIC0xNTQsOSArMTU3LDEyIEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTdGF0ZXMo KQorICAgICAvLyBUb3BsZXZlbCB3aW5kb3dzIGRvbid0IGtub3cgdGhlaXIgcG9zaXRpb24gb24g eGRnLXNoZWxsCisgLy8gICAgUUNPTVBBUkUod2luZG93LmZyYW1lR2VvbWV0cnkoKS50b3BMZWZ0 KCksIFFQb2ludCgpKTsgLy8gVE9ETzogdGhpcyBkb2Vzbid0IGN1cnJlbnRseSB3b3JrIHdoZW4g d2luZG93IGRlY29yYXRpb25zIGFyZSBlbmFibGVkCisgCistLy8gICAgUUVYUEVDVF9GQUlMKCIi LCAiY29uZmlndXJlIGhhcyBhbHJlYWR5IGJlZW4gYWNrZWQsIHdlIHNob3VsZG4ndCBoYXZlIHRv IHdhaXQgZm9yIGlzQWN0aXZlIiwgQ29udGludWUpOworLS8vICAgIFFWRVJJRlkod2luZG93Lmlz QWN0aXZlKCkpOworLSAgICBRVFJZX1ZFUklGWSh3aW5kb3cuaXNBY3RpdmUoKSk7IC8vIEp1c3Qg bWFrZSBzdXJlIGl0IGV2ZW50dWFsbHkgZ2V0J3Mgc2V0IGNvcnJlY3RseQorKyAgICAvLyB3aW5k b3cud2luZG93c3RhdGUoKSBpcyBkcml2ZW4gYnkga2V5Ym9hcmQgZm9jdXMsIGhvd2V2ZXIgZm9y IGRlY29yYXRpb25zIHdlIHdhbnQgdG8gZm9sbG93CisrICAgIC8vIFhER1NoZWxsIHRoaXMgaXMg aW50ZXJuYWwgdG8gUXRXYXlsYW5kIHNvIGl0IGlzIHF1ZXJpZWQgZGlyZWN0bHkKKysgICAgYXV0 byB3YXlsYW5kV2luZG93ID0gc3RhdGljX2Nhc3Q8UXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZFdp bmRvdyAqPih3aW5kb3cuaGFuZGxlKCkpOworKyAgICBRX0FTU0VSVCh3YXlsYW5kV2luZG93KTsK KysgICAgUVRSWV9WRVJJRlkod2F5bGFuZFdpbmRvdy0+d2luZG93U3RhdGVzKCkudGVzdEZsYWco CisrICAgICAgICAgICAgUXQ6OldpbmRvd0FjdGl2ZSkpOyAvLyBKdXN0IG1ha2Ugc3VyZSBpdCBl dmVudHVhbGx5IGdldCdzIHNldCBjb3JyZWN0bHkKKyAKKyAgICAgY29uc3QgUVNpemUgc2NyZWVu U2l6ZSg2NDAsIDQ4MCk7CisgICAgIGNvbnN0IHVpbnQgbWF4aW1pemVkU2VyaWFsID0gZXhlYyhb PV0geworQEAgLTE4Niw2ICsxOTIsNyBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJlU3Rh dGVzKCkKKyAgICAgUUNPTVBBUkUod2luZG93LndpbmRvd1N0YXRlcygpLCBRdDo6V2luZG93Tm9T dGF0ZSk7CisgICAgIFFDT01QQVJFKHdpbmRvdy5mcmFtZUdlb21ldHJ5KCkuc2l6ZSgpLCB3aW5k b3dlZFNpemUpOworIC8vICAgIFFDT01QQVJFKHdpbmRvdy5mcmFtZUdlb21ldHJ5KCkudG9wTGVm dCgpLCBRUG9pbnQoKSk7IC8vIFRPRE86IHRoaXMgZG9lc24ndCBjdXJyZW50bHkgd29yayB3aGVu IHdpbmRvdyBkZWNvcmF0aW9ucyBhcmUgZW5hYmxlZAorKyAgICBRVkVSSUZZKHF1bnNldGVudigi UVRfV0FZTEFORF9GUkFNRV9DQUxMQkFDS19USU1FT1VUIikpOworIH0KKyAKKyB2b2lkIHRzdF94 ZGdzaGVsbDo6cG9wdXAoKQorQEAgLTM0MCw2ICszNDcsOTIgQEAgdm9pZCB0c3RfeGRnc2hlbGw6 OnRvb2x0aXBPblBvcHVwKCkKKyAgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAo MCksIG51bGxwdHIpOworIH0KKyAKKyt2b2lkIHRzdF94ZGdzaGVsbDo6dG9vbHRpcEFuZFNpYmxp bmdQb3B1cCgpCisreworKyAgICBjbGFzcyBUb29sVGlwIDogcHVibGljIFFSYXN0ZXJXaW5kb3cg eworKyAgICBwdWJsaWM6CisrICAgICAgICBleHBsaWNpdCBUb29sVGlwKFFXaW5kb3cgKnBhcmVu dCkgeworKyAgICAgICAgICAgIHNldFRyYW5zaWVudFBhcmVudChwYXJlbnQpOworKyAgICAgICAg ICAgIHNldEZsYWdzKFF0OjpUb29sVGlwKTsKKysgICAgICAgICAgICByZXNpemUoMTAwLCAxMDAp OworKyAgICAgICAgICAgIHNob3coKTsKKysgICAgICAgIH0KKysgICAgICAgIHZvaWQgbW91c2VQ cmVzc0V2ZW50KFFNb3VzZUV2ZW50ICpldmVudCkgb3ZlcnJpZGUgeworKyAgICAgICAgICAgIFFS YXN0ZXJXaW5kb3c6Om1vdXNlUHJlc3NFdmVudChldmVudCk7CisrICAgICAgICAgICAgbV9wb3B1 cCA9IG5ldyBRUmFzdGVyV2luZG93OworKyAgICAgICAgICAgIG1fcG9wdXAtPnNldFRyYW5zaWVu dFBhcmVudCh0cmFuc2llbnRQYXJlbnQoKSk7CisrICAgICAgICAgICAgbV9wb3B1cC0+c2V0Rmxh Z3MoUXQ6OlBvcHVwKTsKKysgICAgICAgICAgICBtX3BvcHVwLT5yZXNpemUoMTAwLCAxMDApOwor KyAgICAgICAgICAgIG1fcG9wdXAtPnNob3coKTsKKysgICAgICAgIH0KKysKKysgICAgICAgIFFS YXN0ZXJXaW5kb3cgKm1fcG9wdXAgPSBudWxscHRyOworKyAgICB9OworKworKyAgICBjbGFzcyBX aW5kb3cgOiBwdWJsaWMgUVJhc3RlcldpbmRvdyB7CisrICAgIHB1YmxpYzoKKysgICAgICAgIHZv aWQgbW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50ICpldmVudCkgb3ZlcnJpZGUgeworKyAgICAg ICAgICAgIFFSYXN0ZXJXaW5kb3c6Om1vdXNlUHJlc3NFdmVudChldmVudCk7CisrICAgICAgICAg ICAgbV90b29sdGlwID0gbmV3IFRvb2xUaXAodGhpcyk7CisrICAgICAgICB9CisrICAgICAgICBU b29sVGlwICptX3Rvb2x0aXAgPSBudWxscHRyOworKyAgICB9OworKworKyAgICBXaW5kb3cgd2lu ZG93OworKyAgICB3aW5kb3cucmVzaXplKDIwMCwgMjAwKTsKKysgICAgd2luZG93LnNob3coKTsK KysKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdUb3BsZXZlbCgpKTsKKysgICAgZXhl YyhbPV0geyB4ZGdUb3BsZXZlbCgpLT5zZW5kQ29tcGxldGVDb25maWd1cmUoKTsgfSk7CisrICAg IFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnVG9wbGV2ZWwoKS0+bV94ZGdTdXJmYWNlLT5tX2Nv bW1pdHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrCisrICAgIGV4ZWMoWz1dIHsKKysgICAgICAgIGF1 dG8gKnN1cmZhY2UgPSB4ZGdUb3BsZXZlbCgpLT5zdXJmYWNlKCk7CisrICAgICAgICBhdXRvICpw ID0gcG9pbnRlcigpOworKyAgICAgICAgYXV0byAqYyA9IGNsaWVudCgpOworKyAgICAgICAgcC0+ c2VuZEVudGVyKHN1cmZhY2UsIHsxMDAsIDEwMH0pOworKyAgICAgICAgcC0+c2VuZEZyYW1lKGMp OworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6OmJ1 dHRvbl9zdGF0ZV9wcmVzc2VkKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24oY2xpZW50KCksIEJU Tl9MRUZULCBQb2ludGVyOjpidXR0b25fc3RhdGVfcmVsZWFzZWQpOworKyAgICAgICAgcC0+c2Vu ZEZyYW1lKGMpOworKyAgICAgICAgcC0+c2VuZExlYXZlKHN1cmZhY2UpOworKyAgICAgICAgcC0+ c2VuZEZyYW1lKGMpOworKyAgICB9KTsKKysKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4 ZGdQb3B1cCgpKTsKKysgICAgZXhlYyhbPV0geyB4ZGdQb3B1cCgpLT5zZW5kQ29tcGxldGVDb25m aWd1cmUoUVJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7IH0pOworKyAgICBRQ09NUE9TSVRPUl9U UllfVkVSSUZZKHhkZ1BvcHVwKCktPm1feGRnU3VyZmFjZS0+bV9jb21taXR0ZWRDb25maWd1cmVT ZXJpYWwpOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKCF4ZGdQb3B1cCgpLT5tX2dyYWJi ZWQpOworKworKyAgICBleGVjKFs9XSB7CisrICAgICAgICBhdXRvICpzdXJmYWNlID0geGRnUG9w dXAoKS0+c3VyZmFjZSgpOworKyAgICAgICAgYXV0byAqcCA9IHBvaW50ZXIoKTsKKysgICAgICAg IGF1dG8gKmMgPSBjbGllbnQoKTsKKysgICAgICAgIHAtPnNlbmRFbnRlcihzdXJmYWNlLCB7MTAw LCAxMDB9KTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRCdXR0 b24oY2xpZW50KCksIEJUTl9MRUZULCBQb2ludGVyOjpidXR0b25fc3RhdGVfcHJlc3NlZCk7Cisr ICAgICAgICBwLT5zZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9u X3N0YXRlX3JlbGVhc2VkKTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgfSk7Cisr CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMSkpOworKyAgICBleGVjKFs9 XSB7IHhkZ1BvcHVwKDEpLT5zZW5kQ29tcGxldGVDb25maWd1cmUoUVJlY3QoMTAwLCAxMDAsIDEw MCwgMTAwKSk7IH0pOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDEpLT5t X3hkZ1N1cmZhY2UtPm1fY29tbWl0dGVkQ29uZmlndXJlU2VyaWFsKTsKKysgICAgUUNPTVBPU0lU T1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgxKS0+bV9ncmFiYmVkKTsKKysKKysgICAgLy8gQ2xvc2Ug dGhlIG1pZGRsZSB0b29sdGlwIChpdCBzaG91bGQgbm90IGNsb3NlIHRoZSBzaWJsaW5nIHBvcHVw KQorKyAgICB3aW5kb3cubV90b29sdGlwLT5jbG9zZSgpOworKworKyAgICBRQ09NUE9TSVRPUl9U UllfQ09NUEFSRSh4ZGdQb3B1cCgxKSwgbnVsbHB0cik7CisrICAgIC8vIFZlcmlmeSB0aGUgcmVt YWluaW5nIHhkZyBzdXJmYWNlIGlzIGEgZ3JhYiBwb3B1cC4uCisrICAgIFFDT01QT1NJVE9SX1RS WV9WRVJJRlkoeGRnUG9wdXAoMCkpOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1Bv cHVwKDApLT5tX2dyYWJiZWQpOworKworKyAgICB3aW5kb3cubV90b29sdGlwLT5tX3BvcHVwLT5j bG9zZSgpOworKyAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1cCgxKSwgbnVsbHB0 cik7CisrICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVwKDApLCBudWxscHRyKTsK Kyt9CisrCisgLy8gUVRCVUctNjU2ODAKKyB2b2lkIHRzdF94ZGdzaGVsbDo6c3dpdGNoUG9wdXBz KCkKKyB7CitAQCAtNTA1LDcgKzU5OCw3IEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjptaW5NYXhTaXpl KCkKKyAgICAgd2luZG93LnNob3coKTsKKyAgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdU b3BsZXZlbCgpKTsKKyAKKy0gICAgZXhlYyhbPV0geyB4ZGdUb3BsZXZlbCgpLT5zZW5kQ29tcGxl dGVDb25maWd1cmUoKTsgfSk7CisrICAgIC8vIHdlIGRvbid0IHJvdW5kdHJpcCB3aXRoIG91ciBj b25maWd1cmF0aW9uIHRoZSBpbml0aWFsIGNvbW1pdCBzaG91bGQgYmUgY29ycmVjdAorIAorICAg ICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdUb3BsZXZlbCgpLT5tX2NvbW1pdHRlZC5taW5T aXplLCBRU2l6ZSgxMDAsIDEwMCkpOworICAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdU b3BsZXZlbCgpLT5tX2NvbW1pdHRlZC5tYXhTaXplLCBRU2l6ZSgxMDAwLCAxMDAwKSk7CitTdWJt b2R1bGUgcXR3ZWJjaGFubmVsIDYxODQyMmVlLi5mODk0OTY1NToKK2RpZmYgLS1naXQgYS9xdHdl YmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwIGIvcXR3ZWJj aGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyLmNwcAoraW5kZXggNTM2 ZWI1Yy4uODk4ZDc2OSAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9x bWV0YW9iamVjdHB1Ymxpc2hlci5jcHAKKysrKyBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5l bC9xbWV0YW9iamVjdHB1Ymxpc2hlci5jcHAKK0BAIC0xODYsOCArMTg2LDYgQEAgUV9ERUNMQVJF X1RZUEVJTkZPKE92ZXJsb2FkUmVzb2x1dGlvbkNhbmRpZGF0ZSwgUV9NT1ZBQkxFX1RZUEUpOwor IFFNZXRhT2JqZWN0UHVibGlzaGVyOjpRTWV0YU9iamVjdFB1Ymxpc2hlcihRV2ViQ2hhbm5lbCAq d2ViQ2hhbm5lbCkKKyAgICAgOiBRT2JqZWN0KHdlYkNoYW5uZWwpCisgICAgICwgd2ViQ2hhbm5l bCh3ZWJDaGFubmVsKQorLSAgICAsIHNpZ25hbEhhbmRsZXIodGhpcykKKy0gICAgLCBjbGllbnRJ c0lkbGUoZmFsc2UpCisgICAgICwgYmxvY2tVcGRhdGVzKGZhbHNlKQorICAgICAsIHByb3BlcnR5 VXBkYXRlc0luaXRpYWxpemVkKGZhbHNlKQorIHsKK0BAIC0zMDEsMTcgKzI5OSwxNyBAQCBRSnNv bk9iamVjdCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6Y2xhc3NJbmZvRm9yT2JqZWN0KGNvbnN0IFFP YmplY3QgKm9iamVjdCwgUVdlYgorICAgICByZXR1cm4gZGF0YTsKKyB9CisgCistdm9pZCBRTWV0 YU9iamVjdFB1Ymxpc2hlcjo6c2V0Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxlKQorK3ZvaWQgUU1l dGFPYmplY3RQdWJsaXNoZXI6OnNldENsaWVudElzSWRsZShib29sIGlzSWRsZSwgUVdlYkNoYW5u ZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorIHsKKy0gICAgaWYgKGNsaWVudElzSWRs ZSA9PSBpc0lkbGUpIHsKKy0gICAgICAgIHJldHVybjsKKy0gICAgfQorLSAgICBjbGllbnRJc0lk bGUgPSBpc0lkbGU7CistICAgIGlmICghaXNJZGxlICYmIHRpbWVyLmlzQWN0aXZlKCkpIHsKKy0g ICAgICAgIHRpbWVyLnN0b3AoKTsKKy0gICAgfSBlbHNlIGlmIChpc0lkbGUgJiYgIXRpbWVyLmlz QWN0aXZlKCkpIHsKKy0gICAgICAgIHRpbWVyLnN0YXJ0KFBST1BFUlRZX1VQREFURV9JTlRFUlZB TCwgdGhpcyk7CistICAgIH0KKysgICAgdHJhbnNwb3J0U3RhdGVbdHJhbnNwb3J0XS5jbGllbnRJ c0lkbGUgPSBpc0lkbGU7CisrICAgIGlmIChpc0lkbGUpCisrICAgICAgICBzZW5kRW5xdWV1ZWRQ cm9wZXJ0eVVwZGF0ZXModHJhbnNwb3J0KTsKKyt9CisrCisrYm9vbCBRTWV0YU9iamVjdFB1Ymxp c2hlcjo6aXNDbGllbnRJZGxlKFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9y dCkKKyt7CisrICAgIGF1dG8gZm91bmQgPSB0cmFuc3BvcnRTdGF0ZS5maW5kKHRyYW5zcG9ydCk7 CisrICAgIHJldHVybiBmb3VuZCAhPSB0cmFuc3BvcnRTdGF0ZS5lbmQoKSAmJiBmb3VuZC52YWx1 ZSgpLmNsaWVudElzSWRsZTsKKyB9CisgCisgUUpzb25PYmplY3QgUU1ldGFPYmplY3RQdWJsaXNo ZXI6OmluaXRpYWxpemVDbGllbnQoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNw b3J0KQorQEAgLTMzMyw2ICszMzEsNyBAQCBRSnNvbk9iamVjdCBRTWV0YU9iamVjdFB1Ymxpc2hl cjo6aW5pdGlhbGl6ZUNsaWVudChRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0CisgCisgdm9p ZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZVByb3BlcnR5VXBkYXRlcyhjb25zdCBR T2JqZWN0ICpjb25zdCBvYmplY3QsIGNvbnN0IFFKc29uT2JqZWN0ICZvYmplY3RJbmZvKQorIHsK KysgICAgYXV0byAqc2lnbmFsSGFuZGxlciA9IHNpZ25hbEhhbmRsZXJGb3Iob2JqZWN0KTsKKyAg ICAgZm9yZWFjaCAoY29uc3QgUUpzb25WYWx1ZSAmcHJvcGVydHlJbmZvVmFyLCBvYmplY3RJbmZv W0tFWV9QUk9QRVJUSUVTXS50b0FycmF5KCkpIHsKKyAgICAgICAgIGNvbnN0IFFKc29uQXJyYXkg JnByb3BlcnR5SW5mbyA9IHByb3BlcnR5SW5mb1Zhci50b0FycmF5KCk7CisgICAgICAgICBpZiAo cHJvcGVydHlJbmZvLnNpemUoKSA8IDIpIHsKK0BAIC0zNTMsMTkgKzM1MiwxOSBAQCB2b2lkIFFN ZXRhT2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplUHJvcGVydHlVcGRhdGVzKGNvbnN0IFFPYmpl Y3QgKmNvbnN0IG9iamVjdAorIAorICAgICAgICAgLy8gT25seSBjb25uZWN0IGZvciBhIHByb3Bl cnR5IHVwZGF0ZSBvbmNlCisgICAgICAgICBpZiAoY29ubmVjdGVkUHJvcGVydGllcy5pc0VtcHR5 KCkpIHsKKy0gICAgICAgICAgICBzaWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmplY3QsIHNpZ25h bEluZGV4KTsKKysgICAgICAgICAgICBzaWduYWxIYW5kbGVyLT5jb25uZWN0VG8ob2JqZWN0LCBz aWduYWxJbmRleCk7CisgICAgICAgICB9CisgCisgICAgICAgICBjb25uZWN0ZWRQcm9wZXJ0aWVz Lmluc2VydChwcm9wZXJ0eUluZGV4KTsKKyAgICAgfQorIAorICAgICAvLyBhbHNvIGFsd2F5cyBj b25uZWN0IHRvIGRlc3Ryb3llZCBzaWduYWwKKy0gICAgc2lnbmFsSGFuZGxlci5jb25uZWN0VG8o b2JqZWN0LCBzX2Rlc3Ryb3llZFNpZ25hbEluZGV4KTsKKysgICAgc2lnbmFsSGFuZGxlci0+Y29u bmVjdFRvKG9iamVjdCwgc19kZXN0cm95ZWRTaWduYWxJbmRleCk7CisgfQorIAorIHZvaWQgUU1l dGFPYmplY3RQdWJsaXNoZXI6OnNlbmRQZW5kaW5nUHJvcGVydHlVcGRhdGVzKCkKKyB7CistICAg IGlmIChibG9ja1VwZGF0ZXMgfHwgIWNsaWVudElzSWRsZSB8fCBwZW5kaW5nUHJvcGVydHlVcGRh dGVzLmlzRW1wdHkoKSkgeworKyAgICBpZiAoYmxvY2tVcGRhdGVzKSB7CisgICAgICAgICByZXR1 cm47CisgICAgIH0KKyAKK0BAIC00MTUsMTggKzQxNCwxOSBAQCB2b2lkIFFNZXRhT2JqZWN0UHVi bGlzaGVyOjpzZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpCisgCisgICAgIC8vIGRhdGEgZG9l cyBub3QgY29udGFpbiBzcGVjaWZpYyB1cGRhdGVzCisgICAgIGlmICghZGF0YS5pc0VtcHR5KCkp IHsKKy0gICAgICAgIHNldENsaWVudElzSWRsZShmYWxzZSk7CistCisgICAgICAgICBtZXNzYWdl W0tFWV9EQVRBXSA9IGRhdGE7CistICAgICAgICBicm9hZGNhc3RNZXNzYWdlKG1lc3NhZ2UpOwor KyAgICAgICAgZW5xdWV1ZUJyb2FkY2FzdE1lc3NhZ2UobWVzc2FnZSk7CisgICAgIH0KKyAKKyAg ICAgLy8gc2VuZCBldmVyeSBwcm9wZXJ0eSB1cGRhdGUgd2hpY2ggaXMgbm90IHN1cHBvc2VkIHRv IGJlIGJyb2FkY2FzdGVkCisgICAgIGNvbnN0IFFIYXNoPFFXZWJDaGFubmVsQWJzdHJhY3RUcmFu c3BvcnQqLCBRSnNvbkFycmF5Pjo6Y29uc3RfaXRlcmF0b3Igc3VlbmQgPSBzcGVjaWZpY1VwZGF0 ZXMuY29uc3RFbmQoKTsKKyAgICAgZm9yIChRSGFzaDxRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNw b3J0KiwgUUpzb25BcnJheT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3BlY2lmaWNVcGRhdGVzLmNv bnN0QmVnaW4oKTsgaXQgIT0gc3VlbmQ7ICsraXQpIHsKKyAgICAgICAgIG1lc3NhZ2VbS0VZX0RB VEFdID0gaXQudmFsdWUoKTsKKy0gICAgICAgIGl0LmtleSgpLT5zZW5kTWVzc2FnZShtZXNzYWdl KTsKKysgICAgICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2UsIGl0LmtleSgpKTsKKyAgICAgfQor KworKyAgICBmb3IgKGF1dG8gc3RhdGUgPSB0cmFuc3BvcnRTdGF0ZS5iZWdpbigpOyBzdGF0ZSAh PSB0cmFuc3BvcnRTdGF0ZS5lbmQoKTsgKytzdGF0ZSkKKysgICAgICAgIHNlbmRFbnF1ZXVlZFBy b3BlcnR5VXBkYXRlcyhzdGF0ZS5rZXkoKSk7CisgfQorIAorIFFWYXJpYW50IFFNZXRhT2JqZWN0 UHVibGlzaGVyOjppbnZva2VNZXRob2QoUU9iamVjdCAqY29uc3Qgb2JqZWN0LCBjb25zdCBRTWV0 YU1ldGhvZCAmbWV0aG9kLAorQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVi bGlzaGVyOjpzaWduYWxFbWl0dGVkKGNvbnN0IFFPYmplY3QgKm9iamVjdCwgY29uc3QgaW50IHNp Z25hbAorICAgICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgICAgcGVuZGluZ1Byb3BlcnR5 VXBkYXRlc1tvYmplY3RdW3NpZ25hbEluZGV4XSA9IGFyZ3VtZW50czsKKy0gICAgICAgIGlmIChj bGllbnRJc0lkbGUgJiYgIWJsb2NrVXBkYXRlcyAmJiAhdGltZXIuaXNBY3RpdmUoKSkgeworKyAg ICAgICAgaWYgKCFibG9ja1VwZGF0ZXMgJiYgIXRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAg ICAgICB0aW1lci5zdGFydChQUk9QRVJUWV9VUERBVEVfSU5URVJWQUwsIHRoaXMpOworICAgICAg ICAgfQorICAgICB9CitAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNo ZXI6Om9iamVjdERlc3Ryb3llZChjb25zdCBRT2JqZWN0ICpvYmplY3QpCisgICAgIC8vIG9ubHkg cmVtb3ZlIGZyb20gaGFuZGxlciB3aGVuIHdlIGluaXRpYWxpemVkIHRoZSBwcm9wZXJ0eSB1cGRh dGVzCisgICAgIC8vIGNmOiBodHRwczovL2J1Z3JlcG9ydHMucXQuaW8vYnJvd3NlL1FUQlVHLTYw MjUwCisgICAgIGlmIChwcm9wZXJ0eVVwZGF0ZXNJbml0aWFsaXplZCkgeworLSAgICAgICAgc2ln bmFsSGFuZGxlci5yZW1vdmUob2JqZWN0KTsKKysgICAgICAgIHNpZ25hbEhhbmRsZXJGb3Iob2Jq ZWN0KS0+cmVtb3ZlKG9iamVjdCk7CisgICAgICAgICBzaWduYWxUb1Byb3BlcnR5TWFwLnJlbW92 ZShvYmplY3QpOworICAgICB9CisgICAgIHBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMucmVtb3ZlKG9i amVjdCk7CitAQCAtODUyLDYgKzg1Miw1MiBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpi cm9hZGNhc3RNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlKSBjb25zdAorICAgICB9 CisgfQorIAorK3ZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmVucXVldWVCcm9hZGNhc3RNZXNz YWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlKQorK3sKKysgICAgaWYgKHdlYkNoYW5uZWwt PmRfZnVuYygpLT50cmFuc3BvcnRzLmlzRW1wdHkoKSkgeworKyAgICAgICAgcVdhcm5pbmcoIlFX ZWJDaGFubmVsIGlzIG5vdCBjb25uZWN0ZWQgdG8gYW55IHRyYW5zcG9ydHMsIGNhbm5vdCBzZW5k IG1lc3NhZ2U6ICVzIiwKKysgICAgICAgICAgICAgICAgIFFKc29uRG9jdW1lbnQobWVzc2FnZSku dG9Kc29uKCkuY29uc3REYXRhKCkpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAg IGZvciAoYXV0byAqdHJhbnNwb3J0IDogd2ViQ2hhbm5lbC0+ZF9mdW5jKCktPnRyYW5zcG9ydHMp IHsKKysgICAgICAgIGF1dG8gJnN0YXRlID0gdHJhbnNwb3J0U3RhdGVbdHJhbnNwb3J0XTsKKysg ICAgICAgIHN0YXRlLnF1ZXVlZE1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKTsKKysgICAgfQorK30K KysKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjplbnF1ZXVlTWVzc2FnZShjb25zdCBRSnNv bk9iamVjdCAmbWVzc2FnZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisreworKyAgICBh dXRvICZzdGF0ZSA9IHRyYW5zcG9ydFN0YXRlW3RyYW5zcG9ydF07CisrICAgIHN0YXRlLnF1ZXVl ZE1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKTsKKyt9CisrCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxp c2hlcjo6c2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKFFXZWJDaGFubmVsQWJzdHJhY3RUcmFu c3BvcnQgKnRyYW5zcG9ydCkKKyt7CisrICAgIGF1dG8gZm91bmQgPSB0cmFuc3BvcnRTdGF0ZS5m aW5kKHRyYW5zcG9ydCk7CisrICAgIGlmIChmb3VuZCAhPSB0cmFuc3BvcnRTdGF0ZS5lbmQoKSAm JiBmb3VuZC52YWx1ZSgpLmNsaWVudElzSWRsZQorKyAgICAgICAgJiYgIWZvdW5kLnZhbHVlKCku cXVldWVkTWVzc2FnZXMuaXNFbXB0eSgpKSB7CisrCisrICAgICAgICAvLyBJZiB0aGUgY2xpZW50 IGlzIGNvbm5lY3RlZCB3aXRoIGFuIGluLXByb2Nlc3MgdHJhbnNwb3J0LCBpdCBjYW4KKysgICAg ICAgIC8vIGhhcHBlbiB0aGF0IGEgbWVzc2FnZSB0cmlnZ2VycyBhIHN1YnNlcXVlbnQgcHJvcGVy dHkgY2hhbmdlLiBJbgorKyAgICAgICAgLy8gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIGVuc3VyZSB0 aGF0IHRoZSBxdWV1ZWQgbWVzc2FnZXMgaGF2ZSBhbHJlYWR5CisrICAgICAgICAvLyBiZWVuIGNs ZWFyZWQ7IG90aGVyd2lzZSB0aGUgcmVjdXJzaXZlIGNhbGwgd2lsbCBzZW5kIGV2ZXJ5dGhpZyBh Z2Fpbi4KKysgICAgICAgIC8vIENhc2UgaW4gcG9pbnQ6IFRoZSBxbWx3ZWJjaGFubmVsIHRlc3Rz IGZhaWwgaWYgd2UgZG9uJ3QgY2xlYXIgdGhlCisrICAgICAgICAvLyBxdWV1ZWQgbWVzc2FnZXMg YmVmb3JlIHNlbmRpbmcgdGhlbSBvdXQuCisrICAgICAgICAvLyBGb3IgdGhhdCBzYW1lIHJlYXNv biBzZXQgdGhlIGNsaWVudCB0byAiYnVzeSIgKGFrYSBub24taWRsZSkganVzdAorKyAgICAgICAg Ly8gcmlnaHQgYmVmb3JlIHNlbmRpbmcgb3V0IHRoZSBtZXNzYWdlczsgb3RoZXJ3aXNlIGEgcG90 ZW50aWFsCisrICAgICAgICAvLyAiSWRsZSIgdHlwZSBtZXNzYWdlIHdpbGwgbm90IGNvcnJlY3Rs eSByZXN0b3JlIHRoZSBJZGxlIHN0YXRlLgorKyAgICAgICAgY29uc3QgYXV0byBtZXNzYWdlcyA9 IHN0ZDo6bW92ZShmb3VuZC52YWx1ZSgpLnF1ZXVlZE1lc3NhZ2VzKTsKKysgICAgICAgIFFfQVNT RVJUKGZvdW5kLnZhbHVlKCkucXVldWVkTWVzc2FnZXMuaXNFbXB0eSgpKTsKKysgICAgICAgIGZv dW5kLnZhbHVlKCkuY2xpZW50SXNJZGxlID0gZmFsc2U7CisrCisrICAgICAgICBmb3IgKGNvbnN0 IGF1dG8gJm1lc3NhZ2UgOiBtZXNzYWdlcykgeworKyAgICAgICAgICAgIHRyYW5zcG9ydC0+c2Vu ZE1lc3NhZ2UobWVzc2FnZSk7CisrICAgICAgICB9CisrICAgIH0KKyt9CisrCisgdm9pZCBRTWV0 YU9iamVjdFB1Ymxpc2hlcjo6aGFuZGxlTWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2Fn ZSwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorIHsKKyAgICAgaWYg KCF3ZWJDaGFubmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cy5jb250YWlucyh0cmFuc3BvcnQpKSB7 CitAQCAtODY2LDcgKzkxMiw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmhhbmRsZU1l c3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsCisgCisgICAgIGNv bnN0IE1lc3NhZ2VUeXBlIHR5cGUgPSB0b1R5cGUobWVzc2FnZS52YWx1ZShLRVlfVFlQRSkpOwor ICAgICBpZiAodHlwZSA9PSBUeXBlSWRsZSkgeworLSAgICAgICAgc2V0Q2xpZW50SXNJZGxlKHRy dWUpOworKyAgICAgICAgc2V0Q2xpZW50SXNJZGxlKHRydWUsIHRyYW5zcG9ydCk7CisgICAgIH0g ZWxzZSBpZiAodHlwZSA9PSBUeXBlSW5pdCkgeworICAgICAgICAgaWYgKCFtZXNzYWdlLmNvbnRh aW5zKEtFWV9JRCkpIHsKKyAgICAgICAgICAgICBxV2FybmluZygiSlNPTiBtZXNzYWdlIG9iamVj dCBpcyBtaXNzaW5nIHRoZSBpZCBwcm9wZXJ0eTogJXMiLAorQEAgLTkxMyw5ICs5NTksOSBAQCB2 b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpoYW5kbGVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0 ICZtZXNzYWdlLCBRV2ViQ2hhbm5lbAorICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg ICAgICAgdHJhbnNwb3J0LT5zZW5kTWVzc2FnZShjcmVhdGVSZXNwb25zZShtZXNzYWdlLnZhbHVl KEtFWV9JRCksIHdyYXBSZXN1bHQocmVzdWx0LCB0cmFuc3BvcnQpKSk7CisgICAgICAgICB9IGVs c2UgaWYgKHR5cGUgPT0gVHlwZUNvbm5lY3RUb1NpZ25hbCkgeworLSAgICAgICAgICAgIHNpZ25h bEhhbmRsZXIuY29ubmVjdFRvKG9iamVjdCwgbWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0lu dCgtMSkpOworKyAgICAgICAgICAgIHNpZ25hbEhhbmRsZXJGb3Iob2JqZWN0KS0+Y29ubmVjdFRv KG9iamVjdCwgbWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOworICAgICAgICAg fSBlbHNlIGlmICh0eXBlID09IFR5cGVEaXNjb25uZWN0RnJvbVNpZ25hbCkgeworLSAgICAgICAg ICAgIHNpZ25hbEhhbmRsZXIuZGlzY29ubmVjdEZyb20ob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtF WV9TSUdOQUwpLnRvSW50KC0xKSk7CisrICAgICAgICAgICAgc2lnbmFsSGFuZGxlckZvcihvYmpl Y3QpLT5kaXNjb25uZWN0RnJvbShvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9J bnQoLTEpKTsKKyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBlU2V0UHJvcGVydHkpIHsK KyAgICAgICAgICAgICBzZXRQcm9wZXJ0eShvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1BST1BF UlRZKS50b0ludCgtMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS52YWx1ZShL RVlfVkFMVUUpKTsKK0BAIC05MzEsNiArOTc3LDcgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hl cjo6c2V0QmxvY2tVcGRhdGVzKGJvb2wgYmxvY2spCisgICAgIGJsb2NrVXBkYXRlcyA9IGJsb2Nr OworIAorICAgICBpZiAoIWJsb2NrVXBkYXRlcykgeworKyAgICAgICAgdGltZXIuc3RhcnQoUFJP UEVSVFlfVVBEQVRFX0lOVEVSVkFMLCB0aGlzKTsKKyAgICAgICAgIHNlbmRQZW5kaW5nUHJvcGVy dHlVcGRhdGVzKCk7CisgICAgIH0gZWxzZSBpZiAodGltZXIuaXNBY3RpdmUoKSkgeworICAgICAg ICAgdGltZXIuc3RvcCgpOworQEAgLTk0OCw0ICs5OTUsMTUgQEAgdm9pZCBRTWV0YU9iamVjdFB1 Ymxpc2hlcjo6dGltZXJFdmVudChRVGltZXJFdmVudCAqZXZlbnQpCisgICAgIH0KKyB9CisgCisr U2lnbmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4gKlFNZXRhT2JqZWN0UHVibGlzaGVy OjpzaWduYWxIYW5kbGVyRm9yKGNvbnN0IFFPYmplY3QgKm9iamVjdCkKKyt7CisrICAgIGF1dG8g dGhyZWFkID0gb2JqZWN0LT50aHJlYWQoKTsKKysgICAgYXV0byBpdCA9IHNpZ25hbEhhbmRsZXJz LmZpbmQodGhyZWFkKTsKKysgICAgaWYgKGl0ID09IHNpZ25hbEhhbmRsZXJzLmVuZCgpKSB7Cisr ICAgICAgICBpdCA9IHNpZ25hbEhhbmRsZXJzLmVtcGxhY2UodGhyZWFkLCB0aGlzKS5maXJzdDsK KysgICAgICAgIGl0LT5zZWNvbmQubW92ZVRvVGhyZWFkKHRocmVhZCk7CisrICAgIH0KKysgICAg cmV0dXJuICZpdC0+c2Vjb25kOworK30KKysKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0 IGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaCBi L3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlcl9wLmgKK2lu ZGV4IGJiZDk4NzUuLjQ3MTNlZjEgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNo YW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXJfcC5oCisrKysgYi9xdHdlYmNoYW5uZWwvc3JjL3dl YmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXJfcC5oCitAQCAtNTksNiArNTksOSBAQAorICNp bmNsdWRlIDxRQmFzaWNUaW1lcj4KKyAjaW5jbHVkZSA8UVBvaW50ZXI+CisgI2luY2x1ZGUgPFFK c29uT2JqZWN0PgorKyNpbmNsdWRlIDxRUXVldWU+CisrCisrI2luY2x1ZGUgPHVub3JkZXJlZF9t YXA+CisgCisgI2luY2x1ZGUgInF3ZWJjaGFubmVsZ2xvYmFsLmgiCisgCitAQCAtMTA5LDE3ICsx MTIsMzYgQEAgcHVibGljOgorICAgICAgKi8KKyAgICAgdm9pZCBicm9hZGNhc3RNZXNzYWdlKGNv bnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlKSBjb25zdDsKKyAKKysgICAgLyoqCisrICAgICAqIEVu cXVldWUgdGhlIGdpdmVuIEBwIG1lc3NhZ2UgdG8gYWxsIGtub3duIHRyYW5zcG9ydHMuCisrICAg ICAqLworKyAgICB2b2lkIGVucXVldWVCcm9hZGNhc3RNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0 ICZtZXNzYWdlKTsKKysKKysgICAgLyoqCisrICAgICAqIEVucXVldWUgdGhlIGdpdmVuIEBwIG1l c3NhZ2UgdG8gQHAgdHJhbnNwb3J0LgorKyAgICAgKi8KKysgICAgdm9pZCBlbnF1ZXVlTWVzc2Fn ZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9y dCAqdHJhbnNwb3J0KTsKKysKKysgICAgLyoqCisrICAgICAqIElmIGNsaWVudCBmb3IgZ2l2ZW4g QHAgdHJhbnNwb3J0IGlzIGlkbGUsIHNlbmQgcXVldWVkIG1lc3NhZ2VkIHRvIEBwIHRyYW5zcG9y dCBhbmQgdGhlbiBtYXJrCisrICAgICAqIHRoZSBjbGllbnQgYXMgbm90IGlkbGUuCisrICAgICAq LworKyAgICB2b2lkIHNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyhRV2ViQ2hhbm5lbEFic3Ry YWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworKworICAgICAvKioKKyAgICAgICogU2VyaWFsaXpl IHRoZSBRTWV0YU9iamVjdCBvZiBAcCBvYmplY3QgYW5kIHJldHVybiBpdCBpbiBKU09OIGZvcm0u CisgICAgICAqLworICAgICBRSnNvbk9iamVjdCBjbGFzc0luZm9Gb3JPYmplY3QoY29uc3QgUU9i amVjdCAqb2JqZWN0LCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOwor IAorICAgICAvKioKKy0gICAgICogU2V0IHRoZSBjbGllbnQgdG8gaWRsZSBvciBidXN5LCBiYXNl ZCBvbiB0aGUgdmFsdWUgb2YgQHAgaXNJZGxlLgorLSAgICAgKgorLSAgICAgKiBXaGVuIHRoZSB2 YWx1ZSBjaGFuZ2VkLCBzdGFydC9zdG9wIHRoZSBwcm9wZXJ0eSB1cGRhdGUgdGltZXIgYWNjb3Jk aW5nbHkuCisrICAgICAqIFNldCB0aGUgY2xpZW50IHRvIGlkbGUgb3IgYnVzeSBmb3IgYSBzaW5n bGUgQHAgdHJhbnNwb3J0LCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgQHAgaXNJZGxlLgorKyAgICAg Ki8KKysgICAgdm9pZCBzZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lkbGUsIFFXZWJDaGFubmVsQWJz dHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisrCisrICAgIC8qKgorKyAgICAgKiBDaGVjayB0 aGF0IGNsaWVudCBpcyBpZGxlIGZvciBAcCB0cmFuc3BvcnQuCisgICAgICAqLworLSAgICB2b2lk IHNldENsaWVudElzSWRsZShib29sIGlzSWRsZSk7CisrICAgIGJvb2wgaXNDbGllbnRJZGxlKFFX ZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisgCisgICAgIC8qKgorICAg ICAgKiBJbml0aWFsaXplIGNsaWVudHMgYnkgc2VuZGluZyB0aGVtIHRoZSBjbGFzcyBpbmZvcm1h dGlvbiBvZiB0aGUgcmVnaXN0ZXJlZCBvYmplY3RzLgorQEAgLTI3MiwxMCArMjk0LDE4IEBAIHBy aXZhdGU6CisgICAgIGZyaWVuZCBjbGFzcyBUZXN0V2ViQ2hhbm5lbDsKKyAKKyAgICAgUVdlYkNo YW5uZWwgKndlYkNoYW5uZWw7CistICAgIFNpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNo ZXI+IHNpZ25hbEhhbmRsZXI7CisrICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxjb25zdCBRVGhyZWFk KiwgU2lnbmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4+IHNpZ25hbEhhbmRsZXJzOwor KyAgICBTaWduYWxIYW5kbGVyPFFNZXRhT2JqZWN0UHVibGlzaGVyPiAqc2lnbmFsSGFuZGxlckZv cihjb25zdCBRT2JqZWN0ICpvYmplY3QpOworIAorLSAgICAvLyB0cnVlIHdoZW4gdGhlIGNsaWVu dCBpcyBpZGxlLCBmYWxzZSBvdGhlcndpc2UKKy0gICAgYm9vbCBjbGllbnRJc0lkbGU7CisrICAg IHN0cnVjdCBUcmFuc3BvcnRTdGF0ZQorKyAgICB7CisrICAgICAgICBUcmFuc3BvcnRTdGF0ZSgp IDogY2xpZW50SXNJZGxlKGZhbHNlKSB7IH0KKysgICAgICAgIC8vIHRydWUgd2hlbiB0aGUgY2xp ZW50IGlzIGlkbGUsIGZhbHNlIG90aGVyd2lzZQorKyAgICAgICAgYm9vbCBjbGllbnRJc0lkbGU7 CisrICAgICAgICAvLyBtZXNzYWdlcyB0byBzZW5kCisrICAgICAgICBRUXVldWU8UUpzb25PYmpl Y3Q+IHF1ZXVlZE1lc3NhZ2VzOworKyAgICB9OworKyAgICBRSGFzaDxRV2ViQ2hhbm5lbEFic3Ry YWN0VHJhbnNwb3J0ICosIFRyYW5zcG9ydFN0YXRlPiB0cmFuc3BvcnRTdGF0ZTsKKyAKKyAgICAg Ly8gdHJ1ZSB3aGVuIG5vIHByb3BlcnR5IHVwZGF0ZXMgc2hvdWxkIGJlIHNlbnQsIGZhbHNlIG90 aGVyd2lzZQorICAgICBib29sIGJsb2NrVXBkYXRlczsKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5u ZWwvc3JjL3dlYmNoYW5uZWwvc2lnbmFsaGFuZGxlcl9wLmggYi9xdHdlYmNoYW5uZWwvc3JjL3dl YmNoYW5uZWwvc2lnbmFsaGFuZGxlcl9wLmgKK2luZGV4IDI3YWZhZGIuLmQ3NzM3M2MgMTAwNjQ0 CistLS0gYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvc2lnbmFsaGFuZGxlcl9wLmgKKysr KyBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWduYWxoYW5kbGVyX3AuaAorQEAgLTU2 LDYgKzU2LDcgQEAKKyAjaW5jbHVkZSA8UVZlY3Rvcj4KKyAjaW5jbHVkZSA8UU1ldGFNZXRob2Q+ CisgI2luY2x1ZGUgPFFEZWJ1Zz4KKysjaW5jbHVkZSA8UVRocmVhZD4KKyAKKyBRVF9CRUdJTl9O QU1FU1BBQ0UKKyAKK0BAIC03MSw2ICs3Miw3IEBAIHN0YXRpYyBjb25zdCBpbnQgc19kZXN0cm95 ZWRTaWduYWxJbmRleCA9IFFPYmplY3Q6OnN0YXRpY01ldGFPYmplY3QuaW5kZXhPZk1ldGhvCisg dGVtcGxhdGU8Y2xhc3MgUmVjZWl2ZXI+CisgY2xhc3MgU2lnbmFsSGFuZGxlciA6IHB1YmxpYyBR T2JqZWN0CisgeworKyAgICBRX0RJU0FCTEVfQ09QWShTaWduYWxIYW5kbGVyKQorIHB1YmxpYzoK KyAgICAgU2lnbmFsSGFuZGxlcihSZWNlaXZlciAqcmVjZWl2ZXIsIFFPYmplY3QgKnBhcmVudCA9 IDApOworIAorQEAgLTI2OCw2ICsyNzAsNyBAQCBpbnQgU2lnbmFsSGFuZGxlcjxSZWNlaXZlcj46 OnF0X21ldGFjYWxsKFFNZXRhT2JqZWN0OjpDYWxsIGNhbGwsIGludCBtZXRob2RJZCwgdgorICAg ICBpZiAoY2FsbCA9PSBRTWV0YU9iamVjdDo6SW52b2tlTWV0YU1ldGhvZCkgeworICAgICAgICAg Y29uc3QgUU9iamVjdCAqb2JqZWN0ID0gc2VuZGVyKCk7CisgICAgICAgICBRX0FTU0VSVChvYmpl Y3QpOworKyAgICAgICAgUV9BU1NFUlQoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpID09IG9iamVj dC0+dGhyZWFkKCkpOworICAgICAgICAgUV9BU1NFUlQoc2VuZGVyU2lnbmFsSW5kZXgoKSA9PSBt ZXRob2RJZCk7CisgICAgICAgICBRX0FTU0VSVChtX2Nvbm5lY3Rpb25zQ291bnRlci5jb250YWlu cyhvYmplY3QpKTsKKyAgICAgICAgIFFfQVNTRVJUKG1fY29ubmVjdGlvbnNDb3VudGVyLnZhbHVl KG9iamVjdCkuY29udGFpbnMobWV0aG9kSWQpKTsKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwv dGVzdHMvYXV0by9xbWwvdGVzdHdlYmNoYW5uZWwuY3BwIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1 dG8vcW1sL3Rlc3R3ZWJjaGFubmVsLmNwcAoraW5kZXggOTg5MTY4Ny4uM2NhODFjMiAxMDA2NDQK Ky0tLSBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAKKysr KyBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAKK0BAIC00 Niw3ICs0NiwxMSBAQCBUZXN0V2ViQ2hhbm5lbDo6flRlc3RXZWJDaGFubmVsKCkKKyAKKyBib29s IFRlc3RXZWJDaGFubmVsOjpjbGllbnRJc0lkbGUoKSBjb25zdAorIHsKKy0gICAgcmV0dXJuIFFX ZWJDaGFubmVsOjpkX2Z1bmMoKS0+cHVibGlzaGVyLT5jbGllbnRJc0lkbGU7CisrICAgIGZvciAo YXV0byAqdHJhbnNwb3J0IDogUVdlYkNoYW5uZWw6OmRfZnVuYygpLT50cmFuc3BvcnRzKSB7Cisr ICAgICAgICBpZiAoUVdlYkNoYW5uZWw6OmRfZnVuYygpLT5wdWJsaXNoZXItPmlzQ2xpZW50SWRs ZSh0cmFuc3BvcnQpKQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICB9CisrICAgIHJl dHVybiBmYWxzZTsKKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2Vi Y2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwIGIvcXR3ZWJj aGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAKK2luZGV4IDE4 MWRhOWUuLjM3Zjk4OWEgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJj aGFubmVsL3RzdF93ZWJjaGFubmVsLmNwcAorKysrIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8v d2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAKK0BAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBU ZXN0V2ViQ2hhbm5lbDo6dGVzdFRyYW5zcG9ydFdyYXBPYmplY3RQcm9wZXJ0aWVzKCkKKyAgICAg RHVtbXlUcmFuc3BvcnQgKmR1bW15VHJhbnNwb3J0ID0gbmV3IER1bW15VHJhbnNwb3J0KHRoaXMp OworICAgICBjaGFubmVsLmNvbm5lY3RUbyhkdW1teVRyYW5zcG9ydCk7CisgICAgIGNoYW5uZWwu ZF9mdW5jKCktPnB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudChkdW1teVRyYW5zcG9ydCk7Cist ICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUpOwor KyAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCBk dW1teVRyYW5zcG9ydCk7CisgCisgICAgIFFDT01QQVJFKGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxp c2hlci0+dHJhbnNwb3J0ZWRXcmFwcGVkT2JqZWN0cy5zaXplKCksIDApOworIAorQEAgLTk0Myw4 ICs5NDMsNiBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0SW5maW5pdGVSZWN1cnNpb24oKQor IAorIHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RBc3luY09iamVjdCgpCisgeworLSAgICBRU0tJ UCgiVGhpcyB0ZXN0IGlzIGJyb2tlbi4gU2VlIFFUQlVHLTgwNzI5Iik7CistCisgICAgIFFXZWJD aGFubmVsIGNoYW5uZWw7CisgICAgIGNoYW5uZWwuY29ubmVjdFRvKG1fZHVtbXlUcmFuc3BvcnQp OworIAorQEAgLTk5MCw2ICs5ODgsNTAgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdEFzeW5j T2JqZWN0KCkKKyAgICAgdGhyZWFkLndhaXQoKTsKKyB9CisgCisrdm9pZCBUZXN0V2ViQ2hhbm5l bDo6dGVzdFByb3BlcnR5TXVsdGlwbGVUcmFuc3BvcnRzKCkKKyt7CisrICAgIER1bW15VHJhbnNw b3J0IHRyYW5zcG9ydDE7CisrICAgIER1bW15VHJhbnNwb3J0IHRyYW5zcG9ydDI7CisrCisrICAg IFFXZWJDaGFubmVsIGNoYW5uZWw7CisrICAgIFFNZXRhT2JqZWN0UHVibGlzaGVyICpwdWJsaXNo ZXIgPSBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXI7CisrCisrICAgIFRlc3RPYmplY3QgdGVz dE9iajsKKysgICAgdGVzdE9iai5zZXRPYmplY3ROYW1lKCJ0ZXN0T2JqZWN0Iik7CisrICAgIGNo YW5uZWwucmVnaXN0ZXJPYmplY3QodGVzdE9iai5vYmplY3ROYW1lKCksICZ0ZXN0T2JqKTsKKysg ICAgY2hhbm5lbC5jb25uZWN0VG8oJnRyYW5zcG9ydDEpOworKyAgICBjaGFubmVsLmNvbm5lY3RU bygmdHJhbnNwb3J0Mik7CisrCisrICAgIHRlc3RPYmouc2V0UHJvcCgiSGVsbG8iKTsKKysKKysg ICAgcHVibGlzaGVyLT5pbml0aWFsaXplQ2xpZW50KCZ0cmFuc3BvcnQxKTsKKysgICAgcHVibGlz aGVyLT5pbml0aWFsaXplQ2xpZW50KCZ0cmFuc3BvcnQyKTsKKysgICAgcHVibGlzaGVyLT5zZXRD bGllbnRJc0lkbGUodHJ1ZSwgJnRyYW5zcG9ydDEpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXIt PmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MSksIHRydWUpOworKyAgICBRQ09NUEFSRShwdWJsaXNo ZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MiksIGZhbHNlKTsKKysgICAgUVZFUklGWSh0cmFu c3BvcnQxLm1lc3NhZ2VzU2VudCgpLmlzRW1wdHkoKSk7CisrICAgIFFWRVJJRlkodHJhbnNwb3J0 Mi5tZXNzYWdlc1NlbnQoKS5pc0VtcHR5KCkpOworKworKyAgICB0ZXN0T2JqLnNldFByb3AoIldv cmxkIik7CisrICAgIFFUUllfQ09NUEFSRV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0MS5tZXNzYWdl c1NlbnQoKS5zaXplKCksIDF1LCAyMDAwKTsKKysgICAgUUNPTVBBUkUodHJhbnNwb3J0Mi5tZXNz YWdlc1NlbnQoKS5zaXplKCksIDB1KTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUo dHJ1ZSwgJnRyYW5zcG9ydDIpOworKyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5z cG9ydDIubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAxdSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHB1 Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwgZmFsc2UpOworKyAgICBRQ09NUEFS RShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MiksIGZhbHNlKTsKKysKKysgICAg dGVzdE9iai5zZXRQcm9wKCIhISEiKTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUo dHJ1ZSwgJnRyYW5zcG9ydDIpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRs ZSgmdHJhbnNwb3J0MiksIHRydWUpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50 SWRsZSgmdHJhbnNwb3J0MSksIGZhbHNlKTsKKysgICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9V VCh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMnUsIDIwMDApOworKyAgICBRQ09N UEFSRSh0cmFuc3BvcnQxLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMXUpOworKyAgICBwdWJsaXNo ZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0MSk7CisrICAgIFFUUllfQ09NUEFS RV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDJ1LCAyMDAw KTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCBm YWxzZSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQy KSwgZmFsc2UpOworK30KKysKKyBjbGFzcyBGdW5jdGlvbldyYXBwZXIgOiBwdWJsaWMgUU9iamVj dAorIHsKKyAgICAgUV9PQkpFQ1QKK0BAIC0xMDgyLDcgKzExMjQsNyBAQCB2b2lkIFRlc3RXZWJD aGFubmVsOjpiZW5jaEluaXRpYWxpemVDbGllbnRzKCkKKyAKKyAgICAgICAgIHB1Ymxpc2hlci0+ cHJvcGVydHlVcGRhdGVzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICAgICAgIHB1Ymxpc2hlci0+ c2lnbmFsVG9Qcm9wZXJ0eU1hcC5jbGVhcigpOworLSAgICAgICAgcHVibGlzaGVyLT5zaWduYWxI YW5kbGVyLmNsZWFyKCk7CisrICAgICAgICBwdWJsaXNoZXItPnNpZ25hbEhhbmRsZXJzLmNsZWFy KCk7CisgICAgIH0KKyB9CisgCitAQCAtMTEwNyw3ICsxMTQ5LDcgQEAgdm9pZCBUZXN0V2ViQ2hh bm5lbDo6YmVuY2hQcm9wZXJ0eVVwZGF0ZXMoKQorICAgICAgICAgICAgIG9iai0+Y2hhbmdlKCk7 CisgICAgICAgICB9CisgCistICAgICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPmNs aWVudElzSWRsZSA9IHRydWU7CisrICAgICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXIt PnNldENsaWVudElzSWRsZSh0cnVlLCBtX2R1bW15VHJhbnNwb3J0KTsKKyAgICAgICAgIGNoYW5u ZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+c2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKTsKKyAg ICAgfQorIH0KK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVs L3RzdF93ZWJjaGFubmVsLmggYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3Rz dF93ZWJjaGFubmVsLmgKK2luZGV4IGVhZTIxZjQuLmRkNGU2OTAgMTAwNjQ0CistLS0gYS9xdHdl YmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmgKKysrKyBiL3F0 d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaAorQEAgLTM0 OCw2ICszNDgsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHRlc3RKc29uVG9WYXJpYW50 KCk7CisgICAgIHZvaWQgdGVzdEluZmluaXRlUmVjdXJzaW9uKCk7CisgICAgIHZvaWQgdGVzdEFz eW5jT2JqZWN0KCk7CisrICAgIHZvaWQgdGVzdFByb3BlcnR5TXVsdGlwbGVUcmFuc3BvcnRzKCk7 CisgICAgIHZvaWQgdGVzdERlbGV0aW9uRHVyaW5nTWV0aG9kSW52b2NhdGlvbl9kYXRhKCk7Cisg ICAgIHZvaWQgdGVzdERlbGV0aW9uRHVyaW5nTWV0aG9kSW52b2NhdGlvbigpOworIAorU3VibW9k dWxlIHF0d2ViZW5naW5lIGYzMjgwNTRkLi4uMzhlMGRmNmMgKGNvbW1pdHMgbm90IHByZXNlbnQp CitTdWJtb2R1bGUgcXR3ZWJzb2NrZXRzIDY1ODUwOTU0Li42M2ZiOGRhMToKK2RpZmYgLS1naXQg YS9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3Bw IGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRkYXRhcHJvY2Vzc29yLmNw cAoraW5kZXggMmFmZmRkNS4uOTVmMTE5NCAxMDA2NDQKKy0tLSBhL3F0d2Vic29ja2V0cy9zcmMv d2Vic29ja2V0cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAKKysrKyBiL3F0d2Vic29ja2V0 cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAKK0BAIC0yNzMsNiAr MjczLDcgQEAgdm9pZCBRV2ViU29ja2V0RGF0YVByb2Nlc3Nvcjo6Y2xlYXIoKQorICAgICBpZiAo IW1fcENvbnZlcnRlclN0YXRlKQorICAgICAgICAgbV9wQ29udmVydGVyU3RhdGUgPSBuZXcgUVRl eHRDb2RlYzo6Q29udmVydGVyU3RhdGUoUVRleHRDb2RlYzo6Q29udmVydEludmFsaWRUb051bGwg fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVRleHRDb2RlYzo6SWdub3JlSGVhZGVyKTsKKysgICAgZnJhbWUuY2xlYXIoKTsKKyB9 CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJz b2NrZXRwcm90b2NvbC5jcHAgYi9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tl dHByb3RvY29sLmNwcAoraW5kZXggZGY4N2E5My4uZDA0NjVmMSAxMDA2NDQKKy0tLSBhL3F0d2Vi c29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwCisrKysgYi9xdHdl YnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29sLmNwcAorQEAgLTIxMCw3 ICsyMTAsNyBAQCB2b2lkIFFXZWJTb2NrZXRQcm90b2NvbDo6bWFzayhjaGFyICpwYXlsb2FkLCBx dWludDY0IHNpemUsIHF1aW50MzIgbWFza2luZ0tleSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcXVpbnQ4KChtYXNraW5nS2V5ICYgMHgwMDAwRkYwMHUpID4+IDgpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBxdWludDgoKG1hc2tpbmdLZXkgJiAweDAwMDAwMEZGdSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICB9OworLSAgICBpbnQgaSA9IDA7CisrICAgIHF1aW50 NjQgaSA9IDA7CisgICAgIHdoaWxlIChzaXplLS0gPiAwKQorICAgICAgICAgKnBheWxvYWQrKyBe PSBtYXNrW2krKyAlIDRdOworIH0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlIGIv c3JjcGtncy9xdDUvdGVtcGxhdGUKaW5kZXggYTc5ZDI1ZTY5ZGE4Li42ZGRkY2U3ZjNlNDYgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRl CkBAIC0yLDExICsyLDExIEBACiAjCiAjIHJldmJ1bXAgbGlicXR4ZGcgYWZ0ZXIgYnVtcGluZyBw YXRjaCB2ZXJzaW9uCiBwa2duYW1lPXF0NQotdmVyc2lvbj01LjE1LjcrMjAyMjExMTkKK3ZlcnNp b249NS4xNS44CityZXZpc2lvbj0xCitidWlsZF9zdHlsZT1tZXRhCiAjIGNvbW1pdCBmOGM5ZmIz MDRiYzNlNTNiM2FhMDdmOTYyY2Q3NGU5MTYwZGVjY2NjCiAjIGJhc2UgcmVwbzogaHR0cHM6Ly9p bnZlbnQua2RlLm9yZy9xdC9xdC9xdDUKLXJldmlzaW9uPTUKLWJ1aWxkX3N0eWxlPW1ldGEKIGhv c3RtYWtlZGVwZW5kcz0iY21ha2UgY2xhbmcgZmxleCBwZXJsIGdsaWItZGV2ZWwgcGtnLWNvbmZp ZwogIHB5dGhvbiByZTJjIHJ1Ynkgd2hpY2giCiBtYWtlZGVwZW5kcz0iU0RMMi1kZXZlbCBWdWxr YW4tSGVhZGVycyBhbHNhLWxpYi1kZXZlbCBkb3VibGUtY29udmVyc2lvbi1kZXZlbApAQCAtMjks OCArMjksOSBAQCBob21lcGFnZT0iaHR0cHM6Ly9xdC5pby8iCiAjIHRhcmJhbGwgaXMgZ2VuZXJh dGVkIHdpdGggYGdpdCBhcmNoaXZlLWFsbCBxdDUtJHZlcnNpb24udGFyLmd6YAogIyB0byBrZWVw IHRoZSBzaXplIHNtYWxsZXIgcXR3ZWJlbmdpbmUsIHF0d2VidmlldywgcXRkb2NnYWxsZXJ5LCBx dGFjdGl2ZXF0IGFuZCBxdHBpbQogIyBjYW4gYmUgbWFya2VkIHdpdGggdGhlIGV4cG9ydC1pZ25v cmUgYXR0cmlidXRlCi1kaXN0ZmlsZXM9Imh0dHBzOi8vdm9pZC5qb2hubnluYXRvci5kZXYvZGlz dGZpbGVzL3F0NS0ke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTlkNTdhZjQ3MWM3ODAyOWEz NjIyNzZiN2M5OTEwOGVhMDA5ZjUxMWJiOWJhNmZmNmNiODg0ZjZkZGQyNTVlOWYKKyNkaXN0Zmls ZXM9Imh0dHBzOi8vdm9pZC5qb2hubnluYXRvci5kZXYvZGlzdGZpbGVzL3F0NS0ke3ZlcnNpb259 LnRhci5neiIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9kb3dubG9hZC5xdC5pby9hcmNoaXZlL3F0LzUu MTUvJHt2ZXJzaW9ufS9zaW5nbGUvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNyYy0ke3ZlcnNp b259LnRhci54eiIKK2NoZWNrc3VtPTc3NmE5MzAyYzMzNjY3MWY5NDA2YTUzYmQzMGI4ZTM2Zjgy NTc0MmIyZWM0NGE1N2MwODIxN2JmZjBmYTg2YjkKIHB5dGhvbl92ZXJzaW9uPTIgI3VudmVyaWZp ZWQKIHJlcGxhY2VzPSJxdDUtZG9jPDUuNi4wIHF0NS1xdWljazE8NS42LjAgcXQ1LXF1aWNrMS1k ZXZlbDw1LjYuMCBxdDUtd2Via2l0PDUuNi4wIHF0NS13ZWJraXQtZGV2ZWw8NS42LjAKICBxdDUt ZW5naW5pbzw1LjcuMSBxdDUtZW5naW5pby1kZXZlbDw1LjcuMSBxdDUtcGx1Z2luLWd0azw1Ljcu MSBxdDUtY2FudmFzM2Q8NS4xMy4wIgpAQCAtMjUwLDcgKzI1MSw2IEBAIGRvX2NvbmZpZ3VyZSgp IHsKIAkjIG9wdHMrPSIgLXYiCiAJb3B0cys9IiAtc2tpcCBxdHdlYmVuZ2luZSIKIAlvcHRzKz0i IC1za2lwIHF0d2VidmlldyIKLQlvcHRzKz0iIC1za2lwIHF0ZG9jZ2FsbGVyeSIKIAlvcHRzKz0i IC1za2lwIHF0cGltIgogCW9wdHMrPSIgLXNraXAgcXRzeXN0ZW1zIgogCW9wdHMrPSIgLXNraXAg cXRzcGVlY2giCgpGcm9tIDA3ZjllNDE4ZGYwZTk1Njg5MjI4NDM4YjVjZDhmNzcyYzhkNWM0OTgg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3 My8xMTNdIHF0YXY6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9xdGF2 L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZSBiL3NyY3BrZ3Mv cXRhdi90ZW1wbGF0ZQppbmRleCAzNGMzMGIyYzBjNzguLjJkMDBhZDEwNDM1NSAxMDA2NDQKLS0t IGEvc3JjcGtncy9xdGF2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZQpAQCAt MSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXRhdicKIHBrZ25hbWU9cXRhdgog dmVyc2lvbj0xLjEzLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXFtYWtl CiBob3N0bWFrZWRlcGVuZHM9InF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKLW1ha2VkZXBlbmRz PSJmZm1wZWctZGV2ZWwgbGliYXNzLWRldmVsIGxpYm9wZW5hbC1kZXZlbAorbWFrZWRlcGVuZHM9 ImZmbXBlZzQtZGV2ZWwgbGliYXNzLWRldmVsIGxpYm9wZW5hbC1kZXZlbAogIGxpYnZhLWdseC1k ZXZlbCBsaWJYdi1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAgcXQ1LWRlY2xhcmF0aXZlLWRldmVs IHF0NS1zdmctZGV2ZWwKICBxdDUtcXVpY2tjb250cm9scyIKCkZyb20gOGI3MDI1ZmRlZWI2OGJm OGNlNTQ1ZmUzY2JkOTZjNGMwZmNiMmFiMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1 MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc0LzExM10gcXRveDogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL3F0b3gvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0b3gv dGVtcGxhdGUgYi9zcmNwa2dzL3F0b3gvdGVtcGxhdGUKaW5kZXggMTYwMTlkN2VhZWM5Li41Y2Vh MGIxMWI2OTcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXRveC90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3F0b3gvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdG94 JwogcGtnbmFtZT1xdG94CiB2ZXJzaW9uPTEuMTcuNgotcmV2aXNpb249MgorcmV2aXNpb249Mwog YnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFVQREFURV9DSEVDSz1PRkYKICAt REdJVF9ERVNDUklCRT0ke3ZlcnNpb259CgpGcm9tIDMzMzY2NjAwOGY4ZDBjOTA3Nzk1YWM1YTEy NmNiYzRkMjJhZGE0NDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA3NS8xMTNdIHJldHJvYXJjaDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcmV0cm9h cmNoL3RlbXBsYXRlIGIvc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUKaW5kZXggMjgwMTZhYTAx MjllLi4yMGExNDE1OTEzYmUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmV0cm9hcmNoL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvcmV0cm9hcmNoL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAncmV0cm9hcmNoJwogcGtnbmFtZT1yZXRyb2FyY2gKIHZlcnNpb249MS4x NS4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jb25maWd1cmUKIGNvbmZp Z3VyZV9hcmdzPSItLXByZWZpeD0vdXNyIC0tc3lzY29uZmRpcj0vZXRjIC0tZW5hYmxlLW5ldHdv cmtpbmcKICAtLWVuYWJsZS11ZGV2IC0tZGlzYWJsZS1idWlsdGluZmxhYyAtLWRpc2FibGUtYnVp bHRpbmdsc2xhbmcKCkZyb20gOTYwZTU1ZGFkYmJkYmRiOGY4OTkzZTg4ZjFjN2JiMGYxYTVlZDMw ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDc2LzExM10gc2NyY3B5OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2Ny Y3B5L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUgYi9zcmNwa2dz L3NjcmNweS90ZW1wbGF0ZQppbmRleCAwNjIwOGMzODljYTkuLmE1ZGU5MzVjN2RlZiAxMDA2NDQK LS0tIGEvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zY3JjcHkvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzY3JjcHknCiBwa2duYW1l PXNjcmNweQogdmVyc2lvbj0yLjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PW1lc29uCiBjb25maWd1cmVfYXJncz0iLURjb21waWxlX3NlcnZlcj1mYWxzZQogIC1EcHJlYnVp bHRfc2VydmVyPS91c3Ivc2hhcmUvc2NyY3B5L3NjcmNweS1zZXJ2ZXItdiR7dmVyc2lvbn0iCgpG cm9tIGY1OTA2ZjA1Y2FmMWIwMzlhMzZlNDQ1Mjc3NmJiYjUxZWJlN2VmYmQgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3Ny8xMTNdIHNwZWst YWx0ZXJuYXRpdmU6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9zcGVr LWFsdGVybmF0aXZlL3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2Vy dGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zcGVrLWFsdGVy bmF0aXZlL3RlbXBsYXRlIGIvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlCmluZGV4 IGQ2NTA4NmI4ZjAwOC4uMDUyNDZmMWI4ZDBjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3NwZWstYWx0 ZXJuYXRpdmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRl CkBAIC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzcGVrLWFsdGVybmF0aXZl JwogcGtnbmFtZT1zcGVrLWFsdGVybmF0aXZlCiB2ZXJzaW9uPTAuOC4yLjMKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0i YXV0b21ha2UgZ2V0dGV4dC1kZXZlbCBpbnRsdG9vbCBsaWJ0b29sIHBrZy1jb25maWcgd3hXaWRn ZXRzLWNvbW1vbiIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgd3hXaWRnZXRzLWd0azMtZGV2 ZWwiCi1kZXBlbmRzPSJmZm1wZWciCittYWtlZGVwZW5kcz0iZmZtcGVnNC1kZXZlbCB3eFdpZGdl dHMtZ3RrMy1kZXZlbCIKK2RlcGVuZHM9ImZmbXBlZzQiCiBzaG9ydF9kZXNjPSJBY291c3RpYyBz cGVjdHJ1bSBhbmFseXNlciIKIG1haW50YWluZXI9IkthcnRpayBTaW5naCA8a2FydGlrLnlud2FA Z21haWwuY29tPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCgpGcm9tIDNmNGQxNjRiOTRi ZWNmNDYwNDFkZWU5OWU5YmQ5ZmIwNzIxMmI1MjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3OC8xMTNdIHNzcjogcmV2YnVtcCBmb3IgZmZt cGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3Nzci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNo YW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3Nzci90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3NyL3RlbXBsYXRlCmluZGV4IGIwNTViOWVjMDc3 NC4uMzQ0OGNhMTEwZWIwIDEwMDY0NAotLS0gYS9zcmNwa2dzL3Nzci90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL3Nzci90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnc3NyJwogcGtnbmFtZT1zc3IKIHZlcnNpb249MC40LjQKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRIX1FUNT1PTiIKIGhv c3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBm Zm1wZWctZGV2ZWwgZ2x1LWRldmVsIGphY2stZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAorbWFrZWRl cGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZzQtZGV2ZWwgZ2x1LWRldmVsIGphY2stZGV2ZWwg cHVsc2VhdWRpby1kZXZlbAogIHF0NS10b29scy1kZXZlbCBxdDUteDExZXh0cmFzLWRldmVsIGxp YlhpbmVyYW1hLWRldmVsIHY0bC11dGlscy1kZXZlbCIKIGRlcGVuZHM9ImRlc2t0b3AtZmlsZS11 dGlscyBoaWNvbG9yLWljb24tdGhlbWUiCiBzaG9ydF9kZXNjPSJTaW1wbGUgU2NyZWVuIFJlY29y ZGVyIGZvciBwcm9ncmFtcyBhbmQgZ2FtZXMiCgpGcm9tIDdlOTI3ZmYzZmU1MzVkYWRjNzllY2Qx YmE5ODEwNTg2YjlkMjY4ZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAK U3ViamVjdDogW1BBVENIIDA3OS8xMTNdIHN1bW86IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9zdW1vL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zdW1vL3RlbXBsYXRl IGIvc3JjcGtncy9zdW1vL3RlbXBsYXRlCmluZGV4IDBmOWI5ZWM4MTVmNS4uYTNmZTEzNGFhNWFj IDEwMDY0NAotLS0gYS9zcmNwa2dzL3N1bW8vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zdW1vL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc3VtbycKIHBrZ25h bWU9c3VtbwogdmVyc2lvbj0xLjEyLjAKLXJldmlzaW9uPTUKK3JldmlzaW9uPTYKIGJ1aWxkX3N0 eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImxpYmdkYWwtdG9vbHMgcGtnLWNvbmZpZyBzd2ln IHB5dGhvbjMtc2V0dXB0b29scyIKIG1ha2VkZXBlbmRzPSJweXRob24zLWRldmVsIGZmbXBlZy1k ZXZlbCBmb3gtZGV2ZWwgZ2wycHMtZGV2ZWwgbGliZ2RhbC1kZXZlbAoKRnJvbSA4ODIyNzU2MTc0 YTI3NTNmYWVlNTAzYWE3ODMxYTQ4MDc4M2Q1NTlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODAvMTEzXSBzeW5maWc6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAgYW5kIG1sdDcKCi0tLQogc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2 LnBhdGNoIHwgNzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9zeW5maWcv dGVtcGxhdGUgICAgICAgICAgICAgIHwgIDYgKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDc0IGluc2Vy dGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9zeW5m aWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zeW5maWcvcGF0 Y2hlcy9mZm1wZWc2LnBhdGNoIGIvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTA3ODBiNDI3ODJmCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCkBA IC0wLDAgKzEsNzEgQEAKKy0tLSBhL3NyYy9tb2R1bGVzL21vZF9saWJhdmNvZGVjL3RyZ3RfYXYu Y3BwCTIwMjItMTAtMjUgMDk6MTQ6MTIuMDAwMDAwMDAwIC0wNDAwCisrKysgYi9zcmMvbW9kdWxl cy9tb2RfbGliYXZjb2RlYy90cmd0X2F2LmNwcAkyMDIzLTA1LTA1IDIxOjM0OjE3Ljg5OTE5NDU1 OSAtMDQwMAorQEAgLTM4LDYgKzQxLDcgQEAKKyBleHRlcm4gIkMiCisgeworICNpZmRlZiBIQVZF X0xJQkFWRk9STUFUX0FWRk9STUFUX0gKKysjCWluY2x1ZGUgPGxpYmF2Y29kZWMvYXZjb2RlYy5o PgorICMJaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KKyAjZWxpZiBkZWZpbmVkKEhB VkVfQVZGT1JNQVRfSCkKKyAjCWluY2x1ZGUgPGF2Zm9ybWF0Lmg+CitAQCAtMTU1LDExICsxNTYs MTEgQEAKKyAgICAgfQorIAorIAlib29sIG9wZW5fdmlkZW9fc3RyZWFtKCkgeworLQkJaWYgKGF2 Y29kZWNfb3BlbjIodmlkZW9fY29udGV4dCwgTlVMTCwgTlVMTCkgPCAwKSB7CisrCQlpZiAoYXZj b2RlY19vcGVuMih2aWRlb19jb250ZXh0LCBudWxscHRyLCBudWxscHRyKSA8IDApIHsKKyAJCQlz eW5maWc6OmVycm9yKCJUYXJnZXRfTGliQVZDb2RlYzogY291bGQgbm90IG9wZW4gdmlkZW8gY29k ZWMiKTsKKyAJCQkvLyBzZWVtcyB0aGUgY2FsbGluZyBvZiBhdmNvZGVjX2ZyZWVfY29udGV4dCBh ZnRlciBlcnJvciB3aWxsIGNhdXNlIGNyYXNoCisgCQkJLy8gc28ganVzdCBmb3JnZXQgYWJvdXQg dGhpcyBjb250ZXh0CistCQkJdmlkZW9fY29udGV4dCA9IE5VTEw7CisrCQkJdmlkZW9fY29udGV4 dCA9IG51bGxwdHI7CisgCQkJY2xvc2UoKTsKKyAJCQlyZXR1cm4gZmFsc2U7CisgICAgICAgICB9 CitAQCAtMjM0LDE1ICsyMzUsMjEgQEAKKyAJCWNsb3NlKCk7CisgCisgCQlpZiAoIWF2X3JlZ2lz dGVyZWQpIHsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTggLy8gRkZNUEVHIDwg NC4wCisgCQkJYXZfcmVnaXN0ZXJfYWxsKCk7CisrI2VuZGlmCisgCQkJYXZfcmVnaXN0ZXJlZCA9 IHRydWU7CisgCQl9CisgCisgCQkvLyBndWVzcyBmb3JtYXQKKy0JCUFWT3V0cHV0Rm9ybWF0ICpm b3JtYXQgPSBhdl9ndWVzc19mb3JtYXQoTlVMTCwgZmlsZW5hbWUuY19zdHIoKSwgTlVMTCk7Cisr I2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU5IC8vIEZGTVBFRyA8IDUuMAorKwkJQVZP dXRwdXRGb3JtYXQqIGZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdChudWxscHRyLCBmaWxlbmFtZS5j X3N0cigpLCBudWxscHRyKTsKKysjZWxzZQorKwkJY29uc3QgQVZPdXRwdXRGb3JtYXQqIGZvcm1h dCA9IGF2X2d1ZXNzX2Zvcm1hdChudWxscHRyLCBmaWxlbmFtZS5jX3N0cigpLCBudWxscHRyKTsK KysjZW5kaWYKKyAJCWlmICghZm9ybWF0KSB7CisgCQkJc3luZmlnOjp3YXJuaW5nKCJUYXJnZXRf TGliQVZDb2RlYzogdW5hYmxlIHRvIGd1ZXNzIHRoZSBvdXRwdXQgZm9ybWF0LCBkZWZhdWx0aW5n IHRvIE1QRUciKTsKKy0JCQlmb3JtYXQgPSBhdl9ndWVzc19mb3JtYXQoIm1wZWciLCBOVUxMLCBO VUxMKTsKKysJCQlmb3JtYXQgPSBhdl9ndWVzc19mb3JtYXQoIm1wZWciLCBudWxscHRyLCBudWxs cHRyKTsKKyAJCX0KKyAJCWlmICghZm9ybWF0KSB7CisgCQkJc3luZmlnOjplcnJvcigiVGFyZ2V0 X0xpYkFWQ29kZWM6IHVuYWJsZSB0byBmaW5kICdtcGVnJyBvdXRwdXQgZm9ybWF0Iik7CitAQCAt MjU0LDYgKzI2MSw3IEBACisgCQljb250ZXh0ID0gYXZmb3JtYXRfYWxsb2NfY29udGV4dCgpOwor IAkJYXNzZXJ0KGNvbnRleHQpOworIAkJY29udGV4dC0+b2Zvcm1hdCA9IGZvcm1hdDsKKysjaWYg TElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTggLy8gRkZNUEVHIDwgNC4wCisgCQlpZiAoZmls ZW5hbWUuc2l6ZSgpICsgMSA+IHNpemVvZihjb250ZXh0LT5maWxlbmFtZSkpIHsKKyAJCQlzeW5m aWc6OmVycm9yKAorIAkJCQkiVGFyZ2V0X0xpYkFWQ29kZWM6IGZpbGVuYW1lIHRvbyBsb25nLCBt YXggbGVuZ3RoIGlzICVkLCBmaWxlbmFtZSBpcyAnJXMnIiwKK0BAIC0yNjMsNiArMjcxLDE0IEBA CisgCQkJcmV0dXJuIGZhbHNlOworIAkJfQorIAkJbWVtY3B5KGNvbnRleHQtPmZpbGVuYW1lLCBm aWxlbmFtZS5jX3N0cigpLCBmaWxlbmFtZS5zaXplKCkgKyAxKTsKKysjZWxzZQorKwkJY29udGV4 dC0+dXJsID0gYXZfc3RybmR1cChmaWxlbmFtZS5jX3N0cigpLCBmaWxlbmFtZS5zaXplKCkpOwor KwkJaWYgKCFjb250ZXh0LT51cmwpIHsKKysJCQlzeW5maWc6OmVycm9yKCJUYXJnZXRfTGliQVZD b2RlYzogY2Fubm90IGFsbG9jYXRlIHNwYWNlIGZvciBmaWxlbmFtZSIpOworKwkJCWNsb3NlKCk7 CisrCQkJcmV0dXJuIGZhbHNlOworKwkJfQorKyNlbmRpZgorIAorIAkJcGFja2V0ID0gYXZfcGFj a2V0X2FsbG9jKCk7CisgCQlhc3NlcnQocGFja2V0KTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3lu ZmlnL3RlbXBsYXRlIGIvc3JjcGtncy9zeW5maWcvdGVtcGxhdGUKaW5kZXggMzAxMDk1NDFlYzRm Li43MDNjZmQ3ZWJhYzggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlCkBAIC0yLDExICsyLDExIEBACiAjIFNob3VsZCBiZSBr ZXB0IGluIHN5bmMgd2l0aCAnc3luZmlnc3R1ZGlvJyBhbmQgJ0VUTCcKIHBrZ25hbWU9c3luZmln CiB2ZXJzaW9uPTEuNC40Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1nbnUt Y29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS13aXRoLWJvb3N0LWxpYmRpcj0ke1hCUFNfQ1JP U1NfQkFTRX0vdXNyL2xpYiIKIGhvc3RtYWtlZGVwZW5kcz0iYm9vc3QtYnVpbGQgSW1hZ2VNYWdp Y2sgcGtnLWNvbmZpZyBpbnRsdG9vbCIKLW1ha2VkZXBlbmRzPSJFVEwgZ2V0dGV4dC1kZXZlbCBs aWJ4bWwrKy1kZXZlbCBtbHQtZGV2ZWwgbGlibWFnaWNrLWRldmVsCittYWtlZGVwZW5kcz0iRVRM IGdldHRleHQtZGV2ZWwgbGlieG1sKystZGV2ZWwgbWx0Ny1kZXZlbCBsaWJtYWdpY2stZGV2ZWwK ICBsaWJtbmctZGV2ZWwgYm9vc3QtYnVpbGQgYm9vc3QtZGV2ZWwgbGlib3BlbmV4ci1kZXZlbCBm Zm1wZWctZGV2ZWwiCiBkZXBlbmRzPSJJbWFnZU1hZ2ljayIKIHNob3J0X2Rlc2M9IkNMSSAyRCB2 ZWN0b3IgYW5kIHRpbWVsaW5lLWJhc2VkIGFuaW1hdGlvbiBzb2Z0d2FyZSIKQEAgLTIwLDcgKzIw LDcgQEAgQ1hYRkxBR1M9Ii1zdGQ9YysrMTEgLURIQVZFX0xPQ0FMRV9IPTEiCiAKIHN5bmZpZy1k ZXZlbF9wYWNrYWdlKCkgewogCWRlcGVuZHM9IiR7c291cmNlcGtnfT49JHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufQotCSBsaWJvcGVuZXhyLWRldmVsIGxpYnhtbCsrLWRldmVsIG1sdC1kZXZlbCIKKwkg bGlib3BlbmV4ci1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQ3LWRldmVsIgogCXNob3J0X2Rlc2Mr PSIgLSBkZXZlbG9wbWVudCBmaWxlcyIKIAlwa2dfaW5zdGFsbCgpIHsKIAkJdm1vdmUgdXNyL2Jp bi9zeW5maWctY29uZmlnCgpGcm9tIGZhNjk2NGRkNzc5MGMwMzhhMTY4MjZlODM4ZTMwODEwZGZk MDg4N2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BB VENIIDA4MS8xMTNdIHRnX293dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L3RnX293dC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlIGIvc3Jj cGtncy90Z19vd3QvdGVtcGxhdGUKaW5kZXggOTdkMTk1ZGRiMzRhLi41NTE2MTRiMjQ5NTYgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGdfb3d0L3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndGdfb3d0JwogcGtn bmFtZT10Z19vd3QKIHZlcnNpb249MC4wLjAuMjAyMzAxMDcKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIF9jb21taXQ9NTA5ODczMGI5ZWI2MTczZjBiNTIwNjhmZTI1NTViN2MxMDE1MTIzYQogX2xp Ynl1dl9jb21taXQ9MDA5NTA4NDBkMWM5YmNiYjNlYjZlYmM1YWFjNTc5M2U3MTE2NmM4YgogX2Fi c2VpbF9jb21taXQ9OGMwYjk0ZTc5M2E2NjQ5NWUwYjFmMzRhNWViMjZiZDdkYzY3MmRiMAoKRnJv bSA1YzNjNDA0YjYyMjkzNDYyNWExMmMzMTQyMjE1ZGY3MTBiOGE1ODc1IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODIvMTEzXSB0aW1nOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdGltZy90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZQppbmRleCAy YTJhYjc2M2QyZmQuLjhmYjQzMjc1MzVlZiAxMDA2NDQKLS0tIGEvc3JjcGtncy90aW1nL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ3RpbWcnCiBwa2duYW1lPXRpbWcKIHZlcnNpb249MS40LjUKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRI X09QRU5TTElERV9TVVBQT1JUPW9mZiAtV25vLWRldiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyBnaXQiCgpGcm9tIDM3ZjYzMTczZmY1YmIwYjVmYTQ3MjMxYTQ0OTE2YTBkNDk4M2ViOGQg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4 My8xMTNdIHR2aGVhZGVuZDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dz L3R2aGVhZGVuZC90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3R2aGVhZGVuZC90ZW1w bGF0ZSBiL3NyY3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlCmluZGV4IGU2YjE2ZDdjY2YzYi4uNDZi NTJiNmZiN2Y5IDEwMDY0NAotLS0gYS9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAndHZoZWFkZW5kJwogcGtnbmFtZT10dmhlYWRlbmQKIHZlcnNpb249NC4yLjgKLXJl dmlzaW9uPTYKK3JldmlzaW9uPTcKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3Vy ZV9hcmdzPSItLWVuYWJsZS1kdmJzY2FuIC0tZGlzYWJsZS1mZm1wZWdfc3RhdGljCiAtLWRpc2Fi bGUtaGRob21lcnVuX3N0YXRpYyAtLWRpc2FibGUtYmludHJheV9jYWNoZSAtLWRpc2FibGUtbGli eDI2NF9zdGF0aWMKIC0tZGlzYWJsZS1saWJ4MjY1X3N0YXRpYyAtLWRpc2FibGUtbGlidnB4X3N0 YXRpYyAtLWRpc2FibGUtbGlidGhlb3JhX3N0YXRpYwogLS1kaXNhYmxlLWxpYnZvcmJpc19zdGF0 aWMgLS1kaXNhYmxlLWxpYmZka2FhY19zdGF0aWMiCiBob3N0bWFrZWRlcGVuZHM9ImdldHRleHQg cGtnLWNvbmZpZyBweXRob24gZ2l0IHdoaWNoIgotbWFrZWRlcGVuZHM9ImF2YWhpLWxpYnMtZGV2 ZWwgb3BlbnNzbC1kZXZlbCB6bGliLWRldmVsIGxpYmN1cmwtZGV2ZWwgZmZtcGVnLWRldmVsIgor bWFrZWRlcGVuZHM9ImF2YWhpLWxpYnMtZGV2ZWwgb3BlbnNzbC1kZXZlbCB6bGliLWRldmVsIGxp YmN1cmwtZGV2ZWwgZmZtcGVnNC1kZXZlbCIKIHNob3J0X2Rlc2M9IlRWIHN0cmVhbWluZyBzZXJ2 ZXIiCiBtYWludGFpbmVyPSJsZW1taSA8bGVtbWlAbmVyZDJuZXJkLm9yZz4iCiBsaWNlbnNlPSJH UEwtMy4wLW9ubHkiCgpGcm9tIGU5Y2U3MDg5MWRmNDRjOWU2MzQ0ZDM4ZTExODU3ZWViNmRiYmNm NTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENI IDA4NC8xMTNdIHVucGFwZXI6IHVwZGF0ZSB0byA3LjAuMC4KCi0tLQogc3JjcGtncy91bnBhcGVy L3RlbXBsYXRlIHwgMTYgKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0 aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3VucGFwZXIvdGVt cGxhdGUgYi9zcmNwa2dzL3VucGFwZXIvdGVtcGxhdGUKaW5kZXggMzhlZDQ3YTU4NDAxLi4xZmY5 MTBlNzIyYWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3VucGFwZXIvdGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ3VucGFwZXInCiBwa2duYW1lPXVucGFwZXIKLXZlcnNpb249Ni4xCi1yZXZpc2lvbj0zCi1i dWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCit2ZXJzaW9uPTcuMC4wCityZXZpc2lvbj0xCitidWls ZF9zdHlsZT1tZXNvbgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIG1lc29uIGxpYnhzbHQi CittYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHB5dGhvbjMtU3BoaW54Igorc2hvcnRfZGVzYz0i UG9zdC1wcm9jZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogbWFpbnRh aW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKLWhvc3RtYWtlZGVwZW5kcz0i cGtnLWNvbmZpZyBsaWJ4c2x0IgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCIKLWxpY2Vuc2U9 IkdQTC0yIgorbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3d3 dy5mbGFtZWV5ZXMuZXUvcHJvamVjdHMvdW5wYXBlciIKLXNob3J0X2Rlc2M9IkEgcG9zdC1wcm9j ZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogZGlzdGZpbGVzPSJodHRw czovL3d3dy5mbGFtZWV5ZXMuZXUvZmlsZXMvJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci54eiIK LWNoZWNrc3VtPTIzN2M4NGY1ZGE1NDRiM2Y3NzA5ODI3ZjlmMTJjMzdjMzQ2Y2RmMDI5YjExMjhm YjQ2MzNmOWJhZmE1Y2I5MzAKK2NoZWNrc3VtPTI1NzVmYmJmMjZjMjI3MTlkMWNiODgyYjU5NjAy Yzk5MDBjN2Y3NDcxMThhYzEzMDg4M2Y2MzQxOWJlNDZhODAKCkZyb20gZWQxMmJkYTU1MjE1OWNk NzAyMTAzNDYzMDE3ZDA3ZjZmMjJjNWU5YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1 MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg1LzExM10gdmJhLW06IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy92YmEtbS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmJh LW0vdGVtcGxhdGUgYi9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRlCmluZGV4IGJhMTUzZTBiNThjYS4u YWE2MDkzNjQ1ZTk3IDEwMDY0NAotLS0gYS9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvdmJhLW0vdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiBwa2duYW1lPXZiYS1tCiByZXZl cnRzPTEyOTJfMgogdmVyc2lvbj0yLjEuNQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREVOQUJMRV9HVEs9VFJVRSAtREVOQUJMRV9G Rk1QRUc9VFJVRSAtREVOQUJMRV9MSU5LPVRSVUUgLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2Ui CiBob3N0bWFrZWRlcGVuZHM9ImdldHRleHQgcGtnLWNvbmZpZyB1bnppcCB6aXAgeWFzbSB3eFdp ZGdldHMtZ3RrMy1kZXZlbCIKCkZyb20gNGI2ODkyYzI2NTlhMGIwNmIxZjEzYzM5ZDYwNDE2Mjhl MzVhN2FjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDg2LzExM10gdmljZTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNw a2dzL3ZpY2UvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy92aWNlL3RlbXBsYXRlIGIv c3JjcGtncy92aWNlL3RlbXBsYXRlCmluZGV4IGZlOWQzM2E4MTE5NC4uNGJlYWIyYzVmOWViIDEw MDY0NAotLS0gYS9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUKKysrIGIvc3JjcGtncy92aWNlL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndmljZScKIHBrZ25hbWU9 dmljZQogdmVyc2lvbj0zLjcuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9IgogCSQodm9wdF9lbmFibGUgc2RsMiBzZGx1 aTIpCkBAIC0yNiw3ICsyNiw3IEBAIG1ha2VkZXBlbmRzPSIKIAkkKHZvcHRfaWYgZ3RrMyBndGsr My1kZXZlbCkKIAkkKHZvcHRfaWYgZ3RrMyBwdWxzZWF1ZGlvLWRldmVsKQogCSQodm9wdF9pZiBn dGszIHBhbmdvLWRldmVsKQotCSQodm9wdF9pZiBmZm1wZWcgZmZtcGVnLWRldmVsKSIKKwkkKHZv cHRfaWYgZmZtcGVnIGZmbXBlZzQtZGV2ZWwpIgogc2hvcnRfZGVzYz0iRW11bGF0b3IgZm9yIEM2 NCwgQzEyOCwgQ0JNLUlJLCBQRVQsIFZJQzIwLCBQbHVzNCBhbmQgQzE2IgogbWFpbnRhaW5lcj0i T3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0 ZXIiCgpGcm9tIDBjOGUwZmI1ODc1YTUzZGNhMjMwNmMwZTU5NzZhZGQxNDU0MzhlNjEgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4Ny8xMTNd IHdheXBpcGU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy93YXlwaXBlL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy93YXlwaXBlL3RlbXBsYXRlIGIvc3JjcGtncy93YXlw aXBlL3RlbXBsYXRlCmluZGV4IDVjNDE2MTkwMDA2MC4uMWE0NmZlMjdmN2Q4IDEwMDY0NAotLS0g YS9zcmNwa2dzL3dheXBpcGUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93YXlwaXBlL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnd2F5cGlwZScKIHBrZ25hbWU9 d2F5cGlwZQogdmVyc2lvbj0wLjguNAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9bWVzb24KICMgbHRvIGlzIG9mZiBiZWNhdXNlIGl0IGNhdXNlcyBsaW5raW5nIGVycm9ycyBp biBhcm12NmwgYW5kIGFybXY3bCAoZHVlIHRvIE5FT04pCiBjb25maWd1cmVfYXJncz0iLUR3ZXJy b3I9ZmFsc2UgLUR3aXRoX2RtYWJ1Zj1lbmFibGVkIC1Ed2l0aF9sejQ9ZW5hYmxlZAoKRnJvbSAz OGU2NzU1ODM0N2Q4YmE4YjdiZmZmOTM3OTJjNjkyZmIyNTdjYjc2IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODgvMTEzXSB3Zi1yZWNvcmRl cjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZSBiL3NyY3BrZ3Mvd2Yt cmVjb3JkZXIvdGVtcGxhdGUKaW5kZXggZTI3OGViMDAxNjAwLi41ZDAxNGE1ZjI4YWYgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93Zi1yZWNv cmRlci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3dmLXJl Y29yZGVyJwogcGtnbmFtZT13Zi1yZWNvcmRlcgogdmVyc2lvbj0wLjMuMAotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZp ZyBzY2RvYyB3YXlsYW5kLWRldmVsIgogbWFrZWRlcGVuZHM9IndheWxhbmQtcHJvdG9jb2xzIHdh eWxhbmQtZGV2ZWwgZmZtcGVnLWRldmVsIHgyNjQtZGV2ZWwKCkZyb20gYTk0YmQ4M2ZhODMzZmE5 OWI3MTc5ZWI1MjY3MTNlZGRhODdiMGIwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1 MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg5LzExM10geHByYTogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL3hwcmEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3hwcmEv dGVtcGxhdGUgYi9zcmNwa2dzL3hwcmEvdGVtcGxhdGUKaW5kZXggMGE2M2ZkYjZjNzQzLi5kNWFj YzE5ODFjNWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MveHByYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3hwcmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd4cHJh JwogcGtnbmFtZT14cHJhCiB2ZXJzaW9uPTQuNC42Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1weXRob24zLW1vZHVsZQogbWFrZV9idWlsZF9hcmdzPSItLXdpdGhvdXQtY3Vk YV9rZXJuZWxzIC0td2l0aG91dC1jdWRhX3JlYnVpbGQiCiBtYWtlX2luc3RhbGxfYXJncz0iJCh2 b3B0X3dpdGggZG9jcykgJHttYWtlX2J1aWxkX2FyZ3N9IgoKRnJvbSBhYjU1YTRmNTkxNmJlZmFk ZDc1ODYwMWYxMmU2ZWNmNmIzNjRhNWEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDMxIE1hciAyMDIzIDA5OjA3OjQw IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTAvMTEzXSBudi1jb2RlYy1oZWFkZXJzOiB1cGRhdGUg dG8gMTIuMC4xNi4wCgotLS0KIHNyY3BrZ3MvbnYtY29kZWMtaGVhZGVycy90ZW1wbGF0ZSB8IDQg KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUgYi9zcmNwa2dzL252 LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUKaW5kZXggM2Q0MjJhNjFlNDg5Li4yNTFlMDU3ZjgyNmYg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbnYtY29kZWMtaGVhZGVycy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdudi1jb2RlYy1oZWFkZXJzJwogcGtnbmFtZT1udi1jb2RlYy1oZWFkZXJzCi12 ZXJzaW9uPTExLjEuNS4xCit2ZXJzaW9uPTEyLjAuMTYuMAogcmV2aXNpb249MQogYnVpbGRfc3R5 bGU9Z251LW1ha2VmaWxlCiBzaG9ydF9kZXNjPSJGRm1wZWcgdmVyc2lvbiBvZiBoZWFkZXJzIHJl cXVpcmVkIHRvIGludGVyZmFjZSB3aXRoIE52aWRpYXMgY29kZWMgQVBJcyIKQEAgLTgsNyArOCw3 IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNl PSJNSVQiCiBob21lcGFnZT0iaHR0cDovL2dpdC52aWRlb2xhbi5vcmcvP3A9ZmZtcGVnL252LWNv ZGVjLWhlYWRlcnMuZ2l0IgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vRkZtcGVnL252 LWNvZGVjLWhlYWRlcnMvYXJjaGl2ZS9uJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT1kMDk1 ZmJkNTZhYTkzNzcyNDcxYTMyM2JlMGViZTY1NTA0YTBmNDNmMDZjNzZhMzBiNmQyNWRhNzdiMDZh ZTljCitjaGVja3N1bT0yYTE1MzNiNjVmNTVmOWRhNTI5NTZmYWYwNjI3ZWQzYjc0ODY4YWMwYzdm MjY5OTkwZWRkMjEzNjkxMTNiNDhmCiAKIHBvc3RfaW5zdGFsbCgpIHsKIAlzZWQgLW4gJzQsMjVw JyBpbmNsdWRlL2ZmbnZjb2RlYy9udkVuY29kZUFQSS5oID4gTElDRU5TRQoKRnJvbSBhOWZiNjZm YTQ4ZWU0MTg2ZTkyNDcyNmM1YWMyMzA2ODkyM2NiZDQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDMxIE1hciAyMDIz IDA5OjA4OjQwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTEvMTEzXSBvcGVuaW1hZ2VkZW5vaXNl OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZSBiL3Ny Y3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZQppbmRleCBkYjVjY2RiMDU1Y2MuLmNiOTAw NDVhZmI2MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5pbWFnZWRlbm9pc2UnCiBwa2duYW1lPW9wZW5pbWFnZWRl bm9pc2UKIHZlcnNpb249MS40LjMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGFyY2hzPSJ4ODZf NjQqIgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0iaXNwYyBweXRob24zIgoK RnJvbSA3MDM5N2ZlODYwYjVhNDk1MzFhMTk1NTQ4ZmQxNmJmNGFlMGUyZWM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24s IDMgQXByIDIwMjMgMjM6MzE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5Mi8xMTNdIHNob3Rj dXQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlIGIvc3JjcGtncy9zaG90Y3V0L3Rl bXBsYXRlCmluZGV4IDdkMmFmN2IwNDcwYi4uYzQxNmM5MDZmZjczIDEwMDY0NAotLS0gYS9zcmNw a2dzL3Nob3RjdXQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2hvdGN1dCcKIHBrZ25hbWU9c2hvdGN1 dAogdmVyc2lvbj0yMy4wNS4xNAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFNIT1RDVVRfVkVSU0lPTj0ke3ZlcnNpb259IgogaG9z dG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0Ni10b29scy1kZXZlbCIKCkZyb20gOGIwZjU0NjE5 YmYxMzViNTM2MTBkOTM1NTlkOGQ5YThlNzBmMmE2OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAzIEFwciAyMDIzIDIz OjMzOjMwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTMvMTEzXSBzaGlib2tlbjI6IHJldmJ1bXAg Zm9yIHF0NS01LjE1LjgKCi0tLQogc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWIt bWFjaGluZXJ5LWJ5cGFzcy5wYXRjaCB8IDEgKwogc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtn cy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaAoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1i eXBhc3MucGF0Y2ggYi9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5l cnktYnlwYXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMC4u ZWZjZjMyNDliZDg4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hl cy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApAQCAtMCwwICsxIEBACisuLi8uLi9w eXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9rZW4y L3RlbXBsYXRlIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKaW5kZXggMDg0ZWNjM2JhMWUx Li4yYTIxOTk4OTk3ZWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnc2hpYm9rZW4yJwogcGtnbmFtZT1zaGlib2tlbjIKIHZlcnNpb249NS4xNS43 Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfcGtnbmFtZT0icHlzaWRlLXNldHVwLW9wZW5zb3Vy Y2Utc3JjLSR7dmVyc2lvbn0iCiBidWlsZF93cmtzcmM9InNvdXJjZXMvc2hpYm9rZW4yIgogYnVp bGRfc3R5bGU9Y21ha2UKCkZyb20gZDM0NjljNjExNTY2ZTZjMjdjOWU5NTdiNmZiNjYyZGYxMzNh MjNmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogTW9uLCAzIEFwciAyMDIzIDIzOjMzOjUzIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwOTQvMTEzXSBweXRob24zLXB5c2lkZTI6IHVwZGF0ZSB0byA1LjE1LjgKCi0tLQogLi4uL3Bh dGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggICAgICB8IDE1ICsrKysrKysr KysrKysrKwogc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUgICAgICAgICAgICAgICAg ICB8ICA5ICsrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA0IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3Bh dGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBh dGNoIGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5 LWJ5cGFzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY0 YzQyOTU4NDc3NgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3Bh dGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKQEAgLTAsMCArMSwxNSBAQAor VXNpbmcgdGhpcyBwcmV2ZW50cyBhbiBlcnJvciBhcm91bmQgbGluZSAyMjAgYmVsb3cgaXQuCisi QXR0cmlidXRlRXJyb3I6IG1vZHVsZSAnaW1wb3J0bGliJyBoYXMgbm8gYXR0cmlidXRlICdtYWNo aW5lcnknIgorVGhlIG9sZCBiYWNrdXAgbG9naWMgaXMgaW4gcGxhY2UgYW5kIGNvbXBpbGVzIHdp dGhvdXQgaXNzdWVzLgorLS0tIGEvc291cmNlcy9zaGlib2tlbjIvbGlic2hpYm9rZW4vZW1iZWQv c2lnbmF0dXJlX2Jvb3RzdHJhcC5weQkyMDIzLTA0LTAyIDIzOjA5OjM0LjY4ODkxMjQwMiAtMDQw MAorKysrIGIvc291cmNlcy9zaGlib2tlbjIvbGlic2hpYm9rZW4vZW1iZWQvc2lnbmF0dXJlX2Jv b3RzdHJhcC5weQkyMDIzLTA0LTAyIDIzOjEwOjAzLjM5NTUyOTU4MiAtMDQwMAorQEAgLTE3MCw5 ICsxNzAsNiBAQAorCisgICAgICMgJ3ppcHN0cmluZ19zZXF1ZW5jZScgY29tZXMgZnJvbSBzaWdu YXR1cmUuY3BwCisgICAgIHppcGJ5dGVzID0gYmFzZTY0LmI2NGRlY29kZSgnJy5qb2luKHppcHN0 cmluZ19zZXF1ZW5jZSkpCistICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPj0gMzoKKy0gICAg ICAgIHZ6aXAgPSB6aXBmaWxlLlppcEZpbGUoaW8uQnl0ZXNJTyh6aXBieXRlcykpCistICAgICAg ICByZXR1cm4gc3lzLm1ldGFfcGF0aCwgRW1iZWRkYWJsZVppcEltcG9ydGVyKHZ6aXApCisKKyAg ICAgIyBPbGQgdmVyc2lvbiBmb3IgUHl0aG9uIDIuNywgb25seS4KKyAgICAgaW1wb3J0IG9zCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHl0 aG9uMy1weXNpZGUyL3RlbXBsYXRlCmluZGV4IDUwZTZmZjI2MGQzYi4uYjUwZTYyYmQyMTVkIDEw MDY0NAotLS0gYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMiBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAncHl0aG9uMy1weXNpZGUyJwogcGtnbmFtZT1weXRob24zLXB5c2lkZTIKLXZlcnNp b249NS4xNS41Ci1yZXZpc2lvbj0yCit2ZXJzaW9uPTUuMTUuOAorcmV2aXNpb249MQogX3BrZ25h bWU9InB5c2lkZS1zZXR1cC1vcGVuc291cmNlLXNyYy0ke3ZlcnNpb259IgogYnVpbGRfd3Jrc3Jj PSJzb3VyY2VzL3B5c2lkZTIiCiBidWlsZF9zdHlsZT1jbWFrZQotY29uZmlndXJlX2FyZ3M9Ii1E UFlUSE9OX0VYRUNVVEFCTEU9L3Vzci9iaW4vcHl0aG9uIgorY29uZmlndXJlX2FyZ3M9Ii1EUFlU SE9OX0VYRUNVVEFCTEU9L3Vzci9iaW4vcHl0aG9uIC1EQ01BS0VfQlVJTERfVFlQRT1Ob25lCisg LURCVUlMRF9URVNUUz1PRkYiCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHB5dGhvbjMgc2hpYm9r ZW4yIgogbWFrZWRlcGVuZHM9InB5dGhvbjMtZGV2ZWwgbGlic2hpYm9rZW4yLWRldmVsIHF0NS1k ZXZlbAogIHF0NS1tdWx0aW1lZGlhLWRldmVsIHF0NS10b29scy1kZXZlbCBxdDUtcGx1Z2luLW15 c3FsIHF0NS1wbHVnaW4tb2RiYwpAQCAtMjMsNyArMjQsNyBAQCBtYWludGFpbmVyPSJ5b3BpdG8g PHBpZXJyZS5ib3VyZ2luQGZyZWUuZnI+IgogbGljZW5zZT0iTEdQTC0zLjAtb3ItbGF0ZXIiCiBo b21lcGFnZT0iaHR0cHM6Ly93aWtpLnF0LmlvL1F0X2Zvcl9QeXRob24iCiBkaXN0ZmlsZXM9Imh0 dHBzOi8vZG93bmxvYWQucXQuaW8vb2ZmaWNpYWxfcmVsZWFzZXMvUXRGb3JQeXRob24vcHlzaWRl Mi9QeVNpZGUyLSR7dmVyc2lvbn0tc3JjLyR7X3BrZ25hbWV9LnRhci54eiIKLWNoZWNrc3VtPTM5 MjBhNGZiMzUzMzAwMjYwYzliYzQ2ZmY3MGYxZmI5NzVjNWU3ZWZhMjJlOWQ1MTIyMjU4ODkyOGNl MTliMzMKK2NoZWNrc3VtPTIzNDM2MzAyYzhkZWI1YjRjYmM3NjliMjA1ZDA5NjA0ZTM4YmE4M2I0 MDcwOGVmY2NiN2JkOGM5YWY2ZjZiNWQKIAogYnVpbGRfb3B0aW9ucz0id2ViZW5naW5lIgogZGVz Y19vcHRpb25fd2ViZW5naW5lPSJCdWlsZCBRdDUgV2ViRW5naW5lIGJpbmRpbmdzIgoKRnJvbSAx MjgzYmRiNzRlMmJhYzIwMGNiMDY0Yjg0OThlNmM0MmIxMmE2OGNlIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXBy IDIwMjMgMTE6MTQ6MzUgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5NS8xMTNdIGtvbnF1ZXJvcjog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZSB8 IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZSBiL3NyY3BrZ3Mva29ucXVl cm9yL3RlbXBsYXRlCmluZGV4IGQ4ZDBlNzNhNzhhYi4uYzViZGJhNjAxZDNjIDEwMDY0NAotLS0g YS9zcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tvbnF1ZXJvci90ZW1w bGF0ZQpAQCAtMSwxMSArMSwxMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna29ucXVlcm9yJwog cGtnbmFtZT1rb25xdWVyb3IKIHZlcnNpb249MjMuMDQuMAotcmV2aXNpb249MQorcmV2aXNpb249 MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRERFU0tUT1BUT0pTT05fRVhF Q1VUQUJMRT0vdXNyL2Jpbi9kZXNrdG9wdG9qc29uIgogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1j bWFrZS1tb2R1bGVzIHB5dGhvbjMgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIGtkb2N0b29scwot a2NvcmVhZGRvbnMga2NvbmZpZyBnZXR0ZXh0IgorIGtjb3JlYWRkb25zIGtjb25maWcgZ2V0dGV4 dCIKIG1ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LXdlYmVuZ2luZS1kZXZlbCBxdDUtZGVjbGFy YXRpdmUtZGV2ZWwKICBxdDUtd2ViY2hhbm5lbC1kZXZlbCBxdDUtbG9jYXRpb24tZGV2ZWwga2Nt dXRpbHMtZGV2ZWwga2RlbGliczRzdXBwb3J0LWRldmVsCiAga2FyY2hpdmUtZGV2ZWwga2h0bWwt ZGV2ZWwga2Rlc3UtZGV2ZWwga2FjdGl2aXRpZXM1LWRldmVsIgoKRnJvbSBjOWQxNjM0NTYyMWJh NTBjYmU4MzA4YTNlMzNlNGI2YzdkYjZiNGRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTE6MTQ6 NTggLTA0MDAKU3ViamVjdDogW1BBVENIIDA5Ni8xMTNdIHF0NS1zcGVlY2g6IHJldmJ1bXAgZm9y IHF0NS01LjE1LjgKCi0tLQogc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRl CmluZGV4IDNlY2QxMGQ1MDY1MC4uMmQ3ZDRkNGQyNDUzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0 NS1zcGVlY2gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1LXNwZWVjaCcKIHBrZ25hbWU9cXQ1 LXNwZWVjaAogdmVyc2lvbj01LjE1LjcKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIF9jb21taXQ9 ZDMyZjRhNDc5ZDM4YTExZjU0NzU5ODAwNGI5NzVmNDM1NjQyNGExNgogYnVpbGRfc3R5bGU9cW1h a2UKIGNvbmZpZ3VyZV9hcmdzPSItLSAtZmxpdGUgLWZsaXRlLWFsc2EgLXNwZWVjaGQiCgpGcm9t IDY1MmU4OWM4ZmM4MjZjM2ExM2MyNmE3NjI0NjY2YmJlMTZmNGNmNGEgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBB cHIgMjAyMyAxODozODo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk3LzExM10gcXQ1LXN0eWxl cGx1Z2luczogcmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0tCiBzcmNwa2dzL3F0NS1zdHlsZXBs dWdpbnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxh dGUgYi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKaW5kZXggOTZlZDk3ZDEyY2Qy Li4zMGQ5MzY2MGEyYTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUtc3R5bGVwbHVnaW5zJwogcGtnbmFtZT1xdDUt c3R5bGVwbHVnaW5zCiB2ZXJzaW9uPTUuMC4wCi1yZXZpc2lvbj0yMAorcmV2aXNpb249MjEKIF9n aXRyZXY9MzM1ZGJlY2UxMDNlMmNiZjZjN2NmODE5YWI2NjcyYzI5NTZiMTdiMwogYnVpbGRfc3R5 bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUt cW1ha2UiCgpGcm9tIGI4ZGIwNWRhYTgxMjVhMjQ3Y2Q4YzIwM2M4YTcxMWEzNDQ3NzkwY2EgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFN1biwgNyBNYXkgMjAyMyAyMDoxNDoxNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk4LzEx M10gbWx0NzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1saWJhdi90 ZW1wbGF0ZSB8IDIgKy0KIHNyY3BrZ3MvbWx0Ny90ZW1wbGF0ZSAgICAgIHwgMiArLQogMiBmaWxl cyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQpp bmRleCAwNGMzOWJmZjE0ODkuLjhjNzJmYzNlOTdlZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3Qt bGliYXYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtbGliYXYnCiBwa2duYW1lPWdzdC1saWJh dgogdmVyc2lvbj0xLjIyLjIKLXJldmlzaW9uPTIKK3JldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1l c29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgeWFzbSIKIG1ha2VkZXBlbmRzPSJvcmMt ZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwgZmZtcGVnLWRldmVsIgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9tbHQ3L3RlbXBsYXRlIGIvc3JjcGtncy9tbHQ3L3RlbXBsYXRlCmluZGV4IDlmYjdm NjBkNjkyZS4uY2NhMGViNjhjZmMzIDEwMDY0NAotLS0gYS9zcmNwa2dzL21sdDcvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9tbHQ3L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnbWx0NycKIHBrZ25hbWU9bWx0NwogdmVyc2lvbj03LjE0LjAKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURTV0lHX1BZ VEhPTj1PTiIKIGhvc3RtYWtlZGVwZW5kcz0iZG94eWdlbiBwa2ctY29uZmlnIGxhZHNwYS1zZGsg c3dpZyBweXRob24zIHdoaWNoCgpGcm9tIDhkNDliMjliOWNlYWI3NTllZjM2ODlmNGJiM2Y4ZTU4 ZGE3OWY5OWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFN1biwgNyBNYXkgMjAyMyAyMDoxNTowMyAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDk5LzExM10gcXQ2LXdlYmVuZ2luZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUgfCAzICsrLQogMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2 LXdlYmVuZ2luZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQppbmRl eCA0ZTIyY2I2ZTg4NjMuLjQzNzc4YjU2OGQzZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDYtd2Vi ZW5naW5lL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0Ni13ZWJlbmdpbmUnCiBwa2duYW1l PXF0Ni13ZWJlbmdpbmUKIHZlcnNpb249Ni41LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iCiAgLURRVF9GRUFUVVJFX3dlYmVuZ2lu ZV9zeXN0ZW1fZmZtcGVnPU9OCkBAIC0xNDUsNiArMTQ1LDcgQEAgcHJlX2luc3RhbGwoKSB7CiB9 CiAKIHBvc3RfaW5zdGFsbCgpIHsKKwl2bGljZW5zZSBMSUNFTlNFUy9CU0QtMy1DbGF1c2UudHh0 CiAJbG9jYWwgX2ZpbGUKIAlmaW5kICIke0RFU1RESVJ9Ii91c3IvbGliL3F0Ni9leGFtcGxlcyBc CiAJCS1wYXRoICcqL2xpYi9xdDYvKiovbGliL3F0Ni8qJyAtdHlwZSBmIHwKCkZyb20gYTZmNWI3 MjMyMjg5NTVkNTdjZDY4ODA1ODA5YTg3OGI1YWRmNGUwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA3IE1heSAyMDIz IDIwOjE1OjI5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDAvMTEzXSB0cmFja2VyLW1pbmVyczog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RyYWNrZXItbWluZXJzL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90cmFja2VyLW1pbmVycy90ZW1wbGF0ZSBiL3NyY3BrZ3Mv dHJhY2tlci1taW5lcnMvdGVtcGxhdGUKaW5kZXggOGMwMDVkNjk3ZmE0Li5hNmU1YWE1Nzc3MDIg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy90cmFja2VyLW1pbmVycy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3RyYWNrZXItbWluZXJzJwogcGtnbmFtZT10cmFja2VyLW1pbmVycwogdmVyc2lvbj0z LjUuMAotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9bWVzb24KIGJ1aWxkX2hl bHBlcj1xZW11CiAjIG1pc3NpbmcgbGliZ3JzcyBmb3IgbWluZXJfcnNzCgpGcm9tIDYxMDM5ZWJm OTUzY2Y5Mjk5ZjMxMGNkOWVmZWY0MzY0MTBlZTJiOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNyBNYXkgMjAyMyAy MDoyMDo1OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTAxLzExM10gbXBkOiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbXBkL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9t cGQvdGVtcGxhdGUgYi9zcmNwa2dzL21wZC90ZW1wbGF0ZQppbmRleCA5ZGJkNGM5MzVhY2MuLjlm MDU4YjYyZGYyZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9tcGQvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9tcGQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtcGQn CiBwa2duYW1lPW1wZAogdmVyc2lvbj0wLjIzLjEzCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1Eb3B1cz1lbmFibGVkIC1EbWlrbW9k PWVuYWJsZWQgLURuZWlnaGJvcj10cnVlCiAgLURzb3VuZGNsb3VkPWVuYWJsZWQgLURwaXBlPXRy dWUgLUR0d29sYW1lPWVuYWJsZWQgLURiemlwMj1lbmFibGVkCgpGcm9tIGFjNDY2MjkzMGRkN2Ex ZTVmYjdiYmI3NjEzMDk5MTcyODYyYzVlMzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFRodSwgMTEgTWF5IDIwMjMgMTQ6MDU6 MTQgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMi8xMTNdIG9wZW5tdzogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL29wZW5tdy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv b3Blbm13L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVubXcvdGVtcGxhdGUKaW5kZXggZTM3NzFjN2Fh ZjFhLi4zY2JmMjBiMDY1NzcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCisr KyBiL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnb3Blbm13JwogcGtnbmFtZT1vcGVubXcKIHZlcnNpb249MC40Ny4wCi1yZXZpc2lv bj01CityZXZpc2lvbj02CiBidWlsZF9zdHlsZT1jbWFrZQogX3JlY2FzdF9jb21taXQ9ZTc1YWRm ODZmOTFlYjMwODIyMjAwODVlNDJkZGE2MjY3OWY5YTNlYQogX2J1bGxldF90YWc9My4xNwoKRnJv bSAzNjBiOTY5YWYwZmYzMDg3NGQ2YmQ3NWI1YzQ5NGM3NzljYTlhNDJjIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDIx IE1heSAyMDIzIDEyOjQ0OjExIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDMvMTEzXSBlbGVjdHJv bjI0OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZWxlY3Ryb24yNC90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZWxl Y3Ryb24yNC90ZW1wbGF0ZQppbmRleCBiZGFhNTZhZGM4YTYuLmZmM2Q1ZTNlZjM4MSAxMDA2NDQK LS0tIGEvc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24y NC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2VsZWN0cm9u MjQnCiBwa2duYW1lPWVsZWN0cm9uMjQKIHZlcnNpb249MjQuMy4wCi1yZXZpc2lvbj0xCityZXZp c2lvbj0yCiBfbm9kZXZlcj0xOC4xNC4wCiBfY2hyb21pdW12ZXI9MTEyLjAuNTYxNS4xNjUKIGFy Y2hzPSJ4ODZfNjQqIGFhcmNoNjQqIgoKRnJvbSBmYWRkYjE4Mjg2ZjFkYzhhYzhlMGM4YWMyY2E4 MWRmNjA0MDM2ZjI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBTYXQsIDMgSnVuIDIwMjMgMDg6MjA6MjIgLTA0MDAKU3ViamVj dDogW1BBVENIIDEwNC8xMTNdIGd0azQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9ndGs0L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ndGs0L3RlbXBsYXRlIGIvc3Jj cGtncy9ndGs0L3RlbXBsYXRlCmluZGV4IGIzMThiN2JhZTFkZC4uZTNiZGU0YTUwZTU0IDEwMDY0 NAotLS0gYS9zcmNwa2dzL2d0azQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9ndGs0L3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3RrNCcKIHBrZ25hbWU9Z3Rr NAogdmVyc2lvbj00LjEwLjQKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1l c29uCiBidWlsZF9oZWxwZXI9ImdpciIKIGNvbmZpZ3VyZV9hcmdzPSItRG1hbi1wYWdlcz10cnVl IC1EZ3RrX2RvYz10cnVlIC1EYnVpbGQtdGVzdHM9ZmFsc2UKCkZyb20gMDlmOTlmMmYzZWE1MTBj NGIxNGIxNTQzMjllNmFhMzdlYzE0NGI0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA0IEp1biAyMDIzIDExOjI1OjUw IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDUvMTEzXSBlbGVjdHJvbjE5OiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZQpp bmRleCAzMmNlMzAxZTczMGMuLmFiN2YzMDhmNWU4YSAxMDA2NDQKLS0tIGEvc3JjcGtncy9lbGVj dHJvbjE5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2VsZWN0cm9uMTknCiBwa2duYW1lPWVsZWN0 cm9uMTkKIHZlcnNpb249MTkuMC44Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBfbm9kZXZlcj0x Ni4xNC4yCiBfY2hyb21pdW12ZXI9MTAyLjAuNTAwNS4xMjUKIGFyY2hzPSJ4ODZfNjQqIGFhcmNo NjQqIHBwYzY0bGUqIgoKRnJvbSA4MTc0ZTU4N2I0NTI4OWEyZTU0YjhkNDE3OTJlNDdhMGMxNmFj YmVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBTdW4sIDQgSnVuIDIwMjMgMTE6Mjg6MjYgLTA0MDAKU3ViamVjdDogW1BBVENI IDEwNi8xMTNdIHNpcmlsOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2ly aWwvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlIGIvc3JjcGtncy9z aXJpbC90ZW1wbGF0ZQppbmRleCA4NDMzMmY3OWQwNjAuLjYyNzUwZGQyNDc1NCAxMDA2NDQKLS0t IGEvc3JjcGtncy9zaXJpbC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2lyaWwnCiBwa2duYW1lPXNpcmls CiB2ZXJzaW9uPTAuOS4xMgotcmV2aXNpb249MTAKK3JldmlzaW9uPTExCiBidWlsZF9zdHlsZT1n bnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgaW50bHRvb2wgYXV0b2Nv bmYgYXV0b21ha2UgZ2V0dGV4dC1kZXZlbCIKIG1ha2VkZXBlbmRzPSJmZnR3LWRldmVsIGxpYmNv bmZpZy1kZXZlbCBsaWJvcGVuY3YtZGV2ZWwgbGliZmZtczItZGV2ZWwKCkZyb20gNWQ2NWRkYTNl YWY0MWE3M2M3N2I0MmZkZDA3NmVkZWM0NDRmNTVmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA0IEp1biAyMDIzIDEx OjI5OjA4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDcvMTEzXSB0ZWxlZ3JhbS1kZXNrdG9wOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZSBiL3NyY3Br Z3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQppbmRleCBmMTE0YjIzNDFkYzUuLjlkYjlmODBj MWE1MyAxMDA2NDQKLS0tIGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3RlbGVncmFtLWRlc2t0b3AnCiBwa2duYW1lPXRlbGVncmFtLWRlc2t0 b3AKIHZlcnNpb249NC44LjEKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWNt YWtlCiBidWlsZF9oZWxwZXI9InFlbXUiCiBjb25maWd1cmVfYXJncz0iLURUREVTS1RPUF9BUElf SUQ9MjA5MjM1CgpGcm9tIDA2MjFhYjRiNGNlOWFlMWM1NDljNTBlOWM0MTg0YTRjY2I4YmExMmQg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMTAgSnVuIDIwMjMgMDA6NDA6MzkgLTA0MDAKU3ViamVjdDogW1BBVENIIDEw OC8xMTNdIGZyZWVjYWQ6IHJldmJ1bXAgZm9yIHF0NS13ZWJlbmdpbmUtNS4xNS4xMwoKLS0tCiBz cmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxh dGUgYi9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUKaW5kZXggYTRhM2Y1Zjc2YjI5Li44NjA4ZDE2 NzBjODcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZnJlZWNhZC90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2ZyZWVjYWQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdm cmVlY2FkJwogcGtnbmFtZT1mcmVlY2FkCiB2ZXJzaW9uPTAuMjAuMgotcmV2aXNpb249NQorcmV2 aXNpb249NgogYnVpbGRfc3R5bGU9Y21ha2UKIAogX2luc3RfcHJlZml4PS91c3IvbGliLyR7cGtn bmFtZX0KCkZyb20gM2U5YmRlZWExM2Y1NWZlODk5OWZlZGNlOWVhNTJlNzJkZmY4ZGZjNyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAxMCBKdW4gMjAyMyAwMDo1NzowOSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTA5LzEx M10gcXQ2LW11bHRpbWVkaWE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9x dDYtbXVsdGltZWRpYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEv dGVtcGxhdGUgYi9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlCmluZGV4IGE2ODMyZmRk NjliZi4uYzlmZmFjOTE0YWI4IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDYtbXVsdGltZWRpYScKIHBrZ25hbWU9cXQ2LW11 bHRpbWVkaWEKIHZlcnNpb249Ni41LjAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0 eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURRVF9GRUFUVVJFX2dzdHJlYW1lcj1PTiIKIGhv c3RtYWtlZGVwZW5kcz0icGVybCBxdDYtZGVjbGFyYXRpdmUtaG9zdC10b29scyBwa2ctY29uZmln IHF0Ni1zaGFkZXJ0b29scyIKCkZyb20gZTQzMTA4MmVjMmQwODllZjk1YjkxNmE1NDJiMzI4OGFm NGYxODg4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogVGh1LCAyMiBKdW4gMjAyMyAxMDoyNTowMiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMTEwLzExM10ga2RlbmxpdmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9rZGVubGl2ZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2RlbmxpdmUvdGVtcGxh dGUgYi9zcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlCmluZGV4IDg5YzBkY2ZiODU3Ny4uNzU0OTVi M2EzNTg2IDEwMDY0NAotLS0gYS9zcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3Mva2RlbmxpdmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdrZGVubGl2ZScKIHBrZ25hbWU9a2RlbmxpdmUKIHZlcnNpb249MjMuMDQuMgotcmV2aXNpb249 MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0iCiAgZXh0 cmEtY21ha2UtbW9kdWxlcyBrY29uZmlnIGtjb3JlYWRkb25zIGtkb2N0b29scyBwa2ctY29uZmln IHB5dGhvbjMKCkZyb20gMjg5MDhmMTZiNjE3OTdjZWY1YzQ3ZjkyYTVmYjdmZThiMDk3ZjkyYiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCA0IEp1bCAyMDIzIDA5OjE4OjIzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMTEv MTEzXSBnbWljOiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy9nbWljL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nbWljL3RlbXBsYXRlIGIvc3JjcGtncy9nbWljL3Rl bXBsYXRlCmluZGV4IDBiYjQwMzRkNWNjOC4uODA4OTUzZTliNTQzIDEwMDY0NAotLS0gYS9zcmNw a2dzL2dtaWMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nbWljL3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ21pYycKIHBrZ25hbWU9Z21pYwogdmVyc2lvbj0z LjEuNgotcmV2aXNpb249NAorcmV2aXNpb249NQogX3phcnRfaGFzaD0zNGViZjZjY2UwYmFmYjk4 YWJlNTdjZWM4M2M0YTAyY2QxYWJlY2EwCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jrc3Jj PSJzcmMiCgpGcm9tIDY0MjdmNTVlMTY2YjFjM2E4YTc5Y2I1OTYyNGU1ZDJkMjVjNTI5YjUgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFR1ZSwgNCBKdWwgMjAyMyAwOToyOTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTEyLzEx M10gc3luZmlnc3R1ZGlvOiByZXZidW1wIGZvciBzeW5maWcgbWx0NwoKLS0tCiBzcmNwa2dzL3N5 bmZpZ3N0dWRpby90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBs YXRlIGIvc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUKaW5kZXggYWYxYzVhMjk2ZWYwLi4w OWU0NDJkYTlhNjggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogIyBTaG91 bGQgYmUga2VwdCBpbiBzeW5jIHdpdGggJ3N5bmZpZycgYW5kICdFVEwnCiBwa2duYW1lPXN5bmZp Z3N0dWRpbwogdmVyc2lvbj0xLjQuNAotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5 bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS11cGRhdGUtbWltZWRi IgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29sIGdldHRleHQgc3luZmlnIgoK RnJvbSBlMmFlNTg5ODEzNDRjNjE2OWEwYzMzODM5ODk2YzU0NWFiZGVmYzg2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUs IDQgSnVsIDIwMjMgMTA6MTk6MTcgLTA0MDAKU3ViamVjdDogW1BBVENIIDExMy8xMTNdIG9wZW5p bWFnZWlvOiByZXZidW1wIGZvciBmZm1wZWc2LjAKCi0tLQogc3JjcGtncy9vcGVuaW1hZ2Vpby90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUgYi9zcmNwa2dz L29wZW5pbWFnZWlvL3RlbXBsYXRlCmluZGV4IDBlOWUyMmU5Njg1ZC4uZTc0YThkYmQ2ODNlIDEw MDY0NAotLS0gYS9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3Bl bmltYWdlaW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdv cGVuaW1hZ2VpbycKIHBrZ25hbWU9b3BlbmltYWdlaW8KIHZlcnNpb249Mi40LjkuMAotcmV2aXNp b249NQorcmV2aXNpb249NgogYnVpbGRfc3R5bGU9Y21ha2UKIGJ1aWxkX2hlbHBlcj1xZW11CiBj b25maWd1cmVfYXJncz0iLURVU0VfUVQ9MCAtRFVTRV9QWVRIT049MCAtRE9JSU9fQlVJTERfVEVT VFM9MAo= --===============5810808617483966177==--