From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 23480 invoked from network); 29 May 2023 01:43:04 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 29 May 2023 01:43:04 -0000 Content-Type: multipart/mixed; boundary="===============3930737053494383068==" 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: Mon, 29 May 2023 03:43:03 +0200 List-Id: Message-ID: <20230529014303.RsWKyYD9OUyPOitiwDbkkpJ7vqiOEVlLzLU58MnH0BE@z> GitHub notification mails are now in MIME to allow UTF8. --===============3930737053494383068== 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 dHkgICgzLjIueCsgc2hvdWxkIHdvcmsgYnV0IHJlcXVpcmVzIHd4V2lkZ2V0cyBkZXYgMy4xLngp DQotIGNjZXh0cmFjdG9yIChtYXN0ZXIgcGF0Y2hlcz8gbm8gcmVsZWFzZSkNCi0gdmljZQ0KLSBr b2RpDQotIG1sdCAob25seSBkZXAgbGVmdCBpcyBmbG93YmxhZGUpDQotIH5+c3luZmlnIChtbHQp fn4gKHdvcmsgd2l0aCBtbHQ3LCBidW1wIHN5bmZpZ3N0dWRpbykNCi0gdHZoZWFkZW5kDQotIHNz cg0KLSBzcGVrLWFsdGVybmF0aXZlDQotIHBwc3NwcA0KLSBvbGl2ZQ0KLSBtb2MNCi0gbWVkaWFz dHJlYW1lcg0KLSBsaWJleHRyYWN0b3INCi0gaWRqYw0KLSBoZWRnZXdhcnMNCi0gfn5mZm1wZWd0 aHVtYm5haWxlcn5+IChwYXRjaGVzIGZvciBtb3ZpZWRlY29kZXIueHh4IGZpbGVzKQ0KLSB+fmZm bXBlZ3RodW1ic35+IChsYXRlc3QgY29tcGlsZXMpDQotIGRlYWRiZWVmDQotIG9teHBsYXllcg0K LSBxdGF2IChmb3JrIGhhcyBmZm1wZWcgNSBwYXRjaCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9jbWd1 by9RdEFWKQ0KLSBgdmxjYCAodmxjNCB3aWxsIHN1cHBvcnQgZmZtcGVnNSwgdGhlcmUncyBhIHBh dGNoIHRvIGJ1aWxkIDMueCB3aXRoIGZmbXBlZzUgYnV0IGl0IHdpbGwgbGFjayB2YWFwaSkNCi0g YG9zZ2AgKE9wZW5TY2VuZUdyYXBoIHBsdXMgYHhpbmUtbGliYCkNCg0KDQojIyMjIyBIQVZFIE5P VCBCVUlMVCBZRVQNCg0KLSBvbXhwbGF5ZXIgKHJwaSBvbmx5PyBmZm1wZWc0KQ0KLSBrb2RpIChi aWcsIGJ1dCBmZm1wZWc0KQ0KDQoNCiMjIyMjIFVQREFURUQgKGZvciBmZm1wZWc2KQ0KDQotIH5+ YmxlbmRlcjogdXBkYXRlIHRvIDMuNS4xfn4gd2lsbCBiZSByZXZidW1wIHdpdGggaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQzOTkyDQotIHVucGFwZXI6 IHVwZGF0ZSB0byA3LjAuMC4NCi0gZ3V2Y3ZpZXc6IHVwZGF0ZSB0byAyLjAuOC4NCi0gcXQ1OiB1 cGRhdGUgdG8gNS4xNS44DQotIHF0NS13ZWJlbmdpbmU6IHVwZGF0ZSB0byA1LjE4LjEzDQotIHNo aWJva2VuMjogcmV2YnVtcCBmb3IgcXQ1LjE1LjggKHBhdGNoKQ0KLSBweXRob24zLXB5c2lkZTI6 IHVwZGF0ZSB0byA1LjE1LjggKHBhdGNoKQ0KDQoNCiMjIyMjIFJlcXVpcmVtZW50cw0KDQotIFtn c3RyZWFtZXIgMS4yMi4yXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2th Z2VzL3B1bGwvNDI4NjEpIC0gYSBmZXcgcGFja2FnZXMgdXNlIGZmbXBlZy1kZXZlbCBhbmQgcmVx dWlyZSBhIHJldmJ1bXANCg0KLSBbSW50ZWwgUGFja2FnZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS92 b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80MTEzMikgLSBmZm1wZWc0IHVzZXMgZGlmZmVy ZW50IGxpYnJhcmllcyB0aGFuIDYgKGxpYm1meCAvIEludGVsLU1lZGlhU0RLIHZzIG9ubHkgb25l VlBMIHRoYXQgSW50ZWwgaXMgbW92aW5nIHRvKSwgYm90aCBhcmUgaW5jbHVkZWQgaGVyZQoKQSBw YXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdl cy9wdWxsLzQzNzYxLnBhdGNoIGlzIGF0dGFjaGVk --===============3930737053494383068== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSBkNWM2ZmRlZmJjMTNkNjU5NDY5N2MxMGY1MjUzZGU0ZDk3YWEwMmFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDE5OjU1OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTEzXSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLi93b3JrYXJv dW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0tLQogc3JjcGtn cy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgMzggKysrKystLS0tLS0t CiA1IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDEzOCBkZWxldGlvbnMoLSkKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBhdGNoCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1w b2ludC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29y a2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoCgpkaWZmIC0tZ2l0IGEvY29tbW9u L3NobGlicyBiL2NvbW1vbi9zaGxpYnMKaW5kZXggZjFlODI1ODE5ZmI0Li4zNzFlNGZmMTFhYTEg MTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29tbW9uL3NobGlicwpAQCAtMzkwLDE1 ICszOTAsMjMgQEAgbGliaWQzdGFnLnNvLjAgbGliaWQzdGFnLTAuMTUuMWJfMQogbGliZ2lmLnNv LjcgZ2lmbGliLTUuMS4wXzEKIGxpYkltbGliMi5zby4xIGltbGliMi0xLjQuMl8xCiBsaWJtcDNs YW1lLnNvLjAgbGFtZS0zLjk4LjJfMQotbGliYXZkZXZpY2Uuc28uNTggbGliYXZkZXZpY2UtNC4w XzEKLWxpYmF2Zm9ybWF0LnNvLjU4IGxpYmF2Zm9ybWF0LTQuMF8xCi1saWJzd3NjYWxlLnNvLjUg bGlic3dzY2FsZS00LjBfMQotbGlic3dyZXNhbXBsZS5zby4zIGxpYnN3cmVzYW1wbGUtNC4wXzEK LWxpYmF2cmVzYW1wbGUuc28uNCBsaWJhdnJlc2FtcGxlLTQuMF8xCi1saWJwb3N0cHJvYy5zby41 NSBsaWJwb3N0cHJvYy00LjBfMQotbGliYXZjb2RlYy5zby41OCBsaWJhdmNvZGVjLTQuMF8xCi1s aWJhdnV0aWwuc28uNTYgbGliYXZ1dGlsLTQuMF8xCi1saWJhdmZpbHRlci5zby43IGxpYmF2Zmls dGVyLTQuMF8xCitsaWJhdmRldmljZS5zby42MCBsaWJhdmRldmljZS02LjBfMQorbGliYXZmb3Jt YXQuc28uNjAgbGliYXZmb3JtYXQtNi4wXzEKK2xpYnN3c2NhbGUuc28uNyBsaWJzd3NjYWxlLTYu MF8xCitsaWJzd3Jlc2FtcGxlLnNvLjQgbGlic3dyZXNhbXBsZS02LjBfMQorbGlicG9zdHByb2Mu c28uNTcgbGlicG9zdHByb2MtNi4wXzEKK2xpYmF2Y29kZWMuc28uNjAgbGliYXZjb2RlYy02LjBf MQorbGliYXZ1dGlsLnNvLjU4IGxpYmF2dXRpbC02LjBfMQorbGliYXZmaWx0ZXIuc28uOSBsaWJh dmZpbHRlci02LjBfMQorbGliYXZkZXZpY2Uuc28uNTggbGliYXZkZXZpY2U0LTQuMF8xCitsaWJh dmZvcm1hdC5zby41OCBsaWJhdmZvcm1hdDQtNC4wXzEKK2xpYnN3c2NhbGUuc28uNSBsaWJzd3Nj YWxlNC00LjBfMQorbGlic3dyZXNhbXBsZS5zby4zIGxpYnN3cmVzYW1wbGU0LTQuMF8xCitsaWJh dnJlc2FtcGxlLnNvLjQgbGliYXZyZXNhbXBsZTQtNC4wXzEKK2xpYnBvc3Rwcm9jLnNvLjU1IGxp YnBvc3Rwcm9jNC00LjBfMQorbGliYXZjb2RlYy5zby41OCBsaWJhdmNvZGVjNC00LjBfMQorbGli YXZ1dGlsLnNvLjU2IGxpYmF2dXRpbDQtNC4wXzEKK2xpYmF2ZmlsdGVyLnNvLjcgbGliYXZmaWx0 ZXI0LTQuMF8xCiBsaWJTREwtMS4yLnNvLjAgU0RMLTEuMi4xNF8xCiBsaWJTRExfaW1hZ2UtMS4y LnNvLjAgU0RMX2ltYWdlLTEuMi4xMF8xCiBsaWJ4MjY0LnNvLjE1NyB4MjY0LTIwMTkwNTA3LjIy NDVfMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWcvZmlsZXMvYWx0aXZlYy5wYXRjaCBiL3Ny Y3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2ZWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDljNTcyMDA0NjMzMi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL2Zp bGVzL2FsdGl2ZWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1yZXZlcnQg c29tZSBhbHRpdmVjIHNwZWNpZmljIGNoYW5nZSBvbiBhbGwgcHBjKiBleGNlcHQgcHBjNjRsZSoK LQotcTY2OiAiV2Ugc2hvdWxkIGFsc28gdGhyb3cgaW4gYSByZXZlcnQgb2YgRkZtcGVnL0ZGbXBl Z0AzYTU1N2M1IGJ1dCBvbmx5Ci1jb25kaXRpb25hbGx5LCBmb3IgcHBjKiBidXQgbm90IHBwYzY0 bGUqICh0aGUgbmV3IGNvZGUgaXMgdmFsaWQgZm9yCi1QT1dFUjggVlNYIHdoaWNoIExFIHRhcmdl dHMgYXMgYSBiYXNlbGluZSBidXQgbm90IEJFKSIKLQotCi1UaGlzIHJldmVydHMgY29tbWl0IDNh NTU3YzVkODhiN2IxNWI1OTU0YmEyNzQzZmViYjA1NTU0OWI1MzYuCi0tLS0KLSBsaWJzd3NjYWxl L3BwYy95dXYycmdiX2FsdGl2ZWMuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQotIDEg ZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0t Z2l0IGEvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMgYi9saWJzd3NjYWxlL3BwYy95 dXYycmdiX2FsdGl2ZWMuYwotaW5kZXggNTM2NTQ1MjkzZC4uYzFlMjg1MmFkYiAxMDA2NDQKLS0t LSBhL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCi0rKysgYi9saWJzd3NjYWxlL3Bw Yy95dXYycmdiX2FsdGl2ZWMuYwotQEAgLTMwNSw2ICszMDUsOSBAQCBzdGF0aWMgaW50IGFsdGl2 ZWNfICMjIG5hbWUoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAg ICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQgc2hvcnQgUjEsIEcxLCBCMTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3IgdW5zaWduZWQgY2hh ciBSLCBHLCBCOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFy ICp5MWl2UCwgKnkyaXZQLCAqdWl2UCwgKnZpdlA7ICAgICAgICAgICAgICAgICAgXAotKyAgICB2 ZWN0b3IgdW5zaWduZWQgY2hhciBhbGlnbl9wZXJtOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBz aWduZWQgc2hvcnQgbENZICAgICAgID0gYy0+Q1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxPWSAgICAgICA9IGMtPk9ZOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHNpZ25lZCBz aG9ydCBsQ1JWICAgICAgPSBjLT5DUlY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi1AQCAtMzM1LDEzICszMzgsMjYgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1lKFN3 c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAotICAgICAg ICAgdmVjX2RzdHN0KG91dGUsICgweDAyMDAwMDAyIHwgKCgodyAqIDMgKyAzMikgLyAzMikgPDwg MTYpKSwgMSk7ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBmb3Ig KGogPSAwOyBqIDwgdyAvIDE2OyBqKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotLSAgICAgICAgICAgIHkwID0gdmVjX3hsKDAsIHkxaSk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MWl2UCA9 IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB5MWk7ICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgICAgICAgICAgeTJpdlAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikg eTJpOyAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHVpdlAgID0gKGNvbnN0 IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHVpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg ICAgICAgICAgICB2aXZQICA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB2aTsgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAg ICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MCA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAg ICAgICAgdmVjX3Blcm0oeTFpdlBbMF0sIHkxaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAg ICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICB5MSA9IHZlY194 bCgwLCB5MmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkyaSk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHkxID0gKHZlY3RvciB1bnNp Z25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAg ICAgICAgICAgICAgICAgICB2ZWNfcGVybSh5Mml2UFswXSwgeTJpdlBbMV0sIGFsaWduX3Blcm0p OyAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAg IHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdWkpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdWkpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgdSA9ICh2 ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odWl2UFswXSwgdWl2UFsxXSwgYWxp Z25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0t ICAgICAgICAgICAgdiA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB2aSk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZz bCgwLCB2aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAg ICAgICB2ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh2aXZQWzBdLCB2 aXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICB2 ZWNfc3ViKHUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotLS0gCi0yLjI3LjAKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12 NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0 ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlh NTUxNzhjNzRmMC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJt djV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBA Ci0tLS0gYS9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTAtMjYgMjE6MDM6MDMuMDAw MDAwMDAwICswMjAwCi0rKysgYi9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTEtMjEg MTE6MDY6NDkuNjAyMjg0NDIyICswMTAwCi1AQCAtMzksNiArMzksMTUgQEAKLSAjZW5kaWYKLSAj aW5jbHVkZSA8ZmVudi5oPgotIAotKyNpZiAoRkVfQUxMX0VYQ0VQVCA9PSAwKQotKy8qIEUuZy4g QVJNIHNvZnQgZmxvYXQgZG9lcyBub3QgZGVmaW5lIHRoZXNlICovCi0rI2RlZmluZSBGRV9JTlZB TElEICAgIDAKLSsjZGVmaW5lIEZFX0RJVkJZWkVSTyAgMAotKyNkZWZpbmUgRkVfT1ZFUkZMT1cg ICAwCi0rI2RlZmluZSBGRV9VTkRFUkZMT1cgIDAKLSsjZGVmaW5lIEZFX0lORVhBQ1QgICAgMAot KyNlbmRpZgotKwotICNpZiBDT05GSUdfTElCRk9OVENPTkZJRwotICNpbmNsdWRlIDxmb250Y29u ZmlnL2ZvbnRjb25maWcuaD4KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3Bh dGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoIGIvc3JjcGtncy9m Zm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZTNmNjhhNDE1Yi4uMDAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGkt YnVnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSA4MTFkMjkwODQ0 MjA2ZmM3M2RjMzljM2U1YjY3ZDVkODk1YmFlZGY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogUmFpbmVyIEhvY2hlY2tlciA8ZmVybmV0bWVudGFAb25saW5lLmRlPgotRGF0ZTogU2F0 LCAyNiBKYW4gMjAxOSAxOTo0ODozNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL3Zh YXBpX2gyNjQ6IHNraXAgZGVjb2RlIGlmIHBpYyBoYXMgbm8gc2xpY2VzCi0KLVRoaXMgZml4ZXMg LyB3b3JrYXJvdW5kcyBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9p ZD0xMDUzNjguCi1JdCB3YXMgaGl0IGZyZXF1ZW50bHkgd2hlbiB3YXRjaGluZyBoMjY0IGNoYW5u ZWxzIHJlY2VpdmVkIHZpYSBEVkItWC4KLUNvcnJlc3BvbmRpbmcga29kaSBidWc6IGh0dHBzOi8v Z2l0aHViLmNvbS94Ym1jL3hibWMvaXNzdWVzLzE1NzA0Ci0tLS0KLSBsaWJhdmNvZGVjL3ZhYXBp X2gyNjQuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2 NC5jCi1pbmRleCA1ODU0NTg3YTI1NS4uZjEyZmRjNDU3YTQgMTAwNjQ0Ci0tLS0gYS9saWJhdmNv ZGVjL3ZhYXBpX2gyNjQuYwotKysrIGIvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKLUBAIC0zMTcs NiArMzE3LDExIEBAIHN0YXRpYyBpbnQgdmFhcGlfaDI2NF9lbmRfZnJhbWUoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4KQotICAgICBIMjY0U2xpY2VDb250ZXh0ICpzbCA9ICZoLT5zbGljZV9jdHhbMF07 Ci0gICAgIGludCByZXQ7Ci0gCi0rICAgIGlmIChwaWMtPm5iX3NsaWNlcyA9PSAwKSB7Ci0rICAg ICAgICByZXQgPSBBVkVSUk9SX0lOVkFMSUREQVRBOwotKyAgICAgICAgZ290byBmaW5pc2g7Ci0r ICAgIH0KLSsKLSAgICAgcmV0ID0gZmZfdmFhcGlfZGVjb2RlX2lzc3VlKGF2Y3R4LCBwaWMpOwot ICAgICBpZiAocmV0IDwgMCkKLSAgICAgICAgIGdvdG8gZmluaXNoOwpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9mZm1wZWcvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXBlZy90ZW1wbGF0ZQppbmRleCBkZjQx NzlkMTk2M2EuLmY3NDIwODJiYjUyMCAxMDA2NDQKLS0tIGEvc3JjcGtncy9mZm1wZWcvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdmZm1wZWcnCiAjIGF1ZGFjaXR5IGFsc28gbmVlZHMgdG8gYmUgYnVtcGVk IHdoZW4gYSBuZXcgZmZtcGVnIHZlcnNpb24gYnVtcHMgbGliYXZmb3JtYXQncyBzb25hbWUhCiBw a2duYW1lPWZmbXBlZwotdmVyc2lvbj00LjQuNAordmVyc2lvbj02LjAKIHJldmlzaW9uPTEKIHNo b3J0X2Rlc2M9IkRlY29kaW5nLCBlbmNvZGluZyBhbmQgc3RyZWFtaW5nIHNvZnR3YXJlIgogbWFp bnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKQEAgLTksNyArOSw3IEBA IGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cuZmZtcGVn Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0ZGbXBl Zy9GRm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly93d3cuZmZtcGVn Lm9yZy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1lODBiMzgw ZDU5NWM4MDkwNjBmNjZmOTZhNWQ4NDk1MTFlZjRhNzZhMjZiNzZlYWNmNTc3OGI5NGMzNTcwMzA5 CitjaGVja3N1bT01N2JlODdjMjJkOWI0OWMxMTJiNmQyNGJjNjdkNDI1MDg2NjBlNmI3MThiM2Ri ODljNDRlNDdlMjg5MTM3MDgyCiAKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBwZXJsIgog bWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxzYS1s aWItZGV2ZWwgbGliWGZpeGVzLWRldmVsCkBAIC0yNiwxMiArMjYsMTMgQEAgbWFrZWRlcGVuZHM9 InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGli WGZpeGVzLWRldmUKICAkKHZvcHRfaWYgd2VicCBsaWJ3ZWJwLWRldmVsKSAkKHZvcHRfaWYgc29m YSBsaWJteXNvZmEtZGV2ZWwpCiAgJCh2b3B0X2lmIGRybSBsaWJkcm0tZGV2ZWwpICQodm9wdF9p ZiBzdnRhdjEgbGlic3Z0LWF2MS1kZXZlbCkKICAkKHZvcHRfaWYgc3J0IHNydC1kZXZlbCkgJCh2 b3B0X2lmIHJpc3QgbGlicmlzdC1kZXZlbCkKLSAkKHZvcHRfaWYgdnVsa2FuICd2dWxrYW4tbG9h ZGVyIFZ1bGthbi1IZWFkZXJzJykKKyAkKHZvcHRfaWYgdnVsa2FuICd2dWxrYW4tbG9hZGVyIFZ1 bGthbi1IZWFkZXJzIFZ1bGthbi1Ub29scyBWdWxrYW4tVmFsaWRhdGlvbkxheWVycycpCisgJCh2 b3B0X2lmIG9uZXZwbCAnb25ldnBsIG9uZXZwbC1kZXZlbCcpCiAgJCh2b3B0X2lmIG52ZW5jIG52 LWNvZGVjLWhlYWRlcnMpICQodm9wdF9pZiBudmRlYyBudi1jb2RlYy1oZWFkZXJzKSIKIGRlcGVu ZHM9ImZmcGxheT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAogYnVpbGRfb3B0aW9ucz0ieDI2 NSB2NGwyIHZhYXBpIHZkcGF1IHZweCBmZGtfYWFjIGFvbSBudmVuYyBzbmRpbyBwdWxzZWF1ZGlv Ci0gZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZkZWMi CisgZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZkZWMg b25ldnBsIgogYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJ4MjY1IHY0bDIgdnB4IGFvbSBzbmRpbyBw dWxzZWF1ZGlvIGRhdjFkIHdlYnAgdnVsa2FuIGRybSBzcnQgcmlzdCIKIGRlc2Nfb3B0aW9uX3Ny dD0iRW5hYmxlIHN1cHBvcnQgZm9yIFNSVCAoU2VjdXJlLCBSZWxpYWJsZSwgVHJhbnNwb3J0KSIK IGRlc2Nfb3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBwb3J0IGZvciBSSVNUIChSZWxpYWJsZSBJbnRl cm5ldCBTdHJlYW0gVHJhbnNwb3J0KSIKQEAgLTM5LDEwICs0MCw4IEBAIGRlc2Nfb3B0aW9uX3Nv ZmE9IkVuYWJsZSBzdXBwb3J0IGZvciBBRVMgU09GQSIKIGRlc2Nfb3B0aW9uX3dlYnA9IkVuYWJs ZSBzdXBwb3J0IGZvciBXZWJQIgogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQlp Njg2Knx4ODZfNjQqKQotCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIKLQkJYnVpbGRfb3B0aW9u c19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52ZGVjIgotCQk7OworCWk2ODYqKSBidWls ZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbnZlbmMgbnZkZWMiOzsKKwl4ODZfNjQq KSBidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbnZlbmMgbnZkZWMgb25ldnBs Ijs7CiAJcHBjNjQqKSBidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUiOzsKIAlt aXBzKikgQ0ZMQUdTPSItbW5hbj1sZWdhY3kiOzsKIGVzYWMKQEAgLTExNywxOCArMTE2LDE5IEBA IGRvX2NvbmZpZ3VyZSgpIHsKIAkJJCh2b3B0X2VuYWJsZSB4MjY1IGxpYngyNjUpIFwKIAkJJCh2 b3B0X2VuYWJsZSB2NGwyIGxpYnY0bDIpIFwKIAkJJCh2b3B0X2VuYWJsZSBhb20gbGliYW9tKSAk KHZvcHRfZW5hYmxlIHZhYXBpKSAkKHZvcHRfZW5hYmxlIHZkcGF1KSBcCi0JCS0tZW5hYmxlLWxp YmJzMmIgLS1lbmFibGUtYXZyZXNhbXBsZSAtLWVuYWJsZS1saWJ2aWRzdGFiIFwKKwkJLS1lbmFi bGUtbGliYnMyYiAtLWVuYWJsZS1saWJ2aWRzdGFiIFwKIAkJJCh2b3B0X2VuYWJsZSBkYXYxZCBs aWJkYXYxZCkgXAogCQkkKHZvcHRfZW5hYmxlIHppbWcgbGliemltZykgXAogCQkkKHZvcHRfZW5h YmxlIHdlYnAgbGlid2VicCkgXAogCQkkKHZvcHRfZW5hYmxlIHNvZmEgbGlibXlzb2ZhKSBcCiAJ CSQodm9wdF9lbmFibGUgdnVsa2FuKSBcCisJCSQodm9wdF9lbmFibGUgb25ldnBsIGxpYnZwbCkg XAogCQkkKHZvcHRfZW5hYmxlIGRybSBsaWJkcm0pIFwKIAkJJCh2b3B0X2VuYWJsZSBzdnRhdjEg bGlic3Z0YXYxKSBcCiAJCSQodm9wdF9lbmFibGUgc3J0IGxpYnNydCkgXAogCQkkKHZvcHRfZW5h YmxlIHJpc3QgbGlicmlzdCkgXAotCQkkKHZvcHRfaWYgbnZlbmMgJy0tZW5hYmxlLW52ZW5jJykg XAotCQkkKHZvcHRfaWYgbnZkZWMgJy0tZW5hYmxlLW52ZGVjJykKKwkJJCh2b3B0X2VuYWJsZSBu dmVuYyBudmVuYykgXAorCQkkKHZvcHRfZW5hYmxlIG52ZGVjIG52ZGVjKQogfQogCiBkb19idWls ZCgpIHsKQEAgLTE1NSwxMCArMTU1LDggQEAgbGliYXZkZXZpY2VfcGFja2FnZSgpIHsKIH0KIAog bGliYXZyZXNhbXBsZV9wYWNrYWdlKCkgewotCXNob3J0X2Rlc2M9IkZGbXBlZyBhdWRpbyByZXNh bXBsaW5nIGxpYnJhcnkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmF2 cmVzYW1wbGUuc28uKiIKLQl9CisJc2hvcnRfZGVzYz0iUGFja2FnZSBkZXByZWNhdGVkLCByZW1v dmFsIG5lZWRlZCIKKwlidWlsZF9zdHlsZT1tZXRhCiB9CiAKIGxpYmF2Zm9ybWF0X3BhY2thZ2Uo KSB7CkBAIC0yMTIsMTUgKzIxMCw5IEBAIGZmbXBlZy1kZXZlbF9wYWNrYWdlKCkgewogCQlsaWJh dmZpbHRlcj49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQlsaWJwb3N0cHJvYz49JHt2ZXJzaW9u fV8ke3JldmlzaW9ufQogCQlsaWJzd3NjYWxlPj0ke3ZlcnNpb259XyR7cmV2aXNpb259Ci0JCWxp YnN3cmVzYW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KLQkJbGliYXZyZXNhbXBsZT49JHt2 ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwkJbGlic3dyZXNhbXBsZT49JHt2ZXJzaW9ufV8ke3Jldmlz aW9ufSIKIAlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCi0KLQlpZiBbICIkWEJQ U19UQVJHRVRfTUFDSElORSIgPSAiaTY4NiIgXTsgdGhlbgotCQkjIC91c3IvYmluL3N0cmlwOiBl cnJvcjogdGhlIGlucHV0IGZpbGUgJy9kZXN0ZGlyLy9mZm1wZWctZGV2ZWwtNC40LjQvdXNyL2xp Yi9saWJhdmZpbHRlci5hKHZmX2F0YWRlbm9pc2UubyknIGhhcyBubyBzZWN0aW9ucwotCQlub3N0 cmlwX2ZpbGVzPSIvdXNyL2xpYi9saWJhdmZpbHRlci5hIgotCWZpCi0KKwljb25mbGljdHM9ImZm bXBlZzQtZGV2ZWwiCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9pbmNsdWRlCiAJCXZt b3ZlIHVzci9saWIvcGtnY29uZmlnCgpGcm9tIDliYzg1ZjMwYjlhNzRkMDAwZmRhYTdiODE0Y2Q5 NjRkYmU2MGUyYTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTY6MjIgLTA0MDAKU3ViamVj dDogW1BBVENIIDAwMi8xMTNdIE5ldyBwYWNrYWdlOiBmZm1wZWc0LTQuNC40LgoKLS0tCiBzcmNw a2dzL2ZmbXBlZzQtZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtn cy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2ggICAgICAgICAgIHwgIDYwICsrKysrCiAuLi4v cGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAgMTggKysKIC4uLi93 b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8ICAyOCArKysKIHNyY3Br Z3MvZmZtcGVnNC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICB8IDIzOCArKysrKysrKysr KysrKysrKysKIHNyY3BrZ3MvbGliYXZjb2RlYzQgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmNwa2dzL2xpYmF2ZGV2aWNlNCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjcGtncy9saWJhdmZpbHRlcjQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyY3BrZ3MvbGliYXZmb3JtYXQ0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmNwa2dzL2xpYmF2cmVzYW1wbGU0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjcGtncy9saWJhdnV0aWw0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Y3BrZ3MvbGlicG9zdHByb2M0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNw a2dzL2xpYnN3cmVzYW1wbGU0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtn cy9saWJzd3NjYWxlNCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIDE0IGZpbGVz IGNoYW5nZWQsIDM1NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9m Zm1wZWc0LWRldmVsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2Fs dGl2ZWMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv ZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZQogY3JlYXRlIG1vZGUg MTIwMDAwIHNyY3BrZ3MvbGliYXZjb2RlYzQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xp YmF2ZGV2aWNlNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZmaWx0ZXI0CiBjcmVh dGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdmZvcm1hdDQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBz cmNwa2dzL2xpYmF2cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdnV0 aWw0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJwb3N0cHJvYzQKIGNyZWF0ZSBtb2Rl IDEyMDAwMCBzcmNwa2dzL2xpYnN3cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtn cy9saWJzd3NjYWxlNAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbCBiL3NyY3Br Z3MvZmZtcGVnNC1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAu Ljg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbApA QCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2ggYi9zcmNwa2dzL2ZmbXBl ZzQvZmlsZXMvYWx0aXZlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjljNTcyMDA0NjMzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC9m aWxlcy9hbHRpdmVjLnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK3JldmVydCBzb21lIGFsdGl2ZWMg c3BlY2lmaWMgY2hhbmdlIG9uIGFsbCBwcGMqIGV4Y2VwdCBwcGM2NGxlKgorCitxNjY6ICJXZSBz aG91bGQgYWxzbyB0aHJvdyBpbiBhIHJldmVydCBvZiBGRm1wZWcvRkZtcGVnQDNhNTU3YzUgYnV0 IG9ubHkKK2NvbmRpdGlvbmFsbHksIGZvciBwcGMqIGJ1dCBub3QgcHBjNjRsZSogKHRoZSBuZXcg Y29kZSBpcyB2YWxpZCBmb3IKK1BPV0VSOCBWU1ggd2hpY2ggTEUgdGFyZ2V0cyBhcyBhIGJhc2Vs aW5lIGJ1dCBub3QgQkUpIgorCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgM2E1NTdjNWQ4OGI3YjE1 YjU5NTRiYTI3NDNmZWJiMDU1NTQ5YjUzNi4KKy0tLQorIGxpYnN3c2NhbGUvcHBjL3l1djJyZ2Jf YWx0aXZlYy5jIHwgMjQgKysrKysrKysrKysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQs IDIwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJzd3Nj YWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYyBiL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZl Yy5jCitpbmRleCA1MzY1NDUyOTNkLi5jMWUyODUyYWRiIDEwMDY0NAorLS0tIGEvbGlic3dzY2Fs ZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMKKysrKyBiL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0 aXZlYy5jCitAQCAtMzA1LDYgKzMwNSw5IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFtZShT d3NDb250ZXh0ICpjLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKKyAgICAg dmVjdG9yIHNpZ25lZCBzaG9ydCBSMSwgRzEsIEIxOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIFIsIEcsIEI7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKysgICAgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKnkxaXZQLCAqeTJp dlAsICp1aXZQLCAqdml2UDsgICAgICAgICAgICAgICAgICBcCisrICAgIHZlY3RvciB1bnNpZ25l ZCBjaGFyIGFsaWduX3Blcm07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBs Q1kgICAgICAgPSBjLT5DWTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbE9ZICAgICAgID0gYy0+T1k7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxDUlYgICAg ICA9IGMtPkNSVjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0zMzUs MTMgKzMzOCwyNiBAQCBzdGF0aWMgaW50IGFsdGl2ZWNfICMjIG5hbWUoU3dzQ29udGV4dCAqYywg Y29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAgICAgICBcCisgICAgICAgICB2ZWNfZHN0c3Qo b3V0ZSwgKDB4MDIwMDAwMDIgfCAoKCh3ICogMyArIDMyKSAvIDMyKSA8PCAxNikpLCAxKTsgICAg ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIGZvciAoaiA9IDA7IGogPCB3 IC8gMTY7IGorKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCist ICAgICAgICAgICAgeTAgPSB2ZWNfeGwoMCwgeTFpKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkxaXZQID0gKGNvbnN0IHZlY3Rv ciB1bnNpZ25lZCBjaGFyICopIHkxaTsgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAg ICAgICB5Mml2UCA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB5Mmk7ICAgICAgICAg ICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgdWl2UCAgPSAoY29uc3QgdmVjdG9yIHVuc2ln bmVkIGNoYXIgKikgdWk7ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHZp dlAgID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHZpOyAgICAgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgYWxpZ25fcGVy bSA9IHZlY19sdnNsKDAsIHkxaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorKyAgICAgICAgICAgIHkwID0gKHZlY3RvciB1bnNpZ25lZCBjaGFyKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICB2ZWNfcGVy bSh5MWl2UFswXSwgeTFpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAgICAgICBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIHkxID0gdmVjX3hsKDAsIHkyaSk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAg ICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgeTJpKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisrICAgICAgICAgICAgeTEgPSAodmVjdG9yIHVuc2lnbmVkIGNoYXIpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAg ICAgIHZlY19wZXJtKHkyaXZQWzBdLCB5Mml2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgdSA9ICh2ZWN0b3Ig c2lnbmVkIGNoYXIpIHZlY194bCgwLCB1aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor KyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB1aSk7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQg Y2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAg ICAgICAgICAgICAgICB2ZWNfcGVybSh1aXZQWzBdLCB1aXZQWzFdLCBhbGlnbl9wZXJtKTsgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB2 ID0gKHZlY3RvciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHZpKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisrICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHZpKTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHYgPSAodmVj dG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKysgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHZpdlBbMF0sIHZpdlBbMV0sIGFsaWdu X3Blcm0pOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIHZlY19zdWIodSwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistLSAKKzIuMjcu MAorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGlu Zy1wb2ludC5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5n LXBvaW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWE1 NTE3OGM3NGYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvYXJt djV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorLS0tIGEvbGliYXZm aWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTEwLTI2IDIxOjAzOjAzLjAwMDAwMDAwMCArMDIwMAor KysrIGIvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTExLTIxIDExOjA2OjQ5LjYwMjI4 NDQyMiArMDEwMAorQEAgLTM5LDYgKzM5LDE1IEBACisgI2VuZGlmCisgI2luY2x1ZGUgPGZlbnYu aD4KKyAKKysjaWYgKEZFX0FMTF9FWENFUFQgPT0gMCkKKysvKiBFLmcuIEFSTSBzb2Z0IGZsb2F0 IGRvZXMgbm90IGRlZmluZSB0aGVzZSAqLworKyNkZWZpbmUgRkVfSU5WQUxJRCAgICAwCisrI2Rl ZmluZSBGRV9ESVZCWVpFUk8gIDAKKysjZGVmaW5lIEZFX09WRVJGTE9XICAgMAorKyNkZWZpbmUg RkVfVU5ERVJGTE9XICAwCisrI2RlZmluZSBGRV9JTkVYQUNUICAgIDAKKysjZW5kaWYKKysKKyAj aWYgQ09ORklHX0xJQkZPTlRDT05GSUcKKyAjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29uZmln Lmg+CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3JrYXJv dW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hl cy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wMGUzZjY4YTQxNWIKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1i dWcucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA4MTFkMjkwODQ0MjA2ZmM3M2RjMzljM2U1 YjY3ZDVkODk1YmFlZGY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmFpbmVyIEhv Y2hlY2tlciA8ZmVybmV0bWVudGFAb25saW5lLmRlPgorRGF0ZTogU2F0LCAyNiBKYW4gMjAxOSAx OTo0ODozNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL3ZhYXBpX2gyNjQ6IHNraXAg ZGVjb2RlIGlmIHBpYyBoYXMgbm8gc2xpY2VzCisKK1RoaXMgZml4ZXMgLyB3b3JrYXJvdW5kcyBo dHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUzNjguCitJdCB3 YXMgaGl0IGZyZXF1ZW50bHkgd2hlbiB3YXRjaGluZyBoMjY0IGNoYW5uZWxzIHJlY2VpdmVkIHZp YSBEVkItWC4KK0NvcnJlc3BvbmRpbmcga29kaSBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS94Ym1j L3hibWMvaXNzdWVzLzE1NzA0CistLS0KKyBsaWJhdmNvZGVjL3ZhYXBpX2gyNjQuYyB8IDUgKysr KysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJh dmNvZGVjL3ZhYXBpX2gyNjQuYyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCitpbmRleCA1ODU0 NTg3YTI1NS4uZjEyZmRjNDU3YTQgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2gyNjQu YworKysrIGIvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKK0BAIC0zMTcsNiArMzE3LDExIEBAIHN0 YXRpYyBpbnQgdmFhcGlfaDI2NF9lbmRfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQorICAg ICBIMjY0U2xpY2VDb250ZXh0ICpzbCA9ICZoLT5zbGljZV9jdHhbMF07CisgICAgIGludCByZXQ7 CisgCisrICAgIGlmIChwaWMtPm5iX3NsaWNlcyA9PSAwKSB7CisrICAgICAgICByZXQgPSBBVkVS Uk9SX0lOVkFMSUREQVRBOworKyAgICAgICAgZ290byBmaW5pc2g7CisrICAgIH0KKysKKyAgICAg cmV0ID0gZmZfdmFhcGlfZGVjb2RlX2lzc3VlKGF2Y3R4LCBwaWMpOworICAgICBpZiAocmV0IDwg MCkKKyAgICAgICAgIGdvdG8gZmluaXNoOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L3Rl bXBsYXRlIGIvc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uNTIyOGM3ZGYwOGZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9mZm1wZWc0L3RlbXBsYXRlCkBAIC0wLDAgKzEsMjM4IEBACisjIFRlbXBsYXRlIGZpbGUgZm9y ICdmZm1wZWc0JworIyBhdWRhY2l0eSBhbHNvIG5lZWRzIHRvIGJlIGJ1bXBlZCB3aGVuIGEgbmV3 IGZmbXBlZyB2ZXJzaW9uIGJ1bXBzIGxpYmF2Zm9ybWF0J3Mgc29uYW1lIQorcGtnbmFtZT1mZm1w ZWc0Cit2ZXJzaW9uPTQuNC40CityZXZpc2lvbj0xCitzaG9ydF9kZXNjPSJEZWNvZGluZywgZW5j b2RpbmcgYW5kIHN0cmVhbWluZyBzb2Z0d2FyZSAtIGZmbXBlZzQgbGlicmFyaWVzIG9ubHkiCitt YWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgorbGljZW5zZT0iR1BM LTMuMC1vci1sYXRlciIKK2hvbWVwYWdlPSJodHRwczovL3d3dy5mZm1wZWcub3JnIgorY2hhbmdl bG9nPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vRkZtcGVnL0ZGbXBlZy9tYXN0 ZXIvQ2hhbmdlbG9nIgorZGlzdGZpbGVzPSJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2Vz L2ZmbXBlZy0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNrc3VtPWU4MGIzODBkNTk1YzgwOTA2MGY2 NmY5NmE1ZDg0OTUxMWVmNGE3NmEyNmI3NmVhY2Y1Nzc4Yjk0YzM1NzAzMDkKKworaG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIHBlcmwiCittYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1k ZXZlbCBmcmVldHlwZS1kZXZlbCBhbHNhLWxpYi1kZXZlbCBsaWJYZml4ZXMtZGV2ZWwKKyBsaWJY ZXh0LWRldmVsIGxpYlh2TUMtZGV2ZWwgbGlieGNiLWRldmVsIGxhbWUtZGV2ZWwgbGlidGhlb3Jh LWRldmVsCisgbGlidm9yYmlzLWRldmVsIHgyNjQtZGV2ZWwgeHZpZGNvcmUtZGV2ZWwgamFjay1k ZXZlbCBTREwyLWRldmVsCisgbGliY2Rpby1wYXJhbm9pYS1kZXZlbCBsaWJydG1wLWRldmVsIGxp Ym1vZHBsdWctZGV2ZWwgZ251dGxzLWRldmVsCisgc3BlZXgtZGV2ZWwgY2VsdC1kZXZlbCBoYXJm YnV6ei1kZXZlbCBsaWJhc3MtZGV2ZWwgb3B1cy1kZXZlbCBvY2wtaWNkLWRldmVsCisgbGliYnMy Yi1kZXZlbCBsaWJ2aWRzdGFiLWRldmVsICQodm9wdF9pZiBwdWxzZWF1ZGlvIHB1bHNlYXVkaW8t ZGV2ZWwpCisgJCh2b3B0X2lmIHZhYXBpIGxpYnZhLWRldmVsKSAkKHZvcHRfaWYgdmRwYXUgbGli dmRwYXUtZGV2ZWwpCisgJCh2b3B0X2lmIHgyNjUgeDI2NS1kZXZlbCkgJCh2b3B0X2lmIHY0bDIg djRsLXV0aWxzLWRldmVsKQorICQodm9wdF9pZiBmZGtfYWFjIGZkay1hYWMtZGV2ZWwpICQodm9w dF9pZiB2cHggbGlidnB4LWRldmVsKQorICQodm9wdF9pZiBhb20gbGliYW9tLWRldmVsKSAkKHZv cHRfaWYgc25kaW8gc25kaW8tZGV2ZWwpCisgJCh2b3B0X2lmIGRhdjFkIGxpYmRhdjFkLWRldmVs KSAkKHZvcHRfaWYgemltZyB6aW1nLWRldmVsKQorICQodm9wdF9pZiB3ZWJwIGxpYndlYnAtZGV2 ZWwpICQodm9wdF9pZiBzb2ZhIGxpYm15c29mYS1kZXZlbCkKKyAkKHZvcHRfaWYgZHJtIGxpYmRy bS1kZXZlbCkgJCh2b3B0X2lmIHN2dGF2MSBsaWJzdnQtYXYxLWRldmVsKQorICQodm9wdF9pZiBz cnQgc3J0LWRldmVsKSAkKHZvcHRfaWYgcmlzdCBsaWJyaXN0LWRldmVsKQorICQodm9wdF9pZiB2 dWxrYW4gJ3Z1bGthbi1sb2FkZXIgVnVsa2FuLUhlYWRlcnMnKQorICQodm9wdF9pZiBtZnggJ2xp Ym1meCBsaWJtZngtZGV2ZWwnKQorICQodm9wdF9pZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSAk KHZvcHRfaWYgbnZkZWMgbnYtY29kZWMtaGVhZGVycykiCisKK2J1aWxkX29wdGlvbnM9IngyNjUg djRsMiB2YWFwaSB2ZHBhdSB2cHggZmRrX2FhYyBhb20gbnZlbmMgc25kaW8gcHVsc2VhdWRpbwor IGRhdjFkIHppbWcgd2VicCBzb2ZhIHZ1bGthbiBkcm0gc3Z0YXYxIHNydCByaXN0IG52ZGVjIG1m eCIKK2J1aWxkX29wdGlvbnNfZGVmYXVsdD0ieDI2NSB2NGwyIHZweCBhb20gc25kaW8gcHVsc2Vh dWRpbyBkYXYxZCB3ZWJwIHZ1bGthbiBkcm0gc3J0IHJpc3QiCisKK2Rlc2Nfb3B0aW9uX3NydD0i RW5hYmxlIHN1cHBvcnQgZm9yIFNSVCAoU2VjdXJlLCBSZWxpYWJsZSwgVHJhbnNwb3J0KSIKK2Rl c2Nfb3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBwb3J0IGZvciBSSVNUIChSZWxpYWJsZSBJbnRlcm5l dCBTdHJlYW0gVHJhbnNwb3J0KSIKK2Rlc2Nfb3B0aW9uX3NvZmE9IkVuYWJsZSBzdXBwb3J0IGZv ciBBRVMgU09GQSIKK2Rlc2Nfb3B0aW9uX3dlYnA9IkVuYWJsZSBzdXBwb3J0IGZvciBXZWJQIgor CitjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwlpNjg2KikKKwkJCWhvc3RtYWtlZGVw ZW5kcys9IiBuYXNtIgorCQkJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52 ZW5jIG52ZGVjIgorCQkJOzsKKwl4ODZfNjQqKQorCQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5hc20i CisJCQlidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbWZ4IG52ZW5jIG52ZGVj IgorCQkJOzsKKwlwcGM2NCopIGJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSI7 OworCW1pcHMqKSBDRkxBR1M9Ii1tbmFuPWxlZ2FjeSI7OworZXNhYworCitpZiBbICIkWEJQU19U QVJHRVRfV09SRFNJWkUiICE9ICIzMiIgXTsgdGhlbgorCWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9 IiBzdnRhdjEiCitmaQorCitpZiBbICIkWEJQU19UQVJHRVRfTk9fQVRPTUlDOCIgXTsgdGhlbgor CW1ha2VkZXBlbmRzKz0iIGxpYmF0b21pYy1kZXZlbCIKK2ZpCisKK19hcHBseV9wYXRjaCgpIHsK Kwlsb2NhbCBhcmdzPSIkMSIgcG5hbWU9IiQoYmFzZW5hbWUgJDIpIgorCisJaWYgWyAhIC1mICIu JHtwbmFtZX1fZG9uZSIgXTsgdGhlbgorCQlwYXRjaCAtTiAkYXJncyAtaSAkMgorCQl0b3VjaCAu JHtwbmFtZX1fZG9uZQorCWZpCit9CisKK3Bvc3RfcGF0Y2goKSB7CisJY2FzZSAiJFhCUFNfVEFS R0VUX01BQ0hJTkUiIGluCisJCXBwYzY0bGUqKSA7OworCQlwcGMqKSBfYXBwbHlfcGF0Y2ggLXAx ICR7RklMRVNESVJ9L2FsdGl2ZWMucGF0Y2ggOzsKKwllc2FjCit9CisKK2RvX2NvbmZpZ3VyZSgp IHsKKwkjIEZpeCBnY2Mgb24geDg2XzY0LW11c2wgb25seQorCWlmIFsgIiRYQlBTX1RBUkdFVF9N QUNISU5FIiA9ICJ4ODZfNjQtbXVzbCIgXTsgdGhlbgorCQl2c2VkIC1pIGNvbmZpZ3VyZSAtZSAi cztfY2ZsYWdzX3NwZWVkPSctTzMnO19jZmxhZ3Nfc3BlZWQ9Jy1PMic7IgorCWZpCisKKwlpZiBb ICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KKwkJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGlu CisJCQlhcm0qKSBfYXJjaD0iYXJtIjs7CisJCQlhYXJjaDY0KikgX2FyY2g9ImFhcmNoNjQiOzsK KwkJCW1pcHMqKSBfYXJjaD0ibWlwcyI7OworCQkJcHBjNjQqKSBfYXJjaD0icHBjNjQiOzsKKwkJ CXBwYyopIF9hcmNoPSJwcGMiOzsKKwkJCSopIF9hcmNoPSIke1hCUFNfVEFSR0VUX01BQ0hJTkUl JS1tdXNsfSI7OworCQllc2FjCisKKwkJX2FyZ3MrPSIgLS1lbmFibGUtY3Jvc3MtY29tcGlsZQor CQkJLS1zeXNyb290PSRYQlBTX0NST1NTX0JBU0UKKwkJCS0tY3Jvc3MtcHJlZml4PSR7WEJQU19D Uk9TU19UUklQTEVUfS0KKwkJCS0tdGFyZ2V0LW9zPWxpbnV4IC0tYXJjaD0ke19hcmNofSIKKwlm aQorCisJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXBwY3xwcGMtbXVzbCkgX2Fy Z3MrPSIgLS1kaXNhYmxlLWFsdGl2ZWMiOzsKKwllc2FjCisKKwlpZiBbICIkWEJQU19UQVJHRVRf Tk9fQVRPTUlDOCIgXTsgdGhlbgorCQlfYXJncys9IiAtLWV4dHJhLWxpYnM9LWxhdG9taWMiCisJ ZmkKKworCS4vY29uZmlndXJlIC0tcHJlZml4PS91c3IgLS1kaXNhYmxlLWRlYnVnIC0tZW5hYmxl LWdwbCAtLWVuYWJsZS1nbnV0bHMgXAorCQktLWRpc2FibGUtc3RyaXBwaW5nIFwKKwkJLS1lbmFi bGUtbGliY2RpbyAtLWVuYWJsZS12ZXJzaW9uMyAtLWVuYWJsZS1ydW50aW1lLWNwdWRldGVjdCBc CisJCS0tZW5hYmxlLWxpYm1wM2xhbWUgLS1lbmFibGUtbGlidm9yYmlzIC0tZW5hYmxlLWxpYnh2 aWQgXAorCQktLWVuYWJsZS1saWJ4MjY0ICQodm9wdF9lbmFibGUgdnB4IGxpYnZweCkgLS1lbmFi bGUtbGlidGhlb3JhIFwKKwkJLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXN0YXRpYyAtLWVuYWJs ZS1saWJ4Y2IgXAorCQkkKHZvcHRfZW5hYmxlIHB1bHNlYXVkaW8gbGlicHVsc2UpIC0tZW5hYmxl LWxpYmZyZWV0eXBlIC0tZW5hYmxlLWxpYm1vZHBsdWcgXAorCQktLWVuYWJsZS1saWJzcGVleCAt LWVuYWJsZS1saWJjZWx0IC0tZW5hYmxlLWxpYmFzcyBcCisJCS0tZW5hYmxlLWxpYm9wdXMgLS1l bmFibGUtbGlicnRtcCAtLWVuYWJsZS1saWJqYWNrIFwKKwkJJCh2b3B0X2lmIGZka19hYWMgJy0t ZW5hYmxlLW5vbmZyZWUgLS1lbmFibGUtbGliZmRrLWFhYycpIFwKKwkJLS1kaXNhYmxlLWxpYm9w ZW5jb3JlX2Ftcm5iIC0tZGlzYWJsZS1saWJvcGVuY29yZV9hbXJ3YiBcCisJCS0tZGlzYWJsZS1s aWJvcGVuanBlZyBcCisJCS0tZW5hYmxlLXBvc3Rwcm9jIC0tZW5hYmxlLW9wZW5jbCAke19hcmdz fSBcCisJCSQodm9wdF9lbmFibGUgeDI2NSBsaWJ4MjY1KSBcCisJCSQodm9wdF9lbmFibGUgdjRs MiBsaWJ2NGwyKSBcCisJCSQodm9wdF9lbmFibGUgYW9tIGxpYmFvbSkgJCh2b3B0X2VuYWJsZSB2 YWFwaSkgJCh2b3B0X2VuYWJsZSB2ZHBhdSkgXAorCQktLWVuYWJsZS1saWJiczJiIC0tZW5hYmxl LWF2cmVzYW1wbGUgLS1lbmFibGUtbGlidmlkc3RhYiBcCisJCSQodm9wdF9lbmFibGUgZGF2MWQg bGliZGF2MWQpIFwKKwkJJCh2b3B0X2VuYWJsZSB6aW1nIGxpYnppbWcpIFwKKwkJJCh2b3B0X2Vu YWJsZSB3ZWJwIGxpYndlYnApIFwKKwkJJCh2b3B0X2VuYWJsZSBzb2ZhIGxpYm15c29mYSkgXAor CQkkKHZvcHRfZW5hYmxlIHZ1bGthbikgXAorCQkkKHZvcHRfZW5hYmxlIGRybSBsaWJkcm0pIFwK KwkJJCh2b3B0X2VuYWJsZSBzdnRhdjEgbGlic3Z0YXYxKSBcCisJCSQodm9wdF9lbmFibGUgc3J0 IGxpYnNydCkgXAorCQkkKHZvcHRfZW5hYmxlIHJpc3QgbGlicmlzdCkgXAorCQkkKHZvcHRfZW5h YmxlIG1meCBsaWJtZngpIFwKKwkJJCh2b3B0X2lmIG52ZW5jICctLWVuYWJsZS1udmVuYycpIFwK KwkJJCh2b3B0X2lmIG52ZGVjICctLWVuYWJsZS1udmRlYycpCit9CisKK2RvX2J1aWxkKCkgewor CW1ha2UgJHttYWtlam9ic30KKwltYWtlIGRvYy9mZnttcGVnLHBsYXl9LjEKK30KKworZG9faW5z dGFsbCgpIHsKKwltYWtlIERFU1RESVI9JHtERVNURElSfSBpbnN0YWxsIGluc3RhbGwtbWFuCisJ cm0gLXJmICR7REVTVERJUn0vdXNyL2JpbgorfQorCitsaWJhdmNvZGVjNF9wYWNrYWdlKCkgewor CXNob3J0X2Rlc2M9IkZGbXBlZyBjb2RlYyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2 bW92ZSAidXNyL2xpYi9saWJhdmNvZGVjLnNvLioiCisJfQorfQorCitsaWJhdmRldmljZTRfcGFj a2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgZGV2aWNlIGhhbmRsaW5nIGxpYnJhcnkiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2ZGV2aWNlLnNvLioiCisJfQor fQorCitsaWJhdnJlc2FtcGxlNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyBhdWRp byByZXNhbXBsaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGli L2xpYmF2cmVzYW1wbGUuc28uKiIKKwl9Cit9CisKK2xpYmF2Zm9ybWF0NF9wYWNrYWdlKCkgewor CXNob3J0X2Rlc2M9IkZGbXBlZyBmaWxlIGZvcm1hdCBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkg eworCQl2bW92ZSAidXNyL2xpYi9saWJhdmZvcm1hdC5zby4qIgorCX0KK30KKworbGliYXZ1dGls NF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyB1dGlsaXR5IGxpYnJhcnkiCisJcGtn X2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2dXRpbC5zby4qIgorCX0KK30KKwor bGliYXZmaWx0ZXI0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGF1ZGlvL3ZpZGVv IGZpbHRlciBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJh dmZpbHRlci5zby4qIgorCX0KK30KKworbGlicG9zdHByb2M0X3BhY2thZ2UoKSB7CisJc2hvcnRf ZGVzYz0iRkZtcGVnIHZpZGVvIHBvc3Rwcm9jZXNzaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwo KSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnBvc3Rwcm9jLnNvLioiCisJfQorfQorCitsaWJzd3Nj YWxlNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyB2aWRlbyBzY2FsaW5nIGxpYnJh cnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnN3c2NhbGUuc28uKiIK Kwl9Cit9CisKK2xpYnN3cmVzYW1wbGU0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVn IHZpZGVvIHJlc2FtcGxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVz ci9saWIvbGlic3dyZXNhbXBsZS5zby4qIgorCX0KK30KKworZmZtcGVnNC1kZXZlbF9wYWNrYWdl KCkgeworCWRlcGVuZHM9IgorCQlsaWJhdmNvZGVjND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQor CQlsaWJhdmRldmljZTQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGliYXZmb3JtYXQ0Pj0k e3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYmF2dXRpbDQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lv bn0KKwkJbGliYXZmaWx0ZXI0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnBvc3Rwcm9j ND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJzd3NjYWxlND49JHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufQorCQlsaWJzd3Jlc2FtcGxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJh dnJlc2FtcGxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gZGV2 ZWxvcG1lbnQgZmlsZXMiCisJY29uZmxpY3RzPSJmZm1wZWctZGV2ZWwiCisJaWYgWyAiJFhCUFNf VEFSR0VUX01BQ0hJTkUiID0gImk2ODYiIF07IHRoZW4KKwkJIyAvdXNyL2Jpbi9zdHJpcDogZXJy b3I6IHRoZSBpbnB1dCBmaWxlICcvZGVzdGRpci8vZmZtcGVnLWRldmVsLTQuNC40L3Vzci9saWIv bGliYXZmaWx0ZXIuYSh2Zl9hdGFkZW5vaXNlLm8pJyBoYXMgbm8gc2VjdGlvbnMKKwkJbm9zdHJp cF9maWxlcz0iL3Vzci9saWIvbGliYXZmaWx0ZXIuYSIKKwlmaQorCXBrZ19pbnN0YWxsKCkgewor CQl2bW92ZSB1c3IvaW5jbHVkZQorCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCQl2bW92ZSAi dXNyL2xpYi8qLmEiCisJCXZtb3ZlICJ1c3IvbGliLyouc28iCisJCXZtb3ZlIHVzci9zaGFyZS9m Zm1wZWcvZXhhbXBsZXMKKwkJdm1vdmUgdXNyL3NoYXJlL21hbi9tYW4zCisJfQorfQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9saWJhdmNvZGVjNCBiL3NyY3BrZ3MvbGliYXZjb2RlYzQKbmV3IGZpbGUg bW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2xpYmF2Y29kZWM0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2ZGV2aWNlNCBi L3NyY3BrZ3MvbGliYXZkZXZpY2U0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAw MDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdmRldmlj ZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZmaWx0ZXI0IGIvc3JjcGtncy9saWJhdmZpbHRlcjQKbmV3 IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2ZmlsdGVyNApAQCAtMCwwICsxIEBACitmZm1wZWc0 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmZv cm1hdDQgYi9zcmNwa2dzL2xpYmF2Zm9ybWF0NApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAw MDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGli YXZmb3JtYXQ0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2cmVzYW1wbGU0IGIvc3JjcGtncy9saWJhdnJl c2FtcGxlNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRl N2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZyZXNhbXBsZTQKQEAgLTAsMCAr MSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbGliYXZ1dGlsNCBiL3NyY3BrZ3MvbGliYXZ1dGlsNApuZXcgZmlsZSBtb2RlIDEyMDAw MAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvbGliYXZ1dGlsNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJwb3N0cHJvYzQgYi9zcmNwa2dzL2xp YnBvc3Rwcm9jNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2Yz NTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGlicG9zdHByb2M0CkBAIC0wLDAg KzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xpYnN3cmVzYW1wbGU0IGIvc3JjcGtncy9saWJzd3Jlc2FtcGxlNApuZXcgZmlsZSBt b2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvbGlic3dyZXNhbXBsZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlic3dzY2FsZTQg Yi9zcmNwa2dzL2xpYnN3c2NhbGU0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAw MDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJzd3NjYWxl NApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKRnJv bSBkODk3NWM4MzI5ZDRkMDU2NWYxNzZhZDQxODgxMDEyYjBhOGEwMzFhIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDE5OjU5OjA0IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDMvMTEzXSBvcGVuY3Y6 IHVwZGF0ZSB0byA0LjcuMC4KCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgfCAxMDQgKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9vcGVuY3YvdGVt cGxhdGUgfCAgIDggKystLQogMiBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCspLCA1NiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3NobGlicwpp bmRleCAzNzFlNGZmMTFhYTEuLjhjYjVmZjBmNzQ1NyAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGli cworKysgYi9jb21tb24vc2hsaWJzCkBAIC0yMTM4LDU4ICsyMTM4LDU4IEBAIGxpYmNhcHN0b25l LnNvLjQgY2Fwc3RvbmUtNC4wXzEKIGxpYmhhdmVnZS5zby4yIGxpYmhhdmVnZWQtMS45LjExXzEK IGxpYm5paC5zby4xIGxpYm5paC0xLjAuM18xCiBsaWJuaWgtZGJ1cy5zby4xIGxpYm5paC0xLjAu M18xCi1saWJvcGVuY3ZfcXVhbGl0eS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl9yZWcuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3VyZmFjZV9tYXRjaGlu Zy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94cGhvdG8uc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZnJlZXR5cGUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8x Ci1saWJvcGVuY3ZfZnV6enkuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaGZz LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ltZ19oYXNoLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2xpbmVfZGVzY3JpcHRvci5zby40MDYgbGlib3BlbmN2 LTQuNi4wXzEKLWxpYm9wZW5jdl9zYWxpZW5jeS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl9zdHJ1Y3R1cmVkX2xpZ2h0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X2FydWNvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Jnc2VnbS5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9iaW9pbnNwaXJlZC5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9jY2FsaWIuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3ZfZmFjZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl90cmFja2lu Zy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94ZmVhdHVyZXMyZC5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9vcHRmbG93LnNvLjQwNiBsaWJvcGVuY3YtNC42 LjBfMQotbGlib3BlbmN2X3hpbWdwcm9jLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X3Bsb3Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdGV4dC5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9tbC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9vYmpkZXRlY3Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf ZG5uLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3NoYXBlLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N0aXRjaGluZy5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9waG90by5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl92 aWRlby5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9jYWxpYjNkLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ZlYXR1cmVzMmQuc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3ZfZmxhbm4uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVu Y3ZfaGlnaGd1aS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl92aWRlb2lvLnNv LjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ltZ2NvZGVjcy5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9pbWdwcm9jLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X2NvcmUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3VwZXJy ZXMuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdmlkZW9zdGFiLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2dhcGkuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8x Ci1saWJvcGVuY3ZfeG9iamRldGVjdC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl9kYXRhc2V0cy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kbm5fb2JqZGV0 ZWN0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Rubl9zdXBlcnJlcy5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kcG0uc28uNDA2IGxpYm9wZW5jdi00LjYu MF8xCi1saWJvcGVuY3ZfcGhhc2VfdW53cmFwcGluZy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9zdGVyZW8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcmFw aWQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaW50ZW5zaXR5X3RyYW5zZm9y bS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9hbHBoYW1hdC5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9iYXJjb2RlLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X21jYy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKK2xpYm9wZW5jdl9xdWFs aXR5LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3JlZy5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zdXJmYWNlX21hdGNoaW5nLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X3hwaG90by5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl9mcmVldHlwZS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mdXp6eS5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9oZnMuc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3ZfaW1nX2hhc2guc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3ZfbGluZV9kZXNjcmlwdG9yLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2 X3NhbGllbmN5LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N0cnVjdHVyZWRf bGlnaHQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYXJ1Y28uc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYmdzZWdtLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X2Jpb2luc3BpcmVkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X2NjYWxpYi5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mYWNlLnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3RyYWNraW5nLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X3hmZWF0dXJlczJkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X29wdGZsb3cuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfeGlt Z3Byb2Muc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfcGxvdC5zby40MDcgbGli b3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl90ZXh0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X21sLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X29iamRldGVj dC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9kbm4uc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3Zfc2hhcGUuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3Zfc3RpdGNoaW5nLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3Bob3Rv LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3ZpZGVvLnNvLjQwNyBsaWJvcGVu Y3YtNC43LjBfMQorbGlib3BlbmN2X2NhbGliM2Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfZmVhdHVyZXMyZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9m bGFubi5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9oaWdoZ3VpLnNvLjQwNyBs aWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3ZpZGVvaW8uc28uNDA3IGxpYm9wZW5jdi00Ljcu MF8xCitsaWJvcGVuY3ZfaW1nY29kZWNzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X2ltZ3Byb2Muc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfY29yZS5zby40 MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zdXBlcnJlcy5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl92aWRlb3N0YWIuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfZ2FwaS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl94b2JqZGV0 ZWN0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2RhdGFzZXRzLnNvLjQwNyBs aWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Rubl9vYmpkZXRlY3Quc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3ZfZG5uX3N1cGVycmVzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X2RwbS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9waGFz ZV91bndyYXBwaW5nLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N0ZXJlby5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9yYXBpZC5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9pbnRlbnNpdHlfdHJhbnNmb3JtLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X2FscGhhbWF0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X2JhcmNvZGUuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfbWNjLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQogbGlidW5pY29uZi5zby40LjYgd3ZzdHJlYW1zLTQuNi4x XzIwCiBsaWJ3dmJhc2Uuc28uNC42IHd2c3RyZWFtcy00LjYuMV8yMAogbGlid3Z1dGlscy5zby40 LjYgd3ZzdHJlYW1zLTQuNi4xXzIwCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5jdi90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRlCmluZGV4IDY5YzYzNWIxYWQyYi4uNDFmMzE4M2Yx NTgyIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5jdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29w ZW5jdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5j dicKIHBrZ25hbWU9b3BlbmN2Ci12ZXJzaW9uPTQuNi4wCi1yZXZpc2lvbj00Cit2ZXJzaW9uPTQu Ny4wCityZXZpc2lvbj0xCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jrc3JjPSR7cGtnbmFt ZX0tJHt2ZXJzaW9ufQogYnVpbGRfc3R5bGU9Y21ha2UKQEAgLTI0LDggKzI0LDggQEAgaG9tZXBh Z2U9Imh0dHBzOi8vb3BlbmN2Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9naXRodWIuY29tL29w ZW5jdi9vcGVuY3Yvd2lraS9DaGFuZ2VMb2ciCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNv bS9vcGVuY3Yvb3BlbmN2L2FyY2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3oKICBodHRwczovL2dpdGh1 Yi5jb20vb3BlbmN2L29wZW5jdl9jb250cmliL2FyY2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3o+Y29u dHJpYi50YXIuZ3oiCi1jaGVja3N1bT0iMWVjMWNiYTY1ZjlmMjBmZTVhNDFmZGExNTg2ZTAxYzcw ZWEwYzlhNmQ3YjY3YzllMTNlZGYwY2ZlMjIzOTI3NwotIDE3NzdkNWZkMmI1OTAyOWNmNTM3ZTVm ZDZmOGFhNjhkNzA3MDc1ODIyZjkwYmRlNjgzZmNkZTA4NmY4NWY3YTciCitjaGVja3N1bT0iOGRm MDA3OWNkYmUxNzk3NDhhMThkNDQ3MzFhZjYyYTI0NWE0NWViZjUwODUyMjNkYzAzMTMzOTU0YzY2 Mjk3MworIDQyZGY4NDBjZjkwNTVlNTlkMGUyMmMyNDljZmIxOWYwNDc0M2UxYmRhZDExM2QzMWIx NTczZDM5MzRkNjI1ODQiCiBwYXRjaF9hcmdzPSItTnAxIC1kICR7YnVpbGRfd3Jrc3JjfSIKICMg dGVzdHMgaGFuZyBpbmRlbmZpbml0ZWx5LCBldmVuIHdpdGggdGVzdCBkYXRhIGluY2x1ZGVkCiBt YWtlX2NoZWNrPW5vCgpGcm9tIDJkOTA0NmE5MDJiYjA1YzVlZDJkZmU3OGE1MWFhN2Y4NjJhOThj MWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDUgLTA0MDAKU3ViamVjdDogW1BBVENI IDAwNC8xMTNdIGFjdGlvbmE6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dz L2FjdGlvbmEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUgYi9z cmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKaW5kZXggY2Y1ZjBiN2EyYWU2Li4wZDg5OTMxMWU2ZGYg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2FjdGlv bmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhY3Rpb25h JwogcGtnbmFtZT1hY3Rpb25hCiB2ZXJzaW9uPTMuMTAuMQotcmV2aXNpb249MgorcmV2aXNpb249 MwogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSJQS0dDT05GSUdfT1BFTkNWPW9w ZW5jdjQiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LXBsdWdpbi1teXNxbCBxdDUt cW1ha2UgcXQ1LWhvc3QtdG9vbHMiCgpGcm9tIDFhYTNmYjQwNzMwZDgxMjY4MmE2ZGUyYzYxMTAx MTg3ZWJkZWNjZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDUgLTA0MDAKU3ViamVj dDogW1BBVENIIDAwNS8xMTNdIGdtaWM6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBz cmNwa2dzL2dtaWMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dtaWMvdGVtcGxhdGUgYi9z cmNwa2dzL2dtaWMvdGVtcGxhdGUKaW5kZXggMjRhOWM3MjE4ZmRmLi4wYmI0MDM0ZDVjYzggMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZ21pYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dtaWMvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnbWljJwogcGtnbmFtZT1n bWljCiB2ZXJzaW9uPTMuMS42Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBfemFydF9oYXNoPTM0 ZWJmNmNjZTBiYWZiOThhYmU1N2NlYzgzYzRhMDJjZDFhYmVjYTAKIGNyZWF0ZV93cmtzcmM9eWVz CiBidWlsZF93cmtzcmM9InNyYyIKCkZyb20gMmU0ODNhNzMxYTkyNDE0Y2VjMjQzMWVmMDNhMjg2 NGM0NjE0ODg4NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDA2LzExM10gcWltZ3Y6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBz cmNwa2dzL3FpbWd2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZSBi L3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKaW5kZXggN2ViMzBkYjMzOTkyLi5kZDM0MWRmZTFiZmMg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xaW1ndi90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3FpbWd2JwogcGtn bmFtZT1xaW1ndgogdmVyc2lvbj0xLjAuMgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIkKHZvcHRfaWYgdmlkZW8gLURWSURFT19TVVBQ T1JUPU9OIC1EVklERU9fU1VQUE9SVD1PRkYpCiAgJCh2b3B0X2lmIHNjYWxlIC1ET1BFTkNWX1NV UFBPUlQ9T04gLURPUEVOQ1ZfU1VQUE9SVD1PRkYpCgpGcm9tIDE5Y2FlMGRlMjE2NTRmOThkN2Vj ZmQ1NmMxNDY4ZjI4NTJjOWE2NjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAwNy8xMTNdIHJldHJvc2hhcmU6IHJldmJ1bXAgZm9yIG9wZW5j di00LjcuMAoKLS0tCiBzcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgYi9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKaW5k ZXggOGEwNzg2YzIxYTA4Li43MjAyM2ZhOThiNzUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmV0cm9z aGFyZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdyZXRyb3NoYXJlJwogcGtnbmFtZT1yZXRyb3No YXJlCiB2ZXJzaW9uPTAuNi42Ci1yZXZpc2lvbj0yCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1x bWFrZQogI1hYWCBicm9hZGNhc3QgZmVhdHVyZSByZXF1aXJlcyBhbiBhbmNpZW50IHVkcC1kaXNj b3ZlcnktY3BwIHdoaWNoIGVpdGhlciBuZWVkcwogIyB0byBiZSBmZXRjaGVkK3BhdGNoZWQgKEZU QkZTKSBoZXJlIG9yIHBhY2thZ2VkIDovCgpGcm9tIGE5YjhjYzRiYjM3MjcxNjI1Y2Q3YTI5MDYz NDlmZmFkYjA1MGNhMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3Vi amVjdDogW1BBVENIIDAwOC8xMTNdIHNpcmlsOiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0t LQogc3JjcGtncy9zaXJpbC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2lyaWwvdGVtcGxh dGUgYi9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlCmluZGV4IGU4OGYzMGZiNjE3OC4uODQzMzJmNzlk MDYwIDEwMDY0NAotLS0gYS9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2ly aWwvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaXJpbCcK IHBrZ25hbWU9c2lyaWwKIHZlcnNpb249MC45LjEyCi1yZXZpc2lvbj05CityZXZpc2lvbj0xMAog YnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGlu dGx0b29sIGF1dG9jb25mIGF1dG9tYWtlIGdldHRleHQtZGV2ZWwiCiBtYWtlZGVwZW5kcz0iZmZ0 dy1kZXZlbCBsaWJjb25maWctZGV2ZWwgbGlib3BlbmN2LWRldmVsIGxpYmZmbXMyLWRldmVsCgpG cm9tIDMyMTRjMWUyMzljNzk4MTI5YTRkMDRhNTE0NzZhZjlkMzY0Y2U1YzEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwOS8xMTNdIHdhaWZ1 MngtY29udmVydGVyLWNwcDogcmV2YnVtcCBmb3Igb3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3Mv d2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy93YWlmdTJ4 LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUgYi9zcmNwa2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90 ZW1wbGF0ZQppbmRleCA4YzA5NWQwZDdiYWIuLmFhNTJkOGM5ODFhOCAxMDA2NDQKLS0tIGEvc3Jj cGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93YWlmdTJ4 LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICd3YWlmdTJ4LWNvbnZlcnRlci1jcHAnCiBwa2duYW1lPXdhaWZ1MngtY29udmVydGVyLWNw cAogdmVyc2lvbj01LjIuNAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21h a2UKIGNvbmZpZ3VyZV9hcmdzPSItRElOU1RBTExfTU9ERUxTPU9OIgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIgoKRnJvbSBlMGQxMmQ0YjVjZDNlYWQ2NWM2Y2Y5NmE0NzM3MGE5YjIwODY5 NzhlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAwOjM4IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwMTAvMTEzXSB2bGM6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy92 bGMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy92bGMvdGVtcGxhdGUgYi9zcmNwa2dz L3ZsYy90ZW1wbGF0ZQppbmRleCAyMTA3NjJiMGE3ZTIuLjg1NWNhNTIzODY2MiAxMDA2NDQKLS0t IGEvc3JjcGtncy92bGMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy92bGMvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd2bGMnCiBwa2duYW1lPXZsYwogdmVyc2lv bj0zLjAuMTgKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1 cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtZ21lIC0tZGlzYWJsZS1saWJ0YXIgLS1lbmFi bGUtamFjawogIC0tZW5hYmxlLWxpdmU1NTUgLS1kaXNhYmxlLWZsdWlkc3ludGggLS1lbmFibGUt ZHZkcmVhZApAQCAtMjUsNyArMjUsNyBAQCBsaWIzMmRpc2FibGVkPXllcwogaG9zdG1ha2VkZXBl bmRzPSJhdXRvbWFrZSBsaWJ0b29sIHBrZy1jb25maWcgZmxleCBnZXR0ZXh0IGxpYmdjcnlwdC1k ZXZlbAogIGxpdmU1NTUtZGV2ZWwgZ2V0dGV4dC1kZXZlbCAkKHZvcHRfaWYgbHVhIGx1YTUyKSAk KHZvcHRfaWYgY2hyb21lY2FzdCBwcm90b2J1ZikiCiBtYWtlZGVwZW5kcz0iCi0gYXZhaGktbGli cy1kZXZlbCBkYnVzLWdsaWItZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWVmb250 LXR0ZgorIGF2YWhpLWxpYnMtZGV2ZWwgZGJ1cy1nbGliLWRldmVsIGZhYWQyLWRldmVsIGZmbXBl ZzQtZGV2ZWwgZnJlZWZvbnQtdHRmCiAgZ251dGxzLWRldmVsIGphY2stZGV2ZWwgbGliYTUyLWRl dmVsIGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2ZWwKICBsaWJjZGlvLWRldmVsIGxpYmRjYS1k ZXZlbCBsaWJkdmJwc2ktZGV2ZWwgbGliZHZkbmF2LWRldmVsIGxpYm1hZC1kZXZlbAogIGxpYm1h dHJvc2thLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGlibXBjZGVjLWRldmVsIGxpYm1wZWcyLWRl dmVsCgpGcm9tIGZhOTQxZTE4ZDZiNTIxNjZkYTQxZDhhZTdlNjNmOGEyY2QwYzBmMmUgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDA6NTUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMS8xMTNd IG9zZzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL29zZy90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUK aW5kZXggYTllYmJkMjg3OTMzLi43NTU3OTNmN2UxMWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3Nn L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlCkBAIC04LDcgKzgsNyBAQCBidWls ZF9oZWxwZXI9InFlbXUiCiBjb25maWd1cmVfYXJncz0iLURMSUJfUE9TVEZJWD0iCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWcgeHJhbmRyIgogbWFrZWRlcGVuZHM9Ik1lc2FMaWItZGV2ZWwg Z3RrZ2xleHQtZGV2ZWwgbGliY3VybC1kZXZlbCBnaWZsaWItZGV2ZWwgbGlicnN2Zy1kZXZlbAot IGphc3Blci1kZXZlbCB0aWZmLWRldmVsIGxpYmdkYWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBl Zy1kZXZlbCB4aW5lLWxpYi1kZXZlbAorIGphc3Blci1kZXZlbCB0aWZmLWRldmVsIGxpYmdkYWwt ZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZzQtZGV2ZWwgeGluZS1saWItZGV2ZWwKICBTREwyLWRl dmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsCiAgJCh2b3B0X2lmIG9wZW5leHIgbGlib3BlbmV4 ci1kZXZlbCkKICAkKHZvcHRfaWYgcG9wcGxlciBwb3BwbGVyLWdsaWItZGV2ZWwpCgpGcm9tIGEx NzRkYTlhZjhhYTQxYzg1NzdiODQwYzQ3MDEzNjcyMWFmY2JlNTMgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6MTMgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMi8xMTNdIHhpbmUtbGliOiBy 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 ZTBkMmRjN2RiNWJkMjg1Yzg4Mzc2ZDAxY2QzZTY2Zjk2Y2RhY2I1ZiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDEzLzExM10gUU1QbGF5Mjog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxh dGUKaW5kZXggYWQ3M2NiYjAxYmFlLi41NTI4NGMwNTExNjEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv UU1QbGF5Mi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdRTVBsYXkyJwogcGtnbmFtZT1RTVBsYXkyCiB2 ZXJzaW9uPTIzLjAyLjA1Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFr ZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIK IG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWctZGV2ZWwgbGliYXNzLWRldmVsIGxp YmNkaW8tZGV2ZWwgbGliZ21lLWRldmVsCgpGcm9tIDIzZDE0NDNjYmZkYjVhNzVkYTJlM2M5ZTc4 YTFiNTA2MDFkMjYzNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3Vi amVjdDogW1BBVENIIDAxNC8xMTNdIGFsc2EtcGx1Z2luczogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv YWxzYS1wbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtncy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUKaW5k ZXggMGJmYTZkOWZkMjY0Li5hNTcwOGE3ZDgyYTggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWxzYS1w bHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYWxzYS1wbHVnaW5zJwogcGtnbmFtZT1h bHNhLXBsdWdpbnMKIHZlcnNpb249MS4yLjcuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1tYWVtby1w bHVnaW4iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIGM5MjVlZjU0OTRhYzYz ZjU2MjczNzhkM2UwNDBhODFjZjg0N2NiNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNS8xMTNdIGFyY2FuOiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvYXJjYW4vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Fy Y2FuL3RlbXBsYXRlIGIvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZQppbmRleCA3YmU5NjUyZWNjZjMu LmNjYzdkZjExY2VhYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2FyY2FuL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogIyAhISBrZWVwIHN5bmNlZCB3 aXRoOiBhY2ZnZnMgYWNsaXAgYWxvYWRpbWFnZQogcGtnbmFtZT1hcmNhbgogdmVyc2lvbj0wLjYu Mi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jr c3JjPWFyY2FuL3NyYwogYnVpbGRfc3R5bGU9Y21ha2UKCkZyb20gM2VmMGU1ZmM5YjAzOTIwODk2 Y2U0MDEyMGQyOWNlMDFiMGUyOTc2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE2LzExM10gYXR0cmFjdDogcmV2YnVtcCBmb3IgZmZtcGVn NC00LjQuMwoKLS0tCiBzcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9hdHRyYWN0L3RlbXBsYXRlIGIvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlCmluZGV4IDI2 MTQ0ZTkzMWEzYy4uZTc2MGJmMGQxOGFlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2F0dHJhY3QvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdhdHRyYWN0JwogcGtnbmFtZT1hdHRyYWN0CiB2ZXJzaW9uPTIu Ni4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1h a2VfYnVpbGRfYXJncz0iVkVSQk9TRT0xIgogbWFrZV91c2VfZW52PXllcwogaG9zdG1ha2VkZXBl bmRzPSJwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9IlNGTUwtZGV2ZWwgZmZtcGVnLWRldmVsIGZv bnRjb25maWctZGV2ZWwgZ2x1LWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwKK21ha2VkZXBlbmRzPSJT Rk1MLWRldmVsIGZmbXBlZzQtZGV2ZWwgZm9udGNvbmZpZy1kZXZlbCBnbHUtZGV2ZWwgbGliYXJj aGl2ZS1kZXZlbAogIGxpYmN1cmwtZGV2ZWwgbGlianBlZy10dXJiby1kZXZlbCB4aW5lLWxpYiBy YXBpZGpzb24gbGliWHJhbmRyLWRldmVsIgogZGVwZW5kcz0iZ2l0Igogc2hvcnRfZGVzYz0iQXR0 cmFjdC1Nb2RlIGlzIGEgZ3JhcGhpY2FsIGZyb250ZW5kIGZvciBlbXVsYXRvcnMiCgpGcm9tIDgx ZDZhN2E3NTc5MzE5ZDYxYjJjODFkMzUyY2I5YzJkZTA3MWI5YWQgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNy8xMTNdIGF1YmlvOiByZXZi 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 cz0icGtnLWNvbmZpZyB0eHQybWFuIgoKRnJvbSA2OTBhNDVkY2NkY2ZkM2JlOTM1YzYwY2VjMmI3 NDAxN2NkZTk5M2EyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMTgvMTEzXSBhdWRhY2lvdXMtcGx1Z2luczogcmV2YnVtcCBmb3IgZmZtcGVn 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 b20gYjk4OGEzMTYzMTAyMzljN2M1MmU0OGNjNmJmMGFjNDc3OWRiNmE1ZCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE5LzExM10gYXVkYWNp dHk6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9hdWRhY2l0eS90ZW1w bGF0ZSB8IDUgKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZSBiL3NyY3BrZ3Mv YXVkYWNpdHkvdGVtcGxhdGUKaW5kZXggZDUwOWMwYTg5NDA3Li4xMWUyMDI1NTY4NWIgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdWRhY2l0eS90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F1ZGFjaXR5Jwog cGtnbmFtZT1hdWRhY2l0eQogdmVyc2lvbj0yLjQuMQotcmV2aXNpb249MgorcmV2aXNpb249Mwog YnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0td2l0aC1mZm1wZWc9 c3lzdGVtIC0td2l0aC1saWJzbmRmaWxlPXN5c3RlbSAtLXdpdGgtZXhwYXQ9c3lzdGVtCiAgLS13 aXRoLWxpYnNveHI9c3lzdGVtIC0td2l0aC1sYW1lPXN5c3RlbSAtLXdpdGgtbHYyPXN5c3RlbSBh Y19jdl9wYXRoX1dYX0NPTkZJRz13eC1jb25maWctZ3RrMyIKQEAgLTksNyArOSw3IEBAIGhvc3Rt YWtlZGVwZW5kcz0icGtnLWNvbmZpZyBjbWFrZSBnZXR0ZXh0IGxpYnRvb2wgbTQgd2hpY2giCiBt YWtlZGVwZW5kcz0iamFjay1kZXZlbCB3eFdpZGdldHMtZ3RrMy1kZXZlbCBndGsrMy1kZXZlbAog IGxpYm1hZC1kZXZlbCBzb3VuZHRvdWNoLWRldmVsIGxpYnNveHItZGV2ZWwKICB2YW1wLXBsdWdp bi1zZGstZGV2ZWwgbGFtZS1kZXZlbCBsaWJpZDN0YWctZGV2ZWwgbGliZmxhYy1kZXZlbAotIGZm bXBlZy1kZXZlbCB0d29sYW1lLWRldmVsIHNlcmQtZGV2ZWwgbHYyIGxpbHYtZGV2ZWwgc3VpbC1k ZXZlbCIKKyBmZm1wZWc0LWRldmVsIHR3b2xhbWUtZGV2ZWwgc2VyZC1kZXZlbCBsdjIgbGlsdi1k ZXZlbCBzdWlsLWRldmVsIgogZGVwZW5kcz0iZGVza3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNv bi10aGVtZSIKIHNob3J0X2Rlc2M9IkdyYXBoaWNhbCBjcm9zcy1wbGF0Zm9ybSBhdWRpbyBlZGl0 b3IiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgpAQCAtMzMs NSArMzMsNCBAQCBwb3N0X2luc3RhbGwoKSB7CiAJdmNvcHkgcGx1Zy1pbnMgL3Vzci9zaGFyZS9h dWRhY2l0eQogCiAJcm0gJHtERVNURElSfS91c3Ivc2hhcmUvZG9jL2F1ZGFjaXR5L0xJQ0VOU0Uu dHh0Ci0JdmxpY2Vuc2UgTElDRU5TRS50eHQgTElDRU5TRQogfQoKRnJvbSA4NWI4YmU2N2EyYzFk NGNlNjU5ODcyMTYxNGZhNTlmYzdhOTU3N2RjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjAvMTEzXSBhdmlkZW11eDogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2F2aWRlbXV4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9hdmlkZW11eC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKaW5kZXgg MjUzYTAyNDNlMjI1Li41NTcyODU5ODJkMmIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXZpZGVtdXgv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F2aWRlbXV4JwogcGtnbmFtZT1hdmlkZW11eAogdmVyc2lv bj0yLjguMAotcmV2aXNpb249MgorcmV2aXNpb249MwogIyBDYW4ndCBiZSBjb21waWxlZCBmb3Ig YWFyY2g2NCwgYXJtKiBvciBtaXBzKgogYXJjaHM9Ing4Nl82NCogaTY4NioiCiBob3N0bWFrZWRl cGVuZHM9ImNtYWtlIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LWRldmVsIHRhciB5YXNt IgoKRnJvbSBmN2MzZmE1NzU4YTdjMzU5MDA5Yzk1MjZhYjgxMjljM2I1NWYzMWE0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjEvMTEzXSBi YXJlc2lwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYmFyZXNpcC90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYmFyZXNp cC90ZW1wbGF0ZQppbmRleCBmMWJkMTgxNzA0OGIuLmIyMWUyMjMzNDMxNiAxMDA2NDQKLS0tIGEv c3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2JhcmVzaXAnCiBwa2duYW1lPWJh cmVzaXAKIHZlcnNpb249Mi4xMC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHls ZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGdsaWItZGV2ZWwiCiBtYWtlZGVw ZW5kcz0ibGliZ3NtLWRldmVsIGxpYnBuZy1kZXZlbCBvcGVuc3NsLWRldmVsIGxpYnNuZGZpbGUt ZGV2ZWwKCkZyb20gNjgzOWU2MjAzMjkyMzA1Mjc3MzRkZDU5YTkxNjM5ZDM3MzIyMDk4MiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIyLzEx M10gYmxlbmRlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2JsZW5kZXIv dGVtcGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUgYi9zcmNw a2dzL2JsZW5kZXIvdGVtcGxhdGUKaW5kZXggZWM3MjRiYjBhNmRjLi4wZjcyODc2ZDRkNzAgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2JsZW5kZXIv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdibGVuZGVyJwog cGtnbmFtZT1ibGVuZGVyCiB2ZXJzaW9uPTMuNS4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBh cmNocz0ieDg2XzY0KiBwcGM2NCoiCiBidWlsZF9zdHlsZT0iY21ha2UiCiBweWNvbXBpbGVfZGly cz0iL3Vzci9zaGFyZS9ibGVuZGVyLyR7dmVyc2lvbiUuKn0vc2NyaXB0cyIKQEAgLTksOCArOSw4 IEBAIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfSU5TVEFMTF9QT1JUQUJMRT1PRkYgLURXSVRIX1BZ VEhPTl9JTlNUQUxMPU9GRgogIC1EV0lUSF9KQUNLPU9OIC1EV0lUSF9DT0RFQ19GRk1QRUc9T04g LURXSVRIX0NPREVDX1NOREZJTEU9T04gLURXSVRIX09QRU5NUD1PTgogIC1EV0lUSF9GRlRXMz1P TiAtRFdJVEhfTU9EX09DRUFOU0lNPU9OIC1EV0lUSF9DWUNMRVNfRU1CUkVFPU9GRiAtRFdJVEhf T1BFTkNPTE9SSU89T04KICAtRFdJVEhfSU1BR0VfT1BFTkVYUj1PTiAtRFdJVEhfSU1BR0VfT1BF TkpQRUc9T04gLURXSVRIX09QRU5TVUJESVY9T04KLSAtRFdJVEhfT1BFTkNPTExBREE9T04gLURX SVRIX1NZU1RFTV9HTEVXPU9OIC1EV0lUSF9PUEVOVkRCPU9OIC1EV0lUSF9BTEVNQklDPU9OCi0g LURXSVRIX0dIT1NUX1gxMT1PTiAtRFdJVEhfR0hPU1RfV0FZTEFORD1PTiAtRFdJVEhfR0hPU1Rf TElCREVDT1I9T04KKyAtRFdJVEhfT1BFTkNPTExBREE9T04gLURXSVRIX09QRU5WREI9T04gLURX SVRIX0FMRU1CSUM9T04KKyAtRFdJVEhfR0hPU1RfWDExPU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5E PU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5EX0xJQkRFQ09SPU9OCiAgLURXSVRIX0JVSUxESU5GTz1P RkYgLURQWVRIT05fVkVSU0lPTj0ke3B5M192ZXJ9IC1EUFlUSE9OX0xJQlBBVEg9L3Vzci9saWIK ICAtRFBZVEhPTl9MSUJSQVJZPXB5dGhvbiR7cHkzX3Zlcn0ke3B5M19hYml2ZXJ9IC1EUFlUSE9O X0lOQ0xVREVfRElSUz0vJHtweTNfaW5jfQogIC1EV0lUSF9TWVNURU1fTFpPPU9OIC1EV0lUSF9T WVNURU1fRUlHRU4zPU9OIC1EV0lUSF9TWVNURU1fRlJFRVRZUEU9T04iCgpGcm9tIGMyZjNkZjc1 MGNhZGM1YjBjZGU1OWI5NzlkZDhiYzFkNDEyMGRiN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyMy8xMTNdIGNhbnRhdGE6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9jYW50YXRhL3RlbXBsYXRlIGIvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCmluZGV4 IDRiNDE3ZDgwZDVjMi4uOGE5MGFhYTRjMDdhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2NhbnRhdGEv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnY2FudGF0YScKIHBrZ25hbWU9Y2FudGF0YQogdmVyc2lvbj0y LjUuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMgcXQ1LXRvb2xzIgog bWFrZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBxdDUt eG1scGF0dGVybnMtZGV2ZWwKCkZyb20gY2Q4ZWUxZWI4MjNlYmFlYzg4NzI0NTdmZjczZDQ3YmE2 NzNjMTgzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDI0LzExM10gY2NleHRyYWN0b3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0t LQogc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nj ZXh0cmFjdG9yL3RlbXBsYXRlIGIvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZQppbmRleCA5 YWJjZDgyODUyYjIuLjZlY2NhZDU4ODVhZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9jY2V4dHJhY3Rv ci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlCkBAIC0xLDEyICsx LDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjY2V4dHJhY3RvcicKIHBrZ25hbWU9Y2NleHRy YWN0b3IKIHZlcnNpb249MC45MwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfd3Jrc3Jj PSJsaW51eCIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVu YWJsZS1vY3IgLS1lbmFibGUtaGFyZHN1YngiCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIHBr Zy1jb25maWciCi1tYWtlZGVwZW5kcz0ibGVwdG9uaWNhLWRldmVsIHRlc3NlcmFjdC1vY3ItZGV2 ZWwgZmZtcGVnLWRldmVsIgorbWFrZWRlcGVuZHM9ImxlcHRvbmljYS1kZXZlbCB0ZXNzZXJhY3Qt b2NyLWRldmVsIGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJFeHRyYWN0IHN1YnRpdGxlcyBm cm9tIHZpZGVvIHN0cmVhbXMiCiBtYWludGFpbmVyPSJuZXdibHVlbW9vbiA8YmxhdW1vbGNoQG1h aWxib3gub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCgpGcm9tIDRhNDMyYzdlMjdl NGNlYWVjNGFhNGMzYTJlNGI4MTFhNDc2N2U4NzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyNS8xMTNdIGNocm9tYXByaW50OiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoIHwgNTY5ICsrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvY2hyb21hcHJpbnQv dGVtcGxhdGUgICAgICAgICAgICAgIHwgICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDU3MCBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJv bWFwcmludC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9t YXByaW50L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hl cy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u YTlmZDMwN2EyM2M4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9jaHJvbWFwcmludC9wYXRj aGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw1NjkgQEAKK0Zyb20gOGNjYWQ2OTM3MTc3YjFi OTJlNDBhYjhmNDQ0N2VhMjdiYWMwMDlhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 ID0/VVRGLTg/cT9MdWs9QzM9QTE9QzU9QTE9MjBMYWxpbnNrPUMzPUJEPz0gPGxhbGluc2t5QGdt YWlsLmNvbT4KK0RhdGU6IEZyaSwgNCBOb3YgMjAyMiAyMTo0NzozOCArMDEwMAorU3ViamVjdDog W1BBVENIXSBVc2UgRkZtcGVnIDUueCAoIzEyMCkKKworKiBVc2UgRkZtcGVnIDUuMS4yIGZvciBD SSBidWlsZHMKKworKiBCdWlsZCBvbiBVYnVudHUgMjAuMDQKKworKiBVcGdyYWRlIGNvZGUgdG8g RkZtcGVnIDUueCBBUElzCisKKyogT25seSBzZXQgRkZtcGVnIGluY2x1ZGUgZGlycyBpZiBidWls ZGluZyB0b29scworCisqIE5vIGxvbmdlciBuZWVkZWQKKworKiBVc2UgdWJ1bnR1IDIwLjA0Cist LS0KKyAuZ2l0aHViL3dvcmtmbG93cy9idWlsZC55bWwgICAgICAgICAgICAgICAgICAgfCAgIDYg Ky0KKyBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYg LS0KKyBwYWNrYWdlL2J1aWxkLnNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQg Ky0KKyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oICAgICAgICAgICAgfCAgIDIg LQorIHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaCB8ICA3MiAt LS0tLS0tCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oIHwg IDE4ICstCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaCAgICAgICAgICAgICAgIHwg MTk3ICsrKysrKysrKy0tLS0tLS0tLQorIHRlc3RzL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgNiArCisgOCBmaWxlcyBjaGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygr KSwgMTk5IGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvYXVkaW8vZmZtcGVn X2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMu dHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IGY4ZDZhMzIuLjRkYTI0MDUgMTAwNjQ0CistLS0g YS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC04NCw5ICs4NCw2IEBA IGZpbmRfcGFja2FnZShGRm1wZWcpCisgaWYoRkZNUEVHX0xJQlJBUklFUykKKyAJY21ha2VfcHVz aF9jaGVja19zdGF0ZShSRVNFVCkKKyAJc2V0KENNQUtFX1JFUVVJUkVEX0xJQlJBUklFUyAke0ZG TVBFR19MSUJSQVJJRVN9ICR7Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0gLWxtKQorLQljaGVja19m dW5jdGlvbl9leGlzdHMoYXZfcGFja2V0X3VucmVmIEhBVkVfQVZfUEFDS0VUX1VOUkVGKQorLQlj aGVja19mdW5jdGlvbl9leGlzdHMoYXZfZnJhbWVfYWxsb2MgSEFWRV9BVl9GUkFNRV9BTExPQykK Ky0JY2hlY2tfZnVuY3Rpb25fZXhpc3RzKGF2X2ZyYW1lX2ZyZWUgSEFWRV9BVl9GUkFNRV9GUkVF KQorIAljbWFrZV9wb3BfY2hlY2tfc3RhdGUoKQorIGVuZGlmKCkKKworQEAgLTE2MywxNCArMTYw LDExIEBAIG1lc3NhZ2UoU1RBVFVTICJVc2luZyAke0ZGVF9MSUJ9IGZvciBGRlQgY2FsY3VsYXRp b25zIikKKyBpZihOT1QgQVVESU9fUFJPQ0VTU09SX0xJQikKKyAJaWYoRkZNUEVHX0xJQlNXUkVT QU1QTEVfRk9VTkQpCisgCQlzZXQoQVVESU9fUFJPQ0VTU09SX0xJQiAic3dyZXNhbXBsZSIpCist CWVsc2VpZihGRk1QRUdfTElCQVZSRVNBTVBMRV9GT1VORCkKKy0JCXNldChBVURJT19QUk9DRVNT T1JfTElCICJhdnJlc2FtcGxlIikKKyAJZW5kaWYoKQorIGVuZGlmKCkKKworIGlmKEFVRElPX1BS T0NFU1NPUl9MSUIgU1RSRVFVQUwgInN3cmVzYW1wbGUiKQorIAlpZihGRk1QRUdfTElCU1dSRVNB TVBMRV9GT1VORCkKKy0JCXNldChVU0VfQVZSRVNBTVBMRSBPRkYpCisgCQlzZXQoVVNFX1NXUkVT QU1QTEUgT04pCisgCQlzZXQoQVVESU9fUFJPQ0VTU09SX0xJQlJBUklFUyAke0ZGTVBFR19MSUJT V1JFU0FNUExFX0xJQlJBUklFU30pCisgCQlzZXQoQVVESU9fUFJPQ0VTU09SX0lOQ0xVREVfRElS UyAke0ZGTVBFR19MSUJTV1JFU0FNUExFX0lOQ0xVREVfRElSU30pCitAQCAtMTc4LDE2ICsxNzIs NiBAQCBpZihBVURJT19QUk9DRVNTT1JfTElCIFNUUkVRVUFMICJzd3Jlc2FtcGxlIikKKyAJCW1l c3NhZ2UoRkFUQUxfRVJST1IgIlNlbGVjdGVkICR7QVVESU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1 ZGlvIHByb2Nlc3NpbmcsIGJ1dCB0aGUgbGlicmFyeSBpcyBub3QgZm91bmQiKQorIAllbmRpZigp CisgCW1lc3NhZ2UoU1RBVFVTICJVc2luZyAke0FVRElPX1BST0NFU1NPUl9MSUJ9IGZvciBhdWRp byBjb252ZXJzaW9uIikKKy1lbHNlaWYoQVVESU9fUFJPQ0VTU09SX0xJQiBTVFJFUVVBTCAiYXZy ZXNhbXBsZSIpCistCWlmKEZGTVBFR19MSUJBVlJFU0FNUExFX0ZPVU5EKQorLQkJc2V0KFVTRV9B VlJFU0FNUExFIE9OKQorLQkJc2V0KFVTRV9TV1JFU0FNUExFIE9GRikKKy0JCXNldChBVURJT19Q Uk9DRVNTT1JfTElCUkFSSUVTICR7RkZNUEVHX0xJQkFWUkVTQU1QTEVfTElCUkFSSUVTfSkKKy0J CXNldChBVURJT19QUk9DRVNTT1JfSU5DTFVERV9ESVJTICR7RkZNUEVHX0xJQkFWUkVTQU1QTEVf SU5DTFVERV9ESVJTfSkKKy0JZWxzZSgpCistCQltZXNzYWdlKEZBVEFMX0VSUk9SICJTZWxlY3Rl ZCAke0FVRElPX1BST0NFU1NPUl9MSUJ9IGZvciBhdWRpbyBwcm9jZXNzaW5nLCBidXQgdGhlIGxp YnJhcnkgaXMgbm90IGZvdW5kIikKKy0JZW5kaWYoKQorLQltZXNzYWdlKFNUQVRVUyAiVXNpbmcg JHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3IgYXVkaW8gY29udmVyc2lvbiIpCisgZWxzZSgpCisg CW1lc3NhZ2UoU1RBVFVTICJCdWlsZGluZyB3aXRob3V0IGF1ZGlvIGNvbnZlcnNpb24gc3VwcG9y dCwgcGxlYXNlIGluc3RhbGwgRkZtcGVnIHdpdGggbGlic3dyZXNhbXBsZSIpCisgZW5kaWYoKQor ZGlmZiAtLWdpdCBhL3BhY2thZ2UvYnVpbGQuc2ggYi9wYWNrYWdlL2J1aWxkLnNoCitpbmRleCBk YTYzMWFlLi5iNDFkMzZlIDEwMDc1NQorLS0tIGEvcGFja2FnZS9idWlsZC5zaAorKysrIGIvcGFj a2FnZS9idWlsZC5zaAorQEAgLTcsOCArNyw4IEBAIHNldCAtZXV4CisKKyBCQVNFX0RJUj0kKGNk ICQoZGlybmFtZSAkMCkvLi4gJiYgcHdkKQorCistRkZNUEVHX1ZFUlNJT049NC40LjEKKy1GRk1Q RUdfQlVJTERfVEFHPXY0LjQuMS0xCisrRkZNUEVHX1ZFUlNJT049NS4xLjIKKytGRk1QRUdfQlVJ TERfVEFHPXYke0ZGTVBFR19WRVJTSU9OfS0xCisKKyBUTVBfQlVJTERfRElSPSRCQVNFX0RJUi8k KG1rdGVtcCAtZCBidWlsZC5YWFhYWFhYWCkKKyB0cmFwICdybSAtcmYgJFRNUF9CVUlMRF9ESVIn IEVYSVQKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oIGIv c3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaAoraW5kZXggNzYyOGZjNy4uMzlmNGY2 ZCAxMDA2NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmgKKysrKyBi L3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmgKK0BAIC0xMCw4ICsxMCw2IEBACisK KyAjaWYgZGVmaW5lZChVU0VfU1dSRVNBTVBMRSkKKyAjaW5jbHVkZSAiYXVkaW8vZmZtcGVnX2F1 ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmgiCistI2VsaWYgZGVmaW5lZChVU0VfQVZSRVNBTVBM RSkKKy0jaW5jbHVkZSAiYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgi CisgI2Vsc2UKKyAjZXJyb3IgIm5vIGF1ZGlvIHByb2Nlc3NpbmcgbGlicmFyeSIKKyAjZW5kaWYK K2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxl LmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgKK2RlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggYmQ4NWY5Mi4uMDAwMDAwMAorLS0tIGEvc3JjL2F1 ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oCisrKysgL2Rldi9udWxsCitA QCAtMSw3MiArMCwwIEBACistLy8gQ29weXJpZ2h0IChDKSAyMDE2ICBMdWthcyBMYWxpbnNreQor LS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSwgc2VlIHRoZSBMSUNFTlNFIGZp bGUgZm9yIGRldGFpbHMuCistCistI2lmbmRlZiBDSFJPTUFQUklOVF9BVURJT19GRk1QRUdfQVVE SU9fUFJPQ0VTU09SX0FWUkVTQU1QTEVfSF8KKy0jZGVmaW5lIENIUk9NQVBSSU5UX0FVRElPX0ZG TVBFR19BVURJT19QUk9DRVNTT1JfQVZSRVNBTVBMRV9IXworLQorLWV4dGVybiAiQyIgeworLSNp bmNsdWRlIDxsaWJhdnJlc2FtcGxlL2F2cmVzYW1wbGUuaD4KKy19CistCistbmFtZXNwYWNlIGNo cm9tYXByaW50IHsKKy0KKy1jbGFzcyBGRm1wZWdBdWRpb1Byb2Nlc3NvciB7CistcHVibGljOgor LQlGRm1wZWdBdWRpb1Byb2Nlc3NvcigpIHsKKy0JCW1fcmVzYW1wbGVfY3R4ID0gYXZyZXNhbXBs ZV9hbGxvY19jb250ZXh0KCk7CistCX0KKy0KKy0JfkZGbXBlZ0F1ZGlvUHJvY2Vzc29yKCkgewor LQkJYXZyZXNhbXBsZV9mcmVlKCZtX3Jlc2FtcGxlX2N0eCk7CistCX0KKy0KKy0Jdm9pZCBTZXRD b21wYXRpYmxlTW9kZSgpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAiZmls dGVyX3NpemUiLCAxNiwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgInBo YXNlX3NoaWZ0IiwgOCwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImxp bmVhcl9pbnRlcnAiLCAxLCAwKTsKKy0JCWF2X29wdF9zZXRfZG91YmxlKG1fcmVzYW1wbGVfY3R4 LCAiY3V0b2ZmIiwgMC44LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldElucHV0Q2hhbm5lbExheW91 dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxl X2N0eCwgImluX2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5lbF9sYXlvdXQsIDApOworLQl9CistCist CXZvaWQgU2V0SW5wdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkg eworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJpbl9zYW1wbGVfZm10Iiwgc2Ft cGxlX2Zvcm1hdCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRJbnB1dFNhbXBsZVJhdGUoaW50IHNh bXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImluX3NhbXBs ZV9yYXRlIiwgc2FtcGxlX3JhdGUsIDApOworLQl9CistCistCXZvaWQgU2V0T3V0cHV0Q2hhbm5l bExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jl c2FtcGxlX2N0eCwgIm91dF9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0J fQorLQorLQl2b2lkIFNldE91dHB1dFNhbXBsZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBzYW1wbGVf Zm9ybWF0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgIm91dF9zYW1wbGVf Zm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRPdXRwdXRTYW1wbGVS YXRlKGludCBzYW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgs ICJvdXRfc2FtcGxlX2ZtdCIsIHNhbXBsZV9yYXRlLCAwKTsKKy0JfQorLQorLQlpbnQgSW5pdCgp IHsKKy0JCXJldHVybiBhdnJlc2FtcGxlX29wZW4obV9yZXNhbXBsZV9jdHgpOworLQl9CistCist CWludCBDb252ZXJ0KHVpbnQ4X3QgKipvdXQsIGludCBvdXRfY291bnQsIGNvbnN0IHVpbnQ4X3Qg KippbiwgaW50IGluX2NvdW50KSB7CistCQlyZXR1cm4gYXZyZXNhbXBsZV9jb252ZXJ0KG1fcmVz YW1wbGVfY3R4LCBvdXQsIDAsIG91dF9jb3VudCwgKHVpbnQ4X3QgKiopIGluLCAwLCBpbl9jb3Vu dCk7CistCX0KKy0KKy0JaW50IEZsdXNoKHVpbnQ4X3QgKipvdXQsIGludCBvdXRfY291bnQpIHsK Ky0JCXJldHVybiBhdnJlc2FtcGxlX3JlYWQobV9yZXNhbXBsZV9jdHgsIG91dCwgb3V0X2NvdW50 KTsKKy0JfQorLQorLXByaXZhdGU6CistCUFWQXVkaW9SZXNhbXBsZUNvbnRleHQgKm1fcmVzYW1w bGVfY3R4ID0gbnVsbHB0cjsKKy19OworLQorLX07IC8vIG5hbWVzcGFjZSBjaHJvbWFwcmludAor LQorLSNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29y X3N3cmVzYW1wbGUuaCBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1w bGUuaAoraW5kZXggYjg2MjY2Yi4uYjFkNGJlYSAxMDA2NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1w ZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaAorKysrIGIvc3JjL2F1ZGlvL2ZmbXBlZ19h dWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oCitAQCAtMjgsMzAgKzI4LDI4IEBAIHB1YmxpYzoK KyAJCWF2X29wdF9zZXRfZG91YmxlKG1fc3dyX2N0eCwgImN1dG9mZiIsIDAuOCwgMCk7CisgCX0K KworLQl2b2lkIFNldElucHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7 CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpY2wiLCBjaGFubmVsX2xheW91dCwgMCk7 CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpY2giLCBhdl9nZXRfY2hhbm5lbF9sYXlv dXRfbmJfY2hhbm5lbHMoY2hhbm5lbF9sYXlvdXQpLCAwKTsKKysJdm9pZCBTZXRJbnB1dENoYW5u ZWxMYXlvdXQoQVZDaGFubmVsTGF5b3V0ICpjaGFubmVsX2xheW91dCkgeworKwkJYXZfb3B0X3Nl dF9pbnQobV9zd3JfY3R4LCAiaW5fY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xheW91dC0+dS5t YXNrLCAwKTsKKyAJfQorCisgCXZvaWQgU2V0SW5wdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3Jt YXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaXNmIiwg c2FtcGxlX2Zvcm1hdCwgMCk7CisrCQlhdl9vcHRfc2V0X3NhbXBsZV9mbXQobV9zd3JfY3R4LCAi aW5fc2FtcGxlX2ZtdCIsIHNhbXBsZV9mb3JtYXQsIDApOworIAl9CisKKyAJdm9pZCBTZXRJbnB1 dFNhbXBsZVJhdGUoaW50IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9j dHgsICJpc3IiLCBzYW1wbGVfcmF0ZSwgMCk7CisrCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgs ICJpbl9zYW1wbGVfcmF0ZSIsIHNhbXBsZV9yYXRlLCAwKTsKKyAJfQorCistCXZvaWQgU2V0T3V0 cHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0 X2ludChtX3N3cl9jdHgsICJvY2wiLCBjaGFubmVsX2xheW91dCwgMCk7CistCQlhdl9vcHRfc2V0 X2ludChtX3N3cl9jdHgsICJvY2giLCBhdl9nZXRfY2hhbm5lbF9sYXlvdXRfbmJfY2hhbm5lbHMo Y2hhbm5lbF9sYXlvdXQpLCAwKTsKKysJdm9pZCBTZXRPdXRwdXRDaGFubmVsTGF5b3V0KEFWQ2hh bm5lbExheW91dCAqY2hhbm5lbF9sYXlvdXQpIHsKKysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0 eCwgIm91dF9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LT51Lm1hc2ssIDApOworIAl9 CisKKyAJdm9pZCBTZXRPdXRwdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2Zv cm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib3NmIiwgc2FtcGxlX2Zvcm1h dCwgMCk7CisrCQlhdl9vcHRfc2V0X3NhbXBsZV9mbXQobV9zd3JfY3R4LCAib3V0X3NhbXBsZV9m bXQiLCBzYW1wbGVfZm9ybWF0LCAwKTsKKyAJfQorCisgCXZvaWQgU2V0T3V0cHV0U2FtcGxlUmF0 ZShpbnQgc2FtcGxlX3JhdGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm9zciIs IHNhbXBsZV9yYXRlLCAwKTsKKysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm91dF9zYW1w bGVfcmF0ZSIsIHNhbXBsZV9yYXRlLCAwKTsKKyAJfQorCisgCWludCBJbml0KCkgeworZGlmZiAt LWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmggYi9zcmMvYXVkaW8vZmZtcGVn X2F1ZGlvX3JlYWRlci5oCitpbmRleCA1NTUwMTY0Li4xYzZiMzQ2IDEwMDY0NAorLS0tIGEvc3Jj L2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaAorKysrIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRp b19yZWFkZXIuaAorQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgorIAlib29sIFJlYWQoY29uc3Qg aW50MTZfdCAqKmRhdGEsIHNpemVfdCAqc2l6ZSk7CisKKyAJYm9vbCBJc09wZW4oKSBjb25zdCB7 IHJldHVybiBtX29wZW5lZDsgfQorLQlib29sIElzRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBt X2ZpbmlzaGVkICYmICFtX2dvdF9mcmFtZTsgfQorKwlib29sIElzRmluaXNoZWQoKSBjb25zdCB7 IHJldHVybiAhbV9oYXNfbW9yZV9wYWNrZXRzICYmICFtX2hhc19tb3JlX2ZyYW1lczsgfQorCisg CXN0ZDo6c3RyaW5nIEdldEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQorIAlpbnQg R2V0RXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcl9jb2RlOyB9CitAQCAtNzQsMjAg Kzc0LDE5IEBAIHByaXZhdGU6CisgCXVpbnQ4X3QgKm1fY29udmVydF9idWZmZXJbMV0gPSB7IG51 bGxwdHIgfTsKKyAJaW50IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcyA9IDA7CisKKy0JQVZJ bnB1dEZvcm1hdCAqbV9pbnB1dF9mbXQgPSBudWxscHRyOworKwljb25zdCBBVklucHV0Rm9ybWF0 ICptX2lucHV0X2ZtdCA9IG51bGxwdHI7CisgCUFWRGljdGlvbmFyeSAqbV9pbnB1dF9vcHRzID0g bnVsbHB0cjsKKworIAlBVkZvcm1hdENvbnRleHQgKm1fZm9ybWF0X2N0eCA9IG51bGxwdHI7Cisg CUFWQ29kZWNDb250ZXh0ICptX2NvZGVjX2N0eCA9IG51bGxwdHI7CistCUFWRnJhbWUgKm1fZnJh bWUgPSBudWxscHRyOworIAlpbnQgbV9zdHJlYW1faW5kZXggPSAtMTsKKyAJc3RkOjpzdHJpbmcg bV9lcnJvcjsKKyAJaW50IG1fZXJyb3JfY29kZSA9IDA7CistCWJvb2wgbV9maW5pc2hlZCA9IGZh bHNlOworIAlib29sIG1fb3BlbmVkID0gZmFsc2U7CistCWludCBtX2dvdF9mcmFtZSA9IDA7Cist CUFWUGFja2V0IG1fcGFja2V0OworLQlBVlBhY2tldCBtX3BhY2tldDA7CisrCWJvb2wgbV9oYXNf bW9yZV9wYWNrZXRzID0gdHJ1ZTsKKysJYm9vbCBtX2hhc19tb3JlX2ZyYW1lcyA9IHRydWU7Cisr CUFWUGFja2V0ICptX3BhY2tldCA9IG51bGxwdHI7CisrCUFWRnJhbWUgKm1fZnJhbWUgPSBudWxs cHRyOworCisgCWludCBtX291dHB1dF9zYW1wbGVfcmF0ZSA9IDA7CisgCWludCBtX291dHB1dF9j aGFubmVscyA9IDA7CitAQCAtOTgsMTkgKzk3LDEyIEBAIHByaXZhdGU6CisKKyBpbmxpbmUgRkZt cGVnQXVkaW9SZWFkZXI6OkZGbXBlZ0F1ZGlvUmVhZGVyKCkgeworIAlhdl9sb2dfc2V0X2xldmVs KEFWX0xPR19RVUlFVCk7CistCistCWF2X2luaXRfcGFja2V0KCZtX3BhY2tldCk7CistCW1fcGFj a2V0LmRhdGEgPSBudWxscHRyOworLQltX3BhY2tldC5zaXplID0gMDsKKy0KKy0JbV9wYWNrZXQw ID0gbV9wYWNrZXQ7CisgfQorCisgaW5saW5lIEZGbXBlZ0F1ZGlvUmVhZGVyOjp+RkZtcGVnQXVk aW9SZWFkZXIoKSB7CisgCUNsb3NlKCk7CisgCWF2X2RpY3RfZnJlZSgmbV9pbnB1dF9vcHRzKTsK KyAJYXZfZnJlZXAoJm1fY29udmVydF9idWZmZXJbMF0pOworLQlhdl9wYWNrZXRfdW5yZWYoJm1f cGFja2V0MCk7CisgfQorCisgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6OlNldElucHV0 Rm9ybWF0KGNvbnN0IGNoYXIgKm5hbWUpIHsKK0BAIC0xMzUsMTEgKzEyNywxMCBAQCBpbmxpbmUg Ym9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1l KSB7CisKKyAJQ2xvc2UoKTsKKworLSAgICBhdl9pbml0X3BhY2tldCgmbV9wYWNrZXQpOworLQlt X3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JbV9wYWNrZXQuc2l6ZSA9IDA7CistCistCW1fcGFj a2V0MCA9IG1fcGFja2V0OworKwltX3BhY2tldCA9IGF2X3BhY2tldF9hbGxvYygpOworKwlpZiAo IW1fcGFja2V0KSB7CisrCQlyZXR1cm4gZmFsc2U7CisrCX0KKworIAlyZXQgPSBhdmZvcm1hdF9v cGVuX2lucHV0KCZtX2Zvcm1hdF9jdHgsIGZpbGVfbmFtZS5jX3N0cigpLCBtX2lucHV0X2ZtdCwg Jm1faW5wdXRfb3B0cyk7CisgCWlmIChyZXQgPCAwKSB7CitAQCAtMTUzLDI2ICsxNDQsMzEgQEAg aW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZp bGVfbmFtZSkgeworIAkJcmV0dXJuIGZhbHNlOworIAl9CisKKy0JQVZDb2RlYyAqY29kZWM7Cisr CWNvbnN0IEFWQ29kZWMgKmNvZGVjOworIAlyZXQgPSBhdl9maW5kX2Jlc3Rfc3RyZWFtKG1fZm9y bWF0X2N0eCwgQVZNRURJQV9UWVBFX0FVRElPLCAtMSwgLTEsICZjb2RlYywgMCk7CisgCWlmIChy ZXQgPCAwKSB7CisgCQlTZXRFcnJvcigiQ291bGQgbm90IGZpbmQgYW55IGF1ZGlvIHN0cmVhbSBp biB0aGUgZmlsZSIsIHJldCk7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKyAJbV9zdHJlYW1faW5k ZXggPSByZXQ7CisrCWF1dG8gc3RyZWFtID0gbV9mb3JtYXRfY3R4LT5zdHJlYW1zW21fc3RyZWFt X2luZGV4XTsKKworLQltX2NvZGVjX2N0eCA9IG1fZm9ybWF0X2N0eC0+c3RyZWFtc1ttX3N0cmVh bV9pbmRleF0tPmNvZGVjOworKwltX2NvZGVjX2N0eCA9IGF2Y29kZWNfYWxsb2NfY29udGV4dDMo Y29kZWMpOworIAltX2NvZGVjX2N0eC0+cmVxdWVzdF9zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZN VF9TMTY7CisKKysJcmV0ID0gYXZjb2RlY19wYXJhbWV0ZXJzX3RvX2NvbnRleHQobV9jb2RlY19j dHgsIHN0cmVhbS0+Y29kZWNwYXIpOworKwlpZiAocmV0IDwgMCkgeworKwkJU2V0RXJyb3IoIkNv dWxkIG5vdCBjb3B5IHRoZSBzdHJlYW0gcGFyYW1ldGVycyIsIHJldCk7CisrCQlyZXR1cm4gZmFs c2U7CisrCX0KKysKKyAJcmV0ID0gYXZjb2RlY19vcGVuMihtX2NvZGVjX2N0eCwgY29kZWMsIG51 bGxwdHIpOworIAlpZiAocmV0IDwgMCkgeworIAkJU2V0RXJyb3IoIkNvdWxkIG5vdCBvcGVuIHRo ZSBjb2RlYyIsIHJldCk7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKworLQlpZiAoIW1fY29kZWNf Y3R4LT5jaGFubmVsX2xheW91dCkgeworLQkJbV9jb2RlY19jdHgtPmNoYW5uZWxfbGF5b3V0ID0g YXZfZ2V0X2RlZmF1bHRfY2hhbm5lbF9sYXlvdXQobV9jb2RlY19jdHgtPmNoYW5uZWxzKTsKKy0J fQorKwlhdl9kdW1wX2Zvcm1hdChtX2Zvcm1hdF9jdHgsIDAsICJmb28iLCAwKTsKKworIAltX2Zy YW1lID0gYXZfZnJhbWVfYWxsb2MoKTsKKyAJaWYgKCFtX2ZyYW1lKSB7CitAQCAtMTgzLDE5ICsx NzksMjMgQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpz dHJpbmcgJmZpbGVfbmFtZSkgeworIAkJbV9vdXRwdXRfc2FtcGxlX3JhdGUgPSBtX2NvZGVjX2N0 eC0+c2FtcGxlX3JhdGU7CisgCX0KKworLQlpZiAoIW1fb3V0cHV0X2NoYW5uZWxzKSB7CistCQlt X291dHB1dF9jaGFubmVscyA9IG1fY29kZWNfY3R4LT5jaGFubmVsczsKKysJQVZDaGFubmVsTGF5 b3V0IG91dHB1dF9jaGFubmVsX2xheW91dDsKKysJaWYgKG1fb3V0cHV0X2NoYW5uZWxzKSB7Cisr CQlhdl9jaGFubmVsX2xheW91dF9kZWZhdWx0KCZvdXRwdXRfY2hhbm5lbF9sYXlvdXQsIG1fb3V0 cHV0X2NoYW5uZWxzKTsKKysJfSBlbHNlIHsKKysJCW1fb3V0cHV0X2NoYW5uZWxzID0gbV9jb2Rl Y19jdHgtPmNoX2xheW91dC5uYl9jaGFubmVsczsKKysJCWF2X2NoYW5uZWxfbGF5b3V0X2RlZmF1 bHQoJm91dHB1dF9jaGFubmVsX2xheW91dCwgbV9vdXRwdXRfY2hhbm5lbHMpOworIAl9CisKKy0J aWYgKG1fY29kZWNfY3R4LT5zYW1wbGVfZm10ICE9IEFWX1NBTVBMRV9GTVRfUzE2IHx8IG1fY29k ZWNfY3R4LT5jaGFubmVscyAhPSBtX291dHB1dF9jaGFubmVscyB8fCBtX2NvZGVjX2N0eC0+c2Ft cGxlX3JhdGUgIT0gbV9vdXRwdXRfc2FtcGxlX3JhdGUpIHsKKysJaWYgKG1fY29kZWNfY3R4LT5z YW1wbGVfZm10ICE9IEFWX1NBTVBMRV9GTVRfUzE2IHx8IG1fY29kZWNfY3R4LT5jaF9sYXlvdXQu bmJfY2hhbm5lbHMgIT0gbV9vdXRwdXRfY2hhbm5lbHMgfHwgbV9jb2RlY19jdHgtPnNhbXBsZV9y YXRlICE9IG1fb3V0cHV0X3NhbXBsZV9yYXRlKSB7CisgCQltX2NvbnZlcnRlci5yZXNldChuZXcg RkZtcGVnQXVkaW9Qcm9jZXNzb3IoKSk7CisgCQltX2NvbnZlcnRlci0+U2V0Q29tcGF0aWJsZU1v ZGUoKTsKKyAJCW1fY29udmVydGVyLT5TZXRJbnB1dFNhbXBsZUZvcm1hdChtX2NvZGVjX2N0eC0+ c2FtcGxlX2ZtdCk7CisgCQltX2NvbnZlcnRlci0+U2V0SW5wdXRTYW1wbGVSYXRlKG1fY29kZWNf Y3R4LT5zYW1wbGVfcmF0ZSk7CistCQltX2NvbnZlcnRlci0+U2V0SW5wdXRDaGFubmVsTGF5b3V0 KG1fY29kZWNfY3R4LT5jaGFubmVsX2xheW91dCk7CisrCQltX2NvbnZlcnRlci0+U2V0SW5wdXRD aGFubmVsTGF5b3V0KCYobV9jb2RlY19jdHgtPmNoX2xheW91dCkpOworIAkJbV9jb252ZXJ0ZXIt PlNldE91dHB1dFNhbXBsZUZvcm1hdChBVl9TQU1QTEVfRk1UX1MxNik7CisgCQltX2NvbnZlcnRl ci0+U2V0T3V0cHV0U2FtcGxlUmF0ZShtX291dHB1dF9zYW1wbGVfcmF0ZSk7CistCQltX2NvbnZl cnRlci0+U2V0T3V0cHV0Q2hhbm5lbExheW91dChhdl9nZXRfZGVmYXVsdF9jaGFubmVsX2xheW91 dChtX291dHB1dF9jaGFubmVscykpOworKwkJbV9jb252ZXJ0ZXItPlNldE91dHB1dENoYW5uZWxM YXlvdXQoJm91dHB1dF9jaGFubmVsX2xheW91dCk7CisgCQlhdXRvIHJldCA9IG1fY29udmVydGVy LT5Jbml0KCk7CisgCQlpZiAocmV0ICE9IDApIHsKKyAJCQlTZXRFcnJvcigiQ291bGQgbm90IGNy ZWF0ZSBhbiBhdWRpbyBjb252ZXJ0ZXIgaW5zdGFuY2UiLCByZXQpOworQEAgLTIwMywxMCArMjAz LDExIEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3Ry aW5nICZmaWxlX25hbWUpIHsKKyAJCX0KKyAJfQorCisrCWF2X2NoYW5uZWxfbGF5b3V0X3VuaW5p dCgmb3V0cHV0X2NoYW5uZWxfbGF5b3V0KTsKKysKKyAJbV9vcGVuZWQgPSB0cnVlOworLQltX2Zp bmlzaGVkID0gZmFsc2U7CistCW1fZ290X2ZyYW1lID0gMDsKKy0JbV9uYl9wYWNrZXRzID0gMDsK KysJbV9oYXNfbW9yZV9wYWNrZXRzID0gdHJ1ZTsKKysJbV9oYXNfbW9yZV9mcmFtZXMgPSB0cnVl OworIAltX2RlY29kZV9lcnJvciA9IDA7CisKKyAJcmV0dXJuIHRydWU7CitAQCAtMjE0LDYgKzIx NSw3IEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3Ry aW5nICZmaWxlX25hbWUpIHsKKworIGlubGluZSB2b2lkIEZGbXBlZ0F1ZGlvUmVhZGVyOjpDbG9z ZSgpIHsKKyAJYXZfZnJhbWVfZnJlZSgmbV9mcmFtZSk7CisrCWF2X3BhY2tldF9mcmVlKCZtX3Bh Y2tldCk7CisKKyAJbV9zdHJlYW1faW5kZXggPSAtMTsKKworQEAgLTI1Miw5MSArMjU0LDk4IEBA IGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpSZWFkKGNvbnN0IGludDE2X3QgKipkYXRh LCBzaXplX3QgKnNpemUpIHsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorCisrCSpkYXRhID0gbnVs bHB0cjsKKysJKnNpemUgPSAwOworKworIAlpbnQgcmV0OworKwlib29sIG5lZWRzX3BhY2tldCA9 IGZhbHNlOworIAl3aGlsZSAodHJ1ZSkgeworLQkJd2hpbGUgKG1fcGFja2V0LnNpemUgPD0gMCkg eworLQkJCWF2X3BhY2tldF91bnJlZigmbV9wYWNrZXQwKTsKKy0JCQlhdl9pbml0X3BhY2tldCgm bV9wYWNrZXQpOworLQkJCW1fcGFja2V0LmRhdGEgPSBudWxscHRyOworLQkJCW1fcGFja2V0LnNp emUgPSAwOworLQkJCXJldCA9IGF2X3JlYWRfZnJhbWUobV9mb3JtYXRfY3R4LCAmbV9wYWNrZXQp OworKwkJd2hpbGUgKG5lZWRzX3BhY2tldCAmJiBtX3BhY2tldC0+c2l6ZSA9PSAwKSB7CisrCQkJ cmV0ID0gYXZfcmVhZF9mcmFtZShtX2Zvcm1hdF9jdHgsIG1fcGFja2V0KTsKKyAJCQlpZiAocmV0 IDwgMCkgeworIAkJCQlpZiAocmV0ID09IEFWRVJST1JfRU9GKSB7CistCQkJCQltX2ZpbmlzaGVk ID0gdHJ1ZTsKKysJCQkJCW5lZWRzX3BhY2tldCA9IGZhbHNlOworKwkJCQkJbV9oYXNfbW9yZV9w YWNrZXRzID0gZmFsc2U7CisgCQkJCQlicmVhazsKKy0JCQkJfSBlbHNlIHsKKysJCQkJfQorKwkJ CQlTZXRFcnJvcigiRXJyb3IgcmVhZGluZyBmcm9tIHRoZSBhdWRpbyBzb3VyY2UiLCByZXQpOwor KwkJCQlyZXR1cm4gZmFsc2U7CisrCQkJfQorKwkJCWlmIChtX3BhY2tldC0+c3RyZWFtX2luZGV4 ID09IG1fc3RyZWFtX2luZGV4KSB7CisrCQkJCW5lZWRzX3BhY2tldCA9IGZhbHNlOworKwkJCX0g ZWxzZSB7CisrCQkJCWF2X3BhY2tldF91bnJlZihtX3BhY2tldCk7CisrCQkJfQorKwkJfQorKwor KwkJaWYgKG1fcGFja2V0LT5zaXplICE9IDApIHsKKysJCQlyZXQgPSBhdmNvZGVjX3NlbmRfcGFj a2V0KG1fY29kZWNfY3R4LCBtX3BhY2tldCk7CisrCQkJaWYgKHJldCA8IDApIHsKKysJCQkJaWYg KHJldCAhPSBBVkVSUk9SKEVBR0FJTikpIHsKKyAJCQkJCVNldEVycm9yKCJFcnJvciByZWFkaW5n IGZyb20gdGhlIGF1ZGlvIHNvdXJjZSIsIHJldCk7CisgCQkJCQlyZXR1cm4gZmFsc2U7CisgCQkJ CX0KKy0JCQl9CistCQkJbV9wYWNrZXQwID0gbV9wYWNrZXQ7CistCQkJaWYgKG1fcGFja2V0LnN0 cmVhbV9pbmRleCAhPSBtX3N0cmVhbV9pbmRleCkgeworLQkJCQltX3BhY2tldC5kYXRhID0gbnVs bHB0cjsKKy0JCQkJbV9wYWNrZXQuc2l6ZSA9IDA7CisgCQkJfSBlbHNlIHsKKy0JCQkJbV9uYl9w YWNrZXRzKys7CisrCQkJCWF2X3BhY2tldF91bnJlZihtX3BhY2tldCk7CisgCQkJfQorIAkJfQor CistCQlyZXQgPSBhdmNvZGVjX2RlY29kZV9hdWRpbzQobV9jb2RlY19jdHgsIG1fZnJhbWUsICZt X2dvdF9mcmFtZSwgJm1fcGFja2V0KTsKKysJCXJldCA9IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZSht X2NvZGVjX2N0eCwgbV9mcmFtZSk7CisgCQlpZiAocmV0IDwgMCkgeworLQkJCWlmIChtX2RlY29k ZV9lcnJvcikgeworLQkJCQlTZXRFcnJvcigiRXJyb3IgZGVjb2RpbmcgYXVkaW8gZnJhbWUiLCBt X2RlY29kZV9lcnJvcik7CistCQkJCXJldHVybiBmYWxzZTsKKysJCQlpZiAocmV0ID09IEFWRVJS T1JfRU9GKSB7CisrCQkJCW1faGFzX21vcmVfZnJhbWVzID0gZmFsc2U7CisrCQkJfSBlbHNlIGlm IChyZXQgPT0gQVZFUlJPUihFQUdBSU4pKSB7CisrCQkJCWlmIChtX2hhc19tb3JlX3BhY2tldHMp IHsKKysJCQkJCW5lZWRzX3BhY2tldCA9IHRydWU7CisrCQkJCQljb250aW51ZTsKKysJCQkJfSBl bHNlIHsKKysJCQkJCW1faGFzX21vcmVfZnJhbWVzID0gZmFsc2U7CisrCQkJCX0KKyAJCQl9Cist CQkJbV9kZWNvZGVfZXJyb3IgPSByZXQ7CistCQkJbV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7Cist CQkJbV9wYWNrZXQuc2l6ZSA9IDA7CistCQkJY29udGludWU7CisrCQkJU2V0RXJyb3IoIkVycm9y IGRlY29kaW5nIHRoZSBhdWRpbyBzb3VyY2UiLCByZXQpOworKwkJCXJldHVybiBmYWxzZTsKKyAJ CX0KKworLQkJYnJlYWs7CistCX0KKy0KKy0JbV9kZWNvZGVfZXJyb3IgPSAwOworLQorLQljb25z dCBpbnQgZGVjb2RlZCA9IHN0ZDo6bWluKHJldCwgbV9wYWNrZXQuc2l6ZSk7CistCW1fcGFja2V0 LmRhdGEgKz0gZGVjb2RlZDsKKy0JbV9wYWNrZXQuc2l6ZSAtPSBkZWNvZGVkOworLQorLQlpZiAo bV9nb3RfZnJhbWUpIHsKKy0JCWlmIChtX2NvbnZlcnRlcikgeworLQkJCWlmIChtX2ZyYW1lLT5u Yl9zYW1wbGVzID4gbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKSB7CistCQkJCWludCBsaW5z aXplOworLQkJCQlhdl9mcmVlcCgmbV9jb252ZXJ0X2J1ZmZlclswXSk7CistCQkJCW1fY29udmVy dF9idWZmZXJfbmJfc2FtcGxlcyA9IHN0ZDo6bWF4KDEwMjQgKiA4LCBtX2ZyYW1lLT5uYl9zYW1w bGVzKTsKKy0JCQkJcmV0ID0gYXZfc2FtcGxlc19hbGxvYyhtX2NvbnZlcnRfYnVmZmVyLCAmbGlu c2l6ZSwgbV9jb2RlY19jdHgtPmNoYW5uZWxzLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMs IEFWX1NBTVBMRV9GTVRfUzE2LCAxKTsKKy0JCQkJaWYgKHJldCA8IDApIHsKKy0JCQkJCVNldEVy cm9yKCJDb3VsZG4ndCBhbGxvY2F0ZSBhdWRpbyBjb252ZXJ0ZXIgYnVmZmVyIiwgcmV0KTsKKysJ CWlmIChtX2ZyYW1lLT5uYl9zYW1wbGVzID4gMCkgeworKwkJCWlmIChtX2NvbnZlcnRlcikgewor KwkJCQlpZiAobV9mcmFtZS0+bmJfc2FtcGxlcyA+IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxl cykgeworKwkJCQkJaW50IGxpbnNpemU7CisrCQkJCQlhdl9mcmVlcCgmbV9jb252ZXJ0X2J1ZmZl clswXSk7CisrCQkJCQltX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMgPSBzdGQ6Om1heCgxMDI0 ICogOCwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7CisrCQkJCQlyZXQgPSBhdl9zYW1wbGVzX2FsbG9j KG1fY29udmVydF9idWZmZXIsICZsaW5zaXplLCBtX2NvZGVjX2N0eC0+Y2hfbGF5b3V0Lm5iX2No YW5uZWxzLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMsIEFWX1NBTVBMRV9GTVRfUzE2LCAx KTsKKysJCQkJCWlmIChyZXQgPCAwKSB7CisrCQkJCQkJU2V0RXJyb3IoIkNvdWxkbid0IGFsbG9j YXRlIGF1ZGlvIGNvbnZlcnRlciBidWZmZXIiLCByZXQpOworKwkJCQkJCXJldHVybiBmYWxzZTsK KysJCQkJCX0KKysJCQkJfQorKwkJCQlhdXRvIG5iX3NhbXBsZXMgPSBtX2NvbnZlcnRlci0+Q29u dmVydChtX2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMsIChjb25z dCB1aW50OF90ICoqKSBtX2ZyYW1lLT5kYXRhLCBtX2ZyYW1lLT5uYl9zYW1wbGVzKTsKKysJCQkJ aWYgKG5iX3NhbXBsZXMgPCAwKSB7CisrCQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgY29udmVydCBh dWRpbyIsIHJldCk7CisgCQkJCQlyZXR1cm4gZmFsc2U7CisgCQkJCX0KKy0JCQl9CistCQkJYXV0 byBuYl9zYW1wbGVzID0gbV9jb252ZXJ0ZXItPkNvbnZlcnQobV9jb252ZXJ0X2J1ZmZlciwgbV9j b252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzLCAoY29uc3QgdWludDhfdCAqKikgbV9mcmFtZS0+ZGF0 YSwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7CistCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7CistCQkJ CVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlvIiwgcmV0KTsKKy0JCQkJcmV0dXJuIGZh bHNlOworLQkJCX0KKy0JCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fY29udmVydF9idWZm ZXJbMF07CistCQkJKnNpemUgPSBuYl9zYW1wbGVzOworLQkJfSBlbHNlIHsKKy0JCQkqZGF0YSA9 IChjb25zdCBpbnQxNl90ICopIG1fZnJhbWUtPmRhdGFbMF07CistCQkJKnNpemUgPSBtX2ZyYW1l LT5uYl9zYW1wbGVzOworLQkJfQorLQl9IGVsc2UgeworLQkJaWYgKG1fZmluaXNoZWQgJiYgbV9j b252ZXJ0ZXIpIHsKKy0JCQlhdXRvIG5iX3NhbXBsZXMgPSBtX2NvbnZlcnRlci0+Rmx1c2gobV9j b252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKTsKKy0JCQlpZiAobmJf c2FtcGxlcyA8IDApIHsKKy0JCQkJU2V0RXJyb3IoIkNvdWxkbid0IGNvbnZlcnQgYXVkaW8iLCBy ZXQpOworLQkJCQlyZXR1cm4gZmFsc2U7CistCQkJfSBlbHNlIGlmIChuYl9zYW1wbGVzID4gMCkg eworLQkJCQltX2dvdF9mcmFtZSA9IDE7CisgCQkJCSpkYXRhID0gKGNvbnN0IGludDE2X3QgKikg bV9jb252ZXJ0X2J1ZmZlclswXTsKKyAJCQkJKnNpemUgPSBuYl9zYW1wbGVzOworKwkJCX0gZWxz ZSB7CisrCQkJCSpkYXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9mcmFtZS0+ZGF0YVswXTsKKysJ CQkJKnNpemUgPSBtX2ZyYW1lLT5uYl9zYW1wbGVzOworKwkJCX0KKysJCX0gZWxzZSB7CisrCQkJ aWYgKG1fY29udmVydGVyKSB7CisrCQkJCWlmIChJc0ZpbmlzaGVkKCkpIHsKKysJCQkJCWF1dG8g bmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5GbHVzaChtX2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZl cnRfYnVmZmVyX25iX3NhbXBsZXMpOworKwkJCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7CisrCQkJ CQkJU2V0RXJyb3IoIkNvdWxkbid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOworKwkJCQkJCXJldHVy biBmYWxzZTsKKysJCQkJCX0gZWxzZSBpZiAobmJfc2FtcGxlcyA+IDApIHsKKysJCQkJCQkqZGF0 YSA9IChjb25zdCBpbnQxNl90ICopIG1fY29udmVydF9idWZmZXJbMF07CisrCQkJCQkJKnNpemUg PSBuYl9zYW1wbGVzOworKwkJCQkJfQorKwkJCQl9CisgCQkJfQorIAkJfQorLQl9CisKKy0JcmV0 dXJuIHRydWU7CisrCQlyZXR1cm4gdHJ1ZTsKKysJfQorIH0KKworIGlubGluZSB2b2lkIEZGbXBl Z0F1ZGlvUmVhZGVyOjpTZXRFcnJvcihjb25zdCBjaGFyICptZXNzYWdlLCBpbnQgZXJybnVtKSB7 CitkaWZmIC0tZ2l0IGEvdGVzdHMvQ01ha2VMaXN0cy50eHQgYi90ZXN0cy9DTWFrZUxpc3RzLnR4 dAoraW5kZXggYTJiNTE3Yi4uMTIzZTY0MyAxMDA2NDQKKy0tLSBhL3Rlc3RzL0NNYWtlTGlzdHMu dHh0CisrKysgYi90ZXN0cy9DTWFrZUxpc3RzLnR4dAorQEAgLTM4LDYgKzM4LDEyIEBAIHNldChT UkNTCisKKyBpZihCVUlMRF9UT09MUykKKyAJc2V0KFNSQ1MgJHtTUkNTfSAuLi9zcmMvYXVkaW8v ZmZtcGVnX2F1ZGlvX3JlYWRlcl90ZXN0LmNwcCkKKysgICAgaW5jbHVkZV9kaXJlY3RvcmllcygK KysgICAgICAgICR7RkZNUEVHX0xJQkFWRk9STUFUX0lOQ0xVREVfRElSU30KKysgICAgICAgICR7 RkZNUEVHX0xJQkFWQ09ERUNfSU5DTFVERV9ESVJTfQorKyAgICAgICAgJHtGRk1QRUdfTElCQVZV VElMX0lOQ0xVREVfRElSU30KKysgICAgICAgICR7QVVESU9fUFJPQ0VTU09SX0lOQ0xVREVfRElS U30KKysgICAgKQorIAlsaW5rX2xpYnJhcmllcyhmcGNhbGNfbGlicykKKyBlbmRpZigpCisKKy0t IAorMi4zOC4xCisKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWFwcmludC90ZW1wbGF0ZSBi L3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUKaW5kZXggN2VmNzgzODk0OWYzLi4xZjdiYmM3 MGEyMmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9jaHJvbWFwcmludC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ2Nocm9tYXByaW50JwogcGtnbmFtZT1jaHJvbWFwcmludAogdmVyc2lvbj0xLjUuMQot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdz PSItREJVSUxEX1RPT0xTPU9OIgogbWFrZV9jaGVja190YXJnZXQ9ImNoZWNrIgoKRnJvbSA1ZDA2 YjllNzk3YTIxNGUwMWNmZTM5ZGVjOTJlOWEyMmU3NzdiZGI1IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjYvMTEzXSBjaHJvbWl1bTogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWct NC40LnBhdGNoICAgICAgfCAzNiAtLS0tLS0tLS0tLS0tLQogc3JjcGtncy9jaHJvbWl1bS9wYXRj aGVzL2ZmbXBlZzUucGF0Y2ggICAgICAgIHwgNDcgKysrKysrKysrKysrKysrKysrKwogc3JjcGtn cy9jaHJvbWl1bS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIDMgZmlsZXMg Y2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9taXVtLTkzLWZmbXBlZy00LjQucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5w YXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1m Zm1wZWctNC40LnBhdGNoIGIvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9taXVtLTkzLWZm bXBlZy00LjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZWM3MzZmOThi Yy4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05 My1mZm1wZWctNC40LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotZGlmZiAt LWdpdCBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MgYi9tZWRpYS9maWx0ZXJzL2Zm bXBlZ19kZW11eGVyLmNjCi1pbmRleCBhYzQ3MTNiMDcyNjguLjQ5MmE5YTM3ZDA5NiAxMDA2NDQK LS0tLSBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MKLSsrKyBiL21lZGlhL2ZpbHRl cnMvZmZtcGVnX2RlbXV4ZXIuY2MKLUBAIC00MjcsMTEgKzQyNywxMSBAQCB2b2lkIEZGbXBlZ0Rl bXV4ZXJTdHJlYW06OkVucXVldWVQYWNrZXQoU2NvcGVkQVZQYWNrZXQgcGFja2V0KSB7Ci0gICBz Y29wZWRfcmVmcHRyPERlY29kZXJCdWZmZXI+IGJ1ZmZlcjsKLSAKLSAgIGlmICh0eXBlKCkgPT0g RGVtdXhlclN0cmVhbTo6VEVYVCkgewotLSAgICBzaXplX3QgaWRfc2l6ZSA9IDA7Ci0rICAgIGlu dCBpZF9zaXplID0gMDsKLSAgICAgdWludDhfdCogaWRfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lk ZV9kYXRhKAotICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9XRUJWVFRfSURFTlRJ RklFUiwgJmlkX3NpemUpOwotIAotLSAgICBzaXplX3Qgc2V0dGluZ3Nfc2l6ZSA9IDA7Ci0rICAg IGludCBzZXR0aW5nc19zaXplID0gMDsKLSAgICAgdWludDhfdCogc2V0dGluZ3NfZGF0YSA9IGF2 X3BhY2tldF9nZXRfc2lkZV9kYXRhKAotICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFU QV9XRUJWVFRfU0VUVElOR1MsICZzZXR0aW5nc19zaXplKTsKLSAKLUBAIC00NDMsNyArNDQzLDcg QEAgdm9pZCBGRm1wZWdEZW11eGVyU3RyZWFtOjpFbnF1ZXVlUGFja2V0KFNjb3BlZEFWUGFja2V0 IHBhY2tldCkgewotICAgICBidWZmZXIgPSBEZWNvZGVyQnVmZmVyOjpDb3B5RnJvbShwYWNrZXQt PmRhdGEsIHBhY2tldC0+c2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2lkZV9kYXRhLmRhdGEoKSwgc2lkZV9kYXRhLnNpemUoKSk7Ci0gICB9IGVsc2UgewotLSAg ICBzaXplX3Qgc2lkZV9kYXRhX3NpemUgPSAwOwotKyAgICBpbnQgc2lkZV9kYXRhX3NpemUgPSAw OwotICAgICB1aW50OF90KiBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAg ICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFM LCAmc2lkZV9kYXRhX3NpemUpOwotIAotQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEZGbXBlZ0Rl bXV4ZXJTdHJlYW06OkVucXVldWVQYWNrZXQoU2NvcGVkQVZQYWNrZXQgcGFja2V0KSB7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0LT5zaXplIC0gZGF0YV9v ZmZzZXQpOwotICAgICB9Ci0gCi0tICAgIHNpemVfdCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7Ci0r ICAgIGludCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7Ci0gICAgIGNvbnN0IHVpbnQzMl90KiBza2lw X3NhbXBsZXNfcHRyID0KLSAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3Qq Pihhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgICAgICBwYWNrZXQuZ2V0KCksIEFW X1BLVF9EQVRBX1NLSVBfU0FNUExFUywgJnNraXBfc2FtcGxlc19zaXplKSk7CmRpZmYgLS1naXQg YS9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvY2hyb21p dW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMjRlMmRhMzhlMzRjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9jaHJvbWl1 bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorLS0tIGEvbWVkaWEvZmls dGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTAxLTIzIDE3OjMzOjU3LjM2NjIxMzgwNSArMDIw MAorKysrIGIvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTAxLTIzIDE3OjQz OjA5LjI4MzQzNjk4MyArMDIwMAorQEAgLTkyLDI0ICs5MiwxMiBAQAorIAorIHN0YXRpYyBiYXNl OjpUaW1lRGVsdGEgRXh0cmFjdFN0YXJ0VGltZShBVlN0cmVhbSogc3RyZWFtKSB7CisgICAvLyBU aGUgZGVmYXVsdCBzdGFydCB0aW1lIGlzIHplcm8uCistICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRf dGltZTsKKysgIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lID0ga05vVGltZXN0YW1wOworIAor ICAgLy8gRmlyc3QgdHJ5IHRvIHVzZSAgdGhlIHxzdGFydF90aW1lfCB2YWx1ZSBhcyBpcy4KKy0g IGlmIChzdHJlYW0tPnN0YXJ0X3RpbWUgIT0ga05vRkZtcGVnVGltZXN0YW1wKQorKyAgaWYgKHN0 cmVhbS0+c3RhcnRfdGltZSAhPSBrTm9GRm1wZWdUaW1lc3RhbXApIC8vIEFWX05PUFRTX1ZBTFVF CisgICAgIHN0YXJ0X3RpbWUgPSBDb252ZXJ0RnJvbVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNl LCBzdHJlYW0tPnN0YXJ0X3RpbWUpOworIAorLSAgLy8gTmV4dCB0cnkgdG8gdXNlIHRoZSBmaXJz dCBEVFMgdmFsdWUsIGZvciBjb2RlY3Mgd2hlcmUgd2Uga25vdyBQVFMgPT0gRFRTCistICAvLyAo ZXhjbHVkZXMgYWxsIEgyNnggY29kZWNzKS4gVGhlIHN0YXJ0IHRpbWUgbXVzdCBiZSByZXR1cm5l ZCBpbiBQVFMuCistICBpZiAoYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtKSAhPSBrTm9G Rm1wZWdUaW1lc3RhbXAgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBB Vl9DT0RFQ19JRF9IRVZDICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0g QVZfQ09ERUNfSURfSDI2NCAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9 IEFWX0NPREVDX0lEX01QRUc0KSB7CistICAgIGNvbnN0IGJhc2U6OlRpbWVEZWx0YSBmaXJzdF9w dHMgPQorLSAgICAgICAgQ29udmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgYXZf c3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtKSk7CistICAgIGlmIChmaXJzdF9wdHMgPCBzdGFy dF90aW1lKQorLSAgICAgIHN0YXJ0X3RpbWUgPSBmaXJzdF9wdHM7CistICB9CistCisgICByZXR1 cm4gc3RhcnRfdGltZTsKKyB9CisgCitAQCAtMTU5Nyw3ICsxNTg1LDcgQEAKKyAgIGZvciAoY29u c3QgYXV0byYgc3RyZWFtIDogc3RyZWFtc18pIHsKKyAgICAgaWYgKCFzdHJlYW0gfHwgc3RyZWFt LT5Jc0VuYWJsZWQoKSAhPSBlbmFibGVkKQorICAgICAgIGNvbnRpbnVlOworLSAgICBpZiAoYXZf c3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtLT5hdl9zdHJlYW0oKSkgPT0ga0ludmFsaWRQVFNN YXJrZXIpCisrICAgIGlmIChzdHJlYW0tPmF2X3N0cmVhbSgpLT5zdGFydF90aW1lID09IEFWX05P UFRTX1ZBTFVFKQorICAgICAgIGNvbnRpbnVlOworICAgICBpZiAoIWxvd2VzdF9zdGFydF90aW1l X3N0cmVhbSB8fAorICAgICAgICAgc3RyZWFtLT5zdGFydF90aW1lKCkgPCBsb3dlc3Rfc3RhcnRf dGltZV9zdHJlYW0tPnN0YXJ0X3RpbWUoKSkgeworQEAgLTE2MTgsNyArMTYwNiw3IEBACisgICAg IGlmIChzdHJlYW0tPnR5cGUoKSAhPSBEZW11eGVyU3RyZWFtOjpWSURFTykKKyAgICAgICBjb250 aW51ZTsKKyAKKy0gICAgaWYgKGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0cmVhbS0+YXZfc3Ry ZWFtKCkpID09IGtJbnZhbGlkUFRTTWFya2VyKQorKyAgICBpZiAoc3RyZWFtLT5hdl9zdHJlYW0o KS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICBjb250aW51ZTsKKyAKKyAg ICAgaWYgKCFzdHJlYW0tPklzRW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1 bS90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKaW5kZXggY2FmYzJmZTMyNGM2 Li45ZGY3ODJiNWZkOWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKKysr IGIvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9Y2hy b21pdW0KICMgU2VlIGh0dHBzOi8vY2hyb21pdW1kYXNoLmFwcHNwb3QuY29tL3JlbGVhc2VzP3Bs YXRmb3JtPUxpbnV4IGZvciB0aGUgbGF0ZXN0IHZlcnNpb24KIHZlcnNpb249MTEzLjAuNTY3Mi45 MgotcmV2aXNpb249MQorcmV2aXNpb249MgogYXJjaHM9Imk2ODYqIHg4Nl82NCogYWFyY2g2NCog YXJtdjdsKiIKIGhvc3RtYWtlZGVwZW5kcz0iCiAgJCh2b3B0X2lmIGNsYW5nICJjbGFuZyBsbGQg bGx2bTE1IikKCkZyb20gZjJlMmVmZTQyY2JmNGFhMGI0YWY3MTNhOWE1MDZjZGY3ZDdiN2NkYiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI3 LzExM10gY211czogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2NtdXMvcGF0 Y2hlcy9mZm1wZWc2LnBhdGNoIHwgMTIgKysrKysrKysrKysrCiBzcmNwa2dzL2NtdXMvdGVtcGxh dGUgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvY211cy9wYXRjaGVz L2ZmbXBlZzYucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2 LnBhdGNoIGIvc3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZmYTk1YWI4MTExMAotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAor LS0tIGEvaXAvZmZtcGVnLmMKKysrKyBiL2lwL2ZmbXBlZy5jCitAQCAtMjAyLDkgKzIwMiw2IEBA IHN0YXRpYyBpbnQgZmZtcGVnX29wZW4oc3RydWN0IGlucHV0X3BsdWdpbl9kYXRhICppcF9kYXRh KQorIAkJCWJyZWFrOworIAkJfQorIAorLQkJaWYgKGNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9D T0RFQ19DQVBfVFJVTkNBVEVEKQorLQkJCWNjLT5mbGFncyB8PSBBVl9DT0RFQ19GTEFHX1RSVU5D QVRFRDsKKy0KKyAJCWlmIChhdmNvZGVjX29wZW4yKGNjLCBjb2RlYywgTlVMTCkgPCAwKSB7Cisg CQkJZF9wcmludCgiY291bGQgbm90IG9wZW4gY29kZWM6ICVkLCAlc1xuIiwgY2MtPmNvZGVjX2lk LCBhdmNvZGVjX2dldF9uYW1lKGNjLT5jb2RlY19pZCkpOworIAkJCWVyciA9IC1JUF9FUlJPUl9V TlNVUFBPUlRFRF9GSUxFX1RZUEU7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2NtdXMvdGVtcGxhdGUg Yi9zcmNwa2dzL2NtdXMvdGVtcGxhdGUKaW5kZXggMGZjYjQyNGNlMzM2Li4wNWI3N2QwZmVjYWUg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY211cy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NtdXMvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjbXVzJwogcGtnbmFt ZT1jbXVzCiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9Y29uZmlndXJlCiBjb25maWd1cmVfYXJncz0icHJlZml4PS91c3IgTEQ9JENDIgogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSAxNGRhYjBhYTk4MDAwOTQzZGUwMjA1ZDQxMmRj NGU0MDA5NmVhZTUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMjgvMTEzXSBjeWFucmlwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY3lhbnJpcC90ZW1w bGF0ZSBiL3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZQppbmRleCA5Nzk2ZTM0NjE2MDEuLjVkYjMw ZTAyMGQxNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9jeWFucmlwL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvY3lhbnJpcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2N5YW5yaXAnCiBwa2duYW1lPWN5YW5yaXAKIHZlcnNpb249MC45LjAKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWci CiBtYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliY2Rpby1wYXJhbm9p YS1kZXZlbCBsaWJjdXJsLWRldmVsIGxpYm11c2ljYnJhaW56NS1kZXZlbCIKCkZyb20gZDRiYTgy ZjY3ODQwN2NjOTRkMDU2Y2E5OThmYTRmNDIyZjU2MjllMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI5LzExM10gZGVhZGJlZWY6IHJldmJ1 bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZSB8IDQg KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlIGIvc3JjcGtncy9kZWFkYmVlZi90 ZW1wbGF0ZQppbmRleCBiNjY0YmIxYjliZDkuLjE2NWIzYzdiOWNhZCAxMDA2NDQKLS0tIGEvc3Jj cGtncy9kZWFkYmVlZi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlCkBA IC0xLDE0ICsxLDE0IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdkZWFkYmVlZicKIHBrZ25hbWU9 ZGVhZGJlZWYKIHZlcnNpb249MS44LjgKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGNyZWF0ZV93 cmtzcmM9eWVzCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1k aXNhYmxlLW9zcyAtLWRpc2FibGUtbGZtIC0tZGlzYWJsZS1ub3RpZnkgLS1kaXNhYmxlLWd0azIi CiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIGxpYnRvb2wgZ2V0dGV4dCBnZXR0ZXh0LWRldmVs IGludGx0b29sIHBrZy1jb25maWcKICB5YXNtIGNsYW5nIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5k cz0iCi0gYWxzYS1saWItZGV2ZWwgZGJ1cy1kZXZlbCBmYWFkMi1kZXZlbCBmZm1wZWctZGV2ZWwg Z3RrKzMtZGV2ZWwgaW1saWIyLWRldmVsCisgYWxzYS1saWItZGV2ZWwgZGJ1cy1kZXZlbCBmYWFk Mi1kZXZlbCBmZm1wZWc0LWRldmVsIGd0ayszLWRldmVsIGltbGliMi1kZXZlbAogIGphbnNzb24t ZGV2ZWwgbGliY2RkYi1kZXZlbCBsaWJjZGlvLWRldmVsIGxpYmN1cmwtZGV2ZWwgbGliZmxhYy1k ZXZlbAogIGxpYm1hZC1kZXZlbCBsaWJwbmctZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJz bmRmaWxlLWRldmVsIGxpYnZvcmJpcy1kZXZlbAogIGxpYnppcC1kZXZlbCBtcGcxMjMtZGV2ZWwg b3B1c2ZpbGUtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbCB3YXZwYWNrLWRldmVsIgoKRnJvbSBkNzkz MTYwYTlhM2U1NTQyNDQwNzE3N2E1N2JkMjU1MDlmNDNmOGRkIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzAvMTEzXSBkb2xwaGluLWVtdTog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9kb2xwaGluLWVtdS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZG9scGhp bi1lbXUvdGVtcGxhdGUKaW5kZXggN2VhMTk3Y2ViMmE4Li43YWViMGE1YjY0NWUgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kb2xwaGluLWVt dS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2RvbHBoaW4t ZW11JwogcGtnbmFtZT1kb2xwaGluLWVtdQogdmVyc2lvbj01LjAuMTYxMDEKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIF9kb2xwaGluX2NvbW1pdD04ZWNmYTUzN2EyNDJkZTc0ZDJlMzcyZTMwZDlk NzliMTQ1ODRiMmZiCiBfbWdiYV9jb21taXQ9NDBkNGM0MzBmYzM2Y2FlYjdlYTMyZmQzOTYyNDk0 N2VkNDg3ZDJmMgogI1ZlcnNpb24vaGFzaCBwYWlyIGNhbiBiZSBmb3VuZCBhdCBodHRwczovL2Rv bHBoaW4tZW11Lm9yZy9kb3dubG9hZC8KCkZyb20gZWNiM2Q1MjRjNjQxOGNhMzExYzc2ZTRhZWZj YzY0MzY5MGM1YWJkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDMxLzExM10gZHJvaWRjYW0tb2JzLXBsdWdpbjogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUgYi9zcmNwa2dzL2Ryb2lk Y2FtLW9icy1wbHVnaW4vdGVtcGxhdGUKaW5kZXggZmM5YzliZjZiOWQ1Li5mYjA0ODA3NTRkZjQg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdkcm9pZGNhbS1vYnMtcGx1Z2luJwogcGtnbmFtZT1kcm9pZGNhbS1v YnMtcGx1Z2luCiB2ZXJzaW9uPTIuMC4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9z dHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfdXNlX2Vudj15ZXMKIG1ha2VfYnVpbGRfYXJncz0iQUxM T1dfU1RBVElDPW5vIgoKRnJvbSBlZTEyNjJmMjk4ZjVmNzQ1YWUzMjVhNjNiNTZjMmQxZDUzYmQ3 YTI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwMzIvMTEzXSBkcm9pZGNhbTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2Ryb2lkY2FtL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZSBi L3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKaW5kZXggMWMzZjFiOGIxZmM2Li4zMmE5MjIwYjc5 YTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9k cm9pZGNhbS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Ry b2lkY2FtJwogcGtnbmFtZT1kcm9pZGNhbQogdmVyc2lvbj0xLjguMgotcmV2aXNpb249MgorcmV2 aXNpb249MwogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBtYWtlX2J1aWxkX2FyZ3M9IlVTQk1V WEQ9LWx1c2JtdXhkLTIuMCBKUEVHPS1sdHVyYm9qcGVnIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIgoKRnJvbSA3Y2VjNzhhYzRkMmE2OGVmMDUwOTFlMTM2N2Y0NTg5MTg0NTg2MWUxIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzMv MTEzXSBmZm1wZWd0aHVtYm5haWxlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4v ZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoICAgfCAyMDIgKysrKysrKysr KysrKysrKysrCiBzcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRlICAgICAgICAgICAg fCAgIDYgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMjA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVz L2ZmbXBlZzYucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3Bh dGNoZXMvZmZtcGVnNi5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9m Zm1wZWc2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzYz ZmYzNWEyODQxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9w YXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAgLTAsMCArMSwyMDIgQEAKKy0tLSBhL2xpYmZmbXBlZ3Ro dW1ibmFpbGVyL21vdmllZGVjb2Rlci5jcHAJMjAxNy0xMS0yMSAxNDowNjo1Ny4wMDAwMDAwMDAg LTA1MDAKKysrKyBiL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmllZGVjb2Rlci5jcHAJMjAyMy0w NS0wNSAxMzoxNDo0Ny45NDY1NjA2NjggLTA0MDAKK0BAIC00MSwxMSArNDEsNiBAQAorIG5hbWVz cGFjZSBmZm1wZWd0aHVtYm5haWxlcgorIHsKKyAKKy1zdHJ1Y3QgU2lsZW5jZUxvZ0xldmVsCist eworLSAgICBTaWxlbmNlTG9nTGV2ZWwoKSB7IGF2X2xvZ19zZXRfbGV2ZWwoQVZfTE9HX1FVSUVU KTsgfQorLX07CistCisgTW92aWVEZWNvZGVyOjpNb3ZpZURlY29kZXIoQVZGb3JtYXRDb250ZXh0 KiBwYXZDb250ZXh0KQorIDogbV9WaWRlb1N0cmVhbSgtMSkKKyAsIG1fcEZvcm1hdENvbnRleHQo cGF2Q29udGV4dCkKK0BAIC03MCw4ICs2NSw2IEBACisgCisgdm9pZCBNb3ZpZURlY29kZXI6Omlu aXRpYWxpemUoY29uc3Qgc3RyaW5nJiBmaWxlbmFtZSwgYm9vbCBwcmVmZXJFbWJlZGRlZE1ldGFk YXRhKQorIHsKKy0gICAgYXZfcmVnaXN0ZXJfYWxsKCk7CistICAgIGF2Y29kZWNfcmVnaXN0ZXJf YWxsKCk7CisgICAgIGF2Zm9ybWF0X25ldHdvcmtfaW5pdCgpOworIAorICAgICBzdHJpbmcgaW5w dXRGaWxlID0gZmlsZW5hbWUgPT0gIi0iID8gInBpcGU6IiA6IGZpbGVuYW1lOworQEAgLTk3LDgg KzkwLDcgQEAKKyB7CisgICAgIGlmIChtX3BWaWRlb0NvZGVjQ29udGV4dCkKKyAgICAgeworLSAg ICAgICAgYXZjb2RlY19jbG9zZShtX3BWaWRlb0NvZGVjQ29udGV4dCk7CistICAgICAgICBtX3BW aWRlb0NvZGVjQ29udGV4dCA9IG51bGxwdHI7CisrICAgICAgICBhdmNvZGVjX2ZyZWVfY29udGV4 dCgmbV9wVmlkZW9Db2RlY0NvbnRleHQpOworICAgICB9CisgCisgICAgIGlmICgoIW1fRm9ybWF0 Q29udGV4dFdhc0dpdmVuKSAmJiBtX3BGb3JtYXRDb250ZXh0KQorQEAgLTE1MiwxMCArMTQ0LDEw IEBACisgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbV9wRm9ybWF0Q29udGV4dC0+ bmJfc3RyZWFtczsgKytpKQorICAgICB7CisgICAgICAgICBBVlN0cmVhbSAqc3RyZWFtID0gbV9w Rm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXTsKKy0gICAgICAgIGF1dG8gY3R4ID0gbV9wRm9ybWF0 Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWM7CistICAgICAgICBpZiAoY3R4LT5jb2RlY190eXBl ID09IEFWTUVESUFfVFlQRV9WSURFTykKKysgICAgICAgIGF1dG8gcGFyID0gbV9wRm9ybWF0Q29u dGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXI7CisrICAgICAgICBpZiAocGFyLT5jb2RlY190eXBl ID09IEFWTUVESUFfVFlQRV9WSURFTykKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBpZiAoIXBy ZWZlckVtYmVkZGVkTWV0YWRhdGEgfHwgIWlzU3RpbGxJbWFnZUNvZGVjKGN0eC0+Y29kZWNfaWQp KQorKyAgICAgICAgICAgIGlmICghcHJlZmVyRW1iZWRkZWRNZXRhZGF0YSB8fCAhaXNTdGlsbElt YWdlQ29kZWMocGFyLT5jb2RlY19pZCkpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICB2aWRlb1N0cmVhbXMucHVzaF9iYWNrKGkpOworICAgICAgICAgICAgICAgICBjb250aW51ZTsK K0BAIC0yMDMsOCArMTk1LDcgQEAKKyAgICAgfQorIAorICAgICBtX3BWaWRlb1N0cmVhbSA9IG1f cEZvcm1hdENvbnRleHQtPnN0cmVhbXNbbV9WaWRlb1N0cmVhbV07CistICAgIG1fcFZpZGVvQ29k ZWNDb250ZXh0ID0gbV9wVmlkZW9TdHJlYW0tPmNvZGVjOworLSAgICBtX3BWaWRlb0NvZGVjID0g YXZjb2RlY19maW5kX2RlY29kZXIobV9wVmlkZW9Db2RlY0NvbnRleHQtPmNvZGVjX2lkKTsKKysg ICAgbV9wVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKG1fcFZpZGVvU3RyZWFtLT5j b2RlY3Bhci0+Y29kZWNfaWQpOworIAorICAgICBpZiAobV9wVmlkZW9Db2RlYyA9PSBudWxscHRy KQorICAgICB7CitAQCAtMjE0LDYgKzIwNSwyMCBAQAorICAgICAgICAgdGhyb3cgbG9naWNfZXJy b3IoIlZpZGVvIENvZGVjIG5vdCBmb3VuZCIpOworICAgICB9CisgCisrICAgIG1fcFZpZGVvQ29k ZWNDb250ZXh0ID0gYXZjb2RlY19hbGxvY19jb250ZXh0MyhtX3BWaWRlb0NvZGVjKTsKKysKKysg ICAgaWYgKG1fcFZpZGVvQ29kZWNDb250ZXh0ID09IG51bGxwdHIpCisrICAgIHsKKysgICAgICAg IGRlc3Ryb3koKTsKKysgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJDb3VsZCBub3QgYWxsb2Nh dGUgdmlkZW8gY29kZWMgY29udGV4dCIpOworKyAgICB9CisrCisrICAgIGlmIChhdmNvZGVjX3Bh cmFtZXRlcnNfdG9fY29udGV4dChtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9wVmlkZW9TdHJlYW0t PmNvZGVjcGFyKSA8IDApCisrICAgIHsKKysgICAgICAgIGRlc3Ryb3koKTsKKysgICAgICAgIHRo cm93IGxvZ2ljX2Vycm9yKCJDb3VsZCBub3QgY29uZmlndXJlIHZpZGVvIGNvZGVjIGNvbnRleHQi KTsKKysgICAgfQorKworICAgICBtX3BWaWRlb0NvZGVjQ29udGV4dC0+d29ya2Fyb3VuZF9idWdz ID0gMTsKKyAKKyAgICAgaWYgKGF2Y29kZWNfb3BlbjIobV9wVmlkZW9Db2RlY0NvbnRleHQsIG1f cFZpZGVvQ29kZWMsIG51bGxwdHIpIDwgMCkKK0BAIC0zODYsMTMgKzM5MSw2IEBACisgCisgdm9p ZCBNb3ZpZURlY29kZXI6OmluaXRpYWxpemVGaWx0ZXJHcmFwaChjb25zdCBBVlJhdGlvbmFsJiB0 aW1lQmFzZSwgY29uc3Qgc3RkOjpzdHJpbmcmIHNpemUsIGJvb2wgbWFpbnRhaW5Bc3BlY3RSYXRp bykKKyB7CistICAgIHN0YXRpYyBjb25zdCBBVlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0c1tdID0g eyBBVl9QSVhfRk1UX1JHQjI0LCBBVl9QSVhfRk1UX05PTkUgfTsKKy0KKy0gICAgYXV0byBkZWwg PSBbXSAoQVZCdWZmZXJTaW5rUGFyYW1zKiBwKSB7IGF2X2ZyZWVwKHApOyB9OworLSAgICBzdGQ6 OnVuaXF1ZV9wdHI8QVZCdWZmZXJTaW5rUGFyYW1zLCBkZWNsdHlwZShkZWwpPiBidWZmZXJzaW5r UGFyYW1zKGF2X2J1ZmZlcnNpbmtfcGFyYW1zX2FsbG9jKCksIGRlbCk7CistCistICAgIGF2Zmls dGVyX3JlZ2lzdGVyX2FsbCgpOworLQorICAgICBtX3BGaWx0ZXJHcmFwaCA9IGF2ZmlsdGVyX2dy YXBoX2FsbG9jKCk7CisgICAgIGFzc2VydChtX3BGaWx0ZXJHcmFwaCk7CisgCitAQCAtNDA0LDEw ICs0MDIsOCBAQAorIAorICAgICBjaGVja1JjKGF2ZmlsdGVyX2dyYXBoX2NyZWF0ZV9maWx0ZXIo Jm1fcEZpbHRlclNvdXJjZSwgYXZmaWx0ZXJfZ2V0X2J5X25hbWUoImJ1ZmZlciIpLCAidGh1bWJf YnVmZmVyIiwgc3Muc3RyKCkuY19zdHIoKSwgbnVsbHB0ciwgbV9wRmlsdGVyR3JhcGgpLAorICAg ICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGZpbHRlciBzb3VyY2UiKTsKKy0gICAgYnVmZmVy c2lua1BhcmFtcy0+cGl4ZWxfZm10cyA9IHBpeGVsRm9ybWF0czsKKy0gICAgY2hlY2tSYyhhdmZp bHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BGaWx0ZXJTaW5rLCBhdmZpbHRlcl9nZXRfYnlf bmFtZSgiYnVmZmVyc2luayIpLCAidGh1bWJfYnVmZmVyc2luayIsIG51bGxwdHIsIGJ1ZmZlcnNp bmtQYXJhbXMuZ2V0KCksIG1fcEZpbHRlckdyYXBoKSwKKysgICAgY2hlY2tSYyhhdmZpbHRlcl9n cmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BGaWx0ZXJTaW5rLCBhdmZpbHRlcl9nZXRfYnlfbmFtZSgi YnVmZmVyc2luayIpLCAidGh1bWJfYnVmZmVyc2luayIsIG51bGxwdHIsIG51bGxwdHIsIG1fcEZp bHRlckdyYXBoKSwKKyAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBmaWx0ZXIgc2luayIp OworLSAgICBidWZmZXJzaW5rUGFyYW1zLnJlbGVhc2UoKTsKKyAKKyAgICAgQVZGaWx0ZXJDb250 ZXh0KiB5YWRpZkZpbHRlciA9IG51bGxwdHI7CisgICAgIGlmIChtX3BGcmFtZS0+aW50ZXJsYWNl ZF9mcmFtZSAhPSAwKQorQEAgLTUwMCwxNSArNDk2LDE1IEBACisgICAgIH0KKyAKKyAgICAgY2hl Y2tSYyhhdl9zZWVrX2ZyYW1lKG1fcEZvcm1hdENvbnRleHQsIC0xLCB0aW1lc3RhbXAsIDApLCAi U2Vla2luZyBpbiB2aWRlbyBmYWlsZWQiKTsKKy0gICAgYXZjb2RlY19mbHVzaF9idWZmZXJzKG1f cEZvcm1hdENvbnRleHQtPnN0cmVhbXNbbV9WaWRlb1N0cmVhbV0tPmNvZGVjKTsKKysgICAgYXZj b2RlY19mbHVzaF9idWZmZXJzKG1fcFZpZGVvQ29kZWNDb250ZXh0KTsKKyAKKyAgICAgaW50IGtl eUZyYW1lQXR0ZW1wdHMgPSAwOworLSAgICBib29sIGdvdEZyYW1lID0gMDsKKysgICAgYm9vbCBn b3RGcmFtZTsKKyAKKyAgICAgZG8KKyAgICAgeworICAgICAgICAgaW50IGNvdW50ID0gMDsKKy0g ICAgICAgIGdvdEZyYW1lID0gMDsKKysgICAgICAgIGdvdEZyYW1lID0gZmFsc2U7CisgCisgICAg ICAgICB3aGlsZSAoIWdvdEZyYW1lICYmIGNvdW50IDwgMjApCisgICAgICAgICB7CitAQCAtNTUy LDE3ICs1NDgsMzMgQEAKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorIAorLSAgICBh dl9mcmFtZV91bnJlZihtX3BGcmFtZSk7CistCistICAgIGludCBmcmFtZUZpbmlzaGVkOworKyAg ICBpbnQgcmMgPSBhdmNvZGVjX3NlbmRfcGFja2V0KG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BQ YWNrZXQpOworKyAgICBpZihyYyA9PSBBVkVSUk9SKEVBR0FJTikpCisrICAgIHsKKysgICAgICAg IHJjID0gMDsKKysgICAgfQorIAorLSAgICBpbnQgYnl0ZXNEZWNvZGVkID0gYXZjb2RlY19kZWNv ZGVfdmlkZW8yKG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BGcmFtZSwgJmZyYW1lRmluaXNoZWQs IG1fcFBhY2tldCk7CistICAgIGlmIChieXRlc0RlY29kZWQgPCAwKQorKyAgICBpZihyYyA9PSBB VkVSUk9SX0VPRikKKysgICAgeworKyAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisrICAg IGVsc2UgaWYocmMgPCAwKQorICAgICB7CistICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigiRmFp bGVkIHRvIGRlY29kZSB2aWRlbyBmcmFtZTogYnl0ZXNEZWNvZGVkIDwgMCIpOworKyAgICAgICAg dGhyb3cgbG9naWNfZXJyb3IoIkZhaWxlZCB0byBkZWNvZGUgdmlkZW8gZnJhbWU6IGF2Y29kZWNf c2VuZF9wYWNrZXQoKSA8IDAiKTsKKyAgICAgfQorIAorLSAgICByZXR1cm4gZnJhbWVGaW5pc2hl ZCA+IDA7CisrICAgIHJjID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1lKG1fcFZpZGVvQ29kZWNDb250 ZXh0LCBtX3BGcmFtZSk7CisrICAgIHN3aXRjaChyYykKKysgICAgeworKyAgICAgICAgY2FzZSAw OgorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworKworKyAgICAgICAgY2FzZSBBVkVSUk9SKEVB R0FJTik6CisrICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKworKyAgICAgICAgZGVmYXVsdDoK KysgICAgICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigiRmFpbGVkIHRvIGRlY29kZSB2aWRlbyBm cmFtZTogYXZjb2RlY19yZWNlaXZlX2ZyYW1lKCkgPCAwIik7CisrICAgIH0KKyB9CisgCisgYm9v bCBNb3ZpZURlY29kZXI6OmdldFZpZGVvUGFja2V0KCkKK0BAIC01NzAsOCArNTgyLDYgQEAKKyAg ICAgYm9vbCBmcmFtZXNBdmFpbGFibGUgPSB0cnVlOworICAgICBib29sIGZyYW1lRGVjb2RlZCA9 IGZhbHNlOworIAorLSAgICBpbnQgYXR0ZW1wdHMgPSAwOworLQorICAgICBpZiAobV9wUGFja2V0 KQorICAgICB7CisgICAgICAgICBhdl9wYWNrZXRfdW5yZWYobV9wUGFja2V0KTsKK0BAIC01ODAs NiArNTkwLDcgQEAKKyAKKyAgICAgbV9wUGFja2V0ID0gbmV3IEFWUGFja2V0KCk7CisgCisrCisg ICAgIHdoaWxlIChmcmFtZXNBdmFpbGFibGUgJiYgIWZyYW1lRGVjb2RlZCkKKyAgICAgeworICAg ICAgICAgZnJhbWVzQXZhaWxhYmxlID0gYXZfcmVhZF9mcmFtZShtX3BGb3JtYXRDb250ZXh0LCBt X3BQYWNrZXQpID49IDA7CitAQCAtNjQ0LDcgKzY1NSw3IEBACisgCisgaW50MzJfdCBNb3ZpZURl Y29kZXI6OmdldFN0cmVhbVJvdGF0aW9uKCkKKyB7CistICAgIGludDMyX3QqIG1hdHJpeCA9IHJl aW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KGF2X3N0cmVhbV9nZXRfc2lkZV9kYXRhKG1fcFZpZGVv U3RyZWFtLCBBVl9QS1RfREFUQV9ESVNQTEFZTUFUUklYLCBudWxscHRyKSk7CisrICAgIGF1dG8g bWF0cml4ID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4oYXZfc3RyZWFtX2dldF9zaWRlX2Rh dGEobV9wVmlkZW9TdHJlYW0sIEFWX1BLVF9EQVRBX0RJU1BMQVlNQVRSSVgsIG51bGxwdHIpKTsK KyAgICAgaWYgKG1hdHJpeCkKKyAgICAgeworICAgICAgICAgYXV0byBhbmdsZSA9IGxyb3VuZChh dl9kaXNwbGF5X3JvdGF0aW9uX2dldChtYXRyaXgpKTsKKworLS0tIGEvbGliZmZtcGVndGh1bWJu YWlsZXIvbW92aWVkZWNvZGVyLmgJMjAxNy0xMS0xMiAwNDoyMzozOC4wMDAwMDAwMDAgLTA1MDAK KysrKyBiL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmllZGVjb2Rlci5oCTIwMjMtMDUtMDUgMTM6 MjY6MDcuMDk1NTI5OTExIC0wNDAwCitAQCAtNzgsNyArNzgsNyBAQAorICAgICBpbnQgICAgICAg ICAgICAgICAgICAgICBtX1ZpZGVvU3RyZWFtOw0KKyAgICAgQVZGb3JtYXRDb250ZXh0KiAgICAg ICAgbV9wRm9ybWF0Q29udGV4dDsNCisgICAgIEFWQ29kZWNDb250ZXh0KiAgICAgICAgIG1fcFZp ZGVvQ29kZWNDb250ZXh0Ow0KKy0gICAgQVZDb2RlYyogICAgICAgICAgICAgICAgbV9wVmlkZW9D b2RlYzsNCisrICAgIGNvbnN0IEFWQ29kZWMqICAgICAgICAgIG1fcFZpZGVvQ29kZWM7DQorICAg ICBBVkZpbHRlckdyYXBoKiAgICAgICAgICBtX3BGaWx0ZXJHcmFwaDsNCisgICAgIEFWRmlsdGVy Q29udGV4dCogICAgICAgIG1fcEZpbHRlclNvdXJjZTsNCisgICAgIEFWRmlsdGVyQ29udGV4dCog ICAgICAgIG1fcEZpbHRlclNpbms7DQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWd0aHVtYm5h aWxlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUKaW5kZXgg MDM5ZWVhNzYyMmIzLi4zNWQ1NDYwMThkMTIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmZtcGVndGh1 bWJuYWlsZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZmbXBlZ3RodW1ibmFpbGVy JwogcGtnbmFtZT1mZm1wZWd0aHVtYm5haWxlcgogdmVyc2lvbj0yLjIuMgotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZp ZyIKIG1ha2VkZXBlbmRzPSJsaWJwbmctZGV2ZWwgbGlianBlZy10dXJiby1kZXZlbCBmZm1wZWct ZGV2ZWwiCkBAIC05LDggKzksOCBAQCBkZXBlbmRzPSJmZm1wZWciCiBzaG9ydF9kZXNjPSJMaWdo dHdlaWdodCB2aWRlbyB0aHVtYm5haWxlciIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5A dm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyIgotaG9tZXBhZ2U9Imh0 dHBzOi8vZ2l0aHViLmNvbS9kaXJrdmRiLyR7cGtnbmFtZX0iCi1kaXN0ZmlsZXM9IiR7aG9tZXBh Z2V9L3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVyc2lvbn0vJHtwa2duYW1lfS0ke3ZlcnNpb259LnRh ci5iejIiCitob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2Rpcmt2ZGIiCitkaXN0ZmlsZXM9 IiR7aG9tZXBhZ2V9LyR7cGtnbmFtZX0vcmVsZWFzZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS8ke3Br Z25hbWV9LSR7dmVyc2lvbn0udGFyLmJ6MiIKIGNoZWNrc3VtPTFjYjI0MDU5YzM4MjIzZjY1N2Iz MDBjODRkZDgwNDkxYjcwNDBkNGI2OTQ3MWM0ZmVhNjliZTg2MmJjOTliNWIKIAogcG9zdF9pbnN0 YWxsKCkgewoKRnJvbSBlMDliZTk4MWE0Y2Q5OTRmOWYxNjAyOWNhYzc0MTAxYzNlMWQ0MzFlIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzQv MTEzXSBmZm1wZWd0aHVtYnM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9m Zm1wZWd0aHVtYnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1w bGF0ZSBiL3NyY3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlCmluZGV4IDVmMGI5NDE0ZGFkYS4u MTFiODgxOTM1MjhmIDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2ZmbXBlZ3RodW1icycKIHBrZ25hbWU9ZmZtcGVndGh1bWJzCiB2ZXJz aW9uPTIyLjEyLjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBo b3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMga2NvcmVhZGRvbnMga2NvbmZpZy1k ZXZlbAogIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIGdldHRleHQiCgpGcm9t IDlmY2MwYjcwMmI2MzdhMTljYmVjNjhkYzc1NTg5YjY3ZDk5MTRkZDYgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNS8xMTNdIGZmbXMyOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoIHwgNDI0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvZmZtczIv dGVtcGxhdGUgICAgICAgICAgICAgIHwgICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDQyNSBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1z Mi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXMyL3BhdGNo ZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTQ3OWZhYmNhZmNiCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAs MCArMSw0MjQgQEAKK0Zyb20gNDU2NzMxNDllOWEyZjU1ODY4NTVhZDQ3MmUzMDU5MDg0ZWFhMzZi MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVr LmJ1aXRlbmh1aXNAZ21haWwuY29tPgorRGF0ZTogVHVlLCA0IE1heSAyMDIxIDE0OjQxOjIxICsw MTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBhdXRvIGZvciBBVkNvZGVjCisKK1RoZSBnZW5pdXNl cyBvdmVyIGF0IEZGbXBlZyBkZWNpZGVkIHRvIGNvbnN0aWZ5IHRoaXMgQVBJLCBzbyBvbGQKK3Zl cnNpb25zIG9mIHRoZSBsaWJyYXJ5IHdpbGwgcmV0dXJuIEFWQ29kZWMgKiwgd2hpbGUgbmV3IHZl cnNpb25zCitvZiB0aGUgbGliYXJ5IHdpbGwgcmV0dXJuIGNvbnN0IEFWQ29kZWMgKiwgd2hpY2gs IGluIEMrKywgYXJlIG5vdAorT0sgdG8gY29udmVydCBiZXR3ZWVuLgorCitSYXRoZXIgdGhhbiB1 c2Ugc29tZSBtYWNybyBoZWxsIGluIGZmbXNjb21wYXQuaCwgd2UgY2FuIHdvcmsgYXJvdW5kCit0 aGlzIGJ5IHVzaW5nIGF1dG8uCisKK0dyb3NzLgorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0 ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlv c291cmNlLmNwcCB8IDIgKy0KKyBzcmMvY29yZS9pbmRleGluZy5jcHAgICAgfCA2ICsrKy0tLQor IHNyYy9jb3JlL3ZpZGVvc291cmNlLmNwcCB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDUgaW5z ZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlv c291cmNlLmNwcCBiL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAoraW5kZXggZTRjZTk3Yy4uYWMw OTY2NiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAorKysrIGIvc3JjL2Nv cmUvYXVkaW9zb3VyY2UuY3BwCitAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgRkZNU19BdWRpb1Nv dXJjZTo6T3BlbkZpbGUoKSB7CisgCisgICAgIExBVkZPcGVuRmlsZShTb3VyY2VGaWxlLmNfc3Ry KCksIEZvcm1hdENvbnRleHQsIFRyYWNrTnVtYmVyKTsKKyAKKy0gICAgQVZDb2RlYyAqQ29kZWMg PSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrTnVtYmVy XS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgICAgYXV0byAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRf ZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrTnVtYmVyXS0+Y29kZWNwYXItPmNv ZGVjX2lkKTsKKyAgICAgaWYgKENvZGVjID09IG51bGxwdHIpCisgICAgICAgICB0aHJvdyBGRk1T X0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VSUk9SX0NPREVDLAorICAgICAg ICAgICAgICJBdWRpbyBjb2RlYyBub3QgZm91bmQiKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9p bmRleGluZy5jcHAgYi9zcmMvY29yZS9pbmRleGluZy5jcHAKK2luZGV4IGU1NDdjNWEuLjU5ZmI0 ZTggMTAwNjQ0CistLS0gYS9zcmMvY29yZS9pbmRleGluZy5jcHAKKysrKyBiL3NyYy9jb3JlL2lu ZGV4aW5nLmNwcAorQEAgLTM4NCw3ICszODQsNyBAQCBGRk1TX1RyYWNrVHlwZSBGRk1TX0luZGV4 ZXI6OkdldFRyYWNrVHlwZShpbnQgVHJhY2spIHsKKyB9CisgCisgY29uc3QgY2hhciAqRkZNU19J bmRleGVyOjpHZXRUcmFja0NvZGVjKGludCBUcmFjaykgeworLSAgICBBVkNvZGVjICpjb2RlYyA9 IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2Rl Y3Bhci0+Y29kZWNfaWQpOworKyAgICBhdXRvICpjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVy KEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAg ICByZXR1cm4gY29kZWMgPyBjb2RlYy0+bmFtZSA6IG51bGxwdHI7CisgfQorIAorQEAgLTQwMiw3 ICs0MDIsNyBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAg ICAgICAgICAgVXNlRFRTKTsKKyAKKyAgICAgICAgIGlmIChJbmRleE1hc2suY291bnQoaSkgJiYg Rm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJ QV9UWVBFX1ZJREVPKSB7CistICAgICAgICAgICAgQVZDb2RlYyAqVmlkZW9Db2RlYyA9IGF2Y29k ZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2Rl Y19pZCk7CisrICAgICAgICAgICAgYXV0byAqVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNv ZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAg ICAgICAgICAgaWYgKCFWaWRlb0NvZGVjKSB7CisgICAgICAgICAgICAgICAgIEZvcm1hdENvbnRl eHQtPnN0cmVhbXNbaV0tPmRpc2NhcmQgPSBBVkRJU0NBUkRfQUxMOworICAgICAgICAgICAgICAg ICBJbmRleE1hc2suZXJhc2UoaSk7CitAQCAtNDMzLDcgKzQzMyw3IEBAIEZGTVNfSW5kZXggKkZG TVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAgICAgICAgICAgICAgSW5kZXhNYXNrLmlu c2VydChpKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UgaWYgKEluZGV4TWFzay5j b3VudChpKSAmJiBGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfdHlw ZSA9PSBBVk1FRElBX1RZUEVfQVVESU8pIHsKKy0gICAgICAgICAgICBBVkNvZGVjICpBdWRpb0Nv ZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29k ZWNwYXItPmNvZGVjX2lkKTsKKysgICAgICAgICAgICBhdXRvICpBdWRpb0NvZGVjID0gYXZjb2Rl Y19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVj X2lkKTsKKyAgICAgICAgICAgICBpZiAoQXVkaW9Db2RlYyA9PSBudWxscHRyKQorICAgICAgICAg ICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0NPREVDLCBGRk1TX0VSUk9S X1VOU1VQUE9SVEVELAorICAgICAgICAgICAgICAgICAgICAgIkF1ZGlvIGNvZGVjIG5vdCBmb3Vu ZCIpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcCBiL3NyYy9jb3JlL3Zp ZGVvc291cmNlLmNwcAoraW5kZXggYjg4OTk3MC4uODk1NmMyMiAxMDA2NDQKKy0tLSBhL3NyYy9j b3JlL3ZpZGVvc291cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwCitAQCAt MTcxLDcgKzE3MSw3IEBAIEZGTVNfVmlkZW9Tb3VyY2U6OkZGTVNfVmlkZW9Tb3VyY2UoY29uc3Qg Y2hhciAqU291cmNlRmlsZSwgRkZNU19JbmRleCAmSW5kZXgsIGluCisgCisgICAgICAgICBMQVZG T3BlbkZpbGUoU291cmNlRmlsZSwgRm9ybWF0Q29udGV4dCwgVmlkZW9UcmFjayk7CisgCistICAg ICAgICBBVkNvZGVjICpDb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQt PnN0cmVhbXNbVmlkZW9UcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgICAgICBhdXRv ICpDb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVmlk ZW9UcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgICAgICBpZiAoQ29kZWMgPT0gbnVs bHB0cikKKyAgICAgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09E SU5HLCBGRk1TX0VSUk9SX0NPREVDLAorICAgICAgICAgICAgICAgICAiVmlkZW8gY29kZWMgbm90 IGZvdW5kIik7CistLSAKKzIuNDAuMAorCitGcm9tIDk2Y2JmMzhlYTkzODE4MjlhMTMxNGY0MzJh MmM2MDQ5NWRjZWZhYWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZXJlayBCdWl0 ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNCBNYXkgMjAy MSAxNDoxMjo0MSArMDEwMAorU3ViamVjdDogW1BBVENIXSBhbGw6IFVwZGF0ZSBBVlBhY2tldCBB UEkgdXNhZ2UKKworQVZQYWNrZXRzIG11c3QgYWxsIGJlIG9uIHRoZSBoZWFwIG5vdywgc2luY2Ug aXQgaXMgbm8gbG9uZ2VyCitwYXJ0IG9mIHRoZSBsaWJhdiogQUJJLgorCitTaWduZWQtb2ZmLWJ5 OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KKy0tLQorIHNy Yy9jb3JlL2F1ZGlvc291cmNlLmNwcCB8IDE2ICsrKysrKy0tLS0KKyBzcmMvY29yZS9pbmRleGlu Zy5jcHAgICAgfCA2MyArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCisg c3JjL2NvcmUvaW5kZXhpbmcuaCAgICAgIHwgIDQgKy0tCisgc3JjL2NvcmUvdXRpbHMuY3BwICAg ICAgIHwgIDYgLS0tLQorIHNyYy9jb3JlL3V0aWxzLmggICAgICAgICB8ICAxIC0KKyBzcmMvY29y ZS92aWRlb3NvdXJjZS5jcHAgfCAzMCArKysrKysrKysrLS0tLS0tLS0tCisgNiBmaWxlcyBjaGFu Z2VkLCA2NCBpbnNlcnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Ny Yy9jb3JlL2F1ZGlvc291cmNlLmNwcCBiL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAoraW5kZXgg MzdjZjlhZS4uZTRjZTk3YyAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAor KysrIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwCitAQCAtMjg1LDEwICsyODUsMTUgQEAgRkZN U19BdWRpb1NvdXJjZTo6QXVkaW9CbG9jayAqRkZNU19BdWRpb1NvdXJjZTo6Q2FjaGVCbG9jayhD YWNoZUl0ZXJhdG9yICZwb3MpIHsKKyBpbnQgRkZNU19BdWRpb1NvdXJjZTo6RGVjb2RlTmV4dEJs b2NrKENhY2hlSXRlcmF0b3IgKnBvcykgeworICAgICBDdXJyZW50RnJhbWUgPSAmRnJhbWVzW1Bh Y2tldE51bWJlcl07CisgCistICAgIEFWUGFja2V0IFBhY2tldDsKKy0gICAgaWYgKCFSZWFkUGFj a2V0KCZQYWNrZXQpKQorKyAgICBBVlBhY2tldCAqUGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7 CisrICAgIGlmICghUGFja2V0KQorKyAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19F UlJPUl9QQVJTRVIsIEZGTVNfRVJST1JfQUxMT0NBVElPTl9GQUlMRUQsCisrICAgICAgICAgICAg IkNvdWxkIG5vdCBhbGxvY2F0ZSBwYWNrZXQuIik7CisrICAgIGlmICghUmVhZFBhY2tldChQYWNr ZXQpKSB7CisrICAgICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgIHRocm93 IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfUEFSU0VSLCBGRk1TX0VSUk9SX1VOS05PV04sCisg ICAgICAgICAgICAgIlJlYWRQYWNrZXQgdW5leHBlY3RlZGx5IGZhaWxlZCB0byByZWFkIGEgcGFj a2V0Iik7CisrICAgIH0KKyAKKyAgICAgLy8gUmVhZFBhY2tldCBtYXkgaGF2ZSBjaGFuZ2VkIHRo ZSBwYWNrZXQgbnVtYmVyCisgICAgIEN1cnJlbnRGcmFtZSA9ICZGcmFtZXNbUGFja2V0TnVtYmVy XTsKK0BAIC0yOTcsOCArMzAyLDkgQEAgaW50IEZGTVNfQXVkaW9Tb3VyY2U6OkRlY29kZU5leHRC bG9jayhDYWNoZUl0ZXJhdG9yICpwb3MpIHsKKyAgICAgaW50IE51bWJlck9mU2FtcGxlcyA9IDA7 CisgICAgIEF1ZGlvQmxvY2sgKkNhY2hlZEJsb2NrID0gbnVsbHB0cjsKKyAgICAgCistICAgIGlu dCBSZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KENvZGVjQ29udGV4dCwgJlBhY2tldCk7CistICAg IGF2X3BhY2tldF91bnJlZigmUGFja2V0KTsKKysgICAgaW50IFJldCA9IGF2Y29kZWNfc2VuZF9w YWNrZXQoQ29kZWNDb250ZXh0LCBQYWNrZXQpOworKyAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0 KTsKKysgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgCisgICAgIGF2X2ZyYW1lX3VucmVm KERlY29kZUZyYW1lKTsKKyAgICAgUmV0ID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1lKENvZGVjQ29u dGV4dCwgRGVjb2RlRnJhbWUpOworQEAgLTUxMyw4ICs1MTksNiBAQCB2b2lkIEZGTVNfQXVkaW9T b3VyY2U6OlNlZWsoKSB7CisgfQorIAorIGJvb2wgRkZNU19BdWRpb1NvdXJjZTo6UmVhZFBhY2tl dChBVlBhY2tldCAqUGFja2V0KSB7CistICAgIEluaXROdWxsUGFja2V0KCpQYWNrZXQpOworLQor ICAgICB3aGlsZSAoYXZfcmVhZF9mcmFtZShGb3JtYXRDb250ZXh0LCBQYWNrZXQpID49IDApIHsK KyAgICAgICAgIGlmIChQYWNrZXQtPnN0cmVhbV9pbmRleCA9PSBUcmFja051bWJlcikgeworICAg ICAgICAgICAgIC8vIFJlcXVpcmVkIGJlY2F1c2Ugbm90IGFsbCBhdWRpbyBwYWNrZXRzLCBlc3Bl Y2lhbGx5IGluIG9nZywgaGF2ZSBhIHB0cy4gVXNlIHRoZSBwcmV2aW91cyB2YWxpZCBwYWNrZXQn cyBwdHMgaW5zdGVhZC4KK2RpZmYgLS1naXQgYS9zcmMvY29yZS9pbmRleGluZy5jcHAgYi9zcmMv Y29yZS9pbmRleGluZy5jcHAKK2luZGV4IDIzZmI5NWIuLmU1NDdjNWEgMTAwNjQ0CistLS0gYS9z cmMvY29yZS9pbmRleGluZy5jcHAKKysrKyBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAorQEAgLTMy MCw3ICszMjAsNyBAQCB2b2lkIEZGTVNfSW5kZXhlcjo6Q2hlY2tBdWRpb1Byb3BlcnRpZXMoaW50 IFRyYWNrLCBBVkNvZGVjQ29udGV4dCAqQ29udGV4dCkgeworICAgICB9CisgfQorIAorLXZvaWQg RkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250 ZXh0LCBBVlBhY2tldCAmcGt0LCBpbnQgKlJlcGVhdFBpY3QsCisrdm9pZCBGRk1TX0luZGV4ZXI6 OlBhcnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZDb250ZXh0ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0 ICpwa3QsIGludCAqUmVwZWF0UGljdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgKkZyYW1lVHlwZSwgYm9vbCAqSW52aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVj dHVyZSAqTGFzdFBpY1N0cnVjdCkgeworICAgICBpZiAoVmlkZW9Db250ZXh0LlBhcnNlcikgewor ICAgICAgICAgdWludDhfdCAqT0I7CitAQCAtMzMwLDggKzMzMCw4IEBAIHZvaWQgRkZNU19JbmRl eGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBh Y2tldCAmcGt0CisgICAgICAgICBhdl9wYXJzZXJfcGFyc2UyKFZpZGVvQ29udGV4dC5QYXJzZXIs CisgICAgICAgICAgICAgVmlkZW9Db250ZXh0LkNvZGVjQ29udGV4dCwKKyAgICAgICAgICAgICAm T0IsICZPQlNpemUsCistICAgICAgICAgICAgcGt0LmRhdGEsIHBrdC5zaXplLAorLSAgICAgICAg ICAgIHBrdC5wdHMsIHBrdC5kdHMsIHBrdC5wb3MpOworKyAgICAgICAgICAgIHBrdC0+ZGF0YSwg cGt0LT5zaXplLAorKyAgICAgICAgICAgIHBrdC0+cHRzLCBwa3QtPmR0cywgcGt0LT5wb3MpOwor IAorICAgICAgICAgLy8gSC4yNjQgKFBBRkYpIGFuZCBIRVZDIG1heSBoYXZlIG9uZSBmaWVsZCBw ZXIgcGFja2V0LCBzbyB3ZSBuZWVkIHRvIHRyYWNrCisgICAgICAgICAvLyB3aGVuIHdlIGhhdmUg YSBmdWxsIG9yIGhhbGYgZnJhbWUgYXZhaWxhYmxlLCBhbmQgbWFyayBvbmUgb2YgdGhlbSBhcwor QEAgLTM1MSwxNSArMzUxLDE1IEBAIHZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0 KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0CisgCisgICAgICAg ICAqUmVwZWF0UGljdCA9IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0OworICAgICAg ICAgKkZyYW1lVHlwZSA9IFZpZGVvQ29udGV4dC5QYXJzZXItPnBpY3RfdHlwZTsKKy0gICAgICAg ICpJbnZpc2libGUgPSAoSW5jb21wbGV0ZUZyYW1lIHx8IFZpZGVvQ29udGV4dC5QYXJzZXItPnJl cGVhdF9waWN0IDwgMCB8fCAocGt0LmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpOworKyAg ICAgICAgKkludmlzaWJsZSA9IChJbmNvbXBsZXRlRnJhbWUgfHwgVmlkZW9Db250ZXh0LlBhcnNl ci0+cmVwZWF0X3BpY3QgPCAwIHx8IChwa3QtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkp OworICAgICB9IGVsc2UgeworLSAgICAgICAgKkludmlzaWJsZSA9ICEhKHBrdC5mbGFncyAmIEFW X1BLVF9GTEFHX0RJU0NBUkQpOworKyAgICAgICAgKkludmlzaWJsZSA9ICEhKHBrdC0+ZmxhZ3Mg JiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKyAgICAgfQorIAorICAgICBpZiAoVmlkZW9Db250ZXh0 LkNvZGVjQ29udGV4dC0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA4KQorLSAgICAgICAgUGFy c2VWUDgocGt0LmRhdGFbMF0sIEludmlzaWJsZSwgRnJhbWVUeXBlKTsKKysgICAgICAgIFBhcnNl VlA4KHBrdC0+ZGF0YVswXSwgSW52aXNpYmxlLCBGcmFtZVR5cGUpOworICAgICBlbHNlIGlmIChW aWRlb0NvbnRleHQuQ29kZWNDb250ZXh0LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpCist ICAgICAgICBQYXJzZVZQOShwa3QuZGF0YVswXSwgSW52aXNpYmxlLCBGcmFtZVR5cGUpOworKyAg ICAgICAgUGFyc2VWUDkocGt0LT5kYXRhWzBdLCBJbnZpc2libGUsIEZyYW1lVHlwZSk7CisgfQor IAorIHZvaWQgRkZNU19JbmRleGVyOjpGcmVlKCkgeworQEAgLTQ1OCwzMiArNDU4LDM2IEBAIEZG TVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAgICAgIH0KKyAgICAg fQorIAorLSAgICBBVlBhY2tldCBQYWNrZXQ7CistICAgIEluaXROdWxsUGFja2V0KFBhY2tldCk7 CisrICAgIEFWUGFja2V0ICpQYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQ YWNrZXQpCisrICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0NPREVDLCBG Rk1TX0VSUk9SX0FMTE9DQVRJT05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3QgYWxs b2NhdGUgcGFja2V0LiIpOworICAgICBzdGQ6OnZlY3RvcjxpbnQ2NF90PiBMYXN0VmFsaWRUUyhG b3JtYXRDb250ZXh0LT5uYl9zdHJlYW1zLCBBVl9OT1BUU19WQUxVRSk7CisgCisgICAgIGludDY0 X3QgZmlsZXNpemUgPSBhdmlvX3NpemUoRm9ybWF0Q29udGV4dC0+cGIpOworICAgICBlbnVtIEFW UGljdHVyZVN0cnVjdHVyZSBMYXN0UGljU3RydWN0ID0gQVZfUElDVFVSRV9TVFJVQ1RVUkVfVU5L Tk9XTjsKKy0gICAgd2hpbGUgKGF2X3JlYWRfZnJhbWUoRm9ybWF0Q29udGV4dCwgJlBhY2tldCkg Pj0gMCkgeworKyAgICB3aGlsZSAoYXZfcmVhZF9mcmFtZShGb3JtYXRDb250ZXh0LCBQYWNrZXQp ID49IDApIHsKKyAgICAgICAgIC8vIFVwZGF0ZSBwcm9ncmVzcworICAgICAgICAgLy8gRm9ybWF0 Q29udGV4dC0+cGIgY2FuIGFwcGFyZW50bHkgYmUgTlVMTCB3aGVuIG9wZW5pbmcgaW1hZ2VzLgor ICAgICAgICAgaWYgKElDICYmIEZvcm1hdENvbnRleHQtPnBiKSB7CistICAgICAgICAgICAgaWYg KCgqSUMpKEZvcm1hdENvbnRleHQtPnBiLT5wb3MsIGZpbGVzaXplLCBJQ1ByaXZhdGUpKQorKyAg ICAgICAgICAgIGlmICgoKklDKShGb3JtYXRDb250ZXh0LT5wYi0+cG9zLCBmaWxlc2l6ZSwgSUNQ cml2YXRlKSkgeworKyAgICAgICAgICAgICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAg ICAgICAgICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9DQU5DRUxMRUQs IEZGTVNfRVJST1JfVVNFUiwKKyAgICAgICAgICAgICAgICAgICAgICJDYW5jZWxsZWQgYnkgdXNl ciIpOworKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKy0gICAgICAgIGlmICghSW5kZXhNYXNr LmNvdW50KFBhY2tldC5zdHJlYW1faW5kZXgpKSB7CistICAgICAgICAgICAgYXZfcGFja2V0X3Vu cmVmKCZQYWNrZXQpOworKyAgICAgICAgaWYgKCFJbmRleE1hc2suY291bnQoUGFja2V0LT5zdHJl YW1faW5kZXgpKSB7CisrICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisgICAg ICAgICAgICAgY29udGludWU7CisgICAgICAgICB9CisgCistICAgICAgICBpbnQgVHJhY2sgPSBQ YWNrZXQuc3RyZWFtX2luZGV4OworKyAgICAgICAgaW50IFRyYWNrID0gUGFja2V0LT5zdHJlYW1f aW5kZXg7CisgICAgICAgICBGRk1TX1RyYWNrICZUcmFja0luZm8gPSAoKlRyYWNrSW5kaWNlcylb VHJhY2tdOworLSAgICAgICAgYm9vbCBLZXlGcmFtZSA9ICEhKFBhY2tldC5mbGFncyAmIEFWX1BL VF9GTEFHX0tFWSk7CisrICAgICAgICBib29sIEtleUZyYW1lID0gISEoUGFja2V0LT5mbGFncyAm IEFWX1BLVF9GTEFHX0tFWSk7CisgICAgICAgICBSZWFkVFMoUGFja2V0LCBMYXN0VmFsaWRUU1tU cmFja10sICgqVHJhY2tJbmRpY2VzKVtUcmFja10uVXNlRFRTKTsKKyAKKyAgICAgICAgIGlmIChG b3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZN RURJQV9UWVBFX1ZJREVPKSB7CistICAgICAgICAgICAgaW50NjRfdCBQVFMgPSBUcmFja0luZm8u VXNlRFRTID8gUGFja2V0LmR0cyA6IFBhY2tldC5wdHM7CisrICAgICAgICAgICAgaW50NjRfdCBQ VFMgPSBUcmFja0luZm8uVXNlRFRTID8gUGFja2V0LT5kdHMgOiBQYWNrZXQtPnB0czsKKyAgICAg ICAgICAgICBpZiAoUFRTID09IEFWX05PUFRTX1ZBTFVFKSB7CisgICAgICAgICAgICAgICAgIC8v IFZQeCBhbHQtcmVmcyBhcmUgb3V0cHV0IGFzIHBhY2tldHMgd2hpY2ggbGFjayB0aW1lc3RtcHMg b3IgZHVyYXRpb25zLCBzaW5jZQorICAgICAgICAgICAgICAgICAvLyB0aGV5IGFyZSBpbnZpc2li bGUuIEN1cnJlbnRseSwgdGhlIHRpbWVzdGFtcCBtYW5nbGluZyBjb2RlIGluIGxpYmF2Zm9ybWF0 CitAQCAtNDk1LDkgKzQ5OSwxMSBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhp bmcoKSB7CisgICAgICAgICAgICAgICAgIC8vIEZGTVMyIGN1cnJlbnRseSBzb3J0cyBwYWNrZXRz IGJ5IFBUUywgd2hpY2ggd2lsbCBicmVhayBkZWNvZGluZywgb3RoZXJ3aXNlLgorICAgICAgICAg ICAgICAgICBib29sIEhhc0FsdFJlZnMgPSAoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja10t PmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDggfHwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2Rl Y3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5KTsKKy0gICAgICAgICAgICAgICAgaWYg KFBhY2tldC5kdXJhdGlvbiA9PSAwICYmICFIYXNBbHRSZWZzKQorKyAgICAgICAgICAgICAgICBp ZiAoUGFja2V0LT5kdXJhdGlvbiA9PSAwICYmICFIYXNBbHRSZWZzKSB7CisrICAgICAgICAgICAg ICAgICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgICAgICAgICAgICAgIHRo cm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfSU5ERVhJTkcsIEZGTVNfRVJST1JfUEFSU0VS LAorICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHBhY2tldCBwdHMsIGR0cywgYW5k IGR1cmF0aW9uIik7CisrICAgICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgICAgICAgaWYg KFRyYWNrSW5mby5lbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgUFRTID0gMDsKK0BAIC01 MTMsNyArNTE5LDcgQEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgewor ICAgICAgICAgICAgIFBhcnNlVmlkZW9QYWNrZXQoQVZDb250ZXh0c1tUcmFja10sIFBhY2tldCwg JlJlcGVhdFBpY3QsICZGcmFtZVR5cGUsICZJbnZpc2libGUsICZMYXN0UGljU3RydWN0KTsKKyAK KyAgICAgICAgICAgICBUcmFja0luZm8uQWRkVmlkZW9GcmFtZShQVFMsIFJlcGVhdFBpY3QsIEtl eUZyYW1lLAorLSAgICAgICAgICAgICAgICBGcmFtZVR5cGUsIFBhY2tldC5wb3MsIEludmlzaWJs ZSk7CisrICAgICAgICAgICAgICAgIEZyYW1lVHlwZSwgUGFja2V0LT5wb3MsIEludmlzaWJsZSk7 CisgICAgICAgICB9IGVsc2UgaWYgKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2Rl Y3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8pIHsKKyAgICAgICAgICAgICAv LyBGb3IgdmlkZW8gc2Vla2luZyB0aW1lc3RhbXBzIGFyZSB1c2VkIG9ubHkgaWYgYWxsIHBhY2tl dHMgaGF2ZQorICAgICAgICAgICAgIC8vIHRpbWVzdGFtcHMsIHdoaWxlIGZvciBhdWRpbyB0aGV5 J3JlIHVzZWQgaWYgYW55IGhhdmUgdGltZXN0YW1wcywKK0BAIC01MjIsMjggKzUyOCwyOSBAQCBG Rk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgICAg IFRyYWNrSW5mby5IYXNUUyA9IHRydWU7CisgCisgICAgICAgICAgICAgaW50NjRfdCBTdGFydFNh bXBsZSA9IEFWQ29udGV4dHNbVHJhY2tdLkN1cnJlbnRTYW1wbGU7CistICAgICAgICAgICAgdWlu dDMyX3QgU2FtcGxlQ291bnQgPSBJbmRleEF1ZGlvUGFja2V0KFRyYWNrLCAmUGFja2V0LCBBVkNv bnRleHRzW1RyYWNrXSwgKlRyYWNrSW5kaWNlcyk7CisrICAgICAgICAgICAgdWludDMyX3QgU2Ft cGxlQ291bnQgPSBJbmRleEF1ZGlvUGFja2V0KFRyYWNrLCBQYWNrZXQsIEFWQ29udGV4dHNbVHJh Y2tdLCAqVHJhY2tJbmRpY2VzKTsKKyAgICAgICAgICAgICBUcmFja0luZm8uU2FtcGxlUmF0ZSA9 IEFWQ29udGV4dHNbVHJhY2tdLkNvZGVjQ29udGV4dC0+c2FtcGxlX3JhdGU7CisgCisgICAgICAg ICAgICAgVHJhY2tJbmZvLkFkZEF1ZGlvRnJhbWUoTGFzdFZhbGlkVFNbVHJhY2tdLAorLSAgICAg ICAgICAgICAgICBTdGFydFNhbXBsZSwgU2FtcGxlQ291bnQsIEtleUZyYW1lLCBQYWNrZXQucG9z LCBQYWNrZXQuZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKysgICAgICAgICAgICAgICAg U3RhcnRTYW1wbGUsIFNhbXBsZUNvdW50LCBLZXlGcmFtZSwgUGFja2V0LT5wb3MsIFBhY2tldC0+ ZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGlm ICghKFBhY2tldC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpKQorLSAgICAgICAgICAgIFRy YWNrSW5mby5MYXN0RHVyYXRpb24gPSBQYWNrZXQuZHVyYXRpb247CisrICAgICAgICBpZiAoIShQ YWNrZXQtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpCisrICAgICAgICAgICAgVHJhY2tJ bmZvLkxhc3REdXJhdGlvbiA9IFBhY2tldC0+ZHVyYXRpb247CisgCistICAgICAgICBhdl9wYWNr ZXRfdW5yZWYoJlBhY2tldCk7CisrICAgICAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKyAg ICAgfQorKyAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAKKyAgICAgVHJhY2tJbmRpY2Vz LT5GaW5hbGl6ZShBVkNvbnRleHRzLCBGb3JtYXRDb250ZXh0LT5pZm9ybWF0LT5uYW1lKTsKKyAg ICAgcmV0dXJuIFRyYWNrSW5kaWNlcy5yZWxlYXNlKCk7CisgfQorIAorLXZvaWQgRkZNU19JbmRl eGVyOjpSZWFkVFMoY29uc3QgQVZQYWNrZXQgJlBhY2tldCwgaW50NjRfdCAmVFMsIGJvb2wgJlVz ZURUUykgeworLSAgICBpZiAoIVVzZURUUyAmJiBQYWNrZXQucHRzICE9IEFWX05PUFRTX1ZBTFVF KQorLSAgICAgICAgVFMgPSBQYWNrZXQucHRzOworK3ZvaWQgRkZNU19JbmRleGVyOjpSZWFkVFMo Y29uc3QgQVZQYWNrZXQgKlBhY2tldCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUykgeworKyAg ICBpZiAoIVVzZURUUyAmJiBQYWNrZXQtPnB0cyAhPSBBVl9OT1BUU19WQUxVRSkKKysgICAgICAg IFRTID0gUGFja2V0LT5wdHM7CisgICAgIGlmIChUUyA9PSBBVl9OT1BUU19WQUxVRSkKKyAgICAg ICAgIFVzZURUUyA9IHRydWU7CistICAgIGlmIChVc2VEVFMgJiYgUGFja2V0LmR0cyAhPSBBVl9O T1BUU19WQUxVRSkKKy0gICAgICAgIFRTID0gUGFja2V0LmR0czsKKysgICAgaWYgKFVzZURUUyAm JiBQYWNrZXQtPmR0cyAhPSBBVl9OT1BUU19WQUxVRSkKKysgICAgICAgIFRTID0gUGFja2V0LT5k dHM7CisgfQorZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2luZGV4aW5nLmggYi9zcmMvY29yZS9pbmRl eGluZy5oCitpbmRleCAzY2ZjM2MzLi41YzA2ODY4IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvaW5k ZXhpbmcuaAorKysrIGIvc3JjL2NvcmUvaW5kZXhpbmcuaAorQEAgLTgwLDEwICs4MCwxMCBAQCBw cml2YXRlOgorICAgICBpbnQ2NF90IEZpbGVzaXplOworICAgICB1aW50OF90IERpZ2VzdFsyMF07 CisgCistICAgIHZvaWQgUmVhZFRTKGNvbnN0IEFWUGFja2V0ICZQYWNrZXQsIGludDY0X3QgJlRT LCBib29sICZVc2VEVFMpOworKyAgICB2b2lkIFJlYWRUUyhjb25zdCBBVlBhY2tldCAqUGFja2V0 LCBpbnQ2NF90ICZUUywgYm9vbCAmVXNlRFRTKTsKKyAgICAgdm9pZCBDaGVja0F1ZGlvUHJvcGVy dGllcyhpbnQgVHJhY2ssIEFWQ29kZWNDb250ZXh0ICpDb250ZXh0KTsKKyAgICAgdWludDMyX3Qg SW5kZXhBdWRpb1BhY2tldChpbnQgVHJhY2ssIEFWUGFja2V0ICpQYWNrZXQsIFNoYXJlZEFWQ29u dGV4dCAmQ29udGV4dCwgRkZNU19JbmRleCAmVHJhY2tJbmRpY2VzKTsKKy0gICAgdm9pZCBQYXJz ZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0 LCBpbnQgKlJlcGVhdFBpY3QsIGludCAqRnJhbWVUeXBlLCBib29sICpJbnZpc2libGUsIGVudW0g QVZQaWN0dXJlU3RydWN0dXJlICpMYXN0UGljU3RydWN0KTsKKysgICAgdm9pZCBQYXJzZVZpZGVv UGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAqcGt0LCBpbnQg KlJlcGVhdFBpY3QsIGludCAqRnJhbWVUeXBlLCBib29sICpJbnZpc2libGUsIGVudW0gQVZQaWN0 dXJlU3RydWN0dXJlICpMYXN0UGljU3RydWN0KTsKKyAgICAgdm9pZCBGcmVlKCk7CisgcHVibGlj OgorICAgICBGRk1TX0luZGV4ZXIoY29uc3QgY2hhciAqRmlsZW5hbWUpOworZGlmZiAtLWdpdCBh L3NyYy9jb3JlL3V0aWxzLmNwcCBiL3NyYy9jb3JlL3V0aWxzLmNwcAoraW5kZXggY2U2NzUzMy4u OGEyZTk5NyAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3V0aWxzLmNwcAorKysrIGIvc3JjL2NvcmUv dXRpbHMuY3BwCitAQCAtNjIsMTIgKzYyLDYgQEAgdm9pZCBDbGVhckVycm9ySW5mbyhGRk1TX0Vy cm9ySW5mbyAqRXJyb3JJbmZvKSB7CisgICAgIH0KKyB9CisgCistdm9pZCBJbml0TnVsbFBhY2tl dChBVlBhY2tldCAmcGt0KSB7CistICAgIGF2X2luaXRfcGFja2V0KCZwa3QpOworLSAgICBwa3Qu ZGF0YSA9IG51bGxwdHI7CistICAgIHBrdC5zaXplID0gMDsKKy19CistCisgdm9pZCBGaWxsQVAo RkZNU19BdWRpb1Byb3BlcnRpZXMgJkFQLCBBVkNvZGVjQ29udGV4dCAqQ1RYLCBGRk1TX1RyYWNr ICZGcmFtZXMpIHsKKyAgICAgQVAuU2FtcGxlRm9ybWF0ID0gc3RhdGljX2Nhc3Q8RkZNU19TYW1w bGVGb3JtYXQ+KGF2X2dldF9wYWNrZWRfc2FtcGxlX2ZtdChDVFgtPnNhbXBsZV9mbXQpKTsKKyAg ICAgQVAuQml0c1BlclNhbXBsZSA9IGF2X2dldF9ieXRlc19wZXJfc2FtcGxlKENUWC0+c2FtcGxl X2ZtdCkgKiA4OworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3V0aWxzLmggYi9zcmMvY29yZS91dGls cy5oCitpbmRleCA5ODE5ZGM3Li4wMDNhYjc5IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdXRpbHMu aAorKysrIGIvc3JjL2NvcmUvdXRpbHMuaAorQEAgLTU4LDcgKzU4LDYgQEAgc3RkOjp1bmlxdWVf cHRyPFQ+IG1ha2VfdW5pcXVlKEFyZ3MmJi4uLiBhcmdzKSB7CisgfQorIAorIHZvaWQgQ2xlYXJF cnJvckluZm8oRkZNU19FcnJvckluZm8gKkVycm9ySW5mbyk7Cistdm9pZCBJbml0TnVsbFBhY2tl dChBVlBhY2tldCAmcGt0KTsKKyB2b2lkIEZpbGxBUChGRk1TX0F1ZGlvUHJvcGVydGllcyAmQVAs IEFWQ29kZWNDb250ZXh0ICpDVFgsIEZGTVNfVHJhY2sgJkZyYW1lcyk7CisgCisgdm9pZCBMQVZG T3BlbkZpbGUoY29uc3QgY2hhciAqU291cmNlRmlsZSwgQVZGb3JtYXRDb250ZXh0IComRm9ybWF0 Q29udGV4dCwgaW50IFRyYWNrKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS92aWRlb3NvdXJjZS5j cHAgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKK2luZGV4IDA2YmQxNjEuLmI4ODk5NzAgMTAw NjQ0CistLS0gYS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL3ZpZGVv c291cmNlLmNwcAorQEAgLTY3MywzMCArNjczLDM0IEBAIHZvaWQgRkZNU19WaWRlb1NvdXJjZTo6 RGVjb2RlTmV4dEZyYW1lKGludDY0X3QgJkFTdGFydFRpbWUsIGludDY0X3QgJlBvcykgeworICAg ICBpZiAoSGFzUGVuZGluZ0RlbGF5ZWRGcmFtZXMoKSkKKyAgICAgICAgIHJldHVybjsKKyAKKy0g ICAgQVZQYWNrZXQgUGFja2V0OworLSAgICBJbml0TnVsbFBhY2tldChQYWNrZXQpOworLQorLSAg ICB3aGlsZSAoUmVhZEZyYW1lKCZQYWNrZXQpID49IDApIHsKKy0gICAgICAgIGlmIChQYWNrZXQu c3RyZWFtX2luZGV4ICE9IFZpZGVvVHJhY2spIHsKKy0gICAgICAgICAgICBhdl9wYWNrZXRfdW5y ZWYoJlBhY2tldCk7CisrICAgIEFWUGFja2V0ICpQYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsK KysgICAgaWYgKCFQYWNrZXQpCisrICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VS Uk9SX0RFQ09ESU5HLCBGRk1TX0VSUk9SX0FMTE9DQVRJT05fRkFJTEVELAorKyAgICAgICAgICAg ICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0LiIpOworKworKyAgICB3aGlsZSAoUmVhZEZyYW1l KFBhY2tldCkgPj0gMCkgeworKyAgICAgICAgaWYgKFBhY2tldC0+c3RyZWFtX2luZGV4ICE9IFZp ZGVvVHJhY2spIHsKKysgICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKyAgICAg ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmIChBU3RhcnRUaW1l IDwgMCkKKy0gICAgICAgICAgICBBU3RhcnRUaW1lID0gRnJhbWVzLlVzZURUUyA/IFBhY2tldC5k dHMgOiBQYWNrZXQucHRzOworKyAgICAgICAgICAgIEFTdGFydFRpbWUgPSBGcmFtZXMuVXNlRFRT ID8gUGFja2V0LT5kdHMgOiBQYWNrZXQtPnB0czsKKyAKKyAgICAgICAgIGlmIChQb3MgPCAwKQor LSAgICAgICAgICAgIFBvcyA9IFBhY2tldC5wb3M7CisrICAgICAgICAgICAgUG9zID0gUGFja2V0 LT5wb3M7CisgCistICAgICAgICBib29sIEZyYW1lRmluaXNoZWQgPSBEZWNvZGVQYWNrZXQoJlBh Y2tldCk7CistICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CistICAgICAgICBpZiAo RnJhbWVGaW5pc2hlZCkKKysgICAgICAgIGJvb2wgRnJhbWVGaW5pc2hlZCA9IERlY29kZVBhY2tl dChQYWNrZXQpOworKyAgICAgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisrICAgICAgICBp ZiAoRnJhbWVGaW5pc2hlZCkgeworKyAgICAgICAgICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQp OworICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICAvLyBG bHVzaCBmaW5hbCBmcmFtZXMKKy0gICAgSW5pdE51bGxQYWNrZXQoUGFja2V0KTsKKy0gICAgRGVj b2RlUGFja2V0KCZQYWNrZXQpOworKyAgICBEZWNvZGVQYWNrZXQoUGFja2V0KTsKKysgICAgYXZf cGFja2V0X2ZyZWUoJlBhY2tldCk7CisgfQorIAorIGJvb2wgRkZNU19WaWRlb1NvdXJjZTo6U2Vl a1RvKGludCBuLCBpbnQgU2Vla09mZnNldCkgeworLS0gCisyLjQwLjAKKworRnJvbSBiZjllMDNl OWUwODUzNGMwMjRlNWE3NDRhNjQzN2M0YWFjMTYwMjAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQorRnJvbTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CitE YXRlOiBUdWUsIDQgTWF5IDIwMjEgMTQ6MjA6NDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNd IGNvbmZpZ3VyZTogUmVtb3ZlIGRlcHJlY2F0ZWQgQVBJIHVzZQorCitTaWduZWQtb2ZmLWJ5OiBE ZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZp Z3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2lu ZGV4IGIzNWVmODBiYy4uZDE5NzE0ZDBmIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysg Yi9jb25maWd1cmUuYWMKK0BAIC0xMDIsMTAgKzEwMiwxMCBAQCBDRkxBR1M9IiRfQ0ZMQUdTICRG Rk1QRUdfQ0ZMQUdTIgorCisgQUNfREVGVU4oW1RFU1RfRkZNUEVHXSwKKyAgICAgICAgICBbQUNf TElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworLSAgICAgICAgICAgICNpbmNsdWRlIDxs aWJhdmNvZGVjL2F2Y29kZWMuaD4KKysgICAgICAgICAgICAjaW5jbHVkZSA8bGliYXZmb3JtYXQv YXZmb3JtYXQuaD4KKyAgICAgICAgICAgICAjaW5jbHVkZSA8bGlic3dzY2FsZS9zd3NjYWxlLmg+ CisgICAgICAgICAgICAgXV0sW1sKKy0gICAgICAgICAgICAgICAgYXZjb2RlY19yZWdpc3Rlcl9h bGwoKTsKKysgICAgICAgICAgICAgICAgYXZmb3JtYXRfbmV0d29ya19pbml0KCk7CisgICAgICAg ICAgICAgICAgIHN3c2NhbGVfdmVyc2lvbigpOworICAgICAgICAgICAgIF1dKV0sIFtldmFsICQx PXllc10sIFtldmFsICQxPW5vXSkKKyAgICAgICAgIF0pCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv ZmZtczIvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXMyL3RlbXBsYXRlCmluZGV4IDY4ZThhMGMxNGJj ZS4uMmFjZmFkYWM0NGIzIDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZmbXMyL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdmZm1zMicKIHBrZ25hbWU9ZmZtczIKIHZlcnNpb249Mi40MAotcmV2aXNpb249MQorcmV2 aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZW5h YmxlLXNoYXJlZCAtLWRpc2FibGUtc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IGF1dG9jb25mIGF1dG9tYWtlIGxpYnRvb2wiCgpGcm9tIDc0NTllZTZhZTZhNWYyM2M3M2U4NWQz NzUzYmQ5ZThmMDM5NTFkNWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAK U3ViamVjdDogW1BBVENIIDAzNi8xMTNdIGZyZWVyZHA6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogLi4uL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoICAgIHwgNDIg KysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9mcmVlcmRwL3RlbXBsYXRlICAgICAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2Zm bXBlZzZfYWEyY2I5YWEucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hl cy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoIGIvc3JjcGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVn Nl9hYTJjYjlhYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LmE0MzI0ZGEzYTg4MgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZnJlZXJkcC9wYXRjaGVz L2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBhYTJjYjlhYTVm ZjU1NjI0MzM1OThiYTE2OGE0NjZlMDc1MmJjYTBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogYWthbGxhYmV0aCA8YWthbGxhYmV0aEBwb3N0ZW8ubmV0PgorRGF0ZTogVHVlLCAxNCBG ZWIgMjAyMyAwNzo0ODo1NCArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXhlZCAjODY4NjogVXBk YXRlIGgyNjQgdG8gdXNlIG5ldyBGRk1QRUcgQVBJCisKKy0tLQorIGNoYW5uZWxzL3RzbWYvY2xp ZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jIHwgMiArKworIGxpYmZyZWVyZHAvY29kZWMvaDI2NF9m Zm1wZWcuYyAgICAgICAgICAgIHwgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25z KCspCisKK2RpZmYgLS1naXQgYS9jaGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1w ZWcuYyBiL2NoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jCitpbmRleCAz Mzk0NjJkODY1Zi4uYmVlYTgwYjdhMWUgMTAwNjQ0CistLS0gYS9jaGFubmVscy90c21mL2NsaWVu dC9mZm1wZWcvdHNtZl9mZm1wZWcuYworKysrIGIvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVn L3RzbWZfZmZtcGVnLmMKK0BAIC0yMzksOCArMjM5LDEwIEBAIHN0YXRpYyBCT09MIHRzbWZfZmZt cGVnX2luaXRfc3RyZWFtKElUU01GRGVjb2RlciogZGVjb2RlciwgY29uc3QgVFNfQU1fTUVESUFf VFlQCisgCQl9CisgCX0KKyAKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX0lOVCA8IEFWX1ZFUlNJ T05fSU5UKDU5LCAxOCwgMTAwKQorIAlpZiAobWRlY29kZXItPmNvZGVjLT5jYXBhYmlsaXRpZXMg JiBBVl9DT0RFQ19DQVBfVFJVTkNBVEVEKQorIAkJbWRlY29kZXItPmNvZGVjX2NvbnRleHQtPmZs YWdzIHw9IEFWX0NPREVDX0ZMQUdfVFJVTkNBVEVEOworKyNlbmRpZgorIAorIAlyZXR1cm4gVFJV RTsKKyB9CitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jIGIvbGli ZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jCitpbmRleCA4YTIzZGIyNDczYy4uODk2YTMzMzAx OWIgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMKKysrKyBiL2xp YmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYworQEAgLTYxNSwxMCArNjE1LDEyIEBAIHN0YXRp YyBCT09MIGxpYmF2Y29kZWNfaW5pdChIMjY0X0NPTlRFWFQqIGgyNjQpCisgCQkJZ290byBFWENF UFRJT047CisgCQl9CisgCisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9O X0lOVCg1OSwgMTgsIDEwMCkKKyAJCWlmIChzeXMtPmNvZGVjRGVjb2Rlci0+Y2FwYWJpbGl0aWVz ICYgQVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKyAJCXsKKyAJCQlzeXMtPmNvZGVjRGVjb2RlckNv bnRleHQtPmZsYWdzIHw9IEFWX0NPREVDX0ZMQUdfVFJVTkNBVEVEOworIAkJfQorKyNlbmRpZgor IAorICNpZmRlZiBXSVRIX1ZBQVBJCisgCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVyZHAvdGVt cGxhdGUgYi9zcmNwa2dzL2ZyZWVyZHAvdGVtcGxhdGUKaW5kZXggMjVlOGFhOTY3N2YwLi40ZDUx YzgxODk5MDIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZnJlZXJkcC90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2ZyZWVyZHAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdmcmVlcmRwJwogcGtnbmFtZT1mcmVlcmRwCiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfQUxT QT1PTiAtRFdJVEhfQ1VQUz1PRkYgLURXSVRIX0ZGTVBFRz1PTgogIC1EV0lUSF9HU1RSRUFNRVJf MF8xMD1PRkYgLURXSVRIX0dTVFJFQU1FUl8xXzA9T0ZGIC1EV0lUSF9KUEVHPU9OCgpGcm9tIGZl ZDE5YjUzMWM1OTM0YTJhZGE4NDAxZmE2OGUxMWVlZWFhZTY0MmIgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNy8xMTNdIGdlcmJlcmE6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlIGIvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRl CmluZGV4IGFlMTRmMzVjNzY3Yy4uMmRjMGFjMGNlMDNiIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dl cmJlcmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ2VyYmVyYScKIHBrZ25hbWU9Z2VyYmVyYQogdmVy c2lvbj0xLjEyLjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBj b25maWd1cmVfYXJncz0iLURXSVRIX1NZU1RFTUQ9MCAtRFdJVEhfQVZDT0RFQz0xIgogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSAxNGU4MzBhMjNjYjUzYzJjZjNlOWIzNmVmZWU3 ZDA5NWE3NmJlMWUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMzgvMTEzXSBnb2xkZW5kaWN0OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzQucGF0Y2ggfCAgMjEgLS0KIHNy Y3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggfCAyMzIgKysrKysrKysrKysr KysrKysrKysrKysKIHNyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAg IDIgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjMzIGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygt KQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzQu cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVn NC5wYXRjaCBiL3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzQucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNDVmYTI3ZjU0Yi4uMDAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzQucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwyMSArMCwwIEBACi0tLS0gYS9mZm1wZWdhdWRpby5jYy5vcmlnIDIwMTgtMDUtMDkgMjI6 MTY6MTMuNDgwNjU5OTU4ICswMjAwCi0rKysgYi9mZm1wZWdhdWRpby5jYyAgICAgIDIwMTgtMDUt MDkgMjI6MTY6NTAuNzQ4MzIyNzkwICswMjAwCi1AQCAtMTQzLDcgKzE0Myw3IEBACi0gICAgIHJl dHVybiBmYWxzZTsKLSAgIH0KLQotLSAgdW5zaWduZWQgY2hhciAqIGF2aW9CdWZmZXIgPSAoIHVu c2lnbmVkIGNoYXIgKiApYXZfbWFsbG9jKCBrQnVmZmVyU2l6ZSArIEZGX0lOUFVUX0JVRkZFUl9Q QURESU5HX1NJWkUgKTsKLSsgIHVuc2lnbmVkIGNoYXIgKiBhdmlvQnVmZmVyID0gKCB1bnNpZ25l ZCBjaGFyICogKWF2X21hbGxvYygga0J1ZmZlclNpemUgKyBBVl9JTlBVVF9CVUZGRVJfUEFERElO R19TSVpFICk7Ci0gICBpZiAoICFhdmlvQnVmZmVyICkKLSAgIHsKLSAgICAgZXJyb3JTdHJpbmcg PSBRT2JqZWN0Ojp0ciggImF2X21hbGxvYygpIGZhaWxlZC4iICk7Ci1AQCAtMzgwLDcgKzM4MCw3 IEBACi0gICB9Ci0KLSAgIGlmICggIVF0NHg1OjpBdG9taWNJbnQ6OmxvYWRBY3F1aXJlKCBpc0Nh bmNlbGxlZF8gKSAmJgotLSAgICAgICBjb2RlY0NvbnRleHRfLT5jb2RlYy0+Y2FwYWJpbGl0aWVz ICYgQ09ERUNfQ0FQX0RFTEFZICkKLSsgICAgICAgY29kZWNDb250ZXh0Xy0+Y29kZWMtPmNhcGFi aWxpdGllcyAmIEFWX0NPREVDX0NBUF9ERUxBWSApCi0gICB7Ci0gICAgIGF2X2luaXRfcGFja2V0 KCAmcGFja2V0ICk7Ci0gICAgIGludCBnb3RGcmFtZSA9IDA7Ci0KZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2dvbGRlbmRpY3Qv cGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uN2NmYzk4YWRhMzY4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9nb2xkZW5kaWN0 L3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDIzMiBAQAorRnJvbSAwM2JiZTAxYjc5 YTFmMDdhNjc4MGNiNjBmMjNhMDg3MTA0YzVkNzdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogQWJzNjIgPG90dG9tYW5uQHlhbmRleC5ydT4KK0RhdGU6IEZyaSwgMzAgTWFyIDIwMTgg MjI6NTM6MjQgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IHdhcm5pbmdzIHdoaWxlIGNvbXBp bGUgd2l0aCBGRk1wZWcgMy40LjIgKGlzc3VlICM5NzgpCisKKy0tLQorIGZmbXBlZ2F1ZGlvLmNj IHwgNjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0K KyAxIGZpbGUgY2hhbmdlZCwgNjIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlm ZiAtLWdpdCBhL2ZmbXBlZ2F1ZGlvLmNjIGIvZmZtcGVnYXVkaW8uY2MKK2luZGV4IGVkMTE3MmJk ZC4uNTZlOGY3ODhlIDEwMDY0NAorLS0tIGEvZmZtcGVnYXVkaW8uY2MKKysrKyBiL2ZmbXBlZ2F1 ZGlvLmNjCitAQCAtOTEsNiArOTEsNyBAQCBzdHJ1Y3QgRGVjb2RlckNvbnRleHQKKyAgIFFCeXRl QXJyYXkgYXVkaW9EYXRhXzsKKyAgIFFEYXRhU3RyZWFtIGF1ZGlvRGF0YVN0cmVhbV87CisgICBB VkZvcm1hdENvbnRleHQgKiBmb3JtYXRDb250ZXh0XzsKKysgIEFWQ29kZWMgKiBjb2RlY187Cisg ICBBVkNvZGVjQ29udGV4dCAqIGNvZGVjQ29udGV4dF87CisgICBBVklPQ29udGV4dCAqIGF2aW9D b250ZXh0XzsKKyAgIEFWU3RyZWFtICogYXVkaW9TdHJlYW1fOworQEAgLTExNCw2ICsxMTUsNyBA QCBEZWNvZGVyQ29udGV4dDo6RGVjb2RlckNvbnRleHQoIFFCeXRlQXJyYXkgY29uc3QgJiBhdWRp b0RhdGEsIFFBdG9taWNJbnQgJiBpc0NhbgorICAgYXVkaW9EYXRhXyggYXVkaW9EYXRhICksCisg ICBhdWRpb0RhdGFTdHJlYW1fKCBhdWRpb0RhdGFfICksCisgICBmb3JtYXRDb250ZXh0XyggTlVM TCApLAorKyAgY29kZWNfKCBOVUxMICksCisgICBjb2RlY0NvbnRleHRfKCBOVUxMICksCisgICBh dmlvQ29udGV4dF8oIE5VTEwgKSwKKyAgIGF1ZGlvU3RyZWFtXyggTlVMTCApLAorQEAgLTE0Myw3 ICsxNDUsMTEgQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6b3BlbkNvZGVjKCBRU3RyaW5nICYgZXJy b3JTdHJpbmcgKQorICAgICByZXR1cm4gZmFsc2U7CisgICB9CisKKysjaWYgTElCQVZDT0RFQ19W RVJTSU9OX01BSk9SIDwgNTYgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTYgJiYg TElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwgNTYgKQorICAgdW5zaWduZWQgY2hhciAqIGF2aW9C dWZmZXIgPSAoIHVuc2lnbmVkIGNoYXIgKiApYXZfbWFsbG9jKCBrQnVmZmVyU2l6ZSArIEZGX0lO UFVUX0JVRkZFUl9QQURESU5HX1NJWkUgKTsKKysjZWxzZQorKyAgdW5zaWduZWQgY2hhciAqIGF2 aW9CdWZmZXIgPSAoIHVuc2lnbmVkIGNoYXIgKiApYXZfbWFsbG9jKCBrQnVmZmVyU2l6ZSArIEFW X0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUgKTsKKysjZW5kaWYKKyAgIGlmICggIWF2aW9CdWZm ZXIgKQorICAgeworICAgICBlcnJvclN0cmluZyA9IFFPYmplY3Q6OnRyKCAiYXZfbWFsbG9jKCkg ZmFpbGVkLiIgKTsKK0BAIC0xODYsNyArMTkyLDExIEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6Om9w ZW5Db2RlYyggUVN0cmluZyAmIGVycm9yU3RyaW5nICkKKyAgIC8vIEZpbmQgYXVkaW8gc3RyZWFt LCB1c2UgdGhlIGZpcnN0IGF1ZGlvIHN0cmVhbSBpZiBhdmFpbGFibGUKKyAgIGZvciAoIHVuc2ln bmVkIGkgPSAwOyBpIDwgZm9ybWF0Q29udGV4dF8tPm5iX3N0cmVhbXM7IGkrKyApCisgICB7Cisr I2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU3IHx8ICggTElCQVZDT0RFQ19WRVJTSU9O X01BSk9SID09IDU3ICYmIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiA8IDMzICkKKyAgICAgaWYg KCBmb3JtYXRDb250ZXh0Xy0+c3RyZWFtc1tpXS0+Y29kZWMtPmNvZGVjX3R5cGUgPT0gQVZNRURJ QV9UWVBFX0FVRElPICkKKysjZWxzZQorKyAgICAgIGlmICggZm9ybWF0Q29udGV4dF8tPnN0cmVh bXNbaV0tPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTyApCisrI2Vu ZGlmCisgICAgIHsKKyAgICAgICBhdWRpb1N0cmVhbV8gPSBmb3JtYXRDb250ZXh0Xy0+c3RyZWFt c1tpXTsKKyAgICAgICBicmVhazsKK0BAIC0xOTgsMjIgKzIwOCwzOCBAQCBib29sIERlY29kZXJD b250ZXh0OjpvcGVuQ29kZWMoIFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgICAgIHJldHVybiBm YWxzZTsKKyAgIH0KKworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1NyB8fCAoIExJ QkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1NyAmJiBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1Ig PCAzMyApCisgICBjb2RlY0NvbnRleHRfID0gYXVkaW9TdHJlYW1fLT5jb2RlYzsKKy0gIEFWQ29k ZWMgKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKCBjb2RlY0NvbnRleHRfLT5jb2RlY19p ZCApOworLSAgaWYgKCAhY29kZWMgKQorKyAgY29kZWNfID0gYXZjb2RlY19maW5kX2RlY29kZXIo IGNvZGVjQ29udGV4dF8tPmNvZGVjX2lkICk7CisrICBpZiAoICFjb2RlY18gKQorICAgeworICAg ICBlcnJvclN0cmluZyA9IFFPYmplY3Q6OnRyKCAiQ29kZWMgW2lkOiAlMV0gbm90IGZvdW5kLiIg KS5hcmcoIGNvZGVjQ29udGV4dF8tPmNvZGVjX2lkICk7CisgICAgIHJldHVybiBmYWxzZTsKKyAg IH0KKysjZWxzZQorKyAgY29kZWNfID0gYXZjb2RlY19maW5kX2RlY29kZXIoIGF1ZGlvU3RyZWFt Xy0+Y29kZWNwYXItPmNvZGVjX2lkICk7CisrICBpZiAoICFjb2RlY18gKQorKyAgeworKyAgICBl cnJvclN0cmluZyA9IFFPYmplY3Q6OnRyKCAiQ29kZWMgW2lkOiAlMV0gbm90IGZvdW5kLiIgKS5h cmcoIGF1ZGlvU3RyZWFtXy0+Y29kZWNwYXItPmNvZGVjX2lkICk7CisrICAgIHJldHVybiBmYWxz ZTsKKysgIH0KKysgIGNvZGVjQ29udGV4dF8gPSBhdmNvZGVjX2FsbG9jX2NvbnRleHQzKCBjb2Rl Y18gKTsKKysgIGlmICggIWNvZGVjQ29udGV4dF8gKQorKyAgeworKyAgICBlcnJvclN0cmluZyA9 IFFPYmplY3Q6OnRyKCAiYXZjb2RlY19hbGxvY19jb250ZXh0MygpIGZhaWxlZC4iICk7CisrICAg IHJldHVybiBmYWxzZTsKKysgIH0KKysgIGF2Y29kZWNfcGFyYW1ldGVyc190b19jb250ZXh0KCBj b2RlY0NvbnRleHRfLCBhdWRpb1N0cmVhbV8tPmNvZGVjcGFyICk7CisrI2VuZGlmCisKKy0gIHJl dCA9IGF2Y29kZWNfb3BlbjIoIGNvZGVjQ29udGV4dF8sIGNvZGVjLCBOVUxMICk7CisrICByZXQg PSBhdmNvZGVjX29wZW4yKCBjb2RlY0NvbnRleHRfLCBjb2RlY18sIE5VTEwgKTsKKyAgIGlmICgg cmV0IDwgMCApCisgICB7CisgICAgIGVycm9yU3RyaW5nID0gUU9iamVjdDo6dHIoICJhdmNvZGVj X29wZW4yKCkgZmFpbGVkOiAlMS4iICkuYXJnKCBhdkVycm9yU3RyaW5nKCByZXQgKSApOworICAg ICByZXR1cm4gZmFsc2U7CisgICB9CisKKy0gIGF2X2xvZyggTlVMTCwgQVZfTE9HX0lORk8sICJD b2RlYyBvcGVuOiAlczogY2hhbm5lbHM6ICVkLCByYXRlOiAlZCwgZm9ybWF0OiAlc1xuIiwgY29k ZWMtPmxvbmdfbmFtZSwKKysgIGF2X2xvZyggTlVMTCwgQVZfTE9HX0lORk8sICJDb2RlYyBvcGVu OiAlczogY2hhbm5lbHM6ICVkLCByYXRlOiAlZCwgZm9ybWF0OiAlc1xuIiwgY29kZWNfLT5sb25n X25hbWUsCisgICAgICAgICAgIGNvZGVjQ29udGV4dF8tPmNoYW5uZWxzLCBjb2RlY0NvbnRleHRf LT5zYW1wbGVfcmF0ZSwgYXZfZ2V0X3NhbXBsZV9mbXRfbmFtZSggY29kZWNDb250ZXh0Xy0+c2Ft cGxlX2ZtdCApICk7CisgICByZXR1cm4gdHJ1ZTsKKyB9CitAQCAtMjUyLDEwICsyNzgsMTMgQEAg dm9pZCBEZWNvZGVyQ29udGV4dDo6Y2xvc2VDb2RlYygpCisKKyAgIC8vIENsb3NpbmcgYSBjb2Rl YyBjb250ZXh0IHdpdGhvdXQgcHJpb3IgYXZjb2RlY19vcGVuMigpIHdpbGwgcmVzdWx0IGluCisg ICAvLyBhIGNyYXNoIGluIGZmbXBlZworLSAgaWYgKCBhdWRpb1N0cmVhbV8gJiYgYXVkaW9TdHJl YW1fLT5jb2RlYyAmJiBhdWRpb1N0cmVhbV8tPmNvZGVjLT5jb2RlYyApCisrICBpZiAoIGF1ZGlv U3RyZWFtXyAmJiBjb2RlY0NvbnRleHRfICYmIGNvZGVjXyApCisgICB7CisgICAgIGF1ZGlvU3Ry ZWFtXy0+ZGlzY2FyZCA9IEFWRElTQ0FSRF9BTEw7CistICAgIGF2Y29kZWNfY2xvc2UoIGF1ZGlv U3RyZWFtXy0+Y29kZWMgKTsKKysgICAgYXZjb2RlY19jbG9zZSggY29kZWNDb250ZXh0XyApOwor KyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPiA1NyB8fCAoIExJQkFWQ09ERUNfVkVSU0lP Tl9NQUpPUiA9PSA1NyAmJiBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgPj0gMzMgKQorKyAgICBh dmNvZGVjX2ZyZWVfY29udGV4dCggJmNvZGVjQ29udGV4dF8gKTsKKysjZW5kaWYKKyAgIH0KKwor ICAgYXZmb3JtYXRfY2xvc2VfaW5wdXQoICZmb3JtYXRDb250ZXh0XyApOworQEAgLTM1Niw2ICsz ODUsNyBAQCBib29sIERlY29kZXJDb250ZXh0OjpwbGF5KCBRU3RyaW5nICYgZXJyb3JTdHJpbmcg KQorICAgICBpZiAoIHBhY2tldC5zdHJlYW1faW5kZXggPT0gYXVkaW9TdHJlYW1fLT5pbmRleCAp CisgICAgIHsKKyAgICAgICBBVlBhY2tldCBwYWNrID0gcGFja2V0OworKyNpZiBMSUJBVkNPREVD X1ZFUlNJT05fTUFKT1IgPCA1NyB8fCAoIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1NyAm JiBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgPCAzNyApCisgICAgICAgaW50IGdvdEZyYW1lID0g MDsKKyAgICAgICBkbworICAgICAgIHsKK0BAIC0zNzAsNiArNDAwLDE5IEBAIGJvb2wgRGVjb2Rl ckNvbnRleHQ6OnBsYXkoIFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgICAgICAgICBwYWNrLmRh dGEgKz0gbGVuOworICAgICAgIH0KKyAgICAgICB3aGlsZSggcGFjay5zaXplID4gMCApOworKyNl bHNlCisrICAgICAgaW50IHJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoIGNvZGVjQ29udGV4dF8s ICZwYWNrICk7CisrICAgICAgLyogcmVhZCBhbGwgdGhlIG91dHB1dCBmcmFtZXMgKGluIGdlbmVy YWwgdGhlcmUgbWF5IGJlIGFueSBudW1iZXIgb2YgdGhlbSkgKi8KKysgICAgICB3aGlsZSggcmV0 ID49IDAgKQorKyAgICAgIHsKKysgICAgICAgIHJldCA9IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZSgg Y29kZWNDb250ZXh0XywgZnJhbWUpOworKworKyAgICAgICAgaWYgKCBRdDR4NTo6QXRvbWljSW50 Ojpsb2FkQWNxdWlyZSggaXNDYW5jZWxsZWRfICkgfHwgcmV0IDwgMCApCisrICAgICAgICAgIGJy ZWFrOworKworKyAgICAgICAgcGxheUZyYW1lKCBmcmFtZSApOworKyAgICAgIH0KKysjZW5kaWYK KyAgICAgfQorICAgICAvLyBhdl9mcmVlX3BhY2tldCgpIG11c3QgYmUgY2FsbGVkIGFmdGVyIGVh Y2ggY2FsbCB0byBhdl9yZWFkX2ZyYW1lKCkKKyAjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9S IDwgNTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19W RVJTSU9OX01JTk9SIDwgNyApCitAQCAtMzc5LDYgKzQyMiw3IEBAIGJvb2wgRGVjb2RlckNvbnRl eHQ6OnBsYXkoIFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgI2VuZGlmCisgICB9CisKKysjaWYg TElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFK T1IgPT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwgMzcgKQorICAgaWYgKCAhUXQ0 eDU6OkF0b21pY0ludDo6bG9hZEFjcXVpcmUoIGlzQ2FuY2VsbGVkXyApICYmCisgICAgICAgIGNv ZGVjQ29udGV4dF8tPmNvZGVjLT5jYXBhYmlsaXRpZXMgJiBDT0RFQ19DQVBfREVMQVkgKQorICAg eworQEAgLTM5MSw2ICs0MzUsMTggQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6cGxheSggUVN0cmlu ZyAmIGVycm9yU3RyaW5nICkKKyAgICAgICBwbGF5RnJhbWUoIGZyYW1lICk7CisgICAgIH0KKyAg IH0KKysjZWxzZQorKyAgLyogZmx1c2ggdGhlIGRlY29kZXIgKi8KKysgIGF2X2luaXRfcGFja2V0 KCAmcGFja2V0ICk7CisrICBpbnQgcmV0ID0gYXZjb2RlY19zZW5kX3BhY2tldChjb2RlY0NvbnRl eHRfLCAmcGFja2V0ICk7CisrICB3aGlsZSggcmV0ID49IDAgKQorKyAgeworKyAgICByZXQgPSBh dmNvZGVjX3JlY2VpdmVfZnJhbWUoY29kZWNDb250ZXh0XywgZnJhbWUpOworKyAgICBpZiAoIFF0 NHg1OjpBdG9taWNJbnQ6OmxvYWRBY3F1aXJlKCBpc0NhbmNlbGxlZF8gKSB8fCByZXQgPCAwICkK KysgICAgICBicmVhazsKKysgICAgcGxheUZyYW1lKCBmcmFtZSApOworKyAgfQorKyNlbmRpZgor CisgI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU0CisgICBhdl9mcmVlKCBmcmFtZSAp OworMzIKK3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzUtMi5wYXRjaAorQ29tbWVu dCBvbiB0aGlzIGZpbGUKK0BAIC0wLDAgKzEsMzIgQEAKK0Zyb20gOTY2ZjRhOGI3OGU2MzI0Yjkz MGU1YTUwZjJiYjkzMGJkODdlNTY1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFi czYyIDxvdHRvbWFubkB5YW5kZXgucnU+CitEYXRlOiBGcmksIDI3IFNlcCAyMDE5IDE3OjAwOjUy ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZGbXBlZyBwbGF5ZXI6IEZpeCBzb21lIGNyYXNoZXMg b24gYnJva2VuIGZpbGVzCisKKy0tLQorIGZmbXBlZ2F1ZGlvLmNjIHwgNCArKysrCisgMSBmaWxl IGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZmZtcGVnYXVkaW8uY2Mg Yi9mZm1wZWdhdWRpby5jYworaW5kZXggNTZlOGY3ODhlLi40MTVmYzc5Y2IgMTAwNjQ0CistLS0g YS9mZm1wZWdhdWRpby5jYworKysrIGIvZmZtcGVnYXVkaW8uY2MKK0BAIC01MSw3ICs1MSw5IEBA IEF1ZGlvU2VydmljZSAmIEF1ZGlvU2VydmljZTo6aW5zdGFuY2UoKQorCisgQXVkaW9TZXJ2aWNl OjpBdWRpb1NlcnZpY2UoKQorIHsKKysjaWYgTElCQVZGT1JNQVRfVkVSU0lPTl9NQUpPUiA8IDU4 IHx8ICggTElCQVZGT1JNQVRfVkVSU0lPTl9NQUpPUiA9PSA1OCAmJiBMSUJBVkZPUk1BVF9WRVJT SU9OX01JTk9SIDwgOSApCisgICBhdl9yZWdpc3Rlcl9hbGwoKTsKKysjZW5kaWYKKyAgIGFvX2lu aXRpYWxpemUoKTsKKyB9CisKK0BAIC00MzgsNiArNDQwLDggQEAgYm9vbCBEZWNvZGVyQ29udGV4 dDo6cGxheSggUVN0cmluZyAmIGVycm9yU3RyaW5nICkKKyAjZWxzZQorICAgLyogZmx1c2ggdGhl IGRlY29kZXIgKi8KKyAgIGF2X2luaXRfcGFja2V0KCAmcGFja2V0ICk7CisrICBwYWNrZXQuZGF0 YSA9IE5VTEw7CisrICBwYWNrZXQuc2l6ZSA9IDA7CisgICBpbnQgcmV0ID0gYXZjb2RlY19zZW5k X3BhY2tldChjb2RlY0NvbnRleHRfLCAmcGFja2V0ICk7CisgICB3aGlsZSggcmV0ID49IDAgKQor ICAgeworMjUKK3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzUtMy5wYXRjaAorQ29t bWVudCBvbiB0aGlzIGZpbGUKK0BAIC0wLDAgKzEsMjUgQEAKK0Zyb20gOGFjYjI4OGM5ZTliZGIz YzZiZjJlODAzOTU0ZGQzYjZhYzI3M2MwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IExpYW8gSnVueHVhbiA8bWlrZWxqeEAxMjYuY29tPgorRGF0ZTogU3VuLCAyMCBGZWIgMjAyMiAx MjoyODowNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBhZGQgc3VwcG9ydCBmb3IgZmZtcGVnIDUu MAorCistLS0KKyBmZm1wZWdhdWRpby5jYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGlu c2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2ZmbXBlZ2F1ZGlvLmNjIGIvZmZtcGVnYXVkaW8u Y2MKK2luZGV4IGQ1NTBmNGE3Ny4uNzk0OGQyMTg3IDEwMDY0NAorLS0tIGEvZmZtcGVnYXVkaW8u Y2MKKysrKyBiL2ZmbXBlZ2F1ZGlvLmNjCitAQCAtOTQsNyArOTQsMTEgQEAgc3RydWN0IERlY29k ZXJDb250ZXh0CisgICBRQnl0ZUFycmF5IGF1ZGlvRGF0YV87CisgICBRRGF0YVN0cmVhbSBhdWRp b0RhdGFTdHJlYW1fOworICAgQVZGb3JtYXRDb250ZXh0ICogZm9ybWF0Q29udGV4dF87CisrI2lm IExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU5CisgICBBVkNvZGVjICogY29kZWNfOworKyNl bHNlCisrICBjb25zdCBBVkNvZGVjICogY29kZWNfOworKyNlbmRpZgorICAgQVZDb2RlY0NvbnRl eHQgKiBjb2RlY0NvbnRleHRfOworICAgQVZJT0NvbnRleHQgKiBhdmlvQ29udGV4dF87CisgICBB VlN0cmVhbSAqIGF1ZGlvU3RyZWFtXzsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ29sZGVuZGljdC90 ZW1wbGF0ZSBiL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZQppbmRleCA0NTQ0YWU3MTBlZTYu LjJjYTQxODVlNTM4YSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZQpAQCAtOSw3ICs5LDcgQEAgbWFrZWRlcGVu ZHM9InRpZmYtZGV2ZWwgcXQ1LWRldmVsIGxpYnZvcmJpcy1kZXZlbCB6bGliLWRldmVsCiAgbGli WHRzdC1kZXZlbCBodW5zcGVsbC1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgcXQ1LWRlY2xhcmF0aXZl LWRldmVsCiAgcXQ1LXdlYmtpdC1kZXZlbCBsem8tZGV2ZWwgYnppcDItZGV2ZWwgbGliYW8tZGV2 ZWwgcXQ1LXN2Zy1kZXZlbAogIGxpYmViLWRldmVsIHF0NS14MTFleHRyYXMtZGV2ZWwgZmZtcGVn LWRldmVsIGxpYmx6bWEtZGV2ZWwiCi1zaG9ydF9kZXNjPSJBIGZlYXR1cmUtcmljaCBkaWN0aW9u YXJ5IGxvb2t1cCBwcm9ncmFtIgorc2hvcnRfZGVzYz0iRmVhdHVyZS1yaWNoIGRpY3Rpb25hcnkg bG9va3VwIHByb2dyYW0iCiBtYWludGFpbmVyPSJKb2huIDxtZUBqb2hubnluYXRvci5kZXY+Igog bGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwOi8vZ29sZGVuZGljdC5v cmcvIgoKRnJvbSBmNDE0ZjZhN2YwMGU3NDgzMjU1ZWJhNzgwYWUzNzQ1MmQ2OGY4YzdlIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzkvMTEz XSBnc3QtbGliYXY6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtbGli YXYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZSBiL3NyY3Br Z3MvZ3N0LWxpYmF2L3RlbXBsYXRlCmluZGV4IGU5YTc5ZGM2NTBhNS4uZjA4MmJkMjExYzY1IDEw MDY0NAotLS0gYS9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1s aWJhdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1s aWJhdicKIHBrZ25hbWU9Z3N0LWxpYmF2CiB2ZXJzaW9uPTEuMjAuMwotcmV2aXNpb249MQorcmV2 aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB5 YXNtIgogbWFrZWRlcGVuZHM9Im9yYy1kZXZlbCBnc3QtcGx1Z2lucy1iYXNlMS1kZXZlbCBmZm1w ZWctZGV2ZWwiCgpGcm9tIGFmYTQxZTdhMmE1N2YyYWFmYzlmOGU4Y2YxOWNjMmJmODRkYmJiYTQg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDA0 MC8xMTNdIGdzdC1wbHVnaW5zLWJhZDE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0 LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0 ZQppbmRleCBmNTVmODJmZDRjNzcuLmRjOWQzODk3MzRlMSAxMDA2NDQKLS0tIGEvc3JjcGtncy9n c3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5z LWJhZDEnCiBwa2duYW1lPWdzdC1wbHVnaW5zLWJhZDEKLXZlcnNpb249MS4yMC4zCi1yZXZpc2lv bj0zCit2ZXJzaW9uPTEuMjIuMgorcmV2aXNpb249MgogYnVpbGRfaGVscGVyPSJnaXIiCiBidWls ZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EcGFja2FnZS1vcmlnaW49aHR0cHM6Ly92 b2lkbGludXgub3JnIC1EZG9jPWRpc2FibGVkCgpGcm9tIGJjMDY3MmMzODZkMzQxZmEwNDAzZDFl MzZjY2RjZTMxYjZjZGFiZGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAK U3ViamVjdDogW1BBVENIIDA0MS8xMTNdIGdzdC1ydHNwLXNlcnZlcjogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZSB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtcnRzcC1zZXJ2 ZXIvdGVtcGxhdGUKaW5kZXggMzNjZDY0Y2ViOTVlLi44Y2VlYThkMzRiNGIgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXJ0c3At c2VydmVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0 LXJ0c3Atc2VydmVyJwogcGtnbmFtZT1nc3QtcnRzcC1zZXJ2ZXIKIHZlcnNpb249MS4yMC4zCi1y ZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIHB5dGhvbjMiCiBtYWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBnc3QtcGx1Z2lu cy1iYWQxLWRldmVsIGdvYmplY3QtaW50cm9zcGVjdGlvbgoKRnJvbSAwOWViZmQ1Yjc1ZTA0ZGEz ZWMyZjhkZDgzYWY2ZTBkZGNlMzRmNjA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDIvMTEzXSBndXZjdmlldzogdXBkYXRlIHRvIDIuMC44 LgoKLS0tCiBzcmNwa2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2ggfCAxMCAr KysrKysrKysrCiBzcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgfCAg NSArKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVk ZS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVk ZS5wYXRjaCBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjUwM2MyYWYzYjc4YwotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApA QCAtMCwwICsxLDEwIEBACistLS0gYS9ndXZjdmlldy9ndXZjdmlldy5jCisrKysgYi9ndXZjdmll dy9ndXZjdmlldy5jCitAQCAtMjgsNiArMjgsNyBAQAorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgor ICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVk ZSA8bG9jYWxlLmg+CisgCisgI2luY2x1ZGUgImd2aWV3LmgiCisgI2luY2x1ZGUgImd2aWV3djRs MmNvcmUuaCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUgYi9zcmNwa2dz L2d1dmN2aWV3L3RlbXBsYXRlCmluZGV4IDM0NWNmNjAwNmYyNC4uODZhN2ZkNjE5NjEyIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3V2Y3ZpZXcv dGVtcGxhdGUKQEAgLTEsOCArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdndXZjdmlldycK IHBrZ25hbWU9Z3V2Y3ZpZXcKLXZlcnNpb249Mi4wLjcKK3ZlcnNpb249Mi4wLjgKIHJldmlzaW9u PTEKLWNyZWF0ZV93cmtzcmM9eWVzCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1 cmVfYXJncz0iLS1kaXNhYmxlLXN0YXRpYyAtLWRpc2FibGUtZGViaWFuLW1lbnUiCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWcgaW50bHRvb2wgYXV0b2NvbmYgYXV0b21ha2UgbGlidG9vbCBn bGliLWRldmVsIgpAQCAtMTQsNyArMTMsNyBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFu QHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJo dHRwOi8vZ3V2Y3ZpZXcuc291cmNlZm9yZ2UubmV0LyIKIGRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JH RV9TSVRFfS8ke3BrZ25hbWV9LyR7cGtnbmFtZX0tc3JjLSR7dmVyc2lvbn0udGFyLmJ6MiIKLWNo ZWNrc3VtPWY0N2Q1MWZiZDA2ZTQ0ZWVhYTFhODJmNGExNTNjOTI3NTI3YzkwZDk0NTE0MTk3YTcw YjI5NTYwMjhjYzhhZDQKK2NoZWNrc3VtPWEyMWY0ZTQ0ODI4NjY2NmNmMjdiYWZlZjUyOTBjYzk1 M2EwYTE3OTZiNzUyZTViYmU1MjEyNjZkYzEyMzBjODEKIAogcG9zdF9wYXRjaCgpIHsKIAlzZWQg JzMxYSNpbmNsdWRlIDxsb2NhbGUuaD4nIC1pICBndXZjdmlldy9ndXZjdmlldy5jCgpGcm9tIGFj NWY3ZjRmOWJiNzczMGUzYmMyYzMyMDUwYzE3NThiMmVhOTk0ZGYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0My8xMTNdIGhhbmRicmFrZTog dXBkYXRlIHRvIDEuNi4xCgotLS0KIC4uLi9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1m bGFnLnBhdGNoICAgIHwgMTEgKysrKysrLS0tLS0KIC4uLi9oYW5kYnJha2UvcGF0Y2hlcy9saWJo Yi12cGwtaW5jbHVkZS5wYXRjaCAgIHwgMTUgKysrKysrKysrKysrKysrCiBzcmNwa2dzL2hhbmRi cmFrZS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICB8IDE3ICsrKysrKysrKystLS0tLS0t CiAzIGZpbGVzIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1 ZGUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1taXNz aW5nLXgyNjUtbGluay1mbGFnLnBhdGNoIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgt bWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRjaAppbmRleCAyNmRiMDM4NjdhMGMuLmQ2YmIyZWRh NjI3YSAxMDA2NDQKLS0tIGEvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14 MjY1LWxpbmstZmxhZy5wYXRjaAorKysgYi9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1t aXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoCkBAIC0xLDE0ICsxLDE1IEBACiAtLS0gYS9ndGsv Y29uZmlndXJlLmFjCiArKysgYi9ndGsvY29uZmlndXJlLmFjCiBAQCAtMjAzLDcgKzIwMyw3IEBA Ci0gCisKICBBTV9DT05ESVRJT05BTChbTUlOR1ddLCBbdGVzdCAieCRtaW5nd19mbGFnIiA9ICJ4 eWVzIl0pCi0gCi0tSEJfTElCUz0iJEhCX0xJQlMgLWxoYW5kYnJha2UgLWxhdmZvcm1hdCAtbGF2 ZmlsdGVyIC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRhdjFkIC1sc3dyZXNhbXBsZSAtbHBvc3Rwcm9j IC1sZHZkbmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUgLWx2b3JiaXMgLWx2b3JiaXNlbmMgLWxvZ2cg LWxzd3NjYWxlIC1sdGhlb3JhZW5jIC1sdGhlb3JhZGVjIC1sdnB4IC1seiAtbGJ6MiAtbGJsdXJh eSAtbGFzcyAtbGZvbnRjb25maWcgLWxmcmVldHlwZSAtbHhtbDIgLWxqYW5zc29uIC1sb3B1cyAt bHNwZWV4IC1sdHVyYm9qcGVnIC1sbHptYSAtbHppbWciCi0rSEJfTElCUz0iJEhCX0xJQlMgLWxo YW5kYnJha2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVyIC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRhdjFk IC1sc3dyZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZkbmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUgLWx2 b3JiaXMgLWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3NjYWxlIC1sdGhlb3JhZW5jIC1sdGhlb3JhZGVj IC1sdnB4IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFzcyAtbGZvbnRjb25maWcgLWxmcmVldHlwZSAt bHhtbDIgLWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4IC1sdHVyYm9qcGVnIC1sbHptYSAtbHppbWcg LWxkbCIKKworLUhCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZp bHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAt bGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1s c3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkg LWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxz cGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sU3Z0QXYxRW5jIgorK0hCX0xJQlM9IiRI Ql9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0 aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxt cDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAt bHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1s ZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6 bWEgLWx6aW1nIC1sU3Z0QXYxRW5jIC1sZGwiCiAgSEJfQ1BQRkxBR1M9IiRIQl9DUFBGTEFHUyAk SEJJTkMiCi0gCisKICBQS0dfQ0hFQ0tfTU9EVUxFUyhbeDI2NF0sIFt4MjY0XSwgc3lzX3gyNjQ9 eWVzLCBzeXNfeDI2ND1ubykKKwogLS0tIGEvdGVzdC9tb2R1bGUuZGVmcwogKysrIGIvdGVzdC9t b2R1bGUuZGVmcwogQEAgLTY5LDYgKzY5LDkgQEAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGFuZGJy YWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2ggYi9zcmNwa2dzL2hhbmRicmFrZS9w YXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uMjk4ZjlmNGFiMjhmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9o YW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDE1IEBA CistLS0gYS9saWJoYi9tb2R1bGUuZGVmcwkyMDIzLTAxLTIyIDExOjM2OjQ5LjAwMDAwMDAwMCAt MDUwMAorKysrIGIvbGliaGIvbW9kdWxlLmRlZnMJMjAyMy0wNC0wMyAyMjozNzo1Mi4zOTU0Njcw MTAgLTA0MDAKK0BAIC00NiwxMSArNDYsNyBAQAorIExJQkhCLkdDQy5JICs9ICQoTElCSEIuYnVp bGQvKSAkKENPTlRSSUIuYnVpbGQvKWluY2x1ZGUKKyAKKyBpZmVxICgxLCQoRkVBVFVSRS5xc3Yp KQorLSAgICBpZmVxICgkKEhPU1Quc3lzdGVtKSxmcmVlYnNkKSkKKy0gICAgICAgIExJQkhCLkdD Qy5JICs9ICQoTE9DQUxCQVNFKS9pbmNsdWRlL3ZwbAorLSAgICBlbHNlCistICAgICAgICBMSUJI Qi5HQ0MuSSArPSAkKENPTlRSSUIuYnVpbGQvKWluY2x1ZGUvdnBsCistICAgIGVuZGlmCisrICAg IExJQkhCLkdDQy5JICs9IC91c3IvaW5jbHVkZS92cGwKKyBlbmRpZgorIAorIGlmbmVxICgsJChm aWx0ZXIgJChIT1NULnN5c3RlbSksZnJlZWJzZCBuZXRic2Qgb3BlbmJzZCkpCmRpZmYgLS1naXQg YS9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRl CmluZGV4IGNhNWU0NTcxZTQ5Yy4uYzMyY2IxYmZhMzFmIDEwMDY0NAotLS0gYS9zcmNwa2dzL2hh bmRicmFrZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZQpAQCAtMSwx MCArMSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnaGFuZGJyYWtlJwogcGtnbmFtZT1oYW5k YnJha2UKLXZlcnNpb249MS41LjEKK3ZlcnNpb249MS42LjEKIHJldmlzaW9uPTEKIGJ1aWxkX3N0 eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWZvcmNlIC0tZGlzYWJsZS1ndGst dXBkYXRlLWNoZWNrcyAtLWRpc2FibGUtZGYtZmV0Y2ggLS1oYXJkZW4KLSAkKHZvcHRfZW5hYmxl IGZka19hYWMgZmRrLWFhYykgJCh2b3B0X2VuYWJsZSBudmVuYykiCisgJCh2b3B0X2VuYWJsZSBm ZGtfYWFjIGZkay1hYWMpICQodm9wdF9lbmFibGUgbnZlbmMpICQodm9wdF9lbmFibGUgcXN2KSIK IG1ha2VfYnVpbGRfYXJncz0iLUMgJHtYQlBTX1RSSVBMRVR9IgogbWFrZV9pbnN0YWxsX2FyZ3M9 Ii1DICR7WEJQU19UUklQTEVUfSIKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgY21ha2UgZ2V0 dGV4dC1kZXZlbCBnbGliLWRldmVsIGludGx0b29sIGxpYnRvb2wgbTQgbWVzb24gbmFzbSBwa2ct Y29uZmlnIHB5dGhvbjMiCkBAIC0xMiw4ICsxMiwxMSBAQCBtYWtlZGVwZW5kcz0iYnppcDItZGV2 ZWwgZmZtcGVnLWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIGd0ayszLWRldmVsCiAgamFu c3Nvbi1kZXZlbCBsYW1lLWRldmVsIGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2ZWwgbGliZGF2 MWQtZGV2ZWwKICBsaWJkdmRuYXYtZGV2ZWwgbGliZHZkcmVhZC1kZXZlbCBsaWJndWRldi1kZXZl bCBsaWJudW1hLWRldmVsCiAgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJ0aGVvcmEtZGV2ZWwgbGli dm9yYmlzLWRldmVsIGxpYnZweC1kZXZlbCBsaWJ4bWwyLWRldmVsCi0gb3B1cy1kZXZlbCBzcGVl eC1kZXZlbCB4MjY0LWRldmVsIHgyNjUtZGV2ZWwgemltZy1kZXZlbAorIG9wdXMtZGV2ZWwgc3Bl ZXgtZGV2ZWwgeDI2NC1kZXZlbCB4MjY1LWRldmVsIHppbWctZGV2ZWwgbGlic3Z0LWF2MS1kZXZl bAogICQodm9wdF9pZiBmZGtfYWFjIGZkay1hYWMtZGV2ZWwpCisgJCh2b3B0X2lmIHFzdiBsaWJ2 YS1kZXZlbCkKKyAkKHZvcHRfaWYgcXN2IGxpYmRybS1kZXZlbCkKKyAkKHZvcHRfaWYgcXN2IG9u ZXZwbC1kZXZlbCkKICAkKHZvcHRfaWYgbnZlbmMgbnYtY29kZWMtaGVhZGVycykiCiBkZXBlbmRz PSJkZXNrdG9wLWZpbGUtdXRpbHMgZ3N0LXBsdWdpbnMtZ29vZDEgaGljb2xvci1pY29uLXRoZW1l Igogc2hvcnRfZGVzYz0iTXVsdGl0aHJlYWRlZCB2aWRlbyB0cmFuc2NvZGVyIgpAQCAtMjEsMTUg KzI0LDE1IEBAIG1haW50YWluZXI9IkVubm8gQm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4i CiBsaWNlbnNlPSJHUEwtMi4wLW9ubHkiCiBob21lcGFnZT0iaHR0cHM6Ly9oYW5kYnJha2UuZnIv IgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vSGFuZEJyYWtlL0hhbmRCcmFrZS9yZWxl YXNlcy9kb3dubG9hZC8ke3ZlcnNpb259L0hhbmRCcmFrZS0ke3ZlcnNpb259LXNvdXJjZS50YXIu YnoyIgotY2hlY2tzdW09Mzk5OWZlMDZkNTMwOWM4MTk3OTlhNzNhOTY4YThlYzM4NDBlNzg0MGMy YjY0YWY4ZjVjZGI3ZmQ4Yzk0MzBmMAorY2hlY2tzdW09OTRjY2ZlMDNkYjkxN2E5MTY1MDAwMGM1 MTBmN2ZkNTNmODQ0ZGExOWYxOWFkNGI0YmUxYjhmNmJjMzFhOGQ0Ywogbm9jcm9zcz15ZXMKIAot YnVpbGRfb3B0aW9ucz0iZmRrX2FhYyBudmVuYyIKK2J1aWxkX29wdGlvbnM9ImZka19hYWMgbnZl bmMgcXN2IgogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KIAl4ODZfNjQqfGk2ODYq KQogCQlDRkxBR1M9Ii1tc3NlIgotCQlidWlsZF9vcHRpb25zX2RlZmF1bHQ9Im52ZW5jIgorCQli dWlsZF9vcHRpb25zX2RlZmF1bHQ9Im52ZW5jIHFzdiIKIAkJOzsKIGVzYWMKIApAQCAtMzcsNyAr NDAsNyBAQCBwcmVfY29uZmlndXJlKCkgewogCSMgdXNlIHN5c3RlbSBsaWJyYXJpZXMsIGRvbid0 IGRvd25sb2FkIHRoZW0KIAlybSAtcmYgY29udHJpYi8KIAlmb3IgbW9kdWxlIGluIGZkay1hYWMg ZmZtcGVnIGxpYmJsdXJheSBsaWJkYXYxZCBsaWJkdmRuYXYgbGliZHZkcmVhZCBudmVuYyBcCi0J CXgyNjUgemltZzsgZG8KKwkJeDI2NSB6aW1nIHN2dC1hdjEgbGlidnBsOyBkbwogCSAgICB2c2Vk IC1pICIvTU9EVUxFUyArPSBjb250cmliXC8ke21vZHVsZX0vZCIgbWFrZS9pbmNsdWRlL21haW4u ZGVmcwogCWRvbmUKIH0KCkZyb20gYzk3NzQwN2I0NjhhMGExOGUxMjBjYWVmYmVlOWEwYzI1ZjIw OTcwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDQ0LzExM10gaGVkZ2V3YXJzOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNy Y3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGVkZ2V3YXJz L3RlbXBsYXRlIGIvc3JjcGtncy9oZWRnZXdhcnMvdGVtcGxhdGUKaW5kZXggNDE5ZjI5Yjk4YjQ0 Li45MjZmZTRmZTNlNjggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCkBAIC0xLDEzICsxLDEzIEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdoZWRnZXdhcnMnCiBwa2duYW1lPWhlZGdld2FycwogdmVyc2lvbj0xLjAu MgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9h cmdzPSItRE5PU0VSVkVSPTEgLUREQVRBX0lOU1RBTExfRElSPS91c3Ivc2hhcmUvJHtwa2duYW1l fQogIC1EUEhZU0ZTX1NZU1RFTT0xIC1ETUlOSU1BTF9GTEFHUz0xIgogbWFrZV9jbWQ9bWFrZQog aG9zdG1ha2VkZXBlbmRzPSJsdWE1MSBwa2ctY29uZmlnIHF0NS1xbWFrZSBxdDUtaG9zdC10b29s cyIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbHVhNTEtZGV2ZWwgcGh5c2ZzLWRldmVsIHF0 NS10b29scy1kZXZlbCBTREwyX2ltYWdlLWRldmVsCittYWtlZGVwZW5kcz0iZmZtcGVnNC1kZXZl bCBsdWE1MS1kZXZlbCBwaHlzZnMtZGV2ZWwgcXQ1LXRvb2xzLWRldmVsIFNETDJfaW1hZ2UtZGV2 ZWwKICBTREwyX21peGVyLWRldmVsIFNETDJfbmV0LWRldmVsIFNETDJfdHRmLWRldmVsIgogZGVw ZW5kcz0ibGliZnJlZWdsdXQiCiBzaG9ydF9kZXNjPSJGdW5ueSB0dXJuLWJhc2VkIGFydGlsbGVy eSBnYW1lLCBmZWF0dXJpbmcgZmlnaHRpbmcgSGVkZ2Vob2dzISIKCkZyb20gODUzOGQ4YTBkNWI5 MTc3OTM2MWU3ZDU3OTlhN2E1ZDk4ZjE0ZWY2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ1LzExM10gaWRqYzogcmV2YnVtcCBmb3IgZmZt cGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2lkamMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9pZGpjL3RlbXBsYXRlIGIvc3JjcGtncy9pZGpjL3RlbXBsYXRlCmluZGV4IGRmNjAzMThi M2RiOS4uMzZhNzViYWY1OTdjIDEwMDY0NAotLS0gYS9zcmNwa2dzL2lkamMvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9pZGpjL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdpZGpjJwogcGtnbmFtZT1pZGpjCiB2ZXJzaW9uPTAuOS4xCi1yZXZpc2lvbj0zCity ZXZpc2lvbj00CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWcgZ2l0IHB5dGhvbjMgYXV0b21ha2UgZ2V0dGV4dC1kZXZlbCBsaWJ0b29sIgogbWFr ZWRlcGVuZHM9ImxpYnZvcmJpcy1kZXZlbCBsaWJvZ2ctZGV2ZWwgamFjay1kZXZlbCBsaWJzYW1w bGVyYXRlLWRldmVsCi0gbGliZmxhYy1kZXZlbCBsaWJzbmRmaWxlLWRldmVsIG1wZzEyMy1kZXZl bCBmZm1wZWctZGV2ZWwgc3BlZXgtZGV2ZWwKKyBsaWJmbGFjLWRldmVsIGxpYnNuZGZpbGUtZGV2 ZWwgbXBnMTIzLWRldmVsIGZmbXBlZzQtZGV2ZWwgc3BlZXgtZGV2ZWwKICBnbGliLWRldmVsIHBp eG1hbi1kZXZlbCBsYW1lLWRldmVsIHB5dGhvbjMtZ29iamVjdC1kZXZlbCBsaWJzaG91dC1pZGpj LWRldmVsCiAgb3B1cy1kZXZlbCB0d29sYW1lLWRldmVsIHB5dGhvbjMtbXV0YWdlbiBweXRob24z LWRldmVsIgogZGVwZW5kcz0icHl0aG9uMy1nb2JqZWN0IHB5dGhvbjMtbXV0YWdlbiBkZXNrdG9w LWZpbGUtdXRpbHMgc2hhcmVkLW1pbWUtaW5mbyBweXRob24zLWRidXMgamFjayIKCkZyb20gZmI0 ODlmNGNhMDU5YTVhZjhiYWI3ZjY1MzE0NzZlYTRjOWFmOGE1MiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ2LzExM10ga2ZpbGVtZXRhZGF0 YTU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUgYi9zcmNw a2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRlCmluZGV4IDg5ODAxMjFmYmM2OS4uZjY2MmEyMDQz ZjkzIDEwMDY0NAotLS0gYS9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdrZmlsZW1ldGFkYXRhNScKIHBrZ25hbWU9a2ZpbGVtZXRhZGF0YTUKIHZlcnNp b249NS4xMDUuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhv c3RtYWtlZGVwZW5kcz0ia2NvcmVhZGRvbnMgZXh0cmEtY21ha2UtbW9kdWxlcyBwa2ctY29uZmln IHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZQogIGdldHRleHQga2NvcmVhZGRvbnMgcHl0aG9uMyIK CkZyb20gOWQ4Mjc1NmM4Mjg2YzJjMjc4NGU2ZWZjNjIwNzhkZWNlZTU0ZTdjMiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ3LzExM10ga2lk MzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoIHwgMTcgKysrKysrKysrKysrKysrKysKIHNyY3BrZ3Mva2lkMy90ZW1wbGF0ZSAg ICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9raWQzL3BhdGNoZXMvZmZt cGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2ggYi9zcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTM1ZmM1MGUwN2M5Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDE3IEBACisjIGh0 dHBzOi8vYXVyLmFyY2hsaW51eC5vcmcvY2dpdC9hdXIuZ2l0L2RpZmYvZmZtcGVnNS5wYXRjaD9o PWtpZDMtY2xpJmlkPTEyNDEwYTc0OTA2NjEyZTdlZmMwZWM4ZmJjZTczOWI0YTBmZWY3ZTcKK2Rp ZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRl Y29kZXIuY3BwIGIvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRk ZWNvZGVyLmNwcAoraW5kZXggZTE1NmQ0MjQuLmUxMmI5YWJkIDEwMDY0NAorLS0tIGEvc3JjL3Bs dWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAorKysrIGIv c3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAor QEAgLTIzMiw3ICsyMzIsMTEgQEAgcHJpdmF0ZToKKyAgIGZyaWVuZCBjbGFzcyBGb3JtYXQ7Cisg ICBmcmllbmQgY2xhc3MgQ29udmVydGVyOworICAgQVZDb2RlY0NvbnRleHQqIG1fcHRyOworKyNp ZiBMSUJBVkNPREVDX1ZFUlNJT05fSU5UIDwgQVZfVkVSU0lPTl9JTlQoNTksIDAsIDApCisgICBB VkNvZGVjKiBtX2ltcGw7CisrI2Vsc2UKKysgIGNvbnN0IEFWQ29kZWMqIG1faW1wbDsKKysjZW5k aWYKKyAgIEFWRnJhbWUqIG1fZnJhbWU7CisgICBib29sIG1fb3BlbmVkOworIH07CmRpZmYgLS1n aXQgYS9zcmNwa2dzL2tpZDMvdGVtcGxhdGUgYi9zcmNwa2dzL2tpZDMvdGVtcGxhdGUKaW5kZXgg NDU2MjA2ZDkwZTE2Li5mMzJmOWRlY2IwZTcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva2lkMy90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2tpZDMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdraWQzJwogcGtnbmFtZT1raWQzCiB2ZXJzaW9uPTMuOS4xCi1yZXZpc2lv bj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lU SF9BUFBTPSdDTEk7JCh2b3B0X2lmIEtERSBLREUgUXQpJwogIC1EV0lUSF9ET0NCT09LRElSPS91 c3Ivc2hhcmUveHNsL2RvY2Jvb2sgLURXSVRIX0ZMQUM9JCh2b3B0X2lmIGZsYWMgT04gT0ZGKQoK RnJvbSBhYzZlYTQzOTI1MTQ1MjhlOGRlNzMzZDBjNGUzMWU0ZGI5YzYxOGY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDgvMTEzXSBrb2Rp OiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mva29kaS90ZW1wbGF0ZSB8 IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2tvZGkvdGVtcGxhdGUgYi9zcmNwa2dzL2tvZGkvdGVtcGxh dGUKaW5kZXggODA1Nzk2NGQ3OGEzLi42Y2MxODc0YmU3YmEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv a29kaS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tvZGkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrb2RpJwogcGtnbmFtZT1rb2RpCiB2ZXJzaW9uPTE5LjQK LXJldmlzaW9uPTYKK3JldmlzaW9uPTcKIF9jb2RlbmFtZT0iTWF0cml4IgogYnVpbGRfc3R5bGU9 Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfRkZNUEVHPS91c3IgLURFTkFCTEVfTERHT0xE PU9GRgpAQCAtNTQsNyArNTQsNyBAQCBtYWtlZGVwZW5kcz0iCiAgbGlibWFkLWRldmVsIGZvbnRj b25maWctZGV2ZWwgbGliWGluZXJhbWEtZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJtbXMt ZGV2ZWwKICBlbmNhLWRldmVsIGJvb3N0LWRldmVsIGxpYmN1cmwtZGV2ZWwgbGlidmEtZGV2ZWwg bGlidmRwYXUtZGV2ZWwgbGliYXNzLWRldmVsCiAgbGliYmx1ZXRvb3RoLWRldmVsIHlhamwtZGV2 ZWwgbGlicGxpc3QtZGV2ZWwgbGlicnRtcC1kZXZlbCB0aW55eG1sLWRldmVsCi0gdGFnbGliLWRl dmVsIGxpYmNhcC1kZXZlbCBsYW1lLWRldmVsIGxpYmJsdXJheS1kZXZlbCBsaWJuZnMtZGV2ZWwg ZmZtcGVnLWRldmVsCisgdGFnbGliLWRldmVsIGxpYmNhcC1kZXZlbCBsYW1lLWRldmVsIGxpYmJs dXJheS1kZXZlbCBsaWJuZnMtZGV2ZWwgZmZtcGVnNC1kZXZlbAogIGdpZmxpYi1kZXZlbCBsaWJ4 c2x0LWRldmVsIGdudXRscy1kZXZlbCBsaWJzc2gtZGV2ZWwgbGlibWljcm9odHRwZC1kZXZlbAog IGxpYmNlYy1kZXZlbCBkY2FkZWMtZGV2ZWwgZmxhdGJ1ZmZlcnMtZGV2ZWwgZm10LWRldmVsIGxj bXMyLWRldmVsCiAgbGliZnN0cmNtcC1kZXZlbCByYXBpZGpzb24gbGliY2Rpby1wYXJhbm9pYSBz cGRsb2cgbGlid2F5bGFuZHBwLWRldmVsCgpGcm9tIGIwNGUyZDJjZTkyMzA5OTk4MGYwYTBiMGY4 ZTVmN2RkYzUyMWFjMGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3Vi amVjdDogW1BBVENIIDA0OS8xMTNdIGtwaXBld2lyZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL2twaXBld2lyZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva3BpcGV3 aXJlL3RlbXBsYXRlIGIvc3JjcGtncy9rcGlwZXdpcmUvdGVtcGxhdGUKaW5kZXggNDY3YWI4MjNh NWUxLi41MTgyN2YyNGRiOWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAna3BpcGV3aXJlJwogcGtnbmFtZT1rcGlwZXdpcmUKIHZlcnNpb249NS4y Ny40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2Vk ZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIHBsYXNtYS13YXlsYW5kLXByb3RvY29scyBnZXR0 ZXh0CiAgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHBrZy1jb25maWcgd2F5bGFuZC1kZXZlbCBr Y29yZWFkZG9ucwoKRnJvbSBhOTc2ZjFkYjg4MDA2MDI5Y2Q2NzgxZGMzOWQ5ZTRjMTgwYmJjMzRj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NTAvMTEzXSBsaWJleHRyYWN0b3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3Jj cGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmV4dHJhY3Rv ci90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlCmluZGV4IGRkZDQ3OTBm OTNlOC4uMWZiOWNhNTZhOTZhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQpAQCAtNyw3ICs3LDcgQEAg Y29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1zdGF0aWMiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWciCiBtYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBleGl2Mi1kZXZlbCB0 aWZmLWRldmVsIGxpYnBuZy1kZXZlbAogIGxpYmpwZWctdHVyYm8tZGV2ZWwgbGlidm9yYmlzLWRl dmVsIGxpYmZsYWMtZGV2ZWwgZ2lmbGliLWRldmVsIGxpYm1wZWcyLWRldmVsCi0gZmZtcGVnLWRl dmVsIGd0ayszLWRldmVsIGxpYmx0ZGwtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbCBmaWxlLWRldmVs IGxpYmdzZi1kZXZlbCIKKyBmZm1wZWc0LWRldmVsIGd0ayszLWRldmVsIGxpYmx0ZGwtZGV2ZWwg bGliYXJjaGl2ZS1kZXZlbCBmaWxlLWRldmVsIGxpYmdzZi1kZXZlbCIKIHNob3J0X2Rlc2M9Ikxp YnJhcnkgdXNlZCB0byBleHRyYWN0IG1ldGEgZGF0YSBmcm9tIGZpbGVzIgogbWFpbnRhaW5lcj0i TWFydGluIFJpZXNlIDxncmF1ZWhhYXJlQGdteC5kZT4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxh dGVyIgoKRnJvbSA3NTkxNjVhMGJkOTZmOThkYTk0Mjc5ZmFjYmU4N2U1NmJmOGUyNDA2IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTEvMTEz XSBsaWJvcGVuYWw6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9saWJvcGVu YWwvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZSBiL3NyY3Br Z3MvbGlib3BlbmFsL3RlbXBsYXRlCmluZGV4IDc3MjE4ZjllNTM5ZC4uM2Y0OWVkNzVhMWZkIDEw MDY0NAotLS0gYS9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYm9w ZW5hbC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xpYm9w ZW5hbCcKIHBrZ25hbWU9bGlib3BlbmFsCiB2ZXJzaW9uPTEuMjIuMgotcmV2aXNpb249MQorcmV2 aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREFMU09GVF9FWEFN UExFUz1PRkYiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIDRlMTFhYTBiOGNj NTE1YWM0ZDQ1M2ZjMGNiYmI1MThhM2JiNDNjNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1Mi8xMTNdIGxpYm9wZW5zaG90OiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbGlib3BlbnNob3QvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlIGIvc3JjcGtncy9saWJvcGVuc2hvdC90 ZW1wbGF0ZQppbmRleCBkYjgzMWY2OWI0NzQuLjgxYWEwZDcxMzZkOSAxMDA2NDQKLS0tIGEvc3Jj cGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGlib3BlbnNob3QnCiBw a2duYW1lPWxpYm9wZW5zaG90CiB2ZXJzaW9uPTAuMy4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1jbWFrZQogIyBCdWlsZHMgZmFpbCB3aXRoIFJ1YnktMi40LjEKIGNvbmZp Z3VyZV9hcmdzPSItREVOQUJMRV9SVUJZPU9GRiAtRFVTRV9TWVNURU1fSlNPTkNQUD1PTiIKCkZy b20gYjlhMWJhYjgxZTQ1Y2FiNDc1ZmY1YTkyNDdhODgwMzJlOGM5ZmIzYSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDUzLzExM10gbG91ZGdh aW46IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVz L2ZmbXBlZzUucGF0Y2ggfCAxMSArKysrKysrKysrKwogc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0 ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sb3VkZ2Fpbi9wYXRj aGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMv ZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTZkNDUxMGVlOThmCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAg LTAsMCArMSwxMSBAQAorLS0tIGEvc3JjL3NjYW4uYwkyMDE5LTA5LTA2IDExOjMxOjE5LjAwMDAw MDAwMCAtMDQwMAorKysrIGIvc3JjL3NjYW4uYwkyMDIzLTAzLTIzIDExOjE1OjQwLjg2Nzk2ODUy MSAtMDQwMAorQEAgLTY5LDggKzY5LDYgQEAKKyAJICogSXQgaXMgbm93IHVzZWxlc3MKKyAJICog aHR0cHM6Ly9naXRodWIuY29tL0ZGbXBlZy9GRm1wZWcvYmxvYi83MGQyNTI2OGMyMWNiZWU1ZjA4 MzA0ZGE5NWJlMWY2NDdjNjMwYzE1L2RvYy9BUEljaGFuZ2VzI0w4NgorIAkgKi8KKy0gIGlmIChh dmZvcm1hdF92ZXJzaW9uKCkgPCBBVl9WRVJTSU9OX0lOVCg1OCw5LDEwMCkpCistICAgIGF2X3Jl Z2lzdGVyX2FsbCgpOworIAorIAlhdl9sb2dfc2V0X2NhbGxiYWNrKHNjYW5fYXZfbG9nKTsKKyAK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUgYi9zcmNwa2dzL2xvdWRnYWlu L3RlbXBsYXRlCmluZGV4IGRhNGYyZDU2ZTk0Yy4uNGQ2YmYyOWVmYjRmIDEwMDY0NAotLS0gYS9z cmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsb3VkZ2FpbicKIHBrZ25hbWU9 bG91ZGdhaW4KIHZlcnNpb249MC42LjgKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0 eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0ibGli ZWJ1cjEyOC1kZXZlbCB0YWdsaWItZGV2ZWwgZmZtcGVnLWRldmVsIgoKRnJvbSA5M2M5NzFlNWRj OWYyMWU5MWYxMzZlZDgzMjYyYTJiYzMyODA5YjE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTQvMTEzXSBtZWRpYXN0cmVhbWVyOiByZXZi dW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0 ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUgYi9zcmNwa2dz L21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKaW5kZXggZDBlOTdlODU4ZTI5Li4xYmRlMDMxNDQzYTUg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ21lZGlhc3RyZWFtZXInCiBwa2duYW1lPW1lZGlhc3RyZWFtZXIKIHZlcnNpb249NS4y LjYKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVf YXJncz0iLURFTkFCTEVfU1RSSUNUPTAgLURFTkFCTEVfVU5JVF9URVNUUz0wIgogaG9zdG1ha2Vk ZXBlbmRzPSJweXRob24zIgotbWFrZWRlcGVuZHM9ImJ6cnRwLWRldmVsIGZmbXBlZy1kZXZlbCBn bGV3LWRldmVsIGxpYlh2LWRldmVsIGxpYnNydHAtZGV2ZWwKK21ha2VkZXBlbmRzPSJienJ0cC1k ZXZlbCBmZm1wZWc0LWRldmVsIGdsZXctZGV2ZWwgbGliWHYtZGV2ZWwgbGlic3J0cC1kZXZlbAog IGxpYnVwbnAtZGV2ZWwgbGlidnB4LWRldmVsIG1iZWR0bHMtZGV2ZWwgb3B1cy1kZXZlbCBvcnRw LWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKICBsaWJ0aGVvcmEtZGV2ZWwgc3BlZXgtZGV2ZWwgdjRs LXV0aWxzLWRldmVsIGJjZzcyOS1kZXZlbCBiY21hdHJvc2thMi1kZXZlbCBsaWJnc20tZGV2ZWwi CiAjIHp4aW5nLWNwcC1kZXZlbCAoMS4yLjAgcHJvYmFibHkgbm90IGNvbXBhdGlibGUsIGNoZWNr IGFnYWluIGFmdGVyIHVwZGFpbmcgeHppbmcpCgpGcm9tIGE3Mzk4OTIxZmQ1MDdjYzRmOTlkOWFj NDA1YjUzNjVhN2E5ZGVjNzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAK U3ViamVjdDogW1BBVENIIDA1NS8xMTNdIG1nYmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9tZ2JhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tZ2JhL3RlbXBsYXRl IGIvc3JjcGtncy9tZ2JhL3RlbXBsYXRlCmluZGV4IGFlMDUwNDMxMWVlZS4uZDMxMjk1YTBjZDNk IDEwMDY0NAotLS0gYS9zcmNwa2dzL21nYmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tZ2JhL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWdiYScKIHBrZ25h bWU9bWdiYQogdmVyc2lvbj0wLjEwLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0 eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1 LXFtYWtlIGRlc2t0b3AtZmlsZS11dGlscyIKIG1ha2VkZXBlbmRzPSJTREwyLWRldmVsIGZmbXBl Zy1kZXZlbCBsaWJlZGl0LWRldmVsIGxpYmVwb3h5LWRldmVsIGxpYm1hZ2ljay1kZXZlbAoKRnJv bSAzODNjM2VkNDFmMjliMThmYjBmNTNiNWFmOTA5NjJhZmZjYWRjNmUyIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTYvMTEzXSBtaW5pZGxu YTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWluaWRsbmEv dGVtcGxhdGUKaW5kZXggZTgwODFiMWNiYzY3Li45ZWU5NzE0ODYxZmQgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21pbmlkbG5hJwogcGtnbmFtZT1t aW5pZGxuYQogdmVyc2lvbj0xLjMuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9IgogIC0tc2JpbmRpcj0vdXNyL2JpbgoK RnJvbSA2OWUwODM1MTE0OWQ5M2I5OGFmNmQ5MDVhM2ExNDA4MDY1M2QwZTVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTcvMTEzXSBtaXh4 eDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21peHh4L3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9taXh4eC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUK aW5kZXggNjE5ZGRjYTBkMzMyLi40YjllYTAwZDNmYjMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWl4 eHgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9taXh4eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21peHh4JwogcGtnbmFtZT1taXh4eAogdmVyc2lvbj0yLjMu MwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9h cmdzPSItRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSIKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEt Y21ha2UtbW9kdWxlcyBwa2ctY29uZmlnIHByb3RvYnVmIHF0NS1ob3N0LXRvb2xzIHF0NS1kZXZl bCIKCkZyb20gMzM5MjY4ZGIxNjgzYTE1ODU5Y2UyMWE4Y2RjZDU1Njc1ZWJjNTJiYyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU4LzExM10g bWx0OiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbWx0L3RlbXBsYXRl IHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWx0L3RlbXBsYXRlIGIvc3JjcGtncy9tbHQvdGVtcGxh dGUKaW5kZXggODkzM2ViNGU3YmI5Li43MzM1M2ZlZGFmYjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv bWx0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWx0L3RlbXBsYXRlCkBAIC0xLDE0ICsxLDE0IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtbHQnCiBwa2duYW1lPW1sdAogdmVyc2lvbj02LjI2LjEK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNvbmZpZ3VyZQogY29uZmlndXJl X2FyZ3M9Ii0tcHJlZml4PS91c3IgLS1saWJkaXI9L3Vzci9saWIkWEJQU19UQVJHRVRfV09SRFNJ WkUKICAtLWVuYWJsZS1ncGwgLS1lbmFibGUtZ3BsMyAtLWRpc2FibGUtc3dmZGVjIC0td2l0aG91 dC1rZGUKICAtLXN3aWctbGFuZ3VhZ2VzPXB5dGhvbiIKIGhvc3RtYWtlZGVwZW5kcz0iZG94eWdl biBwa2ctY29uZmlnIGxhZHNwYS1zZGsgc3dpZyBweXRob24zIHdoaWNoIgogIyBYWFg6IG1vdml0 IHZpZC5zdGFiCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnLWRldmVsIGd0ayst ZGV2ZWwgamFjay1kZXZlbCBsYWRzcGEtc2RrCittYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwg ZmZtcGVnNC1kZXZlbCBndGsrLWRldmVsIGphY2stZGV2ZWwgbGFkc3BhLXNkawogIGxpYmV4aWYt ZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJ4bWwyLWRldmVsIHNveC1kZXZlbCBTRExfaW1h Z2UtZGV2ZWwKICBmZnR3LWRldmVsIGZyZWkwci1wbHVnaW5zIHB5dGhvbjMtZGV2ZWwgcHVsc2Vh dWRpby1kZXZlbCBtb3ZpdC1kZXZlbAogIGxpYnZpZHN0YWItZGV2ZWwgbGliYXRvbWljLWRldmVs IgoKRnJvbSAxZGNmOTIzODg3YWE4MTI1YTJlNTQ2MzA1OGE2MzA0OWRiNWI0YmJiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTkvMTEzXSBt b2M6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9tb2MvdGVtcGxhdGUg fCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tb2MvdGVtcGxhdGUgYi9zcmNwa2dzL21vYy90ZW1wbGF0 ZQppbmRleCBjNDJiZTY1MGExZDIuLmQ0ZjBlZWZiYWQ1MiAxMDA2NDQKLS0tIGEvc3JjcGtncy9t b2MvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tb2MvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21vYycKIHBrZ25hbWU9bW9jCiB2ZXJzaW9uPTIuNS4yCi1y ZXZpc2lvbj02CityZXZpc2lvbj03CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iZGItZGV2ZWwgbmN1cnNlcy1kZXZl bCBsaWJjdXJsLWRldmVsIHBvcHQtZGV2ZWwgZmZtcGVnLWRldmVsCittYWtlZGVwZW5kcz0iZGIt ZGV2ZWwgbmN1cnNlcy1kZXZlbCBsaWJjdXJsLWRldmVsIHBvcHQtZGV2ZWwgZmZtcGVnNC1kZXZl bAogIGphY2stZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGlibHRkbC1kZXZlbCBsaWJmbGFjLWRldmVs IGxpYnZvcmJpcy1kZXZlbAogIGxpYm1hZC1kZXZlbCBsaWJtcGNkZWMtZGV2ZWwgbGlibW9kcGx1 Zy1kZXZlbCBsaWJpZDN0YWctZGV2ZWwgZmFhZDItZGV2ZWwKICB0YWdsaWItZGV2ZWwgbGlic25k ZmlsZS1kZXZlbCB3YXZwYWNrLWRldmVsIHNwZWV4LWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwK CkZyb20gZDIzMzc2YzI3OGMxMzcwNzNkYmQ0NTFkZTA4N2QwNmI3NTJlMDFmNyBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYwLzExM10gbW90 aW9uOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbW90aW9uL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUgYi9zcmNwa2dzL21vdGlvbi90ZW1w bGF0ZQppbmRleCAzY2YzYzMwMzVjNWIuLjdkY2ExMmQ4NTFlMyAxMDA2NDQKLS0tIGEvc3JjcGtn cy9tb3Rpb24vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtb3Rpb24nCiBwa2duYW1lPW1vdGlvbgogdmVy c2lvbj00LjUuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZp Z3VyZQogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBwa2ctY29uZmlnIGdldHRleHQtZGV2ZWwg dGFyIgogbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBsaWJtaWNyb2h0dHBkLWRldmVsIHY0bC11 dGlscy1kZXZlbCBnZXR0ZXh0LWRldmVsIgoKRnJvbSA3ZDA1NWI3YTA3OWMwNGNlZDFjOGE2NzU2 N2IwMzMxMWY0NzVhZDJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwNjEvMTEzXSBtcHY6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9tcHYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21wdi90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvbXB2L3RlbXBsYXRlCmluZGV4IGUxNjNjNDk2YzZlYi4uZDRmZWZiZjVlM2M3IDEwMDY0 NAotLS0gYS9zcmNwa2dzL21wdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21wdi90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21wdicKIHBrZ25hbWU9bXB2CiB2 ZXJzaW9uPTAuMzUuMQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9bWVzb24K IGNvbmZpZ3VyZV9hcmdzPSItRGNkZGE9ZW5hYmxlZCAtRGR2YmluPWVuYWJsZWQgLURkdmRuYXY9 ZW5hYmxlZAogIC1EbGlibXB2PXRydWUgLURjcGx1Z2lucz1lbmFibGVkCgpGcm9tIGZlNTI3YTg2 M2JkOTU4YzE1OTE1NDQzMzhkOTgzY2Q5ZmNkNjI0NTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2Mi8xMTNdIG11c2lrY3ViZTogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL211c2lrY3ViZS90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlIGIvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxh dGUKaW5kZXggN2M1NjkzMDNjMDU0Li5hNGRlYTQ2MGMzNzEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv bXVzaWtjdWJlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbXVzaWtjdWJlJwogcGtnbmFtZT1tdXNp a2N1YmUKIHZlcnNpb249My4wLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PWNtYWtlCiBtYWtlX2NtZD1tYWtlCiBjb25maWd1cmVfYXJncz0iLUROT19OQ1VSU0VTVz0xIgoK RnJvbSBlODhmNmI1NmJlMTQ0ZDM4ZWQ5NGQyY2ZkMjFiN2EzNDM4NjY4MzliIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjMvMTEzXSBub3Rj dXJzZXM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9ub3RjdXJzZXMvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvbm90 Y3Vyc2VzL3RlbXBsYXRlCmluZGV4IDZkZDhhMDkxMzE5Zi4uMzExMGMzMGM5YWZmIDEwMDY0NAot LS0gYS9zcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL25vdGN1cnNlcy90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ25vdGN1cnNlcycK IHBrZ25hbWU9bm90Y3Vyc2VzCiB2ZXJzaW9uPTMuMC45Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EVVNFX1NUQVRJQz1PTiAkKHZv cHRfYm9vbCBtYW4gVVNFX1BBTkRPQykiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgJCh2 b3B0X2lmIG1hbiBwYW5kb2MpIgoKRnJvbSA5NDhlYjEwOGFjYmU2MDA2ODc4NjM5NjgyMjRiNmJj NjZkNTg5MzgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNjQvMTEzXSBvYnM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9vYnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29icy90ZW1wbGF0ZSBiL3NyY3BrZ3Mv b2JzL3RlbXBsYXRlCmluZGV4IDdlZTI5ZmYzZWFjNi4uZmQwNmRmNDE1MzAxIDEwMDY0NAotLS0g YS9zcmNwa2dzL29icy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29icy90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29icycKIHBrZ25hbWU9b2JzCiB2ZXJzaW9u PTI5LjEuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYXJjaHM9Imk2ODYqIHg4Nl82NCogcHBj NjRsZSogYWFyY2g2NCoiCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ET0JT X1ZFUlNJT05fT1ZFUlJJREU9JHt2ZXJzaW9ufSAtREVOQUJMRV9KQUNLPU9OCgpGcm9tIDY0MmIx ZDQ3NWI4NjM0NjJlMTg1YWVmOGMzMTcxMzZkMzJmZTJiODMgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2NS8xMTNdIG9saXZlOiByZXZidW1w IGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUgfCA0ICsrLS0K IDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUKaW5k ZXggMTJhNDY5MzZjOTkwLi41YzI5MTdiOWM1MTIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb2xpdmUv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnb2xpdmUnCiBwa2duYW1lPW9saXZlCiB2ZXJzaW9uPTAuMS4y Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1xbWFrZQogaG9zdG1ha2VkZXBl bmRzPSJxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMgcGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJx dDUtZGV2ZWwgcXQ1LW11bHRpbWVkaWEtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBmZm1wZWctZGV2ZWwg ZnJlaTByLXBsdWdpbnMiCittYWtlZGVwZW5kcz0icXQ1LWRldmVsIHF0NS1tdWx0aW1lZGlhLWRl dmVsIHF0NS1zdmctZGV2ZWwgZmZtcGVnNC1kZXZlbCBmcmVpMHItcGx1Z2lucyIKIHNob3J0X2Rl c2M9Ik5vbi1saW5lYXIgdmlkZW8gZWRpdG9yIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhh bkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCgpGcm9tIDVlMzRm YTRiOTU0MDJmNjFkYzEyZWM3NjQ3NThiZGFhNDQ2ZmQzZjUgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2Ni8xMTNdIG9teHBsYXllcjogcmV2 YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL29teHBsYXllci90ZW1wbGF0ZSB8 IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlIGIvc3JjcGtncy9vbXhw bGF5ZXIvdGVtcGxhdGUKaW5kZXggZTcwYmY3ODczZDRkLi4wZTliYzcwZTdjOGUgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb214cGxheWVyL3Rl bXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvbXhwbGF5ZXIn CiBwa2duYW1lPW9teHBsYXllcgogdmVyc2lvbj0yMDE5MDEwMgotcmV2aXNpb249MQorcmV2aXNp b249Mgogc2hvcnRfZGVzYz0iQ29tbWFuZGxpbmUgT01YIHBsYXllciBmb3IgdGhlIFJhc3BiZXJy eSBQaSIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCi1saWNl bnNlPSJHUEwtMiIKK2xpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6 Ly9naXRodWIuY29tL3BvcGNvcm5taXgvb214cGxheWVyIgogCiBfY29tbWl0PSJmMDYyMzVjYzk2 OTBhNmQ1ODE4NzUxNDQ1MmRmOGNmOGZjZGFhY2VjIgpAQCAtMTUsNyArMTUsNyBAQCBjaGVja3N1 bT1hZjJkOTQ1MGY4OTQ3ODQyZWE4YzQwMWZlOWY3MWVlYzQ0NDAxM2ViYmRlZTI5ZjJhYzgyOGM5 YzQ5M2MxMzI5CiBhcmNocz0iYXJtdjZsKiBhcm12N2wqIgogYnVpbGRfc3R5bGU9Z251LW1ha2Vm aWxlCiBob3N0bWFrZWRlcGVuZHM9ImN1cmwgcGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJhbHNh LWxpYi1kZXZlbCBycGktdXNlcmxhbmQtZGV2ZWwgcGNyZS1kZXZlbCBib29zdC1kZXZlbCBmcmVl dHlwZS1kZXZlbCBmZm1wZWctZGV2ZWwgZGJ1cy1kZXZlbCIKK21ha2VkZXBlbmRzPSJhbHNhLWxp Yi1kZXZlbCBycGktdXNlcmxhbmQtZGV2ZWwgcGNyZS1kZXZlbCBib29zdC1kZXZlbCBmcmVldHlw ZS1kZXZlbCBmZm1wZWc0LWRldmVsIGRidXMtZGV2ZWwiCiBkZXBlbmRzPSJmcmVlZm9udC10dGYi CiAKIGRvX2J1aWxkKCkgewoKRnJvbSAzMGQwYTFiODRkZGM0MmU2YmJhODUzZmZlMTQyNDRmMjIz NjBkNTA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwNjcvMTEzXSBvcGVuaW1hZ2VpbzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBj b21tb24vc2hsaWJzICAgICAgICAgICAgICAgIHwgMiArKwogc3JjcGtncy9vcGVuaW1hZ2Vpby90 ZW1wbGF0ZSB8IDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1vbi9zaGxpYnMKaW5kZXgg OGNiNWZmMGY3NDU3Li5kN2VlMjJkNDQyNmUgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysr IGIvY29tbW9uL3NobGlicwpAQCAtMjI2Myw2ICsyMjYzLDggQEAgbGlieG1wLnNvLjQgbGlieG1w LTQuMy43XzEKIGxpYktGNVRocmVhZFdlYXZlci5zby41IHRocmVhZHdlYXZlci01LjI2LjBfMQog bGliT3BlbkltYWdlSU9fVXRpbC5zby4yLjQgb3BlbmltYWdlaW8tMi40LjkuMF8xCiBsaWJPcGVu SW1hZ2VJTy5zby4yLjQgb3BlbmltYWdlaW8tMi40LjkuMF8xCitsaWJPcGVuSW1hZ2VJT19VdGls LnNvLjIuNCBvcGVuaW1hZ2Vpby0yLjQuOC4xXzEKK2xpYk9wZW5JbWFnZUlPLnNvLjIuNCBvcGVu aW1hZ2Vpby0yLjQuOC4xXzEKIGxpYk9wZW5Db2xvcklPLnNvLjIuMSBvcGVuY29sb3Jpby0yLjEu Ml8xCiBsaWJweXN0cmluZy5zby4xIHB5c3RyaW5nLTEuMS4zXzEKIGxpYnlhbWwtY3BwLnNvLjAu NyB5YW1sLWNwcC0wLjcuMF8xCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBs YXRlIGIvc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZQppbmRleCA5YjM4YWNlNTBmN2UuLmMy ZDM2YjRiMzUzOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnb3BlbmltYWdlaW8nCiBwa2duYW1lPW9wZW5pbWFnZWlvCiB2ZXJzaW9uPTIu NC45LjAKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWNtYWtlCiBidWlsZF9o ZWxwZXI9cWVtdQogY29uZmlndXJlX2FyZ3M9Ii1EVVNFX1FUPTAgLURVU0VfUFlUSE9OPTAgLURP SUlPX0JVSUxEX1RFU1RTPTAKCkZyb20gNDIzNGY2ZmVlMDU2YjZhN2NhYWQxMmJmZWRmNGVmZGNh YTMzMzQwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDY4LzExM10gb3BlbnNob3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9vcGVuc2hvdC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxh dGUgYi9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlCmluZGV4IDMyMjcxN2Q0MGFiYy4uYzA3NGUw MzM4NzczIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3Mvb3BlbnNob3QvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdvcGVuc2hvdCcKIHBrZ25hbWU9b3BlbnNob3QKIHZlcnNpb249My4wLjAKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXB5dGhvbjMtbW9kdWxlCiBob3N0bWFrZWRlcGVuZHM9 InB5dGhvbjMgcHl0aG9uMy1zZXR1cHRvb2xzIgogbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBw eXRob24zLVB5UXQ1IgoKRnJvbSBmYWZmZDk0YmM1ZmEzNGJmMmNkOTRkYmZlYTBjMDA2OWM3Y2Q3 NTkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNjkvMTEzXSBvcGVudG9vbno6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9vcGVudG9vbnovdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlCmluZGV4IGVlOWY3NjAzZjU1Zi4uM2U4MTgz NGNhMGVkIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL29wZW50b29uei90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ29wZW50b29ueicKIHBrZ25hbWU9b3BlbnRvb256CiB2ZXJzaW9uPTEuNi4wCi1yZXZpc2lv bj0yCityZXZpc2lvbj0zCiBidWlsZF93cmtzcmM9InRvb256L3NvdXJjZXMiCiBidWlsZF9zdHls ZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQoKRnJvbSBmOTg4MDA3MzNjYzc5ZGU2NThkMDUyM2Q0NGQy ZGIyMDYwNDUyZjQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNzAvMTEzXSBwaWFub2JhcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9waWFub2Jhci90 ZW1wbGF0ZSBiL3NyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUKaW5kZXggYTliMjllOTE5OTNmLi44 MWVmY2QxMjJjNGQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3BpYW5vYmFyJwogcGtnbmFtZT1waWFub2JhcgogdmVyc2lvbj0yMDIyLjA0LjAxCi1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfYnVp bGRfYXJncz0iVj0xIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSA3ZjAzZjRj NWU1OThkYTAxN2M2YWUxNTUyN2JjZGI1MjYyMzI4Y2MzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzEvMTEzXSBwcHNzcHA6IHJldmJ1bXAg Zm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUgfCA3ICsrKy0t LS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUgYi9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0 ZQppbmRleCA3OTg0YTczM2Q0YmUuLjE1YTQyZmQyYzk5MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9w cHNzcHAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdwcHNzcHAnCiBwa2duYW1lPXBwc3NwcAogdmVyc2lv bj0xLjE0LjQKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9nbHNsYW5nX2NvbW1pdD1kYzExYWRk ZTIzYzQ1NWEyNGUxM2RkNTRkZTliNGVkZThiZGQ3ZGI4CiBfU1BJUlZfQ3Jvc3NfY29tbWl0PTlh Y2I5ZWMzMWY1YThlZjgwZWE2Yjk5NGJiNzdiZTc4N2IwOGQzZDEKIF9hcm1pcHNfY29tbWl0PTY3 MTllZGViYWFlMDMzMzBlZTU0NDFkOWIyODI4MDY3MmVkZjAwZDUKQEAgLTEzLDcgKzEzLDcgQEAg Y29uZmlndXJlX2FyZ3M9Ii1ESEVBRExFU1M9MSAtRFVTRV9TWVNURU1fRkZNUEVHPTEgLURVTklU VEVTVD1PTgogIC1EVVNJTkdfUVRfVUk9JCh2b3B0X2lmIHF0IE9OIE9GRikgLURVU0VfU1lTVEVN X1pTVEQ9T04KICAtREFSTUlQU19VU0VfU1REX0ZJTEVTWVNURU09T04iCiBob3N0bWFrZWRlcGVu ZHM9InBrZy1jb25maWcgcHl0aG9uMyAkKHZvcHRfaWYgcXQgcXQ1LWhvc3QtdG9vbHMpIgotbWFr ZWRlcGVuZHM9InpsaWItZGV2ZWwgZ2xldy1kZXZlbCBmZm1wZWctZGV2ZWwgbGliemlwLWRldmVs CittYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBnbGV3LWRldmVsIGZmbXBlZzQtZGV2ZWwgbGliemlw LWRldmVsCiAgc25hcHB5LWRldmVsIHJhcGlkanNvbiBsaWJwbmctZGV2ZWwgbGlienN0ZC1kZXZl bAogICQodm9wdF9pZiBzZGwyIFNETDItZGV2ZWwpICQodm9wdF9pZiB3YXlsYW5kIHdheWxhbmQt ZGV2ZWwpCiAgJCh2b3B0X2lmIHF0ICdxdDUtZGV2ZWwgcXQ1LW11bHRpbWVkaWEtZGV2ZWwnKSIK QEAgLTYyLDEzICs2MiwxMiBAQCBwb3N0X2V4dHJhY3QoKSB7CiAJbXYgJHt3cmtzcmN9L21pbml1 cG5wLSR7X21pbml1cG5wX2NvbW1pdH0gJHt3cmtzcmN9L2V4dC9taW5pdXBucAogfQogCi1wb3N0 X3BhdGNoKCl7Citwb3N0X3BhdGNoKCkgewogCSMgZGlzYWJsZSBnaXQgdmVyc2lvbmluZwogCXZz ZWQgLWUgJ3N8ZmluZF9wYWNrYWdlKEdpdCl8IyAmfCcgLWkgZ2l0LXZlcnNpb24uY21ha2UKIH0K IAogZG9faW5zdGFsbCgpIHsKLQl2bGljZW5zZSBMSUNFTlNFLlRYVAogCXZpbnN0YWxsIGljb25z L2ljb24uc3ZnIDY0NCB1c3Ivc2hhcmUvcGl4bWFwcyBwcHNzcHAuc3ZnCiAJdmluc3RhbGwgUXQv UFBTU1BQLmRlc2t0b3AgNjQ0IHVzci9zaGFyZS9hcHBsaWNhdGlvbnMKIAl2YmluIGJ1aWxkL1BQ U1NQUEhlYWRsZXNzIHBwc3NwcC1oZWFkbGVzcwoKRnJvbSA2N2EyMzVlMzg1YjIwODZlYTJkOWVj Nzk4MzMxMGI3OTBkN2VmYzA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNzIvMTEzXSBwcWl2OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MvcHFpdi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHFpdi90ZW1wbGF0 ZSBiL3NyY3BrZ3MvcHFpdi90ZW1wbGF0ZQppbmRleCA1NDJmYzI3YTJkMzIuLjkzMDhkOTQ5YjZh MSAxMDA2NDQKLS0tIGEvc3JjcGtncy9wcWl2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHFpdi90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3BxaXYnCiBwa2du YW1lPXBxaXYKIHZlcnNpb249Mi4xMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9Z251LW1ha2VmaWxlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5k cz0iZ2xpYi1kZXZlbCBndGsrMy1kZXZlbCAkKHZvcHRfaWYgZmZtcGVnIGZmbXBlZy1kZXZlbCkK CkZyb20gOWNkMWZmNzQ0N2MyMDhlM2Y1ZDA1OTI2MTc4MGZiMjVhZmU3NTk4YiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDczLzExM10gcW1t cDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3FtbXAvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3FtbXAvdGVtcGxhdGUgYi9zcmNwa2dzL3FtbXAvdGVtcGxhdGUKaW5k ZXggMjZjNjYxZWQxNmJlLi5hMTUwZDc0NDFjN2EgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcW1tcC90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3FtbXAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdxbW1wJwogcGtnbmFtZT1xbW1wCiB2ZXJzaW9uPTEuNi4xCi1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1E VVNFX0hBTDpCT09MPUZBTFNFIC1EUU1NUF9ERUZBVUxUX1VJOlNUUklORz1zaW1wbGUiCiBob3N0 bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIgoKRnJvbSA0 MmZiMTFmNjg2ODY1NzBhZjczZWY2OTc5MjZlMWFiNWFlNzJiY2U3IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzQvMTEzXSBxdDUtd2ViZW5n aW5lOiB1cGRhdGUgdG8gNS4xNS4xMwoKLS0tCiAuLi4vY2hyb21pdW0tbWVkaWEtZmlsdGVycy1j cHAxNC5wYXRjaCAgICAgICAgfCAgMTEgKysKIHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVz L2ZmbXBlZzUucGF0Y2ggICB8IDE3OSArKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvcXQ1LXdl YmVuZ2luZS90ZW1wbGF0ZSAgICAgICAgICAgICAgICB8ICAxMCArLQogMyBmaWxlcyBjaGFuZ2Vk LCAxOTUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0 LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv ZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVz L2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDRhZGM1NDBmMmNiCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmlsdGVy cy1jcHAxNC5wYXRjaApAQCAtMCwwICsxLDExIEBACistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21p dW0vbWVkaWEvZmlsdGVycy9CVUlMRC5nbgkyMDIzLTAyLTI3IDEzOjMyOjU5LjAwMDAwMDAwMCAt MDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvQlVJTEQuZ24J MjAyMy0wNC0wMiAxNzoyMTozOS4yMDQwNjYzODQgLTA0MDAKK0BAIC05Niw2ICs5Niw4IEBACisg ICAgICIvL3VpL2dmeC9nZW9tZXRyeTpnZW9tZXRyeSIsCisgICBdCisgCisrICBjZmxhZ3NfY2Mg PSBbICItc3RkPWMrKzE0IiBdCisrCisgICBsaWJzID0gW10KKyAKKyAgIGlmIChwcm9wcmlldGFy eV9jb2RlY3MpIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Zm bXBlZzUucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWM1NWUxNjM0NDIzCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5w YXRjaApAQCAtMCwwICsxLDE3OSBAQAorLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlh L2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJMjAyMy0wNC0wMiAxNjo1MDo1Ny43MzI1NDc0NDYg LTA0MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19k ZW11eGVyLmNjCTIwMjMtMDQtMDIgMTY6NTA6MDkuNDg2NDc4OTk1IC0wNDAwCitAQCAtNTcsNiAr NTcsOCBAQAorIAorIG5hbWVzcGFjZSB7CisgCisrY29uc3RleHByIGludDY0X3Qga1JlbGF0aXZl VHNCYXNlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oMHg3ZmZlZmZmZmZmZmZmZmZmKTsKKysKKyB2 b2lkIFNldEFWU3RyZWFtRGlzY2FyZChBVlN0cmVhbSogc3RyZWFtLCBBVkRpc2NhcmQgZGlzY2Fy ZCkgeworICAgRENIRUNLKHN0cmVhbSk7CisgICBzdHJlYW0tPmRpc2NhcmQgPSBkaXNjYXJkOwor QEAgLTkwLDI0ICs5MiwxMiBAQAorIAorIHN0YXRpYyBiYXNlOjpUaW1lRGVsdGEgRXh0cmFjdFN0 YXJ0VGltZShBVlN0cmVhbSogc3RyZWFtKSB7CisgICAvLyBUaGUgZGVmYXVsdCBzdGFydCB0aW1l IGlzIHplcm8uCistICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZTsKKysgIGJhc2U6OlRpbWVE ZWx0YSBzdGFydF90aW1lID0ga05vVGltZXN0YW1wOworIAorICAgLy8gRmlyc3QgdHJ5IHRvIHVz ZSAgdGhlIHxzdGFydF90aW1lfCB2YWx1ZSBhcyBpcy4KKyAgIGlmIChzdHJlYW0tPnN0YXJ0X3Rp bWUgIT0ga05vRkZtcGVnVGltZXN0YW1wKQorICAgICBzdGFydF90aW1lID0gQ29udmVydEZyb21U aW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3RyZWFtLT5zdGFydF90aW1lKTsKKyAKKy0gIC8v IE5leHQgdHJ5IHRvIHVzZSB0aGUgZmlyc3QgRFRTIHZhbHVlLCBmb3IgY29kZWNzIHdoZXJlIHdl IGtub3cgUFRTID09IERUUworLSAgLy8gKGV4Y2x1ZGVzIGFsbCBIMjZ4IGNvZGVjcykuIFRoZSBz dGFydCB0aW1lIG11c3QgYmUgcmV0dXJuZWQgaW4gUFRTLgorLSAgaWYgKHN0cmVhbS0+Zmlyc3Rf ZHRzICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNv ZGVjX2lkICE9IEFWX0NPREVDX0lEX0hFVkMgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5j b2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IMjY0ICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+ Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfTVBFRzQpIHsKKy0gICAgY29uc3QgYmFzZTo6VGltZURl bHRhIGZpcnN0X3B0cyA9CistICAgICAgICBDb252ZXJ0RnJvbVRpbWVCYXNlKHN0cmVhbS0+dGlt ZV9iYXNlLCBzdHJlYW0tPmZpcnN0X2R0cyk7CistICAgIGlmIChmaXJzdF9wdHMgPCBzdGFydF90 aW1lKQorLSAgICAgIHN0YXJ0X3RpbWUgPSBmaXJzdF9wdHM7CistICB9CistCisgICByZXR1cm4g c3RhcnRfdGltZTsKKyB9CisgCitAQCAtNDA4LDExICszOTgsMTEgQEAKKyAgIHNjb3BlZF9yZWZw dHI8RGVjb2RlckJ1ZmZlcj4gYnVmZmVyOworIAorICAgaWYgKHR5cGUoKSA9PSBEZW11eGVyU3Ry ZWFtOjpURVhUKSB7CistICAgIGludCBpZF9zaXplID0gMDsKKysgICAgc2l6ZV90IGlkX3NpemUg PSAwOworICAgICB1aW50OF90KiBpZF9kYXRhID0gYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCisg ICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1dFQlZUVF9JREVOVElGSUVSLCAmaWRf c2l6ZSk7CisgCistICAgIGludCBzZXR0aW5nc19zaXplID0gMDsKKysgICAgc2l6ZV90IHNldHRp bmdzX3NpemUgPSAwOworICAgICB1aW50OF90KiBzZXR0aW5nc19kYXRhID0gYXZfcGFja2V0X2dl dF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1dFQlZUVF9T RVRUSU5HUywgJnNldHRpbmdzX3NpemUpOworIAorQEAgLTQyNCw3ICs0MTQsNyBAQAorICAgICBi dWZmZXIgPSBEZWNvZGVyQnVmZmVyOjpDb3B5RnJvbShwYWNrZXQtPmRhdGEsIHBhY2tldC0+c2l6 ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZV9kYXRhLmRhdGEo KSwgc2lkZV9kYXRhLnNpemUoKSk7CisgICB9IGVsc2UgeworLSAgICBpbnQgc2lkZV9kYXRhX3Np emUgPSAwOworKyAgICBzaXplX3Qgc2lkZV9kYXRhX3NpemUgPSAwOworICAgICB1aW50OF90KiBz aWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAgICAgICAgIHBhY2tldC5nZXQo KSwgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFMLCAmc2lkZV9kYXRhX3NpemUp OworIAorQEAgLTQ4NSw3ICs0NzUsNyBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBhY2tldC0+c2l6ZSAtIGRhdGFfb2Zmc2V0KTsKKyAgICAgfQorIAorLSAgICBp bnQgc2tpcF9zYW1wbGVzX3NpemUgPSAwOworKyAgICBzaXplX3Qgc2tpcF9zYW1wbGVzX3NpemUg PSAwOworICAgICBjb25zdCB1aW50MzJfdCogc2tpcF9zYW1wbGVzX3B0ciA9CisgICAgICAgICBy ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXZfcGFja2V0X2dldF9zaWRlX2RhdGEo CisgICAgICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9TS0lQX1NBTVBMRVMsICZz a2lwX3NhbXBsZXNfc2l6ZSkpOworQEAgLTE1ODcsNiArMTU3Nyw4IEBACisgICBmb3IgKGNvbnN0 IGF1dG8mIHN0cmVhbSA6IHN0cmVhbXNfKSB7CisgICAgIGlmICghc3RyZWFtIHx8IHN0cmVhbS0+ SXNFbmFibGVkKCkgIT0gZW5hYmxlZCkKKyAgICAgICBjb250aW51ZTsKKysgICAgaWYgKHN0cmVh bS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9QVFNfVkFMVUUpCisrICAgICAgY29u dGludWU7CisgICAgIGlmICghbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtIHx8CisgICAgICAgICBz dHJlYW0tPnN0YXJ0X3RpbWUoKSA8IGxvd2VzdF9zdGFydF90aW1lX3N0cmVhbS0+c3RhcnRfdGlt ZSgpKSB7CisgICAgICAgbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtID0gc3RyZWFtLmdldCgpOwor QEAgLTE2MDQsNiArMTU5Niw4IEBACisgICAgIGlmIChzdHJlYW0gJiYgc3RyZWFtLT50eXBlKCkg PT0gRGVtdXhlclN0cmVhbTo6VklERU8gJiYKKyAgICAgICAgIHN0cmVhbS0+SXNFbmFibGVkKCkp IHsKKyAgICAgICB2aWRlb19zdHJlYW0gPSBzdHJlYW0uZ2V0KCk7CisrICAgICAgaWYgKHN0cmVh bS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9QVFNfVkFMVUUpCisrICAgICAgICBj b250aW51ZTsKKyAgICAgICBpZiAodmlkZW9fc3RyZWFtLT5zdGFydF90aW1lKCkgPD0gc2Vla190 aW1lKSB7CisgICAgICAgICByZXR1cm4gdmlkZW9fc3RyZWFtOworICAgICAgIH0KK2RpZmYgLU5h dXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEv ZmZtcGVnL2ZmbXBlZ19jb21tb24uaCBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oCistLS0gYS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaAkyMDIyLTA1LTIzIDA2OjM4OjQw LjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBl Zy9mZm1wZWdfY29tbW9uLmgJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTcxOTI3ODggLTA1MDAKK0BA IC0yOSw2ICsyOSw3IEBAIGV4dGVybiAiQyIgeworICNpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmZv cm1hdC5oPgorICNpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmlvLmg+CisgI2luY2x1ZGUgPGxpYmF2 dXRpbC9hdnV0aWwuaD4KKysjaW5jbHVkZSA8bGliYXZ1dGlsL2NoYW5uZWxfbGF5b3V0Lmg+Cisg I2luY2x1ZGUgPGxpYmF2dXRpbC9pbWd1dGlscy5oPgorICNpbmNsdWRlIDxsaWJhdnV0aWwvbG9n Lmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9tYXN0ZXJpbmdfZGlzcGxheV9tZXRhZGF0YS5oPgor ZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAv c3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MK Ky0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVh ZGVyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3Jk cGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5jYwkyMDIyLTA3 LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAtMDUwMAorQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBBdWRp b0ZpbGVSZWFkZXI6Ok9wZW5EZW11eGVyKCkgeworIH0KKyAKKyBib29sIEF1ZGlvRmlsZVJlYWRl cjo6T3BlbkRlY29kZXIoKSB7CistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNv ZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9 IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAo Y29kZWMpIHsKKyAgICAgLy8gTVAzIGRlY29kZXMgdG8gUzE2UCB3aGljaCB3ZSBkb24ndCBzdXBw b3J0LCB0ZWxsIGl0IHRvIHVzZSBTMTYgaW5zdGVhZC4KKyAgICAgaWYgKGNvZGVjX2NvbnRleHRf LT5zYW1wbGVfZm10ID09IEFWX1NBTVBMRV9GTVRfUzE2UCkKK2RpZmYgLU5hdXJwIHF0d2ViZW5n aW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1w ZWdfYXVkaW9fZGVjb2Rlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19kZWNvZGVyLmNjCistLS0gYS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYwkyMDIy LTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MJMjAyMi0wNy0xMSAyMjox Mjo0Ny45MTcxOTI3ODggLTA1MDAKK0BAIC0zMjksNyArMzI5LDcgQEAgYm9vbCBGRm1wZWdBdWRp b0RlY29kZXI6OkNvbmZpZ3VyZURlY29kZQorICAgICB9CisgICB9CisgCistICBBVkNvZGVjKiBj b2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7Cisr ICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRl eHRfLT5jb2RlY19pZCk7CisgICBpZiAoIWNvZGVjIHx8CisgICAgICAgYXZjb2RlY19vcGVuMihj b2RlY19jb250ZXh0Xy5nZXQoKSwgY29kZWMsICZjb2RlY19vcHRpb25zKSA8IDApIHsKKyAgICAg RExPRyhFUlJPUikgPDwgIkNvdWxkIG5vdCBpbml0aWFsaXplIGF1ZGlvIGRlY29kZXI6ICIKK2Rp ZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0v bWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNjCistLS0gYS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYwkyMDIyLTA1LTIzIDA2 OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlh L2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1 MDAKK0BAIC01OSw3ICs1OSw2IEBAIHN0YXRpYyBpbnQ2NF90IEFWSU9TZWVrT3BlcmF0aW9uKHZv aWQqIG8KKyB9CisgCisgdm9pZCBGRm1wZWdHbHVlOjpJbml0aWFsaXplRkZtcGVnKCkgeworLSAg YXZfcmVnaXN0ZXJfYWxsKCk7CisgfQorIAorIHN0YXRpYyB2b2lkIExvZ0NvbnRhaW5lcihib29s IGlzX2xvY2FsX2ZpbGUsCitAQCAtOTUsOSArOTQsNiBAQCBGRm1wZWdHbHVlOjpGRm1wZWdHbHVl KEZGbXBlZ1VSTFByb3RvY29sCisgICAvLyBFbmFibGUgZmFzdCwgYnV0IGluYWNjdXJhdGUgc2Vl a3MgZm9yIE1QMy4KKyAgIGZvcm1hdF9jb250ZXh0Xy0+ZmxhZ3MgfD0gQVZGTVRfRkxBR19GQVNU X1NFRUs7CisgCistICAvLyBFbnN1cmVzIHdlIGNhbiByZWFkIG91dCB2YXJpb3VzIG1ldGFkYXRh IGJpdHMgbGlrZSB2cDggYWxwaGEuCistICBmb3JtYXRfY29udGV4dF8tPmZsYWdzIHw9IEFWRk1U X0ZMQUdfS0VFUF9TSURFX0RBVEE7CistCisgICAvLyBFbnN1cmVzIGZvcm1hdCBwYXJzaW5nIGVy cm9ycyB3aWxsIGJhaWwgb3V0LiBGcm9tIGFuIGF1ZGl0IG9uIDExLzIwMTcsIGFsbAorICAgLy8g aW5zdGFuY2VzIHdlcmUgcmVhbCBmYWlsdXJlcy4gU29sdmVzIGJ1Z3MgbGlrZSBodHRwOi8vY3Ji dWcuY29tLzcxMDc5MS4KKyAgIGZvcm1hdF9jb250ZXh0Xy0+ZXJyb3JfcmVjb2duaXRpb24gfD0g QVZfRUZfRVhQTE9ERTsKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMv M3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5jYyBx dHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2Zm bXBlZ192aWRlb19kZWNvZGVyLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEv ZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAw MDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZt cGVnX3ZpZGVvX2RlY29kZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAK K0BAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBGRm1wZWdWaWRlb0RlY29kZXI6OkNvbmZpZ3VyZURl Y29kZQorICAgaWYgKGRlY29kZV9uYWx1c18pCisgICAgIGNvZGVjX2NvbnRleHRfLT5mbGFnczIg fD0gQVZfQ09ERUNfRkxBRzJfQ0hVTktTOworIAorLSAgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVj X2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworKyAgY29uc3QgQVZDb2Rl YyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQp OworICAgaWYgKCFjb2RlYyB8fCBhdmNvZGVjX29wZW4yKGNvZGVjX2NvbnRleHRfLmdldCgpLCBj b2RlYywgTlVMTCkgPCAwKSB7CisgICAgIFJlbGVhc2VGRm1wZWdSZXNvdXJjZXMoKTsKKyAgICAg cmV0dXJuIGZhbHNlOworZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2ZpbGVfY2hlY2tlci5jYyBxdHdl YmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlh X2ZpbGVfY2hlY2tlci5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRl cnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0w NTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9tZWRpYV9maWxl X2NoZWNrZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC02OCw3 ICs2OCw3IEBAIGJvb2wgTWVkaWFGaWxlQ2hlY2tlcjo6U3RhcnQoYmFzZTo6VGltZUQKKyAgICAg ICBhdXRvIGNvbnRleHQgPSBBVlN0cmVhbVRvQVZDb2RlY0NvbnRleHQoZm9ybWF0X2NvbnRleHQt PnN0cmVhbXNbaV0pOworICAgICAgIGlmICghY29udGV4dCkKKyAgICAgICAgIGNvbnRpbnVlOwor LSAgICAgIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY3AtPmNvZGVjX2lk KTsKKysgICAgICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNw LT5jb2RlY19pZCk7CisgICAgICAgaWYgKGNvZGVjICYmIGF2Y29kZWNfb3BlbjIoY29udGV4dC5n ZXQoKSwgY29kZWMsIG51bGxwdHIpID49IDApIHsKKyAgICAgICAgIGF1dG8gbG9vcCA9IHN0ZDo6 bWFrZV91bmlxdWU8RkZtcGVnRGVjb2RpbmdMb29wPihjb250ZXh0LmdldCgpKTsKKyAgICAgICAg IHN0cmVhbV9jb250ZXh0c1tpXSA9IHtzdGQ6Om1vdmUoY29udGV4dCksIHN0ZDo6bW92ZShsb29w KX07CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2 NC9oMjY0X2RlY29kZXJfaW1wbC5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gy NjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNv ZGVyX2ltcGwuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp bmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45 MTgxOTI3NzkgLTA1MDAKK0BAIC0yMDMsNyArMjAzLDcgQEAgaW50MzJfdCBIMjY0RGVjb2Rlcklt cGw6OkluaXREZWNvZGUoY29ucworICAgLy8gYSBwb2ludGVyIHx0aGlzfC4KKyAgIGF2X2NvbnRl eHRfLT5vcGFxdWUgPSB0aGlzOworIAorLSAgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRf ZGVjb2Rlcihhdl9jb250ZXh0Xy0+Y29kZWNfaWQpOworKyAgY29uc3QgQVZDb2RlYyogY29kZWMg PSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihhdl9jb250ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKCFj b2RlYykgeworICAgICAvLyBUaGlzIGlzIGFuIGluZGljYXRpb24gdGhhdCBGRm1wZWcgaGFzIG5v dCBiZWVuIGluaXRpYWxpemVkIG9yIGl0IGhhcyBub3QKKyAgICAgLy8gYmVlbiBjb21waWxlZC9p bml0aWFsaXplZCB3aXRoIHRoZSBjb3JyZWN0IHNldCBvZiBjb2RlY3MuCmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVt cGxhdGUKaW5kZXggODUyNjdjN2NmOGEzLi4wOTVhYjY3NzAxZTQgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVt cGxhdGUKQEAgLTEsOSArMSw5IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUtd2ViZW5naW5l JwogcGtnbmFtZT1xdDUtd2ViZW5naW5lCi12ZXJzaW9uPTUuMTUuMTEKLXJldmlzaW9uPTMKK3Zl cnNpb249NS4xNS4xMworcmV2aXNpb249MQogX3ZlcnNpb249IiR7dmVyc2lvbn0tbHRzIgotX2No cm9taXVtX2NvbW1pdD1iZTM0OWVhZjYyZTc3OTU1NzkxZDdiZjI5Zjg5M2YxZThhMzdkYWY0Citf Y2hyb21pdW1fY29tbWl0PWU0OGRmNzgwM2M3Yzk4YjBiMjQ3MWM5NDA1N2QzMmU0NGEzMDFhZDUK IGFyY2hzPSJ4ODZfNjQqIGk2ODYqIGFybXZbNjddKiBwcGM2NCogYWFyY2g2NCoiCiBjcmVhdGVf d3Jrc3JjPXllcwogYnVpbGRfc3R5bGU9cW1ha2UKQEAgLTMyLDggKzMyLDggQEAgbGljZW5zZT0i R1BMLTMuMC1vci1sYXRlciwgTEdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9x dC5pby8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9xdC9xdHdlYmVuZ2luZS9hcmNo aXZlL3Yke192ZXJzaW9ufS50YXIuZ3oKICBodHRwczovL2dpdGh1Yi5jb20vcXQvcXR3ZWJlbmdp bmUtY2hyb21pdW0vYXJjaGl2ZS8ke19jaHJvbWl1bV9jb21taXR9LnRhci5neiIKLWNoZWNrc3Vt PSJhYTc0NjYzNTZjNDUwYzVmNTg3MGY5NzliOTNjZDdlN2U2MmRhMTE2NWMzMjhmZmNhYjFhOTky OGRiMThhZDY3Ci0gNmY0N2VkOGFiOGNjMDYyNDExZjZmMjA2ZGE2MzUzYmM4MjYzZDZlZDZkNjI5 MGM2ODlhMDVjMDFkOTFmNjQ2YiIKK2NoZWNrc3VtPSI0YjU5ODM4ZWQ3NWVmNzg4YjU5ZTFlNDEy NTM1YTBlNDJkZDlkMzExNjYxZmRlYWRiMTkxYjU4MWJhODE1YzYzCisgYTkxNjg2NTYyYjFkNGU4 YjIyMGUwYmJjYmFiNWZlYjY0NjMwZTJkZTk3NGIzNWFjMDM0YmYzODhhZjc3MWE2YyIKIAogbm9f Z2VuZXJpY19wa2djb25maWdfbGluaz15ZXMKIGJ1aWxkX29wdGlvbnM9InNuZGlvIHBpcGV3aXJl IgoKRnJvbSAyYTQyNmFkNzMzNDk0NDE1Y2RlZjFiMzNkN2RkZTY5MjhjMDU1OTM3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzUvMTEzXSBx dDU6IHVwZGF0ZSB0byA1LjE1LjgKCi0tLQogLi4uZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4x NS44LWtmNS0xLnBhdGNoIHwgMTI5MTMgKysrKysrKysrKysrKysrKwogc3JjcGtncy9xdDUvdGVt cGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMTIgKy0KIDIgZmlsZXMgY2hhbmdl ZCwgMTI5MTkgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44 LWtmNS0xLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVyeXdo ZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNo ZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NjZjOThiY2QzYmIKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1z cmMtNS4xNS44LWtmNS0xLnBhdGNoCkBAIC0wLDAgKzEsMTI5MTMgQEAKK1N1Ym1pdHRlZCBCeTog ICAgICAgICAgICBQaWVycmUgTGFiYXN0aWUgPHBpZXJyZV9kb3RfbGFiYXN0aWVfYXRfbmV1Zl9k b3RfZnI+CitEYXRlOiAgICAgICAgICAgICAgICAgICAgMjAyMy0wMS0wNQorSW5pdGlhbCBQYWNr YWdlIFZlcnNpb246IDUuMTUuOAorVXBzdHJlYW0gU3RhdHVzOiAgICAgICAgIEFwcGxpZWQgKGFj Y29yZGluZyB0byBLREUpCitPcmlnaW46ICAgICAgICAgICAgICAgICAgS0RFIHBhdGNoIHNldAor RGVzY3JpcHRpb246ICAgICAgICAgICAgIFBhdGNoIHNldCBtYWludGFpbmVkIGJ5IHRoZSBLREUg Zm9sa3MKK3NlZSBodHRwczovL2RvdC5rZGUub3JnLzIwMjEvMDQvMDYvYW5ub3VuY2luZy1rZGVz LXF0LTUtcGF0Y2gtY29sbGVjdGlvbgorUGF0Y2ggZ2VuZXJhdGVkIHVzaW5nIHRoZSBwcm9jZWR1 cmUgaW4KK2h0dHBzOi8vd2lraS5saW51eGZyb21zY3JhdGNoLm9yZy9ibGZzL3RpY2tldC8xNzQ3 NiNjb21tZW50OjMKKworU3VibW9kdWxlIHF0YmFzZSA0ZWU0ZmMxOC4uOWNmNTg2ZDY6CitkaWZm IC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oIGIv cXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oCitpbmRleCBmNzVi YzQwOTNiLi4yYmQ1OTQxMGQ0IDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvY29tbW9uL2Fu ZHJvaWQvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9jb21tb24vYW5kcm9p ZC9xcGxhdGZvcm1kZWZzLmgKK0BAIC0xNDQsMTEgKzE0NCw3IEBACisgI2RlZmluZSBRVF9TSUdO QUxfQVJHUyAgICAgICAgICBpbnQKKyAjZGVmaW5lIFFUX1NJR05BTF9JR05PUkUgICAgICAgIFNJ R19JR04KKyAKKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0gMikKKyAj ZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmlu ZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChf WE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBS SU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3Mv ZmVhdHVyZXMvbWFjL3Nkay5tayBiL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsK K2luZGV4IGYzMGI1ODMwYjQuLmEzMmNlYWNiNmMgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVj cy9mZWF0dXJlcy9tYWMvc2RrLm1rCisrKysgYi9xdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9tYWMv c2RrLm1rCitAQCAtMSw2ICsxLDYgQEAKKyAKKyBpZmVxICgkKFFUX01BQ19TREtfTk9fVkVSU0lP Tl9DSEVDSyksKQorLSAgICBDSEVDS19TREtfQ09NTUFORCA9IC91c3IvYmluL3hjcnVuIC0tc2Rr ICQoRVhQT1JUX1FNQUtFX01BQ19TREspIC1zaG93LXNkay12ZXJzaW9uIDI+JjEKKysgICAgQ0hF Q0tfU0RLX0NPTU1BTkQgPSAvdXNyL2Jpbi94Y3J1biAtLXNkayAkKEVYUE9SVF9RTUFLRV9NQUNf U0RLKSAtc2hvdy1zZGstdmVyc2lvbiAyPi9kZXYvbnVsbAorICAgICBDVVJSRU5UX01BQ19TREtf VkVSU0lPTiA6PSAkKHNoZWxsIERFVkVMT1BFUl9ESVI9JChFWFBPUlRfUU1BS0VfWENPREVfREVW RUxPUEVSX1BBVEgpICQoQ0hFQ0tfU0RLX0NPTU1BTkQpKQorICAgICBpZm5lcSAoJChDVVJSRU5U X01BQ19TREtfVkVSU0lPTiksJChFWFBPUlRfUU1BS0VfTUFDX1NES19WRVJTSU9OKSkKKyAgICAg ICAgICMgV2UgZG9uJ3Qgd2FudCB0byBjb21wbGFpbiBhYm91dCBvdXQgb2YgZGF0ZSBTREsgdW5s ZXNzIHRoZSB0YXJnZXQgbmVlZHMgdG8gYmUgcmVtYWRlLgorZGlmZiAtLWdpdCBhL3F0YmFzZS9t a3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4 LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggYTgxOGQ5NzNmMC4uYzFhYjcyZmJjNiAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaAorKysr IGIvcXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcvcXBsYXRmb3JtZGVmcy5oCitAQCAtNzksMTQg Kzc5LDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9YT1BFTl9MRlNfRVhURU5TSU9OUworICNpbmNsdWRl ICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAorLSN1bmRlZiBRVF9TT0NLTEVO X1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0gMikKKy0jZGVm aW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBR VF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9Q RU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5U RiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmluZSBRVF9WU05QUklOVEYgICAgICAgICAg ICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxh dGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5oCitp bmRleCAxMzUyM2YwNzAyLi40ZDI3NTBkOWVjIDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3Mv bGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtZysr L3FwbGF0Zm9ybWRlZnMuaAorQEAgLTc5LDE0ICs3OSw2IEBACisgI2RlZmluZSBRVF9VU0VfWE9Q RU5fTEZTX0VYVEVOU0lPTlMKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRl ZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lmIGRlZmluZWQoX19HTElCQ19f KSAmJiAoX19HTElCQ19fIDwgMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGlu dAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0j ZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+ PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2Rl ZmluZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0 YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3Mv bGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IGRjNzUwYWIxZWYuLmQzY2MzOWI0N2Yg MTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sbHZtL3FwbGF0Zm9ybWRlZnMuaAor KysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmgKK0BAIC04MCwx NCArODAsNiBAQAorICNkZWZpbmUgUVRfVVNFX1hPUEVOX0xGU19FWFRFTlNJT05TCisgI2luY2x1 ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tM RU5fVAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNk ZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5l IFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNpZiBkZWZpbmVkKF9Y T1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJ TlRGICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5URiAgICAgICAg ICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbGludXgtbHNiLWcr Ky9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9y bWRlZnMuaAoraW5kZXggNGM0ZTUzZGEyYS4uODNiYWZmYjNlMyAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtz cGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTg1LDE2ICs4NSw5IEBACisg I2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCisgI3VuZGVmIFFU X09QRU5fTEFSR0VGSUxFCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorIAorICNkZWZpbmUgUVRfT1BF Tl9MQVJHRUZJTEUgICAgICAgMAorIAorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJ QkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90Cist I2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQor ICNpZm5kZWYgU0lPQ0dJRkJSREFERFIKKyAjICBkZWZpbmUgU0lPQ0dJRkJSREFERFIgMHg4OTE5 CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbHlueG9zLWcrKy9xcGxhdGZv cm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaAoraW5k ZXggNDMzOWVhMmIyMy4uNjAwN2FmMDA1NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2x5 bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysr L3FwbGF0Zm9ybWRlZnMuaAorQEAgLTcyLDE0ICs3Miw2IEBACisgCisgI2luY2x1ZGUgIi4uL2Nv bW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorLQor LSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRf U09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tM RU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VS Q0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAg ICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5URiAgICAgICAgICAgIDo6dnNu cHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy8zcmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5H TEUvSGFuZGxlQWxsb2NhdG9yLmNwcCBiL3F0YmFzZS9zcmMvM3JkcGFydHkvYW5nbGUvc3JjL2xp YkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAKK2luZGV4IGMzYzE4NDI1OGYuLjMyYWYzZjhmMjkg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5k bGVBbGxvY2F0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJB TkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCitAQCAtMTAsNiArMTAsNyBAQAorICNpbmNsdWRlICJs aWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuaCIKKyAKKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorKyNp bmNsdWRlIDxsaW1pdHM+CisgCisgI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorIAorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5jIGIvcXRiYXNl L3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMKK2luZGV4IGZmZTBlOWE1ZTIuLmIx ZjU0MDhkMTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2ZvcmtmZC9mb3JrZmRf bGludXguYworKysrIGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMK K0BAIC04Miw3ICs4Miw4IEBAIHN0YXRpYyBpbnQgc3lzX2Nsb25lKHVuc2lnbmVkIGxvbmcgY2xv bmVmbGFncywgaW50ICpwdGlkKQorICAgICByZXR1cm4gc3lzY2FsbChfX05SX2Nsb25lLCBjbG9u ZWZsYWdzLCBjaGlsZF9zdGFjaywgc3RhY2tfc2l6ZSwgcHRpZCwgbmV3dGxzLCBjdGlkKTsKKyAj ZWxpZiBkZWZpbmVkKF9fYXJjX18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2Fh cmNoNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorICAgICBkZWZpbmVkKF9fbmRzMzJf XykgfHwgZGVmaW5lZChfX2hwcGFfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5l ZChfX2kzODZfXykgfHwgXAorLSAgICBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX194 dGVuc2FfXykgfHwgZGVmaW5lZChfX2FscGhhX18pIHx8IGRlZmluZWQoX19yaXNjdikKKysgICAg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9feHRlbnNhX18pIHx8IGRlZmluZWQoX19h bHBoYV9fKSB8fCBkZWZpbmVkKF9fcmlzY3YpIHx8IFwKKysgICAgZGVmaW5lZChfX2xvb25nYXJj aF9fKQorICAgICAvKiBjdGlkIGFuZCBuZXd0bHMgYXJlIGludmVydGVkIG9uIENPTkZJR19DTE9O RV9CQUNLV0FSRFMgYXJjaGl0ZWN0dXJlcywKKyAgICAgICogYnV0IHNpbmNlIGJvdGggdmFsdWVz IGFyZSAwLCB0aGVyZSdzIG5vIGhhcm0uICovCisgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfY2xv bmUsIGNsb25lZmxhZ3MsIGNoaWxkX3N0YWNrLCBwdGlkLCBjdGlkLCBuZXd0bHMpOworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJv aWQvUXROYXRpdmUuamF2YSBiL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2pl Y3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YQoraW5kZXggNTc5MmI1YjJmNS4uMmY3NDc1MGZj ZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3Qv cXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YQorKysrIGIvcXRiYXNlL3NyYy9hbmRyb2lkL2phci9z cmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9pZC9RdE5hdGl2ZS5qYXZhCitAQCAtMTE2LDYgKzEx Niw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICBwdWJsaWMgc3RhdGljIFF0VGhyZWFk IG1fcXRUaHJlYWQgPSBuZXcgUXRUaHJlYWQoKTsKKyAgICAgcHJpdmF0ZSBzdGF0aWMgSGFzaE1h cDxTdHJpbmcsIFVyaT4gbV9jYWNoZWRVcmlzID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBVcmk+KCk7 CisgICAgIHByaXZhdGUgc3RhdGljIEFycmF5TGlzdDxTdHJpbmc+IG1fa25vd25EaXJzID0gbmV3 IEFycmF5TGlzdDxTdHJpbmc+KCk7CisrICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBO b1Blcm1pc3Npb25FcnJvck1lc3NhZ2UgPSAiTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiOwor IAorICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBSdW5uYWJsZSBydW5QZW5kaW5nQ3BwUnVubmFi bGVzUnVubmFibGUgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICBAT3ZlcnJpZGUKK0BAIC0x OTMsMTEgKzE5NCwxMCBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBpdGVyVXJpOworICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICAvLyBB bmRyb2lkIDYgYW5kIGVhcmxpZXIgY291bGQgc3RpbGwgbWFuYWdlIHRvIG9wZW4gdGhlIGZpbGUg c28gd2UgY2FuIHJldHVybiB0aGUKKy0gICAgICAgICAgICAvLyBwYXJzZWQgdXJpIGhlcmUKKy0g ICAgICAgICAgICBpZiAoQnVpbGQuVkVSU0lPTi5TREtfSU5UIDwgMjQpCistICAgICAgICAgICAg ICAgIHJldHVybiBwYXJzZWRVcmk7CistICAgICAgICAgICAgcmV0dXJuIG51bGw7CisrICAgICAg ICAgICAgLy8gaWYgd2Ugb25seSBoYXZlIHRyYW5zaWVudCBwZXJtaXNzaW9ucyBvbiB1cmkgYWxs IHRoZSBhYm92ZSB3aWxsIGZhaWwsCisrICAgICAgICAgICAgLy8gYnV0IHdlIHdpbGwgYmUgYWJs ZSB0byByZWFkIHRoZSBmaWxlIGFueXdheSwgc28gY29udGludWUgd2l0aCB1cmkgaGVyZSBhbnl3 YXkKKysgICAgICAgICAgICAvLyBhbmQgY2hlY2sgZm9yIFNlY3VyaXR5RXhjZXB0aW9ucyBsYXRl cgorKyAgICAgICAgICAgIHJldHVybiBwYXJzZWRVcmk7CisgICAgICAgICB9IGNhdGNoIChTZWN1 cml0eUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAg ICAgICAgICAgICByZXR1cm4gbnVsbDsKK0BAIC0yNDQsNyArMjQ0LDcgQEAgcHVibGljIGNsYXNz IFF0TmF0aXZlCisgICAgICAgICBpbnQgZXJyb3IgPSAtMTsKKyAKKyAgICAgICAgIGlmICh1cmkg PT0gbnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAib3BlbkZkRm9yQ29udGVudFVy bCgpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOworKyAgICAgICAgICAgIExvZy5lKFF0 VEFHLCAib3BlbkZkRm9yQ29udGVudFVybCgpOiAiICsgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdl KTsKKyAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICB9CisgCitAQCAtMjU0LDEy ICsyNTQsMTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAgICAgcmV0dXJuIGZk RGVzYy5kZXRhY2hGZCgpOworICAgICAgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9u IGUpIHsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJl dHVybiBlcnJvcjsKKyAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBl KSB7CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJvcGVuRmRGb3JDb250ZW50VXJsKCk6IElu dmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAg ICAgICByZXR1cm4gZXJyb3I7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBl KSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7 CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgIH0KKyAKKyAgICAgcHVi bGljIHN0YXRpYyBsb25nIGdldFNpemUoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVy bCkKK0BAIC0yNzAsNyArMjcxLDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAg ICAgdXJpID0gZ2V0VXJpV2l0aFZhbGlkUGVybWlzc2lvbihjb250ZXh0LCBjb250ZW50VXJsLCAi ciIpOworIAorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7CistICAgICAgICAgICAgTG9nLmUo UXRUQUcsICJnZXRTaXplKCk6IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAgICAg ICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAg ICAgcmV0dXJuIHNpemU7CisgICAgICAgICB9IGVsc2UgaWYgKCFtX2NhY2hlZFVyaXMuY29udGFp bnNLZXkoY29udGVudFVybCkpIHsKKyAgICAgICAgICAgICBtX2NhY2hlZFVyaXMucHV0KGNvbnRl bnRVcmwsIHVyaSk7CitAQCAtMjg4LDEyICsyODksMTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZl CisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAg ICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAg ICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIHNpemU7CisgICAg ICAgICB9ICBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gZSkgeworICAgICAg ICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBVbnN1cHBvcnRlZCBvcGVyYXRpb24gZm9y IGdpdmVuIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAg ICAgICAgcmV0dXJuIHNpemU7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBl KSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7 CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgfQorIAorICAgICBwdWJs aWMgc3RhdGljIGJvb2xlYW4gY2hlY2tGaWxlRXhpc3RzKENvbnRleHQgY29udGV4dCwgU3RyaW5n IGNvbnRlbnRVcmwpCitAQCAtMzAzLDcgKzMwNSw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQor ICAgICAgICAgaWYgKHVyaSA9PSBudWxsKQorICAgICAgICAgICAgIHVyaSA9IGdldFVyaVdpdGhW YWxpZFBlcm1pc3Npb24oY29udGV4dCwgY29udGVudFVybCwgInIiKTsKKyAgICAgICAgIGlmICh1 cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tGaWxlRXhpc3Rz KCk6IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAgICAgTG9nLmUoUXRU QUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgcmV0dXJuIGV4aXN0 czsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgaWYgKCFtX2NhY2hlZFVyaXMuY29u dGFpbnNLZXkoY29udGVudFVybCkpCitAQCAtMzIxLDEyICszMjMsMTMgQEAgcHVibGljIGNsYXNz IFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkg eworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tGaWxlRXhpc3RzKCk6IEludmFsaWQg VXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICBy ZXR1cm4gZXhpc3RzOworICAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNl cHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tGaWxlRXhpc3RzKCk6 IFVuc3VwcG9ydGVkIG9wZXJhdGlvbiBmb3IgZ2l2ZW4gVXJpIik7CisgICAgICAgICAgICAgZS5w cmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICB9 IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcs IE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4g ZXhpc3RzOworICAgICB9CisgCisgICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBjaGVja0lmV3Jp dGFibGUoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVybCkKK0BAIC0zNDQsNyArMzQ3 LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAgICAgdXJpID0gZ2V0VXJpV2l0 aFZhbGlkUGVybWlzc2lvbihjb250ZXh0LCBjb250ZW50VXJsLCAiciIpOworICAgICAgICAgfQor ICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7CistICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJp c0RpcigpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOworKyAgICAgICAgICAgIExvZy5l KFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgIHJldHVybiBp c0RpcjsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgaWYgKCFtX2NhY2hlZFVyaXMu Y29udGFpbnNLZXkoY29udGVudFVybCkpCitAQCAtMzc0LDEyICszNzcsMTMgQEAgcHVibGljIGNs YXNzIFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24g ZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tJZkRpcigpOiBJbnZhbGlkIFVy aSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRp b24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tJZkRpcigpOiBVbnN1cHBv cnRlZCBvcGVyYXRpb24gZm9yIGdpdmVuIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFj a1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgfSBjYXRjaCAo U2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1p c3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuIGZhbHNlOwor ICAgICB9CisgICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gbGlzdENvbnRlbnRzRnJvbVRyZWVV cmkoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVybCkKKyAgICAgeworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaCBiL3F0 YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAoraW5kZXggOGY5 YTkzODk1Mi4uYTk4ZGVkZWYyZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9x dGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAorKysrIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0 Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oCitAQCAtMjEyLDExICsyMTIsMTMgQEAgcHVibGljOgor IAorICAgICBpbmxpbmUgYm9vbCBzaG91bGRUaHJvdHRsZSgpCisgICAgIHsKKysgICAgICAgIHN0 ZDo6bG9ja19ndWFyZDxRTXV0ZXg+IGxvY2tlcihtdXRleCk7CisgICAgICAgICByZXR1cm4gKHJl c3VsdHNNYXBTaXplID4gKFJlZHVjZVF1ZXVlVGhyb3R0bGVMaW1pdCAqIHRocmVhZENvdW50KSk7 CisgICAgIH0KKyAKKyAgICAgaW5saW5lIGJvb2wgc2hvdWxkU3RhcnRUaHJlYWQoKQorICAgICB7 CisrICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8UU11dGV4PiBsb2NrZXIobXV0ZXgpOworICAgICAg ICAgcmV0dXJuIChyZXN1bHRzTWFwU2l6ZSA8PSAoUmVkdWNlUXVldWVTdGFydExpbWl0ICogdGhy ZWFkQ291bnQpKTsKKyAgICAgfQorIH07CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb25jdXJy ZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQv cXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAoraW5kZXggZWE2Y2UzYWM0Mi4uN2Y5MWEyYmE2 OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRl bmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFk ZW5naW5lLmNwcAorQEAgLTE3Niw2ICsxNzYsMzkgQEAgdm9pZCBUaHJlYWRFbmdpbmVCYXNlOjpz dGFydFNpbmdsZVRocmVhZGVkKCkKKyAgICAgZmluaXNoKCk7CisgfQorIAorK3ZvaWQgVGhyZWFk RW5naW5lQmFzZTo6c3RhcnRCbG9ja2luZygpCisreworKyAgICBzdGFydCgpOworKyAgICBiYXJy aWVyLmFjcXVpcmUoKTsKKysgICAgc3RhcnRUaHJlYWRzKCk7CisrCisrICAgIGJvb2wgdGhyb3R0 bGVkID0gZmFsc2U7CisrI2lmbmRlZiBRVF9OT19FWENFUFRJT05TCisrICAgIHRyeSB7CisrI2Vu ZGlmCisrICAgICAgICB3aGlsZSAodGhyZWFkRnVuY3Rpb24oKSA9PSBUaHJvdHRsZVRocmVhZCkg eworKyAgICAgICAgICAgIGlmICh0aHJlYWRUaHJvdHRsZUV4aXQoKSkgeworKyAgICAgICAgICAg ICAgICB0aHJvdHRsZWQgPSB0cnVlOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAg ICAgICB9CisrICAgICAgICB9CisrI2lmbmRlZiBRVF9OT19FWENFUFRJT05TCisrICAgIH0gY2F0 Y2ggKFFFeGNlcHRpb24gJmUpIHsKKysgICAgICAgIGhhbmRsZUV4Y2VwdGlvbihlKTsKKysgICAg fSBjYXRjaCAoLi4uKSB7CisrICAgICAgICBoYW5kbGVFeGNlcHRpb24oUVVuaGFuZGxlZEV4Y2Vw dGlvbigpKTsKKysgICAgfQorKyNlbmRpZgorKworKyAgICBpZiAodGhyb3R0bGVkID09IGZhbHNl KSB7CisrICAgICAgICBiYXJyaWVyLnJlbGVhc2UoKTsKKysgICAgfQorKworKyAgICBiYXJyaWVy LndhaXQoKTsKKysgICAgZmluaXNoKCk7CisrICAgIGV4Y2VwdGlvblN0b3JlLnRocm93UG9zc2li bGVFeGNlcHRpb24oKTsKKyt9CisrCisgdm9pZCBUaHJlYWRFbmdpbmVCYXNlOjpzdGFydFRocmVh ZCgpCisgeworICAgICBzdGFydFRocmVhZEludGVybmFsKCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oIGIvcXRiYXNlL3NyYy9j b25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oCitpbmRleCA3YzMwY2ViZGJjLi5h NGM4NTQ4Y2M0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVu dHRocmVhZGVuZ2luZS5oCisrKysgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50 dGhyZWFkZW5naW5lLmgKK0BAIC05MSw2ICs5MSw3IEBAIHB1YmxpYzoKKyAgICAgVGhyZWFkRW5n aW5lQmFzZSgpOworICAgICB2aXJ0dWFsIH5UaHJlYWRFbmdpbmVCYXNlKCk7CisgICAgIHZvaWQg c3RhcnRTaW5nbGVUaHJlYWRlZCgpOworKyAgICB2b2lkIHN0YXJ0QmxvY2tpbmcoKTsKKyAgICAg dm9pZCBzdGFydFRocmVhZCgpOworICAgICBib29sIGlzQ2FuY2VsZWQoKTsKKyAgICAgdm9pZCB3 YWl0Rm9yUmVzdW1lKCk7CitAQCAtMTQzLDYgKzE0NCwxNSBAQCBwdWJsaWM6CisgICAgICAgICBy ZXR1cm4gcmVzdWx0KCk7CisgICAgIH0KKyAKKysgICAgLy8gUnVucyB0aGUgdXNlciBhbGdvcml0 aG0gdXNpbmcgbXVsdGlwbGUgdGhyZWFkcy4KKysgICAgLy8gVGhpcyBmdW5jdGlvbiBibG9ja3Mg dW50aWwgdGhlIGFsZ29yaXRobSBpcyBmaW5pc2hlZCwKKysgICAgLy8gYW5kIHRoZW4gcmV0dXJu cyB0aGUgcmVzdWx0LgorKyAgICBUICpzdGFydEJsb2NraW5nKCkKKysgICAgeworKyAgICAgICAg VGhyZWFkRW5naW5lQmFzZTo6c3RhcnRCbG9ja2luZygpOworKyAgICAgICAgcmV0dXJuIHJlc3Vs dCgpOworKyAgICB9CisrCisgICAgIC8vIFJ1bnMgdGhlIHVzZXIgYWxnb3JpdGhtIHVzaW5nIG11 bHRpcGxlIHRocmVhZHMuCisgICAgIC8vIERvZXMgbm90IGJsb2NrLCByZXR1cm5zIGEgZnV0dXJl LgorICAgICBRRnV0dXJlPFQ+IHN0YXJ0QXN5bmNocm9ub3VzbHkoKQorQEAgLTIyMyw2ICsyMzMs MTMgQEAgY2xhc3MgVGhyZWFkRW5naW5lU3RhcnRlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmVTdGFy dGVyQmFzZTxUPgorIHB1YmxpYzoKKyAgICAgVGhyZWFkRW5naW5lU3RhcnRlcihUeXBlZFRocmVh ZEVuZ2luZSAqZW5nKQorICAgICAgICAgOiBCYXNlKGVuZykgeyB9CisrCisrICAgIFQgc3RhcnRC bG9ja2luZygpCisrICAgIHsKKysgICAgICAgIFQgdCA9ICp0aGlzLT50aHJlYWRFbmdpbmUtPnN0 YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGRlbGV0ZSB0aGlzLT50aHJlYWRFbmdpbmU7CisrICAg ICAgICByZXR1cm4gdDsKKysgICAgfQorIH07CisgCisgLy8gRnVsbCB0ZW1wbGF0ZSBzcGVjaWFs aXphdGlvbiB3aGVyZSBUIGlzIHZvaWQuCitAQCAtMjMyLDYgKzI0OSwxMiBAQCBjbGFzcyBUaHJl YWRFbmdpbmVTdGFydGVyPHZvaWQ+IDogcHVibGljIFRocmVhZEVuZ2luZVN0YXJ0ZXJCYXNlPHZv aWQ+CisgcHVibGljOgorICAgICBUaHJlYWRFbmdpbmVTdGFydGVyKFRocmVhZEVuZ2luZTx2b2lk PiAqX3RocmVhZEVuZ2luZSkKKyAgICAgICAgIDogVGhyZWFkRW5naW5lU3RhcnRlckJhc2U8dm9p ZD4oX3RocmVhZEVuZ2luZSkge30KKysKKysgICAgdm9pZCBzdGFydEJsb2NraW5nKCkKKysgICAg eworKyAgICAgICAgdGhpcy0+dGhyZWFkRW5naW5lLT5zdGFydEJsb2NraW5nKCk7CisrICAgICAg ICBkZWxldGUgdGhpcy0+dGhyZWFkRW5naW5lOworKyAgICB9CisgfTsKKyAKKyAvLyEgW3F0Y29u Y3VycmVudHRocmVhZGVuZ2luZS0xXQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9h bmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1h dGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAKK2luZGV4IDk4YjAyZjAyMDIuLmVhYzE1MjQxMDcg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0 aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1hdGlvbi9xdmFyaWFudGFuaW1h dGlvbi5jcHAKK0BAIC0yNzYsNyArMjc2LDkgQEAgdm9pZCBRVmFyaWFudEFuaW1hdGlvblByaXZh dGU6OnNldEN1cnJlbnRWYWx1ZUZvclByb2dyZXNzKGNvbnN0IHFyZWFsIHByb2dyZXNzKQorIAor ICAgICBjb25zdCBxcmVhbCBzdGFydFByb2dyZXNzID0gY3VycmVudEludGVydmFsLnN0YXJ0LmZp cnN0OworICAgICBjb25zdCBxcmVhbCBlbmRQcm9ncmVzcyA9IGN1cnJlbnRJbnRlcnZhbC5lbmQu Zmlyc3Q7CistICAgIGNvbnN0IHFyZWFsIGxvY2FsUHJvZ3Jlc3MgPSAocHJvZ3Jlc3MgLSBzdGFy dFByb2dyZXNzKSAvIChlbmRQcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpOworKyAgICBjb25zdCBx cmVhbCBsb2NhbFByb2dyZXNzID0KKysgICAgICAgICAgICBxSXNOdWxsKHByb2dyZXNzIC0gc3Rh cnRQcm9ncmVzcykgPyAwLjAgLy8gYXZvaWQgMC8wIGJlbG93CisrICAgICAgICAgICAgLyogZWxz ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgIDogKHByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcykg LyAoZW5kUHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKTsKKyAKKyAgICAgUVZhcmlhbnQgcmV0ID0g cS0+aW50ZXJwb2xhdGVkKGN1cnJlbnRJbnRlcnZhbC5zdGFydC5zZWNvbmQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50SW50ZXJ2YWwuZW5kLnNlY29uZCwKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1lc3BhY2UuaCBiL3F0YmFz ZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oCitpbmRleCBhZDQxNTBiMzE3Li5iZjE5 YjE2MjdiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xbmFtZXNwYWNl LmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oCitAQCAtMTg2 NCw3ICsxODY0LDcgQEAgcHVibGljOgorICAgICBRVF9RX0VOVU0oVGltZXJUeXBlKQorICAgICBR VF9RX0VOVU0oU2Nyb2xsUGhhc2UpCisgICAgIFFUX1FfRU5VTShNb3VzZUV2ZW50U291cmNlKQor LSAgICBRVF9RX0ZMQUcoTW91c2VFdmVudEZsYWcpCisrICAgIFFUX1FfRkxBRyhNb3VzZUV2ZW50 RmxhZ3MpCisgICAgIFFUX1FfRU5VTShDaGVja3N1bVR5cGUpCisgICAgIFFUX1FfRU5VTShIaWdo RHBpU2NhbGVGYWN0b3JSb3VuZGluZ1BvbGljeSkKKyAgICAgUVRfUV9FTlVNKFRhYkZvY3VzQmVo YXZpb3IpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNw cCBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAKK2luZGV4IDEwNjcyYzFm OTIuLjI1Zjg3YzdlNmEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3Fy YW5kb20uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20uY3BwCitA QCAtMzgzLDcgKzM4Myw2IEBAIHN0cnVjdCBRUmFuZG9tR2VuZXJhdG9yOjpTeXN0ZW1BbmRHbG9i YWxHZW5lcmF0b3JzCisgCisgICAgICAgICBjb25zdGV4cHIgU3lzdGVtQW5kR2xvYmFsR2VuZXJh dG9ycyBnID0ge307CisgICAgICAgICBRX1VOVVNFRChnKTsKKy0gICAgICAgIFFfU1RBVElDX0FT U0VSVChzdGQ6OmlzX2xpdGVyYWxfdHlwZTxTeXN0ZW1BbmRHbG9iYWxHZW5lcmF0b3JzPjo6dmFs dWUpOworICNlbmRpZgorICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGli L2lvL3FidWZmZXIuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FidWZmZXIuY3BwCitpbmRl eCA1OTVmY2QyNzI0Li4wMzJjMGRkZDRiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L2lvL3FidWZmZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1ZmZlci5jcHAK K0BAIC00MSw2ICs0MSw4IEBACisgI2luY2x1ZGUgPFF0Q29yZS9xbWV0YW9iamVjdC5oPgorICNp bmNsdWRlICJwcml2YXRlL3Fpb2RldmljZV9wLmgiCisgCisrI2luY2x1ZGUgPGxpbWl0cz4KKysK KyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyAvKiogUUJ1ZmZlclByaXZhdGUgKiovCitAQCAtMzY2 LDcgKzM2OCw5IEBAIHFpbnQ2NCBRQnVmZmVyOjpzaXplKCkgY29uc3QKKyBib29sIFFCdWZmZXI6 OnNlZWsocWludDY0IHBvcykKKyB7CisgICAgIFFfRChRQnVmZmVyKTsKKy0gICAgaWYgKHBvcyA+ IGQtPmJ1Zi0+c2l6ZSgpICYmIGlzV3JpdGFibGUoKSkgeworKyAgICBjb25zdCBhdXRvIG9sZEJ1 ZlNpemUgPSBkLT5idWYtPnNpemUoKTsKKysgICAgY29uc3RleHByIHFpbnQ2NCBNYXhTZWVrUG9z ID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8ZGVjbHR5cGUob2xkQnVmU2l6ZSk+OjptYXgpKCk7Cisr ICAgIGlmIChwb3MgPD0gTWF4U2Vla1BvcyAmJiBwb3MgPiBvbGRCdWZTaXplICYmIGlzV3JpdGFi bGUoKSkgeworICAgICAgICAgaWYgKHNlZWsoZC0+YnVmLT5zaXplKCkpKSB7CisgICAgICAgICAg ICAgY29uc3QgcWludDY0IGdhcFNpemUgPSBwb3MgLSBkLT5idWYtPnNpemUoKTsKKyAgICAgICAg ICAgICBpZiAod3JpdGUoUUJ5dGVBcnJheShnYXBTaXplLCAwKSkgIT0gZ2FwU2l6ZSkgeworQEAg LTM3Nyw3ICszODEsNyBAQCBib29sIFFCdWZmZXI6OnNlZWsocWludDY0IHBvcykKKyAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICB9CisgICAgIH0gZWxzZSBpZiAocG9zID4gZC0+ YnVmLT5zaXplKCkgfHwgcG9zIDwgMCkgeworLSAgICAgICAgcVdhcm5pbmcoIlFCdWZmZXI6OnNl ZWs6IEludmFsaWQgcG9zOiAlZCIsIGludChwb3MpKTsKKysgICAgICAgIHFXYXJuaW5nKCJRQnVm ZmVyOjpzZWVrOiBJbnZhbGlkIHBvczogJWxsZCIsIHBvcyk7CisgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgIH0KKyAgICAgcmV0dXJuIFFJT0RldmljZTo6c2Vlayhwb3MpOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2luZV93aW4uY3BwIGIvcXRi YXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAKK2luZGV4IDgxZDNh NzE5ODYuLmM4NmVkMWY5YjAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZp bGVzeXN0ZW1lbmdpbmVfd2luLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxl c3lzdGVtZW5naW5lX3dpbi5jcHAKK0BAIC02NjQsMTQgKzY2NCwxNCBAQCBRRmlsZVN5c3RlbUVu dHJ5IFFGaWxlU3lzdGVtRW5naW5lOjphYnNvbHV0ZU5hbWUoY29uc3QgUUZpbGVTeXN0ZW1FbnRy eSAmZW50cnkpCisgICAgIHJldHVybiBRRmlsZVN5c3RlbUVudHJ5KHJldCwgUUZpbGVTeXN0ZW1F bnRyeTo6RnJvbUludGVybmFsUGF0aCgpKTsKKyB9CisgCistI2lmIGRlZmluZWQoUV9DQ19NSU5H VykgJiYgV0lOVkVSIDwgMHgwNjAyIC8vICBXaW5kb3dzIDggb253YXJkcworKyNpZiBkZWZpbmVk KFFfQ0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYwMiAmJiBfV0lOMzJfV0lOTlQgPCBfV0lOMzJf V0lOTlRfV0lOOCAvLyAgV2luZG93cyA4IG9ud2FyZHMKKyAKKyB0eXBlZGVmIHN0cnVjdCBfRklM RV9JRF9JTkZPIHsKKyAgICAgVUxPTkdMT05HIFZvbHVtZVNlcmlhbE51bWJlcjsKKyAgICAgRklM RV9JRF8xMjggRmlsZUlkOworIH0gRklMRV9JRF9JTkZPLCAqUEZJTEVfSURfSU5GTzsKKyAKKy0j ZW5kaWYgLy8gaWYgZGVmaW5lZCAoUV9DQ19NSU5HVykgJiYgV0lOVkVSIDwgMHgwNjAyCisrI2Vu ZGlmIC8vIGlmIGRlZmluZWQoUV9DQ19NSU5HVykgJiYgV0lOVkVSIDwgMHgwNjAyICYmIF9XSU4z Ml9XSU5OVCA8IF9XSU4zMl9XSU5OVF9XSU44CisgCisgLy8gRmlsZSBJRCBmb3IgV2luZG93cyB1 cCB0byB2ZXJzaW9uIDcgYW5kIEZBVDMyIGRyaXZlcworIHN0YXRpYyBpbmxpbmUgUUJ5dGVBcnJh eSBmaWxlSWQoSEFORExFIGhhbmRsZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIv aW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lv L3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5LmNwcAoraW5kZXggOTRkOWQwNmJjYi4uMjdlMGIx M2IwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbXdhdGNo ZXJfaW5vdGlmeS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbXdh dGNoZXJfaW5vdGlmeS5jcHAKK0BAIC0zNjYsNyArMzY2LDkgQEAgdm9pZCBRSW5vdGlmeUZpbGVT eXN0ZW1XYXRjaGVyRW5naW5lOjpyZWFkRnJvbUlub3RpZnkoKQorICAgICAvLyBxRGVidWcoIlFJ bm90aWZ5RmlsZVN5c3RlbVdhdGNoZXJFbmdpbmU6OnJlYWRGcm9tSW5vdGlmeSIpOworIAorICAg ICBpbnQgYnVmZlNpemUgPSAwOworLSAgICBpb2N0bChpbm90aWZ5RmQsIEZJT05SRUFELCAoY2hh ciAqKSAmYnVmZlNpemUpOworKyAgICBpZiAoaW9jdGwoaW5vdGlmeUZkLCBGSU9OUkVBRCwgKGNo YXIgKikgJmJ1ZmZTaXplKSA9PSAtMSB8fCBidWZmU2l6ZSA9PSAwKQorKyAgICAgICAgcmV0dXJu OworKworICAgICBRVmFyTGVuZ3RoQXJyYXk8Y2hhciwgNDA5Nj4gYnVmZmVyKGJ1ZmZTaXplKTsK KyAgICAgYnVmZlNpemUgPSByZWFkKGlub3RpZnlGZCwgYnVmZmVyLmRhdGEoKSwgYnVmZlNpemUp OworICAgICBjaGFyICphdCA9IGJ1ZmZlci5kYXRhKCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fs b2NrZmlsZV93aW4uY3BwCitpbmRleCAyNzdmOGQ0MjMwLi4zOGVjZWY1NTUwIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dpbi5jcHAKK0BAIC00OCw2ICs0OCw4IEBACisgI2lu Y2x1ZGUgIlF0Q29yZS9xZGVidWcuaCIKKyAjaW5jbHVkZSAiUXRDb3JlL3F0aHJlYWQuaCIKKyAK KysjaW5jbHVkZSAicHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmgiCisrCisgUVRfQkVHSU5fTkFN RVNQQUNFCisgCisgc3RhdGljIGlubGluZSBib29sIGZpbGVFeGlzdHMoY29uc3Qgd2NoYXJfdCAq ZmlsZU5hbWUpCitAQCAtMTUwLDcgKzE1Miw3IEBAIFFTdHJpbmcgUUxvY2tGaWxlUHJpdmF0ZTo6 cHJvY2Vzc05hbWVCeVBpZChxaW50NjQgcGlkKQorICNpZiAhZGVmaW5lZChRX09TX1dJTlJUKQor ICAgICB0eXBlZGVmIERXT1JEIChXSU5BUEkgKkdldE1vZHVsZUZpbGVOYW1lRXhGdW5jKShIQU5E TEUsIEhNT0RVTEUsIExQVFNUUiwgRFdPUkQpOworIAorLSAgICBITU9EVUxFIGhQc2FwaSA9IExv YWRMaWJyYXJ5QSgicHNhcGkiKTsKKysgICAgSE1PRFVMRSBoUHNhcGkgPSBRU3lzdGVtTGlicmFy eTo6bG9hZChMInBzYXBpIik7CisgICAgIGlmICghaFBzYXBpKQorICAgICAgICAgcmV0dXJuIFFT dHJpbmcoKTsKKyAgICAgR2V0TW9kdWxlRmlsZU5hbWVFeEZ1bmMgcUdldE1vZHVsZUZpbGVOYW1l RXggPSByZWludGVycHJldF9jYXN0PEdldE1vZHVsZUZpbGVOYW1lRXhGdW5jPigKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAgYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAKK2luZGV4IDUwMzkwZTU3ZjUuLjE1YzhmMzA3 NDUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xcHJvY2Vzc191bml4LmNwcAorQEAgLTEsNyAr MSw3IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorICoqIENvcHlyaWdodCAoQykgMjAx NiBUaGUgUXQgQ29tcGFueSBMdGQuCistKiogQ29weXJpZ2h0IChDKSAyMDE2IEludGVsIENvcnBv cmF0aW9uLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqKiBD b250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUg aXMgcGFydCBvZiB0aGUgUXRDb3JlIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC00MjIs MTQgKzQyMiwxNSBAQCB2b2lkIFFQcm9jZXNzUHJpdmF0ZTo6c3RhcnRQcm9jZXNzKCkKKyAgICAg Ly8gQWRkIHRoZSBwcm9ncmFtIG5hbWUgdG8gdGhlIGFyZ3VtZW50IGxpc3QuCisgICAgIGFyZ3Zb MF0gPSBudWxscHRyOworICAgICBpZiAoIXByb2dyYW0uY29udGFpbnMoUUxhdGluMUNoYXIoJy8n KSkpIHsKKysgICAgICAgIC8vIGZpbmRFeGVjdXRhYmxlKCkgcmV0dXJucyBpdHMgYXJndW1lbnQg aWYgaXQncyBhbiBhYnNvbHV0ZSBwYXRoLAorKyAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IHNlYXJj aGVzICRQQVRIOyByZXR1cm5zIGVtcHR5IGlmIG5vdCBmb3VuZCAod2UgaGFuZGxlCisrICAgICAg ICAvLyB0aGF0IGNhc2UgbXVjaCBsYXRlcikKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcgJmV4ZUZp bGVQYXRoID0gUVN0YW5kYXJkUGF0aHM6OmZpbmRFeGVjdXRhYmxlKHByb2dyYW0pOworLSAgICAg ICAgaWYgKCFleGVGaWxlUGF0aC5pc0VtcHR5KCkpIHsKKy0gICAgICAgICAgICBjb25zdCBRQnl0 ZUFycmF5ICZ0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxlUGF0aCk7CistICAgICAgICAg ICAgYXJndlswXSA9IDo6c3RyZHVwKHRtcC5jb25zdERhdGEoKSk7CistICAgICAgICB9CistICAg IH0KKy0gICAgaWYgKCFhcmd2WzBdKQorKyAgICAgICAgY29uc3QgUUJ5dGVBcnJheSAmdG1wID0g UUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgpOworKyAgICAgICAgYXJndlswXSA9IDo6c3Ry ZHVwKHRtcC5jb25zdERhdGEoKSk7CisrICAgIH0gZWxzZSB7CisgICAgICAgICBhcmd2WzBdID0g OjpzdHJkdXAoZW5jb2RlZFByb2dyYW1OYW1lLmNvbnN0RGF0YSgpKTsKKysgICAgfQorIAorICAg ICAvLyBBZGQgZXZlcnkgYXJndW1lbnQgdG8gdGhlIGxpc3QKKyAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBhcmd1bWVudHMuY291bnQoKTsgKytpKQorQEAgLTk4MywxNSArOTg0LDE2IEBAIGJvb2wg UVByb2Nlc3NQcml2YXRlOjpzdGFydERldGFjaGVkKHFpbnQ2NCAqcGlkKQorICAgICAgICAgICAg ICAgICBlbnZwID0gX3FfZHVwRW52aXJvbm1lbnQoZW52aXJvbm1lbnQuZC5jb25zdERhdGEoKS0+ dmFycywgJmVudmMpOworICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICBRQnl0ZUFycmF5 IHRtcDsKKyAgICAgICAgICAgICBpZiAoIXByb2dyYW0uY29udGFpbnMoUUxhdGluMUNoYXIoJy8n KSkpIHsKKysgICAgICAgICAgICAgICAgLy8gZmluZEV4ZWN1dGFibGUoKSByZXR1cm5zIGl0cyBh cmd1bWVudCBpZiBpdCdzIGFuIGFic29sdXRlIHBhdGgsCisrICAgICAgICAgICAgICAgIC8vIG90 aGVyd2lzZSBpdCBzZWFyY2hlcyAkUEFUSDsgcmV0dXJucyBlbXB0eSBpZiBub3QgZm91bmQgKHdl IGhhbmRsZQorKyAgICAgICAgICAgICAgICAvLyB0aGF0IGNhc2UgbXVjaCBsYXRlcikKKyAgICAg ICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmZXhlRmlsZVBhdGggPSBRU3RhbmRhcmRQYXRoczo6 ZmluZEV4ZWN1dGFibGUocHJvZ3JhbSk7CistICAgICAgICAgICAgICAgIGlmICghZXhlRmlsZVBh dGguaXNFbXB0eSgpKQorLSAgICAgICAgICAgICAgICAgICAgdG1wID0gUUZpbGU6OmVuY29kZU5h bWUoZXhlRmlsZVBhdGgpOworKyAgICAgICAgICAgICAgICBjb25zdCBRQnl0ZUFycmF5ICZ0bXAg PSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxlUGF0aCk7CisrICAgICAgICAgICAgICAgIGFyZ3Zb MF0gPSA6OnN0cmR1cCh0bXAuY29uc3REYXRhKCkpOworKyAgICAgICAgICAgIH0gZWxzZSB7Cisr ICAgICAgICAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cChRRmlsZTo6ZW5jb2RlTmFtZShwcm9n cmFtKSk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlmICh0bXAuaXNFbXB0eSgpKQor LSAgICAgICAgICAgICAgICB0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShwcm9ncmFtKTsKKy0gICAg ICAgICAgICBhcmd2WzBdID0gdG1wLmRhdGEoKTsKKyAKKyAgICAgICAgICAgICBpZiAoZW52cCkK KyAgICAgICAgICAgICAgICAgcXRfc2FmZV9leGVjdmUoYXJndlswXSwgYXJndiwgZW52cCk7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRlbW1v ZGVsLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2Rl bC5jcHAKK2luZGV4IDNhNzljNTAyYWYuLjk5N2E2MzRlNzYgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwCitAQCAtMzE5 Niw5ICszMTk2LDggQEAgYm9vbCBRQWJzdHJhY3RJdGVtTW9kZWw6OmJlZ2luTW92ZUNvbHVtbnMo Y29uc3QgUU1vZGVsSW5kZXggJnNvdXJjZVBhcmVudCwgaW50IHMKKyAgICAgZGVzdGluYXRpb25D aGFuZ2UubmVlZHNBZGp1c3QgPSBkZXN0aW5hdGlvblBhcmVudC5pc1ZhbGlkKCkgJiYgZGVzdGlu YXRpb25QYXJlbnQucm93KCkgPj0gc291cmNlTGFzdCAmJiBkZXN0aW5hdGlvblBhcmVudC5wYXJl bnQoKSA9PSBzb3VyY2VQYXJlbnQ7CisgICAgIGQtPmNoYW5nZXMucHVzaChkZXN0aW5hdGlvbkNo YW5nZSk7CisgCistICAgIGQtPml0ZW1zQWJvdXRUb0JlTW92ZWQoc291cmNlUGFyZW50LCBzb3Vy Y2VGaXJzdCwgc291cmNlTGFzdCwgZGVzdGluYXRpb25QYXJlbnQsIGRlc3RpbmF0aW9uQ2hpbGQs IFF0OjpIb3Jpem9udGFsKTsKKy0KKyAgICAgZW1pdCBjb2x1bW5zQWJvdXRUb0JlTW92ZWQoc291 cmNlUGFyZW50LCBzb3VyY2VGaXJzdCwgc291cmNlTGFzdCwgZGVzdGluYXRpb25QYXJlbnQsIGRl c3RpbmF0aW9uQ2hpbGQsIFFQcml2YXRlU2lnbmFsKCkpOworKyAgICBkLT5pdGVtc0Fib3V0VG9C ZU1vdmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNvdXJjZUxhc3QsIGRlc3RpbmF0aW9u UGFyZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRdDo6SG9yaXpvbnRhbCk7CisgICAgIHJldHVybiB0 cnVlOworIH0KKyAKK0BAIC0zMjMxLDcgKzMyMzAsNiBAQCB2b2lkIFFBYnN0cmFjdEl0ZW1Nb2Rl bDo6ZW5kTW92ZUNvbHVtbnMoKQorICAgICAgIGFkanVzdGVkU291cmNlID0gY3JlYXRlSW5kZXgo YWRqdXN0ZWRTb3VyY2Uucm93KCksIGFkanVzdGVkU291cmNlLmNvbHVtbigpICsgbnVtTW92ZWQs IGFkanVzdGVkU291cmNlLmludGVybmFsUG9pbnRlcigpKTsKKyAKKyAgICAgZC0+aXRlbXNNb3Zl ZChhZGp1c3RlZFNvdXJjZSwgcmVtb3ZlQ2hhbmdlLmZpcnN0LCByZW1vdmVDaGFuZ2UubGFzdCwg YWRqdXN0ZWREZXN0aW5hdGlvbiwgaW5zZXJ0Q2hhbmdlLmZpcnN0LCBRdDo6SG9yaXpvbnRhbCk7 CistCisgICAgIGVtaXQgY29sdW1uc01vdmVkKGFkanVzdGVkU291cmNlLCByZW1vdmVDaGFuZ2Uu Zmlyc3QsIHJlbW92ZUNoYW5nZS5sYXN0LCBhZGp1c3RlZERlc3RpbmF0aW9uLCBpbnNlcnRDaGFu Z2UuZmlyc3QsIFFQcml2YXRlU2lnbmFsKCkpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9kZWwuY3BwIGIvcXRiYXNl L3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRmaWx0ZXJwcm94eW1vZGVsLmNwcAoraW5kZXgg ZGM2Mzc5ZDlmYi4uYzVlMjg3ZWU4NCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9p dGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29y ZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAKK0BAIC05MzksOCArOTM5 LDkgQEAgdm9pZCBRU29ydEZpbHRlclByb3h5TW9kZWxQcml2YXRlOjppbnNlcnRfc291cmNlX2l0 ZW1zKAorICAgICAgICAgICAgICAgICBxLT5iZWdpbkluc2VydENvbHVtbnMocHJveHlfcGFyZW50 LCBwcm94eV9zdGFydCwgcHJveHlfZW5kKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgc291cmNlX2l0ZW1zLnNpemUoKTsgKytpKQorLSAgICAgICAgICAgIHBy b3h5X3RvX3NvdXJjZS5pbnNlcnQocHJveHlfc3RhcnQgKyBpLCBzb3VyY2VfaXRlbXMuYXQoaSkp OworKyAgICAgICAgLy8gVE9ETzogdXNlIHRoZSByYW5nZSBRTGlzdDo6aW5zZXJ0KCkgb3Zlcmxv YWQgb25jZSBpdCBpcyBpbXBsZW1lbnRlZCAoUVRCVUctNTg2MzMpLgorKyAgICAgICAgcHJveHlf dG9fc291cmNlLmluc2VydChwcm94eV9zdGFydCwgc291cmNlX2l0ZW1zLnNpemUoKSwgMCk7Cisr ICAgICAgICBzdGQ6OmNvcHkoc291cmNlX2l0ZW1zLmNiZWdpbigpLCBzb3VyY2VfaXRlbXMuY2Vu ZCgpLCBwcm94eV90b19zb3VyY2UuYmVnaW4oKSArIHByb3h5X3N0YXJ0KTsKKyAKKyAgICAgICAg IGJ1aWxkX3NvdXJjZV90b19wcm94eV9tYXBwaW5nKHByb3h5X3RvX3NvdXJjZSwgc291cmNlX3Rv X3Byb3h5KTsKKyAKK0BAIC0zMTIzLDggKzMxMjQsOSBAQCBib29sIFFTb3J0RmlsdGVyUHJveHlN b2RlbDo6ZmlsdGVyQWNjZXB0c1JvdyhpbnQgc291cmNlX3JvdywgY29uc3QgUU1vZGVsSW5kZXgg JgorIAorICAgICBpZiAoZC0+ZmlsdGVyX2RhdGEuaXNFbXB0eSgpKQorICAgICAgICAgcmV0dXJu IHRydWU7CisrCisrICAgIGludCBjb2x1bW5fY291bnQgPSBkLT5tb2RlbC0+Y29sdW1uQ291bnQo c291cmNlX3BhcmVudCk7CisgICAgIGlmIChkLT5maWx0ZXJfY29sdW1uID09IC0xKSB7CistICAg ICAgICBpbnQgY29sdW1uX2NvdW50ID0gZC0+bW9kZWwtPmNvbHVtbkNvdW50KHNvdXJjZV9wYXJl bnQpOworICAgICAgICAgZm9yIChpbnQgY29sdW1uID0gMDsgY29sdW1uIDwgY29sdW1uX2NvdW50 OyArK2NvbHVtbikgeworICAgICAgICAgICAgIFFNb2RlbEluZGV4IHNvdXJjZV9pbmRleCA9IGQt Pm1vZGVsLT5pbmRleChzb3VyY2Vfcm93LCBjb2x1bW4sIHNvdXJjZV9wYXJlbnQpOworICAgICAg ICAgICAgIFFTdHJpbmcga2V5ID0gZC0+bW9kZWwtPmRhdGEoc291cmNlX2luZGV4LCBkLT5maWx0 ZXJfcm9sZSkudG9TdHJpbmcoKTsKK0BAIC0zMTMzLDkgKzMxMzUsMTAgQEAgYm9vbCBRU29ydEZp bHRlclByb3h5TW9kZWw6OmZpbHRlckFjY2VwdHNSb3coaW50IHNvdXJjZV9yb3csIGNvbnN0IFFN b2RlbEluZGV4ICYKKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQor LSAgICBRTW9kZWxJbmRleCBzb3VyY2VfaW5kZXggPSBkLT5tb2RlbC0+aW5kZXgoc291cmNlX3Jv dywgZC0+ZmlsdGVyX2NvbHVtbiwgc291cmNlX3BhcmVudCk7CistICAgIGlmICghc291cmNlX2lu ZGV4LmlzVmFsaWQoKSkgLy8gdGhlIGNvbHVtbiBtYXkgbm90IGV4aXN0CisrCisrICAgIGlmIChk LT5maWx0ZXJfY29sdW1uID49IGNvbHVtbl9jb3VudCkgLy8gdGhlIGNvbHVtbiBtYXkgbm90IGV4 aXN0CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgUU1vZGVsSW5kZXggc291cmNlX2luZGV4 ID0gZC0+bW9kZWwtPmluZGV4KHNvdXJjZV9yb3csIGQtPmZpbHRlcl9jb2x1bW4sIHNvdXJjZV9w YXJlbnQpOworICAgICBRU3RyaW5nIGtleSA9IGQtPm1vZGVsLT5kYXRhKHNvdXJjZV9pbmRleCwg ZC0+ZmlsdGVyX3JvbGUpLnRvU3RyaW5nKCk7CisgICAgIHJldHVybiBkLT5maWx0ZXJfZGF0YS5o YXNNYXRjaChrZXkpOworIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVs L3Fjb3JlYXBwbGljYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xY29yZWFw cGxpY2F0aW9uLmNwcAoraW5kZXggY2EyODY0ZGY4My4uMTMyYjJlYWU1MiAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHAKK0BAIC0xMTU3LDcg KzExNTcsNyBAQCBzdGF0aWMgYm9vbCBkb05vdGlmeShRT2JqZWN0ICpyZWNlaXZlciwgUUV2ZW50 ICpldmVudCkKKyBib29sIFFDb3JlQXBwbGljYXRpb25Qcml2YXRlOjpzZW5kVGhyb3VnaEFwcGxp Y2F0aW9uRXZlbnRGaWx0ZXJzKFFPYmplY3QgKnJlY2VpdmVyLCBRRXZlbnQgKmV2ZW50KQorIHsK KyAgICAgLy8gV2UgY2FuJ3QgYWNjZXNzIHRoZSBhcHBsaWNhdGlvbiBldmVudCBmaWx0ZXJzIG91 dHNpZGUgb2YgdGhlIG1haW4gdGhyZWFkIChyYWNlIGNvbmRpdGlvbnMpCistICAgIFFfQVNTRVJU KHJlY2VpdmVyLT5kX2Z1bmMoKS0+dGhyZWFkRGF0YS5sb2FkUmVsYXhlZCgpLT50aHJlYWQubG9h ZEFjcXVpcmUoKSA9PSBtYWluVGhyZWFkKCkpOworKyAgICBRX0FTU0VSVChyZWNlaXZlci0+ZF9m dW5jKCktPnRocmVhZERhdGEubG9hZEFjcXVpcmUoKS0+dGhyZWFkLmxvYWRSZWxheGVkKCkgPT0g bWFpblRocmVhZCgpKTsKKyAKKyAgICAgaWYgKGV4dHJhRGF0YSkgeworICAgICAgICAgLy8gYXBw bGljYXRpb24gZXZlbnQgZmlsdGVycyBhcmUgb25seSBjYWxsZWQgZm9yIG9iamVjdHMgaW4gdGhl IEdVSSB0aHJlYWQKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmpl Y3QuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcAoraW5kZXggMWVi NzkxMzhkOS4uMzZjZDc4MGVlMSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJu ZWwvcW9iamVjdC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdC5j cHAKK0BAIC0xMDEwLDcgKzEwMTAsNyBAQCBRT2JqZWN0Ojp+UU9iamVjdCgpCisgICAgICAgICBl bWl0IGRlc3Ryb3llZCh0aGlzKTsKKyAgICAgfQorIAorLSAgICBpZiAoZC0+ZGVjbGFyYXRpdmVE YXRhKSB7CisrICAgIGlmICghZC0+aXNEZWxldGluZ0NoaWxkcmVuICYmIGQtPmRlY2xhcmF0aXZl RGF0YSkgeworICAgICAgICAgaWYgKHN0YXRpY19jYXN0PFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0 YUltcGwqPihkLT5kZWNsYXJhdGl2ZURhdGEpLT5vd25lZEJ5UW1sMSkgeworICAgICAgICAgICAg IGlmIChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ryb3llZF9xbWwxKQorICAgICAgICAg ICAgICAgICBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ryb3llZF9xbWwxKGQtPmRlY2xh cmF0aXZlRGF0YSwgdGhpcyk7CitAQCAtMTU4MCw3ICsxNTgwLDcgQEAgdm9pZCBRT2JqZWN0Ojpt b3ZlVG9UaHJlYWQoUVRocmVhZCAqdGFyZ2V0VGhyZWFkKQorIAorICAgICBRVGhyZWFkRGF0YSAq Y3VycmVudERhdGEgPSBRVGhyZWFkRGF0YTo6Y3VycmVudCgpOworICAgICBRVGhyZWFkRGF0YSAq dGFyZ2V0RGF0YSA9IHRhcmdldFRocmVhZCA/IFFUaHJlYWREYXRhOjpnZXQyKHRhcmdldFRocmVh ZCkgOiBudWxscHRyOworLSAgICBRVGhyZWFkRGF0YSAqdGhpc1RocmVhZERhdGEgPSBkLT50aHJl YWREYXRhLmxvYWRSZWxheGVkKCk7CisrICAgIFFUaHJlYWREYXRhICp0aGlzVGhyZWFkRGF0YSA9 IGQtPnRocmVhZERhdGEubG9hZEFjcXVpcmUoKTsKKyAgICAgaWYgKCF0aGlzVGhyZWFkRGF0YS0+ dGhyZWFkLmxvYWRBY3F1aXJlKCkgJiYgY3VycmVudERhdGEgPT0gdGFyZ2V0RGF0YSkgeworICAg ICAgICAgLy8gb25lIGV4Y2VwdGlvbiB0byB0aGUgcnVsZTogd2UgYWxsb3cgbW92aW5nIG9iamVj dHMgd2l0aCBubyB0aHJlYWQgYWZmaW5pdHkgdG8gdGhlIGN1cnJlbnQgdGhyZWFkCisgICAgICAg ICBjdXJyZW50RGF0YSA9IGQtPnRocmVhZERhdGE7CitAQCAtMjYyMCw3ICsyNjIwLDcgQEAgaW50 IFFPYmplY3Q6OnJlY2VpdmVycyhjb25zdCBjaGFyICpzaWduYWwpIGNvbnN0CisgICAgICAgICBp ZiAoIWQtPmlzU2lnbmFsQ29ubmVjdGVkKHNpZ25hbF9pbmRleCkpCisgICAgICAgICAgICAgcmV0 dXJuIHJlY2VpdmVyczsKKyAKKy0gICAgICAgIGlmIChkLT5kZWNsYXJhdGl2ZURhdGEgJiYgUUFi c3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMpIHsKKysgICAgICAgIGlmICghZC0+aXNE ZWxldGluZ0NoaWxkcmVuICYmIGQtPmRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNsYXJh dGl2ZURhdGE6OnJlY2VpdmVycykgeworICAgICAgICAgICAgIHJlY2VpdmVycyArPSBRQWJzdHJh Y3REZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycyhkLT5kZWNsYXJhdGl2ZURhdGEsIHRoaXMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpZ25hbF9pbmRleCk7CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9i amVjdF9wLmgKK2luZGV4IDBiODI3YTUyY2EuLjEzZmZiODg5OTkgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIva2VybmVsL3FvYmplY3RfcC5oCitAQCAtNDQ0LDcgKzQ0NCw3IEBAIGlubGluZSB2b2lkIFFP YmplY3RQcml2YXRlOjpjaGVja0ZvckluY29tcGF0aWJsZUxpYnJhcnlWZXJzaW9uKGludCB2ZXJz aW9uKSBjb25zCisgCisgaW5saW5lIGJvb2wgUU9iamVjdFByaXZhdGU6OmlzRGVjbGFyYXRpdmVT aWduYWxDb25uZWN0ZWQodWludCBzaWduYWxfaW5kZXgpIGNvbnN0CisgeworLSAgICByZXR1cm4g ZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25u ZWN0ZWQKKysgICAgcmV0dXJuICFpc0RlbGV0aW5nQ2hpbGRyZW4gJiYgZGVjbGFyYXRpdmVEYXRh ICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0ZWQKKyAgICAgICAg ICAgICAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmlzU2lnbmFsQ29ubmVjdGVkKGRlY2xh cmF0aXZlRGF0YSwgcV9mdW5jKCksIHNpZ25hbF9pbmRleCk7CisgfQorIAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3IuY3BwIGIvcXRiYXNlL3NyYy9j b3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAKK2luZGV4IDI4MTJmZmI3ZWEuLmJjMDE3N2M1 ZWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3F0cmFuc2xhdG9yLmNw cAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAKK0BAIC05 MDIsNyArOTAyLDcgQEAgc3RhdGljIFFTdHJpbmcgZ2V0TWVzc2FnZShjb25zdCB1Y2hhciAqbSwg Y29uc3QgdWNoYXIgKmVuZCwgY29uc3QgY2hhciAqY29udGV4dCwKKyAgICAgICAgICAgICBnb3Rv IGVuZDsKKyAgICAgICAgIGNhc2UgVGFnX1RyYW5zbGF0aW9uOiB7CisgICAgICAgICAgICAgaW50 IGxlbiA9IHJlYWQzMihtKTsKKy0gICAgICAgICAgICBpZiAobGVuICUgMSkKKysgICAgICAgICAg ICBpZiAobGVuICYgMSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICAg ICAgICAgICBtICs9IDQ7CisgICAgICAgICAgICAgaWYgKCFudW1lcnVzLS0pIHsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwIGIvcXRi YXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlLmNwcAoraW5kZXggOWRlMjJj ZWYzMy4uZmY4NjhhMzI2OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlw ZXMvcW1pbWVkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMv cW1pbWVkYXRhYmFzZS5jcHAKK0BAIC0zODksMjAgKzM4OSwyMyBAQCBRTWltZVR5cGUgUU1pbWVE YXRhYmFzZVByaXZhdGU6Om1pbWVUeXBlRm9yRmlsZU5hbWVBbmREYXRhKGNvbnN0IFFTdHJpbmcg JmZpbGVOYQorICAgICAgICAgLy8gRGlzYW1iaWd1YXRlIGNvbmZsaWN0aW5nIGV4dGVuc2lvbnMg KGlmIG1hZ2ljIG1hdGNoaW5nIGZvdW5kIHNvbWV0aGluZykKKyAgICAgICAgIGlmIChjYW5kaWRh dGVCeURhdGEuaXNWYWxpZCgpICYmIG1hZ2ljQWNjdXJhY3kgPiAwKSB7CisgICAgICAgICAgICAg Y29uc3QgUVN0cmluZyBzbmlmZmVkTWltZSA9IGNhbmRpZGF0ZUJ5RGF0YS5uYW1lKCk7CistICAg ICAgICAgICAgLy8gSWYgdGhlIHNuaWZmZWRNaW1lIG1hdGNoZXMgYSBnbG9iIG1hdGNoLCB1c2Ug aXQKKysgICAgICAgICAgICAvLyBJZiB0aGUgc25pZmZlZE1pbWUgbWF0Y2hlcyBhIGhpZ2hlc3Qt d2VpZ2h0IGdsb2IgbWF0Y2gsIHVzZSBpdAorICAgICAgICAgICAgIGlmIChjYW5kaWRhdGVzQnlO YW1lLm1fbWF0Y2hpbmdNaW1lVHlwZXMuY29udGFpbnMoc25pZmZlZE1pbWUpKSB7CisgICAgICAg ICAgICAgICAgICphY2N1cmFjeVB0ciA9IDEwMDsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGNh bmRpZGF0ZUJ5RGF0YTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgZm9yIChjb25zdCBR U3RyaW5nICZtIDogcUFzQ29uc3QoY2FuZGlkYXRlc0J5TmFtZS5tX21hdGNoaW5nTWltZVR5cGVz KSkgeworKyAgICAgICAgICAgIGZvciAoY29uc3QgUVN0cmluZyAmbSA6IHFBc0NvbnN0KGNhbmRp ZGF0ZXNCeU5hbWUubV9hbGxNYXRjaGluZ01pbWVUeXBlcykpIHsKKyAgICAgICAgICAgICAgICAg aWYgKGluaGVyaXRzKG0sIHNuaWZmZWRNaW1lKSkgeworICAgICAgICAgICAgICAgICAgICAgLy8g V2UgaGF2ZSBtYWdpYyArIHBhdHRlcm4gcG9pbnRpbmcgdG8gdGhpcywgc28gaXQncyBhIHByZXR0 eSBnb29kIG1hdGNoCisgICAgICAgICAgICAgICAgICAgICAqYWNjdXJhY3lQdHIgPSAxMDA7Cisg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWltZVR5cGVGb3JOYW1lKG0pOworICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IG1h Z2ljQWNjdXJhY3k7CistICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKysgICAg ICAgICAgICBpZiAoY2FuZGlkYXRlc0J5TmFtZS5tX2FsbE1hdGNoaW5nTWltZVR5cGVzLmlzRW1w dHkoKSkgeworKyAgICAgICAgICAgICAgICAvLyBObyBnbG9iLCB1c2UgbWFnaWMKKysgICAgICAg ICAgICAgICAgKmFjY3VyYWN5UHRyID0gbWFnaWNBY2N1cmFjeTsKKysgICAgICAgICAgICAgICAg cmV0dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKysgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAg IH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZ2xv YnBhdHRlcm4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWdsb2JwYXR0 ZXJuLmNwcAoraW5kZXggYTgxMTEyZDIyNy4uZmE4ZjRjNTQ1ZCAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAKK0BAIC04Myw3ICs4 MywxMCBAQCB2b2lkIFFNaW1lR2xvYk1hdGNoUmVzdWx0OjphZGRNYXRjaChjb25zdCBRU3RyaW5n ICZtaW1lVHlwZSwgaW50IHdlaWdodCwgY29uc3QgUQorICAgICB9CisgICAgIGlmICghbV9tYXRj aGluZ01pbWVUeXBlcy5jb250YWlucyhtaW1lVHlwZSkpIHsKKyAgICAgICAgIG1fbWF0Y2hpbmdN aW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKy0gICAgICAgIG1fYWxsTWF0Y2hpbmdNaW1lVHlw ZXMuYXBwZW5kKG1pbWVUeXBlKTsKKysgICAgICAgIGlmIChyZXBsYWNlKQorKyAgICAgICAgICAg IG1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMucHJlcGVuZChtaW1lVHlwZSk7IC8vIGhpZ2hlc3Qtd2Vp Z2h0IGZpcnN0CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgbV9hbGxNYXRjaGluZ01pbWVU eXBlcy5hcHBlbmQobWltZVR5cGUpOworICAgICAgICAgbV9rbm93blN1ZmZpeExlbmd0aCA9IGtu b3duU3VmZml4TGVuZ3RoOworICAgICB9CisgfQorQEAgLTk0LDcgKzk3LDcgQEAgUU1pbWVHbG9i UGF0dGVybjo6UGF0dGVyblR5cGUgUU1pbWVHbG9iUGF0dGVybjo6ZGV0ZWN0UGF0dGVyblR5cGUo Y29uc3QgUVN0cmluZworICAgICBpZiAoIXBhdHRlcm5MZW5ndGgpCisgICAgICAgICByZXR1cm4g T3RoZXJQYXR0ZXJuOworIAorLSAgICBjb25zdCBib29sIHN0YXJDb3VudCA9IHBhdHRlcm4uY291 bnQoUUxhdGluMUNoYXIoJyonKSkgPT0gMTsKKysgICAgY29uc3QgaW50IHN0YXJDb3VudCA9IHBh dHRlcm4uY291bnQoUUxhdGluMUNoYXIoJyonKSk7CisgICAgIGNvbnN0IGJvb2wgaGFzU3F1YXJl QnJhY2tldCA9IHBhdHRlcm4uaW5kZXhPZihRTGF0aW4xQ2hhcignWycpKSAhPSAtMTsKKyAgICAg Y29uc3QgYm9vbCBoYXNRdWVzdGlvbk1hcmsgPSBwYXR0ZXJuLmluZGV4T2YoUUxhdGluMUNoYXIo Jz8nKSkgIT0gLTE7CisgCitAQCAtMTA2LDEwICsxMDksMTAgQEAgUU1pbWVHbG9iUGF0dGVybjo6 UGF0dGVyblR5cGUgUU1pbWVHbG9iUGF0dGVybjo6ZGV0ZWN0UGF0dGVyblR5cGUoY29uc3QgUVN0 cmluZworICAgICAgICAgICAgIC8vIFBhdHRlcm5zIGxpa2UgIlJFQURNRSoiICh3ZWxsIHRoaXMg aXMgY3VycmVudGx5IHRoZSBvbmx5IG9uZSBsaWtlIHRoYXQuLi4pCisgICAgICAgICAgICAgaWYg KHBhdHRlcm4uYXQocGF0dGVybkxlbmd0aCAtIDEpID09IFFMYXRpbjFDaGFyKCcqJykpCisgICAg ICAgICAgICAgICAgIHJldHVybiBQcmVmaXhQYXR0ZXJuOworLSAgICAgICAgfQorLSAgICAgICAg Ly8gTmFtZXMgd2l0aG91dCBhbnkgd2lsZGNhcmRzIGxpa2UgIlJFQURNRSIKKy0gICAgICAgIGlm IChzdGFyQ291bnQgPT0gMCkKKysgICAgICAgIH0gZWxzZSBpZiAoc3RhckNvdW50ID09IDApIHsK KysgICAgICAgICAgICAvLyBOYW1lcyB3aXRob3V0IGFueSB3aWxkY2FyZHMgbGlrZSAiUkVBRE1F IgorICAgICAgICAgICAgIHJldHVybiBMaXRlcmFsUGF0dGVybjsKKysgICAgICAgIH0KKyAgICAg fQorIAorICAgICBpZiAocGF0dGVybiA9PSBRTGF0aW4xU3RyaW5nKCJbMC05XVswLTldWzAtOV0u dmRyIikpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXBy b3ZpZGVyLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVwcm92aWRlci5j cHAKK2luZGV4IDI1OGRkZGY4Y2IuLjQ2NDJkMGYyZDAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwCitAQCAtMjQ0LDE1ICsyNDQsMTggQEAg dm9pZCBRTWltZUJpbmFyeVByb3ZpZGVyOjphZGRGaWxlTmFtZU1hdGNoZXMoY29uc3QgUVN0cmlu ZyAmZmlsZU5hbWUsIFFNaW1lR2xvYk0KKyAgICAgY29uc3QgUVN0cmluZyBsb3dlckZpbGVOYW1l ID0gZmlsZU5hbWUudG9Mb3dlcigpOworICAgICAvLyBDaGVjayBsaXRlcmFscyAoZS5nLiAiTWFr ZWZpbGUiKQorICAgICBtYXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNoZUZpbGUsIG1fY2FjaGVG aWxlLT5nZXRVaW50MzIoUG9zTGl0ZXJhbExpc3RPZmZzZXQpLCBmaWxlTmFtZSk7CistICAgIC8v IENoZWNrIGNvbXBsZXggZ2xvYnMgKGUuZy4gImNhbGxncmluZC5vdXRbMC05XSoiKQorLSAgICBt YXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNoZUZpbGUsIG1fY2FjaGVGaWxlLT5nZXRVaW50MzIo UG9zR2xvYkxpc3RPZmZzZXQpLCBmaWxlTmFtZSk7CisgICAgIC8vIENoZWNrIHRoZSB2ZXJ5IGNv bW1vbiAqLnR4dCBjYXNlcyB3aXRoIHRoZSBzdWZmaXggdHJlZQorLSAgICBjb25zdCBpbnQgcmV2 ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc1JldmVyc2VT dWZmaXhUcmVlT2Zmc2V0KTsKKy0gICAgY29uc3QgaW50IG51bVJvb3RzID0gbV9jYWNoZUZpbGUt PmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7CistICAgIGNvbnN0IGludCBmaXJz dFJvb3RPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKHJldmVyc2VTdWZmaXhUcmVlT2Zm c2V0ICsgNCk7CistICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1S b290cywgZmlyc3RSb290T2Zmc2V0LCBsb3dlckZpbGVOYW1lLCBsb3dlckZpbGVOYW1lLmxlbmd0 aCgpIC0gMSwgZmFsc2UpOworKyAgICBpZiAocmVzdWx0Lm1fbWF0Y2hpbmdNaW1lVHlwZXMuaXNF bXB0eSgpKSB7CisrICAgICAgICBjb25zdCBpbnQgcmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgPSBt X2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc1JldmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKysgICAg ICAgIGNvbnN0IGludCBudW1Sb290cyA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1 ZmZpeFRyZWVPZmZzZXQpOworKyAgICAgICAgY29uc3QgaW50IGZpcnN0Um9vdE9mZnNldCA9IG1f Y2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgKyA0KTsKKysgICAg ICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RS b290T2Zmc2V0LCBsb3dlckZpbGVOYW1lLCBsb3dlckZpbGVOYW1lLmxlbmd0aCgpIC0gMSwgZmFs c2UpOworKyAgICAgICAgaWYgKHJlc3VsdC5tX21hdGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkK KysgICAgICAgICAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBtX2NhY2hlRmlsZSwgbnVtUm9v dHMsIGZpcnN0Um9vdE9mZnNldCwgZmlsZU5hbWUsIGZpbGVOYW1lLmxlbmd0aCgpIC0gMSwgdHJ1 ZSk7CisrICAgIH0KKysgICAgLy8gQ2hlY2sgY29tcGxleCBnbG9icyAoZS5nLiAiY2FsbGdyaW5k Lm91dFswLTldKiIgb3IgIlJFQURNRSoiKQorICAgICBpZiAocmVzdWx0Lm1fbWF0Y2hpbmdNaW1l VHlwZXMuaXNFbXB0eSgpKQorLSAgICAgICAgbWF0Y2hTdWZmaXhUcmVlKHJlc3VsdCwgbV9jYWNo ZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQsIGZpbGVOYW1lLCBmaWxlTmFtZS5sZW5n dGgoKSAtIDEsIHRydWUpOworKyAgICAgICAgbWF0Y2hHbG9iTGlzdChyZXN1bHQsIG1fY2FjaGVG aWxlLCBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc0dsb2JMaXN0T2Zmc2V0KSwgZmlsZU5hbWUp OworIH0KKyAKKyB2b2lkIFFNaW1lQmluYXJ5UHJvdmlkZXI6Om1hdGNoR2xvYkxpc3QoUU1pbWVH bG9iTWF0Y2hSZXN1bHQgJnJlc3VsdCwgQ2FjaGVGaWxlICpjYWNoZUZpbGUsIGludCBvZmYsIGNv bnN0IFFTdHJpbmcgJmZpbGVOYW1lKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9z ZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxp emF0aW9uL3Fqc29ucGFyc2VyLmNwcAoraW5kZXggMTdlNmYxMTFhYi4uMmU0MGI2YzhmYiAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNw cAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcWpzb25wYXJzZXIuY3Bw CitAQCAtMzc5LDEwICszNzksMzAgQEAgZXJyb3I6CisgICAgIHJldHVybiBRQ2JvclZhbHVlKCk7 CisgfQorIAorKy8vIFdlIG5lZWQgdG8gcmV0YWluIHRoZSBfbGFzdF8gdmFsdWUgZm9yIGFueSBk dXBsaWNhdGUga2V5cyBhbmQgd2UgbmVlZCB0byBkZXJlZiBjb250YWluZXJzLgorKy8vIFRoZXJl Zm9yZSB0aGUgbWFudWFsIGltcGxlbWVudGF0aW9uIG9mIHN0ZDo6dW5pcXVlKCkuCisrdGVtcGxh dGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIENvbXBhcmUsIHR5cGVuYW1lIEFzc2lnbj4K KytzdGF0aWMgSXRlcmF0b3IgY3VzdG9tQXNzaWduaW5nVW5pcXVlTGFzdChJdGVyYXRvciBmaXJz dCwgSXRlcmF0b3IgbGFzdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDb21wYXJlIGNvbXBhcmUsIEFzc2lnbiBhc3NpZ24pCisreworKyAgICBmaXJzdCA9IHN0 ZDo6YWRqYWNlbnRfZmluZChmaXJzdCwgbGFzdCwgY29tcGFyZSk7CisrICAgIGlmIChmaXJzdCA9 PSBsYXN0KQorKyAgICAgICAgcmV0dXJuIGxhc3Q7CisrCisrICAgIEl0ZXJhdG9yIHJlc3VsdCA9 IGZpcnN0OworKyAgICB3aGlsZSAoKytmaXJzdCAhPSBsYXN0KSB7CisrICAgICAgICBpZiAoIWNv bXBhcmUoKnJlc3VsdCwgKmZpcnN0KSkKKysgICAgICAgICAgICArK3Jlc3VsdDsKKysgICAgICAg IGlmIChyZXN1bHQgIT0gZmlyc3QpCisrICAgICAgICAgICAgYXNzaWduKCpyZXN1bHQsICpmaXJz dCk7CisrICAgIH0KKysKKysgICAgcmV0dXJuICsrcmVzdWx0OworK30KKysKKyBzdGF0aWMgdm9p ZCBzb3J0Q29udGFpbmVyKFFDYm9yQ29udGFpbmVyUHJpdmF0ZSAqY29udGFpbmVyKQorIHsKKyAg ICAgdXNpbmcgRm9yd2FyZCA9IFFKc29uUHJpdmF0ZTo6S2V5SXRlcmF0b3I7CistICAgIHVzaW5n IFJldmVyc2UgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Rm9yd2FyZD47CisgICAgIHVzaW5nIFZh bHVlID0gRm9yd2FyZDo6dmFsdWVfdHlwZTsKKyAKKyAgICAgYXV0byBjb21wYXJlID0gW2NvbnRh aW5lcl0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKQorQEAgLTQyMCwxNyArNDQwLDMx IEBAIHN0YXRpYyB2b2lkIHNvcnRDb250YWluZXIoUUNib3JDb250YWluZXJQcml2YXRlICpjb250 YWluZXIpCisgICAgICAgICB9CisgICAgIH07CisgCistICAgIHN0ZDo6c29ydChGb3J3YXJkKGNv bnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksIEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5l bmQoKSksCistICAgICAgICAgICAgICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBW YWx1ZSAmYikgeyByZXR1cm4gY29tcGFyZShhLCBiKSA8IDA7IH0pOworKyAgICAvLyBUaGUgZWxl bWVudHMnIGNvbnRhaW5lcnMgYXJlIG93bmVkIGJ5IHRoZSBvdXRlciBjb250YWluZXIsIG5vdCBi eSB0aGUgZWxlbWVudHMgdGhlbXNlbHZlcy4KKysgICAgYXV0byBtb3ZlID0gW10oRm9yd2FyZDo6 cmVmZXJlbmNlIHRhcmdldCwgRm9yd2FyZDo6cmVmZXJlbmNlIHNvdXJjZSkKKysgICAgeworKyAg ICAgICAgUXRDYm9yOjpFbGVtZW50ICZ0YXJnZXRWYWx1ZSA9IHRhcmdldC52YWx1ZSgpOworKwor KyAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBoYXMgYSBjb250YWluZXIsIGRlcmVmIGl0IGJlZm9y ZSBvdmVyd3JpdGluZywgc28gdGhhdCB3ZSBkb24ndCBsZWFrLgorKyAgICAgICAgaWYgKHRhcmdl dFZhbHVlLmZsYWdzICYgUXRDYm9yOjpFbGVtZW50OjpJc0NvbnRhaW5lcikKKysgICAgICAgICAg ICB0YXJnZXRWYWx1ZS5jb250YWluZXItPmRlcmVmKCk7CisrCisrICAgICAgICAvLyBEbyBub3Qg bW92ZSwgc28gdGhhdCB3ZSBjYW4gY2xlYXIgdGhlIHZhbHVlIGFmdGVyd2FyZHMuCisrICAgICAg ICB0YXJnZXQgPSBzb3VyY2U7CisrCisrICAgICAgICAvLyBDbGVhciB0aGUgc291cmNlIHZhbHVl LCBzbyB0aGF0IHdlIGRvbid0IHN0b3JlIHRoZSBzYW1lIGNvbnRhaW5lciB0d2ljZS4KKysgICAg ICAgIHNvdXJjZS52YWx1ZSgpID0gUXRDYm9yOjpFbGVtZW50KCk7CisrICAgIH07CisrCisrICAg IHN0ZDo6c3RhYmxlX3NvcnQoCisrICAgICAgICAgICAgICAgIEZvcndhcmQoY29udGFpbmVyLT5l bGVtZW50cy5iZWdpbigpKSwgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmVuZCgpKSwKKysg ICAgICAgICAgICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIp IHsgcmV0dXJuIGNvbXBhcmUoYSwgYikgPCAwOyB9KTsKKyAKKy0gICAgLy8gV2UgbmVlZCB0byBy ZXRhaW4gdGhlIF9sYXN0XyB2YWx1ZSBmb3IgYW55IGR1cGxpY2F0ZSBrZXlzLiBUaGVyZWZvcmUg dGhlIHJldmVyc2UgZGFuY2UgaGVyZS4KKy0gICAgYXV0byBpdCA9IHN0ZDo6dW5pcXVlKFJldmVy c2UoY29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSksIFJldmVyc2UoY29udGFpbmVyLT5lbGVtZW50 cy5iZWdpbigpKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIFsmY29tcGFyZV0oY29uc3Qg VmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7CistICAgICAgICByZXR1cm4gY29tcGFyZShhLCBi KSA9PSAwOworLSAgICB9KS5iYXNlKCkuZWxlbWVudHNJdGVyYXRvcigpOworKyAgICBGb3J3YXJk IHJlc3VsdCA9IGN1c3RvbUFzc2lnbmluZ1VuaXF1ZUxhc3QoCisrICAgICAgICAgICAgICAgIEZv cndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpKSwgIEZvcndhcmQoY29udGFpbmVyLT5l bGVtZW50cy5lbmQoKSksCisrICAgICAgICAgICAgICAgIFsmY29tcGFyZV0oY29uc3QgVmFsdWUg JmEsIGNvbnN0IFZhbHVlICZiKSB7IHJldHVybiBjb21wYXJlKGEsIGIpID09IDA7IH0sIG1vdmUp OworIAorLSAgICAvLyBUaGUgZXJhc2UgZnJvbSBiZWdpbm5pbmcgaXMgZXhwZW5zaXZlIGJ1dCBo b3BlZnVsbHkgcmFyZS4KKy0gICAgY29udGFpbmVyLT5lbGVtZW50cy5lcmFzZShjb250YWluZXIt PmVsZW1lbnRzLmJlZ2luKCksIGl0KTsKKysgICAgY29udGFpbmVyLT5lbGVtZW50cy5lcmFzZShy ZXN1bHQuZWxlbWVudHNJdGVyYXRvcigpLCBjb250YWluZXItPmVsZW1lbnRzLmVuZCgpKTsKKyB9 CisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcXht bHN0cmVhbS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFt LmNwcAoraW5kZXggYjJmODQ2NTQ0ZC4uN2NkNDU3YmEzYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwCisrKysgYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFtLmNwcAorQEAgLTk4MCw3ICs5ODAsNyBA QCBpbmxpbmUgdWludCBRWG1sU3RyZWFtUmVhZGVyUHJpdmF0ZTo6cGVla0NoYXIoKQorIGJvb2wg UVhtbFN0cmVhbVJlYWRlclByaXZhdGU6OnNjYW5VbnRpbChjb25zdCBjaGFyICpzdHIsIHNob3J0 IHRva2VuVG9JbmplY3QpCisgeworICAgICBpbnQgcG9zID0gdGV4dEJ1ZmZlci5zaXplKCk7Cist ICAgIGludCBvbGRMaW5lTnVtYmVyID0gbGluZU51bWJlcjsKKysgICAgY29uc3QgYXV0byBvbGRM aW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAKKyAgICAgdWludCBjOworICAgICB3aGlsZSAoKGMg PSBnZXRDaGFyKCkpICE9IFN0cmVhbUVPRikgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29y ZWxpYi90ZXh0L3FzdHJpbmcuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZy5j cHAKK2luZGV4IDNlODhhYjQ4NTkuLjhkZWVhZTQ3YmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQv cXN0cmluZy5jcHAKK0BAIC0xMjMxMiw3ICsxMjMxMiw3IEBAIHN0YXRpYyBxc2l6ZXR5cGUgcUxh c3RJbmRleE9mKEhheXN0YWNrIGhheXN0YWNrMCwgcXNpemV0eXBlIGZyb20sCisgICAgIGNvbnN0 IGF1dG8gbmVlZGxlID0gbmVlZGxlMC5kYXRhKCk7CisgICAgIGNvbnN0IGF1dG8gKmVuZCA9IGhh eXN0YWNrOworICAgICBoYXlzdGFjayArPSBmcm9tOworLSAgICBjb25zdCBzdGQ6OnNpemVfdCBz bF9taW51c18xID0gc2wgLSAxOworKyAgICBjb25zdCBzdGQ6OnNpemVfdCBzbF9taW51c18xID0g c2wgPyBzbCAtIDEgOiAwOworICAgICBjb25zdCBhdXRvICpuID0gbmVlZGxlICsgc2xfbWludXNf MTsKKyAgICAgY29uc3QgYXV0byAqaCA9IGhheXN0YWNrICsgc2xfbWludXNfMTsKKyAgICAgc3Rk OjpzaXplX3QgaGFzaE5lZWRsZSA9IDAsIGhhc2hIYXlzdGFjayA9IDA7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZ2l0ZXJhdG9yX3AuaCBiL3F0YmFzZS9zcmMv Y29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmgKK2luZGV4IDIxOTU4OWI2ZTQuLjFkMGM2 NmNjNzggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0 b3JfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0b3JfcC5o CitAQCAtNjEsNiArNjEsOCBAQCBjbGFzcyBRU3RyaW5nSXRlcmF0b3IKKyB7CisgICAgIFFTdHJp bmc6OmNvbnN0X2l0ZXJhdG9yIGksIHBvcywgZTsKKyAgICAgUV9TVEFUSUNfQVNTRVJUKChzdGQ6 OmlzX3NhbWU8UVN0cmluZzo6Y29uc3RfaXRlcmF0b3IsIGNvbnN0IFFDaGFyICo+Ojp2YWx1ZSkp OworKyAgICBzdGF0aWMgYm9vbCBsZXNzKGNvbnN0IFFDaGFyICpsaHMsIGNvbnN0IFFDaGFyICpy aHMpIG5vZXhjZXB0CisrICAgIHsgcmV0dXJuIHN0ZDo6bGVzczxRU3RyaW5nOjpjb25zdF9pdGVy YXRvcj57fShsaHMsIHJocyk7IH0KKyBwdWJsaWM6CisgICAgIGV4cGxpY2l0IFFTdHJpbmdJdGVy YXRvcihRU3RyaW5nVmlldyBzdHJpbmcsIHFzaXpldHlwZSBpZHggPSAwKQorICAgICAgICAgOiBp KHN0cmluZy5iZWdpbigpKSwKK0BAIC05NSw3ICs5Nyw4IEBAIHB1YmxpYzoKKyAKKyAgICAgaW5s aW5lIHZvaWQgc2V0UG9zaXRpb24oUVN0cmluZzo6Y29uc3RfaXRlcmF0b3IgcG9zaXRpb24pCisg ICAgIHsKKy0gICAgICAgIFFfQVNTRVJUX1goaSA8PSBwb3NpdGlvbiAmJiBwb3NpdGlvbiA8PSBl LCBRX0ZVTkNfSU5GTywgInBvc2l0aW9uIG91dCBvZiBib3VuZHMiKTsKKysgICAgICAgIFFfQVNT RVJUX1goIWxlc3MocG9zaXRpb24sIGkpICYmICFsZXNzKGUsIHBvc2l0aW9uKSwKKysgICAgICAg ICAgICAgICAgICAgUV9GVU5DX0lORk8sICJwb3NpdGlvbiBvdXQgb2YgYm91bmRzIik7CisgICAg ICAgICBwb3MgPSBwb3NpdGlvbjsKKyAgICAgfQorIAorQEAgLTEwMyw3ICsxMDYsNyBAQCBwdWJs aWM6CisgCisgICAgIGlubGluZSBib29sIGhhc05leHQoKSBjb25zdAorICAgICB7CistICAgICAg ICByZXR1cm4gcG9zIDwgZTsKKysgICAgICAgIHJldHVybiBsZXNzKHBvcywgZSk7CisgICAgIH0K KyAKKyAgICAgaW5saW5lIHZvaWQgYWR2YW5jZSgpCitAQCAtMTIwLDE2ICsxMjMsMjAgQEAgcHVi bGljOgorICAgICB7CisgICAgICAgICBRX0FTU0VSVF9YKGhhc05leHQoKSwgUV9GVU5DX0lORk8s ICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0ZW0iKTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElL RUxZKChwb3MrKyktPmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZ KChwb3MrKyktPmlzSGlnaFN1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhh c05leHQoKSAmJiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpOworICAgICAgICAgICAgICsrcG9zOwor KyAgICAgICAgfQorICAgICB9CisgCisgICAgIGlubGluZSB1aW50IHBlZWtOZXh0VW5jaGVja2Vk KCkgY29uc3QKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNOZXh0KCksIFFfRlVOQ19J TkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBpdGVtIik7CisgCistICAgICAgICBpZiAoUV9V TkxJS0VMWShwb3MtPmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZ KHBvcy0+aXNIaWdoU3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQobGVzcyhw b3MgKyAxLCBlKSAmJiBwb3NbMV0uaXNMb3dTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0 dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQocG9zWzBdLCBwb3NbMV0pOworKyAgICAgICAgfQor IAorICAgICAgICAgcmV0dXJuIHBvcy0+dW5pY29kZSgpOworICAgICB9CitAQCAtMTU1LDggKzE2 MiwxMCBAQCBwdWJsaWM6CisgICAgICAgICBRX0FTU0VSVF9YKGhhc05leHQoKSwgUV9GVU5DX0lO Rk8sICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0ZW0iKTsKKyAKKyAgICAgICAgIGNvbnN0IFFD aGFyIGN1ciA9ICpwb3MrKzsKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKGN1ci5pc0hpZ2hTdXJy b2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWShjdXIuaXNIaWdoU3Vycm9nYXRlKCkp KSB7CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzTmV4dCgpICYmIHBvcy0+aXNMb3dTdXJyb2dh dGUoKSk7CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQoY3VyLCAq cG9zKyspOworKyAgICAgICAgfQorICAgICAgICAgcmV0dXJuIGN1ci51bmljb2RlKCk7CisgICAg IH0KKyAKK0BAIC0xNjYsNyArMTc1LDcgQEAgcHVibGljOgorIAorICAgICAgICAgY29uc3QgUUNo YXIgdWMgPSAqcG9zKys7CisgICAgICAgICBpZiAoUV9VTkxJS0VMWSh1Yy5pc1N1cnJvZ2F0ZSgp KSkgeworLSAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0hpZ2hTdXJyb2dhdGUoKSAmJiBw b3MgPCBlICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICAgICAgaWYgKFFfTElL RUxZKHVjLmlzSGlnaFN1cnJvZ2F0ZSgpICYmIGhhc05leHQoKSAmJiBwb3MtPmlzTG93U3Vycm9n YXRlKCkpKQorICAgICAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNCh1 YywgKnBvcysrKTsKKyAgICAgICAgICAgICByZXR1cm4gaW52YWxpZEFzOworICAgICAgICAgfQor QEAgLTE3OCw3ICsxODcsNyBAQCBwdWJsaWM6CisgCisgICAgIGlubGluZSBib29sIGhhc1ByZXZp b3VzKCkgY29uc3QKKyAgICAgeworLSAgICAgICAgcmV0dXJuIHBvcyA+IGk7CisrICAgICAgICBy ZXR1cm4gbGVzcyhpLCBwb3MpOworICAgICB9CisgCisgICAgIGlubGluZSB2b2lkIHJlY2VkZSgp CitAQCAtMTk2LDE2ICsyMDUsMjAgQEAgcHVibGljOgorICAgICB7CisgICAgICAgICBRX0FTU0VS VF9YKGhhc1ByZXZpb3VzKCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgcHJldmlv dXMgaXRlbSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoKC0tcG9zKS0+aXNMb3dTdXJy b2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWSgoLS1wb3MpLT5pc0xvd1N1cnJvZ2F0 ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc1ByZXZpb3VzKCkgJiYgcG9zWy0xXS5p c0hpZ2hTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgLS1wb3M7CisrICAgICAgICB9CisgICAg IH0KKyAKKyAgICAgaW5saW5lIHVpbnQgcGVla1ByZXZpb3VzVW5jaGVja2VkKCkgY29uc3QKKyAg ICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNQcmV2aW91cygpLCBRX0ZVTkNfSU5GTywgIml0 ZXJhdG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0iKTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElL RUxZKHBvc1stMV0uaXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWShw b3NbLTFdLmlzTG93U3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQobGVzcyhp ICsgMSwgcG9zKSAmJiBwb3NbLTJdLmlzSGlnaFN1cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICBy ZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNChwb3NbLTJdLCBwb3NbLTFdKTsKKysgICAgICAg IH0KKyAgICAgICAgIHJldHVybiBwb3NbLTFdLnVuaWNvZGUoKTsKKyAgICAgfQorIAorQEAgLTIz MCw4ICsyNDMsMTAgQEAgcHVibGljOgorICAgICAgICAgUV9BU1NFUlRfWChoYXNQcmV2aW91cygp LCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0iKTsKKyAKKyAg ICAgICAgIGNvbnN0IFFDaGFyIGN1ciA9ICotLXBvczsKKy0gICAgICAgIGlmIChRX1VOTElLRUxZ KGN1ci5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKGN1ci5pc0xv d1N1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc1ByZXZpb3VzKCkgJiYg cG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpz dXJyb2dhdGVUb1VjczQoKi0tcG9zLCBjdXIpOworKyAgICAgICAgfQorICAgICAgICAgcmV0dXJu IGN1ci51bmljb2RlKCk7CisgICAgIH0KKyAKK0BAIC0yNDEsNyArMjU2LDcgQEAgcHVibGljOgor IAorICAgICAgICAgY29uc3QgUUNoYXIgdWMgPSAqLS1wb3M7CisgICAgICAgICBpZiAoUV9VTkxJ S0VMWSh1Yy5pc1N1cnJvZ2F0ZSgpKSkgeworLSAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5p c0xvd1N1cnJvZ2F0ZSgpICYmIHBvcyA+IGkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSkp CisrICAgICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzTG93U3Vycm9nYXRlKCkgJiYgaGFzUHJl dmlvdXMoKSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKyAgICAgICAgICAgICAgICAg cmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQoKi0tcG9zLCB1Yyk7CisgICAgICAgICAgICAg cmV0dXJuIGludmFsaWRBczsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3FmdXRleF9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRl eF9wLmgKK2luZGV4IGYyODdiNzUyZDcuLmUyOTQ1Mzc3ODcgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90 aHJlYWQvcWZ1dGV4X3AuaAorQEAgLTUyLDYgKzUyLDcgQEAKKyAvLworIAorICNpbmNsdWRlIDxx Z2xvYmFsLmg+CisrI2luY2x1ZGUgPFF0Q29yZS9xdHNhbl9pbXBsLmg+CisgCisgUVRfQkVHSU5f TkFNRVNQQUNFCisgCitAQCAtMTA2LDE2ICsxMDcsMTMgQEAgbmFtZXNwYWNlIFF0TGludXhGdXRl eCB7CisgICAgIGlubGluZSBpbnQgX3FfZnV0ZXgoaW50ICphZGRyLCBpbnQgb3AsIGludCB2YWws IHF1aW50cHRyIHZhbDIgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqYWRkcjIg PSBudWxscHRyLCBpbnQgdmFsMyA9IDApIG5vZXhjZXB0CisgICAgIHsKKy0gICAgICAgIC8vIEEg ZnV0ZXggY2FsbCBlbnN1cmVzIHRvdGFsIG9yZGVyaW5nIG9uIHRoZSBmdXRleCB3b3JkcworLSAg ICAgICAgLy8gKGluIGVpdGhlciBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIGNhbGwpLiBJbnN0 cnVjdCBUU0FOIGFjY29yZGluZ2x5LAorLSAgICAgICAgLy8gYXMgVFNBTiBkb2VzIG5vdCB1bmRl cnN0YW5kIHRoZSBmdXRleCgyKSBzeXNjYWxsLgorLSAgICAgICAgX3FfdHNhbl9yZWxlYXNlKGFk ZHIsIGFkZHIyKTsKKysgICAgICAgIFF0VHNhbjo6ZnV0ZXhSZWxlYXNlKGFkZHIsIGFkZHIyKTsK KyAKKyAgICAgICAgIC8vIHdlIHVzZSBfX05SX2Z1dGV4IGJlY2F1c2Ugc29tZSBsaWJjcyAobGlr ZSBBbmRyb2lkJ3MgYmlvbmljKSBkb24ndAorICAgICAgICAgLy8gcHJvdmlkZSBTWVNfZnV0ZXgg ZXRjLgorICAgICAgICAgaW50IHJlc3VsdCA9IHN5c2NhbGwoX19OUl9mdXRleCwgYWRkciwgb3Ag fCBGVVRFWF9QUklWQVRFX0ZMQUcsIHZhbCwgdmFsMiwgYWRkcjIsIHZhbDMpOworIAorLSAgICAg ICAgX3FfdHNhbl9hY3F1aXJlKGFkZHIsIGFkZHIyKTsKKysgICAgICAgIFF0VHNhbjo6ZnV0ZXhB Y3F1aXJlKGFkZHIsIGFkZHIyKTsKKyAKKyAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgIH0K K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5jcHAgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5jcHAKK2luZGV4IDMxMGQxY2IxNGYuLjcwOTcx MjJkOGUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5jcHAK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmNwcAorQEAgLTE1Miw2ICsx NTIsNyBAQCBwdWJsaWM6CisgCisgLyohCisgICAgIFxlbnVtIFFNdXRleDo6UmVjdXJzaW9uTW9k ZQorKyAgICBcb2Jzb2xldGUgVXNlIFFSZWN1cnNpdmVNdXRleCB0byBjcmVhdGUgYSByZWN1cnNp dmUgbXV0ZXguCisgCisgICAgIFx2YWx1ZSBSZWN1cnNpdmUgIEluIHRoaXMgbW9kZSwgYSB0aHJl YWQgY2FuIGxvY2sgdGhlIHNhbWUgbXV0ZXgKKyAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlw bGUgdGltZXMgYW5kIHRoZSBtdXRleCB3b24ndCBiZSB1bmxvY2tlZAorQEAgLTE3Myw2ICsxNzQs NyBAQCBwdWJsaWM6CisgCisgLyohCisgICAgIENvbnN0cnVjdHMgYSBuZXcgbXV0ZXguIFRoZSBt dXRleCBpcyBjcmVhdGVkIGluIGFuIHVubG9ja2VkIHN0YXRlLgorKyAgICBcb2Jzb2xldGUgVXNl IFFSZWN1cnNpdmVNdXRleCB0byBjcmVhdGUgYSByZWN1cnNpdmUgbXV0ZXguCisgCisgICAgIElm IFxhIG1vZGUgaXMgUU11dGV4OjpSZWN1cnNpdmUsIGEgdGhyZWFkIGNhbiBsb2NrIHRoZSBzYW1l IG11dGV4CisgICAgIG11bHRpcGxlIHRpbWVzIGFuZCB0aGUgbXV0ZXggd29uJ3QgYmUgdW5sb2Nr ZWQgdW50aWwgYQorQEAgLTE5Nyw3ICsxOTksNyBAQCBRTXV0ZXg6OlFNdXRleChSZWN1cnNpb25N b2RlIG1vZGUpCisgUU11dGV4Ojp+UU11dGV4KCkKKyB7CisgICAgIFFNdXRleERhdGEgKmQgPSBk X3B0ci5sb2FkUmVsYXhlZCgpOworLSAgICBpZiAoaXNSZWN1cnNpdmUoKSkgeworKyAgICBpZiAo UUJhc2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCkpIHsKKyAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2Fz dDxRUmVjdXJzaXZlTXV0ZXhQcml2YXRlICo+KGQpOworICAgICB9IGVsc2UgaWYgKGQpIHsKKyAj aWZuZGVmIFFUX0xJTlVYX0ZVVEVYCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xbXV0ZXguaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmgKK2luZGV4 IDczYzllMDA2NjMuLjFiYWU1NzNhMDMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIv dGhyZWFkL3FtdXRleC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5o CitAQCAtNDIsNiArNDIsNyBAQAorIAorICNpbmNsdWRlIDxRdENvcmUvcWdsb2JhbC5oPgorICNp bmNsdWRlIDxRdENvcmUvcWF0b21pYy5oPgorKyNpbmNsdWRlIDxRdENvcmUvcXRzYW5faW1wbC5o PgorICNpbmNsdWRlIDxuZXc+CisgCisgI2lmIF9faGFzX2luY2x1ZGUoPGNocm9ubz4pCitAQCAt NzcsMTkgKzc4LDM3IEBAIHB1YmxpYzoKKyAKKyAgICAgLy8gQmFzaWNMb2NrYWJsZSBjb25jZXB0 CisgICAgIGlubGluZSB2b2lkIGxvY2soKSBRVF9NVVRFWF9MT0NLX05PRVhDRVBUIHsKKysgICAg ICAgIFF0VHNhbjo6bXV0ZXhQcmVMb2NrKHRoaXMsIDB1KTsKKysKKyAgICAgICAgIGlmICghZmFz dFRyeUxvY2soKSkKKyAgICAgICAgICAgICBsb2NrSW50ZXJuYWwoKTsKKysKKysgICAgICAgIFF0 VHNhbjo6bXV0ZXhQb3N0TG9jayh0aGlzLCAwdSwgMCk7CisgICAgIH0KKyAKKyAgICAgLy8gQmFz aWNMb2NrYWJsZSBjb25jZXB0CisgICAgIGlubGluZSB2b2lkIHVubG9jaygpIG5vZXhjZXB0IHsK KyAgICAgICAgIFFfQVNTRVJUKGRfcHRyLmxvYWRSZWxheGVkKCkpOyAvL211dGV4IG11c3QgYmUg bG9ja2VkCisrCisrICAgICAgICBRdFRzYW46Om11dGV4UHJlVW5sb2NrKHRoaXMsIDB1KTsKKysK KyAgICAgICAgIGlmICghZmFzdFRyeVVubG9jaygpKQorICAgICAgICAgICAgIHVubG9ja0ludGVy bmFsKCk7CisrCisrICAgICAgICBRdFRzYW46Om11dGV4UG9zdFVubG9jayh0aGlzLCAwdSk7Cisg ICAgIH0KKyAKKyAgICAgYm9vbCB0cnlMb2NrKCkgbm9leGNlcHQgeworLSAgICAgICAgcmV0dXJu IGZhc3RUcnlMb2NrKCk7CisrICAgICAgICB1bnNpZ25lZCB0c2FuRmxhZ3MgPSBRdFRzYW46OlRy eUxvY2s7CisrICAgICAgICBRdFRzYW46Om11dGV4UHJlTG9jayh0aGlzLCB0c2FuRmxhZ3MpOwor KworKyAgICAgICAgY29uc3QgYm9vbCBzdWNjZXNzID0gZmFzdFRyeUxvY2soKTsKKysKKysgICAg ICAgIGlmICghc3VjY2VzcykKKysgICAgICAgICAgICB0c2FuRmxhZ3MgfD0gUXRUc2FuOjpUcnlM b2NrRmFpbGVkOworKyAgICAgICAgUXRUc2FuOjptdXRleFBvc3RMb2NrKHRoaXMsIHRzYW5GbGFn cywgMCk7CisrCisrICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICAgfQorIAorICAgICAvLyBM b2NrYWJsZSBjb25jZXB0CitAQCAtMTM0LDggKzE1MywxNiBAQCBwdWJsaWM6CisgI2Vsc2UKKyAg ICAgUU11dGV4KCkgeyBkX3B0ci5zdG9yZVJlbGF4ZWQobnVsbHB0cik7IH0KKyAjZW5kaWYKKysj aWYgUVRfREVQUkVDQVRFRF9TSU5DRSg1LDE1KQorICAgICBlbnVtIFJlY3Vyc2lvbk1vZGUgeyBO b25SZWN1cnNpdmUsIFJlY3Vyc2l2ZSB9OworKyAgICBRVF9ERVBSRUNBVEVEX1ZFUlNJT05fWCg1 LCAxNSwgIlVzZSBRUmVjdXJzaXZlTXV0ZXggaW5zdGVhZCBvZiBhIHJlY3Vyc2l2ZSBRTXV0ZXgi KQorICAgICBleHBsaWNpdCBRTXV0ZXgoUmVjdXJzaW9uTW9kZSBtb2RlKTsKKysKKysgICAgUVRf REVQUkVDQVRFRF9WRVJTSU9OX1goNSwgMTUsICJVc2UgUVJlY3Vyc2l2ZU11dGV4IGluc3RlYWQg b2YgYSByZWN1cnNpdmUgUU11dGV4IikKKysgICAgYm9vbCBpc1JlY3Vyc2l2ZSgpIGNvbnN0IG5v ZXhjZXB0CisrICAgIHsgcmV0dXJuIFFCYXNpY011dGV4Ojppc1JlY3Vyc2l2ZSgpOyB9CisrI2Vu ZGlmCisrCisgICAgIH5RTXV0ZXgoKTsKKyAKKyAgICAgLy8gQmFzaWNMb2NrYWJsZSBjb25jZXB0 CitAQCAtMTY2LDkgKzE5Myw2IEBAIHB1YmxpYzoKKyAgICAgfQorICNlbmRpZgorIAorLSAgICBi b29sIGlzUmVjdXJzaXZlKCkgY29uc3Qgbm9leGNlcHQKKy0gICAgeyByZXR1cm4gUUJhc2ljTXV0 ZXg6OmlzUmVjdXJzaXZlKCk7IH0KKy0KKyBwcml2YXRlOgorICAgICBRX0RJU0FCTEVfQ09QWShR TXV0ZXgpCisgICAgIGZyaWVuZCBjbGFzcyBRTXV0ZXhMb2NrZXI7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5jcHAgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcAoraW5kZXggOGMyODUwN2Q1YS4uOWRkODUw MzExNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJlYWR3cml0ZWxv Y2suY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNw cAorQEAgLTE1NSw3ICsxNTUsNyBAQCBRUmVhZFdyaXRlTG9jazo6UVJlYWRXcml0ZUxvY2soUmVj dXJzaW9uTW9kZSByZWN1cnNpb25Nb2RlKQorICovCisgUVJlYWRXcml0ZUxvY2s6On5RUmVhZFdy aXRlTG9jaygpCisgeworLSAgICBhdXRvIGQgPSBkX3B0ci5sb2FkUmVsYXhlZCgpOworKyAgICBh dXRvIGQgPSBkX3B0ci5sb2FkQWNxdWlyZSgpOworICAgICBpZiAoaXNVbmNvbnRlbmRlZExvY2tl ZChkKSkgeworICAgICAgICAgcVdhcm5pbmcoIlFSZWFkV3JpdGVMb2NrOiBkZXN0cm95aW5nIGxv Y2tlZCBRUmVhZFdyaXRlTG9jayIpOworICAgICAgICAgcmV0dXJuOworQEAgLTQ0NSw3ICs0NDUs NyBAQCB2b2lkIFFSZWFkV3JpdGVMb2NrOjp1bmxvY2soKQorIC8qISBcaW50ZXJuYWwgIEhlbHBl ciBmb3IgUVdhaXRDb25kaXRpb246OndhaXQgKi8KKyBRUmVhZFdyaXRlTG9jazo6U3RhdGVGb3JX YWl0Q29uZGl0aW9uIFFSZWFkV3JpdGVMb2NrOjpzdGF0ZUZvcldhaXRDb25kaXRpb24oKSBjb25z dAorIHsKKy0gICAgUVJlYWRXcml0ZUxvY2tQcml2YXRlICpkID0gZF9wdHIubG9hZFJlbGF4ZWQo KTsKKysgICAgUVJlYWRXcml0ZUxvY2tQcml2YXRlICpkID0gZF9wdHIubG9hZEFjcXVpcmUoKTsK KyAgICAgc3dpdGNoIChxdWludHB0cihkKSAmIFN0YXRlTWFzaykgeworICAgICBjYXNlIFN0YXRl TG9ja2VkRm9yUmVhZDogcmV0dXJuIExvY2tlZEZvclJlYWQ7CisgICAgIGNhc2UgU3RhdGVMb2Nr ZWRGb3JXcml0ZTogcmV0dXJuIExvY2tlZEZvcldyaXRlOworQEAgLTQ1Myw2ICs0NTMsNyBAQCBR UmVhZFdyaXRlTG9jazo6U3RhdGVGb3JXYWl0Q29uZGl0aW9uIFFSZWFkV3JpdGVMb2NrOjpzdGF0 ZUZvcldhaXRDb25kaXRpb24oKSBjbworIAorICAgICBpZiAoIWQpCisgICAgICAgICByZXR1cm4g VW5sb2NrZWQ7CisrICAgIGNvbnN0IGF1dG8gbG9jayA9IHF0X3Njb3BlZF9sb2NrKGQtPm11dGV4 KTsKKyAgICAgaWYgKGQtPndyaXRlckNvdW50ID4gMSkKKyAgICAgICAgIHJldHVybiBSZWN1cnNp dmVseUxvY2tlZDsKKyAgICAgZWxzZSBpZiAoZC0+d3JpdGVyQ291bnQgPT0gMSkKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FzZW1hcGhvcmUuY3BwIGIvcXRiYXNlL3Ny Yy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNwcAoraW5kZXggMWQwMWZjMWIyOC4uM2VjZGVl Mzc0NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5j cHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5jcHAKK0BAIC0z NTQsNyArMzU0LDEyIEBAIHZvaWQgUVNlbWFwaG9yZTo6cmVsZWFzZShpbnQgbikKKyAgICAgICAg IHF1aW50cHRyIG5uID0gdW5zaWduZWQobik7CisgICAgICAgICBpZiAoZnV0ZXhIYXNXYWl0ZXJD b3VudCkKKyAgICAgICAgICAgICBubiB8PSBxdWludDY0KG5uKSA8PCAzMjsgICAgLy8gdG9rZW4g Y291bnQgcmVwbGljYXRlZCBpbiBoaWdoIHdvcmQKKy0gICAgICAgIHF1aW50cHRyIHByZXZWYWx1 ZSA9IHUuZmV0Y2hBbmRBZGRSZWxlYXNlKG5uKTsKKysgICAgICAgIHF1aW50cHRyIHByZXZWYWx1 ZSA9IHUubG9hZFJlbGF4ZWQoKTsKKysgICAgICAgIHF1aW50cHRyIG5ld1ZhbHVlOworKyAgICAg ICAgZG8geyAvLyBsb29wIGp1c3QgdG8gZW5zdXJlIHRoZSBvcGVyYXRpb25zIGFyZSBkb25lIGF0 b21pY2FsbHkKKysgICAgICAgICAgICBuZXdWYWx1ZSA9IHByZXZWYWx1ZSArIG5uOworKyAgICAg ICAgICAgIG5ld1ZhbHVlICY9IChmdXRleE5lZWRzV2FrZUFsbEJpdCAtIDEpOworKyAgICAgICAg fSB3aGlsZSAoIXUudGVzdEFuZFNldFJlbGVhc2UocHJldlZhbHVlLCBuZXdWYWx1ZSwgcHJldlZh bHVlKSk7CisgICAgICAgICBpZiAoZnV0ZXhOZWVkc1dha2UocHJldlZhbHVlKSkgeworICNpZmRl ZiBGVVRFWF9PUAorICAgICAgICAgICAgIGlmIChmdXRleEhhc1dhaXRlckNvdW50KSB7CitAQCAt Mzc2LDcgKzM4MSw2IEBAIHZvaWQgUVNlbWFwaG9yZTo6cmVsZWFzZShpbnQgbikKKyAgICAgICAg ICAgICAgICAgcXVpbnQzMiBvcGFyZyA9IDA7CisgICAgICAgICAgICAgICAgIHF1aW50MzIgY21w ID0gRlVURVhfT1BfQ01QX05FOworICAgICAgICAgICAgICAgICBxdWludDMyIGNtcGFyZyA9IDA7 CistICAgICAgICAgICAgICAgIHUuZmV0Y2hBbmRBbmRSZWxlYXNlKGZ1dGV4TmVlZHNXYWtlQWxs Qml0IC0gMSk7CisgICAgICAgICAgICAgICAgIGZ1dGV4V2FrZU9wKCpmdXRleExvdzMyKCZ1KSwg biwgSU5UX01BWCwgKmZ1dGV4SGlnaDMyKCZ1KSwgRlVURVhfT1Aob3AsIG9wYXJnLCBjbXAsIGNt cGFyZykpOworICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgfQorQEAgLTM4 OCw3ICszOTIsNiBAQCB2b2lkIFFTZW1hcGhvcmU6OnJlbGVhc2UoaW50IG4pCisgICAgICAgICAg ICAgLy8gICAgaXRzIGFjcXVpc2l0aW9uIGFueXdheSwgc28gaXQgaGFzIHRvIHdhaXQ7CisgICAg ICAgICAgICAgLy8gMikgaXQgZGlkIG5vdCBzZWUgdGhlIG5ldyBjb3VudGVyIHZhbHVlLCBpbiB3 aGljaCBjYXNlIGl0cworICAgICAgICAgICAgIC8vICAgIGZ1dGV4V2FpdCB3aWxsIGZhaWwuCist ICAgICAgICAgICAgdS5mZXRjaEFuZEFuZFJlbGVhc2UoZnV0ZXhOZWVkc1dha2VBbGxCaXQgLSAx KTsKKyAgICAgICAgICAgICBpZiAoZnV0ZXhIYXNXYWl0ZXJDb3VudCkgeworICAgICAgICAgICAg ICAgICBmdXRleFdha2VBbGwoKmZ1dGV4TG93MzIoJnUpKTsKKyAgICAgICAgICAgICAgICAgZnV0 ZXhXYWtlQWxsKCpmdXRleEhpZ2gzMigmdSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29y ZWxpYi90aHJlYWQvcXRocmVhZF9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJl YWRfcC5oCitpbmRleCBiMmQxNjI4ZTZlLi5mMzJmNmYwNDYwIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGli L3RocmVhZC9xdGhyZWFkX3AuaAorQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CisgICAgIGlu dCByZXR1cm5Db2RlOworIAorICAgICB1aW50IHN0YWNrU2l6ZTsKKy0gICAgUVRocmVhZDo6UHJp b3JpdHkgcHJpb3JpdHk7CisrICAgIHN0ZDo6dW5kZXJseWluZ190eXBlPFFUaHJlYWQ6OlByaW9y aXR5Pjo6dHlwZSBwcmlvcml0eTsKKyAKKyAgICAgc3RhdGljIFFUaHJlYWQgKnRocmVhZEZvcklk KGludCBpZCk7CisgCitAQCAtMjEzLDYgKzIxMywxMyBAQCBwdWJsaWM6CisgICAgICAgICAgICAg UUNvcmVBcHBsaWNhdGlvbjo6aW5zdGFuY2UoKS0+cG9zdEV2ZW50KHFfcHRyLCBuZXcgUUV2ZW50 KFFFdmVudDo6UXVpdCkpOworICAgICAgICAgfQorICAgICB9CisrCisrI2lmbmRlZiBRX09TX0lO VEVHUklUWQorK3ByaXZhdGU6CisrICAgIC8vIFVzZWQgaW4gUVRocmVhZChQcml2YXRlKTo6c3Rh cnQgdG8gYXZvaWQgcmFjeSBhY2Nlc3MgdG8gUU9iamVjdDo6b2JqZWN0TmFtZSwKKysgICAgLy8g dW5zZXQgYWZ0ZXJ3YXJkcy4gT24gSU5URUdSSVRZIHdlIHNldCB0aGUgdGhyZWFkIG5hbWUgYmVm b3JlIHN0YXJ0aW5nIGl0LgorKyAgICBRU3RyaW5nIG9iamVjdE5hbWU7CisrI2VuZGlmCisgfTsK KyAKKyAjZWxzZSAvLyBRVF9DT05GSUcodGhyZWFkKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Y29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJl YWQvcXRocmVhZF91bml4LmNwcAoraW5kZXggNTZhOGUwYTAzOC4uNjEwMTE3YTY0MCAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNwcAorKysrIGIv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3VuaXguY3BwCitAQCAtMTY5LDggKzE2 OSw3IEBAIHN0YXRpYyB2b2lkIHNldF90aHJlYWRfZGF0YShRVGhyZWFkRGF0YSAqZGF0YSkKKyAK KyBzdGF0aWMgdm9pZCBjbGVhcl90aHJlYWRfZGF0YSgpCisgeworLSAgICBjdXJyZW50VGhyZWFk RGF0YSA9IG51bGxwdHI7CistICAgIHB0aHJlYWRfc2V0c3BlY2lmaWMoY3VycmVudF90aHJlYWRf ZGF0YV9rZXksIG51bGxwdHIpOworKyAgICBzZXRfdGhyZWFkX2RhdGEobnVsbHB0cik7CisgfQor IAorIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorQEAgLTI5Niw3ICsyOTUsNyBAQCB2b2lkICpRVGhy ZWFkUHJpdmF0ZTo6c3RhcnQodm9pZCAqYXJnKQorICAgICAgICAgICAgIFFNdXRleExvY2tlciBs b2NrZXIoJnRoci0+ZF9mdW5jKCktPm11dGV4KTsKKyAKKyAgICAgICAgICAgICAvLyBkbyB3ZSBu ZWVkIHRvIHJlc2V0IHRoZSB0aHJlYWQgcHJpb3JpdHk/CistICAgICAgICAgICAgaWYgKGludCh0 aHItPmRfZnVuYygpLT5wcmlvcml0eSkgJiBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZykgeworKyAg ICAgICAgICAgIGlmICh0aHItPmRfZnVuYygpLT5wcmlvcml0eSAmIFRocmVhZFByaW9yaXR5UmVz ZXRGbGFnKSB7CisgICAgICAgICAgICAgICAgIHRoci0+ZF9mdW5jKCktPnNldFByaW9yaXR5KFFU aHJlYWQ6OlByaW9yaXR5KHRoci0+ZF9mdW5jKCktPnByaW9yaXR5ICYgflRocmVhZFByaW9yaXR5 UmVzZXRGbGFnKSk7CisgICAgICAgICAgICAgfQorIAorQEAgLTMxNiwxMCArMzE1LDEwIEBAIHZv aWQgKlFUaHJlYWRQcml2YXRlOjpzdGFydCh2b2lkICphcmcpCisgICAgICAgICAgICAgLy8gU2V0 cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuIFdlIGNhbiBvbmx5IGRvIHRoaXMKKyAg ICAgICAgICAgICAvLyB3aGVuIHRoZSB0aHJlYWQgaXMgc3RhcnRpbmcsIGFzIHdlIGRvbid0IGhh dmUgYSBjcm9zcworICAgICAgICAgICAgIC8vIHBsYXRmb3JtIHdheSBvZiBzZXR0aW5nIHRoZSBu YW1lIG9mIGFuIGFyYml0cmFyeSB0aHJlYWQuCistICAgICAgICAgICAgaWYgKFFfTElLRUxZKHRo ci0+b2JqZWN0TmFtZSgpLmlzRW1wdHkoKSkpCisrICAgICAgICAgICAgaWYgKFFfTElLRUxZKHRo ci0+ZF9mdW5jKCktPm9iamVjdE5hbWUuaXNFbXB0eSgpKSkKKyAgICAgICAgICAgICAgICAgc2V0 Q3VycmVudFRocmVhZE5hbWUodGhyLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpKTsKKyAgICAg ICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUaHJlYWROYW1lKHRoci0+ b2JqZWN0TmFtZSgpLnRvTG9jYWw4Qml0KCkpOworKyAgICAgICAgICAgICAgICBzZXRDdXJyZW50 VGhyZWFkTmFtZShzdGQ6OmV4Y2hhbmdlKHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUsIHt9KS50 b0xvY2FsOEJpdCgpKTsKKyAgICAgICAgIH0KKyAjZW5kaWYKKyAKK0BAIC02NzEsNyArNjcwLDcg QEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAgICAgICAgICAgICAg ICAgLy8gY291bGQgbm90IHNldCBzY2hlZHVsaW5nIGhpbnRzLCBmYWxsYmFjayB0byBpbmhlcml0 aW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgLy8gd2UnbGwgdHJ5IGFnYWluIGZyb20gaW5zaWRl IHRoZSB0aHJlYWQKKyAgICAgICAgICAgICAgICAgcHRocmVhZF9hdHRyX3NldGluaGVyaXRzY2hl ZCgmYXR0ciwgUFRIUkVBRF9JTkhFUklUX1NDSEVEKTsKKy0gICAgICAgICAgICAgICAgZC0+cHJp b3JpdHkgPSBQcmlvcml0eShwcmlvcml0eSB8IFRocmVhZFByaW9yaXR5UmVzZXRGbGFnKTsKKysg ICAgICAgICAgICAgICAgZC0+cHJpb3JpdHkgPSBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdf dHlwZTxRVGhyZWFkOjpQcmlvcml0eT46OnR5cGU+KHByaW9yaXR5KSB8IFRocmVhZFByaW9yaXR5 UmVzZXRGbGFnOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg IH0KK0BAIC03MDIsNyArNzAxLDEwIEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJp b3JpdHkpCisgICAgICAgICBwdGhyZWFkX2F0dHJfc2V0dGhyZWFkbmFtZSgmYXR0ciwgbWV0YU9i amVjdCgpLT5jbGFzc05hbWUoKSk7CisgICAgIGVsc2UKKyAgICAgICAgIHB0aHJlYWRfYXR0cl9z ZXR0aHJlYWRuYW1lKCZhdHRyLCBvYmplY3ROYW1lKCkudG9Mb2NhbDhCaXQoKSk7CisrI2Vsc2UK KysgICAgZC0+b2JqZWN0TmFtZSA9IG9iamVjdE5hbWUoKTsKKyAjZW5kaWYKKysKKyAgICAgcHRo cmVhZF90IHRocmVhZElkOworICAgICBpbnQgY29kZSA9IHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRJ ZCwgJmF0dHIsIFFUaHJlYWRQcml2YXRlOjpzdGFydCwgdGhpcyk7CisgICAgIGlmIChjb2RlID09 IEVQRVJNKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFk X3dpbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcAoraW5k ZXggYmM3MGUzMTc4YS4uNGU3Njk3MjQ5OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxp Yi90aHJlYWQvcXRocmVhZF93aW4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFk L3F0aHJlYWRfd2luLmNwcAorQEAgLTM5NCwxMCArMzk0LDkgQEAgdW5zaWduZWQgaW50IF9fc3Rk Y2FsbCBRVF9FTlNVUkVfU1RBQ0tfQUxJR05FRF9GT1JfU1NFIFFUaHJlYWRQcml2YXRlOjpzdGFy dCh2b2kKKyAKKyAjaWYgIWRlZmluZWQoUVRfTk9fREVCVUcpICYmIGRlZmluZWQoUV9DQ19NU1ZD KSAmJiAhZGVmaW5lZChRX09TX1dJTlJUKQorICAgICAvLyBzZXRzIHRoZSBuYW1lIG9mIHRoZSBj dXJyZW50IHRocmVhZC4KKy0gICAgUUJ5dGVBcnJheSBvYmplY3ROYW1lID0gdGhyLT5vYmplY3RO YW1lKCkudG9Mb2NhbDhCaXQoKTsKKy0gICAgcXRfc2V0X3RocmVhZF9uYW1lKEhBTkRMRSgtMSks CistICAgICAgICAgICAgICAgICAgICAgICBvYmplY3ROYW1lLmlzRW1wdHkoKSA/CistICAgICAg ICAgICAgICAgICAgICAgICB0aHItPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkgOiBvYmplY3RO YW1lLmNvbnN0RGF0YSgpKTsKKysgICAgcXRfc2V0X3RocmVhZF9uYW1lKEhBTkRMRSgtMSksIHRo ci0+ZF9mdW5jKCktPm9iamVjdE5hbWUuaXNFbXB0eSgpCisrICAgICAgICAgICAgICAgICAgICAg ICAgPyB0aHItPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkKKysgICAgICAgICAgICAgICAgICAg ICAgICA6IHN0ZDo6ZXhjaGFuZ2UodGhyLT5kX2Z1bmMoKS0+b2JqZWN0TmFtZSwge30pLnRvTG9j YWw4Qml0KCkuY29uc3REYXRhKCkpOworICNlbmRpZgorIAorICAgICBlbWl0IHRoci0+c3RhcnRl ZChRVGhyZWFkOjpRUHJpdmF0ZVNpZ25hbCgpKTsKK0BAIC01MDMsNiArNTAyLDcgQEAgdm9pZCBR VGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAgICAgaWYgKGQtPnJ1bm5pbmcpCisg ICAgICAgICByZXR1cm47CisgCisrICAgIGQtPm9iamVjdE5hbWUgPSBvYmplY3ROYW1lKCk7Cisg ICAgIGQtPnJ1bm5pbmcgPSB0cnVlOworICAgICBkLT5maW5pc2hlZCA9IGZhbHNlOworICAgICBk LT5leGl0ZWQgPSBmYWxzZTsKK0BAIC01NDgsNyArNTQ4LDcgQEAgdm9pZCBRVGhyZWFkOjpzdGFy dChQcmlvcml0eSBwcmlvcml0eSkKKyAKKyAgICAgaW50IHByaW87CisgICAgIGQtPnByaW9yaXR5 ID0gcHJpb3JpdHk7CistICAgIHN3aXRjaCAoZC0+cHJpb3JpdHkpIHsKKysgICAgc3dpdGNoIChw cmlvcml0eSkgeworICAgICBjYXNlIElkbGVQcmlvcml0eToKKyAgICAgICAgIHByaW8gPSBUSFJF QURfUFJJT1JJVFlfSURMRTsKKyAgICAgICAgIGJyZWFrOworQEAgLTY4Niw3ICs2ODYsNyBAQCB2 b2lkIFFUaHJlYWRQcml2YXRlOjpzZXRQcmlvcml0eShRVGhyZWFkOjpQcmlvcml0eSB0aHJlYWRQ cmlvcml0eSkKKyAKKyAgICAgaW50IHByaW87CisgICAgIHByaW9yaXR5ID0gdGhyZWFkUHJpb3Jp dHk7CistICAgIHN3aXRjaCAocHJpb3JpdHkpIHsKKysgICAgc3dpdGNoICh0aHJlYWRQcmlvcml0 eSkgeworICAgICBjYXNlIFFUaHJlYWQ6OklkbGVQcmlvcml0eToKKyAgICAgICAgIHByaW8gPSBU SFJFQURfUFJJT1JJVFlfSURMRTsKKyAgICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi90aHJlYWQvcXRzYW5faW1wbC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xdHNhbl9pbXBsLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAw Li41ODBhNzM4YjkxCistLS0gL2Rldi9udWxsCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhy ZWFkL3F0c2FuX2ltcGwuaAorQEAgLTAsMCArMSwxMTUgQEAKKysvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uLgorKyoqIENv cHlyaWdodCAoQykgMjAyMiBLbGFyw6RsdmRhbGVucyBEYXRha29uc3VsdCBBQiwgYSBLREFCIEdy b3VwIGNvbXBhbnksIGluZm9Aa2RhYi5jb20sIGF1dGhvciBHaXVzZXBwZSBEJ0FuZ2VsbyA8Z2l1 c2VwcGUuZGFuZ2Vsb0BrZGFiLmNvbT4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9s aWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRDb3JlIG1vZHVs ZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisr KiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQg Y29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFu Y2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRo ZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhl IHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3Ug YW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlv bnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisr KiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8v Y29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBV c2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp b24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFu ZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysq KiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5m b3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1 c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1 YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0 aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBp biB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGlu IHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcK KysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu c2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dw bC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisrCisrI2lmbmRlZiBRVFNBTl9JTVBMX0gKKysjZGVmaW5lIFFUU0FOX0lNUExf SAorKworKyNpbmNsdWRlIDxRdENvcmUvcWdsb2JhbC5oPgorKworKyNpZiAoX19oYXNfZmVhdHVy ZSh0aHJlYWRfc2FuaXRpemVyKSB8fCBkZWZpbmVkKF9fU0FOSVRJWkVfVEhSRUFEX18pKSAmJiBf X2hhc19pbmNsdWRlKDxzYW5pdGl6ZXIvdHNhbl9pbnRlcmZhY2UuaD4pCisrIyAgZGVmaW5lIFFU X0JVSUxESU5HX1VOREVSX1RTQU4KKysjICBpbmNsdWRlIDxzYW5pdGl6ZXIvdHNhbl9pbnRlcmZh Y2UuaD4KKysjZW5kaWYKKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKytuYW1lc3BhY2UgUXRU c2FuIHsKKysjaWZkZWYgUVRfQlVJTERJTkdfVU5ERVJfVFNBTgorK2lubGluZSB2b2lkIGZ1dGV4 QWNxdWlyZSh2b2lkICphZGRyLCB2b2lkICphZGRyMiA9IG51bGxwdHIpCisreworKyAgICAvLyBB IGZ1dGV4IGNhbGwgZW5zdXJlcyB0b3RhbCBvcmRlcmluZyBvbiB0aGUgZnV0ZXggd29yZHMKKysg ICAgLy8gKGluIGVpdGhlciBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIGNhbGwpLiBJbnN0cnVj dCBUU0FOIGFjY29yZGluZ2x5LAorKyAgICAvLyBhcyBUU0FOIGRvZXMgbm90IHVuZGVyc3RhbmQg dGhlIGZ1dGV4KDIpIHN5c2NhbGwgKG9yIGVxdWl2YWxlbnQpLgorKyAgICA6Ol9fdHNhbl9hY3F1 aXJlKGFkZHIpOworKyAgICBpZiAoYWRkcjIpCisrICAgICAgICA6Ol9fdHNhbl9hY3F1aXJlKGFk ZHIyKTsKKyt9CisrCisraW5saW5lIHZvaWQgZnV0ZXhSZWxlYXNlKHZvaWQgKmFkZHIsIHZvaWQg KmFkZHIyID0gbnVsbHB0cikKKyt7CisrICAgIGlmIChhZGRyMikKKysgICAgICAgIDo6X190c2Fu X3JlbGVhc2UoYWRkcjIpOworKyAgICA6Ol9fdHNhbl9yZWxlYXNlKGFkZHIpOworK30KKysKKytp bmxpbmUgdm9pZCBtdXRleFByZUxvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MpCisrewor KyAgICA6Ol9fdHNhbl9tdXRleF9wcmVfbG9jayhhZGRyLCBmbGFncyk7CisrfQorKworK2lubGlu ZSB2b2lkIG11dGV4UG9zdExvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MsIGludCByZWN1 cnNpb24pCisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wb3N0X2xvY2soYWRkciwgZmxhZ3MsIHJl Y3Vyc2lvbik7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4UHJlVW5sb2NrKHZvaWQgKmFkZHIs IHVuc2lnbmVkIGZsYWdzKQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcHJlX3VubG9jayhhZGRy LCBmbGFncyk7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4UG9zdFVubG9jayh2b2lkICphZGRy LCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAgIDo6X190c2FuX211dGV4X3Bvc3RfdW5sb2NrKGFk ZHIsIGZsYWdzKTsKKyt9CisrCisrZW51bSA6IHVuc2lnbmVkIHsKKysgICAgTXV0ZXhXcml0ZVJl ZW50cmFudCA9IDo6X190c2FuX211dGV4X3dyaXRlX3JlZW50cmFudCwKKysgICAgVHJ5TG9jayA9 IDo6X190c2FuX211dGV4X3RyeV9sb2NrLAorKyAgICBUcnlMb2NrRmFpbGVkID0gOjpfX3RzYW5f bXV0ZXhfdHJ5X2xvY2tfZmFpbGVkLAorK307CisrI2Vsc2UKKytpbmxpbmUgdm9pZCBmdXRleEFj cXVpcmUodm9pZCAqLCB2b2lkICogPSBudWxscHRyKSB7fQorK2lubGluZSB2b2lkIGZ1dGV4UmVs ZWFzZSh2b2lkICosIHZvaWQgKiA9IG51bGxwdHIpIHt9CisrCisrZW51bSA6IHVuc2lnbmVkIHsK KysgICAgTXV0ZXhXcml0ZVJlZW50cmFudCwKKysgICAgVHJ5TG9jaywKKysgICAgVHJ5TG9ja0Zh aWxlZCwKKyt9OworK2lubGluZSB2b2lkIG11dGV4UHJlTG9jayh2b2lkICosIHVuc2lnbmVkKSB7 fQorK2lubGluZSB2b2lkIG11dGV4UG9zdExvY2sodm9pZCAqLCB1bnNpZ25lZCwgaW50KSB7fQor K2lubGluZSB2b2lkIG11dGV4UHJlVW5sb2NrKHZvaWQgKiwgdW5zaWduZWQpIHt9CisraW5saW5l IHZvaWQgbXV0ZXhQb3N0VW5sb2NrKHZvaWQgKiwgdW5zaWduZWQpIHt9CisrI2VuZGlmIC8vIFFU X0JVSUxESU5HX1VOREVSX1RTQU4KKyt9IC8vIG5hbWVzcGFjZSBRdFRzYW4KKysKKytRVF9FTkRf TkFNRVNQQUNFCisrCisrI2VuZGlmIC8vIFFUU0FOX0lNUExfSAorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAgYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwCitpbmRleCA4OGIwNThmNDEw Li4wZjFkYTRkYzliIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2Fp dGNvbmRpdGlvbl91bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2Fp dGNvbmRpdGlvbl91bml4LmNwcAorQEAgLTIxMyw3ICsyMTMsNyBAQCBib29sIFFXYWl0Q29uZGl0 aW9uOjp3YWl0KFFNdXRleCAqbXV0ZXgsIFFEZWFkbGluZVRpbWVyIGRlYWRsaW5lKQorIHsKKyAg ICAgaWYgKCEgbXV0ZXgpCisgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgIGlmIChtdXRleC0+ aXNSZWN1cnNpdmUoKSkgeworKyAgICBpZiAoc3RhdGljX2Nhc3Q8UUJhc2ljTXV0ZXggKj4obXV0 ZXgpLT5pc1JlY3Vyc2l2ZSgpKSB7CisgICAgICAgICBxV2FybmluZygiUVdhaXRDb25kaXRpb246 IGNhbm5vdCB3YWl0IG9uIHJlY3Vyc2l2ZSBtdXRleGVzIik7CisgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRp bWUuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcAoraW5kZXggZWMx MjU2OWUzZi4uMmMwYjA5ODA3OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1l L3FkYXRldGltZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3FkYXRldGltZS5j cHAKK0BAIC00Myw2ICs0Myw3IEBACisgI2lmIFFUX0NPTkZJRyhkYXRldGltZXBhcnNlcikKKyAj aW5jbHVkZSAicHJpdmF0ZS9xZGF0ZXRpbWVwYXJzZXJfcC5oIgorICNlbmRpZgorKyNpbmNsdWRl IDxwcml2YXRlL3FudW1lcmljX3AuaD4KKyAKKyAjaW5jbHVkZSAicWRhdGFzdHJlYW0uaCIKKyAj aW5jbHVkZSAicXNldC5oIgorQEAgLTE0MjksOSArMTQzMCwxMSBAQCBRRGF0ZSBRRGF0ZTo6YWRk RGF5cyhxaW50NjQgbmRheXMpIGNvbnN0CisgICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgIHJl dHVybiBRRGF0ZSgpOworIAorLSAgICAvLyBEdWUgdG8gbGltaXRzIG9uIG1pbkpkKCkgYW5kIG1h eEpkKCkgd2Uga25vdyB0aGF0IGFueSBvdmVyZmxvdworLSAgICAvLyB3aWxsIGJlIGludmFsaWQg YW5kIGNhdWdodCBieSBmcm9tSnVsaWFuRGF5KCkuCistICAgIHJldHVybiBmcm9tSnVsaWFuRGF5 KGpkICsgbmRheXMpOworKyAgICBxaW50NjQgcjsKKysgICAgaWYgKFFfVU5MSUtFTFkoYWRkX292 ZXJmbG93KGpkLCBuZGF5cywgJnIpKSkKKysgICAgICAgIHJldHVybiBRRGF0ZSgpOworKyAgICBl bHNlCisrICAgICAgICByZXR1cm4gZnJvbUp1bGlhbkRheShyKTsKKyB9CisgCisgLyohCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lLmNwcCBiL3F0YmFzZS9z cmMvY29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAKK2luZGV4IDAzMDllNDNlNTIuLjNkNDUxNjk2 YTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3BwCisr KysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3BwCitAQCAtMSw2ICsxLDYg QEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAyMDEzIEpv aG4gTGF5dCA8amxheXRAa2RlLm9yZz4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjAgSm9obiBMYXl0 IDxqbGF5dEBrZGUub3JnPgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2lu Zy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdENvcmUgbW9kdWxlIG9mIHRo ZSBRdCBUb29sa2l0LgorQEAgLTk3NSw5ICs5NzUsMTUgQEAgUUxpc3Q8UUJ5dGVBcnJheT4gUVRp bWVab25lOjp3aW5kb3dzSWRUb0lhbmFJZHMoY29uc3QgUUJ5dGVBcnJheSAmd2luZG93c0lkLAor IH0KKyAKKyAjaWZuZGVmIFFUX05PX0RBVEFTVFJFQU0KKysvLyBJbnZhbGlkLCBhcyBhbiBJQU5B IElEOiB0b28gbG9uZywgc3RhcnRzIHdpdGggLSBhbmQgaGFzIG90aGVyIGludmFsaWQgY2hhcmFj dGVycyBpbiBpdAorK3N0YXRpYyBpbmxpbmUgUVN0cmluZyBpbnZhbGlkSWQoKSB7IHJldHVybiBR U3RyaW5nTGl0ZXJhbCgiLU5vIFRpbWUgWm9uZSBTcGVjaWZpZWQhIik7IH0KKysKKyBRRGF0YVN0 cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0cmVhbSAmZHMsIGNvbnN0IFFUaW1lWm9uZSAmdHopCisg eworLSAgICB0ei5kLT5zZXJpYWxpemUoZHMpOworKyAgICBpZiAodHouaXNWYWxpZCgpKQorKyAg ICAgICAgdHouZC0+c2VyaWFsaXplKGRzKTsKKysgICAgZWxzZQorKyAgICAgICAgZHMgPDwgaW52 YWxpZElkKCk7CisgICAgIHJldHVybiBkczsKKyB9CisgCitAQCAtOTg1LDcgKzk5MSw5IEBAIFFE YXRhU3RyZWFtICZvcGVyYXRvcj4+KFFEYXRhU3RyZWFtICZkcywgUVRpbWVab25lICZ0eikKKyB7 CisgICAgIFFTdHJpbmcgaWFuYUlkOworICAgICBkcyA+PiBpYW5hSWQ7CistICAgIGlmIChpYW5h SWQgPT0gUUxhdGluMVN0cmluZygiT2Zmc2V0RnJvbVV0YyIpKSB7CisrICAgIGlmIChpYW5hSWQg PT0gaW52YWxpZElkKCkpIHsKKysgICAgICAgIHR6ID0gUVRpbWVab25lKCk7CisrICAgIH0gZWxz ZSBpZiAoaWFuYUlkID09IFFMYXRpbjFTdHJpbmcoIk9mZnNldEZyb21VdGMiKSkgeworICAgICAg ICAgaW50IHV0Y09mZnNldDsKKyAgICAgICAgIFFTdHJpbmcgbmFtZTsKKyAgICAgICAgIFFTdHJp bmcgYWJicmV2aWF0aW9uOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0 aW1lem9uZXByaXZhdGVfdHouY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25l cHJpdmF0ZV90ei5jcHAKK2luZGV4IGIxNjExZDdkZGIuLmE3YTZhNzJjY2YgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNwcAorKysrIGIv cXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lcHJpdmF0ZV90ei5jcHAKK0BAIC00Miw2 ICs0Miw3IEBACisgI2luY2x1ZGUgInF0aW1lem9uZS5oIgorICNpbmNsdWRlICJxdGltZXpvbmVw cml2YXRlX3AuaCIKKyAjaW5jbHVkZSAicHJpdmF0ZS9xbG9jYWxlX3Rvb2xzX3AuaCIKKysjaW5j bHVkZSAicHJpdmF0ZS9xbG9ja2luZ19wLmgiCisgCisgI2luY2x1ZGUgPFF0Q29yZS9RRGF0YVN0 cmVhbT4KKyAjaW5jbHVkZSA8UXRDb3JlL1FEYXRlVGltZT4KK0BAIC02Miw2ICs2MywxMCBAQAor IAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorKyNpZiBRVF9DT05GSUcoaWN1KQorK3N0YXRpYyBR QmFzaWNNdXRleCBzX2ljdV9tdXRleDsKKysjZW5kaWYKKysKKyAvKgorICAgICBQcml2YXRlCisg CitAQCAtNjcwLDYgKzY3NSw5IEBAIFFUelRpbWVab25lUHJpdmF0ZTo6flFUelRpbWVab25lUHJp dmF0ZSgpCisgCisgUVR6VGltZVpvbmVQcml2YXRlICpRVHpUaW1lWm9uZVByaXZhdGU6OmNsb25l KCkgY29uc3QKKyB7CisrI2lmIFFUX0NPTkZJRyhpY3UpCisrICAgIGNvbnN0IGF1dG8gbG9jayA9 IHF0X3Njb3BlZF9sb2NrKHNfaWN1X211dGV4KTsKKysjZW5kaWYKKyAgICAgcmV0dXJuIG5ldyBR VHpUaW1lWm9uZVByaXZhdGUoKnRoaXMpOworIH0KKyAKK0BAIC05MTMsMTIgKzkyMSwxNCBAQCBR U3RyaW5nIFFUelRpbWVab25lUHJpdmF0ZTo6ZGlzcGxheU5hbWUocWludDY0IGF0TVNlY3NTaW5j ZUVwb2NoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBR TG9jYWxlICZsb2NhbGUpIGNvbnN0CisgeworICNpZiBRVF9DT05GSUcoaWN1KQorKyAgICBhdXRv IGxvY2sgPSBxdF91bmlxdWVfbG9jayhzX2ljdV9tdXRleCk7CisgICAgIGlmICghbV9pY3UpCisg ICAgICAgICBtX2ljdSA9IG5ldyBRSWN1VGltZVpvbmVQcml2YXRlKG1faWQpOworICAgICAvLyBU T0RPIHNtYWxsIHJpc2sgbWF5IG5vdCBtYXRjaCBpZiB0cmFuIHRpbWVzIGRpZmZlciBkdWUgdG8g b3V0ZGF0ZWQgZmlsZXMKKyAgICAgLy8gVE9ETyBTb21lIHZhbGlkIFRaIG5hbWVzIGFyZSBub3Qg dmFsaWQgSUNVIG5hbWVzLCB1c2UgdHJhbnNsYXRpb24gdGFibGU/CisgICAgIGlmIChtX2ljdS0+ aXNWYWxpZCgpKQorICAgICAgICAgcmV0dXJuIG1faWN1LT5kaXNwbGF5TmFtZShhdE1TZWNzU2lu Y2VFcG9jaCwgbmFtZVR5cGUsIGxvY2FsZSk7CisrICAgIGxvY2sudW5sb2NrKCk7CisgI2Vsc2UK KyAgICAgUV9VTlVTRUQobmFtZVR5cGUpCisgICAgIFFfVU5VU0VEKGxvY2FsZSkKK0BAIC05MzIs MTIgKzk0MiwxNCBAQCBRU3RyaW5nIFFUelRpbWVab25lUHJpdmF0ZTo6ZGlzcGxheU5hbWUoUVRp bWVab25lOjpUaW1lVHlwZSB0aW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgUUxvY2FsZSAmbG9jYWxlKSBjb25zdAorIHsKKyAjaWYgUVRfQ09O RklHKGljdSkKKysgICAgYXV0byBsb2NrID0gcXRfdW5pcXVlX2xvY2soc19pY3VfbXV0ZXgpOwor ICAgICBpZiAoIW1faWN1KQorICAgICAgICAgbV9pY3UgPSBuZXcgUUljdVRpbWVab25lUHJpdmF0 ZShtX2lkKTsKKyAgICAgLy8gVE9ETyBzbWFsbCByaXNrIG1heSBub3QgbWF0Y2ggaWYgdHJhbiB0 aW1lcyBkaWZmZXIgZHVlIHRvIG91dGRhdGVkIGZpbGVzCisgICAgIC8vIFRPRE8gU29tZSB2YWxp ZCBUWiBuYW1lcyBhcmUgbm90IHZhbGlkIElDVSBuYW1lcywgdXNlIHRyYW5zbGF0aW9uIHRhYmxl PworICAgICBpZiAobV9pY3UtPmlzVmFsaWQoKSkKKyAgICAgICAgIHJldHVybiBtX2ljdS0+ZGlz cGxheU5hbWUodGltZVR5cGUsIG5hbWVUeXBlLCBsb2NhbGUpOworKyAgICBsb2NrLnVubG9jaygp OworICNlbHNlCisgICAgIFFfVU5VU0VEKHRpbWVUeXBlKQorICAgICBRX1VOVVNFRChuYW1lVHlw ZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5oIGIv cXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaAoraW5kZXggZGNkOTU5MjRjMS4u ZDAxNzM5ZTdlNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlk YXRhLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlkYXRhLmgKK0BAIC00 Miw2ICs0Miw3IEBACisgCisgI2luY2x1ZGUgPFF0Q29yZS9xcmVmY291bnQuaD4KKyAjaW5jbHVk ZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGNzdGRpbnQ+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNF CisgCitAQCAtNTgsMTQgKzU5LDE0IEBAIHN0cnVjdCBRX0NPUkVfRVhQT1JUIFFBcnJheURhdGEK KyAgICAgeworICAgICAgICAgUV9BU1NFUlQoc2l6ZSA9PSAwCisgICAgICAgICAgICAgICAgIHx8 IG9mZnNldCA8IDAgfHwgc2l6ZV90KG9mZnNldCkgPj0gc2l6ZW9mKFFBcnJheURhdGEpKTsKKy0g ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIgKj4odGhpcykgKyBvZmZzZXQ7Cisr ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+IChyZWludGVycHJldF9jYXN0 PHVpbnRwdHJfdD4odGhpcykgKyBvZmZzZXQpOworICAgICB9CisgCisgICAgIGNvbnN0IHZvaWQg KmRhdGEoKSBjb25zdAorICAgICB7CisgICAgICAgICBRX0FTU0VSVChzaXplID09IDAKKyAgICAg ICAgICAgICAgICAgfHwgb2Zmc2V0IDwgMCB8fCBzaXplX3Qob2Zmc2V0KSA+PSBzaXplb2YoUUFy cmF5RGF0YSkpOworLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAq Pih0aGlzKSArIG9mZnNldDsKKysgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQg Kj4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSArIG9mZnNldCk7CisgICAgIH0K KyAKKyAgICAgLy8gVGhpcyByZWZlcnMgdG8gYXJyYXkgZGF0YSBtdXRhYmlsaXR5LCBub3QgImhl YWRlciBkYXRhIiByZXByZXNlbnRlZCBieQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxp Yi90b29scy9xZnJlZWxpc3RfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlz dF9wLmgKK2luZGV4IDViYTIzYjM0NGIuLjk5NzQxMDIxMzYgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGli L3Rvb2xzL3FmcmVlbGlzdF9wLmgKK0BAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgUUZyZWVMaXN0 CisgICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgIHggLT0gc2l6ZTsKKyAg ICAgICAgIH0KKy0gICAgICAgIFFfQVNTRVJUKGZhbHNlKTsKKysgICAgICAgIFFfVU5SRUFDSEFC TEUoKTsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oIGIvcXRiYXNlL3NyYy9jb3JlbGli L3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmgKK2luZGV4IGQ0M2I4NmJhNTEuLjI4NDNmMmIwNDMgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZlcnNpb25udW1iZXIuaAorKysr IGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmgKK0BAIC0yNzMsMTAg KzI3MywxMCBAQCBwdWJsaWM6CisgCisgICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBP UlQgUVN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICNpZiBRVF9TVFJJTkdWSUVXX0xFVkVMIDwg MgorLSAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRX0RFQ0xfUFVS RV9GVU5DVElPTiBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKGNvbnN0IFFTdHJpbmcgJnN0cmlu ZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworKyAgICBRX1JFUVVJUkVEX1JFU1VMVCBR X0NPUkVfRVhQT1JUIHN0YXRpYyBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKGNvbnN0IFFTdHJp bmcgJnN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworICNlbmRpZgorLSAgICBR X1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRX0RFQ0xfUFVSRV9GVU5DVElP TiBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFMYXRpbjFTdHJpbmcgc3RyaW5nLCBpbnQgKnN1 ZmZpeEluZGV4ID0gbnVsbHB0cik7CistICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBP UlQgc3RhdGljIFFfREVDTF9QVVJFX0ZVTkNUSU9OIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmco UVN0cmluZ1ZpZXcgc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisrICAgIFFf UkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFWZXJzaW9uTnVtYmVyIGZyb21T dHJpbmcoUUxhdGluMVN0cmluZyBzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsK KysgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUVZlcnNpb25OdW1i ZXIgZnJvbVN0cmluZyhRU3RyaW5nVmlldyBzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxs cHRyKTsKKyAKKyBwcml2YXRlOgorICNpZm5kZWYgUVRfTk9fREFUQVNUUkVBTQorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwIGIvcXRiYXNlL3NyYy9kYnVz L3FkYnVzaW50ZWdyYXRvci5jcHAKK2luZGV4IDViNjZjZTk3MWIuLjI4YTNiMGZmZWEgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNpbnRlZ3JhdG9yLmNwcAorKysrIGIvcXRiYXNl L3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAKK0BAIC0xMTM1LDcgKzExMzUsMTMgQEAgdm9p ZCBRREJ1c0Nvbm5lY3Rpb25Qcml2YXRlOjpjbG9zZUNvbm5lY3Rpb24oKQorICAgICAgICAgfQor ICAgICB9CisgCistICAgIHFEZWxldGVBbGwocGVuZGluZ0NhbGxzKTsKKysgICAgZm9yIChhdXRv IGl0ID0gcGVuZGluZ0NhbGxzLmJlZ2luKCk7IGl0ICE9IHBlbmRpbmdDYWxscy5lbmQoKTsgKytp dCkgeworKyAgICAgICAgYXV0byBjYWxsID0gKml0OworKyAgICAgICAgaWYgKCFjYWxsLT5yZWYu ZGVyZWYoKSkgeworKyAgICAgICAgICAgIGRlbGV0ZSBjYWxsOworKyAgICAgICAgfQorKyAgICB9 CisrICAgIHBlbmRpbmdDYWxscy5jbGVhcigpOworIAorICAgICAvLyBEaXNjb25uZWN0IGFsbCBz aWduYWxzIGZyb20gc2lnbmFsIGhvb2tzIGFuZCBmcm9tIHRoZSBvYmplY3QgdHJlZSB0bworICAg ICAvLyBhdm9pZCBRT2JqZWN0OjpkZXN0cm95ZWQgYmVpbmcgc2VudCB0byBkYnVzIGRhZW1vbiB0 aHJlYWQgd2hpY2ggaGFzCitAQCAtMjU4NCw2ICsyNTkwLDExIEBAIFFEQnVzQ29ubmVjdGlvblBy aXZhdGU6OmZpbmRNZXRhT2JqZWN0KGNvbnN0IFFTdHJpbmcgJnNlcnZpY2UsIGNvbnN0IFFTdHJp bmcgJnBhCisgICAgICAgICBpZiAobW8pCisgICAgICAgICAgICAgcmV0dXJuIG1vOworICAgICB9 CisrICAgIGlmIChwYXRoLmlzRW1wdHkoKSkgeworKyAgICAgICAgZXJyb3IgPSBRREJ1c0Vycm9y KFFEQnVzRXJyb3I6OkludmFsaWRPYmplY3RQYXRoLCBRTGF0aW4xU3RyaW5nKCJPYmplY3QgcGF0 aCBjYW5ub3QgYmUgZW1wdHkiKSk7CisrICAgICAgICBsYXN0RXJyb3IgPSBlcnJvcjsKKysgICAg ICAgIHJldHVybiBudWxscHRyOworKyAgICB9CisgCisgICAgIC8vIGludHJvc3BlY3QgdGhlIHRh cmdldCBvYmplY3QKKyAgICAgUURCdXNNZXNzYWdlIG1zZyA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRl TWV0aG9kQ2FsbChzZXJ2aWNlLCBwYXRoLAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZGJ1cy9x ZGJ1c21ldGFvYmplY3QuY3BwIGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9iamVjdC5jcHAK K2luZGV4IDUyNjU1NjhmNDIuLjdlOWYwZjFhY2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2Ri dXMvcWRidXNtZXRhb2JqZWN0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9i amVjdC5jcHAKK0BAIC0yMTAsNiArMjEwLDkgQEAgUURCdXNNZXRhT2JqZWN0R2VuZXJhdG9yOjpm aW5kVHlwZShjb25zdCBRQnl0ZUFycmF5ICZzaWduYXR1cmUsCisgICAgICAgICB9IGVsc2UgaWYg KHNpZ25hdHVyZSA9PSAiYXtzc30iKSB7CisgICAgICAgICAgICAgcmVzdWx0Lm5hbWUgPSAiUU1h cDxRU3RyaW5nLFFTdHJpbmc+IjsKKyAgICAgICAgICAgICB0eXBlID0gcU1ldGFUeXBlSWQ8UU1h cDxRU3RyaW5nLCBRU3RyaW5nPiA+KCk7CisrICAgICAgICB9IGVsc2UgaWYgKHNpZ25hdHVyZSA9 PSAiYWF5IikgeworKyAgICAgICAgICAgIHJlc3VsdC5uYW1lID0gIlFCeXRlQXJyYXlMaXN0IjsK KysgICAgICAgICAgICB0eXBlID0gcU1ldGFUeXBlSWQ8UUJ5dGVBcnJheUxpc3Q+KCk7CisgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgIHJlc3VsdC5uYW1lID0gIntELUJ1cyB0eXBlIFwi IiArIHNpZ25hdHVyZSArICJcIn0iOworICAgICAgICAgICAgIHR5cGUgPSByZWdpc3RlckNvbXBs ZXhEQnVzVHlwZShyZXN1bHQubmFtZSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvYWNj ZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nl c3NpYmxlLmNwcAoraW5kZXggZDcwNWJmY2NiNS4uMGNhZjNjODA4YyAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlLmNwcAorQEAgLTU0LDYgKzU0LDcgQEAKKyAjaW5j bHVkZSA8UXRDb3JlL3FkZWJ1Zy5oPgorICNpbmNsdWRlIDxRdENvcmUvcWxvZ2dpbmdjYXRlZ29y eS5oPgorICNpbmNsdWRlIDxRdENvcmUvcW1ldGFvYmplY3QuaD4KKysjaW5jbHVkZSA8UXRDb3Jl L3ByaXZhdGUvcW1ldGFvYmplY3RfcC5oPgorICNpbmNsdWRlIDxRdENvcmUvcWhhc2guaD4KKyAj aW5jbHVkZSA8cHJpdmF0ZS9xZmFjdG9yeWxvYWRlcl9wLmg+CisgCitAQCAtNjgxLDYgKzY4Miwy NSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJsZUlu dGVyZmFjZShRT2JqZWN0ICpvYmplY3QpCisgICAgIC8vIENyZWF0ZSBhIFFBY2Nlc3NpYmxlSW50 ZXJmYWNlIGZvciB0aGUgb2JqZWN0IGNsYXNzLiBTdGFydCBieSB0aGUgbW9zdAorICAgICAvLyBk ZXJpdmVkIGNsYXNzIGFuZCB3YWxrIHVwIHRoZSBjbGFzcyBoaWVyYXJjaHkuCisgICAgIGNvbnN0 IFFNZXRhT2JqZWN0ICptbyA9IG9iamVjdC0+bWV0YU9iamVjdCgpOworKyAgICBjb25zdCBhdXRv ICpvYmplY3RQcml2ID0gUU9iamVjdFByaXZhdGU6OmdldChvYmplY3QpOworKyAgICAvKgorKyAg ICAgV2UgZG8gbm90IHdhbnQgdG8gY2FjaGUgZWFjaCBhbmQgZXZlcnkgUU1MIG1ldGFvYmplY3Qg KEJ1dHRvbl9RTUxUWVBFXzEyNCwKKysgICAgIEJ1dHRvbl9RTUxUWVBFXzEyNSwgZXRjLikuIFRo b3NlIGR5bmFtaWMgbWV0YW9iamVjdHMgc2hvdWxkbid0IGhhdmUgYW4KKysgICAgIGFjY2Vzc2li bGUgaW50ZXJmYWNlIGluIGFueSBjYXNlLiBJbnN0ZWFkLCB3ZSBzdGFydCB0aGUgd2hvbGUgY2hl Y2tpbmcKKysgICAgIHdpdGggdGhlIGZpcnN0IG5vbi1keW5hbWljIG1ldGEtb2JqZWN0LiBUbyBh dm9pZCBwb3RlbnRpYWwgcmVncmVzc2lvbnMKKysgICAgIGluIG90aGVyIGFyZWFzIG9mIFF0IHRo YXQgYWxzbyB1c2UgZHluYW1pYyBtZXRhb2JqZWN0cywgd2Ugb25seSBkbyB0aGlzCisrICAgICBm b3Igb2JqZWN0cyB0aGF0IGFyZSBRTUwtcmVsYXRlZCAoYXBwcm94aW1hdGVkIGJ5IGNoZWNraW5n IHdoZXRoZXIgdGhleQorKyAgICAgaGF2ZSBkZGF0YSBzZXQpLgorKyAgICAqLworKyAgICBjb25z dCBib29sIHFtbFJlbGF0ZWQgPSAhb2JqZWN0UHJpdi0+aXNEZWxldGluZ0NoaWxkcmVuICYmCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFByaXYtPmRlY2xhcmF0aXZlRGF0YTsK KysgICAgd2hpbGUgKHFtbFJlbGF0ZWQgJiYgbW8pIHsKKysgICAgICAgIGF1dG8gbW9wID0gUU1l dGFPYmplY3RQcml2YXRlOjpnZXQobW8pOworKyAgICAgICAgaWYgKCFtb3AgfHwgIShtb3AtPmZs YWdzICYgRHluYW1pY01ldGFPYmplY3QpKQorKyAgICAgICAgICAgIGJyZWFrOworKworKyAgICAg ICAgbW8gPSBtby0+c3VwZXJDbGFzcygpOworKyAgICB9OworICAgICB3aGlsZSAobW8pIHsKKyAg ICAgICAgIGNvbnN0IFFTdHJpbmcgY24gPSBRTGF0aW4xU3RyaW5nKG1vLT5jbGFzc05hbWUoKSk7 CisgCitAQCAtNjk2LDE0ICs3MTYsMTUgQEAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3Np YmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2UoUU9iamVjdCAqb2JqZWN0KQorICAgICAgICAg Ly8gRmluZCBhIFFBY2Nlc3NpYmxlUGx1Z2luIChmYWN0b3J5KSBmb3IgdGhlIGNsYXNzIG5hbWUu IElmIHRoZXJlJ3MKKyAgICAgICAgIC8vIG5vIGVudHJ5IGluIHRoZSBjYWNoZSB0cnkgdG8gY3Jl YXRlIGl0IHVzaW5nIHRoZSBwbHVnaW4gbG9hZGVyLgorICAgICAgICAgaWYgKCFxQWNjZXNzaWJs ZVBsdWdpbnMoKS0+Y29udGFpbnMoY24pKSB7CisrICAgICAgICAgICAgUUFjY2Vzc2libGVQbHVn aW4gKmZhY3RvcnkgPSBudWxscHRyOyAvLyAwIG1lYW5zICJubyBwbHVnaW4gZm91bmQiLiBUaGlz IGlzIGNhY2hlZCBhcyB3ZWxsLgorICAgICAgICAgICAgIGNvbnN0IGludCBpbmRleCA9IGxvYWRl cigpLT5pbmRleE9mKGNuKTsKKy0gICAgICAgICAgICBpZiAoaW5kZXggIT0gLTEpIHsKKy0gICAg ICAgICAgICAgICAgUUFjY2Vzc2libGVQbHVnaW4gKmZhY3RvcnkgPSBxb2JqZWN0X2Nhc3Q8UUFj Y2Vzc2libGVQbHVnaW4gKj4obG9hZGVyKCktPmluc3RhbmNlKGluZGV4KSk7CistICAgICAgICAg ICAgICAgIHFBY2Nlc3NpYmxlUGx1Z2lucygpLT5pbnNlcnQoY24sIGZhY3RvcnkpOworLSAgICAg ICAgICAgIH0KKysgICAgICAgICAgICBpZiAoaW5kZXggIT0gLTEpCisrICAgICAgICAgICAgICAg IGZhY3RvcnkgPSBxb2JqZWN0X2Nhc3Q8UUFjY2Vzc2libGVQbHVnaW4gKj4obG9hZGVyKCktPmlu c3RhbmNlKGluZGV4KSk7CisrICAgICAgICAgICAgcUFjY2Vzc2libGVQbHVnaW5zKCktPmluc2Vy dChjbiwgZmFjdG9yeSk7CisgICAgICAgICB9CisgCisgICAgICAgICAvLyBBdCB0aGlzIHBvaW50 IHRoZSBjYWNoZSBzaG91bGQgY29udGFpbiBhIHZhbGlkIGZhY3RvcnkgcG9pbnRlciBvciAwOgor KyAgICAgICAgUV9BU1NFUlQocUFjY2Vzc2libGVQbHVnaW5zKCktPmNvbnRhaW5zKGNuKSk7Cisg ICAgICAgICBRQWNjZXNzaWJsZVBsdWdpbiAqZmFjdG9yeSA9IHFBY2Nlc3NpYmxlUGx1Z2lucygp LT52YWx1ZShjbik7CisgICAgICAgICBpZiAoZmFjdG9yeSkgeworICAgICAgICAgICAgIFFBY2Nl c3NpYmxlSW50ZXJmYWNlICpyZXN1bHQgPSBmYWN0b3J5LT5jcmVhdGUoY24sIG9iamVjdCk7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpzb24gYi9xdGJhc2Uvc3JjL2d1 aS9jb25maWd1cmUuanNvbgoraW5kZXggMWYwODc5NWM1Ny4uMTJjOTU3NDJkMiAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3VyZS5qc29uCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9j b25maWd1cmUuanNvbgorQEAgLTgzNCw3ICs4MzQsOCBAQAorICAgICAgICAgICAgICAgICAgICAg Ii8vIGVtYmVkZGVkIGRldmljZXMsIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCB0b2dldGhl ciB3aXRoIFguIEVHTCBzdXBwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICIvLyBoYXMgdG8g YmUgZGlzYWJsZWQgaW4gcGx1Z2lucyBsaWtlIHhjYiBpbiB0aGlzIGNhc2Ugc2luY2UgdGhlIG5h dGl2ZSBkaXNwbGF5LCIsCisgICAgICAgICAgICAgICAgICAgICAiLy8gd2luZG93IGFuZCBwaXht YXAgdHlwZXMgd2lsbCBiZSBkaWZmZXJlbnQgdGhhbiB3aGF0IGFuIFgtYmFzZWQgcGxhdGZvcm0i LAorLSAgICAgICAgICAgICAgICAgICAgIi8vIHBsdWdpbiB3b3VsZCBleHBlY3QuIgorKyAgICAg ICAgICAgICAgICAgICAgIi8vIHBsdWdpbiB3b3VsZCBleHBlY3QuIiwKKysgICAgICAgICAgICAg ICAgICAgICIjZGVmaW5lIFVTRV9YMTEiCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg ICAgICAgICJpbmNsdWRlIjogWyAiRUdML2VnbC5oIiwgIlgxMS9YbGliLmgiIF0sCisgICAgICAg ICAgICAgICAgICJtYWluIjogWworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3Fi bXBoYW5kbGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcAoraW5k ZXggOTZmMWU4Y2IxZC4uMGU3M2JiYmRiMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2lt YWdlL3FibXBoYW5kbGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhhbmRs ZXIuY3BwCitAQCAtMTUwLDE2ICsxNTAsNDIgQEAgc3RhdGljIFFEYXRhU3RyZWFtICZvcGVyYXRv cjw8KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmkpCisgICAgIHJldHVybiBz OworIH0KKyAKKy1zdGF0aWMgaW50IGNhbGNfc2hpZnQodWludCBtYXNrKQorK3N0YXRpYyB1aW50 IGNhbGNfc2hpZnQodWludCBtYXNrKQorIHsKKy0gICAgaW50IHJlc3VsdCA9IDA7CistICAgIHdo aWxlIChtYXNrICYmICEobWFzayAmIDEpKSB7CisrICAgIHVpbnQgcmVzdWx0ID0gMDsKKysgICAg d2hpbGUgKChtYXNrID49IDB4MTAwKSB8fCAoIShtYXNrICYgMSkgJiYgbWFzaykpIHsKKyAgICAg ICAgIHJlc3VsdCsrOworICAgICAgICAgbWFzayA+Pj0gMTsKKyAgICAgfQorICAgICByZXR1cm4g cmVzdWx0OworIH0KKyAKKytzdGF0aWMgdWludCBjYWxjX3NjYWxlKHVpbnQgbG93X21hc2spCisr eworKyAgICB1aW50IHJlc3VsdCA9IDg7CisrICAgIHdoaWxlIChsb3dfbWFzayAmJiByZXN1bHQp IHsKKysgICAgICAgIHJlc3VsdC0tOworKyAgICAgICAgbG93X21hc2sgPj49IDE7CisrICAgIH0K KysgICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisrc3RhdGljIGlubGluZSB1aW50IGFwcGx5X3Nj YWxlKHVpbnQgdmFsdWUsIHVpbnQgc2NhbGUpCisreworKyAgICBpZiAoIShzY2FsZSAmIDB4MDcp KSAvLyByZXR1cm4gaW1tZWRpYXRlbHkgaWYgc2NhbGUgPT0gOCBvciAwCisrICAgICAgICByZXR1 cm4gdmFsdWU7CisrCisrICAgIHVpbnQgZmlsbGVkID0gOCAtIHNjYWxlOworKyAgICB1aW50IHJl c3VsdCA9IHZhbHVlIDw8IHNjYWxlOworKworKyAgICBkbyB7CisrICAgICAgICByZXN1bHQgfD0g cmVzdWx0ID4+IGZpbGxlZDsKKysgICAgICAgIGZpbGxlZCA8PD0gMTsKKysgICAgfSB3aGlsZSAo ZmlsbGVkIDwgOCk7CisrCisrICAgIHJldHVybiByZXN1bHQ7CisrfQorKworIHN0YXRpYyBib29s IHJlYWRfZGliX2ZpbGVoZWFkZXIoUURhdGFTdHJlYW0gJnMsIEJNUF9GSUxFSERSICZiZikKKyB7 CisgICAgIC8vIHJlYWQgQk1QIGZpbGUgaGVhZGVyCitAQCAtMjIyLDE0ICsyNDgsMTQgQEAgc3Rh dGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIg JmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICB1aW50IGdyZWVuX21hc2sgPSAwOworICAgICB1aW50 IGJsdWVfbWFzayA9IDA7CisgICAgIHVpbnQgYWxwaGFfbWFzayA9IDA7CistICAgIGludCByZWRf c2hpZnQgPSAwOworLSAgICBpbnQgZ3JlZW5fc2hpZnQgPSAwOworLSAgICBpbnQgYmx1ZV9zaGlm dCA9IDA7CistICAgIGludCBhbHBoYV9zaGlmdCA9IDA7CistICAgIGludCByZWRfc2NhbGUgPSAw OworLSAgICBpbnQgZ3JlZW5fc2NhbGUgPSAwOworLSAgICBpbnQgYmx1ZV9zY2FsZSA9IDA7Cist ICAgIGludCBhbHBoYV9zY2FsZSA9IDA7CisrICAgIHVpbnQgcmVkX3NoaWZ0ID0gMDsKKysgICAg dWludCBncmVlbl9zaGlmdCA9IDA7CisrICAgIHVpbnQgYmx1ZV9zaGlmdCA9IDA7CisrICAgIHVp bnQgYWxwaGFfc2hpZnQgPSAwOworKyAgICB1aW50IHJlZF9zY2FsZSA9IDA7CisrICAgIHVpbnQg Z3JlZW5fc2NhbGUgPSAwOworKyAgICB1aW50IGJsdWVfc2NhbGUgPSAwOworKyAgICB1aW50IGFs cGhhX3NjYWxlID0gMDsKKyAKKyAgICAgaWYgKCFkLT5pc1NlcXVlbnRpYWwoKSkKKyAgICAgICAg IGQtPnNlZWsoc3RhcnRwb3MgKyBCTVBfRklMRUhEUl9TSVpFICsgYmkuYmlTaXplKTsgLy8gZ290 byBzdGFydCBvZiBjb2xvcm1hcCBvciBtYXNrcworQEAgLTMwOCwxOSArMzM0LDE5IEBAIHN0YXRp YyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZi aSwgcWludDY0IG9mZnNldCwKKyAgICAgICAgIHJlZF9zaGlmdCA9IGNhbGNfc2hpZnQocmVkX21h c2spOworICAgICAgICAgaWYgKCgocmVkX21hc2sgPj4gcmVkX3NoaWZ0KSArIDEpID09IDApCisg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgcmVkX3NjYWxlID0gMjU2IC8gKChy ZWRfbWFzayA+PiByZWRfc2hpZnQpICsgMSk7CisrICAgICAgICByZWRfc2NhbGUgPSBjYWxjX3Nj YWxlKHJlZF9tYXNrID4+IHJlZF9zaGlmdCk7CisgICAgICAgICBncmVlbl9zaGlmdCA9IGNhbGNf c2hpZnQoZ3JlZW5fbWFzayk7CisgICAgICAgICBpZiAoKChncmVlbl9tYXNrID4+IGdyZWVuX3No aWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgZ3Jl ZW5fc2NhbGUgPSAyNTYgLyAoKGdyZWVuX21hc2sgPj4gZ3JlZW5fc2hpZnQpICsgMSk7CisrICAg ICAgICBncmVlbl9zY2FsZSA9IGNhbGNfc2NhbGUoZ3JlZW5fbWFzayA+PiBncmVlbl9zaGlmdCk7 CisgICAgICAgICBibHVlX3NoaWZ0ID0gY2FsY19zaGlmdChibHVlX21hc2spOworICAgICAgICAg aWYgKCgoYmx1ZV9tYXNrID4+IGJsdWVfc2hpZnQpICsgMSkgPT0gMCkKKyAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7CistICAgICAgICBibHVlX3NjYWxlID0gMjU2IC8gKChibHVlX21hc2sgPj4g Ymx1ZV9zaGlmdCkgKyAxKTsKKysgICAgICAgIGJsdWVfc2NhbGUgPSBjYWxjX3NjYWxlKGJsdWVf bWFzayA+PiBibHVlX3NoaWZ0KTsKKyAgICAgICAgIGFscGhhX3NoaWZ0ID0gY2FsY19zaGlmdChh bHBoYV9tYXNrKTsKKyAgICAgICAgIGlmICgoKGFscGhhX21hc2sgPj4gYWxwaGFfc2hpZnQpICsg MSkgPT0gMCkKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICBhbHBoYV9zY2Fs ZSA9IDI1NiAvICgoYWxwaGFfbWFzayA+PiBhbHBoYV9zaGlmdCkgKyAxKTsKKysgICAgICAgIGFs cGhhX3NjYWxlID0gY2FsY19zY2FsZShhbHBoYV9tYXNrID4+IGFscGhhX3NoaWZ0KTsKKyAgICAg fSBlbHNlIGlmIChjb21wID09IEJNUF9SR0IgJiYgKG5iaXRzID09IDI0IHx8IG5iaXRzID09IDMy KSkgeworICAgICAgICAgYmx1ZV9tYXNrID0gMHgwMDAwMDBmZjsKKyAgICAgICAgIGdyZWVuX21h c2sgPSAweDAwMDBmZjAwOworQEAgLTMyOCwxNyArMzU0LDE1IEBAIHN0YXRpYyBib29sIHJlYWRf ZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9m ZnNldCwKKyAgICAgICAgIGJsdWVfc2hpZnQgPSAwOworICAgICAgICAgZ3JlZW5fc2hpZnQgPSA4 OworICAgICAgICAgcmVkX3NoaWZ0ID0gMTY7CistICAgICAgICBibHVlX3NjYWxlID0gZ3JlZW5f c2NhbGUgPSByZWRfc2NhbGUgPSAxOworKyAgICAgICAgYmx1ZV9zY2FsZSA9IGdyZWVuX3NjYWxl ID0gcmVkX3NjYWxlID0gMDsKKyAgICAgfSBlbHNlIGlmIChjb21wID09IEJNUF9SR0IgJiYgbmJp dHMgPT0gMTYpIHsKKyAgICAgICAgIGJsdWVfbWFzayA9IDB4MDAxZjsKKyAgICAgICAgIGdyZWVu X21hc2sgPSAweDAzZTA7CisgICAgICAgICByZWRfbWFzayA9IDB4N2MwMDsKKyAgICAgICAgIGJs dWVfc2hpZnQgPSAwOworLSAgICAgICAgZ3JlZW5fc2hpZnQgPSAyOworLSAgICAgICAgcmVkX3No aWZ0ID0gNzsKKy0gICAgICAgIHJlZF9zY2FsZSA9IDE7CistICAgICAgICBncmVlbl9zY2FsZSA9 IDE7CistICAgICAgICBibHVlX3NjYWxlID0gODsKKysgICAgICAgIGdyZWVuX3NoaWZ0ID0gNTsK KysgICAgICAgIHJlZF9zaGlmdCA9IDEwOworKyAgICAgICAgYmx1ZV9zY2FsZSA9IGdyZWVuX3Nj YWxlID0gcmVkX3NjYWxlID0gMzsKKyAgICAgfQorIAorICNpZiAwCitAQCAtNTQ0LDEwICs1Njgs MTAgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1Q X0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgYyB8PSAq KHVjaGFyKikoYisyKTw8MTY7CisgICAgICAgICAgICAgICAgIGlmIChuYml0cyA+IDI0KQorICAg ICAgICAgICAgICAgICAgICAgYyB8PSAqKHVjaGFyKikoYiszKTw8MjQ7CistICAgICAgICAgICAg ICAgICpwKysgPSBxUmdiYSgoKGMgJiByZWRfbWFzaykgPj4gcmVkX3NoaWZ0KSAqIHJlZF9zY2Fs ZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChjICYgZ3JlZW5f bWFzaykgPj4gZ3JlZW5fc2hpZnQpICogZ3JlZW5fc2NhbGUsCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgoYyAmIGJsdWVfbWFzaykgPj4gYmx1ZV9zaGlmdCkgKiBi bHVlX3NjYWxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFu c3AgPyAoKGMgJiBhbHBoYV9tYXNrKSA+PiBhbHBoYV9zaGlmdCkgKiBhbHBoYV9zY2FsZSA6IDB4 ZmYpOworKyAgICAgICAgICAgICAgICAqcCsrID0gcVJnYmEoYXBwbHlfc2NhbGUoKGMgJiByZWRf bWFzaykgPj4gcmVkX3NoaWZ0LCByZWRfc2NhbGUpLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXBwbHlfc2NhbGUoKGMgJiBncmVlbl9tYXNrKSA+PiBncmVlbl9zaGlmdCwgZ3JlZW5f c2NhbGUpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlfc2NhbGUoKGMgJiBi bHVlX21hc2spID4+IGJsdWVfc2hpZnQsIGJsdWVfc2NhbGUpLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdHJhbnNwID8gYXBwbHlfc2NhbGUoKGMgJiBhbHBoYV9tYXNrKSA+PiBhbHBo YV9zaGlmdCwgYWxwaGFfc2NhbGUpIDogMHhmZik7CisgICAgICAgICAgICAgICAgIGIgKz0gbmJp dHMvODsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9ndWkvaW1hZ2UvcWltYWdlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAK K2luZGV4IDcxNTJhYzE2MDcuLjBkZjc3MjU2NGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1 aS9pbWFnZS9xaW1hZ2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xaW1hZ2UuY3Bw CitAQCAtNDY5NCw2ICs0Njk0LDggQEAgUUltYWdlIFFJbWFnZTo6c21vb3RoU2NhbGVkKGludCB3 LCBpbnQgaCkgY29uc3QgeworIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDkwKGNvbnN0IFFJbWFnZSAm aW1hZ2UpCisgeworICAgICBRSW1hZ2Ugb3V0KGltYWdlLmhlaWdodCgpLCBpbWFnZS53aWR0aCgp LCBpbWFnZS5mb3JtYXQoKSk7CisrICAgIGlmIChvdXQuaXNOdWxsKCkpCisrICAgICAgICByZXR1 cm4gb3V0OworICAgICBjb3B5TWV0YWRhdGEoJm91dCwgaW1hZ2UpOworICAgICBpZiAoaW1hZ2Uu Y29sb3JDb3VudCgpID4gMCkKKyAgICAgICAgIG91dC5zZXRDb2xvclRhYmxlKGltYWdlLmNvbG9y VGFibGUoKSk7CitAQCAtNDcyMiw2ICs0NzI0LDggQEAgc3RhdGljIFFJbWFnZSByb3RhdGVkMTgw KGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgICAgICAgICByZXR1cm4gaW1hZ2UubWlycm9yZWQodHJ1 ZSwgdHJ1ZSk7CisgCisgICAgIFFJbWFnZSBvdXQoaW1hZ2Uud2lkdGgoKSwgaW1hZ2UuaGVpZ2h0 KCksIGltYWdlLmZvcm1hdCgpKTsKKysgICAgaWYgKG91dC5pc051bGwoKSkKKysgICAgICAgIHJl dHVybiBvdXQ7CisgICAgIGNvcHlNZXRhZGF0YSgmb3V0LCBpbWFnZSk7CisgICAgIGlmIChpbWFn ZS5jb2xvckNvdW50KCkgPiAwKQorICAgICAgICAgb3V0LnNldENvbG9yVGFibGUoaW1hZ2UuY29s b3JUYWJsZSgpKTsKK0BAIC00NzM0LDYgKzQ3MzgsOCBAQCBzdGF0aWMgUUltYWdlIHJvdGF0ZWQx ODAoY29uc3QgUUltYWdlICZpbWFnZSkKKyBzdGF0aWMgUUltYWdlIHJvdGF0ZWQyNzAoY29uc3Qg UUltYWdlICZpbWFnZSkKKyB7CisgICAgIFFJbWFnZSBvdXQoaW1hZ2UuaGVpZ2h0KCksIGltYWdl LndpZHRoKCksIGltYWdlLmZvcm1hdCgpKTsKKysgICAgaWYgKG91dC5pc051bGwoKSkKKysgICAg ICAgIHJldHVybiBvdXQ7CisgICAgIGNvcHlNZXRhZGF0YSgmb3V0LCBpbWFnZSk7CisgICAgIGlm IChpbWFnZS5jb2xvckNvdW50KCkgPiAwKQorICAgICAgICAgb3V0LnNldENvbG9yVGFibGUoaW1h Z2UuY29sb3JUYWJsZSgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1 cnNvci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1cnNvci5jcHAKK2luZGV4IGQ2Y2Nh ZmY4ZWQuLjQ1NTA4ODI0MWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1 cnNvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNwcAorQEAgLTI1 MSw3ICsyNTEsOCBAQCB2b2lkIFFDdXJzb3I6OnNldFBvcyhRU2NyZWVuICpzY3JlZW4sIGludCB4 LCBpbnQgeSkKKyB7CisgICAgIGlmIChzY3JlZW4pIHsKKyAgICAgICAgIGlmIChRUGxhdGZvcm1D dXJzb3IgKmN1cnNvciA9IHNjcmVlbi0+aGFuZGxlKCktPmN1cnNvcigpKSB7CistICAgICAgICAg ICAgY29uc3QgUVBvaW50IGRldmljZVBvcyA9IFFIaWdoRHBpOjp0b05hdGl2ZVBpeGVscyhRUG9p bnQoeCwgeSksIHNjcmVlbik7CisrICAgICAgICAgICAgY29uc3QgUVBvaW50IHBvcyh4LCB5KTsK KysgICAgICAgICAgICBjb25zdCBRUG9pbnQgZGV2aWNlUG9zID0gUUhpZ2hEcGk6OnRvTmF0aXZl UGl4ZWxzKHBvcywgc2NyZWVuLT52aXJ0dWFsU2libGluZ0F0KHBvcykpOworICAgICAgICAgICAg IC8vIE5lZWQgdG8gY2hlY2ssIHNpbmNlIHNvbWUgWCBzZXJ2ZXJzIGdlbmVyYXRlIG51bGwgbW91 c2UgbW92ZQorICAgICAgICAgICAgIC8vIGV2ZW50cywgY2F1c2luZyBsb29waW5nIGluIGFwcGxp Y2F0aW9ucyB3aGljaCBjYWxsIHNldFBvcygpIG9uCisgICAgICAgICAgICAgLy8gZXZlcnkgbW91 c2UgbW92ZSBldmVudC4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWhpZ2hk cGlzY2FsaW5nLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3Bw CitpbmRleCA5YmJmMjc3M2E5Li4zYWM0YTRkOGI2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9n dWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5l bC9xaGlnaGRwaXNjYWxpbmcuY3BwCitAQCAtNTgwLDkgKzU4MCw4IEBAIHZvaWQgUUhpZ2hEcGlT Y2FsaW5nOjpzZXRTY3JlZW5GYWN0b3IoUVNjcmVlbiAqc2NyZWVuLCBxcmVhbCBmYWN0b3IpCisg ICAgIGVsc2UKKyAgICAgICAgIHFOYW1lZFNjcmVlblNjYWxlRmFjdG9ycygpLT5pbnNlcnQobmFt ZSwgZmFjdG9yKTsKKyAKKy0gICAgLy8gaGFjayB0byBmb3JjZSByZS1ldmFsdWF0aW9uIG9mIHNj cmVlbiBnZW9tZXRyeQorICAgICBpZiAoc2NyZWVuLT5oYW5kbGUoKSkKKy0gICAgICAgIHNjcmVl bi0+ZF9mdW5jKCktPnNldFBsYXRmb3JtU2NyZWVuKHNjcmVlbi0+aGFuZGxlKCkpOyAvLyB1cGRh dGVzIGdlb21ldHJpZXMgYmFzZWQgb24gc2NhbGUgZmFjdG9yCisrICAgICAgICBzY3JlZW4tPmRf ZnVuYygpLT51cGRhdGVMb2dpY2FsRHBpKCk7CisgfQorIAorIFFQb2ludCBRSGlnaERwaVNjYWxp bmc6Om1hcFBvc2l0aW9uVG9OYXRpdmUoY29uc3QgUVBvaW50ICZwb3MsIGNvbnN0IFFQbGF0Zm9y bVNjcmVlbiAqcGxhdGZvcm1TY3JlZW4pCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FrZXlzZXF1ZW5jZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNl LmNwcAoraW5kZXggYTc1YjhlZjkyMC4uNGYyZDI5NDczOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcWtleXNlcXVlbmNlLmNwcAorQEAgLTcwMSw2ICs3MDEsMTAgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCB7CisgICAgIHsgUXQ6OktleV9Ub3VjaHBhZFRvZ2dsZSwgIFFUX1RSQU5TTEFURV9OT09Q KCJRU2hvcnRjdXQiLCAiVG91Y2hwYWQgVG9nZ2xlIikgfSwKKyAgICAgeyBRdDo6S2V5X1RvdWNo cGFkT24sICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlRvdWNocGFkIE9uIikgfSwK KyAgICAgeyBRdDo6S2V5X1RvdWNocGFkT2ZmLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1 dCIsICJUb3VjaHBhZCBPZmYiKSB9LAorKyAgICB7IFF0OjpLZXlfU2hpZnQsICBRVF9UUkFOU0xB VEVfTk9PUCgiUVNob3J0Y3V0IiwgIlNoaWZ0IikgfSwKKysgICAgeyBRdDo6S2V5X0NvbnRyb2ws ICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIkNvbnRyb2wiKSB9LAorKyAgICB7IFF0 OjpLZXlfQWx0LCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJBbHQiKSB9LAorKyAg ICB7IFF0OjpLZXlfTWV0YSwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiTWV0YSIp IH0sCisgCisgfTsKKyBzdGF0aWMgUV9DT05TVEVYUFIgaW50IG51bUtleU5hbWVzID0gc2l6ZW9m IGtleW5hbWUgLyBzaXplb2YgKmtleW5hbWU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkv a2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxh dGZvcm1zZXJ2aWNlcy5jcHAKK2luZGV4IGZkYzZhNmM0YWEuLmFjNDdmOThjNWQgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuY3BwCisrKysgYi9x dGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuY3BwCitAQCAtNTUsNiArNTUs MTkgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgICAgIFxicmllZiBUaGUgUVBsYXRmb3JtU2Vydmlj ZXMgcHJvdmlkZXMgdGhlIGJhY2tlbmQgZm9yIGRlc2t0b3AtcmVsYXRlZCBmdW5jdGlvbmFsaXR5 LgorICovCisgCisrLyohCisrICAgIFxlbnVtIFFQbGF0Zm9ybVNlcnZpY2VzOjpDYXBhYmlsaXR5 CisrCisrICAgIENhcGFiaWxpdGllcyBhcmUgdXNlZCB0byBkZXRlcm1pbmUgYSBzcGVjaWZpYyBw bGF0Zm9ybSBzZXJ2aWNlJ3MgYXZhaWxhYmlsaXR5LgorKworKyAgICBcdmFsdWUgQ29sb3JQaWNr aW5nRnJvbVNjcmVlbiBUaGUgcGxhdGZvcm0gbmF0aXZlbHkgc3VwcG9ydHMgY29sb3IgcGlja2lu ZyBmcm9tIHNjcmVlbi4KKysgICAgVGhpcyBjYXBhYmlsaXR5IGluZGljYXRlcyB0aGF0IHRoZSBw bGF0Zm9ybSBzdXBwb3J0cyAib3BhcXVlIiBjb2xvciBwaWNraW5nLCB3aGVyZSB0aGUKKysgICAg cGxhdGZvcm0gaW1wbGVtZW50cyBhIGNvbXBsZXRlIHVzZXIgZXhwZXJpZW5jZSBmb3IgY29sb3Ig cGlja2luZyBhbmQgb3V0cHV0cyBhIGNvbG9yLgorKyAgICBUaGlzIGlzIGluIGNvbnRyYXN0IHRv IHRoZSBhcHBsaWNhdGlvbiBpbXBsZW1lbnRpbmcgdGhlIGNvbG9yIHBpY2tpbmcgdXNlciBleHBl cmllbmNlCisrICAgICh0YWtpbmcgY2FyZSBvZiBzaG93aW5nIGEgY3Jvc3MgaGFpciwgaW5zdHJ1 Y3RpbmcgdGhlIHBsYXRmb3JtIGludGVncmF0aW9uIHRvIG9idGFpbgorKyAgICB0aGUgY29sb3Ig YXQgYSBnaXZlbiBwaXhlbCwgZXRjLikuIFRoZSByZWxhdGVkIHNlcnZpY2UgZnVuY3Rpb24gaXMg cGlja0NvbG9yKCkuCisrICovCisrCisgUVBsYXRmb3JtU2VydmljZXM6OlFQbGF0Zm9ybVNlcnZp Y2VzKCkKKyB7IH0KKyAKK0BAIC04NSw1ICs5OCwxNiBAQCBRQnl0ZUFycmF5IFFQbGF0Zm9ybVNl cnZpY2VzOjpkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdAorICAgICByZXR1cm4gUUJ5dGVBcnJh eSgiVU5LTk9XTiIpOworIH0KKyAKKytRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKlFQbGF0 Zm9ybVNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQpCisreworKyAgICBRX1VO VVNFRChwYXJlbnQpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisrYm9vbCBRUGxhdGZv cm1TZXJ2aWNlczo6aGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNhcGFiaWxpdHkpIGNvbnN0Cisr eworKyAgICBRX1VOVVNFRChjYXBhYmlsaXR5KQorKyAgICByZXR1cm4gZmFsc2U7CisrfQorIAor IFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBs YXRmb3Jtc2VydmljZXMuaCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNl cy5oCitpbmRleCA1ZGU5NmNmYTdkLi5hOGIyYTRjZTcxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5oCitAQCAtNTAsMTYgKzUwLDMyIEBACisgLy8KKyAKKyAj aW5jbHVkZSA8UXRHdWkvcXRndWlnbG9iYWwuaD4KKysjaW5jbHVkZSA8UXRDb3JlL3FvYmplY3Qu aD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBRVXJsOworK2NsYXNzIFFXaW5k b3c7CisrCisrY2xhc3MgUV9HVUlfRVhQT1JUIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciA6 IHB1YmxpYyBRT2JqZWN0CisreworKyAgICBRX09CSkVDVAorK3B1YmxpYzoKKysgICAgdXNpbmcg UU9iamVjdDo6UU9iamVjdDsKKysgICAgdmlydHVhbCB2b2lkIHBpY2tDb2xvcigpID0gMDsKKytR X1NJR05BTFM6CisrICAgIHZvaWQgY29sb3JQaWNrZWQoY29uc3QgUUNvbG9yICZjb2xvcik7Cisr fTsKKyAKKyBjbGFzcyBRX0dVSV9FWFBPUlQgUVBsYXRmb3JtU2VydmljZXMKKyB7CisgcHVibGlj OgorICAgICBRX0RJU0FCTEVfQ09QWV9NT1ZFKFFQbGF0Zm9ybVNlcnZpY2VzKQorIAorKyAgICBl bnVtIENhcGFiaWxpdHkgeworKyAgICAgICAgQ29sb3JQaWNraW5nLAorKyAgICB9OworKworICAg ICBRUGxhdGZvcm1TZXJ2aWNlcygpOworICAgICB2aXJ0dWFsIH5RUGxhdGZvcm1TZXJ2aWNlcygp IHsgfQorIAorQEAgLTY3LDYgKzgzLDEwIEBAIHB1YmxpYzoKKyAgICAgdmlydHVhbCBib29sIG9w ZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpOworIAorICAgICB2aXJ0dWFsIFFCeXRlQXJyYXkg ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3Q7CisrCisrICAgIHZpcnR1YWwgYm9vbCBoYXNDYXBh YmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3Q7CisrCisrICAgIHZpcnR1YWwgUVBs YXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQgPSBu dWxscHRyKTsKKyB9OworIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVs L3FwbGF0Zm9ybXRoZW1lLmNwcAoraW5kZXggNzE1MjFjMDMzOS4uMjMyNTg3MzI0NSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAKK0BAIC0xNjMsNiArMTYzLDgg QEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgICAgIFx2YWx1ZSBTaG93U2hvcnRjdXRzSW5Db250 ZXh0TWVudXMgKGJvb2wpIFdoZXRoZXIgdG8gZGlzcGxheSBzaG9ydGN1dCBrZXkgc2VxdWVuY2Vz IGluIGNvbnRleHQgbWVudXMuCisgCisrICAgIFx2YWx1ZSBCdXR0b25QcmVzc0tleXMgKFFMaXN0 PFF0OjpLZXk+KSBBIGxpc3Qgb2Yga2V5cyB0aGF0IGNhbiBiZSB1c2VkIHRvIHByZXNzIGJ1dHRv bnMgdmlhIGtleWJvYXJkIGlucHV0LgorKworICAgICBcc2EgdGhlbWVIaW50KCksIFFTdHlsZTo6 cGl4ZWxNZXRyaWMoKQorICovCisgCitAQCAtNTYzLDYgKzU2NSw4IEBAIFFWYXJpYW50IFFQbGF0 Zm9ybVRoZW1lOjpkZWZhdWx0VGhlbWVIaW50KFRoZW1lSGludCBoaW50KQorICAgICAgICAgfQor ICAgICBjYXNlIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJlc2hvbGQ6CisgICAgICAgICByZXR1cm4g UVZhcmlhbnQoMTApOworKyAgICBjYXNlIEJ1dHRvblByZXNzS2V5czoKKysgICAgICAgIHJldHVy biBRVmFyaWFudDo6ZnJvbVZhbHVlKFFMaXN0PFF0OjpLZXk+KHsgUXQ6OktleV9TcGFjZSwgUXQ6 OktleV9TZWxlY3QgfSkpOworICAgICB9CisgICAgIHJldHVybiBRVmFyaWFudCgpOworIH0KK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuaCBiL3F0YmFz ZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oCitpbmRleCAzMTg1ZmM0NTQxLi43ZTZj OWQ1NzQwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1l LmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oCitAQCAtMTIw LDcgKzEyMCw4IEBAIHB1YmxpYzoKKyAgICAgICAgIFRvdWNoRG91YmxlVGFwRGlzdGFuY2UsCisg ICAgICAgICBTaG93U2hvcnRjdXRzSW5Db250ZXh0TWVudXMsCisgICAgICAgICBJY29uRmFsbGJh Y2tTZWFyY2hQYXRocywKKy0gICAgICAgIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJlc2hvbGQKKysg ICAgICAgIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJlc2hvbGQsCisrICAgICAgICBCdXR0b25QcmVz c0tleXMKKyAgICAgfTsKKyAKKyAgICAgZW51bSBEaWFsb2dUeXBlIHsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwv cXNjcmVlbi5jcHAKK2luZGV4IDhlMGViMzUxMTYuLjVkMTcyYTU4ZGQgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xc2NyZWVuLmNwcAorQEAgLTc3LDYgKzc3LDEyIEBAIFFTY3JlZW46OlFTY3JlZW4oUVBs YXRmb3JtU2NyZWVuICpzY3JlZW4pCisgICAgIGQtPnNldFBsYXRmb3JtU2NyZWVuKHNjcmVlbik7 CisgfQorIAorK3ZvaWQgUVNjcmVlblByaXZhdGU6OnVwZGF0ZUxvZ2ljYWxEcGkoKQorK3sKKysg ICAgbG9naWNhbERwaSA9IFFQbGF0Zm9ybVNjcmVlbjo6b3ZlcnJpZGVEcGkocGxhdGZvcm1TY3Jl ZW4tPmxvZ2ljYWxEcGkoKSk7CisrICAgIHVwZGF0ZUdlb21ldHJpZXNXaXRoU2lnbmFscygpOyAv LyB1cGRhdGVzIGdlb21ldHJpZXMgYmFzZWQgb24gc2NhbGUgZmFjdG9yCisrfQorKworIHZvaWQg UVNjcmVlblByaXZhdGU6OnVwZGF0ZUdlb21ldHJpZXNXaXRoU2lnbmFscygpCisgeworICAgICBj b25zdCBRUmVjdCBvbGRHZW9tZXRyeSA9IGdlb21ldHJ5OworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVu X3AuaAoraW5kZXggN2RhNTQyYzI1ZS4uZTUwZmMzMTkwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3Fz Y3JlZW5fcC5oCitAQCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CisgICAgICAgICBnZW9tZXRyeSA9 IHBsYXRmb3JtU2NyZWVuLT5kZXZpY2VJbmRlcGVuZGVudEdlb21ldHJ5KCk7CisgICAgICAgICBh dmFpbGFibGVHZW9tZXRyeSA9IFFIaWdoRHBpOjpmcm9tTmF0aXZlKHBsYXRmb3JtU2NyZWVuLT5h dmFpbGFibGVHZW9tZXRyeSgpLCBRSGlnaERwaVNjYWxpbmc6OmZhY3RvcihwbGF0Zm9ybVNjcmVl biksIGdlb21ldHJ5LnRvcExlZnQoKSk7CisgICAgIH0KKysgICAgdm9pZCB1cGRhdGVMb2dpY2Fs RHBpKCk7CisgCisgICAgIHZvaWQgdXBkYXRlUHJpbWFyeU9yaWVudGF0aW9uKCk7CisgICAgIHZv aWQgdXBkYXRlR2VvbWV0cmllc1dpdGhTaWduYWxzKCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9ndWkvcGFpbnRpbmcvcWJsZW5kZnVuY3Rpb25zX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50 aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgKK2luZGV4IDA4MGRhOThlYzQuLjY5OTdkNjJiM2MgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oCisr KysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oCitAQCAtMjQ2 LDI1ICsyNDYsMzIgQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpk ZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IGR1ZHgsIGludCBkdmR4LCBpbnQgZHVkeSwgaW50IGR2ZHksIGludCB1MCwgaW50IHYwLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbGVuZGVyIGJsZW5kZXIpCisgewor LSAgICBpbnQgZnJvbVkgPSBxTWF4KHFSb3VuZCh0b3BZKSwgY2xpcC50b3AoKSk7CistICAgIGlu dCB0b1kgPSBxTWluKHFSb3VuZChib3R0b21ZKSwgY2xpcC50b3AoKSArIGNsaXAuaGVpZ2h0KCkp OworKyAgICBxaW50NjQgZnJvbVkgPSBxTWF4KHFSb3VuZCh0b3BZKSwgY2xpcC50b3AoKSk7Cisr ICAgIHFpbnQ2NCB0b1kgPSBxTWluKHFSb3VuZChib3R0b21ZKSwgY2xpcC50b3AoKSArIGNsaXAu aGVpZ2h0KCkpOworICAgICBpZiAoZnJvbVkgPj0gdG9ZKQorICAgICAgICAgcmV0dXJuOworIAor ICAgICBxcmVhbCBsZWZ0U2xvcGUgPSAoYm90dG9tTGVmdC54IC0gdG9wTGVmdC54KSAvIChib3R0 b21MZWZ0LnkgLSB0b3BMZWZ0LnkpOworICAgICBxcmVhbCByaWdodFNsb3BlID0gKGJvdHRvbVJp Z2h0LnggLSB0b3BSaWdodC54KSAvIChib3R0b21SaWdodC55IC0gdG9wUmlnaHQueSk7CistICAg IGludCBkeF9sID0gaW50KGxlZnRTbG9wZSAqIDB4MTAwMDApOworLSAgICBpbnQgZHhfciA9IGlu dChyaWdodFNsb3BlICogMHgxMDAwMCk7CistICAgIGludCB4X2wgPSBpbnQoKHRvcExlZnQueCAr IChxcmVhbCgwLjUpICsgZnJvbVkgLSB0b3BMZWZ0LnkpICogbGVmdFNsb3BlICsgcXJlYWwoMC41 KSkgKiAweDEwMDAwKTsKKy0gICAgaW50IHhfciA9IGludCgodG9wUmlnaHQueCArIChxcmVhbCgw LjUpICsgZnJvbVkgLSB0b3BSaWdodC55KSAqIHJpZ2h0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4 MTAwMDApOworLQorLSAgICBpbnQgZnJvbVgsIHRvWCwgeDEsIHgyLCB1LCB2LCBpLCBpaTsKKysg ICAgcWludDY0IGR4X2wgPSBxaW50NjQobGVmdFNsb3BlICogMHgxMDAwMCk7CisrICAgIHFpbnQ2 NCBkeF9yID0gcWludDY0KHJpZ2h0U2xvcGUgKiAweDEwMDAwKTsKKysgICAgcWludDY0IHhfbCA9 IHFpbnQ2NCgodG9wTGVmdC54ICsgKHFyZWFsKDAuNSkgKyBmcm9tWSAtIHRvcExlZnQueSkgKiBs ZWZ0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAwMDApOworKyAgICBxaW50NjQgeF9yID0gcWlu dDY0KCh0b3BSaWdodC54ICsgKHFyZWFsKDAuNSkgKyBmcm9tWSAtIHRvcFJpZ2h0LnkpICogcmln aHRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7CisrCisrICAgIHFpbnQ2NCBzb3VyY2VS ZWN0VG9wID0gcWludDY0KHNvdXJjZVJlY3QudG9wKCkpOworKyAgICBxaW50NjQgc291cmNlUmVj dExlZnQgPSBxaW50NjQoc291cmNlUmVjdC5sZWZ0KCkpOworKyAgICBxaW50NjQgc291cmNlUmVj dFdpZHRoID0gcWludDY0KHNvdXJjZVJlY3Qud2lkdGgoKSk7CisrICAgIHFpbnQ2NCBzb3VyY2VS ZWN0SGVpZ2h0ID0gcWludDY0KHNvdXJjZVJlY3QuaGVpZ2h0KCkpOworKyAgICBxaW50NjQgY2xp cExlZnQgPSBxaW50NjQoY2xpcC5sZWZ0KCkpOworKyAgICBxaW50NjQgY2xpcFdpZHRoID0gcWlu dDY0KGNsaXAud2lkdGgoKSk7CisrCisrICAgIHFpbnQ2NCBmcm9tWCwgdG9YLCB4MSwgeDIsIHUs IHYsIGksIGlpOworICAgICBEZXN0VCAqbGluZTsKKy0gICAgZm9yIChpbnQgeSA9IGZyb21ZOyB5 IDwgdG9ZOyArK3kpIHsKKysgICAgZm9yIChxaW50NjQgeSA9IGZyb21ZOyB5IDwgdG9ZOyArK3kp IHsKKyAgICAgICAgIGxpbmUgPSByZWludGVycHJldF9jYXN0PERlc3RUICo+KHJlaW50ZXJwcmV0 X2Nhc3Q8dWNoYXIgKj4oZGVzdFBpeGVscykgKyB5ICogZGJwbCk7CisgCistICAgICAgICBmcm9t WCA9IHFNYXgoeF9sID4+IDE2LCBjbGlwLmxlZnQoKSk7CistICAgICAgICB0b1ggPSBxTWluKHhf ciA+PiAxNiwgY2xpcC5sZWZ0KCkgKyBjbGlwLndpZHRoKCkpOworKyAgICAgICAgZnJvbVggPSBx TWF4KHhfbCA+PiAxNiwgY2xpcExlZnQpOworKyAgICAgICAgdG9YID0gcU1pbih4X3IgPj4gMTYs IGNsaXBMZWZ0ICsgY2xpcFdpZHRoKTsKKyAgICAgICAgIGlmIChmcm9tWCA8IHRvWCkgeworICAg ICAgICAgICAgIC8vIEJlY2F1c2Ugb2Ygcm91bmRpbmcsIHdlIGNhbiBnZXQgc291cmNlIGNvb3Jk aW5hdGVzIG91dHNpZGUgdGhlIHNvdXJjZSBpbWFnZS4KKyAgICAgICAgICAgICAvLyBDbGFtcCB0 aGVzZSBjb29yZGluYXRlcyB0byB0aGUgc291cmNlIHJlY3QgdG8gYXZvaWQgc2VnbWVudGF0aW9u IGZhdWx0IGFuZAorQEAgLTI3NSwxMCArMjgyLDEwIEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdl X3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAgICAgICAgdSA9 IHgxICogZHVkeCArIHkgKiBkdWR5ICsgdTA7CisgICAgICAgICAgICAgdiA9IHgxICogZHZkeCAr IHkgKiBkdmR5ICsgdjA7CisgICAgICAgICAgICAgZm9yICg7IHgxIDwgdG9YOyArK3gxKSB7Cist ICAgICAgICAgICAgICAgIGludCB1dSA9IHUgPj4gMTY7CistICAgICAgICAgICAgICAgIGludCB2 diA9IHYgPj4gMTY7CistICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0LmxlZnQo KSAmJiB1dSA8IHNvdXJjZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgpCistICAgICAg ICAgICAgICAgICAgICAmJiB2diA+PSBzb3VyY2VSZWN0LnRvcCgpICYmIHZ2IDwgc291cmNlUmVj dC50b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkpIHsKKysgICAgICAgICAgICAgICAgcWludDY0 IHV1ID0gdSA+PiAxNjsKKysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gdiA+PiAxNjsKKysg ICAgICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJjZVJlY3RMZWZ0ICYmIHV1IDwgc291cmNlUmVj dExlZnQgKyBzb3VyY2VSZWN0V2lkdGgKKysgICAgICAgICAgICAgICAgICAgICYmIHZ2ID49IHNv dXJjZVJlY3RUb3AgJiYgdnYgPCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCkgewor ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgdSArPSBkdWR4OworQEAgLTI5MCwxMCArMjk3LDEwIEBAIHZvaWQgcXRfdHJhbnNm b3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAg ICAgICAgdSA9ICh4MiAtIDEpICogZHVkeCArIHkgKiBkdWR5ICsgdTA7CisgICAgICAgICAgICAg diA9ICh4MiAtIDEpICogZHZkeCArIHkgKiBkdmR5ICsgdjA7CisgICAgICAgICAgICAgZm9yICg7 IHgyID4geDE7IC0teDIpIHsKKy0gICAgICAgICAgICAgICAgaW50IHV1ID0gdSA+PiAxNjsKKy0g ICAgICAgICAgICAgICAgaW50IHZ2ID0gdiA+PiAxNjsKKy0gICAgICAgICAgICAgICAgaWYgKHV1 ID49IHNvdXJjZVJlY3QubGVmdCgpICYmIHV1IDwgc291cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VS ZWN0LndpZHRoKCkKKy0gICAgICAgICAgICAgICAgICAgICYmIHZ2ID49IHNvdXJjZVJlY3QudG9w KCkgJiYgdnYgPCBzb3VyY2VSZWN0LnRvcCgpICsgc291cmNlUmVjdC5oZWlnaHQoKSkgeworKyAg ICAgICAgICAgICAgICBxaW50NjQgdXUgPSB1ID4+IDE2OworKyAgICAgICAgICAgICAgICBxaW50 NjQgdnYgPSB2ID4+IDE2OworKyAgICAgICAgICAgICAgICBpZiAodXUgPj0gc291cmNlUmVjdExl ZnQgJiYgdXUgPCBzb3VyY2VSZWN0TGVmdCArIHNvdXJjZVJlY3RXaWR0aAorKyAgICAgICAgICAg ICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVjdFRvcCAmJiB2diA8IHNvdXJjZVJlY3RUb3AgKyBz b3VyY2VSZWN0SGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICB1IC09IGR1ZHg7CitAQCAtMzA4LDggKzMxNSw4 IEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywg aW50IGRicGwsCisgICAgICAgICAgICAgLy8gQmVnaW5uaW5nIG9mIHRoZSBzY2FuIGxpbmUsIHdp dGggcGVyLXBpeGVsIGNoZWNrcy4KKyAgICAgICAgICAgICBpID0geDEgLSBmcm9tWDsKKyAgICAg ICAgICAgICB3aGlsZSAoaSkgeworLSAgICAgICAgICAgICAgICBpbnQgdXUgPSBxQm91bmQoc291 cmNlUmVjdC5sZWZ0KCksIHUgPj4gMTYsIHNvdXJjZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53 aWR0aCgpIC0gMSk7CistICAgICAgICAgICAgICAgIGludCB2diA9IHFCb3VuZChzb3VyY2VSZWN0 LnRvcCgpLCB2ID4+IDE2LCBzb3VyY2VSZWN0LnRvcCgpICsgc291cmNlUmVjdC5oZWlnaHQoKSAt IDEpOworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSBxQm91bmQoc291cmNlUmVjdExlZnQs IHUgPj4gMTYsIHNvdXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoIC0gMSk7CisrICAgICAg ICAgICAgICAgIHFpbnQ2NCB2diA9IHFCb3VuZChzb3VyY2VSZWN0VG9wLCB2ID4+IDE2LCBzb3Vy Y2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCAtIDEpOworICAgICAgICAgICAgICAgICBibGVu ZGVyLndyaXRlKGxpbmUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgU3JjVCAqPihyZWludGVycHJl dF9jYXN0PGNvbnN0IHVjaGFyICo+KHNyY1BpeGVscykgKyB2diAqIHNicGwpW3V1XSk7CisgICAg ICAgICAgICAgICAgIHUgKz0gZHVkeDsKKyAgICAgICAgICAgICAgICAgdiArPSBkdmR4OworQEAg LTM0OCw4ICszNTUsOCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQg KmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgIC8vIEVuZCBvZiB0aGUgc2NhbiBs aW5lLCB3aXRoIHBlci1waXhlbCBjaGVja3MuCisgICAgICAgICAgICAgaSA9IHRvWCAtIHgyOwor ICAgICAgICAgICAgIHdoaWxlIChpKSB7CistICAgICAgICAgICAgICAgIGludCB1dSA9IHFCb3Vu ZChzb3VyY2VSZWN0LmxlZnQoKSwgdSA+PiAxNiwgc291cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VS ZWN0LndpZHRoKCkgLSAxKTsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gcUJvdW5kKHNvdXJj ZVJlY3QudG9wKCksIHYgPj4gMTYsIHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdo dCgpIC0gMSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0 TGVmdCwgdSA+PiAxNiwgc291cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGggLSAxKTsKKysg ICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3RUb3AsIHYgPj4gMTYs IHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0IC0gMSk7CisgICAgICAgICAgICAgICAg IGJsZW5kZXIud3JpdGUobGluZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBTcmNUICo+KHJlaW50 ZXJwcmV0X2Nhc3Q8Y29uc3QgdWNoYXIgKj4oc3JjUGl4ZWxzKSArIHZ2ICogc2JwbClbdXVdKTsK KyAgICAgICAgICAgICAgICAgdSArPSBkdWR4OworICAgICAgICAgICAgICAgICB2ICs9IGR2ZHg7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaCBi L3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9wLmgKK2luZGV4IDc2YTZhNjA4 MDMuLjI0ZmQ1MjJlNmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29s b3J0cmNsdXRfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29sb3J0cmNsdXRf cC5oCitAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKKyAgICAgICAgIHJldHVybiBRUmdiYTY0 Ojpmcm9tUmdiYTY0KHIsIGcsIGIsIHFBbHBoYShyZ2IzMikgKiAyNTcpOworICNlbmRpZgorICAg ICB9CisrICAgIFFSZ2JhNjQgdG9MaW5lYXI2NChRUmdiYTY0KSBjb25zdCA9IGRlbGV0ZTsKKyAK KyAgICAgUVJnYiB0b0xpbmVhcihRUmdiIHJnYjMyKSBjb25zdAorICAgICB7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwIGIvcXRiYXNlL3NyYy9n dWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwCitpbmRleCBhNjE3OTM1MDhhLi41YmEyZDI3N2I3 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwCisr KysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xZHJhd2hlbHBlci5jcHAKK0BAIC02MDkxLDcg KzYwOTEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWxwaGFyZ2JibGVuZF9hcmdiMzIocXVpbnQz MiAqZHN0LCB1aW50IGNvdmVyYWdlLCBjb25zdCBRUmdiYQorIHN0YXRpYyBpbmxpbmUgdm9pZCBy Z2JCbGVuZFBpeGVsKFFSZ2JhNjQgJmRzdCwgaW50IGNvdmVyYWdlLCBRUmdiYTY0IHNsaW5lYXIs IGNvbnN0IFFDb2xvclRyY0x1dCAqY29sb3JQcm9maWxlKQorIHsKKyAgICAgLy8gRG8gYSBnYW1t YWNvcnJlY3RlZCBSR0IgYWxwaGFibGVuZC4uLgorLSAgICBjb25zdCBRUmdiYTY0IGRsaW5lYXIg PSBjb2xvclByb2ZpbGUgPyBjb2xvclByb2ZpbGUtPnRvTGluZWFyNjQoZHN0KSA6IGRzdDsKKysg ICAgY29uc3QgUVJnYmE2NCBkbGluZWFyID0gY29sb3JQcm9maWxlID8gY29sb3JQcm9maWxlLT50 b0xpbmVhcihkc3QpIDogZHN0OworIAorICAgICBRUmdiYTY0IGJsZW5kID0gcmdiQmxlbmQoZGxp bmVhciwgc2xpbmVhciwgY292ZXJhZ2UpOworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRp bmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAKK2luZGV4IDI4MzkyM2RlNTIuLmYwOGViOWNiZWUg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVy LmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5j cHAKK0BAIC01NjAsMzEgKzU2MCw2IEBAIHZvaWQgUVJhc3RlclBhaW50RW5naW5lOjp1cGRhdGVN YXRyaXgoY29uc3QgUVRyYW5zZm9ybSAmbWF0cml4KQorICAgICBRUmFzdGVyUGFpbnRFbmdpbmVT dGF0ZSAqcyA9IHN0YXRlKCk7CisgICAgIC8vIEZBTENPTjogZ2V0IHJpZCBvZiB0aGlzIGxpbmUs IHNlZSBkcmF3SW1hZ2UgY2FsbCBiZWxvdy4KKyAgICAgcy0+bWF0cml4ID0gbWF0cml4OworLSAg ICBRVHJhbnNmb3JtOjpUcmFuc2Zvcm1hdGlvblR5cGUgdHhvcCA9IHMtPm1hdHJpeC50eXBlKCk7 CistCistICAgIHN3aXRjaCAodHhvcCkgeworLQorLSAgICBjYXNlIFFUcmFuc2Zvcm06OlR4Tm9u ZToKKy0gICAgICAgIHMtPmZsYWdzLmludF94Zm9ybSA9IHRydWU7CistICAgICAgICBicmVhazsK Ky0KKy0gICAgY2FzZSBRVHJhbnNmb3JtOjpUeFRyYW5zbGF0ZToKKy0gICAgICAgIHMtPmZsYWdz LmludF94Zm9ybSA9IHFyZWFsKGludChzLT5tYXRyaXguZHgoKSkpID09IHMtPm1hdHJpeC5keCgp CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRyaXguZHko KSkpID09IHMtPm1hdHJpeC5keSgpOworLSAgICAgICAgYnJlYWs7CistCistICAgIGNhc2UgUVRy YW5zZm9ybTo6VHhTY2FsZToKKy0gICAgICAgIHMtPmZsYWdzLmludF94Zm9ybSA9IHFyZWFsKGlu dChzLT5tYXRyaXguZHgoKSkpID09IHMtPm1hdHJpeC5keCgpCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRyaXguZHkoKSkpID09IHMtPm1hdHJpeC5keSgp CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRyaXgubTEx KCkpKSA9PSBzLT5tYXRyaXgubTExKCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYg cXJlYWwoaW50KHMtPm1hdHJpeC5tMjIoKSkpID09IHMtPm1hdHJpeC5tMjIoKTsKKy0gICAgICAg IGJyZWFrOworLQorLSAgICBkZWZhdWx0OiAvLyBzaGVhciAvIHBlcnNwZWN0aXZlLi4uCistICAg ICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSBmYWxzZTsKKy0gICAgICAgIGJyZWFrOworLSAgICB9 CistCisgICAgIHMtPmZsYWdzLnR4X25vc2hlYXIgPSBxdF9zY2FsZUZvclRyYW5zZm9ybShzLT5t YXRyaXgsICZzLT50eHNjYWxlKTsKKyAKKyAgICAgZW5zdXJlT3V0bGluZU1hcHBlcigpOworQEAg LTYxNyw3ICs1OTIsNiBAQCBRUmFzdGVyUGFpbnRFbmdpbmVTdGF0ZTo6UVJhc3RlclBhaW50RW5n aW5lU3RhdGUoKQorICAgICBmbGFncy5iaWxpbmVhciA9IGZhbHNlOworICAgICBmbGFncy5sZWdh Y3lfcm91bmRpbmcgPSBmYWxzZTsKKyAgICAgZmxhZ3MuZmFzdF90ZXh0ID0gdHJ1ZTsKKy0gICAg ZmxhZ3MuaW50X3hmb3JtID0gdHJ1ZTsKKyAgICAgZmxhZ3MudHhfbm9zaGVhciA9IHRydWU7Cisg ICAgIGZsYWdzLmZhc3RfaW1hZ2VzID0gdHJ1ZTsKKyAKK0BAIC0xNzkzLDcgKzE3NjcsNyBAQCB2 b2lkIFFSYXN0ZXJQYWludEVuZ2luZTo6ZmlsbChjb25zdCBRVmVjdG9yUGF0aCAmcGF0aCwgY29u c3QgUUJydXNoICZicnVzaCkKKyAgICAgUVJlY3RGIGNwUmVjdCA9IHBhdGguY29udHJvbFBvaW50 UmVjdCgpOworICAgICBjb25zdCBRUmVjdEYgcGF0aERldmljZVJlY3QgPSBzLT5tYXRyaXgubWFw UmVjdChjcFJlY3QpOworICAgICAvLyBTa2lwIHBhdGhzIHRoYXQgYnkgY29uc2VydmF0aXZlIGVz dGltYXRlcyBhcmUgY29tcGxldGVseSBvdXRzaWRlIHRoZSBwYWludCBkZXZpY2UuCistICAgIGlm ICghcGF0aERldmljZVJlY3QuaW50ZXJzZWN0cyhRUmVjdEYoZC0+ZGV2aWNlUmVjdCkpKQorKyAg ICBpZiAoIXBhdGhEZXZpY2VSZWN0LmludGVyc2VjdHMoUVJlY3RGKGQtPmRldmljZVJlY3QpKSB8 fCAhcGF0aERldmljZVJlY3QuaXNWYWxpZCgpKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBQ cm9jZXNzU3BhbnMgYmxlbmQgPSBkLT5nZXRCcnVzaEZ1bmMocGF0aERldmljZVJlY3QsICZzLT5i cnVzaERhdGEpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVu Z2luZV9yYXN0ZXJfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jh c3Rlcl9wLmgKK2luZGV4IDA4OWFhZGMzZjcuLmJmNzM2M2Q1YWEgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaAorKysrIGIvcXRiYXNl L3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlcl9wLmgKK0BAIC0xMTEsNyArMTEx LDYgQEAgcHVibGljOgorICAgICAgICAgdWludCBiaWxpbmVhciA6IDE7CisgICAgICAgICB1aW50 IGxlZ2FjeV9yb3VuZGluZyA6IDE7CisgICAgICAgICB1aW50IGZhc3RfdGV4dCA6IDE7CistICAg ICAgICB1aW50IGludF94Zm9ybSA6IDE7CisgICAgICAgICB1aW50IHR4X25vc2hlYXIgOiAxOwor ICAgICAgICAgdWludCBmYXN0X2ltYWdlcyA6IDE7CisgICAgIH07CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJwYXRoLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3Bh aW50aW5nL3FwYWludGVycGF0aC5jcHAKK2luZGV4IGY5NTQ0YTMyNDEuLmQ4MGZhZmVhZjEgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3BwCitAQCAtMTI1Myw3ICsx MjUzLDcgQEAgdm9pZCBRUGFpbnRlclBhdGg6OmFkZFRleHQoY29uc3QgUVBvaW50RiAmcG9pbnQs IGNvbnN0IFFGb250ICZmLCBjb25zdCBRU3RyaW5nICYKKyAKKyAgICAgICAgIGlmIChzaS5hbmFs eXNpcy5mbGFncyA8IFFTY3JpcHRBbmFseXNpczo6VGFiT3JPYmplY3QpIHsKKyAgICAgICAgICAg ICBRR2x5cGhMYXlvdXQgZ2x5cGhzID0gZW5nLT5zaGFwZWRHbHlwaHMoJnNpKTsKKy0gICAgICAg ICAgICBRRm9udEVuZ2luZSAqZmUgPSBmLmQtPmVuZ2luZUZvclNjcmlwdChzaS5hbmFseXNpcy5z Y3JpcHQpOworKyAgICAgICAgICAgIFFGb250RW5naW5lICpmZSA9IGVuZy0+Zm9udEVuZ2luZShz aSk7CisgICAgICAgICAgICAgUV9BU1NFUlQoZmUpOworICAgICAgICAgICAgIGZlLT5hZGRPdXRs aW5lVG9QYXRoKHgsIHksIGdseXBocywgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaS5hbmFseXNpcy5iaWRpTGV2ZWwgJSAyCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlwcGVyX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5n L3FwYXRoY2xpcHBlcl9wLmgKK2luZGV4IDk0NDRhODdiNzEuLjE4ZjY0YzVlOGMgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJfcC5oCisrKysgYi9xdGJh c2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJfcC5oCitAQCAtMTU2LDcgKzE1Niw3IEBA IHB1YmxpYzoKKyAgICAgaW50IHZlcnRleChEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdDsKKyAK KyBwcml2YXRlOgorLSAgICBpbnQgbV9uZXh0WzJdWzJdOworKyAgICBpbnQgbV9uZXh0WzJdWzJd ID0geyB7IC0xLCAtMSB9LCB7IC0xLCAtMSB9IH07CisgfTsKKyAKKyBjbGFzcyBRUGF0aFNlZ21l bnRzCitAQCAtMjk2LDEwICsyOTYsNiBAQCBpbmxpbmUgUVBhdGhFZGdlOjpRUGF0aEVkZ2UoaW50 IGEsIGludCBiKQorICAgICAsIGFuZ2xlKDApCisgICAgICwgaW52QW5nbGUoMCkKKyB7CistICAg IG1fbmV4dFswXVswXSA9IC0xOworLSAgICBtX25leHRbMV1bMF0gPSAtMTsKKy0gICAgbV9uZXh0 WzBdWzBdID0gLTE7CistICAgIG1fbmV4dFsxXVswXSA9IC0xOworIH0KKyAKKyBpbmxpbmUgaW50 IFFQYXRoRWRnZTo6bmV4dChUcmF2ZXJzYWwgdHJhdmVyc2FsLCBEaXJlY3Rpb24gZGlyZWN0aW9u KSBjb25zdAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYuY3BwIGIv cXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAKK2luZGV4IDMwNjY3NDRmMWIuLjJjOGQz YzNiNTMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGRmLmNwcAorKysr IGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAKK0BAIC0yNzYwLDYgKzI3NjAsOCBA QCBpbnQgUVBkZkVuZ2luZVByaXZhdGU6OmFkZEJydXNoUGF0dGVybihjb25zdCBRVHJhbnNmb3Jt ICZtLCBib29sICpzcGVjaWZ5Q29sb3IsCisgICAgICAgICByZXR1cm4gZ3JhZGllbnRCcnVzaChi cnVzaCwgbWF0cml4LCBnU3RhdGVPYmplY3QpOworICAgICB9CisgCisrICAgIG1hdHJpeCA9IGJy dXNoLnRyYW5zZm9ybSgpICogbWF0cml4OworKworICAgICBpZiAoKCFicnVzaC5pc09wYXF1ZSgp ICYmIGJydXNoLnN0eWxlKCkgPCBRdDo6TGluZWFyR3JhZGllbnRQYXR0ZXJuKSB8fCBvcGFjaXR5 ICE9IDEuMCkKKyAgICAgICAgICpnU3RhdGVPYmplY3QgPSBhZGRDb25zdGFudEFscGhhT2JqZWN0 KHFSb3VuZChicnVzaC5jb2xvcigpLmFscGhhKCkgKiBvcGFjaXR5KSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFSb3VuZChwZW4uY29sb3IoKS5hbHBo YSgpICogb3BhY2l0eSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fz dHJva2VyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FzdHJva2VyLmNwcAoraW5kZXgg Y2I1ZDM5NWU4MC4uM2I2MzU3YTg5MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50 aW5nL3FzdHJva2VyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9rZXIu Y3BwCitAQCAtMTE4Miw2ICsxMTgyLDcgQEAgdm9pZCBRRGFzaFN0cm9rZXI6OnByb2Nlc3NDdXJy ZW50U3VicGF0aCgpCisgICAgICAgICAvLyBDaGVjayBpZiB0aGUgZW50aXJlIGxpbmUgc2hvdWxk IGJlIGNsaXBwZWQgYXdheSBvciBzaW1wbGlmaWVkCisgICAgICAgICBib29sIGNsaXBJdCA9IGNs aXBwaW5nICYmICFsaW5lSW50ZXJzZWN0c1JlY3QocHJldiwgZSwgY2xpcF90bCwgY2xpcF9icik7 CisgICAgICAgICBib29sIHNraXBEYXNoaW5nID0gZWxlbiAqIGludlN1bUxlbmd0aCA+IHJlcGV0 aXRpb25MaW1pdCgpOworKyAgICAgICAgaW50IG1heERhc2hlcyA9IGRhc2hDb3VudDsKKyAgICAg ICAgIGlmIChza2lwRGFzaGluZyB8fCBjbGlwSXQpIHsKKyAgICAgICAgICAgICAvLyBDdXQgYXdh eSBmdWxsIGRhc2ggc2VxdWVuY2VzLgorICAgICAgICAgICAgIGVsZW4gLT0gc3RkOjpmbG9vcihl bGVuICogaW52U3VtTGVuZ3RoKSAqIHN1bUxlbmd0aDsKK0BAIC0xMTk2LDcgKzExOTcsNyBAQCB2 b2lkIFFEYXNoU3Ryb2tlcjo6cHJvY2Vzc0N1cnJlbnRTdWJwYXRoKCkKKyAgICAgICAgICAgICAg ICAgICAgIHBvcyA9IGVzdG9wOyAvLyBtb3ZlIHBvcyB0byBuZXh0IHBhdGggZWxlbWVudAorICAg ICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIH0gZWxzZSB7 IC8vIERhc2ggaXMgb24gdGhpcyBsaW5lCistICAgICAgICAgICAgICAgICAgICBwb3MgPSBkcG9z ICsgZXN0YXJ0OworKyAgICAgICAgICAgICAgICAgICAgcG9zID0gLS1tYXhEYXNoZXMgPiAwID8g ZHBvcyArIGVzdGFydCA6IGVzdG9wOworICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHBvcyA+ PSBlc3RvcDsKKyAgICAgICAgICAgICAgICAgICAgIGlmICgrK2lkYXNoID49IGRhc2hDb3VudCkK KyAgICAgICAgICAgICAgICAgICAgICAgICBpZGFzaCA9IDA7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9ndWkvcGFpbnRpbmcvcXRfYXR0cmlidXRpb24uanNvbiBiL3F0YmFzZS9zcmMvZ3VpL3Bh aW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24KK2luZGV4IDdiMTZlOGMyMTEuLjBlODdkMzBhYTIg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29u CisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29uCitAQCAt MTAsNyArMTAsNyBAQAorICAgICAgICAgIkhvbWVwYWdlIjogImh0dHA6Ly93d3cuZnJlZXR5cGUu b3JnIiwKKyAgICAgICAgICJMaWNlbnNlIjogIkZyZWV0eXBlIFByb2plY3QgTGljZW5zZSBvciBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mi4wIG9ubHkiLAorICAgICAgICAgIkxpY2Vuc2VJ ZCI6ICJGVEwgb3IgR1BMLTIuMCIsCistICAgICAgICAiTGljZW5zZUZpbGUiOiAiLi4vLi4vM3Jk cGFydHkvZnJlZXR5cGUvZG9jcy9MSUNFTlNFLlRYVCIsCisrICAgICAgICAiTGljZW5zZUZpbGUi OiAiLi4vLi4vM3JkcGFydHkvZnJlZXR5cGUvTElDRU5TRS5UWFQiLAorICAgICAgICAgIkNvcHly aWdodCI6ICJDb3B5cmlnaHQgMjAwMC0yMDE2IGJ5IERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhl bG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4iCisgICAgIH0sCisgICAgIHsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hh ZGVyX3BfcC5oCitpbmRleCBlYzlkMjU5NzFmLi40YTVhN2E2ZDUxIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9x c2hhZGVyX3BfcC5oCitAQCAtNjgsMTMgKzY4LDEzIEBAIHN0cnVjdCBRX0dVSV9FWFBPUlQgUVNo YWRlclByaXZhdGUKKyAgICAgeworICAgICB9CisgCistICAgIFFTaGFkZXJQcml2YXRlKGNvbnN0 IFFTaGFkZXJQcml2YXRlICpvdGhlcikKKysgICAgUVNoYWRlclByaXZhdGUoY29uc3QgUVNoYWRl clByaXZhdGUgJm90aGVyKQorICAgICAgICAgOiByZWYoMSksCistICAgICAgICAgIHFzYlZlcnNp b24ob3RoZXItPnFzYlZlcnNpb24pLAorLSAgICAgICAgICBzdGFnZShvdGhlci0+c3RhZ2UpLAor LSAgICAgICAgICBkZXNjKG90aGVyLT5kZXNjKSwKKy0gICAgICAgICAgc2hhZGVycyhvdGhlci0+ c2hhZGVycyksCistICAgICAgICAgIGJpbmRpbmdzKG90aGVyLT5iaW5kaW5ncykKKysgICAgICAg ICAgcXNiVmVyc2lvbihvdGhlci5xc2JWZXJzaW9uKSwKKysgICAgICAgICAgc3RhZ2Uob3RoZXIu c3RhZ2UpLAorKyAgICAgICAgICBkZXNjKG90aGVyLmRlc2MpLAorKyAgICAgICAgICBzaGFkZXJz KG90aGVyLnNoYWRlcnMpLAorKyAgICAgICAgICBiaW5kaW5ncyhvdGhlci5iaW5kaW5ncykKKyAg ICAgeworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJk ZXNjcmlwdGlvbl9wX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyZGVzY3JpcHRpb25f cF9wLmgKK2luZGV4IGVjMmIwYjZiNGMuLjNkYTMzYThhMmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1 aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCitAQCAtNjMsMTYgKzYzLDE2IEBAIHN0cnVj dCBRX0dVSV9FWFBPUlQgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZQorICAgICAgICAgbG9jYWxT aXplWzBdID0gbG9jYWxTaXplWzFdID0gbG9jYWxTaXplWzJdID0gMDsKKyAgICAgfQorIAorLSAg ICBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlKGNvbnN0IFFTaGFkZXJEZXNjcmlwdGlvblByaXZh dGUgKm90aGVyKQorKyAgICBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlKGNvbnN0IFFTaGFkZXJE ZXNjcmlwdGlvblByaXZhdGUgJm90aGVyKQorICAgICAgICAgOiByZWYoMSksCistICAgICAgICAg IGluVmFycyhvdGhlci0+aW5WYXJzKSwKKy0gICAgICAgICAgb3V0VmFycyhvdGhlci0+b3V0VmFy cyksCistICAgICAgICAgIHVuaWZvcm1CbG9ja3Mob3RoZXItPnVuaWZvcm1CbG9ja3MpLAorLSAg ICAgICAgICBwdXNoQ29uc3RhbnRCbG9ja3Mob3RoZXItPnB1c2hDb25zdGFudEJsb2NrcyksCist ICAgICAgICAgIHN0b3JhZ2VCbG9ja3Mob3RoZXItPnN0b3JhZ2VCbG9ja3MpLAorLSAgICAgICAg ICBjb21iaW5lZEltYWdlU2FtcGxlcnMob3RoZXItPmNvbWJpbmVkSW1hZ2VTYW1wbGVycyksCist ICAgICAgICAgIHN0b3JhZ2VJbWFnZXMob3RoZXItPnN0b3JhZ2VJbWFnZXMpLAorLSAgICAgICAg ICBsb2NhbFNpemUob3RoZXItPmxvY2FsU2l6ZSkKKysgICAgICAgICAgaW5WYXJzKG90aGVyLmlu VmFycyksCisrICAgICAgICAgIG91dFZhcnMob3RoZXIub3V0VmFycyksCisrICAgICAgICAgIHVu aWZvcm1CbG9ja3Mob3RoZXIudW5pZm9ybUJsb2NrcyksCisrICAgICAgICAgIHB1c2hDb25zdGFu dEJsb2NrcyhvdGhlci5wdXNoQ29uc3RhbnRCbG9ja3MpLAorKyAgICAgICAgICBzdG9yYWdlQmxv Y2tzKG90aGVyLnN0b3JhZ2VCbG9ja3MpLAorKyAgICAgICAgICBjb21iaW5lZEltYWdlU2FtcGxl cnMob3RoZXIuY29tYmluZWRJbWFnZVNhbXBsZXJzKSwKKysgICAgICAgICAgc3RvcmFnZUltYWdl cyhvdGhlci5zdG9yYWdlSW1hZ2VzKSwKKysgICAgICAgICAgbG9jYWxTaXplKG90aGVyLmxvY2Fs U2l6ZSkKKyAgICAgeworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdGV4 dC9xZm9udGRhdGFiYXNlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS5j cHAKK2luZGV4IGE2NTdhOGM1MTYuLjRmYzAxMDA5NTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3Fm b250ZGF0YWJhc2UuY3BwCitAQCAtOTgzLDcgKzk4Myw3IEBAIFFGb250RW5naW5lICpsb2FkU2lu Z2xlRW5naW5lKGludCBzY3JpcHQsCisgICAgICAgICBpZiAoc3R5bGUtPmtleS5zdHJldGNoICE9 IDAgJiYgcmVxdWVzdC5zdHJldGNoICE9IDAKKyAgICAgICAgICAgICAmJiAocmVxdWVzdC5zdHls ZU5hbWUuaXNFbXB0eSgpIHx8IHJlcXVlc3Quc3R5bGVOYW1lICE9IHN0eWxlLT5zdHlsZU5hbWUp KSB7CisgICAgICAgICAgICAgZGVmLnN0cmV0Y2ggPSAocmVxdWVzdC5zdHJldGNoICogMTAwICsg c3R5bGUtPmtleS5zdHJldGNoIC8gMikgLyBzdHlsZS0+a2V5LnN0cmV0Y2g7CistICAgICAgICB9 IGVsc2UgeworKyAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnN0cmV0Y2ggPT0gUUZvbnQ6OkFu eVN0cmV0Y2gpIHsKKyAgICAgICAgICAgICBkZWYuc3RyZXRjaCA9IDEwMDsKKyAgICAgICAgIH0K KyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQu Y3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRvY3VtZW50bGF5b3V0LmNwcAoraW5kZXgg ZjNlNmVhMjEwMC4uNzIyNjdlOTM4MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3RleHQv cXRleHRkb2N1bWVudGxheW91dC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRk b2N1bWVudGxheW91dC5jcHAKK0BAIC0yMTIzLDcgKzIxMjMsNyBAQCB2b2lkIFFUZXh0RG9jdW1l bnRMYXlvdXRQcml2YXRlOjpkcmF3TGlzdEl0ZW0oY29uc3QgUVBvaW50RiAmb2Zmc2V0LCBRUGFp bnRlciAqcAorIHsKKyAgICAgUV9RKGNvbnN0IFFUZXh0RG9jdW1lbnRMYXlvdXQpOworICAgICBj b25zdCBRVGV4dEJsb2NrRm9ybWF0IGJsb2NrRm9ybWF0ID0gYmwuYmxvY2tGb3JtYXQoKTsKKy0g ICAgY29uc3QgUVRleHRDaGFyRm9ybWF0IGNoYXJGb3JtYXQgPSBRVGV4dEN1cnNvcihibCkuY2hh ckZvcm1hdCgpOworKyAgICBjb25zdCBRVGV4dENoYXJGb3JtYXQgY2hhckZvcm1hdCA9IGJsLmNo YXJGb3JtYXQoKTsKKyAgICAgUUZvbnQgZm9udChjaGFyRm9ybWF0LmZvbnQoKSk7CisgICAgIGlm IChxLT5wYWludERldmljZSgpKQorICAgICAgICAgZm9udCA9IFFGb250KGZvbnQsIHEtPnBhaW50 RGV2aWNlKCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRlbmdpbmUu Y3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAKK2luZGV4IGNlNGFiYWM0 NzIuLmE2YzY2ZTVkMmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZW5n aW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAKK0BAIC0x LDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMp IDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQg Q29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLwor ICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0R3VpIG1vZHVsZSBvZiB0aGUgUXQg VG9vbGtpdC4KK0BAIC0xNTY1LDYgKzE1NjUsMTIgQEAgdm9pZCBRVGV4dEVuZ2luZTo6c2hhcGVU ZXh0KGludCBpdGVtKSBjb25zdAorICAgICAgICAgLy8gT3ZlcndyaXRlIHdpdGggMCB0b2tlbiB0 byBpbmRpY2F0ZSBmYWlsdXJlCisgICAgICAgICBRR2x5cGhMYXlvdXQgZyA9IGF2YWlsYWJsZUds eXBocygmc2kpOworICAgICAgICAgZy5nbHlwaHNbMF0gPSAwOworKyAgICAgICAgZy5hdHRyaWJ1 dGVzWzBdLmNsdXN0ZXJTdGFydCA9IHRydWU7CisrCisrICAgICAgICB1c2hvcnQgKmxvZ19jbHVz dGVycyA9IGxvZ0NsdXN0ZXJzKCZzaSk7CisrICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGl0 ZW1MZW5ndGg7ICsraSkKKysgICAgICAgICAgICBsb2dfY2x1c3RlcnNbaV0gPSAwOworKworICAg ICAgICAgcmV0dXJuOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdXRp bC9xZGVza3RvcHNlcnZpY2VzLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcWRlc2t0b3BzZXJ2 aWNlcy5jcHAKK2luZGV4IGZiYjYzYTk0MDguLjRkNWZhZmFhYTcgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1 aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCitAQCAtNTQsNiArNTQsOCBAQAorICNpbmNsdWRl IDxxcGEvcXBsYXRmb3JtaW50ZWdyYXRpb24uaD4KKyAjaW5jbHVkZSA8cWRpci5oPgorIAorKyNp bmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xbG9ja2luZ19wLmg+CisrCisgUVRfQkVHSU5fTkFNRVNQ QUNFCisgCisgY2xhc3MgUU9wZW5VcmxIYW5kbGVyUmVnaXN0cnkgOiBwdWJsaWMgUU9iamVjdAor QEAgLTgxLDYgKzgzLDcgQEAgUV9HTE9CQUxfU1RBVElDKFFPcGVuVXJsSGFuZGxlclJlZ2lzdHJ5 LCBoYW5kbGVyUmVnaXN0cnkpCisgCisgdm9pZCBRT3BlblVybEhhbmRsZXJSZWdpc3RyeTo6aGFu ZGxlckRlc3Ryb3llZChRT2JqZWN0ICpoYW5kbGVyKQorIHsKKysgICAgY29uc3QgYXV0byBsb2Nr ID0gcXRfc2NvcGVkX2xvY2sobXV0ZXgpOworICAgICBIYW5kbGVySGFzaDo6SXRlcmF0b3IgaXQg PSBoYW5kbGVycy5iZWdpbigpOworICAgICB3aGlsZSAoaXQgIT0gaGFuZGxlcnMuZW5kKCkpIHsK KyAgICAgICAgIGlmIChpdC0+cmVjZWl2ZXIgPT0gaGFuZGxlcikgeworQEAgLTI5NCw3ICsyOTcs OCBAQCB2b2lkIFFEZXNrdG9wU2VydmljZXM6OnNldFVybEhhbmRsZXIoY29uc3QgUVN0cmluZyAm c2NoZW1lLCBRT2JqZWN0ICpyZWNlaXZlciwgYworICAgICBoLm5hbWUgPSBtZXRob2Q7CisgICAg IHJlZ2lzdHJ5LT5oYW5kbGVycy5pbnNlcnQoc2NoZW1lLnRvTG93ZXIoKSwgaCk7CisgICAgIFFP YmplY3Q6OmNvbm5lY3QocmVjZWl2ZXIsIFNJR05BTChkZXN0cm95ZWQoUU9iamVjdCopKSwKKy0g ICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgU0xPVChoYW5kbGVyRGVzdHJveWVkKFFPYmpl Y3QqKSkpOworKyAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LCBTTE9UKGhhbmRsZXJEZXN0 cm95ZWQoUU9iamVjdCopKSwKKysgICAgICAgICAgICAgICAgICAgICBRdDo6RGlyZWN0Q29ubmVj dGlvbik7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcXBr bWhhbmRsZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5jcHAKK2luZGV4 IGUwYzNiNzVlZmUuLjM0MTRmOWQ4YmEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS91dGls L3Fwa21oYW5kbGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5j cHAKK0BAIC01Nyw3ICs1Nyw3IEBAIHN0cnVjdCBQa21UeXBlCisgICAgIHF1aW50MzIgYnl0ZXNQ ZXJCbG9jazsKKyB9OworIAorLXN0YXRpYyBQa21UeXBlIHR5cGVNYXBbNV0gPSB7Cisrc3RhdGlj IGNvbnN0ZXhwciBQa21UeXBlIHR5cGVNYXBbNV0gPSB7CisgICAgIHsgMHg4RDY0LCAgOCB9LCAg IC8vIEdMX0VUQzFfUkdCOF9PRVMKKyAgICAgeyAweDkyNzQsICA4IH0sICAgLy8gR0xfQ09NUFJF U1NFRF9SR0I4X0VUQzIKKyAgICAgeyAwLCAwIH0sICAgICAgICAgLy8gdW51c2VkIChvYnNvbGV0 ZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlm aWxlaW1wbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlmaWxl aW1wbC5jcHAKK2luZGV4IGI2YmU5MzE0N2EuLjZlNjliNGM0ZDMgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlmaWxlaW1wbC5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNwcAorQEAgLTg5 LDkgKzg5LDEwIEBAIFFOZXR3b3JrUmVwbHlGaWxlSW1wbDo6UU5ldHdvcmtSZXBseUZpbGVJbXBs KFFOZXR3b3JrQWNjZXNzTWFuYWdlciAqbWFuYWdlciwgY29uCisgICAgICAgICAvLyB3ZSBoYW5k bGUgb25seSBsb2NhbCBmaWxlcworICAgICAgICAgUVN0cmluZyBtc2cgPSBRQ29yZUFwcGxpY2F0 aW9uOjp0cmFuc2xhdGUoIlFOZXR3b3JrQWNjZXNzRmlsZUJhY2tlbmQiLCAiUmVxdWVzdCBmb3Ig b3BlbmluZyBub24tbG9jYWwgZmlsZSAlMSIpLmFyZyh1cmwudG9TdHJpbmcoKSk7CisgICAgICAg ICBzZXRFcnJvcihRTmV0d29ya1JlcGx5OjpQcm90b2NvbEludmFsaWRPcGVyYXRpb25FcnJvciwg bXNnKTsKKysgICAgICAgIHNldEZpbmlzaGVkKHRydWUpOyAvLyBXZSdyZSBmaW5pc2hlZCwgd2ls bCBlbWl0IGZpbmlzaGVkKCkgYWZ0ZXIgY3RvciBpcyBkb25lLgorICAgICAgICAgUU1ldGFPYmpl Y3Q6Omludm9rZU1ldGhvZCh0aGlzLCAiZXJyb3JPY2N1cnJlZCIsIFF0OjpRdWV1ZWRDb25uZWN0 aW9uLAorICAgICAgICAgICAgIFFfQVJHKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvciwgUU5l dHdvcmtSZXBseTo6UHJvdG9jb2xJbnZhbGlkT3BlcmF0aW9uRXJyb3IpKTsKKy0gICAgICAgIGZp bGVPcGVuRmluaXNoZWQoZmFsc2UpOworKyAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhv ZCh0aGlzLCBbdGhpc10oKXsgZmlsZU9wZW5GaW5pc2hlZChmYWxzZSk7IH0sIFF0OjpRdWV1ZWRD b25uZWN0aW9uKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorICNlbmRpZgorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWltcGwuY3BwIGIvcXRi YXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAKK2luZGV4IGJjZGY2 ZWUyZjEuLjNiNmRlYjgyYmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNz L3FuZXR3b3JrcmVwbHlpbXBsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9x bmV0d29ya3JlcGx5aW1wbC5jcHAKK0BAIC02ODAsNyArNjgwLDcgQEAgdm9pZCBRTmV0d29ya1Jl cGx5SW1wbFByaXZhdGU6OmFwcGVuZERvd25zdHJlYW1EYXRhKFFJT0RldmljZSAqZGF0YSkKKyAg ICAgLy8gcmVhZCB1bnRpbCBFT0YgZnJvbSBkYXRhCisgICAgIGlmIChRX1VOTElLRUxZKGNvcHlE ZXZpY2UpKSB7CisgICAgICAgICBxQ3JpdGljYWwoIlFOZXR3b3JrUmVwbHlJbXBsOiBjb3B5IGZy b20gUUlPRGV2aWNlIGFscmVhZHkgaW4gcHJvZ3Jlc3MgLS0gIgorLSAgICAgICAgICAgICAgICAg ICJiYWNrZW5kIHByb2JseSBuZWVkcyB0byBiZSBmaXhlZCIpOworKyAgICAgICAgICAgICAgICAg ICJiYWNrZW5kIHByb2JhYmx5IG5lZWRzIHRvIGJlIGZpeGVkIik7CisgICAgICAgICByZXR1cm47 CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3FhdXRo ZW50aWNhdG9yLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3Iu Y3BwCitpbmRleCBkOWZlN2JjNDdiLi5jY2QwNGIyOTRhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0 d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3BwCitAQCAtNTAsNiArNTAsNyBAQAorICNpbmNs dWRlIDxxc3RyaW5nLmg+CisgI2luY2x1ZGUgPHFkYXRldGltZS5oPgorICNpbmNsdWRlIDxxcmFu ZG9tLmg+CisrI2luY2x1ZGUgInByaXZhdGUvcXN5c3RlbWxpYnJhcnlfcC5oIgorIAorICNpZmRl ZiBRX09TX1dJTgorICNpbmNsdWRlIDxxbXV0ZXguaD4KK0BAIC0xNTYzLDcgKzE1NjQsNyBAQCBz dGF0aWMgYm9vbCBxX1NTUElfbGlicmFyeV9sb2FkKCkKKyAKKyAgICAgLy8gSW5pdGlhbGl6ZSBz ZWN1cml0eSBpbnRlcmZhY2UKKyAgICAgaWYgKHBTZWN1cml0eUZ1bmN0aW9uVGFibGUgPT0gbnVs bHB0cikgeworLSAgICAgICAgc2VjdXJpdHlETExIYW5kbGUgPSBMb2FkTGlicmFyeShMInNlY3Vy MzIuZGxsIik7CisrICAgICAgICBzZWN1cml0eURMTEhhbmRsZSA9IFFTeXN0ZW1MaWJyYXJ5Ojps b2FkKEwic2VjdXIzMiIpOworICAgICAgICAgaWYgKHNlY3VyaXR5RExMSGFuZGxlICE9IG51bGxw dHIpIHsKKyAgICAgICAgICAgICBJTklUX1NFQ1VSSVRZX0lOVEVSRkFDRSBwSW5pdFNlY3VyaXR5 SW50ZXJmYWNlID0KKyAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxJTklUX1NFQ1VS SVRZX0lOVEVSRkFDRT4oCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9x aG9zdGluZm9fdW5peC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191 bml4LmNwcAoraW5kZXggOWIwYTJlZTY2OS4uNzM2NzljOWVmMSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3Jj L25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191bml4LmNwcAorQEAgLTEyMiw3ICsxMjIsNiBAQCBz dGF0aWMgUUZ1bmN0aW9uUG9pbnRlciByZXNvbHZlU3ltYm9sKFFMaWJyYXJ5ICZsaWIsIGNvbnN0 IGNoYXIgKnN5bSkKKyAKKyBMaWJSZXNvbHY6OkxpYlJlc29sdigpCisgeworLSAgICBRTGlicmFy eSBsaWI7CisgI2lmZGVmIExJQlJFU09MVl9TTworICAgICBsaWIuc2V0RmlsZU5hbWUoUVN0cmlu Z0xpdGVyYWwoTElCUkVTT0xWX1NPKSk7CisgICAgIGlmICghbGliLmxvYWQoKSkKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3BwIGIv cXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29ja3M1c29ja2V0ZW5naW5lLmNwcAoraW5kZXgg M2EwNDZmZDExNi4uOTdmYWRjYTBiMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9z b2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9z b2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAKK0BAIC0xMjk2LDcgKzEyOTYsNyBAQCB2b2lk IFFTb2NrczVTb2NrZXRFbmdpbmVQcml2YXRlOjpfcV91ZHBTb2NrZXRSZWFkTm90aWZpY2F0aW9u KCkKKyAgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICAgY29uc3QgY2hhciAqYnVmID0gaW5C dWYuY29uc3REYXRhKCk7CisgICAgICAgICBpZiAoaW5CdWYuc2l6ZSgpIDwgNCkgeworLSAgICAg ICAgICAgIFFTT0NLUzVfRF9ERUJVRyA8PCAiYnVndXMgdWRwIGRhdGEsIGRpc2NhcmRpbmciOwor KyAgICAgICAgICAgIFFTT0NLUzVfRF9ERUJVRyA8PCAiYm9ndXMgdWRwIGRhdGEsIGRpc2NhcmRp bmciOworICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KKyAgICAgICAgIFFTb2NrczVS ZXZpdmVkRGF0YWdyYW0gZGF0YWdyYW07CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3Jr L3NzbC9xc3NsY29udGV4dF9vcGVuc3NsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNz bGNvbnRleHRfb3BlbnNzbC5jcHAKK2luZGV4IGM5ZjIwMmY1NzMuLmM5OTJkYTlkOGUgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwCisr KysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwCitAQCAt NDA5LDcgKzQwOSw3IEBAIGluaXRfY29udGV4dDoKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNl IFFTc2w6OkR0bHNWMV8wT3JMYXRlcjoKKyAgICAgICAgIG1pblZlcnNpb24gPSBEVExTMV9WRVJT SU9OOworLSAgICAgICAgbWF4VmVyc2lvbiA9IERUTFNfTUFYX1ZFUlNJT047CisrICAgICAgICBt YXhWZXJzaW9uID0gMDsKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIFFTc2w6OkR0bHNWMV8y OgorICAgICAgICAgbWluVmVyc2lvbiA9IERUTFMxXzJfVkVSU0lPTjsKK0BAIC00MTcsNyArNDE3 LDcgQEAgaW5pdF9jb250ZXh0OgorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUVNzbDo6RHRs c1YxXzJPckxhdGVyOgorICAgICAgICAgbWluVmVyc2lvbiA9IERUTFMxXzJfVkVSU0lPTjsKKy0g ICAgICAgIG1heFZlcnNpb24gPSBEVExTX01BWF9WRVJTSU9OOworKyAgICAgICAgbWF4VmVyc2lv biA9IDA7CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpUbHNWMV8zT3JMYXRlcjoK KyAjaWZkZWYgVExTMV8zX1ZFUlNJT04KK0BAIC00NTUsNyArNDU1LDcgQEAgaW5pdF9jb250ZXh0 OgorICAgICB9CisgCisgICAgIC8vIEVuYWJsZSBidWcgd29ya2Fyb3VuZHMuCistICAgIGxvbmcg b3B0aW9ucyA9IFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVuU3NsT3B0aW9ucyhj b25maWd1cmF0aW9uLnByb3RvY29sKCksIGNvbmZpZ3VyYXRpb24uZC0+c3NsT3B0aW9ucyk7Cisr ICAgIHFzc2xvcHRpb25zIG9wdGlvbnMgPSBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OnNldHVw T3BlblNzbE9wdGlvbnMoY29uZmlndXJhdGlvbi5wcm90b2NvbCgpLCBjb25maWd1cmF0aW9uLmQt PnNzbE9wdGlvbnMpOworICAgICBxX1NTTF9DVFhfc2V0X29wdGlvbnMoc3NsQ29udGV4dC0+Y3R4 LCBvcHRpb25zKTsKKyAKKyAgICAgLy8gVGVsbCBPcGVuU1NMIHRvIHJlbGVhc2UgbWVtb3J5IGVh cmx5CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1h bnBhcmFtZXRlcnNfb3BlbnNzbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xkaWZm aWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAoraW5kZXggYWFmODc0MTEzMC4uYjU4OTM1 MzcyYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGRpZmZpZWhlbGxt YW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fz c2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAorQEAgLTU5LDU3ICs1OSw2IEBA CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCistI2lmZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRF RF8zXzAKKy0KKy1zdGF0aWMgaW50IHFfREhfY2hlY2soREggKmRoLCBpbnQgKnN0YXR1cykKKy17 CistICAgIC8vIERIX2NoZWNrIHdhcyBmaXJzdCBkZXByZWNhdGVkIGluIE9wZW5TU0wgMy4wLjAs IGFzIGxvdy1sZXZlbAorLSAgICAvLyBBUEk7IHRoZSBFVlBfUEtFWSBmYW1pbHkgb2YgZnVuY3Rp b25zIHdhcyBhZHZpc2VkIGFzIGFuIGFsdGVybmF0aXZlLgorLSAgICAvLyBBcyBvZiBub3cgRVZQ X1BLRVlfcGFyYW1zX2NoZWNrIGVuZHMgdXAgY2FsbGluZyAuLi4gREhfY2hlY2ssCistICAgIC8v IHdoaWNoIGlzIGdvb2QgZW5vdWdoLgorLQorLSAgICBRX0FTU0VSVChkaCk7CistICAgIFFfQVNT RVJUKHN0YXR1cyk7CistCistICAgIEVWUF9QS0VZICprZXkgPSBxX0VWUF9QS0VZX25ldygpOwor LSAgICBpZiAoIWtleSkgeworLSAgICAgICAgcUNXYXJuaW5nKGxjU3NsLCAiRVZQX1BLRVlfbmV3 IGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpsb2dBbmRDbGVh ckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9CistICAgIGNvbnN0IGF1 dG8ga2V5RGVsZXRlciA9IHFTY29wZUd1YXJkKFtrZXldKCl7CistICAgICAgICBxX0VWUF9QS0VZ X2ZyZWUoa2V5KTsKKy0gICAgfSk7CistICAgIGlmICghcV9FVlBfUEtFWV9zZXQxX0RIKGtleSwg ZGgpKSB7CistICAgICAgICBxQ1dhcm5pbmcobGNTc2wsICJFVlBfUEtFWV9zZXQxX0RIIGZhaWxl ZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpsb2dBbmRDbGVhckVycm9y UXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9CistCistICAgIEVWUF9QS0VZX0NU WCAqa2V5Q3R4ID0gcV9FVlBfUEtFWV9DVFhfbmV3KGtleSwgbnVsbHB0cik7CistICAgIGlmICgh a2V5Q3R4KSB7CistICAgICAgICBxQ1dhcm5pbmcobGNTc2wsICJFVlBfUEtFWV9DVFhfbmV3IGZh aWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpsb2dBbmRDbGVhckVy cm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9CistICAgIGNvbnN0IGF1dG8g Y3R4RGVsZXRlciA9IHFTY29wZUd1YXJkKFtrZXlDdHhdeworLSAgICAgICAgcV9FVlBfUEtFWV9D VFhfZnJlZShrZXlDdHgpOworLSAgICB9KTsKKy0KKy0gICAgY29uc3QgaW50IHJlc3VsdCA9IHFf RVZQX1BLRVlfcGFyYW1fY2hlY2soa2V5Q3R4KTsKKy0gICAgUVNzbFNvY2tldEJhY2tlbmRQcml2 YXRlOjpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgLy8gTm90ZTogdW5saWtlIERIX2No ZWNrLCB3ZSBjYW5ub3Qgb2J0YWluIHRoZSAnc3RhdHVzJywKKy0gICAgLy8gaWYgdGhlICdyZXN1 bHQnIGlzIDAgKGFjdHVhbGx5IHRoZSByZXN1bHQgaXMgMSBvbmx5CistICAgIC8vIGlmIHRoaXMg J3N0YXR1cycgd2FzIDApLiBXZSBjb3VsZCBwcm9iYWJseSBjaGVjayB0aGUKKy0gICAgLy8gZXJy b3JzIGZyb20gdGhlIGVycm9yIHF1ZXVlLCBidXQgaXQncyBub3QgbmVlZGVkIGFueXdheQorLSAg ICAvLyAtIHNlZSB0aGUgJ2lzU2FmZURIJyBiZWxvdywgaG93IGl0IHJldHVybnMgaW1tZWRpYXRl bHkKKy0gICAgLy8gb24gMC4KKy0gICAgUV9VTlVTRUQoc3RhdHVzKQorLQorLSAgICByZXR1cm4g cmVzdWx0OworLX0KKy0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorLQorIHN0 YXRpYyBib29sIGlzU2FmZURIKERIICpkaCkKKyB7CisgICAgIGludCBzdGF0dXMgPSAwOworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcCBi L3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcAoraW5kZXggMzdm YWQyYTY4Zi4uOGY2ODU4Yzg2NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wv cXNzbHNvY2tldF9vcGVuc3NsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Ns c29ja2V0X29wZW5zc2wuY3BwCitAQCAtNTUwLDkgKzU1MCw5IEBAIHN0YXRpYyB2b2lkIHFfbG9h ZENpcGhlcnNGb3JDb25uZWN0aW9uKFNTTCAqY29ubmVjdGlvbiwgUUxpc3Q8UVNzbENpcGhlcj4g JmNpcGhlCisgLy8gRGVmaW5lZCBpbiBxc3Nsc29ja2V0LmNwcAorIHZvaWQgcV9zZXREZWZhdWx0 RHRsc0NpcGhlcnMoY29uc3QgUUxpc3Q8UVNzbENpcGhlcj4gJmNpcGhlcnMpOworIAorLWxvbmcg UVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFBy b3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25zIHNzbE9wdGlvbnMpCisrcXNzbG9wdGlv bnMgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNz bFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25zIHNzbE9wdGlvbnMpCisgeworLSAg ICBsb25nIG9wdGlvbnM7CisrICAgIHFzc2xvcHRpb25zIG9wdGlvbnM7CisgICAgIGlmIChwcm90 b2NvbCA9PSBRU3NsOjpUbHNWMVNzbFYzKQorICAgICAgICAgb3B0aW9ucyA9IFNTTF9PUF9BTEx8 U1NMX09QX05PX1NTTHYyfFNTTF9PUF9OT19TU0x2MzsKKyAgICAgZWxzZSBpZiAocHJvdG9jb2wg PT0gUVNzbDo6U2VjdXJlUHJvdG9jb2xzKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29y ay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNz bHNvY2tldF9vcGVuc3NsX3AuaAoraW5kZXggNDEwM2RlMjNlOC4uNTU0NzU4OTI1NiAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaAorKysr IGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfcC5oCitAQCAtMTA3 LDYgKzEwNywxMiBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorKyNpZiBkZWZpbmVkKE9Q RU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKyt0eXBl ZGVmIHVpbnQ2NF90IHFzc2xvcHRpb25zOworKyNlbHNlCisrdHlwZWRlZiB1bnNpZ25lZCBsb25n IHFzc2xvcHRpb25zOworKyNlbmRpZgorKworIHN0cnVjdCBRU3NsRXJyb3JFbnRyeSB7CisgICAg IGludCBjb2RlOworICAgICBpbnQgZGVwdGg7CitAQCAtMTcxLDcgKzE3Nyw3IEBAIHB1YmxpYzoK KyAgICAgUVZlY3RvcjxRU3NsRXJyb3I+IG9jc3BFcnJvcnM7CisgICAgIFFCeXRlQXJyYXkgb2Nz cFJlc3BvbnNlRGVyOworIAorLSAgICBRX0FVVE9URVNUX0VYUE9SVCBzdGF0aWMgbG9uZyBzZXR1 cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRp b25zIHNzbE9wdGlvbnMpOworKyAgICBRX0FVVE9URVNUX0VYUE9SVCBzdGF0aWMgcXNzbG9wdGlv bnMgc2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6 U3NsT3B0aW9ucyBzc2xPcHRpb25zKTsKKyAgICAgc3RhdGljIFFTc2xDaXBoZXIgUVNzbENpcGhl cl9mcm9tX1NTTF9DSVBIRVIoY29uc3QgU1NMX0NJUEhFUiAqY2lwaGVyKTsKKyAgICAgc3RhdGlj IFFMaXN0PFFTc2xDZXJ0aWZpY2F0ZT4gU1RBQ0tPRlg1MDlfdG9fUVNzbENlcnRpZmljYXRlcyhT VEFDS19PRihYNTA5KSAqeDUwOSk7CisgICAgIHN0YXRpYyBRTGlzdDxRU3NsRXJyb3I+IHZlcmlm eShjb25zdCBRTGlzdDxRU3NsQ2VydGlmaWNhdGU+ICZjZXJ0aWZpY2F0ZUNoYWluLCBjb25zdCBR U3RyaW5nICZob3N0TmFtZSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9x c3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fz c2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAoraW5kZXggZTUzZmIyNzlmMC4uNDU5Y2NkMGIx OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3Ns X3N5bWJvbHMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3Bl bnNzbF9zeW1ib2xzLmNwcAorQEAgLTE0OCw3ICsxNDgsNiBAQCBERUZJTkVGVU5DKGludCwgRVZQ X1BLRVlfdXBfcmVmLCBFVlBfUEtFWSAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVG VU5DMihFVlBfUEtFWV9DVFggKiwgRVZQX1BLRVlfQ1RYX25ldywgRVZQX1BLRVkgKnBrZXksIHBr ZXksIEVOR0lORSAqZSwgZSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DKGlu dCwgRVZQX1BLRVlfcGFyYW1fY2hlY2ssIEVWUF9QS0VZX0NUWCAqY3R4LCBjdHgsIHJldHVybiAw LCByZXR1cm4pCisgREVGSU5FRlVOQyh2b2lkLCBFVlBfUEtFWV9DVFhfZnJlZSwgRVZQX1BLRVlf Q1RYICpjdHgsIGN0eCwgcmV0dXJuLCByZXR1cm4pCistREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZ X2Jhc2VfaWQsIEVWUF9QS0VZICphLCBhLCByZXR1cm4gTklEX3VuZGVmLCByZXR1cm4pCisgREVG SU5FRlVOQyhpbnQsIFJTQV9iaXRzLCBSU0EgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCisgREVG SU5FRlVOQyhpbnQsIERTQV9iaXRzLCBEU0EgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCisgREVG SU5FRlVOQyhpbnQsIE9QRU5TU0xfc2tfbnVtLCBPUEVOU1NMX1NUQUNLICphLCBhLCByZXR1cm4g LTEsIHJldHVybikKK0BAIC0xNTgsNyArMTU3LDcgQEAgREVGSU5FRlVOQzIodm9pZCwgT1BFTlNT TF9za19wdXNoLCBPUEVOU1NMX1NUQUNLICphLCBhLCB2b2lkICpiLCBiLCByZXR1cm4sIERVTU0K KyBERUZJTkVGVU5DKHZvaWQsIE9QRU5TU0xfc2tfZnJlZSwgT1BFTlNTTF9TVEFDSyAqYSwgYSwg cmV0dXJuLCBEVU1NWUFSRykKKyBERUZJTkVGVU5DMih2b2lkICosIE9QRU5TU0xfc2tfdmFsdWUs IE9QRU5TU0xfU1RBQ0sgKmEsIGEsIGludCBiLCBiLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQor IERFRklORUZVTkMoaW50LCBTU0xfc2Vzc2lvbl9yZXVzZWQsIFNTTCAqYSwgYSwgcmV0dXJuIDAs IHJldHVybikKKy1ERUZJTkVGVU5DMih1bnNpZ25lZCBsb25nLCBTU0xfQ1RYX3NldF9vcHRpb25z LCBTU0xfQ1RYICpjdHgsIGN0eCwgdW5zaWduZWQgbG9uZyBvcCwgb3AsIHJldHVybiAwLCByZXR1 cm4pCisrREVGSU5FRlVOQzIocXNzbG9wdGlvbnMsIFNTTF9DVFhfc2V0X29wdGlvbnMsIFNTTF9D VFggKmN0eCwgY3R4LCBxc3Nsb3B0aW9ucyBvcCwgb3AsIHJldHVybiAwLCByZXR1cm4pCisgREVG SU5FRlVOQyhpbnQsIFNTTF9DVFhfZ2V0X3NlY3VyaXR5X2xldmVsLCBjb25zdCBTU0xfQ1RYICpj dHgsIGN0eCwgcmV0dXJuIC0xLCByZXR1cm4pCisgREVGSU5FRlVOQzIodm9pZCwgU1NMX0NUWF9z ZXRfc2VjdXJpdHlfbGV2ZWwsIFNTTF9DVFggKmN0eCwgY3R4LCBpbnQgbGV2ZWwsIGxldmVsLCBy ZXR1cm4sIHJldHVybikKKyAjaWZkZWYgVExTMV8zX1ZFUlNJT04KK0BAIC0zNzEsNyArMzcwLDE1 IEBAIERFRklORUZVTkMoY29uc3QgU1NMX0NJUEhFUiAqLCBTU0xfZ2V0X2N1cnJlbnRfY2lwaGVy LCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyCisgREVGSU5FRlVOQyhpbnQsIFNTTF92ZXJzaW9u LCBjb25zdCBTU0wgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQzIoaW50LCBT U0xfZ2V0X2Vycm9yLCBTU0wgKmEsIGEsIGludCBiLCBiLCByZXR1cm4gLTEsIHJldHVybikKKyBE RUZJTkVGVU5DKFNUQUNLX09GKFg1MDkpICosIFNTTF9nZXRfcGVlcl9jZXJ0X2NoYWluLCBTU0wg KmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisrCisrI2lmIGRlZmluZWQoT1BFTlNTTF9W RVJTSU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworK0RFRklORUZVTkMo WDUwOSAqLCBTU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlLCBTU0wgKmEsIGEsIHJldHVybiBudWxs cHRyLCByZXR1cm4pCisrREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX2dldF9iYXNlX2lkLCBjb25z dCBFVlBfUEtFWSAqcGtleSwgcGtleSwgcmV0dXJuIC0xLCByZXR1cm4pCisrI2Vsc2UKKyBERUZJ TkVGVU5DKFg1MDkgKiwgU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlLCBTU0wgKmEsIGEsIHJldHVy biBudWxscHRyLCByZXR1cm4pCisrREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX2Jhc2VfaWQsIEVW UF9QS0VZICphLCBhLCByZXR1cm4gTklEX3VuZGVmLCByZXR1cm4pCisrI2VuZGlmIC8vIE9QRU5T U0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrCisgREVGSU5FRlVOQyhsb25nLCBTU0xfZ2V0X3Zlcmlm eV9yZXN1bHQsIGNvbnN0IFNTTCAqYSwgYSwgcmV0dXJuIC0xLCByZXR1cm4pCisgREVGSU5FRlVO QyhTU0wgKiwgU1NMX25ldywgU1NMX0NUWCAqYSwgYSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikK KyBERUZJTkVGVU5DKFNTTF9DVFggKiwgU1NMX2dldF9TU0xfQ1RYLCBTU0wgKmEsIGEsIHJldHVy biBudWxscHRyLCByZXR1cm4pCitAQCAtNDkyLDkgKzQ5OSw3IEBAIERFRklORUZVTkMoREggKiwg REhfbmV3LCBEVU1NWUFSRywgRFVNTVlBUkcsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgREVG SU5FRlVOQyh2b2lkLCBESF9mcmVlLCBESCAqZGgsIGRoLCByZXR1cm4sIERVTU1ZQVJHKQorIERF RklORUZVTkMzKERIICosIGQyaV9ESHBhcmFtcywgREgqKmEsIGEsIGNvbnN0IHVuc2lnbmVkIGNo YXIgKipwcCwgcHAsIGxvbmcgbGVuZ3RoLCBsZW5ndGgsIHJldHVybiBudWxscHRyLCByZXR1cm4p CisgREVGSU5FRlVOQzIoaW50LCBpMmRfREhwYXJhbXMsIERIICphLCBhLCB1bnNpZ25lZCBjaGFy ICoqcCwgcCwgcmV0dXJuIC0xLCByZXR1cm4pCistI2lmbmRlZiBPUEVOU1NMX05PX0RFUFJFQ0FU RURfM18wCisgREVGSU5FRlVOQzIoaW50LCBESF9jaGVjaywgREggKmRoLCBkaCwgaW50ICpjb2Rl cywgY29kZXMsIHJldHVybiAwLCByZXR1cm4pCistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVD QVRFRF8zXzAKKyBERUZJTkVGVU5DMyhCSUdOVU0gKiwgQk5fYmluMmJuLCBjb25zdCB1bnNpZ25l ZCBjaGFyICpzLCBzLCBpbnQgbGVuLCBsZW4sIEJJR05VTSAqcmV0LCByZXQsIHJldHVybiBudWxs cHRyLCByZXR1cm4pCisgCisgI2lmbmRlZiBPUEVOU1NMX05PX0VDCitAQCAtODY4LDcgKzg3Myw2 IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJvbHMoKQorICAgICBSRVNPTFZFRlVOQyhFVlBf UEtFWV9DVFhfbmV3KQorICAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9wYXJhbV9jaGVjaykKKyAg ICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfQ1RYX2ZyZWUpCistICAgIFJFU09MVkVGVU5DKEVWUF9Q S0VZX2Jhc2VfaWQpCisgICAgIFJFU09MVkVGVU5DKFJTQV9iaXRzKQorICAgICBSRVNPTFZFRlVO QyhPUEVOU1NMX3NrX25ld19udWxsKQorICAgICBSRVNPTFZFRlVOQyhPUEVOU1NMX3NrX3B1c2gp CitAQCAtMTEwNyw3ICsxMTExLDE1IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJvbHMoKQor ICAgICBSRVNPTFZFRlVOQyhTU0xfdmVyc2lvbikKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9l cnJvcikKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9wZWVyX2NlcnRfY2hhaW4pCisrCisrI2lm IGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1Ig Pj0gMworKyAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlKQorKyAgICBS RVNPTFZFRlVOQyhFVlBfUEtFWV9nZXRfYmFzZV9pZCkKKysjZWxzZQorICAgICBSRVNPTFZFRlVO QyhTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUpCisrICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX2Jh c2VfaWQpCisrI2VuZGlmIC8vIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrCisgICAgIFJF U09MVkVGVU5DKFNTTF9nZXRfdmVyaWZ5X3Jlc3VsdCkKKyAgICAgUkVTT0xWRUZVTkMoU1NMX25l dykKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9TU0xfQ1RYKQorQEAgLTEyMDYsOSArMTIxOCw3 IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJvbHMoKQorICAgICBSRVNPTFZFRlVOQyhESF9m cmVlKQorICAgICBSRVNPTFZFRlVOQyhkMmlfREhwYXJhbXMpCisgICAgIFJFU09MVkVGVU5DKGky ZF9ESHBhcmFtcykKKy0jaWZuZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyAgICAgUkVT T0xWRUZVTkMoREhfY2hlY2spCistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAK KyAgICAgUkVTT0xWRUZVTkMoQk5fYmluMmJuKQorIAorICNpZm5kZWYgT1BFTlNTTF9OT19FQwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5 bWJvbHNfcC5oIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3lt Ym9sc19wLmgKK2luZGV4IDk1ZTg4OTdhM2IuLjI3YWVmZmExOGEgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaAorKysrIGIv cXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9sc19wLmgKK0BA IC0yMzcsNyArMjM3LDYgQEAgUV9BVVRPVEVTVF9FWFBPUlQgaW50IHFfRVZQX1BLRVlfdXBfcmVm KEVWUF9QS0VZICphKTsKKyBFVlBfUEtFWV9DVFggKnFfRVZQX1BLRVlfQ1RYX25ldyhFVlBfUEtF WSAqcGtleSwgRU5HSU5FICplKTsKKyB2b2lkIHFfRVZQX1BLRVlfQ1RYX2ZyZWUoRVZQX1BLRVlf Q1RYICpjdHgpOworIGludCBxX0VWUF9QS0VZX3BhcmFtX2NoZWNrKEVWUF9QS0VZX0NUWCAqY3R4 KTsKKy1pbnQgcV9FVlBfUEtFWV9iYXNlX2lkKEVWUF9QS0VZICphKTsKKyBpbnQgcV9SU0FfYml0 cyhSU0EgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JUIGludCBxX09QRU5TU0xfc2tfbnVtKE9QRU5T U0xfU1RBQ0sgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQgcV9PUEVOU1NMX3NrX3BvcF9m cmVlKE9QRU5TU0xfU1RBQ0sgKmEsIHZvaWQgKCpiKSh2b2lkICopKTsKK0BAIC0yNDYsNyArMjQ1 LDcgQEAgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCBxX09QRU5TU0xfc2tfcHVzaChPUEVOU1NMX1NU QUNLICpzdCwgdm9pZCAqZGF0YSk7CisgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCBxX09QRU5TU0xf c2tfZnJlZShPUEVOU1NMX1NUQUNLICphKTsKKyBRX0FVVE9URVNUX0VYUE9SVCB2b2lkICogcV9P UEVOU1NMX3NrX3ZhbHVlKE9QRU5TU0xfU1RBQ0sgKmEsIGludCBiKTsKKyBpbnQgcV9TU0xfc2Vz c2lvbl9yZXVzZWQoU1NMICphKTsKKy11bnNpZ25lZCBsb25nIHFfU1NMX0NUWF9zZXRfb3B0aW9u cyhTU0xfQ1RYICpjdHgsIHVuc2lnbmVkIGxvbmcgb3ApOworK3Fzc2xvcHRpb25zIHFfU1NMX0NU WF9zZXRfb3B0aW9ucyhTU0xfQ1RYICpjdHgsIHFzc2xvcHRpb25zIG9wKTsKKyBpbnQgcV9PUEVO U1NMX2luaXRfc3NsKHVpbnQ2NF90IG9wdHMsIGNvbnN0IE9QRU5TU0xfSU5JVF9TRVRUSU5HUyAq c2V0dGluZ3MpOworIHNpemVfdCBxX1NTTF9nZXRfY2xpZW50X3JhbmRvbShTU0wgKmEsIHVuc2ln bmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbik7Cisgc2l6ZV90IHFfU1NMX1NFU1NJT05fZ2V0 X21hc3Rlcl9rZXkoY29uc3QgU1NMX1NFU1NJT04gKnNlc3Npb24sIHVuc2lnbmVkIGNoYXIgKm91 dCwgc2l6ZV90IG91dGxlbik7CitAQCAtNTEwLDcgKzUwOSw2IEBAIGNvbnN0IFNTTF9DSVBIRVIg KnFfU1NMX2dldF9jdXJyZW50X2NpcGhlcihTU0wgKmEpOworIGludCBxX1NTTF92ZXJzaW9uKGNv bnN0IFNTTCAqYSk7CisgaW50IHFfU1NMX2dldF9lcnJvcihTU0wgKmEsIGludCBiKTsKKyBTVEFD S19PRihYNTA5KSAqcV9TU0xfZ2V0X3BlZXJfY2VydF9jaGFpbihTU0wgKmEpOworLVg1MDkgKnFf U1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKFNTTCAqYSk7CisgbG9uZyBxX1NTTF9nZXRfdmVyaWZ5 X3Jlc3VsdChjb25zdCBTU0wgKmEpOworIFNTTCAqcV9TU0xfbmV3KFNTTF9DVFggKmEpOworIFNT TF9DVFggKnFfU1NMX2dldF9TU0xfQ1RYKFNTTCAqYSk7CitAQCAtNTgyLDEwICs1ODAsNyBAQCBE SCAqcV9ESF9uZXcoKTsKKyB2b2lkIHFfREhfZnJlZShESCAqZGgpOworIERIICpxX2QyaV9ESHBh cmFtcyhESCAqKmEsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKipwcCwgbG9uZyBsZW5ndGgpOworIGlu dCBxX2kyZF9ESHBhcmFtcyhESCAqYSwgdW5zaWduZWQgY2hhciAqKnApOworLQorLSNpZm5kZWYg T1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIGludCBxX0RIX2NoZWNrKERIICpkaCwgaW50ICpj b2Rlcyk7CistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyAKKyBCSUdOVU0g KnFfQk5fYmluMmJuKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIGludCBsZW4sIEJJR05VTSAqcmV0 KTsKKyAjZGVmaW5lIHFfU1NMX0NUWF9zZXRfdG1wX2RoKGN0eCwgZGgpIHFfU1NMX0NUWF9jdHJs KChjdHgpLCBTU0xfQ1RSTF9TRVRfVE1QX0RILCAwLCAoY2hhciAqKWRoKQorQEAgLTc1NCw2ICs3 NDksMTcgQEAgdm9pZCBxX0NSWVBUT19mcmVlKHZvaWQgKnN0ciwgY29uc3QgY2hhciAqZmlsZSwg aW50IGxpbmUpOworIGludCBxX1NTTF9DVFhfZ2V0X3NlY3VyaXR5X2xldmVsKGNvbnN0IFNTTF9D VFggKmN0eCk7Cisgdm9pZCBxX1NTTF9DVFhfc2V0X3NlY3VyaXR5X2xldmVsKFNTTF9DVFggKmN0 eCwgaW50IGxldmVsKTsKKyAKKysvLyBIZXJlIHdlIGhhdmUgdGhlIG9uZXMgdGhhdCBtYWtlIGRp ZmZlcmVuY2UgYmV0d2VlbiBPcGVuU1NMIHByZS9wb3N0IHYzOgorKyNpZiBkZWZpbmVkKE9QRU5T U0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKytYNTA5ICpx X1NTTF9nZXQxX3BlZXJfY2VydGlmaWNhdGUoU1NMICphKTsKKysjZGVmaW5lIHFfU1NMX2dldF9w ZWVyX2NlcnRpZmljYXRlIHFfU1NMX2dldDFfcGVlcl9jZXJ0aWZpY2F0ZQorK2ludCBxX0VWUF9Q S0VZX2dldF9iYXNlX2lkKGNvbnN0IEVWUF9QS0VZICpwa2V5KTsKKysjZGVmaW5lIHFfRVZQX1BL RVlfYmFzZV9pZCBxX0VWUF9QS0VZX2dldF9iYXNlX2lkCisrI2Vsc2UKKytYNTA5ICpxX1NTTF9n ZXRfcGVlcl9jZXJ0aWZpY2F0ZShTU0wgKmEpOworK2ludCBxX0VWUF9QS0VZX2Jhc2VfaWQoRVZQ X1BLRVkgKmEpOworKyNlbmRpZiAvLyBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworKworIFFU X0VORF9OQU1FU1BBQ0UKKyAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9y bXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRfZWdsX3AuaAoraW5kZXggYmYzN2QwN2ZkOC4uZGJk NDJmYjc5OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNvbnZl bmllbmNlL3F0X2VnbF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNv bnZlbmllbmNlL3F0X2VnbF9wLmgKK0BAIC02MSw3ICs2MSwxMSBAQAorICMgaWYgIWRlZmluZWQo UV9PU19JTlRFR1JJVFkpCisgIyAgZGVmaW5lIFdJTl9JTlRFUkZBQ0VfQ1VTVE9NICAgLy8gTlYK KyAjIGVuZGlmIC8vIFFfT1NfSU5URUdSSVRZCistI2VuZGlmICAvLyBRVF9FR0xfTk9fWDExCisr I2Vsc2UgLy8gUVRfRUdMX05PX1gxMQorKy8vIElmIG9uZSBoYXMgYW4gZWdscGxhdGZvcm0uaCB3 aXRoIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvRUdMLVJlZ2lzdHJ5L3B1bGwvMTMw CisrLy8gdGhhdCBuZWVkcyBVU0VfWDExIHRvIGJlIGRlZmluZWQuCisrIyBkZWZpbmUgVVNFX1gx MQorKyNlbmRpZgorIAorICNpZmRlZiBRVF9FR0xfV0FZTEFORAorICMgZGVmaW5lIFdBWUxBTkQg Ly8gTlYKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJh c2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFzZS5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFzZS5j cHAKK2luZGV4IDE1OWI0OTBjZTAuLjAwYWE4MGNkNTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRh YmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ZvbnRkYXRhYmFzZXMv Zm9udGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcAorQEAgLTU2Nyw2ICs1NjcsOCBAQCB2 b2lkIFFGb250Y29uZmlnRGF0YWJhc2U6OnBvcHVsYXRlRm9udERhdGFiYXNlKCkKKyAgICAgICAg IGZvbnRzID0gRmNGb250TGlzdChudWxscHRyLCBwYXR0ZXJuLCBvcyk7CisgICAgICAgICBGY09i amVjdFNldERlc3Ryb3kob3MpOworICAgICAgICAgRmNQYXR0ZXJuRGVzdHJveShwYXR0ZXJuKTsK KysgICAgICAgIGlmICghZm9udHMpCisrICAgICAgICAgICAgcmV0dXJuOworICAgICB9CisgCisg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZm9udHMtPm5mb250OyBpKyspCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb24uY3Bw IGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb24u Y3BwCitpbmRleCBiNzEzYzE5NDQ3Li43Y2I5YThjNzlhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb24uY3BwCisrKysgYi9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAK K0BAIC05NSw2ICs5NSw3IEBAIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgYXV0byBLZXlUYmwgPSBx TWFrZUFycmF5KAorICAgICAgICAgWGtiMlF0PFhLQl9LRVlfQ2xlYXIsICAgICAgICAgICAgICAg ICAgIFF0OjpLZXlfRGVsZXRlPiwKKyAgICAgICAgIFhrYjJRdDxYS0JfS0VZX1BhdXNlLCAgICAg ICAgICAgICAgICAgICBRdDo6S2V5X1BhdXNlPiwKKyAgICAgICAgIFhrYjJRdDxYS0JfS0VZX1By aW50LCAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1ByaW50PiwKKysgICAgICAgIFhrYjJRdDxY S0JfS0VZX1N5c19SZXEsICAgICAgICAgICAgICAgICBRdDo6S2V5X1N5c1JlcT4sCisgICAgICAg ICBYa2IyUXQ8MHgxMDA1RkY2MCwgICAgICAgICAgICAgICAgICAgICAgUXQ6OktleV9TeXNSZXE+ LCAgICAgICAgIC8vIGhhcmRjb2RlZCBTdW4gU3lzUmVxCisgICAgICAgICBYa2IyUXQ8MHgxMDA3 ZmYwMCwgICAgICAgICAgICAgICAgICAgICAgUXQ6OktleV9TeXNSZXE+LCAgICAgICAgIC8vIGhh cmRjb2RlZCBYMzg2IFN5c1JlcQorIAorQEAgLTQ3MSw3ICs0NzIsNyBAQCBRVmVjdG9yPHhrYl9r ZXlzeW1fdD4gUVhrYkNvbW1vbjo6dG9LZXlzeW0oUUtleUV2ZW50ICpldmVudCkKKyAgICAgfSBl bHNlIGlmIChldmVudC0+bW9kaWZpZXJzKCkgJiBRdDo6S2V5cGFkTW9kaWZpZXIpIHsKKyAgICAg ICAgIGlmIChxdEtleSA+PSBRdDo6S2V5XzAgJiYgcXRLZXkgPD0gUXQ6OktleV85KQorICAgICAg ICAgICAgIGtleXN5bXMuYXBwZW5kKFhLQl9LRVlfS1BfMCArIChxdEtleSAtIFF0OjpLZXlfMCkp OworLSAgICB9IGVsc2UgaWYgKGlzTGF0aW4ocXRLZXkpICYmIGV2ZW50LT50ZXh0KCkuaXNVcHBl cigpKSB7CisrICAgIH0gZWxzZSBpZiAoaXNMYXRpbjEocXRLZXkpICYmIGV2ZW50LT50ZXh0KCku aXNVcHBlcigpKSB7CisgICAgICAgICBrZXlzeW1zLmFwcGVuZChxdEtleSk7CisgICAgIH0KKyAK K0BAIC01MjMsNyArNTI0LDcgQEAgaW50IFFYa2JDb21tb246OmtleXN5bVRvUXRLZXkoeGtiX2tl eXN5bV90IGtleXN5bSwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWUKKyAgICAgICAgIC8v IFdpdGggc3RhbmRhcmQgc2hvcnRjdXRzIHdlIHNob3VsZCBwcmVmZXIgYSBsYXRpbiBjaGFyYWN0 ZXIsIHRoaXMgaXMKKyAgICAgICAgIC8vIGZvciBjaGVja3MgbGlrZSAic29tZSBxa2V5ZXZlbnQg PT0gUUtleVNlcXVlbmNlOjpDb3B5IiB0byB3b3JrIGV2ZW4KKyAgICAgICAgIC8vIHdoZW4gdXNp bmcgZm9yIGV4YW1wbGUgJ3J1c3NpYW4nIGtleWJvYXJkIGxheW91dC4KKy0gICAgICAgIGlmICgh UVhrYkNvbW1vbjo6aXNMYXRpbihrZXlzeW0pKSB7CisrICAgICAgICBpZiAoIVFYa2JDb21tb246 OmlzTGF0aW4xKGtleXN5bSkpIHsKKyAgICAgICAgICAgICB4a2Jfa2V5c3ltX3QgbGF0aW5LZXlz eW0gPSBRWGtiQ29tbW9uOjpsb29rdXBMYXRpbktleXN5bShzdGF0ZSwgY29kZSk7CisgICAgICAg ICAgICAgaWYgKGxhdGluS2V5c3ltICE9IFhLQl9LRVlfTm9TeW1ib2wpCisgICAgICAgICAgICAg ICAgIGtleXN5bSA9IGxhdGluS2V5c3ltOworQEAgLTU0Niw3ICs1NDcsNyBAQCBzdGF0aWMgaW50 IGtleXN5bVRvUXRLZXlfaW50ZXJuYWwoeGtiX2tleXN5bV90IGtleXN5bSwgUXQ6OktleWJvYXJk TW9kaWZpZXJzIG1vZAorICAgICB9IGVsc2UgaWYgKGtleXN5bSA+PSBYS0JfS0VZX0tQXzAgJiYg a2V5c3ltIDw9IFhLQl9LRVlfS1BfOSkgeworICAgICAgICAgLy8gbnVtZXJpYyBrZXlwYWQga2V5 cworICAgICAgICAgcXRLZXkgPSBRdDo6S2V5XzAgKyAoa2V5c3ltIC0gWEtCX0tFWV9LUF8wKTsK Ky0gICAgfSBlbHNlIGlmIChRWGtiQ29tbW9uOjppc0xhdGluKGtleXN5bSkpIHsKKysgICAgfSBl bHNlIGlmIChRWGtiQ29tbW9uOjppc0xhdGluMShrZXlzeW0pKSB7CisgICAgICAgICBxdEtleSA9 IFFYa2JDb21tb246OnF4a2Jjb21tb25feGtiX2tleXN5bV90b191cHBlcihrZXlzeW0pOworICAg ICB9IGVsc2UgeworICAgICAgICAgLy8gY2hlY2sgaWYgd2UgaGF2ZSBhIGRpcmVjdCBtYXBwaW5n CitAQCAtNjc4LDcgKzY3OSw3IEBAIFFMaXN0PGludD4gUVhrYkNvbW1vbjo6cG9zc2libGVLZXlz KHhrYl9zdGF0ZSAqc3RhdGUsIGNvbnN0IFFLZXlFdmVudCAqZXZlbnQsCisgICAgICAgICBRdDo6 S2V5Ym9hcmRNb2RpZmllcnMgbmVlZGVkTW9kcyA9IE1vZHNUYmxbaV07CisgICAgICAgICBpZiAo KG1vZGlmaWVycyAmIG5lZWRlZE1vZHMpID09IG5lZWRlZE1vZHMpIHsKKyAgICAgICAgICAgICBp ZiAoaSA9PSA4KSB7CistICAgICAgICAgICAgICAgIGlmIChpc0xhdGluKGJhc2VRdEtleSkpCisr ICAgICAgICAgICAgICAgIGlmIChpc0xhdGluMShiYXNlUXRLZXkpKQorICAgICAgICAgICAgICAg ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgIC8vIGFkZCBhIGxhdGluIGtleSBhcyBh IGZhbGwgYmFjayBrZXkKKyAgICAgICAgICAgICAgICAgc3ltID0gbG9va3VwTGF0aW5LZXlzeW0o c3RhdGUsIGtleWNvZGUpOworQEAgLTczMyw3ICs3MzQsNyBAQCB2b2lkIFFYa2JDb21tb246OnZl cmlmeUhhc0xhdGluTGF5b3V0KHhrYl9rZXltYXAgKmtleW1hcCkKKyAgICAgZm9yICh4a2JfbGF5 b3V0X2luZGV4X3QgbGF5b3V0ID0gMDsgbGF5b3V0IDwgbGF5b3V0Q291bnQ7ICsrbGF5b3V0KSB7 CisgICAgICAgICBmb3IgKHhrYl9rZXljb2RlX3QgY29kZSA9IG1pbktleWNvZGU7IGNvZGUgPCBt YXhLZXljb2RlOyArK2NvZGUpIHsKKyAgICAgICAgICAgICB4a2Jfa2V5bWFwX2tleV9nZXRfc3lt c19ieV9sZXZlbChrZXltYXAsIGNvZGUsIGxheW91dCwgMCwgJmtleXN5bXMpOworLSAgICAgICAg ICAgIGlmIChrZXlzeW1zICYmIGlzTGF0aW4oa2V5c3ltc1swXSkpCisrICAgICAgICAgICAgaWYg KGtleXN5bXMgJiYgaXNMYXRpbjEoa2V5c3ltc1swXSkpCisgICAgICAgICAgICAgICAgIG5yTGF0 aW5LZXlzKys7CisgICAgICAgICAgICAgaWYgKG5yTGF0aW5LZXlzID4gMTApIC8vIGFyYml0cmFy aWx5IGNob3NlbiB0aHJlc2hvbGQKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworQEAgLTc2Niw3 ICs3NjcsNyBAQCB4a2Jfa2V5c3ltX3QgUVhrYkNvbW1vbjo6bG9va3VwTGF0aW5LZXlzeW0oeGti X3N0YXRlICpzdGF0ZSwgeGtiX2tleWNvZGVfdCBrZXljbworICAgICAgICAgeGtiX2xldmVsX2lu ZGV4X3QgbGV2ZWwgPSB4a2Jfc3RhdGVfa2V5X2dldF9sZXZlbChzdGF0ZSwga2V5Y29kZSwgbGF5 b3V0KTsKKyAgICAgICAgIGlmICh4a2Jfa2V5bWFwX2tleV9nZXRfc3ltc19ieV9sZXZlbChrZXlt YXAsIGtleWNvZGUsIGxheW91dCwgbGV2ZWwsICZzeW1zKSAhPSAxKQorICAgICAgICAgICAgIGNv bnRpbnVlOworLSAgICAgICAgaWYgKGlzTGF0aW4oc3ltc1swXSkpIHsKKysgICAgICAgIGlmIChp c0xhdGluMShzeW1zWzBdKSkgeworICAgICAgICAgICAgIHN5bSA9IHN5bXNbMF07CisgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9y bXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oIGIvcXRiYXNlL3NyYy9wbGF0 Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oCitpbmRleCA1NjFlYWUw M2RiLi44Mzg5YmQ4ZjVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv aW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbl9wLmgKK0BAIC05NCw4ICs5NCw4IEBA IHB1YmxpYzoKKyAgICAgc3RhdGljIHZvaWQgdmVyaWZ5SGFzTGF0aW5MYXlvdXQoeGtiX2tleW1h cCAqa2V5bWFwKTsKKyAgICAgc3RhdGljIHhrYl9rZXlzeW1fdCBsb29rdXBMYXRpbktleXN5bSh4 a2Jfc3RhdGUgKnN0YXRlLCB4a2Jfa2V5Y29kZV90IGtleWNvZGUpOworIAorLSAgICBzdGF0aWMg Ym9vbCBpc0xhdGluKHhrYl9rZXlzeW1fdCBzeW0pIHsKKy0gICAgICAgIHJldHVybiAoKHN5bSA+ PSAnYScgJiYgc3ltIDw9ICd6JykgfHwgKHN5bSA+PSAnQScgJiYgc3ltIDw9ICdaJykpOworKyAg ICBzdGF0aWMgYm9vbCBpc0xhdGluMSh4a2Jfa2V5c3ltX3Qgc3ltKSB7CisrICAgICAgICByZXR1 cm4gc3ltIDw9IDB4ZmY7CisgICAgIH0KKyAgICAgc3RhdGljIGJvb2wgaXNLZXlwYWQoeGtiX2tl eXN5bV90IHN5bSkgeworICAgICAgICAgcmV0dXJuIHN5bSA+PSBYS0JfS0VZX0tQX1NwYWNlICYm IHN5bSA8PSBYS0JfS0VZX0tQXzk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1 cHBvcnQva21zY29udmVuaWVuY2UvcWttc2RldmljZS5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAoraW5kZXggOGNkN2Y5YjM2OC4u NDA2Zjg0NjYzZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2Nv bnZlbmllbmNlL3FrbXNkZXZpY2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9y dC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAorQEAgLTMxOCw3ICszMTgsNyBAQCBRUGxh dGZvcm1TY3JlZW4gKlFLbXNEZXZpY2U6OmNyZWF0ZVNjcmVlbkZvckNvbm5lY3Rvcihkcm1Nb2Rl UmVzUHRyIHJlc291cmNlcywKKyAKKyAgICAgaWYgKGN1cnJlbnQgPCAwICYmIGNydGNfbW9kZS5j bG9jayAhPSAwKSB7CisgICAgICAgICBtb2RlcyA8PCBjcnRjX21vZGU7CistICAgICAgICBjdXJy ZW50ID0gbW9kZS5zaXplKCkgLSAxOworKyAgICAgICAgY3VycmVudCA9IG1vZGVzLnNpemUoKSAt IDE7CisgICAgIH0KKyAKKyAgICAgaWYgKGNvbmZpZ3VyYXRpb24gPT0gT3V0cHV0Q29uZmlnQ3Vy cmVudCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vz c2liaWxpdHkvYXRzcGlhZGFwdG9yLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xp bnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwCitpbmRleCA5MTUzZmQyMGJiLi4yNTVl YTVlMzNlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nl c3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwCitAQCAtMTk0LDYgKzE5NCw5 IEBAIFFTdHJpbmcgQXRTcGlBZGFwdG9yOjppbnRyb3NwZWN0KGNvbnN0IFFTdHJpbmcgJnBhdGgp IGNvbnN0CisgICAgICAgICAgICAgICAgICIgICAgICA8YXJnIGRpcmVjdGlvbj1cIm91dFwiIHR5 cGU9XCIoc28pXCIvPlxuIgorICAgICAgICAgICAgICAgICAiICAgICAgPGFubm90YXRpb24gdmFs dWU9XCJRU3BpT2JqZWN0UmVmZXJlbmNlXCIgbmFtZT1cIm9yZy5xdHByb2plY3QuUXREQnVzLlF0 VHlwZU5hbWUuT3V0MFwiLz5cbiIKKyAgICAgICAgICAgICAgICAgIiAgICA8L21ldGhvZD5cbiIK KysgICAgICAgICAgICAgICAgIiAgICA8bWV0aG9kIG5hbWU9XCJHZXRBY2Nlc3NpYmxlSWRcIj5c biIKKysgICAgICAgICAgICAgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPVwib3V0XCIgdHlwZT1c InNcIi8+XG4iCisrICAgICAgICAgICAgICAgICIgICAgPC9tZXRob2Q+XG4iCisgICAgICAgICAg ICAgICAgICIgIDwvaW50ZXJmYWNlPlxuIgorICAgICAgICAgICAgICAgICApOworIAorQEAgLTkx Myw4ICs5MTYsMTcgQEAgdm9pZCBBdFNwaUFkYXB0b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2ZW50 ICpldmVudCkKKyAgICAgfQorICAgICBjYXNlIFFBY2Nlc3NpYmxlOjpOYW1lQ2hhbmdlZDogewor ICAgICAgICAgaWYgKHNlbmRPYmplY3QgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2UgfHwg c2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2VfYWNjZXNzaWJsZV9uYW1lKSB7CistICAgICAgICAg ICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShldmVudC0+YWNjZXNzaWJsZUludGVy ZmFjZSgpKTsKKy0gICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tEQnVzU2lnbmFs QXJndW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLCB2YXJpYW50 Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNl ID0gZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKTsKKysgICAgICAgICAgICBpZiAoIWlmYWNl KSB7CisrICAgICAgICAgICAgICAgIHFDRGVidWcobGNBY2Nlc3NpYmlsaXR5QXRzcGksCisrICAg ICAgICAgICAgICAgICAgICAgICAgIk5hbWVDaGFuZ2VkIGV2ZW50IGZyb20gaW52YWxpZCBhY2Nl c3NpYmxlLiIpOworKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgfQorKwor KyAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoaWZhY2UpOworKyAg ICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoCisr ICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLAor KyAgICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChpZmFjZS0+ dGV4dChRQWNjZXNzaWJsZTo6TmFtZSkpKSk7CisgICAgICAgICAgICAgc2VuZERCdXNTaWduYWwo cGF0aCwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX0lOVEVSRkFDRV9FVkVOVF9PQkpFQ1QpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlByb3BlcnR5Q2hhbmdl IiksIGFyZ3MpOworICAgICAgICAgfQorQEAgLTkyMiw4ICs5MzQsMTcgQEAgdm9pZCBBdFNwaUFk YXB0b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2ZW50ICpldmVudCkKKyAgICAgfQorICAgICBjYXNl IFFBY2Nlc3NpYmxlOjpEZXNjcmlwdGlvbkNoYW5nZWQ6IHsKKyAgICAgICAgIGlmIChzZW5kT2Jq ZWN0IHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hhbmdlIHx8IHNlbmRPYmplY3RfcHJvcGVydHlf Y2hhbmdlX2FjY2Vzc2libGVfZGVzY3JpcHRpb24pIHsKKy0gICAgICAgICAgICBRU3RyaW5nIHBh dGggPSBwYXRoRm9ySW50ZXJmYWNlKGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCkpOworLSAg ICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoUUxh dGluMVN0cmluZygiYWNjZXNzaWJsZS1kZXNjcmlwdGlvbiIpLCAwLCAwLCB2YXJpYW50Rm9yUGF0 aChwYXRoKSk7CisrICAgICAgICAgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlID0gZXZl bnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKTsKKysgICAgICAgICAgICBpZiAoIWlmYWNlKSB7Cisr ICAgICAgICAgICAgICAgIHFDRGVidWcobGNBY2Nlc3NpYmlsaXR5QXRzcGksCisrICAgICAgICAg ICAgICAgICAgICAgICAgIkRlc2NyaXB0aW9uQ2hhbmdlZCBldmVudCBmcm9tIGludmFsaWQgYWNj ZXNzaWJsZS4iKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAgIH0KKysK KysgICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGlmYWNlKTsKKysg ICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKAor KyAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLWRlc2NyaXB0aW9uIiks IDAsIDAsCisrICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50 KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpEZXNjcmlwdGlvbikpKSk7CisgICAgICAgICAgICAg c2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX0lOVEVSRkFDRV9F VkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmco IlByb3BlcnR5Q2hhbmdlIiksIGFyZ3MpOworICAgICAgICAgfQorQEAgLTEwMzgsNyArMTA1OSw5 IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpub3RpZnkoUUFjY2Vzc2libGVFdmVudCAqZXZlbnQpCisg ICAgICAgICAgICAgICAgIC8vIENvbWJvIEJveCB3aXRoIEFULVNQSSBsaWtlcyB0byBiZSBzcGVj aWFsCisgICAgICAgICAgICAgICAgIC8vIEl0IHJlcXVpcmVzIGEgbmFtZS1jaGFuZ2UgdG8gdXBk YXRlIGNhY2hlcyBhbmQgdGhlbiBzZWxlY3Rpb24tY2hhbmdlZAorICAgICAgICAgICAgICAgICBR U3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGlmYWNlKTsKKy0gICAgICAgICAgICAgICAg UVZhcmlhbnRMaXN0IGFyZ3MxID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoUUxhdGluMVN0cmlu ZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsIHZhcmlhbnRGb3JQYXRoKHBhdGgpKTsKKysgICAg ICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MxID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMo CisrICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLW5hbWUiKSwg MCwgMCwKKysgICAgICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJp YW50KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpOYW1lKSkpKTsKKyAgICAgICAgICAgICAgICAg c2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX0lOVEVSRkFDRV9F VkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3Ry aW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzMSk7CisgICAgICAgICAgICAgICAgIFFWYXJpYW50 TGlzdCBhcmdzMiA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKFFTdHJpbmcoKSwgMCwgMCwgUVZh cmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoUVZhcmlhbnQoMCkpKSk7CitAQCAtMTM1OCw2 ICsxMzgxLDI2IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpyZWdpc3RlckFwcGxpY2F0aW9uKCkKKyAg ICAgZGVsZXRlIHJlZ2lzdHJ5OworIH0KKyAKKytuYW1lc3BhY2UgeworK1FTdHJpbmcgYWNjZXNz aWJsZUlkRm9yQWNjZXNzaWJsZShRQWNjZXNzaWJsZUludGVyZmFjZSAqYWNjZXNzaWJsZSkKKyt7 CisrICAgIFFTdHJpbmcgcmVzdWx0OworKyAgICB3aGlsZSAoYWNjZXNzaWJsZSkgeworKyAgICAg ICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgpKQorKyAgICAgICAgICAgIHJlc3VsdC5wcmVwZW5kKFFM YXRpbjFDaGFyKCcuJykpOworKyAgICAgICAgaWYgKGF1dG8gb2JqID0gYWNjZXNzaWJsZS0+b2Jq ZWN0KCkpIHsKKysgICAgICAgICAgICBjb25zdCBRU3RyaW5nIG5hbWUgPSBvYmotPm9iamVjdE5h bWUoKTsKKysgICAgICAgICAgICBpZiAoIW5hbWUuaXNFbXB0eSgpKQorKyAgICAgICAgICAgICAg ICByZXN1bHQucHJlcGVuZChuYW1lKTsKKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAg ICAgIHJlc3VsdC5wcmVwZW5kKFFTdHJpbmc6OmZyb21VdGY4KG9iai0+bWV0YU9iamVjdCgpLT5j bGFzc05hbWUoKSkpOworKyAgICAgICAgfQorKyAgICAgICAgYWNjZXNzaWJsZSA9IGFjY2Vzc2li bGUtPnBhcmVudCgpOworKyAgICB9CisrICAgIHJldHVybiByZXN1bHQ7CisrfQorK30gLy8gbmFt ZXNwYWNlCisrCisgLy8gQWNjZXNzaWJsZQorIGJvb2wgQXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxl SW50ZXJmYWNlKFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppbnRlcmZhY2UsIGNvbnN0IFFTdHJpbmcg JmZ1bmN0aW9uLCBjb25zdCBRREJ1c01lc3NhZ2UgJm1lc3NhZ2UsIGNvbnN0IFFEQnVzQ29ubmVj dGlvbiAmY29ubmVjdGlvbikKKyB7CitAQCAtMTQ0MSw2ICsxNDg0LDkgQEAgYm9vbCBBdFNwaUFk YXB0b3I6OmFjY2Vzc2libGVJbnRlcmZhY2UoUUFjY2Vzc2libGVJbnRlcmZhY2UgKmludGVyZmFj ZSwgY29uc3QgUVMKKyAgICAgICAgICAgICBjaGlsZHJlbiA8PCByZWY7CisgICAgICAgICB9Cisg ICAgICAgICBjb25uZWN0aW9uLnNlbmQobWVzc2FnZS5jcmVhdGVSZXBseShRVmFyaWFudDo6ZnJv bVZhbHVlKGNoaWxkcmVuKSkpOworKyAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uID09IFFMYXRpbjFT dHJpbmcoIkdldEFjY2Vzc2libGVJZCIpKSB7CisrICAgICAgICBzZW5kUmVwbHkoY29ubmVjdGlv biwgbWVzc2FnZSwKKysgICAgICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVz VmFyaWFudChhY2Nlc3NpYmxlSWRGb3JBY2Nlc3NpYmxlKGludGVyZmFjZSkpKSk7CisgICAgIH0g ZWxzZSB7CisgICAgICAgICBxQ0RlYnVnKGxjQWNjZXNzaWJpbGl0eUF0c3BpKSA8PCAiV0FSTklO RzogQXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxlSW50ZXJmYWNlIGRvZXMgbm90IGltcGxlbWVudCAi IDw8IGZ1bmN0aW9uIDw8IG1lc3NhZ2UucGF0aCgpOworICAgICAgICAgcmV0dXJuIGZhbHNlOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0 eS9kYnVzY29ubmVjdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFj Y2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwCitpbmRleCA0NWRkYzhlNDk2Li5jYzczNGFi YzYzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3Np YmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBv cnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcAorQEAgLTY5LDYgKzY5LDIx IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIERCdXNDb25uZWN0aW9uOjpEQnVzQ29ubmVjdGlvbihR T2JqZWN0ICpwYXJlbnQpCisgICAgIDogUU9iamVjdChwYXJlbnQpLCBtX2ExMXlDb25uZWN0aW9u KFFTdHJpbmcoKSksIG1fZW5hYmxlZChmYWxzZSkKKyB7CisrICAgIC8vIElmIHRoZSBidXMgaXMg ZXhwbGljaXRseSBzZXQgdmlhIGVudiB2YXIgaXQgb3ZlcnJpZGVzIGV2ZXJ5dGhpbmcgZWxzZS4K KysgICAgUUJ5dGVBcnJheSBhZGRyZXNzRW52ID0gcWdldGVudigiQVRfU1BJX0JVU19BRERSRVNT Iik7CisrICAgIGlmICghYWRkcmVzc0Vudi5pc0VtcHR5KCkpIHsKKysgICAgICAgIC8vIE9ubHkg Y29ubmVjdCBvbiBuZXh0IGxvb3AgcnVuLCBjb25uZWN0aW9ucyB0byBvdXIgZW5hYmxlZCBzaWdu YWwgYXJlCisrICAgICAgICAvLyBvbmx5IGVzdGFibGlzaGVkIGFmdGVyIHRoZSBjdG9yIHJldHVy bnMuCisrICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKAorKyAgICAgICAgICAgICAg ICB0aGlzLAorKyAgICAgICAgICAgICAgICBbdGhpcywgYWRkcmVzc0Vudl0geworKyAgICAgICAg ICAgICAgICAgICAgbV9lbmFibGVkID0gdHJ1ZTsKKysgICAgICAgICAgICAgICAgICAgIGNvbm5l Y3RBMTF5QnVzKFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoYWRkcmVzc0VudikpOworKyAgICAgICAg ICAgICAgICB9LAorKyAgICAgICAgICAgICAgICBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisrICAg ICAgICByZXR1cm47CisrICAgIH0KKysKKyAgICAgLy8gU3RhcnQgbW9uaXRvcmluZyBpZiAib3Jn LmExMXkuQnVzIiBpcyByZWdpc3RlcmVkIGFzIERCdXMgc2VydmljZS4KKyAgICAgUURCdXNDb25u ZWN0aW9uIGMgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKTsKKyAgICAgaWYgKCFjLmlz Q29ubmVjdGVkKCkpIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9z ZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlcy5jcHAgYi9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNl cy5jcHAKK2luZGV4IDFhM2NhYjI3NWQuLjJhYmUwMzkxMjYgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2 aWNlcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVy aWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcAorQEAgLTUxLDYgKzUxLDkgQEAKKyAjaW5j bHVkZSA8UXRDb3JlL1FTdGFuZGFyZFBhdGhzPgorICNpbmNsdWRlIDxRdENvcmUvUVVybD4KKyAK KysjaW5jbHVkZSA8UXRHdWkvUUd1aUFwcGxpY2F0aW9uPgorKyNpbmNsdWRlIDxRdEd1aS9RV2lu ZG93PgorKworICNpZiBRVF9DT05GSUcoZGJ1cykKKyAvLyBUaGVzZSBRdENvcmUgaW5jbHVkZXMg YXJlIG5lZWRlZCBmb3IgeGRnLWRlc2t0b3AtcG9ydGFsIHN1cHBvcnQKKyAjaW5jbHVkZSA8UXRD b3JlL3ByaXZhdGUvcWNvcmVfdW5peF9wLmg+CitAQCAtNTgsNiArNjEsOCBAQAorICNpbmNsdWRl IDxRdENvcmUvUUZpbGVJbmZvPgorICNpbmNsdWRlIDxRdENvcmUvUVVybFF1ZXJ5PgorIAorKyNp bmNsdWRlIDxRdEd1aS9RQ29sb3I+CisrCisgI2luY2x1ZGUgPFF0REJ1cy9RREJ1c0Nvbm5lY3Rp b24+CisgI2luY2x1ZGUgPFF0REJ1cy9RREJ1c01lc3NhZ2U+CisgI2luY2x1ZGUgPFF0REJ1cy9R REJ1c1BlbmRpbmdDYWxsPgorQEAgLTE0Miw2ICsxNDcsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wg ZGV0ZWN0V2ViQnJvd3Nlcihjb25zdCBRQnl0ZUFycmF5ICZkZXNrdG9wLAorICAgICB9CisgCisg ICAgIGlmIChkZXNrdG9wID09IFFCeXRlQXJyYXkoIktERSIpKSB7CisrICAgICAgICBpZiAoY2hl Y2tFeGVjdXRhYmxlKFFTdHJpbmdMaXRlcmFsKCJrZGUtb3BlbjUiKSwgYnJvd3NlcikpCisrICAg ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAvLyBLb25xdWVyb3IgbGF1bmNoZXIKKyAg ICAgICAgIGlmIChjaGVja0V4ZWN1dGFibGUoUVN0cmluZ0xpdGVyYWwoImtmbWNsaWVudCIpLCBi cm93c2VyKSkgeworICAgICAgICAgICAgIGJyb3dzZXItPmFwcGVuZChRTGF0aW4xU3RyaW5nKCIg ZXhlYyIpKTsKK0BAIC0yOTYsOCArMzAzLDEzNSBAQCBzdGF0aWMgaW5saW5lIFFEQnVzTWVzc2Fn ZSB4ZGdEZXNrdG9wUG9ydGFsU2VuZEVtYWlsKGNvbnN0IFFVcmwgJnVybCkKKyAKKyAgICAgcmV0 dXJuIFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmNhbGwobWVzc2FnZSk7CisgfQorKwor K25hbWVzcGFjZSB7Cisrc3RydWN0IFhER0Rlc2t0b3BDb2xvcgorK3sKKysgICAgZG91YmxlIHIg PSAwOworKyAgICBkb3VibGUgZyA9IDA7CisrICAgIGRvdWJsZSBiID0gMDsKKysKKysgICAgUUNv bG9yIHRvUUNvbG9yKCkgY29uc3QKKysgICAgeworKyAgICAgICAgY29uc3RleHByIGF1dG8gcmdi TWF4ID0gMjU1OworKyAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50PihyICogcmdiTWF4 KSwgc3RhdGljX2Nhc3Q8aW50PihnICogcmdiTWF4KSwKKysgICAgICAgICAgICAgICAgIHN0YXRp Y19jYXN0PGludD4oYiAqIHJnYk1heCkgfTsKKysgICAgfQorK307CisrCisrY29uc3QgUURCdXNB cmd1bWVudCAmb3BlcmF0b3I+Pihjb25zdCBRREJ1c0FyZ3VtZW50ICZhcmd1bWVudCwgWERHRGVz a3RvcENvbG9yICZteVN0cnVjdCkKKyt7CisrICAgIGFyZ3VtZW50LmJlZ2luU3RydWN0dXJlKCk7 CisrICAgIGFyZ3VtZW50ID4+IG15U3RydWN0LnIgPj4gbXlTdHJ1Y3QuZyA+PiBteVN0cnVjdC5i OworKyAgICBhcmd1bWVudC5lbmRTdHJ1Y3R1cmUoKTsKKysgICAgcmV0dXJuIGFyZ3VtZW50Owor K30KKysKKytjbGFzcyBYZGdEZXNrdG9wUG9ydGFsQ29sb3JQaWNrZXIgOiBwdWJsaWMgUVBsYXRm b3JtU2VydmljZUNvbG9yUGlja2VyCisreworKyAgICBRX09CSkVDVAorK3B1YmxpYzoKKysgICAg WGRnRGVza3RvcFBvcnRhbENvbG9yUGlja2VyKGNvbnN0IFFTdHJpbmcgJnBhcmVudFdpbmRvd0lk LCBRV2luZG93ICpwYXJlbnQpCisrICAgICAgICA6IFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tl cihwYXJlbnQpLCBtX3BhcmVudFdpbmRvd0lkKHBhcmVudFdpbmRvd0lkKQorKyAgICB7CisrICAg IH0KKysKKysgICAgdm9pZCBwaWNrQ29sb3IoKSBvdmVycmlkZQorKyAgICB7CisrICAgICAgICAv LyBEQnVzIHNpZ25hdHVyZToKKysgICAgICAgIC8vIFBpY2tDb2xvciAoSU4gICBzICAgICAgcGFy ZW50X3dpbmRvdywKKysgICAgICAgIC8vICAgICAgICAgICAgSU4gICBhe3N2fSAgb3B0aW9ucwor KyAgICAgICAgLy8gICAgICAgICAgICBPVVQgIG8gICAgICBoYW5kbGUpCisrICAgICAgICAvLyBP cHRpb25zOgorKyAgICAgICAgLy8gaGFuZGxlX3Rva2VuIChzKSAtICBBIHN0cmluZyB0aGF0IHdp bGwgYmUgdXNlZCBhcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBAaGFuZGxlLgorKworKyAgICAg ICAgUURCdXNNZXNzYWdlIG1lc3NhZ2UgPSBRREJ1c01lc3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwo CisrICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFs LkRlc2t0b3AiKSwgUVN0cmluZ0xpdGVyYWwoIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0 b3AiKSwKKysgICAgICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5w b3J0YWwuU2NyZWVuc2hvdCIpLCBRU3RyaW5nTGl0ZXJhbCgiUGlja0NvbG9yIikpOworKyAgICAg ICAgbWVzc2FnZSA8PCBtX3BhcmVudFdpbmRvd0lkIDw8IFFWYXJpYW50TWFwKCk7CisrCisrICAg ICAgICBRREJ1c1BlbmRpbmdDYWxsIHBlbmRpbmdDYWxsID0gUURCdXNDb25uZWN0aW9uOjpzZXNz aW9uQnVzKCkuYXN5bmNDYWxsKG1lc3NhZ2UpOworKyAgICAgICAgYXV0byB3YXRjaGVyID0gbmV3 IFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyKHBlbmRpbmdDYWxsLCB0aGlzKTsKKysgICAgICAgIGNv bm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hlZCwgdGhpcywK KysgICAgICAgICAgICAgICAgW3RoaXNdKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVy KSB7CisrICAgICAgICAgICAgICAgICAgICB3YXRjaGVyLT5kZWxldGVMYXRlcigpOworKyAgICAg ICAgICAgICAgICAgICAgUURCdXNQZW5kaW5nUmVwbHk8UURCdXNPYmplY3RQYXRoPiByZXBseSA9 ICp3YXRjaGVyOworKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGx5LmlzRXJyb3IoKSkgewor KyAgICAgICAgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJEQnVzIGNhbGwgdG8gcGljayBjb2xv ciBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxUHJpbnRh YmxlKHJlcGx5LmVycm9yKCkubWVzc2FnZSgpKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAg UV9FTUlUIGNvbG9yUGlja2VkKHt9KTsKKysgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisr ICAgICAgICAgICAgICAgICAgICAgICAgUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuY29u bmVjdCgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJv cmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiKSwgcmVwbHkudmFsdWUoKS5wYXRoKCksCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVk ZXNrdG9wLnBvcnRhbC5SZXF1ZXN0IiksIFFTdHJpbmdMaXRlcmFsKCJSZXNwb25zZSIpLCB0aGlz LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChnb3RDb2xvclJlc3BvbnNlKHVp bnQsUVZhcmlhbnRNYXApKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xh bmctZm9ybWF0IG9uCisrICAgICAgICAgICAgICAgICAgICAgICAgKTsKKysgICAgICAgICAgICAg ICAgICAgIH0KKysgICAgICAgICAgICAgICAgfSk7CisrICAgIH0KKysKKytwcml2YXRlIFFfU0xP VFM6CisrICAgIHZvaWQgZ290Q29sb3JSZXNwb25zZSh1aW50IHJlc3VsdCwgY29uc3QgUVZhcmlh bnRNYXAgJm1hcCkKKysgICAgeworKyAgICAgICAgaWYgKHJlc3VsdCAhPSAwKQorKyAgICAgICAg ICAgIHJldHVybjsKKysgICAgICAgIFhER0Rlc2t0b3BDb2xvciBjb2xvcnt9OworKyAgICAgICAg bWFwLnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJjb2xvciIpKS52YWx1ZTxRREJ1c0FyZ3VtZW50Pigp ID4+IGNvbG9yOworKyAgICAgICAgUV9FTUlUIGNvbG9yUGlja2VkKGNvbG9yLnRvUUNvbG9yKCkp OworKyAgICAgICAgZGVsZXRlTGF0ZXIoKTsKKysgICAgfQorKworK3ByaXZhdGU6CisrICAgIGNv bnN0IFFTdHJpbmcgbV9wYXJlbnRXaW5kb3dJZDsKKyt9OworK30gLy8gbmFtZXNwYWNlCisrCisg I2VuZGlmIC8vIFFUX0NPTkZJRyhkYnVzKQorIAorK1FHZW5lcmljVW5peFNlcnZpY2VzOjpRR2Vu ZXJpY1VuaXhTZXJ2aWNlcygpCisreworKyNpZiBRVF9DT05GSUcoZGJ1cykKKysgICAgaWYgKHFF bnZpcm9ubWVudFZhcmlhYmxlSW50VmFsdWUoIlFUX05PX1hER19ERVNLVE9QX1BPUlRBTCIpID4g MCkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIFFEQnVzTWVzc2FnZSBtZXNzYWdl ID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxsKAorKyAgICAgICAgICAgIFFTdHJpbmdM aXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiKSwgUVN0cmluZ0xpdGVyYWwo Ii9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3AiKSwKKysgICAgICAgICAgICBRU3RyaW5n TGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLkRCdXMuUHJvcGVydGllcyIpLCBRU3RyaW5nTGl0ZXJh bCgiR2V0IikpOworKyAgICBtZXNzYWdlIDw8IFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0 b3AucG9ydGFsLlNjcmVlbnNob3QiKQorKyAgICAgICAgICAgIDw8IFFTdHJpbmdMaXRlcmFsKCJ2 ZXJzaW9uIik7CisrCisrICAgIFFEQnVzUGVuZGluZ0NhbGwgcGVuZGluZ0NhbGwgPSBRREJ1c0Nv bm5lY3Rpb246OnNlc3Npb25CdXMoKS5hc3luY0NhbGwobWVzc2FnZSk7CisrICAgIGF1dG8gd2F0 Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcihwZW5kaW5nQ2FsbCk7CisrICAgIFFP YmplY3Q6OmNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hl ZCwgd2F0Y2hlciwKKysgICAgICAgICAgICAgICAgICAgICBbdGhpc10oUURCdXNQZW5kaW5nQ2Fs bFdhdGNoZXIgKndhdGNoZXIpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci0+ ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgUURCdXNQZW5kaW5nUmVw bHk8UVZhcmlhbnQ+IHJlcGx5ID0gKndhdGNoZXI7CisrICAgICAgICAgICAgICAgICAgICAgICAg IGlmICghcmVwbHkuaXNFcnJvcigpICYmIHJlcGx5LnZhbHVlKCkudG9VSW50KCkgPj0gMikKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faGFzU2NyZWVuc2hvdFBvcnRhbFdpdGhDb2xv clBpY2tpbmcgPSB0cnVlOworKyAgICAgICAgICAgICAgICAgICAgIH0pOworKworKyNlbmRpZgor K30KKysKKytRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKlFHZW5lcmljVW5peFNlcnZpY2Vz Ojpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQpCisreworKyNpZiBRVF9DT05GSUcoZGJ1cykK KysgICAgLy8gTWFrZSBkb3VibGUgc3VyZSB0aGF0IHdlIGFyZSBpbiBhIHdheWxhbmQgZW52aXJv bm1lbnQuIEluIHBhcnRpY3VsYXIgY2hlY2sKKysgICAgLy8gV0FZTEFORF9ESVNQTEFZIHNvIGFs c28gWFdheWxhbmQgYXBwcyBiZW5lZml0IGZyb20gcG9ydGFsLWJhc2VkIGNvbG9yIHBpY2tpbmcu CisrICAgIC8vIE91dHNpZGUgd2F5bGFuZCB3ZSdsbCByYXRoZXIgcmVseSBvbiBvdGhlciBtZWFu cyB0aGFuIHRoZSBYREcgZGVza3RvcCBwb3J0YWwuCisrICAgIGlmICghcUVudmlyb25tZW50VmFy aWFibGVJc0VtcHR5KCJXQVlMQU5EX0RJU1BMQVkiKQorKyAgICAgICAgfHwgUUd1aUFwcGxpY2F0 aW9uOjpwbGF0Zm9ybU5hbWUoKS5zdGFydHNXaXRoKFFMYXRpbjFTdHJpbmcoIndheWxhbmQiKSkp IHsKKysgICAgICAgIHJldHVybiBuZXcgWGRnRGVza3RvcFBvcnRhbENvbG9yUGlja2VyKHBvcnRh bFdpbmRvd0lkZW50aWZpZXIocGFyZW50KSwgcGFyZW50KTsKKysgICAgfQorKyAgICByZXR1cm4g bnVsbHB0cjsKKysjZWxzZQorKyAgICBRX1VOVVNFRChwYXJlbnQpOworKyAgICByZXR1cm4gbnVs bHB0cjsKKysjZW5kaWYKKyt9CisrCisgUUJ5dGVBcnJheSBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6 ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3QKKyB7CisgICAgIHN0YXRpYyBjb25zdCBRQnl0ZUFy cmF5IHJlc3VsdCA9IGRldGVjdERlc2t0b3BFbnZpcm9ubWVudCgpOworQEAgLTM1Miw2ICs0ODYs OCBAQCBib29sIFFHZW5lcmljVW5peFNlcnZpY2VzOjpvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAm dXJsKQorIH0KKyAKKyAjZWxzZQorK1FHZW5lcmljVW5peFNlcnZpY2VzOjpRR2VuZXJpY1VuaXhT ZXJ2aWNlcygpID0gZGVmYXVsdDsKKysKKyBRQnl0ZUFycmF5IFFHZW5lcmljVW5peFNlcnZpY2Vz OjpkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdAorIHsKKyAgICAgcmV0dXJuIFFCeXRlQXJyYXlM aXRlcmFsKCJVTktOT1dOIik7CitAQCAtMzcxLDYgKzUwNywzMCBAQCBib29sIFFHZW5lcmljVW5p eFNlcnZpY2VzOjpvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJsKQorICAgICByZXR1cm4gZmFs c2U7CisgfQorIAorK1FQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqUUdlbmVyaWNVbml4U2Vy dmljZXM6OmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCkKKyt7CisrICAgIFFfVU5VU0VEKHBh cmVudCk7CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKyAjZW5kaWYgLy8gUVRfTk9fTVVM VElQUk9DRVNTCisgCisrUVN0cmluZyBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6cG9ydGFsV2luZG93 SWRlbnRpZmllcihRV2luZG93ICp3aW5kb3cpCisreworKyAgICBpZiAoUUd1aUFwcGxpY2F0aW9u OjpwbGF0Zm9ybU5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJ4Y2IiKSkKKysgICAgICAgIHJldHVy biBRU3RyaW5nTGl0ZXJhbCgieDExOiIpICsgUVN0cmluZzo6bnVtYmVyKHdpbmRvdy0+d2luSWQo KSwgMTYpOworKyAgICByZXR1cm4gUVN0cmluZygpOworK30KKysKKytib29sIFFHZW5lcmljVW5p eFNlcnZpY2VzOjpoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3QKKyt7 CisrICAgIHN3aXRjaCAoY2FwYWJpbGl0eSkgeworKyAgICBjYXNlIENhcGFiaWxpdHk6OkNvbG9y UGlja2luZzoKKysgICAgICAgIHJldHVybiBtX2hhc1NjcmVlbnNob3RQb3J0YWxXaXRoQ29sb3JQ aWNraW5nOworKyAgICB9CisrICAgIHJldHVybiBmYWxzZTsKKyt9CisrCisgUVRfRU5EX05BTUVT UEFDRQorKworKyNpbmNsdWRlICJxZ2VuZXJpY3VuaXhzZXJ2aWNlcy5tb2MiCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVy aWN1bml4c2VydmljZXNfcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMv Z2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oCitpbmRleCA4YWMzZGU2ZjAzLi4z MDkyNGU2NGJkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2Vydmlj ZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oCisrKysgYi9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNl c19wLmgKK0BAIC01OSwxNiArNTksMjEgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgY2xhc3MgUUdl bmVyaWNVbml4U2VydmljZXMgOiBwdWJsaWMgUVBsYXRmb3JtU2VydmljZXMKKyB7CisgcHVibGlj OgorLSAgICBRR2VuZXJpY1VuaXhTZXJ2aWNlcygpIHt9CisrICAgIFFHZW5lcmljVW5peFNlcnZp Y2VzKCk7CisgCisgICAgIFFCeXRlQXJyYXkgZGVza3RvcEVudmlyb25tZW50KCkgY29uc3Qgb3Zl cnJpZGU7CisgCisrICAgIGJvb2wgaGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNhcGFiaWxpdHkp IGNvbnN0IG92ZXJyaWRlOworICAgICBib29sIG9wZW5VcmwoY29uc3QgUVVybCAmdXJsKSBvdmVy cmlkZTsKKyAgICAgYm9vbCBvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJsKSBvdmVycmlkZTsK KysgICAgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpjb2xvclBpY2tlcihRV2luZG93ICpw YXJlbnQgPSBudWxscHRyKSBvdmVycmlkZTsKKysKKysgICAgdmlydHVhbCBRU3RyaW5nIHBvcnRh bFdpbmRvd0lkZW50aWZpZXIoUVdpbmRvdyAqd2luZG93KTsKKyAKKyBwcml2YXRlOgorICAgICBR U3RyaW5nIG1fd2ViQnJvd3NlcjsKKyAgICAgUVN0cmluZyBtX2RvY3VtZW50TGF1bmNoZXI7Cisr ICAgIGJvb2wgbV9oYXNTY3JlZW5zaG90UG9ydGFsV2l0aENvbG9yUGlja2luZyA9IGZhbHNlOwor IH07CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9u LmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVz bWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAoraW5kZXggMDk0NzBiY2NjNi4uY2M3YzdkNGQ4 YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmlj dW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9w bGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5l Y3Rpb24uY3BwCitAQCAtNjksNiArNjksNyBAQCBjb25zdCBRU3RyaW5nIE1lbnVCYXJQYXRoID0g UUxhdGluMVN0cmluZygiL01lbnVCYXIiKTsKKyAqLworIFFEQnVzTWVudUNvbm5lY3Rpb246OlFE QnVzTWVudUNvbm5lY3Rpb24oUU9iamVjdCAqcGFyZW50LCBjb25zdCBRU3RyaW5nICZzZXJ2aWNl TmFtZSkKKyAgICAgOiBRT2JqZWN0KHBhcmVudCkKKysgICAgLCBtX3NlcnZpY2VOYW1lKHNlcnZp Y2VOYW1lKQorICAgICAsIG1fY29ubmVjdGlvbihzZXJ2aWNlTmFtZS5pc051bGwoKSA/IFFEQnVz Q29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDogUURCdXNDb25uZWN0aW9uOjpjb25uZWN0VG9CdXMoUURCdXNDb25uZWN0aW9u OjpTZXNzaW9uQnVzLCBzZXJ2aWNlTmFtZSkpCisgICAgICwgbV9kYnVzV2F0Y2hlcihuZXcgUURC dXNTZXJ2aWNlV2F0Y2hlcihTdGF0dXNOb3RpZmllcldhdGNoZXJTZXJ2aWNlLCBtX2Nvbm5lY3Rp b24sIFFEQnVzU2VydmljZVdhdGNoZXI6OldhdGNoRm9yUmVnaXN0cmF0aW9uLCB0aGlzKSkKK0BA IC04Myw2ICs4NCwxMiBAQCBRREJ1c01lbnVDb25uZWN0aW9uOjpRREJ1c01lbnVDb25uZWN0aW9u KFFPYmplY3QgKnBhcmVudCwgY29uc3QgUVN0cmluZyAmc2VydmljZQorICNlbmRpZgorIH0KKyAK KytRREJ1c01lbnVDb25uZWN0aW9uOjp+UURCdXNNZW51Q29ubmVjdGlvbigpCisreworKyAgaWYg KCFtX3NlcnZpY2VOYW1lLmlzRW1wdHkoKSAmJiBtX2Nvbm5lY3Rpb24uaXNDb25uZWN0ZWQoKSkK KysgICAgICBRREJ1c0Nvbm5lY3Rpb246OmRpc2Nvbm5lY3RGcm9tQnVzKG1fc2VydmljZU5hbWUp OworK30KKysKKyB2b2lkIFFEQnVzTWVudUNvbm5lY3Rpb246OmRidXNFcnJvcihjb25zdCBRREJ1 c0Vycm9yICZlcnJvcikKKyB7CisgICAgIHFXYXJuaW5nKCkgPDwgIlFEQnVzVHJheUljb24gZW5j b3VudGVyZWQgYSBELUJ1cyBlcnJvcjoiIDw8IGVycm9yOworQEAgLTEwNSwxMyArMTEyLDcgQEAg dm9pZCBRREJ1c01lbnVDb25uZWN0aW9uOjp1bnJlZ2lzdGVyVHJheUljb25NZW51KFFEQnVzVHJh eUljb24gKml0ZW0pCisgCisgYm9vbCBRREJ1c01lbnVDb25uZWN0aW9uOjpyZWdpc3RlclRyYXlJ Y29uKFFEQnVzVHJheUljb24gKml0ZW0pCisgeworLSAgICBib29sIHN1Y2Nlc3MgPSBjb25uZWN0 aW9uKCkucmVnaXN0ZXJTZXJ2aWNlKGl0ZW0tPmluc3RhbmNlSWQoKSk7CistICAgIGlmICghc3Vj Y2VzcykgeworLSAgICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHJlZ2lzdGVyIHNlcnZp Y2UiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKTsKKy0gICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAg fQorLQorLSAgICBzdWNjZXNzID0gY29ubmVjdGlvbigpLnJlZ2lzdGVyT2JqZWN0KFN0YXR1c05v dGlmaWVySXRlbVBhdGgsIGl0ZW0pOworKyAgICBib29sIHN1Y2Nlc3MgPSBjb25uZWN0aW9uKCku cmVnaXN0ZXJPYmplY3QoU3RhdHVzTm90aWZpZXJJdGVtUGF0aCwgaXRlbSk7CisgICAgIGlmICgh c3VjY2VzcykgeworICAgICAgICAgdW5yZWdpc3RlclRyYXlJY29uKGl0ZW0pOworICAgICAgICAg cVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHJlZ2lzdGVyIiA8PCBpdGVtLT5pbnN0YW5jZUlkKCkg PDwgU3RhdHVzTm90aWZpZXJJdGVtUGF0aDsKK0BAIC0xMjYsMjEgKzEyNywxOCBAQCBib29sIFFE QnVzTWVudUNvbm5lY3Rpb246OnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSkK KyAKKyBib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnJlZ2lzdGVyVHJheUljb25XaXRoV2F0Y2hl cihRREJ1c1RyYXlJY29uICppdGVtKQorIHsKKysgICAgUV9VTlVTRUQoaXRlbSk7CisgICAgIFFE QnVzTWVzc2FnZSByZWdpc3Rlck1ldGhvZCA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9kQ2Fs bCgKKyAgICAgICAgICAgICAgICAgU3RhdHVzTm90aWZpZXJXYXRjaGVyU2VydmljZSwgU3RhdHVz Tm90aWZpZXJXYXRjaGVyUGF0aCwgU3RhdHVzTm90aWZpZXJXYXRjaGVyU2VydmljZSwKKyAgICAg ICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUmVnaXN0ZXJTdGF0dXNOb3RpZmllckl0ZW0iKSk7 CistICAgIHJlZ2lzdGVyTWV0aG9kLnNldEFyZ3VtZW50cyhRVmFyaWFudExpc3QoKSA8PCBpdGVt LT5pbnN0YW5jZUlkKCkpOworKyAgICByZWdpc3Rlck1ldGhvZC5zZXRBcmd1bWVudHMoUVZhcmlh bnRMaXN0KCkgPDwgbV9jb25uZWN0aW9uLmJhc2VTZXJ2aWNlKCkpOworICAgICByZXR1cm4gbV9j b25uZWN0aW9uLmNhbGxXaXRoQ2FsbGJhY2socmVnaXN0ZXJNZXRob2QsIHRoaXMsIFNJR05BTCh0 cmF5SWNvblJlZ2lzdGVyZWQoKSksIFNMT1QoZGJ1c0Vycm9yKFFEQnVzRXJyb3IpKSk7CisgfQor IAorLWJvb2wgUURCdXNNZW51Q29ubmVjdGlvbjo6dW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJh eUljb24gKml0ZW0pCisrdm9pZCBRREJ1c01lbnVDb25uZWN0aW9uOjp1bnJlZ2lzdGVyVHJheUlj b24oUURCdXNUcmF5SWNvbiAqaXRlbSkKKyB7CisgICAgIHVucmVnaXN0ZXJUcmF5SWNvbk1lbnUo aXRlbSk7CisgICAgIGNvbm5lY3Rpb24oKS51bnJlZ2lzdGVyT2JqZWN0KFN0YXR1c05vdGlmaWVy SXRlbVBhdGgpOworLSAgICBib29sIHN1Y2Nlc3MgPSBjb25uZWN0aW9uKCkudW5yZWdpc3RlclNl cnZpY2UoaXRlbS0+aW5zdGFuY2VJZCgpKTsKKy0gICAgaWYgKCFzdWNjZXNzKQorLSAgICAgICAg cVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHVucmVnaXN0ZXIgc2VydmljZSIgPDwgaXRlbS0+aW5z dGFuY2VJZCgpOworLSAgICByZXR1cm4gc3VjY2VzczsKKyB9CisgI2VuZGlmIC8vIFFUX05PX1NZ U1RFTVRSQVlJQ09OCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv dGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oIGIvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVz bWVudWNvbm5lY3Rpb25fcC5oCitpbmRleCBmNDg0Nzk1ZmJiLi45N2JkZmFiYjg1IDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNt ZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbl9wLmgK K0BAIC03MCw2ICs3MCw3IEBAIGNsYXNzIFFEQnVzTWVudUNvbm5lY3Rpb24gOiBwdWJsaWMgUU9i amVjdAorIAorIHB1YmxpYzoKKyAgICAgUURCdXNNZW51Q29ubmVjdGlvbihRT2JqZWN0ICpwYXJl bnQgPSBudWxscHRyLCBjb25zdCBRU3RyaW5nICZzZXJ2aWNlTmFtZSA9IFFTdHJpbmcoKSk7Cisr ICAgIH5RREJ1c01lbnVDb25uZWN0aW9uKCk7CisgICAgIFFEQnVzQ29ubmVjdGlvbiBjb25uZWN0 aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisgICAgIFFEQnVzU2VydmljZVdh dGNoZXIgKmRidXNXYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9kYnVzV2F0Y2hlcjsgfQorICAg ICBib29sIGlzU3RhdHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1f c3RhdHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJlZDsgfQorQEAgLTc4LDcgKzc5LDcgQEAgcHVibGlj OgorICAgICB2b2lkIHVucmVnaXN0ZXJUcmF5SWNvbk1lbnUoUURCdXNUcmF5SWNvbiAqaXRlbSk7 CisgICAgIGJvb2wgcmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKTsKKyAgICAg Ym9vbCByZWdpc3RlclRyYXlJY29uV2l0aFdhdGNoZXIoUURCdXNUcmF5SWNvbiAqaXRlbSk7Cist ICAgIGJvb2wgdW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pOworKyAgICB2 b2lkIHVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKTsKKyAjZW5kaWYgLy8g UVRfTk9fU1lTVEVNVFJBWUlDT04KKyAKKyBRX1NJR05BTFM6CitAQCAtOTAsNiArOTEsNyBAQCBw cml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgZGJ1c0Vycm9yKGNvbnN0IFFEQnVzRXJyb3IgJmVy cm9yKTsKKyAKKyBwcml2YXRlOgorKyAgICBRU3RyaW5nIG1fc2VydmljZU5hbWU7CisgICAgIFFE QnVzQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CisgICAgIFFEQnVzU2VydmljZVdhdGNoZXIgKm1f ZGJ1c1dhdGNoZXI7CisgICAgIGJvb2wgbV9zdGF0dXNOb3RpZmllckhvc3RSZWdpc3RlcmVkOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5p eC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcAoraW5kZXggYmVk ZTcwOTc1YS4uNzZiZmVjNWU1YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcAorKysrIGIv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXN0cmF5L3Fk YnVzdHJheWljb24uY3BwCitAQCAtNzEsOCArNzEsMTIgQEAgUV9MT0dHSU5HX0NBVEVHT1JZKHFM Y1RyYXksICJxdC5xcGEudHJheSIpCisgc3RhdGljIFFTdHJpbmcgaWNvblRlbXBQYXRoKCkKKyB7 CisgICAgIFFTdHJpbmcgdGVtcFBhdGggPSBRU3RhbmRhcmRQYXRoczo6d3JpdGFibGVMb2NhdGlv bihRU3RhbmRhcmRQYXRoczo6UnVudGltZUxvY2F0aW9uKTsKKy0gICAgaWYgKCF0ZW1wUGF0aC5p c0VtcHR5KCkpCisrICAgIGlmICghdGVtcFBhdGguaXNFbXB0eSgpKSB7CisrICAgICAgICBRU3Ry aW5nIGZsYXRwYWtJZCA9IHFFbnZpcm9ubWVudFZhcmlhYmxlKCJGTEFUUEFLX0lEIik7CisrICAg ICAgICBpZiAoIWZsYXRwYWtJZC5pc0VtcHR5KCkgJiYgUUZpbGVJbmZvOjpleGlzdHMoUUxhdGlu MVN0cmluZygiLy5mbGF0cGFrLWluZm8iKSkpCisrICAgICAgICAgICAgdGVtcFBhdGggKz0gUUxh dGluMVN0cmluZygiL2FwcC8iKSArIGZsYXRwYWtJZDsKKyAgICAgICAgIHJldHVybiB0ZW1wUGF0 aDsKKysgICAgfQorIAorICAgICB0ZW1wUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjp3cml0YWJsZUxv Y2F0aW9uKFFTdGFuZGFyZFBhdGhzOjpHZW5lcmljQ2FjaGVMb2NhdGlvbik7CisgCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3FnZW5l cmljdW5peHRoZW1lcy5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2Vu ZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNwcAoraW5kZXggY2IxYjM5ZGI2NC4uNmUwMWFm MDUyYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5l cmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNwcAorQEAgLTc1 NSw2ICs3NTUsOSBAQCBRVmFyaWFudCBRR25vbWVUaGVtZTo6dGhlbWVIaW50KFFQbGF0Zm9ybVRo ZW1lOjpUaGVtZUhpbnQgaGludCkgY29uc3QKKyAgICAgICAgIHJldHVybiBRVmFyaWFudChRQ2hh cigweDIwMjIpKTsKKyAgICAgY2FzZSBRUGxhdGZvcm1UaGVtZTo6VWlFZmZlY3RzOgorICAgICAg ICAgcmV0dXJuIFFWYXJpYW50KGludChIb3ZlckVmZmVjdCkpOworKyAgICBjYXNlIFFQbGF0Zm9y bVRoZW1lOjpCdXR0b25QcmVzc0tleXM6CisrICAgICAgICByZXR1cm4gUVZhcmlhbnQ6OmZyb21W YWx1ZSgKKysgICAgICAgICAgICAgICAgUUxpc3Q8UXQ6OktleT4oeyBRdDo6S2V5X1NwYWNlLCBR dDo6S2V5X1JldHVybiwgUXQ6OktleV9FbnRlciwgUXQ6OktleV9TZWxlY3QgfSkpOworICAgICBk ZWZhdWx0OgorICAgICAgICAgYnJlYWs7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3IuY3BwIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkvcWVnbGZzY3Vyc29yLmNwcAoraW5kZXggOThl MDUxOTVlZS4uMWU5MmY0M2RlYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAKK0BAIC0zNDMsOCArMzQzLDcg QEAgdm9pZCBRRWdsRlNDdXJzb3I6OnBhaW50T25TY3JlZW4oKQorICAgICAvLyBzY3JlZW5zIGFy ZSBzaWJsaW5ncyBvZiBlYWNoIG90aGVyLiBXaGVuIG5vdCBlbmFibGVkLCB0aGUgc2libGluZyBs aXN0CisgICAgIC8vIG9ubHkgY29udGFpbnMgbV9zY3JlZW4gaXRzZWxmLgorICAgICBmb3IgKFFQ bGF0Zm9ybVNjcmVlbiAqc2NyZWVuIDogbV9zY3JlZW4tPnZpcnR1YWxTaWJsaW5ncygpKSB7Cist ICAgICAgICBpZiAoc2NyZWVuLT5nZW9tZXRyeSgpLmNvbnRhaW5zKGNyLnRvcExlZnQoKS50b1Bv aW50KCkgKyBtX2N1cnNvci5ob3RTcG90KQorLSAgICAgICAgICAgICYmIFFPcGVuR0xDb250ZXh0 OjpjdXJyZW50Q29udGV4dCgpLT5zY3JlZW4oKSA9PSBzY3JlZW4tPnNjcmVlbigpKQorKyAgICAg ICAgaWYgKHNjcmVlbi0+Z2VvbWV0cnkoKS5jb250YWlucyhjci50b3BMZWZ0KCkudG9Qb2ludCgp ICsgbV9jdXJzb3IuaG90U3BvdCkpCisgICAgICAgICB7CisgICAgICAgICAgICAgY3IudHJhbnNs YXRlKC1zY3JlZW4tPmdlb21ldHJ5KCkudG9wTGVmdCgpKTsKKyAgICAgICAgICAgICBjb25zdCBR U2l6ZSBzY3JlZW5TaXplID0gc2NyZWVuLT5nZW9tZXRyeSgpLnNpemUoKTsKK0BAIC00NjgsMTEg KzQ2NywxMiBAQCB2b2lkIFFFZ2xGU0N1cnNvcjo6ZHJhdyhjb25zdCBRUmVjdEYgJnIpCisgewor ICAgICBTdGF0ZVNhdmVyIHN0YXRlU2F2ZXI7CisgCistICAgIFFFZ2xGU0N1cnNvckRhdGEgJmdm eCA9IHN0YXRpY19jYXN0PFFFZ2xGU0NvbnRleHQqPihRT3BlbkdMQ29udGV4dDo6Y3VycmVudENv bnRleHQoKS0+aGFuZGxlKCkpLT5jdXJzb3JEYXRhOworLSAgICBpZiAoIWdmeC5wcm9ncmFtKSB7 CistICAgICAgICAvLyBvbmUgdGltZSBpbml0aWFsaXphdGlvbgorKyAgICAvLyBvbmUgdGltZSBp bml0aWFsaXphdGlvbgorKyAgICBpZiAoIVFPcGVuR0xGdW5jdGlvbnM6OmRfcHRyKQorICAgICAg ICAgaW5pdGlhbGl6ZU9wZW5HTEZ1bmN0aW9ucygpOworIAorKyAgICBRRWdsRlNDdXJzb3JEYXRh ICZnZnggPSBzdGF0aWNfY2FzdDxRRWdsRlNDb250ZXh0Kj4oUU9wZW5HTENvbnRleHQ6OmN1cnJl bnRDb250ZXh0KCktPmhhbmRsZSgpKS0+Y3Vyc29yRGF0YTsKKysgICAgaWYgKCFnZngucHJvZ3Jh bSkgeworICAgICAgICAgY3JlYXRlU2hhZGVyUHJvZ3JhbXMoKTsKKyAKKyAgICAgICAgIGlmICgh Z2Z4LmF0bGFzVGV4dHVyZSkgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21zX3N1cHBvcnQvcWVnbGZza21z ZXZlbnRyZWFkZXIuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZp Y2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVudHJlYWRlci5jcHAK K2luZGV4IDY0NWEwYWUyZTkuLjNlMGU0MDZmMWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0aW9uL2VnbGZzX2ttc19zdXBwb3J0 L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNl dmVudHJlYWRlci5jcHAKK0BAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBRRWdsRlNLbXNFdmVudFJl YWRlcjo6Y3JlYXRlKFFFZ2xGU0ttc0RldmljZSAqZGV2aWNlKQorIAorICAgICBtX2RldmljZSA9 IGRldmljZTsKKyAKKy0gICAgcUNEZWJ1ZyhxTGNFZ2xmc0ttc0RlYnVnLCAiSW5pdGFsaXppbmcg ZXZlbnQgcmVhZGVyIGZvciBkZXZpY2UgJXAgZmQgJWQiLAorKyAgICBxQ0RlYnVnKHFMY0VnbGZz S21zRGVidWcsICJJbml0aWFsaXppbmcgZXZlbnQgcmVhZGVyIGZvciBkZXZpY2UgJXAgZmQgJWQi LAorICAgICAgICAgICAgIG1fZGV2aWNlLCBtX2RldmljZS0+ZmQoKSk7CisgCisgICAgIG1fdGhy ZWFkID0gbmV3IFFFZ2xGU0ttc0V2ZW50UmVhZGVyVGhyZWFkKG1fZGV2aWNlLT5mZCgpKTsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2Ny ZWVuaW50ZWdyYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3Jl ZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNwcAoraW5kZXggMTQxZmI2OGEyMy4uZDQyOTRkNDI1 YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3Fv ZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAKK0BAIC0xMjIsMTEgKzEyMiwx MyBAQCBRT2Zmc2NyZWVuSW50ZWdyYXRpb246OlFPZmZzY3JlZW5JbnRlZ3JhdGlvbigpCisgI2Vu ZGlmCisgICAgIG1fc2VydmljZXMucmVzZXQobmV3IFFQbGF0Zm9ybVNlcnZpY2VzKTsKKyAKKy0g ICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlU2NyZWVuQWRkZWQobmV3IFFPZmZzY3Jl ZW5TY3JlZW4pOworKyAgICBtX3NjcmVlbiA9IG5ldyBRT2Zmc2NyZWVuU2NyZWVuOworKyAgICBR V2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVTY3JlZW5BZGRlZChtX3NjcmVlbik7CisgfQor IAorIFFPZmZzY3JlZW5JbnRlZ3JhdGlvbjo6flFPZmZzY3JlZW5JbnRlZ3JhdGlvbigpCisgewor KyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVTY3JlZW5SZW1vdmVkKG1fc2NyZWVu KTsKKyB9CisgCisgdm9pZCBRT2Zmc2NyZWVuSW50ZWdyYXRpb246OmluaXRpYWxpemUoKQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3Jl ZW5pbnRlZ3JhdGlvbi5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4v cW9mZnNjcmVlbmludGVncmF0aW9uLmgKK2luZGV4IDBlYTkwZjZjMmYuLmZlMDBmZGUwN2MgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2Ny ZWVuaW50ZWdyYXRpb24uaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZz Y3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgKK0BAIC04NCw2ICs4NCw3IEBAIHByb3RlY3Rl ZDoKKyAjZW5kaWYKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtSW5wdXRDb250ZXh0PiBt X2lucHV0Q29udGV4dDsKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtU2VydmljZXM+IG1f c2VydmljZXM7CisrICAgIFFQbGF0Zm9ybVNjcmVlbiAqbV9zY3JlZW47CisgICAgIG11dGFibGUg UVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtTmF0aXZlSW50ZXJmYWNlPiBtX25hdGl2ZUludGVyZmFj ZTsKKyB9OworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2lu ZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3BwCitpbmRleCA2ZmE1YThhMmIzLi4xZjQ5ZjBh ZWZkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3 aW5kb3dzZ2xjb250ZXh0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93 aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcAorQEAgLTQ4LDYgKzQ4LDcgQEAKKyAjaW5jbHVk ZSA8cXBhL3FwbGF0Zm9ybW5hdGl2ZWludGVyZmFjZS5oPgorICNpbmNsdWRlIDxRdFBsYXRmb3Jt SGVhZGVycy9xd2dsbmF0aXZlY29udGV4dC5oPgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3FzeXN0 ZW1saWJyYXJ5X3AuaD4KKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorIAorICNpbmNsdWRlIDx3aW5n ZGkuaD4KK0BAIC0xNjIsMTkgKzE2MywyNSBAQCBRRnVuY3Rpb25Qb2ludGVyIFFXaW5kb3dzT3Bl bmdsMzJETEw6OnJlc29sdmUoY29uc3QgY2hhciAqbmFtZSkKKyAKKyBib29sIFFXaW5kb3dzT3Bl bmdsMzJETEw6OmluaXQoYm9vbCBzb2Z0d2FyZVJlbmRlcmluZykKKyB7CistICAgIGNvbnN0IFFC eXRlQXJyYXkgb3BlbmdsMzIgPSBRQnl0ZUFycmF5TGl0ZXJhbCgib3BlbmdsMzIuZGxsIik7Cist ICAgIGNvbnN0IFFCeXRlQXJyYXkgc3dvcGVuZ2wgPSBRQnl0ZUFycmF5TGl0ZXJhbCgib3Blbmds MzJzdy5kbGwiKTsKKysgICAgY29uc3QgUUJ5dGVBcnJheSBvcGVuZ2wzMiA9IFFCeXRlQXJyYXlM aXRlcmFsKCJvcGVuZ2wzMiIpOworKyAgICBjb25zdCBRQnl0ZUFycmF5IHN3b3BlbmdsID0gUUJ5 dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMyc3ciKTsKKysgICAgYm9vbCB1c2VTeXN0ZW1MaWIgPSBm YWxzZTsKKyAKKyAgICAgUUJ5dGVBcnJheSBvcGVuZ2xEbGwgPSBxZ2V0ZW52KCJRVF9PUEVOR0xf RExMIik7CistICAgIGlmIChvcGVuZ2xEbGwuaXNFbXB0eSgpKQorKyAgICBpZiAob3BlbmdsRGxs LmlzRW1wdHkoKSkgeworICAgICAgICAgb3BlbmdsRGxsID0gc29mdHdhcmVSZW5kZXJpbmcgPyBz d29wZW5nbCA6IG9wZW5nbDMyOworKyAgICAgICAgdXNlU3lzdGVtTGliID0gIXNvZnR3YXJlUmVu ZGVyaW5nOworKyAgICB9CisgCisgICAgIG9wZW5nbERsbCA9IG9wZW5nbERsbC50b0xvd2VyKCk7 CisgICAgIG1fbm9uT3BlbmdsMzIgPSBvcGVuZ2xEbGwgIT0gb3BlbmdsMzI7CisgCisgICAgIHFD RGVidWcobGNRcGFHbCkgPDwgIlF0OiBVc2luZyBXR0wgYW5kIE9wZW5HTCBmcm9tIiA8PCBvcGVu Z2xEbGw7CisgCistICAgIG1fbGliID0gOjpMb2FkTGlicmFyeUEob3BlbmdsRGxsLmNvbnN0RGF0 YSgpKTsKKysgICAgaWYgKHVzZVN5c3RlbUxpYikKKysgICAgICAgIG1fbGliID0gUVN5c3RlbUxp YnJhcnk6OmxvYWQoKHdjaGFyX3QqKShRU3RyaW5nOjpmcm9tTGF0aW4xKG9wZW5nbERsbCkudXRm MTYoKSkpOworKyAgICBlbHNlCisrICAgICAgICBtX2xpYiA9IExvYWRMaWJyYXJ5QShvcGVuZ2xE bGwuY29uc3REYXRhKCkpOworICAgICBpZiAoIW1fbGliKSB7CisgICAgICAgICBxRXJybm9XYXJu aW5nKDo6R2V0TGFzdEVycm9yKCksICJGYWlsZWQgdG8gbG9hZCAlcyIsIG9wZW5nbERsbC5jb25z dERhdGEoKSk7CisgICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtMTg0LDcgKzE5MSw3IEBAIGJv b2wgUVdpbmRvd3NPcGVuZ2wzMkRMTDo6aW5pdChib29sIHNvZnR3YXJlUmVuZGVyaW5nKQorICAg ICAgICAgLy8gTG9hZCBvcGVuZ2wzMi5kbGwgYWx3YXlzLiBHREkgZnVuY3Rpb25zIGxpa2UgQ2hv b3NlUGl4ZWxGb3JtYXQgZG8KKyAgICAgICAgIC8vIEdldE1vZHVsZUhhbmRsZSBmb3Igb3Blbmds MzIuZGxsIGFuZCBiZWhhdmUgZGlmZmVyZW50bHkgKGFuZCBjYWxsIGJhY2sgaW50bworICAgICAg ICAgLy8gb3BlbmdsMzIpIHdoZW4gdGhlIG1vZHVsZSBpcyBwcmVzZW50LiBUaGlzIGlzIGZpbmUg Zm9yIGR1bW15IGNvbnRleHRzIGFuZCB3aW5kb3dzLgorLSAgICAgICAgOjpMb2FkTGlicmFyeUEo Im9wZW5nbDMyLmRsbCIpOworKyAgICAgICAgUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJvcGVuZ2wz MiIpOworICAgICB9CisgCisgICAgIHdnbENyZWF0ZUNvbnRleHQgPSByZWludGVycHJldF9jYXN0 PEhHTFJDIChXSU5BUEkgKikoSERDKT4ocmVzb2x2ZSgid2dsQ3JlYXRlQ29udGV4dCIpKTsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3Nv cGVuZ2x0ZXN0ZXIuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3 aW5kb3dzb3BlbmdsdGVzdGVyLmNwcAoraW5kZXggZDdkMTg2ZTgwNC4uOWViNDAxMWJmMiAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29w ZW5nbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93 cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAKK0BAIC00OSw2ICs0OSw3IEBACisgI2luY2x1ZGUg PFF0Q29yZS9xc3RhbmRhcmRwYXRocy5oPgorICNpbmNsdWRlIDxRdENvcmUvcWxpYnJhcnlpbmZv Lmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xaGFzaC5oPgorKyNpbmNsdWRlIDxwcml2YXRlL3FzeXN0 ZW1saWJyYXJ5X3AuaD4KKyAKKyAjaWZuZGVmIFFUX05PX09QRU5HTAorICNpbmNsdWRlIDxwcml2 YXRlL3FvcGVuZ2xfcC5oPgorQEAgLTM5Niw3ICszOTcsNyBAQCBib29sIFFXaW5kb3dzT3BlbkdM VGVzdGVyOjp0ZXN0RGVza3RvcEdMKCkKKyAKKyAgICAgLy8gVGVzdCAjMTogTG9hZCBvcGVuZ2wz Mi5kbGwgYW5kIHRyeSB0byByZXNvbHZlIGFuIE9wZW5HTCAyIGZ1bmN0aW9uLgorICAgICAvLyBU aGlzIHdpbGwgdHlwaWNhbGx5IGZhaWwgb24gc3lzdGVtcyB0aGF0IGRvIG5vdCBoYXZlIGEgcmVh bCBPcGVuR0wgZHJpdmVyLgorLSAgICBsaWIgPSBMb2FkTGlicmFyeUEoIm9wZW5nbDMyLmRsbCIp OworKyAgICBsaWIgPSBRU3lzdGVtTGlicmFyeTo6bG9hZChMIm9wZW5nbDMyIik7CisgICAgIGlm IChsaWIpIHsKKyAgICAgICAgIENyZWF0ZUNvbnRleHQgPSByZWludGVycHJldF9jYXN0PENyZWF0 ZUNvbnRleHRUeXBlPigKKyAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PFFGdW5jdGlvblBv aW50ZXI+KDo6R2V0UHJvY0FkZHJlc3MobGliLCAid2dsQ3JlYXRlQ29udGV4dCIpKSk7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcv cXRlc3NlbGxhdG9yLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL25hdGl2 ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAKK2luZGV4IDFhZmEwMGNmYzkuLjExOGFmNmNlNzMg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVwYWlu dGluZy9xdGVzc2VsbGF0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwCitAQCAtNDEsNiArNDEsNyBAQAor IAorICNpbmNsdWRlIDxRUmVjdD4KKyAjaW5jbHVkZSA8UUxpc3Q+CisrI2luY2x1ZGUgPFFNYXA+ CisgI2luY2x1ZGUgPFFEZWJ1Zz4KKyAKKyAjaW5jbHVkZSA8cW1hdGguaD4KK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5jcHAgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5jcHAKK2luZGV4 IDllMmEzN2E2YTEuLmU2ZTE3NWExMTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNwcAorQEAgLTQ4OCwxMiArNDg4LDEyIEBA IHZvaWQgUVhjYkNvbm5lY3Rpb246OnByaW50WGNiRXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSwg eGNiX2dlbmVyaWNfZXJyb3JfdCAqZXJyCisgICAgIHVpbnQgY2xhbXBlZF9lcnJvcl9jb2RlID0g cU1pbjx1aW50PihlcnJvci0+ZXJyb3JfY29kZSwgKHNpemVvZih4Y2JfZXJyb3JzKSAvIHNpemVv Zih4Y2JfZXJyb3JzWzBdKSkgLSAxKTsKKyAgICAgdWludCBjbGFtcGVkX21ham9yX2NvZGUgPSBx TWluPHVpbnQ+KGVycm9yLT5tYWpvcl9jb2RlLCAoc2l6ZW9mKHhjYl9wcm90b2NvbF9yZXF1ZXN0 X2NvZGVzKSAvIHNpemVvZih4Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2Rlc1swXSkpIC0gMSk7Cisg CistICAgIHFDV2FybmluZyhsY1FwYVhjYiwgIiVzOiAlZCAoJXMpLCBzZXF1ZW5jZTogJWQsIHJl c291cmNlIGlkOiAlZCwgbWFqb3IgY29kZTogJWQgKCVzKSwgbWlub3IgY29kZTogJWQiLAorLSAg ICAgICAgICAgICBtZXNzYWdlLAorLSAgICAgICAgICAgICBpbnQoZXJyb3ItPmVycm9yX2NvZGUp LCB4Y2JfZXJyb3JzW2NsYW1wZWRfZXJyb3JfY29kZV0sCistICAgICAgICAgICAgIGludChlcnJv ci0+c2VxdWVuY2UpLCBpbnQoZXJyb3ItPnJlc291cmNlX2lkKSwKKy0gICAgICAgICAgICAgaW50 KGVycm9yLT5tYWpvcl9jb2RlKSwgeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXNbY2xhbXBlZF9t YWpvcl9jb2RlXSwKKy0gICAgICAgICAgICAgaW50KGVycm9yLT5taW5vcl9jb2RlKSk7CisrICAg IHFDRGVidWcobGNRcGFYY2IsICIlczogJWQgKCVzKSwgc2VxdWVuY2U6ICVkLCByZXNvdXJjZSBp ZDogJWQsIG1ham9yIGNvZGU6ICVkICglcyksIG1pbm9yIGNvZGU6ICVkIiwKKysgICAgICAgICAg ICBtZXNzYWdlLAorKyAgICAgICAgICAgIGludChlcnJvci0+ZXJyb3JfY29kZSksIHhjYl9lcnJv cnNbY2xhbXBlZF9lcnJvcl9jb2RlXSwKKysgICAgICAgICAgICBpbnQoZXJyb3ItPnNlcXVlbmNl KSwgaW50KGVycm9yLT5yZXNvdXJjZV9pZCksCisrICAgICAgICAgICAgaW50KGVycm9yLT5tYWpv cl9jb2RlKSwgeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXNbY2xhbXBlZF9tYWpvcl9jb2RlXSwK KysgICAgICAgICAgICBpbnQoZXJyb3ItPm1pbm9yX2NvZGUpKTsKKyB9CisgCisgc3RhdGljIFF0 OjpNb3VzZUJ1dHRvbnMgdHJhbnNsYXRlTW91c2VCdXR0b25zKGludCBzKQorQEAgLTcwMiw2ICs3 MDIsOCBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpoYW5kbGVYY2JFdmVudCh4Y2JfZ2VuZXJpY19l dmVudF90ICpldmVudCkKKyAgICAgICAgICAgICBRWGNiVmlydHVhbERlc2t0b3AgKnZpcnR1YWxE ZXNrdG9wID0gdmlydHVhbERlc2t0b3BGb3JSb290V2luZG93KHByb3BlcnR5Tm90aWZ5LT53aW5k b3cpOworICAgICAgICAgICAgIGlmICh2aXJ0dWFsRGVza3RvcCkKKyAgICAgICAgICAgICAgICAg dmlydHVhbERlc2t0b3AtPnVwZGF0ZVdvcmtBcmVhKCk7CisrICAgICAgICB9IGVsc2UgaWYgKHBy b3BlcnR5Tm90aWZ5LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfU1VQUE9SVEVEKSkgewor KyAgICAgICAgICAgIG1fd21TdXBwb3J0LT51cGRhdGVOZXRXTUF0b21zKCk7CisgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgIEhBTkRMRV9QTEFURk9STV9XSU5ET1dfRVZFTlQoeGNiX3By b3BlcnR5X25vdGlmeV9ldmVudF90LCB3aW5kb3csIGhhbmRsZVByb3BlcnR5Tm90aWZ5RXZlbnQp OworICAgICAgICAgfQorQEAgLTc1MCw3ICs3NTIsNyBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpo YW5kbGVYY2JFdmVudCh4Y2JfZ2VuZXJpY19ldmVudF90ICpldmVudCkKKyAgICAgICAgICAgICAg ICAgY2FzZSBYQ0JfWEtCX05FV19LRVlCT0FSRF9OT1RJRlk6IHsKKyAgICAgICAgICAgICAgICAg ICAgIHhjYl94a2JfbmV3X2tleWJvYXJkX25vdGlmeV9ldmVudF90ICpldiA9ICZ4a2JfZXZlbnQt Pm5ld19rZXlib2FyZF9ub3RpZnk7CisgICAgICAgICAgICAgICAgICAgICBpZiAoZXYtPmNoYW5n ZWQgJiBYQ0JfWEtCX05LTl9ERVRBSUxfS0VZQ09ERVMpCistICAgICAgICAgICAgICAgICAgICAg ICAgbV9rZXlib2FyZC0+dXBkYXRlS2V5bWFwKGV2KTsKKysgICAgICAgICAgICAgICAgICAgICAg ICBtX2tleWJvYXJkLT51cGRhdGVLZXltYXAoKTsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVncmF0aW9uLmNw cCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAK K2luZGV4IDc2ODY5Y2VkNjAuLjAyZDJlZWJiNTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwCitAQCAtMjc0LDggKzI3 NCw3IEBAIFFQbGF0Zm9ybVdpbmRvdyAqUVhjYkludGVncmF0aW9uOjpjcmVhdGVGb3JlaWduV2lu ZG93KFFXaW5kb3cgKndpbmRvdywgV0lkIG5hdGl2CisgI2lmbmRlZiBRVF9OT19PUEVOR0wKKyBR UGxhdGZvcm1PcGVuR0xDb250ZXh0ICpRWGNiSW50ZWdyYXRpb246OmNyZWF0ZVBsYXRmb3JtT3Bl bkdMQ29udGV4dChRT3BlbkdMQ29udGV4dCAqY29udGV4dCkgY29uc3QKKyB7CistICAgIFFYY2JT Y3JlZW4gKnNjcmVlbiA9IHN0YXRpY19jYXN0PFFYY2JTY3JlZW4gKj4oY29udGV4dC0+c2NyZWVu KCktPmhhbmRsZSgpKTsKKy0gICAgUVhjYkdsSW50ZWdyYXRpb24gKmdsSW50ZWdyYXRpb24gPSBz Y3JlZW4tPmNvbm5lY3Rpb24oKS0+Z2xJbnRlZ3JhdGlvbigpOworKyAgICBRWGNiR2xJbnRlZ3Jh dGlvbiAqZ2xJbnRlZ3JhdGlvbiA9IGRlZmF1bHRDb25uZWN0aW9uKCktPmdsSW50ZWdyYXRpb24o KTsKKyAgICAgaWYgKCFnbEludGVncmF0aW9uKSB7CisgICAgICAgICBxV2FybmluZygiUVhjYklu dGVncmF0aW9uOiBDYW5ub3QgY3JlYXRlIHBsYXRmb3JtIE9wZW5HTCBjb250ZXh0LCBuZWl0aGVy IEdMWCBub3IgRUdMIGFyZSBlbmFibGVkIik7CisgICAgICAgICByZXR1cm4gbnVsbHB0cjsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQu Y3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmNwcAor aW5kZXggZWZlY2Q3ZTJkMS4uZTgyODYzODFhMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAKK0BAIC0zNjUsMTcgKzM2NSw2IEBA IHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoeGNiX21hcHBpbmdfbm90aWZ5X2V2ZW50 X3QgKmV2ZW50KQorICAgICB1cGRhdGVLZXltYXAoKTsKKyB9CisgCistdm9pZCBRWGNiS2V5Ym9h cmQ6OnVwZGF0ZUtleW1hcCh4Y2JfeGtiX25ld19rZXlib2FyZF9ub3RpZnlfZXZlbnRfdCAqZXZl bnQpCisteworLSAgICBpZiAoIWV2ZW50KQorLSAgICAgICAgcmV0dXJuOworLQorLSAgICBpZiAo ZXZlbnQtPmRldmljZUlEICE9IGV2ZW50LT5vbGREZXZpY2VJRCkKKy0gICAgICAgIG1fY29uZmln ID0gZmFsc2U7CistCistICAgIHVwZGF0ZUtleW1hcCgpOworLX0KKy0KKyB2b2lkIFFYY2JLZXli b2FyZDo6dXBkYXRlS2V5bWFwKCkKKyB7CisgICAgIEtleXN5bU1vZGlmaWVyTWFwIGtleXN5bU1v ZHM7CitAQCAtMzgzLDYgKzM3Miw4IEBAIHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAo KQorICAgICAgICAga2V5c3ltTW9kcyA9IGtleXN5bXNUb01vZGlmaWVycygpOworICAgICB1cGRh dGVNb2RpZmllcnMoa2V5c3ltTW9kcyk7CisgCisrICAgIG1fY29uZmlnID0gdHJ1ZTsKKysKKyAg ICAgaWYgKCFtX3hrYkNvbnRleHQpIHsKKyAgICAgICAgIG1feGtiQ29udGV4dC5yZXNldCh4a2Jf Y29udGV4dF9uZXcoWEtCX0NPTlRFWFRfTk9fREVGQVVMVF9JTkNMVURFUykpOworICAgICAgICAg aWYgKCFtX3hrYkNvbnRleHQpIHsKK0BAIC0zOTgsMTMgKzM4OSw4IEBAIHZvaWQgUVhjYktleWJv YXJkOjp1cGRhdGVLZXltYXAoKQorICAgICBpZiAoY29ubmVjdGlvbigpLT5oYXNYS0IoKSkgewor ICAgICAgICAgbV94a2JLZXltYXAucmVzZXQoeGtiX3gxMV9rZXltYXBfbmV3X2Zyb21fZGV2aWNl KG1feGtiQ29udGV4dC5nZXQoKSwgeGNiX2Nvbm5lY3Rpb24oKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlX2RldmljZV9pZCwg WEtCX0tFWU1BUF9DT01QSUxFX05PX0ZMQUdTKSk7CistICAgICAgICBpZiAobV94a2JLZXltYXAp IHsKKy0gICAgICAgICAgICBpZiAobV9jb25maWcpCistICAgICAgICAgICAgICAgIG1feGtiU3Rh dGUucmVzZXQoeGtiX3N0YXRlX25ldyhtX3hrYktleW1hcC5nZXQoKSkpOworLSAgICAgICAgICAg IGVsc2UKKy0gICAgICAgICAgICAgICAgbV94a2JTdGF0ZS5yZXNldCh4a2JfeDExX3N0YXRlX25l d19mcm9tX2RldmljZShtX3hrYktleW1hcC5nZXQoKSwgeGNiX2Nvbm5lY3Rpb24oKSwgY29yZV9k ZXZpY2VfaWQpKTsKKy0KKy0gICAgICAgIH0KKysgICAgICAgIGlmIChtX3hrYktleW1hcCkKKysg ICAgICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhrYl94MTFfc3RhdGVfbmV3X2Zyb21fZGV2aWNl KG1feGtiS2V5bWFwLmdldCgpLCB4Y2JfY29ubmVjdGlvbigpLCBjb3JlX2RldmljZV9pZCkpOwor ICAgICB9IGVsc2UgeworICAgICAgICAgbV94a2JLZXltYXAucmVzZXQoa2V5bWFwRnJvbUNvcmUo a2V5c3ltTW9kcykpOworICAgICAgICAgaWYgKG1feGtiS2V5bWFwKQorQEAgLTQyNSw4ICs0MTEs NiBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyAgICAgdXBkYXRlWEtCTW9k cygpOworIAorICAgICBRWGtiQ29tbW9uOjp2ZXJpZnlIYXNMYXRpbkxheW91dChtX3hrYktleW1h cC5nZXQoKSk7CistCistICAgIG1fY29uZmlnID0gdHJ1ZTsKKyB9CisgCisgUUxpc3Q8aW50PiBR WGNiS2V5Ym9hcmQ6OnBvc3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2ZW50KSBjb25zdAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2Fy ZC5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmgKK2lu ZGV4IGI2NTJjODVmZTMuLjBlZTA4YWVmZjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmgKK0BAIC02OSw3ICs2OSw2IEBAIHB1YmxpYzoK KyAKKyAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIHRyYW5zbGF0ZU1vZGlmaWVycyhpbnQgcykg Y29uc3Q7CisgICAgIHZvaWQgdXBkYXRlS2V5bWFwKHhjYl9tYXBwaW5nX25vdGlmeV9ldmVudF90 ICpldmVudCk7CistICAgIHZvaWQgdXBkYXRlS2V5bWFwKHhjYl94a2JfbmV3X2tleWJvYXJkX25v dGlmeV9ldmVudF90ICpldmVudCk7CisgICAgIHZvaWQgdXBkYXRlS2V5bWFwKCk7CisgICAgIFFM aXN0PGludD4gcG9zc2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0OworIAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cu Y3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAKK2lu ZGV4IGZmZGE3YjZhNTcuLjg2M2U5NjFmNGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAKK0BAIC01NjQsMTEgKzU2NCw2IEBAIHZvaWQg UVhjYldpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnJlY3QpCisgeworICAgICBRUGxh dGZvcm1XaW5kb3c6OnNldEdlb21ldHJ5KHJlY3QpOworIAorLSAgICBpZiAoc2hvdWxkRGVmZXJU YXNrKFRhc2s6OlNldEdlb21ldHJ5KSkgeworLSAgICAgICAgbV9kZWZlcnJlZEdlb21ldHJ5ID0g cmVjdDsKKy0gICAgICAgIHJldHVybjsKKy0gICAgfQorLQorICAgICBwcm9wYWdhdGVTaXplSGlu dHMoKTsKKyAKKyAgICAgUVhjYlNjcmVlbiAqY3VycmVudFNjcmVlbiA9IHhjYlNjcmVlbigpOwor QEAgLTY5Myw5ICs2ODgsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFZpc2libGUoYm9vbCB2aXNp YmxlKQorIAorIHZvaWQgUVhjYldpbmRvdzo6c2hvdygpCisgeworLSAgICBpZiAoc2hvdWxkRGVm ZXJUYXNrKFRhc2s6Ok1hcCkpCistICAgICAgICByZXR1cm47CistCisgICAgIGlmICh3aW5kb3co KS0+aXNUb3BMZXZlbCgpKSB7CisgCisgICAgICAgICAvLyB1cGRhdGUgV01fTk9STUFMX0hJTlRT CitAQCAtNzA2LDcgKzY5OCw3IEBAIHZvaWQgUVhjYldpbmRvdzo6c2hvdygpCisgICAgICAgICBp ZiAoaXNUcmFuc2llbnQod2luZG93KCkpKSB7CisgICAgICAgICAgICAgY29uc3QgUVdpbmRvdyAq dHAgPSB3aW5kb3coKS0+dHJhbnNpZW50UGFyZW50KCk7CisgICAgICAgICAgICAgaWYgKHRwICYm IHRwLT5oYW5kbGUoKSkKKy0gICAgICAgICAgICAgICAgdHJhbnNpZW50WGNiUGFyZW50ID0gc3Rh dGljX2Nhc3Q8Y29uc3QgUVhjYldpbmRvdyAqPih0cC0+aGFuZGxlKCkpLT53aW5JZCgpOworKyAg ICAgICAgICAgICAgICB0cmFuc2llbnRYY2JQYXJlbnQgPSB0cC0+aGFuZGxlKCktPndpbklkKCk7 CisgICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBjbGllbnQgbGVhZGVyIGlmIHRoZXJlIGlzIG5v IHRyYW5zaWVudCBwYXJlbnQsIGVsc2UgbW9kYWwgZGlhbG9ncyBjYW4KKyAgICAgICAgICAgICAv LyBiZSBoaWRkZW4gYnkgdGhlaXIgcGFyZW50cy4KKyAgICAgICAgICAgICBpZiAoIXRyYW5zaWVu dFhjYlBhcmVudCkKK0BAIC03NDYsMTAgKzczOCw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2hvdygp CisgCisgdm9pZCBRWGNiV2luZG93OjpoaWRlKCkKKyB7CistICAgIGlmIChzaG91bGREZWZlclRh c2soVGFzazo6VW5tYXApKQorLSAgICAgICAgcmV0dXJuOworLQorLSAgICBtX3dtU3RhdGVWYWxp ZCA9IGZhbHNlOworICAgICB4Y2JfdW5tYXBfd2luZG93KHhjYl9jb25uZWN0aW9uKCksIG1fd2lu ZG93KTsKKyAKKyAgICAgLy8gc2VuZCBzeW50aGV0aWMgVW5tYXBOb3RpZnkgZXZlbnQgYWNjb3Jk aW5nIHRvIGljY2NtIDQuMS40CitAQCAtOTA5LDkgKzg5Nyw2IEBAIFFYY2JXaW5kb3c6Ok5ldFdt U3RhdGVzIFFYY2JXaW5kb3c6Om5ldFdtU3RhdGVzKCkKKyAKKyB2b2lkIFFYY2JXaW5kb3c6OnNl dFdpbmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFncyBmbGFncykKKyB7CistICAgIGlmIChzaG91bGRE ZWZlclRhc2soVGFzazo6U2V0V2luZG93RmxhZ3MpKQorLSAgICAgICAgcmV0dXJuOworLQorICAg ICBRdDo6V2luZG93VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8UXQ6OldpbmRvd1R5cGU+KGludChm bGFncyAmIFF0OjpXaW5kb3dUeXBlX01hc2spKTsKKyAKKyAgICAgaWYgKHR5cGUgPT0gUXQ6OlRv b2xUaXApCitAQCAtOTQxLDggKzkyNiw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93Rmxh Z3MoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKQorIAorICAgICBzZXRUcmFuc3BhcmVudEZvck1vdXNl RXZlbnRzKGZsYWdzICYgUXQ6OldpbmRvd1RyYW5zcGFyZW50Rm9ySW5wdXQpOworICAgICB1cGRh dGVEb2VzTm90QWNjZXB0Rm9jdXMoZmxhZ3MgJiBRdDo6V2luZG93RG9lc05vdEFjY2VwdEZvY3Vz KTsKKy0KKy0gICAgbV9pc1dtTWFuYWdlZFdpbmRvdyA9ICEoZmxhZ3MgJiBRdDo6WDExQnlwYXNz V2luZG93TWFuYWdlckhpbnQpOworIH0KKyAKKyB2b2lkIFFYY2JXaW5kb3c6OnNldE1vdGlmV21I aW50cyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpCitAQCAtMTE0Miw5ICsxMTI1LDYgQEAgdm9pZCBR WGNiV2luZG93OjpzZXRXaW5kb3dTdGF0ZShRdDo6V2luZG93U3RhdGVzIHN0YXRlKQorICAgICBp ZiAoc3RhdGUgPT0gbV93aW5kb3dTdGF0ZSkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYg KHNob3VsZERlZmVyVGFzayhUYXNrOjpTZXRXaW5kb3dTdGF0ZSkpCistICAgICAgICByZXR1cm47 CistCisgICAgIC8vIHVuc2V0IG9sZCBzdGF0ZQorICAgICBpZiAobV93aW5kb3dTdGF0ZSAmIFF0 OjpXaW5kb3dNaW5pbWl6ZWQpCisgICAgICAgICB4Y2JfbWFwX3dpbmRvdyh4Y2JfY29ubmVjdGlv bigpLCBtX3dpbmRvdyk7CitAQCAtMTM1MCw2ICsxMzMwLDEyIEBAIHZvaWQgUVhjYldpbmRvdzo6 c2V0V2luZG93SWNvbihjb25zdCBRSWNvbiAmaWNvbikKKyAgICAgfQorIAorICAgICBpZiAoIWlj b25fZGF0YS5pc0VtcHR5KCkpIHsKKysgICAgICAgIC8vIElnbm9yZSBpY29uIGV4Y2VlZGluZyBt YXhpbXVtIHhjYiByZXF1ZXN0IGxlbmd0aAorKyAgICAgICAgaWYgKGljb25fZGF0YS5zaXplKCkg PiB4Y2JfZ2V0X21heGltdW1fcmVxdWVzdF9sZW5ndGgoeGNiX2Nvbm5lY3Rpb24oKSkpIHsKKysg ICAgICAgICAgICBxV2FybmluZygiSWdub3Jpbmcgd2luZG93IGljb246IFNpemUgJWxsdSBleGNl ZWRzIG1heGltdW0geGNiIHJlcXVlc3QgbGVuZ3RoICV1LiIsCisrICAgICAgICAgICAgICAgICAg ICAgaWNvbl9kYXRhLnNpemUoKSwgeGNiX2dldF9tYXhpbXVtX3JlcXVlc3RfbGVuZ3RoKHhjYl9j b25uZWN0aW9uKCkpKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisgICAgICAg ICB4Y2JfY2hhbmdlX3Byb3BlcnR5KHhjYl9jb25uZWN0aW9uKCksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFhDQl9QUk9QX01PREVfUkVQTEFDRSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbV93aW5kb3csCitAQCAtMTYzOSw3ICsxNjI1LDcgQEAgdm9pZCBRWGNiV2luZG93 OjpzZXRXbVdpbmRvd1R5cGUoUVhjYldpbmRvd0Z1bmN0aW9uczo6V21XaW5kb3dUeXBlcyB0eXBl cywgUXQ6OlcKKyAgICAgICAgIGJyZWFrOworICAgICB9CisgCistICAgIGlmICgoZmxhZ3MgJiBR dDo6RnJhbWVsZXNzV2luZG93SGludCkgJiYgISh0eXBlICYgUVhjYldpbmRvd0Z1bmN0aW9uczo6 S2RlT3ZlcnJpZGUpKSB7CisrICAgIGlmICgoZmxhZ3MgJiBRdDo6RnJhbWVsZXNzV2luZG93SGlu dCkgJiYgISh0eXBlcyAmIFFYY2JXaW5kb3dGdW5jdGlvbnM6OktkZU92ZXJyaWRlKSkgeworICAg ICAgICAgLy8gb3ZlcnJpZGUgbmV0d20gdHlwZSAtIHF1aWNrIGFuZCBlYXN5IGZvciBLREUgbm9i b3JkZXIKKyAgICAgICAgIGF0b21zLmFwcGVuZChhdG9tKFFYY2JBdG9tOjpfS0RFX05FVF9XTV9X SU5ET1dfVFlQRV9PVkVSUklERSkpOworICAgICB9CitAQCAtMTg5NCwxMCArMTg4MCw2IEBAIHZv aWQgUVhjYldpbmRvdzo6aGFuZGxlVW5tYXBOb3RpZnlFdmVudChjb25zdCB4Y2JfdW5tYXBfbm90 aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICBpZiAoZXZlbnQtPndpbmRvdyA9PSBtX3dpbmRvdykg eworICAgICAgICAgbV9tYXBwZWQgPSBmYWxzZTsKKyAgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRl cmZhY2U6OmhhbmRsZUV4cG9zZUV2ZW50KHdpbmRvdygpLCBRUmVnaW9uKCkpOworLSAgICAgICAg aWYgKCFtX2lzV21NYW5hZ2VkV2luZG93IHx8IHBhcmVudCgpKSB7CistICAgICAgICAgICAgbV93 bVN0YXRlVmFsaWQgPSB0cnVlOworLSAgICAgICAgICAgIGhhbmRsZURlZmVycmVkVGFza3MoKTsK Ky0gICAgICAgIH0KKyAgICAgfQorIH0KKyAKK0BAIC0yMjEyLDk4ICsyMTk0LDMwIEBAIHZvaWQg UVhjYldpbmRvdzo6aGFuZGxlTGVhdmVOb3RpZnlFdmVudChjb25zdCB4Y2JfbGVhdmVfbm90aWZ5 X2V2ZW50X3QgKmV2ZW50KQorICAgICBoYW5kbGVMZWF2ZU5vdGlmeUV2ZW50KGV2ZW50LT5yb290 X3gsIGV2ZW50LT5yb290X3ksIGV2ZW50LT5tb2RlLCBldmVudC0+ZGV0YWlsLCBldmVudC0+dGlt ZSk7CisgfQorIAorLWJvb2wgUVhjYldpbmRvdzo6c2hvdWxkRGVmZXJUYXNrKFRhc2sgdGFzaykK Ky17CistICAgIGlmIChtX3dtU3RhdGVWYWxpZCkKKy0gICAgICAgIHJldHVybiBmYWxzZTsKKy0K Ky0gICAgbV9kZWZlcnJlZFRhc2tzLmFwcGVuZCh0YXNrKTsKKy0gICAgcmV0dXJuIHRydWU7Cist fQorLQorLXZvaWQgUVhjYldpbmRvdzo6aGFuZGxlRGVmZXJyZWRUYXNrcygpCisteworLSAgICBR X0FTU0VSVChtX3dtU3RhdGVWYWxpZCA9PSB0cnVlKTsKKy0gICAgaWYgKG1fZGVmZXJyZWRUYXNr cy5pc0VtcHR5KCkpCistICAgICAgICByZXR1cm47CistCistICAgIGJvb2wgbWFwID0gZmFsc2U7 CistICAgIGJvb2wgdW5tYXAgPSBmYWxzZTsKKy0KKy0gICAgUVZlY3RvcjxUYXNrPiB0YXNrczsK Ky0gICAgZm9yIChhdXRvIHRhc2tJdCA9IG1fZGVmZXJyZWRUYXNrcy5yYmVnaW4oKTsgdGFza0l0 ICE9IG1fZGVmZXJyZWRUYXNrcy5yZW5kKCk7ICsrdGFza0l0KSB7CistICAgICAgICBpZiAoIXRh c2tzLmNvbnRhaW5zKCp0YXNrSXQpKQorLSAgICAgICAgICAgIHRhc2tzLnByZXBlbmQoKnRhc2tJ dCk7CistICAgIH0KKy0KKy0gICAgZm9yIChUYXNrIHRhc2sgOiB0YXNrcykgeworLSAgICAgICAg c3dpdGNoICh0YXNrKSB7CistICAgICAgICBjYXNlIFRhc2s6Ok1hcDoKKy0gICAgICAgICAgICBt YXAgPSB0cnVlOworLSAgICAgICAgICAgIHVubWFwID0gZmFsc2U7CistICAgICAgICAgICAgYnJl YWs7CistICAgICAgICBjYXNlIFRhc2s6OlVubWFwOgorLSAgICAgICAgICAgIHVubWFwID0gdHJ1 ZTsKKy0gICAgICAgICAgICBtYXAgPSBmYWxzZTsKKy0gICAgICAgICAgICBicmVhazsKKy0gICAg ICAgIGNhc2UgVGFzazo6U2V0R2VvbWV0cnk6CistICAgICAgICAgICAgc2V0R2VvbWV0cnkobV9k ZWZlcnJlZEdlb21ldHJ5KTsKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgICAgIGNhc2UgVGFz azo6U2V0V2luZG93RmxhZ3M6CistICAgICAgICAgICAgc2V0V2luZG93RmxhZ3Mod2luZG93KCkt PmZsYWdzKCkpOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBUYXNrOjpTZXRX aW5kb3dTdGF0ZToKKy0gICAgICAgICAgICBzZXRXaW5kb3dTdGF0ZSh3aW5kb3coKS0+d2luZG93 U3RhdGUoKSk7CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICB9CistICAgIH0KKy0gICAg bV9kZWZlcnJlZFRhc2tzLmNsZWFyKCk7CistCistICAgIGlmIChtYXApIHsKKy0gICAgICAgIFFf QVNTRVJUKHVubWFwID09IGZhbHNlKTsKKy0gICAgICAgIHNob3coKTsKKy0gICAgfQorLSAgICBp ZiAodW5tYXApIHsKKy0gICAgICAgIFFfQVNTRVJUKG1hcCA9PSBmYWxzZSk7CistICAgICAgICBo aWRlKCk7CistICAgIH0KKy19CistCisgdm9pZCBRWGNiV2luZG93OjpoYW5kbGVQcm9wZXJ0eU5v dGlmeUV2ZW50KGNvbnN0IHhjYl9wcm9wZXJ0eV9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpCisgewor ICAgICBjb25uZWN0aW9uKCktPnNldFRpbWUoZXZlbnQtPnRpbWUpOworIAorLSAgICBjb25zdCBi b29sIHdtU3RhdGVDaGFuZ2VkID0gZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6V01fU1RB VEUpOworLSAgICBjb25zdCBib29sIG5ldFdtU3RhdGVDaGFuZ2VkID0gZXZlbnQtPmF0b20gPT0g YXRvbShRWGNiQXRvbTo6X05FVF9XTV9TVEFURSk7CistICAgIGlmIChuZXRXbVN0YXRlQ2hhbmdl ZCB8fCB3bVN0YXRlQ2hhbmdlZCkgeworLSAgICAgICAgaWYgKHdtU3RhdGVDaGFuZ2VkICYmICFt X3dtU3RhdGVWYWxpZCAmJiBtX2lzV21NYW5hZ2VkV2luZG93KSB7CistICAgICAgICAgICAgLy8g SUNDQ00gNC4xLjQKKy0gICAgICAgICAgICAvLyBDbGllbnRzIHRoYXQgd2FudCB0byByZS11c2Ug YSBjbGllbnQgd2luZG93IChlLmcuIGJ5IG1hcHBpbmcgaXQgYWdhaW4pCistICAgICAgICAgICAg Ly8gYWZ0ZXIgd2l0aGRyYXdpbmcgaXQgbXVzdCB3YWl0IGZvciB0aGUgd2l0aGRyYXdhbCB0byBi ZSBjb21wbGV0ZSBiZWZvcmUKKy0gICAgICAgICAgICAvLyBwcm9jZWVkaW5nLiBUaGUgcHJlZmVy cmVkIG1ldGhvZCBmb3IgZG9pbmcgdGhpcyBpcyBmb3IgY2xpZW50cyB0byB3YWl0IGZvcgorLSAg ICAgICAgICAgIC8vIGEgd2luZG93IG1hbmFnZXIgdG8gdXBkYXRlIG9yIHJlbW92ZSB0aGUgV01f U1RBVEUgcHJvcGVydHkuCistICAgICAgICAgICAgbV93bVN0YXRlVmFsaWQgPSB0cnVlOworLSAg ICAgICAgICAgIGhhbmRsZURlZmVycmVkVGFza3MoKTsKKy0gICAgICAgIH0KKy0gICAgICAgIGlm IChldmVudC0+c3RhdGUgPT0gWENCX1BST1BFUlRZX0RFTEVURSkKKysgICAgY29uc3QgYm9vbCBw cm9wZXJ0eURlbGV0ZWQgPSBldmVudC0+c3RhdGUgPT0gWENCX1BST1BFUlRZX0RFTEVURTsKKysK KysgICAgaWYgKGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfV01fU1RBVEUpIHx8 IGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206OldNX1NUQVRFKSkgeworKyAgICAgICAgaWYg KHByb3BlcnR5RGVsZXRlZCkKKyAgICAgICAgICAgICByZXR1cm47CisgCistICAgICAgICBpZiAo d21TdGF0ZUNoYW5nZWQpIHsKKysgICAgICAgIFF0OjpXaW5kb3dTdGF0ZXMgbmV3U3RhdGUgPSBR dDo6V2luZG93Tm9TdGF0ZTsKKysKKysgICAgICAgIGlmIChldmVudC0+YXRvbSA9PSBhdG9tKFFY Y2JBdG9tOjpXTV9TVEFURSkpIHsgLy8gV01fU1RBVEU6IFF1aWNrIGNoZWNrIGZvciAnTWluaW1p emUnLgorICAgICAgICAgICAgIGF1dG8gcmVwbHkgPSBRX1hDQl9SRVBMWSh4Y2JfZ2V0X3Byb3Bl cnR5LCB4Y2JfY29ubmVjdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAwLCBtX3dpbmRvdywgYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBYQ0JfQVRPTV9BTlksIDAsIDEwMjQpOworICAgICAg ICAgICAgIGlmIChyZXBseSAmJiByZXBseS0+Zm9ybWF0ID09IDMyICYmIHJlcGx5LT50eXBlID09 IGF0b20oUVhjYkF0b206OldNX1NUQVRFKSkgeworLSAgICAgICAgICAgICAgICBhdXRvIGRhdGEg PSBzdGF0aWNfY2FzdDxjb25zdCBxdWludDMyICo+KHhjYl9nZXRfcHJvcGVydHlfdmFsdWUocmVw bHkuZ2V0KCkpKTsKKy0gICAgICAgICAgICAgICAgaWYgKHJlcGx5LT5sZW5ndGggIT0gMCkgewor LSAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBjaGFuZ2VkVG9XaXRoZHJhd24gPSBkYXRh WzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9XSVRIRFJBV047CistICAgICAgICAgICAgICAgICAg ICBjb25zdCBib29sIGNoYW5nZWRUb0ljb25pYyA9IGRhdGFbMF0gPT0gWENCX0lDQ0NNX1dNX1NU QVRFX0lDT05JQzsKKy0gICAgICAgICAgICAgICAgICAgIG1fbWluaW1pemVkID0gY2hhbmdlZFRv SWNvbmljIHx8IChjaGFuZ2VkVG9XaXRoZHJhd24gJiYgbV9taW5pbWl6ZWQpOworLSAgICAgICAg ICAgICAgICB9CisrICAgICAgICAgICAgICAgIGNvbnN0IHF1aW50MzIgKmRhdGEgPSAoY29uc3Qg cXVpbnQzMiAqKXhjYl9nZXRfcHJvcGVydHlfdmFsdWUocmVwbHkuZ2V0KCkpOworKyAgICAgICAg ICAgICAgICBpZiAocmVwbHktPmxlbmd0aCAhPSAwKQorKyAgICAgICAgICAgICAgICAgICAgbV9t aW5pbWl6ZWQgPSAoZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfSUNPTklDCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01f U1RBVEVfV0lUSERSQVdOICYmIG1fbWluaW1pemVkKSk7CisgICAgICAgICAgICAgfQorICAgICAg ICAgfQorIAorLSAgICAgICAgLy8gX05FVF9XTV9TVEFURSBoYW5kbGluZworLSAgICAgICAgUXQ6 OldpbmRvd1N0YXRlcyBuZXdTdGF0ZSA9IFF0OjpXaW5kb3dOb1N0YXRlOworICAgICAgICAgY29u c3QgTmV0V21TdGF0ZXMgc3RhdGVzID0gbmV0V21TdGF0ZXMoKTsKKyAgICAgICAgIC8vIF9ORVRf V01fU1RBVEVfSElEREVOIHNob3VsZCBiZSBzZXQgYnkgdGhlIFdpbmRvdyBNYW5hZ2VyIHRvIGlu ZGljYXRlIHRoYXQgYSB3aW5kb3cgd291bGQKKyAgICAgICAgIC8vIG5vdCBiZSB2aXNpYmxlIG9u IHRoZSBzY3JlZW4gaWYgaXRzIGRlc2t0b3Avdmlld3BvcnQgd2VyZSBhY3RpdmUgYW5kIGl0cyBj b29yZGluYXRlcyB3ZXJlCitAQCAtMjMyNSw2ICsyMjM5LDcgQEAgdm9pZCBRWGNiV2luZG93Ojpo YW5kbGVQcm9wZXJ0eU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9wcm9wZXJ0eV9ub3RpZnlfZXZlbnRf dCAqZXYKKyAgICAgICAgICAgICBpZiAoKG1fd2luZG93U3RhdGUgJiBRdDo6V2luZG93TWluaW1p emVkKSAmJiBjb25uZWN0aW9uKCktPm1vdXNlR3JhYmJlcigpID09IHRoaXMpCisgICAgICAgICAg ICAgICAgIGNvbm5lY3Rpb24oKS0+c2V0TW91c2VHcmFiYmVyKG51bGxwdHIpOworICAgICAgICAg fQorKyAgICAgICAgcmV0dXJuOworICAgICB9IGVsc2UgaWYgKGV2ZW50LT5hdG9tID09IGF0b20o UVhjYkF0b206Ol9ORVRfRlJBTUVfRVhURU5UUykpIHsKKyAgICAgICAgIG1fZGlydHlGcmFtZU1h cmdpbnMgPSB0cnVlOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94 Y2IvcXhjYndpbmRvdy5oCitpbmRleCA1NWFmOTI3OWIxLi42ZjVjMWY1ZWQ5IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oCisrKysgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmgKK0BAIC03NCwxNCAr NzQsNiBAQCBwdWJsaWM6CisgCisgICAgIFFfREVDTEFSRV9GTEFHUyhOZXRXbVN0YXRlcywgTmV0 V21TdGF0ZSkKKyAKKy0gICAgZW51bSBUYXNrIHsKKy0gICAgICAgIE1hcCwKKy0gICAgICAgIFVu bWFwLAorLSAgICAgICAgU2V0R2VvbWV0cnksCistICAgICAgICBTZXRXaW5kb3dGbGFncywKKy0g ICAgICAgIFNldFdpbmRvd1N0YXRlCistICAgIH07CistCisgICAgIFFYY2JXaW5kb3coUVdpbmRv dyAqd2luZG93KTsKKyAgICAgflFYY2JXaW5kb3coKTsKKyAKK0BAIC0xNTEsOSArMTQzLDYgQEAg cHVibGljOgorIAorICAgICBRWGNiV2luZG93ICp0b1dpbmRvdygpIG92ZXJyaWRlOworIAorLSAg ICBib29sIHNob3VsZERlZmVyVGFzayhUYXNrIHRhc2spOworLSAgICB2b2lkIGhhbmRsZURlZmVy cmVkVGFza3MoKTsKKy0KKyAgICAgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KHhjYl90aW1lc3RhbXBf dCB0aW1lLCBjb25zdCBRUG9pbnQgJmxvY2FsLCBjb25zdCBRUG9pbnQgJmdsb2JhbCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RpZmllcnMsIFFF dmVudDo6VHlwZSB0eXBlLCBRdDo6TW91c2VFdmVudFNvdXJjZSBzb3VyY2UpOworIAorQEAgLTI5 MiwxMSArMjgxLDYgQEAgcHJvdGVjdGVkOgorICAgICBpbnQgbV9zd2FwSW50ZXJ2YWwgPSAtMTsK KyAKKyAgICAgcXJlYWwgbV9zaXplSGludHNTY2FsZUZhY3RvciA9IDEuMDsKKy0KKy0gICAgYm9v bCBtX3dtU3RhdGVWYWxpZCA9IHRydWU7CistICAgIFFWZWN0b3I8VGFzaz4gbV9kZWZlcnJlZFRh c2tzOworLSAgICBib29sIG1faXNXbU1hbmFnZWRXaW5kb3cgPSB0cnVlOworLSAgICBRUmVjdCBt X2RlZmVycmVkR2VvbWV0cnk7CisgfTsKKyAKKyBjbGFzcyBRWGNiRm9yZWlnbldpbmRvdyA6IHB1 YmxpYyBRWGNiV2luZG93CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt dGhlbWVzL2d0azMvcWd0azNtZW51LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRo ZW1lcy9ndGszL3FndGszbWVudS5jcHAKK2luZGV4IGQ5ZDExN2ZhZWIuLjY0MGI0OWRhYTAgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3RrM21l bnUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3Rr M21lbnUuY3BwCitAQCAtODUsNiArODUsNyBAQCBRR3RrM01lbnVJdGVtOjpRR3RrM01lbnVJdGVt KCkKKyAgICAgICBtX2NoZWNrYWJsZShmYWxzZSksCisgICAgICAgbV9jaGVja2VkKGZhbHNlKSwK KyAgICAgICBtX2VuYWJsZWQodHJ1ZSksCisrICAgICAgbV9leGNsdXNpdmUoZmFsc2UpLAorICAg ICAgIG1fdW5kZXJsaW5lKGZhbHNlKSwKKyAgICAgICBtX2ludmFsaWQodHJ1ZSksCisgICAgICAg bV9tZW51KG51bGxwdHIpLAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZy5jcHAg Yi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRn ZGVza3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwCitpbmRleCAwMDQ4YmJjMWU2Li4zOTZlN2Y2ZDFj IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0 b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0 YWxmaWxlZGlhbG9nLmNwcAorQEAgLTEwMiwxNSArMTAyLDEyIEBAIGNvbnN0IFFEQnVzQXJndW1l bnQgJm9wZXJhdG9yID4+KGNvbnN0IFFEQnVzQXJndW1lbnQgJmFyZywgUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlCisgY2xhc3MgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZQorIHsKKyBw dWJsaWM6CistICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUoUVBsYXRmb3Jt RmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZykKKysgICAgUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nUHJpdmF0ZShRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxl RGlhbG9nLCB1aW50IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikKKyAgICAgICAgIDogbmF0aXZl RmlsZURpYWxvZyhuYXRpdmVGaWxlRGlhbG9nKQorKyAgICAgICAgLCBmaWxlQ2hvb3NlclBvcnRh bFZlcnNpb24oZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKQorICAgICB7IH0KKyAKKy0gICAgV0lk IHdpbklkID0gMDsKKy0gICAgYm9vbCBkaXJlY3RvcnlNb2RlID0gZmFsc2U7CistICAgIGJvb2wg bW9kYWwgPSBmYWxzZTsKKy0gICAgYm9vbCBtdWx0aXBsZUZpbGVzID0gZmFsc2U7CistICAgIGJv b2wgc2F2ZUZpbGUgPSBmYWxzZTsKKysgICAgUUV2ZW50TG9vcCBsb29wOworICAgICBRU3RyaW5n IGFjY2VwdExhYmVsOworICAgICBRU3RyaW5nIGRpcmVjdG9yeTsKKyAgICAgUVN0cmluZyB0aXRs ZTsKK0BAIC0xMjEsMTkgKzExOCwyNyBAQCBwdWJsaWM6CisgICAgIFFTdHJpbmcgc2VsZWN0ZWRN aW1lVHlwZUZpbHRlcjsKKyAgICAgUVN0cmluZyBzZWxlY3RlZE5hbWVGaWx0ZXI7CisgICAgIFFT dHJpbmdMaXN0IHNlbGVjdGVkRmlsZXM7CistICAgIFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIg Km5hdGl2ZUZpbGVEaWFsb2cgPSBudWxscHRyOworKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UVBsYXRm b3JtRmlsZURpYWxvZ0hlbHBlcj4gbmF0aXZlRmlsZURpYWxvZzsKKysgICAgdWludCBmaWxlQ2hv b3NlclBvcnRhbFZlcnNpb24gPSAwOworKyAgICBib29sIGZhaWxlZFRvT3BlbiA9IGZhbHNlOwor KyAgICBib29sIGRpcmVjdG9yeU1vZGUgPSBmYWxzZTsKKysgICAgYm9vbCBtdWx0aXBsZUZpbGVz ID0gZmFsc2U7CisrICAgIGJvb2wgc2F2ZUZpbGUgPSBmYWxzZTsKKyB9OworIAorLVFYZGdEZXNr dG9wUG9ydGFsRmlsZURpYWxvZzo6UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKFFQbGF0Zm9y bUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cpCisrUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nOjpRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coUVBsYXRmb3JtRmlsZURpYWxv Z0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZywgdWludCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24p CisgICAgIDogUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcigpCistICAgICwgZF9wdHIobmV3IFFY ZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUobmF0aXZlRmlsZURpYWxvZykpCisrICAg ICwgZF9wdHIobmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUobmF0aXZlRmls ZURpYWxvZywgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKSkKKyB7CisgICAgIFFfRChRWGRnRGVz a3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorICAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZykg eworLSAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlhbG9nLCBTSUdOQUwoYWNjZXB0KCkp LCB0aGlzLCBTSUdOQUwoYWNjZXB0KCkpKTsKKy0gICAgICAgIGNvbm5lY3QoZC0+bmF0aXZlRmls ZURpYWxvZywgU0lHTkFMKHJlamVjdCgpKSwgdGhpcywgU0lHTkFMKHJlamVjdCgpKSk7CisrICAg ICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2cuZ2V0KCksIFNJR05BTChhY2NlcHQoKSks IHRoaXMsIFNJR05BTChhY2NlcHQoKSkpOworKyAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxl RGlhbG9nLmdldCgpLCBTSUdOQUwocmVqZWN0KCkpLCB0aGlzLCBTSUdOQUwocmVqZWN0KCkpKTsK KyAgICAgfQorKworKyAgICBkLT5sb29wLmNvbm5lY3QodGhpcywgU0lHTkFMKGFjY2VwdCgpKSwg U0xPVChxdWl0KCkpKTsKKysgICAgZC0+bG9vcC5jb25uZWN0KHRoaXMsIFNJR05BTChyZWplY3Qo KSksIFNMT1QocXVpdCgpKSk7CisgfQorIAorIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6 flFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZygpCitAQCAtMTc3LDcgKzE4Miw3IEBAIHZvaWQg UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjppbml0aWFsaXplRGlhbG9nKCkKKyAgICAgc2V0 RGlyZWN0b3J5KG9wdGlvbnMoKS0+aW5pdGlhbERpcmVjdG9yeSgpKTsKKyB9CisgCistdm9pZCBR WGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQorK3ZvaWQgUVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKFF0OjpXaW5kb3dGbGFncyB3aW5kb3dGbGFn cywgUXQ6OldpbmRvd01vZGFsaXR5IHdpbmRvd01vZGFsaXR5LCBRV2luZG93ICpwYXJlbnQpCisg eworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKK0BAIC0xODUsMTMg KzE5MCwxMyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbCgp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFMYXRpbjFTdHJpbmcoIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3AiKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UUxhdGluMVN0cmluZygib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5GaWxlQ2hvb3NlciIpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk LT5zYXZlRmlsZSA/IFFMYXRpbjFTdHJpbmcoIlNhdmVGaWxlIikgOiBRTGF0aW4xU3RyaW5nKCJP cGVuRmlsZSIpKTsKKy0gICAgUVN0cmluZyBwYXJlbnRXaW5kb3dJZCA9IFFMYXRpbjFTdHJpbmco IngxMToiKSArIFFTdHJpbmc6Om51bWJlcihkLT53aW5JZCwgMTYpOworKyAgICBRU3RyaW5nIHBh cmVudFdpbmRvd0lkID0gUUxhdGluMVN0cmluZygieDExOiIpICsgUVN0cmluZzo6bnVtYmVyKHBh cmVudCA/IHBhcmVudC0+d2luSWQoKSA6IDAsIDE2KTsKKyAKKyAgICAgUVZhcmlhbnRNYXAgb3B0 aW9uczsKKyAgICAgaWYgKCFkLT5hY2NlcHRMYWJlbC5pc0VtcHR5KCkpCisgICAgICAgICBvcHRp b25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJhY2NlcHRfbGFiZWwiKSwgZC0+YWNjZXB0TGFiZWwp OworIAorLSAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJtb2RhbCIpLCBkLT5tb2Rh bCk7CisrICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoIm1vZGFsIiksIHdpbmRvd01v ZGFsaXR5ICE9IFF0OjpOb25Nb2RhbCk7CisgICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJp bmcoIm11bHRpcGxlIiksIGQtPm11bHRpcGxlRmlsZXMpOworICAgICBvcHRpb25zLmluc2VydChR TGF0aW4xU3RyaW5nKCJkaXJlY3RvcnkiKSwgZC0+ZGlyZWN0b3J5TW9kZSk7CisgCitAQCAtMjkw LDEwICsyOTUsMTggQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0 YWwoKQorIAorICAgICBRREJ1c1BlbmRpbmdDYWxsIHBlbmRpbmdDYWxsID0gUURCdXNDb25uZWN0 aW9uOjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1lc3NhZ2UpOworICAgICBRREJ1c1BlbmRpbmdD YWxsV2F0Y2hlciAqd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcihwZW5kaW5n Q2FsbCk7CistICAgIGNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpm aW5pc2hlZCwgdGhpcywgW3RoaXNdIChRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlcikg eworKyAgICBjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcjo6ZmluaXNo ZWQsIHRoaXMsIFs9XSAoUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKyAgICAg ICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFEQnVzT2JqZWN0UGF0aD4gcmVwbHkgPSAqd2F0Y2hlcjsK Ky0gICAgICAgIGlmIChyZXBseS5pc0Vycm9yKCkpIHsKKy0gICAgICAgICAgICBRX0VNSVQgcmVq ZWN0KCk7CisrICAgICAgICAvLyBBbnkgZXJyb3IgbWVhbnMgdGhlIGRpYWxvZyBpcyBub3Qgc2hv d24gYW5kIHdlIG5lZWQgdG8gZmFsbGJhY2sKKysgICAgICAgIGQtPmZhaWxlZFRvT3BlbiA9IHJl cGx5LmlzRXJyb3IoKTsKKysgICAgICAgIGlmIChkLT5mYWlsZWRUb09wZW4pIHsKKysgICAgICAg ICAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZykgeworKyAgICAgICAgICAgICAgICBkLT5uYXRp dmVGaWxlRGlhbG9nLT5zaG93KHdpbmRvd0ZsYWdzLCB3aW5kb3dNb2RhbGl0eSwgcGFyZW50KTsK KysgICAgICAgICAgICAgICAgaWYgKGQtPmxvb3AuaXNSdW5uaW5nKCkpCisrICAgICAgICAgICAg ICAgICAgICBkLT5uYXRpdmVGaWxlRGlhbG9nLT5leGVjKCk7CisrICAgICAgICAgICAgfSBlbHNl IHsKKysgICAgICAgICAgICAgICAgUV9FTUlUIHJlamVjdCgpOworKyAgICAgICAgICAgIH0KKyAg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVz KCkuY29ubmVjdChudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVwbHkudmFsdWUoKS5wYXRoKCksCitAQCAtMzAyLDYgKzMxNSw3IEBA IHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTE9UKGdvdFJlc3Bv bnNlKHVpbnQsUVZhcmlhbnRNYXApKSk7CisgICAgICAgICB9CisrICAgICAgICB3YXRjaGVyLT5k ZWxldGVMYXRlcigpOworICAgICB9KTsKKyB9CisgCitAQCAtMzI2LDcgKzM0MCw3IEBAIFFVcmwg UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpkaXJlY3RvcnkoKSBjb25zdAorIHsKKyAgICAg UV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCistICAgIGlmIChkLT5u YXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dP cHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9n T3B0aW9uczo6RGlyZWN0b3J5T25seSkpCisrICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYm IHVzZU5hdGl2ZUZpbGVEaWFsb2coKSkKKyAgICAgICAgIHJldHVybiBkLT5uYXRpdmVGaWxlRGlh bG9nLT5kaXJlY3RvcnkoKTsKKyAKKyAgICAgcmV0dXJuIGQtPmRpcmVjdG9yeTsKK0BAIC0zNDgs NyArMzYyLDcgQEAgUUxpc3Q8UVVybD4gUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpzZWxl Y3RlZEZpbGVzKCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRWGRnRGVza3RvcFBvcnRhbEZp bGVEaWFsb2cpOworIAorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygp LT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMo KS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKQorKyAg ICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKCkpCisgICAg ICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+c2VsZWN0ZWRGaWxlcygpOworIAorICAg ICBRTGlzdDxRVXJsPiBmaWxlczsKK0BAIC00MDMsMTYgKzQxNywxMyBAQCB2b2lkIFFYZGdEZXNr dG9wUG9ydGFsRmlsZURpYWxvZzo6ZXhlYygpCisgeworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgKG9wdGlv bnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeSB8fCBvcHRp b25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5KSkg eworKyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKCkp IHsKKyAgICAgICAgIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPmV4ZWMoKTsKKyAgICAgICAgIHJldHVy bjsKKyAgICAgfQorIAorICAgICAvLyBIQUNLIHdlIGhhdmUgdG8gYXZvaWQgcmV0dXJuaW5nIHVu dGlsIHdlIGVtaXQgdGhhdCB0aGUgZGlhbG9nIHdhcyBhY2NlcHRlZCBvciByZWplY3RlZAorLSAg ICBRRXZlbnRMb29wIGxvb3A7CistICAgIGxvb3AuY29ubmVjdCh0aGlzLCBTSUdOQUwoYWNjZXB0 KCkpLCBTTE9UKHF1aXQoKSkpOworLSAgICBsb29wLmNvbm5lY3QodGhpcywgU0lHTkFMKHJlamVj dCgpKSwgU0xPVChxdWl0KCkpKTsKKy0gICAgbG9vcC5leGVjKCk7CisrICAgIGQtPmxvb3AuZXhl YygpOworIH0KKyAKKyB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6aGlkZSgpCitA QCAtNDI5LDEzICs0NDAsMTAgQEAgYm9vbCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OnNo b3coUXQ6OldpbmRvd0ZsYWdzIHdpbmRvd0ZsYWdzLCBRdDo6V2luZG93TW8KKyAKKyAgICAgaW5p dGlhbGl6ZURpYWxvZygpOworIAorLSAgICBkLT5tb2RhbCA9IHdpbmRvd01vZGFsaXR5ICE9IFF0 OjpOb25Nb2RhbDsKKy0gICAgZC0+d2luSWQgPSBwYXJlbnQgPyBwYXJlbnQtPndpbklkKCkgOiAw OworLQorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygpLT5maWxlTW9k ZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMoKS0+ZmlsZU1v ZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKQorKyAgICBpZiAoZC0+ bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKE9wZW5GYWxsYmFjaykpCisg ICAgICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+c2hvdyh3aW5kb3dGbGFncywgd2lu ZG93TW9kYWxpdHksIHBhcmVudCk7CisgCistICAgIG9wZW5Qb3J0YWwoKTsKKysgICAgb3BlblBv cnRhbCh3aW5kb3dGbGFncywgd2luZG93TW9kYWxpdHksIHBhcmVudCk7CisgCisgICAgIHJldHVy biB0cnVlOworIH0KK0BAIC00NjUsNCArNDczLDIxIEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nOjpnb3RSZXNwb25zZSh1aW50IHJlc3BvbnNlLCBjb25zdCBRVmFyaWFudE1hcCAm CisgICAgIH0KKyB9CisgCisrYm9vbCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OnVzZU5h dGl2ZUZpbGVEaWFsb2coUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpGYWxsYmFja1R5cGUg ZmFsbGJhY2tUeXBlKSBjb25zdAorK3sKKysgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFs RmlsZURpYWxvZyk7CisrCisrICAgIGlmIChkLT5mYWlsZWRUb09wZW4gJiYgZmFsbGJhY2tUeXBl ICE9IE9wZW5GYWxsYmFjaykKKysgICAgICAgIHJldHVybiB0cnVlOworKworKyAgICBpZiAoZC0+ ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uIDwgMykgeworKyAgICAgICAgaWYgKG9wdGlvbnMoKS0+ ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeSkKKysgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKysgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9 PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpCisrICAgICAgICAgICAgcmV0dXJu IHRydWU7CisrICAgIH0KKysKKysgICAgcmV0dXJuIGZhbHNlOworK30KKysKKyBRVF9FTkRfTkFN RVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hk Z2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3AuaCBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9y dGFsZmlsZWRpYWxvZ19wLmgKK2luZGV4IDRmNGRlOTZlY2YuLjY1ZTIyYTVjZjIgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9x eGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFs b2dfcC5oCitAQCAtNTEsNiArNTEsMTEgQEAgY2xhc3MgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlh bG9nIDogcHVibGljIFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIKKyAgICAgUV9PQkpFQ1QKKyAg ICAgUV9ERUNMQVJFX1BSSVZBVEUoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKQorIHB1Ymxp YzoKKysgICAgZW51bSBGYWxsYmFja1R5cGUgeworKyAgICAgICAgR2VuZXJpY0ZhbGxiYWNrLAor KyAgICAgICAgT3BlbkZhbGxiYWNrCisrICAgIH07CisrCisgICAgIGVudW0gQ29uZGl0aW9uVHlw ZSA6IHVpbnQgeworICAgICAgICAgR2xvYmFsUGF0dGVybiA9IDAsCisgICAgICAgICBNaW1lVHlw ZSA9IDEKK0BAIC02OSw3ICs3NCw3IEBAIHB1YmxpYzoKKyAgICAgfTsKKyAgICAgdHlwZWRlZiBR VmVjdG9yPEZpbHRlcj4gRmlsdGVyTGlzdDsKKyAKKy0gICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxl RGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBudWxs cHRyKTsKKysgICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFs b2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBudWxscHRyLCB1aW50IGZpbGVDaG9vc2VyUG9y dGFsVmVyc2lvbiA9IDApOworICAgICB+UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKCk7Cisg CisgICAgIGJvb2wgZGVmYXVsdE5hbWVGaWx0ZXJEaXNhYmxlcygpIGNvbnN0IG92ZXJyaWRlOwor QEAgLTkyLDcgKzk3LDggQEAgcHJpdmF0ZSBRX1NMT1RTOgorIAorIHByaXZhdGU6CisgICAgIHZv aWQgaW5pdGlhbGl6ZURpYWxvZygpOworLSAgICB2b2lkIG9wZW5Qb3J0YWwoKTsKKysgICAgdm9p ZCBvcGVuUG9ydGFsKFF0OjpXaW5kb3dGbGFncyB3aW5kb3dGbGFncywgUXQ6OldpbmRvd01vZGFs aXR5IHdpbmRvd01vZGFsaXR5LCBRV2luZG93ICpwYXJlbnQpOworKyAgICBib29sIHVzZU5hdGl2 ZUZpbGVEaWFsb2coRmFsbGJhY2tUeXBlIGZhbGxiYWNrVHlwZSA9IEdlbmVyaWNGYWxsYmFjaykg Y29uc3Q7CisgCisgICAgIFFTY29wZWRQb2ludGVyPFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv Z1ByaXZhdGU+IGRfcHRyOworIH07CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAg Yi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRn ZGVza3RvcHBvcnRhbHRoZW1lLmNwcAoraW5kZXggZmIzMjRhZmJkOC4uYjgwOTUwMzEyMiAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9y dGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNw cAorQEAgLTExMSw2ICsxMTEsNyBAQCBRWGRnRGVza3RvcFBvcnRhbFRoZW1lOjpRWGRnRGVza3Rv cFBvcnRhbFRoZW1lKCkKKyAgICAgICAgIGlmIChyZXBseS5pc1ZhbGlkKCkpIHsKKyAgICAgICAg ICAgICBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPSByZXBseS52YWx1ZSgpLnRvVUludCgp OworICAgICAgICAgfQorKyAgICAgICAgd2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKyAgICAgfSk7 CisgfQorIAorQEAgLTE1MiwxMSArMTUzLDEyIEBAIFFQbGF0Zm9ybURpYWxvZ0hlbHBlciogUVhk Z0Rlc2t0b3BQb3J0YWxUaGVtZTo6Y3JlYXRlUGxhdGZvcm1EaWFsb2dIZWxwZXIoRGlhbG9nCisg eworICAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZSk7CisgCistICAgIGlmICh0 eXBlID09IEZpbGVEaWFsb2cpIHsKKysgICAgaWYgKHR5cGUgPT0gRmlsZURpYWxvZyAmJiBkLT5m aWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pIHsKKyAgICAgICAgIC8vIE9sZGVyIHZlcnNpb25zIG9m IEZpbGVDaG9vc2VyIHBvcnRhbCBkb24ndCBzdXBwb3J0IG9wZW5pbmcgZGlyZWN0b3JpZXMsIHRo ZXJlZm9yZSB3ZSBmYWxsYmFjaworICAgICAgICAgLy8gdG8gbmF0aXZlIGZpbGUgZGlhbG9nIG9w ZW5lZCBpbnNpZGUgdGhlIHNhbmRib3ggdG8gb3BlbiBhIGRpcmVjdG9yeS4KKy0gICAgICAgIGlm IChkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPCAzICYmIGQtPmJhc2VUaGVtZS0+dXNlUGxh dGZvcm1OYXRpdmVEaWFsb2codHlwZSkpCistICAgICAgICAgICAgcmV0dXJuIG5ldyBRWGRnRGVz a3RvcFBvcnRhbEZpbGVEaWFsb2coc3RhdGljX2Nhc3Q8UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBl cio+KGQtPmJhc2VUaGVtZS0+Y3JlYXRlUGxhdGZvcm1EaWFsb2dIZWxwZXIodHlwZSkpKTsKKysg ICAgICAgIGlmIChkLT5iYXNlVGhlbWUtPnVzZVBsYXRmb3JtTmF0aXZlRGlhbG9nKHR5cGUpKQor KyAgICAgICAgICAgIHJldHVybiBuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKHN0YXRp Y19jYXN0PFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIqPihkLT5iYXNlVGhlbWUtPmNyZWF0ZVBs YXRmb3JtRGlhbG9nSGVscGVyKHR5cGUpKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pOworIAor ICAgICAgICAgcmV0dXJuIG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c7CisgICAgIH0K K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNw cmludGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1 cHNwcmludGVuZ2luZS5jcHAKK2luZGV4IDQzZDVlMTE5YWQuLjFmOWNiYzQ1NjUgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2lu ZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3By aW50ZW5naW5lLmNwcAorQEAgLTg5LDggKzg5LDEwIEBAIHZvaWQgUUN1cHNQcmludEVuZ2luZTo6 c2V0UHJvcGVydHkoUHJpbnRFbmdpbmVQcm9wZXJ0eUtleSBrZXksIGNvbnN0IFFWYXJpYW50ICZ2 CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBQUEtfRHVwbGV4OiB7CisgICAgICAgICBRUHJp bnQ6OkR1cGxleE1vZGUgbW9kZSA9IFFQcmludDo6RHVwbGV4TW9kZSh2YWx1ZS50b0ludCgpKTsK Ky0gICAgICAgIGlmIChtb2RlICE9IGQtPmR1cGxleCAmJiBkLT5tX3ByaW50RGV2aWNlLnN1cHBv cnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMobW9kZSkpCisrICAgICAgICBpZiAoZC0+bV9wcmlu dERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKG1vZGUpKSB7CisgICAgICAg ICAgICAgZC0+ZHVwbGV4ID0gbW9kZTsKKysgICAgICAgICAgICBkLT5kdXBsZXhSZXF1ZXN0ZWRF eHBsaWNpdGx5ID0gdHJ1ZTsKKysgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworICAgICB9Cisg ICAgIGNhc2UgUFBLX1ByaW50ZXJOYW1lOgorQEAgLTI3Nyw5ICsyNzksMTIgQEAgdm9pZCBRQ3Vw c1ByaW50RW5naW5lUHJpdmF0ZTo6Y2hhbmdlUHJpbnRlcihjb25zdCBRU3RyaW5nICZuZXdQcmlu dGVyKQorICAgICBtX3ByaW50RGV2aWNlLnN3YXAocHJpbnREZXZpY2UpOworICAgICBwcmludGVy TmFtZSA9IG1fcHJpbnREZXZpY2UuaWQoKTsKKyAKKy0gICAgLy8gQ2hlY2sgaWYgbmV3IHByaW50 ZXIgc3VwcG9ydHMgY3VycmVudCBzZXR0aW5ncywgb3RoZXJ3aXNlIHVzIGRlZmF1bHRzCistICAg IGlmIChkdXBsZXggIT0gUVByaW50OjpEdXBsZXhBdXRvICYmICFtX3ByaW50RGV2aWNlLnN1cHBv cnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMoZHVwbGV4KSkKKysgICAgLy8gaW4gY2FzZSBhIGR1 cGxleCB2YWx1ZSB3YXMgZXhwbGljaXRseSBzZXQsIGNoZWNrIGlmIG5ldyBwcmludGVyIHN1cHBv cnRzIGN1cnJlbnQgdmFsdWUsCisrICAgIC8vIG90aGVyd2lzZSB1c2UgZGV2aWNlIGRlZmF1bHQK KysgICAgaWYgKCFkdXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5IHx8ICFtX3ByaW50RGV2aWNlLnN1 cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMoZHVwbGV4KSkgeworICAgICAgICAgZHVwbGV4 ID0gbV9wcmludERldmljZS5kZWZhdWx0RHVwbGV4TW9kZSgpOworKyAgICAgICAgZHVwbGV4UmVx dWVzdGVkRXhwbGljaXRseSA9IGZhbHNlOworKyAgICB9CisgICAgIFFQcmludDo6Q29sb3JNb2Rl IGNvbG9yTW9kZSA9IGdyYXlzY2FsZSA/IFFQcmludDo6R3JheVNjYWxlIDogUVByaW50OjpDb2xv cjsKKyAgICAgaWYgKCFtX3ByaW50RGV2aWNlLnN1cHBvcnRlZENvbG9yTW9kZXMoKS5jb250YWlu cyhjb2xvck1vZGUpKQorICAgICAgICAgZ3JheXNjYWxlID0gbV9wcmludERldmljZS5kZWZhdWx0 Q29sb3JNb2RlKCkgPT0gUVByaW50OjpHcmF5U2NhbGU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5oIGIvcXRiYXNl L3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5oCitpbmRl eCBjMDIxYjBjNjQzLi44ZjgxZmU0NzhkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5z L3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5oCisrKysgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9wLmgKK0BAIC0xMDAs NiArMTAwLDcgQEAgcHJpdmF0ZToKKyAgICAgUVN0cmluZ0xpc3QgY3Vwc09wdGlvbnM7CisgICAg IFFTdHJpbmcgY3Vwc1RlbXBGaWxlOworICAgICBRUHJpbnQ6OkR1cGxleE1vZGUgZHVwbGV4Owor KyAgICBib29sIGR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgPSBmYWxzZTsKKyB9OworIAorIFFU X0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVy cy9pYmFzZS9xc3FsX2liYXNlLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2li YXNlL3FzcWxfaWJhc2UuY3BwCitpbmRleCA2N2U3MTU0ZmE2Li40MDg3NjE1MmU1IDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAK KysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2liYXNlL3FzcWxfaWJhc2UuY3Bw CitAQCAtODE3LDcgKzgxNyw3IEBAIGJvb2wgUUlCYXNlUmVzdWx0UHJpdmF0ZTo6d3JpdGVBcnJh eShpbnQgY29sdW1uLCBjb25zdCBRTGlzdDxRVmFyaWFudD4gJmxpc3QpCisgICAgIGJhLnJlc2l6 ZShpbnQoYnVmTGVuKSk7CisgCisgICAgIGlmIChsaXN0LnNpemUoKSA+IGFycmF5U2l6ZSkgewor LSAgICAgICAgZXJyb3IgPSBRTGF0aW4xU3RyaW5nKCJBcnJheSBzaXplIG1pc3NtYXRjaDogc2l6 ZSBvZiAlMSBpcyAlMiwgc2l6ZSBvZiBwcm92aWRlZCBsaXN0IGlzICUzIik7CisrICAgICAgICBl cnJvciA9IFFMYXRpbjFTdHJpbmcoIkFycmF5IHNpemUgbWlzbWF0Y2g6IHNpemUgb2YgJTEgaXMg JTIsIHNpemUgb2YgcHJvdmlkZWQgbGlzdCBpcyAlMyIpOworICAgICAgICAgZXJyb3IgPSBlcnJv ci5hcmcoUUxhdGluMVN0cmluZyhzcWxuYW1lKSkuYXJnKGFycmF5U2l6ZSkuYXJnKGxpc3Quc2l6 ZSgpKTsKKyAgICAgICAgIHEtPnNldExhc3RFcnJvcihRU3FsRXJyb3IoZXJyb3IsIFFMYXRpbjFT dHJpbmcoIiIpLCBRU3FsRXJyb3I6OlN0YXRlbWVudEVycm9yKSk7CisgICAgICAgICByZXR1cm4g ZmFsc2U7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvbXlzcWwv cXNxbF9teXNxbC5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3Fs X215c3FsLmNwcAoraW5kZXggN2NhMDU1ZWVhMi4uNmJjOWQ0Njc1NSAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3FsX215c3FsLmNwcAorQEAgLTIy Myw3ICsyMjMsNyBAQCBwdWJsaWM6CisgICAgIHN0cnVjdCBRTXlGaWVsZAorICAgICB7CisgICAg ICAgICBjaGFyICpvdXRGaWVsZCA9IG51bGxwdHI7CistICAgICAgICBNWVNRTF9GSUVMRCAqbXlG aWVsZCA9IG51bGxwdHI7CisrICAgICAgICBjb25zdCBNWVNRTF9GSUVMRCAqbXlGaWVsZCA9IG51 bGxwdHI7CisgICAgICAgICBRTWV0YVR5cGU6OlR5cGUgdHlwZSA9IFFNZXRhVHlwZTo6VW5rbm93 blR5cGU7CisgICAgICAgICBteV9ib29sIG51bGxJbmRpY2F0b3IgPSBmYWxzZTsKKyAgICAgICAg IHVsb25nIGJ1Zkxlbmd0aCA9IDB1bDsKK0BAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIGJvb2wg cUlzSW50ZWdlcihpbnQgdCkKKyB2b2lkIFFNWVNRTFJlc3VsdFByaXZhdGU6OmJpbmRCbG9icygp CisgeworICAgICBpbnQgaTsKKy0gICAgTVlTUUxfRklFTEQgKmZpZWxkSW5mbzsKKysgICAgY29u c3QgTVlTUUxfRklFTEQgKmZpZWxkSW5mbzsKKyAgICAgTVlTUUxfQklORCAqYmluZDsKKyAKKyAg ICAgZm9yKGkgPSAwOyBpIDwgZmllbGRzLmNvdW50KCk7ICsraSkgeworQEAgLTM3OSw3ICszNzks NiBAQCB2b2lkIFFNWVNRTFJlc3VsdFByaXZhdGU6OmJpbmRCbG9icygpCisgYm9vbCBRTVlTUUxS ZXN1bHRQcml2YXRlOjpiaW5kSW5WYWx1ZXMoKQorIHsKKyAgICAgTVlTUUxfQklORCAqYmluZDsK Ky0gICAgY2hhciAqZmllbGQ7CisgICAgIGludCBpID0gMDsKKyAKKyAgICAgaWYgKCFtZXRhKQor QEAgLTM5MiwzNSArMzkxLDM0IEBAIGJvb2wgUU1ZU1FMUmVzdWx0UHJpdmF0ZTo6YmluZEluVmFs dWVzKCkKKyAgICAgaW5CaW5kcyA9IG5ldyBNWVNRTF9CSU5EW2ZpZWxkcy5zaXplKCldOworICAg ICBtZW1zZXQoaW5CaW5kcywgMCwgZmllbGRzLnNpemUoKSAqIHNpemVvZihNWVNRTF9CSU5EKSk7 CisgCistICAgIE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87CisrICAgIGNvbnN0IE1ZU1FMX0ZJRUxE ICpmaWVsZEluZm87CisgCisgICAgIHdoaWxlKChmaWVsZEluZm8gPSBteXNxbF9mZXRjaF9maWVs ZChtZXRhKSkpIHsKKysgICAgICAgIGJpbmQgPSAmaW5CaW5kc1tpXTsKKysKKyAgICAgICAgIFFN eUZpZWxkICZmID0gZmllbGRzW2ldOworICAgICAgICAgZi5teUZpZWxkID0gZmllbGRJbmZvOwor LQorKyAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3RoID0gZmllbGRJbmZv LT5sZW5ndGggKyAxOworKyAgICAgICAgYmluZC0+YnVmZmVyX3R5cGUgPSBmaWVsZEluZm8tPnR5 cGU7CisgICAgICAgICBmLnR5cGUgPSBxRGVjb2RlTVlTUUxUeXBlKGZpZWxkSW5mby0+dHlwZSwg ZmllbGRJbmZvLT5mbGFncyk7CisgICAgICAgICBpZiAocUlzQmxvYihmaWVsZEluZm8tPnR5cGUp KSB7CisgICAgICAgICAgICAgLy8gdGhlIHNpemUgb2YgYSBibG9iLWZpZWxkIGlzIGF2YWlsYWJs ZSBhcyBzb29uIGFzIHdlIGNhbGwKKyAgICAgICAgICAgICAvLyBteXNxbF9zdG10X3N0b3JlX3Jl c3VsdCgpCisgICAgICAgICAgICAgLy8gYWZ0ZXIgbXlzcWxfc3RtdF9leGVjKCkgaW4gUU1ZU1FM UmVzdWx0OjpleGVjKCkKKy0gICAgICAgICAgICBmaWVsZEluZm8tPmxlbmd0aCA9IDA7CisrICAg ICAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3RoID0gMDsKKyAgICAgICAg ICAgICBoYXNCbG9icyA9IHRydWU7CisgICAgICAgICB9IGVsc2UgaWYgKHFJc0ludGVnZXIoZi50 eXBlKSkgeworLSAgICAgICAgICAgIGZpZWxkSW5mby0+bGVuZ3RoID0gODsKKysgICAgICAgICAg ICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSA4OworICAgICAgICAgfSBlbHNl IHsKKy0gICAgICAgICAgICBmaWVsZEluZm8tPnR5cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKysg ICAgICAgICAgICBiaW5kLT5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgICAg ICAgfQorLSAgICAgICAgYmluZCA9ICZpbkJpbmRzW2ldOworLSAgICAgICAgZmllbGQgPSBuZXcg Y2hhcltmaWVsZEluZm8tPmxlbmd0aCArIDFdOworLSAgICAgICAgbWVtc2V0KGZpZWxkLCAwLCBm aWVsZEluZm8tPmxlbmd0aCArIDEpOworIAorLSAgICAgICAgYmluZC0+YnVmZmVyX3R5cGUgPSBm aWVsZEluZm8tPnR5cGU7CistICAgICAgICBiaW5kLT5idWZmZXIgPSBmaWVsZDsKKy0gICAgICAg IGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1Zkxlbmd0aCA9IGZpZWxkSW5mby0+bGVuZ3RoICsg MTsKKyAgICAgICAgIGJpbmQtPmlzX251bGwgPSAmZi5udWxsSW5kaWNhdG9yOworICAgICAgICAg YmluZC0+bGVuZ3RoID0gJmYuYnVmTGVuZ3RoOworICAgICAgICAgYmluZC0+aXNfdW5zaWduZWQg PSBmaWVsZEluZm8tPmZsYWdzICYgVU5TSUdORURfRkxBRyA/IDEgOiAwOworLSAgICAgICAgZi5v dXRGaWVsZD1maWVsZDsKKysKKysgICAgICAgIGNoYXIgKmZpZWxkID0gbmV3IGNoYXJbYmluZC0+ YnVmZmVyX2xlbmd0aCArIDFde307CisrICAgICAgICBiaW5kLT5idWZmZXIgPSBmLm91dEZpZWxk ID0gZmllbGQ7CisgCisgICAgICAgICArK2k7CisgICAgIH0KK0BAIC0xMzY5LDIwICsxMzY3LDIw IEBAIGJvb2wgUU1ZU1FMRHJpdmVyOjpvcGVuKGNvbnN0IFFTdHJpbmcmIGRiLAorICAgICB9Cisg CisgI2lmIE1ZU1FMX1ZFUlNJT05fSUQgPj0gNTAwMDcKKy0gICAgaWYgKG15c3FsX2dldF9jbGll bnRfdmVyc2lvbigpID49IDUwNTAzICYmIG15c3FsX2dldF9zZXJ2ZXJfdmVyc2lvbihkLT5teXNx bCkgPj0gNTA1MDMpIHsKKy0gICAgICAgIC8vIGZvcmNlIHRoZSBjb21tdW5pY2F0aW9uIHRvIGJl IHV0ZjhtYjQgKG9ubHkgdXRmOG1iNCBzdXBwb3J0cyA0LWJ5dGUgY2hhcmFjdGVycykKKy0gICAg ICAgIG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAidXRmOG1iNCIpOworKyAgICAv LyBmb3JjZSB0aGUgY29tbXVuaWNhdGlvbiB0byBiZSB1dGY4bWI0IChvbmx5IHV0ZjhtYjQgc3Vw cG9ydHMgNC1ieXRlIGNoYXJhY3RlcnMpCisrICAgIGlmIChteXNxbF9zZXRfY2hhcmFjdGVyX3Nl dChkLT5teXNxbCwgInV0ZjhtYjQiKSkgeworKyAgICAgICAgLy8gdGhpcyBmYWlsZWQsIHRyeSBm b3JjaW5nIGl0IHRvIHV0ZiAoQk1QIG9ubHkpCisrICAgICAgICBpZiAobXlzcWxfc2V0X2NoYXJh Y3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4IikpCisrICAgICAgICAgICAgcVdhcm5pbmcoKSA8PCAi TXlTUUw6IFVuYWJsZSB0byBzZXQgdGhlIGNsaWVudCBjaGFyYWN0ZXIgc2V0IHRvIHV0ZjguIjsK KyAjaWYgUVRfQ09ORklHKHRleHRjb2RlYykKKy0gICAgICAgIGQtPnRjID0gUVRleHRDb2RlYzo6 Y29kZWNGb3JOYW1lKCJVVEYtOCIpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIGQtPnRj ID0gY29kZWMoZC0+bXlzcWwpOworICNlbmRpZgorLSAgICB9IGVsc2UKKy0gICAgeworLSAgICAg ICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRpb24gdG8gYmUgdXRmOAorLSAgICAgICAgbXlzcWxf c2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4Iik7CisrICAgIH0KKyAjaWYgUVRfQ09O RklHKHRleHRjb2RlYykKKy0gICAgICAgIGQtPnRjID0gY29kZWMoZC0+bXlzcWwpOworKyAgICBl bHNlCisrICAgICAgICBkLT50YyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZSgiVVRGLTgiKTsK KyAjZW5kaWYKKy0gICAgfQorICNlbmRpZiAgLy8gTVlTUUxfVkVSU0lPTl9JRCA+PSA1MDAwNwor IAorICAgICBkLT5wcmVwYXJlZFF1ZXJ5c0VuYWJsZWQgPSBjaGVja1ByZXBhcmVkUXVlcmllcyhk LT5teXNxbCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvcHJpbnQtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvcHJpbnRlci0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludC0yNC5wbmcKK3JlbmFtZSB0byBzcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXItMjQucG5nCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQtMzIucG5nIGIvcXRi YXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnRlci0zMi5wbmcKK3NpbWls YXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy9wcmludC0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3ByaW50ZXItMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTI0LnBuZworc2ltaWxhcml0 eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2Vz L3ZpZXctcGFnZS1zaWRlZC0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0zMi5wbmcgYi9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0z Mi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9y dC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMzIucG5nCityZW5hbWUgdG8gc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0zMi5wbmcKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Ut bXVsdGktMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmll dy1wYWdlcy1vdmVydmlldy0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZy b20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVsdGktMjQucG5n CityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92 ZXJ2aWV3LTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9y dC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTMyLnBuZworc2ltaWxhcml0eSBp bmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3Zp ZXctcGFnZS1tdWx0aS0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9uZS0yNC5wbmcgYi9xdGJh c2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0yNC5w bmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMjQucG5nCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9uZS0z Mi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Vz LXNpbmdsZS0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTMyLnBuZworcmVuYW1lIHRv IHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMzIucG5n CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0 LXBhZ2UtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9v bS1maXQtcGFnZS0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0yNC5wbmcKK3JlbmFtZSB0byBz cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMjQucG5nCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXBhZ2Ut MzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQt cGFnZS0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMzIucG5nCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRoLTI0LnBu ZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRo LTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTI0LnBuZworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0zMi5wbmcg Yi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0z Mi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9y dC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0zMi5wbmcKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5peC5jcHAg Yi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5peC5j cHAKK2luZGV4IDc4ZTViOGQxZWYuLjJhMjg1MTY3MTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5peC5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcAor QEAgLTUzMiw2ICs1MzIsNyBAQCB2b2lkIFFQYWdlU2V0dXBXaWRnZXQ6OnVwZGF0ZVdpZGdldCgp Cisgdm9pZCBRUGFnZVNldHVwV2lkZ2V0OjpzZXR1cFByaW50ZXIoKSBjb25zdAorIHsKKyAgICAg bV9wcmludGVyLT5zZXRQYWdlTGF5b3V0KG1fcGFnZUxheW91dCk7CisrICAgIG1fcHJpbnRlci0+ c2V0UGFnZU9yaWVudGF0aW9uKG1fcGFnZUxheW91dC5vcmllbnRhdGlvbigpKTsKKyAjaWYgUVRf Q09ORklHKGN1cHMpCisgICAgIFFDVVBTU3VwcG9ydDo6UGFnZXNQZXJTaGVldCBwYWdlc1BlclNo ZWV0ID0gcXZhcmlhbnRfY2FzdDxRQ1VQU1N1cHBvcnQ6OlBhZ2VzUGVyU2hlZXQ+KG1fdWkucGFn ZXNQZXJTaGVldENvbWJvLT5jdXJyZW50RGF0YSgpCisgKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMgYi9xdGJhc2Uvc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMKK2luZGV4IDVhNTc5YmFhNTUuLjEw YjhlMWQzNDEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3Fw cmludGRpYWxvZy5xcmMKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBy aW50ZGlhbG9nLnFyYworQEAgLTEsOSArMSw5IEBACisgPCFET0NUWVBFIFJDQz48UkNDIHZlcnNp b249IjEuMCI+CisgPHFyZXNvdXJjZSBwcmVmaXg9Ii9xdC1wcm9qZWN0Lm9yZy9kaWFsb2dzL3Fw cmludHByZXZpZXdkaWFsb2ciPgorLTxmaWxlPmltYWdlcy9maXQtcGFnZS0yNC5wbmc8L2ZpbGU+ CistPGZpbGU+aW1hZ2VzL2ZpdC1wYWdlLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvZml0 LXdpZHRoLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvZml0LXdpZHRoLTMyLnBuZzwvZmls ZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQtcGFnZS0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1h Z2VzL3pvb20tZml0LXBhZ2UtMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy96b29tLWZpdC13 aWR0aC0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXdpZHRoLTMyLnBuZzwv ZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tZmlyc3QtMjQucG5nPC9maWxlPgorIDxmaWxlPmltYWdl cy9nby1maXJzdC0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL2dvLWxhc3QtMjQucG5nPC9m aWxlPgorQEAgLTE4LDE0ICsxOCwxNCBAQAorIDxmaWxlPmltYWdlcy9sYXlvdXQtcG9ydHJhaXQt MzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9wYWdlLXNldHVwLTI0LnBuZzwvZmlsZT4KKyA8 ZmlsZT5pbWFnZXMvcGFnZS1zZXR1cC0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ByaW50 LTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvcHJpbnQtMzIucG5nPC9maWxlPgorLTxmaWxl PmltYWdlcy92aWV3LXBhZ2UtbXVsdGktMjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3 LXBhZ2UtbXVsdGktMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utb25lLTI0 LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW9uZS0zMi5wbmc8L2ZpbGU+Cist PGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2Vz L3ZpZXctcGFnZS1zaWRlZC0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ByaW50ZXItMjQu cG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy9wcmludGVyLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5p bWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3Zp ZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2Vz LXNpbmdsZS0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTMy LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMjQucG5nPC9maWxl PgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+ aW1hZ2VzL3pvb20taW4tMjQucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy96b29tLWluLTMyLnBu ZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvem9vbS1vdXQtMjQucG5nPC9maWxlPgorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nX3VuaXguY3Bw IGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5peC5jcHAK K2luZGV4IGM1Yjg0NWY0ZWMuLjVhNWJhMWQwYTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5peC5jcHAKK0BAIC03MDIsMTMg KzcwMiwxNCBAQCB2b2lkIFFQcmludERpYWxvZ1ByaXZhdGU6OnNlbGVjdFByaW50ZXIoY29uc3Qg UVByaW50ZXI6Ok91dHB1dEZvcm1hdCBvdXRwdXRGb3JtYQorICAgICAgICAgZWxzZQorICAgICAg ICAgICAgIG9wdGlvbnMuZ3JheXNjYWxlLT5zZXRDaGVja2VkKHRydWUpOworIAorLSAgICAgICAg Ly8ga2VlcCBkdXBsZXggdmFsdWUgZXhwbGljaXRseSBzZXQgYnkgdXNlciwgaWYgYW55LCBhbmQg c2VsZWN0ZWQgcHJpbnRlciBzdXBwb3J0cyBpdDsKKy0gICAgICAgIC8vIHVzZSBkZXZpY2UgZGVm YXVsdCBvdGhlcndpc2UKKysgICAgICAgIC8vIGR1cGxleCBwcmlvcml0aWVzIHRvIGJlIGFzIGZv bGxvd3M6CisrICAgICAgICAvLyAxKSBhIHVzZXItc2VsZWN0ZWQgZHVwbGV4IHZhbHVlIGluIHRo ZSBkaWFsb2cgaGFzIGhpZ2hlc3QgcHJvcml0eQorKyAgICAgICAgLy8gMikgZHVwbGV4IHZhbHVl IHNldCBpbiB0aGUgUVByaW50ZXIKKyAgICAgICAgIFFQcmludDo6RHVwbGV4TW9kZSBkdXBsZXg7 CisgICAgICAgICBpZiAoZXhwbGljaXREdXBsZXhNb2RlICE9IFFQcmludDo6RHVwbGV4QXV0byAm JiBzdXBwb3J0ZWREdXBsZXhNb2RlLmNvbnRhaW5zKGV4cGxpY2l0RHVwbGV4TW9kZSkpCisgICAg ICAgICAgICAgZHVwbGV4ID0gZXhwbGljaXREdXBsZXhNb2RlOworICAgICAgICAgZWxzZQorLSAg ICAgICAgICAgIGR1cGxleCA9IHRvcC0+ZC0+bV9jdXJyZW50UHJpbnREZXZpY2UuZGVmYXVsdER1 cGxleE1vZGUoKTsKKysgICAgICAgICAgICBkdXBsZXggPSBzdGF0aWNfY2FzdDxRUHJpbnQ6OkR1 cGxleE1vZGU+KHAtPmR1cGxleCgpKTsKKyAgICAgICAgIHN3aXRjaCAoZHVwbGV4KSB7CisgICAg ICAgICBjYXNlIFFQcmludDo6RHVwbGV4Tm9uZToKKyAgICAgICAgICAgICBvcHRpb25zLm5vRHVw bGV4LT5zZXRDaGVja2VkKHRydWUpOyBicmVhazsKK0BAIC0xMjQyLDEwICsxMjQzLDEwIEBAIHZv aWQgUVVuaXhQcmludFdpZGdldFByaXZhdGU6Ol9xX3ByaW50ZXJDaGFuZ2VkKGludCBpbmRleCkK KyAgICAgICAgICAgICBRU3RyaW5nIGZpbGVuYW1lID0gd2lkZ2V0LmZpbGVuYW1lLT50ZXh0KCk7 CisgICAgICAgICAgICAgd2lkZ2V0LmZpbGVuYW1lLT5zZXRUZXh0KGZpbGVuYW1lKTsKKyAgICAg ICAgICAgICB3aWRnZXQubE91dHB1dC0+c2V0RW5hYmxlZCh0cnVlKTsKKy0gICAgICAgICAgICBp ZiAob3B0aW9uc1BhbmUpCistICAgICAgICAgICAgICAgIG9wdGlvbnNQYW5lLT5zZWxlY3RQcmlu dGVyKFFQcmludGVyOjpQZGZGb3JtYXQpOworICAgICAgICAgICAgIHByaW50ZXItPnNldE91dHB1 dEZvcm1hdChRUHJpbnRlcjo6UGRmRm9ybWF0KTsKKyAgICAgICAgICAgICBtX2N1cnJlbnRQcmlu dERldmljZSA9IFFQcmludERldmljZSgpOworKyAgICAgICAgICAgIGlmIChvcHRpb25zUGFuZSkK KysgICAgICAgICAgICAgICAgb3B0aW9uc1BhbmUtPnNlbGVjdFByaW50ZXIoUVByaW50ZXI6OlBk ZkZvcm1hdCk7CisgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICB9CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlh bG9nLmNwcCBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2Rp YWxvZy5jcHAKK2luZGV4IDM5NTc1ZDVmNTcuLjIzYjdlODk1MzggMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3Bw CitAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6Omlu aXQoUVByaW50ZXIgKl9wcmludGVyKQorIHN0YXRpYyBpbmxpbmUgdm9pZCBxdF9zZXR1cEFjdGlv bkljb24oUUFjdGlvbiAqYWN0aW9uLCBRTGF0aW4xU3RyaW5nIG5hbWUpCisgeworICAgICBRTGF0 aW4xU3RyaW5nIGltYWdlUHJlZml4KCI6L3F0LXByb2plY3Qub3JnL2RpYWxvZ3MvcXByaW50cHJl dmlld2RpYWxvZy9pbWFnZXMvIik7CistICAgIFFJY29uIGljb247CisrICAgIFFJY29uIGljb24g PSBRSWNvbjo6ZnJvbVRoZW1lKG5hbWUpOworICAgICBpY29uLmFkZEZpbGUoaW1hZ2VQcmVmaXgg KyBuYW1lICsgUUxhdGluMVN0cmluZygiLTI0LnBuZyIpLCBRU2l6ZSgyNCwgMjQpKTsKKyAgICAg aWNvbi5hZGRGaWxlKGltYWdlUHJlZml4ICsgbmFtZSArIFFMYXRpbjFTdHJpbmcoIi0zMi5wbmci KSwgUVNpemUoMzIsIDMyKSk7CisgICAgIGFjdGlvbi0+c2V0SWNvbihpY29uKTsKK0BAIC0zODMs OCArMzgzLDggQEAgdm9pZCBRUHJpbnRQcmV2aWV3RGlhbG9nUHJpdmF0ZTo6c2V0dXBBY3Rpb25z KCkKKyAgICAgZml0UGFnZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJmaXRQ YWdlQWN0aW9uIikpOworICAgICBmaXRXaWR0aEFjdGlvbi0+c2V0Q2hlY2thYmxlKHRydWUpOwor ICAgICBmaXRQYWdlQWN0aW9uLT5zZXRDaGVja2FibGUodHJ1ZSk7CistICAgIHF0X3NldHVwQWN0 aW9uSWNvbihmaXRXaWR0aEFjdGlvbiwgUUxhdGluMVN0cmluZygiZml0LXdpZHRoIikpOworLSAg ICBxdF9zZXR1cEFjdGlvbkljb24oZml0UGFnZUFjdGlvbiwgUUxhdGluMVN0cmluZygiZml0LXBh Z2UiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihmaXRXaWR0aEFjdGlvbiwgUUxhdGluMVN0 cmluZygiem9vbS1maXQtd2lkdGgiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihmaXRQYWdl QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ6b29tLWZpdC1wYWdlIikpOworICAgICBRT2JqZWN0Ojpj b25uZWN0KGZpdEdyb3VwLCBTSUdOQUwodHJpZ2dlcmVkKFFBY3Rpb24qKSksIHEsIFNMT1QoX3Ff Zml0KFFBY3Rpb24qKSkpOworIAorICAgICAvLyBab29tCitAQCAtNDEwLDkgKzQxMCw5IEBAIHZv aWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OnNldHVwQWN0aW9ucygpCisgICAgIHNpbmds ZU1vZGVBY3Rpb24gPSBtb2RlR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFu c2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiU2hvdyBzaW5nbGUgcGFnZSIpKTsKKyAgICAg ZmFjaW5nTW9kZUFjdGlvbiA9IG1vZGVHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246 OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIsICJTaG93IGZhY2luZyBwYWdlcyIpKTsK KyAgICAgb3ZlcnZpZXdNb2RlQWN0aW9uID0gbW9kZUdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBs aWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlNob3cgb3ZlcnZpZXcg b2YgYWxsIHBhZ2VzIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oc2luZ2xlTW9kZUFjdGlv biwgUUxhdGluMVN0cmluZygidmlldy1wYWdlLW9uZSIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25J Y29uKGZhY2luZ01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZS1zaWRlZCIpKTsK Ky0gICAgcXRfc2V0dXBBY3Rpb25JY29uKG92ZXJ2aWV3TW9kZUFjdGlvbiwgUUxhdGluMVN0cmlu Zygidmlldy1wYWdlLW11bHRpIikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24oc2luZ2xlTW9k ZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlcy1zaW5nbGUiKSk7CisrICAgIHF0X3Nl dHVwQWN0aW9uSWNvbihmYWNpbmdNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2Vz LWZhY2luZyIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKG92ZXJ2aWV3TW9kZUFjdGlvbiwg UUxhdGluMVN0cmluZygidmlldy1wYWdlcy1vdmVydmlldyIpKTsKKyAgICAgc2luZ2xlTW9kZUFj dGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJzaW5nbGVNb2RlQWN0aW9uIikpOwor ICAgICBmYWNpbmdNb2RlQWN0aW9uLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFTdHJpbmcoImZhY2lu Z01vZGVBY3Rpb24iKSk7CisgICAgIG92ZXJ2aWV3TW9kZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShR TGF0aW4xU3RyaW5nKCJvdmVydmlld01vZGVBY3Rpb24iKSk7CitAQCAtNDI2LDcgKzQyNiw3IEBA IHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OnNldHVwQWN0aW9ucygpCisgICAgIHBy aW50ZXJHcm91cCA9IG5ldyBRQWN0aW9uR3JvdXAocSk7CisgICAgIHByaW50QWN0aW9uID0gcHJp bnRlckdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQ cmV2aWV3RGlhbG9nIiwgIlByaW50IikpOworICAgICBwYWdlU2V0dXBBY3Rpb24gPSBwcmludGVy R3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZp ZXdEaWFsb2ciLCAiUGFnZSBzZXR1cCIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKHByaW50 QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwcmludCIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29u KHByaW50QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwcmludGVyIikpOworICAgICBxdF9zZXR1cEFj dGlvbkljb24ocGFnZVNldHVwQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwYWdlLXNldHVwIikpOwor ICAgICBRT2JqZWN0Ojpjb25uZWN0KHByaW50QWN0aW9uLCBTSUdOQUwodHJpZ2dlcmVkKGJvb2wp KSwgcSwgU0xPVChfcV9wcmludCgpKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocGFnZVNldHVw QWN0aW9uLCBTSUdOQUwodHJpZ2dlcmVkKGJvb2wpKSwgcSwgU0xPVChfcV9wYWdlU2V0dXAoKSkp OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVlcnkuY3BwIGIvcXRi YXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAKK2luZGV4IDMyYzYxNjZjNzkuLjYwYWZl ZjEwYzMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5LmNwcAor KysrIGIvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAKK0BAIC0xLDYgKzEsNiBA QAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhl IFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgUXQgQ29tcGFueSBM dGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiog VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0U3FsIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4K K0BAIC0zNzcsNiArMzc3LDEwIEBAIGJvb2wgUVNxbFF1ZXJ5OjpleGVjKGNvbnN0IFFTdHJpbmcm IHF1ZXJ5KQorICAgICBRRWxhcHNlZFRpbWVyIHQ7CisgICAgIHQuc3RhcnQoKTsKKyAjZW5kaWYK KysgICAgaWYgKCFkcml2ZXIoKSkgeworKyAgICAgICAgcVdhcm5pbmcoIlFTcWxRdWVyeTo6ZXhl YzogY2FsbGVkIGJlZm9yZSBkcml2ZXIgaGFzIGJlZW4gc2V0IHVwIik7CisrICAgICAgICByZXR1 cm4gZmFsc2U7CisrICAgIH0KKyAgICAgaWYgKGQtPnJlZi5sb2FkUmVsYXhlZCgpICE9IDEpIHsK KyAgICAgICAgIGJvb2wgZm8gPSBpc0ZvcndhcmRPbmx5KCk7CisgICAgICAgICAqdGhpcyA9IFFT cWxRdWVyeShkcml2ZXIoKS0+Y3JlYXRlUmVzdWx0KCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwIGIvcXRiYXNlL3NyYy90ZXN0 bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK2luZGV4IDhlZmI5YzUzZDQuLmNlMDYy ZjY2ZDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVs dGVzdGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRl c3Rlci5jcHAKK0BAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBRQWJzdHJhY3RJdGVtTW9kZWxUZXN0 ZXJQcml2YXRlOjpwYXJlbnQoKQorIAorICAgICAvLyBDb21tb24gZXJyb3IgdGVzdCAjMiwgbWFr ZSBzdXJlIHRoYXQgYSBzZWNvbmQgbGV2ZWwgaW5kZXggaGFzIGEgcGFyZW50CisgICAgIC8vIHRo YXQgaXMgdGhlIGZpcnN0IGxldmVsIGluZGV4LgorLSAgICBpZiAobW9kZWwtPnJvd0NvdW50KHRv cEluZGV4KSA+IDApIHsKKysgICAgaWYgKG1vZGVsLT5yb3dDb3VudCh0b3BJbmRleCkgPiAwICYm IG1vZGVsLT5jb2x1bW5Db3VudCh0b3BJbmRleCkgPiAwKSB7CisgICAgICAgICBRTW9kZWxJbmRl eCBjaGlsZEluZGV4ID0gbW9kZWwtPmluZGV4KDAsIDAsIHRvcEluZGV4KTsKKyAgICAgICAgIE1P REVMVEVTVEVSX1ZFUklGWShjaGlsZEluZGV4LmlzVmFsaWQoKSk7CisgICAgICAgICBNT0RFTFRF U1RFUl9DT01QQVJFKG1vZGVsLT5wYXJlbnQoY2hpbGRJbmRleCksIHRvcEluZGV4KTsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcCBiL3F0YmFzZS9zcmMvdGVz dGxpYi9xYXNjaWlrZXkuY3BwCitpbmRleCA5YTMwOGRhMmJjLi45MzQ5OGIyNTZmIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy90ZXN0bGliL3Fhc2NpaWtleS5jcHAKKysrKyBiL3F0YmFzZS9zcmMv dGVzdGxpYi9xYXNjaWlrZXkuY3BwCitAQCAtNDk4LDYgKzQ5OCwxMSBAQCBjaGFyIFFUZXN0Ojpr ZXlUb0FzY2lpKFF0OjpLZXkga2V5KQorICAgICBjYXNlIFF0OjpLZXlfTGF1bmNoRSA6IHJldHVy biAwOyAvLyA9IDB4MTBiMCwKKyAgICAgY2FzZSBRdDo6S2V5X0xhdW5jaEYgOiByZXR1cm4gMDsg Ly8gPSAweDEwYjEsCisgCisrICAgIC8vIEtleXBhZCBuYXZpZ2F0aW9uIGtleXMKKysgICAgY2Fz ZSBRdDo6S2V5X1NlbGVjdCA6IHJldHVybiAwOyAvLyA9IDB4MDEwMTAwMDAKKysgICAgY2FzZSBR dDo6S2V5X1llcyA6IHJldHVybiAwOyAvLyA9IDB4MDEwMTAwMDEKKysgICAgY2FzZSBRdDo6S2V5 X05vIDogcmV0dXJuIDA7IC8vID0gMHgwMTAxMDAwMgorKworICAgICBkZWZhdWx0OiBRVEVTVF9B U1NFUlQoZmFsc2UpOyByZXR1cm4gMDsKKyAgICAgfQorIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwIGIvcXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVz dWx0LmNwcAoraW5kZXggODgwMjhhYWM2ZS4uMmU4OTkzMDc3NiAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvdGVzdGxpYi9x dGVzdHJlc3VsdC5jcHAKK0BAIC0yNTEsNyArMjUxLDggQEAgYm9vbCBRVGVzdFJlc3VsdDo6dmVy aWZ5KGJvb2wgc3RhdGVtZW50LCBjb25zdCBjaGFyICpzdGF0ZW1lbnRTdHIsCisgeworICAgICBR VEVTVF9BU1NFUlQoc3RhdGVtZW50U3RyKTsKKyAKKy0gICAgY2hhciBtc2dbMTAyNF0gPSB7J1ww J307CisrICAgIGNoYXIgbXNnWzEwMjRdOworKyAgICBtc2dbMF0gPSAnXDAnOworIAorICAgICBp ZiAoUVRlc3RMb2c6OnZlcmJvc2VMZXZlbCgpID49IDIpIHsKKyAgICAgICAgIHFzbnByaW50Ziht c2csIDEwMjQsICJRVkVSSUZZKCVzKSIsIHN0YXRlbWVudFN0cik7CitAQCAtMzA5LDcgKzMxMCw4 IEBAIHN0YXRpYyBib29sIGNvbXBhcmVIZWxwZXIoYm9vbCBzdWNjZXNzLCBjb25zdCBjaGFyICpm YWlsdXJlTXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNWYWx1ZXMgPSB0 cnVlKQorIHsKKyAgICAgY29uc3Qgc2l6ZV90IG1heE1zZ0xlbiA9IDEwMjQ7CistICAgIGNoYXIg bXNnW21heE1zZ0xlbl0gPSB7J1wwJ307CisrICAgIGNoYXIgbXNnW21heE1zZ0xlbl07CisrICAg IG1zZ1swXSA9ICdcMCc7CisgCisgICAgIFFURVNUX0FTU0VSVChleHBlY3RlZCk7CisgICAgIFFU RVNUX0FTU0VSVChhY3R1YWwpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFs b2dzL3Fjb2xvcmRpYWxvZy5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvZGlhbG9ncy9xY29sb3Jk aWFsb2cuY3BwCitpbmRleCA0MjQ3NzMxMjc1Li5jYjMyNWJlODVjIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcAorQEAgLTc4LDcgKzc4LDEwIEBACisg I2luY2x1ZGUgInF3aW5kb3cuaCIKKyAKKyAjaW5jbHVkZSAicHJpdmF0ZS9xZGlhbG9nX3AuaCIK KysjaW5jbHVkZSAicHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oIgorIAorKyNpbmNsdWRlIDxx cGEvcXBsYXRmb3Jtc2VydmljZXMuaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWludGVncmF0 aW9uLmg+CisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKK0BA IC0xNjExLDYgKzE2MTQsMjAgQEAgdm9pZCBRQ29sb3JEaWFsb2dQcml2YXRlOjpfcV9uZXdTdGFu ZGFyZChpbnQgciwgaW50IGMpCisgdm9pZCBRQ29sb3JEaWFsb2dQcml2YXRlOjpfcV9waWNrU2Ny ZWVuQ29sb3IoKQorIHsKKyAgICAgUV9RKFFDb2xvckRpYWxvZyk7CisrCisrICAgIGF1dG8gKnBs YXRmb3JtU2VydmljZXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0 aW9uKCktPnNlcnZpY2VzKCk7CisrICAgIGlmIChwbGF0Zm9ybVNlcnZpY2VzLT5oYXNDYXBhYmls aXR5KFFQbGF0Zm9ybVNlcnZpY2VzOjpDYXBhYmlsaXR5OjpDb2xvclBpY2tpbmcpKSB7CisrICAg ICAgICBpZiAoYXV0byAqY29sb3JQaWNrZXIgPSBwbGF0Zm9ybVNlcnZpY2VzLT5jb2xvclBpY2tl cihxLT53aW5kb3dIYW5kbGUoKSkpIHsKKysgICAgICAgICAgICBxLT5jb25uZWN0KGNvbG9yUGlj a2VyLCAmUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyOjpjb2xvclBpY2tlZCwgcSwKKysgICAg ICAgICAgICAgICAgICAgICAgIFtxLCBjb2xvclBpY2tlcl0oY29uc3QgUUNvbG9yICZjb2xvcikg eworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yUGlja2VyLT5kZWxldGVMYXRlcigp OworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHEtPnNldEN1cnJlbnRDb2xvcihjb2xvcik7 CisrICAgICAgICAgICAgICAgICAgICAgICB9KTsKKysgICAgICAgICAgICBjb2xvclBpY2tlci0+ cGlja0NvbG9yKCk7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICB9Cisr CisgICAgIGlmICghY29sb3JQaWNraW5nRXZlbnRGaWx0ZXIpCisgICAgICAgICBjb2xvclBpY2tp bmdFdmVudEZpbHRlciA9IG5ldyBRQ29sb3JQaWNraW5nRXZlbnRGaWx0ZXIodGhpcywgcSk7Cisg ICAgIHEtPmluc3RhbGxFdmVudEZpbHRlcihjb2xvclBpY2tpbmdFdmVudEZpbHRlcik7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVsZWdh dGUuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVsZWdh dGUuY3BwCitpbmRleCBlMTIwODE3ZWRjLi44ZWEzNmI1NDI3IDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVsZWdhdGUuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAKK0BA IC00MDAsMTIgKzQwMCw3IEBAIGJvb2wgUUFic3RyYWN0SXRlbURlbGVnYXRlOjpoZWxwRXZlbnQo UUhlbHBFdmVudCAqZXZlbnQsCisgICAgICAgICBjb25zdCBRU3RyaW5nIHRvb2x0aXAgPSBpbmRl eC5pc1ZhbGlkKCkgPworICAgICAgICAgICAgICAgZC0+dGV4dEZvclJvbGUoUXQ6OlRvb2xUaXBS b2xlLCBpbmRleC5kYXRhKFF0OjpUb29sVGlwUm9sZSksIG9wdGlvbi5sb2NhbGUsIHByZWNpc2lv bikgOgorICAgICAgICAgICAgICAgUVN0cmluZygpOworLSAgICAgICAgUVJlY3QgcmVjdDsKKy0g ICAgICAgIGlmIChpbmRleC5pc1ZhbGlkKCkpIHsKKy0gICAgICAgICAgICBjb25zdCBRUmVjdCBy ID0gdmlldy0+dmlzdWFsUmVjdChpbmRleCk7CistICAgICAgICAgICAgcmVjdCA9IFFSZWN0KHZp ZXctPm1hcFRvR2xvYmFsKHIudG9wTGVmdCgpKSwgci5zaXplKCkpOworLSAgICAgICAgfQorLSAg ICAgICAgUVRvb2xUaXA6OnNob3dUZXh0KGhlLT5nbG9iYWxQb3MoKSwgdG9vbHRpcCwgdmlldywg cmVjdCk7CisrICAgICAgICBRVG9vbFRpcDo6c2hvd1RleHQoaGUtPmdsb2JhbFBvcygpLCB0b29s dGlwLCB2aWV3LT52aWV3cG9ydCgpLCBvcHRpb24ucmVjdCk7CisgICAgICAgICBldmVudC0+c2V0 QWNjZXB0ZWQoIXRvb2x0aXAuaXNFbXB0eSgpKTsKKyAgICAgICAgIGJyZWFrOworICAgICAgICAg fQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNw cCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcAoraW5kZXggMmIz NDQ3NjY0Mi4uZWViZmFhMDMwZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVt dmlld3MvcWxpc3R2aWV3LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9x bGlzdHZpZXcuY3BwCitAQCAtMzM4Niw2ICszMzg2LDcgQEAgdm9pZCBRSWNvbk1vZGVWaWV3QmFz ZTo6dXBkYXRlQ29udGVudHNTaXplKCkKKyAqLworIHZvaWQgUUxpc3RWaWV3OjpjdXJyZW50Q2hh bmdlZChjb25zdCBRTW9kZWxJbmRleCAmY3VycmVudCwgY29uc3QgUU1vZGVsSW5kZXggJnByZXZp b3VzKQorIHsKKysgICAgUUFic3RyYWN0SXRlbVZpZXc6OmN1cnJlbnRDaGFuZ2VkKGN1cnJlbnQs IHByZXZpb3VzKTsKKyAjaWZuZGVmIFFUX05PX0FDQ0VTU0lCSUxJVFkKKyAgICAgaWYgKFFBY2Nl c3NpYmxlOjppc0FjdGl2ZSgpKSB7CisgICAgICAgICBpZiAoY3VycmVudC5pc1ZhbGlkKCkpIHsK K0BAIC0zMzk2LDcgKzMzOTcsNiBAQCB2b2lkIFFMaXN0Vmlldzo6Y3VycmVudENoYW5nZWQoY29u c3QgUU1vZGVsSW5kZXggJmN1cnJlbnQsIGNvbnN0IFFNb2RlbEluZGV4ICZwcgorICAgICAgICAg fQorICAgICB9CisgI2VuZGlmCistICAgIFFBYnN0cmFjdEl0ZW1WaWV3OjpjdXJyZW50Q2hhbmdl ZChjdXJyZW50LCBwcmV2aW91cyk7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMv aXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwCitpbmRleCA5MzRhYzU4MWIyLi5mNzliYjI0MjQ5IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcAor KysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcAorQEAgLTEw MTMsNiArMTAxMyw3IEBAIHZvaWQgUVRhYmxlVmlld1ByaXZhdGU6OmRyYXdDZWxsKFFQYWludGVy ICpwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25WaWV3SXRlbSAmCisgaW50IFFUYWJsZVZpZXdQ cml2YXRlOjp3aWR0aEhpbnRGb3JJbmRleChjb25zdCBRTW9kZWxJbmRleCAmaW5kZXgsIGludCBo aW50LCBjb25zdCBRU3R5bGVPcHRpb25WaWV3SXRlbSAmb3B0aW9uKSBjb25zdAorIHsKKyAgICAg UV9RKGNvbnN0IFFUYWJsZVZpZXcpOworKyAgICBjb25zdCBpbnQgb2xkSGludCA9IGhpbnQ7Cisg ICAgIFFXaWRnZXQgKmVkaXRvciA9IGVkaXRvckZvckluZGV4KGluZGV4KS53aWRnZXQuZGF0YSgp OworICAgICBpZiAoZWRpdG9yICYmIHBlcnNpc3RlbnQuY29udGFpbnMoZWRpdG9yKSkgeworICAg ICAgICAgaGludCA9IHFNYXgoaGludCwgZWRpdG9yLT5zaXplSGludCgpLndpZHRoKCkpOworQEAg LTEwMjEsNiArMTAyMiwxNyBAQCBpbnQgUVRhYmxlVmlld1ByaXZhdGU6OndpZHRoSGludEZvcklu ZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRleCwgaW50IGhpbnQsIGNvbgorICAgICAgICAgaGlu dCA9IHFCb3VuZChtaW4sIGhpbnQsIG1heCk7CisgICAgIH0KKyAgICAgaGludCA9IHFNYXgoaGlu dCwgcS0+aXRlbURlbGVnYXRlKGluZGV4KS0+c2l6ZUhpbnQob3B0aW9uLCBpbmRleCkud2lkdGgo KSk7CisrCisrICAgIGlmIChoYXNTcGFucygpKSB7CisrICAgICAgICBhdXRvIHNwYW4gPSBzcGFu cy5zcGFuQXQoaW5kZXguY29sdW1uKCksIGluZGV4LnJvdygpKTsKKysgICAgICAgIGlmIChzcGFu ICYmIHNwYW4tPm1fbGVmdCA9PSBpbmRleC5jb2x1bW4oKSAmJiBzcGFuLT5tX3RvcCA9PSBpbmRl eC5yb3coKSkgeworKyAgICAgICAgICAgIC8vIHNwYW5zIGFyZSBzY3Jld2VkIHVwIHdoZW4gc2Vj dGlvbnMgYXJlIG1vdmVkCisrICAgICAgICAgICAgY29uc3QgYXV0byBsZWZ0ID0gbG9naWNhbENv bHVtbihzcGFuLT5tX2xlZnQpOworKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHNw YW4tPndpZHRoKCk7ICsraSkKKysgICAgICAgICAgICAgICBoaW50IC09IHEtPmNvbHVtbldpZHRo KHZpc3VhbENvbHVtbihsZWZ0ICsgaSkpOworKyAgICAgICAgfQorKyAgICAgICAgaGludCA9IHN0 ZDo6bWF4KGhpbnQsIG9sZEhpbnQpOworKyAgICB9CisgICAgIHJldHVybiBoaW50OworIH0KKyAK K0BAIC0xMDUzLDYgKzEwNjUsMTEgQEAgaW50IFFUYWJsZVZpZXdQcml2YXRlOjpoZWlnaHRIaW50 Rm9ySW5kZXgoY29uc3QgUU1vZGVsSW5kZXggJmluZGV4LCBpbnQgaGludCwgUVMKKyAgICAgICAg IG9wdGlvbi5yZWN0LnNldEhlaWdodChoZWlnaHQpOworICAgICAgICAgb3B0aW9uLnJlY3Quc2V0 WChxLT5jb2x1bW5WaWV3cG9ydFBvc2l0aW9uKGluZGV4LmNvbHVtbigpKSk7CisgICAgICAgICBv cHRpb24ucmVjdC5zZXRXaWR0aChxLT5jb2x1bW5XaWR0aChpbmRleC5jb2x1bW4oKSkpOworKyAg ICAgICAgaWYgKGhhc1NwYW5zKCkpIHsKKysgICAgICAgICAgICBhdXRvIHNwYW4gPSBzcGFucy5z cGFuQXQoaW5kZXguY29sdW1uKCksIGluZGV4LnJvdygpKTsKKysgICAgICAgICAgICBpZiAoc3Bh biAmJiBzcGFuLT5tX2xlZnQgPT0gaW5kZXguY29sdW1uKCkgJiYgc3Bhbi0+bV90b3AgPT0gaW5k ZXgucm93KCkpCisrICAgICAgICAgICAgICAgIG9wdGlvbi5yZWN0LnNldFdpZHRoKHN0ZDo6bWF4 KG9wdGlvbi5yZWN0LndpZHRoKCksIHZpc3VhbFNwYW5SZWN0KCpzcGFuKS53aWR0aCgpKSk7Cisr ICAgICAgICB9CisgICAgICAgICAvLyAxcHggbGVzcyBzcGFjZSB3aGVuIGdyaWQgaXMgc2hvd24g KHNlZSBkcmF3Q2VsbCkKKyAgICAgICAgIGlmIChzaG93R3JpZCkKKyAgICAgICAgICAgICBvcHRp b24ucmVjdC5zZXRXaWR0aChvcHRpb24ucmVjdC53aWR0aCgpIC0gMSk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmggYi9xdGJhc2Uvc3JjL3dpZGdldHMv a2VybmVsL3FhY3Rpb24uaAoraW5kZXggMjU4YTFlYTBhMC4uNzM3YzFlODI4NSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcWFjdGlvbi5oCisrKysgYi9xdGJhc2Uvc3Jj L3dpZGdldHMva2VybmVsL3FhY3Rpb24uaAorQEAgLTgxLDcgKzgxLDcgQEAgY2xhc3MgUV9XSURH RVRTX0VYUE9SVCBRQWN0aW9uIDogcHVibGljIFFPYmplY3QKKyAgICAgUV9QUk9QRVJUWShNZW51 Um9sZSBtZW51Um9sZSBSRUFEIG1lbnVSb2xlIFdSSVRFIHNldE1lbnVSb2xlIE5PVElGWSBjaGFu Z2VkKQorICAgICBRX1BST1BFUlRZKGJvb2wgaWNvblZpc2libGVJbk1lbnUgUkVBRCBpc0ljb25W aXNpYmxlSW5NZW51IFdSSVRFIHNldEljb25WaXNpYmxlSW5NZW51IE5PVElGWSBjaGFuZ2VkKQor ICAgICBRX1BST1BFUlRZKGJvb2wgc2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVudSBSRUFEIGlz U2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVudSBXUklURSBzZXRTaG9ydGN1dFZpc2libGVJbkNv bnRleHRNZW51IE5PVElGWSBjaGFuZ2VkKQorLSAgICBRX1BST1BFUlRZKFByaW9yaXR5IHByaW9y aXR5IFJFQUQgcHJpb3JpdHkgV1JJVEUgc2V0UHJpb3JpdHkpCisrICAgIFFfUFJPUEVSVFkoUHJp b3JpdHkgcHJpb3JpdHkgUkVBRCBwcmlvcml0eSBXUklURSBzZXRQcmlvcml0eSBOT1RJRlkgY2hh bmdlZCkKKyAKKyBwdWJsaWM6CisgICAgIC8vIG5vdGUgdGhpcyBpcyBjb3BpZWQgaW50byBxcGxh dGZvcm1tZW51LmgsIHdoaWNoIG11c3Qgc3RheSBpbiBzeW5jCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJu ZWwvcXdpZGdldC5jcHAKK2luZGV4IDllYmExZTAwMWUuLjI2ZjZkMjdlMTggMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3BwCitAQCAtNTI5Niw3ICs1Mjk2LDcgQEAgdm9pZCBR V2lkZ2V0UHJpdmF0ZTo6ZHJhd1dpZGdldChRUGFpbnREZXZpY2UgKnBkZXYsIGNvbnN0IFFSZWdp b24gJnJnbiwgY29uc3QgUVAKKyAgICAgICAgIFFXaWRnZXRFZmZlY3RTb3VyY2VQcml2YXRlICpz b3VyY2VkID0gc3RhdGljX2Nhc3Q8UVdpZGdldEVmZmVjdFNvdXJjZVByaXZhdGUgKj4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc291 cmNlLT5kX2Z1bmMoKSk7CisgICAgICAgICBpZiAoIXNvdXJjZWQtPmNvbnRleHQpIHsKKy0gICAg ICAgICAgICBjb25zdCBRUmVnaW9uIGVmZmVjdFJnbihyZ24uYm91bmRpbmdSZWN0KCkpOworKyAg ICAgICAgICAgIGNvbnN0IFFSZWdpb24gZWZmZWN0UmduKChmbGFncyAmIFVzZUVmZmVjdFJlZ2lv bkJvdW5kcykgPyByZ24uYm91bmRpbmdSZWN0KCkgOiByZ24pOworICAgICAgICAgICAgIFFXaWRn ZXRQYWludENvbnRleHQgY29udGV4dChwZGV2LCBlZmZlY3RSZ24sIG9mZnNldCwgZmxhZ3MsIHNo YXJlZFBhaW50ZXIsIHJlcGFpbnRNYW5hZ2VyKTsKKyAgICAgICAgICAgICBzb3VyY2VkLT5jb250 ZXh0ID0gJmNvbnRleHQ7CisgICAgICAgICAgICAgaWYgKCFzaGFyZWRQYWludGVyKSB7CitAQCAt NTMyOCw2ICs1MzI4LDcgQEAgdm9pZCBRV2lkZ2V0UHJpdmF0ZTo6ZHJhd1dpZGdldChRUGFpbnRE ZXZpY2UgKnBkZXYsIGNvbnN0IFFSZWdpb24gJnJnbiwgY29uc3QgUVAKKyAgICAgICAgIH0KKyAg ICAgfQorICNlbmRpZiAvLyBRVF9DT05GSUcoZ3JhcGhpY3NlZmZlY3QpCisrICAgIGZsYWdzID0g ZmxhZ3MgJiB+VXNlRWZmZWN0UmVnaW9uQm91bmRzOworIAorICAgICBjb25zdCBib29sIGFsc29P blNjcmVlbiA9IGZsYWdzICYgRHJhd1BhaW50T25TY3JlZW47CisgICAgIGNvbnN0IGJvb2wgcmVj dXJzaXZlID0gZmxhZ3MgJiBEcmF3UmVjdXJzaXZlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv d2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmggYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3 aWRnZXRfcC5oCitpbmRleCBlZWY2YjhmYTJjLi5jNDMyZjRiNWQ1IDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAorKysrIGIvcXRiYXNlL3NyYy93aWRn ZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAorQEAgLTIyOSw3ICsyMjksOCBAQCBwdWJsaWM6CisgICAg ICAgICBEb250U3VidHJhY3RPcGFxdWVDaGlsZHJlbiA9IDB4MTAsCisgICAgICAgICBEb250RHJh d09wYXF1ZUNoaWxkcmVuID0gMHgyMCwKKyAgICAgICAgIERvbnREcmF3TmF0aXZlQ2hpbGRyZW4g PSAweDQwLAorLSAgICAgICAgRG9udFNldENvbXBvc2l0aW9uTW9kZSA9IDB4ODAKKysgICAgICAg IERvbnRTZXRDb21wb3NpdGlvbk1vZGUgPSAweDgwLAorKyAgICAgICAgVXNlRWZmZWN0UmVnaW9u Qm91bmRzID0gMHgxMDAKKyAgICAgfTsKKyAgICAgUV9ERUNMQVJFX0ZMQUdTKERyYXdXaWRnZXRG bGFncywgRHJhd1dpZGdldEZsYWcpCisgICAgIFFfRkxBRyhEcmF3V2lkZ2V0RmxhZ3MpCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIu Y3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIuY3Bw CitpbmRleCAwMjg4MGIzNGRhLi4wZDQ0ZTEzMjZkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93 aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAKK0BAIC0xMDE4LDcgKzEw MTgsOCBAQCB2b2lkIFFXaWRnZXRSZXBhaW50TWFuYWdlcjo6cGFpbnRBbmRGbHVzaCgpCisgCisg ICAgIC8vIFBhaW50IHRoZSByZXN0IHdpdGggY29tcG9zaXRpb24uCisgICAgIGlmIChyZXBhaW50 QWxsV2lkZ2V0cyB8fCAhZGlydHlDb3B5LmlzRW1wdHkoKSkgeworLSAgICAgICAgUVdpZGdldFBy aXZhdGU6OkRyYXdXaWRnZXRGbGFncyBmbGFncyA9IFFXaWRnZXRQcml2YXRlOjpEcmF3QXNSb290 IHwgUVdpZGdldFByaXZhdGU6OkRyYXdSZWN1cnNpdmU7CisrICAgICAgICBRV2lkZ2V0UHJpdmF0 ZTo6RHJhd1dpZGdldEZsYWdzIGZsYWdzID0gUVdpZGdldFByaXZhdGU6OkRyYXdBc1Jvb3QgfCBR V2lkZ2V0UHJpdmF0ZTo6RHJhd1JlY3Vyc2l2ZQorKyAgICAgICAgICAgICAgICB8IFFXaWRnZXRQ cml2YXRlOjpVc2VFZmZlY3RSZWdpb25Cb3VuZHM7CisgICAgICAgICB0bHctPmRfZnVuYygpLT5k cmF3V2lkZ2V0KHN0b3JlLT5wYWludERldmljZSgpLCBkaXJ0eUNvcHksIFFQb2ludCgpLCBmbGFn cywgbnVsbHB0ciwgdGhpcyk7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dp ZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVz L3FmdXNpb25zdHlsZS5jcHAKK2luZGV4IGY0MzQ1ZDk3YzQuLjk2MjkxMmM4MzggMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lvbnN0eWxlLmNwcAorQEAgLTE3NzIsMTQgKzE3 NzIsNiBAQCB2b2lkIFFGdXNpb25TdHlsZTo6ZHJhd0NvbnRyb2woQ29udHJvbEVsZW1lbnQgZWxl bWVudCwgY29uc3QgUVN0eWxlT3B0aW9uICpvcHRpbworICAgICAgICAgICAgIHByb3h5KCktPmRy YXdDb250cm9sKENFX1B1c2hCdXR0b25MYWJlbCwgJnN1Ym9wdCwgcGFpbnRlciwgd2lkZ2V0KTsK KyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIENFX1B1c2hCdXR0b25MYWJl bDoKKy0gICAgICAgIGlmIChjb25zdCBRU3R5bGVPcHRpb25CdXR0b24gKmJ1dHRvbiA9IHFzdHls ZW9wdGlvbl9jYXN0PGNvbnN0IFFTdHlsZU9wdGlvbkJ1dHRvbiAqPihvcHRpb24pKSB7CistICAg ICAgICAgICAgUVN0eWxlT3B0aW9uQnV0dG9uIGIoKmJ1dHRvbik7CistICAgICAgICAgICAgLy8g bm8gUE1fQnV0dG9uU2hpZnRIb3Jpem9udGFsIGFuZCBQTV9CdXR0b25TaGlmdFZlcnRpY2FsIGZv ciBmdXNpb24gc3R5bGUKKy0gICAgICAgICAgICBiLnN0YXRlICY9IH4oU3RhdGVfT24gfCBTdGF0 ZV9TdW5rZW4pOworLSAgICAgICAgICAgIFFDb21tb25TdHlsZTo6ZHJhd0NvbnRyb2woZWxlbWVu dCwgJmIsIHBhaW50ZXIsIHdpZGdldCk7CistICAgICAgICB9CistICAgICAgICBicmVhazsKKyAg ICAgY2FzZSBDRV9NZW51QmFyRW1wdHlBcmVhOgorICAgICAgICAgcGFpbnRlci0+c2F2ZSgpOwor ICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3V0aWwvcWNvbXBsZXRlci5j cHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcAoraW5kZXggMThiMjQw NjNkOC4uZWY3MjA3YThhMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy91dGlsL3Fj b21wbGV0ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNw cAorQEAgLTExMjAsNiArMTEyMCw4IEBAIHZvaWQgUUNvbXBsZXRlcjo6c2V0TW9kZWwoUUFic3Ry YWN0SXRlbU1vZGVsICptb2RlbCkKKyB7CisgICAgIFFfRChRQ29tcGxldGVyKTsKKyAgICAgUUFi c3RyYWN0SXRlbU1vZGVsICpvbGRNb2RlbCA9IGQtPnByb3h5LT5zb3VyY2VNb2RlbCgpOworKyAg ICBpZiAob2xkTW9kZWwgPT0gbW9kZWwpCisrICAgICAgICByZXR1cm47CisgI2lmIFFUX0NPTkZJ RyhmaWxlc3lzdGVtbW9kZWwpCisgICAgIGlmIChxb2JqZWN0X2Nhc3Q8Y29uc3QgUUZpbGVTeXN0 ZW1Nb2RlbCAqPihvbGRNb2RlbCkpCisgICAgICAgICBzZXRDb21wbGV0aW9uUm9sZShRdDo6RWRp dFJvbGUpOyAvLyBRVEJVRy01NDY0MiwgY2xlYXIgRmlsZU5hbWVSb2xlIHNldCBieSBRRmlsZVN5 c3RlbU1vZGVsCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3Ry YWN0YnV0dG9uLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRv bi5jcHAKK2luZGV4IGExMjhiMjM5NTAuLmRjNDBiZjYyZmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwCitAQCAtNTYsNiArNTYsNyBAQAor ICNpZm5kZWYgUVRfTk9fQUNDRVNTSUJJTElUWQorICNpbmNsdWRlICJxYWNjZXNzaWJsZS5oIgor ICNlbmRpZgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAKKyAjaW5jbHVkZSA8 YWxnb3JpdGhtPgorIAorQEAgLTEwNzYsMTkgKzEwNzcsMTkgQEAgdm9pZCBRQWJzdHJhY3RCdXR0 b246OmtleVByZXNzRXZlbnQoUUtleUV2ZW50ICplKQorIHsKKyAgICAgUV9EKFFBYnN0cmFjdEJ1 dHRvbik7CisgICAgIGJvb2wgbmV4dCA9IHRydWU7CistICAgIHN3aXRjaCAoZS0+a2V5KCkpIHsK Ky0gICAgY2FzZSBRdDo6S2V5X0VudGVyOgorLSAgICBjYXNlIFF0OjpLZXlfUmV0dXJuOgorLSAg ICAgICAgZS0+aWdub3JlKCk7CistICAgICAgICBicmVhazsKKy0gICAgY2FzZSBRdDo6S2V5X1Nl bGVjdDoKKy0gICAgY2FzZSBRdDo6S2V5X1NwYWNlOgorLSAgICAgICAgaWYgKCFlLT5pc0F1dG9S ZXBlYXQoKSkgeworLSAgICAgICAgICAgIHNldERvd24odHJ1ZSk7CistICAgICAgICAgICAgcmVw YWludCgpOworLSAgICAgICAgICAgIGQtPmVtaXRQcmVzc2VkKCk7CistICAgICAgICB9CistICAg ICAgICBicmVhazsKKysKKysgICAgY29uc3QgYXV0byBrZXkgPSBzdGF0aWNfY2FzdDxRdDo6S2V5 PihlLT5rZXkoKSk7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxp Y2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NL ZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFM aXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKGtleSkg JiYgIWUtPmlzQXV0b1JlcGVhdCgpKSB7CisrICAgICAgICBzZXREb3duKHRydWUpOworKyAgICAg ICAgcmVwYWludCgpOworKyAgICAgICAgZC0+ZW1pdFByZXNzZWQoKTsKKysgICAgICAgIHJldHVy bjsKKysgICAgfQorKworKyAgICBzd2l0Y2ggKGtleSkgeworICAgICBjYXNlIFF0OjpLZXlfVXA6 CisgICAgICAgICBuZXh0ID0gZmFsc2U7CisgICAgICAgICBRX0ZBTExUSFJPVUdIKCk7CitAQCAt MTE1MywxNSArMTE1NCwxNSBAQCB2b2lkIFFBYnN0cmFjdEJ1dHRvbjo6a2V5UmVsZWFzZUV2ZW50 KFFLZXlFdmVudCAqZSkKKyAgICAgaWYgKCFlLT5pc0F1dG9SZXBlYXQoKSkKKyAgICAgICAgIGQt PnJlcGVhdFRpbWVyLnN0b3AoKTsKKyAKKy0gICAgc3dpdGNoIChlLT5rZXkoKSkgeworLSAgICBj YXNlIFF0OjpLZXlfU2VsZWN0OgorLSAgICBjYXNlIFF0OjpLZXlfU3BhY2U6CistICAgICAgICBp ZiAoIWUtPmlzQXV0b1JlcGVhdCgpICYmIGQtPmRvd24pCistICAgICAgICAgICAgZC0+Y2xpY2so KTsKKy0gICAgICAgIGJyZWFrOworLSAgICBkZWZhdWx0OgorLSAgICAgICAgZS0+aWdub3JlKCk7 CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0 ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+ PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKHN0YXRpY19jYXN0PFF0OjpL ZXk+KGUtPmtleSgpKSkgJiYgIWUtPmlzQXV0b1JlcGVhdCgpICYmIGQtPmRvd24pIHsKKysgICAg ICAgIGQtPmNsaWNrKCk7CisrICAgICAgICByZXR1cm47CisgICAgIH0KKysKKysgICAgZS0+aWdu b3JlKCk7CisgfQorIAorIC8qIVxyZWltcAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0 cy93aWRnZXRzL3Fjb21ib2JveC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xY29t Ym9ib3guY3BwCitpbmRleCA3YTQ5NmMyN2UwLi4wYTNkOTY2NDdiIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAorKysrIGIvcXRiYXNlL3NyYy93 aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAorQEAgLTMzNTIsNyArMzM1MiwyMyBAQCB2b2lk IFFDb21ib0JveDo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQgKmUpCisgCisgICAgIE1vdmUgbW92 ZSA9IE5vTW92ZTsKKyAgICAgaW50IG5ld0luZGV4ID0gY3VycmVudEluZGV4KCk7CistICAgIHN3 aXRjaCAoZS0+a2V5KCkpIHsKKysKKysgICAgYm9vbCBwcmVzc0xpa2VCdXR0b24gPSAhZC0+bGlu ZUVkaXQ7CisrI2lmZGVmIFFUX0tFWVBBRF9OQVZJR0FUSU9OCisrICAgIHByZXNzTGlrZUJ1dHRv biB8PSBRQXBwbGljYXRpb25Qcml2YXRlOjprZXlwYWROYXZpZ2F0aW9uRW5hYmxlZCgpICYmICFo YXNFZGl0Rm9jdXMoKTsKKysjZW5kaWYKKysgICAgYXV0byBrZXkgPSBzdGF0aWNfY2FzdDxRdDo6 S2V5PihlLT5rZXkoKSk7CisrICAgIGlmIChwcmVzc0xpa2VCdXR0b24pIHsKKysgICAgICAgIGNv bnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZv cm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+ KCk7CisrICAgICAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKGtleSkpIHsKKysgICAg ICAgICAgICBzaG93UG9wdXAoKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9Cisr ICAgIH0KKysKKysgICAgc3dpdGNoIChrZXkpIHsKKyAgICAgY2FzZSBRdDo6S2V5X1VwOgorICAg ICAgICAgaWYgKGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllcikKKyAgICAgICAg ICAgICBicmVhazsgLy8gcGFzcyB0byBsaW5lIGVkaXQgZm9yIGF1dG8gY29tcGxldGlvbgorQEAg LTMzOTQsMjYgKzM0MTAsMTEgQEAgdm9pZCBRQ29tYm9Cb3g6OmtleVByZXNzRXZlbnQoUUtleUV2 ZW50ICplKQorICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFr OworLSAgICBjYXNlIFF0OjpLZXlfU3BhY2U6CistICAgICAgICBpZiAoIWQtPmxpbmVFZGl0KSB7 CistICAgICAgICAgICAgc2hvd1BvcHVwKCk7CistICAgICAgICAgICAgcmV0dXJuOworLSAgICAg ICAgfQorLSAgICAgICAgYnJlYWs7CistICAgIGNhc2UgUXQ6OktleV9FbnRlcjoKKy0gICAgY2Fz ZSBRdDo6S2V5X1JldHVybjoKKyAgICAgY2FzZSBRdDo6S2V5X0VzY2FwZToKKyAgICAgICAgIGlm ICghZC0+bGluZUVkaXQpCisgICAgICAgICAgICAgZS0+aWdub3JlKCk7CisgICAgICAgICBicmVh azsKKyAjaWZkZWYgUVRfS0VZUEFEX05BVklHQVRJT04KKy0gICAgY2FzZSBRdDo6S2V5X1NlbGVj dDoKKy0gICAgICAgIGlmIChRQXBwbGljYXRpb25Qcml2YXRlOjprZXlwYWROYXZpZ2F0aW9uRW5h YmxlZCgpCistICAgICAgICAgICAgICAgICYmICghaGFzRWRpdEZvY3VzKCkgfHwgIWQtPmxpbmVF ZGl0KSkgeworLSAgICAgICAgICAgIHNob3dQb3B1cCgpOworLSAgICAgICAgICAgIHJldHVybjsK Ky0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworICAgICBjYXNlIFF0OjpLZXlfTGVmdDoKKyAg ICAgY2FzZSBRdDo6S2V5X1JpZ2h0OgorICAgICAgICAgaWYgKFFBcHBsaWNhdGlvblByaXZhdGU6 OmtleXBhZE5hdmlnYXRpb25FbmFibGVkKCkgJiYgIWhhc0VkaXRGb2N1cygpKQorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGltZWVkaXRfcC5oIGIvcXRiYXNl L3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmgKK2luZGV4IGQzNmI2ZjhmOWEu LmUwZGY1YjUxNTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZGF0 ZXRpbWVlZGl0X3AuaAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1l ZWRpdF9wLmgKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKy0q KiBDb3B5cmlnaHQgKEMpIDIwMTggVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAo QykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQu aW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0V2lkZ2V0 cyBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRn ZXRzL3dpZGdldHMvcWdyb3VwYm94LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fn cm91cGJveC5jcHAKK2luZGV4IDAyYTBiZWQzMjUuLjNmM2VjY2MzNzAgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwCitAQCAtNTQsNiArNTQsOCBAQAorICNpbmNs dWRlICJxYWNjZXNzaWJsZS5oIgorICNlbmRpZgorICNpbmNsdWRlIDxwcml2YXRlL3F3aWRnZXRf cC5oPgorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+CisrI2luY2x1ZGUg PHFwYS9xcGxhdGZvcm10aGVtZS5oPgorIAorICNpbmNsdWRlICJxZGVidWcuaCIKKyAKK0BAIC0z NjAsNyArMzYyLDEwIEBAIGJvb2wgUUdyb3VwQm94OjpldmVudChRRXZlbnQgKmUpCisgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgY2FzZSBRRXZlbnQ6OktleVByZXNzOiB7CisgICAgICAgICBR S2V5RXZlbnQgKmsgPSBzdGF0aWNfY2FzdDxRS2V5RXZlbnQqPihlKTsKKy0gICAgICAgIGlmICgh ay0+aXNBdXRvUmVwZWF0KCkgJiYgKGstPmtleSgpID09IFF0OjpLZXlfU2VsZWN0IHx8IGstPmtl eSgpID09IFF0OjpLZXlfU3BhY2UpKSB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNz S2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9y bVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYgKCFr LT5pc0F1dG9SZXBlYXQoKSAmJiBidXR0b25QcmVzc0tleXMuY29udGFpbnMoc3RhdGljX2Nhc3Q8 UXQ6OktleT4oay0+a2V5KCkpKSkgeworICAgICAgICAgICAgIGQtPnByZXNzZWRDb250cm9sID0g UVN0eWxlOjpTQ19Hcm91cEJveENoZWNrQm94OworICAgICAgICAgICAgIHVwZGF0ZShzdHlsZSgp LT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkNDX0dyb3VwQm94LCAmYm94LCBRU3R5bGU6OlNDX0dy b3VwQm94Q2hlY2tCb3gsIHRoaXMpKTsKKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKK0BAIC0z NjksNyArMzc0LDEwIEBAIGJvb2wgUUdyb3VwQm94OjpldmVudChRRXZlbnQgKmUpCisgICAgIH0K KyAgICAgY2FzZSBRRXZlbnQ6OktleVJlbGVhc2U6IHsKKyAgICAgICAgIFFLZXlFdmVudCAqayA9 IHN0YXRpY19jYXN0PFFLZXlFdmVudCo+KGUpOworLSAgICAgICAgaWYgKCFrLT5pc0F1dG9SZXBl YXQoKSAmJiAoay0+a2V5KCkgPT0gUXQ6OktleV9TZWxlY3QgfHwgay0+a2V5KCkgPT0gUXQ6Oktl eV9TcGFjZSkpIHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFw cGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRv blByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoIWstPmlzQXV0b1JlcGVh dCgpICYmIGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhzdGF0aWNfY2FzdDxRdDo6S2V5PihrLT5r ZXkoKSkpKSB7CisgICAgICAgICAgICAgYm9vbCB0b2dnbGUgPSAoZC0+cHJlc3NlZENvbnRyb2wg PT0gUVN0eWxlOjpTQ19Hcm91cEJveExhYmVsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg fHwgZC0+cHJlc3NlZENvbnRyb2wgPT0gUVN0eWxlOjpTQ19Hcm91cEJveENoZWNrQm94KTsKKyAg ICAgICAgICAgICBkLT5wcmVzc2VkQ29udHJvbCA9IFFTdHlsZTo6U0NfTm9uZTsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xbGFiZWwuY3BwIGIvcXRiYXNlL3NyYy93 aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNwcAoraW5kZXggMzBmZjgwY2JiMC4uY2YyNjA1YzE3YyAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAKKysrKyBi L3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAKK0BAIC00MjEsOSArNDIxLDYg QEAgdm9pZCBRTGFiZWw6OnNldFBpeG1hcChjb25zdCBRUGl4bWFwICZwaXhtYXApCisgICAgICAg ICBkLT5waXhtYXAgPSBuZXcgUVBpeG1hcChwaXhtYXApOworICAgICB9CisgCistICAgIGlmIChk LT5waXhtYXAtPmRlcHRoKCkgPT0gMSAmJiAhZC0+cGl4bWFwLT5tYXNrKCkpCistICAgICAgICBk LT5waXhtYXAtPnNldE1hc2soKigoUUJpdG1hcCAqKWQtPnBpeG1hcCkpOworLQorICAgICBkLT51 cGRhdGVMYWJlbCgpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lk Z2V0cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMv cXRvb2xiYXJhcmVhbGF5b3V0LmNwcAoraW5kZXggNDkzYzA5NGNjMS4uZDVmNGI1OTAxNyAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5j cHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5j cHAKK0BAIC0xMzY3LDcgKzEzNjcsNyBAQCBib29sIFFUb29sQmFyQXJlYUxheW91dDo6cmVzdG9y ZVN0YXRlKFFEYXRhU3RyZWFtICZzdHJlYW0sIGNvbnN0IFFMaXN0PFFUb29sQmFyKgorICAgICAg ICAgICAgICAgICBpdGVtLndpZGdldEl0ZW0gPSBuZXcgUVdpZGdldEl0ZW1WMih0b29sQmFyKTsK KyAgICAgICAgICAgICAgICAgdG9vbEJhci0+c2V0T3JpZW50YXRpb24oZmxvYXRpbmcgPyAoKHNo b3duICYgMikgPyBRdDo6VmVydGljYWwgOiBRdDo6SG9yaXpvbnRhbCkgOiBkb2NrLm8pOworICAg ICAgICAgICAgICAgICB0b29sQmFyLT5zZXRWaXNpYmxlKHNob3duICYgMSk7CistICAgICAgICAg ICAgICAgIHRvb2xCYXItPmRfZnVuYygpLT5zZXRXaW5kb3dTdGF0ZShmbG9hdGluZywgdHJ1ZSwg cmVjdCk7CisrICAgICAgICAgICAgICAgIHRvb2xCYXItPmRfZnVuYygpLT5zZXRXaW5kb3dTdGF0 ZShmbG9hdGluZywgZmFsc2UsIHJlY3QpOworIAorICAgICAgICAgICAgICAgICBpdGVtLnByZWZl cnJlZFNpemUgPSBpdGVtLnNpemU7CisgICAgICAgICAgICAgICAgIGxpbmUudG9vbEJhckl0ZW1z LmFwcGVuZChpdGVtKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50 L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwu Y3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2Vy bmVsL3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcAoraW5kZXggMjEyYzBhMmUxMy4u M2M3N2IxYmEwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRj b25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAK KysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50aXRlcmF0ZWtl cm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAKK0BAIC0xMjYsOCArMTI2LDcg QEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6Omluc3Rh bnRpYXRlKCkKKyB7CistICAgIGF1dG8gZnV0dXJlID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFBy aW50Rm9yKDAsIDQwKSkuc3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBmdXR1cmUud2FpdEZv ckZpbmlzaGVkKCk7CisrICAgIHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBQcmludEZvcigwLCA0MCkp LnN0YXJ0QmxvY2tpbmcoKTsKKyAgICAgUUNPTVBBUkUoaXRlcmF0aW9ucy5sb2FkUmVsYXhlZCgp LCA0MCk7CisgfQorIAorQEAgLTE2NiwxMCArMTY1LDggQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50 SXRlcmF0ZUtlcm5lbDo6c3RyZXNzdGVzdCgpCisgICAgIGNvbnN0IGludCB0aW1lcyA9IDUwOwor ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpIHsKKyAgICAgICAgIGNvdW50ZXIu c3RvcmVSZWxheGVkKDApOworLSAgICAgICAgLy8gVGhyZWFkRW5naW5lIHdpbGwgZGVsZXRlIGYg d2hlbiBpdCBmaW5pc2hlcworLSAgICAgICAgYXV0byBmID0gbmV3IENvdW50Rm9yKDAsIGl0ZXJh dGlvbnMpOworLSAgICAgICAgYXV0byBmdXR1cmUgPSBmLT5zdGFydEFzeW5jaHJvbm91c2x5KCk7 CistICAgICAgICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CisrICAgICAgICBDb3VudEZvciBm KDAsIGl0ZXJhdGlvbnMpOworKyAgICAgICAgZi5zdGFydEJsb2NraW5nKCk7CisgICAgICAgICBR Q09NUEFSRShjb3VudGVyLmxvYWRSZWxheGVkKCksIGl0ZXJhdGlvbnMpOworICAgICB9CisgfQor QEAgLTE3NywxMSArMTc0LDggQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6 c3RyZXNzdGVzdCgpCisgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6bm9JdGVy YXRpb25zKCkKKyB7CisgICAgIGNvbnN0IGludCB0aW1lcyA9IDIwMDAwOworLSAgICBmb3IgKGlu dCBpID0gMDsgaSA8IHRpbWVzOyArK2kpIHsKKy0gICAgICAgIGF1dG8gZnV0dXJlID0gc3RhcnRU aHJlYWRFbmdpbmUobmV3IEl0ZXJhdGVLZXJuZWw8VGVzdEl0ZXJhdG9yLCB2b2lkPigwLCAwKSkK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RhcnRBc3luY2hyb25vdXNseSgpOwor LSAgICAgICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOworLSAgICB9CisrICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgdGltZXM7ICsraSkKKysgICAgICAgIHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBJ dGVyYXRlS2VybmVsPFRlc3RJdGVyYXRvciwgdm9pZD4oMCwgMCkpLnN0YXJ0QmxvY2tpbmcoKTsK KyB9CisgCisgUU11dGV4IHRocmVhZHNNdXRleDsKK0BAIC0yMzYsMTAgKzIzMCw4IEBAIHZvaWQg dHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6OnRocm90dGxpbmcoKQorIAorICAgICB0aHJl YWRzLmNsZWFyKCk7CisgCistICAgIC8vIFRocmVhZEVuZ2luZSB3aWxsIGRlbGV0ZSBmIHdoZW4g aXQgZmluaXNoZXMKKy0gICAgYXV0byBmID0gbmV3IFRocm90dGxlRm9yKDAsIHRvdGFsSXRlcmF0 aW9ucyk7CistICAgIGF1dG8gZnV0dXJlID0gZi0+c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAg ICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIFRocm90dGxlRm9yIGYoMCwgdG90YWxJ dGVyYXRpb25zKTsKKysgICAgZi5zdGFydEJsb2NraW5nKCk7CisgCisgICAgIFFDT01QQVJFKGl0 ZXJhdGlvbnMubG9hZFJlbGF4ZWQoKSwgdG90YWxJdGVyYXRpb25zKTsKKyAKK2RpZmYgLS1naXQg YS9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90 c3RfcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1 cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdp bmUuY3BwCitpbmRleCBhYzdiZTdhY2RkLi44MWJjNjRjOGQ5IDEwMDY0NAorLS0tIGEvcXRiYXNl L3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29u Y3VycmVudHRocmVhZGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJl bnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUu Y3BwCitAQCAtNjUsOSArNjUsMTYgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVu dFRocmVhZEVuZ2luZTo6cnVuRGlyZWN0bHkoKQorIHsKKy0gICAgUHJpbnRVc2VyICplbmdpbmUg PSBuZXcgUHJpbnRVc2VyKCk7CistICAgIFFGdXR1cmU8dm9pZD4gZiA9IGVuZ2luZS0+c3RhcnRB c3luY2hyb25vdXNseSgpOworLSAgICBmLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICB7CisrICAg ICAgICBQcmludFVzZXIgZW5naW5lOworKyAgICAgICAgZW5naW5lLnN0YXJ0U2luZ2xlVGhyZWFk ZWQoKTsKKysgICAgICAgIGVuZ2luZS5zdGFydEJsb2NraW5nKCk7CisrICAgIH0KKysgICAgewor KyAgICAgICAgUHJpbnRVc2VyICplbmdpbmUgPSBuZXcgUHJpbnRVc2VyKCk7CisrICAgICAgICBR RnV0dXJlPHZvaWQ+IGYgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKysgICAgICAg IGYud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIH0KKyB9CisgCisgY2xhc3MgU3RyaW5nUmVzdWx0 VXNlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8UVN0cmluZz4KK0BAIC05OSwxMCArMTA2LDggQEAg cHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6cmVzdWx0KCkK KyB7CistICAgIC8vIFRocmVhZEVuZ2luZSB3aWxsIGRlbGV0ZSAnZW5naW5lJyB3aGVuIGl0IGZp bmlzaGVzCistICAgIGF1dG8gZW5naW5lID0gbmV3IFN0cmluZ1Jlc3VsdFVzZXIoKTsKKy0gICAg YXV0byBmdXR1cmUgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgUUNPTVBB UkUoZnV0dXJlLnJlc3VsdCgpLCBRU3RyaW5nKCJGb28iKSk7CisrICAgIFN0cmluZ1Jlc3VsdFVz ZXIgZW5naW5lOworKyAgICBRQ09NUEFSRSgqZW5naW5lLnN0YXJ0QmxvY2tpbmcoKSwgUVN0cmlu ZygiRm9vIikpOworIH0KKyAKKyBjbGFzcyBWb2lkUmVzdWx0VXNlciA6IHB1YmxpYyBUaHJlYWRF bmdpbmU8dm9pZD4KK0BAIC0xMjgsOSArMTMzLDE3IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9R dENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJ1blRocm91Z2hTdGFydGVyKCkKKyB7CistICAgIFRo cmVhZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4gc3RhcnRlciA9IHN0YXJ0VGhyZWFkRW5naW5lKG5l dyBTdHJpbmdSZXN1bHRVc2VyKCkpOworLSAgICBRRnV0dXJlPFFTdHJpbmc+IGYgPSBzdGFydGVy LnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgUUNPTVBBUkUoZi5yZXN1bHQoKSwgUVN0cmlu ZygiRm9vIikpOworKyAgICB7CisrICAgICAgICBUaHJlYWRFbmdpbmVTdGFydGVyPFFTdHJpbmc+ IHN0YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5nUmVzdWx0VXNlcigpKTsKKysg ICAgICAgIFFGdXR1cmU8UVN0cmluZz4gIGYgPSBzdGFydGVyLnN0YXJ0QXN5bmNocm9ub3VzbHko KTsKKysgICAgICAgIFFDT01QQVJFKGYucmVzdWx0KCksIFFTdHJpbmcoIkZvbyIpKTsKKysgICAg fQorKworKyAgICB7CisrICAgICAgICBUaHJlYWRFbmdpbmVTdGFydGVyPFFTdHJpbmc+IHN0YXJ0 ZXIgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5nUmVzdWx0VXNlcigpKTsKKysgICAgICAg IFFTdHJpbmcgc3RyID0gc3RhcnRlci5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBRQ09NUEFS RShzdHIsIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgfQorIH0KKyAKKyBjbGFzcyBDYW5jZWxVc2Vy IDogcHVibGljIFRocmVhZEVuZ2luZTx2b2lkPgorQEAgLTIxMyw2ICsyMjYsMTIgQEAgdm9pZCB0 c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjp0aHJvdHRsZSgpCisgICAgICAgICBmLndhaXRG b3JGaW5pc2hlZCgpOworICAgICAgICAgUUNPTVBBUkUoY291bnQubG9hZFJlbGF4ZWQoKSwgMCk7 CisgICAgIH0KKysKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXRzOyArK2kpIHsKKysg ICAgICAgIFRocm90dGxlQWx3YXlzVXNlciB0OworKyAgICAgICAgdC5zdGFydEJsb2NraW5nKCk7 CisrICAgICAgICBRQ09NUEFSRShjb3VudC5sb2FkUmVsYXhlZCgpLCAwKTsKKysgICAgfQorIH0K KyAKKyBRU2V0PFFUaHJlYWQgKj4gdGhyZWFkczsKK0BAIC0yNDksMTcgKzI2OCwzNSBAQCB2b2lk IHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnRocmVhZENvdW50KCkKKyB7CisgICAgIGNv bnN0IGludCByZXBlYXRzID0gMTA7CisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0czsg KytpKSB7CisrICAgICAgICBUaHJlYWRDb3VudFVzZXIgdDsKKysgICAgICAgIHQuc3RhcnRCbG9j a2luZygpOworKyAgICAgICAgaW50IGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAg aW50IGNvdW50X2V4cGVjdGVkID0gUVRocmVhZFBvb2w6Omdsb2JhbEluc3RhbmNlKCktPm1heFRo cmVhZENvdW50KCkgKyAxOyAvLyArMSBmb3IgdGhlIG1haW4gdGhyZWFkLgorKyAgICAgICAgaWYg KGNvdW50ICE9IGNvdW50X2V4cGVjdGVkKQorKyAgICAgICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwg IlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQsIGNvdW50X2V4 cGVjdGVkKTsKKysKKyAgICAgICAgIChuZXcgVGhyZWFkQ291bnRVc2VyKCkpLT5zdGFydEFzeW5j aHJvbm91c2x5KCkud2FpdEZvckZpbmlzaGVkKCk7CistICAgICAgICBjb25zdCBhdXRvIGNvdW50 ID0gdGhyZWFkcy5jb3VudCgpOworLSAgICAgICAgY29uc3QgYXV0byBtYXhUaHJlYWRDb3VudCA9 IFFUaHJlYWRQb29sOjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJlYWRDb3VudCgpOworLSAgICAg ICAgUVZFUklGWShjb3VudCA8PSBtYXhUaHJlYWRDb3VudCk7CistICAgICAgICBRVkVSSUZZKCF0 aHJlYWRzLmNvbnRhaW5zKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSkpOworKyAgICAgICAgY291 bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBjb3VudF9leHBlY3RlZCA9IFFUaHJlYWRQ b29sOjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJlYWRDb3VudCgpOworKyAgICAgICAgaWYgKGNv dW50ICE9IGNvdW50X2V4cGVjdGVkKQorKyAgICAgICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwgIlFU QlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQsIGNvdW50X2V4cGVj dGVkKTsKKyAgICAgfQorIAorICAgICAvLyBTZXQgdGhlIGZpbmlzaCBmbGFnIGltbWVkaWF0ZWx5 LCB0aGlzIHNob3VsZCBnaXZlIHVzIG9uZSB0aHJlYWQgb25seS4KKyAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCByZXBlYXRzOyArK2kpIHsKKysgICAgICAgIFRocmVhZENvdW50VXNlciB0KHRydWUg LypmaW5pc2hJbW1lZGlhdGVseSovKTsKKysgICAgICAgIHQuc3RhcnRCbG9ja2luZygpOworKyAg ICAgICAgaW50IGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgaWYgKGNvdW50ICE9 IDEpCisrICAgICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRCVUctMjMzMzMiLCBBYm9ydCk7 CisrICAgICAgICBRQ09NUEFSRShjb3VudCwgMSk7CisrCisgICAgICAgICAobmV3IFRocmVhZENv dW50VXNlcih0cnVlIC8qZmluaXNoSW1tZWRpYXRlbHkqLykpLT5zdGFydEFzeW5jaHJvbm91c2x5 KCkud2FpdEZvckZpbmlzaGVkKCk7CistICAgICAgICBjb25zdCBhdXRvIGNvdW50ID0gdGhyZWFk cy5jb3VudCgpOworKyAgICAgICAgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBp ZiAoY291bnQgIT0gMSkKKysgICAgICAgICAgICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMz MyIsIEFib3J0KTsKKyAgICAgICAgIFFDT01QQVJFKGNvdW50LCAxKTsKKyAgICAgICAgIFFWRVJJ RlkoIXRocmVhZHMuY29udGFpbnMoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKSk7CisgICAgIH0K K0BAIC00MDAsNiArNDM3LDcgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudFRo cmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgeworKyAgICAvLyBBc3luY2hyb25vdXMgbW9kZToK KyAgICAgeworICAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKyAgICAgICAgIHRyeSAgewor QEAgLTQxMiw2ICs0NTAsMzIgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpl eGNlcHRpb25zKCkKKyAgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2Vw dGlvbiIpOworICAgICB9CisgCisrICAgIC8vIEJsb2NraW5nIG1vZGU6CisrICAgIC8vIHRlc3Qg dGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIGEgd29ya2VyIHRocmVhZC4KKysgICAgeworKyAg ICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAgeworKyAgICAgICAgICAg IFF0Q29uY3VycmVudEV4Y2VwdGlvblRocm93ZXIgZShRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkp OworKyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgfSBjYXRjaCAoY29u c3QgUUV4Y2VwdGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAg IH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOwor KyAgICB9CisrCisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZSBt YWluIHRocmVhZCAoZGlmZmVyZW50IGNvZGUgcGF0aCkKKysgICAgeworKyAgICAgICAgYm9vbCBj YXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAgeworKyAgICAgICAgICAgIFF0Q29uY3VycmVu dEV4Y2VwdGlvblRocm93ZXIgZSgwKTsKKysgICAgICAgICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsK KysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFFeGNlcHRpb24gJikgeworKyAgICAgICAgICAgIGNh dWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQg bm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorKworKyAgICAvLyBBc3luY2hyb25vdXMgbW9k ZToKKyAgICAgeworICAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKyAgICAgICAgIHRyeSAg eworQEAgLTQyMyw2ICs0ODcsMzEgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5l OjpleGNlcHRpb25zKCkKKyAgICAgICAgIH0KKyAgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRp ZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworICAgICB9CisrCisrICAgIC8vIEJsb2NraW5nIG1vZGU6 CisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIGEgd29ya2VyIHRocmVh ZC4KKysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAg eworKyAgICAgICAgICAgIFVucmVsYXRlZEV4Y2VwdGlvblRocm93ZXIgZShRVGhyZWFkOjpjdXJy ZW50VGhyZWFkKCkpOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAg fSBjYXRjaCAoY29uc3QgUVVuaGFuZGxlZEV4Y2VwdGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1 Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBu b3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAgICB9CisrCisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhl IGV4Y2VwdGlvbiBmcm9tIHRoZSBtYWluIHRocmVhZCAoZGlmZmVyZW50IGNvZGUgcGF0aCkKKysg ICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAgeworKyAg ICAgICAgICAgIFVucmVsYXRlZEV4Y2VwdGlvblRocm93ZXIgZSgwKTsKKysgICAgICAgICAgICBl LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFVbmhhbmRsZWRFeGNl cHRpb24gJikgeworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAg ICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQor IH0KKyAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lv L3FidWZmZXIvdHN0X3FidWZmZXIuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9x YnVmZmVyL3RzdF9xYnVmZmVyLmNwcAoraW5kZXggNDk2ODc0MjExMC4uZjRjM2ZiNzExZCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1ZmZl ci5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1 ZmZlci5jcHAKK0BAIC00Miw2ICs0Miw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgd3Jp dGVCbG9ja19kYXRhKCk7CisgICAgIHZvaWQgd3JpdGVCbG9jaygpOworICAgICB2b2lkIHNlZWso KTsKKysgICAgdm9pZCBpbnZhbGlkU2Vla3MoKTsKKyAgICAgdm9pZCBzZWVrVGVzdF9kYXRhKCk7 CisgICAgIHZvaWQgc2Vla1Rlc3QoKTsKKyAgICAgdm9pZCByZWFkX3Jhd2RhdGEoKTsKK0BAIC0y ODYsNiArMjg3LDI5IEBAIHZvaWQgdHN0X1FCdWZmZXI6OnNlZWsoKQorICAgICBRQ09NUEFSRShi dWZmZXIuc2l6ZSgpLCBwb3MpOworIH0KKyAKKyt2b2lkIHRzdF9RQnVmZmVyOjppbnZhbGlkU2Vl a3MoKQorK3sKKysgICAgaWYgY29uc3RleHByIChzaXplb2YocXNpemV0eXBlKSA9PSBzaXplb2Yo cWludDY0KSkgeworKyAgICAgICAgLy8gc2l6ZW9mKHFzaXpldHlwZSkgPT0gc2l6ZW9mKHFpbnQ2 NCksIHNvICsxIHdvdWxkIG92ZXJmbG93CisrICAgICAgICBRU0tJUCgiVGhpcyBpcyBhIDMyLWJp dC1vbmx5IHRlc3QuIik7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBRQnVmZmVyIGJ1ZmZlcjsK KysgICAgICAgIGJ1ZmZlci5vcGVuKFFJT0RldmljZTo6V3JpdGVPbmx5KTsKKysgICAgICAgIFFD T01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFzaXpldHlwZSgwKSk7CisrICAgICAgICBR Q09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7CisrICAgICAgICBjb25zdGV4cHIgcWlu dDY0IE1heFFCeXRlQXJyYXlDYXBhY2l0eSA9IChzdGQ6Om51bWVyaWNfbGltaXRzPHFzaXpldHlw ZT46Om1heCkoKTsKKysgICAgICAgIC8vIHRoaXMgc2hvdWxkIGZhaWwgZmFzdCwgbm90IGFmdGVy IHRyeWluZyB0byBhbGxvY2F0ZSBuZWFybHkgMiBHaUIgb2YgZGF0YSwKKysgICAgICAgIC8vIHBv dGVudGlhbGx5IGNyYXNoaW5nIGluIHRoZSBwcm9jZXNzOgorKyAgICAgICAgUVZFUklGWSghYnVm ZmVyLnNlZWsoMiAqIE1heFFCeXRlQXJyYXlDYXBhY2l0eSAtIDEpKTsKKysgICAgICAgIFFDT01Q QVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFzaXpldHlwZSgwKSk7CisrICAgICAgICBRQ09N UEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7CisrICAgICAgICAvLyBkaXR0bzoKKysgICAg ICAgIFFWRVJJRlkoIWJ1ZmZlci5zZWVrKE1heFFCeXRlQXJyYXlDYXBhY2l0eSArIDEpKTsKKysg ICAgICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFzaXpldHlwZSgwKSk7Cisr ICAgICAgICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7CisrICAgIH0KKyt9Cisr Cisgdm9pZCB0c3RfUUJ1ZmZlcjo6c2Vla1Rlc3RfZGF0YSgpCisgeworICAgICB3cml0ZUJsb2Nr X2RhdGEoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fpb2Rl dmljZS90c3RfcWlvZGV2aWNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWlv ZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCitpbmRleCBkYTUzMjc1OTRjLi40YTA0ZTBmN2M2IDEw MDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fp b2RldmljZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWlvZGV2aWNl L3RzdF9xaW9kZXZpY2UuY3BwCitAQCAtNTYxLDcgKzU2MSw4IEBAIHByb3RlY3RlZDoKKyAgICAg cWludDY0IHJlYWREYXRhKGNoYXIgKmRhdGEsIHFpbnQ2NCBtYXhTaXplKSBvdmVycmlkZQorICAg ICB7CisgICAgICAgICBtYXhTaXplID0gcU1pbihtYXhTaXplLCBxaW50NjQoYnVmLT5zaXplKCkg LSBvZmZzZXQpKTsKKy0gICAgICAgIG1lbWNweShkYXRhLCBidWYtPmNvbnN0RGF0YSgpICsgb2Zm c2V0LCBtYXhTaXplKTsKKysgICAgICAgIGlmIChtYXhTaXplID4gMCkKKysgICAgICAgICAgICBt ZW1jcHkoZGF0YSwgYnVmLT5jb25zdERhdGEoKSArIG9mZnNldCwgbWF4U2l6ZSk7CisgICAgICAg ICBvZmZzZXQgKz0gbWF4U2l6ZTsKKyAgICAgICAgIHJldHVybiBtYXhTaXplOworICAgICB9CitA QCAtNjA0LDEzICs2MDUsMTUgQEAgcHJvdGVjdGVkOgorICAgICBxaW50NjQgcmVhZERhdGEoY2hh ciAqZGF0YSwgcWludDY0IG1heFNpemUpIG92ZXJyaWRlCisgICAgIHsKKyAgICAgICAgIG1heFNp emUgPSBxTWluKG1heFNpemUsIHFpbnQ2NChidWYuc2l6ZSgpIC0gcG9zKCkpKTsKKy0gICAgICAg IG1lbWNweShkYXRhLCBidWYuY29uc3REYXRhKCkgKyBwb3MoKSwgbWF4U2l6ZSk7CisrICAgICAg ICBpZiAobWF4U2l6ZSA+IDApCisrICAgICAgICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi5jb25zdERh dGEoKSArIHBvcygpLCBtYXhTaXplKTsKKyAgICAgICAgIHJldHVybiBtYXhTaXplOworICAgICB9 CisgICAgIHFpbnQ2NCB3cml0ZURhdGEoY29uc3QgY2hhciAqZGF0YSwgcWludDY0IG1heFNpemUp IG92ZXJyaWRlCisgICAgIHsKKyAgICAgICAgIG1heFNpemUgPSBxTWluKG1heFNpemUsIHFpbnQ2 NChidWYuc2l6ZSgpIC0gcG9zKCkpKTsKKy0gICAgICAgIG1lbWNweShidWYuZGF0YSgpICsgcG9z KCksIGRhdGEsIG1heFNpemUpOworKyAgICAgICAgaWYgKG1heFNpemUgPiAwKQorKyAgICAgICAg ICAgIG1lbWNweShidWYuZGF0YSgpICsgcG9zKCksIGRhdGEsIG1heFNpemUpOworICAgICAgICAg cmV0dXJuIG1heFNpemU7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAKK2luZGV4IGRiNjBiZWFkNjQu LmYzNDVhNDQ0MTQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fw cm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIv aW8vcXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcAorQEAgLTEsNyArMSw4IEBACisgLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqKgorICoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBM dGQuCistKiogQ29weXJpZ2h0IChDKSAyMDIwIEludGVsIENvcnBvcmF0aW9uLgorKyoqIENvcHly aWdodCAoQykgMjAyMCBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIy IEludGVsIENvcnBvcmF0aW9uLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vu c2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRo ZSBRdCBUb29sa2l0LgorQEAgLTE1MCw2ICsxNTEsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2 b2lkIHN0YXJ0U3RvcFN0YXJ0U3RvcEJ1ZmZlcnMoKTsKKyAgICAgdm9pZCBwcm9jZXNzRXZlbnRz SW5BUmVhZHlSZWFkU2xvdF9kYXRhKCk7CisgICAgIHZvaWQgcHJvY2Vzc0V2ZW50c0luQVJlYWR5 UmVhZFNsb3QoKTsKKysgICAgdm9pZCBzdGFydEZyb21DdXJyZW50V29ya2luZ0Rpcl9kYXRhKCk7 CisrICAgIHZvaWQgc3RhcnRGcm9tQ3VycmVudFdvcmtpbmdEaXIoKTsKKyAKKyAgICAgLy8ga2Vl cCB0aGVzZSBhdCB0aGUgZW5kLCBzaW5jZSB0aGV5IHVzZSBsb3RzIG9mIHByb2Nlc3NlcyBhbmQg c29tZXRpbWVzCisgICAgIC8vIGNhdXNlZCBvYnNjdXJlIGZhaWx1cmVzIHRvIG9jY3VyIGluIHRl c3RzIHRoYXQgZm9sbG93ZWQgdGhlbSAoZXNwLiBvbiB0aGUgTWFjKQorQEAgLTI3MzEsNSArMjcz NCw5NCBAQCB2b2lkIHRzdF9RUHJvY2Vzczo6ZmluaXNoUHJvY2Vzc0JlZm9yZVJlYWRpbmdEb25l X2RlcHJlY2F0ZWQoKQorIAorICNlbmRpZgorIAorK2VudW0gY2xhc3MgQ2hkaXJNb2RlIHsKKysg ICAgTm9uZSA9IDAsCisrICAgIEluUGFyZW50LAorKyAgICBJbkNoaWxkCisrfTsKKytRX0RFQ0xB UkVfTUVUQVRZUEUoQ2hkaXJNb2RlKQorKworK3ZvaWQgdHN0X1FQcm9jZXNzOjpzdGFydEZyb21D dXJyZW50V29ya2luZ0Rpcl9kYXRhKCkKKyt7CisrICAgIHFSZWdpc3Rlck1ldGFUeXBlPENoZGly TW9kZT4oKTsKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxRU3RyaW5nPigicHJvZ3JhbVByZWZpeCIp OworKyAgICBRVGVzdDo6YWRkQ29sdW1uPENoZGlyTW9kZT4oImNoZGlyTW9kZSIpOworKyAgICBR VGVzdDo6YWRkQ29sdW1uPGJvb2w+KCJzdWNjZXNzIik7CisrCisrICAgIGNvbnN0ZXhwciBib29s IElzV2luZG93cyA9IHRydWUKKysjaWZkZWYgUV9PU19VTklYCisrICAgICAgICAgICAgJiYgZmFs c2UKKysjZW5kaWYKKysgICAgICAgICAgICA7CisrCisrICAgIC8vIGJhc2VsaW5lOiB0cnlpbmcg dG8gZXhlY3V0ZSB0aGUgZGlyZWN0b3J5LCB0aGlzIGNhbid0IHBvc3NpYmx5IHN1Y2NlZWQhCisr ICAgIFFUZXN0OjpuZXdSb3coInBsYWluLXNhbWUtY3dkIikgPDwgUVN0cmluZygpIDw8IENoZGly TW9kZTo6Tm9uZSA8PCBmYWxzZTsKKysKKysgICAgLy8gY3Jvc3MtcGxhdGZvcm0gYmVoYXZpb3I6 IG5laXRoZXIgT1Mgc2VhcmNoZXMgdGhlIHNldFdvcmtpbmdEaXJlY3RvcnkoKQorKyAgICAvLyBk aXIgd2l0aG91dCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3coInBsYWluLWNoaWxkLWNoZGlyIikg PDwgUVN0cmluZygpIDw8IENoZGlyTW9kZTo6SW5DaGlsZCA8PCBmYWxzZTsKKysKKysgICAgLy8g Y3Jvc3MtcGxhdGZvcm0gYmVoYXZpb3I6IGJvdGggT1NlcyBzZWFyY2ggdGhlIHBhcmVudCdzIENX RCB3aXRoICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicHJlZml4ZWQtcGFyZW50LWNoZGlyIikg PDwgIi4vIiA8PCBDaGRpck1vZGU6OkluUGFyZW50IDw8IHRydWU7CisrCisrICAgIC8vIG9wcG9z aXRlIGJlaGF2aW9yczogV2luZG93cyBzZWFyY2hlcyB0aGUgcGFyZW50J3MgQ1dEIGFuZCBVbml4 IHNlYXJjaGVzCisrICAgIC8vIHRoZSBjaGlsZCdzIHdpdGggIi4vIgorKyAgICBRVGVzdDo6bmV3 Um93KCJwcmVmaXhlZC1jaGlsZC1jaGRpciIpIDw8ICIuLyIgPDwgQ2hkaXJNb2RlOjpJbkNoaWxk IDw8ICFJc1dpbmRvd3M7CisrCisrICAgIC8vIFdpbmRvd3Mgc2VhcmNoZXMgdGhlIHBhcmVudCdz IENXRCB3aXRob3V0ICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicGxhaW4tcGFyZW50LWNoZGly IikgPDwgUVN0cmluZygpIDw8IENoZGlyTW9kZTo6SW5QYXJlbnQgPDwgSXNXaW5kb3dzOworK30K KysKKyt2b2lkIHRzdF9RUHJvY2Vzczo6c3RhcnRGcm9tQ3VycmVudFdvcmtpbmdEaXIoKQorK3sK KysgICAgUUZFVENIKFFTdHJpbmcsIHByb2dyYW1QcmVmaXgpOworKyAgICBRRkVUQ0goQ2hkaXJN b2RlLCBjaGRpck1vZGUpOworKyAgICBRRkVUQ0goYm9vbCwgc3VjY2Vzcyk7CisrCisrICAgIFFQ cm9jZXNzIHByb2Nlc3M7CisrICAgIHFSZWdpc3Rlck1ldGFUeXBlPFFQcm9jZXNzOjpQcm9jZXNz RXJyb3I+KCk7CisrICAgIFFTaWduYWxTcHkgZXJyb3JTcHkoJnByb2Nlc3MsICZRUHJvY2Vzczo6 ZXJyb3JPY2N1cnJlZCk7CisrICAgIFFWRVJJRlkoZXJyb3JTcHkuaXNWYWxpZCgpKTsKKysKKysg ICAgLy8gYm90aCB0aGUgZGlyIG5hbWUgYW5kIHRoZSBleGVjdXRhYmxlIG5hbWUKKysgICAgY29u c3QgUVN0cmluZyB0YXJnZXQgPSBRU3RyaW5nTGl0ZXJhbCgidGVzdFByb2Nlc3NOb3JtYWwiKTsK KysgICAgcHJvY2Vzcy5zZXRQcm9ncmFtKHByb2dyYW1QcmVmaXggKyB0YXJnZXQpOworKworKyNp ZmRlZiBRX09TX1VOSVgKKysgICAgLy8gUmVzZXQgUEFUSCwgdG8gYmUgc3VyZSBpdCBkb2Vzbid0 IGNvbnRhaW4gLiBvciB0aGUgZW1wdHkgcGF0aC4KKysgICAgLy8gV2UgY2FuJ3QgZG8gdGhpcyBv biBXaW5kb3dzIGJlY2F1c2UgRExMcyBhcmUgc2VhcmNoZWQgaW4gUEFUSAorKyAgICAvLyBhbmQg V2luZG93cyBhbHdheXMgc2VhcmNoZXMgIi4iIGFueXdheS4KKysgICAgYXV0byByZXN0b3JlRW52 ID0gcVNjb3BlR3VhcmQoW29sZCA9IHFnZXRlbnYoIlBBVEgiKV0geworKyAgICAgICAgcXB1dGVu digiUEFUSCIsIG9sZCk7CisrICAgIH0pOworKyAgICBxcHV0ZW52KCJQQVRIIiwgIi8iKTsKKysj ZW5kaWYKKysKKysgICAgc3dpdGNoIChjaGRpck1vZGUpIHsKKysgICAgY2FzZSBDaGRpck1vZGU6 OkluUGFyZW50OiB7CisrICAgICAgICBhdXRvIHJlc3RvcmVDd2QgPSBxU2NvcGVHdWFyZChbb2xk ID0gUURpcjo6Y3VycmVudFBhdGgoKV0geworKyAgICAgICAgICAgIFFEaXI6OnNldEN1cnJlbnQo b2xkKTsKKysgICAgICAgIH0pOworKyAgICAgICAgUVZFUklGWShRRGlyOjpzZXRDdXJyZW50KHRh cmdldCkpOworKyAgICAgICAgcHJvY2Vzcy5zdGFydCgpOworKyAgICAgICAgYnJlYWs7CisrICAg IH0KKysgICAgY2FzZSBDaGRpck1vZGU6OkluQ2hpbGQ6CisrICAgICAgICBwcm9jZXNzLnNldFdv cmtpbmdEaXJlY3RvcnkodGFyZ2V0KTsKKysgICAgICAgIFFfRkFMTFRIUk9VR0goKTsKKysgICAg Y2FzZSBDaGRpck1vZGU6Ok5vbmU6CisrICAgICAgICBwcm9jZXNzLnN0YXJ0KCk7CisrICAgICAg ICBicmVhazsKKysgICAgfQorKworKyAgICBRQ09NUEFSRShwcm9jZXNzLndhaXRGb3JTdGFydGVk KCksIHN1Y2Nlc3MpOworKyAgICBRQ09NUEFSRShlcnJvclNweS5jb3VudCgpLCBpbnQoIXN1Y2Nl c3MpKTsKKysgICAgaWYgKHN1Y2Nlc3MpIHsKKysgICAgICAgIFFWRVJJRlkocHJvY2Vzcy53YWl0 Rm9yRmluaXNoZWQoKSk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBRQ09NUEFSRShwcm9jZXNz LmVycm9yKCksIFFQcm9jZXNzOjpGYWlsZWRUb1N0YXJ0KTsKKysgICAgfQorK30KKysKKyBRVEVT VF9NQUlOKHRzdF9RUHJvY2VzcykKKyAjaW5jbHVkZSAidHN0X3Fwcm9jZXNzLm1vYyIKK2RpZmYg LS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRl dGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAgYi9x dGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJv eHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAKK2luZGV4IGUxZWE3 YTQ1NTIuLjkwOTcyY2FhNTcgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGli L2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRl dGFibGVzcHJveHltb2RlbC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaXRl bW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsL3RzdF9xY29uY2F0ZW5hdGV0YWJs ZXNwcm94eW1vZGVsLmNwcAorQEAgLTExNyw2ICsxMTcsNyBAQCBwcml2YXRlIFFfU0xPVFM6Cisg ICAgIHZvaWQgc2hvdWxkUHJvcGFnYXRlRHJvcEFmdGVyTGFzdFJvd19kYXRhKCk7CisgICAgIHZv aWQgc2hvdWxkUHJvcGFnYXRlRHJvcEFmdGVyTGFzdFJvdygpOworICAgICB2b2lkIHF0YnVnOTE3 ODgoKTsKKysgICAgdm9pZCBxdGJ1ZzkxODc4KCk7CisgCisgcHJpdmF0ZToKKyAgICAgUVN0YW5k YXJkSXRlbU1vZGVsIG1vZDsKK0BAIC04NDMsNiArODQ0LDIyIEBAIHZvaWQgdHN0X1FDb25jYXRl bmF0ZVRhYmxlc1Byb3h5TW9kZWw6OnF0YnVnOTE3ODgoKQorICAgICBRQ09NUEFSRShwcm94eUNv bmNhdC5jb2x1bW5Db3VudCgpLCAwKTsKKyB9CisgCisrdm9pZCB0c3RfUUNvbmNhdGVuYXRlVGFi bGVzUHJveHlNb2RlbDo6cXRidWc5MTg3OCgpCisreworKyAgICBRU3RhbmRhcmRJdGVtTW9kZWwg bTsKKysgICAgbS5zZXRSb3dDb3VudCg0KTsKKysgICAgbS5zZXRDb2x1bW5Db3VudCg0KTsKKysK KysgICAgUUNvbmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbCBwbTsKKysgICAgUVNvcnRGaWx0ZXJQ cm94eU1vZGVsIHByb3h5RmlsdGVyOworKyAgICBwcm94eUZpbHRlci5zZXRTb3VyY2VNb2RlbCgm cG0pOworKyAgICBwcm94eUZpbHRlci5zZXRGaWx0ZXJGaXhlZFN0cmluZygic29tZXRoaW5nIik7 CisrICAgIHBtLmFkZFNvdXJjZU1vZGVsKCZtKTsgIC8vIFRoaXMgc2hvdWxkIG5vdCBhc3NlcnQK KysKKysgICAgUUNPTVBBUkUocG0uY29sdW1uQ291bnQoKSwgNCk7CisrICAgIFFDT01QQVJFKHBt LnJvd0NvdW50KCksIDQpOworK30KKysKKyBRVEVTVF9HVUlMRVNTX01BSU4odHN0X1FDb25jYXRl bmF0ZVRhYmxlc1Byb3h5TW9kZWwpCisgCisgI2luY2x1ZGUgInRzdF9xY29uY2F0ZW5hdGV0YWJs ZXNwcm94eW1vZGVsLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGli L2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVs aWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCitpbmRleCA5YmQ2NmMwODM1Li5lZDRh MGJhZTVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9i amVjdC90c3RfcW9iamVjdC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIva2Vy bmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCitAQCAtMTU4LDYgKzE1OCw3IEBAIHByaXZhdGUg c2xvdHM6CisgICAgIHZvaWQgbnVsbFJlY2VpdmVyKCk7CisgICAgIHZvaWQgZnVuY3RvclJlZmVy ZW5jZXNDb25uZWN0aW9uKCk7CisgICAgIHZvaWQgZGlzY29ubmVjdERpc2Nvbm5lY3RzKCk7Cisr ICAgIHZvaWQgZGVjbGFyYXRpdmVEYXRhKCk7CisgfTsKKyAKKyBzdHJ1Y3QgUU9iamVjdENyZWF0 ZWRPblNodXRkb3duCitAQCAtNzY3OSw1ICs3NjgwLDgxIEBAIHZvaWQgdHN0X1FPYmplY3Q6OmRp c2Nvbm5lY3REaXNjb25uZWN0cygpCisgUV9TVEFUSUNfQVNTRVJUKFF0UHJpdmF0ZTo6SGFzUV9P QkpFQ1RfTWFjcm88dHN0X1FPYmplY3Q+OjpWYWx1ZSk7CisgUV9TVEFUSUNfQVNTRVJUKCFRdFBy aXZhdGU6Okhhc1FfT0JKRUNUX01hY3JvPFNpYmxpbmdEZWxldGVyPjo6VmFsdWUpOworIAorKyNp ZmRlZiBRVF9CVUlMRF9JTlRFUk5BTAorKy8qCisrICAgIFNpbmNlIFFPYmplY3RQcml2YXRlIHN0 b3JlcyB0aGUgZGVjbGFyYXRpdmVEYXRhIHBvaW50ZXIgaW4gYSB1bmlvbiB3aXRoIHRoZSBwb2lu dGVyCisrICAgIHRvIHRoZSBjdXJyZW50bHkgZGVzdHJveWVkIGNoaWxkLCBjYWxscyB0byB0aGUg UXREZWNsYXJhdGl2ZSBoYW5kbGVycyBuZWVkIHRvIGJlCisrICAgIGNvcnJlY3RseSBndWFyZGVk LiBRVEJVRy0xMDUyODYKKysqLworK25hbWVzcGFjZSBRdERlY2xhcmF0aXZlIHsKKytzdGF0aWMg UUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICp0aGVEYXRhOworKworK3N0YXRpYyB2b2lkIGRlc3Ry b3llZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRhdGEsIFFPYmplY3QgKikKKyt7CisrICAg IFFDT01QQVJFKGRhdGEsIHRoZURhdGEpOworK30KKytzdGF0aWMgdm9pZCBzaWduYWxFbWl0dGVk KFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgUU9iamVjdCAqLCBpbnQsIHZvaWQgKiop CisreworKyAgICBRQ09NUEFSRShkYXRhLCB0aGVEYXRhKTsKKyt9CisrLy8gd2UgY2FuJ3QgdXNl IFFDT01QQVJFIGluIHRoZSBuZXh0IHR3byBmdW5jdGlvbnMsIGFzIHRoZXkgZG9uJ3QgcmV0dXJu IHZvaWQKKytzdGF0aWMgaW50IHJlY2VpdmVycyhRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRh dGEsIGNvbnN0IFFPYmplY3QgKiwgaW50KQorK3sKKysgICAgUVRlc3Q6OnFDb21wYXJlKGRhdGEs IHRoZURhdGEsICJkYXRhIiwgInRoZURhdGEiLCBfX0ZJTEVfXywgX19MSU5FX18pOworKyAgICBy ZXR1cm4gMDsKKyt9Cisrc3RhdGljIGJvb2wgaXNTaWduYWxDb25uZWN0ZWQoUUFic3RyYWN0RGVj bGFyYXRpdmVEYXRhICpkYXRhLCBjb25zdCBRT2JqZWN0ICosIGludCkKKyt7CisrICAgIFFUZXN0 OjpxQ29tcGFyZShkYXRhLCB0aGVEYXRhLCAiZGF0YSIsICJ0aGVEYXRhIiwgX19GSUxFX18sIF9f TElORV9fKTsKKysgICAgcmV0dXJuIHRydWU7CisrfQorKworK2NsYXNzIE9iamVjdCA6IHB1Ymxp YyBRT2JqZWN0CisreworKyAgICBRX09CSkVDVAorK3B1YmxpYzoKKysgICAgdXNpbmcgUU9iamVj dDo6UU9iamVjdDsKKysgICAgfk9iamVjdCgpCisrICAgIHsKKysgICAgICAgIGlmIChPYmplY3Qg KnAgPSBzdGF0aWNfY2FzdDxPYmplY3QgKj4ocGFyZW50KCkpKQorKyAgICAgICAgICAgIHAtPmVt aXRTaWduYWwoKTsKKysgICAgfQorKworKyAgICB2b2lkIGVtaXRTaWduYWwoKQorKyAgICB7Cisr ICAgICAgICBlbWl0IHRoZVNpZ25hbCgpOworKyAgICB9CisrCisrc2lnbmFsczoKKysgICAgdm9p ZCB0aGVTaWduYWwoKTsKKyt9OworKworK30KKysjZW5kaWYKKysKKyt2b2lkIHRzdF9RT2JqZWN0 OjpkZWNsYXJhdGl2ZURhdGEoKQorK3sKKysjaWZkZWYgUVRfQlVJTERfSU5URVJOQUwKKysgICAg UVNjb3BlZFZhbHVlUm9sbGJhY2sgZGVzdHJveWVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6 ZGVzdHJveWVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJh dGl2ZTo6ZGVzdHJveWVkKTsKKysgICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sgc2lnbmFsRW1pdHRl ZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnNpZ25hbEVtaXR0ZWQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2ZTo6c2lnbmFsRW1pdHRlZCk7 CisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIHJlY2VpdmVycyhRQWJzdHJhY3REZWNsYXJhdGl2 ZURhdGE6OnJlY2VpdmVycywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0 RGVjbGFyYXRpdmU6OnJlY2VpdmVycyk7CisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIGlzU2ln bmFsQ29ubmVjdGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0ZWQs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0RGVjbGFyYXRp dmU6OmlzU2lnbmFsQ29ubmVjdGVkKTsKKysKKysgICAgUXREZWNsYXJhdGl2ZTo6T2JqZWN0IHA7 CisrICAgIFFPYmplY3RQcml2YXRlICpwcml2ID0gUU9iamVjdFByaXZhdGU6OmdldCgmcCk7Cisr ICAgIHByaXYtPmRlY2xhcmF0aXZlRGF0YSA9IFF0RGVjbGFyYXRpdmU6OnRoZURhdGEgPSBuZXcg UUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOworKworKyAgICBjb25uZWN0KCZwLCAmUXREZWNsYXJh dGl2ZTo6T2JqZWN0Ojp0aGVTaWduYWwsICZwLCBbXXsKKysgICAgfSk7CisrCisrICAgIFF0RGVj bGFyYXRpdmU6Ok9iamVjdCAqY2hpbGQgPSBuZXcgUXREZWNsYXJhdGl2ZTo6T2JqZWN0OworKyAg ICBjaGlsZC0+c2V0UGFyZW50KCZwKTsKKysjZW5kaWYKKyt9CisrCisgUVRFU1RfTUFJTih0c3Rf UU9iamVjdCkKKyAjaW5jbHVkZSAidHN0X3FvYmplY3QubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFz ZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3FtaW1lZGF0 YWJhc2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRh YmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAKK2luZGV4IDBlYTQyMmVjYmMuLjFhMzI1NjUzNGIg MTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRh dGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29y ZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAKK0BAIC03 MCwxNSArNzAsMTUgQEAgc3RhdGljIGlubGluZSBRU3RyaW5nIHRlc3RTdWl0ZVdhcm5pbmcoKQor IAorICAgICBRU3RyaW5nIHJlc3VsdDsKKyAgICAgUVRleHRTdHJlYW0gc3RyKCZyZXN1bHQpOwor LSAgICBzdHIgPDwgIlxuQ2Fubm90IGZpbmQgdGhlIHNoYXJlZC1taW1lLWluZm8gdGVzdCBzdWl0 ZVxuc3RhcnRpbmcgZnJvbTogIgorKyAgICBzdHIgPDwgIlxuQ2Fubm90IGZpbmQgdGhlIHNoYXJl ZC1taW1lLWluZm8gdGVzdCBzdWl0ZVxuaW4gdGhlIHBhcmVudCBvZjogIgorICAgICAgICAgPDwg UURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKFFEaXI6OmN1cnJlbnRQYXRoKCkpIDw8ICJcbiIKKyAg ICAgICAgICAgICJjZCAiIDw8IFFEaXI6OnRvTmF0aXZlU2VwYXJhdG9ycyhRU3RyaW5nTGl0ZXJh bCgidGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlIikpIDw8ICJcbiIK Ky0gICAgICAgICAgICJ3Z2V0IGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94ZGcvc2hhcmVk LW1pbWUtaW5mby9zbmFwc2hvdC9SZWxlYXNlLTEtMTAuemlwXG4iCistICAgICAgICAgICAidW56 aXAgUmVsZWFzZS0xLTEwLnppcFxuIjsKKysgICAgICAgICAgICJ3Z2V0IGh0dHBzOi8vZ2l0bGFi LmZyZWVkZXNrdG9wLm9yZy94ZGcvc2hhcmVkLW1pbWUtaW5mby8tL2FyY2hpdmUvMi4xL3NoYXJl ZC1taW1lLWluZm8tMi4xLnppcFxuIgorKyAgICAgICAgICAgInVuemlwIHNoYXJlZC1taW1lLWlu Zm8tMi4xLnppcFxuIjsKKyAjaWZkZWYgUV9PU19XSU4KKy0gICAgc3RyIDw8ICJta2RpciB0ZXN0 ZmlsZXNcbnhjb3B5IC9zIFJlbGVhc2UtMS0xMCBzLW0taVxuIjsKKysgICAgc3RyIDw8ICJta2Rp ciB0ZXN0ZmlsZXNcbnhjb3B5IC9zIHNoYXJlZC1taW1lLWluZm8tMi4xIHMtbS1pXG4iOworICNl bHNlCistICAgIHN0ciA8PCAibG4gLXMgUmVsZWFzZS0xLTEwIHMtbS1pXG4iOworKyAgICBzdHIg PDwgImxuIC1zIHNoYXJlZC1taW1lLWluZm8tMi4xIHMtbS1pXG4iOworICNlbmRpZgorICAgICBy ZXR1cm4gcmVzdWx0OworIH0KK0BAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCB0c3RfUU1pbWVEYXRh YmFzZTo6aW5pdFRlc3RDYXNlKCkKKyAgICAgUVZFUklGWTIoY29weVJlc291cmNlRmlsZSh4bWxG aWxlTmFtZSwgeG1sVGFyZ2V0RmlsZU5hbWUsICZlcnJvck1lc3NhZ2UpLCBxUHJpbnRhYmxlKGVy cm9yTWVzc2FnZSkpOworICNlbmRpZgorIAorLSAgICBtX3Rlc3RTdWl0ZSA9IFFGSU5EVEVTVERB VEEoInMtbS1pL3Rlc3RzIik7CisrICAgIG1fdGVzdFN1aXRlID0gUUZJTkRURVNUREFUQSgicy1t LWkvdGVzdHMvbWltZS1kZXRlY3Rpb24iKTsKKyAgICAgaWYgKG1fdGVzdFN1aXRlLmlzRW1wdHko KSkKKyAgICAgICAgIHFXYXJuaW5nKCIlcyIsIHFQcmludGFibGUodGVzdFN1aXRlV2FybmluZygp KSk7CisgCitAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgdHN0X1FNaW1lRGF0YWJhc2U6OmFsbE1p bWVUeXBlcygpCisgICAgIFFWRVJJRlkoIWxzdC5pc0VtcHR5KCkpOworIAorICAgICAvLyBIYXJk Y29kaW5nIHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGNoZWNrIGJvdGggcHJvdmlkZXJzIGZpbmQg dGhlIHNhbWUgbnVtYmVyIG9mIG1pbWV0eXBlcy4KKy0gICAgUUNPTVBBUkUobHN0LmNvdW50KCks IDc3OSk7CisrICAgIFFDT01QQVJFKGxzdC5jb3VudCgpLCA4MTEpOworIAorICAgICBmb3JlYWNo IChjb25zdCBRTWltZVR5cGUgJm1pbWUsIGxzdCkgeworICAgICAgICAgY29uc3QgUVN0cmluZyBu YW1lID0gbWltZS5uYW1lKCk7CitAQCAtNjMxLDEwICs2MzEsOSBAQCB2b2lkIHRzdF9RTWltZURh dGFiYXNlOjpzdWZmaXhlc19kYXRhKCkKKyAKKyAgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUg d2l0aCBhIHNpbmdsZSBwYXR0ZXJuIikgPDwgImFwcGxpY2F0aW9uL3BkZiIgPDwgIioucGRmIiA8 PCAicGRmIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUgd2l0aCBtdWx0aXBsZSBwYXR0 ZXJucyIpIDw8ICJhcHBsaWNhdGlvbi94LWtwcmVzZW50ZXIiIDw8ICIqLmtwcjsqLmtwdCIgPDwg ImtwciI7CistICAgIFFUZXN0OjpuZXdSb3coImpwZWciKSA8PCAiaW1hZ2UvanBlZyIgPDwgIiou anBlOyouanBnOyouanBlZyIgPDwgImpwZWciOworLSAgICAvL2lmIChLTWltZVR5cGU6OnNoYXJl ZE1pbWVJbmZvVmVyc2lvbigpID4gS0RFX01BS0VfVkVSU0lPTigwLCA2MCwgMCkpIHsKKy0gICAg ICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbWFueSBwYXR0ZXJucyIpIDw8ICJhcHBs aWNhdGlvbi92bmQud29yZHBlcmZlY3QiIDw8ICIqLndwOyoud3A0Oyoud3A1Oyoud3A2Oyoud3Bk Oyoud3BwIiA8PCAid3AiOworLSAgICAvL30KKysgICAgLy8gVGhlIHByZWZlcnJlZCBzdWZmaXgg Zm9yIGltYWdlL2pwZWcgaXMgKi5qcGcsIGFzIHBlciBodHRwczovL2J1Z3Mua2RlLm9yZy9zaG93 X2J1Zy5jZ2k/aWQ9MTc2NzM3CisrICAgIFFUZXN0OjpuZXdSb3coImpwZWciKSA8PCAiaW1hZ2Uv anBlZyIgPDwgIiouanBlOyouanBnOyouanBlZyIgPDwgImpwZyI7CisrICAgIFFUZXN0OjpuZXdS b3coIm1pbWV0eXBlIHdpdGggbWFueSBwYXR0ZXJucyIpIDw8ICJhcHBsaWNhdGlvbi92bmQud29y ZHBlcmZlY3QiIDw8ICIqLndwOyoud3A0Oyoud3A1Oyoud3A2Oyoud3BkOyoud3BwIiA8PCAid3Ai OworICAgICBRVGVzdDo6bmV3Um93KCJvYXNpcyB0ZXh0IG1pbWV0eXBlIikgPDwgImFwcGxpY2F0 aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dCIgPDwgIioub2R0IiA8PCAib2R0IjsKKyAg ICAgUVRlc3Q6Om5ld1Jvdygib2FzaXMgcHJlc2VudGF0aW9uIG1pbWV0eXBlIikgPDwgImFwcGxp Y2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uIiA8PCAiKi5vZHAiIDw8 ICJvZHAiOworICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG11bHRpcGxlIHBhdHRl cm5zIikgPDwgInRleHQvcGxhaW4iIDw8ICIqLmFzYzsqLnR4dDsqLHYiIDw8ICJ0eHQiOworZGlm ZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3Rz dF9xdGpzb24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxpemF0aW9uL2pz b24vdHN0X3F0anNvbi5jcHAKK2luZGV4IDNlNThkZDAzY2MuLmM4ZjgyZWY1ZDUgMTAwNjQ0Cist LS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6YXRpb24vanNvbi90c3RfcXRq c29uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxpemF0aW9uL2pz b24vdHN0X3F0anNvbi5jcHAKK0BAIC0xNzYsNiArMTc2LDggQEAgcHJpdmF0ZSBRX1NMT1RTOgor ICAgICB2b2lkIGZyb21Ub1ZhcmlhbnRDb252ZXJzaW9uc19kYXRhKCk7CisgICAgIHZvaWQgZnJv bVRvVmFyaWFudENvbnZlcnNpb25zKCk7CisgCisrICAgIHZvaWQgbm9MZWFrT25OYW1lQ2xhc2go KTsKKysKKyBwcml2YXRlOgorICAgICBRU3RyaW5nIHRlc3REYXRhRGlyOworIH07CitAQCAtMzY4 NSw1ICszNjg3LDIzIEBAIHZvaWQgdHN0X1F0SnNvbjo6ZnJvbVRvVmFyaWFudENvbnZlcnNpb25z KCkKKyAgICAgfQorIH0KKyAKKyt2b2lkIHRzdF9RdEpzb246Om5vTGVha09uTmFtZUNsYXNoKCkK Kyt7CisrICAgIFFKc29uRG9jdW1lbnQgZG9jID0gUUpzb25Eb2N1bWVudDo6ZnJvbUpzb24oIntc IlwiOntcIlwiOjB9LFwiXCI6MH0iKTsKKysgICAgUVZFUklGWSghZG9jLmlzTnVsbCgpKTsKKysg ICAgY29uc3QgUUpzb25PYmplY3Qgb2JqID0gZG9jLm9iamVjdCgpOworKworKyAgICAvLyBSZW1v dmVkIHRoZSBkdXBsaWNhdGUga2V5LgorKyAgICBRQ09NUEFSRShvYmoubGVuZ3RoKCksIDEpOwor KworKyAgICAvLyBSZXRhaW5lZCB0aGUgbGFzdCBvZiB0aGUgZHVwbGljYXRlcy4KKysgICAgY29u c3QgUUpzb25WYWx1ZSB2YWwgPSBvYmouYmVnaW4oKS52YWx1ZSgpOworKyAgICBRVkVSSUZZKHZh bC5pc0RvdWJsZSgpKTsKKysgICAgUUNPTVBBUkUodmFsLnRvRG91YmxlKCksIDAuMCk7CisrCisr ICAgIC8vIEl0IHNob3VsZCBub3QgbGVhay4KKysgICAgLy8gSW4gcGFydGljdWxhciBpdCBzaG91 bGQgbm90IGZvcmdldCB0byBkZXJlZiB0aGUgY29udGFpbmVyIGZvciB0aGUgaW5uZXIgb2JqZWN0 LgorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RdEpzb24pCisgI2luY2x1ZGUgInRzdF9xdGpzb24u bW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvdGltZS9xdGltZXpv bmUvdHN0X3F0aW1lem9uZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3RpbWUvcXRp bWV6b25lL3RzdF9xdGltZXpvbmUuY3BwCitpbmRleCBhNTliNThkNTdmLi4yNDFjM2U4NGFjIDEw MDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1lem9uZS90c3Rf cXRpbWV6b25lLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1l em9uZS90c3RfcXRpbWV6b25lLmNwcAorQEAgLTYzLDYgKzYzLDcgQEAgcHJpdmF0ZSBzbG90czoK KyAgICAgdm9pZCBpc1ZhbGlkSWRfZGF0YSgpOworICAgICB2b2lkIGlzVmFsaWRJZCgpOworICAg ICB2b2lkIG1hbGZvcm1lZCgpOworKyAgICB2b2lkIHNlcmlhbGl6ZSgpOworICAgICAvLyBCYWNr ZW5kIHRlc3RzCisgICAgIHZvaWQgdXRjVGVzdCgpOworICAgICB2b2lkIGljdVRlc3QoKTsKK0BA IC05NDcsNiArOTQ4LDMzIEBAIHZvaWQgdHN0X1FUaW1lWm9uZTo6bWFsZm9ybWVkKCkKKyAgICAg ICAgIGJhcmYub2Zmc2V0RnJvbVV0Yyhub3cpOworIH0KKyAKKyt2b2lkIHRzdF9RVGltZVpvbmU6 OnNlcmlhbGl6ZSgpCisreworKyAgICBpbnQgcGFydHMgPSAwOworKyNpZm5kZWYgUVRfTk9fREVC VUdfU1RSRUFNCisrICAgIHFEZWJ1ZygpIDw8IFFUaW1lWm9uZSgpOyAvLyB0byB2ZXJpZnkgbm8g Y3Jhc2gKKysgICAgcGFydHMrKzsKKysjZW5kaWYKKysjaWZuZGVmIFFUX05PX0RBVEFTVFJFQU0K KysgICAgUUJ5dGVBcnJheSBibG9iOworKyAgICB7CisrICAgICAgICBRRGF0YVN0cmVhbSBzdHJl YW0oJmJsb2IsIFFJT0RldmljZTo6V3JpdGVPbmx5KTsKKysgICAgICAgIHN0cmVhbSA8PCBRVGlt ZVpvbmUoIkV1cm9wZS9Pc2xvIikgPDwgUVRpbWVab25lKDQyMCkgPDwgUVRpbWVab25lKCkgPDwg cWludDY0KC0xKTsKKysgICAgfQorKyAgICBRRGF0YVN0cmVhbSBzdHJlYW0oJmJsb2IsIFFJT0Rl dmljZTo6UmVhZE9ubHkpOworKyAgICBRVGltZVpvbmUgaW52YWxpZCwgb2Zmc2V0LCBvc2xvOwor KyAgICBxaW50NjQgbWludXNvbmU7CisrICAgIHN0cmVhbSA+PiBvc2xvID4+IG9mZnNldCA+PiBp bnZhbGlkID4+IG1pbnVzb25lOworKyAgICBRQ09NUEFSRShvc2xvLCBRVGltZVpvbmUoIkV1cm9w ZS9Pc2xvIikpOworKyAgICBRQ09NUEFSRShvZmZzZXQsIFFUaW1lWm9uZSg0MjApKTsKKysgICAg UVZFUklGWSghaW52YWxpZC5pc1ZhbGlkKCkpOworKyAgICBRQ09NUEFSRShtaW51c29uZSwgcWlu dDY0KC0xKSk7CisrICAgIHBhcnRzKys7CisrI2VuZGlmCisrICAgIGlmICghcGFydHMpCisrICAg ICAgICBRU0tJUCgiTm8gc2VyaWFsaXphdGlvbiBlbmFibGVkIik7CisrfQorKworIHZvaWQgdHN0 X1FUaW1lWm9uZTo6dXRjVGVzdCgpCisgeworICNpZmRlZiBRVF9CVUlMRF9JTlRFUk5BTAorZGlm ZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRlcmZhY2UvdHN0X3FkYnVz aW50ZXJmYWNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRlcmZhY2UvdHN0 X3FkYnVzaW50ZXJmYWNlLmNwcAoraW5kZXggMDU0ODBjNmRkMi4uNzBmNGM3NTc1NiAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50 ZXJmYWNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90 c3RfcWRidXNpbnRlcmZhY2UuY3BwCitAQCAtMzI0LDYgKzMyNCwxMyBAQCB2b2lkIHRzdF9RREJ1 c0ludGVyZmFjZTo6bm90VmFsaWQoKQorIAorICAgICBRVkVSSUZZKCFpbnRlcmZhY2UuaXNWYWxp ZCgpKTsKKyAgICAgUVZFUklGWSghUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCgmaW50ZXJmYWNl LCAiTGlzdE5hbWVzIiwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pKTsKKysKKysgICAgLy8gV2l0aCBh IGNvbm5lY3Rpb24sIGJ1dCBlbXB0eS9udWxsIHNlcnZpY2UgYW5kIHBhdGggc3BlY2lmaWVkCisr ICAgIFFEQnVzQ29ubmVjdGlvbiBjb24gPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKTsK KysgICAgUVZFUklGWShjb24uaXNDb25uZWN0ZWQoKSk7CisrICAgIFFEQnVzSW50ZXJmYWNlIGlm YWNlKHt9LCB7fSwge30sIGNvbik7CisrICAgIFFWRVJJRlkoIWlmYWNlLmlzVmFsaWQoKSk7Cisr ICAgIFFWRVJJRlkoIVFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QoJmludGVyZmFjZSwgIkxpc3RO YW1lcyIsIFF0OjpEaXJlY3RDb25uZWN0aW9uKSk7CisgfQorIAorIHZvaWQgdHN0X1FEQnVzSW50 ZXJmYWNlOjpub3RWYWxpZERlcml2ZWQoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRv L2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwIGIvcXRiYXNlL3Rl c3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlzZXF1ZW5jZS5jcHAKK2lu ZGV4IDg3NDQ2OGM5NTQuLjA0Y2ViNGFiNjUgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0 by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVlbmNlLmNwcAorKysrIGIvcXRi YXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlzZXF1ZW5jZS5j cHAKK0BAIC01MDcsNiArNTA3LDEwIEBAIHZvaWQgdHN0X1FLZXlTZXF1ZW5jZTo6dG9TdHJpbmdG cm9tS2V5Y29kZV9kYXRhKCkKKyAgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtBbHQrTnVtK0RlbCIp IDw8IFFLZXlTZXF1ZW5jZShRdDo6Q29udHJvbE1vZGlmaWVyIHwgUXQ6OkFsdE1vZGlmaWVyIHwg UXQ6OktleXBhZE1vZGlmaWVyIHwgUXQ6OktleV9EZWxldGUpIDw8ICJDdHJsK0FsdCtOdW0rRGVs IjsKKyAgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtJbnMiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OkNv bnRyb2xNb2RpZmllciB8IFF0OjpLZXlfSW5zZXJ0KSA8PCAiQ3RybCtJbnMiOworICAgICBRVGVz dDo6bmV3Um93KCJDdHJsK051bStJbnMoMSkiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9JbnNl cnQgfCBRdDo6S2V5cGFkTW9kaWZpZXIgfCBRdDo6Q29udHJvbE1vZGlmaWVyKSA8PCAiQ3RybCtO dW0rSW5zIjsKKysgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6 S2V5X0NvbnRyb2wpIDw8ICJDb250cm9sIjsKKysgICAgUVRlc3Q6Om5ld1JvdygiQWx0IikgPDwg UUtleVNlcXVlbmNlKFF0OjpLZXlfQWx0KSA8PCAiQWx0IjsKKysgICAgUVRlc3Q6Om5ld1Jvdygi U2hpZnQiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9TaGlmdCkgPDwgIlNoaWZ0IjsKKysgICAg UVRlc3Q6Om5ld1JvdygiTWV0YSIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X01ldGEpIDw8ICJN ZXRhIjsKKyB9CisgCisgdm9pZCB0c3RfUUtleVNlcXVlbmNlOjp0b1N0cmluZ0Zyb21LZXljb2Rl KCkKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNl L3RzdF9xZm9udGRhdGFiYXNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS90ZXh0L3Fmb250 ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCitpbmRleCAxNWUwZWNhZGFhLi5iNGVjYTc0 MjgzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRkYXRhYmFz ZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS90ZXh0 L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCitAQCAtODEsNiArODEsOCBAQCBw cml2YXRlIHNsb3RzOgorICAgICB2b2lkIHJlZ2lzdGVyT3BlblR5cGVQcmVmZXJyZWROYW1lc1N5 c3RlbSgpOworICAgICB2b2lkIHJlZ2lzdGVyT3BlblR5cGVQcmVmZXJyZWROYW1lc0FwcGxpY2F0 aW9uKCk7CisgCisrICAgIHZvaWQgc3RyZXRjaFJlc3BlY3RlZCgpOworKworIHByaXZhdGU6Cisg ICAgIFFTdHJpbmcgbV9sZWRGb250OworICAgICBRU3RyaW5nIG1fdGVzdEZvbnQ7CitAQCAtMzU1 LDYgKzM1NywyOCBAQCBzdGF0aWMgUVN0cmluZyB0ZXN0U3RyaW5nKCkKKyAgICAgcmV0dXJuIFFT dHJpbmdMaXRlcmFsKCJmb28gYmFyIik7CisgfQorIAorK3ZvaWQgdHN0X1FGb250RGF0YWJhc2U6 OnN0cmV0Y2hSZXNwZWN0ZWQoKQorK3sKKysgICAgaW50IGl0YWxpY0lkID0gUUZvbnREYXRhYmFz ZTo6YWRkQXBwbGljYXRpb25Gb250KG1fdGVzdEZvbnRJdGFsaWMpOworKyAgICBRVkVSSUZZKGl0 YWxpY0lkICE9IC0xKTsKKysKKysgICAgUVZFUklGWSghUUZvbnREYXRhYmFzZTo6YXBwbGljYXRp b25Gb250RmFtaWxpZXMoaXRhbGljSWQpLmlzRW1wdHkoKSk7CisrCisrICAgIFFTdHJpbmcgaXRh bGljRm9udE5hbWUgPSBRRm9udERhdGFiYXNlOjphcHBsaWNhdGlvbkZvbnRGYW1pbGllcyhpdGFs aWNJZCkuZmlyc3QoKTsKKysKKysgICAgUUZvbnQgaXRhbGljRm9udCA9IFFGb250RGF0YWJhc2Uo KS5mb250KGl0YWxpY0ZvbnROYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVN0cmluZzo6ZnJvbUxhdGluMSgiSXRhbGljIiksIDE0KTsKKysgICAgUVZF UklGWShpdGFsaWNGb250Lml0YWxpYygpKTsKKysKKysgICAgUUZvbnQgaXRhbGljU3RyZXRjaGVk Rm9udCA9IGl0YWxpY0ZvbnQ7CisrICAgIGl0YWxpY1N0cmV0Y2hlZEZvbnQuc2V0U3RyZXRjaCgg NDAwICk7CisrCisrICAgIFFWRVJJRlkoUUZvbnRNZXRyaWNzRihpdGFsaWNGb250KS5ob3Jpem9u dGFsQWR2YW5jZShRU3RyaW5nTGl0ZXJhbCgiZm9vYmFyIikpIDwKKysgICAgICAgICAgICBRRm9u dE1ldHJpY3NGKGl0YWxpY1N0cmV0Y2hlZEZvbnQpLmhvcml6b250YWxBZHZhbmNlKFFTdHJpbmdM aXRlcmFsKCJmb29iYXIiKSkpOworKworKyAgICBRRm9udERhdGFiYXNlOjpyZW1vdmVBcHBsaWNh dGlvbkZvbnQoaXRhbGljSWQpOworK30KKysKKyB2b2lkIHRzdF9RRm9udERhdGFiYXNlOjpjb25k ZW5zZWRGb250V2lkdGhOb0ZvbnRNZXJnaW5nKCkKKyB7CisgICAgIGludCByZWd1bGFyRm9udElk ID0gUUZvbnREYXRhYmFzZTo6YWRkQXBwbGljYXRpb25Gb250KG1fdGVzdEZvbnQpOworZGlmZiAt LWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkvdHN0 X3FuZXR3b3JrcmVwbHkuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5l dHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5jcHAKK2luZGV4IDNkNGEwOTRjNDMuLmI0MjNl MTFhOTkgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL2FjY2Vzcy9xbmV0 d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8v bmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5jcHAKK0BAIC0y ODEsNiArMjgxLDcgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIGlvR2V0RnJvbUZpbGVT cGVjaWFsKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRmlsZV9kYXRhKCk7CisgICAgIHZvaWQgaW9H ZXRGcm9tRmlsZSgpOworKyAgICB2b2lkIGlvR2V0RnJvbUZpbGVVcmwoKTsKKyAgICAgdm9pZCBp b0dldEZyb21GdHBfZGF0YSgpOworICAgICB2b2lkIGlvR2V0RnJvbUZ0cCgpOworICAgICB2b2lk IGlvR2V0RnJvbUZ0cFdpdGhSZXVzZSgpOworQEAgLTMzMDAsNiArMzMwMSwxOCBAQCB2b2lkIHRz dF9RTmV0d29ya1JlcGx5Ojppb0dldEZyb21GaWxlKCkKKyAgICAgUUNPTVBBUkUocmVhZGVyLmRh dGEsIGRhdGEpOworIH0KKyAKKyt2b2lkIHRzdF9RTmV0d29ya1JlcGx5Ojppb0dldEZyb21GaWxl VXJsKCkKKyt7CisrICAgIC8vIFRoaXMgaW1tZWRpYXRlbHkgZmFpbHMgb24gbm9uLXdpbmRvd3Mg cGxhdGZvcm1zOgorKyAgICBRTmV0d29ya1JlcXVlc3QgcmVxdWVzdChRVXJsKCJmaWxlOi8vdW5j LXNlcnZlci9zb21lL3BhdGgiKSk7CisrICAgIFFOZXR3b3JrUmVwbHlQdHIgcmVwbHkobWFuYWdl ci5nZXQocmVxdWVzdCkpOworKyAgICBRU2lnbmFsU3B5IGZpbmlzaGVkU3B5KHJlcGx5LmdldCgp LCAmUU5ldHdvcmtSZXBseTo6ZmluaXNoZWQpOworKyAgICAvLyBRVEJVRy0xMDU2MTg6IFRoaXMg d291bGQsIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3JtcywgbmV2ZXIgaGFwcGVuIGJlY2F1c2UgdGhl IHNpZ25hbAorKyAgICAvLyB3YXMgZW1pdHRlZCBiZWZvcmUgdGhlIGNvbnN0cnVjdG9yIGZpbmlz aGVkLCBsZWF2aW5nIG5vIGNoYW5jZSBhdCBhbGwgdG8gY29ubmVjdCB0byB0aGUKKysgICAgLy8g c2lnbmFsCisrICAgIFFWRVJJRlkoZmluaXNoZWRTcHkud2FpdCgpKTsKKyt9CisrCisgdm9pZCB0 c3RfUU5ldHdvcmtSZXBseTo6aW9HZXRGcm9tRnRwX2RhdGEoKQorIHsKKyAgICAgUVRlc3Q6OmFk ZENvbHVtbjxRU3RyaW5nPigiZmlsZU5hbWUiKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMv YXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQgYi9xdGJhc2UvdGVz dHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQKK2luZGV4IDA2 OWZhNmIzNDEuLjRjYzRkOWE1ZWEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3 b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQKKysrKyBiL3F0YmFzZS90ZXN0cy9h dXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydAorQEAgLTEsNzUgKzEs MzQgQEAKKy1DZXJ0aWZpY2F0ZToKKy0gICAgRGF0YToKKy0gICAgICAgIFZlcnNpb246IDMgKDB4 MikKKy0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDAgKDB4MCkKKy0gICAgICAgIFNpZ25hdHVyZSBB bGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlwdGlvbgorLSAgICAgICAgSXNzdWVyOiBDPU5PLCBT VD1Pc2xvLCBMPU55ZGFsZW4sIE89Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp YXJ5KC1pZXMpLCBPVT1EZXZlbG9wbWVudCwgQ049Zmx1a2UudHJvbGwubm8vZW1haWxBZGRyZXNz PWFoYW5zc2VuQHRyb2xsdGVjaC5jb20KKy0gICAgICAgIFZhbGlkaXR5CistICAgICAgICAgICAg Tm90IEJlZm9yZTogRGVjICA0IDAxOjEwOjMyIDIwMDcgR01UCistICAgICAgICAgICAgTm90IEFm dGVyIDogQXByIDIxIDAxOjEwOjMyIDIwMzUgR01UCistICAgICAgICBTdWJqZWN0OiBDPU5PLCBT VD1Pc2xvLCBPPU5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKSwg T1U9RGV2ZWxvcG1lbnQsIENOPWZsdWtlLnRyb2xsLm5vCistICAgICAgICBTdWJqZWN0IFB1Ymxp YyBLZXkgSW5mbzoKKy0gICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlw dGlvbgorLSAgICAgICAgICAgIFJTQSBQdWJsaWMgS2V5OiAoMTAyNCBiaXQpCistICAgICAgICAg ICAgICAgIE1vZHVsdXMgKDEwMjQgYml0KToKKy0gICAgICAgICAgICAgICAgICAgIDAwOmE3OmM4 OmEwOjRhOmM0OjE5OjA1OjFiOjY2OmJhOjMyOmUyOmQyOmYxOgorLSAgICAgICAgICAgICAgICAg ICAgMWM6NmY6MTc6ODI6ZTQ6Mzk6MmU6MDE6NTE6OTA6ZGI6MDQ6MzQ6MzI6MTE6CistICAgICAg ICAgICAgICAgICAgICAyMTpjMjowZDo2Zjo1OTpkODo1Mzo5MDo1NDozZjo4Mzo4ZjphOTpkMzpi MzoKKy0gICAgICAgICAgICAgICAgICAgIGQ1OmVlOjFhOjliOjgwOmFlOmMzOjI1OmM5OjVlOmE1 OmFmOjRiOjYwOjA1OgorLSAgICAgICAgICAgICAgICAgICAgYWE6YTA6ZDE6OTE6MDE6MWY6Y2E6 MDQ6ODM6ZTM6NTg6MWM6OTk6MzI6NDU6CistICAgICAgICAgICAgICAgICAgICA4NDo3MDo3Mjo1 ODowMzo5ODo0YTo2Mzo4Yjo0MTpmNTowODo0OTpkMjo5MToKKy0gICAgICAgICAgICAgICAgICAg IDAyOjYwOjZiOmU0OjY0OmZlOmRkOmEwOmFhOjc0OjA4OmU5OjM0OjRjOjkxOgorLSAgICAgICAg ICAgICAgICAgICAgNWY6MTI6M2Q6Mzc6NGQ6NTQ6MmM6YWQ6N2Y6NWI6OTg6NjA6MzY6MDI6OGM6 CistICAgICAgICAgICAgICAgICAgICAzYjpmNjo0NTpmMzoyNzo2YTo5Yjo5NDo5ZAorLSAgICAg ICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCistICAgICAgICBYNTA5djMgZXh0 ZW5zaW9uczoKKy0gICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3RyYWludHM6IAorLSAgICAg ICAgICAgICAgICBDQTpGQUxTRQorLSAgICAgICAgICAgIE5ldHNjYXBlIENvbW1lbnQ6IAorLSAg ICAgICAgICAgICAgICBPcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZQorLSAgICAgICAgICAg IFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKKy0gICAgICAgICAgICAgICAgMjE6ODU6 MDQ6M0Q6MjM6MDE6NjY6RTU6Rjc6OUY6MUE6ODQ6MjQ6OEE6QUY6MEE6Nzk6RjQ6RTU6QUMKKy0g ICAgICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiAKKy0gICAgICAgICAg ICAgICAgRGlyTmFtZTovQz1OTy9TVD1Pc2xvL0w9TnlkYWxlbi9PPU5va2lhIENvcnBvcmF0aW9u IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS9PVT1EZXZlbG9wbWVudC9DTj1mbHVrZS50cm9s bC5uby9lbWFpbEFkZHJlc3M9YWhhbnNzZW5AdHJvbGx0ZWNoLmNvbQorLSAgICAgICAgICAgICAg ICBzZXJpYWw6OEU6QTg6QjQ6RTg6OTE6Qjc6NTQ6MkUKKy0KKy0gICAgU2lnbmF0dXJlIEFsZ29y aXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCistICAgICAgICA2ZDo1Nzo1ZjpkMTowNTo0Mzpm MDo2MjowNTplYzoyYTo3MTphNTpkYzoxOTowODpmMjpjNDoKKy0gICAgICAgIGE2OmJkOmJiOjI1 OmQ5OmNhOjg5OjAxOjBlOmU0OmNmOjFmOmMxOjhjOmM4OjI0OjE4OjM1OgorLSAgICAgICAgNTM6 NTk6N2I6YzA6NDM6YjQ6MzI6ZTY6OTg6YjI6YTY6ZWY6MTU6MDU6MGI6NDg6NWY6ZTE6CistICAg ICAgICBhMDowYzo5NzphOTphMTo3NzpkODozNToxODozMDpiYzphOTo4ZjpkMzpiNzo1NDpjNzpm MToKKy0gICAgICAgIGE5OjllOjVkOmU2OjE5OmJmOmY2OjNjOjViOjJiOmQ4OmU0OjNlOjYyOjE4 Ojg4OjhiOmQzOgorLSAgICAgICAgMjQ6ZTE6NDA6OWI6MGM6ZTY6Mjk6MTY6NjI6YWI6ZWE6MDU6 MjQ6NzA6MzY6YWE6NTU6OTM6CistICAgICAgICBlZjowMjo4MToxYjoyMzoxMDphMjowNDplYjo1 Njo5NTo3NTpmYzpmODo5NDpiMTo1ZDo0MjoKKy0gICAgICAgIGM1OjNmOjM2OjQ0Ojg1OjVkOjNh OjJlOjkwOjQ2OjhhOmEyOmI5OjZmOjg3OmFlOjBjOjE1OgorLSAgICAgICAgNDA6MTk6MzE6OTA6 ZmM6M2I6MjU6YmI6YWU6ZjE6NjY6MTM6MGQ6ODU6OTA6ZDk6NDk6MzQ6CistICAgICAgICA4Zjpm Mjo1ZDpmOTo3YTpkYjo0ZDo1ZDoyNzpmNjo3Njo5ZDozNTo4YzowNjphNjo0YzphMzoKKy0gICAg ICAgIGIxOmIyOmI2OjZmOjFkOmQ3OmEzOjAwOmZkOjcyOmViOjllOmVhOjQ0OmExOmFmOjIxOjM0 OgorLSAgICAgICAgN2Q6Yzc6NDI6ZTI6NDk6OTE6MTk6OGI6YzA6YWQ6YmE6ODI6ODA6YTg6NzE6 NzA6ZjQ6MzU6CistICAgICAgICAzMTo5MTo2Mzo4NDoyMDo5NTplOTo2MDphZjo2NDo4YjpjYzpm ZjozZDo4YTo3Njo3NDozZDoKKy0gICAgICAgIGM4OjU1OjZkOmU0OjhlOmMzOjJiOjFjOmU4OjQy OjE4OmFlOjlmOmU2OjZiOjljOjM0OjA2OgorLSAgICAgICAgZWM6NmE6ZjI6YzMKKyAtLS0tLUJF R0lOIENFUlRJRklDQVRFLS0tLS0KKy1NSUlFRXpDQ0F2dWdBd0lCQWdJQkFEQU5CZ2txaGtpRzl3 MEJBUVVGQURDQm5ERUxNQWtHQTFVRUJoTUNUazh4CistRFRBTEJnTlZCQWdUQkU5emJHOHhFREFP QmdOVkJBY1RCMDU1WkdGc1pXNHhGakFVQmdOVkJBb1REVlJ5YjJ4cworLWRHVmphQ0JCVTBFeEZE QVNCZ05WQkFzVEMwUmxkbVZzYjNCdFpXNTBNUmN3RlFZRFZRUURFdzVtYkhWclpTNTAKKy1jbTlz YkM1dWJ6RWxNQ01HQ1NxR1NJYjNEUUVKQVJZV1lXaGhibk56Wlc1QWRISnZiR3gwWldOb0xtTnZi VEFlCistRncwd056RXlNRFF3TVRFd016SmFGdzB6TlRBME1qRXdNVEV3TXpKYU1HTXhDekFKQmdO VkJBWVRBazVQTVEwdworLUN3WURWUVFJRXdSUGMyeHZNUll3RkFZRFZRUUtFdzFVY205c2JIUmxZ MmdnUVZOQk1SUXdFZ1lEVlFRTEV3dEUKKy1aWFpsYkc5d2JXVnVkREVYTUJVR0ExVUVBeE1PWm14 MWEyVXVkSEp2Ykd3dWJtOHdnWjh3RFFZSktvWklodmNOCistQVFFQkJRQURnWTBBTUlHSkFvR0JB S2ZJb0VyRUdRVWJacm95NHRMeEhHOFhndVE1TGdGUmtOc0VORElSSWNJTgorLWIxbllVNUJVUDRP UHFkT3oxZTRhbTRDdXd5WEpYcVd2UzJBRnFxRFJrUUVmeWdTRDQxZ2NtVEpGaEhCeVdBT1kKKy1T bU9MUWZVSVNkS1JBbUJyNUdUKzNhQ3FkQWpwTkV5Ulh4STlOMDFVTEsxL1c1aGdOZ0tNTy9aRjh5 ZHFtNVNkCistQWdNQkFBR2pnZ0VhTUlJQkZqQUpCZ05WSFJNRUFqQUFNQ3dHQ1dDR1NBR0crRUlC RFFRZkZoMVBjR1Z1VTFOTQorLUlFZGxibVZ5WVhSbFpDQkRaWEowYVdacFkyRjBaVEFkQmdOVkhR NEVGZ1FVSVlVRVBTTUJadVgzbnhxRUpJcXYKKy1Dbm4wNWF3d2dic0dBMVVkSXdTQnN6Q0JzS0dC b3FTQm56Q0JuREVMTUFrR0ExVUVCaE1DVGs4eERUQUxCZ05WCistQkFnVEJFOXpiRzh4RURBT0Jn TlZCQWNUQjA1NVpHRnNaVzR4RmpBVUJnTlZCQW9URFZSeWIyeHNkR1ZqYUNCQgorLVUwRXhGREFT QmdOVkJBc1RDMFJsZG1Wc2IzQnRaVzUwTVJjd0ZRWURWUVFERXc1bWJIVnJaUzUwY205c2JDNXUK Ky1iekVsTUNNR0NTcUdTSWIzRFFFSkFSWVdZV2hoYm5OelpXNUFkSEp2Ykd4MFpXTm9MbU52YllJ SkFJNm90T2lSCistdDFRdU1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQnRWMS9SQlVQd1lnWHNL bkdsM0JrSThzU212YnNsMmNxSgorLUFRN2t6eC9Cak1na0dEVlRXWHZBUTdReTVwaXlwdThWQlF0 SVgrR2dESmVwb1hmWU5SZ3d2S21QMDdkVXgvR3AKKy1ubDNtR2IvMlBGc3IyT1ErWWhpSWk5TWs0 VUNiRE9ZcEZtS3I2Z1VrY0RhcVZaUHZBb0ViSXhDaUJPdFdsWFg4CistK0pTeFhVTEZQelpFaFYw NkxwQkdpcUs1YjRldURCVkFHVEdRL0RzbHU2N3haaE1OaFpEWlNUU1A4bDM1ZXR0TgorLVhTZjJk cDAxakFhbVRLT3hzclp2SGRlakFQMXk2NTdxUktHdklUUjl4MExpU1pFWmk4Q3R1b0tBcUhGdzlE VXgKKy1rV09FSUpYcFlLOWtpOHovUFlwMmREM0lWVzNranNNckhPaENHSzZmNW11Y05BYnNhdkxE CisrTUlJRjZ6Q0NBOU9nQXdJQkFnSVVmbzlhbUp0SkdXcVdFNmYrU2tBTzg1emtHcjR3RFFZSktv WklodmNOQVFFTAorK0JRQXdnWU14Q3pBSkJnTlZCQVlUQWs1UE1RMHdDd1lEVlFRSURBUlBjMnh2 TVEwd0N3WURWUVFIREFSUGMyeHYKKytNUmN3RlFZRFZRUUtEQTVVYUdVZ1VYUWdRMjl0Y0dGdWVU RU1NQW9HQTFVRUN3d0RVaVpFTVJJd0VBWURWUVFECisrREFsSU1pQlVaWE4wWlhJeEd6QVpCZ2tx aGtpRzl3MEJDUUVXREcxcGJtbHRhVUJ4ZEM1cGJ6QWdGdzB5TURFdworK01qWXhNakF4TXpGYUdB OHlNVEl3TVRBd01qRXlNREV6TVZvd2dZTXhDekFKQmdOVkJBWVRBazVQTVEwd0N3WUQKKytWUVFJ REFSUGMyeHZNUTB3Q3dZRFZRUUhEQVJQYzJ4dk1SY3dGUVlEVlFRS0RBNVVhR1VnVVhRZ1EyOXRj R0Z1CisrZVRFTU1Bb0dBMVVFQ3d3RFVpWkVNUkl3RUFZRFZRUUREQWxJTWlCVVpYTjBaWEl4R3pB WkJna3Foa2lHOXcwQgorK0NRRVdERzFwYm1sdGFVQnhkQzVwYnpDQ0FpSXdEUVlKS29aSWh2Y05B UUVCQlFBRGdnSVBBRENDQWdvQ2dnSUIKKytBT2lVcDUrRTRibG91S0g3cStyVk5SOE5vWVgyWGtC VytxK3JweTF6dTVzc1JTemJxeEFqRHg5ZGtodDdRbG5mCisrVmxEVDAwSnZwT1dkZXVQb241OTE1 ZWRRUnNZNFVubDZtS0gyOXJhM090VWExL3lDSlhzR1ZKVEtDajdrNEJ4YgorKzVtWnpiL2ZUbFpu dE1MZFRJQk1mVWJ3NjJGS2lyMVdqS0ljSjlmQ29HOEphR2VLVk80Umg1cDBlemQ0VVVVSWQKKyty MUJYbDVOcWRxeTJ2VE1zRURuak9zRDNlZ2t2OEkyU0tONE82bi9DM3dXWXBNT1dZWmtHb1ppS3o3 ckpzL2kvCisrZXo3YnNWN0psd2R6VGxocEp6a2NPU1ZGQlA2SmxFT3hUTk54WjF3dEt5N1B0Wkdt c1NTQVRxMmU2K2J3MzhBZQorK09wMFhuenpxY0dqdEREb2ZCbVQ3T0Z6WldqUzlWWlM2K0RPT2Uy UUhXbGUxbkNIY0h5SDRrdTZJUmxzcjl4a1IKKytOQUlsT2ZudkhIeHFKVWVub2VhWjRvUURqQ0JL UzFLWHlnSk8vdEw3QkxUUVZuL3hLMUVtUHZLTm5qeldrNHRSCisrUG5pYlVoaHM1NjM1cXBPVS9Z UHFGQmgxSmpWcnVaYnNXY0RBaFJjZXcwdXhPTlhPYTlFKzRsdHRROXlTWWExQQorK0x2V3FKdUFY N2d1MkJzQk1MeXFmbTgxMVluQTdDSUZNeU8rSGxxbWtMRmZ2NUwveElSQVhSN2wyNllHTzBWd1gK KytDR2pNZno0TlZQTU1rZTRuQjdxYTlOa3BYUUJRS01tczNRemQ1SlcwSHk5UnVqNU84R1BjRlpt VjB0d2pkMXVKCisrUEQvY0Fqa1dMYVhqZE5zSjE2UVdjMm5naFFSUzZIWXFLUlg2aitDWE94dXBB Z01CQUFHalV6QlJNQjBHQTFVZAorK0RnUVdCQlJTQ09VNThqOU5KWmtNYW10NjIzcXlDcmhOM1RB ZkJnTlZIU01FR0RBV2dCUlNDT1U1OGo5Tkpaa00KKythbXQ2MjNxeUNyaE4zVEFQQmdOVkhSTUJB ZjhFQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUNBUUNxCisrcTRqeHNXZU5EdjVOcTE0 aEp0RjlIQitaTDY0emNadFJqSlAxWWdOczBRcHBLSUNtalBPTDJuSU1HbUkvaktycworKzBlR0FM LzlYWE5WSFB4bTFPUE9uY3ZpbU1NbVU2ZW1aZnBNZEV0VGZLUDQzK1BnOUhnS1JqTG9RcDQwNnZH ZVEKKys4a2kvbWJCaHJJdFZQZ0VtM3R1MkFGQTAyWFRZaStZeENJOWtSWkxHa00zRmJndE91VExQ bDBaOXkra2lQYzlGCisrdUNTQzAzYW5CRXF2K3ZEU0k4K3dPRHltUS9JSjNKeXoxbHhJUkRmcDRx QWVrbXkwalUyYzkxVk9ISEVtT21xcQorK2txeWdHRlJkd2JlOTltOXlQNjNyNnEwYjVLM1gyVW5K NmJuczBobVR3VGhZd3BWUFhMVThqZGFUZGRiTXVrTjIKKysvRWY5NlRzdzhuV09FT1BNeVNIT1RJ UGd3eVpScDI2YjBrQTlFbWhMd09QNDAxU3hYVlFDbVNSbXR3TmFnbXRnCisrakpLbVpvWUJOKy8v RDQ1aWJLOHo2UTBvT205UCtXaGYvdVVYZWhjUnhCeHlWM3h6N2swd0tHUWJIai9kZHdjeQorK0lV b0lONGxyQWxpYitsSzE3MGtUS04zNTJQRG1ycG8yZ21JelBFc2Z1cktBSU1TZWxEbDZIK2tpaDE2 QnRaOHkKKytOejZmaDlTb3FyZzNPU0F3YXJlOHB4VjdrNTFjckJNb1BMTjc4S29SVjhNRkNLNEs3 RmRkcTRyUklTcTZoaVhxCisrcjFuc2pvRVB1S005aHVwcm1aVlplOXQ1WWNEYTJJK3diM0lpRTN1 d3BaYkFkYUxEeVE1bjZGL3Fwc2lJa1pYbgorK2d0Y0Y3b3FwRzVvWXJ3Q2NaNTN5L2V6VWdVZzdQ bFN6Mlh3QUd2UXRnZz09CisgLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorZGlmZiAtLWdpdCBh L3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5 IGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5r ZXkKK2luZGV4IDlkMTY2NGQ2MDkuLjMzN2NlNTQxYTYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVz dHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleQorKysrIGIvcXRi YXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5rZXkKK0BA IC0xLDE1ICsxLDUyIEBACistLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQorLU1JSUNY QUlCQUFLQmdRQ255S0JLeEJrRkcyYTZNdUxTOFJ4dkY0TGtPUzRCVVpEYkJEUXlFU0hDRFc5WjJG T1EKKy1WRCtEajZuVHM5WHVHcHVBcnNNbHlWNmxyMHRnQmFxZzBaRUJIOG9FZytOWUhKa3lSWVJ3 Y2xnRG1FcGppMEgxCistQ0VuU2tRSmdhK1JrL3QyZ3FuUUk2VFJNa1Y4U1BUZE5WQ3l0ZjF1WVlE WUNqRHYyUmZNbmFwdVVuUUlEQVFBQgorLUFvR0FORnpMa2FuVGVTR05GTTB1dHRCaXBGVDlGNGEw MGRxSHo2Sm5PN3pYQVQyNkk1cjhzVTFwcVFCYjZ1THoKKy0vK1F6NVp3azhSVUFRY3NNUmdKZXR1 UFFVYjBKWmpGNkR1djI0aE5henFYQkN1N0FaelVlbmphZndtS0MvOHJpCistS3BYM2ZUd3F6Znpp Ly9GS0dnYlhRODB5eWtTU2xpREwza24vZHJBVHhzTENnUUVDUVFEWGhFRldMSjB2VloxcworLTFF a2YrM05JVEUrRFIxNlgrTFE0VzZ2eUVIQWpUYmFOV3RjVEtkQVdMQTJsNk40V0FBUFlTaTZhd20r ek14eDQKKy1Wb21WVHNqZEFrRUF4MHorZTduYXRMZUZjcnJxOHBiVSt3YTZTQVAxVmZoUVdLaXR4 TDFlN3UvUU85ME5DcHhFCistb1FZS3pNa21tcE9PRmpRd0VNQXkxZHZGTWJtNExIbGV3UUpBQy9r c0RCYVVjUUhIcWprdEN0clViOHJWakF5VworLUE4bHNjY2tlQjJmRVl5RzVKNmRKVmFZNENsTk9P czV5TURTMkFmazFGNkgveEt2dFEvNUN6SW5BL1FKQVREdWIKKy1LK0JQVThqTzlxK2dwdUlpM1ZJ WmR1cHNzVkdtQ2dPYlZDSExha0c0dU8wNHk5SXlQaFY5bEE5dEFMdG9JZjRjCistVkl2djVmV0dY QnJaNDhrWkFRSkJBSm1WQ2R6UXhkOUxaSTV2eGlqVUNqNUVJNGUreDVEUnFWVXZ5UDhLQ1pyQwor LUFpTnlvRFA4NVQraEJaYVNYSzNhWUdwVndlbHlqM2J2bzFHclROd05XTHc9CistLS0tLS1FTkQg UlNBIFBSSVZBVEUgS0VZLS0tLS0KKystLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0KKytNSUlK UWdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTd3dnZ2tvQWdFQUFvSUNBUURvbEtlZmhPRzVh TGloCisrKzZ2cTFUVWZEYUdGOWw1QVZ2cXZxNmN0Yzd1YkxFVXMyNnNRSXc4ZlhaSWJlMEpaMzFa UTA5TkNiNlRsblhyagorKzZKK2ZkZVhuVUViR09GSjVlcGloOXZhMnR6clZHdGY4Z2lWN0JsU1V5 Z28rNU9BY1crWm1jMi8zMDVXWjdUQzMKKytVeUFUSDFHOE90aFNvcTlWb3lpSENmWHdxQnZDV2hu aWxUdUVZZWFkSHMzZUZGRkNIYTlRVjVlVGFuYXN0cjB6CisrTEJBNTR6ckE5M29KTC9DTmtpamVE dXAvd3Q4Rm1LVERsbUdaQnFHWWlzKzZ5YlA0djNzKzI3RmV5WmNIYzA1WQorK2FTYzVIRGtsUlFU K2laUkRzVXpUY1dkY0xTc3V6N1dScHJFa2dFNnRudXZtOE4vQUhqcWRGNTg4Nm5CbzdRdzYKKytI d1prK3poYzJWbzB2VldVdXZnempudGtCMXBYdFp3aDNCOGgrSkx1aUVaYksvY1pFVFFDSlRuNTd4 eDhhaVZICisrcDZIbW1lS0VBNHdnU2t0U2w4b0NUdjdTK3dTMDBGWi84U3RSSmo3eWpaNDgxcE9M VVQ1NG0xSVliT2V0K2FxVAorK2xQMkQ2aFFZZFNZMWE3bVc3Rm5Bd0lVWEhzTkxzVGpWem12UlB1 SmJiVVBja21HdFFDNzFxaWJnRis0THRnYkEKKytUQzhxbjV2TmRXSndPd2lCVE1qdmg1YXBwQ3hY NytTLzhTRVFGMGU1ZHVtQmp0RmNGd2hvekg4K0RWVHpESkh1CisrSndlNm12VFpLVjBBVUNqSnJO ME0zZVNWdEI4dlVibytUdkJqM0JXWmxkTGNJM2RiaVR3LzNBSTVGaTJsNDNUYgorK0NkZWtGbk5w NElVRVV1aDJLaWtWK28vZ2x6c2JxUUlEQVFBQkFvSUNBRncxcTZ0cjVJNDh2WTdERityWHN1TG4K Kys1WlVXRTFJUTZmekI0bHI3Mm5Kdi85RUVHbk1nWXp0OVBwTVVzRDZ2ZENwQmdTMkMwKzZSSEFy RnpKdE5BK1JNCisraUhMSUc3Szc3MDJ2ZXlyL3hCeC9Nd2lTbE1lTXYvWHBrRnhWSTZFNnNrTUdH MnMzQU1YeEt2SlR5NUNwUngrSQorK2VRRnlMRytZYTFYMmxnSmVzL3ErL0NwQUhrT2pDT3BjTHlT UUM1Tlo3NHE3MzRWN25TZG1uK1pzM3RZRWgrTy8KKytlaXV3VFAvajViMzhUZTV2VlRxRHhUY2lK UG1sam1YTEN3YTBOMTAwbFdsYmNwdnc4cWJxaVRJMkptM1hDYlVFCisrQXpIalc5dm1yRjNjUlMx Zlh4S0ZHU2h3M1NScWxrYnhqZmVXb2k4cURQVUJTNG04TE9yOHFHOVdvNU5mb24wegorK3pMUDRi Y2kzekhEdlZjYWFacnJzVUJzL3laYmcrRGdrYTFEbVg3ZWttZWNjcjJ5VGRLREZnUHVwWVV5eFZi VGwKKythOVpMSnlzakZEN3JnQnYxWmNsSG9uTHA2VmJtK1pvVHF2dGVvNGlrQXk2TDlSdEJXSjIz WEVLMzRQa1AvK2M1CisrMnZXWmFPcm5qU2VCSGJGY2U4Y2RKU3hxV3BQK2VTQ0k1STlYYkRyWUZJ c1EvZ3FLZ3R6REt5MmloSjJZOFNUTAorK3lPNGh5RlBGanhjK0dnNC9QMlBwbVQ1Q1kydHk0NE0w QldzK0pHVzk2Q0pQcnJwbGYybG1RVVFKajVMWlk2NlgKKytaLzRDOUw3Wll0S1orYnM1U3ZVNDZ5 V3VnQXZRWlgyMlhtOXhMWFd5VlhSZHgzYmorM00zZkRuRjlkaS96ZGJoCisrQ2dMeDdvV1BOclhj N0ZDYWpubjlBb0lCQVFENUZNWXdScHc5TldUOVdEeFF3eCtjU0k0SWNiZDg4QnlUVzYzUworK0x6 ZVJ3WkEwSjkvU2Z3TythQlJ1cHpjOUdrR1hDaVpjR013M0FHc0N0aWc4eUZsdzhFNUtuek43S2xm dERNbk0KKys5TlV4eHpsUjhWd0t5TG5aZkc3c0RUbDA1N1psVXVqbnFobXQvRjhGN2RJeTdGVk8x ZEUvOG5uZ0ErRllUQ09HCisrVVpkR2p3eUJEbERNMEpKZFVXR1kzeHNsdXRjcENETjVtelNUS2p5 OWRyTXZJbUFzaFJhd3hSRjZXQnBuN3ZyMgorK25DNnZjaXFmeDFNengxdnlrMEptMGlsYXlkRGRM TUFEanQvaUw0TmtyMEJFczRrK1V6UWlLRHdwOGd1N2FiUTEKKytlQmZ4ZDlJYXI0aHRRYTJJMUV3 bDZQMDFHL3ErWll3Z0hoSjlSVm40QXhRWGVmSUxBb0lCQVFEdkNvdU9SZFFYCisrQzh3c3lwN013 WGxGLzNOUWVOTjUvK0IybWhieHJCT2Y3UG1NQ1hMbmtSV2Nqd0p0enlwV0ZxSjBzcWFpLzIrMAor K2JxYk1jalg1bWFUOHN0VDJzaGwzelhlL0VqdDJlM1RCWXBjMXR5dXNlczhLYjVCTVU4aHU2dFRk M0cyQ01YcEQKKytkVDZEVmVtSlpDVHR3ajlhQk5JeFNpenZsZ01vbEpuQ3B6aFBubGZIU0k2RStn M20vTFRUbzNId2JqTVN3L1VxCisraXJnak9wSTJ3U0JCNkxaUFNnanZmY1lQUnlXVWsxNkw0QTV1 U1gwY0FEbm92REZMYTUvaDB3SnZOL09vQ1NRZworK3JMQ1hHNUUxOEV5TDVXYzU4QkNZMVp2eG1q RzNsUXRnUHhZdTJKd2MzNlIveS9KS2x4VzVzdUVSNVpOcGJiRDQKKyt1T3lUdDJWeE1RMmJBb0lC QVFDNStNelJGcWRvL0FqZkw1WTVKcmJmVlR6WENURGEwOXhDR2QxNlpVNjBRVFdOCisrKzRlZC9y K28xc1VLcVVjUkZCMk16RU0vMkRRQmpRcFpCL0NiRVd2V2ExWEpXWHh5cFhib3d2ZVpVK1FxT25t TgorK3VRdmo4V0x5QTNvK1BORjllOVF2YXV3Q3JIcG44VnB4YnRQV3VhWW9LblVGcmVGWlpReEho UEd4UkJJUzJKT1oKKytlRHJUOFphV25rQ2toMUFacDVzbVE3MUxPcHJTbG1Lcmc0amQxR2pDVk14 UVI1TjVLWGJ0eXYwT1RDWi9VRnFLCisrMmFSQnNNUHlKZ2thQkNoa1pQTFJjS3djKy93bFFSeDFm SFFiMTRETlRBcE14b1hGTzdlT3dxbU9rcEF0OWl5bAorK1NCSXdvUzBVVUk1YWI4OCtiQm1YTnZL Y3VGZE51UTRub3dUSlVuOXBBb0lCQURNTmtJTEJYU3ZTNURlSXl1TzIKKytTcDF0a29aVVYrNU5m UFkzc01ESzNLSWliYVcvK3QrRU9CWm80TDd0S1FDYjh2UnpsMjFtbXNmeGZnUmFQRGJqCisrM3Iz dHY5ZzBiNFlMeHhCeTUycEZzY2ovc29YUmFpMTdTUzdVWndBMlFLK1h6Z0RZYkRjTE5DNm1Jc1RR RzRHeAorK2RzV2szL3pzM0t1VVNRYWVobXdyV0srZklVSzM4YzFwTEs4djdMb3hyTGtxeGxId1ow NFJ0aEh3OEtUdGhIN1gKKytQbmwxSjBMRjhDU2VPeWZXTFN1UFVma1QwR0V6cHRuTkhwRWJhSGZR TTZSNmVhR2hWSlBGNkFabWU0eTZZWWdnCisrbTJpaGhTdDFuMFhWRVdwSFlXanhGeTNtSzJtejc1 dW5GQzRMTStORVkycDJ6dVVRb0N3N05qblkzUVlyZkNueAorK3JSTUNnZ0VBWGVYc01TTEZqanl1 b0w3aUtiQXhvNTJIRC9QMGZCb3k1OEx5UmN3Zk5WcjBsdllhbjRwWUV4K28KKytLaWpJaDlLMTZQ cVhaWEtNQTl2MDAzQit1bG1GOGJKN1NkZENaNU5Hdm5GaFVURGU0RGRUS2dwMlJ1d1EzQnNjCisr M3NrUElEYmhWRVR5T0xDdHlzMzRVU0hycThVLzBEbEdZM2VMUmZ4dzlHbmJLeFNCR2EvS0V1L3FR TFBOVW81MAorKzd4SFpEZzdHS2VDM2txTkplcUtNOXJrcDBWeklHa0VuYUQ5MTI3TGVORG1FUkRm ZnR4SnpGb0MvVEh2VUJMZlUKKys2U3VzMlpZd1JFOFZGdktDMzBRNDV0L2M1NFgzSXVoWXZBdWlD dVRteWZFNHJ1eXp5T3dLemhVa2VlTHExQVBYCisrZzB2ZUZieWZ6bEowcThxekQvaWZmcXFJYTJa U21RPT0KKystLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2liaWxpdHlsaW51 eC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9vdGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9x YWNjZXNzaWJpbGl0eWxpbnV4LmNwcAoraW5kZXggN2JhMzcxNWUxMy4uNzUyYWExMjJmNiAxMDA2 NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmlsaXR5bGludXgvdHN0 X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9vdGhlci9x YWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcAorQEAgLTE3OSw2 ICsxNzksNyBAQCB2b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojppbml0VGVzdENhc2UoKQor ICAgICBRVkVSSUZZKCFhZGRyZXNzLmlzRW1wdHkoKSk7CisgCisgICAgIG1fd2luZG93ID0gbmV3 IEFjY2Vzc2libGVUZXN0V2luZG93KCk7CisrICAgIG1fd2luZG93LT5zZXRPYmplY3ROYW1lKCJt YWluV2luZG93Il9MMSk7CisgICAgIG1fd2luZG93LT5zaG93KCk7CisgCisgICAgIFFWRVJJRlko UVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZChtX3dpbmRvdykpOworQEAgLTIzNiw4ICsyMzcs MTEgQEAgYm9vbCBoYXNTdGF0ZShRREJ1c0ludGVyZmFjZSAqaW50ZXJmYWNlLCBBdHNwaVN0YXRl VHlwZSBzdGF0ZSkKKyB2b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojp0ZXN0TGFiZWwoKQor IHsKKyAgICAgUUxhYmVsICpsID0gbmV3IFFMYWJlbChtX3dpbmRvdyk7CisrICAgIGwtPnNldE9i amVjdE5hbWUoInRoZU9iamVjdE5hbWUiX0wxKTsKKyAgICAgbC0+c2V0VGV4dCgiSGVsbG8gQTEx eSIpOworICAgICBtX3dpbmRvdy0+YWRkV2lkZ2V0KGwpOworKyAgICBhdXRvIGExMXlFbXB0eSA9 IG5ldyBRTGFiZWwobV93aW5kb3cpOworKyAgICBtX3dpbmRvdy0+YWRkV2lkZ2V0KGwpOworIAor ICAgICAvLyBBcHBsaWNhdGlvbgorICAgICBRQ09NUEFSRShnZXRQYXJlbnQobWFpbldpbmRvdyks IFFMYXRpbjFTdHJpbmcoQVRTUElfREJVU19QQVRIX1JPT1QpKTsKK0BAIC0yNDksNiArMjUzLDgg QEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51eDo6dGVzdExhYmVsKCkKKyAgICAgUUNPTVBB UkUoZ2V0Q2hpbGRyZW4obGFiZWxJbnRlcmZhY2UpLmNvdW50KCksIDApOworICAgICBRQ09NUEFS RShsYWJlbEludGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJHZXRSb2xlTmFtZSIpLmFyZ3Vt ZW50cygpLmZpcnN0KCkudG9TdHJpbmcoKSwgUUxhdGluMVN0cmluZygibGFiZWwiKSk7CisgICAg IFFDT01QQVJFKGxhYmVsSW50ZXJmYWNlLT5jYWxsKFFEQnVzOjpCbG9jaywgIkdldFJvbGUiKS5h cmd1bWVudHMoKS5maXJzdCgpLnRvVUludCgpLCAyOXUpOworKyAgICBRQ09NUEFSRShsYWJlbElu dGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJHZXRBY2Nlc3NpYmxlSWQiKS5hcmd1bWVudHMo KS5maXJzdCgpLnRvU3RyaW5nKCksCisrICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIm1haW5X aW5kb3cudGhlT2JqZWN0TmFtZSIpKTsKKyAgICAgUUNPTVBBUkUoZ2V0UGFyZW50KGxhYmVsSW50 ZXJmYWNlKSwgbWFpbldpbmRvdy0+cGF0aCgpKTsKKyAgICAgUVZFUklGWSghaGFzU3RhdGUobGFi ZWxJbnRlcmZhY2UsIEFUU1BJX1NUQVRFX0VESVRBQkxFKSk7CisgICAgIFFWRVJJRlkoaGFzU3Rh dGUobGFiZWxJbnRlcmZhY2UsIEFUU1BJX1NUQVRFX1JFQURfT05MWSkpOworQEAgLTI1Niw3ICsy NjIsMTIgQEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51eDo6dGVzdExhYmVsKCkKKyAgICAg bC0+c2V0VGV4dCgiTmV3IHRleHQiKTsKKyAgICAgUUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPnBy b3BlcnR5KCJOYW1lIikudG9TdHJpbmcoKSwgbC0+dGV4dCgpKTsKKyAKKysgICAgYXV0byAqYTEx eUVtcHR5SW50ZXJmYWNlID0gZ2V0SW50ZXJmYWNlKGNoaWxkcmVuLmF0KDEpLCAib3JnLmExMXku YXRzcGkuQWNjZXNzaWJsZSIpOworKyAgICBRQ09NUEFSRShhMTF5RW1wdHlJbnRlcmZhY2UtPmNh bGwoUURCdXM6OkJsb2NrLCAiR2V0QWNjZXNzaWJsZUlkIikuYXJndW1lbnRzKCkuZmlyc3QoKS50 b1N0cmluZygpLAorKyAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJtYWluV2luZG93LlFMYWJl bCIpKTsKKysKKyAgICAgbV93aW5kb3ctPmNsZWFyQ2hpbGRyZW4oKTsKKysgICAgZGVsZXRlIGEx MXlFbXB0eUludGVyZmFjZTsKKyAgICAgZGVsZXRlIGxhYmVsSW50ZXJmYWNlOworIH0KKyAKK2Rp ZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9zcWwva2VybmVsL3FzcWxxdWVyeS90c3RfcXNx bHF1ZXJ5LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5L3RzdF9x c3FscXVlcnkuY3BwCitpbmRleCA3NmRmNjFjODkyLi42ZDZkNjViNzkxIDEwMDY0NAorLS0tIGEv cXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAK KysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5L3RzdF9xc3FscXVl cnkuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqCistKiog Q29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMp IDIwMjIgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0Lmlv L2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRl IG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTY4LDYgKzY4LDggQEAgcHJpdmF0ZSBzbG90czoKKyAg ICAgdm9pZCBxdWVyeV9leGVjKCk7CisgICAgIHZvaWQgZXhlY0Vycm9yUmVjb3ZlcnlfZGF0YSgp IHsgZ2VuZXJpY19kYXRhKCk7IH0KKyAgICAgdm9pZCBleGVjRXJyb3JSZWNvdmVyeSgpOworKyAg ICB2b2lkIHByZW1hdHVyZUV4ZWNfZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0KKysgICAgdm9p ZCBwcmVtYXR1cmVFeGVjKCk7CisgICAgIHZvaWQgZmlyc3RfZGF0YSgpIHsgZ2VuZXJpY19kYXRh KCk7IH0KKyAgICAgdm9pZCBmaXJzdCgpOworICAgICB2b2lkIG5leHRfZGF0YSgpIHsgZ2VuZXJp Y19kYXRhKCk7IH0KK0BAIC0yNzcwLDYgKzI3NzIsMzUgQEAgdm9pZCB0c3RfUVNxbFF1ZXJ5Ojpl eGVjRXJyb3JSZWNvdmVyeSgpCisgICAgIFFWRVJJRllfU1FMKCBxLCBleGVjKCkgKTsKKyB9Cisg Cisrdm9pZCB0c3RfUVNxbFF1ZXJ5OjpwcmVtYXR1cmVFeGVjKCkKKyt7CisrICAgIFFGRVRDSChR U3RyaW5nLCBkYk5hbWUpOworKyAgICAvLyBXZSBvbmx5IHdhbnQgdGhlIGVuZ2luZSBuYW1lLCBm b3IgYWRkRGF0YWJhc2UoKToKKysgICAgaW50IGN1dCA9IGRiTmFtZS5pbmRleE9mKFFDaGFyKCdA JykpOworKyAgICBpZiAoY3V0IDwgMCkKKysgICAgICAgIFFTS0lQKCJGYWlsZWQgdG8gcGFyc2Ug ZGF0YWJhc2UgdHlwZSBvdXQgb2YgbmFtZSIpOworKyAgICBkYk5hbWUudHJ1bmNhdGUoY3V0KTsK KysgICAgY3V0ID0gZGJOYW1lLmluZGV4T2YoUUNoYXIoJ18nKSk7CisrICAgIGlmIChjdXQgPj0g MCkKKysgICAgICAgIGRiTmFtZSA9IGRiTmFtZS5taWQoY3V0ICsgMSk7CisrCisrICAgIGF1dG8g ZGIgPSBRU3FsRGF0YWJhc2U6OmFkZERhdGFiYXNlKGRiTmFtZSk7CisrICAgIFFTcWxRdWVyeSBx KGRiKTsKKysKKysgICAgUVRlc3Q6Omlnbm9yZU1lc3NhZ2UoUXRXYXJuaW5nTXNnLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAiUVNxbERhdGFiYXNlUHJpdmF0ZTo6cmVtb3ZlRGF0YWJhc2U6 IGNvbm5lY3Rpb24gIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAiJ3F0X3NxbF9kZWZhdWx0 X2Nvbm5lY3Rpb24nIGlzIHN0aWxsIGluIHVzZSwgYWxsICIKKysgICAgICAgICAgICAgICAgICAg ICAgICAgInF1ZXJpZXMgd2lsbCBjZWFzZSB0byB3b3JrLiIpOworKyAgICBRVGVzdDo6aWdub3Jl TWVzc2FnZShRdFdhcm5pbmdNc2csCisrICAgICAgICAgICAgICAgICAgICAgICAgICJRU3FsRGF0 YWJhc2VQcml2YXRlOjphZGREYXRhYmFzZTogZHVwbGljYXRlIGNvbm5lY3Rpb24gbmFtZSAiCisr ICAgICAgICAgICAgICAgICAgICAgICAgICIncXRfc3FsX2RlZmF1bHRfY29ubmVjdGlvbicsIG9s ZCBjb25uZWN0aW9uIHJlbW92ZWQuIik7CisrICAgIGF1dG8gb3RoZXJEYiA9IFFTcWxEYXRhYmFz ZTo6YWRkRGF0YWJhc2UoZGJOYW1lKTsKKysKKysgICAgUVRlc3Q6Omlnbm9yZU1lc3NhZ2UoUXRX YXJuaW5nTXNnLCAiUVNxbFF1ZXJ5OjpleGVjOiBjYWxsZWQgYmVmb3JlIGRyaXZlciBoYXMgYmVl biBzZXQgdXAiKTsKKysgICAgLy8gUVRCVUctMTAwMDM3OiBzaG91bGRuJ3QgY3Jhc2ggIQorKyAg ICBRVkVSSUZZKCFxLmV4ZWMoInNlbGVjdCBzdHVmZiBmcm9tIFRoZVZvaWQiKSk7CisrfQorKwor IHZvaWQgdHN0X1FTcWxRdWVyeTo6bGFzdEluc2VydElkKCkKKyB7CisgICAgIFFGRVRDSCggUVN0 cmluZywgZGJOYW1lICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9x YWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAg Yi9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90c3Rf cWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAoraW5kZXggNGFhM2Y4ZDYwYi4uZDIwNTBhNjFh YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1v ZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0 aXRlbW1vZGVsdGVzdGVyLmNwcAorQEAgLTExNSw2ICsxMTUsMTAgQEAgdm9pZCB0c3RfUUFic3Ry YWN0SXRlbU1vZGVsVGVzdGVyOjpzdGFuZGFyZEl0ZW1Nb2RlbFplcm9Db2x1bW5zKCkKKyAgICAg Ly8gUVRCVUctOTI4ODYKKyAgICAgbW9kZWwuaW5zZXJ0Um93cygwLCA1KTsKKyAgICAgbW9kZWwu cmVtb3ZlUm93cygxLCAyKTsKKysKKysgICAgY29uc3QgUU1vZGVsSW5kZXggcGFyZW50SW5kZXgg PSBtb2RlbC5pbmRleCgwLCAwKTsKKysgICAgbW9kZWwuaW5zZXJ0Um93cygwLCA1LCBwYXJlbnRJ bmRleCk7CisrICAgIG1vZGVsLnJlbW92ZVJvd3MoMSwgMiwgcGFyZW50SW5kZXgpOworIH0KKyAK KyB2b2lkIHRzdF9RQWJzdHJhY3RJdGVtTW9kZWxUZXN0ZXI6OnRlc3RJbnNlcnRUaHJvdWdoUHJv eHkoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2NzX2Jh c2VsaW5lX2luLmpzb24gYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvYWxsbW9jc19iYXNl bGluZV9pbi5qc29uCitpbmRleCAxMmE0YTIyYTE5Li5jZTUxOGU3OGZiIDEwMDY0NAorLS0tIGEv cXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4uanNvbgorKysr IGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4uanNvbgor QEAgLTY2OCw1MCArNjY4LDYgQEAKKyAgICAgICAgICJpbnB1dEZpbGUiOiAidGFzazE5MjU1Mi5o IiwKKyAgICAgICAgICJvdXRwdXRSZXZpc2lvbiI6IDY3CisgICAgIH0sCistICAgIHsKKy0gICAg ICAgICJjbGFzc2VzIjogWworLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgImNsYXNz TmFtZSI6ICJJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uIiwKKy0gICAgICAgICAgICAg ICAgIm9iamVjdCI6IHRydWUsCistICAgICAgICAgICAgICAgICJxdWFsaWZpZWRDbGFzc05hbWUi OiAiSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiIsCistICAgICAgICAgICAgICAgICJz bG90cyI6IFsKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAg ICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAi YSIsCistICAgICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAg ICAgICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAg ICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICJuYW1lIjogImIiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZv aWQiCistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAgICAgeworLSAg ICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAibmFtZSI6ICJjIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJu VHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAgICAg ICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAg ICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZCIsCistICAgICAgICAgICAgICAgICAgICAg ICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0sCistICAgICAg ICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJs aWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImUiLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAgICAgICAgICB9 CistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJzdXBlckNsYXNzZXMiOiBb CistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2Vz cyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlFPYmplY3Qi CistICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAg ICB9CistICAgICAgICBdLAorLSAgICAgICAgImlucHV0RmlsZSI6ICJ0YXNrMTg5OTk2LmgiLAor LSAgICAgICAgIm91dHB1dFJldmlzaW9uIjogNjcKKy0gICAgfSwKKyAgICAgeworICAgICAgICAg ImNsYXNzZXMiOiBbCisgICAgICAgICAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9h dXRvL3Rvb2xzL21vYy9tb2MucHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21vYy5w cm8KK2luZGV4IGMzMjRiM2E4Y2QuLjRhY2ViNzhkYzAgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVz dHMvYXV0by90b29scy9tb2MvbW9jLnBybworKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMv bW9jL21vYy5wcm8KK0BAIC0xNSw3ICsxNSw3IEBAIGNyb3NzX2NvbXBpbGU6IERFRklORVMgKz0g TU9DX0NST1NTX0NPTVBJTEVECisgSEVBREVSUyArPSB1c2luZy1uYW1lc3BhY2VzLmggbm8ta2V5 d29yZHMuaCB0YXNrODc4ODMuaCBjLWNvbW1lbnRzLmggYmFja3NsYXNoLW5ld2xpbmVzLmggb2xk c3R5bGUtY2FzdHMuaCBcCisgICAgICAgICAgICBzbG90cy13aXRoLXZvaWQtdGVtcGxhdGUuaCBx aW52b2thYmxlLmggbmFtZXNwYWNlZC1mbGFncy5oIHRyaWdyYXBocy5oIFwKKyAgICAgICAgICAg IGVzY2FwZXMtaW4tc3RyaW5nLWxpdGVyYWxzLmggY3N0eWxlLWVudW1zLmggcXByaXZhdGVzbG90 cy5oIGdhZGdldHdpdGhub2VudW1zLmggXAorLSAgICAgICAgICAgZGlyLWluLWluY2x1ZGUtcGF0 aC5oIHNpbmdsZV9mdW5jdGlvbl9rZXl3b3JkLmggdGFzazE5MjU1Mi5oIHRhc2sxODk5OTYuaCBc CisrICAgICAgICAgICBkaXItaW4taW5jbHVkZS1wYXRoLmggc2luZ2xlX2Z1bmN0aW9uX2tleXdv cmQuaCB0YXNrMTkyNTUyLmggXAorICAgICAgICAgICAgdGFzazIzNDkwOS5oIHRhc2syNDAzNjgu aCBwdXJlLXZpcnR1YWwtc2lnbmFscy5oIGN4eDExLWVudW1zLmggXAorICAgICAgICAgICAgY3h4 MTEtZmluYWwtY2xhc3Nlcy5oIFwKKyAgICAgICAgICAgIGN4eDExLWV4cGxpY2l0LW92ZXJyaWRl LWNvbnRyb2wuaCBcCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3Rh c2sxODk5OTYuaCBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90YXNrMTg5OTk2LmgKK2Rl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggZjk0YTA1MWIzYS4uMDAwMDAwMDAwMAorLS0t IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3Rhc2sxODk5OTYuaAorKysrIC9kZXYvbnVs bAorQEAgLTEsNDcgKzAsMCBAQAorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistKioKKy0qKiBDb3B5 cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoqIENvbnRhY3Q6IGh0dHBzOi8v d3d3LnF0LmlvL2xpY2Vuc2luZy8KKy0qKgorLSoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0 ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorLSoqCistKiogJFFUX0JFR0lOX0xJQ0VOU0U6 R1BMLUVYQ0VQVCQKKy0qKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKy0qKiBMaWNlbnNlZXMg aG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGlu CistKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHBy b3ZpZGVkIHdpdGggdGhlCistKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29y ZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCistKiogYSB3cml0dGVuIGFncmVlbWVu dCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKy0q KiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4g Rm9yIGZ1cnRoZXIKKy0qKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRw czovL3d3dy5xdC5pby9jb250YWN0LXVzLgorLSoqCistKiogR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgVXNhZ2UKKy0qKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKy0qKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp b24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKy0qKiBGb3VuZGF0aW9uIHdp dGggZXhjZXB0aW9ucyBhcyBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwzLUVYQ0VQ VAorLSoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2 aWV3IHRoZSBmb2xsb3dpbmcKKy0qKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCistKiogYmUgbWV0OiBodHRwczov L3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKy0qKgorLSoqICRRVF9FTkRfTElD RU5TRSQKKy0qKgorLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistLy8gaW5saW5lIGZ1bmN0aW9ucyBj YW4gaGF2ZSB0aHJvdyBkZWNsYXJhdGlvbnMKKy0KKy0jaWZuZGVmIFRBU0sxODk5OTZfSAorLSNk ZWZpbmUgVEFTSzE4OTk5Nl9ICistCistI2luY2x1ZGUgPFFPYmplY3Q+CistCistY2xhc3MgSW5s aW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiA6IHB1YmxpYyBRT2JqZWN0CisteworLSAgICBR X09CSkVDVAorLQorLXB1YmxpYyBzbG90czoKKy0gICAgdm9pZCBhKCkgdGhyb3coKSB7IH0KKy0g ICAgdm9pZCBiKCkgY29uc3QgdGhyb3coKSB7IH0KKy0gICAgdm9pZCBjKCkgdGhyb3coKTsKKy0g ICAgdm9pZCBkKCkgdGhyb3coaW50KSB7IH0KKy0gICAgdm9pZCBlKCkgY29uc3QgdGhyb3coaW50 LGRvdWJsZSkgeyB9CistfTsKKy0KKy0jZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMv YXV0by90b29scy9tb2MvdHN0X21vYy5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2Mv dHN0X21vYy5jcHAKK2luZGV4IGM3MTZhZWFkMjEuLjE1ZGQ5ZTQxZTUgMTAwNjQ0CistLS0gYS9x dGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0 cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9jLmNwcAorQEAgLTYzMSw3ICs2MzEsNiBAQCBwdWJsaWM6 CisgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBpbml0VGVzdENhc2UoKTsKKyAKKy0gICAgdm9p ZCBzbG90V2l0aEV4Y2VwdGlvbigpIHRocm93KE15U3RydWN0KTsKKyAgICAgdm9pZCBkb250U3Ry aXBOYW1lc3BhY2VzKCk7CisgICAgIHZvaWQgb2xkU3R5bGVDYXN0cygpOworICAgICB2b2lkIHdh cm5PbkV4dHJhU2lnbmFsU2xvdFF1YWxpZmlhY3Rpb24oKTsKK0BAIC02NzMsNyArNjcyLDYgQEAg cHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB0ZW1wbGF0ZUd0R3QoKTsKKyAgICAgdm9pZCBxcHJp dmF0ZXNsb3RzKCk7CisgICAgIHZvaWQgcXByaXZhdGVwcm9wZXJ0aWVzKCk7CistICAgIHZvaWQg aW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbigpOworICAgICB2b2lkIHdhcm5PblByb3Bl cnR5V2l0aG91dFJFQUQoKTsKKyAgICAgdm9pZCBjb25zdHJ1Y3RvcnMoKTsKKyAgICAgdm9pZCB0 eXBlbmFtZVdpdGhVbnNpZ25lZCgpOworQEAgLTc4NCwxMiArNzgyLDYgQEAgdm9pZCB0c3RfTW9j Ojppbml0VGVzdENhc2UoKQorICNlbmRpZgorIH0KKyAKKy12b2lkIHRzdF9Nb2M6OnNsb3RXaXRo RXhjZXB0aW9uKCkgdGhyb3coTXlTdHJ1Y3QpCisteworLSAgICAvLyBiZSBoYXBweQorLSAgICBR VkVSSUZZKHRydWUpOworLX0KKy0KKyB2b2lkIHRzdF9Nb2M6OmRvbnRTdHJpcE5hbWVzcGFjZXMo KQorIHsKKyAgICAgU2VuZGVyIHNlbmRlcjsKK0BAIC04MjQsNyArODE2LDcgQEAgdm9pZCB0c3Rf TW9jOjpvbGRTdHlsZUNhc3RzKCkKKyAKKyAgICAgUVN0cmluZ0xpc3QgYXJnczsKKyAgICAgYXJn cyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1Xb2xkLXN0eWxlLWNhc3QiIDw8ICItSSIg PDwgIi4iCistICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9k ZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgIi0iOworKyAgICAgICAgIDw8 ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIg PDwgIi1zdGQ9YysrMXoiIDw8ICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgYXJncyk7Cisg ICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NP dXQpOworQEAgLTg5NCw3ICs4ODYsNyBAQCB2b2lkIHRzdF9Nb2M6OmlucHV0RmlsZU5hbWVXaXRo RG90c0J1dE5vRXh0ZW5zaW9uKCkKKyAKKyAgICAgUVN0cmluZ0xpc3QgYXJnczsKKyAgICAgYXJn cyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1JIiA8PCAiLi4iCistICAgICAgICAgPDwg Ii1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8 PCAiLXN0ZD1jKysxMSIgPDwgIi0iOworKyAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0 aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICIt IjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgYXJncyk7CisgICAgIFFWRVJJRlkocHJvYy53YWl0 Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQpOworQEAgLTExNzQsNyArMTE2 Niw3IEBAIHZvaWQgdHN0X01vYzo6aWdub3JlT3B0aW9uQ2xhc2hlcygpCisgICAgIFFTdHJpbmdM aXN0IGdjY0FyZ3M7CisgICAgIGdjY0FyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysiIDw8ICIt SSIgPDwgIi4uIgorICAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLUkiIDw8 IGluY2x1ZGVEaXIgPDwgIi1vIiA8PCAiL2Rldi9udWxsIgorLSAgICAgICAgIDw8ICItZlBJQyIg PDwgIi1zdGQ9YysrMTEiIDw8ICAiLSI7CisrICAgICAgICAgPDwgIi1mUElDIiA8PCAiLXN0ZD1j KysxeiIgPDwgICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgZ2NjQXJncyk7CisgICAgIFFW RVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQpOwor QEAgLTE1OTMsMjEgKzE1ODUsNiBAQCB2b2lkIHRzdF9Nb2M6OnFwcml2YXRlcHJvcGVydGllcygp CisgCisgfQorIAorLSNpbmNsdWRlICJ0YXNrMTg5OTk2LmgiCistCistdm9pZCBJbmxpbmVTbG90 c1dpdGhUaHJvd0RlY2xhcmF0aW9uOjpjKCkgdGhyb3coKSB7fQorLQorLXZvaWQgdHN0X01vYzo6 aW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbigpCisteworLSAgICBJbmxpbmVTbG90c1dp dGhUaHJvd0RlY2xhcmF0aW9uIHRzdDsKKy0gICAgY29uc3QgUU1ldGFPYmplY3QgKm1vYmogPSB0 c3QubWV0YU9iamVjdCgpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJhKCkiKSAh PSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImIoKSIpICE9IC0xKTsKKy0g ICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiYygpIikgIT0gLTEpOworLSAgICBRVkVSSUZZ KG1vYmotPmluZGV4T2ZTbG90KCJkKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5k ZXhPZlNsb3QoImUoKSIpICE9IC0xKTsKKy19CistCisgdm9pZCB0c3RfTW9jOjp3YXJuT25Qcm9w ZXJ0eVdpdGhvdXRSRUFEKCkKKyB7CisgI2lmZGVmIE1PQ19DUk9TU19DT01QSUxFRAorQEAgLTE4 NjksNyArMTg0Niw3IEBAIHZvaWQgdHN0X01vYzo6bm90aWZ5RXJyb3IoKQorIAorICAgICBRU3Ry aW5nTGlzdCBhcmdzOworICAgICBhcmdzIDw8ICItYyIgPDwgIi14IiA8PCAiYysrIiA8PCAiLUki IDw8ICIuIgorLSAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIv ZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICItIjsKKysgICAgICAgICA8 PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMi IDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAgIHByb2Muc3RhcnQoImdjYyIsIGFyZ3MpOwor ICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7CisgICAgIHByb2Mud3JpdGUobW9j T3V0KTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9x aGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0 cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcAoraW5kZXggYzM1NWVl OTY2NS4uODhjMDlkZThlMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMv aXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVydmlldy5jcHAKKysrKyBiL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVydmlldy5j cHAKK0BAIC0yNTEsNiArMjUxLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB0ZXN0UmVz ZXRDYWNoZWRTaXplSGludCgpOworICAgICB2b2lkIHN0YXR1c1RpcHMoKTsKKyAgICAgdm9pZCB0 ZXN0UmVtb3ZpbmdDb2x1bW5zVmlhTGF5b3V0Q2hhbmdlZCgpOworKyAgICB2b2lkIHRlc3RNb2Rl bE1vdmluZ0NvbHVtbnMoKTsKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgc2V0dXBUZXN0RGF0 YShib29sIHVzZV9yZXNldF9tb2RlbCA9IGZhbHNlKTsKK0BAIC0zNjAsNiArMzYxLDEyIEBAIHB1 YmxpYzoKKyAgICAgICAgIGVuZFJlbW92ZUNvbHVtbnMoKTsKKyAgICAgfQorIAorKyAgICB2b2lk IG1vdmVDb2x1bW4oaW50IGZyb20sIGludCB0bykKKysgICAgeworKyAgICAgICAgYmVnaW5Nb3Zl Q29sdW1ucyhRTW9kZWxJbmRleCgpLCBmcm9tLCBmcm9tLCBRTW9kZWxJbmRleCgpLCB0byk7Cisr ICAgICAgICBlbmRNb3ZlQ29sdW1ucygpOworKyAgICB9CisrCisgICAgIHZvaWQgY2xlYW51cCgp CisgICAgIHsKKyAgICAgICAgIGVtaXQgbGF5b3V0QWJvdXRUb0JlQ2hhbmdlZCgpOworQEAgLTM2 MjcsNSArMzYzNCwxOCBAQCB2b2lkIHRzdF9RSGVhZGVyVmlldzo6dGVzdFJlbW92aW5nQ29sdW1u c1ZpYUxheW91dENoYW5nZWQoKQorICAgICAvLyBUaGUgbWFpbiBwb2ludCBvZiB0aGlzIHRlc3Qg aXMgdGhhdCB0aGUgc2VjdGlvbi1zaXplIHJlc3RvcmluZyBjb2RlIGRpZG4ndCBnbyBvdXQgb2Yg Ym91bmRzLgorIH0KKyAKKyt2b2lkIHRzdF9RSGVhZGVyVmlldzo6dGVzdE1vZGVsTW92aW5nQ29s dW1ucygpCisreworKyAgICBRdFRlc3RNb2RlbCBtb2RlbCgxMCwgMTApOworKyAgICBRSGVhZGVy VmlldyBodihRdDo6SG9yaXpvbnRhbCk7CisrICAgIGh2LnNldE1vZGVsKCZtb2RlbCk7CisrICAg IGh2LnJlc2l6ZVNlY3Rpb25zKFFIZWFkZXJWaWV3OjpSZXNpemVUb0NvbnRlbnRzKTsKKysgICAg aHYuc2hvdygpOworKworKyAgICBRUGVyc2lzdGVudE1vZGVsSW5kZXggaW5kZXgzID0gbW9kZWwu aW5kZXgoMCwgMyk7CisrICAgIG1vZGVsLm1vdmVDb2x1bW4oMywgMSk7CisrICAgIFFDT01QQVJF KGluZGV4My5jb2x1bW4oKSwgMSk7CisrfQorKworIFFURVNUX01BSU4odHN0X1FIZWFkZXJWaWV3 KQorICNpbmNsdWRlICJ0c3RfcWhlYWRlcnZpZXcubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3Bw IGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy90c3RfcXRh Ymxldmlldy5jcHAKK2luZGV4IDc2MTM1N2IyNTIuLjA2YmI3MDYwNzQgMTAwNjQ0CistLS0gYS9x dGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3L3RzdF9xdGFibGV2 aWV3LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxl dmlldy90c3RfcXRhYmxldmlldy5jcHAKK0BAIC0zOTcsNiArMzk3LDcgQEAgcHJpdmF0ZSBzbG90 czoKKyAgICAgdm9pZCBjaGVja0hlYWRlck1pblNpemUoKTsKKyAKKyAgICAgdm9pZCByZXNpemVU b0NvbnRlbnRzKCk7CisrICAgIHZvaWQgcmVzaXplVG9Db250ZW50c1NwYW5zKCk7CisgCisgICAg IHZvaWQgdGFiRm9jdXMoKTsKKyAgICAgdm9pZCBiaWdNb2RlbCgpOworQEAgLTM3MjEsNiArMzcy Miw3MCBAQCB2b2lkIHRzdF9RVGFibGVWaWV3OjpyZXNpemVUb0NvbnRlbnRzKCkKKyAKKyB9Cisg CisrCisrY2xhc3MgU3Bhbk1vZGVsIDogcHVibGljIFFBYnN0cmFjdFRhYmxlTW9kZWwKKyt7Cisr cHVibGljOgorKyAgICBTcGFuTW9kZWwoYm9vbCBzZWN0aW9uc01vdmVkKQorKyAgICAgICAgOiBf c2VjdGlvbnNNb3ZlZChzZWN0aW9uc01vdmVkKQorKyAgICB7fQorKyAgICBpbnQgY29sdW1uQ291 bnQoY29uc3QgUU1vZGVsSW5kZXggJiA9IHt9KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAyOyB9 CisrICAgIGludCByb3dDb3VudChjb25zdCBRTW9kZWxJbmRleCAmID0ge30pIGNvbnN0IG92ZXJy aWRlIHsgcmV0dXJuIDE7IH0KKysgICAgUVZhcmlhbnQgZGF0YShjb25zdCBRTW9kZWxJbmRleCAm aWR4LCBpbnQgcm9sZSA9IFF0OjpEaXNwbGF5Um9sZSkgY29uc3Qgb3ZlcnJpZGUKKysgICAgewor KyAgICAgICAgaWYgKHJvbGUgIT0gUXQ6OkRpc3BsYXlSb2xlKQorKyAgICAgICAgICAgIHJldHVy biBRVmFyaWFudCgpOworKyAgICAgICAgY29uc3QgaW50IGNvbCA9IF9zZWN0aW9uc01vdmVkID8g MSAtIGlkeC5jb2x1bW4oKSA6IGlkeC5jb2x1bW4oKTsKKysgICAgICAgIGlmIChjb2wgPT0gMCkK KysgICAgICAgICAgICByZXR1cm4gIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0 ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0 IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiI7CisrICAgICAgICByZXR1cm4gUVZhcmlh bnQoKTsKKysgICAgfQorK3ByaXZhdGU6CisrICAgIGJvb2wgX3NlY3Rpb25zTW92ZWQ7CisrfTsK KysKKysKKyt2b2lkIHRzdF9RVGFibGVWaWV3OjpyZXNpemVUb0NvbnRlbnRzU3BhbnMoKQorK3sK KysgICAgU3Bhbk1vZGVsIG1vZGVsMShmYWxzZSk7CisrICAgIFNwYW5Nb2RlbCBtb2RlbDIodHJ1 ZSk7CisrICAgIFFUYWJsZVZpZXcgdmlldzEsIHZpZXcyLCB2aWV3MzsKKysgICAgdmlldzEuc2V0 TW9kZWwoJm1vZGVsMSk7CisrICAgIHZpZXcyLnNldE1vZGVsKCZtb2RlbDIpOworKyAgICB2aWV3 Mi5ob3Jpem9udGFsSGVhZGVyKCktPm1vdmVTZWN0aW9uKDAsIDEpOworKyAgICB2aWV3My5zZXRN b2RlbCgmbW9kZWwxKTsKKysKKysgICAgdmlldzEuc2V0U3BhbigwLCAwLCAxLCAyKTsKKysgICAg dmlldzIuc2V0U3BhbigwLCAxLCAxLCAyKTsKKysgICAgdmlldzEuc2hvdygpOworKyAgICB2aWV3 Mi5zaG93KCk7CisrICAgIHZpZXczLnNob3coKTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRG b3JXaW5kb3dFeHBvc2VkKCZ2aWV3MSkpOworKyAgICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldp bmRvd0V4cG9zZWQoJnZpZXcyKSk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93 RXhwb3NlZCgmdmlldzMpKTsKKysgICAgdmlldzEuc2V0Q29sdW1uV2lkdGgoMCwgMTAwKTsKKysg ICAgdmlldzEuc2V0Q29sdW1uV2lkdGgoMSwgMTAwKTsKKysgICAgdmlldzIuc2V0Q29sdW1uV2lk dGgoMCwgMTAwKTsKKysgICAgdmlldzIuc2V0Q29sdW1uV2lkdGgoMSwgMTAwKTsKKysgICAgdmll dzMuc2V0Q29sdW1uV2lkdGgoMCwgMjAwKTsKKysKKysgICAgdmlldzEucmVzaXplUm93VG9Db250 ZW50cygwKTsKKysgICAgdmlldzIucmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAgdmlldzMu cmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAgUUNPTVBBUkUodmlldzEucm93SGVpZ2h0KDAp LCB2aWV3My5yb3dIZWlnaHQoMCkpOworKyAgICBRQ09NUEFSRSh2aWV3Mi5yb3dIZWlnaHQoMCks IHZpZXczLnJvd0hlaWdodCgwKSk7CisrCisrICAgIHZpZXczLnJlc2l6ZUNvbHVtblRvQ29udGVu dHMoMCk7CisrICAgIHZpZXczLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7CisrICAgIC8vIGhlaWdo dCBzaG91bGQgYmUgb25seSAxIHRleHQgbGluZSBmb3IgZWFzeSB0ZXN0aW5nCisrICAgIHZpZXcx LnNldFJvd0hlaWdodCgwLCB2aWV3My52ZXJ0aWNhbEhlYWRlcigpLT5zZWN0aW9uU2l6ZSgwKSk7 CisrICAgIHZpZXcyLnNldFJvd0hlaWdodCgwLCB2aWV3My52ZXJ0aWNhbEhlYWRlcigpLT5zZWN0 aW9uU2l6ZSgwKSk7CisrICAgIHZpZXcxLnJlc2l6ZUNvbHVtblRvQ29udGVudHMoMCk7CisrICAg IHZpZXcyLnJlc2l6ZUNvbHVtblRvQ29udGVudHMoMSk7CisrICAgIFFDT01QQVJFKHZpZXcxLmNv bHVtbldpZHRoKDApLCB2aWV3My5jb2x1bW5XaWR0aCgwKSAtIHZpZXcxLmNvbHVtbldpZHRoKDEp KTsKKysgICAgUUNPTVBBUkUodmlldzIuY29sdW1uV2lkdGgoMCksIHZpZXczLmNvbHVtbldpZHRo KDApIC0gdmlldzIuY29sdW1uV2lkdGgoMSkpOworK30KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UK KyBleHRlcm4gYm9vbCBRX1dJREdFVFNfRVhQT1JUIHF0X3RhYl9hbGxfd2lkZ2V0cygpOyAvLyBx YXBwbGljYXRpb24uY3BwCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNw cCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFw cGxpY2F0aW9uLmNwcAoraW5kZXggYTNiOGVmNzhkOC4uNDk1NWNlYmQ1ZCAxMDA2NDQKKy0tLSBh L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxp Y2F0aW9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9rZXJuZWwvcWFwcGxp Y2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3BwCitAQCAtMTQ5OCw3ICsxNDk4LDcgQEAgdm9pZCB0 c3RfUUFwcGxpY2F0aW9uOjpkZXNrdG9wU2V0dGluZ3NBd2FyZSgpCisgICAgIGVudmlyb25tZW50 ICs9IFFMYXRpbjFTdHJpbmcoIlFUX01BQ19ESVNBQkxFX0ZPUkVHUk9VTkRfQVBQTElDQVRJT05f VFJBTlNGT1JNPTEiKTsKKyAgICAgdGVzdFByb2Nlc3Muc2V0RW52aXJvbm1lbnQoZW52aXJvbm1l bnQpOworICNlbmRpZgorLSAgICB0ZXN0UHJvY2Vzcy5zdGFydCgiZGVza3RvcHNldHRpbmdzYXdh cmVfaGVscGVyIik7CisrICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCIuL2Rlc2t0b3BzZXR0aW5nc2F3 YXJlX2hlbHBlciIpOworICAgICBRVkVSSUZZMih0ZXN0UHJvY2Vzcy53YWl0Rm9yU3RhcnRlZCgp LAorICAgICAgICAgICAgICBxUHJpbnRhYmxlKFFTdHJpbmc6OmZyb21MYXRpbjEoIkNhbm5vdCBz dGFydCAnZGVza3RvcHNldHRpbmdzYXdhcmVfaGVscGVyJzogJTEiKS5hcmcodGVzdFByb2Nlc3Mu ZXJyb3JTdHJpbmcoKSkpKTsKKyAgICAgUVZFUklGWSh0ZXN0UHJvY2Vzcy53YWl0Rm9yRmluaXNo ZWQoMTAwMDApKTsKK0BAIC0yNDUyLDcgKzI0NTIsNyBAQCB2b2lkIHRzdF9RQXBwbGljYXRpb246 OnF0YnVnXzEyNjczKCkKKyAjaWYgUVRfQ09ORklHKHByb2Nlc3MpCisgICAgIFFQcm9jZXNzIHRl c3RQcm9jZXNzOworICAgICBRU3RyaW5nTGlzdCBhcmd1bWVudHM7CistICAgIHRlc3RQcm9jZXNz LnN0YXJ0KCJtb2RhbF9oZWxwZXIiLCBhcmd1bWVudHMpOworKyAgICB0ZXN0UHJvY2Vzcy5zdGFy dCgiLi9tb2RhbF9oZWxwZXIiLCBhcmd1bWVudHMpOworICAgICBRVkVSSUZZMih0ZXN0UHJvY2Vz cy53YWl0Rm9yU3RhcnRlZCgpLAorICAgICAgICAgICAgICBxUHJpbnRhYmxlKFFTdHJpbmc6OmZy b21MYXRpbjEoIkNhbm5vdCBzdGFydCAnbW9kYWxfaGVscGVyJzogJTEiKS5hcmcodGVzdFByb2Nl c3MuZXJyb3JTdHJpbmcoKSkpKTsKKyAgICAgUVZFUklGWSh0ZXN0UHJvY2Vzcy53YWl0Rm9yRmlu aXNoZWQoMjAwMDApKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dp ZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3BwIGIvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3RfcWFic3RyYWN0YnV0 dG9uLmNwcAoraW5kZXggZWIxMDhhNDBkZS4uZGNhNTUyOGMxYiAxMDA2NDQKKy0tLSBhL3F0YmFz ZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24vdHN0X3FhYnN0cmFj dGJ1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJz dHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAKK0BAIC00MSw2ICs0MSw3IEBACisg CisgI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKyAjaW5jbHVkZSA8cXBh L3FwbGF0Zm9ybWludGVncmF0aW9uLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5o PgorIAorIGNsYXNzIHRzdF9RQWJzdHJhY3RCdXR0b24gOiBwdWJsaWMgUU9iamVjdAorIHsKK0BA IC03Niw2ICs3Nyw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQga2V5TmF2aWdhdGlvbigp OworICNlbmRpZgorIAorKyAgICB2b2lkIGJ1dHRvblByZXNzS2V5cygpOworKworIHByb3RlY3Rl ZCBzbG90czoKKyAgICAgdm9pZCBvbkNsaWNrZWQoKTsKKyAgICAgdm9pZCBvblRvZ2dsZWQoIGJv b2wgb24gKTsKK0BAIC0yNjksNyArMjcyLDEzIEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6 c2V0QXV0b1JlcGVhdCgpCisgICAgICAgICBRQ09NUEFSRShwcmVzc19jb3VudCwgY2xpY2tfY291 bnQpOworICAgICAgICAgUVZFUklGWShjbGlja19jb3VudCA+IDEpOworICAgICAgICAgYnJlYWs7 CistICAgIGNhc2UgNDoKKysgICAgY2FzZSA0OiB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRv blByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQ bGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAg aWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAg ICAgIFFTS0lQKCJwbGF0Zm9ybSB0aGVtZSBoYXMgS2V5X0VudGVyIGluIEJ1dHRvblByZXNzS2V5 cyIpOworKyAgICAgICAgfQorICAgICAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBo YXMgbm8gZWZmZWN0IHdoZW4gYXV0b3JlcGVhdCBpcyBmYWxzZQorICAgICAgICAgdGVzdFdpZGdl dC0+c2V0RG93biggZmFsc2UgKTsKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldEF1dG9SZXBlYXQo IGZhbHNlICk7CitAQCAtMjg2LDcgKzI5NSwxNCBAQCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246 OnNldEF1dG9SZXBlYXQoKQorIAorICAgICAgICAgUVZFUklGWSggY2xpY2tfY291bnQgPT0gMCAp OworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgNToKKysgICAgfQorKyAgICBjYXNlIDU6IHsK KysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJp dmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxp c3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0 OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICAgICAgUVNLSVAoInBsYXRmb3JtIHRoZW1lIGhhcyBL ZXlfRW50ZXIgaW4gQnV0dG9uUHJlc3NLZXlzIik7CisrICAgICAgICB9CisgICAgICAgICAvLyBj aGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZlY3Qgd2hlbiBhdXRvcmVwZWF0IGlz IHRydWUKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7CisgICAgICAgICB0 ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCB0cnVlICk7CitAQCAtMzA0LDYgKzMyMCw3IEBAIHZv aWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6c2V0QXV0b1JlcGVhdCgpCisgCisgICAgICAgICBRVkVS SUZZKCBjbGlja19jb3VudCA9PSAwICk7CisgICAgICAgICBicmVhazsKKysgICAgfQorICAgICBj YXNlIDY6CisgICAgICAgICAvLyB2ZXJpZnkgYXV0b3JlcGVhdCBpcyBvZmYgYnkgZGVmYXVsdC4K KyAgICAgICAgIE15QnV0dG9uIHRtcCggMCk7CitAQCAtNjUxLDUgKzY2OCwxNiBAQCB2b2lkIHRz dF9RQWJzdHJhY3RCdXR0b246OmtleU5hdmlnYXRpb24oKQorIH0KKyAjZW5kaWYKKyAKKyt2b2lk IHRzdF9RQWJzdHJhY3RCdXR0b246OmJ1dHRvblByZXNzS2V5cygpCisreworKyAgICBjb25zdCBh dXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhl bWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhp bnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBidXR0b25QcmVzc0tleXMubGVuZ3RoKCk7ICsraSkgeworKyAgICAg ICAgUVRlc3Q6OmtleUNsaWNrKHRlc3RXaWRnZXQsIGJ1dHRvblByZXNzS2V5c1tpXSk7CisrICAg ICAgICBRQ09NUEFSRShjbGlja19jb3VudCwgaSArIDEpOworKyAgICB9CisrfQorKworIFFURVNU X01BSU4odHN0X1FBYnN0cmFjdEJ1dHRvbikKKyAjaW5jbHVkZSAidHN0X3FhYnN0cmFjdGJ1dHRv bi5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fj b21ib2JveC90c3RfcWNvbWJvYm94LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lk Z2V0cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAKK2luZGV4IDMyNDM3MDUwZjUuLjQ2YjVh ZjZkNjMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNv bWJvYm94L3RzdF9xY29tYm9ib3guY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRz L3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwCitAQCAtMTY4LDYgKzE2OCw3IEBA IHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgY2hlY2tNZW51SXRlbVBvc1doZW5TdHlsZVNoZWV0 SXNTZXQoKTsKKyAgICAgdm9pZCBjaGVja0VtYmVkZGVkTGluZUVkaXRXaGVuU3R5bGVTaGVldElz U2V0KCk7CisgICAgIHZvaWQgcHJvcGFnYXRlU3R5bGVDaGFuZ2VzKCk7CisrICAgIHZvaWQgYnV0 dG9uUHJlc3NLZXlzKCk7CisgCisgcHJpdmF0ZToKKyAgICAgUGxhdGZvcm1JbnB1dENvbnRleHQg bV9wbGF0Zm9ybUlucHV0Q29udGV4dDsKK0BAIC0xNjgyLDYgKzE2ODMsMTYgQEAgdm9pZCB0c3Rf UUNvbWJvQm94OjpzZXRNb2RlbCgpCisgICAgIFFDT01QQVJFKGJveC5yb290TW9kZWxJbmRleCgp LCByb290TW9kZWxJbmRleCk7CisgICAgIGJveC5zZXRNb2RlbChib3gubW9kZWwoKSk7CisgICAg IFFDT01QQVJFKGJveC5yb290TW9kZWxJbmRleCgpLCByb290TW9kZWxJbmRleCk7CisrCisrICAg IC8vIGNoZWNrIHRoYXQgc2V0dGluZyB0aGUgc2FtZSBtb2RlbCBhcyB0aGUgY29tcGxldGVyJ3Mg ZG9lc24ndCBjcmFzaAorKyAgICBRQ29tcGxldGVyICpjb21wbGV0ZXIgPSBuZXcgUUNvbXBsZXRl cigmYm94KTsKKysgICAgYm94LnNldEVkaXRhYmxlKHRydWUpOworKyAgICBib3guc2V0Q29tcGxl dGVyKGNvbXBsZXRlcik7CisrICAgIGF1dG8gKmxpc3RNb2RlbCA9IG5ldyBRU3RyaW5nTGlzdE1v ZGVsKHsgIm9uZSIsICJ0d28iIH0sIGNvbXBsZXRlcik7CisrICAgIGNvbXBsZXRlci0+c2V0TW9k ZWwobGlzdE1vZGVsKTsKKysgICAgUUNPTVBBUkUobGlzdE1vZGVsLT5yb3dDb3VudCgpLCAyKTsg Ly8gbWFrZSBzdXJlIGl0IHdhc24ndCBkZWxldGVkCisrICAgIGJveC5zZXRNb2RlbChsaXN0TW9k ZWwpOworKyAgICBRQ09NUEFSRShsaXN0TW9kZWwtPnJvd0NvdW50KCksIDIpOyAvLyBtYWtlIHN1 cmUgaXQgd2Fzbid0IGRlbGV0ZWQKKyB9CisgCisgdm9pZCB0c3RfUUNvbWJvQm94OjpzZXRDdXN0 b21Nb2RlbEFuZFZpZXcoKQorQEAgLTM2MzIsNSArMzY0MywyNCBAQCB2b2lkIHRzdF9RQ29tYm9C b3g6OnByb3BhZ2F0ZVN0eWxlQ2hhbmdlcygpCisgICAgIFFWRVJJRlkoZnJhbWVTdHlsZS5pbnF1 aXJlZCk7CisgfQorIAorK3ZvaWQgdHN0X1FDb21ib0JveDo6YnV0dG9uUHJlc3NLZXlzKCkKKyt7 CisrICAgIFFDb21ib0JveCBjb21ib0JveDsKKysgICAgY29tYm9Cb3guc2V0RWRpdGFibGUoZmFs c2UpOworKyAgICBjb21ib0JveC5hZGRJdGVtKFFTdHJpbmc6Om51bWJlcigxKSk7CisrICAgIGNv bWJvQm94LmFkZEl0ZW0oUVN0cmluZzo6bnVtYmVyKDIpKTsKKysgICAgY29uc3QgYXV0byBidXR0 b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0 Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGZvciAoaW50IGkg PSAwOyBpIDwgYnV0dG9uUHJlc3NLZXlzLmxlbmd0aCgpOyArK2kpIHsKKysgICAgICAgIFFUZXN0 OjprZXlDbGljaygmY29tYm9Cb3gsIGJ1dHRvblByZXNzS2V5c1tpXSk7CisrICAgICAgICAvLyBP biBzb21lIHBsYXRmb3JtcywgYSB3aW5kb3cgd2lsbCBub3QgYmUgaW1tZWRpYXRlbHkgdmlzaWJs ZSwKKysgICAgICAgIC8vIGJ1dCB0YWtlIHNvbWUgZXZlbnQtbG9vcCBpdGVyYXRpb25zIHRvIGNv bXBsZXRlLgorKyAgICAgICAgLy8gVXNpbmcgUVRSWV9WRVJJRlkgdG8gZGVhbCB3aXRoIHRoYXQu CisrICAgICAgICBRVFJZX1ZFUklGWShjb21ib0JveC52aWV3KCktPmlzVmlzaWJsZSgpKTsKKysg ICAgICAgIGNvbWJvQm94LmhpZGVQb3B1cCgpOworKyAgICB9CisrfQorKworIFFURVNUX01BSU4o dHN0X1FDb21ib0JveCkKKyAjaW5jbHVkZSAidHN0X3Fjb21ib2JveC5tb2MiCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9x Y29tbWFuZGxpbmtidXR0b24ucHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRz L3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvCitpbmRleCBiZTNjZmNk MTA0Li5jMjI4ZmRmY2NhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93 aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvCisrKysgYi9x dGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3Fjb21t YW5kbGlua2J1dHRvbi5wcm8KK0BAIC0xLDYgKzEsNiBAQAorIENPTkZJRyArPSB0ZXN0Y2FzZQor IFRBUkdFVCA9IHRzdF9xY29tbWFuZGxpbmtidXR0b24KKy1RVCArPSB3aWRnZXRzIHRlc3RsaWIK KytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXByaXZhdGUKKyBTT1VSQ0VTICArPSB0c3RfcWNv bW1hbmRsaW5rYnV0dG9uLmNwcAorIAorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRv L3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0X3Fjb21tYW5kbGlua2J1dHRv bi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0 dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwCitpbmRleCAwMDQ0ZDMzYzY2Li40Y2YwNjI5 NmU0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21t YW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAorKysrIGIvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRs aW5rYnV0dG9uLmNwcAorQEAgLTQwLDYgKzQwLDkgQEAKKyAjaW5jbHVkZSA8UUdyaWRMYXlvdXQ+ CisgI2luY2x1ZGUgPFFQYWludGVyPgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNh dGlvbl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorKworIGNsYXNzIHRz dF9RQ29tbWFuZExpbmtCdXR0b24gOiBwdWJsaWMgUU9iamVjdAorIHsKKyAgICAgUV9PQkpFQ1QK K0BAIC0yMjMsNiArMjI2LDEzIEBAIHZvaWQgdHN0X1FDb21tYW5kTGlua0J1dHRvbjo6c2V0QXV0 b1JlcGVhdCgpCisgICAgIC8vIGNoZWNrIHRoYXQgcHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVj dAorICAgICByZXNldENvdW50ZXJzKCk7CisgICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNl ICk7CisrICAgIC8vIFNraXAgYWZ0ZXIgcmVzZXQgaWYgQnV0dG9uUHJlc3NLZXlzIGhhcyBLZXlf RW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Q cml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6 OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRl cikpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRv UmVwZWF0KCBmYWxzZSApOworICAgICBRVGVzdDo6a2V5UHJlc3MoIHRlc3RXaWRnZXQsIFF0OjpL ZXlfRW50ZXIgKTsKKyAKK0BAIC0yNTUsNiArMjY1LDE0IEBAIHZvaWQgdHN0X1FDb21tYW5kTGlu a0J1dHRvbjo6cHJlc3NlZCgpCisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSAp OworICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworIAorKyAgICAvLyBT a2lwIGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0 dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxh dGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9u UHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1cm47Cisr ICAgIH0KKysKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LFF0OjpLZXlfRW50ZXIg KTsKKyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFDT01QQVJF KCByZWxlYXNlX2NvdW50LCAodWludCkxICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvCitpbmRleCA0YTVl NzZmZjY1Li5hMjM1ZmExZmFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0 cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0 by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3Fncm91cGJveC5wcm8KK0BAIC0xLDYgKzEsNiBA QAorIENPTkZJRyArPSB0ZXN0Y2FzZQorIFRBUkdFVCA9IHRzdF9xZ3JvdXBib3gKKy1RVCArPSB3 aWRnZXRzIHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXByaXZhdGUKKyBTT1VS Q0VTICArPSB0c3RfcWdyb3VwYm94LmNwcAorIAorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fncm91cGJveC5jcHAgYi9xdGJh c2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3RzdF9xZ3JvdXBib3guY3Bw CitpbmRleCA0ZmI1ZDI2MmNhLi5kOGQ3NTYyYjczIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3Rz L2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC90c3RfcWdyb3VwYm94LmNwcAorKysrIGIv cXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC90c3RfcWdyb3VwYm94 LmNwcAorQEAgLTM1LDYgKzM1LDkgQEAKKyAjaW5jbHVkZSA8UVJhZGlvQnV0dG9uPgorICNpbmNs dWRlIDxRRGlhbG9nPgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+ CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorKworICNpbmNsdWRlICJxZ3JvdXBi b3guaCIKKyAKKyBjbGFzcyB0c3RfUUdyb3VwQm94IDogcHVibGljIFFPYmplY3QKK0BAIC02OSw2 ICs3Miw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgcHJvcGFnYXRlRm9jdXMoKTsKKyAg ICAgdm9pZCB0YXNrX1FUQlVHXzE5MTcwX2lnbm9yZU1vdXNlUmVsZWFzZUV2ZW50KCk7CisgICAg IHZvaWQgdGFza19RVEJVR18xNTUxOV9wcm9wYWdhdGVNb3VzZUV2ZW50cygpOworKyAgICB2b2lk IGJ1dHRvblByZXNzS2V5cygpOworIAorIHByaXZhdGU6CisgICAgIGJvb2wgY2hlY2tlZDsKK0BA IC02MTAsNiArNjE0LDIwIEBAIHZvaWQgdHN0X1FHcm91cEJveDo6dGFza19RVEJVR18xNTUxOV9w cm9wYWdhdGVNb3VzZUV2ZW50cygpCisgICAgIFFDT01QQVJFKHBhcmVudC5tb3VzZU1vdmVkLCB0 cnVlKTsKKyB9CisgCisrdm9pZCB0c3RfUUdyb3VwQm94OjpidXR0b25QcmVzc0tleXMoKQorK3sK KysgICAgUUdyb3VwQm94IGdyb3VwQm94OworKyAgICBncm91cEJveC5zZXRDaGVja2FibGUodHJ1 ZSk7CisrICAgIFFTaWduYWxTcHkgY2xpY2tlZFNweSgmZ3JvdXBCb3gsICZRR3JvdXBCb3g6OmNs aWNrZWQpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlv blByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxR dDo6S2V5Pj4oKTsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidXR0b25QcmVzc0tleXMubGVu Z3RoKCk7ICsraSkgeworKyAgICAgICAgUVRlc3Q6OmtleUNsaWNrKCZncm91cEJveCwgYnV0dG9u UHJlc3NLZXlzW2ldKTsKKysgICAgICAgIFFDT01QQVJFKGNsaWNrZWRTcHkubGVuZ3RoKCksIGkg KyAxKTsKKysgICAgfQorK30KKysKKyB2b2lkIHRzdF9RR3JvdXBCb3g6OnNlbmRNb3VzZU1vdmVF dmVudChRV2lkZ2V0ICp3aWRnZXQsIGNvbnN0IFFQb2ludCAmbG9jYWxQb3MpCisgeworICAgICAv LyBTZW5kIGEgTW91c2VNb3ZlIGV2ZW50IHdpdGhvdXQgYWN0dWFsbHkgbW92aW5nIHRoZSBwb2lu dGVyCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNo YnV0dG9uL3FwdXNoYnV0dG9uLnBybyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0 cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8KK2luZGV4IDM1M2FkMDZjYTIuLmU1NWY2MTQ4 ZjIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hi dXR0b24vcXB1c2hidXR0b24ucHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dp ZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvCitAQCAtMSw2ICsxLDYgQEAKKyBDT05G SUcgKz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0c3RfcXB1c2hidXR0b24KKy1RVCArPSB3aWRnZXRz IHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXByaXZhdGUKKyBTT1VSQ0VTICAr PSB0c3RfcXB1c2hidXR0b24uY3BwCisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAgYi9xdGJh c2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vdHN0X3FwdXNoYnV0dG9u LmNwcAoraW5kZXggZTgxODUxNGE3OS4uNDA0M2U5MzI2YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1c2hidXR0b24uY3Bw CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vdHN0 X3FwdXNoYnV0dG9uLmNwcAorQEAgLTQxLDYgKzQxLDkgQEAKKyAjaW5jbHVkZSA8UVN0eWxlRmFj dG9yeT4KKyAjaW5jbHVkZSA8UVRhYldpZGdldD4KKyAKKysjaW5jbHVkZSA8cHJpdmF0ZS9xZ3Vp YXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKysKKyBj bGFzcyB0c3RfUVB1c2hCdXR0b24gOiBwdWJsaWMgUU9iamVjdAorIHsKKyBRX09CSkVDVAorQEAg LTIxMiw2ICsyMTUsMTMgQEAgdm9pZCB0c3RfUVB1c2hCdXR0b246OmF1dG9SZXBlYXQoKQorICAg ICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZlY3QKKyAgICAgcmVzZXRD b3VudGVycygpOworICAgICB0ZXN0V2lkZ2V0LT5zZXREb3duKCBmYWxzZSApOworKyAgICAvLyBT a2lwIGFmdGVyIHJlc2V0IGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNv bnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZv cm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRo ZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAg ICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAg ICByZXR1cm47CisrICAgIH0KKyAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggZmFsc2Ug KTsKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LCBRdDo6S2V5X0VudGVyICk7Cisg CitAQCAtMjQ3LDYgKzI1NywxNCBAQCB2b2lkIHRzdF9RUHVzaEJ1dHRvbjo6cHJlc3NlZCgpCisg ICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOworICAgICBRQ09NUEFSRSggcmVs ZWFzZV9jb3VudCwgKHVpbnQpMSApOworIAorKyAgICAvLyBTa2lwIGlmIEJ1dHRvblByZXNzS2V5 cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFw cGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJl c3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVl PFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0 OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKyAgICAgUVRlc3Q6 OmtleVByZXNzKCB0ZXN0V2lkZ2V0LFF0OjpLZXlfRW50ZXIgKTsKKyAgICAgUUNPTVBBUkUoIHBy ZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFDT01QQVJFKCByZWxlYXNlX2NvdW50LCAodWlu dCkxICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL21hbnVhbC9yaGkvY3ViZW1hcF9yZW5k ZXIvYnVpbGRzaGFkZXIuYmF0IGIvcXRiYXNlL3Rlc3RzL21hbnVhbC9yaGkvY3ViZW1hcF9yZW5k ZXIvYnVpbGRzaGFkZXIuYmF0CitvbGQgbW9kZSAxMDA3NTUKK25ldyBtb2RlIDEwMDY0NAorU3Vi bW9kdWxlIHF0Y29ubmVjdGl2aXR5IGU5NTdkNDgxLi4wNTYyOTRjMDoKK2RpZmYgLS1naXQgYS9x dGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hjaW1hbmFnZXIuY3BwIGIvcXRjb25u ZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcAoraW5kZXggZTI2MzVm YWUuLmE4YjhlM2I5IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9i bHVlei9oY2ltYW5hZ2VyLmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9i bHVlei9oY2ltYW5hZ2VyLmNwcAorQEAgLTU2Myw5ICs1NjMsMTEgQEAgdm9pZCBIY2lNYW5hZ2Vy OjpoYW5kbGVIY2lBY2xQYWNrZXQoY29uc3QgcXVpbnQ4ICpkYXRhLCBpbnQgc2l6ZSkKKyAKKyB2 b2lkIEhjaU1hbmFnZXI6OmhhbmRsZUxlTWV0YUV2ZW50KGNvbnN0IHF1aW50OCAqZGF0YSkKKyB7 CistICAgIC8vIFNwZWMgdjQuMiwgVm9sIDIsIHBhcnQgRSwgNy43LjY1ZmYKKysgICAgLy8gU3Bl YyB2NS4zLCBWb2wgNCwgcGFydCBFLCA3LjcuNjUuKgorICAgICBzd2l0Y2ggKCpkYXRhKSB7Cist ICAgIGNhc2UgMHgxOiB7CisrICAgIGNhc2UgMHgxOiAvLyBIQ0lfTEVfQ29ubmVjdGlvbl9Db21w bGV0ZQorKyAgICBjYXNlIDB4QTogLy8gSENJX0xFX0VuaGFuY2VkX0Nvbm5lY3Rpb25fQ29tcGxl dGUKKysgICAgeworICAgICAgICAgY29uc3QgcXVpbnQxNiBoYW5kbGUgPSBidF9nZXRfbGUxNihk YXRhICsgMik7CisgICAgICAgICBlbWl0IGNvbm5lY3Rpb25Db21wbGV0ZShoYW5kbGUpOworICAg ICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9x Ymx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNwcCBiL3F0Y29ubmVjdGl2aXR5 L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAK K2luZGV4IDZhOTMxNDNiLi40YTE4Y2ZjNyAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3Ny Yy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAKKysr KyBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3Zl cnlhZ2VudF9ibHVlei5jcHAKK0BAIC0zMjAsNyArMzIwLDEwIEBAIHZvaWQgUUJsdWV0b290aFNl cnZpY2VEaXNjb3ZlcnlBZ2VudFByaXZhdGU6Ol9xX2ZpbmlzaFNkcFNjYW4oUUJsdWV0b290aFNl cnZpY2VECisgICAgICAgICAgICAgZm9yIChjb25zdCBRQmx1ZXRvb3RoVXVpZCAmaWQgOiBzZXJ2 aWNlQ2xhc3NVdWlkcykgeworICAgICAgICAgICAgICAgICBpZiAoaWQubWluaW11bVNpemUoKSA9 PSAxNikgeworICAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8uc2V0U2VydmljZVV1aWQo aWQpOworLSAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8uc2V0U2VydmljZU5hbWUoUUJs dWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6dHIoIkN1c3RvbSBTZXJ2aWNlIikpOworKyAg ICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2VJbmZvLnNlcnZpY2VOYW1lKCkuaXNFbXB0eSgp KSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8uc2V0U2VydmljZU5hbWUo CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUJsdWV0b290aFNlcnZpY2VE aXNjb3ZlcnlBZ2VudDo6dHIoIkN1c3RvbSBTZXJ2aWNlIikpOworKyAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICAgUUJsdWV0b290aFNlcnZpY2VJbmZvOjpTZXF1ZW5j ZSBtb2RTZXEgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlSW5mby5hdHRy aWJ1dGUoUUJsdWV0b290aFNlcnZpY2VJbmZvOjpTZXJ2aWNlQ2xhc3NJZHMpLnZhbHVlPFFCbHVl dG9vdGhTZXJ2aWNlSW5mbzo6U2VxdWVuY2U+KCk7CisgICAgICAgICAgICAgICAgICAgICBtb2RT ZXEucmVtb3ZlT25lKFFWYXJpYW50Ojpmcm9tVmFsdWUoaWQpKTsKK0BAIC0zMzQsOCArMzM3LDEw IEBAIHZvaWQgUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudFByaXZhdGU6Ol9xX2Zpbmlz aFNkcFNjYW4oUUJsdWV0b290aFNlcnZpY2VECisgICAgICAgICAgICAgICAgIHFDRGVidWcoUVRf QlRfQkxVRVopIDw8ICJEaXNjb3ZlcmVkIHNlcnZpY2VzIiA8PCBkaXNjb3ZlcmVkRGV2aWNlcy5h dCgwKS5hZGRyZXNzKCkudG9TdHJpbmcoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8PCBzZXJ2aWNlSW5mby5zZXJ2aWNlTmFtZSgpIDw8IHNlcnZpY2VJbmZvLnNlcnZp Y2VVdWlkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIj4+PiIg PDwgc2VydmljZUluZm8uc2VydmljZUNsYXNzVXVpZHMoKTsKKy0KKy0gICAgICAgICAgICAgICAg ZW1pdCBxLT5zZXJ2aWNlRGlzY292ZXJlZChzZXJ2aWNlSW5mbyk7CisrICAgICAgICAgICAgICAg IC8vIFVzZSBxdWV1ZWQgY29ubmVjdGlvbiB0byBhbGxvdyB1cyBmaW5pc2ggdGhlIHNlcnZpY2Ug bG9vcGluZzsgdGhlIGFwcGxpY2F0aW9uCisrICAgICAgICAgICAgICAgIC8vIG1pZ2h0IGNhbGwg c3RvcCgpIHdoZW4gaXQgaGFzIGRldGVjdGVkIHRoZSBzZXJ2aWNlLW9mLWludGVyZXN0LgorKyAg ICAgICAgICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHEsICJzZXJ2aWNlRGlzY292 ZXJlZCIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFfQVJHKFFCbHVldG9vdGhTZXJ2aWNlSW5mbywgc2VydmljZUluZm8p KTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGNv bm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXQuY3BwIGIvcXRjb25uZWN0 aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0LmNwcAoraW5kZXggZTRkODU0NDcu LmFhZGQ0NzU1IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1 ZXRvb3Roc29ja2V0LmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1 ZXRvb3Roc29ja2V0LmNwcAorQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIFFCbHVldG9vdGhTb2Nr ZXQ6OnNldFNvY2tldFN0YXRlKFFCbHVldG9vdGhTb2NrZXQ6OlNvY2tldFN0YXRlIHN0YXRlKQor IGJvb2wgUUJsdWV0b290aFNvY2tldDo6Y2FuUmVhZExpbmUoKSBjb25zdAorIHsKKyAgICAgUV9E KGNvbnN0IFFCbHVldG9vdGhTb2NrZXRCYXNlKTsKKy0gICAgcmV0dXJuIGQtPmNhblJlYWRMaW5l KCk7CisrICAgIHJldHVybiBkLT5jYW5SZWFkTGluZSgpIHx8IFFJT0RldmljZTo6Y2FuUmVhZExp bmUoKTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0 b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAgYi9xdGNvbm5lY3Rpdml0eS9zcmMv Ymx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1ZXpkYnVzLmNwcAoraW5kZXggMDg0YWE5NTgu LmQ2YWExN2E3IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1 ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVl dG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3BwCitAQCAtMjg0LDYgKzI4NCwxMCBA QCB2b2lkIFFCbHVldG9vdGhTb2NrZXRQcml2YXRlQmx1ZXpEQnVzOjpjb25uZWN0VG9TZXJ2aWNl KAorICAgICAgICAgcmV0dXJuOworICAgICB9CisgCisrICAgIGlmIChzZXJ2aWNlLnNvY2tldFBy b3RvY29sKCkgIT0gUUJsdWV0b290aFNlcnZpY2VJbmZvOjpQcm90b2NvbDo6VW5rbm93blByb3Rv Y29sKQorKyAgICAgICAgc29ja2V0VHlwZSA9IHNlcnZpY2Uuc29ja2V0UHJvdG9jb2woKTsKKysg ICAgcUNEZWJ1ZyhRVF9CVF9CTFVFWikgPDwgIlNvY2tldCBwcm90b2NvbCB1c2VkOiIgPDwgc29j a2V0VHlwZTsKKysKKyAgICAgY29ubmVjdFRvU2VydmljZShzZXJ2aWNlLmRldmljZSgpLmFkZHJl c3MoKSwgdGFyZ2V0U2VydmljZSwgb3Blbk1vZGUpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGNv bm5lY3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0X3FibHVldG9vdGhzb2Nr ZXQuY3BwIGIvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Roc29ja2V0L3RzdF9x Ymx1ZXRvb3Roc29ja2V0LmNwcAoraW5kZXggMDViYzFhMGYuLmE3YjVlZjFmIDEwMDY0NAorLS0t IGEvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRv b3Roc29ja2V0LmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Ro c29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcAorQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lk IHRzdF9RQmx1ZXRvb3RoU29ja2V0Ojppbml0VGVzdENhc2UoKQorICAgICBxRGVidWcoKSA8PCAi U3RhcnRpbmcgZGlzY292ZXJ5IjsKKyAKKyAgICAgc2RhLT5zZXRVdWlkRmlsdGVyKFFCbHVldG9v dGhVdWlkKFFTdHJpbmcoVEVTVF9TRVJWSUNFX1VVSUQpKSk7CistICAgIHNkYS0+c3RhcnQoUUJs dWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6TWluaW1hbERpc2NvdmVyeSk7CisrICAgIHNk YS0+c3RhcnQoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6RnVsbERpc2NvdmVyeSk7 CisgCisgICAgIGZvciAoaW50IGNvbm5lY3RUaW1lID0gTWF4Q29ubmVjdFRpbWU7ICFkb25lX2Rp c2NvdmVyeSAmJiBjb25uZWN0VGltZSA+IDA7IGNvbm5lY3RUaW1lIC09IDEwMDApCisgICAgICAg ICBRVGVzdDo6cVdhaXQoMTAwMCk7CitTdWJtb2R1bGUgcXRkZWNsYXJhdGl2ZSBmNTcwMWYwZC4u OGRlZmU3YmY6CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2NvbW1vbi9xcW1s anNmaXhlZHBvb2xhcnJheV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29tbW9uL3FxbWxq c2ZpeGVkcG9vbGFycmF5X3AuaAoraW5kZXggYjY1Yjk5NGQ2Yy4uMTVhOGNkNjg3OCAxMDA2NDQK Ky0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29sYXJyYXlf cC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29tbW9uL3FxbWxqc2ZpeGVkcG9vbGFy cmF5X3AuaAorQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgorICAgICAgICAgaWYgKFFUeXBlSW5m bzxUPjo6aXNDb21wbGV4KSB7CisgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3Vu dDsgKytpKQorICAgICAgICAgICAgICAgICBuZXcgKGRhdGEgKyBpKSBUKHZlY3Rvci5hdChpKSk7 CistICAgICAgICB9IGVsc2UgeworKyAgICAgICAgfSBlbHNlIGlmIChjb3VudCkgeworICAgICAg ICAgICAgIG1lbWNweShkYXRhLCBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odmVjdG9yLmNvbnN0 RGF0YSgpKSwgY291bnQgKiBzaXplb2YoVCkpOworICAgICAgICAgfQorICAgICB9CitkaWZmIC0t Z2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9xdjRxb2JqZWN0d3JhcHBlci5j cHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3cmFwcGVyLmNw cAoraW5kZXggZTU3Y2RkODI3OC4uOTQ2MTM1OThhZiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRp dmUvc3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwCisrKysgYi9xdGRlY2xh cmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3cmFwcGVyLmNwcAorQEAgLTExNDUs OCArMTE0NSw3IEBAIHZvaWQgSGVhcDo6UU9iamVjdFdyYXBwZXI6Om1hcmtPYmplY3RzKEhlYXA6 OkJhc2UgKnRoYXQsIFFWNDo6TWFya1N0YWNrICptYXJrU3RhCisgdm9pZCBRT2JqZWN0V3JhcHBl cjo6ZGVzdHJveU9iamVjdChib29sIGxhc3RDYWxsKQorIHsKKyAgICAgSGVhcDo6UU9iamVjdFdy YXBwZXIgKmggPSBkKCk7CistICAgIGlmICghaC0+aW50ZXJuYWxDbGFzcykKKy0gICAgICAgIHJl dHVybjsgLy8gZGVzdHJveU9iamVjdCBhbHJlYWR5IGdvdCBjYWxsZWQKKysgICAgUV9BU1NFUlQo aC0+aW50ZXJuYWxDbGFzcyk7CisgCisgICAgIGlmIChoLT5vYmplY3QoKSkgeworICAgICAgICAg UVFtbERhdGEgKmRkYXRhID0gUVFtbERhdGE6OmdldChoLT5vYmplY3QoKSwgZmFsc2UpOworQEAg LTExNzYsNyArMTE3NSw3IEBAIHZvaWQgUU9iamVjdFdyYXBwZXI6OmRlc3Ryb3lPYmplY3QoYm9v bCBsYXN0Q2FsbCkKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBoLT5+RGF0YSgpOworKyAg ICBoLT5kZXN0cm95KCk7CisgfQorIAorIAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3Jj L3FtbC9tZW1vcnkvcXY0bW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRt bS5jcHAKK2luZGV4IDA2Y2FmMDRlNWEuLmRhMTQ5YTY3YzQgMTAwNjQ0CistLS0gYS9xdGRlY2xh cmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMv cW1sL21lbW9yeS9xdjRtbS5jcHAKK0BAIC05ODEsNyArOTgxLDcgQEAgdm9pZCBNZW1vcnlNYW5h Z2VyOjpzd2VlcChib29sIGxhc3RTd2VlcCwgQ2xhc3NEZXN0cm95U3RhdHNDYWxsYmFjayBjbGFz c0NvdW50UHQKKyAKKyAgICAgaWYgKE11bHRpcGx5V3JhcHBlZFFPYmplY3RNYXAgKm11bHRpcGx5 V3JhcHBlZFFPYmplY3RzID0gZW5naW5lLT5tX211bHRpcGx5V3JhcHBlZFFPYmplY3RzKSB7Cisg ICAgICAgICBmb3IgKE11bHRpcGx5V3JhcHBlZFFPYmplY3RNYXA6Okl0ZXJhdG9yIGl0ID0gbXVs dGlwbHlXcmFwcGVkUU9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IG11bHRpcGx5V3JhcHBlZFFPYmpl Y3RzLT5lbmQoKTspIHsKKy0gICAgICAgICAgICBpZiAoIWl0LnZhbHVlKCkuaXNOdWxsT3JVbmRl ZmluZWQoKSkKKysgICAgICAgICAgICBpZiAoaXQudmFsdWUoKS5pc051bGxPclVuZGVmaW5lZCgp KQorICAgICAgICAgICAgICAgICBpdCA9IG11bHRpcGx5V3JhcHBlZFFPYmplY3RzLT5lcmFzZShp dCk7CisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICArK2l0OworZGlmZiAtLWdp dCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAgYi9x dGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWwuY3BwCitpbmRleCAy MDc5YThlZDA0Li5hNTc3Y2IyMzUxIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1s bW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1s bW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorQEAgLTM4OSw2ICszODksMTIgQEAgdm9pZCBR UW1sRGVsZWdhdGVNb2RlbFByaXZhdGU6OmNvbm5lY3RUb0Fic3RyYWN0SXRlbU1vZGVsKCkKKyAg ICAgICAgICAgICAgICAgICAgICAgcSwgIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX3Jvd3NS ZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisgICAgIHFtbG9iamVjdF9jb25uZWN0KGFp bSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwocm93c0Fib3V0VG9CZVJlbW92ZWQoUU1vZGVs SW5kZXgsaW50LGludCkpLAorICAgICAgICAgICAgICAgICAgICAgICBxLCAgUVFtbERlbGVnYXRl TW9kZWwsIFNMT1QoX3Ffcm93c0Fib3V0VG9CZVJlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkp KTsKKysgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05B TChjb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorKyAgICAgICAgICAgICAg ICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9jb2x1bW5zSW5zZXJ0ZWQoUU1v ZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJh Y3RJdGVtTW9kZWwsIFNJR05BTChjb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSks CisrICAgICAgICAgICAgICAgICAgICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2Nv bHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIHFtbG9iamVjdF9jb25u ZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoY29sdW1uc01vdmVkKFFNb2RlbElu ZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSksCisrICAgICAgICAgICAgICAgICAgICAgIHEs IFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2NvbHVtbnNNb3ZlZChRTW9kZWxJbmRleCxpbnQs aW50LFFNb2RlbEluZGV4LGludCkpKTsKKyAgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJz dHJhY3RJdGVtTW9kZWwsIFNJR05BTChkYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRl eCxRVmVjdG9yPGludD4pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgcSwgUVFtbERlbGVnYXRl TW9kZWwsIFNMT1QoX3FfZGF0YUNoYW5nZWQoUU1vZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZlY3Rv cjxpbnQ+KSkpOworICAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2Rl bCwgU0lHTkFMKHJvd3NNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkp LAorQEAgLTQxMyw2ICs0MTksMTIgQEAgdm9pZCBRUW1sRGVsZWdhdGVNb2RlbFByaXZhdGU6OmRp c2Nvbm5lY3RGcm9tQWJzdHJhY3RJdGVtTW9kZWwoKQorICAgICAgICAgICAgICAgICAgICAgICAg IHEsIFNMT1QoX3Ffcm93c0Fib3V0VG9CZVJlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsK KyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChyb3dzUmVtb3ZlZChRTW9kZWxJ bmRleCxpbnQsaW50KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgcSwgU0xPVChfcV9yb3dz UmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBRT2JqZWN0OjpkaXNjb25uZWN0 KGFpbSwgU0lHTkFMKGNvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRleCxpbnQsaW50KSksIHEsCisr ICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChfcV9jb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5k ZXgsaW50LGludCkpKTsKKysgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChjb2x1 bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSksIHEsCisrICAgICAgICAgICAgICAgICAg ICAgICAgU0xPVChfcV9jb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAg ICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGNvbHVtbnNNb3ZlZChRTW9kZWxJbmRl eCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLCBxLAorKyAgICAgICAgICAgICAgICAgICAgICAg IFNMT1QoX3FfY29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50 KSkpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGRhdGFDaGFuZ2VkKFFN b2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpLAorICAgICAgICAgICAgICAgICAg ICAgICAgIHEsIFNMT1QoX3FfZGF0YUNoYW5nZWQoUU1vZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZl Y3RvcjxpbnQ+KSkpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKHJvd3NN b3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLAorQEAgLTE5NzMsNiAr MTk4NSwzOCBAQCB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9yb3dzTW92ZWQoCisgICAgIH0K KyB9CisgCisrdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc0luc2VydGVkKGNvbnN0 IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBiZWdpbiwgaW50IGVuZCkKKyt7CisrICAgIFFfRChR UW1sRGVsZWdhdGVNb2RlbCk7CisrICAgIFFfVU5VU0VEKGVuZCk7CisrICAgIGlmIChwYXJlbnQg PT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIGJlZ2luID09IDApIHsKKysgICAgICAg IC8vIG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5nZWQKKysgICAgICAgIF9xX2l0ZW1zQ2hhbmdlZCgw LCBkLT5tX2NvdW50LCBRVmVjdG9yPGludD4oKSk7CisrICAgIH0KKyt9CisrCisrdm9pZCBRUW1s RGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc1JlbW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVu dCwgaW50IGJlZ2luLCBpbnQgZW5kKQorK3sKKysgICAgUV9EKFFRbWxEZWxlZ2F0ZU1vZGVsKTsK KysgICAgUV9VTlVTRUQoZW5kKTsKKysgICAgaWYgKHBhcmVudCA9PSBkLT5tX2FkYXB0b3JNb2Rl bC5yb290SW5kZXggJiYgYmVnaW4gPT0gMCkgeworKyAgICAgICAgLy8gbWFyayBhbGwgaXRlbXMg YXMgY2hhbmdlZAorKyAgICAgICAgX3FfaXRlbXNDaGFuZ2VkKDAsIGQtPm1fY291bnQsIFFWZWN0 b3I8aW50PigpKTsKKysgICAgfQorK30KKysKKyt2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9j b2x1bW5zTW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwgaW50IHN0YXJ0LCBpbnQgZW5k LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRTW9kZWxJ bmRleCAmZGVzdGluYXRpb24sIGludCBjb2x1bW4pCisreworKyAgICBRX0QoUVFtbERlbGVnYXRl TW9kZWwpOworKyAgICBRX1VOVVNFRChlbmQpOworKyAgICBpZiAoKHBhcmVudCA9PSBkLT5tX2Fk YXB0b3JNb2RlbC5yb290SW5kZXggJiYgc3RhcnQgPT0gMCkKKysgICAgICAgIHx8IChkZXN0aW5h dGlvbiA9PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYgY29sdW1uID09IDApKSB7Cisr ICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBjaGFuZ2VkCisrICAgICAgICBfcV9pdGVtc0No YW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3RvcjxpbnQ+KCkpOworKyAgICB9CisrfQorKworIHZv aWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2RhdGFDaGFuZ2VkKGNvbnN0IFFNb2RlbEluZGV4ICZi ZWdpbiwgY29uc3QgUU1vZGVsSW5kZXggJmVuZCwgY29uc3QgUVZlY3RvcjxpbnQ+ICZyb2xlcykK KyB7CisgICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJh dGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaCBiL3F0ZGVjbGFyYXRpdmUv c3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbF9wLmgKK2luZGV4IDhhYWI0YmFkY2EuLmQx NDBiZmJhYWYgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRl bGVnYXRlbW9kZWxfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRl bGVnYXRlbW9kZWxfcC5oCitAQCAtMTUyLDYgKzE1Miw5IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAg ICAgdm9pZCBfcV9pdGVtc01vdmVkKGludCBmcm9tLCBpbnQgdG8sIGludCBjb3VudCk7CisgICAg IHZvaWQgX3FfbW9kZWxSZXNldCgpOworICAgICB2b2lkIF9xX3Jvd3NJbnNlcnRlZChjb25zdCBR TW9kZWxJbmRleCAmLGludCxpbnQpOworKyAgICB2b2lkIF9xX2NvbHVtbnNJbnNlcnRlZChjb25z dCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCk7CisrICAgIHZvaWQgX3FfY29sdW1uc1JlbW92ZWQo Y29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQpOworKyAgICB2b2lkIF9xX2NvbHVtbnNNb3Zl ZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCwgY29uc3QgUU1vZGVsSW5kZXggJiwgaW50 KTsKKyAgICAgdm9pZCBfcV9yb3dzQWJvdXRUb0JlUmVtb3ZlZChjb25zdCBRTW9kZWxJbmRleCAm cGFyZW50LCBpbnQgYmVnaW4sIGludCBlbmQpOworICAgICB2b2lkIF9xX3Jvd3NSZW1vdmVkKGNv bnN0IFFNb2RlbEluZGV4ICYsaW50LGludCk7CisgICAgIHZvaWQgX3Ffcm93c01vdmVkKGNvbnN0 IFFNb2RlbEluZGV4ICYsIGludCwgaW50LCBjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQpOworZGlm ZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVx dWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNz aWJsZXF1aWNraXRlbS5jcHAKK2luZGV4IDg1NzE5ZmRjODAuLjc4ZTJhYjMwMmMgMTAwNjQ0Cist LS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tp dGVtLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNz aWJsZXF1aWNraXRlbS5jcHAKK0BAIC00Niw2ICs0Niw3IEBACisgI2luY2x1ZGUgIlF0UXVpY2sv cHJpdmF0ZS9xcXVpY2t0ZXh0aW5wdXRfcC5oIgorICNpbmNsdWRlICJRdFF1aWNrL3ByaXZhdGUv cXF1aWNrYWNjZXNzaWJsZWF0dGFjaGVkX3AuaCIKKyAjaW5jbHVkZSAiUXRRdWljay9xcXVpY2t0 ZXh0ZG9jdW1lbnQuaCIKKysjaW5jbHVkZSAiUXRRdWljay9xcXVpY2tyZW5kZXJjb250cm9sLmgi CisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQor QEAgLTU3LDcgKzU4LDE5IEBAIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpRQWNjZXNzaWJsZVF1aWNr SXRlbShRUXVpY2tJdGVtICppdGVtKQorIAorIFFXaW5kb3cgKlFBY2Nlc3NpYmxlUXVpY2tJdGVt Ojp3aW5kb3coKSBjb25zdAorIHsKKy0gICAgcmV0dXJuIGl0ZW0oKS0+d2luZG93KCk7CisrICAg IFFRdWlja1dpbmRvdyAqd2luZG93ID0gaXRlbSgpLT53aW5kb3coKTsKKysKKysgICAgLy8gRm9y IFFRdWlja1dpZGdldCB0aGUgYWJvdmUgd2luZG93IHdpbGwgYmUgdGhlIG9mZnNjcmVlbiBRUXVp Y2tXaW5kb3csCisrICAgIC8vIHdoaWNoIGlzIG5vdCBhIHBhcnQgb2YgdGhlIGFjY2Vzc2liaWxp dHkgdHJlZS4gRGV0ZWN0IHRoaXMgY2FzZSBhbmQKKysgICAgLy8gcmV0dXJuIHRoZSB3aW5kb3cg Zm9yIHRoZSBRUXVpY2tXaWRnZXQgaW5zdGVhZC4KKysgICAgaWYgKHdpbmRvdyAmJiAhd2luZG93 LT5oYW5kbGUoKSkgeworKyAgICAgICAgaWYgKFFRdWlja1JlbmRlckNvbnRyb2wgKnJlbmRlckNv bnRyb2wgPSBRUXVpY2tXaW5kb3dQcml2YXRlOjpnZXQod2luZG93KS0+cmVuZGVyQ29udHJvbCkg eworKyAgICAgICAgICAgIGlmIChRV2luZG93ICpyZW5kZXJXaW5kb3cgPSByZW5kZXJDb250cm9s LT5yZW5kZXJXaW5kb3cobnVsbHB0cikpCisrICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJX aW5kb3c7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcmV0dXJuIHdpbmRvdzsKKyB9Cisg CisgaW50IFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpjaGlsZENvdW50KCkgY29uc3QKK0BAIC0xMTMs MTkgKzEyNiwxNSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja0l0ZW06 OmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdAorIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNj ZXNzaWJsZVF1aWNrSXRlbTo6cGFyZW50KCkgY29uc3QKKyB7CisgICAgIFFRdWlja0l0ZW0gKnBh cmVudCA9IGl0ZW0oKS0+cGFyZW50SXRlbSgpOworLSAgICBRUXVpY2tXaW5kb3cgKndpbmRvdyA9 IGl0ZW0oKS0+d2luZG93KCk7CistICAgIFFRdWlja0l0ZW0gKmNpID0gd2luZG93ID8gd2luZG93 LT5jb250ZW50SXRlbSgpIDogbnVsbHB0cjsKKysgICAgUVF1aWNrV2luZG93ICppdGVtV2luZG93 ID0gaXRlbSgpLT53aW5kb3coKTsKKysgICAgUVF1aWNrSXRlbSAqY2kgPSBpdGVtV2luZG93ID8g aXRlbVdpbmRvdy0+Y29udGVudEl0ZW0oKSA6IG51bGxwdHI7CisgICAgIHdoaWxlIChwYXJlbnQg JiYgIVFRdWlja0l0ZW1Qcml2YXRlOjpnZXQocGFyZW50KS0+aXNBY2Nlc3NpYmxlICYmIHBhcmVu dCAhPSBjaSkKKyAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50SXRlbSgpOworIAorICAg ICBpZiAocGFyZW50KSB7CisgICAgICAgICBpZiAocGFyZW50ID09IGNpKSB7CistICAgICAgICAg ICAgLy8gSnVtcCBvdXQgdG8gdGhlIHNjZW5lIHdpZGdldCBpZiB0aGUgcGFyZW50IGlzIHRoZSBy b290IGl0ZW0uCistICAgICAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByb290IGl0ZW1zLCBRUXVp Y2tXaW5kb3c6OnJvb3RJdGVtIGFuZAorLSAgICAgICAgICAgIC8vIFFRdWlja1ZpZXc6OmRlY2xh cmF0aXZlUm9vdC4gVGhlIGZvcm1lciBpcyB0aGUgdHJ1ZSByb290IGl0ZW0sCistICAgICAgICAg ICAgLy8gYnV0IGlzIG5vdCBhIHBhcnQgb2YgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4gQ2hlY2sg aWYgd2UgaGl0CistICAgICAgICAgICAgLy8gaXQgaGVyZSBhbmQgcmV0dXJuIGFuIGludGVyZmFj ZSBmb3IgdGhlIHNjZW5lIGluc3RlYWQuCistICAgICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxl OjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uod2luZG93KTsKKysgICAgICAgICAgICAvLyBKdW1w IG91dCB0byB0aGUgd2luZG93IGlmIHRoZSBwYXJlbnQgaXMgdGhlIHJvb3QgaXRlbQorKyAgICAg ICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKHdpbmRv dygpKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgd2hpbGUgKHBhcmVudCAmJiAh cGFyZW50LT5kX2Z1bmMoKS0+aXNBY2Nlc3NpYmxlKQorICAgICAgICAgICAgICAgICBwYXJlbnQg PSBwYXJlbnQtPnBhcmVudEl0ZW0oKTsKK0BAIC0xODgsNyArMTk3LDcgQEAgUUFjY2Vzc2libGU6 OlN0YXRlIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpzdGF0ZSgpIGNvbnN0CisgICAgIFFSZWN0IHZp ZXdSZWN0XyA9IHZpZXdSZWN0KCk7CisgICAgIFFSZWN0IGl0ZW1SZWN0ID0gcmVjdCgpOworIAor LSAgICBpZiAodmlld1JlY3RfLmlzTnVsbCgpIHx8IGl0ZW1SZWN0LmlzTnVsbCgpIHx8ICFpdGVt KCktPndpbmRvdygpIHx8ICFpdGVtKCktPndpbmRvdygpLT5pc1Zpc2libGUoKSB8fCFpdGVtKCkt PmlzVmlzaWJsZSgpIHx8IHFGdXp6eUlzTnVsbChpdGVtKCktPm9wYWNpdHkoKSkpCisrICAgIGlm ICh2aWV3UmVjdF8uaXNOdWxsKCkgfHwgaXRlbVJlY3QuaXNOdWxsKCkgfHwgIXdpbmRvdygpIHx8 ICF3aW5kb3coKS0+aXNWaXNpYmxlKCkgfHwhaXRlbSgpLT5pc1Zpc2libGUoKSB8fCBxRnV6enlJ c051bGwoaXRlbSgpLT5vcGFjaXR5KCkpKQorICAgICAgICAgc3RhdGUuaW52aXNpYmxlID0gdHJ1 ZTsKKyAgICAgaWYgKCF2aWV3UmVjdF8uaW50ZXJzZWN0cyhpdGVtUmVjdCkpCisgICAgICAgICBz dGF0ZS5vZmZzY3JlZW4gPSB0cnVlOworQEAgLTIwMSw2ICsyMTAsMTAgQEAgUUFjY2Vzc2libGU6 OlN0YXRlIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpzdGF0ZSgpIGNvbnN0CisgICAgIGlmIChyb2xl KCkgPT0gUUFjY2Vzc2libGU6OkVkaXRhYmxlVGV4dCkKKyAgICAgICAgIGlmIChhdXRvIHRpID0g cW9iamVjdF9jYXN0PFFRdWlja1RleHRJbnB1dCAqPihpdGVtKCkpKQorICAgICAgICAgICAgIHN0 YXRlLnBhc3N3b3JkRWRpdCA9IHRpLT5lY2hvTW9kZSgpICE9IFFRdWlja1RleHRJbnB1dDo6Tm9y bWFsOworKyAgICBpZiAoIWl0ZW0oKS0+aXNFbmFibGVkKCkpIHsKKysgICAgICAgIHN0YXRlLmZv Y3VzYWJsZSA9IGZhbHNlOworKyAgICAgICAgc3RhdGUuZGlzYWJsZWQgPSB0cnVlOworKyAgICB9 CisgICAgIHJldHVybiBzdGF0ZTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmggYi9xdGRlY2xhcmF0 aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3AuaAoraW5kZXgg MzlmZmNhZjM5Yy4uOGJhYTAxMzMwYyAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oCisrKysgYi9xdGRlY2xhcmF0 aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3AuaAorQEAgLTU4 LDcgKzU4LDcgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgI2lmIFFUX0NPTkZJRyhhY2Nlc3Np YmlsaXR5KQorIAorLWNsYXNzIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cgOiBwdWJsaWMgUUFjY2Vz c2libGVPYmplY3QKKytjbGFzcyBRX1FVSUNLX0VYUE9SVCBRQWNjZXNzaWJsZVF1aWNrV2luZG93 IDogcHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0CisgeworIHB1YmxpYzoKKyAgICAgUUFjY2Vzc2li bGVRdWlja1dpbmRvdyhRUXVpY2tXaW5kb3cgKm9iamVjdCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAgYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcAoraW5kZXggODMyMWZjZmVlZC4uMzgzMDc4YjNi OSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2RyYWcu Y3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcAor QEAgLTQ4MSw3ICs0ODEsOSBAQCB2b2lkIFFRdWlja0RyYWdBdHRhY2hlZDo6c2V0S2V5cyhjb25z dCBRU3RyaW5nTGlzdCAma2V5cykKKyAgICAgXHFtbGF0dGFjaGVkcHJvcGVydHkgc3RyaW5nbGlz dCBRdFF1aWNrOjpEcmFnOjptaW1lRGF0YQorICAgICBcc2luY2UgNS4yCisgCistICAgIFRoaXMg cHJvcGVydHkgaG9sZHMgYSBtYXAgb2YgbWltZURhdGEgdGhhdCBpcyB1c2VkIGR1cmluZyBzdGFy dERyYWcuCisrICAgIFRoaXMgcHJvcGVydHkgaG9sZHMgYSBtYXAgZnJvbSBtaW1lIHR5cGUgdG8g ZGF0YSB0aGF0IGlzIHVzZWQgZHVyaW5nIHN0YXJ0RHJhZy4KKysgICAgVGhlIG1pbWUgZGF0YSBu ZWVkcyB0byBiZSBhIFxjIHN0cmluZywgb3IgYW4gXGMgQXJyYXlCdWZmZXIgd2l0aCB0aGUgZGF0 YSBlbmNvZGVkCisrICAgIGFjY29yZGluZyB0byB0aGUgbWltZSB0eXBlLgorICovCisgCisgUVZh cmlhbnRNYXAgUVF1aWNrRHJhZ0F0dGFjaGVkOjptaW1lRGF0YSgpIGNvbnN0CitAQCAtNzY2LDgg Kzc2OCwxMiBAQCBRdDo6RHJvcEFjdGlvbiBRUXVpY2tEcmFnQXR0YWNoZWRQcml2YXRlOjpzdGFy dERyYWcoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdAorICAgICBRRHJhZyAqZHJhZyA9IG5l dyBRRHJhZyhzb3VyY2UgPyBzb3VyY2UgOiBxKTsKKyAgICAgUU1pbWVEYXRhICptaW1lRGF0YSA9 IG5ldyBRTWltZURhdGEoKTsKKyAKKy0gICAgZm9yIChhdXRvIGl0ID0gZXh0ZXJuYWxNaW1lRGF0 YS5jYmVnaW4oKSwgZW5kID0gZXh0ZXJuYWxNaW1lRGF0YS5jZW5kKCk7IGl0ICE9IGVuZDsgKytp dCkKKy0gICAgICAgIG1pbWVEYXRhLT5zZXREYXRhKGl0LmtleSgpLCBpdC52YWx1ZSgpLnRvU3Ry aW5nKCkudG9VdGY4KCkpOworKyAgICBmb3IgKGF1dG8gaXQgPSBleHRlcm5hbE1pbWVEYXRhLmNi ZWdpbigpLCBlbmQgPSBleHRlcm5hbE1pbWVEYXRhLmNlbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7 CisrICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8UU1ldGFUeXBlOjpUeXBlPihpdC52YWx1ZSgpLnR5 cGUoKSkgPT0gUU1ldGFUeXBlOjpRQnl0ZUFycmF5KQorKyAgICAgICAgICAgIG1pbWVEYXRhLT5z ZXREYXRhKGl0LmtleSgpLCBpdC52YWx1ZSgpLnRvQnl0ZUFycmF5KCkpOworKyAgICAgICAgZWxz ZQorKyAgICAgICAgICAgIG1pbWVEYXRhLT5zZXREYXRhKGl0LmtleSgpLCBpdC52YWx1ZSgpLnRv U3RyaW5nKCkudG9VdGY4KCkpOworKyAgICB9CisgCisgICAgIGRyYWctPnNldE1pbWVEYXRhKG1p bWVEYXRhKTsKKyAgICAgaWYgKHBpeG1hcExvYWRlci5pc1JlYWR5KCkpIHsKK2RpZmYgLS1naXQg YS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtLmNwcCBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwCitpbmRleCA3NWYxNDU3ODE2Li5k ZWMwYWUxOWFlIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1 aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0 ZW0uY3BwCitAQCAtNTksNiArNTksNyBAQAorICNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xbnVt ZXJpY19wLmg+CisgI2luY2x1ZGUgPFF0R3VpL3FwYS9xcGxhdGZvcm10aGVtZS5oPgorICNpbmNs dWRlIDxRdENvcmUvcWxvZ2dpbmdjYXRlZ29yeS5oPgorKyNpbmNsdWRlIDxRdENvcmUvcHJpdmF0 ZS9xZHVwbGljYXRldHJhY2tlcl9wLmg+CisgCisgI2luY2x1ZGUgPHByaXZhdGUvcXFtbGdsb2Jh bF9wLmg+CisgI2luY2x1ZGUgPHByaXZhdGUvcXFtbGVuZ2luZV9wLmg+CitAQCAtMjMyNiw2ICsy MzI3LDcgQEAgUVF1aWNrSXRlbTo6UVF1aWNrSXRlbShRUXVpY2tJdGVtUHJpdmF0ZSAmZGQsIFFR dWlja0l0ZW0gKnBhcmVudCkKKyBRUXVpY2tJdGVtOjp+UVF1aWNrSXRlbSgpCisgeworICAgICBR X0QoUVF1aWNrSXRlbSk7CisrICAgIGQtPmluRGVzdHJ1Y3RvciA9IHRydWU7CisgCisgICAgIGlm IChkLT53aW5kb3dSZWZDb3VudCA+IDEpCisgICAgICAgICBkLT53aW5kb3dSZWZDb3VudCA9IDE7 IC8vIE1ha2Ugc3VyZSB3aW5kb3cgaXMgc2V0IHRvIG51bGwgaW4gbmV4dCBjYWxsIHRvIGRlcmVm V2luZG93KCkuCitAQCAtMjUyNiw2ICsyNTI4LDcgQEAgUVF1aWNrSXRlbSogUVF1aWNrSXRlbVBy aXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbihRUXVpY2tJdGVtICppdGVtLCBib28K KyAgICAgUVF1aWNrSXRlbSAqY3VycmVudCA9IGl0ZW07CisgICAgIHFDRGVidWcoREJHX0ZPQ1VT KSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogc3Rh cnRJdGVtOiIgPDwgc3RhcnRJdGVtOworICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlj a0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IGZpcnN0RnJvbUl0ZW06 IiA8PCBmaXJzdEZyb21JdGVtOworKyAgICBRRHVwbGljYXRlVHJhY2tlcjxRUXVpY2tJdGVtICo+ IGN5Y2xlRGV0ZWN0b3I7CisgICAgIGRvIHsKKyAgICAgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8 PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogY3VycmVu dDoiIDw8IGN1cnJlbnQ7CisgICAgICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0 ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IGZyb206IiA8PCBmcm9tOwor QEAgLTI1OTIsNyArMjU5NSwxMCBAQCBRUXVpY2tJdGVtKiBRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4 dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluKFFRdWlja0l0ZW0gKml0ZW0sIGJvbworICAgICAgICAg Ly8gdHJhdmVyc2VkIGFsbCBvZiB0aGUgY2hhaW4gKGJ5IGNvbXBhcmUgdGhlIFtjdXJyZW50XSBp dGVtIHdpdGggW3N0YXJ0SXRlbV0pCisgICAgICAgICAvLyBTaW5jZSB0aGUgW3N0YXJ0SXRlbV0g bWlnaHQgYmUgcHJvbW90ZWQgdG8gaXRzIHBhcmVudCBpZiBpdCBpcyBpbnZpc2libGUsCisgICAg ICAgICAvLyB3ZSBzdGlsbCBoYXZlIHRvIGNoZWNrIFtjdXJyZW50XSBpdGVtIHdpdGggb3JpZ2lu YWwgc3RhcnQgaXRlbQorLSAgICAgICAgaWYgKChjdXJyZW50ID09IHN0YXJ0SXRlbSB8fCBjdXJy ZW50ID09IG9yaWdpbmFsU3RhcnRJdGVtKSAmJiBmcm9tID09IGZpcnN0RnJvbUl0ZW0pIHsKKysg ICAgICAgIC8vIFdlIG1pZ2h0IGFsc28gcnVuIGludG8gYSBjeWNsZSBiZWZvcmUgd2UgcmVhY2gg Zmlyc3RGcm9tSXRlbSBhZ2FpbgorKyAgICAgICAgLy8gYnV0IG5vdGUgdGhhdCB3ZSBoYXZlIHRv IGlnbm9yZSBjdXJyZW50IGlmIHdlIGFyZSBtZWFudCB0byBza2lwIGl0CisrICAgICAgICBpZiAo KChjdXJyZW50ID09IHN0YXJ0SXRlbSB8fCBjdXJyZW50ID09IG9yaWdpbmFsU3RhcnRJdGVtKSAm JiBmcm9tID09IGZpcnN0RnJvbUl0ZW0pIHx8CisrICAgICAgICAgICAgICAgICghc2tpcCAmJiBj eWNsZURldGVjdG9yLmhhc1NlZW4oY3VycmVudCkpKSB7CisgICAgICAgICAgICAgLy8gd3JhcHBl ZCBhcm91bmQsIGF2b2lkIGVuZGxlc3MgbG9vcHMKKyAgICAgICAgICAgICBpZiAoaXRlbSA9PSBj b250ZW50SXRlbSkgeworICAgICAgICAgICAgICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFR dWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IGxvb3BlZCwgcmV0 dXJuIGNvbnRlbnRJdGVtIjsKK0BAIC0yNjg5LDkgKzI2OTUsOCBAQCB2b2lkIFFRdWlja0l0ZW06 OnNldFBhcmVudEl0ZW0oUVF1aWNrSXRlbSAqcGFyZW50SXRlbSkKKyAKKyAgICAgICAgIGNvbnN0 IGJvb2wgd2FzVmlzaWJsZSA9IGlzVmlzaWJsZSgpOworICAgICAgICAgb3AtPnJlbW92ZUNoaWxk KHRoaXMpOworLSAgICAgICAgaWYgKHdhc1Zpc2libGUpIHsKKysgICAgICAgIGlmICh3YXNWaXNp YmxlICYmICFvcC0+aW5EZXN0cnVjdG9yKQorICAgICAgICAgICAgIGVtaXQgb2xkUGFyZW50SXRl bS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworLSAgICAgICAgfQorICAgICB9IGVsc2UgaWYg KGQtPndpbmRvdykgeworICAgICAgICAgUVF1aWNrV2luZG93UHJpdmF0ZTo6Z2V0KGQtPndpbmRv dyktPnBhcmVudGxlc3NJdGVtcy5yZW1vdmUodGhpcyk7CisgICAgIH0KK0BAIC0yNzY4LDggKzI3 NzMsOSBAQCB2b2lkIFFRdWlja0l0ZW06OnNldFBhcmVudEl0ZW0oUVF1aWNrSXRlbSAqcGFyZW50 SXRlbSkKKyAKKyAgICAgZC0+aXRlbUNoYW5nZShJdGVtUGFyZW50SGFzQ2hhbmdlZCwgZC0+cGFy ZW50SXRlbSk7CisgCistICAgIGVtaXQgcGFyZW50Q2hhbmdlZChkLT5wYXJlbnRJdGVtKTsKKy0g ICAgaWYgKGlzVmlzaWJsZSgpICYmIGQtPnBhcmVudEl0ZW0pCisrICAgIGlmICghZC0+aW5EZXN0 cnVjdG9yKQorKyAgICAgICAgZW1pdCBwYXJlbnRDaGFuZ2VkKGQtPnBhcmVudEl0ZW0pOworKyAg ICBpZiAoaXNWaXNpYmxlKCkgJiYgZC0+cGFyZW50SXRlbSAmJiAhUVF1aWNrSXRlbVByaXZhdGU6 OmdldChkLT5wYXJlbnRJdGVtKS0+aW5EZXN0cnVjdG9yKQorICAgICAgICAgZW1pdCBkLT5wYXJl bnRJdGVtLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisgfQorIAorQEAgLTI5NjUsNyArMjk3 MSw4IEBAIHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6OnJlbW92ZUNoaWxkKFFRdWlja0l0ZW0gKmNo aWxkKQorIAorICAgICBpdGVtQ2hhbmdlKFFRdWlja0l0ZW06Okl0ZW1DaGlsZFJlbW92ZWRDaGFu Z2UsIGNoaWxkKTsKKyAKKy0gICAgZW1pdCBxLT5jaGlsZHJlbkNoYW5nZWQoKTsKKysgICAgaWYg KCFpbkRlc3RydWN0b3IpCisrICAgICAgICBlbWl0IHEtPmNoaWxkcmVuQ2hhbmdlZCgpOworIH0K KyAKKyB2b2lkIFFRdWlja0l0ZW1Qcml2YXRlOjpyZWZXaW5kb3coUVF1aWNrV2luZG93ICpjKQor QEAgLTMxOTQsNiArMzIwMSw3IEBAIFFRdWlja0l0ZW1Qcml2YXRlOjpRUXVpY2tJdGVtUHJpdmF0 ZSgpCisgICAgICwgdG91Y2hFbmFibGVkKGZhbHNlKQorICNlbmRpZgorICAgICAsIGhhc0N1cnNv ckhhbmRsZXIoZmFsc2UpCisrICAgICwgaW5EZXN0cnVjdG9yKGZhbHNlKQorICAgICAsIGRpcnR5 QXR0cmlidXRlcygwKQorICAgICAsIG5leHREaXJ0eUl0ZW0obnVsbHB0cikKKyAgICAgLCBwcmV2 RGlydHlJdGVtKG51bGxwdHIpCitAQCAtNTEyMCw2ICs1MTI4LDEzIEBAIHZvaWQgUVF1aWNrSXRl bTo6Y29tcG9uZW50Q29tcGxldGUoKQorICAgICAgICAgZC0+YWRkVG9EaXJ0eUxpc3QoKTsKKyAg ICAgICAgIFFRdWlja1dpbmRvd1ByaXZhdGU6OmdldChkLT53aW5kb3cpLT5kaXJ0eUl0ZW0odGhp cyk7CisgICAgIH0KKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrICAgIGlmIChk LT5pc0FjY2Vzc2libGUgJiYgZC0+ZWZmZWN0aXZlVmlzaWJsZSkgeworKyAgICAgICAgUUFjY2Vz c2libGVFdmVudCBldih0aGlzLCBRQWNjZXNzaWJsZTo6T2JqZWN0U2hvdyk7CisrICAgICAgICBR QWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0eSgmZXYpOworKyAgICB9CisrI2VuZGlmCisg fQorIAorIFFRdWlja1N0YXRlR3JvdXAgKlFRdWlja0l0ZW1Qcml2YXRlOjpfc3RhdGVzKCkKK0BA IC02MTA2LDkgKzYxMjEsMTEgQEAgYm9vbCBRUXVpY2tJdGVtUHJpdmF0ZTo6c2V0RWZmZWN0aXZl VmlzaWJsZVJlY3VyKGJvb2wgbmV3RWZmZWN0aXZlVmlzaWJsZSkKKyAgICAgICAgIFFBY2Nlc3Np YmxlOjp1cGRhdGVBY2Nlc3NpYmlsaXR5KCZldik7CisgICAgIH0KKyAjZW5kaWYKKy0gICAgZW1p dCBxLT52aXNpYmxlQ2hhbmdlZCgpOworLSAgICBpZiAoY2hpbGRWaXNpYmlsaXR5Q2hhbmdlZCkK Ky0gICAgICAgIGVtaXQgcS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworKyAgICBpZiAoIWlu RGVzdHJ1Y3RvcikgeworKyAgICAgICAgZW1pdCBxLT52aXNpYmxlQ2hhbmdlZCgpOworKyAgICAg ICAgaWYgKGNoaWxkVmlzaWJpbGl0eUNoYW5nZWQpCisrICAgICAgICAgICAgZW1pdCBxLT52aXNp YmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisrICAgIH0KKyAKKyAgICAgcmV0dXJuIHRydWU7ICAgIC8v IGVmZmVjdGl2ZSB2aXNpYmlsaXR5IERJRCBjaGFuZ2UKKyB9CitAQCAtNjE1Nyw2ICs2MTc0LDE1 IEBAIHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6OnNldEVmZmVjdGl2ZUVuYWJsZVJlY3VyKFFRdWlj a0l0ZW0gKnNjb3BlLCBib29sIG5ld0VmZmVjCisgICAgIH0KKyAKKyAgICAgaXRlbUNoYW5nZShR UXVpY2tJdGVtOjpJdGVtRW5hYmxlZEhhc0NoYW5nZWQsIGVmZmVjdGl2ZUVuYWJsZSk7CisrI2lm IFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKyAgICBpZiAoaXNBY2Nlc3NpYmxlKSB7CisrICAg ICAgICBRQWNjZXNzaWJsZTo6U3RhdGUgY2hhbmdlZFN0YXRlOworKyAgICAgICAgY2hhbmdlZFN0 YXRlLmRpc2FibGVkID0gdHJ1ZTsKKysgICAgICAgIGNoYW5nZWRTdGF0ZS5mb2N1c2FibGUgPSB0 cnVlOworKyAgICAgICAgUUFjY2Vzc2libGVTdGF0ZUNoYW5nZUV2ZW50IGV2KHEsIGNoYW5nZWRT dGF0ZSk7CisrICAgICAgICBRQWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0eSgmZXYpOwor KyAgICB9CisrI2VuZGlmCisgICAgIGVtaXQgcS0+ZW5hYmxlZENoYW5nZWQoKTsKKyB9CisgCitk aWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbV9wLmgg Yi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaAoraW5kZXggODQx ZDkxYmI0MC4uYWRlOGZiNjFmMiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L2l0ZW1zL3FxdWlja2l0ZW1fcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVt cy9xcXVpY2tpdGVtX3AuaAorQEAgLTQ3Miw2ICs0NzIsNyBAQCBwdWJsaWM6CisgICAgIGJvb2wg cmVwbGF5aW5nUHJlc3NFdmVudDoxOworICAgICBib29sIHRvdWNoRW5hYmxlZDoxOworICAgICBi b29sIGhhc0N1cnNvckhhbmRsZXI6MTsKKysgICAgcXVpbnQzMiBpbkRlc3RydWN0b3I6MTsgLy8g aGFzIGVudGVyZWQgflFRdWlja0l0ZW0KKyAKKyAgICAgZW51bSBEaXJ0eVR5cGUgeworICAgICAg ICAgVHJhbnNmb3JtT3JpZ2luICAgICAgICAgPSAweDAwMDAwMDAxLAorZGlmZiAtLWdpdCBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcCBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcAoraW5kZXggMDEwYTAxNTJl MS4uZjhhZDE2OGExNyAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1z L3FxdWlja2l0ZW12aWV3LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMv cXF1aWNraXRlbXZpZXcuY3BwCitAQCAtMTc4NSw3ICsxNzg1LDcgQEAgdm9pZCBRUXVpY2tJdGVt Vmlld1ByaXZhdGU6OnJlZmlsbChxcmVhbCBmcm9tLCBxcmVhbCB0bykKKyAKKyAgICAgZG8gewor ICAgICAgICAgYnVmZmVyUGF1c2Uuc3RvcCgpOworLSAgICAgICAgaWYgKGN1cnJlbnRDaGFuZ2Vz Lmhhc1BlbmRpbmdDaGFuZ2VzKCkgfHwgYnVmZmVyZWRDaGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2Vz KCkpIHsKKysgICAgICAgIGlmIChjdXJyZW50Q2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpIHx8 IGJ1ZmZlcmVkQ2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpIHx8IGN1cnJlbnRDaGFuZ2VzLmFj dGl2ZSkgeworICAgICAgICAgICAgIGN1cnJlbnRDaGFuZ2VzLnJlc2V0KCk7CisgICAgICAgICAg ICAgYnVmZmVyZWRDaGFuZ2VzLnJlc2V0KCk7CisgICAgICAgICAgICAgcmVsZWFzZVZpc2libGVJ dGVtcyhyZXVzYWJsZUZsYWcpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0 ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaAoraW5kZXggZmJhMzgzZTI2OC4uMGQ2MzYxODYyMiAx MDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJl YV9wX3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrbW91c2Vh cmVhX3BfcC5oCitAQCAtNjEsNyArNjEsNiBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFz cyBRUXVpY2tNb3VzZUV2ZW50OworIGNsYXNzIFFRdWlja01vdXNlQXJlYTsKKy1jbGFzcyBRUXVp Y2tQb2ludGVyTWFzazsKKyBjbGFzcyBRUXVpY2tNb3VzZUFyZWFQcml2YXRlIDogcHVibGljIFFR dWlja0l0ZW1Qcml2YXRlCisgeworICAgICBRX0RFQ0xBUkVfUFVCTElDKFFRdWlja01vdXNlQXJl YSkKK0BAIC0xMDAsNyArOTksNiBAQCBwdWJsaWM6CisgI2lmIFFUX0NPTkZJRyhxdWlja19kcmFn YW5kZHJvcCkKKyAgICAgUVF1aWNrRHJhZyAqZHJhZzsKKyAjZW5kaWYKKy0gICAgUVBvaW50ZXI8 UVF1aWNrUG9pbnRlck1hc2s+IG1hc2s7CisgICAgIFFQb2ludEYgc3RhcnRTY2VuZTsKKyAgICAg UVBvaW50RiB0YXJnZXRTdGFydFBvczsKKyAgICAgUVBvaW50RiBsYXN0UG9zOworZGlmZiAtLWdp dCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja3RleHQuY3BwIGIvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAKK2luZGV4IDYyMzAxODY5MzMu LmU4MjNjYTEwOTUgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9x cXVpY2t0ZXh0LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNr dGV4dC5jcHAKK0BAIC0yMTY4LDcgKzIxNjgsNyBAQCB2b2lkIFFRdWlja1RleHQ6OnJlc2V0TWF4 aW11bUxpbmVDb3VudCgpCisgICAgIDxpbWcgc3JjPSIiIGFsaWduPSJ0b3AsbWlkZGxlLGJvdHRv bSIgd2lkdGg9IiIgaGVpZ2h0PSIiPiAtIGlubGluZSBpbWFnZXMKKyAgICAgPG9sIHR5cGU9IiI+ LCA8dWwgdHlwZT0iIj4gYW5kIDxsaT4gLSBvcmRlcmVkIGFuZCB1bm9yZGVyZWQgbGlzdHMKKyAg ICAgPHByZT48L3ByZT4gLSBwcmVmb3JtYXR0ZWQKKy0gICAgJmd0OyAmbHQ7ICZhbXA7CisrICAg ICZndDsgJmx0OyAmYW1wOyAmcXVvdDsgJm5ic3A7ICZhcG9zOworICAgICBcZW5kY29kZQorIAor ICAgICBcYyBUZXh0LlN0eWxlZFRleHQgcGFyc2VyIGlzIHN0cmljdCwgcmVxdWlyaW5nIHRhZ3Mg dG8gYmUgY29ycmVjdGx5IG5lc3RlZC4KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9x dWljay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcCBiL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2Fj aGUuY3BwCitpbmRleCBlYjRkYjBmODVlLi4yMzI1YTI2NjViIDEwMDY0NAorLS0tIGEvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxkZ2x5cGhjYWNo ZS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhpZGlz dGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwCitAQCAtNDQ2LDcgKzQ0Niw3IEBAIGJvb2wgUVNHUmhp RGlzdGFuY2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0ZWRDYWNoZShjb25zdCBRUmF3 Rm9udCAmZm9udCkKKyAKKyAgICAgICAgIGNvbnN0IGNoYXIgKnRleHR1cmVSZWNvcmQgPSBhbGxv Y2F0b3JEYXRhOworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXh0dXJlQ291bnQ7ICsr aSwgdGV4dHVyZVJlY29yZCArPSBRdGRmOjpUZXh0dXJlUmVjb3JkU2l6ZSkgeworLSAgICAgICAg ICAgIGlmICh0ZXh0dXJlUmVjb3JkICsgUXRkZjo6VGV4dHVyZVJlY29yZFNpemUgPiBxdGRmVGFi bGVFbmQpIHsKKysgICAgICAgICAgICBpZiAocXRkZlRhYmxlRW5kIC0gdGV4dHVyZVJlY29yZCA8 IFF0ZGY6OlRleHR1cmVSZWNvcmRTaXplKSB7CisgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJx dGRmIHRhYmxlIHRvbyBzbWFsbCBpbiBmb250ICclcycuIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgcVByaW50YWJsZShmb250LmZhbWlseU5hbWUoKSkpOworICAgICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7CitAQCAtNDYyLDcgKzQ2Miw3IEBAIGJvb2wgUVNHUmhpRGlzdGFuY2VGaWVs ZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0ZWRDYWNoZShjb25zdCBRUmF3Rm9udCAmZm9udCkK KyAKKyAgICAgICAgIGNvbnN0IGNoYXIgKmdseXBoUmVjb3JkID0gdGV4dHVyZVJlY29yZDsKKyAg ICAgICAgIGZvciAocXVpbnQzMiBpID0gMDsgaSA8IGdseXBoQ291bnQ7ICsraSwgZ2x5cGhSZWNv cmQgKz0gUXRkZjo6R2x5cGhSZWNvcmRTaXplKSB7CistICAgICAgICAgICAgaWYgKGdseXBoUmVj b3JkICsgUXRkZjo6R2x5cGhSZWNvcmRTaXplID4gcXRkZlRhYmxlRW5kKSB7CisrICAgICAgICAg ICAgaWYgKHF0ZGZUYWJsZUVuZCAtIGdseXBoUmVjb3JkIDwgUXRkZjo6IEdseXBoUmVjb3JkU2l6 ZSkgeworICAgICAgICAgICAgICAgICBxV2FybmluZygicXRkZiB0YWJsZSB0b28gc21hbGwgaW4g Zm9udCAnJXMnLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFibGUoZm9udC5m YW1pbHlOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTUxMiw4 ICs1MTIsOCBAQCBib29sIFFTR1JoaURpc3RhbmNlRmllbGRHbHlwaENhY2hlOjpsb2FkUHJlZ2Vu ZXJhdGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQgJmZvbnQpCisgCisgICAgICAgICAgICAgaW50IHdp ZHRoID0gdGV4SW5mby0+YWxsb2NhdGVkQXJlYS53aWR0aCgpOworICAgICAgICAgICAgIGludCBo ZWlnaHQgPSB0ZXhJbmZvLT5hbGxvY2F0ZWRBcmVhLmhlaWdodCgpOworLSAgICAgICAgICAgIHFp bnQ2NCBzaXplID0gd2lkdGggKiBoZWlnaHQ7CistICAgICAgICAgICAgaWYgKHJlaW50ZXJwcmV0 X2Nhc3Q8Y29uc3QgY2hhciAqPih0ZXh0dXJlRGF0YSArIHNpemUpID4gcXRkZlRhYmxlRW5kKSB7 CisrICAgICAgICAgICAgcWludDY0IHNpemUgPSBxaW50NjQod2lkdGgpICogaGVpZ2h0OworKyAg ICAgICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIg Kj4odGV4dHVyZURhdGEpIDwgc2l6ZSkgeworICAgICAgICAgICAgICAgICBxV2FybmluZygicXRk ZiB0YWJsZSB0b28gc21hbGwgaW4gZm9udCAnJXMnLiIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHFQcmludGFibGUoZm9udC5mYW1pbHlOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwvcXF1 aWNrc3R5bGVkdGV4dC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay91dGlsL3FxdWlja3N0 eWxlZHRleHQuY3BwCitpbmRleCBkNTMxZmM5MjA1Li5hMjVhZjkwNDE0IDEwMDY0NAorLS0tIGEv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNwcAorKysrIGIv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNwcAorQEAgLTU2 NCw2ICs1NjQsOCBAQCB2b2lkIFFRdWlja1N0eWxlZFRleHRQcml2YXRlOjpwYXJzZUVudGl0eShj b25zdCBRQ2hhciAqJmNoLCBjb25zdCBRU3RyaW5nICZ0ZXh0SQorICAgICAgICAgICAgICAgICB0 ZXh0T3V0ICs9IFFDaGFyKDYwKTsKKyAgICAgICAgICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxh dGluMVN0cmluZygiYW1wIikpCisgICAgICAgICAgICAgICAgIHRleHRPdXQgKz0gUUNoYXIoMzgp OworKyAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJhcG9zIikp CisrICAgICAgICAgICAgICAgIHRleHRPdXQgKz0gUUNoYXIoMzkpOworICAgICAgICAgICAgIGVs c2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJxdW90IikpCisgICAgICAgICAgICAgICAg IHRleHRPdXQgKz0gUUNoYXIoMzQpOworICAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBR TGF0aW4xU3RyaW5nKCJuYnNwIikpCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVp Y2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMDAwMC4uOGExYzkwMTg4MAorLS0tIC9kZXYvbnVsbAorKysrIGIv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3Bw CitAQCAtMCwwICsxLDExMCBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5 cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8v d3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBR dFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNF TlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhv bGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgor KyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92 aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRh bmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQg YmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiog YW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZv ciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6 Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNl ZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBG b3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRl ZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBm b2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6 IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBm aWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2Vu ZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBh cHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMg YXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5k IGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoq IGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRo ZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5n bnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgor KyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgInFhY2Nlc3NpYmxlcXVpY2t3aWRn ZXRfcC5oIgorKworKyNpbmNsdWRlICJxcXVpY2t3aWRnZXRfcC5oIgorKworK1FUX0JFR0lOX05B TUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysKKytRQWNjZXNzaWJs ZVF1aWNrV2lkZ2V0OjpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KFFRdWlja1dpZGdldCogd2lkZ2V0 KQorKzogUUFjY2Vzc2libGVXaWRnZXQod2lkZ2V0KQorKywgbV9hY2Nlc3NpYmxlV2luZG93KFFR dWlja1dpZGdldFByaXZhdGU6OmdldCh3aWRnZXQpLT5vZmZzY3JlZW5XaW5kb3cpCisreworKyAg ICAvLyBOT1RFOiBtX2FjY2Vzc2libGVXaW5kb3cgaXMgYSBRQWNjZXNzaWJsZVF1aWNrV2luZG93 LCBhbmQgbm90IGEKKysgICAgLy8gUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRv dyAoZGVmaW5lZCBiZWxvdykuIFRoaXMgbWVhbnMKKysgICAgLy8gaXQgd2lsbCByZXR1cm4gdGhl IFF1aWNrIGl0ZW0gY2hpbGQgaW50ZXJmYWNlcywgd2hpY2ggaXMgd2hhdCdzIG5lZWRlZCBoZXJl CisrICAgIC8vICh1bmxpa2UgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdywg d2hpY2ggd2lsbCByZXBvcnQgMCBjaGlsZHJlbikuCisrfQorKworK1FBY2Nlc3NpYmxlSW50ZXJm YWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpjaGlsZChpbnQgaW5kZXgpIGNvbnN0Cisrewor KyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmNoaWxkKGluZGV4KTsKKyt9CisrCisraW50 IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmNoaWxkQ291bnQoKSBjb25zdAorK3sKKysgICAgcmV0 dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5jaGlsZENvdW50KCk7CisrfQorKworK2ludCBRQWNjZXNz aWJsZVF1aWNrV2lkZ2V0OjppbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2Ug KmlmYWNlKSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5pbmRleE9m Q2hpbGQoaWZhY2UpOworK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVR dWlja1dpZGdldDo6Y2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0CisreworKyAgICByZXR1cm4g bV9hY2Nlc3NpYmxlV2luZG93LmNoaWxkQXQoeCwgeSk7CisrfQorKworK1FBY2Nlc3NpYmxlUXVp Y2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5X aW5kb3coUVF1aWNrV2luZG93ICp3aW5kb3cpCisrOlFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cod2lu ZG93KQorK3sKKysKKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVp Y2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmNoaWxkKGludCBpbmRleCkgY29uc3QKKyt7CisrICAg IFFfVU5VU0VEKGluZGV4KTsKKysgICAgcmV0dXJuIG51bGxwdHI7CisrfQorKworK2ludCBRQWNj ZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpjaGlsZENvdW50KCkgY29uc3QKKyt7 CisrICAgIHJldHVybiAwOworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNj cmVlbldpbmRvdzo6aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFj ZSkgY29uc3QKKyt7CisrICAgIFFfVU5VU0VEKGlmYWNlKTsKKysgICAgcmV0dXJuIC0xOworK30K KysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVl bldpbmRvdzo6UUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6Y2hpbGRBdChp bnQgeCwgaW50IHkpIGNvbnN0CisreworKyAgICBRX1VOVVNFRCh4KTsKKysgICAgUV9VTlVTRUQo eSk7CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKysjZW5kaWYgLy8gYWNjZXNzaWJpbGl0 eQorKworK1FUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9x dWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmggYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43YzJhYjkzMGUwCistLS0gL2Rldi9udWxsCisrKysg Yi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldF9w LmgKK0BAIC0wLDAgKzEsOTUgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoqCisrKiogQ29w eXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczov L3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg UXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElD RU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBo b2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4K KysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJv dmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3Jk YW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50 IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoq IGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBG b3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBz Oi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVz ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiog Rm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVk ZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUg Zm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdpbGwgYmUgbWV0 OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisrKioKKysqKiBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMg ZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoqIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdl bmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24g YXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2Vz IGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFu ZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKKysq KiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0 aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioK KysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworKworKyNpZm5kZWYgUUFDQ0VTU0lCTEVRVUlDS1dJREdF VF9ICisrI2RlZmluZSBRQUNDRVNTSUJMRVFVSUNLV0lER0VUX0gKKysKKysvLworKy8vICBXIEEg UiBOIEkgTiBHCisrLy8gIC0tLS0tLS0tLS0tLS0KKysvLworKy8vIFRoaXMgZmlsZSBpcyBub3Qg cGFydCBvZiB0aGUgUXQgQVBJLiAgSXQgZXhpc3RzIHB1cmVseSBhcyBhbgorKy8vIGltcGxlbWVu dGF0aW9uIGRldGFpbC4gIFRoaXMgaGVhZGVyIGZpbGUgbWF5IGNoYW5nZSBmcm9tIHZlcnNpb24g dG8KKysvLyB2ZXJzaW9uIHdpdGhvdXQgbm90aWNlLCBvciBldmVuIGJlIHJlbW92ZWQuCisrLy8K KysvLyBXZSBtZWFuIGl0LgorKy8vCisrCisrI2luY2x1ZGUgInFxdWlja3dpZGdldC5oIgorKyNp bmNsdWRlIDxRdFdpZGdldHMvcWFjY2Vzc2libGV3aWRnZXQuaD4KKysKKysjaW5jbHVkZSA8cHJp dmF0ZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmg+CisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisr CisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworKy8vIFRoZXNlIGNsYXNzZXMgaW1w bGVtZW50IHRoZSBRUXVpY2tXaWdldCBhY2Nlc3NpYmlsaXR5IHN3aXRjaGFyb28sCisrLy8gd2hl cmUgdGhlIGNoaWxkIGl0ZW1zIG9mIHRoZSBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3cgYXJl IHJlcG9ydGVkCisrLy8gYXMgY2hpbGQgYWNjZXNzaWJsZSBpbnRlcmZhY2VzIG9mIHRoZSBRQWNj ZXNzaWJsZVF1aWNrV2lkZ2V0LgorK2NsYXNzIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6IHB1Ymxp YyBRQWNjZXNzaWJsZVdpZGdldAorK3sKKytwdWJsaWM6CisrICAgIFFBY2Nlc3NpYmxlUXVpY2tX aWRnZXQoUVF1aWNrV2lkZ2V0KiB3aWRnZXQpOworKworKyAgICBRQWNjZXNzaWJsZUludGVyZmFj ZSAqY2hpbGQoaW50IGluZGV4KSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50IGNoaWxkQ291bnQo KSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50IGluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJs ZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0IG92ZXJyaWRlOworKyAgICBRQWNjZXNzaWJsZUludGVy ZmFjZSAqY2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0IG92ZXJyaWRlOworKworK3ByaXZhdGU6 CisrICAgIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cgbV9hY2Nlc3NpYmxlV2luZG93OworKyAgICBR X0RJU0FCTEVfQ09QWShRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KQorK307CisrCisrY2xhc3MgUUFj Y2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzogcHVibGljIFFBY2Nlc3NpYmxlUXVp Y2tXaW5kb3cKKyt7CisrcHVibGljOgorKyAgICBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2Ny ZWVuV2luZG93KFFRdWlja1dpbmRvdyAqd2luZG93KTsKKysgICAgUUFjY2Vzc2libGVJbnRlcmZh Y2UgKmNoaWxkKGludCBpbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBjaGlsZENvdW50 KCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBpbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2li bGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdCBvdmVycmlkZTsKKysgICAgUUFjY2Vzc2libGVJbnRl cmZhY2UgKmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdCBvdmVycmlkZTsKKyt9OworKworKyNl bmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisrUVRfRU5EX05BTUVTUEFDRQorKworKyNlbmRpZgor ZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1 aWNrd2lkZ2V0ZmFjdG9yeS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFj Y2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggMDAwMDAwMDAwMC4uN2JhODhhMTc2OQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5LmNwcAor QEAgLTAsMCArMSw2MCBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmln aHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3 LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1 aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNF OkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRp bmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoq IGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRl ZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNl IHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0 d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5k IGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBm dXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93 d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3Vu ZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBp biB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xs b3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0 dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxl IG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJh bAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHBy b3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFw cGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGlu Y2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBm b2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgInFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRm YWN0b3J5X3AuaCIKKysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgiCisrCisr UVRfQkVHSU5fTkFNRVNQQUNFCisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKwor K1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpxQWNjZXNzaWJsZVF1aWNrV2lkZ2V0RmFjdG9yeShjb25z dCBRU3RyaW5nICZjbGFzc25hbWUsIFFPYmplY3QgKm9iamVjdCkKKyt7CisrICAgIGlmIChjbGFz c25hbWUgPT0gUUxhdGluMVN0cmluZygiUVF1aWNrV2lkZ2V0IikpIHsKKysgICAgICAgIHJldHVy biBuZXcgUUFjY2Vzc2libGVRdWlja1dpZGdldChxb2JqZWN0X2Nhc3Q8UVF1aWNrV2lkZ2V0ICo+ KG9iamVjdCkpOworKyAgICB9IGVsc2UgaWYgKGNsYXNzbmFtZSA9PSBRTGF0aW4xU3RyaW5nKCJR UXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3ciKSkgeworKyAgICAgICAgcmV0dXJuIG5ldyBRQWNj ZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KHFvYmplY3RfY2FzdDxRUXVpY2tXaW5k b3cgKj4ob2JqZWN0KSk7CisrICAgIH0KKysgICAgcmV0dXJuIDA7CisrfQorKworKyNlbmRpZiAv LyBhY2Nlc3NpYmlsaXR5CisrCisrUVRfRU5EX05BTUVTUEFDRQorKworZGlmZiAtLWdpdCBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9y eV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dp ZGdldGZhY3RvcnlfcC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4u OGM2M2IwOWY4MQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3 aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaAorQEAgLTAsMCArMSw2NiBA QAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhl IFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2lu Zy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1aWNrIG1vZHVsZSBvZiB0 aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisrKiogQ29t bWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVy Y2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0 aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoq IFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1z IGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRo ZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2Vl IGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5m b3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFj dC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQor KyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBl YXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysqKiBwYWNr YWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRp b24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1YmxpYyBs aWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RF IEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUg ZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGluIHRoZSBw YWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBp bmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVp cmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dw bC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAu aHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisrCisrI2luY2x1ZGUgPFF0R3VpL3FhY2Nlc3NpYmxlLmg+CisrCisrI2lmbmRlZiBRQUND RVNTSUJMRVFVSUNLV0lER0VURkFDVE9SWV9ICisrI2RlZmluZSBRQUNDRVNTSUJMRVFVSUNLV0lE R0VURkFDVE9SWV9ICisrCisrLy8KKysvLyAgVyBBIFIgTiBJIE4gRworKy8vICAtLS0tLS0tLS0t LS0tCisrLy8KKysvLyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgdGhlIFF0IEFQSS4gIEl0IGV4 aXN0cyBwdXJlbHkgYXMgYW4KKysvLyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBUaGlzIGhlYWRl ciBmaWxlIG1heSBjaGFuZ2UgZnJvbSB2ZXJzaW9uIHRvCisrLy8gdmVyc2lvbiB3aXRob3V0IG5v dGljZSwgb3IgZXZlbiBiZSByZW1vdmVkLgorKy8vCisrLy8gV2UgbWVhbiBpdC4KKysvLworKwor K1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysK KytRQWNjZXNzaWJsZUludGVyZmFjZSAqcUFjY2Vzc2libGVRdWlja1dpZGdldEZhY3RvcnkoY29u c3QgUVN0cmluZyAmY2xhc3NuYW1lLCBRT2JqZWN0ICpvYmplY3QpOworKworKyNlbmRpZgorKwor K1FUX0VORF9OQU1FU1BBQ0UKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwCitpbmRleCAzOTc4MGY4ZGUzLi45Yzk3YjQzNTE4 IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdl dC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQu Y3BwCitAQCAtMzksNiArMzksNyBAQAorIAorICNpbmNsdWRlICJxcXVpY2t3aWRnZXQuaCIKKyAj aW5jbHVkZSAicXF1aWNrd2lkZ2V0X3AuaCIKKysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dp ZGdldGZhY3RvcnlfcC5oIgorIAorICNpbmNsdWRlICJwcml2YXRlL3FxdWlja3dpbmRvd19wLmgi CisgI2luY2x1ZGUgInByaXZhdGUvcXF1aWNraXRlbV9wLmgiCitAQCAtNzUsOSArNzYsMTYgQEAK KyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKytRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6 OlFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5kb3dQcml2YXRlICZkZCwgUVF1 aWNrUmVuZGVyQ29udHJvbCAqY29udHJvbCkKKys6UVF1aWNrV2luZG93KGRkLCBjb250cm9sKQor K3sKKysgICAgc2V0VGl0bGUoUVN0cmluZzo6ZnJvbUxhdGluMSgiT2Zmc2NyZWVuIikpOworKyAg ICBzZXRPYmplY3ROYW1lKFFTdHJpbmc6OmZyb21MYXRpbjEoIlFRdWlja09mZlNjcmVlbldpbmRv dyIpKTsKKyt9CisrCisgLy8gb3ZlcnJpZGUgc2V0VmlzYmxlIHRvIHByZXZlbnQgYWNjaWRlbnRh bCBvZmZzY3JlZW4gd2luZG93IGJlaW5nIGNyZWF0ZWQKKyAvLyBieSBiYXNlIGNsYXNzLgorLWNs YXNzIFFRdWlja09mZmNyZWVuV2luZG93UHJpdmF0ZTogcHVibGljIFFRdWlja1dpbmRvd1ByaXZh dGUgeworK2NsYXNzIFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvd1ByaXZhdGU6IHB1YmxpYyBR UXVpY2tXaW5kb3dQcml2YXRlIHsKKyBwdWJsaWM6CisgICAgIHZvaWQgc2V0VmlzaWJsZShib29s IHZpc2libGUpIG92ZXJyaWRlIHsKKyAgICAgICAgIFFfUShRV2luZG93KTsKK0BAIC0xMDUsOSAr MTEzLDggQEAgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRlOjppbml0KFFRbWxFbmdpbmUqIGUpCisg ICAgIFFfUShRUXVpY2tXaWRnZXQpOworIAorICAgICByZW5kZXJDb250cm9sID0gbmV3IFFRdWlj a1dpZGdldFJlbmRlckNvbnRyb2wocSk7CistICAgIG9mZnNjcmVlbldpbmRvdyA9IG5ldyBRUXVp Y2tXaW5kb3coKm5ldyBRUXVpY2tPZmZjcmVlbldpbmRvd1ByaXZhdGUoKSxyZW5kZXJDb250cm9s KTsKKy0gICAgb2Zmc2NyZWVuV2luZG93LT5zZXRUaXRsZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJP ZmZzY3JlZW4iKSk7CistICAgIG9mZnNjcmVlbldpbmRvdy0+c2V0T2JqZWN0TmFtZShRU3RyaW5n Ojpmcm9tTGF0aW4xKCJRUXVpY2tPZmZTY3JlZW5XaW5kb3ciKSk7CisrICAgIG9mZnNjcmVlbldp bmRvdyA9IG5ldyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coKm5ldyBRUXVpY2tXaWRnZXRP ZmZzY3JlZW5XaW5kb3dQcml2YXRlKCksIHJlbmRlckNvbnRyb2wpOworKyAgICBvZmZzY3JlZW5X aW5kb3ctPnNldFNjcmVlbihxLT5zY3JlZW4oKSk7CisgICAgIC8vIERvIG5vdCBjYWxsIGNyZWF0 ZSgpIG9uIG9mZnNjcmVlbldpbmRvdy4KKyAKKyAgICAgLy8gQ2hlY2sgaWYgdGhlIFNvZnR3YXJl IEFkYXB0YXRpb24gaXMgYmVpbmcgdXNlZAorQEAgLTEzOCw2ICsxNDUsMTAgQEAgdm9pZCBRUXVp Y2tXaWRnZXRQcml2YXRlOjppbml0KFFRbWxFbmdpbmUqIGUpCisgICAgIFFXaWRnZXQ6OmNvbm5l Y3Qob2Zmc2NyZWVuV2luZG93LCAmUVF1aWNrV2luZG93Ojpmb2N1c09iamVjdENoYW5nZWQsIHEs ICZRUXVpY2tXaWRnZXQ6OnByb3BhZ2F0ZUZvY3VzT2JqZWN0Q2hhbmdlZCk7CisgICAgIFFPYmpl Y3Q6OmNvbm5lY3QocmVuZGVyQ29udHJvbCwgU0lHTkFMKHJlbmRlclJlcXVlc3RlZCgpKSwgcSwg U0xPVCh0cmlnZ2VyVXBkYXRlKCkpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChyZW5kZXJDb250 cm9sLCBTSUdOQUwoc2NlbmVDaGFuZ2VkKCkpLCBxLCBTTE9UKHRyaWdnZXJVcGRhdGUoKSkpOwor KworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgUUFjY2Vzc2libGU6Omluc3Rh bGxGYWN0b3J5KCZxQWNjZXNzaWJsZVF1aWNrV2lkZ2V0RmFjdG9yeSk7CisrI2VuZGlmCisgfQor IAorIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6ZW5zdXJlRW5naW5lKCkgY29uc3QKK0BAIC05 MDEsOSArOTEyLDcgQEAgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRlOjpjcmVhdGVDb250ZXh0KCkK KyAKKyAgICAgICAgIGNvbnRleHQgPSBuZXcgUU9wZW5HTENvbnRleHQ7CisgICAgICAgICBjb250 ZXh0LT5zZXRGb3JtYXQob2Zmc2NyZWVuV2luZG93LT5yZXF1ZXN0ZWRGb3JtYXQoKSk7CistICAg ICAgICBjb25zdCBRV2luZG93ICp3aW4gPSBxLT53aW5kb3coKS0+d2luZG93SGFuZGxlKCk7Cist ICAgICAgICBpZiAod2luICYmIHdpbi0+c2NyZWVuKCkpCistICAgICAgICAgICAgY29udGV4dC0+ c2V0U2NyZWVuKHdpbi0+c2NyZWVuKCkpOworKyAgICAgICAgY29udGV4dC0+c2V0U2NyZWVuKHEt PnNjcmVlbigpKTsKKyAgICAgICAgIFFPcGVuR0xDb250ZXh0ICpzaGFyZUNvbnRleHQgPSBxdF9n bF9nbG9iYWxfc2hhcmVfY29udGV4dCgpOworICAgICAgICAgaWYgKCFzaGFyZUNvbnRleHQpCisg ICAgICAgICAgICAgc2hhcmVDb250ZXh0ID0gUVdpZGdldFByaXZhdGU6OmdldChxLT53aW5kb3co KSktPnNoYXJlQ29udGV4dCgpOworQEAgLTE1MjAsMTkgKzE1MjksMTYgQEAgYm9vbCBRUXVpY2tX aWRnZXQ6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgICAgIGQtPmhhbmRsZVdpbmRvd0NoYW5nZSgp OworICAgICAgICAgYnJlYWs7CisgCistICAgIGNhc2UgUUV2ZW50OjpTY3JlZW5DaGFuZ2VJbnRl cm5hbDoKKy0gICAgICAgIGlmIChRV2luZG93ICp3aW5kb3cgPSB0aGlzLT53aW5kb3coKS0+d2lu ZG93SGFuZGxlKCkpIHsKKy0gICAgICAgICAgICBRU2NyZWVuICpuZXdTY3JlZW4gPSB3aW5kb3ct PnNjcmVlbigpOworLQorLSAgICAgICAgICAgIGlmIChkLT5vZmZzY3JlZW5XaW5kb3cpCistICAg ICAgICAgICAgICAgIGQtPm9mZnNjcmVlbldpbmRvdy0+c2V0U2NyZWVuKG5ld1NjcmVlbik7Cist ICAgICAgICAgICAgaWYgKGQtPm9mZnNjcmVlblN1cmZhY2UpCistICAgICAgICAgICAgICAgIGQt Pm9mZnNjcmVlblN1cmZhY2UtPnNldFNjcmVlbihuZXdTY3JlZW4pOworKyAgICBjYXNlIFFFdmVu dDo6U2NyZWVuQ2hhbmdlSW50ZXJuYWw6IHsKKysgICAgICAgIFFTY3JlZW4gKm5ld1NjcmVlbiA9 IHNjcmVlbigpOworKyAgICAgICAgaWYgKGQtPm9mZnNjcmVlbldpbmRvdykKKysgICAgICAgICAg ICBkLT5vZmZzY3JlZW5XaW5kb3ctPnNldFNjcmVlbihuZXdTY3JlZW4pOworKyAgICAgICAgaWYg KGQtPm9mZnNjcmVlblN1cmZhY2UpCisrICAgICAgICAgICAgZC0+b2Zmc2NyZWVuU3VyZmFjZS0+ c2V0U2NyZWVuKG5ld1NjcmVlbik7CisgI2lmIFFUX0NPTkZJRyhvcGVuZ2wpCistICAgICAgICAg ICAgaWYgKGQtPmNvbnRleHQpCistICAgICAgICAgICAgICAgIGQtPmNvbnRleHQtPnNldFNjcmVl bihuZXdTY3JlZW4pOworKyAgICAgICAgaWYgKGQtPmNvbnRleHQpCisrICAgICAgICAgICAgZC0+ Y29udGV4dC0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisgI2VuZGlmCistICAgICAgICB9CisgCisg ICAgICAgICBpZiAoZC0+dXNlU29mdHdhcmVSZW5kZXJlcgorICNpZiBRVF9DT05GSUcob3Blbmds KQorQEAgLTE1NDUsNyArMTU1MSw3IEBAIGJvb2wgUVF1aWNrV2lkZ2V0OjpldmVudChRRXZlbnQg KmUpCisgICAgICAgICAgICAgZC0+cmVuZGVyKHRydWUpOworICAgICAgICAgfQorICAgICAgICAg YnJlYWs7CistCisrICAgIH0KKyAgICAgY2FzZSBRRXZlbnQ6OlNob3c6CisgICAgIGNhc2UgUUV2 ZW50OjpNb3ZlOgorICAgICAgICAgZC0+dXBkYXRlUG9zaXRpb24oKTsKK2RpZmYgLS1naXQgYS9x dGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0X3AuaCBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oCitpbmRleCA4ODFmN2Y5MjIw Li4xYTk0NmJjYzcxIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRz L3FxdWlja3dpZGdldF9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9x cXVpY2t3aWRnZXRfcC5oCitAQCAtMTQ4LDYgKzE0OCwxNCBAQCBwdWJsaWM6CisgICAgIGJvb2wg Zm9yY2VGdWxsVXBkYXRlOworIH07CisgCisrY2xhc3MgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2lu ZG93OiBwdWJsaWMgUVF1aWNrV2luZG93CisreworKyAgICBRX09CSkVDVAorKworK3B1YmxpYzoK KysgICAgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvd1ByaXZhdGUgJmRk LCBRUXVpY2tSZW5kZXJDb250cm9sICpjb250cm9sKTsKKyt9OworKworIFFUX0VORF9OQU1FU1BB Q0UKKyAKKyAjZW5kaWYgLy8gUVF1aWNrV2lkZ2V0X1BfSAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJvIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8KK2luZGV4IDI0MzhlNTc3YWUuLjg1ZDE1 NmI4YTMgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXVpY2t3 aWRnZXRzLnBybworKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lk Z2V0cy5wcm8KK0BAIC03LDkgKzcsMTMgQEAgREVGSU5FUyAgICs9IFFUX05PX1VSTF9DQVNUX0ZS T01fU1RSSU5HIFFUX05PX0lOVEVHRVJfRVZFTlRfQ09PUkRJTkFURVMgUVRfTk9fRk8KKyBIRUFE RVJTICs9IFwKKyAgICAgcXF1aWNrd2lkZ2V0LmggXAorICAgICBxcXVpY2t3aWRnZXRfcC5oIFwK Ky0gICAgcXRxdWlja3dpZGdldHNnbG9iYWwuaAorKyAgICBxdHF1aWNrd2lkZ2V0c2dsb2JhbC5o IFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmggXAorKyAgICBxYWNjZXNzaWJsZXF1 aWNrd2lkZ2V0ZmFjdG9yeV9wLmgKKyAKKyBTT1VSQ0VTICs9IFwKKy0gICAgcXF1aWNrd2lkZ2V0 LmNwcAorKyAgICBxcXVpY2t3aWRnZXQuY3BwIFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdl dC5jcHAgXAorKyAgICBxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeS5jcHAKKyAKKyBsb2Fk KHF0X21vZHVsZSkKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fq c2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwv cWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCitpbmRleCAzYjdkNzRkZjYzLi5iNzViZjgyMGQ1 IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0 X3Fqc2VuZ2luZS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcWpzZW5n aW5lL3RzdF9xanNlbmdpbmUuY3BwCitAQCAtMTAyLDYgKzEwMiw3IEBAIHByaXZhdGUgc2xvdHM6 CisgICAgIHZvaWQgdmFsdWVDb252ZXJzaW9uX1JlZ3VsYXJFeHByZXNzaW9uKCk7CisgICAgIHZv aWQgY2FzdFdpdGhNdWx0aXBsZUluaGVyaXRhbmNlKCk7CisgICAgIHZvaWQgY29sbGVjdEdhcmJh Z2UoKTsKKysgICAgdm9pZCBjb2xsZWN0R2FyYmFnZU5lc3RlZFdyYXBwZXJzVHdvRW5naW5lcygp OworICAgICB2b2lkIGdjV2l0aE5lc3RlZERhdGFTdHJ1Y3R1cmUoKTsKKyAgICAgdm9pZCBzdGFj a3RyYWNlKCk7CisgICAgIHZvaWQgbnVtYmVyUGFyc2luZ19kYXRhKCk7CitAQCAtMTgwOSw2ICsx ODEwLDQ0IEBAIHZvaWQgdHN0X1FKU0VuZ2luZTo6Y29sbGVjdEdhcmJhZ2UoKQorICAgICBRVkVS SUZZKHB0ci5pc051bGwoKSk7CisgfQorIAorK2NsYXNzIFRlc3RPYmplY3RDb250YWluZXIgOiBw dWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9PQkpFQ1QKKysgICAgUV9QUk9QRVJUWShRT2JqZWN0 ICpkdW1teSBNRU1CRVIgbV9kdW1teSBDT05TVEFOVCkKKysKKytwdWJsaWM6CisrICAgIFRlc3RP YmplY3RDb250YWluZXIoKSA6IG1fZHVtbXkobmV3IFFPYmplY3QodGhpcykpIHt9CisrCisrcHJp dmF0ZToKKysgICAgUU9iamVjdCAqbV9kdW1teTsKKyt9OworKworK3ZvaWQgdHN0X1FKU0VuZ2lu ZTo6Y29sbGVjdEdhcmJhZ2VOZXN0ZWRXcmFwcGVyc1R3b0VuZ2luZXMoKQorK3sKKysgICAgUUpT RW5naW5lIGVuZ2luZTE7CisrICAgIFFKU0VuZ2luZSBlbmdpbmUyOworKworKyAgICBUZXN0T2Jq ZWN0Q29udGFpbmVyIGNvbnRhaW5lcjsKKysgICAgUVFtbEVuZ2luZTo6c2V0T2JqZWN0T3duZXJz aGlwKCZjb250YWluZXIsIFFRbWxFbmdpbmU6OkNwcE93bmVyc2hpcCk7CisrCisrICAgIGVuZ2lu ZTEuZ2xvYmFsT2JqZWN0KCkuc2V0UHJvcGVydHkoImZvb2JhciIsIGVuZ2luZTEubmV3UU9iamVj dCgmY29udGFpbmVyKSk7CisrICAgIGVuZ2luZTIuZ2xvYmFsT2JqZWN0KCkuc2V0UHJvcGVydHko ImZvb2JhciIsIGVuZ2luZTIubmV3UU9iamVjdCgmY29udGFpbmVyKSk7CisrCisrICAgIGVuZ2lu ZTEuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXogPSA0MiIpOworKyAgICBlbmdpbmUyLmV2YWx1 YXRlKCJmb29iYXIuZHVtbXkuYmF6ID0gNDMiKTsKKysKKysgICAgUUNPTVBBUkUoZW5naW5lMS5l dmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRvSW50KCksIDQyKTsKKysgICAgUUNPTVBBUkUo ZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRvSW50KCksIDQzKTsKKysKKysg ICAgZW5naW5lMS5jb2xsZWN0R2FyYmFnZSgpOworKyAgICBlbmdpbmUyLmNvbGxlY3RHYXJiYWdl KCk7CisrCisrICAgIC8vIFRoZSBHQyBzaG91bGQgbm90IGNvbGxlY3QgZHVtbXkgb2JqZWN0IHdy YXBwZXJzIG5laXRoZXIgaW4gZW5naW5lMSBub3IgZW5naW5lMiwgd2UKKysgICAgLy8gdmVyaWZ5 IHRoYXQgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgYmF6IHByb3BlcnR5IHN0aWxsIGhhcyBpdHMg cHJldmlvdXMgdmFsdWUuCisrICAgIFFDT01QQVJFKGVuZ2luZTEuZXZhbHVhdGUoImZvb2Jhci5k dW1teS5iYXoiKS50b0ludCgpLCA0Mik7CisrICAgIFFDT01QQVJFKGVuZ2luZTIuZXZhbHVhdGUo ImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0Myk7CisrfQorKworIHZvaWQgdHN0X1FKU0Vu Z2luZTo6Z2NXaXRoTmVzdGVkRGF0YVN0cnVjdHVyZSgpCisgeworICAgICAvLyBUaGUgR0MgbXVz dCBiZSBhYmxlIHRvIHRyYXZlcnNlIGRlZXBseSBuZXN0ZWQgb2JqZWN0cywgb3RoZXJ3aXNlIHRo aXMKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0 ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwgYi9xdGRlY2xhcmF0aXZlL3Rl c3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNoYW5n ZS5xbWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yMDYxMzNiYjM5 CistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxk ZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwKK0BAIC0wLDAgKzEs MTEgQEAKKytpbXBvcnQgUXRRdWljayAyLjgKKysKKytMaXN0VmlldyB7CisrICAgIGlkOiByb290 CisrICAgIHdpZHRoOiAyMDAKKysgICAgaGVpZ2h0OiAyMDAKKysKKysgICAgZGVsZWdhdGU6IFRl eHQgeworKyAgICAgICAgdGV4dDogZGlzcGxheQorKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL3F0 ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxl Z2F0ZW1vZGVsLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRl bW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAoraW5kZXggMzVmMWUyYzk0ZC4uMTcyMjQ0 NzgzMCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVn YXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS90 ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90c3RfcXFtbGRlbGVnYXRlbW9kZWwuY3Bw CitAQCAtMjcsNiArMjcsOCBAQAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCisgI2luY2x1ZGUg PFF0VGVzdC9xdGVzdC5oPgorKyNpbmNsdWRlIDxRdENvcmUvUUNvbmNhdGVuYXRlVGFibGVzUHJv eHlNb2RlbD4KKysjaW5jbHVkZSA8UXRHdWkvUVN0YW5kYXJkSXRlbU1vZGVsPgorICNpbmNsdWRl IDxRdFFtbC9xcW1sY29tcG9uZW50Lmg+CisgI2luY2x1ZGUgPFF0UW1sTW9kZWxzL3ByaXZhdGUv cXFtbGRlbGVnYXRlbW9kZWxfcC5oPgorICNpbmNsdWRlIDxRdFF1aWNrL3FxdWlja3ZpZXcuaD4K K0BAIC00Nyw2ICs0OSw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgZmlsdGVyT25Hcm91 cF9yZW1vdmVXaGVuQ29tcGxldGVkKCk7CisgICAgIHZvaWQgcXRidWdfODYwMTcoKTsKKyAgICAg dm9pZCBjb250ZXh0QWNjZXNzZWRCeUhhbmRsZXIoKTsKKysgICAgdm9pZCByZWRyYXdVcG9uQ29s dW1uQ2hhbmdlKCk7CisgfTsKKyAKKyBjbGFzcyBBYnN0cmFjdEl0ZW1Nb2RlbCA6IHB1YmxpYyBR QWJzdHJhY3RJdGVtTW9kZWwKK0BAIC0xODYsNiArMTg5LDMwIEBAIHZvaWQgdHN0X1FRbWxEZWxl Z2F0ZU1vZGVsOjpjb250ZXh0QWNjZXNzZWRCeUhhbmRsZXIoKQorICAgICBRVkVSSUZZKHJvb3Qt PnByb3BlcnR5KCJ3b3JrcyIpLnRvQm9vbCgpKTsKKyB9CisgCisrdm9pZCB0c3RfUVFtbERlbGVn YXRlTW9kZWw6OnJlZHJhd1Vwb25Db2x1bW5DaGFuZ2UoKQorK3sKKysgICAgUVN0YW5kYXJkSXRl bU1vZGVsIG0xOworKyAgICBtMS5hcHBlbmRSb3coeworKyAgICAgICAgICAgIG5ldyBRU3RhbmRh cmRJdGVtKCJCYW5hbmEiKSwKKysgICAgICAgICAgICBuZXcgUVN0YW5kYXJkSXRlbSgiQ29jb251 dCIpLAorKyAgICB9KTsKKysKKysgICAgUVF1aWNrVmlldyB2aWV3KHRlc3RGaWxlVXJsKCJyZWRy YXdVcG9uQ29sdW1uQ2hhbmdlLnFtbCIpKTsKKysgICAgUUNPTVBBUkUodmlldy5zdGF0dXMoKSwg UVF1aWNrVmlldzo6UmVhZHkpOworKyAgICB2aWV3LnNob3coKTsKKysgICAgUVF1aWNrSXRlbSAq cm9vdCA9IHZpZXcucm9vdE9iamVjdCgpOworKyAgICByb290LT5zZXRQcm9wZXJ0eSgibW9kZWwi LCBRVmFyaWFudDo6ZnJvbVZhbHVlPFFPYmplY3QgKj4oJm0xKSk7CisrCisrICAgIFFPYmplY3Qg Kml0ZW0gPSByb290LT5wcm9wZXJ0eSgiY3VycmVudEl0ZW0iKS52YWx1ZTxRT2JqZWN0ICo+KCk7 CisrICAgIFFWRVJJRlkoaXRlbSk7CisrICAgIFFDT01QQVJFKGl0ZW0tPnByb3BlcnR5KCJ0ZXh0 IikudG9TdHJpbmcoKSwgIkJhbmFuYSIpOworKworKyAgICBRVkVSSUZZKHJvb3QpOworKyAgICBt MS5yZW1vdmVDb2x1bW4oMCk7CisrCisrICAgIFFDT01QQVJFKGl0ZW0tPnByb3BlcnR5KCJ0ZXh0 IikudG9TdHJpbmcoKSwgIkNvY29udXQiKTsKKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUVFtbERl bGVnYXRlTW9kZWwpCisgCisgI2luY2x1ZGUgInRzdF9xcW1sZGVsZWdhdGVtb2RlbC5tb2MiCitk aWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0u Y3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0uY3BwCitp bmRleCA1ZDYzNWFhNjNiLi44MjRmZDg5ZTViIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90 ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rl c3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAKK0BAIC03NiwxMCArNzYsMTAgQEAgdm9p ZCB0c3RfcXY0bW06Om11bHRpV3JhcHBlZFFPYmplY3RzKCkKKyAgICAgICAgIFFDT01QQVJFKGVu Z2luZTEubWVtb3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6 ZSgpLCAxKTsKKyAgICAgICAgIFFDT01QQVJFKGVuZ2luZTIubWVtb3J5TWFuYWdlci0+bV9wZW5k aW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAwKTsKKyAKKy0gICAgICAgIC8vIE1v dmVzIHRoZSBhZGRpdGlvbmFsIFdlYWtWYWx1ZSBmcm9tIG1fbXVsdGlwbHlXcmFwcGVkUU9iamVj dHMgdG8KKy0gICAgICAgIC8vIG1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLiBJdCdz IHN0aWxsIGFsaXZlIGFmdGVyIGFsbC4KKysgICAgICAgIC8vIFRoZSBhZGRpdGlvbmFsIFdlYWtW YWx1ZSBmcm9tIG1fbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMgaGFzbid0IGJlZW4gbW92ZWQKKysg ICAgICAgIC8vIHRvIG1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlIHlldC4gSXQncyBz dGlsbCBhbGl2ZSBhZnRlciBhbGwuCisgICAgICAgICBlbmdpbmUxLm1lbW9yeU1hbmFnZXItPnJ1 bkdDKCk7CistICAgICAgICBRQ09NUEFSRShlbmdpbmUxLm1lbW9yeU1hbmFnZXItPm1fcGVuZGlu Z0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMik7CisrICAgICAgICBRQ09NUEFSRShl bmdpbmUxLm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNp emUoKSwgMSk7CisgCisgICAgICAgICAvLyBlbmdpbmUyIGRvZXNuJ3Qgb3duIHRoZSBvYmplY3Qg YXMgZW5naW5lMSB3YXMgdGhlIGZpcnN0IHRvIHdyYXAgaXQgYWJvdmUuCisgICAgICAgICAvLyBU aGVyZWZvcmUsIG5vIGVmZmVjdCBoZXJlLgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVz dHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi9kYXRhL2FjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVM b29wMy5xbWwgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvZGF0 YS9hY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMDAwMC4uODg5ZTQ4MGYzYgorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRk ZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL2RhdGEvYWN0aXZlRm9jdXNP blRhYl9pbmZpbml0ZUxvb3AzLnFtbAorQEAgLTAsMCArMSwxMyBAQAorK2ltcG9ydCBRdFF1aWNr IDIuNgorKworK0l0ZW0geworKyAgICB2aXNpYmxlOiB0cnVlCisrICAgIEl0ZW0geworKyAgICAg ICAgdmlzaWJsZTogZmFsc2UKKysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAgIG9iamVjdE5h bWU6ICJoaWRkZW5DaGlsZCIKKysgICAgICAgICAgICBhY3RpdmVGb2N1c09uVGFiOiB0cnVlCisr ICAgICAgICAgICAgZm9jdXM6IHRydWUKKysgICAgICAgIH0KKysgICAgfQorK30KK2RpZmYgLS1n aXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlj a2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL3Rz dF9xcXVpY2tpdGVtLmNwcAoraW5kZXggYzhmMjUxZGJlMS4uYzhlZjM2ZWU2OCAxMDA2NDQKKy0t LSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNr aXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVt Mi90c3RfcXF1aWNraXRlbS5jcHAKK0BAIC02Nyw2ICs2Nyw3IEBAIHByaXZhdGUgc2xvdHM6Cisg ICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYjEwKCk7CisgICAgIHZvaWQgYWN0aXZlRm9jdXNPblRh Yl9pbmZpbml0ZUxvb3BfZGF0YSgpOworICAgICB2b2lkIGFjdGl2ZUZvY3VzT25UYWJfaW5maW5p dGVMb29wKCk7CisrICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3BDb250cm9s cygpOworIAorICAgICB2b2lkIG5leHRJdGVtSW5Gb2N1c0NoYWluKCk7CisgICAgIHZvaWQgbmV4 dEl0ZW1JbkZvY3VzQ2hhaW4yKCk7CitAQCAtMTA1Nyw2ICsxMDU4LDE3IEBAIHZvaWQgdHN0X1FR dWlja0l0ZW06OmFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wKCkKKyAgICAgUUNPTVBBUkUo aXRlbSwgd2luZG93LT5yb290T2JqZWN0KCkpOworIH0KKyAKKysKKyt2b2lkIHRzdF9RUXVpY2tJ dGVtOjphY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcENvbnRyb2xzKCkKKyt7CisrICAgIGF1 dG8gc291cmNlID0gdGVzdEZpbGVVcmwoImFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wMy5x bWwiKTsKKysgICAgUVNjb3BlZFBvaW50ZXI8UVF1aWNrVmlldz53aW5kb3cobmV3IFFRdWlja1Zp ZXcoKSk7CisrICAgIHdpbmRvdy0+c2V0U291cmNlKHNvdXJjZSk7CisrICAgIHdpbmRvdy0+c2hv dygpOworKyAgICBRVkVSSUZZKHdpbmRvdy0+ZXJyb3JzKCkuaXNFbXB0eSgpKTsKKysgICAgUVRl c3Q6OmtleUNsaWNrKHdpbmRvdy5nZXQoKSwgUXQ6OktleV9UYWIpOyAvLyBzaG91bGQgbm90IGhh bmcKKyt9CisrCisgdm9pZCB0c3RfUVF1aWNrSXRlbTo6bmV4dEl0ZW1JbkZvY3VzQ2hhaW4oKQor IHsKKyAgICAgaWYgKCFxdF90YWJfYWxsX3dpZGdldHMoKSkKK1N1Ym1vZHVsZSBxdGRvYyBjMGM3 YmYwNy4uLjc5ZDZlZjY5OgorU3VibW9kdWxlIHF0aW1hZ2Vmb3JtYXRzIDJkY2YyODk5Li5hYmU0 NGMwZjoKK2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1h dHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1h Z2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNwcAoraW5kZXggZGRlNzgzYy4uMWJmOTA3NCAx MDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25z L3FpY25zaGFuZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdl Zm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAKK0BAIC00NjIsOCArNDYyLDEyIEBAIHN0YXRp YyBib29sIHBhcnNlSWNvbkVudHJ5SW5mbyhJQ05TRW50cnkgJmljb24pCisgICAgIGlmIChpc0lj b25Db21wcmVzc2VkKGljb24pKQorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgIC8vIEljb24g ZGVwdGg6CistICAgIGlmICghZGVwdGguaXNFbXB0eSgpKQorLSAgICAgICAgaWNvbi5kZXB0aCA9 IElDTlNFbnRyeTo6RGVwdGgoZGVwdGgudG9VSW50KCkpOworKyAgICBpZiAoIWRlcHRoLmlzRW1w dHkoKSkgeworKyAgICAgICAgY29uc3QgdWludCBkZXB0aFVJbnQgPSBkZXB0aC50b1VJbnQoKTsK KysgICAgICAgIGlmIChkZXB0aFVJbnQgPiAzMikKKysgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisrICAgICAgICBpY29uLmRlcHRoID0gSUNOU0VudHJ5OjpEZXB0aChkZXB0aFVJbnQpOworKyAg ICB9CisgICAgIC8vIFRyeSBtb25vIGlmIGRlcHRoIG5vdCBmb3VuZAorICAgICBpZiAoaWNvbi5k ZXB0aCA9PSBJQ05TRW50cnk6OkRlcHRoVW5rbm93bikKKyAgICAgICAgIGljb24uZGVwdGggPSBJ Q05TRW50cnk6OkRlcHRoTW9ubzsKK0BAIC01MTUsNiArNTE5LDkgQEAgc3RhdGljIGJvb2wgcGFy c2VJY29uRW50cnlJbmZvKElDTlNFbnRyeSAmaWNvbikKKyAgICAgICAgIH0KKyAgICAgICAgIGlj b24uaGVpZ2h0ID0gaWNvbi53aWR0aDsKKyAgICAgfQorKyAgICAvLyBTYW5pdHkgY2hlY2sKKysg ICAgaWYgKGljb24ud2lkdGggPT0gMCB8fCBpY29uLndpZHRoID4gNDA5NikKKysgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgcmV0dXJuIHRydWU7CisgfQorIAorQEAgLTY4NSw3ICs2OTIsNyBA QCBib29sIFFJQ05TSGFuZGxlcjo6Y2FuUmVhZCgpIGNvbnN0CisgYm9vbCBRSUNOU0hhbmRsZXI6 OnJlYWQoUUltYWdlICpvdXRJbWFnZSkKKyB7CisgICAgIFFJbWFnZSBpbWc7CistICAgIGlmICgh ZW5zdXJlU2Nhbm5lZCgpKSB7CisrICAgIGlmICghZW5zdXJlU2Nhbm5lZCgpIHx8IG1fY3VycmVu dEljb25JbmRleCA+PSBtX2ljb25zLnNpemUoKSkgeworICAgICAgICAgcVdhcm5pbmcoIlFJQ05T SGFuZGxlcjo6cmVhZCgpOiBUaGUgZGV2aWNlIHdhc24ndCBwYXJzZWQgcHJvcGVybHkhIik7Cisg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KK0BAIC04OTIsNyArODk5LDcgQEAgYm9vbCBR SUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAK KyAgICAgICAgIGNvbnN0IHFpbnQ2NCBibG9ja0RhdGFPZmZzZXQgPSBkZXZpY2UoKS0+cG9zKCk7 CistICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChibG9ja0hlYWRlcikpIHsKKysgICAg ICAgIGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGJsb2NrSGVhZGVyLCBJQ05TQmxvY2tIZWFkZXJT aXplICsgZmlsZWxlbmd0aCAtIGJsb2NrRGF0YU9mZnNldCkpIHsKKyAgICAgICAgICAgICBxV2Fy bmluZygiUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCk6IEZhaWxlZCwgYmFkIGhlYWRlciBhdCBw b3MgJXMuIE9TVHlwZSBcIiVzXCIsIGxlbmd0aCAldSIsCisgICAgICAgICAgICAgICAgICAgICAg UUJ5dGVBcnJheTo6bnVtYmVyKGJsb2NrRGF0YU9mZnNldCkuY29uc3REYXRhKCksCisgICAgICAg ICAgICAgICAgICAgICAgbmFtZUZyb21PU1R5cGUoYmxvY2tIZWFkZXIub3N0eXBlKS5jb25zdERh dGEoKSwgYmxvY2tIZWFkZXIubGVuZ3RoKTsKK0BAIC05MjcsMTEgKzkzNCwxNCBAQCBib29sIFFJ Q05TSGFuZGxlcjo6c2NhbkRldmljZSgpCisgICAgICAgICBjYXNlIElDTlNCbG9ja0hlYWRlcjo6 VHlwZU9kcnA6CisgICAgICAgICAgICAgLy8gSWNucyBjb250YWluZXIgc2VlbXMgdG8gaGF2ZSBh biBlbWJlZGRlZCBpY29uIHZhcmlhbnQgY29udGFpbmVyCisgICAgICAgICAgICAgLy8gTGV0J3Mg c3RhcnQgYSBzY2FuIGZvciBlbnRyaWVzCistICAgICAgICAgICAgd2hpbGUgKGRldmljZSgpLT5w b3MoKSA8IG5leHRCbG9ja09mZnNldCkgeworKyAgICAgICAgICAgIHdoaWxlICghc3RyZWFtLmF0 RW5kKCkgJiYgZGV2aWNlKCktPnBvcygpIDwgbmV4dEJsb2NrT2Zmc2V0KSB7CisgICAgICAgICAg ICAgICAgIElDTlNCbG9ja0hlYWRlciBpY29uOworICAgICAgICAgICAgICAgICBzdHJlYW0gPj4g aWNvbjsKKysgICAgICAgICAgICAgICAgaWYgKHN0cmVhbS5zdGF0dXMoKSAhPSBRRGF0YVN0cmVh bTo6T2spCisrICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg ICAgIC8vIENoZWNrIGZvciBpbmNvcnJlY3QgdmFyaWFudCBlbnRyeSBoZWFkZXIgYW5kIHN0b3Ag c2NhbgorLSAgICAgICAgICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChpY29uLCBibG9j a0RhdGFMZW5ndGgpKQorKyAgICAgICAgICAgICAgICBxdWludDY0IHJlbWFpbmluZyA9IGJsb2Nr RGF0YUxlbmd0aCAtIChkZXZpY2UoKS0+cG9zKCkgLSBibG9ja0RhdGFPZmZzZXQpOworKyAgICAg ICAgICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChpY29uLCBJQ05TQmxvY2tIZWFkZXJT aXplICsgcmVtYWluaW5nKSkKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgICAgICBpZiAoIWFkZEVudHJ5KGljb24sIGRldmljZSgpLT5wb3MoKSwgYmxvY2tIZWFkZXIu b3N0eXBlKSkKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKK0BAIC0xMDAzLDcg KzEwMTMsNyBAQCBib29sIFFJQ05TSGFuZGxlcjo6c2NhbkRldmljZSgpCisgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgcmV0dXJuIHRydWU7CisrICAgIHJldHVy biAobV9pY29ucy5zaXplKCkgPiAwKTsKKyB9CisgCisgY29uc3QgSUNOU0VudHJ5ICZRSUNOU0hh bmRsZXI6OmdldEljb25NYXNrKGNvbnN0IElDTlNFbnRyeSAmaWNvbikgY29uc3QKK2RpZmYgLS1n aXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5k bGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIvcWpw MmhhbmRsZXIuY3BwCitpbmRleCA1MDgyMDIzLi5jYjM0Mzc0IDEwMDY0NAorLS0tIGEvcXRpbWFn ZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxlci5jcHAKKysr KyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIvcWpwMmhhbmRs ZXIuY3BwCitAQCAtNDMsNiArNDMsNyBAQAorICNpbmNsdWRlICJxaW1hZ2UuaCIKKyAjaW5jbHVk ZSAicXZhcmlhbnQuaCIKKyAjaW5jbHVkZSAicWNvbG9yLmgiCisrI2luY2x1ZGUgInFpbWFnZXJl YWRlci5oIgorIAorICNpbmNsdWRlIDxqYXNwZXIvamFzcGVyLmg+CisgI2luY2x1ZGUgPG1hdGgu aD4gLy8gZm9yIHBvdworQEAgLTMzMywxNiArMzM0LDQ2IEBAIHByaXZhdGU6CisgSnBlZzIwMDBK YXNwZXJSZWFkZXI6OkpwZWcyMDAwSmFzcGVyUmVhZGVyKFFJT0RldmljZSAqaW9kLCBTdWJGb3Jt YXQgZm9ybWF0KQorICAgICA6IGphc3Blck9rKHRydWUpLCBpb0RldmljZShpb2QpLCBmb3JtYXQo Zm9ybWF0KSwgaGFzQWxwaGEoZmFsc2UpCisgeworKyNpZiBKQVNfVkVSU0lPTl9NQUpPUiA8IDMK KyAgICAgaWYgKGphc19pbml0KCkpIHsKKyAgICAgICAgIGphc3Blck9rID0gZmFsc2U7CisgICAg ICAgICBxRGVidWcoIkphc3BlciBMaWJyYXJ5IGluaXRpYWxpemF0aW9uIGZhaWxlZCIpOworICAg ICB9CisrI2Vsc2UKKysgICAgamFzX2NvbmZfY2xlYXIoKTsKKysjaWYgUVRfVkVSU0lPTiA+PSBR VF9WRVJTSU9OX0NIRUNLKDYsIDAsIDApCisrICAgIGphc19jb25mX3NldF9tYXhfbWVtX3VzYWdl KFFJbWFnZVJlYWRlcjo6YWxsb2NhdGlvbkxpbWl0KCkgKiAxMDI0ICogMTAyNCk7CisrI2Vsc2UK KysgICAgLy8gMTI4TUIgc2VlbXMgdG8gYmUgZW5vdWdoLgorKyAgICBqYXNfY29uZl9zZXRfbWF4 X21lbV91c2FnZSgxMjggKiAxMDI0ICogMTAyNCk7CisrI2VuZGlmCisrICAgIGlmIChqYXNfaW5p dF9saWJyYXJ5KCkpIHsKKysgICAgICAgIGphc3Blck9rID0gZmFsc2U7CisrICAgICAgICBxRGVi dWcoIkphc3BlciBsaWJyYXJ5IGluaXRpYWxpemF0aW9uIGZhaWxlZCIpOworKyAgICB9CisrICAg IGlmIChqYXNfaW5pdF90aHJlYWQoKSkgeworKyAgICAgICAgamFzX2NsZWFudXBfbGlicmFyeSgp OworKyAgICAgICAgamFzcGVyT2sgPSBmYWxzZTsKKysgICAgICAgIHFEZWJ1ZygiSmFzcGVyIHRo cmVhZCBpbml0aWFsaXphdGlvbiBmYWlsZWQiKTsKKysgICAgfQorKyNlbmRpZgorIH0KKyAKKyBK cGVnMjAwMEphc3BlclJlYWRlcjo6fkpwZWcyMDAwSmFzcGVyUmVhZGVyKCkKKyB7CisrI2lmIEpB U19WRVJTSU9OX01BSk9SIDwgMworICAgICBpZiAoamFzcGVyT2spCisgICAgICAgICBqYXNfY2xl YW51cCgpOworKyNlbHNlCisrICAgIGlmIChqYXNwZXJPaykgeworKyAgICAgICAgaWYgKGphc19j bGVhbnVwX3RocmVhZCgpKSB7CisrICAgICAgICAgICAgcURlYnVnKCJKYXNwZXIgdGhyZWFkIGNs ZWFudXAgZmFpbGVkIik7CisrICAgICAgICB9CisrICAgICAgICBpZiAoamFzX2NsZWFudXBfbGli cmFyeSgpKSB7CisrICAgICAgICAgICAgcURlYnVnKCJKYXNwZXIgbGlicmFyeSBjbGVhbnVwIGZh aWxlZCIpOworKyAgICAgICAgfQorKyAgICB9CisrI2VuZGlmCisgfQorIAorIC8qISBcaW50ZXJu YWwKK0BAIC04NTcsNyArODg4LDcgQEAgYm9vbCBKcGVnMjAwMEphc3BlclJlYWRlcjo6d3JpdGUo Y29uc3QgUUltYWdlICZpbWFnZSwgaW50IHF1YWxpdHkpCisgICAgIH0KKyAKKyAgICAgLy8gT3Bl biBhbiBlbXB0eSBqYXNwZXIgc3RyZWFtIHRoYXQgZ3Jvd3MgYXV0b21hdGljYWxseQorLSAgICBq YXNfc3RyZWFtX3QgKiBtZW1vcnlfc3RyZWFtID0gamFzX3N0cmVhbV9tZW1vcGVuKDAsIC0xKTsK KysgICAgamFzX3N0cmVhbV90ICogbWVtb3J5X3N0cmVhbSA9IGphc19zdHJlYW1fbWVtb3Blbigw LCAwKTsKKyAKKyAgICAgLy8gSmFzcGVyIHdhbnRzIGEgbm9uLWNvbnN0IHN0cmluZy4KKyAgICAg Y2hhciAqc3RyID0gcXN0cmR1cChqYXNwZXJGb3JtYXRTdHJpbmcudG9MYXRpbjEoKS5jb25zdERh dGEoKSk7CitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3Jt YXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2lt YWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5jcHAKK2luZGV4IDEzODY3NTAuLmFjODk1NmMg MTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlm Zi9xdGlmZmhhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFn ZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwCitAQCAtMzYxLDYgKzM2MSw4IEBAIGJvb2wg UVRpZmZIYW5kbGVyOjpyZWFkKFFJbWFnZSAqaW1hZ2UpCisgICAgIH0KKyAKKyAgICAgVElGRiAq Y29uc3QgdGlmZiA9IGQtPnRpZmY7CisrICAgIGlmIChUSUZGSXNUaWxlZCh0aWZmKSAmJiBUSUZG VGlsZVNpemU2NCh0aWZmKSA+IHVpbnQ2NF90KGltYWdlLT5zaXplSW5CeXRlcygpKSkgLy8gQ29y cnVwdCBpbWFnZQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICBjb25zdCBxdWludDMyIHdp ZHRoID0gZC0+c2l6ZS53aWR0aCgpOworICAgICBjb25zdCBxdWludDMyIGhlaWdodCA9IGQtPnNp emUuaGVpZ2h0KCk7CisgCitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMv aW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9w bHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJwaGFuZGxlci5jcHAKK2luZGV4IDgyZDM4Y2Iu LmQwMmViMDUgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZv cm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1 Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3BwCitAQCAtNDUsNiArNDUsNyBA QAorICNpbmNsdWRlIDxxZGVidWcuaD4KKyAjaW5jbHVkZSA8cXBhaW50ZXIuaD4KKyAjaW5jbHVk ZSA8cXZhcmlhbnQuaD4KKysjaW5jbHVkZSA8UXRFbmRpYW4+CisgCisgc3RhdGljIGNvbnN0IGlu dCByaWZmSGVhZGVyU2l6ZSA9IDEyOyAvLyBSSUZGX0hFQURFUl9TSVpFIGZyb20gd2VicC9mb3Jt YXRfY29uc3RhbnRzLmgKKyAKK0BAIC0xMDIsMjEgKzEwMywyMyBAQCBib29sIFFXZWJwSGFuZGxl cjo6ZW5zdXJlU2Nhbm5lZCgpIGNvbnN0CisgCisgICAgIG1fc2NhblN0YXRlID0gU2NhbkVycm9y OworIAorLSAgICBpZiAoZGV2aWNlKCktPmlzU2VxdWVudGlhbCgpKSB7CistICAgICAgICBxV2Fy bmluZygpIDw8ICJTZXF1ZW50aWFsIGRldmljZXMgYXJlIG5vdCBzdXBwb3J0ZWQiOworKyAgICBR V2VicEhhbmRsZXIgKnRoYXQgPSBjb25zdF9jYXN0PFFXZWJwSGFuZGxlciAqPih0aGlzKTsKKysg ICAgY29uc3QgaW50IGhlYWRlckJ5dGVzTmVlZGVkID0gc2l6ZW9mKFdlYlBCaXRzdHJlYW1GZWF0 dXJlcyk7CisrICAgIFFCeXRlQXJyYXkgaGVhZGVyID0gZGV2aWNlKCktPnBlZWsoaGVhZGVyQnl0 ZXNOZWVkZWQpOworKyAgICBpZiAoaGVhZGVyLnNpemUoKSA8IGhlYWRlckJ5dGVzTmVlZGVkKQor ICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICB9CisgCistICAgIHFpbnQ2NCBvbGRQb3MgPSBk ZXZpY2UoKS0+cG9zKCk7CistICAgIGRldmljZSgpLT5zZWVrKDApOworLQorLSAgICBRV2VicEhh bmRsZXIgKnRoYXQgPSBjb25zdF9jYXN0PFFXZWJwSGFuZGxlciAqPih0aGlzKTsKKy0gICAgUUJ5 dGVBcnJheSBoZWFkZXIgPSBkZXZpY2UoKS0+cGVlayhzaXplb2YoV2ViUEJpdHN0cmVhbUZlYXR1 cmVzKSk7CisrICAgIC8vIFdlIGRvIG5vIHJhbmRvbSBhY2Nlc3MgZHVyaW5nIGRlY29kaW5nLCBq dXN0IGEgcmVhZEFsbCgpIG9mIHRoZSB3aG9sZSBpbWFnZSBmaWxlLiBTbyBpZgorKyAgICAvLyBp ZiBpdCBpcyBhbGwgYXZhaWxhYmxlIGFscmVhZHksIHdlIGNhbiBhY2NlcHQgYSBzZXF1ZW50aWFs IGRldmljZS4gVGhlIHJpZmYgaGVhZGVyIGNvbnRhaW5zCisrICAgIC8vIHRoZSBmaWxlIHNpemUg bWludXMgOCBieXRlcyBoZWFkZXIKKysgICAgcWludDY0IGJ5dGVTaXplID0gcUZyb21MaXR0bGVF bmRpYW48cXVpbnQzMj4oaGVhZGVyLmNvbnN0RGF0YSgpICsgNCk7CisrICAgIGlmIChkZXZpY2Uo KS0+aXNTZXF1ZW50aWFsKCkgJiYgZGV2aWNlKCktPmJ5dGVzQXZhaWxhYmxlKCkgPCBieXRlU2l6 ZSArIDgpIHsKKysgICAgICAgIHFXYXJuaW5nKCkgPDwgIlFXZWJwSGFuZGxlcjogSW5zdWZmaWNp ZW50IGRhdGEgYXZhaWxhYmxlIGluIHNlcXVlbnRpYWwgZGV2aWNlIjsKKysgICAgICAgIHJldHVy biBmYWxzZTsKKysgICAgfQorICAgICBpZiAoV2ViUEdldEZlYXR1cmVzKChjb25zdCB1aW50OF90 KiloZWFkZXIuY29uc3REYXRhKCksIGhlYWRlci5zaXplKCksICYodGhhdC0+bV9mZWF0dXJlcykp ID09IFZQOF9TVEFUVVNfT0spIHsKKyAgICAgICAgIGlmIChtX2ZlYXR1cmVzLmhhc19hbmltYXRp b24pIHsKKyAgICAgICAgICAgICAvLyBGb3IgYW5pbWF0aW9uLCB3ZSBoYXZlIHRvIHJlYWQgYW5k IHNjYW4gd2hvbGUgZmlsZSB0byBkZXRlcm1pbmUgbG9vcCBjb3VudCBhbmQgaW1hZ2VzIGNvdW50 CistICAgICAgICAgICAgZGV2aWNlKCktPnNlZWsob2xkUG9zKTsKKy0KKyAgICAgICAgICAgICBp ZiAodGhhdC0+ZW5zdXJlRGVtdXhlcigpKSB7CisgICAgICAgICAgICAgICAgIHRoYXQtPm1fbG9v cCA9IFdlYlBEZW11eEdldEkobV9kZW11eGVyLCBXRUJQX0ZGX0xPT1BfQ09VTlQpOworICAgICAg ICAgICAgICAgICB0aGF0LT5tX2ZyYW1lQ291bnQgPSBXZWJQRGVtdXhHZXRJKG1fZGVtdXhlciwg V0VCUF9GRl9GUkFNRV9DT1VOVCk7CitAQCAtMTI2LDE3ICsxMjksMTMgQEAgYm9vbCBRV2VicEhh bmRsZXI6OmVuc3VyZVNjYW5uZWQoKSBjb25zdAorICAgICAgICAgICAgICAgICBpZiAodGhhdC0+ bV9mZWF0dXJlcy5oYXNfYWxwaGEpCisgICAgICAgICAgICAgICAgICAgICB0aGF0LT5tX2NvbXBv c2l0ZWQtPmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsKKyAKKy0gICAgICAgICAgICAgICAgLy8gV2Ug ZG8gbm90IHJlc2V0IGRldmljZSBwb3NpdGlvbiBzaW5jZSB3ZSBoYXZlIHJlYWQgaW4gYWxsIGRh dGEKKyAgICAgICAgICAgICAgICAgbV9zY2FuU3RhdGUgPSBTY2FuU3VjY2VzczsKKy0gICAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgfQorICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgICBtX3NjYW5TdGF0ZSA9IFNjYW5TdWNjZXNzOworICAgICAgICAgfQorICAg ICB9CisgCistICAgIGRldmljZSgpLT5zZWVrKG9sZFBvcyk7CistCisgICAgIHJldHVybiBtX3Nj YW5TdGF0ZSA9PSBTY2FuU3VjY2VzczsKKyB9CisgCitAQCAtMTU5LDcgKzE1OCw3IEBAIGJvb2wg UVdlYnBIYW5kbGVyOjplbnN1cmVEZW11eGVyKCkKKyAKKyBib29sIFFXZWJwSGFuZGxlcjo6cmVh ZChRSW1hZ2UgKmltYWdlKQorIHsKKy0gICAgaWYgKCFlbnN1cmVTY2FubmVkKCkgfHwgZGV2aWNl KCktPmlzU2VxdWVudGlhbCgpIHx8ICFlbnN1cmVEZW11eGVyKCkpCisrICAgIGlmICghZW5zdXJl U2Nhbm5lZCgpIHx8ICFlbnN1cmVEZW11eGVyKCkpCisgICAgICAgICByZXR1cm4gZmFsc2U7Cisg CisgICAgIFFSZWN0IHByZXZGcmFtZVJlY3Q7CitTdWJtb2R1bGUgcXRsb2NhdGlvbiA5OGE1YzUx MS4uZjk5MWUyOGM6CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vY29uZmln dXJlLmpzb24gYi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1cmUuanNvbgoraW5kZXgg NmQwMWE5YTMuLmQxZTYyM2ExIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24v Y29uZmlndXJlLmpzb24KKysrKyBiL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5q c29uCitAQCAtOSw3ICs5LDcgQEAKKyAgICAgICAgICAgICAibGFiZWwiOiAiUXQubGFicy5sb2Nh dGlvbiBleHBlcmltZW50YWwgUU1MIHBsdWdpbiIsCisgICAgICAgICAgICAgInB1cnBvc2UiOiAi UHJvdmlkZXMgZXhwZXJpbWVudGFsIFF0TG9jYXRpb24gUU1MIHR5cGVzIiwKKyAgICAgICAgICAg ICAic2VjdGlvbiI6ICJMb2NhdGlvbiIsCistICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJjb25m aWcub3BlbmdsIiwKKysgICAgICAgICAgICAiY29uZGl0aW9uIjogImZlYXR1cmVzLm9wZW5nbCIs CisgICAgICAgICAgICAgIm91dHB1dCI6IFsgInByaXZhdGVGZWF0dXJlIiBdCisgICAgICAgICB9 LAorICAgICAgICAgImdlb3NlcnZpY2VzX29zbSI6IHsKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9u L3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9ydC5jcHAgYi9xdGxv Y2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9ydC5jcHAK K2luZGV4IGE5Nzg1NzNkLi4xMWUxNDY2ZiAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL2xv Y2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNwcAorKysrIGIvcXRsb2Nh dGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdlb21hcG9iamVjdHFzZ3N1cHBvcnQuY3BwCitA QCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgUUdlb01hcE9iamVjdFFTR1N1cHBvcnQ6OnVwZGF0ZU1h cE9iamVjdHMoUVNHTm9kZSAqcm9vdCwgUVF1aWNrV2luZG93ICp3aW5kCisgICAgIGlmICghcm9v dCkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKG1fbWFwT2JqZWN0c1Jvb3ROb2RlICYm IG1fbWFwT2JqZWN0c1Jvb3ROb2RlLT5wYXJlbnQoKSkKKysgICAgaWYgKG1fbWFwT2JqZWN0c1Jv b3ROb2RlICYmICFtX21hcE9iamVjdHNSb290Tm9kZS0+cGFyZW50KCkpCisgICAgICAgICByb290 LT5hcHBlbmRDaGlsZE5vZGUobV9tYXBPYmplY3RzUm9vdE5vZGUuZ2V0KCkpOworIAorICAgICBp ZiAoIW1fbWFwT2JqZWN0c1Jvb3ROb2RlKSB7CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMv cGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAg Yi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdl cmVuZ2luZV9lc3JpLmNwcAoraW5kZXggNWE0MDQ2N2UuLmQxMjNjNmE4IDEwMDY0NAorLS0tIGEv cXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21hbmFnZXJl bmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMv ZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtNTksOCArNTksMTAgQEAg UVRfQkVHSU5fTkFNRVNQQUNFCisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1ByZWZpeEVzcmkoUVN0 cmluZ0xpdGVyYWwoImVzcmkuIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQYXJhbVVzZXJB Z2VudChrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRlcmFsKCJ1c2VyYWdlbnQiKSk7CisgCistc3Rh dGljIGNvbnN0IFFTdHJpbmcga1VybEdlb2NvZGUoUVN0cmluZ0xpdGVyYWwoImh0dHA6Ly9nZW9j b2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlci9m aW5kQWRkcmVzc0NhbmRpZGF0ZXMiKSk7Cistc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybFJldmVy c2VHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dp cy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvcmV2ZXJzZUdlb2NvZGUiKSk7Cisr c3RhdGljIGNvbnN0IFFTdHJpbmcga1VybEdlb2NvZGUoUVN0cmluZ0xpdGVyYWwoImh0dHBzOi8v Z2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzLyIKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV29ybGQvR2VvY29kZVNlcnZlci9m aW5kQWRkcmVzc0NhbmRpZGF0ZXMiKSk7Cisrc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybFJldmVy c2VHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKAorKyAgICAgICAgImh0dHBzOi8vZ2VvY29kZS5hcmNn aXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvcmV2ZXJzZUdl b2NvZGUiKSk7CisgCisgc3RhdGljIFFTdHJpbmcgYWRkcmVzc1RvUXVlcnkoY29uc3QgUUdlb0Fk ZHJlc3MgJmFkZHJlc3MpCisgeworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMv Z2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5jcHAgYi9xdGxvY2F0aW9u L3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFyc2VyX2VzcmkuY3Bw CitpbmRleCAxNzQ5MmQ5NC4uOTZjMTJiMWIgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9w bHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFyc2VyX2VzcmkuY3BwCisrKysg Yi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFy c2VyX2VzcmkuY3BwCitAQCAtNDYsNyArNDYsOCBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQor IAorLS8vIEpTT04gcmVmZXJlbmNlOiBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVs cC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhfc3luY2hyb25vdXNfZXhlY3V0 aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKysvLyBKU09OIHJlZmVyZW5jZToKKysvLyBodHRwczov L3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2Vy dmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisgCisg c3RhdGljIGNvbnN0IFFTdHJpbmcga0Vycm9yTWVzc2FnZShRU3RyaW5nTGl0ZXJhbCgiRXJyb3Ig JTE6ICUyLiIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrRXJyb3JKc29uKFFTdHJpbmdMaXRl cmFsKCJFcnJvcjogaW52YWxpZGUgSlNPTiBkb2N1bWVudC4iKSk7CitkaWZmIC0tZ2l0IGEvcXRs b2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5j cHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBs eV9lc3JpLmNwcAoraW5kZXggOGNhZGZiMjkuLjkyYjZiYjEzIDEwMDY0NAorLS0tIGEvcXRsb2Nh dGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5jcHAK KysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZXJl cGx5X2VzcmkuY3BwCitAQCAtNDQsNyArNDQsOCBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQor IAorLS8vIEpTT04gcmVmZXJlbmNlOiBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVs cC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhfc3luY2hyb25vdXNfZXhlY3V0 aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKysvLyBKU09OIHJlZmVyZW5jZToKKysvLyBodHRwczov L3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2Vy dmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisgCisg R2VvUm91dGVSZXBseUVzcmk6Okdlb1JvdXRlUmVwbHlFc3JpKFFOZXR3b3JrUmVwbHkgKnJlcGx5 LCBjb25zdCBRR2VvUm91dGVSZXF1ZXN0ICZyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRT2JqZWN0ICpwYXJlbnQpIDoKK2RpZmYgLS1naXQgYS9xdGxvY2F0 aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVf ZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91 dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDBlNmJjMmM3Li5lZDYxM2Y0YiAxMDA2 NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0 aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9n ZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtNDgs NyArNDgsOCBAQCBzdGF0aWMgY29uc3QgUVN0cmluZyBrUHJlZml4RXNyaShRU3RyaW5nTGl0ZXJh bCgiZXNyaS4iKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1BhcmFtVXNlckFnZW50KGtQcmVm aXhFc3JpICsgUVN0cmluZ0xpdGVyYWwoInVzZXJhZ2VudCIpKTsKKyBzdGF0aWMgY29uc3QgUVN0 cmluZyBrUGFyYW1Ub2tlbihrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRlcmFsKCJ0b2tlbiIpKTsK KyAKKy1zdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUm91dGluZyhRU3RyaW5nTGl0ZXJhbCgiaHR0 cDovL3JvdXRlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvUm91dGUvTkFT ZXJ2ZXIvUm91dGVfV29ybGQvc29sdmUiKSk7Cisrc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybFJv dXRpbmcoUVN0cmluZ0xpdGVyYWwoCisrICAgICAgICAiaHR0cHM6Ly9yb3V0ZS5hcmNnaXMuY29t L2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL1JvdXRlL05BU2VydmVyL1JvdXRlX1dvcmxkL3Nv bHZlIikpOworIAorIEdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6R2VvUm91dGluZ01hbmFn ZXJFbmdpbmVFc3JpKGNvbnN0IFFWYXJpYW50TWFwICZwYXJhbWV0ZXJzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHZW9TZXJ2aWNl UHJvdmlkZXI6OkVycm9yICplcnJvciwKK0BAIC03MCw3ICs3MSw4IEBAIEdlb1JvdXRpbmdNYW5h Z2VyRW5naW5lRXNyaTo6fkdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaSgpCisgeworIH0KKyAK Ky0vLyBSRVNUIHJlZmVyZW5jZTogaHR0cDovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAv YXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYwMDAwMDAKKysvLyBSRVNU IHJlZmVyZW5jZToKKysvLyBodHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJj Z2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYwMDAwMDAKKyAKKyBRR2VvUm91 dGVSZXBseSAqR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpjYWxjdWxhdGVSb3V0ZShjb25z dCBRR2VvUm91dGVSZXF1ZXN0ICZyZXF1ZXN0KQorIHsKK0BAIC0xMjUsNyArMTI3LDcgQEAgdm9p ZCBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6OnJlcGx5RXJyb3IoUUdlb1JvdXRlUmVwbHk6 OkVycm9yIGVycm9yQ29kZSwgY28KKyBRU3RyaW5nIEdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNy aTo6cHJlZmVyZWREaXJlY3Rpb25MYW5nYWdlKCkKKyB7CisgICAgIC8vIGxpc3Qgb2Ygc3VwcG9y dGVkIGxhbmdhZ2VzIGlzIGRlZmluZWQgaW46CistICAgIC8vIGh0dHA6Ly9yZXNvdXJjZXMuYXJj Z2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8vMDJyMzAwMDAwMDM2 MDAwMDAwCisrICAgIC8vIGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNn aXMtcmVzdC1hcGkvaW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorICAgICBjb25zdCBR U3RyaW5nTGlzdCBzdXBwb3J0ZWRMYW5ndWFnZXMgPSB7CisgICAgICAgICAiYXIiLCAvLyBHZW5l cmF0ZSBkaXJlY3Rpb25zIGluIEFyYWJpYworICAgICAgICAgImNzIiwgLy8gR2VuZXJhdGUgZGly ZWN0aW9ucyBpbiBDemVjaAorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vv c2VydmljZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRs b2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGluZ21hbmFn ZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDVkMTU4MzVkLi4yNDE0OGY5NSAxMDA2NDQKKy0tLSBh L3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdt YW5hZ2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3Nl cnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorQEAgLTIz MCw3ICsyMzAsOCBAQCBRR2VvTWFwICpHZW9UaWxlZE1hcHBpbmdNYW5hZ2VyRW5naW5lRXNyaTo6 Y3JlYXRlTWFwKCkKKyAvLyAke3l9ID0gWQorIC8vICR7dG9rZW59ID0gVG9rZW4KKyAKKy0vLyB0 ZW1wbGF0ZSA9ICdodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9z ZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2ZXIvdGlsZS97e3p9fS97e3l9fS97e3h9fS5w bmcnCisrLy8gdGVtcGxhdGUgPQorKy8vICdodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5j b20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVyL3RpbGUve3t6 fX0ve3t5fX0ve3t4fX0ucG5nJworIAorIGJvb2wgR2VvVGlsZWRNYXBwaW5nTWFuYWdlckVuZ2lu ZUVzcmk6OmluaXRpYWxpemVNYXBTb3VyY2VzKFFHZW9TZXJ2aWNlUHJvdmlkZXI6OkVycm9yICpl cnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRU3RyaW5nICplcnJvclN0cmluZywKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9u L3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5qc29uIGIvcXRsb2NhdGlvbi9zcmMv cGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMuanNvbgoraW5kZXggODE2N2FlN2QuLjg2MmUw ODdkIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3Jp L21hcHMuanNvbgorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3Jp L21hcHMuanNvbgorQEAgLTYsOCArNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog IkFyY0dJUyBPbmxpbmUgV29ybGQgU3RyZWV0IE1hcCIsCisgICAgICAgICAgICAgIm1vYmlsZSI6 IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6 ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9X b3JsZF9TdHJlZXRfTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQi OiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9p ZD0zYjkzMzM3OTgzZTk0MzZmOGRiOTUwZTM4YTg2MjlhZic+RXNyaTwvYT4gY29udHJpYnV0b3Jz IgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29t L0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1N0cmVldF9NYXAvTWFwU2VydmVyIiwKKysgICAg ICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJj Z2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0zYjkzMzM3OTgzZTk0MzZmOGRiOTUwZTM4YTg2Mjlh Zic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BA IC0xNiw4ICsxNiw4IEBACisgICAgICAgICAgICAgIiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIElt YWdlcnkiLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdo dCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxp bmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX0ltYWdlcnkvTWFwU2VydmVyIiwKKy0g ICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5h cmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTEwZGYyMjc5Zjk2ODRlNGE5ZjZhN2YwOGZlYmFj MmE5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczov L3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX0ltYWdl cnkvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEg aHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0xMGRmMjI3OWY5 Njg0ZTRhOWY2YTdmMDhmZWJhYzJhOSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAg fSwKKyAKKyAgICAgICAgIHsKK0BAIC0yNiw4ICsyNiw4IEBACisgICAgICAgICAgICAgImRlc2Ny aXB0aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgVGVycmFpbiBCYXNlIiwKKyAgICAgICAgICAg ICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAg ICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qv c2VydmljZXMvV29ybGRfVGVycmFpbl9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNv cHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21l L2l0ZW0uaHRtbD9pZD1jNjFhZDhhYjAxN2Q0OWUxYTgyZjU4MGVlMTI5ODkzMSc+RXNyaTwvYT4g Y29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lz b25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9UZXJyYWluX0Jhc2UvTWFwU2Vy dmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0 cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1jNjFhZDhhYjAxN2Q0OWUxYTgy ZjU4MGVlMTI5ODkzMSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAg ICAgICAgIHsKK0BAIC0zNiw4ICszNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog IkFyY0dJUyBPbmxpbmUgV29ybGQgVG9wb2dyYXBoeSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6 IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6 ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29y bGRfVG9wb19NYXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICIm Y29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTMw ZTVmZTMxNDljMzRkZjFiYTkyMmU2ZjViYmY4MDhmJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisr ICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJ Uy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAg ImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20v aG9tZS9pdGVtLmh0bWw/aWQ9MzBlNWZlMzE0OWMzNGRmMWJhOTIyZTZmNWJiZjgwOGYnPkVzcmk8 L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtNDYsOCAr NDYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIG1hcCBwcmVzZW50cyBs YW5kIGNvdmVyIGFuZCBkZXRhaWxlZCB0b3BvZ3JhcGhpYyBtYXBzIGZvciB0aGUgVW5pdGVkIFN0 YXRlcy4iLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdo dCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29u bGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvVVNBX1RvcG9fTWFwcy9NYXBTZXJ2ZXIiLAor LSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3 LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9OTljZDVmYmQ5ODkzNDAyODgwMmI0Zjc5N2M0 YjE3MzInPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBz Oi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9VU0FfVG9w b19NYXBzL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7 IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9OTljZDVm YmQ5ODkzNDAyODgwMmI0Zjc5N2M0YjE3MzInPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAg ICAgIH0sCisgCisgICAgICAgICB7CitAQCAtNTYsOCArNTYsOCBAQAorICAgICAgICAgICAgICJk ZXNjcmlwdGlvbiI6ICJOYXRpb25hbCBHZW9ncmFwaGljIFdvcmxkIE1hcCIsCisgICAgICAgICAg ICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAg ICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jl c3Qvc2VydmljZXMvTmF0R2VvX1dvcmxkX01hcC9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJj b3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9t ZS9pdGVtLmh0bWw/aWQ9YjliMWI0MjIxOTg5NDRmYmJkNTI1MGIzMjQxNjkxYjYnPkVzcmk8L2E+ IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmljZXMuYXJj Z2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9OYXRHZW9fV29ybGRfTWFwL01hcFNl cnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0 dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjliMWI0MjIxOTg5NDRmYmJk NTI1MGIzMjQxNjkxYjYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisg ICAgICAgICB7CitAQCAtNjYsOCArNjYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6 ICJUaGVtYXRpYyBjb250ZW50IHByb3ZpZGluZyBhIG5ldXRyYWwgYmFja2dyb3VuZCB3aXRoIG1p bmltYWwgY29sb3JzIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwKKyAgICAgICAgICAg ICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5h cmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9MaWdodF9H cmF5X0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29w eTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWVkNzEy Y2IxZGIzZTRiYWU5ZTg1MzI5MDQwZmI5YTQ5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAg ICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lT L3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0xpZ2h0X0dyYXlfQmFzZS9NYXBTZXJ2ZXIiLAor KyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3 dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWVkNzEyY2IxZGIzZTRiYWU5ZTg1MzI5MDQw ZmI5YTQ5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAg eworQEAgLTc2LDggKzc2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTmF0dXJh bCBFYXJ0aCBwaHlzaWNhbCBtYXAgZm9yIHRoZSB3b3JsZCIsCisgICAgICAgICAgICAgIm1vYmls ZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1 cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2Vz L1dvcmxkX1BoeXNpY2FsX01hcC9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRU ZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0 bWw/aWQ9YzRlYzcyMmExY2QzNGNmMGEyMzkwNGFhZGY4OTIzYTAnPkVzcmk8L2E+IGNvbnRyaWJ1 dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5j b20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfUGh5c2ljYWxfTWFwL01hcFNlcnZlciIsCisr ICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3 LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YzRlYzcyMmExY2QzNGNmMGEyMzkwNGFhZGY4 OTIzYTAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7 CitAQCAtODYsOCArODYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQb3J0cmF5 cyBzdXJmYWNlIGVsZXZhdGlvbiBhcyBzaGFkZWQgcmVsaWVmIiwKKyAgICAgICAgICAgICAibW9i aWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAg InVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2Vydmlj ZXMvV29ybGRfU2hhZGVkX1JlbGllZi9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmln aHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVt Lmh0bWw/aWQ9OWM1MzcwZDBiNTRmNGRlMWI0OGEzNzkyZDczNzdmZjInPkVzcmk8L2E+IGNvbnRy aWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGlu ZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU2hhZGVkX1JlbGllZi9NYXBTZXJ2ZXIi LAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczov L3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTljNTM3MGQwYjU0ZjRkZTFiNDhhMzc5 MmQ3Mzc3ZmYyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAg ICAgeworQEAgLTk2LDggKzk2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhp cyBtYXAgaXMgZGVzaWduZWQgdG8gYmUgdXNlZCBhcyBhIGJhc2VtYXAgYnkgbWFyaW5lIEdJUyBw cm9mZXNzaW9uYWxzIGFuZCBhcyBhIHJlZmVyZW5jZSBtYXAgYnkgYW55b25lIGludGVyZXN0ZWQg aW4gb2NlYW4gZGF0YSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAg ICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5h cmNnaXNvbmxpbmUuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL09jZWFuL1dvcmxkX09jZWFuX0Jh c2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEg aHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTFlMTI2ZTc1MjBm OTQ2NmM5Y2EyOGI4ZjI4YjVlNTAwJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAg ICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL2FyY2dpcy9yZXN0L3Nl cnZpY2VzL09jZWFuL1dvcmxkX09jZWFuX0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAi Y29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9o b21lL2l0ZW0uaHRtbD9pZD0xZTEyNmU3NTIwZjk0NjZjOWNhMjhiOGYyOGI1ZTUwMCc+RXNyaTwv YT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0xMDYsOCAr MTA2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlbWF0aWMgY29udGVudCBw cm92aWRpbmcgYSBuZXV0cmFsIGJhY2tncm91bmQgd2l0aCBtaW5pbWFsIGNvbG9ycyIsCisgICAg ICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IHRydWUsCist ICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNH SVMvcmVzdC9zZXJ2aWNlcy9DYW52YXMvV29ybGRfRGFya19HcmF5X0Jhc2UvTWFwU2VydmVyIiwK Ky0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3 dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWEyODRhOWI5OWIzNDQ2YTM5MTBkNDE0NGE1 MDk5MGY2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRw czovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFz L1dvcmxkX0RhcmtfR3JheV9CYXNlL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdo dFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVt Lmh0bWw/aWQ9YTI4NGE5Yjk5YjM0NDZhMzkxMGQ0MTQ0YTUwOTkwZjYnPkVzcmk8L2E+IGNvbnRy aWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMTE2LDggKzExNiw4IEBA CisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRlTG9ybWXigJlzIHRvcG9ncmFwaGljIGJh c2VtYXAgaXMgYSBzZWFtbGVzcyBnbG9iYWwgZGF0YSBzZXQgdGhhdCBwb3J0cmF5cyB0cmFuc3Bv cnRhdGlvbiwgaHlkcm9ncmFwaHksIGp1cmlzZGljdGlvbiBib3VuZGFyaWVzLCBhbmQgbWFqb3Ig Z2VvZ3JhcGhpYyBmZWF0dXJlcyIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAg ICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3Nl cnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1NwZWNpYWx0eS9EZUxv cm1lX1dvcmxkX0Jhc2VfTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRl eHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRt bD9pZD1iMTY1YzNkZjQ1M2U0YmU2YjVhYzRmZGIyNDFlZmZiZSc+RXNyaTwvYT4gY29udHJpYnV0 b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNv bS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9TcGVjaWFsdHkvRGVMb3JtZV9Xb3JsZF9CYXNlX01hcC9N YXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVm PSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWIxNjVjM2RmNDUzZTRi ZTZiNWFjNGZkYjI0MWVmZmJlJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9Cisg ICAgIF0KKyB9CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNl cy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdp bnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDM4 NThkZGY1Li5hZjY2ZjI4ZSAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vv c2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRp b24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5j cHAKK0BAIC02Myw4ICs2MywxMCBAQCBzdGF0aWMgY29uc3QgUVN0cmluZyBrQ291bnRyaWVzS2V5 KFFTdHJpbmdMaXRlcmFsKCJkZXRhaWxlZENvdW50cmllcyIpKTsKKyBzdGF0aWMgY29uc3QgUVN0 cmluZyBrTG9jYWxpemVkTmFtZXNLZXkoUVN0cmluZ0xpdGVyYWwoImxvY2FsaXplZE5hbWVzIikp OworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtNYXhMb2NhdGlvbnNLZXkoUVN0cmluZ0xpdGVyYWwo Im1heExvY2F0aW9ucyIpKTsKKyAKKy1zdGF0aWMgY29uc3QgUVVybCBrVXJsR2VvY29kZVNlcnZl cigiaHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9H ZW9jb2RlU2VydmVyP2Y9cGpzb24iKTsKKy1zdGF0aWMgY29uc3QgUVVybCBrVXJsRmluZEFkZHJl c3NDYW5kaWRhdGVzKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZp Y2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIik7Cisrc3RhdGlj IGNvbnN0IFFVcmwga1VybEdlb2NvZGVTZXJ2ZXIoCisrICAgICAgICAiaHR0cHM6Ly9nZW9jb2Rl LmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlcj9mPXBq c29uIik7Cisrc3RhdGljIGNvbnN0IFFVcmwga1VybEZpbmRBZGRyZXNzQ2FuZGlkYXRlcygiaHR0 cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvIgorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdlb2NvZGVTZXJ2ZXIv ZmluZEFkZHJlc3NDYW5kaWRhdGVzIik7CisgCisgUGxhY2VNYW5hZ2VyRW5naW5lRXNyaTo6UGxh Y2VNYW5hZ2VyRW5naW5lRXNyaShjb25zdCBRVmFyaWFudE1hcCAmcGFyYW1ldGVycywgUUdlb1Nl cnZpY2VQcm92aWRlcjo6RXJyb3IgKmVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyAqZXJyb3JTdHJpbmcpIDoKK1N1Ym1vZHVsZSBx dG11bHRpbWVkaWEgZjAzNDQwNzkuLjBkN2NjMzNhOgorZGlmZiAtLWdpdCBhL3F0bXVsdGltZWRp YS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNwcCBiL3F0bXVsdGlt ZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNwcAoraW5kZXgg MmI1MzI1MTMyLi5iNjhiNGFmMWIgMTAwNjQ0CistLS0gYS9xdG11bHRpbWVkaWEvc3JjL3BsdWdp bnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1dF9wdWxzZS5jcHAKKysrKyBiL3F0bXVsdGltZWRpYS9z cmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNwcAorQEAgLTQwMiw2ICs0 MDIsOCBAQCBpbnQgUVB1bHNlQXVkaW9JbnB1dDo6Ynl0ZXNSZWFkeSgpIGNvbnN0CisgCisgcWlu dDY0IFFQdWxzZUF1ZGlvSW5wdXQ6OnJlYWQoY2hhciAqZGF0YSwgcWludDY0IGxlbikKKyB7Cisr ICAgIFFfQVNTRVJUKGRhdGEgIT0gbnVsbHB0ciB8fCBsZW4gPT0gMCk7CisrCisgICAgIG1fYnl0 ZXNBdmFpbGFibGUgPSBjaGVja0J5dGVzUmVhZHkoKTsKKyAKKyAgICAgc2V0RXJyb3IoUUF1ZGlv OjpOb0Vycm9yKTsKK0BAIC00MTEsNyArNDEzLDggQEAgcWludDY0IFFQdWxzZUF1ZGlvSW5wdXQ6 OnJlYWQoY2hhciAqZGF0YSwgcWludDY0IGxlbikKKyAKKyAgICAgaWYgKCFtX3B1bGxNb2RlICYm ICFtX3RlbXBCdWZmZXIuaXNFbXB0eSgpKSB7CisgICAgICAgICByZWFkQnl0ZXMgPSBxTWluKHN0 YXRpY19jYXN0PGludD4obGVuKSwgbV90ZW1wQnVmZmVyLnNpemUoKSk7CistICAgICAgICBtZW1j cHkoZGF0YSwgbV90ZW1wQnVmZmVyLmNvbnN0RGF0YSgpLCByZWFkQnl0ZXMpOworKyAgICAgICAg aWYgKHJlYWRCeXRlcykKKysgICAgICAgICAgICBtZW1jcHkoZGF0YSwgbV90ZW1wQnVmZmVyLmNv bnN0RGF0YSgpLCByZWFkQnl0ZXMpOworICAgICAgICAgbV90b3RhbFRpbWVWYWx1ZSArPSByZWFk Qnl0ZXM7CisgCisgICAgICAgICBpZiAocmVhZEJ5dGVzIDwgbV90ZW1wQnVmZmVyLnNpemUoKSkg eworQEAgLTUwMiw5ICs1MDUsMTAgQEAgcWludDY0IFFQdWxzZUF1ZGlvSW5wdXQ6OnJlYWQoY2hh ciAqZGF0YSwgcWludDY0IGxlbikKKyAKKyB2b2lkIFFQdWxzZUF1ZGlvSW5wdXQ6OmFwcGx5Vm9s dW1lKGNvbnN0IHZvaWQgKnNyYywgdm9pZCAqZGVzdCwgaW50IGxlbikKKyB7CisrICAgIFFfQVNT RVJUKChzcmMgJiYgZGVzdCkgfHwgbGVuID09IDApOworICAgICBpZiAobV92b2x1bWUgPCAxLmYp CisgICAgICAgICBRQXVkaW9IZWxwZXJJbnRlcm5hbDo6cU11bHRpcGx5U2FtcGxlcyhtX3ZvbHVt ZSwgbV9mb3JtYXQsIHNyYywgZGVzdCwgbGVuKTsKKy0gICAgZWxzZQorKyAgICBlbHNlIGlmIChs ZW4pCisgICAgICAgICBtZW1jcHkoZGVzdCwgc3JjLCBsZW4pOworIH0KKyAKK1N1Ym1vZHVsZSBx dHBpbSAwMmVmZWY1ZS4uLmY5YThmMGZjIChjb21taXRzIG5vdCBwcmVzZW50KQorU3VibW9kdWxl IHF0cXVpY2szZCBiODVjZjYyMi4uNDdkZWZjOGI6CitkaWZmIC0tZ2l0IGEvcXRxdWljazNkL3Ny Yy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJvIGIvcXRxdWljazNkL3Ny Yy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJvCitpbmRleCBjYTVjNDk5 ZS4uMTc0YTA3NWIgMTAwNjQ0CistLS0gYS9xdHF1aWNrM2Qvc3JjL3BsdWdpbnMvYXNzZXRpbXBv cnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8KKysrKyBiL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3Nl dGltcG9ydGVycy9hc3NpbXAvYXNzaW1wLnBybworQEAgLTEwLDcgKzEwLDcgQEAgUVRfRk9SX0NP TkZJRyArPSBhc3NldGltcG9ydGVycy1wcml2YXRlCisgaW5jbHVkZSgkJE9VVF9QV0QvLi4vcXRh c3NldGltcG9ydGVycy1jb25maWcucHJpKQorIAorIHF0Q29uZmlnKHN5c3RlbS1hc3NpbXApOiFp Zihjcm9zc19jb21waWxlOmhvc3RfYnVpbGQpIHsKKy0gICAgUU1BS0VfVVNFX1BSSVZBVEUgKz0g YXNzaW1wCisrICAgIFFNQUtFX1VTRV9QUklWQVRFICs9IHF1aWNrM2QtYXNzaW1wCisgfSBlbHNl IHsKKyAgICAgaW5jbHVkZSguLi8uLi8uLi8zcmRwYXJ0eS9hc3NpbXAvYXNzaW1wLnByaSkKKyB9 CitTdWJtb2R1bGUgcXRxdWlja2NvbnRyb2xzMiAzYTY1N2RjMC4uNTZjZTgyMzM6CitkaWZmIC0t Z2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRn ZXRwbGF0Zm9ybW1lbnUuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9y bS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwCitpbmRleCBlNWZlNzM0ZjcuLmUzNjky Mjc3NSAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL2ltcG9ydHMvcGxhdGZvcm0v d2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9z cmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwCitAQCAt MzgsNiArMzgsNyBAQAorICNpbmNsdWRlICJxd2lkZ2V0cGxhdGZvcm1tZW51aXRlbV9wLmgiCisg CisgI2luY2x1ZGUgPFF0R3VpL3F3aW5kb3cuaD4KKysjaW5jbHVkZSA8UXRHdWkvcHJpdmF0ZS9x aGlnaGRwaXNjYWxpbmdfcC5oPgorICNpbmNsdWRlIDxRdFdpZGdldHMvcW1lbnUuaD4KKyAjaW5j bHVkZSA8UXRXaWRnZXRzL3FhY3Rpb24uaD4KKyAKK0BAIC0xNDUsNyArMTQ2LDcgQEAgdm9pZCBR V2lkZ2V0UGxhdGZvcm1NZW51OjpzaG93UG9wdXAoY29uc3QgUVdpbmRvdyAqd2luZG93LCBjb25z dCBRUmVjdCAmdGFyZ2V0UmUKKyAKKyAgICAgUVBvaW50IHRhcmdldFBvcyA9IHRhcmdldFJlY3Qu Ym90dG9tTGVmdCgpOworICAgICBpZiAod2luZG93KQorLSAgICAgICAgdGFyZ2V0UG9zID0gd2lu ZG93LT5tYXBUb0dsb2JhbCh0YXJnZXRQb3MpOworKyAgICAgICAgdGFyZ2V0UG9zID0gd2luZG93 LT5tYXBUb0dsb2JhbChRSGlnaERwaTo6ZnJvbU5hdGl2ZUxvY2FsUG9zaXRpb24odGFyZ2V0UG9z LCB3aW5kb3cpKTsKKyAKKyAgICAgY29uc3QgUVdpZGdldFBsYXRmb3JtTWVudUl0ZW0gKndpZGdl dEl0ZW0gPSBxb2JqZWN0X2Nhc3Q8Y29uc3QgUVdpZGdldFBsYXRmb3JtTWVudUl0ZW0gKj4oaXRl bSk7CisgICAgIG1fbWVudS0+cG9wdXAodGFyZ2V0UG9zLCB3aWRnZXRJdGVtID8gd2lkZ2V0SXRl bS0+YWN0aW9uKCkgOiBudWxscHRyKTsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3Ny Yy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3BwIGIvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uLmNwcAoraW5kZXgg OTUwZTRlMDk5Li5iODFmYmVhMGIgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3BwCisrKysgYi9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3BwCitAQCAt Mzg3LDYgKzM4NywxNyBAQCB2b2lkIFFRdWlja0Fic3RyYWN0QnV0dG9uUHJpdmF0ZTo6aXRlbUlt cGxpY2l0SGVpZ2h0Q2hhbmdlZChRUXVpY2tJdGVtICppdGVtKQorICAgICAgICAgZW1pdCBxLT5p bXBsaWNpdEluZGljYXRvckhlaWdodENoYW5nZWQoKTsKKyB9CisgCisrdm9pZCBRUXVpY2tBYnN0 cmFjdEJ1dHRvblByaXZhdGU6Oml0ZW1EZXN0cm95ZWQoUVF1aWNrSXRlbSAqaXRlbSkKKyt7Cisr ICAgIFFfUShRUXVpY2tBYnN0cmFjdEJ1dHRvbik7CisrICAgIFFRdWlja0NvbnRyb2xQcml2YXRl OjppdGVtRGVzdHJveWVkKGl0ZW0pOworKyAgICBpZiAoaXRlbSA9PSBpbmRpY2F0b3IpIHsKKysg ICAgICAgIGluZGljYXRvciA9IG51bGxwdHI7CisrICAgICAgICBlbWl0IHEtPmltcGxpY2l0SW5k aWNhdG9yV2lkdGhDaGFuZ2VkKCk7CisrICAgICAgICBlbWl0IHEtPmltcGxpY2l0SW5kaWNhdG9y SGVpZ2h0Q2hhbmdlZCgpOworKyAgICB9CisrfQorKworIFFRdWlja0Fic3RyYWN0QnV0dG9uICpR UXVpY2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6OmZpbmRDaGVja2VkQnV0dG9uKCkgY29uc3QKKyB7 CisgICAgIFFfUShjb25zdCBRUXVpY2tBYnN0cmFjdEJ1dHRvbik7CitAQCAtMTE3Niw2ICsxMTg3 LDEyIEBAIFFBY2Nlc3NpYmxlOjpSb2xlIFFRdWlja0Fic3RyYWN0QnV0dG9uOjphY2Nlc3NpYmxl Um9sZSgpIGNvbnN0CisgICAgIH0KKyAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpCdXR0b247Cisg fQorKworK3ZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0b246OmFjY2Vzc2libGVQcmVzc0FjdGlvbigp CisreworKyAgICBRX0QoUVF1aWNrQWJzdHJhY3RCdXR0b24pOworKyAgICBkLT50cmlnZ2VyKCk7 CisrfQorICNlbmRpZgorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHF1aWNr Y29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcC5oIGIv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9u X3AuaAoraW5kZXggMGZhNDg5ODBlLi5hYjY2MjIwZDAgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcC5oCisrKysg Yi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0 b25fcC5oCitAQCAtMjA5LDYgKzIwOSw3IEBAIHByb3RlY3RlZDoKKyAjaWYgUVRfQ09ORklHKGFj Y2Vzc2liaWxpdHkpCisgICAgIHZvaWQgYWNjZXNzaWJpbGl0eUFjdGl2ZUNoYW5nZWQoYm9vbCBh Y3RpdmUpIG92ZXJyaWRlOworICAgICBRQWNjZXNzaWJsZTo6Um9sZSBhY2Nlc3NpYmxlUm9sZSgp IGNvbnN0IG92ZXJyaWRlOworKyAgICBRX0lOVk9LQUJMRSB2b2lkIGFjY2Vzc2libGVQcmVzc0Fj dGlvbigpOworICNlbmRpZgorIAorIHByaXZhdGU6CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3BfcC5oIGIvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3Bf cC5oCitpbmRleCA5MjkxYzFhODcuLmI3Mjk3MjBmMiAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250 cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wX3AuaAorKysr IGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0 dG9uX3BfcC5oCitAQCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKKyAKKyAgICAgdm9pZCBpdGVt SW1wbGljaXRXaWR0aENoYW5nZWQoUVF1aWNrSXRlbSAqaXRlbSkgb3ZlcnJpZGU7CisgICAgIHZv aWQgaXRlbUltcGxpY2l0SGVpZ2h0Q2hhbmdlZChRUXVpY2tJdGVtICppdGVtKSBvdmVycmlkZTsK KysgICAgdm9pZCBpdGVtRGVzdHJveWVkKFFRdWlja0l0ZW0gKml0ZW0pIG92ZXJyaWRlOworIAor ICAgICAvLyBjb3BpZWQgZnJvbSBxYWJzdHJhY3RidXR0b24uY3BwCisgICAgIHN0YXRpYyBjb25z dCBpbnQgQVVUT19SRVBFQVRfREVMQVkgPSAzMDA7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAgYi9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcAoraW5kZXggMjA0MWU3NzQx Li44NjEwY2RmYWUgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBs YXRlczIvcXF1aWNrYWN0aW9uLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0 ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAKK0BAIC0xNDUsNyArMTQ1LDcgQEAgaW50IFFRdWlj a0FjdGlvblByaXZhdGU6OlNob3J0Y3V0RW50cnk6OnNob3J0Y3V0SWQoKSBjb25zdAorIAorIHZv aWQgUVF1aWNrQWN0aW9uUHJpdmF0ZTo6U2hvcnRjdXRFbnRyeTo6Z3JhYihjb25zdCBRS2V5U2Vx dWVuY2UgJnNob3J0Y3V0LCBib29sIGVuYWJsZWQpCisgeworLSAgICBpZiAoc2hvcnRjdXQuaXNF bXB0eSgpKQorKyAgICBpZiAoc2hvcnRjdXQuaXNFbXB0eSgpIHx8IG1fc2hvcnRjdXRJZCkKKyAg ICAgICAgIHJldHVybjsKKyAKKyAgICAgUXQ6OlNob3J0Y3V0Q29udGV4dCBjb250ZXh0ID0gUXQ6 OldpbmRvd1Nob3J0Y3V0OyAvLyBUT0RPCitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9z cmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAgYi9xdHF1aWNrY29udHJvbHMy L3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udGFpbmVyLmNwcAoraW5kZXggZjM4YzJiMDlj Li42ZWVkMmEwMjQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBs YXRlczIvcXF1aWNrY29udGFpbmVyLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVp Y2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAKK0BAIC0yMjUsNiArMjI1LDcgQEAgdm9p ZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjpjbGVhbnVwKCkKKyAgICAgUU9iamVjdDo6ZGlzY29u bmVjdChjb250ZW50TW9kZWwsICZRUW1sT2JqZWN0TW9kZWw6OmNvdW50Q2hhbmdlZCwgcSwgJlFR dWlja0NvbnRhaW5lcjo6Y291bnRDaGFuZ2VkKTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChj b250ZW50TW9kZWwsICZRUW1sT2JqZWN0TW9kZWw6OmNoaWxkcmVuQ2hhbmdlZCwgcSwgJlFRdWlj a0NvbnRhaW5lcjo6Y29udGVudENoaWxkcmVuQ2hhbmdlZCk7CisgICAgIGRlbGV0ZSBjb250ZW50 TW9kZWw7CisrICAgIGNvbnRlbnRNb2RlbCA9IG51bGxwdHI7CisgfQorIAorIFFRdWlja0l0ZW0g KlFRdWlja0NvbnRhaW5lclByaXZhdGU6Oml0ZW1BdChpbnQgaW5kZXgpIGNvbnN0CitAQCAtNDM2 LDcgKzQzNyw3IEBAIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6Y29udGVudENoaWxkcmVu X2NsZWFyKFFRbWxMaXN0UHJvcGVydHk8UVF1aWNrSXRlbT4KKyB2b2lkIFFRdWlja0NvbnRhaW5l clByaXZhdGU6OnVwZGF0ZUNvbnRlbnRXaWR0aCgpCisgeworICAgICBRX1EoUVF1aWNrQ29udGFp bmVyKTsKKy0gICAgaWYgKGhhc0NvbnRlbnRXaWR0aCB8fCBxRnV6enlDb21wYXJlKGNvbnRlbnRX aWR0aCwgaW1wbGljaXRDb250ZW50V2lkdGgpKQorKyAgICBpZiAoaGFzQ29udGVudFdpZHRoIHx8 IHFGdXp6eUNvbXBhcmUoY29udGVudFdpZHRoLCBpbXBsaWNpdENvbnRlbnRXaWR0aCkgfHwgIWNv bnRlbnRNb2RlbCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgY29udGVudFdpZHRoID0gaW1w bGljaXRDb250ZW50V2lkdGg7CitAQCAtNDQ2LDcgKzQ0Nyw3IEBAIHZvaWQgUVF1aWNrQ29udGFp bmVyUHJpdmF0ZTo6dXBkYXRlQ29udGVudFdpZHRoKCkKKyB2b2lkIFFRdWlja0NvbnRhaW5lclBy aXZhdGU6OnVwZGF0ZUNvbnRlbnRIZWlnaHQoKQorIHsKKyAgICAgUV9RKFFRdWlja0NvbnRhaW5l cik7CistICAgIGlmIChoYXNDb250ZW50SGVpZ2h0IHx8IHFGdXp6eUNvbXBhcmUoY29udGVudEhl aWdodCwgaW1wbGljaXRDb250ZW50SGVpZ2h0KSkKKysgICAgaWYgKGhhc0NvbnRlbnRIZWlnaHQg fHwgcUZ1enp5Q29tcGFyZShjb250ZW50SGVpZ2h0LCBpbXBsaWNpdENvbnRlbnRIZWlnaHQpIHx8 ICFjb250ZW50TW9kZWwpCisgICAgICAgICByZXR1cm47CisgCisgICAgIGNvbnRlbnRIZWlnaHQg PSBpbXBsaWNpdENvbnRlbnRIZWlnaHQ7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9z cmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9z cmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwCitpbmRleCBiYmJkMGU2MjIuLjFm NGI0NzM0MyAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVz Mi9xcXVpY2tjb250cm9sLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1w bGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwCitAQCAtODQ1LDYgKzg0NSwxMyBAQCB2b2lkIFFRdWlj a0NvbnRyb2xQcml2YXRlOjpleGVjdXRlQmFja2dyb3VuZChib29sIGNvbXBsZXRlKQorICAgICAg ICAgcXVpY2tDb21wbGV0ZURlZmVycmVkKHEsIGJhY2tncm91bmROYW1lKCksIGJhY2tncm91bmQp OworIH0KKyAKKysvKgorKyAgICBcaW50ZXJuYWwKKysKKysgICAgSGlkZXMgYW4gaXRlbSB0aGF0 IHdhcyByZXBsYWNlZCBieSBhIG5ld2VyIG9uZSwgcmF0aGVyIHRoYW4KKysgICAgZGVsZXRpbmcg aXQsIGFzIHRoZSBpdGVtIGlzIHR5cGljYWxseSBjcmVhdGVkIGluIFFNTCBhbmQgaGVuY2UKKysg ICAgd2UgZG9uJ3Qgb3duIGl0LgorKyovCisgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6aGlk ZU9sZEl0ZW0oUVF1aWNrSXRlbSAqaXRlbSkKKyB7CisgICAgIGlmICghaXRlbSkKK0BAIC04NjMs NiArODcwLDI5IEBAIHZvaWQgUVF1aWNrQ29udHJvbFByaXZhdGU6OmhpZGVPbGRJdGVtKFFRdWlj a0l0ZW0gKml0ZW0pCisgI2VuZGlmCisgfQorIAorKy8qCisrICAgIFxpbnRlcm5hbAorKworKyAg ICBOYW1lZCAidW5oaWRlIiBiZWNhdXNlIGl0J3MgdXNlZCBmb3IgY2FzZXMgd2hlcmUgYW4gaXRl bQorKyAgICB0aGF0IHdhcyBwcmV2aW91c2x5IGhpZGRlbiBieSBcbCBoaWRlT2xkSXRlbSgpIHdh bnRzIHRvIGJlCisrICAgIHNob3duIGJ5IGEgY29udHJvbCBhZ2Fpbiwgc3VjaCBhcyBhIFNjcm9s bEJhciBpbiBTY3JvbGxWaWV3LgorKyovCisrdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dW5o aWRlT2xkSXRlbShRUXVpY2tDb250cm9sICpjb250cm9sLCBRUXVpY2tJdGVtICppdGVtKQorK3sK KysgICAgUV9BU1NFUlQoaXRlbSk7CisrICAgIHFDRGVidWcobGNJdGVtTWFuYWdlbWVudCkgPDwg InVuaGlkaW5nIG9sZCBpdGVtIiA8PCBpdGVtOworKworKyAgICBpdGVtLT5zZXRWaXNpYmxlKHRy dWUpOworKyAgICBpdGVtLT5zZXRQYXJlbnRJdGVtKGNvbnRyb2wpOworKworKyNpZiBRVF9DT05G SUcoYWNjZXNzaWJpbGl0eSkKKysgICAgLy8gQWRkIHRoZSBpdGVtIGJhY2sgaW4gdG8gdGhlIGFj Y2Vzc2liaWxpdHkgdHJlZS4KKysgICAgUVF1aWNrQWNjZXNzaWJsZUF0dGFjaGVkICphY2Nlc3Np YmxlID0gYWNjZXNzaWJsZUF0dGFjaGVkKGl0ZW0pOworKyAgICBpZiAoYWNjZXNzaWJsZSkKKysg ICAgICAgIGFjY2Vzc2libGUtPnNldElnbm9yZWQoZmFsc2UpOworKyNlbmRpZgorK30KKysKKyB2 b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1cGRhdGVCYXNlbGluZU9mZnNldCgpCisgeworICAg ICBRX1EoUVF1aWNrQ29udHJvbCk7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMv cXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmggYi9xdHF1aWNrY29udHJvbHMyL3Ny Yy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbF9wX3AuaAoraW5kZXggOGU5NzkwNzllLi5h NmU2MjRjOTEgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRl czIvcXF1aWNrY29udHJvbF9wX3AuaAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0 ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmgKK0BAIC0xNzMsNiArMTczLDcgQEAgcHVibGlj OgorICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUJhY2tncm91bmQoYm9vbCBjb21wbGV0ZSA9IGZh bHNlKTsKKyAKKyAgICAgc3RhdGljIHZvaWQgaGlkZU9sZEl0ZW0oUVF1aWNrSXRlbSAqaXRlbSk7 CisrICAgIHN0YXRpYyB2b2lkIHVuaGlkZU9sZEl0ZW0oUVF1aWNrQ29udHJvbCAqY29udHJvbCwg UVF1aWNrSXRlbSAqaXRlbSk7CisgCisgICAgIHZvaWQgdXBkYXRlQmFzZWxpbmVPZmZzZXQoKTsK KyAKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1 aWNrZGlhbG9nYnV0dG9uYm94LmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxh dGVzMi9xcXVpY2tkaWFsb2didXR0b25ib3guY3BwCitpbmRleCBlNmRiMTRlYjUuLjYxOTdkMTU0 NyAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVp Y2tkaWFsb2didXR0b25ib3guY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcAorQEAgLTIzNyw3ICsyMzcsNyBAQCBz dGF0aWMgUVJlY3RGIGFsaWduZWRSZWN0KFF0OjpMYXlvdXREaXJlY3Rpb24gZGlyZWN0aW9uLCBR dDo6QWxpZ25tZW50IGFsaWdubWVudAorIHZvaWQgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0 ZTo6cmVzaXplQ29udGVudCgpCisgeworICAgICBRX1EoUVF1aWNrRGlhbG9nQnV0dG9uQm94KTsK Ky0gICAgaWYgKCFjb250ZW50SXRlbSkKKysgICAgaWYgKCFjb250ZW50SXRlbSB8fCAhY29udGVu dE1vZGVsKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBRUmVjdEYgZ2VvbWV0cnkgPSBxLT5i b3VuZGluZ1JlY3QoKS5hZGp1c3RlZChxLT5sZWZ0UGFkZGluZygpLCBxLT50b3BQYWRkaW5nKCks IC1xLT5yaWdodFBhZGRpbmcoKSwgLXEtPmJvdHRvbVBhZGRpbmcoKSk7CitAQCAtMzIyLDYgKzMy Miw5IEBAIHZvaWQgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6dXBkYXRlTGF5b3V0KCkK KyBxcmVhbCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpnZXRDb250ZW50V2lkdGgoKSBj b25zdAorIHsKKyAgICAgUV9RKGNvbnN0IFFRdWlja0RpYWxvZ0J1dHRvbkJveCk7CisrICAgIGlm ICghY29udGVudE1vZGVsKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisgICAgIGNvbnN0IGludCBj b3VudCA9IGNvbnRlbnRNb2RlbC0+Y291bnQoKTsKKyAgICAgY29uc3QgcXJlYWwgdG90YWxTcGFj aW5nID0gcU1heCgwLCBjb3VudCAtIDEpICogc3BhY2luZzsKKyAgICAgcXJlYWwgdG90YWxXaWR0 aCA9IHRvdGFsU3BhY2luZzsKK0BAIC0zNDEsNiArMzQ0LDkgQEAgcXJlYWwgUVF1aWNrRGlhbG9n QnV0dG9uQm94UHJpdmF0ZTo6Z2V0Q29udGVudFdpZHRoKCkgY29uc3QKKyBxcmVhbCBRUXVpY2tE aWFsb2dCdXR0b25Cb3hQcml2YXRlOjpnZXRDb250ZW50SGVpZ2h0KCkgY29uc3QKKyB7CisgICAg IFFfUShjb25zdCBRUXVpY2tEaWFsb2dCdXR0b25Cb3gpOworKyAgICBpZiAoIWNvbnRlbnRNb2Rl bCkKKysgICAgICAgIHJldHVybiAwOworKworICAgICBjb25zdCBpbnQgY291bnQgPSBjb250ZW50 TW9kZWwtPmNvdW50KCk7CisgICAgIHFyZWFsIG1heEhlaWdodCA9IDA7CisgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIv c3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcCBiL3F0cXVpY2tjb250cm9sczIv c3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcAoraW5kZXggOTFiZDU5MTg0Li4w Y2U1MThmODQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRl czIvcXF1aWNrb3ZlcmxheS5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVt cGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcAorQEAgLTM5OSw4ICszOTksMTEgQEAgdm9pZCBRUXVp Y2tPdmVybGF5OjppdGVtQ2hhbmdlKEl0ZW1DaGFuZ2UgY2hhbmdlLCBjb25zdCBJdGVtQ2hhbmdl RGF0YSAmZGF0YSkKKyAgICAgUV9EKFFRdWlja092ZXJsYXkpOworICAgICBRUXVpY2tJdGVtOjpp dGVtQ2hhbmdlKGNoYW5nZSwgZGF0YSk7CisgCistICAgIGlmIChjaGFuZ2UgPT0gSXRlbUNoaWxk QWRkZWRDaGFuZ2UgfHwgY2hhbmdlID09IEl0ZW1DaGlsZFJlbW92ZWRDaGFuZ2UpCisrICAgIGlm IChjaGFuZ2UgPT0gSXRlbUNoaWxkQWRkZWRDaGFuZ2UgfHwgY2hhbmdlID09IEl0ZW1DaGlsZFJl bW92ZWRDaGFuZ2UpIHsKKyAgICAgICAgIHNldFZpc2libGUoIWQtPmFsbERyYXdlcnMuaXNFbXB0 eSgpIHx8ICFjaGlsZEl0ZW1zKCkuaXNFbXB0eSgpKTsKKysgICAgICAgIGlmIChkYXRhLml0ZW0t PnBhcmVudCgpID09IGQtPm1vdXNlR3JhYmJlclBvcHVwKQorKyAgICAgICAgICAgIGQtPnNldE1v dXNlR3JhYmJlclBvcHVwKG51bGxwdHIpOworKyAgICB9CisgfQorIAorIHZvaWQgUVF1aWNrT3Zl cmxheTo6Z2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiAmbmV3R2VvbWV0cnksIGNvbnN0IFFS ZWN0RiAmb2xkR2VvbWV0cnkpCitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVp Y2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrc2Nyb2xsYmFyLmNwcAoraW5kZXggNGUyZjUwOWRiLi4xYzRi MzA4Y2QgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIv cXF1aWNrc2Nyb2xsYmFyLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1w bGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAKK0BAIC03OTcsNiArNzk3LDE0IEBAIHZvaWQgUVF1 aWNrU2Nyb2xsQmFyQXR0YWNoZWRQcml2YXRlOjppbml0SG9yaXpvbnRhbCgpCisgICAgIGlmIChw YXJlbnQgJiYgcGFyZW50ID09IGZsaWNrYWJsZS0+cGFyZW50SXRlbSgpKQorICAgICAgICAgaG9y aXpvbnRhbC0+c3RhY2tBZnRlcihmbGlja2FibGUpOworIAorKyAgICAvLyBJZiBhIHNjcm9sbCBi YXIgd2FzIHByZXZpb3VzbHkgaGlkZGVuIChkdWUgdG8gZS5nLiBzZXR0aW5nIGEgbmV3IGNvbnRl bnRJdGVtCisrICAgIC8vIG9uIGEgU2Nyb2xsVmlldyksIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRo YXQgd2UgdW4taGlkZSBpdC4KKysgICAgLy8gV2UgZG9uJ3QgYm90aGVyIGNoZWNraW5nIGlmIHRo ZSBpdGVtIGlzIGFjdHVhbGx5IHRoZSBvbGQgb25lLCBiZWNhdXNlCisrICAgIC8vIGlmIGl0J3Mg bm90LCBhbGwgb2YgdGhlIHRoaW5ncyB0aGUgZnVuY3Rpb24gZG9lcyAoc2V0dGluZyBwYXJlbnQs IHZpc2liaWxpdHksIGV0Yy4pCisrICAgIC8vIHNob3VsZCBiZSBuby1vcHMgYW55d2F5LgorKyAg ICBpZiAoYXV0byBjb250cm9sID0gcW9iamVjdF9jYXN0PFFRdWlja0NvbnRyb2wqPihxX3B0ci0+ cGFyZW50KCkpKQorKyAgICAgICAgUVF1aWNrQ29udHJvbFByaXZhdGU6OnVuaGlkZU9sZEl0ZW0o Y29udHJvbCwgaG9yaXpvbnRhbCk7CisrCisgICAgIGxheW91dEhvcml6b250YWwoKTsKKyAgICAg aG9yaXpvbnRhbC0+c2V0U2l6ZShhcmVhLT5wcm9wZXJ0eSgid2lkdGhSYXRpbyIpLnRvUmVhbCgp KTsKKyAgICAgaG9yaXpvbnRhbC0+c2V0UG9zaXRpb24oYXJlYS0+cHJvcGVydHkoInhQb3NpdGlv biIpLnRvUmVhbCgpKTsKK0BAIC04MTgsNiArODI2LDkgQEAgdm9pZCBRUXVpY2tTY3JvbGxCYXJB dHRhY2hlZFByaXZhdGU6OmluaXRWZXJ0aWNhbCgpCisgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50 ID09IGZsaWNrYWJsZS0+cGFyZW50SXRlbSgpKQorICAgICAgICAgdmVydGljYWwtPnN0YWNrQWZ0 ZXIoZmxpY2thYmxlKTsKKyAKKysgICAgaWYgKGF1dG8gY29udHJvbCA9IHFvYmplY3RfY2FzdDxR UXVpY2tDb250cm9sKj4ocV9wdHItPnBhcmVudCgpKSkKKysgICAgICAgIFFRdWlja0NvbnRyb2xQ cml2YXRlOjp1bmhpZGVPbGRJdGVtKGNvbnRyb2wsIHZlcnRpY2FsKTsKKysKKyAgICAgbGF5b3V0 VmVydGljYWwoKTsKKyAgICAgdmVydGljYWwtPnNldFNpemUoYXJlYS0+cHJvcGVydHkoImhlaWdo dFJhdGlvIikudG9SZWFsKCkpOworICAgICB2ZXJ0aWNhbC0+c2V0UG9zaXRpb24oYXJlYS0+cHJv cGVydHkoInlQb3NpdGlvbiIpLnRvUmVhbCgpKTsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJv bHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwgYi9xdHF1aWNr Y29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwKK2lu ZGV4IDBlOGIwODM1Mi4uY2Q0OTMxMTg0IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi90 ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3Njcm9sbHZpZXcucW1sCisrKysgYi9xdHF1aWNr Y29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwKK0BA IC01NzYsNCArNTc2LDUxIEBAIFRlc3RDYXNlIHsKKyAgICAgICAgIHZlcmlmeShuZXdIb3Jpem9u dGFsU2Nyb2xsQmFyLnZpc2libGUpCisgICAgICAgICB2ZXJpZnkoIW9sZEhvcml6b250YWxTY3Jv bGxCYXIudmlzaWJsZSkKKyAgICAgfQorKworKyAgICBDb21wb25lbnQgeworKyAgICAgICAgaWQ6 IGJpbmRpbmdUb0NvbnRlbnRJdGVtQW5kU3RhbmRhbG9uZUZsaWNrYWJsZQorKworKyAgICAgICAg SXRlbSB7CisrICAgICAgICAgICAgd2lkdGg6IDIwMAorKyAgICAgICAgICAgIGhlaWdodDogMjAw CisrCisrICAgICAgICAgICAgcHJvcGVydHkgYWxpYXMgc2Nyb2xsVmlldzogc2Nyb2xsVmlldwor KworKyAgICAgICAgICAgIFNjcm9sbFZpZXcgeworKyAgICAgICAgICAgICAgICBpZDogc2Nyb2xs VmlldworKyAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorKyAgICAgICAgICAg ICAgICBjb250ZW50SXRlbTogbGlzdFZpZXcKKysKKysgICAgICAgICAgICAgICAgcHJvcGVydHkg SXRlbSBzb21lQmluZGluZzogY29udGVudEl0ZW0KKysgICAgICAgICAgICB9CisrICAgICAgICAg ICAgTGlzdFZpZXcgeworKyAgICAgICAgICAgICAgICBpZDogbGlzdFZpZXcKKysgICAgICAgICAg ICAgICAgbW9kZWw6IDEwCisrICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBJdGVtRGVsZWdhdGUg eworKyAgICAgICAgICAgICAgICAgICAgdGV4dDogbW9kZWxEYXRhCisrICAgICAgICAgICAgICAg ICAgICB3aWR0aDogbGlzdFZpZXcud2lkdGgKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAg ICAgIH0KKysgICAgICAgIH0KKysgICAgfQorKworKyAgICAvLyBUZXN0cyB0aGF0IHNjcm9sbCBi YXJzIHNob3cgdXAgZm9yIGEgU2Nyb2xsVmlldyB3aGVyZQorKyAgICAvLyAtIGl0cyBjb250ZW50 SXRlbSBpcyBkZWNsYXJlZCBhcyBhIHN0YW5kYWxvbmUsIHNlcGFyYXRlIGl0ZW0KKysgICAgLy8g LSB0aGVyZSBpcyBhIGJpbmRpbmcgdG8gY29udGVudEl0ZW0gKHdoaWNoIGNhdXNlcyBhIGRlZmF1 bHQgRmxpY2thYmxlIHRvIGJlIGNyZWF0ZWQpCisrICAgIGZ1bmN0aW9uIHRlc3RfYmluZGluZ1Rv Q29udGVudEl0ZW1BbmRTdGFuZGFsb25lRmxpY2thYmxlKCkgeworKyAgICAgICAgbGV0IHJvb3Qg PSBjcmVhdGVUZW1wb3JhcnlPYmplY3QoYmluZGluZ1RvQ29udGVudEl0ZW1BbmRTdGFuZGFsb25l RmxpY2thYmxlLCB0ZXN0Q2FzZSkKKysgICAgICAgIHZlcmlmeShyb290KQorKworKyAgICAgICAg bGV0IGNvbnRyb2wgPSByb290LnNjcm9sbFZpZXcKKysgICAgICAgIGxldCB2ZXJ0aWNhbFNjcm9s bEJhciA9IGNvbnRyb2wuU2Nyb2xsQmFyLnZlcnRpY2FsCisrICAgICAgICBsZXQgaG9yaXpvbnRh bFNjcm9sbEJhciA9IGNvbnRyb2wuU2Nyb2xsQmFyLmhvcml6b250YWwKKysgICAgICAgIGNvbXBh cmUodmVydGljYWxTY3JvbGxCYXIucGFyZW50LCBjb250cm9sKQorKyAgICAgICAgY29tcGFyZSho b3Jpem9udGFsU2Nyb2xsQmFyLnBhcmVudCwgY29udHJvbCkKKysgICAgICAgIHZlcmlmeSh2ZXJ0 aWNhbFNjcm9sbEJhci52aXNpYmxlKQorKyAgICAgICAgdmVyaWZ5KGhvcml6b250YWxTY3JvbGxC YXIudmlzaWJsZSkKKysKKysgICAgICAgIG1vdXNlRHJhZyh2ZXJ0aWNhbFNjcm9sbEJhciwgdmVy dGljYWxTY3JvbGxCYXIud2lkdGggLyAyLCB2ZXJ0aWNhbFNjcm9sbEJhci5oZWlnaHQgLyAyLCAw LCA1MCkKKysgICAgICAgIHZlcmlmeSh2ZXJ0aWNhbFNjcm9sbEJhci5hY3RpdmUpCisrICAgICAg ICB2ZXJpZnkoaG9yaXpvbnRhbFNjcm9sbEJhci5hY3RpdmUpCisrICAgIH0KKyB9CitkaWZmIC0t Z2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3N3aXRj aC5xbWwgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dp dGNoLnFtbAoraW5kZXggYjNmYWI0MWNhLi4xMGI2YmFhMDIgMTAwNjQ0CistLS0gYS9xdHF1aWNr Y29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFtbAorKysrIGIv cXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwK K0BAIC02MDgsNCArNjA4LDI3IEBAIFRlc3RDYXNlIHsKKyAgICAgICAgIG1vdXNlQ2xpY2soY29u dHJvbC5pbmRpY2F0b3IpCisgICAgICAgICB2ZXJpZnkoY29udHJvbC5hY3RpdmVGb2N1cykKKyAg ICAgfQorKworKyAgICBDb21wb25lbnQgeworKyAgICAgICAgaWQ6IGRlbGV0aW9uT3JkZXIxCisr ICAgICAgICBJdGVtIHsKKysgICAgICAgICAgICBJbWFnZSB7IGlkOiBpbm5lckltYWdlIH0KKysg ICAgICAgICAgICBTd2l0Y2ggeyBpbmRpY2F0b3I6IGlubmVySW1hZ2UgfQorKyAgICAgICAgfQor KyAgICB9CisrCisrICAgIENvbXBvbmVudCB7CisrICAgICAgICBpZDogZGVsZXRpb25PcmRlcjIK KysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAgIFN3aXRjaCB7IGluZGljYXRvcjogaW5uZXJJ bWFnZSB9CisrICAgICAgICAgICAgSW1hZ2UgeyBpZDogaW5uZXJJbWFnZSB9CisrICAgICAgICB9 CisrICAgIH0KKysKKysgICAgZnVuY3Rpb24gdGVzdF9kZWxldGlvbk9yZGVyKCkgeworKyAgICAg ICAgdmFyIGNvbnRyb2wxID0gY3JlYXRlVGVtcG9yYXJ5T2JqZWN0KGRlbGV0aW9uT3JkZXIxLCB0 ZXN0Q2FzZSkKKysgICAgICAgIHZlcmlmeShjb250cm9sMSkKKysgICAgICAgIHZhciBjb250cm9s MiA9IGNyZWF0ZVRlbXBvcmFyeU9iamVjdChkZWxldGlvbk9yZGVyMiwgdGVzdENhc2UpCisrICAg ICAgICB2ZXJpZnkoY29udHJvbDIpCisrICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvcXRxdWlja2Nv bnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL2RhdGEvcmVsZWFzZUFmdGVyRXhpdFRyYW5z aXRpb24ucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL2RhdGEv cmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggMDAwMDAwMDAwLi45ZTQ1OThiOWYKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0cXVpY2tjb250 cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC9kYXRhL3JlbGVhc2VBZnRlckV4aXRUcmFuc2l0 aW9uLnFtbAorQEAgLTAsMCArMSw3OCBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysq KiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0 dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJ Q0VOU0U6QlNEJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBo b2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4K KysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJv dmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3Jk YW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50 IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoq IGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBG b3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBz Oi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBCU0QgTGljZW5zZSBVc2FnZQorKyoq IEFsdGVybmF0aXZlbHksIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEJTRCBsaWNlbnNlCisrKiogYXMgZm9sbG93czoKKysqKgorKyoqICJSZWRpc3RyaWJ1dGlv biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysq KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnMgYXJlCisrKiogbWV0OgorKyoqICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291 cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyoqICAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisr KiogICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg YWJvdmUgY29weXJpZ2h0CisrKiogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyoqICAgICB0aGUgZG9jdW1lbnRhdGlv biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrKiogICAgIGRpc3Ry aWJ1dGlvbi4KKysqKiAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBUaGUgUXQgQ29tcGFueSBMdGQg bm9yIHRoZSBuYW1lcyBvZiBpdHMKKysqKiAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisrKiogICAgIGZyb20gdGhpcyBz b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKysqKgor KyoqCisrKiogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF UlMgQU5EIENPTlRSSUJVVE9SUworKyoqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisrKiogTElNSVRFRCBUTywgVEhFIElN UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisrKiog QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI RSBDT1BZUklHSFQKKysqKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysqKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisrKiogTElNSVRFRCBU TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV U0UsCisrKiogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF VkVSIENBVVNFRCBBTkQgT04gQU5ZCisrKiogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKyoqIChJTkNMVURJTkcgTkVH TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor KyoqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg T0YgU1VDSCBEQU1BR0UuIgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKysKKytpbXBvcnQgUXRRdWljayAyLjE1CisraW1wb3J0IFF0UXVpY2su Q29udHJvbHMgMi4xNQorKworK0FwcGxpY2F0aW9uV2luZG93IHsKKysgICAgaWQ6IHdpbmRvdwor KyAgICB3aWR0aDogNDAwCisrICAgIGhlaWdodDogNDAwCisrICAgIHRpdGxlOiAicmVsZWFzZUFm dGVyRXhpdFRyYW5zaXRpb24iCisrCisrICAgIHByb3BlcnR5IGFsaWFzIHBvcHVwOiBwb3B1cAor KyAgICBwcm9wZXJ0eSBhbGlhcyBtb2RhbFBvcHVwOiBtb2RhbFBvcHVwCisrCisrICAgIFBvcHVw IHsKKysgICAgICAgIGlkOiBwb3B1cAorKyAgICAgICAgeTogcGFyZW50LmhlaWdodCAtIGhlaWdo dAorKyAgICAgICAgd2lkdGg6IDUwCisrICAgICAgICBoZWlnaHQ6IDUwCisrICAgIH0KKysKKysg ICAgUG9wdXAgeworKyAgICAgICAgaWQ6IG1vZGFsUG9wdXAKKysgICAgICAgIG1vZGFsOiB0cnVl CisrICAgICAgICB5OiBwYXJlbnQuaGVpZ2h0IC0gaGVpZ2h0CisrICAgICAgICB3aWR0aDogNTAK KysgICAgICAgIGhlaWdodDogNTAKKysgICAgICAgIGV4aXQ6ICBUcmFuc2l0aW9uIHsgUGF1c2VB bmltYXRpb24geyBkdXJhdGlvbjogMTAwIH0gfQorKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL3F0 cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC90c3RfcXF1aWNrcG9wdXAuY3Bw IGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1 cC5jcHAKK2luZGV4IDU0OTUyZDEyOC4uM2Q1MGUyZGQ0IDEwMDY0NAorLS0tIGEvcXRxdWlja2Nv bnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5jcHAKKysrKyBi L3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC90c3RfcXF1aWNrcG9wdXAu Y3BwCitAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgaW52aXNp YmxlVG9vbFRpcE9wZW4oKTsKKyAgICAgdm9pZCBjZW50ZXJJbk92ZXJsYXlXaXRoaW5TdGFja1Zp ZXdJdGVtKCk7CisgICAgIHZvaWQgZGVzdHJveUR1cmluZ0V4aXRUcmFuc2l0aW9uKCk7CisrICAg IHZvaWQgcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24oKTsKKyB9OworIAorIHZvaWQgdHN0X1FR dWlja1BvcHVwOjppbml0VGVzdENhc2UoKQorQEAgLTE1NzUsNiArMTU3NiwzNCBAQCB2b2lkIHRz dF9RUXVpY2tQb3B1cDo6ZGVzdHJveUR1cmluZ0V4aXRUcmFuc2l0aW9uKCkKKyAgICAgUVZFUklG WSghYnV0dG9uLT5pc0Rvd24oKSk7CisgfQorIAorK3ZvaWQgdHN0X1FRdWlja1BvcHVwOjpyZWxl YXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbigpCisreworKyAgICBRUXVpY2tBcHBsaWNhdGlvbkhlbHBl ciBoZWxwZXIodGhpcywgInJlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbCIpOworKyAgICBR VkVSSUZZMihoZWxwZXIucmVhZHksIGhlbHBlci5mYWlsdXJlTWVzc2FnZSgpKTsKKysKKysgICAg UVF1aWNrV2luZG93ICp3aW5kb3cgPSBoZWxwZXIud2luZG93OworKyAgICB3aW5kb3ctPnNob3co KTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dBY3RpdmUod2luZG93KSk7Cisr CisrICAgIFFRdWlja092ZXJsYXkgKm92ZXJsYXkgPSBRUXVpY2tPdmVybGF5OjpvdmVybGF5KHdp bmRvdyk7CisrICAgIFFRdWlja1BvcHVwICptb2RhbFBvcHVwID0gd2luZG93LT5wcm9wZXJ0eSgi bW9kYWxQb3B1cCIpLnZhbHVlPFFRdWlja1BvcHVwICo+KCk7CisrICAgIFFRdWlja1BvcHVwICpw b3B1cCA9IHdpbmRvdy0+cHJvcGVydHkoInBvcHVwIikudmFsdWU8UVF1aWNrUG9wdXAgKj4oKTsK KysKKysgICAgbW9kYWxQb3B1cC0+b3BlbigpOworKyAgICBRVFJZX1ZFUklGWShtb2RhbFBvcHVw LT5pc09wZW5lZCgpKTsKKysKKysgICAgUVRlc3Q6Om1vdXNlUHJlc3Mod2luZG93LCBRdDo6TGVm dEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIsIFFQb2ludCgxLCAxKSk7CisrICAgIC8vIHdhaXQgdW50 aWwgdGhlIHRyYW5zaXRpb24gaXMgZmluaXNoZWQgYW5kIHRoZSBvdmVybGF5IGhpZGVzIGl0c2Vs ZgorKyAgICBRVFJZX1ZFUklGWSghb3ZlcmxheS0+aXNWaXNpYmxlKCkpOworKyAgICBRVGVzdDo6 bW91c2VSZWxlYXNlKHdpbmRvdywgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyLCBRUG9p bnQoMSwgMSkpOworKworKyAgICBwb3B1cC0+b3BlbigpOworKyAgICBRVFJZX1ZFUklGWShwb3B1 cC0+aXNPcGVuZWQoKSk7CisrICAgIFFUZXN0Ojptb3VzZUNsaWNrKHdpbmRvdywgUXQ6OkxlZnRC dXR0b24sIFF0OjpOb01vZGlmaWVyLCBRUG9pbnQoMSwgMSkpOworKyAgICBRVFJZX1ZFUklGWSgh cG9wdXAtPmlzT3BlbmVkKCkpOworK30KKysKKysKKyBRVEVTVF9RVUlDS0NPTlRST0xTX01BSU4o dHN0X1FRdWlja1BvcHVwKQorIAorICNpbmNsdWRlICJ0c3RfcXF1aWNrcG9wdXAubW9jIgorU3Vi bW9kdWxlIHF0c2NyaXB0IDViZTk1Zjk2Li4uNGQ4ZTRiZDIgKGNvbW1pdHMgbm90IHByZXNlbnQp CitTdWJtb2R1bGUgcXRzcGVlY2ggMTdmYzlmZGUuLjI1NTg0NWUyOgorZGlmZiAtLWdpdCBhL3F0 c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3Bl ZWNoZC5jcHAgYi9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hlci9xdGV4 dHRvc3BlZWNoX3NwZWVjaGQuY3BwCitpbmRleCA2ZWI3NGI4Li5iY2M3ZGQxIDEwMDY0NAorLS0t IGEvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVj aF9zcGVlY2hkLmNwcAorKysrIGIvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3NwZWVjaGRpc3Bh dGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcAorQEAgLTM1Nyw3ICszNTcsOSBAQCBRVmVj dG9yPFFMb2NhbGU+IFFUZXh0VG9TcGVlY2hFbmdpbmVTcGVlY2hkOjphdmFpbGFibGVMb2NhbGVz KCkgY29uc3QKKyAKKyBRVmVjdG9yPFFWb2ljZT4gUVRleHRUb1NwZWVjaEVuZ2luZVNwZWVjaGQ6 OmF2YWlsYWJsZVZvaWNlcygpIGNvbnN0CisgeworLSAgICByZXR1cm4gbV92b2ljZXMudmFsdWVz KG1fY3VycmVudExvY2FsZS5uYW1lKCkpLnRvVmVjdG9yKCk7CisrICAgIFFMaXN0PFFWb2ljZT4g cmVzdWx0TGlzdCA9IG1fdm9pY2VzLnZhbHVlcyhtX2N1cnJlbnRMb2NhbGUubmFtZSgpKTsKKysg ICAgc3RkOjpyZXZlcnNlKHJlc3VsdExpc3QuYmVnaW4oKSwgcmVzdWx0TGlzdC5lbmQoKSk7Cisr ICAgIHJldHVybiByZXN1bHRMaXN0LnRvVmVjdG9yKCk7CisgfQorIAorIC8vIFdlIGhhdmUgbm8g d2F5IG9mIGtub3dpbmcgb3VyIG93biBjbGllbnRfaWQgc2luY2Ugc3BlZWNoLWRpc3BhdGNoZXIg c2VlbXMgdG8gYmUgaW5jb21wbGV0ZQorU3VibW9kdWxlIHF0c3ZnIDBjMDU3ODBlLi5hN2EwZjI0 OToKK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdp b2hhbmRsZXIuY3BwIGIvcXRzdmcvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3N2Zy9xc3ZnaW9o YW5kbGVyLmNwcAoraW5kZXggNTYxZTc3ZS4uMTJlMDU3NCAxMDA2NDQKKy0tLSBhL3F0c3ZnL3Ny Yy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAKKysrKyBiL3F0c3Zn L3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAKK0BAIC0xOTEs NiArMTkxLDggQEAgYm9vbCBRU3ZnSU9IYW5kbGVyOjpyZWFkKFFJbWFnZSAqaW1hZ2UpCisgICAg ICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgaWYgKCFmaW5hbFNpemUuaXNFbXB0eSgp KSB7CisrICAgICAgICAgICAgaWYgKHFNYXgoZmluYWxTaXplLndpZHRoKCksIGZpbmFsU2l6ZS5o ZWlnaHQoKSkgPiAweGZmZmYpCisrICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQXNz dW1lIGNvcnJ1cHRlZCBmaWxlCisgICAgICAgICAgICAgaW1hZ2UtPmZpbGwoZC0+YmFja0NvbG9y LnJnYmEoKSk7CisgICAgICAgICAgICAgUVBhaW50ZXIgcChpbWFnZSk7CisgICAgICAgICAgICAg ZC0+ci5yZW5kZXIoJnAsIGJvdW5kcyk7CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3N2Zy9xc3Zn aGFuZGxlci5jcHAgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNwcAoraW5kZXggYTVmODc3 Zi4uOGRkYTU2MyAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwCisr KysgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNwcAorQEAgLTEzOTMsOSArMTM5MywxMCBA QCBzdGF0aWMgdm9pZCBwYXJzZUZvbnQoUVN2Z05vZGUgKm5vZGUsCisgICAgICAgICBjYXNlIEZv bnRTaXplTm9uZToKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNhc2UgRm9udFNpemVW YWx1ZTogeworLSAgICAgICAgICAgIFFTdmdIYW5kbGVyOjpMZW5ndGhUeXBlIGR1bW15OyAvLyBz aG91bGQgYWx3YXlzIGJlIHBpeGVsIHNpemUKKy0gICAgICAgICAgICBmb250U3R5bGUtPnNldFNp emUocU1pbihwYXJzZUxlbmd0aChhdHRyaWJ1dGVzLmZvbnRTaXplLCBkdW1teSwgaGFuZGxlciks CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXJlYWwoMHhmZmZmKSkpOwor KyAgICAgICAgICAgIFFTdmdIYW5kbGVyOjpMZW5ndGhUeXBlIHR5cGU7CisrICAgICAgICAgICAg cXJlYWwgZnMgPSBwYXJzZUxlbmd0aChhdHRyaWJ1dGVzLmZvbnRTaXplLCB0eXBlLCBoYW5kbGVy KTsKKysgICAgICAgICAgICBmcyA9IGNvbnZlcnRUb1BpeGVscyhmcywgdHJ1ZSwgdHlwZSk7Cisr ICAgICAgICAgICAgZm9udFN0eWxlLT5zZXRTaXplKHFNaW4oZnMsIHFyZWFsKDB4ZmZmZikpKTsK KyAgICAgICAgIH0KKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGRlZmF1bHQ6CitAQCAt MjUxMyw2ICsyNTE0LDggQEAgc3RhdGljIGJvb2wgcGFyc2VBbmltYXRlVHJhbnNmb3JtTm9kZShR U3ZnTm9kZSAqcGFyZW50LAorICAgICAgICAgICAgICsrczsKKyAgICAgICAgIH0KKyAgICAgfQor KyAgICBpZiAodmFscy5jb3VudCgpICUgMyAhPSAwKQorKyAgICAgICAgcmV0dXJuIGZhbHNlOwor IAorICAgICBib29sIG9rID0gdHJ1ZTsKKyAgICAgaW50IGJlZ2luID0gcGFyc2VDbG9ja1ZhbHVl KGJlZ2luU3RyLCAmb2spOworQEAgLTI1NzYsNiArMjU3OSw4IEBAIHN0YXRpYyBRU3ZnTm9kZSAq Y3JlYXRlQ2lyY2xlTm9kZShRU3ZnTm9kZSAqcGFyZW50LAorICAgICBxcmVhbCBuY3ggPSB0b0Rv dWJsZShjeCk7CisgICAgIHFyZWFsIG5jeSA9IHRvRG91YmxlKGN5KTsKKyAgICAgcXJlYWwgbnIg ID0gdG9Eb3VibGUocik7CisrICAgIGlmIChuciA8IDAuMCkKKysgICAgICAgIHJldHVybiBudWxs cHRyOworIAorICAgICBRUmVjdEYgcmVjdChuY3gtbnIsIG5jeS1uciwgbnIqMiwgbnIqMik7Cisg ICAgIFFTdmdOb2RlICpjaXJjbGUgPSBuZXcgUVN2Z0NpcmNsZShwYXJlbnQsIHJlY3QpOworQEAg LTMwNDYsMTUgKzMwNTEsMTYgQEAgc3RhdGljIFFTdmdTdHlsZVByb3BlcnR5ICpjcmVhdGVSYWRp YWxHcmFkaWVudE5vZGUoUVN2Z05vZGUgKm5vZGUsCisgCisgICAgIHFyZWFsIG5jeCA9IDAuNTsK KyAgICAgcXJlYWwgbmN5ID0gMC41OworLSAgICBxcmVhbCBuciAgPSAwLjU7CisgICAgIGlmICgh Y3guaXNFbXB0eSgpKQorICAgICAgICAgbmN4ID0gdG9Eb3VibGUoY3gpOworICAgICBpZiAoIWN5 LmlzRW1wdHkoKSkKKyAgICAgICAgIG5jeSA9IHRvRG91YmxlKGN5KTsKKysKKysgICAgcXJlYWwg bnIgPSAwLjA7CisgICAgIGlmICghci5pc0VtcHR5KCkpCisgICAgICAgICBuciA9IHRvRG91Ymxl KHIpOworLSAgICBpZiAobnIgPCAwLjUpCistICAgICAgICBuciA9IDAuNTsKKysgICAgaWYgKG5y IDw9IDAuMCkKKysgICAgICAgIHJldHVybiBudWxscHRyOworIAorICAgICBxcmVhbCBuZnggPSBu Y3g7CisgICAgIGlmICghZnguaXNFbXB0eSgpKQorQEAgLTMzNTAsNyArMzM1Niw5IEBAIHN0YXRp YyBRU3ZnTm9kZSAqY3JlYXRlVGV4dE5vZGUoUVN2Z05vZGUgKnBhcmVudCwKKyAgICAgLy8jIyMg ZWRpdGFibGUgYW5kIHJvdGF0ZSBub3QgaGFuZGxlZAorICAgICBRU3ZnSGFuZGxlcjo6TGVuZ3Ro VHlwZSB0eXBlOworICAgICBxcmVhbCBueCA9IHBhcnNlTGVuZ3RoKHgsIHR5cGUsIGhhbmRsZXIp OworKyAgICBueCA9IGNvbnZlcnRUb1BpeGVscyhueCwgdHJ1ZSwgdHlwZSk7CisgICAgIHFyZWFs IG55ID0gcGFyc2VMZW5ndGgoeSwgdHlwZSwgaGFuZGxlcik7CisrICAgIG55ID0gY29udmVydFRv UGl4ZWxzKG55LCB0cnVlLCB0eXBlKTsKKyAKKyAgICAgUVN2Z05vZGUgKnRleHQgPSBuZXcgUVN2 Z1RleHQocGFyZW50LCBRUG9pbnRGKG54LCBueSkpOworICAgICByZXR1cm4gdGV4dDsKK0BAIC0z NjkxLDkgKzM2OTksNyBAQCB2b2lkIFFTdmdIYW5kbGVyOjpwYXJzZSgpCisgICAgICAgICBjYXNl IFFYbWxTdHJlYW1SZWFkZXI6OkVuZEVsZW1lbnQ6CisgICAgICAgICAgICAgZW5kRWxlbWVudCh4 bWwtPm5hbWUoKSk7CisgICAgICAgICAgICAgKytyZW1haW5pbmdVbmZpbmlzaGVkRWxlbWVudHM7 CistICAgICAgICAgICAgLy8gaWYgd2UgYXJlIHVzaW5nIHNvbWVib2R5IGVsc2UncyBxeG1sc3Ry ZWFtcmVhZGVyCistICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIG5vdCByZWFkIHVudGlsIHRoZSBl bmQgb2YgdGhlIHN0cmVhbQorLSAgICAgICAgICAgIGRvbmUgPSAhbV9vd25zUmVhZGVyICYmICh4 bWwtPm5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJzdmciKSk7CisrICAgICAgICAgICAgZG9uZSA9 ICh4bWwtPm5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJzdmciKSk7CisgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICBjYXNlIFFYbWxTdHJlYW1SZWFkZXI6OkNoYXJhY3RlcnM6CisgICAgICAg ICAgICAgY2hhcmFjdGVycyh4bWwtPnRleHQoKSk7CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3N2 Zy9xc3Znc3RydWN0dXJlLmNwcCBiL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAKK2lu ZGV4IGI4OTYwOGIuLjg5YzllNGUgMTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvc3ZnL3FzdmdzdHJ1 Y3R1cmUuY3BwCisrKysgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdzdHJ1Y3R1cmUuY3BwCitAQCAtMjU1 LDkgKzI1NSwxMyBAQCBpbmxpbmUgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRTdmdGZWF0dXJlKGNv bnN0IFFTdHJpbmcgJnN0cikKKyAgICAgfTsKKyAKKyAgICAgaWYgKHN0ci5sZW5ndGgoKSA8PSBN QVhfV09SRF9MRU5HVEggJiYgc3RyLmxlbmd0aCgpID49IE1JTl9XT1JEX0xFTkdUSCkgeworKyAg ICAgICAgY29uc3QgY2hhcjE2X3QgdW5pY29kZTQ0ID0gc3RyLmF0KDQ0KS51bmljb2RlKCk7Cisr ICAgICAgICBjb25zdCBjaGFyMTZfdCB1bmljb2RlNDUgPSBzdHIuYXQoNDUpLnVuaWNvZGUoKTsK KysgICAgICAgIGlmICh1bmljb2RlNDQgPj0gc2l6ZW9mKGFzc29fdmFsdWVzKSB8fCB1bmljb2Rl NDUgPj0gc2l6ZW9mKGFzc29fdmFsdWVzKSkKKysgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgICAgICBjb25zdCBpbnQga2V5ID0gc3RyLmxlbmd0aCgpCistICAgICAgICAgICAgICAgICAg ICAgICAgKyBhc3NvX3ZhbHVlc1tzdHIuYXQoNDUpLnVuaWNvZGUoKV0KKy0gICAgICAgICAgICAg ICAgICAgICAgICArIGFzc29fdmFsdWVzW3N0ci5hdCg0NCkudW5pY29kZSgpXTsKKysgICAgICAg ICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3VuaWNvZGU0NV0KKysgICAgICAgICAgICAg ICAgICAgICAgICArIGFzc29fdmFsdWVzW3VuaWNvZGU0NF07CisgICAgICAgICBpZiAoa2V5IDw9 IE1BWF9IQVNIX1ZBTFVFICYmIGtleSA+PSAwKQorICAgICAgICAgICAgIHJldHVybiBzdHIgPT0g UUxhdGluMVN0cmluZyh3b3JkbGlzdFtrZXldKTsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0c3Zn L3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAgYi9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9j dW1lbnQuY3BwCitpbmRleCA2M2QwNzk3Li4xOWU3MTU0IDEwMDY0NAorLS0tIGEvcXRzdmcvc3Jj L3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcAorKysrIGIvcXRzdmcvc3JjL3N2Zy9xc3ZndGlueWRv Y3VtZW50LmNwcAorQEAgLTQzMyw4ICs0MzMsMTYgQEAgdm9pZCBRU3ZnVGlueURvY3VtZW50Ojpk cmF3KFFQYWludGVyICpwLCBRU3ZnRXh0cmFTdGF0ZXMgJikKKyAgICAgZHJhdyhwKTsKKyB9Cisg Cisrc3RhdGljIGJvb2wgaXNWYWxpZE1hdHJpeChjb25zdCBRVHJhbnNmb3JtICZ0cmFuc2Zvcm0p CisreworKyAgICBxcmVhbCBkZXRlcm1pbmFudCA9IHRyYW5zZm9ybS5kZXRlcm1pbmFudCgpOwor KyAgICByZXR1cm4gcUlzRmluaXRlKGRldGVybWluYW50KTsKKyt9CisrCisgdm9pZCBRU3ZnVGlu eURvY3VtZW50OjptYXBTb3VyY2VUb1RhcmdldChRUGFpbnRlciAqcCwgY29uc3QgUVJlY3RGICZ0 YXJnZXRSZWN0LCBjb25zdCBRUmVjdEYgJnNvdXJjZVJlY3QpCisgeworKyAgICBRVHJhbnNmb3Jt IG9sZFRyYW5zZm9ybSA9IHAtPndvcmxkVHJhbnNmb3JtKCk7CisrCisgICAgIFFSZWN0RiB0YXJn ZXQgPSB0YXJnZXRSZWN0OworICAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkgeworICAgICAgICAg UVBhaW50RGV2aWNlICpkZXYgPSBwLT5kZXZpY2UoKTsKK0BAIC00ODcsNiArNDk1LDkgQEAgdm9p ZCBRU3ZnVGlueURvY3VtZW50OjptYXBTb3VyY2VUb1RhcmdldChRUGFpbnRlciAqcCwgY29uc3Qg UVJlY3RGICZ0YXJnZXRSZWN0LAorICAgICAgICAgfQorICNlbmRpZgorICAgICB9CisrCisrICAg IGlmICghaXNWYWxpZE1hdHJpeChwLT53b3JsZFRyYW5zZm9ybSgpKSkKKysgICAgICAgIHAtPnNl dFdvcmxkVHJhbnNmb3JtKG9sZFRyYW5zZm9ybSk7CisgfQorIAorIFFSZWN0RiBRU3ZnVGlueURv Y3VtZW50Ojpib3VuZHNPbkVsZW1lbnQoY29uc3QgUVN0cmluZyAmaWQpIGNvbnN0CitkaWZmIC0t Z2l0IGEvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0X3FzdmdyZW5kZXJlci5jcHAg Yi9xdHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcAoraW5k ZXggMzZjNzZlYy4uZGI3MWUwMiAxMDA2NDQKKy0tLSBhL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2Z3Jl bmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIuY3BwCisrKysgYi9xdHN2Zy90ZXN0cy9hdXRvL3Fzdmdy ZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcAorQEAgLTg2LDYgKzg2LDggQEAgcHJpdmF0ZSBz bG90czoKKyAgICAgdm9pZCBvc3NfZnV6el8yMzczMSgpOworICAgICB2b2lkIG9zc19mdXp6XzI0 MTMxKCk7CisgICAgIHZvaWQgb3NzX2Z1enpfMjQ3MzgoKTsKKysgICAgdm9pZCBpbGxlZ2FsQW5p bWF0ZVRyYW5zZm9ybV9kYXRhKCk7CisrICAgIHZvaWQgaWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm0o KTsKKyAKKyAjaWZuZGVmIFFUX05PX0NPTVBSRVNTCisgICAgIHZvaWQgdGVzdEd6TG9hZGluZygp OworQEAgLTE2NDYsNSArMTY0OCwyMiBAQCB2b2lkIHRzdF9RU3ZnUmVuZGVyZXI6Om9zc19mdXp6 XzI0NzM4KCkKKyAgICAgUVN2Z1JlbmRlcmVyKCkubG9hZChRQnl0ZUFycmF5KCI8c3ZnPjxwYXRo IGQ9XCJhIDIgMWUtMjEyLi4uLi5cIj4iKSk7CisgfQorIAorK3ZvaWQgdHN0X1FTdmdSZW5kZXJl cjo6aWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm1fZGF0YSgpCisreworKyAgICBRVGVzdDo6YWRkQ29s dW1uPFFCeXRlQXJyYXk+KCJzdmciKTsKKysKKysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTEiKSA8 PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5cGU9XCJyb3RhdGVcIiBiZWdp bj1cIjFcIiBkdXI9XCIyXCIgdmFsdWVzPVwiOCwwLDUsMFwiPiIpOworKyAgICBRVGVzdDo6bmV3 Um93KCJjYXNlMiIpIDw8IFFCeXRlQXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1c InJvdGF0ZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiB2YWx1ZXM9XCIxLDJcIj4iKTsKKysgICAg UVRlc3Q6Om5ld1JvdygiY2FzZTMiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNm b3JtIHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgZnJvbT1cIi4uIDUgMlwi IHRvPVwiZlwiPiIpOworKyAgICBRVGVzdDo6bmV3Um93KCJjYXNlNCIpIDw8IFFCeXRlQXJyYXko Ijxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1cInNjYWxlXCIgYmVnaW49XCIxXCIgZHVyPVwi MlwiIGJ5PVwiLS0sLi5cIj4iKTsKKyt9CisrCisrdm9pZCB0c3RfUVN2Z1JlbmRlcmVyOjppbGxl Z2FsQW5pbWF0ZVRyYW5zZm9ybSgpCisreworKyAgICBRRkVUQ0goUUJ5dGVBcnJheSwgc3ZnKTsK KysgICAgUVN2Z1JlbmRlcmVyIHJlbmRlcmVyOworKyAgICBRVkVSSUZZKCFyZW5kZXJlci5sb2Fk KHN2ZykpOyAvLyBhbHNvIHNob3VsZG4ndCBhc3NlcnQKKyt9CisrCisgUVRFU1RfTUFJTih0c3Rf UVN2Z1JlbmRlcmVyKQorICNpbmNsdWRlICJ0c3RfcXN2Z3JlbmRlcmVyLm1vYyIKK1N1Ym1vZHVs ZSBxdHRvb2xzIDY5MTRmN2M4Li4wOTBlNTI2ZToKK2RpZmYgLS1naXQgYS9xdHRvb2xzL3NyYy9h c3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAgYi9xdHRvb2xzL3NyYy9h c3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAKK2luZGV4IGZlYWIxZTJk NS4uY2JmYjgyNTA3IDEwMDY0NAorLS0tIGEvcXR0b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2Vu ZXJhdG9yL2hlbHBnZW5lcmF0b3IuY3BwCisrKysgYi9xdHRvb2xzL3NyYy9hc3Npc3RhbnQvcWhl bHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAKK0BAIC00NDUsNyArNDQ1LDkgQEAgYm9vbCBI ZWxwR2VuZXJhdG9yUHJpdmF0ZTo6aW5zZXJ0RmlsZXMoY29uc3QgUVN0cmluZ0xpc3QgJmZpbGVz LCBjb25zdCBRU3RyaW5nICYKKyAgICAgaWYgKGZpbHRlclNldElkIDwgMCkKKyAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgKytmaWx0ZXJTZXRJZDsKKy0gICAgZm9yIChpbnQgYXR0SWQgOiBx QXNDb25zdChmaWx0ZXJBdHRzKSkgeworKyAgICBRTGlzdDxpbnQ+IGF0dFZhbHVlcyA9IGZpbHRl ckF0dHMudmFsdWVzKCk7CisrICAgIHN0ZDo6c29ydChhdHRWYWx1ZXMuYmVnaW4oKSwgYXR0VmFs dWVzLmVuZCgpKTsKKysgICAgZm9yIChpbnQgYXR0SWQgOiBxQXNDb25zdChhdHRWYWx1ZXMpKSB7 CisgICAgICAgICBtX3F1ZXJ5LT5wcmVwYXJlKFFMYXRpbjFTdHJpbmcoIklOU0VSVCBJTlRPIEZp bGVBdHRyaWJ1dGVTZXRUYWJsZSAiCisgICAgICAgICAgICAgIlZBTFVFUyg/LCA/KSIpKTsKKyAg ICAgICAgIG1fcXVlcnktPmJpbmRWYWx1ZSgwLCBmaWx0ZXJTZXRJZCk7CitTdWJtb2R1bGUgcXR3 YXlsYW5kIGRmYjAxMjljLi4yOTA0ZTFiMzoKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9jb25maWd1cmUuanNvbiBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2NvbmZpZ3VyZS5qc29u CitpbmRleCAyZjQyNDU4MC4uMjkyMjIzNTcgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9jb25maWd1cmUuanNvbgorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJl Lmpzb24KK0BAIC0xNDksOCArMTQ5LDcgQEAKKyAgICAgICAgICAgICAgICAgICAgICIjZW5kaWYi CisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICJsaWJz IjogIi1sZHJtIiwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIKKysgICAgICAgICAgICAidXNl IjogImRybSBlZ2wiCisgICAgICAgICB9LAorICAgICAgICAgInZ1bGthbi1zZXJ2ZXItYnVmZmVy IjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJWdWxrYW4gQnVmZmVyIFNoYXJpbmciLAorQEAg LTE2OCw3ICsxNjcsOCBAQAorICAgICAgICAgICAgICAgICAgICAgImV4cG9ydEFsbG9jSW5mby5o YW5kbGVUeXBlcyA9IFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQRV9PUEFRVUVfRkRfQklU X0tIUjsiLAorICAgICAgICAgICAgICAgICAgICAgInJldHVybiAwOyIKKyAgICAgICAgICAgICAg ICAgXQorLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9LAorKyAgICAgICAgICAgICJ1c2Ui OiAid2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9LAorICAgICAgICAgImVnbF8xXzUtd2F5bGFu ZCI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAiRUdMIDEuNSB3aXRoIFdheWxhbmQgUGxhdGZv cm0iLAorQEAgLTE4Myw3ICsxODMsNyBAQAorICAgICAgICAgICAgICAgICAgICAgImVnbEdldFBs YXRmb3JtRGlzcGxheShFR0xfUExBVEZPUk1fV0FZTEFORF9FWFQsIChzdHJ1Y3Qgd2xfZGlzcGxh eSAqKShudWxscHRyKSwgbnVsbHB0cik7IgorICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg ICAgfSwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIKKysgICAgICAgICAgICAidXNlIjogImVn bCB3YXlsYW5kLWNsaWVudCIKKyAgICAgICAgIH0KKyAgICAgfSwKKyAKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uY3BwIGIv cXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcAor aW5kZXggMTI1YjFlMTkuLmVkY2NmZTYzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcAorQEAgLTc0LDcgKzc0 LDEwIEBAIHZvaWQgUVdheWxhbmRDbGllbnRFeHRlbnNpb25Qcml2YXRlOjpoYW5kbGVSZWdpc3Ry eUdsb2JhbCh2b2lkICpkYXRhLCA6OndsX3JlZ2lzCisgdm9pZCBRV2F5bGFuZENsaWVudEV4dGVu c2lvbjo6YWRkUmVnaXN0cnlMaXN0ZW5lcigpCisgeworICAgICBRX0QoUVdheWxhbmRDbGllbnRF eHRlbnNpb24pOworLSAgICBkLT53YXlsYW5kSW50ZWdyYXRpb24tPmRpc3BsYXkoKS0+YWRkUmVn aXN0cnlMaXN0ZW5lcigmUVdheWxhbmRDbGllbnRFeHRlbnNpb25Qcml2YXRlOjpoYW5kbGVSZWdp c3RyeUdsb2JhbCwgdGhpcyk7CisrICAgIGlmICghZC0+cmVnaXN0ZXJlZCkgeworKyAgICAgICAg ZC0+d2F5bGFuZEludGVncmF0aW9uLT5kaXNwbGF5KCktPmFkZFJlZ2lzdHJ5TGlzdGVuZXIoJlFX YXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwsIHRoaXMp OworKyAgICAgICAgZC0+cmVnaXN0ZXJlZCA9IHRydWU7CisrICAgIH0KKyB9CisgCisgUVdheWxh bmRDbGllbnRFeHRlbnNpb246OlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXIp CitAQCAtODgsNiArOTEsMTMgQEAgUVdheWxhbmRDbGllbnRFeHRlbnNpb246OlFXYXlsYW5kQ2xp ZW50RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXIpCisgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRo b2QodGhpcywgImFkZFJlZ2lzdHJ5TGlzdGVuZXIiLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7Cisg fQorIAorK1FXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjp+UVdheWxhbmRDbGllbnRFeHRlbnNpb24o KQorK3sKKysgICAgUV9EKFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKTsKKysgICAgaWYgKGQtPnJl Z2lzdGVyZWQgJiYgIVFDb3JlQXBwbGljYXRpb246OmNsb3NpbmdEb3duKCkpCisrICAgICAgICBk LT53YXlsYW5kSW50ZWdyYXRpb24tPmRpc3BsYXkoKS0+cmVtb3ZlTGlzdGVuZXIoJlFXYXlsYW5k Q2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwsIHRoaXMpOworK30K KysKKyBRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kSW50ZWdyYXRpb24gKlFXYXlsYW5kQ2xpZW50 RXh0ZW5zaW9uOjppbnRlZ3JhdGlvbigpIGNvbnN0CisgeworICAgICBRX0QoY29uc3QgUVdheWxh bmRDbGllbnRFeHRlbnNpb24pOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2ds b2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xv YmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmgKK2luZGV4IDk4MjcyZTU3Li41YmQyODM5OCAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4 dGVuc2lvbi5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGll bnRleHRlbnNpb24uaAorQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9F WFBPUlQgUVdheWxhbmRDbGllbnRFeHRlbnNpb24gOiBwdWJsaWMgUU9iamVjdAorICAgICBRX1BS T1BFUlRZKGJvb2wgYWN0aXZlIFJFQUQgaXNBY3RpdmUgTk9USUZZIGFjdGl2ZUNoYW5nZWQpCisg cHVibGljOgorICAgICBRV2F5bGFuZENsaWVudEV4dGVuc2lvbihjb25zdCBpbnQgdmVyc2lvbik7 CisrICAgIH5RV2F5bGFuZENsaWVudEV4dGVuc2lvbigpOworIAorICAgICBRdFdheWxhbmRDbGll bnQ6OlFXYXlsYW5kSW50ZWdyYXRpb24gKmludGVncmF0aW9uKCkgY29uc3Q7CisgICAgIGludCB2 ZXJzaW9uKCkgY29uc3Q7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFs L3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2Jh bC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgKK2luZGV4IDY5Y2M0NmEwLi45MDkxZWZiZSAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4 dGVuc2lvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNs aWVudGV4dGVuc2lvbl9wLmgKK0BAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKKyAgICAgUXRXYXls YW5kQ2xpZW50OjpRV2F5bGFuZEludGVncmF0aW9uICp3YXlsYW5kSW50ZWdyYXRpb24gPSBudWxs cHRyOworICAgICBpbnQgdmVyc2lvbiA9IC0xOworICAgICBib29sIGFjdGl2ZSA9IGZhbHNlOwor KyAgICBib29sIHJlZ2lzdGVyZWQgPSBmYWxzZTsKKyB9OworIAorIGNsYXNzIFFfV0FZTEFORF9D TElFTlRfRVhQT1JUIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uVGVtcGxhdGVQcml2YXRlIDogcHVi bGljIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZQorZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwCitpbmRleCA3ZTJlMzMwOC4uZTNlNjBlZDUgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwCisrKysg Yi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwCitAQCAtNzIsNiAr NzIsOCBAQCBRV2F5bGFuZERhdGFEZXZpY2U6OlFXYXlsYW5kRGF0YURldmljZShRV2F5bGFuZERh dGFEZXZpY2VNYW5hZ2VyICptYW5hZ2VyLCBRV2F5bAorIAorIFFXYXlsYW5kRGF0YURldmljZTo6 flFXYXlsYW5kRGF0YURldmljZSgpCisgeworKyAgICBpZiAod2xfZGF0YV9kZXZpY2VfZ2V0X3Zl cnNpb24ob2JqZWN0KCkpID49IFdMX0RBVEFfREVWSUNFX1JFTEVBU0VfU0lOQ0VfVkVSU0lPTikK KysgICAgICAgIHJlbGVhc2UoKTsKKyB9CisgCisgUVdheWxhbmREYXRhT2ZmZXIgKlFXYXlsYW5k RGF0YURldmljZTo6c2VsZWN0aW9uT2ZmZXIoKSBjb25zdAorQEAgLTExMCw3ICsxMTIsNyBAQCBR V2F5bGFuZERhdGFPZmZlciAqUVdheWxhbmREYXRhRGV2aWNlOjpkcmFnT2ZmZXIoKSBjb25zdAor ICAgICByZXR1cm4gbV9kcmFnT2ZmZXIuZGF0YSgpOworIH0KKyAKKy1ib29sIFFXYXlsYW5kRGF0 YURldmljZTo6c3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFFXYXlsYW5kV2luZG93ICpp Y29uKQorK2Jvb2wgUVdheWxhbmREYXRhRGV2aWNlOjpzdGFydERyYWcoUU1pbWVEYXRhICptaW1l RGF0YSwgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIFFXYXlsYW5kV2luZG93ICpp Y29uKQorIHsKKyAgICAgYXV0byAqc2VhdCA9IG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNl KCk7CisgICAgIGF1dG8gKm9yaWdpbiA9IHNlYXQtPnBvaW50ZXJGb2N1cygpOworQEAgLTEyMyw3 ICsxMjUsMjggQEAgYm9vbCBRV2F5bGFuZERhdGFEZXZpY2U6OnN0YXJ0RHJhZyhRTWltZURhdGEg Km1pbWVEYXRhLCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKyAgICAgfQorIAorICAgICBtX2RyYWdT b3VyY2UucmVzZXQobmV3IFFXYXlsYW5kRGF0YVNvdXJjZShtX2Rpc3BsYXktPmRuZFNlbGVjdGlv bkhhbmRsZXIoKSwgbWltZURhdGEpKTsKKysKKysgICAgaWYgKHdsX2RhdGFfZGV2aWNlX2dldF92 ZXJzaW9uKG9iamVjdCgpKSA+PSAzKQorKyAgICAgICAgbV9kcmFnU291cmNlLT5zZXRfYWN0aW9u cyhkcm9wQWN0aW9uc1RvV2woc3VwcG9ydGVkQWN0aW9ucykpOworKworICAgICBjb25uZWN0KG1f ZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmNhbmNlbGxlZCwgdGhpcywg JlFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ1NvdXJjZUNhbmNlbGxlZCk7CisrICAgIGNvbm5lY3Qo bV9kcmFnU291cmNlLmRhdGEoKSwgJlFXYXlsYW5kRGF0YVNvdXJjZTo6ZG5kUmVzcG9uc2VVcGRh dGVkLCB0aGlzLCBbdGhpc10oYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uKSB7 CisrICAgICAgICAgICAgYXV0byBkcmFnID0gc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFH dWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKTsKKysg ICAgICAgICAgICAvLyBpbiBvbGQgdmVyc2lvbnMgZHJvcCBhY3Rpb24gaXMgbm90IHNldCwgc28g d2UgZ3Vlc3MKKysgICAgICAgICAgICBpZiAod2xfZGF0YV9zb3VyY2VfZ2V0X3ZlcnNpb24obV9k cmFnU291cmNlLT5vYmplY3QoKSkgPCAzKSB7CisrICAgICAgICAgICAgICAgIGRyYWctPnNldFJl c3BvbnNlKGFjY2VwdGVkKTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAg ICBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSByZXNwb25zZShhY2NlcHRlZCwgYWN0aW9uKTsKKysg ICAgICAgICAgICAgICAgZHJhZy0+c2V0UmVzcG9uc2UocmVzcG9uc2UpOworKyAgICAgICAgICAg IH0KKysgICAgfSk7CisrICAgIGNvbm5lY3QobV9kcmFnU291cmNlLmRhdGEoKSwgJlFXYXlsYW5k RGF0YVNvdXJjZTo6ZG5kRHJvcHBlZCwgdGhpcywgW10oYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BB Y3Rpb24gYWN0aW9uKSB7CisrICAgICAgICBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSByZXNwb25z ZShhY2NlcHRlZCwgYWN0aW9uKTsKKysgICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAq PihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSkt PnNldERyb3BSZXNwb25zZShyZXNwb25zZSk7CisrICAgIH0pOworKyAgICBjb25uZWN0KG1fZHJh Z1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmZpbmlzaGVkLCB0aGlzLCBbXSgp IHsKKysgICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Q cml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPmZpbmlzaERyYWcoKTsKKysg ICAgfSk7CisgCisgICAgIHN0YXJ0X2RyYWcobV9kcmFnU291cmNlLT5vYmplY3QoKSwgb3JpZ2lu LT53bFN1cmZhY2UoKSwgaWNvbi0+d2xTdXJmYWNlKCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0 RGV2aWNlKCktPnNlcmlhbCgpKTsKKyAgICAgcmV0dXJuIHRydWU7CitAQCAtMTUyLDcgKzE3NSw3 IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9kcm9wKCkKKyAgICAgICAg IHN1cHBvcnRlZEFjdGlvbnMgPSBkcmFnLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxz ZSBpZiAobV9kcmFnT2ZmZXIpIHsKKyAgICAgICAgIGRyYWdEYXRhID0gbV9kcmFnT2ZmZXItPm1p bWVEYXRhKCk7CistICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkNvcHlBY3Rpb24gfCBR dDo6TW92ZUFjdGlvbiB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAgc3VwcG9ydGVkQWN0aW9u cyA9IG1fZHJhZ09mZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxzZSB7CisgICAg ICAgICByZXR1cm47CisgICAgIH0KK0BAIC0xNjIsNyArMTg1LDExIEBAIHZvaWQgUVdheWxhbmRE YXRhRGV2aWNlOjpkYXRhX2RldmljZV9kcm9wKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHdWlBcHBs aWNhdGlvbjo6a2V5Ym9hcmRNb2RpZmllcnMoKSk7CisgCisgICAgIGlmIChkcmFnKSB7CistICAg ICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6 cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5maW5pc2hEcmFnKHJlc3BvbnNlKTsKKysg ICAgICAgIGF1dG8gZHJhZyA9ICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxp Y2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpOworKyAgICAgICAg ZHJhZy0+c2V0RHJvcFJlc3BvbnNlKHJlc3BvbnNlKTsKKysgICAgICAgIGRyYWctPmZpbmlzaERy YWcoKTsKKysgICAgfSBlbHNlIGlmIChtX2RyYWdPZmZlcikgeworKyAgICAgICAgbV9kcmFnT2Zm ZXItPmZpbmlzaCgpOworICAgICB9CisgfQorIAorQEAgLTE4Niw3ICsyMTMsNyBAQCB2b2lkIFFX YXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZW50ZXIodWludDMyX3Qgc2VyaWFsLCB3bF9z dXJmYWNlICpzdXJmYWNlLAorICAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IGRyYWctPnN1cHBv cnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIGlmIChtX2RyYWdPZmZlcikgeworICAgICAgICAg ZHJhZ0RhdGEgPSBtX2RyYWdPZmZlci0+bWltZURhdGEoKTsKKy0gICAgICAgIHN1cHBvcnRlZEFj dGlvbnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OkxpbmtBY3Rpb247 CisrICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gbV9kcmFnT2ZmZXItPnN1cHBvcnRlZEFjdGlv bnMoKTsKKyAgICAgfQorIAorICAgICBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVz cG9uc2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVEcmFnKG1fZHJhZ1dpbmRvdywg ZHJhZ0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0ZWRBY3Rpb25zLAorQEAgLTE5NywxMSArMjI0 LDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2VudGVyKHVpbnQzMl90 IHNlcmlhbCwgd2xfc3VyZmFjZSAqc3VyZmFjZSwKKyAgICAgICAgIHN0YXRpY19jYXN0PFFXYXls YW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCkt PmRyYWcoKSktPnNldFJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgfQorIAorLSAgICBpZiAocmVz cG9uc2UuaXNBY2NlcHRlZCgpKSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2FjY2VwdChtX2Ry YWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG1fZHJhZ09mZmVyLT5maXJzdEZvcm1h dCgpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIHdsX2Rh dGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5vYmplY3QoKSwgbV9lbnRlclNlcmlhbCwgbnVs bHB0cik7CistICAgIH0KKysgICAgc2VuZFJlc3BvbnNlKHN1cHBvcnRlZEFjdGlvbnMsIHJlc3Bv bnNlKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2xlYXZl KCkKK0BAIC0yMzUsMTAgKzI1OCwxMCBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9k ZXZpY2VfbW90aW9uKHVpbnQzMl90IHRpbWUsIHdsX2ZpeGVkX3QgeCwgd2xfZml4ZQorICAgICAg ICAgc3VwcG9ydGVkQWN0aW9ucyA9IGRyYWctPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBl bHNlIHsKKyAgICAgICAgIGRyYWdEYXRhID0gbV9kcmFnT2ZmZXItPm1pbWVEYXRhKCk7CistICAg ICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkNvcHlBY3Rpb24gfCBRdDo6TW92ZUFjdGlvbiB8 IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IG1fZHJhZ09mZmVy LT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0KKyAKKy0gICAgUVBsYXRmb3JtRHJhZ1F0UmVz cG9uc2UgcmVzcG9uc2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVEcmFnKG1fZHJh Z1dpbmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0ZWRBY3Rpb25zLAorKyAgICBj b25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSByZXNwb25zZSA9IFFXaW5kb3dTeXN0ZW1JbnRl cmZhY2U6OmhhbmRsZURyYWcobV9kcmFnV2luZG93LCBkcmFnRGF0YSwgbV9kcmFnUG9pbnQsIHN1 cHBvcnRlZEFjdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR3VpQXBwbGljYXRpb246Om1vdXNl QnV0dG9ucygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUd1aUFwcGxpY2F0aW9uOjprZXlib2FyZE1v ZGlmaWVycygpKTsKKyAKK0BAIC0yNDYsMTEgKzI2OSw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2 aWNlOjpkYXRhX2RldmljZV9tb3Rpb24odWludDMyX3QgdGltZSwgd2xfZml4ZWRfdCB4LCB3bF9m aXhlCisgICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9u UHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5zZXRSZXNwb25zZShyZXNw b25zZSk7CisgICAgIH0KKyAKKy0gICAgaWYgKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSkgeworLSAg ICAgICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVy U2VyaWFsLCBtX2RyYWdPZmZlci0+Zmlyc3RGb3JtYXQoKS50b1V0ZjgoKS5jb25zdERhdGEoKSk7 CistICAgIH0gZWxzZSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2FjY2VwdChtX2RyYWdPZmZl ci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG51bGxwdHIpOworLSAgICB9CisrICAgIHNlbmRS ZXNwb25zZShzdXBwb3J0ZWRBY3Rpb25zLCByZXNwb25zZSk7CisgfQorICNlbmRpZiAvLyBRVF9D T05GSUcoZHJhZ2FuZGRyb3ApCisgCitAQCAtMjc3LDE0ICsyOTYsMTAgQEAgdm9pZCBRV2F5bGFu ZERhdGFEZXZpY2U6OnNlbGVjdGlvblNvdXJjZUNhbmNlbGxlZCgpCisgI2lmIFFUX0NPTkZJRyhk cmFnYW5kZHJvcCkKKyB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ1NvdXJjZUNhbmNlbGxl ZCgpCisgeworKyAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9u UHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5maW5pc2hEcmFnKCk7Cisg ICAgIG1fZHJhZ1NvdXJjZS5yZXNldCgpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRGF0YURldmlj ZTo6ZHJhZ1NvdXJjZVRhcmdldENoYW5nZWQoY29uc3QgUVN0cmluZyAmbWltZVR5cGUpCistewor LSAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6 cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT51cGRhdGVUYXJnZXQobWltZVR5cGUpOwor LX0KKy0KKyBRUG9pbnQgUVdheWxhbmREYXRhRGV2aWNlOjpjYWxjdWxhdGVEcmFnUG9zaXRpb24o aW50IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNvbnN0CisgeworICAgICBRUG9pbnQgcG50KHds X2ZpeGVkX3RvX2ludCh4KSwgd2xfZml4ZWRfdG9faW50KHkpKTsKK0BAIC0yOTcsNiArMzEyLDMz IEBAIFFQb2ludCBRV2F5bGFuZERhdGFEZXZpY2U6OmNhbGN1bGF0ZURyYWdQb3NpdGlvbihpbnQg eCwgaW50IHksIFFXaW5kb3cgKnduZCkgY29uCisgICAgIH0KKyAgICAgcmV0dXJuIHBudDsKKyB9 CisrCisrdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OnNlbmRSZXNwb25zZShRdDo6RHJvcEFjdGlv bnMgc3VwcG9ydGVkQWN0aW9ucywgY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3Bv bnNlKQorK3sKKysgICAgaWYgKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSkgeworKyAgICAgICAgaWYg KHdsX2RhdGFfZGV2aWNlX2dldF92ZXJzaW9uKG9iamVjdCgpKSA+PSAzKQorKyAgICAgICAgICAg IG1fZHJhZ09mZmVyLT5zZXRfYWN0aW9ucyhkcm9wQWN0aW9uc1RvV2woc3VwcG9ydGVkQWN0aW9u cyksIGRyb3BBY3Rpb25zVG9XbChyZXNwb25zZS5hY2NlcHRlZEFjdGlvbigpKSk7CisrCisrICAg ICAgICBtX2RyYWdPZmZlci0+YWNjZXB0KG1fZW50ZXJTZXJpYWwsIG1fZHJhZ09mZmVyLT5maXJz dEZvcm1hdCgpKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIG1fZHJhZ09mZmVyLT5hY2NlcHQo bV9lbnRlclNlcmlhbCwgUVN0cmluZygpKTsKKysgICAgfQorK30KKysKKytpbnQgUVdheWxhbmRE YXRhRGV2aWNlOjpkcm9wQWN0aW9uc1RvV2woUXQ6OkRyb3BBY3Rpb25zIGFjdGlvbnMpCisrewor KworKyAgICBpbnQgd2xBY3Rpb25zID0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9O X05PTkU7CisrICAgIGlmIChhY3Rpb25zICYgUXQ6OkNvcHlBY3Rpb24pCisrICAgICAgICB3bEFj dGlvbnMgfD0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX0NPUFk7CisrICAgIGlm IChhY3Rpb25zICYgKFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OlRhcmdldE1vdmVBY3Rpb24pKQorKyAg ICAgICAgd2xBY3Rpb25zIHw9IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9NT1ZF OworKworKyAgICAvLyB3YXlsYW5kIGRvZXMgbm90IHN1cHBvcnQgTGlua0FjdGlvbiBhdCB0aGUg dGltZSBvZiB3cml0aW5nCisrICAgIHJldHVybiB3bEFjdGlvbnM7CisrfQorKworKworICNlbmRp ZiAvLyBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oCitpbmRleCAxNmMzYWQyOC4uODAxZGNjMmMgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oCisrKysg Yi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oCitAQCAtNjQsNiAr NjQsNyBAQCBRVF9SRVFVSVJFX0NPTkZJRyh3YXlsYW5kX2RhdGFkZXZpY2UpOworIFFUX0JFR0lO X05BTUVTUEFDRQorIAorIGNsYXNzIFFNaW1lRGF0YTsKKytjbGFzcyBRUGxhdGZvcm1EcmFnUXRS ZXNwb25zZTsKKyBjbGFzcyBRV2luZG93OworIAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQg eworQEAgLTg5LDcgKzkwLDcgQEAgcHVibGljOgorIAorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRy b3ApCisgICAgIFFXYXlsYW5kRGF0YU9mZmVyICpkcmFnT2ZmZXIoKSBjb25zdDsKKy0gICAgYm9v bCBzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUVdheWxhbmRXaW5kb3cgKmljb24pOwor KyAgICBib29sIHN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRdDo6RHJvcEFjdGlvbnMg c3VwcG9ydGVkQWN0aW9ucywgUVdheWxhbmRXaW5kb3cgKmljb24pOworICAgICB2b2lkIGNhbmNl bERyYWcoKTsKKyAjZW5kaWYKKyAKK0BAIC0xMDksMTMgKzExMCwxNiBAQCBwcml2YXRlIFFfU0xP VFM6CisgCisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAgICAgdm9pZCBkcmFnU291cmNl Q2FuY2VsbGVkKCk7CistICAgIHZvaWQgZHJhZ1NvdXJjZVRhcmdldENoYW5nZWQoY29uc3QgUVN0 cmluZyAmbWltZVR5cGUpOworICNlbmRpZgorIAorIHByaXZhdGU6CisgI2lmIFFUX0NPTkZJRyhk cmFnYW5kZHJvcCkKKyAgICAgUVBvaW50IGNhbGN1bGF0ZURyYWdQb3NpdGlvbihpbnQgeCwgaW50 IHksIFFXaW5kb3cgKnduZCkgY29uc3Q7CisgI2VuZGlmCisrICAgIHZvaWQgc2VuZFJlc3BvbnNl KFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zLCBjb25zdCBRUGxhdGZvcm1EcmFnUXRS ZXNwb25zZSAmcmVzcG9uc2UpOworKworKyAgICBzdGF0aWMgaW50IGRyb3BBY3Rpb25zVG9XbChR dDo6RHJvcEFjdGlvbnMgZHJvcEFjdGlvbnMpOworKworIAorICAgICBRV2F5bGFuZERpc3BsYXkg Km1fZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFXYXlsYW5kSW5wdXREZXZpY2UgKm1faW5wdXRE ZXZpY2UgPSBudWxscHRyOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YWRldmljZW1hbmFnZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRk YXRhZGV2aWNlbWFuYWdlci5jcHAKK2luZGV4IDM1ZDY3MzA3Li42ZGM0Zjc3ZiAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwCisr KysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyLmNwcAor QEAgLTUwLDggKzUwLDggQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgbmFtZXNwYWNlIFF0V2F5 bGFuZENsaWVudCB7CisgCistUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcjo6UVdheWxhbmREYXRh RGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIHVpbnQzMl90IGlkKQorLSAg ICA6IHdsX2RhdGFfZGV2aWNlX21hbmFnZXIoZGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIDEp CisrUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcjo6UVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihR V2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIGludCB2ZXJzaW9uLCB1aW50MzJfdCBpZCkKKysgICAg OiB3bF9kYXRhX2RldmljZV9tYW5hZ2VyKGRpc3BsYXktPndsX3JlZ2lzdHJ5KCksIGlkLCBxTWlu KHZlcnNpb24sIDMpKQorICAgICAsIG1fZGlzcGxheShkaXNwbGF5KQorIHsKKyAgICAgLy8gQ3Jl YXRlIHRyYW5zZmVyIGRldmljZXMgZm9yIGFsbCBpbnB1dCBkZXZpY2VzLgorZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXJfcC5oIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9wLmgKK2luZGV4IGJk MDVjMGZiLi41MTBkOWJlNCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YWRldmljZW1hbmFnZXJfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAorQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgUVdheWxh bmRJbnB1dERldmljZTsKKyBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZERh dGFEZXZpY2VNYW5hZ2VyIDogcHVibGljIFF0V2F5bGFuZDo6d2xfZGF0YV9kZXZpY2VfbWFuYWdl cgorIHsKKyBwdWJsaWM6CistICAgIFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmRE aXNwbGF5ICpkaXNwbGF5LCB1aW50MzJfdCBpZCk7CisrICAgIFFXYXlsYW5kRGF0YURldmljZU1h bmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCBpbnQgdmVyc2lvbiwgdWludDMyX3QgaWQp OworICAgICB+UVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcigpIG92ZXJyaWRlOworIAorICAgICBR V2F5bGFuZERhdGFEZXZpY2UgKmdldERhdGFEZXZpY2UoUVdheWxhbmRJbnB1dERldmljZSAqaW5w dXREZXZpY2UpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0 YW9mZmVyLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNwcAor aW5kZXggMjI5N2U4YTEuLmZlMGVhOGM5IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRhdGFvZmZlci5jcHAKK0BAIC04Miw2ICs4MiwxNSBAQCBRTWltZURhdGEgKlFXYXlsYW5k RGF0YU9mZmVyOjptaW1lRGF0YSgpCisgICAgIHJldHVybiBtX21pbWVEYXRhLmRhdGEoKTsKKyB9 CisgCisrUXQ6OkRyb3BBY3Rpb25zIFFXYXlsYW5kRGF0YU9mZmVyOjpzdXBwb3J0ZWRBY3Rpb25z KCkgY29uc3QKKyt7CisrICAgIGlmICh3bF9kYXRhX29mZmVyX2dldF92ZXJzaW9uKGNvbnN0X2Nh c3Q8Ojp3bF9kYXRhX29mZmVyKj4ob2JqZWN0KCkpKSA8IDMpIHsKKysgICAgICAgIHJldHVybiBR dDo6TW92ZUFjdGlvbiB8IFF0OjpDb3B5QWN0aW9uOworKyAgICB9CisrCisrICAgIHJldHVybiBt X3N1cHBvcnRlZEFjdGlvbnM7CisrfQorKworIHZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OnN0YXJ0 UmVjZWl2aW5nKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBpbnQgZmQpCisgeworICAgICByZWNl aXZlKG1pbWVUeXBlLCBmZCk7CitAQCAtOTMsNiArMTAyLDIyIEBAIHZvaWQgUVdheWxhbmREYXRh T2ZmZXI6OmRhdGFfb2ZmZXJfb2ZmZXIoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKQorICAgICBt X21pbWVEYXRhLT5hcHBlbmRGb3JtYXQobWltZV90eXBlKTsKKyB9CisgCisrdm9pZCBRV2F5bGFu ZERhdGFPZmZlcjo6ZGF0YV9vZmZlcl9hY3Rpb24odWludDMyX3QgZG5kX2FjdGlvbikKKyt7Cisr ICAgIFFfVU5VU0VEKGRuZF9hY3Rpb24pOworKyAgICAvLyBUaGlzIGlzIHRoZSBjb21wb3NpdG9y IHRlbGxpbmcgdGhlIGRyYWcgdGFyZ2V0IHdoYXQgYWN0aW9uIGl0IHNob3VsZCBwZXJmb3JtCisr ICAgIC8vIEl0IGRvZXMgbm90IG1hcCBuaWNlbHkgaW50byBRdCBmaW5hbCBkcm9wIHNlbWFudGlj cywgb3RoZXIgdGhhbiBwcmV0ZW5kaW5nIHRoZXJlIGlzIG9ubHkgb25lIHN1cHBvcnRlZCBhY3Rp b24/CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OmRhdGFfb2ZmZXJfc291cmNlX2Fj dGlvbnModWludDMyX3Qgc291cmNlX2FjdGlvbnMpCisreworKyAgICBtX3N1cHBvcnRlZEFjdGlv bnMgPSBRdDo6RHJvcEFjdGlvbnMoKTsKKysgICAgaWYgKHNvdXJjZV9hY3Rpb25zICYgV0xfREFU QV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX01PVkUpCisrICAgICAgICBtX3N1cHBvcnRlZEFj dGlvbnMgfD0gUXQ6Ok1vdmVBY3Rpb247CisrICAgIGlmIChzb3VyY2VfYWN0aW9ucyAmIFdMX0RB VEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9DT1BZKQorKyAgICAgICAgbV9zdXBwb3J0ZWRB Y3Rpb25zIHw9IFF0OjpDb3B5QWN0aW9uOworK30KKysKKyBRV2F5bGFuZE1pbWVEYXRhOjpRV2F5 bGFuZE1pbWVEYXRhKFFXYXlsYW5kQWJzdHJhY3REYXRhT2ZmZXIgKmRhdGFPZmZlcikKKyAgICAg OiBtX2RhdGFPZmZlcihkYXRhT2ZmZXIpCisgeworQEAgLTE2MywxNyArMTg4LDE4IEBAIFFWYXJp YW50IFFXYXlsYW5kTWltZURhdGE6OnJldHJpZXZlRGF0YV9zeXMoY29uc3QgUVN0cmluZyAmbWlt ZVR5cGUsIFFWYXJpYW50OjpUCisgCisgaW50IFFXYXlsYW5kTWltZURhdGE6OnJlYWREYXRhKGlu dCBmZCwgUUJ5dGVBcnJheSAmZGF0YSkgY29uc3QKKyB7CistICAgIGZkX3NldCByZWFkc2V0Owor LSAgICBGRF9aRVJPKCZyZWFkc2V0KTsKKy0gICAgRkRfU0VUKGZkLCAmcmVhZHNldCk7CistICAg IHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CisrICAgIHN0cnVjdCBwb2xsZmQgcmVhZHNldDsKKysg ICAgcmVhZHNldC5mZCA9IGZkOworKyAgICByZWFkc2V0LmV2ZW50cyA9IFBPTExJTjsKKysgICAg c3RydWN0IHRpbWVzcGVjIHRpbWVvdXQ7CisgICAgIHRpbWVvdXQudHZfc2VjID0gMTsKKy0gICAg dGltZW91dC50dl91c2VjID0gMDsKKysgICAgdGltZW91dC50dl9uc2VjID0gMDsKKysKKyAKKyAg ICAgUV9GT1JFVkVSIHsKKy0gICAgICAgIGludCByZWFkeSA9IHNlbGVjdChGRF9TRVRTSVpFLCAm cmVhZHNldCwgbnVsbHB0ciwgbnVsbHB0ciwgJnRpbWVvdXQpOworKyAgICAgICAgaW50IHJlYWR5 ID0gcXRfc2FmZV9wb2xsKCZyZWFkc2V0LCAxLCAmdGltZW91dCk7CisgICAgICAgICBpZiAocmVh ZHkgPCAwKSB7CistICAgICAgICAgICAgcVdhcm5pbmcoKSA8PCAiUVdheWxhbmREYXRhT2ZmZXI6 IHNlbGVjdCgpIGZhaWxlZCI7CisrICAgICAgICAgICAgcVdhcm5pbmcoKSA8PCAiUVdheWxhbmRE YXRhT2ZmZXI6IHF0X3NhZmVfcG9sbCgpIGZhaWxlZCI7CisgICAgICAgICAgICAgcmV0dXJuIC0x OworICAgICAgICAgfSBlbHNlIGlmIChyZWFkeSA9PSAwKSB7CisgICAgICAgICAgICAgcVdhcm5p bmcoIlFXYXlsYW5kRGF0YU9mZmVyOiB0aW1lb3V0IHJlYWRpbmcgZnJvbSBwaXBlIik7CitkaWZm IC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oCitpbmRleCA5Y2YxNDgzYy4u NmY2NjczOTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFv ZmZlcl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyX3Au aAorQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgorICAgICBleHBsaWNpdCBRV2F5bGFuZERhdGFP ZmZlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIHN0cnVjdCA6OndsX2RhdGFfb2ZmZXIgKm9m ZmVyKTsKKyAgICAgflFXYXlsYW5kRGF0YU9mZmVyKCkgb3ZlcnJpZGU7CisgICAgIFFNaW1lRGF0 YSAqbWltZURhdGEoKSBvdmVycmlkZTsKKysgICAgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFj dGlvbnMoKSBjb25zdDsKKyAKKyAgICAgUVN0cmluZyBmaXJzdEZvcm1hdCgpIGNvbnN0OworIAor QEAgLTg5LDEwICs5MCwxMyBAQCBwdWJsaWM6CisgCisgcHJvdGVjdGVkOgorICAgICB2b2lkIGRh dGFfb2ZmZXJfb2ZmZXIoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKSBvdmVycmlkZTsKKysgICAg dm9pZCBkYXRhX29mZmVyX3NvdXJjZV9hY3Rpb25zKHVpbnQzMl90IHNvdXJjZV9hY3Rpb25zKSBv dmVycmlkZTsKKysgICAgdm9pZCBkYXRhX29mZmVyX2FjdGlvbih1aW50MzJfdCBkbmRfYWN0aW9u KSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFuZERpc3BsYXkgKm1fZGlzcGxh eSA9IG51bGxwdHI7CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kTWltZURhdGE+IG1fbWlt ZURhdGE7CisrICAgIFF0OjpEcm9wQWN0aW9ucyBtX3N1cHBvcnRlZEFjdGlvbnM7CisgfTsKKyAK KyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2Uu Y3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlLmNwcAoraW5kZXgg ZjQ1MTIyZmIuLjU1OTljYmQ0IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkYXRhc291cmNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRk YXRhc291cmNlLmNwcAorQEAgLTEwMSw3ICsxMDEsMzIgQEAgdm9pZCBRV2F5bGFuZERhdGFTb3Vy Y2U6OmRhdGFfc291cmNlX3NlbmQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlLCBpbnQzMl90IGZk KQorIAorIHZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV90YXJnZXQoY29uc3Qg UVN0cmluZyAmbWltZV90eXBlKQorIHsKKy0gICAgUV9FTUlUIHRhcmdldENoYW5nZWQobWltZV90 eXBlKTsKKysgICAgbV9hY2NlcHRlZCA9ICFtaW1lX3R5cGUuaXNFbXB0eSgpOworKyAgICBRX0VN SVQgZG5kUmVzcG9uc2VVcGRhdGVkKG1fYWNjZXB0ZWQsIG1fZHJvcEFjdGlvbik7CisrfQorKwor K3ZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9hY3Rpb24odWludDMyX3QgYWN0 aW9uKQorK3sKKysgICAgUXQ6OkRyb3BBY3Rpb24gcXRBY3Rpb24gPSBRdDo6SWdub3JlQWN0aW9u OworKworKyAgICBpZiAoYWN0aW9uID09IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElP Tl9NT1ZFKQorKyAgICAgICAgcXRBY3Rpb24gPSBRdDo6TW92ZUFjdGlvbjsKKysgICAgZWxzZSBp ZiAoYWN0aW9uID09IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9DT1BZKQorKyAg ICAgICAgcXRBY3Rpb24gPSBRdDo6Q29weUFjdGlvbjsKKysKKysgICAgbV9kcm9wQWN0aW9uID0g cXRBY3Rpb247CisrICAgIFFfRU1JVCBkbmRSZXNwb25zZVVwZGF0ZWQobV9hY2NlcHRlZCwgbV9k cm9wQWN0aW9uKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNl X2RuZF9maW5pc2hlZCgpCisreworKyAgICBRX0VNSVQgZmluaXNoZWQoKTsKKyt9CisrCisrdm9p ZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX2RuZF9kcm9wX3BlcmZvcm1lZCgpCisr eworKworKyAgICBRX0VNSVQgZG5kRHJvcHBlZChtX2FjY2VwdGVkLCBtX2Ryb3BBY3Rpb24pOwor IH0KKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh c291cmNlX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgK K2luZGV4IDI1YWZmZjc5Li45NmYwN2JjMyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kZGF0YXNvdXJjZV9wLmgKK0BAIC03NywxNyArNzcsMjUgQEAgcHVibGljOgorICAgICBR TWltZURhdGEgKm1pbWVEYXRhKCkgY29uc3Q7CisgCisgUV9TSUdOQUxTOgorLSAgICB2b2lkIHRh cmdldENoYW5nZWQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKTsKKyAgICAgdm9pZCBjYW5jZWxs ZWQoKTsKKysgICAgdm9pZCBmaW5pc2hlZCgpOworKworKyAgICB2b2lkIGRuZFJlc3BvbnNlVXBk YXRlZChib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rpb24pOworKyAgICB2b2lkIGRu ZERyb3BwZWQoYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uKTsKKyAKKyBwcm90 ZWN0ZWQ6CisgICAgIHZvaWQgZGF0YV9zb3VyY2VfY2FuY2VsbGVkKCkgb3ZlcnJpZGU7CisgICAg IHZvaWQgZGF0YV9zb3VyY2Vfc2VuZChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUsIGludDMyX3Qg ZmQpIG92ZXJyaWRlOworICAgICB2b2lkIGRhdGFfc291cmNlX3RhcmdldChjb25zdCBRU3RyaW5n ICZtaW1lX3R5cGUpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291cmNlX2RuZF9kcm9wX3Bl cmZvcm1lZCgpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291cmNlX2RuZF9maW5pc2hlZCgp IG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291cmNlX2FjdGlvbih1aW50MzJfdCBhY3Rpb24p IG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5 ID0gbnVsbHB0cjsKKyAgICAgUU1pbWVEYXRhICptX21pbWVfZGF0YSA9IG51bGxwdHI7CisrICAg IGJvb2wgbV9hY2NlcHRlZCA9IGZhbHNlOworKyAgICBRdDo6RHJvcEFjdGlvbiBtX2Ryb3BBY3Rp b24gPSBRdDo6SWdub3JlQWN0aW9uOworIH07CisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRpc3BsYXkuY3BwCitpbmRleCBmMTBjMWY3OS4uYzAxZTIzOGIgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwCisrKysgYi9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwCitAQCAtODUsMTAgKzg1LDIwMyBAQAor IAorICNpbmNsdWRlIDxlcnJuby5oPgorIAorKyNpbmNsdWRlIDx0dXBsZT4gLy8gZm9yIHN0ZDo6 dGllCisrCisrc3RhdGljIHZvaWQgY2hlY2tXYXlsYW5kRXJyb3Ioc3RydWN0IHdsX2Rpc3BsYXkg KmRpc3BsYXkpCisreworKyAgICBpbnQgZWNvZGUgPSB3bF9kaXNwbGF5X2dldF9lcnJvcihkaXNw bGF5KTsKKysgICAgaWYgKChlY29kZSA9PSBFUElQRSB8fCBlY29kZSA9PSBFQ09OTlJFU0VUKSkg eworKyAgICAgICAgLy8gc3BlY2lhbCBjYXNlIHRoaXMgdG8gcHJvdmlkZSBhIG5pY2VyIGVycm9y CisrICAgICAgICBxV2FybmluZygiVGhlIFdheWxhbmQgY29ubmVjdGlvbiBicm9rZS4gRGlkIHRo ZSBXYXlsYW5kIGNvbXBvc2l0b3IgZGllPyIpOworKyAgICB9IGVsc2UgeworKyAgICAgICAgcVdh cm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gZXhwZXJpZW5jZWQgYSBmYXRhbCBlcnJvcjog JXMiLCBzdHJlcnJvcihlY29kZSkpOworKyAgICB9CisrICAgIF9leGl0KDEpOworK30KKysKKyBR VF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50IHsKKyAKKytj bGFzcyBFdmVudFRocmVhZCA6IHB1YmxpYyBRVGhyZWFkCisreworKyAgICBRX09CSkVDVAorK3B1 YmxpYzoKKysgICAgZW51bSBPcGVyYXRpbmdNb2RlIHsKKysgICAgICAgIEVtaXRUb0Rpc3BhdGNo LCAvLyBFbWl0IHRoZSBzaWduYWwsIGFsbG93IGRpc3BhdGNoaW5nIGluIGEgZGlmZmVybnQgdGhy ZWFkLgorKyAgICAgICAgU2VsZkRpc3BhdGNoLCAvLyBEaXNwYXRjaCB0aGUgZXZlbnRzIGluc2lk ZSB0aGlzIHRocmVhZC4KKysgICAgfTsKKysKKysgICAgRXZlbnRUaHJlYWQoc3RydWN0IHdsX2Rp c3BsYXkgKiB3bCwgc3RydWN0IHdsX2V2ZW50X3F1ZXVlICogZXZfcXVldWUsCisrICAgICAgICAg ICAgICAgIE9wZXJhdGluZ01vZGUgbW9kZSkKKysgICAgICAgIDogbV9mZCh3bF9kaXNwbGF5X2dl dF9mZCh3bCkpCisrICAgICAgICAsIG1fcGlwZWZkeyAtMSwgLTEgfQorKyAgICAgICAgLCBtX3ds ZGlzcGxheSh3bCkKKysgICAgICAgICwgbV93bGV2cXVldWUoZXZfcXVldWUpCisrICAgICAgICAs IG1fbW9kZShtb2RlKQorKyAgICAgICAgLCBtX3JlYWRpbmcodHJ1ZSkKKysgICAgICAgICwgbV9x dWl0dGluZyhmYWxzZSkKKysgICAgeworKyAgICAgICAgc2V0T2JqZWN0TmFtZShRU3RyaW5nTGl0 ZXJhbCgiV2F5bGFuZEV2ZW50VGhyZWFkIikpOworKyAgICB9CisrCisrICAgIHZvaWQgcmVhZEFu ZERpc3BhdGNoRXZlbnRzKCkKKysgICAgeworKyAgICAgICAgLyoKKysgICAgICAgICAqIERpc3Bh dGNoIHBlbmRpbmcgZXZlbnRzIGFuZCBmbHVzaCB0aGUgcmVxdWVzdHMgYXQgbGVhc3Qgb25jZS4g SWYgdGhlIGV2ZW50IHRocmVhZAorKyAgICAgICAgICogaXMgbm90IHJlYWRpbmcsIHRyeSB0byBj YWxsIF9wcmVwYXJlX3JlYWQoKSB0byBhbGxvdyB0aGUgZXZlbnQgdGhyZWFkIHRvIHBvbGwoKS4K KysgICAgICAgICAqIElmIHRoYXQgZmFpbHMsIHJlLXRyeSBkaXNwYXRjaCAmIGZsdXNoIGFnYWlu IHVudGlsIF9wcmVwYXJlX3JlYWQoKSBpcyBzdWNjZXNzZnVsLgorKyAgICAgICAgICoKKysgICAg ICAgICAqIFRoaXMgYWxsb3cgYW55IGNhbGwgdG8gcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkgdG8g c3RhcnQgZXZlbnQgdGhyZWFkJ3MgcG9sbGluZywKKysgICAgICAgICAqIG5vdCBvbmx5IHRoZSBv bmUgaXNzdWVkIGZyb20gZXZlbnQgdGhyZWFkJ3Mgd2FpdEZvclJlYWRpbmcoKSwgd2hpY2ggbWVh bnMgZnVuY3Rpb25zCisrICAgICAgICAgKiBjYWxsZWQgZnJvbSBkaXNwYXRjaF9wZW5kaW5nKCkg Y2FuIHNhZmVseSBzcGluIGFuIGV2ZW50IGxvb3AuCisrICAgICAgICAgKi8KKysgICAgICAgIGZv ciAoOzspIHsKKysgICAgICAgICAgICBpZiAoZGlzcGF0Y2hRdWV1ZVBlbmRpbmcoKSA8IDApIHsK KysgICAgICAgICAgICAgICAgY2hlY2tXYXlsYW5kRXJyb3IobV93bGRpc3BsYXkpOworKyAgICAg ICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIHdsX2Rp c3BsYXlfZmx1c2gobV93bGRpc3BsYXkpOworKworKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8g Y2hlY2sgaWYgZXZlbnQgdGhyZWFkIGlzIHJlYWRpbmcgZXZlcnkgdGltZSB3ZSBkaXNwYXRjaAor KyAgICAgICAgICAgIC8vIHNvbWV0aGluZywgYXMgdGhhdCBtYXkgcmVjdXJzaXZlbHkgY2FsbCB0 aGlzIGZ1bmN0aW9uLgorKyAgICAgICAgICAgIGlmIChtX3JlYWRpbmcubG9hZEFjcXVpcmUoKSkK KysgICAgICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICAgICAgaWYgKHByZXBhcmVSZWFk UXVldWUoKSA9PSAwKSB7CisrICAgICAgICAgICAgICAgIFFNdXRleExvY2tlciBsKCZtX211dGV4 KTsKKysgICAgICAgICAgICAgICAgbV9yZWFkaW5nLnN0b3JlUmVsZWFzZSh0cnVlKTsKKysgICAg ICAgICAgICAgICAgbV9jb25kLndha2VPbmUoKTsKKysgICAgICAgICAgICAgICAgYnJlYWs7Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHZvaWQgc3RvcCgpCisr ICAgIHsKKysgICAgICAgIC8vIFdlIGhhdmUgdG8gYm90aCB3cml0ZSB0byB0aGUgcGlwZSBhbmQg c2V0IHRoZSBmbGFnLCBhcyB0aGUgdGhyZWFkIG1heSBiZQorKyAgICAgICAgLy8gZWl0aGVyIGlu IHRoZSBwb2xsKCkgb3Igd2FpdGluZyBmb3IgX3ByZXBhcmVfcmVhZCgpLgorKyAgICAgICAgaWYg KG1fcGlwZWZkWzFdICE9IC0xICYmIHdyaXRlKG1fcGlwZWZkWzFdLCAiXDAiLCAxKSA9PSAtMSkK KysgICAgICAgICAgICBxV2FybmluZygiRmFpbGVkIHRvIHdyaXRlIHRvIHRoZSBwaXBlOiAlcy4i LCBzdHJlcnJvcihlcnJubykpOworKworKyAgICAgICAgeworKyAgICAgICAgICAgIFFNdXRleExv Y2tlciBsKCZtX211dGV4KTsKKysgICAgICAgICAgICBtX3F1aXR0aW5nID0gdHJ1ZTsKKysgICAg ICAgICAgICBtX2NvbmQud2FrZU9uZSgpOworKyAgICAgICAgfQorKworKyAgICAgICAgd2FpdCgp OworKyAgICB9CisrCisrUV9TSUdOQUxTOgorKyAgICB2b2lkIG5lZWRSZWFkQW5kRGlzcGF0Y2go KTsKKysKKytwcm90ZWN0ZWQ6CisrICAgIHZvaWQgcnVuKCkgb3ZlcnJpZGUKKysgICAgeworKyAg ICAgICAgLy8gd2UgdXNlIHRoaXMgcGlwZSB0byBtYWtlIHRoZSBsb29wIGV4aXQgb3RoZXJ3aXNl IGlmIHdlIHNpbXBseSB1c2VkIGEgZmxhZyBvbiB0aGUgbG9vcCBjb25kaXRpb24sIGlmIHN0b3Ao KSBnZXRzCisrICAgICAgICAvLyBjYWxsZWQgd2hpbGUgcG9sbCgpIGlzIGJsb2NraW5nIHRoZSB0 aHJlYWQgd2lsbCBuZXZlciBxdWl0IHNpbmNlIHRoZXJlIGFyZSBubyB3YXlsYW5kIG1lc3NhZ2Vz IGNvbWluZyBhbnltb3JlLgorKyAgICAgICAgc3RydWN0IFBpcGUKKysgICAgICAgIHsKKysgICAg ICAgICAgICBQaXBlKGludCAqZmRzKQorKyAgICAgICAgICAgICAgICA6IGZkcyhmZHMpCisrICAg ICAgICAgICAgeworKyAgICAgICAgICAgICAgICBpZiAocXRfc2FmZV9waXBlKGZkcykgIT0gMCkK KysgICAgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJQaXBlIGNyZWF0aW9uIGZhaWxlZC4gUXVp dHRpbmcgbWF5IGhhbmcuIik7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH5QaXBlKCkK KysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGlmIChmZHNbMF0gIT0gLTEpIHsKKysg ICAgICAgICAgICAgICAgICAgIGNsb3NlKGZkc1swXSk7CisrICAgICAgICAgICAgICAgICAgICBj bG9zZShmZHNbMV0pOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKworKyAg ICAgICAgICAgIGludCAqZmRzOworKyAgICAgICAgfSBwaXBlKG1fcGlwZWZkKTsKKysKKysgICAg ICAgIC8vIE1ha2UgdGhlIG1haW4gdGhyZWFkIGNhbGwgd2xfcHJlcGFyZV9yZWFkKCksIGRpc3Bh dGNoIHRoZSBwZW5kaW5nIG1lc3NhZ2VzIGFuZCBmbHVzaCB0aGUKKysgICAgICAgIC8vIG91dGJv dW5kIG9uZXMuIFdhaXQgdW50aWwgaXQncyBkb25lIGJlZm9yZSBwcm9jZWVkaW5nLCB1bmxlc3Mg d2UncmUgdG9sZCB0byBxdWl0LgorKyAgICAgICAgd2hpbGUgKHdhaXRGb3JSZWFkaW5nKCkpIHsK KysgICAgICAgICAgICBwb2xsZmQgZmRzWzJdID0geyB7IG1fZmQsIFBPTExJTiwgMCB9LCB7IG1f cGlwZWZkWzBdLCBQT0xMSU4sIDAgfSB9OworKyAgICAgICAgICAgIHBvbGwoZmRzLCAyLCAtMSk7 CisrCisrICAgICAgICAgICAgaWYgKGZkc1sxXS5yZXZlbnRzICYgUE9MTElOKSB7CisrICAgICAg ICAgICAgICAgIC8vIHdlIGRvbid0IHJlYWxseSBjYXJlIHRvIHJlYWQgdGhlIGJ5dGUgdGhhdCB3 YXMgd3JpdHRlbiBoZXJlIHNpbmNlIHdlJ3JlIGNsb3NpbmcgZG93bgorKyAgICAgICAgICAgICAg ICB3bF9kaXNwbGF5X2NhbmNlbF9yZWFkKG1fd2xkaXNwbGF5KTsKKysgICAgICAgICAgICAgICAg YnJlYWs7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIGlmIChmZHNbMF0ucmV2ZW50 cyAmIFBPTExJTikKKysgICAgICAgICAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtX3ds ZGlzcGxheSk7CisrICAgICAgICAgICAgICAgIC8vIFRoZSBwb2xsbCB3YXMgc3VjY2VzZnVsbCBh bmQgdGhlIGV2ZW50IHRocmVhZCBkaWQgdGhlIHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMoKS4gT24g dGhlIG5leHQgaXRlcmF0aW9uIG9mIHRoZSBsb29wCisrICAgICAgICAgICAgICAgIC8vIHRoZSBl dmVudCBzZW50IHRvIHRoZSBtYWluIHRocmVhZCB3aWxsIGNhdXNlIGl0IHRvIGRpc3BhdGNoIHRo ZSBtZXNzYWdlcyBqdXN0IHJlYWQsIHVubGVzcyB0aGUgbG9vcCBleGl0cyBpbiB3aGljaAorKyAg ICAgICAgICAgICAgICAvLyBjYXNlIHdlIGRvbid0IGNhcmUgYW55bW9yZSBhYm91dCB0aGVtLgor KyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgd2xfZGlzcGxheV9jYW5jZWxfcmVh ZChtX3dsZGlzcGxheSk7CisrICAgICAgICB9CisrICAgIH0KKysKKytwcml2YXRlOgorKyAgICBi b29sIHdhaXRGb3JSZWFkaW5nKCkKKysgICAgeworKyAgICAgICAgUV9BU1NFUlQoUVRocmVhZDo6 Y3VycmVudFRocmVhZCgpID09IHRoaXMpOworKworKyAgICAgICAgbV9yZWFkaW5nLnN0b3JlUmVs ZWFzZShmYWxzZSk7CisrCisrICAgICAgICBpZiAobV9tb2RlID09IFNlbGZEaXNwYXRjaCkgewor KyAgICAgICAgICAgIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpOworKyAgICAgICAgfSBlbHNlIHsK KysgICAgICAgICAgICBRX0VNSVQgbmVlZFJlYWRBbmREaXNwYXRjaCgpOworKworKyAgICAgICAg ICAgIFFNdXRleExvY2tlciBsb2NrKCZtX211dGV4KTsKKysgICAgICAgICAgICAvLyBtX3JlYWRp bmcgbWlnaHQgYmUgc2V0IGZyb20gb3VyIGVtaXQgb3Igc29tZSBvdGhlciBpbnZvY2F0aW9uIG9m CisrICAgICAgICAgICAgLy8gcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkuCisrICAgICAgICAgICAg d2hpbGUgKCFtX3JlYWRpbmcubG9hZFJlbGF4ZWQoKSAmJiAhbV9xdWl0dGluZykKKysgICAgICAg ICAgICAgICAgbV9jb25kLndhaXQoJm1fbXV0ZXgpOworKyAgICAgICAgfQorKworKyAgICAgICAg cmV0dXJuICFtX3F1aXR0aW5nOworKyAgICB9CisrCisrICAgIGludCBkaXNwYXRjaFF1ZXVlUGVu ZGluZygpCisrICAgIHsKKysgICAgICAgIGlmIChtX3dsZXZxdWV1ZSkKKysgICAgICAgICAgICBy ZXR1cm4gd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1fd2xkaXNwbGF5LCBtX3ds ZXZxdWV1ZSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlf ZGlzcGF0Y2hfcGVuZGluZyhtX3dsZGlzcGxheSk7CisrICAgIH0KKysKKysgICAgaW50IHByZXBh cmVSZWFkUXVldWUoKQorKyAgICB7CisrICAgICAgICBpZiAobV93bGV2cXVldWUpCisrICAgICAg ICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkX3F1ZXVlKG1fd2xkaXNwbGF5LCBt X3dsZXZxdWV1ZSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3Bs YXlfcHJlcGFyZV9yZWFkKG1fd2xkaXNwbGF5KTsKKysgICAgfQorKworKyAgICBpbnQgbV9mZDsK KysgICAgaW50IG1fcGlwZWZkWzJdOworKyAgICB3bF9kaXNwbGF5ICptX3dsZGlzcGxheTsKKysg ICAgd2xfZXZlbnRfcXVldWUgKm1fd2xldnF1ZXVlOworKyAgICBPcGVyYXRpbmdNb2RlIG1fbW9k ZTsKKysKKysgICAgLyogQ29uY3VycmVuY3kgbm90ZSB3aGVuIG9wZXJhdGluZyBpbiBFbWl0VG9E aXNwYXRjaCBtb2RlOgorKyAgICAgKiBtX3JlYWRpbmcgaXMgc2V0IHRvIGZhbHNlIGluc2lkZSBl dmVudCB0aHJlYWQncyB3YWl0Rm9yUmVhZGluZygpLCBhbmQgaXMKKysgICAgICogc2V0IHRvIHRy dWUgaW5zaWRlIG1haW4gdGhyZWFkJ3MgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkuCisrICAgICAq IFRoZSBsb2NrIGlzIG5vdCB0YWtlbiB3aGVuIHNldHRpbmcgbV9yZWFkaW5nIHRvIGZhbHNlLCBh cyB0aGUgbWFpbiB0aHJlYWQKKysgICAgICogaXMgbm90IGFjdGl2ZWx5IHdhaXRpbmcgZm9yIGl0 IHRvIHR1cm4gZmFsc2UuIEhvd2V2ZXIsIHRoZSBsb2NrIGlzIHRha2VuCisrICAgICAqIGluc2lk ZSByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKSBiZWZvcmUgc2V0dGluZyBtX3JlYWRpbmcgdG8gdHJ1 ZSwKKysgICAgICogYXMgdGhlIGV2ZW50IHRocmVhZCBpcyBhY3RpdmVseSB3YWl0aW5nIGZvciBp dCB1bmRlciB0aGUgd2FpdCBjb25kaXRpb24uCisrICAgICAqLworKworKyAgICBRQXRvbWljSW50 ZWdlcjxib29sPiBtX3JlYWRpbmc7CisrICAgIGJvb2wgbV9xdWl0dGluZzsKKysgICAgUU11dGV4 IG1fbXV0ZXg7CisrICAgIFFXYWl0Q29uZGl0aW9uIG1fY29uZDsKKyt9OworKworIFFfTE9HR0lO R19DQVRFR09SWShsY1FwYVdheWxhbmQsICJxdC5xcGEud2F5bGFuZCIpOyAvLyBmb3IgZ2VuZXJh bCAodW5jYXRlZ29yaXplZCkgV2F5bGFuZCBwbGF0Zm9ybSBsb2dnaW5nCisgCisgc3RydWN0IHds X3N1cmZhY2UgKlFXYXlsYW5kRGlzcGxheTo6Y3JlYXRlU3VyZmFjZSh2b2lkICpoYW5kbGUpCitA QCAtMTU4LDE3ICszNTEsMTYgQEAgUVdheWxhbmREaXNwbGF5OjpRV2F5bGFuZERpc3BsYXkoUVdh eWxhbmRJbnRlZ3JhdGlvbiAqd2F5bGFuZEludGVncmF0aW9uKQorICAgICBpZiAoIW1Ya2JDb250 ZXh0KQorICAgICAgICAgcUNXYXJuaW5nKGxjUXBhV2F5bGFuZCwgImZhaWxlZCB0byBjcmVhdGUg eGtiIGNvbnRleHQiKTsKKyAjZW5kaWYKKy0KKy0gICAgZm9yY2VSb3VuZFRyaXAoKTsKKy0KKy0g ICAgaWYgKCFtV2FpdGluZ1NjcmVlbnMuaXNFbXB0eSgpKSB7CistICAgICAgICAvLyBHaXZlIHds X291dHB1dC5kb25lIGFuZCB6eGRnX291dHB1dF92MS5kb25lIGV2ZW50cyBhIGNoYW5jZSB0byBh cnJpdmUKKy0gICAgICAgIGZvcmNlUm91bmRUcmlwKCk7CistICAgIH0KKyB9CisgCisgUVdheWxh bmREaXNwbGF5Ojp+UVdheWxhbmREaXNwbGF5KHZvaWQpCisgeworKyAgICBpZiAobV9ldmVudFRo cmVhZCkKKysgICAgICAgIG1fZXZlbnRUaHJlYWQtPnN0b3AoKTsKKysKKysgICAgaWYgKG1fZnJh bWVFdmVudFF1ZXVlVGhyZWFkKQorKyAgICAgICAgbV9mcmFtZUV2ZW50UXVldWVUaHJlYWQtPnN0 b3AoKTsKKysKKyAgICAgaWYgKG1TeW5jQ2FsbGJhY2spCisgICAgICAgICB3bF9jYWxsYmFja19k ZXN0cm95KG1TeW5jQ2FsbGJhY2spOworIAorQEAgLTE4Nyw2ICszNzksMjEgQEAgUVdheWxhbmRE aXNwbGF5Ojp+UVdheWxhbmREaXNwbGF5KHZvaWQpCisgI2VuZGlmCisgICAgIGlmIChtRGlzcGxh eSkKKyAgICAgICAgIHdsX2Rpc3BsYXlfZGlzY29ubmVjdChtRGlzcGxheSk7CisrCisrICAgIGlm IChtX2ZyYW1lRXZlbnRRdWV1ZSkKKysgICAgICAgIHdsX2V2ZW50X3F1ZXVlX2Rlc3Ryb3kobV9m cmFtZUV2ZW50UXVldWUpOworK30KKysKKysvLyBTdGVwcyB3aGljaCBpcyBjYWxsZWQganVzdCBh ZnRlciBjb25zdHJ1Y3Rvci4gVGhpcyBzZXBhcmF0ZXMgcmVnaXN0cnlfZ2xvYmFsKCkgb3V0IG9m IHRoZSBjb25zdHJ1Y3RvcgorKy8vIHNvIHRoYXQgZmFjdG9yeSBmdW5jdGlvbnMgaW4gaW50ZWdy YXRpb24gY2FuIGJlIG92ZXJyaWRkZW4uCisrdm9pZCBRV2F5bGFuZERpc3BsYXk6OmluaXRpYWxp emUoKQorK3sKKysgICAgZm9yY2VSb3VuZFRyaXAoKTsKKysKKysgICAgaWYgKCFtV2FpdGluZ1Nj cmVlbnMuaXNFbXB0eSgpKSB7CisrICAgICAgICAvLyBHaXZlIHdsX291dHB1dC5kb25lIGFuZCB6 eGRnX291dHB1dF92MS5kb25lIGV2ZW50cyBhIGNoYW5jZSB0byBhcnJpdmUKKysgICAgICAgIGZv cmNlUm91bmRUcmlwKCk7CisrICAgIH0KKyB9CisgCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmVu c3VyZVNjcmVlbigpCitAQCAtMjAzLDk4ICs0MTAsMzcgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6 OmVuc3VyZVNjcmVlbigpCisgCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmNoZWNrRXJyb3IoKSBj b25zdAorIHsKKy0gICAgaW50IGVjb2RlID0gd2xfZGlzcGxheV9nZXRfZXJyb3IobURpc3BsYXkp OworLSAgICBpZiAoKGVjb2RlID09IEVQSVBFIHx8IGVjb2RlID09IEVDT05OUkVTRVQpKSB7Cist ICAgICAgICAvLyBzcGVjaWFsIGNhc2UgdGhpcyB0byBwcm92aWRlIGEgbmljZXIgZXJyb3IKKy0g ICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9uIGJyb2tlLiBEaWQgdGhlIFdh eWxhbmQgY29tcG9zaXRvciBkaWU/Iik7CistICAgIH0gZWxzZSB7CistICAgICAgICBxV2Fybmlu ZygiVGhlIFdheWxhbmQgY29ubmVjdGlvbiBleHBlcmllbmNlZCBhIGZhdGFsIGVycm9yOiAlcyIs IHN0cmVycm9yKGVjb2RlKSk7CistICAgIH0KKy0gICAgX2V4aXQoMSk7CisrICAgIGNoZWNrV2F5 bGFuZEVycm9yKG1EaXNwbGF5KTsKKyB9CisgCisrLy8gQ2FsbGVkIGluIG1haW4gdGhyZWFkLCBl aXRoZXIgZnJvbSBxdWV1ZWQgc2lnbmFsIG9yIGRpcmVjdGx5LgorIHZvaWQgUVdheWxhbmREaXNw bGF5OjpmbHVzaFJlcXVlc3RzKCkKKyB7CistICAgIGlmICh3bF9kaXNwbGF5X3ByZXBhcmVfcmVh ZChtRGlzcGxheSkgPT0gMCkgeworLSAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtRGlz cGxheSk7CistICAgIH0KKy0KKy0gICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcGVuZGluZyht RGlzcGxheSkgPCAwKQorLSAgICAgICAgY2hlY2tFcnJvcigpOworLQorLSAgICB7CistICAgICAg ICBRUmVhZExvY2tlciBsb2NrZXIoJm1fZnJhbWVRdWV1ZUxvY2spOworLSAgICAgICAgZm9yIChj b25zdCBGcmFtZVF1ZXVlICZxIDogbUV4dGVybmFsUXVldWVzKSB7CistICAgICAgICAgICAgUU11 dGV4TG9ja2VyIGxvY2tlcihxLm11dGV4KTsKKy0gICAgICAgICAgICB3aGlsZSAod2xfZGlzcGxh eV9wcmVwYXJlX3JlYWRfcXVldWUobURpc3BsYXksIHEucXVldWUpICE9IDApCistICAgICAgICAg ICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGluZyhtRGlzcGxheSwgcS5xdWV1 ZSk7CistICAgICAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtRGlzcGxheSk7CistICAg ICAgICAgICAgd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxLnF1 ZXVlKTsKKy0gICAgICAgIH0KKy0gICAgfQorLQorLSAgICB3bF9kaXNwbGF5X2ZsdXNoKG1EaXNw bGF5KTsKKy19CistCistdm9pZCBRV2F5bGFuZERpc3BsYXk6OmJsb2NraW5nUmVhZEV2ZW50cygp CisteworLSAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaChtRGlzcGxheSkgPCAwKQorLSAgICAg ICAgY2hlY2tFcnJvcigpOworLX0KKy0KKy12b2lkIFFXYXlsYW5kRGlzcGxheTo6ZGVzdHJveUZy YW1lUXVldWUoY29uc3QgUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlICZxKQorLXsKKy0gICAg UVdyaXRlTG9ja2VyIGxvY2tlcigmbV9mcmFtZVF1ZXVlTG9jayk7CistICAgIGF1dG8gaXQgPSBz dGQ6OmZpbmRfaWYobUV4dGVybmFsUXVldWVzLmJlZ2luKCksCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgbUV4dGVybmFsUXVldWVzLmVuZCgpLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIFsmcV0gKGNvbnN0IFFXYXlsYW5kRGlzcGxheTo6RnJhbWVRdWV1ZSAmb3RoZXIpeyByZXR1 cm4gb3RoZXIucXVldWUgPT0gcS5xdWV1ZTsgfSk7CistICAgIFFfQVNTRVJUKGl0ICE9IG1FeHRl cm5hbFF1ZXVlcy5lbmQoKSk7CistICAgIG1FeHRlcm5hbFF1ZXVlcy5lcmFzZShpdCk7CistICAg IGlmIChxLnF1ZXVlICE9IG51bGxwdHIpCistICAgICAgICB3bF9ldmVudF9xdWV1ZV9kZXN0cm95 KHEucXVldWUpOworLSAgICBkZWxldGUgcS5tdXRleDsKKysgICAgbV9ldmVudFRocmVhZC0+cmVh ZEFuZERpc3BhdGNoRXZlbnRzKCk7CisgfQorIAorLVFXYXlsYW5kRGlzcGxheTo6RnJhbWVRdWV1 ZSBRV2F5bGFuZERpc3BsYXk6OmNyZWF0ZUZyYW1lUXVldWUoKQorKy8vIFdlIGhhdmUgdG8gd2Fp dCB1bnRpbCB3ZSBoYXZlIGFuIGV2ZW50RGlzcGF0Y2hlciBiZWZvcmUgY3JlYXRpbmcgdGhlIGV2 ZW50VGhyZWFkLAorKy8vIG90aGVyd2lzZSBmb3JjZVJvdW5kVHJpcCgpIG1heSBibG9jayBpbnNp ZGUgX2V2ZW50c19yZWFkKCkgYmVjYXVzZSBldmVudFRocmVhZCBpcworKy8vIHBvbGxpbmcuCisr dm9pZCBRV2F5bGFuZERpc3BsYXk6OmluaXRFdmVudFRocmVhZCgpCisgeworLSAgICBRV3JpdGVM b2NrZXIgbG9ja2VyKCZtX2ZyYW1lUXVldWVMb2NrKTsKKy0gICAgRnJhbWVRdWV1ZSBxe2NyZWF0 ZUV2ZW50UXVldWUoKX07CistICAgIG1FeHRlcm5hbFF1ZXVlcy5hcHBlbmQocSk7CistICAgIHJl dHVybiBxOworLX0KKysgICAgbV9ldmVudFRocmVhZC5yZXNldCgKKysgICAgICAgICAgICBuZXcg RXZlbnRUaHJlYWQobURpc3BsYXksIC8qIGRlZmF1bHQgcXVldWUgKi8gbnVsbHB0ciwgRXZlbnRU aHJlYWQ6OkVtaXRUb0Rpc3BhdGNoKSk7CisrICAgIGNvbm5lY3QobV9ldmVudFRocmVhZC5nZXQo KSwgJkV2ZW50VGhyZWFkOjpuZWVkUmVhZEFuZERpc3BhdGNoLCB0aGlzLAorKyAgICAgICAgICAg ICZRV2F5bGFuZERpc3BsYXk6OmZsdXNoUmVxdWVzdHMsIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsK KysgICAgbV9ldmVudFRocmVhZC0+c3RhcnQoKTsKKyAKKy13bF9ldmVudF9xdWV1ZSAqUVdheWxh bmREaXNwbGF5OjpjcmVhdGVFdmVudFF1ZXVlKCkKKy17CistICAgIHJldHVybiB3bF9kaXNwbGF5 X2NyZWF0ZV9xdWV1ZShtRGlzcGxheSk7CisrICAgIC8vIHdsX2Rpc3BsYXlfZGlzY29ubmVjdCgp IGZyZWUgdGhpcy4KKysgICAgbV9mcmFtZUV2ZW50UXVldWUgPSB3bF9kaXNwbGF5X2NyZWF0ZV9x dWV1ZShtRGlzcGxheSk7CisrICAgIG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkLnJlc2V0KAorKyAg ICAgICAgICAgIG5ldyBFdmVudFRocmVhZChtRGlzcGxheSwgbV9mcmFtZUV2ZW50UXVldWUsIEV2 ZW50VGhyZWFkOjpTZWxmRGlzcGF0Y2gpKTsKKysgICAgbV9mcmFtZUV2ZW50UXVldWVUaHJlYWQt PnN0YXJ0KCk7CisgfQorIAorLXZvaWQgUVdheWxhbmREaXNwbGF5OjpkaXNwYXRjaFF1ZXVlV2hp bGUod2xfZXZlbnRfcXVldWUgKnF1ZXVlLCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKCk+IGNvbmRpdGlv biwgaW50IHRpbWVvdXQpCisrdm9pZCBRV2F5bGFuZERpc3BsYXk6OmJsb2NraW5nUmVhZEV2ZW50 cygpCisgeworLSAgICBpZiAoIWNvbmRpdGlvbigpKQorLSAgICAgICAgcmV0dXJuOworLQorLSAg ICBRRWxhcHNlZFRpbWVyIHRpbWVyOworLSAgICB0aW1lci5zdGFydCgpOworLSAgICBzdHJ1Y3Qg cG9sbGZkIHBGZCA9IHF0X21ha2VfcG9sbGZkKHdsX2Rpc3BsYXlfZ2V0X2ZkKG1EaXNwbGF5KSwg UE9MTElOKTsKKy0gICAgd2hpbGUgKHRpbWVvdXQgPT0gLTEgfHwgdGltZXIuZWxhcHNlZCgpIDwg dGltZW91dCkgeworLSAgICAgICAgd2hpbGUgKHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkX3F1ZXVl KG1EaXNwbGF5LCBxdWV1ZSkgIT0gMCkKKy0gICAgICAgICAgICB3bF9kaXNwbGF5X2Rpc3BhdGNo X3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHF1ZXVlKTsKKy0KKy0gICAgICAgIHdsX2Rpc3BsYXlf Zmx1c2gobURpc3BsYXkpOworLQorLSAgICAgICAgY29uc3QgaW50IHJlbWFpbmluZyA9IHFNYXgo dGltZW91dCAtIHRpbWVyLmVsYXBzZWQoKSwgMGxsKTsKKy0gICAgICAgIGNvbnN0IGludCBwb2xs VGltZW91dCA9IHRpbWVvdXQgPT0gLTEgPyAtMSA6IHJlbWFpbmluZzsKKy0gICAgICAgIGlmIChx dF9wb2xsX21zZWNzKCZwRmQsIDEsIHBvbGxUaW1lb3V0KSA+IDApCistICAgICAgICAgICAgd2xf ZGlzcGxheV9yZWFkX2V2ZW50cyhtRGlzcGxheSk7CistICAgICAgICBlbHNlCistICAgICAgICAg ICAgd2xfZGlzcGxheV9jYW5jZWxfcmVhZChtRGlzcGxheSk7CistCistICAgICAgICBpZiAod2xf ZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxdWV1ZSkgPCAwKQorLSAg ICAgICAgICAgIGNoZWNrRXJyb3IoKTsKKy0KKy0gICAgICAgIGlmICghY29uZGl0aW9uKCkpCist ICAgICAgICAgICAgYnJlYWs7CistICAgIH0KKysgICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2go bURpc3BsYXkpIDwgMCkKKysgICAgICAgIGNoZWNrV2F5bGFuZEVycm9yKG1EaXNwbGF5KTsKKyB9 CisgCisgUVdheWxhbmRTY3JlZW4gKlFXYXlsYW5kRGlzcGxheTo6c2NyZWVuRm9yT3V0cHV0KHN0 cnVjdCB3bF9vdXRwdXQgKm91dHB1dCkgY29uc3QKK0BAIC0zNDUsNyArNDkxLDcgQEAgdm9pZCBR V2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbCh1aW50MzJfdCBpZCwgY29uc3QgUVN0cmlu ZyAmaW50ZXJmYWNlLCB1aW4KKyAgICAgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgi d2xfb3V0cHV0IikpIHsKKyAgICAgICAgIG1XYWl0aW5nU2NyZWVucyA8PCBuZXcgUVdheWxhbmRT Y3JlZW4odGhpcywgdmVyc2lvbiwgaWQpOworICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBR U3RyaW5nTGl0ZXJhbCgid2xfY29tcG9zaXRvciIpKSB7CistICAgICAgICBtQ29tcG9zaXRvclZl cnNpb24gPSBxTWluKChpbnQpdmVyc2lvbiwgMyk7CisrICAgICAgICBtQ29tcG9zaXRvclZlcnNp b24gPSBxTWluKChpbnQpdmVyc2lvbiwgNCk7CisgICAgICAgICBtQ29tcG9zaXRvci5pbml0KHJl Z2lzdHJ5LCBpZCwgbUNvbXBvc2l0b3JWZXJzaW9uKTsKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZh Y2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX3NobSIpKSB7CisgICAgICAgICBtU2htLnJlc2V0KG5l dyBRV2F5bGFuZFNobSh0aGlzLCB2ZXJzaW9uLCBpZCkpOworQEAgLTM1NCw3ICs1MDAsNyBAQCB2 b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsKHVpbnQzMl90IGlkLCBjb25zdCBR U3RyaW5nICZpbnRlcmZhY2UsIHVpbgorICAgICAgICAgbUlucHV0RGV2aWNlcy5hcHBlbmQoaW5w dXREZXZpY2UpOworICNpZiBRVF9DT05GSUcod2F5bGFuZF9kYXRhZGV2aWNlKQorICAgICB9IGVs c2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xfZGF0YV9kZXZpY2VfbWFuYWdl ciIpKSB7CistICAgICAgICBtRG5kU2VsZWN0aW9uSGFuZGxlci5yZXNldChuZXcgUVdheWxhbmRE YXRhRGV2aWNlTWFuYWdlcih0aGlzLCBpZCkpOworKyAgICAgICAgbURuZFNlbGVjdGlvbkhhbmRs ZXIucmVzZXQobmV3IFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIodGhpcywgdmVyc2lvbiwgaWQp KTsKKyAjZW5kaWYKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwo InF0X3N1cmZhY2VfZXh0ZW5zaW9uIikpIHsKKyAgICAgICAgIG1XaW5kb3dFeHRlbnNpb24ucmVz ZXQobmV3IFF0V2F5bGFuZDo6cXRfc3VyZmFjZV9leHRlbnNpb24ocmVnaXN0cnksIGlkLCAxKSk7 CitAQCAtMzY5LDYgKzUxNSw4IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZWdpc3RyeV9nbG9i YWwodWludDMyX3QgaWQsIGNvbnN0IFFTdHJpbmcgJmludGVyZmFjZSwgdWluCisgI2lmIFFUX0NP TkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVjdGlvbikKKyAgICAgfSBlbHNlIGlmIChp bnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInp3cF9wcmltYXJ5X3NlbGVjdGlvbl9kZXZpY2Vf bWFuYWdlcl92MSIpKSB7CisgICAgICAgICBtUHJpbWFyeVNlbGVjdGlvbk1hbmFnZXIucmVzZXQo bmV3IFFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFnZXJWMSh0aGlzLCBpZCwgMSkp OworKyAgICAgICAgZm9yIChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljZSA6IHFBc0Nv bnN0KG1JbnB1dERldmljZXMpKQorKyAgICAgICAgICAgIGlucHV0RGV2aWNlLT5zZXRQcmltYXJ5 U2VsZWN0aW9uRGV2aWNlKG1QcmltYXJ5U2VsZWN0aW9uTWFuYWdlci0+Y3JlYXRlRGV2aWNlKGlu cHV0RGV2aWNlKSk7CisgI2VuZGlmCisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJp bmdMaXRlcmFsKCJ6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YyIikgJiYgIW1DbGllbnRTaWRlSW5w dXRDb250ZXh0UmVxdWVzdGVkKSB7CisgICAgICAgICBtVGV4dElucHV0TWFuYWdlci5yZXNldChu ZXcgUXRXYXlsYW5kOjp6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YyKHJlZ2lzdHJ5LCBpZCwgMSkp OworQEAgLTQyNyw2ICs1NzUsMTMgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2ds b2JhbF9yZW1vdmUodWludDMyX3QgaWQpCisgICAgICAgICAgICAgICAgICAgICBpbnB1dERldmlj ZS0+c2V0VGV4dElucHV0KG51bGxwdHIpOworICAgICAgICAgICAgICAgICBtV2F5bGFuZEludGVn cmF0aW9uLT5yZWNvbmZpZ3VyZUlucHV0Q29udGV4dCgpOworICAgICAgICAgICAgIH0KKysjaWYg UVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorKyAgICAgICAgICAg IGlmIChnbG9iYWwuaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ6d3BfcHJpbWFyeV9zZWxl Y3Rpb25fZGV2aWNlX21hbmFnZXJfdjEiKSkgeworKyAgICAgICAgICAgICAgICBtUHJpbWFyeVNl bGVjdGlvbk1hbmFnZXIucmVzZXQoKTsKKysgICAgICAgICAgICAgICAgZm9yIChRV2F5bGFuZElu cHV0RGV2aWNlICppbnB1dERldmljZSA6IHFBc0NvbnN0KG1JbnB1dERldmljZXMpKQorKyAgICAg ICAgICAgICAgICAgICAgaW5wdXREZXZpY2UtPnNldFByaW1hcnlTZWxlY3Rpb25EZXZpY2UobnVs bHB0cik7CisrICAgICAgICAgICAgfQorKyNlbmRpZgorICAgICAgICAgICAgIG1HbG9iYWxzLnJl bW92ZUF0KGkpOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorQEAgLTQ1Miw5ICs2 MDcsMTAgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmFkZFJlZ2lzdHJ5TGlzdGVuZXIoUmVnaXN0 cnlMaXN0ZW5lciBsaXN0ZW5lciwgdm9pZCAqZGF0YSkKKyAKKyB2b2lkIFFXYXlsYW5kRGlzcGxh eTo6cmVtb3ZlTGlzdGVuZXIoUmVnaXN0cnlMaXN0ZW5lciBsaXN0ZW5lciwgdm9pZCAqZGF0YSkK KyB7CistICAgIHN0ZDo6cmVtb3ZlX2lmKG1SZWdpc3RyeUxpc3RlbmVycy5iZWdpbigpLCBtUmVn aXN0cnlMaXN0ZW5lcnMuZW5kKCksIFs9XShMaXN0ZW5lciBsKXsKKysgICAgYXV0byBpdGVyID0g c3RkOjpyZW1vdmVfaWYobVJlZ2lzdHJ5TGlzdGVuZXJzLmJlZ2luKCksIG1SZWdpc3RyeUxpc3Rl bmVycy5lbmQoKSwgWz1dKExpc3RlbmVyIGwpeworICAgICAgICAgcmV0dXJuIChsLmxpc3RlbmVy ID09IGxpc3RlbmVyICYmIGwuZGF0YSA9PSBkYXRhKTsKKyAgICAgfSk7CisrICAgIG1SZWdpc3Ry eUxpc3RlbmVycy5lcmFzZShpdGVyLCBtUmVnaXN0cnlMaXN0ZW5lcnMuZW5kKCkpOworIH0KKyAK KyB1aW50MzJfdCBRV2F5bGFuZERpc3BsYXk6OmN1cnJlbnRUaW1lTWlsbGlzZWMoKQorQEAgLTQ2 Nyw1MCArNjIzLDkgQEAgdWludDMyX3QgUVdheWxhbmREaXNwbGF5OjpjdXJyZW50VGltZU1pbGxp c2VjKCkKKyAgICAgcmV0dXJuIDA7CisgfQorIAorLXN0YXRpYyB2b2lkCistc3luY19jYWxsYmFj ayh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfY2FsbGJhY2sgKmNhbGxiYWNrLCB1aW50MzJfdCBzZXJp YWwpCisteworLSAgICBRX1VOVVNFRChzZXJpYWwpCistICAgIGJvb2wgKmRvbmUgPSBzdGF0aWNf Y2FzdDxib29sICo+KGRhdGEpOworLQorLSAgICAqZG9uZSA9IHRydWU7CistCistICAgIC8vIElm IHRoZSB3bF9jYWxsYmFjayBkb25lIGV2ZW50IGlzIHJlY2VpdmVkIGFmdGVyIHRoZSBjb25kaXRp b24gY2hlY2sgaW4gdGhlIHdoaWxlIGxvb3AgaW4KKy0gICAgLy8gZm9yY2VSb3VuZFRyaXAoKSwg YnV0IGJlZm9yZSB0aGUgY2FsbCB0byBwcm9jZXNzRXZlbnRzLCB0aGUgY2FsbCB0byBwcm9jZXNz RXZlbnRzIG1heSBibG9jaworLSAgICAvLyBmb3JldmVyIGlmIG5vIG1vcmUgZXZlbnRzIGFyZSBw b3N0ZWQgKGV2ZW50aG91Z2ggdGhlIGNhbGxiYWNrIGlzIGhhbmRsZWQgaW4gcmVzcG9uc2UgdG8g dGhlCistICAgIC8vIGFib3V0VG9CbG9jayBzaWduYWwpLiBIZW5jZSwgd2Ugd2FrZSB1cCB0aGUg ZXZlbnQgZGlzcGF0Y2hlciBzbyBmb3JjZVJvdW5kVHJpcCBtYXkgcmV0dXJuLgorLSAgICAvLyAo UVRCVUctNjQ2OTYpCistICAgIGlmIChhdXRvICpkaXNwYXRjaGVyID0gUVRocmVhZDo6Y3VycmVu dFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKSkKKy0gICAgICAgIGRpc3BhdGNoZXItPndha2VV cCgpOworLQorLSAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsKKy19CistCistc3Rh dGljIGNvbnN0IHN0cnVjdCB3bF9jYWxsYmFja19saXN0ZW5lciBzeW5jX2xpc3RlbmVyID0gewor LSAgICBzeW5jX2NhbGxiYWNrCistfTsKKy0KKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6Zm9yY2VS b3VuZFRyaXAoKQorIHsKKy0gICAgLy8gd2xfZGlzcGxheV9yb3VuZHRyaXAoKSB3b3JrcyBvbiB0 aGUgbWFpbiBxdWV1ZSBvbmx5LAorLSAgICAvLyBidXQgd2UgdXNlIGEgc2VwYXJhdGUgb25lLCBz byBiYXNpY2FsbHkgcmVpbXBsZW1lbnQgaXQgaGVyZQorLSAgICBpbnQgcmV0ID0gMDsKKy0gICAg Ym9vbCBkb25lID0gZmFsc2U7CistICAgIHdsX2NhbGxiYWNrICpjYWxsYmFjayA9IHdsX2Rpc3Bs YXlfc3luYyhtRGlzcGxheSk7CistICAgIHdsX2NhbGxiYWNrX2FkZF9saXN0ZW5lcihjYWxsYmFj aywgJnN5bmNfbGlzdGVuZXIsICZkb25lKTsKKy0gICAgZmx1c2hSZXF1ZXN0cygpOworLSAgICBp ZiAoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKSkgeworLSAgICAg ICAgd2hpbGUgKCFkb25lICYmIHJldCA+PSAwKSB7CistICAgICAgICAgICAgUVRocmVhZDo6Y3Vy cmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKS0+cHJvY2Vzc0V2ZW50cyhRRXZlbnRMb29w OjpXYWl0Rm9yTW9yZUV2ZW50cyk7CistICAgICAgICAgICAgcmV0ID0gd2xfZGlzcGxheV9kaXNw YXRjaF9wZW5kaW5nKG1EaXNwbGF5KTsKKy0gICAgICAgIH0KKy0gICAgfSBlbHNlIHsKKy0gICAg ICAgIHdoaWxlICghZG9uZSAmJiByZXQgPj0gMCkKKy0gICAgICAgICAgICByZXQgPSB3bF9kaXNw bGF5X2Rpc3BhdGNoKG1EaXNwbGF5KTsKKy0gICAgfQorLQorLSAgICBpZiAocmV0ID09IC0xICYm ICFkb25lKQorLSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShjYWxsYmFjayk7CisrICAgICB3 bF9kaXNwbGF5X3JvdW5kdHJpcChtRGlzcGxheSk7CisgfQorIAorIGJvb2wgUVdheWxhbmREaXNw bGF5OjpzdXBwb3J0c1dpbmRvd0RlY29yYXRpb24oKSBjb25zdAorQEAgLTU3NCwxNCArNjg5LDEw IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5 bGFuZElucHV0RGV2aWNlICppbnB1dERldmljCisgICAgIGlmIChtTGFzdEtleWJvYXJkRm9jdXMg PT0ga2V5Ym9hcmRGb2N1cykKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKG1XYXlsYW5k SW50ZWdyYXRpb24tPm1TaGVsbEludGVncmF0aW9uKSB7CistICAgICAgICBtV2F5bGFuZEludGVn cmF0aW9uLT5tU2hlbGxJbnRlZ3JhdGlvbi0+aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoa2V5 Ym9hcmRGb2N1cywgbUxhc3RLZXlib2FyZEZvY3VzKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAg IGlmIChrZXlib2FyZEZvY3VzKQorLSAgICAgICAgICAgIGhhbmRsZVdpbmRvd0FjdGl2YXRlZChr ZXlib2FyZEZvY3VzKTsKKy0gICAgICAgIGlmIChtTGFzdEtleWJvYXJkRm9jdXMpCistICAgICAg ICAgICAgaGFuZGxlV2luZG93RGVhY3RpdmF0ZWQobUxhc3RLZXlib2FyZEZvY3VzKTsKKy0gICAg fQorKyAgICBpZiAoa2V5Ym9hcmRGb2N1cykKKysgICAgICAgIGhhbmRsZVdpbmRvd0FjdGl2YXRl ZChrZXlib2FyZEZvY3VzKTsKKysgICAgaWYgKG1MYXN0S2V5Ym9hcmRGb2N1cykKKysgICAgICAg IGhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG1MYXN0S2V5Ym9hcmRGb2N1cyk7CisgCisgICAgIG1M YXN0S2V5Ym9hcmRGb2N1cyA9IGtleWJvYXJkRm9jdXM7CisgfQorQEAgLTYwMCw2ICs3MTEsMTkg QEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmhhbmRsZVdheWxhbmRTeW5jKCkKKyAgICAgUVdpbmRv dyAqYWN0aXZlV2luZG93ID0gbUFjdGl2ZVdpbmRvd3MuZW1wdHkoKSA/IG51bGxwdHIgOiBtQWN0 aXZlV2luZG93cy5sYXN0KCktPndpbmRvdygpOworICAgICBpZiAoYWN0aXZlV2luZG93ICE9IFFH dWlBcHBsaWNhdGlvbjo6Zm9jdXNXaW5kb3coKSkKKyAgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRl cmZhY2U6OmhhbmRsZVdpbmRvd0FjdGl2YXRlZChhY3RpdmVXaW5kb3cpOworKworKyAgICBpZiAo IWFjdGl2ZVdpbmRvdykgeworKyAgICAgICAgaWYgKGxhc3RJbnB1dERldmljZSgpKSB7CisrI2lm IFFUX0NPTkZJRyhjbGlwYm9hcmQpCisrICAgICAgICAgICAgaWYgKGF1dG8gKmRhdGFEZXZpY2Ug PSBsYXN0SW5wdXREZXZpY2UoKS0+ZGF0YURldmljZSgpKQorKyAgICAgICAgICAgICAgICBkYXRh RGV2aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKysjZW5kaWYKKysjaWYgUVRfQ09O RklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorKyAgICAgICAgICAgIGlmIChh dXRvICpkZXZpY2UgPSBsYXN0SW5wdXREZXZpY2UoKS0+cHJpbWFyeVNlbGVjdGlvbkRldmljZSgp KQorKyAgICAgICAgICAgICAgICBkZXZpY2UtPmludmFsaWRhdGVTZWxlY3Rpb25PZmZlcigpOwor KyNlbmRpZgorKyAgICAgICAgfQorKyAgICB9CisgfQorIAorIGNvbnN0IHdsX2NhbGxiYWNrX2xp c3RlbmVyIFFXYXlsYW5kRGlzcGxheTo6c3luY0NhbGxiYWNrTGlzdGVuZXIgPSB7CitAQCAtNjI2 LDYgKzc1MCwxMyBAQCBRV2F5bGFuZElucHV0RGV2aWNlICpRV2F5bGFuZERpc3BsYXk6OmRlZmF1 bHRJbnB1dERldmljZSgpIGNvbnN0CisgICAgIHJldHVybiBtSW5wdXREZXZpY2VzLmlzRW1wdHko KSA/IDAgOiBtSW5wdXREZXZpY2VzLmZpcnN0KCk7CisgfQorIAorK2Jvb2wgUVdheWxhbmREaXNw bGF5Ojppc0tleWJvYXJkQXZhaWxhYmxlKCkgY29uc3QKKyt7CisrICAgIHJldHVybiBzdGQ6OmFu eV9vZigKKysgICAgICAgICAgICBtSW5wdXREZXZpY2VzLmNvbnN0QmVnaW4oKSwgbUlucHV0RGV2 aWNlcy5jb25zdEVuZCgpLAorKyAgICAgICAgICAgIFt0aGlzXShjb25zdCBRV2F5bGFuZElucHV0 RGV2aWNlICpkZXZpY2UpIHsgcmV0dXJuIGRldmljZS0+a2V5Ym9hcmQoKSAhPSBudWxscHRyOyB9 KTsKKyt9CisrCisgI2lmIFFUX0NPTkZJRyhjdXJzb3IpCisgCisgUVdheWxhbmRDdXJzb3IgKlFX YXlsYW5kRGlzcGxheTo6d2F5bGFuZEN1cnNvcigpCitAQCAtNjUyLDQgKzc4Myw2IEBAIFFXYXls YW5kQ3Vyc29yVGhlbWUgKlFXYXlsYW5kRGlzcGxheTo6bG9hZEN1cnNvclRoZW1lKGNvbnN0IFFT dHJpbmcgJm5hbWUsIGludCBwCisgCisgfSAvLyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50Cisg CisrI2luY2x1ZGUgInF3YXlsYW5kZGlzcGxheS5tb2MiCisrCisgUVRfRU5EX05BTUVTUEFDRQor ZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheV9wLmggYi9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXlfcC5oCitpbmRleCAzYjA5MmJjOC4u NDJiYzY2MWQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3Bs YXlfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXlfcC5oCitA QCAtMTA5LDYgKzEwOSw3IEBAIGNsYXNzIFFXYXlsYW5kU3VyZmFjZTsKKyBjbGFzcyBRV2F5bGFu ZFNoZWxsSW50ZWdyYXRpb247CisgY2xhc3MgUVdheWxhbmRDdXJzb3I7CisgY2xhc3MgUVdheWxh bmRDdXJzb3JUaGVtZTsKKytjbGFzcyBFdmVudFRocmVhZDsKKyAKKyB0eXBlZGVmIHZvaWQgKCpS ZWdpc3RyeUxpc3RlbmVyKSh2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCB3bF9yZWdpc3RyeSAqcmVnaXN0cnksCitAQCAtMTIwLDE1ICsxMjEsMTEg QEAgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmREaXNwbGF5IDogcHVibGlj IFFPYmplY3QsIHB1YmxpYyBRdFdheWxhbmQKKyAgICAgUV9PQkpFQ1QKKyAKKyBwdWJsaWM6Cist ICAgIHN0cnVjdCBGcmFtZVF1ZXVlIHsKKy0gICAgICAgIEZyYW1lUXVldWUod2xfZXZlbnRfcXVl dWUgKnEgPSBudWxscHRyKSA6IHF1ZXVlKHEpLCBtdXRleChuZXcgUU11dGV4KSB7fQorLSAgICAg ICAgd2xfZXZlbnRfcXVldWUgKnF1ZXVlOworLSAgICAgICAgUU11dGV4ICptdXRleDsKKy0gICAg fTsKKy0KKyAgICAgUVdheWxhbmREaXNwbGF5KFFXYXlsYW5kSW50ZWdyYXRpb24gKndheWxhbmRJ bnRlZ3JhdGlvbik7CisgICAgIH5RV2F5bGFuZERpc3BsYXkodm9pZCkgb3ZlcnJpZGU7CisgCisr ICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworKworICNpZiBRVF9DT05GSUcoeGtiY29tbW9uKQorICAg ICBzdHJ1Y3QgeGtiX2NvbnRleHQgKnhrYkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtWGtiQ29u dGV4dC5nZXQoKTsgfQorICNlbmRpZgorQEAgLTIxMCwxMSArMjA3LDExIEBAIHB1YmxpYzoKKyAg ICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZElucHV0RGV2aWNlICpp bnB1dERldmljZSk7CisgICAgIHZvaWQgaGFuZGxlV2luZG93RGVzdHJveWVkKFFXYXlsYW5kV2lu ZG93ICp3aW5kb3cpOworIAorLSAgICB3bF9ldmVudF9xdWV1ZSAqY3JlYXRlRXZlbnRRdWV1ZSgp OworLSAgICBGcmFtZVF1ZXVlIGNyZWF0ZUZyYW1lUXVldWUoKTsKKy0gICAgdm9pZCBkZXN0cm95 RnJhbWVRdWV1ZShjb25zdCBGcmFtZVF1ZXVlICZxKTsKKy0gICAgdm9pZCBkaXNwYXRjaFF1ZXVl V2hpbGUod2xfZXZlbnRfcXVldWUgKnF1ZXVlLCBzdGQ6OmZ1bmN0aW9uPGJvb2woKT4gY29uZGl0 aW9uLCBpbnQgdGltZW91dCA9IC0xKTsKKysgICAgd2xfZXZlbnRfcXVldWUgKmZyYW1lRXZlbnRR dWV1ZSgpIHsgcmV0dXJuIG1fZnJhbWVFdmVudFF1ZXVlOyB9OworKworKyAgICBib29sIGlzS2V5 Ym9hcmRBdmFpbGFibGUoKSBjb25zdDsKKyAKKysgICAgdm9pZCBpbml0RXZlbnRUaHJlYWQoKTsK KyBwdWJsaWMgc2xvdHM6CisgICAgIHZvaWQgYmxvY2tpbmdSZWFkRXZlbnRzKCk7CisgICAgIHZv aWQgZmx1c2hSZXF1ZXN0cygpOworQEAgLTIzNyw2ICsyMzQsOSBAQCBwcml2YXRlOgorICAgICB9 OworIAorICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSAqbURpc3BsYXkgPSBudWxscHRyOworKyAgICBR U2NvcGVkUG9pbnRlcjxFdmVudFRocmVhZD4gbV9ldmVudFRocmVhZDsKKysgICAgd2xfZXZlbnRf cXVldWUgKm1fZnJhbWVFdmVudFF1ZXVlID0gbnVsbHB0cjsKKysgICAgUVNjb3BlZFBvaW50ZXI8 RXZlbnRUaHJlYWQ+IG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkOworICAgICBRdFdheWxhbmQ6Onds X2NvbXBvc2l0b3IgbUNvbXBvc2l0b3I7CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kU2ht PiBtU2htOworICAgICBRTGlzdDxRV2F5bGFuZFNjcmVlbiAqPiBtV2FpdGluZ1NjcmVlbnM7CitA QCAtMjczLDExICsyNzMsOSBAQCBwcml2YXRlOgorICAgICBRV2F5bGFuZElucHV0RGV2aWNlICpt TGFzdElucHV0RGV2aWNlID0gbnVsbHB0cjsKKyAgICAgUVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+ IG1MYXN0SW5wdXRXaW5kb3c7CisgICAgIFFQb2ludGVyPFFXYXlsYW5kV2luZG93PiBtTGFzdEtl eWJvYXJkRm9jdXM7CistICAgIFFWZWN0b3I8UVdheWxhbmRXaW5kb3cgKj4gbUFjdGl2ZVdpbmRv d3M7CistICAgIFFWZWN0b3I8RnJhbWVRdWV1ZT4gbUV4dGVybmFsUXVldWVzOworKyAgICBRTGlz dDxRV2F5bGFuZFdpbmRvdyAqPiBtQWN0aXZlV2luZG93czsKKyAgICAgc3RydWN0IHdsX2NhbGxi YWNrICptU3luY0NhbGxiYWNrID0gbnVsbHB0cjsKKyAgICAgc3RhdGljIGNvbnN0IHdsX2NhbGxi YWNrX2xpc3RlbmVyIHN5bmNDYWxsYmFja0xpc3RlbmVyOworLSAgICBRUmVhZFdyaXRlTG9jayBt X2ZyYW1lUXVldWVMb2NrOworIAorICAgICBib29sIG1DbGllbnRTaWRlSW5wdXRDb250ZXh0UmVx dWVzdGVkID0gIVFQbGF0Zm9ybUlucHV0Q29udGV4dEZhY3Rvcnk6OnJlcXVlc3RlZCgpLmlzTnVs bCgpOworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNw cCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcAoraW5kZXggNjUzNWFhMTYu LjdjNTNmNWZhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmQu Y3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZC5jcHAKK0BAIC02Niw3 ICs2Niw3IEBAIHZvaWQgUVdheWxhbmREcmFnOjpzdGFydERyYWcoKQorIHsKKyAgICAgUUJhc2lj RHJhZzo6c3RhcnREcmFnKCk7CisgICAgIFFXYXlsYW5kV2luZG93ICppY29uID0gc3RhdGljX2Nh c3Q8UVdheWxhbmRXaW5kb3cgKj4oc2hhcGVkUGl4bWFwV2luZG93KCktPmhhbmRsZSgpKTsKKy0g ICAgaWYgKG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPmRhdGFEZXZpY2UoKS0+c3Rh cnREcmFnKGRyYWcoKS0+bWltZURhdGEoKSwgaWNvbikpIHsKKysgICAgaWYgKG1fZGlzcGxheS0+ Y3VycmVudElucHV0RGV2aWNlKCktPmRhdGFEZXZpY2UoKS0+c3RhcnREcmFnKGRyYWcoKS0+bWlt ZURhdGEoKSwgZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIGljb24pKSB7CisgICAgICAgICBp Y29uLT5hZGRBdHRhY2hPZmZzZXQoLWRyYWcoKS0+aG90U3BvdCgpKTsKKyAgICAgfSBlbHNlIHsK KyAgICAgICAgIC8vIENhbmNlbGxpbmcgaW1tZWRpYXRlbHkgZG9lcyBub3Qgd29yaywgc2luY2Ug dGhlIGV2ZW50IGxvb3AgZm9yIFFEcmFnOjpleGVjIGlzIHN0YXJ0ZWQKK0BAIC04MCw2ICs4MCw5 IEBAIHZvaWQgUVdheWxhbmREcmFnOjpjYW5jZWwoKQorICAgICBRQmFzaWNEcmFnOjpjYW5jZWwo KTsKKyAKKyAgICAgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+ZGF0YURldmljZSgp LT5jYW5jZWxEcmFnKCk7CisrCisrICAgIGlmIChkcmFnKCkpCisrICAgICAgICBkcmFnKCktPmRl bGV0ZUxhdGVyKCk7CisgfQorIAorIHZvaWQgUVdheWxhbmREcmFnOjptb3ZlKGNvbnN0IFFQb2lu dCAmZ2xvYmFsUG9zLCBRdDo6TW91c2VCdXR0b25zIGIsIFF0OjpLZXlib2FyZE1vZGlmaWVycyBt b2RzKQorQEAgLTEwMywzMyArMTA2LDQxIEBAIHZvaWQgUVdheWxhbmREcmFnOjplbmREcmFnKCkK KyAgICAgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+aGFuZGxlRW5kRHJhZygpOwor IH0KKyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6dXBkYXRlVGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1p bWVUeXBlKQorK3ZvaWQgUVdheWxhbmREcmFnOjpzZXRSZXNwb25zZShib29sIGFjY2VwdGVkKQor IHsKKy0gICAgc2V0Q2FuRHJvcCghbWltZVR5cGUuaXNFbXB0eSgpKTsKKy0KKy0gICAgaWYgKGNh bkRyb3AoKSkgeworLSAgICAgICAgdXBkYXRlQ3Vyc29yKGRlZmF1bHRBY3Rpb24oZHJhZygpLT5z dXBwb3J0ZWRBY3Rpb25zKCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPm1vZGlm aWVycygpKSk7CistICAgIH0gZWxzZSB7CistICAgICAgICB1cGRhdGVDdXJzb3IoUXQ6Oklnbm9y ZUFjdGlvbik7CistICAgIH0KKysgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3Igb2xkIERh dGFEZXZpY2VzIHdoZXJlIHRoZSBkcmFnIGFjdGlvbiBpcyBub3QgY29tbXVuaWNhdGVkCisrICAg IFF0OjpEcm9wQWN0aW9uIGFjdGlvbiA9IGRlZmF1bHRBY3Rpb24oZHJhZygpLT5zdXBwb3J0ZWRB Y3Rpb25zKCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPm1vZGlmaWVycygpKTsK KysgICAgc2V0UmVzcG9uc2UoUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UoYWNjZXB0ZWQsIGFjdGlv bikpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6c2V0UmVzcG9uc2UoY29uc3QgUVBsYXRm b3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKQorK3ZvaWQgUVdheWxhbmREcmFnOjpzZXRSZXNw b25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpCisgeworICAgICBz ZXRDYW5Ecm9wKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSk7CisgCisgICAgIGlmIChjYW5Ecm9wKCkp IHsKKy0gICAgICAgIHVwZGF0ZUN1cnNvcihkZWZhdWx0QWN0aW9uKGRyYWcoKS0+c3VwcG9ydGVk QWN0aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5tb2RpZmllcnMoKSkp OworKyAgICAgICAgdXBkYXRlQ3Vyc29yKHJlc3BvbnNlLmFjY2VwdGVkQWN0aW9uKCkpOworICAg ICB9IGVsc2UgeworICAgICAgICAgdXBkYXRlQ3Vyc29yKFF0OjpJZ25vcmVBY3Rpb24pOworICAg ICB9CisgfQorIAorLXZvaWQgUVdheWxhbmREcmFnOjpmaW5pc2hEcmFnKGNvbnN0IFFQbGF0Zm9y bURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSkKKyt2b2lkIFFXYXlsYW5kRHJhZzo6c2V0RHJvcFJl c3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSkKKyB7CisgICAg IHNldEV4ZWN1dGVkRHJvcEFjdGlvbihyZXNwb25zZS5hY2NlcHRlZEFjdGlvbigpKTsKKyt9Cisr Cisrdm9pZCBRV2F5bGFuZERyYWc6OmZpbmlzaERyYWcoKQorK3sKKyAgICAgUUtleUV2ZW50IGV2 ZW50KFFFdmVudDo6S2V5UHJlc3MsIFF0OjpLZXlfRXNjYXBlLCBRdDo6Tm9Nb2RpZmllcik7Cisg ICAgIGV2ZW50RmlsdGVyKHNoYXBlZFBpeG1hcFdpbmRvdygpLCAmZXZlbnQpOworKworKyAgICBp ZiAoZHJhZygpKQorKyAgICAgICAgZHJhZygpLT5kZWxldGVMYXRlcigpOworK30KKysKKytib29s IFFXYXlsYW5kRHJhZzo6b3duc0RyYWdPYmplY3QoKSBjb25zdAorK3sKKysgICAgcmV0dXJuIHRy dWU7CisgfQorIAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRuZF9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmgKK2luZGV4IDQ3 NGZlMmFiLi40NmY2MjlhYyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZG5kX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmRfcC5oCitA QCAtNzEsOSArNzEsMTAgQEAgcHVibGljOgorICAgICBRV2F5bGFuZERyYWcoUVdheWxhbmREaXNw bGF5ICpkaXNwbGF5KTsKKyAgICAgflFXYXlsYW5kRHJhZygpIG92ZXJyaWRlOworIAorLSAgICB2 b2lkIHVwZGF0ZVRhcmdldChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSk7CistICAgIHZvaWQgc2V0 UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKy0gICAg dm9pZCBmaW5pc2hEcmFnKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSk7 CisrICAgIHZvaWQgc2V0UmVzcG9uc2UoYm9vbCBhY2NlcHRlZCk7CisrICAgIHZvaWQgc2V0UmVz cG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysgICAgdm9p ZCBzZXREcm9wUmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNl KTsKKysgICAgdm9pZCBmaW5pc2hEcmFnKCk7CisgCisgcHJvdGVjdGVkOgorICAgICB2b2lkIHN0 YXJ0RHJhZygpIG92ZXJyaWRlOworQEAgLTgyLDYgKzgzLDcgQEAgcHJvdGVjdGVkOgorICAgICB2 b2lkIGRyb3AoY29uc3QgUVBvaW50ICZnbG9iYWxQb3MsIFF0OjpNb3VzZUJ1dHRvbnMgYiwgUXQ6 OktleWJvYXJkTW9kaWZpZXJzIG1vZHMpIG92ZXJyaWRlOworICAgICB2b2lkIGVuZERyYWcoKSBv dmVycmlkZTsKKyAKKysgICAgYm9vbCBvd25zRHJhZ09iamVjdCgpIGNvbnN0IG92ZXJyaWRlOwor IAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5ID0gbnVsbHB0cjsK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlucHV0ZGV2aWNlLmNw cCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2UuY3BwCitpbmRleCA2 MTNmZTg2Mi4uNGI5MGRlODQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGlucHV0ZGV2aWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRp bnB1dGRldmljZS5jcHAKK0BAIC02ODUsNiArNjg1LDExIEBAIHB1YmxpYzoKKyAKKyB2b2lkIFFX YXlsYW5kSW5wdXREZXZpY2U6OlBvaW50ZXI6OnBvaW50ZXJfbGVhdmUodWludDMyX3QgdGltZSwg c3RydWN0IHdsX3N1cmZhY2UgKnN1cmZhY2UpCisgeworKyAgICBpbnZhbGlkYXRlRm9jdXMoKTsK KysgICAgbUJ1dHRvbnMgPSBRdDo6Tm9CdXR0b247CisrCisrICAgIG1QYXJlbnQtPm1UaW1lID0g dGltZTsKKysKKyAgICAgLy8gVGhlIGV2ZW50IG1heSBhcnJpdmUgYWZ0ZXIgZGVzdHJveWluZyB0 aGUgd2luZG93LCBpbmRpY2F0ZWQgYnkKKyAgICAgLy8gYSBudWxsIHN1cmZhY2UuCisgICAgIGlm ICghc3VyZmFjZSkKK0BAIC02OTYsMTEgKzcwMSw2IEBAIHZvaWQgUVdheWxhbmRJbnB1dERldmlj ZTo6UG9pbnRlcjo6cG9pbnRlcl9sZWF2ZSh1aW50MzJfdCB0aW1lLCBzdHJ1Y3Qgd2xfc3VyZmFj CisgCisgICAgIGlmICghUVdheWxhbmRXaW5kb3c6Om1vdXNlR3JhYigpKQorICAgICAgICAgc2V0 RnJhbWVFdmVudChuZXcgTGVhdmVFdmVudCh3aW5kb3csIG1TdXJmYWNlUG9zLCBtR2xvYmFsUG9z KSk7CistCistICAgIGludmFsaWRhdGVGb2N1cygpOworLSAgICBtQnV0dG9ucyA9IFF0OjpOb0J1 dHRvbjsKKy0KKy0gICAgbVBhcmVudC0+bVRpbWUgPSB0aW1lOworIH0KKyAKKyBjbGFzcyBNb3Rp b25FdmVudCA6IHB1YmxpYyBRV2F5bGFuZFBvaW50ZXJFdmVudAorQEAgLTEzMDAsMTQgKzEzMDAs NiBAQCB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OktleWJvYXJkOjpoYW5kbGVGb2N1c0Rlc3Ry b3llZCgpCisgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpLZXlib2FyZDo6aGFuZGxlRm9jdXNM b3N0KCkKKyB7CisgICAgIG1Gb2N1cyA9IG51bGxwdHI7CistI2lmIFFUX0NPTkZJRyhjbGlwYm9h cmQpCistICAgIGlmIChhdXRvICpkYXRhRGV2aWNlID0gbVBhcmVudC0+ZGF0YURldmljZSgpKQor LSAgICAgICAgZGF0YURldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7CistI2VuZGlm CistI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVjdGlvbikKKy0gICAg aWYgKGF1dG8gKmRldmljZSA9IG1QYXJlbnQtPnByaW1hcnlTZWxlY3Rpb25EZXZpY2UoKSkKKy0g ICAgICAgIGRldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7CistI2VuZGlmCisgICAg IG1QYXJlbnQtPm1RRGlzcGxheS0+aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQobVBhcmVudCk7 CisgICAgIG1SZXBlYXRUaW1lci5zdG9wKCk7CisgfQorQEAgLTEzOTYsNiArMTM4OCw3IEBAIHZv aWQgUVdheWxhbmRJbnB1dERldmljZTo6VG91Y2g6OnRvdWNoX2NhbmNlbCgpCisgICAgIGlmICh0 b3VjaEV4dCkKKyAgICAgICAgIHRvdWNoRXh0LT50b3VjaENhbmNlbGVkKCk7CisgCisrICAgIG1G b2N1cyA9IG51bGxwdHI7CisgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVRvdWNo Q2FuY2VsRXZlbnQobnVsbHB0ciwgbVBhcmVudC0+bVRvdWNoRGV2aWNlKTsKKyB9CisgCitkaWZm IC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbi5jcHAgYi9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uLmNwcAoraW5kZXggYzUzY2Ni NzguLjU0ODYxNjAwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRp bnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdy YXRpb24uY3BwCitAQCAtMTI1LDYgKzEyNSw5IEBAIFFXYXlsYW5kSW50ZWdyYXRpb246OlFXYXls YW5kSW50ZWdyYXRpb24oKQorICNlbmRpZgorIAorICAgICByZWNvbmZpZ3VyZUlucHV0Q29udGV4 dCgpOworKworKyAgICBRV2F5bGFuZFdpbmRvdzo6Zml4ZWRUb3BsZXZlbFBvc2l0aW9ucyA9Cisr ICAgICAgICAgICAgIXFFbnZpcm9ubWVudFZhcmlhYmxlSXNTZXQoIlFUX1dBWUxBTkRfRElTQUJM RV9GSVhFRF9QT1NJVElPTlMiKTsKKyB9CisgCisgUVdheWxhbmRJbnRlZ3JhdGlvbjo6flFXYXls YW5kSW50ZWdyYXRpb24oKQorQEAgLTE5MiwxNCArMTk1LDE4IEBAIFFBYnN0cmFjdEV2ZW50RGlz cGF0Y2hlciAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6Y3JlYXRlRXZlbnREaXNwYXRjaGVyKCkgY29u c3QKKyAKKyB2b2lkIFFXYXlsYW5kSW50ZWdyYXRpb246OmluaXRpYWxpemUoKQorIHsKKysgICAg bURpc3BsYXktPmluaXRFdmVudFRocmVhZCgpOworKworKyAgICAvLyBDYWxsIGFmdGVyIGV2ZW50 RGlzcGF0Y2hlciBpcyBmdWxseSBjb25uZWN0ZWQsIGZvciBRV2F5bGFuZERpc3BsYXk6OmZvcmNl Um91bmRUcmlwKCkKKysgICAgbURpc3BsYXktPmluaXRpYWxpemUoKTsKKysKKysgICAgLy8gQnV0 IHRoZSBhYm91dFRvQmxvY2soKSBhbmQgYXdha2UoKSBzaG91bGQgYmUgY29ubmVjdGVkIGFmdGVy IGluaXRpYWxpemVQbGF0Zm9ybSgpLgorKyAgICAvLyBPdGhlcndpc2UgdGhlIGNvbm5lY3RlZCBm bHVzaFJlcXVlc3RzKCkgbWF5IGNvbnN1bWVzIHVwIGFsbCBldmVudHMgYmVmb3JlIHByb2Nlc3NF dmVudHMgc3RhcnRzIHRvIHdhaXQsCisrICAgIC8vIHNvIHRoYXQgcHJvY2Vzc0V2ZW50cyhRRXZl bnRMb29wOjpXYWl0Rm9yTW9yZUV2ZW50cykgbWF5IGJlIGJsb2NrZWQgaW4gdGhlIGZvcmNlUm91 bmRUcmlwKCkuCisgICAgIFFBYnN0cmFjdEV2ZW50RGlzcGF0Y2hlciAqZGlzcGF0Y2hlciA9IFFH dWlBcHBsaWNhdGlvblByaXZhdGU6OmV2ZW50RGlzcGF0Y2hlcjsKKyAgICAgUU9iamVjdDo6Y29u bmVjdChkaXNwYXRjaGVyLCBTSUdOQUwoYWJvdXRUb0Jsb2NrKCkpLCBtRGlzcGxheS5kYXRhKCks IFNMT1QoZmx1c2hSZXF1ZXN0cygpKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QoZGlzcGF0Y2hl ciwgU0lHTkFMKGF3YWtlKCkpLCBtRGlzcGxheS5kYXRhKCksIFNMT1QoZmx1c2hSZXF1ZXN0cygp KSk7CisgCistICAgIGludCBmZCA9IHdsX2Rpc3BsYXlfZ2V0X2ZkKG1EaXNwbGF5LT53bF9kaXNw bGF5KCkpOworLSAgICBRU29ja2V0Tm90aWZpZXIgKnNuID0gbmV3IFFTb2NrZXROb3RpZmllcihm ZCwgUVNvY2tldE5vdGlmaWVyOjpSZWFkLCBtRGlzcGxheS5kYXRhKCkpOworLSAgICBRT2JqZWN0 Ojpjb25uZWN0KHNuLCBTSUdOQUwoYWN0aXZhdGVkKFFTb2NrZXREZXNjcmlwdG9yKSksIG1EaXNw bGF5LmRhdGEoKSwgU0xPVChmbHVzaFJlcXVlc3RzKCkpKTsKKy0KKyAgICAgLy8gUXQgZG9lcyBu b3Qgc3VwcG9ydCBydW5uaW5nIHdpdGggbm8gc2NyZWVucworICAgICBtRGlzcGxheS0+ZW5zdXJl U2NyZWVuKCk7CisgfQorQEAgLTI2Miw2ICsyNjksMTQgQEAgUVdheWxhbmREaXNwbGF5ICpRV2F5 bGFuZEludGVncmF0aW9uOjpkaXNwbGF5KCkgY29uc3QKKyAgICAgcmV0dXJuIG1EaXNwbGF5LmRh dGEoKTsKKyB9CisgCisrUXQ6OktleWJvYXJkTW9kaWZpZXJzIFFXYXlsYW5kSW50ZWdyYXRpb246 OnF1ZXJ5S2V5Ym9hcmRNb2RpZmllcnMoKSBjb25zdAorK3sKKysgICAgaWYgKGF1dG8gKnNlYXQg PSBtRGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCkpIHsKKysgICAgICAgIHJldHVybiBzZWF0 LT5tb2RpZmllcnMoKTsKKysgICAgfQorKyAgICByZXR1cm4gUXQ6Ok5vTW9kaWZpZXI7CisrfQor KworIFFMaXN0PGludD4gUVdheWxhbmRJbnRlZ3JhdGlvbjo6cG9zc2libGVLZXlzKGNvbnN0IFFL ZXlFdmVudCAqZXZlbnQpIGNvbnN0CisgeworICAgICBpZiAoYXV0byAqc2VhdCA9IG1EaXNwbGF5 LT5jdXJyZW50SW5wdXREZXZpY2UoKSkKK0BAIC00NzksNyArNDk0LDcgQEAgdm9pZCBRV2F5bGFu ZEludGVncmF0aW9uOjpyZWNvbmZpZ3VyZUlucHV0Q29udGV4dCgpCisgICAgIH0KKyAjZW5kaWYK KyAKKy0gICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJ1c2luZyBpbnB1dCBtZXRob2Q6IiA8 PCBpbnB1dENvbnRleHQoKS0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKTsKKysgICAgcUNEZWJ1 ZyhsY1FwYVdheWxhbmQpIDw8ICJ1c2luZyBpbnB1dCBtZXRob2Q6IiA8PCAoaW5wdXRDb250ZXh0 KCkgPyBpbnB1dENvbnRleHQoKS0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSA6ICI8bm9uZT4i KTsKKyB9CisgCisgUVdheWxhbmRTaGVsbEludGVncmF0aW9uICpRV2F5bGFuZEludGVncmF0aW9u OjpjcmVhdGVTaGVsbEludGVncmF0aW9uKGNvbnN0IFFTdHJpbmcgJmludGVncmF0aW9uTmFtZSkK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uX3Au aCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25fcC5oCitpbmRleCBm ZjcwYWUyNS4uNzNiODA2NTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRp bnRlZ3JhdGlvbl9wLmgKK0BAIC0xMDcsNiArMTA3LDggQEAgcHVibGljOgorIAorICAgICBRV2F5 bGFuZERpc3BsYXkgKmRpc3BsYXkoKSBjb25zdDsKKyAKKysgICAgUXQ6OktleWJvYXJkTW9kaWZp ZXJzIHF1ZXJ5S2V5Ym9hcmRNb2RpZmllcnMoKSBjb25zdCBvdmVycmlkZTsKKysKKyAgICAgUUxp c3Q8aW50PiBwb3NzaWJsZUtleXMoY29uc3QgUUtleUV2ZW50ICpldmVudCkgY29uc3Qgb3ZlcnJp ZGU7CisgCisgICAgIFFTdHJpbmdMaXN0IHRoZW1lTmFtZXMoKSBjb25zdCBvdmVycmlkZTsKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlzZWxlY3Rpb252 MS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlzZWxlY3Rpb252MS5j cHAKK2luZGV4IDgzMmY5Njc4Li5lYTUwODc3MSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwCitAQCAtNTQsMTEgKzU0LDYg QEAgUVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxOjpRV2F5bGFuZFByaW1h cnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjEKKyAgICAgOiB6d3BfcHJpbWFyeV9zZWxlY3Rpb25f ZGV2aWNlX21hbmFnZXJfdjEoZGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIHFNaW4odmVyc2lv biwgdWludCgxKSkpCisgICAgICwgbV9kaXNwbGF5KGRpc3BsYXkpCisgeworLSAgICAvLyBDcmVh dGUgZGV2aWNlcyBmb3IgYWxsIHNlYXRzLgorLSAgICAvLyBUaGlzIG9ubHkgd29ya3MgaWYgd2Ug Z2V0IHRoZSBnbG9iYWwgYmVmb3JlIGFsbCBkZXZpY2VzCistICAgIGNvbnN0IGF1dG8gc2VhdHMg PSBtX2Rpc3BsYXktPmlucHV0RGV2aWNlcygpOworLSAgICBmb3IgKGF1dG8gKnNlYXQgOiBzZWF0 cykKKy0gICAgICAgIHNlYXQtPnNldFByaW1hcnlTZWxlY3Rpb25EZXZpY2UoY3JlYXRlRGV2aWNl KHNlYXQpKTsKKyB9CisgCisgUVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlVjEgKlFXYXls YW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFnZXJWMTo6Y3JlYXRlRGV2aWNlKFFXYXlsYW5k SW5wdXREZXZpY2UgKnNlYXQpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRzY3JlZW4uY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW4uY3Bw CitpbmRleCA2Y2IzMzdkZS4uNTUzN2RhZmQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZHNjcmVlbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kc2NyZWVuLmNwcAorQEAgLTYwLDcgKzYwLDcgQEAgUVdheWxhbmRYZGdPdXRwdXRNYW5hZ2Vy VjE6OlFXYXlsYW5kWGRnT3V0cHV0TWFuYWdlclYxKFFXYXlsYW5kRGlzcGxheSogZGlzcGxheSwK KyB9CisgCisgUVdheWxhbmRTY3JlZW46OlFXYXlsYW5kU2NyZWVuKFFXYXlsYW5kRGlzcGxheSAq d2F5bGFuZERpc3BsYXksIGludCB2ZXJzaW9uLCB1aW50MzJfdCBpZCkKKy0gICAgOiBRdFdheWxh bmQ6OndsX291dHB1dCh3YXlsYW5kRGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIHFNaW4odmVy c2lvbiwgMikpCisrICAgIDogUXRXYXlsYW5kOjp3bF9vdXRwdXQod2F5bGFuZERpc3BsYXktPnds X3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIDMpKQorICAgICAsIG1fb3V0cHV0SWQoaWQp CisgICAgICwgbVdheWxhbmREaXNwbGF5KHdheWxhbmREaXNwbGF5KQorICAgICAsIG1PdXRwdXRO YW1lKFFTdHJpbmdMaXRlcmFsKCJTY3JlZW4lMSIpLmFyZyhpZCkpCitAQCAtNzIsNyArNzIsNyBA QCBRV2F5bGFuZFNjcmVlbjo6UVdheWxhbmRTY3JlZW4oUVdheWxhbmREaXNwbGF5ICp3YXlsYW5k RGlzcGxheSwgaW50IHZlcnNpb24sIHVpbgorICAgICAgICAgcUNXYXJuaW5nKGxjUXBhV2F5bGFu ZCkgPDwgIndsX291dHB1dCBkb25lIGV2ZW50IG5vdCBzdXBwb3J0ZWQgYnkgY29tcG9zaXRvciwi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiUVNjcmVlbiBtYXkgbm90IHdv cmsgY29ycmVjdGx5IjsKKyAgICAgICAgIG1XYXlsYW5kRGlzcGxheS0+Zm9yY2VSb3VuZFRyaXAo KTsgLy8gR2l2ZSB0aGUgY29tcG9zaXRvciBhIGNoYW5jZSB0byBzZW5kIGdlb21ldHJ5IGV0Yy4K Ky0gICAgICAgIG1PdXRwdXREb25lID0gdHJ1ZTsgLy8gRmFrZSB0aGUgZG9uZSBldmVudAorKyAg ICAgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBPdXRwdXREb25lRXZlbnQ7IC8vIEZha2UgdGhlIGRv bmUgZXZlbnQKKyAgICAgICAgIG1heWJlSW5pdGlhbGl6ZSgpOworICAgICB9CisgfQorQEAgLTgx LDE2ICs4MSwyOSBAQCBRV2F5bGFuZFNjcmVlbjo6flFXYXlsYW5kU2NyZWVuKCkKKyB7CisgICAg IGlmICh6eGRnX291dHB1dF92MTo6aXNJbml0aWFsaXplZCgpKQorICAgICAgICAgenhkZ19vdXRw dXRfdjE6OmRlc3Ryb3koKTsKKysgICAgaWYgKHdsX291dHB1dDo6aXNJbml0aWFsaXplZCgpICYm IHdsX291dHB1dF9nZXRfdmVyc2lvbih3bF9vdXRwdXQ6Om9iamVjdCgpKSA+PSBXTF9PVVRQVVRf UkVMRUFTRV9TSU5DRV9WRVJTSU9OKQorKyAgICAgICAgd2xfb3V0cHV0OjpyZWxlYXNlKCk7Cisr fQorKworK3VpbnQgUVdheWxhbmRTY3JlZW46OnJlcXVpcmVkRXZlbnRzKCkgY29uc3QKKyt7Cisr ICAgIHVpbnQgcmV0ID0gT3V0cHV0RG9uZUV2ZW50OworKworKyAgICBpZiAobVdheWxhbmREaXNw bGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCkpIHsKKysgICAgICAgIHJldCB8PSBYZGdPdXRwdXROYW1l RXZlbnQ7CisrCisrICAgICAgICBpZiAobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2Vy KCktPnZlcnNpb24oKSA8IDMpCisrICAgICAgICAgICAgcmV0IHw9IFhkZ091dHB1dERvbmVFdmVu dDsKKysgICAgfQorKyAgICByZXR1cm4gcmV0OworIH0KKyAKKyB2b2lkIFFXYXlsYW5kU2NyZWVu OjptYXliZUluaXRpYWxpemUoKQorIHsKKyAgICAgUV9BU1NFUlQoIW1Jbml0aWFsaXplZCk7Cisg CistICAgIGlmICghbU91dHB1dERvbmUpCistICAgICAgICByZXR1cm47CistCistICAgIGlmICht V2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKSAmJiAhbVhkZ091dHB1dERvbmUpCisr ICAgIGNvbnN0IHVpbnQgcmVxdWlyZWRFdmVudHMgPSB0aGlzLT5yZXF1aXJlZEV2ZW50cygpOwor KyAgICBpZiAoKG1Qcm9jZXNzZWRFdmVudHMgJiByZXF1aXJlZEV2ZW50cykgIT0gcmVxdWlyZWRF dmVudHMpCisgICAgICAgICByZXR1cm47CisgCisgICAgIG1Jbml0aWFsaXplZCA9IHRydWU7CitA QCAtMjc2LDkgKzI4OSw4IEBAIHZvaWQgUVdheWxhbmRTY3JlZW46Om91dHB1dF9zY2FsZShpbnQz Ml90IGZhY3RvcikKKyAKKyB2b2lkIFFXYXlsYW5kU2NyZWVuOjpvdXRwdXRfZG9uZSgpCisgewor LSAgICBtT3V0cHV0RG9uZSA9IHRydWU7CistICAgIGlmICh6eGRnX291dHB1dF92MTo6aXNJbml0 aWFsaXplZCgpICYmIG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpLT52ZXJzaW9u KCkgPj0gMykKKy0gICAgICAgIG1YZGdPdXRwdXREb25lID0gdHJ1ZTsKKysgICAgbVByb2Nlc3Nl ZEV2ZW50cyB8PSBPdXRwdXREb25lRXZlbnQ7CisrCisgICAgIGlmIChtSW5pdGlhbGl6ZWQpIHsK KyAgICAgICAgIHVwZGF0ZU91dHB1dFByb3BlcnRpZXMoKTsKKyAgICAgICAgIGlmICh6eGRnX291 dHB1dF92MTo6aXNJbml0aWFsaXplZCgpKQorQEAgLTMzOSw3ICszNTEsNyBAQCB2b2lkIFFXYXls YW5kU2NyZWVuOjp6eGRnX291dHB1dF92MV9kb25lKCkKKyAgICAgaWYgKFFfVU5MSUtFTFkobVdh eWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCktPnZlcnNpb24oKSA+PSAzKSkKKyAgICAg ICAgIHFXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgInp4ZGdfb3V0cHV0X3YxLmRvbmUgcmVjZWl2 ZWQgb24gdmVyc2lvbiAzIG9yIG5ld2VyLCB0aGlzIGlzIG1vc3QgbGlrZWx5IGEgYnVnIGluIHRo ZSBjb21wb3NpdG9yIjsKKyAKKy0gICAgbVhkZ091dHB1dERvbmUgPSB0cnVlOworKyAgICBtUHJv Y2Vzc2VkRXZlbnRzIHw9IFhkZ091dHB1dERvbmVFdmVudDsKKyAgICAgaWYgKG1Jbml0aWFsaXpl ZCkKKyAgICAgICAgIHVwZGF0ZVhkZ091dHB1dFByb3BlcnRpZXMoKTsKKyAgICAgZWxzZQorQEAg LTM0OCw3ICszNjAsMTEgQEAgdm9pZCBRV2F5bGFuZFNjcmVlbjo6enhkZ19vdXRwdXRfdjFfZG9u ZSgpCisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6enhkZ19vdXRwdXRfdjFfbmFtZShjb25zdCBR U3RyaW5nICZuYW1lKQorIHsKKysgICAgaWYgKFFfVU5MSUtFTFkobUluaXRpYWxpemVkKSkKKysg ICAgICAgIHFXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgInp4ZGdfb3V0cHV0X3YxLm5hbWUgcmVj ZWl2ZWQgYWZ0ZXIgb3V0cHV0IGhhcyBiZWVuIGluaXRpYWxpemVkLCB0aGlzIGlzIG1vc3QgbGlr ZWx5IGEgYnVnIGluIHRoZSBjb21wb3NpdG9yIjsKKysKKyAgICAgbU91dHB1dE5hbWUgPSBuYW1l OworKyAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9IFhkZ091dHB1dE5hbWVFdmVudDsKKyB9CisgCisg dm9pZCBRV2F5bGFuZFNjcmVlbjo6dXBkYXRlWGRnT3V0cHV0UHJvcGVydGllcygpCitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oIGIvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oCitpbmRleCBkZjFjOTRmMi4uMDUwY2ZkYzAg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbl9wLmgKKysr KyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuX3AuaAorQEAgLTExNiw2ICsx MTYsMTMgQEAgcHVibGljOgorICAgICBzdGF0aWMgUVdheWxhbmRTY3JlZW4gKmZyb21XbE91dHB1 dCg6OndsX291dHB1dCAqb3V0cHV0KTsKKyAKKyBwcml2YXRlOgorKyAgICBlbnVtIEV2ZW50IDog dWludCB7CisrICAgICAgICBYZGdPdXRwdXREb25lRXZlbnQgPSAweDEsCisrICAgICAgICBPdXRw dXREb25lRXZlbnQgPSAweDIsCisrICAgICAgICBYZGdPdXRwdXROYW1lRXZlbnQgPSAweDQsCisr ICAgIH07CisrICAgIHVpbnQgcmVxdWlyZWRFdmVudHMoKSBjb25zdDsKKysKKyAgICAgdm9pZCBv dXRwdXRfbW9kZSh1aW50MzJfdCBmbGFncywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgcmVm cmVzaCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgb3V0cHV0X2dlb21ldHJ5KGludDMyX3QgeCwgaW50 MzJfdCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHdpZHRoLCBpbnQzMl90 IGhlaWdodCwKK0BAIC0xNDgsOCArMTU1LDcgQEAgcHJpdmF0ZToKKyAgICAgUVNpemUgbVBoeXNp Y2FsU2l6ZTsKKyAgICAgUVN0cmluZyBtT3V0cHV0TmFtZTsKKyAgICAgUXQ6OlNjcmVlbk9yaWVu dGF0aW9uIG1fb3JpZW50YXRpb24gPSBRdDo6UHJpbWFyeU9yaWVudGF0aW9uOworLSAgICBib29s IG1PdXRwdXREb25lID0gZmFsc2U7CistICAgIGJvb2wgbVhkZ091dHB1dERvbmUgPSBmYWxzZTsK KysgICAgdWludCBtUHJvY2Vzc2VkRXZlbnRzID0gMDsKKyAgICAgYm9vbCBtSW5pdGlhbGl6ZWQg PSBmYWxzZTsKKyAKKyAjaWYgUVRfQ09ORklHKGN1cnNvcikKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAgYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAKK2luZGV4IGRjN2ZmNjcwLi40MWNm ZmRmNyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2htYmFja2lu Z3N0b3JlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5n c3RvcmUuY3BwCitAQCAtNTIsNiArNTIsNyBAQAorIAorICNpbmNsdWRlIDxRdFdheWxhbmRDbGll bnQvcHJpdmF0ZS93YXlsYW5kLXdheWxhbmQtY2xpZW50LXByb3RvY29sLmg+CisgCisrI2luY2x1 ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzeXMvbW1hbi5o PgorIAorQEAgLTYxLDYgKzYyLDkgQEAKKyAjICBpZm5kZWYgTUZEX0NMT0VYRUMKKyAjICAgIGRl ZmluZSBNRkRfQ0xPRVhFQyAgICAgMHgwMDAxVQorICMgIGVuZGlmCisrIyAgaWZuZGVmIE1GRF9B TExPV19TRUFMSU5HCisrIyAgICBkZWZpbmUgTUZEX0FMTE9XX1NFQUxJTkcgMHgwMDAyVQorKyMg IGVuZGlmCisgI2VuZGlmCisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCitAQCAtNzQsOCArNzgsMTAg QEAgUVdheWxhbmRTaG1CdWZmZXI6OlFXYXlsYW5kU2htQnVmZmVyKFFXYXlsYW5kRGlzcGxheSAq ZGlzcGxheSwKKyAgICAgaW50IGFsbG9jID0gc3RyaWRlICogc2l6ZS5oZWlnaHQoKTsKKyAgICAg aW50IGZkID0gLTE7CisgCistI2lmZGVmIFNZU19tZW1mZF9jcmVhdGUKKy0gICAgZmQgPSBzeXNj YWxsKFNZU19tZW1mZF9jcmVhdGUsICJ3YXlsYW5kLXNobSIsIE1GRF9DTE9FWEVDKTsKKysjaWYg ZGVmaW5lZChTWVNfbWVtZmRfY3JlYXRlKSAmJiBkZWZpbmVkKEZfU0VBTF9TRUFMKQorKyAgICBm ZCA9IHN5c2NhbGwoU1lTX21lbWZkX2NyZWF0ZSwgIndheWxhbmQtc2htIiwgTUZEX0NMT0VYRUMg fCBNRkRfQUxMT1dfU0VBTElORyk7CisrICAgIGlmIChmZCA+PSAwKQorKyAgICAgICAgZmNudGwo ZmQsIEZfQUREX1NFQUxTLCBGX1NFQUxfU0hSSU5LIHwgRl9TRUFMX1NFQUwpOworICNlbmRpZgor IAorICAgICBRU2NvcGVkUG9pbnRlcjxRRmlsZT4gZmlsZVBvaW50ZXI7CitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3BwIGIvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmR3aW5kb3cuY3BwCitpbmRleCBjYjgyODU3YS4uZmIyYzU5ZGMgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvdy5jcHAKKysrKyBiL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcAorQEAgLTc2LDcgKzc2LDYgQEAg UVdheWxhbmRXaW5kb3cgKlFXYXlsYW5kV2luZG93OjptTW91c2VHcmFiID0gbnVsbHB0cjsKKyBR V2F5bGFuZFdpbmRvdzo6UVdheWxhbmRXaW5kb3coUVdpbmRvdyAqd2luZG93LCBRV2F5bGFuZERp c3BsYXkgKmRpc3BsYXkpCisgICAgIDogUVBsYXRmb3JtV2luZG93KHdpbmRvdykKKyAgICAgLCBt RGlzcGxheShkaXNwbGF5KQorLSAgICAsIG1GcmFtZVF1ZXVlKG1EaXNwbGF5LT5jcmVhdGVGcmFt ZVF1ZXVlKCkpCisgICAgICwgbVJlc2l6ZUFmdGVyU3dhcChxRW52aXJvbm1lbnRWYXJpYWJsZUlz U2V0KCJRVF9XQVlMQU5EX1JFU0laRV9BRlRFUl9TV0FQIikpCisgeworICAgICB7CitAQCAtOTUs OSArOTQsNiBAQCBRV2F5bGFuZFdpbmRvdzo6UVdheWxhbmRXaW5kb3coUVdpbmRvdyAqd2luZG93 LCBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpCisgCisgUVdheWxhbmRXaW5kb3c6On5RV2F5bGFu ZFdpbmRvdygpCisgeworLSAgICBtRGlzcGxheS0+ZGVzdHJveUZyYW1lUXVldWUobUZyYW1lUXVl dWUpOworLSAgICBtRGlzcGxheS0+aGFuZGxlV2luZG93RGVzdHJveWVkKHRoaXMpOworLQorICAg ICBkZWxldGUgbVdpbmRvd0RlY29yYXRpb247CisgCisgICAgIGlmIChtU3VyZmFjZSkKK0BAIC0y NDMsNiArMjM5LDcgQEAgYm9vbCBRV2F5bGFuZFdpbmRvdzo6c2hvdWxkQ3JlYXRlU3ViU3VyZmFj ZSgpIGNvbnN0CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVzZXQoKQorIHsKKysgICAgY2xv c2VDaGlsZFBvcHVwcygpOworICAgICBkZWxldGUgbVNoZWxsU3VyZmFjZTsKKyAgICAgbVNoZWxs U3VyZmFjZSA9IG51bGxwdHI7CisgICAgIGRlbGV0ZSBtU3ViU3VyZmFjZVdpbmRvdzsKK0BAIC0y NTUsMTcgKzI1MiwyMiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXNldCgpCisgICAgICAgICBt U3VyZmFjZS5yZXNldCgpOworICAgICB9CisgCistICAgIGlmIChtRnJhbWVDYWxsYmFjaykgewor LSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShtRnJhbWVDYWxsYmFjayk7CistICAgICAgICBt RnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CistICAgIH0KKysgICAgeworKyAgICAgICAgUU11dGV4 TG9ja2VyIGxvY2soJm1GcmFtZVN5bmNNdXRleCk7CisrICAgICAgICBpZiAobUZyYW1lQ2FsbGJh Y2spIHsKKysgICAgICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KG1GcmFtZUNhbGxiYWNrKTsK KysgICAgICAgICAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CisrICAgICAgICB9CisgCist ICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKy0gICAgbVdhaXRp bmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisrICAgICAgICBtRnJhbWVDYWxsYmFja0VsYXBz ZWRUaW1lci5pbnZhbGlkYXRlKCk7CisrICAgICAgICBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sg PSBmYWxzZTsKKysgICAgfQorICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7Cisg CisgICAgIG1NYXNrID0gUVJlZ2lvbigpOworICAgICBtUXVldWVkQnVmZmVyID0gbnVsbHB0cjsK KysKKysgICAgbURpc3BsYXktPmhhbmRsZVdpbmRvd0Rlc3Ryb3llZCh0aGlzKTsKKyB9CisgCisg UVdheWxhbmRXaW5kb3cgKlFXYXlsYW5kV2luZG93Ojpmcm9tV2xTdXJmYWNlKDo6d2xfc3VyZmFj ZSAqc3VyZmFjZSkKK0BAIC0zNTEsMTkgKzM1MywyNSBAQCB2b2lkIFFXYXlsYW5kV2luZG93Ojpz ZXRHZW9tZXRyeV9oZWxwZXIoY29uc3QgUVJlY3QgJnJlY3QpCisgICAgIH0KKyB9CisgCistdm9p ZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnJlY3QpCisrdm9pZCBR V2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnIpCisgeworKyAgICBhdXRv IHJlY3QgPSByOworKyAgICBpZiAoZml4ZWRUb3BsZXZlbFBvc2l0aW9ucyAmJiAhUVBsYXRmb3Jt V2luZG93OjpwYXJlbnQoKSAmJiB3aW5kb3coKS0+dHlwZSgpICE9IFF0OjpQb3B1cAorKyAgICAg ICAgJiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6VG9vbFRpcCkgeworKyAgICAgICAgcmVjdC5t b3ZlVG8oc2NyZWVuKCktPmdlb21ldHJ5KCkudG9wTGVmdCgpKTsKKysgICAgfQorICAgICBzZXRH ZW9tZXRyeV9oZWxwZXIocmVjdCk7CisgCisgICAgIGlmICh3aW5kb3coKS0+aXNWaXNpYmxlKCkg JiYgcmVjdC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgIGlmIChtV2luZG93RGVjb3JhdGlvbikKKyAg ICAgICAgICAgICBtV2luZG93RGVjb3JhdGlvbi0+dXBkYXRlKCk7CisgCistICAgICAgICBpZiAo bVJlc2l6ZUFmdGVyU3dhcCAmJiB3aW5kb3dUeXBlKCkgPT0gRWdsICYmIG1TZW50SW5pdGlhbFJl c2l6ZSkKKysgICAgICAgIGlmIChtUmVzaXplQWZ0ZXJTd2FwICYmIHdpbmRvd1R5cGUoKSA9PSBF Z2wgJiYgbVNlbnRJbml0aWFsUmVzaXplKSB7CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxv Y2soJm1SZXNpemVMb2NrKTsKKyAgICAgICAgICAgICBtUmVzaXplRGlydHkgPSB0cnVlOworLSAg ICAgICAgZWxzZQorKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBRV2luZG93U3lzdGVt SW50ZXJmYWNlOjpoYW5kbGVHZW9tZXRyeUNoYW5nZSh3aW5kb3coKSwgZ2VvbWV0cnkoKSk7Cist CisrICAgICAgICB9CisgICAgICAgICBtU2VudEluaXRpYWxSZXNpemUgPSB0cnVlOworICAgICB9 CisgICAgIFFSZWN0IGV4cG9zZUdlb21ldHJ5KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNpemUoKSk7 CitAQCAtMzc0LDcgKzM4Miw3IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5KGNv bnN0IFFSZWN0ICZyZWN0KQorICAgICAgICAgbVNoZWxsU3VyZmFjZS0+c2V0V2luZG93R2VvbWV0 cnkod2luZG93Q29udGVudEdlb21ldHJ5KCkpOworIAorICAgICBpZiAoaXNPcGFxdWUoKSAmJiBt TWFzay5pc0VtcHR5KCkpCistICAgICAgICBzZXRPcGFxdWVBcmVhKHJlY3QpOworKyAgICAgICAg c2V0T3BhcXVlQXJlYShRUmVjdChRUG9pbnQoMCwgMCksIHJlY3Quc2l6ZSgpKSk7CisgfQorIAor IHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlc2l6ZUZyb21BcHBseUNvbmZpZ3VyZShjb25zdCBRU2l6 ZSAmc2l6ZVdpdGhNYXJnaW5zLCBjb25zdCBRUG9pbnQgJm9mZnNldCkKK0BAIC0zOTksMjEgKzQw Nyw2IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNlbmRFeHBvc2VFdmVudChjb25zdCBRUmVjdCAm cmVjdCkKKyAgICAgbUxhc3RFeHBvc2VHZW9tZXRyeSA9IHJlY3Q7CisgfQorIAorLQorLXN0YXRp YyBRVmVjdG9yPFFQb2ludGVyPFFXYXlsYW5kV2luZG93Pj4gYWN0aXZlUG9wdXBzOworLQorLXZv aWQgUVdheWxhbmRXaW5kb3c6OmNsb3NlUG9wdXBzKFFXYXlsYW5kV2luZG93ICpwYXJlbnQpCist eworLSAgICB3aGlsZSAoIWFjdGl2ZVBvcHVwcy5pc0VtcHR5KCkpIHsKKy0gICAgICAgIGF1dG8g cG9wdXAgPSBhY3RpdmVQb3B1cHMudGFrZUxhc3QoKTsKKy0gICAgICAgIGlmIChwb3B1cC5pc051 bGwoKSkKKy0gICAgICAgICAgICBjb250aW51ZTsKKy0gICAgICAgIGlmIChwb3B1cC5kYXRhKCkg PT0gcGFyZW50KQorLSAgICAgICAgICAgIHJldHVybjsKKy0gICAgICAgIHBvcHVwLT5yZXNldCgp OworLSAgICB9CistfQorLQorIFFQbGF0Zm9ybVNjcmVlbiAqUVdheWxhbmRXaW5kb3c6OmNhbGN1 bGF0ZVNjcmVlbkZyb21TdXJmYWNlRXZlbnRzKCkgY29uc3QKKyB7CisgICAgIFFSZWFkTG9ja2Vy IGxvY2soJm1TdXJmYWNlTG9jayk7CitAQCAtNDMzLDEwICs0MjYsNyBAQCB2b2lkIFFXYXlsYW5k V2luZG93OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKKyAgICAgbGFzdFZpc2libGUgPSB2aXNp YmxlOworIAorICAgICBpZiAodmlzaWJsZSkgeworLSAgICAgICAgaWYgKHdpbmRvdygpLT50eXBl KCkgPT0gUXQ6OlBvcHVwIHx8IHdpbmRvdygpLT50eXBlKCkgPT0gUXQ6OlRvb2xUaXApCistICAg ICAgICAgICAgYWN0aXZlUG9wdXBzIDw8IHRoaXM7CisgICAgICAgICBpbml0V2luZG93KCk7Cist ICAgICAgICBtRGlzcGxheS0+Zmx1c2hSZXF1ZXN0cygpOworIAorICAgICAgICAgc2V0R2VvbWV0 cnkod2luZG93R2VvbWV0cnkoKSk7CisgICAgICAgICAvLyBEb24ndCBmbHVzaCB0aGUgZXZlbnRz IGhlcmUsIG9yIGVsc2UgdGhlIG5ld2x5IHZpc2libGUgd2luZG93IG1heSBzdGFydCBkcmF3aW5n LCBidXQgc2luY2UKK0BAIC00NDQsNyArNDM0LDYgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0 VmlzaWJsZShib29sIHZpc2libGUpCisgICAgICAgICAvLyBRV2F5bGFuZFNobUJhY2tpbmdTdG9y ZTo6YmVnaW5QYWludCgpLgorICAgICB9IGVsc2UgeworICAgICAgICAgc2VuZEV4cG9zZUV2ZW50 KFFSZWN0KCkpOworLSAgICAgICAgY2xvc2VQb3B1cHModGhpcyk7CisgICAgICAgICByZXNldCgp OworICAgICB9CisgfQorQEAgLTU1NiwxMiArNTQ1LDEyIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6 OnNlbmRSZWN1cnNpdmVFeHBvc2VFdmVudCgpCisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6YXR0 YWNoKFFXYXlsYW5kQnVmZmVyICpidWZmZXIsIGludCB4LCBpbnQgeSkKKyB7CistICAgIFFfQVNT RVJUKCFidWZmZXItPmNvbW1pdHRlZCgpKTsKKyAgICAgUVJlYWRMb2NrZXIgbG9ja2VyKCZtU3Vy ZmFjZUxvY2spOworICAgICBpZiAobVN1cmZhY2UgPT0gbnVsbHB0cikKKyAgICAgICAgIHJldHVy bjsKKyAKKyAgICAgaWYgKGJ1ZmZlcikgeworKyAgICAgICAgUV9BU1NFUlQoIWJ1ZmZlci0+Y29t bWl0dGVkKCkpOworICAgICAgICAgaGFuZGxlVXBkYXRlKCk7CisgICAgICAgICBidWZmZXItPnNl dEJ1c3koKTsKKyAKK0BAIC01ODMsNyArNTcyLDExIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmRh bWFnZShjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgaWYgKG1TdXJmYWNlID09IG51bGxwdHIpCisg ICAgICAgICByZXR1cm47CisgCistICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3Qu eSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworKyAgICBjb25zdCBpbnQgcyA9IHNj YWxlKCk7CisrICAgIGlmIChtRGlzcGxheS0+Y29tcG9zaXRvclZlcnNpb24oKSA+PSA0KQorKyAg ICAgICAgbVN1cmZhY2UtPmRhbWFnZV9idWZmZXIocyAqIHJlY3QueCgpLCBzICogcmVjdC55KCks IHMgKiByZWN0LndpZHRoKCksIHMgKiByZWN0LmhlaWdodCgpKTsKKysgICAgZWxzZQorKyAgICAg ICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVj dC5oZWlnaHQoKSk7CisgfQorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNhZmVDb21taXQoUVdh eWxhbmRCdWZmZXIgKmJ1ZmZlciwgY29uc3QgUVJlZ2lvbiAmZGFtYWdlKQorQEAgLTYxOSw4ICs2 MTIsMTQgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6Y29tbWl0KFFXYXlsYW5kQnVmZmVyICpidWZm ZXIsIGNvbnN0IFFSZWdpb24gJmRhbWFnZSkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgYXR0 YWNoT2Zmc2V0KGJ1ZmZlcik7CistICAgIGZvciAoY29uc3QgUVJlY3QgJnJlY3Q6IGRhbWFnZSkK Ky0gICAgICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRo KCksIHJlY3QuaGVpZ2h0KCkpOworKyAgICBpZiAobURpc3BsYXktPmNvbXBvc2l0b3JWZXJzaW9u KCkgPj0gNCkgeworKyAgICAgICAgY29uc3QgaW50IHMgPSBzY2FsZSgpOworKyAgICAgICAgZm9y IChjb25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQorKyAgICAgICAgICAgIG1TdXJmYWNlLT5kYW1h Z2VfYnVmZmVyKHMgKiByZWN0LngoKSwgcyAqIHJlY3QueSgpLCBzICogcmVjdC53aWR0aCgpLCBz ICogcmVjdC5oZWlnaHQoKSk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBmb3IgKGNvbnN0IFFS ZWN0ICZyZWN0OiBkYW1hZ2UpCisrICAgICAgICAgICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0Lngo KSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisrICAgIH0KKyAgICAg UV9BU1NFUlQoIWJ1ZmZlci0+Y29tbWl0dGVkKCkpOworICAgICBidWZmZXItPnNldENvbW1pdHRl ZCgpOworICAgICBtU3VyZmFjZS0+Y29tbWl0KCk7CitAQCAtNjM1LDQyICs2MzQsNTMgQEAgdm9p ZCBRV2F5bGFuZFdpbmRvdzo6Y29tbWl0KCkKKyAKKyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5l ciBRV2F5bGFuZFdpbmRvdzo6Y2FsbGJhY2tMaXN0ZW5lciA9IHsKKyAgICAgW10odm9pZCAqZGF0 YSwgd2xfY2FsbGJhY2sgKmNhbGxiYWNrLCB1aW50MzJfdCB0aW1lKSB7CistICAgICAgICBRX1VO VVNFRChjYWxsYmFjayk7CisgICAgICAgICBRX1VOVVNFRCh0aW1lKTsKKyAgICAgICAgIGF1dG8g KndpbmRvdyA9IHN0YXRpY19jYXN0PFFXYXlsYW5kV2luZG93Kj4oZGF0YSk7CistICAgICAgICB3 aW5kb3ctPmhhbmRsZUZyYW1lQ2FsbGJhY2soKTsKKysgICAgICAgIHdpbmRvdy0+aGFuZGxlRnJh bWVDYWxsYmFjayhjYWxsYmFjayk7CisgICAgIH0KKyB9OworIAorLXZvaWQgUVdheWxhbmRXaW5k b3c6OmhhbmRsZUZyYW1lQ2FsbGJhY2soKQorK3ZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZUZy YW1lQ2FsbGJhY2sod2xfY2FsbGJhY2sqIGNhbGxiYWNrKQorIHsKKysgICAgUU11dGV4TG9ja2Vy IGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysgICAgaWYgKCFtRnJhbWVDYWxsYmFjaykgewor KyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY2FsbGJhY2sgaXMgYWxyZWFkeSB1bnNldCBieSBR V2F5bGFuZFdpbmRvdzo6cmVzZXQuCisrICAgICAgICAvLyBUaGUgd2xfY2FsbGJhY2sgb2JqZWN0 IHdpbGwgYmUgZGVzdHJveWVkIHRoZXJlIHRvby4KKysgICAgICAgIHJldHVybjsKKysgICAgfQor KyAgICBRX0FTU0VSVChjYWxsYmFjayA9PSBtRnJhbWVDYWxsYmFjayk7CisrICAgIHdsX2NhbGxi YWNrX2Rlc3Ryb3koY2FsbGJhY2spOworKyAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7Cisr CisgICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOworICAgICBtRnJhbWVDYWxs YmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisgCisgICAgIC8vIFRoZSByZXN0IGNhbiB3 YWl0IHVudGlsIHdlIGNhbiBydW4gaXQgb24gdGhlIGNvcnJlY3QgdGhyZWFkCistICAgIGlmICgh bVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSkgeworLSAgICAgICAgYXV0byBkb0hhbmRsZUV4cG9z ZSA9IFt0aGlzXSgpIHsKKy0gICAgICAgICAgICBib29sIHdhc0V4cG9zZWQgPSBpc0V4cG9zZWQo KTsKKy0gICAgICAgICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7CistICAgICAg ICAgICAgaWYgKCF3YXNFeHBvc2VkICYmIGlzRXhwb3NlZCgpKSAvLyBEaWQgc2V0dGluZyBtRnJh bWVDYWxsYmFja1RpbWVkT3V0IG1ha2UgdGhlIHdpbmRvdyBleHBvc2VkPworLSAgICAgICAgICAg ICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKSk7 CistICAgICAgICAgICAgaWYgKHdhc0V4cG9zZWQgJiYgaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3Qo KSkKKy0gICAgICAgICAgICAgICAgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKTsKKy0KKy0gICAgICAg ICAgICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFsc2U7CistICAgICAgICB9OworKyAg ICBhdXRvIGRvSGFuZGxlRXhwb3NlID0gW3RoaXNdKCkgeworKyAgICAgICAgbVdhaXRpbmdGb3JV cGRhdGVEZWxpdmVyeS5zdG9yZVJlbGVhc2UoZmFsc2UpOworKyAgICAgICAgYm9vbCB3YXNFeHBv c2VkID0gaXNFeHBvc2VkKCk7CisrICAgICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gZmFs c2U7CisrICAgICAgICBpZiAoIXdhc0V4cG9zZWQgJiYgaXNFeHBvc2VkKCkpIC8vIERpZCBzZXR0 aW5nIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgbWFrZSB0aGUgd2luZG93IGV4cG9zZWQ/CisrICAg ICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNpemUo KSkpOworKyAgICAgICAgaWYgKHdhc0V4cG9zZWQgJiYgaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3Qo KSkKKysgICAgICAgICAgICBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpOworKyAgICB9OworIAorKyAg ICBpZiAobVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeS50ZXN0QW5kU2V0QWNxdWlyZShmYWxzZSwg dHJ1ZSkpIHsKKyAgICAgICAgIC8vIFF1ZXVlZCBjb25uZWN0aW9uLCB0byBtYWtlIHN1cmUgd2Ug ZG9uJ3QgY2FsbCBoYW5kbGVVcGRhdGUoKSBmcm9tIGluc2lkZSB3YWl0Rm9yRnJhbWVTeW5jKCkK KyAgICAgICAgIC8vIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4KKy0gICAgICAgIG1XYWl0 aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSB0cnVlOworICAgICAgICAgUU1ldGFPYmplY3Q6Omludm9r ZU1ldGhvZCh0aGlzLCBkb0hhbmRsZUV4cG9zZSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAg ICB9CisrCisrICAgIG1GcmFtZVN5bmNXYWl0Lm5vdGlmeV9hbGwoKTsKKyB9CisgCisgYm9vbCBR V2F5bGFuZFdpbmRvdzo6d2FpdEZvckZyYW1lU3luYyhpbnQgdGltZW91dCkKKyB7CistICAgIFFN dXRleExvY2tlciBsb2NrZXIobUZyYW1lUXVldWUubXV0ZXgpOworLSAgICBtRGlzcGxheS0+ZGlz cGF0Y2hRdWV1ZVdoaWxlKG1GcmFtZVF1ZXVlLnF1ZXVlLCBbJl0oKSB7IHJldHVybiBtV2FpdGlu Z0ZvckZyYW1lQ2FsbGJhY2s7IH0sIHRpbWVvdXQpOworKyAgICBRTXV0ZXhMb2NrZXIgbG9ja2Vy KCZtRnJhbWVTeW5jTXV0ZXgpOworKworKyAgICBRRGVhZGxpbmVUaW1lciBkZWFkbGluZSh0aW1l b3V0KTsKKysgICAgd2hpbGUgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayAmJiBtRnJhbWVTeW5j V2FpdC53YWl0KCZtRnJhbWVTeW5jTXV0ZXgsIGRlYWRsaW5lKSkgeyB9CisgCisgICAgIGlmICht V2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spIHsKKyAgICAgICAgIHFDRGVidWcobGNXYXlsYW5kQmFj a2luZ3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUgZnJhbWUgY2FsbGJhY2sgaW4gdGltZSwgd2lu ZG93IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsKK0BAIC04NjgsNiArODc4LDE3IEBAIGJvb2wg UVdheWxhbmRXaW5kb3c6OmNyZWF0ZURlY29yYXRpb24oKQorICAgICAgICAgICAgIHN1YnN1cmYt PnNldF9wb3NpdGlvbihwb3MueCgpICsgbS5sZWZ0KCksIHBvcy55KCkgKyBtLnRvcCgpKTsKKyAg ICAgICAgIH0KKyAgICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdChRUG9pbnQoKSwgZ2VvbWV0 cnkoKS5zaXplKCkpKTsKKysKKysgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ugd2hl cmUgdGhlIGJ1ZmZlciBpcyByZWNyZWF0ZWQsIGJ1dCBzaW5jZQorKyAgICAgICAgLy8gdGhlIGNv bnRlbnQgcmVjdCByZW1haW5zIHRoZSBzYW1lLCB0aGUgd2lkZ2V0cyByZW1haW4gdGhlIHNhbWUK KysgICAgICAgIC8vIHNpemUgYW5kIGFyZSBub3QgcmVkcmF3biwgbGVhdmluZyB0aGUgbmV3IGJ1 ZmZlciBlbXB0eS4gQXMgYSBzaW1wbGUKKysgICAgICAgIC8vIHdvcmstYXJvdW5kLCB3ZSB0cmln Z2VyIGEgZnVsbCBleHRyYSB1cGRhdGUgd2hlbmV2ZXIgdGhlIGNsaWVudC1zaWRlCisrICAgICAg ICAvLyB3aW5kb3cgZGVjb3JhdGlvbnMgYXJlIHRvZ2dsZWQgd2hpbGUgdGhlIHdpbmRvdyBpcyBz aG93aW5nLgorKyAgICAgICAgLy8gTm90ZTogY3JlYXRlRGVjb3JhdGlvbigpIGlzIHNvbWV0aW1l cyBjYWxsZWQgZnJvbSB0aGUgcmVuZGVyIHRocmVhZAorKyAgICAgICAgLy8gb2YgUXQgUXVpY2su IFRoaXMgaXMgZXNzZW50aWFsbHkgd3JvbmcgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGNhdXNlIHBy b2JsZW1zLAorKyAgICAgICAgLy8gYnV0IHVudGlsIHRoZSB1bmRlcmx5aW5nIGlzc3VlIGhhcyBi ZWVuIGZpeGVkLCB3ZSBoYXZlIHRvIHVzZSBpbnZva2VNZXRob2QoKQorKyAgICAgICAgLy8gaGVy ZSB0byBhdm9pZCBhc3NlcnRzLgorKyAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh3 aW5kb3coKSwgJlFXaW5kb3c6OnJlcXVlc3RVcGRhdGUpOworICAgICB9CisgCisgICAgIHJldHVy biBtV2luZG93RGVjb3JhdGlvbjsKK0BAIC0xMDIzLDYgKzEwNDQsMTMgQEAgdm9pZCBRV2F5bGFu ZFdpbmRvdzo6aGFuZGxlU2NyZWVuc0NoYW5nZWQoKQorIAorICAgICBRV2luZG93U3lzdGVtSW50 ZXJmYWNlOjpoYW5kbGVXaW5kb3dTY3JlZW5DaGFuZ2VkKHdpbmRvdygpLCBuZXdTY3JlZW4tPlFQ bGF0Zm9ybVNjcmVlbjo6c2NyZWVuKCkpOworICAgICBtTGFzdFJlcG9ydGVkU2NyZWVuID0gbmV3 U2NyZWVuOworKyAgICBpZiAoZml4ZWRUb3BsZXZlbFBvc2l0aW9ucyAmJiAhUVBsYXRmb3JtV2lu ZG93OjpwYXJlbnQoKSAmJiB3aW5kb3coKS0+dHlwZSgpICE9IFF0OjpQb3B1cAorKyAgICAgICAg JiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6VG9vbFRpcAorKyAgICAgICAgJiYgZ2VvbWV0cnko KS50b3BMZWZ0KCkgIT0gbmV3U2NyZWVuLT5nZW9tZXRyeSgpLnRvcExlZnQoKSkgeworKyAgICAg ICAgYXV0byBnZW9tZXRyeSA9IHRoaXMtPmdlb21ldHJ5KCk7CisrICAgICAgICBnZW9tZXRyeS5t b3ZlVG8obmV3U2NyZWVuLT5nZW9tZXRyeSgpLnRvcExlZnQoKSk7CisrICAgICAgICBzZXRHZW9t ZXRyeShnZW9tZXRyeSk7CisrICAgIH0KKyAKKyAgICAgaW50IHNjYWxlID0gbmV3U2NyZWVuLT5p c1BsYWNlaG9sZGVyKCkgPyAxIDogc3RhdGljX2Nhc3Q8UVdheWxhbmRTY3JlZW4gKj4obmV3U2Ny ZWVuKS0+c2NhbGUoKTsKKyAgICAgaWYgKHNjYWxlICE9IG1TY2FsZSkgeworQEAgLTEwOTQsMTAg KzExMjIsMTggQEAgYm9vbCBRV2F5bGFuZFdpbmRvdzo6c2V0TW91c2VHcmFiRW5hYmxlZChib29s IGdyYWIpCisgICAgIHJldHVybiB0cnVlOworIH0KKyAKKytRdDo6V2luZG93U3RhdGVzIFFXYXls YW5kV2luZG93Ojp3aW5kb3dTdGF0ZXMoKSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1MYXN0UmVw b3J0ZWRXaW5kb3dTdGF0ZXM7CisrfQorKworIHZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZVdp bmRvd1N0YXRlc0NoYW5nZWQoUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXMpCisgeworICAgICBjcmVh dGVEZWNvcmF0aW9uKCk7CistICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRv d1N0YXRlQ2hhbmdlZCh3aW5kb3coKSwgc3RhdGVzLCBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVz KTsKKysgICAgUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXNXaXRob3V0QWN0aXZlID0gc3RhdGVzICYg flF0OjpXaW5kb3dBY3RpdmU7CisrICAgIFF0OjpXaW5kb3dTdGF0ZXMgbGFzdFN0YXRlc1dpdGhv dXRBY3RpdmUgPSBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVzICYgflF0OjpXaW5kb3dBY3RpdmU7 CisrICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd1N0YXRlQ2hhbmdlZCh3 aW5kb3coKSwgc3RhdGVzV2l0aG91dEFjdGl2ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RTdGF0ZXNXaXRob3V0QWN0aXZlKTsKKyAg ICAgbUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRlcyA9IHN0YXRlczsKKyB9CisgCitAQCAtMTEzOSwx OSArMTE3NSwyNCBAQCB2b2lkIFFXYXlsYW5kV2luZG93Ojp0aW1lckV2ZW50KFFUaW1lckV2ZW50 ICpldmVudCkKKyAgICAgaWYgKGV2ZW50LT50aW1lcklkKCkgIT0gbUZyYW1lQ2FsbGJhY2tDaGVj a0ludGVydmFsVGltZXJJZCkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgYm9vbCBjYWxsYmFj a1RpbWVyRXhwaXJlZCA9IG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmhhc0V4cGlyZWQobUZy YW1lQ2FsbGJhY2tUaW1lb3V0KTsKKy0gICAgaWYgKCFtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1l ci5pc1ZhbGlkKCkgfHwgY2FsbGJhY2tUaW1lckV4cGlyZWQgKSB7CistICAgICAgICBraWxsVGlt ZXIobUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCk7CistICAgICAgICBtRnJhbWVD YWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7CistICAgIH0KKy0gICAgaWYgKG1GcmFt ZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQoKSAmJiBjYWxsYmFja1RpbWVyRXhwaXJlZCkg eworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworKyAg ICB7CisrICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbUZyYW1lU3luY011dGV4KTsKKyAKKy0g ICAgICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUg ZnJhbWUgY2FsbGJhY2sgaW4gdGltZSwgd2luZG93IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsK Ky0gICAgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSB0cnVlOworLSAgICAgICAgbVdhaXRp bmdGb3JVcGRhdGUgPSBmYWxzZTsKKy0gICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdCgpKTsK KysgICAgICAgIGJvb2wgY2FsbGJhY2tUaW1lckV4cGlyZWQgPSBtRnJhbWVDYWxsYmFja0VsYXBz ZWRUaW1lci5oYXNFeHBpcmVkKG1GcmFtZUNhbGxiYWNrVGltZW91dCk7CisrICAgICAgICBpZiAo IW1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQoKSB8fCBjYWxsYmFja1RpbWVyRXhw aXJlZCApIHsKKysgICAgICAgICAgICBraWxsVGltZXIobUZyYW1lQ2FsbGJhY2tDaGVja0ludGVy dmFsVGltZXJJZCk7CisrICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGlt ZXJJZCA9IC0xOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFtRnJhbWVDYWxsYmFja0VsYXBz ZWRUaW1lci5pc1ZhbGlkKCkgfHwgIWNhbGxiYWNrVGltZXJFeHBpcmVkKSB7CisrICAgICAgICAg ICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGlt ZXIuaW52YWxpZGF0ZSgpOworICAgICB9CisrCisrICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2lu Z3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUgZnJhbWUgY2FsbGJhY2sgaW4gdGltZSwgd2luZG93 IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsKKysgICAgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9 IHRydWU7CisrICAgIG1XYWl0aW5nRm9yVXBkYXRlID0gZmFsc2U7CisrICAgIHNlbmRFeHBvc2VF dmVudChRUmVjdCgpKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVxdWVzdFVwZGF0 ZSgpCitAQCAtMTE2MCw4ICsxMjAxLDExIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RV cGRhdGUoKQorICAgICBRX0FTU0VSVChoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKTsgLy8gc2hv dWxkIGJlIHNldCBieSBRUEEKKyAKKyAgICAgLy8gSWYgd2UgaGF2ZSBhIGZyYW1lIGNhbGxiYWNr IGFsbCBpcyBnb29kIGFuZCB3aWxsIGJlIHRha2VuIGNhcmUgb2YgdGhlcmUKKy0gICAgaWYgKG1X YWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKy0gICAgICAgIHJldHVybjsKKysgICAgeworKyAgICAg ICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysgICAgICAgIGlmICht V2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICAgICAgcmV0dXJuOworKyAgICB9Cisg CisgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgY2FsbGVkIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCks IGJ1dCBoYXZlbid0IHNlZW4gYW55IGF0dGFjaCtjb21taXQvc3dhcCB5ZXQKKyAgICAgLy8gVGhp cyBpcyBhIHNvbWV3aGF0IHJlZHVuZGFudCBiZWhhdmlvciBhbmQgbWlnaHQgaW5kaWNhdGUgYSBi dWcgaW4gdGhlIGNhbGxpbmcgY29kZSwgc28gbG9nCitAQCAtMTE3NCw3ICsxMjE4LDEyIEBAIHZv aWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorICAgICAvLyBzbyB1c2UgaW52b2tl TWV0aG9kIHRvIGRlbGF5IHRoZSBkZWxpdmVyeSBhIGJpdC4KKyAgICAgUU1ldGFPYmplY3Q6Omlu dm9rZU1ldGhvZCh0aGlzLCBbdGhpc10geworICAgICAgICAgLy8gVGhpbmdzIG1pZ2h0IGhhdmUg Y2hhbmdlZCBpbiB0aGUgbWVhbnRpbWUKKy0gICAgICAgIGlmIChoYXNQZW5kaW5nVXBkYXRlUmVx dWVzdCgpICYmICFtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICB7CisrICAgICAg ICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysgICAgICAgICAg ICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorKyAgICAgICAgICAgICAgICByZXR1cm47 CisrICAgICAgICB9CisrICAgICAgICBpZiAoaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSkKKyAg ICAgICAgICAgICBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpOworICAgICB9LCBRdDo6UXVldWVkQ29u bmVjdGlvbik7CisgfQorQEAgLTExODUsMTkgKzEyMzQsMTggQEAgdm9pZCBRV2F5bGFuZFdpbmRv dzo6cmVxdWVzdFVwZGF0ZSgpCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlVXBkYXRlKCkK KyB7CisgICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiaGFuZGxlVXBkYXRl IiA8PCBRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCk7CisrCisgICAgIC8vIFRPRE86IFNob3VsZCBz eW5jIHN1YnN1cmZhY2VzIGF2b2lkIHJlcXVlc3RpbmcgZnJhbWUgY2FsbGJhY2tzPworICAgICBR UmVhZExvY2tlciBsb2NrKCZtU3VyZmFjZUxvY2spOworICAgICBpZiAoIW1TdXJmYWNlKQorICAg ICAgICAgcmV0dXJuOworIAorLSAgICBpZiAobUZyYW1lQ2FsbGJhY2spIHsKKy0gICAgICAgIHds X2NhbGxiYWNrX2Rlc3Ryb3kobUZyYW1lQ2FsbGJhY2spOworLSAgICAgICAgbUZyYW1lQ2FsbGJh Y2sgPSBudWxscHRyOworLSAgICB9CisrICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5 bmNNdXRleCk7CisrICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICBy ZXR1cm47CisgCistICAgIFFNdXRleExvY2tlciBsb2NrZXIobUZyYW1lUXVldWUubXV0ZXgpOwor ICAgICBzdHJ1Y3QgOjp3bF9zdXJmYWNlICp3cmFwcGVkU3VyZmFjZSA9IHJlaW50ZXJwcmV0X2Nh c3Q8c3RydWN0IDo6d2xfc3VyZmFjZSAqPih3bF9wcm94eV9jcmVhdGVfd3JhcHBlcihtU3VyZmFj ZS0+b2JqZWN0KCkpKTsKKy0gICAgd2xfcHJveHlfc2V0X3F1ZXVlKHJlaW50ZXJwcmV0X2Nhc3Q8 d2xfcHJveHkgKj4od3JhcHBlZFN1cmZhY2UpLCBtRnJhbWVRdWV1ZS5xdWV1ZSk7CisrICAgIHds X3Byb3h5X3NldF9xdWV1ZShyZWludGVycHJldF9jYXN0PHdsX3Byb3h5ICo+KHdyYXBwZWRTdXJm YWNlKSwgbURpc3BsYXktPmZyYW1lRXZlbnRRdWV1ZSgpKTsKKyAgICAgbUZyYW1lQ2FsbGJhY2sg PSB3bF9zdXJmYWNlX2ZyYW1lKHdyYXBwZWRTdXJmYWNlKTsKKyAgICAgd2xfcHJveHlfd3JhcHBl cl9kZXN0cm95KHdyYXBwZWRTdXJmYWNlKTsKKyAgICAgd2xfY2FsbGJhY2tfYWRkX2xpc3RlbmVy KG1GcmFtZUNhbGxiYWNrLCAmUVdheWxhbmRXaW5kb3c6OmNhbGxiYWNrTGlzdGVuZXIsIHRoaXMp OworQEAgLTEyMDcsNiArMTI1NSw4IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZVVwZGF0 ZSgpCisgICAgIC8vIFN0YXJ0IGEgdGltZXIgZm9yIGhhbmRsaW5nIHRoZSBjYXNlIHdoZW4gdGhl IGNvbXBvc2l0b3Igc3RvcHMgc2VuZGluZyBmcmFtZSBjYWxsYmFja3MuCisgICAgIGlmIChtRnJh bWVDYWxsYmFja1RpbWVvdXQgPiAwKSB7CisgICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0 aG9kKHRoaXMsIFt0aGlzXSB7CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZy YW1lU3luY011dGV4KTsKKysKKyAgICAgICAgICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxi YWNrKSB7CisgICAgICAgICAgICAgICAgIGlmIChtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxU aW1lcklkIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgIG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRl cnZhbFRpbWVySWQgPSBzdGFydFRpbWVyKG1GcmFtZUNhbGxiYWNrVGltZW91dCk7CitAQCAtMTI2 Nyw2ICsxMzE3LDIwIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldE9wYXF1ZUFyZWEoY29uc3Qg UVJlZ2lvbiAmb3BhcXVlQXJlYSkKKyAgICAgd2xfcmVnaW9uX2Rlc3Ryb3kocmVnaW9uKTsKKyB9 CisgCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6YWRkQ2hpbGRQb3B1cChRV2F5bGFuZFdpbmRvdyAq c3VyZmFjZSkgeworKyAgICBtQ2hpbGRQb3B1cHMuYXBwZW5kKHN1cmZhY2UpOworK30KKysKKyt2 b2lkIFFXYXlsYW5kV2luZG93OjpyZW1vdmVDaGlsZFBvcHVwKFFXYXlsYW5kV2luZG93ICpzdXJm YWNlKSB7CisrICAgIG1DaGlsZFBvcHVwcy5yZW1vdmVBbGwoc3VyZmFjZSk7CisrfQorKworK3Zv aWQgUVdheWxhbmRXaW5kb3c6OmNsb3NlQ2hpbGRQb3B1cHMoKSB7CisrICAgIHdoaWxlICghbUNo aWxkUG9wdXBzLmlzRW1wdHkoKSkgeworKyAgICAgICAgYXV0byBwb3B1cCA9IG1DaGlsZFBvcHVw cy50YWtlTGFzdCgpOworKyAgICAgICAgcG9wdXAtPnJlc2V0KCk7CisrICAgIH0KKyt9CisgfQor IAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZHdpbmRvd19wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvd19w LmgKK2luZGV4IDAxMzM3Y2ZmLi4yZjIxOWQ4YyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kd2luZG93X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmR3aW5kb3dfcC5oCitAQCAtOTgsNiArOTgsOSBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5k V2luZG93KFFXaW5kb3cgKndpbmRvdywgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KTsKKyAgICAg flFXYXlsYW5kV2luZG93KCkgb3ZlcnJpZGU7CisgCisrICAgIC8vIEtlZXAgVG9wbGV2ZWxzIHBv c2l0aW9uIG9uIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlaXIgc2NyZWVuCisrICAgIHN0YXRp YyBpbmxpbmUgYm9vbCBmaXhlZFRvcGxldmVsUG9zaXRpb25zID0gdHJ1ZTsKKysKKyAgICAgdmly dHVhbCBXaW5kb3dUeXBlIHdpbmRvd1R5cGUoKSBjb25zdCA9IDA7CisgICAgIHZpcnR1YWwgdm9p ZCBlbnN1cmVTaXplKCk7CisgICAgIFdJZCB3aW5JZCgpIGNvbnN0IG92ZXJyaWRlOworQEAgLTE0 OCw2ICsxNTEsNyBAQCBwdWJsaWM6CisgICAgIHZvaWQgc2V0V2luZG93U3RhdGUoUXQ6OldpbmRv d1N0YXRlcyBzdGF0ZXMpIG92ZXJyaWRlOworICAgICB2b2lkIHNldFdpbmRvd0ZsYWdzKFF0OjpX aW5kb3dGbGFncyBmbGFncykgb3ZlcnJpZGU7CisgICAgIHZvaWQgaGFuZGxlV2luZG93U3RhdGVz Q2hhbmdlZChRdDo6V2luZG93U3RhdGVzIHN0YXRlcyk7CisrICAgIFF0OjpXaW5kb3dTdGF0ZXMg d2luZG93U3RhdGVzKCkgY29uc3Q7CisgCisgICAgIHZvaWQgcmFpc2UoKSBvdmVycmlkZTsKKyAg ICAgdm9pZCBsb3dlcigpIG92ZXJyaWRlOworQEAgLTIwNiw2ICsyMTAsMTAgQEAgcHVibGljOgor ICAgICB2b2lkIGhhbmRsZVVwZGF0ZSgpOworICAgICB2b2lkIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0 KCkgb3ZlcnJpZGU7CisgCisrICAgIHZvaWQgYWRkQ2hpbGRQb3B1cChRV2F5bGFuZFdpbmRvdyog Y2hpbGQpOworKyAgICB2b2lkIHJlbW92ZUNoaWxkUG9wdXAoUVdheWxhbmRXaW5kb3cqIGNoaWxk KTsKKysgICAgdm9pZCBjbG9zZUNoaWxkUG9wdXBzKCk7CisrCisgcHVibGljIHNsb3RzOgorICAg ICB2b2lkIGFwcGx5Q29uZmlndXJlKCk7CisgCitAQCAtMjE1LDcgKzIyMywxMSBAQCBzaWduYWxz OgorIAorIHByb3RlY3RlZDoKKyAgICAgUVdheWxhbmREaXNwbGF5ICptRGlzcGxheSA9IG51bGxw dHI7CisrCisrICAgIC8vIG1TdXJmYWNlIGNhbiBiZSB3cml0dGVuIGJ5IHRoZSBtYWluIHRocmVh ZC4gT3RoZXIgdGhyZWFkcyBzaG91bGQgY2xhaW0gYSByZWFkIGxvY2sgZm9yIGFjY2VzcworKyAg ICBtdXRhYmxlIFFSZWFkV3JpdGVMb2NrIG1TdXJmYWNlTG9jazsKKyAgICAgUVNjb3BlZFBvaW50 ZXI8UVdheWxhbmRTdXJmYWNlPiBtU3VyZmFjZTsKKysKKyAgICAgUVdheWxhbmRTaGVsbFN1cmZh Y2UgKm1TaGVsbFN1cmZhY2UgPSBudWxscHRyOworICAgICBRV2F5bGFuZFN1YlN1cmZhY2UgKm1T dWJTdXJmYWNlV2luZG93ID0gbnVsbHB0cjsKKyAgICAgUVZlY3RvcjxRV2F5bGFuZFN1YlN1cmZh Y2UgKj4gbUNoaWxkcmVuOworQEAgLTIyNSwxMyArMjM3LDE0IEBAIHByb3RlY3RlZDoKKyAgICAg UXQ6Ok1vdXNlQnV0dG9ucyBtTW91c2VQcmVzc2VkSW5Db250ZW50QXJlYSA9IFF0OjpOb0J1dHRv bjsKKyAKKyAgICAgV0lkIG1XaW5kb3dJZDsKKy0gICAgYm9vbCBtV2FpdGluZ0ZvckZyYW1lQ2Fs bGJhY2sgPSBmYWxzZTsKKyAgICAgYm9vbCBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7 IC8vIFdoZXRoZXIgdGhlIGZyYW1lIGNhbGxiYWNrIGhhcyB0aW1lZCBvdXQKKy0gICAgYm9vbCBt V2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFsc2U7CisgICAgIGludCBtRnJhbWVDYWxsYmFj a0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7CistICAgIFFFbGFwc2VkVGltZXIgbUZyYW1lQ2Fs bGJhY2tFbGFwc2VkVGltZXI7CistICAgIHN0cnVjdCA6OndsX2NhbGxiYWNrICptRnJhbWVDYWxs YmFjayA9IG51bGxwdHI7CistICAgIFFXYXlsYW5kRGlzcGxheTo6RnJhbWVRdWV1ZSBtRnJhbWVR dWV1ZTsKKysgICAgUUF0b21pY0ludCBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFsc2U7 CisrCisrICAgIGJvb2wgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7IC8vIFByb3Rl Y3RlZCBieSBtRnJhbWVTeW5jTXV0ZXgKKysgICAgUUVsYXBzZWRUaW1lciBtRnJhbWVDYWxsYmFj a0VsYXBzZWRUaW1lcjsgLy8gUHJvdGVjdGVkIGJ5IG1GcmFtZVN5bmNNdXRleAorKyAgICBzdHJ1 Y3QgOjp3bF9jYWxsYmFjayAqbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOyAvLyBQcm90ZWN0ZWQg YnkgbUZyYW1lU3luY011dGV4CisrICAgIFFNdXRleCBtRnJhbWVTeW5jTXV0ZXg7CisgICAgIFFX YWl0Q29uZGl0aW9uIG1GcmFtZVN5bmNXYWl0OworIAorICAgICAvLyBUcnVlIHdoZW4gd2UgaGF2 ZSBjYWxsZWQgZGVsaXZlclJlcXVlc3RVcGRhdGUsIGJ1dCB0aGUgY2xpZW50IGhhcyBub3QgeWV0 IGF0dGFjaGVkIGEgbmV3IGJ1ZmZlcgorQEAgLTI2MSw2ICsyNzQsOCBAQCBwcm90ZWN0ZWQ6Cisg ICAgIFFXYXlsYW5kQnVmZmVyICptUXVldWVkQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgUVJlZ2lv biBtUXVldWVkQnVmZmVyRGFtYWdlOworIAorKyAgICBRTGlzdDxRUG9pbnRlcjxRV2F5bGFuZFdp bmRvdz4+IG1DaGlsZFBvcHVwczsKKysKKyBwcml2YXRlOgorICAgICB2b2lkIHNldEdlb21ldHJ5 X2hlbHBlcihjb25zdCBRUmVjdCAmcmVjdCk7CisgICAgIHZvaWQgaW5pdFdpbmRvdygpOworQEAg LTI4MywxMiArMjk4LDEwIEBAIHByaXZhdGU6CisgICAgIFFSZWN0IG1MYXN0RXhwb3NlR2VvbWV0 cnk7CisgCisgICAgIHN0YXRpYyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBjYWxsYmFja0xp c3RlbmVyOworLSAgICB2b2lkIGhhbmRsZUZyYW1lQ2FsbGJhY2soKTsKKysgICAgdm9pZCBoYW5k bGVGcmFtZUNhbGxiYWNrKHN0cnVjdCA6OndsX2NhbGxiYWNrKiBjYWxsYmFjayk7CisgCisgICAg IHN0YXRpYyBRV2F5bGFuZFdpbmRvdyAqbU1vdXNlR3JhYjsKKyAKKy0gICAgbXV0YWJsZSBRUmVh ZFdyaXRlTG9jayBtU3VyZmFjZUxvY2s7CistCisgICAgIGZyaWVuZCBjbGFzcyBRV2F5bGFuZFN1 YlN1cmZhY2U7CisgfTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9zaGVs bGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK2lu ZGV4IGNjYWQwMDQ4Li40Y2M5YjNiOCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3NoZWxsaW50ZWdyYXRpb24vcXdheWxhbmRzaGVsbGludGVncmF0aW9uX3AuaAorKysrIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNoZWxsaW50ZWdyYXRp b25fcC5oCitAQCAtNzMsMTEgKzczLDEwIEBAIHB1YmxpYzoKKyAgICAgICAgIHJldHVybiB0cnVl OworICAgICB9CisgICAgIHZpcnR1YWwgUVdheWxhbmRTaGVsbFN1cmZhY2UgKmNyZWF0ZVNoZWxs U3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSA9IDA7CisrICAgIC8vIGtlcHQgZm9yIGJp bmFyeSBjb21wYXQgd2l0aCBsYXllci1zaGVsbC1xdAorICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl S2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdp bmRvdyAqb2xkRm9jdXMpIHsKKy0gICAgICAgIGlmIChuZXdGb2N1cykKKy0gICAgICAgICAgICBt X2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRlZChuZXdGb2N1cyk7CistICAgICAgICBpZiAo b2xkRm9jdXMpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRl ZChvbGRGb2N1cyk7CisrICAgICAgICBRX1VOVVNFRChuZXdGb2N1cyk7CisrICAgICAgICBRX1VO VVNFRChvbGRGb2N1cyk7CisgICAgIH0KKyAgICAgdmlydHVhbCB2b2lkICpuYXRpdmVSZXNvdXJj ZUZvcldpbmRvdyhjb25zdCBRQnl0ZUFycmF5ICZyZXNvdXJjZSwgUVdpbmRvdyAqd2luZG93KSB7 CisgICAgICAgICBRX1VOVVNFRChyZXNvdXJjZSk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Ny Yy9jb21wb3NpdG9yL2NvbmZpZ3VyZS5qc29uIGIvcXR3YXlsYW5kL3NyYy9jb21wb3NpdG9yL2Nv bmZpZ3VyZS5qc29uCitpbmRleCBiY2ZkNTIxNS4uZGE5NWQwN2IgMTAwNjQ0CistLS0gYS9xdHdh eWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpzb24KKysrKyBiL3F0d2F5bGFuZC9zcmMv Y29tcG9zaXRvci9jb25maWd1cmUuanNvbgorQEAgLTcsNiArNywzMSBAQAorICAgICAidGVzdERp ciI6ICIuLi8uLi9jb25maWcudGVzdHMiLAorIAorICAgICAibGlicmFyaWVzIjogeworKyAgICAg ICAgIndheWxhbmQtY2xpZW50IjogeworKyAgICAgICAgICAgICJsYWJlbCI6ICJXYXlsYW5kIGNs aWVudCBsaWJyYXJ5IiwKKysgICAgICAgICAgICAiaGVhZGVycyI6ICJ3YXlsYW5kLXZlcnNpb24u aCIsCisrICAgICAgICAgICAgInRlc3QiOiB7CisrICAgICAgICAgICAgICAgICJtYWluIjogWwor KyAgICAgICAgICAgICAgICAgICAgIiNpZiBXQVlMQU5EX1ZFUlNJT05fTUFKT1IgPCAxIiwKKysg ICAgICAgICAgICAgICAgICAgICIjIGVycm9yIFdheWxhbmQgMS44LjAgb3IgaGlnaGVyIHJlcXVp cmVkIiwKKysgICAgICAgICAgICAgICAgICAgICIjZW5kaWYiLAorKyAgICAgICAgICAgICAgICAg ICAgIiNpZiBXQVlMQU5EX1ZFUlNJT05fTUFKT1IgPT0gMSIsCisrICAgICAgICAgICAgICAgICAg ICAiIyBpZiBXQVlMQU5EX1ZFUlNJT05fTUlOT1IgPCA4IiwKKysgICAgICAgICAgICAgICAgICAg ICIjICBlcnJvciBXYXlsYW5kIDEuOC4wIG9yIGhpZ2hlciByZXF1aXJlZCIsCisrICAgICAgICAg ICAgICAgICAgICAiIyBlbmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiIyBpZiBXQVlMQU5E X1ZFUlNJT05fTUlOT1IgPT0gOCIsCisrICAgICAgICAgICAgICAgICAgICAiIyAgaWYgV0FZTEFO RF9WRVJTSU9OX01JQ1JPIDwgMCIsCisrICAgICAgICAgICAgICAgICAgICAiIyAgIGVycm9yIFdh eWxhbmQgMS44LjAgb3IgaGlnaGVyIHJlcXVpcmVkIiwKKysgICAgICAgICAgICAgICAgICAgICIj ICBlbmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiIyBlbmRpZiIsCisrICAgICAgICAgICAg ICAgICAgICAiI2VuZGlmIgorKyAgICAgICAgICAgICAgICAgXQorKyAgICAgICAgICAgIH0sCisr ICAgICAgICAgICAgInNvdXJjZXMiOiBbCisrICAgICAgICAgICAgICAgIHsgInR5cGUiOiAicGtn Q29uZmlnIiwgImFyZ3MiOiAid2F5bGFuZC1jbGllbnQiIH0sCisrICAgICAgICAgICAgICAgICIt bHdheWxhbmQtY2xpZW50IgorKyAgICAgICAgICAgIF0KKysgICAgICAgIH0sCisgICAgICAgICAi d2F5bGFuZC1zZXJ2ZXIiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIndheWxhbmQtc2VydmVy IiwKKyAgICAgICAgICAgICAiaGVhZGVycyI6ICJ3YXlsYW5kLXZlcnNpb24uaCIsCitAQCAtMTUx LDggKzE3Niw3IEBACisgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmIgorICAgICAgICAgICAg ICAgICBdCisgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAibGlicyI6ICItbGRybSIsCist ICAgICAgICAgICAgInVzZSI6ICJlZ2wiCisrICAgICAgICAgICAgInVzZSI6ICJkcm0gZWdsIgor ICAgICAgICAgfSwKKyAgICAgICAgICJkbWFidWYtY2xpZW50LWJ1ZmZlciI6IHsKKyAgICAgICAg ICAgICAibGFiZWwiOiAiTGludXggQ2xpZW50IGRtYS1idWYgQnVmZmVyIFNoYXJpbmciLAorQEAg LTE3Niw4ICsyMDAsNyBAQAorICAgICAgICAgICAgICAgICAgICAgInJldHVybiAwOyIKKyAgICAg ICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgImxpYnMiOiAiLWxk cm0iLAorLSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAgICAgICJ1c2UiOiAiZHJt IGVnbCIKKyAgICAgICAgIH0sCisgICAgICAgICAidnVsa2FuLXNlcnZlci1idWZmZXIiOiB7Cisg ICAgICAgICAgICAgImxhYmVsIjogIlZ1bGthbiBCdWZmZXIgU2hhcmluZyIsCitAQCAtMTk1LDcg KzIxOCw4IEBACisgICAgICAgICAgICAgICAgICAgICAiZXhwb3J0QWxsb2NJbmZvLmhhbmRsZVR5 cGVzID0gVktfRVhURVJOQUxfTUVNT1JZX0hBTkRMRV9UWVBFX09QQVFVRV9GRF9CSVRfS0hSOyIs CisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIDA7IgorICAgICAgICAgICAgICAgICBdCist ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0sCisrICAgICAgICAgICAgInVzZSI6ICJ3YXls YW5kLWNsaWVudCIKKyAgICAgICAgIH0KKyAgICAgfSwKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWds d2luZG93LmNwcCBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5 bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuY3BwCitpbmRleCA3ODg5ZjU3NS4uNjQxNDA2NzIg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dh eWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9oYXJk d2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5jcHAK K0BAIC00MCw2ICs0MCw3IEBACisgI2luY2x1ZGUgInF3YXlsYW5kZWdsd2luZG93LmgiCisgCisg I2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3F3YXlsYW5kc2NyZWVuX3AuaD4KKysj aW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvcXdheWxhbmRzdXJmYWNlX3AuaD4KKyAj aW5jbHVkZSAicXdheWxhbmRnbGNvbnRleHQuaCIKKyAKKyAjaW5jbHVkZSA8UXRFZ2xTdXBwb3J0 L3ByaXZhdGUvcWVnbGNvbnZlbmllbmNlX3AuaD4KK0BAIC0xMjQsNiArMTI1LDcgQEAgdm9pZCBR V2F5bGFuZEVnbFdpbmRvdzo6dXBkYXRlU3VyZmFjZShib29sIGNyZWF0ZSkKKyAgICAgICAgIH0K KyAgICAgICAgIG1PZmZzZXQgPSBRUG9pbnQoKTsKKyAgICAgfSBlbHNlIHsKKysgICAgICAgIFFS ZWFkTG9ja2VyIGxvY2tlcigmbVN1cmZhY2VMb2NrKTsKKyAgICAgICAgIGlmIChtX3dheWxhbmRF Z2xXaW5kb3cpIHsKKyAgICAgICAgICAgICBpbnQgY3VycmVudF93aWR0aCwgY3VycmVudF9oZWln aHQ7CisgICAgICAgICAgICAgc3RhdGljIGJvb2wgZGlzYWJsZVJlc2l6ZUNoZWNrID0gcWdldGVu digiUVRfV0FZTEFORF9ESVNBQkxFX1JFU0laRUNIRUNLIikudG9JbnQoKTsKK0BAIC0xMzEsMTQg KzEzMywxNiBAQCB2b2lkIFFXYXlsYW5kRWdsV2luZG93Ojp1cGRhdGVTdXJmYWNlKGJvb2wgY3Jl YXRlKQorICAgICAgICAgICAgIGlmICghZGlzYWJsZVJlc2l6ZUNoZWNrKSB7CisgICAgICAgICAg ICAgICAgIHdsX2VnbF93aW5kb3dfZ2V0X2F0dGFjaGVkX3NpemUobV93YXlsYW5kRWdsV2luZG93 LCAmY3VycmVudF93aWR0aCwgJmN1cnJlbnRfaGVpZ2h0KTsKKyAgICAgICAgICAgICB9CistICAg ICAgICAgICAgaWYgKGRpc2FibGVSZXNpemVDaGVjayB8fCAoY3VycmVudF93aWR0aCAhPSBzaXpl V2l0aE1hcmdpbnMud2lkdGgoKSB8fCBjdXJyZW50X2hlaWdodCAhPSBzaXplV2l0aE1hcmdpbnMu aGVpZ2h0KCkpKSB7CisrICAgICAgICAgICAgaWYgKGRpc2FibGVSZXNpemVDaGVjayB8fCAoY3Vy cmVudF93aWR0aCAhPSBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSB8fCBjdXJyZW50X2hlaWdodCAh PSBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkpIHx8IG1fcmVxdWVzdGVkU2l6ZSAhPSBzaXplV2l0 aE1hcmdpbnMpIHsKKyAgICAgICAgICAgICAgICAgd2xfZWdsX3dpbmRvd19yZXNpemUobV93YXls YW5kRWdsV2luZG93LCBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSwgc2l6ZVdpdGhNYXJnaW5zLmhl aWdodCgpLCBtT2Zmc2V0LngoKSwgbU9mZnNldC55KCkpOworKyAgICAgICAgICAgICAgICBtX3Jl cXVlc3RlZFNpemUgPSBzaXplV2l0aE1hcmdpbnM7CisgICAgICAgICAgICAgICAgIG1PZmZzZXQg PSBRUG9pbnQoKTsKKyAKKyAgICAgICAgICAgICAgICAgbV9yZXNpemUgPSB0cnVlOworICAgICAg ICAgICAgIH0KKy0gICAgICAgIH0gZWxzZSBpZiAoY3JlYXRlICYmIHdsU3VyZmFjZSgpKSB7Cist ICAgICAgICAgICAgbV93YXlsYW5kRWdsV2luZG93ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUod2xT dXJmYWNlKCksIHNpemVXaXRoTWFyZ2lucy53aWR0aCgpLCBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0 KCkpOworKyAgICAgICAgfSBlbHNlIGlmIChjcmVhdGUgJiYgbVN1cmZhY2UpIHsKKysgICAgICAg ICAgICBtX3dheWxhbmRFZ2xXaW5kb3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZShtU3VyZmFjZS0+ b2JqZWN0KCksIHNpemVXaXRoTWFyZ2lucy53aWR0aCgpLCBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0 KCkpOworKyAgICAgICAgICAgIG1fcmVxdWVzdGVkU2l6ZSA9IHNpemVXaXRoTWFyZ2luczsKKyAg ICAgICAgIH0KKyAKKyAgICAgICAgIGlmICghbV9lZ2xTdXJmYWNlICYmIG1fd2F5bGFuZEVnbFdp bmRvdyAmJiBjcmVhdGUpIHsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50 ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmggYi9xdHdheWxh bmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWds d2luZG93LmgKK2luZGV4IDViMWY0ZDU2Li4wMDc5ZGZlZiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3 aW5kb3cuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93 YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oCitAQCAtODgsNiArODgsNyBAQCBwcml2YXRl OgorICAgICBtdXRhYmxlIFFPcGVuR0xGcmFtZWJ1ZmZlck9iamVjdCAqbV9jb250ZW50RkJPID0g bnVsbHB0cjsKKyAKKyAgICAgUVN1cmZhY2VGb3JtYXQgbV9mb3JtYXQ7CisrICAgIFFTaXplIG1f cmVxdWVzdGVkU2l6ZTsKKyB9OworIAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2hh cmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGlu dXhkbWFidWYuaCBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jb21wb3NpdG9y L2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5oCitpbmRleCA1NmE3MTBjMy4u YzZhOGI2YzYgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24v Y29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGludXhkbWFidWYuaAorKysrIGIv cXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGludXgtZG1hYnVm LXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgKK0BAIC00MSw2ICs0MSw4IEBACisgI2luY2x1ZGUg PFF0Q29yZS9RVGV4dFN0cmVhbT4KKyAjaW5jbHVkZSA8UXRHdWkvUU9wZW5HTFRleHR1cmU+Cisg CisrI2luY2x1ZGUgPGFycmF5PgorKworICNpbmNsdWRlIDxFR0wvZWdsLmg+CisgI2luY2x1ZGUg PEVHTC9lZ2xleHQuaD4KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvZGVj b3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvZGVjb3Jh dGlvbnMvYnJhZGllbnQvbWFpbi5jcHAKK2luZGV4IGU3NWZkYTNjLi5mYTg4NTE0MyAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9ucy9icmFkaWVudC9tYWluLmNw cAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4u Y3BwCitAQCAtMTY0LDEzICsxNjQsMTAgQEAgdm9pZCBRV2F5bGFuZEJyYWRpZW50RGVjb3JhdGlv bjo6cGFpbnQoUVBhaW50RGV2aWNlICpkZXZpY2UpCisgICAgIC8vIFdpbmRvdyBpY29uCisgICAg IFFJY29uIGljb24gPSB3YXlsYW5kV2luZG93KCktPndpbmRvd0ljb24oKTsKKyAgICAgaWYgKCFp Y29uLmlzTnVsbCgpKSB7CistICAgICAgICBRUGl4bWFwIHBpeG1hcCA9IGljb24ucGl4bWFwKFFT aXplKDEyOCwgMTI4KSk7CistICAgICAgICBRUGl4bWFwIHNjYWxlZCA9IHBpeG1hcC5zY2FsZWQo MjIsIDIyLCBRdDo6SWdub3JlQXNwZWN0UmF0aW8sIFF0OjpTbW9vdGhUcmFuc2Zvcm1hdGlvbik7 CistCisgICAgICAgICBRUmVjdEYgaWNvblJlY3QoMCwgMCwgMjIsIDIyKTsKKy0gICAgICAgIHAu ZHJhd1BpeG1hcChpY29uUmVjdC5hZGp1c3RlZChtYXJnaW5zKCkubGVmdCgpICsgQlVUVE9OX1NQ QUNJTkcsIDQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2lu cygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0KSwKKy0gICAgICAgICAgICAgICAgICAgICBz Y2FsZWQsIGljb25SZWN0KTsKKysgICAgICAgIGljb25SZWN0LmFkanVzdChtYXJnaW5zKCkubGVm dCgpICsgQlVUVE9OX1NQQUNJTkcsIDQsCisrICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2lu cygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0KSwKKysgICAgICAgIGljb24ucGFpbnQoJnAs IGljb25SZWN0LnRvUmVjdCgpKTsKKyAgICAgfQorIAorICAgICAvLyBXaW5kb3cgdGl0bGUKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1LmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3BwCitpbmRleCA4 NWQyNWUzYy4uNjBiZGQ0OTEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hl bGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1LmNwcAorKysrIGIv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXls YW5keGRncG9wdXB2NS5jcHAKK0BAIC00NywxOCArNDcsMjEgQEAgUVRfQkVHSU5fTkFNRVNQQUNF CisgCisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7CisgCistUVdheWxhbmRYZGdQb3B1cFY1 OjpRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpwb3B1cCwgUVdheWxh bmRXaW5kb3cgKndpbmRvdykKKytRV2F5bGFuZFhkZ1BvcHVwVjU6OlFXYXlsYW5kWGRnUG9wdXBW NShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFuZFdpbmRvdyogcGFyZW50LCBR V2F5bGFuZFdpbmRvdyAqd2luZG93KQorICAgICA6IFFXYXlsYW5kU2hlbGxTdXJmYWNlKHdpbmRv dykKKyAgICAgLCBRdFdheWxhbmQ6OnhkZ19wb3B1cF92NShwb3B1cCkKKysgICAgLCBtX3BhcmVu dChwYXJlbnQpCisgICAgICwgbV93aW5kb3cod2luZG93KQorIHsKKyAgICAgaWYgKHdpbmRvdy0+ ZGlzcGxheSgpLT53aW5kb3dFeHRlbnNpb24oKSkKKyAgICAgICAgIG1fZXh0ZW5kZWRXaW5kb3cg PSBuZXcgUVdheWxhbmRFeHRlbmRlZFN1cmZhY2Uod2luZG93KTsKKysgICAgbV9wYXJlbnQtPmFk ZENoaWxkUG9wdXAobV93aW5kb3cpOworIH0KKyAKKyBRV2F5bGFuZFhkZ1BvcHVwVjU6On5RV2F5 bGFuZFhkZ1BvcHVwVjUoKQorIHsKKyAgICAgeGRnX3BvcHVwX2Rlc3Ryb3kob2JqZWN0KCkpOwor KyAgICBtX3BhcmVudC0+cmVtb3ZlQ2hpbGRQb3B1cChtX3dpbmRvdyk7CisgICAgIGRlbGV0ZSBt X2V4dGVuZGVkV2luZG93OworIH0KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaCBi L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5 bGFuZHhkZ3BvcHVwdjVfcC5oCitpbmRleCA3NDk0ZjZhNi4uZDg1ZjEzMGIgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdh eWxhbmR4ZGdwb3B1cHY1X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NV9wLmgKK0BAIC03MCw3ICs3 MCw3IEBAIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kWGRnUG9wdXBWNSA6 IHB1YmxpYyBRV2F5bGFuZFNoZWxsU3VyZmFjZQorIHsKKyAgICAgUV9PQkpFQ1QKKyBwdWJsaWM6 CistICAgIFFXYXlsYW5kWGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBR V2F5bGFuZFdpbmRvdyAqd2luZG93KTsKKysgICAgUVdheWxhbmRYZGdQb3B1cFY1KHN0cnVjdCA6 OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93KiBwYXJlbnQsIFFXYXlsYW5kV2lu ZG93ICp3aW5kb3cpOworICAgICB+UVdheWxhbmRYZGdQb3B1cFY1KCkgb3ZlcnJpZGU7CisgCisg cHJvdGVjdGVkOgorQEAgLTc4LDYgKzc4LDcgQEAgcHJvdGVjdGVkOgorIAorIHByaXZhdGU6Cisg ICAgIFFXYXlsYW5kRXh0ZW5kZWRTdXJmYWNlICptX2V4dGVuZGVkV2luZG93ID0gbnVsbHB0cjsK KysgICAgUVdheWxhbmRXaW5kb3cgKm1fcGFyZW50ID0gbnVsbHB0cjsKKyAgICAgUVdheWxhbmRX aW5kb3cgKm1fd2luZG93ID0gbnVsbHB0cjsKKyB9OworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3No ZWxsdjUuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NS5jcHAKK2luZGV4IDdlMjQyYzRhLi5kZWY4NDUyYSAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1z aGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1LmNwcAor QEAgLTg0LDcgKzg0LDcgQEAgUVdheWxhbmRYZGdQb3B1cFY1ICpRV2F5bGFuZFhkZ1NoZWxsVjU6 OmNyZWF0ZVhkZ1BvcHVwKFFXYXlsYW5kV2luZG93ICp3aW5kb3csIFEKKyAgICAgaW50IHggPSBw b3NpdGlvbi54KCkgKyBwYXJlbnRXaW5kb3ctPmZyYW1lTWFyZ2lucygpLmxlZnQoKTsKKyAgICAg aW50IHkgPSBwb3NpdGlvbi55KCkgKyBwYXJlbnRXaW5kb3ctPmZyYW1lTWFyZ2lucygpLnRvcCgp OworIAorLSAgICBhdXRvIHBvcHVwID0gbmV3IFFXYXlsYW5kWGRnUG9wdXBWNShnZXRfeGRnX3Bv cHVwKHdpbmRvdy0+d2xTdXJmYWNlKCksIHBhcmVudFN1cmZhY2UsIHNlYXQsIG1fcG9wdXBTZXJp YWwsIHgsIHkpLCB3aW5kb3cpOworKyAgICBhdXRvIHBvcHVwID0gbmV3IFFXYXlsYW5kWGRnUG9w dXBWNShnZXRfeGRnX3BvcHVwKHdpbmRvdy0+d2xTdXJmYWNlKCksIHBhcmVudFN1cmZhY2UsIHNl YXQsIG1fcG9wdXBTZXJpYWwsIHgsIHkpLCBwYXJlbnRXaW5kb3csIHdpbmRvdyk7CisgICAgIG1f cG9wdXBzLmFwcGVuZCh3aW5kb3cpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHBvcHVwLCAmUVdh eWxhbmRYZGdQb3B1cFY1OjpkZXN0cm95ZWQsIFt0aGlzLCB3aW5kb3ddKCl7CisgICAgICAgICBt X3BvcHVwcy5yZW1vdmVPbmUod2luZG93KTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50 ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcAoraW5kZXggNGUyNTk0 OWYuLmNmYzYwOTM5IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcAor KysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1 L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcAorQEAgLTg1LDEzICs4NSw2IEBAIFFX YXlsYW5kU2hlbGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsVjVJbnRlZ3JhdGlvbjo6Y3JlYXRl U2hlbGxTdXJmYWNlKFFXYXlsYW5kCisgICAgIHJldHVybiBtX3hkZ1NoZWxsLT5jcmVhdGVYZGdT dXJmYWNlKHdpbmRvdyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRYZGdTaGVsbFY1SW50ZWdyYXRp b246OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywg UVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSB7CistICAgIGlmIChuZXdGb2N1cyAmJiBxb2JqZWN0 X2Nhc3Q8UVdheWxhbmRYZGdQb3B1cFY1ICo+KG5ld0ZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpCist ICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRlZChuZXdGb2N1cyk7CistICAg IGlmIChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdQb3B1cFY1ICo+KG9sZEZv Y3VzLT5zaGVsbFN1cmZhY2UoKSkpCistICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0Rl YWN0aXZhdGVkKG9sZEZvY3VzKTsKKy19CistCisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWlu dGVncmF0aW9uX3AuaAoraW5kZXggY2U2YmRiOWUuLmFlZDg4NjcwIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5k eGRnc2hlbGx2NWludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9u X3AuaAorQEAgLTY3LDcgKzY3LDYgQEAgcHVibGljOgorICAgICBRV2F5bGFuZFhkZ1NoZWxsVjVJ bnRlZ3JhdGlvbigpIHt9CisgICAgIGJvb2wgaW5pdGlhbGl6ZShRV2F5bGFuZERpc3BsYXkgKmRp c3BsYXkpIG92ZXJyaWRlOworICAgICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxT dXJmYWNlKFFXYXlsYW5kV2luZG93ICp3aW5kb3cpIG92ZXJyaWRlOworLSAgICB2b2lkIGhhbmRs ZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRX aW5kb3cgKm9sZEZvY3VzKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRU2NvcGVkUG9p bnRlcjxRV2F5bGFuZFhkZ1NoZWxsVjU+IG1feGRnU2hlbGw7CitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRn c2hlbGx2Ni5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2LmNwcAoraW5kZXggOGMzNzE2NjEuLjE1MWM3OGUz IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYuY3Bw CitAQCAtMTc0LDYgKzE3NCw3IEBAIFFXYXlsYW5kWGRnU3VyZmFjZVY2OjpQb3B1cDo6UG9wdXAo UVdheWxhbmRYZGdTdXJmYWNlVjYgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kWGRnCisgICAgICwgbV94 ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisgICAgICwgbV9wYXJlbnQocGFyZW50KQorIHsKKysgICAg bV9wYXJlbnQtPndpbmRvdygpLT5hZGRDaGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkp OworIH0KKyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2VWNjo6UG9wdXA6On5Qb3B1cCgpCitAQCAtMTgx LDYgKzE4Miw4IEBAIFFXYXlsYW5kWGRnU3VyZmFjZVY2OjpQb3B1cDo6flBvcHVwKCkKKyAgICAg aWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgIGRlc3Ryb3koKTsKKyAKKysgICAgbV9wYXJl bnQtPndpbmRvdygpLT5yZW1vdmVDaGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOwor KworICAgICBpZiAobV9ncmFiYmluZykgeworICAgICAgICAgYXV0byAqc2hlbGwgPSBtX3hkZ1N1 cmZhY2UtPm1fc2hlbGw7CisgICAgICAgICBRX0FTU0VSVChzaGVsbC0+bV90b3Btb3N0R3JhYmJp bmdQb3B1cCA9PSB0aGlzKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hl bGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb24u Y3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2 L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAoraW5kZXggMDMxNjQzMTYuLmU4ZGE4 YmExIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24v eGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAorKysrIGIvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5k eGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAorQEAgLTY4LDIwICs2OCw2IEBAIFFXYXlsYW5kU2hl bGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsVjZJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxTdXJm YWNlKFFXYXlsYW5kCisgICAgIHJldHVybiBtX3hkZ1NoZWxsLT5nZXRYZGdTdXJmYWNlKHdpbmRv dyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRYZGdTaGVsbFY2SW50ZWdyYXRpb246OmhhbmRsZUtl eWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5k b3cgKm9sZEZvY3VzKQorLXsKKy0gICAgaWYgKG5ld0ZvY3VzKSB7CistICAgICAgICBhdXRvICp4 ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZVY2ICo+KG5ld0ZvY3Vz LT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRnU3VyZmFjZSAmJiAheGRnU3VyZmFj ZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVX aW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAgICB9CistICAgIGlmIChvbGRGb2N1cyAmJiBx b2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlVjYgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFj ZSgpKSkgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5bGFu ZFhkZ1N1cmZhY2VWNiAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAgICAgICAgaWYg KHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAgICAg ICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworLSAg ICB9CistfQorLQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRn c2hlbGx2NmludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVn cmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmgKK2lu ZGV4IDI2MWY4Y2JiLi5jMWJjZDVjNiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3Jh dGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hk Zy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmgKK0BAIC02NSw3ICs2 NSw2IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRYZGdTaGVsbFY2SW50ZWdyYXRpb24oKSB7fQor ICAgICBib29sIGluaXRpYWxpemUoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsK KyAgICAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdp bmRvdyAqd2luZG93KSBvdmVycmlkZTsKKy0gICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hh bmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykg b3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRYZGdT aGVsbFY2PiBtX3hkZ1NoZWxsOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsLmNwcCBiL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxs LmNwcAoraW5kZXggZjNlM2MzMzAuLmZhNmQ1ODA4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3Bw CisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwv cXdheWxhbmR4ZGdzaGVsbC5jcHAKK0BAIC02NywxMSArNjcsNiBAQCBRV2F5bGFuZFhkZ1N1cmZh Y2U6OlRvcGxldmVsOjpUb3BsZXZlbChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UpCisg CisgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6flRvcGxldmVsKCkKKyB7CistICAgIGlm IChtX2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgeworLSAgICAgICAgUVdheWxh bmRXaW5kb3cgKndpbmRvdyA9IG1feGRnU3VyZmFjZS0+d2luZG93KCk7CistICAgICAgICB3aW5k b3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQod2luZG93KTsKKy0gICAgfQor LQorICAgICAvLyBUaGUgcHJvdG9jb2wgc3BlYyByZXF1aXJlcyB0aGF0IHRoZSBkZWNvcmF0aW9u IG9iamVjdCBpcyBkZWxldGVkIGJlZm9yZSB4ZGdfdG9wbGV2ZWwuCisgICAgIGRlbGV0ZSBtX2Rl Y29yYXRpb247CisgICAgIG1fZGVjb3JhdGlvbiA9IG51bGxwdHI7CitAQCAtODUsMTYgKzgwLDE1 IEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6YXBwbHlDb25maWd1cmUoKQor ICAgICBpZiAoIShtX2FwcGxpZWQuc3RhdGVzICYgKFF0OjpXaW5kb3dNYXhpbWl6ZWR8UXQ6Oldp bmRvd0Z1bGxTY3JlZW4pKSkKKyAgICAgICAgIG1fbm9ybWFsU2l6ZSA9IG1feGRnU3VyZmFjZS0+ bV93aW5kb3ctPndpbmRvd0ZyYW1lR2VvbWV0cnkoKS5zaXplKCk7CisgCistICAgIGlmICgobV9w ZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmICEobV9hcHBsaWVkLnN0YXRlcyAm IFF0OjpXaW5kb3dBY3RpdmUpKQorKyAgICBpZiAoKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2lu ZG93QWN0aXZlKSAmJiAhKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKQorKyAg ICAgICAgJiYgIW1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aXNLZXlib2FyZEF2 YWlsYWJsZSgpKQorICAgICAgICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5o YW5kbGVXaW5kb3dBY3RpdmF0ZWQobV94ZGdTdXJmYWNlLT5tX3dpbmRvdyk7CisgCistICAgIGlm ICghKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSAmJiAobV9hcHBsaWVkLnN0 YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpKQorKyAgICBpZiAoIShtX3BlbmRpbmcuc3RhdGVzICYg UXQ6OldpbmRvd0FjdGl2ZSkgJiYgKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZl KQorKyAgICAgICAgJiYgIW1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aXNLZXli b2FyZEF2YWlsYWJsZSgpKQorICAgICAgICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxh eSgpLT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChtX3hkZ1N1cmZhY2UtPm1fd2luZG93KTsKKyAK Ky0gICAgLy8gVE9ETzogbm9uZSBvZiB0aGUgb3RoZXIgcGx1Z2lucyBzZW5kIFdpbmRvd0FjdGl2 ZSBlaXRoZXIsIGJ1dCBpcyBpdCBvbiBwdXJwb3NlPworLSAgICBRdDo6V2luZG93U3RhdGVzIHN0 YXRlc1dpdGhvdXRBY3RpdmUgPSBtX3BlbmRpbmcuc3RhdGVzICYgflF0OjpXaW5kb3dBY3RpdmU7 CistCistICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmhhbmRsZVdpbmRvd1N0YXRlc0NoYW5n ZWQoc3RhdGVzV2l0aG91dEFjdGl2ZSk7CisrICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmhh bmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQobV9wZW5kaW5nLnN0YXRlcyk7CisgCisgICAgIGlmICht X3BlbmRpbmcuc2l6ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgIC8vIEFuIGVtcHR5IHNpemUgaW4g dGhlIGNvbmZpZ3VyZSBtZWFucyBpdCdzIHVwIHRvIHRoZSBjbGllbnQgdG8gY2hvb3NlIHRoZSBz aXplCitAQCAtMTA1LDggKzk5LDYgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVs OjphcHBseUNvbmZpZ3VyZSgpCisgICAgICAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5yZXNp emVGcm9tQXBwbHlDb25maWd1cmUobV9wZW5kaW5nLnNpemUpOworICAgICB9CisgCistICAgIG1f eGRnU3VyZmFjZS0+c2V0U2l6ZUhpbnRzKCk7CistCisgICAgIG1fYXBwbGllZCA9IG1fcGVuZGlu ZzsKKyAgICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJBcHBsaWVkIHBlbmRpbmcgeGRnX3Rv cGxldmVsIGNvbmZpZ3VyZSBldmVudDoiIDw8IG1fYXBwbGllZC5zaXplIDw8IG1fYXBwbGllZC5z dGF0ZXM7CisgfQorQEAgLTIwMywxMiArMTk1LDE3IEBAIFF0V2F5bGFuZDo6eGRnX3RvcGxldmVs OjpyZXNpemVfZWRnZSBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjpjb252ZXJ0VG9SZXNp CisgICAgICAgICAgICAgICAgIHwgKChlZGdlcyAmIFF0OjpSaWdodEVkZ2UpID8gcmVzaXplX2Vk Z2VfcmlnaHQgOiAwKSk7CisgfQorIAorLVFXYXlsYW5kWGRnU3VyZmFjZTo6UG9wdXA6OlBvcHVw KFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRYZGdTdXJmYWNlICpwYXJl bnQsCisrUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6UG9wdXAoUVdheWxhbmRYZGdTdXJmYWNl ICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFdpbmRvdyAqcGFyZW50LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIgKnBvc2l0aW9uZXIpCist ICAgIDogeGRnX3BvcHVwKHhkZ1N1cmZhY2UtPmdldF9wb3B1cChwYXJlbnQtPm9iamVjdCgpLCBw b3NpdGlvbmVyLT5vYmplY3QoKSkpCistICAgICwgbV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisr ICAgIDogbV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisrICAgICwgbV9wYXJlbnRYZGdTdXJmYWNl KHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4ocGFyZW50LT5zaGVsbFN1cmZhY2Uo KSkpCisgICAgICwgbV9wYXJlbnQocGFyZW50KQorIHsKKysKKysgICAgaW5pdCh4ZGdTdXJmYWNl LT5nZXRfcG9wdXAobV9wYXJlbnRYZGdTdXJmYWNlID8gbV9wYXJlbnRYZGdTdXJmYWNlLT5vYmpl Y3QoKSA6IG51bGxwdHIsIHBvc2l0aW9uZXItPm9iamVjdCgpKSk7CisrICAgIGlmIChtX3BhcmVu dCkgeworKyAgICAgICAgbV9wYXJlbnQtPmFkZENoaWxkUG9wdXAobV94ZGdTdXJmYWNlLT53aW5k b3coKSk7CisrICAgIH0KKyB9CisgCisgUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6flBvcHVw KCkKK0BAIC0yMTYsMTAgKzIxMywyNCBAQCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlBvcHVwOjp+UG9w dXAoKQorICAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAgICAgZGVzdHJveSgpOworIAor KyAgICBpZiAobV9wYXJlbnQpIHsKKysgICAgICAgIG1fcGFyZW50LT5yZW1vdmVDaGlsZFBvcHVw KG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworKyAgICB9CisrCisgICAgIGlmIChtX2dyYWJiaW5n KSB7CisgICAgICAgICBhdXRvICpzaGVsbCA9IG1feGRnU3VyZmFjZS0+bV9zaGVsbDsKKyAgICAg ICAgIFFfQVNTRVJUKHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVwID09IHRoaXMpOworLSAg ICAgICAgc2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPSBtX3BhcmVudC0+bV9wb3B1cDsK KysgICAgICAgIHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVwID0gbV9wYXJlbnRYZGdTdXJm YWNlID8gbV9wYXJlbnRYZGdTdXJmYWNlLT5tX3BvcHVwIDogbnVsbHB0cjsKKysgICAgICAgIG1f Z3JhYmJpbmcgPSBmYWxzZTsKKysKKysgICAgICAgIC8vIFN5bnRoZXNpemUgUXQgZW50ZXIvbGVh dmUgZXZlbnRzIGZvciBwb3B1cAorKyAgICAgICAgUVdpbmRvdyAqbGVhdmUgPSBudWxscHRyOwor KyAgICAgICAgaWYgKG1feGRnU3VyZmFjZSAmJiBtX3hkZ1N1cmZhY2UtPndpbmRvdygpKQorKyAg ICAgICAgICAgIGxlYXZlID0gbV94ZGdTdXJmYWNlLT53aW5kb3coKS0+d2luZG93KCk7CisrICAg ICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVMZWF2ZUV2ZW50KGxlYXZlKTsKKysK KysgICAgICAgIGlmIChRV2luZG93ICplbnRlciA9IFFHdWlBcHBsaWNhdGlvbjo6dG9wTGV2ZWxB dChRQ3Vyc29yOjpwb3MoKSkpCisrICAgICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6 aGFuZGxlRW50ZXJFdmVudChlbnRlciwgZW50ZXItPm1hcEZyb21HbG9iYWwoUUN1cnNvcjo6cG9z KCkpLCBRQ3Vyc29yOjpwb3MoKSk7CisgICAgIH0KKyB9CisgCitAQCAtMjU3LDYgKzI2OCw3IEBA IFFXYXlsYW5kWGRnU3VyZmFjZTo6UVdheWxhbmRYZGdTdXJmYWNlKFFXYXlsYW5kWGRnU2hlbGwg KnNoZWxsLCA6OnhkZ19zdXJmYWNlICpzCisgICAgICAgICAgICAgICAgIG1fdG9wbGV2ZWwtPnNl dF9wYXJlbnQocGFyZW50WGRnU3VyZmFjZS0+bV90b3BsZXZlbC0+b2JqZWN0KCkpOworICAgICAg ICAgfQorICAgICB9CisrICAgIHNldFNpemVIaW50cygpOworIH0KKyAKKyBRV2F5bGFuZFhkZ1N1 cmZhY2U6On5RV2F5bGFuZFhkZ1N1cmZhY2UoKQorQEAgLTQwMCw4ICs0MTIsNiBAQCB2b2lkIFFX YXlsYW5kWGRnU3VyZmFjZTo6c2V0UG9wdXAoUVdheWxhbmRXaW5kb3cgKnBhcmVudCkKKyB7Cisg ICAgIFFfQVNTRVJUKCFtX3RvcGxldmVsICYmICFtX3BvcHVwKTsKKyAKKy0gICAgYXV0byBwYXJl bnRYZGdTdXJmYWNlID0gc3RhdGljX2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KHBhcmVudC0+ c2hlbGxTdXJmYWNlKCkpOworLQorICAgICBhdXRvIHBvc2l0aW9uZXIgPSBuZXcgUXRXYXlsYW5k Ojp4ZGdfcG9zaXRpb25lcihtX3NoZWxsLT5jcmVhdGVfcG9zaXRpb25lcigpKTsKKyAgICAgLy8g c2V0X3BvcHVwIGV4cGVjdHMgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgcGFyZW50CisgICAg IFFQb2ludCB0cmFuc2llbnRQb3MgPSBtX3dpbmRvdy0+Z2VvbWV0cnkoKS50b3BMZWZ0KCk7IC8v IHRoaXMgaXMgYWJzb2x1dGUKK0BAIC00MTQsOCArNDI0LDkgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1 cmZhY2U6OnNldFBvcHVwKFFXYXlsYW5kV2luZG93ICpwYXJlbnQpCisgICAgIHBvc2l0aW9uZXIt PnNldF9hbmNob3IoUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lcjo6YW5jaG9yX3RvcF9sZWZ0KTsK KyAgICAgcG9zaXRpb25lci0+c2V0X2dyYXZpdHkoUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lcjo6 Z3Jhdml0eV9ib3R0b21fcmlnaHQpOworICAgICBwb3NpdGlvbmVyLT5zZXRfc2l6ZShtX3dpbmRv dy0+Z2VvbWV0cnkoKS53aWR0aCgpLCBtX3dpbmRvdy0+Z2VvbWV0cnkoKS5oZWlnaHQoKSk7Cist ICAgIG1fcG9wdXAgPSBuZXcgUG9wdXAodGhpcywgcGFyZW50WGRnU3VyZmFjZSwgcG9zaXRpb25l cik7CisrICAgIG1fcG9wdXAgPSBuZXcgUG9wdXAodGhpcywgcGFyZW50LCBwb3NpdGlvbmVyKTsK KyAgICAgcG9zaXRpb25lci0+ZGVzdHJveSgpOworKworICAgICBkZWxldGUgcG9zaXRpb25lcjsK KyB9CisgCitAQCAtNDM3LDYgKzQ0OCwyMyBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6c2V0 R3JhYlBvcHVwKFFXYXlsYW5kV2luZG93ICpwYXJlbnQsIFFXYXlsYW5kSW5wdXREZXZpYworICAg ICB9CisgICAgIHNldFBvcHVwKHBhcmVudCk7CisgICAgIG1fcG9wdXAtPmdyYWIoZGV2aWNlLCBz ZXJpYWwpOworKworKyAgICAvLyBTeW50aGVzaXplIFF0IGVudGVyL2xlYXZlIGV2ZW50cyBmb3Ig cG9wdXAKKysgICAgaWYgKCFwYXJlbnQpCisrICAgICAgICByZXR1cm47CisrICAgIFFXaW5kb3cg KmN1cnJlbnQgPSBRR3VpQXBwbGljYXRpb246OnRvcExldmVsQXQoUUN1cnNvcjo6cG9zKCkpOwor KyAgICBRV2luZG93ICpsZWF2ZSA9IHBhcmVudC0+d2luZG93KCk7CisrICAgIGlmIChjdXJyZW50 ICE9IGxlYXZlKQorKyAgICAgICAgcmV0dXJuOworKworKyAgICBRV2luZG93U3lzdGVtSW50ZXJm YWNlOjpoYW5kbGVMZWF2ZUV2ZW50KGxlYXZlKTsKKysKKysgICAgUVdpbmRvdyAqZW50ZXIgPSBu dWxscHRyOworKyAgICBpZiAobV9wb3B1cCAmJiBtX3BvcHVwLT5tX3hkZ1N1cmZhY2UgJiYgbV9w b3B1cC0+bV94ZGdTdXJmYWNlLT53aW5kb3coKSkKKysgICAgICAgIGVudGVyID0gbV9wb3B1cC0+ bV94ZGdTdXJmYWNlLT53aW5kb3coKS0+d2luZG93KCk7CisrCisrICAgIGlmIChlbnRlcikKKysg ICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUVudGVyRXZlbnQoZW50ZXIsIGVu dGVyLT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBvcygpKSwgUUN1cnNvcjo6cG9zKCkpOworIH0K KyAKKyB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6eGRnX3N1cmZhY2VfY29uZmlndXJlKHVpbnQz Ml90IHNlcmlhbCkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRl Z3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbF9wLmggYi9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbF9wLmgKK2lu ZGV4IDk2Nzg1MjA1Li40YjUxOGYwYSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3AuaAorKysrIGIv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5k eGRnc2hlbGxfcC5oCitAQCAtMTMxLDE0ICsxMzEsMTUgQEAgcHJpdmF0ZToKKyAKKyAgICAgY2xh c3MgUG9wdXAgOiBwdWJsaWMgUXRXYXlsYW5kOjp4ZGdfcG9wdXAgeworICAgICBwdWJsaWM6Cist ICAgICAgICBQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kWGRn U3VyZmFjZSAqcGFyZW50LCBRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyICpwb3NpdGlvbmVyKTsK KysgICAgICAgIFBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRX aW5kb3cgKnBhcmVudCwgUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lciAqcG9zaXRpb25lcik7Cisg ICAgICAgICB+UG9wdXAoKSBvdmVycmlkZTsKKyAKKyAgICAgICAgIHZvaWQgZ3JhYihRV2F5bGFu ZElucHV0RGV2aWNlICpzZWF0LCB1aW50IHNlcmlhbCk7CisgICAgICAgICB2b2lkIHhkZ19wb3B1 cF9wb3B1cF9kb25lKCkgb3ZlcnJpZGU7CisgCisgICAgICAgICBRV2F5bGFuZFhkZ1N1cmZhY2Ug Km1feGRnU3VyZmFjZSA9IG51bGxwdHI7CistICAgICAgICBRV2F5bGFuZFhkZ1N1cmZhY2UgKm1f cGFyZW50ID0gbnVsbHB0cjsKKysgICAgICAgIFFXYXlsYW5kWGRnU3VyZmFjZSAqbV9wYXJlbnRY ZGdTdXJmYWNlID0gbnVsbHB0cjsKKysgICAgICAgIFFXYXlsYW5kV2luZG93ICptX3BhcmVudCA9 IG51bGxwdHI7CisgICAgICAgICBib29sIG1fZ3JhYmJpbmcgPSBmYWxzZTsKKyAgICAgfTsKKyAK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRp b24uY3BwCitpbmRleCA4NzY5ZDk3MS4uZGEwZGQ2YTcgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGlu dGVncmF0aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAKK0BAIC02OSwyMCAr NjksNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxhbmRYZGdTaGVsbEludGVncmF0aW9u OjpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaQorICAgICByZXR1cm4gbV94ZGdTaGVsbC0+ Z2V0WGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kWGRnU2hlbGxJbnRl Z3JhdGlvbjo6aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0Zv Y3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpCisteworLSAgICBpZiAobmV3Rm9jdXMpIHsK Ky0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJm YWNlICo+KG5ld0ZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRnU3VyZmFj ZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9k aXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAgICB9CistICAgIGlm IChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KG9sZEZvY3Vz LT5zaGVsbFN1cmZhY2UoKSkpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBxb2JqZWN0 X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7Cist ICAgICAgICBpZiAoeGRnU3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRl KCkpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChvbGRG b2N1cyk7CistICAgIH0KKy19CistCisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdh eWxhbmR4ZGdzaGVsbGludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb25fcC5oCitp bmRleCBiNmNhYTZjOS4uMmY5MjlmOTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9u X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK0BAIC02NSw3ICs2NSw2IEBAIHB1 YmxpYzoKKyAgICAgUVdheWxhbmRYZGdTaGVsbEludGVncmF0aW9uKCkge30KKyAgICAgYm9vbCBp bml0aWFsaXplKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CisgICAgIFFXYXls YW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRv dykgb3ZlcnJpZGU7CistICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxh bmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIG92ZXJyaWRlOwor IAorIHByaXZhdGU6CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kWGRnU2hlbGw+IG1feGRn U2hlbGw7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1l dGhvZGV2ZW50YnVpbGRlci5jcHAgYi9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZGlucHV0 bWV0aG9kZXZlbnRidWlsZGVyLmNwcAoraW5kZXggNTI2ZDBlZjQuLmY1MGNjZjMwIDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRl ci5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kaW5wdXRtZXRob2RldmVu dGJ1aWxkZXIuY3BwCitAQCAtMzksNyArMzksMTAgQEAKKyAKKyAjaW5jbHVkZSAicXdheWxhbmRp bnB1dG1ldGhvZGV2ZW50YnVpbGRlcl9wLmgiCisgCisrI2luY2x1ZGUgPFFCcnVzaD4KKysjaW5j bHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorICNpbmNsdWRlIDxRSW5wdXRNZXRob2Q+CisrI2luY2x1 ZGUgPFFQYWxldHRlPgorICNpbmNsdWRlIDxRVGV4dENoYXJGb3JtYXQ+CisgCisgI2lmZGVmIFFU X0JVSUxEX1dBWUxBTkRDT01QT1NJVE9SX0xJQgorQEAgLTgxLDMyICs4NCwzOCBAQCB2b2lkIFFX YXlsYW5kSW5wdXRNZXRob2RFdmVudEJ1aWxkZXI6OmFkZFByZWVkaXRTdHlsaW5nKHVpbnQzMl90 IGluZGV4LCB1aW50MzJfdAorICAgICBRVGV4dENoYXJGb3JtYXQgZm9ybWF0OworIAorICAgICBz d2l0Y2ggKHN0eWxlKSB7CistICAgIGNhc2UgMDoKKy0gICAgY2FzZSAxOgorKyAgICBjYXNlIFpX UF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfTk9ORToKKysgICAgICAgIGJyZWFrOworKyAg ICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfREVGQVVMVDoKKysgICAgY2Fz ZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX1VOREVSTElORToKKyAgICAgICAgIGZv cm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGlu ZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJsaW5lKTsKKyAgICAgICAgIG1fcHJl ZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRo b2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisgICAgICAgICBi cmVhazsKKy0gICAgY2FzZSAyOgorLSAgICBjYXNlIDM6CisrICAgIGNhc2UgWldQX1RFWFRfSU5Q VVRfVjJfUFJFRURJVF9TVFlMRV9BQ1RJVkU6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJf UFJFRURJVF9TVFlMRV9JTkFDVElWRToKKyAgICAgICAgIGZvcm1hdC5zZXRGb250V2VpZ2h0KFFG b250OjpCb2xkKTsKKyAgICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworICAg ICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xlVW5k ZXJsaW5lKTsKKyAgICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZl bnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0 aCwgZm9ybWF0KSk7CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSA0OgorLSAgICAgICAgZm9y bWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CistICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5l U3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOworLSAgICAgICAgbV9wcmVl ZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhv ZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKysgICAgY2FzZSBa V1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0hJR0hMSUdIVDoKKysgICAgY2FzZSBaV1Bf VEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX1NFTEVDVElPTjoKKysgICAgICAgIHsKKysgICAg ICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKysgICAgICAgICAgICBmb3Jt YXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOwor KyAgICAgICAgICAgIFFQYWxldHRlIHBhbGV0dGUgPSBxQXBwLT5wYWxldHRlKCk7CisrICAgICAg ICAgICAgZm9ybWF0LnNldEJhY2tncm91bmQoUUJydXNoKHBhbGV0dGUuY29sb3IoUVBhbGV0dGU6 OkFjdGl2ZSwgUVBhbGV0dGU6OkhpZ2hsaWdodCkpKTsKKysgICAgICAgICAgICBmb3JtYXQuc2V0 Rm9yZWdyb3VuZChRQnJ1c2gocGFsZXR0ZS5jb2xvcihRUGFsZXR0ZTo6QWN0aXZlLCBRUGFsZXR0 ZTo6SGlnaGxpZ2h0ZWRUZXh0KSkpOworKyAgICAgICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBl bmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZv cm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisrICAgICAgICB9CisgICAgICAgICBicmVh azsKKy0gICAgY2FzZSA1OgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZ TEVfSU5DT1JSRUNUOgorICAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7Cisg ICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpXYXZlVW5k ZXJsaW5lKTsKKyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVDb2xvcihRQ29sb3IoUXQ6OnJl ZCkpOworICAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6 QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBm b3JtYXQpKTsKKyAgICAgICAgIGJyZWFrOworLS8vICAgIGNhc2UgUXRXYXlsYW5kOjp3bF90ZXh0 X2lucHV0OjpwcmVlZGl0X3N0eWxlX3NlbGVjdGlvbjoKKy0vLyAgICBjYXNlIFF0V2F5bGFuZDo6 d2xfdGV4dF9pbnB1dDo6cHJlZWRpdF9zdHlsZV9ub25lOgorICAgICBkZWZhdWx0OgorICAgICAg ICAgYnJlYWs7CisgICAgIH0KK0BAIC0xNTMsNyArMTYyLDcgQEAgUUlucHV0TWV0aG9kRXZlbnQg UVdheWxhbmRJbnB1dE1ldGhvZEV2ZW50QnVpbGRlcjo6YnVpbGRQcmVlZGl0KGNvbnN0IFFTdHJp bmcgJnQKKyAKKyAgICAgaWYgKG1fcHJlZWRpdEN1cnNvciA8IDApIHsKKyAgICAgICAgIGF0dHJp YnV0ZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZl bnQ6OkN1cnNvciwgMCwgMCwgUVZhcmlhbnQoKSkpOworLSAgICB9IGVsc2UgaWYgKG1fcHJlZWRp dEN1cnNvciA+IDApIHsKKysgICAgfSBlbHNlIHsKKyAgICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5k KFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OkN1cnNvciwg aW5kZXhGcm9tV2F5bGFuZCh0ZXh0LCBtX3ByZWVkaXRDdXJzb3IpLCAxLCBRVmFyaWFudCgpKSk7 CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZG1p bWVoZWxwZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNw cAoraW5kZXggYTVmZGQzNGQuLmUyZmUxOTI4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9z aGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9zaGFyZWQv cXdheWxhbmRtaW1laGVscGVyLmNwcAorQEAgLTYwLDcgKzYwLDcgQEAgUUJ5dGVBcnJheSBRV2F5 bGFuZE1pbWVIZWxwZXI6OmdldEJ5dGVBcnJheShRTWltZURhdGEgKm1pbWVEYXRhLCBjb25zdCBR U3RyaW5nICYKKyAgICAgICAgICAgICBidWYub3BlbihRSU9EZXZpY2U6OlJlYWRXcml0ZSk7Cisg ICAgICAgICAgICAgUUJ5dGVBcnJheSBmbXQgPSAiQk1QIjsKKyAgICAgICAgICAgICBpZiAobWlt ZVR5cGUuc3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCJpbWFnZS8iKSkpIHsKKy0gICAgICAgICAg ICAgICAgUUJ5dGVBcnJheSBpbWdGbXQgPSBtaW1lVHlwZS5taWQoNikudG9VcHBlcigpLnRvTGF0 aW4xKCk7CisrICAgICAgICAgICAgICAgIFFCeXRlQXJyYXkgaW1nRm10ID0gbWltZVR5cGUubWlk KDYpLnRvTG93ZXIoKS50b0xhdGluMSgpOworICAgICAgICAgICAgICAgICBpZiAoUUltYWdlV3Jp dGVyOjpzdXBwb3J0ZWRJbWFnZUZvcm1hdHMoKS5jb250YWlucyhpbWdGbXQpKQorICAgICAgICAg ICAgICAgICAgICAgZm10ID0gaW1nRm10OworICAgICAgICAgICAgIH0KK0BAIC03NCw3ICs3NCw3 IEBAIFFCeXRlQXJyYXkgUVdheWxhbmRNaW1lSGVscGVyOjpnZXRCeXRlQXJyYXkoUU1pbWVEYXRh ICptaW1lRGF0YSwgY29uc3QgUVN0cmluZyAmCisgICAgICAgICBRTGlzdDxRVXJsPiB1cmxzID0g bWltZURhdGEtPnVybHMoKTsKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdXJscy5jb3Vu dCgpOyArK2kpIHsKKyAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCh1cmxzLmF0KGkpLnRvRW5j b2RlZCgpKTsKKy0gICAgICAgICAgICBjb250ZW50LmFwcGVuZCgnXG4nKTsKKysgICAgICAgICAg ICBjb250ZW50LmFwcGVuZCgiXHJcbiIpOworICAgICAgICAgfQorICAgICB9IGVsc2UgeworICAg ICAgICAgY29udGVudCA9IG1pbWVEYXRhLT5kYXRhKG1pbWVUeXBlKTsKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEu Y3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRl dmljZXYxLmNwcAoraW5kZXggMTU2OGIzYjkuLjA2NzQxMGQwIDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRldmljZXYxLmNwcAor KysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRl dmljZXYxLmNwcAorQEAgLTM1LDcgKzM1LDcgQEAKKyAKKyB1c2luZyBuYW1lc3BhY2UgTW9ja0Nv bXBvc2l0b3I7CisgCistY29uc3RleHByIGludCBkYXRhRGV2aWNlVmVyc2lvbiA9IDE7CisrY29u c3RleHByIGludCBkYXRhRGV2aWNlVmVyc2lvbiA9IDM7CisgCisgY2xhc3MgRGF0YURldmljZUNv bXBvc2l0b3IgOiBwdWJsaWMgRGVmYXVsdENvbXBvc2l0b3IgeworIHB1YmxpYzoKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2VhdHY1L3RzdF9zZWF0djUuY3BwIGIv cXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAoraW5kZXgg OTMxMmMyZTUuLjJlYTM4MmYxIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAorQEAgLTczLDYgKzczLDcgQEAgcHJpdmF0ZSBzbG90 czoKKyAgICAgdm9pZCBtdWx0aVRvdWNoKCk7CisgICAgIHZvaWQgbXVsdGlUb3VjaFVwQW5kTW90 aW9uRnJhbWUoKTsKKyAgICAgdm9pZCB0YXBBbmRNb3ZlSW5TYW1lRnJhbWUoKTsKKysgICAgdm9p ZCBjYW5jZWxUb3VjaCgpOworIH07CisgCisgdm9pZCB0c3Rfc2VhdHY1OjpiaW5kc1RvU2VhdCgp CitAQCAtNjQ2LDUgKzY0NywzNCBAQCB2b2lkIHRzdF9zZWF0djU6OnRhcEFuZE1vdmVJblNhbWVG cmFtZSgpCisgICAgIFFUUllfQ09NUEFSRSh3aW5kb3cubV9ldmVudHMubGFzdCgpLnRvdWNoUG9p bnRzLmZpcnN0KCkuc3RhdGUoKSwgUXQ6OlRvdWNoUG9pbnRTdGF0ZTo6VG91Y2hQb2ludFJlbGVh c2VkKTsKKyB9CisgCisrdm9pZCB0c3Rfc2VhdHY1OjpjYW5jZWxUb3VjaCgpCisreworKyAgICBU b3VjaFdpbmRvdyB3aW5kb3c7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnU3VyZmFj ZSgpICYmIHhkZ1N1cmZhY2UoKS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJpYWwpOworKworKyAg ICBleGVjKFs9XSB7CisrICAgICAgICBhdXRvICp0ID0gdG91Y2goKTsKKysgICAgICAgIGF1dG8g KmMgPSBjbGllbnQoKTsKKysgICAgICAgIHQtPnNlbmREb3duKHhkZ1RvcGxldmVsKCktPnN1cmZh Y2UoKSwgezMyLCAzMn0sIDEpOworKyAgICAgICAgdC0+c2VuZEZyYW1lKGMpOworKyAgICAgICAg dC0+c2VuZENhbmNlbChjKTsKKysgICAgICAgIHQtPnNlbmRGcmFtZShjKTsKKysgICAgfSk7Cisr CisrICAgIFFUUllfVkVSSUZZKCF3aW5kb3cubV9ldmVudHMuZW1wdHkoKSk7CisrICAgIHsKKysg ICAgICAgIGF1dG8gZSA9IHdpbmRvdy5tX2V2ZW50cy50YWtlRmlyc3QoKTsKKysgICAgICAgIFFD T01QQVJFKGUudHlwZSwgUUV2ZW50OjpUb3VjaEJlZ2luKTsKKysgICAgICAgIFFDT01QQVJFKGUu dG91Y2hQb2ludFN0YXRlcywgUXQ6OlRvdWNoUG9pbnRQcmVzc2VkKTsKKysgICAgICAgIFFDT01Q QVJFKGUudG91Y2hQb2ludHMubGVuZ3RoKCksIDEpOworKyAgICAgICAgUUNPTVBBUkUoZS50b3Vj aFBvaW50cy5maXJzdCgpLnBvcygpLCBRUG9pbnRGKDMyLXdpbmRvdy5mcmFtZU1hcmdpbnMoKS5s ZWZ0KCksIDMyLXdpbmRvdy5mcmFtZU1hcmdpbnMoKS50b3AoKSkpOworKyAgICB9CisrICAgIHsK KysgICAgICAgIGF1dG8gZSA9IHdpbmRvdy5tX2V2ZW50cy50YWtlRmlyc3QoKTsKKysgICAgICAg IFFDT01QQVJFKGUudHlwZSwgUUV2ZW50OjpUb3VjaENhbmNlbCk7CisrICAgICAgICBRQ09NUEFS RShlLnRvdWNoUG9pbnRzLmxlbmd0aCgpLCAwKTsKKysgICAgfQorK30KKysKKyBRQ09NUE9TSVRP Ul9URVNUX01BSU4odHN0X3NlYXR2NSkKKyAjaW5jbHVkZSAidHN0X3NlYXR2NS5tb2MiCitkaWZm IC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRv ci5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVjb21wb3NpdG9y LmNwcAoraW5kZXggNWM2YzgzYmEuLmZhOWI3NjYyIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5jcHAKKysrKyBiL3F0d2F5bGFu ZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwCitAQCAtMjcsNiAr MjcsNyBAQAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCisgI2luY2x1ZGUgImNvcmVjb21wb3Np dG9yLmgiCisrI2luY2x1ZGUgPHRocmVhZD4KKyAKKyBuYW1lc3BhY2UgTW9ja0NvbXBvc2l0b3Ig eworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29y ZXByb3RvY29sLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXBy b3RvY29sLmNwcAoraW5kZXggMGQ5ODg1MjEuLmQxYTJlN2NiIDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuY3BwCisrKysgYi9xdHdh eWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAKK0BAIC00NTEs NiArNDUxLDEzIEBAIHZvaWQgVG91Y2g6OnNlbmRGcmFtZSh3bF9jbGllbnQgKmNsaWVudCkKKyAg ICAgICAgIHNlbmRfZnJhbWUoci0+aGFuZGxlKTsKKyB9CisgCisrdm9pZCBUb3VjaDo6c2VuZENh bmNlbCh3bF9jbGllbnQgKmNsaWVudCkKKyt7CisrICAgIGNvbnN0IGF1dG8gdG91Y2hSZXNvdXJj ZXMgPSByZXNvdXJjZU1hcCgpLnZhbHVlcyhjbGllbnQpOworKyAgICBmb3IgKGF1dG8gKnIgOiB0 b3VjaFJlc291cmNlcykKKysgICAgICAgIHNlbmRfY2FuY2VsKHItPmhhbmRsZSk7CisrfQorKwor IHVpbnQgS2V5Ym9hcmQ6OnNlbmRFbnRlcihTdXJmYWNlICpzdXJmYWNlKQorIHsKKyAgICAgYXV0 byBzZXJpYWwgPSBtX3NlYXQtPm1fY29tcG9zaXRvci0+bmV4dFNlcmlhbCgpOworZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmggYi9x dHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCitpbmRleCBh MWFmMTM3YS4uMjEwZDhkZGIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGll bnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGll bnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCitAQCAtMTU4LDcgKzE1OCw3IEBAIGNsYXNzIFdsQ29t cG9zaXRvciA6IHB1YmxpYyBHbG9iYWwsIHB1YmxpYyBRdFdheWxhbmRTZXJ2ZXI6OndsX2NvbXBv c2l0b3IKKyB7CisgICAgIFFfT0JKRUNUCisgcHVibGljOgorLSAgICBleHBsaWNpdCBXbENvbXBv c2l0b3IoQ29yZUNvbXBvc2l0b3IgKmNvbXBvc2l0b3IsIGludCB2ZXJzaW9uID0gMykKKysgICAg ZXhwbGljaXQgV2xDb21wb3NpdG9yKENvcmVDb21wb3NpdG9yICpjb21wb3NpdG9yLCBpbnQgdmVy c2lvbiA9IDQpCisgICAgICAgICA6IFF0V2F5bGFuZFNlcnZlcjo6d2xfY29tcG9zaXRvcihjb21w b3NpdG9yLT5tX2Rpc3BsYXksIHZlcnNpb24pCisgICAgICAgICAsIG1fY29tcG9zaXRvcihjb21w b3NpdG9yKQorICAgICB7fQorQEAgLTM2NCw2ICszNjQsNyBAQCBwdWJsaWM6CisgICAgIHVpbnQg c2VuZFVwKHdsX2NsaWVudCAqY2xpZW50LCBpbnQgaWQpOworICAgICB2b2lkIHNlbmRNb3Rpb24o d2xfY2xpZW50ICpjbGllbnQsIGNvbnN0IFFQb2ludEYgJnBvc2l0aW9uLCBpbnQgaWQpOworICAg ICB2b2lkIHNlbmRGcmFtZSh3bF9jbGllbnQgKmNsaWVudCk7CisrICAgIHZvaWQgc2VuZENhbmNl bCh3bF9jbGllbnQgKmNsaWVudCk7CisgCisgICAgIFNlYXQgKm1fc2VhdCA9IG51bGxwdHI7Cisg fTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9t b2NrY29tcG9zaXRvci5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29s ZC9tb2NrY29tcG9zaXRvci5jcHAKK2luZGV4IGE0MTVjYmY1Li5iMWQzZDA3ZCAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tjb21wb3NpdG9y LmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2Nv bXBvc2l0b3IuY3BwCitAQCAtMzQyLDcgKzM0Miw3IEBAIENvbXBvc2l0b3I6OkNvbXBvc2l0b3Io TW9ja0NvbXBvc2l0b3IgKm1vY2tDb21wb3NpdG9yKQorICAgICAgICAgZXhpdChFWElUX0ZBSUxV UkUpOworICAgICB9CisgCistICAgIHdsX2dsb2JhbF9jcmVhdGUobV9kaXNwbGF5LCAmd2xfY29t cG9zaXRvcl9pbnRlcmZhY2UsIDEsIHRoaXMsIGJpbmRDb21wb3NpdG9yKTsKKysgICAgd2xfZ2xv YmFsX2NyZWF0ZShtX2Rpc3BsYXksICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgNCwgdGhpcywg YmluZENvbXBvc2l0b3IpOworIAorICAgICBtX2RhdGFfZGV2aWNlX21hbmFnZXIucmVzZXQobmV3 IERhdGFEZXZpY2VNYW5hZ2VyKHRoaXMsIG1fZGlzcGxheSkpOworIAorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmNwcCBiL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmNwcAoraW5k ZXggZTlkZjVmOTAuLmMzMjQ2ZTRhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8v Y2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMv YXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5jcHAKK0BAIC0xMjUsNiArMTI1LDE2 IEBAIHZvaWQgU3VyZmFjZTo6c3VyZmFjZV9kYW1hZ2UoUmVzb3VyY2UgKnJlc291cmNlLAorICAg ICBRX1VOVVNFRChoZWlnaHQpOworIH0KKyAKKyt2b2lkIFN1cmZhY2U6OnN1cmZhY2VfZGFtYWdl X2J1ZmZlcihSZXNvdXJjZSAqcmVzb3VyY2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp Z2h0KQorK3sKKysgICAgUV9VTlVTRUQocmVzb3VyY2UpOworKyAgICBRX1VOVVNFRCh4KTsKKysg ICAgUV9VTlVTRUQoeSk7CisrICAgIFFfVU5VU0VEKHdpZHRoKTsKKysgICAgUV9VTlVTRUQoaGVp Z2h0KTsKKyt9CisrCisgdm9pZCBTdXJmYWNlOjpzdXJmYWNlX2ZyYW1lKFJlc291cmNlICpyZXNv dXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY2FsbGJhY2spCisg eworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21v Y2tzdXJmYWNlLmggYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nr c3VyZmFjZS5oCitpbmRleCA5NDlkYzIzZC4uZDE3NjgzN2UgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5oCisrKysgYi9xdHdh eWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5oCitAQCAtNjUs NiArNjUsOCBAQCBwcm90ZWN0ZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHds X3Jlc291cmNlICpidWZmZXIsIGludCB4LCBpbnQgeSkgb3ZlcnJpZGU7CisgICAgIHZvaWQgc3Vy ZmFjZV9kYW1hZ2UoUmVzb3VyY2UgKnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAg IGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkgb3Zl cnJpZGU7CisrICAgIHZvaWQgc3VyZmFjZV9kYW1hZ2VfYnVmZmVyKFJlc291cmNlICpyZXNvdXJj ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB4LCBpbnQzMl90IHks IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICAgdm9pZCBzdXJm YWNlX2ZyYW1lKFJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQzMl90IGNhbGxiYWNrKSBvdmVycmlkZTsKKyAgICAgdm9pZCBzdXJmYWNlX2NvbW1pdChSZXNv dXJjZSAqcmVzb3VyY2UpIG92ZXJyaWRlOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9h dXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRv L2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcAoraW5kZXggOTVlNGU2MDkuLjYwYzY3MmNl IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3N1cmZhY2UvdHN0X3N1 cmZhY2UuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rf c3VyZmFjZS5jcHAKK0BAIC0xMjksNiArMTI5LDEwIEBAIHZvaWQgdHN0X3N1cmZhY2U6OndhaXRG b3JGcmFtZUNhbGxiYWNrR2woKQorICAgICAvLyBNYWtlIHN1cmUgd2UgZm9sbG93IGZyYW1lIGNh bGxiYWNrcyBmb3Igc29tZSBmcmFtZXMKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyArK2kp IHsKKyAgICAgICAgIHhkZ1BpbmdBbmRXYWl0Rm9yUG9uZygpOyAvLyBNYWtlIHN1cmUgdGhpbmdz IGhhdmUgaGFwcGVuZWQgb24gdGhlIGNsaWVudAorKyAgICAgICAgaWYgKCFxRW52aXJvbm1lbnRW YXJpYWJsZUludFZhbHVlKCJRVF9XQVlMQU5EX0RJU0FCTEVfV0lORE9XREVDT1JBVElPTiIpICYm IGkgPT0gMCkgeworKyAgICAgICAgICAgIFFDT01QQVJFKGJ1ZmZlclNweS5jb3VudCgpLCAxKTsK KysgICAgICAgICAgICBidWZmZXJTcHkucmVtb3ZlRmlyc3QoKTsKKysgICAgICAgIH0KKyAgICAg ICAgIGV4ZWMoWyZdIHsKKyAgICAgICAgICAgICBRVkVSSUZZKGJ1ZmZlclNweS5lbXB0eSgpKTsg Ly8gTWFrZSBzdXJlIG5vIGV4dHJhIGJ1ZmZlcnMgaGF2ZSBhcnJpdmVkCisgICAgICAgICAgICAg UVZFUklGWSgheGRnVG9wbGV2ZWwoKS0+c3VyZmFjZSgpLT5tX3dhaXRpbmdGcmFtZUNhbGxiYWNr cy5lbXB0eSgpKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRn c2hlbGwvdHN0X3hkZ3NoZWxsLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC94ZGdz aGVsbC90c3RfeGRnc2hlbGwuY3BwCitpbmRleCAyMjc3YmJiOC4uNzQ3ODc1YjQgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNw cAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVs bC5jcHAKK0BAIC0zMSw2ICszMSw3IEBACisgI2luY2x1ZGUgPFF0R3VpL1FPcGVuR0xXaW5kb3c+ CisgI2luY2x1ZGUgPFF0R3VpL3FwYS9xcGxhdGZvcm1uYXRpdmVpbnRlcmZhY2UuaD4KKyAjaW5j bHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvd2F5bGFuZC13YXlsYW5kLWNsaWVudC1wcm90 b2NvbC5oPgorKyNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJpdmF0ZS9xd2F5bGFuZHdpbmRv d19wLmg+CisgCisgdXNpbmcgbmFtZXNwYWNlIE1vY2tDb21wb3NpdG9yOworIAorQEAgLTQ1LDYg KzQ2LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBjb25maWd1cmVTdGF0ZXMoKTsKKyAg ICAgdm9pZCBwb3B1cCgpOworICAgICB2b2lkIHRvb2x0aXBPblBvcHVwKCk7CisrICAgIHZvaWQg dG9vbHRpcEFuZFNpYmxpbmdQb3B1cCgpOworICAgICB2b2lkIHN3aXRjaFBvcHVwcygpOworICAg ICB2b2lkIGhpZGVQb3B1cFBhcmVudCgpOworICAgICB2b2lkIHBvbmdzKCk7CitAQCAtMTM4LDYg KzE0MCw3IEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTaXplKCkKKyAKKyB2b2lkIHRz dF94ZGdzaGVsbDo6Y29uZmlndXJlU3RhdGVzKCkKKyB7CisrICAgIFFWRVJJRlkocXB1dGVudigi UVRfV0FZTEFORF9GUkFNRV9DQUxMQkFDS19USU1FT1VUIiwgIjAiKSk7CisgICAgIFFSYXN0ZXJX aW5kb3cgd2luZG93OworICAgICB3aW5kb3cucmVzaXplKDY0LCA0OCk7CisgICAgIHdpbmRvdy5z aG93KCk7CitAQCAtMTU0LDkgKzE1NywxMiBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJl U3RhdGVzKCkKKyAgICAgLy8gVG9wbGV2ZWwgd2luZG93cyBkb24ndCBrbm93IHRoZWlyIHBvc2l0 aW9uIG9uIHhkZy1zaGVsbAorIC8vICAgIFFDT01QQVJFKHdpbmRvdy5mcmFtZUdlb21ldHJ5KCku dG9wTGVmdCgpLCBRUG9pbnQoKSk7IC8vIFRPRE86IHRoaXMgZG9lc24ndCBjdXJyZW50bHkgd29y ayB3aGVuIHdpbmRvdyBkZWNvcmF0aW9ucyBhcmUgZW5hYmxlZAorIAorLS8vICAgIFFFWFBFQ1Rf RkFJTCgiIiwgImNvbmZpZ3VyZSBoYXMgYWxyZWFkeSBiZWVuIGFja2VkLCB3ZSBzaG91bGRuJ3Qg aGF2ZSB0byB3YWl0IGZvciBpc0FjdGl2ZSIsIENvbnRpbnVlKTsKKy0vLyAgICBRVkVSSUZZKHdp bmRvdy5pc0FjdGl2ZSgpKTsKKy0gICAgUVRSWV9WRVJJRlkod2luZG93LmlzQWN0aXZlKCkpOyAv LyBKdXN0IG1ha2Ugc3VyZSBpdCBldmVudHVhbGx5IGdldCdzIHNldCBjb3JyZWN0bHkKKysgICAg Ly8gd2luZG93LndpbmRvd3N0YXRlKCkgaXMgZHJpdmVuIGJ5IGtleWJvYXJkIGZvY3VzLCBob3dl dmVyIGZvciBkZWNvcmF0aW9ucyB3ZSB3YW50IHRvIGZvbGxvdworKyAgICAvLyBYREdTaGVsbCB0 aGlzIGlzIGludGVybmFsIHRvIFF0V2F5bGFuZCBzbyBpdCBpcyBxdWVyaWVkIGRpcmVjdGx5Cisr ICAgIGF1dG8gd2F5bGFuZFdpbmRvdyA9IHN0YXRpY19jYXN0PFF0V2F5bGFuZENsaWVudDo6UVdh eWxhbmRXaW5kb3cgKj4od2luZG93LmhhbmRsZSgpKTsKKysgICAgUV9BU1NFUlQod2F5bGFuZFdp bmRvdyk7CisrICAgIFFUUllfVkVSSUZZKHdheWxhbmRXaW5kb3ctPndpbmRvd1N0YXRlcygpLnRl c3RGbGFnKAorKyAgICAgICAgICAgIFF0OjpXaW5kb3dBY3RpdmUpKTsgLy8gSnVzdCBtYWtlIHN1 cmUgaXQgZXZlbnR1YWxseSBnZXQncyBzZXQgY29ycmVjdGx5CisgCisgICAgIGNvbnN0IFFTaXpl IHNjcmVlblNpemUoNjQwLCA0ODApOworICAgICBjb25zdCB1aW50IG1heGltaXplZFNlcmlhbCA9 IGV4ZWMoWz1dIHsKK0BAIC0xODYsNiArMTkyLDcgQEAgdm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZp Z3VyZVN0YXRlcygpCisgICAgIFFDT01QQVJFKHdpbmRvdy53aW5kb3dTdGF0ZXMoKSwgUXQ6Oldp bmRvd05vU3RhdGUpOworICAgICBRQ09NUEFSRSh3aW5kb3cuZnJhbWVHZW9tZXRyeSgpLnNpemUo KSwgd2luZG93ZWRTaXplKTsKKyAvLyAgICBRQ09NUEFSRSh3aW5kb3cuZnJhbWVHZW9tZXRyeSgp LnRvcExlZnQoKSwgUVBvaW50KCkpOyAvLyBUT0RPOiB0aGlzIGRvZXNuJ3QgY3VycmVudGx5IHdv cmsgd2hlbiB3aW5kb3cgZGVjb3JhdGlvbnMgYXJlIGVuYWJsZWQKKysgICAgUVZFUklGWShxdW5z ZXRlbnYoIlFUX1dBWUxBTkRfRlJBTUVfQ0FMTEJBQ0tfVElNRU9VVCIpKTsKKyB9CisgCisgdm9p ZCB0c3RfeGRnc2hlbGw6OnBvcHVwKCkKK0BAIC0zNDAsNiArMzQ3LDkyIEBAIHZvaWQgdHN0X3hk Z3NoZWxsOjp0b29sdGlwT25Qb3B1cCgpCisgICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhk Z1BvcHVwKDApLCBudWxscHRyKTsKKyB9CisgCisrdm9pZCB0c3RfeGRnc2hlbGw6OnRvb2x0aXBB bmRTaWJsaW5nUG9wdXAoKQorK3sKKysgICAgY2xhc3MgVG9vbFRpcCA6IHB1YmxpYyBRUmFzdGVy V2luZG93IHsKKysgICAgcHVibGljOgorKyAgICAgICAgZXhwbGljaXQgVG9vbFRpcChRV2luZG93 ICpwYXJlbnQpIHsKKysgICAgICAgICAgICBzZXRUcmFuc2llbnRQYXJlbnQocGFyZW50KTsKKysg ICAgICAgICAgICBzZXRGbGFncyhRdDo6VG9vbFRpcCk7CisrICAgICAgICAgICAgcmVzaXplKDEw MCwgMTAwKTsKKysgICAgICAgICAgICBzaG93KCk7CisrICAgICAgICB9CisrICAgICAgICB2b2lk IG1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCAqZXZlbnQpIG92ZXJyaWRlIHsKKysgICAgICAg ICAgICBRUmFzdGVyV2luZG93Ojptb3VzZVByZXNzRXZlbnQoZXZlbnQpOworKyAgICAgICAgICAg IG1fcG9wdXAgPSBuZXcgUVJhc3RlcldpbmRvdzsKKysgICAgICAgICAgICBtX3BvcHVwLT5zZXRU cmFuc2llbnRQYXJlbnQodHJhbnNpZW50UGFyZW50KCkpOworKyAgICAgICAgICAgIG1fcG9wdXAt PnNldEZsYWdzKFF0OjpQb3B1cCk7CisrICAgICAgICAgICAgbV9wb3B1cC0+cmVzaXplKDEwMCwg MTAwKTsKKysgICAgICAgICAgICBtX3BvcHVwLT5zaG93KCk7CisrICAgICAgICB9CisrCisrICAg ICAgICBRUmFzdGVyV2luZG93ICptX3BvcHVwID0gbnVsbHB0cjsKKysgICAgfTsKKysKKysgICAg Y2xhc3MgV2luZG93IDogcHVibGljIFFSYXN0ZXJXaW5kb3cgeworKyAgICBwdWJsaWM6CisrICAg ICAgICB2b2lkIG1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCAqZXZlbnQpIG92ZXJyaWRlIHsK KysgICAgICAgICAgICBRUmFzdGVyV2luZG93Ojptb3VzZVByZXNzRXZlbnQoZXZlbnQpOworKyAg ICAgICAgICAgIG1fdG9vbHRpcCA9IG5ldyBUb29sVGlwKHRoaXMpOworKyAgICAgICAgfQorKyAg ICAgICAgVG9vbFRpcCAqbV90b29sdGlwID0gbnVsbHB0cjsKKysgICAgfTsKKysKKysgICAgV2lu ZG93IHdpbmRvdzsKKysgICAgd2luZG93LnJlc2l6ZSgyMDAsIDIwMCk7CisrICAgIHdpbmRvdy5z aG93KCk7CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnVG9wbGV2ZWwoKSk7Cisr ICAgIGV4ZWMoWz1dIHsgeGRnVG9wbGV2ZWwoKS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKCk7IH0p OworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1RvcGxldmVsKCktPm1feGRnU3VyZmFj ZS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJpYWwpOworKworKyAgICBleGVjKFs9XSB7CisrICAg ICAgICBhdXRvICpzdXJmYWNlID0geGRnVG9wbGV2ZWwoKS0+c3VyZmFjZSgpOworKyAgICAgICAg YXV0byAqcCA9IHBvaW50ZXIoKTsKKysgICAgICAgIGF1dG8gKmMgPSBjbGllbnQoKTsKKysgICAg ICAgIHAtPnNlbmRFbnRlcihzdXJmYWNlLCB7MTAwLCAxMDB9KTsKKysgICAgICAgIHAtPnNlbmRG cmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24oY2xpZW50KCksIEJUTl9MRUZULCBQb2lu dGVyOjpidXR0b25fc3RhdGVfcHJlc3NlZCk7CisrICAgICAgICBwLT5zZW5kQnV0dG9uKGNsaWVu dCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3JlbGVhc2VkKTsKKysgICAgICAg IHAtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRMZWF2ZShzdXJmYWNlKTsKKysgICAg ICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgfSk7CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9W RVJJRlkoeGRnUG9wdXAoKSk7CisrICAgIGV4ZWMoWz1dIHsgeGRnUG9wdXAoKS0+c2VuZENvbXBs ZXRlQ29uZmlndXJlKFFSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOyB9KTsKKysgICAgUUNPTVBP U0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgpLT5tX3hkZ1N1cmZhY2UtPm1fY29tbWl0dGVkQ29u ZmlndXJlU2VyaWFsKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSgheGRnUG9wdXAoKS0+ bV9ncmFiYmVkKTsKKysKKysgICAgZXhlYyhbPV0geworKyAgICAgICAgYXV0byAqc3VyZmFjZSA9 IHhkZ1BvcHVwKCktPnN1cmZhY2UoKTsKKysgICAgICAgIGF1dG8gKnAgPSBwb2ludGVyKCk7Cisr ICAgICAgICBhdXRvICpjID0gY2xpZW50KCk7CisrICAgICAgICBwLT5zZW5kRW50ZXIoc3VyZmFj ZSwgezEwMCwgMTAwfSk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgICAgICBwLT5z ZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3ByZXNz ZWQpOworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6 OmJ1dHRvbl9zdGF0ZV9yZWxlYXNlZCk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAg IH0pOworKworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDEpKTsKKysgICAg ZXhlYyhbPV0geyB4ZGdQb3B1cCgxKS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKFFSZWN0KDEwMCwg MTAwLCAxMDAsIDEwMCkpOyB9KTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1 cCgxKS0+bV94ZGdTdXJmYWNlLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrICAgIFFD T01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMSktPm1fZ3JhYmJlZCk7CisrCisrICAgIC8v IENsb3NlIHRoZSBtaWRkbGUgdG9vbHRpcCAoaXQgc2hvdWxkIG5vdCBjbG9zZSB0aGUgc2libGlu ZyBwb3B1cCkKKysgICAgd2luZG93Lm1fdG9vbHRpcC0+Y2xvc2UoKTsKKysKKysgICAgUUNPTVBP U0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMSksIG51bGxwdHIpOworKyAgICAvLyBWZXJpZnkg dGhlIHJlbWFpbmluZyB4ZGcgc3VyZmFjZSBpcyBhIGdyYWIgcG9wdXAuLgorKyAgICBRQ09NUE9T SVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDApKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklG WSh4ZGdQb3B1cCgwKS0+bV9ncmFiYmVkKTsKKysKKysgICAgd2luZG93Lm1fdG9vbHRpcC0+bV9w b3B1cC0+Y2xvc2UoKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMSks IG51bGxwdHIpOworKyAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1cCgwKSwgbnVs bHB0cik7CisrfQorKworIC8vIFFUQlVHLTY1NjgwCisgdm9pZCB0c3RfeGRnc2hlbGw6OnN3aXRj aFBvcHVwcygpCisgeworQEAgLTUwNSw3ICs1OTgsNyBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6bWlu TWF4U2l6ZSgpCisgICAgIHdpbmRvdy5zaG93KCk7CisgICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJ RlkoeGRnVG9wbGV2ZWwoKSk7CisgCistICAgIGV4ZWMoWz1dIHsgeGRnVG9wbGV2ZWwoKS0+c2Vu ZENvbXBsZXRlQ29uZmlndXJlKCk7IH0pOworKyAgICAvLyB3ZSBkb24ndCByb3VuZHRyaXAgd2l0 aCBvdXIgY29uZmlndXJhdGlvbiB0aGUgaW5pdGlhbCBjb21taXQgc2hvdWxkIGJlIGNvcnJlY3QK KyAKKyAgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnVG9wbGV2ZWwoKS0+bV9jb21taXR0 ZWQubWluU2l6ZSwgUVNpemUoMTAwLCAxMDApKTsKKyAgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBB UkUoeGRnVG9wbGV2ZWwoKS0+bV9jb21taXR0ZWQubWF4U2l6ZSwgUVNpemUoMTAwMCwgMTAwMCkp OworU3VibW9kdWxlIHF0d2ViY2hhbm5lbCA2MTg0MjJlZS4uZjg5NDk2NTU6CitkaWZmIC0tZ2l0 IGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyLmNwcCBi L3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlci5jcHAKK2lu ZGV4IDUzNmViNWMuLjg5OGQ3NjkgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNo YW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwCisrKysgYi9xdHdlYmNoYW5uZWwvc3JjL3dl YmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwCitAQCAtMTg2LDggKzE4Niw2IEBAIFFf REVDTEFSRV9UWVBFSU5GTyhPdmVybG9hZFJlc29sdXRpb25DYW5kaWRhdGUsIFFfTU9WQUJMRV9U WVBFKTsKKyBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6UU1ldGFPYmplY3RQdWJsaXNoZXIoUVdlYkNo YW5uZWwgKndlYkNoYW5uZWwpCisgICAgIDogUU9iamVjdCh3ZWJDaGFubmVsKQorICAgICAsIHdl YkNoYW5uZWwod2ViQ2hhbm5lbCkKKy0gICAgLCBzaWduYWxIYW5kbGVyKHRoaXMpCistICAgICwg Y2xpZW50SXNJZGxlKGZhbHNlKQorICAgICAsIGJsb2NrVXBkYXRlcyhmYWxzZSkKKyAgICAgLCBw cm9wZXJ0eVVwZGF0ZXNJbml0aWFsaXplZChmYWxzZSkKKyB7CitAQCAtMzAxLDE3ICsyOTksMTcg QEAgUUpzb25PYmplY3QgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmNsYXNzSW5mb0Zvck9iamVjdChj b25zdCBRT2JqZWN0ICpvYmplY3QsIFFXZWIKKyAgICAgcmV0dXJuIGRhdGE7CisgfQorIAorLXZv aWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNldENsaWVudElzSWRsZShib29sIGlzSWRsZSkKKyt2 b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lkbGUsIFFX ZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKKyB7CistICAgIGlmIChjbGll bnRJc0lkbGUgPT0gaXNJZGxlKSB7CistICAgICAgICByZXR1cm47CistICAgIH0KKy0gICAgY2xp ZW50SXNJZGxlID0gaXNJZGxlOworLSAgICBpZiAoIWlzSWRsZSAmJiB0aW1lci5pc0FjdGl2ZSgp KSB7CistICAgICAgICB0aW1lci5zdG9wKCk7CistICAgIH0gZWxzZSBpZiAoaXNJZGxlICYmICF0 aW1lci5pc0FjdGl2ZSgpKSB7CistICAgICAgICB0aW1lci5zdGFydChQUk9QRVJUWV9VUERBVEVf SU5URVJWQUwsIHRoaXMpOworLSAgICB9CisrICAgIHRyYW5zcG9ydFN0YXRlW3RyYW5zcG9ydF0u Y2xpZW50SXNJZGxlID0gaXNJZGxlOworKyAgICBpZiAoaXNJZGxlKQorKyAgICAgICAgc2VuZEVu cXVldWVkUHJvcGVydHlVcGRhdGVzKHRyYW5zcG9ydCk7CisrfQorKworK2Jvb2wgUU1ldGFPYmpl Y3RQdWJsaXNoZXI6OmlzQ2xpZW50SWRsZShRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0 cmFuc3BvcnQpCisreworKyAgICBhdXRvIGZvdW5kID0gdHJhbnNwb3J0U3RhdGUuZmluZCh0cmFu c3BvcnQpOworKyAgICByZXR1cm4gZm91bmQgIT0gdHJhbnNwb3J0U3RhdGUuZW5kKCkgJiYgZm91 bmQudmFsdWUoKS5jbGllbnRJc0lkbGU7CisgfQorIAorIFFKc29uT2JqZWN0IFFNZXRhT2JqZWN0 UHVibGlzaGVyOjppbml0aWFsaXplQ2xpZW50KFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQg KnRyYW5zcG9ydCkKK0BAIC0zMzMsNiArMzMxLDcgQEAgUUpzb25PYmplY3QgUU1ldGFPYmplY3RQ dWJsaXNoZXI6OmluaXRpYWxpemVDbGllbnQoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydAor IAorIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmluaXRpYWxpemVQcm9wZXJ0eVVwZGF0ZXMo Y29uc3QgUU9iamVjdCAqY29uc3Qgb2JqZWN0LCBjb25zdCBRSnNvbk9iamVjdCAmb2JqZWN0SW5m bykKKyB7CisrICAgIGF1dG8gKnNpZ25hbEhhbmRsZXIgPSBzaWduYWxIYW5kbGVyRm9yKG9iamVj dCk7CisgICAgIGZvcmVhY2ggKGNvbnN0IFFKc29uVmFsdWUgJnByb3BlcnR5SW5mb1Zhciwgb2Jq ZWN0SW5mb1tLRVlfUFJPUEVSVElFU10udG9BcnJheSgpKSB7CisgICAgICAgICBjb25zdCBRSnNv bkFycmF5ICZwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0eUluZm9WYXIudG9BcnJheSgpOworICAgICAg ICAgaWYgKHByb3BlcnR5SW5mby5zaXplKCkgPCAyKSB7CitAQCAtMzUzLDE5ICszNTIsMTkgQEAg dm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZVByb3BlcnR5VXBkYXRlcyhjb25z dCBRT2JqZWN0ICpjb25zdCBvYmplY3QKKyAKKyAgICAgICAgIC8vIE9ubHkgY29ubmVjdCBmb3Ig YSBwcm9wZXJ0eSB1cGRhdGUgb25jZQorICAgICAgICAgaWYgKGNvbm5lY3RlZFByb3BlcnRpZXMu aXNFbXB0eSgpKSB7CistICAgICAgICAgICAgc2lnbmFsSGFuZGxlci5jb25uZWN0VG8ob2JqZWN0 LCBzaWduYWxJbmRleCk7CisrICAgICAgICAgICAgc2lnbmFsSGFuZGxlci0+Y29ubmVjdFRvKG9i amVjdCwgc2lnbmFsSW5kZXgpOworICAgICAgICAgfQorIAorICAgICAgICAgY29ubmVjdGVkUHJv cGVydGllcy5pbnNlcnQocHJvcGVydHlJbmRleCk7CisgICAgIH0KKyAKKyAgICAgLy8gYWxzbyBh bHdheXMgY29ubmVjdCB0byBkZXN0cm95ZWQgc2lnbmFsCistICAgIHNpZ25hbEhhbmRsZXIuY29u bmVjdFRvKG9iamVjdCwgc19kZXN0cm95ZWRTaWduYWxJbmRleCk7CisrICAgIHNpZ25hbEhhbmRs ZXItPmNvbm5lY3RUbyhvYmplY3QsIHNfZGVzdHJveWVkU2lnbmFsSW5kZXgpOworIH0KKyAKKyB2 b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpCisg eworLSAgICBpZiAoYmxvY2tVcGRhdGVzIHx8ICFjbGllbnRJc0lkbGUgfHwgcGVuZGluZ1Byb3Bl cnR5VXBkYXRlcy5pc0VtcHR5KCkpIHsKKysgICAgaWYgKGJsb2NrVXBkYXRlcykgeworICAgICAg ICAgcmV0dXJuOworICAgICB9CisgCitAQCAtNDE1LDE4ICs0MTQsMTkgQEAgdm9pZCBRTWV0YU9i amVjdFB1Ymxpc2hlcjo6c2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKQorIAorICAgICAvLyBk YXRhIGRvZXMgbm90IGNvbnRhaW4gc3BlY2lmaWMgdXBkYXRlcworICAgICBpZiAoIWRhdGEuaXNF bXB0eSgpKSB7CistICAgICAgICBzZXRDbGllbnRJc0lkbGUoZmFsc2UpOworLQorICAgICAgICAg bWVzc2FnZVtLRVlfREFUQV0gPSBkYXRhOworLSAgICAgICAgYnJvYWRjYXN0TWVzc2FnZShtZXNz YWdlKTsKKysgICAgICAgIGVucXVldWVCcm9hZGNhc3RNZXNzYWdlKG1lc3NhZ2UpOworICAgICB9 CisgCisgICAgIC8vIHNlbmQgZXZlcnkgcHJvcGVydHkgdXBkYXRlIHdoaWNoIGlzIG5vdCBzdXBw b3NlZCB0byBiZSBicm9hZGNhc3RlZAorICAgICBjb25zdCBRSGFzaDxRV2ViQ2hhbm5lbEFic3Ry YWN0VHJhbnNwb3J0KiwgUUpzb25BcnJheT46OmNvbnN0X2l0ZXJhdG9yIHN1ZW5kID0gc3BlY2lm aWNVcGRhdGVzLmNvbnN0RW5kKCk7CisgICAgIGZvciAoUUhhc2g8UVdlYkNoYW5uZWxBYnN0cmFj dFRyYW5zcG9ydCosIFFKc29uQXJyYXk+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNwZWNpZmljVXBk YXRlcy5jb25zdEJlZ2luKCk7IGl0ICE9IHN1ZW5kOyArK2l0KSB7CisgICAgICAgICBtZXNzYWdl W0tFWV9EQVRBXSA9IGl0LnZhbHVlKCk7CistICAgICAgICBpdC5rZXkoKS0+c2VuZE1lc3NhZ2Uo bWVzc2FnZSk7CisrICAgICAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdlLCBpdC5rZXkoKSk7Cisg ICAgIH0KKysKKysgICAgZm9yIChhdXRvIHN0YXRlID0gdHJhbnNwb3J0U3RhdGUuYmVnaW4oKTsg c3RhdGUgIT0gdHJhbnNwb3J0U3RhdGUuZW5kKCk7ICsrc3RhdGUpCisrICAgICAgICBzZW5kRW5x dWV1ZWRQcm9wZXJ0eVVwZGF0ZXMoc3RhdGUua2V5KCkpOworIH0KKyAKKyBRVmFyaWFudCBRTWV0 YU9iamVjdFB1Ymxpc2hlcjo6aW52b2tlTWV0aG9kKFFPYmplY3QgKmNvbnN0IG9iamVjdCwgY29u c3QgUU1ldGFNZXRob2QgJm1ldGhvZCwKK0BAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBRTWV0YU9i amVjdFB1Ymxpc2hlcjo6c2lnbmFsRW1pdHRlZChjb25zdCBRT2JqZWN0ICpvYmplY3QsIGNvbnN0 IGludCBzaWduYWwKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHBlbmRpbmdQ cm9wZXJ0eVVwZGF0ZXNbb2JqZWN0XVtzaWduYWxJbmRleF0gPSBhcmd1bWVudHM7CistICAgICAg ICBpZiAoY2xpZW50SXNJZGxlICYmICFibG9ja1VwZGF0ZXMgJiYgIXRpbWVyLmlzQWN0aXZlKCkp IHsKKysgICAgICAgIGlmICghYmxvY2tVcGRhdGVzICYmICF0aW1lci5pc0FjdGl2ZSgpKSB7Cisg ICAgICAgICAgICAgdGltZXIuc3RhcnQoUFJPUEVSVFlfVVBEQVRFX0lOVEVSVkFMLCB0aGlzKTsK KyAgICAgICAgIH0KKyAgICAgfQorQEAgLTU5MCw3ICs1OTAsNyBAQCB2b2lkIFFNZXRhT2JqZWN0 UHVibGlzaGVyOjpvYmplY3REZXN0cm95ZWQoY29uc3QgUU9iamVjdCAqb2JqZWN0KQorICAgICAv LyBvbmx5IHJlbW92ZSBmcm9tIGhhbmRsZXIgd2hlbiB3ZSBpbml0aWFsaXplZCB0aGUgcHJvcGVy dHkgdXBkYXRlcworICAgICAvLyBjZjogaHR0cHM6Ly9idWdyZXBvcnRzLnF0LmlvL2Jyb3dzZS9R VEJVRy02MDI1MAorICAgICBpZiAocHJvcGVydHlVcGRhdGVzSW5pdGlhbGl6ZWQpIHsKKy0gICAg ICAgIHNpZ25hbEhhbmRsZXIucmVtb3ZlKG9iamVjdCk7CisrICAgICAgICBzaWduYWxIYW5kbGVy Rm9yKG9iamVjdCktPnJlbW92ZShvYmplY3QpOworICAgICAgICAgc2lnbmFsVG9Qcm9wZXJ0eU1h cC5yZW1vdmUob2JqZWN0KTsKKyAgICAgfQorICAgICBwZW5kaW5nUHJvcGVydHlVcGRhdGVzLnJl bW92ZShvYmplY3QpOworQEAgLTg1Miw2ICs4NTIsNTIgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxp c2hlcjo6YnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSkgY29uc3QK KyAgICAgfQorIH0KKyAKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjplbnF1ZXVlQnJvYWRj YXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSkKKyt7CisrICAgIGlmICh3ZWJD aGFubmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cy5pc0VtcHR5KCkpIHsKKysgICAgICAgIHFXYXJu aW5nKCJRV2ViQ2hhbm5lbCBpcyBub3QgY29ubmVjdGVkIHRvIGFueSB0cmFuc3BvcnRzLCBjYW5u b3Qgc2VuZCBtZXNzYWdlOiAlcyIsCisrICAgICAgICAgICAgICAgICBRSnNvbkRvY3VtZW50KG1l c3NhZ2UpLnRvSnNvbigpLmNvbnN0RGF0YSgpKTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQor KworKyAgICBmb3IgKGF1dG8gKnRyYW5zcG9ydCA6IHdlYkNoYW5uZWwtPmRfZnVuYygpLT50cmFu c3BvcnRzKSB7CisrICAgICAgICBhdXRvICZzdGF0ZSA9IHRyYW5zcG9ydFN0YXRlW3RyYW5zcG9y dF07CisrICAgICAgICBzdGF0ZS5xdWV1ZWRNZXNzYWdlcy5hcHBlbmQobWVzc2FnZSk7CisrICAg IH0KKyt9CisrCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6ZW5xdWV1ZU1lc3NhZ2UoY29u c3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorK3sK KysgICAgYXV0byAmc3RhdGUgPSB0cmFuc3BvcnRTdGF0ZVt0cmFuc3BvcnRdOworKyAgICBzdGF0 ZS5xdWV1ZWRNZXNzYWdlcy5hcHBlbmQobWVzc2FnZSk7CisrfQorKworK3ZvaWQgUU1ldGFPYmpl Y3RQdWJsaXNoZXI6OnNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyhRV2ViQ2hhbm5lbEFic3Ry YWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisreworKyAgICBhdXRvIGZvdW5kID0gdHJhbnNwb3J0 U3RhdGUuZmluZCh0cmFuc3BvcnQpOworKyAgICBpZiAoZm91bmQgIT0gdHJhbnNwb3J0U3RhdGUu ZW5kKCkgJiYgZm91bmQudmFsdWUoKS5jbGllbnRJc0lkbGUKKysgICAgICAgICYmICFmb3VuZC52 YWx1ZSgpLnF1ZXVlZE1lc3NhZ2VzLmlzRW1wdHkoKSkgeworKworKyAgICAgICAgLy8gSWYgdGhl IGNsaWVudCBpcyBjb25uZWN0ZWQgd2l0aCBhbiBpbi1wcm9jZXNzIHRyYW5zcG9ydCwgaXQgY2Fu CisrICAgICAgICAvLyBoYXBwZW4gdGhhdCBhIG1lc3NhZ2UgdHJpZ2dlcnMgYSBzdWJzZXF1ZW50 IHByb3BlcnR5IGNoYW5nZS4gSW4KKysgICAgICAgIC8vIHRoYXQgY2FzZSwgd2UgbmVlZCB0byBl bnN1cmUgdGhhdCB0aGUgcXVldWVkIG1lc3NhZ2VzIGhhdmUgYWxyZWFkeQorKyAgICAgICAgLy8g YmVlbiBjbGVhcmVkOyBvdGhlcndpc2UgdGhlIHJlY3Vyc2l2ZSBjYWxsIHdpbGwgc2VuZCBldmVy eXRoaWcgYWdhaW4uCisrICAgICAgICAvLyBDYXNlIGluIHBvaW50OiBUaGUgcW1sd2ViY2hhbm5l bCB0ZXN0cyBmYWlsIGlmIHdlIGRvbid0IGNsZWFyIHRoZQorKyAgICAgICAgLy8gcXVldWVkIG1l c3NhZ2VzIGJlZm9yZSBzZW5kaW5nIHRoZW0gb3V0LgorKyAgICAgICAgLy8gRm9yIHRoYXQgc2Ft ZSByZWFzb24gc2V0IHRoZSBjbGllbnQgdG8gImJ1c3kiIChha2Egbm9uLWlkbGUpIGp1c3QKKysg ICAgICAgIC8vIHJpZ2h0IGJlZm9yZSBzZW5kaW5nIG91dCB0aGUgbWVzc2FnZXM7IG90aGVyd2lz ZSBhIHBvdGVudGlhbAorKyAgICAgICAgLy8gIklkbGUiIHR5cGUgbWVzc2FnZSB3aWxsIG5vdCBj b3JyZWN0bHkgcmVzdG9yZSB0aGUgSWRsZSBzdGF0ZS4KKysgICAgICAgIGNvbnN0IGF1dG8gbWVz c2FnZXMgPSBzdGQ6Om1vdmUoZm91bmQudmFsdWUoKS5xdWV1ZWRNZXNzYWdlcyk7CisrICAgICAg ICBRX0FTU0VSVChmb3VuZC52YWx1ZSgpLnF1ZXVlZE1lc3NhZ2VzLmlzRW1wdHkoKSk7CisrICAg ICAgICBmb3VuZC52YWx1ZSgpLmNsaWVudElzSWRsZSA9IGZhbHNlOworKworKyAgICAgICAgZm9y IChjb25zdCBhdXRvICZtZXNzYWdlIDogbWVzc2FnZXMpIHsKKysgICAgICAgICAgICB0cmFuc3Bv cnQtPnNlbmRNZXNzYWdlKG1lc3NhZ2UpOworKyAgICAgICAgfQorKyAgICB9CisrfQorKworIHZv aWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmhhbmRsZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3Qg Jm1lc3NhZ2UsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKKyB7Cisg ICAgIGlmICghd2ViQ2hhbm5lbC0+ZF9mdW5jKCktPnRyYW5zcG9ydHMuY29udGFpbnModHJhbnNw b3J0KSkgeworQEAgLTg2Niw3ICs5MTIsNyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpo YW5kbGVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLCBRV2ViQ2hhbm5lbAorIAor ICAgICBjb25zdCBNZXNzYWdlVHlwZSB0eXBlID0gdG9UeXBlKG1lc3NhZ2UudmFsdWUoS0VZX1RZ UEUpKTsKKyAgICAgaWYgKHR5cGUgPT0gVHlwZUlkbGUpIHsKKy0gICAgICAgIHNldENsaWVudElz SWRsZSh0cnVlKTsKKysgICAgICAgIHNldENsaWVudElzSWRsZSh0cnVlLCB0cmFuc3BvcnQpOwor ICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlwZUluaXQpIHsKKyAgICAgICAgIGlmICghbWVzc2Fn ZS5jb250YWlucyhLRVlfSUQpKSB7CisgICAgICAgICAgICAgcVdhcm5pbmcoIkpTT04gbWVzc2Fn ZSBvYmplY3QgaXMgbWlzc2luZyB0aGUgaWQgcHJvcGVydHk6ICVzIiwKK0BAIC05MTMsOSArOTU5 LDkgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aGFuZGxlTWVzc2FnZShjb25zdCBRSnNv bk9iamVjdCAmbWVzc2FnZSwgUVdlYkNoYW5uZWwKKyAgICAgICAgICAgICAgICAgcmV0dXJuOwor ICAgICAgICAgICAgIHRyYW5zcG9ydC0+c2VuZE1lc3NhZ2UoY3JlYXRlUmVzcG9uc2UobWVzc2Fn ZS52YWx1ZShLRVlfSUQpLCB3cmFwUmVzdWx0KHJlc3VsdCwgdHJhbnNwb3J0KSkpOworICAgICAg ICAgfSBlbHNlIGlmICh0eXBlID09IFR5cGVDb25uZWN0VG9TaWduYWwpIHsKKy0gICAgICAgICAg ICBzaWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05B TCkudG9JbnQoLTEpKTsKKysgICAgICAgICAgICBzaWduYWxIYW5kbGVyRm9yKG9iamVjdCktPmNv bm5lY3RUbyhvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQoLTEpKTsKKyAg ICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBlRGlzY29ubmVjdEZyb21TaWduYWwpIHsKKy0g ICAgICAgICAgICBzaWduYWxIYW5kbGVyLmRpc2Nvbm5lY3RGcm9tKG9iamVjdCwgbWVzc2FnZS52 YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOworKyAgICAgICAgICAgIHNpZ25hbEhhbmRsZXJG b3Iob2JqZWN0KS0+ZGlzY29ubmVjdEZyb20ob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9TSUdO QUwpLnRvSW50KC0xKSk7CisgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlwZVNldFByb3Bl cnR5KSB7CisgICAgICAgICAgICAgc2V0UHJvcGVydHkob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtF WV9QUk9QRVJUWSkudG9JbnQoLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Uu dmFsdWUoS0VZX1ZBTFVFKSk7CitAQCAtOTMxLDYgKzk3Nyw3IEBAIHZvaWQgUU1ldGFPYmplY3RQ dWJsaXNoZXI6OnNldEJsb2NrVXBkYXRlcyhib29sIGJsb2NrKQorICAgICBibG9ja1VwZGF0ZXMg PSBibG9jazsKKyAKKyAgICAgaWYgKCFibG9ja1VwZGF0ZXMpIHsKKysgICAgICAgIHRpbWVyLnN0 YXJ0KFBST1BFUlRZX1VQREFURV9JTlRFUlZBTCwgdGhpcyk7CisgICAgICAgICBzZW5kUGVuZGlu Z1Byb3BlcnR5VXBkYXRlcygpOworICAgICB9IGVsc2UgaWYgKHRpbWVyLmlzQWN0aXZlKCkpIHsK KyAgICAgICAgIHRpbWVyLnN0b3AoKTsKK0BAIC05NDgsNCArOTk1LDE1IEBAIHZvaWQgUU1ldGFP YmplY3RQdWJsaXNoZXI6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQgKmV2ZW50KQorICAgICB9Cisg fQorIAorK1NpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNoZXI+ICpRTWV0YU9iamVjdFB1 Ymxpc2hlcjo6c2lnbmFsSGFuZGxlckZvcihjb25zdCBRT2JqZWN0ICpvYmplY3QpCisreworKyAg ICBhdXRvIHRocmVhZCA9IG9iamVjdC0+dGhyZWFkKCk7CisrICAgIGF1dG8gaXQgPSBzaWduYWxI YW5kbGVycy5maW5kKHRocmVhZCk7CisrICAgIGlmIChpdCA9PSBzaWduYWxIYW5kbGVycy5lbmQo KSkgeworKyAgICAgICAgaXQgPSBzaWduYWxIYW5kbGVycy5lbXBsYWNlKHRocmVhZCwgdGhpcyku Zmlyc3Q7CisrICAgICAgICBpdC0+c2Vjb25kLm1vdmVUb1RocmVhZCh0aHJlYWQpOworKyAgICB9 CisrICAgIHJldHVybiAmaXQtPnNlY29uZDsKKyt9CisrCisgUVRfRU5EX05BTUVTUEFDRQorZGlm ZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hl cl9wLmggYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXJf cC5oCitpbmRleCBiYmQ5ODc1Li40NzEzZWYxIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Ny Yy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaAorKysrIGIvcXR3ZWJjaGFubmVs L3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaAorQEAgLTU5LDYgKzU5LDkg QEAKKyAjaW5jbHVkZSA8UUJhc2ljVGltZXI+CisgI2luY2x1ZGUgPFFQb2ludGVyPgorICNpbmNs dWRlIDxRSnNvbk9iamVjdD4KKysjaW5jbHVkZSA8UVF1ZXVlPgorKworKyNpbmNsdWRlIDx1bm9y ZGVyZWRfbWFwPgorIAorICNpbmNsdWRlICJxd2ViY2hhbm5lbGdsb2JhbC5oIgorIAorQEAgLTEw OSwxNyArMTEyLDM2IEBAIHB1YmxpYzoKKyAgICAgICovCisgICAgIHZvaWQgYnJvYWRjYXN0TWVz c2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSkgY29uc3Q7CisgCisrICAgIC8qKgorKyAg ICAgKiBFbnF1ZXVlIHRoZSBnaXZlbiBAcCBtZXNzYWdlIHRvIGFsbCBrbm93biB0cmFuc3BvcnRz LgorKyAgICAgKi8KKysgICAgdm9pZCBlbnF1ZXVlQnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNv bk9iamVjdCAmbWVzc2FnZSk7CisrCisrICAgIC8qKgorKyAgICAgKiBFbnF1ZXVlIHRoZSBnaXZl biBAcCBtZXNzYWdlIHRvIEBwIHRyYW5zcG9ydC4KKysgICAgICovCisrICAgIHZvaWQgZW5xdWV1 ZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsQWJzdHJhY3RU cmFuc3BvcnQgKnRyYW5zcG9ydCk7CisrCisrICAgIC8qKgorKyAgICAgKiBJZiBjbGllbnQgZm9y IGdpdmVuIEBwIHRyYW5zcG9ydCBpcyBpZGxlLCBzZW5kIHF1ZXVlZCBtZXNzYWdlZCB0byBAcCB0 cmFuc3BvcnQgYW5kIHRoZW4gbWFyaworKyAgICAgKiB0aGUgY2xpZW50IGFzIG5vdCBpZGxlLgor KyAgICAgKi8KKysgICAgdm9pZCBzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVwZGF0ZXMoUVdlYkNoYW5u ZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKysKKyAgICAgLyoqCisgICAgICAqIFNl cmlhbGl6ZSB0aGUgUU1ldGFPYmplY3Qgb2YgQHAgb2JqZWN0IGFuZCByZXR1cm4gaXQgaW4gSlNP TiBmb3JtLgorICAgICAgKi8KKyAgICAgUUpzb25PYmplY3QgY2xhc3NJbmZvRm9yT2JqZWN0KGNv bnN0IFFPYmplY3QgKm9iamVjdCwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNw b3J0KTsKKyAKKyAgICAgLyoqCistICAgICAqIFNldCB0aGUgY2xpZW50IHRvIGlkbGUgb3IgYnVz eSwgYmFzZWQgb24gdGhlIHZhbHVlIG9mIEBwIGlzSWRsZS4KKy0gICAgICoKKy0gICAgICogV2hl biB0aGUgdmFsdWUgY2hhbmdlZCwgc3RhcnQvc3RvcCB0aGUgcHJvcGVydHkgdXBkYXRlIHRpbWVy IGFjY29yZGluZ2x5LgorKyAgICAgKiBTZXQgdGhlIGNsaWVudCB0byBpZGxlIG9yIGJ1c3kgZm9y IGEgc2luZ2xlIEBwIHRyYW5zcG9ydCwgYmFzZWQgb24gdGhlIHZhbHVlIG9mIEBwIGlzSWRsZS4K KysgICAgICovCisrICAgIHZvaWQgc2V0Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxlLCBRV2ViQ2hh bm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworKworKyAgICAvKioKKysgICAgICog Q2hlY2sgdGhhdCBjbGllbnQgaXMgaWRsZSBmb3IgQHAgdHJhbnNwb3J0LgorICAgICAgKi8KKy0g ICAgdm9pZCBzZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lkbGUpOworKyAgICBib29sIGlzQ2xpZW50 SWRsZShRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworIAorICAgICAv KioKKyAgICAgICogSW5pdGlhbGl6ZSBjbGllbnRzIGJ5IHNlbmRpbmcgdGhlbSB0aGUgY2xhc3Mg aW5mb3JtYXRpb24gb2YgdGhlIHJlZ2lzdGVyZWQgb2JqZWN0cy4KK0BAIC0yNzIsMTAgKzI5NCwx OCBAQCBwcml2YXRlOgorICAgICBmcmllbmQgY2xhc3MgVGVzdFdlYkNoYW5uZWw7CisgCisgICAg IFFXZWJDaGFubmVsICp3ZWJDaGFubmVsOworLSAgICBTaWduYWxIYW5kbGVyPFFNZXRhT2JqZWN0 UHVibGlzaGVyPiBzaWduYWxIYW5kbGVyOworKyAgICBzdGQ6OnVub3JkZXJlZF9tYXA8Y29uc3Qg UVRocmVhZCosIFNpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNoZXI+PiBzaWduYWxIYW5k bGVyczsKKysgICAgU2lnbmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4gKnNpZ25hbEhh bmRsZXJGb3IoY29uc3QgUU9iamVjdCAqb2JqZWN0KTsKKyAKKy0gICAgLy8gdHJ1ZSB3aGVuIHRo ZSBjbGllbnQgaXMgaWRsZSwgZmFsc2Ugb3RoZXJ3aXNlCistICAgIGJvb2wgY2xpZW50SXNJZGxl OworKyAgICBzdHJ1Y3QgVHJhbnNwb3J0U3RhdGUKKysgICAgeworKyAgICAgICAgVHJhbnNwb3J0 U3RhdGUoKSA6IGNsaWVudElzSWRsZShmYWxzZSkgeyB9CisrICAgICAgICAvLyB0cnVlIHdoZW4g dGhlIGNsaWVudCBpcyBpZGxlLCBmYWxzZSBvdGhlcndpc2UKKysgICAgICAgIGJvb2wgY2xpZW50 SXNJZGxlOworKyAgICAgICAgLy8gbWVzc2FnZXMgdG8gc2VuZAorKyAgICAgICAgUVF1ZXVlPFFK c29uT2JqZWN0PiBxdWV1ZWRNZXNzYWdlczsKKysgICAgfTsKKysgICAgUUhhc2g8UVdlYkNoYW5u ZWxBYnN0cmFjdFRyYW5zcG9ydCAqLCBUcmFuc3BvcnRTdGF0ZT4gdHJhbnNwb3J0U3RhdGU7Cisg CisgICAgIC8vIHRydWUgd2hlbiBubyBwcm9wZXJ0eSB1cGRhdGVzIHNob3VsZCBiZSBzZW50LCBm YWxzZSBvdGhlcndpc2UKKyAgICAgYm9vbCBibG9ja1VwZGF0ZXM7CitkaWZmIC0tZ2l0IGEvcXR3 ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5oIGIvcXR3ZWJjaGFubmVs L3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5oCitpbmRleCAyN2FmYWRiLi5kNzczNzNj IDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJf cC5oCisrKysgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvc2lnbmFsaGFuZGxlcl9wLmgK K0BAIC01Niw2ICs1Niw3IEBACisgI2luY2x1ZGUgPFFWZWN0b3I+CisgI2luY2x1ZGUgPFFNZXRh TWV0aG9kPgorICNpbmNsdWRlIDxRRGVidWc+CisrI2luY2x1ZGUgPFFUaHJlYWQ+CisgCisgUVRf QkVHSU5fTkFNRVNQQUNFCisgCitAQCAtNzEsNiArNzIsNyBAQCBzdGF0aWMgY29uc3QgaW50IHNf ZGVzdHJveWVkU2lnbmFsSW5kZXggPSBRT2JqZWN0OjpzdGF0aWNNZXRhT2JqZWN0LmluZGV4T2ZN ZXRobworIHRlbXBsYXRlPGNsYXNzIFJlY2VpdmVyPgorIGNsYXNzIFNpZ25hbEhhbmRsZXIgOiBw dWJsaWMgUU9iamVjdAorIHsKKysgICAgUV9ESVNBQkxFX0NPUFkoU2lnbmFsSGFuZGxlcikKKyBw dWJsaWM6CisgICAgIFNpZ25hbEhhbmRsZXIoUmVjZWl2ZXIgKnJlY2VpdmVyLCBRT2JqZWN0ICpw YXJlbnQgPSAwKTsKKyAKK0BAIC0yNjgsNiArMjcwLDcgQEAgaW50IFNpZ25hbEhhbmRsZXI8UmVj ZWl2ZXI+OjpxdF9tZXRhY2FsbChRTWV0YU9iamVjdDo6Q2FsbCBjYWxsLCBpbnQgbWV0aG9kSWQs IHYKKyAgICAgaWYgKGNhbGwgPT0gUU1ldGFPYmplY3Q6Okludm9rZU1ldGFNZXRob2QpIHsKKyAg ICAgICAgIGNvbnN0IFFPYmplY3QgKm9iamVjdCA9IHNlbmRlcigpOworICAgICAgICAgUV9BU1NF UlQob2JqZWN0KTsKKysgICAgICAgIFFfQVNTRVJUKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSA9 PSBvYmplY3QtPnRocmVhZCgpKTsKKyAgICAgICAgIFFfQVNTRVJUKHNlbmRlclNpZ25hbEluZGV4 KCkgPT0gbWV0aG9kSWQpOworICAgICAgICAgUV9BU1NFUlQobV9jb25uZWN0aW9uc0NvdW50ZXIu Y29udGFpbnMob2JqZWN0KSk7CisgICAgICAgICBRX0FTU0VSVChtX2Nvbm5lY3Rpb25zQ291bnRl ci52YWx1ZShvYmplY3QpLmNvbnRhaW5zKG1ldGhvZElkKSk7CitkaWZmIC0tZ2l0IGEvcXR3ZWJj aGFubmVsL3Rlc3RzL2F1dG8vcW1sL3Rlc3R3ZWJjaGFubmVsLmNwcCBiL3F0d2ViY2hhbm5lbC90 ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAKK2luZGV4IDk4OTE2ODcuLjNjYTgxYzIg MTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdlYmNoYW5uZWwu Y3BwCisrKysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdlYmNoYW5uZWwuY3Bw CitAQCAtNDYsNyArNDYsMTEgQEAgVGVzdFdlYkNoYW5uZWw6On5UZXN0V2ViQ2hhbm5lbCgpCisg CisgYm9vbCBUZXN0V2ViQ2hhbm5lbDo6Y2xpZW50SXNJZGxlKCkgY29uc3QKKyB7CistICAgIHJl dHVybiBRV2ViQ2hhbm5lbDo6ZF9mdW5jKCktPnB1Ymxpc2hlci0+Y2xpZW50SXNJZGxlOworKyAg ICBmb3IgKGF1dG8gKnRyYW5zcG9ydCA6IFFXZWJDaGFubmVsOjpkX2Z1bmMoKS0+dHJhbnNwb3J0 cykgeworKyAgICAgICAgaWYgKFFXZWJDaGFubmVsOjpkX2Z1bmMoKS0+cHVibGlzaGVyLT5pc0Ns aWVudElkbGUodHJhbnNwb3J0KSkKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgfQor KyAgICByZXR1cm4gZmFsc2U7CisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQg YS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmNwcCBi L3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwCitp bmRleCAxODFkYTllLi4zN2Y5ODlhIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1 dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAKKysrKyBiL3F0d2ViY2hhbm5lbC90ZXN0 cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwCitAQCAtNzg1LDcgKzc4NSw3IEBA IHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RUcmFuc3BvcnRXcmFwT2JqZWN0UHJvcGVydGllcygp CisgICAgIER1bW15VHJhbnNwb3J0ICpkdW1teVRyYW5zcG9ydCA9IG5ldyBEdW1teVRyYW5zcG9y dCh0aGlzKTsKKyAgICAgY2hhbm5lbC5jb25uZWN0VG8oZHVtbXlUcmFuc3BvcnQpOworICAgICBj aGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPmluaXRpYWxpemVDbGllbnQoZHVtbXlUcmFuc3Bv cnQpOworLSAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0 cnVlKTsKKysgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUo dHJ1ZSwgZHVtbXlUcmFuc3BvcnQpOworIAorICAgICBRQ09NUEFSRShjaGFubmVsLmRfZnVuYygp LT5wdWJsaXNoZXItPnRyYW5zcG9ydGVkV3JhcHBlZE9iamVjdHMuc2l6ZSgpLCAwKTsKKyAKK0BA IC05NDMsOCArOTQzLDYgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdEluZmluaXRlUmVjdXJz aW9uKCkKKyAKKyB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0QXN5bmNPYmplY3QoKQorIHsKKy0g ICAgUVNLSVAoIlRoaXMgdGVzdCBpcyBicm9rZW4uIFNlZSBRVEJVRy04MDcyOSIpOworLQorICAg ICBRV2ViQ2hhbm5lbCBjaGFubmVsOworICAgICBjaGFubmVsLmNvbm5lY3RUbyhtX2R1bW15VHJh bnNwb3J0KTsKKyAKK0BAIC05OTAsNiArOTg4LDUwIEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRl c3RBc3luY09iamVjdCgpCisgICAgIHRocmVhZC53YWl0KCk7CisgfQorIAorK3ZvaWQgVGVzdFdl YkNoYW5uZWw6OnRlc3RQcm9wZXJ0eU11bHRpcGxlVHJhbnNwb3J0cygpCisreworKyAgICBEdW1t eVRyYW5zcG9ydCB0cmFuc3BvcnQxOworKyAgICBEdW1teVRyYW5zcG9ydCB0cmFuc3BvcnQyOwor KworKyAgICBRV2ViQ2hhbm5lbCBjaGFubmVsOworKyAgICBRTWV0YU9iamVjdFB1Ymxpc2hlciAq cHVibGlzaGVyID0gY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyOworKworKyAgICBUZXN0T2Jq ZWN0IHRlc3RPYmo7CisrICAgIHRlc3RPYmouc2V0T2JqZWN0TmFtZSgidGVzdE9iamVjdCIpOwor KyAgICBjaGFubmVsLnJlZ2lzdGVyT2JqZWN0KHRlc3RPYmoub2JqZWN0TmFtZSgpLCAmdGVzdE9i aik7CisrICAgIGNoYW5uZWwuY29ubmVjdFRvKCZ0cmFuc3BvcnQxKTsKKysgICAgY2hhbm5lbC5j b25uZWN0VG8oJnRyYW5zcG9ydDIpOworKworKyAgICB0ZXN0T2JqLnNldFByb3AoIkhlbGxvIik7 CisrCisrICAgIHB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudCgmdHJhbnNwb3J0MSk7CisrICAg IHB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudCgmdHJhbnNwb3J0Mik7CisrICAgIHB1Ymxpc2hl ci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQxKTsKKysgICAgUUNPTVBBUkUocHVi bGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCB0cnVlKTsKKysgICAgUUNPTVBBUkUo cHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCBmYWxzZSk7CisrICAgIFFWRVJJ RlkodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5pc0VtcHR5KCkpOworKyAgICBRVkVSSUZZKHRy YW5zcG9ydDIubWVzc2FnZXNTZW50KCkuaXNFbXB0eSgpKTsKKysKKysgICAgdGVzdE9iai5zZXRQ cm9wKCJXb3JsZCIpOworKyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDEu bWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAxdSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHRyYW5zcG9y dDIubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAwdSk7CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50 SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQyKTsKKysgICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9V VCh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMXUsIDIwMDApOworKyAgICBRQ09N UEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MSksIGZhbHNlKTsKKysgICAg UUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCBmYWxzZSk7Cisr CisrICAgIHRlc3RPYmouc2V0UHJvcCgiISEhIik7CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50 SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQyKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0Ns aWVudElkbGUoJnRyYW5zcG9ydDIpLCB0cnVlKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5p c0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCBmYWxzZSk7CisrICAgIFFUUllfQ09NUEFSRV9XSVRI X1RJTUVPVVQodHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDJ1LCAyMDAwKTsKKysg ICAgUUNPTVBBUkUodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDF1KTsKKysgICAg cHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgJnRyYW5zcG9ydDEpOworKyAgICBRVFJZ X0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAy dSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3Bv cnQxKSwgZmFsc2UpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJh bnNwb3J0MiksIGZhbHNlKTsKKyt9CisrCisgY2xhc3MgRnVuY3Rpb25XcmFwcGVyIDogcHVibGlj IFFPYmplY3QKKyB7CisgICAgIFFfT0JKRUNUCitAQCAtMTA4Miw3ICsxMTI0LDcgQEAgdm9pZCBU ZXN0V2ViQ2hhbm5lbDo6YmVuY2hJbml0aWFsaXplQ2xpZW50cygpCisgCisgICAgICAgICBwdWJs aXNoZXItPnByb3BlcnR5VXBkYXRlc0luaXRpYWxpemVkID0gZmFsc2U7CisgICAgICAgICBwdWJs aXNoZXItPnNpZ25hbFRvUHJvcGVydHlNYXAuY2xlYXIoKTsKKy0gICAgICAgIHB1Ymxpc2hlci0+ c2lnbmFsSGFuZGxlci5jbGVhcigpOworKyAgICAgICAgcHVibGlzaGVyLT5zaWduYWxIYW5kbGVy cy5jbGVhcigpOworICAgICB9CisgfQorIAorQEAgLTExMDcsNyArMTE0OSw3IEBAIHZvaWQgVGVz dFdlYkNoYW5uZWw6OmJlbmNoUHJvcGVydHlVcGRhdGVzKCkKKyAgICAgICAgICAgICBvYmotPmNo YW5nZSgpOworICAgICAgICAgfQorIAorLSAgICAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlz aGVyLT5jbGllbnRJc0lkbGUgPSB0cnVlOworKyAgICAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVi bGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgbV9kdW1teVRyYW5zcG9ydCk7CisgICAgICAg ICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNlbmRQZW5kaW5nUHJvcGVydHlVcGRhdGVz KCk7CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2Vi Y2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hh bm5lbC90c3Rfd2ViY2hhbm5lbC5oCitpbmRleCBlYWUyMWY0Li5kZDRlNjkwIDEwMDY0NAorLS0t IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oCisr KysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmgK K0BAIC0zNDgsNiArMzQ4LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB0ZXN0SnNvblRv VmFyaWFudCgpOworICAgICB2b2lkIHRlc3RJbmZpbml0ZVJlY3Vyc2lvbigpOworICAgICB2b2lk IHRlc3RBc3luY09iamVjdCgpOworKyAgICB2b2lkIHRlc3RQcm9wZXJ0eU11bHRpcGxlVHJhbnNw b3J0cygpOworICAgICB2b2lkIHRlc3REZWxldGlvbkR1cmluZ01ldGhvZEludm9jYXRpb25fZGF0 YSgpOworICAgICB2b2lkIHRlc3REZWxldGlvbkR1cmluZ01ldGhvZEludm9jYXRpb24oKTsKKyAK K1N1Ym1vZHVsZSBxdHdlYmVuZ2luZSBmMzI4MDU0ZC4uLjM4ZTBkZjZjIChjb21taXRzIG5vdCBw cmVzZW50KQorU3VibW9kdWxlIHF0d2Vic29ja2V0cyA2NTg1MDk1NC4uNjNmYjhkYTE6CitkaWZm IC0tZ2l0IGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRkYXRhcHJvY2Vz c29yLmNwcCBiL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0ZGF0YXByb2Nl c3Nvci5jcHAKK2luZGV4IDJhZmZkZDUuLjk1ZjExOTQgMTAwNjQ0CistLS0gYS9xdHdlYnNvY2tl dHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwCisrKysgYi9xdHdl YnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwCitAQCAt MjczLDYgKzI3Myw3IEBAIHZvaWQgUVdlYlNvY2tldERhdGFQcm9jZXNzb3I6OmNsZWFyKCkKKyAg ICAgaWYgKCFtX3BDb252ZXJ0ZXJTdGF0ZSkKKyAgICAgICAgIG1fcENvbnZlcnRlclN0YXRlID0g bmV3IFFUZXh0Q29kZWM6OkNvbnZlcnRlclN0YXRlKFFUZXh0Q29kZWM6OkNvbnZlcnRJbnZhbGlk VG9OdWxsIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFUZXh0Q29kZWM6Oklnbm9yZUhlYWRlcik7CisrICAgIGZyYW1lLmNsZWFy KCk7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0 cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwIGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3 ZWJzb2NrZXRwcm90b2NvbC5jcHAKK2luZGV4IGRmODdhOTMuLmQwNDY1ZjEgMTAwNjQ0CistLS0g YS9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29sLmNwcAorKysr IGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRwcm90b2NvbC5jcHAKK0BA IC0yMTAsNyArMjEwLDcgQEAgdm9pZCBRV2ViU29ja2V0UHJvdG9jb2w6Om1hc2soY2hhciAqcGF5 bG9hZCwgcXVpbnQ2NCBzaXplLCBxdWludDMyIG1hc2tpbmdLZXkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHF1aW50OCgobWFza2luZ0tleSAmIDB4MDAwMEZGMDB1KSA+PiA4KSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpbnQ4KChtYXNraW5nS2V5ICYgMHgwMDAwMDBG RnUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKy0gICAgaW50IGkgPSAwOworKyAg ICBxdWludDY0IGkgPSAwOworICAgICB3aGlsZSAoc2l6ZS0tID4gMCkKKyAgICAgICAgICpwYXls b2FkKysgXj0gbWFza1tpKysgJSA0XTsKKyB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS90ZW1w bGF0ZSBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCmluZGV4IGE3OWQyNWU2OWRhOC4uNmRkZGNlN2Yz ZTQ2IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS90 ZW1wbGF0ZQpAQCAtMiwxMSArMiwxMSBAQAogIwogIyByZXZidW1wIGxpYnF0eGRnIGFmdGVyIGJ1 bXBpbmcgcGF0Y2ggdmVyc2lvbgogcGtnbmFtZT1xdDUKLXZlcnNpb249NS4xNS43KzIwMjIxMTE5 Cit2ZXJzaW9uPTUuMTUuOAorcmV2aXNpb249MQorYnVpbGRfc3R5bGU9bWV0YQogIyBjb21taXQg ZjhjOWZiMzA0YmMzZTUzYjNhYTA3Zjk2MmNkNzRlOTE2MGRlY2NjYwogIyBiYXNlIHJlcG86IGh0 dHBzOi8vaW52ZW50LmtkZS5vcmcvcXQvcXQvcXQ1Ci1yZXZpc2lvbj01Ci1idWlsZF9zdHlsZT1t ZXRhCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIGNsYW5nIGZsZXggcGVybCBnbGliLWRldmVsIHBr Zy1jb25maWcKICBweXRob24gcmUyYyBydWJ5IHdoaWNoIgogbWFrZWRlcGVuZHM9IlNETDItZGV2 ZWwgVnVsa2FuLUhlYWRlcnMgYWxzYS1saWItZGV2ZWwgZG91YmxlLWNvbnZlcnNpb24tZGV2ZWwK QEAgLTI5LDggKzI5LDkgQEAgaG9tZXBhZ2U9Imh0dHBzOi8vcXQuaW8vIgogIyB0YXJiYWxsIGlz IGdlbmVyYXRlZCB3aXRoIGBnaXQgYXJjaGl2ZS1hbGwgcXQ1LSR2ZXJzaW9uLnRhci5nemAKICMg dG8ga2VlcCB0aGUgc2l6ZSBzbWFsbGVyIHF0d2ViZW5naW5lLCBxdHdlYnZpZXcsIHF0ZG9jZ2Fs bGVyeSwgcXRhY3RpdmVxdCBhbmQgcXRwaW0KICMgY2FuIGJlIG1hcmtlZCB3aXRoIHRoZSBleHBv cnQtaWdub3JlIGF0dHJpYnV0ZQotZGlzdGZpbGVzPSJodHRwczovL3ZvaWQuam9obm55bmF0b3Iu ZGV2L2Rpc3RmaWxlcy9xdDUtJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT05ZDU3YWY0NzFj NzgwMjlhMzYyMjc2YjdjOTkxMDhlYTAwOWY1MTFiYjliYTZmZjZjYjg4NGY2ZGRkMjU1ZTlmCisj ZGlzdGZpbGVzPSJodHRwczovL3ZvaWQuam9obm55bmF0b3IuZGV2L2Rpc3RmaWxlcy9xdDUtJHt2 ZXJzaW9ufS50YXIuZ3oiCitkaXN0ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQucXQuaW8vYXJjaGl2 ZS9xdC81LjE1LyR7dmVyc2lvbn0vc2luZ2xlL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMt JHt2ZXJzaW9ufS50YXIueHoiCitjaGVja3N1bT03NzZhOTMwMmMzMzY2NzFmOTQwNmE1M2JkMzBi OGUzNmY4MjU3NDJiMmVjNDRhNTdjMDgyMTdiZmYwZmE4NmI5CiBweXRob25fdmVyc2lvbj0yICN1 bnZlcmlmaWVkCiByZXBsYWNlcz0icXQ1LWRvYzw1LjYuMCBxdDUtcXVpY2sxPDUuNi4wIHF0NS1x dWljazEtZGV2ZWw8NS42LjAgcXQ1LXdlYmtpdDw1LjYuMCBxdDUtd2Via2l0LWRldmVsPDUuNi4w CiAgcXQ1LWVuZ2luaW88NS43LjEgcXQ1LWVuZ2luaW8tZGV2ZWw8NS43LjEgcXQ1LXBsdWdpbi1n dGs8NS43LjEgcXQ1LWNhbnZhczNkPDUuMTMuMCIKQEAgLTI1MCw3ICsyNTEsNiBAQCBkb19jb25m aWd1cmUoKSB7CiAJIyBvcHRzKz0iIC12IgogCW9wdHMrPSIgLXNraXAgcXR3ZWJlbmdpbmUiCiAJ b3B0cys9IiAtc2tpcCBxdHdlYnZpZXciCi0Jb3B0cys9IiAtc2tpcCBxdGRvY2dhbGxlcnkiCiAJ b3B0cys9IiAtc2tpcCBxdHBpbSIKIAlvcHRzKz0iIC1za2lwIHF0c3lzdGVtcyIKIAlvcHRzKz0i IC1za2lwIHF0c3BlZWNoIgoKRnJvbSBkZWJlOWY5YWYyZGY4NDZmNjRlZGUzYTFhNzdkODJkZjlm ODRhZmNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwNzYvMTEzXSBxdDYtbXVsdGltZWRpYTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYt bXVsdGltZWRpYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUKaW5k ZXggYzYyMmI3YzllOGZjLi5mNzc3ODczOGY2ZDMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ2LW11 bHRpbWVkaWEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0Ni1tdWx0aW1lZGlhJwogcGtn bmFtZT1xdDYtbXVsdGltZWRpYQogdmVyc2lvbj02LjUuMAotcmV2aXNpb249MQorcmV2aXNpb249 MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFFUX0ZFQVRVUkVfZ3N0cmVh bWVyPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwZXJsIHF0Ni1kZWNsYXJhdGl2ZS1ob3N0LXRvb2xz IHBrZy1jb25maWcgcXQ2LXNoYWRlcnRvb2xzIgoKRnJvbSBjN2Q5NTVmODY5NjJmNTQwYjVlNWUz Y2FmZmFhOTAxNzFjZmM3NzU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNzcvMTEzXSBxdGF2OiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4z CgotLS0KIHNyY3BrZ3MvcXRhdi90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0YXYv dGVtcGxhdGUgYi9zcmNwa2dzL3F0YXYvdGVtcGxhdGUKaW5kZXggMzRjMzBiMmMwYzc4Li4yZDAw YWQxMDQzNTUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3F0YXYvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0 YXYnCiBwa2duYW1lPXF0YXYKIHZlcnNpb249MS4xMy4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1xbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJxdDUtcW1ha2UgcXQ1LWhvc3Qt dG9vbHMiCi1tYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIGxpYmFzcy1kZXZlbCBsaWJvcGVuYWwt ZGV2ZWwKK21ha2VkZXBlbmRzPSJmZm1wZWc0LWRldmVsIGxpYmFzcy1kZXZlbCBsaWJvcGVuYWwt ZGV2ZWwKICBsaWJ2YS1nbHgtZGV2ZWwgbGliWHYtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAogIHF0 NS1kZWNsYXJhdGl2ZS1kZXZlbCBxdDUtc3ZnLWRldmVsCiAgcXQ1LXF1aWNrY29udHJvbHMiCgpG cm9tIDE1YjE0OTRiMzc2OGNiNTY3NjUzMDEzM2ZlYTlkMmJlYWI5NjExNDUgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3OC8xMTNdIHF0b3g6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9xdG94L3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdG94L3RlbXBsYXRlIGIvc3JjcGtncy9xdG94L3RlbXBsYXRlCmluZGV4 IDE2MDE5ZDdlYWVjOS4uNWNlYTBiMTFiNjk3IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0b3gvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9xdG94L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAncXRveCcKIHBrZ25hbWU9cXRveAogdmVyc2lvbj0xLjE3LjYKLXJldmlz aW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURV UERBVEVfQ0hFQ0s9T0ZGCiAgLURHSVRfREVTQ1JJQkU9JHt2ZXJzaW9ufQoKRnJvbSBlOTUwMjFm NWM4ZWQ0NjYyYTY5OTIwMDEwNzVjNzgzNDQxYmRlZDI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzkvMTEzXSByZXRyb2FyY2g6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcmV0cm9hcmNoL3RlbXBs YXRlCmluZGV4IDI0MGQzZGY5ZGIwMC4uNmQwYjE2YWUyNTk4IDEwMDY0NAotLS0gYS9zcmNwa2dz L3JldHJvYXJjaC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3JldHJvYXJjaCcKIHBrZ25hbWU9cmV0 cm9hcmNoCiB2ZXJzaW9uPTEuMTQuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9Y29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1wcmVmaXg9L3VzciAtLXN5c2NvbmZkaXI9 L2V0YyAtLWVuYWJsZS1uZXR3b3JraW5nCiAgLS1lbmFibGUtdWRldiAtLWRpc2FibGUtYnVpbHRp bmZsYWMgLS1kaXNhYmxlLWJ1aWx0aW5nbHNsYW5nCgpGcm9tIDgyYmQ2ZmNjYTM5YTM1YmUyMzEw ODg4OWZkOGY5MWQxYTNlZWRkZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0 MDAKU3ViamVjdDogW1BBVENIIDA4MC8xMTNdIHNjcmNweTogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL3NjcmNweS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2NyY3B5 L3RlbXBsYXRlIGIvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUKaW5kZXggZWU2ZTY5OGUzODdmLi44 YWRhNWNhNDMyM2YgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3Mvc2NyY3B5L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnc2NyY3B5JwogcGtnbmFtZT1zY3JjcHkKIHZlcnNpb249Mi4wCi1yZXZpc2lvbj0xCityZXZp c2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EY29tcGlsZV9zZXJ2 ZXI9ZmFsc2UKICAtRHByZWJ1aWx0X3NlcnZlcj0vdXNyL3NoYXJlL3NjcmNweS9zY3JjcHktc2Vy dmVyLXYke3ZlcnNpb259IgoKRnJvbSAxMTVmMzQyYzVkNDU3ZWU3YjFjMTFiY2RiYTY5YmIyMGM1 YjE5YTJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwODEvMTEzXSBzcGVrLWFsdGVybmF0aXZlOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4z CgotLS0KIHNyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZSB8IDYgKysrLS0tCiAxIGZp bGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3Blay1hbHRlcm5h dGl2ZS90ZW1wbGF0ZQppbmRleCBkNjUwODZiOGYwMDguLjA1MjQ2ZjFiOGQwYyAxMDA2NDQKLS0t IGEvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3Blay1h bHRlcm5hdGl2ZS90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnc3Blay1hbHRlcm5hdGl2ZScKIHBrZ25hbWU9c3Blay1hbHRlcm5hdGl2ZQogdmVyc2lvbj0w LjguMi4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJl CiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIGdldHRleHQtZGV2ZWwgaW50bHRvb2wgbGlidG9v bCBwa2ctY29uZmlnIHd4V2lkZ2V0cy1jb21tb24iCi1tYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVs IHd4V2lkZ2V0cy1ndGszLWRldmVsIgotZGVwZW5kcz0iZmZtcGVnIgorbWFrZWRlcGVuZHM9ImZm bXBlZzQtZGV2ZWwgd3hXaWRnZXRzLWd0azMtZGV2ZWwiCitkZXBlbmRzPSJmZm1wZWc0Igogc2hv cnRfZGVzYz0iQWNvdXN0aWMgc3BlY3RydW0gYW5hbHlzZXIiCiBtYWludGFpbmVyPSJLYXJ0aWsg U2luZ2ggPGthcnRpay55bndhQGdtYWlsLmNvbT4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVy IgoKRnJvbSBhMmUyYjE3YjcwNDhjMTRlZDI4Y2M4Y2I0N2M1NWRjM2Y5MzQ2OTc0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODIvMTEzXSBz c3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9zc3IvdGVtcGxhdGUg fCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zc3IvdGVtcGxhdGUgYi9zcmNwa2dzL3Nzci90ZW1wbGF0 ZQppbmRleCBiMDU1YjllYzA3NzQuLjM0NDhjYTExMGViMCAxMDA2NDQKLS0tIGEvc3JjcGtncy9z c3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zc3IvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NzcicKIHBrZ25hbWU9c3NyCiB2ZXJzaW9uPTAuNC40Ci1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9 Ii1EV0lUSF9RVDU9T04iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCi1tYWtlZGVwZW5k cz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnLWRldmVsIGdsdS1kZXZlbCBqYWNrLWRldmVsIHB1bHNl YXVkaW8tZGV2ZWwKK21ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWc0LWRldmVsIGds dS1kZXZlbCBqYWNrLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKICBxdDUtdG9vbHMtZGV2ZWwgcXQ1 LXgxMWV4dHJhcy1kZXZlbCBsaWJYaW5lcmFtYS1kZXZlbCB2NGwtdXRpbHMtZGV2ZWwiCiBkZXBl bmRzPSJkZXNrdG9wLWZpbGUtdXRpbHMgaGljb2xvci1pY29uLXRoZW1lIgogc2hvcnRfZGVzYz0i U2ltcGxlIFNjcmVlbiBSZWNvcmRlciBmb3IgcHJvZ3JhbXMgYW5kIGdhbWVzIgoKRnJvbSA4ZjZl ODQ3NzhiZDcxYzIzMjk4N2UzNDU5YzE3YmExYzI1NGY3YWJjIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODMvMTEzXSBzdW1vOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc3Vtby90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3Mvc3Vtby90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZQppbmRleCAwZjliOWVj ODE1ZjUuLmEzZmUxMzRhYTVhYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9zdW1vL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3N1bW8nCiBwa2duYW1lPXN1bW8KIHZlcnNpb249MS4xMi4wCi1yZXZpc2lvbj01City ZXZpc2lvbj02CiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJsaWJnZGFsLXRv b2xzIHBrZy1jb25maWcgc3dpZyBweXRob24zLXNldHVwdG9vbHMiCiBtYWtlZGVwZW5kcz0icHl0 aG9uMy1kZXZlbCBmZm1wZWctZGV2ZWwgZm94LWRldmVsIGdsMnBzLWRldmVsIGxpYmdkYWwtZGV2 ZWwKCkZyb20gZTk3ZTRhMTQyYjFhZTZkODViMGU4YWVlZDM5NjhhYWE0YWY1MDRjMyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg0LzExM10g c3luZmlnOiByZXZidW1wIGZvciBmZm1wZWctNi4wIGFuZCBtbHQ3CgotLS0KIHNyY3BrZ3Mvc3lu ZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCB8IDcxICsrKysrKysrKysrKysrKysrKysrKysrKysr KysKIHNyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlICAgICAgICAgICAgICB8ICA0ICstCiAyIGZpbGVz IGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoIGIvc3JjcGtncy9zeW5maWcvcGF0 Y2hlcy9mZm1wZWc2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uMTA3ODBiNDI3ODJmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9zeW5maWcvcGF0Y2hl cy9mZm1wZWc2LnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKKy0tLSBhL3NyYy9tb2R1bGVzL21vZF9s aWJhdmNvZGVjL3RyZ3RfYXYuY3BwCTIwMjItMTAtMjUgMDk6MTQ6MTIuMDAwMDAwMDAwIC0wNDAw CisrKysgYi9zcmMvbW9kdWxlcy9tb2RfbGliYXZjb2RlYy90cmd0X2F2LmNwcAkyMDIzLTA1LTA1 IDIxOjM0OjE3Ljg5OTE5NDU1OSAtMDQwMAorQEAgLTM4LDYgKzQxLDcgQEAKKyBleHRlcm4gIkMi CisgeworICNpZmRlZiBIQVZFX0xJQkFWRk9STUFUX0FWRk9STUFUX0gKKysjCWluY2x1ZGUgPGxp YmF2Y29kZWMvYXZjb2RlYy5oPgorICMJaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4K KyAjZWxpZiBkZWZpbmVkKEhBVkVfQVZGT1JNQVRfSCkKKyAjCWluY2x1ZGUgPGF2Zm9ybWF0Lmg+ CitAQCAtMTU1LDExICsxNTYsMTEgQEAKKyAgICAgfQorIAorIAlib29sIG9wZW5fdmlkZW9fc3Ry ZWFtKCkgeworLQkJaWYgKGF2Y29kZWNfb3BlbjIodmlkZW9fY29udGV4dCwgTlVMTCwgTlVMTCkg PCAwKSB7CisrCQlpZiAoYXZjb2RlY19vcGVuMih2aWRlb19jb250ZXh0LCBudWxscHRyLCBudWxs cHRyKSA8IDApIHsKKyAJCQlzeW5maWc6OmVycm9yKCJUYXJnZXRfTGliQVZDb2RlYzogY291bGQg bm90IG9wZW4gdmlkZW8gY29kZWMiKTsKKyAJCQkvLyBzZWVtcyB0aGUgY2FsbGluZyBvZiBhdmNv ZGVjX2ZyZWVfY29udGV4dCBhZnRlciBlcnJvciB3aWxsIGNhdXNlIGNyYXNoCisgCQkJLy8gc28g anVzdCBmb3JnZXQgYWJvdXQgdGhpcyBjb250ZXh0CistCQkJdmlkZW9fY29udGV4dCA9IE5VTEw7 CisrCQkJdmlkZW9fY29udGV4dCA9IG51bGxwdHI7CisgCQkJY2xvc2UoKTsKKyAJCQlyZXR1cm4g ZmFsc2U7CisgICAgICAgICB9CitAQCAtMjM0LDE1ICsyMzUsMjEgQEAKKyAJCWNsb3NlKCk7Cisg CisgCQlpZiAoIWF2X3JlZ2lzdGVyZWQpIHsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9S IDwgNTggLy8gRkZNUEVHIDwgNC4wCisgCQkJYXZfcmVnaXN0ZXJfYWxsKCk7CisrI2VuZGlmCisg CQkJYXZfcmVnaXN0ZXJlZCA9IHRydWU7CisgCQl9CisgCisgCQkvLyBndWVzcyBmb3JtYXQKKy0J CUFWT3V0cHV0Rm9ybWF0ICpmb3JtYXQgPSBhdl9ndWVzc19mb3JtYXQoTlVMTCwgZmlsZW5hbWUu Y19zdHIoKSwgTlVMTCk7CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU5IC8vIEZG TVBFRyA8IDUuMAorKwkJQVZPdXRwdXRGb3JtYXQqIGZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdChu dWxscHRyLCBmaWxlbmFtZS5jX3N0cigpLCBudWxscHRyKTsKKysjZWxzZQorKwkJY29uc3QgQVZP dXRwdXRGb3JtYXQqIGZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdChudWxscHRyLCBmaWxlbmFtZS5j X3N0cigpLCBudWxscHRyKTsKKysjZW5kaWYKKyAJCWlmICghZm9ybWF0KSB7CisgCQkJc3luZmln Ojp3YXJuaW5nKCJUYXJnZXRfTGliQVZDb2RlYzogdW5hYmxlIHRvIGd1ZXNzIHRoZSBvdXRwdXQg Zm9ybWF0LCBkZWZhdWx0aW5nIHRvIE1QRUciKTsKKy0JCQlmb3JtYXQgPSBhdl9ndWVzc19mb3Jt YXQoIm1wZWciLCBOVUxMLCBOVUxMKTsKKysJCQlmb3JtYXQgPSBhdl9ndWVzc19mb3JtYXQoIm1w ZWciLCBudWxscHRyLCBudWxscHRyKTsKKyAJCX0KKyAJCWlmICghZm9ybWF0KSB7CisgCQkJc3lu ZmlnOjplcnJvcigiVGFyZ2V0X0xpYkFWQ29kZWM6IHVuYWJsZSB0byBmaW5kICdtcGVnJyBvdXRw dXQgZm9ybWF0Iik7CitAQCAtMjU0LDYgKzI2MSw3IEBACisgCQljb250ZXh0ID0gYXZmb3JtYXRf YWxsb2NfY29udGV4dCgpOworIAkJYXNzZXJ0KGNvbnRleHQpOworIAkJY29udGV4dC0+b2Zvcm1h dCA9IGZvcm1hdDsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTggLy8gRkZNUEVH IDwgNC4wCisgCQlpZiAoZmlsZW5hbWUuc2l6ZSgpICsgMSA+IHNpemVvZihjb250ZXh0LT5maWxl bmFtZSkpIHsKKyAJCQlzeW5maWc6OmVycm9yKAorIAkJCQkiVGFyZ2V0X0xpYkFWQ29kZWM6IGZp bGVuYW1lIHRvbyBsb25nLCBtYXggbGVuZ3RoIGlzICVkLCBmaWxlbmFtZSBpcyAnJXMnIiwKK0BA IC0yNjMsNiArMjcxLDE0IEBACisgCQkJcmV0dXJuIGZhbHNlOworIAkJfQorIAkJbWVtY3B5KGNv bnRleHQtPmZpbGVuYW1lLCBmaWxlbmFtZS5jX3N0cigpLCBmaWxlbmFtZS5zaXplKCkgKyAxKTsK KysjZWxzZQorKwkJY29udGV4dC0+dXJsID0gYXZfc3RybmR1cChmaWxlbmFtZS5jX3N0cigpLCBm aWxlbmFtZS5zaXplKCkpOworKwkJaWYgKCFjb250ZXh0LT51cmwpIHsKKysJCQlzeW5maWc6OmVy cm9yKCJUYXJnZXRfTGliQVZDb2RlYzogY2Fubm90IGFsbG9jYXRlIHNwYWNlIGZvciBmaWxlbmFt ZSIpOworKwkJCWNsb3NlKCk7CisrCQkJcmV0dXJuIGZhbHNlOworKwkJfQorKyNlbmRpZgorIAor IAkJcGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisgCQlhc3NlcnQocGFja2V0KTsKZGlmZiAt LWdpdCBhL3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlIGIvc3JjcGtncy9zeW5maWcvdGVtcGxhdGUK aW5kZXggNWY1ZjViYjNmNGIyLi42ZTBkNzEzMTUwYWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3lu ZmlnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlCkBAIC02LDcgKzYsNyBA QCByZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0i LS13aXRoLWJvb3N0LWxpYmRpcj0ke1hCUFNfQ1JPU1NfQkFTRX0vdXNyL2xpYiIKIGhvc3RtYWtl ZGVwZW5kcz0iYm9vc3QtYnVpbGQgSW1hZ2VNYWdpY2sgcGtnLWNvbmZpZyBpbnRsdG9vbCIKLW1h a2VkZXBlbmRzPSJFVEwgZ2V0dGV4dC1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQtZGV2ZWwgbGli bWFnaWNrLWRldmVsCittYWtlZGVwZW5kcz0iRVRMIGdldHRleHQtZGV2ZWwgbGlieG1sKystZGV2 ZWwgbWx0Ny1kZXZlbCBsaWJtYWdpY2stZGV2ZWwKICBsaWJtbmctZGV2ZWwgYm9vc3QtYnVpbGQg Ym9vc3QtZGV2ZWwgbGlib3BlbmV4ci1kZXZlbCBmZm1wZWctZGV2ZWwiCiBkZXBlbmRzPSJJbWFn ZU1hZ2ljayIKIHNob3J0X2Rlc2M9IkNMSSAyRCB2ZWN0b3IgYW5kIHRpbWVsaW5lLWJhc2VkIGFu aW1hdGlvbiBzb2Z0d2FyZSIKQEAgLTIwLDcgKzIwLDcgQEAgQ1hYRkxBR1M9Ii1zdGQ9YysrMTEg LURIQVZFX0xPQ0FMRV9IPTEiCiAKIHN5bmZpZy1kZXZlbF9wYWNrYWdlKCkgewogCWRlcGVuZHM9 IiR7c291cmNlcGtnfT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQotCSBsaWJvcGVuZXhyLWRldmVs IGxpYnhtbCsrLWRldmVsIG1sdC1kZXZlbCIKKwkgbGlib3BlbmV4ci1kZXZlbCBsaWJ4bWwrKy1k ZXZlbCBtbHQ3LWRldmVsIgogCXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBmaWxlcyIKIAlw a2dfaW5zdGFsbCgpIHsKIAkJdm1vdmUgdXNyL2Jpbi9zeW5maWctY29uZmlnCgpGcm9tIDk5MWFi MDA2MmY0MjBkMjJlODc3OTlmOGY5MzhmNWNhYmM1NjZiM2MgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgNSBNYXkgMjAy MyAxMjo1Nzo1NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg1LzExM10gc3luZmlnc3R1ZGlvOiBy ZXZidW1wIGZvciBzeW5maWcgbWx0NwoKLS0tCiBzcmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlIGIvc3JjcGtncy9zeW5m aWdzdHVkaW8vdGVtcGxhdGUKaW5kZXggOTEzNDkxNjllZDJiLi5hZjFjNWEyOTZlZjAgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3luZmln c3R1ZGlvL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogIyBTaG91bGQgYmUga2VwdCBpbiBzeW5j IHdpdGggJ3N5bmZpZycgYW5kICdFVEwnCiBwa2duYW1lPXN5bmZpZ3N0dWRpbwogdmVyc2lvbj0x LjQuNAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQog Y29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS11cGRhdGUtbWltZWRiIgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIGludGx0b29sIGdldHRleHQgc3luZmlnIgoKRnJvbSAzYzhjYjIwZjllMDcx Y2Y0MmVkY2JmYjdkNWUyMjkyN2I4ZTEzODRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODYvMTEzXSB0Z19vd3Q6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy90Z19vd3QvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L3RnX293dC90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlCmluZGV4IDk3ZDE5NWRk YjM0YS4uNTUxNjE0YjI0OTU2IDEwMDY0NAotLS0gYS9zcmNwa2dzL3RnX293dC90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3RnX293dC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ3RnX293dCcKIHBrZ25hbWU9dGdfb3d0CiB2ZXJzaW9uPTAuMC4wLjIwMjMwMTA3 Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfY29tbWl0PTUwOTg3MzBiOWViNjE3M2YwYjUyMDY4 ZmUyNTU1YjdjMTAxNTEyM2EKIF9saWJ5dXZfY29tbWl0PTAwOTUwODQwZDFjOWJjYmIzZWI2ZWJj NWFhYzU3OTNlNzExNjZjOGIKIF9hYnNlaWxfY29tbWl0PThjMGI5NGU3OTNhNjY0OTVlMGIxZjM0 YTVlYjI2YmQ3ZGM2NzJkYjAKCkZyb20gZjE3Nzk1NGZmNzYzYzY1MDBiZmU4NWJjMDc1NjEzMGUz YTM4MzVkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDg3LzExM10gdGltZzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L3RpbWcvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3RpbWcvdGVtcGxhdGUgYi9zcmNwa2dz L3RpbWcvdGVtcGxhdGUKaW5kZXggMmEyYWI3NjNkMmZkLi44ZmI0MzI3NTM1ZWYgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3RpbWcvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0aW1nJwogcGtnbmFtZT10aW1nCiB2 ZXJzaW9uPTEuNC41Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQog Y29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9PUEVOU0xJREVfU1VQUE9SVD1vZmYgLVduby1kZXYiCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgZ2l0IgoKRnJvbSBjZTU0ODZiZTYwMmQ2YzFjYmUx ZDhjY2Y0ZWQxOWNlMjYyNmExN2Q5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwODgvMTEzXSB0dmhlYWRlbmQ6IHJldmJ1bXAgZm9yIGZmbXBl ZzQtNC40LjMKCi0tLQogc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmls ZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUgYi9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQpp bmRleCBlNmIxNmQ3Y2NmM2IuLjQ2YjUyYjZmYjdmOSAxMDA2NDQKLS0tIGEvc3JjcGtncy90dmhl YWRlbmQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUKQEAgLTEsMTQg KzEsMTQgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3R2aGVhZGVuZCcKIHBrZ25hbWU9dHZoZWFk ZW5kCiB2ZXJzaW9uPTQuMi44Ci1yZXZpc2lvbj02CityZXZpc2lvbj03CiBidWlsZF9zdHlsZT1n bnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1lbmFibGUtZHZic2NhbiAtLWRpc2FibGUt ZmZtcGVnX3N0YXRpYwogLS1kaXNhYmxlLWhkaG9tZXJ1bl9zdGF0aWMgLS1kaXNhYmxlLWJpbnRy YXlfY2FjaGUgLS1kaXNhYmxlLWxpYngyNjRfc3RhdGljCiAtLWRpc2FibGUtbGlieDI2NV9zdGF0 aWMgLS1kaXNhYmxlLWxpYnZweF9zdGF0aWMgLS1kaXNhYmxlLWxpYnRoZW9yYV9zdGF0aWMKIC0t ZGlzYWJsZS1saWJ2b3JiaXNfc3RhdGljIC0tZGlzYWJsZS1saWJmZGthYWNfc3RhdGljIgogaG9z dG1ha2VkZXBlbmRzPSJnZXR0ZXh0IHBrZy1jb25maWcgcHl0aG9uIGdpdCB3aGljaCIKLW1ha2Vk ZXBlbmRzPSJhdmFoaS1saWJzLWRldmVsIG9wZW5zc2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJjdXJs LWRldmVsIGZmbXBlZy1kZXZlbCIKK21ha2VkZXBlbmRzPSJhdmFoaS1saWJzLWRldmVsIG9wZW5z c2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9k ZXNjPSJUViBzdHJlYW1pbmcgc2VydmVyIgogbWFpbnRhaW5lcj0ibGVtbWkgPGxlbW1pQG5lcmQy bmVyZC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vbmx5IgoKRnJvbSA4ZGRiOTU4NDRhMWY0ODQ5 OTM5ZjIyODQyZTRiOTM1NWM4Nzc2M2NhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUy IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODkvMTEzXSB1bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAu CgotLS0KIHNyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZSB8IDE2ICsrKysrKysrLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlIGIvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlCmlu ZGV4IDM4ZWQ0N2E1ODQwMS4uMWZmOTEwZTcyMmFmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3VucGFw ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlCkBAIC0xLDEzICsxLDEz IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd1bnBhcGVyJwogcGtnbmFtZT11bnBhcGVyCi12ZXJz aW9uPTYuMQotcmV2aXNpb249MwotYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQordmVyc2lvbj03 LjAuMAorcmV2aXNpb249MQorYnVpbGRfc3R5bGU9bWVzb24KK2hvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyBtZXNvbiBsaWJ4c2x0IgorbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBweXRob24z LVNwaGlueCIKK3Nob3J0X2Rlc2M9IlBvc3QtcHJvY2Vzc2luZyB0b29sIGZvciBzY2FubmVkIHNo ZWV0cyBvZiBwYXBlciIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9y Zz4iCi1ob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgbGlieHNsdCIKLW1ha2VkZXBlbmRzPSJm Zm1wZWctZGV2ZWwiCi1saWNlbnNlPSJHUEwtMiIKK2xpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIi CiBob21lcGFnZT0iaHR0cHM6Ly93d3cuZmxhbWVleWVzLmV1L3Byb2plY3RzL3VucGFwZXIiCi1z aG9ydF9kZXNjPSJBIHBvc3QtcHJvY2Vzc2luZyB0b29sIGZvciBzY2FubmVkIHNoZWV0cyBvZiBw YXBlciIKIGRpc3RmaWxlcz0iaHR0cHM6Ly93d3cuZmxhbWVleWVzLmV1L2ZpbGVzLyR7cGtnbmFt ZX0tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT0yMzdjODRmNWRhNTQ0YjNmNzcwOTgyN2Y5 ZjEyYzM3YzM0NmNkZjAyOWIxMTI4ZmI0NjMzZjliYWZhNWNiOTMwCitjaGVja3N1bT0yNTc1ZmJi ZjI2YzIyNzE5ZDFjYjg4MmI1OTYwMmM5OTAwYzdmNzQ3MTE4YWMxMzA4ODNmNjM0MTliZTQ2YTgw CgpGcm9tIGYzN2VjZjMzZGQ4NGUxOGZjYmIzY2ZhZGRjNTRjZGU2YmI4NmQ3ZTMgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5MC8xMTNdIHZi YS1tOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdmJhLW0vdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRlIGIvc3JjcGtncy92YmEtbS90ZW1wbGF0 ZQppbmRleCBiYTE1M2UwYjU4Y2EuLmFhNjA5MzY0NWU5NyAxMDA2NDQKLS0tIGEvc3JjcGtncy92 YmEtbS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBA QAogcGtnbmFtZT12YmEtbQogcmV2ZXJ0cz0xMjkyXzIKIHZlcnNpb249Mi4xLjUKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURFTkFC TEVfR1RLPVRSVUUgLURFTkFCTEVfRkZNUEVHPVRSVUUgLURFTkFCTEVfTElOSz1UUlVFIC1EQ01B S0VfQlVJTERfVFlQRT1SZWxlYXNlIgogaG9zdG1ha2VkZXBlbmRzPSJnZXR0ZXh0IHBrZy1jb25m aWcgdW56aXAgemlwIHlhc20gd3hXaWRnZXRzLWd0azMtZGV2ZWwiCgpGcm9tIDk5ZDMzZmQzZjJl N2IwMjZjYjY0NTEyOWRjNDY0NmM1ODY1MmM2NDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5MS8xMTNdIHZpY2U6IHJldmJ1bXAgZm9yIGZm bXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy92aWNlL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvdmljZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvdmljZS90ZW1wbGF0ZQppbmRleCAwOTI0NzY3 Y2ZjZmIuLjU5ODFlNDUxNDlkMCAxMDA2NDQKLS0tIGEvc3JjcGtncy92aWNlL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvdmljZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3ZpY2UnCiBwa2duYW1lPXZpY2UKIHZlcnNpb249My41Ci1yZXZpc2lvbj0xCityZXZp c2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iCiAJJCh2 b3B0X2VuYWJsZSBzZGwyIHNkbHVpMikKQEAgLTI4LDcgKzI4LDcgQEAgbWFrZWRlcGVuZHM9Igog CSQodm9wdF9pZiBndGszIGd0ayszLWRldmVsKQogCSQodm9wdF9pZiBndGszIHB1bHNlYXVkaW8t ZGV2ZWwpCiAJJCh2b3B0X2lmIGd0azMgcGFuZ28tZGV2ZWwpCi0JJCh2b3B0X2lmIGZmbXBlZyBm Zm1wZWctZGV2ZWwpIgorCSQodm9wdF9pZiBmZm1wZWcgZmZtcGVnNC1kZXZlbCkiCiBzaG9ydF9k ZXNjPSJFbXVsYXRvciBmb3IgQzY0LCBDMTI4LCBDQk0tSUksIFBFVCwgVklDMjAsIFBsdXM0IGFu ZCBDMTYiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGlj ZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKCkZyb20gNGFmZDYzOTVkMDA5YjJhYTJlNjQ2Nzk2NzY3 OGVlMjAzYjg2ZDkxMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDkyLzExM10gd2F5cGlwZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL3dheXBpcGUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3dheXBpcGUvdGVt cGxhdGUgYi9zcmNwa2dzL3dheXBpcGUvdGVtcGxhdGUKaW5kZXggNWM0MTYxOTAwMDYwLi4xYTQ2 ZmUyN2Y3ZDggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3dheXBpcGUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICd3YXlwaXBlJwogcGtnbmFtZT13YXlwaXBlCiB2ZXJzaW9uPTAuOC40Ci1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogIyBsdG8gaXMgb2ZmIGJlY2F1c2UgaXQgY2F1 c2VzIGxpbmtpbmcgZXJyb3JzIGluIGFybXY2bCBhbmQgYXJtdjdsIChkdWUgdG8gTkVPTikKIGNv bmZpZ3VyZV9hcmdzPSItRHdlcnJvcj1mYWxzZSAtRHdpdGhfZG1hYnVmPWVuYWJsZWQgLUR3aXRo X2x6ND1lbmFibGVkCgpGcm9tIGE5ZjhmNmEwNmI1YjBiZGY4MmZiODY5NzgyZWM4NGZjZGY4MTcx NGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENI IDA5My8xMTNdIHdmLXJlY29yZGVyOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3dmLXJlY29yZGVyL3Rl bXBsYXRlIGIvc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZQppbmRleCBlMjc4ZWIwMDE2MDAu LjVkMDE0YTVmMjhhZiAxMDA2NDQKLS0tIGEvc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnd2YtcmVjb3JkZXInCiBwa2duYW1lPXdmLXJlY29yZGVyCiB2ZXJzaW9u PTAuMy4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIHNjZG9jIHdheWxhbmQtZGV2ZWwiCiBtYWtlZGVwZW5kcz0i d2F5bGFuZC1wcm90b2NvbHMgd2F5bGFuZC1kZXZlbCBmZm1wZWctZGV2ZWwgeDI2NC1kZXZlbAoK RnJvbSA0YjEyMGE2MmRkM2JlMzg3MWFjYmQ2YTdlN2YzMzI2NWU5OTlkNGVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTQvMTEzXSB4cHJh OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MveHByYS90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MveHByYS90ZW1wbGF0ZSBiL3NyY3BrZ3MveHByYS90ZW1wbGF0ZQppbmRl eCAzOGY4MzI4M2IxZTUuLmI2ZTAxZmYwYTgxMyAxMDA2NDQKLS0tIGEvc3JjcGtncy94cHJhL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MveHByYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3hwcmEnCiBwa2duYW1lPXhwcmEKIHZlcnNpb249NC40LjQKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXB5dGhvbjMtbW9kdWxlCiBtYWtlX2J1aWxk X2FyZ3M9Ii0td2l0aG91dC1jdWRhX2tlcm5lbHMgLS13aXRob3V0LWN1ZGFfcmVidWlsZCIKIG1h a2VfaW5zdGFsbF9hcmdzPSIkKHZvcHRfd2l0aCBkb2NzKSAke21ha2VfYnVpbGRfYXJnc30iCgpG cm9tIDQ3ZWViYjczNjY1ZjIzNDYyY2FkZGQzODc4YTc5ZDQ5MWQwNGI4MDMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwg MzEgTWFyIDIwMjMgMDk6MDc6NDAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5NS8xMTNdIG52LWNv ZGVjLWhlYWRlcnM6IHVwZGF0ZSB0byAxMi4wLjE2LjAKCi0tLQogc3JjcGtncy9udi1jb2RlYy1o ZWFkZXJzL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbnYtY29kZWMtaGVhZGVycy90 ZW1wbGF0ZSBiL3NyY3BrZ3MvbnYtY29kZWMtaGVhZGVycy90ZW1wbGF0ZQppbmRleCAzZDQyMmE2 MWU0ODkuLjI1MWUwNTdmODI2ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJz L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbnYtY29kZWMtaGVhZGVycy90ZW1wbGF0ZQpAQCAtMSw2 ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ252LWNvZGVjLWhlYWRlcnMnCiBwa2duYW1l PW52LWNvZGVjLWhlYWRlcnMKLXZlcnNpb249MTEuMS41LjEKK3ZlcnNpb249MTIuMC4xNi4wCiBy ZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIHNob3J0X2Rlc2M9IkZGbXBlZyB2 ZXJzaW9uIG9mIGhlYWRlcnMgcmVxdWlyZWQgdG8gaW50ZXJmYWNlIHdpdGggTnZpZGlhcyBjb2Rl YyBBUElzIgpAQCAtOCw3ICs4LDcgQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lk bGludXgub3JnPiIKIGxpY2Vuc2U9Ik1JVCIKIGhvbWVwYWdlPSJodHRwOi8vZ2l0LnZpZGVvbGFu Lm9yZy8/cD1mZm1wZWcvbnYtY29kZWMtaGVhZGVycy5naXQiCiBkaXN0ZmlsZXM9Imh0dHBzOi8v Z2l0aHViLmNvbS9GRm1wZWcvbnYtY29kZWMtaGVhZGVycy9hcmNoaXZlL24ke3ZlcnNpb259LnRh ci5neiIKLWNoZWNrc3VtPWQwOTVmYmQ1NmFhOTM3NzI0NzFhMzIzYmUwZWJlNjU1MDRhMGY0M2Yw NmM3NmEzMGI2ZDI1ZGE3N2IwNmFlOWMKK2NoZWNrc3VtPTJhMTUzM2I2NWY1NWY5ZGE1Mjk1NmZh ZjA2MjdlZDNiNzQ4NjhhYzBjN2YyNjk5OTBlZGQyMTM2OTExM2I0OGYKIAogcG9zdF9pbnN0YWxs KCkgewogCXNlZCAtbiAnNCwyNXAnIGluY2x1ZGUvZmZudmNvZGVjL252RW5jb2RlQVBJLmggPiBM SUNFTlNFCgpGcm9tIDU5Yjc3ZWE3MGI3MmVjNDYyZGY2MWI1MjNiMTA2NmUyMmE2YjA0MTQgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IEZyaSwgMzEgTWFyIDIwMjMgMDk6MDg6NDAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5Ni8x MTNdIG9wZW5pbWFnZWRlbm9pc2U6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVuaW1hZ2Vk ZW5vaXNlL3RlbXBsYXRlIGIvc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRlCmluZGV4 IGRiNWNjZGIwNTVjYy4uY2I5MDA0NWFmYjYzIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5pbWFn ZWRlbm9pc2UvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbmltYWdlZGVub2lzZScK IHBrZ25hbWU9b3BlbmltYWdlZGVub2lzZQogdmVyc2lvbj0xLjQuMwotcmV2aXNpb249MQorcmV2 aXNpb249MgogYXJjaHM9Ing4Nl82NCoiCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBl bmRzPSJpc3BjIHB5dGhvbjMiCgpGcm9tIDhjZmQ3MTk2OGNjNDEzNWUzNmYyMjM5NTU5N2Q4MTJk ZGMyMDJiNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IE1vbiwgMyBBcHIgMjAyMyAyMzozMTo0NSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDk3LzExM10gc2hvdGN1dDogcmV2YnVtcCBmb3IgbWx0Ny03LjE0LjAKCi0tLQogc3Jj cGtncy9zaG90Y3V0L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRl IGIvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlCmluZGV4IDk5ZWJmMmU4YTVhZi4uNjY4MzgzODAz NTY2IDEwMDY0NAotLS0gYS9zcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9z aG90Y3V0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2hv dGN1dCcKIHBrZ25hbWU9c2hvdGN1dAogdmVyc2lvbj0yMi4xMi4yMQotcmV2aXNpb249MQorcmV2 aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFNIT1RDVVRfVkVS U0lPTj0ke3ZlcnNpb259IgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS10b29scy1k ZXZlbCIKCkZyb20gZTZkMzdjZmUyNzExZDNiZTY3ODViYzZmMmNmYjEzMzNiNGJkYzE2OCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAzIEFwciAyMDIzIDIzOjMzOjMwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTgvMTEz XSBzaGlib2tlbjI6IHJldmJ1bXAgZm9yIHF0NS01LjE1LjgKCi0tLQogc3JjcGtncy9zaGlib2tl bjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaCB8IDEgKwogc3JjcGtn cy9zaGlib2tlbjIvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIg Ky0KIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVh dGUgbW9kZSAxMjAwMDAgc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGlu ZXJ5LWJ5cGFzcy5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMv aW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggYi9zcmNwa2dzL3NoaWJva2VuMi9wYXRj aGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTIwMDAw CmluZGV4IDAwMDAwMDAwMDAwMC4uZWZjZjMyNDliZDg4Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApA QCAtMCwwICsxIEBACisuLi8uLi9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFj aGluZXJ5LWJ5cGFzcy5wYXRjaApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxh dGUKaW5kZXggMDg0ZWNjM2JhMWUxLi4yYTIxOTk4OTk3ZWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv c2hpYm9rZW4yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2hpYm9rZW4yJwogcGtnbmFtZT1zaGli b2tlbjIKIHZlcnNpb249NS4xNS43Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfcGtnbmFtZT0i cHlzaWRlLXNldHVwLW9wZW5zb3VyY2Utc3JjLSR7dmVyc2lvbn0iCiBidWlsZF93cmtzcmM9InNv dXJjZXMvc2hpYm9rZW4yIgogYnVpbGRfc3R5bGU9Y21ha2UKCkZyb20gODJmZjQxZmZiMDkzNGNj NmJkNzExZTBlNDYyYWI2NjAyY2MyNzRmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAzIEFwciAyMDIzIDIzOjMzOjUz IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTkvMTEzXSBweXRob24zLXB5c2lkZTI6IHVwZGF0ZSB0 byA1LjE1LjgKCi0tLQogLi4uL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0 Y2ggICAgICB8IDE1ICsrKysrKysrKysrKysrKwogc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVt cGxhdGUgICAgICAgICAgICAgICAgICB8ICA5ICsrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAy MCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0 Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxp Yi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoIGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hl cy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjY0YzQyOTU4NDc3NgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0 Y2gKQEAgLTAsMCArMSwxNSBAQAorVXNpbmcgdGhpcyBwcmV2ZW50cyBhbiBlcnJvciBhcm91bmQg bGluZSAyMjAgYmVsb3cgaXQuCisiQXR0cmlidXRlRXJyb3I6IG1vZHVsZSAnaW1wb3J0bGliJyBo YXMgbm8gYXR0cmlidXRlICdtYWNoaW5lcnknIgorVGhlIG9sZCBiYWNrdXAgbG9naWMgaXMgaW4g cGxhY2UgYW5kIGNvbXBpbGVzIHdpdGhvdXQgaXNzdWVzLgorLS0tIGEvc291cmNlcy9zaGlib2tl bjIvbGlic2hpYm9rZW4vZW1iZWQvc2lnbmF0dXJlX2Jvb3RzdHJhcC5weQkyMDIzLTA0LTAyIDIz OjA5OjM0LjY4ODkxMjQwMiAtMDQwMAorKysrIGIvc291cmNlcy9zaGlib2tlbjIvbGlic2hpYm9r ZW4vZW1iZWQvc2lnbmF0dXJlX2Jvb3RzdHJhcC5weQkyMDIzLTA0LTAyIDIzOjEwOjAzLjM5NTUy OTU4MiAtMDQwMAorQEAgLTE3MCw5ICsxNzAsNiBAQAorCisgICAgICMgJ3ppcHN0cmluZ19zZXF1 ZW5jZScgY29tZXMgZnJvbSBzaWduYXR1cmUuY3BwCisgICAgIHppcGJ5dGVzID0gYmFzZTY0LmI2 NGRlY29kZSgnJy5qb2luKHppcHN0cmluZ19zZXF1ZW5jZSkpCistICAgIGlmIHN5cy52ZXJzaW9u X2luZm9bMF0gPj0gMzoKKy0gICAgICAgIHZ6aXAgPSB6aXBmaWxlLlppcEZpbGUoaW8uQnl0ZXNJ Tyh6aXBieXRlcykpCistICAgICAgICByZXR1cm4gc3lzLm1ldGFfcGF0aCwgRW1iZWRkYWJsZVpp cEltcG9ydGVyKHZ6aXApCisKKyAgICAgIyBPbGQgdmVyc2lvbiBmb3IgUHl0aG9uIDIuNywgb25s eS4KKyAgICAgaW1wb3J0IG9zCmRpZmYgLS1naXQgYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90 ZW1wbGF0ZSBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3RlbXBsYXRlCmluZGV4IDUwZTZmZjI2 MGQzYi4uYjUwZTYyYmQyMTVkIDEwMDY0NAotLS0gYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQpAQCAtMSwxMSAr MSwxMiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHl0aG9uMy1weXNpZGUyJwogcGtnbmFtZT1w eXRob24zLXB5c2lkZTIKLXZlcnNpb249NS4xNS41Ci1yZXZpc2lvbj0yCit2ZXJzaW9uPTUuMTUu OAorcmV2aXNpb249MQogX3BrZ25hbWU9InB5c2lkZS1zZXR1cC1vcGVuc291cmNlLXNyYy0ke3Zl cnNpb259IgogYnVpbGRfd3Jrc3JjPSJzb3VyY2VzL3B5c2lkZTIiCiBidWlsZF9zdHlsZT1jbWFr ZQotY29uZmlndXJlX2FyZ3M9Ii1EUFlUSE9OX0VYRUNVVEFCTEU9L3Vzci9iaW4vcHl0aG9uIgor Y29uZmlndXJlX2FyZ3M9Ii1EUFlUSE9OX0VYRUNVVEFCTEU9L3Vzci9iaW4vcHl0aG9uIC1EQ01B S0VfQlVJTERfVFlQRT1Ob25lCisgLURCVUlMRF9URVNUUz1PRkYiCiBob3N0bWFrZWRlcGVuZHM9 ImNtYWtlIHB5dGhvbjMgc2hpYm9rZW4yIgogbWFrZWRlcGVuZHM9InB5dGhvbjMtZGV2ZWwgbGli c2hpYm9rZW4yLWRldmVsIHF0NS1kZXZlbAogIHF0NS1tdWx0aW1lZGlhLWRldmVsIHF0NS10b29s cy1kZXZlbCBxdDUtcGx1Z2luLW15c3FsIHF0NS1wbHVnaW4tb2RiYwpAQCAtMjMsNyArMjQsNyBA QCBtYWludGFpbmVyPSJ5b3BpdG8gPHBpZXJyZS5ib3VyZ2luQGZyZWUuZnI+IgogbGljZW5zZT0i TEdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93aWtpLnF0LmlvL1F0X2Zvcl9Q eXRob24iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQucXQuaW8vb2ZmaWNpYWxfcmVsZWFz ZXMvUXRGb3JQeXRob24vcHlzaWRlMi9QeVNpZGUyLSR7dmVyc2lvbn0tc3JjLyR7X3BrZ25hbWV9 LnRhci54eiIKLWNoZWNrc3VtPTM5MjBhNGZiMzUzMzAwMjYwYzliYzQ2ZmY3MGYxZmI5NzVjNWU3 ZWZhMjJlOWQ1MTIyMjU4ODkyOGNlMTliMzMKK2NoZWNrc3VtPTIzNDM2MzAyYzhkZWI1YjRjYmM3 NjliMjA1ZDA5NjA0ZTM4YmE4M2I0MDcwOGVmY2NiN2JkOGM5YWY2ZjZiNWQKIAogYnVpbGRfb3B0 aW9ucz0id2ViZW5naW5lIgogZGVzY19vcHRpb25fd2ViZW5naW5lPSJCdWlsZCBRdDUgV2ViRW5n aW5lIGJpbmRpbmdzIgoKRnJvbSA3ZWYwNGU5OGZiNDNlYTY0Mjk2YTQ0NWZiMTRiMmQzMzk3OTE1 YjY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTE6MTQ6MzUgLTA0MDAKU3ViamVjdDogW1BBVENI IDEwMC8xMTNdIGtvbnF1ZXJvcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2tvbnF1ZXJvci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tvbnF1ZXJvci90ZW1w bGF0ZSBiL3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlCmluZGV4IGQ4ZDBlNzNhNzhhYi4uYzVi ZGJhNjAxZDNjIDEwMDY0NAotLS0gYS9zcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMSBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAna29ucXVlcm9yJwogcGtnbmFtZT1rb25xdWVyb3IKIHZlcnNpb249MjMuMDQuMAot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdz PSItRERFU0tUT1BUT0pTT05fRVhFQ1VUQUJMRT0vdXNyL2Jpbi9kZXNrdG9wdG9qc29uIgogaG9z dG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIHB5dGhvbjMgcXQ1LWhvc3QtdG9vbHMg cXQ1LXFtYWtlIGtkb2N0b29scwota2NvcmVhZGRvbnMga2NvbmZpZyBnZXR0ZXh0IgorIGtjb3Jl YWRkb25zIGtjb25maWcgZ2V0dGV4dCIKIG1ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LXdlYmVu Z2luZS1kZXZlbCBxdDUtZGVjbGFyYXRpdmUtZGV2ZWwKICBxdDUtd2ViY2hhbm5lbC1kZXZlbCBx dDUtbG9jYXRpb24tZGV2ZWwga2NtdXRpbHMtZGV2ZWwga2RlbGliczRzdXBwb3J0LWRldmVsCiAg a2FyY2hpdmUtZGV2ZWwga2h0bWwtZGV2ZWwga2Rlc3UtZGV2ZWwga2FjdGl2aXRpZXM1LWRldmVs IgoKRnJvbSA0MTgxYjVkYWJiZDhmNTdjZTliNDM5NDU0MmJiODA1ZTNiMTUyNDNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBU dWUsIDQgQXByIDIwMjMgMTE6MTQ6NTggLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMS8xMTNdIHF0 NS1zcGVlY2g6IHJldmJ1bXAgZm9yIHF0NS01LjE1LjgKCi0tLQogc3JjcGtncy9xdDUtc3BlZWNo L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlIGIvc3JjcGtn cy9xdDUtc3BlZWNoL3RlbXBsYXRlCmluZGV4IDNlY2QxMGQ1MDY1MC4uMmQ3ZDRkNGQyNDUzIDEw MDY0NAotLS0gYS9zcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUt c3BlZWNoL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1 LXNwZWVjaCcKIHBrZ25hbWU9cXQ1LXNwZWVjaAogdmVyc2lvbj01LjE1LjcKLXJldmlzaW9uPTIK K3JldmlzaW9uPTMKIF9jb21taXQ9ZDMyZjRhNDc5ZDM4YTExZjU0NzU5ODAwNGI5NzVmNDM1NjQy NGExNgogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSItLSAtZmxpdGUgLWZsaXRl LWFsc2EgLXNwZWVjaGQiCgpGcm9tIDBkOGEyOWVmNTI3MTFlZDMxYjAyYmJjMjFjNGZkNTk0ZTdh ZDdkOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIgMjAyMyAxODozODo1MCAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMTAyLzExM10gcXQ1LXN0eWxlcGx1Z2luczogcmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0t CiBzcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0 NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxh dGUKaW5kZXggOTZlZDk3ZDEyY2QyLi4zMGQ5MzY2MGEyYTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv cXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUtc3R5bGVw bHVnaW5zJwogcGtnbmFtZT1xdDUtc3R5bGVwbHVnaW5zCiB2ZXJzaW9uPTUuMC4wCi1yZXZpc2lv bj0yMAorcmV2aXNpb249MjEKIF9naXRyZXY9MzM1ZGJlY2UxMDNlMmNiZjZjN2NmODE5YWI2Njcy YzI5NTZiMTdiMwogYnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZp ZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UiCgpGcm9tIDk4NWY2YzE1NDRlODZmNjQ3MGM4ZTMw MWJlM2I4Zjg4MWI5OGRhYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMzAgQXByIDIwMjMgMjA6MjI6MjYgLTA0MDAK U3ViamVjdDogW1BBVENIIDEwMy8xMTNdIGdzdC1wbHVnaW5zLXVnbHkxOiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMtdWdseTEvdGVtcGxhdGUgfCA0ICsr LS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9nc3QtcGx1Z2lucy11Z2x5MS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0 LXBsdWdpbnMtdWdseTEvdGVtcGxhdGUKaW5kZXggZTI1NGZkNDBmODY5Li44NWFlNjRiYzdhMGEg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtdWdseTEvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9nc3QtcGx1Z2lucy11Z2x5MS90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLXVnbHkxJwogcGtnbmFtZT1nc3QtcGx1Z2lucy11Z2x5 MQotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0xCiBidWlsZF9zdHls ZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EYW1ybmI9ZGlzYWJsZWQgLURhbXJ3YmRlYz1kaXNh YmxlZCAtRHNpZHBsYXk9ZGlzYWJsZWQiCkBAIC0xNSw0ICsxNSw0IEBAIG1haW50YWluZXI9Ik9y cGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJMR1BMLTIuMS1vci1sYXRl ciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0Zmls ZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWUvMS99LyR7cGtnbmFtZS8xL30tJHt2ZXJzaW9u fS50YXIueHoiCi1jaGVja3N1bT04Y2FhMjA3ODlhMDljMzA0YjQ5Y2Y1NjNkMzNjY2E5NDIxYjE4 NzViODRmY2MxODdlNGEzODVmYTAxZDZhZWZkCitjaGVja3N1bT04ZjMwZjQ0ZGIwYmQwNjM3MDli ZjZmYmU1NTEzOGUzYTk4YWYwYWJjYjYxYzM2MGYzNTU4MmJiZTEwZTgwNjkxCgpGcm9tIDQ3MTQx ZWZiMzM4OGJiNTMxYmZlYjMzZjExYWRiNDQ5YzFjN2E1ZTcgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMzAgQXByIDIw MjMgMjA6MjI6MjYgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwNC8xMTNdIGdzdC1ydHNwLXNlcnZl cjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90 ZW1wbGF0ZSB8IDggKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxh dGUgYi9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZQppbmRleCA4Y2VlYThkMzRiNGIu Ljk4MGZkNzJjZGQ0YyAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtcnRzcC1zZXJ2ZXInCiBwa2duYW1lPWdzdC1ydHNw LXNlcnZlcgotdmVyc2lvbj0xLjIwLjMKLXJldmlzaW9uPTMKK3ZlcnNpb249MS4yMi4yCityZXZp c2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHB5 dGhvbjMiCiBtYWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBnc3QtcGx1Z2lucy1iYWQxLWRldmVsIGdv YmplY3QtaW50cm9zcGVjdGlvbgpAQCAtMTAsNSArMTAsNSBAQCBzaG9ydF9kZXNjPSJHU3RyZWFt ZXIgbXVsdGltZWRpYSBncmFwaCBmcmFtZXdvcmsgLSBydHNwIHNlcnZlciIKIG1haW50YWluZXI9 IjFpczdhYzMgPGlzYWFjLnFhMTNAZ21haWwuY29tPiIKIGxpY2Vuc2U9IkxHUEwtMi4xLW9yLWxh dGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKLWRpc3Rm aWxlcz0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcnRzcC1zZXJ2 ZXIvZ3N0LXJ0c3Atc2VydmVyLSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09ZWU0MDI3MThi ZTliMTI3ZjBlNWU2NmNhNGMxYjRmNDJlNDkyNmVjOTNiYTMwN2I3Y2NjYTVkYzZjYzk3OTRjYQor ZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvJHtwa2duYW1lfS8ke3BrZ25hbWV9LSR7dmVyc2lv bn0udGFyLnh6IgorY2hlY2tzdW09MmJlNGFlY2ZiODg3MTAxMDBlYTcxMTVlZDAyMTY0MDNlODA5 NDM0NGViZjE0NjA5NDI3MWI4ZDRkNzM4MjhiZgoKRnJvbSBjODcwYmZhNmM3NGNlNDgxNmNjYWYz NjI3NmEwOGUzZDMwMWJlZjJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDMwIEFwciAyMDIzIDIwOjIyOjI2IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAxMDUvMTEzXSBnc3QtbGliYXY6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFu Z2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9nc3QtbGliYXYvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQppbmRleCBm MDgyYmQyMTFjNjUuLjA0YzM5YmZmMTQ4OSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtbGliYXYv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtbGliYXYnCiBwa2duYW1lPWdzdC1saWJhdgotdmVy c2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNv bgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHlhc20iCkBAIC0xMSw3ICsxMSw3IEBAIG1h aW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJMR1BM LTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5v cmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWV9LyR7cGtnbmFtZX0tJHt2 ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT0zZmVkZDEwNTYwZmNkZmFhMWI2NDYyY2JmNzlhMzhj NGU3YjU3ZDdmMzkwMzU5MzkzZmMwY2VmNmRiZjI3ZGZlCitjaGVja3N1bT1mY2FhZjk4NzhmZThm M2JjODIzMTdlZjEzYTE1NTg4MjRjYjY4ZGYxZjg5NjhjNjc5N2Y1NTZjNWUzM2JjZmZkCiAKIGNh c2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCSotbXVzbCkgIyBSZXF1aXJlZCBieSBtdXNs IGZvciBNX1NRUlQxXzIKCkZyb20gMDRhZjcwYWJjOTRkYjk0YTBhODMxM2JkNDAwN2IyYzMxY2Vm ZjRhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogU3VuLCA3IE1heSAyMDIzIDE5OjQ4OjAxIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAxMDYvMTEzXSBndGs0OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3Rr NC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3Rr NC90ZW1wbGF0ZQppbmRleCBhMjU2NmQ0MDQyZDMuLjVmYWZhNTBmNmYzMyAxMDA2NDQKLS0tIGEv c3JjcGtncy9ndGs0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2d0azQnCiBwa2duYW1lPWd0azQKIHZlcnNp b249NC4xMC4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogYnVp bGRfaGVscGVyPSJnaXIiCiBjb25maWd1cmVfYXJncz0iLURtYW4tcGFnZXM9dHJ1ZSAtRGd0a19k b2M9dHJ1ZQoKRnJvbSA1ZDkxN2E1NmRkZjdkZjAyYmU4NDYzN2U0NjNmM2E1NDFhZDJlZTZhIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBTdW4sIDcgTWF5IDIwMjMgMjA6MTQ6MTQgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwNy8x MTNdIG1sdDc6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtbGliYXYv dGVtcGxhdGUgICAgICAgICAgICAgfCAyICstCiBzcmNwa2dzL2dzdC1vbXgvdGVtcGxhdGUgICAg ICAgICAgICAgICB8IDQgKystLQogc3JjcGtncy9nc3QtcGx1Z2lucy1iYXNlMS90ZW1wbGF0ZSAg ICAgfCA0ICsrLS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMtZ29vZDEvdGVtcGxhdGUgICAgIHwgNCAr Ky0tCiBzcmNwa2dzL2dzdDEtZWRpdGluZy1zZXJ2aWNlcy90ZW1wbGF0ZSB8IDQgKystLQogc3Jj cGtncy9nc3QxLXB5dGhvbjMvdGVtcGxhdGUgICAgICAgICAgfCA2ICsrKy0tLQogc3JjcGtncy9n c3RyZWFtZXItdmFhcGkvdGVtcGxhdGUgICAgICAgfCA0ICsrLS0KIHNyY3BrZ3MvZ3N0cmVhbWVy MS90ZW1wbGF0ZSAgICAgICAgICAgIHwgNCArKy0tCiBzcmNwa2dzL21sdDcvdGVtcGxhdGUgICAg ICAgICAgICAgICAgICB8IDIgKy0KIDkgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwg MTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUg Yi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQppbmRleCAwNGMzOWJmZjE0ODkuLjhjNzJmYzNl OTdlZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9nc3QtbGliYXYvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdnc3QtbGliYXYnCiBwa2duYW1lPWdzdC1saWJhdgogdmVyc2lvbj0xLjIyLjIKLXJldmlzaW9u PTIKK3JldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWcgeWFzbSIKIG1ha2VkZXBlbmRzPSJvcmMtZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2 ZWwgZmZtcGVnLWRldmVsIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3Qtb214L3RlbXBsYXRlIGIv c3JjcGtncy9nc3Qtb214L3RlbXBsYXRlCmluZGV4IDg5MzUzNWM0NjNkYS4uNWFkNTRjYzdiOWQ4 IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1vbXgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3Qt b214L3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LW9t eCcKIHBrZ25hbWU9Z3N0LW9teAotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZp c2lvbj0xCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EZXhhbXBsZXM9ZGlz YWJsZWQgLUR0YXJnZXQ9Z2VuZXJpYyIKQEAgLTExLDQgKzExLDQgQEAgbWFpbnRhaW5lcj0iT3Jw aGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkxHUEwtMi4xLW9ubHkiCiBo b21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIk e2hvbWVwYWdlfS9zcmMvJHtwa2duYW1lfS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLnh6Igot Y2hlY2tzdW09OGRiNDgwNDBiYjQxZjA5ZWRmOGQxN2ZmNmQxNmM1NDg4OGQ3Nzc3YmE0NTAxYzJj NjlmMDA4MzM1MGVhOWExNQorY2hlY2tzdW09MWIwYzU3ZjJjYzRkZGVlYzVlN2YwYzQzNmU1MDJm MDY2NjVjNGU5M2M3MzI2MTg1NWI5NGUwNGZjOTQzMzdiMgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9n c3QtcGx1Z2lucy1iYXNlMS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFzZTEvdGVt cGxhdGUKaW5kZXggMjllOGY3NmJkMWZlLi4yZjIwZWE4MTk4NDkgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZ3N0LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtcGx1Z2lucy1i YXNlMS90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1w bHVnaW5zLWJhc2UxJwogcGtnbmFtZT1nc3QtcGx1Z2lucy1iYXNlMQotdmVyc2lvbj0xLjIwLjMK K3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVs cGVyPSJnaXIiCkBAIC0yMiw3ICsyMiw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5A dm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyLCBMR1BMLTIuMC1vci1s YXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0 ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWUvMS99LyR7cGtnbmFtZS8xL30tJHt2ZXJz aW9ufS50YXIueHoiCi1jaGVja3N1bT03ZTMwYjNkZDgxYTcwMzgwZmY3NTU0Zjk5ODQ3MWQ2OTk2 ZmY3NmJiZTZmYzU0NDcwOTZmODUxZTI0NDczYzlmCitjaGVja3N1bT1lYjY1MTIwYzRlZTc5Yjdh MTUzYzNjMTk3MmQ1YzAxNThjMjE1MTg3N2NjNTFlYzc3MjViYmE1NzQ5Njc5ZDQ5CiAKIGJ1aWxk X29wdGlvbnM9ImNkcGFyYW5vaWEgZ2lyIHNuZGlvIHdheWxhbmQiCiBidWlsZF9vcHRpb25zX2Rl ZmF1bHQ9ImNkcGFyYW5vaWEgZ2lyIHdheWxhbmQiCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1w bHVnaW5zLWdvb2QxL3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtcGx1Z2lucy1nb29kMS90ZW1wbGF0 ZQppbmRleCAxZjVlNjIwY2UxZmQuLjVkMGZlMWJmZTI4NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9n c3QtcGx1Z2lucy1nb29kMS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWdvb2Qx L3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXBsdWdp bnMtZ29vZDEnCiBwa2duYW1lPWdzdC1wbHVnaW5zLWdvb2QxCi12ZXJzaW9uPTEuMjAuMwordmVy c2lvbj0xLjIyLjIKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJn cz0iLURkdj1kaXNhYmxlZCAtRGR2MTM5ND1kaXNhYmxlZCAtRHNob3V0Mj1kaXNhYmxlZCAtRHF0 NT1lbmFibGVkCkBAIC0yMiw3ICsyMiw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5A dm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJMR1BMLTIuMS1vci1sYXRlciIKIGhvbWVwYWdlPSJo dHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9 L3NyYy8ke3BrZ25hbWUvMS99LyR7cGtnbmFtZS8xL30tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVj a3N1bT1mOGYzYzIwNmJmNWNkYWJjMDA5NTM5MjBiNDdiMzU3NWFmMGVmMTVlOWY4NzFjMGI2OTY2 ZjZkMGFhNTg2OGI3CitjaGVja3N1bT03YzhjYzU5NDI1ZjJiMjMyZjYwY2E3ZDEzZTU2ZWRkNjE1 ZGE0ZjcxMWU3M2RkMDFhN2NmZmE0NmU2YmMwY2RkCiAKIGJ1aWxkX29wdGlvbnM9Imd0azMgd2F5 bGFuZCIKIGJ1aWxkX29wdGlvbnNfZGVmYXVsdD0iZ3RrMyB3YXlsYW5kIgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9nc3QxLWVkaXRpbmctc2VydmljZXMvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdDEtZWRp dGluZy1zZXJ2aWNlcy90ZW1wbGF0ZQppbmRleCA2NzNiNDY5NzBmMjQuLjEwMjQ0MGY3ZjI1MyAx MDA2NDQKLS0tIGEvc3JjcGtncy9nc3QxLWVkaXRpbmctc2VydmljZXMvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9nc3QxLWVkaXRpbmctc2VydmljZXMvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdnc3QxLWVkaXRpbmctc2VydmljZXMnCiBwa2duYW1lPWdzdDEt ZWRpdGluZy1zZXJ2aWNlcwotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lv bj0xCiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVyPSJnaXIiCkBAIC0xMiw3ICsxMiw3 IEBAIG1haW50YWluZXI9IlRveWFtIENveCA8VmFlbGF0ZXJuQGdtYWlsLmNvbT4iCiBsaWNlbnNl PSJMR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVz a3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWUvZ3N0MS9nc3R9 LyR7cGtnbmFtZS9nc3QxL2dzdH0tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT01ZmQ4OTZk ZTY5ZmJlMjQ0MjFlYjZiMGZmOGQyZjhiNGMzY2JhM2YzMDI1Y2VhY2QzMDIxNzJmMzlhOGFiYWEy CitjaGVja3N1bT00NTNiMTQ2NGZjMzg1N2RlMjY5YTdjYjBlYmQ5NjZhZmUwMjE3MWQ5N2JlZjY3 MmEwYjhhMGE2ZDQzZTBjZWJmCiAKIGRvX2NoZWNrKCkgewogCTogIyBUZXN0cyBmYWlsIGluIG9s ZGVyIHZlcnNpb25zIGFzIHdlbGwKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0MS1weXRob24zL3Rl bXBsYXRlIGIvc3JjcGtncy9nc3QxLXB5dGhvbjMvdGVtcGxhdGUKaW5kZXggM2Y1NjRhYzY0Yjkz Li43ODllNDBmMDM2ZWEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0MS1weXRob24zL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvZ3N0MS1weXRob24zL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZ3N0MS1weXRob24zJwogcGtnbmFtZT1nc3QxLXB5dGhvbjMKLXZl cnNpb249MS4yMC4zCi1yZXZpc2lvbj0yCit2ZXJzaW9uPTEuMjIuMgorcmV2aXNpb249MQogYnVp bGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBweXRob24zIgogbWFr ZWRlcGVuZHM9ImxpYmdsaWItZGV2ZWwgcHl0aG9uMy1kZXZlbCBweXRob24zLWdvYmplY3QtZGV2 ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwiCkBAIC0xMSw0ICsxMSw0IEBAIG1haW50YWluZXI9 Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJMR1BMLTIuMS1vci1s YXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0 ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy9nc3QtcHl0aG9uL2dzdC1weXRob24tJHt2ZXJzaW9ufS50 YXIueHoiCi1jaGVja3N1bT1kYjM0ODEyMGVhZTk1NWI4Y2M0ZGUzNTYwYTdlYTA2ZTM2ZDZlMWRk YmFhOTlhN2FkOTZiNTk4NDY2MDFjZmRjCitjaGVja3N1bT1iZWYyYjNkODJjZTRiZTQ2Yjc3NWIx YmI1NjMwNWMxMDAzZWUwMWI1MzVhNTNhODJmOWZlODkyNDk3MjE1M2FkCmRpZmYgLS1naXQgYS9z cmNwa2dzL2dzdHJlYW1lci12YWFwaS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0cmVhbWVyLXZhYXBp L3RlbXBsYXRlCmluZGV4IDNjYzRlMDU3NTU5YS4uMGE1ZWU4YjFjYTNmIDEwMDY0NAotLS0gYS9z cmNwa2dzL2dzdHJlYW1lci12YWFwaS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdHJlYW1lci12 YWFwaS90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdHJl YW1lci12YWFwaScKIHBrZ25hbWU9Z3N0cmVhbWVyLXZhYXBpCi12ZXJzaW9uPTEuMjAuMwordmVy c2lvbj0xLjIyLjIKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVu ZHM9InBrZy1jb25maWciCkBAIC0xMSw3ICsxMSw3IEBAIGxpY2Vuc2U9IkxHUEwtMi4xLW9yLWxh dGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKIGNoYW5n ZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0dTdHJlYW1lci9nc3RyZWFt ZXItdmFhcGkvbWFzdGVyL0NoYW5nZUxvZyIKIGRpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjL2dz dHJlYW1lci12YWFwaS9nc3RyZWFtZXItdmFhcGktJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1 bT02ZWU5OWViMzE2YWJkZGU5YWQzNzAwMjkxNWJkOGMzODY3OTE4ZjZmZGM3NGI3Y2YyYWM0YzFh ZTBkNjkwYjQ1CitjaGVja3N1bT1kMmU2NDJmOTc0NWY5N2Q5ZjczYTdmNTA4NWU3NjU5YTlhMzFm ZTIwOWI3NzRlNmU0NWRhZTA0MWI0MzVkZjA2CiAKIHByZV9jaGVjaygpIHsKIAkjIFNlZW1zIHRv IG5lZWQgY2VydGFpbiBoYXJkd2FyZSB0byBwYXNzCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdHJl YW1lcjEvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdHJlYW1lcjEvdGVtcGxhdGUKaW5kZXggYWU4YTQ5 Y2IyMGU4Li41NzExNDhmMmZmMzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0cmVhbWVyMS90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2dzdHJlYW1lcjEvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdnc3RyZWFtZXIxJwogcGtnbmFtZT1nc3RyZWFtZXIxCi12ZXJz aW9uPTEuMjAuMwordmVyc2lvbj0xLjIyLjIKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29u CiBidWlsZF9oZWxwZXI9ImdpciIKQEAgLTE2LDcgKzE2LDcgQEAgbWFpbnRhaW5lcj0iT3JwaGFu ZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkxHUEwtMi4wLW9yLWxhdGVyIgog aG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKIGRpc3RmaWxlcz0i JHtob21lcGFnZX0vc3JjL2dzdHJlYW1lci9nc3RyZWFtZXItJHt2ZXJzaW9ufS50YXIueHoiCi1j aGVja3N1bT02MDdkYWY2NGJiYmQ1ZmIxOGFmOWQxN2UyMWMwZDIyYzRkNzAyZmZmZTgzYjIzY2Iy MmQxYjFhZjJjYTIzYTJhCitjaGVja3N1bT1iMmFmZTczNjAzOTIxYzYwOGJhNDg5NjlkYmI3ZDc0 Mzc3Njc0NGJmZTVkODA1OWVjZTI0MTEzN2I3Zjg4ZTIxCiAKIHByZV9jaGVjaygpIHsKIAkjIGdz dF9nc3RkYXRldGltZSBpcyBrbm93biB0byBmYWlsIGFjY29yZGluZyB0byBMRlMKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0ZQppbmRleCA5 ZmI3ZjYwZDY5MmUuLmNjYTBlYjY4Y2ZjMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9tbHQ3L3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ21sdDcnCiBwa2duYW1lPW1sdDcKIHZlcnNpb249Ny4xNC4wCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EU1dJ R19QWVRIT049T04iCiBob3N0bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtnLWNvbmZpZyBsYWRzcGEt c2RrIHN3aWcgcHl0aG9uMyB3aGljaAoKRnJvbSBlOGFhY2I3ZDU2ODg5ODI4ZDcwZTQ4M2VhZDll ZDg3MzE3NGI0ZDQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDcgTWF5IDIwMjMgMjA6MTU6MDMgLTA0MDAKU3ViamVj dDogW1BBVENIIDEwOC8xMTNdIHF0Ni13ZWJlbmdpbmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9x dDYtd2ViZW5naW5lL3RlbXBsYXRlIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlCmlu ZGV4IDRlMjJjYjZlODg2My4uZjk0OGRjOTE5YTE1IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0Ni13 ZWJlbmdpbmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ2LXdlYmVuZ2luZScKIHBrZ25h bWU9cXQ2LXdlYmVuZ2luZQogdmVyc2lvbj02LjUuMAotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIKICAtRFFUX0ZFQVRVUkVfd2ViZW5n aW5lX3N5c3RlbV9mZm1wZWc9T04KCkZyb20gNDg3YTVmZWZmMjQ4Y2Q4YjQ5MjlhOGI0OGZhOTRl ZjFkMzRhY2EwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA3IE1heSAyMDIzIDIwOjE1OjI5IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAxMDkvMTEzXSB0cmFja2VyLW1pbmVyczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL3RyYWNrZXItbWluZXJzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90 cmFja2VyLW1pbmVycy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUK aW5kZXggOGMwMDVkNjk3ZmE0Li5hNmU1YWE1Nzc3MDIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdHJh Y2tlci1taW5lcnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90cmFja2VyLW1pbmVycy90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RyYWNrZXItbWluZXJzJwog cGtnbmFtZT10cmFja2VyLW1pbmVycwogdmVyc2lvbj0zLjUuMAotcmV2aXNpb249MworcmV2aXNp b249NAogYnVpbGRfc3R5bGU9bWVzb24KIGJ1aWxkX2hlbHBlcj1xZW11CiAjIG1pc3NpbmcgbGli Z3JzcyBmb3IgbWluZXJfcnNzCgpGcm9tIGM5YWE1MmJkMTU5ZWU0Nzk4NDc5MTM3MGQ3MjRlNGEw MzUwZjE3NWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFN1biwgNyBNYXkgMjAyMyAyMDoyMDo1OCAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMTEwLzExM10gbXBkOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv bXBkL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tcGQvdGVtcGxhdGUgYi9zcmNwa2dzL21w ZC90ZW1wbGF0ZQppbmRleCA5ZGJkNGM5MzVhY2MuLjlmMDU4YjYyZGYyZiAxMDA2NDQKLS0tIGEv c3JjcGtncy9tcGQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tcGQvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtcGQnCiBwa2duYW1lPW1wZAogdmVyc2lvbj0w LjIzLjEzCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmln dXJlX2FyZ3M9Ii1Eb3B1cz1lbmFibGVkIC1EbWlrbW9kPWVuYWJsZWQgLURuZWlnaGJvcj10cnVl CiAgLURzb3VuZGNsb3VkPWVuYWJsZWQgLURwaXBlPXRydWUgLUR0d29sYW1lPWVuYWJsZWQgLURi emlwMj1lbmFibGVkCgpGcm9tIDQ3MmQxN2FmNzM3ZWM2NWE5OTQxOGEwZGU4ZDAwODg4ZWQ5MDZh ZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFRodSwgMTEgTWF5IDIwMjMgMTQ6MDU6MTQgLTA0MDAKU3ViamVjdDogW1BBVENI IDExMS8xMTNdIG9wZW5tdzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29w ZW5tdy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlIGIvc3JjcGtn cy9vcGVubXcvdGVtcGxhdGUKaW5kZXggZTM3NzFjN2FhZjFhLi4zY2JmMjBiMDY1NzcgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3Blbm13L3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3Blbm13JwogcGtnbmFt ZT1vcGVubXcKIHZlcnNpb249MC40Ny4wCi1yZXZpc2lvbj01CityZXZpc2lvbj02CiBidWlsZF9z dHlsZT1jbWFrZQogX3JlY2FzdF9jb21taXQ9ZTc1YWRmODZmOTFlYjMwODIyMjAwODVlNDJkZGE2 MjY3OWY5YTNlYQogX2J1bGxldF90YWc9My4xNwoKRnJvbSBjOTgzMjEyNzY2ZjkyNTljYzAxYzgz NTZhMDgxZDVlMjg3NTMzZWQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUaHUsIDExIE1heSAyMDIzIDE0OjA1OjM5IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAxMTIvMTEzXSBmcmVlY2FkOiByZXZidW1wIGZvciBxdDUtd2ViZW5n aW5lLTUuMTUuMTMKCi0tLQogc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9mcmVlY2FkL3RlbXBsYXRlIGIvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCmluZGV4IGUz MDFmMzJkMzU0MC4uYTRhM2Y1Zjc2YjI5IDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZyZWVjYWQvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZnJlZWNhZCcKIHBrZ25hbWU9ZnJlZWNhZAogdmVyc2lvbj0wLjIw LjIKLXJldmlzaW9uPTQKK3JldmlzaW9uPTUKIGJ1aWxkX3N0eWxlPWNtYWtlCiAKIF9pbnN0X3By ZWZpeD0vdXNyL2xpYi8ke3BrZ25hbWV9CgpGcm9tIDdiM2IzMzBjNjRiMWU2NmUyNjdkNmRlNjlh YmZiMDQ1YzQ2Nzk4MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMjEgTWF5IDIwMjMgMTI6NDQ6MTEgLTA0MDAKU3Vi amVjdDogW1BBVENIIDExMy8xMTNdIGVsZWN0cm9uMjQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVj dHJvbjI0L3RlbXBsYXRlIGIvc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlCmluZGV4IGJkYWE1 NmFkYzhhNi4uZmYzZDVlM2VmMzgxIDEwMDY0NAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMjQvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnZWxlY3Ryb24yNCcKIHBrZ25hbWU9ZWxlY3Ryb24yNAogdmVy c2lvbj0yNC4zLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9ub2RldmVyPTE4LjE0LjAKIF9j aHJvbWl1bXZlcj0xMTIuMC41NjE1LjE2NQogYXJjaHM9Ing4Nl82NCogYWFyY2g2NCoiCg== --===============3930737053494383068==--