From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 21701 invoked from network); 5 May 2023 13:20:06 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 5 May 2023 13:20:06 -0000 Content-Type: multipart/mixed; boundary="===============3175329988513185431==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_ffmpeg6_split?= To: ml@inbox.vuxu.org From: zlice Reply-to: ml@inbox.vuxu.org Message-ID: Date: Fri, 05 May 2023 15:20:06 +0200 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============3175329988513185431== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IHpsaWNlIGFnYWluc3QgbWFzdGVyIG9uIHRo ZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS96bGljZS92b2lk LXBhY2thZ2VzIGZmbXBlZzYtc3BsaXQKaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9p ZC1wYWNrYWdlcy9wdWxsLzQzNzYxCgpmZm1wZWc2IHNwbGl0CltjaSBza2lwXQ0KDQoNCiMjIyMg VGVzdGluZyB0aGUgY2hhbmdlcw0KDQotIEkgdGVzdGVkIHRoZSBjaGFuZ2VzIGluIHRoaXMgUFI6 ICoqWUVTKioNCg0KbWFpbiB0ZXN0aW5nIGhhcyBiZWVuIHZhYXBpIGluIEZpcmVmb3ggTmlnaHRs eSBhbmQgZW5jL2RlYyBpbiBTaG90Y3V0IG9uIEludGVsIEE3NzANCg0KIyMjIyBOZXcgcGFja2Fn ZQ0KDQotIFRoaXMgbmV3IHBhY2thZ2UgY29uZm9ybXMgdG8gdGhlIFtwYWNrYWdlIHJlcXVpcmVt ZW50c10oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9ibG9iL21h c3Rlci9DT05UUklCVVRJTkcubWQjcGFja2FnZS1yZXF1aXJlbWVudHMpOiAqKllFUyoqDQoNCiMj IyMgTG9jYWwgYnVpbGQgdGVzdGluZw0KDQotIEkgYnVpbHQgdGhpcyBQUiBsb2NhbGx5IGZvciBt eSBuYXRpdmUgYXJjaGl0ZWN0dXJlLCAqKng4Nl82NCoqDQoNCiMjIyMgRGlzY3Vzc2lvbg0KDQpD b250aW51YXRpb24gb2YgaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdl cy9wdWxsLzM2MzE1DQoNCmBsaWJhdnJlc2FtcGxlYCBpcyBkZXByZWNhdGVkLCBidXQgbWFya2Vk IGFzIGEgZGVwZW5kZW5jeSB3aGVuIHRyeWluZyB0byBidWlsZCBvdGhlciBwYWNrYWdlcyBhbmQg aW5zdGFsbCBgZmZtcGVnYCg1KS4gSSB0aGluayB0aGUgcmlnaHQgd2F5IHRvIGhhbmRsZSB0aGlz IGlzIG1ha2UgYSBtZXRhIHBhY2thZ2UgYW5kIHRoZSBhZGQgdG8gcmVtb3ZhbHM/DQoNCg0KIyMj IyMgQ29tbWl0IG5hbWluZyAvIG1pc2MNCg0KQ29tbWl0cyBhcmUgJ2RpcnR5JyByaWdodCBub3cs IHJ1bm5pbmcgd2l0aCBbZ3N0cmVhbWVyIDEuMjIuMSB1cGRhdGVzXShodHRwczovL2dpdGh1Yi5j b20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDI4NjEpIGFuZCBbSW50ZWwgT3BlbkNM XShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDMwODQp LiBUaGlzIHdpbGwgYWxzbyBtYWtlIFtpbnRlbCBwYWNrYWdlcyBwcl0oaHR0cHM6Ly9naXRodWIu Y29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQxMTMyKSBvYnNvbGV0ZS4NCg0KTWFp bnRhaW5lciBmb3IgcHJldmlvdXMgZmZtcGVnKDQpIHdhcyBvcnBoYW5lZCwgSSBjYW4gcHV0IG15 IG5hbWUgaW4gdGhlcmUgaWYgdGhhdCBtYXR0ZXJzLCB0aG91Z2ggSSBkb24ndCBleGFjdGx5IHNl ZSBteXNlbGYga2VlcGluZyB1cCBvbiBmZm1wZWcuDQoNClRoaXMgdXBkYXRlcyBRVDUgd2hpY2gg bG9va3MgbGlrZSBpdCBpcyB1c3VhbGx5IGhvc3RlZCBieSBKb2hubnkuIE5vdCBzdXJlIGlmIHRo ZXJlJ3MgYW55IHJlYXNvbiB0byBzdGF5IHRoZXJlIG9yIHRoZXNlIHNvdXJjZXMgYXJlIGZpbmUu DQoNCiMjIyMjIFNUSUxMIEZGTVBFRzQNCg0KVGhlc2UgYXJlIGEgbWl4IG9mIGVtdWxhdG9ycywg Z2FtZXMgYW5kL29yIG9sZGVyIHBhY2thZ2VzLg0KDQotIGF0dHJhY3QgKG11bHRpcGxlIHBhdGNo ZXMgaW4gbWFzdGVyKQ0KLSBhdWRhY2l0eSAgKDMuMi54IHNob3VsZCB3b3JrIGJ1dCB2b2lkIGlz IG1pc3Npbmcgc29tZSBsaWJzPyB2c3Qzc2RrPykNCi0gY2NleHRyYWN0b3IgKG1hc3RlciBwYXRj aGVzPyBubyByZWxlYXNlKQ0KLSB2aWNlDQotIGtvZGkNCi0gbWx0DQotIHN5bmZpZyAobWx0KQ0K LSB0dmhlYWRlbmQNCi0gc3NyDQotIHNwZWstYWx0ZXJuYXRpdmUNCi0gcHBzc3BwDQotIG9saXZl DQotIG1vYw0KLSBtZWRpYXN0cmVhbWVyDQotIGxpYmV4dHJhY3Rvcg0KLSBpZGpjDQotIGhlZGdl d2Fycw0KLSBmZm1wZWd0aHVtYm5haWxlcg0KLSBmZm1wZWd0aHVtYnMNCi0gZGVhZGJlZWYNCi0g b214cGxheWVyDQotIHF0YXYgKGZvcmsgaGFzIGZmbXBlZyA1IHBhdGNoIC0gaHR0cHM6Ly9naXRo dWIuY29tL2NtZ3VvL1F0QVYpDQotIGB2bGNgICh2bGM0IHdpbGwgc3VwcG9ydCBmZm1wZWc1LCB0 aGVyZSdzIGEgcGF0Y2ggdG8gYnVpbGQgMy54IHdpdGggZmZtcGVnNSBidXQgaXQgd2lsbCBsYWNr IHZhYXBpKQ0KLSBgb3NnYCAoT3BlblNjZW5lR3JhcGggcGx1cyBgeGluZS1saWJgKQ0KLSBgeXRt ZGxgID8gbm90IHN1cmUgYnV0IGl0IHVzZXMgYHB5dGhvbjMtZmZtcGVnLXB5dGhvbmAgd2hpY2gg YmVpbmcgNi04eXIgb2xkIEkgaW1hZ2luZSBpcyBmZm1wZWc0DQoNCg0KIyMjIyMgSEFWRSBOT1Qg QlVJTFQgWUVUDQoNCi0gb214cGxheWVyIChycGkgb25seT8pDQotIGtvZGkgKGJpZywgYnV0IGZm bXBlZzQpDQoNCg0KIyMjIyMgVVBEQVRFRCAoZm9yIGZmbXBlZzUpDQoNCi0gdW5wYXBlcjogdXBk YXRlIHRvIDcuMC4wLg0KLSBndXZjdmlldzogdXBkYXRlIHRvIDIuMC44Lg0KLSBxdDU6IHVwZGF0 ZSB0byA1LjE1LjgNCi0gcXQ1LXdlYmVuZ2luZTogdXBkYXRlIHRvIDUuMTguMTMNCi0gc2hpYm9r ZW4yOiByZXZidW1wIGZvciBxdDUuMTUuOCAocGF0Y2gpDQotIHB5dGhvbjMtcHlzaWRlMjogdXBk YXRlIHRvIDUuMTUuOCAocGF0Y2gpDQoKCkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHVi LmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80Mzc2MS5wYXRjaCBpcyBhdHRhY2hl ZA== --===============3175329988513185431== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSA2ZDUzNzY4OWY3OGRlMWI2NTk1ZmVkNTZkY2I2N2M3YTE4MGI1ZmJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDE5OjU1OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTQwXSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLi93b3JrYXJv dW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0tLQogc3JjcGtn cy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgMzEgKysrKystLS0tLQog NSBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxMzAgZGVsZXRpb25zKC0pCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvZmlsZXMvYWx0aXZlYy5wYXRjaAogZGVsZXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9p bnQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3dvcmth cm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaAoKZGlmZiAtLWdpdCBhL2NvbW1vbi9z aGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDhjNDdlNzliOGM0My4uZDY1MGYyYTMwNDVkIDEw MDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTM5MCwxNSAr MzkwLDIzIEBAIGxpYmlkM3RhZy5zby4wIGxpYmlkM3RhZy0wLjE1LjFiXzEKIGxpYmdpZi5zby43 IGdpZmxpYi01LjEuMF8xCiBsaWJJbWxpYjIuc28uMSBpbWxpYjItMS40LjJfMQogbGlibXAzbGFt ZS5zby4wIGxhbWUtMy45OC4yXzEKLWxpYmF2ZGV2aWNlLnNvLjU4IGxpYmF2ZGV2aWNlLTQuMF8x Ci1saWJhdmZvcm1hdC5zby41OCBsaWJhdmZvcm1hdC00LjBfMQotbGlic3dzY2FsZS5zby41IGxp YnN3c2NhbGUtNC4wXzEKLWxpYnN3cmVzYW1wbGUuc28uMyBsaWJzd3Jlc2FtcGxlLTQuMF8xCi1s aWJhdnJlc2FtcGxlLnNvLjQgbGliYXZyZXNhbXBsZS00LjBfMQotbGlicG9zdHByb2Muc28uNTUg bGlicG9zdHByb2MtNC4wXzEKLWxpYmF2Y29kZWMuc28uNTggbGliYXZjb2RlYy00LjBfMQotbGli YXZ1dGlsLnNvLjU2IGxpYmF2dXRpbC00LjBfMQotbGliYXZmaWx0ZXIuc28uNyBsaWJhdmZpbHRl ci00LjBfMQorbGliYXZkZXZpY2Uuc28uNjAgbGliYXZkZXZpY2UtNi4wXzEKK2xpYmF2Zm9ybWF0 LnNvLjYwIGxpYmF2Zm9ybWF0LTYuMF8xCitsaWJzd3NjYWxlLnNvLjcgbGlic3dzY2FsZS02LjBf MQorbGlic3dyZXNhbXBsZS5zby40IGxpYnN3cmVzYW1wbGUtNi4wXzEKK2xpYnBvc3Rwcm9jLnNv LjU3IGxpYnBvc3Rwcm9jLTYuMF8xCitsaWJhdmNvZGVjLnNvLjYwIGxpYmF2Y29kZWMtNi4wXzEK K2xpYmF2dXRpbC5zby41OCBsaWJhdnV0aWwtNi4wXzEKK2xpYmF2ZmlsdGVyLnNvLjkgbGliYXZm aWx0ZXItNi4wXzEKK2xpYmF2ZGV2aWNlLnNvLjU4IGxpYmF2ZGV2aWNlNC00LjBfMQorbGliYXZm b3JtYXQuc28uNTggbGliYXZmb3JtYXQ0LTQuMF8xCitsaWJzd3NjYWxlLnNvLjUgbGlic3dzY2Fs ZTQtNC4wXzEKK2xpYnN3cmVzYW1wbGUuc28uMyBsaWJzd3Jlc2FtcGxlNC00LjBfMQorbGliYXZy ZXNhbXBsZS5zby40IGxpYmF2cmVzYW1wbGU0LTQuMF8xCitsaWJwb3N0cHJvYy5zby41NSBsaWJw b3N0cHJvYzQtNC4wXzEKK2xpYmF2Y29kZWMuc28uNTggbGliYXZjb2RlYzQtNC4wXzEKK2xpYmF2 dXRpbC5zby41NiBsaWJhdnV0aWw0LTQuMF8xCitsaWJhdmZpbHRlci5zby43IGxpYmF2ZmlsdGVy NC00LjBfMQogbGliU0RMLTEuMi5zby4wIFNETC0xLjIuMTRfMQogbGliU0RMX2ltYWdlLTEuMi5z by4wIFNETF9pbWFnZS0xLjIuMTBfMQogbGlieDI2NC5zby4xNTcgeDI2NC0yMDE5MDUwNy4yMjQ1 XzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2ZWMucGF0Y2ggYi9zcmNw a2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA5YzU3MjAwNDYzMzIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9maWxl cy9hbHRpdmVjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotcmV2ZXJ0IHNv bWUgYWx0aXZlYyBzcGVjaWZpYyBjaGFuZ2Ugb24gYWxsIHBwYyogZXhjZXB0IHBwYzY0bGUqCi0K LXE2NjogIldlIHNob3VsZCBhbHNvIHRocm93IGluIGEgcmV2ZXJ0IG9mIEZGbXBlZy9GRm1wZWdA M2E1NTdjNSBidXQgb25seQotY29uZGl0aW9uYWxseSwgZm9yIHBwYyogYnV0IG5vdCBwcGM2NGxl KiAodGhlIG5ldyBjb2RlIGlzIHZhbGlkIGZvcgotUE9XRVI4IFZTWCB3aGljaCBMRSB0YXJnZXRz IGFzIGEgYmFzZWxpbmUgYnV0IG5vdCBCRSkiCi0KLQotVGhpcyByZXZlcnRzIGNvbW1pdCAzYTU1 N2M1ZDg4YjdiMTViNTk1NGJhMjc0M2ZlYmIwNTU1NDliNTM2LgotLS0tCi0gbGlic3dzY2FsZS9w cGMveXV2MnJnYl9hbHRpdmVjLmMgfCAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0KLSAxIGZp bGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdp dCBhL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jIGIvbGlic3dzY2FsZS9wcGMveXV2 MnJnYl9hbHRpdmVjLmMKLWluZGV4IDUzNjU0NTI5M2QuLmMxZTI4NTJhZGIgMTAwNjQ0Ci0tLS0g YS9saWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYwotKysrIGIvbGlic3dzY2FsZS9wcGMv eXV2MnJnYl9hbHRpdmVjLmMKLUBAIC0zMDUsNiArMzA1LDkgQEAgc3RhdGljIGludCBhbHRpdmVj XyAjIyBuYW1lKFN3c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAg ICAgXAotICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IFIxLCBHMSwgQjE7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIg UiwgRywgQjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAq eTFpdlAsICp5Mml2UCwgKnVpdlAsICp2aXZQOyAgICAgICAgICAgICAgICAgIFwKLSsgICAgdmVj dG9yIHVuc2lnbmVkIGNoYXIgYWxpZ25fcGVybTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3Igc2ln bmVkIHNob3J0IGxDWSAgICAgICA9IGMtPkNZOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsT1kgICAgICAgPSBjLT5PWTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQgc2hv cnQgbENSViAgICAgID0gYy0+Q1JWOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotQEAgLTMzNSwxMyArMzM4LDI2IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFtZShTd3ND b250ZXh0ICpjLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKLSAgICAgICAg IHZlY19kc3RzdChvdXRlLCAoMHgwMjAwMDAwMiB8ICgoKHcgKiAzICsgMzIpIC8gMzIpIDw8IDE2 KSksIDEpOyAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgZm9yIChq ID0gMDsgaiA8IHcgLyAxNjsgaisrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLS0gICAgICAgICAgICB5MCA9IHZlY194bCgwLCB5MWkpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgeTFpdlAgPSAo Y29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgeTFpOyAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgICAgICAgICAgIHkyaXZQID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHky aTsgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB1aXZQICA9IChjb25zdCB2 ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB1aTsgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAg ICAgICAgICAgdml2UCAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdmk7ICAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAg ICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgeTFpKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0rICAgICAgICAgICAgeTAgPSAodmVjdG9yIHVuc2lnbmVkIGNoYXIpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAg ICAgIHZlY19wZXJtKHkxaXZQWzBdLCB5MWl2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgeTEgPSB2ZWNfeGwo MCwgeTJpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MmkpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MSA9ICh2ZWN0b3IgdW5zaWdu ZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAg ICAgICAgICAgICAgICAgdmVjX3Blcm0oeTJpdlBbMF0sIHkyaXZQWzFdLCBhbGlnbl9wZXJtKTsg ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICB1 ID0gKHZlY3RvciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHVpKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0rICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHVpKTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHUgPSAodmVj dG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHVpdlBbMF0sIHVpdlBbMV0sIGFsaWdu X3Blcm0pOyAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAg ICAgICAgICAgIHYgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdmkpOyAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2wo MCwgdmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAg ICAgdiA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odml2UFswXSwgdml2 UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgdmVj X3N1Yih1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LS0tIAotMi4yNy4wCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0 ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL2FybXY1dGVs LWZsb2F0aW5nLXBvaW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTU1 MTc4Yzc0ZjAuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL2FybXY1 dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAot LS0tIGEvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTEwLTI2IDIxOjAzOjAzLjAwMDAw MDAwMCArMDIwMAotKysrIGIvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTExLTIxIDEx OjA2OjQ5LjYwMjI4NDQyMiArMDEwMAotQEAgLTM5LDYgKzM5LDE1IEBACi0gI2VuZGlmCi0gI2lu Y2x1ZGUgPGZlbnYuaD4KLSAKLSsjaWYgKEZFX0FMTF9FWENFUFQgPT0gMCkKLSsvKiBFLmcuIEFS TSBzb2Z0IGZsb2F0IGRvZXMgbm90IGRlZmluZSB0aGVzZSAqLwotKyNkZWZpbmUgRkVfSU5WQUxJ RCAgICAwCi0rI2RlZmluZSBGRV9ESVZCWVpFUk8gIDAKLSsjZGVmaW5lIEZFX09WRVJGTE9XICAg MAotKyNkZWZpbmUgRkVfVU5ERVJGTE9XICAwCi0rI2RlZmluZSBGRV9JTkVYQUNUICAgIDAKLSsj ZW5kaWYKLSsKLSAjaWYgQ09ORklHX0xJQkZPTlRDT05GSUcKLSAjaW5jbHVkZSA8Zm9udGNvbmZp Zy9mb250Y29uZmlnLmg+Ci0gI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZy9wYXRj aGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaCBiL3NyY3BrZ3MvZmZt cGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGUzZjY4YTQxNWIuLjAwMDAwMDAwMDAwMAotLS0g YS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1 Zy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gODExZDI5MDg0NDIw NmZjNzNkYzM5YzNlNWI2N2Q1ZDg5NWJhZWRmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IFJhaW5lciBIb2NoZWNrZXIgPGZlcm5ldG1lbnRhQG9ubGluZS5kZT4KLURhdGU6IFNhdCwg MjYgSmFuIDIwMTkgMTk6NDg6MzUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy92YWFw aV9oMjY0OiBza2lwIGRlY29kZSBpZiBwaWMgaGFzIG5vIHNsaWNlcwotCi1UaGlzIGZpeGVzIC8g d29ya2Fyb3VuZHMgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9 MTA1MzY4LgotSXQgd2FzIGhpdCBmcmVxdWVudGx5IHdoZW4gd2F0Y2hpbmcgaDI2NCBjaGFubmVs cyByZWNlaXZlZCB2aWEgRFZCLVguCi1Db3JyZXNwb25kaW5nIGtvZGkgYnVnOiBodHRwczovL2dp dGh1Yi5jb20veGJtYy94Ym1jL2lzc3Vlcy8xNTcwNAotLS0tCi0gbGliYXZjb2RlYy92YWFwaV9o MjY0LmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZm IC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMgYi9saWJhdmNvZGVjL3ZhYXBpX2gyNjQu YwotaW5kZXggNTg1NDU4N2EyNTUuLmYxMmZkYzQ1N2E0IDEwMDY0NAotLS0tIGEvbGliYXZjb2Rl Yy92YWFwaV9oMjY0LmMKLSsrKyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCi1AQCAtMzE3LDYg KzMxNywxMSBAQCBzdGF0aWMgaW50IHZhYXBpX2gyNjRfZW5kX2ZyYW1lKEFWQ29kZWNDb250ZXh0 ICphdmN0eCkKLSAgICAgSDI2NFNsaWNlQ29udGV4dCAqc2wgPSAmaC0+c2xpY2VfY3R4WzBdOwot ICAgICBpbnQgcmV0OwotIAotKyAgICBpZiAocGljLT5uYl9zbGljZXMgPT0gMCkgewotKyAgICAg ICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsgICAgICAgIGdvdG8gZmluaXNoOwotKyAg ICB9Ci0rCi0gICAgIHJldCA9IGZmX3ZhYXBpX2RlY29kZV9pc3N1ZShhdmN0eCwgcGljKTsKLSAg ICAgaWYgKHJldCA8IDApCi0gICAgICAgICBnb3RvIGZpbmlzaDsKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZmZtcGVnL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUKaW5kZXggMjNhM2Q1 Yzk5NjdiLi4zZDk5ZTUxNzM2OTcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmZtcGVnL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvZmZtcGVnL3RlbXBsYXRlCkBAIC0xLDE1ICsxLDE1IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdmZm1wZWcnCiAjIGF1ZGFjaXR5IGFsc28gbmVlZHMgdG8gYmUgYnVtcGVk IHdoZW4gYSBuZXcgZmZtcGVnIHZlcnNpb24gYnVtcHMgbGliYXZmb3JtYXQncyBzb25hbWUhCiBw a2duYW1lPWZmbXBlZwotdmVyc2lvbj00LjQuMwotcmV2aXNpb249MgordmVyc2lvbj02LjAKK3Jl dmlzaW9uPTEKIHNob3J0X2Rlc2M9IkRlY29kaW5nLCBlbmNvZGluZyBhbmQgc3RyZWFtaW5nIHNv ZnR3YXJlIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxp Y2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cuZmZtcGVnLm9y ZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0ZGbXBlZy9G Rm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly93d3cuZmZtcGVnLm9y Zy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT02YzViNmMxOTVl NjE1MzQ3NjZhMGI1ZmUxNmFjYzkxOTE3MGM4ODMzNjI2MTI4MTZkMGExYzdmNGY5NDcwMDZlCitj aGVja3N1bT01N2JlODdjMjJkOWI0OWMxMTJiNmQyNGJjNjdkNDI1MDg2NjBlNmI3MThiM2RiODlj NDRlNDdlMjg5MTM3MDgyCiAKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBwZXJsIHlhc20i CiBtYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBmcmVldHlwZS1kZXZlbCBhbHNh LWxpYi1kZXZlbCBsaWJYZml4ZXMtZGV2ZWwKQEAgLTI2LDEyICsyNiwxMyBAQCBtYWtlZGVwZW5k cz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBmcmVldHlwZS1kZXZlbCBhbHNhLWxpYi1kZXZlbCBs aWJYZml4ZXMtZGV2ZQogICQodm9wdF9pZiB3ZWJwIGxpYndlYnAtZGV2ZWwpICQodm9wdF9pZiBz b2ZhIGxpYm15c29mYS1kZXZlbCkKICAkKHZvcHRfaWYgZHJtIGxpYmRybS1kZXZlbCkgJCh2b3B0 X2lmIHN2dGF2MSBsaWJzdnQtYXYxLWRldmVsKQogICQodm9wdF9pZiBzcnQgc3J0LWRldmVsKSAk KHZvcHRfaWYgcmlzdCBsaWJyaXN0LWRldmVsKQotICQodm9wdF9pZiB2dWxrYW4gJ3Z1bGthbi1s b2FkZXIgVnVsa2FuLUhlYWRlcnMnKQorICQodm9wdF9pZiB2dWxrYW4gJ3Z1bGthbi1sb2FkZXIg VnVsa2FuLUhlYWRlcnMgVnVsa2FuLVRvb2xzIFZ1bGthbi1WYWxpZGF0aW9uTGF5ZXJzJykKKyAk KHZvcHRfaWYgb25ldnBsICdvbmV2cGwgb25ldnBsLWRldmVsJykKICAkKHZvcHRfaWYgbnZlbmMg bnYtY29kZWMtaGVhZGVycykgJCh2b3B0X2lmIG52ZGVjIG52LWNvZGVjLWhlYWRlcnMpIgogZGVw ZW5kcz0iZmZwbGF5Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgogCiBidWlsZF9vcHRpb25zPSJ4 MjY1IHY0bDIgdmFhcGkgdmRwYXUgdnB4IGZka19hYWMgYW9tIG52ZW5jIHNuZGlvIHB1bHNlYXVk aW8KLSBkYXYxZCB6aW1nIHdlYnAgc29mYSB2dWxrYW4gZHJtIHN2dGF2MSBzcnQgcmlzdCBudmRl YyIKKyBkYXYxZCB6aW1nIHdlYnAgc29mYSB2dWxrYW4gZHJtIHN2dGF2MSBzcnQgcmlzdCBudmRl YyBvbmV2cGwiCiBidWlsZF9vcHRpb25zX2RlZmF1bHQ9IngyNjUgdjRsMiB2cHggYW9tIHNuZGlv IHB1bHNlYXVkaW8gZGF2MWQgd2VicCB2dWxrYW4gZHJtIHNydCByaXN0IgogZGVzY19vcHRpb25f c3J0PSJFbmFibGUgc3VwcG9ydCBmb3IgU1JUIChTZWN1cmUsIFJlbGlhYmxlLCBUcmFuc3BvcnQp IgogZGVzY19vcHRpb25fcmlzdD0iRW5hYmxlIHN1cHBvcnQgZm9yIFJJU1QgKFJlbGlhYmxlIElu dGVybmV0IFN0cmVhbSBUcmFuc3BvcnQpIgpAQCAtMzksNyArNDAsOCBAQCBkZXNjX29wdGlvbl9z b2ZhPSJFbmFibGUgc3VwcG9ydCBmb3IgQUVTIFNPRkEiCiBkZXNjX29wdGlvbl93ZWJwPSJFbmFi bGUgc3VwcG9ydCBmb3IgV2ViUCIKIAogY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0J aTY4Nip8eDg2XzY0KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5j IG52ZGVjIjs7CisJaTY4NiopIGJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSBu dmVuYyBudmRlYyI7OworCXg4Nl82NCopIGJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2 ZHBhdSBudmVuYyBudmRlYyBvbmV2cGwiOzsKIAlwcGM2NCopIGJ1aWxkX29wdGlvbnNfZGVmYXVs dCs9IiB2YWFwaSB2ZHBhdSI7OwogCW1pcHMqKSBDRkxBR1M9Ii1tbmFuPWxlZ2FjeSI7OwogZXNh YwpAQCAtMTE0LDE4ICsxMTYsMTkgQEAgZG9fY29uZmlndXJlKCkgewogCQkkKHZvcHRfZW5hYmxl IHgyNjUgbGlieDI2NSkgXAogCQkkKHZvcHRfZW5hYmxlIHY0bDIgbGlidjRsMikgXAogCQkkKHZv cHRfZW5hYmxlIGFvbSBsaWJhb20pICQodm9wdF9lbmFibGUgdmFhcGkpICQodm9wdF9lbmFibGUg dmRwYXUpIFwKLQkJLS1lbmFibGUtbGliYnMyYiAtLWVuYWJsZS1hdnJlc2FtcGxlIC0tZW5hYmxl LWxpYnZpZHN0YWIgXAorCQktLWVuYWJsZS1saWJiczJiIC0tZW5hYmxlLWxpYnZpZHN0YWIgXAog CQkkKHZvcHRfZW5hYmxlIGRhdjFkIGxpYmRhdjFkKSBcCiAJCSQodm9wdF9lbmFibGUgemltZyBs aWJ6aW1nKSBcCiAJCSQodm9wdF9lbmFibGUgd2VicCBsaWJ3ZWJwKSBcCiAJCSQodm9wdF9lbmFi bGUgc29mYSBsaWJteXNvZmEpIFwKIAkJJCh2b3B0X2VuYWJsZSB2dWxrYW4pIFwKKwkJJCh2b3B0 X2VuYWJsZSBvbmV2cGwgbGlidnBsKSBcCiAJCSQodm9wdF9lbmFibGUgZHJtIGxpYmRybSkgXAog CQkkKHZvcHRfZW5hYmxlIHN2dGF2MSBsaWJzdnRhdjEpIFwKIAkJJCh2b3B0X2VuYWJsZSBzcnQg bGlic3J0KSBcCiAJCSQodm9wdF9lbmFibGUgcmlzdCBsaWJyaXN0KSBcCi0JCSQodm9wdF9pZiBu dmVuYyAnLS1lbmFibGUtbnZlbmMnKSBcCi0JCSQodm9wdF9pZiBudmRlYyAnLS1lbmFibGUtbnZk ZWMnKQorCQkkKHZvcHRfZW5hYmxlIG52ZW5jIG52ZW5jKSBcCisJCSQodm9wdF9lbmFibGUgbnZk ZWMgbnZkZWMpCiB9CiBkb19idWlsZCgpIHsKIAltYWtlICR7bWFrZWpvYnN9CkBAIC0xNDgsMTAg KzE1MSw4IEBAIGxpYmF2ZGV2aWNlX3BhY2thZ2UoKSB7CiAJfQogfQogbGliYXZyZXNhbXBsZV9w YWNrYWdlKCkgewotCXNob3J0X2Rlc2M9IkZGbXBlZyBhdWRpbyByZXNhbXBsaW5nIGxpYnJhcnki Ci0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmF2cmVzYW1wbGUuc28uKiIK LQl9CisJc2hvcnRfZGVzYz0iUGFja2FnZSBkZXByZWNhdGVkLCByZW1vdmFsIG5lZWRlZCIKKwli dWlsZF9zdHlsZT1tZXRhCiB9CiBsaWJhdmZvcm1hdF9wYWNrYWdlKCkgewogCXNob3J0X2Rlc2M9 IkZGbXBlZyBmaWxlIGZvcm1hdCBsaWJyYXJ5IgpAQCAtMTk4LDkgKzE5OSw5IEBAIGZmbXBlZy1k ZXZlbF9wYWNrYWdlKCkgewogCQlsaWJhdmZpbHRlcj49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQog CQlsaWJwb3N0cHJvYz49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQlsaWJzd3NjYWxlPj0ke3Zl cnNpb259XyR7cmV2aXNpb259Ci0JCWxpYnN3cmVzYW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lv bn0KLQkJbGliYXZyZXNhbXBsZT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwkJbGlic3dyZXNh bXBsZT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1l bnQgZmlsZXMiCisJY29uZmxpY3RzPSJmZm1wZWc0LWRldmVsIgogCXBrZ19pbnN0YWxsKCkgewog CQl2bW92ZSB1c3IvaW5jbHVkZQogCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZwoKRnJvbSA2ZjUw NzkxY2Q0Y2I0NjNjNTk2N2UwYzE0MzFiOTg3ZTExNDZiODAwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDE5OjU2OjIyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDIvMTQwXSBOZXcgcGFja2FnZTog ZmZtcGVnNC00LjQuMy4KCi0tLQogc3JjcGtncy9mZm1wZWc0LWRldmVsICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNoICAg ICAgICAgICB8ICA2MCArKysrKwogLi4uL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQu cGF0Y2ggICAgIHwgIDE4ICsrCiAuLi4vd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVn LnBhdGNoICAgfCAgMjggKysrCiBzcmNwa2dzL2ZmbXBlZzQvdGVtcGxhdGUgICAgICAgICAgICAg ICAgICAgICAgfCAyMTQgKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2xpYmF2Y29kZWM0ICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdmRldmljZTQgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZmaWx0ZXI0ICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2Zm9ybWF0NCAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdnJlc2FtcGxlNCAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZ1dGlsNCAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYnBvc3Rwcm9jNCAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJzd3Jlc2FtcGxlNCAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGlic3dzY2FsZTQgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiAxNCBmaWxlcyBjaGFuZ2VkLCAzMzAgaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvZmZtcGVnNC1kZXZlbAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2Et cmVhZGVvbi12YWFwaS1idWcucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBl ZzQvdGVtcGxhdGUKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2Y29kZWM0CiBjcmVh dGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdmRldmljZTQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBz cmNwa2dzL2xpYmF2ZmlsdGVyNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZmb3Jt YXQ0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdnJlc2FtcGxlNAogY3JlYXRlIG1v ZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZ1dGlsNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3Mv bGlicG9zdHByb2M0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJzd3Jlc2FtcGxlNAog Y3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGlic3dzY2FsZTQKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2ZmbXBlZzQtZGV2ZWwgYi9zcmNwa2dzL2ZmbXBlZzQtZGV2ZWwKbmV3IGZpbGUgbW9kZSAx MjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2ZmbXBlZzQtZGV2ZWwKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRp dmVjLnBhdGNoIGIvc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45YzU3MjAwNDYzMzIKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5wYXRjaApAQCAtMCwwICsxLDYw IEBACityZXZlcnQgc29tZSBhbHRpdmVjIHNwZWNpZmljIGNoYW5nZSBvbiBhbGwgcHBjKiBleGNl cHQgcHBjNjRsZSoKKworcTY2OiAiV2Ugc2hvdWxkIGFsc28gdGhyb3cgaW4gYSByZXZlcnQgb2Yg RkZtcGVnL0ZGbXBlZ0AzYTU1N2M1IGJ1dCBvbmx5Citjb25kaXRpb25hbGx5LCBmb3IgcHBjKiBi dXQgbm90IHBwYzY0bGUqICh0aGUgbmV3IGNvZGUgaXMgdmFsaWQgZm9yCitQT1dFUjggVlNYIHdo aWNoIExFIHRhcmdldHMgYXMgYSBiYXNlbGluZSBidXQgbm90IEJFKSIKKworCitUaGlzIHJldmVy dHMgY29tbWl0IDNhNTU3YzVkODhiN2IxNWI1OTU0YmEyNzQzZmViYjA1NTU0OWI1MzYuCistLS0K KyBsaWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYyB8IDI0ICsrKysrKysrKysrKysrKysr KysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQorCitkaWZmIC0tZ2l0IGEvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMgYi9saWJz d3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYworaW5kZXggNTM2NTQ1MjkzZC4uYzFlMjg1MmFk YiAxMDA2NDQKKy0tLSBhL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCisrKysgYi9s aWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYworQEAgLTMwNSw2ICszMDUsOSBAQCBzdGF0 aWMgaW50IGFsdGl2ZWNfICMjIG5hbWUoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hh ciAqKmluLCAgICAgICAgICBcCisgICAgIHZlY3RvciBzaWduZWQgc2hvcnQgUjEsIEcxLCBCMTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3Ig dW5zaWduZWQgY2hhciBSLCBHLCBCOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGNvbnN0IHZlY3RvciB1 bnNpZ25lZCBjaGFyICp5MWl2UCwgKnkyaXZQLCAqdWl2UCwgKnZpdlA7ICAgICAgICAgICAgICAg ICAgXAorKyAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBhbGlnbl9wZXJtOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbENZICAgICAgID0gYy0+Q1k7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxPWSAgICAg ICA9IGMtPk9ZOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdmVj dG9yIHNpZ25lZCBzaG9ydCBsQ1JWICAgICAgPSBjLT5DUlY7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCitAQCAtMzM1LDEzICszMzgsMjYgQEAgc3RhdGljIGludCBhbHRpdmVj XyAjIyBuYW1lKFN3c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAg ICAgXAorICAgICAgICAgdmVjX2RzdHN0KG91dGUsICgweDAyMDAwMDAyIHwgKCgodyAqIDMgKyAz MikgLyAzMikgPDwgMTYpKSwgMSk7ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICAgICBmb3IgKGogPSAwOyBqIDwgdyAvIDE2OyBqKyspIHsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIHkwID0gdmVjX3hsKDAsIHkxaSk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAg ICAgICB5MWl2UCA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB5MWk7ICAgICAgICAg ICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgeTJpdlAgPSAoY29uc3QgdmVjdG9yIHVuc2ln bmVkIGNoYXIgKikgeTJpOyAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHVp dlAgID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHVpOyAgICAgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgICAgICAgICB2aXZQICA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciAqKSB2aTsgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MWkpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB5MCA9ICh2ZWN0b3IgdW5z aWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg ICAgICAgICAgICAgICAgICAgdmVjX3Blcm0oeTFpdlBbMF0sIHkxaXZQWzFdLCBhbGlnbl9wZXJt KTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAg ICB5MSA9IHZlY194bCgwLCB5MmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisrICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkyaSk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkxID0g KHZlY3RvciB1bnNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKysgICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh5Mml2UFswXSwgeTJpdlBbMV0s IGFsaWduX3Blcm0pOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor LSAgICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdWkpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2 c2woMCwgdWkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAg ICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odWl2UFswXSwg dWl2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCistICAgICAgICAgICAgdiA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgw LCB2aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIGFsaWduX3Bl cm0gPSB2ZWNfbHZzbCgwLCB2aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKysgICAgICAgICAgICB2ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICB2ZWNfcGVy bSh2aXZQWzBdLCB2aXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hh cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg ICAgICAgICAgICB2ZWNfc3ViKHUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorLS0gCisyLjI3LjAKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0 L3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQv cGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjlhNTUxNzhjNzRmMAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCkBAIC0w LDAgKzEsMTggQEAKKy0tLSBhL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMJMjAxNy0xMC0yNiAy MTowMzowMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBiL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMJ MjAxNy0xMS0yMSAxMTowNjo0OS42MDIyODQ0MjIgKzAxMDAKK0BAIC0zOSw2ICszOSwxNSBAQAor ICNlbmRpZgorICNpbmNsdWRlIDxmZW52Lmg+CisgCisrI2lmIChGRV9BTExfRVhDRVBUID09IDAp CisrLyogRS5nLiBBUk0gc29mdCBmbG9hdCBkb2VzIG5vdCBkZWZpbmUgdGhlc2UgKi8KKysjZGVm aW5lIEZFX0lOVkFMSUQgICAgMAorKyNkZWZpbmUgRkVfRElWQllaRVJPICAwCisrI2RlZmluZSBG RV9PVkVSRkxPVyAgIDAKKysjZGVmaW5lIEZFX1VOREVSRkxPVyAgMAorKyNkZWZpbmUgRkVfSU5F WEFDVCAgICAwCisrI2VuZGlmCisrCisgI2lmIENPTkZJR19MSUJGT05UQ09ORklHCisgI2luY2x1 ZGUgPGZvbnRjb25maWcvZm9udGNvbmZpZy5oPgorICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9mZm1wZWc0L3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNo IGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGkt YnVnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDBlM2Y2 OGE0MTViCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvd29ya2Fy b3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20g ODExZDI5MDg0NDIwNmZjNzNkYzM5YzNlNWI2N2Q1ZDg5NWJhZWRmOCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IFJhaW5lciBIb2NoZWNrZXIgPGZlcm5ldG1lbnRhQG9ubGluZS5kZT4K K0RhdGU6IFNhdCwgMjYgSmFuIDIwMTkgMTk6NDg6MzUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0g YXZjb2RlYy92YWFwaV9oMjY0OiBza2lwIGRlY29kZSBpZiBwaWMgaGFzIG5vIHNsaWNlcworCitU aGlzIGZpeGVzIC8gd29ya2Fyb3VuZHMgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93 X2J1Zy5jZ2k/aWQ9MTA1MzY4LgorSXQgd2FzIGhpdCBmcmVxdWVudGx5IHdoZW4gd2F0Y2hpbmcg aDI2NCBjaGFubmVscyByZWNlaXZlZCB2aWEgRFZCLVguCitDb3JyZXNwb25kaW5nIGtvZGkgYnVn OiBodHRwczovL2dpdGh1Yi5jb20veGJtYy94Ym1jL2lzc3Vlcy8xNTcwNAorLS0tCisgbGliYXZj b2RlYy92YWFwaV9oMjY0LmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9u cygrKQorCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMgYi9saWJhdmNvZGVj L3ZhYXBpX2gyNjQuYworaW5kZXggNTg1NDU4N2EyNTUuLmYxMmZkYzQ1N2E0IDEwMDY0NAorLS0t IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKKysrKyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5j CitAQCAtMzE3LDYgKzMxNywxMSBAQCBzdGF0aWMgaW50IHZhYXBpX2gyNjRfZW5kX2ZyYW1lKEFW Q29kZWNDb250ZXh0ICphdmN0eCkKKyAgICAgSDI2NFNsaWNlQ29udGV4dCAqc2wgPSAmaC0+c2xp Y2VfY3R4WzBdOworICAgICBpbnQgcmV0OworIAorKyAgICBpZiAocGljLT5uYl9zbGljZXMgPT0g MCkgeworKyAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKKysgICAgICAgIGdvdG8g ZmluaXNoOworKyAgICB9CisrCisgICAgIHJldCA9IGZmX3ZhYXBpX2RlY29kZV9pc3N1ZShhdmN0 eCwgcGljKTsKKyAgICAgaWYgKHJldCA8IDApCisgICAgICAgICBnb3RvIGZpbmlzaDsKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0 ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdiYzY0YmIzOWY0MQot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZQpAQCAtMCwwICsxLDIx NCBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAnZmZtcGVnNCcKKyMgYXVkYWNpdHkgYWxzbyBuZWVk cyB0byBiZSBidW1wZWQgd2hlbiBhIG5ldyBmZm1wZWcgdmVyc2lvbiBidW1wcyBsaWJhdmZvcm1h dCdzIHNvbmFtZSEKK3BrZ25hbWU9ZmZtcGVnNAordmVyc2lvbj00LjQuMworcmV2aXNpb249MQor c2hvcnRfZGVzYz0iRGVjb2RpbmcsIGVuY29kaW5nIGFuZCBzdHJlYW1pbmcgc29mdHdhcmUgLSBm Zm1wZWc0IGxpYnJhcmllcyBvbmx5IgorbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lk bGludXgub3JnPiIKK2xpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCitob21lcGFnZT0iaHR0cHM6 Ly93d3cuZmZtcGVnLm9yZyIKK2NoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRl bnQuY29tL0ZGbXBlZy9GRm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIKK2Rpc3RmaWxlcz0iaHR0cHM6 Ly93d3cuZmZtcGVnLm9yZy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJzaW9ufS50YXIueHoiCitjaGVj a3N1bT02YzViNmMxOTVlNjE1MzQ3NjZhMGI1ZmUxNmFjYzkxOTE3MGM4ODMzNjI2MTI4MTZkMGEx YzdmNGY5NDcwMDZlCisKK2hvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBwZXJsIHlhc20iCitt YWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBmcmVldHlwZS1kZXZlbCBhbHNhLWxp Yi1kZXZlbCBsaWJYZml4ZXMtZGV2ZWwKKyBsaWJYZXh0LWRldmVsIGxpYlh2TUMtZGV2ZWwgbGli eGNiLWRldmVsIGxhbWUtZGV2ZWwgbGlidGhlb3JhLWRldmVsCisgbGlidm9yYmlzLWRldmVsIHgy NjQtZGV2ZWwgeHZpZGNvcmUtZGV2ZWwgamFjay1kZXZlbCBTREwyLWRldmVsCisgbGliY2Rpby1w YXJhbm9pYS1kZXZlbCBsaWJydG1wLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgZ251dGxzLWRldmVs Cisgc3BlZXgtZGV2ZWwgY2VsdC1kZXZlbCBoYXJmYnV6ei1kZXZlbCBsaWJhc3MtZGV2ZWwgb3B1 cy1kZXZlbCBvY2wtaWNkLWRldmVsCisgbGliYnMyYi1kZXZlbCBsaWJ2aWRzdGFiLWRldmVsICQo dm9wdF9pZiBwdWxzZWF1ZGlvIHB1bHNlYXVkaW8tZGV2ZWwpCisgJCh2b3B0X2lmIHZhYXBpIGxp YnZhLWRldmVsKSAkKHZvcHRfaWYgdmRwYXUgbGlidmRwYXUtZGV2ZWwpCisgJCh2b3B0X2lmIHgy NjUgeDI2NS1kZXZlbCkgJCh2b3B0X2lmIHY0bDIgdjRsLXV0aWxzLWRldmVsKQorICQodm9wdF9p ZiBmZGtfYWFjIGZkay1hYWMtZGV2ZWwpICQodm9wdF9pZiB2cHggbGlidnB4LWRldmVsKQorICQo dm9wdF9pZiBhb20gbGliYW9tLWRldmVsKSAkKHZvcHRfaWYgc25kaW8gc25kaW8tZGV2ZWwpCisg JCh2b3B0X2lmIGRhdjFkIGxpYmRhdjFkLWRldmVsKSAkKHZvcHRfaWYgemltZyB6aW1nLWRldmVs KQorICQodm9wdF9pZiB3ZWJwIGxpYndlYnAtZGV2ZWwpICQodm9wdF9pZiBzb2ZhIGxpYm15c29m YS1kZXZlbCkKKyAkKHZvcHRfaWYgZHJtIGxpYmRybS1kZXZlbCkgJCh2b3B0X2lmIHN2dGF2MSBs aWJzdnQtYXYxLWRldmVsKQorICQodm9wdF9pZiBzcnQgc3J0LWRldmVsKSAkKHZvcHRfaWYgcmlz dCBsaWJyaXN0LWRldmVsKQorICQodm9wdF9pZiB2dWxrYW4gJ3Z1bGthbi1sb2FkZXIgVnVsa2Fu LUhlYWRlcnMnKQorICQodm9wdF9pZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSAkKHZvcHRfaWYg bnZkZWMgbnYtY29kZWMtaGVhZGVycykiCisKK2J1aWxkX29wdGlvbnM9IngyNjUgdjRsMiB2YWFw aSB2ZHBhdSB2cHggZmRrX2FhYyBhb20gbnZlbmMgc25kaW8gcHVsc2VhdWRpbworIGRhdjFkIHpp bWcgd2VicCBzb2ZhIHZ1bGthbiBkcm0gc3Z0YXYxIHNydCByaXN0IG52ZGVjIgorYnVpbGRfb3B0 aW9uc19kZWZhdWx0PSJ4MjY1IHY0bDIgdnB4IGFvbSBzbmRpbyBwdWxzZWF1ZGlvIGRhdjFkIHdl YnAgdnVsa2FuIGRybSBzcnQgcmlzdCIKKworZGVzY19vcHRpb25fc3J0PSJFbmFibGUgc3VwcG9y dCBmb3IgU1JUIChTZWN1cmUsIFJlbGlhYmxlLCBUcmFuc3BvcnQpIgorZGVzY19vcHRpb25fcmlz dD0iRW5hYmxlIHN1cHBvcnQgZm9yIFJJU1QgKFJlbGlhYmxlIEludGVybmV0IFN0cmVhbSBUcmFu c3BvcnQpIgorZGVzY19vcHRpb25fc29mYT0iRW5hYmxlIHN1cHBvcnQgZm9yIEFFUyBTT0ZBIgor ZGVzY19vcHRpb25fd2VicD0iRW5hYmxlIHN1cHBvcnQgZm9yIFdlYlAiCisKK2Nhc2UgIiRYQlBT X1RBUkdFVF9NQUNISU5FIiBpbgorCWk2ODYqfHg4Nl82NCopIGJ1aWxkX29wdGlvbnNfZGVmYXVs dCs9IiB2YWFwaSB2ZHBhdSBudmVuYyBudmRlYyI7OworCXBwYzY0KikgYnVpbGRfb3B0aW9uc19k ZWZhdWx0Kz0iIHZhYXBpIHZkcGF1Ijs7CisJbWlwcyopIENGTEFHUz0iLW1uYW49bGVnYWN5Ijs7 Citlc2FjCisKK2lmIFsgIiRYQlBTX1RBUkdFVF9XT1JEU0laRSIgIT0gIjMyIiBdOyB0aGVuCisJ YnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHN2dGF2MSIKK2ZpCisKK2lmIFsgIiRYQlBTX1RBUkdF VF9OT19BVE9NSUM4IiBdOyB0aGVuCisJbWFrZWRlcGVuZHMrPSIgbGliYXRvbWljLWRldmVsIgor ZmkKKworX2FwcGx5X3BhdGNoKCkgeworCWxvY2FsIGFyZ3M9IiQxIiBwbmFtZT0iJChiYXNlbmFt ZSAkMikiCisKKwlpZiBbICEgLWYgIi4ke3BuYW1lfV9kb25lIiBdOyB0aGVuCisJCXBhdGNoIC1O ICRhcmdzIC1pICQyCisJCXRvdWNoIC4ke3BuYW1lfV9kb25lCisJZmkKK30KKworcG9zdF9wYXRj aCgpIHsKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJcHBjNjRsZSopIDs7CisJ CXBwYyopIF9hcHBseV9wYXRjaCAtcDEgJHtGSUxFU0RJUn0vYWx0aXZlYy5wYXRjaCA7OworCWVz YWMKK30KKworZG9fY29uZmlndXJlKCkgeworCSMgRml4IGdjYyBvbiB4ODZfNjQtbXVzbCBvbmx5 CisJaWYgWyAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiID0gIng4Nl82NC1tdXNsIiBdOyB0aGVuCisJ CXNlZCAtaSBjb25maWd1cmUgLWUgInM7X2NmbGFnc19zcGVlZD0nLU8zJztfY2ZsYWdzX3NwZWVk PSctTzInOyIKKwlmaQorCisJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCWNhc2UgIiRY QlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCQkJYXJtKikgX2FyY2g9ImFybSI7OworCQkJYWFyY2g2 NCopIF9hcmNoPSJhYXJjaDY0Ijs7CisJCQltaXBzKikgX2FyY2g9Im1pcHMiOzsKKwkJCXBwYzY0 KikgX2FyY2g9InBwYzY0Ijs7CisJCQlwcGMqKSBfYXJjaD0icHBjIjs7CisJCQkqKSBfYXJjaD0i JHtYQlBTX1RBUkdFVF9NQUNISU5FJSUtbXVzbH0iOzsKKwkJZXNhYworCisJCV9hcmdzKz0iIC0t ZW5hYmxlLWNyb3NzLWNvbXBpbGUKKwkJCS0tc3lzcm9vdD0kWEJQU19DUk9TU19CQVNFCisJCQkt LWNyb3NzLXByZWZpeD0ke1hCUFNfQ1JPU1NfVFJJUExFVH0tCisJCQktLXRhcmdldC1vcz1saW51 eCAtLWFyY2g9JHtfYXJjaH0iCisJZmkKKworCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBp bgorCQlwcGN8cHBjLW11c2wpIF9hcmdzKz0iIC0tZGlzYWJsZS1hbHRpdmVjIjs7CisJZXNhYwor CisJaWYgWyAiJFhCUFNfVEFSR0VUX05PX0FUT01JQzgiIF07IHRoZW4KKwkJX2FyZ3MrPSIgLS1l eHRyYS1saWJzPS1sYXRvbWljIgorCWZpCisKKwkuL2NvbmZpZ3VyZSAtLXByZWZpeD0vdXNyIC0t ZGlzYWJsZS1kZWJ1ZyAtLWVuYWJsZS1ncGwgLS1lbmFibGUtZ251dGxzIFwKKwkJLS1kaXNhYmxl LXN0cmlwcGluZyBcCisJCS0tZW5hYmxlLWxpYmNkaW8gLS1lbmFibGUtdmVyc2lvbjMgLS1lbmFi bGUtcnVudGltZS1jcHVkZXRlY3QgXAorCQktLWVuYWJsZS1saWJtcDNsYW1lIC0tZW5hYmxlLWxp YnZvcmJpcyAtLWVuYWJsZS1saWJ4dmlkIFwKKwkJLS1lbmFibGUtbGlieDI2NCAkKHZvcHRfZW5h YmxlIHZweCBsaWJ2cHgpIC0tZW5hYmxlLWxpYnRoZW9yYSBcCisJCS0tZW5hYmxlLXNoYXJlZCAt LWVuYWJsZS1zdGF0aWMgLS1lbmFibGUtbGlieGNiIFwKKwkJJCh2b3B0X2VuYWJsZSBwdWxzZWF1 ZGlvIGxpYnB1bHNlKSAtLWVuYWJsZS1saWJmcmVldHlwZSAtLWVuYWJsZS1saWJtb2RwbHVnIFwK KwkJLS1lbmFibGUtbGlic3BlZXggLS1lbmFibGUtbGliY2VsdCAtLWVuYWJsZS1saWJhc3MgXAor CQktLWVuYWJsZS1saWJvcHVzIC0tZW5hYmxlLWxpYnJ0bXAgLS1lbmFibGUtbGliamFjayBcCisJ CSQodm9wdF9pZiBmZGtfYWFjICctLWVuYWJsZS1ub25mcmVlIC0tZW5hYmxlLWxpYmZkay1hYWMn KSBcCisJCS0tZGlzYWJsZS1saWJvcGVuY29yZV9hbXJuYiAtLWRpc2FibGUtbGlib3BlbmNvcmVf YW1yd2IgXAorCQktLWRpc2FibGUtbGlib3BlbmpwZWcgXAorCQktLWVuYWJsZS1wb3N0cHJvYyAt LWVuYWJsZS1vcGVuY2wgJHtfYXJnc30gXAorCQkkKHZvcHRfZW5hYmxlIHgyNjUgbGlieDI2NSkg XAorCQkkKHZvcHRfZW5hYmxlIHY0bDIgbGlidjRsMikgXAorCQkkKHZvcHRfZW5hYmxlIGFvbSBs aWJhb20pICQodm9wdF9lbmFibGUgdmFhcGkpICQodm9wdF9lbmFibGUgdmRwYXUpIFwKKwkJLS1l bmFibGUtbGliYnMyYiAtLWVuYWJsZS1hdnJlc2FtcGxlIC0tZW5hYmxlLWxpYnZpZHN0YWIgXAor CQkkKHZvcHRfZW5hYmxlIGRhdjFkIGxpYmRhdjFkKSBcCisJCSQodm9wdF9lbmFibGUgemltZyBs aWJ6aW1nKSBcCisJCSQodm9wdF9lbmFibGUgd2VicCBsaWJ3ZWJwKSBcCisJCSQodm9wdF9lbmFi bGUgc29mYSBsaWJteXNvZmEpIFwKKwkJJCh2b3B0X2VuYWJsZSB2dWxrYW4pIFwKKwkJJCh2b3B0 X2VuYWJsZSBkcm0gbGliZHJtKSBcCisJCSQodm9wdF9lbmFibGUgc3Z0YXYxIGxpYnN2dGF2MSkg XAorCQkkKHZvcHRfZW5hYmxlIHNydCBsaWJzcnQpIFwKKwkJJCh2b3B0X2VuYWJsZSByaXN0IGxp YnJpc3QpIFwKKwkJJCh2b3B0X2lmIG52ZW5jICctLWVuYWJsZS1udmVuYycpIFwKKwkJJCh2b3B0 X2lmIG52ZGVjICctLWVuYWJsZS1udmRlYycpCit9Citkb19idWlsZCgpIHsKKwltYWtlICR7bWFr ZWpvYnN9CisJbWFrZSBkb2MvZmZ7bXBlZyxwbGF5fS4xCit9Citkb19pbnN0YWxsKCkgeworCW1h a2UgREVTVERJUj0ke0RFU1RESVJ9IGluc3RhbGwgaW5zdGFsbC1tYW4KKwlybSAtcmYgJHtERVNU RElSfS91c3IvYmluCit9CisKK2xpYmF2Y29kZWM0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0i RkZtcGVnIGNvZGVjIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGli L2xpYmF2Y29kZWMuc28uKiIKKwl9Cit9CitsaWJhdmRldmljZTRfcGFja2FnZSgpIHsKKwlzaG9y dF9kZXNjPSJGRm1wZWcgZGV2aWNlIGhhbmRsaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7 CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2ZGV2aWNlLnNvLioiCisJfQorfQorbGliYXZyZXNhbXBs ZTRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgYXVkaW8gcmVzYW1wbGluZyBsaWJy YXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJhdnJlc2FtcGxlLnNv LioiCisJfQorfQorbGliYXZmb3JtYXQ0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVn IGZpbGUgZm9ybWF0IGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGli L2xpYmF2Zm9ybWF0LnNvLioiCisJfQorfQorbGliYXZ1dGlsNF9wYWNrYWdlKCkgeworCXNob3J0 X2Rlc2M9IkZGbXBlZyB1dGlsaXR5IGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3Zl ICJ1c3IvbGliL2xpYmF2dXRpbC5zby4qIgorCX0KK30KK2xpYmF2ZmlsdGVyNF9wYWNrYWdlKCkg eworCXNob3J0X2Rlc2M9IkZGbXBlZyBhdWRpby92aWRlbyBmaWx0ZXIgbGlicmFyeSIKKwlwa2df aW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZmaWx0ZXIuc28uKiIKKwl9Cit9Cits aWJwb3N0cHJvYzRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgdmlkZW8gcG9zdHBy b2Nlc3NpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGli cG9zdHByb2Muc28uKiIKKwl9Cit9CitsaWJzd3NjYWxlNF9wYWNrYWdlKCkgeworCXNob3J0X2Rl c2M9IkZGbXBlZyB2aWRlbyBzY2FsaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZt b3ZlICJ1c3IvbGliL2xpYnN3c2NhbGUuc28uKiIKKwl9Cit9CitsaWJzd3Jlc2FtcGxlNF9wYWNr YWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyB2aWRlbyByZXNhbXBsaW5nIGxpYnJhcnkiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnN3cmVzYW1wbGUuc28uKiIKKwl9 Cit9CitmZm1wZWc0LWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iCisJCWxpYmF2Y29kZWM0 Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYmF2ZGV2aWNlND49JHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufQorCQlsaWJhdmZvcm1hdDQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGliYXZ1 dGlsND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdmZpbHRlcjQ+PSR7dmVyc2lvbn1f JHtyZXZpc2lvbn0KKwkJbGlicG9zdHByb2M0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxp YnN3c2NhbGU0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnN3cmVzYW1wbGU0Pj0ke3Zl cnNpb259XyR7cmV2aXNpb259CisJCWxpYmF2cmVzYW1wbGU0Pj0ke3ZlcnNpb259XyR7cmV2aXNp b259IgorCXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwljb25mbGljdHM9ImZm bXBlZy1kZXZlbCIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2luY2x1ZGUKKwkJdm1v dmUgdXNyL2xpYi9wa2djb25maWcKKwkJdm1vdmUgdXNyL2xpYi8qLmEKKwkJdm1vdmUgdXNyL2xp Yi8qLnNvCisJCXZtb3ZlIHVzci9zaGFyZS9mZm1wZWcvZXhhbXBsZXMKKwkJdm1vdmUgdXNyL3No YXJlL21hbi9tYW4zCisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmNvZGVjNCBiL3Ny Y3BrZ3MvbGliYXZjb2RlYzQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAw Li44ODdmMzU0ZTdjNmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2Y29kZWM0CkBA IC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xpYmF2ZGV2aWNlNCBiL3NyY3BrZ3MvbGliYXZkZXZpY2U0Cm5ldyBmaWxl IG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9saWJhdmRldmljZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZmaWx0ZXI0 IGIvc3JjcGtncy9saWJhdmZpbHRlcjQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAw MDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2Zmls dGVyNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmZvcm1hdDQgYi9zcmNwa2dzL2xpYmF2Zm9ybWF0NApu ZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZmb3JtYXQ0CkBAIC0wLDAgKzEgQEAKK2ZmbXBl ZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2 cmVzYW1wbGU0IGIvc3JjcGtncy9saWJhdnJlc2FtcGxlNApuZXcgZmlsZSBtb2RlIDEyMDAwMApp bmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvbGliYXZyZXNhbXBsZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZ1dGlsNCBiL3NyY3BrZ3MvbGli YXZ1dGlsNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRl N2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZ1dGlsNApAQCAtMCwwICsxIEBA CitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9saWJwb3N0cHJvYzQgYi9zcmNwa2dzL2xpYnBvc3Rwcm9jNApuZXcgZmlsZSBtb2RlIDEyMDAw MAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvbGlicG9zdHByb2M0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYnN3cmVzYW1wbGU0IGIvc3JjcGtn cy9saWJzd3Jlc2FtcGxlNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAu Ljg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGlic3dyZXNhbXBsZTQK QEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGlic3dzY2FsZTQgYi9zcmNwa2dzL2xpYnN3c2NhbGU0Cm5ldyBmaWxl IG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9saWJzd3NjYWxlNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKRnJvbSBiNDU2Y2YyZjJkY2IwMzZjODgxMDA5M2RlNTky OWQ0MGRmOGM3YzdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU5OjA0IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMDMvMTQwXSBvcGVuY3Y6IHVwZGF0ZSB0byA0LjcuMC4KCi0tLQogY29tbW9u L3NobGlicyAgICAgICAgICAgfCAxMDQgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLQogc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUgfCAgIDggKystLQogMiBmaWxlcyBjaGFu Z2VkLCA1NiBpbnNlcnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb21t b24vc2hsaWJzIGIvY29tbW9uL3NobGlicwppbmRleCBkNjUwZjJhMzA0NWQuLjQ2MjZjZmRhODEw YiAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC0yMTM3 LDU4ICsyMTM3LDU4IEBAIGxpYmNhcHN0b25lLnNvLjQgY2Fwc3RvbmUtNC4wXzEKIGxpYmhhdmVn ZS5zby4yIGxpYmhhdmVnZWQtMS45LjExXzEKIGxpYm5paC5zby4xIGxpYm5paC0xLjAuM18xCiBs aWJuaWgtZGJ1cy5zby4xIGxpYm5paC0xLjAuM18xCi1saWJvcGVuY3ZfcXVhbGl0eS5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9yZWcuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8x Ci1saWJvcGVuY3Zfc3VyZmFjZV9tYXRjaGluZy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl94cGhvdG8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZnJlZXR5 cGUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZnV6enkuc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaGZzLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGli b3BlbmN2X2ltZ19oYXNoLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2xpbmVf ZGVzY3JpcHRvci5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zYWxpZW5jeS5z by40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zdHJ1Y3R1cmVkX2xpZ2h0LnNvLjQw NiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2FydWNvLnNvLjQwNiBsaWJvcGVuY3YtNC42 LjBfMQotbGlib3BlbmN2X2Jnc2VnbS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl9iaW9pbnNwaXJlZC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9jY2FsaWIu c28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZmFjZS5zby40MDYgbGlib3BlbmN2 LTQuNi4wXzEKLWxpYm9wZW5jdl90cmFja2luZy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl94ZmVhdHVyZXMyZC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9v cHRmbG93LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3hpbWdwcm9jLnNvLjQw NiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3Bsb3Quc28uNDA2IGxpYm9wZW5jdi00LjYu MF8xCi1saWJvcGVuY3ZfdGV4dC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9t bC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9vYmpkZXRlY3Quc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZG5uLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X3NoYXBlLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N0aXRj aGluZy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9waG90by5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl92aWRlby5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9jYWxpYjNkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Zl YXR1cmVzMmQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZmxhbm4uc28uNDA2 IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaGlnaGd1aS5zby40MDYgbGlib3BlbmN2LTQu Ni4wXzEKLWxpYm9wZW5jdl92aWRlb2lvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X2ltZ2NvZGVjcy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9pbWdwcm9j LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2NvcmUuc28uNDA2IGxpYm9wZW5j di00LjYuMF8xCi1saWJvcGVuY3Zfc3VwZXJyZXMuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3ZfdmlkZW9zdGFiLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2dh cGkuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfeG9iamRldGVjdC5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kYXRhc2V0cy5zby40MDYgbGlib3BlbmN2LTQu Ni4wXzEKLWxpYm9wZW5jdl9kbm5fb2JqZGV0ZWN0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X2Rubl9zdXBlcnJlcy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl9kcG0uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcGhhc2VfdW53cmFwcGlu Zy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zdGVyZW8uc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcmFwaWQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3ZfaW50ZW5zaXR5X3RyYW5zZm9ybS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl9hbHBoYW1hdC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9iYXJj b2RlLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X21jYy5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKK2xpYm9wZW5jdl9xdWFsaXR5LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X3JlZy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zdXJmYWNl X21hdGNoaW5nLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3hwaG90by5zby40 MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mcmVldHlwZS5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9mdXp6eS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl9oZnMuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfaW1nX2hhc2guc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfbGluZV9kZXNjcmlwdG9yLnNvLjQwNyBs aWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3NhbGllbmN5LnNvLjQwNyBsaWJvcGVuY3YtNC43 LjBfMQorbGlib3BlbmN2X3N0cnVjdHVyZWRfbGlnaHQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8x CitsaWJvcGVuY3ZfYXJ1Y28uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYmdz ZWdtLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Jpb2luc3BpcmVkLnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2NjYWxpYi5zby40MDcgbGlib3BlbmN2LTQu Ny4wXzEKK2xpYm9wZW5jdl9mYWNlLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2 X3RyYWNraW5nLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3hmZWF0dXJlczJk LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X29wdGZsb3cuc28uNDA3IGxpYm9w ZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfeGltZ3Byb2Muc28uNDA3IGxpYm9wZW5jdi00LjcuMF8x CitsaWJvcGVuY3ZfcGxvdC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl90ZXh0 LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X21sLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X29iamRldGVjdC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl9kbm4uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfc2hhcGUuc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfc3RpdGNoaW5nLnNvLjQwNyBsaWJvcGVu Y3YtNC43LjBfMQorbGlib3BlbmN2X3Bob3RvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X3ZpZGVvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2NhbGliM2Qu c28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZmVhdHVyZXMyZC5zby40MDcgbGli b3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mbGFubi5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEK K2xpYm9wZW5jdl9oaWdoZ3VpLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3Zp ZGVvaW8uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfaW1nY29kZWNzLnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ltZ3Byb2Muc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3ZfY29yZS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5j dl9zdXBlcnJlcy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl92aWRlb3N0YWIu c28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZ2FwaS5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl94b2JqZGV0ZWN0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X2RhdGFzZXRzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Ru bl9vYmpkZXRlY3Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZG5uX3N1cGVy cmVzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2RwbS5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9waGFzZV91bndyYXBwaW5nLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X3N0ZXJlby5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl9yYXBpZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9pbnRlbnNpdHlf dHJhbnNmb3JtLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2FscGhhbWF0LnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2JhcmNvZGUuc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3ZfbWNjLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQogbGlidW5p Y29uZi5zby40LjYgd3ZzdHJlYW1zLTQuNi4xXzIwCiBsaWJ3dmJhc2Uuc28uNC42IHd2c3RyZWFt cy00LjYuMV8yMAogbGlid3Z1dGlscy5zby40LjYgd3ZzdHJlYW1zLTQuNi4xXzIwCmRpZmYgLS1n aXQgYS9zcmNwa2dzL29wZW5jdi90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRlCmlu ZGV4IDY5YzYzNWIxYWQyYi4uNDFmMzE4M2YxNTgyIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5j di90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5jdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5jdicKIHBrZ25hbWU9b3BlbmN2Ci12ZXJzaW9uPTQu Ni4wCi1yZXZpc2lvbj00Cit2ZXJzaW9uPTQuNy4wCityZXZpc2lvbj0xCiBjcmVhdGVfd3Jrc3Jj PXllcwogYnVpbGRfd3Jrc3JjPSR7cGtnbmFtZX0tJHt2ZXJzaW9ufQogYnVpbGRfc3R5bGU9Y21h a2UKQEAgLTI0LDggKzI0LDggQEAgaG9tZXBhZ2U9Imh0dHBzOi8vb3BlbmN2Lm9yZyIKIGNoYW5n ZWxvZz0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3Yvd2lraS9DaGFuZ2VMb2ciCiBk aXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2L2FyY2hpdmUvJHt2ZXJz aW9ufS50YXIuZ3oKICBodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdl9jb250cmliL2Fy Y2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3o+Y29udHJpYi50YXIuZ3oiCi1jaGVja3N1bT0iMWVjMWNi YTY1ZjlmMjBmZTVhNDFmZGExNTg2ZTAxYzcwZWEwYzlhNmQ3YjY3YzllMTNlZGYwY2ZlMjIzOTI3 NwotIDE3NzdkNWZkMmI1OTAyOWNmNTM3ZTVmZDZmOGFhNjhkNzA3MDc1ODIyZjkwYmRlNjgzZmNk ZTA4NmY4NWY3YTciCitjaGVja3N1bT0iOGRmMDA3OWNkYmUxNzk3NDhhMThkNDQ3MzFhZjYyYTI0 NWE0NWViZjUwODUyMjNkYzAzMTMzOTU0YzY2Mjk3MworIDQyZGY4NDBjZjkwNTVlNTlkMGUyMmMy NDljZmIxOWYwNDc0M2UxYmRhZDExM2QzMWIxNTczZDM5MzRkNjI1ODQiCiBwYXRjaF9hcmdzPSIt TnAxIC1kICR7YnVpbGRfd3Jrc3JjfSIKICMgdGVzdHMgaGFuZyBpbmRlbmZpbml0ZWx5LCBldmVu IHdpdGggdGVzdCBkYXRhIGluY2x1ZGVkCiBtYWtlX2NoZWNrPW5vCgpGcm9tIDk4YmEzOTQwNDli NWZmMDBkYmFjZjk3MjIwYzJjMjY5MmVhZmM0YjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6 NTk6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNC8xNDBdIGFjdGlvbmE6IHJldmJ1bXAgZm9y IG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUgYi9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKaW5kZXgg Y2Y1ZjBiN2EyYWU2Li4wZDg5OTMxMWU2ZGYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWN0aW9uYS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdhY3Rpb25hJwogcGtnbmFtZT1hY3Rpb25hCiB2ZXJzaW9uPTMu MTAuMQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3Vy ZV9hcmdzPSJQS0dDT05GSUdfT1BFTkNWPW9wZW5jdjQiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWcgcXQ1LXBsdWdpbi1teXNxbCBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCgpGcm9tIDAz MmJmYWM2ZThkNDA4NmI3ZmEzMTNkZTQ5NTJlYWVlNTY0MDVlOWYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMTk6NTk6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNS8xNDBdIGdtaWM6IHJldmJ1 bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL2dtaWMvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2dtaWMvdGVtcGxhdGUgYi9zcmNwa2dzL2dtaWMvdGVtcGxhdGUKaW5kZXggMjRh OWM3MjE4ZmRmLi4wYmI0MDM0ZDVjYzggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ21pYy90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2dtaWMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdnbWljJwogcGtnbmFtZT1nbWljCiB2ZXJzaW9uPTMuMS42Ci1yZXZpc2lvbj0z CityZXZpc2lvbj00CiBfemFydF9oYXNoPTM0ZWJmNmNjZTBiYWZiOThhYmU1N2NlYzgzYzRhMDJj ZDFhYmVjYTAKIGNyZWF0ZV93cmtzcmM9eWVzCiBidWlsZF93cmtzcmM9InNyYyIKCkZyb20gMzI1 ZDUxNzc4NzlhMjAzMjkwNDk4MDI0MTI2MDg5ZDI3MGViMTJmMCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA2LzE0MF0gcWltZ3Y6IHJldmJ1 bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL3FpbWd2L3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKaW5kZXgg N2ViMzBkYjMzOTkyLi5kZDM0MWRmZTFiZmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcWltZ3YvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3FpbWd2JwogcGtnbmFtZT1xaW1ndgogdmVyc2lvbj0xLjAuMgotcmV2 aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIk KHZvcHRfaWYgdmlkZW8gLURWSURFT19TVVBQT1JUPU9OIC1EVklERU9fU1VQUE9SVD1PRkYpCiAg JCh2b3B0X2lmIHNjYWxlIC1ET1BFTkNWX1NVUFBPUlQ9T04gLURPUEVOQ1ZfU1VQUE9SVD1PRkYp CgpGcm9tIDgxNmMzZjI2ZTBhN2YwYTZlNmE5ZTZkMmQ4NjJkOTNkMzg5Yzg3ZDYgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNy8xNDBdIHJl dHJvc2hhcmU6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL3JldHJvc2hh cmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgYi9zcmNw a2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKaW5kZXggOGEwNzg2YzIxYTA4Li43MjAyM2ZhOThiNzUg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmV0cm9zaGFyZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Jl dHJvc2hhcmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdy ZXRyb3NoYXJlJwogcGtnbmFtZT1yZXRyb3NoYXJlCiB2ZXJzaW9uPTAuNi42Ci1yZXZpc2lvbj0y CityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1xbWFrZQogI1hYWCBicm9hZGNhc3QgZmVhdHVyZSBy ZXF1aXJlcyBhbiBhbmNpZW50IHVkcC1kaXNjb3ZlcnktY3BwIHdoaWNoIGVpdGhlciBuZWVkcwog IyB0byBiZSBmZXRjaGVkK3BhdGNoZWQgKEZUQkZTKSBoZXJlIG9yIHBhY2thZ2VkIDovCgpGcm9t IDE5OWY5Mzg1NGE5YWM3YmQwN2QyM2JiZDA3Y2YwNGExOWM0ZjcyNzIgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwOC8xNDBdIHNpcmlsOiBy ZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy9zaXJpbC90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUgYi9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlCmlu ZGV4IGU4OGYzMGZiNjE3OC4uODQzMzJmNzlkMDYwIDEwMDY0NAotLS0gYS9zcmNwa2dzL3Npcmls L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdzaXJpbCcKIHBrZ25hbWU9c2lyaWwKIHZlcnNpb249MC45LjEy Ci1yZXZpc2lvbj05CityZXZpc2lvbj0xMAogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9z dG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29sIGF1dG9jb25mIGF1dG9tYWtlIGdldHRl eHQtZGV2ZWwiCiBtYWtlZGVwZW5kcz0iZmZ0dy1kZXZlbCBsaWJjb25maWctZGV2ZWwgbGlib3Bl bmN2LWRldmVsIGxpYmZmbXMyLWRldmVsCgpGcm9tIDY3NGY1NzhhNDBmNzY3YWFjMWNiOGFkZDcz M2EyMjY3OWE4OGFiNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3Vi amVjdDogW1BBVENIIDAwOS8xNDBdIHdhaWZ1MngtY29udmVydGVyLWNwcDogcmV2YnVtcCBmb3Ig b3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUgYi9zcmNw a2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0ZQppbmRleCA4YzA5NWQwZDdiYWIuLmFh NTJkOGM5ODFhOCAxMDA2NDQKLS0tIGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVt cGxhdGUKKysrIGIvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3YWlmdTJ4LWNvbnZlcnRlci1jcHAnCiBw a2duYW1lPXdhaWZ1MngtY29udmVydGVyLWNwcAogdmVyc2lvbj01LjIuNAotcmV2aXNpb249Mgor cmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRElOU1RBTExf TU9ERUxTPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSBiNTBhM2QxODll ZWYyZGRmMmZlMzY2MDBkOGIzYjIwMDgyZDkwYjA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAwOjM4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTAvMTQwXSB2bGM6IHJldmJ1bXAgZm9yIGZm bXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy92bGMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy92bGMvdGVtcGxhdGUgYi9zcmNwa2dzL3ZsYy90ZW1wbGF0ZQppbmRleCAyMTA3NjJiMGE3 ZTIuLjg1NWNhNTIzODY2MiAxMDA2NDQKLS0tIGEvc3JjcGtncy92bGMvdGVtcGxhdGUKKysrIGIv c3JjcGtncy92bGMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICd2bGMnCiBwa2duYW1lPXZsYwogdmVyc2lvbj0zLjAuMTgKLXJldmlzaW9uPTMKK3JldmlzaW9u PTQKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUt Z21lIC0tZGlzYWJsZS1saWJ0YXIgLS1lbmFibGUtamFjawogIC0tZW5hYmxlLWxpdmU1NTUgLS1k aXNhYmxlLWZsdWlkc3ludGggLS1lbmFibGUtZHZkcmVhZApAQCAtMjUsNyArMjUsNyBAQCBsaWIz MmRpc2FibGVkPXllcwogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBsaWJ0b29sIHBrZy1jb25m aWcgZmxleCBnZXR0ZXh0IGxpYmdjcnlwdC1kZXZlbAogIGxpdmU1NTUtZGV2ZWwgZ2V0dGV4dC1k ZXZlbCAkKHZvcHRfaWYgbHVhIGx1YTUyKSAkKHZvcHRfaWYgY2hyb21lY2FzdCBwcm90b2J1Ziki CiBtYWtlZGVwZW5kcz0iCi0gYXZhaGktbGlicy1kZXZlbCBkYnVzLWdsaWItZGV2ZWwgZmFhZDIt ZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWVmb250LXR0ZgorIGF2YWhpLWxpYnMtZGV2ZWwgZGJ1cy1n bGliLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZzQtZGV2ZWwgZnJlZWZvbnQtdHRmCiAgZ251dGxz LWRldmVsIGphY2stZGV2ZWwgbGliYTUyLWRldmVsIGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2 ZWwKICBsaWJjZGlvLWRldmVsIGxpYmRjYS1kZXZlbCBsaWJkdmJwc2ktZGV2ZWwgbGliZHZkbmF2 LWRldmVsIGxpYm1hZC1kZXZlbAogIGxpYm1hdHJvc2thLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwg bGlibXBjZGVjLWRldmVsIGxpYm1wZWcyLWRldmVsCgpGcm9tIDY3ZTA3NGRkMWE0Mzc2Y2E3ZWNh ZDI4YzZjODEwZWMxOWI1OGExN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDA6NTUgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAxMS8xNDBdIG9zZzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQu MwoKLS0tCiBzcmNwa2dzL29zZy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3NnL3RlbXBs YXRlIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUKaW5kZXggYTllYmJkMjg3OTMzLi43NTU3OTNmN2Ux MWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3NnL3Rl bXBsYXRlCkBAIC04LDcgKzgsNyBAQCBidWlsZF9oZWxwZXI9InFlbXUiCiBjb25maWd1cmVfYXJn cz0iLURMSUJfUE9TVEZJWD0iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgeHJhbmRyIgog bWFrZWRlcGVuZHM9Ik1lc2FMaWItZGV2ZWwgZ3RrZ2xleHQtZGV2ZWwgbGliY3VybC1kZXZlbCBn aWZsaWItZGV2ZWwgbGlicnN2Zy1kZXZlbAotIGphc3Blci1kZXZlbCB0aWZmLWRldmVsIGxpYmdk YWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZy1kZXZlbCB4aW5lLWxpYi1kZXZlbAorIGphc3Bl ci1kZXZlbCB0aWZmLWRldmVsIGxpYmdkYWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZzQtZGV2 ZWwgeGluZS1saWItZGV2ZWwKICBTREwyLWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsCiAg JCh2b3B0X2lmIG9wZW5leHIgbGlib3BlbmV4ci1kZXZlbCkKICAkKHZvcHRfaWYgcG9wcGxlciBw b3BwbGVyLWdsaWItZGV2ZWwpCgpGcm9tIGEwMmQxMDZmZjY3MjZhMGJhMDNkNmFkYWM2NmU1ZTM4 ZTU2OWE5OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6MTMgLTA0MDAKU3ViamVjdDog W1BBVENIIDAxMi8xNDBdIHhpbmUtbGliOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0K IHNyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMg aW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3hpbmUt bGliL3RlbXBsYXRlIGIvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZQppbmRleCBmNzEzZWZmNDli MDcuLmVkNjE5NGMxN2QxMSAxMDA2NDQKLS0tIGEvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3hpbmUtbGliL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAneGluZS1saWInCiBwa2duYW1lPXhpbmUtbGliCi12ZXJzaW9uPTEuMi4xMgor dmVyc2lvbj0xLjIuMTMKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNv bmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtdmNkIC0tZGlzYWJsZS1nbm9tZXZmcyAtLXdpdGhvdXQt ZXNvdW5kIC0tZGlzYWJsZS1keHIzCkBAIC04LDcgKzgsNyBAQCBjb25maWd1cmVfYXJncz0iLS1k aXNhYmxlLXZjZCAtLWRpc2FibGUtZ25vbWV2ZnMgLS13aXRob3V0LWVzb3VuZCAtLWRpc2FibGUt ZHhyMwogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBnZXR0ZXh0LWRldmVsIGxpYnRvb2wgcGtn LWNvbmZpZyBwZXJsIgogbWFrZWRlcGVuZHM9IgogIHpsaWItZGV2ZWwgYWxzYS1saWItZGV2ZWwg bGlieGNiLWRldmVsIGxpYlNNLWRldmVsIGxpYlhleHQtZGV2ZWwgbGliWHYtZGV2ZWwKLSBsaWJY dk1DLWRldmVsIGxpYmE1Mi1kZXZlbCBsaWJtYWQtZGV2ZWwgZmZtcGVnLWRldmVsIHB1bHNlYXVk aW8tZGV2ZWwKKyBsaWJYdk1DLWRldmVsIGxpYmE1Mi1kZXZlbCBsaWJtYWQtZGV2ZWwgZmZtcGVn NC1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAgamFjay1kZXZlbCBzYW1iYS1kZXZlbCBsaWJmbGFj LWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGlibXBjZGVjLWRldmVsCiAgc3BlZXgtZGV2ZWwgbGli dGhlb3JhLWRldmVsIGxpYnZvcmJpcy1kZXZlbCBsaWJkY2EtZGV2ZWwgZmFhZDItZGV2ZWwKICBs aWJjZGlvLWRldmVsIGxpYmJsdXJheS1kZXZlbCBhYWxpYi1kZXZlbCBsaWJjYWNhLWRldmVsIGxp YlhpbmVyYW1hLWRldmVsCkBAIC0xOSw3ICsxOSw3IEBAIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0 ZXIsIExHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHA6Ly93d3cueGluZS1wcm9qZWN0 Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMveGluZS9m aWxlcy94aW5lLWxpYi8ke3ZlcnNpb259L1JFQURNRS50eHQvdmlldyIKIGRpc3RmaWxlcz0iJHtT T1VSQ0VGT1JHRV9TSVRFfS94aW5lLyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVj a3N1bT1kNjA2MjcwNDY4ZTE1NDBjMmE4OWMwZDdmNWZkZjExZTE3ZWNjMGMyNjk4Y2MwYmNiMTA2 NWZmMjZhYmVlMDk4CitjaGVja3N1bT01ZjEwZDZkNzE4YTRhNTFjMTdlZDFiMzJiMDMxZDRmOWI4 MGIwNjFlODI3NjUzNWIyYmUzMWU1YWM0Yjc1ZTZmCiAKIGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNI SU5FIiBpbgogCWk2ODYtbXVzbCkKCkZyb20gMDRlNmUzNDU1MzUwOTgxNjAyYjZiZjljYWM4MWUw MjRiZGE4M2U3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDEzLzE0MF0gUU1QbGF5MjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL1FNUGxheTIvdGVtcGxh dGUgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKaW5kZXggYWQ3M2NiYjAxYmFlLi41NTI4NGMw NTExNjEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvUU1QbGF5Mi90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L1FNUGxheTIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdR TVBsYXkyJwogcGtnbmFtZT1RTVBsYXkyCiB2ZXJzaW9uPTIzLjAyLjA1Ci1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKIG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBm Zm1wZWctZGV2ZWwgbGliYXNzLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliZ21lLWRldmVsCgpGcm9t IDVmYjM5NmEzMDQ1NzZlNjIzMTUwNDM5ZWQ2ZmZlNDBjMWZlYWNlZWIgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNC8xNDBdIGFsc2EtcGx1 Z2luczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Fsc2EtcGx1Z2lucy90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtn cy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUKaW5kZXggMGJmYTZkOWZkMjY0Li5hNTcwOGE3ZDgyYTgg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv YWxzYS1wbHVnaW5zL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnYWxzYS1wbHVnaW5zJwogcGtnbmFtZT1hbHNhLXBsdWdpbnMKIHZlcnNpb249MS4yLjcuMQot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmln dXJlX2FyZ3M9Ii0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWciCgpGcm9tIDQ1YjYxMTdkZTViYzE4YjhjNGNjYWNjMGJhNTFiZjczYTc5ZmFjYjkgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNS8x NDBdIGFyY2FuOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYXJjYW4vdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlIGIvc3JjcGtncy9hcmNhbi90 ZW1wbGF0ZQppbmRleCA3YmU5NjUyZWNjZjMuLmNjYzdkZjExY2VhYyAxMDA2NDQKLS0tIGEvc3Jj cGtncy9hcmNhbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlCkBAIC0yLDcg KzIsNyBAQAogIyAhISBrZWVwIHN5bmNlZCB3aXRoOiBhY2ZnZnMgYWNsaXAgYWxvYWRpbWFnZQog cGtnbmFtZT1hcmNhbgogdmVyc2lvbj0wLjYuMi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBj cmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jrc3JjPWFyY2FuL3NyYwogYnVpbGRfc3R5bGU9Y21h a2UKCkZyb20gN2Q3ZjE3ZTJiZDkzNTg4MTBkMmY1MzIzZjA3OGFjYWMxNmIwZGJlZiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE2LzE0MF0g YXR0cmFjdDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2F0dHJhY3Qv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlIGIvc3JjcGtn cy9hdHRyYWN0L3RlbXBsYXRlCmluZGV4IDI2MTQ0ZTkzMWEzYy4uZTc2MGJmMGQxOGFlIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdHRyYWN0L3Rl bXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhdHRyYWN0Jwog cGtnbmFtZT1hdHRyYWN0CiB2ZXJzaW9uPTIuNi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfYnVpbGRfYXJncz0iVkVSQk9TRT0xIgogbWFr ZV91c2VfZW52PXllcwogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9 IlNGTUwtZGV2ZWwgZmZtcGVnLWRldmVsIGZvbnRjb25maWctZGV2ZWwgZ2x1LWRldmVsIGxpYmFy Y2hpdmUtZGV2ZWwKK21ha2VkZXBlbmRzPSJTRk1MLWRldmVsIGZmbXBlZzQtZGV2ZWwgZm9udGNv bmZpZy1kZXZlbCBnbHUtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbAogIGxpYmN1cmwtZGV2ZWwgbGli anBlZy10dXJiby1kZXZlbCB4aW5lLWxpYiByYXBpZGpzb24gbGliWHJhbmRyLWRldmVsIgogZGVw ZW5kcz0iZ2l0Igogc2hvcnRfZGVzYz0iQXR0cmFjdC1Nb2RlIGlzIGEgZ3JhcGhpY2FsIGZyb250 ZW5kIGZvciBlbXVsYXRvcnMiCgpGcm9tIDJlODBiMGM5MjBmNjMxMWQ3N2E4YzRhMDU5ODJkOTQ3 NmJmYjBiYTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDog W1BBVENIIDAxNy8xNDBdIGF1YmlvOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMjUgKysrKysrKysrKysrKysrKysrKysr KysrKwogc3JjcGtncy9hdWJpby90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxl cyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2F1YmlvL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvYXViaW8vcGF0Y2hl cy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u YWFjZTQxYTZlNmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9hdWJpby9wYXRjaGVzL2Zm bXBlZzUucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSA4YTA1NDIwZTVkZDhjN2I4YjI0NDdm ODJkYzkxOTc2NTg3NjUxMWIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBC cm9zc2llciA8cGllbUBwaWVtLm9yZz4KK0RhdGU6IFR1ZSwgMjUgSmFuIDIwMjIgMTg6MzA6Mjcg KzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW3NvdXJjZV9hdmNvZGVjXSBkZWZpbmUgRkZfQVBJX0xB VkZfQVZDVFggZm9yIGxpYmF2Y29kZWMgPgorIDU5LCB0aHggQGJlcm9saW51eCAoY2xvc2VzIGdo LTM1MykKKworLS0tCisgc3JjL2lvL3NvdXJjZV9hdmNvZGVjLmMgfCA0ICsrKysKKyAxIGZpbGUg Y2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvaW8vc291cmNlX2F2 Y29kZWMuYyBiL3NyYy9pby9zb3VyY2VfYXZjb2RlYy5jCitpbmRleCBlMGFlOTNiNS4uMTQyMWJk OWEgMTAwNjQ0CistLS0gYS9zcmMvaW8vc291cmNlX2F2Y29kZWMuYworKysrIGIvc3JjL2lvL3Nv dXJjZV9hdmNvZGVjLmMKK0BAIC02OCw2ICs2OCwxMCBAQAorICNkZWZpbmUgQVVCSU9fQVZDT0RF Q19NQVhfQlVGRkVSX1NJWkUgQVZfSU5QVVRfQlVGRkVSX01JTl9TSVpFCisgI2VuZGlmCisgCisr I2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA+PSA1OQorKyNkZWZpbmUgRkZfQVBJX0xBVkZf QVZDVFggMQorKyNlbmRpZgorKworIHN0cnVjdCBfYXViaW9fc291cmNlX2F2Y29kZWNfdCB7Cisg ICB1aW50X3QgaG9wX3NpemU7CisgICB1aW50X3Qgc2FtcGxlcmF0ZTsKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvYXViaW8vdGVtcGxhdGUgYi9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlCmluZGV4IGFkMWM0 YjI1Njk5MS4uN2Q4NzVjYzAyNTQxIDEwMDY0NAotLS0gYS9zcmNwa2dzL2F1YmlvL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvYXViaW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdhdWJpbycKIHBrZ25hbWU9YXViaW8KIHZlcnNpb249MC40LjkKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXdhZjMKICMgWFhYIGxhc2gsIHB1cmUgYW5kIHN3 aWcgc3VwcG9ydC4KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB0eHQybWFuIgoKRnJvbSA3 ZmIwMWNjNWU3M2EyMTU0MjJiZDcyZjlmYThiNWZjMjZjNzQwMGExIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTgvMTQwXSBhdWRhY2lvdXMt cGx1Z2luczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vYXVkYWNpb3VzLXBsdWdp bnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoICAgfCA0MyArKysrKysrKysrKysrKysrKysrCiBzcmNw a2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlICAgICAgICAgICAgfCAgMiArLQogMiBmaWxl cyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRj aCBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGU1ZTM0MDk5ZDcxCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2gKQEAgLTAsMCArMSw0MyBAQAorY29tbWl0IDI5OGFhMzcxYzU2YzJmNTJjMjVhMzNkOWJkZWM0 OTE4YjExY2ViZGMKK0F1dGhvcjogdGliZXF1YWRvcmlhbiA8dGliZXF1YWRvcmlhbkBwb3N0ZW8u ZGU+CitEYXRlOiAgIFNhdCBNYXIgMTkgMTg6NDA6MTIgMjAyMiArMDEwMAorCisgICAgYXVkYWNp b3VzLXBsdWdpbnM6IHJlYnVpbGQgYWdhaW5zdCBmZm1wZWctNS4wCisKK2RpZmYgLS1naXQgYS9z cmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnLTUuMC5wYXRjaCBiL3NyY3Br Z3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWctNS4wLnBhdGNoCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNjE3YzExMjE1YgorLS0tIC9kZXYvbnVsbAor KysrIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZy01LjAucGF0Y2gK K0BAIC0wLDAgKzEsMzEgQEAKKytGcm9tIGY2MGJlYjQwMGVlYjFlNDc3OGJiZmQ3MzhiYzRhNGNj ZWYzZGU1MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCisrRnJvbTogSm9obiBMaW5kZ3JlbiA8 am9obkBqbGluZGdyZW4ubmV0PgorK0RhdGU6IFNhdCwgNSBNYXIgMjAyMiAxMjowNTozNCAtMDUw MAorK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggRkZtcGVnIDUuMAorKworKy0tLQor KyBzcmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUuY2MgfCA0ICsrLS0KKysgMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKysKKytkaWZmIC0tZ2l0IGEvc3JjL2Zm YXVkaW8vZmZhdWRpby1jb3JlLmNjIGIvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisraW5k ZXggMTZkYzYzZTNhLi5hMmI5NWZkNmMgMTAwNjQ0CisrLS0tIGEvc3JjL2ZmYXVkaW8vZmZhdWRp by1jb3JlLmNjCisrKysrIGIvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisrQEAgLTI3NCw3 ICsyNzQsNyBAQCBzdGF0aWMgQVZJbnB1dEZvcm1hdCAqIGdldF9mb3JtYXRfYnlfY29udGVudCAo Y29uc3QgY2hhciAqIG5hbWUsIFZGU0ZpbGUgJiBmaWxlKQorKyAgICAgICAgIEFWUHJvYmVEYXRh IGQgPSB7bmFtZSwgYnVmLCBmaWxsZWR9OworKyAgICAgICAgIHNjb3JlID0gdGFyZ2V0OworKyAK KystICAgICAgICBmID0gYXZfcHJvYmVfaW5wdXRfZm9ybWF0MiAoJiBkLCB0cnVlLCAmIHNjb3Jl KTsKKysrICAgICAgICBmID0gKEFWSW5wdXRGb3JtYXQgKikgYXZfcHJvYmVfaW5wdXRfZm9ybWF0 MiAoJiBkLCB0cnVlLCAmIHNjb3JlKTsKKysgICAgICAgICBpZiAoZikKKysgICAgICAgICAgICAg YnJlYWs7CisrIAorK0BAIC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIGJvb2wgZmluZF9jb2RlYyAo QVZGb3JtYXRDb250ZXh0ICogYywgQ29kZWNJbmZvICogY2luZm8pCisrICNlbmRpZgorKyAgICAg ICAgIGlmIChzdHJlYW0gJiYgc3RyZWFtLT5jb2RlY3BhciAmJiBzdHJlYW0tPmNvZGVjcGFyLT5j b2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykKKysgICAgICAgICB7CisrLSAgICAgICAg ICAgIEFWQ29kZWMgKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVj cGFyLT5jb2RlY19pZCk7CisrKyAgICAgICAgICAgIEFWQ29kZWMgKiBjb2RlYyA9IChBVkNvZGVj ICopIGF2Y29kZWNfZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCk7Cisr IAorKyAgICAgICAgICAgICBpZiAoY29kZWMpCisrICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dzL2F1ZGFjaW91cy1w bHVnaW5zL3RlbXBsYXRlCmluZGV4IDg4Y2JjMTY3MWZjNi4uYmVlYmZhZTU5ZWQ0IDEwMDY0NAot LS0gYS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYXVk YWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiAjS2VlcCBpbiBzeW5jIHdp dGggYXVkYWNpb3VzIQogcGtnbmFtZT1hdWRhY2lvdXMtcGx1Z2lucwogdmVyc2lvbj00LjMuMQot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdz PSIkKHZvcHRfYm9vbCBndGszIGd0aykgJCh2b3B0X2Jvb2wgZ3RrMykKICAkKHZvcHRfYm9vbCBx dCkgJCh2b3B0X2Jvb2wgcXQgcXQ2KSIKCkZyb20gYzg5NTVhMTM2NzBiYWExMmRhMmY2OGM2ODAy ZTIzYmY1YmRkYTY0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDE5LzE0MF0gYXVkYWNpdHk6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMK Ci0tLQogc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZSB8IDUgKystLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9h dWRhY2l0eS90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKaW5kZXggZDUwOWMw YTg5NDA3Li4xMWUyMDI1NTY4NWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2F1ZGFjaXR5JwogcGtnbmFtZT1hdWRhY2l0eQogdmVyc2lvbj0yLjQu MQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29u ZmlndXJlX2FyZ3M9Ii0td2l0aC1mZm1wZWc9c3lzdGVtIC0td2l0aC1saWJzbmRmaWxlPXN5c3Rl bSAtLXdpdGgtZXhwYXQ9c3lzdGVtCiAgLS13aXRoLWxpYnNveHI9c3lzdGVtIC0td2l0aC1sYW1l PXN5c3RlbSAtLXdpdGgtbHYyPXN5c3RlbSBhY19jdl9wYXRoX1dYX0NPTkZJRz13eC1jb25maWct Z3RrMyIKQEAgLTksNyArOSw3IEBAIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBjbWFrZSBn ZXR0ZXh0IGxpYnRvb2wgbTQgd2hpY2giCiBtYWtlZGVwZW5kcz0iamFjay1kZXZlbCB3eFdpZGdl dHMtZ3RrMy1kZXZlbCBndGsrMy1kZXZlbAogIGxpYm1hZC1kZXZlbCBzb3VuZHRvdWNoLWRldmVs IGxpYnNveHItZGV2ZWwKICB2YW1wLXBsdWdpbi1zZGstZGV2ZWwgbGFtZS1kZXZlbCBsaWJpZDN0 YWctZGV2ZWwgbGliZmxhYy1kZXZlbAotIGZmbXBlZy1kZXZlbCB0d29sYW1lLWRldmVsIHNlcmQt ZGV2ZWwgbHYyIGxpbHYtZGV2ZWwgc3VpbC1kZXZlbCIKKyBmZm1wZWc0LWRldmVsIHR3b2xhbWUt ZGV2ZWwgc2VyZC1kZXZlbCBsdjIgbGlsdi1kZXZlbCBzdWlsLWRldmVsIgogZGVwZW5kcz0iZGVz a3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNvbi10aGVtZSIKIHNob3J0X2Rlc2M9IkdyYXBoaWNh bCBjcm9zcy1wbGF0Zm9ybSBhdWRpbyBlZGl0b3IiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3Jw aGFuQHZvaWRsaW51eC5vcmc+IgpAQCAtMzMsNSArMzMsNCBAQCBwb3N0X2luc3RhbGwoKSB7CiAJ dmNvcHkgcGx1Zy1pbnMgL3Vzci9zaGFyZS9hdWRhY2l0eQogCiAJcm0gJHtERVNURElSfS91c3Iv c2hhcmUvZG9jL2F1ZGFjaXR5L0xJQ0VOU0UudHh0Ci0JdmxpY2Vuc2UgTElDRU5TRS50eHQgTElD RU5TRQogfQoKRnJvbSAxNDU5ODVjMGI2MmVlNGIxODg4MzMyYTViZTgyNTZkNmFkY2I1ZGNhIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjAv MTQwXSBhdmlkZW11eDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2F2aWRl bXV4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZSBiL3NyY3Br Z3MvYXZpZGVtdXgvdGVtcGxhdGUKaW5kZXggMjUzYTAyNDNlMjI1Li41NTcyODU5ODJkMmIgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdmlkZW11 eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F2aWRlbXV4 JwogcGtnbmFtZT1hdmlkZW11eAogdmVyc2lvbj0yLjguMAotcmV2aXNpb249MgorcmV2aXNpb249 MwogIyBDYW4ndCBiZSBjb21waWxlZCBmb3IgYWFyY2g2NCwgYXJtKiBvciBtaXBzKgogYXJjaHM9 Ing4Nl82NCogaTY4NioiCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1jb25maWcgcXQ1LWhv c3QtdG9vbHMgcXQ1LWRldmVsIHRhciB5YXNtIgoKRnJvbSAxYjMxNDA1NDgxMGU4ZGU2NjE2MTJl ZTQwMDE1ZGMwNDMxNDFhZTNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMjEvMTQwXSBiYXJlc2lwOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFyZXNp cC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQppbmRleCBmMWJkMTgxNzA0OGIu LmIyMWUyMjMzNDMxNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ2JhcmVzaXAnCiBwa2duYW1lPWJhcmVzaXAKIHZlcnNpb249Mi4xMC4wCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5kcz0ibGliZ3NtLWRldmVsIGxpYnBuZy1kZXZl bCBvcGVuc3NsLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwKCkZyb20gZmQ1NWRlNzczMjI0MzAyYTQ0 ZmIwNzlmZTljZjVmMDkxM2U5Y2U5NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIyLzE0MF0gYmxlbmRlcjogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiAuLi4vcGF0Y2hlcy9mZm1wZWc2LWNvbXBhdC1ibGVuZGVyLnBhdGNoICAgICAg fCA0MiArKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUgICAgICAg ICAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9ibGVuZGVyL3BhdGNo ZXMvZmZtcGVnNi1jb21wYXQtYmxlbmRlci5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmxl bmRlci9wYXRjaGVzL2ZmbXBlZzYtY29tcGF0LWJsZW5kZXIucGF0Y2ggYi9zcmNwa2dzL2JsZW5k ZXIvcGF0Y2hlcy9mZm1wZWc2LWNvbXBhdC1ibGVuZGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDUxYTljNzcxMGNjCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9ibGVuZGVyL3BhdGNoZXMvZmZtcGVnNi1jb21wYXQtYmxlbmRlci5wYXRjaApAQCAt MCwwICsxLDQyIEBACistLS0gYS9zb3VyY2UvYmxlbmRlci9ibGVua2VybmVsL2ludGVybi93cml0 ZWZmbXBlZy5jCTIwMjItMTEtMDggMTM6NTA6MTYgVVRDCisrKysgYi9zb3VyY2UvYmxlbmRlci9i bGVua2VybmVsL2ludGVybi93cml0ZWZmbXBlZy5jCitAQCAtODU1LDcgKzg1NSw3IEBAIHN0YXRp YyBBVlN0cmVhbSAqYWxsb2NfdmlkZW9fc3RyZWFtKEZGTXBlZ0NvbnRleHQgKmNvbgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1 NSk7CisgICBzdC0+YXZnX2ZyYW1lX3JhdGUgPSBhdl9pbnZfcShjLT50aW1lX2Jhc2UpOworIAor LSAgaWYgKGNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBfQVVUT19USFJFQURTKSB7 CisrICBpZiAoY29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9PVEhFUl9USFJFQURT KSB7CisgICAgIGMtPnRocmVhZF9jb3VudCA9IDA7CisgICB9CisgICBlbHNlIHsKKy0tLSBhL3Nv dXJjZS9ibGVuZGVyL2ltYnVmL2ludGVybi9hbmltX21vdmllLmMJMjAyMi0xMS0wNCAwMDozMzow NyBVVEMKKysrKyBiL3NvdXJjZS9ibGVuZGVyL2ltYnVmL2ludGVybi9hbmltX21vdmllLmMKK0BA IC01NTQsNyArNTU0LDcgQEAgc3RhdGljIGludCBzdGFydGZmbXBlZyhzdHJ1Y3QgYW5pbSAqYW5p bSkKKyAgIGF2Y29kZWNfcGFyYW1ldGVyc190b19jb250ZXh0KHBDb2RlY0N0eCwgdmlkZW9fc3Ry ZWFtLT5jb2RlY3Bhcik7CisgICBwQ29kZWNDdHgtPndvcmthcm91bmRfYnVncyA9IEZGX0JVR19B VVRPREVURUNUOworIAorLSAgaWYgKHBDb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQ X0FVVE9fVEhSRUFEUykgeworKyAgaWYgKHBDb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNf Q0FQX09USEVSX1RIUkVBRFMpIHsKKyAgICAgcENvZGVjQ3R4LT50aHJlYWRfY291bnQgPSAwOwor ICAgfQorICAgZWxzZSB7CistLS0gYS9zb3VyY2UvYmxlbmRlci9pbWJ1Zi9pbnRlcm4vaW5kZXhl ci5jCTIwMjItMTEtMDQgMDA6MzM6MDcgVVRDCisrKysgYi9zb3VyY2UvYmxlbmRlci9pbWJ1Zi9p bnRlcm4vaW5kZXhlci5jCitAQCAtNTU5LDcgKzU1OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgcHJveHlf b3V0cHV0X2N0eCAqYWxsb2NfcHJveHlfb3V0cHV0X2ZmbQorICAgYXZfZGljdF9zZXQoJmNvZGVj X29wdHMsICJwcmVzZXQiLCAidmVyeWZhc3QiLCAwKTsKKyAgIGF2X2RpY3Rfc2V0KCZjb2RlY19v cHRzLCAidHVuZSIsICJmYXN0ZGVjb2RlIiwgMCk7CisgCistICBpZiAocnYtPmNvZGVjLT5jYXBh YmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBfQVVUT19USFJFQURTKSB7CisrICBpZiAocnYtPmNvZGVj LT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBfT1RIRVJfVEhSRUFEUykgeworICAgICBydi0+ Yy0+dGhyZWFkX2NvdW50ID0gMDsKKyAgIH0KKyAgIGVsc2UgeworQEAgLTg3Miw3ICs4NzIsNyBA QCBzdGF0aWMgSW5kZXhCdWlsZENvbnRleHQgKmluZGV4X2ZmbXBlZ19jcmVhdGVfY29udGV4dCgK KyAgIGF2Y29kZWNfcGFyYW1ldGVyc190b19jb250ZXh0KGNvbnRleHQtPmlDb2RlY0N0eCwgY29u dGV4dC0+aVN0cmVhbS0+Y29kZWNwYXIpOworICAgY29udGV4dC0+aUNvZGVjQ3R4LT53b3JrYXJv dW5kX2J1Z3MgPSBGRl9CVUdfQVVUT0RFVEVDVDsKKyAKKy0gIGlmIChjb250ZXh0LT5pQ29kZWMt PmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9BVVRPX1RIUkVBRFMpIHsKKysgIGlmIChjb250 ZXh0LT5pQ29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9PVEhFUl9USFJFQURTKSB7 CisgICAgIGNvbnRleHQtPmlDb2RlY0N0eC0+dGhyZWFkX2NvdW50ID0gMDsKKyAgIH0KKyAgIGVs c2UgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlIGIvc3JjcGtncy9ibGVu ZGVyL3RlbXBsYXRlCmluZGV4IDYxYjQyZWIyZTUxZS4uZDE4YmM4ODgzOGZmIDEwMDY0NAotLS0g YS9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYmxlbmRlcicKIHBrZ25hbWU9 YmxlbmRlcgogdmVyc2lvbj0zLjQuMQotcmV2aXNpb249MworcmV2aXNpb249NAogYXJjaHM9Ing4 Nl82NCogcHBjNjQqIgogYnVpbGRfc3R5bGU9ImNtYWtlIgogcHljb21waWxlX2RpcnM9Ii91c3Iv c2hhcmUvYmxlbmRlci8ke3ZlcnNpb24lLip9L3NjcmlwdHMiCgpGcm9tIGI1MTc4ZTRlNTczZTVi NzU2MjdiMTY2MjAwMTUyZWUzMTQxMmMxODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyMy8xNDBdIGNhbnRhdGE6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9jYW50YXRhL3RlbXBsYXRlIGIvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCmluZGV4IDRiNDE3 ZDgwZDVjMi4uOGE5MGFhYTRjMDdhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2NhbnRhdGEvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnY2FudGF0YScKIHBrZ25hbWU9Y2FudGF0YQogdmVyc2lvbj0yLjUuMAot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMgcXQ1LXRvb2xzIgogbWFrZWRl cGVuZHM9InF0NS1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBxdDUteG1scGF0 dGVybnMtZGV2ZWwKCkZyb20gNTkyNTlkNDA4MTdmYTIwNGU1MzZkNDNjN2U5NDQxMzJmOWJlYmEx NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDI0LzE0MF0gY2NleHRyYWN0b3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3Jj cGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NjZXh0cmFj dG9yL3RlbXBsYXRlIGIvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZQppbmRleCA5YWJjZDgy ODUyYjIuLjZlY2NhZDU4ODVhZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlCkBAIC0xLDEyICsxLDEyIEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjY2V4dHJhY3RvcicKIHBrZ25hbWU9Y2NleHRyYWN0b3IK IHZlcnNpb249MC45MwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfd3Jrc3JjPSJsaW51 eCIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1v Y3IgLS1lbmFibGUtaGFyZHN1YngiCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIHBrZy1jb25m aWciCi1tYWtlZGVwZW5kcz0ibGVwdG9uaWNhLWRldmVsIHRlc3NlcmFjdC1vY3ItZGV2ZWwgZmZt cGVnLWRldmVsIgorbWFrZWRlcGVuZHM9ImxlcHRvbmljYS1kZXZlbCB0ZXNzZXJhY3Qtb2NyLWRl dmVsIGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJFeHRyYWN0IHN1YnRpdGxlcyBmcm9tIHZp ZGVvIHN0cmVhbXMiCiBtYWludGFpbmVyPSJuZXdibHVlbW9vbiA8YmxhdW1vbGNoQG1haWxib3gu b3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCgpGcm9tIDQzMDBkZDMyM2QwMmJiYTZh MzZiOGI0YTBhMWJlNWVkODVmMjVmZGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYg LTA0MDAKU3ViamVjdDogW1BBVENIIDAyNS8xNDBdIGNocm9tYXByaW50OiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNo IHwgNTY5ICsrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxh dGUgICAgICAgICAgICAgIHwgICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDU3MCBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWFwcmlu dC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9tYXByaW50 L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTlmZDMw N2EyM2M4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2Zm bXBlZzUucGF0Y2gKQEAgLTAsMCArMSw1NjkgQEAKK0Zyb20gOGNjYWQ2OTM3MTc3YjFiOTJlNDBh YjhmNDQ0N2VhMjdiYWMwMDlhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRG LTg/cT9MdWs9QzM9QTE9QzU9QTE9MjBMYWxpbnNrPUMzPUJEPz0gPGxhbGluc2t5QGdtYWlsLmNv bT4KK0RhdGU6IEZyaSwgNCBOb3YgMjAyMiAyMTo0NzozOCArMDEwMAorU3ViamVjdDogW1BBVENI XSBVc2UgRkZtcGVnIDUueCAoIzEyMCkKKworKiBVc2UgRkZtcGVnIDUuMS4yIGZvciBDSSBidWls ZHMKKworKiBCdWlsZCBvbiBVYnVudHUgMjAuMDQKKworKiBVcGdyYWRlIGNvZGUgdG8gRkZtcGVn IDUueCBBUElzCisKKyogT25seSBzZXQgRkZtcGVnIGluY2x1ZGUgZGlycyBpZiBidWlsZGluZyB0 b29scworCisqIE5vIGxvbmdlciBuZWVkZWQKKworKiBVc2UgdWJ1bnR1IDIwLjA0CistLS0KKyAu Z2l0aHViL3dvcmtmbG93cy9idWlsZC55bWwgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KKyBD TWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgLS0KKyBw YWNrYWdlL2J1aWxkLnNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KKyBz cmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oICAgICAgICAgICAgfCAgIDIgLQorIHNy Yy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaCB8ICA3MiAtLS0tLS0t Cisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oIHwgIDE4ICst Cisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaCAgICAgICAgICAgICAgIHwgMTk3ICsr KysrKysrKy0tLS0tLS0tLQorIHRlc3RzL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgNiArCisgOCBmaWxlcyBjaGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKSwgMTk5 IGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlv X3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIv Q01ha2VMaXN0cy50eHQKK2luZGV4IGY4ZDZhMzIuLjRkYTI0MDUgMTAwNjQ0CistLS0gYS9DTWFr ZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC04NCw5ICs4NCw2IEBAIGZpbmRf cGFja2FnZShGRm1wZWcpCisgaWYoRkZNUEVHX0xJQlJBUklFUykKKyAJY21ha2VfcHVzaF9jaGVj a19zdGF0ZShSRVNFVCkKKyAJc2V0KENNQUtFX1JFUVVJUkVEX0xJQlJBUklFUyAke0ZGTVBFR19M SUJSQVJJRVN9ICR7Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0gLWxtKQorLQljaGVja19mdW5jdGlv bl9leGlzdHMoYXZfcGFja2V0X3VucmVmIEhBVkVfQVZfUEFDS0VUX1VOUkVGKQorLQljaGVja19m dW5jdGlvbl9leGlzdHMoYXZfZnJhbWVfYWxsb2MgSEFWRV9BVl9GUkFNRV9BTExPQykKKy0JY2hl Y2tfZnVuY3Rpb25fZXhpc3RzKGF2X2ZyYW1lX2ZyZWUgSEFWRV9BVl9GUkFNRV9GUkVFKQorIAlj bWFrZV9wb3BfY2hlY2tfc3RhdGUoKQorIGVuZGlmKCkKKworQEAgLTE2MywxNCArMTYwLDExIEBA IG1lc3NhZ2UoU1RBVFVTICJVc2luZyAke0ZGVF9MSUJ9IGZvciBGRlQgY2FsY3VsYXRpb25zIikK KyBpZihOT1QgQVVESU9fUFJPQ0VTU09SX0xJQikKKyAJaWYoRkZNUEVHX0xJQlNXUkVTQU1QTEVf Rk9VTkQpCisgCQlzZXQoQVVESU9fUFJPQ0VTU09SX0xJQiAic3dyZXNhbXBsZSIpCistCWVsc2Vp ZihGRk1QRUdfTElCQVZSRVNBTVBMRV9GT1VORCkKKy0JCXNldChBVURJT19QUk9DRVNTT1JfTElC ICJhdnJlc2FtcGxlIikKKyAJZW5kaWYoKQorIGVuZGlmKCkKKworIGlmKEFVRElPX1BST0NFU1NP Ul9MSUIgU1RSRVFVQUwgInN3cmVzYW1wbGUiKQorIAlpZihGRk1QRUdfTElCU1dSRVNBTVBMRV9G T1VORCkKKy0JCXNldChVU0VfQVZSRVNBTVBMRSBPRkYpCisgCQlzZXQoVVNFX1NXUkVTQU1QTEUg T04pCisgCQlzZXQoQVVESU9fUFJPQ0VTU09SX0xJQlJBUklFUyAke0ZGTVBFR19MSUJTV1JFU0FN UExFX0xJQlJBUklFU30pCisgCQlzZXQoQVVESU9fUFJPQ0VTU09SX0lOQ0xVREVfRElSUyAke0ZG TVBFR19MSUJTV1JFU0FNUExFX0lOQ0xVREVfRElSU30pCitAQCAtMTc4LDE2ICsxNzIsNiBAQCBp ZihBVURJT19QUk9DRVNTT1JfTElCIFNUUkVRVUFMICJzd3Jlc2FtcGxlIikKKyAJCW1lc3NhZ2Uo RkFUQUxfRVJST1IgIlNlbGVjdGVkICR7QVVESU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIHBy b2Nlc3NpbmcsIGJ1dCB0aGUgbGlicmFyeSBpcyBub3QgZm91bmQiKQorIAllbmRpZigpCisgCW1l c3NhZ2UoU1RBVFVTICJVc2luZyAke0FVRElPX1BST0NFU1NPUl9MSUJ9IGZvciBhdWRpbyBjb252 ZXJzaW9uIikKKy1lbHNlaWYoQVVESU9fUFJPQ0VTU09SX0xJQiBTVFJFUVVBTCAiYXZyZXNhbXBs ZSIpCistCWlmKEZGTVBFR19MSUJBVlJFU0FNUExFX0ZPVU5EKQorLQkJc2V0KFVTRV9BVlJFU0FN UExFIE9OKQorLQkJc2V0KFVTRV9TV1JFU0FNUExFIE9GRikKKy0JCXNldChBVURJT19QUk9DRVNT T1JfTElCUkFSSUVTICR7RkZNUEVHX0xJQkFWUkVTQU1QTEVfTElCUkFSSUVTfSkKKy0JCXNldChB VURJT19QUk9DRVNTT1JfSU5DTFVERV9ESVJTICR7RkZNUEVHX0xJQkFWUkVTQU1QTEVfSU5DTFVE RV9ESVJTfSkKKy0JZWxzZSgpCistCQltZXNzYWdlKEZBVEFMX0VSUk9SICJTZWxlY3RlZCAke0FV RElPX1BST0NFU1NPUl9MSUJ9IGZvciBhdWRpbyBwcm9jZXNzaW5nLCBidXQgdGhlIGxpYnJhcnkg aXMgbm90IGZvdW5kIikKKy0JZW5kaWYoKQorLQltZXNzYWdlKFNUQVRVUyAiVXNpbmcgJHtBVURJ T19QUk9DRVNTT1JfTElCfSBmb3IgYXVkaW8gY29udmVyc2lvbiIpCisgZWxzZSgpCisgCW1lc3Nh Z2UoU1RBVFVTICJCdWlsZGluZyB3aXRob3V0IGF1ZGlvIGNvbnZlcnNpb24gc3VwcG9ydCwgcGxl YXNlIGluc3RhbGwgRkZtcGVnIHdpdGggbGlic3dyZXNhbXBsZSIpCisgZW5kaWYoKQorZGlmZiAt LWdpdCBhL3BhY2thZ2UvYnVpbGQuc2ggYi9wYWNrYWdlL2J1aWxkLnNoCitpbmRleCBkYTYzMWFl Li5iNDFkMzZlIDEwMDc1NQorLS0tIGEvcGFja2FnZS9idWlsZC5zaAorKysrIGIvcGFja2FnZS9i dWlsZC5zaAorQEAgLTcsOCArNyw4IEBAIHNldCAtZXV4CisKKyBCQVNFX0RJUj0kKGNkICQoZGly bmFtZSAkMCkvLi4gJiYgcHdkKQorCistRkZNUEVHX1ZFUlNJT049NC40LjEKKy1GRk1QRUdfQlVJ TERfVEFHPXY0LjQuMS0xCisrRkZNUEVHX1ZFUlNJT049NS4xLjIKKytGRk1QRUdfQlVJTERfVEFH PXYke0ZGTVBFR19WRVJTSU9OfS0xCisKKyBUTVBfQlVJTERfRElSPSRCQVNFX0RJUi8kKG1rdGVt cCAtZCBidWlsZC5YWFhYWFhYWCkKKyB0cmFwICdybSAtcmYgJFRNUF9CVUlMRF9ESVInIEVYSVQK K2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oIGIvc3JjL2F1 ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaAoraW5kZXggNzYyOGZjNy4uMzlmNGY2ZCAxMDA2 NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmgKKysrKyBiL3NyYy9h dWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmgKK0BAIC0xMCw4ICsxMCw2IEBACisKKyAjaWYg ZGVmaW5lZChVU0VfU1dSRVNBTVBMRSkKKyAjaW5jbHVkZSAiYXVkaW8vZmZtcGVnX2F1ZGlvX3By b2Nlc3Nvcl9zd3Jlc2FtcGxlLmgiCistI2VsaWYgZGVmaW5lZChVU0VfQVZSRVNBTVBMRSkKKy0j aW5jbHVkZSAiYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgiCisgI2Vs c2UKKyAjZXJyb3IgIm5vIGF1ZGlvIHByb2Nlc3NpbmcgbGlicmFyeSIKKyAjZW5kaWYKK2RpZmYg LS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmggYi9z cmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgKK2RlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggYmQ4NWY5Mi4uMDAwMDAwMAorLS0tIGEvc3JjL2F1ZGlvL2Zm bXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oCisrKysgL2Rldi9udWxsCitAQCAtMSw3 MiArMCwwIEBACistLy8gQ29weXJpZ2h0IChDKSAyMDE2ICBMdWthcyBMYWxpbnNreQorLS8vIERp c3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSwgc2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9y IGRldGFpbHMuCistCistI2lmbmRlZiBDSFJPTUFQUklOVF9BVURJT19GRk1QRUdfQVVESU9fUFJP Q0VTU09SX0FWUkVTQU1QTEVfSF8KKy0jZGVmaW5lIENIUk9NQVBSSU5UX0FVRElPX0ZGTVBFR19B VURJT19QUk9DRVNTT1JfQVZSRVNBTVBMRV9IXworLQorLWV4dGVybiAiQyIgeworLSNpbmNsdWRl IDxsaWJhdnJlc2FtcGxlL2F2cmVzYW1wbGUuaD4KKy19CistCistbmFtZXNwYWNlIGNocm9tYXBy aW50IHsKKy0KKy1jbGFzcyBGRm1wZWdBdWRpb1Byb2Nlc3NvciB7CistcHVibGljOgorLQlGRm1w ZWdBdWRpb1Byb2Nlc3NvcigpIHsKKy0JCW1fcmVzYW1wbGVfY3R4ID0gYXZyZXNhbXBsZV9hbGxv Y19jb250ZXh0KCk7CistCX0KKy0KKy0JfkZGbXBlZ0F1ZGlvUHJvY2Vzc29yKCkgeworLQkJYXZy ZXNhbXBsZV9mcmVlKCZtX3Jlc2FtcGxlX2N0eCk7CistCX0KKy0KKy0Jdm9pZCBTZXRDb21wYXRp YmxlTW9kZSgpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAiZmlsdGVyX3Np emUiLCAxNiwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgInBoYXNlX3No aWZ0IiwgOCwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImxpbmVhcl9p bnRlcnAiLCAxLCAwKTsKKy0JCWF2X29wdF9zZXRfZG91YmxlKG1fcmVzYW1wbGVfY3R4LCAiY3V0 b2ZmIiwgMC44LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldElucHV0Q2hhbm5lbExheW91dChpbnQ2 NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwg ImluX2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5lbF9sYXlvdXQsIDApOworLQl9CistCistCXZvaWQg U2V0SW5wdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJ YXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJpbl9zYW1wbGVfZm10Iiwgc2FtcGxlX2Zv cm1hdCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRJbnB1dFNhbXBsZVJhdGUoaW50IHNhbXBsZV9y YXRlKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImluX3NhbXBsZV9yYXRl Iiwgc2FtcGxlX3JhdGUsIDApOworLQl9CistCistCXZvaWQgU2V0T3V0cHV0Q2hhbm5lbExheW91 dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxl X2N0eCwgIm91dF9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JfQorLQor LQl2b2lkIFNldE91dHB1dFNhbXBsZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBzYW1wbGVfZm9ybWF0 KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgIm91dF9zYW1wbGVfZm10Iiwg c2FtcGxlX2Zvcm1hdCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRPdXRwdXRTYW1wbGVSYXRlKGlu dCBzYW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJvdXRf c2FtcGxlX2ZtdCIsIHNhbXBsZV9yYXRlLCAwKTsKKy0JfQorLQorLQlpbnQgSW5pdCgpIHsKKy0J CXJldHVybiBhdnJlc2FtcGxlX29wZW4obV9yZXNhbXBsZV9jdHgpOworLQl9CistCistCWludCBD b252ZXJ0KHVpbnQ4X3QgKipvdXQsIGludCBvdXRfY291bnQsIGNvbnN0IHVpbnQ4X3QgKippbiwg aW50IGluX2NvdW50KSB7CistCQlyZXR1cm4gYXZyZXNhbXBsZV9jb252ZXJ0KG1fcmVzYW1wbGVf Y3R4LCBvdXQsIDAsIG91dF9jb3VudCwgKHVpbnQ4X3QgKiopIGluLCAwLCBpbl9jb3VudCk7Cist CX0KKy0KKy0JaW50IEZsdXNoKHVpbnQ4X3QgKipvdXQsIGludCBvdXRfY291bnQpIHsKKy0JCXJl dHVybiBhdnJlc2FtcGxlX3JlYWQobV9yZXNhbXBsZV9jdHgsIG91dCwgb3V0X2NvdW50KTsKKy0J fQorLQorLXByaXZhdGU6CistCUFWQXVkaW9SZXNhbXBsZUNvbnRleHQgKm1fcmVzYW1wbGVfY3R4 ID0gbnVsbHB0cjsKKy19OworLQorLX07IC8vIG5hbWVzcGFjZSBjaHJvbWFwcmludAorLQorLSNl bmRpZgorZGlmZiAtLWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVz YW1wbGUuaCBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaAor aW5kZXggYjg2MjY2Yi4uYjFkNGJlYSAxMDA2NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1wZWdfYXVk aW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaAorKysrIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19w cm9jZXNzb3Jfc3dyZXNhbXBsZS5oCitAQCAtMjgsMzAgKzI4LDI4IEBAIHB1YmxpYzoKKyAJCWF2 X29wdF9zZXRfZG91YmxlKG1fc3dyX2N0eCwgImN1dG9mZiIsIDAuOCwgMCk7CisgCX0KKworLQl2 b2lkIFNldElucHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlh dl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpY2wiLCBjaGFubmVsX2xheW91dCwgMCk7CistCQlh dl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpY2giLCBhdl9nZXRfY2hhbm5lbF9sYXlvdXRfbmJf Y2hhbm5lbHMoY2hhbm5lbF9sYXlvdXQpLCAwKTsKKysJdm9pZCBTZXRJbnB1dENoYW5uZWxMYXlv dXQoQVZDaGFubmVsTGF5b3V0ICpjaGFubmVsX2xheW91dCkgeworKwkJYXZfb3B0X3NldF9pbnQo bV9zd3JfY3R4LCAiaW5fY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xheW91dC0+dS5tYXNrLCAw KTsKKyAJfQorCisgCXZvaWQgU2V0SW5wdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2Ft cGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaXNmIiwgc2FtcGxl X2Zvcm1hdCwgMCk7CisrCQlhdl9vcHRfc2V0X3NhbXBsZV9mbXQobV9zd3JfY3R4LCAiaW5fc2Ft cGxlX2ZtdCIsIHNhbXBsZV9mb3JtYXQsIDApOworIAl9CisKKyAJdm9pZCBTZXRJbnB1dFNhbXBs ZVJhdGUoaW50IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJp c3IiLCBzYW1wbGVfcmF0ZSwgMCk7CisrCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpbl9z YW1wbGVfcmF0ZSIsIHNhbXBsZV9yYXRlLCAwKTsKKyAJfQorCistCXZvaWQgU2V0T3V0cHV0Q2hh bm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludCht X3N3cl9jdHgsICJvY2wiLCBjaGFubmVsX2xheW91dCwgMCk7CistCQlhdl9vcHRfc2V0X2ludCht X3N3cl9jdHgsICJvY2giLCBhdl9nZXRfY2hhbm5lbF9sYXlvdXRfbmJfY2hhbm5lbHMoY2hhbm5l bF9sYXlvdXQpLCAwKTsKKysJdm9pZCBTZXRPdXRwdXRDaGFubmVsTGF5b3V0KEFWQ2hhbm5lbExh eW91dCAqY2hhbm5lbF9sYXlvdXQpIHsKKysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm91 dF9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LT51Lm1hc2ssIDApOworIAl9CisKKyAJ dm9pZCBTZXRPdXRwdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkg eworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib3NmIiwgc2FtcGxlX2Zvcm1hdCwgMCk7 CisrCQlhdl9vcHRfc2V0X3NhbXBsZV9mbXQobV9zd3JfY3R4LCAib3V0X3NhbXBsZV9mbXQiLCBz YW1wbGVfZm9ybWF0LCAwKTsKKyAJfQorCisgCXZvaWQgU2V0T3V0cHV0U2FtcGxlUmF0ZShpbnQg c2FtcGxlX3JhdGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm9zciIsIHNhbXBs ZV9yYXRlLCAwKTsKKysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm91dF9zYW1wbGVfcmF0 ZSIsIHNhbXBsZV9yYXRlLCAwKTsKKyAJfQorCisgCWludCBJbml0KCkgeworZGlmZiAtLWdpdCBh L3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlv X3JlYWRlci5oCitpbmRleCA1NTUwMTY0Li4xYzZiMzQ2IDEwMDY0NAorLS0tIGEvc3JjL2F1ZGlv L2ZmbXBlZ19hdWRpb19yZWFkZXIuaAorKysrIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFk ZXIuaAorQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgorIAlib29sIFJlYWQoY29uc3QgaW50MTZf dCAqKmRhdGEsIHNpemVfdCAqc2l6ZSk7CisKKyAJYm9vbCBJc09wZW4oKSBjb25zdCB7IHJldHVy biBtX29wZW5lZDsgfQorLQlib29sIElzRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX2Zpbmlz aGVkICYmICFtX2dvdF9mcmFtZTsgfQorKwlib29sIElzRmluaXNoZWQoKSBjb25zdCB7IHJldHVy biAhbV9oYXNfbW9yZV9wYWNrZXRzICYmICFtX2hhc19tb3JlX2ZyYW1lczsgfQorCisgCXN0ZDo6 c3RyaW5nIEdldEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQorIAlpbnQgR2V0RXJy b3JDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcl9jb2RlOyB9CitAQCAtNzQsMjAgKzc0LDE5 IEBAIHByaXZhdGU6CisgCXVpbnQ4X3QgKm1fY29udmVydF9idWZmZXJbMV0gPSB7IG51bGxwdHIg fTsKKyAJaW50IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcyA9IDA7CisKKy0JQVZJbnB1dEZv cm1hdCAqbV9pbnB1dF9mbXQgPSBudWxscHRyOworKwljb25zdCBBVklucHV0Rm9ybWF0ICptX2lu cHV0X2ZtdCA9IG51bGxwdHI7CisgCUFWRGljdGlvbmFyeSAqbV9pbnB1dF9vcHRzID0gbnVsbHB0 cjsKKworIAlBVkZvcm1hdENvbnRleHQgKm1fZm9ybWF0X2N0eCA9IG51bGxwdHI7CisgCUFWQ29k ZWNDb250ZXh0ICptX2NvZGVjX2N0eCA9IG51bGxwdHI7CistCUFWRnJhbWUgKm1fZnJhbWUgPSBu dWxscHRyOworIAlpbnQgbV9zdHJlYW1faW5kZXggPSAtMTsKKyAJc3RkOjpzdHJpbmcgbV9lcnJv cjsKKyAJaW50IG1fZXJyb3JfY29kZSA9IDA7CistCWJvb2wgbV9maW5pc2hlZCA9IGZhbHNlOwor IAlib29sIG1fb3BlbmVkID0gZmFsc2U7CistCWludCBtX2dvdF9mcmFtZSA9IDA7CistCUFWUGFj a2V0IG1fcGFja2V0OworLQlBVlBhY2tldCBtX3BhY2tldDA7CisrCWJvb2wgbV9oYXNfbW9yZV9w YWNrZXRzID0gdHJ1ZTsKKysJYm9vbCBtX2hhc19tb3JlX2ZyYW1lcyA9IHRydWU7CisrCUFWUGFj a2V0ICptX3BhY2tldCA9IG51bGxwdHI7CisrCUFWRnJhbWUgKm1fZnJhbWUgPSBudWxscHRyOwor CisgCWludCBtX291dHB1dF9zYW1wbGVfcmF0ZSA9IDA7CisgCWludCBtX291dHB1dF9jaGFubmVs cyA9IDA7CitAQCAtOTgsMTkgKzk3LDEyIEBAIHByaXZhdGU6CisKKyBpbmxpbmUgRkZtcGVnQXVk aW9SZWFkZXI6OkZGbXBlZ0F1ZGlvUmVhZGVyKCkgeworIAlhdl9sb2dfc2V0X2xldmVsKEFWX0xP R19RVUlFVCk7CistCistCWF2X2luaXRfcGFja2V0KCZtX3BhY2tldCk7CistCW1fcGFja2V0LmRh dGEgPSBudWxscHRyOworLQltX3BhY2tldC5zaXplID0gMDsKKy0KKy0JbV9wYWNrZXQwID0gbV9w YWNrZXQ7CisgfQorCisgaW5saW5lIEZGbXBlZ0F1ZGlvUmVhZGVyOjp+RkZtcGVnQXVkaW9SZWFk ZXIoKSB7CisgCUNsb3NlKCk7CisgCWF2X2RpY3RfZnJlZSgmbV9pbnB1dF9vcHRzKTsKKyAJYXZf ZnJlZXAoJm1fY29udmVydF9idWZmZXJbMF0pOworLQlhdl9wYWNrZXRfdW5yZWYoJm1fcGFja2V0 MCk7CisgfQorCisgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6OlNldElucHV0Rm9ybWF0 KGNvbnN0IGNoYXIgKm5hbWUpIHsKK0BAIC0xMzUsMTEgKzEyNywxMCBAQCBpbmxpbmUgYm9vbCBG Rm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1lKSB7CisK KyAJQ2xvc2UoKTsKKworLSAgICBhdl9pbml0X3BhY2tldCgmbV9wYWNrZXQpOworLQltX3BhY2tl dC5kYXRhID0gbnVsbHB0cjsKKy0JbV9wYWNrZXQuc2l6ZSA9IDA7CistCistCW1fcGFja2V0MCA9 IG1fcGFja2V0OworKwltX3BhY2tldCA9IGF2X3BhY2tldF9hbGxvYygpOworKwlpZiAoIW1fcGFj a2V0KSB7CisrCQlyZXR1cm4gZmFsc2U7CisrCX0KKworIAlyZXQgPSBhdmZvcm1hdF9vcGVuX2lu cHV0KCZtX2Zvcm1hdF9jdHgsIGZpbGVfbmFtZS5jX3N0cigpLCBtX2lucHV0X2ZtdCwgJm1faW5w dXRfb3B0cyk7CisgCWlmIChyZXQgPCAwKSB7CitAQCAtMTUzLDI2ICsxNDQsMzEgQEAgaW5saW5l IGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZpbGVfbmFt ZSkgeworIAkJcmV0dXJuIGZhbHNlOworIAl9CisKKy0JQVZDb2RlYyAqY29kZWM7CisrCWNvbnN0 IEFWQ29kZWMgKmNvZGVjOworIAlyZXQgPSBhdl9maW5kX2Jlc3Rfc3RyZWFtKG1fZm9ybWF0X2N0 eCwgQVZNRURJQV9UWVBFX0FVRElPLCAtMSwgLTEsICZjb2RlYywgMCk7CisgCWlmIChyZXQgPCAw KSB7CisgCQlTZXRFcnJvcigiQ291bGQgbm90IGZpbmQgYW55IGF1ZGlvIHN0cmVhbSBpbiB0aGUg ZmlsZSIsIHJldCk7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKyAJbV9zdHJlYW1faW5kZXggPSBy ZXQ7CisrCWF1dG8gc3RyZWFtID0gbV9mb3JtYXRfY3R4LT5zdHJlYW1zW21fc3RyZWFtX2luZGV4 XTsKKworLQltX2NvZGVjX2N0eCA9IG1fZm9ybWF0X2N0eC0+c3RyZWFtc1ttX3N0cmVhbV9pbmRl eF0tPmNvZGVjOworKwltX2NvZGVjX2N0eCA9IGF2Y29kZWNfYWxsb2NfY29udGV4dDMoY29kZWMp OworIAltX2NvZGVjX2N0eC0+cmVxdWVzdF9zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9TMTY7 CisKKysJcmV0ID0gYXZjb2RlY19wYXJhbWV0ZXJzX3RvX2NvbnRleHQobV9jb2RlY19jdHgsIHN0 cmVhbS0+Y29kZWNwYXIpOworKwlpZiAocmV0IDwgMCkgeworKwkJU2V0RXJyb3IoIkNvdWxkIG5v dCBjb3B5IHRoZSBzdHJlYW0gcGFyYW1ldGVycyIsIHJldCk7CisrCQlyZXR1cm4gZmFsc2U7Cisr CX0KKysKKyAJcmV0ID0gYXZjb2RlY19vcGVuMihtX2NvZGVjX2N0eCwgY29kZWMsIG51bGxwdHIp OworIAlpZiAocmV0IDwgMCkgeworIAkJU2V0RXJyb3IoIkNvdWxkIG5vdCBvcGVuIHRoZSBjb2Rl YyIsIHJldCk7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKworLQlpZiAoIW1fY29kZWNfY3R4LT5j aGFubmVsX2xheW91dCkgeworLQkJbV9jb2RlY19jdHgtPmNoYW5uZWxfbGF5b3V0ID0gYXZfZ2V0 X2RlZmF1bHRfY2hhbm5lbF9sYXlvdXQobV9jb2RlY19jdHgtPmNoYW5uZWxzKTsKKy0JfQorKwlh dl9kdW1wX2Zvcm1hdChtX2Zvcm1hdF9jdHgsIDAsICJmb28iLCAwKTsKKworIAltX2ZyYW1lID0g YXZfZnJhbWVfYWxsb2MoKTsKKyAJaWYgKCFtX2ZyYW1lKSB7CitAQCAtMTgzLDE5ICsxNzksMjMg QEAgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcg JmZpbGVfbmFtZSkgeworIAkJbV9vdXRwdXRfc2FtcGxlX3JhdGUgPSBtX2NvZGVjX2N0eC0+c2Ft cGxlX3JhdGU7CisgCX0KKworLQlpZiAoIW1fb3V0cHV0X2NoYW5uZWxzKSB7CistCQltX291dHB1 dF9jaGFubmVscyA9IG1fY29kZWNfY3R4LT5jaGFubmVsczsKKysJQVZDaGFubmVsTGF5b3V0IG91 dHB1dF9jaGFubmVsX2xheW91dDsKKysJaWYgKG1fb3V0cHV0X2NoYW5uZWxzKSB7CisrCQlhdl9j aGFubmVsX2xheW91dF9kZWZhdWx0KCZvdXRwdXRfY2hhbm5lbF9sYXlvdXQsIG1fb3V0cHV0X2No YW5uZWxzKTsKKysJfSBlbHNlIHsKKysJCW1fb3V0cHV0X2NoYW5uZWxzID0gbV9jb2RlY19jdHgt PmNoX2xheW91dC5uYl9jaGFubmVsczsKKysJCWF2X2NoYW5uZWxfbGF5b3V0X2RlZmF1bHQoJm91 dHB1dF9jaGFubmVsX2xheW91dCwgbV9vdXRwdXRfY2hhbm5lbHMpOworIAl9CisKKy0JaWYgKG1f Y29kZWNfY3R4LT5zYW1wbGVfZm10ICE9IEFWX1NBTVBMRV9GTVRfUzE2IHx8IG1fY29kZWNfY3R4 LT5jaGFubmVscyAhPSBtX291dHB1dF9jaGFubmVscyB8fCBtX2NvZGVjX2N0eC0+c2FtcGxlX3Jh dGUgIT0gbV9vdXRwdXRfc2FtcGxlX3JhdGUpIHsKKysJaWYgKG1fY29kZWNfY3R4LT5zYW1wbGVf Zm10ICE9IEFWX1NBTVBMRV9GTVRfUzE2IHx8IG1fY29kZWNfY3R4LT5jaF9sYXlvdXQubmJfY2hh bm5lbHMgIT0gbV9vdXRwdXRfY2hhbm5lbHMgfHwgbV9jb2RlY19jdHgtPnNhbXBsZV9yYXRlICE9 IG1fb3V0cHV0X3NhbXBsZV9yYXRlKSB7CisgCQltX2NvbnZlcnRlci5yZXNldChuZXcgRkZtcGVn QXVkaW9Qcm9jZXNzb3IoKSk7CisgCQltX2NvbnZlcnRlci0+U2V0Q29tcGF0aWJsZU1vZGUoKTsK KyAJCW1fY29udmVydGVyLT5TZXRJbnB1dFNhbXBsZUZvcm1hdChtX2NvZGVjX2N0eC0+c2FtcGxl X2ZtdCk7CisgCQltX2NvbnZlcnRlci0+U2V0SW5wdXRTYW1wbGVSYXRlKG1fY29kZWNfY3R4LT5z YW1wbGVfcmF0ZSk7CistCQltX2NvbnZlcnRlci0+U2V0SW5wdXRDaGFubmVsTGF5b3V0KG1fY29k ZWNfY3R4LT5jaGFubmVsX2xheW91dCk7CisrCQltX2NvbnZlcnRlci0+U2V0SW5wdXRDaGFubmVs TGF5b3V0KCYobV9jb2RlY19jdHgtPmNoX2xheW91dCkpOworIAkJbV9jb252ZXJ0ZXItPlNldE91 dHB1dFNhbXBsZUZvcm1hdChBVl9TQU1QTEVfRk1UX1MxNik7CisgCQltX2NvbnZlcnRlci0+U2V0 T3V0cHV0U2FtcGxlUmF0ZShtX291dHB1dF9zYW1wbGVfcmF0ZSk7CistCQltX2NvbnZlcnRlci0+ U2V0T3V0cHV0Q2hhbm5lbExheW91dChhdl9nZXRfZGVmYXVsdF9jaGFubmVsX2xheW91dChtX291 dHB1dF9jaGFubmVscykpOworKwkJbV9jb252ZXJ0ZXItPlNldE91dHB1dENoYW5uZWxMYXlvdXQo Jm91dHB1dF9jaGFubmVsX2xheW91dCk7CisgCQlhdXRvIHJldCA9IG1fY29udmVydGVyLT5Jbml0 KCk7CisgCQlpZiAocmV0ICE9IDApIHsKKyAJCQlTZXRFcnJvcigiQ291bGQgbm90IGNyZWF0ZSBh biBhdWRpbyBjb252ZXJ0ZXIgaW5zdGFuY2UiLCByZXQpOworQEAgLTIwMywxMCArMjAzLDExIEBA IGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZm aWxlX25hbWUpIHsKKyAJCX0KKyAJfQorCisrCWF2X2NoYW5uZWxfbGF5b3V0X3VuaW5pdCgmb3V0 cHV0X2NoYW5uZWxfbGF5b3V0KTsKKysKKyAJbV9vcGVuZWQgPSB0cnVlOworLQltX2ZpbmlzaGVk ID0gZmFsc2U7CistCW1fZ290X2ZyYW1lID0gMDsKKy0JbV9uYl9wYWNrZXRzID0gMDsKKysJbV9o YXNfbW9yZV9wYWNrZXRzID0gdHJ1ZTsKKysJbV9oYXNfbW9yZV9mcmFtZXMgPSB0cnVlOworIAlt X2RlY29kZV9lcnJvciA9IDA7CisKKyAJcmV0dXJuIHRydWU7CitAQCAtMjE0LDYgKzIxNSw3IEBA IGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZm aWxlX25hbWUpIHsKKworIGlubGluZSB2b2lkIEZGbXBlZ0F1ZGlvUmVhZGVyOjpDbG9zZSgpIHsK KyAJYXZfZnJhbWVfZnJlZSgmbV9mcmFtZSk7CisrCWF2X3BhY2tldF9mcmVlKCZtX3BhY2tldCk7 CisKKyAJbV9zdHJlYW1faW5kZXggPSAtMTsKKworQEAgLTI1Miw5MSArMjU0LDk4IEBAIGlubGlu ZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpSZWFkKGNvbnN0IGludDE2X3QgKipkYXRhLCBzaXpl X3QgKnNpemUpIHsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorCisrCSpkYXRhID0gbnVsbHB0cjsK KysJKnNpemUgPSAwOworKworIAlpbnQgcmV0OworKwlib29sIG5lZWRzX3BhY2tldCA9IGZhbHNl OworIAl3aGlsZSAodHJ1ZSkgeworLQkJd2hpbGUgKG1fcGFja2V0LnNpemUgPD0gMCkgeworLQkJ CWF2X3BhY2tldF91bnJlZigmbV9wYWNrZXQwKTsKKy0JCQlhdl9pbml0X3BhY2tldCgmbV9wYWNr ZXQpOworLQkJCW1fcGFja2V0LmRhdGEgPSBudWxscHRyOworLQkJCW1fcGFja2V0LnNpemUgPSAw OworLQkJCXJldCA9IGF2X3JlYWRfZnJhbWUobV9mb3JtYXRfY3R4LCAmbV9wYWNrZXQpOworKwkJ d2hpbGUgKG5lZWRzX3BhY2tldCAmJiBtX3BhY2tldC0+c2l6ZSA9PSAwKSB7CisrCQkJcmV0ID0g YXZfcmVhZF9mcmFtZShtX2Zvcm1hdF9jdHgsIG1fcGFja2V0KTsKKyAJCQlpZiAocmV0IDwgMCkg eworIAkJCQlpZiAocmV0ID09IEFWRVJST1JfRU9GKSB7CistCQkJCQltX2ZpbmlzaGVkID0gdHJ1 ZTsKKysJCQkJCW5lZWRzX3BhY2tldCA9IGZhbHNlOworKwkJCQkJbV9oYXNfbW9yZV9wYWNrZXRz ID0gZmFsc2U7CisgCQkJCQlicmVhazsKKy0JCQkJfSBlbHNlIHsKKysJCQkJfQorKwkJCQlTZXRF cnJvcigiRXJyb3IgcmVhZGluZyBmcm9tIHRoZSBhdWRpbyBzb3VyY2UiLCByZXQpOworKwkJCQly ZXR1cm4gZmFsc2U7CisrCQkJfQorKwkJCWlmIChtX3BhY2tldC0+c3RyZWFtX2luZGV4ID09IG1f c3RyZWFtX2luZGV4KSB7CisrCQkJCW5lZWRzX3BhY2tldCA9IGZhbHNlOworKwkJCX0gZWxzZSB7 CisrCQkJCWF2X3BhY2tldF91bnJlZihtX3BhY2tldCk7CisrCQkJfQorKwkJfQorKworKwkJaWYg KG1fcGFja2V0LT5zaXplICE9IDApIHsKKysJCQlyZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KG1f Y29kZWNfY3R4LCBtX3BhY2tldCk7CisrCQkJaWYgKHJldCA8IDApIHsKKysJCQkJaWYgKHJldCAh PSBBVkVSUk9SKEVBR0FJTikpIHsKKyAJCQkJCVNldEVycm9yKCJFcnJvciByZWFkaW5nIGZyb20g dGhlIGF1ZGlvIHNvdXJjZSIsIHJldCk7CisgCQkJCQlyZXR1cm4gZmFsc2U7CisgCQkJCX0KKy0J CQl9CistCQkJbV9wYWNrZXQwID0gbV9wYWNrZXQ7CistCQkJaWYgKG1fcGFja2V0LnN0cmVhbV9p bmRleCAhPSBtX3N0cmVhbV9pbmRleCkgeworLQkJCQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsK Ky0JCQkJbV9wYWNrZXQuc2l6ZSA9IDA7CisgCQkJfSBlbHNlIHsKKy0JCQkJbV9uYl9wYWNrZXRz Kys7CisrCQkJCWF2X3BhY2tldF91bnJlZihtX3BhY2tldCk7CisgCQkJfQorIAkJfQorCistCQly ZXQgPSBhdmNvZGVjX2RlY29kZV9hdWRpbzQobV9jb2RlY19jdHgsIG1fZnJhbWUsICZtX2dvdF9m cmFtZSwgJm1fcGFja2V0KTsKKysJCXJldCA9IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZShtX2NvZGVj X2N0eCwgbV9mcmFtZSk7CisgCQlpZiAocmV0IDwgMCkgeworLQkJCWlmIChtX2RlY29kZV9lcnJv cikgeworLQkJCQlTZXRFcnJvcigiRXJyb3IgZGVjb2RpbmcgYXVkaW8gZnJhbWUiLCBtX2RlY29k ZV9lcnJvcik7CistCQkJCXJldHVybiBmYWxzZTsKKysJCQlpZiAocmV0ID09IEFWRVJST1JfRU9G KSB7CisrCQkJCW1faGFzX21vcmVfZnJhbWVzID0gZmFsc2U7CisrCQkJfSBlbHNlIGlmIChyZXQg PT0gQVZFUlJPUihFQUdBSU4pKSB7CisrCQkJCWlmIChtX2hhc19tb3JlX3BhY2tldHMpIHsKKysJ CQkJCW5lZWRzX3BhY2tldCA9IHRydWU7CisrCQkJCQljb250aW51ZTsKKysJCQkJfSBlbHNlIHsK KysJCQkJCW1faGFzX21vcmVfZnJhbWVzID0gZmFsc2U7CisrCQkJCX0KKyAJCQl9CistCQkJbV9k ZWNvZGVfZXJyb3IgPSByZXQ7CistCQkJbV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7CistCQkJbV9w YWNrZXQuc2l6ZSA9IDA7CistCQkJY29udGludWU7CisrCQkJU2V0RXJyb3IoIkVycm9yIGRlY29k aW5nIHRoZSBhdWRpbyBzb3VyY2UiLCByZXQpOworKwkJCXJldHVybiBmYWxzZTsKKyAJCX0KKwor LQkJYnJlYWs7CistCX0KKy0KKy0JbV9kZWNvZGVfZXJyb3IgPSAwOworLQorLQljb25zdCBpbnQg ZGVjb2RlZCA9IHN0ZDo6bWluKHJldCwgbV9wYWNrZXQuc2l6ZSk7CistCW1fcGFja2V0LmRhdGEg Kz0gZGVjb2RlZDsKKy0JbV9wYWNrZXQuc2l6ZSAtPSBkZWNvZGVkOworLQorLQlpZiAobV9nb3Rf ZnJhbWUpIHsKKy0JCWlmIChtX2NvbnZlcnRlcikgeworLQkJCWlmIChtX2ZyYW1lLT5uYl9zYW1w bGVzID4gbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKSB7CistCQkJCWludCBsaW5zaXplOwor LQkJCQlhdl9mcmVlcCgmbV9jb252ZXJ0X2J1ZmZlclswXSk7CistCQkJCW1fY29udmVydF9idWZm ZXJfbmJfc2FtcGxlcyA9IHN0ZDo6bWF4KDEwMjQgKiA4LCBtX2ZyYW1lLT5uYl9zYW1wbGVzKTsK Ky0JCQkJcmV0ID0gYXZfc2FtcGxlc19hbGxvYyhtX2NvbnZlcnRfYnVmZmVyLCAmbGluc2l6ZSwg bV9jb2RlY19jdHgtPmNoYW5uZWxzLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMsIEFWX1NB TVBMRV9GTVRfUzE2LCAxKTsKKy0JCQkJaWYgKHJldCA8IDApIHsKKy0JCQkJCVNldEVycm9yKCJD b3VsZG4ndCBhbGxvY2F0ZSBhdWRpbyBjb252ZXJ0ZXIgYnVmZmVyIiwgcmV0KTsKKysJCWlmICht X2ZyYW1lLT5uYl9zYW1wbGVzID4gMCkgeworKwkJCWlmIChtX2NvbnZlcnRlcikgeworKwkJCQlp ZiAobV9mcmFtZS0+bmJfc2FtcGxlcyA+IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcykgewor KwkJCQkJaW50IGxpbnNpemU7CisrCQkJCQlhdl9mcmVlcCgmbV9jb252ZXJ0X2J1ZmZlclswXSk7 CisrCQkJCQltX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMgPSBzdGQ6Om1heCgxMDI0ICogOCwg bV9mcmFtZS0+bmJfc2FtcGxlcyk7CisrCQkJCQlyZXQgPSBhdl9zYW1wbGVzX2FsbG9jKG1fY29u dmVydF9idWZmZXIsICZsaW5zaXplLCBtX2NvZGVjX2N0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxz LCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMsIEFWX1NBTVBMRV9GTVRfUzE2LCAxKTsKKysJ CQkJCWlmIChyZXQgPCAwKSB7CisrCQkJCQkJU2V0RXJyb3IoIkNvdWxkbid0IGFsbG9jYXRlIGF1 ZGlvIGNvbnZlcnRlciBidWZmZXIiLCByZXQpOworKwkJCQkJCXJldHVybiBmYWxzZTsKKysJCQkJ CX0KKysJCQkJfQorKwkJCQlhdXRvIG5iX3NhbXBsZXMgPSBtX2NvbnZlcnRlci0+Q29udmVydCht X2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMsIChjb25zdCB1aW50 OF90ICoqKSBtX2ZyYW1lLT5kYXRhLCBtX2ZyYW1lLT5uYl9zYW1wbGVzKTsKKysJCQkJaWYgKG5i X3NhbXBsZXMgPCAwKSB7CisrCQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIs IHJldCk7CisgCQkJCQlyZXR1cm4gZmFsc2U7CisgCQkJCX0KKy0JCQl9CistCQkJYXV0byBuYl9z YW1wbGVzID0gbV9jb252ZXJ0ZXItPkNvbnZlcnQobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0 X2J1ZmZlcl9uYl9zYW1wbGVzLCAoY29uc3QgdWludDhfdCAqKikgbV9mcmFtZS0+ZGF0YSwgbV9m cmFtZS0+bmJfc2FtcGxlcyk7CistCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7CistCQkJCVNldEVy cm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlvIiwgcmV0KTsKKy0JCQkJcmV0dXJuIGZhbHNlOwor LQkJCX0KKy0JCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fY29udmVydF9idWZmZXJbMF07 CistCQkJKnNpemUgPSBuYl9zYW1wbGVzOworLQkJfSBlbHNlIHsKKy0JCQkqZGF0YSA9IChjb25z dCBpbnQxNl90ICopIG1fZnJhbWUtPmRhdGFbMF07CistCQkJKnNpemUgPSBtX2ZyYW1lLT5uYl9z YW1wbGVzOworLQkJfQorLQl9IGVsc2UgeworLQkJaWYgKG1fZmluaXNoZWQgJiYgbV9jb252ZXJ0 ZXIpIHsKKy0JCQlhdXRvIG5iX3NhbXBsZXMgPSBtX2NvbnZlcnRlci0+Rmx1c2gobV9jb252ZXJ0 X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKTsKKy0JCQlpZiAobmJfc2FtcGxl cyA8IDApIHsKKy0JCQkJU2V0RXJyb3IoIkNvdWxkbid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOwor LQkJCQlyZXR1cm4gZmFsc2U7CistCQkJfSBlbHNlIGlmIChuYl9zYW1wbGVzID4gMCkgeworLQkJ CQltX2dvdF9mcmFtZSA9IDE7CisgCQkJCSpkYXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9jb252 ZXJ0X2J1ZmZlclswXTsKKyAJCQkJKnNpemUgPSBuYl9zYW1wbGVzOworKwkJCX0gZWxzZSB7Cisr CQkJCSpkYXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9mcmFtZS0+ZGF0YVswXTsKKysJCQkJKnNp emUgPSBtX2ZyYW1lLT5uYl9zYW1wbGVzOworKwkJCX0KKysJCX0gZWxzZSB7CisrCQkJaWYgKG1f Y29udmVydGVyKSB7CisrCQkJCWlmIChJc0ZpbmlzaGVkKCkpIHsKKysJCQkJCWF1dG8gbmJfc2Ft cGxlcyA9IG1fY29udmVydGVyLT5GbHVzaChtX2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZlcnRfYnVm ZmVyX25iX3NhbXBsZXMpOworKwkJCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7CisrCQkJCQkJU2V0 RXJyb3IoIkNvdWxkbid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOworKwkJCQkJCXJldHVybiBmYWxz ZTsKKysJCQkJCX0gZWxzZSBpZiAobmJfc2FtcGxlcyA+IDApIHsKKysJCQkJCQkqZGF0YSA9IChj b25zdCBpbnQxNl90ICopIG1fY29udmVydF9idWZmZXJbMF07CisrCQkJCQkJKnNpemUgPSBuYl9z YW1wbGVzOworKwkJCQkJfQorKwkJCQl9CisgCQkJfQorIAkJfQorLQl9CisKKy0JcmV0dXJuIHRy dWU7CisrCQlyZXR1cm4gdHJ1ZTsKKysJfQorIH0KKworIGlubGluZSB2b2lkIEZGbXBlZ0F1ZGlv UmVhZGVyOjpTZXRFcnJvcihjb25zdCBjaGFyICptZXNzYWdlLCBpbnQgZXJybnVtKSB7CitkaWZm IC0tZ2l0IGEvdGVzdHMvQ01ha2VMaXN0cy50eHQgYi90ZXN0cy9DTWFrZUxpc3RzLnR4dAoraW5k ZXggYTJiNTE3Yi4uMTIzZTY0MyAxMDA2NDQKKy0tLSBhL3Rlc3RzL0NNYWtlTGlzdHMudHh0Cisr KysgYi90ZXN0cy9DTWFrZUxpc3RzLnR4dAorQEAgLTM4LDYgKzM4LDEyIEBAIHNldChTUkNTCisK KyBpZihCVUlMRF9UT09MUykKKyAJc2V0KFNSQ1MgJHtTUkNTfSAuLi9zcmMvYXVkaW8vZmZtcGVn X2F1ZGlvX3JlYWRlcl90ZXN0LmNwcCkKKysgICAgaW5jbHVkZV9kaXJlY3RvcmllcygKKysgICAg ICAgICR7RkZNUEVHX0xJQkFWRk9STUFUX0lOQ0xVREVfRElSU30KKysgICAgICAgICR7RkZNUEVH X0xJQkFWQ09ERUNfSU5DTFVERV9ESVJTfQorKyAgICAgICAgJHtGRk1QRUdfTElCQVZVVElMX0lO Q0xVREVfRElSU30KKysgICAgICAgICR7QVVESU9fUFJPQ0VTU09SX0lOQ0xVREVfRElSU30KKysg ICAgKQorIAlsaW5rX2xpYnJhcmllcyhmcGNhbGNfbGlicykKKyBlbmRpZigpCisKKy0tIAorMi4z OC4xCisKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWFwcmludC90ZW1wbGF0ZSBiL3NyY3Br Z3MvY2hyb21hcHJpbnQvdGVtcGxhdGUKaW5kZXggN2VmNzgzODk0OWYzLi4xZjdiYmM3MGEyMmMg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9j aHJvbWFwcmludC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2Nocm9tYXByaW50JwogcGtnbmFtZT1jaHJvbWFwcmludAogdmVyc2lvbj0xLjUuMQotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREJV SUxEX1RPT0xTPU9OIgogbWFrZV9jaGVja190YXJnZXQ9ImNoZWNrIgoKRnJvbSBhMjVmODRiZWFk Y2M1NTE5N2ViZTZmMjk5MzA5ODYxOGJhYTc0NzI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjYvMTQwXSBjaHJvbWl1bTogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWctNC40LnBh dGNoICAgICAgfCAzNiAtLS0tLS0tLS0tLS0tLQogc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2Zm bXBlZzUucGF0Y2ggICAgICAgIHwgNDcgKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9jaHJv bWl1bS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIDMgZmlsZXMgY2hhbmdl ZCwgNDggaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9taXVtLTkzLWZmbXBlZy00LjQucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWct NC40LnBhdGNoIGIvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9taXVtLTkzLWZmbXBlZy00 LjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZWM3MzZmOThiYy4uMDAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1w ZWctNC40LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotZGlmZiAtLWdpdCBh L21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MgYi9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19k ZW11eGVyLmNjCi1pbmRleCBhYzQ3MTNiMDcyNjguLjQ5MmE5YTM3ZDA5NiAxMDA2NDQKLS0tLSBh L21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MKLSsrKyBiL21lZGlhL2ZpbHRlcnMvZmZt cGVnX2RlbXV4ZXIuY2MKLUBAIC00MjcsMTEgKzQyNywxMSBAQCB2b2lkIEZGbXBlZ0RlbXV4ZXJT dHJlYW06OkVucXVldWVQYWNrZXQoU2NvcGVkQVZQYWNrZXQgcGFja2V0KSB7Ci0gICBzY29wZWRf cmVmcHRyPERlY29kZXJCdWZmZXI+IGJ1ZmZlcjsKLSAKLSAgIGlmICh0eXBlKCkgPT0gRGVtdXhl clN0cmVhbTo6VEVYVCkgewotLSAgICBzaXplX3QgaWRfc2l6ZSA9IDA7Ci0rICAgIGludCBpZF9z aXplID0gMDsKLSAgICAgdWludDhfdCogaWRfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRh KAotICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9XRUJWVFRfSURFTlRJRklFUiwg JmlkX3NpemUpOwotIAotLSAgICBzaXplX3Qgc2V0dGluZ3Nfc2l6ZSA9IDA7Ci0rICAgIGludCBz ZXR0aW5nc19zaXplID0gMDsKLSAgICAgdWludDhfdCogc2V0dGluZ3NfZGF0YSA9IGF2X3BhY2tl dF9nZXRfc2lkZV9kYXRhKAotICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9XRUJW VFRfU0VUVElOR1MsICZzZXR0aW5nc19zaXplKTsKLSAKLUBAIC00NDMsNyArNDQzLDcgQEAgdm9p ZCBGRm1wZWdEZW11eGVyU3RyZWFtOjpFbnF1ZXVlUGFja2V0KFNjb3BlZEFWUGFja2V0IHBhY2tl dCkgewotICAgICBidWZmZXIgPSBEZWNvZGVyQnVmZmVyOjpDb3B5RnJvbShwYWNrZXQtPmRhdGEs IHBhY2tldC0+c2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lk ZV9kYXRhLmRhdGEoKSwgc2lkZV9kYXRhLnNpemUoKSk7Ci0gICB9IGVsc2UgewotLSAgICBzaXpl X3Qgc2lkZV9kYXRhX3NpemUgPSAwOwotKyAgICBpbnQgc2lkZV9kYXRhX3NpemUgPSAwOwotICAg ICB1aW50OF90KiBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAg IHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFMLCAmc2lk ZV9kYXRhX3NpemUpOwotIAotQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEZGbXBlZ0RlbXV4ZXJT dHJlYW06OkVucXVldWVQYWNrZXQoU2NvcGVkQVZQYWNrZXQgcGFja2V0KSB7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0LT5zaXplIC0gZGF0YV9vZmZzZXQp OwotICAgICB9Ci0gCi0tICAgIHNpemVfdCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7Ci0rICAgIGlu dCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7Ci0gICAgIGNvbnN0IHVpbnQzMl90KiBza2lwX3NhbXBs ZXNfcHRyID0KLSAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdl9w YWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9E QVRBX1NLSVBfU0FNUExFUywgJnNraXBfc2FtcGxlc19zaXplKSk7CmRpZmYgLS1naXQgYS9zcmNw a2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvY2hyb21pdW0vcGF0 Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uMjRlMmRhMzhlMzRjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9jaHJvbWl1bS9wYXRj aGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorLS0tIGEvbWVkaWEvZmlsdGVycy9m Zm1wZWdfZGVtdXhlci5jYwkyMDIzLTAxLTIzIDE3OjMzOjU3LjM2NjIxMzgwNSArMDIwMAorKysr IGIvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTAxLTIzIDE3OjQzOjA5LjI4 MzQzNjk4MyArMDIwMAorQEAgLTkyLDI0ICs5MiwxMiBAQAorIAorIHN0YXRpYyBiYXNlOjpUaW1l RGVsdGEgRXh0cmFjdFN0YXJ0VGltZShBVlN0cmVhbSogc3RyZWFtKSB7CisgICAvLyBUaGUgZGVm YXVsdCBzdGFydCB0aW1lIGlzIHplcm8uCistICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZTsK KysgIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lID0ga05vVGltZXN0YW1wOworIAorICAgLy8g Rmlyc3QgdHJ5IHRvIHVzZSAgdGhlIHxzdGFydF90aW1lfCB2YWx1ZSBhcyBpcy4KKy0gIGlmIChz dHJlYW0tPnN0YXJ0X3RpbWUgIT0ga05vRkZtcGVnVGltZXN0YW1wKQorKyAgaWYgKHN0cmVhbS0+ c3RhcnRfdGltZSAhPSBrTm9GRm1wZWdUaW1lc3RhbXApIC8vIEFWX05PUFRTX1ZBTFVFCisgICAg IHN0YXJ0X3RpbWUgPSBDb252ZXJ0RnJvbVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBzdHJl YW0tPnN0YXJ0X3RpbWUpOworIAorLSAgLy8gTmV4dCB0cnkgdG8gdXNlIHRoZSBmaXJzdCBEVFMg dmFsdWUsIGZvciBjb2RlY3Mgd2hlcmUgd2Uga25vdyBQVFMgPT0gRFRTCistICAvLyAoZXhjbHVk ZXMgYWxsIEgyNnggY29kZWNzKS4gVGhlIHN0YXJ0IHRpbWUgbXVzdCBiZSByZXR1cm5lZCBpbiBQ VFMuCistICBpZiAoYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtKSAhPSBrTm9GRm1wZWdU aW1lc3RhbXAgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RF Q19JRF9IRVZDICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09E RUNfSURfSDI2NCAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NP REVDX0lEX01QRUc0KSB7CistICAgIGNvbnN0IGJhc2U6OlRpbWVEZWx0YSBmaXJzdF9wdHMgPQor LSAgICAgICAgQ29udmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgYXZfc3RyZWFt X2dldF9maXJzdF9kdHMoc3RyZWFtKSk7CistICAgIGlmIChmaXJzdF9wdHMgPCBzdGFydF90aW1l KQorLSAgICAgIHN0YXJ0X3RpbWUgPSBmaXJzdF9wdHM7CistICB9CistCisgICByZXR1cm4gc3Rh cnRfdGltZTsKKyB9CisgCitAQCAtMTU5Nyw3ICsxNTg1LDcgQEAKKyAgIGZvciAoY29uc3QgYXV0 byYgc3RyZWFtIDogc3RyZWFtc18pIHsKKyAgICAgaWYgKCFzdHJlYW0gfHwgc3RyZWFtLT5Jc0Vu YWJsZWQoKSAhPSBlbmFibGVkKQorICAgICAgIGNvbnRpbnVlOworLSAgICBpZiAoYXZfc3RyZWFt X2dldF9maXJzdF9kdHMoc3RyZWFtLT5hdl9zdHJlYW0oKSkgPT0ga0ludmFsaWRQVFNNYXJrZXIp CisrICAgIGlmIChzdHJlYW0tPmF2X3N0cmVhbSgpLT5zdGFydF90aW1lID09IEFWX05PUFRTX1ZB TFVFKQorICAgICAgIGNvbnRpbnVlOworICAgICBpZiAoIWxvd2VzdF9zdGFydF90aW1lX3N0cmVh bSB8fAorICAgICAgICAgc3RyZWFtLT5zdGFydF90aW1lKCkgPCBsb3dlc3Rfc3RhcnRfdGltZV9z dHJlYW0tPnN0YXJ0X3RpbWUoKSkgeworQEAgLTE2MTgsNyArMTYwNiw3IEBACisgICAgIGlmIChz dHJlYW0tPnR5cGUoKSAhPSBEZW11eGVyU3RyZWFtOjpWSURFTykKKyAgICAgICBjb250aW51ZTsK KyAKKy0gICAgaWYgKGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0cmVhbS0+YXZfc3RyZWFtKCkp ID09IGtJbnZhbGlkUFRTTWFya2VyKQorKyAgICBpZiAoc3RyZWFtLT5hdl9zdHJlYW0oKS0+c3Rh cnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICBjb250aW51ZTsKKyAKKyAgICAgaWYg KCFzdHJlYW0tPklzRW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS90ZW1w bGF0ZSBiL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKaW5kZXggZTUwYzczOWQzZWU3Li44NzA1 ZjJlZjk3M2YgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9jaHJvbWl1bS90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9Y2hyb21pdW0K ICMgU2VlIGh0dHBzOi8vY2hyb21pdW1kYXNoLmFwcHNwb3QuY29tL3JlbGVhc2VzP3BsYXRmb3Jt PUxpbnV4IGZvciB0aGUgbGF0ZXN0IHZlcnNpb24KIHZlcnNpb249MTEyLjAuNTYxNS40OQotcmV2 aXNpb249MQorcmV2aXNpb249MgogYXJjaHM9Imk2ODYqIHg4Nl82NCogYWFyY2g2NCogYXJtdjds KiIKIGhvc3RtYWtlZGVwZW5kcz0iCiAgJCh2b3B0X2lmIGNsYW5nICJjbGFuZyBsbGQgbGx2bTE1 IikKCkZyb20gODk2ZWUzNDYzYTU1OTAxYzdjNmMxYWFjNTI1OGY4ZmE0OWUxMzI5NSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI3LzE0MF0g Y211czogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2NtdXMvcGF0Y2hlcy9m Zm1wZWc2LnBhdGNoIHwgMTIgKysrKysrKysrKysrCiBzcmNwa2dzL2NtdXMvdGVtcGxhdGUgICAg ICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBl ZzYucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNo IGIvc3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLmZmYTk1YWI4MTExMAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorLS0tIGEv aXAvZmZtcGVnLmMKKysrKyBiL2lwL2ZmbXBlZy5jCitAQCAtMjAyLDkgKzIwMiw2IEBAIHN0YXRp YyBpbnQgZmZtcGVnX29wZW4oc3RydWN0IGlucHV0X3BsdWdpbl9kYXRhICppcF9kYXRhKQorIAkJ CWJyZWFrOworIAkJfQorIAorLQkJaWYgKGNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19D QVBfVFJVTkNBVEVEKQorLQkJCWNjLT5mbGFncyB8PSBBVl9DT0RFQ19GTEFHX1RSVU5DQVRFRDsK Ky0KKyAJCWlmIChhdmNvZGVjX29wZW4yKGNjLCBjb2RlYywgTlVMTCkgPCAwKSB7CisgCQkJZF9w cmludCgiY291bGQgbm90IG9wZW4gY29kZWM6ICVkLCAlc1xuIiwgY2MtPmNvZGVjX2lkLCBhdmNv ZGVjX2dldF9uYW1lKGNjLT5jb2RlY19pZCkpOworIAkJCWVyciA9IC1JUF9FUlJPUl9VTlNVUFBP UlRFRF9GSUxFX1RZUEU7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2NtdXMvdGVtcGxhdGUgYi9zcmNw a2dzL2NtdXMvdGVtcGxhdGUKaW5kZXggMGZjYjQyNGNlMzM2Li4wNWI3N2QwZmVjYWUgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvY211cy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NtdXMvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjbXVzJwogcGtnbmFtZT1jbXVz CiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y29u ZmlndXJlCiBjb25maWd1cmVfYXJncz0icHJlZml4PS91c3IgTEQ9JENDIgogaG9zdG1ha2VkZXBl bmRzPSJwa2ctY29uZmlnIgoKRnJvbSA0OTk0MWE2NmJkNzRhNjQzYjAzMjkwYTU3M2E3YjE4MWE2 MTE1N2Y1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwMjgvMTQwXSBjeWFucmlwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvY3lhbnJpcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZSBi L3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZQppbmRleCA5Nzk2ZTM0NjE2MDEuLjVkYjMwZTAyMGQx NyAxMDA2NDQKLS0tIGEvc3JjcGtncy9jeWFucmlwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY3lh bnJpcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2N5YW5y aXAnCiBwa2duYW1lPWN5YW5yaXAKIHZlcnNpb249MC45LjAKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtl ZGVwZW5kcz0iZmZtcGVnLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliY2Rpby1wYXJhbm9pYS1kZXZl bCBsaWJjdXJsLWRldmVsIGxpYm11c2ljYnJhaW56NS1kZXZlbCIKCkZyb20gY2ZlOWEyNzU5MGRk YzZhNWJiMWI5ZTI5NGQ3NmYwNzRlYmIwY2NhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI5LzE0MF0gZGVhZGJlZWY6IHJldmJ1bXAgZm9y IGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZSB8IDQgKystLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlIGIvc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0 ZQppbmRleCBiNjY0YmIxYjliZDkuLjE2NWIzYzdiOWNhZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9k ZWFkYmVlZi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlCkBAIC0xLDE0 ICsxLDE0IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdkZWFkYmVlZicKIHBrZ25hbWU9ZGVhZGJl ZWYKIHZlcnNpb249MS44LjgKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGNyZWF0ZV93cmtzcmM9 eWVzCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxl LW9zcyAtLWRpc2FibGUtbGZtIC0tZGlzYWJsZS1ub3RpZnkgLS1kaXNhYmxlLWd0azIiCiBob3N0 bWFrZWRlcGVuZHM9ImF1dG9tYWtlIGxpYnRvb2wgZ2V0dGV4dCBnZXR0ZXh0LWRldmVsIGludGx0 b29sIHBrZy1jb25maWcKICB5YXNtIGNsYW5nIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5kcz0iCi0g YWxzYS1saWItZGV2ZWwgZGJ1cy1kZXZlbCBmYWFkMi1kZXZlbCBmZm1wZWctZGV2ZWwgZ3RrKzMt ZGV2ZWwgaW1saWIyLWRldmVsCisgYWxzYS1saWItZGV2ZWwgZGJ1cy1kZXZlbCBmYWFkMi1kZXZl bCBmZm1wZWc0LWRldmVsIGd0ayszLWRldmVsIGltbGliMi1kZXZlbAogIGphbnNzb24tZGV2ZWwg bGliY2RkYi1kZXZlbCBsaWJjZGlvLWRldmVsIGxpYmN1cmwtZGV2ZWwgbGliZmxhYy1kZXZlbAog IGxpYm1hZC1kZXZlbCBsaWJwbmctZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJzbmRmaWxl LWRldmVsIGxpYnZvcmJpcy1kZXZlbAogIGxpYnppcC1kZXZlbCBtcGcxMjMtZGV2ZWwgb3B1c2Zp bGUtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbCB3YXZwYWNrLWRldmVsIgoKRnJvbSBlMGQ5MDVhNWZh YzAzMjQ1MDQzNzBmNTllOWJlNDAxZGI3ZDViM2JiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzAvMTQwXSBkb2xwaGluLWVtdTogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9kb2xwaGluLWVtdS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZG9scGhpbi1lbXUv dGVtcGxhdGUKaW5kZXggN2VhMTk3Y2ViMmE4Li43YWViMGE1YjY0NWUgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kb2xwaGluLWVtdS90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2RvbHBoaW4tZW11Jwog cGtnbmFtZT1kb2xwaGluLWVtdQogdmVyc2lvbj01LjAuMTYxMDEKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIF9kb2xwaGluX2NvbW1pdD04ZWNmYTUzN2EyNDJkZTc0ZDJlMzcyZTMwZDlkNzliMTQ1 ODRiMmZiCiBfbWdiYV9jb21taXQ9NDBkNGM0MzBmYzM2Y2FlYjdlYTMyZmQzOTYyNDk0N2VkNDg3 ZDJmMgogI1ZlcnNpb24vaGFzaCBwYWlyIGNhbiBiZSBmb3VuZCBhdCBodHRwczovL2RvbHBoaW4t ZW11Lm9yZy9kb3dubG9hZC8KCkZyb20gN2YzNjgzNzJiMGEzNzk5MmYzMzU4NjQ1MWIyN2U2ODAw MTdjYWY2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDMxLzE0MF0gZHJvaWRjYW0tb2JzLXBsdWdpbjogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUgYi9zcmNwa2dzL2Ryb2lkY2FtLW9i cy1wbHVnaW4vdGVtcGxhdGUKaW5kZXggZmM5YzliZjZiOWQ1Li5mYjA0ODA3NTRkZjQgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdkcm9pZGNhbS1vYnMtcGx1Z2luJwogcGtnbmFtZT1kcm9pZGNhbS1vYnMtcGx1 Z2luCiB2ZXJzaW9uPTIuMC4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1n bnUtbWFrZWZpbGUKIG1ha2VfdXNlX2Vudj15ZXMKIG1ha2VfYnVpbGRfYXJncz0iQUxMT1dfU1RB VElDPW5vIgoKRnJvbSBjMWY2N2M3MWJhOWJhYTRlMzAyNTY3ZTM1ODIxMzg3YmRmMjgyZmNiIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzIv MTQwXSBkcm9pZGNhbTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Ryb2lk Y2FtL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZSBiL3NyY3Br Z3MvZHJvaWRjYW0vdGVtcGxhdGUKaW5kZXggMWMzZjFiOGIxZmM2Li4zMmE5MjIwYjc5YTQgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kcm9pZGNh bS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Ryb2lkY2Ft JwogcGtnbmFtZT1kcm9pZGNhbQogdmVyc2lvbj0xLjguMgotcmV2aXNpb249MgorcmV2aXNpb249 MwogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBtYWtlX2J1aWxkX2FyZ3M9IlVTQk1VWEQ9LWx1 c2JtdXhkLTIuMCBKUEVHPS1sdHVyYm9qcGVnIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IgoKRnJvbSBjODZkNzQzOWE3NzhlZjNhYzkwNDQ5MDI3NmViNzlmMDc3MWY1M2E0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzMvMTQwXSBl bGVjdHJvbjE5OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZWxlY3Ryb24x OS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZSBiL3NyY3Br Z3MvZWxlY3Ryb24xOS90ZW1wbGF0ZQppbmRleCAwNjgxMzZiZTc2MjMuLjMyY2UzMDFlNzMwYyAx MDA2NDQKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjE5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZWxl Y3Ryb24xOS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Vs ZWN0cm9uMTknCiBwa2duYW1lPWVsZWN0cm9uMTkKIHZlcnNpb249MTkuMC44Ci1yZXZpc2lvbj0y CityZXZpc2lvbj0zCiBfbm9kZXZlcj0xNi4xNC4yCiBfY2hyb21pdW12ZXI9MTAyLjAuNTAwNS4x MjUKIGFyY2hzPSJ4ODZfNjQqIGFhcmNoNjQqIHBwYzY0bGUqIgoKRnJvbSAwZTkxYTMxZDVlODky YjhkMDM4NTdiYmMwNzY5YmUwOTMxNGJlNGMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzQvMTQwXSBmZm1wZWd0aHVtYm5haWxlcjogcmV2 YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3Rl bXBsYXRlIHwgMTAgKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwg NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3Rl bXBsYXRlIGIvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZQppbmRleCAwMzllZWE3 NjIyYjMuLjg1NDZiZWYzZTg2OCAxMDA2NDQKLS0tIGEvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxl ci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRlCkBAIC0x LDE2ICsxLDE2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWd0aHVtYm5haWxlcicKIHBr Z25hbWU9ZmZtcGVndGh1bWJuYWlsZXIKIHZlcnNpb249Mi4yLjIKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCi1t YWtlZGVwZW5kcz0ibGlicG5nLWRldmVsIGxpYmpwZWctdHVyYm8tZGV2ZWwgZmZtcGVnLWRldmVs IgotZGVwZW5kcz0iZmZtcGVnIgorbWFrZWRlcGVuZHM9ImxpYnBuZy1kZXZlbCBsaWJqcGVnLXR1 cmJvLWRldmVsIGZmbXBlZzQtZGV2ZWwiCitkZXBlbmRzPSJmZm1wZWc0Igogc2hvcnRfZGVzYz0i TGlnaHR3ZWlnaHQgdmlkZW8gdGh1bWJuYWlsZXIiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3Jw aGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKLWhvbWVwYWdl PSJodHRwczovL2dpdGh1Yi5jb20vZGlya3ZkYi8ke3BrZ25hbWV9IgotZGlzdGZpbGVzPSIke2hv bWVwYWdlfS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNpb259LyR7cGtnbmFtZX0tJHt2ZXJzaW9u fS50YXIuYnoyIgoraG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9kaXJrdmRiIgorZGlzdGZp bGVzPSIke2hvbWVwYWdlfS8ke3BrZ25hbWV9L3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVyc2lvbn0v JHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci5iejIiCiBjaGVja3N1bT0xY2IyNDA1OWMzODIyM2Y2 NTdiMzAwYzg0ZGQ4MDQ5MWI3MDQwZDRiNjk0NzFjNGZlYTY5YmU4NjJiYzk5YjViCiAKIHBvc3Rf aW5zdGFsbCgpIHsKCkZyb20gYjM5OGY2NGM1ZDY4ZGE4NjAyYTY5ZGY4OGZmNDFmMGQxZmJhZWVl YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDM1LzE0MF0gZmZtcGVndGh1bWJzOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNy Y3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVn dGh1bWJzL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUKaW5kZXggNWYw Yjk0MTRkYWRhLi45NDRhNzhmYmM5NmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmZtcGVndGh1bWJz L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlCkBAIC0xLDExICsx LDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWd0aHVtYnMnCiBwa2duYW1lPWZmbXBl Z3RodW1icwogdmVyc2lvbj0yMi4xMi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9z dHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIGtjb3JlYWRk b25zIGtjb25maWctZGV2ZWwKICBwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSBn ZXR0ZXh0IgotbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBraW8tZGV2ZWwgZmZtcGVnLWRldmVsIHRh Z2xpYi1kZXZlbCIKK21ha2VkZXBlbmRzPSJxdDUtZGV2ZWwga2lvLWRldmVsIGZmbXBlZzQtZGV2 ZWwgdGFnbGliLWRldmVsIgogc2hvcnRfZGVzYz0iRkZtcGVnLWJhc2VkIHRodW1ibmFpbCBjcmVh dG9yIGZvciB2aWRlbyBmaWxlcyIKIG1haW50YWluZXI9Ik1pY2hhZWwgU3RyYXViZSA8c3RyYXVi ZW1AZ214LmRlPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCgpGcm9tIGIxNWYwMmI5YjA2 MmJhY2M4ODIyZjk2MDExMWQ1NThmMWRiOTg1MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNi8xNDBdIGZmbXMyOiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgNDI0 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvZmZtczIvdGVtcGxhdGUgICAg ICAgICAgICAgIHwgICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDQyNSBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1zMi9wYXRjaGVzL2Zm bXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5w YXRjaCBiL3NyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTQ3OWZhYmNhZmNiCi0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw0MjQgQEAK K0Zyb20gNDU2NzMxNDllOWEyZjU1ODY4NTVhZDQ3MmUzMDU5MDg0ZWFhMzZiMSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNA Z21haWwuY29tPgorRGF0ZTogVHVlLCA0IE1heSAyMDIxIDE0OjQxOjIxICswMTAwCitTdWJqZWN0 OiBbUEFUQ0hdIFVzZSBhdXRvIGZvciBBVkNvZGVjCisKK1RoZSBnZW5pdXNlcyBvdmVyIGF0IEZG bXBlZyBkZWNpZGVkIHRvIGNvbnN0aWZ5IHRoaXMgQVBJLCBzbyBvbGQKK3ZlcnNpb25zIG9mIHRo ZSBsaWJyYXJ5IHdpbGwgcmV0dXJuIEFWQ29kZWMgKiwgd2hpbGUgbmV3IHZlcnNpb25zCitvZiB0 aGUgbGliYXJ5IHdpbGwgcmV0dXJuIGNvbnN0IEFWQ29kZWMgKiwgd2hpY2gsIGluIEMrKywgYXJl IG5vdAorT0sgdG8gY29udmVydCBiZXR3ZWVuLgorCitSYXRoZXIgdGhhbiB1c2Ugc29tZSBtYWNy byBoZWxsIGluIGZmbXNjb21wYXQuaCwgd2UgY2FuIHdvcmsgYXJvdW5kCit0aGlzIGJ5IHVzaW5n IGF1dG8uCisKK0dyb3NzLgorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJl ay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCB8 IDIgKy0KKyBzcmMvY29yZS9pbmRleGluZy5jcHAgICAgfCA2ICsrKy0tLQorIHNyYy9jb3JlL3Zp ZGVvc291cmNlLmNwcCB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwg NSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCBi L3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAoraW5kZXggZTRjZTk3Yy4uYWMwOTY2NiAxMDA2NDQK Ky0tLSBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvYXVkaW9zb3Vy Y2UuY3BwCitAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgRkZNU19BdWRpb1NvdXJjZTo6T3BlbkZp bGUoKSB7CisgCisgICAgIExBVkZPcGVuRmlsZShTb3VyY2VGaWxlLmNfc3RyKCksIEZvcm1hdENv bnRleHQsIFRyYWNrTnVtYmVyKTsKKyAKKy0gICAgQVZDb2RlYyAqQ29kZWMgPSBhdmNvZGVjX2Zp bmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrTnVtYmVyXS0+Y29kZWNwYXIt PmNvZGVjX2lkKTsKKysgICAgYXV0byAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3Jt YXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrTnVtYmVyXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAg ICAgaWYgKENvZGVjID09IG51bGxwdHIpCisgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihG Rk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VSUk9SX0NPREVDLAorICAgICAgICAgICAgICJBdWRp byBjb2RlYyBub3QgZm91bmQiKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9pbmRleGluZy5jcHAg Yi9zcmMvY29yZS9pbmRleGluZy5jcHAKK2luZGV4IGU1NDdjNWEuLjU5ZmI0ZTggMTAwNjQ0Cist LS0gYS9zcmMvY29yZS9pbmRleGluZy5jcHAKKysrKyBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAor QEAgLTM4NCw3ICszODQsNyBAQCBGRk1TX1RyYWNrVHlwZSBGRk1TX0luZGV4ZXI6OkdldFRyYWNr VHlwZShpbnQgVHJhY2spIHsKKyB9CisgCisgY29uc3QgY2hhciAqRkZNU19JbmRleGVyOjpHZXRU cmFja0NvZGVjKGludCBUcmFjaykgeworLSAgICBBVkNvZGVjICpjb2RlYyA9IGF2Y29kZWNfZmlu ZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNf aWQpOworKyAgICBhdXRvICpjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRl eHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAgICByZXR1cm4gY29k ZWMgPyBjb2RlYy0+bmFtZSA6IG51bGxwdHI7CisgfQorIAorQEAgLTQwMiw3ICs0MDIsNyBAQCBG Rk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgVXNl RFRTKTsKKyAKKyAgICAgICAgIGlmIChJbmRleE1hc2suY291bnQoaSkgJiYgRm9ybWF0Q29udGV4 dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVP KSB7CistICAgICAgICAgICAgQVZDb2RlYyAqVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNv ZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAg ICAgICAgICAgYXV0byAqVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENv bnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgICAgICAgICAgaWYg KCFWaWRlb0NvZGVjKSB7CisgICAgICAgICAgICAgICAgIEZvcm1hdENvbnRleHQtPnN0cmVhbXNb aV0tPmRpc2NhcmQgPSBBVkRJU0NBUkRfQUxMOworICAgICAgICAgICAgICAgICBJbmRleE1hc2su ZXJhc2UoaSk7CitAQCAtNDMzLDcgKzQzMyw3IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6 RG9JbmRleGluZygpIHsKKyAgICAgICAgICAgICAgICAgSW5kZXhNYXNrLmluc2VydChpKTsKKyAg ICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UgaWYgKEluZGV4TWFzay5jb3VudChpKSAmJiBG b3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElB X1RZUEVfQVVESU8pIHsKKy0gICAgICAgICAgICBBVkNvZGVjICpBdWRpb0NvZGVjID0gYXZjb2Rl Y19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVj X2lkKTsKKysgICAgICAgICAgICBhdXRvICpBdWRpb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29k ZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAg ICAgICAgICBpZiAoQXVkaW9Db2RlYyA9PSBudWxscHRyKQorICAgICAgICAgICAgICAgICB0aHJv dyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0NPREVDLCBGRk1TX0VSUk9SX1VOU1VQUE9SVEVE LAorICAgICAgICAgICAgICAgICAgICAgIkF1ZGlvIGNvZGVjIG5vdCBmb3VuZCIpOworZGlmZiAt LWdpdCBhL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcCBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNw cAoraW5kZXggYjg4OTk3MC4uODk1NmMyMiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3ZpZGVvc291 cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwCitAQCAtMTcxLDcgKzE3MSw3 IEBAIEZGTVNfVmlkZW9Tb3VyY2U6OkZGTVNfVmlkZW9Tb3VyY2UoY29uc3QgY2hhciAqU291cmNl RmlsZSwgRkZNU19JbmRleCAmSW5kZXgsIGluCisgCisgICAgICAgICBMQVZGT3BlbkZpbGUoU291 cmNlRmlsZSwgRm9ybWF0Q29udGV4dCwgVmlkZW9UcmFjayk7CisgCistICAgICAgICBBVkNvZGVj ICpDb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVmlk ZW9UcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgICAgICBhdXRvICpDb2RlYyA9IGF2 Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVmlkZW9UcmFja10tPmNv ZGVjcGFyLT5jb2RlY19pZCk7CisgICAgICAgICBpZiAoQ29kZWMgPT0gbnVsbHB0cikKKyAgICAg ICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VS Uk9SX0NPREVDLAorICAgICAgICAgICAgICAgICAiVmlkZW8gY29kZWMgbm90IGZvdW5kIik7Cist LSAKKzIuNDAuMAorCitGcm9tIDk2Y2JmMzhlYTkzODE4MjlhMTMxNGY0MzJhMmM2MDQ5NWRjZWZh YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZXJlayBCdWl0ZW5odWlzIDxkZXJl ay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNCBNYXkgMjAyMSAxNDoxMjo0MSAr MDEwMAorU3ViamVjdDogW1BBVENIXSBhbGw6IFVwZGF0ZSBBVlBhY2tldCBBUEkgdXNhZ2UKKwor QVZQYWNrZXRzIG11c3QgYWxsIGJlIG9uIHRoZSBoZWFwIG5vdywgc2luY2UgaXQgaXMgbm8gbG9u Z2VyCitwYXJ0IG9mIHRoZSBsaWJhdiogQUJJLgorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0 ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlv c291cmNlLmNwcCB8IDE2ICsrKysrKy0tLS0KKyBzcmMvY29yZS9pbmRleGluZy5jcHAgICAgfCA2 MyArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL2NvcmUvaW5k ZXhpbmcuaCAgICAgIHwgIDQgKy0tCisgc3JjL2NvcmUvdXRpbHMuY3BwICAgICAgIHwgIDYgLS0t LQorIHNyYy9jb3JlL3V0aWxzLmggICAgICAgICB8ICAxIC0KKyBzcmMvY29yZS92aWRlb3NvdXJj ZS5jcHAgfCAzMCArKysrKysrKysrLS0tLS0tLS0tCisgNiBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNl cnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlv c291cmNlLmNwcCBiL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAoraW5kZXggMzdjZjlhZS4uZTRj ZTk3YyAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAorKysrIGIvc3JjL2Nv cmUvYXVkaW9zb3VyY2UuY3BwCitAQCAtMjg1LDEwICsyODUsMTUgQEAgRkZNU19BdWRpb1NvdXJj ZTo6QXVkaW9CbG9jayAqRkZNU19BdWRpb1NvdXJjZTo6Q2FjaGVCbG9jayhDYWNoZUl0ZXJhdG9y ICZwb3MpIHsKKyBpbnQgRkZNU19BdWRpb1NvdXJjZTo6RGVjb2RlTmV4dEJsb2NrKENhY2hlSXRl cmF0b3IgKnBvcykgeworICAgICBDdXJyZW50RnJhbWUgPSAmRnJhbWVzW1BhY2tldE51bWJlcl07 CisgCistICAgIEFWUGFja2V0IFBhY2tldDsKKy0gICAgaWYgKCFSZWFkUGFja2V0KCZQYWNrZXQp KQorKyAgICBBVlBhY2tldCAqUGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICgh UGFja2V0KQorKyAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9QQVJTRVIs IEZGTVNfRVJST1JfQUxMT0NBVElPTl9GQUlMRUQsCisrICAgICAgICAgICAgIkNvdWxkIG5vdCBh bGxvY2F0ZSBwYWNrZXQuIik7CisrICAgIGlmICghUmVhZFBhY2tldChQYWNrZXQpKSB7CisrICAg ICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0 aW9uKEZGTVNfRVJST1JfUEFSU0VSLCBGRk1TX0VSUk9SX1VOS05PV04sCisgICAgICAgICAgICAg IlJlYWRQYWNrZXQgdW5leHBlY3RlZGx5IGZhaWxlZCB0byByZWFkIGEgcGFja2V0Iik7CisrICAg IH0KKyAKKyAgICAgLy8gUmVhZFBhY2tldCBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBwYWNrZXQgbnVt YmVyCisgICAgIEN1cnJlbnRGcmFtZSA9ICZGcmFtZXNbUGFja2V0TnVtYmVyXTsKK0BAIC0yOTcs OCArMzAyLDkgQEAgaW50IEZGTVNfQXVkaW9Tb3VyY2U6OkRlY29kZU5leHRCbG9jayhDYWNoZUl0 ZXJhdG9yICpwb3MpIHsKKyAgICAgaW50IE51bWJlck9mU2FtcGxlcyA9IDA7CisgICAgIEF1ZGlv QmxvY2sgKkNhY2hlZEJsb2NrID0gbnVsbHB0cjsKKyAgICAgCistICAgIGludCBSZXQgPSBhdmNv ZGVjX3NlbmRfcGFja2V0KENvZGVjQ29udGV4dCwgJlBhY2tldCk7CistICAgIGF2X3BhY2tldF91 bnJlZigmUGFja2V0KTsKKysgICAgaW50IFJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoQ29kZWND b250ZXh0LCBQYWNrZXQpOworKyAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKysgICAgYXZf cGFja2V0X2ZyZWUoJlBhY2tldCk7CisgCisgICAgIGF2X2ZyYW1lX3VucmVmKERlY29kZUZyYW1l KTsKKyAgICAgUmV0ID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1lKENvZGVjQ29udGV4dCwgRGVjb2Rl RnJhbWUpOworQEAgLTUxMyw4ICs1MTksNiBAQCB2b2lkIEZGTVNfQXVkaW9Tb3VyY2U6OlNlZWso KSB7CisgfQorIAorIGJvb2wgRkZNU19BdWRpb1NvdXJjZTo6UmVhZFBhY2tldChBVlBhY2tldCAq UGFja2V0KSB7CistICAgIEluaXROdWxsUGFja2V0KCpQYWNrZXQpOworLQorICAgICB3aGlsZSAo YXZfcmVhZF9mcmFtZShGb3JtYXRDb250ZXh0LCBQYWNrZXQpID49IDApIHsKKyAgICAgICAgIGlm IChQYWNrZXQtPnN0cmVhbV9pbmRleCA9PSBUcmFja051bWJlcikgeworICAgICAgICAgICAgIC8v IFJlcXVpcmVkIGJlY2F1c2Ugbm90IGFsbCBhdWRpbyBwYWNrZXRzLCBlc3BlY2lhbGx5IGluIG9n ZywgaGF2ZSBhIHB0cy4gVXNlIHRoZSBwcmV2aW91cyB2YWxpZCBwYWNrZXQncyBwdHMgaW5zdGVh ZC4KK2RpZmYgLS1naXQgYS9zcmMvY29yZS9pbmRleGluZy5jcHAgYi9zcmMvY29yZS9pbmRleGlu Zy5jcHAKK2luZGV4IDIzZmI5NWIuLmU1NDdjNWEgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9pbmRl eGluZy5jcHAKKysrKyBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAorQEAgLTMyMCw3ICszMjAsNyBA QCB2b2lkIEZGTVNfSW5kZXhlcjo6Q2hlY2tBdWRpb1Byb3BlcnRpZXMoaW50IFRyYWNrLCBBVkNv ZGVjQ29udGV4dCAqQ29udGV4dCkgeworICAgICB9CisgfQorIAorLXZvaWQgRkZNU19JbmRleGVy OjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tl dCAmcGt0LCBpbnQgKlJlcGVhdFBpY3QsCisrdm9pZCBGRk1TX0luZGV4ZXI6OlBhcnNlVmlkZW9Q YWNrZXQoU2hhcmVkQVZDb250ZXh0ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICpwa3QsIGludCAq UmVwZWF0UGljdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKkZy YW1lVHlwZSwgYm9vbCAqSW52aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBp Y1N0cnVjdCkgeworICAgICBpZiAoVmlkZW9Db250ZXh0LlBhcnNlcikgeworICAgICAgICAgdWlu dDhfdCAqT0I7CitAQCAtMzMwLDggKzMzMCw4IEBAIHZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZp ZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0Cisg ICAgICAgICBhdl9wYXJzZXJfcGFyc2UyKFZpZGVvQ29udGV4dC5QYXJzZXIsCisgICAgICAgICAg ICAgVmlkZW9Db250ZXh0LkNvZGVjQ29udGV4dCwKKyAgICAgICAgICAgICAmT0IsICZPQlNpemUs CistICAgICAgICAgICAgcGt0LmRhdGEsIHBrdC5zaXplLAorLSAgICAgICAgICAgIHBrdC5wdHMs IHBrdC5kdHMsIHBrdC5wb3MpOworKyAgICAgICAgICAgIHBrdC0+ZGF0YSwgcGt0LT5zaXplLAor KyAgICAgICAgICAgIHBrdC0+cHRzLCBwa3QtPmR0cywgcGt0LT5wb3MpOworIAorICAgICAgICAg Ly8gSC4yNjQgKFBBRkYpIGFuZCBIRVZDIG1heSBoYXZlIG9uZSBmaWVsZCBwZXIgcGFja2V0LCBz byB3ZSBuZWVkIHRvIHRyYWNrCisgICAgICAgICAvLyB3aGVuIHdlIGhhdmUgYSBmdWxsIG9yIGhh bGYgZnJhbWUgYXZhaWxhYmxlLCBhbmQgbWFyayBvbmUgb2YgdGhlbSBhcworQEAgLTM1MSwxNSAr MzUxLDE1IEBAIHZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29u dGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0CisgCisgICAgICAgICAqUmVwZWF0UGlj dCA9IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0OworICAgICAgICAgKkZyYW1lVHlw ZSA9IFZpZGVvQ29udGV4dC5QYXJzZXItPnBpY3RfdHlwZTsKKy0gICAgICAgICpJbnZpc2libGUg PSAoSW5jb21wbGV0ZUZyYW1lIHx8IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0IDwg MCB8fCAocGt0LmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpOworKyAgICAgICAgKkludmlz aWJsZSA9IChJbmNvbXBsZXRlRnJhbWUgfHwgVmlkZW9Db250ZXh0LlBhcnNlci0+cmVwZWF0X3Bp Y3QgPCAwIHx8IChwa3QtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpOworICAgICB9IGVs c2UgeworLSAgICAgICAgKkludmlzaWJsZSA9ICEhKHBrdC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJ U0NBUkQpOworKyAgICAgICAgKkludmlzaWJsZSA9ICEhKHBrdC0+ZmxhZ3MgJiBBVl9QS1RfRkxB R19ESVNDQVJEKTsKKyAgICAgfQorIAorICAgICBpZiAoVmlkZW9Db250ZXh0LkNvZGVjQ29udGV4 dC0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA4KQorLSAgICAgICAgUGFyc2VWUDgocGt0LmRh dGFbMF0sIEludmlzaWJsZSwgRnJhbWVUeXBlKTsKKysgICAgICAgIFBhcnNlVlA4KHBrdC0+ZGF0 YVswXSwgSW52aXNpYmxlLCBGcmFtZVR5cGUpOworICAgICBlbHNlIGlmIChWaWRlb0NvbnRleHQu Q29kZWNDb250ZXh0LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpCistICAgICAgICBQYXJz ZVZQOShwa3QuZGF0YVswXSwgSW52aXNpYmxlLCBGcmFtZVR5cGUpOworKyAgICAgICAgUGFyc2VW UDkocGt0LT5kYXRhWzBdLCBJbnZpc2libGUsIEZyYW1lVHlwZSk7CisgfQorIAorIHZvaWQgRkZN U19JbmRleGVyOjpGcmVlKCkgeworQEAgLTQ1OCwzMiArNDU4LDM2IEBAIEZGTVNfSW5kZXggKkZG TVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBB VlBhY2tldCBQYWNrZXQ7CistICAgIEluaXROdWxsUGFja2V0KFBhY2tldCk7CisrICAgIEFWUGFj a2V0ICpQYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQYWNrZXQpCisrICAg ICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0NPREVDLCBGRk1TX0VSUk9SX0FM TE9DQVRJT05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0 LiIpOworICAgICBzdGQ6OnZlY3RvcjxpbnQ2NF90PiBMYXN0VmFsaWRUUyhGb3JtYXRDb250ZXh0 LT5uYl9zdHJlYW1zLCBBVl9OT1BUU19WQUxVRSk7CisgCisgICAgIGludDY0X3QgZmlsZXNpemUg PSBhdmlvX3NpemUoRm9ybWF0Q29udGV4dC0+cGIpOworICAgICBlbnVtIEFWUGljdHVyZVN0cnVj dHVyZSBMYXN0UGljU3RydWN0ID0gQVZfUElDVFVSRV9TVFJVQ1RVUkVfVU5LTk9XTjsKKy0gICAg d2hpbGUgKGF2X3JlYWRfZnJhbWUoRm9ybWF0Q29udGV4dCwgJlBhY2tldCkgPj0gMCkgeworKyAg ICB3aGlsZSAoYXZfcmVhZF9mcmFtZShGb3JtYXRDb250ZXh0LCBQYWNrZXQpID49IDApIHsKKyAg ICAgICAgIC8vIFVwZGF0ZSBwcm9ncmVzcworICAgICAgICAgLy8gRm9ybWF0Q29udGV4dC0+cGIg Y2FuIGFwcGFyZW50bHkgYmUgTlVMTCB3aGVuIG9wZW5pbmcgaW1hZ2VzLgorICAgICAgICAgaWYg KElDICYmIEZvcm1hdENvbnRleHQtPnBiKSB7CistICAgICAgICAgICAgaWYgKCgqSUMpKEZvcm1h dENvbnRleHQtPnBiLT5wb3MsIGZpbGVzaXplLCBJQ1ByaXZhdGUpKQorKyAgICAgICAgICAgIGlm ICgoKklDKShGb3JtYXRDb250ZXh0LT5wYi0+cG9zLCBmaWxlc2l6ZSwgSUNQcml2YXRlKSkgewor KyAgICAgICAgICAgICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgICAgICAg ICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9DQU5DRUxMRUQsIEZGTVNfRVJST1Jf VVNFUiwKKyAgICAgICAgICAgICAgICAgICAgICJDYW5jZWxsZWQgYnkgdXNlciIpOworKyAgICAg ICAgICAgIH0KKyAgICAgICAgIH0KKy0gICAgICAgIGlmICghSW5kZXhNYXNrLmNvdW50KFBhY2tl dC5zdHJlYW1faW5kZXgpKSB7CistICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQp OworKyAgICAgICAgaWYgKCFJbmRleE1hc2suY291bnQoUGFja2V0LT5zdHJlYW1faW5kZXgpKSB7 CisrICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgICAgICAgICAgY29u dGludWU7CisgICAgICAgICB9CisgCistICAgICAgICBpbnQgVHJhY2sgPSBQYWNrZXQuc3RyZWFt X2luZGV4OworKyAgICAgICAgaW50IFRyYWNrID0gUGFja2V0LT5zdHJlYW1faW5kZXg7CisgICAg ICAgICBGRk1TX1RyYWNrICZUcmFja0luZm8gPSAoKlRyYWNrSW5kaWNlcylbVHJhY2tdOworLSAg ICAgICAgYm9vbCBLZXlGcmFtZSA9ICEhKFBhY2tldC5mbGFncyAmIEFWX1BLVF9GTEFHX0tFWSk7 CisrICAgICAgICBib29sIEtleUZyYW1lID0gISEoUGFja2V0LT5mbGFncyAmIEFWX1BLVF9GTEFH X0tFWSk7CisgICAgICAgICBSZWFkVFMoUGFja2V0LCBMYXN0VmFsaWRUU1tUcmFja10sICgqVHJh Y2tJbmRpY2VzKVtUcmFja10uVXNlRFRTKTsKKyAKKyAgICAgICAgIGlmIChGb3JtYXRDb250ZXh0 LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJ REVPKSB7CistICAgICAgICAgICAgaW50NjRfdCBQVFMgPSBUcmFja0luZm8uVXNlRFRTID8gUGFj a2V0LmR0cyA6IFBhY2tldC5wdHM7CisrICAgICAgICAgICAgaW50NjRfdCBQVFMgPSBUcmFja0lu Zm8uVXNlRFRTID8gUGFja2V0LT5kdHMgOiBQYWNrZXQtPnB0czsKKyAgICAgICAgICAgICBpZiAo UFRTID09IEFWX05PUFRTX1ZBTFVFKSB7CisgICAgICAgICAgICAgICAgIC8vIFZQeCBhbHQtcmVm cyBhcmUgb3V0cHV0IGFzIHBhY2tldHMgd2hpY2ggbGFjayB0aW1lc3RtcHMgb3IgZHVyYXRpb25z LCBzaW5jZQorICAgICAgICAgICAgICAgICAvLyB0aGV5IGFyZSBpbnZpc2libGUuIEN1cnJlbnRs eSwgdGhlIHRpbWVzdGFtcCBtYW5nbGluZyBjb2RlIGluIGxpYmF2Zm9ybWF0CitAQCAtNDk1LDkg KzQ5OSwxMSBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAg ICAgICAgICAgICAgIC8vIEZGTVMyIGN1cnJlbnRseSBzb3J0cyBwYWNrZXRzIGJ5IFBUUywgd2hp Y2ggd2lsbCBicmVhayBkZWNvZGluZywgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgICBib29s IEhhc0FsdFJlZnMgPSAoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDggfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfVlA5KTsKKy0gICAgICAgICAgICAgICAgaWYgKFBhY2tldC5kdXJh dGlvbiA9PSAwICYmICFIYXNBbHRSZWZzKQorKyAgICAgICAgICAgICAgICBpZiAoUGFja2V0LT5k dXJhdGlvbiA9PSAwICYmICFIYXNBbHRSZWZzKSB7CisrICAgICAgICAgICAgICAgICAgICBhdl9w YWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgICAgICAgICAgICAgIHRocm93IEZGTVNfRXhj ZXB0aW9uKEZGTVNfRVJST1JfSU5ERVhJTkcsIEZGTVNfRVJST1JfUEFSU0VSLAorICAgICAgICAg ICAgICAgICAgICAgICAgICJJbnZhbGlkIHBhY2tldCBwdHMsIGR0cywgYW5kIGR1cmF0aW9uIik7 CisrICAgICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgICAgICAgaWYgKFRyYWNrSW5mby5l bXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgUFRTID0gMDsKK0BAIC01MTMsNyArNTE5LDcg QEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAg IFBhcnNlVmlkZW9QYWNrZXQoQVZDb250ZXh0c1tUcmFja10sIFBhY2tldCwgJlJlcGVhdFBpY3Qs ICZGcmFtZVR5cGUsICZJbnZpc2libGUsICZMYXN0UGljU3RydWN0KTsKKyAKKyAgICAgICAgICAg ICBUcmFja0luZm8uQWRkVmlkZW9GcmFtZShQVFMsIFJlcGVhdFBpY3QsIEtleUZyYW1lLAorLSAg ICAgICAgICAgICAgICBGcmFtZVR5cGUsIFBhY2tldC5wb3MsIEludmlzaWJsZSk7CisrICAgICAg ICAgICAgICAgIEZyYW1lVHlwZSwgUGFja2V0LT5wb3MsIEludmlzaWJsZSk7CisgICAgICAgICB9 IGVsc2UgaWYgKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNf dHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8pIHsKKyAgICAgICAgICAgICAvLyBGb3IgdmlkZW8g c2Vla2luZyB0aW1lc3RhbXBzIGFyZSB1c2VkIG9ubHkgaWYgYWxsIHBhY2tldHMgaGF2ZQorICAg ICAgICAgICAgIC8vIHRpbWVzdGFtcHMsIHdoaWxlIGZvciBhdWRpbyB0aGV5J3JlIHVzZWQgaWYg YW55IGhhdmUgdGltZXN0YW1wcywKK0BAIC01MjIsMjggKzUyOCwyOSBAQCBGRk1TX0luZGV4ICpG Rk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgICAgIFRyYWNrSW5mby5I YXNUUyA9IHRydWU7CisgCisgICAgICAgICAgICAgaW50NjRfdCBTdGFydFNhbXBsZSA9IEFWQ29u dGV4dHNbVHJhY2tdLkN1cnJlbnRTYW1wbGU7CistICAgICAgICAgICAgdWludDMyX3QgU2FtcGxl Q291bnQgPSBJbmRleEF1ZGlvUGFja2V0KFRyYWNrLCAmUGFja2V0LCBBVkNvbnRleHRzW1RyYWNr XSwgKlRyYWNrSW5kaWNlcyk7CisrICAgICAgICAgICAgdWludDMyX3QgU2FtcGxlQ291bnQgPSBJ bmRleEF1ZGlvUGFja2V0KFRyYWNrLCBQYWNrZXQsIEFWQ29udGV4dHNbVHJhY2tdLCAqVHJhY2tJ bmRpY2VzKTsKKyAgICAgICAgICAgICBUcmFja0luZm8uU2FtcGxlUmF0ZSA9IEFWQ29udGV4dHNb VHJhY2tdLkNvZGVjQ29udGV4dC0+c2FtcGxlX3JhdGU7CisgCisgICAgICAgICAgICAgVHJhY2tJ bmZvLkFkZEF1ZGlvRnJhbWUoTGFzdFZhbGlkVFNbVHJhY2tdLAorLSAgICAgICAgICAgICAgICBT dGFydFNhbXBsZSwgU2FtcGxlQ291bnQsIEtleUZyYW1lLCBQYWNrZXQucG9zLCBQYWNrZXQuZmxh Z3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKysgICAgICAgICAgICAgICAgU3RhcnRTYW1wbGUs IFNhbXBsZUNvdW50LCBLZXlGcmFtZSwgUGFja2V0LT5wb3MsIFBhY2tldC0+ZmxhZ3MgJiBBVl9Q S1RfRkxBR19ESVNDQVJEKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGlmICghKFBhY2tldC5m bGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpKQorLSAgICAgICAgICAgIFRyYWNrSW5mby5MYXN0 RHVyYXRpb24gPSBQYWNrZXQuZHVyYXRpb247CisrICAgICAgICBpZiAoIShQYWNrZXQtPmZsYWdz ICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpCisrICAgICAgICAgICAgVHJhY2tJbmZvLkxhc3REdXJh dGlvbiA9IFBhY2tldC0+ZHVyYXRpb247CisgCistICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBh Y2tldCk7CisrICAgICAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgfQorKyAgICBh dl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAKKyAgICAgVHJhY2tJbmRpY2VzLT5GaW5hbGl6ZShB VkNvbnRleHRzLCBGb3JtYXRDb250ZXh0LT5pZm9ybWF0LT5uYW1lKTsKKyAgICAgcmV0dXJuIFRy YWNrSW5kaWNlcy5yZWxlYXNlKCk7CisgfQorIAorLXZvaWQgRkZNU19JbmRleGVyOjpSZWFkVFMo Y29uc3QgQVZQYWNrZXQgJlBhY2tldCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUykgeworLSAg ICBpZiAoIVVzZURUUyAmJiBQYWNrZXQucHRzICE9IEFWX05PUFRTX1ZBTFVFKQorLSAgICAgICAg VFMgPSBQYWNrZXQucHRzOworK3ZvaWQgRkZNU19JbmRleGVyOjpSZWFkVFMoY29uc3QgQVZQYWNr ZXQgKlBhY2tldCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUykgeworKyAgICBpZiAoIVVzZURU UyAmJiBQYWNrZXQtPnB0cyAhPSBBVl9OT1BUU19WQUxVRSkKKysgICAgICAgIFRTID0gUGFja2V0 LT5wdHM7CisgICAgIGlmIChUUyA9PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICAgIFVzZURUUyA9 IHRydWU7CistICAgIGlmIChVc2VEVFMgJiYgUGFja2V0LmR0cyAhPSBBVl9OT1BUU19WQUxVRSkK Ky0gICAgICAgIFRTID0gUGFja2V0LmR0czsKKysgICAgaWYgKFVzZURUUyAmJiBQYWNrZXQtPmR0 cyAhPSBBVl9OT1BUU19WQUxVRSkKKysgICAgICAgIFRTID0gUGFja2V0LT5kdHM7CisgfQorZGlm ZiAtLWdpdCBhL3NyYy9jb3JlL2luZGV4aW5nLmggYi9zcmMvY29yZS9pbmRleGluZy5oCitpbmRl eCAzY2ZjM2MzLi41YzA2ODY4IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvaW5kZXhpbmcuaAorKysr IGIvc3JjL2NvcmUvaW5kZXhpbmcuaAorQEAgLTgwLDEwICs4MCwxMCBAQCBwcml2YXRlOgorICAg ICBpbnQ2NF90IEZpbGVzaXplOworICAgICB1aW50OF90IERpZ2VzdFsyMF07CisgCistICAgIHZv aWQgUmVhZFRTKGNvbnN0IEFWUGFja2V0ICZQYWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VE VFMpOworKyAgICB2b2lkIFJlYWRUUyhjb25zdCBBVlBhY2tldCAqUGFja2V0LCBpbnQ2NF90ICZU UywgYm9vbCAmVXNlRFRTKTsKKyAgICAgdm9pZCBDaGVja0F1ZGlvUHJvcGVydGllcyhpbnQgVHJh Y2ssIEFWQ29kZWNDb250ZXh0ICpDb250ZXh0KTsKKyAgICAgdWludDMyX3QgSW5kZXhBdWRpb1Bh Y2tldChpbnQgVHJhY2ssIEFWUGFja2V0ICpQYWNrZXQsIFNoYXJlZEFWQ29udGV4dCAmQ29udGV4 dCwgRkZNU19JbmRleCAmVHJhY2tJbmRpY2VzKTsKKy0gICAgdm9pZCBQYXJzZVZpZGVvUGFja2V0 KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0LCBpbnQgKlJlcGVh dFBpY3QsIGludCAqRnJhbWVUeXBlLCBib29sICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3Ry dWN0dXJlICpMYXN0UGljU3RydWN0KTsKKysgICAgdm9pZCBQYXJzZVZpZGVvUGFja2V0KFNoYXJl ZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAqcGt0LCBpbnQgKlJlcGVhdFBpY3Qs IGludCAqRnJhbWVUeXBlLCBib29sICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3RydWN0dXJl ICpMYXN0UGljU3RydWN0KTsKKyAgICAgdm9pZCBGcmVlKCk7CisgcHVibGljOgorICAgICBGRk1T X0luZGV4ZXIoY29uc3QgY2hhciAqRmlsZW5hbWUpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3V0 aWxzLmNwcCBiL3NyYy9jb3JlL3V0aWxzLmNwcAoraW5kZXggY2U2NzUzMy4uOGEyZTk5NyAxMDA2 NDQKKy0tLSBhL3NyYy9jb3JlL3V0aWxzLmNwcAorKysrIGIvc3JjL2NvcmUvdXRpbHMuY3BwCitA QCAtNjIsMTIgKzYyLDYgQEAgdm9pZCBDbGVhckVycm9ySW5mbyhGRk1TX0Vycm9ySW5mbyAqRXJy b3JJbmZvKSB7CisgICAgIH0KKyB9CisgCistdm9pZCBJbml0TnVsbFBhY2tldChBVlBhY2tldCAm cGt0KSB7CistICAgIGF2X2luaXRfcGFja2V0KCZwa3QpOworLSAgICBwa3QuZGF0YSA9IG51bGxw dHI7CistICAgIHBrdC5zaXplID0gMDsKKy19CistCisgdm9pZCBGaWxsQVAoRkZNU19BdWRpb1By b3BlcnRpZXMgJkFQLCBBVkNvZGVjQ29udGV4dCAqQ1RYLCBGRk1TX1RyYWNrICZGcmFtZXMpIHsK KyAgICAgQVAuU2FtcGxlRm9ybWF0ID0gc3RhdGljX2Nhc3Q8RkZNU19TYW1wbGVGb3JtYXQ+KGF2 X2dldF9wYWNrZWRfc2FtcGxlX2ZtdChDVFgtPnNhbXBsZV9mbXQpKTsKKyAgICAgQVAuQml0c1Bl clNhbXBsZSA9IGF2X2dldF9ieXRlc19wZXJfc2FtcGxlKENUWC0+c2FtcGxlX2ZtdCkgKiA4Owor ZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3V0aWxzLmggYi9zcmMvY29yZS91dGlscy5oCitpbmRleCA5 ODE5ZGM3Li4wMDNhYjc5IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdXRpbHMuaAorKysrIGIvc3Jj L2NvcmUvdXRpbHMuaAorQEAgLTU4LDcgKzU4LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1ha2Vf dW5pcXVlKEFyZ3MmJi4uLiBhcmdzKSB7CisgfQorIAorIHZvaWQgQ2xlYXJFcnJvckluZm8oRkZN U19FcnJvckluZm8gKkVycm9ySW5mbyk7Cistdm9pZCBJbml0TnVsbFBhY2tldChBVlBhY2tldCAm cGt0KTsKKyB2b2lkIEZpbGxBUChGRk1TX0F1ZGlvUHJvcGVydGllcyAmQVAsIEFWQ29kZWNDb250 ZXh0ICpDVFgsIEZGTVNfVHJhY2sgJkZyYW1lcyk7CisgCisgdm9pZCBMQVZGT3BlbkZpbGUoY29u c3QgY2hhciAqU291cmNlRmlsZSwgQVZGb3JtYXRDb250ZXh0IComRm9ybWF0Q29udGV4dCwgaW50 IFRyYWNrKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgYi9zcmMvY29y ZS92aWRlb3NvdXJjZS5jcHAKK2luZGV4IDA2YmQxNjEuLmI4ODk5NzAgMTAwNjQ0CistLS0gYS9z cmMvY29yZS92aWRlb3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAor QEAgLTY3MywzMCArNjczLDM0IEBAIHZvaWQgRkZNU19WaWRlb1NvdXJjZTo6RGVjb2RlTmV4dEZy YW1lKGludDY0X3QgJkFTdGFydFRpbWUsIGludDY0X3QgJlBvcykgeworICAgICBpZiAoSGFzUGVu ZGluZ0RlbGF5ZWRGcmFtZXMoKSkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgQVZQYWNrZXQg UGFja2V0OworLSAgICBJbml0TnVsbFBhY2tldChQYWNrZXQpOworLQorLSAgICB3aGlsZSAoUmVh ZEZyYW1lKCZQYWNrZXQpID49IDApIHsKKy0gICAgICAgIGlmIChQYWNrZXQuc3RyZWFtX2luZGV4 ICE9IFZpZGVvVHJhY2spIHsKKy0gICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7 CisrICAgIEFWUGFja2V0ICpQYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQ YWNrZXQpCisrICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5H LCBGRk1TX0VSUk9SX0FMTE9DQVRJT05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3Qg YWxsb2NhdGUgcGFja2V0LiIpOworKworKyAgICB3aGlsZSAoUmVhZEZyYW1lKFBhY2tldCkgPj0g MCkgeworKyAgICAgICAgaWYgKFBhY2tldC0+c3RyZWFtX2luZGV4ICE9IFZpZGVvVHJhY2spIHsK KysgICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgICAgICAgICBjb250 aW51ZTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmIChBU3RhcnRUaW1lIDwgMCkKKy0gICAg ICAgICAgICBBU3RhcnRUaW1lID0gRnJhbWVzLlVzZURUUyA/IFBhY2tldC5kdHMgOiBQYWNrZXQu cHRzOworKyAgICAgICAgICAgIEFTdGFydFRpbWUgPSBGcmFtZXMuVXNlRFRTID8gUGFja2V0LT5k dHMgOiBQYWNrZXQtPnB0czsKKyAKKyAgICAgICAgIGlmIChQb3MgPCAwKQorLSAgICAgICAgICAg IFBvcyA9IFBhY2tldC5wb3M7CisrICAgICAgICAgICAgUG9zID0gUGFja2V0LT5wb3M7CisgCist ICAgICAgICBib29sIEZyYW1lRmluaXNoZWQgPSBEZWNvZGVQYWNrZXQoJlBhY2tldCk7CistICAg ICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CistICAgICAgICBpZiAoRnJhbWVGaW5pc2hl ZCkKKysgICAgICAgIGJvb2wgRnJhbWVGaW5pc2hlZCA9IERlY29kZVBhY2tldChQYWNrZXQpOwor KyAgICAgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisrICAgICAgICBpZiAoRnJhbWVGaW5p c2hlZCkgeworKyAgICAgICAgICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworICAgICAgICAg ICAgIHJldHVybjsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICAvLyBGbHVzaCBmaW5hbCBm cmFtZXMKKy0gICAgSW5pdE51bGxQYWNrZXQoUGFja2V0KTsKKy0gICAgRGVjb2RlUGFja2V0KCZQ YWNrZXQpOworKyAgICBEZWNvZGVQYWNrZXQoUGFja2V0KTsKKysgICAgYXZfcGFja2V0X2ZyZWUo JlBhY2tldCk7CisgfQorIAorIGJvb2wgRkZNU19WaWRlb1NvdXJjZTo6U2Vla1RvKGludCBuLCBp bnQgU2Vla09mZnNldCkgeworLS0gCisyLjQwLjAKKworRnJvbSBiZjllMDNlOWUwODUzNGMwMjRl NWE3NDRhNjQzN2M0YWFjMTYwMjAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVy ZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQg TWF5IDIwMjEgMTQ6MjA6NDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIGNvbmZpZ3VyZTog UmVtb3ZlIGRlcHJlY2F0ZWQgQVBJIHVzZQorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5o dWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQg KystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisK K2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGIzNWVmODBi Yy4uZDE5NzE0ZDBmIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUu YWMKK0BAIC0xMDIsMTAgKzEwMiwxMCBAQCBDRkxBR1M9IiRfQ0ZMQUdTICRGRk1QRUdfQ0ZMQUdT IgorCisgQUNfREVGVU4oW1RFU1RfRkZNUEVHXSwKKyAgICAgICAgICBbQUNfTElOS19JRkVMU0Uo W0FDX0xBTkdfUFJPR1JBTShbWworLSAgICAgICAgICAgICNpbmNsdWRlIDxsaWJhdmNvZGVjL2F2 Y29kZWMuaD4KKysgICAgICAgICAgICAjaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4K KyAgICAgICAgICAgICAjaW5jbHVkZSA8bGlic3dzY2FsZS9zd3NjYWxlLmg+CisgICAgICAgICAg ICAgXV0sW1sKKy0gICAgICAgICAgICAgICAgYXZjb2RlY19yZWdpc3Rlcl9hbGwoKTsKKysgICAg ICAgICAgICAgICAgYXZmb3JtYXRfbmV0d29ya19pbml0KCk7CisgICAgICAgICAgICAgICAgIHN3 c2NhbGVfdmVyc2lvbigpOworICAgICAgICAgICAgIF1dKV0sIFtldmFsICQxPXllc10sIFtldmFs ICQxPW5vXSkKKyAgICAgICAgIF0pCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtczIvdGVtcGxh dGUgYi9zcmNwa2dzL2ZmbXMyL3RlbXBsYXRlCmluZGV4IDY4ZThhMGMxNGJjZS4uMmFjZmFkYWM0 NGIzIDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZmbXMyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZt czIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1zMicK IHBrZ25hbWU9ZmZtczIKIHZlcnNpb249Mi40MAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZW5hYmxlLXNoYXJlZCAt LWRpc2FibGUtc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGF1dG9jb25mIGF1 dG9tYWtlIGxpYnRvb2wiCgpGcm9tIGY4YmE3MTgyZmFhZmM3NzllNDJjZGVlNDc1ZjNjZGQ4ZTBm OTczNzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BB VENIIDAzNy8xNDBdIGZyZWVyZHA6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL2Zy ZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoICAgIHwgNDIgKysrKysrKysrKysr KysrKysrKwogc3JjcGtncy9mcmVlcmRwL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5 YWEucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2Fh MmNiOWFhLnBhdGNoIGIvc3JjcGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE0MzI0ZGEzYTg4 MgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEy Y2I5YWEucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBhYTJjYjlhYTVmZjU1NjI0MzM1OThi YTE2OGE0NjZlMDc1MmJjYTBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogYWthbGxh YmV0aCA8YWthbGxhYmV0aEBwb3N0ZW8ubmV0PgorRGF0ZTogVHVlLCAxNCBGZWIgMjAyMyAwNzo0 ODo1NCArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXhlZCAjODY4NjogVXBkYXRlIGgyNjQgdG8g dXNlIG5ldyBGRk1QRUcgQVBJCisKKy0tLQorIGNoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90 c21mX2ZmbXBlZy5jIHwgMiArKworIGxpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYyAgICAg ICAgICAgIHwgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYg LS1naXQgYS9jaGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYyBiL2NoYW5u ZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jCitpbmRleCAzMzk0NjJkODY1Zi4u YmVlYTgwYjdhMWUgMTAwNjQ0CistLS0gYS9jaGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNt Zl9mZm1wZWcuYworKysrIGIvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVn LmMKK0BAIC0yMzksOCArMjM5LDEwIEBAIHN0YXRpYyBCT09MIHRzbWZfZmZtcGVnX2luaXRfc3Ry ZWFtKElUU01GRGVjb2RlciogZGVjb2RlciwgY29uc3QgVFNfQU1fTUVESUFfVFlQCisgCQl9Cisg CX0KKyAKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX0lOVCA8IEFWX1ZFUlNJT05fSU5UKDU5LCAx OCwgMTAwKQorIAlpZiAobWRlY29kZXItPmNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19D QVBfVFJVTkNBVEVEKQorIAkJbWRlY29kZXItPmNvZGVjX2NvbnRleHQtPmZsYWdzIHw9IEFWX0NP REVDX0ZMQUdfVFJVTkNBVEVEOworKyNlbmRpZgorIAorIAlyZXR1cm4gVFJVRTsKKyB9CitkaWZm IC0tZ2l0IGEvbGliZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jIGIvbGliZnJlZXJkcC9jb2Rl Yy9oMjY0X2ZmbXBlZy5jCitpbmRleCA4YTIzZGIyNDczYy4uODk2YTMzMzAxOWIgMTAwNjQ0Cist LS0gYS9saWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMKKysrKyBiL2xpYmZyZWVyZHAvY29k ZWMvaDI2NF9mZm1wZWcuYworQEAgLTYxNSwxMCArNjE1LDEyIEBAIHN0YXRpYyBCT09MIGxpYmF2 Y29kZWNfaW5pdChIMjY0X0NPTlRFWFQqIGgyNjQpCisgCQkJZ290byBFWENFUFRJT047CisgCQl9 CisgCisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCg1OSwgMTgs IDEwMCkKKyAJCWlmIChzeXMtPmNvZGVjRGVjb2Rlci0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNf Q0FQX1RSVU5DQVRFRCkKKyAJCXsKKyAJCQlzeXMtPmNvZGVjRGVjb2RlckNvbnRleHQtPmZsYWdz IHw9IEFWX0NPREVDX0ZMQUdfVFJVTkNBVEVEOworIAkJfQorKyNlbmRpZgorIAorICNpZmRlZiBX SVRIX1ZBQVBJCisgCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVyZHAvdGVtcGxhdGUgYi9zcmNw a2dzL2ZyZWVyZHAvdGVtcGxhdGUKaW5kZXggMjVlOGFhOTY3N2YwLi40ZDUxYzgxODk5MDIgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZnJlZXJkcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZyZWVyZHAv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmcmVlcmRwJwog cGtnbmFtZT1mcmVlcmRwCiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfQUxTQT1PTiAtRFdJVEhf Q1VQUz1PRkYgLURXSVRIX0ZGTVBFRz1PTgogIC1EV0lUSF9HU1RSRUFNRVJfMF8xMD1PRkYgLURX SVRIX0dTVFJFQU1FUl8xXzA9T0ZGIC1EV0lUSF9KUEVHPU9OCgpGcm9tIDhhMWNkYTBiY2Y1YzVi NjEwZTY4NTQxYWUyNDAzODRiYjRhMTEzNmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzOC8xNDBdIGdlcmJlcmE6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9nZXJiZXJhL3RlbXBsYXRlIGIvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCmluZGV4IGFlMTRm MzVjNzY3Yy4uMmRjMGFjMGNlMDNiIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dlcmJlcmEvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnZ2VyYmVyYScKIHBrZ25hbWU9Z2VyYmVyYQogdmVyc2lvbj0xLjEyLjEK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJn cz0iLURXSVRIX1NZU1RFTUQ9MCAtRFdJVEhfQVZDT0RFQz0xIgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIgoKRnJvbSA4ZDVkZTRjOWNmNWI5NzVmZTU4YzZmMTkxYzZhZWFkYjA3ZmY5NTk3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw MzkvMTQwXSBnb2xkZW5kaWN0OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv Z29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzQucGF0Y2ggfCAgMjEgLS0KIHNyY3BrZ3MvZ29sZGVu ZGljdC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggfCAyMzIgKysrKysrKysrKysrKysrKysrKysrKysK IHNyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgIDIgKy0KIDMgZmls ZXMgY2hhbmdlZCwgMjMzIGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzQucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVnNC5wYXRjaCBiL3Ny Y3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGYwNDVmYTI3ZjU0Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZ29s ZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCww IEBACi0tLS0gYS9mZm1wZWdhdWRpby5jYy5vcmlnIDIwMTgtMDUtMDkgMjI6MTY6MTMuNDgwNjU5 OTU4ICswMjAwCi0rKysgYi9mZm1wZWdhdWRpby5jYyAgICAgIDIwMTgtMDUtMDkgMjI6MTY6NTAu NzQ4MzIyNzkwICswMjAwCi1AQCAtMTQzLDcgKzE0Myw3IEBACi0gICAgIHJldHVybiBmYWxzZTsK LSAgIH0KLQotLSAgdW5zaWduZWQgY2hhciAqIGF2aW9CdWZmZXIgPSAoIHVuc2lnbmVkIGNoYXIg KiApYXZfbWFsbG9jKCBrQnVmZmVyU2l6ZSArIEZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUg KTsKLSsgIHVuc2lnbmVkIGNoYXIgKiBhdmlvQnVmZmVyID0gKCB1bnNpZ25lZCBjaGFyICogKWF2 X21hbGxvYygga0J1ZmZlclNpemUgKyBBVl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFICk7Ci0g ICBpZiAoICFhdmlvQnVmZmVyICkKLSAgIHsKLSAgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0 ciggImF2X21hbGxvYygpIGZhaWxlZC4iICk7Ci1AQCAtMzgwLDcgKzM4MCw3IEBACi0gICB9Ci0K LSAgIGlmICggIVF0NHg1OjpBdG9taWNJbnQ6OmxvYWRBY3F1aXJlKCBpc0NhbmNlbGxlZF8gKSAm JgotLSAgICAgICBjb2RlY0NvbnRleHRfLT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQ09ERUNfQ0FQ X0RFTEFZICkKLSsgICAgICAgY29kZWNDb250ZXh0Xy0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIEFW X0NPREVDX0NBUF9ERUxBWSApCi0gICB7Ci0gICAgIGF2X2luaXRfcGFja2V0KCAmcGFja2V0ICk7 Ci0gICAgIGludCBnb3RGcmFtZSA9IDA7Ci0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ29sZGVuZGlj dC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2NmYzk4 YWRhMzY4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZt cGVnNS5wYXRjaApAQCAtMCwwICsxLDIzMiBAQAorRnJvbSAwM2JiZTAxYjc5YTFmMDdhNjc4MGNi NjBmMjNhMDg3MTA0YzVkNzdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWJzNjIg PG90dG9tYW5uQHlhbmRleC5ydT4KK0RhdGU6IEZyaSwgMzAgTWFyIDIwMTggMjI6NTM6MjQgKzAz MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IHdhcm5pbmdzIHdoaWxlIGNvbXBpbGUgd2l0aCBGRk1w ZWcgMy40LjIgKGlzc3VlICM5NzgpCisKKy0tLQorIGZmbXBlZ2F1ZGlvLmNjIHwgNjggKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KKyAxIGZpbGUgY2hh bmdlZCwgNjIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Zm bXBlZ2F1ZGlvLmNjIGIvZmZtcGVnYXVkaW8uY2MKK2luZGV4IGVkMTE3MmJkZC4uNTZlOGY3ODhl IDEwMDY0NAorLS0tIGEvZmZtcGVnYXVkaW8uY2MKKysrKyBiL2ZmbXBlZ2F1ZGlvLmNjCitAQCAt OTEsNiArOTEsNyBAQCBzdHJ1Y3QgRGVjb2RlckNvbnRleHQKKyAgIFFCeXRlQXJyYXkgYXVkaW9E YXRhXzsKKyAgIFFEYXRhU3RyZWFtIGF1ZGlvRGF0YVN0cmVhbV87CisgICBBVkZvcm1hdENvbnRl eHQgKiBmb3JtYXRDb250ZXh0XzsKKysgIEFWQ29kZWMgKiBjb2RlY187CisgICBBVkNvZGVjQ29u dGV4dCAqIGNvZGVjQ29udGV4dF87CisgICBBVklPQ29udGV4dCAqIGF2aW9Db250ZXh0XzsKKyAg IEFWU3RyZWFtICogYXVkaW9TdHJlYW1fOworQEAgLTExNCw2ICsxMTUsNyBAQCBEZWNvZGVyQ29u dGV4dDo6RGVjb2RlckNvbnRleHQoIFFCeXRlQXJyYXkgY29uc3QgJiBhdWRpb0RhdGEsIFFBdG9t aWNJbnQgJiBpc0NhbgorICAgYXVkaW9EYXRhXyggYXVkaW9EYXRhICksCisgICBhdWRpb0RhdGFT dHJlYW1fKCBhdWRpb0RhdGFfICksCisgICBmb3JtYXRDb250ZXh0XyggTlVMTCApLAorKyAgY29k ZWNfKCBOVUxMICksCisgICBjb2RlY0NvbnRleHRfKCBOVUxMICksCisgICBhdmlvQ29udGV4dF8o IE5VTEwgKSwKKyAgIGF1ZGlvU3RyZWFtXyggTlVMTCApLAorQEAgLTE0Myw3ICsxNDUsMTEgQEAg Ym9vbCBEZWNvZGVyQ29udGV4dDo6b3BlbkNvZGVjKCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQor ICAgICByZXR1cm4gZmFsc2U7CisgICB9CisKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9S IDwgNTYgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTYgJiYgTElCQVZDT0RFQ19W RVJTSU9OX01JTk9SIDwgNTYgKQorICAgdW5zaWduZWQgY2hhciAqIGF2aW9CdWZmZXIgPSAoIHVu c2lnbmVkIGNoYXIgKiApYXZfbWFsbG9jKCBrQnVmZmVyU2l6ZSArIEZGX0lOUFVUX0JVRkZFUl9Q QURESU5HX1NJWkUgKTsKKysjZWxzZQorKyAgdW5zaWduZWQgY2hhciAqIGF2aW9CdWZmZXIgPSAo IHVuc2lnbmVkIGNoYXIgKiApYXZfbWFsbG9jKCBrQnVmZmVyU2l6ZSArIEFWX0lOUFVUX0JVRkZF Ul9QQURESU5HX1NJWkUgKTsKKysjZW5kaWYKKyAgIGlmICggIWF2aW9CdWZmZXIgKQorICAgewor ICAgICBlcnJvclN0cmluZyA9IFFPYmplY3Q6OnRyKCAiYXZfbWFsbG9jKCkgZmFpbGVkLiIgKTsK K0BAIC0xODYsNyArMTkyLDExIEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6Om9wZW5Db2RlYyggUVN0 cmluZyAmIGVycm9yU3RyaW5nICkKKyAgIC8vIEZpbmQgYXVkaW8gc3RyZWFtLCB1c2UgdGhlIGZp cnN0IGF1ZGlvIHN0cmVhbSBpZiBhdmFpbGFibGUKKyAgIGZvciAoIHVuc2lnbmVkIGkgPSAwOyBp IDwgZm9ybWF0Q29udGV4dF8tPm5iX3N0cmVhbXM7IGkrKyApCisgICB7CisrI2lmIExJQkFWQ09E RUNfVkVSU0lPTl9NQUpPUiA8IDU3IHx8ICggTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID09IDU3 ICYmIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiA8IDMzICkKKyAgICAgaWYgKCBmb3JtYXRDb250 ZXh0Xy0+c3RyZWFtc1tpXS0+Y29kZWMtPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElP ICkKKysjZWxzZQorKyAgICAgIGlmICggZm9ybWF0Q29udGV4dF8tPnN0cmVhbXNbaV0tPmNvZGVj cGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTyApCisrI2VuZGlmCisgICAgIHsK KyAgICAgICBhdWRpb1N0cmVhbV8gPSBmb3JtYXRDb250ZXh0Xy0+c3RyZWFtc1tpXTsKKyAgICAg ICBicmVhazsKK0BAIC0xOTgsMjIgKzIwOCwzOCBAQCBib29sIERlY29kZXJDb250ZXh0OjpvcGVu Q29kZWMoIFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgICAgIHJldHVybiBmYWxzZTsKKyAgIH0K KworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1NyB8fCAoIExJQkFWQ09ERUNfVkVS U0lPTl9NQUpPUiA9PSA1NyAmJiBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgPCAzMyApCisgICBj b2RlY0NvbnRleHRfID0gYXVkaW9TdHJlYW1fLT5jb2RlYzsKKy0gIEFWQ29kZWMgKiBjb2RlYyA9 IGF2Y29kZWNfZmluZF9kZWNvZGVyKCBjb2RlY0NvbnRleHRfLT5jb2RlY19pZCApOworLSAgaWYg KCAhY29kZWMgKQorKyAgY29kZWNfID0gYXZjb2RlY19maW5kX2RlY29kZXIoIGNvZGVjQ29udGV4 dF8tPmNvZGVjX2lkICk7CisrICBpZiAoICFjb2RlY18gKQorICAgeworICAgICBlcnJvclN0cmlu ZyA9IFFPYmplY3Q6OnRyKCAiQ29kZWMgW2lkOiAlMV0gbm90IGZvdW5kLiIgKS5hcmcoIGNvZGVj Q29udGV4dF8tPmNvZGVjX2lkICk7CisgICAgIHJldHVybiBmYWxzZTsKKyAgIH0KKysjZWxzZQor KyAgY29kZWNfID0gYXZjb2RlY19maW5kX2RlY29kZXIoIGF1ZGlvU3RyZWFtXy0+Y29kZWNwYXIt PmNvZGVjX2lkICk7CisrICBpZiAoICFjb2RlY18gKQorKyAgeworKyAgICBlcnJvclN0cmluZyA9 IFFPYmplY3Q6OnRyKCAiQ29kZWMgW2lkOiAlMV0gbm90IGZvdW5kLiIgKS5hcmcoIGF1ZGlvU3Ry ZWFtXy0+Y29kZWNwYXItPmNvZGVjX2lkICk7CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysg IGNvZGVjQ29udGV4dF8gPSBhdmNvZGVjX2FsbG9jX2NvbnRleHQzKCBjb2RlY18gKTsKKysgIGlm ICggIWNvZGVjQ29udGV4dF8gKQorKyAgeworKyAgICBlcnJvclN0cmluZyA9IFFPYmplY3Q6OnRy KCAiYXZjb2RlY19hbGxvY19jb250ZXh0MygpIGZhaWxlZC4iICk7CisrICAgIHJldHVybiBmYWxz ZTsKKysgIH0KKysgIGF2Y29kZWNfcGFyYW1ldGVyc190b19jb250ZXh0KCBjb2RlY0NvbnRleHRf LCBhdWRpb1N0cmVhbV8tPmNvZGVjcGFyICk7CisrI2VuZGlmCisKKy0gIHJldCA9IGF2Y29kZWNf b3BlbjIoIGNvZGVjQ29udGV4dF8sIGNvZGVjLCBOVUxMICk7CisrICByZXQgPSBhdmNvZGVjX29w ZW4yKCBjb2RlY0NvbnRleHRfLCBjb2RlY18sIE5VTEwgKTsKKyAgIGlmICggcmV0IDwgMCApCisg ICB7CisgICAgIGVycm9yU3RyaW5nID0gUU9iamVjdDo6dHIoICJhdmNvZGVjX29wZW4yKCkgZmFp bGVkOiAlMS4iICkuYXJnKCBhdkVycm9yU3RyaW5nKCByZXQgKSApOworICAgICByZXR1cm4gZmFs c2U7CisgICB9CisKKy0gIGF2X2xvZyggTlVMTCwgQVZfTE9HX0lORk8sICJDb2RlYyBvcGVuOiAl czogY2hhbm5lbHM6ICVkLCByYXRlOiAlZCwgZm9ybWF0OiAlc1xuIiwgY29kZWMtPmxvbmdfbmFt ZSwKKysgIGF2X2xvZyggTlVMTCwgQVZfTE9HX0lORk8sICJDb2RlYyBvcGVuOiAlczogY2hhbm5l bHM6ICVkLCByYXRlOiAlZCwgZm9ybWF0OiAlc1xuIiwgY29kZWNfLT5sb25nX25hbWUsCisgICAg ICAgICAgIGNvZGVjQ29udGV4dF8tPmNoYW5uZWxzLCBjb2RlY0NvbnRleHRfLT5zYW1wbGVfcmF0 ZSwgYXZfZ2V0X3NhbXBsZV9mbXRfbmFtZSggY29kZWNDb250ZXh0Xy0+c2FtcGxlX2ZtdCApICk7 CisgICByZXR1cm4gdHJ1ZTsKKyB9CitAQCAtMjUyLDEwICsyNzgsMTMgQEAgdm9pZCBEZWNvZGVy Q29udGV4dDo6Y2xvc2VDb2RlYygpCisKKyAgIC8vIENsb3NpbmcgYSBjb2RlYyBjb250ZXh0IHdp dGhvdXQgcHJpb3IgYXZjb2RlY19vcGVuMigpIHdpbGwgcmVzdWx0IGluCisgICAvLyBhIGNyYXNo IGluIGZmbXBlZworLSAgaWYgKCBhdWRpb1N0cmVhbV8gJiYgYXVkaW9TdHJlYW1fLT5jb2RlYyAm JiBhdWRpb1N0cmVhbV8tPmNvZGVjLT5jb2RlYyApCisrICBpZiAoIGF1ZGlvU3RyZWFtXyAmJiBj b2RlY0NvbnRleHRfICYmIGNvZGVjXyApCisgICB7CisgICAgIGF1ZGlvU3RyZWFtXy0+ZGlzY2Fy ZCA9IEFWRElTQ0FSRF9BTEw7CistICAgIGF2Y29kZWNfY2xvc2UoIGF1ZGlvU3RyZWFtXy0+Y29k ZWMgKTsKKysgICAgYXZjb2RlY19jbG9zZSggY29kZWNDb250ZXh0XyApOworKyNpZiBMSUJBVkNP REVDX1ZFUlNJT05fTUFKT1IgPiA1NyB8fCAoIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1 NyAmJiBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgPj0gMzMgKQorKyAgICBhdmNvZGVjX2ZyZWVf Y29udGV4dCggJmNvZGVjQ29udGV4dF8gKTsKKysjZW5kaWYKKyAgIH0KKworICAgYXZmb3JtYXRf Y2xvc2VfaW5wdXQoICZmb3JtYXRDb250ZXh0XyApOworQEAgLTM1Niw2ICszODUsNyBAQCBib29s IERlY29kZXJDb250ZXh0OjpwbGF5KCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICAgICBpZiAo IHBhY2tldC5zdHJlYW1faW5kZXggPT0gYXVkaW9TdHJlYW1fLT5pbmRleCApCisgICAgIHsKKyAg ICAgICBBVlBhY2tldCBwYWNrID0gcGFja2V0OworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFK T1IgPCA1NyB8fCAoIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1NyAmJiBMSUJBVkNPREVD X1ZFUlNJT05fTUlOT1IgPCAzNyApCisgICAgICAgaW50IGdvdEZyYW1lID0gMDsKKyAgICAgICBk bworICAgICAgIHsKK0BAIC0zNzAsNiArNDAwLDE5IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6OnBs YXkoIFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgICAgICAgICBwYWNrLmRhdGEgKz0gbGVuOwor ICAgICAgIH0KKyAgICAgICB3aGlsZSggcGFjay5zaXplID4gMCApOworKyNlbHNlCisrICAgICAg aW50IHJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoIGNvZGVjQ29udGV4dF8sICZwYWNrICk7Cisr ICAgICAgLyogcmVhZCBhbGwgdGhlIG91dHB1dCBmcmFtZXMgKGluIGdlbmVyYWwgdGhlcmUgbWF5 IGJlIGFueSBudW1iZXIgb2YgdGhlbSkgKi8KKysgICAgICB3aGlsZSggcmV0ID49IDAgKQorKyAg ICAgIHsKKysgICAgICAgIHJldCA9IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZSggY29kZWNDb250ZXh0 XywgZnJhbWUpOworKworKyAgICAgICAgaWYgKCBRdDR4NTo6QXRvbWljSW50Ojpsb2FkQWNxdWly ZSggaXNDYW5jZWxsZWRfICkgfHwgcmV0IDwgMCApCisrICAgICAgICAgIGJyZWFrOworKworKyAg ICAgICAgcGxheUZyYW1lKCBmcmFtZSApOworKyAgICAgIH0KKysjZW5kaWYKKyAgICAgfQorICAg ICAvLyBhdl9mcmVlX3BhY2tldCgpIG11c3QgYmUgY2FsbGVkIGFmdGVyIGVhY2ggY2FsbCB0byBh dl9yZWFkX2ZyYW1lKCkKKyAjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTcgfHwgKCBM SUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9S IDwgNyApCitAQCAtMzc5LDYgKzQyMiw3IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6OnBsYXkoIFFT dHJpbmcgJiBlcnJvclN0cmluZyApCisgI2VuZGlmCisgICB9CisKKysjaWYgTElCQVZDT0RFQ19W RVJTSU9OX01BSk9SIDwgNTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYg TElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwgMzcgKQorICAgaWYgKCAhUXQ0eDU6OkF0b21pY0lu dDo6bG9hZEFjcXVpcmUoIGlzQ2FuY2VsbGVkXyApICYmCisgICAgICAgIGNvZGVjQ29udGV4dF8t PmNvZGVjLT5jYXBhYmlsaXRpZXMgJiBDT0RFQ19DQVBfREVMQVkgKQorICAgeworQEAgLTM5MSw2 ICs0MzUsMTggQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6cGxheSggUVN0cmluZyAmIGVycm9yU3Ry aW5nICkKKyAgICAgICBwbGF5RnJhbWUoIGZyYW1lICk7CisgICAgIH0KKyAgIH0KKysjZWxzZQor KyAgLyogZmx1c2ggdGhlIGRlY29kZXIgKi8KKysgIGF2X2luaXRfcGFja2V0KCAmcGFja2V0ICk7 CisrICBpbnQgcmV0ID0gYXZjb2RlY19zZW5kX3BhY2tldChjb2RlY0NvbnRleHRfLCAmcGFja2V0 ICk7CisrICB3aGlsZSggcmV0ID49IDAgKQorKyAgeworKyAgICByZXQgPSBhdmNvZGVjX3JlY2Vp dmVfZnJhbWUoY29kZWNDb250ZXh0XywgZnJhbWUpOworKyAgICBpZiAoIFF0NHg1OjpBdG9taWNJ bnQ6OmxvYWRBY3F1aXJlKCBpc0NhbmNlbGxlZF8gKSB8fCByZXQgPCAwICkKKysgICAgICBicmVh azsKKysgICAgcGxheUZyYW1lKCBmcmFtZSApOworKyAgfQorKyNlbmRpZgorCisgI2lmIExJQkFW Q09ERUNfVkVSU0lPTl9NQUpPUiA8IDU0CisgICBhdl9mcmVlKCBmcmFtZSApOworMzIKK3NyY3Br Z3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzUtMi5wYXRjaAorQ29tbWVudCBvbiB0aGlzIGZp bGUKK0BAIC0wLDAgKzEsMzIgQEAKK0Zyb20gOTY2ZjRhOGI3OGU2MzI0YjkzMGU1YTUwZjJiYjkz MGJkODdlNTY1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFiczYyIDxvdHRvbWFu bkB5YW5kZXgucnU+CitEYXRlOiBGcmksIDI3IFNlcCAyMDE5IDE3OjAwOjUyICswMzAwCitTdWJq ZWN0OiBbUEFUQ0hdIEZGbXBlZyBwbGF5ZXI6IEZpeCBzb21lIGNyYXNoZXMgb24gYnJva2VuIGZp bGVzCisKKy0tLQorIGZmbXBlZ2F1ZGlvLmNjIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQg aW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZmZtcGVnYXVkaW8uY2MgYi9mZm1wZWdhdWRp by5jYworaW5kZXggNTZlOGY3ODhlLi40MTVmYzc5Y2IgMTAwNjQ0CistLS0gYS9mZm1wZWdhdWRp by5jYworKysrIGIvZmZtcGVnYXVkaW8uY2MKK0BAIC01MSw3ICs1MSw5IEBAIEF1ZGlvU2Vydmlj ZSAmIEF1ZGlvU2VydmljZTo6aW5zdGFuY2UoKQorCisgQXVkaW9TZXJ2aWNlOjpBdWRpb1NlcnZp Y2UoKQorIHsKKysjaWYgTElCQVZGT1JNQVRfVkVSU0lPTl9NQUpPUiA8IDU4IHx8ICggTElCQVZG T1JNQVRfVkVSU0lPTl9NQUpPUiA9PSA1OCAmJiBMSUJBVkZPUk1BVF9WRVJTSU9OX01JTk9SIDwg OSApCisgICBhdl9yZWdpc3Rlcl9hbGwoKTsKKysjZW5kaWYKKyAgIGFvX2luaXRpYWxpemUoKTsK KyB9CisKK0BAIC00MzgsNiArNDQwLDggQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6cGxheSggUVN0 cmluZyAmIGVycm9yU3RyaW5nICkKKyAjZWxzZQorICAgLyogZmx1c2ggdGhlIGRlY29kZXIgKi8K KyAgIGF2X2luaXRfcGFja2V0KCAmcGFja2V0ICk7CisrICBwYWNrZXQuZGF0YSA9IE5VTEw7Cisr ICBwYWNrZXQuc2l6ZSA9IDA7CisgICBpbnQgcmV0ID0gYXZjb2RlY19zZW5kX3BhY2tldChjb2Rl Y0NvbnRleHRfLCAmcGFja2V0ICk7CisgICB3aGlsZSggcmV0ID49IDAgKQorICAgeworMjUKK3Ny Y3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzUtMy5wYXRjaAorQ29tbWVudCBvbiB0aGlz IGZpbGUKK0BAIC0wLDAgKzEsMjUgQEAKK0Zyb20gOGFjYjI4OGM5ZTliZGIzYzZiZjJlODAzOTU0 ZGQzYjZhYzI3M2MwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IExpYW8gSnVueHVh biA8bWlrZWxqeEAxMjYuY29tPgorRGF0ZTogU3VuLCAyMCBGZWIgMjAyMiAxMjoyODowNSArMDgw MAorU3ViamVjdDogW1BBVENIXSBhZGQgc3VwcG9ydCBmb3IgZmZtcGVnIDUuMAorCistLS0KKyBm Zm1wZWdhdWRpby5jYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykK KworZGlmZiAtLWdpdCBhL2ZmbXBlZ2F1ZGlvLmNjIGIvZmZtcGVnYXVkaW8uY2MKK2luZGV4IGQ1 NTBmNGE3Ny4uNzk0OGQyMTg3IDEwMDY0NAorLS0tIGEvZmZtcGVnYXVkaW8uY2MKKysrKyBiL2Zm bXBlZ2F1ZGlvLmNjCitAQCAtOTQsNyArOTQsMTEgQEAgc3RydWN0IERlY29kZXJDb250ZXh0Cisg ICBRQnl0ZUFycmF5IGF1ZGlvRGF0YV87CisgICBRRGF0YVN0cmVhbSBhdWRpb0RhdGFTdHJlYW1f OworICAgQVZGb3JtYXRDb250ZXh0ICogZm9ybWF0Q29udGV4dF87CisrI2lmIExJQkFWQ09ERUNf VkVSU0lPTl9NQUpPUiA8IDU5CisgICBBVkNvZGVjICogY29kZWNfOworKyNlbHNlCisrICBjb25z dCBBVkNvZGVjICogY29kZWNfOworKyNlbmRpZgorICAgQVZDb2RlY0NvbnRleHQgKiBjb2RlY0Nv bnRleHRfOworICAgQVZJT0NvbnRleHQgKiBhdmlvQ29udGV4dF87CisgICBBVlN0cmVhbSAqIGF1 ZGlvU3RyZWFtXzsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZQppbmRleCA0NTQ0YWU3MTBlZTYuLjJjYTQxODVlNTM4 YSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv Z29sZGVuZGljdC90ZW1wbGF0ZQpAQCAtOSw3ICs5LDcgQEAgbWFrZWRlcGVuZHM9InRpZmYtZGV2 ZWwgcXQ1LWRldmVsIGxpYnZvcmJpcy1kZXZlbCB6bGliLWRldmVsCiAgbGliWHRzdC1kZXZlbCBo dW5zcGVsbC1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgcXQ1LWRlY2xhcmF0aXZlLWRldmVsCiAgcXQ1 LXdlYmtpdC1kZXZlbCBsem8tZGV2ZWwgYnppcDItZGV2ZWwgbGliYW8tZGV2ZWwgcXQ1LXN2Zy1k ZXZlbAogIGxpYmViLWRldmVsIHF0NS14MTFleHRyYXMtZGV2ZWwgZmZtcGVnLWRldmVsIGxpYmx6 bWEtZGV2ZWwiCi1zaG9ydF9kZXNjPSJBIGZlYXR1cmUtcmljaCBkaWN0aW9uYXJ5IGxvb2t1cCBw cm9ncmFtIgorc2hvcnRfZGVzYz0iRmVhdHVyZS1yaWNoIGRpY3Rpb25hcnkgbG9va3VwIHByb2dy YW0iCiBtYWludGFpbmVyPSJKb2huIDxtZUBqb2hubnluYXRvci5kZXY+IgogbGljZW5zZT0iR1BM LTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwOi8vZ29sZGVuZGljdC5vcmcvIgoKRnJvbSA5 NmFiYTA3Yzc1ZjhmMjZjYzg4NWU1MzU4MWFlM2M2NmRkMTg5YzlkIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDAvMTQwXSBnc3QtbGliYXY6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LWxpYmF2 L3RlbXBsYXRlCmluZGV4IGU5YTc5ZGM2NTBhNS4uZjA4MmJkMjExYzY1IDEwMDY0NAotLS0gYS9z cmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1saWJhdicKIHBrZ25h bWU9Z3N0LWxpYmF2CiB2ZXJzaW9uPTEuMjAuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB5YXNtIgogbWFrZWRl cGVuZHM9Im9yYy1kZXZlbCBnc3QtcGx1Z2lucy1iYXNlMS1kZXZlbCBmZm1wZWctZGV2ZWwiCgpG cm9tIGVkZDQ2ZDg0NmM5NGRiNDNmMDFiZjk0ZjNhMzM5ZTUwNGNjZWQ2NzYgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDA0MS8xNDBdIGdzdC1w bHVnaW5zLWJhZDE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtcGx1 Z2lucy1iYWQxL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFk MS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQppbmRleCBmNTVm ODJmZDRjNzcuLjVhOWQ1Mzg3ZTBkNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy1i YWQxL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLWJhZDEnCiBwa2du YW1lPWdzdC1wbHVnaW5zLWJhZDEKLXZlcnNpb249MS4yMC4zCi1yZXZpc2lvbj0zCit2ZXJzaW9u PTEuMjIuMQorcmV2aXNpb249MgogYnVpbGRfaGVscGVyPSJnaXIiCiBidWlsZF9zdHlsZT1tZXNv bgogY29uZmlndXJlX2FyZ3M9Ii1EcGFja2FnZS1vcmlnaW49aHR0cHM6Ly92b2lkbGludXgub3Jn IC1EZG9jPWRpc2FibGVkCgpGcm9tIDk2OGY0MDA4ZjM1NjVhODA2Yjg4MWEwNzY0OWIzY2E0NzRi ZmY2Y2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BB VENIIDA0Mi8xNDBdIGdzdC1ydHNwLXNlcnZlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0 LXJ0c3Atc2VydmVyL3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUK aW5kZXggMzNjZDY0Y2ViOTVlLi44Y2VlYThkMzRiNGIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0 LXJ0c3Atc2VydmVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXJ0c3Atc2VydmVy JwogcGtnbmFtZT1nc3QtcnRzcC1zZXJ2ZXIKIHZlcnNpb249MS4yMC4zCi1yZXZpc2lvbj0yCity ZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IHB5dGhvbjMiCiBtYWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBnc3QtcGx1Z2lucy1iYWQxLWRldmVs IGdvYmplY3QtaW50cm9zcGVjdGlvbgoKRnJvbSAxZjM5MzA2NDhiMTFiZGNiM2UyNTM4ZWEyYmFj YzAyMzUzNjRhYWNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNDMvMTQwXSBndXZjdmlldzogdXBkYXRlIHRvIDIuMC44LgoKLS0tCiBzcmNw a2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2ggfCAxMCArKysrKysrKysrCiBz cmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgfCAgNSArKy0tLQogMiBm aWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaAoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaCBiL3Ny Y3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjUwM2MyYWYzYjc4YwotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDEw IEBACistLS0gYS9ndXZjdmlldy9ndXZjdmlldy5jCisrKysgYi9ndXZjdmlldy9ndXZjdmlldy5j CitAQCAtMjgsNiArMjgsNyBAQAorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxz eXMvcmVzb3VyY2UuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8bG9jYWxlLmg+ CisgCisgI2luY2x1ZGUgImd2aWV3LmgiCisgI2luY2x1ZGUgImd2aWV3djRsMmNvcmUuaCIKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUgYi9zcmNwa2dzL2d1dmN2aWV3L3Rl bXBsYXRlCmluZGV4IDM0NWNmNjAwNmYyNC4uODZhN2ZkNjE5NjEyIDEwMDY0NAotLS0gYS9zcmNw a2dzL2d1dmN2aWV3L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUKQEAg LTEsOCArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdndXZjdmlldycKIHBrZ25hbWU9Z3V2 Y3ZpZXcKLXZlcnNpb249Mi4wLjcKK3ZlcnNpb249Mi4wLjgKIHJldmlzaW9uPTEKLWNyZWF0ZV93 cmtzcmM9eWVzCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1k aXNhYmxlLXN0YXRpYyAtLWRpc2FibGUtZGViaWFuLW1lbnUiCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWcgaW50bHRvb2wgYXV0b2NvbmYgYXV0b21ha2UgbGlidG9vbCBnbGliLWRldmVsIgpA QCAtMTQsNyArMTMsNyBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5v cmc+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwOi8vZ3V2Y3Zp ZXcuc291cmNlZm9yZ2UubmV0LyIKIGRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JHRV9TSVRFfS8ke3Br Z25hbWV9LyR7cGtnbmFtZX0tc3JjLSR7dmVyc2lvbn0udGFyLmJ6MiIKLWNoZWNrc3VtPWY0N2Q1 MWZiZDA2ZTQ0ZWVhYTFhODJmNGExNTNjOTI3NTI3YzkwZDk0NTE0MTk3YTcwYjI5NTYwMjhjYzhh ZDQKK2NoZWNrc3VtPWEyMWY0ZTQ0ODI4NjY2NmNmMjdiYWZlZjUyOTBjYzk1M2EwYTE3OTZiNzUy ZTViYmU1MjEyNjZkYzEyMzBjODEKIAogcG9zdF9wYXRjaCgpIHsKIAlzZWQgJzMxYSNpbmNsdWRl IDxsb2NhbGUuaD4nIC1pICBndXZjdmlldy9ndXZjdmlldy5jCgpGcm9tIDI4YWNlYWM1YWM4YmQz OWRiNDI1ZGIxNDg0OTc0ZjM1N2ZkOGUyYjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0NC8xNDBdIGhhbmRicmFrZTogdXBkYXRlIHRvIDEu Ni4xCgotLS0KIC4uLi9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoICAg fCAxMSArKysrKystLS0tLQogLi4uL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRl LnBhdGNoICB8IDE1ICsrKysrKysrKysrKysrKwogc3JjcGtncy9oYW5kYnJha2UvdGVtcGxhdGUg ICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrKysrKysrLS0tLS0tLQogMyBmaWxlcyBjaGFu Z2VkLCAzMiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmst ZmxhZy5wYXRjaCBiL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1s aW5rLWZsYWcucGF0Y2gKaW5kZXggMjZkYjAzODY3YTBjLi5kNmJiMmVkYTYyN2EgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcu cGF0Y2gKKysrIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxp bmstZmxhZy5wYXRjaApAQCAtMSwxNCArMSwxNSBAQAogLS0tIGEvZ3RrL2NvbmZpZ3VyZS5hYwog KysrIGIvZ3RrL2NvbmZpZ3VyZS5hYwogQEAgLTIwMyw3ICsyMDMsNyBAQAotIAorCiAgQU1fQ09O RElUSU9OQUwoW01JTkdXXSwgW3Rlc3QgIngkbWluZ3dfZmxhZyIgPSAieHllcyJdKQotIAotLUhC X0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29k ZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2 ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRo ZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250 Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJv anBlZyAtbGx6bWEgLWx6aW1nIgotK0hCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZm b3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUg LWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlz ZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxi ejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3Nv biAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sZGwiCisKKy1IQl9M SUJTPSIkSEJfTElCUyAtbGhhbmRicmFrZSAtbGF2Zm9ybWF0IC1sYXZmaWx0ZXIgLWxhdmNvZGVj IC1sYXZ1dGlsIC1sZGF2MWQgLWxzd3Jlc2FtcGxlIC1scG9zdHByb2MgLWxkdmRuYXYgLWxkdmRy ZWFkIC1sbXAzbGFtZSAtbHZvcmJpcyAtbHZvcmJpc2VuYyAtbG9nZyAtbHN3c2NhbGUgLWx0aGVv cmFlbmMgLWx0aGVvcmFkZWMgLWx2cHggLWx6IC1sYnoyIC1sYmx1cmF5IC1sYXNzIC1sZm9udGNv bmZpZyAtbGZyZWV0eXBlIC1seG1sMiAtbGphbnNzb24gLWxvcHVzIC1sc3BlZXggLWx0dXJib2pw ZWcgLWxsem1hIC1semltZyAtbFN2dEF2MUVuYyIKKytIQl9MSUJTPSIkSEJfTElCUyAtbGhhbmRi cmFrZSAtbGF2Zm9ybWF0IC1sYXZmaWx0ZXIgLWxhdmNvZGVjIC1sYXZ1dGlsIC1sZGF2MWQgLWxz d3Jlc2FtcGxlIC1scG9zdHByb2MgLWxkdmRuYXYgLWxkdmRyZWFkIC1sbXAzbGFtZSAtbHZvcmJp cyAtbHZvcmJpc2VuYyAtbG9nZyAtbHN3c2NhbGUgLWx0aGVvcmFlbmMgLWx0aGVvcmFkZWMgLWx2 cHggLWx6IC1sYnoyIC1sYmx1cmF5IC1sYXNzIC1sZm9udGNvbmZpZyAtbGZyZWV0eXBlIC1seG1s MiAtbGphbnNzb24gLWxvcHVzIC1sc3BlZXggLWx0dXJib2pwZWcgLWxsem1hIC1semltZyAtbFN2 dEF2MUVuYyAtbGRsIgogIEhCX0NQUEZMQUdTPSIkSEJfQ1BQRkxBR1MgJEhCSU5DIgotIAorCiAg UEtHX0NIRUNLX01PRFVMRVMoW3gyNjRdLCBbeDI2NF0sIHN5c194MjY0PXllcywgc3lzX3gyNjQ9 bm8pCisKIC0tLSBhL3Rlc3QvbW9kdWxlLmRlZnMKICsrKyBiL3Rlc3QvbW9kdWxlLmRlZnMKIEBA IC02OSw2ICs2OSw5IEBACmRpZmYgLS1naXQgYS9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xp YmhiLXZwbC1pbmNsdWRlLnBhdGNoIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12 cGwtaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjI5OGY5ZjRhYjI4ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNo ZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2gKQEAgLTAsMCArMSwxNSBAQAorLS0tIGEvbGliaGIv bW9kdWxlLmRlZnMJMjAyMy0wMS0yMiAxMTozNjo0OS4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xp YmhiL21vZHVsZS5kZWZzCTIwMjMtMDQtMDMgMjI6Mzc6NTIuMzk1NDY3MDEwIC0wNDAwCitAQCAt NDYsMTEgKzQ2LDcgQEAKKyBMSUJIQi5HQ0MuSSArPSAkKExJQkhCLmJ1aWxkLykgJChDT05UUklC LmJ1aWxkLylpbmNsdWRlCisgCisgaWZlcSAoMSwkKEZFQVRVUkUucXN2KSkKKy0gICAgaWZlcSAo JChIT1NULnN5c3RlbSksZnJlZWJzZCkpCistICAgICAgICBMSUJIQi5HQ0MuSSArPSAkKExPQ0FM QkFTRSkvaW5jbHVkZS92cGwKKy0gICAgZWxzZQorLSAgICAgICAgTElCSEIuR0NDLkkgKz0gJChD T05UUklCLmJ1aWxkLylpbmNsdWRlL3ZwbAorLSAgICBlbmRpZgorKyAgICBMSUJIQi5HQ0MuSSAr PSAvdXNyL2luY2x1ZGUvdnBsCisgZW5kaWYKKyAKKyBpZm5lcSAoLCQoZmlsdGVyICQoSE9TVC5z eXN0ZW0pLGZyZWVic2QgbmV0YnNkIG9wZW5ic2QpKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9oYW5k YnJha2UvdGVtcGxhdGUgYi9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZQppbmRleCBjYTVlNDU3 MWU0OWMuLjNjMmFiODY1OTYxNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9oYW5kYnJha2UvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9oYW5kYnJha2UvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTEgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ2hhbmRicmFrZScKIHBrZ25hbWU9aGFuZGJyYWtlCi12ZXJzaW9u PTEuNS4xCit2ZXJzaW9uPTEuNi4xCiByZXZpc2lvbj0xCit3cmtzcmM9SGFuZEJyYWtlLSR7dmVy c2lvbn0KIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWZvcmNl IC0tZGlzYWJsZS1ndGstdXBkYXRlLWNoZWNrcyAtLWRpc2FibGUtZGYtZmV0Y2ggLS1oYXJkZW4K LSAkKHZvcHRfZW5hYmxlIGZka19hYWMgZmRrLWFhYykgJCh2b3B0X2VuYWJsZSBudmVuYykiCisg JCh2b3B0X2VuYWJsZSBmZGtfYWFjIGZkay1hYWMpICQodm9wdF9lbmFibGUgbnZlbmMpICQodm9w dF9lbmFibGUgcXN2KSIKIG1ha2VfYnVpbGRfYXJncz0iLUMgJHtYQlBTX1RSSVBMRVR9IgogbWFr ZV9pbnN0YWxsX2FyZ3M9Ii1DICR7WEJQU19UUklQTEVUfSIKIGhvc3RtYWtlZGVwZW5kcz0iYXV0 b21ha2UgY21ha2UgZ2V0dGV4dC1kZXZlbCBnbGliLWRldmVsIGludGx0b29sIGxpYnRvb2wgbTQg bWVzb24gbmFzbSBwa2ctY29uZmlnIHB5dGhvbjMiCkBAIC0xMiw4ICsxMywxMSBAQCBtYWtlZGVw ZW5kcz0iYnppcDItZGV2ZWwgZmZtcGVnLWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIGd0 ayszLWRldmVsCiAgamFuc3Nvbi1kZXZlbCBsYW1lLWRldmVsIGxpYmFzcy1kZXZlbCBsaWJibHVy YXktZGV2ZWwgbGliZGF2MWQtZGV2ZWwKICBsaWJkdmRuYXYtZGV2ZWwgbGliZHZkcmVhZC1kZXZl bCBsaWJndWRldi1kZXZlbCBsaWJudW1hLWRldmVsCiAgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJ0 aGVvcmEtZGV2ZWwgbGlidm9yYmlzLWRldmVsIGxpYnZweC1kZXZlbCBsaWJ4bWwyLWRldmVsCi0g b3B1cy1kZXZlbCBzcGVleC1kZXZlbCB4MjY0LWRldmVsIHgyNjUtZGV2ZWwgemltZy1kZXZlbAor IG9wdXMtZGV2ZWwgc3BlZXgtZGV2ZWwgeDI2NC1kZXZlbCB4MjY1LWRldmVsIHppbWctZGV2ZWwg bGlic3Z0LWF2MS1kZXZlbAogICQodm9wdF9pZiBmZGtfYWFjIGZkay1hYWMtZGV2ZWwpCisgJCh2 b3B0X2lmIHFzdiBsaWJ2YS1kZXZlbCkKKyAkKHZvcHRfaWYgcXN2IGxpYmRybS1kZXZlbCkKKyAk KHZvcHRfaWYgcXN2IG9uZXZwbC1kZXZlbCkKICAkKHZvcHRfaWYgbnZlbmMgbnYtY29kZWMtaGVh ZGVycykiCiBkZXBlbmRzPSJkZXNrdG9wLWZpbGUtdXRpbHMgZ3N0LXBsdWdpbnMtZ29vZDEgaGlj b2xvci1pY29uLXRoZW1lIgogc2hvcnRfZGVzYz0iTXVsdGl0aHJlYWRlZCB2aWRlbyB0cmFuc2Nv ZGVyIgpAQCAtMjEsMTUgKzI1LDE1IEBAIG1haW50YWluZXI9IkVubm8gQm9sYW5kIDxnb3R0b3hA dm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9ubHkiCiBob21lcGFnZT0iaHR0cHM6 Ly9oYW5kYnJha2UuZnIvIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vSGFuZEJyYWtl L0hhbmRCcmFrZS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNpb259L0hhbmRCcmFrZS0ke3ZlcnNp b259LXNvdXJjZS50YXIuYnoyIgotY2hlY2tzdW09Mzk5OWZlMDZkNTMwOWM4MTk3OTlhNzNhOTY4 YThlYzM4NDBlNzg0MGMyYjY0YWY4ZjVjZGI3ZmQ4Yzk0MzBmMAorY2hlY2tzdW09OTRjY2ZlMDNk YjkxN2E5MTY1MDAwMGM1MTBmN2ZkNTNmODQ0ZGExOWYxOWFkNGI0YmUxYjhmNmJjMzFhOGQ0Ywog bm9jcm9zcz15ZXMKIAotYnVpbGRfb3B0aW9ucz0iZmRrX2FhYyBudmVuYyIKK2J1aWxkX29wdGlv bnM9ImZka19hYWMgbnZlbmMgcXN2IgogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4K IAl4ODZfNjQqfGk2ODYqKQogCQlDRkxBR1M9Ii1tc3NlIgotCQlidWlsZF9vcHRpb25zX2RlZmF1 bHQ9Im52ZW5jIgorCQlidWlsZF9vcHRpb25zX2RlZmF1bHQ9Im52ZW5jIHFzdiIKIAkJOzsKIGVz YWMKIApAQCAtMzcsNyArNDEsNyBAQCBwcmVfY29uZmlndXJlKCkgewogCSMgdXNlIHN5c3RlbSBs aWJyYXJpZXMsIGRvbid0IGRvd25sb2FkIHRoZW0KIAlybSAtcmYgY29udHJpYi8KIAlmb3IgbW9k dWxlIGluIGZkay1hYWMgZmZtcGVnIGxpYmJsdXJheSBsaWJkYXYxZCBsaWJkdmRuYXYgbGliZHZk cmVhZCBudmVuYyBcCi0JCXgyNjUgemltZzsgZG8KKwkJeDI2NSB6aW1nIHN2dC1hdjEgbGlidnBs OyBkbwogCSAgICB2c2VkIC1pICIvTU9EVUxFUyArPSBjb250cmliXC8ke21vZHVsZX0vZCIgbWFr ZS9pbmNsdWRlL21haW4uZGVmcwogCWRvbmUKIH0KCkZyb20gZGU5MjNiZGZiZGU1YjFhNGMwMDBj ZDk0OGQ1YjJhODc3MmM4NDQ5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDQ1LzE0MF0gaGVkZ2V3YXJzOiByZXZidW1wIGZvciBmZm1wZWc0 LTQuNC4zCgotLS0KIHNyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlIGIvc3JjcGtncy9oZWRnZXdhcnMvdGVtcGxhdGUKaW5k ZXggNDE5ZjI5Yjk4YjQ0Li45MjZmZTRmZTNlNjggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaGVkZ2V3 YXJzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCkBAIC0xLDEzICsx LDEzIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdoZWRnZXdhcnMnCiBwa2duYW1lPWhlZGdld2Fy cwogdmVyc2lvbj0xLjAuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21h a2UKIGNvbmZpZ3VyZV9hcmdzPSItRE5PU0VSVkVSPTEgLUREQVRBX0lOU1RBTExfRElSPS91c3Iv c2hhcmUvJHtwa2duYW1lfQogIC1EUEhZU0ZTX1NZU1RFTT0xIC1ETUlOSU1BTF9GTEFHUz0xIgog bWFrZV9jbWQ9bWFrZQogaG9zdG1ha2VkZXBlbmRzPSJsdWE1MSBwa2ctY29uZmlnIHF0NS1xbWFr ZSBxdDUtaG9zdC10b29scyIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbHVhNTEtZGV2ZWwg cGh5c2ZzLWRldmVsIHF0NS10b29scy1kZXZlbCBTREwyX2ltYWdlLWRldmVsCittYWtlZGVwZW5k cz0iZmZtcGVnNC1kZXZlbCBsdWE1MS1kZXZlbCBwaHlzZnMtZGV2ZWwgcXQ1LXRvb2xzLWRldmVs IFNETDJfaW1hZ2UtZGV2ZWwKICBTREwyX21peGVyLWRldmVsIFNETDJfbmV0LWRldmVsIFNETDJf dHRmLWRldmVsIgogZGVwZW5kcz0ibGliZnJlZWdsdXQiCiBzaG9ydF9kZXNjPSJGdW5ueSB0dXJu LWJhc2VkIGFydGlsbGVyeSBnYW1lLCBmZWF0dXJpbmcgZmlnaHRpbmcgSGVkZ2Vob2dzISIKCkZy b20gNTYzYTNkNTExMjZkMGUwZWMzZTY1Y2ExNDcxZjJkYzQwYTQwMmVmNiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ2LzE0MF0gaWRqYzog cmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2lkamMvdGVtcGxhdGUgfCA0 ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9pZGpjL3RlbXBsYXRlIGIvc3JjcGtncy9pZGpjL3RlbXBsYXRl CmluZGV4IGRmNjAzMThiM2RiOS4uMzZhNzViYWY1OTdjIDEwMDY0NAotLS0gYS9zcmNwa2dzL2lk amMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pZGpjL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpZGpjJwogcGtnbmFtZT1pZGpjCiB2ZXJzaW9uPTAuOS4x Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0 bWFrZWRlcGVuZHM9InBrZy1jb25maWcgZ2l0IHB5dGhvbjMgYXV0b21ha2UgZ2V0dGV4dC1kZXZl bCBsaWJ0b29sIgogbWFrZWRlcGVuZHM9ImxpYnZvcmJpcy1kZXZlbCBsaWJvZ2ctZGV2ZWwgamFj ay1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsCi0gbGliZmxhYy1kZXZlbCBsaWJzbmRmaWxlLWRl dmVsIG1wZzEyMy1kZXZlbCBmZm1wZWctZGV2ZWwgc3BlZXgtZGV2ZWwKKyBsaWJmbGFjLWRldmVs IGxpYnNuZGZpbGUtZGV2ZWwgbXBnMTIzLWRldmVsIGZmbXBlZzQtZGV2ZWwgc3BlZXgtZGV2ZWwK ICBnbGliLWRldmVsIHBpeG1hbi1kZXZlbCBsYW1lLWRldmVsIHB5dGhvbjMtZ29iamVjdC1kZXZl bCBsaWJzaG91dC1pZGpjLWRldmVsCiAgb3B1cy1kZXZlbCB0d29sYW1lLWRldmVsIHB5dGhvbjMt bXV0YWdlbiBweXRob24zLWRldmVsIgogZGVwZW5kcz0icHl0aG9uMy1nb2JqZWN0IHB5dGhvbjMt bXV0YWdlbiBkZXNrdG9wLWZpbGUtdXRpbHMgc2hhcmVkLW1pbWUtaW5mbyBweXRob24zLWRidXMg amFjayIKCkZyb20gYWU0N2E0NjIyNTY2NTM0OTJhMDg0N2I0OWViNDdjZDVlMWYzYTY3OCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ3LzE0 MF0ga2ZpbGVtZXRhZGF0YTU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9r ZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUv dGVtcGxhdGUgYi9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRlCmluZGV4IDg5ODAxMjFm YmM2OS4uZjY2MmEyMDQzZjkzIDEwMDY0NAotLS0gYS9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrZmlsZW1ldGFkYXRhNScKIHBrZ25hbWU9a2ZpbGVt ZXRhZGF0YTUKIHZlcnNpb249NS4xMDUuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0ia2NvcmVhZGRvbnMgZXh0cmEtY21ha2UtbW9k dWxlcyBwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZQogIGdldHRleHQga2NvcmVh ZGRvbnMgcHl0aG9uMyIKCkZyb20gY2RiYjlmODVlMjM1ZmNlOTcyNWZlNWM5ZGMwN2EyZTg2YTRi MTMzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDQ4LzE0MF0ga2lkMzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tp ZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMTcgKysrKysrKysrKysrKysrKysKIHNyY3BrZ3Mv a2lkMy90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9r aWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2lkMy9wYXRj aGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTM1ZmM1MGUwN2M5Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCww ICsxLDE3IEBACisjIGh0dHBzOi8vYXVyLmFyY2hsaW51eC5vcmcvY2dpdC9hdXIuZ2l0L2RpZmYv ZmZtcGVnNS5wYXRjaD9oPWtpZDMtY2xpJmlkPTEyNDEwYTc0OTA2NjEyZTdlZmMwZWM4ZmJjZTcz OWI0YTBmZWY3ZTcKK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9mZm1w ZWdmaW5nZXJwcmludGRlY29kZXIuY3BwIGIvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZt cGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAoraW5kZXggZTE1NmQ0MjQuLmUxMmI5YWJkIDEwMDY0 NAorLS0tIGEvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNv ZGVyLmNwcAorKysrIGIvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJp bnRkZWNvZGVyLmNwcAorQEAgLTIzMiw3ICsyMzIsMTEgQEAgcHJpdmF0ZToKKyAgIGZyaWVuZCBj bGFzcyBGb3JtYXQ7CisgICBmcmllbmQgY2xhc3MgQ29udmVydGVyOworICAgQVZDb2RlY0NvbnRl eHQqIG1fcHRyOworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fSU5UIDwgQVZfVkVSU0lPTl9JTlQo NTksIDAsIDApCisgICBBVkNvZGVjKiBtX2ltcGw7CisrI2Vsc2UKKysgIGNvbnN0IEFWQ29kZWMq IG1faW1wbDsKKysjZW5kaWYKKyAgIEFWRnJhbWUqIG1fZnJhbWU7CisgICBib29sIG1fb3BlbmVk OworIH07CmRpZmYgLS1naXQgYS9zcmNwa2dzL2tpZDMvdGVtcGxhdGUgYi9zcmNwa2dzL2tpZDMv dGVtcGxhdGUKaW5kZXggNDU2MjA2ZDkwZTE2Li5mMzJmOWRlY2IwZTcgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3Mva2lkMy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tpZDMvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdraWQzJwogcGtnbmFtZT1raWQzCiB2ZXJzaW9u PTMuOS4xCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmln dXJlX2FyZ3M9Ii1EV0lUSF9BUFBTPSdDTEk7JCh2b3B0X2lmIEtERSBLREUgUXQpJwogIC1EV0lU SF9ET0NCT09LRElSPS91c3Ivc2hhcmUveHNsL2RvY2Jvb2sgLURXSVRIX0ZMQUM9JCh2b3B0X2lm IGZsYWMgT04gT0ZGKQoKRnJvbSBmY2M4OWM3Y2RiNDA0M2I0NjdhYjQxMDUwYWY4ZGZkMGU2OGRh Y2YxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNDkvMTQwXSBrb2RpOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mv a29kaS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tvZGkvdGVtcGxhdGUgYi9zcmNw a2dzL2tvZGkvdGVtcGxhdGUKaW5kZXggODA1Nzk2NGQ3OGEzLi42Y2MxODc0YmU3YmEgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3Mva29kaS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tvZGkvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrb2RpJwogcGtnbmFtZT1rb2Rp CiB2ZXJzaW9uPTE5LjQKLXJldmlzaW9uPTYKK3JldmlzaW9uPTcKIF9jb2RlbmFtZT0iTWF0cml4 IgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfRkZNUEVHPS91c3Ig LURFTkFCTEVfTERHT0xEPU9GRgpAQCAtNTQsNyArNTQsNyBAQCBtYWtlZGVwZW5kcz0iCiAgbGli bWFkLWRldmVsIGZvbnRjb25maWctZGV2ZWwgbGliWGluZXJhbWEtZGV2ZWwgbGlic2FtcGxlcmF0 ZS1kZXZlbCBsaWJtbXMtZGV2ZWwKICBlbmNhLWRldmVsIGJvb3N0LWRldmVsIGxpYmN1cmwtZGV2 ZWwgbGlidmEtZGV2ZWwgbGlidmRwYXUtZGV2ZWwgbGliYXNzLWRldmVsCiAgbGliYmx1ZXRvb3Ro LWRldmVsIHlhamwtZGV2ZWwgbGlicGxpc3QtZGV2ZWwgbGlicnRtcC1kZXZlbCB0aW55eG1sLWRl dmVsCi0gdGFnbGliLWRldmVsIGxpYmNhcC1kZXZlbCBsYW1lLWRldmVsIGxpYmJsdXJheS1kZXZl bCBsaWJuZnMtZGV2ZWwgZmZtcGVnLWRldmVsCisgdGFnbGliLWRldmVsIGxpYmNhcC1kZXZlbCBs YW1lLWRldmVsIGxpYmJsdXJheS1kZXZlbCBsaWJuZnMtZGV2ZWwgZmZtcGVnNC1kZXZlbAogIGdp ZmxpYi1kZXZlbCBsaWJ4c2x0LWRldmVsIGdudXRscy1kZXZlbCBsaWJzc2gtZGV2ZWwgbGlibWlj cm9odHRwZC1kZXZlbAogIGxpYmNlYy1kZXZlbCBkY2FkZWMtZGV2ZWwgZmxhdGJ1ZmZlcnMtZGV2 ZWwgZm10LWRldmVsIGxjbXMyLWRldmVsCiAgbGliZnN0cmNtcC1kZXZlbCByYXBpZGpzb24gbGli Y2Rpby1wYXJhbm9pYSBzcGRsb2cgbGlid2F5bGFuZHBwLWRldmVsCgpGcm9tIDM0NWU5NTExY2Uy YzU5YTM2MDljM2NmZTc2NzcyMjY4NzQ1M2JkYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1MC8xNDBdIGtwaXBld2lyZTogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2twaXBld2lyZS90ZW1wbGF0ZSB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlIGIvc3JjcGtncy9rcGlwZXdpcmUvdGVtcGxhdGUK aW5kZXggNDY3YWI4MjNhNWUxLi41MTgyN2YyNGRiOWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva3Bp cGV3aXJlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna3BpcGV3aXJlJwogcGtnbmFtZT1rcGlwZXdp cmUKIHZlcnNpb249NS4yNy40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1j bWFrZQogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIHBsYXNtYS13YXlsYW5k LXByb3RvY29scyBnZXR0ZXh0CiAgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHBrZy1jb25maWcg d2F5bGFuZC1kZXZlbCBrY29yZWFkZG9ucwoKRnJvbSAyNDA1M2VhYTlmYzA5YmM0NTRlZTllYjAx NTExNjIxYzVjNDhhNDRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwNTEvMTQwXSBsaWJleHRyYWN0b3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQt NC40LjMKCi0tLQogc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRl CmluZGV4IGRkZDQ3OTBmOTNlOC4uMWZiOWNhNTZhOTZhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xp YmV4dHJhY3Rvci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQpA QCAtNyw3ICs3LDcgQEAgY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1zdGF0aWMiCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZl bCBleGl2Mi1kZXZlbCB0aWZmLWRldmVsIGxpYnBuZy1kZXZlbAogIGxpYmpwZWctdHVyYm8tZGV2 ZWwgbGlidm9yYmlzLWRldmVsIGxpYmZsYWMtZGV2ZWwgZ2lmbGliLWRldmVsIGxpYm1wZWcyLWRl dmVsCi0gZmZtcGVnLWRldmVsIGd0ayszLWRldmVsIGxpYmx0ZGwtZGV2ZWwgbGliYXJjaGl2ZS1k ZXZlbCBmaWxlLWRldmVsIGxpYmdzZi1kZXZlbCIKKyBmZm1wZWc0LWRldmVsIGd0ayszLWRldmVs IGxpYmx0ZGwtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbCBmaWxlLWRldmVsIGxpYmdzZi1kZXZlbCIK IHNob3J0X2Rlc2M9IkxpYnJhcnkgdXNlZCB0byBleHRyYWN0IG1ldGEgZGF0YSBmcm9tIGZpbGVz IgogbWFpbnRhaW5lcj0iTWFydGluIFJpZXNlIDxncmF1ZWhhYXJlQGdteC5kZT4iCiBsaWNlbnNl PSJHUEwtMy4wLW9yLWxhdGVyIgoKRnJvbSA4NmNiMzVhOWY1YzY4YjM1OThkNWZkZjgwNmU1NDFk MGQ4MThlYTc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNTIvMTQwXSBsaWJvcGVuYWw6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYm9wZW5hbC90 ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRlCmluZGV4IDc3MjE4ZjllNTM5ZC4u M2Y0OWVkNzVhMWZkIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2xpYm9wZW5hbCcKIHBrZ25hbWU9bGlib3BlbmFsCiB2ZXJzaW9uPTEuMjIuMgot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdz PSItREFMU09GVF9FWEFNUExFUz1PRkYiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpG cm9tIDAzMjA3MjhjOTc3MGE5NDcxODgyNGM3MDY0ZTgwMTRkYzU4MWIyZGQgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1My8xNDBdIGxpYm9w ZW5zaG90OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbGlib3BlbnNob3Qv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlIGIvc3JjcGtn cy9saWJvcGVuc2hvdC90ZW1wbGF0ZQppbmRleCBkYjgzMWY2OWI0NzQuLjgxYWEwZDcxMzZkOSAx MDA2NDQKLS0tIGEvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xp Ym9wZW5zaG90L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn bGlib3BlbnNob3QnCiBwa2duYW1lPWxpYm9wZW5zaG90CiB2ZXJzaW9uPTAuMy4wCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogIyBCdWlsZHMgZmFpbCB3aXRoIFJ1 YnktMi40LjEKIGNvbmZpZ3VyZV9hcmdzPSItREVOQUJMRV9SVUJZPU9GRiAtRFVTRV9TWVNURU1f SlNPTkNQUD1PTiIKCkZyb20gYTg4NTBjNjZjNTZiMjU0ZjMzOWMwMTczMGNmNTM2YTM2ZTIwYzg1 MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDU0LzE0MF0gbG91ZGdhaW46IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9s b3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggfCAxMSArKysrKysrKysrKwogc3JjcGtncy9s b3VkZ2Fpbi90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAx MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xv dWRnYWluL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9m Zm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTZk NDUxMGVlOThmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2Zm bXBlZzUucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIGEvc3JjL3NjYW4uYwkyMDE5LTA5LTA2 IDExOjMxOjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIGIvc3JjL3NjYW4uYwkyMDIzLTAzLTIzIDEx OjE1OjQwLjg2Nzk2ODUyMSAtMDQwMAorQEAgLTY5LDggKzY5LDYgQEAKKyAJICogSXQgaXMgbm93 IHVzZWxlc3MKKyAJICogaHR0cHM6Ly9naXRodWIuY29tL0ZGbXBlZy9GRm1wZWcvYmxvYi83MGQy NTI2OGMyMWNiZWU1ZjA4MzA0ZGE5NWJlMWY2NDdjNjMwYzE1L2RvYy9BUEljaGFuZ2VzI0w4Ngor IAkgKi8KKy0gIGlmIChhdmZvcm1hdF92ZXJzaW9uKCkgPCBBVl9WRVJTSU9OX0lOVCg1OCw5LDEw MCkpCistICAgIGF2X3JlZ2lzdGVyX2FsbCgpOworIAorIAlhdl9sb2dfc2V0X2NhbGxiYWNrKHNj YW5fYXZfbG9nKTsKKyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUgYi9z cmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlCmluZGV4IGRhNGYyZDU2ZTk0Yy4uNGQ2YmYyOWVmYjRm IDEwMDY0NAotLS0gYS9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbG91 ZGdhaW4vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsb3Vk Z2FpbicKIHBrZ25hbWU9bG91ZGdhaW4KIHZlcnNpb249MC42LjgKLXJldmlzaW9uPTIKK3Jldmlz aW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBt YWtlZGVwZW5kcz0ibGliZWJ1cjEyOC1kZXZlbCB0YWdsaWItZGV2ZWwgZmZtcGVnLWRldmVsIgoK RnJvbSA3OGMzM2ViY2I0YjljMzBkNzAwNDYxNzE2Y2ZmZDBhNTllNDgwYjVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTUvMTQwXSBtZWRp YXN0cmVhbWVyOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbWVkaWFz dHJlYW1lci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVt cGxhdGUgYi9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKaW5kZXggZDBlOTdlODU4ZTI5 Li4xYmRlMDMxNDQzYTUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21lZGlhc3RyZWFtZXInCiBwa2duYW1lPW1lZGlhc3RyZWFt ZXIKIHZlcnNpb249NS4yLjYKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNt YWtlCiBjb25maWd1cmVfYXJncz0iLURFTkFCTEVfU1RSSUNUPTAgLURFTkFCTEVfVU5JVF9URVNU Uz0wIgogaG9zdG1ha2VkZXBlbmRzPSJweXRob24zIgotbWFrZWRlcGVuZHM9ImJ6cnRwLWRldmVs IGZmbXBlZy1kZXZlbCBnbGV3LWRldmVsIGxpYlh2LWRldmVsIGxpYnNydHAtZGV2ZWwKK21ha2Vk ZXBlbmRzPSJienJ0cC1kZXZlbCBmZm1wZWc0LWRldmVsIGdsZXctZGV2ZWwgbGliWHYtZGV2ZWwg bGlic3J0cC1kZXZlbAogIGxpYnVwbnAtZGV2ZWwgbGlidnB4LWRldmVsIG1iZWR0bHMtZGV2ZWwg b3B1cy1kZXZlbCBvcnRwLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKICBsaWJ0aGVvcmEtZGV2ZWwg c3BlZXgtZGV2ZWwgdjRsLXV0aWxzLWRldmVsIGJjZzcyOS1kZXZlbCBiY21hdHJvc2thMi1kZXZl bCBsaWJnc20tZGV2ZWwiCiAjIHp4aW5nLWNwcC1kZXZlbCAoMS4yLjAgcHJvYmFibHkgbm90IGNv bXBhdGlibGUsIGNoZWNrIGFnYWluIGFmdGVyIHVwZGFpbmcgeHppbmcpCgpGcm9tIDc0YTQwODA4 NTQ2YTQ2MjUyNTk0ODk2YTNhOTM5MTk5ZWFkMjc2NzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1Ni8xNDBdIG1nYmE6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9tZ2JhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9tZ2JhL3RlbXBsYXRlIGIvc3JjcGtncy9tZ2JhL3RlbXBsYXRlCmluZGV4IGFlMDUwNDMxMWVl ZS4uZDMxMjk1YTBjZDNkIDEwMDY0NAotLS0gYS9zcmNwa2dzL21nYmEvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9tZ2JhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnbWdiYScKIHBrZ25hbWU9bWdiYQogdmVyc2lvbj0wLjEwLjIKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1 LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIGRlc2t0b3AtZmlsZS11dGlscyIKIG1ha2VkZXBlbmRzPSJT REwyLWRldmVsIGZmbXBlZy1kZXZlbCBsaWJlZGl0LWRldmVsIGxpYmVwb3h5LWRldmVsIGxpYm1h Z2ljay1kZXZlbAoKRnJvbSBiOGUxZjU1NjdmYjM3ZGNlMDUyMzc3Nzg1MDY5YTVlMzdhYzg4YjBh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NTcvMTQwXSBtaW5pZGxuYTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21p bmlkbG5hL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUKaW5kZXggZTgwODFiMWNiYzY3Li45ZWU5NzE0ODYxZmQg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9taW5p ZGxuYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21pbmlk bG5hJwogcGtnbmFtZT1taW5pZGxuYQogdmVyc2lvbj0xLjMuMgotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9IgogIC0tc2Jp bmRpcj0vdXNyL2JpbgoKRnJvbSA0YTFjNmIyOGU5NmI5YjRiM2E3MzQzNjg4ZmZiNThmNmE2MTEw NTBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNTgvMTQwXSBtaXh4eDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21p eHh4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9taXh4eC90ZW1wbGF0ZSBiL3NyY3BrZ3Mv bWl4eHgvdGVtcGxhdGUKaW5kZXggNjE5ZGRjYTBkMzMyLi40YjllYTAwZDNmYjMgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9taXh4eC90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21peHh4JwogcGtnbmFtZT1taXh4 eAogdmVyc2lvbj0yLjMuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21h a2UKIGNvbmZpZ3VyZV9hcmdzPSItRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSIKIGhvc3RtYWtl ZGVwZW5kcz0iZXh0cmEtY21ha2UtbW9kdWxlcyBwa2ctY29uZmlnIHByb3RvYnVmIHF0NS1ob3N0 LXRvb2xzIHF0NS1kZXZlbCIKCkZyb20gN2YyM2MwZTYyYmNhZGJhN2UyNGNlMmUxYTMxOThlZTRi ZmVhNzhmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDU5LzE0MF0gbWx0OiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3Br Z3MvbWx0L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWx0L3RlbXBsYXRlIGIvc3Jj cGtncy9tbHQvdGVtcGxhdGUKaW5kZXggODkzM2ViNGU3YmI5Li43MzM1M2ZlZGFmYjUgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvbWx0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWx0L3RlbXBsYXRlCkBA IC0xLDE0ICsxLDE0IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtbHQnCiBwa2duYW1lPW1sdAog dmVyc2lvbj02LjI2LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNvbmZp Z3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tcHJlZml4PS91c3IgLS1saWJkaXI9L3Vzci9saWIkWEJQ U19UQVJHRVRfV09SRFNJWkUKICAtLWVuYWJsZS1ncGwgLS1lbmFibGUtZ3BsMyAtLWRpc2FibGUt c3dmZGVjIC0td2l0aG91dC1rZGUKICAtLXN3aWctbGFuZ3VhZ2VzPXB5dGhvbiIKIGhvc3RtYWtl ZGVwZW5kcz0iZG94eWdlbiBwa2ctY29uZmlnIGxhZHNwYS1zZGsgc3dpZyBweXRob24zIHdoaWNo IgogIyBYWFg6IG1vdml0IHZpZC5zdGFiCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZt cGVnLWRldmVsIGd0aystZGV2ZWwgamFjay1kZXZlbCBsYWRzcGEtc2RrCittYWtlZGVwZW5kcz0i YWxzYS1saWItZGV2ZWwgZmZtcGVnNC1kZXZlbCBndGsrLWRldmVsIGphY2stZGV2ZWwgbGFkc3Bh LXNkawogIGxpYmV4aWYtZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJ4bWwyLWRldmVsIHNv eC1kZXZlbCBTRExfaW1hZ2UtZGV2ZWwKICBmZnR3LWRldmVsIGZyZWkwci1wbHVnaW5zIHB5dGhv bjMtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbCBtb3ZpdC1kZXZlbAogIGxpYnZpZHN0YWItZGV2ZWwg bGliYXRvbWljLWRldmVsIgoKRnJvbSA3NDI2ZGFlNWQ3YWI0MzRlYTIyM2YwZTc5ZmU0YjdjNmE4 MzBjZWI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwNjAvMTQwXSBtb2M6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtn cy9tb2MvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tb2MvdGVtcGxhdGUgYi9zcmNw a2dzL21vYy90ZW1wbGF0ZQppbmRleCBjNDJiZTY1MGExZDIuLmQ0ZjBlZWZiYWQ1MiAxMDA2NDQK LS0tIGEvc3JjcGtncy9tb2MvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tb2MvdGVtcGxhdGUKQEAg LTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21vYycKIHBrZ25hbWU9bW9jCiB2 ZXJzaW9uPTIuNS4yCi1yZXZpc2lvbj02CityZXZpc2lvbj03CiBidWlsZF9zdHlsZT1nbnUtY29u ZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iZGItZGV2 ZWwgbmN1cnNlcy1kZXZlbCBsaWJjdXJsLWRldmVsIHBvcHQtZGV2ZWwgZmZtcGVnLWRldmVsCitt YWtlZGVwZW5kcz0iZGItZGV2ZWwgbmN1cnNlcy1kZXZlbCBsaWJjdXJsLWRldmVsIHBvcHQtZGV2 ZWwgZmZtcGVnNC1kZXZlbAogIGphY2stZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGlibHRkbC1kZXZl bCBsaWJmbGFjLWRldmVsIGxpYnZvcmJpcy1kZXZlbAogIGxpYm1hZC1kZXZlbCBsaWJtcGNkZWMt ZGV2ZWwgbGlibW9kcGx1Zy1kZXZlbCBsaWJpZDN0YWctZGV2ZWwgZmFhZDItZGV2ZWwKICB0YWds aWItZGV2ZWwgbGlic25kZmlsZS1kZXZlbCB3YXZwYWNrLWRldmVsIHNwZWV4LWRldmVsIGxpYnNh bXBsZXJhdGUtZGV2ZWwKCkZyb20gOGIzY2UzZmVmNTg5OGQ4NzU0NjNiMzE1MDljODc5NGQzNmZh ZTk3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDYxLzE0MF0gbW90aW9uOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv bW90aW9uL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUgYi9zcmNw a2dzL21vdGlvbi90ZW1wbGF0ZQppbmRleCAzY2YzYzMwMzVjNWIuLjdkY2ExMmQ4NTFlMyAxMDA2 NDQKLS0tIGEvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tb3Rpb24vdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtb3Rpb24nCiBwa2du YW1lPW1vdGlvbgogdmVyc2lvbj00LjUuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBwa2ctY29uZmln IGdldHRleHQtZGV2ZWwgdGFyIgogbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBsaWJtaWNyb2h0 dHBkLWRldmVsIHY0bC11dGlscy1kZXZlbCBnZXR0ZXh0LWRldmVsIgoKRnJvbSBmNDZjYmFmNGM2 ZjRkZWU2NjNmMDc1MzIxNTFjZjRmNzc4YjcyOGViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjIvMTQwXSBtcHY6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy9tcHYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21w di90ZW1wbGF0ZSBiL3NyY3BrZ3MvbXB2L3RlbXBsYXRlCmluZGV4IGUxNjNjNDk2YzZlYi4uZDRm ZWZiZjVlM2M3IDEwMDY0NAotLS0gYS9zcmNwa2dzL21wdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L21wdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21wdicK IHBrZ25hbWU9bXB2CiB2ZXJzaW9uPTAuMzUuMQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVp bGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRGNkZGE9ZW5hYmxlZCAtRGR2YmluPWVu YWJsZWQgLURkdmRuYXY9ZW5hYmxlZAogIC1EbGlibXB2PXRydWUgLURjcGx1Z2lucz1lbmFibGVk CgpGcm9tIGUzYjBhOTBiNDE1OGEzN2ZkYjQwMjBmNGFmZjM1MWFkNjc1ZTE5NzkgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2My8xNDBdIG11 c2lrY3ViZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL211c2lrY3ViZS90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlIGIvc3JjcGtncy9t dXNpa2N1YmUvdGVtcGxhdGUKaW5kZXggNGI3OTMwMDQxMTI2Li43Y2Q2NWNmNzZiNzcgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbXVzaWtjdWJl L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbXVzaWtjdWJl JwogcGtnbmFtZT1tdXNpa2N1YmUKIHZlcnNpb249MC45OS40Ci1yZXZpc2lvbj0xCityZXZpc2lv bj0yCiBidWlsZF9zdHlsZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQogY29uZmlndXJlX2FyZ3M9Ii1E Tk9fTkNVUlNFU1c9MSIKCkZyb20gZDRiNzk1ZjQyYjA1N2VkOTBhMmZmOTk3MTlhOGJiOGIwMGJm M2NkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDY0LzE0MF0gbm90Y3Vyc2VzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3Mvbm90Y3Vyc2VzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxh dGUgYi9zcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZQppbmRleCA2ZGQ4YTA5MTMxOWYuLjMxMTBj MzBjOWFmZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9ub3RjdXJzZXMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdub3RjdXJzZXMnCiBwa2duYW1lPW5vdGN1cnNlcwogdmVyc2lvbj0zLjAuOQotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFVT RV9TVEFUSUM9T04gJCh2b3B0X2Jvb2wgbWFuIFVTRV9QQU5ET0MpIgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnICQodm9wdF9pZiBtYW4gcGFuZG9jKSIKCkZyb20gY2JhNDU3YmY4YTEyYmI1 NWM1YzE0NWQ5YmNjNTBiYzY4NWVhZGFiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY1LzE0MF0gb2JzOiByZXZidW1wIGZvciBmZm1wZWct Ni4wCgotLS0KIHNyY3BrZ3Mvb2JzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vYnMvdGVt cGxhdGUgYi9zcmNwa2dzL29icy90ZW1wbGF0ZQppbmRleCA4OWZkMTEyOTdjM2YuLjNjZjQ5ZTQx NGJmMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9vYnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vYnMv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvYnMnCiBwa2du YW1lPW9icwogdmVyc2lvbj0yOS4xLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGFyY2hzPSJp Njg2KiB4ODZfNjQqIHBwYzY0bGUqIGFhcmNoNjQqIgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZp Z3VyZV9hcmdzPSItRE9CU19WRVJTSU9OX09WRVJSSURFPSR7dmVyc2lvbn0gLURFTkFCTEVfSkFD Sz1PTgoKRnJvbSBkYzA3ZWUxNzdiZjFmMTFhNzdlMzhkNmQ5YWYzMTllMmIzY2MzYTc5IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjYvMTQw XSBvbGl2ZTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL29saXZlL3Rl bXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUgYi9zcmNwa2dzL29s aXZlL3RlbXBsYXRlCmluZGV4IDEyYTQ2OTM2Yzk5MC4uNWMyOTE3YjljNTEyIDEwMDY0NAotLS0g YS9zcmNwa2dzL29saXZlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUKQEAg LTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29saXZlJwogcGtnbmFtZT1vbGl2 ZQogdmVyc2lvbj0wLjEuMgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9cW1h a2UKIGhvc3RtYWtlZGVwZW5kcz0icXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHBrZy1jb25maWci Ci1tYWtlZGVwZW5kcz0icXQ1LWRldmVsIHF0NS1tdWx0aW1lZGlhLWRldmVsIHF0NS1zdmctZGV2 ZWwgZmZtcGVnLWRldmVsIGZyZWkwci1wbHVnaW5zIgorbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBx dDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtc3ZnLWRldmVsIGZmbXBlZzQtZGV2ZWwgZnJlaTByLXBs dWdpbnMiCiBzaG9ydF9kZXNjPSJOb24tbGluZWFyIHZpZGVvIGVkaXRvciIKIG1haW50YWluZXI9 Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxh dGVyIgoKRnJvbSBiNDM2OTFhZGJkZDhmNzMyNmNhYTIyOGYyZTI0NmRkYzBlODBjNTUwIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjcvMTQw XSBvbXhwbGF5ZXI6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9vbXhw bGF5ZXIvdGVtcGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygr KSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlCmluZGV4IGU3MGJmNzg3M2Q0ZC4uYzgzNTEw M2Q4Nzg5IDEwMDY0NAotLS0gYS9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL29teHBsYXllci90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnb214cGxheWVyJwogcGtnbmFtZT1vbXhwbGF5ZXIKIHZlcnNpb249MjAxOTAxMDIKLXJl dmlzaW9uPTEKK3JldmlzaW9uPTIKIHNob3J0X2Rlc2M9IkNvbW1hbmRsaW5lIE9NWCBwbGF5ZXIg Zm9yIHRoZSBSYXNwYmVycnkgUGkiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRs aW51eC5vcmc+IgotbGljZW5zZT0iR1BMLTIiCitsaWNlbnNlPSJHUEwtMi1vci1sYXRlciIKIGhv bWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vcG9wY29ybm1peC9vbXhwbGF5ZXIiCiAKIF9jb21t aXQ9ImYwNjIzNWNjOTY5MGE2ZDU4MTg3NTE0NDUyZGY4Y2Y4ZmNkYWFjZWMiCkBAIC0xNSw3ICsx NSw3IEBAIGNoZWNrc3VtPWFmMmQ5NDUwZjg5NDc4NDJlYThjNDAxZmU5ZjcxZWVjNDQ0MDEzZWJi ZGVlMjlmMmFjODI4YzljNDkzYzEzMjkKIGFyY2hzPSJhcm12NmwqIGFybXY3bCoiCiBidWlsZF9z dHlsZT1nbnUtbWFrZWZpbGUKIGhvc3RtYWtlZGVwZW5kcz0iY3VybCBwa2ctY29uZmlnIgotbWFr ZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIHJwaS11c2VybGFuZC1kZXZlbCBwY3JlLWRldmVsIGJv b3N0LWRldmVsIGZyZWV0eXBlLWRldmVsIGZmbXBlZy1kZXZlbCBkYnVzLWRldmVsIgorbWFrZWRl cGVuZHM9ImFsc2EtbGliLWRldmVsIHJwaS11c2VybGFuZC1kZXZlbCBwY3JlLWRldmVsIGJvb3N0 LWRldmVsIGZyZWV0eXBlLWRldmVsIGZmbXBlZzQtZGV2ZWwgZGJ1cy1kZXZlbCIKIGRlcGVuZHM9 ImZyZWVmb250LXR0ZiIKIAogZG9fYnVpbGQoKSB7CgpGcm9tIGMxODE1MjNlNTEwYWQyMWM3Y2Ey OGIyNjQ3NDE1ODUzYWUwNWYxMjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0 MDAKU3ViamVjdDogW1BBVENIIDA2OC8xNDBdIG9wZW5pbWFnZWlvOiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgfCAyICsrCiBzcmNwa2dz L29wZW5pbWFnZWlvL3RlbXBsYXRlIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9u L3NobGlicwppbmRleCA0NjI2Y2ZkYTgxMGIuLmQwZDMyOGIwOWVmOSAxMDA2NDQKLS0tIGEvY29t bW9uL3NobGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC0yMjYyLDYgKzIyNjIsOCBAQCBsaWJ4 bXAuc28uNCBsaWJ4bXAtNC4zLjdfMQogbGliS0Y1VGhyZWFkV2VhdmVyLnNvLjUgdGhyZWFkd2Vh dmVyLTUuMjYuMF8xCiBsaWJPcGVuSW1hZ2VJT19VdGlsLnNvLjIuNCBvcGVuaW1hZ2Vpby0yLjQu OS4wXzEKIGxpYk9wZW5JbWFnZUlPLnNvLjIuNCBvcGVuaW1hZ2Vpby0yLjQuOS4wXzEKK2xpYk9w ZW5JbWFnZUlPX1V0aWwuc28uMi40IG9wZW5pbWFnZWlvLTIuNC44LjFfMQorbGliT3BlbkltYWdl SU8uc28uMi40IG9wZW5pbWFnZWlvLTIuNC44LjFfMQogbGliT3BlbkNvbG9ySU8uc28uMi4xIG9w ZW5jb2xvcmlvLTIuMS4yXzEKIGxpYnB5c3RyaW5nLnNvLjEgcHlzdHJpbmctMS4xLjNfMQogbGli eWFtbC1jcHAuc28uMC43IHlhbWwtY3BwLTAuNy4wXzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3Bl bmltYWdlaW8vdGVtcGxhdGUgYi9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRlCmluZGV4IGI2 NjFiYmY3YmE1Ny4uOWIzOGFjZTUwZjdlIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5pbWFnZWlv L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuaW1hZ2VpbycKIHBrZ25hbWU9b3BlbmltYWdl aW8KIHZlcnNpb249Mi40LjkuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9 Y21ha2UKIGJ1aWxkX2hlbHBlcj1xZW11CiBjb25maWd1cmVfYXJncz0iLURVU0VfUVQ9MCAtRFVT RV9QWVRIT049MCAtRE9JSU9fQlVJTERfVEVTVFM9MAoKRnJvbSAwZDkzY2YwMjZhN2I1NmEzYmQ2 Zjk0MmM2M2M3MWJjNGI0OGI0M2RkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwNjkvMTQwXSBvcGVubXc6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9vcGVubXcvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5t dy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCmluZGV4IDUyNTFhMDI4M2RjMS4u ZTM3NzFjN2FhZjFhIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5tdy90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL29wZW5tdy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ29wZW5tdycKIHBrZ25hbWU9b3Blbm13CiB2ZXJzaW9uPTAuNDcuMAotcmV2aXNpb249NAor cmV2aXNpb249NQogYnVpbGRfc3R5bGU9Y21ha2UKIF9yZWNhc3RfY29tbWl0PWU3NWFkZjg2Zjkx ZWIzMDgyMjIwMDg1ZTQyZGRhNjI2NzlmOWEzZWEKIF9idWxsZXRfdGFnPTMuMTcKCkZyb20gOTZh OTRlNDJhNzcxOWVjYTExMjE3NGM3OTQwMjMzMWQ3YTA3OTYxNSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDcwLzE0MF0gb3BlbnNob3Q6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUgYi9zcmNwa2dzL29wZW5zaG90L3RlbXBs YXRlCmluZGV4IDMyMjcxN2Q0MGFiYy4uYzA3NGUwMzM4NzczIDEwMDY0NAotLS0gYS9zcmNwa2dz L29wZW5zaG90L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuc2hvdCcKIHBrZ25hbWU9b3BlbnNo b3QKIHZlcnNpb249My4wLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXB5 dGhvbjMtbW9kdWxlCiBob3N0bWFrZWRlcGVuZHM9InB5dGhvbjMgcHl0aG9uMy1zZXR1cHRvb2xz IgogbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBweXRob24zLVB5UXQ1IgoKRnJvbSAxNjg1M2I5 NjlmZDQyODlkNTQ1ZGM4ZTg1MzlkZTU5NzBjNGI0MzFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzEvMTQwXSBvcGVudG9vbno6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbnRvb256L3RlbXBs YXRlCmluZGV4IGVlOWY3NjAzZjU1Zi4uM2U4MTgzNGNhMGVkIDEwMDY0NAotLS0gYS9zcmNwa2dz L29wZW50b29uei90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW50b29ueicKIHBrZ25hbWU9b3Bl bnRvb256CiB2ZXJzaW9uPTEuNi4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF93cmtz cmM9InRvb256L3NvdXJjZXMiCiBidWlsZF9zdHlsZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQoKRnJv bSBiZGRiMTZjYjFjNzRkOTNmNjg3YWZiZGI4MzA2YzZmMGMzNTA4NGJhIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzIvMTQwXSBwaWFub2Jh cjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZSBiL3NyY3BrZ3MvcGlhbm9iYXIv dGVtcGxhdGUKaW5kZXggYTliMjllOTE5OTNmLi44MWVmY2QxMjJjNGQgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3BpYW5vYmFyJwogcGtnbmFtZT1w aWFub2JhcgogdmVyc2lvbj0yMDIyLjA0LjAxCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWls ZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfYnVpbGRfYXJncz0iVj0xIgogaG9zdG1ha2VkZXBl bmRzPSJwa2ctY29uZmlnIgoKRnJvbSA5MGNhZTZjYmYwYjM4NWY0NTM2NzE0ZjVmMmFjYmE1NDRk ZTU2ZjQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwNzMvMTQwXSBwcHNzcHA6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3Jj cGtncy9wcHNzcHAvdGVtcGxhdGUgfCA3ICsrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2Vy dGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9wcHNzcHAvdGVt cGxhdGUgYi9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZQppbmRleCA3OTg0YTczM2Q0YmUuLjE1YTQy ZmQyYzk5MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9wcHNzcHAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdw cHNzcHAnCiBwa2duYW1lPXBwc3NwcAogdmVyc2lvbj0xLjE0LjQKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIF9nbHNsYW5nX2NvbW1pdD1kYzExYWRkZTIzYzQ1NWEyNGUxM2RkNTRkZTliNGVkZThi ZGQ3ZGI4CiBfU1BJUlZfQ3Jvc3NfY29tbWl0PTlhY2I5ZWMzMWY1YThlZjgwZWE2Yjk5NGJiNzdi ZTc4N2IwOGQzZDEKIF9hcm1pcHNfY29tbWl0PTY3MTllZGViYWFlMDMzMzBlZTU0NDFkOWIyODI4 MDY3MmVkZjAwZDUKQEAgLTEzLDcgKzEzLDcgQEAgY29uZmlndXJlX2FyZ3M9Ii1ESEVBRExFU1M9 MSAtRFVTRV9TWVNURU1fRkZNUEVHPTEgLURVTklUVEVTVD1PTgogIC1EVVNJTkdfUVRfVUk9JCh2 b3B0X2lmIHF0IE9OIE9GRikgLURVU0VfU1lTVEVNX1pTVEQ9T04KICAtREFSTUlQU19VU0VfU1RE X0ZJTEVTWVNURU09T04iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcHl0aG9uMyAkKHZv cHRfaWYgcXQgcXQ1LWhvc3QtdG9vbHMpIgotbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgZ2xldy1k ZXZlbCBmZm1wZWctZGV2ZWwgbGliemlwLWRldmVsCittYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBn bGV3LWRldmVsIGZmbXBlZzQtZGV2ZWwgbGliemlwLWRldmVsCiAgc25hcHB5LWRldmVsIHJhcGlk anNvbiBsaWJwbmctZGV2ZWwgbGlienN0ZC1kZXZlbAogICQodm9wdF9pZiBzZGwyIFNETDItZGV2 ZWwpICQodm9wdF9pZiB3YXlsYW5kIHdheWxhbmQtZGV2ZWwpCiAgJCh2b3B0X2lmIHF0ICdxdDUt ZGV2ZWwgcXQ1LW11bHRpbWVkaWEtZGV2ZWwnKSIKQEAgLTYyLDEzICs2MiwxMiBAQCBwb3N0X2V4 dHJhY3QoKSB7CiAJbXYgJHt3cmtzcmN9L21pbml1cG5wLSR7X21pbml1cG5wX2NvbW1pdH0gJHt3 cmtzcmN9L2V4dC9taW5pdXBucAogfQogCi1wb3N0X3BhdGNoKCl7Citwb3N0X3BhdGNoKCkgewog CSMgZGlzYWJsZSBnaXQgdmVyc2lvbmluZwogCXZzZWQgLWUgJ3N8ZmluZF9wYWNrYWdlKEdpdCl8 IyAmfCcgLWkgZ2l0LXZlcnNpb24uY21ha2UKIH0KIAogZG9faW5zdGFsbCgpIHsKLQl2bGljZW5z ZSBMSUNFTlNFLlRYVAogCXZpbnN0YWxsIGljb25zL2ljb24uc3ZnIDY0NCB1c3Ivc2hhcmUvcGl4 bWFwcyBwcHNzcHAuc3ZnCiAJdmluc3RhbGwgUXQvUFBTU1BQLmRlc2t0b3AgNjQ0IHVzci9zaGFy ZS9hcHBsaWNhdGlvbnMKIAl2YmluIGJ1aWxkL1BQU1NQUEhlYWRsZXNzIHBwc3NwcC1oZWFkbGVz cwoKRnJvbSBjYjY5ODhhNTExZWQxYTk5ZDM0ZGNjMDEyMTg4OWYyOGNkZmNiYmU3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzQvMTQwXSBw cWl2OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcHFpdi90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcHFpdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHFpdi90ZW1wbGF0ZQpp bmRleCA1NDJmYzI3YTJkMzIuLjkzMDhkOTQ5YjZhMSAxMDA2NDQKLS0tIGEvc3JjcGtncy9wcWl2 L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHFpdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3BxaXYnCiBwa2duYW1lPXBxaXYKIHZlcnNpb249Mi4xMgotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBob3N0bWFrZWRl cGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBndGsrMy1kZXZlbCAk KHZvcHRfaWYgZmZtcGVnIGZmbXBlZy1kZXZlbCkKCkZyb20gYzJhMmExOGM4YTU4MDljNjhiYjc2 NGVjNDc1YjQxMzEwNDJlNzE5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDc1LzE0MF0gcW1tcDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL3FtbXAvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3FtbXAvdGVtcGxh dGUgYi9zcmNwa2dzL3FtbXAvdGVtcGxhdGUKaW5kZXggMjZjNjYxZWQxNmJlLi5hMTUwZDc0NDFj N2EgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3FtbXAv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxbW1wJwogcGtn bmFtZT1xbW1wCiB2ZXJzaW9uPTEuNi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9z dHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EVVNFX0hBTDpCT09MPUZBTFNFIC1EUU1NUF9E RUZBVUxUX1VJOlNUUklORz1zaW1wbGUiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1 LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIgoKRnJvbSA5MDU3Njk0ZTFjNzc4YTMxMDc3MDNkZDU4MjEy NmNhNTg5MDJkYzE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNzYvMTQwXSBxdDUtd2ViZW5naW5lOiB1cGRhdGUgdG8gNS4xNS4xMwoKLS0t CiAuLi4vY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaCAgICAgICAgfCAgMTEgKysK IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggICB8IDE3OSArKysr KysrKysrKysrKysrKysKIHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZSAgICAgICAgICAg ICAgICB8ICAxMCArLQogMyBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5zZXJ0aW9ucygrKSwgNSBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hl cy9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3Bw MTQucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9jaHJvbWl1bS1tZWRpYS1m aWx0ZXJzLWNwcDE0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uMDRhZGM1NDBmMmNiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaApAQCAtMCwwICsxLDEx IEBACistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9CVUlMRC5nbgky MDIzLTAyLTI3IDEzOjMyOjU5LjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2No cm9taXVtL21lZGlhL2ZpbHRlcnMvQlVJTEQuZ24JMjAyMy0wNC0wMiAxNzoyMTozOS4yMDQwNjYz ODQgLTA0MDAKK0BAIC05Niw2ICs5Niw4IEBACisgICAgICIvL3VpL2dmeC9nZW9tZXRyeTpnZW9t ZXRyeSIsCisgICBdCisgCisrICBjZmxhZ3NfY2MgPSBbICItc3RkPWMrKzE0IiBdCisrCisgICBs aWJzID0gW10KKyAKKyAgIGlmIChwcm9wcmlldGFyeV9jb2RlY3MpIHsKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL3F0NS13 ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uYWM1NWUxNjM0NDIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9x dDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDE3OSBAQAorLS0t IGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJ MjAyMy0wNC0wMiAxNjo1MDo1Ny43MzI1NDc0NDYgLTA0MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCTIwMjMtMDQtMDIgMTY6NTA6 MDkuNDg2NDc4OTk1IC0wNDAwCitAQCAtNTcsNiArNTcsOCBAQAorIAorIG5hbWVzcGFjZSB7Cisg CisrY29uc3RleHByIGludDY0X3Qga1JlbGF0aXZlVHNCYXNlID0gc3RhdGljX2Nhc3Q8aW50NjRf dD4oMHg3ZmZlZmZmZmZmZmZmZmZmKTsKKysKKyB2b2lkIFNldEFWU3RyZWFtRGlzY2FyZChBVlN0 cmVhbSogc3RyZWFtLCBBVkRpc2NhcmQgZGlzY2FyZCkgeworICAgRENIRUNLKHN0cmVhbSk7Cisg ICBzdHJlYW0tPmRpc2NhcmQgPSBkaXNjYXJkOworQEAgLTkwLDI0ICs5MiwxMiBAQAorIAorIHN0 YXRpYyBiYXNlOjpUaW1lRGVsdGEgRXh0cmFjdFN0YXJ0VGltZShBVlN0cmVhbSogc3RyZWFtKSB7 CisgICAvLyBUaGUgZGVmYXVsdCBzdGFydCB0aW1lIGlzIHplcm8uCistICBiYXNlOjpUaW1lRGVs dGEgc3RhcnRfdGltZTsKKysgIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lID0ga05vVGltZXN0 YW1wOworIAorICAgLy8gRmlyc3QgdHJ5IHRvIHVzZSAgdGhlIHxzdGFydF90aW1lfCB2YWx1ZSBh cyBpcy4KKyAgIGlmIChzdHJlYW0tPnN0YXJ0X3RpbWUgIT0ga05vRkZtcGVnVGltZXN0YW1wKQor ICAgICBzdGFydF90aW1lID0gQ29udmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwg c3RyZWFtLT5zdGFydF90aW1lKTsKKyAKKy0gIC8vIE5leHQgdHJ5IHRvIHVzZSB0aGUgZmlyc3Qg RFRTIHZhbHVlLCBmb3IgY29kZWNzIHdoZXJlIHdlIGtub3cgUFRTID09IERUUworLSAgLy8gKGV4 Y2x1ZGVzIGFsbCBIMjZ4IGNvZGVjcykuIFRoZSBzdGFydCB0aW1lIG11c3QgYmUgcmV0dXJuZWQg aW4gUFRTLgorLSAgaWYgKHN0cmVhbS0+Zmlyc3RfZHRzICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCAm JgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0hFVkMg JiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IMjY0 ICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfTVBF RzQpIHsKKy0gICAgY29uc3QgYmFzZTo6VGltZURlbHRhIGZpcnN0X3B0cyA9CistICAgICAgICBD b252ZXJ0RnJvbVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPmZpcnN0X2R0cyk7 CistICAgIGlmIChmaXJzdF9wdHMgPCBzdGFydF90aW1lKQorLSAgICAgIHN0YXJ0X3RpbWUgPSBm aXJzdF9wdHM7CistICB9CistCisgICByZXR1cm4gc3RhcnRfdGltZTsKKyB9CisgCitAQCAtNDA4 LDExICszOTgsMTEgQEAKKyAgIHNjb3BlZF9yZWZwdHI8RGVjb2RlckJ1ZmZlcj4gYnVmZmVyOwor IAorICAgaWYgKHR5cGUoKSA9PSBEZW11eGVyU3RyZWFtOjpURVhUKSB7CistICAgIGludCBpZF9z aXplID0gMDsKKysgICAgc2l6ZV90IGlkX3NpemUgPSAwOworICAgICB1aW50OF90KiBpZF9kYXRh ID0gYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BL VF9EQVRBX1dFQlZUVF9JREVOVElGSUVSLCAmaWRfc2l6ZSk7CisgCistICAgIGludCBzZXR0aW5n c19zaXplID0gMDsKKysgICAgc2l6ZV90IHNldHRpbmdzX3NpemUgPSAwOworICAgICB1aW50OF90 KiBzZXR0aW5nc19kYXRhID0gYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNr ZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1dFQlZUVF9TRVRUSU5HUywgJnNldHRpbmdzX3NpemUpOwor IAorQEAgLTQyNCw3ICs0MTQsNyBAQAorICAgICBidWZmZXIgPSBEZWNvZGVyQnVmZmVyOjpDb3B5 RnJvbShwYWNrZXQtPmRhdGEsIHBhY2tldC0+c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2lkZV9kYXRhLmRhdGEoKSwgc2lkZV9kYXRhLnNpemUoKSk7CisgICB9 IGVsc2UgeworLSAgICBpbnQgc2lkZV9kYXRhX3NpemUgPSAwOworKyAgICBzaXplX3Qgc2lkZV9k YXRhX3NpemUgPSAwOworICAgICB1aW50OF90KiBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3Np ZGVfZGF0YSgKKyAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxP Q0tBRERJVElPTkFMLCAmc2lkZV9kYXRhX3NpemUpOworIAorQEAgLTQ4NSw3ICs0NzUsNyBAQAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldC0+c2l6ZSAtIGRh dGFfb2Zmc2V0KTsKKyAgICAgfQorIAorLSAgICBpbnQgc2tpcF9zYW1wbGVzX3NpemUgPSAwOwor KyAgICBzaXplX3Qgc2tpcF9zYW1wbGVzX3NpemUgPSAwOworICAgICBjb25zdCB1aW50MzJfdCog c2tpcF9zYW1wbGVzX3B0ciA9CisgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQz Ml90Kj4oYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCisgICAgICAgICAgICAgcGFja2V0LmdldCgp LCBBVl9QS1RfREFUQV9TS0lQX1NBTVBMRVMsICZza2lwX3NhbXBsZXNfc2l6ZSkpOworQEAgLTE1 ODcsNiArMTU3Nyw4IEBACisgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHN0cmVhbXNfKSB7 CisgICAgIGlmICghc3RyZWFtIHx8IHN0cmVhbS0+SXNFbmFibGVkKCkgIT0gZW5hYmxlZCkKKyAg ICAgICBjb250aW51ZTsKKysgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUg PT0gQVZfTk9QVFNfVkFMVUUpCisrICAgICAgY29udGludWU7CisgICAgIGlmICghbG93ZXN0X3N0 YXJ0X3RpbWVfc3RyZWFtIHx8CisgICAgICAgICBzdHJlYW0tPnN0YXJ0X3RpbWUoKSA8IGxvd2Vz dF9zdGFydF90aW1lX3N0cmVhbS0+c3RhcnRfdGltZSgpKSB7CisgICAgICAgbG93ZXN0X3N0YXJ0 X3RpbWVfc3RyZWFtID0gc3RyZWFtLmdldCgpOworQEAgLTE2MDQsNiArMTU5Niw4IEBACisgICAg IGlmIChzdHJlYW0gJiYgc3RyZWFtLT50eXBlKCkgPT0gRGVtdXhlclN0cmVhbTo6VklERU8gJiYK KyAgICAgICAgIHN0cmVhbS0+SXNFbmFibGVkKCkpIHsKKyAgICAgICB2aWRlb19zdHJlYW0gPSBz dHJlYW0uZ2V0KCk7CisrICAgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUg PT0gQVZfTk9QVFNfVkFMVUUpCisrICAgICAgICBjb250aW51ZTsKKyAgICAgICBpZiAodmlkZW9f c3RyZWFtLT5zdGFydF90aW1lKCkgPD0gc2Vla190aW1lKSB7CisgICAgICAgICByZXR1cm4gdmlk ZW9fc3RyZWFtOworICAgICAgIH0KK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3Jp Zy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaCBxdHdl YmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVn X2NvbW1vbi5oCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBl Z19jb21tb24uaAkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmgJMjAyMi0wNy0x MSAyMjoxMjo0Ny45MTcxOTI3ODggLTA1MDAKK0BAIC0yOSw2ICsyOSw3IEBAIGV4dGVybiAiQyIg eworICNpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmZvcm1hdC5oPgorICNpbmNsdWRlIDxsaWJhdmZv cm1hdC9hdmlvLmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9hdnV0aWwuaD4KKysjaW5jbHVkZSA8 bGliYXZ1dGlsL2NoYW5uZWxfbGF5b3V0Lmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9pbWd1dGls cy5oPgorICNpbmNsdWRlIDxsaWJhdnV0aWwvbG9nLmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9t YXN0ZXJpbmdfZGlzcGxheV9tZXRhZGF0YS5oPgorZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4x NS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVf cmVhZGVyLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlh L2ZpbHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAu MDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVy cy9hdWRpb19maWxlX3JlYWRlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAtMDUw MAorQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBBdWRpb0ZpbGVSZWFkZXI6Ok9wZW5EZW11eGVyKCkg eworIH0KKyAKKyBib29sIEF1ZGlvRmlsZVJlYWRlcjo6T3BlbkRlY29kZXIoKSB7CistICBBVkNv ZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19p ZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVj X2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAoY29kZWMpIHsKKyAgICAgLy8gTVAzIGRlY29k ZXMgdG8gUzE2UCB3aGljaCB3ZSBkb24ndCBzdXBwb3J0LCB0ZWxsIGl0IHRvIHVzZSBTMTYgaW5z dGVhZC4KKyAgICAgaWYgKGNvZGVjX2NvbnRleHRfLT5zYW1wbGVfZm10ID09IEFWX1NBTVBMRV9G TVRfUzE2UCkKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFy dHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYyBxdHdlYmVu Z2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19h dWRpb19kZWNvZGVyLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVy cy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAt MDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1 ZGlvX2RlY29kZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTcxOTI3ODggLTA1MDAKK0BAIC0z MjksNyArMzI5LDcgQEAgYm9vbCBGRm1wZWdBdWRpb0RlY29kZXI6OkNvbmZpZ3VyZURlY29kZQor ICAgICB9CisgICB9CisgCistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVy KGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2 Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAoIWNv ZGVjIHx8CisgICAgICAgYXZjb2RlY19vcGVuMihjb2RlY19jb250ZXh0Xy5nZXQoKSwgY29kZWMs ICZjb2RlY19vcHRpb25zKSA8IDApIHsKKyAgICAgRExPRyhFUlJPUikgPDwgIkNvdWxkIG5vdCBp bml0aWFsaXplIGF1ZGlvIGRlY29kZXI6ICIKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUu MTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5j YyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJz L2ZmbXBlZ19nbHVlLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVy cy9mZm1wZWdfZ2x1ZS5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysr IGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MJMjAy Mi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC01OSw3ICs1OSw2IEBAIHN0YXRp YyBpbnQ2NF90IEFWSU9TZWVrT3BlcmF0aW9uKHZvaWQqIG8KKyB9CisgCisgdm9pZCBGRm1wZWdH bHVlOjpJbml0aWFsaXplRkZtcGVnKCkgeworLSAgYXZfcmVnaXN0ZXJfYWxsKCk7CisgfQorIAor IHN0YXRpYyB2b2lkIExvZ0NvbnRhaW5lcihib29sIGlzX2xvY2FsX2ZpbGUsCitAQCAtOTUsOSAr OTQsNiBAQCBGRm1wZWdHbHVlOjpGRm1wZWdHbHVlKEZGbXBlZ1VSTFByb3RvY29sCisgICAvLyBF bmFibGUgZmFzdCwgYnV0IGluYWNjdXJhdGUgc2Vla3MgZm9yIE1QMy4KKyAgIGZvcm1hdF9jb250 ZXh0Xy0+ZmxhZ3MgfD0gQVZGTVRfRkxBR19GQVNUX1NFRUs7CisgCistICAvLyBFbnN1cmVzIHdl IGNhbiByZWFkIG91dCB2YXJpb3VzIG1ldGFkYXRhIGJpdHMgbGlrZSB2cDggYWxwaGEuCistICBm b3JtYXRfY29udGV4dF8tPmZsYWdzIHw9IEFWRk1UX0ZMQUdfS0VFUF9TSURFX0RBVEE7CistCisg ICAvLyBFbnN1cmVzIGZvcm1hdCBwYXJzaW5nIGVycm9ycyB3aWxsIGJhaWwgb3V0LiBGcm9tIGFu IGF1ZGl0IG9uIDExLzIwMTcsIGFsbAorICAgLy8gaW5zdGFuY2VzIHdlcmUgcmVhbCBmYWlsdXJl cy4gU29sdmVzIGJ1Z3MgbGlrZSBodHRwOi8vY3JidWcuY29tLzcxMDc5MS4KKyAgIGZvcm1hdF9j b250ZXh0Xy0+ZXJyb3JfcmVjb2duaXRpb24gfD0gQVZfRUZfRVhQTE9ERTsKK2RpZmYgLU5hdXJw IHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmls dGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjCistLS0g YS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rl ci5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBh cnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MJMjAyMi0w Ny0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBG Rm1wZWdWaWRlb0RlY29kZXI6OkNvbmZpZ3VyZURlY29kZQorICAgaWYgKGRlY29kZV9uYWx1c18p CisgICAgIGNvZGVjX2NvbnRleHRfLT5mbGFnczIgfD0gQVZfQ09ERUNfRkxBRzJfQ0hVTktTOwor IAorLSAgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0 Xy0+Y29kZWNfaWQpOworKyAgY29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVj b2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKCFjb2RlYyB8fCBhdmNvZGVj X29wZW4yKGNvZGVjX2NvbnRleHRfLmdldCgpLCBjb2RlYywgTlVMTCkgPCAwKSB7CisgICAgIFJl bGVhc2VGRm1wZWdSZXNvdXJjZXMoKTsKKyAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtTmF1cnAg cXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0 ZXJzL21lZGlhX2ZpbGVfY2hlY2tlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2ZpbGVfY2hlY2tlci5jYworLS0tIGEvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjCTIw MjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hy b21pdW0vbWVkaWEvZmlsdGVycy9tZWRpYV9maWxlX2NoZWNrZXIuY2MJMjAyMi0wNy0xMSAyMjox Mjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC02OCw3ICs2OCw3IEBAIGJvb2wgTWVkaWFGaWxlQ2hl Y2tlcjo6U3RhcnQoYmFzZTo6VGltZUQKKyAgICAgICBhdXRvIGNvbnRleHQgPSBBVlN0cmVhbVRv QVZDb2RlY0NvbnRleHQoZm9ybWF0X2NvbnRleHQtPnN0cmVhbXNbaV0pOworICAgICAgIGlmICgh Y29udGV4dCkKKyAgICAgICAgIGNvbnRpbnVlOworLSAgICAgIEFWQ29kZWMqIGNvZGVjID0gYXZj b2RlY19maW5kX2RlY29kZXIoY3AtPmNvZGVjX2lkKTsKKysgICAgICBjb25zdCBBVkNvZGVjKiBj b2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNwLT5jb2RlY19pZCk7CisgICAgICAgaWYgKGNv ZGVjICYmIGF2Y29kZWNfb3BlbjIoY29udGV4dC5nZXQoKSwgY29kZWMsIG51bGxwdHIpID49IDAp IHsKKyAgICAgICAgIGF1dG8gbG9vcCA9IHN0ZDo6bWFrZV91bmlxdWU8RkZtcGVnRGVjb2RpbmdM b29wPihjb250ZXh0LmdldCgpKTsKKyAgICAgICAgIHN0cmVhbV9jb250ZXh0c1tpXSA9IHtzdGQ6 Om1vdmUoY29udGV4dCksIHN0ZDo6bW92ZShsb29wKX07CitkaWZmIC1OYXVycCBxdHdlYmVuZ2lu ZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9t b2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYyBxdHdl YmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMv bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MKKy0t LSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRl b19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MJMjAyMi0wNS0yMyAwNjoz ODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVy X2ltcGwuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC0yMDMsNyAr MjAzLDcgQEAgaW50MzJfdCBIMjY0RGVjb2RlckltcGw6OkluaXREZWNvZGUoY29ucworICAgLy8g YSBwb2ludGVyIHx0aGlzfC4KKyAgIGF2X2NvbnRleHRfLT5vcGFxdWUgPSB0aGlzOworIAorLSAg QVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihhdl9jb250ZXh0Xy0+Y29kZWNf aWQpOworKyAgY29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihhdl9j b250ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKCFjb2RlYykgeworICAgICAvLyBUaGlzIGlzIGFu IGluZGljYXRpb24gdGhhdCBGRm1wZWcgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIG9yIGl0IGhh cyBub3QKKyAgICAgLy8gYmVlbiBjb21waWxlZC9pbml0aWFsaXplZCB3aXRoIHRoZSBjb3JyZWN0 IHNldCBvZiBjb2RlY3MuCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxh dGUgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKaW5kZXggMGE3MTQ4NDIwOGJjLi4w OTVhYjY3NzAxZTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKQEAgLTEsOSArMSw5IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdxdDUtd2ViZW5naW5lJwogcGtnbmFtZT1xdDUtd2ViZW5naW5lCi12 ZXJzaW9uPTUuMTUuMTEKLXJldmlzaW9uPTIKK3ZlcnNpb249NS4xNS4xMworcmV2aXNpb249MQog X3ZlcnNpb249IiR7dmVyc2lvbn0tbHRzIgotX2Nocm9taXVtX2NvbW1pdD1iZTM0OWVhZjYyZTc3 OTU1NzkxZDdiZjI5Zjg5M2YxZThhMzdkYWY0CitfY2hyb21pdW1fY29tbWl0PWU0OGRmNzgwM2M3 Yzk4YjBiMjQ3MWM5NDA1N2QzMmU0NGEzMDFhZDUKIGFyY2hzPSJ4ODZfNjQqIGk2ODYqIGFybXZb NjddKiBwcGM2NCogYWFyY2g2NCoiCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfc3R5bGU9cW1h a2UKQEAgLTMyLDggKzMyLDggQEAgbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciwgTEdQTC0zLjAt b3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9xdC5pby8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8v Z2l0aHViLmNvbS9xdC9xdHdlYmVuZ2luZS9hcmNoaXZlL3Yke192ZXJzaW9ufS50YXIuZ3oKICBo dHRwczovL2dpdGh1Yi5jb20vcXQvcXR3ZWJlbmdpbmUtY2hyb21pdW0vYXJjaGl2ZS8ke19jaHJv bWl1bV9jb21taXR9LnRhci5neiIKLWNoZWNrc3VtPSJhYTc0NjYzNTZjNDUwYzVmNTg3MGY5Nzli OTNjZDdlN2U2MmRhMTE2NWMzMjhmZmNhYjFhOTkyOGRiMThhZDY3Ci0gNmY0N2VkOGFiOGNjMDYy NDExZjZmMjA2ZGE2MzUzYmM4MjYzZDZlZDZkNjI5MGM2ODlhMDVjMDFkOTFmNjQ2YiIKK2NoZWNr c3VtPSI0YjU5ODM4ZWQ3NWVmNzg4YjU5ZTFlNDEyNTM1YTBlNDJkZDlkMzExNjYxZmRlYWRiMTkx YjU4MWJhODE1YzYzCisgYTkxNjg2NTYyYjFkNGU4YjIyMGUwYmJjYmFiNWZlYjY0NjMwZTJkZTk3 NGIzNWFjMDM0YmYzODhhZjc3MWE2YyIKIAogbm9fZ2VuZXJpY19wa2djb25maWdfbGluaz15ZXMK IGJ1aWxkX29wdGlvbnM9InNuZGlvIHBpcGV3aXJlIgoKRnJvbSA4ZGQ4ZTk0NDc3YTRmMDYxMzk1 ZGZlN2UxZThjNWEyZWY4YTJhYjQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwNzcvMTQwXSBxdDU6IHVwZGF0ZSB0byA1LjE1LjgKCi0tLQog Li4uZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoIHwgMTI5MTMgKysr KysrKysrKysrKysrKwogc3JjcGtncy9xdDUvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgMTAgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTI5MTkgaW5zZXJ0aW9ucygrKSwgNCBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2 ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1r ZjUtMS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNl LXNyYy01LjE1Ljgta2Y1LTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi45NjZjOThiY2QzYmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRj aGVzL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoCkBAIC0w LDAgKzEsMTI5MTMgQEAKK1N1Ym1pdHRlZCBCeTogICAgICAgICAgICBQaWVycmUgTGFiYXN0aWUg PHBpZXJyZV9kb3RfbGFiYXN0aWVfYXRfbmV1Zl9kb3RfZnI+CitEYXRlOiAgICAgICAgICAgICAg ICAgICAgMjAyMy0wMS0wNQorSW5pdGlhbCBQYWNrYWdlIFZlcnNpb246IDUuMTUuOAorVXBzdHJl YW0gU3RhdHVzOiAgICAgICAgIEFwcGxpZWQgKGFjY29yZGluZyB0byBLREUpCitPcmlnaW46ICAg ICAgICAgICAgICAgICAgS0RFIHBhdGNoIHNldAorRGVzY3JpcHRpb246ICAgICAgICAgICAgIFBh dGNoIHNldCBtYWludGFpbmVkIGJ5IHRoZSBLREUgZm9sa3MKK3NlZSBodHRwczovL2RvdC5rZGUu b3JnLzIwMjEvMDQvMDYvYW5ub3VuY2luZy1rZGVzLXF0LTUtcGF0Y2gtY29sbGVjdGlvbgorUGF0 Y2ggZ2VuZXJhdGVkIHVzaW5nIHRoZSBwcm9jZWR1cmUgaW4KK2h0dHBzOi8vd2lraS5saW51eGZy b21zY3JhdGNoLm9yZy9ibGZzL3RpY2tldC8xNzQ3NiNjb21tZW50OjMKKworU3VibW9kdWxlIHF0 YmFzZSA0ZWU0ZmMxOC4uOWNmNTg2ZDY6CitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvY29t bW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJv aWQvcXBsYXRmb3JtZGVmcy5oCitpbmRleCBmNzViYzQwOTNiLi4yYmQ1OTQxMGQ0IDEwMDY0NAor LS0tIGEvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oCisrKysg Yi9xdGJhc2UvbWtzcGVjcy9jb21tb24vYW5kcm9pZC9xcGxhdGZvcm1kZWZzLmgKK0BAIC0xNDQs MTEgKzE0NCw3IEBACisgI2RlZmluZSBRVF9TSUdOQUxfQVJHUyAgICAgICAgICBpbnQKKyAjZGVm aW5lIFFUX1NJR05BTF9JR05PUkUgICAgICAgIFNJR19JR04KKyAKKy0jaWYgZGVmaW5lZChfX0dM SUJDX18pICYmIChfX0dMSUJDX18gPj0gMikKKyAjZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAg ICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBp bnQKKy0jZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NP VVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRm CitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5tayBiL3F0YmFz ZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsKK2luZGV4IGYzMGI1ODMwYjQuLmEzMmNlYWNi NmMgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9tYWMvc2RrLm1rCisrKysg Yi9xdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9tYWMvc2RrLm1rCitAQCAtMSw2ICsxLDYgQEAKKyAK KyBpZmVxICgkKFFUX01BQ19TREtfTk9fVkVSU0lPTl9DSEVDSyksKQorLSAgICBDSEVDS19TREtf Q09NTUFORCA9IC91c3IvYmluL3hjcnVuIC0tc2RrICQoRVhQT1JUX1FNQUtFX01BQ19TREspIC1z aG93LXNkay12ZXJzaW9uIDI+JjEKKysgICAgQ0hFQ0tfU0RLX0NPTU1BTkQgPSAvdXNyL2Jpbi94 Y3J1biAtLXNkayAkKEVYUE9SVF9RTUFLRV9NQUNfU0RLKSAtc2hvdy1zZGstdmVyc2lvbiAyPi9k ZXYvbnVsbAorICAgICBDVVJSRU5UX01BQ19TREtfVkVSU0lPTiA6PSAkKHNoZWxsIERFVkVMT1BF Ul9ESVI9JChFWFBPUlRfUU1BS0VfWENPREVfREVWRUxPUEVSX1BBVEgpICQoQ0hFQ0tfU0RLX0NP TU1BTkQpKQorICAgICBpZm5lcSAoJChDVVJSRU5UX01BQ19TREtfVkVSU0lPTiksJChFWFBPUlRf UU1BS0VfTUFDX1NES19WRVJTSU9OKSkKKyAgICAgICAgICMgV2UgZG9uJ3Qgd2FudCB0byBjb21w bGFpbiBhYm91dCBvdXQgb2YgZGF0ZSBTREsgdW5sZXNzIHRoZSB0YXJnZXQgbmVlZHMgdG8gYmUg cmVtYWRlLgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9y bWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaAoraW5k ZXggYTgxOGQ5NzNmMC4uYzFhYjcyZmJjNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2xp bnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtY2xh bmcvcXBsYXRmb3JtZGVmcy5oCitAQCAtNzksMTQgKzc5LDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9Y T1BFTl9MRlNfRVhURU5TSU9OUworICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3Jt ZGVmcy5oIgorIAorLSN1bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJD X18pICYmIChfX0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAg IHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQK Ky0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJD RSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisg I2RlZmluZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBh L3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVj cy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5oCitpbmRleCAxMzUyM2YwNzAyLi40ZDI3NTBkOWVj IDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaAor KysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTc5LDE0 ICs3OSw2IEBACisgI2RlZmluZSBRVF9VU0VfWE9QRU5fTEZTX0VYVEVOU0lPTlMKKyAjaW5jbHVk ZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xF Tl9UCistCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fIDwgMikKKy0jZGVm aW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NL TEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9Q RU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5U RiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmluZSBRVF9WU05QUklOVEYgICAgICAgICAg ICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBs YXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmgK K2luZGV4IGRjNzUwYWIxZWYuLmQzY2MzOWI0N2YgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVj cy9saW51eC1sbHZtL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgt bGx2bS9xcGxhdGZvcm1kZWZzLmgKK0BAIC04MCwxNCArODAsNiBAQAorICNkZWZpbmUgUVRfVVNF X1hPUEVOX0xGU19FWFRFTlNJT05TCisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZv cm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorLQorLSNpZiBkZWZpbmVkKF9fR0xJ QkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAg ICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGlu dAorLSNlbmRpZgorLQorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09V UkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYK KyAjZGVmaW5lIFFUX1ZTTlBSSU5URiAgICAgICAgICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL21rc3BlY3MvbGludXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2Uv bWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggNGM0ZTUzZGEyYS4u ODNiYWZmYjNlMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBs YXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9y bWRlZnMuaAorQEAgLTg1LDE2ICs4NSw5IEBACisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9x cGxhdGZvcm1kZWZzLmgiCisgCisgI3VuZGVmIFFUX09QRU5fTEFSR0VGSUxFCistI3VuZGVmIFFU X1NPQ0tMRU5fVAorIAorICNkZWZpbmUgUVRfT1BFTl9MQVJHRUZJTEUgICAgICAgMAorIAorLSNp ZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09D S0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5f VCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNpZm5kZWYgU0lPQ0dJRkJSREFERFIKKyAj ICBkZWZpbmUgU0lPQ0dJRkJSREFERFIgMHg4OTE5CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRi YXNlL21rc3BlY3MvbHlueG9zLWcrKy9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9s eW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggNDMzOWVhMmIyMy4uNjAwN2FmMDA1NSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oCisr KysgYi9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTcyLDE0 ICs3Miw2IEBACisgCisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgi CisgCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYg KF9fR0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xl bl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRp ZgorLQorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUw MCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5l IFFUX1ZTTlBSSU5URiAgICAgICAgICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy8zcmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcCBiL3F0 YmFzZS9zcmMvM3JkcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAK K2luZGV4IGMzYzE4NDI1OGYuLjMyYWYzZjhmMjkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjLzNy ZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCisrKysgYi9xdGJh c2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCitA QCAtMTAsNiArMTAsNyBAQAorICNpbmNsdWRlICJsaWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuaCIK KyAKKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorKyNpbmNsdWRlIDxsaW1pdHM+CisgCisgI2luY2x1 ZGUgImNvbW1vbi9kZWJ1Zy5oIgorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvM3JkcGFydHkv Zm9ya2ZkL2ZvcmtmZF9saW51eC5jIGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2Zk X2xpbnV4LmMKK2luZGV4IGZmZTBlOWE1ZTIuLmIxZjU0MDhkMTEgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjLzNyZHBhcnR5L2ZvcmtmZC9mb3JrZmRfbGludXguYworKysrIGIvcXRiYXNlL3NyYy8z cmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMKK0BAIC04Miw3ICs4Miw4IEBAIHN0YXRpYyBp bnQgc3lzX2Nsb25lKHVuc2lnbmVkIGxvbmcgY2xvbmVmbGFncywgaW50ICpwdGlkKQorICAgICBy ZXR1cm4gc3lzY2FsbChfX05SX2Nsb25lLCBjbG9uZWZsYWdzLCBjaGlsZF9zdGFjaywgc3RhY2tf c2l6ZSwgcHRpZCwgbmV3dGxzLCBjdGlkKTsKKyAjZWxpZiBkZWZpbmVkKF9fYXJjX18pIHx8IGRl ZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX21pcHNf XykgfHwgXAorICAgICBkZWZpbmVkKF9fbmRzMzJfXykgfHwgZGVmaW5lZChfX2hwcGFfXykgfHwg ZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX194dGVuc2FfXykgfHwgZGVmaW5lZChfX2FscGhh X18pIHx8IGRlZmluZWQoX19yaXNjdikKKysgICAgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp bmVkKF9feHRlbnNhX18pIHx8IGRlZmluZWQoX19hbHBoYV9fKSB8fCBkZWZpbmVkKF9fcmlzY3Yp IHx8IFwKKysgICAgZGVmaW5lZChfX2xvb25nYXJjaF9fKQorICAgICAvKiBjdGlkIGFuZCBuZXd0 bHMgYXJlIGludmVydGVkIG9uIENPTkZJR19DTE9ORV9CQUNLV0FSRFMgYXJjaGl0ZWN0dXJlcywK KyAgICAgICogYnV0IHNpbmNlIGJvdGggdmFsdWVzIGFyZSAwLCB0aGVyZSdzIG5vIGhhcm0uICov CisgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfY2xvbmUsIGNsb25lZmxhZ3MsIGNoaWxkX3N0YWNr LCBwdGlkLCBjdGlkLCBuZXd0bHMpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvYW5kcm9pZC9q YXIvc3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YSBiL3F0YmFzZS9z cmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2 YQoraW5kZXggNTc5MmI1YjJmNS4uMmY3NDc1MGZjZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv YW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YQor KysrIGIvcXRiYXNlL3NyYy9hbmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9p ZC9RdE5hdGl2ZS5qYXZhCitAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2 ZQorICAgICBwdWJsaWMgc3RhdGljIFF0VGhyZWFkIG1fcXRUaHJlYWQgPSBuZXcgUXRUaHJlYWQo KTsKKyAgICAgcHJpdmF0ZSBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFVyaT4gbV9jYWNoZWRVcmlz ID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBVcmk+KCk7CisgICAgIHByaXZhdGUgc3RhdGljIEFycmF5 TGlzdDxTdHJpbmc+IG1fa25vd25EaXJzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisrICAg IHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UgPSAi Tm8gcGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiOworIAorICAgICBwcml2YXRlIHN0YXRpYyBmaW5h bCBSdW5uYWJsZSBydW5QZW5kaW5nQ3BwUnVubmFibGVzUnVubmFibGUgPSBuZXcgUnVubmFibGUo KSB7CisgICAgICAgICBAT3ZlcnJpZGUKK0BAIC0xOTMsMTEgKzE5NCwxMCBAQCBwdWJsaWMgY2xh c3MgUXROYXRpdmUKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVyVXJpOworICAgICAg ICAgICAgIH0KKyAKKy0gICAgICAgICAgICAvLyBBbmRyb2lkIDYgYW5kIGVhcmxpZXIgY291bGQg c3RpbGwgbWFuYWdlIHRvIG9wZW4gdGhlIGZpbGUgc28gd2UgY2FuIHJldHVybiB0aGUKKy0gICAg ICAgICAgICAvLyBwYXJzZWQgdXJpIGhlcmUKKy0gICAgICAgICAgICBpZiAoQnVpbGQuVkVSU0lP Ti5TREtfSU5UIDwgMjQpCistICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRVcmk7CistICAg ICAgICAgICAgcmV0dXJuIG51bGw7CisrICAgICAgICAgICAgLy8gaWYgd2Ugb25seSBoYXZlIHRy YW5zaWVudCBwZXJtaXNzaW9ucyBvbiB1cmkgYWxsIHRoZSBhYm92ZSB3aWxsIGZhaWwsCisrICAg ICAgICAgICAgLy8gYnV0IHdlIHdpbGwgYmUgYWJsZSB0byByZWFkIHRoZSBmaWxlIGFueXdheSwg c28gY29udGludWUgd2l0aCB1cmkgaGVyZSBhbnl3YXkKKysgICAgICAgICAgICAvLyBhbmQgY2hl Y2sgZm9yIFNlY3VyaXR5RXhjZXB0aW9ucyBsYXRlcgorKyAgICAgICAgICAgIHJldHVybiBwYXJz ZWRVcmk7CisgICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisgICAgICAg ICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICByZXR1cm4gbnVsbDsKK0BA IC0yNDQsNyArMjQ0LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICBpbnQgZXJy b3IgPSAtMTsKKyAKKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAgIExv Zy5lKFF0VEFHLCAib3BlbkZkRm9yQ29udGVudFVybCgpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVu IFVyaSIpOworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCAib3BlbkZkRm9yQ29udGVudFVybCgp OiAiICsgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1cm4gZXJy b3I7CisgICAgICAgICB9CisgCitAQCAtMjU0LDEyICsyNTQsMTMgQEAgcHVibGljIGNsYXNzIFF0 TmF0aXZlCisgICAgICAgICAgICAgcmV0dXJuIGZkRGVzYy5kZXRhY2hGZCgpOworICAgICAgICAg fSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBlLnByaW50 U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgIH0gY2F0 Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRU QUcsICJvcGVuRmRGb3JDb250ZW50VXJsKCk6IEludmFsaWQgVXJpIik7CisgICAgICAgICAgICAg ZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZXJyb3I7CisrICAgICAg ICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRU QUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1 cm4gZXJyb3I7CisgICAgIH0KKyAKKyAgICAgcHVibGljIHN0YXRpYyBsb25nIGdldFNpemUoQ29u dGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVybCkKK0BAIC0yNzAsNyArMjcxLDcgQEAgcHVi bGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAgICAgdXJpID0gZ2V0VXJpV2l0aFZhbGlkUGVy bWlzc2lvbihjb250ZXh0LCBjb250ZW50VXJsLCAiciIpOworIAorICAgICAgICAgaWYgKHVyaSA9 PSBudWxsKSB7CistICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJnZXRTaXplKCk6IE5vIHBlcm1p c3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlz c2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgcmV0dXJuIHNpemU7CisgICAgICAgICB9 IGVsc2UgaWYgKCFtX2NhY2hlZFVyaXMuY29udGFpbnNLZXkoY29udGVudFVybCkpIHsKKyAgICAg ICAgICAgICBtX2NhY2hlZFVyaXMucHV0KGNvbnRlbnRVcmwsIHVyaSk7CitAQCAtMjg4LDEyICsy ODksMTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2Fs QXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6 ZSgpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Cist ICAgICAgICAgICAgcmV0dXJuIHNpemU7CisgICAgICAgICB9ICBjYXRjaCAoVW5zdXBwb3J0ZWRP cGVyYXRpb25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6 ZSgpOiBVbnN1cHBvcnRlZCBvcGVyYXRpb24gZm9yIGdpdmVuIFVyaSIpOworICAgICAgICAgICAg IGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIHNpemU7CisrICAgICAg ICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRU QUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1 cm4gc2l6ZTsKKyAgICAgfQorIAorICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gY2hlY2tGaWxl RXhpc3RzKENvbnRleHQgY29udGV4dCwgU3RyaW5nIGNvbnRlbnRVcmwpCitAQCAtMzAzLDcgKzMw NSw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKQor ICAgICAgICAgICAgIHVyaSA9IGdldFVyaVdpdGhWYWxpZFBlcm1pc3Npb24oY29udGV4dCwgY29u dGVudFVybCwgInIiKTsKKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAg IExvZy5lKFF0VEFHLCAiY2hlY2tGaWxlRXhpc3RzKCk6IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4g VXJpIik7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2Fn ZSk7CisgICAgICAgICAgICAgcmV0dXJuIGV4aXN0czsKKyAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgaWYgKCFtX2NhY2hlZFVyaXMuY29udGFpbnNLZXkoY29udGVudFVybCkpCitAQCAt MzIxLDEyICszMjMsMTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNo IChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFH LCAiY2hlY2tGaWxlRXhpc3RzKCk6IEludmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmlu dFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZXhpc3RzOworICAgICAgICAgfSBj YXRjaCAoVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExv Zy5lKFF0VEFHLCAiY2hlY2tGaWxlRXhpc3RzKCk6IFVuc3VwcG9ydGVkIG9wZXJhdGlvbiBmb3Ig Z2l2ZW4gVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAg ICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBl KSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7 CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4gZXhpc3RzOworICAgICB9CisgCisgICAgIHB1 YmxpYyBzdGF0aWMgYm9vbGVhbiBjaGVja0lmV3JpdGFibGUoQ29udGV4dCBjb250ZXh0LCBTdHJp bmcgY29udGVudFVybCkKK0BAIC0zNDQsNyArMzQ3LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZl CisgICAgICAgICAgICAgdXJpID0gZ2V0VXJpV2l0aFZhbGlkUGVybWlzc2lvbihjb250ZXh0LCBj b250ZW50VXJsLCAiciIpOworICAgICAgICAgfQorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7 CistICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJpc0RpcigpOiBObyBwZXJtaXNzaW9ucyB0byBv cGVuIFVyaSIpOworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1l c3NhZ2UpOworICAgICAgICAgICAgIHJldHVybiBpc0RpcjsKKyAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAgaWYgKCFtX2NhY2hlZFVyaXMuY29udGFpbnNLZXkoY29udGVudFVybCkpCitA QCAtMzc0LDEyICszNzcsMTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICB9IGNh dGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0 VEFHLCAiY2hlY2tJZkRpcigpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRT dGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgfSBjYXRj aCAoVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5l KFF0VEFHLCAiY2hlY2tJZkRpcigpOiBVbnN1cHBvcnRlZCBvcGVyYXRpb24gZm9yIGdpdmVuIFVy aSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworKyAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAg ICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAg ICAgfQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgICAgIHB1YmxpYyBzdGF0aWMg U3RyaW5nW10gbGlzdENvbnRlbnRzRnJvbVRyZWVVcmkoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcg Y29udGVudFVybCkKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9x dGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaCBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1 cnJlbnRyZWR1Y2VrZXJuZWwuaAoraW5kZXggOGY5YTkzODk1Mi4uYTk4ZGVkZWYyZSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAor KysrIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oCitA QCAtMjEyLDExICsyMTIsMTMgQEAgcHVibGljOgorIAorICAgICBpbmxpbmUgYm9vbCBzaG91bGRU aHJvdHRsZSgpCisgICAgIHsKKysgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxRTXV0ZXg+IGxvY2tl cihtdXRleCk7CisgICAgICAgICByZXR1cm4gKHJlc3VsdHNNYXBTaXplID4gKFJlZHVjZVF1ZXVl VGhyb3R0bGVMaW1pdCAqIHRocmVhZENvdW50KSk7CisgICAgIH0KKyAKKyAgICAgaW5saW5lIGJv b2wgc2hvdWxkU3RhcnRUaHJlYWQoKQorICAgICB7CisrICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8 UU11dGV4PiBsb2NrZXIobXV0ZXgpOworICAgICAgICAgcmV0dXJuIChyZXN1bHRzTWFwU2l6ZSA8 PSAoUmVkdWNlUXVldWVTdGFydExpbWl0ICogdGhyZWFkQ291bnQpKTsKKyAgICAgfQorIH07Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2lu ZS5jcHAgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNw cAoraW5kZXggZWE2Y2UzYWM0Mi4uN2Y5MWEyYmE2OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAorQEAgLTE3Niw2ICsxNzYs MzkgQEAgdm9pZCBUaHJlYWRFbmdpbmVCYXNlOjpzdGFydFNpbmdsZVRocmVhZGVkKCkKKyAgICAg ZmluaXNoKCk7CisgfQorIAorK3ZvaWQgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRCbG9ja2luZygp CisreworKyAgICBzdGFydCgpOworKyAgICBiYXJyaWVyLmFjcXVpcmUoKTsKKysgICAgc3RhcnRU aHJlYWRzKCk7CisrCisrICAgIGJvb2wgdGhyb3R0bGVkID0gZmFsc2U7CisrI2lmbmRlZiBRVF9O T19FWENFUFRJT05TCisrICAgIHRyeSB7CisrI2VuZGlmCisrICAgICAgICB3aGlsZSAodGhyZWFk RnVuY3Rpb24oKSA9PSBUaHJvdHRsZVRocmVhZCkgeworKyAgICAgICAgICAgIGlmICh0aHJlYWRU aHJvdHRsZUV4aXQoKSkgeworKyAgICAgICAgICAgICAgICB0aHJvdHRsZWQgPSB0cnVlOworKyAg ICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrI2lmbmRl ZiBRVF9OT19FWENFUFRJT05TCisrICAgIH0gY2F0Y2ggKFFFeGNlcHRpb24gJmUpIHsKKysgICAg ICAgIGhhbmRsZUV4Y2VwdGlvbihlKTsKKysgICAgfSBjYXRjaCAoLi4uKSB7CisrICAgICAgICBo YW5kbGVFeGNlcHRpb24oUVVuaGFuZGxlZEV4Y2VwdGlvbigpKTsKKysgICAgfQorKyNlbmRpZgor KworKyAgICBpZiAodGhyb3R0bGVkID09IGZhbHNlKSB7CisrICAgICAgICBiYXJyaWVyLnJlbGVh c2UoKTsKKysgICAgfQorKworKyAgICBiYXJyaWVyLndhaXQoKTsKKysgICAgZmluaXNoKCk7Cisr ICAgIGV4Y2VwdGlvblN0b3JlLnRocm93UG9zc2libGVFeGNlcHRpb24oKTsKKyt9CisrCisgdm9p ZCBUaHJlYWRFbmdpbmVCYXNlOjpzdGFydFRocmVhZCgpCisgeworICAgICBzdGFydFRocmVhZElu dGVybmFsKCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVu dHRocmVhZGVuZ2luZS5oIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVh ZGVuZ2luZS5oCitpbmRleCA3YzMwY2ViZGJjLi5hNGM4NTQ4Y2M0IDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oCisrKysgYi9xdGJh c2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmgKK0BAIC05MSw2ICs5 MSw3IEBAIHB1YmxpYzoKKyAgICAgVGhyZWFkRW5naW5lQmFzZSgpOworICAgICB2aXJ0dWFsIH5U aHJlYWRFbmdpbmVCYXNlKCk7CisgICAgIHZvaWQgc3RhcnRTaW5nbGVUaHJlYWRlZCgpOworKyAg ICB2b2lkIHN0YXJ0QmxvY2tpbmcoKTsKKyAgICAgdm9pZCBzdGFydFRocmVhZCgpOworICAgICBi b29sIGlzQ2FuY2VsZWQoKTsKKyAgICAgdm9pZCB3YWl0Rm9yUmVzdW1lKCk7CitAQCAtMTQzLDYg KzE0NCwxNSBAQCBwdWJsaWM6CisgICAgICAgICByZXR1cm4gcmVzdWx0KCk7CisgICAgIH0KKyAK KysgICAgLy8gUnVucyB0aGUgdXNlciBhbGdvcml0aG0gdXNpbmcgbXVsdGlwbGUgdGhyZWFkcy4K KysgICAgLy8gVGhpcyBmdW5jdGlvbiBibG9ja3MgdW50aWwgdGhlIGFsZ29yaXRobSBpcyBmaW5p c2hlZCwKKysgICAgLy8gYW5kIHRoZW4gcmV0dXJucyB0aGUgcmVzdWx0LgorKyAgICBUICpzdGFy dEJsb2NraW5nKCkKKysgICAgeworKyAgICAgICAgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRCbG9j a2luZygpOworKyAgICAgICAgcmV0dXJuIHJlc3VsdCgpOworKyAgICB9CisrCisgICAgIC8vIFJ1 bnMgdGhlIHVzZXIgYWxnb3JpdGhtIHVzaW5nIG11bHRpcGxlIHRocmVhZHMuCisgICAgIC8vIERv ZXMgbm90IGJsb2NrLCByZXR1cm5zIGEgZnV0dXJlLgorICAgICBRRnV0dXJlPFQ+IHN0YXJ0QXN5 bmNocm9ub3VzbHkoKQorQEAgLTIyMyw2ICsyMzMsMTMgQEAgY2xhc3MgVGhyZWFkRW5naW5lU3Rh cnRlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmVTdGFydGVyQmFzZTxUPgorIHB1YmxpYzoKKyAgICAg VGhyZWFkRW5naW5lU3RhcnRlcihUeXBlZFRocmVhZEVuZ2luZSAqZW5nKQorICAgICAgICAgOiBC YXNlKGVuZykgeyB9CisrCisrICAgIFQgc3RhcnRCbG9ja2luZygpCisrICAgIHsKKysgICAgICAg IFQgdCA9ICp0aGlzLT50aHJlYWRFbmdpbmUtPnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGRl bGV0ZSB0aGlzLT50aHJlYWRFbmdpbmU7CisrICAgICAgICByZXR1cm4gdDsKKysgICAgfQorIH07 CisgCisgLy8gRnVsbCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiB3aGVyZSBUIGlzIHZvaWQuCitA QCAtMjMyLDYgKzI0OSwxMiBAQCBjbGFzcyBUaHJlYWRFbmdpbmVTdGFydGVyPHZvaWQ+IDogcHVi bGljIFRocmVhZEVuZ2luZVN0YXJ0ZXJCYXNlPHZvaWQ+CisgcHVibGljOgorICAgICBUaHJlYWRF bmdpbmVTdGFydGVyKFRocmVhZEVuZ2luZTx2b2lkPiAqX3RocmVhZEVuZ2luZSkKKyAgICAgICAg IDogVGhyZWFkRW5naW5lU3RhcnRlckJhc2U8dm9pZD4oX3RocmVhZEVuZ2luZSkge30KKysKKysg ICAgdm9pZCBzdGFydEJsb2NraW5nKCkKKysgICAgeworKyAgICAgICAgdGhpcy0+dGhyZWFkRW5n aW5lLT5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBkZWxldGUgdGhpcy0+dGhyZWFkRW5naW5l OworKyAgICB9CisgfTsKKyAKKyAvLyEgW3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS0xXQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24u Y3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1hdGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAK K2luZGV4IDk4YjAyZjAyMDIuLmVhYzE1MjQxMDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9j b3JlbGliL2FuaW1hdGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAKK0BAIC0yNzYsNyArMjc2LDkg QEAgdm9pZCBRVmFyaWFudEFuaW1hdGlvblByaXZhdGU6OnNldEN1cnJlbnRWYWx1ZUZvclByb2dy ZXNzKGNvbnN0IHFyZWFsIHByb2dyZXNzKQorIAorICAgICBjb25zdCBxcmVhbCBzdGFydFByb2dy ZXNzID0gY3VycmVudEludGVydmFsLnN0YXJ0LmZpcnN0OworICAgICBjb25zdCBxcmVhbCBlbmRQ cm9ncmVzcyA9IGN1cnJlbnRJbnRlcnZhbC5lbmQuZmlyc3Q7CistICAgIGNvbnN0IHFyZWFsIGxv Y2FsUHJvZ3Jlc3MgPSAocHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKSAvIChlbmRQcm9ncmVzcyAt IHN0YXJ0UHJvZ3Jlc3MpOworKyAgICBjb25zdCBxcmVhbCBsb2NhbFByb2dyZXNzID0KKysgICAg ICAgICAgICBxSXNOdWxsKHByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcykgPyAwLjAgLy8gYXZvaWQg MC8wIGJlbG93CisrICAgICAgICAgICAgLyogZWxzZSAqLyAgICAgICAgICAgICAgICAgICAgICAg IDogKHByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcykgLyAoZW5kUHJvZ3Jlc3MgLSBzdGFydFByb2dy ZXNzKTsKKyAKKyAgICAgUVZhcmlhbnQgcmV0ID0gcS0+aW50ZXJwb2xhdGVkKGN1cnJlbnRJbnRl cnZhbC5zdGFydC5zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj dXJyZW50SW50ZXJ2YWwuZW5kLnNlY29uZCwKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVs aWIvZ2xvYmFsL3FuYW1lc3BhY2UuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVz cGFjZS5oCitpbmRleCBhZDQxNTBiMzE3Li5iZjE5YjE2MjdiIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9jb3JlbGliL2dsb2JhbC9xbmFtZXNwYWNlLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxp Yi9nbG9iYWwvcW5hbWVzcGFjZS5oCitAQCAtMTg2NCw3ICsxODY0LDcgQEAgcHVibGljOgorICAg ICBRVF9RX0VOVU0oVGltZXJUeXBlKQorICAgICBRVF9RX0VOVU0oU2Nyb2xsUGhhc2UpCisgICAg IFFUX1FfRU5VTShNb3VzZUV2ZW50U291cmNlKQorLSAgICBRVF9RX0ZMQUcoTW91c2VFdmVudEZs YWcpCisrICAgIFFUX1FfRkxBRyhNb3VzZUV2ZW50RmxhZ3MpCisgICAgIFFUX1FfRU5VTShDaGVj a3N1bVR5cGUpCisgICAgIFFUX1FfRU5VTShIaWdoRHBpU2NhbGVGYWN0b3JSb3VuZGluZ1BvbGlj eSkKKyAgICAgUVRfUV9FTlVNKFRhYkZvY3VzQmVoYXZpb3IpCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9i YWwvcXJhbmRvbS5jcHAKK2luZGV4IDEwNjcyYzFmOTIuLjI1Zjg3YzdlNmEgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20uY3BwCisrKysgYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20uY3BwCitAQCAtMzgzLDcgKzM4Myw2IEBAIHN0cnVjdCBR UmFuZG9tR2VuZXJhdG9yOjpTeXN0ZW1BbmRHbG9iYWxHZW5lcmF0b3JzCisgCisgICAgICAgICBj b25zdGV4cHIgU3lzdGVtQW5kR2xvYmFsR2VuZXJhdG9ycyBnID0ge307CisgICAgICAgICBRX1VO VVNFRChnKTsKKy0gICAgICAgIFFfU1RBVElDX0FTU0VSVChzdGQ6OmlzX2xpdGVyYWxfdHlwZTxT eXN0ZW1BbmRHbG9iYWxHZW5lcmF0b3JzPjo6dmFsdWUpOworICNlbmRpZgorICAgICB9CisgCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FidWZmZXIuY3BwIGIvcXRiYXNlL3Ny Yy9jb3JlbGliL2lvL3FidWZmZXIuY3BwCitpbmRleCA1OTVmY2QyNzI0Li4wMzJjMGRkZDRiIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FidWZmZXIuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvaW8vcWJ1ZmZlci5jcHAKK0BAIC00MSw2ICs0MSw4IEBACisgI2luY2x1 ZGUgPFF0Q29yZS9xbWV0YW9iamVjdC5oPgorICNpbmNsdWRlICJwcml2YXRlL3Fpb2RldmljZV9w LmgiCisgCisrI2luY2x1ZGUgPGxpbWl0cz4KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyAv KiogUUJ1ZmZlclByaXZhdGUgKiovCitAQCAtMzY2LDcgKzM2OCw5IEBAIHFpbnQ2NCBRQnVmZmVy OjpzaXplKCkgY29uc3QKKyBib29sIFFCdWZmZXI6OnNlZWsocWludDY0IHBvcykKKyB7CisgICAg IFFfRChRQnVmZmVyKTsKKy0gICAgaWYgKHBvcyA+IGQtPmJ1Zi0+c2l6ZSgpICYmIGlzV3JpdGFi bGUoKSkgeworKyAgICBjb25zdCBhdXRvIG9sZEJ1ZlNpemUgPSBkLT5idWYtPnNpemUoKTsKKysg ICAgY29uc3RleHByIHFpbnQ2NCBNYXhTZWVrUG9zID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8ZGVj bHR5cGUob2xkQnVmU2l6ZSk+OjptYXgpKCk7CisrICAgIGlmIChwb3MgPD0gTWF4U2Vla1BvcyAm JiBwb3MgPiBvbGRCdWZTaXplICYmIGlzV3JpdGFibGUoKSkgeworICAgICAgICAgaWYgKHNlZWso ZC0+YnVmLT5zaXplKCkpKSB7CisgICAgICAgICAgICAgY29uc3QgcWludDY0IGdhcFNpemUgPSBw b3MgLSBkLT5idWYtPnNpemUoKTsKKyAgICAgICAgICAgICBpZiAod3JpdGUoUUJ5dGVBcnJheShn YXBTaXplLCAwKSkgIT0gZ2FwU2l6ZSkgeworQEAgLTM3Nyw3ICszODEsNyBAQCBib29sIFFCdWZm ZXI6OnNlZWsocWludDY0IHBvcykKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg ICB9CisgICAgIH0gZWxzZSBpZiAocG9zID4gZC0+YnVmLT5zaXplKCkgfHwgcG9zIDwgMCkgewor LSAgICAgICAgcVdhcm5pbmcoIlFCdWZmZXI6OnNlZWs6IEludmFsaWQgcG9zOiAlZCIsIGludChw b3MpKTsKKysgICAgICAgIHFXYXJuaW5nKCJRQnVmZmVyOjpzZWVrOiBJbnZhbGlkIHBvczogJWxs ZCIsIHBvcyk7CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKyAgICAgcmV0dXJuIFFJ T0RldmljZTo6c2Vlayhwb3MpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9x ZmlsZXN5c3RlbWVuZ2luZV93aW4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lz dGVtZW5naW5lX3dpbi5jcHAKK2luZGV4IDgxZDNhNzE5ODYuLmM4NmVkMWY5YjAgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW1lbmdpbmVfd2luLmNwcAorKysr IGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAKK0BAIC02 NjQsMTQgKzY2NCwxNCBAQCBRRmlsZVN5c3RlbUVudHJ5IFFGaWxlU3lzdGVtRW5naW5lOjphYnNv bHV0ZU5hbWUoY29uc3QgUUZpbGVTeXN0ZW1FbnRyeSAmZW50cnkpCisgICAgIHJldHVybiBRRmls ZVN5c3RlbUVudHJ5KHJldCwgUUZpbGVTeXN0ZW1FbnRyeTo6RnJvbUludGVybmFsUGF0aCgpKTsK KyB9CisgCistI2lmIGRlZmluZWQoUV9DQ19NSU5HVykgJiYgV0lOVkVSIDwgMHgwNjAyIC8vICBX aW5kb3dzIDggb253YXJkcworKyNpZiBkZWZpbmVkKFFfQ0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4 MDYwMiAmJiBfV0lOMzJfV0lOTlQgPCBfV0lOMzJfV0lOTlRfV0lOOCAvLyAgV2luZG93cyA4IG9u d2FyZHMKKyAKKyB0eXBlZGVmIHN0cnVjdCBfRklMRV9JRF9JTkZPIHsKKyAgICAgVUxPTkdMT05H IFZvbHVtZVNlcmlhbE51bWJlcjsKKyAgICAgRklMRV9JRF8xMjggRmlsZUlkOworIH0gRklMRV9J RF9JTkZPLCAqUEZJTEVfSURfSU5GTzsKKyAKKy0jZW5kaWYgLy8gaWYgZGVmaW5lZCAoUV9DQ19N SU5HVykgJiYgV0lOVkVSIDwgMHgwNjAyCisrI2VuZGlmIC8vIGlmIGRlZmluZWQoUV9DQ19NSU5H VykgJiYgV0lOVkVSIDwgMHgwNjAyICYmIF9XSU4zMl9XSU5OVCA8IF9XSU4zMl9XSU5OVF9XSU44 CisgCisgLy8gRmlsZSBJRCBmb3IgV2luZG93cyB1cCB0byB2ZXJzaW9uIDcgYW5kIEZBVDMyIGRy aXZlcworIHN0YXRpYyBpbmxpbmUgUUJ5dGVBcnJheSBmaWxlSWQoSEFORExFIGhhbmRsZSkKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3Rp ZnkuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5 LmNwcAoraW5kZXggOTRkOWQwNmJjYi4uMjdlMGIxM2IwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAKK0BAIC0zNjYs NyArMzY2LDkgQEAgdm9pZCBRSW5vdGlmeUZpbGVTeXN0ZW1XYXRjaGVyRW5naW5lOjpyZWFkRnJv bUlub3RpZnkoKQorICAgICAvLyBxRGVidWcoIlFJbm90aWZ5RmlsZVN5c3RlbVdhdGNoZXJFbmdp bmU6OnJlYWRGcm9tSW5vdGlmeSIpOworIAorICAgICBpbnQgYnVmZlNpemUgPSAwOworLSAgICBp b2N0bChpbm90aWZ5RmQsIEZJT05SRUFELCAoY2hhciAqKSAmYnVmZlNpemUpOworKyAgICBpZiAo aW9jdGwoaW5vdGlmeUZkLCBGSU9OUkVBRCwgKGNoYXIgKikgJmJ1ZmZTaXplKSA9PSAtMSB8fCBi dWZmU2l6ZSA9PSAwKQorKyAgICAgICAgcmV0dXJuOworKworICAgICBRVmFyTGVuZ3RoQXJyYXk8 Y2hhciwgNDA5Nj4gYnVmZmVyKGJ1ZmZTaXplKTsKKyAgICAgYnVmZlNpemUgPSByZWFkKGlub3Rp ZnlGZCwgYnVmZmVyLmRhdGEoKSwgYnVmZlNpemUpOworICAgICBjaGFyICphdCA9IGJ1ZmZlci5k YXRhKCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4u Y3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwCitpbmRleCAyNzdm OGQ0MjMwLi4zOGVjZWY1NTUwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fs b2NrZmlsZV93aW4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dp bi5jcHAKK0BAIC00OCw2ICs0OCw4IEBACisgI2luY2x1ZGUgIlF0Q29yZS9xZGVidWcuaCIKKyAj aW5jbHVkZSAiUXRDb3JlL3F0aHJlYWQuaCIKKyAKKysjaW5jbHVkZSAicHJpdmF0ZS9xc3lzdGVt bGlicmFyeV9wLmgiCisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgc3RhdGljIGlubGluZSBi b29sIGZpbGVFeGlzdHMoY29uc3Qgd2NoYXJfdCAqZmlsZU5hbWUpCitAQCAtMTUwLDcgKzE1Miw3 IEBAIFFTdHJpbmcgUUxvY2tGaWxlUHJpdmF0ZTo6cHJvY2Vzc05hbWVCeVBpZChxaW50NjQgcGlk KQorICNpZiAhZGVmaW5lZChRX09TX1dJTlJUKQorICAgICB0eXBlZGVmIERXT1JEIChXSU5BUEkg KkdldE1vZHVsZUZpbGVOYW1lRXhGdW5jKShIQU5ETEUsIEhNT0RVTEUsIExQVFNUUiwgRFdPUkQp OworIAorLSAgICBITU9EVUxFIGhQc2FwaSA9IExvYWRMaWJyYXJ5QSgicHNhcGkiKTsKKysgICAg SE1PRFVMRSBoUHNhcGkgPSBRU3lzdGVtTGlicmFyeTo6bG9hZChMInBzYXBpIik7CisgICAgIGlm ICghaFBzYXBpKQorICAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICAgR2V0TW9kdWxlRmls ZU5hbWVFeEZ1bmMgcUdldE1vZHVsZUZpbGVOYW1lRXggPSByZWludGVycHJldF9jYXN0PEdldE1v ZHVsZUZpbGVOYW1lRXhGdW5jPigKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8v cXByb2Nlc3NfdW5peC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5j cHAKK2luZGV4IDUwMzkwZTU3ZjUuLjE1YzhmMzA3NDUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9p by9xcHJvY2Vzc191bml4LmNwcAorQEAgLTEsNyArMSw3IEBACisgLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKyAqKgorICoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCistKiog Q29weXJpZ2h0IChDKSAyMDE2IEludGVsIENvcnBvcmF0aW9uLgorKyoqIENvcHlyaWdodCAoQykg MjAyMiBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9s aWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRDb3JlIG1vZHVs ZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC00MjIsMTQgKzQyMiwxNSBAQCB2b2lkIFFQcm9jZXNz UHJpdmF0ZTo6c3RhcnRQcm9jZXNzKCkKKyAgICAgLy8gQWRkIHRoZSBwcm9ncmFtIG5hbWUgdG8g dGhlIGFyZ3VtZW50IGxpc3QuCisgICAgIGFyZ3ZbMF0gPSBudWxscHRyOworICAgICBpZiAoIXBy b2dyYW0uY29udGFpbnMoUUxhdGluMUNoYXIoJy8nKSkpIHsKKysgICAgICAgIC8vIGZpbmRFeGVj dXRhYmxlKCkgcmV0dXJucyBpdHMgYXJndW1lbnQgaWYgaXQncyBhbiBhYnNvbHV0ZSBwYXRoLAor KyAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IHNlYXJjaGVzICRQQVRIOyByZXR1cm5zIGVtcHR5IGlm IG5vdCBmb3VuZCAod2UgaGFuZGxlCisrICAgICAgICAvLyB0aGF0IGNhc2UgbXVjaCBsYXRlcikK KyAgICAgICAgIGNvbnN0IFFTdHJpbmcgJmV4ZUZpbGVQYXRoID0gUVN0YW5kYXJkUGF0aHM6OmZp bmRFeGVjdXRhYmxlKHByb2dyYW0pOworLSAgICAgICAgaWYgKCFleGVGaWxlUGF0aC5pc0VtcHR5 KCkpIHsKKy0gICAgICAgICAgICBjb25zdCBRQnl0ZUFycmF5ICZ0bXAgPSBRRmlsZTo6ZW5jb2Rl TmFtZShleGVGaWxlUGF0aCk7CistICAgICAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKHRtcC5j b25zdERhdGEoKSk7CistICAgICAgICB9CistICAgIH0KKy0gICAgaWYgKCFhcmd2WzBdKQorKyAg ICAgICAgY29uc3QgUUJ5dGVBcnJheSAmdG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBh dGgpOworKyAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKHRtcC5jb25zdERhdGEoKSk7CisrICAg IH0gZWxzZSB7CisgICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAoZW5jb2RlZFByb2dyYW1OYW1l LmNvbnN0RGF0YSgpKTsKKysgICAgfQorIAorICAgICAvLyBBZGQgZXZlcnkgYXJndW1lbnQgdG8g dGhlIGxpc3QKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd1bWVudHMuY291bnQoKTsgKytp KQorQEAgLTk4MywxNSArOTg0LDE2IEBAIGJvb2wgUVByb2Nlc3NQcml2YXRlOjpzdGFydERldGFj aGVkKHFpbnQ2NCAqcGlkKQorICAgICAgICAgICAgICAgICBlbnZwID0gX3FfZHVwRW52aXJvbm1l bnQoZW52aXJvbm1lbnQuZC5jb25zdERhdGEoKS0+dmFycywgJmVudmMpOworICAgICAgICAgICAg IH0KKyAKKy0gICAgICAgICAgICBRQnl0ZUFycmF5IHRtcDsKKyAgICAgICAgICAgICBpZiAoIXBy b2dyYW0uY29udGFpbnMoUUxhdGluMUNoYXIoJy8nKSkpIHsKKysgICAgICAgICAgICAgICAgLy8g ZmluZEV4ZWN1dGFibGUoKSByZXR1cm5zIGl0cyBhcmd1bWVudCBpZiBpdCdzIGFuIGFic29sdXRl IHBhdGgsCisrICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBpdCBzZWFyY2hlcyAkUEFUSDsg cmV0dXJucyBlbXB0eSBpZiBub3QgZm91bmQgKHdlIGhhbmRsZQorKyAgICAgICAgICAgICAgICAv LyB0aGF0IGNhc2UgbXVjaCBsYXRlcikKKyAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAm ZXhlRmlsZVBhdGggPSBRU3RhbmRhcmRQYXRoczo6ZmluZEV4ZWN1dGFibGUocHJvZ3JhbSk7Cist ICAgICAgICAgICAgICAgIGlmICghZXhlRmlsZVBhdGguaXNFbXB0eSgpKQorLSAgICAgICAgICAg ICAgICAgICAgdG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgpOworKyAgICAgICAg ICAgICAgICBjb25zdCBRQnl0ZUFycmF5ICZ0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxl UGF0aCk7CisrICAgICAgICAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAuY29uc3REYXRh KCkpOworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIGFyZ3ZbMF0gPSA6 OnN0cmR1cChRRmlsZTo6ZW5jb2RlTmFtZShwcm9ncmFtKSk7CisgICAgICAgICAgICAgfQorLSAg ICAgICAgICAgIGlmICh0bXAuaXNFbXB0eSgpKQorLSAgICAgICAgICAgICAgICB0bXAgPSBRRmls ZTo6ZW5jb2RlTmFtZShwcm9ncmFtKTsKKy0gICAgICAgICAgICBhcmd2WzBdID0gdG1wLmRhdGEo KTsKKyAKKyAgICAgICAgICAgICBpZiAoZW52cCkKKyAgICAgICAgICAgICAgICAgcXRfc2FmZV9l eGVjdmUoYXJndlswXSwgYXJndiwgZW52cCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3Jl bGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRlbW1vZGVsLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxp Yi9pdGVtbW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAKK2luZGV4IDNhNzljNTAyYWYuLjk5 N2E2MzRlNzYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJz dHJhY3RpdGVtbW9kZWwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9x YWJzdHJhY3RpdGVtbW9kZWwuY3BwCitAQCAtMzE5Niw5ICszMTk2LDggQEAgYm9vbCBRQWJzdHJh Y3RJdGVtTW9kZWw6OmJlZ2luTW92ZUNvbHVtbnMoY29uc3QgUU1vZGVsSW5kZXggJnNvdXJjZVBh cmVudCwgaW50IHMKKyAgICAgZGVzdGluYXRpb25DaGFuZ2UubmVlZHNBZGp1c3QgPSBkZXN0aW5h dGlvblBhcmVudC5pc1ZhbGlkKCkgJiYgZGVzdGluYXRpb25QYXJlbnQucm93KCkgPj0gc291cmNl TGFzdCAmJiBkZXN0aW5hdGlvblBhcmVudC5wYXJlbnQoKSA9PSBzb3VyY2VQYXJlbnQ7CisgICAg IGQtPmNoYW5nZXMucHVzaChkZXN0aW5hdGlvbkNoYW5nZSk7CisgCistICAgIGQtPml0ZW1zQWJv dXRUb0JlTW92ZWQoc291cmNlUGFyZW50LCBzb3VyY2VGaXJzdCwgc291cmNlTGFzdCwgZGVzdGlu YXRpb25QYXJlbnQsIGRlc3RpbmF0aW9uQ2hpbGQsIFF0OjpIb3Jpem9udGFsKTsKKy0KKyAgICAg ZW1pdCBjb2x1bW5zQWJvdXRUb0JlTW92ZWQoc291cmNlUGFyZW50LCBzb3VyY2VGaXJzdCwgc291 cmNlTGFzdCwgZGVzdGluYXRpb25QYXJlbnQsIGRlc3RpbmF0aW9uQ2hpbGQsIFFQcml2YXRlU2ln bmFsKCkpOworKyAgICBkLT5pdGVtc0Fib3V0VG9CZU1vdmVkKHNvdXJjZVBhcmVudCwgc291cmNl Rmlyc3QsIHNvdXJjZUxhc3QsIGRlc3RpbmF0aW9uUGFyZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBR dDo6SG9yaXpvbnRhbCk7CisgICAgIHJldHVybiB0cnVlOworIH0KKyAKK0BAIC0zMjMxLDcgKzMy MzAsNiBAQCB2b2lkIFFBYnN0cmFjdEl0ZW1Nb2RlbDo6ZW5kTW92ZUNvbHVtbnMoKQorICAgICAg IGFkanVzdGVkU291cmNlID0gY3JlYXRlSW5kZXgoYWRqdXN0ZWRTb3VyY2Uucm93KCksIGFkanVz dGVkU291cmNlLmNvbHVtbigpICsgbnVtTW92ZWQsIGFkanVzdGVkU291cmNlLmludGVybmFsUG9p bnRlcigpKTsKKyAKKyAgICAgZC0+aXRlbXNNb3ZlZChhZGp1c3RlZFNvdXJjZSwgcmVtb3ZlQ2hh bmdlLmZpcnN0LCByZW1vdmVDaGFuZ2UubGFzdCwgYWRqdXN0ZWREZXN0aW5hdGlvbiwgaW5zZXJ0 Q2hhbmdlLmZpcnN0LCBRdDo6SG9yaXpvbnRhbCk7CistCisgICAgIGVtaXQgY29sdW1uc01vdmVk KGFkanVzdGVkU291cmNlLCByZW1vdmVDaGFuZ2UuZmlyc3QsIHJlbW92ZUNoYW5nZS5sYXN0LCBh ZGp1c3RlZERlc3RpbmF0aW9uLCBpbnNlcnRDaGFuZ2UuZmlyc3QsIFFQcml2YXRlU2lnbmFsKCkp OworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29y dGZpbHRlcnByb3h5bW9kZWwuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNv cnRmaWx0ZXJwcm94eW1vZGVsLmNwcAoraW5kZXggZGM2Mzc5ZDlmYi4uYzVlMjg3ZWU4NCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHlt b2RlbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVy cHJveHltb2RlbC5jcHAKK0BAIC05MzksOCArOTM5LDkgQEAgdm9pZCBRU29ydEZpbHRlclByb3h5 TW9kZWxQcml2YXRlOjppbnNlcnRfc291cmNlX2l0ZW1zKAorICAgICAgICAgICAgICAgICBxLT5i ZWdpbkluc2VydENvbHVtbnMocHJveHlfcGFyZW50LCBwcm94eV9zdGFydCwgcHJveHlfZW5kKTsK KyAgICAgICAgIH0KKyAKKy0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc291cmNlX2l0ZW1z LnNpemUoKTsgKytpKQorLSAgICAgICAgICAgIHByb3h5X3RvX3NvdXJjZS5pbnNlcnQocHJveHlf c3RhcnQgKyBpLCBzb3VyY2VfaXRlbXMuYXQoaSkpOworKyAgICAgICAgLy8gVE9ETzogdXNlIHRo ZSByYW5nZSBRTGlzdDo6aW5zZXJ0KCkgb3ZlcmxvYWQgb25jZSBpdCBpcyBpbXBsZW1lbnRlZCAo UVRCVUctNTg2MzMpLgorKyAgICAgICAgcHJveHlfdG9fc291cmNlLmluc2VydChwcm94eV9zdGFy dCwgc291cmNlX2l0ZW1zLnNpemUoKSwgMCk7CisrICAgICAgICBzdGQ6OmNvcHkoc291cmNlX2l0 ZW1zLmNiZWdpbigpLCBzb3VyY2VfaXRlbXMuY2VuZCgpLCBwcm94eV90b19zb3VyY2UuYmVnaW4o KSArIHByb3h5X3N0YXJ0KTsKKyAKKyAgICAgICAgIGJ1aWxkX3NvdXJjZV90b19wcm94eV9tYXBw aW5nKHByb3h5X3RvX3NvdXJjZSwgc291cmNlX3RvX3Byb3h5KTsKKyAKK0BAIC0zMTIzLDggKzMx MjQsOSBAQCBib29sIFFTb3J0RmlsdGVyUHJveHlNb2RlbDo6ZmlsdGVyQWNjZXB0c1JvdyhpbnQg c291cmNlX3JvdywgY29uc3QgUU1vZGVsSW5kZXggJgorIAorICAgICBpZiAoZC0+ZmlsdGVyX2Rh dGEuaXNFbXB0eSgpKQorICAgICAgICAgcmV0dXJuIHRydWU7CisrCisrICAgIGludCBjb2x1bW5f Y291bnQgPSBkLT5tb2RlbC0+Y29sdW1uQ291bnQoc291cmNlX3BhcmVudCk7CisgICAgIGlmIChk LT5maWx0ZXJfY29sdW1uID09IC0xKSB7CistICAgICAgICBpbnQgY29sdW1uX2NvdW50ID0gZC0+ bW9kZWwtPmNvbHVtbkNvdW50KHNvdXJjZV9wYXJlbnQpOworICAgICAgICAgZm9yIChpbnQgY29s dW1uID0gMDsgY29sdW1uIDwgY29sdW1uX2NvdW50OyArK2NvbHVtbikgeworICAgICAgICAgICAg IFFNb2RlbEluZGV4IHNvdXJjZV9pbmRleCA9IGQtPm1vZGVsLT5pbmRleChzb3VyY2Vfcm93LCBj b2x1bW4sIHNvdXJjZV9wYXJlbnQpOworICAgICAgICAgICAgIFFTdHJpbmcga2V5ID0gZC0+bW9k ZWwtPmRhdGEoc291cmNlX2luZGV4LCBkLT5maWx0ZXJfcm9sZSkudG9TdHJpbmcoKTsKK0BAIC0z MTMzLDkgKzMxMzUsMTAgQEAgYm9vbCBRU29ydEZpbHRlclByb3h5TW9kZWw6OmZpbHRlckFjY2Vw dHNSb3coaW50IHNvdXJjZV9yb3csIGNvbnN0IFFNb2RlbEluZGV4ICYKKyAgICAgICAgIH0KKyAg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorLSAgICBRTW9kZWxJbmRleCBzb3VyY2VfaW5k ZXggPSBkLT5tb2RlbC0+aW5kZXgoc291cmNlX3JvdywgZC0+ZmlsdGVyX2NvbHVtbiwgc291cmNl X3BhcmVudCk7CistICAgIGlmICghc291cmNlX2luZGV4LmlzVmFsaWQoKSkgLy8gdGhlIGNvbHVt biBtYXkgbm90IGV4aXN0CisrCisrICAgIGlmIChkLT5maWx0ZXJfY29sdW1uID49IGNvbHVtbl9j b3VudCkgLy8gdGhlIGNvbHVtbiBtYXkgbm90IGV4aXN0CisgICAgICAgICByZXR1cm4gdHJ1ZTsK KysgICAgUU1vZGVsSW5kZXggc291cmNlX2luZGV4ID0gZC0+bW9kZWwtPmluZGV4KHNvdXJjZV9y b3csIGQtPmZpbHRlcl9jb2x1bW4sIHNvdXJjZV9wYXJlbnQpOworICAgICBRU3RyaW5nIGtleSA9 IGQtPm1vZGVsLT5kYXRhKHNvdXJjZV9pbmRleCwgZC0+ZmlsdGVyX3JvbGUpLnRvU3RyaW5nKCk7 CisgICAgIHJldHVybiBkLT5maWx0ZXJfZGF0YS5oYXNNYXRjaChrZXkpOworIH0KK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwIGIvcXRi YXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcAoraW5kZXggY2EyODY0 ZGY4My4uMTMyYjJlYWU1MiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwv cWNvcmVhcHBsaWNhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNv cmVhcHBsaWNhdGlvbi5jcHAKK0BAIC0xMTU3LDcgKzExNTcsNyBAQCBzdGF0aWMgYm9vbCBkb05v dGlmeShRT2JqZWN0ICpyZWNlaXZlciwgUUV2ZW50ICpldmVudCkKKyBib29sIFFDb3JlQXBwbGlj YXRpb25Qcml2YXRlOjpzZW5kVGhyb3VnaEFwcGxpY2F0aW9uRXZlbnRGaWx0ZXJzKFFPYmplY3Qg KnJlY2VpdmVyLCBRRXZlbnQgKmV2ZW50KQorIHsKKyAgICAgLy8gV2UgY2FuJ3QgYWNjZXNzIHRo ZSBhcHBsaWNhdGlvbiBldmVudCBmaWx0ZXJzIG91dHNpZGUgb2YgdGhlIG1haW4gdGhyZWFkIChy YWNlIGNvbmRpdGlvbnMpCistICAgIFFfQVNTRVJUKHJlY2VpdmVyLT5kX2Z1bmMoKS0+dGhyZWFk RGF0YS5sb2FkUmVsYXhlZCgpLT50aHJlYWQubG9hZEFjcXVpcmUoKSA9PSBtYWluVGhyZWFkKCkp OworKyAgICBRX0FTU0VSVChyZWNlaXZlci0+ZF9mdW5jKCktPnRocmVhZERhdGEubG9hZEFjcXVp cmUoKS0+dGhyZWFkLmxvYWRSZWxheGVkKCkgPT0gbWFpblRocmVhZCgpKTsKKyAKKyAgICAgaWYg KGV4dHJhRGF0YSkgeworICAgICAgICAgLy8gYXBwbGljYXRpb24gZXZlbnQgZmlsdGVycyBhcmUg b25seSBjYWxsZWQgZm9yIG9iamVjdHMgaW4gdGhlIEdVSSB0aHJlYWQKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3QuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGli L2tlcm5lbC9xb2JqZWN0LmNwcAoraW5kZXggMWViNzkxMzhkOS4uMzZjZDc4MGVlMSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdC5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdC5jcHAKK0BAIC0xMDEwLDcgKzEwMTAsNyBAQCBR T2JqZWN0Ojp+UU9iamVjdCgpCisgICAgICAgICBlbWl0IGRlc3Ryb3llZCh0aGlzKTsKKyAgICAg fQorIAorLSAgICBpZiAoZC0+ZGVjbGFyYXRpdmVEYXRhKSB7CisrICAgIGlmICghZC0+aXNEZWxl dGluZ0NoaWxkcmVuICYmIGQtPmRlY2xhcmF0aXZlRGF0YSkgeworICAgICAgICAgaWYgKHN0YXRp Y19jYXN0PFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YUltcGwqPihkLT5kZWNsYXJhdGl2ZURhdGEp LT5vd25lZEJ5UW1sMSkgeworICAgICAgICAgICAgIGlmIChRQWJzdHJhY3REZWNsYXJhdGl2ZURh dGE6OmRlc3Ryb3llZF9xbWwxKQorICAgICAgICAgICAgICAgICBRQWJzdHJhY3REZWNsYXJhdGl2 ZURhdGE6OmRlc3Ryb3llZF9xbWwxKGQtPmRlY2xhcmF0aXZlRGF0YSwgdGhpcyk7CitAQCAtMTU4 MCw3ICsxNTgwLDcgQEAgdm9pZCBRT2JqZWN0Ojptb3ZlVG9UaHJlYWQoUVRocmVhZCAqdGFyZ2V0 VGhyZWFkKQorIAorICAgICBRVGhyZWFkRGF0YSAqY3VycmVudERhdGEgPSBRVGhyZWFkRGF0YTo6 Y3VycmVudCgpOworICAgICBRVGhyZWFkRGF0YSAqdGFyZ2V0RGF0YSA9IHRhcmdldFRocmVhZCA/ IFFUaHJlYWREYXRhOjpnZXQyKHRhcmdldFRocmVhZCkgOiBudWxscHRyOworLSAgICBRVGhyZWFk RGF0YSAqdGhpc1RocmVhZERhdGEgPSBkLT50aHJlYWREYXRhLmxvYWRSZWxheGVkKCk7CisrICAg IFFUaHJlYWREYXRhICp0aGlzVGhyZWFkRGF0YSA9IGQtPnRocmVhZERhdGEubG9hZEFjcXVpcmUo KTsKKyAgICAgaWYgKCF0aGlzVGhyZWFkRGF0YS0+dGhyZWFkLmxvYWRBY3F1aXJlKCkgJiYgY3Vy cmVudERhdGEgPT0gdGFyZ2V0RGF0YSkgeworICAgICAgICAgLy8gb25lIGV4Y2VwdGlvbiB0byB0 aGUgcnVsZTogd2UgYWxsb3cgbW92aW5nIG9iamVjdHMgd2l0aCBubyB0aHJlYWQgYWZmaW5pdHkg dG8gdGhlIGN1cnJlbnQgdGhyZWFkCisgICAgICAgICBjdXJyZW50RGF0YSA9IGQtPnRocmVhZERh dGE7CitAQCAtMjYyMCw3ICsyNjIwLDcgQEAgaW50IFFPYmplY3Q6OnJlY2VpdmVycyhjb25zdCBj aGFyICpzaWduYWwpIGNvbnN0CisgICAgICAgICBpZiAoIWQtPmlzU2lnbmFsQ29ubmVjdGVkKHNp Z25hbF9pbmRleCkpCisgICAgICAgICAgICAgcmV0dXJuIHJlY2VpdmVyczsKKyAKKy0gICAgICAg IGlmIChkLT5kZWNsYXJhdGl2ZURhdGEgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNl aXZlcnMpIHsKKysgICAgICAgIGlmICghZC0+aXNEZWxldGluZ0NoaWxkcmVuICYmIGQtPmRlY2xh cmF0aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycykgeworICAg ICAgICAgICAgIHJlY2VpdmVycyArPSBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVy cyhkLT5kZWNsYXJhdGl2ZURhdGEsIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbF9pbmRleCk7CisgICAgICAg ICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaCBi L3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdF9wLmgKK2luZGV4IDBiODI3YTUyY2Eu LjEzZmZiODg5OTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmpl Y3RfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCitAQCAt NDQ0LDcgKzQ0NCw3IEBAIGlubGluZSB2b2lkIFFPYmplY3RQcml2YXRlOjpjaGVja0ZvckluY29t cGF0aWJsZUxpYnJhcnlWZXJzaW9uKGludCB2ZXJzaW9uKSBjb25zCisgCisgaW5saW5lIGJvb2wg UU9iamVjdFByaXZhdGU6OmlzRGVjbGFyYXRpdmVTaWduYWxDb25uZWN0ZWQodWludCBzaWduYWxf aW5kZXgpIGNvbnN0CisgeworLSAgICByZXR1cm4gZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFj dERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0ZWQKKysgICAgcmV0dXJuICFpc0RlbGV0 aW5nQ2hpbGRyZW4gJiYgZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0 YTo6aXNTaWduYWxDb25uZWN0ZWQKKyAgICAgICAgICAgICAmJiBRQWJzdHJhY3REZWNsYXJhdGl2 ZURhdGE6OmlzU2lnbmFsQ29ubmVjdGVkKGRlY2xhcmF0aXZlRGF0YSwgcV9mdW5jKCksIHNpZ25h bF9pbmRleCk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwv cXRyYW5zbGF0b3IuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5j cHAKK2luZGV4IDI4MTJmZmI3ZWEuLmJjMDE3N2M1ZWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIva2VybmVsL3F0cmFuc2xhdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGli L2tlcm5lbC9xdHJhbnNsYXRvci5jcHAKK0BAIC05MDIsNyArOTAyLDcgQEAgc3RhdGljIFFTdHJp bmcgZ2V0TWVzc2FnZShjb25zdCB1Y2hhciAqbSwgY29uc3QgdWNoYXIgKmVuZCwgY29uc3QgY2hh ciAqY29udGV4dCwKKyAgICAgICAgICAgICBnb3RvIGVuZDsKKyAgICAgICAgIGNhc2UgVGFnX1Ry YW5zbGF0aW9uOiB7CisgICAgICAgICAgICAgaW50IGxlbiA9IHJlYWQzMihtKTsKKy0gICAgICAg ICAgICBpZiAobGVuICUgMSkKKysgICAgICAgICAgICBpZiAobGVuICYgMSkKKyAgICAgICAgICAg ICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICAgICAgICAgICBtICs9IDQ7CisgICAgICAgICAg ICAgaWYgKCFudW1lcnVzLS0pIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWlt ZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9x bWltZWRhdGFiYXNlLmNwcAoraW5kZXggOWRlMjJjZWYzMy4uZmY4NjhhMzI2OCAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAKKysrKyBi L3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAKK0BAIC0zODks MjAgKzM4OSwyMyBAQCBRTWltZVR5cGUgUU1pbWVEYXRhYmFzZVByaXZhdGU6Om1pbWVUeXBlRm9y RmlsZU5hbWVBbmREYXRhKGNvbnN0IFFTdHJpbmcgJmZpbGVOYQorICAgICAgICAgLy8gRGlzYW1i aWd1YXRlIGNvbmZsaWN0aW5nIGV4dGVuc2lvbnMgKGlmIG1hZ2ljIG1hdGNoaW5nIGZvdW5kIHNv bWV0aGluZykKKyAgICAgICAgIGlmIChjYW5kaWRhdGVCeURhdGEuaXNWYWxpZCgpICYmIG1hZ2lj QWNjdXJhY3kgPiAwKSB7CisgICAgICAgICAgICAgY29uc3QgUVN0cmluZyBzbmlmZmVkTWltZSA9 IGNhbmRpZGF0ZUJ5RGF0YS5uYW1lKCk7CistICAgICAgICAgICAgLy8gSWYgdGhlIHNuaWZmZWRN aW1lIG1hdGNoZXMgYSBnbG9iIG1hdGNoLCB1c2UgaXQKKysgICAgICAgICAgICAvLyBJZiB0aGUg c25pZmZlZE1pbWUgbWF0Y2hlcyBhIGhpZ2hlc3Qtd2VpZ2h0IGdsb2IgbWF0Y2gsIHVzZSBpdAor ICAgICAgICAgICAgIGlmIChjYW5kaWRhdGVzQnlOYW1lLm1fbWF0Y2hpbmdNaW1lVHlwZXMuY29u dGFpbnMoc25pZmZlZE1pbWUpKSB7CisgICAgICAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IDEw MDsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKyAgICAgICAgICAg ICB9CistICAgICAgICAgICAgZm9yIChjb25zdCBRU3RyaW5nICZtIDogcUFzQ29uc3QoY2FuZGlk YXRlc0J5TmFtZS5tX21hdGNoaW5nTWltZVR5cGVzKSkgeworKyAgICAgICAgICAgIGZvciAoY29u c3QgUVN0cmluZyAmbSA6IHFBc0NvbnN0KGNhbmRpZGF0ZXNCeU5hbWUubV9hbGxNYXRjaGluZ01p bWVUeXBlcykpIHsKKyAgICAgICAgICAgICAgICAgaWYgKGluaGVyaXRzKG0sIHNuaWZmZWRNaW1l KSkgeworICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBtYWdpYyArIHBhdHRlcm4gcG9p bnRpbmcgdG8gdGhpcywgc28gaXQncyBhIHByZXR0eSBnb29kIG1hdGNoCisgICAgICAgICAgICAg ICAgICAgICAqYWNjdXJhY3lQdHIgPSAxMDA7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4g bWltZVR5cGVGb3JOYW1lKG0pOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQor LSAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IG1hZ2ljQWNjdXJhY3k7CistICAgICAgICAgICAg cmV0dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKysgICAgICAgICAgICBpZiAoY2FuZGlkYXRlc0J5TmFt ZS5tX2FsbE1hdGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkgeworKyAgICAgICAgICAgICAgICAv LyBObyBnbG9iLCB1c2UgbWFnaWMKKysgICAgICAgICAgICAgICAgKmFjY3VyYWN5UHRyID0gbWFn aWNBY2N1cmFjeTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKysg ICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBhdHRlcm4uY3BwIGIvcXRiYXNlL3NyYy9j b3JlbGliL21pbWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcAoraW5kZXggYTgxMTEyZDIyNy4u ZmE4ZjRjNTQ1ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1p bWVnbG9icGF0dGVybi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1p bWVnbG9icGF0dGVybi5jcHAKK0BAIC04Myw3ICs4MywxMCBAQCB2b2lkIFFNaW1lR2xvYk1hdGNo UmVzdWx0OjphZGRNYXRjaChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSwgaW50IHdlaWdodCwgY29u c3QgUQorICAgICB9CisgICAgIGlmICghbV9tYXRjaGluZ01pbWVUeXBlcy5jb250YWlucyhtaW1l VHlwZSkpIHsKKyAgICAgICAgIG1fbWF0Y2hpbmdNaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsK Ky0gICAgICAgIG1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKysgICAg ICAgIGlmIChyZXBsYWNlKQorKyAgICAgICAgICAgIG1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMucHJl cGVuZChtaW1lVHlwZSk7IC8vIGhpZ2hlc3Qtd2VpZ2h0IGZpcnN0CisrICAgICAgICBlbHNlCisr ICAgICAgICAgICAgbV9hbGxNYXRjaGluZ01pbWVUeXBlcy5hcHBlbmQobWltZVR5cGUpOworICAg ICAgICAgbV9rbm93blN1ZmZpeExlbmd0aCA9IGtub3duU3VmZml4TGVuZ3RoOworICAgICB9Cisg fQorQEAgLTk0LDcgKzk3LDcgQEAgUU1pbWVHbG9iUGF0dGVybjo6UGF0dGVyblR5cGUgUU1pbWVH bG9iUGF0dGVybjo6ZGV0ZWN0UGF0dGVyblR5cGUoY29uc3QgUVN0cmluZworICAgICBpZiAoIXBh dHRlcm5MZW5ndGgpCisgICAgICAgICByZXR1cm4gT3RoZXJQYXR0ZXJuOworIAorLSAgICBjb25z dCBib29sIHN0YXJDb3VudCA9IHBhdHRlcm4uY291bnQoUUxhdGluMUNoYXIoJyonKSkgPT0gMTsK KysgICAgY29uc3QgaW50IHN0YXJDb3VudCA9IHBhdHRlcm4uY291bnQoUUxhdGluMUNoYXIoJyon KSk7CisgICAgIGNvbnN0IGJvb2wgaGFzU3F1YXJlQnJhY2tldCA9IHBhdHRlcm4uaW5kZXhPZihR TGF0aW4xQ2hhcignWycpKSAhPSAtMTsKKyAgICAgY29uc3QgYm9vbCBoYXNRdWVzdGlvbk1hcmsg PSBwYXR0ZXJuLmluZGV4T2YoUUxhdGluMUNoYXIoJz8nKSkgIT0gLTE7CisgCitAQCAtMTA2LDEw ICsxMDksMTAgQEAgUU1pbWVHbG9iUGF0dGVybjo6UGF0dGVyblR5cGUgUU1pbWVHbG9iUGF0dGVy bjo6ZGV0ZWN0UGF0dGVyblR5cGUoY29uc3QgUVN0cmluZworICAgICAgICAgICAgIC8vIFBhdHRl cm5zIGxpa2UgIlJFQURNRSoiICh3ZWxsIHRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5IG9uZSBs aWtlIHRoYXQuLi4pCisgICAgICAgICAgICAgaWYgKHBhdHRlcm4uYXQocGF0dGVybkxlbmd0aCAt IDEpID09IFFMYXRpbjFDaGFyKCcqJykpCisgICAgICAgICAgICAgICAgIHJldHVybiBQcmVmaXhQ YXR0ZXJuOworLSAgICAgICAgfQorLSAgICAgICAgLy8gTmFtZXMgd2l0aG91dCBhbnkgd2lsZGNh cmRzIGxpa2UgIlJFQURNRSIKKy0gICAgICAgIGlmIChzdGFyQ291bnQgPT0gMCkKKysgICAgICAg IH0gZWxzZSBpZiAoc3RhckNvdW50ID09IDApIHsKKysgICAgICAgICAgICAvLyBOYW1lcyB3aXRo b3V0IGFueSB3aWxkY2FyZHMgbGlrZSAiUkVBRE1FIgorICAgICAgICAgICAgIHJldHVybiBMaXRl cmFsUGF0dGVybjsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICBpZiAocGF0dGVybiA9PSBR TGF0aW4xU3RyaW5nKCJbMC05XVswLTldWzAtOV0udmRyIikpCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3ZpZGVyLmNwcCBiL3F0YmFzZS9zcmMvY29y ZWxpYi9taW1ldHlwZXMvcW1pbWVwcm92aWRlci5jcHAKK2luZGV4IDI1OGRkZGY4Y2IuLjQ2NDJk MGYyZDAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJv dmlkZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlk ZXIuY3BwCitAQCAtMjQ0LDE1ICsyNDQsMTggQEAgdm9pZCBRTWltZUJpbmFyeVByb3ZpZGVyOjph ZGRGaWxlTmFtZU1hdGNoZXMoY29uc3QgUVN0cmluZyAmZmlsZU5hbWUsIFFNaW1lR2xvYk0KKyAg ICAgY29uc3QgUVN0cmluZyBsb3dlckZpbGVOYW1lID0gZmlsZU5hbWUudG9Mb3dlcigpOworICAg ICAvLyBDaGVjayBsaXRlcmFscyAoZS5nLiAiTWFrZWZpbGUiKQorICAgICBtYXRjaEdsb2JMaXN0 KHJlc3VsdCwgbV9jYWNoZUZpbGUsIG1fY2FjaGVGaWxlLT5nZXRVaW50MzIoUG9zTGl0ZXJhbExp c3RPZmZzZXQpLCBmaWxlTmFtZSk7CistICAgIC8vIENoZWNrIGNvbXBsZXggZ2xvYnMgKGUuZy4g ImNhbGxncmluZC5vdXRbMC05XSoiKQorLSAgICBtYXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNo ZUZpbGUsIG1fY2FjaGVGaWxlLT5nZXRVaW50MzIoUG9zR2xvYkxpc3RPZmZzZXQpLCBmaWxlTmFt ZSk7CisgICAgIC8vIENoZWNrIHRoZSB2ZXJ5IGNvbW1vbiAqLnR4dCBjYXNlcyB3aXRoIHRoZSBz dWZmaXggdHJlZQorLSAgICBjb25zdCBpbnQgcmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgPSBtX2Nh Y2hlRmlsZS0+Z2V0VWludDMyKFBvc1JldmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKy0gICAgY29u c3QgaW50IG51bVJvb3RzID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJl ZU9mZnNldCk7CistICAgIGNvbnN0IGludCBmaXJzdFJvb3RPZmZzZXQgPSBtX2NhY2hlRmlsZS0+ Z2V0VWludDMyKHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0ICsgNCk7CistICAgIG1hdGNoU3VmZml4 VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RSb290T2Zmc2V0LCBsb3dl ckZpbGVOYW1lLCBsb3dlckZpbGVOYW1lLmxlbmd0aCgpIC0gMSwgZmFsc2UpOworKyAgICBpZiAo cmVzdWx0Lm1fbWF0Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKSB7CisrICAgICAgICBjb25zdCBp bnQgcmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc1Jl dmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKysgICAgICAgIGNvbnN0IGludCBudW1Sb290cyA9IG1f Y2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQpOworKyAgICAgICAg Y29uc3QgaW50IGZpcnN0Um9vdE9mZnNldCA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJz ZVN1ZmZpeFRyZWVPZmZzZXQgKyA0KTsKKysgICAgICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQs IG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RSb290T2Zmc2V0LCBsb3dlckZpbGVOYW1lLCBs b3dlckZpbGVOYW1lLmxlbmd0aCgpIC0gMSwgZmFsc2UpOworKyAgICAgICAgaWYgKHJlc3VsdC5t X21hdGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkKKysgICAgICAgICAgICBtYXRjaFN1ZmZpeFRy ZWUocmVzdWx0LCBtX2NhY2hlRmlsZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgZmlsZU5h bWUsIGZpbGVOYW1lLmxlbmd0aCgpIC0gMSwgdHJ1ZSk7CisrICAgIH0KKysgICAgLy8gQ2hlY2sg Y29tcGxleCBnbG9icyAoZS5nLiAiY2FsbGdyaW5kLm91dFswLTldKiIgb3IgIlJFQURNRSoiKQor ICAgICBpZiAocmVzdWx0Lm1fbWF0Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKQorLSAgICAgICAg bWF0Y2hTdWZmaXhUcmVlKHJlc3VsdCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RP ZmZzZXQsIGZpbGVOYW1lLCBmaWxlTmFtZS5sZW5ndGgoKSAtIDEsIHRydWUpOworKyAgICAgICAg bWF0Y2hHbG9iTGlzdChyZXN1bHQsIG1fY2FjaGVGaWxlLCBtX2NhY2hlRmlsZS0+Z2V0VWludDMy KFBvc0dsb2JMaXN0T2Zmc2V0KSwgZmlsZU5hbWUpOworIH0KKyAKKyB2b2lkIFFNaW1lQmluYXJ5 UHJvdmlkZXI6Om1hdGNoR2xvYkxpc3QoUU1pbWVHbG9iTWF0Y2hSZXN1bHQgJnJlc3VsdCwgQ2Fj aGVGaWxlICpjYWNoZUZpbGUsIGludCBvZmYsIGNvbnN0IFFTdHJpbmcgJmZpbGVOYW1lKQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNw cCBiL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcAoraW5k ZXggMTdlNmYxMTFhYi4uMmU0MGI2YzhmYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxp Yi9zZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGli L3NlcmlhbGl6YXRpb24vcWpzb25wYXJzZXIuY3BwCitAQCAtMzc5LDEwICszNzksMzAgQEAgZXJy b3I6CisgICAgIHJldHVybiBRQ2JvclZhbHVlKCk7CisgfQorIAorKy8vIFdlIG5lZWQgdG8gcmV0 YWluIHRoZSBfbGFzdF8gdmFsdWUgZm9yIGFueSBkdXBsaWNhdGUga2V5cyBhbmQgd2UgbmVlZCB0 byBkZXJlZiBjb250YWluZXJzLgorKy8vIFRoZXJlZm9yZSB0aGUgbWFudWFsIGltcGxlbWVudGF0 aW9uIG9mIHN0ZDo6dW5pcXVlKCkuCisrdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVu YW1lIENvbXBhcmUsIHR5cGVuYW1lIEFzc2lnbj4KKytzdGF0aWMgSXRlcmF0b3IgY3VzdG9tQXNz aWduaW5nVW5pcXVlTGFzdChJdGVyYXRvciBmaXJzdCwgSXRlcmF0b3IgbGFzdCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wYXJlIGNvbXBhcmUsIEFzc2ln biBhc3NpZ24pCisreworKyAgICBmaXJzdCA9IHN0ZDo6YWRqYWNlbnRfZmluZChmaXJzdCwgbGFz dCwgY29tcGFyZSk7CisrICAgIGlmIChmaXJzdCA9PSBsYXN0KQorKyAgICAgICAgcmV0dXJuIGxh c3Q7CisrCisrICAgIEl0ZXJhdG9yIHJlc3VsdCA9IGZpcnN0OworKyAgICB3aGlsZSAoKytmaXJz dCAhPSBsYXN0KSB7CisrICAgICAgICBpZiAoIWNvbXBhcmUoKnJlc3VsdCwgKmZpcnN0KSkKKysg ICAgICAgICAgICArK3Jlc3VsdDsKKysgICAgICAgIGlmIChyZXN1bHQgIT0gZmlyc3QpCisrICAg ICAgICAgICAgYXNzaWduKCpyZXN1bHQsICpmaXJzdCk7CisrICAgIH0KKysKKysgICAgcmV0dXJu ICsrcmVzdWx0OworK30KKysKKyBzdGF0aWMgdm9pZCBzb3J0Q29udGFpbmVyKFFDYm9yQ29udGFp bmVyUHJpdmF0ZSAqY29udGFpbmVyKQorIHsKKyAgICAgdXNpbmcgRm9yd2FyZCA9IFFKc29uUHJp dmF0ZTo6S2V5SXRlcmF0b3I7CistICAgIHVzaW5nIFJldmVyc2UgPSBzdGQ6OnJldmVyc2VfaXRl cmF0b3I8Rm9yd2FyZD47CisgICAgIHVzaW5nIFZhbHVlID0gRm9yd2FyZDo6dmFsdWVfdHlwZTsK KyAKKyAgICAgYXV0byBjb21wYXJlID0gW2NvbnRhaW5lcl0oY29uc3QgVmFsdWUgJmEsIGNvbnN0 IFZhbHVlICZiKQorQEAgLTQyMCwxNyArNDQwLDMxIEBAIHN0YXRpYyB2b2lkIHNvcnRDb250YWlu ZXIoUUNib3JDb250YWluZXJQcml2YXRlICpjb250YWluZXIpCisgICAgICAgICB9CisgICAgIH07 CisgCistICAgIHN0ZDo6c29ydChGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSks IEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSksCistICAgICAgICAgICAgICBbJmNv bXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeyByZXR1cm4gY29tcGFyZShh LCBiKSA8IDA7IH0pOworKyAgICAvLyBUaGUgZWxlbWVudHMnIGNvbnRhaW5lcnMgYXJlIG93bmVk IGJ5IHRoZSBvdXRlciBjb250YWluZXIsIG5vdCBieSB0aGUgZWxlbWVudHMgdGhlbXNlbHZlcy4K KysgICAgYXV0byBtb3ZlID0gW10oRm9yd2FyZDo6cmVmZXJlbmNlIHRhcmdldCwgRm9yd2FyZDo6 cmVmZXJlbmNlIHNvdXJjZSkKKysgICAgeworKyAgICAgICAgUXRDYm9yOjpFbGVtZW50ICZ0YXJn ZXRWYWx1ZSA9IHRhcmdldC52YWx1ZSgpOworKworKyAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBo YXMgYSBjb250YWluZXIsIGRlcmVmIGl0IGJlZm9yZSBvdmVyd3JpdGluZywgc28gdGhhdCB3ZSBk b24ndCBsZWFrLgorKyAgICAgICAgaWYgKHRhcmdldFZhbHVlLmZsYWdzICYgUXRDYm9yOjpFbGVt ZW50OjpJc0NvbnRhaW5lcikKKysgICAgICAgICAgICB0YXJnZXRWYWx1ZS5jb250YWluZXItPmRl cmVmKCk7CisrCisrICAgICAgICAvLyBEbyBub3QgbW92ZSwgc28gdGhhdCB3ZSBjYW4gY2xlYXIg dGhlIHZhbHVlIGFmdGVyd2FyZHMuCisrICAgICAgICB0YXJnZXQgPSBzb3VyY2U7CisrCisrICAg ICAgICAvLyBDbGVhciB0aGUgc291cmNlIHZhbHVlLCBzbyB0aGF0IHdlIGRvbid0IHN0b3JlIHRo ZSBzYW1lIGNvbnRhaW5lciB0d2ljZS4KKysgICAgICAgIHNvdXJjZS52YWx1ZSgpID0gUXRDYm9y OjpFbGVtZW50KCk7CisrICAgIH07CisrCisrICAgIHN0ZDo6c3RhYmxlX3NvcnQoCisrICAgICAg ICAgICAgICAgIEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpKSwgRm9yd2FyZChj b250YWluZXItPmVsZW1lbnRzLmVuZCgpKSwKKysgICAgICAgICAgICAgICAgWyZjb21wYXJlXShj b25zdCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpIHsgcmV0dXJuIGNvbXBhcmUoYSwgYikgPCAw OyB9KTsKKyAKKy0gICAgLy8gV2UgbmVlZCB0byByZXRhaW4gdGhlIF9sYXN0XyB2YWx1ZSBmb3Ig YW55IGR1cGxpY2F0ZSBrZXlzLiBUaGVyZWZvcmUgdGhlIHJldmVyc2UgZGFuY2UgaGVyZS4KKy0g ICAgYXV0byBpdCA9IHN0ZDo6dW5pcXVlKFJldmVyc2UoY29udGFpbmVyLT5lbGVtZW50cy5lbmQo KSksIFJldmVyc2UoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpKSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgIFsmY29tcGFyZV0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7 CistICAgICAgICByZXR1cm4gY29tcGFyZShhLCBiKSA9PSAwOworLSAgICB9KS5iYXNlKCkuZWxl bWVudHNJdGVyYXRvcigpOworKyAgICBGb3J3YXJkIHJlc3VsdCA9IGN1c3RvbUFzc2lnbmluZ1Vu aXF1ZUxhc3QoCisrICAgICAgICAgICAgICAgIEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5i ZWdpbigpKSwgIEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSksCisrICAgICAgICAg ICAgICAgIFsmY29tcGFyZV0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7IHJldHVy biBjb21wYXJlKGEsIGIpID09IDA7IH0sIG1vdmUpOworIAorLSAgICAvLyBUaGUgZXJhc2UgZnJv bSBiZWdpbm5pbmcgaXMgZXhwZW5zaXZlIGJ1dCBob3BlZnVsbHkgcmFyZS4KKy0gICAgY29udGFp bmVyLT5lbGVtZW50cy5lcmFzZShjb250YWluZXItPmVsZW1lbnRzLmJlZ2luKCksIGl0KTsKKysg ICAgY29udGFpbmVyLT5lbGVtZW50cy5lcmFzZShyZXN1bHQuZWxlbWVudHNJdGVyYXRvcigpLCBj b250YWluZXItPmVsZW1lbnRzLmVuZCgpKTsKKyB9CisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcXhtbHN0cmVhbS5jcHAgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFtLmNwcAoraW5kZXggYjJmODQ2NTQ0ZC4uN2Nk NDU3YmEzYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4 bWxzdHJlYW0uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1s c3RyZWFtLmNwcAorQEAgLTk4MCw3ICs5ODAsNyBAQCBpbmxpbmUgdWludCBRWG1sU3RyZWFtUmVh ZGVyUHJpdmF0ZTo6cGVla0NoYXIoKQorIGJvb2wgUVhtbFN0cmVhbVJlYWRlclByaXZhdGU6OnNj YW5VbnRpbChjb25zdCBjaGFyICpzdHIsIHNob3J0IHRva2VuVG9JbmplY3QpCisgeworICAgICBp bnQgcG9zID0gdGV4dEJ1ZmZlci5zaXplKCk7CistICAgIGludCBvbGRMaW5lTnVtYmVyID0gbGlu ZU51bWJlcjsKKysgICAgY29uc3QgYXV0byBvbGRMaW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAK KyAgICAgdWludCBjOworICAgICB3aGlsZSAoKGMgPSBnZXRDaGFyKCkpICE9IFN0cmVhbUVPRikg eworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZy5jcHAKK2luZGV4IDNlODhhYjQ4NTkuLjhkZWVh ZTQ3YmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZy5jcHAKK0BAIC0xMjMxMiw3ICsx MjMxMiw3IEBAIHN0YXRpYyBxc2l6ZXR5cGUgcUxhc3RJbmRleE9mKEhheXN0YWNrIGhheXN0YWNr MCwgcXNpemV0eXBlIGZyb20sCisgICAgIGNvbnN0IGF1dG8gbmVlZGxlID0gbmVlZGxlMC5kYXRh KCk7CisgICAgIGNvbnN0IGF1dG8gKmVuZCA9IGhheXN0YWNrOworICAgICBoYXlzdGFjayArPSBm cm9tOworLSAgICBjb25zdCBzdGQ6OnNpemVfdCBzbF9taW51c18xID0gc2wgLSAxOworKyAgICBj b25zdCBzdGQ6OnNpemVfdCBzbF9taW51c18xID0gc2wgPyBzbCAtIDEgOiAwOworICAgICBjb25z dCBhdXRvICpuID0gbmVlZGxlICsgc2xfbWludXNfMTsKKyAgICAgY29uc3QgYXV0byAqaCA9IGhh eXN0YWNrICsgc2xfbWludXNfMTsKKyAgICAgc3RkOjpzaXplX3QgaGFzaE5lZWRsZSA9IDAsIGhh c2hIYXlzdGFjayA9IDA7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0 cmluZ2l0ZXJhdG9yX3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRv cl9wLmgKK2luZGV4IDIxOTU4OWI2ZTQuLjFkMGM2NmNjNzggMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0b3JfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0b3JfcC5oCitAQCAtNjEsNiArNjEsOCBAQCBjbGFzcyBR U3RyaW5nSXRlcmF0b3IKKyB7CisgICAgIFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIGksIHBvcywg ZTsKKyAgICAgUV9TVEFUSUNfQVNTRVJUKChzdGQ6OmlzX3NhbWU8UVN0cmluZzo6Y29uc3RfaXRl cmF0b3IsIGNvbnN0IFFDaGFyICo+Ojp2YWx1ZSkpOworKyAgICBzdGF0aWMgYm9vbCBsZXNzKGNv bnN0IFFDaGFyICpsaHMsIGNvbnN0IFFDaGFyICpyaHMpIG5vZXhjZXB0CisrICAgIHsgcmV0dXJu IHN0ZDo6bGVzczxRU3RyaW5nOjpjb25zdF9pdGVyYXRvcj57fShsaHMsIHJocyk7IH0KKyBwdWJs aWM6CisgICAgIGV4cGxpY2l0IFFTdHJpbmdJdGVyYXRvcihRU3RyaW5nVmlldyBzdHJpbmcsIHFz aXpldHlwZSBpZHggPSAwKQorICAgICAgICAgOiBpKHN0cmluZy5iZWdpbigpKSwKK0BAIC05NSw3 ICs5Nyw4IEBAIHB1YmxpYzoKKyAKKyAgICAgaW5saW5lIHZvaWQgc2V0UG9zaXRpb24oUVN0cmlu Zzo6Y29uc3RfaXRlcmF0b3IgcG9zaXRpb24pCisgICAgIHsKKy0gICAgICAgIFFfQVNTRVJUX1go aSA8PSBwb3NpdGlvbiAmJiBwb3NpdGlvbiA8PSBlLCBRX0ZVTkNfSU5GTywgInBvc2l0aW9uIG91 dCBvZiBib3VuZHMiKTsKKysgICAgICAgIFFfQVNTRVJUX1goIWxlc3MocG9zaXRpb24sIGkpICYm ICFsZXNzKGUsIHBvc2l0aW9uKSwKKysgICAgICAgICAgICAgICAgICAgUV9GVU5DX0lORk8sICJw b3NpdGlvbiBvdXQgb2YgYm91bmRzIik7CisgICAgICAgICBwb3MgPSBwb3NpdGlvbjsKKyAgICAg fQorIAorQEAgLTEwMyw3ICsxMDYsNyBAQCBwdWJsaWM6CisgCisgICAgIGlubGluZSBib29sIGhh c05leHQoKSBjb25zdAorICAgICB7CistICAgICAgICByZXR1cm4gcG9zIDwgZTsKKysgICAgICAg IHJldHVybiBsZXNzKHBvcywgZSk7CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHZvaWQgYWR2YW5j ZSgpCitAQCAtMTIwLDE2ICsxMjMsMjAgQEAgcHVibGljOgorICAgICB7CisgICAgICAgICBRX0FT U0VSVF9YKGhhc05leHQoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0 ZW0iKTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKChwb3MrKyktPmlzSGlnaFN1cnJvZ2F0 ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKChwb3MrKyktPmlzSGlnaFN1cnJvZ2F0ZSgp KSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc05leHQoKSAmJiBwb3MtPmlzTG93U3Vycm9n YXRlKCkpOworICAgICAgICAgICAgICsrcG9zOworKyAgICAgICAgfQorICAgICB9CisgCisgICAg IGlubGluZSB1aW50IHBlZWtOZXh0VW5jaGVja2VkKCkgY29uc3QKKyAgICAgeworICAgICAgICAg UV9BU1NFUlRfWChoYXNOZXh0KCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4 dCBpdGVtIik7CisgCistICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3MtPmlzSGlnaFN1cnJvZ2F0 ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKHBvcy0+aXNIaWdoU3Vycm9nYXRlKCkpKSB7 CisrICAgICAgICAgICAgUV9BU1NFUlQobGVzcyhwb3MgKyAxLCBlKSAmJiBwb3NbMV0uaXNMb3dT dXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQo cG9zWzBdLCBwb3NbMV0pOworKyAgICAgICAgfQorIAorICAgICAgICAgcmV0dXJuIHBvcy0+dW5p Y29kZSgpOworICAgICB9CitAQCAtMTU1LDggKzE2MiwxMCBAQCBwdWJsaWM6CisgICAgICAgICBR X0FTU0VSVF9YKGhhc05leHQoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0 IGl0ZW0iKTsKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIGN1ciA9ICpwb3MrKzsKKy0gICAgICAg IGlmIChRX1VOTElLRUxZKGN1ci5pc0hpZ2hTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9V TkxJS0VMWShjdXIuaXNIaWdoU3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQo aGFzTmV4dCgpICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJu IFFDaGFyOjpzdXJyb2dhdGVUb1VjczQoY3VyLCAqcG9zKyspOworKyAgICAgICAgfQorICAgICAg ICAgcmV0dXJuIGN1ci51bmljb2RlKCk7CisgICAgIH0KKyAKK0BAIC0xNjYsNyArMTc1LDcgQEAg cHVibGljOgorIAorICAgICAgICAgY29uc3QgUUNoYXIgdWMgPSAqcG9zKys7CisgICAgICAgICBp ZiAoUV9VTkxJS0VMWSh1Yy5pc1N1cnJvZ2F0ZSgpKSkgeworLSAgICAgICAgICAgIGlmIChRX0xJ S0VMWSh1Yy5pc0hpZ2hTdXJyb2dhdGUoKSAmJiBwb3MgPCBlICYmIHBvcy0+aXNMb3dTdXJyb2dh dGUoKSkpCisrICAgICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzSGlnaFN1cnJvZ2F0ZSgpICYm IGhhc05leHQoKSAmJiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpKQorICAgICAgICAgICAgICAgICBy ZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNCh1YywgKnBvcysrKTsKKyAgICAgICAgICAgICBy ZXR1cm4gaW52YWxpZEFzOworICAgICAgICAgfQorQEAgLTE3OCw3ICsxODcsNyBAQCBwdWJsaWM6 CisgCisgICAgIGlubGluZSBib29sIGhhc1ByZXZpb3VzKCkgY29uc3QKKyAgICAgeworLSAgICAg ICAgcmV0dXJuIHBvcyA+IGk7CisrICAgICAgICByZXR1cm4gbGVzcyhpLCBwb3MpOworICAgICB9 CisgCisgICAgIGlubGluZSB2b2lkIHJlY2VkZSgpCitAQCAtMTk2LDE2ICsyMDUsMjAgQEAgcHVi bGljOgorICAgICB7CisgICAgICAgICBRX0FTU0VSVF9YKGhhc1ByZXZpb3VzKCksIFFfRlVOQ19J TkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgcHJldmlvdXMgaXRlbSIpOworIAorLSAgICAgICAgaWYg KFFfVU5MSUtFTFkoKC0tcG9zKS0+aXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9V TkxJS0VMWSgoLS1wb3MpLT5pc0xvd1N1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNT RVJUKGhhc1ByZXZpb3VzKCkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSk7CisgICAgICAg ICAgICAgLS1wb3M7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHVpbnQgcGVl a1ByZXZpb3VzVW5jaGVja2VkKCkgY29uc3QKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWCho YXNQcmV2aW91cygpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIHByZXZpb3VzIGl0 ZW0iKTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKHBvc1stMV0uaXNMb3dTdXJyb2dhdGUo KSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3NbLTFdLmlzTG93U3Vycm9nYXRlKCkpKSB7 CisrICAgICAgICAgICAgUV9BU1NFUlQobGVzcyhpICsgMSwgcG9zKSAmJiBwb3NbLTJdLmlzSGln aFN1cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNz NChwb3NbLTJdLCBwb3NbLTFdKTsKKysgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBwb3NbLTFd LnVuaWNvZGUoKTsKKyAgICAgfQorIAorQEAgLTIzMCw4ICsyNDMsMTAgQEAgcHVibGljOgorICAg ICAgICAgUV9BU1NFUlRfWChoYXNQcmV2aW91cygpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhh c24ndCBhIHByZXZpb3VzIGl0ZW0iKTsKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIGN1ciA9ICot LXBvczsKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKGN1ci5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysg ICAgICAgIGlmIChRX1VOTElLRUxZKGN1ci5pc0xvd1N1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAg ICAgIFFfQVNTRVJUKGhhc1ByZXZpb3VzKCkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSk7 CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQoKi0tcG9zLCBjdXIp OworKyAgICAgICAgfQorICAgICAgICAgcmV0dXJuIGN1ci51bmljb2RlKCk7CisgICAgIH0KKyAK K0BAIC0yNDEsNyArMjU2LDcgQEAgcHVibGljOgorIAorICAgICAgICAgY29uc3QgUUNoYXIgdWMg PSAqLS1wb3M7CisgICAgICAgICBpZiAoUV9VTkxJS0VMWSh1Yy5pc1N1cnJvZ2F0ZSgpKSkgewor LSAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0xvd1N1cnJvZ2F0ZSgpICYmIHBvcyA+IGkg JiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSkpCisrICAgICAgICAgICAgaWYgKFFfTElLRUxZ KHVjLmlzTG93U3Vycm9nYXRlKCkgJiYgaGFzUHJldmlvdXMoKSAmJiBwb3NbLTFdLmlzSGlnaFN1 cnJvZ2F0ZSgpKSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1Vj czQoKi0tcG9zLCB1Yyk7CisgICAgICAgICAgICAgcmV0dXJuIGludmFsaWRBczsKKyAgICAgICAg IH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmggYi9x dGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmgKK2luZGV4IGYyODdiNzUyZDcuLmUy OTQ1Mzc3ODcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9w LmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcWZ1dGV4X3AuaAorQEAgLTUyLDYg KzUyLDcgQEAKKyAvLworIAorICNpbmNsdWRlIDxxZ2xvYmFsLmg+CisrI2luY2x1ZGUgPFF0Q29y ZS9xdHNhbl9pbXBsLmg+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCitAQCAtMTA2LDE2ICsx MDcsMTMgQEAgbmFtZXNwYWNlIFF0TGludXhGdXRleCB7CisgICAgIGlubGluZSBpbnQgX3FfZnV0 ZXgoaW50ICphZGRyLCBpbnQgb3AsIGludCB2YWwsIHF1aW50cHRyIHZhbDIgPSAwLAorICAgICAg ICAgICAgICAgICAgICAgICAgIGludCAqYWRkcjIgPSBudWxscHRyLCBpbnQgdmFsMyA9IDApIG5v ZXhjZXB0CisgICAgIHsKKy0gICAgICAgIC8vIEEgZnV0ZXggY2FsbCBlbnN1cmVzIHRvdGFsIG9y ZGVyaW5nIG9uIHRoZSBmdXRleCB3b3JkcworLSAgICAgICAgLy8gKGluIGVpdGhlciBzdWNjZXNz IG9yIGZhaWx1cmUgb2YgdGhlIGNhbGwpLiBJbnN0cnVjdCBUU0FOIGFjY29yZGluZ2x5LAorLSAg ICAgICAgLy8gYXMgVFNBTiBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZSBmdXRleCgyKSBzeXNjYWxs LgorLSAgICAgICAgX3FfdHNhbl9yZWxlYXNlKGFkZHIsIGFkZHIyKTsKKysgICAgICAgIFF0VHNh bjo6ZnV0ZXhSZWxlYXNlKGFkZHIsIGFkZHIyKTsKKyAKKyAgICAgICAgIC8vIHdlIHVzZSBfX05S X2Z1dGV4IGJlY2F1c2Ugc29tZSBsaWJjcyAobGlrZSBBbmRyb2lkJ3MgYmlvbmljKSBkb24ndAor ICAgICAgICAgLy8gcHJvdmlkZSBTWVNfZnV0ZXggZXRjLgorICAgICAgICAgaW50IHJlc3VsdCA9 IHN5c2NhbGwoX19OUl9mdXRleCwgYWRkciwgb3AgfCBGVVRFWF9QUklWQVRFX0ZMQUcsIHZhbCwg dmFsMiwgYWRkcjIsIHZhbDMpOworIAorLSAgICAgICAgX3FfdHNhbl9hY3F1aXJlKGFkZHIsIGFk ZHIyKTsKKysgICAgICAgIFF0VHNhbjo6ZnV0ZXhBY3F1aXJlKGFkZHIsIGFkZHIyKTsKKyAKKyAg ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3FtdXRleC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRl eC5jcHAKK2luZGV4IDMxMGQxY2IxNGYuLjcwOTcxMjJkOGUgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90 aHJlYWQvcW11dGV4LmNwcAorQEAgLTE1Miw2ICsxNTIsNyBAQCBwdWJsaWM6CisgCisgLyohCisg ICAgIFxlbnVtIFFNdXRleDo6UmVjdXJzaW9uTW9kZQorKyAgICBcb2Jzb2xldGUgVXNlIFFSZWN1 cnNpdmVNdXRleCB0byBjcmVhdGUgYSByZWN1cnNpdmUgbXV0ZXguCisgCisgICAgIFx2YWx1ZSBS ZWN1cnNpdmUgIEluIHRoaXMgbW9kZSwgYSB0aHJlYWQgY2FuIGxvY2sgdGhlIHNhbWUgbXV0ZXgK KyAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgdGltZXMgYW5kIHRoZSBtdXRleCB3b24n dCBiZSB1bmxvY2tlZAorQEAgLTE3Myw2ICsxNzQsNyBAQCBwdWJsaWM6CisgCisgLyohCisgICAg IENvbnN0cnVjdHMgYSBuZXcgbXV0ZXguIFRoZSBtdXRleCBpcyBjcmVhdGVkIGluIGFuIHVubG9j a2VkIHN0YXRlLgorKyAgICBcb2Jzb2xldGUgVXNlIFFSZWN1cnNpdmVNdXRleCB0byBjcmVhdGUg YSByZWN1cnNpdmUgbXV0ZXguCisgCisgICAgIElmIFxhIG1vZGUgaXMgUU11dGV4OjpSZWN1cnNp dmUsIGEgdGhyZWFkIGNhbiBsb2NrIHRoZSBzYW1lIG11dGV4CisgICAgIG11bHRpcGxlIHRpbWVz IGFuZCB0aGUgbXV0ZXggd29uJ3QgYmUgdW5sb2NrZWQgdW50aWwgYQorQEAgLTE5Nyw3ICsxOTks NyBAQCBRTXV0ZXg6OlFNdXRleChSZWN1cnNpb25Nb2RlIG1vZGUpCisgUU11dGV4Ojp+UU11dGV4 KCkKKyB7CisgICAgIFFNdXRleERhdGEgKmQgPSBkX3B0ci5sb2FkUmVsYXhlZCgpOworLSAgICBp ZiAoaXNSZWN1cnNpdmUoKSkgeworKyAgICBpZiAoUUJhc2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCkp IHsKKyAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxRUmVjdXJzaXZlTXV0ZXhQcml2YXRlICo+ KGQpOworICAgICB9IGVsc2UgaWYgKGQpIHsKKyAjaWZuZGVmIFFUX0xJTlVYX0ZVVEVYCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguaCBiL3F0YmFzZS9zcmMv Y29yZWxpYi90aHJlYWQvcW11dGV4LmgKK2luZGV4IDczYzllMDA2NjMuLjFiYWU1NzNhMDMgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5oCisrKysgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5oCitAQCAtNDIsNiArNDIsNyBAQAorIAorICNp bmNsdWRlIDxRdENvcmUvcWdsb2JhbC5oPgorICNpbmNsdWRlIDxRdENvcmUvcWF0b21pYy5oPgor KyNpbmNsdWRlIDxRdENvcmUvcXRzYW5faW1wbC5oPgorICNpbmNsdWRlIDxuZXc+CisgCisgI2lm IF9faGFzX2luY2x1ZGUoPGNocm9ubz4pCitAQCAtNzcsMTkgKzc4LDM3IEBAIHB1YmxpYzoKKyAK KyAgICAgLy8gQmFzaWNMb2NrYWJsZSBjb25jZXB0CisgICAgIGlubGluZSB2b2lkIGxvY2soKSBR VF9NVVRFWF9MT0NLX05PRVhDRVBUIHsKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQcmVMb2NrKHRo aXMsIDB1KTsKKysKKyAgICAgICAgIGlmICghZmFzdFRyeUxvY2soKSkKKyAgICAgICAgICAgICBs b2NrSW50ZXJuYWwoKTsKKysKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQb3N0TG9jayh0aGlzLCAw dSwgMCk7CisgICAgIH0KKyAKKyAgICAgLy8gQmFzaWNMb2NrYWJsZSBjb25jZXB0CisgICAgIGlu bGluZSB2b2lkIHVubG9jaygpIG5vZXhjZXB0IHsKKyAgICAgICAgIFFfQVNTRVJUKGRfcHRyLmxv YWRSZWxheGVkKCkpOyAvL211dGV4IG11c3QgYmUgbG9ja2VkCisrCisrICAgICAgICBRdFRzYW46 Om11dGV4UHJlVW5sb2NrKHRoaXMsIDB1KTsKKysKKyAgICAgICAgIGlmICghZmFzdFRyeVVubG9j aygpKQorICAgICAgICAgICAgIHVubG9ja0ludGVybmFsKCk7CisrCisrICAgICAgICBRdFRzYW46 Om11dGV4UG9zdFVubG9jayh0aGlzLCAwdSk7CisgICAgIH0KKyAKKyAgICAgYm9vbCB0cnlMb2Nr KCkgbm9leGNlcHQgeworLSAgICAgICAgcmV0dXJuIGZhc3RUcnlMb2NrKCk7CisrICAgICAgICB1 bnNpZ25lZCB0c2FuRmxhZ3MgPSBRdFRzYW46OlRyeUxvY2s7CisrICAgICAgICBRdFRzYW46Om11 dGV4UHJlTG9jayh0aGlzLCB0c2FuRmxhZ3MpOworKworKyAgICAgICAgY29uc3QgYm9vbCBzdWNj ZXNzID0gZmFzdFRyeUxvY2soKTsKKysKKysgICAgICAgIGlmICghc3VjY2VzcykKKysgICAgICAg ICAgICB0c2FuRmxhZ3MgfD0gUXRUc2FuOjpUcnlMb2NrRmFpbGVkOworKyAgICAgICAgUXRUc2Fu OjptdXRleFBvc3RMb2NrKHRoaXMsIHRzYW5GbGFncywgMCk7CisrCisrICAgICAgICByZXR1cm4g c3VjY2VzczsKKyAgICAgfQorIAorICAgICAvLyBMb2NrYWJsZSBjb25jZXB0CitAQCAtMTM0LDgg KzE1MywxNiBAQCBwdWJsaWM6CisgI2Vsc2UKKyAgICAgUU11dGV4KCkgeyBkX3B0ci5zdG9yZVJl bGF4ZWQobnVsbHB0cik7IH0KKyAjZW5kaWYKKysjaWYgUVRfREVQUkVDQVRFRF9TSU5DRSg1LDE1 KQorICAgICBlbnVtIFJlY3Vyc2lvbk1vZGUgeyBOb25SZWN1cnNpdmUsIFJlY3Vyc2l2ZSB9Owor KyAgICBRVF9ERVBSRUNBVEVEX1ZFUlNJT05fWCg1LCAxNSwgIlVzZSBRUmVjdXJzaXZlTXV0ZXgg aW5zdGVhZCBvZiBhIHJlY3Vyc2l2ZSBRTXV0ZXgiKQorICAgICBleHBsaWNpdCBRTXV0ZXgoUmVj dXJzaW9uTW9kZSBtb2RlKTsKKysKKysgICAgUVRfREVQUkVDQVRFRF9WRVJTSU9OX1goNSwgMTUs ICJVc2UgUVJlY3Vyc2l2ZU11dGV4IGluc3RlYWQgb2YgYSByZWN1cnNpdmUgUU11dGV4IikKKysg ICAgYm9vbCBpc1JlY3Vyc2l2ZSgpIGNvbnN0IG5vZXhjZXB0CisrICAgIHsgcmV0dXJuIFFCYXNp Y011dGV4Ojppc1JlY3Vyc2l2ZSgpOyB9CisrI2VuZGlmCisrCisgICAgIH5RTXV0ZXgoKTsKKyAK KyAgICAgLy8gQmFzaWNMb2NrYWJsZSBjb25jZXB0CitAQCAtMTY2LDkgKzE5Myw2IEBAIHB1Ymxp YzoKKyAgICAgfQorICNlbmRpZgorIAorLSAgICBib29sIGlzUmVjdXJzaXZlKCkgY29uc3Qgbm9l eGNlcHQKKy0gICAgeyByZXR1cm4gUUJhc2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCk7IH0KKy0KKyBw cml2YXRlOgorICAgICBRX0RJU0FCTEVfQ09QWShRTXV0ZXgpCisgICAgIGZyaWVuZCBjbGFzcyBR TXV0ZXhMb2NrZXI7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVh ZHdyaXRlbG9jay5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2Nr LmNwcAoraW5kZXggOGMyODUwN2Q1YS4uOWRkODUwMzExNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvY29yZWxpYi90aHJlYWQvcXJlYWR3cml0ZWxvY2suY3BwCisrKysgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcAorQEAgLTE1NSw3ICsxNTUsNyBAQCBRUmVh ZFdyaXRlTG9jazo6UVJlYWRXcml0ZUxvY2soUmVjdXJzaW9uTW9kZSByZWN1cnNpb25Nb2RlKQor ICovCisgUVJlYWRXcml0ZUxvY2s6On5RUmVhZFdyaXRlTG9jaygpCisgeworLSAgICBhdXRvIGQg PSBkX3B0ci5sb2FkUmVsYXhlZCgpOworKyAgICBhdXRvIGQgPSBkX3B0ci5sb2FkQWNxdWlyZSgp OworICAgICBpZiAoaXNVbmNvbnRlbmRlZExvY2tlZChkKSkgeworICAgICAgICAgcVdhcm5pbmco IlFSZWFkV3JpdGVMb2NrOiBkZXN0cm95aW5nIGxvY2tlZCBRUmVhZFdyaXRlTG9jayIpOworICAg ICAgICAgcmV0dXJuOworQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIFFSZWFkV3JpdGVMb2NrOjp1 bmxvY2soKQorIC8qISBcaW50ZXJuYWwgIEhlbHBlciBmb3IgUVdhaXRDb25kaXRpb246OndhaXQg Ki8KKyBRUmVhZFdyaXRlTG9jazo6U3RhdGVGb3JXYWl0Q29uZGl0aW9uIFFSZWFkV3JpdGVMb2Nr OjpzdGF0ZUZvcldhaXRDb25kaXRpb24oKSBjb25zdAorIHsKKy0gICAgUVJlYWRXcml0ZUxvY2tQ cml2YXRlICpkID0gZF9wdHIubG9hZFJlbGF4ZWQoKTsKKysgICAgUVJlYWRXcml0ZUxvY2tQcml2 YXRlICpkID0gZF9wdHIubG9hZEFjcXVpcmUoKTsKKyAgICAgc3dpdGNoIChxdWludHB0cihkKSAm IFN0YXRlTWFzaykgeworICAgICBjYXNlIFN0YXRlTG9ja2VkRm9yUmVhZDogcmV0dXJuIExvY2tl ZEZvclJlYWQ7CisgICAgIGNhc2UgU3RhdGVMb2NrZWRGb3JXcml0ZTogcmV0dXJuIExvY2tlZEZv cldyaXRlOworQEAgLTQ1Myw2ICs0NTMsNyBAQCBRUmVhZFdyaXRlTG9jazo6U3RhdGVGb3JXYWl0 Q29uZGl0aW9uIFFSZWFkV3JpdGVMb2NrOjpzdGF0ZUZvcldhaXRDb25kaXRpb24oKSBjbworIAor ICAgICBpZiAoIWQpCisgICAgICAgICByZXR1cm4gVW5sb2NrZWQ7CisrICAgIGNvbnN0IGF1dG8g bG9jayA9IHF0X3Njb3BlZF9sb2NrKGQtPm11dGV4KTsKKyAgICAgaWYgKGQtPndyaXRlckNvdW50 ID4gMSkKKyAgICAgICAgIHJldHVybiBSZWN1cnNpdmVseUxvY2tlZDsKKyAgICAgZWxzZSBpZiAo ZC0+d3JpdGVyQ291bnQgPT0gMSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhy ZWFkL3FzZW1hcGhvcmUuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3Jl LmNwcAoraW5kZXggMWQwMWZjMWIyOC4uM2VjZGVlMzc0NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxp Yi90aHJlYWQvcXNlbWFwaG9yZS5jcHAKK0BAIC0zNTQsNyArMzU0LDEyIEBAIHZvaWQgUVNlbWFw aG9yZTo6cmVsZWFzZShpbnQgbikKKyAgICAgICAgIHF1aW50cHRyIG5uID0gdW5zaWduZWQobik7 CisgICAgICAgICBpZiAoZnV0ZXhIYXNXYWl0ZXJDb3VudCkKKyAgICAgICAgICAgICBubiB8PSBx dWludDY0KG5uKSA8PCAzMjsgICAgLy8gdG9rZW4gY291bnQgcmVwbGljYXRlZCBpbiBoaWdoIHdv cmQKKy0gICAgICAgIHF1aW50cHRyIHByZXZWYWx1ZSA9IHUuZmV0Y2hBbmRBZGRSZWxlYXNlKG5u KTsKKysgICAgICAgIHF1aW50cHRyIHByZXZWYWx1ZSA9IHUubG9hZFJlbGF4ZWQoKTsKKysgICAg ICAgIHF1aW50cHRyIG5ld1ZhbHVlOworKyAgICAgICAgZG8geyAvLyBsb29wIGp1c3QgdG8gZW5z dXJlIHRoZSBvcGVyYXRpb25zIGFyZSBkb25lIGF0b21pY2FsbHkKKysgICAgICAgICAgICBuZXdW YWx1ZSA9IHByZXZWYWx1ZSArIG5uOworKyAgICAgICAgICAgIG5ld1ZhbHVlICY9IChmdXRleE5l ZWRzV2FrZUFsbEJpdCAtIDEpOworKyAgICAgICAgfSB3aGlsZSAoIXUudGVzdEFuZFNldFJlbGVh c2UocHJldlZhbHVlLCBuZXdWYWx1ZSwgcHJldlZhbHVlKSk7CisgICAgICAgICBpZiAoZnV0ZXhO ZWVkc1dha2UocHJldlZhbHVlKSkgeworICNpZmRlZiBGVVRFWF9PUAorICAgICAgICAgICAgIGlm IChmdXRleEhhc1dhaXRlckNvdW50KSB7CitAQCAtMzc2LDcgKzM4MSw2IEBAIHZvaWQgUVNlbWFw aG9yZTo6cmVsZWFzZShpbnQgbikKKyAgICAgICAgICAgICAgICAgcXVpbnQzMiBvcGFyZyA9IDA7 CisgICAgICAgICAgICAgICAgIHF1aW50MzIgY21wID0gRlVURVhfT1BfQ01QX05FOworICAgICAg ICAgICAgICAgICBxdWludDMyIGNtcGFyZyA9IDA7CistICAgICAgICAgICAgICAgIHUuZmV0Y2hB bmRBbmRSZWxlYXNlKGZ1dGV4TmVlZHNXYWtlQWxsQml0IC0gMSk7CisgICAgICAgICAgICAgICAg IGZ1dGV4V2FrZU9wKCpmdXRleExvdzMyKCZ1KSwgbiwgSU5UX01BWCwgKmZ1dGV4SGlnaDMyKCZ1 KSwgRlVURVhfT1Aob3AsIG9wYXJnLCBjbXAsIGNtcGFyZykpOworICAgICAgICAgICAgICAgICBy ZXR1cm47CisgICAgICAgICAgICAgfQorQEAgLTM4OCw3ICszOTIsNiBAQCB2b2lkIFFTZW1hcGhv cmU6OnJlbGVhc2UoaW50IG4pCisgICAgICAgICAgICAgLy8gICAgaXRzIGFjcXVpc2l0aW9uIGFu eXdheSwgc28gaXQgaGFzIHRvIHdhaXQ7CisgICAgICAgICAgICAgLy8gMikgaXQgZGlkIG5vdCBz ZWUgdGhlIG5ldyBjb3VudGVyIHZhbHVlLCBpbiB3aGljaCBjYXNlIGl0cworICAgICAgICAgICAg IC8vICAgIGZ1dGV4V2FpdCB3aWxsIGZhaWwuCistICAgICAgICAgICAgdS5mZXRjaEFuZEFuZFJl bGVhc2UoZnV0ZXhOZWVkc1dha2VBbGxCaXQgLSAxKTsKKyAgICAgICAgICAgICBpZiAoZnV0ZXhI YXNXYWl0ZXJDb3VudCkgeworICAgICAgICAgICAgICAgICBmdXRleFdha2VBbGwoKmZ1dGV4TG93 MzIoJnUpKTsKKyAgICAgICAgICAgICAgICAgZnV0ZXhXYWtlQWxsKCpmdXRleEhpZ2gzMigmdSkp OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmggYi9x dGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfcC5oCitpbmRleCBiMmQxNjI4ZTZlLi5m MzJmNmYwNDYwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFk X3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAorQEAgLTE3 NCw3ICsxNzQsNyBAQCBwdWJsaWM6CisgICAgIGludCByZXR1cm5Db2RlOworIAorICAgICB1aW50 IHN0YWNrU2l6ZTsKKy0gICAgUVRocmVhZDo6UHJpb3JpdHkgcHJpb3JpdHk7CisrICAgIHN0ZDo6 dW5kZXJseWluZ190eXBlPFFUaHJlYWQ6OlByaW9yaXR5Pjo6dHlwZSBwcmlvcml0eTsKKyAKKyAg ICAgc3RhdGljIFFUaHJlYWQgKnRocmVhZEZvcklkKGludCBpZCk7CisgCitAQCAtMjEzLDYgKzIx MywxMyBAQCBwdWJsaWM6CisgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6aW5zdGFuY2Uo KS0+cG9zdEV2ZW50KHFfcHRyLCBuZXcgUUV2ZW50KFFFdmVudDo6UXVpdCkpOworICAgICAgICAg fQorICAgICB9CisrCisrI2lmbmRlZiBRX09TX0lOVEVHUklUWQorK3ByaXZhdGU6CisrICAgIC8v IFVzZWQgaW4gUVRocmVhZChQcml2YXRlKTo6c3RhcnQgdG8gYXZvaWQgcmFjeSBhY2Nlc3MgdG8g UU9iamVjdDo6b2JqZWN0TmFtZSwKKysgICAgLy8gdW5zZXQgYWZ0ZXJ3YXJkcy4gT24gSU5URUdS SVRZIHdlIHNldCB0aGUgdGhyZWFkIG5hbWUgYmVmb3JlIHN0YXJ0aW5nIGl0LgorKyAgICBRU3Ry aW5nIG9iamVjdE5hbWU7CisrI2VuZGlmCisgfTsKKyAKKyAjZWxzZSAvLyBRVF9DT05GSUcodGhy ZWFkKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4 LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNwcAoraW5kZXgg NTZhOGUwYTAzOC4uNjEwMTE3YTY0MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90 aHJlYWQvcXRocmVhZF91bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9x dGhyZWFkX3VuaXguY3BwCitAQCAtMTY5LDggKzE2OSw3IEBAIHN0YXRpYyB2b2lkIHNldF90aHJl YWRfZGF0YShRVGhyZWFkRGF0YSAqZGF0YSkKKyAKKyBzdGF0aWMgdm9pZCBjbGVhcl90aHJlYWRf ZGF0YSgpCisgeworLSAgICBjdXJyZW50VGhyZWFkRGF0YSA9IG51bGxwdHI7CistICAgIHB0aHJl YWRfc2V0c3BlY2lmaWMoY3VycmVudF90aHJlYWRfZGF0YV9rZXksIG51bGxwdHIpOworKyAgICBz ZXRfdGhyZWFkX2RhdGEobnVsbHB0cik7CisgfQorIAorIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgor QEAgLTI5Niw3ICsyOTUsNyBAQCB2b2lkICpRVGhyZWFkUHJpdmF0ZTo6c3RhcnQodm9pZCAqYXJn KQorICAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIoJnRoci0+ZF9mdW5jKCktPm11dGV4 KTsKKyAKKyAgICAgICAgICAgICAvLyBkbyB3ZSBuZWVkIHRvIHJlc2V0IHRoZSB0aHJlYWQgcHJp b3JpdHk/CistICAgICAgICAgICAgaWYgKGludCh0aHItPmRfZnVuYygpLT5wcmlvcml0eSkgJiBU aHJlYWRQcmlvcml0eVJlc2V0RmxhZykgeworKyAgICAgICAgICAgIGlmICh0aHItPmRfZnVuYygp LT5wcmlvcml0eSAmIFRocmVhZFByaW9yaXR5UmVzZXRGbGFnKSB7CisgICAgICAgICAgICAgICAg IHRoci0+ZF9mdW5jKCktPnNldFByaW9yaXR5KFFUaHJlYWQ6OlByaW9yaXR5KHRoci0+ZF9mdW5j KCktPnByaW9yaXR5ICYgflRocmVhZFByaW9yaXR5UmVzZXRGbGFnKSk7CisgICAgICAgICAgICAg fQorIAorQEAgLTMxNiwxMCArMzE1LDEwIEBAIHZvaWQgKlFUaHJlYWRQcml2YXRlOjpzdGFydCh2 b2lkICphcmcpCisgICAgICAgICAgICAgLy8gU2V0cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0 aHJlYWQuIFdlIGNhbiBvbmx5IGRvIHRoaXMKKyAgICAgICAgICAgICAvLyB3aGVuIHRoZSB0aHJl YWQgaXMgc3RhcnRpbmcsIGFzIHdlIGRvbid0IGhhdmUgYSBjcm9zcworICAgICAgICAgICAgIC8v IHBsYXRmb3JtIHdheSBvZiBzZXR0aW5nIHRoZSBuYW1lIG9mIGFuIGFyYml0cmFyeSB0aHJlYWQu CistICAgICAgICAgICAgaWYgKFFfTElLRUxZKHRoci0+b2JqZWN0TmFtZSgpLmlzRW1wdHkoKSkp CisrICAgICAgICAgICAgaWYgKFFfTElLRUxZKHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUuaXNF bXB0eSgpKSkKKyAgICAgICAgICAgICAgICAgc2V0Q3VycmVudFRocmVhZE5hbWUodGhyLT5tZXRh T2JqZWN0KCktPmNsYXNzTmFtZSgpKTsKKyAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAg ICAgIHNldEN1cnJlbnRUaHJlYWROYW1lKHRoci0+b2JqZWN0TmFtZSgpLnRvTG9jYWw4Qml0KCkp OworKyAgICAgICAgICAgICAgICBzZXRDdXJyZW50VGhyZWFkTmFtZShzdGQ6OmV4Y2hhbmdlKHRo ci0+ZF9mdW5jKCktPm9iamVjdE5hbWUsIHt9KS50b0xvY2FsOEJpdCgpKTsKKyAgICAgICAgIH0K KyAjZW5kaWYKKyAKK0BAIC02NzEsNyArNjcwLDcgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlv cml0eSBwcmlvcml0eSkKKyAgICAgICAgICAgICAgICAgLy8gY291bGQgbm90IHNldCBzY2hlZHVs aW5nIGhpbnRzLCBmYWxsYmFjayB0byBpbmhlcml0aW5nIHRoZW0KKyAgICAgICAgICAgICAgICAg Ly8gd2UnbGwgdHJ5IGFnYWluIGZyb20gaW5zaWRlIHRoZSB0aHJlYWQKKyAgICAgICAgICAgICAg ICAgcHRocmVhZF9hdHRyX3NldGluaGVyaXRzY2hlZCgmYXR0ciwgUFRIUkVBRF9JTkhFUklUX1ND SEVEKTsKKy0gICAgICAgICAgICAgICAgZC0+cHJpb3JpdHkgPSBQcmlvcml0eShwcmlvcml0eSB8 IFRocmVhZFByaW9yaXR5UmVzZXRGbGFnKTsKKysgICAgICAgICAgICAgICAgZC0+cHJpb3JpdHkg PSBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxRVGhyZWFkOjpQcmlvcml0eT46OnR5 cGU+KHByaW9yaXR5KSB8IFRocmVhZFByaW9yaXR5UmVzZXRGbGFnOworICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KK0BAIC03MDIsNyArNzAxLDEwIEBAIHZv aWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3JpdHkpCisgICAgICAgICBwdGhyZWFkX2F0 dHJfc2V0dGhyZWFkbmFtZSgmYXR0ciwgbWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSk7CisgICAg IGVsc2UKKyAgICAgICAgIHB0aHJlYWRfYXR0cl9zZXR0aHJlYWRuYW1lKCZhdHRyLCBvYmplY3RO YW1lKCkudG9Mb2NhbDhCaXQoKSk7CisrI2Vsc2UKKysgICAgZC0+b2JqZWN0TmFtZSA9IG9iamVj dE5hbWUoKTsKKyAjZW5kaWYKKysKKyAgICAgcHRocmVhZF90IHRocmVhZElkOworICAgICBpbnQg Y29kZSA9IHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRJZCwgJmF0dHIsIFFUaHJlYWRQcml2YXRlOjpz dGFydCwgdGhpcyk7CisgICAgIGlmIChjb2RlID09IEVQRVJNKSB7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3dpbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcAoraW5kZXggYmM3MGUzMTc4YS4uNGU3Njk3MjQ5OCAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3BwCisr KysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcAorQEAgLTM5NCwx MCArMzk0LDkgQEAgdW5zaWduZWQgaW50IF9fc3RkY2FsbCBRVF9FTlNVUkVfU1RBQ0tfQUxJR05F RF9GT1JfU1NFIFFUaHJlYWRQcml2YXRlOjpzdGFydCh2b2kKKyAKKyAjaWYgIWRlZmluZWQoUVRf Tk9fREVCVUcpICYmIGRlZmluZWQoUV9DQ19NU1ZDKSAmJiAhZGVmaW5lZChRX09TX1dJTlJUKQor ICAgICAvLyBzZXRzIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHRocmVhZC4KKy0gICAgUUJ5dGVB cnJheSBvYmplY3ROYW1lID0gdGhyLT5vYmplY3ROYW1lKCkudG9Mb2NhbDhCaXQoKTsKKy0gICAg cXRfc2V0X3RocmVhZF9uYW1lKEhBTkRMRSgtMSksCistICAgICAgICAgICAgICAgICAgICAgICBv YmplY3ROYW1lLmlzRW1wdHkoKSA/CistICAgICAgICAgICAgICAgICAgICAgICB0aHItPm1ldGFP YmplY3QoKS0+Y2xhc3NOYW1lKCkgOiBvYmplY3ROYW1lLmNvbnN0RGF0YSgpKTsKKysgICAgcXRf c2V0X3RocmVhZF9uYW1lKEhBTkRMRSgtMSksIHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUuaXNF bXB0eSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgPyB0aHItPm1ldGFPYmplY3QoKS0+Y2xh c3NOYW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICA6IHN0ZDo6ZXhjaGFuZ2UodGhyLT5k X2Z1bmMoKS0+b2JqZWN0TmFtZSwge30pLnRvTG9jYWw4Qml0KCkuY29uc3REYXRhKCkpOworICNl bmRpZgorIAorICAgICBlbWl0IHRoci0+c3RhcnRlZChRVGhyZWFkOjpRUHJpdmF0ZVNpZ25hbCgp KTsKK0BAIC01MDMsNiArNTAyLDcgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlv cml0eSkKKyAgICAgaWYgKGQtPnJ1bm5pbmcpCisgICAgICAgICByZXR1cm47CisgCisrICAgIGQt Pm9iamVjdE5hbWUgPSBvYmplY3ROYW1lKCk7CisgICAgIGQtPnJ1bm5pbmcgPSB0cnVlOworICAg ICBkLT5maW5pc2hlZCA9IGZhbHNlOworICAgICBkLT5leGl0ZWQgPSBmYWxzZTsKK0BAIC01NDgs NyArNTQ4LDcgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAKKyAg ICAgaW50IHByaW87CisgICAgIGQtPnByaW9yaXR5ID0gcHJpb3JpdHk7CistICAgIHN3aXRjaCAo ZC0+cHJpb3JpdHkpIHsKKysgICAgc3dpdGNoIChwcmlvcml0eSkgeworICAgICBjYXNlIElkbGVQ cmlvcml0eToKKyAgICAgICAgIHByaW8gPSBUSFJFQURfUFJJT1JJVFlfSURMRTsKKyAgICAgICAg IGJyZWFrOworQEAgLTY4Niw3ICs2ODYsNyBAQCB2b2lkIFFUaHJlYWRQcml2YXRlOjpzZXRQcmlv cml0eShRVGhyZWFkOjpQcmlvcml0eSB0aHJlYWRQcmlvcml0eSkKKyAKKyAgICAgaW50IHByaW87 CisgICAgIHByaW9yaXR5ID0gdGhyZWFkUHJpb3JpdHk7CistICAgIHN3aXRjaCAocHJpb3JpdHkp IHsKKysgICAgc3dpdGNoICh0aHJlYWRQcmlvcml0eSkgeworICAgICBjYXNlIFFUaHJlYWQ6Oklk bGVQcmlvcml0eToKKyAgICAgICAgIHByaW8gPSBUSFJFQURfUFJJT1JJVFlfSURMRTsKKyAgICAg ICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRzYW5f aW1wbC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdHNhbl9pbXBsLmgKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi41ODBhNzM4YjkxCistLS0gL2Rldi9udWxs CisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0c2FuX2ltcGwuaAorQEAgLTAsMCAr MSwxMTUgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAy MDE3IEludGVsIENvcnBvcmF0aW9uLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBLbGFyw6RsdmRh bGVucyBEYXRha29uc3VsdCBBQiwgYSBLREFCIEdyb3VwIGNvbXBhbnksIGluZm9Aa2RhYi5jb20s IGF1dGhvciBHaXVzZXBwZSBEJ0FuZ2VsbyA8Z2l1c2VwcGUuZGFuZ2Vsb0BrZGFiLmNvbT4KKysq KiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgUXRDb3JlIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgor KyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdl CisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkg dXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNl bnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5h dGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEg d3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGlj ZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rl cm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250 YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRo aXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysq KiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElD RU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQ bGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRz CisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAu aHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0 ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBv cHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBh bnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0 aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQor KyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5k IExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxl LiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUg bWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9F TkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2lmbmRlZiBRVFNB Tl9JTVBMX0gKKysjZGVmaW5lIFFUU0FOX0lNUExfSAorKworKyNpbmNsdWRlIDxRdENvcmUvcWds b2JhbC5oPgorKworKyNpZiAoX19oYXNfZmVhdHVyZSh0aHJlYWRfc2FuaXRpemVyKSB8fCBkZWZp bmVkKF9fU0FOSVRJWkVfVEhSRUFEX18pKSAmJiBfX2hhc19pbmNsdWRlKDxzYW5pdGl6ZXIvdHNh bl9pbnRlcmZhY2UuaD4pCisrIyAgZGVmaW5lIFFUX0JVSUxESU5HX1VOREVSX1RTQU4KKysjICBp bmNsdWRlIDxzYW5pdGl6ZXIvdHNhbl9pbnRlcmZhY2UuaD4KKysjZW5kaWYKKysKKytRVF9CRUdJ Tl9OQU1FU1BBQ0UKKysKKytuYW1lc3BhY2UgUXRUc2FuIHsKKysjaWZkZWYgUVRfQlVJTERJTkdf VU5ERVJfVFNBTgorK2lubGluZSB2b2lkIGZ1dGV4QWNxdWlyZSh2b2lkICphZGRyLCB2b2lkICph ZGRyMiA9IG51bGxwdHIpCisreworKyAgICAvLyBBIGZ1dGV4IGNhbGwgZW5zdXJlcyB0b3RhbCBv cmRlcmluZyBvbiB0aGUgZnV0ZXggd29yZHMKKysgICAgLy8gKGluIGVpdGhlciBzdWNjZXNzIG9y IGZhaWx1cmUgb2YgdGhlIGNhbGwpLiBJbnN0cnVjdCBUU0FOIGFjY29yZGluZ2x5LAorKyAgICAv LyBhcyBUU0FOIGRvZXMgbm90IHVuZGVyc3RhbmQgdGhlIGZ1dGV4KDIpIHN5c2NhbGwgKG9yIGVx dWl2YWxlbnQpLgorKyAgICA6Ol9fdHNhbl9hY3F1aXJlKGFkZHIpOworKyAgICBpZiAoYWRkcjIp CisrICAgICAgICA6Ol9fdHNhbl9hY3F1aXJlKGFkZHIyKTsKKyt9CisrCisraW5saW5lIHZvaWQg ZnV0ZXhSZWxlYXNlKHZvaWQgKmFkZHIsIHZvaWQgKmFkZHIyID0gbnVsbHB0cikKKyt7CisrICAg IGlmIChhZGRyMikKKysgICAgICAgIDo6X190c2FuX3JlbGVhc2UoYWRkcjIpOworKyAgICA6Ol9f dHNhbl9yZWxlYXNlKGFkZHIpOworK30KKysKKytpbmxpbmUgdm9pZCBtdXRleFByZUxvY2sodm9p ZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MpCisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wcmVfbG9j ayhhZGRyLCBmbGFncyk7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4UG9zdExvY2sodm9pZCAq YWRkciwgdW5zaWduZWQgZmxhZ3MsIGludCByZWN1cnNpb24pCisreworKyAgICA6Ol9fdHNhbl9t dXRleF9wb3N0X2xvY2soYWRkciwgZmxhZ3MsIHJlY3Vyc2lvbik7CisrfQorKworK2lubGluZSB2 b2lkIG11dGV4UHJlVW5sb2NrKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdzKQorK3sKKysgICAg OjpfX3RzYW5fbXV0ZXhfcHJlX3VubG9jayhhZGRyLCBmbGFncyk7CisrfQorKworK2lubGluZSB2 b2lkIG11dGV4UG9zdFVubG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAg IDo6X190c2FuX211dGV4X3Bvc3RfdW5sb2NrKGFkZHIsIGZsYWdzKTsKKyt9CisrCisrZW51bSA6 IHVuc2lnbmVkIHsKKysgICAgTXV0ZXhXcml0ZVJlZW50cmFudCA9IDo6X190c2FuX211dGV4X3dy aXRlX3JlZW50cmFudCwKKysgICAgVHJ5TG9jayA9IDo6X190c2FuX211dGV4X3RyeV9sb2NrLAor KyAgICBUcnlMb2NrRmFpbGVkID0gOjpfX3RzYW5fbXV0ZXhfdHJ5X2xvY2tfZmFpbGVkLAorK307 CisrI2Vsc2UKKytpbmxpbmUgdm9pZCBmdXRleEFjcXVpcmUodm9pZCAqLCB2b2lkICogPSBudWxs cHRyKSB7fQorK2lubGluZSB2b2lkIGZ1dGV4UmVsZWFzZSh2b2lkICosIHZvaWQgKiA9IG51bGxw dHIpIHt9CisrCisrZW51bSA6IHVuc2lnbmVkIHsKKysgICAgTXV0ZXhXcml0ZVJlZW50cmFudCwK KysgICAgVHJ5TG9jaywKKysgICAgVHJ5TG9ja0ZhaWxlZCwKKyt9OworK2lubGluZSB2b2lkIG11 dGV4UHJlTG9jayh2b2lkICosIHVuc2lnbmVkKSB7fQorK2lubGluZSB2b2lkIG11dGV4UG9zdExv Y2sodm9pZCAqLCB1bnNpZ25lZCwgaW50KSB7fQorK2lubGluZSB2b2lkIG11dGV4UHJlVW5sb2Nr KHZvaWQgKiwgdW5zaWduZWQpIHt9CisraW5saW5lIHZvaWQgbXV0ZXhQb3N0VW5sb2NrKHZvaWQg KiwgdW5zaWduZWQpIHt9CisrI2VuZGlmIC8vIFFUX0JVSUxESU5HX1VOREVSX1RTQU4KKyt9IC8v IG5hbWVzcGFjZSBRdFRzYW4KKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCisrI2VuZGlmIC8vIFFU U0FOX0lNUExfSAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXdhaXRj b25kaXRpb25fdW5peC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0 aW9uX3VuaXguY3BwCitpbmRleCA4OGIwNThmNDEwLi4wZjFkYTRkYzliIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcAorKysrIGIv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcAorQEAgLTIx Myw3ICsyMTMsNyBAQCBib29sIFFXYWl0Q29uZGl0aW9uOjp3YWl0KFFNdXRleCAqbXV0ZXgsIFFE ZWFkbGluZVRpbWVyIGRlYWRsaW5lKQorIHsKKyAgICAgaWYgKCEgbXV0ZXgpCisgICAgICAgICBy ZXR1cm4gZmFsc2U7CistICAgIGlmIChtdXRleC0+aXNSZWN1cnNpdmUoKSkgeworKyAgICBpZiAo c3RhdGljX2Nhc3Q8UUJhc2ljTXV0ZXggKj4obXV0ZXgpLT5pc1JlY3Vyc2l2ZSgpKSB7CisgICAg ICAgICBxV2FybmluZygiUVdhaXRDb25kaXRpb246IGNhbm5vdCB3YWl0IG9uIHJlY3Vyc2l2ZSBt dXRleGVzIik7CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGli L3RpbWUvcWRhdGV0aW1lLmNwcAoraW5kZXggZWMxMjU2OWUzZi4uMmMwYjA5ODA3OSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3FkYXRldGltZS5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvY29yZWxpYi90aW1lL3FkYXRldGltZS5jcHAKK0BAIC00Myw2ICs0Myw3IEBACisgI2lm IFFUX0NPTkZJRyhkYXRldGltZXBhcnNlcikKKyAjaW5jbHVkZSAicHJpdmF0ZS9xZGF0ZXRpbWVw YXJzZXJfcC5oIgorICNlbmRpZgorKyNpbmNsdWRlIDxwcml2YXRlL3FudW1lcmljX3AuaD4KKyAK KyAjaW5jbHVkZSAicWRhdGFzdHJlYW0uaCIKKyAjaW5jbHVkZSAicXNldC5oIgorQEAgLTE0Mjks OSArMTQzMCwxMSBAQCBRRGF0ZSBRRGF0ZTo6YWRkRGF5cyhxaW50NjQgbmRheXMpIGNvbnN0Cisg ICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgIHJldHVybiBRRGF0ZSgpOworIAorLSAgICAvLyBE dWUgdG8gbGltaXRzIG9uIG1pbkpkKCkgYW5kIG1heEpkKCkgd2Uga25vdyB0aGF0IGFueSBvdmVy ZmxvdworLSAgICAvLyB3aWxsIGJlIGludmFsaWQgYW5kIGNhdWdodCBieSBmcm9tSnVsaWFuRGF5 KCkuCistICAgIHJldHVybiBmcm9tSnVsaWFuRGF5KGpkICsgbmRheXMpOworKyAgICBxaW50NjQg cjsKKysgICAgaWYgKFFfVU5MSUtFTFkoYWRkX292ZXJmbG93KGpkLCBuZGF5cywgJnIpKSkKKysg ICAgICAgIHJldHVybiBRRGF0ZSgpOworKyAgICBlbHNlCisrICAgICAgICByZXR1cm4gZnJvbUp1 bGlhbkRheShyKTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGli L3RpbWUvcXRpbWV6b25lLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZS5j cHAKK2luZGV4IDAzMDllNDNlNTIuLjNkNDUxNjk2YTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGlt ZS9xdGltZXpvbmUuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoqCistKiogQ29weXJpZ2h0IChDKSAyMDEzIEpvaG4gTGF5dCA8amxheXRAa2RlLm9yZz4KKysq KiBDb3B5cmlnaHQgKEMpIDIwMjAgSm9obiBMYXl0IDxqbGF5dEBrZGUub3JnPgorICoqIENvbnRh Y3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBRdENvcmUgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTk3NSw5ICs5 NzUsMTUgQEAgUUxpc3Q8UUJ5dGVBcnJheT4gUVRpbWVab25lOjp3aW5kb3dzSWRUb0lhbmFJZHMo Y29uc3QgUUJ5dGVBcnJheSAmd2luZG93c0lkLAorIH0KKyAKKyAjaWZuZGVmIFFUX05PX0RBVEFT VFJFQU0KKysvLyBJbnZhbGlkLCBhcyBhbiBJQU5BIElEOiB0b28gbG9uZywgc3RhcnRzIHdpdGgg LSBhbmQgaGFzIG90aGVyIGludmFsaWQgY2hhcmFjdGVycyBpbiBpdAorK3N0YXRpYyBpbmxpbmUg UVN0cmluZyBpbnZhbGlkSWQoKSB7IHJldHVybiBRU3RyaW5nTGl0ZXJhbCgiLU5vIFRpbWUgWm9u ZSBTcGVjaWZpZWQhIik7IH0KKysKKyBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0cmVh bSAmZHMsIGNvbnN0IFFUaW1lWm9uZSAmdHopCisgeworLSAgICB0ei5kLT5zZXJpYWxpemUoZHMp OworKyAgICBpZiAodHouaXNWYWxpZCgpKQorKyAgICAgICAgdHouZC0+c2VyaWFsaXplKGRzKTsK KysgICAgZWxzZQorKyAgICAgICAgZHMgPDwgaW52YWxpZElkKCk7CisgICAgIHJldHVybiBkczsK KyB9CisgCitAQCAtOTg1LDcgKzk5MSw5IEBAIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KFFEYXRh U3RyZWFtICZkcywgUVRpbWVab25lICZ0eikKKyB7CisgICAgIFFTdHJpbmcgaWFuYUlkOworICAg ICBkcyA+PiBpYW5hSWQ7CistICAgIGlmIChpYW5hSWQgPT0gUUxhdGluMVN0cmluZygiT2Zmc2V0 RnJvbVV0YyIpKSB7CisrICAgIGlmIChpYW5hSWQgPT0gaW52YWxpZElkKCkpIHsKKysgICAgICAg IHR6ID0gUVRpbWVab25lKCk7CisrICAgIH0gZWxzZSBpZiAoaWFuYUlkID09IFFMYXRpbjFTdHJp bmcoIk9mZnNldEZyb21VdGMiKSkgeworICAgICAgICAgaW50IHV0Y09mZnNldDsKKyAgICAgICAg IFFTdHJpbmcgbmFtZTsKKyAgICAgICAgIFFTdHJpbmcgYWJicmV2aWF0aW9uOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3BwIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lcHJpdmF0ZV90ei5jcHAKK2luZGV4IGIxNjEx ZDdkZGIuLmE3YTZhNzJjY2YgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9x dGltZXpvbmVwcml2YXRlX3R6LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRp bWV6b25lcHJpdmF0ZV90ei5jcHAKK0BAIC00Miw2ICs0Miw3IEBACisgI2luY2x1ZGUgInF0aW1l em9uZS5oIgorICNpbmNsdWRlICJxdGltZXpvbmVwcml2YXRlX3AuaCIKKyAjaW5jbHVkZSAicHJp dmF0ZS9xbG9jYWxlX3Rvb2xzX3AuaCIKKysjaW5jbHVkZSAicHJpdmF0ZS9xbG9ja2luZ19wLmgi CisgCisgI2luY2x1ZGUgPFF0Q29yZS9RRGF0YVN0cmVhbT4KKyAjaW5jbHVkZSA8UXRDb3JlL1FE YXRlVGltZT4KK0BAIC02Miw2ICs2MywxMCBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAor KyNpZiBRVF9DT05GSUcoaWN1KQorK3N0YXRpYyBRQmFzaWNNdXRleCBzX2ljdV9tdXRleDsKKysj ZW5kaWYKKysKKyAvKgorICAgICBQcml2YXRlCisgCitAQCAtNjcwLDYgKzY3NSw5IEBAIFFUelRp bWVab25lUHJpdmF0ZTo6flFUelRpbWVab25lUHJpdmF0ZSgpCisgCisgUVR6VGltZVpvbmVQcml2 YXRlICpRVHpUaW1lWm9uZVByaXZhdGU6OmNsb25lKCkgY29uc3QKKyB7CisrI2lmIFFUX0NPTkZJ RyhpY3UpCisrICAgIGNvbnN0IGF1dG8gbG9jayA9IHF0X3Njb3BlZF9sb2NrKHNfaWN1X211dGV4 KTsKKysjZW5kaWYKKyAgICAgcmV0dXJuIG5ldyBRVHpUaW1lWm9uZVByaXZhdGUoKnRoaXMpOwor IH0KKyAKK0BAIC05MTMsMTIgKzkyMSwxNCBAQCBRU3RyaW5nIFFUelRpbWVab25lUHJpdmF0ZTo6 ZGlzcGxheU5hbWUocWludDY0IGF0TVNlY3NTaW5jZUVwb2NoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRTG9jYWxlICZsb2NhbGUpIGNvbnN0Cisgewor ICNpZiBRVF9DT05GSUcoaWN1KQorKyAgICBhdXRvIGxvY2sgPSBxdF91bmlxdWVfbG9jayhzX2lj dV9tdXRleCk7CisgICAgIGlmICghbV9pY3UpCisgICAgICAgICBtX2ljdSA9IG5ldyBRSWN1VGlt ZVpvbmVQcml2YXRlKG1faWQpOworICAgICAvLyBUT0RPIHNtYWxsIHJpc2sgbWF5IG5vdCBtYXRj aCBpZiB0cmFuIHRpbWVzIGRpZmZlciBkdWUgdG8gb3V0ZGF0ZWQgZmlsZXMKKyAgICAgLy8gVE9E TyBTb21lIHZhbGlkIFRaIG5hbWVzIGFyZSBub3QgdmFsaWQgSUNVIG5hbWVzLCB1c2UgdHJhbnNs YXRpb24gdGFibGU/CisgICAgIGlmIChtX2ljdS0+aXNWYWxpZCgpKQorICAgICAgICAgcmV0dXJu IG1faWN1LT5kaXNwbGF5TmFtZShhdE1TZWNzU2luY2VFcG9jaCwgbmFtZVR5cGUsIGxvY2FsZSk7 CisrICAgIGxvY2sudW5sb2NrKCk7CisgI2Vsc2UKKyAgICAgUV9VTlVTRUQobmFtZVR5cGUpCisg ICAgIFFfVU5VU0VEKGxvY2FsZSkKK0BAIC05MzIsMTIgKzk0MiwxNCBAQCBRU3RyaW5nIFFUelRp bWVab25lUHJpdmF0ZTo6ZGlzcGxheU5hbWUoUVRpbWVab25lOjpUaW1lVHlwZSB0aW1lVHlwZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUxvY2FsZSAm bG9jYWxlKSBjb25zdAorIHsKKyAjaWYgUVRfQ09ORklHKGljdSkKKysgICAgYXV0byBsb2NrID0g cXRfdW5pcXVlX2xvY2soc19pY3VfbXV0ZXgpOworICAgICBpZiAoIW1faWN1KQorICAgICAgICAg bV9pY3UgPSBuZXcgUUljdVRpbWVab25lUHJpdmF0ZShtX2lkKTsKKyAgICAgLy8gVE9ETyBzbWFs bCByaXNrIG1heSBub3QgbWF0Y2ggaWYgdHJhbiB0aW1lcyBkaWZmZXIgZHVlIHRvIG91dGRhdGVk IGZpbGVzCisgICAgIC8vIFRPRE8gU29tZSB2YWxpZCBUWiBuYW1lcyBhcmUgbm90IHZhbGlkIElD VSBuYW1lcywgdXNlIHRyYW5zbGF0aW9uIHRhYmxlPworICAgICBpZiAobV9pY3UtPmlzVmFsaWQo KSkKKyAgICAgICAgIHJldHVybiBtX2ljdS0+ZGlzcGxheU5hbWUodGltZVR5cGUsIG5hbWVUeXBl LCBsb2NhbGUpOworKyAgICBsb2NrLnVubG9jaygpOworICNlbHNlCisgICAgIFFfVU5VU0VEKHRp bWVUeXBlKQorICAgICBRX1VOVVNFRChuYW1lVHlwZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3Fh cnJheWRhdGEuaAoraW5kZXggZGNkOTU5MjRjMS4uZDAxNzM5ZTdlNiAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlkYXRhLmgKKysrKyBiL3F0YmFzZS9zcmMvY29y ZWxpYi90b29scy9xYXJyYXlkYXRhLmgKK0BAIC00Miw2ICs0Miw3IEBACisgCisgI2luY2x1ZGUg PFF0Q29yZS9xcmVmY291bnQuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGNz dGRpbnQ+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCitAQCAtNTgsMTQgKzU5LDE0IEBAIHN0 cnVjdCBRX0NPUkVfRVhQT1JUIFFBcnJheURhdGEKKyAgICAgeworICAgICAgICAgUV9BU1NFUlQo c2l6ZSA9PSAwCisgICAgICAgICAgICAgICAgIHx8IG9mZnNldCA8IDAgfHwgc2l6ZV90KG9mZnNl dCkgPj0gc2l6ZW9mKFFBcnJheURhdGEpKTsKKy0gICAgICAgIHJldHVybiByZWludGVycHJldF9j YXN0PGNoYXIgKj4odGhpcykgKyBvZmZzZXQ7CisrICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf Y2FzdDx2b2lkICo+IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyBvZmZzZXQp OworICAgICB9CisgCisgICAgIGNvbnN0IHZvaWQgKmRhdGEoKSBjb25zdAorICAgICB7CisgICAg ICAgICBRX0FTU0VSVChzaXplID09IDAKKyAgICAgICAgICAgICAgICAgfHwgb2Zmc2V0IDwgMCB8 fCBzaXplX3Qob2Zmc2V0KSA+PSBzaXplb2YoUUFycmF5RGF0YSkpOworLSAgICAgICAgcmV0dXJu IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPih0aGlzKSArIG9mZnNldDsKKysgICAgICAg IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQgKj4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0 cl90Pih0aGlzKSArIG9mZnNldCk7CisgICAgIH0KKyAKKyAgICAgLy8gVGhpcyByZWZlcnMgdG8g YXJyYXkgZGF0YSBtdXRhYmlsaXR5LCBub3QgImhlYWRlciBkYXRhIiByZXByZXNlbnRlZCBieQor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oIGIvcXRi YXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlzdF9wLmgKK2luZGV4IDViYTIzYjM0NGIuLjk5 NzQxMDIxMzYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0 X3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlzdF9wLmgKK0BAIC0x NjEsNyArMTYxLDcgQEAgY2xhc3MgUUZyZWVMaXN0CisgICAgICAgICAgICAgICAgIHJldHVybiBp OworICAgICAgICAgICAgIHggLT0gc2l6ZTsKKyAgICAgICAgIH0KKy0gICAgICAgIFFfQVNTRVJU KGZhbHNlKTsKKysgICAgICAgIFFfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgIHJldHVybiAtMTsK KyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lv bm51bWJlci5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmgKK2lu ZGV4IGQ0M2I4NmJhNTEuLjI4NDNmMmIwNDMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVs aWIvdG9vbHMvcXZlcnNpb25udW1iZXIuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xz L3F2ZXJzaW9ubnVtYmVyLmgKK0BAIC0yNzMsMTAgKzI3MywxMCBAQCBwdWJsaWM6CisgCisgICAg IFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgUVN0cmluZyB0b1N0cmluZygpIGNvbnN0 OworICNpZiBRVF9TVFJJTkdWSUVXX0xFVkVMIDwgMgorLSAgICBRX1JFUVVJUkVEX1JFU1VMVCBR X0NPUkVfRVhQT1JUIHN0YXRpYyBRX0RFQ0xfUFVSRV9GVU5DVElPTiBRVmVyc2lvbk51bWJlciBm cm9tU3RyaW5nKGNvbnN0IFFTdHJpbmcgJnN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxw dHIpOworKyAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRVmVyc2lv bk51bWJlciBmcm9tU3RyaW5nKGNvbnN0IFFTdHJpbmcgJnN0cmluZywgaW50ICpzdWZmaXhJbmRl eCA9IG51bGxwdHIpOworICNlbmRpZgorLSAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQ T1JUIHN0YXRpYyBRX0RFQ0xfUFVSRV9GVU5DVElPTiBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5n KFFMYXRpbjFTdHJpbmcgc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CistICAg IFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFfREVDTF9QVVJFX0ZVTkNU SU9OIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoUVN0cmluZ1ZpZXcgc3RyaW5nLCBpbnQgKnN1 ZmZpeEluZGV4ID0gbnVsbHB0cik7CisrICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBP UlQgc3RhdGljIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoUUxhdGluMVN0cmluZyBzdHJpbmcs IGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKysgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9D T1JFX0VYUE9SVCBzdGF0aWMgUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhRU3RyaW5nVmlldyBz dHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKyAKKyBwcml2YXRlOgorICNpZm5k ZWYgUVRfTk9fREFUQVNUUkVBTQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2lu dGVncmF0b3IuY3BwIGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAKK2luZGV4 IDViNjZjZTk3MWIuLjI4YTNiMGZmZWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2RidXMvcWRi dXNpbnRlZ3JhdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5j cHAKK0BAIC0xMTM1LDcgKzExMzUsMTMgQEAgdm9pZCBRREJ1c0Nvbm5lY3Rpb25Qcml2YXRlOjpj bG9zZUNvbm5lY3Rpb24oKQorICAgICAgICAgfQorICAgICB9CisgCistICAgIHFEZWxldGVBbGwo cGVuZGluZ0NhbGxzKTsKKysgICAgZm9yIChhdXRvIGl0ID0gcGVuZGluZ0NhbGxzLmJlZ2luKCk7 IGl0ICE9IHBlbmRpbmdDYWxscy5lbmQoKTsgKytpdCkgeworKyAgICAgICAgYXV0byBjYWxsID0g Kml0OworKyAgICAgICAgaWYgKCFjYWxsLT5yZWYuZGVyZWYoKSkgeworKyAgICAgICAgICAgIGRl bGV0ZSBjYWxsOworKyAgICAgICAgfQorKyAgICB9CisrICAgIHBlbmRpbmdDYWxscy5jbGVhcigp OworIAorICAgICAvLyBEaXNjb25uZWN0IGFsbCBzaWduYWxzIGZyb20gc2lnbmFsIGhvb2tzIGFu ZCBmcm9tIHRoZSBvYmplY3QgdHJlZSB0bworICAgICAvLyBhdm9pZCBRT2JqZWN0OjpkZXN0cm95 ZWQgYmVpbmcgc2VudCB0byBkYnVzIGRhZW1vbiB0aHJlYWQgd2hpY2ggaGFzCitAQCAtMjU4NCw2 ICsyNTkwLDExIEBAIFFEQnVzQ29ubmVjdGlvblByaXZhdGU6OmZpbmRNZXRhT2JqZWN0KGNvbnN0 IFFTdHJpbmcgJnNlcnZpY2UsIGNvbnN0IFFTdHJpbmcgJnBhCisgICAgICAgICBpZiAobW8pCisg ICAgICAgICAgICAgcmV0dXJuIG1vOworICAgICB9CisrICAgIGlmIChwYXRoLmlzRW1wdHkoKSkg eworKyAgICAgICAgZXJyb3IgPSBRREJ1c0Vycm9yKFFEQnVzRXJyb3I6OkludmFsaWRPYmplY3RQ YXRoLCBRTGF0aW4xU3RyaW5nKCJPYmplY3QgcGF0aCBjYW5ub3QgYmUgZW1wdHkiKSk7CisrICAg ICAgICBsYXN0RXJyb3IgPSBlcnJvcjsKKysgICAgICAgIHJldHVybiBudWxscHRyOworKyAgICB9 CisgCisgICAgIC8vIGludHJvc3BlY3QgdGhlIHRhcmdldCBvYmplY3QKKyAgICAgUURCdXNNZXNz YWdlIG1zZyA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9kQ2FsbChzZXJ2aWNlLCBwYXRoLAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwIGIvcXRiYXNl L3NyYy9kYnVzL3FkYnVzbWV0YW9iamVjdC5jcHAKK2luZGV4IDUyNjU1NjhmNDIuLjdlOWYwZjFh Y2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcAorKysr IGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9iamVjdC5jcHAKK0BAIC0yMTAsNiArMjEwLDkg QEAgUURCdXNNZXRhT2JqZWN0R2VuZXJhdG9yOjpmaW5kVHlwZShjb25zdCBRQnl0ZUFycmF5ICZz aWduYXR1cmUsCisgICAgICAgICB9IGVsc2UgaWYgKHNpZ25hdHVyZSA9PSAiYXtzc30iKSB7Cisg ICAgICAgICAgICAgcmVzdWx0Lm5hbWUgPSAiUU1hcDxRU3RyaW5nLFFTdHJpbmc+IjsKKyAgICAg ICAgICAgICB0eXBlID0gcU1ldGFUeXBlSWQ8UU1hcDxRU3RyaW5nLCBRU3RyaW5nPiA+KCk7Cisr ICAgICAgICB9IGVsc2UgaWYgKHNpZ25hdHVyZSA9PSAiYWF5IikgeworKyAgICAgICAgICAgIHJl c3VsdC5uYW1lID0gIlFCeXRlQXJyYXlMaXN0IjsKKysgICAgICAgICAgICB0eXBlID0gcU1ldGFU eXBlSWQ8UUJ5dGVBcnJheUxpc3Q+KCk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg IHJlc3VsdC5uYW1lID0gIntELUJ1cyB0eXBlIFwiIiArIHNpZ25hdHVyZSArICJcIn0iOworICAg ICAgICAgICAgIHR5cGUgPSByZWdpc3RlckNvbXBsZXhEQnVzVHlwZShyZXN1bHQubmFtZSk7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAgYi9x dGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlLmNwcAoraW5kZXggZDcwNWJmY2Ni NS4uMGNhZjNjODA4YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFj Y2Vzc2libGUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxl LmNwcAorQEAgLTU0LDYgKzU0LDcgQEAKKyAjaW5jbHVkZSA8UXRDb3JlL3FkZWJ1Zy5oPgorICNp bmNsdWRlIDxRdENvcmUvcWxvZ2dpbmdjYXRlZ29yeS5oPgorICNpbmNsdWRlIDxRdENvcmUvcW1l dGFvYmplY3QuaD4KKysjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcW1ldGFvYmplY3RfcC5oPgor ICNpbmNsdWRlIDxRdENvcmUvcWhhc2guaD4KKyAjaW5jbHVkZSA8cHJpdmF0ZS9xZmFjdG9yeWxv YWRlcl9wLmg+CisgCitAQCAtNjgxLDYgKzY4MiwyNSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAq UUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJsZUludGVyZmFjZShRT2JqZWN0ICpvYmplY3QpCisg ICAgIC8vIENyZWF0ZSBhIFFBY2Nlc3NpYmxlSW50ZXJmYWNlIGZvciB0aGUgb2JqZWN0IGNsYXNz LiBTdGFydCBieSB0aGUgbW9zdAorICAgICAvLyBkZXJpdmVkIGNsYXNzIGFuZCB3YWxrIHVwIHRo ZSBjbGFzcyBoaWVyYXJjaHkuCisgICAgIGNvbnN0IFFNZXRhT2JqZWN0ICptbyA9IG9iamVjdC0+ bWV0YU9iamVjdCgpOworKyAgICBjb25zdCBhdXRvICpvYmplY3RQcml2ID0gUU9iamVjdFByaXZh dGU6OmdldChvYmplY3QpOworKyAgICAvKgorKyAgICAgV2UgZG8gbm90IHdhbnQgdG8gY2FjaGUg ZWFjaCBhbmQgZXZlcnkgUU1MIG1ldGFvYmplY3QgKEJ1dHRvbl9RTUxUWVBFXzEyNCwKKysgICAg IEJ1dHRvbl9RTUxUWVBFXzEyNSwgZXRjLikuIFRob3NlIGR5bmFtaWMgbWV0YW9iamVjdHMgc2hv dWxkbid0IGhhdmUgYW4KKysgICAgIGFjY2Vzc2libGUgaW50ZXJmYWNlIGluIGFueSBjYXNlLiBJ bnN0ZWFkLCB3ZSBzdGFydCB0aGUgd2hvbGUgY2hlY2tpbmcKKysgICAgIHdpdGggdGhlIGZpcnN0 IG5vbi1keW5hbWljIG1ldGEtb2JqZWN0LiBUbyBhdm9pZCBwb3RlbnRpYWwgcmVncmVzc2lvbnMK KysgICAgIGluIG90aGVyIGFyZWFzIG9mIFF0IHRoYXQgYWxzbyB1c2UgZHluYW1pYyBtZXRhb2Jq ZWN0cywgd2Ugb25seSBkbyB0aGlzCisrICAgICBmb3Igb2JqZWN0cyB0aGF0IGFyZSBRTUwtcmVs YXRlZCAoYXBwcm94aW1hdGVkIGJ5IGNoZWNraW5nIHdoZXRoZXIgdGhleQorKyAgICAgaGF2ZSBk ZGF0YSBzZXQpLgorKyAgICAqLworKyAgICBjb25zdCBib29sIHFtbFJlbGF0ZWQgPSAhb2JqZWN0 UHJpdi0+aXNEZWxldGluZ0NoaWxkcmVuICYmCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9iamVjdFByaXYtPmRlY2xhcmF0aXZlRGF0YTsKKysgICAgd2hpbGUgKHFtbFJlbGF0ZWQgJiYg bW8pIHsKKysgICAgICAgIGF1dG8gbW9wID0gUU1ldGFPYmplY3RQcml2YXRlOjpnZXQobW8pOwor KyAgICAgICAgaWYgKCFtb3AgfHwgIShtb3AtPmZsYWdzICYgRHluYW1pY01ldGFPYmplY3QpKQor KyAgICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAgbW8gPSBtby0+c3VwZXJDbGFzcygpOwor KyAgICB9OworICAgICB3aGlsZSAobW8pIHsKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcgY24gPSBR TGF0aW4xU3RyaW5nKG1vLT5jbGFzc05hbWUoKSk7CisgCitAQCAtNjk2LDE0ICs3MTYsMTUgQEAg UUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZh Y2UoUU9iamVjdCAqb2JqZWN0KQorICAgICAgICAgLy8gRmluZCBhIFFBY2Nlc3NpYmxlUGx1Z2lu IChmYWN0b3J5KSBmb3IgdGhlIGNsYXNzIG5hbWUuIElmIHRoZXJlJ3MKKyAgICAgICAgIC8vIG5v IGVudHJ5IGluIHRoZSBjYWNoZSB0cnkgdG8gY3JlYXRlIGl0IHVzaW5nIHRoZSBwbHVnaW4gbG9h ZGVyLgorICAgICAgICAgaWYgKCFxQWNjZXNzaWJsZVBsdWdpbnMoKS0+Y29udGFpbnMoY24pKSB7 CisrICAgICAgICAgICAgUUFjY2Vzc2libGVQbHVnaW4gKmZhY3RvcnkgPSBudWxscHRyOyAvLyAw IG1lYW5zICJubyBwbHVnaW4gZm91bmQiLiBUaGlzIGlzIGNhY2hlZCBhcyB3ZWxsLgorICAgICAg ICAgICAgIGNvbnN0IGludCBpbmRleCA9IGxvYWRlcigpLT5pbmRleE9mKGNuKTsKKy0gICAgICAg ICAgICBpZiAoaW5kZXggIT0gLTEpIHsKKy0gICAgICAgICAgICAgICAgUUFjY2Vzc2libGVQbHVn aW4gKmZhY3RvcnkgPSBxb2JqZWN0X2Nhc3Q8UUFjY2Vzc2libGVQbHVnaW4gKj4obG9hZGVyKCkt Pmluc3RhbmNlKGluZGV4KSk7CistICAgICAgICAgICAgICAgIHFBY2Nlc3NpYmxlUGx1Z2lucygp LT5pbnNlcnQoY24sIGZhY3RvcnkpOworLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICBpZiAo aW5kZXggIT0gLTEpCisrICAgICAgICAgICAgICAgIGZhY3RvcnkgPSBxb2JqZWN0X2Nhc3Q8UUFj Y2Vzc2libGVQbHVnaW4gKj4obG9hZGVyKCktPmluc3RhbmNlKGluZGV4KSk7CisrICAgICAgICAg ICAgcUFjY2Vzc2libGVQbHVnaW5zKCktPmluc2VydChjbiwgZmFjdG9yeSk7CisgICAgICAgICB9 CisgCisgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBjYWNoZSBzaG91bGQgY29udGFpbiBh IHZhbGlkIGZhY3RvcnkgcG9pbnRlciBvciAwOgorKyAgICAgICAgUV9BU1NFUlQocUFjY2Vzc2li bGVQbHVnaW5zKCktPmNvbnRhaW5zKGNuKSk7CisgICAgICAgICBRQWNjZXNzaWJsZVBsdWdpbiAq ZmFjdG9yeSA9IHFBY2Nlc3NpYmxlUGx1Z2lucygpLT52YWx1ZShjbik7CisgICAgICAgICBpZiAo ZmFjdG9yeSkgeworICAgICAgICAgICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpyZXN1bHQgPSBm YWN0b3J5LT5jcmVhdGUoY24sIG9iamVjdCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkv Y29uZmlndXJlLmpzb24gYi9xdGJhc2Uvc3JjL2d1aS9jb25maWd1cmUuanNvbgoraW5kZXggMWYw ODc5NWM1Ny4uMTJjOTU3NDJkMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3Vy ZS5qc29uCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9jb25maWd1cmUuanNvbgorQEAgLTgzNCw3ICs4 MzQsOCBAQAorICAgICAgICAgICAgICAgICAgICAgIi8vIGVtYmVkZGVkIGRldmljZXMsIGFyZSBu b3QgaW50ZW5kZWQgdG8gYmUgdXNlZCB0b2dldGhlciB3aXRoIFguIEVHTCBzdXBwb3J0IiwKKyAg ICAgICAgICAgICAgICAgICAgICIvLyBoYXMgdG8gYmUgZGlzYWJsZWQgaW4gcGx1Z2lucyBsaWtl IHhjYiBpbiB0aGlzIGNhc2Ugc2luY2UgdGhlIG5hdGl2ZSBkaXNwbGF5LCIsCisgICAgICAgICAg ICAgICAgICAgICAiLy8gd2luZG93IGFuZCBwaXhtYXAgdHlwZXMgd2lsbCBiZSBkaWZmZXJlbnQg dGhhbiB3aGF0IGFuIFgtYmFzZWQgcGxhdGZvcm0iLAorLSAgICAgICAgICAgICAgICAgICAgIi8v IHBsdWdpbiB3b3VsZCBleHBlY3QuIgorKyAgICAgICAgICAgICAgICAgICAgIi8vIHBsdWdpbiB3 b3VsZCBleHBlY3QuIiwKKysgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIFVTRV9YMTEiCisg ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICJpbmNsdWRlIjogWyAiRUdML2Vn bC5oIiwgIlgxMS9YbGliLmgiIF0sCisgICAgICAgICAgICAgICAgICJtYWluIjogWworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcCBiL3F0YmFzZS9zcmMv Z3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcAoraW5kZXggOTZmMWU4Y2IxZC4uMGU3M2JiYmRiMCAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcAorKysrIGIv cXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhhbmRsZXIuY3BwCitAQCAtMTUwLDE2ICsxNTAsNDIg QEAgc3RhdGljIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KFFEYXRhU3RyZWFtICZzLCBjb25zdCBC TVBfSU5GT0hEUiAmYmkpCisgICAgIHJldHVybiBzOworIH0KKyAKKy1zdGF0aWMgaW50IGNhbGNf c2hpZnQodWludCBtYXNrKQorK3N0YXRpYyB1aW50IGNhbGNfc2hpZnQodWludCBtYXNrKQorIHsK Ky0gICAgaW50IHJlc3VsdCA9IDA7CistICAgIHdoaWxlIChtYXNrICYmICEobWFzayAmIDEpKSB7 CisrICAgIHVpbnQgcmVzdWx0ID0gMDsKKysgICAgd2hpbGUgKChtYXNrID49IDB4MTAwKSB8fCAo IShtYXNrICYgMSkgJiYgbWFzaykpIHsKKyAgICAgICAgIHJlc3VsdCsrOworICAgICAgICAgbWFz ayA+Pj0gMTsKKyAgICAgfQorICAgICByZXR1cm4gcmVzdWx0OworIH0KKyAKKytzdGF0aWMgdWlu dCBjYWxjX3NjYWxlKHVpbnQgbG93X21hc2spCisreworKyAgICB1aW50IHJlc3VsdCA9IDg7Cisr ICAgIHdoaWxlIChsb3dfbWFzayAmJiByZXN1bHQpIHsKKysgICAgICAgIHJlc3VsdC0tOworKyAg ICAgICAgbG93X21hc2sgPj49IDE7CisrICAgIH0KKysgICAgcmV0dXJuIHJlc3VsdDsKKyt9Cisr Cisrc3RhdGljIGlubGluZSB1aW50IGFwcGx5X3NjYWxlKHVpbnQgdmFsdWUsIHVpbnQgc2NhbGUp CisreworKyAgICBpZiAoIShzY2FsZSAmIDB4MDcpKSAvLyByZXR1cm4gaW1tZWRpYXRlbHkgaWYg c2NhbGUgPT0gOCBvciAwCisrICAgICAgICByZXR1cm4gdmFsdWU7CisrCisrICAgIHVpbnQgZmls bGVkID0gOCAtIHNjYWxlOworKyAgICB1aW50IHJlc3VsdCA9IHZhbHVlIDw8IHNjYWxlOworKwor KyAgICBkbyB7CisrICAgICAgICByZXN1bHQgfD0gcmVzdWx0ID4+IGZpbGxlZDsKKysgICAgICAg IGZpbGxlZCA8PD0gMTsKKysgICAgfSB3aGlsZSAoZmlsbGVkIDwgOCk7CisrCisrICAgIHJldHVy biByZXN1bHQ7CisrfQorKworIHN0YXRpYyBib29sIHJlYWRfZGliX2ZpbGVoZWFkZXIoUURhdGFT dHJlYW0gJnMsIEJNUF9GSUxFSERSICZiZikKKyB7CisgICAgIC8vIHJlYWQgQk1QIGZpbGUgaGVh ZGVyCitAQCAtMjIyLDE0ICsyNDgsMTQgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0 YVN0cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICB1 aW50IGdyZWVuX21hc2sgPSAwOworICAgICB1aW50IGJsdWVfbWFzayA9IDA7CisgICAgIHVpbnQg YWxwaGFfbWFzayA9IDA7CistICAgIGludCByZWRfc2hpZnQgPSAwOworLSAgICBpbnQgZ3JlZW5f c2hpZnQgPSAwOworLSAgICBpbnQgYmx1ZV9zaGlmdCA9IDA7CistICAgIGludCBhbHBoYV9zaGlm dCA9IDA7CistICAgIGludCByZWRfc2NhbGUgPSAwOworLSAgICBpbnQgZ3JlZW5fc2NhbGUgPSAw OworLSAgICBpbnQgYmx1ZV9zY2FsZSA9IDA7CistICAgIGludCBhbHBoYV9zY2FsZSA9IDA7Cisr ICAgIHVpbnQgcmVkX3NoaWZ0ID0gMDsKKysgICAgdWludCBncmVlbl9zaGlmdCA9IDA7CisrICAg IHVpbnQgYmx1ZV9zaGlmdCA9IDA7CisrICAgIHVpbnQgYWxwaGFfc2hpZnQgPSAwOworKyAgICB1 aW50IHJlZF9zY2FsZSA9IDA7CisrICAgIHVpbnQgZ3JlZW5fc2NhbGUgPSAwOworKyAgICB1aW50 IGJsdWVfc2NhbGUgPSAwOworKyAgICB1aW50IGFscGhhX3NjYWxlID0gMDsKKyAKKyAgICAgaWYg KCFkLT5pc1NlcXVlbnRpYWwoKSkKKyAgICAgICAgIGQtPnNlZWsoc3RhcnRwb3MgKyBCTVBfRklM RUhEUl9TSVpFICsgYmkuYmlTaXplKTsgLy8gZ290byBzdGFydCBvZiBjb2xvcm1hcCBvciBtYXNr cworQEAgLTMwOCwxOSArMzM0LDE5IEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFT dHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAgICAg IHJlZF9zaGlmdCA9IGNhbGNfc2hpZnQocmVkX21hc2spOworICAgICAgICAgaWYgKCgocmVkX21h c2sgPj4gcmVkX3NoaWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor LSAgICAgICAgcmVkX3NjYWxlID0gMjU2IC8gKChyZWRfbWFzayA+PiByZWRfc2hpZnQpICsgMSk7 CisrICAgICAgICByZWRfc2NhbGUgPSBjYWxjX3NjYWxlKHJlZF9tYXNrID4+IHJlZF9zaGlmdCk7 CisgICAgICAgICBncmVlbl9zaGlmdCA9IGNhbGNfc2hpZnQoZ3JlZW5fbWFzayk7CisgICAgICAg ICBpZiAoKChncmVlbl9tYXNrID4+IGdyZWVuX3NoaWZ0KSArIDEpID09IDApCisgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgZ3JlZW5fc2NhbGUgPSAyNTYgLyAoKGdyZWVuX21h c2sgPj4gZ3JlZW5fc2hpZnQpICsgMSk7CisrICAgICAgICBncmVlbl9zY2FsZSA9IGNhbGNfc2Nh bGUoZ3JlZW5fbWFzayA+PiBncmVlbl9zaGlmdCk7CisgICAgICAgICBibHVlX3NoaWZ0ID0gY2Fs Y19zaGlmdChibHVlX21hc2spOworICAgICAgICAgaWYgKCgoYmx1ZV9tYXNrID4+IGJsdWVfc2hp ZnQpICsgMSkgPT0gMCkKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICBibHVl X3NjYWxlID0gMjU2IC8gKChibHVlX21hc2sgPj4gYmx1ZV9zaGlmdCkgKyAxKTsKKysgICAgICAg IGJsdWVfc2NhbGUgPSBjYWxjX3NjYWxlKGJsdWVfbWFzayA+PiBibHVlX3NoaWZ0KTsKKyAgICAg ICAgIGFscGhhX3NoaWZ0ID0gY2FsY19zaGlmdChhbHBoYV9tYXNrKTsKKyAgICAgICAgIGlmICgo KGFscGhhX21hc2sgPj4gYWxwaGFfc2hpZnQpICsgMSkgPT0gMCkKKyAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7CistICAgICAgICBhbHBoYV9zY2FsZSA9IDI1NiAvICgoYWxwaGFfbWFzayA+PiBh bHBoYV9zaGlmdCkgKyAxKTsKKysgICAgICAgIGFscGhhX3NjYWxlID0gY2FsY19zY2FsZShhbHBo YV9tYXNrID4+IGFscGhhX3NoaWZ0KTsKKyAgICAgfSBlbHNlIGlmIChjb21wID09IEJNUF9SR0Ig JiYgKG5iaXRzID09IDI0IHx8IG5iaXRzID09IDMyKSkgeworICAgICAgICAgYmx1ZV9tYXNrID0g MHgwMDAwMDBmZjsKKyAgICAgICAgIGdyZWVuX21hc2sgPSAweDAwMDBmZjAwOworQEAgLTMyOCwx NyArMzU0LDE1IEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNv bnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAgICAgIGJsdWVfc2hpZnQg PSAwOworICAgICAgICAgZ3JlZW5fc2hpZnQgPSA4OworICAgICAgICAgcmVkX3NoaWZ0ID0gMTY7 CistICAgICAgICBibHVlX3NjYWxlID0gZ3JlZW5fc2NhbGUgPSByZWRfc2NhbGUgPSAxOworKyAg ICAgICAgYmx1ZV9zY2FsZSA9IGdyZWVuX3NjYWxlID0gcmVkX3NjYWxlID0gMDsKKyAgICAgfSBl bHNlIGlmIChjb21wID09IEJNUF9SR0IgJiYgbmJpdHMgPT0gMTYpIHsKKyAgICAgICAgIGJsdWVf bWFzayA9IDB4MDAxZjsKKyAgICAgICAgIGdyZWVuX21hc2sgPSAweDAzZTA7CisgICAgICAgICBy ZWRfbWFzayA9IDB4N2MwMDsKKyAgICAgICAgIGJsdWVfc2hpZnQgPSAwOworLSAgICAgICAgZ3Jl ZW5fc2hpZnQgPSAyOworLSAgICAgICAgcmVkX3NoaWZ0ID0gNzsKKy0gICAgICAgIHJlZF9zY2Fs ZSA9IDE7CistICAgICAgICBncmVlbl9zY2FsZSA9IDE7CistICAgICAgICBibHVlX3NjYWxlID0g ODsKKysgICAgICAgIGdyZWVuX3NoaWZ0ID0gNTsKKysgICAgICAgIHJlZF9zaGlmdCA9IDEwOwor KyAgICAgICAgYmx1ZV9zY2FsZSA9IGdyZWVuX3NjYWxlID0gcmVkX3NjYWxlID0gMzsKKyAgICAg fQorIAorICNpZiAwCitAQCAtNTQ0LDEwICs1NjgsMTAgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJf Ym9keShRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0 LAorICAgICAgICAgICAgICAgICAgICAgYyB8PSAqKHVjaGFyKikoYisyKTw8MTY7CisgICAgICAg ICAgICAgICAgIGlmIChuYml0cyA+IDI0KQorICAgICAgICAgICAgICAgICAgICAgYyB8PSAqKHVj aGFyKikoYiszKTw8MjQ7CistICAgICAgICAgICAgICAgICpwKysgPSBxUmdiYSgoKGMgJiByZWRf bWFzaykgPj4gcmVkX3NoaWZ0KSAqIHJlZF9zY2FsZSwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKChjICYgZ3JlZW5fbWFzaykgPj4gZ3JlZW5fc2hpZnQpICogZ3Jl ZW5fc2NhbGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYyAm IGJsdWVfbWFzaykgPj4gYmx1ZV9zaGlmdCkgKiBibHVlX3NjYWxlLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3AgPyAoKGMgJiBhbHBoYV9tYXNrKSA+PiBh bHBoYV9zaGlmdCkgKiBhbHBoYV9zY2FsZSA6IDB4ZmYpOworKyAgICAgICAgICAgICAgICAqcCsr ID0gcVJnYmEoYXBwbHlfc2NhbGUoKGMgJiByZWRfbWFzaykgPj4gcmVkX3NoaWZ0LCByZWRfc2Nh bGUpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlfc2NhbGUoKGMgJiBncmVl bl9tYXNrKSA+PiBncmVlbl9zaGlmdCwgZ3JlZW5fc2NhbGUpLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYXBwbHlfc2NhbGUoKGMgJiBibHVlX21hc2spID4+IGJsdWVfc2hpZnQsIGJs dWVfc2NhbGUpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwID8gYXBwbHlf c2NhbGUoKGMgJiBhbHBoYV9tYXNrKSA+PiBhbHBoYV9zaGlmdCwgYWxwaGFfc2NhbGUpIDogMHhm Zik7CisgICAgICAgICAgICAgICAgIGIgKz0gbmJpdHMvODsKKyAgICAgICAgICAgICB9CisgICAg ICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcCBiL3F0 YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAKK2luZGV4IDcxNTJhYzE2MDcuLjBkZjc3MjU2 NGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xaW1hZ2UuY3BwCisrKysgYi9x dGJhc2Uvc3JjL2d1aS9pbWFnZS9xaW1hZ2UuY3BwCitAQCAtNDY5NCw2ICs0Njk0LDggQEAgUUlt YWdlIFFJbWFnZTo6c21vb3RoU2NhbGVkKGludCB3LCBpbnQgaCkgY29uc3QgeworIHN0YXRpYyBR SW1hZ2Ugcm90YXRlZDkwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgeworICAgICBRSW1hZ2Ugb3V0 KGltYWdlLmhlaWdodCgpLCBpbWFnZS53aWR0aCgpLCBpbWFnZS5mb3JtYXQoKSk7CisrICAgIGlm IChvdXQuaXNOdWxsKCkpCisrICAgICAgICByZXR1cm4gb3V0OworICAgICBjb3B5TWV0YWRhdGEo Jm91dCwgaW1hZ2UpOworICAgICBpZiAoaW1hZ2UuY29sb3JDb3VudCgpID4gMCkKKyAgICAgICAg IG91dC5zZXRDb2xvclRhYmxlKGltYWdlLmNvbG9yVGFibGUoKSk7CitAQCAtNDcyMiw2ICs0NzI0 LDggQEAgc3RhdGljIFFJbWFnZSByb3RhdGVkMTgwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgICAg ICAgICByZXR1cm4gaW1hZ2UubWlycm9yZWQodHJ1ZSwgdHJ1ZSk7CisgCisgICAgIFFJbWFnZSBv dXQoaW1hZ2Uud2lkdGgoKSwgaW1hZ2UuaGVpZ2h0KCksIGltYWdlLmZvcm1hdCgpKTsKKysgICAg aWYgKG91dC5pc051bGwoKSkKKysgICAgICAgIHJldHVybiBvdXQ7CisgICAgIGNvcHlNZXRhZGF0 YSgmb3V0LCBpbWFnZSk7CisgICAgIGlmIChpbWFnZS5jb2xvckNvdW50KCkgPiAwKQorICAgICAg ICAgb3V0LnNldENvbG9yVGFibGUoaW1hZ2UuY29sb3JUYWJsZSgpKTsKK0BAIC00NzM0LDYgKzQ3 MzgsOCBAQCBzdGF0aWMgUUltYWdlIHJvdGF0ZWQxODAoY29uc3QgUUltYWdlICZpbWFnZSkKKyBz dGF0aWMgUUltYWdlIHJvdGF0ZWQyNzAoY29uc3QgUUltYWdlICZpbWFnZSkKKyB7CisgICAgIFFJ bWFnZSBvdXQoaW1hZ2UuaGVpZ2h0KCksIGltYWdlLndpZHRoKCksIGltYWdlLmZvcm1hdCgpKTsK KysgICAgaWYgKG91dC5pc051bGwoKSkKKysgICAgICAgIHJldHVybiBvdXQ7CisgICAgIGNvcHlN ZXRhZGF0YSgmb3V0LCBpbWFnZSk7CisgICAgIGlmIChpbWFnZS5jb2xvckNvdW50KCkgPiAwKQor ICAgICAgICAgb3V0LnNldENvbG9yVGFibGUoaW1hZ2UuY29sb3JUYWJsZSgpKTsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1cnNvci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9r ZXJuZWwvcWN1cnNvci5jcHAKK2luZGV4IGQ2Y2NhZmY4ZWQuLjQ1NTA4ODI0MWMgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1cnNvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xY3Vyc29yLmNwcAorQEAgLTI1MSw3ICsyNTEsOCBAQCB2b2lkIFFDdXJzb3I6 OnNldFBvcyhRU2NyZWVuICpzY3JlZW4sIGludCB4LCBpbnQgeSkKKyB7CisgICAgIGlmIChzY3Jl ZW4pIHsKKyAgICAgICAgIGlmIChRUGxhdGZvcm1DdXJzb3IgKmN1cnNvciA9IHNjcmVlbi0+aGFu ZGxlKCktPmN1cnNvcigpKSB7CistICAgICAgICAgICAgY29uc3QgUVBvaW50IGRldmljZVBvcyA9 IFFIaWdoRHBpOjp0b05hdGl2ZVBpeGVscyhRUG9pbnQoeCwgeSksIHNjcmVlbik7CisrICAgICAg ICAgICAgY29uc3QgUVBvaW50IHBvcyh4LCB5KTsKKysgICAgICAgICAgICBjb25zdCBRUG9pbnQg ZGV2aWNlUG9zID0gUUhpZ2hEcGk6OnRvTmF0aXZlUGl4ZWxzKHBvcywgc2NyZWVuLT52aXJ0dWFs U2libGluZ0F0KHBvcykpOworICAgICAgICAgICAgIC8vIE5lZWQgdG8gY2hlY2ssIHNpbmNlIHNv bWUgWCBzZXJ2ZXJzIGdlbmVyYXRlIG51bGwgbW91c2UgbW92ZQorICAgICAgICAgICAgIC8vIGV2 ZW50cywgY2F1c2luZyBsb29waW5nIGluIGFwcGxpY2F0aW9ucyB3aGljaCBjYWxsIHNldFBvcygp IG9uCisgICAgICAgICAgICAgLy8gZXZlcnkgbW91c2UgbW92ZSBldmVudC4KK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcCBiL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3BwCitpbmRleCA5YmJmMjc3M2E5Li4zYWM0YTRk OGI2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5j cHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3BwCitAQCAt NTgwLDkgKzU4MCw4IEBAIHZvaWQgUUhpZ2hEcGlTY2FsaW5nOjpzZXRTY3JlZW5GYWN0b3IoUVNj cmVlbiAqc2NyZWVuLCBxcmVhbCBmYWN0b3IpCisgICAgIGVsc2UKKyAgICAgICAgIHFOYW1lZFNj cmVlblNjYWxlRmFjdG9ycygpLT5pbnNlcnQobmFtZSwgZmFjdG9yKTsKKyAKKy0gICAgLy8gaGFj ayB0byBmb3JjZSByZS1ldmFsdWF0aW9uIG9mIHNjcmVlbiBnZW9tZXRyeQorICAgICBpZiAoc2Ny ZWVuLT5oYW5kbGUoKSkKKy0gICAgICAgIHNjcmVlbi0+ZF9mdW5jKCktPnNldFBsYXRmb3JtU2Ny ZWVuKHNjcmVlbi0+aGFuZGxlKCkpOyAvLyB1cGRhdGVzIGdlb21ldHJpZXMgYmFzZWQgb24gc2Nh bGUgZmFjdG9yCisrICAgICAgICBzY3JlZW4tPmRfZnVuYygpLT51cGRhdGVMb2dpY2FsRHBpKCk7 CisgfQorIAorIFFQb2ludCBRSGlnaERwaVNjYWxpbmc6Om1hcFBvc2l0aW9uVG9OYXRpdmUoY29u c3QgUVBvaW50ICZwb3MsIGNvbnN0IFFQbGF0Zm9ybVNjcmVlbiAqcGxhdGZvcm1TY3JlZW4pCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAgYi9xdGJh c2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlLmNwcAoraW5kZXggYTc1YjhlZjkyMC4uNGYy ZDI5NDczOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2Uu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlLmNwcAorQEAgLTcw MSw2ICs3MDEsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB7CisgICAgIHsgUXQ6OktleV9Ub3Vj aHBhZFRvZ2dsZSwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiVG91Y2hwYWQgVG9n Z2xlIikgfSwKKyAgICAgeyBRdDo6S2V5X1RvdWNocGFkT24sICBRVF9UUkFOU0xBVEVfTk9PUCgi UVNob3J0Y3V0IiwgIlRvdWNocGFkIE9uIikgfSwKKyAgICAgeyBRdDo6S2V5X1RvdWNocGFkT2Zm LCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJUb3VjaHBhZCBPZmYiKSB9LAorKyAg ICB7IFF0OjpLZXlfU2hpZnQsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlNoaWZ0 IikgfSwKKysgICAgeyBRdDo6S2V5X0NvbnRyb2wsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0 Y3V0IiwgIkNvbnRyb2wiKSB9LAorKyAgICB7IFF0OjpLZXlfQWx0LCAgUVRfVFJBTlNMQVRFX05P T1AoIlFTaG9ydGN1dCIsICJBbHQiKSB9LAorKyAgICB7IFF0OjpLZXlfTWV0YSwgIFFUX1RSQU5T TEFURV9OT09QKCJRU2hvcnRjdXQiLCAiTWV0YSIpIH0sCisgCisgfTsKKyBzdGF0aWMgUV9DT05T VEVYUFIgaW50IG51bUtleU5hbWVzID0gc2l6ZW9mIGtleW5hbWUgLyBzaXplb2YgKmtleW5hbWU7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmNw cCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAKK2luZGV4IGZk YzZhNmM0YWEuLmFjNDdmOThjNWQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwv cXBsYXRmb3Jtc2VydmljZXMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRm b3Jtc2VydmljZXMuY3BwCitAQCAtNTUsNiArNTUsMTkgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisg ICAgIFxicmllZiBUaGUgUVBsYXRmb3JtU2VydmljZXMgcHJvdmlkZXMgdGhlIGJhY2tlbmQgZm9y IGRlc2t0b3AtcmVsYXRlZCBmdW5jdGlvbmFsaXR5LgorICovCisgCisrLyohCisrICAgIFxlbnVt IFFQbGF0Zm9ybVNlcnZpY2VzOjpDYXBhYmlsaXR5CisrCisrICAgIENhcGFiaWxpdGllcyBhcmUg dXNlZCB0byBkZXRlcm1pbmUgYSBzcGVjaWZpYyBwbGF0Zm9ybSBzZXJ2aWNlJ3MgYXZhaWxhYmls aXR5LgorKworKyAgICBcdmFsdWUgQ29sb3JQaWNraW5nRnJvbVNjcmVlbiBUaGUgcGxhdGZvcm0g bmF0aXZlbHkgc3VwcG9ydHMgY29sb3IgcGlja2luZyBmcm9tIHNjcmVlbi4KKysgICAgVGhpcyBj YXBhYmlsaXR5IGluZGljYXRlcyB0aGF0IHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyAib3BhcXVlIiBj b2xvciBwaWNraW5nLCB3aGVyZSB0aGUKKysgICAgcGxhdGZvcm0gaW1wbGVtZW50cyBhIGNvbXBs ZXRlIHVzZXIgZXhwZXJpZW5jZSBmb3IgY29sb3IgcGlja2luZyBhbmQgb3V0cHV0cyBhIGNvbG9y LgorKyAgICBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIHRoZSBhcHBsaWNhdGlvbiBpbXBsZW1lbnRp bmcgdGhlIGNvbG9yIHBpY2tpbmcgdXNlciBleHBlcmllbmNlCisrICAgICh0YWtpbmcgY2FyZSBv ZiBzaG93aW5nIGEgY3Jvc3MgaGFpciwgaW5zdHJ1Y3RpbmcgdGhlIHBsYXRmb3JtIGludGVncmF0 aW9uIHRvIG9idGFpbgorKyAgICB0aGUgY29sb3IgYXQgYSBnaXZlbiBwaXhlbCwgZXRjLikuIFRo ZSByZWxhdGVkIHNlcnZpY2UgZnVuY3Rpb24gaXMgcGlja0NvbG9yKCkuCisrICovCisrCisgUVBs YXRmb3JtU2VydmljZXM6OlFQbGF0Zm9ybVNlcnZpY2VzKCkKKyB7IH0KKyAKK0BAIC04NSw1ICs5 OCwxNiBAQCBRQnl0ZUFycmF5IFFQbGF0Zm9ybVNlcnZpY2VzOjpkZXNrdG9wRW52aXJvbm1lbnQo KSBjb25zdAorICAgICByZXR1cm4gUUJ5dGVBcnJheSgiVU5LTk9XTiIpOworIH0KKyAKKytRUGxh dGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKlFQbGF0Zm9ybVNlcnZpY2VzOjpjb2xvclBpY2tlcihR V2luZG93ICpwYXJlbnQpCisreworKyAgICBRX1VOVVNFRChwYXJlbnQpOworKyAgICByZXR1cm4g bnVsbHB0cjsKKyt9CisrCisrYm9vbCBRUGxhdGZvcm1TZXJ2aWNlczo6aGFzQ2FwYWJpbGl0eShD YXBhYmlsaXR5IGNhcGFiaWxpdHkpIGNvbnN0CisreworKyAgICBRX1VOVVNFRChjYXBhYmlsaXR5 KQorKyAgICByZXR1cm4gZmFsc2U7CisrfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaCBiL3F0YmFzZS9z cmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5oCitpbmRleCA1ZGU5NmNmYTdkLi5hOGIy YTRjZTcxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZp Y2VzLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5oCitA QCAtNTAsMTYgKzUwLDMyIEBACisgLy8KKyAKKyAjaW5jbHVkZSA8UXRHdWkvcXRndWlnbG9iYWwu aD4KKysjaW5jbHVkZSA8UXRDb3JlL3FvYmplY3QuaD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UK KyAKKyBjbGFzcyBRVXJsOworK2NsYXNzIFFXaW5kb3c7CisrCisrY2xhc3MgUV9HVUlfRVhQT1JU IFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciA6IHB1YmxpYyBRT2JqZWN0CisreworKyAgICBR X09CSkVDVAorK3B1YmxpYzoKKysgICAgdXNpbmcgUU9iamVjdDo6UU9iamVjdDsKKysgICAgdmly dHVhbCB2b2lkIHBpY2tDb2xvcigpID0gMDsKKytRX1NJR05BTFM6CisrICAgIHZvaWQgY29sb3JQ aWNrZWQoY29uc3QgUUNvbG9yICZjb2xvcik7CisrfTsKKyAKKyBjbGFzcyBRX0dVSV9FWFBPUlQg UVBsYXRmb3JtU2VydmljZXMKKyB7CisgcHVibGljOgorICAgICBRX0RJU0FCTEVfQ09QWV9NT1ZF KFFQbGF0Zm9ybVNlcnZpY2VzKQorIAorKyAgICBlbnVtIENhcGFiaWxpdHkgeworKyAgICAgICAg Q29sb3JQaWNraW5nLAorKyAgICB9OworKworICAgICBRUGxhdGZvcm1TZXJ2aWNlcygpOworICAg ICB2aXJ0dWFsIH5RUGxhdGZvcm1TZXJ2aWNlcygpIHsgfQorIAorQEAgLTY3LDYgKzgzLDEwIEBA IHB1YmxpYzoKKyAgICAgdmlydHVhbCBib29sIG9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwp OworIAorICAgICB2aXJ0dWFsIFFCeXRlQXJyYXkgZGVza3RvcEVudmlyb25tZW50KCkgY29uc3Q7 CisrCisrICAgIHZpcnR1YWwgYm9vbCBoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0 eSkgY29uc3Q7CisrCisrICAgIHZpcnR1YWwgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpj b2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQgPSBudWxscHRyKTsKKyB9OworIAorIFFUX0VORF9O QU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhl bWUuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcAoraW5kZXgg NzE1MjFjMDMzOS4uMjMyNTg3MzI0NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5l bC9xcGxhdGZvcm10aGVtZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZv cm10aGVtZS5jcHAKK0BAIC0xNjMsNiArMTYzLDggQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisg ICAgIFx2YWx1ZSBTaG93U2hvcnRjdXRzSW5Db250ZXh0TWVudXMgKGJvb2wpIFdoZXRoZXIgdG8g ZGlzcGxheSBzaG9ydGN1dCBrZXkgc2VxdWVuY2VzIGluIGNvbnRleHQgbWVudXMuCisgCisrICAg IFx2YWx1ZSBCdXR0b25QcmVzc0tleXMgKFFMaXN0PFF0OjpLZXk+KSBBIGxpc3Qgb2Yga2V5cyB0 aGF0IGNhbiBiZSB1c2VkIHRvIHByZXNzIGJ1dHRvbnMgdmlhIGtleWJvYXJkIGlucHV0LgorKwor ICAgICBcc2EgdGhlbWVIaW50KCksIFFTdHlsZTo6cGl4ZWxNZXRyaWMoKQorICovCisgCitAQCAt NTYzLDYgKzU2NSw4IEBAIFFWYXJpYW50IFFQbGF0Zm9ybVRoZW1lOjpkZWZhdWx0VGhlbWVIaW50 KFRoZW1lSGludCBoaW50KQorICAgICAgICAgfQorICAgICBjYXNlIE1vdXNlUXVpY2tTZWxlY3Rp b25UaHJlc2hvbGQ6CisgICAgICAgICByZXR1cm4gUVZhcmlhbnQoMTApOworKyAgICBjYXNlIEJ1 dHRvblByZXNzS2V5czoKKysgICAgICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlKFFMaXN0 PFF0OjpLZXk+KHsgUXQ6OktleV9TcGFjZSwgUXQ6OktleV9TZWxlY3QgfSkpOworICAgICB9Cisg ICAgIHJldHVybiBRVmFyaWFudCgpOworIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9r ZXJuZWwvcXBsYXRmb3JtdGhlbWUuaCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10 aGVtZS5oCitpbmRleCAzMTg1ZmM0NTQxLi43ZTZjOWQ1NzQwIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xcGxhdGZvcm10aGVtZS5oCitAQCAtMTIwLDcgKzEyMCw4IEBAIHB1YmxpYzoKKyAgICAg ICAgIFRvdWNoRG91YmxlVGFwRGlzdGFuY2UsCisgICAgICAgICBTaG93U2hvcnRjdXRzSW5Db250 ZXh0TWVudXMsCisgICAgICAgICBJY29uRmFsbGJhY2tTZWFyY2hQYXRocywKKy0gICAgICAgIE1v dXNlUXVpY2tTZWxlY3Rpb25UaHJlc2hvbGQKKysgICAgICAgIE1vdXNlUXVpY2tTZWxlY3Rpb25U aHJlc2hvbGQsCisrICAgICAgICBCdXR0b25QcmVzc0tleXMKKyAgICAgfTsKKyAKKyAgICAgZW51 bSBEaWFsb2dUeXBlIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVl bi5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAKK2luZGV4IDhlMGViMzUx MTYuLjVkMTcyYTU4ZGQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVl bi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuLmNwcAorQEAgLTc3LDYg Kzc3LDEyIEBAIFFTY3JlZW46OlFTY3JlZW4oUVBsYXRmb3JtU2NyZWVuICpzY3JlZW4pCisgICAg IGQtPnNldFBsYXRmb3JtU2NyZWVuKHNjcmVlbik7CisgfQorIAorK3ZvaWQgUVNjcmVlblByaXZh dGU6OnVwZGF0ZUxvZ2ljYWxEcGkoKQorK3sKKysgICAgbG9naWNhbERwaSA9IFFQbGF0Zm9ybVNj cmVlbjo6b3ZlcnJpZGVEcGkocGxhdGZvcm1TY3JlZW4tPmxvZ2ljYWxEcGkoKSk7CisrICAgIHVw ZGF0ZUdlb21ldHJpZXNXaXRoU2lnbmFscygpOyAvLyB1cGRhdGVzIGdlb21ldHJpZXMgYmFzZWQg b24gc2NhbGUgZmFjdG9yCisrfQorKworIHZvaWQgUVNjcmVlblByaXZhdGU6OnVwZGF0ZUdlb21l dHJpZXNXaXRoU2lnbmFscygpCisgeworICAgICBjb25zdCBRUmVjdCBvbGRHZW9tZXRyeSA9IGdl b21ldHJ5OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaCBi L3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaAoraW5kZXggN2RhNTQyYzI1ZS4uZTUw ZmMzMTkwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaAor KysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW5fcC5oCitAQCAtNzAsNiArNzAsNyBA QCBwdWJsaWM6CisgICAgICAgICBnZW9tZXRyeSA9IHBsYXRmb3JtU2NyZWVuLT5kZXZpY2VJbmRl cGVuZGVudEdlb21ldHJ5KCk7CisgICAgICAgICBhdmFpbGFibGVHZW9tZXRyeSA9IFFIaWdoRHBp Ojpmcm9tTmF0aXZlKHBsYXRmb3JtU2NyZWVuLT5hdmFpbGFibGVHZW9tZXRyeSgpLCBRSGlnaERw aVNjYWxpbmc6OmZhY3RvcihwbGF0Zm9ybVNjcmVlbiksIGdlb21ldHJ5LnRvcExlZnQoKSk7Cisg ICAgIH0KKysgICAgdm9pZCB1cGRhdGVMb2dpY2FsRHBpKCk7CisgCisgICAgIHZvaWQgdXBkYXRl UHJpbWFyeU9yaWVudGF0aW9uKCk7CisgICAgIHZvaWQgdXBkYXRlR2VvbWV0cmllc1dpdGhTaWdu YWxzKCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJsZW5kZnVuY3Rp b25zX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgKK2lu ZGV4IDA4MGRhOThlYzQuLjY5OTdkNjJiM2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9w YWludGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGlu Zy9xYmxlbmRmdW5jdGlvbnNfcC5oCitAQCAtMjQ2LDI1ICsyNDYsMzIgQEAgdm9pZCBxdF90cmFu c2Zvcm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGR1ZHgsIGludCBkdmR4LCBpbnQgZHVk eSwgaW50IGR2ZHksIGludCB1MCwgaW50IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBCbGVuZGVyIGJsZW5kZXIpCisgeworLSAgICBpbnQgZnJvbVkgPSBxTWF4KHFSb3Vu ZCh0b3BZKSwgY2xpcC50b3AoKSk7CistICAgIGludCB0b1kgPSBxTWluKHFSb3VuZChib3R0b21Z KSwgY2xpcC50b3AoKSArIGNsaXAuaGVpZ2h0KCkpOworKyAgICBxaW50NjQgZnJvbVkgPSBxTWF4 KHFSb3VuZCh0b3BZKSwgY2xpcC50b3AoKSk7CisrICAgIHFpbnQ2NCB0b1kgPSBxTWluKHFSb3Vu ZChib3R0b21ZKSwgY2xpcC50b3AoKSArIGNsaXAuaGVpZ2h0KCkpOworICAgICBpZiAoZnJvbVkg Pj0gdG9ZKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBxcmVhbCBsZWZ0U2xvcGUgPSAoYm90 dG9tTGVmdC54IC0gdG9wTGVmdC54KSAvIChib3R0b21MZWZ0LnkgLSB0b3BMZWZ0LnkpOworICAg ICBxcmVhbCByaWdodFNsb3BlID0gKGJvdHRvbVJpZ2h0LnggLSB0b3BSaWdodC54KSAvIChib3R0 b21SaWdodC55IC0gdG9wUmlnaHQueSk7CistICAgIGludCBkeF9sID0gaW50KGxlZnRTbG9wZSAq IDB4MTAwMDApOworLSAgICBpbnQgZHhfciA9IGludChyaWdodFNsb3BlICogMHgxMDAwMCk7Cist ICAgIGludCB4X2wgPSBpbnQoKHRvcExlZnQueCArIChxcmVhbCgwLjUpICsgZnJvbVkgLSB0b3BM ZWZ0LnkpICogbGVmdFNsb3BlICsgcXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKy0gICAgaW50IHhf ciA9IGludCgodG9wUmlnaHQueCArIChxcmVhbCgwLjUpICsgZnJvbVkgLSB0b3BSaWdodC55KSAq IHJpZ2h0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAwMDApOworLQorLSAgICBpbnQgZnJvbVgs IHRvWCwgeDEsIHgyLCB1LCB2LCBpLCBpaTsKKysgICAgcWludDY0IGR4X2wgPSBxaW50NjQobGVm dFNsb3BlICogMHgxMDAwMCk7CisrICAgIHFpbnQ2NCBkeF9yID0gcWludDY0KHJpZ2h0U2xvcGUg KiAweDEwMDAwKTsKKysgICAgcWludDY0IHhfbCA9IHFpbnQ2NCgodG9wTGVmdC54ICsgKHFyZWFs KDAuNSkgKyBmcm9tWSAtIHRvcExlZnQueSkgKiBsZWZ0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4 MTAwMDApOworKyAgICBxaW50NjQgeF9yID0gcWludDY0KCh0b3BSaWdodC54ICsgKHFyZWFsKDAu NSkgKyBmcm9tWSAtIHRvcFJpZ2h0LnkpICogcmlnaHRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgx MDAwMCk7CisrCisrICAgIHFpbnQ2NCBzb3VyY2VSZWN0VG9wID0gcWludDY0KHNvdXJjZVJlY3Qu dG9wKCkpOworKyAgICBxaW50NjQgc291cmNlUmVjdExlZnQgPSBxaW50NjQoc291cmNlUmVjdC5s ZWZ0KCkpOworKyAgICBxaW50NjQgc291cmNlUmVjdFdpZHRoID0gcWludDY0KHNvdXJjZVJlY3Qu d2lkdGgoKSk7CisrICAgIHFpbnQ2NCBzb3VyY2VSZWN0SGVpZ2h0ID0gcWludDY0KHNvdXJjZVJl Y3QuaGVpZ2h0KCkpOworKyAgICBxaW50NjQgY2xpcExlZnQgPSBxaW50NjQoY2xpcC5sZWZ0KCkp OworKyAgICBxaW50NjQgY2xpcFdpZHRoID0gcWludDY0KGNsaXAud2lkdGgoKSk7CisrCisrICAg IHFpbnQ2NCBmcm9tWCwgdG9YLCB4MSwgeDIsIHUsIHYsIGksIGlpOworICAgICBEZXN0VCAqbGlu ZTsKKy0gICAgZm9yIChpbnQgeSA9IGZyb21ZOyB5IDwgdG9ZOyArK3kpIHsKKysgICAgZm9yIChx aW50NjQgeSA9IGZyb21ZOyB5IDwgdG9ZOyArK3kpIHsKKyAgICAgICAgIGxpbmUgPSByZWludGVy cHJldF9jYXN0PERlc3RUICo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIgKj4oZGVzdFBpeGVscykg KyB5ICogZGJwbCk7CisgCistICAgICAgICBmcm9tWCA9IHFNYXgoeF9sID4+IDE2LCBjbGlwLmxl ZnQoKSk7CistICAgICAgICB0b1ggPSBxTWluKHhfciA+PiAxNiwgY2xpcC5sZWZ0KCkgKyBjbGlw LndpZHRoKCkpOworKyAgICAgICAgZnJvbVggPSBxTWF4KHhfbCA+PiAxNiwgY2xpcExlZnQpOwor KyAgICAgICAgdG9YID0gcU1pbih4X3IgPj4gMTYsIGNsaXBMZWZ0ICsgY2xpcFdpZHRoKTsKKyAg ICAgICAgIGlmIChmcm9tWCA8IHRvWCkgeworICAgICAgICAgICAgIC8vIEJlY2F1c2Ugb2Ygcm91 bmRpbmcsIHdlIGNhbiBnZXQgc291cmNlIGNvb3JkaW5hdGVzIG91dHNpZGUgdGhlIHNvdXJjZSBp bWFnZS4KKyAgICAgICAgICAgICAvLyBDbGFtcCB0aGVzZSBjb29yZGluYXRlcyB0byB0aGUgc291 cmNlIHJlY3QgdG8gYXZvaWQgc2VnbWVudGF0aW9uIGZhdWx0IGFuZAorQEAgLTI3NSwxMCArMjgy LDEwIEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVs cywgaW50IGRicGwsCisgICAgICAgICAgICAgdSA9IHgxICogZHVkeCArIHkgKiBkdWR5ICsgdTA7 CisgICAgICAgICAgICAgdiA9IHgxICogZHZkeCArIHkgKiBkdmR5ICsgdjA7CisgICAgICAgICAg ICAgZm9yICg7IHgxIDwgdG9YOyArK3gxKSB7CistICAgICAgICAgICAgICAgIGludCB1dSA9IHUg Pj4gMTY7CistICAgICAgICAgICAgICAgIGludCB2diA9IHYgPj4gMTY7CistICAgICAgICAgICAg ICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0LmxlZnQoKSAmJiB1dSA8IHNvdXJjZVJlY3QubGVmdCgp ICsgc291cmNlUmVjdC53aWR0aCgpCistICAgICAgICAgICAgICAgICAgICAmJiB2diA+PSBzb3Vy Y2VSZWN0LnRvcCgpICYmIHZ2IDwgc291cmNlUmVjdC50b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0 KCkpIHsKKysgICAgICAgICAgICAgICAgcWludDY0IHV1ID0gdSA+PiAxNjsKKysgICAgICAgICAg ICAgICAgcWludDY0IHZ2ID0gdiA+PiAxNjsKKysgICAgICAgICAgICAgICAgaWYgKHV1ID49IHNv dXJjZVJlY3RMZWZ0ICYmIHV1IDwgc291cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGgKKysg ICAgICAgICAgICAgICAgICAgICYmIHZ2ID49IHNvdXJjZVJlY3RUb3AgJiYgdnYgPCBzb3VyY2VS ZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCkgeworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgdSArPSBkdWR4OworQEAgLTI5 MCwxMCArMjk3LDEwIEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAq ZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAgICAgICAgdSA9ICh4MiAtIDEpICogZHVkeCAr IHkgKiBkdWR5ICsgdTA7CisgICAgICAgICAgICAgdiA9ICh4MiAtIDEpICogZHZkeCArIHkgKiBk dmR5ICsgdjA7CisgICAgICAgICAgICAgZm9yICg7IHgyID4geDE7IC0teDIpIHsKKy0gICAgICAg ICAgICAgICAgaW50IHV1ID0gdSA+PiAxNjsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gdiA+ PiAxNjsKKy0gICAgICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJjZVJlY3QubGVmdCgpICYmIHV1 IDwgc291cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VSZWN0LndpZHRoKCkKKy0gICAgICAgICAgICAg ICAgICAgICYmIHZ2ID49IHNvdXJjZVJlY3QudG9wKCkgJiYgdnYgPCBzb3VyY2VSZWN0LnRvcCgp ICsgc291cmNlUmVjdC5oZWlnaHQoKSkgeworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSB1 ID4+IDE2OworKyAgICAgICAgICAgICAgICBxaW50NjQgdnYgPSB2ID4+IDE2OworKyAgICAgICAg ICAgICAgICBpZiAodXUgPj0gc291cmNlUmVjdExlZnQgJiYgdXUgPCBzb3VyY2VSZWN0TGVmdCAr IHNvdXJjZVJlY3RXaWR0aAorKyAgICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVj dFRvcCAmJiB2diA8IHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0KSB7CisgICAgICAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICB1IC09IGR1ZHg7CitAQCAtMzA4LDggKzMxNSw4IEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdl X3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAgICAgICAgLy8g QmVnaW5uaW5nIG9mIHRoZSBzY2FuIGxpbmUsIHdpdGggcGVyLXBpeGVsIGNoZWNrcy4KKyAgICAg ICAgICAgICBpID0geDEgLSBmcm9tWDsKKyAgICAgICAgICAgICB3aGlsZSAoaSkgeworLSAgICAg ICAgICAgICAgICBpbnQgdXUgPSBxQm91bmQoc291cmNlUmVjdC5sZWZ0KCksIHUgPj4gMTYsIHNv dXJjZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgpIC0gMSk7CistICAgICAgICAgICAg ICAgIGludCB2diA9IHFCb3VuZChzb3VyY2VSZWN0LnRvcCgpLCB2ID4+IDE2LCBzb3VyY2VSZWN0 LnRvcCgpICsgc291cmNlUmVjdC5oZWlnaHQoKSAtIDEpOworKyAgICAgICAgICAgICAgICBxaW50 NjQgdXUgPSBxQm91bmQoc291cmNlUmVjdExlZnQsIHUgPj4gMTYsIHNvdXJjZVJlY3RMZWZ0ICsg c291cmNlUmVjdFdpZHRoIC0gMSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9IHFCb3Vu ZChzb3VyY2VSZWN0VG9wLCB2ID4+IDE2LCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdo dCAtIDEpOworICAgICAgICAgICAgICAgICBibGVuZGVyLndyaXRlKGxpbmUsIHJlaW50ZXJwcmV0 X2Nhc3Q8Y29uc3QgU3JjVCAqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVjaGFyICo+KHNyY1Bp eGVscykgKyB2diAqIHNicGwpW3V1XSk7CisgICAgICAgICAgICAgICAgIHUgKz0gZHVkeDsKKyAg ICAgICAgICAgICAgICAgdiArPSBkdmR4OworQEAgLTM0OCw4ICszNTUsOCBAQCB2b2lkIHF0X3Ry YW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAg ICAgICAgICAgIC8vIEVuZCBvZiB0aGUgc2NhbiBsaW5lLCB3aXRoIHBlci1waXhlbCBjaGVja3Mu CisgICAgICAgICAgICAgaSA9IHRvWCAtIHgyOworICAgICAgICAgICAgIHdoaWxlIChpKSB7Cist ICAgICAgICAgICAgICAgIGludCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0LmxlZnQoKSwgdSA+PiAx Niwgc291cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VSZWN0LndpZHRoKCkgLSAxKTsKKy0gICAgICAg ICAgICAgICAgaW50IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3QudG9wKCksIHYgPj4gMTYsIHNvdXJj ZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgpIC0gMSk7CisrICAgICAgICAgICAgICAg IHFpbnQ2NCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0TGVmdCwgdSA+PiAxNiwgc291cmNlUmVjdExl ZnQgKyBzb3VyY2VSZWN0V2lkdGggLSAxKTsKKysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0g cUJvdW5kKHNvdXJjZVJlY3RUb3AsIHYgPj4gMTYsIHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0 SGVpZ2h0IC0gMSk7CisgICAgICAgICAgICAgICAgIGJsZW5kZXIud3JpdGUobGluZSwgcmVpbnRl cnByZXRfY2FzdDxjb25zdCBTcmNUICo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWNoYXIgKj4o c3JjUGl4ZWxzKSArIHZ2ICogc2JwbClbdXVdKTsKKyAgICAgICAgICAgICAgICAgdSArPSBkdWR4 OworICAgICAgICAgICAgICAgICB2ICs9IGR2ZHg7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9n dWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fj b2xvcnRyY2x1dF9wLmgKK2luZGV4IDc2YTZhNjA4MDMuLjI0ZmQ1MjJlNmMgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29sb3J0cmNsdXRfcC5oCisrKysgYi9xdGJhc2Uv c3JjL2d1aS9wYWludGluZy9xY29sb3J0cmNsdXRfcC5oCitAQCAtMTE4LDYgKzExOCw3IEBAIHB1 YmxpYzoKKyAgICAgICAgIHJldHVybiBRUmdiYTY0Ojpmcm9tUmdiYTY0KHIsIGcsIGIsIHFBbHBo YShyZ2IzMikgKiAyNTcpOworICNlbmRpZgorICAgICB9CisrICAgIFFSZ2JhNjQgdG9MaW5lYXI2 NChRUmdiYTY0KSBjb25zdCA9IGRlbGV0ZTsKKyAKKyAgICAgUVJnYiB0b0xpbmVhcihRUmdiIHJn YjMyKSBjb25zdAorICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cWRyYXdoZWxwZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3Bw CitpbmRleCBhNjE3OTM1MDhhLi41YmEyZDI3N2I3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9n dWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGlu Zy9xZHJhd2hlbHBlci5jcHAKK0BAIC02MDkxLDcgKzYwOTEsNyBAQCBzdGF0aWMgaW5saW5lIHZv aWQgYWxwaGFyZ2JibGVuZF9hcmdiMzIocXVpbnQzMiAqZHN0LCB1aW50IGNvdmVyYWdlLCBjb25z dCBRUmdiYQorIHN0YXRpYyBpbmxpbmUgdm9pZCByZ2JCbGVuZFBpeGVsKFFSZ2JhNjQgJmRzdCwg aW50IGNvdmVyYWdlLCBRUmdiYTY0IHNsaW5lYXIsIGNvbnN0IFFDb2xvclRyY0x1dCAqY29sb3JQ cm9maWxlKQorIHsKKyAgICAgLy8gRG8gYSBnYW1tYWNvcnJlY3RlZCBSR0IgYWxwaGFibGVuZC4u LgorLSAgICBjb25zdCBRUmdiYTY0IGRsaW5lYXIgPSBjb2xvclByb2ZpbGUgPyBjb2xvclByb2Zp bGUtPnRvTGluZWFyNjQoZHN0KSA6IGRzdDsKKysgICAgY29uc3QgUVJnYmE2NCBkbGluZWFyID0g Y29sb3JQcm9maWxlID8gY29sb3JQcm9maWxlLT50b0xpbmVhcihkc3QpIDogZHN0OworIAorICAg ICBRUmdiYTY0IGJsZW5kID0gcmdiQmxlbmQoZGxpbmVhciwgc2xpbmVhciwgY292ZXJhZ2UpOwor IAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0 ZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAK K2luZGV4IDI4MzkyM2RlNTIuLmYwOGViOWNiZWUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAKK0BAIC01NjAsMzEgKzU2MCw2IEBAIHZv aWQgUVJhc3RlclBhaW50RW5naW5lOjp1cGRhdGVNYXRyaXgoY29uc3QgUVRyYW5zZm9ybSAmbWF0 cml4KQorICAgICBRUmFzdGVyUGFpbnRFbmdpbmVTdGF0ZSAqcyA9IHN0YXRlKCk7CisgICAgIC8v IEZBTENPTjogZ2V0IHJpZCBvZiB0aGlzIGxpbmUsIHNlZSBkcmF3SW1hZ2UgY2FsbCBiZWxvdy4K KyAgICAgcy0+bWF0cml4ID0gbWF0cml4OworLSAgICBRVHJhbnNmb3JtOjpUcmFuc2Zvcm1hdGlv blR5cGUgdHhvcCA9IHMtPm1hdHJpeC50eXBlKCk7CistCistICAgIHN3aXRjaCAodHhvcCkgewor LQorLSAgICBjYXNlIFFUcmFuc2Zvcm06OlR4Tm9uZToKKy0gICAgICAgIHMtPmZsYWdzLmludF94 Zm9ybSA9IHRydWU7CistICAgICAgICBicmVhazsKKy0KKy0gICAgY2FzZSBRVHJhbnNmb3JtOjpU eFRyYW5zbGF0ZToKKy0gICAgICAgIHMtPmZsYWdzLmludF94Zm9ybSA9IHFyZWFsKGludChzLT5t YXRyaXguZHgoKSkpID09IHMtPm1hdHJpeC5keCgpCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICYmIHFyZWFsKGludChzLT5tYXRyaXguZHkoKSkpID09IHMtPm1hdHJpeC5keSgpOworLSAg ICAgICAgYnJlYWs7CistCistICAgIGNhc2UgUVRyYW5zZm9ybTo6VHhTY2FsZToKKy0gICAgICAg IHMtPmZsYWdzLmludF94Zm9ybSA9IHFyZWFsKGludChzLT5tYXRyaXguZHgoKSkpID09IHMtPm1h dHJpeC5keCgpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5t YXRyaXguZHkoKSkpID09IHMtPm1hdHJpeC5keSgpCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICYmIHFyZWFsKGludChzLT5tYXRyaXgubTExKCkpKSA9PSBzLT5tYXRyaXgubTExKCkKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5tMjIoKSkp ID09IHMtPm1hdHJpeC5tMjIoKTsKKy0gICAgICAgIGJyZWFrOworLQorLSAgICBkZWZhdWx0OiAv LyBzaGVhciAvIHBlcnNwZWN0aXZlLi4uCistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSBm YWxzZTsKKy0gICAgICAgIGJyZWFrOworLSAgICB9CistCisgICAgIHMtPmZsYWdzLnR4X25vc2hl YXIgPSBxdF9zY2FsZUZvclRyYW5zZm9ybShzLT5tYXRyaXgsICZzLT50eHNjYWxlKTsKKyAKKyAg ICAgZW5zdXJlT3V0bGluZU1hcHBlcigpOworQEAgLTYxNyw3ICs1OTIsNiBAQCBRUmFzdGVyUGFp bnRFbmdpbmVTdGF0ZTo6UVJhc3RlclBhaW50RW5naW5lU3RhdGUoKQorICAgICBmbGFncy5iaWxp bmVhciA9IGZhbHNlOworICAgICBmbGFncy5sZWdhY3lfcm91bmRpbmcgPSBmYWxzZTsKKyAgICAg ZmxhZ3MuZmFzdF90ZXh0ID0gdHJ1ZTsKKy0gICAgZmxhZ3MuaW50X3hmb3JtID0gdHJ1ZTsKKyAg ICAgZmxhZ3MudHhfbm9zaGVhciA9IHRydWU7CisgICAgIGZsYWdzLmZhc3RfaW1hZ2VzID0gdHJ1 ZTsKKyAKK0BAIC0xNzkzLDcgKzE3NjcsNyBAQCB2b2lkIFFSYXN0ZXJQYWludEVuZ2luZTo6Zmls bChjb25zdCBRVmVjdG9yUGF0aCAmcGF0aCwgY29uc3QgUUJydXNoICZicnVzaCkKKyAgICAgUVJl Y3RGIGNwUmVjdCA9IHBhdGguY29udHJvbFBvaW50UmVjdCgpOworICAgICBjb25zdCBRUmVjdEYg cGF0aERldmljZVJlY3QgPSBzLT5tYXRyaXgubWFwUmVjdChjcFJlY3QpOworICAgICAvLyBTa2lw IHBhdGhzIHRoYXQgYnkgY29uc2VydmF0aXZlIGVzdGltYXRlcyBhcmUgY29tcGxldGVseSBvdXRz aWRlIHRoZSBwYWludCBkZXZpY2UuCistICAgIGlmICghcGF0aERldmljZVJlY3QuaW50ZXJzZWN0 cyhRUmVjdEYoZC0+ZGV2aWNlUmVjdCkpKQorKyAgICBpZiAoIXBhdGhEZXZpY2VSZWN0LmludGVy c2VjdHMoUVJlY3RGKGQtPmRldmljZVJlY3QpKSB8fCAhcGF0aERldmljZVJlY3QuaXNWYWxpZCgp KQorICAgICAgICAgcmV0dXJuOworIAorICAgICBQcm9jZXNzU3BhbnMgYmxlbmQgPSBkLT5nZXRC cnVzaEZ1bmMocGF0aERldmljZVJlY3QsICZzLT5icnVzaERhdGEpOworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oIGIvcXRiYXNlL3Ny Yy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlcl9wLmgKK2luZGV4IDA4OWFhZGMzZjcu LmJmNzM2M2Q1YWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRl bmdpbmVfcmFzdGVyX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5n aW5lX3Jhc3Rlcl9wLmgKK0BAIC0xMTEsNyArMTExLDYgQEAgcHVibGljOgorICAgICAgICAgdWlu dCBiaWxpbmVhciA6IDE7CisgICAgICAgICB1aW50IGxlZ2FjeV9yb3VuZGluZyA6IDE7CisgICAg ICAgICB1aW50IGZhc3RfdGV4dCA6IDE7CistICAgICAgICB1aW50IGludF94Zm9ybSA6IDE7Cisg ICAgICAgICB1aW50IHR4X25vc2hlYXIgOiAxOworICAgICAgICAgdWludCBmYXN0X2ltYWdlcyA6 IDE7CisgICAgIH07CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50 ZXJwYXRoLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAKK2lu ZGV4IGY5NTQ0YTMyNDEuLmQ4MGZhZmVhZjEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9w YWludGluZy9xcGFpbnRlcnBhdGguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x cGFpbnRlcnBhdGguY3BwCitAQCAtMTI1Myw3ICsxMjUzLDcgQEAgdm9pZCBRUGFpbnRlclBhdGg6 OmFkZFRleHQoY29uc3QgUVBvaW50RiAmcG9pbnQsIGNvbnN0IFFGb250ICZmLCBjb25zdCBRU3Ry aW5nICYKKyAKKyAgICAgICAgIGlmIChzaS5hbmFseXNpcy5mbGFncyA8IFFTY3JpcHRBbmFseXNp czo6VGFiT3JPYmplY3QpIHsKKyAgICAgICAgICAgICBRR2x5cGhMYXlvdXQgZ2x5cGhzID0gZW5n LT5zaGFwZWRHbHlwaHMoJnNpKTsKKy0gICAgICAgICAgICBRRm9udEVuZ2luZSAqZmUgPSBmLmQt PmVuZ2luZUZvclNjcmlwdChzaS5hbmFseXNpcy5zY3JpcHQpOworKyAgICAgICAgICAgIFFGb250 RW5naW5lICpmZSA9IGVuZy0+Zm9udEVuZ2luZShzaSk7CisgICAgICAgICAgICAgUV9BU1NFUlQo ZmUpOworICAgICAgICAgICAgIGZlLT5hZGRPdXRsaW5lVG9QYXRoKHgsIHksIGdseXBocywgdGhp cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaS5hbmFseXNpcy5iaWRpTGV2 ZWwgJSAyCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlwcGVy X3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYXRoY2xpcHBlcl9wLmgKK2luZGV4IDk0 NDRhODdiNzEuLjE4ZjY0YzVlOGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGlu Zy9xcGF0aGNsaXBwZXJfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNs aXBwZXJfcC5oCitAQCAtMTU2LDcgKzE1Niw3IEBAIHB1YmxpYzoKKyAgICAgaW50IHZlcnRleChE aXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdDsKKyAKKyBwcml2YXRlOgorLSAgICBpbnQgbV9uZXh0 WzJdWzJdOworKyAgICBpbnQgbV9uZXh0WzJdWzJdID0geyB7IC0xLCAtMSB9LCB7IC0xLCAtMSB9 IH07CisgfTsKKyAKKyBjbGFzcyBRUGF0aFNlZ21lbnRzCitAQCAtMjk2LDEwICsyOTYsNiBAQCBp bmxpbmUgUVBhdGhFZGdlOjpRUGF0aEVkZ2UoaW50IGEsIGludCBiKQorICAgICAsIGFuZ2xlKDAp CisgICAgICwgaW52QW5nbGUoMCkKKyB7CistICAgIG1fbmV4dFswXVswXSA9IC0xOworLSAgICBt X25leHRbMV1bMF0gPSAtMTsKKy0gICAgbV9uZXh0WzBdWzBdID0gLTE7CistICAgIG1fbmV4dFsx XVswXSA9IC0xOworIH0KKyAKKyBpbmxpbmUgaW50IFFQYXRoRWRnZTo6bmV4dChUcmF2ZXJzYWwg dHJhdmVyc2FsLCBEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYuY3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBk Zi5jcHAKK2luZGV4IDMwNjY3NDRmMWIuLjJjOGQzYzNiNTMgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2d1aS9wYWludGluZy9xcGRmLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cXBkZi5jcHAKK0BAIC0yNzYwLDYgKzI3NjAsOCBAQCBpbnQgUVBkZkVuZ2luZVByaXZhdGU6OmFk ZEJydXNoUGF0dGVybihjb25zdCBRVHJhbnNmb3JtICZtLCBib29sICpzcGVjaWZ5Q29sb3IsCisg ICAgICAgICByZXR1cm4gZ3JhZGllbnRCcnVzaChicnVzaCwgbWF0cml4LCBnU3RhdGVPYmplY3Qp OworICAgICB9CisgCisrICAgIG1hdHJpeCA9IGJydXNoLnRyYW5zZm9ybSgpICogbWF0cml4Owor KworICAgICBpZiAoKCFicnVzaC5pc09wYXF1ZSgpICYmIGJydXNoLnN0eWxlKCkgPCBRdDo6TGlu ZWFyR3JhZGllbnRQYXR0ZXJuKSB8fCBvcGFjaXR5ICE9IDEuMCkKKyAgICAgICAgICpnU3RhdGVP YmplY3QgPSBhZGRDb25zdGFudEFscGhhT2JqZWN0KHFSb3VuZChicnVzaC5jb2xvcigpLmFscGhh KCkgKiBvcGFjaXR5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHFSb3VuZChwZW4uY29sb3IoKS5hbHBoYSgpICogb3BhY2l0eSkpOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FzdHJva2VyLmNwcCBiL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FzdHJva2VyLmNwcAoraW5kZXggY2I1ZDM5NWU4MC4uM2I2MzU3YTg5MyAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FzdHJva2VyLmNwcAorKysrIGIvcXRi YXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9rZXIuY3BwCitAQCAtMTE4Miw2ICsxMTgyLDcgQEAg dm9pZCBRRGFzaFN0cm9rZXI6OnByb2Nlc3NDdXJyZW50U3VicGF0aCgpCisgICAgICAgICAvLyBD aGVjayBpZiB0aGUgZW50aXJlIGxpbmUgc2hvdWxkIGJlIGNsaXBwZWQgYXdheSBvciBzaW1wbGlm aWVkCisgICAgICAgICBib29sIGNsaXBJdCA9IGNsaXBwaW5nICYmICFsaW5lSW50ZXJzZWN0c1Jl Y3QocHJldiwgZSwgY2xpcF90bCwgY2xpcF9icik7CisgICAgICAgICBib29sIHNraXBEYXNoaW5n ID0gZWxlbiAqIGludlN1bUxlbmd0aCA+IHJlcGV0aXRpb25MaW1pdCgpOworKyAgICAgICAgaW50 IG1heERhc2hlcyA9IGRhc2hDb3VudDsKKyAgICAgICAgIGlmIChza2lwRGFzaGluZyB8fCBjbGlw SXQpIHsKKyAgICAgICAgICAgICAvLyBDdXQgYXdheSBmdWxsIGRhc2ggc2VxdWVuY2VzLgorICAg ICAgICAgICAgIGVsZW4gLT0gc3RkOjpmbG9vcihlbGVuICogaW52U3VtTGVuZ3RoKSAqIHN1bUxl bmd0aDsKK0BAIC0xMTk2LDcgKzExOTcsNyBAQCB2b2lkIFFEYXNoU3Ryb2tlcjo6cHJvY2Vzc0N1 cnJlbnRTdWJwYXRoKCkKKyAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGVzdG9wOyAvLyBtb3Zl IHBvcyB0byBuZXh0IHBhdGggZWxlbWVudAorICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRy dWU7CisgICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIERhc2ggaXMgb24gdGhpcyBsaW5lCist ICAgICAgICAgICAgICAgICAgICBwb3MgPSBkcG9zICsgZXN0YXJ0OworKyAgICAgICAgICAgICAg ICAgICAgcG9zID0gLS1tYXhEYXNoZXMgPiAwID8gZHBvcyArIGVzdGFydCA6IGVzdG9wOworICAg ICAgICAgICAgICAgICAgICAgZG9uZSA9IHBvcyA+PSBlc3RvcDsKKyAgICAgICAgICAgICAgICAg ICAgIGlmICgrK2lkYXNoID49IGRhc2hDb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBp ZGFzaCA9IDA7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXRfYXR0cmli dXRpb24uanNvbiBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24K K2luZGV4IDdiMTZlOGMyMTEuLjBlODdkMzBhYTIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29uCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWlu dGluZy9xdF9hdHRyaWJ1dGlvbi5qc29uCitAQCAtMTAsNyArMTAsNyBAQAorICAgICAgICAgIkhv bWVwYWdlIjogImh0dHA6Ly93d3cuZnJlZXR5cGUub3JnIiwKKyAgICAgICAgICJMaWNlbnNlIjog IkZyZWV0eXBlIFByb2plY3QgTGljZW5zZSBvciBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 Mi4wIG9ubHkiLAorICAgICAgICAgIkxpY2Vuc2VJZCI6ICJGVEwgb3IgR1BMLTIuMCIsCistICAg ICAgICAiTGljZW5zZUZpbGUiOiAiLi4vLi4vM3JkcGFydHkvZnJlZXR5cGUvZG9jcy9MSUNFTlNF LlRYVCIsCisrICAgICAgICAiTGljZW5zZUZpbGUiOiAiLi4vLi4vM3JkcGFydHkvZnJlZXR5cGUv TElDRU5TRS5UWFQiLAorICAgICAgICAgIkNvcHlyaWdodCI6ICJDb3B5cmlnaHQgMjAwMC0yMDE2 IGJ5IERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4iCisg ICAgIH0sCisgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9w X3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyX3BfcC5oCitpbmRleCBlYzlkMjU5NzFm Li40YTVhN2E2ZDUxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9w LmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyX3BfcC5oCitAQCAtNjgsMTMgKzY4 LDEzIEBAIHN0cnVjdCBRX0dVSV9FWFBPUlQgUVNoYWRlclByaXZhdGUKKyAgICAgeworICAgICB9 CisgCistICAgIFFTaGFkZXJQcml2YXRlKGNvbnN0IFFTaGFkZXJQcml2YXRlICpvdGhlcikKKysg ICAgUVNoYWRlclByaXZhdGUoY29uc3QgUVNoYWRlclByaXZhdGUgJm90aGVyKQorICAgICAgICAg OiByZWYoMSksCistICAgICAgICAgIHFzYlZlcnNpb24ob3RoZXItPnFzYlZlcnNpb24pLAorLSAg ICAgICAgICBzdGFnZShvdGhlci0+c3RhZ2UpLAorLSAgICAgICAgICBkZXNjKG90aGVyLT5kZXNj KSwKKy0gICAgICAgICAgc2hhZGVycyhvdGhlci0+c2hhZGVycyksCistICAgICAgICAgIGJpbmRp bmdzKG90aGVyLT5iaW5kaW5ncykKKysgICAgICAgICAgcXNiVmVyc2lvbihvdGhlci5xc2JWZXJz aW9uKSwKKysgICAgICAgICAgc3RhZ2Uob3RoZXIuc3RhZ2UpLAorKyAgICAgICAgICBkZXNjKG90 aGVyLmRlc2MpLAorKyAgICAgICAgICBzaGFkZXJzKG90aGVyLnNoYWRlcnMpLAorKyAgICAgICAg ICBiaW5kaW5ncyhvdGhlci5iaW5kaW5ncykKKyAgICAgeworICAgICB9CisgCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9wX3AuaCBiL3F0YmFzZS9z cmMvZ3VpL3JoaS9xc2hhZGVyZGVzY3JpcHRpb25fcF9wLmgKK2luZGV4IGVjMmIwYjZiNGMuLjNk YTMzYThhMmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0 aW9uX3BfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3Bf cC5oCitAQCAtNjMsMTYgKzYzLDE2IEBAIHN0cnVjdCBRX0dVSV9FWFBPUlQgUVNoYWRlckRlc2Ny aXB0aW9uUHJpdmF0ZQorICAgICAgICAgbG9jYWxTaXplWzBdID0gbG9jYWxTaXplWzFdID0gbG9j YWxTaXplWzJdID0gMDsKKyAgICAgfQorIAorLSAgICBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRl KGNvbnN0IFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUgKm90aGVyKQorKyAgICBRU2hhZGVyRGVz Y3JpcHRpb25Qcml2YXRlKGNvbnN0IFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUgJm90aGVyKQor ICAgICAgICAgOiByZWYoMSksCistICAgICAgICAgIGluVmFycyhvdGhlci0+aW5WYXJzKSwKKy0g ICAgICAgICAgb3V0VmFycyhvdGhlci0+b3V0VmFycyksCistICAgICAgICAgIHVuaWZvcm1CbG9j a3Mob3RoZXItPnVuaWZvcm1CbG9ja3MpLAorLSAgICAgICAgICBwdXNoQ29uc3RhbnRCbG9ja3Mo b3RoZXItPnB1c2hDb25zdGFudEJsb2NrcyksCistICAgICAgICAgIHN0b3JhZ2VCbG9ja3Mob3Ro ZXItPnN0b3JhZ2VCbG9ja3MpLAorLSAgICAgICAgICBjb21iaW5lZEltYWdlU2FtcGxlcnMob3Ro ZXItPmNvbWJpbmVkSW1hZ2VTYW1wbGVycyksCistICAgICAgICAgIHN0b3JhZ2VJbWFnZXMob3Ro ZXItPnN0b3JhZ2VJbWFnZXMpLAorLSAgICAgICAgICBsb2NhbFNpemUob3RoZXItPmxvY2FsU2l6 ZSkKKysgICAgICAgICAgaW5WYXJzKG90aGVyLmluVmFycyksCisrICAgICAgICAgIG91dFZhcnMo b3RoZXIub3V0VmFycyksCisrICAgICAgICAgIHVuaWZvcm1CbG9ja3Mob3RoZXIudW5pZm9ybUJs b2NrcyksCisrICAgICAgICAgIHB1c2hDb25zdGFudEJsb2NrcyhvdGhlci5wdXNoQ29uc3RhbnRC bG9ja3MpLAorKyAgICAgICAgICBzdG9yYWdlQmxvY2tzKG90aGVyLnN0b3JhZ2VCbG9ja3MpLAor KyAgICAgICAgICBjb21iaW5lZEltYWdlU2FtcGxlcnMob3RoZXIuY29tYmluZWRJbWFnZVNhbXBs ZXJzKSwKKysgICAgICAgICAgc3RvcmFnZUltYWdlcyhvdGhlci5zdG9yYWdlSW1hZ2VzKSwKKysg ICAgICAgICAgbG9jYWxTaXplKG90aGVyLmxvY2FsU2l6ZSkKKyAgICAgeworICAgICB9CisgCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcCBiL3F0YmFz ZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS5jcHAKK2luZGV4IGE2NTdhOGM1MTYuLjRmYzAx MDA5NTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCitAQCAtOTgzLDcg Kzk4Myw3IEBAIFFGb250RW5naW5lICpsb2FkU2luZ2xlRW5naW5lKGludCBzY3JpcHQsCisgICAg ICAgICBpZiAoc3R5bGUtPmtleS5zdHJldGNoICE9IDAgJiYgcmVxdWVzdC5zdHJldGNoICE9IDAK KyAgICAgICAgICAgICAmJiAocmVxdWVzdC5zdHlsZU5hbWUuaXNFbXB0eSgpIHx8IHJlcXVlc3Qu c3R5bGVOYW1lICE9IHN0eWxlLT5zdHlsZU5hbWUpKSB7CisgICAgICAgICAgICAgZGVmLnN0cmV0 Y2ggPSAocmVxdWVzdC5zdHJldGNoICogMTAwICsgc3R5bGUtPmtleS5zdHJldGNoIC8gMikgLyBz dHlsZS0+a2V5LnN0cmV0Y2g7CistICAgICAgICB9IGVsc2UgeworKyAgICAgICAgfSBlbHNlIGlm IChyZXF1ZXN0LnN0cmV0Y2ggPT0gUUZvbnQ6OkFueVN0cmV0Y2gpIHsKKyAgICAgICAgICAgICBk ZWYuc3RyZXRjaCA9IDEwMDsKKyAgICAgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9x dGV4dGRvY3VtZW50bGF5b3V0LmNwcAoraW5kZXggZjNlNmVhMjEwMC4uNzIyNjdlOTM4MCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAKKysr KyBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAKK0BAIC0yMTIz LDcgKzIxMjMsNyBAQCB2b2lkIFFUZXh0RG9jdW1lbnRMYXlvdXRQcml2YXRlOjpkcmF3TGlzdEl0 ZW0oY29uc3QgUVBvaW50RiAmb2Zmc2V0LCBRUGFpbnRlciAqcAorIHsKKyAgICAgUV9RKGNvbnN0 IFFUZXh0RG9jdW1lbnRMYXlvdXQpOworICAgICBjb25zdCBRVGV4dEJsb2NrRm9ybWF0IGJsb2Nr Rm9ybWF0ID0gYmwuYmxvY2tGb3JtYXQoKTsKKy0gICAgY29uc3QgUVRleHRDaGFyRm9ybWF0IGNo YXJGb3JtYXQgPSBRVGV4dEN1cnNvcihibCkuY2hhckZvcm1hdCgpOworKyAgICBjb25zdCBRVGV4 dENoYXJGb3JtYXQgY2hhckZvcm1hdCA9IGJsLmNoYXJGb3JtYXQoKTsKKyAgICAgUUZvbnQgZm9u dChjaGFyRm9ybWF0LmZvbnQoKSk7CisgICAgIGlmIChxLT5wYWludERldmljZSgpKQorICAgICAg ICAgZm9udCA9IFFGb250KGZvbnQsIHEtPnBhaW50RGV2aWNlKCkpOworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRlbmdpbmUuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9x dGV4dGVuZ2luZS5jcHAKK2luZGV4IGNlNGFiYWM0NzIuLmE2YzY2ZTVkMmQgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9n dWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgor KyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDog aHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIFF0R3VpIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC0xNTY1LDYgKzE1NjUs MTIgQEAgdm9pZCBRVGV4dEVuZ2luZTo6c2hhcGVUZXh0KGludCBpdGVtKSBjb25zdAorICAgICAg ICAgLy8gT3ZlcndyaXRlIHdpdGggMCB0b2tlbiB0byBpbmRpY2F0ZSBmYWlsdXJlCisgICAgICAg ICBRR2x5cGhMYXlvdXQgZyA9IGF2YWlsYWJsZUdseXBocygmc2kpOworICAgICAgICAgZy5nbHlw aHNbMF0gPSAwOworKyAgICAgICAgZy5hdHRyaWJ1dGVzWzBdLmNsdXN0ZXJTdGFydCA9IHRydWU7 CisrCisrICAgICAgICB1c2hvcnQgKmxvZ19jbHVzdGVycyA9IGxvZ0NsdXN0ZXJzKCZzaSk7Cisr ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGl0ZW1MZW5ndGg7ICsraSkKKysgICAgICAgICAg ICBsb2dfY2x1c3RlcnNbaV0gPSAwOworKworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcCBiL3F0 YmFzZS9zcmMvZ3VpL3V0aWwvcWRlc2t0b3BzZXJ2aWNlcy5jcHAKK2luZGV4IGZiYjYzYTk0MDgu LjRkNWZhZmFhYTcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2Vy dmljZXMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3Bw CitAQCAtNTQsNiArNTQsOCBAQAorICNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtaW50ZWdyYXRpb24u aD4KKyAjaW5jbHVkZSA8cWRpci5oPgorIAorKyNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xbG9j a2luZ19wLmg+CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgY2xhc3MgUU9wZW5VcmxIYW5k bGVyUmVnaXN0cnkgOiBwdWJsaWMgUU9iamVjdAorQEAgLTgxLDYgKzgzLDcgQEAgUV9HTE9CQUxf U1RBVElDKFFPcGVuVXJsSGFuZGxlclJlZ2lzdHJ5LCBoYW5kbGVyUmVnaXN0cnkpCisgCisgdm9p ZCBRT3BlblVybEhhbmRsZXJSZWdpc3RyeTo6aGFuZGxlckRlc3Ryb3llZChRT2JqZWN0ICpoYW5k bGVyKQorIHsKKysgICAgY29uc3QgYXV0byBsb2NrID0gcXRfc2NvcGVkX2xvY2sobXV0ZXgpOwor ICAgICBIYW5kbGVySGFzaDo6SXRlcmF0b3IgaXQgPSBoYW5kbGVycy5iZWdpbigpOworICAgICB3 aGlsZSAoaXQgIT0gaGFuZGxlcnMuZW5kKCkpIHsKKyAgICAgICAgIGlmIChpdC0+cmVjZWl2ZXIg PT0gaGFuZGxlcikgeworQEAgLTI5NCw3ICsyOTcsOCBAQCB2b2lkIFFEZXNrdG9wU2VydmljZXM6 OnNldFVybEhhbmRsZXIoY29uc3QgUVN0cmluZyAmc2NoZW1lLCBRT2JqZWN0ICpyZWNlaXZlciwg YworICAgICBoLm5hbWUgPSBtZXRob2Q7CisgICAgIHJlZ2lzdHJ5LT5oYW5kbGVycy5pbnNlcnQo c2NoZW1lLnRvTG93ZXIoKSwgaCk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocmVjZWl2ZXIsIFNJ R05BTChkZXN0cm95ZWQoUU9iamVjdCopKSwKKy0gICAgICAgICAgICAgICAgICAgICByZWdpc3Ry eSwgU0xPVChoYW5kbGVyRGVzdHJveWVkKFFPYmplY3QqKSkpOworKyAgICAgICAgICAgICAgICAg ICAgIHJlZ2lzdHJ5LCBTTE9UKGhhbmRsZXJEZXN0cm95ZWQoUU9iamVjdCopKSwKKysgICAgICAg ICAgICAgICAgICAgICBRdDo6RGlyZWN0Q29ubmVjdGlvbik7CisgfQorIAorIC8qIQorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcXBrbWhhbmRsZXIuY3BwIGIvcXRiYXNlL3NyYy9n dWkvdXRpbC9xcGttaGFuZGxlci5jcHAKK2luZGV4IGUwYzNiNzVlZmUuLjM0MTRmOWQ4YmEgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcAorKysrIGIvcXRi YXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5jcHAKK0BAIC01Nyw3ICs1Nyw3IEBAIHN0cnVj dCBQa21UeXBlCisgICAgIHF1aW50MzIgYnl0ZXNQZXJCbG9jazsKKyB9OworIAorLXN0YXRpYyBQ a21UeXBlIHR5cGVNYXBbNV0gPSB7Cisrc3RhdGljIGNvbnN0ZXhwciBQa21UeXBlIHR5cGVNYXBb NV0gPSB7CisgICAgIHsgMHg4RDY0LCAgOCB9LCAgIC8vIEdMX0VUQzFfUkdCOF9PRVMKKyAgICAg eyAweDkyNzQsICA4IH0sICAgLy8gR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIKKyAgICAgeyAwLCAw IH0sICAgICAgICAgLy8gdW51c2VkIChvYnNvbGV0ZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlmaWxlaW1wbC5jcHAgYi9xdGJhc2Uvc3JjL25l dHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlmaWxlaW1wbC5jcHAKK2luZGV4IGI2YmU5MzE0N2Eu LjZlNjliNGM0ZDMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3 b3JrcmVwbHlmaWxlaW1wbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5l dHdvcmtyZXBseWZpbGVpbXBsLmNwcAorQEAgLTg5LDkgKzg5LDEwIEBAIFFOZXR3b3JrUmVwbHlG aWxlSW1wbDo6UU5ldHdvcmtSZXBseUZpbGVJbXBsKFFOZXR3b3JrQWNjZXNzTWFuYWdlciAqbWFu YWdlciwgY29uCisgICAgICAgICAvLyB3ZSBoYW5kbGUgb25seSBsb2NhbCBmaWxlcworICAgICAg ICAgUVN0cmluZyBtc2cgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFOZXR3b3JrQWNj ZXNzRmlsZUJhY2tlbmQiLCAiUmVxdWVzdCBmb3Igb3BlbmluZyBub24tbG9jYWwgZmlsZSAlMSIp LmFyZyh1cmwudG9TdHJpbmcoKSk7CisgICAgICAgICBzZXRFcnJvcihRTmV0d29ya1JlcGx5OjpQ cm90b2NvbEludmFsaWRPcGVyYXRpb25FcnJvciwgbXNnKTsKKysgICAgICAgIHNldEZpbmlzaGVk KHRydWUpOyAvLyBXZSdyZSBmaW5pc2hlZCwgd2lsbCBlbWl0IGZpbmlzaGVkKCkgYWZ0ZXIgY3Rv ciBpcyBkb25lLgorICAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAiZXJy b3JPY2N1cnJlZCIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uLAorICAgICAgICAgICAgIFFfQVJHKFFO ZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvciwgUU5ldHdvcmtSZXBseTo6UHJvdG9jb2xJbnZhbGlk T3BlcmF0aW9uRXJyb3IpKTsKKy0gICAgICAgIGZpbGVPcGVuRmluaXNoZWQoZmFsc2UpOworKyAg ICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBbdGhpc10oKXsgZmlsZU9wZW5G aW5pc2hlZChmYWxzZSk7IH0sIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyAgICAgICAgIHJldHVy bjsKKyAgICAgfQorICNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nl c3MvcW5ldHdvcmtyZXBseWltcGwuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0 d29ya3JlcGx5aW1wbC5jcHAKK2luZGV4IGJjZGY2ZWUyZjEuLjNiNmRlYjgyYmQgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlpbXBsLmNwcAorKysr IGIvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAKK0BAIC02 ODAsNyArNjgwLDcgQEAgdm9pZCBRTmV0d29ya1JlcGx5SW1wbFByaXZhdGU6OmFwcGVuZERvd25z dHJlYW1EYXRhKFFJT0RldmljZSAqZGF0YSkKKyAgICAgLy8gcmVhZCB1bnRpbCBFT0YgZnJvbSBk YXRhCisgICAgIGlmIChRX1VOTElLRUxZKGNvcHlEZXZpY2UpKSB7CisgICAgICAgICBxQ3JpdGlj YWwoIlFOZXR3b3JrUmVwbHlJbXBsOiBjb3B5IGZyb20gUUlPRGV2aWNlIGFscmVhZHkgaW4gcHJv Z3Jlc3MgLS0gIgorLSAgICAgICAgICAgICAgICAgICJiYWNrZW5kIHByb2JseSBuZWVkcyB0byBi ZSBmaXhlZCIpOworKyAgICAgICAgICAgICAgICAgICJiYWNrZW5kIHByb2JhYmx5IG5lZWRzIHRv IGJlIGZpeGVkIik7CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3FhdXRoZW50aWNhdG9yLmNwcCBiL3F0YmFzZS9zcmMv bmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3BwCitpbmRleCBkOWZlN2JjNDdiLi5jY2Qw NGIyOTRhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGlj YXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3Iu Y3BwCitAQCAtNTAsNiArNTAsNyBAQAorICNpbmNsdWRlIDxxc3RyaW5nLmg+CisgI2luY2x1ZGUg PHFkYXRldGltZS5oPgorICNpbmNsdWRlIDxxcmFuZG9tLmg+CisrI2luY2x1ZGUgInByaXZhdGUv cXN5c3RlbWxpYnJhcnlfcC5oIgorIAorICNpZmRlZiBRX09TX1dJTgorICNpbmNsdWRlIDxxbXV0 ZXguaD4KK0BAIC0xNTYzLDcgKzE1NjQsNyBAQCBzdGF0aWMgYm9vbCBxX1NTUElfbGlicmFyeV9s b2FkKCkKKyAKKyAgICAgLy8gSW5pdGlhbGl6ZSBzZWN1cml0eSBpbnRlcmZhY2UKKyAgICAgaWYg KHBTZWN1cml0eUZ1bmN0aW9uVGFibGUgPT0gbnVsbHB0cikgeworLSAgICAgICAgc2VjdXJpdHlE TExIYW5kbGUgPSBMb2FkTGlicmFyeShMInNlY3VyMzIuZGxsIik7CisrICAgICAgICBzZWN1cml0 eURMTEhhbmRsZSA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKEwic2VjdXIzMiIpOworICAgICAgICAg aWYgKHNlY3VyaXR5RExMSGFuZGxlICE9IG51bGxwdHIpIHsKKyAgICAgICAgICAgICBJTklUX1NF Q1VSSVRZX0lOVEVSRkFDRSBwSW5pdFNlY3VyaXR5SW50ZXJmYWNlID0KKyAgICAgICAgICAgICAg ICAgcmVpbnRlcnByZXRfY2FzdDxJTklUX1NFQ1VSSVRZX0lOVEVSRkFDRT4oCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAgYi9xdGJhc2Uv c3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191bml4LmNwcAoraW5kZXggOWIwYTJlZTY2OS4u NzM2NzljOWVmMSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3Rp bmZvX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191 bml4LmNwcAorQEAgLTEyMiw3ICsxMjIsNiBAQCBzdGF0aWMgUUZ1bmN0aW9uUG9pbnRlciByZXNv bHZlU3ltYm9sKFFMaWJyYXJ5ICZsaWIsIGNvbnN0IGNoYXIgKnN5bSkKKyAKKyBMaWJSZXNvbHY6 OkxpYlJlc29sdigpCisgeworLSAgICBRTGlicmFyeSBsaWI7CisgI2lmZGVmIExJQlJFU09MVl9T TworICAgICBsaWIuc2V0RmlsZU5hbWUoUVN0cmluZ0xpdGVyYWwoTElCUkVTT0xWX1NPKSk7Cisg ICAgIGlmICghbGliLmxvYWQoKSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc29j a2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9x c29ja3M1c29ja2V0ZW5naW5lLmNwcAoraW5kZXggM2EwNDZmZDExNi4uOTdmYWRjYTBiMyAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5j cHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5j cHAKK0BAIC0xMjk2LDcgKzEyOTYsNyBAQCB2b2lkIFFTb2NrczVTb2NrZXRFbmdpbmVQcml2YXRl OjpfcV91ZHBTb2NrZXRSZWFkTm90aWZpY2F0aW9uKCkKKyAgICAgICAgIGludCBwb3MgPSAwOwor ICAgICAgICAgY29uc3QgY2hhciAqYnVmID0gaW5CdWYuY29uc3REYXRhKCk7CisgICAgICAgICBp ZiAoaW5CdWYuc2l6ZSgpIDwgNCkgeworLSAgICAgICAgICAgIFFTT0NLUzVfRF9ERUJVRyA8PCAi YnVndXMgdWRwIGRhdGEsIGRpc2NhcmRpbmciOworKyAgICAgICAgICAgIFFTT0NLUzVfRF9ERUJV RyA8PCAiYm9ndXMgdWRwIGRhdGEsIGRpc2NhcmRpbmciOworICAgICAgICAgICAgIHJldHVybjsK KyAgICAgICAgIH0KKyAgICAgICAgIFFTb2NrczVSZXZpdmVkRGF0YWdyYW0gZGF0YWdyYW07Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsY29udGV4dF9vcGVuc3NsLmNw cCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAKK2luZGV4 IGM5ZjIwMmY1NzMuLmM5OTJkYTlkOGUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsv c3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3Ns L3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwCitAQCAtNDA5LDcgKzQwOSw3IEBAIGluaXRfY29udGV4 dDoKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIFFTc2w6OkR0bHNWMV8wT3JMYXRlcjoKKyAg ICAgICAgIG1pblZlcnNpb24gPSBEVExTMV9WRVJTSU9OOworLSAgICAgICAgbWF4VmVyc2lvbiA9 IERUTFNfTUFYX1ZFUlNJT047CisrICAgICAgICBtYXhWZXJzaW9uID0gMDsKKyAgICAgICAgIGJy ZWFrOworICAgICBjYXNlIFFTc2w6OkR0bHNWMV8yOgorICAgICAgICAgbWluVmVyc2lvbiA9IERU TFMxXzJfVkVSU0lPTjsKK0BAIC00MTcsNyArNDE3LDcgQEAgaW5pdF9jb250ZXh0OgorICAgICAg ICAgYnJlYWs7CisgICAgIGNhc2UgUVNzbDo6RHRsc1YxXzJPckxhdGVyOgorICAgICAgICAgbWlu VmVyc2lvbiA9IERUTFMxXzJfVkVSU0lPTjsKKy0gICAgICAgIG1heFZlcnNpb24gPSBEVExTX01B WF9WRVJTSU9OOworKyAgICAgICAgbWF4VmVyc2lvbiA9IDA7CisgICAgICAgICBicmVhazsKKyAg ICAgY2FzZSBRU3NsOjpUbHNWMV8zT3JMYXRlcjoKKyAjaWZkZWYgVExTMV8zX1ZFUlNJT04KK0BA IC00NTUsNyArNDU1LDcgQEAgaW5pdF9jb250ZXh0OgorICAgICB9CisgCisgICAgIC8vIEVuYWJs ZSBidWcgd29ya2Fyb3VuZHMuCistICAgIGxvbmcgb3B0aW9ucyA9IFFTc2xTb2NrZXRCYWNrZW5k UHJpdmF0ZTo6c2V0dXBPcGVuU3NsT3B0aW9ucyhjb25maWd1cmF0aW9uLnByb3RvY29sKCksIGNv bmZpZ3VyYXRpb24uZC0+c3NsT3B0aW9ucyk7CisrICAgIHFzc2xvcHRpb25zIG9wdGlvbnMgPSBR U3NsU29ja2V0QmFja2VuZFByaXZhdGU6OnNldHVwT3BlblNzbE9wdGlvbnMoY29uZmlndXJhdGlv bi5wcm90b2NvbCgpLCBjb25maWd1cmF0aW9uLmQtPnNzbE9wdGlvbnMpOworICAgICBxX1NTTF9D VFhfc2V0X29wdGlvbnMoc3NsQ29udGV4dC0+Y3R4LCBvcHRpb25zKTsKKyAKKyAgICAgLy8gVGVs bCBPcGVuU1NMIHRvIHJlbGVhc2UgbWVtb3J5IGVhcmx5CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5jcHAgYi9x dGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3Ns LmNwcAoraW5kZXggYWFmODc0MTEzMC4uYjU4OTM1MzcyYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvbmV0d29yay9zc2wvcXNzbGRpZmZpZWhlbGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwCisr KysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19v cGVuc3NsLmNwcAorQEAgLTU5LDU3ICs1OSw2IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisg CistI2lmZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKy0KKy1zdGF0aWMgaW50IHFfREhf Y2hlY2soREggKmRoLCBpbnQgKnN0YXR1cykKKy17CistICAgIC8vIERIX2NoZWNrIHdhcyBmaXJz dCBkZXByZWNhdGVkIGluIE9wZW5TU0wgMy4wLjAsIGFzIGxvdy1sZXZlbAorLSAgICAvLyBBUEk7 IHRoZSBFVlBfUEtFWSBmYW1pbHkgb2YgZnVuY3Rpb25zIHdhcyBhZHZpc2VkIGFzIGFuIGFsdGVy bmF0aXZlLgorLSAgICAvLyBBcyBvZiBub3cgRVZQX1BLRVlfcGFyYW1zX2NoZWNrIGVuZHMgdXAg Y2FsbGluZyAuLi4gREhfY2hlY2ssCistICAgIC8vIHdoaWNoIGlzIGdvb2QgZW5vdWdoLgorLQor LSAgICBRX0FTU0VSVChkaCk7CistICAgIFFfQVNTRVJUKHN0YXR1cyk7CistCistICAgIEVWUF9Q S0VZICprZXkgPSBxX0VWUF9QS0VZX25ldygpOworLSAgICBpZiAoIWtleSkgeworLSAgICAgICAg cUNXYXJuaW5nKGxjU3NsLCAiRVZQX1BLRVlfbmV3IGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNv Y2tldEJhY2tlbmRQcml2YXRlOjpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJl dHVybiAwOworLSAgICB9CistICAgIGNvbnN0IGF1dG8ga2V5RGVsZXRlciA9IHFTY29wZUd1YXJk KFtrZXldKCl7CistICAgICAgICBxX0VWUF9QS0VZX2ZyZWUoa2V5KTsKKy0gICAgfSk7CistICAg IGlmICghcV9FVlBfUEtFWV9zZXQxX0RIKGtleSwgZGgpKSB7CistICAgICAgICBxQ1dhcm5pbmco bGNTc2wsICJFVlBfUEtFWV9zZXQxX0RIIGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJh Y2tlbmRQcml2YXRlOjpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAw OworLSAgICB9CistCistICAgIEVWUF9QS0VZX0NUWCAqa2V5Q3R4ID0gcV9FVlBfUEtFWV9DVFhf bmV3KGtleSwgbnVsbHB0cik7CistICAgIGlmICgha2V5Q3R4KSB7CistICAgICAgICBxQ1dhcm5p bmcobGNTc2wsICJFVlBfUEtFWV9DVFhfbmV3IGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tl dEJhY2tlbmRQcml2YXRlOjpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVy biAwOworLSAgICB9CistICAgIGNvbnN0IGF1dG8gY3R4RGVsZXRlciA9IHFTY29wZUd1YXJkKFtr ZXlDdHhdeworLSAgICAgICAgcV9FVlBfUEtFWV9DVFhfZnJlZShrZXlDdHgpOworLSAgICB9KTsK Ky0KKy0gICAgY29uc3QgaW50IHJlc3VsdCA9IHFfRVZQX1BLRVlfcGFyYW1fY2hlY2soa2V5Q3R4 KTsKKy0gICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpsb2dBbmRDbGVhckVycm9yUXVldWUo KTsKKy0gICAgLy8gTm90ZTogdW5saWtlIERIX2NoZWNrLCB3ZSBjYW5ub3Qgb2J0YWluIHRoZSAn c3RhdHVzJywKKy0gICAgLy8gaWYgdGhlICdyZXN1bHQnIGlzIDAgKGFjdHVhbGx5IHRoZSByZXN1 bHQgaXMgMSBvbmx5CistICAgIC8vIGlmIHRoaXMgJ3N0YXR1cycgd2FzIDApLiBXZSBjb3VsZCBw cm9iYWJseSBjaGVjayB0aGUKKy0gICAgLy8gZXJyb3JzIGZyb20gdGhlIGVycm9yIHF1ZXVlLCBi dXQgaXQncyBub3QgbmVlZGVkIGFueXdheQorLSAgICAvLyAtIHNlZSB0aGUgJ2lzU2FmZURIJyBi ZWxvdywgaG93IGl0IHJldHVybnMgaW1tZWRpYXRlbHkKKy0gICAgLy8gb24gMC4KKy0gICAgUV9V TlVTRUQoc3RhdHVzKQorLQorLSAgICByZXR1cm4gcmVzdWx0OworLX0KKy0jZW5kaWYgLy8gT1BF TlNTTF9OT19ERVBSRUNBVEVEXzNfMAorLQorIHN0YXRpYyBib29sIGlzU2FmZURIKERIICpkaCkK KyB7CisgICAgIGludCBzdGF0dXMgPSAwOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29y ay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNz bHNvY2tldF9vcGVuc3NsLmNwcAoraW5kZXggMzdmYWQyYTY4Zi4uOGY2ODU4Yzg2NyAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcAorKysr IGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwCitAQCAtNTUw LDkgKzU1MCw5IEBAIHN0YXRpYyB2b2lkIHFfbG9hZENpcGhlcnNGb3JDb25uZWN0aW9uKFNTTCAq Y29ubmVjdGlvbiwgUUxpc3Q8UVNzbENpcGhlcj4gJmNpcGhlCisgLy8gRGVmaW5lZCBpbiBxc3Ns c29ja2V0LmNwcAorIHZvaWQgcV9zZXREZWZhdWx0RHRsc0NpcGhlcnMoY29uc3QgUUxpc3Q8UVNz bENpcGhlcj4gJmNpcGhlcnMpOworIAorLWxvbmcgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpz ZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xP cHRpb25zIHNzbE9wdGlvbnMpCisrcXNzbG9wdGlvbnMgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRl OjpzZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpT c2xPcHRpb25zIHNzbE9wdGlvbnMpCisgeworLSAgICBsb25nIG9wdGlvbnM7CisrICAgIHFzc2xv cHRpb25zIG9wdGlvbnM7CisgICAgIGlmIChwcm90b2NvbCA9PSBRU3NsOjpUbHNWMVNzbFYzKQor ICAgICAgICAgb3B0aW9ucyA9IFNTTF9PUF9BTEx8U1NMX09QX05PX1NTTHYyfFNTTF9PUF9OT19T U0x2MzsKKyAgICAgZWxzZSBpZiAocHJvdG9jb2wgPT0gUVNzbDo6U2VjdXJlUHJvdG9jb2xzKQor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3Au aCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaAoraW5kZXgg NDEwM2RlMjNlOC4uNTU0NzU4OTI1NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9z c2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9x c3Nsc29ja2V0X29wZW5zc2xfcC5oCitAQCAtMTA3LDYgKzEwNywxMiBAQAorIAorIFFUX0JFR0lO X05BTUVTUEFDRQorIAorKyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BF TlNTTF9WRVJTSU9OX01BSk9SID49IDMKKyt0eXBlZGVmIHVpbnQ2NF90IHFzc2xvcHRpb25zOwor KyNlbHNlCisrdHlwZWRlZiB1bnNpZ25lZCBsb25nIHFzc2xvcHRpb25zOworKyNlbmRpZgorKwor IHN0cnVjdCBRU3NsRXJyb3JFbnRyeSB7CisgICAgIGludCBjb2RlOworICAgICBpbnQgZGVwdGg7 CitAQCAtMTcxLDcgKzE3Nyw3IEBAIHB1YmxpYzoKKyAgICAgUVZlY3RvcjxRU3NsRXJyb3I+IG9j c3BFcnJvcnM7CisgICAgIFFCeXRlQXJyYXkgb2NzcFJlc3BvbnNlRGVyOworIAorLSAgICBRX0FV VE9URVNUX0VYUE9SVCBzdGF0aWMgbG9uZyBzZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFBy b3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25zIHNzbE9wdGlvbnMpOworKyAgICBRX0FV VE9URVNUX0VYUE9SVCBzdGF0aWMgcXNzbG9wdGlvbnMgc2V0dXBPcGVuU3NsT3B0aW9ucyhRU3Ns OjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBzc2xPcHRpb25zKTsKKyAg ICAgc3RhdGljIFFTc2xDaXBoZXIgUVNzbENpcGhlcl9mcm9tX1NTTF9DSVBIRVIoY29uc3QgU1NM X0NJUEhFUiAqY2lwaGVyKTsKKyAgICAgc3RhdGljIFFMaXN0PFFTc2xDZXJ0aWZpY2F0ZT4gU1RB Q0tPRlg1MDlfdG9fUVNzbENlcnRpZmljYXRlcyhTVEFDS19PRihYNTA5KSAqeDUwOSk7CisgICAg IHN0YXRpYyBRTGlzdDxRU3NsRXJyb3I+IHZlcmlmeShjb25zdCBRTGlzdDxRU3NsQ2VydGlmaWNh dGU+ICZjZXJ0aWZpY2F0ZUNoYWluLCBjb25zdCBRU3RyaW5nICZob3N0TmFtZSk7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5j cHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNw cAoraW5kZXggZTUzZmIyNzlmMC4uNDU5Y2NkMGIxOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv bmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHMuY3BwCisrKysgYi9xdGJhc2Uv c3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAorQEAgLTE0OCw3 ICsxNDgsNiBAQCBERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfdXBfcmVmLCBFVlBfUEtFWSAqYSwg YSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DMihFVlBfUEtFWV9DVFggKiwgRVZQX1BL RVlfQ1RYX25ldywgRVZQX1BLRVkgKnBrZXksIHBrZXksIEVOR0lORSAqZSwgZSwgcmV0dXJuIG51 bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfcGFyYW1fY2hlY2ssIEVW UF9QS0VZX0NUWCAqY3R4LCBjdHgsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQyh2b2lk LCBFVlBfUEtFWV9DVFhfZnJlZSwgRVZQX1BLRVlfQ1RYICpjdHgsIGN0eCwgcmV0dXJuLCByZXR1 cm4pCistREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX2Jhc2VfaWQsIEVWUF9QS0VZICphLCBhLCBy ZXR1cm4gTklEX3VuZGVmLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIFJTQV9iaXRzLCBSU0Eg KmEsIGEsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIERTQV9iaXRzLCBEU0Eg KmEsIGEsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIE9QRU5TU0xfc2tfbnVt LCBPUEVOU1NMX1NUQUNLICphLCBhLCByZXR1cm4gLTEsIHJldHVybikKK0BAIC0xNTgsNyArMTU3 LDcgQEAgREVGSU5FRlVOQzIodm9pZCwgT1BFTlNTTF9za19wdXNoLCBPUEVOU1NMX1NUQUNLICph LCBhLCB2b2lkICpiLCBiLCByZXR1cm4sIERVTU0KKyBERUZJTkVGVU5DKHZvaWQsIE9QRU5TU0xf c2tfZnJlZSwgT1BFTlNTTF9TVEFDSyAqYSwgYSwgcmV0dXJuLCBEVU1NWUFSRykKKyBERUZJTkVG VU5DMih2b2lkICosIE9QRU5TU0xfc2tfdmFsdWUsIE9QRU5TU0xfU1RBQ0sgKmEsIGEsIGludCBi LCBiLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBTU0xfc2Vzc2lv bl9yZXVzZWQsIFNTTCAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKy1ERUZJTkVGVU5DMih1bnNp Z25lZCBsb25nLCBTU0xfQ1RYX3NldF9vcHRpb25zLCBTU0xfQ1RYICpjdHgsIGN0eCwgdW5zaWdu ZWQgbG9uZyBvcCwgb3AsIHJldHVybiAwLCByZXR1cm4pCisrREVGSU5FRlVOQzIocXNzbG9wdGlv bnMsIFNTTF9DVFhfc2V0X29wdGlvbnMsIFNTTF9DVFggKmN0eCwgY3R4LCBxc3Nsb3B0aW9ucyBv cCwgb3AsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIFNTTF9DVFhfZ2V0X3Nl Y3VyaXR5X2xldmVsLCBjb25zdCBTU0xfQ1RYICpjdHgsIGN0eCwgcmV0dXJuIC0xLCByZXR1cm4p CisgREVGSU5FRlVOQzIodm9pZCwgU1NMX0NUWF9zZXRfc2VjdXJpdHlfbGV2ZWwsIFNTTF9DVFgg KmN0eCwgY3R4LCBpbnQgbGV2ZWwsIGxldmVsLCByZXR1cm4sIHJldHVybikKKyAjaWZkZWYgVExT MV8zX1ZFUlNJT04KK0BAIC0zNzEsNyArMzcwLDE1IEBAIERFRklORUZVTkMoY29uc3QgU1NMX0NJ UEhFUiAqLCBTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRy CisgREVGSU5FRlVOQyhpbnQsIFNTTF92ZXJzaW9uLCBjb25zdCBTU0wgKmEsIGEsIHJldHVybiAw LCByZXR1cm4pCisgREVGSU5FRlVOQzIoaW50LCBTU0xfZ2V0X2Vycm9yLCBTU0wgKmEsIGEsIGlu dCBiLCBiLCByZXR1cm4gLTEsIHJldHVybikKKyBERUZJTkVGVU5DKFNUQUNLX09GKFg1MDkpICos IFNTTF9nZXRfcGVlcl9jZXJ0X2NoYWluLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1 cm4pCisrCisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZF UlNJT05fTUFKT1IgPj0gMworK0RFRklORUZVTkMoWDUwOSAqLCBTU0xfZ2V0MV9wZWVyX2NlcnRp ZmljYXRlLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisrREVGSU5FRlVOQyhp bnQsIEVWUF9QS0VZX2dldF9iYXNlX2lkLCBjb25zdCBFVlBfUEtFWSAqcGtleSwgcGtleSwgcmV0 dXJuIC0xLCByZXR1cm4pCisrI2Vsc2UKKyBERUZJTkVGVU5DKFg1MDkgKiwgU1NMX2dldF9wZWVy X2NlcnRpZmljYXRlLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisrREVGSU5F RlVOQyhpbnQsIEVWUF9QS0VZX2Jhc2VfaWQsIEVWUF9QS0VZICphLCBhLCByZXR1cm4gTklEX3Vu ZGVmLCByZXR1cm4pCisrI2VuZGlmIC8vIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrCisg REVGSU5FRlVOQyhsb25nLCBTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQsIGNvbnN0IFNTTCAqYSwgYSwg cmV0dXJuIC0xLCByZXR1cm4pCisgREVGSU5FRlVOQyhTU0wgKiwgU1NMX25ldywgU1NMX0NUWCAq YSwgYSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DKFNTTF9DVFggKiwgU1NM X2dldF9TU0xfQ1RYLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCitAQCAtNDky LDkgKzQ5OSw3IEBAIERFRklORUZVTkMoREggKiwgREhfbmV3LCBEVU1NWUFSRywgRFVNTVlBUkcs IHJldHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVOQyh2b2lkLCBESF9mcmVlLCBESCAq ZGgsIGRoLCByZXR1cm4sIERVTU1ZQVJHKQorIERFRklORUZVTkMzKERIICosIGQyaV9ESHBhcmFt cywgREgqKmEsIGEsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKipwcCwgcHAsIGxvbmcgbGVuZ3RoLCBs ZW5ndGgsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVOQzIoaW50LCBpMmRfREhw YXJhbXMsIERIICphLCBhLCB1bnNpZ25lZCBjaGFyICoqcCwgcCwgcmV0dXJuIC0xLCByZXR1cm4p CistI2lmbmRlZiBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisgREVGSU5FRlVOQzIoaW50LCBE SF9jaGVjaywgREggKmRoLCBkaCwgaW50ICpjb2RlcywgY29kZXMsIHJldHVybiAwLCByZXR1cm4p CistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyBERUZJTkVGVU5DMyhCSUdO VU0gKiwgQk5fYmluMmJuLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzLCBzLCBpbnQgbGVuLCBsZW4s IEJJR05VTSAqcmV0LCByZXQsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgCisgI2lmbmRlZiBP UEVOU1NMX05PX0VDCitAQCAtODY4LDcgKzg3Myw2IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5 bWJvbHMoKQorICAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9DVFhfbmV3KQorICAgICBSRVNPTFZF RlVOQyhFVlBfUEtFWV9wYXJhbV9jaGVjaykKKyAgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfQ1RY X2ZyZWUpCistICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX2Jhc2VfaWQpCisgICAgIFJFU09MVkVG VU5DKFJTQV9iaXRzKQorICAgICBSRVNPTFZFRlVOQyhPUEVOU1NMX3NrX25ld19udWxsKQorICAg ICBSRVNPTFZFRlVOQyhPUEVOU1NMX3NrX3B1c2gpCitAQCAtMTEwNyw3ICsxMTExLDE1IEBAIGJv b2wgcV9yZXNvbHZlT3BlblNzbFN5bWJvbHMoKQorICAgICBSRVNPTFZFRlVOQyhTU0xfdmVyc2lv bikKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9lcnJvcikKKyAgICAgUkVTT0xWRUZVTkMoU1NM X2dldF9wZWVyX2NlcnRfY2hhaW4pCisrCisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX01B Sk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworKyAgICBSRVNPTFZFRlVOQyhTU0xf Z2V0MV9wZWVyX2NlcnRpZmljYXRlKQorKyAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9nZXRfYmFz ZV9pZCkKKysjZWxzZQorICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUp CisrICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX2Jhc2VfaWQpCisrI2VuZGlmIC8vIE9QRU5TU0xf VkVSU0lPTl9NQUpPUiA+PSAzCisrCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfdmVyaWZ5X3Jl c3VsdCkKKyAgICAgUkVTT0xWRUZVTkMoU1NMX25ldykKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dl dF9TU0xfQ1RYKQorQEAgLTEyMDYsOSArMTIxOCw3IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5 bWJvbHMoKQorICAgICBSRVNPTFZFRlVOQyhESF9mcmVlKQorICAgICBSRVNPTFZFRlVOQyhkMmlf REhwYXJhbXMpCisgICAgIFJFU09MVkVGVU5DKGkyZF9ESHBhcmFtcykKKy0jaWZuZGVmIE9QRU5T U0xfTk9fREVQUkVDQVRFRF8zXzAKKyAgICAgUkVTT0xWRUZVTkMoREhfY2hlY2spCistI2VuZGlm IC8vIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyAgICAgUkVTT0xWRUZVTkMoQk5fYmluMmJu KQorIAorICNpZm5kZWYgT1BFTlNTTF9OT19FQworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0 d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oIGIvcXRiYXNlL3NyYy9uZXR3 b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9sc19wLmgKK2luZGV4IDk1ZTg4OTdhM2Iu LjI3YWVmZmExOGEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2Nr ZXRfb3BlbnNzbF9zeW1ib2xzX3AuaAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Ns c29ja2V0X29wZW5zc2xfc3ltYm9sc19wLmgKK0BAIC0yMzcsNyArMjM3LDYgQEAgUV9BVVRPVEVT VF9FWFBPUlQgaW50IHFfRVZQX1BLRVlfdXBfcmVmKEVWUF9QS0VZICphKTsKKyBFVlBfUEtFWV9D VFggKnFfRVZQX1BLRVlfQ1RYX25ldyhFVlBfUEtFWSAqcGtleSwgRU5HSU5FICplKTsKKyB2b2lk IHFfRVZQX1BLRVlfQ1RYX2ZyZWUoRVZQX1BLRVlfQ1RYICpjdHgpOworIGludCBxX0VWUF9QS0VZ X3BhcmFtX2NoZWNrKEVWUF9QS0VZX0NUWCAqY3R4KTsKKy1pbnQgcV9FVlBfUEtFWV9iYXNlX2lk KEVWUF9QS0VZICphKTsKKyBpbnQgcV9SU0FfYml0cyhSU0EgKmEpOworIFFfQVVUT1RFU1RfRVhQ T1JUIGludCBxX09QRU5TU0xfc2tfbnVtKE9QRU5TU0xfU1RBQ0sgKmEpOworIFFfQVVUT1RFU1Rf RVhQT1JUIHZvaWQgcV9PUEVOU1NMX3NrX3BvcF9mcmVlKE9QRU5TU0xfU1RBQ0sgKmEsIHZvaWQg KCpiKSh2b2lkICopKTsKK0BAIC0yNDYsNyArMjQ1LDcgQEAgUV9BVVRPVEVTVF9FWFBPUlQgdm9p ZCBxX09QRU5TU0xfc2tfcHVzaChPUEVOU1NMX1NUQUNLICpzdCwgdm9pZCAqZGF0YSk7CisgUV9B VVRPVEVTVF9FWFBPUlQgdm9pZCBxX09QRU5TU0xfc2tfZnJlZShPUEVOU1NMX1NUQUNLICphKTsK KyBRX0FVVE9URVNUX0VYUE9SVCB2b2lkICogcV9PUEVOU1NMX3NrX3ZhbHVlKE9QRU5TU0xfU1RB Q0sgKmEsIGludCBiKTsKKyBpbnQgcV9TU0xfc2Vzc2lvbl9yZXVzZWQoU1NMICphKTsKKy11bnNp Z25lZCBsb25nIHFfU1NMX0NUWF9zZXRfb3B0aW9ucyhTU0xfQ1RYICpjdHgsIHVuc2lnbmVkIGxv bmcgb3ApOworK3Fzc2xvcHRpb25zIHFfU1NMX0NUWF9zZXRfb3B0aW9ucyhTU0xfQ1RYICpjdHgs IHFzc2xvcHRpb25zIG9wKTsKKyBpbnQgcV9PUEVOU1NMX2luaXRfc3NsKHVpbnQ2NF90IG9wdHMs IGNvbnN0IE9QRU5TU0xfSU5JVF9TRVRUSU5HUyAqc2V0dGluZ3MpOworIHNpemVfdCBxX1NTTF9n ZXRfY2xpZW50X3JhbmRvbShTU0wgKmEsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxl bik7Cisgc2l6ZV90IHFfU1NMX1NFU1NJT05fZ2V0X21hc3Rlcl9rZXkoY29uc3QgU1NMX1NFU1NJ T04gKnNlc3Npb24sIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbik7CitAQCAtNTEw LDcgKzUwOSw2IEBAIGNvbnN0IFNTTF9DSVBIRVIgKnFfU1NMX2dldF9jdXJyZW50X2NpcGhlcihT U0wgKmEpOworIGludCBxX1NTTF92ZXJzaW9uKGNvbnN0IFNTTCAqYSk7CisgaW50IHFfU1NMX2dl dF9lcnJvcihTU0wgKmEsIGludCBiKTsKKyBTVEFDS19PRihYNTA5KSAqcV9TU0xfZ2V0X3BlZXJf Y2VydF9jaGFpbihTU0wgKmEpOworLVg1MDkgKnFfU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKFNT TCAqYSk7CisgbG9uZyBxX1NTTF9nZXRfdmVyaWZ5X3Jlc3VsdChjb25zdCBTU0wgKmEpOworIFNT TCAqcV9TU0xfbmV3KFNTTF9DVFggKmEpOworIFNTTF9DVFggKnFfU1NMX2dldF9TU0xfQ1RYKFNT TCAqYSk7CitAQCAtNTgyLDEwICs1ODAsNyBAQCBESCAqcV9ESF9uZXcoKTsKKyB2b2lkIHFfREhf ZnJlZShESCAqZGgpOworIERIICpxX2QyaV9ESHBhcmFtcyhESCAqKmEsIGNvbnN0IHVuc2lnbmVk IGNoYXIgKipwcCwgbG9uZyBsZW5ndGgpOworIGludCBxX2kyZF9ESHBhcmFtcyhESCAqYSwgdW5z aWduZWQgY2hhciAqKnApOworLQorLSNpZm5kZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAor IGludCBxX0RIX2NoZWNrKERIICpkaCwgaW50ICpjb2Rlcyk7CistI2VuZGlmIC8vIE9QRU5TU0xf Tk9fREVQUkVDQVRFRF8zXzAKKyAKKyBCSUdOVU0gKnFfQk5fYmluMmJuKGNvbnN0IHVuc2lnbmVk IGNoYXIgKnMsIGludCBsZW4sIEJJR05VTSAqcmV0KTsKKyAjZGVmaW5lIHFfU1NMX0NUWF9zZXRf dG1wX2RoKGN0eCwgZGgpIHFfU1NMX0NUWF9jdHJsKChjdHgpLCBTU0xfQ1RSTF9TRVRfVE1QX0RI LCAwLCAoY2hhciAqKWRoKQorQEAgLTc1NCw2ICs3NDksMTcgQEAgdm9pZCBxX0NSWVBUT19mcmVl KHZvaWQgKnN0ciwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUpOworIGludCBxX1NTTF9DVFhf Z2V0X3NlY3VyaXR5X2xldmVsKGNvbnN0IFNTTF9DVFggKmN0eCk7Cisgdm9pZCBxX1NTTF9DVFhf c2V0X3NlY3VyaXR5X2xldmVsKFNTTF9DVFggKmN0eCwgaW50IGxldmVsKTsKKyAKKysvLyBIZXJl IHdlIGhhdmUgdGhlIG9uZXMgdGhhdCBtYWtlIGRpZmZlcmVuY2UgYmV0d2VlbiBPcGVuU1NMIHBy ZS9wb3N0IHYzOgorKyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNT TF9WRVJTSU9OX01BSk9SID49IDMKKytYNTA5ICpxX1NTTF9nZXQxX3BlZXJfY2VydGlmaWNhdGUo U1NMICphKTsKKysjZGVmaW5lIHFfU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlIHFfU1NMX2dldDFf cGVlcl9jZXJ0aWZpY2F0ZQorK2ludCBxX0VWUF9QS0VZX2dldF9iYXNlX2lkKGNvbnN0IEVWUF9Q S0VZICpwa2V5KTsKKysjZGVmaW5lIHFfRVZQX1BLRVlfYmFzZV9pZCBxX0VWUF9QS0VZX2dldF9i YXNlX2lkCisrI2Vsc2UKKytYNTA5ICpxX1NTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShTU0wgKmEp OworK2ludCBxX0VWUF9QS0VZX2Jhc2VfaWQoRVZQX1BLRVkgKmEpOworKyNlbmRpZiAvLyBPUEVO U1NMX1ZFUlNJT05fTUFKT1IgPj0gMworKworIFFUX0VORF9OQU1FU1BBQ0UKKyAKKyAjZW5kaWYK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9x dF9lZ2xfcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRf ZWdsX3AuaAoraW5kZXggYmYzN2QwN2ZkOC4uZGJkNDJmYjc5OSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmgKKysrKyBiL3F0 YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmgKK0BAIC02 MSw3ICs2MSwxMSBAQAorICMgaWYgIWRlZmluZWQoUV9PU19JTlRFR1JJVFkpCisgIyAgZGVmaW5l IFdJTl9JTlRFUkZBQ0VfQ1VTVE9NICAgLy8gTlYKKyAjIGVuZGlmIC8vIFFfT1NfSU5URUdSSVRZ CistI2VuZGlmICAvLyBRVF9FR0xfTk9fWDExCisrI2Vsc2UgLy8gUVRfRUdMX05PX1gxMQorKy8v IElmIG9uZSBoYXMgYW4gZWdscGxhdGZvcm0uaCB3aXRoIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJv bm9zR3JvdXAvRUdMLVJlZ2lzdHJ5L3B1bGwvMTMwCisrLy8gdGhhdCBuZWVkcyBVU0VfWDExIHRv IGJlIGRlZmluZWQuCisrIyBkZWZpbmUgVVNFX1gxMQorKyNlbmRpZgorIAorICNpZmRlZiBRVF9F R0xfV0FZTEFORAorICMgZGVmaW5lIFdBWUxBTkQgLy8gTlYKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdk YXRhYmFzZS5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2Zv bnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFzZS5jcHAKK2luZGV4IDE1OWI0OTBjZTAuLjAwYWE4 MGNkNTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJh c2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L2ZvbnRkYXRhYmFzZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFi YXNlLmNwcAorQEAgLTU2Nyw2ICs1NjcsOCBAQCB2b2lkIFFGb250Y29uZmlnRGF0YWJhc2U6OnBv cHVsYXRlRm9udERhdGFiYXNlKCkKKyAgICAgICAgIGZvbnRzID0gRmNGb250TGlzdChudWxscHRy LCBwYXR0ZXJuLCBvcyk7CisgICAgICAgICBGY09iamVjdFNldERlc3Ryb3kob3MpOworICAgICAg ICAgRmNQYXR0ZXJuRGVzdHJveShwYXR0ZXJuKTsKKysgICAgICAgIGlmICghZm9udHMpCisrICAg ICAgICAgICAgcmV0dXJuOworICAgICB9CisgCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZm9u dHMtPm5mb250OyBpKyspCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv aW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb24uY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBv cnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb24uY3BwCitpbmRleCBiNzEzYzE5NDQ3Li43Y2I5 YThjNzlhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGti Y29tbW9uL3F4a2Jjb21tb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9p bnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAKK0BAIC05NSw2ICs5NSw3IEBAIHN0YXRpYyBj b25zdGV4cHIgY29uc3QgYXV0byBLZXlUYmwgPSBxTWFrZUFycmF5KAorICAgICAgICAgWGtiMlF0 PFhLQl9LRVlfQ2xlYXIsICAgICAgICAgICAgICAgICAgIFF0OjpLZXlfRGVsZXRlPiwKKyAgICAg ICAgIFhrYjJRdDxYS0JfS0VZX1BhdXNlLCAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1BhdXNl PiwKKyAgICAgICAgIFhrYjJRdDxYS0JfS0VZX1ByaW50LCAgICAgICAgICAgICAgICAgICBRdDo6 S2V5X1ByaW50PiwKKysgICAgICAgIFhrYjJRdDxYS0JfS0VZX1N5c19SZXEsICAgICAgICAgICAg ICAgICBRdDo6S2V5X1N5c1JlcT4sCisgICAgICAgICBYa2IyUXQ8MHgxMDA1RkY2MCwgICAgICAg ICAgICAgICAgICAgICAgUXQ6OktleV9TeXNSZXE+LCAgICAgICAgIC8vIGhhcmRjb2RlZCBTdW4g U3lzUmVxCisgICAgICAgICBYa2IyUXQ8MHgxMDA3ZmYwMCwgICAgICAgICAgICAgICAgICAgICAg UXQ6OktleV9TeXNSZXE+LCAgICAgICAgIC8vIGhhcmRjb2RlZCBYMzg2IFN5c1JlcQorIAorQEAg LTQ3MSw3ICs0NzIsNyBAQCBRVmVjdG9yPHhrYl9rZXlzeW1fdD4gUVhrYkNvbW1vbjo6dG9LZXlz eW0oUUtleUV2ZW50ICpldmVudCkKKyAgICAgfSBlbHNlIGlmIChldmVudC0+bW9kaWZpZXJzKCkg JiBRdDo6S2V5cGFkTW9kaWZpZXIpIHsKKyAgICAgICAgIGlmIChxdEtleSA+PSBRdDo6S2V5XzAg JiYgcXRLZXkgPD0gUXQ6OktleV85KQorICAgICAgICAgICAgIGtleXN5bXMuYXBwZW5kKFhLQl9L RVlfS1BfMCArIChxdEtleSAtIFF0OjpLZXlfMCkpOworLSAgICB9IGVsc2UgaWYgKGlzTGF0aW4o cXRLZXkpICYmIGV2ZW50LT50ZXh0KCkuaXNVcHBlcigpKSB7CisrICAgIH0gZWxzZSBpZiAoaXNM YXRpbjEocXRLZXkpICYmIGV2ZW50LT50ZXh0KCkuaXNVcHBlcigpKSB7CisgICAgICAgICBrZXlz eW1zLmFwcGVuZChxdEtleSk7CisgICAgIH0KKyAKK0BAIC01MjMsNyArNTI0LDcgQEAgaW50IFFY a2JDb21tb246OmtleXN5bVRvUXRLZXkoeGtiX2tleXN5bV90IGtleXN5bSwgUXQ6OktleWJvYXJk TW9kaWZpZXJzIG1vZGlmaWUKKyAgICAgICAgIC8vIFdpdGggc3RhbmRhcmQgc2hvcnRjdXRzIHdl IHNob3VsZCBwcmVmZXIgYSBsYXRpbiBjaGFyYWN0ZXIsIHRoaXMgaXMKKyAgICAgICAgIC8vIGZv ciBjaGVja3MgbGlrZSAic29tZSBxa2V5ZXZlbnQgPT0gUUtleVNlcXVlbmNlOjpDb3B5IiB0byB3 b3JrIGV2ZW4KKyAgICAgICAgIC8vIHdoZW4gdXNpbmcgZm9yIGV4YW1wbGUgJ3J1c3NpYW4nIGtl eWJvYXJkIGxheW91dC4KKy0gICAgICAgIGlmICghUVhrYkNvbW1vbjo6aXNMYXRpbihrZXlzeW0p KSB7CisrICAgICAgICBpZiAoIVFYa2JDb21tb246OmlzTGF0aW4xKGtleXN5bSkpIHsKKyAgICAg ICAgICAgICB4a2Jfa2V5c3ltX3QgbGF0aW5LZXlzeW0gPSBRWGtiQ29tbW9uOjpsb29rdXBMYXRp bktleXN5bShzdGF0ZSwgY29kZSk7CisgICAgICAgICAgICAgaWYgKGxhdGluS2V5c3ltICE9IFhL Ql9LRVlfTm9TeW1ib2wpCisgICAgICAgICAgICAgICAgIGtleXN5bSA9IGxhdGluS2V5c3ltOwor QEAgLTU0Niw3ICs1NDcsNyBAQCBzdGF0aWMgaW50IGtleXN5bVRvUXRLZXlfaW50ZXJuYWwoeGti X2tleXN5bV90IGtleXN5bSwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZAorICAgICB9IGVsc2Ug aWYgKGtleXN5bSA+PSBYS0JfS0VZX0tQXzAgJiYga2V5c3ltIDw9IFhLQl9LRVlfS1BfOSkgewor ICAgICAgICAgLy8gbnVtZXJpYyBrZXlwYWQga2V5cworICAgICAgICAgcXRLZXkgPSBRdDo6S2V5 XzAgKyAoa2V5c3ltIC0gWEtCX0tFWV9LUF8wKTsKKy0gICAgfSBlbHNlIGlmIChRWGtiQ29tbW9u Ojppc0xhdGluKGtleXN5bSkpIHsKKysgICAgfSBlbHNlIGlmIChRWGtiQ29tbW9uOjppc0xhdGlu MShrZXlzeW0pKSB7CisgICAgICAgICBxdEtleSA9IFFYa2JDb21tb246OnF4a2Jjb21tb25feGti X2tleXN5bV90b191cHBlcihrZXlzeW0pOworICAgICB9IGVsc2UgeworICAgICAgICAgLy8gY2hl Y2sgaWYgd2UgaGF2ZSBhIGRpcmVjdCBtYXBwaW5nCitAQCAtNjc4LDcgKzY3OSw3IEBAIFFMaXN0 PGludD4gUVhrYkNvbW1vbjo6cG9zc2libGVLZXlzKHhrYl9zdGF0ZSAqc3RhdGUsIGNvbnN0IFFL ZXlFdmVudCAqZXZlbnQsCisgICAgICAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbmVlZGVkTW9k cyA9IE1vZHNUYmxbaV07CisgICAgICAgICBpZiAoKG1vZGlmaWVycyAmIG5lZWRlZE1vZHMpID09 IG5lZWRlZE1vZHMpIHsKKyAgICAgICAgICAgICBpZiAoaSA9PSA4KSB7CistICAgICAgICAgICAg ICAgIGlmIChpc0xhdGluKGJhc2VRdEtleSkpCisrICAgICAgICAgICAgICAgIGlmIChpc0xhdGlu MShiYXNlUXRLZXkpKQorICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg ICAgICAgIC8vIGFkZCBhIGxhdGluIGtleSBhcyBhIGZhbGwgYmFjayBrZXkKKyAgICAgICAgICAg ICAgICAgc3ltID0gbG9va3VwTGF0aW5LZXlzeW0oc3RhdGUsIGtleWNvZGUpOworQEAgLTczMyw3 ICs3MzQsNyBAQCB2b2lkIFFYa2JDb21tb246OnZlcmlmeUhhc0xhdGluTGF5b3V0KHhrYl9rZXlt YXAgKmtleW1hcCkKKyAgICAgZm9yICh4a2JfbGF5b3V0X2luZGV4X3QgbGF5b3V0ID0gMDsgbGF5 b3V0IDwgbGF5b3V0Q291bnQ7ICsrbGF5b3V0KSB7CisgICAgICAgICBmb3IgKHhrYl9rZXljb2Rl X3QgY29kZSA9IG1pbktleWNvZGU7IGNvZGUgPCBtYXhLZXljb2RlOyArK2NvZGUpIHsKKyAgICAg ICAgICAgICB4a2Jfa2V5bWFwX2tleV9nZXRfc3ltc19ieV9sZXZlbChrZXltYXAsIGNvZGUsIGxh eW91dCwgMCwgJmtleXN5bXMpOworLSAgICAgICAgICAgIGlmIChrZXlzeW1zICYmIGlzTGF0aW4o a2V5c3ltc1swXSkpCisrICAgICAgICAgICAgaWYgKGtleXN5bXMgJiYgaXNMYXRpbjEoa2V5c3lt c1swXSkpCisgICAgICAgICAgICAgICAgIG5yTGF0aW5LZXlzKys7CisgICAgICAgICAgICAgaWYg KG5yTGF0aW5LZXlzID4gMTApIC8vIGFyYml0cmFyaWx5IGNob3NlbiB0aHJlc2hvbGQKKyAgICAg ICAgICAgICAgICAgcmV0dXJuOworQEAgLTc2Niw3ICs3NjcsNyBAQCB4a2Jfa2V5c3ltX3QgUVhr YkNvbW1vbjo6bG9va3VwTGF0aW5LZXlzeW0oeGtiX3N0YXRlICpzdGF0ZSwgeGtiX2tleWNvZGVf dCBrZXljbworICAgICAgICAgeGtiX2xldmVsX2luZGV4X3QgbGV2ZWwgPSB4a2Jfc3RhdGVfa2V5 X2dldF9sZXZlbChzdGF0ZSwga2V5Y29kZSwgbGF5b3V0KTsKKyAgICAgICAgIGlmICh4a2Jfa2V5 bWFwX2tleV9nZXRfc3ltc19ieV9sZXZlbChrZXltYXAsIGtleWNvZGUsIGxheW91dCwgbGV2ZWws ICZzeW1zKSAhPSAxKQorICAgICAgICAgICAgIGNvbnRpbnVlOworLSAgICAgICAgaWYgKGlzTGF0 aW4oc3ltc1swXSkpIHsKKysgICAgICAgIGlmIChpc0xhdGluMShzeW1zWzBdKSkgeworICAgICAg ICAgICAgIHN5bSA9IHN5bXNbMF07CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4 a2Jjb21tb25fcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9u L3F4a2Jjb21tb25fcC5oCitpbmRleCA1NjFlYWUwM2RiLi44Mzg5YmQ4ZjVhIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25f cC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhr YmNvbW1vbl9wLmgKK0BAIC05NCw4ICs5NCw4IEBAIHB1YmxpYzoKKyAgICAgc3RhdGljIHZvaWQg dmVyaWZ5SGFzTGF0aW5MYXlvdXQoeGtiX2tleW1hcCAqa2V5bWFwKTsKKyAgICAgc3RhdGljIHhr Yl9rZXlzeW1fdCBsb29rdXBMYXRpbktleXN5bSh4a2Jfc3RhdGUgKnN0YXRlLCB4a2Jfa2V5Y29k ZV90IGtleWNvZGUpOworIAorLSAgICBzdGF0aWMgYm9vbCBpc0xhdGluKHhrYl9rZXlzeW1fdCBz eW0pIHsKKy0gICAgICAgIHJldHVybiAoKHN5bSA+PSAnYScgJiYgc3ltIDw9ICd6JykgfHwgKHN5 bSA+PSAnQScgJiYgc3ltIDw9ICdaJykpOworKyAgICBzdGF0aWMgYm9vbCBpc0xhdGluMSh4a2Jf a2V5c3ltX3Qgc3ltKSB7CisrICAgICAgICByZXR1cm4gc3ltIDw9IDB4ZmY7CisgICAgIH0KKyAg ICAgc3RhdGljIGJvb2wgaXNLZXlwYWQoeGtiX2tleXN5bV90IHN5bSkgeworICAgICAgICAgcmV0 dXJuIHN5bSA+PSBYS0JfS0VZX0tQX1NwYWNlICYmIHN5bSA8PSBYS0JfS0VZX0tQXzk7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2Rl dmljZS5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21z ZGV2aWNlLmNwcAoraW5kZXggOGNkN2Y5YjM2OC4uNDA2Zjg0NjYzZiAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2NvbnZlbmllbmNlL3FrbXNkZXZpY2UuY3BwCisr KysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNl LmNwcAorQEAgLTMxOCw3ICszMTgsNyBAQCBRUGxhdGZvcm1TY3JlZW4gKlFLbXNEZXZpY2U6OmNy ZWF0ZVNjcmVlbkZvckNvbm5lY3Rvcihkcm1Nb2RlUmVzUHRyIHJlc291cmNlcywKKyAKKyAgICAg aWYgKGN1cnJlbnQgPCAwICYmIGNydGNfbW9kZS5jbG9jayAhPSAwKSB7CisgICAgICAgICBtb2Rl cyA8PCBjcnRjX21vZGU7CistICAgICAgICBjdXJyZW50ID0gbW9kZS5zaXplKCkgLSAxOworKyAg ICAgICAgY3VycmVudCA9IG1vZGVzLnNpemUoKSAtIDE7CisgICAgIH0KKyAKKyAgICAgaWYgKGNv bmZpZ3VyYXRpb24gPT0gT3V0cHV0Q29uZmlnQ3VycmVudCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9yLmNwcCBi L3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0 b3IuY3BwCitpbmRleCA5MTUzZmQyMGJiLi4yNTVlYTVlMzNlIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAK KysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNw aWFkYXB0b3IuY3BwCitAQCAtMTk0LDYgKzE5NCw5IEBAIFFTdHJpbmcgQXRTcGlBZGFwdG9yOjpp bnRyb3NwZWN0KGNvbnN0IFFTdHJpbmcgJnBhdGgpIGNvbnN0CisgICAgICAgICAgICAgICAgICIg ICAgICA8YXJnIGRpcmVjdGlvbj1cIm91dFwiIHR5cGU9XCIoc28pXCIvPlxuIgorICAgICAgICAg ICAgICAgICAiICAgICAgPGFubm90YXRpb24gdmFsdWU9XCJRU3BpT2JqZWN0UmVmZXJlbmNlXCIg bmFtZT1cIm9yZy5xdHByb2plY3QuUXREQnVzLlF0VHlwZU5hbWUuT3V0MFwiLz5cbiIKKyAgICAg ICAgICAgICAgICAgIiAgICA8L21ldGhvZD5cbiIKKysgICAgICAgICAgICAgICAgIiAgICA8bWV0 aG9kIG5hbWU9XCJHZXRBY2Nlc3NpYmxlSWRcIj5cbiIKKysgICAgICAgICAgICAgICAgIiAgICAg IDxhcmcgZGlyZWN0aW9uPVwib3V0XCIgdHlwZT1cInNcIi8+XG4iCisrICAgICAgICAgICAgICAg ICIgICAgPC9tZXRob2Q+XG4iCisgICAgICAgICAgICAgICAgICIgIDwvaW50ZXJmYWNlPlxuIgor ICAgICAgICAgICAgICAgICApOworIAorQEAgLTkxMyw4ICs5MTYsMTcgQEAgdm9pZCBBdFNwaUFk YXB0b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2ZW50ICpldmVudCkKKyAgICAgfQorICAgICBjYXNl IFFBY2Nlc3NpYmxlOjpOYW1lQ2hhbmdlZDogeworICAgICAgICAgaWYgKHNlbmRPYmplY3QgfHwg c2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2UgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2Vf YWNjZXNzaWJsZV9uYW1lKSB7CistICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvcklu dGVyZmFjZShldmVudC0+YWNjZXNzaWJsZUludGVyZmFjZSgpKTsKKy0gICAgICAgICAgICBRVmFy aWFudExpc3QgYXJncyA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKFFMYXRpbjFTdHJpbmcoImFj Y2Vzc2libGUtbmFtZSIpLCAwLCAwLCB2YXJpYW50Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAg ICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlID0gZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZh Y2UoKTsKKysgICAgICAgICAgICBpZiAoIWlmYWNlKSB7CisrICAgICAgICAgICAgICAgIHFDRGVi dWcobGNBY2Nlc3NpYmlsaXR5QXRzcGksCisrICAgICAgICAgICAgICAgICAgICAgICAgIk5hbWVD aGFuZ2VkIGV2ZW50IGZyb20gaW52YWxpZCBhY2Nlc3NpYmxlLiIpOworKyAgICAgICAgICAgICAg ICByZXR1cm47CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9 IHBhdGhGb3JJbnRlcmZhY2UoaWZhY2UpOworKyAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdz ID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoCisrICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJp bmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLAorKyAgICAgICAgICAgICAgICBRVmFyaWFudDo6 ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChpZmFjZS0+dGV4dChRQWNjZXNzaWJsZTo6TmFtZSkpKSk7 CisgICAgICAgICAgICAgc2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQSV9E QlVTX0lOVEVSRkFDRV9FVkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFMYXRpbjFTdHJpbmcoIlByb3BlcnR5Q2hhbmdlIiksIGFyZ3MpOworICAgICAgICAgfQorQEAg LTkyMiw4ICs5MzQsMTcgQEAgdm9pZCBBdFNwaUFkYXB0b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2 ZW50ICpldmVudCkKKyAgICAgfQorICAgICBjYXNlIFFBY2Nlc3NpYmxlOjpEZXNjcmlwdGlvbkNo YW5nZWQ6IHsKKyAgICAgICAgIGlmIChzZW5kT2JqZWN0IHx8IHNlbmRPYmplY3RfcHJvcGVydHlf Y2hhbmdlIHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hhbmdlX2FjY2Vzc2libGVfZGVzY3JpcHRp b24pIHsKKy0gICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGV2ZW50 LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCkpOworLSAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdz ID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1kZXNj cmlwdGlvbiIpLCAwLCAwLCB2YXJpYW50Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAgICAgUUFj Y2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlID0gZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKTsK KysgICAgICAgICAgICBpZiAoIWlmYWNlKSB7CisrICAgICAgICAgICAgICAgIHFDRGVidWcobGNB Y2Nlc3NpYmlsaXR5QXRzcGksCisrICAgICAgICAgICAgICAgICAgICAgICAgIkRlc2NyaXB0aW9u Q2hhbmdlZCBldmVudCBmcm9tIGludmFsaWQgYWNjZXNzaWJsZS4iKTsKKysgICAgICAgICAgICAg ICAgcmV0dXJuOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBRU3RyaW5nIHBhdGgg PSBwYXRoRm9ySW50ZXJmYWNlKGlmYWNlKTsKKysgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJn cyA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKAorKyAgICAgICAgICAgICAgICBRTGF0aW4xU3Ry aW5nKCJhY2Nlc3NpYmxlLWRlc2NyaXB0aW9uIiksIDAsIDAsCisrICAgICAgICAgICAgICAgIFFW YXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpE ZXNjcmlwdGlvbikpKSk7CisgICAgICAgICAgICAgc2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGlu MVN0cmluZyhBVFNQSV9EQlVTX0lOVEVSRkFDRV9FVkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlByb3BlcnR5Q2hhbmdlIiksIGFyZ3MpOwor ICAgICAgICAgfQorQEAgLTEwMzgsNyArMTA1OSw5IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpub3Rp ZnkoUUFjY2Vzc2libGVFdmVudCAqZXZlbnQpCisgICAgICAgICAgICAgICAgIC8vIENvbWJvIEJv eCB3aXRoIEFULVNQSSBsaWtlcyB0byBiZSBzcGVjaWFsCisgICAgICAgICAgICAgICAgIC8vIEl0 IHJlcXVpcmVzIGEgbmFtZS1jaGFuZ2UgdG8gdXBkYXRlIGNhY2hlcyBhbmQgdGhlbiBzZWxlY3Rp b24tY2hhbmdlZAorICAgICAgICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJm YWNlKGlmYWNlKTsKKy0gICAgICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MxID0gcGFja0RC dXNTaWduYWxBcmd1bWVudHMoUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAs IHZhcmlhbnRGb3JQYXRoKHBhdGgpKTsKKysgICAgICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFy Z3MxID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoCisrICAgICAgICAgICAgICAgICAgICBRTGF0 aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLW5hbWUiKSwgMCwgMCwKKysgICAgICAgICAgICAgICAgICAg IFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxl OjpOYW1lKSkpKTsKKyAgICAgICAgICAgICAgICAgc2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGlu MVN0cmluZyhBVFNQSV9EQlVTX0lOVEVSRkFDRV9FVkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdz MSk7CisgICAgICAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzMiA9IHBhY2tEQnVzU2lnbmFs QXJndW1lbnRzKFFTdHJpbmcoKSwgMCwgMCwgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1Zhcmlh bnQoUVZhcmlhbnQoMCkpKSk7CitAQCAtMTM1OCw2ICsxMzgxLDI2IEBAIHZvaWQgQXRTcGlBZGFw dG9yOjpyZWdpc3RlckFwcGxpY2F0aW9uKCkKKyAgICAgZGVsZXRlIHJlZ2lzdHJ5OworIH0KKyAK KytuYW1lc3BhY2UgeworK1FTdHJpbmcgYWNjZXNzaWJsZUlkRm9yQWNjZXNzaWJsZShRQWNjZXNz aWJsZUludGVyZmFjZSAqYWNjZXNzaWJsZSkKKyt7CisrICAgIFFTdHJpbmcgcmVzdWx0OworKyAg ICB3aGlsZSAoYWNjZXNzaWJsZSkgeworKyAgICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgpKQor KyAgICAgICAgICAgIHJlc3VsdC5wcmVwZW5kKFFMYXRpbjFDaGFyKCcuJykpOworKyAgICAgICAg aWYgKGF1dG8gb2JqID0gYWNjZXNzaWJsZS0+b2JqZWN0KCkpIHsKKysgICAgICAgICAgICBjb25z dCBRU3RyaW5nIG5hbWUgPSBvYmotPm9iamVjdE5hbWUoKTsKKysgICAgICAgICAgICBpZiAoIW5h bWUuaXNFbXB0eSgpKQorKyAgICAgICAgICAgICAgICByZXN1bHQucHJlcGVuZChuYW1lKTsKKysg ICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgICAgIHJlc3VsdC5wcmVwZW5kKFFTdHJpbmc6 OmZyb21VdGY4KG9iai0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSkpOworKyAgICAgICAgfQor KyAgICAgICAgYWNjZXNzaWJsZSA9IGFjY2Vzc2libGUtPnBhcmVudCgpOworKyAgICB9CisrICAg IHJldHVybiByZXN1bHQ7CisrfQorK30gLy8gbmFtZXNwYWNlCisrCisgLy8gQWNjZXNzaWJsZQor IGJvb2wgQXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxlSW50ZXJmYWNlKFFBY2Nlc3NpYmxlSW50ZXJm YWNlICppbnRlcmZhY2UsIGNvbnN0IFFTdHJpbmcgJmZ1bmN0aW9uLCBjb25zdCBRREJ1c01lc3Nh Z2UgJm1lc3NhZ2UsIGNvbnN0IFFEQnVzQ29ubmVjdGlvbiAmY29ubmVjdGlvbikKKyB7CitAQCAt MTQ0MSw2ICsxNDg0LDkgQEAgYm9vbCBBdFNwaUFkYXB0b3I6OmFjY2Vzc2libGVJbnRlcmZhY2Uo UUFjY2Vzc2libGVJbnRlcmZhY2UgKmludGVyZmFjZSwgY29uc3QgUVMKKyAgICAgICAgICAgICBj aGlsZHJlbiA8PCByZWY7CisgICAgICAgICB9CisgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWVz c2FnZS5jcmVhdGVSZXBseShRVmFyaWFudDo6ZnJvbVZhbHVlKGNoaWxkcmVuKSkpOworKyAgICB9 IGVsc2UgaWYgKGZ1bmN0aW9uID09IFFMYXRpbjFTdHJpbmcoIkdldEFjY2Vzc2libGVJZCIpKSB7 CisrICAgICAgICBzZW5kUmVwbHkoY29ubmVjdGlvbiwgbWVzc2FnZSwKKysgICAgICAgICAgICAg ICAgICBRVmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChhY2Nlc3NpYmxlSWRGb3JBY2Nl c3NpYmxlKGludGVyZmFjZSkpKSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICBxQ0RlYnVnKGxj QWNjZXNzaWJpbGl0eUF0c3BpKSA8PCAiV0FSTklORzogQXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxl SW50ZXJmYWNlIGRvZXMgbm90IGltcGxlbWVudCAiIDw8IGZ1bmN0aW9uIDw8IG1lc3NhZ2UucGF0 aCgpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlvbi5jcHAgYi9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24u Y3BwCitpbmRleCA0NWRkYzhlNDk2Li5jYzczNGFiYzYzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcAor KysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNj b25uZWN0aW9uLmNwcAorQEAgLTY5LDYgKzY5LDIxIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIERC dXNDb25uZWN0aW9uOjpEQnVzQ29ubmVjdGlvbihRT2JqZWN0ICpwYXJlbnQpCisgICAgIDogUU9i amVjdChwYXJlbnQpLCBtX2ExMXlDb25uZWN0aW9uKFFTdHJpbmcoKSksIG1fZW5hYmxlZChmYWxz ZSkKKyB7CisrICAgIC8vIElmIHRoZSBidXMgaXMgZXhwbGljaXRseSBzZXQgdmlhIGVudiB2YXIg aXQgb3ZlcnJpZGVzIGV2ZXJ5dGhpbmcgZWxzZS4KKysgICAgUUJ5dGVBcnJheSBhZGRyZXNzRW52 ID0gcWdldGVudigiQVRfU1BJX0JVU19BRERSRVNTIik7CisrICAgIGlmICghYWRkcmVzc0Vudi5p c0VtcHR5KCkpIHsKKysgICAgICAgIC8vIE9ubHkgY29ubmVjdCBvbiBuZXh0IGxvb3AgcnVuLCBj b25uZWN0aW9ucyB0byBvdXIgZW5hYmxlZCBzaWduYWwgYXJlCisrICAgICAgICAvLyBvbmx5IGVz dGFibGlzaGVkIGFmdGVyIHRoZSBjdG9yIHJldHVybnMuCisrICAgICAgICBRTWV0YU9iamVjdDo6 aW52b2tlTWV0aG9kKAorKyAgICAgICAgICAgICAgICB0aGlzLAorKyAgICAgICAgICAgICAgICBb dGhpcywgYWRkcmVzc0Vudl0geworKyAgICAgICAgICAgICAgICAgICAgbV9lbmFibGVkID0gdHJ1 ZTsKKysgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RBMTF5QnVzKFFTdHJpbmc6OmZyb21Mb2Nh bDhCaXQoYWRkcmVzc0VudikpOworKyAgICAgICAgICAgICAgICB9LAorKyAgICAgICAgICAgICAg ICBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKyAg ICAgLy8gU3RhcnQgbW9uaXRvcmluZyBpZiAib3JnLmExMXkuQnVzIiBpcyByZWdpc3RlcmVkIGFz IERCdXMgc2VydmljZS4KKyAgICAgUURCdXNDb25uZWN0aW9uIGMgPSBRREJ1c0Nvbm5lY3Rpb246 OnNlc3Npb25CdXMoKTsKKyAgICAgaWYgKCFjLmlzQ29ubmVjdGVkKCkpIHsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJp Y3VuaXhzZXJ2aWNlcy5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9n ZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlcy5jcHAKK2luZGV4IDFhM2NhYjI3NWQuLjJh YmUwMzkxMjYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNl cy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2Vz LmNwcAorQEAgLTUxLDYgKzUxLDkgQEAKKyAjaW5jbHVkZSA8UXRDb3JlL1FTdGFuZGFyZFBhdGhz PgorICNpbmNsdWRlIDxRdENvcmUvUVVybD4KKyAKKysjaW5jbHVkZSA8UXRHdWkvUUd1aUFwcGxp Y2F0aW9uPgorKyNpbmNsdWRlIDxRdEd1aS9RV2luZG93PgorKworICNpZiBRVF9DT05GSUcoZGJ1 cykKKyAvLyBUaGVzZSBRdENvcmUgaW5jbHVkZXMgYXJlIG5lZWRlZCBmb3IgeGRnLWRlc2t0b3At cG9ydGFsIHN1cHBvcnQKKyAjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcWNvcmVfdW5peF9wLmg+ CitAQCAtNTgsNiArNjEsOCBAQAorICNpbmNsdWRlIDxRdENvcmUvUUZpbGVJbmZvPgorICNpbmNs dWRlIDxRdENvcmUvUVVybFF1ZXJ5PgorIAorKyNpbmNsdWRlIDxRdEd1aS9RQ29sb3I+CisrCisg I2luY2x1ZGUgPFF0REJ1cy9RREJ1c0Nvbm5lY3Rpb24+CisgI2luY2x1ZGUgPFF0REJ1cy9RREJ1 c01lc3NhZ2U+CisgI2luY2x1ZGUgPFF0REJ1cy9RREJ1c1BlbmRpbmdDYWxsPgorQEAgLTE0Miw2 ICsxNDcsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZGV0ZWN0V2ViQnJvd3Nlcihjb25zdCBRQnl0 ZUFycmF5ICZkZXNrdG9wLAorICAgICB9CisgCisgICAgIGlmIChkZXNrdG9wID09IFFCeXRlQXJy YXkoIktERSIpKSB7CisrICAgICAgICBpZiAoY2hlY2tFeGVjdXRhYmxlKFFTdHJpbmdMaXRlcmFs KCJrZGUtb3BlbjUiKSwgYnJvd3NlcikpCisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg ICAgICAvLyBLb25xdWVyb3IgbGF1bmNoZXIKKyAgICAgICAgIGlmIChjaGVja0V4ZWN1dGFibGUo UVN0cmluZ0xpdGVyYWwoImtmbWNsaWVudCIpLCBicm93c2VyKSkgeworICAgICAgICAgICAgIGJy b3dzZXItPmFwcGVuZChRTGF0aW4xU3RyaW5nKCIgZXhlYyIpKTsKK0BAIC0yOTYsOCArMzAzLDEz NSBAQCBzdGF0aWMgaW5saW5lIFFEQnVzTWVzc2FnZSB4ZGdEZXNrdG9wUG9ydGFsU2VuZEVtYWls KGNvbnN0IFFVcmwgJnVybCkKKyAKKyAgICAgcmV0dXJuIFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lv bkJ1cygpLmNhbGwobWVzc2FnZSk7CisgfQorKworK25hbWVzcGFjZSB7Cisrc3RydWN0IFhER0Rl c2t0b3BDb2xvcgorK3sKKysgICAgZG91YmxlIHIgPSAwOworKyAgICBkb3VibGUgZyA9IDA7Cisr ICAgIGRvdWJsZSBiID0gMDsKKysKKysgICAgUUNvbG9yIHRvUUNvbG9yKCkgY29uc3QKKysgICAg eworKyAgICAgICAgY29uc3RleHByIGF1dG8gcmdiTWF4ID0gMjU1OworKyAgICAgICAgcmV0dXJu IHsgc3RhdGljX2Nhc3Q8aW50PihyICogcmdiTWF4KSwgc3RhdGljX2Nhc3Q8aW50PihnICogcmdi TWF4KSwKKysgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oYiAqIHJnYk1heCkgfTsK KysgICAgfQorK307CisrCisrY29uc3QgUURCdXNBcmd1bWVudCAmb3BlcmF0b3I+Pihjb25zdCBR REJ1c0FyZ3VtZW50ICZhcmd1bWVudCwgWERHRGVza3RvcENvbG9yICZteVN0cnVjdCkKKyt7Cisr ICAgIGFyZ3VtZW50LmJlZ2luU3RydWN0dXJlKCk7CisrICAgIGFyZ3VtZW50ID4+IG15U3RydWN0 LnIgPj4gbXlTdHJ1Y3QuZyA+PiBteVN0cnVjdC5iOworKyAgICBhcmd1bWVudC5lbmRTdHJ1Y3R1 cmUoKTsKKysgICAgcmV0dXJuIGFyZ3VtZW50OworK30KKysKKytjbGFzcyBYZGdEZXNrdG9wUG9y dGFsQ29sb3JQaWNrZXIgOiBwdWJsaWMgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyCisrewor KyAgICBRX09CSkVDVAorK3B1YmxpYzoKKysgICAgWGRnRGVza3RvcFBvcnRhbENvbG9yUGlja2Vy KGNvbnN0IFFTdHJpbmcgJnBhcmVudFdpbmRvd0lkLCBRV2luZG93ICpwYXJlbnQpCisrICAgICAg ICA6IFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlcihwYXJlbnQpLCBtX3BhcmVudFdpbmRvd0lk KHBhcmVudFdpbmRvd0lkKQorKyAgICB7CisrICAgIH0KKysKKysgICAgdm9pZCBwaWNrQ29sb3Io KSBvdmVycmlkZQorKyAgICB7CisrICAgICAgICAvLyBEQnVzIHNpZ25hdHVyZToKKysgICAgICAg IC8vIFBpY2tDb2xvciAoSU4gICBzICAgICAgcGFyZW50X3dpbmRvdywKKysgICAgICAgIC8vICAg ICAgICAgICAgSU4gICBhe3N2fSAgb3B0aW9ucworKyAgICAgICAgLy8gICAgICAgICAgICBPVVQg IG8gICAgICBoYW5kbGUpCisrICAgICAgICAvLyBPcHRpb25zOgorKyAgICAgICAgLy8gaGFuZGxl X3Rva2VuIChzKSAtICBBIHN0cmluZyB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgbGFzdCBlbGVt ZW50IG9mIHRoZSBAaGFuZGxlLgorKworKyAgICAgICAgUURCdXNNZXNzYWdlIG1lc3NhZ2UgPSBR REJ1c01lc3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwoCisrICAgICAgICAgICAgICAgIFFTdHJpbmdM aXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiKSwgUVN0cmluZ0xpdGVyYWwo Ii9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3AiKSwKKysgICAgICAgICAgICAgICAgUVN0 cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuU2NyZWVuc2hvdCIpLCBRU3RyaW5n TGl0ZXJhbCgiUGlja0NvbG9yIikpOworKyAgICAgICAgbWVzc2FnZSA8PCBtX3BhcmVudFdpbmRv d0lkIDw8IFFWYXJpYW50TWFwKCk7CisrCisrICAgICAgICBRREJ1c1BlbmRpbmdDYWxsIHBlbmRp bmdDYWxsID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1lc3NhZ2Up OworKyAgICAgICAgYXV0byB3YXRjaGVyID0gbmV3IFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyKHBl bmRpbmdDYWxsLCB0aGlzKTsKKysgICAgICAgIGNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGlu Z0NhbGxXYXRjaGVyOjpmaW5pc2hlZCwgdGhpcywKKysgICAgICAgICAgICAgICAgW3RoaXNdKFFE QnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7CisrICAgICAgICAgICAgICAgICAgICB3 YXRjaGVyLT5kZWxldGVMYXRlcigpOworKyAgICAgICAgICAgICAgICAgICAgUURCdXNQZW5kaW5n UmVwbHk8UURCdXNPYmplY3RQYXRoPiByZXBseSA9ICp3YXRjaGVyOworKyAgICAgICAgICAgICAg ICAgICAgaWYgKHJlcGx5LmlzRXJyb3IoKSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHFX YXJuaW5nKCJEQnVzIGNhbGwgdG8gcGljayBjb2xvciBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBxUHJpbnRhYmxlKHJlcGx5LmVycm9yKCkubWVzc2FnZSgp KSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgUV9FTUlUIGNvbG9yUGlja2VkKHt9KTsKKysg ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgUURC dXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuY29ubmVjdCgKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0 b3AiKSwgcmVwbHkudmFsdWUoKS5wYXRoKCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5SZXF1ZXN0IiksIFFT dHJpbmdMaXRlcmFsKCJSZXNwb25zZSIpLCB0aGlzLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU0xPVChnb3RDb2xvclJlc3BvbnNlKHVpbnQsUVZhcmlhbnRNYXApKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCisrICAgICAgICAgICAg ICAgICAgICAgICAgKTsKKysgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAg fSk7CisrICAgIH0KKysKKytwcml2YXRlIFFfU0xPVFM6CisrICAgIHZvaWQgZ290Q29sb3JSZXNw b25zZSh1aW50IHJlc3VsdCwgY29uc3QgUVZhcmlhbnRNYXAgJm1hcCkKKysgICAgeworKyAgICAg ICAgaWYgKHJlc3VsdCAhPSAwKQorKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIFhER0Rl c2t0b3BDb2xvciBjb2xvcnt9OworKyAgICAgICAgbWFwLnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJj b2xvciIpKS52YWx1ZTxRREJ1c0FyZ3VtZW50PigpID4+IGNvbG9yOworKyAgICAgICAgUV9FTUlU IGNvbG9yUGlja2VkKGNvbG9yLnRvUUNvbG9yKCkpOworKyAgICAgICAgZGVsZXRlTGF0ZXIoKTsK KysgICAgfQorKworK3ByaXZhdGU6CisrICAgIGNvbnN0IFFTdHJpbmcgbV9wYXJlbnRXaW5kb3dJ ZDsKKyt9OworK30gLy8gbmFtZXNwYWNlCisrCisgI2VuZGlmIC8vIFFUX0NPTkZJRyhkYnVzKQor IAorK1FHZW5lcmljVW5peFNlcnZpY2VzOjpRR2VuZXJpY1VuaXhTZXJ2aWNlcygpCisreworKyNp ZiBRVF9DT05GSUcoZGJ1cykKKysgICAgaWYgKHFFbnZpcm9ubWVudFZhcmlhYmxlSW50VmFsdWUo IlFUX05PX1hER19ERVNLVE9QX1BPUlRBTCIpID4gMCkgeworKyAgICAgICAgcmV0dXJuOworKyAg ICB9CisrICAgIFFEQnVzTWVzc2FnZSBtZXNzYWdlID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRo b2RDYWxsKAorKyAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9y dGFsLkRlc2t0b3AiKSwgUVN0cmluZ0xpdGVyYWwoIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rl c2t0b3AiKSwKKysgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLkRC dXMuUHJvcGVydGllcyIpLCBRU3RyaW5nTGl0ZXJhbCgiR2V0IikpOworKyAgICBtZXNzYWdlIDw8 IFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLlNjcmVlbnNob3QiKQorKyAg ICAgICAgICAgIDw8IFFTdHJpbmdMaXRlcmFsKCJ2ZXJzaW9uIik7CisrCisrICAgIFFEQnVzUGVu ZGluZ0NhbGwgcGVuZGluZ0NhbGwgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5hc3lu Y0NhbGwobWVzc2FnZSk7CisrICAgIGF1dG8gd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxs V2F0Y2hlcihwZW5kaW5nQ2FsbCk7CisrICAgIFFPYmplY3Q6OmNvbm5lY3Qod2F0Y2hlciwgJlFE QnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hlZCwgd2F0Y2hlciwKKysgICAgICAgICAgICAg ICAgICAgICBbdGhpc10oUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKysgICAg ICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAgICAg ICAgICAgICAgICAgICAgUURCdXNQZW5kaW5nUmVwbHk8UVZhcmlhbnQ+IHJlcGx5ID0gKndhdGNo ZXI7CisrICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVwbHkuaXNFcnJvcigpICYmIHJl cGx5LnZhbHVlKCkudG9VSW50KCkgPj0gMikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1faGFzU2NyZWVuc2hvdFBvcnRhbFdpdGhDb2xvclBpY2tpbmcgPSB0cnVlOworKyAgICAgICAg ICAgICAgICAgICAgIH0pOworKworKyNlbmRpZgorK30KKysKKytRUGxhdGZvcm1TZXJ2aWNlQ29s b3JQaWNrZXIgKlFHZW5lcmljVW5peFNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93ICpwYXJl bnQpCisreworKyNpZiBRVF9DT05GSUcoZGJ1cykKKysgICAgLy8gTWFrZSBkb3VibGUgc3VyZSB0 aGF0IHdlIGFyZSBpbiBhIHdheWxhbmQgZW52aXJvbm1lbnQuIEluIHBhcnRpY3VsYXIgY2hlY2sK KysgICAgLy8gV0FZTEFORF9ESVNQTEFZIHNvIGFsc28gWFdheWxhbmQgYXBwcyBiZW5lZml0IGZy b20gcG9ydGFsLWJhc2VkIGNvbG9yIHBpY2tpbmcuCisrICAgIC8vIE91dHNpZGUgd2F5bGFuZCB3 ZSdsbCByYXRoZXIgcmVseSBvbiBvdGhlciBtZWFucyB0aGFuIHRoZSBYREcgZGVza3RvcCBwb3J0 YWwuCisrICAgIGlmICghcUVudmlyb25tZW50VmFyaWFibGVJc0VtcHR5KCJXQVlMQU5EX0RJU1BM QVkiKQorKyAgICAgICAgfHwgUUd1aUFwcGxpY2F0aW9uOjpwbGF0Zm9ybU5hbWUoKS5zdGFydHNX aXRoKFFMYXRpbjFTdHJpbmcoIndheWxhbmQiKSkpIHsKKysgICAgICAgIHJldHVybiBuZXcgWGRn RGVza3RvcFBvcnRhbENvbG9yUGlja2VyKHBvcnRhbFdpbmRvd0lkZW50aWZpZXIocGFyZW50KSwg cGFyZW50KTsKKysgICAgfQorKyAgICByZXR1cm4gbnVsbHB0cjsKKysjZWxzZQorKyAgICBRX1VO VVNFRChwYXJlbnQpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKysjZW5kaWYKKyt9CisrCisgUUJ5 dGVBcnJheSBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3QK KyB7CisgICAgIHN0YXRpYyBjb25zdCBRQnl0ZUFycmF5IHJlc3VsdCA9IGRldGVjdERlc2t0b3BF bnZpcm9ubWVudCgpOworQEAgLTM1Miw2ICs0ODYsOCBAQCBib29sIFFHZW5lcmljVW5peFNlcnZp Y2VzOjpvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJsKQorIH0KKyAKKyAjZWxzZQorK1FHZW5l cmljVW5peFNlcnZpY2VzOjpRR2VuZXJpY1VuaXhTZXJ2aWNlcygpID0gZGVmYXVsdDsKKysKKyBR Qnl0ZUFycmF5IFFHZW5lcmljVW5peFNlcnZpY2VzOjpkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25z dAorIHsKKyAgICAgcmV0dXJuIFFCeXRlQXJyYXlMaXRlcmFsKCJVTktOT1dOIik7CitAQCAtMzcx LDYgKzUwNywzMCBAQCBib29sIFFHZW5lcmljVW5peFNlcnZpY2VzOjpvcGVuRG9jdW1lbnQoY29u c3QgUVVybCAmdXJsKQorICAgICByZXR1cm4gZmFsc2U7CisgfQorIAorK1FQbGF0Zm9ybVNlcnZp Y2VDb2xvclBpY2tlciAqUUdlbmVyaWNVbml4U2VydmljZXM6OmNvbG9yUGlja2VyKFFXaW5kb3cg KnBhcmVudCkKKyt7CisrICAgIFFfVU5VU0VEKHBhcmVudCk7CisrICAgIHJldHVybiBudWxscHRy OworK30KKysKKyAjZW5kaWYgLy8gUVRfTk9fTVVMVElQUk9DRVNTCisgCisrUVN0cmluZyBRR2Vu ZXJpY1VuaXhTZXJ2aWNlczo6cG9ydGFsV2luZG93SWRlbnRpZmllcihRV2luZG93ICp3aW5kb3cp CisreworKyAgICBpZiAoUUd1aUFwcGxpY2F0aW9uOjpwbGF0Zm9ybU5hbWUoKSA9PSBRTGF0aW4x U3RyaW5nKCJ4Y2IiKSkKKysgICAgICAgIHJldHVybiBRU3RyaW5nTGl0ZXJhbCgieDExOiIpICsg UVN0cmluZzo6bnVtYmVyKHdpbmRvdy0+d2luSWQoKSwgMTYpOworKyAgICByZXR1cm4gUVN0cmlu ZygpOworK30KKysKKytib29sIFFHZW5lcmljVW5peFNlcnZpY2VzOjpoYXNDYXBhYmlsaXR5KENh cGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3QKKyt7CisrICAgIHN3aXRjaCAoY2FwYWJpbGl0eSkg eworKyAgICBjYXNlIENhcGFiaWxpdHk6OkNvbG9yUGlja2luZzoKKysgICAgICAgIHJldHVybiBt X2hhc1NjcmVlbnNob3RQb3J0YWxXaXRoQ29sb3JQaWNraW5nOworKyAgICB9CisrICAgIHJldHVy biBmYWxzZTsKKyt9CisrCisgUVRfRU5EX05BTUVTUEFDRQorKworKyNpbmNsdWRlICJxZ2VuZXJp Y3VuaXhzZXJ2aWNlcy5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBv cnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oIGIvcXRiYXNl L3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2Vy dmljZXNfcC5oCitpbmRleCA4YWMzZGU2ZjAzLi4zMDkyNGU2NGJkIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4 c2VydmljZXNfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9n ZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlc19wLmgKK0BAIC01OSwxNiArNTksMjEgQEAg UVRfQkVHSU5fTkFNRVNQQUNFCisgY2xhc3MgUUdlbmVyaWNVbml4U2VydmljZXMgOiBwdWJsaWMg UVBsYXRmb3JtU2VydmljZXMKKyB7CisgcHVibGljOgorLSAgICBRR2VuZXJpY1VuaXhTZXJ2aWNl cygpIHt9CisrICAgIFFHZW5lcmljVW5peFNlcnZpY2VzKCk7CisgCisgICAgIFFCeXRlQXJyYXkg ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgCisrICAgIGJvb2wgaGFzQ2Fw YWJpbGl0eShDYXBhYmlsaXR5IGNhcGFiaWxpdHkpIGNvbnN0IG92ZXJyaWRlOworICAgICBib29s IG9wZW5VcmwoY29uc3QgUVVybCAmdXJsKSBvdmVycmlkZTsKKyAgICAgYm9vbCBvcGVuRG9jdW1l bnQoY29uc3QgUVVybCAmdXJsKSBvdmVycmlkZTsKKysgICAgUVBsYXRmb3JtU2VydmljZUNvbG9y UGlja2VyICpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQgPSBudWxscHRyKSBvdmVycmlkZTsK KysKKysgICAgdmlydHVhbCBRU3RyaW5nIHBvcnRhbFdpbmRvd0lkZW50aWZpZXIoUVdpbmRvdyAq d2luZG93KTsKKyAKKyBwcml2YXRlOgorICAgICBRU3RyaW5nIG1fd2ViQnJvd3NlcjsKKyAgICAg UVN0cmluZyBtX2RvY3VtZW50TGF1bmNoZXI7CisrICAgIGJvb2wgbV9oYXNTY3JlZW5zaG90UG9y dGFsV2l0aENvbG9yUGlja2luZyA9IGZhbHNlOworIH07CisgCisgUVRfRU5EX05BTUVTUEFDRQor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5p eC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNw cAoraW5kZXggMDk0NzBiY2NjNi4uY2M3YzdkNGQ4YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25u ZWN0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVy aWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb24uY3BwCitAQCAtNjksNiArNjksNyBA QCBjb25zdCBRU3RyaW5nIE1lbnVCYXJQYXRoID0gUUxhdGluMVN0cmluZygiL01lbnVCYXIiKTsK KyAqLworIFFEQnVzTWVudUNvbm5lY3Rpb246OlFEQnVzTWVudUNvbm5lY3Rpb24oUU9iamVjdCAq cGFyZW50LCBjb25zdCBRU3RyaW5nICZzZXJ2aWNlTmFtZSkKKyAgICAgOiBRT2JqZWN0KHBhcmVu dCkKKysgICAgLCBtX3NlcnZpY2VOYW1lKHNlcnZpY2VOYW1lKQorICAgICAsIG1fY29ubmVjdGlv bihzZXJ2aWNlTmFtZS5pc051bGwoKSA/IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUURCdXNDb25uZWN0aW9u Ojpjb25uZWN0VG9CdXMoUURCdXNDb25uZWN0aW9uOjpTZXNzaW9uQnVzLCBzZXJ2aWNlTmFtZSkp CisgICAgICwgbV9kYnVzV2F0Y2hlcihuZXcgUURCdXNTZXJ2aWNlV2F0Y2hlcihTdGF0dXNOb3Rp ZmllcldhdGNoZXJTZXJ2aWNlLCBtX2Nvbm5lY3Rpb24sIFFEQnVzU2VydmljZVdhdGNoZXI6Oldh dGNoRm9yUmVnaXN0cmF0aW9uLCB0aGlzKSkKK0BAIC04Myw2ICs4NCwxMiBAQCBRREJ1c01lbnVD b25uZWN0aW9uOjpRREJ1c01lbnVDb25uZWN0aW9uKFFPYmplY3QgKnBhcmVudCwgY29uc3QgUVN0 cmluZyAmc2VydmljZQorICNlbmRpZgorIH0KKyAKKytRREJ1c01lbnVDb25uZWN0aW9uOjp+UURC dXNNZW51Q29ubmVjdGlvbigpCisreworKyAgaWYgKCFtX3NlcnZpY2VOYW1lLmlzRW1wdHkoKSAm JiBtX2Nvbm5lY3Rpb24uaXNDb25uZWN0ZWQoKSkKKysgICAgICBRREJ1c0Nvbm5lY3Rpb246OmRp c2Nvbm5lY3RGcm9tQnVzKG1fc2VydmljZU5hbWUpOworK30KKysKKyB2b2lkIFFEQnVzTWVudUNv bm5lY3Rpb246OmRidXNFcnJvcihjb25zdCBRREJ1c0Vycm9yICZlcnJvcikKKyB7CisgICAgIHFX YXJuaW5nKCkgPDwgIlFEQnVzVHJheUljb24gZW5jb3VudGVyZWQgYSBELUJ1cyBlcnJvcjoiIDw8 IGVycm9yOworQEAgLTEwNSwxMyArMTEyLDcgQEAgdm9pZCBRREJ1c01lbnVDb25uZWN0aW9uOjp1 bnJlZ2lzdGVyVHJheUljb25NZW51KFFEQnVzVHJheUljb24gKml0ZW0pCisgCisgYm9vbCBRREJ1 c01lbnVDb25uZWN0aW9uOjpyZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisg eworLSAgICBib29sIHN1Y2Nlc3MgPSBjb25uZWN0aW9uKCkucmVnaXN0ZXJTZXJ2aWNlKGl0ZW0t Pmluc3RhbmNlSWQoKSk7CistICAgIGlmICghc3VjY2VzcykgeworLSAgICAgICAgcVdhcm5pbmco KSA8PCAiZmFpbGVkIHRvIHJlZ2lzdGVyIHNlcnZpY2UiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKTsK Ky0gICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgfQorLQorLSAgICBzdWNjZXNzID0gY29ubmVj dGlvbigpLnJlZ2lzdGVyT2JqZWN0KFN0YXR1c05vdGlmaWVySXRlbVBhdGgsIGl0ZW0pOworKyAg ICBib29sIHN1Y2Nlc3MgPSBjb25uZWN0aW9uKCkucmVnaXN0ZXJPYmplY3QoU3RhdHVzTm90aWZp ZXJJdGVtUGF0aCwgaXRlbSk7CisgICAgIGlmICghc3VjY2VzcykgeworICAgICAgICAgdW5yZWdp c3RlclRyYXlJY29uKGl0ZW0pOworICAgICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHJl Z2lzdGVyIiA8PCBpdGVtLT5pbnN0YW5jZUlkKCkgPDwgU3RhdHVzTm90aWZpZXJJdGVtUGF0aDsK K0BAIC0xMjYsMjEgKzEyNywxOCBAQCBib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnJlZ2lzdGVy VHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSkKKyAKKyBib29sIFFEQnVzTWVudUNvbm5lY3Rp b246OnJlZ2lzdGVyVHJheUljb25XaXRoV2F0Y2hlcihRREJ1c1RyYXlJY29uICppdGVtKQorIHsK KysgICAgUV9VTlVTRUQoaXRlbSk7CisgICAgIFFEQnVzTWVzc2FnZSByZWdpc3Rlck1ldGhvZCA9 IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9kQ2FsbCgKKyAgICAgICAgICAgICAgICAgU3RhdHVz Tm90aWZpZXJXYXRjaGVyU2VydmljZSwgU3RhdHVzTm90aWZpZXJXYXRjaGVyUGF0aCwgU3RhdHVz Tm90aWZpZXJXYXRjaGVyU2VydmljZSwKKyAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygi UmVnaXN0ZXJTdGF0dXNOb3RpZmllckl0ZW0iKSk7CistICAgIHJlZ2lzdGVyTWV0aG9kLnNldEFy Z3VtZW50cyhRVmFyaWFudExpc3QoKSA8PCBpdGVtLT5pbnN0YW5jZUlkKCkpOworKyAgICByZWdp c3Rlck1ldGhvZC5zZXRBcmd1bWVudHMoUVZhcmlhbnRMaXN0KCkgPDwgbV9jb25uZWN0aW9uLmJh c2VTZXJ2aWNlKCkpOworICAgICByZXR1cm4gbV9jb25uZWN0aW9uLmNhbGxXaXRoQ2FsbGJhY2so cmVnaXN0ZXJNZXRob2QsIHRoaXMsIFNJR05BTCh0cmF5SWNvblJlZ2lzdGVyZWQoKSksIFNMT1Qo ZGJ1c0Vycm9yKFFEQnVzRXJyb3IpKSk7CisgfQorIAorLWJvb2wgUURCdXNNZW51Q29ubmVjdGlv bjo6dW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisrdm9pZCBRREJ1c01l bnVDb25uZWN0aW9uOjp1bnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSkKKyB7 CisgICAgIHVucmVnaXN0ZXJUcmF5SWNvbk1lbnUoaXRlbSk7CisgICAgIGNvbm5lY3Rpb24oKS51 bnJlZ2lzdGVyT2JqZWN0KFN0YXR1c05vdGlmaWVySXRlbVBhdGgpOworLSAgICBib29sIHN1Y2Nl c3MgPSBjb25uZWN0aW9uKCkudW5yZWdpc3RlclNlcnZpY2UoaXRlbS0+aW5zdGFuY2VJZCgpKTsK Ky0gICAgaWYgKCFzdWNjZXNzKQorLSAgICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHVu cmVnaXN0ZXIgc2VydmljZSIgPDwgaXRlbS0+aW5zdGFuY2VJZCgpOworLSAgICByZXR1cm4gc3Vj Y2VzczsKKyB9CisgI2VuZGlmIC8vIFFUX05PX1NZU1RFTVRSQVlJQ09OCisgCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51 L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhl bWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oCitpbmRleCBm NDg0Nzk1ZmJiLi45N2JkZmFiYjg1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1 cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5o CisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1 c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbl9wLmgKK0BAIC03MCw2ICs3MCw3IEBAIGNsYXNzIFFE QnVzTWVudUNvbm5lY3Rpb24gOiBwdWJsaWMgUU9iamVjdAorIAorIHB1YmxpYzoKKyAgICAgUURC dXNNZW51Q29ubmVjdGlvbihRT2JqZWN0ICpwYXJlbnQgPSBudWxscHRyLCBjb25zdCBRU3RyaW5n ICZzZXJ2aWNlTmFtZSA9IFFTdHJpbmcoKSk7CisrICAgIH5RREJ1c01lbnVDb25uZWN0aW9uKCk7 CisgICAgIFFEQnVzQ29ubmVjdGlvbiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25u ZWN0aW9uOyB9CisgICAgIFFEQnVzU2VydmljZVdhdGNoZXIgKmRidXNXYXRjaGVyKCkgY29uc3Qg eyByZXR1cm4gbV9kYnVzV2F0Y2hlcjsgfQorICAgICBib29sIGlzU3RhdHVzTm90aWZpZXJIb3N0 UmVnaXN0ZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJl ZDsgfQorQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgorICAgICB2b2lkIHVucmVnaXN0ZXJUcmF5 SWNvbk1lbnUoUURCdXNUcmF5SWNvbiAqaXRlbSk7CisgICAgIGJvb2wgcmVnaXN0ZXJUcmF5SWNv bihRREJ1c1RyYXlJY29uICppdGVtKTsKKyAgICAgYm9vbCByZWdpc3RlclRyYXlJY29uV2l0aFdh dGNoZXIoUURCdXNUcmF5SWNvbiAqaXRlbSk7CistICAgIGJvb2wgdW5yZWdpc3RlclRyYXlJY29u KFFEQnVzVHJheUljb24gKml0ZW0pOworKyAgICB2b2lkIHVucmVnaXN0ZXJUcmF5SWNvbihRREJ1 c1RyYXlJY29uICppdGVtKTsKKyAjZW5kaWYgLy8gUVRfTk9fU1lTVEVNVFJBWUlDT04KKyAKKyBR X1NJR05BTFM6CitAQCAtOTAsNiArOTEsNyBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQg ZGJ1c0Vycm9yKGNvbnN0IFFEQnVzRXJyb3IgJmVycm9yKTsKKyAKKyBwcml2YXRlOgorKyAgICBR U3RyaW5nIG1fc2VydmljZU5hbWU7CisgICAgIFFEQnVzQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247 CisgICAgIFFEQnVzU2VydmljZVdhdGNoZXIgKm1fZGJ1c1dhdGNoZXI7CisgICAgIGJvb2wgbV9z dGF0dXNOb3RpZmllckhvc3RSZWdpc3RlcmVkOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNw cCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJh eS9xZGJ1c3RyYXlpY29uLmNwcAoraW5kZXggYmVkZTcwOTc1YS4uNzZiZmVjNWU1YSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVz dHJheS9xZGJ1c3RyYXlpY29uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv dGhlbWVzL2dlbmVyaWN1bml4L2RidXN0cmF5L3FkYnVzdHJheWljb24uY3BwCitAQCAtNzEsOCAr NzEsMTIgQEAgUV9MT0dHSU5HX0NBVEVHT1JZKHFMY1RyYXksICJxdC5xcGEudHJheSIpCisgc3Rh dGljIFFTdHJpbmcgaWNvblRlbXBQYXRoKCkKKyB7CisgICAgIFFTdHJpbmcgdGVtcFBhdGggPSBR U3RhbmRhcmRQYXRoczo6d3JpdGFibGVMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6UnVudGltZUxv Y2F0aW9uKTsKKy0gICAgaWYgKCF0ZW1wUGF0aC5pc0VtcHR5KCkpCisrICAgIGlmICghdGVtcFBh dGguaXNFbXB0eSgpKSB7CisrICAgICAgICBRU3RyaW5nIGZsYXRwYWtJZCA9IHFFbnZpcm9ubWVu dFZhcmlhYmxlKCJGTEFUUEFLX0lEIik7CisrICAgICAgICBpZiAoIWZsYXRwYWtJZC5pc0VtcHR5 KCkgJiYgUUZpbGVJbmZvOjpleGlzdHMoUUxhdGluMVN0cmluZygiLy5mbGF0cGFrLWluZm8iKSkp CisrICAgICAgICAgICAgdGVtcFBhdGggKz0gUUxhdGluMVN0cmluZygiL2FwcC8iKSArIGZsYXRw YWtJZDsKKyAgICAgICAgIHJldHVybiB0ZW1wUGF0aDsKKysgICAgfQorIAorICAgICB0ZW1wUGF0 aCA9IFFTdGFuZGFyZFBhdGhzOjp3cml0YWJsZUxvY2F0aW9uKFFTdGFuZGFyZFBhdGhzOjpHZW5l cmljQ2FjaGVMb2NhdGlvbik7CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1 cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHRoZW1lcy5jcHAgYi9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVz LmNwcAoraW5kZXggY2IxYjM5ZGI2NC4uNmUwMWFmMDUyYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgv cWdlbmVyaWN1bml4dGhlbWVzLmNwcAorQEAgLTc1NSw2ICs3NTUsOSBAQCBRVmFyaWFudCBRR25v bWVUaGVtZTo6dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpUaGVtZUhpbnQgaGludCkgY29uc3QK KyAgICAgICAgIHJldHVybiBRVmFyaWFudChRQ2hhcigweDIwMjIpKTsKKyAgICAgY2FzZSBRUGxh dGZvcm1UaGVtZTo6VWlFZmZlY3RzOgorICAgICAgICAgcmV0dXJuIFFWYXJpYW50KGludChIb3Zl ckVmZmVjdCkpOworKyAgICBjYXNlIFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXM6Cisr ICAgICAgICByZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1ZSgKKysgICAgICAgICAgICAgICAgUUxp c3Q8UXQ6OktleT4oeyBRdDo6S2V5X1NwYWNlLCBRdDo6S2V5X1JldHVybiwgUXQ6OktleV9FbnRl ciwgUXQ6OktleV9TZWxlY3QgfSkpOworICAgICBkZWZhdWx0OgorICAgICAgICAgYnJlYWs7Cisg ICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2Fw aS9xZWdsZnNjdXJzb3IuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9h cGkvcWVnbGZzY3Vyc29yLmNwcAoraW5kZXggOThlMDUxOTVlZS4uMWU5MmY0M2RlYyAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNv ci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xm c2N1cnNvci5jcHAKK0BAIC0zNDMsOCArMzQzLDcgQEAgdm9pZCBRRWdsRlNDdXJzb3I6OnBhaW50 T25TY3JlZW4oKQorICAgICAvLyBzY3JlZW5zIGFyZSBzaWJsaW5ncyBvZiBlYWNoIG90aGVyLiBX aGVuIG5vdCBlbmFibGVkLCB0aGUgc2libGluZyBsaXN0CisgICAgIC8vIG9ubHkgY29udGFpbnMg bV9zY3JlZW4gaXRzZWxmLgorICAgICBmb3IgKFFQbGF0Zm9ybVNjcmVlbiAqc2NyZWVuIDogbV9z Y3JlZW4tPnZpcnR1YWxTaWJsaW5ncygpKSB7CistICAgICAgICBpZiAoc2NyZWVuLT5nZW9tZXRy eSgpLmNvbnRhaW5zKGNyLnRvcExlZnQoKS50b1BvaW50KCkgKyBtX2N1cnNvci5ob3RTcG90KQor LSAgICAgICAgICAgICYmIFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5zY3JlZW4o KSA9PSBzY3JlZW4tPnNjcmVlbigpKQorKyAgICAgICAgaWYgKHNjcmVlbi0+Z2VvbWV0cnkoKS5j b250YWlucyhjci50b3BMZWZ0KCkudG9Qb2ludCgpICsgbV9jdXJzb3IuaG90U3BvdCkpCisgICAg ICAgICB7CisgICAgICAgICAgICAgY3IudHJhbnNsYXRlKC1zY3JlZW4tPmdlb21ldHJ5KCkudG9w TGVmdCgpKTsKKyAgICAgICAgICAgICBjb25zdCBRU2l6ZSBzY3JlZW5TaXplID0gc2NyZWVuLT5n ZW9tZXRyeSgpLnNpemUoKTsKK0BAIC00NjgsMTEgKzQ2NywxMiBAQCB2b2lkIFFFZ2xGU0N1cnNv cjo6ZHJhdyhjb25zdCBRUmVjdEYgJnIpCisgeworICAgICBTdGF0ZVNhdmVyIHN0YXRlU2F2ZXI7 CisgCistICAgIFFFZ2xGU0N1cnNvckRhdGEgJmdmeCA9IHN0YXRpY19jYXN0PFFFZ2xGU0NvbnRl eHQqPihRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRleHQoKS0+aGFuZGxlKCkpLT5jdXJzb3JE YXRhOworLSAgICBpZiAoIWdmeC5wcm9ncmFtKSB7CistICAgICAgICAvLyBvbmUgdGltZSBpbml0 aWFsaXphdGlvbgorKyAgICAvLyBvbmUgdGltZSBpbml0aWFsaXphdGlvbgorKyAgICBpZiAoIVFP cGVuR0xGdW5jdGlvbnM6OmRfcHRyKQorICAgICAgICAgaW5pdGlhbGl6ZU9wZW5HTEZ1bmN0aW9u cygpOworIAorKyAgICBRRWdsRlNDdXJzb3JEYXRhICZnZnggPSBzdGF0aWNfY2FzdDxRRWdsRlND b250ZXh0Kj4oUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCktPmhhbmRsZSgpKS0+Y3Vy c29yRGF0YTsKKysgICAgaWYgKCFnZngucHJvZ3JhbSkgeworICAgICAgICAgY3JlYXRlU2hhZGVy UHJvZ3JhbXMoKTsKKyAKKyAgICAgICAgIGlmICghZ2Z4LmF0bGFzVGV4dHVyZSkgeworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRp b24vZWdsZnNfa21zX3N1cHBvcnQvcWVnbGZza21zZXZlbnRyZWFkZXIuY3BwIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3Vw cG9ydC9xZWdsZnNrbXNldmVudHJlYWRlci5jcHAKK2luZGV4IDY0NWEwYWUyZTkuLjNlMGU0MDZm MWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2Rldmlj ZWludGVncmF0aW9uL2VnbGZzX2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcAor KysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlv bi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVudHJlYWRlci5jcHAKK0BAIC0xNzksNyAr MTc5LDcgQEAgdm9pZCBRRWdsRlNLbXNFdmVudFJlYWRlcjo6Y3JlYXRlKFFFZ2xGU0ttc0Rldmlj ZSAqZGV2aWNlKQorIAorICAgICBtX2RldmljZSA9IGRldmljZTsKKyAKKy0gICAgcUNEZWJ1Zyhx TGNFZ2xmc0ttc0RlYnVnLCAiSW5pdGFsaXppbmcgZXZlbnQgcmVhZGVyIGZvciBkZXZpY2UgJXAg ZmQgJWQiLAorKyAgICBxQ0RlYnVnKHFMY0VnbGZzS21zRGVidWcsICJJbml0aWFsaXppbmcgZXZl bnQgcmVhZGVyIGZvciBkZXZpY2UgJXAgZmQgJWQiLAorICAgICAgICAgICAgIG1fZGV2aWNlLCBt X2RldmljZS0+ZmQoKSk7CisgCisgICAgIG1fdGhyZWFkID0gbmV3IFFFZ2xGU0ttc0V2ZW50UmVh ZGVyVGhyZWFkKG1fZGV2aWNlLT5mZCgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uY3BwIGIvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNw cAoraW5kZXggMTQxZmI2OGEyMy4uZDQyOTRkNDI1YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAKKysr KyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRl Z3JhdGlvbi5jcHAKK0BAIC0xMjIsMTEgKzEyMiwxMyBAQCBRT2Zmc2NyZWVuSW50ZWdyYXRpb246 OlFPZmZzY3JlZW5JbnRlZ3JhdGlvbigpCisgI2VuZGlmCisgICAgIG1fc2VydmljZXMucmVzZXQo bmV3IFFQbGF0Zm9ybVNlcnZpY2VzKTsKKyAKKy0gICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6 aGFuZGxlU2NyZWVuQWRkZWQobmV3IFFPZmZzY3JlZW5TY3JlZW4pOworKyAgICBtX3NjcmVlbiA9 IG5ldyBRT2Zmc2NyZWVuU2NyZWVuOworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5k bGVTY3JlZW5BZGRlZChtX3NjcmVlbik7CisgfQorIAorIFFPZmZzY3JlZW5JbnRlZ3JhdGlvbjo6 flFPZmZzY3JlZW5JbnRlZ3JhdGlvbigpCisgeworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNl OjpoYW5kbGVTY3JlZW5SZW1vdmVkKG1fc2NyZWVuKTsKKyB9CisgCisgdm9pZCBRT2Zmc2NyZWVu SW50ZWdyYXRpb246OmluaXRpYWxpemUoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5oIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgKK2lu ZGV4IDBlYTkwZjZjMmYuLmZlMDBmZGUwN2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uaAorKysrIGIvcXRi YXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9u LmgKK0BAIC04NCw2ICs4NCw3IEBAIHByb3RlY3RlZDoKKyAjZW5kaWYKKyAgICAgUVNjb3BlZFBv aW50ZXI8UVBsYXRmb3JtSW5wdXRDb250ZXh0PiBtX2lucHV0Q29udGV4dDsKKyAgICAgUVNjb3Bl ZFBvaW50ZXI8UVBsYXRmb3JtU2VydmljZXM+IG1fc2VydmljZXM7CisrICAgIFFQbGF0Zm9ybVNj cmVlbiAqbV9zY3JlZW47CisgICAgIG11dGFibGUgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtTmF0 aXZlSW50ZXJmYWNlPiBtX25hdGl2ZUludGVyZmFjZTsKKyB9OworIAorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAg Yi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQu Y3BwCitpbmRleCA2ZmE1YThhMmIzLi4xZjQ5ZjBhZWZkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcAorKysrIGIv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNw cAorQEAgLTQ4LDYgKzQ4LDcgQEAKKyAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybW5hdGl2ZWludGVy ZmFjZS5oPgorICNpbmNsdWRlIDxRdFBsYXRmb3JtSGVhZGVycy9xd2dsbmF0aXZlY29udGV4dC5o PgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3FzeXN0ZW1saWJyYXJ5X3AuaD4KKyAjaW5jbHVkZSA8 YWxnb3JpdGhtPgorIAorICNpbmNsdWRlIDx3aW5nZGkuaD4KK0BAIC0xNjIsMTkgKzE2MywyNSBA QCBRRnVuY3Rpb25Qb2ludGVyIFFXaW5kb3dzT3BlbmdsMzJETEw6OnJlc29sdmUoY29uc3QgY2hh ciAqbmFtZSkKKyAKKyBib29sIFFXaW5kb3dzT3BlbmdsMzJETEw6OmluaXQoYm9vbCBzb2Z0d2Fy ZVJlbmRlcmluZykKKyB7CistICAgIGNvbnN0IFFCeXRlQXJyYXkgb3BlbmdsMzIgPSBRQnl0ZUFy cmF5TGl0ZXJhbCgib3BlbmdsMzIuZGxsIik7CistICAgIGNvbnN0IFFCeXRlQXJyYXkgc3dvcGVu Z2wgPSBRQnl0ZUFycmF5TGl0ZXJhbCgib3BlbmdsMzJzdy5kbGwiKTsKKysgICAgY29uc3QgUUJ5 dGVBcnJheSBvcGVuZ2wzMiA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMiIpOworKyAgICBj b25zdCBRQnl0ZUFycmF5IHN3b3BlbmdsID0gUUJ5dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMyc3ci KTsKKysgICAgYm9vbCB1c2VTeXN0ZW1MaWIgPSBmYWxzZTsKKyAKKyAgICAgUUJ5dGVBcnJheSBv cGVuZ2xEbGwgPSBxZ2V0ZW52KCJRVF9PUEVOR0xfRExMIik7CistICAgIGlmIChvcGVuZ2xEbGwu aXNFbXB0eSgpKQorKyAgICBpZiAob3BlbmdsRGxsLmlzRW1wdHkoKSkgeworICAgICAgICAgb3Bl bmdsRGxsID0gc29mdHdhcmVSZW5kZXJpbmcgPyBzd29wZW5nbCA6IG9wZW5nbDMyOworKyAgICAg ICAgdXNlU3lzdGVtTGliID0gIXNvZnR3YXJlUmVuZGVyaW5nOworKyAgICB9CisgCisgICAgIG9w ZW5nbERsbCA9IG9wZW5nbERsbC50b0xvd2VyKCk7CisgICAgIG1fbm9uT3BlbmdsMzIgPSBvcGVu Z2xEbGwgIT0gb3BlbmdsMzI7CisgCisgICAgIHFDRGVidWcobGNRcGFHbCkgPDwgIlF0OiBVc2lu ZyBXR0wgYW5kIE9wZW5HTCBmcm9tIiA8PCBvcGVuZ2xEbGw7CisgCistICAgIG1fbGliID0gOjpM b2FkTGlicmFyeUEob3BlbmdsRGxsLmNvbnN0RGF0YSgpKTsKKysgICAgaWYgKHVzZVN5c3RlbUxp YikKKysgICAgICAgIG1fbGliID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoKHdjaGFyX3QqKShRU3Ry aW5nOjpmcm9tTGF0aW4xKG9wZW5nbERsbCkudXRmMTYoKSkpOworKyAgICBlbHNlCisrICAgICAg ICBtX2xpYiA9IExvYWRMaWJyYXJ5QShvcGVuZ2xEbGwuY29uc3REYXRhKCkpOworICAgICBpZiAo IW1fbGliKSB7CisgICAgICAgICBxRXJybm9XYXJuaW5nKDo6R2V0TGFzdEVycm9yKCksICJGYWls ZWQgdG8gbG9hZCAlcyIsIG9wZW5nbERsbC5jb25zdERhdGEoKSk7CisgICAgICAgICByZXR1cm4g ZmFsc2U7CitAQCAtMTg0LDcgKzE5MSw3IEBAIGJvb2wgUVdpbmRvd3NPcGVuZ2wzMkRMTDo6aW5p dChib29sIHNvZnR3YXJlUmVuZGVyaW5nKQorICAgICAgICAgLy8gTG9hZCBvcGVuZ2wzMi5kbGwg YWx3YXlzLiBHREkgZnVuY3Rpb25zIGxpa2UgQ2hvb3NlUGl4ZWxGb3JtYXQgZG8KKyAgICAgICAg IC8vIEdldE1vZHVsZUhhbmRsZSBmb3Igb3BlbmdsMzIuZGxsIGFuZCBiZWhhdmUgZGlmZmVyZW50 bHkgKGFuZCBjYWxsIGJhY2sgaW50bworICAgICAgICAgLy8gb3BlbmdsMzIpIHdoZW4gdGhlIG1v ZHVsZSBpcyBwcmVzZW50LiBUaGlzIGlzIGZpbmUgZm9yIGR1bW15IGNvbnRleHRzIGFuZCB3aW5k b3dzLgorLSAgICAgICAgOjpMb2FkTGlicmFyeUEoIm9wZW5nbDMyLmRsbCIpOworKyAgICAgICAg UVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJvcGVuZ2wzMiIpOworICAgICB9CisgCisgICAgIHdnbENy ZWF0ZUNvbnRleHQgPSByZWludGVycHJldF9jYXN0PEhHTFJDIChXSU5BUEkgKikoSERDKT4ocmVz b2x2ZSgid2dsQ3JlYXRlQ29udGV4dCIpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVyLmNwcAoraW5k ZXggZDdkMTg2ZTgwNC4uOWViNDAxMWJmMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAK K0BAIC00OSw2ICs0OSw3IEBACisgI2luY2x1ZGUgPFF0Q29yZS9xc3RhbmRhcmRwYXRocy5oPgor ICNpbmNsdWRlIDxRdENvcmUvcWxpYnJhcnlpbmZvLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xaGFz aC5oPgorKyNpbmNsdWRlIDxwcml2YXRlL3FzeXN0ZW1saWJyYXJ5X3AuaD4KKyAKKyAjaWZuZGVm IFFUX05PX09QRU5HTAorICNpbmNsdWRlIDxwcml2YXRlL3FvcGVuZ2xfcC5oPgorQEAgLTM5Niw3 ICszOTcsNyBAQCBib29sIFFXaW5kb3dzT3BlbkdMVGVzdGVyOjp0ZXN0RGVza3RvcEdMKCkKKyAK KyAgICAgLy8gVGVzdCAjMTogTG9hZCBvcGVuZ2wzMi5kbGwgYW5kIHRyeSB0byByZXNvbHZlIGFu IE9wZW5HTCAyIGZ1bmN0aW9uLgorICAgICAvLyBUaGlzIHdpbGwgdHlwaWNhbGx5IGZhaWwgb24g c3lzdGVtcyB0aGF0IGRvIG5vdCBoYXZlIGEgcmVhbCBPcGVuR0wgZHJpdmVyLgorLSAgICBsaWIg PSBMb2FkTGlicmFyeUEoIm9wZW5nbDMyLmRsbCIpOworKyAgICBsaWIgPSBRU3lzdGVtTGlicmFy eTo6bG9hZChMIm9wZW5nbDMyIik7CisgICAgIGlmIChsaWIpIHsKKyAgICAgICAgIENyZWF0ZUNv bnRleHQgPSByZWludGVycHJldF9jYXN0PENyZWF0ZUNvbnRleHRUeXBlPigKKyAgICAgICAgICAg ICByZWludGVycHJldF9jYXN0PFFGdW5jdGlvblBvaW50ZXI+KDo6R2V0UHJvY0FkZHJlc3MobGli LCAid2dsQ3JlYXRlQ29udGV4dCIpKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNwcCBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL25hdGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAK K2luZGV4IDFhZmEwMGNmYzkuLjExOGFmNmNlNzMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2Vs bGF0b3IuY3BwCitAQCAtNDEsNiArNDEsNyBAQAorIAorICNpbmNsdWRlIDxRUmVjdD4KKyAjaW5j bHVkZSA8UUxpc3Q+CisrI2luY2x1ZGUgPFFNYXA+CisgI2luY2x1ZGUgPFFEZWJ1Zz4KKyAKKyAj aW5jbHVkZSA8cW1hdGguaD4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL3hjYi9xeGNiY29ubmVjdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L3hjYi9xeGNiY29ubmVjdGlvbi5jcHAKK2luZGV4IDllMmEzN2E2YTEuLmU2ZTE3NWExMTggMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlv bi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0 aW9uLmNwcAorQEAgLTQ4OCwxMiArNDg4LDEyIEBAIHZvaWQgUVhjYkNvbm5lY3Rpb246OnByaW50 WGNiRXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSwgeGNiX2dlbmVyaWNfZXJyb3JfdCAqZXJyCisg ICAgIHVpbnQgY2xhbXBlZF9lcnJvcl9jb2RlID0gcU1pbjx1aW50PihlcnJvci0+ZXJyb3JfY29k ZSwgKHNpemVvZih4Y2JfZXJyb3JzKSAvIHNpemVvZih4Y2JfZXJyb3JzWzBdKSkgLSAxKTsKKyAg ICAgdWludCBjbGFtcGVkX21ham9yX2NvZGUgPSBxTWluPHVpbnQ+KGVycm9yLT5tYWpvcl9jb2Rl LCAoc2l6ZW9mKHhjYl9wcm90b2NvbF9yZXF1ZXN0X2NvZGVzKSAvIHNpemVvZih4Y2JfcHJvdG9j b2xfcmVxdWVzdF9jb2Rlc1swXSkpIC0gMSk7CisgCistICAgIHFDV2FybmluZyhsY1FwYVhjYiwg IiVzOiAlZCAoJXMpLCBzZXF1ZW5jZTogJWQsIHJlc291cmNlIGlkOiAlZCwgbWFqb3IgY29kZTog JWQgKCVzKSwgbWlub3IgY29kZTogJWQiLAorLSAgICAgICAgICAgICBtZXNzYWdlLAorLSAgICAg ICAgICAgICBpbnQoZXJyb3ItPmVycm9yX2NvZGUpLCB4Y2JfZXJyb3JzW2NsYW1wZWRfZXJyb3Jf Y29kZV0sCistICAgICAgICAgICAgIGludChlcnJvci0+c2VxdWVuY2UpLCBpbnQoZXJyb3ItPnJl c291cmNlX2lkKSwKKy0gICAgICAgICAgICAgaW50KGVycm9yLT5tYWpvcl9jb2RlKSwgeGNiX3By b3RvY29sX3JlcXVlc3RfY29kZXNbY2xhbXBlZF9tYWpvcl9jb2RlXSwKKy0gICAgICAgICAgICAg aW50KGVycm9yLT5taW5vcl9jb2RlKSk7CisrICAgIHFDRGVidWcobGNRcGFYY2IsICIlczogJWQg KCVzKSwgc2VxdWVuY2U6ICVkLCByZXNvdXJjZSBpZDogJWQsIG1ham9yIGNvZGU6ICVkICglcyks IG1pbm9yIGNvZGU6ICVkIiwKKysgICAgICAgICAgICBtZXNzYWdlLAorKyAgICAgICAgICAgIGlu dChlcnJvci0+ZXJyb3JfY29kZSksIHhjYl9lcnJvcnNbY2xhbXBlZF9lcnJvcl9jb2RlXSwKKysg ICAgICAgICAgICBpbnQoZXJyb3ItPnNlcXVlbmNlKSwgaW50KGVycm9yLT5yZXNvdXJjZV9pZCks CisrICAgICAgICAgICAgaW50KGVycm9yLT5tYWpvcl9jb2RlKSwgeGNiX3Byb3RvY29sX3JlcXVl c3RfY29kZXNbY2xhbXBlZF9tYWpvcl9jb2RlXSwKKysgICAgICAgICAgICBpbnQoZXJyb3ItPm1p bm9yX2NvZGUpKTsKKyB9CisgCisgc3RhdGljIFF0OjpNb3VzZUJ1dHRvbnMgdHJhbnNsYXRlTW91 c2VCdXR0b25zKGludCBzKQorQEAgLTcwMiw2ICs3MDIsOCBAQCB2b2lkIFFYY2JDb25uZWN0aW9u OjpoYW5kbGVYY2JFdmVudCh4Y2JfZ2VuZXJpY19ldmVudF90ICpldmVudCkKKyAgICAgICAgICAg ICBRWGNiVmlydHVhbERlc2t0b3AgKnZpcnR1YWxEZXNrdG9wID0gdmlydHVhbERlc2t0b3BGb3JS b290V2luZG93KHByb3BlcnR5Tm90aWZ5LT53aW5kb3cpOworICAgICAgICAgICAgIGlmICh2aXJ0 dWFsRGVza3RvcCkKKyAgICAgICAgICAgICAgICAgdmlydHVhbERlc2t0b3AtPnVwZGF0ZVdvcmtB cmVhKCk7CisrICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5Tm90aWZ5LT5hdG9tID09IGF0b20o UVhjYkF0b206Ol9ORVRfU1VQUE9SVEVEKSkgeworKyAgICAgICAgICAgIG1fd21TdXBwb3J0LT51 cGRhdGVOZXRXTUF0b21zKCk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIEhBTkRM RV9QTEFURk9STV9XSU5ET1dfRVZFTlQoeGNiX3Byb3BlcnR5X25vdGlmeV9ldmVudF90LCB3aW5k b3csIGhhbmRsZVByb3BlcnR5Tm90aWZ5RXZlbnQpOworICAgICAgICAgfQorQEAgLTc1MCw3ICs3 NTIsNyBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpoYW5kbGVYY2JFdmVudCh4Y2JfZ2VuZXJpY19l dmVudF90ICpldmVudCkKKyAgICAgICAgICAgICAgICAgY2FzZSBYQ0JfWEtCX05FV19LRVlCT0FS RF9OT1RJRlk6IHsKKyAgICAgICAgICAgICAgICAgICAgIHhjYl94a2JfbmV3X2tleWJvYXJkX25v dGlmeV9ldmVudF90ICpldiA9ICZ4a2JfZXZlbnQtPm5ld19rZXlib2FyZF9ub3RpZnk7CisgICAg ICAgICAgICAgICAgICAgICBpZiAoZXYtPmNoYW5nZWQgJiBYQ0JfWEtCX05LTl9ERVRBSUxfS0VZ Q09ERVMpCistICAgICAgICAgICAgICAgICAgICAgICAgbV9rZXlib2FyZC0+dXBkYXRlS2V5bWFw KGV2KTsKKysgICAgICAgICAgICAgICAgICAgICAgICBtX2tleWJvYXJkLT51cGRhdGVLZXltYXAo KTsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgIGRlZmF1bHQ6CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy94Y2IvcXhjYmludGVncmF0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMveGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAKK2luZGV4IDc2ODY5Y2VkNjAuLjAyZDJlZWJi NTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50 ZWdyYXRpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNi aW50ZWdyYXRpb24uY3BwCitAQCAtMjc0LDggKzI3NCw3IEBAIFFQbGF0Zm9ybVdpbmRvdyAqUVhj YkludGVncmF0aW9uOjpjcmVhdGVGb3JlaWduV2luZG93KFFXaW5kb3cgKndpbmRvdywgV0lkIG5h dGl2CisgI2lmbmRlZiBRVF9OT19PUEVOR0wKKyBRUGxhdGZvcm1PcGVuR0xDb250ZXh0ICpRWGNi SW50ZWdyYXRpb246OmNyZWF0ZVBsYXRmb3JtT3BlbkdMQ29udGV4dChRT3BlbkdMQ29udGV4dCAq Y29udGV4dCkgY29uc3QKKyB7CistICAgIFFYY2JTY3JlZW4gKnNjcmVlbiA9IHN0YXRpY19jYXN0 PFFYY2JTY3JlZW4gKj4oY29udGV4dC0+c2NyZWVuKCktPmhhbmRsZSgpKTsKKy0gICAgUVhjYkds SW50ZWdyYXRpb24gKmdsSW50ZWdyYXRpb24gPSBzY3JlZW4tPmNvbm5lY3Rpb24oKS0+Z2xJbnRl Z3JhdGlvbigpOworKyAgICBRWGNiR2xJbnRlZ3JhdGlvbiAqZ2xJbnRlZ3JhdGlvbiA9IGRlZmF1 bHRDb25uZWN0aW9uKCktPmdsSW50ZWdyYXRpb24oKTsKKyAgICAgaWYgKCFnbEludGVncmF0aW9u KSB7CisgICAgICAgICBxV2FybmluZygiUVhjYkludGVncmF0aW9uOiBDYW5ub3QgY3JlYXRlIHBs YXRmb3JtIE9wZW5HTCBjb250ZXh0LCBuZWl0aGVyIEdMWCBub3IgRUdMIGFyZSBlbmFibGVkIik7 CisgICAgICAgICByZXR1cm4gbnVsbHB0cjsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmNwcAoraW5kZXggZWZlY2Q3ZTJkMS4uZTgyODYzODFh MiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXli b2FyZC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXli b2FyZC5jcHAKK0BAIC0zNjUsMTcgKzM2NSw2IEBAIHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVL ZXltYXAoeGNiX21hcHBpbmdfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICB1cGRhdGVLZXlt YXAoKTsKKyB9CisgCistdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCh4Y2JfeGtiX25l d19rZXlib2FyZF9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpCisteworLSAgICBpZiAoIWV2ZW50KQor LSAgICAgICAgcmV0dXJuOworLQorLSAgICBpZiAoZXZlbnQtPmRldmljZUlEICE9IGV2ZW50LT5v bGREZXZpY2VJRCkKKy0gICAgICAgIG1fY29uZmlnID0gZmFsc2U7CistCistICAgIHVwZGF0ZUtl eW1hcCgpOworLX0KKy0KKyB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyB7Cisg ICAgIEtleXN5bU1vZGlmaWVyTWFwIGtleXN5bU1vZHM7CitAQCAtMzgzLDYgKzM3Miw4IEBAIHZv aWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoKQorICAgICAgICAga2V5c3ltTW9kcyA9IGtl eXN5bXNUb01vZGlmaWVycygpOworICAgICB1cGRhdGVNb2RpZmllcnMoa2V5c3ltTW9kcyk7Cisg CisrICAgIG1fY29uZmlnID0gdHJ1ZTsKKysKKyAgICAgaWYgKCFtX3hrYkNvbnRleHQpIHsKKyAg ICAgICAgIG1feGtiQ29udGV4dC5yZXNldCh4a2JfY29udGV4dF9uZXcoWEtCX0NPTlRFWFRfTk9f REVGQVVMVF9JTkNMVURFUykpOworICAgICAgICAgaWYgKCFtX3hrYkNvbnRleHQpIHsKK0BAIC0z OTgsMTMgKzM4OSw4IEBAIHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoKQorICAgICBp ZiAoY29ubmVjdGlvbigpLT5oYXNYS0IoKSkgeworICAgICAgICAgbV94a2JLZXltYXAucmVzZXQo eGtiX3gxMV9rZXltYXBfbmV3X2Zyb21fZGV2aWNlKG1feGtiQ29udGV4dC5nZXQoKSwgeGNiX2Nv bm5lY3Rpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb3JlX2RldmljZV9pZCwgWEtCX0tFWU1BUF9DT01QSUxFX05PX0ZMQUdT KSk7CistICAgICAgICBpZiAobV94a2JLZXltYXApIHsKKy0gICAgICAgICAgICBpZiAobV9jb25m aWcpCistICAgICAgICAgICAgICAgIG1feGtiU3RhdGUucmVzZXQoeGtiX3N0YXRlX25ldyhtX3hr YktleW1hcC5nZXQoKSkpOworLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgbV94 a2JTdGF0ZS5yZXNldCh4a2JfeDExX3N0YXRlX25ld19mcm9tX2RldmljZShtX3hrYktleW1hcC5n ZXQoKSwgeGNiX2Nvbm5lY3Rpb24oKSwgY29yZV9kZXZpY2VfaWQpKTsKKy0KKy0gICAgICAgIH0K KysgICAgICAgIGlmIChtX3hrYktleW1hcCkKKysgICAgICAgICAgICBtX3hrYlN0YXRlLnJlc2V0 KHhrYl94MTFfc3RhdGVfbmV3X2Zyb21fZGV2aWNlKG1feGtiS2V5bWFwLmdldCgpLCB4Y2JfY29u bmVjdGlvbigpLCBjb3JlX2RldmljZV9pZCkpOworICAgICB9IGVsc2UgeworICAgICAgICAgbV94 a2JLZXltYXAucmVzZXQoa2V5bWFwRnJvbUNvcmUoa2V5c3ltTW9kcykpOworICAgICAgICAgaWYg KG1feGtiS2V5bWFwKQorQEAgLTQyNSw4ICs0MTEsNiBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBk YXRlS2V5bWFwKCkKKyAgICAgdXBkYXRlWEtCTW9kcygpOworIAorICAgICBRWGtiQ29tbW9uOjp2 ZXJpZnlIYXNMYXRpbkxheW91dChtX3hrYktleW1hcC5nZXQoKSk7CistCistICAgIG1fY29uZmln ID0gdHJ1ZTsKKyB9CisgCisgUUxpc3Q8aW50PiBRWGNiS2V5Ym9hcmQ6OnBvc3NpYmxlS2V5cyhj b25zdCBRS2V5RXZlbnQgKmV2ZW50KSBjb25zdAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmgKK2luZGV4IGI2NTJjODVmZTMuLjBlZTA4YWVmZjIg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9h cmQuaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJk LmgKK0BAIC02OSw3ICs2OSw2IEBAIHB1YmxpYzoKKyAKKyAgICAgUXQ6OktleWJvYXJkTW9kaWZp ZXJzIHRyYW5zbGF0ZU1vZGlmaWVycyhpbnQgcykgY29uc3Q7CisgICAgIHZvaWQgdXBkYXRlS2V5 bWFwKHhjYl9tYXBwaW5nX25vdGlmeV9ldmVudF90ICpldmVudCk7CistICAgIHZvaWQgdXBkYXRl S2V5bWFwKHhjYl94a2JfbmV3X2tleWJvYXJkX25vdGlmeV9ldmVudF90ICpldmVudCk7CisgICAg IHZvaWQgdXBkYXRlS2V5bWFwKCk7CisgICAgIFFMaXN0PGludD4gcG9zc2libGVLZXlzKGNvbnN0 IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0OworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAKK2luZGV4IGZmZGE3YjZhNTcuLjg2M2U5NjFmNGMg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93 LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5j cHAKK0BAIC01NjQsMTEgKzU2NCw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0R2VvbWV0cnkoY29u c3QgUVJlY3QgJnJlY3QpCisgeworICAgICBRUGxhdGZvcm1XaW5kb3c6OnNldEdlb21ldHJ5KHJl Y3QpOworIAorLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6OlNldEdlb21ldHJ5KSkgewor LSAgICAgICAgbV9kZWZlcnJlZEdlb21ldHJ5ID0gcmVjdDsKKy0gICAgICAgIHJldHVybjsKKy0g ICAgfQorLQorICAgICBwcm9wYWdhdGVTaXplSGludHMoKTsKKyAKKyAgICAgUVhjYlNjcmVlbiAq Y3VycmVudFNjcmVlbiA9IHhjYlNjcmVlbigpOworQEAgLTY5Myw5ICs2ODgsNiBAQCB2b2lkIFFY Y2JXaW5kb3c6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQorIAorIHZvaWQgUVhjYldpbmRvdzo6 c2hvdygpCisgeworLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6Ok1hcCkpCistICAgICAg ICByZXR1cm47CistCisgICAgIGlmICh3aW5kb3coKS0+aXNUb3BMZXZlbCgpKSB7CisgCisgICAg ICAgICAvLyB1cGRhdGUgV01fTk9STUFMX0hJTlRTCitAQCAtNzA2LDcgKzY5OCw3IEBAIHZvaWQg UVhjYldpbmRvdzo6c2hvdygpCisgICAgICAgICBpZiAoaXNUcmFuc2llbnQod2luZG93KCkpKSB7 CisgICAgICAgICAgICAgY29uc3QgUVdpbmRvdyAqdHAgPSB3aW5kb3coKS0+dHJhbnNpZW50UGFy ZW50KCk7CisgICAgICAgICAgICAgaWYgKHRwICYmIHRwLT5oYW5kbGUoKSkKKy0gICAgICAgICAg ICAgICAgdHJhbnNpZW50WGNiUGFyZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgUVhjYldpbmRvdyAq Pih0cC0+aGFuZGxlKCkpLT53aW5JZCgpOworKyAgICAgICAgICAgICAgICB0cmFuc2llbnRYY2JQ YXJlbnQgPSB0cC0+aGFuZGxlKCktPndpbklkKCk7CisgICAgICAgICAgICAgLy8gRGVmYXVsdCB0 byBjbGllbnQgbGVhZGVyIGlmIHRoZXJlIGlzIG5vIHRyYW5zaWVudCBwYXJlbnQsIGVsc2UgbW9k YWwgZGlhbG9ncyBjYW4KKyAgICAgICAgICAgICAvLyBiZSBoaWRkZW4gYnkgdGhlaXIgcGFyZW50 cy4KKyAgICAgICAgICAgICBpZiAoIXRyYW5zaWVudFhjYlBhcmVudCkKK0BAIC03NDYsMTAgKzcz OCw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2hvdygpCisgCisgdm9pZCBRWGNiV2luZG93OjpoaWRl KCkKKyB7CistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6VW5tYXApKQorLSAgICAgICAg cmV0dXJuOworLQorLSAgICBtX3dtU3RhdGVWYWxpZCA9IGZhbHNlOworICAgICB4Y2JfdW5tYXBf d2luZG93KHhjYl9jb25uZWN0aW9uKCksIG1fd2luZG93KTsKKyAKKyAgICAgLy8gc2VuZCBzeW50 aGV0aWMgVW5tYXBOb3RpZnkgZXZlbnQgYWNjb3JkaW5nIHRvIGljY2NtIDQuMS40CitAQCAtOTA5 LDkgKzg5Nyw2IEBAIFFYY2JXaW5kb3c6Ok5ldFdtU3RhdGVzIFFYY2JXaW5kb3c6Om5ldFdtU3Rh dGVzKCkKKyAKKyB2b2lkIFFYY2JXaW5kb3c6OnNldFdpbmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFn cyBmbGFncykKKyB7CistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6U2V0V2luZG93Rmxh Z3MpKQorLSAgICAgICAgcmV0dXJuOworLQorICAgICBRdDo6V2luZG93VHlwZSB0eXBlID0gc3Rh dGljX2Nhc3Q8UXQ6OldpbmRvd1R5cGU+KGludChmbGFncyAmIFF0OjpXaW5kb3dUeXBlX01hc2sp KTsKKyAKKyAgICAgaWYgKHR5cGUgPT0gUXQ6OlRvb2xUaXApCitAQCAtOTQxLDggKzkyNiw2IEBA IHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93RmxhZ3MoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKQor IAorICAgICBzZXRUcmFuc3BhcmVudEZvck1vdXNlRXZlbnRzKGZsYWdzICYgUXQ6OldpbmRvd1Ry YW5zcGFyZW50Rm9ySW5wdXQpOworICAgICB1cGRhdGVEb2VzTm90QWNjZXB0Rm9jdXMoZmxhZ3Mg JiBRdDo6V2luZG93RG9lc05vdEFjY2VwdEZvY3VzKTsKKy0KKy0gICAgbV9pc1dtTWFuYWdlZFdp bmRvdyA9ICEoZmxhZ3MgJiBRdDo6WDExQnlwYXNzV2luZG93TWFuYWdlckhpbnQpOworIH0KKyAK KyB2b2lkIFFYY2JXaW5kb3c6OnNldE1vdGlmV21IaW50cyhRdDo6V2luZG93RmxhZ3MgZmxhZ3Mp CitAQCAtMTE0Miw5ICsxMTI1LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dTdGF0ZShR dDo6V2luZG93U3RhdGVzIHN0YXRlKQorICAgICBpZiAoc3RhdGUgPT0gbV93aW5kb3dTdGF0ZSkK KyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpTZXRX aW5kb3dTdGF0ZSkpCistICAgICAgICByZXR1cm47CistCisgICAgIC8vIHVuc2V0IG9sZCBzdGF0 ZQorICAgICBpZiAobV93aW5kb3dTdGF0ZSAmIFF0OjpXaW5kb3dNaW5pbWl6ZWQpCisgICAgICAg ICB4Y2JfbWFwX3dpbmRvdyh4Y2JfY29ubmVjdGlvbigpLCBtX3dpbmRvdyk7CitAQCAtMTM1MCw2 ICsxMzMwLDEyIEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93SWNvbihjb25zdCBRSWNvbiAm aWNvbikKKyAgICAgfQorIAorICAgICBpZiAoIWljb25fZGF0YS5pc0VtcHR5KCkpIHsKKysgICAg ICAgIC8vIElnbm9yZSBpY29uIGV4Y2VlZGluZyBtYXhpbXVtIHhjYiByZXF1ZXN0IGxlbmd0aAor KyAgICAgICAgaWYgKGljb25fZGF0YS5zaXplKCkgPiB4Y2JfZ2V0X21heGltdW1fcmVxdWVzdF9s ZW5ndGgoeGNiX2Nvbm5lY3Rpb24oKSkpIHsKKysgICAgICAgICAgICBxV2FybmluZygiSWdub3Jp bmcgd2luZG93IGljb246IFNpemUgJWxsdSBleGNlZWRzIG1heGltdW0geGNiIHJlcXVlc3QgbGVu Z3RoICV1LiIsCisrICAgICAgICAgICAgICAgICAgICAgaWNvbl9kYXRhLnNpemUoKSwgeGNiX2dl dF9tYXhpbXVtX3JlcXVlc3RfbGVuZ3RoKHhjYl9jb25uZWN0aW9uKCkpKTsKKysgICAgICAgICAg ICByZXR1cm47CisrICAgICAgICB9CisgICAgICAgICB4Y2JfY2hhbmdlX3Byb3BlcnR5KHhjYl9j b25uZWN0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhDQl9QUk9QX01PREVf UkVQTEFDRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93aW5kb3csCitAQCAtMTYz OSw3ICsxNjI1LDcgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRXbVdpbmRvd1R5cGUoUVhjYldpbmRv d0Z1bmN0aW9uczo6V21XaW5kb3dUeXBlcyB0eXBlcywgUXQ6OlcKKyAgICAgICAgIGJyZWFrOwor ICAgICB9CisgCistICAgIGlmICgoZmxhZ3MgJiBRdDo6RnJhbWVsZXNzV2luZG93SGludCkgJiYg ISh0eXBlICYgUVhjYldpbmRvd0Z1bmN0aW9uczo6S2RlT3ZlcnJpZGUpKSB7CisrICAgIGlmICgo ZmxhZ3MgJiBRdDo6RnJhbWVsZXNzV2luZG93SGludCkgJiYgISh0eXBlcyAmIFFYY2JXaW5kb3dG dW5jdGlvbnM6OktkZU92ZXJyaWRlKSkgeworICAgICAgICAgLy8gb3ZlcnJpZGUgbmV0d20gdHlw ZSAtIHF1aWNrIGFuZCBlYXN5IGZvciBLREUgbm9ib3JkZXIKKyAgICAgICAgIGF0b21zLmFwcGVu ZChhdG9tKFFYY2JBdG9tOjpfS0RFX05FVF9XTV9XSU5ET1dfVFlQRV9PVkVSUklERSkpOworICAg ICB9CitAQCAtMTg5NCwxMCArMTg4MCw2IEBAIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlVW5tYXBO b3RpZnlFdmVudChjb25zdCB4Y2JfdW5tYXBfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICBp ZiAoZXZlbnQtPndpbmRvdyA9PSBtX3dpbmRvdykgeworICAgICAgICAgbV9tYXBwZWQgPSBmYWxz ZTsKKyAgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUV4cG9zZUV2ZW50KHdp bmRvdygpLCBRUmVnaW9uKCkpOworLSAgICAgICAgaWYgKCFtX2lzV21NYW5hZ2VkV2luZG93IHx8 IHBhcmVudCgpKSB7CistICAgICAgICAgICAgbV93bVN0YXRlVmFsaWQgPSB0cnVlOworLSAgICAg ICAgICAgIGhhbmRsZURlZmVycmVkVGFza3MoKTsKKy0gICAgICAgIH0KKyAgICAgfQorIH0KKyAK K0BAIC0yMjEyLDk4ICsyMTk0LDMwIEBAIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlTGVhdmVOb3Rp ZnlFdmVudChjb25zdCB4Y2JfbGVhdmVfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICBoYW5k bGVMZWF2ZU5vdGlmeUV2ZW50KGV2ZW50LT5yb290X3gsIGV2ZW50LT5yb290X3ksIGV2ZW50LT5t b2RlLCBldmVudC0+ZGV0YWlsLCBldmVudC0+dGltZSk7CisgfQorIAorLWJvb2wgUVhjYldpbmRv dzo6c2hvdWxkRGVmZXJUYXNrKFRhc2sgdGFzaykKKy17CistICAgIGlmIChtX3dtU3RhdGVWYWxp ZCkKKy0gICAgICAgIHJldHVybiBmYWxzZTsKKy0KKy0gICAgbV9kZWZlcnJlZFRhc2tzLmFwcGVu ZCh0YXNrKTsKKy0gICAgcmV0dXJuIHRydWU7CistfQorLQorLXZvaWQgUVhjYldpbmRvdzo6aGFu ZGxlRGVmZXJyZWRUYXNrcygpCisteworLSAgICBRX0FTU0VSVChtX3dtU3RhdGVWYWxpZCA9PSB0 cnVlKTsKKy0gICAgaWYgKG1fZGVmZXJyZWRUYXNrcy5pc0VtcHR5KCkpCistICAgICAgICByZXR1 cm47CistCistICAgIGJvb2wgbWFwID0gZmFsc2U7CistICAgIGJvb2wgdW5tYXAgPSBmYWxzZTsK Ky0KKy0gICAgUVZlY3RvcjxUYXNrPiB0YXNrczsKKy0gICAgZm9yIChhdXRvIHRhc2tJdCA9IG1f ZGVmZXJyZWRUYXNrcy5yYmVnaW4oKTsgdGFza0l0ICE9IG1fZGVmZXJyZWRUYXNrcy5yZW5kKCk7 ICsrdGFza0l0KSB7CistICAgICAgICBpZiAoIXRhc2tzLmNvbnRhaW5zKCp0YXNrSXQpKQorLSAg ICAgICAgICAgIHRhc2tzLnByZXBlbmQoKnRhc2tJdCk7CistICAgIH0KKy0KKy0gICAgZm9yIChU YXNrIHRhc2sgOiB0YXNrcykgeworLSAgICAgICAgc3dpdGNoICh0YXNrKSB7CistICAgICAgICBj YXNlIFRhc2s6Ok1hcDoKKy0gICAgICAgICAgICBtYXAgPSB0cnVlOworLSAgICAgICAgICAgIHVu bWFwID0gZmFsc2U7CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlVu bWFwOgorLSAgICAgICAgICAgIHVubWFwID0gdHJ1ZTsKKy0gICAgICAgICAgICBtYXAgPSBmYWxz ZTsKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgICAgIGNhc2UgVGFzazo6U2V0R2VvbWV0cnk6 CistICAgICAgICAgICAgc2V0R2VvbWV0cnkobV9kZWZlcnJlZEdlb21ldHJ5KTsKKy0gICAgICAg ICAgICBicmVhazsKKy0gICAgICAgIGNhc2UgVGFzazo6U2V0V2luZG93RmxhZ3M6CistICAgICAg ICAgICAgc2V0V2luZG93RmxhZ3Mod2luZG93KCktPmZsYWdzKCkpOworLSAgICAgICAgICAgIGJy ZWFrOworLSAgICAgICAgY2FzZSBUYXNrOjpTZXRXaW5kb3dTdGF0ZToKKy0gICAgICAgICAgICBz ZXRXaW5kb3dTdGF0ZSh3aW5kb3coKS0+d2luZG93U3RhdGUoKSk7CistICAgICAgICAgICAgYnJl YWs7CistICAgICAgICB9CistICAgIH0KKy0gICAgbV9kZWZlcnJlZFRhc2tzLmNsZWFyKCk7Cist CistICAgIGlmIChtYXApIHsKKy0gICAgICAgIFFfQVNTRVJUKHVubWFwID09IGZhbHNlKTsKKy0g ICAgICAgIHNob3coKTsKKy0gICAgfQorLSAgICBpZiAodW5tYXApIHsKKy0gICAgICAgIFFfQVNT RVJUKG1hcCA9PSBmYWxzZSk7CistICAgICAgICBoaWRlKCk7CistICAgIH0KKy19CistCisgdm9p ZCBRWGNiV2luZG93OjpoYW5kbGVQcm9wZXJ0eU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9wcm9wZXJ0 eV9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpCisgeworICAgICBjb25uZWN0aW9uKCktPnNldFRpbWUo ZXZlbnQtPnRpbWUpOworIAorLSAgICBjb25zdCBib29sIHdtU3RhdGVDaGFuZ2VkID0gZXZlbnQt PmF0b20gPT0gYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpOworLSAgICBjb25zdCBib29sIG5ldFdt U3RhdGVDaGFuZ2VkID0gZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9XTV9TVEFU RSk7CistICAgIGlmIChuZXRXbVN0YXRlQ2hhbmdlZCB8fCB3bVN0YXRlQ2hhbmdlZCkgeworLSAg ICAgICAgaWYgKHdtU3RhdGVDaGFuZ2VkICYmICFtX3dtU3RhdGVWYWxpZCAmJiBtX2lzV21NYW5h Z2VkV2luZG93KSB7CistICAgICAgICAgICAgLy8gSUNDQ00gNC4xLjQKKy0gICAgICAgICAgICAv LyBDbGllbnRzIHRoYXQgd2FudCB0byByZS11c2UgYSBjbGllbnQgd2luZG93IChlLmcuIGJ5IG1h cHBpbmcgaXQgYWdhaW4pCistICAgICAgICAgICAgLy8gYWZ0ZXIgd2l0aGRyYXdpbmcgaXQgbXVz dCB3YWl0IGZvciB0aGUgd2l0aGRyYXdhbCB0byBiZSBjb21wbGV0ZSBiZWZvcmUKKy0gICAgICAg ICAgICAvLyBwcm9jZWVkaW5nLiBUaGUgcHJlZmVycmVkIG1ldGhvZCBmb3IgZG9pbmcgdGhpcyBp cyBmb3IgY2xpZW50cyB0byB3YWl0IGZvcgorLSAgICAgICAgICAgIC8vIGEgd2luZG93IG1hbmFn ZXIgdG8gdXBkYXRlIG9yIHJlbW92ZSB0aGUgV01fU1RBVEUgcHJvcGVydHkuCistICAgICAgICAg ICAgbV93bVN0YXRlVmFsaWQgPSB0cnVlOworLSAgICAgICAgICAgIGhhbmRsZURlZmVycmVkVGFz a3MoKTsKKy0gICAgICAgIH0KKy0gICAgICAgIGlmIChldmVudC0+c3RhdGUgPT0gWENCX1BST1BF UlRZX0RFTEVURSkKKysgICAgY29uc3QgYm9vbCBwcm9wZXJ0eURlbGV0ZWQgPSBldmVudC0+c3Rh dGUgPT0gWENCX1BST1BFUlRZX0RFTEVURTsKKysKKysgICAgaWYgKGV2ZW50LT5hdG9tID09IGF0 b20oUVhjYkF0b206Ol9ORVRfV01fU1RBVEUpIHx8IGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0 b206OldNX1NUQVRFKSkgeworKyAgICAgICAgaWYgKHByb3BlcnR5RGVsZXRlZCkKKyAgICAgICAg ICAgICByZXR1cm47CisgCistICAgICAgICBpZiAod21TdGF0ZUNoYW5nZWQpIHsKKysgICAgICAg IFF0OjpXaW5kb3dTdGF0ZXMgbmV3U3RhdGUgPSBRdDo6V2luZG93Tm9TdGF0ZTsKKysKKysgICAg ICAgIGlmIChldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSkpIHsgLy8gV01f U1RBVEU6IFF1aWNrIGNoZWNrIGZvciAnTWluaW1pemUnLgorICAgICAgICAgICAgIGF1dG8gcmVw bHkgPSBRX1hDQl9SRVBMWSh4Y2JfZ2V0X3Byb3BlcnR5LCB4Y2JfY29ubmVjdGlvbigpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBtX3dpbmRvdywgYXRvbShRWGNi QXRvbTo6V01fU1RBVEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBY Q0JfQVRPTV9BTlksIDAsIDEwMjQpOworICAgICAgICAgICAgIGlmIChyZXBseSAmJiByZXBseS0+ Zm9ybWF0ID09IDMyICYmIHJlcGx5LT50eXBlID09IGF0b20oUVhjYkF0b206OldNX1NUQVRFKSkg eworLSAgICAgICAgICAgICAgICBhdXRvIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBxdWludDMy ICo+KHhjYl9nZXRfcHJvcGVydHlfdmFsdWUocmVwbHkuZ2V0KCkpKTsKKy0gICAgICAgICAgICAg ICAgaWYgKHJlcGx5LT5sZW5ndGggIT0gMCkgeworLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg Ym9vbCBjaGFuZ2VkVG9XaXRoZHJhd24gPSBkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9X SVRIRFJBV047CistICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIGNoYW5nZWRUb0ljb25p YyA9IGRhdGFbMF0gPT0gWENCX0lDQ0NNX1dNX1NUQVRFX0lDT05JQzsKKy0gICAgICAgICAgICAg ICAgICAgIG1fbWluaW1pemVkID0gY2hhbmdlZFRvSWNvbmljIHx8IChjaGFuZ2VkVG9XaXRoZHJh d24gJiYgbV9taW5pbWl6ZWQpOworLSAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAg IGNvbnN0IHF1aW50MzIgKmRhdGEgPSAoY29uc3QgcXVpbnQzMiAqKXhjYl9nZXRfcHJvcGVydHlf dmFsdWUocmVwbHkuZ2V0KCkpOworKyAgICAgICAgICAgICAgICBpZiAocmVwbHktPmxlbmd0aCAh PSAwKQorKyAgICAgICAgICAgICAgICAgICAgbV9taW5pbWl6ZWQgPSAoZGF0YVswXSA9PSBYQ0Jf SUNDQ01fV01fU1RBVEVfSUNPTklDCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8fCAoZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfV0lUSERSQVdOICYmIG1fbWluaW1p emVkKSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorIAorLSAgICAgICAgLy8gX05FVF9X TV9TVEFURSBoYW5kbGluZworLSAgICAgICAgUXQ6OldpbmRvd1N0YXRlcyBuZXdTdGF0ZSA9IFF0 OjpXaW5kb3dOb1N0YXRlOworICAgICAgICAgY29uc3QgTmV0V21TdGF0ZXMgc3RhdGVzID0gbmV0 V21TdGF0ZXMoKTsKKyAgICAgICAgIC8vIF9ORVRfV01fU1RBVEVfSElEREVOIHNob3VsZCBiZSBz ZXQgYnkgdGhlIFdpbmRvdyBNYW5hZ2VyIHRvIGluZGljYXRlIHRoYXQgYSB3aW5kb3cgd291bGQK KyAgICAgICAgIC8vIG5vdCBiZSB2aXNpYmxlIG9uIHRoZSBzY3JlZW4gaWYgaXRzIGRlc2t0b3Av dmlld3BvcnQgd2VyZSBhY3RpdmUgYW5kIGl0cyBjb29yZGluYXRlcyB3ZXJlCitAQCAtMjMyNSw2 ICsyMjM5LDcgQEAgdm9pZCBRWGNiV2luZG93OjpoYW5kbGVQcm9wZXJ0eU5vdGlmeUV2ZW50KGNv bnN0IHhjYl9wcm9wZXJ0eV9ub3RpZnlfZXZlbnRfdCAqZXYKKyAgICAgICAgICAgICBpZiAoKG1f d2luZG93U3RhdGUgJiBRdDo6V2luZG93TWluaW1pemVkKSAmJiBjb25uZWN0aW9uKCktPm1vdXNl R3JhYmJlcigpID09IHRoaXMpCisgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24oKS0+c2V0TW91 c2VHcmFiYmVyKG51bGxwdHIpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuOworICAgICB9 IGVsc2UgaWYgKGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfRlJBTUVfRVhURU5U UykpIHsKKyAgICAgICAgIG1fZGlydHlGcmFtZU1hcmdpbnMgPSB0cnVlOworICAgICB9CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oIGIv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oCitpbmRleCA1NWFm OTI3OWIxLi42ZjVjMWY1ZWQ5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvcXhjYndpbmRvdy5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L3hjYi9xeGNid2luZG93LmgKK0BAIC03NCwxNCArNzQsNiBAQCBwdWJsaWM6CisgCisgICAgIFFf REVDTEFSRV9GTEFHUyhOZXRXbVN0YXRlcywgTmV0V21TdGF0ZSkKKyAKKy0gICAgZW51bSBUYXNr IHsKKy0gICAgICAgIE1hcCwKKy0gICAgICAgIFVubWFwLAorLSAgICAgICAgU2V0R2VvbWV0cnks CistICAgICAgICBTZXRXaW5kb3dGbGFncywKKy0gICAgICAgIFNldFdpbmRvd1N0YXRlCistICAg IH07CistCisgICAgIFFYY2JXaW5kb3coUVdpbmRvdyAqd2luZG93KTsKKyAgICAgflFYY2JXaW5k b3coKTsKKyAKK0BAIC0xNTEsOSArMTQzLDYgQEAgcHVibGljOgorIAorICAgICBRWGNiV2luZG93 ICp0b1dpbmRvdygpIG92ZXJyaWRlOworIAorLSAgICBib29sIHNob3VsZERlZmVyVGFzayhUYXNr IHRhc2spOworLSAgICB2b2lkIGhhbmRsZURlZmVycmVkVGFza3MoKTsKKy0KKyAgICAgdm9pZCBo YW5kbGVNb3VzZUV2ZW50KHhjYl90aW1lc3RhbXBfdCB0aW1lLCBjb25zdCBRUG9pbnQgJmxvY2Fs LCBjb25zdCBRUG9pbnQgJmdsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0OjpL ZXlib2FyZE1vZGlmaWVycyBtb2RpZmllcnMsIFFFdmVudDo6VHlwZSB0eXBlLCBRdDo6TW91c2VF dmVudFNvdXJjZSBzb3VyY2UpOworIAorQEAgLTI5MiwxMSArMjgxLDYgQEAgcHJvdGVjdGVkOgor ICAgICBpbnQgbV9zd2FwSW50ZXJ2YWwgPSAtMTsKKyAKKyAgICAgcXJlYWwgbV9zaXplSGludHNT Y2FsZUZhY3RvciA9IDEuMDsKKy0KKy0gICAgYm9vbCBtX3dtU3RhdGVWYWxpZCA9IHRydWU7Cist ICAgIFFWZWN0b3I8VGFzaz4gbV9kZWZlcnJlZFRhc2tzOworLSAgICBib29sIG1faXNXbU1hbmFn ZWRXaW5kb3cgPSB0cnVlOworLSAgICBRUmVjdCBtX2RlZmVycmVkR2VvbWV0cnk7CisgfTsKKyAK KyBjbGFzcyBRWGNiRm9yZWlnbldpbmRvdyA6IHB1YmxpYyBRWGNiV2luZG93CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcCBi L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAKK2lu ZGV4IGQ5ZDExN2ZhZWIuLjY0MGI0OWRhYTAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3RrM21lbnUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3RrM21lbnUuY3BwCitAQCAtODUsNiArODUsNyBA QCBRR3RrM01lbnVJdGVtOjpRR3RrM01lbnVJdGVtKCkKKyAgICAgICBtX2NoZWNrYWJsZShmYWxz ZSksCisgICAgICAgbV9jaGVja2VkKGZhbHNlKSwKKyAgICAgICBtX2VuYWJsZWQodHJ1ZSksCisr ICAgICAgbV9leGNsdXNpdmUoZmFsc2UpLAorICAgICAgIG1fdW5kZXJsaW5lKGZhbHNlKSwKKyAg ICAgICBtX2ludmFsaWQodHJ1ZSksCisgICAgICAgbV9tZW51KG51bGxwdHIpLAorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4 ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZy5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2cuY3Bw CitpbmRleCAwMDQ4YmJjMWU2Li4zOTZlN2Y2ZDFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxm aWxlZGlhbG9nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hk Z2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcAorQEAgLTEwMiwx NSArMTAyLDEyIEBAIGNvbnN0IFFEQnVzQXJndW1lbnQgJm9wZXJhdG9yID4+KGNvbnN0IFFEQnVz QXJndW1lbnQgJmFyZywgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlCisgY2xhc3MgUVhkZ0Rlc2t0b3BQ b3J0YWxGaWxlRGlhbG9nUHJpdmF0ZQorIHsKKyBwdWJsaWM6CistICAgIFFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZ1ByaXZhdGUoUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmls ZURpYWxvZykKKysgICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShRUGxhdGZv cm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nLCB1aW50IGZpbGVDaG9vc2VyUG9y dGFsVmVyc2lvbikKKyAgICAgICAgIDogbmF0aXZlRmlsZURpYWxvZyhuYXRpdmVGaWxlRGlhbG9n KQorKyAgICAgICAgLCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24oZmlsZUNob29zZXJQb3J0YWxW ZXJzaW9uKQorICAgICB7IH0KKyAKKy0gICAgV0lkIHdpbklkID0gMDsKKy0gICAgYm9vbCBkaXJl Y3RvcnlNb2RlID0gZmFsc2U7CistICAgIGJvb2wgbW9kYWwgPSBmYWxzZTsKKy0gICAgYm9vbCBt dWx0aXBsZUZpbGVzID0gZmFsc2U7CistICAgIGJvb2wgc2F2ZUZpbGUgPSBmYWxzZTsKKysgICAg UUV2ZW50TG9vcCBsb29wOworICAgICBRU3RyaW5nIGFjY2VwdExhYmVsOworICAgICBRU3RyaW5n IGRpcmVjdG9yeTsKKyAgICAgUVN0cmluZyB0aXRsZTsKK0BAIC0xMjEsMTkgKzExOCwyNyBAQCBw dWJsaWM6CisgICAgIFFTdHJpbmcgc2VsZWN0ZWRNaW1lVHlwZUZpbHRlcjsKKyAgICAgUVN0cmlu ZyBzZWxlY3RlZE5hbWVGaWx0ZXI7CisgICAgIFFTdHJpbmdMaXN0IHNlbGVjdGVkRmlsZXM7Cist ICAgIFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBudWxscHRy OworKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcj4gbmF0aXZl RmlsZURpYWxvZzsKKysgICAgdWludCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPSAwOworKyAg ICBib29sIGZhaWxlZFRvT3BlbiA9IGZhbHNlOworKyAgICBib29sIGRpcmVjdG9yeU1vZGUgPSBm YWxzZTsKKysgICAgYm9vbCBtdWx0aXBsZUZpbGVzID0gZmFsc2U7CisrICAgIGJvb2wgc2F2ZUZp bGUgPSBmYWxzZTsKKyB9OworIAorLVFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6UVhkZ0Rl c2t0b3BQb3J0YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZp bGVEaWFsb2cpCisrUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpRWGRnRGVza3RvcFBvcnRh bEZpbGVEaWFsb2coUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZywg dWludCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pCisgICAgIDogUVBsYXRmb3JtRmlsZURpYWxv Z0hlbHBlcigpCistICAgICwgZF9wdHIobmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1By aXZhdGUobmF0aXZlRmlsZURpYWxvZykpCisrICAgICwgZF9wdHIobmV3IFFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZ1ByaXZhdGUobmF0aXZlRmlsZURpYWxvZywgZmlsZUNob29zZXJQb3J0YWxW ZXJzaW9uKSkKKyB7CisgICAgIFFfRChRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAor ICAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZykgeworLSAgICAgICAgY29ubmVjdChkLT5uYXRp dmVGaWxlRGlhbG9nLCBTSUdOQUwoYWNjZXB0KCkpLCB0aGlzLCBTSUdOQUwoYWNjZXB0KCkpKTsK Ky0gICAgICAgIGNvbm5lY3QoZC0+bmF0aXZlRmlsZURpYWxvZywgU0lHTkFMKHJlamVjdCgpKSwg dGhpcywgU0lHTkFMKHJlamVjdCgpKSk7CisrICAgICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVE aWFsb2cuZ2V0KCksIFNJR05BTChhY2NlcHQoKSksIHRoaXMsIFNJR05BTChhY2NlcHQoKSkpOwor KyAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlhbG9nLmdldCgpLCBTSUdOQUwocmVqZWN0 KCkpLCB0aGlzLCBTSUdOQUwocmVqZWN0KCkpKTsKKyAgICAgfQorKworKyAgICBkLT5sb29wLmNv bm5lY3QodGhpcywgU0lHTkFMKGFjY2VwdCgpKSwgU0xPVChxdWl0KCkpKTsKKysgICAgZC0+bG9v cC5jb25uZWN0KHRoaXMsIFNJR05BTChyZWplY3QoKSksIFNMT1QocXVpdCgpKSk7CisgfQorIAor IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6flFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv ZygpCitAQCAtMTc3LDcgKzE4Miw3IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n Ojppbml0aWFsaXplRGlhbG9nKCkKKyAgICAgc2V0RGlyZWN0b3J5KG9wdGlvbnMoKS0+aW5pdGlh bERpcmVjdG9yeSgpKTsKKyB9CisgCistdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6 Om9wZW5Qb3J0YWwoKQorK3ZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9y dGFsKFF0OjpXaW5kb3dGbGFncyB3aW5kb3dGbGFncywgUXQ6OldpbmRvd01vZGFsaXR5IHdpbmRv d01vZGFsaXR5LCBRV2luZG93ICpwYXJlbnQpCisgeworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nKTsKKyAKK0BAIC0xODUsMTMgKzE5MCwxMyBAQCB2b2lkIFFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIi9vcmcvZnJl ZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3AiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygib3JnLmZyZWVkZXNr dG9wLnBvcnRhbC5GaWxlQ2hvb3NlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5zYXZlRmlsZSA/IFFMYXRpbjFTdHJpbmco IlNhdmVGaWxlIikgOiBRTGF0aW4xU3RyaW5nKCJPcGVuRmlsZSIpKTsKKy0gICAgUVN0cmluZyBw YXJlbnRXaW5kb3dJZCA9IFFMYXRpbjFTdHJpbmcoIngxMToiKSArIFFTdHJpbmc6Om51bWJlcihk LT53aW5JZCwgMTYpOworKyAgICBRU3RyaW5nIHBhcmVudFdpbmRvd0lkID0gUUxhdGluMVN0cmlu ZygieDExOiIpICsgUVN0cmluZzo6bnVtYmVyKHBhcmVudCA/IHBhcmVudC0+d2luSWQoKSA6IDAs IDE2KTsKKyAKKyAgICAgUVZhcmlhbnRNYXAgb3B0aW9uczsKKyAgICAgaWYgKCFkLT5hY2NlcHRM YWJlbC5pc0VtcHR5KCkpCisgICAgICAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJh Y2NlcHRfbGFiZWwiKSwgZC0+YWNjZXB0TGFiZWwpOworIAorLSAgICBvcHRpb25zLmluc2VydChR TGF0aW4xU3RyaW5nKCJtb2RhbCIpLCBkLT5tb2RhbCk7CisrICAgIG9wdGlvbnMuaW5zZXJ0KFFM YXRpbjFTdHJpbmcoIm1vZGFsIiksIHdpbmRvd01vZGFsaXR5ICE9IFF0OjpOb25Nb2RhbCk7Cisg ICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoIm11bHRpcGxlIiksIGQtPm11bHRpcGxl RmlsZXMpOworICAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJkaXJlY3RvcnkiKSwg ZC0+ZGlyZWN0b3J5TW9kZSk7CisgCitAQCAtMjkwLDEwICsyOTUsMTggQEAgdm9pZCBRWGRnRGVz a3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQorIAorICAgICBRREJ1c1BlbmRpbmdD YWxsIHBlbmRpbmdDYWxsID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxs KG1lc3NhZ2UpOworICAgICBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlciA9IG5ldyBR REJ1c1BlbmRpbmdDYWxsV2F0Y2hlcihwZW5kaW5nQ2FsbCk7CistICAgIGNvbm5lY3Qod2F0Y2hl ciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hlZCwgdGhpcywgW3RoaXNdIChRREJ1 c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlcikgeworKyAgICBjb25uZWN0KHdhdGNoZXIsICZR REJ1c1BlbmRpbmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHRoaXMsIFs9XSAoUURCdXNQZW5kaW5n Q2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKyAgICAgICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFEQnVz T2JqZWN0UGF0aD4gcmVwbHkgPSAqd2F0Y2hlcjsKKy0gICAgICAgIGlmIChyZXBseS5pc0Vycm9y KCkpIHsKKy0gICAgICAgICAgICBRX0VNSVQgcmVqZWN0KCk7CisrICAgICAgICAvLyBBbnkgZXJy b3IgbWVhbnMgdGhlIGRpYWxvZyBpcyBub3Qgc2hvd24gYW5kIHdlIG5lZWQgdG8gZmFsbGJhY2sK KysgICAgICAgIGQtPmZhaWxlZFRvT3BlbiA9IHJlcGx5LmlzRXJyb3IoKTsKKysgICAgICAgIGlm IChkLT5mYWlsZWRUb09wZW4pIHsKKysgICAgICAgICAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxv ZykgeworKyAgICAgICAgICAgICAgICBkLT5uYXRpdmVGaWxlRGlhbG9nLT5zaG93KHdpbmRvd0Zs YWdzLCB3aW5kb3dNb2RhbGl0eSwgcGFyZW50KTsKKysgICAgICAgICAgICAgICAgaWYgKGQtPmxv b3AuaXNSdW5uaW5nKCkpCisrICAgICAgICAgICAgICAgICAgICBkLT5uYXRpdmVGaWxlRGlhbG9n LT5leGVjKCk7CisrICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgUV9FTUlU IHJlamVjdCgpOworKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuY29ubmVjdChudWxscHRyLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHkudmFsdWUo KS5wYXRoKCksCitAQCAtMzAyLDYgKzMxNSw3IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxl RGlhbG9nOjpvcGVuUG9ydGFsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTTE9UKGdvdFJlc3BvbnNlKHVpbnQsUVZhcmlhbnRNYXApKSk7Cisg ICAgICAgICB9CisrICAgICAgICB3YXRjaGVyLT5kZWxldGVMYXRlcigpOworICAgICB9KTsKKyB9 CisgCitAQCAtMzI2LDcgKzM0MCw3IEBAIFFVcmwgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n OjpkaXJlY3RvcnkoKSBjb25zdAorIHsKKyAgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFs RmlsZURpYWxvZyk7CisgCistICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25z KCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9u cygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpCisr ICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coKSkKKyAg ICAgICAgIHJldHVybiBkLT5uYXRpdmVGaWxlRGlhbG9nLT5kaXJlY3RvcnkoKTsKKyAKKyAgICAg cmV0dXJuIGQtPmRpcmVjdG9yeTsKK0BAIC0zNDgsNyArMzYyLDcgQEAgUUxpc3Q8UVVybD4gUVhk Z0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpzZWxlY3RlZEZpbGVzKCkgY29uc3QKKyB7CisgICAg IFFfRChjb25zdCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorLSAgICBpZiAoZC0+ bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9n T3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxv Z09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKQorKyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAm JiB1c2VOYXRpdmVGaWxlRGlhbG9nKCkpCisgICAgICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURp YWxvZy0+c2VsZWN0ZWRGaWxlcygpOworIAorICAgICBRTGlzdDxRVXJsPiBmaWxlczsKK0BAIC00 MDMsMTYgKzQxNywxMyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6ZXhlYygp CisgeworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAgaWYg KGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURp YWxvZ09wdGlvbnM6OkRpcmVjdG9yeSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVE aWFsb2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5KSkgeworKyAgICBpZiAoZC0+bmF0aXZlRmlsZURp YWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKCkpIHsKKyAgICAgICAgIGQtPm5hdGl2ZUZpbGVE aWFsb2ctPmV4ZWMoKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorICAgICAvLyBIQUNL IHdlIGhhdmUgdG8gYXZvaWQgcmV0dXJuaW5nIHVudGlsIHdlIGVtaXQgdGhhdCB0aGUgZGlhbG9n IHdhcyBhY2NlcHRlZCBvciByZWplY3RlZAorLSAgICBRRXZlbnRMb29wIGxvb3A7CistICAgIGxv b3AuY29ubmVjdCh0aGlzLCBTSUdOQUwoYWNjZXB0KCkpLCBTTE9UKHF1aXQoKSkpOworLSAgICBs b29wLmNvbm5lY3QodGhpcywgU0lHTkFMKHJlamVjdCgpKSwgU0xPVChxdWl0KCkpKTsKKy0gICAg bG9vcC5leGVjKCk7CisrICAgIGQtPmxvb3AuZXhlYygpOworIH0KKyAKKyB2b2lkIFFYZGdEZXNr dG9wUG9ydGFsRmlsZURpYWxvZzo6aGlkZSgpCitAQCAtNDI5LDEzICs0NDAsMTAgQEAgYm9vbCBR WGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OnNob3coUXQ6OldpbmRvd0ZsYWdzIHdpbmRvd0Zs YWdzLCBRdDo6V2luZG93TW8KKyAKKyAgICAgaW5pdGlhbGl6ZURpYWxvZygpOworIAorLSAgICBk LT5tb2RhbCA9IHdpbmRvd01vZGFsaXR5ICE9IFF0OjpOb25Nb2RhbDsKKy0gICAgZC0+d2luSWQg PSBwYXJlbnQgPyBwYXJlbnQtPndpbklkKCkgOiAwOworLQorLSAgICBpZiAoZC0+bmF0aXZlRmls ZURpYWxvZyAmJiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6 RGlyZWN0b3J5IHx8IG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6 OkRpcmVjdG9yeU9ubHkpKQorKyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRp dmVGaWxlRGlhbG9nKE9wZW5GYWxsYmFjaykpCisgICAgICAgICByZXR1cm4gZC0+bmF0aXZlRmls ZURpYWxvZy0+c2hvdyh3aW5kb3dGbGFncywgd2luZG93TW9kYWxpdHksIHBhcmVudCk7CisgCist ICAgIG9wZW5Qb3J0YWwoKTsKKysgICAgb3BlblBvcnRhbCh3aW5kb3dGbGFncywgd2luZG93TW9k YWxpdHksIHBhcmVudCk7CisgCisgICAgIHJldHVybiB0cnVlOworIH0KK0BAIC00NjUsNCArNDcz LDIxIEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpnb3RSZXNwb25zZSh1aW50 IHJlc3BvbnNlLCBjb25zdCBRVmFyaWFudE1hcCAmCisgICAgIH0KKyB9CisgCisrYm9vbCBRWGRn RGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OnVzZU5hdGl2ZUZpbGVEaWFsb2coUVhkZ0Rlc2t0b3BQ b3J0YWxGaWxlRGlhbG9nOjpGYWxsYmFja1R5cGUgZmFsbGJhY2tUeXBlKSBjb25zdAorK3sKKysg ICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisrCisrICAgIGlmIChk LT5mYWlsZWRUb09wZW4gJiYgZmFsbGJhY2tUeXBlICE9IE9wZW5GYWxsYmFjaykKKysgICAgICAg IHJldHVybiB0cnVlOworKworKyAgICBpZiAoZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uIDwg MykgeworKyAgICAgICAgaWYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09w dGlvbnM6OkRpcmVjdG9yeSkKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgICAgIGVs c2UgaWYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVj dG9yeU9ubHkpCisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgIH0KKysKKysgICAgcmV0 dXJuIGZhbHNlOworK30KKysKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bw b3J0YWxmaWxlZGlhbG9nX3AuaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94 ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZ19wLmgKK2luZGV4IDRm NGRlOTZlY2YuLjY1ZTIyYTVjZjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2df cC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBv cnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oCitAQCAtNTEsNiArNTEsMTEgQEAg Y2xhc3MgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nIDogcHVibGljIFFQbGF0Zm9ybUZpbGVE aWFsb2dIZWxwZXIKKyAgICAgUV9PQkpFQ1QKKyAgICAgUV9ERUNMQVJFX1BSSVZBVEUoUVhkZ0Rl c2t0b3BQb3J0YWxGaWxlRGlhbG9nKQorIHB1YmxpYzoKKysgICAgZW51bSBGYWxsYmFja1R5cGUg eworKyAgICAgICAgR2VuZXJpY0ZhbGxiYWNrLAorKyAgICAgICAgT3BlbkZhbGxiYWNrCisrICAg IH07CisrCisgICAgIGVudW0gQ29uZGl0aW9uVHlwZSA6IHVpbnQgeworICAgICAgICAgR2xvYmFs UGF0dGVybiA9IDAsCisgICAgICAgICBNaW1lVHlwZSA9IDEKK0BAIC02OSw3ICs3NCw3IEBAIHB1 YmxpYzoKKyAgICAgfTsKKyAgICAgdHlwZWRlZiBRVmVjdG9yPEZpbHRlcj4gRmlsdGVyTGlzdDsK KyAKKy0gICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dI ZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBudWxscHRyKTsKKysgICAgUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cg PSBudWxscHRyLCB1aW50IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA9IDApOworICAgICB+UVhk Z0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKCk7CisgCisgICAgIGJvb2wgZGVmYXVsdE5hbWVGaWx0 ZXJEaXNhYmxlcygpIGNvbnN0IG92ZXJyaWRlOworQEAgLTkyLDcgKzk3LDggQEAgcHJpdmF0ZSBR X1NMT1RTOgorIAorIHByaXZhdGU6CisgICAgIHZvaWQgaW5pdGlhbGl6ZURpYWxvZygpOworLSAg ICB2b2lkIG9wZW5Qb3J0YWwoKTsKKysgICAgdm9pZCBvcGVuUG9ydGFsKFF0OjpXaW5kb3dGbGFn cyB3aW5kb3dGbGFncywgUXQ6OldpbmRvd01vZGFsaXR5IHdpbmRvd01vZGFsaXR5LCBRV2luZG93 ICpwYXJlbnQpOworKyAgICBib29sIHVzZU5hdGl2ZUZpbGVEaWFsb2coRmFsbGJhY2tUeXBlIGZh bGxiYWNrVHlwZSA9IEdlbmVyaWNGYWxsYmFjaykgY29uc3Q7CisgCisgICAgIFFTY29wZWRQb2lu dGVyPFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGU+IGRfcHRyOworIH07CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0 YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcAoraW5k ZXggZmIzMjRhZmJkOC4uYjgwOTUwMzEyMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBv cnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcAorQEAgLTExMSw2ICsxMTEsNyBAQCBRWGRn RGVza3RvcFBvcnRhbFRoZW1lOjpRWGRnRGVza3RvcFBvcnRhbFRoZW1lKCkKKyAgICAgICAgIGlm IChyZXBseS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICBkLT5maWxlQ2hvb3NlclBvcnRhbFZl cnNpb24gPSByZXBseS52YWx1ZSgpLnRvVUludCgpOworICAgICAgICAgfQorKyAgICAgICAgd2F0 Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKyAgICAgfSk7CisgfQorIAorQEAgLTE1MiwxMSArMTUzLDEy IEBAIFFQbGF0Zm9ybURpYWxvZ0hlbHBlciogUVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZTo6Y3JlYXRl UGxhdGZvcm1EaWFsb2dIZWxwZXIoRGlhbG9nCisgeworICAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0 b3BQb3J0YWxUaGVtZSk7CisgCistICAgIGlmICh0eXBlID09IEZpbGVEaWFsb2cpIHsKKysgICAg aWYgKHR5cGUgPT0gRmlsZURpYWxvZyAmJiBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pIHsK KyAgICAgICAgIC8vIE9sZGVyIHZlcnNpb25zIG9mIEZpbGVDaG9vc2VyIHBvcnRhbCBkb24ndCBz dXBwb3J0IG9wZW5pbmcgZGlyZWN0b3JpZXMsIHRoZXJlZm9yZSB3ZSBmYWxsYmFjaworICAgICAg ICAgLy8gdG8gbmF0aXZlIGZpbGUgZGlhbG9nIG9wZW5lZCBpbnNpZGUgdGhlIHNhbmRib3ggdG8g b3BlbiBhIGRpcmVjdG9yeS4KKy0gICAgICAgIGlmIChkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNp b24gPCAzICYmIGQtPmJhc2VUaGVtZS0+dXNlUGxhdGZvcm1OYXRpdmVEaWFsb2codHlwZSkpCist ICAgICAgICAgICAgcmV0dXJuIG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coc3RhdGlj X2Nhc3Q8UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcio+KGQtPmJhc2VUaGVtZS0+Y3JlYXRlUGxh dGZvcm1EaWFsb2dIZWxwZXIodHlwZSkpKTsKKysgICAgICAgIGlmIChkLT5iYXNlVGhlbWUtPnVz ZVBsYXRmb3JtTmF0aXZlRGlhbG9nKHR5cGUpKQorKyAgICAgICAgICAgIHJldHVybiBuZXcgUVhk Z0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKHN0YXRpY19jYXN0PFFQbGF0Zm9ybUZpbGVEaWFsb2dI ZWxwZXIqPihkLT5iYXNlVGhlbWUtPmNyZWF0ZVBsYXRmb3JtRGlhbG9nSGVscGVyKHR5cGUpKSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5m aWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pOworIAorICAgICAgICAgcmV0dXJuIG5ldyBRWGRnRGVz a3RvcFBvcnRhbEZpbGVEaWFsb2c7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZS5jcHAKK2luZGV4IDQz ZDVlMTE5YWQuLjFmOWNiYzQ1NjUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJp bnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1 Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lLmNwcAorQEAgLTg5LDggKzg5 LDEwIEBAIHZvaWQgUUN1cHNQcmludEVuZ2luZTo6c2V0UHJvcGVydHkoUHJpbnRFbmdpbmVQcm9w ZXJ0eUtleSBrZXksIGNvbnN0IFFWYXJpYW50ICZ2CisgICAgICAgICBicmVhazsKKyAgICAgY2Fz ZSBQUEtfRHVwbGV4OiB7CisgICAgICAgICBRUHJpbnQ6OkR1cGxleE1vZGUgbW9kZSA9IFFQcmlu dDo6RHVwbGV4TW9kZSh2YWx1ZS50b0ludCgpKTsKKy0gICAgICAgIGlmIChtb2RlICE9IGQtPmR1 cGxleCAmJiBkLT5tX3ByaW50RGV2aWNlLnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMo bW9kZSkpCisrICAgICAgICBpZiAoZC0+bV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2Rl cygpLmNvbnRhaW5zKG1vZGUpKSB7CisgICAgICAgICAgICAgZC0+ZHVwbGV4ID0gbW9kZTsKKysg ICAgICAgICAgICBkLT5kdXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5ID0gdHJ1ZTsKKysgICAgICAg IH0KKyAgICAgICAgIGJyZWFrOworICAgICB9CisgICAgIGNhc2UgUFBLX1ByaW50ZXJOYW1lOgor QEAgLTI3Nyw5ICsyNzksMTIgQEAgdm9pZCBRQ3Vwc1ByaW50RW5naW5lUHJpdmF0ZTo6Y2hhbmdl UHJpbnRlcihjb25zdCBRU3RyaW5nICZuZXdQcmludGVyKQorICAgICBtX3ByaW50RGV2aWNlLnN3 YXAocHJpbnREZXZpY2UpOworICAgICBwcmludGVyTmFtZSA9IG1fcHJpbnREZXZpY2UuaWQoKTsK KyAKKy0gICAgLy8gQ2hlY2sgaWYgbmV3IHByaW50ZXIgc3VwcG9ydHMgY3VycmVudCBzZXR0aW5n cywgb3RoZXJ3aXNlIHVzIGRlZmF1bHRzCistICAgIGlmIChkdXBsZXggIT0gUVByaW50OjpEdXBs ZXhBdXRvICYmICFtX3ByaW50RGV2aWNlLnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMo ZHVwbGV4KSkKKysgICAgLy8gaW4gY2FzZSBhIGR1cGxleCB2YWx1ZSB3YXMgZXhwbGljaXRseSBz ZXQsIGNoZWNrIGlmIG5ldyBwcmludGVyIHN1cHBvcnRzIGN1cnJlbnQgdmFsdWUsCisrICAgIC8v IG90aGVyd2lzZSB1c2UgZGV2aWNlIGRlZmF1bHQKKysgICAgaWYgKCFkdXBsZXhSZXF1ZXN0ZWRF eHBsaWNpdGx5IHx8ICFtX3ByaW50RGV2aWNlLnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFp bnMoZHVwbGV4KSkgeworICAgICAgICAgZHVwbGV4ID0gbV9wcmludERldmljZS5kZWZhdWx0RHVw bGV4TW9kZSgpOworKyAgICAgICAgZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSA9IGZhbHNlOwor KyAgICB9CisgICAgIFFQcmludDo6Q29sb3JNb2RlIGNvbG9yTW9kZSA9IGdyYXlzY2FsZSA/IFFQ cmludDo6R3JheVNjYWxlIDogUVByaW50OjpDb2xvcjsKKyAgICAgaWYgKCFtX3ByaW50RGV2aWNl LnN1cHBvcnRlZENvbG9yTW9kZXMoKS5jb250YWlucyhjb2xvck1vZGUpKQorICAgICAgICAgZ3Jh eXNjYWxlID0gbV9wcmludERldmljZS5kZWZhdWx0Q29sb3JNb2RlKCkgPT0gUVByaW50OjpHcmF5 U2NhbGU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBz L3FjdXBzcHJpbnRlbmdpbmVfcC5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9j dXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5oCitpbmRleCBjMDIxYjBjNjQzLi44ZjgxZmU0NzhkIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJp bnRlbmdpbmVfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMv cWN1cHNwcmludGVuZ2luZV9wLmgKK0BAIC0xMDAsNiArMTAwLDcgQEAgcHJpdmF0ZToKKyAgICAg UVN0cmluZ0xpc3QgY3Vwc09wdGlvbnM7CisgICAgIFFTdHJpbmcgY3Vwc1RlbXBGaWxlOworICAg ICBRUHJpbnQ6OkR1cGxleE1vZGUgZHVwbGV4OworKyAgICBib29sIGR1cGxleFJlcXVlc3RlZEV4 cGxpY2l0bHkgPSBmYWxzZTsKKyB9OworIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcCBiL3F0 YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2liYXNlL3FzcWxfaWJhc2UuY3BwCitpbmRleCA2 N2U3MTU0ZmE2Li40MDg3NjE1MmU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3Nx bGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9z cWxkcml2ZXJzL2liYXNlL3FzcWxfaWJhc2UuY3BwCitAQCAtODE3LDcgKzgxNyw3IEBAIGJvb2wg UUlCYXNlUmVzdWx0UHJpdmF0ZTo6d3JpdGVBcnJheShpbnQgY29sdW1uLCBjb25zdCBRTGlzdDxR VmFyaWFudD4gJmxpc3QpCisgICAgIGJhLnJlc2l6ZShpbnQoYnVmTGVuKSk7CisgCisgICAgIGlm IChsaXN0LnNpemUoKSA+IGFycmF5U2l6ZSkgeworLSAgICAgICAgZXJyb3IgPSBRTGF0aW4xU3Ry aW5nKCJBcnJheSBzaXplIG1pc3NtYXRjaDogc2l6ZSBvZiAlMSBpcyAlMiwgc2l6ZSBvZiBwcm92 aWRlZCBsaXN0IGlzICUzIik7CisrICAgICAgICBlcnJvciA9IFFMYXRpbjFTdHJpbmcoIkFycmF5 IHNpemUgbWlzbWF0Y2g6IHNpemUgb2YgJTEgaXMgJTIsIHNpemUgb2YgcHJvdmlkZWQgbGlzdCBp cyAlMyIpOworICAgICAgICAgZXJyb3IgPSBlcnJvci5hcmcoUUxhdGluMVN0cmluZyhzcWxuYW1l KSkuYXJnKGFycmF5U2l6ZSkuYXJnKGxpc3Quc2l6ZSgpKTsKKyAgICAgICAgIHEtPnNldExhc3RF cnJvcihRU3FsRXJyb3IoZXJyb3IsIFFMYXRpbjFTdHJpbmcoIiIpLCBRU3FsRXJyb3I6OlN0YXRl bWVudEVycm9yKSk7CisgICAgICAgICByZXR1cm4gZmFsc2U7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvbXlzcWwvcXNxbF9teXNxbC5jcHAgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3FsX215c3FsLmNwcAoraW5kZXggN2NhMDU1ZWVh Mi4uNmJjOWQ0Njc1NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJz L215c3FsL3FzcWxfbXlzcWwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVy cy9teXNxbC9xc3FsX215c3FsLmNwcAorQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CisgICAg IHN0cnVjdCBRTXlGaWVsZAorICAgICB7CisgICAgICAgICBjaGFyICpvdXRGaWVsZCA9IG51bGxw dHI7CistICAgICAgICBNWVNRTF9GSUVMRCAqbXlGaWVsZCA9IG51bGxwdHI7CisrICAgICAgICBj b25zdCBNWVNRTF9GSUVMRCAqbXlGaWVsZCA9IG51bGxwdHI7CisgICAgICAgICBRTWV0YVR5cGU6 OlR5cGUgdHlwZSA9IFFNZXRhVHlwZTo6VW5rbm93blR5cGU7CisgICAgICAgICBteV9ib29sIG51 bGxJbmRpY2F0b3IgPSBmYWxzZTsKKyAgICAgICAgIHVsb25nIGJ1Zkxlbmd0aCA9IDB1bDsKK0BA IC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIGJvb2wgcUlzSW50ZWdlcihpbnQgdCkKKyB2b2lkIFFN WVNRTFJlc3VsdFByaXZhdGU6OmJpbmRCbG9icygpCisgeworICAgICBpbnQgaTsKKy0gICAgTVlT UUxfRklFTEQgKmZpZWxkSW5mbzsKKysgICAgY29uc3QgTVlTUUxfRklFTEQgKmZpZWxkSW5mbzsK KyAgICAgTVlTUUxfQklORCAqYmluZDsKKyAKKyAgICAgZm9yKGkgPSAwOyBpIDwgZmllbGRzLmNv dW50KCk7ICsraSkgeworQEAgLTM3OSw3ICszNzksNiBAQCB2b2lkIFFNWVNRTFJlc3VsdFByaXZh dGU6OmJpbmRCbG9icygpCisgYm9vbCBRTVlTUUxSZXN1bHRQcml2YXRlOjpiaW5kSW5WYWx1ZXMo KQorIHsKKyAgICAgTVlTUUxfQklORCAqYmluZDsKKy0gICAgY2hhciAqZmllbGQ7CisgICAgIGlu dCBpID0gMDsKKyAKKyAgICAgaWYgKCFtZXRhKQorQEAgLTM5MiwzNSArMzkxLDM0IEBAIGJvb2wg UU1ZU1FMUmVzdWx0UHJpdmF0ZTo6YmluZEluVmFsdWVzKCkKKyAgICAgaW5CaW5kcyA9IG5ldyBN WVNRTF9CSU5EW2ZpZWxkcy5zaXplKCldOworICAgICBtZW1zZXQoaW5CaW5kcywgMCwgZmllbGRz LnNpemUoKSAqIHNpemVvZihNWVNRTF9CSU5EKSk7CisgCistICAgIE1ZU1FMX0ZJRUxEICpmaWVs ZEluZm87CisrICAgIGNvbnN0IE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87CisgCisgICAgIHdoaWxl KChmaWVsZEluZm8gPSBteXNxbF9mZXRjaF9maWVsZChtZXRhKSkpIHsKKysgICAgICAgIGJpbmQg PSAmaW5CaW5kc1tpXTsKKysKKyAgICAgICAgIFFNeUZpZWxkICZmID0gZmllbGRzW2ldOworICAg ICAgICAgZi5teUZpZWxkID0gZmllbGRJbmZvOworLQorKyAgICAgICAgYmluZC0+YnVmZmVyX2xl bmd0aCA9IGYuYnVmTGVuZ3RoID0gZmllbGRJbmZvLT5sZW5ndGggKyAxOworKyAgICAgICAgYmlu ZC0+YnVmZmVyX3R5cGUgPSBmaWVsZEluZm8tPnR5cGU7CisgICAgICAgICBmLnR5cGUgPSBxRGVj b2RlTVlTUUxUeXBlKGZpZWxkSW5mby0+dHlwZSwgZmllbGRJbmZvLT5mbGFncyk7CisgICAgICAg ICBpZiAocUlzQmxvYihmaWVsZEluZm8tPnR5cGUpKSB7CisgICAgICAgICAgICAgLy8gdGhlIHNp emUgb2YgYSBibG9iLWZpZWxkIGlzIGF2YWlsYWJsZSBhcyBzb29uIGFzIHdlIGNhbGwKKyAgICAg ICAgICAgICAvLyBteXNxbF9zdG10X3N0b3JlX3Jlc3VsdCgpCisgICAgICAgICAgICAgLy8gYWZ0 ZXIgbXlzcWxfc3RtdF9leGVjKCkgaW4gUU1ZU1FMUmVzdWx0OjpleGVjKCkKKy0gICAgICAgICAg ICBmaWVsZEluZm8tPmxlbmd0aCA9IDA7CisrICAgICAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0 aCA9IGYuYnVmTGVuZ3RoID0gMDsKKyAgICAgICAgICAgICBoYXNCbG9icyA9IHRydWU7CisgICAg ICAgICB9IGVsc2UgaWYgKHFJc0ludGVnZXIoZi50eXBlKSkgeworLSAgICAgICAgICAgIGZpZWxk SW5mby0+bGVuZ3RoID0gODsKKysgICAgICAgICAgICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5i dWZMZW5ndGggPSA4OworICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICBmaWVsZEluZm8t PnR5cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKysgICAgICAgICAgICBiaW5kLT5idWZmZXJfdHlw ZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgICAgICAgfQorLSAgICAgICAgYmluZCA9ICZpbkJp bmRzW2ldOworLSAgICAgICAgZmllbGQgPSBuZXcgY2hhcltmaWVsZEluZm8tPmxlbmd0aCArIDFd OworLSAgICAgICAgbWVtc2V0KGZpZWxkLCAwLCBmaWVsZEluZm8tPmxlbmd0aCArIDEpOworIAor LSAgICAgICAgYmluZC0+YnVmZmVyX3R5cGUgPSBmaWVsZEluZm8tPnR5cGU7CistICAgICAgICBi aW5kLT5idWZmZXIgPSBmaWVsZDsKKy0gICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1 Zkxlbmd0aCA9IGZpZWxkSW5mby0+bGVuZ3RoICsgMTsKKyAgICAgICAgIGJpbmQtPmlzX251bGwg PSAmZi5udWxsSW5kaWNhdG9yOworICAgICAgICAgYmluZC0+bGVuZ3RoID0gJmYuYnVmTGVuZ3Ro OworICAgICAgICAgYmluZC0+aXNfdW5zaWduZWQgPSBmaWVsZEluZm8tPmZsYWdzICYgVU5TSUdO RURfRkxBRyA/IDEgOiAwOworLSAgICAgICAgZi5vdXRGaWVsZD1maWVsZDsKKysKKysgICAgICAg IGNoYXIgKmZpZWxkID0gbmV3IGNoYXJbYmluZC0+YnVmZmVyX2xlbmd0aCArIDFde307CisrICAg ICAgICBiaW5kLT5idWZmZXIgPSBmLm91dEZpZWxkID0gZmllbGQ7CisgCisgICAgICAgICArK2k7 CisgICAgIH0KK0BAIC0xMzY5LDIwICsxMzY3LDIwIEBAIGJvb2wgUU1ZU1FMRHJpdmVyOjpvcGVu KGNvbnN0IFFTdHJpbmcmIGRiLAorICAgICB9CisgCisgI2lmIE1ZU1FMX1ZFUlNJT05fSUQgPj0g NTAwMDcKKy0gICAgaWYgKG15c3FsX2dldF9jbGllbnRfdmVyc2lvbigpID49IDUwNTAzICYmIG15 c3FsX2dldF9zZXJ2ZXJfdmVyc2lvbihkLT5teXNxbCkgPj0gNTA1MDMpIHsKKy0gICAgICAgIC8v IGZvcmNlIHRoZSBjb21tdW5pY2F0aW9uIHRvIGJlIHV0ZjhtYjQgKG9ubHkgdXRmOG1iNCBzdXBw b3J0cyA0LWJ5dGUgY2hhcmFjdGVycykKKy0gICAgICAgIG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0 KGQtPm15c3FsLCAidXRmOG1iNCIpOworKyAgICAvLyBmb3JjZSB0aGUgY29tbXVuaWNhdGlvbiB0 byBiZSB1dGY4bWI0IChvbmx5IHV0ZjhtYjQgc3VwcG9ydHMgNC1ieXRlIGNoYXJhY3RlcnMpCisr ICAgIGlmIChteXNxbF9zZXRfY2hhcmFjdGVyX3NldChkLT5teXNxbCwgInV0ZjhtYjQiKSkgewor KyAgICAgICAgLy8gdGhpcyBmYWlsZWQsIHRyeSBmb3JjaW5nIGl0IHRvIHV0ZiAoQk1QIG9ubHkp CisrICAgICAgICBpZiAobXlzcWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4Iikp CisrICAgICAgICAgICAgcVdhcm5pbmcoKSA8PCAiTXlTUUw6IFVuYWJsZSB0byBzZXQgdGhlIGNs aWVudCBjaGFyYWN0ZXIgc2V0IHRvIHV0ZjguIjsKKyAjaWYgUVRfQ09ORklHKHRleHRjb2RlYykK Ky0gICAgICAgIGQtPnRjID0gUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lKCJVVEYtOCIpOworKyAg ICAgICAgZWxzZQorKyAgICAgICAgICAgIGQtPnRjID0gY29kZWMoZC0+bXlzcWwpOworICNlbmRp ZgorLSAgICB9IGVsc2UKKy0gICAgeworLSAgICAgICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRp b24gdG8gYmUgdXRmOAorLSAgICAgICAgbXlzcWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWws ICJ1dGY4Iik7CisrICAgIH0KKyAjaWYgUVRfQ09ORklHKHRleHRjb2RlYykKKy0gICAgICAgIGQt PnRjID0gY29kZWMoZC0+bXlzcWwpOworKyAgICBlbHNlCisrICAgICAgICBkLT50YyA9IFFUZXh0 Q29kZWM6OmNvZGVjRm9yTmFtZSgiVVRGLTgiKTsKKyAjZW5kaWYKKy0gICAgfQorICNlbmRpZiAg Ly8gTVlTUUxfVkVSU0lPTl9JRCA+PSA1MDAwNworIAorICAgICBkLT5wcmVwYXJlZFF1ZXJ5c0Vu YWJsZWQgPSBjaGVja1ByZXBhcmVkUXVlcmllcyhkLT5teXNxbCk7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQtMjQucG5nIGIvcXRiYXNl L3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnRlci0yNC5wbmcKK3NpbWlsYXJp dHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdl cy9wcmludC0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2Vz L3ByaW50ZXItMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvcHJpbnQtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvcHJpbnRlci0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZy b20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludC0zMi5wbmcKK3JlbmFtZSB0 byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXItMzIucG5nCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNp ZGVkLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXct cGFnZXMtZmFjaW5nLTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBz cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0yNC5wbmcKK3Jl bmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5n LTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3ZpZXctcGFnZS1zaWRlZC0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAw JQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Ut c2lkZWQtMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92 aWV3LXBhZ2VzLWZhY2luZy0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVsdGktMjQucG5nIGIvcXRiYXNlL3NyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5wbmcKK3Np bWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dz L2ltYWdlcy92aWV3LXBhZ2UtbXVsdGktMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9y dC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTI0LnBuZworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0z Mi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Vz LW92ZXJ2aWV3LTMyLnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0zMi5wbmcKK3JlbmFt ZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXct MzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvdmlldy1wYWdlLW9uZS0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dz L2ltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQor cmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25l LTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1w YWdlcy1zaW5nbGUtMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9uZS0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0zMi5wbmcKK3NpbWlsYXJpdHkg aW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92 aWV3LXBhZ2Utb25lLTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXBhZ2UtMjQucG5nIGIvcXRiYXNlL3NyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtcGFnZS0yNC5wbmcKK3NpbWlsYXJp dHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdl cy9maXQtcGFnZS0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3pvb20tZml0LXBhZ2UtMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXBhZ2UtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtcGFnZS0zMi5wbmcKK3NpbWlsYXJpdHkgaW5k ZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQt cGFnZS0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pv b20tZml0LXBhZ2UtMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRoLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAx MDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0 aC0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20t Zml0LXdpZHRoLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAw JQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgt MzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZp dC13aWR0aC0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5peC5jcHAgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5peC5jcHAKK2luZGV4IDc4ZTViOGQxZWYuLjJhMjg1 MTY3MTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdl c2V0dXBkaWFsb2dfdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcAorQEAgLTUzMiw2ICs1MzIsNyBAQCB2b2lkIFFQ YWdlU2V0dXBXaWRnZXQ6OnVwZGF0ZVdpZGdldCgpCisgdm9pZCBRUGFnZVNldHVwV2lkZ2V0Ojpz ZXR1cFByaW50ZXIoKSBjb25zdAorIHsKKyAgICAgbV9wcmludGVyLT5zZXRQYWdlTGF5b3V0KG1f cGFnZUxheW91dCk7CisrICAgIG1fcHJpbnRlci0+c2V0UGFnZU9yaWVudGF0aW9uKG1fcGFnZUxh eW91dC5vcmllbnRhdGlvbigpKTsKKyAjaWYgUVRfQ09ORklHKGN1cHMpCisgICAgIFFDVVBTU3Vw cG9ydDo6UGFnZXNQZXJTaGVldCBwYWdlc1BlclNoZWV0ID0gcXZhcmlhbnRfY2FzdDxRQ1VQU1N1 cHBvcnQ6OlBhZ2VzUGVyU2hlZXQ+KG1fdWkucGFnZXNQZXJTaGVldENvbWJvLT5jdXJyZW50RGF0 YSgpCisgKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3Fw cmludGRpYWxvZy5xcmMgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRp YWxvZy5xcmMKK2luZGV4IDVhNTc5YmFhNTUuLjEwYjhlMWQzNDEgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMKKysrKyBiL3F0YmFz ZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nLnFyYworQEAgLTEsOSArMSw5 IEBACisgPCFET0NUWVBFIFJDQz48UkNDIHZlcnNpb249IjEuMCI+CisgPHFyZXNvdXJjZSBwcmVm aXg9Ii9xdC1wcm9qZWN0Lm9yZy9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2ciPgorLTxmaWxl PmltYWdlcy9maXQtcGFnZS0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL2ZpdC1wYWdlLTMy LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvZml0LXdpZHRoLTI0LnBuZzwvZmlsZT4KKy08Zmls ZT5pbWFnZXMvZml0LXdpZHRoLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQt cGFnZS0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXBhZ2UtMzIucG5nPC9m aWxlPgorKzxmaWxlPmltYWdlcy96b29tLWZpdC13aWR0aC0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+ aW1hZ2VzL3pvb20tZml0LXdpZHRoLTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tZmly c3QtMjQucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9nby1maXJzdC0zMi5wbmc8L2ZpbGU+Cisg PGZpbGU+aW1hZ2VzL2dvLWxhc3QtMjQucG5nPC9maWxlPgorQEAgLTE4LDE0ICsxOCwxNCBAQAor IDxmaWxlPmltYWdlcy9sYXlvdXQtcG9ydHJhaXQtMzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdl cy9wYWdlLXNldHVwLTI0LnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvcGFnZS1zZXR1cC0zMi5w bmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ByaW50LTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFn ZXMvcHJpbnQtMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2UtbXVsdGktMjQu cG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2UtbXVsdGktMzIucG5nPC9maWxlPgor LTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utb25lLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMv dmlldy1wYWdlLW9uZS0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1zaWRl ZC0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0zMi5wbmc8L2Zp bGU+CisrPGZpbGU+aW1hZ2VzL3ByaW50ZXItMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy9w cmludGVyLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0y NC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nPC9m aWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0yNC5wbmc8L2ZpbGU+CisrPGZp bGU+aW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMv dmlldy1wYWdlcy1mYWNpbmctMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2Vz LWZhY2luZy0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3pvb20taW4tMjQucG5nPC9maWxl PgorIDxmaWxlPmltYWdlcy96b29tLWluLTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvem9v bS1vdXQtMjQucG5nPC9maWxlPgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvcXByaW50ZGlhbG9nX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5peC5jcHAKK2luZGV4IGM1Yjg0NWY0ZWMuLjVhNWJhMWQw YTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRp YWxvZ191bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJp bnRkaWFsb2dfdW5peC5jcHAKK0BAIC03MDIsMTMgKzcwMiwxNCBAQCB2b2lkIFFQcmludERpYWxv Z1ByaXZhdGU6OnNlbGVjdFByaW50ZXIoY29uc3QgUVByaW50ZXI6Ok91dHB1dEZvcm1hdCBvdXRw dXRGb3JtYQorICAgICAgICAgZWxzZQorICAgICAgICAgICAgIG9wdGlvbnMuZ3JheXNjYWxlLT5z ZXRDaGVja2VkKHRydWUpOworIAorLSAgICAgICAgLy8ga2VlcCBkdXBsZXggdmFsdWUgZXhwbGlj aXRseSBzZXQgYnkgdXNlciwgaWYgYW55LCBhbmQgc2VsZWN0ZWQgcHJpbnRlciBzdXBwb3J0cyBp dDsKKy0gICAgICAgIC8vIHVzZSBkZXZpY2UgZGVmYXVsdCBvdGhlcndpc2UKKysgICAgICAgIC8v IGR1cGxleCBwcmlvcml0aWVzIHRvIGJlIGFzIGZvbGxvd3M6CisrICAgICAgICAvLyAxKSBhIHVz ZXItc2VsZWN0ZWQgZHVwbGV4IHZhbHVlIGluIHRoZSBkaWFsb2cgaGFzIGhpZ2hlc3QgcHJvcml0 eQorKyAgICAgICAgLy8gMikgZHVwbGV4IHZhbHVlIHNldCBpbiB0aGUgUVByaW50ZXIKKyAgICAg ICAgIFFQcmludDo6RHVwbGV4TW9kZSBkdXBsZXg7CisgICAgICAgICBpZiAoZXhwbGljaXREdXBs ZXhNb2RlICE9IFFQcmludDo6RHVwbGV4QXV0byAmJiBzdXBwb3J0ZWREdXBsZXhNb2RlLmNvbnRh aW5zKGV4cGxpY2l0RHVwbGV4TW9kZSkpCisgICAgICAgICAgICAgZHVwbGV4ID0gZXhwbGljaXRE dXBsZXhNb2RlOworICAgICAgICAgZWxzZQorLSAgICAgICAgICAgIGR1cGxleCA9IHRvcC0+ZC0+ bV9jdXJyZW50UHJpbnREZXZpY2UuZGVmYXVsdER1cGxleE1vZGUoKTsKKysgICAgICAgICAgICBk dXBsZXggPSBzdGF0aWNfY2FzdDxRUHJpbnQ6OkR1cGxleE1vZGU+KHAtPmR1cGxleCgpKTsKKyAg ICAgICAgIHN3aXRjaCAoZHVwbGV4KSB7CisgICAgICAgICBjYXNlIFFQcmludDo6RHVwbGV4Tm9u ZToKKyAgICAgICAgICAgICBvcHRpb25zLm5vRHVwbGV4LT5zZXRDaGVja2VkKHRydWUpOyBicmVh azsKK0BAIC0xMjQyLDEwICsxMjQzLDEwIEBAIHZvaWQgUVVuaXhQcmludFdpZGdldFByaXZhdGU6 Ol9xX3ByaW50ZXJDaGFuZ2VkKGludCBpbmRleCkKKyAgICAgICAgICAgICBRU3RyaW5nIGZpbGVu YW1lID0gd2lkZ2V0LmZpbGVuYW1lLT50ZXh0KCk7CisgICAgICAgICAgICAgd2lkZ2V0LmZpbGVu YW1lLT5zZXRUZXh0KGZpbGVuYW1lKTsKKyAgICAgICAgICAgICB3aWRnZXQubE91dHB1dC0+c2V0 RW5hYmxlZCh0cnVlKTsKKy0gICAgICAgICAgICBpZiAob3B0aW9uc1BhbmUpCistICAgICAgICAg ICAgICAgIG9wdGlvbnNQYW5lLT5zZWxlY3RQcmludGVyKFFQcmludGVyOjpQZGZGb3JtYXQpOwor ICAgICAgICAgICAgIHByaW50ZXItPnNldE91dHB1dEZvcm1hdChRUHJpbnRlcjo6UGRmRm9ybWF0 KTsKKyAgICAgICAgICAgICBtX2N1cnJlbnRQcmludERldmljZSA9IFFQcmludERldmljZSgpOwor KyAgICAgICAgICAgIGlmIChvcHRpb25zUGFuZSkKKysgICAgICAgICAgICAgICAgb3B0aW9uc1Bh bmUtPnNlbGVjdFByaW50ZXIoUVByaW50ZXI6OlBkZkZvcm1hdCk7CisgICAgICAgICAgICAgcmV0 dXJuOworICAgICAgICAgfQorICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nLmNwcCBiL3F0YmFzZS9zcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAKK2luZGV4IDM5NTc1ZDVmNTcu LjIzYjdlODk1MzggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dz L3FwcmludHByZXZpZXdkaWFsb2cuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3BwCitAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQg UVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OmluaXQoUVByaW50ZXIgKl9wcmludGVyKQorIHN0 YXRpYyBpbmxpbmUgdm9pZCBxdF9zZXR1cEFjdGlvbkljb24oUUFjdGlvbiAqYWN0aW9uLCBRTGF0 aW4xU3RyaW5nIG5hbWUpCisgeworICAgICBRTGF0aW4xU3RyaW5nIGltYWdlUHJlZml4KCI6L3F0 LXByb2plY3Qub3JnL2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy9pbWFnZXMvIik7CistICAg IFFJY29uIGljb247CisrICAgIFFJY29uIGljb24gPSBRSWNvbjo6ZnJvbVRoZW1lKG5hbWUpOwor ICAgICBpY29uLmFkZEZpbGUoaW1hZ2VQcmVmaXggKyBuYW1lICsgUUxhdGluMVN0cmluZygiLTI0 LnBuZyIpLCBRU2l6ZSgyNCwgMjQpKTsKKyAgICAgaWNvbi5hZGRGaWxlKGltYWdlUHJlZml4ICsg bmFtZSArIFFMYXRpbjFTdHJpbmcoIi0zMi5wbmciKSwgUVNpemUoMzIsIDMyKSk7CisgICAgIGFj dGlvbi0+c2V0SWNvbihpY29uKTsKK0BAIC0zODMsOCArMzgzLDggQEAgdm9pZCBRUHJpbnRQcmV2 aWV3RGlhbG9nUHJpdmF0ZTo6c2V0dXBBY3Rpb25zKCkKKyAgICAgZml0UGFnZUFjdGlvbi0+c2V0 T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJmaXRQYWdlQWN0aW9uIikpOworICAgICBmaXRXaWR0 aEFjdGlvbi0+c2V0Q2hlY2thYmxlKHRydWUpOworICAgICBmaXRQYWdlQWN0aW9uLT5zZXRDaGVj a2FibGUodHJ1ZSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihmaXRXaWR0aEFjdGlvbiwgUUxh dGluMVN0cmluZygiZml0LXdpZHRoIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0UGFn ZUFjdGlvbiwgUUxhdGluMVN0cmluZygiZml0LXBhZ2UiKSk7CisrICAgIHF0X3NldHVwQWN0aW9u SWNvbihmaXRXaWR0aEFjdGlvbiwgUUxhdGluMVN0cmluZygiem9vbS1maXQtd2lkdGgiKSk7Cisr ICAgIHF0X3NldHVwQWN0aW9uSWNvbihmaXRQYWdlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ6b29t LWZpdC1wYWdlIikpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KGZpdEdyb3VwLCBTSUdOQUwodHJp Z2dlcmVkKFFBY3Rpb24qKSksIHEsIFNMT1QoX3FfZml0KFFBY3Rpb24qKSkpOworIAorICAgICAv LyBab29tCitAQCAtNDEwLDkgKzQxMCw5IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZh dGU6OnNldHVwQWN0aW9ucygpCisgICAgIHNpbmdsZU1vZGVBY3Rpb24gPSBtb2RlR3JvdXAtPmFk ZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ci LCAiU2hvdyBzaW5nbGUgcGFnZSIpKTsKKyAgICAgZmFjaW5nTW9kZUFjdGlvbiA9IG1vZGVHcm91 cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0Rp YWxvZyIsICJTaG93IGZhY2luZyBwYWdlcyIpKTsKKyAgICAgb3ZlcnZpZXdNb2RlQWN0aW9uID0g bW9kZUdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQ cmV2aWV3RGlhbG9nIiwgIlNob3cgb3ZlcnZpZXcgb2YgYWxsIHBhZ2VzIikpOworLSAgICBxdF9z ZXR1cEFjdGlvbkljb24oc2luZ2xlTW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdl LW9uZSIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKGZhY2luZ01vZGVBY3Rpb24sIFFMYXRp bjFTdHJpbmcoInZpZXctcGFnZS1zaWRlZCIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKG92 ZXJ2aWV3TW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlLW11bHRpIikpOworKyAg ICBxdF9zZXR1cEFjdGlvbkljb24oc2luZ2xlTW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmll dy1wYWdlcy1zaW5nbGUiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihmYWNpbmdNb2RlQWN0 aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2VzLWZhY2luZyIpKTsKKysgICAgcXRfc2V0dXBB Y3Rpb25JY29uKG92ZXJ2aWV3TW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlcy1v dmVydmlldyIpKTsKKyAgICAgc2luZ2xlTW9kZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0aW4x U3RyaW5nKCJzaW5nbGVNb2RlQWN0aW9uIikpOworICAgICBmYWNpbmdNb2RlQWN0aW9uLT5zZXRP YmplY3ROYW1lKFFMYXRpbjFTdHJpbmcoImZhY2luZ01vZGVBY3Rpb24iKSk7CisgICAgIG92ZXJ2 aWV3TW9kZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJvdmVydmlld01vZGVB Y3Rpb24iKSk7CitAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1By aXZhdGU6OnNldHVwQWN0aW9ucygpCisgICAgIHByaW50ZXJHcm91cCA9IG5ldyBRQWN0aW9uR3Jv dXAocSk7CisgICAgIHByaW50QWN0aW9uID0gcHJpbnRlckdyb3VwLT5hZGRBY3Rpb24oUUNvcmVB cHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlByaW50IikpOwor ICAgICBwYWdlU2V0dXBBY3Rpb24gPSBwcmludGVyR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxp Y2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiUGFnZSBzZXR1cCIpKTsK Ky0gICAgcXRfc2V0dXBBY3Rpb25JY29uKHByaW50QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwcmlu dCIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKHByaW50QWN0aW9uLCBRTGF0aW4xU3RyaW5n KCJwcmludGVyIikpOworICAgICBxdF9zZXR1cEFjdGlvbkljb24ocGFnZVNldHVwQWN0aW9uLCBR TGF0aW4xU3RyaW5nKCJwYWdlLXNldHVwIikpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHByaW50 QWN0aW9uLCBTSUdOQUwodHJpZ2dlcmVkKGJvb2wpKSwgcSwgU0xPVChfcV9wcmludCgpKSk7Cisg ICAgIFFPYmplY3Q6OmNvbm5lY3QocGFnZVNldHVwQWN0aW9uLCBTSUdOQUwodHJpZ2dlcmVkKGJv b2wpKSwgcSwgU0xPVChfcV9wYWdlU2V0dXAoKSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv c3FsL2tlcm5lbC9xc3FscXVlcnkuY3BwIGIvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVy eS5jcHAKK2luZGV4IDMyYzYxNjZjNzkuLjYwYWZlZjEwYzMgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5LmNwcAorKysrIGIvcXRiYXNlL3NyYy9zcWwva2VybmVs L3FzcWxxdWVyeS5jcHAKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg KioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHly aWdodCAoQykgMjAyMiBUaGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93 d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0 U3FsIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC0zNzcsNiArMzc3LDEwIEBAIGJvb2wg UVNxbFF1ZXJ5OjpleGVjKGNvbnN0IFFTdHJpbmcmIHF1ZXJ5KQorICAgICBRRWxhcHNlZFRpbWVy IHQ7CisgICAgIHQuc3RhcnQoKTsKKyAjZW5kaWYKKysgICAgaWYgKCFkcml2ZXIoKSkgeworKyAg ICAgICAgcVdhcm5pbmcoIlFTcWxRdWVyeTo6ZXhlYzogY2FsbGVkIGJlZm9yZSBkcml2ZXIgaGFz IGJlZW4gc2V0IHVwIik7CisrICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKyAgICAgaWYg KGQtPnJlZi5sb2FkUmVsYXhlZCgpICE9IDEpIHsKKyAgICAgICAgIGJvb2wgZm8gPSBpc0Zvcndh cmRPbmx5KCk7CisgICAgICAgICAqdGhpcyA9IFFTcWxRdWVyeShkcml2ZXIoKS0+Y3JlYXRlUmVz dWx0KCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9k ZWx0ZXN0ZXIuY3BwIGIvcXRiYXNlL3NyYy90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rl ci5jcHAKK2luZGV4IDhlZmI5YzUzZDQuLmNlMDYyZjY2ZDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK0BAIC00NTQsNyArNDU0LDcg QEAgdm9pZCBRQWJzdHJhY3RJdGVtTW9kZWxUZXN0ZXJQcml2YXRlOjpwYXJlbnQoKQorIAorICAg ICAvLyBDb21tb24gZXJyb3IgdGVzdCAjMiwgbWFrZSBzdXJlIHRoYXQgYSBzZWNvbmQgbGV2ZWwg aW5kZXggaGFzIGEgcGFyZW50CisgICAgIC8vIHRoYXQgaXMgdGhlIGZpcnN0IGxldmVsIGluZGV4 LgorLSAgICBpZiAobW9kZWwtPnJvd0NvdW50KHRvcEluZGV4KSA+IDApIHsKKysgICAgaWYgKG1v ZGVsLT5yb3dDb3VudCh0b3BJbmRleCkgPiAwICYmIG1vZGVsLT5jb2x1bW5Db3VudCh0b3BJbmRl eCkgPiAwKSB7CisgICAgICAgICBRTW9kZWxJbmRleCBjaGlsZEluZGV4ID0gbW9kZWwtPmluZGV4 KDAsIDAsIHRvcEluZGV4KTsKKyAgICAgICAgIE1PREVMVEVTVEVSX1ZFUklGWShjaGlsZEluZGV4 LmlzVmFsaWQoKSk7CisgICAgICAgICBNT0RFTFRFU1RFUl9DT01QQVJFKG1vZGVsLT5wYXJlbnQo Y2hpbGRJbmRleCksIHRvcEluZGV4KTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIv cWFzY2lpa2V5LmNwcCBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwCitpbmRleCA5 YTMwOGRhMmJjLi45MzQ5OGIyNTZmIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy90ZXN0bGliL3Fh c2NpaWtleS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwCitAQCAt NDk4LDYgKzQ5OCwxMSBAQCBjaGFyIFFUZXN0OjprZXlUb0FzY2lpKFF0OjpLZXkga2V5KQorICAg ICBjYXNlIFF0OjpLZXlfTGF1bmNoRSA6IHJldHVybiAwOyAvLyA9IDB4MTBiMCwKKyAgICAgY2Fz ZSBRdDo6S2V5X0xhdW5jaEYgOiByZXR1cm4gMDsgLy8gPSAweDEwYjEsCisgCisrICAgIC8vIEtl eXBhZCBuYXZpZ2F0aW9uIGtleXMKKysgICAgY2FzZSBRdDo6S2V5X1NlbGVjdCA6IHJldHVybiAw OyAvLyA9IDB4MDEwMTAwMDAKKysgICAgY2FzZSBRdDo6S2V5X1llcyA6IHJldHVybiAwOyAvLyA9 IDB4MDEwMTAwMDEKKysgICAgY2FzZSBRdDo6S2V5X05vIDogcmV0dXJuIDA7IC8vID0gMHgwMTAx MDAwMgorKworICAgICBkZWZhdWx0OiBRVEVTVF9BU1NFUlQoZmFsc2UpOyByZXR1cm4gMDsKKyAg ICAgfQorIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3Bw IGIvcXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVzdWx0LmNwcAoraW5kZXggODgwMjhhYWM2ZS4u MmU4OTkzMDc3NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5j cHAKKysrKyBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAKK0BAIC0yNTEsNyAr MjUxLDggQEAgYm9vbCBRVGVzdFJlc3VsdDo6dmVyaWZ5KGJvb2wgc3RhdGVtZW50LCBjb25zdCBj aGFyICpzdGF0ZW1lbnRTdHIsCisgeworICAgICBRVEVTVF9BU1NFUlQoc3RhdGVtZW50U3RyKTsK KyAKKy0gICAgY2hhciBtc2dbMTAyNF0gPSB7J1wwJ307CisrICAgIGNoYXIgbXNnWzEwMjRdOwor KyAgICBtc2dbMF0gPSAnXDAnOworIAorICAgICBpZiAoUVRlc3RMb2c6OnZlcmJvc2VMZXZlbCgp ID49IDIpIHsKKyAgICAgICAgIHFzbnByaW50Zihtc2csIDEwMjQsICJRVkVSSUZZKCVzKSIsIHN0 YXRlbWVudFN0cik7CitAQCAtMzA5LDcgKzMxMCw4IEBAIHN0YXRpYyBib29sIGNvbXBhcmVIZWxw ZXIoYm9vbCBzdWNjZXNzLCBjb25zdCBjaGFyICpmYWlsdXJlTXNnLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9vbCBoYXNWYWx1ZXMgPSB0cnVlKQorIHsKKyAgICAgY29uc3Qgc2l6ZV90 IG1heE1zZ0xlbiA9IDEwMjQ7CistICAgIGNoYXIgbXNnW21heE1zZ0xlbl0gPSB7J1wwJ307Cisr ICAgIGNoYXIgbXNnW21heE1zZ0xlbl07CisrICAgIG1zZ1swXSA9ICdcMCc7CisgCisgICAgIFFU RVNUX0FTU0VSVChleHBlY3RlZCk7CisgICAgIFFURVNUX0FTU0VSVChhY3R1YWwpOworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5jcHAgYi9xdGJh c2Uvc3JjL3dpZGdldHMvZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwCitpbmRleCA0MjQ3NzMxMjc1 Li5jYjMyNWJlODVjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNv bG9yZGlhbG9nLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlh bG9nLmNwcAorQEAgLTc4LDcgKzc4LDEwIEBACisgI2luY2x1ZGUgInF3aW5kb3cuaCIKKyAKKyAj aW5jbHVkZSAicHJpdmF0ZS9xZGlhbG9nX3AuaCIKKysjaW5jbHVkZSAicHJpdmF0ZS9xZ3VpYXBw bGljYXRpb25fcC5oIgorIAorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3Jtc2VydmljZXMuaD4KKysj aW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWludGVncmF0aW9uLmg+CisgI2luY2x1ZGUgPGFsZ29yaXRo bT4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKK0BAIC0xNjExLDYgKzE2MTQsMjAgQEAgdm9pZCBR Q29sb3JEaWFsb2dQcml2YXRlOjpfcV9uZXdTdGFuZGFyZChpbnQgciwgaW50IGMpCisgdm9pZCBR Q29sb3JEaWFsb2dQcml2YXRlOjpfcV9waWNrU2NyZWVuQ29sb3IoKQorIHsKKyAgICAgUV9RKFFD b2xvckRpYWxvZyk7CisrCisrICAgIGF1dG8gKnBsYXRmb3JtU2VydmljZXMgPSBRR3VpQXBwbGlj YXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPnNlcnZpY2VzKCk7CisrICAgIGlm IChwbGF0Zm9ybVNlcnZpY2VzLT5oYXNDYXBhYmlsaXR5KFFQbGF0Zm9ybVNlcnZpY2VzOjpDYXBh YmlsaXR5OjpDb2xvclBpY2tpbmcpKSB7CisrICAgICAgICBpZiAoYXV0byAqY29sb3JQaWNrZXIg PSBwbGF0Zm9ybVNlcnZpY2VzLT5jb2xvclBpY2tlcihxLT53aW5kb3dIYW5kbGUoKSkpIHsKKysg ICAgICAgICAgICBxLT5jb25uZWN0KGNvbG9yUGlja2VyLCAmUVBsYXRmb3JtU2VydmljZUNvbG9y UGlja2VyOjpjb2xvclBpY2tlZCwgcSwKKysgICAgICAgICAgICAgICAgICAgICAgIFtxLCBjb2xv clBpY2tlcl0oY29uc3QgUUNvbG9yICZjb2xvcikgeworKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbG9yUGlja2VyLT5kZWxldGVMYXRlcigpOworKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHEtPnNldEN1cnJlbnRDb2xvcihjb2xvcik7CisrICAgICAgICAgICAgICAgICAgICAgICB9 KTsKKysgICAgICAgICAgICBjb2xvclBpY2tlci0+cGlja0NvbG9yKCk7CisrICAgICAgICAgICAg cmV0dXJuOworKyAgICAgICAgfQorKyAgICB9CisrCisgICAgIGlmICghY29sb3JQaWNraW5nRXZl bnRGaWx0ZXIpCisgICAgICAgICBjb2xvclBpY2tpbmdFdmVudEZpbHRlciA9IG5ldyBRQ29sb3JQ aWNraW5nRXZlbnRGaWx0ZXIodGhpcywgcSk7CisgICAgIHEtPmluc3RhbGxFdmVudEZpbHRlcihj b2xvclBpY2tpbmdFdmVudEZpbHRlcik7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRz L2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVsZWdhdGUuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRz L2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVsZWdhdGUuY3BwCitpbmRleCBlMTIwODE3ZWRjLi44 ZWEzNmI1NDI3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJz dHJhY3RpdGVtZGVsZWdhdGUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdz L3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAKK0BAIC00MDAsMTIgKzQwMCw3IEBAIGJvb2wgUUFi c3RyYWN0SXRlbURlbGVnYXRlOjpoZWxwRXZlbnQoUUhlbHBFdmVudCAqZXZlbnQsCisgICAgICAg ICBjb25zdCBRU3RyaW5nIHRvb2x0aXAgPSBpbmRleC5pc1ZhbGlkKCkgPworICAgICAgICAgICAg ICAgZC0+dGV4dEZvclJvbGUoUXQ6OlRvb2xUaXBSb2xlLCBpbmRleC5kYXRhKFF0OjpUb29sVGlw Um9sZSksIG9wdGlvbi5sb2NhbGUsIHByZWNpc2lvbikgOgorICAgICAgICAgICAgICAgUVN0cmlu ZygpOworLSAgICAgICAgUVJlY3QgcmVjdDsKKy0gICAgICAgIGlmIChpbmRleC5pc1ZhbGlkKCkp IHsKKy0gICAgICAgICAgICBjb25zdCBRUmVjdCByID0gdmlldy0+dmlzdWFsUmVjdChpbmRleCk7 CistICAgICAgICAgICAgcmVjdCA9IFFSZWN0KHZpZXctPm1hcFRvR2xvYmFsKHIudG9wTGVmdCgp KSwgci5zaXplKCkpOworLSAgICAgICAgfQorLSAgICAgICAgUVRvb2xUaXA6OnNob3dUZXh0KGhl LT5nbG9iYWxQb3MoKSwgdG9vbHRpcCwgdmlldywgcmVjdCk7CisrICAgICAgICBRVG9vbFRpcDo6 c2hvd1RleHQoaGUtPmdsb2JhbFBvcygpLCB0b29sdGlwLCB2aWV3LT52aWV3cG9ydCgpLCBvcHRp b24ucmVjdCk7CisgICAgICAgICBldmVudC0+c2V0QWNjZXB0ZWQoIXRvb2x0aXAuaXNFbXB0eSgp KTsKKyAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv d2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVt dmlld3MvcWxpc3R2aWV3LmNwcAoraW5kZXggMmIzNDQ3NjY0Mi4uZWViZmFhMDMwZSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcAorKysrIGIv cXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xbGlzdHZpZXcuY3BwCitAQCAtMzM4Niw2ICsz Mzg2LDcgQEAgdm9pZCBRSWNvbk1vZGVWaWV3QmFzZTo6dXBkYXRlQ29udGVudHNTaXplKCkKKyAq LworIHZvaWQgUUxpc3RWaWV3OjpjdXJyZW50Q2hhbmdlZChjb25zdCBRTW9kZWxJbmRleCAmY3Vy cmVudCwgY29uc3QgUU1vZGVsSW5kZXggJnByZXZpb3VzKQorIHsKKysgICAgUUFic3RyYWN0SXRl bVZpZXc6OmN1cnJlbnRDaGFuZ2VkKGN1cnJlbnQsIHByZXZpb3VzKTsKKyAjaWZuZGVmIFFUX05P X0FDQ0VTU0lCSUxJVFkKKyAgICAgaWYgKFFBY2Nlc3NpYmxlOjppc0FjdGl2ZSgpKSB7CisgICAg ICAgICBpZiAoY3VycmVudC5pc1ZhbGlkKCkpIHsKK0BAIC0zMzk2LDcgKzMzOTcsNiBAQCB2b2lk IFFMaXN0Vmlldzo6Y3VycmVudENoYW5nZWQoY29uc3QgUU1vZGVsSW5kZXggJmN1cnJlbnQsIGNv bnN0IFFNb2RlbEluZGV4ICZwcgorICAgICAgICAgfQorICAgICB9CisgI2VuZGlmCistICAgIFFB YnN0cmFjdEl0ZW1WaWV3OjpjdXJyZW50Q2hhbmdlZChjdXJyZW50LCBwcmV2aW91cyk7CisgfQor IAorIC8qIQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxl dmlldy5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwCitp bmRleCA5MzRhYzU4MWIyLi5mNzliYjI0MjQ5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRn ZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0 ZW12aWV3cy9xdGFibGV2aWV3LmNwcAorQEAgLTEwMTMsNiArMTAxMyw3IEBAIHZvaWQgUVRhYmxl Vmlld1ByaXZhdGU6OmRyYXdDZWxsKFFQYWludGVyICpwYWludGVyLCBjb25zdCBRU3R5bGVPcHRp b25WaWV3SXRlbSAmCisgaW50IFFUYWJsZVZpZXdQcml2YXRlOjp3aWR0aEhpbnRGb3JJbmRleChj b25zdCBRTW9kZWxJbmRleCAmaW5kZXgsIGludCBoaW50LCBjb25zdCBRU3R5bGVPcHRpb25WaWV3 SXRlbSAmb3B0aW9uKSBjb25zdAorIHsKKyAgICAgUV9RKGNvbnN0IFFUYWJsZVZpZXcpOworKyAg ICBjb25zdCBpbnQgb2xkSGludCA9IGhpbnQ7CisgICAgIFFXaWRnZXQgKmVkaXRvciA9IGVkaXRv ckZvckluZGV4KGluZGV4KS53aWRnZXQuZGF0YSgpOworICAgICBpZiAoZWRpdG9yICYmIHBlcnNp c3RlbnQuY29udGFpbnMoZWRpdG9yKSkgeworICAgICAgICAgaGludCA9IHFNYXgoaGludCwgZWRp dG9yLT5zaXplSGludCgpLndpZHRoKCkpOworQEAgLTEwMjEsNiArMTAyMiwxNyBAQCBpbnQgUVRh YmxlVmlld1ByaXZhdGU6OndpZHRoSGludEZvckluZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRl eCwgaW50IGhpbnQsIGNvbgorICAgICAgICAgaGludCA9IHFCb3VuZChtaW4sIGhpbnQsIG1heCk7 CisgICAgIH0KKyAgICAgaGludCA9IHFNYXgoaGludCwgcS0+aXRlbURlbGVnYXRlKGluZGV4KS0+ c2l6ZUhpbnQob3B0aW9uLCBpbmRleCkud2lkdGgoKSk7CisrCisrICAgIGlmIChoYXNTcGFucygp KSB7CisrICAgICAgICBhdXRvIHNwYW4gPSBzcGFucy5zcGFuQXQoaW5kZXguY29sdW1uKCksIGlu ZGV4LnJvdygpKTsKKysgICAgICAgIGlmIChzcGFuICYmIHNwYW4tPm1fbGVmdCA9PSBpbmRleC5j b2x1bW4oKSAmJiBzcGFuLT5tX3RvcCA9PSBpbmRleC5yb3coKSkgeworKyAgICAgICAgICAgIC8v IHNwYW5zIGFyZSBzY3Jld2VkIHVwIHdoZW4gc2VjdGlvbnMgYXJlIG1vdmVkCisrICAgICAgICAg ICAgY29uc3QgYXV0byBsZWZ0ID0gbG9naWNhbENvbHVtbihzcGFuLT5tX2xlZnQpOworKyAgICAg ICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHNwYW4tPndpZHRoKCk7ICsraSkKKysgICAgICAg ICAgICAgICBoaW50IC09IHEtPmNvbHVtbldpZHRoKHZpc3VhbENvbHVtbihsZWZ0ICsgaSkpOwor KyAgICAgICAgfQorKyAgICAgICAgaGludCA9IHN0ZDo6bWF4KGhpbnQsIG9sZEhpbnQpOworKyAg ICB9CisgICAgIHJldHVybiBoaW50OworIH0KKyAKK0BAIC0xMDUzLDYgKzEwNjUsMTEgQEAgaW50 IFFUYWJsZVZpZXdQcml2YXRlOjpoZWlnaHRIaW50Rm9ySW5kZXgoY29uc3QgUU1vZGVsSW5kZXgg JmluZGV4LCBpbnQgaGludCwgUVMKKyAgICAgICAgIG9wdGlvbi5yZWN0LnNldEhlaWdodChoZWln aHQpOworICAgICAgICAgb3B0aW9uLnJlY3Quc2V0WChxLT5jb2x1bW5WaWV3cG9ydFBvc2l0aW9u KGluZGV4LmNvbHVtbigpKSk7CisgICAgICAgICBvcHRpb24ucmVjdC5zZXRXaWR0aChxLT5jb2x1 bW5XaWR0aChpbmRleC5jb2x1bW4oKSkpOworKyAgICAgICAgaWYgKGhhc1NwYW5zKCkpIHsKKysg ICAgICAgICAgICBhdXRvIHNwYW4gPSBzcGFucy5zcGFuQXQoaW5kZXguY29sdW1uKCksIGluZGV4 LnJvdygpKTsKKysgICAgICAgICAgICBpZiAoc3BhbiAmJiBzcGFuLT5tX2xlZnQgPT0gaW5kZXgu Y29sdW1uKCkgJiYgc3Bhbi0+bV90b3AgPT0gaW5kZXgucm93KCkpCisrICAgICAgICAgICAgICAg IG9wdGlvbi5yZWN0LnNldFdpZHRoKHN0ZDo6bWF4KG9wdGlvbi5yZWN0LndpZHRoKCksIHZpc3Vh bFNwYW5SZWN0KCpzcGFuKS53aWR0aCgpKSk7CisrICAgICAgICB9CisgICAgICAgICAvLyAxcHgg bGVzcyBzcGFjZSB3aGVuIGdyaWQgaXMgc2hvd24gKHNlZSBkcmF3Q2VsbCkKKyAgICAgICAgIGlm IChzaG93R3JpZCkKKyAgICAgICAgICAgICBvcHRpb24ucmVjdC5zZXRXaWR0aChvcHRpb24ucmVj dC53aWR0aCgpIC0gMSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9x YWN0aW9uLmggYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3FhY3Rpb24uaAoraW5kZXggMjU4 YTFlYTBhMC4uNzM3YzFlODI4NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJu ZWwvcWFjdGlvbi5oCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3FhY3Rpb24uaAor QEAgLTgxLDcgKzgxLDcgQEAgY2xhc3MgUV9XSURHRVRTX0VYUE9SVCBRQWN0aW9uIDogcHVibGlj IFFPYmplY3QKKyAgICAgUV9QUk9QRVJUWShNZW51Um9sZSBtZW51Um9sZSBSRUFEIG1lbnVSb2xl IFdSSVRFIHNldE1lbnVSb2xlIE5PVElGWSBjaGFuZ2VkKQorICAgICBRX1BST1BFUlRZKGJvb2wg aWNvblZpc2libGVJbk1lbnUgUkVBRCBpc0ljb25WaXNpYmxlSW5NZW51IFdSSVRFIHNldEljb25W aXNpYmxlSW5NZW51IE5PVElGWSBjaGFuZ2VkKQorICAgICBRX1BST1BFUlRZKGJvb2wgc2hvcnRj dXRWaXNpYmxlSW5Db250ZXh0TWVudSBSRUFEIGlzU2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVu dSBXUklURSBzZXRTaG9ydGN1dFZpc2libGVJbkNvbnRleHRNZW51IE5PVElGWSBjaGFuZ2VkKQor LSAgICBRX1BST1BFUlRZKFByaW9yaXR5IHByaW9yaXR5IFJFQUQgcHJpb3JpdHkgV1JJVEUgc2V0 UHJpb3JpdHkpCisrICAgIFFfUFJPUEVSVFkoUHJpb3JpdHkgcHJpb3JpdHkgUkVBRCBwcmlvcml0 eSBXUklURSBzZXRQcmlvcml0eSBOT1RJRlkgY2hhbmdlZCkKKyAKKyBwdWJsaWM6CisgICAgIC8v IG5vdGUgdGhpcyBpcyBjb3BpZWQgaW50byBxcGxhdGZvcm1tZW51LmgsIHdoaWNoIG11c3Qgc3Rh eSBpbiBzeW5jCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0 LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldC5jcHAKK2luZGV4IDllYmEx ZTAwMWUuLjI2ZjZkMjdlMTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVs L3F3aWRnZXQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3Bw CitAQCAtNTI5Niw3ICs1Mjk2LDcgQEAgdm9pZCBRV2lkZ2V0UHJpdmF0ZTo6ZHJhd1dpZGdldChR UGFpbnREZXZpY2UgKnBkZXYsIGNvbnN0IFFSZWdpb24gJnJnbiwgY29uc3QgUVAKKyAgICAgICAg IFFXaWRnZXRFZmZlY3RTb3VyY2VQcml2YXRlICpzb3VyY2VkID0gc3RhdGljX2Nhc3Q8UVdpZGdl dEVmZmVjdFNvdXJjZVByaXZhdGUgKj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc291cmNlLT5kX2Z1bmMoKSk7CisgICAgICAgICBp ZiAoIXNvdXJjZWQtPmNvbnRleHQpIHsKKy0gICAgICAgICAgICBjb25zdCBRUmVnaW9uIGVmZmVj dFJnbihyZ24uYm91bmRpbmdSZWN0KCkpOworKyAgICAgICAgICAgIGNvbnN0IFFSZWdpb24gZWZm ZWN0UmduKChmbGFncyAmIFVzZUVmZmVjdFJlZ2lvbkJvdW5kcykgPyByZ24uYm91bmRpbmdSZWN0 KCkgOiByZ24pOworICAgICAgICAgICAgIFFXaWRnZXRQYWludENvbnRleHQgY29udGV4dChwZGV2 LCBlZmZlY3RSZ24sIG9mZnNldCwgZmxhZ3MsIHNoYXJlZFBhaW50ZXIsIHJlcGFpbnRNYW5hZ2Vy KTsKKyAgICAgICAgICAgICBzb3VyY2VkLT5jb250ZXh0ID0gJmNvbnRleHQ7CisgICAgICAgICAg ICAgaWYgKCFzaGFyZWRQYWludGVyKSB7CitAQCAtNTMyOCw2ICs1MzI4LDcgQEAgdm9pZCBRV2lk Z2V0UHJpdmF0ZTo6ZHJhd1dpZGdldChRUGFpbnREZXZpY2UgKnBkZXYsIGNvbnN0IFFSZWdpb24g JnJnbiwgY29uc3QgUVAKKyAgICAgICAgIH0KKyAgICAgfQorICNlbmRpZiAvLyBRVF9DT05GSUco Z3JhcGhpY3NlZmZlY3QpCisrICAgIGZsYWdzID0gZmxhZ3MgJiB+VXNlRWZmZWN0UmVnaW9uQm91 bmRzOworIAorICAgICBjb25zdCBib29sIGFsc29PblNjcmVlbiA9IGZsYWdzICYgRHJhd1BhaW50 T25TY3JlZW47CisgICAgIGNvbnN0IGJvb2wgcmVjdXJzaXZlID0gZmxhZ3MgJiBEcmF3UmVjdXJz aXZlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmgg Yi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRfcC5oCitpbmRleCBlZWY2YjhmYTJj Li5jNDMyZjRiNWQ1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lk Z2V0X3AuaAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAorQEAg LTIyOSw3ICsyMjksOCBAQCBwdWJsaWM6CisgICAgICAgICBEb250U3VidHJhY3RPcGFxdWVDaGls ZHJlbiA9IDB4MTAsCisgICAgICAgICBEb250RHJhd09wYXF1ZUNoaWxkcmVuID0gMHgyMCwKKyAg ICAgICAgIERvbnREcmF3TmF0aXZlQ2hpbGRyZW4gPSAweDQwLAorLSAgICAgICAgRG9udFNldENv bXBvc2l0aW9uTW9kZSA9IDB4ODAKKysgICAgICAgIERvbnRTZXRDb21wb3NpdGlvbk1vZGUgPSAw eDgwLAorKyAgICAgICAgVXNlRWZmZWN0UmVnaW9uQm91bmRzID0gMHgxMDAKKyAgICAgfTsKKyAg ICAgUV9ERUNMQVJFX0ZMQUdTKERyYXdXaWRnZXRGbGFncywgRHJhd1dpZGdldEZsYWcpCisgICAg IFFfRkxBRyhEcmF3V2lkZ2V0RmxhZ3MpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRz L2tlcm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tl cm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIuY3BwCitpbmRleCAwMjg4MGIzNGRhLi4wZDQ0ZTEz MjZkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWlu dG1hbmFnZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBh aW50bWFuYWdlci5jcHAKK0BAIC0xMDE4LDcgKzEwMTgsOCBAQCB2b2lkIFFXaWRnZXRSZXBhaW50 TWFuYWdlcjo6cGFpbnRBbmRGbHVzaCgpCisgCisgICAgIC8vIFBhaW50IHRoZSByZXN0IHdpdGgg Y29tcG9zaXRpb24uCisgICAgIGlmIChyZXBhaW50QWxsV2lkZ2V0cyB8fCAhZGlydHlDb3B5Lmlz RW1wdHkoKSkgeworLSAgICAgICAgUVdpZGdldFByaXZhdGU6OkRyYXdXaWRnZXRGbGFncyBmbGFn cyA9IFFXaWRnZXRQcml2YXRlOjpEcmF3QXNSb290IHwgUVdpZGdldFByaXZhdGU6OkRyYXdSZWN1 cnNpdmU7CisrICAgICAgICBRV2lkZ2V0UHJpdmF0ZTo6RHJhd1dpZGdldEZsYWdzIGZsYWdzID0g UVdpZGdldFByaXZhdGU6OkRyYXdBc1Jvb3QgfCBRV2lkZ2V0UHJpdmF0ZTo6RHJhd1JlY3Vyc2l2 ZQorKyAgICAgICAgICAgICAgICB8IFFXaWRnZXRQcml2YXRlOjpVc2VFZmZlY3RSZWdpb25Cb3Vu ZHM7CisgICAgICAgICB0bHctPmRfZnVuYygpLT5kcmF3V2lkZ2V0KHN0b3JlLT5wYWludERldmlj ZSgpLCBkaXJ0eUNvcHksIFFQb2ludCgpLCBmbGFncywgbnVsbHB0ciwgdGhpcyk7CisgICAgIH0K KyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5j cHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAKK2luZGV4IGY0 MzQ1ZDk3YzQuLjk2MjkxMmM4MzggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5 bGVzL3FmdXNpb25zdHlsZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1 c2lvbnN0eWxlLmNwcAorQEAgLTE3NzIsMTQgKzE3NzIsNiBAQCB2b2lkIFFGdXNpb25TdHlsZTo6 ZHJhd0NvbnRyb2woQ29udHJvbEVsZW1lbnQgZWxlbWVudCwgY29uc3QgUVN0eWxlT3B0aW9uICpv cHRpbworICAgICAgICAgICAgIHByb3h5KCktPmRyYXdDb250cm9sKENFX1B1c2hCdXR0b25MYWJl bCwgJnN1Ym9wdCwgcGFpbnRlciwgd2lkZ2V0KTsKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFr OworLSAgICBjYXNlIENFX1B1c2hCdXR0b25MYWJlbDoKKy0gICAgICAgIGlmIChjb25zdCBRU3R5 bGVPcHRpb25CdXR0b24gKmJ1dHRvbiA9IHFzdHlsZW9wdGlvbl9jYXN0PGNvbnN0IFFTdHlsZU9w dGlvbkJ1dHRvbiAqPihvcHRpb24pKSB7CistICAgICAgICAgICAgUVN0eWxlT3B0aW9uQnV0dG9u IGIoKmJ1dHRvbik7CistICAgICAgICAgICAgLy8gbm8gUE1fQnV0dG9uU2hpZnRIb3Jpem9udGFs IGFuZCBQTV9CdXR0b25TaGlmdFZlcnRpY2FsIGZvciBmdXNpb24gc3R5bGUKKy0gICAgICAgICAg ICBiLnN0YXRlICY9IH4oU3RhdGVfT24gfCBTdGF0ZV9TdW5rZW4pOworLSAgICAgICAgICAgIFFD b21tb25TdHlsZTo6ZHJhd0NvbnRyb2woZWxlbWVudCwgJmIsIHBhaW50ZXIsIHdpZGdldCk7Cist ICAgICAgICB9CistICAgICAgICBicmVhazsKKyAgICAgY2FzZSBDRV9NZW51QmFyRW1wdHlBcmVh OgorICAgICAgICAgcGFpbnRlci0+c2F2ZSgpOworICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy93aWRnZXRzL3V0aWwvcWNvbXBsZXRlci5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvdXRp bC9xY29tcGxldGVyLmNwcAoraW5kZXggMThiMjQwNjNkOC4uZWY3MjA3YThhMyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwCisrKysgYi9xdGJhc2Uv c3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcAorQEAgLTExMjAsNiArMTEyMCw4IEBAIHZv aWQgUUNvbXBsZXRlcjo6c2V0TW9kZWwoUUFic3RyYWN0SXRlbU1vZGVsICptb2RlbCkKKyB7Cisg ICAgIFFfRChRQ29tcGxldGVyKTsKKyAgICAgUUFic3RyYWN0SXRlbU1vZGVsICpvbGRNb2RlbCA9 IGQtPnByb3h5LT5zb3VyY2VNb2RlbCgpOworKyAgICBpZiAob2xkTW9kZWwgPT0gbW9kZWwpCisr ICAgICAgICByZXR1cm47CisgI2lmIFFUX0NPTkZJRyhmaWxlc3lzdGVtbW9kZWwpCisgICAgIGlm IChxb2JqZWN0X2Nhc3Q8Y29uc3QgUUZpbGVTeXN0ZW1Nb2RlbCAqPihvbGRNb2RlbCkpCisgICAg ICAgICBzZXRDb21wbGV0aW9uUm9sZShRdDo6RWRpdFJvbGUpOyAvLyBRVEJVRy01NDY0MiwgY2xl YXIgRmlsZU5hbWVSb2xlIHNldCBieSBRRmlsZVN5c3RlbU1vZGVsCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uLmNwcCBiL3F0YmFzZS9zcmMv d2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHAKK2luZGV4IGExMjhiMjM5NTAuLmRj NDBiZjYyZmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJh Y3RidXR0b24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3Ri dXR0b24uY3BwCitAQCAtNTYsNiArNTYsNyBAQAorICNpZm5kZWYgUVRfTk9fQUNDRVNTSUJJTElU WQorICNpbmNsdWRlICJxYWNjZXNzaWJsZS5oIgorICNlbmRpZgorKyNpbmNsdWRlIDxxcGEvcXBs YXRmb3JtdGhlbWUuaD4KKyAKKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorIAorQEAgLTEwNzYsMTkg KzEwNzcsMTkgQEAgdm9pZCBRQWJzdHJhY3RCdXR0b246OmtleVByZXNzRXZlbnQoUUtleUV2ZW50 ICplKQorIHsKKyAgICAgUV9EKFFBYnN0cmFjdEJ1dHRvbik7CisgICAgIGJvb2wgbmV4dCA9IHRy dWU7CistICAgIHN3aXRjaCAoZS0+a2V5KCkpIHsKKy0gICAgY2FzZSBRdDo6S2V5X0VudGVyOgor LSAgICBjYXNlIFF0OjpLZXlfUmV0dXJuOgorLSAgICAgICAgZS0+aWdub3JlKCk7CistICAgICAg ICBicmVhazsKKy0gICAgY2FzZSBRdDo6S2V5X1NlbGVjdDoKKy0gICAgY2FzZSBRdDo6S2V5X1Nw YWNlOgorLSAgICAgICAgaWYgKCFlLT5pc0F1dG9SZXBlYXQoKSkgeworLSAgICAgICAgICAgIHNl dERvd24odHJ1ZSk7CistICAgICAgICAgICAgcmVwYWludCgpOworLSAgICAgICAgICAgIGQtPmVt aXRQcmVzc2VkKCk7CistICAgICAgICB9CistICAgICAgICBicmVhazsKKysKKysgICAgY29uc3Qg YXV0byBrZXkgPSBzdGF0aWNfY2FzdDxRdDo6S2V5PihlLT5rZXkoKSk7CisrICAgIGNvbnN0IGF1 dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVt ZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGlu dChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAo YnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKGtleSkgJiYgIWUtPmlzQXV0b1JlcGVhdCgpKSB7Cisr ICAgICAgICBzZXREb3duKHRydWUpOworKyAgICAgICAgcmVwYWludCgpOworKyAgICAgICAgZC0+ ZW1pdFByZXNzZWQoKTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgICBzd2l0Y2gg KGtleSkgeworICAgICBjYXNlIFF0OjpLZXlfVXA6CisgICAgICAgICBuZXh0ID0gZmFsc2U7Cisg ICAgICAgICBRX0ZBTExUSFJPVUdIKCk7CitAQCAtMTE1MywxNSArMTE1NCwxNSBAQCB2b2lkIFFB YnN0cmFjdEJ1dHRvbjo6a2V5UmVsZWFzZUV2ZW50KFFLZXlFdmVudCAqZSkKKyAgICAgaWYgKCFl LT5pc0F1dG9SZXBlYXQoKSkKKyAgICAgICAgIGQtPnJlcGVhdFRpbWVyLnN0b3AoKTsKKyAKKy0g ICAgc3dpdGNoIChlLT5rZXkoKSkgeworLSAgICBjYXNlIFF0OjpLZXlfU2VsZWN0OgorLSAgICBj YXNlIFF0OjpLZXlfU3BhY2U6CistICAgICAgICBpZiAoIWUtPmlzQXV0b1JlcGVhdCgpICYmIGQt PmRvd24pCistICAgICAgICAgICAgZC0+Y2xpY2soKTsKKy0gICAgICAgIGJyZWFrOworLSAgICBk ZWZhdWx0OgorLSAgICAgICAgZS0+aWdub3JlKCk7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJl c3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1U aGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NL ZXlzLmNvbnRhaW5zKHN0YXRpY19jYXN0PFF0OjpLZXk+KGUtPmtleSgpKSkgJiYgIWUtPmlzQXV0 b1JlcGVhdCgpICYmIGQtPmRvd24pIHsKKysgICAgICAgIGQtPmNsaWNrKCk7CisrICAgICAgICBy ZXR1cm47CisgICAgIH0KKysKKysgICAgZS0+aWdub3JlKCk7CisgfQorIAorIC8qIVxyZWltcAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAgYi9x dGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3guY3BwCitpbmRleCA3YTQ5NmMyN2Uw Li4wYTNkOTY2NDdiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNv bWJvYm94LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNw cAorQEAgLTMzNTIsNyArMzM1MiwyMyBAQCB2b2lkIFFDb21ib0JveDo6a2V5UHJlc3NFdmVudChR S2V5RXZlbnQgKmUpCisgCisgICAgIE1vdmUgbW92ZSA9IE5vTW92ZTsKKyAgICAgaW50IG5ld0lu ZGV4ID0gY3VycmVudEluZGV4KCk7CistICAgIHN3aXRjaCAoZS0+a2V5KCkpIHsKKysKKysgICAg Ym9vbCBwcmVzc0xpa2VCdXR0b24gPSAhZC0+bGluZUVkaXQ7CisrI2lmZGVmIFFUX0tFWVBBRF9O QVZJR0FUSU9OCisrICAgIHByZXNzTGlrZUJ1dHRvbiB8PSBRQXBwbGljYXRpb25Qcml2YXRlOjpr ZXlwYWROYXZpZ2F0aW9uRW5hYmxlZCgpICYmICFoYXNFZGl0Rm9jdXMoKTsKKysjZW5kaWYKKysg ICAgYXV0byBrZXkgPSBzdGF0aWNfY2FzdDxRdDo6S2V5PihlLT5rZXkoKSk7CisrICAgIGlmIChw cmVzc0xpa2VCdXR0b24pIHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0g UUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6 OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoYnV0dG9uUHJl c3NLZXlzLmNvbnRhaW5zKGtleSkpIHsKKysgICAgICAgICAgICBzaG93UG9wdXAoKTsKKysgICAg ICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgc3dpdGNoIChrZXkp IHsKKyAgICAgY2FzZSBRdDo6S2V5X1VwOgorICAgICAgICAgaWYgKGUtPm1vZGlmaWVycygpICYg UXQ6OkNvbnRyb2xNb2RpZmllcikKKyAgICAgICAgICAgICBicmVhazsgLy8gcGFzcyB0byBsaW5l IGVkaXQgZm9yIGF1dG8gY29tcGxldGlvbgorQEAgLTMzOTQsMjYgKzM0MTAsMTEgQEAgdm9pZCBR Q29tYm9Cb3g6OmtleVByZXNzRXZlbnQoUUtleUV2ZW50ICplKQorICAgICAgICAgICAgIHJldHVy bjsKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIFF0OjpLZXlfU3BhY2U6 CistICAgICAgICBpZiAoIWQtPmxpbmVFZGl0KSB7CistICAgICAgICAgICAgc2hvd1BvcHVwKCk7 CistICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgfQorLSAgICAgICAgYnJlYWs7CistICAg IGNhc2UgUXQ6OktleV9FbnRlcjoKKy0gICAgY2FzZSBRdDo6S2V5X1JldHVybjoKKyAgICAgY2Fz ZSBRdDo6S2V5X0VzY2FwZToKKyAgICAgICAgIGlmICghZC0+bGluZUVkaXQpCisgICAgICAgICAg ICAgZS0+aWdub3JlKCk7CisgICAgICAgICBicmVhazsKKyAjaWZkZWYgUVRfS0VZUEFEX05BVklH QVRJT04KKy0gICAgY2FzZSBRdDo6S2V5X1NlbGVjdDoKKy0gICAgICAgIGlmIChRQXBwbGljYXRp b25Qcml2YXRlOjprZXlwYWROYXZpZ2F0aW9uRW5hYmxlZCgpCistICAgICAgICAgICAgICAgICYm ICghaGFzRWRpdEZvY3VzKCkgfHwgIWQtPmxpbmVFZGl0KSkgeworLSAgICAgICAgICAgIHNob3dQ b3B1cCgpOworLSAgICAgICAgICAgIHJldHVybjsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFr OworICAgICBjYXNlIFF0OjpLZXlfTGVmdDoKKyAgICAgY2FzZSBRdDo6S2V5X1JpZ2h0OgorICAg ICAgICAgaWYgKFFBcHBsaWNhdGlvblByaXZhdGU6OmtleXBhZE5hdmlnYXRpb25FbmFibGVkKCkg JiYgIWhhc0VkaXRGb2N1cygpKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRn ZXRzL3FkYXRldGltZWVkaXRfcC5oIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0 aW1lZWRpdF9wLmgKK2luZGV4IGQzNmI2ZjhmOWEuLmUwZGY1YjUxNTggMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZGF0ZXRpbWVlZGl0X3AuaAorKysrIGIvcXRiYXNl L3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmgKK0BAIC0xLDYgKzEsNiBAQAor IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTggVGhlIFF0 IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQu CisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0V2lkZ2V0cyBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQu CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNwcCBi L3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC5jcHAKK2luZGV4IDAyYTBiZWQz MjUuLjNmM2VjY2MzNzAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9x Z3JvdXBib3guY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gu Y3BwCitAQCAtNTQsNiArNTQsOCBAQAorICNpbmNsdWRlICJxYWNjZXNzaWJsZS5oIgorICNlbmRp ZgorICNpbmNsdWRlIDxwcml2YXRlL3F3aWRnZXRfcC5oPgorKyNpbmNsdWRlIDxwcml2YXRlL3Fn dWlhcHBsaWNhdGlvbl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorIAor ICNpbmNsdWRlICJxZGVidWcuaCIKKyAKK0BAIC0zNjAsNyArMzYyLDEwIEBAIGJvb2wgUUdyb3Vw Qm94OjpldmVudChRRXZlbnQgKmUpCisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgY2FzZSBR RXZlbnQ6OktleVByZXNzOiB7CisgICAgICAgICBRS2V5RXZlbnQgKmsgPSBzdGF0aWNfY2FzdDxR S2V5RXZlbnQqPihlKTsKKy0gICAgICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgKGstPmtl eSgpID09IFF0OjpLZXlfU2VsZWN0IHx8IGstPmtleSgpID09IFF0OjpLZXlfU3BhY2UpKSB7Cisr ICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZh dGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0 PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiBidXR0b25Q cmVzc0tleXMuY29udGFpbnMoc3RhdGljX2Nhc3Q8UXQ6OktleT4oay0+a2V5KCkpKSkgeworICAg ICAgICAgICAgIGQtPnByZXNzZWRDb250cm9sID0gUVN0eWxlOjpTQ19Hcm91cEJveENoZWNrQm94 OworICAgICAgICAgICAgIHVwZGF0ZShzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkND X0dyb3VwQm94LCAmYm94LCBRU3R5bGU6OlNDX0dyb3VwQm94Q2hlY2tCb3gsIHRoaXMpKTsKKyAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKK0BAIC0zNjksNyArMzc0LDEwIEBAIGJvb2wgUUdyb3Vw Qm94OjpldmVudChRRXZlbnQgKmUpCisgICAgIH0KKyAgICAgY2FzZSBRRXZlbnQ6OktleVJlbGVh c2U6IHsKKyAgICAgICAgIFFLZXlFdmVudCAqayA9IHN0YXRpY19jYXN0PFFLZXlFdmVudCo+KGUp OworLSAgICAgICAgaWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiAoay0+a2V5KCkgPT0gUXQ6Oktl eV9TZWxlY3QgfHwgay0+a2V5KCkgPT0gUXQ6OktleV9TcGFjZSkpIHsKKysgICAgICAgIGNvbnN0 IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1U aGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50 aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7 CisrICAgICAgICBpZiAoIWstPmlzQXV0b1JlcGVhdCgpICYmIGJ1dHRvblByZXNzS2V5cy5jb250 YWlucyhzdGF0aWNfY2FzdDxRdDo6S2V5PihrLT5rZXkoKSkpKSB7CisgICAgICAgICAgICAgYm9v bCB0b2dnbGUgPSAoZC0+cHJlc3NlZENvbnRyb2wgPT0gUVN0eWxlOjpTQ19Hcm91cEJveExhYmVs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgZC0+cHJlc3NlZENvbnRyb2wgPT0gUVN0 eWxlOjpTQ19Hcm91cEJveENoZWNrQm94KTsKKyAgICAgICAgICAgICBkLT5wcmVzc2VkQ29udHJv bCA9IFFTdHlsZTo6U0NfTm9uZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lk Z2V0cy9xbGFiZWwuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNwcAor aW5kZXggMzBmZjgwY2JiMC4uY2YyNjA1YzE3YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lk Z2V0cy93aWRnZXRzL3FsYWJlbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRz L3FsYWJlbC5jcHAKK0BAIC00MjEsOSArNDIxLDYgQEAgdm9pZCBRTGFiZWw6OnNldFBpeG1hcChj b25zdCBRUGl4bWFwICZwaXhtYXApCisgICAgICAgICBkLT5waXhtYXAgPSBuZXcgUVBpeG1hcChw aXhtYXApOworICAgICB9CisgCistICAgIGlmIChkLT5waXhtYXAtPmRlcHRoKCkgPT0gMSAmJiAh ZC0+cGl4bWFwLT5tYXNrKCkpCistICAgICAgICBkLT5waXhtYXAtPnNldE1hc2soKigoUUJpdG1h cCAqKWQtPnBpeG1hcCkpOworLQorICAgICBkLT51cGRhdGVMYWJlbCgpOworIH0KKyAKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3Bw IGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcAoraW5k ZXggNDkzYzA5NGNjMS4uZDVmNGI1OTAxNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0 cy93aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0 cy93aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5jcHAKK0BAIC0xMzY3LDcgKzEzNjcsNyBAQCBi b29sIFFUb29sQmFyQXJlYUxheW91dDo6cmVzdG9yZVN0YXRlKFFEYXRhU3RyZWFtICZzdHJlYW0s IGNvbnN0IFFMaXN0PFFUb29sQmFyKgorICAgICAgICAgICAgICAgICBpdGVtLndpZGdldEl0ZW0g PSBuZXcgUVdpZGdldEl0ZW1WMih0b29sQmFyKTsKKyAgICAgICAgICAgICAgICAgdG9vbEJhci0+ c2V0T3JpZW50YXRpb24oZmxvYXRpbmcgPyAoKHNob3duICYgMikgPyBRdDo6VmVydGljYWwgOiBR dDo6SG9yaXpvbnRhbCkgOiBkb2NrLm8pOworICAgICAgICAgICAgICAgICB0b29sQmFyLT5zZXRW aXNpYmxlKHNob3duICYgMSk7CistICAgICAgICAgICAgICAgIHRvb2xCYXItPmRfZnVuYygpLT5z ZXRXaW5kb3dTdGF0ZShmbG9hdGluZywgdHJ1ZSwgcmVjdCk7CisrICAgICAgICAgICAgICAgIHRv b2xCYXItPmRfZnVuYygpLT5zZXRXaW5kb3dTdGF0ZShmbG9hdGluZywgZmFsc2UsIHJlY3QpOwor IAorICAgICAgICAgICAgICAgICBpdGVtLnByZWZlcnJlZFNpemUgPSBpdGVtLnNpemU7CisgICAg ICAgICAgICAgICAgIGxpbmUudG9vbEJhckl0ZW1zLmFwcGVuZChpdGVtKTsKK2RpZmYgLS1naXQg YS9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwv dHN0X3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29u Y3VycmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsL3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRl a2VybmVsLmNwcAoraW5kZXggMjEyYzBhMmUxMy4uM2M3N2IxYmEwYiAxMDA2NDQKKy0tLSBhL3F0 YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3Rf cXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2Nv bmN1cnJlbnQvcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0 ZWtlcm5lbC5jcHAKK0BAIC0xMjYsOCArMTI2LDcgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0 Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6Omluc3RhbnRpYXRlKCkKKyB7CistICAgIGF1dG8gZnV0 dXJlID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFByaW50Rm9yKDAsIDQwKSkuc3RhcnRBc3luY2hy b25vdXNseSgpOworLSAgICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIHN0YXJ0VGhy ZWFkRW5naW5lKG5ldyBQcmludEZvcigwLCA0MCkpLnN0YXJ0QmxvY2tpbmcoKTsKKyAgICAgUUNP TVBBUkUoaXRlcmF0aW9ucy5sb2FkUmVsYXhlZCgpLCA0MCk7CisgfQorIAorQEAgLTE2NiwxMCAr MTY1LDggQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6c3RyZXNzdGVzdCgp CisgICAgIGNvbnN0IGludCB0aW1lcyA9IDUwOworICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRp bWVzOyArK2kpIHsKKyAgICAgICAgIGNvdW50ZXIuc3RvcmVSZWxheGVkKDApOworLSAgICAgICAg Ly8gVGhyZWFkRW5naW5lIHdpbGwgZGVsZXRlIGYgd2hlbiBpdCBmaW5pc2hlcworLSAgICAgICAg YXV0byBmID0gbmV3IENvdW50Rm9yKDAsIGl0ZXJhdGlvbnMpOworLSAgICAgICAgYXV0byBmdXR1 cmUgPSBmLT5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgICAgICBmdXR1cmUud2FpdEZvckZp bmlzaGVkKCk7CisrICAgICAgICBDb3VudEZvciBmKDAsIGl0ZXJhdGlvbnMpOworKyAgICAgICAg Zi5zdGFydEJsb2NraW5nKCk7CisgICAgICAgICBRQ09NUEFSRShjb3VudGVyLmxvYWRSZWxheGVk KCksIGl0ZXJhdGlvbnMpOworICAgICB9CisgfQorQEAgLTE3NywxMSArMTc0LDggQEAgdm9pZCB0 c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6c3RyZXNzdGVzdCgpCisgdm9pZCB0c3RfUXRD b25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6bm9JdGVyYXRpb25zKCkKKyB7CisgICAgIGNvbnN0IGlu dCB0aW1lcyA9IDIwMDAwOworLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpIHsK Ky0gICAgICAgIGF1dG8gZnV0dXJlID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IEl0ZXJhdGVLZXJu ZWw8VGVzdEl0ZXJhdG9yLCB2b2lkPigwLCAwKSkKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAuc3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICAgICAgZnV0dXJlLndhaXRGb3JGaW5p c2hlZCgpOworLSAgICB9CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGltZXM7ICsraSkKKysg ICAgICAgIHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBJdGVyYXRlS2VybmVsPFRlc3RJdGVyYXRvciwg dm9pZD4oMCwgMCkpLnN0YXJ0QmxvY2tpbmcoKTsKKyB9CisgCisgUU11dGV4IHRocmVhZHNNdXRl eDsKK0BAIC0yMzYsMTAgKzIzMCw4IEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJu ZWw6OnRocm90dGxpbmcoKQorIAorICAgICB0aHJlYWRzLmNsZWFyKCk7CisgCistICAgIC8vIFRo cmVhZEVuZ2luZSB3aWxsIGRlbGV0ZSBmIHdoZW4gaXQgZmluaXNoZXMKKy0gICAgYXV0byBmID0g bmV3IFRocm90dGxlRm9yKDAsIHRvdGFsSXRlcmF0aW9ucyk7CistICAgIGF1dG8gZnV0dXJlID0g Zi0+c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7 CisrICAgIFRocm90dGxlRm9yIGYoMCwgdG90YWxJdGVyYXRpb25zKTsKKysgICAgZi5zdGFydEJs b2NraW5nKCk7CisgCisgICAgIFFDT01QQVJFKGl0ZXJhdGlvbnMubG9hZFJlbGF4ZWQoKSwgdG90 YWxJdGVyYXRpb25zKTsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJy ZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90c3RfcXRjb25jdXJyZW50dGhyZWFkZW5naW5l LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5n aW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCitpbmRleCBhYzdiZTdhY2RkLi44 MWJjNjRjOGQ5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNv bmN1cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKKysr KyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5l L3RzdF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCitAQCAtNjUsOSArNjUsMTYgQEAgcHVi bGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6cnVuRGlyZWN0bHko KQorIHsKKy0gICAgUHJpbnRVc2VyICplbmdpbmUgPSBuZXcgUHJpbnRVc2VyKCk7CistICAgIFFG dXR1cmU8dm9pZD4gZiA9IGVuZ2luZS0+c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBmLndh aXRGb3JGaW5pc2hlZCgpOworKyAgICB7CisrICAgICAgICBQcmludFVzZXIgZW5naW5lOworKyAg ICAgICAgZW5naW5lLnN0YXJ0U2luZ2xlVGhyZWFkZWQoKTsKKysgICAgICAgIGVuZ2luZS5zdGFy dEJsb2NraW5nKCk7CisrICAgIH0KKysgICAgeworKyAgICAgICAgUHJpbnRVc2VyICplbmdpbmUg PSBuZXcgUHJpbnRVc2VyKCk7CisrICAgICAgICBRRnV0dXJlPHZvaWQ+IGYgPSBlbmdpbmUtPnN0 YXJ0QXN5bmNocm9ub3VzbHkoKTsKKysgICAgICAgIGYud2FpdEZvckZpbmlzaGVkKCk7CisrICAg IH0KKyB9CisgCisgY2xhc3MgU3RyaW5nUmVzdWx0VXNlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8 UVN0cmluZz4KK0BAIC05OSwxMCArMTA2LDggQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29u Y3VycmVudFRocmVhZEVuZ2luZTo6cmVzdWx0KCkKKyB7CistICAgIC8vIFRocmVhZEVuZ2luZSB3 aWxsIGRlbGV0ZSAnZW5naW5lJyB3aGVuIGl0IGZpbmlzaGVzCistICAgIGF1dG8gZW5naW5lID0g bmV3IFN0cmluZ1Jlc3VsdFVzZXIoKTsKKy0gICAgYXV0byBmdXR1cmUgPSBlbmdpbmUtPnN0YXJ0 QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgUUNPTVBBUkUoZnV0dXJlLnJlc3VsdCgpLCBRU3RyaW5n KCJGb28iKSk7CisrICAgIFN0cmluZ1Jlc3VsdFVzZXIgZW5naW5lOworKyAgICBRQ09NUEFSRSgq ZW5naW5lLnN0YXJ0QmxvY2tpbmcoKSwgUVN0cmluZygiRm9vIikpOworIH0KKyAKKyBjbGFzcyBW b2lkUmVzdWx0VXNlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8dm9pZD4KK0BAIC0xMjgsOSArMTMz LDE3IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJ1 blRocm91Z2hTdGFydGVyKCkKKyB7CistICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4g c3RhcnRlciA9IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBTdHJpbmdSZXN1bHRVc2VyKCkpOworLSAg ICBRRnV0dXJlPFFTdHJpbmc+IGYgPSBzdGFydGVyLnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0g ICAgUUNPTVBBUkUoZi5yZXN1bHQoKSwgUVN0cmluZygiRm9vIikpOworKyAgICB7CisrICAgICAg ICBUaHJlYWRFbmdpbmVTdGFydGVyPFFTdHJpbmc+IHN0YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2lu ZShuZXcgU3RyaW5nUmVzdWx0VXNlcigpKTsKKysgICAgICAgIFFGdXR1cmU8UVN0cmluZz4gIGYg PSBzdGFydGVyLnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKysgICAgICAgIFFDT01QQVJFKGYucmVz dWx0KCksIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgfQorKworKyAgICB7CisrICAgICAgICBUaHJl YWRFbmdpbmVTdGFydGVyPFFTdHJpbmc+IHN0YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2luZShuZXcg U3RyaW5nUmVzdWx0VXNlcigpKTsKKysgICAgICAgIFFTdHJpbmcgc3RyID0gc3RhcnRlci5zdGFy dEJsb2NraW5nKCk7CisrICAgICAgICBRQ09NUEFSRShzdHIsIFFTdHJpbmcoIkZvbyIpKTsKKysg ICAgfQorIH0KKyAKKyBjbGFzcyBDYW5jZWxVc2VyIDogcHVibGljIFRocmVhZEVuZ2luZTx2b2lk PgorQEAgLTIxMyw2ICsyMjYsMTIgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5l Ojp0aHJvdHRsZSgpCisgICAgICAgICBmLndhaXRGb3JGaW5pc2hlZCgpOworICAgICAgICAgUUNP TVBBUkUoY291bnQubG9hZFJlbGF4ZWQoKSwgMCk7CisgICAgIH0KKysKKysgICAgZm9yIChpbnQg aSA9IDA7IGkgPCByZXBlYXRzOyArK2kpIHsKKysgICAgICAgIFRocm90dGxlQWx3YXlzVXNlciB0 OworKyAgICAgICAgdC5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudC5s b2FkUmVsYXhlZCgpLCAwKTsKKysgICAgfQorIH0KKyAKKyBRU2V0PFFUaHJlYWQgKj4gdGhyZWFk czsKK0BAIC0yNDksMTcgKzI2OCwzNSBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdp bmU6OnRocmVhZENvdW50KCkKKyB7CisgICAgIGNvbnN0IGludCByZXBlYXRzID0gMTA7CisgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0czsgKytpKSB7CisrICAgICAgICBUaHJlYWRDb3Vu dFVzZXIgdDsKKysgICAgICAgIHQuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgaW50IGNvdW50 ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgaW50IGNvdW50X2V4cGVjdGVkID0gUVRocmVh ZFBvb2w6Omdsb2JhbEluc3RhbmNlKCktPm1heFRocmVhZENvdW50KCkgKyAxOyAvLyArMSBmb3Ig dGhlIG1haW4gdGhyZWFkLgorKyAgICAgICAgaWYgKGNvdW50ICE9IGNvdW50X2V4cGVjdGVkKQor KyAgICAgICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAg ICAgICAgUUNPTVBBUkUoY291bnQsIGNvdW50X2V4cGVjdGVkKTsKKysKKyAgICAgICAgIChuZXcg VGhyZWFkQ291bnRVc2VyKCkpLT5zdGFydEFzeW5jaHJvbm91c2x5KCkud2FpdEZvckZpbmlzaGVk KCk7CistICAgICAgICBjb25zdCBhdXRvIGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworLSAgICAg ICAgY29uc3QgYXV0byBtYXhUaHJlYWRDb3VudCA9IFFUaHJlYWRQb29sOjpnbG9iYWxJbnN0YW5j ZSgpLT5tYXhUaHJlYWRDb3VudCgpOworLSAgICAgICAgUVZFUklGWShjb3VudCA8PSBtYXhUaHJl YWRDb3VudCk7CistICAgICAgICBRVkVSSUZZKCF0aHJlYWRzLmNvbnRhaW5zKFFUaHJlYWQ6OmN1 cnJlbnRUaHJlYWQoKSkpOworKyAgICAgICAgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAg ICAgICBjb3VudF9leHBlY3RlZCA9IFFUaHJlYWRQb29sOjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhU aHJlYWRDb3VudCgpOworKyAgICAgICAgaWYgKGNvdW50ICE9IGNvdW50X2V4cGVjdGVkKQorKyAg ICAgICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAg ICAgUUNPTVBBUkUoY291bnQsIGNvdW50X2V4cGVjdGVkKTsKKyAgICAgfQorIAorICAgICAvLyBT ZXQgdGhlIGZpbmlzaCBmbGFnIGltbWVkaWF0ZWx5LCB0aGlzIHNob3VsZCBnaXZlIHVzIG9uZSB0 aHJlYWQgb25seS4KKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXRzOyArK2kpIHsKKysg ICAgICAgIFRocmVhZENvdW50VXNlciB0KHRydWUgLypmaW5pc2hJbW1lZGlhdGVseSovKTsKKysg ICAgICAgIHQuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgaW50IGNvdW50ID0gdGhyZWFkcy5j b3VudCgpOworKyAgICAgICAgaWYgKGNvdW50ICE9IDEpCisrICAgICAgICAgICAgUUVYUEVDVF9G QUlMKCIiLCAiUVRCVUctMjMzMzMiLCBBYm9ydCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudCwg MSk7CisrCisgICAgICAgICAobmV3IFRocmVhZENvdW50VXNlcih0cnVlIC8qZmluaXNoSW1tZWRp YXRlbHkqLykpLT5zdGFydEFzeW5jaHJvbm91c2x5KCkud2FpdEZvckZpbmlzaGVkKCk7CistICAg ICAgICBjb25zdCBhdXRvIGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgY291bnQg PSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBpZiAoY291bnQgIT0gMSkKKysgICAgICAgICAg ICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKyAgICAgICAgIFFDT01Q QVJFKGNvdW50LCAxKTsKKyAgICAgICAgIFFWRVJJRlkoIXRocmVhZHMuY29udGFpbnMoUVRocmVh ZDo6Y3VycmVudFRocmVhZCgpKSk7CisgICAgIH0KK0BAIC00MDAsNiArNDM3LDcgQEAgcHVibGlj OgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisg eworKyAgICAvLyBBc3luY2hyb25vdXMgbW9kZToKKyAgICAgeworICAgICAgICAgYm9vbCBjYXVn aHQgPSBmYWxzZTsKKyAgICAgICAgIHRyeSAgeworQEAgLTQxMiw2ICs0NTAsMzIgQEAgdm9pZCB0 c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpleGNlcHRpb25zKCkKKyAgICAgICAgIFFWRVJJ RlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworICAgICB9CisgCisrICAgIC8v IEJsb2NraW5nIG1vZGU6CisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9t IGEgd29ya2VyIHRocmVhZC4KKysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsK KysgICAgICAgIHRyeSAgeworKyAgICAgICAgICAgIFF0Q29uY3VycmVudEV4Y2VwdGlvblRocm93 ZXIgZShRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkpOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9j a2luZygpOworKyAgICAgICAgfSBjYXRjaCAoY29uc3QgUUV4Y2VwdGlvbiAmKSB7CisrICAgICAg ICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdo dCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAgICB9CisrCisrICAgIC8vIHRlc3QgdGhy b3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZSBtYWluIHRocmVhZCAoZGlmZmVyZW50IGNvZGUg cGF0aCkKKysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRy eSAgeworKyAgICAgICAgICAgIFF0Q29uY3VycmVudEV4Y2VwdGlvblRocm93ZXIgZSgwKTsKKysg ICAgICAgICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFF eGNlcHRpb24gJikgeworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9Cisr ICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAg fQorKworKyAgICAvLyBBc3luY2hyb25vdXMgbW9kZToKKyAgICAgeworICAgICAgICAgYm9vbCBj YXVnaHQgPSBmYWxzZTsKKyAgICAgICAgIHRyeSAgeworQEAgLTQyMyw2ICs0ODcsMzEgQEAgdm9p ZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpleGNlcHRpb25zKCkKKyAgICAgICAgIH0K KyAgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworICAg ICB9CisrCisrICAgIC8vIEJsb2NraW5nIG1vZGU6CisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhl IGV4Y2VwdGlvbiBmcm9tIGEgd29ya2VyIHRocmVhZC4KKysgICAgeworKyAgICAgICAgYm9vbCBj YXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAgeworKyAgICAgICAgICAgIFVucmVsYXRlZEV4 Y2VwdGlvblRocm93ZXIgZShRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkpOworKyAgICAgICAgICAg IGUuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgfSBjYXRjaCAoY29uc3QgUVVuaGFuZGxlZEV4 Y2VwdGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysg ICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAgICB9 CisrCisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZSBtYWluIHRo cmVhZCAoZGlmZmVyZW50IGNvZGUgcGF0aCkKKysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQg PSBmYWxzZTsKKysgICAgICAgIHRyeSAgeworKyAgICAgICAgICAgIFVucmVsYXRlZEV4Y2VwdGlv blRocm93ZXIgZSgwKTsKKysgICAgICAgICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAg IH0gY2F0Y2ggKGNvbnN0IFFVbmhhbmRsZWRFeGNlcHRpb24gJikgeworKyAgICAgICAgICAgIGNh dWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQg bm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorIH0KKyAKKyAjZW5kaWYKK2RpZmYgLS1naXQg YS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwIGIv cXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcAoraW5k ZXggNDk2ODc0MjExMC4uZjRjM2ZiNzExZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L2NvcmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1ZmZlci5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9h dXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1ZmZlci5jcHAKK0BAIC00Miw2ICs0Miw3IEBA IHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgd3JpdGVCbG9ja19kYXRhKCk7CisgICAgIHZvaWQg d3JpdGVCbG9jaygpOworICAgICB2b2lkIHNlZWsoKTsKKysgICAgdm9pZCBpbnZhbGlkU2Vla3Mo KTsKKyAgICAgdm9pZCBzZWVrVGVzdF9kYXRhKCk7CisgICAgIHZvaWQgc2Vla1Rlc3QoKTsKKyAg ICAgdm9pZCByZWFkX3Jhd2RhdGEoKTsKK0BAIC0yODYsNiArMjg3LDI5IEBAIHZvaWQgdHN0X1FC dWZmZXI6OnNlZWsoKQorICAgICBRQ09NUEFSRShidWZmZXIuc2l6ZSgpLCBwb3MpOworIH0KKyAK Kyt2b2lkIHRzdF9RQnVmZmVyOjppbnZhbGlkU2Vla3MoKQorK3sKKysgICAgaWYgY29uc3RleHBy IChzaXplb2YocXNpemV0eXBlKSA9PSBzaXplb2YocWludDY0KSkgeworKyAgICAgICAgLy8gc2l6 ZW9mKHFzaXpldHlwZSkgPT0gc2l6ZW9mKHFpbnQ2NCksIHNvICsxIHdvdWxkIG92ZXJmbG93Cisr ICAgICAgICBRU0tJUCgiVGhpcyBpcyBhIDMyLWJpdC1vbmx5IHRlc3QuIik7CisrICAgIH0gZWxz ZSB7CisrICAgICAgICBRQnVmZmVyIGJ1ZmZlcjsKKysgICAgICAgIGJ1ZmZlci5vcGVuKFFJT0Rl dmljZTo6V3JpdGVPbmx5KTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXpl KCksIHFzaXpldHlwZSgwKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2 NCgwKSk7CisrICAgICAgICBjb25zdGV4cHIgcWludDY0IE1heFFCeXRlQXJyYXlDYXBhY2l0eSA9 IChzdGQ6Om51bWVyaWNfbGltaXRzPHFzaXpldHlwZT46Om1heCkoKTsKKysgICAgICAgIC8vIHRo aXMgc2hvdWxkIGZhaWwgZmFzdCwgbm90IGFmdGVyIHRyeWluZyB0byBhbGxvY2F0ZSBuZWFybHkg MiBHaUIgb2YgZGF0YSwKKysgICAgICAgIC8vIHBvdGVudGlhbGx5IGNyYXNoaW5nIGluIHRoZSBw cm9jZXNzOgorKyAgICAgICAgUVZFUklGWSghYnVmZmVyLnNlZWsoMiAqIE1heFFCeXRlQXJyYXlD YXBhY2l0eSAtIDEpKTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCks IHFzaXpldHlwZSgwKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgw KSk7CisrICAgICAgICAvLyBkaXR0bzoKKysgICAgICAgIFFWRVJJRlkoIWJ1ZmZlci5zZWVrKE1h eFFCeXRlQXJyYXlDYXBhY2l0eSArIDEpKTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5idWZm ZXIoKS5zaXplKCksIHFzaXpldHlwZSgwKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIucG9z KCksIHFpbnQ2NCgwKSk7CisrICAgIH0KKyt9CisrCisgdm9pZCB0c3RfUUJ1ZmZlcjo6c2Vla1Rl c3RfZGF0YSgpCisgeworICAgICB3cml0ZUJsb2NrX2RhdGEoKTsKK2RpZmYgLS1naXQgYS9xdGJh c2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcCBiL3F0 YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCitp bmRleCBkYTUzMjc1OTRjLi40YTA0ZTBmN2M2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1 dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fpb2RldmljZS5jcHAKKysrKyBiL3F0YmFzZS90 ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCitAQCAtNTYx LDcgKzU2MSw4IEBAIHByb3RlY3RlZDoKKyAgICAgcWludDY0IHJlYWREYXRhKGNoYXIgKmRhdGEs IHFpbnQ2NCBtYXhTaXplKSBvdmVycmlkZQorICAgICB7CisgICAgICAgICBtYXhTaXplID0gcU1p bihtYXhTaXplLCBxaW50NjQoYnVmLT5zaXplKCkgLSBvZmZzZXQpKTsKKy0gICAgICAgIG1lbWNw eShkYXRhLCBidWYtPmNvbnN0RGF0YSgpICsgb2Zmc2V0LCBtYXhTaXplKTsKKysgICAgICAgIGlm IChtYXhTaXplID4gMCkKKysgICAgICAgICAgICBtZW1jcHkoZGF0YSwgYnVmLT5jb25zdERhdGEo KSArIG9mZnNldCwgbWF4U2l6ZSk7CisgICAgICAgICBvZmZzZXQgKz0gbWF4U2l6ZTsKKyAgICAg ICAgIHJldHVybiBtYXhTaXplOworICAgICB9CitAQCAtNjA0LDEzICs2MDUsMTUgQEAgcHJvdGVj dGVkOgorICAgICBxaW50NjQgcmVhZERhdGEoY2hhciAqZGF0YSwgcWludDY0IG1heFNpemUpIG92 ZXJyaWRlCisgICAgIHsKKyAgICAgICAgIG1heFNpemUgPSBxTWluKG1heFNpemUsIHFpbnQ2NChi dWYuc2l6ZSgpIC0gcG9zKCkpKTsKKy0gICAgICAgIG1lbWNweShkYXRhLCBidWYuY29uc3REYXRh KCkgKyBwb3MoKSwgbWF4U2l6ZSk7CisrICAgICAgICBpZiAobWF4U2l6ZSA+IDApCisrICAgICAg ICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi5jb25zdERhdGEoKSArIHBvcygpLCBtYXhTaXplKTsKKyAg ICAgICAgIHJldHVybiBtYXhTaXplOworICAgICB9CisgICAgIHFpbnQ2NCB3cml0ZURhdGEoY29u c3QgY2hhciAqZGF0YSwgcWludDY0IG1heFNpemUpIG92ZXJyaWRlCisgICAgIHsKKyAgICAgICAg IG1heFNpemUgPSBxTWluKG1heFNpemUsIHFpbnQ2NChidWYuc2l6ZSgpIC0gcG9zKCkpKTsKKy0g ICAgICAgIG1lbWNweShidWYuZGF0YSgpICsgcG9zKCksIGRhdGEsIG1heFNpemUpOworKyAgICAg ICAgaWYgKG1heFNpemUgPiAwKQorKyAgICAgICAgICAgIG1lbWNweShidWYuZGF0YSgpICsgcG9z KCksIGRhdGEsIG1heFNpemUpOworICAgICAgICAgcmV0dXJuIG1heFNpemU7CisgICAgIH0KKyAK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9x cHJvY2Vzcy5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9x cHJvY2Vzcy5jcHAKK2luZGV4IGRiNjBiZWFkNjQuLmYzNDVhNDQ0MTQgMTAwNjQ0CistLS0gYS9x dGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAKKysr KyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNw cAorQEAgLTEsNyArMSw4IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorICoqIENvcHly aWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCistKiogQ29weXJpZ2h0IChDKSAyMDIw IEludGVsIENvcnBvcmF0aW9uLgorKyoqIENvcHlyaWdodCAoQykgMjAyMCBUaGUgUXQgQ29tcGFu eSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIyIEludGVsIENvcnBvcmF0aW9uLgorICoqIENv bnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTE1MCw2ICsx NTEsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHN0YXJ0U3RvcFN0YXJ0U3RvcEJ1ZmZl cnMoKTsKKyAgICAgdm9pZCBwcm9jZXNzRXZlbnRzSW5BUmVhZHlSZWFkU2xvdF9kYXRhKCk7Cisg ICAgIHZvaWQgcHJvY2Vzc0V2ZW50c0luQVJlYWR5UmVhZFNsb3QoKTsKKysgICAgdm9pZCBzdGFy dEZyb21DdXJyZW50V29ya2luZ0Rpcl9kYXRhKCk7CisrICAgIHZvaWQgc3RhcnRGcm9tQ3VycmVu dFdvcmtpbmdEaXIoKTsKKyAKKyAgICAgLy8ga2VlcCB0aGVzZSBhdCB0aGUgZW5kLCBzaW5jZSB0 aGV5IHVzZSBsb3RzIG9mIHByb2Nlc3NlcyBhbmQgc29tZXRpbWVzCisgICAgIC8vIGNhdXNlZCBv YnNjdXJlIGZhaWx1cmVzIHRvIG9jY3VyIGluIHRlc3RzIHRoYXQgZm9sbG93ZWQgdGhlbSAoZXNw LiBvbiB0aGUgTWFjKQorQEAgLTI3MzEsNSArMjczNCw5NCBAQCB2b2lkIHRzdF9RUHJvY2Vzczo6 ZmluaXNoUHJvY2Vzc0JlZm9yZVJlYWRpbmdEb25lX2RlcHJlY2F0ZWQoKQorIAorICNlbmRpZgor IAorK2VudW0gY2xhc3MgQ2hkaXJNb2RlIHsKKysgICAgTm9uZSA9IDAsCisrICAgIEluUGFyZW50 LAorKyAgICBJbkNoaWxkCisrfTsKKytRX0RFQ0xBUkVfTUVUQVRZUEUoQ2hkaXJNb2RlKQorKwor K3ZvaWQgdHN0X1FQcm9jZXNzOjpzdGFydEZyb21DdXJyZW50V29ya2luZ0Rpcl9kYXRhKCkKKyt7 CisrICAgIHFSZWdpc3Rlck1ldGFUeXBlPENoZGlyTW9kZT4oKTsKKysgICAgUVRlc3Q6OmFkZENv bHVtbjxRU3RyaW5nPigicHJvZ3JhbVByZWZpeCIpOworKyAgICBRVGVzdDo6YWRkQ29sdW1uPENo ZGlyTW9kZT4oImNoZGlyTW9kZSIpOworKyAgICBRVGVzdDo6YWRkQ29sdW1uPGJvb2w+KCJzdWNj ZXNzIik7CisrCisrICAgIGNvbnN0ZXhwciBib29sIElzV2luZG93cyA9IHRydWUKKysjaWZkZWYg UV9PU19VTklYCisrICAgICAgICAgICAgJiYgZmFsc2UKKysjZW5kaWYKKysgICAgICAgICAgICA7 CisrCisrICAgIC8vIGJhc2VsaW5lOiB0cnlpbmcgdG8gZXhlY3V0ZSB0aGUgZGlyZWN0b3J5LCB0 aGlzIGNhbid0IHBvc3NpYmx5IHN1Y2NlZWQhCisrICAgIFFUZXN0OjpuZXdSb3coInBsYWluLXNh bWUtY3dkIikgPDwgUVN0cmluZygpIDw8IENoZGlyTW9kZTo6Tm9uZSA8PCBmYWxzZTsKKysKKysg ICAgLy8gY3Jvc3MtcGxhdGZvcm0gYmVoYXZpb3I6IG5laXRoZXIgT1Mgc2VhcmNoZXMgdGhlIHNl dFdvcmtpbmdEaXJlY3RvcnkoKQorKyAgICAvLyBkaXIgd2l0aG91dCAiLi8iCisrICAgIFFUZXN0 OjpuZXdSb3coInBsYWluLWNoaWxkLWNoZGlyIikgPDwgUVN0cmluZygpIDw8IENoZGlyTW9kZTo6 SW5DaGlsZCA8PCBmYWxzZTsKKysKKysgICAgLy8gY3Jvc3MtcGxhdGZvcm0gYmVoYXZpb3I6IGJv dGggT1NlcyBzZWFyY2ggdGhlIHBhcmVudCdzIENXRCB3aXRoICIuLyIKKysgICAgUVRlc3Q6Om5l d1JvdygicHJlZml4ZWQtcGFyZW50LWNoZGlyIikgPDwgIi4vIiA8PCBDaGRpck1vZGU6OkluUGFy ZW50IDw8IHRydWU7CisrCisrICAgIC8vIG9wcG9zaXRlIGJlaGF2aW9yczogV2luZG93cyBzZWFy Y2hlcyB0aGUgcGFyZW50J3MgQ1dEIGFuZCBVbml4IHNlYXJjaGVzCisrICAgIC8vIHRoZSBjaGls ZCdzIHdpdGggIi4vIgorKyAgICBRVGVzdDo6bmV3Um93KCJwcmVmaXhlZC1jaGlsZC1jaGRpciIp IDw8ICIuLyIgPDwgQ2hkaXJNb2RlOjpJbkNoaWxkIDw8ICFJc1dpbmRvd3M7CisrCisrICAgIC8v IFdpbmRvd3Mgc2VhcmNoZXMgdGhlIHBhcmVudCdzIENXRCB3aXRob3V0ICIuLyIKKysgICAgUVRl c3Q6Om5ld1JvdygicGxhaW4tcGFyZW50LWNoZGlyIikgPDwgUVN0cmluZygpIDw8IENoZGlyTW9k ZTo6SW5QYXJlbnQgPDwgSXNXaW5kb3dzOworK30KKysKKyt2b2lkIHRzdF9RUHJvY2Vzczo6c3Rh cnRGcm9tQ3VycmVudFdvcmtpbmdEaXIoKQorK3sKKysgICAgUUZFVENIKFFTdHJpbmcsIHByb2dy YW1QcmVmaXgpOworKyAgICBRRkVUQ0goQ2hkaXJNb2RlLCBjaGRpck1vZGUpOworKyAgICBRRkVU Q0goYm9vbCwgc3VjY2Vzcyk7CisrCisrICAgIFFQcm9jZXNzIHByb2Nlc3M7CisrICAgIHFSZWdp c3Rlck1ldGFUeXBlPFFQcm9jZXNzOjpQcm9jZXNzRXJyb3I+KCk7CisrICAgIFFTaWduYWxTcHkg ZXJyb3JTcHkoJnByb2Nlc3MsICZRUHJvY2Vzczo6ZXJyb3JPY2N1cnJlZCk7CisrICAgIFFWRVJJ RlkoZXJyb3JTcHkuaXNWYWxpZCgpKTsKKysKKysgICAgLy8gYm90aCB0aGUgZGlyIG5hbWUgYW5k IHRoZSBleGVjdXRhYmxlIG5hbWUKKysgICAgY29uc3QgUVN0cmluZyB0YXJnZXQgPSBRU3RyaW5n TGl0ZXJhbCgidGVzdFByb2Nlc3NOb3JtYWwiKTsKKysgICAgcHJvY2Vzcy5zZXRQcm9ncmFtKHBy b2dyYW1QcmVmaXggKyB0YXJnZXQpOworKworKyNpZmRlZiBRX09TX1VOSVgKKysgICAgLy8gUmVz ZXQgUEFUSCwgdG8gYmUgc3VyZSBpdCBkb2Vzbid0IGNvbnRhaW4gLiBvciB0aGUgZW1wdHkgcGF0 aC4KKysgICAgLy8gV2UgY2FuJ3QgZG8gdGhpcyBvbiBXaW5kb3dzIGJlY2F1c2UgRExMcyBhcmUg c2VhcmNoZWQgaW4gUEFUSAorKyAgICAvLyBhbmQgV2luZG93cyBhbHdheXMgc2VhcmNoZXMgIi4i IGFueXdheS4KKysgICAgYXV0byByZXN0b3JlRW52ID0gcVNjb3BlR3VhcmQoW29sZCA9IHFnZXRl bnYoIlBBVEgiKV0geworKyAgICAgICAgcXB1dGVudigiUEFUSCIsIG9sZCk7CisrICAgIH0pOwor KyAgICBxcHV0ZW52KCJQQVRIIiwgIi8iKTsKKysjZW5kaWYKKysKKysgICAgc3dpdGNoIChjaGRp ck1vZGUpIHsKKysgICAgY2FzZSBDaGRpck1vZGU6OkluUGFyZW50OiB7CisrICAgICAgICBhdXRv IHJlc3RvcmVDd2QgPSBxU2NvcGVHdWFyZChbb2xkID0gUURpcjo6Y3VycmVudFBhdGgoKV0gewor KyAgICAgICAgICAgIFFEaXI6OnNldEN1cnJlbnQob2xkKTsKKysgICAgICAgIH0pOworKyAgICAg ICAgUVZFUklGWShRRGlyOjpzZXRDdXJyZW50KHRhcmdldCkpOworKyAgICAgICAgcHJvY2Vzcy5z dGFydCgpOworKyAgICAgICAgYnJlYWs7CisrICAgIH0KKysgICAgY2FzZSBDaGRpck1vZGU6Oklu Q2hpbGQ6CisrICAgICAgICBwcm9jZXNzLnNldFdvcmtpbmdEaXJlY3RvcnkodGFyZ2V0KTsKKysg ICAgICAgIFFfRkFMTFRIUk9VR0goKTsKKysgICAgY2FzZSBDaGRpck1vZGU6Ok5vbmU6CisrICAg ICAgICBwcm9jZXNzLnN0YXJ0KCk7CisrICAgICAgICBicmVhazsKKysgICAgfQorKworKyAgICBR Q09NUEFSRShwcm9jZXNzLndhaXRGb3JTdGFydGVkKCksIHN1Y2Nlc3MpOworKyAgICBRQ09NUEFS RShlcnJvclNweS5jb3VudCgpLCBpbnQoIXN1Y2Nlc3MpKTsKKysgICAgaWYgKHN1Y2Nlc3MpIHsK KysgICAgICAgIFFWRVJJRlkocHJvY2Vzcy53YWl0Rm9yRmluaXNoZWQoKSk7CisrICAgIH0gZWxz ZSB7CisrICAgICAgICBRQ09NUEFSRShwcm9jZXNzLmVycm9yKCksIFFQcm9jZXNzOjpGYWlsZWRU b1N0YXJ0KTsKKysgICAgfQorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RUHJvY2VzcykKKyAjaW5j bHVkZSAidHN0X3Fwcm9jZXNzLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9j b3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNh dGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0 ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFi bGVzcHJveHltb2RlbC5jcHAKK2luZGV4IGUxZWE3YTQ1NTIuLjkwOTcyY2FhNTcgMTAwNjQ0Cist LS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFi bGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAKKysrKyBi L3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNw cm94eW1vZGVsL3RzdF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLmNwcAorQEAgLTExNyw2 ICsxMTcsNyBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgc2hvdWxkUHJvcGFnYXRlRHJv cEFmdGVyTGFzdFJvd19kYXRhKCk7CisgICAgIHZvaWQgc2hvdWxkUHJvcGFnYXRlRHJvcEFmdGVy TGFzdFJvdygpOworICAgICB2b2lkIHF0YnVnOTE3ODgoKTsKKysgICAgdm9pZCBxdGJ1ZzkxODc4 KCk7CisgCisgcHJpdmF0ZToKKyAgICAgUVN0YW5kYXJkSXRlbU1vZGVsIG1vZDsKK0BAIC04NDMs NiArODQ0LDIyIEBAIHZvaWQgdHN0X1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWw6OnF0YnVn OTE3ODgoKQorICAgICBRQ09NUEFSRShwcm94eUNvbmNhdC5jb2x1bW5Db3VudCgpLCAwKTsKKyB9 CisgCisrdm9pZCB0c3RfUUNvbmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbDo6cXRidWc5MTg3OCgp CisreworKyAgICBRU3RhbmRhcmRJdGVtTW9kZWwgbTsKKysgICAgbS5zZXRSb3dDb3VudCg0KTsK KysgICAgbS5zZXRDb2x1bW5Db3VudCg0KTsKKysKKysgICAgUUNvbmNhdGVuYXRlVGFibGVzUHJv eHlNb2RlbCBwbTsKKysgICAgUVNvcnRGaWx0ZXJQcm94eU1vZGVsIHByb3h5RmlsdGVyOworKyAg ICBwcm94eUZpbHRlci5zZXRTb3VyY2VNb2RlbCgmcG0pOworKyAgICBwcm94eUZpbHRlci5zZXRG aWx0ZXJGaXhlZFN0cmluZygic29tZXRoaW5nIik7CisrICAgIHBtLmFkZFNvdXJjZU1vZGVsKCZt KTsgIC8vIFRoaXMgc2hvdWxkIG5vdCBhc3NlcnQKKysKKysgICAgUUNPTVBBUkUocG0uY29sdW1u Q291bnQoKSwgNCk7CisrICAgIFFDT01QQVJFKHBtLnJvd0NvdW50KCksIDQpOworK30KKysKKyBR VEVTVF9HVUlMRVNTX01BSU4odHN0X1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWwpCisgCisg I2luY2x1ZGUgInRzdF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLm1vYyIKK2RpZmYgLS1n aXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0 LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmpl Y3QuY3BwCitpbmRleCA5YmQ2NmMwODM1Li5lZDRhMGJhZTVkIDEwMDY0NAorLS0tIGEvcXRiYXNl L3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9iamVjdC90c3RfcW9iamVjdC5jcHAKKysrKyBi L3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3Bw CitAQCAtMTU4LDYgKzE1OCw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgbnVsbFJlY2Vp dmVyKCk7CisgICAgIHZvaWQgZnVuY3RvclJlZmVyZW5jZXNDb25uZWN0aW9uKCk7CisgICAgIHZv aWQgZGlzY29ubmVjdERpc2Nvbm5lY3RzKCk7CisrICAgIHZvaWQgZGVjbGFyYXRpdmVEYXRhKCk7 CisgfTsKKyAKKyBzdHJ1Y3QgUU9iamVjdENyZWF0ZWRPblNodXRkb3duCitAQCAtNzY3OSw1ICs3 NjgwLDgxIEBAIHZvaWQgdHN0X1FPYmplY3Q6OmRpc2Nvbm5lY3REaXNjb25uZWN0cygpCisgUV9T VEFUSUNfQVNTRVJUKFF0UHJpdmF0ZTo6SGFzUV9PQkpFQ1RfTWFjcm88dHN0X1FPYmplY3Q+OjpW YWx1ZSk7CisgUV9TVEFUSUNfQVNTRVJUKCFRdFByaXZhdGU6Okhhc1FfT0JKRUNUX01hY3JvPFNp YmxpbmdEZWxldGVyPjo6VmFsdWUpOworIAorKyNpZmRlZiBRVF9CVUlMRF9JTlRFUk5BTAorKy8q CisrICAgIFNpbmNlIFFPYmplY3RQcml2YXRlIHN0b3JlcyB0aGUgZGVjbGFyYXRpdmVEYXRhIHBv aW50ZXIgaW4gYSB1bmlvbiB3aXRoIHRoZSBwb2ludGVyCisrICAgIHRvIHRoZSBjdXJyZW50bHkg ZGVzdHJveWVkIGNoaWxkLCBjYWxscyB0byB0aGUgUXREZWNsYXJhdGl2ZSBoYW5kbGVycyBuZWVk IHRvIGJlCisrICAgIGNvcnJlY3RseSBndWFyZGVkLiBRVEJVRy0xMDUyODYKKysqLworK25hbWVz cGFjZSBRdERlY2xhcmF0aXZlIHsKKytzdGF0aWMgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICp0 aGVEYXRhOworKworK3N0YXRpYyB2b2lkIGRlc3Ryb3llZChRQWJzdHJhY3REZWNsYXJhdGl2ZURh dGEgKmRhdGEsIFFPYmplY3QgKikKKyt7CisrICAgIFFDT01QQVJFKGRhdGEsIHRoZURhdGEpOwor K30KKytzdGF0aWMgdm9pZCBzaWduYWxFbWl0dGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAq ZGF0YSwgUU9iamVjdCAqLCBpbnQsIHZvaWQgKiopCisreworKyAgICBRQ09NUEFSRShkYXRhLCB0 aGVEYXRhKTsKKyt9CisrLy8gd2UgY2FuJ3QgdXNlIFFDT01QQVJFIGluIHRoZSBuZXh0IHR3byBm dW5jdGlvbnMsIGFzIHRoZXkgZG9uJ3QgcmV0dXJuIHZvaWQKKytzdGF0aWMgaW50IHJlY2VpdmVy cyhRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRhdGEsIGNvbnN0IFFPYmplY3QgKiwgaW50KQor K3sKKysgICAgUVRlc3Q6OnFDb21wYXJlKGRhdGEsIHRoZURhdGEsICJkYXRhIiwgInRoZURhdGEi LCBfX0ZJTEVfXywgX19MSU5FX18pOworKyAgICByZXR1cm4gMDsKKyt9Cisrc3RhdGljIGJvb2wg aXNTaWduYWxDb25uZWN0ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBjb25zdCBR T2JqZWN0ICosIGludCkKKyt7CisrICAgIFFUZXN0OjpxQ29tcGFyZShkYXRhLCB0aGVEYXRhLCAi ZGF0YSIsICJ0aGVEYXRhIiwgX19GSUxFX18sIF9fTElORV9fKTsKKysgICAgcmV0dXJuIHRydWU7 CisrfQorKworK2NsYXNzIE9iamVjdCA6IHB1YmxpYyBRT2JqZWN0CisreworKyAgICBRX09CSkVD VAorK3B1YmxpYzoKKysgICAgdXNpbmcgUU9iamVjdDo6UU9iamVjdDsKKysgICAgfk9iamVjdCgp CisrICAgIHsKKysgICAgICAgIGlmIChPYmplY3QgKnAgPSBzdGF0aWNfY2FzdDxPYmplY3QgKj4o cGFyZW50KCkpKQorKyAgICAgICAgICAgIHAtPmVtaXRTaWduYWwoKTsKKysgICAgfQorKworKyAg ICB2b2lkIGVtaXRTaWduYWwoKQorKyAgICB7CisrICAgICAgICBlbWl0IHRoZVNpZ25hbCgpOwor KyAgICB9CisrCisrc2lnbmFsczoKKysgICAgdm9pZCB0aGVTaWduYWwoKTsKKyt9OworKworK30K KysjZW5kaWYKKysKKyt2b2lkIHRzdF9RT2JqZWN0OjpkZWNsYXJhdGl2ZURhdGEoKQorK3sKKysj aWZkZWYgUVRfQlVJTERfSU5URVJOQUwKKysgICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sgZGVzdHJv eWVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6ZGVzdHJveWVkLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2ZTo6ZGVzdHJveWVkKTsKKysgICAgUVNj b3BlZFZhbHVlUm9sbGJhY2sgc2lnbmFsRW1pdHRlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6 OnNpZ25hbEVtaXR0ZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UXREZWNsYXJhdGl2ZTo6c2lnbmFsRW1pdHRlZCk7CisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNr IHJlY2VpdmVycyhRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycywKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0RGVjbGFyYXRpdmU6OnJlY2VpdmVycyk7Cisr ICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIGlzU2lnbmFsQ29ubmVjdGVkKFFBYnN0cmFjdERlY2xh cmF0aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0ZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFF0RGVjbGFyYXRpdmU6OmlzU2lnbmFsQ29ubmVjdGVkKTsKKysK KysgICAgUXREZWNsYXJhdGl2ZTo6T2JqZWN0IHA7CisrICAgIFFPYmplY3RQcml2YXRlICpwcml2 ID0gUU9iamVjdFByaXZhdGU6OmdldCgmcCk7CisrICAgIHByaXYtPmRlY2xhcmF0aXZlRGF0YSA9 IFF0RGVjbGFyYXRpdmU6OnRoZURhdGEgPSBuZXcgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOwor KworKyAgICBjb25uZWN0KCZwLCAmUXREZWNsYXJhdGl2ZTo6T2JqZWN0Ojp0aGVTaWduYWwsICZw LCBbXXsKKysgICAgfSk7CisrCisrICAgIFF0RGVjbGFyYXRpdmU6Ok9iamVjdCAqY2hpbGQgPSBu ZXcgUXREZWNsYXJhdGl2ZTo6T2JqZWN0OworKyAgICBjaGlsZC0+c2V0UGFyZW50KCZwKTsKKysj ZW5kaWYKKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUU9iamVjdCkKKyAjaW5jbHVkZSAidHN0X3Fv YmplY3QubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5 cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3FtaW1lZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAK K2luZGV4IDBlYTQyMmVjYmMuLjFhMzI1NjUzNGIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMv YXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNw cAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFz ZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAKK0BAIC03MCwxNSArNzAsMTUgQEAgc3RhdGljIGlubGlu ZSBRU3RyaW5nIHRlc3RTdWl0ZVdhcm5pbmcoKQorIAorICAgICBRU3RyaW5nIHJlc3VsdDsKKyAg ICAgUVRleHRTdHJlYW0gc3RyKCZyZXN1bHQpOworLSAgICBzdHIgPDwgIlxuQ2Fubm90IGZpbmQg dGhlIHNoYXJlZC1taW1lLWluZm8gdGVzdCBzdWl0ZVxuc3RhcnRpbmcgZnJvbTogIgorKyAgICBz dHIgPDwgIlxuQ2Fubm90IGZpbmQgdGhlIHNoYXJlZC1taW1lLWluZm8gdGVzdCBzdWl0ZVxuaW4g dGhlIHBhcmVudCBvZjogIgorICAgICAgICAgPDwgUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKFFE aXI6OmN1cnJlbnRQYXRoKCkpIDw8ICJcbiIKKyAgICAgICAgICAgICJjZCAiIDw8IFFEaXI6OnRv TmF0aXZlU2VwYXJhdG9ycyhRU3RyaW5nTGl0ZXJhbCgidGVzdHMvYXV0by9jb3JlbGliL21pbWV0 eXBlcy9xbWltZWRhdGFiYXNlIikpIDw8ICJcbiIKKy0gICAgICAgICAgICJ3Z2V0IGh0dHA6Ly9j Z2l0LmZyZWVkZXNrdG9wLm9yZy94ZGcvc2hhcmVkLW1pbWUtaW5mby9zbmFwc2hvdC9SZWxlYXNl LTEtMTAuemlwXG4iCistICAgICAgICAgICAidW56aXAgUmVsZWFzZS0xLTEwLnppcFxuIjsKKysg ICAgICAgICAgICJ3Z2V0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy94ZGcvc2hhcmVk LW1pbWUtaW5mby8tL2FyY2hpdmUvMi4xL3NoYXJlZC1taW1lLWluZm8tMi4xLnppcFxuIgorKyAg ICAgICAgICAgInVuemlwIHNoYXJlZC1taW1lLWluZm8tMi4xLnppcFxuIjsKKyAjaWZkZWYgUV9P U19XSU4KKy0gICAgc3RyIDw8ICJta2RpciB0ZXN0ZmlsZXNcbnhjb3B5IC9zIFJlbGVhc2UtMS0x MCBzLW0taVxuIjsKKysgICAgc3RyIDw8ICJta2RpciB0ZXN0ZmlsZXNcbnhjb3B5IC9zIHNoYXJl ZC1taW1lLWluZm8tMi4xIHMtbS1pXG4iOworICNlbHNlCistICAgIHN0ciA8PCAibG4gLXMgUmVs ZWFzZS0xLTEwIHMtbS1pXG4iOworKyAgICBzdHIgPDwgImxuIC1zIHNoYXJlZC1taW1lLWluZm8t Mi4xIHMtbS1pXG4iOworICNlbmRpZgorICAgICByZXR1cm4gcmVzdWx0OworIH0KK0BAIC0xNTQs NyArMTU0LDcgQEAgdm9pZCB0c3RfUU1pbWVEYXRhYmFzZTo6aW5pdFRlc3RDYXNlKCkKKyAgICAg UVZFUklGWTIoY29weVJlc291cmNlRmlsZSh4bWxGaWxlTmFtZSwgeG1sVGFyZ2V0RmlsZU5hbWUs ICZlcnJvck1lc3NhZ2UpLCBxUHJpbnRhYmxlKGVycm9yTWVzc2FnZSkpOworICNlbmRpZgorIAor LSAgICBtX3Rlc3RTdWl0ZSA9IFFGSU5EVEVTVERBVEEoInMtbS1pL3Rlc3RzIik7CisrICAgIG1f dGVzdFN1aXRlID0gUUZJTkRURVNUREFUQSgicy1tLWkvdGVzdHMvbWltZS1kZXRlY3Rpb24iKTsK KyAgICAgaWYgKG1fdGVzdFN1aXRlLmlzRW1wdHkoKSkKKyAgICAgICAgIHFXYXJuaW5nKCIlcyIs IHFQcmludGFibGUodGVzdFN1aXRlV2FybmluZygpKSk7CisgCitAQCAtNjExLDcgKzYxMSw3IEBA IHZvaWQgdHN0X1FNaW1lRGF0YWJhc2U6OmFsbE1pbWVUeXBlcygpCisgICAgIFFWRVJJRlkoIWxz dC5pc0VtcHR5KCkpOworIAorICAgICAvLyBIYXJkY29kaW5nIHRoaXMgaXMgdGhlIG9ubHkgd2F5 IHRvIGNoZWNrIGJvdGggcHJvdmlkZXJzIGZpbmQgdGhlIHNhbWUgbnVtYmVyIG9mIG1pbWV0eXBl cy4KKy0gICAgUUNPTVBBUkUobHN0LmNvdW50KCksIDc3OSk7CisrICAgIFFDT01QQVJFKGxzdC5j b3VudCgpLCA4MTEpOworIAorICAgICBmb3JlYWNoIChjb25zdCBRTWltZVR5cGUgJm1pbWUsIGxz dCkgeworICAgICAgICAgY29uc3QgUVN0cmluZyBuYW1lID0gbWltZS5uYW1lKCk7CitAQCAtNjMx LDEwICs2MzEsOSBAQCB2b2lkIHRzdF9RTWltZURhdGFiYXNlOjpzdWZmaXhlc19kYXRhKCkKKyAK KyAgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUgd2l0aCBhIHNpbmdsZSBwYXR0ZXJuIikgPDwg ImFwcGxpY2F0aW9uL3BkZiIgPDwgIioucGRmIiA8PCAicGRmIjsKKyAgICAgUVRlc3Q6Om5ld1Jv dygibWltZXR5cGUgd2l0aCBtdWx0aXBsZSBwYXR0ZXJucyIpIDw8ICJhcHBsaWNhdGlvbi94LWtw cmVzZW50ZXIiIDw8ICIqLmtwcjsqLmtwdCIgPDwgImtwciI7CistICAgIFFUZXN0OjpuZXdSb3co ImpwZWciKSA8PCAiaW1hZ2UvanBlZyIgPDwgIiouanBlOyouanBnOyouanBlZyIgPDwgImpwZWci OworLSAgICAvL2lmIChLTWltZVR5cGU6OnNoYXJlZE1pbWVJbmZvVmVyc2lvbigpID4gS0RFX01B S0VfVkVSU0lPTigwLCA2MCwgMCkpIHsKKy0gICAgICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBl IHdpdGggbWFueSBwYXR0ZXJucyIpIDw8ICJhcHBsaWNhdGlvbi92bmQud29yZHBlcmZlY3QiIDw8 ICIqLndwOyoud3A0Oyoud3A1Oyoud3A2Oyoud3BkOyoud3BwIiA8PCAid3AiOworLSAgICAvL30K KysgICAgLy8gVGhlIHByZWZlcnJlZCBzdWZmaXggZm9yIGltYWdlL2pwZWcgaXMgKi5qcGcsIGFz IHBlciBodHRwczovL2J1Z3Mua2RlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzM3CisrICAgIFFU ZXN0OjpuZXdSb3coImpwZWciKSA8PCAiaW1hZ2UvanBlZyIgPDwgIiouanBlOyouanBnOyouanBl ZyIgPDwgImpwZyI7CisrICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbWFueSBwYXR0 ZXJucyIpIDw8ICJhcHBsaWNhdGlvbi92bmQud29yZHBlcmZlY3QiIDw8ICIqLndwOyoud3A0Oyou d3A1Oyoud3A2Oyoud3BkOyoud3BwIiA8PCAid3AiOworICAgICBRVGVzdDo6bmV3Um93KCJvYXNp cyB0ZXh0IG1pbWV0eXBlIikgPDwgImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQu dGV4dCIgPDwgIioub2R0IiA8PCAib2R0IjsKKyAgICAgUVRlc3Q6Om5ld1Jvdygib2FzaXMgcHJl c2VudGF0aW9uIG1pbWV0eXBlIikgPDwgImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1l bnQucHJlc2VudGF0aW9uIiA8PCAiKi5vZHAiIDw8ICJvZHAiOworICAgICBRVGVzdDo6bmV3Um93 KCJtaW1ldHlwZSB3aXRoIG11bHRpcGxlIHBhdHRlcm5zIikgPDwgInRleHQvcGxhaW4iIDw8ICIq LmFzYzsqLnR4dDsqLHYiIDw8ICJ0eHQiOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRv L2NvcmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3BwIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vY29yZWxpYi9zZXJpYWxpemF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKK2luZGV4IDNl NThkZDAzY2MuLmM4ZjgyZWY1ZDUgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3Jl bGliL3NlcmlhbGl6YXRpb24vanNvbi90c3RfcXRqc29uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vY29yZWxpYi9zZXJpYWxpemF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKK0BAIC0xNzYs NiArMTc2LDggQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIGZyb21Ub1ZhcmlhbnRDb252 ZXJzaW9uc19kYXRhKCk7CisgICAgIHZvaWQgZnJvbVRvVmFyaWFudENvbnZlcnNpb25zKCk7Cisg CisrICAgIHZvaWQgbm9MZWFrT25OYW1lQ2xhc2goKTsKKysKKyBwcml2YXRlOgorICAgICBRU3Ry aW5nIHRlc3REYXRhRGlyOworIH07CitAQCAtMzY4NSw1ICszNjg3LDIzIEBAIHZvaWQgdHN0X1F0 SnNvbjo6ZnJvbVRvVmFyaWFudENvbnZlcnNpb25zKCkKKyAgICAgfQorIH0KKyAKKyt2b2lkIHRz dF9RdEpzb246Om5vTGVha09uTmFtZUNsYXNoKCkKKyt7CisrICAgIFFKc29uRG9jdW1lbnQgZG9j ID0gUUpzb25Eb2N1bWVudDo6ZnJvbUpzb24oIntcIlwiOntcIlwiOjB9LFwiXCI6MH0iKTsKKysg ICAgUVZFUklGWSghZG9jLmlzTnVsbCgpKTsKKysgICAgY29uc3QgUUpzb25PYmplY3Qgb2JqID0g ZG9jLm9iamVjdCgpOworKworKyAgICAvLyBSZW1vdmVkIHRoZSBkdXBsaWNhdGUga2V5LgorKyAg ICBRQ09NUEFSRShvYmoubGVuZ3RoKCksIDEpOworKworKyAgICAvLyBSZXRhaW5lZCB0aGUgbGFz dCBvZiB0aGUgZHVwbGljYXRlcy4KKysgICAgY29uc3QgUUpzb25WYWx1ZSB2YWwgPSBvYmouYmVn aW4oKS52YWx1ZSgpOworKyAgICBRVkVSSUZZKHZhbC5pc0RvdWJsZSgpKTsKKysgICAgUUNPTVBB UkUodmFsLnRvRG91YmxlKCksIDAuMCk7CisrCisrICAgIC8vIEl0IHNob3VsZCBub3QgbGVhay4K KysgICAgLy8gSW4gcGFydGljdWxhciBpdCBzaG91bGQgbm90IGZvcmdldCB0byBkZXJlZiB0aGUg Y29udGFpbmVyIGZvciB0aGUgaW5uZXIgb2JqZWN0LgorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9R dEpzb24pCisgI2luY2x1ZGUgInRzdF9xdGpzb24ubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL2NvcmVsaWIvdGltZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAgYi9xdGJh c2UvdGVzdHMvYXV0by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9xdGltZXpvbmUuY3BwCitp bmRleCBhNTliNThkNTdmLi4yNDFjM2U4NGFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1 dG8vY29yZWxpYi90aW1lL3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcAorKysrIGIvcXRiYXNl L3Rlc3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcAorQEAg LTYzLDYgKzYzLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBpc1ZhbGlkSWRfZGF0YSgp OworICAgICB2b2lkIGlzVmFsaWRJZCgpOworICAgICB2b2lkIG1hbGZvcm1lZCgpOworKyAgICB2 b2lkIHNlcmlhbGl6ZSgpOworICAgICAvLyBCYWNrZW5kIHRlc3RzCisgICAgIHZvaWQgdXRjVGVz dCgpOworICAgICB2b2lkIGljdVRlc3QoKTsKK0BAIC05NDcsNiArOTQ4LDMzIEBAIHZvaWQgdHN0 X1FUaW1lWm9uZTo6bWFsZm9ybWVkKCkKKyAgICAgICAgIGJhcmYub2Zmc2V0RnJvbVV0Yyhub3cp OworIH0KKyAKKyt2b2lkIHRzdF9RVGltZVpvbmU6OnNlcmlhbGl6ZSgpCisreworKyAgICBpbnQg cGFydHMgPSAwOworKyNpZm5kZWYgUVRfTk9fREVCVUdfU1RSRUFNCisrICAgIHFEZWJ1ZygpIDw8 IFFUaW1lWm9uZSgpOyAvLyB0byB2ZXJpZnkgbm8gY3Jhc2gKKysgICAgcGFydHMrKzsKKysjZW5k aWYKKysjaWZuZGVmIFFUX05PX0RBVEFTVFJFQU0KKysgICAgUUJ5dGVBcnJheSBibG9iOworKyAg ICB7CisrICAgICAgICBRRGF0YVN0cmVhbSBzdHJlYW0oJmJsb2IsIFFJT0RldmljZTo6V3JpdGVP bmx5KTsKKysgICAgICAgIHN0cmVhbSA8PCBRVGltZVpvbmUoIkV1cm9wZS9Pc2xvIikgPDwgUVRp bWVab25lKDQyMCkgPDwgUVRpbWVab25lKCkgPDwgcWludDY0KC0xKTsKKysgICAgfQorKyAgICBR RGF0YVN0cmVhbSBzdHJlYW0oJmJsb2IsIFFJT0RldmljZTo6UmVhZE9ubHkpOworKyAgICBRVGlt ZVpvbmUgaW52YWxpZCwgb2Zmc2V0LCBvc2xvOworKyAgICBxaW50NjQgbWludXNvbmU7CisrICAg IHN0cmVhbSA+PiBvc2xvID4+IG9mZnNldCA+PiBpbnZhbGlkID4+IG1pbnVzb25lOworKyAgICBR Q09NUEFSRShvc2xvLCBRVGltZVpvbmUoIkV1cm9wZS9Pc2xvIikpOworKyAgICBRQ09NUEFSRShv ZmZzZXQsIFFUaW1lWm9uZSg0MjApKTsKKysgICAgUVZFUklGWSghaW52YWxpZC5pc1ZhbGlkKCkp OworKyAgICBRQ09NUEFSRShtaW51c29uZSwgcWludDY0KC0xKSk7CisrICAgIHBhcnRzKys7Cisr I2VuZGlmCisrICAgIGlmICghcGFydHMpCisrICAgICAgICBRU0tJUCgiTm8gc2VyaWFsaXphdGlv biBlbmFibGVkIik7CisrfQorKworIHZvaWQgdHN0X1FUaW1lWm9uZTo6dXRjVGVzdCgpCisgewor ICNpZmRlZiBRVF9CVUlMRF9JTlRFUk5BTAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRv L2RidXMvcWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcCBiL3F0YmFzZS90ZXN0 cy9hdXRvL2RidXMvcWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcAoraW5kZXgg MDU0ODBjNmRkMi4uNzBmNGM3NTc1NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2Ri dXMvcWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcAorKysrIGIvcXRiYXNlL3Rl c3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNpbnRlcmZhY2UuY3BwCitAQCAt MzI0LDYgKzMyNCwxMyBAQCB2b2lkIHRzdF9RREJ1c0ludGVyZmFjZTo6bm90VmFsaWQoKQorIAor ICAgICBRVkVSSUZZKCFpbnRlcmZhY2UuaXNWYWxpZCgpKTsKKyAgICAgUVZFUklGWSghUU1ldGFP YmplY3Q6Omludm9rZU1ldGhvZCgmaW50ZXJmYWNlLCAiTGlzdE5hbWVzIiwgUXQ6OkRpcmVjdENv bm5lY3Rpb24pKTsKKysKKysgICAgLy8gV2l0aCBhIGNvbm5lY3Rpb24sIGJ1dCBlbXB0eS9udWxs IHNlcnZpY2UgYW5kIHBhdGggc3BlY2lmaWVkCisrICAgIFFEQnVzQ29ubmVjdGlvbiBjb24gPSBR REJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKTsKKysgICAgUVZFUklGWShjb24uaXNDb25uZWN0 ZWQoKSk7CisrICAgIFFEQnVzSW50ZXJmYWNlIGlmYWNlKHt9LCB7fSwge30sIGNvbik7CisrICAg IFFWRVJJRlkoIWlmYWNlLmlzVmFsaWQoKSk7CisrICAgIFFWRVJJRlkoIVFNZXRhT2JqZWN0Ojpp bnZva2VNZXRob2QoJmludGVyZmFjZSwgIkxpc3ROYW1lcyIsIFF0OjpEaXJlY3RDb25uZWN0aW9u KSk7CisgfQorIAorIHZvaWQgdHN0X1FEQnVzSW50ZXJmYWNlOjpub3RWYWxpZERlcml2ZWQoKQor ZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlL3Rz dF9xa2V5c2VxdWVuY2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2Vx dWVuY2UvdHN0X3FrZXlzZXF1ZW5jZS5jcHAKK2luZGV4IDg3NDQ2OGM5NTQuLjA0Y2ViNGFiNjUg MTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90 c3RfcWtleXNlcXVlbmNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9x a2V5c2VxdWVuY2UvdHN0X3FrZXlzZXF1ZW5jZS5jcHAKK0BAIC01MDcsNiArNTA3LDEwIEBAIHZv aWQgdHN0X1FLZXlTZXF1ZW5jZTo6dG9TdHJpbmdGcm9tS2V5Y29kZV9kYXRhKCkKKyAgICAgUVRl c3Q6Om5ld1JvdygiQ3RybCtBbHQrTnVtK0RlbCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6Q29udHJv bE1vZGlmaWVyIHwgUXQ6OkFsdE1vZGlmaWVyIHwgUXQ6OktleXBhZE1vZGlmaWVyIHwgUXQ6Oktl eV9EZWxldGUpIDw8ICJDdHJsK0FsdCtOdW0rRGVsIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygiQ3Ry bCtJbnMiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OkNvbnRyb2xNb2RpZmllciB8IFF0OjpLZXlfSW5z ZXJ0KSA8PCAiQ3RybCtJbnMiOworICAgICBRVGVzdDo6bmV3Um93KCJDdHJsK051bStJbnMoMSki KSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9JbnNlcnQgfCBRdDo6S2V5cGFkTW9kaWZpZXIgfCBR dDo6Q29udHJvbE1vZGlmaWVyKSA8PCAiQ3RybCtOdW0rSW5zIjsKKysgICAgUVRlc3Q6Om5ld1Jv dygiQ3RybCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X0NvbnRyb2wpIDw8ICJDb250cm9sIjsK KysgICAgUVRlc3Q6Om5ld1JvdygiQWx0IikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfQWx0KSA8 PCAiQWx0IjsKKysgICAgUVRlc3Q6Om5ld1JvdygiU2hpZnQiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6 OktleV9TaGlmdCkgPDwgIlNoaWZ0IjsKKysgICAgUVRlc3Q6Om5ld1JvdygiTWV0YSIpIDw8IFFL ZXlTZXF1ZW5jZShRdDo6S2V5X01ldGEpIDw8ICJNZXRhIjsKKyB9CisgCisgdm9pZCB0c3RfUUtl eVNlcXVlbmNlOjp0b1N0cmluZ0Zyb21LZXljb2RlKCkKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVz dHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRhdGFiYXNlLmNwcCBiL3F0 YmFzZS90ZXN0cy9hdXRvL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2Uu Y3BwCitpbmRleCAxNWUwZWNhZGFhLi5iNGVjYTc0MjgzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rl c3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAKKysr KyBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0 YWJhc2UuY3BwCitAQCAtODEsNiArODEsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHJl Z2lzdGVyT3BlblR5cGVQcmVmZXJyZWROYW1lc1N5c3RlbSgpOworICAgICB2b2lkIHJlZ2lzdGVy T3BlblR5cGVQcmVmZXJyZWROYW1lc0FwcGxpY2F0aW9uKCk7CisgCisrICAgIHZvaWQgc3RyZXRj aFJlc3BlY3RlZCgpOworKworIHByaXZhdGU6CisgICAgIFFTdHJpbmcgbV9sZWRGb250OworICAg ICBRU3RyaW5nIG1fdGVzdEZvbnQ7CitAQCAtMzU1LDYgKzM1NywyOCBAQCBzdGF0aWMgUVN0cmlu ZyB0ZXN0U3RyaW5nKCkKKyAgICAgcmV0dXJuIFFTdHJpbmdMaXRlcmFsKCJmb28gYmFyIik7Cisg fQorIAorK3ZvaWQgdHN0X1FGb250RGF0YWJhc2U6OnN0cmV0Y2hSZXNwZWN0ZWQoKQorK3sKKysg ICAgaW50IGl0YWxpY0lkID0gUUZvbnREYXRhYmFzZTo6YWRkQXBwbGljYXRpb25Gb250KG1fdGVz dEZvbnRJdGFsaWMpOworKyAgICBRVkVSSUZZKGl0YWxpY0lkICE9IC0xKTsKKysKKysgICAgUVZF UklGWSghUUZvbnREYXRhYmFzZTo6YXBwbGljYXRpb25Gb250RmFtaWxpZXMoaXRhbGljSWQpLmlz RW1wdHkoKSk7CisrCisrICAgIFFTdHJpbmcgaXRhbGljRm9udE5hbWUgPSBRRm9udERhdGFiYXNl OjphcHBsaWNhdGlvbkZvbnRGYW1pbGllcyhpdGFsaWNJZCkuZmlyc3QoKTsKKysKKysgICAgUUZv bnQgaXRhbGljRm9udCA9IFFGb250RGF0YWJhc2UoKS5mb250KGl0YWxpY0ZvbnROYW1lLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZzo6ZnJvbUxh dGluMSgiSXRhbGljIiksIDE0KTsKKysgICAgUVZFUklGWShpdGFsaWNGb250Lml0YWxpYygpKTsK KysKKysgICAgUUZvbnQgaXRhbGljU3RyZXRjaGVkRm9udCA9IGl0YWxpY0ZvbnQ7CisrICAgIGl0 YWxpY1N0cmV0Y2hlZEZvbnQuc2V0U3RyZXRjaCggNDAwICk7CisrCisrICAgIFFWRVJJRlkoUUZv bnRNZXRyaWNzRihpdGFsaWNGb250KS5ob3Jpem9udGFsQWR2YW5jZShRU3RyaW5nTGl0ZXJhbCgi Zm9vYmFyIikpIDwKKysgICAgICAgICAgICBRRm9udE1ldHJpY3NGKGl0YWxpY1N0cmV0Y2hlZEZv bnQpLmhvcml6b250YWxBZHZhbmNlKFFTdHJpbmdMaXRlcmFsKCJmb29iYXIiKSkpOworKworKyAg ICBRRm9udERhdGFiYXNlOjpyZW1vdmVBcHBsaWNhdGlvbkZvbnQoaXRhbGljSWQpOworK30KKysK KyB2b2lkIHRzdF9RRm9udERhdGFiYXNlOjpjb25kZW5zZWRGb250V2lkdGhOb0ZvbnRNZXJnaW5n KCkKKyB7CisgICAgIGludCByZWd1bGFyRm9udElkID0gUUZvbnREYXRhYmFzZTo6YWRkQXBwbGlj YXRpb25Gb250KG1fdGVzdEZvbnQpOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25l dHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3FuZXR3b3JrcmVwbHkuY3BwIGIvcXRiYXNl L3Rlc3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBs eS5jcHAKK2luZGV4IDNkNGEwOTRjNDMuLmI0MjNlMTFhOTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uv dGVzdHMvYXV0by9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5 LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBs eS90c3RfcW5ldHdvcmtyZXBseS5jcHAKK0BAIC0yODEsNiArMjgxLDcgQEAgcHJpdmF0ZSBRX1NM T1RTOgorICAgICB2b2lkIGlvR2V0RnJvbUZpbGVTcGVjaWFsKCk7CisgICAgIHZvaWQgaW9HZXRG cm9tRmlsZV9kYXRhKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRmlsZSgpOworKyAgICB2b2lkIGlv R2V0RnJvbUZpbGVVcmwoKTsKKyAgICAgdm9pZCBpb0dldEZyb21GdHBfZGF0YSgpOworICAgICB2 b2lkIGlvR2V0RnJvbUZ0cCgpOworICAgICB2b2lkIGlvR2V0RnJvbUZ0cFdpdGhSZXVzZSgpOwor QEAgLTMzMDAsNiArMzMwMSwxOCBAQCB2b2lkIHRzdF9RTmV0d29ya1JlcGx5Ojppb0dldEZyb21G aWxlKCkKKyAgICAgUUNPTVBBUkUocmVhZGVyLmRhdGEsIGRhdGEpOworIH0KKyAKKyt2b2lkIHRz dF9RTmV0d29ya1JlcGx5Ojppb0dldEZyb21GaWxlVXJsKCkKKyt7CisrICAgIC8vIFRoaXMgaW1t ZWRpYXRlbHkgZmFpbHMgb24gbm9uLXdpbmRvd3MgcGxhdGZvcm1zOgorKyAgICBRTmV0d29ya1Jl cXVlc3QgcmVxdWVzdChRVXJsKCJmaWxlOi8vdW5jLXNlcnZlci9zb21lL3BhdGgiKSk7CisrICAg IFFOZXR3b3JrUmVwbHlQdHIgcmVwbHkobWFuYWdlci5nZXQocmVxdWVzdCkpOworKyAgICBRU2ln bmFsU3B5IGZpbmlzaGVkU3B5KHJlcGx5LmdldCgpLCAmUU5ldHdvcmtSZXBseTo6ZmluaXNoZWQp OworKyAgICAvLyBRVEJVRy0xMDU2MTg6IFRoaXMgd291bGQsIG9uIG5vbi1XaW5kb3dzIHBsYXRm b3JtcywgbmV2ZXIgaGFwcGVuIGJlY2F1c2UgdGhlIHNpZ25hbAorKyAgICAvLyB3YXMgZW1pdHRl ZCBiZWZvcmUgdGhlIGNvbnN0cnVjdG9yIGZpbmlzaGVkLCBsZWF2aW5nIG5vIGNoYW5jZSBhdCBh bGwgdG8gY29ubmVjdCB0byB0aGUKKysgICAgLy8gc2lnbmFsCisrICAgIFFWRVJJRlkoZmluaXNo ZWRTcHkud2FpdCgpKTsKKyt9CisrCisgdm9pZCB0c3RfUU5ldHdvcmtSZXBseTo6aW9HZXRGcm9t RnRwX2RhdGEoKQorIHsKKyAgICAgUVRlc3Q6OmFkZENvbHVtbjxRU3RyaW5nPigiZmlsZU5hbWUi KTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0 L2NlcnRzL2ZsdWtlLmNlcnQgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29j a2V0L2NlcnRzL2ZsdWtlLmNlcnQKK2luZGV4IDA2OWZhNmIzNDEuLjRjYzRkOWE1ZWEgMTAwNjQ0 CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2Zs dWtlLmNlcnQKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQv Y2VydHMvZmx1a2UuY2VydAorQEAgLTEsNzUgKzEsMzQgQEAKKy1DZXJ0aWZpY2F0ZToKKy0gICAg RGF0YToKKy0gICAgICAgIFZlcnNpb246IDMgKDB4MikKKy0gICAgICAgIFNlcmlhbCBOdW1iZXI6 IDAgKDB4MCkKKy0gICAgICAgIFNpZ25hdHVyZSBBbGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlw dGlvbgorLSAgICAgICAgSXNzdWVyOiBDPU5PLCBTVD1Pc2xvLCBMPU55ZGFsZW4sIE89Tm9raWEg Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLCBPVT1EZXZlbG9wbWVudCwg Q049Zmx1a2UudHJvbGwubm8vZW1haWxBZGRyZXNzPWFoYW5zc2VuQHRyb2xsdGVjaC5jb20KKy0g ICAgICAgIFZhbGlkaXR5CistICAgICAgICAgICAgTm90IEJlZm9yZTogRGVjICA0IDAxOjEwOjMy IDIwMDcgR01UCistICAgICAgICAgICAgTm90IEFmdGVyIDogQXByIDIxIDAxOjEwOjMyIDIwMzUg R01UCistICAgICAgICBTdWJqZWN0OiBDPU5PLCBTVD1Pc2xvLCBPPU5va2lhIENvcnBvcmF0aW9u IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKSwgT1U9RGV2ZWxvcG1lbnQsIENOPWZsdWtlLnRy b2xsLm5vCistICAgICAgICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKKy0gICAgICAgICAgICBQ dWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlvbgorLSAgICAgICAgICAgIFJTQSBQdWJs aWMgS2V5OiAoMTAyNCBiaXQpCistICAgICAgICAgICAgICAgIE1vZHVsdXMgKDEwMjQgYml0KToK Ky0gICAgICAgICAgICAgICAgICAgIDAwOmE3OmM4OmEwOjRhOmM0OjE5OjA1OjFiOjY2OmJhOjMy OmUyOmQyOmYxOgorLSAgICAgICAgICAgICAgICAgICAgMWM6NmY6MTc6ODI6ZTQ6Mzk6MmU6MDE6 NTE6OTA6ZGI6MDQ6MzQ6MzI6MTE6CistICAgICAgICAgICAgICAgICAgICAyMTpjMjowZDo2Zjo1 OTpkODo1Mzo5MDo1NDozZjo4Mzo4ZjphOTpkMzpiMzoKKy0gICAgICAgICAgICAgICAgICAgIGQ1 OmVlOjFhOjliOjgwOmFlOmMzOjI1OmM5OjVlOmE1OmFmOjRiOjYwOjA1OgorLSAgICAgICAgICAg ICAgICAgICAgYWE6YTA6ZDE6OTE6MDE6MWY6Y2E6MDQ6ODM6ZTM6NTg6MWM6OTk6MzI6NDU6Cist ICAgICAgICAgICAgICAgICAgICA4NDo3MDo3Mjo1ODowMzo5ODo0YTo2Mzo4Yjo0MTpmNTowODo0 OTpkMjo5MToKKy0gICAgICAgICAgICAgICAgICAgIDAyOjYwOjZiOmU0OjY0OmZlOmRkOmEwOmFh Ojc0OjA4OmU5OjM0OjRjOjkxOgorLSAgICAgICAgICAgICAgICAgICAgNWY6MTI6M2Q6Mzc6NGQ6 NTQ6MmM6YWQ6N2Y6NWI6OTg6NjA6MzY6MDI6OGM6CistICAgICAgICAgICAgICAgICAgICAzYjpm Njo0NTpmMzoyNzo2YTo5Yjo5NDo5ZAorLSAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1Mzcg KDB4MTAwMDEpCistICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoKKy0gICAgICAgICAgICBYNTA5 djMgQmFzaWMgQ29uc3RyYWludHM6IAorLSAgICAgICAgICAgICAgICBDQTpGQUxTRQorLSAgICAg ICAgICAgIE5ldHNjYXBlIENvbW1lbnQ6IAorLSAgICAgICAgICAgICAgICBPcGVuU1NMIEdlbmVy YXRlZCBDZXJ0aWZpY2F0ZQorLSAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlm aWVyOiAKKy0gICAgICAgICAgICAgICAgMjE6ODU6MDQ6M0Q6MjM6MDE6NjY6RTU6Rjc6OUY6MUE6 ODQ6MjQ6OEE6QUY6MEE6Nzk6RjQ6RTU6QUMKKy0gICAgICAgICAgICBYNTA5djMgQXV0aG9yaXR5 IEtleSBJZGVudGlmaWVyOiAKKy0gICAgICAgICAgICAgICAgRGlyTmFtZTovQz1OTy9TVD1Pc2xv L0w9TnlkYWxlbi9PPU5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz KS9PVT1EZXZlbG9wbWVudC9DTj1mbHVrZS50cm9sbC5uby9lbWFpbEFkZHJlc3M9YWhhbnNzZW5A dHJvbGx0ZWNoLmNvbQorLSAgICAgICAgICAgICAgICBzZXJpYWw6OEU6QTg6QjQ6RTg6OTE6Qjc6 NTQ6MkUKKy0KKy0gICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9u CistICAgICAgICA2ZDo1Nzo1ZjpkMTowNTo0MzpmMDo2MjowNTplYzoyYTo3MTphNTpkYzoxOTow ODpmMjpjNDoKKy0gICAgICAgIGE2OmJkOmJiOjI1OmQ5OmNhOjg5OjAxOjBlOmU0OmNmOjFmOmMx OjhjOmM4OjI0OjE4OjM1OgorLSAgICAgICAgNTM6NTk6N2I6YzA6NDM6YjQ6MzI6ZTY6OTg6YjI6 YTY6ZWY6MTU6MDU6MGI6NDg6NWY6ZTE6CistICAgICAgICBhMDowYzo5NzphOTphMTo3NzpkODoz NToxODozMDpiYzphOTo4ZjpkMzpiNzo1NDpjNzpmMToKKy0gICAgICAgIGE5OjllOjVkOmU2OjE5 OmJmOmY2OjNjOjViOjJiOmQ4OmU0OjNlOjYyOjE4Ojg4OjhiOmQzOgorLSAgICAgICAgMjQ6ZTE6 NDA6OWI6MGM6ZTY6Mjk6MTY6NjI6YWI6ZWE6MDU6MjQ6NzA6MzY6YWE6NTU6OTM6CistICAgICAg ICBlZjowMjo4MToxYjoyMzoxMDphMjowNDplYjo1Njo5NTo3NTpmYzpmODo5NDpiMTo1ZDo0MjoK Ky0gICAgICAgIGM1OjNmOjM2OjQ0Ojg1OjVkOjNhOjJlOjkwOjQ2OjhhOmEyOmI5OjZmOjg3OmFl OjBjOjE1OgorLSAgICAgICAgNDA6MTk6MzE6OTA6ZmM6M2I6MjU6YmI6YWU6ZjE6NjY6MTM6MGQ6 ODU6OTA6ZDk6NDk6MzQ6CistICAgICAgICA4ZjpmMjo1ZDpmOTo3YTpkYjo0ZDo1ZDoyNzpmNjo3 Njo5ZDozNTo4YzowNjphNjo0YzphMzoKKy0gICAgICAgIGIxOmIyOmI2OjZmOjFkOmQ3OmEzOjAw OmZkOjcyOmViOjllOmVhOjQ0OmExOmFmOjIxOjM0OgorLSAgICAgICAgN2Q6Yzc6NDI6ZTI6NDk6 OTE6MTk6OGI6YzA6YWQ6YmE6ODI6ODA6YTg6NzE6NzA6ZjQ6MzU6CistICAgICAgICAzMTo5MTo2 Mzo4NDoyMDo5NTplOTo2MDphZjo2NDo4YjpjYzpmZjozZDo4YTo3Njo3NDozZDoKKy0gICAgICAg IGM4OjU1OjZkOmU0OjhlOmMzOjJiOjFjOmU4OjQyOjE4OmFlOjlmOmU2OjZiOjljOjM0OjA2Ogor LSAgICAgICAgZWM6NmE6ZjI6YzMKKyAtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KKy1NSUlF RXpDQ0F2dWdBd0lCQWdJQkFEQU5CZ2txaGtpRzl3MEJBUVVGQURDQm5ERUxNQWtHQTFVRUJoTUNU azh4CistRFRBTEJnTlZCQWdUQkU5emJHOHhFREFPQmdOVkJBY1RCMDU1WkdGc1pXNHhGakFVQmdO VkJBb1REVlJ5YjJ4cworLWRHVmphQ0JCVTBFeEZEQVNCZ05WQkFzVEMwUmxkbVZzYjNCdFpXNTBN UmN3RlFZRFZRUURFdzVtYkhWclpTNTAKKy1jbTlzYkM1dWJ6RWxNQ01HQ1NxR1NJYjNEUUVKQVJZ V1lXaGhibk56Wlc1QWRISnZiR3gwWldOb0xtTnZiVEFlCistRncwd056RXlNRFF3TVRFd016SmFG dzB6TlRBME1qRXdNVEV3TXpKYU1HTXhDekFKQmdOVkJBWVRBazVQTVEwdworLUN3WURWUVFJRXdS UGMyeHZNUll3RkFZRFZRUUtFdzFVY205c2JIUmxZMmdnUVZOQk1SUXdFZ1lEVlFRTEV3dEUKKy1a WFpsYkc5d2JXVnVkREVYTUJVR0ExVUVBeE1PWm14MWEyVXVkSEp2Ykd3dWJtOHdnWjh3RFFZSktv WklodmNOCistQVFFQkJRQURnWTBBTUlHSkFvR0JBS2ZJb0VyRUdRVWJacm95NHRMeEhHOFhndVE1 TGdGUmtOc0VORElSSWNJTgorLWIxbllVNUJVUDRPUHFkT3oxZTRhbTRDdXd5WEpYcVd2UzJBRnFx RFJrUUVmeWdTRDQxZ2NtVEpGaEhCeVdBT1kKKy1TbU9MUWZVSVNkS1JBbUJyNUdUKzNhQ3FkQWpw TkV5Ulh4STlOMDFVTEsxL1c1aGdOZ0tNTy9aRjh5ZHFtNVNkCistQWdNQkFBR2pnZ0VhTUlJQkZq QUpCZ05WSFJNRUFqQUFNQ3dHQ1dDR1NBR0crRUlCRFFRZkZoMVBjR1Z1VTFOTQorLUlFZGxibVZ5 WVhSbFpDQkRaWEowYVdacFkyRjBaVEFkQmdOVkhRNEVGZ1FVSVlVRVBTTUJadVgzbnhxRUpJcXYK Ky1Dbm4wNWF3d2dic0dBMVVkSXdTQnN6Q0JzS0dCb3FTQm56Q0JuREVMTUFrR0ExVUVCaE1DVGs4 eERUQUxCZ05WCistQkFnVEJFOXpiRzh4RURBT0JnTlZCQWNUQjA1NVpHRnNaVzR4RmpBVUJnTlZC QW9URFZSeWIyeHNkR1ZqYUNCQgorLVUwRXhGREFTQmdOVkJBc1RDMFJsZG1Wc2IzQnRaVzUwTVJj d0ZRWURWUVFERXc1bWJIVnJaUzUwY205c2JDNXUKKy1iekVsTUNNR0NTcUdTSWIzRFFFSkFSWVdZ V2hoYm5OelpXNUFkSEp2Ykd4MFpXTm9MbU52YllJSkFJNm90T2lSCistdDFRdU1BMEdDU3FHU0li M0RRRUJCUVVBQTRJQkFRQnRWMS9SQlVQd1lnWHNLbkdsM0JrSThzU212YnNsMmNxSgorLUFRN2t6 eC9Cak1na0dEVlRXWHZBUTdReTVwaXlwdThWQlF0SVgrR2dESmVwb1hmWU5SZ3d2S21QMDdkVXgv R3AKKy1ubDNtR2IvMlBGc3IyT1ErWWhpSWk5TWs0VUNiRE9ZcEZtS3I2Z1VrY0RhcVZaUHZBb0Vi SXhDaUJPdFdsWFg4CistK0pTeFhVTEZQelpFaFYwNkxwQkdpcUs1YjRldURCVkFHVEdRL0RzbHU2 N3haaE1OaFpEWlNUU1A4bDM1ZXR0TgorLVhTZjJkcDAxakFhbVRLT3hzclp2SGRlakFQMXk2NTdx UktHdklUUjl4MExpU1pFWmk4Q3R1b0tBcUhGdzlEVXgKKy1rV09FSUpYcFlLOWtpOHovUFlwMmRE M0lWVzNranNNckhPaENHSzZmNW11Y05BYnNhdkxECisrTUlJRjZ6Q0NBOU9nQXdJQkFnSVVmbzlh bUp0SkdXcVdFNmYrU2tBTzg1emtHcjR3RFFZSktvWklodmNOQVFFTAorK0JRQXdnWU14Q3pBSkJn TlZCQVlUQWs1UE1RMHdDd1lEVlFRSURBUlBjMnh2TVEwd0N3WURWUVFIREFSUGMyeHYKKytNUmN3 RlFZRFZRUUtEQTVVYUdVZ1VYUWdRMjl0Y0dGdWVURU1NQW9HQTFVRUN3d0RVaVpFTVJJd0VBWURW UVFECisrREFsSU1pQlVaWE4wWlhJeEd6QVpCZ2txaGtpRzl3MEJDUUVXREcxcGJtbHRhVUJ4ZEM1 cGJ6QWdGdzB5TURFdworK01qWXhNakF4TXpGYUdBOHlNVEl3TVRBd01qRXlNREV6TVZvd2dZTXhD ekFKQmdOVkJBWVRBazVQTVEwd0N3WUQKKytWUVFJREFSUGMyeHZNUTB3Q3dZRFZRUUhEQVJQYzJ4 dk1SY3dGUVlEVlFRS0RBNVVhR1VnVVhRZ1EyOXRjR0Z1CisrZVRFTU1Bb0dBMVVFQ3d3RFVpWkVN Ukl3RUFZRFZRUUREQWxJTWlCVVpYTjBaWEl4R3pBWkJna3Foa2lHOXcwQgorK0NRRVdERzFwYm1s dGFVQnhkQzVwYnpDQ0FpSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnSVBBRENDQWdvQ2dnSUIKKytB T2lVcDUrRTRibG91S0g3cStyVk5SOE5vWVgyWGtCVytxK3JweTF6dTVzc1JTemJxeEFqRHg5ZGto dDdRbG5mCisrVmxEVDAwSnZwT1dkZXVQb241OTE1ZWRRUnNZNFVubDZtS0gyOXJhM090VWExL3lD SlhzR1ZKVEtDajdrNEJ4YgorKzVtWnpiL2ZUbFpudE1MZFRJQk1mVWJ3NjJGS2lyMVdqS0ljSjlm Q29HOEphR2VLVk80Umg1cDBlemQ0VVVVSWQKKytyMUJYbDVOcWRxeTJ2VE1zRURuak9zRDNlZ2t2 OEkyU0tONE82bi9DM3dXWXBNT1dZWmtHb1ppS3o3ckpzL2kvCisrZXo3YnNWN0psd2R6VGxocEp6 a2NPU1ZGQlA2SmxFT3hUTk54WjF3dEt5N1B0Wkdtc1NTQVRxMmU2K2J3MzhBZQorK09wMFhuenpx Y0dqdEREb2ZCbVQ3T0Z6WldqUzlWWlM2K0RPT2UyUUhXbGUxbkNIY0h5SDRrdTZJUmxzcjl4a1IK KytOQUlsT2ZudkhIeHFKVWVub2VhWjRvUURqQ0JLUzFLWHlnSk8vdEw3QkxUUVZuL3hLMUVtUHZL Tm5qeldrNHRSCisrUG5pYlVoaHM1NjM1cXBPVS9ZUHFGQmgxSmpWcnVaYnNXY0RBaFJjZXcwdXhP TlhPYTlFKzRsdHRROXlTWWExQQorK0x2V3FKdUFYN2d1MkJzQk1MeXFmbTgxMVluQTdDSUZNeU8r SGxxbWtMRmZ2NUwveElSQVhSN2wyNllHTzBWd1gKKytDR2pNZno0TlZQTU1rZTRuQjdxYTlOa3BY UUJRS01tczNRemQ1SlcwSHk5UnVqNU84R1BjRlptVjB0d2pkMXVKCisrUEQvY0Fqa1dMYVhqZE5z SjE2UVdjMm5naFFSUzZIWXFLUlg2aitDWE94dXBBZ01CQUFHalV6QlJNQjBHQTFVZAorK0RnUVdC QlJTQ09VNThqOU5KWmtNYW10NjIzcXlDcmhOM1RBZkJnTlZIU01FR0RBV2dCUlNDT1U1OGo5Tkpa a00KKythbXQ2MjNxeUNyaE4zVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVC Q3dVQUE0SUNBUUNxCisrcTRqeHNXZU5EdjVOcTE0aEp0RjlIQitaTDY0emNadFJqSlAxWWdOczBR cHBLSUNtalBPTDJuSU1HbUkvaktycworKzBlR0FMLzlYWE5WSFB4bTFPUE9uY3ZpbU1NbVU2ZW1a ZnBNZEV0VGZLUDQzK1BnOUhnS1JqTG9RcDQwNnZHZVEKKys4a2kvbWJCaHJJdFZQZ0VtM3R1MkFG QTAyWFRZaStZeENJOWtSWkxHa00zRmJndE91VExQbDBaOXkra2lQYzlGCisrdUNTQzAzYW5CRXF2 K3ZEU0k4K3dPRHltUS9JSjNKeXoxbHhJUkRmcDRxQWVrbXkwalUyYzkxVk9ISEVtT21xcQorK2tx eWdHRlJkd2JlOTltOXlQNjNyNnEwYjVLM1gyVW5KNmJuczBobVR3VGhZd3BWUFhMVThqZGFUZGRi TXVrTjIKKysvRWY5NlRzdzhuV09FT1BNeVNIT1RJUGd3eVpScDI2YjBrQTlFbWhMd09QNDAxU3hY VlFDbVNSbXR3TmFnbXRnCisrakpLbVpvWUJOKy8vRDQ1aWJLOHo2UTBvT205UCtXaGYvdVVYZWhj UnhCeHlWM3h6N2swd0tHUWJIai9kZHdjeQorK0lVb0lONGxyQWxpYitsSzE3MGtUS04zNTJQRG1y cG8yZ21JelBFc2Z1cktBSU1TZWxEbDZIK2tpaDE2QnRaOHkKKytOejZmaDlTb3FyZzNPU0F3YXJl OHB4VjdrNTFjckJNb1BMTjc4S29SVjhNRkNLNEs3RmRkcTRyUklTcTZoaVhxCisrcjFuc2pvRVB1 S005aHVwcm1aVlplOXQ1WWNEYTJJK3diM0lpRTN1d3BaYkFkYUxEeVE1bjZGL3Fwc2lJa1pYbgor K2d0Y0Y3b3FwRzVvWXJ3Q2NaNTN5L2V6VWdVZzdQbFN6Mlh3QUd2UXRnZz09CisgLS0tLS1FTkQg Q0VSVElGSUNBVEUtLS0tLQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsv c3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5IGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29y ay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5rZXkKK2luZGV4IDlkMTY2NGQ2MDkuLjMzN2Nl NTQxYTYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29j a2V0L2NlcnRzL2ZsdWtlLmtleQorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wv cXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5rZXkKK0BAIC0xLDE1ICsxLDUyIEBACistLS0tLS1CRUdJ TiBSU0EgUFJJVkFURSBLRVktLS0tLQorLU1JSUNYQUlCQUFLQmdRQ255S0JLeEJrRkcyYTZNdUxT OFJ4dkY0TGtPUzRCVVpEYkJEUXlFU0hDRFc5WjJGT1EKKy1WRCtEajZuVHM5WHVHcHVBcnNNbHlW NmxyMHRnQmFxZzBaRUJIOG9FZytOWUhKa3lSWVJ3Y2xnRG1FcGppMEgxCistQ0VuU2tRSmdhK1Jr L3QyZ3FuUUk2VFJNa1Y4U1BUZE5WQ3l0ZjF1WVlEWUNqRHYyUmZNbmFwdVVuUUlEQVFBQgorLUFv R0FORnpMa2FuVGVTR05GTTB1dHRCaXBGVDlGNGEwMGRxSHo2Sm5PN3pYQVQyNkk1cjhzVTFwcVFC YjZ1THoKKy0vK1F6NVp3azhSVUFRY3NNUmdKZXR1UFFVYjBKWmpGNkR1djI0aE5henFYQkN1N0Fa elVlbmphZndtS0MvOHJpCistS3BYM2ZUd3F6ZnppLy9GS0dnYlhRODB5eWtTU2xpREwza24vZHJB VHhzTENnUUVDUVFEWGhFRldMSjB2VloxcworLTFFa2YrM05JVEUrRFIxNlgrTFE0VzZ2eUVIQWpU YmFOV3RjVEtkQVdMQTJsNk40V0FBUFlTaTZhd20rek14eDQKKy1Wb21WVHNqZEFrRUF4MHorZTdu YXRMZUZjcnJxOHBiVSt3YTZTQVAxVmZoUVdLaXR4TDFlN3UvUU85ME5DcHhFCistb1FZS3pNa21t cE9PRmpRd0VNQXkxZHZGTWJtNExIbGV3UUpBQy9rc0RCYVVjUUhIcWprdEN0clViOHJWakF5Vwor LUE4bHNjY2tlQjJmRVl5RzVKNmRKVmFZNENsTk9PczV5TURTMkFmazFGNkgveEt2dFEvNUN6SW5B L1FKQVREdWIKKy1LK0JQVThqTzlxK2dwdUlpM1ZJWmR1cHNzVkdtQ2dPYlZDSExha0c0dU8wNHk5 SXlQaFY5bEE5dEFMdG9JZjRjCistVkl2djVmV0dYQnJaNDhrWkFRSkJBSm1WQ2R6UXhkOUxaSTV2 eGlqVUNqNUVJNGUreDVEUnFWVXZ5UDhLQ1pyQworLUFpTnlvRFA4NVQraEJaYVNYSzNhWUdwVndl bHlqM2J2bzFHclROd05XTHc9CistLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KKystLS0t LUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0KKytNSUlKUWdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFT Q0NTd3dnZ2tvQWdFQUFvSUNBUURvbEtlZmhPRzVhTGloCisrKzZ2cTFUVWZEYUdGOWw1QVZ2cXZx NmN0Yzd1YkxFVXMyNnNRSXc4ZlhaSWJlMEpaMzFaUTA5TkNiNlRsblhyagorKzZKK2ZkZVhuVUVi R09GSjVlcGloOXZhMnR6clZHdGY4Z2lWN0JsU1V5Z28rNU9BY1crWm1jMi8zMDVXWjdUQzMKKytV eUFUSDFHOE90aFNvcTlWb3lpSENmWHdxQnZDV2huaWxUdUVZZWFkSHMzZUZGRkNIYTlRVjVlVGFu YXN0cjB6CisrTEJBNTR6ckE5M29KTC9DTmtpamVEdXAvd3Q4Rm1LVERsbUdaQnFHWWlzKzZ5YlA0 djNzKzI3RmV5WmNIYzA1WQorK2FTYzVIRGtsUlFUK2laUkRzVXpUY1dkY0xTc3V6N1dScHJFa2dF NnRudXZtOE4vQUhqcWRGNTg4Nm5CbzdRdzYKKytId1prK3poYzJWbzB2VldVdXZnempudGtCMXBY dFp3aDNCOGgrSkx1aUVaYksvY1pFVFFDSlRuNTd4eDhhaVZICisrcDZIbW1lS0VBNHdnU2t0U2w4 b0NUdjdTK3dTMDBGWi84U3RSSmo3eWpaNDgxcE9MVVQ1NG0xSVliT2V0K2FxVAorK2xQMkQ2aFFZ ZFNZMWE3bVc3Rm5Bd0lVWEhzTkxzVGpWem12UlB1SmJiVVBja21HdFFDNzFxaWJnRis0THRnYkEK KytUQzhxbjV2TmRXSndPd2lCVE1qdmg1YXBwQ3hYNytTLzhTRVFGMGU1ZHVtQmp0RmNGd2hvekg4 K0RWVHpESkh1CisrSndlNm12VFpLVjBBVUNqSnJOME0zZVNWdEI4dlVibytUdkJqM0JXWmxkTGNJ M2RiaVR3LzNBSTVGaTJsNDNUYgorK0NkZWtGbk5wNElVRVV1aDJLaWtWK28vZ2x6c2JxUUlEQVFB QkFvSUNBRncxcTZ0cjVJNDh2WTdERityWHN1TG4KKys1WlVXRTFJUTZmekI0bHI3Mm5Kdi85RUVH bk1nWXp0OVBwTVVzRDZ2ZENwQmdTMkMwKzZSSEFyRnpKdE5BK1JNCisraUhMSUc3Szc3MDJ2ZXly L3hCeC9Nd2lTbE1lTXYvWHBrRnhWSTZFNnNrTUdHMnMzQU1YeEt2SlR5NUNwUngrSQorK2VRRnlM RytZYTFYMmxnSmVzL3ErL0NwQUhrT2pDT3BjTHlTUUM1Tlo3NHE3MzRWN25TZG1uK1pzM3RZRWgr Ty8KKytlaXV3VFAvajViMzhUZTV2VlRxRHhUY2lKUG1sam1YTEN3YTBOMTAwbFdsYmNwdnc4cWJx aVRJMkptM1hDYlVFCisrQXpIalc5dm1yRjNjUlMxZlh4S0ZHU2h3M1NScWxrYnhqZmVXb2k4cURQ VUJTNG04TE9yOHFHOVdvNU5mb24wegorK3pMUDRiY2kzekhEdlZjYWFacnJzVUJzL3laYmcrRGdr YTFEbVg3ZWttZWNjcjJ5VGRLREZnUHVwWVV5eFZiVGwKKythOVpMSnlzakZEN3JnQnYxWmNsSG9u THA2VmJtK1pvVHF2dGVvNGlrQXk2TDlSdEJXSjIzWEVLMzRQa1AvK2M1CisrMnZXWmFPcm5qU2VC SGJGY2U4Y2RKU3hxV3BQK2VTQ0k1STlYYkRyWUZJc1EvZ3FLZ3R6REt5MmloSjJZOFNUTAorK3lP NGh5RlBGanhjK0dnNC9QMlBwbVQ1Q1kydHk0NE0wQldzK0pHVzk2Q0pQcnJwbGYybG1RVVFKajVM Wlk2NlgKKytaLzRDOUw3Wll0S1orYnM1U3ZVNDZ5V3VnQXZRWlgyMlhtOXhMWFd5VlhSZHgzYmor M00zZkRuRjlkaS96ZGJoCisrQ2dMeDdvV1BOclhjN0ZDYWpubjlBb0lCQVFENUZNWXdScHc5TldU OVdEeFF3eCtjU0k0SWNiZDg4QnlUVzYzUworK0x6ZVJ3WkEwSjkvU2Z3TythQlJ1cHpjOUdrR1hD aVpjR013M0FHc0N0aWc4eUZsdzhFNUtuek43S2xmdERNbk0KKys5TlV4eHpsUjhWd0t5TG5aZkc3 c0RUbDA1N1psVXVqbnFobXQvRjhGN2RJeTdGVk8xZEUvOG5uZ0ErRllUQ09HCisrVVpkR2p3eUJE bERNMEpKZFVXR1kzeHNsdXRjcENETjVtelNUS2p5OWRyTXZJbUFzaFJhd3hSRjZXQnBuN3ZyMgor K25DNnZjaXFmeDFNengxdnlrMEptMGlsYXlkRGRMTUFEanQvaUw0TmtyMEJFczRrK1V6UWlLRHdw OGd1N2FiUTEKKytlQmZ4ZDlJYXI0aHRRYTJJMUV3bDZQMDFHL3ErWll3Z0hoSjlSVm40QXhRWGVm SUxBb0lCQVFEdkNvdU9SZFFYCisrQzh3c3lwN013WGxGLzNOUWVOTjUvK0IybWhieHJCT2Y3UG1N Q1hMbmtSV2Nqd0p0enlwV0ZxSjBzcWFpLzIrMAorK2JxYk1jalg1bWFUOHN0VDJzaGwzelhlL0Vq dDJlM1RCWXBjMXR5dXNlczhLYjVCTVU4aHU2dFRkM0cyQ01YcEQKKytkVDZEVmVtSlpDVHR3ajlh Qk5JeFNpenZsZ01vbEpuQ3B6aFBubGZIU0k2RStnM20vTFRUbzNId2JqTVN3L1VxCisraXJnak9w STJ3U0JCNkxaUFNnanZmY1lQUnlXVWsxNkw0QTV1U1gwY0FEbm92REZMYTUvaDB3SnZOL09vQ1NR ZworK3JMQ1hHNUUxOEV5TDVXYzU4QkNZMVp2eG1qRzNsUXRnUHhZdTJKd2MzNlIveS9KS2x4VzVz dUVSNVpOcGJiRDQKKyt1T3lUdDJWeE1RMmJBb0lCQVFDNStNelJGcWRvL0FqZkw1WTVKcmJmVlR6 WENURGEwOXhDR2QxNlpVNjBRVFdOCisrKzRlZC9yK28xc1VLcVVjUkZCMk16RU0vMkRRQmpRcFpC L0NiRVd2V2ExWEpXWHh5cFhib3d2ZVpVK1FxT25tTgorK3VRdmo4V0x5QTNvK1BORjllOVF2YXV3 Q3JIcG44VnB4YnRQV3VhWW9LblVGcmVGWlpReEhoUEd4UkJJUzJKT1oKKytlRHJUOFphV25rQ2to MUFacDVzbVE3MUxPcHJTbG1Lcmc0amQxR2pDVk14UVI1TjVLWGJ0eXYwT1RDWi9VRnFLCisrMmFS QnNNUHlKZ2thQkNoa1pQTFJjS3djKy93bFFSeDFmSFFiMTRETlRBcE14b1hGTzdlT3dxbU9rcEF0 OWl5bAorK1NCSXdvUzBVVUk1YWI4OCtiQm1YTnZLY3VGZE51UTRub3dUSlVuOXBBb0lCQURNTmtJ TEJYU3ZTNURlSXl1TzIKKytTcDF0a29aVVYrNU5mUFkzc01ESzNLSWliYVcvK3QrRU9CWm80TDd0 S1FDYjh2UnpsMjFtbXNmeGZnUmFQRGJqCisrM3IzdHY5ZzBiNFlMeHhCeTUycEZzY2ovc29YUmFp MTdTUzdVWndBMlFLK1h6Z0RZYkRjTE5DNm1Jc1RRRzRHeAorK2RzV2szL3pzM0t1VVNRYWVobXdy V0srZklVSzM4YzFwTEs4djdMb3hyTGtxeGxId1owNFJ0aEh3OEtUdGhIN1gKKytQbmwxSjBMRjhD U2VPeWZXTFN1UFVma1QwR0V6cHRuTkhwRWJhSGZRTTZSNmVhR2hWSlBGNkFabWU0eTZZWWdnCisr bTJpaGhTdDFuMFhWRVdwSFlXanhGeTNtSzJtejc1dW5GQzRMTStORVkycDJ6dVVRb0N3N05qblkz UVlyZkNueAorK3JSTUNnZ0VBWGVYc01TTEZqanl1b0w3aUtiQXhvNTJIRC9QMGZCb3k1OEx5UmN3 Zk5WcjBsdllhbjRwWUV4K28KKytLaWpJaDlLMTZQcVhaWEtNQTl2MDAzQit1bG1GOGJKN1NkZENa NU5Hdm5GaFVURGU0RGRUS2dwMlJ1d1EzQnNjCisrM3NrUElEYmhWRVR5T0xDdHlzMzRVU0hycThV LzBEbEdZM2VMUmZ4dzlHbmJLeFNCR2EvS0V1L3FRTFBOVW81MAorKzd4SFpEZzdHS2VDM2txTkpl cUtNOXJrcDBWeklHa0VuYUQ5MTI3TGVORG1FUkRmZnR4SnpGb0MvVEh2VUJMZlUKKys2U3VzMlpZ d1JFOFZGdktDMzBRNDV0L2M1NFgzSXVoWXZBdWlDdVRteWZFNHJ1eXp5T3dLemhVa2VlTHExQVBY CisrZzB2ZUZieWZ6bEowcThxekQvaWZmcXFJYTJaU21RPT0KKystLS0tLUVORCBQUklWQVRFIEtF WS0tLS0tCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxp dHlsaW51eC90c3RfcWFjY2Vzc2liaWxpdHlsaW51eC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9v dGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcAoraW5k ZXggN2JhMzcxNWUxMy4uNzUyYWExMjJmNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L290aGVyL3FhY2Nlc3NpYmlsaXR5bGludXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwCisr KysgYi9xdGJhc2UvdGVzdHMvYXV0by9vdGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNj ZXNzaWJpbGl0eWxpbnV4LmNwcAorQEAgLTE3OSw2ICsxNzksNyBAQCB2b2lkIHRzdF9RQWNjZXNz aWJpbGl0eUxpbnV4Ojppbml0VGVzdENhc2UoKQorICAgICBRVkVSSUZZKCFhZGRyZXNzLmlzRW1w dHkoKSk7CisgCisgICAgIG1fd2luZG93ID0gbmV3IEFjY2Vzc2libGVUZXN0V2luZG93KCk7Cisr ICAgIG1fd2luZG93LT5zZXRPYmplY3ROYW1lKCJtYWluV2luZG93Il9MMSk7CisgICAgIG1fd2lu ZG93LT5zaG93KCk7CisgCisgICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3Nl ZChtX3dpbmRvdykpOworQEAgLTIzNiw4ICsyMzcsMTEgQEAgYm9vbCBoYXNTdGF0ZShRREJ1c0lu dGVyZmFjZSAqaW50ZXJmYWNlLCBBdHNwaVN0YXRlVHlwZSBzdGF0ZSkKKyB2b2lkIHRzdF9RQWNj ZXNzaWJpbGl0eUxpbnV4Ojp0ZXN0TGFiZWwoKQorIHsKKyAgICAgUUxhYmVsICpsID0gbmV3IFFM YWJlbChtX3dpbmRvdyk7CisrICAgIGwtPnNldE9iamVjdE5hbWUoInRoZU9iamVjdE5hbWUiX0wx KTsKKyAgICAgbC0+c2V0VGV4dCgiSGVsbG8gQTExeSIpOworICAgICBtX3dpbmRvdy0+YWRkV2lk Z2V0KGwpOworKyAgICBhdXRvIGExMXlFbXB0eSA9IG5ldyBRTGFiZWwobV93aW5kb3cpOworKyAg ICBtX3dpbmRvdy0+YWRkV2lkZ2V0KGwpOworIAorICAgICAvLyBBcHBsaWNhdGlvbgorICAgICBR Q09NUEFSRShnZXRQYXJlbnQobWFpbldpbmRvdyksIFFMYXRpbjFTdHJpbmcoQVRTUElfREJVU19Q QVRIX1JPT1QpKTsKK0BAIC0yNDksNiArMjUzLDggQEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlM aW51eDo6dGVzdExhYmVsKCkKKyAgICAgUUNPTVBBUkUoZ2V0Q2hpbGRyZW4obGFiZWxJbnRlcmZh Y2UpLmNvdW50KCksIDApOworICAgICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+Y2FsbChRREJ1 czo6QmxvY2ssICJHZXRSb2xlTmFtZSIpLmFyZ3VtZW50cygpLmZpcnN0KCkudG9TdHJpbmcoKSwg UUxhdGluMVN0cmluZygibGFiZWwiKSk7CisgICAgIFFDT01QQVJFKGxhYmVsSW50ZXJmYWNlLT5j YWxsKFFEQnVzOjpCbG9jaywgIkdldFJvbGUiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvVUludCgp LCAyOXUpOworKyAgICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ss ICJHZXRBY2Nlc3NpYmxlSWQiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvU3RyaW5nKCksCisrICAg ICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIm1haW5XaW5kb3cudGhlT2JqZWN0TmFtZSIpKTsKKyAg ICAgUUNPTVBBUkUoZ2V0UGFyZW50KGxhYmVsSW50ZXJmYWNlKSwgbWFpbldpbmRvdy0+cGF0aCgp KTsKKyAgICAgUVZFUklGWSghaGFzU3RhdGUobGFiZWxJbnRlcmZhY2UsIEFUU1BJX1NUQVRFX0VE SVRBQkxFKSk7CisgICAgIFFWRVJJRlkoaGFzU3RhdGUobGFiZWxJbnRlcmZhY2UsIEFUU1BJX1NU QVRFX1JFQURfT05MWSkpOworQEAgLTI1Niw3ICsyNjIsMTIgQEAgdm9pZCB0c3RfUUFjY2Vzc2li aWxpdHlMaW51eDo6dGVzdExhYmVsKCkKKyAgICAgbC0+c2V0VGV4dCgiTmV3IHRleHQiKTsKKyAg ICAgUUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPnByb3BlcnR5KCJOYW1lIikudG9TdHJpbmcoKSwg bC0+dGV4dCgpKTsKKyAKKysgICAgYXV0byAqYTExeUVtcHR5SW50ZXJmYWNlID0gZ2V0SW50ZXJm YWNlKGNoaWxkcmVuLmF0KDEpLCAib3JnLmExMXkuYXRzcGkuQWNjZXNzaWJsZSIpOworKyAgICBR Q09NUEFSRShhMTF5RW1wdHlJbnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAiR2V0QWNjZXNz aWJsZUlkIikuYXJndW1lbnRzKCkuZmlyc3QoKS50b1N0cmluZygpLAorKyAgICAgICAgICAgICBR TGF0aW4xU3RyaW5nKCJtYWluV2luZG93LlFMYWJlbCIpKTsKKysKKyAgICAgbV93aW5kb3ctPmNs ZWFyQ2hpbGRyZW4oKTsKKysgICAgZGVsZXRlIGExMXlFbXB0eUludGVyZmFjZTsKKyAgICAgZGVs ZXRlIGxhYmVsSW50ZXJmYWNlOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0 by9zcWwva2VybmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcCBiL3F0YmFzZS90ZXN0cy9h dXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5L3RzdF9xc3FscXVlcnkuY3BwCitpbmRleCA3NmRmNjFj ODkyLi42ZDZkNjViNzkxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5l bC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Nx bC9rZXJuZWwvcXNxbHF1ZXJ5L3RzdF9xc3FscXVlcnkuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBD b21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIFF0IENvbXBhbnkgTHRkLgor ICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTY4 LDYgKzY4LDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBxdWVyeV9leGVjKCk7CisgICAg IHZvaWQgZXhlY0Vycm9yUmVjb3ZlcnlfZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0KKyAgICAg dm9pZCBleGVjRXJyb3JSZWNvdmVyeSgpOworKyAgICB2b2lkIHByZW1hdHVyZUV4ZWNfZGF0YSgp IHsgZ2VuZXJpY19kYXRhKCk7IH0KKysgICAgdm9pZCBwcmVtYXR1cmVFeGVjKCk7CisgICAgIHZv aWQgZmlyc3RfZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0KKyAgICAgdm9pZCBmaXJzdCgpOwor ICAgICB2b2lkIG5leHRfZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0KK0BAIC0yNzcwLDYgKzI3 NzIsMzUgQEAgdm9pZCB0c3RfUVNxbFF1ZXJ5OjpleGVjRXJyb3JSZWNvdmVyeSgpCisgICAgIFFW RVJJRllfU1FMKCBxLCBleGVjKCkgKTsKKyB9CisgCisrdm9pZCB0c3RfUVNxbFF1ZXJ5OjpwcmVt YXR1cmVFeGVjKCkKKyt7CisrICAgIFFGRVRDSChRU3RyaW5nLCBkYk5hbWUpOworKyAgICAvLyBX ZSBvbmx5IHdhbnQgdGhlIGVuZ2luZSBuYW1lLCBmb3IgYWRkRGF0YWJhc2UoKToKKysgICAgaW50 IGN1dCA9IGRiTmFtZS5pbmRleE9mKFFDaGFyKCdAJykpOworKyAgICBpZiAoY3V0IDwgMCkKKysg ICAgICAgIFFTS0lQKCJGYWlsZWQgdG8gcGFyc2UgZGF0YWJhc2UgdHlwZSBvdXQgb2YgbmFtZSIp OworKyAgICBkYk5hbWUudHJ1bmNhdGUoY3V0KTsKKysgICAgY3V0ID0gZGJOYW1lLmluZGV4T2Yo UUNoYXIoJ18nKSk7CisrICAgIGlmIChjdXQgPj0gMCkKKysgICAgICAgIGRiTmFtZSA9IGRiTmFt ZS5taWQoY3V0ICsgMSk7CisrCisrICAgIGF1dG8gZGIgPSBRU3FsRGF0YWJhc2U6OmFkZERhdGFi YXNlKGRiTmFtZSk7CisrICAgIFFTcWxRdWVyeSBxKGRiKTsKKysKKysgICAgUVRlc3Q6Omlnbm9y ZU1lc3NhZ2UoUXRXYXJuaW5nTXNnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAiUVNxbERh dGFiYXNlUHJpdmF0ZTo6cmVtb3ZlRGF0YWJhc2U6IGNvbm5lY3Rpb24gIgorKyAgICAgICAgICAg ICAgICAgICAgICAgICAiJ3F0X3NxbF9kZWZhdWx0X2Nvbm5lY3Rpb24nIGlzIHN0aWxsIGluIHVz ZSwgYWxsICIKKysgICAgICAgICAgICAgICAgICAgICAgICAgInF1ZXJpZXMgd2lsbCBjZWFzZSB0 byB3b3JrLiIpOworKyAgICBRVGVzdDo6aWdub3JlTWVzc2FnZShRdFdhcm5pbmdNc2csCisrICAg ICAgICAgICAgICAgICAgICAgICAgICJRU3FsRGF0YWJhc2VQcml2YXRlOjphZGREYXRhYmFzZTog ZHVwbGljYXRlIGNvbm5lY3Rpb24gbmFtZSAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICIn cXRfc3FsX2RlZmF1bHRfY29ubmVjdGlvbicsIG9sZCBjb25uZWN0aW9uIHJlbW92ZWQuIik7Cisr ICAgIGF1dG8gb3RoZXJEYiA9IFFTcWxEYXRhYmFzZTo6YWRkRGF0YWJhc2UoZGJOYW1lKTsKKysK KysgICAgUVRlc3Q6Omlnbm9yZU1lc3NhZ2UoUXRXYXJuaW5nTXNnLCAiUVNxbFF1ZXJ5OjpleGVj OiBjYWxsZWQgYmVmb3JlIGRyaXZlciBoYXMgYmVlbiBzZXQgdXAiKTsKKysgICAgLy8gUVRCVUct MTAwMDM3OiBzaG91bGRuJ3QgY3Jhc2ggIQorKyAgICBRVkVSSUZZKCFxLmV4ZWMoInNlbGVjdCBz dHVmZiBmcm9tIFRoZVZvaWQiKSk7CisrfQorKworIHZvaWQgdHN0X1FTcWxRdWVyeTo6bGFzdElu c2VydElkKCkKKyB7CisgICAgIFFGRVRDSCggUVN0cmluZywgZGJOYW1lICk7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIvdHN0 X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGli L3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNw cAoraW5kZXggNGFhM2Y4ZDYwYi4uZDIwNTBhNjFhYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0 cy9hdXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVt bW9kZWx0ZXN0ZXIuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFj dGl0ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAorQEAgLTEx NSw2ICsxMTUsMTAgQEAgdm9pZCB0c3RfUUFic3RyYWN0SXRlbU1vZGVsVGVzdGVyOjpzdGFuZGFy ZEl0ZW1Nb2RlbFplcm9Db2x1bW5zKCkKKyAgICAgLy8gUVRCVUctOTI4ODYKKyAgICAgbW9kZWwu aW5zZXJ0Um93cygwLCA1KTsKKyAgICAgbW9kZWwucmVtb3ZlUm93cygxLCAyKTsKKysKKysgICAg Y29uc3QgUU1vZGVsSW5kZXggcGFyZW50SW5kZXggPSBtb2RlbC5pbmRleCgwLCAwKTsKKysgICAg bW9kZWwuaW5zZXJ0Um93cygwLCA1LCBwYXJlbnRJbmRleCk7CisrICAgIG1vZGVsLnJlbW92ZVJv d3MoMSwgMiwgcGFyZW50SW5kZXgpOworIH0KKyAKKyB2b2lkIHRzdF9RQWJzdHJhY3RJdGVtTW9k ZWxUZXN0ZXI6OnRlc3RJbnNlcnRUaHJvdWdoUHJveHkoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2NzX2Jhc2VsaW5lX2luLmpzb24gYi9xdGJhc2UvdGVz dHMvYXV0by90b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5qc29uCitpbmRleCAxMmE0YTIy YTE5Li5jZTUxOGU3OGZiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9j L2FsbG1vY3NfYmFzZWxpbmVfaW4uanNvbgorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMv bW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4uanNvbgorQEAgLTY2OCw1MCArNjY4LDYgQEAKKyAgICAg ICAgICJpbnB1dEZpbGUiOiAidGFzazE5MjU1Mi5oIiwKKyAgICAgICAgICJvdXRwdXRSZXZpc2lv biI6IDY3CisgICAgIH0sCistICAgIHsKKy0gICAgICAgICJjbGFzc2VzIjogWworLSAgICAgICAg ICAgIHsKKy0gICAgICAgICAgICAgICAgImNsYXNzTmFtZSI6ICJJbmxpbmVTbG90c1dpdGhUaHJv d0RlY2xhcmF0aW9uIiwKKy0gICAgICAgICAgICAgICAgIm9iamVjdCI6IHRydWUsCistICAgICAg ICAgICAgICAgICJxdWFsaWZpZWRDbGFzc05hbWUiOiAiSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNs YXJhdGlvbiIsCistICAgICAgICAgICAgICAgICJzbG90cyI6IFsKKy0gICAgICAgICAgICAgICAg ICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAg ICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYSIsCistICAgICAgICAgICAgICAgICAgICAg ICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0sCistICAgICAg ICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJs aWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImIiLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAgICAgICAgICB9 LAorLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nl c3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjIiwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAg ICAgICAgICAgfSwKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAg ICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUi OiAiZCIsCistICAgICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0g ICAgICAgICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAg ICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICJuYW1lIjogImUiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjog InZvaWQiCistICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIF0sCistICAg ICAgICAgICAgICAgICJzdXBlckNsYXNzZXMiOiBbCistICAgICAgICAgICAgICAgICAgICB7Cist ICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICJuYW1lIjogIlFPYmplY3QiCistICAgICAgICAgICAgICAgICAgICB9Cist ICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAgICB9CistICAgICAgICBdLAorLSAgICAgICAg ImlucHV0RmlsZSI6ICJ0YXNrMTg5OTk2LmgiLAorLSAgICAgICAgIm91dHB1dFJldmlzaW9uIjog NjcKKy0gICAgfSwKKyAgICAgeworICAgICAgICAgImNsYXNzZXMiOiBbCisgICAgICAgICAgICAg eworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvIGIvcXRi YXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21vYy5wcm8KK2luZGV4IGMzMjRiM2E4Y2QuLjRhY2Vi NzhkYzAgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybwor KysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21vYy5wcm8KK0BAIC0xNSw3ICsxNSw3 IEBAIGNyb3NzX2NvbXBpbGU6IERFRklORVMgKz0gTU9DX0NST1NTX0NPTVBJTEVECisgSEVBREVS UyArPSB1c2luZy1uYW1lc3BhY2VzLmggbm8ta2V5d29yZHMuaCB0YXNrODc4ODMuaCBjLWNvbW1l bnRzLmggYmFja3NsYXNoLW5ld2xpbmVzLmggb2xkc3R5bGUtY2FzdHMuaCBcCisgICAgICAgICAg ICBzbG90cy13aXRoLXZvaWQtdGVtcGxhdGUuaCBxaW52b2thYmxlLmggbmFtZXNwYWNlZC1mbGFn cy5oIHRyaWdyYXBocy5oIFwKKyAgICAgICAgICAgIGVzY2FwZXMtaW4tc3RyaW5nLWxpdGVyYWxz LmggY3N0eWxlLWVudW1zLmggcXByaXZhdGVzbG90cy5oIGdhZGdldHdpdGhub2VudW1zLmggXAor LSAgICAgICAgICAgZGlyLWluLWluY2x1ZGUtcGF0aC5oIHNpbmdsZV9mdW5jdGlvbl9rZXl3b3Jk LmggdGFzazE5MjU1Mi5oIHRhc2sxODk5OTYuaCBcCisrICAgICAgICAgICBkaXItaW4taW5jbHVk ZS1wYXRoLmggc2luZ2xlX2Z1bmN0aW9uX2tleXdvcmQuaCB0YXNrMTkyNTUyLmggXAorICAgICAg ICAgICAgdGFzazIzNDkwOS5oIHRhc2syNDAzNjguaCBwdXJlLXZpcnR1YWwtc2lnbmFscy5oIGN4 eDExLWVudW1zLmggXAorICAgICAgICAgICAgY3h4MTEtZmluYWwtY2xhc3Nlcy5oIFwKKyAgICAg ICAgICAgIGN4eDExLWV4cGxpY2l0LW92ZXJyaWRlLWNvbnRyb2wuaCBcCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3Rhc2sxODk5OTYuaCBiL3F0YmFzZS90ZXN0cy9h dXRvL3Rvb2xzL21vYy90YXNrMTg5OTk2LmgKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggZjk0YTA1MWIzYS4uMDAwMDAwMDAwMAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMv bW9jL3Rhc2sxODk5OTYuaAorKysrIC9kZXYvbnVsbAorQEAgLTEsNDcgKzAsMCBAQAorLS8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCistKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBh bnkgTHRkLgorLSoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKy0qKgor LSoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0 LgorLSoqCistKiogJFFUX0JFR0lOX0xJQ0VOU0U6R1BMLUVYQ0VQVCQKKy0qKiBDb21tZXJjaWFs IExpY2Vuc2UgVXNhZ2UKKy0qKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0 IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCistKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBj b21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCistKiogU29mdHdh cmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFp bmVkIGluCistKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENv bXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKy0qKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6 Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKy0qKiBpbmZvcm1hdGlv biB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgor LSoqCistKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKy0qKiBBbHRlcm5hdGl2 ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKy0q KiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUKKy0qKiBGb3VuZGF0aW9uIHdpdGggZXhjZXB0aW9ucyBhcyBhcHBlYXJpbmcg aW4gdGhlIGZpbGUgTElDRU5TRS5HUEwzLUVYQ0VQVAorLSoqIGluY2x1ZGVkIGluIHRoZSBwYWNr YWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKy0qKiBpbmZv cm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVt ZW50cyB3aWxsCistKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0z LjAuaHRtbC4KKy0qKgorLSoqICRRVF9FTkRfTElDRU5TRSQKKy0qKgorLSoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCistLy8gaW5saW5lIGZ1bmN0aW9ucyBjYW4gaGF2ZSB0aHJvdyBkZWNsYXJhdGlvbnMK Ky0KKy0jaWZuZGVmIFRBU0sxODk5OTZfSAorLSNkZWZpbmUgVEFTSzE4OTk5Nl9ICistCistI2lu Y2x1ZGUgPFFPYmplY3Q+CistCistY2xhc3MgSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlv biA6IHB1YmxpYyBRT2JqZWN0CisteworLSAgICBRX09CSkVDVAorLQorLXB1YmxpYyBzbG90czoK Ky0gICAgdm9pZCBhKCkgdGhyb3coKSB7IH0KKy0gICAgdm9pZCBiKCkgY29uc3QgdGhyb3coKSB7 IH0KKy0gICAgdm9pZCBjKCkgdGhyb3coKTsKKy0gICAgdm9pZCBkKCkgdGhyb3coaW50KSB7IH0K Ky0gICAgdm9pZCBlKCkgY29uc3QgdGhyb3coaW50LGRvdWJsZSkgeyB9CistfTsKKy0KKy0jZW5k aWYKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAg Yi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAKK2luZGV4IGM3MTZhZWFk MjEuLjE1ZGQ5ZTQxZTUgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2Mv dHN0X21vYy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9jLmNw cAorQEAgLTYzMSw3ICs2MzEsNiBAQCBwdWJsaWM6CisgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9p ZCBpbml0VGVzdENhc2UoKTsKKyAKKy0gICAgdm9pZCBzbG90V2l0aEV4Y2VwdGlvbigpIHRocm93 KE15U3RydWN0KTsKKyAgICAgdm9pZCBkb250U3RyaXBOYW1lc3BhY2VzKCk7CisgICAgIHZvaWQg b2xkU3R5bGVDYXN0cygpOworICAgICB2b2lkIHdhcm5PbkV4dHJhU2lnbmFsU2xvdFF1YWxpZmlh Y3Rpb24oKTsKK0BAIC02NzMsNyArNjcyLDYgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB0 ZW1wbGF0ZUd0R3QoKTsKKyAgICAgdm9pZCBxcHJpdmF0ZXNsb3RzKCk7CisgICAgIHZvaWQgcXBy aXZhdGVwcm9wZXJ0aWVzKCk7CistICAgIHZvaWQgaW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJh dGlvbigpOworICAgICB2b2lkIHdhcm5PblByb3BlcnR5V2l0aG91dFJFQUQoKTsKKyAgICAgdm9p ZCBjb25zdHJ1Y3RvcnMoKTsKKyAgICAgdm9pZCB0eXBlbmFtZVdpdGhVbnNpZ25lZCgpOworQEAg LTc4NCwxMiArNzgyLDYgQEAgdm9pZCB0c3RfTW9jOjppbml0VGVzdENhc2UoKQorICNlbmRpZgor IH0KKyAKKy12b2lkIHRzdF9Nb2M6OnNsb3RXaXRoRXhjZXB0aW9uKCkgdGhyb3coTXlTdHJ1Y3Qp CisteworLSAgICAvLyBiZSBoYXBweQorLSAgICBRVkVSSUZZKHRydWUpOworLX0KKy0KKyB2b2lk IHRzdF9Nb2M6OmRvbnRTdHJpcE5hbWVzcGFjZXMoKQorIHsKKyAgICAgU2VuZGVyIHNlbmRlcjsK K0BAIC04MjQsNyArODE2LDcgQEAgdm9pZCB0c3RfTW9jOjpvbGRTdHlsZUNhc3RzKCkKKyAKKyAg ICAgUVN0cmluZ0xpc3QgYXJnczsKKyAgICAgYXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIg PDwgIi1Xb2xkLXN0eWxlLWNhc3QiIDw8ICItSSIgPDwgIi4iCistICAgICAgICAgPDwgIi1JIiA8 PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0 ZD1jKysxMSIgPDwgIi0iOworKyAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAi LW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICItIjsKKyAg ICAgcHJvYy5zdGFydCgiZ2NjIiwgYXJncyk7CisgICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3Rh cnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQpOworQEAgLTg5NCw3ICs4ODYsNyBAQCB2 b2lkIHRzdF9Nb2M6OmlucHV0RmlsZU5hbWVXaXRoRG90c0J1dE5vRXh0ZW5zaW9uKCkKKyAKKyAg ICAgUVN0cmluZ0xpc3QgYXJnczsKKyAgICAgYXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIg PDwgIi1JIiA8PCAiLi4iCistICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICIt byIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgIi0iOworKyAg ICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8 ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwg YXJncyk7CisgICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53 cml0ZShtb2NPdXQpOworQEAgLTExNzQsNyArMTE2Niw3IEBAIHZvaWQgdHN0X01vYzo6aWdub3Jl T3B0aW9uQ2xhc2hlcygpCisgICAgIFFTdHJpbmdMaXN0IGdjY0FyZ3M7CisgICAgIGdjY0FyZ3Mg PDwgIi1jIiA8PCAiLXgiIDw8ICJjKysiIDw8ICItSSIgPDwgIi4uIgorICAgICAgICAgIDw8ICIt SSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLUkiIDw8IGluY2x1ZGVEaXIgPDwgIi1vIiA8PCAiL2Rl di9udWxsIgorLSAgICAgICAgIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICAiLSI7Cisr ICAgICAgICAgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxeiIgPDwgICItIjsKKyAgICAgcHJvYy5z dGFydCgiZ2NjIiwgZ2NjQXJncyk7CisgICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgp KTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQpOworQEAgLTE1OTMsMjEgKzE1ODUsNiBAQCB2b2lk IHRzdF9Nb2M6OnFwcml2YXRlcHJvcGVydGllcygpCisgCisgfQorIAorLSNpbmNsdWRlICJ0YXNr MTg5OTk2LmgiCistCistdm9pZCBJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uOjpjKCkg dGhyb3coKSB7fQorLQorLXZvaWQgdHN0X01vYzo6aW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJh dGlvbigpCisteworLSAgICBJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uIHRzdDsKKy0g ICAgY29uc3QgUU1ldGFPYmplY3QgKm1vYmogPSB0c3QubWV0YU9iamVjdCgpOworLSAgICBRVkVS SUZZKG1vYmotPmluZGV4T2ZTbG90KCJhKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+ aW5kZXhPZlNsb3QoImIoKSIpICE9IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xv dCgiYygpIikgIT0gLTEpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJkKCkiKSAh PSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImUoKSIpICE9IC0xKTsKKy19 CistCisgdm9pZCB0c3RfTW9jOjp3YXJuT25Qcm9wZXJ0eVdpdGhvdXRSRUFEKCkKKyB7CisgI2lm ZGVmIE1PQ19DUk9TU19DT01QSUxFRAorQEAgLTE4NjksNyArMTg0Niw3IEBAIHZvaWQgdHN0X01v Yzo6bm90aWZ5RXJyb3IoKQorIAorICAgICBRU3RyaW5nTGlzdCBhcmdzOworICAgICBhcmdzIDw8 ICItYyIgPDwgIi14IiA8PCAiYysrIiA8PCAiLUkiIDw8ICIuIgorLSAgICAgICAgIDw8ICItSSIg PDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1z dGQ9YysrMTEiIDw8ICItIjsKKysgICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwg Ii1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7Cisg ICAgIHByb2Muc3RhcnQoImdjYyIsIGFyZ3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0 YXJ0ZWQoKSk7CisgICAgIHByb2Mud3JpdGUobW9jT3V0KTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xaGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcu Y3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0 X3FoZWFkZXJ2aWV3LmNwcAoraW5kZXggYzM1NWVlOTY2NS4uODhjMDlkZThlMCAxMDA2NDQKKy0t LSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9x aGVhZGVydmlldy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdz L3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVydmlldy5jcHAKK0BAIC0yNTEsNiArMjUxLDcgQEAgcHJp dmF0ZSBzbG90czoKKyAgICAgdm9pZCB0ZXN0UmVzZXRDYWNoZWRTaXplSGludCgpOworICAgICB2 b2lkIHN0YXR1c1RpcHMoKTsKKyAgICAgdm9pZCB0ZXN0UmVtb3ZpbmdDb2x1bW5zVmlhTGF5b3V0 Q2hhbmdlZCgpOworKyAgICB2b2lkIHRlc3RNb2RlbE1vdmluZ0NvbHVtbnMoKTsKKyAKKyBwcm90 ZWN0ZWQ6CisgICAgIHZvaWQgc2V0dXBUZXN0RGF0YShib29sIHVzZV9yZXNldF9tb2RlbCA9IGZh bHNlKTsKK0BAIC0zNjAsNiArMzYxLDEyIEBAIHB1YmxpYzoKKyAgICAgICAgIGVuZFJlbW92ZUNv bHVtbnMoKTsKKyAgICAgfQorIAorKyAgICB2b2lkIG1vdmVDb2x1bW4oaW50IGZyb20sIGludCB0 bykKKysgICAgeworKyAgICAgICAgYmVnaW5Nb3ZlQ29sdW1ucyhRTW9kZWxJbmRleCgpLCBmcm9t LCBmcm9tLCBRTW9kZWxJbmRleCgpLCB0byk7CisrICAgICAgICBlbmRNb3ZlQ29sdW1ucygpOwor KyAgICB9CisrCisgICAgIHZvaWQgY2xlYW51cCgpCisgICAgIHsKKyAgICAgICAgIGVtaXQgbGF5 b3V0QWJvdXRUb0JlQ2hhbmdlZCgpOworQEAgLTM2MjcsNSArMzYzNCwxOCBAQCB2b2lkIHRzdF9R SGVhZGVyVmlldzo6dGVzdFJlbW92aW5nQ29sdW1uc1ZpYUxheW91dENoYW5nZWQoKQorICAgICAv LyBUaGUgbWFpbiBwb2ludCBvZiB0aGlzIHRlc3QgaXMgdGhhdCB0aGUgc2VjdGlvbi1zaXplIHJl c3RvcmluZyBjb2RlIGRpZG4ndCBnbyBvdXQgb2YgYm91bmRzLgorIH0KKyAKKyt2b2lkIHRzdF9R SGVhZGVyVmlldzo6dGVzdE1vZGVsTW92aW5nQ29sdW1ucygpCisreworKyAgICBRdFRlc3RNb2Rl bCBtb2RlbCgxMCwgMTApOworKyAgICBRSGVhZGVyVmlldyBodihRdDo6SG9yaXpvbnRhbCk7Cisr ICAgIGh2LnNldE1vZGVsKCZtb2RlbCk7CisrICAgIGh2LnJlc2l6ZVNlY3Rpb25zKFFIZWFkZXJW aWV3OjpSZXNpemVUb0NvbnRlbnRzKTsKKysgICAgaHYuc2hvdygpOworKworKyAgICBRUGVyc2lz dGVudE1vZGVsSW5kZXggaW5kZXgzID0gbW9kZWwuaW5kZXgoMCwgMyk7CisrICAgIG1vZGVsLm1v dmVDb2x1bW4oMywgMSk7CisrICAgIFFDT01QQVJFKGluZGV4My5jb2x1bW4oKSwgMSk7CisrfQor KworIFFURVNUX01BSU4odHN0X1FIZWFkZXJWaWV3KQorICNpbmNsdWRlICJ0c3RfcWhlYWRlcnZp ZXcubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdz L3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0 cy9pdGVtdmlld3MvcXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAKK2luZGV4IDc2MTM1N2Iy NTIuLjA2YmI3MDYwNzQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0 ZW12aWV3cy9xdGFibGV2aWV3L3RzdF9xdGFibGV2aWV3LmNwcAorKysrIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAKK0BA IC0zOTcsNiArMzk3LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBjaGVja0hlYWRlck1p blNpemUoKTsKKyAKKyAgICAgdm9pZCByZXNpemVUb0NvbnRlbnRzKCk7CisrICAgIHZvaWQgcmVz aXplVG9Db250ZW50c1NwYW5zKCk7CisgCisgICAgIHZvaWQgdGFiRm9jdXMoKTsKKyAgICAgdm9p ZCBiaWdNb2RlbCgpOworQEAgLTM3MjEsNiArMzcyMiw3MCBAQCB2b2lkIHRzdF9RVGFibGVWaWV3 OjpyZXNpemVUb0NvbnRlbnRzKCkKKyAKKyB9CisgCisrCisrY2xhc3MgU3Bhbk1vZGVsIDogcHVi bGljIFFBYnN0cmFjdFRhYmxlTW9kZWwKKyt7CisrcHVibGljOgorKyAgICBTcGFuTW9kZWwoYm9v bCBzZWN0aW9uc01vdmVkKQorKyAgICAgICAgOiBfc2VjdGlvbnNNb3ZlZChzZWN0aW9uc01vdmVk KQorKyAgICB7fQorKyAgICBpbnQgY29sdW1uQ291bnQoY29uc3QgUU1vZGVsSW5kZXggJiA9IHt9 KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAyOyB9CisrICAgIGludCByb3dDb3VudChjb25zdCBR TW9kZWxJbmRleCAmID0ge30pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDE7IH0KKysgICAgUVZh cmlhbnQgZGF0YShjb25zdCBRTW9kZWxJbmRleCAmaWR4LCBpbnQgcm9sZSA9IFF0OjpEaXNwbGF5 Um9sZSkgY29uc3Qgb3ZlcnJpZGUKKysgICAgeworKyAgICAgICAgaWYgKHJvbGUgIT0gUXQ6OkRp c3BsYXlSb2xlKQorKyAgICAgICAgICAgIHJldHVybiBRVmFyaWFudCgpOworKyAgICAgICAgY29u c3QgaW50IGNvbCA9IF9zZWN0aW9uc01vdmVkID8gMSAtIGlkeC5jb2x1bW4oKSA6IGlkeC5jb2x1 bW4oKTsKKysgICAgICAgIGlmIChjb2wgPT0gMCkKKysgICAgICAgICAgICByZXR1cm4gIkxvcmVt IGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBk byBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxp cXVhLiI7CisrICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKysgICAgfQorK3ByaXZhdGU6Cisr ICAgIGJvb2wgX3NlY3Rpb25zTW92ZWQ7CisrfTsKKysKKysKKyt2b2lkIHRzdF9RVGFibGVWaWV3 OjpyZXNpemVUb0NvbnRlbnRzU3BhbnMoKQorK3sKKysgICAgU3Bhbk1vZGVsIG1vZGVsMShmYWxz ZSk7CisrICAgIFNwYW5Nb2RlbCBtb2RlbDIodHJ1ZSk7CisrICAgIFFUYWJsZVZpZXcgdmlldzEs IHZpZXcyLCB2aWV3MzsKKysgICAgdmlldzEuc2V0TW9kZWwoJm1vZGVsMSk7CisrICAgIHZpZXcy LnNldE1vZGVsKCZtb2RlbDIpOworKyAgICB2aWV3Mi5ob3Jpem9udGFsSGVhZGVyKCktPm1vdmVT ZWN0aW9uKDAsIDEpOworKyAgICB2aWV3My5zZXRNb2RlbCgmbW9kZWwxKTsKKysKKysgICAgdmll dzEuc2V0U3BhbigwLCAwLCAxLCAyKTsKKysgICAgdmlldzIuc2V0U3BhbigwLCAxLCAxLCAyKTsK KysgICAgdmlldzEuc2hvdygpOworKyAgICB2aWV3Mi5zaG93KCk7CisrICAgIHZpZXczLnNob3co KTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3MSkpOwor KyAgICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXcyKSk7CisrICAg IFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCgmdmlldzMpKTsKKysgICAgdmll dzEuc2V0Q29sdW1uV2lkdGgoMCwgMTAwKTsKKysgICAgdmlldzEuc2V0Q29sdW1uV2lkdGgoMSwg MTAwKTsKKysgICAgdmlldzIuc2V0Q29sdW1uV2lkdGgoMCwgMTAwKTsKKysgICAgdmlldzIuc2V0 Q29sdW1uV2lkdGgoMSwgMTAwKTsKKysgICAgdmlldzMuc2V0Q29sdW1uV2lkdGgoMCwgMjAwKTsK KysKKysgICAgdmlldzEucmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAgdmlldzIucmVzaXpl Um93VG9Db250ZW50cygwKTsKKysgICAgdmlldzMucmVzaXplUm93VG9Db250ZW50cygwKTsKKysg ICAgUUNPTVBBUkUodmlldzEucm93SGVpZ2h0KDApLCB2aWV3My5yb3dIZWlnaHQoMCkpOworKyAg ICBRQ09NUEFSRSh2aWV3Mi5yb3dIZWlnaHQoMCksIHZpZXczLnJvd0hlaWdodCgwKSk7CisrCisr ICAgIHZpZXczLnJlc2l6ZUNvbHVtblRvQ29udGVudHMoMCk7CisrICAgIHZpZXczLnJlc2l6ZVJv d1RvQ29udGVudHMoMCk7CisrICAgIC8vIGhlaWdodCBzaG91bGQgYmUgb25seSAxIHRleHQgbGlu ZSBmb3IgZWFzeSB0ZXN0aW5nCisrICAgIHZpZXcxLnNldFJvd0hlaWdodCgwLCB2aWV3My52ZXJ0 aWNhbEhlYWRlcigpLT5zZWN0aW9uU2l6ZSgwKSk7CisrICAgIHZpZXcyLnNldFJvd0hlaWdodCgw LCB2aWV3My52ZXJ0aWNhbEhlYWRlcigpLT5zZWN0aW9uU2l6ZSgwKSk7CisrICAgIHZpZXcxLnJl c2l6ZUNvbHVtblRvQ29udGVudHMoMCk7CisrICAgIHZpZXcyLnJlc2l6ZUNvbHVtblRvQ29udGVu dHMoMSk7CisrICAgIFFDT01QQVJFKHZpZXcxLmNvbHVtbldpZHRoKDApLCB2aWV3My5jb2x1bW5X aWR0aCgwKSAtIHZpZXcxLmNvbHVtbldpZHRoKDEpKTsKKysgICAgUUNPTVBBUkUodmlldzIuY29s dW1uV2lkdGgoMCksIHZpZXczLmNvbHVtbldpZHRoKDApIC0gdmlldzIuY29sdW1uV2lkdGgoMSkp OworK30KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyBleHRlcm4gYm9vbCBRX1dJREdFVFNfRVhQ T1JUIHF0X3RhYl9hbGxfd2lkZ2V0cygpOyAvLyBxYXBwbGljYXRpb24uY3BwCisgUVRfRU5EX05B TUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3Fh cHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdl dHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNwcAoraW5kZXggYTNiOGVm NzhkOC4uNDk1NWNlYmQ1ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMv a2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNwcAorKysrIGIvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3Bw CitAQCAtMTQ5OCw3ICsxNDk4LDcgQEAgdm9pZCB0c3RfUUFwcGxpY2F0aW9uOjpkZXNrdG9wU2V0 dGluZ3NBd2FyZSgpCisgICAgIGVudmlyb25tZW50ICs9IFFMYXRpbjFTdHJpbmcoIlFUX01BQ19E SVNBQkxFX0ZPUkVHUk9VTkRfQVBQTElDQVRJT05fVFJBTlNGT1JNPTEiKTsKKyAgICAgdGVzdFBy b2Nlc3Muc2V0RW52aXJvbm1lbnQoZW52aXJvbm1lbnQpOworICNlbmRpZgorLSAgICB0ZXN0UHJv Y2Vzcy5zdGFydCgiZGVza3RvcHNldHRpbmdzYXdhcmVfaGVscGVyIik7CisrICAgIHRlc3RQcm9j ZXNzLnN0YXJ0KCIuL2Rlc2t0b3BzZXR0aW5nc2F3YXJlX2hlbHBlciIpOworICAgICBRVkVSSUZZ Mih0ZXN0UHJvY2Vzcy53YWl0Rm9yU3RhcnRlZCgpLAorICAgICAgICAgICAgICBxUHJpbnRhYmxl KFFTdHJpbmc6OmZyb21MYXRpbjEoIkNhbm5vdCBzdGFydCAnZGVza3RvcHNldHRpbmdzYXdhcmVf aGVscGVyJzogJTEiKS5hcmcodGVzdFByb2Nlc3MuZXJyb3JTdHJpbmcoKSkpKTsKKyAgICAgUVZF UklGWSh0ZXN0UHJvY2Vzcy53YWl0Rm9yRmluaXNoZWQoMTAwMDApKTsKK0BAIC0yNDUyLDcgKzI0 NTIsNyBAQCB2b2lkIHRzdF9RQXBwbGljYXRpb246OnF0YnVnXzEyNjczKCkKKyAjaWYgUVRfQ09O RklHKHByb2Nlc3MpCisgICAgIFFQcm9jZXNzIHRlc3RQcm9jZXNzOworICAgICBRU3RyaW5nTGlz dCBhcmd1bWVudHM7CistICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCJtb2RhbF9oZWxwZXIiLCBhcmd1 bWVudHMpOworKyAgICB0ZXN0UHJvY2Vzcy5zdGFydCgiLi9tb2RhbF9oZWxwZXIiLCBhcmd1bWVu dHMpOworICAgICBRVkVSSUZZMih0ZXN0UHJvY2Vzcy53YWl0Rm9yU3RhcnRlZCgpLAorICAgICAg ICAgICAgICBxUHJpbnRhYmxlKFFTdHJpbmc6OmZyb21MYXRpbjEoIkNhbm5vdCBzdGFydCAnbW9k YWxfaGVscGVyJzogJTEiKS5hcmcodGVzdFByb2Nlc3MuZXJyb3JTdHJpbmcoKSkpKTsKKyAgICAg UVZFUklGWSh0ZXN0UHJvY2Vzcy53YWl0Rm9yRmluaXNoZWQoMjAwMDApKTsKK2RpZmYgLS1naXQg YS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9x YWJzdHJhY3RidXR0b24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fh YnN0cmFjdGJ1dHRvbi90c3RfcWFic3RyYWN0YnV0dG9uLmNwcAoraW5kZXggZWIxMDhhNDBkZS4u ZGNhNTUyOGMxYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0 cy9xYWJzdHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1 dHRvbi5jcHAKK0BAIC00MSw2ICs0MSw3IEBACisgCisgI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFw cGxpY2F0aW9uX3AuaD4KKyAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWludGVncmF0aW9uLmg+Cisr I2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorIAorIGNsYXNzIHRzdF9RQWJzdHJhY3RC dXR0b24gOiBwdWJsaWMgUU9iamVjdAorIHsKK0BAIC03Niw2ICs3Nyw4IEBAIHByaXZhdGUgc2xv dHM6CisgICAgIHZvaWQga2V5TmF2aWdhdGlvbigpOworICNlbmRpZgorIAorKyAgICB2b2lkIGJ1 dHRvblByZXNzS2V5cygpOworKworIHByb3RlY3RlZCBzbG90czoKKyAgICAgdm9pZCBvbkNsaWNr ZWQoKTsKKyAgICAgdm9pZCBvblRvZ2dsZWQoIGJvb2wgb24gKTsKK0BAIC0yNjksNyArMjcyLDEz IEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6c2V0QXV0b1JlcGVhdCgpCisgICAgICAgICBR Q09NUEFSRShwcmVzc19jb3VudCwgY2xpY2tfY291bnQpOworICAgICAgICAgUVZFUklGWShjbGlj a19jb3VudCA+IDEpOworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgNDoKKysgICAgY2FzZSA0 OiB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlv blByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tl eXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVl PFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlu cyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgICAgIFFTS0lQKCJwbGF0Zm9ybSB0aGVtZSBo YXMgS2V5X0VudGVyIGluIEJ1dHRvblByZXNzS2V5cyIpOworKyAgICAgICAgfQorICAgICAgICAg Ly8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBoYXMgbm8gZWZmZWN0IHdoZW4gYXV0b3JlcGVh dCBpcyBmYWxzZQorICAgICAgICAgdGVzdFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKyAgICAg ICAgIHRlc3RXaWRnZXQtPnNldEF1dG9SZXBlYXQoIGZhbHNlICk7CitAQCAtMjg2LDcgKzI5NSwx NCBAQCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OnNldEF1dG9SZXBlYXQoKQorIAorICAgICAg ICAgUVZFUklGWSggY2xpY2tfY291bnQgPT0gMCApOworICAgICAgICAgYnJlYWs7CistICAgIGNh c2UgNToKKysgICAgfQorKyAgICBjYXNlIDU6IHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9u UHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBs YXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBp ZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICAg ICAgUVNLSVAoInBsYXRmb3JtIHRoZW1lIGhhcyBLZXlfRW50ZXIgaW4gQnV0dG9uUHJlc3NLZXlz Iik7CisrICAgICAgICB9CisgICAgICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhh cyBubyBlZmZlY3Qgd2hlbiBhdXRvcmVwZWF0IGlzIHRydWUKKyAgICAgICAgIHRlc3RXaWRnZXQt PnNldERvd24oIGZhbHNlICk7CisgICAgICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCB0 cnVlICk7CitAQCAtMzA0LDYgKzMyMCw3IEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6c2V0 QXV0b1JlcGVhdCgpCisgCisgICAgICAgICBRVkVSSUZZKCBjbGlja19jb3VudCA9PSAwICk7Cisg ICAgICAgICBicmVhazsKKysgICAgfQorICAgICBjYXNlIDY6CisgICAgICAgICAvLyB2ZXJpZnkg YXV0b3JlcGVhdCBpcyBvZmYgYnkgZGVmYXVsdC4KKyAgICAgICAgIE15QnV0dG9uIHRtcCggMCk7 CitAQCAtNjUxLDUgKzY2OCwxNiBAQCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OmtleU5hdmln YXRpb24oKQorIH0KKyAjZW5kaWYKKyAKKyt2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OmJ1dHRv blByZXNzS2V5cygpCisreworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlB cHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblBy ZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1 ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidXR0b25QcmVz c0tleXMubGVuZ3RoKCk7ICsraSkgeworKyAgICAgICAgUVRlc3Q6OmtleUNsaWNrKHRlc3RXaWRn ZXQsIGJ1dHRvblByZXNzS2V5c1tpXSk7CisrICAgICAgICBRQ09NUEFSRShjbGlja19jb3VudCwg aSArIDEpOworKyAgICB9CisrfQorKworIFFURVNUX01BSU4odHN0X1FBYnN0cmFjdEJ1dHRvbikK KyAjaW5jbHVkZSAidHN0X3FhYnN0cmFjdGJ1dHRvbi5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94LmNwcCBi L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0X3Fjb21ib2Jv eC5jcHAKK2luZGV4IDMyNDM3MDUwZjUuLjQ2YjVhZjZkNjMgMTAwNjQ0CistLS0gYS9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwCisr KysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29t Ym9ib3guY3BwCitAQCAtMTY4LDYgKzE2OCw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQg Y2hlY2tNZW51SXRlbVBvc1doZW5TdHlsZVNoZWV0SXNTZXQoKTsKKyAgICAgdm9pZCBjaGVja0Vt YmVkZGVkTGluZUVkaXRXaGVuU3R5bGVTaGVldElzU2V0KCk7CisgICAgIHZvaWQgcHJvcGFnYXRl U3R5bGVDaGFuZ2VzKCk7CisrICAgIHZvaWQgYnV0dG9uUHJlc3NLZXlzKCk7CisgCisgcHJpdmF0 ZToKKyAgICAgUGxhdGZvcm1JbnB1dENvbnRleHQgbV9wbGF0Zm9ybUlucHV0Q29udGV4dDsKK0BA IC0xNjgyLDYgKzE2ODMsMTYgQEAgdm9pZCB0c3RfUUNvbWJvQm94OjpzZXRNb2RlbCgpCisgICAg IFFDT01QQVJFKGJveC5yb290TW9kZWxJbmRleCgpLCByb290TW9kZWxJbmRleCk7CisgICAgIGJv eC5zZXRNb2RlbChib3gubW9kZWwoKSk7CisgICAgIFFDT01QQVJFKGJveC5yb290TW9kZWxJbmRl eCgpLCByb290TW9kZWxJbmRleCk7CisrCisrICAgIC8vIGNoZWNrIHRoYXQgc2V0dGluZyB0aGUg c2FtZSBtb2RlbCBhcyB0aGUgY29tcGxldGVyJ3MgZG9lc24ndCBjcmFzaAorKyAgICBRQ29tcGxl dGVyICpjb21wbGV0ZXIgPSBuZXcgUUNvbXBsZXRlcigmYm94KTsKKysgICAgYm94LnNldEVkaXRh YmxlKHRydWUpOworKyAgICBib3guc2V0Q29tcGxldGVyKGNvbXBsZXRlcik7CisrICAgIGF1dG8g Kmxpc3RNb2RlbCA9IG5ldyBRU3RyaW5nTGlzdE1vZGVsKHsgIm9uZSIsICJ0d28iIH0sIGNvbXBs ZXRlcik7CisrICAgIGNvbXBsZXRlci0+c2V0TW9kZWwobGlzdE1vZGVsKTsKKysgICAgUUNPTVBB UkUobGlzdE1vZGVsLT5yb3dDb3VudCgpLCAyKTsgLy8gbWFrZSBzdXJlIGl0IHdhc24ndCBkZWxl dGVkCisrICAgIGJveC5zZXRNb2RlbChsaXN0TW9kZWwpOworKyAgICBRQ09NUEFSRShsaXN0TW9k ZWwtPnJvd0NvdW50KCksIDIpOyAvLyBtYWtlIHN1cmUgaXQgd2Fzbid0IGRlbGV0ZWQKKyB9Cisg Cisgdm9pZCB0c3RfUUNvbWJvQm94OjpzZXRDdXN0b21Nb2RlbEFuZFZpZXcoKQorQEAgLTM2MzIs NSArMzY0MywyNCBAQCB2b2lkIHRzdF9RQ29tYm9Cb3g6OnByb3BhZ2F0ZVN0eWxlQ2hhbmdlcygp CisgICAgIFFWRVJJRlkoZnJhbWVTdHlsZS5pbnF1aXJlZCk7CisgfQorIAorK3ZvaWQgdHN0X1FD b21ib0JveDo6YnV0dG9uUHJlc3NLZXlzKCkKKyt7CisrICAgIFFDb21ib0JveCBjb21ib0JveDsK KysgICAgY29tYm9Cb3guc2V0RWRpdGFibGUoZmFsc2UpOworKyAgICBjb21ib0JveC5hZGRJdGVt KFFTdHJpbmc6Om51bWJlcigxKSk7CisrICAgIGNvbWJvQm94LmFkZEl0ZW0oUVN0cmluZzo6bnVt YmVyKDIpKTsKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRp b25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMp CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8 UXQ6OktleT4+KCk7CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnV0dG9uUHJlc3NLZXlzLmxl bmd0aCgpOyArK2kpIHsKKysgICAgICAgIFFUZXN0OjprZXlDbGljaygmY29tYm9Cb3gsIGJ1dHRv blByZXNzS2V5c1tpXSk7CisrICAgICAgICAvLyBPbiBzb21lIHBsYXRmb3JtcywgYSB3aW5kb3cg d2lsbCBub3QgYmUgaW1tZWRpYXRlbHkgdmlzaWJsZSwKKysgICAgICAgIC8vIGJ1dCB0YWtlIHNv bWUgZXZlbnQtbG9vcCBpdGVyYXRpb25zIHRvIGNvbXBsZXRlLgorKyAgICAgICAgLy8gVXNpbmcg UVRSWV9WRVJJRlkgdG8gZGVhbCB3aXRoIHRoYXQuCisrICAgICAgICBRVFJZX1ZFUklGWShjb21i b0JveC52aWV3KCktPmlzVmlzaWJsZSgpKTsKKysgICAgICAgIGNvbWJvQm94LmhpZGVQb3B1cCgp OworKyAgICB9CisrfQorKworIFFURVNUX01BSU4odHN0X1FDb21ib0JveCkKKyAjaW5jbHVkZSAi dHN0X3Fjb21ib2JveC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0 cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvIGIvcXRi YXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFu ZGxpbmtidXR0b24ucHJvCitpbmRleCBiZTNjZmNkMTA0Li5jMjI4ZmRmY2NhIDEwMDY0NAorLS0t IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9x Y29tbWFuZGxpbmtidXR0b24ucHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dp ZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3Fjb21tYW5kbGlua2J1dHRvbi5wcm8KK0BAIC0xLDYg KzEsNiBAQAorIENPTkZJRyArPSB0ZXN0Y2FzZQorIFRBUkdFVCA9IHRzdF9xY29tbWFuZGxpbmti dXR0b24KKy1RVCArPSB3aWRnZXRzIHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3Vp LXByaXZhdGUKKyBTT1VSQ0VTICArPSB0c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAorIAorIAor ZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxp bmtidXR0b24vdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24u Y3BwCitpbmRleCAwMDQ0ZDMzYzY2Li40Y2YwNjI5NmU0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRs aW5rYnV0dG9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fj b21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAorQEAgLTQwLDYgKzQw LDkgQEAKKyAjaW5jbHVkZSA8UUdyaWRMYXlvdXQ+CisgI2luY2x1ZGUgPFFQYWludGVyPgorIAor KyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+CisrI2luY2x1ZGUgPHFwYS9x cGxhdGZvcm10aGVtZS5oPgorKworIGNsYXNzIHRzdF9RQ29tbWFuZExpbmtCdXR0b24gOiBwdWJs aWMgUU9iamVjdAorIHsKKyAgICAgUV9PQkpFQ1QKK0BAIC0yMjMsNiArMjI2LDEzIEBAIHZvaWQg dHN0X1FDb21tYW5kTGlua0J1dHRvbjo6c2V0QXV0b1JlcGVhdCgpCisgICAgIC8vIGNoZWNrIHRo YXQgcHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVjdAorICAgICByZXNldENvdW50ZXJzKCk7Cisg ICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7CisrICAgIC8vIFNraXAgYWZ0ZXIgcmVz ZXQgaWYgQnV0dG9uUHJlc3NLZXlzIGhhcyBLZXlfRW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0 b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0 Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25Q cmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgIHJldHVybjsKKysg ICAgfQorICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCBmYWxzZSApOworICAgICBRVGVz dDo6a2V5UHJlc3MoIHRlc3RXaWRnZXQsIFF0OjpLZXlfRW50ZXIgKTsKKyAKK0BAIC0yNTUsNiAr MjY1LDE0IEBAIHZvaWQgdHN0X1FDb21tYW5kTGlua0J1dHRvbjo6cHJlc3NlZCgpCisgICAgIFFD T01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOworICAgICBRQ09NUEFSRSggcmVsZWFzZV9j b3VudCwgKHVpbnQpMSApOworIAorKyAgICAvLyBTa2lwIGlmIEJ1dHRvblByZXNzS2V5cyBoYXMg S2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0 aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlz KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0 PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlf RW50ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKyAgICAgUVRlc3Q6OmtleVBy ZXNzKCB0ZXN0V2lkZ2V0LFF0OjpLZXlfRW50ZXIgKTsKKyAgICAgUUNPTVBBUkUoIHByZXNzX2Nv dW50LCAodWludCkxICk7CisgICAgIFFDT01QQVJFKCByZWxlYXNlX2NvdW50LCAodWludCkxICk7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJv eC9xZ3JvdXBib3gucHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91 cGJveC9xZ3JvdXBib3gucHJvCitpbmRleCA0YTVlNzZmZjY1Li5hMjM1ZmExZmFjIDEwMDY0NAor LS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBi b3gucHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94 L3Fncm91cGJveC5wcm8KK0BAIC0xLDYgKzEsNiBAQAorIENPTkZJRyArPSB0ZXN0Y2FzZQorIFRB UkdFVCA9IHRzdF9xZ3JvdXBib3gKKy1RVCArPSB3aWRnZXRzIHRlc3RsaWIKKytRVCArPSB3aWRn ZXRzIHRlc3RsaWIgZ3VpLXByaXZhdGUKKyBTT1VSQ0VTICArPSB0c3RfcWdyb3VwYm94LmNwcAor IAorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3Jv dXBib3gvdHN0X3Fncm91cGJveC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcWdyb3VwYm94L3RzdF9xZ3JvdXBib3guY3BwCitpbmRleCA0ZmI1ZDI2MmNhLi5kOGQ3NTYy YjczIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91 cGJveC90c3RfcWdyb3VwYm94LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93 aWRnZXRzL3Fncm91cGJveC90c3RfcWdyb3VwYm94LmNwcAorQEAgLTM1LDYgKzM1LDkgQEAKKyAj aW5jbHVkZSA8UVJhZGlvQnV0dG9uPgorICNpbmNsdWRlIDxRRGlhbG9nPgorIAorKyNpbmNsdWRl IDxwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10 aGVtZS5oPgorKworICNpbmNsdWRlICJxZ3JvdXBib3guaCIKKyAKKyBjbGFzcyB0c3RfUUdyb3Vw Qm94IDogcHVibGljIFFPYmplY3QKK0BAIC02OSw2ICs3Miw3IEBAIHByaXZhdGUgc2xvdHM6Cisg ICAgIHZvaWQgcHJvcGFnYXRlRm9jdXMoKTsKKyAgICAgdm9pZCB0YXNrX1FUQlVHXzE5MTcwX2ln bm9yZU1vdXNlUmVsZWFzZUV2ZW50KCk7CisgICAgIHZvaWQgdGFza19RVEJVR18xNTUxOV9wcm9w YWdhdGVNb3VzZUV2ZW50cygpOworKyAgICB2b2lkIGJ1dHRvblByZXNzS2V5cygpOworIAorIHBy aXZhdGU6CisgICAgIGJvb2wgY2hlY2tlZDsKK0BAIC02MTAsNiArNjE0LDIwIEBAIHZvaWQgdHN0 X1FHcm91cEJveDo6dGFza19RVEJVR18xNTUxOV9wcm9wYWdhdGVNb3VzZUV2ZW50cygpCisgICAg IFFDT01QQVJFKHBhcmVudC5tb3VzZU1vdmVkLCB0cnVlKTsKKyB9CisgCisrdm9pZCB0c3RfUUdy b3VwQm94OjpidXR0b25QcmVzc0tleXMoKQorK3sKKysgICAgUUdyb3VwQm94IGdyb3VwQm94Owor KyAgICBncm91cEJveC5zZXRDaGVja2FibGUodHJ1ZSk7CisrICAgIFFTaWduYWxTcHkgY2xpY2tl ZFNweSgmZ3JvdXBCb3gsICZRR3JvdXBCb3g6OmNsaWNrZWQpOworKyAgICBjb25zdCBhdXRvIGJ1 dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBs YXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgZm9yIChpbnQg aSA9IDA7IGkgPCBidXR0b25QcmVzc0tleXMubGVuZ3RoKCk7ICsraSkgeworKyAgICAgICAgUVRl c3Q6OmtleUNsaWNrKCZncm91cEJveCwgYnV0dG9uUHJlc3NLZXlzW2ldKTsKKysgICAgICAgIFFD T01QQVJFKGNsaWNrZWRTcHkubGVuZ3RoKCksIGkgKyAxKTsKKysgICAgfQorK30KKysKKyB2b2lk IHRzdF9RR3JvdXBCb3g6OnNlbmRNb3VzZU1vdmVFdmVudChRV2lkZ2V0ICp3aWRnZXQsIGNvbnN0 IFFQb2ludCAmbG9jYWxQb3MpCisgeworICAgICAvLyBTZW5kIGEgTW91c2VNb3ZlIGV2ZW50IHdp dGhvdXQgYWN0dWFsbHkgbW92aW5nIHRoZSBwb2ludGVyCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBybyBiL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5w cm8KK2luZGV4IDM1M2FkMDZjYTIuLmU1NWY2MTQ4ZjIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvCisrKysg Yi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0 b24ucHJvCitAQCAtMSw2ICsxLDYgQEAKKyBDT05GSUcgKz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0 c3RfcXB1c2hidXR0b24KKy1RVCArPSB3aWRnZXRzIHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRl c3RsaWIgZ3VpLXByaXZhdGUKKyBTT1VSQ0VTICArPSB0c3RfcXB1c2hidXR0b24uY3BwCisgCisg CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0 dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcXB1c2hidXR0b24vdHN0X3FwdXNoYnV0dG9uLmNwcAoraW5kZXggZTgxODUxNGE3OS4uNDA0 M2U5MzI2YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9x cHVzaGJ1dHRvbi90c3RfcXB1c2hidXR0b24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vdHN0X3FwdXNoYnV0dG9uLmNwcAorQEAgLTQxLDYg KzQxLDkgQEAKKyAjaW5jbHVkZSA8UVN0eWxlRmFjdG9yeT4KKyAjaW5jbHVkZSA8UVRhYldpZGdl dD4KKyAKKysjaW5jbHVkZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRl IDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKysKKyBjbGFzcyB0c3RfUVB1c2hCdXR0b24gOiBwdWJs aWMgUU9iamVjdAorIHsKKyBRX09CSkVDVAorQEAgLTIxMiw2ICsyMTUsMTMgQEAgdm9pZCB0c3Rf UVB1c2hCdXR0b246OmF1dG9SZXBlYXQoKQorICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVO VEVSIGhhcyBubyBlZmZlY3QKKyAgICAgcmVzZXRDb3VudGVycygpOworICAgICB0ZXN0V2lkZ2V0 LT5zZXREb3duKCBmYWxzZSApOworKyAgICAvLyBTa2lwIGFmdGVyIHJlc2V0IGlmIEJ1dHRvblBy ZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0g UUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0 dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRh aW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKyAgICAgdGVz dFdpZGdldC0+c2V0QXV0b1JlcGVhdCggZmFsc2UgKTsKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0 ZXN0V2lkZ2V0LCBRdDo6S2V5X0VudGVyICk7CisgCitAQCAtMjQ3LDYgKzI1NywxNCBAQCB2b2lk IHRzdF9RUHVzaEJ1dHRvbjo6cHJlc3NlZCgpCisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwg KHVpbnQpMSApOworICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworIAor KyAgICAvLyBTa2lwIGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0 IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1U aGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1l SGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBp ZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICBy ZXR1cm47CisrICAgIH0KKysKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LFF0OjpL ZXlfRW50ZXIgKTsKKyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAg IFFDT01QQVJFKCByZWxlYXNlX2NvdW50LCAodWludCkxICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL21hbnVhbC9yaGkvY3ViZW1hcF9yZW5kZXIvYnVpbGRzaGFkZXIuYmF0IGIvcXRiYXNl L3Rlc3RzL21hbnVhbC9yaGkvY3ViZW1hcF9yZW5kZXIvYnVpbGRzaGFkZXIuYmF0CitvbGQgbW9k ZSAxMDA3NTUKK25ldyBtb2RlIDEwMDY0NAorU3VibW9kdWxlIHF0Y29ubmVjdGl2aXR5IGU5NTdk NDgxLi4wNTYyOTRjMDoKK2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3Ro L2JsdWV6L2hjaW1hbmFnZXIuY3BwIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVl ei9oY2ltYW5hZ2VyLmNwcAoraW5kZXggZTI2MzVmYWUuLmE4YjhlM2I5IDEwMDY0NAorLS0tIGEv cXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcAorKysrIGIv cXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcAorQEAgLTU2 Myw5ICs1NjMsMTEgQEAgdm9pZCBIY2lNYW5hZ2VyOjpoYW5kbGVIY2lBY2xQYWNrZXQoY29uc3Qg cXVpbnQ4ICpkYXRhLCBpbnQgc2l6ZSkKKyAKKyB2b2lkIEhjaU1hbmFnZXI6OmhhbmRsZUxlTWV0 YUV2ZW50KGNvbnN0IHF1aW50OCAqZGF0YSkKKyB7CistICAgIC8vIFNwZWMgdjQuMiwgVm9sIDIs IHBhcnQgRSwgNy43LjY1ZmYKKysgICAgLy8gU3BlYyB2NS4zLCBWb2wgNCwgcGFydCBFLCA3Ljcu NjUuKgorICAgICBzd2l0Y2ggKCpkYXRhKSB7CistICAgIGNhc2UgMHgxOiB7CisrICAgIGNhc2Ug MHgxOiAvLyBIQ0lfTEVfQ29ubmVjdGlvbl9Db21wbGV0ZQorKyAgICBjYXNlIDB4QTogLy8gSENJ X0xFX0VuaGFuY2VkX0Nvbm5lY3Rpb25fQ29tcGxldGUKKysgICAgeworICAgICAgICAgY29uc3Qg cXVpbnQxNiBoYW5kbGUgPSBidF9nZXRfbGUxNihkYXRhICsgMik7CisgICAgICAgICBlbWl0IGNv bm5lY3Rpb25Db21wbGV0ZShoYW5kbGUpOworICAgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEv cXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFn ZW50X2JsdWV6LmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNl cnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAKK2luZGV4IDZhOTMxNDNiLi40YTE4Y2ZjNyAx MDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZp Y2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVl dG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAKK0BAIC0zMjAs NyArMzIwLDEwIEBAIHZvaWQgUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudFByaXZhdGU6 Ol9xX2ZpbmlzaFNkcFNjYW4oUUJsdWV0b290aFNlcnZpY2VECisgICAgICAgICAgICAgZm9yIChj b25zdCBRQmx1ZXRvb3RoVXVpZCAmaWQgOiBzZXJ2aWNlQ2xhc3NVdWlkcykgeworICAgICAgICAg ICAgICAgICBpZiAoaWQubWluaW11bVNpemUoKSA9PSAxNikgeworICAgICAgICAgICAgICAgICAg ICAgc2VydmljZUluZm8uc2V0U2VydmljZVV1aWQoaWQpOworLSAgICAgICAgICAgICAgICAgICAg c2VydmljZUluZm8uc2V0U2VydmljZU5hbWUoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2Vu dDo6dHIoIkN1c3RvbSBTZXJ2aWNlIikpOworKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZp Y2VJbmZvLnNlcnZpY2VOYW1lKCkuaXNFbXB0eSgpKSB7CisrICAgICAgICAgICAgICAgICAgICAg ICAgc2VydmljZUluZm8uc2V0U2VydmljZU5hbWUoCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6dHIoIkN1c3RvbSBT ZXJ2aWNlIikpOworKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg UUJsdWV0b290aFNlcnZpY2VJbmZvOjpTZXF1ZW5jZSBtb2RTZXEgPQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXJ2aWNlSW5mby5hdHRyaWJ1dGUoUUJsdWV0b290aFNlcnZpY2VJbmZv OjpTZXJ2aWNlQ2xhc3NJZHMpLnZhbHVlPFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6U2VxdWVuY2U+ KCk7CisgICAgICAgICAgICAgICAgICAgICBtb2RTZXEucmVtb3ZlT25lKFFWYXJpYW50Ojpmcm9t VmFsdWUoaWQpKTsKK0BAIC0zMzQsOCArMzM3LDEwIEBAIHZvaWQgUUJsdWV0b290aFNlcnZpY2VE aXNjb3ZlcnlBZ2VudFByaXZhdGU6Ol9xX2ZpbmlzaFNkcFNjYW4oUUJsdWV0b290aFNlcnZpY2VE CisgICAgICAgICAgICAgICAgIHFDRGVidWcoUVRfQlRfQkxVRVopIDw8ICJEaXNjb3ZlcmVkIHNl cnZpY2VzIiA8PCBkaXNjb3ZlcmVkRGV2aWNlcy5hdCgwKS5hZGRyZXNzKCkudG9TdHJpbmcoKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzZXJ2aWNlSW5mby5zZXJ2 aWNlTmFtZSgpIDw8IHNlcnZpY2VJbmZvLnNlcnZpY2VVdWlkKCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPDwgIj4+PiIgPDwgc2VydmljZUluZm8uc2VydmljZUNsYXNz VXVpZHMoKTsKKy0KKy0gICAgICAgICAgICAgICAgZW1pdCBxLT5zZXJ2aWNlRGlzY292ZXJlZChz ZXJ2aWNlSW5mbyk7CisrICAgICAgICAgICAgICAgIC8vIFVzZSBxdWV1ZWQgY29ubmVjdGlvbiB0 byBhbGxvdyB1cyBmaW5pc2ggdGhlIHNlcnZpY2UgbG9vcGluZzsgdGhlIGFwcGxpY2F0aW9uCisr ICAgICAgICAgICAgICAgIC8vIG1pZ2h0IGNhbGwgc3RvcCgpIHdoZW4gaXQgaGFzIGRldGVjdGVk IHRoZSBzZXJ2aWNlLW9mLWludGVyZXN0LgorKyAgICAgICAgICAgICAgICBRTWV0YU9iamVjdDo6 aW52b2tlTWV0aG9kKHEsICJzZXJ2aWNlRGlzY292ZXJlZCIsIFF0OjpRdWV1ZWRDb25uZWN0aW9u LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFfQVJHKFFCbHVl dG9vdGhTZXJ2aWNlSW5mbywgc2VydmljZUluZm8pKTsKKyAgICAgICAgICAgICB9CisgICAgICAg ICB9CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3Fi bHVldG9vdGhzb2NrZXQuY3BwIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRv b3Roc29ja2V0LmNwcAoraW5kZXggZTRkODU0NDcuLmFhZGQ0NzU1IDEwMDY0NAorLS0tIGEvcXRj b25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0LmNwcAorKysrIGIvcXRj b25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0LmNwcAorQEAgLTU5Myw3 ICs1OTMsNyBAQCB2b2lkIFFCbHVldG9vdGhTb2NrZXQ6OnNldFNvY2tldFN0YXRlKFFCbHVldG9v dGhTb2NrZXQ6OlNvY2tldFN0YXRlIHN0YXRlKQorIGJvb2wgUUJsdWV0b290aFNvY2tldDo6Y2Fu UmVhZExpbmUoKSBjb25zdAorIHsKKyAgICAgUV9EKGNvbnN0IFFCbHVldG9vdGhTb2NrZXRCYXNl KTsKKy0gICAgcmV0dXJuIGQtPmNhblJlYWRMaW5lKCk7CisrICAgIHJldHVybiBkLT5jYW5SZWFk TGluZSgpIHx8IFFJT0RldmljZTo6Y2FuUmVhZExpbmUoKTsKKyB9CisgCisgLyohCitkaWZmIC0t Z2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6 ZGJ1cy5jcHAgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRf Ymx1ZXpkYnVzLmNwcAoraW5kZXggMDg0YWE5NTguLmQ2YWExN2E3IDEwMDY0NAorLS0tIGEvcXRj b25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAK KysrKyBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVl emRidXMuY3BwCitAQCAtMjg0LDYgKzI4NCwxMCBAQCB2b2lkIFFCbHVldG9vdGhTb2NrZXRQcml2 YXRlQmx1ZXpEQnVzOjpjb25uZWN0VG9TZXJ2aWNlKAorICAgICAgICAgcmV0dXJuOworICAgICB9 CisgCisrICAgIGlmIChzZXJ2aWNlLnNvY2tldFByb3RvY29sKCkgIT0gUUJsdWV0b290aFNlcnZp Y2VJbmZvOjpQcm90b2NvbDo6VW5rbm93blByb3RvY29sKQorKyAgICAgICAgc29ja2V0VHlwZSA9 IHNlcnZpY2Uuc29ja2V0UHJvdG9jb2woKTsKKysgICAgcUNEZWJ1ZyhRVF9CVF9CTFVFWikgPDwg IlNvY2tldCBwcm90b2NvbCB1c2VkOiIgPDwgc29ja2V0VHlwZTsKKysKKyAgICAgY29ubmVjdFRv U2VydmljZShzZXJ2aWNlLmRldmljZSgpLmFkZHJlc3MoKSwgdGFyZ2V0U2VydmljZSwgb3Blbk1v ZGUpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS90ZXN0cy9hdXRvL3FibHVl dG9vdGhzb2NrZXQvdHN0X3FibHVldG9vdGhzb2NrZXQuY3BwIGIvcXRjb25uZWN0aXZpdHkvdGVz dHMvYXV0by9xYmx1ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcAoraW5kZXgg MDViYzFhMGYuLmE3YjVlZjFmIDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0 by9xYmx1ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcAorKysrIGIvcXRjb25u ZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0 LmNwcAorQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIHRzdF9RQmx1ZXRvb3RoU29ja2V0Ojppbml0 VGVzdENhc2UoKQorICAgICBxRGVidWcoKSA8PCAiU3RhcnRpbmcgZGlzY292ZXJ5IjsKKyAKKyAg ICAgc2RhLT5zZXRVdWlkRmlsdGVyKFFCbHVldG9vdGhVdWlkKFFTdHJpbmcoVEVTVF9TRVJWSUNF X1VVSUQpKSk7CistICAgIHNkYS0+c3RhcnQoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2Vu dDo6TWluaW1hbERpc2NvdmVyeSk7CisrICAgIHNkYS0+c3RhcnQoUUJsdWV0b290aFNlcnZpY2VE aXNjb3ZlcnlBZ2VudDo6RnVsbERpc2NvdmVyeSk7CisgCisgICAgIGZvciAoaW50IGNvbm5lY3RU aW1lID0gTWF4Q29ubmVjdFRpbWU7ICFkb25lX2Rpc2NvdmVyeSAmJiBjb25uZWN0VGltZSA+IDA7 IGNvbm5lY3RUaW1lIC09IDEwMDApCisgICAgICAgICBRVGVzdDo6cVdhaXQoMTAwMCk7CitTdWJt b2R1bGUgcXRkZWNsYXJhdGl2ZSBmNTcwMWYwZC4uOGRlZmU3YmY6CitkaWZmIC0tZ2l0IGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcW1sL2NvbW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmggYi9xdGRl Y2xhcmF0aXZlL3NyYy9xbWwvY29tbW9uL3FxbWxqc2ZpeGVkcG9vbGFycmF5X3AuaAoraW5kZXgg YjY1Yjk5NGQ2Yy4uMTVhOGNkNjg3OCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3Ft bC9jb21tb24vcXFtbGpzZml4ZWRwb29sYXJyYXlfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xbWwvY29tbW9uL3FxbWxqc2ZpeGVkcG9vbGFycmF5X3AuaAorQEAgLTg2LDcgKzg2LDcgQEAg cHVibGljOgorICAgICAgICAgaWYgKFFUeXBlSW5mbzxUPjo6aXNDb21wbGV4KSB7CisgICAgICAg ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgICBu ZXcgKGRhdGEgKyBpKSBUKHZlY3Rvci5hdChpKSk7CistICAgICAgICB9IGVsc2UgeworKyAgICAg ICAgfSBlbHNlIGlmIChjb3VudCkgeworICAgICAgICAgICAgIG1lbWNweShkYXRhLCBzdGF0aWNf Y2FzdDxjb25zdCB2b2lkKj4odmVjdG9yLmNvbnN0RGF0YSgpKSwgY291bnQgKiBzaXplb2YoVCkp OworICAgICAgICAgfQorICAgICB9CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1s L2pzcnVudGltZS9xdjRxb2JqZWN0d3JhcHBlci5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwv anNydW50aW1lL3F2NHFvYmplY3R3cmFwcGVyLmNwcAoraW5kZXggZTU3Y2RkODI3OC4uOTQ2MTM1 OThhZiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9i amVjdHdyYXBwZXIuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2 NHFvYmplY3R3cmFwcGVyLmNwcAorQEAgLTExNDUsOCArMTE0NSw3IEBAIHZvaWQgSGVhcDo6UU9i amVjdFdyYXBwZXI6Om1hcmtPYmplY3RzKEhlYXA6OkJhc2UgKnRoYXQsIFFWNDo6TWFya1N0YWNr ICptYXJrU3RhCisgdm9pZCBRT2JqZWN0V3JhcHBlcjo6ZGVzdHJveU9iamVjdChib29sIGxhc3RD YWxsKQorIHsKKyAgICAgSGVhcDo6UU9iamVjdFdyYXBwZXIgKmggPSBkKCk7CistICAgIGlmICgh aC0+aW50ZXJuYWxDbGFzcykKKy0gICAgICAgIHJldHVybjsgLy8gZGVzdHJveU9iamVjdCBhbHJl YWR5IGdvdCBjYWxsZWQKKysgICAgUV9BU1NFUlQoaC0+aW50ZXJuYWxDbGFzcyk7CisgCisgICAg IGlmIChoLT5vYmplY3QoKSkgeworICAgICAgICAgUVFtbERhdGEgKmRkYXRhID0gUVFtbERhdGE6 OmdldChoLT5vYmplY3QoKSwgZmFsc2UpOworQEAgLTExNzYsNyArMTE3NSw3IEBAIHZvaWQgUU9i amVjdFdyYXBwZXI6OmRlc3Ryb3lPYmplY3QoYm9vbCBsYXN0Q2FsbCkKKyAgICAgICAgIH0KKyAg ICAgfQorIAorLSAgICBoLT5+RGF0YSgpOworKyAgICBoLT5kZXN0cm95KCk7CisgfQorIAorIAor ZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRtbS5jcHAKK2luZGV4IDA2Y2FmMDRlNWEuLmRh MTQ5YTY3YzQgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1t LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRtbS5jcHAKK0BAIC05 ODEsNyArOTgxLDcgQEAgdm9pZCBNZW1vcnlNYW5hZ2VyOjpzd2VlcChib29sIGxhc3RTd2VlcCwg Q2xhc3NEZXN0cm95U3RhdHNDYWxsYmFjayBjbGFzc0NvdW50UHQKKyAKKyAgICAgaWYgKE11bHRp cGx5V3JhcHBlZFFPYmplY3RNYXAgKm11bHRpcGx5V3JhcHBlZFFPYmplY3RzID0gZW5naW5lLT5t X211bHRpcGx5V3JhcHBlZFFPYmplY3RzKSB7CisgICAgICAgICBmb3IgKE11bHRpcGx5V3JhcHBl ZFFPYmplY3RNYXA6Okl0ZXJhdG9yIGl0ID0gbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMtPmJlZ2lu KCk7IGl0ICE9IG11bHRpcGx5V3JhcHBlZFFPYmplY3RzLT5lbmQoKTspIHsKKy0gICAgICAgICAg ICBpZiAoIWl0LnZhbHVlKCkuaXNOdWxsT3JVbmRlZmluZWQoKSkKKysgICAgICAgICAgICBpZiAo aXQudmFsdWUoKS5pc051bGxPclVuZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgICBpdCA9IG11 bHRpcGx5V3JhcHBlZFFPYmplY3RzLT5lcmFzZShpdCk7CisgICAgICAgICAgICAgZWxzZQorICAg ICAgICAgICAgICAgICArK2l0OworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1v ZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMv cXFtbGRlbGVnYXRlbW9kZWwuY3BwCitpbmRleCAyMDc5YThlZDA0Li5hNTc3Y2IyMzUxIDEwMDY0 NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNw cAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNw cAorQEAgLTM4OSw2ICszODksMTIgQEAgdm9pZCBRUW1sRGVsZWdhdGVNb2RlbFByaXZhdGU6OmNv bm5lY3RUb0Fic3RyYWN0SXRlbU1vZGVsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgcSwgIFFR bWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX3Jvd3NSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQp KSk7CisgICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdO QUwocm93c0Fib3V0VG9CZVJlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorICAgICAgICAg ICAgICAgICAgICAgICBxLCAgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3Ffcm93c0Fib3V0VG9C ZVJlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgcW1sb2JqZWN0X2Nvbm5lY3Qo YWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChjb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5k ZXgsaW50LGludCkpLAorKyAgICAgICAgICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2Rl bCwgU0xPVChfcV9jb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAg cW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChjb2x1bW5z UmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSksCisrICAgICAgICAgICAgICAgICAgICAgIHEs IFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2NvbHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGlu dCxpbnQpKSk7CisrICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVs LCBTSUdOQUwoY29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50 KSksCisrICAgICAgICAgICAgICAgICAgICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9x X2NvbHVtbnNNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpKTsKKyAg ICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChkYXRh Q2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9yPGludD4pKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgcSwgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3FfZGF0YUNoYW5nZWQo UU1vZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZlY3RvcjxpbnQ+KSkpOworICAgICBxbWxvYmplY3Rf Y29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKHJvd3NNb3ZlZChRTW9kZWxJ bmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLAorQEAgLTQxMyw2ICs0MTksMTIgQEAgdm9p ZCBRUW1sRGVsZWdhdGVNb2RlbFByaXZhdGU6OmRpc2Nvbm5lY3RGcm9tQWJzdHJhY3RJdGVtTW9k ZWwoKQorICAgICAgICAgICAgICAgICAgICAgICAgIHEsIFNMT1QoX3Ffcm93c0Fib3V0VG9CZVJl bW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChh aW0sIFNJR05BTChyb3dzUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgcSwgU0xPVChfcV9yb3dzUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50 KSkpOworKyAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGNvbHVtbnNJbnNlcnRl ZChRTW9kZWxJbmRleCxpbnQsaW50KSksIHEsCisrICAgICAgICAgICAgICAgICAgICAgICAgU0xP VChfcV9jb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgUU9iamVj dDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChjb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQs aW50KSksIHEsCisrICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChfcV9jb2x1bW5zUmVtb3Zl ZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwg U0lHTkFMKGNvbHVtbnNNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkp LCBxLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QoX3FfY29sdW1uc01vdmVkKFFNb2Rl bEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSkpOworICAgICBRT2JqZWN0OjpkaXNjb25u ZWN0KGFpbSwgU0lHTkFMKGRhdGFDaGFuZ2VkKFFNb2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0 b3I8aW50PikpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHEsIFNMT1QoX3FfZGF0YUNoYW5n ZWQoUU1vZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZlY3RvcjxpbnQ+KSkpOworICAgICBRT2JqZWN0 OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKHJvd3NNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFN b2RlbEluZGV4LGludCkpLAorQEAgLTE5NzMsNiArMTk4NSwzOCBAQCB2b2lkIFFRbWxEZWxlZ2F0 ZU1vZGVsOjpfcV9yb3dzTW92ZWQoCisgICAgIH0KKyB9CisgCisrdm9pZCBRUW1sRGVsZWdhdGVN b2RlbDo6X3FfY29sdW1uc0luc2VydGVkKGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBi ZWdpbiwgaW50IGVuZCkKKyt7CisrICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CisrICAgIFFf VU5VU0VEKGVuZCk7CisrICAgIGlmIChwYXJlbnQgPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdElu ZGV4ICYmIGJlZ2luID09IDApIHsKKysgICAgICAgIC8vIG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5n ZWQKKysgICAgICAgIF9xX2l0ZW1zQ2hhbmdlZCgwLCBkLT5tX2NvdW50LCBRVmVjdG9yPGludD4o KSk7CisrICAgIH0KKyt9CisrCisrdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc1Jl bW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwgaW50IGJlZ2luLCBpbnQgZW5kKQorK3sK KysgICAgUV9EKFFRbWxEZWxlZ2F0ZU1vZGVsKTsKKysgICAgUV9VTlVTRUQoZW5kKTsKKysgICAg aWYgKHBhcmVudCA9PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYgYmVnaW4gPT0gMCkg eworKyAgICAgICAgLy8gbWFyayBhbGwgaXRlbXMgYXMgY2hhbmdlZAorKyAgICAgICAgX3FfaXRl bXNDaGFuZ2VkKDAsIGQtPm1fY291bnQsIFFWZWN0b3I8aW50PigpKTsKKysgICAgfQorK30KKysK Kyt2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9jb2x1bW5zTW92ZWQoY29uc3QgUU1vZGVsSW5k ZXggJnBhcmVudCwgaW50IHN0YXJ0LCBpbnQgZW5kLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBRTW9kZWxJbmRleCAmZGVzdGluYXRpb24sIGludCBjb2x1 bW4pCisreworKyAgICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOworKyAgICBRX1VOVVNFRChlbmQp OworKyAgICBpZiAoKHBhcmVudCA9PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYgc3Rh cnQgPT0gMCkKKysgICAgICAgIHx8IChkZXN0aW5hdGlvbiA9PSBkLT5tX2FkYXB0b3JNb2RlbC5y b290SW5kZXggJiYgY29sdW1uID09IDApKSB7CisrICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBh cyBjaGFuZ2VkCisrICAgICAgICBfcV9pdGVtc0NoYW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3Rv cjxpbnQ+KCkpOworKyAgICB9CisrfQorKworIHZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2Rh dGFDaGFuZ2VkKGNvbnN0IFFNb2RlbEluZGV4ICZiZWdpbiwgY29uc3QgUU1vZGVsSW5kZXggJmVu ZCwgY29uc3QgUVZlY3RvcjxpbnQ+ICZyb2xlcykKKyB7CisgICAgIFFfRChRUW1sRGVsZWdhdGVN b2RlbCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxl Z2F0ZW1vZGVsX3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVt b2RlbF9wLmgKK2luZGV4IDhhYWI0YmFkY2EuLmQxNDBiZmJhYWYgMTAwNjQ0CistLS0gYS9xdGRl Y2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oCisrKysgYi9xdGRl Y2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oCitAQCAtMTUyLDYg KzE1Miw5IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBfcV9pdGVtc01vdmVkKGludCBm cm9tLCBpbnQgdG8sIGludCBjb3VudCk7CisgICAgIHZvaWQgX3FfbW9kZWxSZXNldCgpOworICAg ICB2b2lkIF9xX3Jvd3NJbnNlcnRlZChjb25zdCBRTW9kZWxJbmRleCAmLGludCxpbnQpOworKyAg ICB2b2lkIF9xX2NvbHVtbnNJbnNlcnRlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCk7 CisrICAgIHZvaWQgX3FfY29sdW1uc1JlbW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBp bnQpOworKyAgICB2b2lkIF9xX2NvbHVtbnNNb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQs IGludCwgY29uc3QgUU1vZGVsSW5kZXggJiwgaW50KTsKKyAgICAgdm9pZCBfcV9yb3dzQWJvdXRU b0JlUmVtb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQgYmVnaW4sIGludCBlbmQp OworICAgICB2b2lkIF9xX3Jvd3NSZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsaW50LGludCk7 CisgICAgIHZvaWQgX3Ffcm93c01vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCwgaW50LCBj b25zdCBRTW9kZWxJbmRleCAmLCBpbnQpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKK2luZGV4IDg1 NzE5ZmRjODAuLjc4ZTJhYjMwMmMgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj ay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tpdGVtLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKK0BAIC00Niw2 ICs0Niw3IEBACisgI2luY2x1ZGUgIlF0UXVpY2svcHJpdmF0ZS9xcXVpY2t0ZXh0aW5wdXRfcC5o IgorICNpbmNsdWRlICJRdFF1aWNrL3ByaXZhdGUvcXF1aWNrYWNjZXNzaWJsZWF0dGFjaGVkX3Au aCIKKyAjaW5jbHVkZSAiUXRRdWljay9xcXVpY2t0ZXh0ZG9jdW1lbnQuaCIKKysjaW5jbHVkZSAi UXRRdWljay9xcXVpY2tyZW5kZXJjb250cm9sLmgiCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisg I2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorQEAgLTU3LDcgKzU4LDE5IEBAIFFBY2Nlc3Np YmxlUXVpY2tJdGVtOjpRQWNjZXNzaWJsZVF1aWNrSXRlbShRUXVpY2tJdGVtICppdGVtKQorIAor IFFXaW5kb3cgKlFBY2Nlc3NpYmxlUXVpY2tJdGVtOjp3aW5kb3coKSBjb25zdAorIHsKKy0gICAg cmV0dXJuIGl0ZW0oKS0+d2luZG93KCk7CisrICAgIFFRdWlja1dpbmRvdyAqd2luZG93ID0gaXRl bSgpLT53aW5kb3coKTsKKysKKysgICAgLy8gRm9yIFFRdWlja1dpZGdldCB0aGUgYWJvdmUgd2lu ZG93IHdpbGwgYmUgdGhlIG9mZnNjcmVlbiBRUXVpY2tXaW5kb3csCisrICAgIC8vIHdoaWNoIGlz IG5vdCBhIHBhcnQgb2YgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4gRGV0ZWN0IHRoaXMgY2FzZSBh bmQKKysgICAgLy8gcmV0dXJuIHRoZSB3aW5kb3cgZm9yIHRoZSBRUXVpY2tXaWRnZXQgaW5zdGVh ZC4KKysgICAgaWYgKHdpbmRvdyAmJiAhd2luZG93LT5oYW5kbGUoKSkgeworKyAgICAgICAgaWYg KFFRdWlja1JlbmRlckNvbnRyb2wgKnJlbmRlckNvbnRyb2wgPSBRUXVpY2tXaW5kb3dQcml2YXRl OjpnZXQod2luZG93KS0+cmVuZGVyQ29udHJvbCkgeworKyAgICAgICAgICAgIGlmIChRV2luZG93 ICpyZW5kZXJXaW5kb3cgPSByZW5kZXJDb250cm9sLT5yZW5kZXJXaW5kb3cobnVsbHB0cikpCisr ICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJXaW5kb3c7CisrICAgICAgICB9CisrICAgIH0K KysKKysgICAgcmV0dXJuIHdpbmRvdzsKKyB9CisgCisgaW50IFFBY2Nlc3NpYmxlUXVpY2tJdGVt OjpjaGlsZENvdW50KCkgY29uc3QKK0BAIC0xMTMsMTkgKzEyNiwxNSBAQCBRQWNjZXNzaWJsZUlu dGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja0l0ZW06OmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25z dAorIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrSXRlbTo6cGFyZW50KCkg Y29uc3QKKyB7CisgICAgIFFRdWlja0l0ZW0gKnBhcmVudCA9IGl0ZW0oKS0+cGFyZW50SXRlbSgp OworLSAgICBRUXVpY2tXaW5kb3cgKndpbmRvdyA9IGl0ZW0oKS0+d2luZG93KCk7CistICAgIFFR dWlja0l0ZW0gKmNpID0gd2luZG93ID8gd2luZG93LT5jb250ZW50SXRlbSgpIDogbnVsbHB0cjsK KysgICAgUVF1aWNrV2luZG93ICppdGVtV2luZG93ID0gaXRlbSgpLT53aW5kb3coKTsKKysgICAg UVF1aWNrSXRlbSAqY2kgPSBpdGVtV2luZG93ID8gaXRlbVdpbmRvdy0+Y29udGVudEl0ZW0oKSA6 IG51bGxwdHI7CisgICAgIHdoaWxlIChwYXJlbnQgJiYgIVFRdWlja0l0ZW1Qcml2YXRlOjpnZXQo cGFyZW50KS0+aXNBY2Nlc3NpYmxlICYmIHBhcmVudCAhPSBjaSkKKyAgICAgICAgIHBhcmVudCA9 IHBhcmVudC0+cGFyZW50SXRlbSgpOworIAorICAgICBpZiAocGFyZW50KSB7CisgICAgICAgICBp ZiAocGFyZW50ID09IGNpKSB7CistICAgICAgICAgICAgLy8gSnVtcCBvdXQgdG8gdGhlIHNjZW5l IHdpZGdldCBpZiB0aGUgcGFyZW50IGlzIHRoZSByb290IGl0ZW0uCistICAgICAgICAgICAgLy8g VGhlcmUgYXJlIHR3byByb290IGl0ZW1zLCBRUXVpY2tXaW5kb3c6OnJvb3RJdGVtIGFuZAorLSAg ICAgICAgICAgIC8vIFFRdWlja1ZpZXc6OmRlY2xhcmF0aXZlUm9vdC4gVGhlIGZvcm1lciBpcyB0 aGUgdHJ1ZSByb290IGl0ZW0sCistICAgICAgICAgICAgLy8gYnV0IGlzIG5vdCBhIHBhcnQgb2Yg dGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4gQ2hlY2sgaWYgd2UgaGl0CistICAgICAgICAgICAgLy8g aXQgaGVyZSBhbmQgcmV0dXJuIGFuIGludGVyZmFjZSBmb3IgdGhlIHNjZW5lIGluc3RlYWQuCist ICAgICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uo d2luZG93KTsKKysgICAgICAgICAgICAvLyBKdW1wIG91dCB0byB0aGUgd2luZG93IGlmIHRoZSBw YXJlbnQgaXMgdGhlIHJvb3QgaXRlbQorKyAgICAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6 cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKHdpbmRvdygpKTsKKyAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAgd2hpbGUgKHBhcmVudCAmJiAhcGFyZW50LT5kX2Z1bmMoKS0+aXNBY2Nlc3Np YmxlKQorICAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudEl0ZW0oKTsKK0BA IC0xODgsNyArMTk3LDcgQEAgUUFjY2Vzc2libGU6OlN0YXRlIFFBY2Nlc3NpYmxlUXVpY2tJdGVt OjpzdGF0ZSgpIGNvbnN0CisgICAgIFFSZWN0IHZpZXdSZWN0XyA9IHZpZXdSZWN0KCk7CisgICAg IFFSZWN0IGl0ZW1SZWN0ID0gcmVjdCgpOworIAorLSAgICBpZiAodmlld1JlY3RfLmlzTnVsbCgp IHx8IGl0ZW1SZWN0LmlzTnVsbCgpIHx8ICFpdGVtKCktPndpbmRvdygpIHx8ICFpdGVtKCktPndp bmRvdygpLT5pc1Zpc2libGUoKSB8fCFpdGVtKCktPmlzVmlzaWJsZSgpIHx8IHFGdXp6eUlzTnVs bChpdGVtKCktPm9wYWNpdHkoKSkpCisrICAgIGlmICh2aWV3UmVjdF8uaXNOdWxsKCkgfHwgaXRl bVJlY3QuaXNOdWxsKCkgfHwgIXdpbmRvdygpIHx8ICF3aW5kb3coKS0+aXNWaXNpYmxlKCkgfHwh aXRlbSgpLT5pc1Zpc2libGUoKSB8fCBxRnV6enlJc051bGwoaXRlbSgpLT5vcGFjaXR5KCkpKQor ICAgICAgICAgc3RhdGUuaW52aXNpYmxlID0gdHJ1ZTsKKyAgICAgaWYgKCF2aWV3UmVjdF8uaW50 ZXJzZWN0cyhpdGVtUmVjdCkpCisgICAgICAgICBzdGF0ZS5vZmZzY3JlZW4gPSB0cnVlOworQEAg LTIwMSw2ICsyMTAsMTAgQEAgUUFjY2Vzc2libGU6OlN0YXRlIFFBY2Nlc3NpYmxlUXVpY2tJdGVt OjpzdGF0ZSgpIGNvbnN0CisgICAgIGlmIChyb2xlKCkgPT0gUUFjY2Vzc2libGU6OkVkaXRhYmxl VGV4dCkKKyAgICAgICAgIGlmIChhdXRvIHRpID0gcW9iamVjdF9jYXN0PFFRdWlja1RleHRJbnB1 dCAqPihpdGVtKCkpKQorICAgICAgICAgICAgIHN0YXRlLnBhc3N3b3JkRWRpdCA9IHRpLT5lY2hv TW9kZSgpICE9IFFRdWlja1RleHRJbnB1dDo6Tm9ybWFsOworKyAgICBpZiAoIWl0ZW0oKS0+aXNF bmFibGVkKCkpIHsKKysgICAgICAgIHN0YXRlLmZvY3VzYWJsZSA9IGZhbHNlOworKyAgICAgICAg c3RhdGUuZGlzYWJsZWQgPSB0cnVlOworKyAgICB9CisgICAgIHJldHVybiBzdGF0ZTsKKyB9Cisg CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNz aWJsZXF1aWNrdmlld19wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3Fh Y2Nlc3NpYmxlcXVpY2t2aWV3X3AuaAoraW5kZXggMzlmZmNhZjM5Yy4uOGJhYTAxMzMwYyAxMDA2 NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVx dWlja3ZpZXdfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3Fh Y2Nlc3NpYmxlcXVpY2t2aWV3X3AuaAorQEAgLTU4LDcgKzU4LDcgQEAgUVRfQkVHSU5fTkFNRVNQ QUNFCisgCisgI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorIAorLWNsYXNzIFFBY2Nlc3Np YmxlUXVpY2tXaW5kb3cgOiBwdWJsaWMgUUFjY2Vzc2libGVPYmplY3QKKytjbGFzcyBRX1FVSUNL X0VYUE9SVCBRQWNjZXNzaWJsZVF1aWNrV2luZG93IDogcHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0 CisgeworIHB1YmxpYzoKKyAgICAgUUFjY2Vzc2libGVRdWlja1dpbmRvdyhRUXVpY2tXaW5kb3cg Km9iamVjdCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1 aWNrZHJhZy5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNw cAoraW5kZXggODMyMWZjZmVlZC4uMzgzMDc4YjNiOSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2RyYWcuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcAorQEAgLTQ4MSw3ICs0ODEsOSBAQCB2b2lkIFFR dWlja0RyYWdBdHRhY2hlZDo6c2V0S2V5cyhjb25zdCBRU3RyaW5nTGlzdCAma2V5cykKKyAgICAg XHFtbGF0dGFjaGVkcHJvcGVydHkgc3RyaW5nbGlzdCBRdFF1aWNrOjpEcmFnOjptaW1lRGF0YQor ICAgICBcc2luY2UgNS4yCisgCistICAgIFRoaXMgcHJvcGVydHkgaG9sZHMgYSBtYXAgb2YgbWlt ZURhdGEgdGhhdCBpcyB1c2VkIGR1cmluZyBzdGFydERyYWcuCisrICAgIFRoaXMgcHJvcGVydHkg aG9sZHMgYSBtYXAgZnJvbSBtaW1lIHR5cGUgdG8gZGF0YSB0aGF0IGlzIHVzZWQgZHVyaW5nIHN0 YXJ0RHJhZy4KKysgICAgVGhlIG1pbWUgZGF0YSBuZWVkcyB0byBiZSBhIFxjIHN0cmluZywgb3Ig YW4gXGMgQXJyYXlCdWZmZXIgd2l0aCB0aGUgZGF0YSBlbmNvZGVkCisrICAgIGFjY29yZGluZyB0 byB0aGUgbWltZSB0eXBlLgorICovCisgCisgUVZhcmlhbnRNYXAgUVF1aWNrRHJhZ0F0dGFjaGVk OjptaW1lRGF0YSgpIGNvbnN0CitAQCAtNzY2LDggKzc2OCwxMiBAQCBRdDo6RHJvcEFjdGlvbiBR UXVpY2tEcmFnQXR0YWNoZWRQcml2YXRlOjpzdGFydERyYWcoUXQ6OkRyb3BBY3Rpb25zIHN1cHBv cnRlZEFjdAorICAgICBRRHJhZyAqZHJhZyA9IG5ldyBRRHJhZyhzb3VyY2UgPyBzb3VyY2UgOiBx KTsKKyAgICAgUU1pbWVEYXRhICptaW1lRGF0YSA9IG5ldyBRTWltZURhdGEoKTsKKyAKKy0gICAg Zm9yIChhdXRvIGl0ID0gZXh0ZXJuYWxNaW1lRGF0YS5jYmVnaW4oKSwgZW5kID0gZXh0ZXJuYWxN aW1lRGF0YS5jZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKy0gICAgICAgIG1pbWVEYXRhLT5zZXRE YXRhKGl0LmtleSgpLCBpdC52YWx1ZSgpLnRvU3RyaW5nKCkudG9VdGY4KCkpOworKyAgICBmb3Ig KGF1dG8gaXQgPSBleHRlcm5hbE1pbWVEYXRhLmNiZWdpbigpLCBlbmQgPSBleHRlcm5hbE1pbWVE YXRhLmNlbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisrICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8 UU1ldGFUeXBlOjpUeXBlPihpdC52YWx1ZSgpLnR5cGUoKSkgPT0gUU1ldGFUeXBlOjpRQnl0ZUFy cmF5KQorKyAgICAgICAgICAgIG1pbWVEYXRhLT5zZXREYXRhKGl0LmtleSgpLCBpdC52YWx1ZSgp LnRvQnl0ZUFycmF5KCkpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIG1pbWVEYXRhLT5z ZXREYXRhKGl0LmtleSgpLCBpdC52YWx1ZSgpLnRvU3RyaW5nKCkudG9VdGY4KCkpOworKyAgICB9 CisgCisgICAgIGRyYWctPnNldE1pbWVEYXRhKG1pbWVEYXRhKTsKKyAgICAgaWYgKHBpeG1hcExv YWRlci5pc1JlYWR5KCkpIHsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9p dGVtcy9xcXVpY2tpdGVtLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlj a2l0ZW0uY3BwCitpbmRleCA3NWYxNDU3ODE2Li5kZWMwYWUxOWFlIDEwMDY0NAorLS0tIGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwCitAQCAtNTksNiArNTksNyBAQAor ICNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xbnVtZXJpY19wLmg+CisgI2luY2x1ZGUgPFF0R3Vp L3FwYS9xcGxhdGZvcm10aGVtZS5oPgorICNpbmNsdWRlIDxRdENvcmUvcWxvZ2dpbmdjYXRlZ29y eS5oPgorKyNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xZHVwbGljYXRldHJhY2tlcl9wLmg+Cisg CisgI2luY2x1ZGUgPHByaXZhdGUvcXFtbGdsb2JhbF9wLmg+CisgI2luY2x1ZGUgPHByaXZhdGUv cXFtbGVuZ2luZV9wLmg+CitAQCAtMjMyNiw2ICsyMzI3LDcgQEAgUVF1aWNrSXRlbTo6UVF1aWNr SXRlbShRUXVpY2tJdGVtUHJpdmF0ZSAmZGQsIFFRdWlja0l0ZW0gKnBhcmVudCkKKyBRUXVpY2tJ dGVtOjp+UVF1aWNrSXRlbSgpCisgeworICAgICBRX0QoUVF1aWNrSXRlbSk7CisrICAgIGQtPmlu RGVzdHJ1Y3RvciA9IHRydWU7CisgCisgICAgIGlmIChkLT53aW5kb3dSZWZDb3VudCA+IDEpCisg ICAgICAgICBkLT53aW5kb3dSZWZDb3VudCA9IDE7IC8vIE1ha2Ugc3VyZSB3aW5kb3cgaXMgc2V0 IHRvIG51bGwgaW4gbmV4dCBjYWxsIHRvIGRlcmVmV2luZG93KCkuCitAQCAtMjUyNiw2ICsyNTI4 LDcgQEAgUVF1aWNrSXRlbSogUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9j dXNDaGFpbihRUXVpY2tJdGVtICppdGVtLCBib28KKyAgICAgUVF1aWNrSXRlbSAqY3VycmVudCA9 IGl0ZW07CisgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5l eHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogc3RhcnRJdGVtOiIgPDwgc3RhcnRJdGVtOworICAg ICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1J blRhYkZvY3VzQ2hhaW46IGZpcnN0RnJvbUl0ZW06IiA8PCBmaXJzdEZyb21JdGVtOworKyAgICBR RHVwbGljYXRlVHJhY2tlcjxRUXVpY2tJdGVtICo+IGN5Y2xlRGV0ZWN0b3I7CisgICAgIGRvIHsK KyAgICAgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQ cmV2SXRlbUluVGFiRm9jdXNDaGFpbjogY3VycmVudDoiIDw8IGN1cnJlbnQ7CisgICAgICAgICBx Q0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRh YkZvY3VzQ2hhaW46IGZyb206IiA8PCBmcm9tOworQEAgLTI1OTIsNyArMjU5NSwxMCBAQCBRUXVp Y2tJdGVtKiBRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluKFFR dWlja0l0ZW0gKml0ZW0sIGJvbworICAgICAgICAgLy8gdHJhdmVyc2VkIGFsbCBvZiB0aGUgY2hh aW4gKGJ5IGNvbXBhcmUgdGhlIFtjdXJyZW50XSBpdGVtIHdpdGggW3N0YXJ0SXRlbV0pCisgICAg ICAgICAvLyBTaW5jZSB0aGUgW3N0YXJ0SXRlbV0gbWlnaHQgYmUgcHJvbW90ZWQgdG8gaXRzIHBh cmVudCBpZiBpdCBpcyBpbnZpc2libGUsCisgICAgICAgICAvLyB3ZSBzdGlsbCBoYXZlIHRvIGNo ZWNrIFtjdXJyZW50XSBpdGVtIHdpdGggb3JpZ2luYWwgc3RhcnQgaXRlbQorLSAgICAgICAgaWYg KChjdXJyZW50ID09IHN0YXJ0SXRlbSB8fCBjdXJyZW50ID09IG9yaWdpbmFsU3RhcnRJdGVtKSAm JiBmcm9tID09IGZpcnN0RnJvbUl0ZW0pIHsKKysgICAgICAgIC8vIFdlIG1pZ2h0IGFsc28gcnVu IGludG8gYSBjeWNsZSBiZWZvcmUgd2UgcmVhY2ggZmlyc3RGcm9tSXRlbSBhZ2FpbgorKyAgICAg ICAgLy8gYnV0IG5vdGUgdGhhdCB3ZSBoYXZlIHRvIGlnbm9yZSBjdXJyZW50IGlmIHdlIGFyZSBt ZWFudCB0byBza2lwIGl0CisrICAgICAgICBpZiAoKChjdXJyZW50ID09IHN0YXJ0SXRlbSB8fCBj dXJyZW50ID09IG9yaWdpbmFsU3RhcnRJdGVtKSAmJiBmcm9tID09IGZpcnN0RnJvbUl0ZW0pIHx8 CisrICAgICAgICAgICAgICAgICghc2tpcCAmJiBjeWNsZURldGVjdG9yLmhhc1NlZW4oY3VycmVu dCkpKSB7CisgICAgICAgICAgICAgLy8gd3JhcHBlZCBhcm91bmQsIGF2b2lkIGVuZGxlc3MgbG9v cHMKKyAgICAgICAgICAgICBpZiAoaXRlbSA9PSBjb250ZW50SXRlbSkgeworICAgICAgICAgICAg ICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0 ZW1JblRhYkZvY3VzQ2hhaW46IGxvb3BlZCwgcmV0dXJuIGNvbnRlbnRJdGVtIjsKK0BAIC0yNjg5 LDkgKzI2OTUsOCBAQCB2b2lkIFFRdWlja0l0ZW06OnNldFBhcmVudEl0ZW0oUVF1aWNrSXRlbSAq cGFyZW50SXRlbSkKKyAKKyAgICAgICAgIGNvbnN0IGJvb2wgd2FzVmlzaWJsZSA9IGlzVmlzaWJs ZSgpOworICAgICAgICAgb3AtPnJlbW92ZUNoaWxkKHRoaXMpOworLSAgICAgICAgaWYgKHdhc1Zp c2libGUpIHsKKysgICAgICAgIGlmICh3YXNWaXNpYmxlICYmICFvcC0+aW5EZXN0cnVjdG9yKQor ICAgICAgICAgICAgIGVtaXQgb2xkUGFyZW50SXRlbS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgp OworLSAgICAgICAgfQorICAgICB9IGVsc2UgaWYgKGQtPndpbmRvdykgeworICAgICAgICAgUVF1 aWNrV2luZG93UHJpdmF0ZTo6Z2V0KGQtPndpbmRvdyktPnBhcmVudGxlc3NJdGVtcy5yZW1vdmUo dGhpcyk7CisgICAgIH0KK0BAIC0yNzY4LDggKzI3NzMsOSBAQCB2b2lkIFFRdWlja0l0ZW06OnNl dFBhcmVudEl0ZW0oUVF1aWNrSXRlbSAqcGFyZW50SXRlbSkKKyAKKyAgICAgZC0+aXRlbUNoYW5n ZShJdGVtUGFyZW50SGFzQ2hhbmdlZCwgZC0+cGFyZW50SXRlbSk7CisgCistICAgIGVtaXQgcGFy ZW50Q2hhbmdlZChkLT5wYXJlbnRJdGVtKTsKKy0gICAgaWYgKGlzVmlzaWJsZSgpICYmIGQtPnBh cmVudEl0ZW0pCisrICAgIGlmICghZC0+aW5EZXN0cnVjdG9yKQorKyAgICAgICAgZW1pdCBwYXJl bnRDaGFuZ2VkKGQtPnBhcmVudEl0ZW0pOworKyAgICBpZiAoaXNWaXNpYmxlKCkgJiYgZC0+cGFy ZW50SXRlbSAmJiAhUVF1aWNrSXRlbVByaXZhdGU6OmdldChkLT5wYXJlbnRJdGVtKS0+aW5EZXN0 cnVjdG9yKQorICAgICAgICAgZW1pdCBkLT5wYXJlbnRJdGVtLT52aXNpYmxlQ2hpbGRyZW5DaGFu Z2VkKCk7CisgfQorIAorQEAgLTI5NjUsNyArMjk3MSw4IEBAIHZvaWQgUVF1aWNrSXRlbVByaXZh dGU6OnJlbW92ZUNoaWxkKFFRdWlja0l0ZW0gKmNoaWxkKQorIAorICAgICBpdGVtQ2hhbmdlKFFR dWlja0l0ZW06Okl0ZW1DaGlsZFJlbW92ZWRDaGFuZ2UsIGNoaWxkKTsKKyAKKy0gICAgZW1pdCBx LT5jaGlsZHJlbkNoYW5nZWQoKTsKKysgICAgaWYgKCFpbkRlc3RydWN0b3IpCisrICAgICAgICBl bWl0IHEtPmNoaWxkcmVuQ2hhbmdlZCgpOworIH0KKyAKKyB2b2lkIFFRdWlja0l0ZW1Qcml2YXRl OjpyZWZXaW5kb3coUVF1aWNrV2luZG93ICpjKQorQEAgLTMxOTQsNiArMzIwMSw3IEBAIFFRdWlj a0l0ZW1Qcml2YXRlOjpRUXVpY2tJdGVtUHJpdmF0ZSgpCisgICAgICwgdG91Y2hFbmFibGVkKGZh bHNlKQorICNlbmRpZgorICAgICAsIGhhc0N1cnNvckhhbmRsZXIoZmFsc2UpCisrICAgICwgaW5E ZXN0cnVjdG9yKGZhbHNlKQorICAgICAsIGRpcnR5QXR0cmlidXRlcygwKQorICAgICAsIG5leHRE aXJ0eUl0ZW0obnVsbHB0cikKKyAgICAgLCBwcmV2RGlydHlJdGVtKG51bGxwdHIpCitAQCAtNTEy MCw2ICs1MTI4LDEzIEBAIHZvaWQgUVF1aWNrSXRlbTo6Y29tcG9uZW50Q29tcGxldGUoKQorICAg ICAgICAgZC0+YWRkVG9EaXJ0eUxpc3QoKTsKKyAgICAgICAgIFFRdWlja1dpbmRvd1ByaXZhdGU6 OmdldChkLT53aW5kb3cpLT5kaXJ0eUl0ZW0odGhpcyk7CisgICAgIH0KKysKKysjaWYgUVRfQ09O RklHKGFjY2Vzc2liaWxpdHkpCisrICAgIGlmIChkLT5pc0FjY2Vzc2libGUgJiYgZC0+ZWZmZWN0 aXZlVmlzaWJsZSkgeworKyAgICAgICAgUUFjY2Vzc2libGVFdmVudCBldih0aGlzLCBRQWNjZXNz aWJsZTo6T2JqZWN0U2hvdyk7CisrICAgICAgICBRQWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJp bGl0eSgmZXYpOworKyAgICB9CisrI2VuZGlmCisgfQorIAorIFFRdWlja1N0YXRlR3JvdXAgKlFR dWlja0l0ZW1Qcml2YXRlOjpfc3RhdGVzKCkKK0BAIC02MTA2LDkgKzYxMjEsMTEgQEAgYm9vbCBR UXVpY2tJdGVtUHJpdmF0ZTo6c2V0RWZmZWN0aXZlVmlzaWJsZVJlY3VyKGJvb2wgbmV3RWZmZWN0 aXZlVmlzaWJsZSkKKyAgICAgICAgIFFBY2Nlc3NpYmxlOjp1cGRhdGVBY2Nlc3NpYmlsaXR5KCZl dik7CisgICAgIH0KKyAjZW5kaWYKKy0gICAgZW1pdCBxLT52aXNpYmxlQ2hhbmdlZCgpOworLSAg ICBpZiAoY2hpbGRWaXNpYmlsaXR5Q2hhbmdlZCkKKy0gICAgICAgIGVtaXQgcS0+dmlzaWJsZUNo aWxkcmVuQ2hhbmdlZCgpOworKyAgICBpZiAoIWluRGVzdHJ1Y3RvcikgeworKyAgICAgICAgZW1p dCBxLT52aXNpYmxlQ2hhbmdlZCgpOworKyAgICAgICAgaWYgKGNoaWxkVmlzaWJpbGl0eUNoYW5n ZWQpCisrICAgICAgICAgICAgZW1pdCBxLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisrICAg IH0KKyAKKyAgICAgcmV0dXJuIHRydWU7ICAgIC8vIGVmZmVjdGl2ZSB2aXNpYmlsaXR5IERJRCBj aGFuZ2UKKyB9CitAQCAtNjE1Nyw2ICs2MTc0LDE1IEBAIHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6 OnNldEVmZmVjdGl2ZUVuYWJsZVJlY3VyKFFRdWlja0l0ZW0gKnNjb3BlLCBib29sIG5ld0VmZmVj CisgICAgIH0KKyAKKyAgICAgaXRlbUNoYW5nZShRUXVpY2tJdGVtOjpJdGVtRW5hYmxlZEhhc0No YW5nZWQsIGVmZmVjdGl2ZUVuYWJsZSk7CisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQor KyAgICBpZiAoaXNBY2Nlc3NpYmxlKSB7CisrICAgICAgICBRQWNjZXNzaWJsZTo6U3RhdGUgY2hh bmdlZFN0YXRlOworKyAgICAgICAgY2hhbmdlZFN0YXRlLmRpc2FibGVkID0gdHJ1ZTsKKysgICAg ICAgIGNoYW5nZWRTdGF0ZS5mb2N1c2FibGUgPSB0cnVlOworKyAgICAgICAgUUFjY2Vzc2libGVT dGF0ZUNoYW5nZUV2ZW50IGV2KHEsIGNoYW5nZWRTdGF0ZSk7CisrICAgICAgICBRQWNjZXNzaWJs ZTo6dXBkYXRlQWNjZXNzaWJpbGl0eSgmZXYpOworKyAgICB9CisrI2VuZGlmCisgICAgIGVtaXQg cS0+ZW5hYmxlZENoYW5nZWQoKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9p dGVtcy9xcXVpY2tpdGVtX3AuaAoraW5kZXggODQxZDkxYmI0MC4uYWRlOGZiNjFmMiAxMDA2NDQK Ky0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5oCisrKysg Yi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaAorQEAgLTQ3Miw2 ICs0NzIsNyBAQCBwdWJsaWM6CisgICAgIGJvb2wgcmVwbGF5aW5nUHJlc3NFdmVudDoxOworICAg ICBib29sIHRvdWNoRW5hYmxlZDoxOworICAgICBib29sIGhhc0N1cnNvckhhbmRsZXI6MTsKKysg ICAgcXVpbnQzMiBpbkRlc3RydWN0b3I6MTsgLy8gaGFzIGVudGVyZWQgflFRdWlja0l0ZW0KKyAK KyAgICAgZW51bSBEaXJ0eVR5cGUgeworICAgICAgICAgVHJhbnNmb3JtT3JpZ2luICAgICAgICAg PSAweDAwMDAwMDAxLAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1z L3FxdWlja2l0ZW12aWV3LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlj a2l0ZW12aWV3LmNwcAoraW5kZXggMDEwYTAxNTJlMS4uZjhhZDE2OGExNyAxMDA2NDQKKy0tLSBh L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcAorKysrIGIv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwCitAQCAtMTc4 NSw3ICsxNzg1LDcgQEAgdm9pZCBRUXVpY2tJdGVtVmlld1ByaXZhdGU6OnJlZmlsbChxcmVhbCBm cm9tLCBxcmVhbCB0bykKKyAKKyAgICAgZG8geworICAgICAgICAgYnVmZmVyUGF1c2Uuc3RvcCgp OworLSAgICAgICAgaWYgKGN1cnJlbnRDaGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkgfHwgYnVm ZmVyZWRDaGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkpIHsKKysgICAgICAgIGlmIChjdXJyZW50 Q2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpIHx8IGJ1ZmZlcmVkQ2hhbmdlcy5oYXNQZW5kaW5n Q2hhbmdlcygpIHx8IGN1cnJlbnRDaGFuZ2VzLmFjdGl2ZSkgeworICAgICAgICAgICAgIGN1cnJl bnRDaGFuZ2VzLnJlc2V0KCk7CisgICAgICAgICAgICAgYnVmZmVyZWRDaGFuZ2VzLnJlc2V0KCk7 CisgICAgICAgICAgICAgcmVsZWFzZVZpc2libGVJdGVtcyhyZXVzYWJsZUZsYWcpOworZGlmZiAt LWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3Au aCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaAor aW5kZXggZmJhMzgzZTI2OC4uMGQ2MzYxODYyMiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaAorKysrIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrbW91c2VhcmVhX3BfcC5oCitAQCAtNjEsNyArNjEsNiBA QCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBRUXVpY2tNb3VzZUV2ZW50OworIGNsYXNz IFFRdWlja01vdXNlQXJlYTsKKy1jbGFzcyBRUXVpY2tQb2ludGVyTWFzazsKKyBjbGFzcyBRUXVp Y2tNb3VzZUFyZWFQcml2YXRlIDogcHVibGljIFFRdWlja0l0ZW1Qcml2YXRlCisgeworICAgICBR X0RFQ0xBUkVfUFVCTElDKFFRdWlja01vdXNlQXJlYSkKK0BAIC0xMDAsNyArOTksNiBAQCBwdWJs aWM6CisgI2lmIFFUX0NPTkZJRyhxdWlja19kcmFnYW5kZHJvcCkKKyAgICAgUVF1aWNrRHJhZyAq ZHJhZzsKKyAjZW5kaWYKKy0gICAgUVBvaW50ZXI8UVF1aWNrUG9pbnRlck1hc2s+IG1hc2s7Cisg ICAgIFFQb2ludEYgc3RhcnRTY2VuZTsKKyAgICAgUVBvaW50RiB0YXJnZXRTdGFydFBvczsKKyAg ICAgUVBvaW50RiBsYXN0UG9zOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L2l0ZW1zL3FxdWlja3RleHQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1 aWNrdGV4dC5jcHAKK2luZGV4IDYyMzAxODY5MzMuLmU4MjNjYTEwOTUgMTAwNjQ0CistLS0gYS9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2t0ZXh0LmNwcAorKysrIGIvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAKK0BAIC0yMTY4LDcgKzIxNjgs NyBAQCB2b2lkIFFRdWlja1RleHQ6OnJlc2V0TWF4aW11bUxpbmVDb3VudCgpCisgICAgIDxpbWcg c3JjPSIiIGFsaWduPSJ0b3AsbWlkZGxlLGJvdHRvbSIgd2lkdGg9IiIgaGVpZ2h0PSIiPiAtIGlu bGluZSBpbWFnZXMKKyAgICAgPG9sIHR5cGU9IiI+LCA8dWwgdHlwZT0iIj4gYW5kIDxsaT4gLSBv cmRlcmVkIGFuZCB1bm9yZGVyZWQgbGlzdHMKKyAgICAgPHByZT48L3ByZT4gLSBwcmVmb3JtYXR0 ZWQKKy0gICAgJmd0OyAmbHQ7ICZhbXA7CisrICAgICZndDsgJmx0OyAmYW1wOyAmcXVvdDsgJm5i c3A7ICZhcG9zOworICAgICBcZW5kY29kZQorIAorICAgICBcYyBUZXh0LlN0eWxlZFRleHQgcGFy c2VyIGlzIHN0cmljdCwgcmVxdWlyaW5nIHRhZ3MgdG8gYmUgY29ycmVjdGx5IG5lc3RlZC4KK2Rp ZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3Rh bmNlZmllbGRnbHlwaGNhY2hlLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3Jh cGgvcXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwCitpbmRleCBlYjRkYjBmODVlLi4y MzI1YTI2NjViIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFw aC9xc2dyaGlkaXN0YW5jZWZpZWxkZ2x5cGhjYWNoZS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwCitA QCAtNDQ2LDcgKzQ0Niw3IEBAIGJvb2wgUVNHUmhpRGlzdGFuY2VGaWVsZEdseXBoQ2FjaGU6Omxv YWRQcmVnZW5lcmF0ZWRDYWNoZShjb25zdCBRUmF3Rm9udCAmZm9udCkKKyAKKyAgICAgICAgIGNv bnN0IGNoYXIgKnRleHR1cmVSZWNvcmQgPSBhbGxvY2F0b3JEYXRhOworICAgICAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCB0ZXh0dXJlQ291bnQ7ICsraSwgdGV4dHVyZVJlY29yZCArPSBRdGRmOjpU ZXh0dXJlUmVjb3JkU2l6ZSkgeworLSAgICAgICAgICAgIGlmICh0ZXh0dXJlUmVjb3JkICsgUXRk Zjo6VGV4dHVyZVJlY29yZFNpemUgPiBxdGRmVGFibGVFbmQpIHsKKysgICAgICAgICAgICBpZiAo cXRkZlRhYmxlRW5kIC0gdGV4dHVyZVJlY29yZCA8IFF0ZGY6OlRleHR1cmVSZWNvcmRTaXplKSB7 CisgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJxdGRmIHRhYmxlIHRvbyBzbWFsbCBpbiBmb250 ICclcycuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcVByaW50YWJsZShmb250LmZhbWls eU5hbWUoKSkpOworICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtNDYyLDcgKzQ2 Miw3IEBAIGJvb2wgUVNHUmhpRGlzdGFuY2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0 ZWRDYWNoZShjb25zdCBRUmF3Rm9udCAmZm9udCkKKyAKKyAgICAgICAgIGNvbnN0IGNoYXIgKmds eXBoUmVjb3JkID0gdGV4dHVyZVJlY29yZDsKKyAgICAgICAgIGZvciAocXVpbnQzMiBpID0gMDsg aSA8IGdseXBoQ291bnQ7ICsraSwgZ2x5cGhSZWNvcmQgKz0gUXRkZjo6R2x5cGhSZWNvcmRTaXpl KSB7CistICAgICAgICAgICAgaWYgKGdseXBoUmVjb3JkICsgUXRkZjo6R2x5cGhSZWNvcmRTaXpl ID4gcXRkZlRhYmxlRW5kKSB7CisrICAgICAgICAgICAgaWYgKHF0ZGZUYWJsZUVuZCAtIGdseXBo UmVjb3JkIDwgUXRkZjo6IEdseXBoUmVjb3JkU2l6ZSkgeworICAgICAgICAgICAgICAgICBxV2Fy bmluZygicXRkZiB0YWJsZSB0b28gc21hbGwgaW4gZm9udCAnJXMnLiIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHFQcmludGFibGUoZm9udC5mYW1pbHlOYW1lKCkpKTsKKyAgICAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTUxMiw4ICs1MTIsOCBAQCBib29sIFFTR1JoaURpc3Rh bmNlRmllbGRHbHlwaENhY2hlOjpsb2FkUHJlZ2VuZXJhdGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQg JmZvbnQpCisgCisgICAgICAgICAgICAgaW50IHdpZHRoID0gdGV4SW5mby0+YWxsb2NhdGVkQXJl YS53aWR0aCgpOworICAgICAgICAgICAgIGludCBoZWlnaHQgPSB0ZXhJbmZvLT5hbGxvY2F0ZWRB cmVhLmhlaWdodCgpOworLSAgICAgICAgICAgIHFpbnQ2NCBzaXplID0gd2lkdGggKiBoZWlnaHQ7 CistICAgICAgICAgICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPih0ZXh0dXJl RGF0YSArIHNpemUpID4gcXRkZlRhYmxlRW5kKSB7CisrICAgICAgICAgICAgcWludDY0IHNpemUg PSBxaW50NjQod2lkdGgpICogaGVpZ2h0OworKyAgICAgICAgICAgIGlmIChxdGRmVGFibGVFbmQg LSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4odGV4dHVyZURhdGEpIDwgc2l6ZSkgewor ICAgICAgICAgICAgICAgICBxV2FybmluZygicXRkZiB0YWJsZSB0b28gc21hbGwgaW4gZm9udCAn JXMnLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFibGUoZm9udC5mYW1pbHlO YW1lKCkpKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNrc3R5bGVkdGV4dC5jcHAgYi9xdGRlY2xh cmF0aXZlL3NyYy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3BwCitpbmRleCBkNTMxZmM5 MjA1Li5hMjVhZjkwNDE0IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRp bC9xcXVpY2tzdHlsZWR0ZXh0LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRp bC9xcXVpY2tzdHlsZWR0ZXh0LmNwcAorQEAgLTU2NCw2ICs1NjQsOCBAQCB2b2lkIFFRdWlja1N0 eWxlZFRleHRQcml2YXRlOjpwYXJzZUVudGl0eShjb25zdCBRQ2hhciAqJmNoLCBjb25zdCBRU3Ry aW5nICZ0ZXh0SQorICAgICAgICAgICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDYwKTsKKyAgICAg ICAgICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxhdGluMVN0cmluZygiYW1wIikpCisgICAgICAg ICAgICAgICAgIHRleHRPdXQgKz0gUUNoYXIoMzgpOworKyAgICAgICAgICAgIGVsc2UgaWYgKGVu dGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJhcG9zIikpCisrICAgICAgICAgICAgICAgIHRleHRPdXQg Kz0gUUNoYXIoMzkpOworICAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3Ry aW5nKCJxdW90IikpCisgICAgICAgICAgICAgICAgIHRleHRPdXQgKz0gUUNoYXIoMzQpOworICAg ICAgICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJuYnNwIikpCitkaWZm IC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3 aWRnZXQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVp Y2t3aWRnZXQuY3BwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uOGEx YzkwMTg4MAorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRn ZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwCitAQCAtMCwwICsxLDExMCBAQAorKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBh bnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgor KyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9v bGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBM aWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBs aWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29t bWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJl IG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5l ZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21w YW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8v d3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24g dXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysq KgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVy bmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4g dGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2Yg dGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysq KiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMg cmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVz YWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBv ciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZl cnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysq KiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNF TlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcg b2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlv biB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3 aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRt bCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysq KgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisr I2luY2x1ZGUgInFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oIgorKworKyNpbmNsdWRlICJxcXVp Y2t3aWRnZXRfcC5oIgorKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUco YWNjZXNzaWJpbGl0eSkKKysKKytRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpRQWNjZXNzaWJsZVF1 aWNrV2lkZ2V0KFFRdWlja1dpZGdldCogd2lkZ2V0KQorKzogUUFjY2Vzc2libGVXaWRnZXQod2lk Z2V0KQorKywgbV9hY2Nlc3NpYmxlV2luZG93KFFRdWlja1dpZGdldFByaXZhdGU6OmdldCh3aWRn ZXQpLT5vZmZzY3JlZW5XaW5kb3cpCisreworKyAgICAvLyBOT1RFOiBtX2FjY2Vzc2libGVXaW5k b3cgaXMgYSBRQWNjZXNzaWJsZVF1aWNrV2luZG93LCBhbmQgbm90IGEKKysgICAgLy8gUUFjY2Vz c2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyAoZGVmaW5lZCBiZWxvdykuIFRoaXMgbWVh bnMKKysgICAgLy8gaXQgd2lsbCByZXR1cm4gdGhlIFF1aWNrIGl0ZW0gY2hpbGQgaW50ZXJmYWNl cywgd2hpY2ggaXMgd2hhdCdzIG5lZWRlZCBoZXJlCisrICAgIC8vICh1bmxpa2UgUUFjY2Vzc2li bGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdywgd2hpY2ggd2lsbCByZXBvcnQgMCBjaGlsZHJl bikuCisrfQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0 OjpjaGlsZChpbnQgaW5kZXgpIGNvbnN0CisreworKyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2lu ZG93LmNoaWxkKGluZGV4KTsKKyt9CisrCisraW50IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmNo aWxkQ291bnQoKSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5jaGls ZENvdW50KCk7CisrfQorKworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjppbmRleE9mQ2hp bGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdAorK3sKKysgICAgcmV0 dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5pbmRleE9mQ2hpbGQoaWZhY2UpOworK30KKysKKytRQWNj ZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdldDo6Y2hpbGRBdChpbnQgeCwg aW50IHkpIGNvbnN0CisreworKyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmNoaWxkQXQo eCwgeSk7CisrfQorKworK1FBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFB Y2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coUVF1aWNrV2luZG93ICp3aW5kb3cp CisrOlFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cod2luZG93KQorK3sKKysKKyt9CisrCisrUUFjY2Vz c2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmNo aWxkKGludCBpbmRleCkgY29uc3QKKyt7CisrICAgIFFfVU5VU0VEKGluZGV4KTsKKysgICAgcmV0 dXJuIG51bGxwdHI7CisrfQorKworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVu V2luZG93OjpjaGlsZENvdW50KCkgY29uc3QKKyt7CisrICAgIHJldHVybiAwOworK30KKysKKytp bnQgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6aW5kZXhPZkNoaWxkKGNv bnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkgY29uc3QKKyt7CisrICAgIFFfVU5VU0VE KGlmYWNlKTsKKysgICAgcmV0dXJuIC0xOworK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAq UUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6UUFjY2Vzc2libGVRdWlja1dp ZGdldE9mZnNjcmVlbldpbmRvdzo6Y2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0CisreworKyAg ICBRX1VOVVNFRCh4KTsKKysgICAgUV9VTlVTRUQoeSk7CisrICAgIHJldHVybiBudWxscHRyOwor K30KKysKKysjZW5kaWYgLy8gYWNjZXNzaWJpbGl0eQorKworK1FUX0VORF9OQU1FU1BBQ0UKK2Rp ZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlj a3dpZGdldF9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVx dWlja3dpZGdldF9wLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43 YzJhYjkzMGUwCistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dp ZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgKK0BAIC0wLDAgKzEsOTUgQEAKKysvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21w YW55IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioK KysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRv b2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwg TGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQg bGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNv bW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2Fy ZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWlu ZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29t cGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczov L3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9u IHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisr KioKKysqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRl cm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGlu IHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9m IHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisr KiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAz IHJlcXVpcmVtZW50cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu c2VzL2xncGwtMy4wLmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBV c2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAg b3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2 ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisr KiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElD RU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5n IG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRp b24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMg d2lsbAorKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0 bWwgYW5kCisrKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisr KioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKwor KyNpZm5kZWYgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVF9ICisrI2RlZmluZSBRQUNDRVNTSUJMRVFV SUNLV0lER0VUX0gKKysKKysvLworKy8vICBXIEEgUiBOIEkgTiBHCisrLy8gIC0tLS0tLS0tLS0t LS0KKysvLworKy8vIFRoaXMgZmlsZSBpcyBub3QgcGFydCBvZiB0aGUgUXQgQVBJLiAgSXQgZXhp c3RzIHB1cmVseSBhcyBhbgorKy8vIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFRoaXMgaGVhZGVy IGZpbGUgbWF5IGNoYW5nZSBmcm9tIHZlcnNpb24gdG8KKysvLyB2ZXJzaW9uIHdpdGhvdXQgbm90 aWNlLCBvciBldmVuIGJlIHJlbW92ZWQuCisrLy8KKysvLyBXZSBtZWFuIGl0LgorKy8vCisrCisr I2luY2x1ZGUgInFxdWlja3dpZGdldC5oIgorKyNpbmNsdWRlIDxRdFdpZGdldHMvcWFjY2Vzc2li bGV3aWRnZXQuaD4KKysKKysjaW5jbHVkZSA8cHJpdmF0ZS9xYWNjZXNzaWJsZXF1aWNrdmlld19w Lmg+CisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmls aXR5KQorKworKy8vIFRoZXNlIGNsYXNzZXMgaW1wbGVtZW50IHRoZSBRUXVpY2tXaWdldCBhY2Nl c3NpYmlsaXR5IHN3aXRjaGFyb28sCisrLy8gd2hlcmUgdGhlIGNoaWxkIGl0ZW1zIG9mIHRoZSBR UXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3cgYXJlIHJlcG9ydGVkCisrLy8gYXMgY2hpbGQgYWNj ZXNzaWJsZSBpbnRlcmZhY2VzIG9mIHRoZSBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0LgorK2NsYXNz IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6IHB1YmxpYyBRQWNjZXNzaWJsZVdpZGdldAorK3sKKytw dWJsaWM6CisrICAgIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQoUVF1aWNrV2lkZ2V0KiB3aWRnZXQp OworKworKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqY2hpbGQoaW50IGluZGV4KSBjb25zdCBv dmVycmlkZTsKKysgICAgaW50IGNoaWxkQ291bnQoKSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50 IGluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0IG92 ZXJyaWRlOworKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqY2hpbGRBdChpbnQgeCwgaW50IHkp IGNvbnN0IG92ZXJyaWRlOworKworK3ByaXZhdGU6CisrICAgIFFBY2Nlc3NpYmxlUXVpY2tXaW5k b3cgbV9hY2Nlc3NpYmxlV2luZG93OworKyAgICBRX0RJU0FCTEVfQ09QWShRQWNjZXNzaWJsZVF1 aWNrV2lkZ2V0KQorK307CisrCisrY2xhc3MgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVl bldpbmRvdzogcHVibGljIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cKKyt7CisrcHVibGljOgorKyAg ICBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvdyAqd2lu ZG93KTsKKysgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkKGludCBpbmRleCkgY29uc3Qg b3ZlcnJpZGU7CisrICAgIGludCBjaGlsZENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGlu dCBpbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdCBv dmVycmlkZTsKKysgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkQXQoaW50IHgsIGludCB5 KSBjb25zdCBvdmVycmlkZTsKKyt9OworKworKyNlbmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisr UVRfRU5EX05BTUVTUEFDRQorKworKyNlbmRpZgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeS5jcHAgYi9xdGRl Y2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3Rvcnku Y3BwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uN2JhODhhMTc2OQor LS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nl c3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5LmNwcAorQEAgLTAsMCArMSw2MCBAQAorKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkg THRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoq IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtp dC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNl bnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNl bnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVy Y2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9y LCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBp bgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55 LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3 LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNl IHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgor KyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0 aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhl IGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhp cyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBl bnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVx dWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv bGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdl CisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAo YXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNp b24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBR dCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNF LkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2Yg dGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0 byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxs CisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBh bmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgor KyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2lu Y2x1ZGUgInFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaCIKKysjaW5jbHVkZSAicWFj Y2Vzc2libGVxdWlja3dpZGdldF9wLmgiCisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisrCisrI2lm IFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpxQWNj ZXNzaWJsZVF1aWNrV2lkZ2V0RmFjdG9yeShjb25zdCBRU3RyaW5nICZjbGFzc25hbWUsIFFPYmpl Y3QgKm9iamVjdCkKKyt7CisrICAgIGlmIChjbGFzc25hbWUgPT0gUUxhdGluMVN0cmluZygiUVF1 aWNrV2lkZ2V0IikpIHsKKysgICAgICAgIHJldHVybiBuZXcgUUFjY2Vzc2libGVRdWlja1dpZGdl dChxb2JqZWN0X2Nhc3Q8UVF1aWNrV2lkZ2V0ICo+KG9iamVjdCkpOworKyAgICB9IGVsc2UgaWYg KGNsYXNzbmFtZSA9PSBRTGF0aW4xU3RyaW5nKCJRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3ci KSkgeworKyAgICAgICAgcmV0dXJuIG5ldyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVu V2luZG93KHFvYmplY3RfY2FzdDxRUXVpY2tXaW5kb3cgKj4ob2JqZWN0KSk7CisrICAgIH0KKysg ICAgcmV0dXJuIDA7CisrfQorKworKyNlbmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisrUVRfRU5E X05BTUVTUEFDRQorKworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0 cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9x dWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uOGM2M2IwOWY4MQorLS0tIC9kZXYvbnVsbAor KysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRn ZXRmYWN0b3J5X3AuaAorQEAgLTAsMCArMSw2NiBAQAorKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisr KioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRh Y3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBRdFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRR VF9CRUdJTl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiog TGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRo aXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFn cmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5 LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRl biBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5n IHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNv bmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZv cm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmls ZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5M R1BMMyBpbmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2Ug cmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiog d2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4K KysqKgorKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRp dmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisr KiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24p IHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0 ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBU aGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZv dW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VO U0UuR1BMMworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVh c2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczov L3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElD RU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgPFF0R3VpL3Fh Y2Nlc3NpYmxlLmg+CisrCisrI2lmbmRlZiBRQUNDRVNTSUJMRVFVSUNLV0lER0VURkFDVE9SWV9I CisrI2RlZmluZSBRQUNDRVNTSUJMRVFVSUNLV0lER0VURkFDVE9SWV9ICisrCisrLy8KKysvLyAg VyBBIFIgTiBJIE4gRworKy8vICAtLS0tLS0tLS0tLS0tCisrLy8KKysvLyBUaGlzIGZpbGUgaXMg bm90IHBhcnQgb2YgdGhlIFF0IEFQSS4gIEl0IGV4aXN0cyBwdXJlbHkgYXMgYW4KKysvLyBpbXBs ZW1lbnRhdGlvbiBkZXRhaWwuICBUaGlzIGhlYWRlciBmaWxlIG1heSBjaGFuZ2UgZnJvbSB2ZXJz aW9uIHRvCisrLy8gdmVyc2lvbiB3aXRob3V0IG5vdGljZSwgb3IgZXZlbiBiZSByZW1vdmVkLgor Ky8vCisrLy8gV2UgbWVhbiBpdC4KKysvLworKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNp ZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqcUFj Y2Vzc2libGVRdWlja1dpZGdldEZhY3RvcnkoY29uc3QgUVN0cmluZyAmY2xhc3NuYW1lLCBRT2Jq ZWN0ICpvYmplY3QpOworKworKyNlbmRpZgorKworK1FUX0VORF9OQU1FU1BBQ0UKKysKKysjZW5k aWYKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lk Z2V0LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3Bw CitpbmRleCAzOTc4MGY4ZGUzLi45Yzk3YjQzNTE4IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwCitAQCAtMzksNiArMzksNyBAQAorIAor ICNpbmNsdWRlICJxcXVpY2t3aWRnZXQuaCIKKyAjaW5jbHVkZSAicXF1aWNrd2lkZ2V0X3AuaCIK KysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oIgorIAorICNpbmNs dWRlICJwcml2YXRlL3FxdWlja3dpbmRvd19wLmgiCisgI2luY2x1ZGUgInByaXZhdGUvcXF1aWNr aXRlbV9wLmgiCitAQCAtNzUsOSArNzYsMTYgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAK KytRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRv dyhRUXVpY2tXaW5kb3dQcml2YXRlICZkZCwgUVF1aWNrUmVuZGVyQ29udHJvbCAqY29udHJvbCkK Kys6UVF1aWNrV2luZG93KGRkLCBjb250cm9sKQorK3sKKysgICAgc2V0VGl0bGUoUVN0cmluZzo6 ZnJvbUxhdGluMSgiT2Zmc2NyZWVuIikpOworKyAgICBzZXRPYmplY3ROYW1lKFFTdHJpbmc6OmZy b21MYXRpbjEoIlFRdWlja09mZlNjcmVlbldpbmRvdyIpKTsKKyt9CisrCisgLy8gb3ZlcnJpZGUg c2V0VmlzYmxlIHRvIHByZXZlbnQgYWNjaWRlbnRhbCBvZmZzY3JlZW4gd2luZG93IGJlaW5nIGNy ZWF0ZWQKKyAvLyBieSBiYXNlIGNsYXNzLgorLWNsYXNzIFFRdWlja09mZmNyZWVuV2luZG93UHJp dmF0ZTogcHVibGljIFFRdWlja1dpbmRvd1ByaXZhdGUgeworK2NsYXNzIFFRdWlja1dpZGdldE9m ZnNjcmVlbldpbmRvd1ByaXZhdGU6IHB1YmxpYyBRUXVpY2tXaW5kb3dQcml2YXRlIHsKKyBwdWJs aWM6CisgICAgIHZvaWQgc2V0VmlzaWJsZShib29sIHZpc2libGUpIG92ZXJyaWRlIHsKKyAgICAg ICAgIFFfUShRV2luZG93KTsKK0BAIC0xMDUsOSArMTEzLDggQEAgdm9pZCBRUXVpY2tXaWRnZXRQ cml2YXRlOjppbml0KFFRbWxFbmdpbmUqIGUpCisgICAgIFFfUShRUXVpY2tXaWRnZXQpOworIAor ICAgICByZW5kZXJDb250cm9sID0gbmV3IFFRdWlja1dpZGdldFJlbmRlckNvbnRyb2wocSk7Cist ICAgIG9mZnNjcmVlbldpbmRvdyA9IG5ldyBRUXVpY2tXaW5kb3coKm5ldyBRUXVpY2tPZmZjcmVl bldpbmRvd1ByaXZhdGUoKSxyZW5kZXJDb250cm9sKTsKKy0gICAgb2Zmc2NyZWVuV2luZG93LT5z ZXRUaXRsZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJPZmZzY3JlZW4iKSk7CistICAgIG9mZnNjcmVl bldpbmRvdy0+c2V0T2JqZWN0TmFtZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJRUXVpY2tPZmZTY3Jl ZW5XaW5kb3ciKSk7CisrICAgIG9mZnNjcmVlbldpbmRvdyA9IG5ldyBRUXVpY2tXaWRnZXRPZmZz Y3JlZW5XaW5kb3coKm5ldyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3dQcml2YXRlKCksIHJl bmRlckNvbnRyb2wpOworKyAgICBvZmZzY3JlZW5XaW5kb3ctPnNldFNjcmVlbihxLT5zY3JlZW4o KSk7CisgICAgIC8vIERvIG5vdCBjYWxsIGNyZWF0ZSgpIG9uIG9mZnNjcmVlbldpbmRvdy4KKyAK KyAgICAgLy8gQ2hlY2sgaWYgdGhlIFNvZnR3YXJlIEFkYXB0YXRpb24gaXMgYmVpbmcgdXNlZAor QEAgLTEzOCw2ICsxNDUsMTAgQEAgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRlOjppbml0KFFRbWxF bmdpbmUqIGUpCisgICAgIFFXaWRnZXQ6OmNvbm5lY3Qob2Zmc2NyZWVuV2luZG93LCAmUVF1aWNr V2luZG93Ojpmb2N1c09iamVjdENoYW5nZWQsIHEsICZRUXVpY2tXaWRnZXQ6OnByb3BhZ2F0ZUZv Y3VzT2JqZWN0Q2hhbmdlZCk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocmVuZGVyQ29udHJvbCwg U0lHTkFMKHJlbmRlclJlcXVlc3RlZCgpKSwgcSwgU0xPVCh0cmlnZ2VyVXBkYXRlKCkpKTsKKyAg ICAgUU9iamVjdDo6Y29ubmVjdChyZW5kZXJDb250cm9sLCBTSUdOQUwoc2NlbmVDaGFuZ2VkKCkp LCBxLCBTTE9UKHRyaWdnZXJVcGRhdGUoKSkpOworKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJp bGl0eSkKKysgICAgUUFjY2Vzc2libGU6Omluc3RhbGxGYWN0b3J5KCZxQWNjZXNzaWJsZVF1aWNr V2lkZ2V0RmFjdG9yeSk7CisrI2VuZGlmCisgfQorIAorIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0 ZTo6ZW5zdXJlRW5naW5lKCkgY29uc3QKK0BAIC05MDEsOSArOTEyLDcgQEAgdm9pZCBRUXVpY2tX aWRnZXRQcml2YXRlOjpjcmVhdGVDb250ZXh0KCkKKyAKKyAgICAgICAgIGNvbnRleHQgPSBuZXcg UU9wZW5HTENvbnRleHQ7CisgICAgICAgICBjb250ZXh0LT5zZXRGb3JtYXQob2Zmc2NyZWVuV2lu ZG93LT5yZXF1ZXN0ZWRGb3JtYXQoKSk7CistICAgICAgICBjb25zdCBRV2luZG93ICp3aW4gPSBx LT53aW5kb3coKS0+d2luZG93SGFuZGxlKCk7CistICAgICAgICBpZiAod2luICYmIHdpbi0+c2Ny ZWVuKCkpCistICAgICAgICAgICAgY29udGV4dC0+c2V0U2NyZWVuKHdpbi0+c2NyZWVuKCkpOwor KyAgICAgICAgY29udGV4dC0+c2V0U2NyZWVuKHEtPnNjcmVlbigpKTsKKyAgICAgICAgIFFPcGVu R0xDb250ZXh0ICpzaGFyZUNvbnRleHQgPSBxdF9nbF9nbG9iYWxfc2hhcmVfY29udGV4dCgpOwor ICAgICAgICAgaWYgKCFzaGFyZUNvbnRleHQpCisgICAgICAgICAgICAgc2hhcmVDb250ZXh0ID0g UVdpZGdldFByaXZhdGU6OmdldChxLT53aW5kb3coKSktPnNoYXJlQ29udGV4dCgpOworQEAgLTE1 MjAsMTkgKzE1MjksMTYgQEAgYm9vbCBRUXVpY2tXaWRnZXQ6OmV2ZW50KFFFdmVudCAqZSkKKyAg ICAgICAgIGQtPmhhbmRsZVdpbmRvd0NoYW5nZSgpOworICAgICAgICAgYnJlYWs7CisgCistICAg IGNhc2UgUUV2ZW50OjpTY3JlZW5DaGFuZ2VJbnRlcm5hbDoKKy0gICAgICAgIGlmIChRV2luZG93 ICp3aW5kb3cgPSB0aGlzLT53aW5kb3coKS0+d2luZG93SGFuZGxlKCkpIHsKKy0gICAgICAgICAg ICBRU2NyZWVuICpuZXdTY3JlZW4gPSB3aW5kb3ctPnNjcmVlbigpOworLQorLSAgICAgICAgICAg IGlmIChkLT5vZmZzY3JlZW5XaW5kb3cpCistICAgICAgICAgICAgICAgIGQtPm9mZnNjcmVlbldp bmRvdy0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CistICAgICAgICAgICAgaWYgKGQtPm9mZnNjcmVl blN1cmZhY2UpCistICAgICAgICAgICAgICAgIGQtPm9mZnNjcmVlblN1cmZhY2UtPnNldFNjcmVl bihuZXdTY3JlZW4pOworKyAgICBjYXNlIFFFdmVudDo6U2NyZWVuQ2hhbmdlSW50ZXJuYWw6IHsK KysgICAgICAgIFFTY3JlZW4gKm5ld1NjcmVlbiA9IHNjcmVlbigpOworKyAgICAgICAgaWYgKGQt Pm9mZnNjcmVlbldpbmRvdykKKysgICAgICAgICAgICBkLT5vZmZzY3JlZW5XaW5kb3ctPnNldFNj cmVlbihuZXdTY3JlZW4pOworKyAgICAgICAgaWYgKGQtPm9mZnNjcmVlblN1cmZhY2UpCisrICAg ICAgICAgICAgZC0+b2Zmc2NyZWVuU3VyZmFjZS0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisgI2lm IFFUX0NPTkZJRyhvcGVuZ2wpCistICAgICAgICAgICAgaWYgKGQtPmNvbnRleHQpCistICAgICAg ICAgICAgICAgIGQtPmNvbnRleHQtPnNldFNjcmVlbihuZXdTY3JlZW4pOworKyAgICAgICAgaWYg KGQtPmNvbnRleHQpCisrICAgICAgICAgICAgZC0+Y29udGV4dC0+c2V0U2NyZWVuKG5ld1NjcmVl bik7CisgI2VuZGlmCistICAgICAgICB9CisgCisgICAgICAgICBpZiAoZC0+dXNlU29mdHdhcmVS ZW5kZXJlcgorICNpZiBRVF9DT05GSUcob3BlbmdsKQorQEAgLTE1NDUsNyArMTU1MSw3IEBAIGJv b2wgUVF1aWNrV2lkZ2V0OjpldmVudChRRXZlbnQgKmUpCisgICAgICAgICAgICAgZC0+cmVuZGVy KHRydWUpOworICAgICAgICAgfQorICAgICAgICAgYnJlYWs7CistCisrICAgIH0KKyAgICAgY2Fz ZSBRRXZlbnQ6OlNob3c6CisgICAgIGNhc2UgUUV2ZW50OjpNb3ZlOgorICAgICAgICAgZC0+dXBk YXRlUG9zaXRpb24oKTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdl dHMvcXF1aWNrd2lkZ2V0X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVp Y2t3aWRnZXRfcC5oCitpbmRleCA4ODFmN2Y5MjIwLi4xYTk0NmJjYzcxIDEwMDY0NAorLS0tIGEv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldF9wLmgKKysrKyBiL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oCitAQCAtMTQ4LDYg KzE0OCwxNCBAQCBwdWJsaWM6CisgICAgIGJvb2wgZm9yY2VGdWxsVXBkYXRlOworIH07CisgCisr Y2xhc3MgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OiBwdWJsaWMgUVF1aWNrV2luZG93Cisr eworKyAgICBRX09CSkVDVAorKworK3B1YmxpYzoKKysgICAgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVu V2luZG93KFFRdWlja1dpbmRvd1ByaXZhdGUgJmRkLCBRUXVpY2tSZW5kZXJDb250cm9sICpjb250 cm9sKTsKKyt9OworKworIFFUX0VORF9OQU1FU1BBQ0UKKyAKKyAjZW5kaWYgLy8gUVF1aWNrV2lk Z2V0X1BfSAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlj a3dpZGdldHMucHJvIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0 cy5wcm8KK2luZGV4IDI0MzhlNTc3YWUuLjg1ZDE1NmI4YTMgMTAwNjQ0CistLS0gYS9xdGRlY2xh cmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXVpY2t3aWRnZXRzLnBybworKysrIGIvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8KK0BAIC03LDkgKzcsMTMgQEAg REVGSU5FUyAgICs9IFFUX05PX1VSTF9DQVNUX0ZST01fU1RSSU5HIFFUX05PX0lOVEVHRVJfRVZF TlRfQ09PUkRJTkFURVMgUVRfTk9fRk8KKyBIRUFERVJTICs9IFwKKyAgICAgcXF1aWNrd2lkZ2V0 LmggXAorICAgICBxcXVpY2t3aWRnZXRfcC5oIFwKKy0gICAgcXRxdWlja3dpZGdldHNnbG9iYWwu aAorKyAgICBxdHF1aWNrd2lkZ2V0c2dsb2JhbC5oIFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dp ZGdldF9wLmggXAorKyAgICBxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgKKyAKKyBT T1VSQ0VTICs9IFwKKy0gICAgcXF1aWNrd2lkZ2V0LmNwcAorKyAgICBxcXVpY2t3aWRnZXQuY3Bw IFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldC5jcHAgXAorKyAgICBxYWNjZXNzaWJsZXF1 aWNrd2lkZ2V0ZmFjdG9yeS5jcHAKKyAKKyBsb2FkKHF0X21vZHVsZSkKK2RpZmYgLS1naXQgYS9x dGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcCBi L3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3Bw CitpbmRleCAzYjdkNzRkZjYzLi5iNzViZjgyMGQ1IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2 ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0X3Fqc2VuZ2luZS5jcHAKKysrKyBiL3F0ZGVj bGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCitAQCAt MTAyLDYgKzEwMiw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgdmFsdWVDb252ZXJzaW9u X1JlZ3VsYXJFeHByZXNzaW9uKCk7CisgICAgIHZvaWQgY2FzdFdpdGhNdWx0aXBsZUluaGVyaXRh bmNlKCk7CisgICAgIHZvaWQgY29sbGVjdEdhcmJhZ2UoKTsKKysgICAgdm9pZCBjb2xsZWN0R2Fy YmFnZU5lc3RlZFdyYXBwZXJzVHdvRW5naW5lcygpOworICAgICB2b2lkIGdjV2l0aE5lc3RlZERh dGFTdHJ1Y3R1cmUoKTsKKyAgICAgdm9pZCBzdGFja3RyYWNlKCk7CisgICAgIHZvaWQgbnVtYmVy UGFyc2luZ19kYXRhKCk7CitAQCAtMTgwOSw2ICsxODEwLDQ0IEBAIHZvaWQgdHN0X1FKU0VuZ2lu ZTo6Y29sbGVjdEdhcmJhZ2UoKQorICAgICBRVkVSSUZZKHB0ci5pc051bGwoKSk7CisgfQorIAor K2NsYXNzIFRlc3RPYmplY3RDb250YWluZXIgOiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9P QkpFQ1QKKysgICAgUV9QUk9QRVJUWShRT2JqZWN0ICpkdW1teSBNRU1CRVIgbV9kdW1teSBDT05T VEFOVCkKKysKKytwdWJsaWM6CisrICAgIFRlc3RPYmplY3RDb250YWluZXIoKSA6IG1fZHVtbXko bmV3IFFPYmplY3QodGhpcykpIHt9CisrCisrcHJpdmF0ZToKKysgICAgUU9iamVjdCAqbV9kdW1t eTsKKyt9OworKworK3ZvaWQgdHN0X1FKU0VuZ2luZTo6Y29sbGVjdEdhcmJhZ2VOZXN0ZWRXcmFw cGVyc1R3b0VuZ2luZXMoKQorK3sKKysgICAgUUpTRW5naW5lIGVuZ2luZTE7CisrICAgIFFKU0Vu Z2luZSBlbmdpbmUyOworKworKyAgICBUZXN0T2JqZWN0Q29udGFpbmVyIGNvbnRhaW5lcjsKKysg ICAgUVFtbEVuZ2luZTo6c2V0T2JqZWN0T3duZXJzaGlwKCZjb250YWluZXIsIFFRbWxFbmdpbmU6 OkNwcE93bmVyc2hpcCk7CisrCisrICAgIGVuZ2luZTEuZ2xvYmFsT2JqZWN0KCkuc2V0UHJvcGVy dHkoImZvb2JhciIsIGVuZ2luZTEubmV3UU9iamVjdCgmY29udGFpbmVyKSk7CisrICAgIGVuZ2lu ZTIuZ2xvYmFsT2JqZWN0KCkuc2V0UHJvcGVydHkoImZvb2JhciIsIGVuZ2luZTIubmV3UU9iamVj dCgmY29udGFpbmVyKSk7CisrCisrICAgIGVuZ2luZTEuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5i YXogPSA0MiIpOworKyAgICBlbmdpbmUyLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6ID0gNDMi KTsKKysKKysgICAgUUNPTVBBUkUoZW5naW5lMS5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIp LnRvSW50KCksIDQyKTsKKysgICAgUUNPTVBBUkUoZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFyLmR1 bW15LmJheiIpLnRvSW50KCksIDQzKTsKKysKKysgICAgZW5naW5lMS5jb2xsZWN0R2FyYmFnZSgp OworKyAgICBlbmdpbmUyLmNvbGxlY3RHYXJiYWdlKCk7CisrCisrICAgIC8vIFRoZSBHQyBzaG91 bGQgbm90IGNvbGxlY3QgZHVtbXkgb2JqZWN0IHdyYXBwZXJzIG5laXRoZXIgaW4gZW5naW5lMSBu b3IgZW5naW5lMiwgd2UKKysgICAgLy8gdmVyaWZ5IHRoYXQgYnkgY2hlY2tpbmcgd2hldGhlciB0 aGUgYmF6IHByb3BlcnR5IHN0aWxsIGhhcyBpdHMgcHJldmlvdXMgdmFsdWUuCisrICAgIFFDT01Q QVJFKGVuZ2luZTEuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0Mik7Cisr ICAgIFFDT01QQVJFKGVuZ2luZTIuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgp LCA0Myk7CisrfQorKworIHZvaWQgdHN0X1FKU0VuZ2luZTo6Z2NXaXRoTmVzdGVkRGF0YVN0cnVj dHVyZSgpCisgeworICAgICAvLyBUaGUgR0MgbXVzdCBiZSBhYmxlIHRvIHRyYXZlcnNlIGRlZXBs eSBuZXN0ZWQgb2JqZWN0cywgb3RoZXJ3aXNlIHRoaXMKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0 aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVt bkNoYW5nZS5xbWwgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1v ZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwMDAwLi4yMDYxMzNiYjM5CistLS0gL2Rldi9udWxsCisrKysgYi9xdGRl Y2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBv bkNvbHVtbkNoYW5nZS5xbWwKK0BAIC0wLDAgKzEsMTEgQEAKKytpbXBvcnQgUXRRdWljayAyLjgK KysKKytMaXN0VmlldyB7CisrICAgIGlkOiByb290CisrICAgIHdpZHRoOiAyMDAKKysgICAgaGVp Z2h0OiAyMDAKKysKKysgICAgZGVsZWdhdGU6IFRleHQgeworKyAgICAgICAgdGV4dDogZGlzcGxh eQorKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwv cXFtbGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcCBiL3F0ZGVjbGFyYXRp dmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVs LmNwcAoraW5kZXggMzVmMWUyYzk0ZC4uMTcyMjQ0NzgzMCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFy YXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1v ZGVsLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVt b2RlbC90c3RfcXFtbGRlbGVnYXRlbW9kZWwuY3BwCitAQCAtMjcsNiArMjcsOCBAQAorICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisgCisgI2luY2x1ZGUgPFF0VGVzdC9xdGVzdC5oPgorKyNpbmNsdWRl IDxRdENvcmUvUUNvbmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbD4KKysjaW5jbHVkZSA8UXRHdWkv UVN0YW5kYXJkSXRlbU1vZGVsPgorICNpbmNsdWRlIDxRdFFtbC9xcW1sY29tcG9uZW50Lmg+Cisg I2luY2x1ZGUgPFF0UW1sTW9kZWxzL3ByaXZhdGUvcXFtbGRlbGVnYXRlbW9kZWxfcC5oPgorICNp bmNsdWRlIDxRdFF1aWNrL3FxdWlja3ZpZXcuaD4KK0BAIC00Nyw2ICs0OSw3IEBAIHByaXZhdGUg c2xvdHM6CisgICAgIHZvaWQgZmlsdGVyT25Hcm91cF9yZW1vdmVXaGVuQ29tcGxldGVkKCk7Cisg ICAgIHZvaWQgcXRidWdfODYwMTcoKTsKKyAgICAgdm9pZCBjb250ZXh0QWNjZXNzZWRCeUhhbmRs ZXIoKTsKKysgICAgdm9pZCByZWRyYXdVcG9uQ29sdW1uQ2hhbmdlKCk7CisgfTsKKyAKKyBjbGFz cyBBYnN0cmFjdEl0ZW1Nb2RlbCA6IHB1YmxpYyBRQWJzdHJhY3RJdGVtTW9kZWwKK0BAIC0xODYs NiArMTg5LDMwIEBAIHZvaWQgdHN0X1FRbWxEZWxlZ2F0ZU1vZGVsOjpjb250ZXh0QWNjZXNzZWRC eUhhbmRsZXIoKQorICAgICBRVkVSSUZZKHJvb3QtPnByb3BlcnR5KCJ3b3JrcyIpLnRvQm9vbCgp KTsKKyB9CisgCisrdm9pZCB0c3RfUVFtbERlbGVnYXRlTW9kZWw6OnJlZHJhd1Vwb25Db2x1bW5D aGFuZ2UoKQorK3sKKysgICAgUVN0YW5kYXJkSXRlbU1vZGVsIG0xOworKyAgICBtMS5hcHBlbmRS b3coeworKyAgICAgICAgICAgIG5ldyBRU3RhbmRhcmRJdGVtKCJCYW5hbmEiKSwKKysgICAgICAg ICAgICBuZXcgUVN0YW5kYXJkSXRlbSgiQ29jb251dCIpLAorKyAgICB9KTsKKysKKysgICAgUVF1 aWNrVmlldyB2aWV3KHRlc3RGaWxlVXJsKCJyZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbCIpKTsK KysgICAgUUNPTVBBUkUodmlldy5zdGF0dXMoKSwgUVF1aWNrVmlldzo6UmVhZHkpOworKyAgICB2 aWV3LnNob3coKTsKKysgICAgUVF1aWNrSXRlbSAqcm9vdCA9IHZpZXcucm9vdE9iamVjdCgpOwor KyAgICByb290LT5zZXRQcm9wZXJ0eSgibW9kZWwiLCBRVmFyaWFudDo6ZnJvbVZhbHVlPFFPYmpl Y3QgKj4oJm0xKSk7CisrCisrICAgIFFPYmplY3QgKml0ZW0gPSByb290LT5wcm9wZXJ0eSgiY3Vy cmVudEl0ZW0iKS52YWx1ZTxRT2JqZWN0ICo+KCk7CisrICAgIFFWRVJJRlkoaXRlbSk7CisrICAg IFFDT01QQVJFKGl0ZW0tPnByb3BlcnR5KCJ0ZXh0IikudG9TdHJpbmcoKSwgIkJhbmFuYSIpOwor KworKyAgICBRVkVSSUZZKHJvb3QpOworKyAgICBtMS5yZW1vdmVDb2x1bW4oMCk7CisrCisrICAg IFFDT01QQVJFKGl0ZW0tPnByb3BlcnR5KCJ0ZXh0IikudG9TdHJpbmcoKSwgIkNvY29udXQiKTsK Kyt9CisrCisgUVRFU1RfTUFJTih0c3RfUVFtbERlbGVnYXRlTW9kZWwpCisgCisgI2luY2x1ZGUg InRzdF9xcW1sZGVsZWdhdGVtb2RlbC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90 ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9h dXRvL3FtbC9xdjRtbS90c3RfcXY0bW0uY3BwCitpbmRleCA1ZDYzNWFhNjNiLi44MjRmZDg5ZTVi IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0 bW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRt bS5jcHAKK0BAIC03NiwxMCArNzYsMTAgQEAgdm9pZCB0c3RfcXY0bW06Om11bHRpV3JhcHBlZFFP YmplY3RzKCkKKyAgICAgICAgIFFDT01QQVJFKGVuZ2luZTEubWVtb3J5TWFuYWdlci0+bV9wZW5k aW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAxKTsKKyAgICAgICAgIFFDT01QQVJF KGVuZ2luZTIubWVtb3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUu c2l6ZSgpLCAwKTsKKyAKKy0gICAgICAgIC8vIE1vdmVzIHRoZSBhZGRpdGlvbmFsIFdlYWtWYWx1 ZSBmcm9tIG1fbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMgdG8KKy0gICAgICAgIC8vIG1fcGVuZGlu Z0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLiBJdCdzIHN0aWxsIGFsaXZlIGFmdGVyIGFsbC4KKysg ICAgICAgIC8vIFRoZSBhZGRpdGlvbmFsIFdlYWtWYWx1ZSBmcm9tIG1fbXVsdGlwbHlXcmFwcGVk UU9iamVjdHMgaGFzbid0IGJlZW4gbW92ZWQKKysgICAgICAgIC8vIHRvIG1fcGVuZGluZ0ZyZWVk T2JqZWN0V3JhcHBlclZhbHVlIHlldC4gSXQncyBzdGlsbCBhbGl2ZSBhZnRlciBhbGwuCisgICAg ICAgICBlbmdpbmUxLm1lbW9yeU1hbmFnZXItPnJ1bkdDKCk7CistICAgICAgICBRQ09NUEFSRShl bmdpbmUxLm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNp emUoKSwgMik7CisrICAgICAgICBRQ09NUEFSRShlbmdpbmUxLm1lbW9yeU1hbmFnZXItPm1fcGVu ZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMSk7CisgCisgICAgICAgICAvLyBl bmdpbmUyIGRvZXNuJ3Qgb3duIHRoZSBvYmplY3QgYXMgZW5naW5lMSB3YXMgdGhlIGZpcnN0IHRv IHdyYXAgaXQgYWJvdmUuCisgICAgICAgICAvLyBUaGVyZWZvcmUsIG5vIGVmZmVjdCBoZXJlLgor ZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi9k YXRhL2FjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wMy5xbWwgYi9xdGRlY2xhcmF0aXZlL3Rl c3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvZGF0YS9hY3RpdmVGb2N1c09uVGFiX2luZmluaXRl TG9vcDMucW1sCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uODg5ZTQ4 MGYzYgorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNr L3FxdWlja2l0ZW0yL2RhdGEvYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbAorQEAg LTAsMCArMSwxMyBAQAorK2ltcG9ydCBRdFF1aWNrIDIuNgorKworK0l0ZW0geworKyAgICB2aXNp YmxlOiB0cnVlCisrICAgIEl0ZW0geworKyAgICAgICAgdmlzaWJsZTogZmFsc2UKKysgICAgICAg IEl0ZW0geworKyAgICAgICAgICAgIG9iamVjdE5hbWU6ICJoaWRkZW5DaGlsZCIKKysgICAgICAg ICAgICBhY3RpdmVGb2N1c09uVGFiOiB0cnVlCisrICAgICAgICAgICAgZm9jdXM6IHRydWUKKysg ICAgICAgIH0KKysgICAgfQorK30KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1 dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS90 ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcAoraW5kZXggYzhm MjUxZGJlMS4uYzhlZjM2ZWU2OCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0 by9xdWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRp dmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAKK0BAIC02 Nyw2ICs2Nyw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYjEw KCk7CisgICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3BfZGF0YSgpOworICAg ICB2b2lkIGFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wKCk7CisrICAgIHZvaWQgYWN0aXZl Rm9jdXNPblRhYl9pbmZpbml0ZUxvb3BDb250cm9scygpOworIAorICAgICB2b2lkIG5leHRJdGVt SW5Gb2N1c0NoYWluKCk7CisgICAgIHZvaWQgbmV4dEl0ZW1JbkZvY3VzQ2hhaW4yKCk7CitAQCAt MTA1Nyw2ICsxMDU4LDE3IEBAIHZvaWQgdHN0X1FRdWlja0l0ZW06OmFjdGl2ZUZvY3VzT25UYWJf aW5maW5pdGVMb29wKCkKKyAgICAgUUNPTVBBUkUoaXRlbSwgd2luZG93LT5yb290T2JqZWN0KCkp OworIH0KKyAKKysKKyt2b2lkIHRzdF9RUXVpY2tJdGVtOjphY3RpdmVGb2N1c09uVGFiX2luZmlu aXRlTG9vcENvbnRyb2xzKCkKKyt7CisrICAgIGF1dG8gc291cmNlID0gdGVzdEZpbGVVcmwoImFj dGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wMy5xbWwiKTsKKysgICAgUVNjb3BlZFBvaW50ZXI8 UVF1aWNrVmlldz53aW5kb3cobmV3IFFRdWlja1ZpZXcoKSk7CisrICAgIHdpbmRvdy0+c2V0U291 cmNlKHNvdXJjZSk7CisrICAgIHdpbmRvdy0+c2hvdygpOworKyAgICBRVkVSSUZZKHdpbmRvdy0+ ZXJyb3JzKCkuaXNFbXB0eSgpKTsKKysgICAgUVRlc3Q6OmtleUNsaWNrKHdpbmRvdy5nZXQoKSwg UXQ6OktleV9UYWIpOyAvLyBzaG91bGQgbm90IGhhbmcKKyt9CisrCisgdm9pZCB0c3RfUVF1aWNr SXRlbTo6bmV4dEl0ZW1JbkZvY3VzQ2hhaW4oKQorIHsKKyAgICAgaWYgKCFxdF90YWJfYWxsX3dp ZGdldHMoKSkKK1N1Ym1vZHVsZSBxdGRvYyBjMGM3YmYwNy4uLjc5ZDZlZjY5OgorU3VibW9kdWxl IHF0aW1hZ2Vmb3JtYXRzIDJkY2YyODk5Li5hYmU0NGMwZjoKK2RpZmYgLS1naXQgYS9xdGltYWdl Zm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwIGIv cXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVy LmNwcAoraW5kZXggZGRlNzgzYy4uMWJmOTA3NCAxMDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRz L3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAKKysrKyBiL3F0 aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5j cHAKK0BAIC00NjIsOCArNDYyLDEyIEBAIHN0YXRpYyBib29sIHBhcnNlSWNvbkVudHJ5SW5mbyhJ Q05TRW50cnkgJmljb24pCisgICAgIGlmIChpc0ljb25Db21wcmVzc2VkKGljb24pKQorICAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgIC8vIEljb24gZGVwdGg6CistICAgIGlmICghZGVwdGguaXNF bXB0eSgpKQorLSAgICAgICAgaWNvbi5kZXB0aCA9IElDTlNFbnRyeTo6RGVwdGgoZGVwdGgudG9V SW50KCkpOworKyAgICBpZiAoIWRlcHRoLmlzRW1wdHkoKSkgeworKyAgICAgICAgY29uc3QgdWlu dCBkZXB0aFVJbnQgPSBkZXB0aC50b1VJbnQoKTsKKysgICAgICAgIGlmIChkZXB0aFVJbnQgPiAz MikKKysgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICBpY29uLmRlcHRoID0gSUNO U0VudHJ5OjpEZXB0aChkZXB0aFVJbnQpOworKyAgICB9CisgICAgIC8vIFRyeSBtb25vIGlmIGRl cHRoIG5vdCBmb3VuZAorICAgICBpZiAoaWNvbi5kZXB0aCA9PSBJQ05TRW50cnk6OkRlcHRoVW5r bm93bikKKyAgICAgICAgIGljb24uZGVwdGggPSBJQ05TRW50cnk6OkRlcHRoTW9ubzsKK0BAIC01 MTUsNiArNTE5LDkgQEAgc3RhdGljIGJvb2wgcGFyc2VJY29uRW50cnlJbmZvKElDTlNFbnRyeSAm aWNvbikKKyAgICAgICAgIH0KKyAgICAgICAgIGljb24uaGVpZ2h0ID0gaWNvbi53aWR0aDsKKyAg ICAgfQorKyAgICAvLyBTYW5pdHkgY2hlY2sKKysgICAgaWYgKGljb24ud2lkdGggPT0gMCB8fCBp Y29uLndpZHRoID4gNDA5NikKKysgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgcmV0dXJuIHRy dWU7CisgfQorIAorQEAgLTY4NSw3ICs2OTIsNyBAQCBib29sIFFJQ05TSGFuZGxlcjo6Y2FuUmVh ZCgpIGNvbnN0CisgYm9vbCBRSUNOU0hhbmRsZXI6OnJlYWQoUUltYWdlICpvdXRJbWFnZSkKKyB7 CisgICAgIFFJbWFnZSBpbWc7CistICAgIGlmICghZW5zdXJlU2Nhbm5lZCgpKSB7CisrICAgIGlm ICghZW5zdXJlU2Nhbm5lZCgpIHx8IG1fY3VycmVudEljb25JbmRleCA+PSBtX2ljb25zLnNpemUo KSkgeworICAgICAgICAgcVdhcm5pbmcoIlFJQ05TSGFuZGxlcjo6cmVhZCgpOiBUaGUgZGV2aWNl IHdhc24ndCBwYXJzZWQgcHJvcGVybHkhIik7CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg IH0KK0BAIC04OTIsNyArODk5LDcgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKQor ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAKKyAgICAgICAgIGNvbnN0IHFpbnQ2NCBibG9j a0RhdGFPZmZzZXQgPSBkZXZpY2UoKS0+cG9zKCk7CistICAgICAgICBpZiAoIWlzQmxvY2tIZWFk ZXJWYWxpZChibG9ja0hlYWRlcikpIHsKKysgICAgICAgIGlmICghaXNCbG9ja0hlYWRlclZhbGlk KGJsb2NrSGVhZGVyLCBJQ05TQmxvY2tIZWFkZXJTaXplICsgZmlsZWxlbmd0aCAtIGJsb2NrRGF0 YU9mZnNldCkpIHsKKyAgICAgICAgICAgICBxV2FybmluZygiUUlDTlNIYW5kbGVyOjpzY2FuRGV2 aWNlKCk6IEZhaWxlZCwgYmFkIGhlYWRlciBhdCBwb3MgJXMuIE9TVHlwZSBcIiVzXCIsIGxlbmd0 aCAldSIsCisgICAgICAgICAgICAgICAgICAgICAgUUJ5dGVBcnJheTo6bnVtYmVyKGJsb2NrRGF0 YU9mZnNldCkuY29uc3REYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgbmFtZUZyb21PU1R5 cGUoYmxvY2tIZWFkZXIub3N0eXBlKS5jb25zdERhdGEoKSwgYmxvY2tIZWFkZXIubGVuZ3RoKTsK K0BAIC05MjcsMTEgKzkzNCwxNCBAQCBib29sIFFJQ05TSGFuZGxlcjo6c2NhbkRldmljZSgpCisg ICAgICAgICBjYXNlIElDTlNCbG9ja0hlYWRlcjo6VHlwZU9kcnA6CisgICAgICAgICAgICAgLy8g SWNucyBjb250YWluZXIgc2VlbXMgdG8gaGF2ZSBhbiBlbWJlZGRlZCBpY29uIHZhcmlhbnQgY29u dGFpbmVyCisgICAgICAgICAgICAgLy8gTGV0J3Mgc3RhcnQgYSBzY2FuIGZvciBlbnRyaWVzCist ICAgICAgICAgICAgd2hpbGUgKGRldmljZSgpLT5wb3MoKSA8IG5leHRCbG9ja09mZnNldCkgewor KyAgICAgICAgICAgIHdoaWxlICghc3RyZWFtLmF0RW5kKCkgJiYgZGV2aWNlKCktPnBvcygpIDwg bmV4dEJsb2NrT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgIElDTlNCbG9ja0hlYWRlciBpY29u OworICAgICAgICAgICAgICAgICBzdHJlYW0gPj4gaWNvbjsKKysgICAgICAgICAgICAgICAgaWYg KHN0cmVhbS5zdGF0dXMoKSAhPSBRRGF0YVN0cmVhbTo6T2spCisrICAgICAgICAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBpbmNvcnJlY3Qg dmFyaWFudCBlbnRyeSBoZWFkZXIgYW5kIHN0b3Agc2NhbgorLSAgICAgICAgICAgICAgICBpZiAo IWlzQmxvY2tIZWFkZXJWYWxpZChpY29uLCBibG9ja0RhdGFMZW5ndGgpKQorKyAgICAgICAgICAg ICAgICBxdWludDY0IHJlbWFpbmluZyA9IGJsb2NrRGF0YUxlbmd0aCAtIChkZXZpY2UoKS0+cG9z KCkgLSBibG9ja0RhdGFPZmZzZXQpOworKyAgICAgICAgICAgICAgICBpZiAoIWlzQmxvY2tIZWFk ZXJWYWxpZChpY29uLCBJQ05TQmxvY2tIZWFkZXJTaXplICsgcmVtYWluaW5nKSkKKyAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICBpZiAoIWFkZEVudHJ5KGljb24s IGRldmljZSgpLT5wb3MoKSwgYmxvY2tIZWFkZXIub3N0eXBlKSkKKyAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKK0BAIC0xMDAzLDcgKzEwMTMsNyBAQCBib29sIFFJQ05TSGFuZGxl cjo6c2NhbkRldmljZSgpCisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CisgICAgIH0K Ky0gICAgcmV0dXJuIHRydWU7CisrICAgIHJldHVybiAobV9pY29ucy5zaXplKCkgPiAwKTsKKyB9 CisgCisgY29uc3QgSUNOU0VudHJ5ICZRSUNOU0hhbmRsZXI6OmdldEljb25NYXNrKGNvbnN0IElD TlNFbnRyeSAmaWNvbikgY29uc3QKK2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1 Z2lucy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3Ny Yy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIvcWpwMmhhbmRsZXIuY3BwCitpbmRleCA1MDgyMDIz Li5jYjM0Mzc0IDEwMDY0NAorLS0tIGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vm b3JtYXRzL2pwMi9xanAyaGFuZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVn aW5zL2ltYWdlZm9ybWF0cy9qcDIvcWpwMmhhbmRsZXIuY3BwCitAQCAtNDMsNiArNDMsNyBAQAor ICNpbmNsdWRlICJxaW1hZ2UuaCIKKyAjaW5jbHVkZSAicXZhcmlhbnQuaCIKKyAjaW5jbHVkZSAi cWNvbG9yLmgiCisrI2luY2x1ZGUgInFpbWFnZXJlYWRlci5oIgorIAorICNpbmNsdWRlIDxqYXNw ZXIvamFzcGVyLmg+CisgI2luY2x1ZGUgPG1hdGguaD4gLy8gZm9yIHBvdworQEAgLTMzMywxNiAr MzM0LDQ2IEBAIHByaXZhdGU6CisgSnBlZzIwMDBKYXNwZXJSZWFkZXI6OkpwZWcyMDAwSmFzcGVy UmVhZGVyKFFJT0RldmljZSAqaW9kLCBTdWJGb3JtYXQgZm9ybWF0KQorICAgICA6IGphc3Blck9r KHRydWUpLCBpb0RldmljZShpb2QpLCBmb3JtYXQoZm9ybWF0KSwgaGFzQWxwaGEoZmFsc2UpCisg eworKyNpZiBKQVNfVkVSU0lPTl9NQUpPUiA8IDMKKyAgICAgaWYgKGphc19pbml0KCkpIHsKKyAg ICAgICAgIGphc3Blck9rID0gZmFsc2U7CisgICAgICAgICBxRGVidWcoIkphc3BlciBMaWJyYXJ5 IGluaXRpYWxpemF0aW9uIGZhaWxlZCIpOworICAgICB9CisrI2Vsc2UKKysgICAgamFzX2NvbmZf Y2xlYXIoKTsKKysjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDYsIDAsIDApCisr ICAgIGphc19jb25mX3NldF9tYXhfbWVtX3VzYWdlKFFJbWFnZVJlYWRlcjo6YWxsb2NhdGlvbkxp bWl0KCkgKiAxMDI0ICogMTAyNCk7CisrI2Vsc2UKKysgICAgLy8gMTI4TUIgc2VlbXMgdG8gYmUg ZW5vdWdoLgorKyAgICBqYXNfY29uZl9zZXRfbWF4X21lbV91c2FnZSgxMjggKiAxMDI0ICogMTAy NCk7CisrI2VuZGlmCisrICAgIGlmIChqYXNfaW5pdF9saWJyYXJ5KCkpIHsKKysgICAgICAgIGph c3Blck9rID0gZmFsc2U7CisrICAgICAgICBxRGVidWcoIkphc3BlciBsaWJyYXJ5IGluaXRpYWxp emF0aW9uIGZhaWxlZCIpOworKyAgICB9CisrICAgIGlmIChqYXNfaW5pdF90aHJlYWQoKSkgewor KyAgICAgICAgamFzX2NsZWFudXBfbGlicmFyeSgpOworKyAgICAgICAgamFzcGVyT2sgPSBmYWxz ZTsKKysgICAgICAgIHFEZWJ1ZygiSmFzcGVyIHRocmVhZCBpbml0aWFsaXphdGlvbiBmYWlsZWQi KTsKKysgICAgfQorKyNlbmRpZgorIH0KKyAKKyBKcGVnMjAwMEphc3BlclJlYWRlcjo6fkpwZWcy MDAwSmFzcGVyUmVhZGVyKCkKKyB7CisrI2lmIEpBU19WRVJTSU9OX01BSk9SIDwgMworICAgICBp ZiAoamFzcGVyT2spCisgICAgICAgICBqYXNfY2xlYW51cCgpOworKyNlbHNlCisrICAgIGlmIChq YXNwZXJPaykgeworKyAgICAgICAgaWYgKGphc19jbGVhbnVwX3RocmVhZCgpKSB7CisrICAgICAg ICAgICAgcURlYnVnKCJKYXNwZXIgdGhyZWFkIGNsZWFudXAgZmFpbGVkIik7CisrICAgICAgICB9 CisrICAgICAgICBpZiAoamFzX2NsZWFudXBfbGlicmFyeSgpKSB7CisrICAgICAgICAgICAgcURl YnVnKCJKYXNwZXIgbGlicmFyeSBjbGVhbnVwIGZhaWxlZCIpOworKyAgICAgICAgfQorKyAgICB9 CisrI2VuZGlmCisgfQorIAorIC8qISBcaW50ZXJuYWwKK0BAIC04NTcsNyArODg4LDcgQEAgYm9v bCBKcGVnMjAwMEphc3BlclJlYWRlcjo6d3JpdGUoY29uc3QgUUltYWdlICZpbWFnZSwgaW50IHF1 YWxpdHkpCisgICAgIH0KKyAKKyAgICAgLy8gT3BlbiBhbiBlbXB0eSBqYXNwZXIgc3RyZWFtIHRo YXQgZ3Jvd3MgYXV0b21hdGljYWxseQorLSAgICBqYXNfc3RyZWFtX3QgKiBtZW1vcnlfc3RyZWFt ID0gamFzX3N0cmVhbV9tZW1vcGVuKDAsIC0xKTsKKysgICAgamFzX3N0cmVhbV90ICogbWVtb3J5 X3N0cmVhbSA9IGphc19zdHJlYW1fbWVtb3BlbigwLCAwKTsKKyAKKyAgICAgLy8gSmFzcGVyIHdh bnRzIGEgbm9uLWNvbnN0IHN0cmluZy4KKyAgICAgY2hhciAqc3RyID0gcXN0cmR1cChqYXNwZXJG b3JtYXRTdHJpbmcudG9MYXRpbjEoKS5jb25zdERhdGEoKSk7CitkaWZmIC0tZ2l0IGEvcXRpbWFn ZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcCBi L3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxl ci5jcHAKK2luZGV4IDEzODY3NTAuLmFjODk1NmMgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0 cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwCisrKysgYi9x dGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIu Y3BwCitAQCAtMzYxLDYgKzM2MSw4IEBAIGJvb2wgUVRpZmZIYW5kbGVyOjpyZWFkKFFJbWFnZSAq aW1hZ2UpCisgICAgIH0KKyAKKyAgICAgVElGRiAqY29uc3QgdGlmZiA9IGQtPnRpZmY7CisrICAg IGlmIChUSUZGSXNUaWxlZCh0aWZmKSAmJiBUSUZGVGlsZVNpemU2NCh0aWZmKSA+IHVpbnQ2NF90 KGltYWdlLT5zaXplSW5CeXRlcygpKSkgLy8gQ29ycnVwdCBpbWFnZQorKyAgICAgICAgcmV0dXJu IGZhbHNlOworICAgICBjb25zdCBxdWludDMyIHdpZHRoID0gZC0+c2l6ZS53aWR0aCgpOworICAg ICBjb25zdCBxdWludDMyIGhlaWdodCA9IGQtPnNpemUuaGVpZ2h0KCk7CisgCitkaWZmIC0tZ2l0 IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5k bGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3 ZWJwaGFuZGxlci5jcHAKK2luZGV4IDgyZDM4Y2IuLmQwMmViMDUgMTAwNjQ0CistLS0gYS9xdGlt YWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3Bw CisrKysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2Vi cGhhbmRsZXIuY3BwCitAQCAtNDUsNiArNDUsNyBAQAorICNpbmNsdWRlIDxxZGVidWcuaD4KKyAj aW5jbHVkZSA8cXBhaW50ZXIuaD4KKyAjaW5jbHVkZSA8cXZhcmlhbnQuaD4KKysjaW5jbHVkZSA8 UXRFbmRpYW4+CisgCisgc3RhdGljIGNvbnN0IGludCByaWZmSGVhZGVyU2l6ZSA9IDEyOyAvLyBS SUZGX0hFQURFUl9TSVpFIGZyb20gd2VicC9mb3JtYXRfY29uc3RhbnRzLmgKKyAKK0BAIC0xMDIs MjEgKzEwMywyMyBAQCBib29sIFFXZWJwSGFuZGxlcjo6ZW5zdXJlU2Nhbm5lZCgpIGNvbnN0Cisg CisgICAgIG1fc2NhblN0YXRlID0gU2NhbkVycm9yOworIAorLSAgICBpZiAoZGV2aWNlKCktPmlz U2VxdWVudGlhbCgpKSB7CistICAgICAgICBxV2FybmluZygpIDw8ICJTZXF1ZW50aWFsIGRldmlj ZXMgYXJlIG5vdCBzdXBwb3J0ZWQiOworKyAgICBRV2VicEhhbmRsZXIgKnRoYXQgPSBjb25zdF9j YXN0PFFXZWJwSGFuZGxlciAqPih0aGlzKTsKKysgICAgY29uc3QgaW50IGhlYWRlckJ5dGVzTmVl ZGVkID0gc2l6ZW9mKFdlYlBCaXRzdHJlYW1GZWF0dXJlcyk7CisrICAgIFFCeXRlQXJyYXkgaGVh ZGVyID0gZGV2aWNlKCktPnBlZWsoaGVhZGVyQnl0ZXNOZWVkZWQpOworKyAgICBpZiAoaGVhZGVy LnNpemUoKSA8IGhlYWRlckJ5dGVzTmVlZGVkKQorICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAg ICB9CisgCistICAgIHFpbnQ2NCBvbGRQb3MgPSBkZXZpY2UoKS0+cG9zKCk7CistICAgIGRldmlj ZSgpLT5zZWVrKDApOworLQorLSAgICBRV2VicEhhbmRsZXIgKnRoYXQgPSBjb25zdF9jYXN0PFFX ZWJwSGFuZGxlciAqPih0aGlzKTsKKy0gICAgUUJ5dGVBcnJheSBoZWFkZXIgPSBkZXZpY2UoKS0+ cGVlayhzaXplb2YoV2ViUEJpdHN0cmVhbUZlYXR1cmVzKSk7CisrICAgIC8vIFdlIGRvIG5vIHJh bmRvbSBhY2Nlc3MgZHVyaW5nIGRlY29kaW5nLCBqdXN0IGEgcmVhZEFsbCgpIG9mIHRoZSB3aG9s ZSBpbWFnZSBmaWxlLiBTbyBpZgorKyAgICAvLyBpZiBpdCBpcyBhbGwgYXZhaWxhYmxlIGFscmVh ZHksIHdlIGNhbiBhY2NlcHQgYSBzZXF1ZW50aWFsIGRldmljZS4gVGhlIHJpZmYgaGVhZGVyIGNv bnRhaW5zCisrICAgIC8vIHRoZSBmaWxlIHNpemUgbWludXMgOCBieXRlcyBoZWFkZXIKKysgICAg cWludDY0IGJ5dGVTaXplID0gcUZyb21MaXR0bGVFbmRpYW48cXVpbnQzMj4oaGVhZGVyLmNvbnN0 RGF0YSgpICsgNCk7CisrICAgIGlmIChkZXZpY2UoKS0+aXNTZXF1ZW50aWFsKCkgJiYgZGV2aWNl KCktPmJ5dGVzQXZhaWxhYmxlKCkgPCBieXRlU2l6ZSArIDgpIHsKKysgICAgICAgIHFXYXJuaW5n KCkgPDwgIlFXZWJwSGFuZGxlcjogSW5zdWZmaWNpZW50IGRhdGEgYXZhaWxhYmxlIGluIHNlcXVl bnRpYWwgZGV2aWNlIjsKKysgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgfQorICAgICBpZiAo V2ViUEdldEZlYXR1cmVzKChjb25zdCB1aW50OF90KiloZWFkZXIuY29uc3REYXRhKCksIGhlYWRl ci5zaXplKCksICYodGhhdC0+bV9mZWF0dXJlcykpID09IFZQOF9TVEFUVVNfT0spIHsKKyAgICAg ICAgIGlmIChtX2ZlYXR1cmVzLmhhc19hbmltYXRpb24pIHsKKyAgICAgICAgICAgICAvLyBGb3Ig YW5pbWF0aW9uLCB3ZSBoYXZlIHRvIHJlYWQgYW5kIHNjYW4gd2hvbGUgZmlsZSB0byBkZXRlcm1p bmUgbG9vcCBjb3VudCBhbmQgaW1hZ2VzIGNvdW50CistICAgICAgICAgICAgZGV2aWNlKCktPnNl ZWsob2xkUG9zKTsKKy0KKyAgICAgICAgICAgICBpZiAodGhhdC0+ZW5zdXJlRGVtdXhlcigpKSB7 CisgICAgICAgICAgICAgICAgIHRoYXQtPm1fbG9vcCA9IFdlYlBEZW11eEdldEkobV9kZW11eGVy LCBXRUJQX0ZGX0xPT1BfQ09VTlQpOworICAgICAgICAgICAgICAgICB0aGF0LT5tX2ZyYW1lQ291 bnQgPSBXZWJQRGVtdXhHZXRJKG1fZGVtdXhlciwgV0VCUF9GRl9GUkFNRV9DT1VOVCk7CitAQCAt MTI2LDE3ICsxMjksMTMgQEAgYm9vbCBRV2VicEhhbmRsZXI6OmVuc3VyZVNjYW5uZWQoKSBjb25z dAorICAgICAgICAgICAgICAgICBpZiAodGhhdC0+bV9mZWF0dXJlcy5oYXNfYWxwaGEpCisgICAg ICAgICAgICAgICAgICAgICB0aGF0LT5tX2NvbXBvc2l0ZWQtPmZpbGwoUXQ6OnRyYW5zcGFyZW50 KTsKKyAKKy0gICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHJlc2V0IGRldmljZSBwb3NpdGlv biBzaW5jZSB3ZSBoYXZlIHJlYWQgaW4gYWxsIGRhdGEKKyAgICAgICAgICAgICAgICAgbV9zY2Fu U3RhdGUgPSBTY2FuU3VjY2VzczsKKy0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg ICAgICAgICAgfQorICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBtX3NjYW5TdGF0ZSA9 IFNjYW5TdWNjZXNzOworICAgICAgICAgfQorICAgICB9CisgCistICAgIGRldmljZSgpLT5zZWVr KG9sZFBvcyk7CistCisgICAgIHJldHVybiBtX3NjYW5TdGF0ZSA9PSBTY2FuU3VjY2VzczsKKyB9 CisgCitAQCAtMTU5LDcgKzE1OCw3IEBAIGJvb2wgUVdlYnBIYW5kbGVyOjplbnN1cmVEZW11eGVy KCkKKyAKKyBib29sIFFXZWJwSGFuZGxlcjo6cmVhZChRSW1hZ2UgKmltYWdlKQorIHsKKy0gICAg aWYgKCFlbnN1cmVTY2FubmVkKCkgfHwgZGV2aWNlKCktPmlzU2VxdWVudGlhbCgpIHx8ICFlbnN1 cmVEZW11eGVyKCkpCisrICAgIGlmICghZW5zdXJlU2Nhbm5lZCgpIHx8ICFlbnN1cmVEZW11eGVy KCkpCisgICAgICAgICByZXR1cm4gZmFsc2U7CisgCisgICAgIFFSZWN0IHByZXZGcmFtZVJlY3Q7 CitTdWJtb2R1bGUgcXRsb2NhdGlvbiA5OGE1YzUxMS4uZjk5MWUyOGM6CitkaWZmIC0tZ2l0IGEv cXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vY29uZmlndXJlLmpzb24gYi9xdGxvY2F0aW9uL3NyYy9s b2NhdGlvbi9jb25maWd1cmUuanNvbgoraW5kZXggNmQwMWE5YTMuLmQxZTYyM2ExIDEwMDY0NAor LS0tIGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vY29uZmlndXJlLmpzb24KKysrKyBiL3F0bG9j YXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29uCitAQCAtOSw3ICs5LDcgQEAKKyAgICAg ICAgICAgICAibGFiZWwiOiAiUXQubGFicy5sb2NhdGlvbiBleHBlcmltZW50YWwgUU1MIHBsdWdp biIsCisgICAgICAgICAgICAgInB1cnBvc2UiOiAiUHJvdmlkZXMgZXhwZXJpbWVudGFsIFF0TG9j YXRpb24gUU1MIHR5cGVzIiwKKyAgICAgICAgICAgICAic2VjdGlvbiI6ICJMb2NhdGlvbiIsCist ICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJjb25maWcub3BlbmdsIiwKKysgICAgICAgICAgICAi Y29uZGl0aW9uIjogImZlYXR1cmVzLm9wZW5nbCIsCisgICAgICAgICAgICAgIm91dHB1dCI6IFsg InByaXZhdGVGZWF0dXJlIiBdCisgICAgICAgICB9LAorICAgICAgICAgImdlb3NlcnZpY2VzX29z bSI6IHsKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2Vv bWFwb2JqZWN0cXNnc3VwcG9ydC5jcHAgYi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3Fz Zy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9ydC5jcHAKK2luZGV4IGE5Nzg1NzNkLi4xMWUxNDY2ZiAx MDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmpl Y3Rxc2dzdXBwb3J0LmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cv cWdlb21hcG9iamVjdHFzZ3N1cHBvcnQuY3BwCitAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgUUdl b01hcE9iamVjdFFTR1N1cHBvcnQ6OnVwZGF0ZU1hcE9iamVjdHMoUVNHTm9kZSAqcm9vdCwgUVF1 aWNrV2luZG93ICp3aW5kCisgICAgIGlmICghcm9vdCkKKyAgICAgICAgIHJldHVybjsKKyAKKy0g ICAgaWYgKG1fbWFwT2JqZWN0c1Jvb3ROb2RlICYmIG1fbWFwT2JqZWN0c1Jvb3ROb2RlLT5wYXJl bnQoKSkKKysgICAgaWYgKG1fbWFwT2JqZWN0c1Jvb3ROb2RlICYmICFtX21hcE9iamVjdHNSb290 Tm9kZS0+cGFyZW50KCkpCisgICAgICAgICByb290LT5hcHBlbmRDaGlsZE5vZGUobV9tYXBPYmpl Y3RzUm9vdE5vZGUuZ2V0KCkpOworIAorICAgICBpZiAoIW1fbWFwT2JqZWN0c1Jvb3ROb2RlKSB7 CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dl b2NvZGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dl b3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAoraW5kZXggNWE0 MDQ2N2UuLmQxMjNjNmE4IDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9z ZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0bG9j YXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5l X2VzcmkuY3BwCitAQCAtNTksOCArNTksMTAgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgc3RhdGlj IGNvbnN0IFFTdHJpbmcga1ByZWZpeEVzcmkoUVN0cmluZ0xpdGVyYWwoImVzcmkuIikpOworIHN0 YXRpYyBjb25zdCBRU3RyaW5nIGtQYXJhbVVzZXJBZ2VudChrUHJlZml4RXNyaSArIFFTdHJpbmdM aXRlcmFsKCJ1c2VyYWdlbnQiKSk7CisgCistc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybEdlb2Nv ZGUoUVN0cmluZ0xpdGVyYWwoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qv c2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKSk7Cist c3RhdGljIGNvbnN0IFFTdHJpbmcga1VybFJldmVyc2VHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKCJo dHRwOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2Nv ZGVTZXJ2ZXIvcmV2ZXJzZUdlb2NvZGUiKSk7Cisrc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybEdl b2NvZGUoUVN0cmluZ0xpdGVyYWwoImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9y ZXN0L3NlcnZpY2VzLyIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiV29ybGQvR2VvY29kZVNlcnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKSk7Cisr c3RhdGljIGNvbnN0IFFTdHJpbmcga1VybFJldmVyc2VHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKAor KyAgICAgICAgImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2Vz L1dvcmxkL0dlb2NvZGVTZXJ2ZXIvcmV2ZXJzZUdlb2NvZGUiKSk7CisgCisgc3RhdGljIFFTdHJp bmcgYWRkcmVzc1RvUXVlcnkoY29uc3QgUUdlb0FkZHJlc3MgJmFkZHJlc3MpCisgeworZGlmZiAt LWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZWpz b25wYXJzZXJfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vz cmkvZ2Vvcm91dGVqc29ucGFyc2VyX2VzcmkuY3BwCitpbmRleCAxNzQ5MmQ5NC4uOTZjMTJiMWIg MTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vv cm91dGVqc29ucGFyc2VyX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dl b3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFyc2VyX2VzcmkuY3BwCitAQCAtNDYsNyArNDYs OCBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorLS8vIEpTT04gcmVmZXJlbmNlOiBodHRw Oi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9z ZXJ2aWNlX3dpdGhfc3luY2hyb25vdXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKysv LyBKU09OIHJlZmVyZW5jZToKKysvLyBodHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hl bHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2VydmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1 dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisgCisgc3RhdGljIGNvbnN0IFFTdHJpbmcga0Vycm9y TWVzc2FnZShRU3RyaW5nTGl0ZXJhbCgiRXJyb3IgJTE6ICUyLiIpKTsKKyBzdGF0aWMgY29uc3Qg UVN0cmluZyBrRXJyb3JKc29uKFFTdHJpbmdMaXRlcmFsKCJFcnJvcjogaW52YWxpZGUgSlNPTiBk b2N1bWVudC4iKSk7CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2 aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5z L2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcAoraW5kZXggOGNhZGZiMjku LjkyYjZiYjEzIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNl cy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdp bnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZXJlcGx5X2VzcmkuY3BwCitAQCAtNDQsNyArNDQs OCBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorLS8vIEpTT04gcmVmZXJlbmNlOiBodHRw Oi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9z ZXJ2aWNlX3dpdGhfc3luY2hyb25vdXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKysv LyBKU09OIHJlZmVyZW5jZToKKysvLyBodHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hl bHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2VydmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1 dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisgCisgR2VvUm91dGVSZXBseUVzcmk6Okdlb1JvdXRl UmVwbHlFc3JpKFFOZXR3b3JrUmVwbHkgKnJlcGx5LCBjb25zdCBRR2VvUm91dGVSZXF1ZXN0ICZy ZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRT2JqZWN0ICpw YXJlbnQpIDoKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2Vz L2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9w bHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAK K2luZGV4IDBlNmJjMmM3Li5lZDYxM2Y0YiAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3Bs dWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAor KysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdt YW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtNDgsNyArNDgsOCBAQCBzdGF0aWMgY29uc3QgUVN0 cmluZyBrUHJlZml4RXNyaShRU3RyaW5nTGl0ZXJhbCgiZXNyaS4iKSk7Cisgc3RhdGljIGNvbnN0 IFFTdHJpbmcga1BhcmFtVXNlckFnZW50KGtQcmVmaXhFc3JpICsgUVN0cmluZ0xpdGVyYWwoInVz ZXJhZ2VudCIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrUGFyYW1Ub2tlbihrUHJlZml4RXNy aSArIFFTdHJpbmdMaXRlcmFsKCJ0b2tlbiIpKTsKKyAKKy1zdGF0aWMgY29uc3QgUVN0cmluZyBr VXJsUm91dGluZyhRU3RyaW5nTGl0ZXJhbCgiaHR0cDovL3JvdXRlLmFyY2dpcy5jb20vYXJjZ2lz L3Jlc3Qvc2VydmljZXMvV29ybGQvUm91dGUvTkFTZXJ2ZXIvUm91dGVfV29ybGQvc29sdmUiKSk7 Cisrc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybFJvdXRpbmcoUVN0cmluZ0xpdGVyYWwoCisrICAg ICAgICAiaHR0cHM6Ly9yb3V0ZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxk L1JvdXRlL05BU2VydmVyL1JvdXRlX1dvcmxkL3NvbHZlIikpOworIAorIEdlb1JvdXRpbmdNYW5h Z2VyRW5naW5lRXNyaTo6R2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpKGNvbnN0IFFWYXJpYW50 TWFwICZwYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFHZW9TZXJ2aWNlUHJvdmlkZXI6OkVycm9yICplcnJvciwKK0BA IC03MCw3ICs3MSw4IEBAIEdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6fkdlb1JvdXRpbmdN YW5hZ2VyRW5naW5lRXNyaSgpCisgeworIH0KKyAKKy0vLyBSRVNUIHJlZmVyZW5jZTogaHR0cDov L3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwj Ly8wMnIzMDAwMDAwMzYwMDAwMDAKKysvLyBSRVNUIHJlZmVyZW5jZToKKysvLyBodHRwczovL3Jl c291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8w MnIzMDAwMDAwMzYwMDAwMDAKKyAKKyBRR2VvUm91dGVSZXBseSAqR2VvUm91dGluZ01hbmFnZXJF bmdpbmVFc3JpOjpjYWxjdWxhdGVSb3V0ZShjb25zdCBRR2VvUm91dGVSZXF1ZXN0ICZyZXF1ZXN0 KQorIHsKK0BAIC0xMjUsNyArMTI3LDcgQEAgdm9pZCBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVz cmk6OnJlcGx5RXJyb3IoUUdlb1JvdXRlUmVwbHk6OkVycm9yIGVycm9yQ29kZSwgY28KKyBRU3Ry aW5nIEdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6cHJlZmVyZWREaXJlY3Rpb25MYW5nYWdl KCkKKyB7CisgICAgIC8vIGxpc3Qgb2Ygc3VwcG9ydGVkIGxhbmdhZ2VzIGlzIGRlZmluZWQgaW46 CistICAgIC8vIGh0dHA6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0 LWFwaS9pbmRleC5odG1sIy8vMDJyMzAwMDAwMDM2MDAwMDAwCisrICAgIC8vIGh0dHBzOi8vcmVz b3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvaW5kZXguaHRtbCMvLzAy cjMwMDAwMDAzNjAwMDAwMAorICAgICBjb25zdCBRU3RyaW5nTGlzdCBzdXBwb3J0ZWRMYW5ndWFn ZXMgPSB7CisgICAgICAgICAiYXIiLCAvLyBHZW5lcmF0ZSBkaXJlY3Rpb25zIGluIEFyYWJpYwor ICAgICAgICAgImNzIiwgLy8gR2VuZXJhdGUgZGlyZWN0aW9ucyBpbiBDemVjaAorZGlmZiAtLWdp dCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW90aWxlZG1hcHBp bmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2 aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDVk MTU4MzVkLi4yNDE0OGY5NSAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vv c2VydmljZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCisrKysg Yi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5n bWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorQEAgLTIzMCw3ICsyMzAsOCBAQCBRR2VvTWFwICpHZW9U aWxlZE1hcHBpbmdNYW5hZ2VyRW5naW5lRXNyaTo6Y3JlYXRlTWFwKCkKKyAvLyAke3l9ID0gWQor IC8vICR7dG9rZW59ID0gVG9rZW4KKyAKKy0vLyB0ZW1wbGF0ZSA9ICdodHRwOi8vc2VydmljZXMu YXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBT ZXJ2ZXIvdGlsZS97e3p9fS97e3l9fS97e3h9fS5wbmcnCisrLy8gdGVtcGxhdGUgPQorKy8vICdo dHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29y bGRfVG9wb19NYXAvTWFwU2VydmVyL3RpbGUve3t6fX0ve3t5fX0ve3t4fX0ucG5nJworIAorIGJv b2wgR2VvVGlsZWRNYXBwaW5nTWFuYWdlckVuZ2luZUVzcmk6OmluaXRpYWxpemVNYXBTb3VyY2Vz KFFHZW9TZXJ2aWNlUHJvdmlkZXI6OkVycm9yICplcnJvciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nICplcnJvclN0 cmluZywKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vz cmkvbWFwcy5qc29uIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21h cHMuanNvbgoraW5kZXggODE2N2FlN2QuLjg2MmUwODdkIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlv bi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMuanNvbgorKysrIGIvcXRsb2NhdGlv bi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMuanNvbgorQEAgLTYsOCArNiw4IEBA CisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgU3RyZWV0 IE1hcCIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0 IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25s aW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9TdHJlZXRfTWFwL01hcFNlcnZlciIs CistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93 d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0zYjkzMzM3OTgzZTk0MzZmOGRiOTUwZTM4 YTg2MjlhZic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0 cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxk X1N0cmVldF9NYXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICIm Y29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0z YjkzMzM3OTgzZTk0MzZmOGRiOTUwZTM4YTg2MjlhZic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgor ICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0xNiw4ICsxNiw4IEBACisgICAgICAgICAg ICAgIiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIEltYWdlcnkiLAorICAgICAgICAgICAgICJtb2Jp bGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1 cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2Vz L1dvcmxkX0ltYWdlcnkvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6 ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lk PTEwZGYyMjc5Zjk2ODRlNGE5ZjZhN2YwOGZlYmFjMmE5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMi CisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0Fy Y0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX0ltYWdlcnkvTWFwU2VydmVyIiwKKysgICAgICAgICAg ICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNv bS9ob21lL2l0ZW0uaHRtbD9pZD0xMGRmMjI3OWY5Njg0ZTRhOWY2YTdmMDhmZWJhYzJhOSc+RXNy aTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0yNiw4 ICsyNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFyY0dJUyBPbmxpbmUgV29y bGQgVGVycmFpbiBCYXNlIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAg ICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVy LmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVGVycmFpbl9CYXNl L01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhy ZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1jNjFhZDhhYjAxN2Q0 OWUxYTgyZjU4MGVlMTI5ODkzMSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAg ICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2 aWNlcy9Xb3JsZF9UZXJyYWluX0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJp Z2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0 ZW0uaHRtbD9pZD1jNjFhZDhhYjAxN2Q0OWUxYTgyZjU4MGVlMTI5ODkzMSc+RXNyaTwvYT4gY29u dHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0zNiw4ICszNiw4IEBA CisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgVG9wb2dy YXBoeSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0 IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGlu ZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVyIiwKKy0g ICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5h cmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTMwZTVmZTMxNDljMzRkZjFiYTkyMmU2ZjViYmY4 MDhmJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczov L3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9f TWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxh IGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MzBlNWZlMzE0 OWMzNGRmMWJhOTIyZTZmNWJiZjgwOGYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAg IH0sCisgCisgICAgICAgICB7CitAQCAtNDYsOCArNDYsOCBAQAorICAgICAgICAgICAgICJkZXNj cmlwdGlvbiI6ICJUaGlzIG1hcCBwcmVzZW50cyBsYW5kIGNvdmVyIGFuZCBkZXRhaWxlZCB0b3Bv Z3JhcGhpYyBtYXBzIGZvciB0aGUgVW5pdGVkIFN0YXRlcy4iLAorICAgICAgICAgICAgICJtb2Jp bGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1 cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2Vydmlj ZXMvVVNBX1RvcG9fTWFwcy9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0 IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/ aWQ9OTljZDVmYmQ5ODkzNDAyODgwMmI0Zjc5N2M0YjE3MzInPkVzcmk8L2E+IGNvbnRyaWJ1dG9y cyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNv bS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9VU0FfVG9wb19NYXBzL01hcFNlcnZlciIsCisrICAgICAg ICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dp cy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9OTljZDVmYmQ5ODkzNDAyODgwMmI0Zjc5N2M0YjE3MzIn PkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAt NTYsOCArNTYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJOYXRpb25hbCBHZW9n cmFwaGljIFdvcmxkIE1hcCIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAg ICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZp Y2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvTmF0R2VvX1dvcmxkX01h cC9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBo cmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjliMWI0MjIxOTg5 NDRmYmJkNTI1MGIzMjQxNjkxYjYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAg ICAidXJsIjogImh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9z ZXJ2aWNlcy9OYXRHZW9fV29ybGRfTWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHly aWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9p dGVtLmh0bWw/aWQ9YjliMWI0MjIxOTg5NDRmYmJkNTI1MGIzMjQxNjkxYjYnPkVzcmk8L2E+IGNv bnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtNjYsOCArNjYsOCBA QAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGVtYXRpYyBjb250ZW50IHByb3ZpZGlu ZyBhIG5ldXRyYWwgYmFja2dyb3VuZCB3aXRoIG1pbmltYWwgY29sb3JzIiwKKyAgICAgICAgICAg ICAibW9iaWxlIjogdHJ1ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAg ICAgICAidXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0 L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9MaWdodF9HcmF5X0Jhc2UvTWFwU2VydmVyIiwKKy0gICAg ICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNn aXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWVkNzEyY2IxZGIzZTRiYWU5ZTg1MzI5MDQwZmI5YTQ5 Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3Nl cnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxk X0xpZ2h0X0dyYXlfQmFzZS9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0 IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1s P2lkPWVkNzEyY2IxZGIzZTRiYWU5ZTg1MzI5MDQwZmI5YTQ5Jz5Fc3JpPC9hPiBjb250cmlidXRv cnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTc2LDggKzc2LDggQEAKKyAgICAg ICAgICAgICAiZGVzY3JpcHRpb24iOiAiTmF0dXJhbCBFYXJ0aCBwaHlzaWNhbCBtYXAgZm9yIHRo ZSB3b3JsZCIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJu aWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNv bmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1BoeXNpY2FsX01hcC9NYXBTZXJ2 ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRw Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YzRlYzcyMmExY2QzNGNmMGEyMzkw NGFhZGY4OTIzYTAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjog Imh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29y bGRfUGh5c2ljYWxfTWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQi OiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/ aWQ9YzRlYzcyMmExY2QzNGNmMGEyMzkwNGFhZGY4OTIzYTAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9y cyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtODYsOCArODYsOCBAQAorICAgICAg ICAgICAgICJkZXNjcmlwdGlvbiI6ICJQb3J0cmF5cyBzdXJmYWNlIGVsZXZhdGlvbiBhcyBzaGFk ZWQgcmVsaWVmIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAg Im5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dp c29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU2hhZGVkX1JlbGllZi9NYXBT ZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdo dHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9OWM1MzcwZDBiNTRmNGRlMWI0 OGEzNzkyZDczNzdmZjInPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJs IjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMv V29ybGRfU2hhZGVkX1JlbGllZi9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRU ZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5o dG1sP2lkPTljNTM3MGQwYjU0ZjRkZTFiNDhhMzc5MmQ3Mzc3ZmYyJz5Fc3JpPC9hPiBjb250cmli dXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTk2LDggKzk2LDggQEAKKyAg ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBtYXAgaXMgZGVzaWduZWQgdG8gYmUgdXNl ZCBhcyBhIGJhc2VtYXAgYnkgbWFyaW5lIEdJUyBwcm9mZXNzaW9uYWxzIGFuZCBhcyBhIHJlZmVy ZW5jZSBtYXAgYnkgYW55b25lIGludGVyZXN0ZWQgaW4gb2NlYW4gZGF0YSIsCisgICAgICAgICAg ICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAg ICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL2FyY2dpcy9yZXN0 L3NlcnZpY2VzL09jZWFuL1dvcmxkX09jZWFuX0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAg ICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29t L2hvbWUvaXRlbS5odG1sP2lkPTFlMTI2ZTc1MjBmOTQ2NmM5Y2EyOGI4ZjI4YjVlNTAwJz5Fc3Jp PC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5h cmNnaXNvbmxpbmUuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL09jZWFuL1dvcmxkX09jZWFuX0Jh c2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEg aHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0xZTEyNmU3NTIw Zjk0NjZjOWNhMjhiOGYyOGI1ZTUwMCc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAg fSwKKyAKKyAgICAgICAgIHsKK0BAIC0xMDYsOCArMTA2LDggQEAKKyAgICAgICAgICAgICAiZGVz Y3JpcHRpb24iOiAiVGhlbWF0aWMgY29udGVudCBwcm92aWRpbmcgYSBuZXV0cmFsIGJhY2tncm91 bmQgd2l0aCBtaW5pbWFsIGNvbG9ycyIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAor ICAgICAgICAgICAgICJuaWdodCI6IHRydWUsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8v c2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9DYW52YXMvV29y bGRfRGFya19HcmF5X0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4 dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1s P2lkPWEyODRhOWI5OWIzNDQ2YTM5MTBkNDE0NGE1MDk5MGY2Jz5Fc3JpPC9hPiBjb250cmlidXRv cnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5j b20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0RhcmtfR3JheV9CYXNlL01hcFNl cnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0 dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YTI4NGE5Yjk5YjM0NDZhMzkx MGQ0MTQ0YTUwOTkwZjYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisg ICAgICAgICB7CitAQCAtMTE2LDggKzExNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9u IjogIkRlTG9ybWXigJlzIHRvcG9ncmFwaGljIGJhc2VtYXAgaXMgYSBzZWFtbGVzcyBnbG9iYWwg ZGF0YSBzZXQgdGhhdCBwb3J0cmF5cyB0cmFuc3BvcnRhdGlvbiwgaHlkcm9ncmFwaHksIGp1cmlz ZGljdGlvbiBib3VuZGFyaWVzLCBhbmQgbWFqb3IgZ2VvZ3JhcGhpYyBmZWF0dXJlcyIsCisgICAg ICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAor LSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJ Uy9yZXN0L3NlcnZpY2VzL1NwZWNpYWx0eS9EZUxvcm1lX1dvcmxkX0Jhc2VfTWFwL01hcFNlcnZl ciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6 Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1iMTY1YzNkZjQ1M2U0YmU2YjVhYzRm ZGIyNDFlZmZiZSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAi aHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9TcGVj aWFsdHkvRGVMb3JtZV9Xb3JsZF9CYXNlX01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJj b3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hv bWUvaXRlbS5odG1sP2lkPWIxNjVjM2RmNDUzZTRiZTZiNWFjNGZkYjI0MWVmZmJlJz5Fc3JpPC9h PiBjb250cmlidXRvcnMiCisgICAgICAgICB9CisgICAgIF0KKyB9CitkaWZmIC0tZ2l0IGEvcXRs b2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9l c3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1h bmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDM4NThkZGY1Li5hZjY2ZjI4ZSAxMDA2NDQKKy0t LSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJl bmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMv ZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK0BAIC02Myw4ICs2MywxMCBAQCBzdGF0 aWMgY29uc3QgUVN0cmluZyBrQ291bnRyaWVzS2V5KFFTdHJpbmdMaXRlcmFsKCJkZXRhaWxlZENv dW50cmllcyIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrTG9jYWxpemVkTmFtZXNLZXkoUVN0 cmluZ0xpdGVyYWwoImxvY2FsaXplZE5hbWVzIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtN YXhMb2NhdGlvbnNLZXkoUVN0cmluZ0xpdGVyYWwoIm1heExvY2F0aW9ucyIpKTsKKyAKKy1zdGF0 aWMgY29uc3QgUVVybCBrVXJsR2VvY29kZVNlcnZlcigiaHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNv bS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyP2Y9cGpzb24iKTsKKy1z dGF0aWMgY29uc3QgUVVybCBrVXJsRmluZEFkZHJlc3NDYW5kaWRhdGVzKCJodHRwOi8vZ2VvY29k ZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvZmlu ZEFkZHJlc3NDYW5kaWRhdGVzIik7Cisrc3RhdGljIGNvbnN0IFFVcmwga1VybEdlb2NvZGVTZXJ2 ZXIoCisrICAgICAgICAiaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2Vy dmljZXMvV29ybGQvR2VvY29kZVNlcnZlcj9mPXBqc29uIik7Cisrc3RhdGljIGNvbnN0IFFVcmwg a1VybEZpbmRBZGRyZXNzQ2FuZGlkYXRlcygiaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJj Z2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIkdlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIik7Cisg CisgUGxhY2VNYW5hZ2VyRW5naW5lRXNyaTo6UGxhY2VNYW5hZ2VyRW5naW5lRXNyaShjb25zdCBR VmFyaWFudE1hcCAmcGFyYW1ldGVycywgUUdlb1NlcnZpY2VQcm92aWRlcjo6RXJyb3IgKmVycm9y LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmlu ZyAqZXJyb3JTdHJpbmcpIDoKK1N1Ym1vZHVsZSBxdG11bHRpbWVkaWEgZjAzNDQwNzkuLjBkN2Nj MzNhOgorZGlmZiAtLWdpdCBhL3F0bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3Fh dWRpb2lucHV0X3B1bHNlLmNwcCBiL3F0bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlv L3FhdWRpb2lucHV0X3B1bHNlLmNwcAoraW5kZXggMmI1MzI1MTMyLi5iNjhiNGFmMWIgMTAwNjQ0 CistLS0gYS9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1dF9w dWxzZS5jcHAKKysrKyBiL3F0bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRp b2lucHV0X3B1bHNlLmNwcAorQEAgLTQwMiw2ICs0MDIsOCBAQCBpbnQgUVB1bHNlQXVkaW9JbnB1 dDo6Ynl0ZXNSZWFkeSgpIGNvbnN0CisgCisgcWludDY0IFFQdWxzZUF1ZGlvSW5wdXQ6OnJlYWQo Y2hhciAqZGF0YSwgcWludDY0IGxlbikKKyB7CisrICAgIFFfQVNTRVJUKGRhdGEgIT0gbnVsbHB0 ciB8fCBsZW4gPT0gMCk7CisrCisgICAgIG1fYnl0ZXNBdmFpbGFibGUgPSBjaGVja0J5dGVzUmVh ZHkoKTsKKyAKKyAgICAgc2V0RXJyb3IoUUF1ZGlvOjpOb0Vycm9yKTsKK0BAIC00MTEsNyArNDEz LDggQEAgcWludDY0IFFQdWxzZUF1ZGlvSW5wdXQ6OnJlYWQoY2hhciAqZGF0YSwgcWludDY0IGxl bikKKyAKKyAgICAgaWYgKCFtX3B1bGxNb2RlICYmICFtX3RlbXBCdWZmZXIuaXNFbXB0eSgpKSB7 CisgICAgICAgICByZWFkQnl0ZXMgPSBxTWluKHN0YXRpY19jYXN0PGludD4obGVuKSwgbV90ZW1w QnVmZmVyLnNpemUoKSk7CistICAgICAgICBtZW1jcHkoZGF0YSwgbV90ZW1wQnVmZmVyLmNvbnN0 RGF0YSgpLCByZWFkQnl0ZXMpOworKyAgICAgICAgaWYgKHJlYWRCeXRlcykKKysgICAgICAgICAg ICBtZW1jcHkoZGF0YSwgbV90ZW1wQnVmZmVyLmNvbnN0RGF0YSgpLCByZWFkQnl0ZXMpOworICAg ICAgICAgbV90b3RhbFRpbWVWYWx1ZSArPSByZWFkQnl0ZXM7CisgCisgICAgICAgICBpZiAocmVh ZEJ5dGVzIDwgbV90ZW1wQnVmZmVyLnNpemUoKSkgeworQEAgLTUwMiw5ICs1MDUsMTAgQEAgcWlu dDY0IFFQdWxzZUF1ZGlvSW5wdXQ6OnJlYWQoY2hhciAqZGF0YSwgcWludDY0IGxlbikKKyAKKyB2 b2lkIFFQdWxzZUF1ZGlvSW5wdXQ6OmFwcGx5Vm9sdW1lKGNvbnN0IHZvaWQgKnNyYywgdm9pZCAq ZGVzdCwgaW50IGxlbikKKyB7CisrICAgIFFfQVNTRVJUKChzcmMgJiYgZGVzdCkgfHwgbGVuID09 IDApOworICAgICBpZiAobV92b2x1bWUgPCAxLmYpCisgICAgICAgICBRQXVkaW9IZWxwZXJJbnRl cm5hbDo6cU11bHRpcGx5U2FtcGxlcyhtX3ZvbHVtZSwgbV9mb3JtYXQsIHNyYywgZGVzdCwgbGVu KTsKKy0gICAgZWxzZQorKyAgICBlbHNlIGlmIChsZW4pCisgICAgICAgICBtZW1jcHkoZGVzdCwg c3JjLCBsZW4pOworIH0KKyAKK1N1Ym1vZHVsZSBxdHBpbSAwMmVmZWY1ZS4uLmY5YThmMGZjIChj b21taXRzIG5vdCBwcmVzZW50KQorU3VibW9kdWxlIHF0cXVpY2szZCBiODVjZjYyMi4uNDdkZWZj OGI6CitkaWZmIC0tZ2l0IGEvcXRxdWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fz c2ltcC9hc3NpbXAucHJvIGIvcXRxdWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fz c2ltcC9hc3NpbXAucHJvCitpbmRleCBjYTVjNDk5ZS4uMTc0YTA3NWIgMTAwNjQ0CistLS0gYS9x dHF1aWNrM2Qvc3JjL3BsdWdpbnMvYXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8KKysr KyBiL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9hc3NpbXAvYXNzaW1wLnBy bworQEAgLTEwLDcgKzEwLDcgQEAgUVRfRk9SX0NPTkZJRyArPSBhc3NldGltcG9ydGVycy1wcml2 YXRlCisgaW5jbHVkZSgkJE9VVF9QV0QvLi4vcXRhc3NldGltcG9ydGVycy1jb25maWcucHJpKQor IAorIHF0Q29uZmlnKHN5c3RlbS1hc3NpbXApOiFpZihjcm9zc19jb21waWxlOmhvc3RfYnVpbGQp IHsKKy0gICAgUU1BS0VfVVNFX1BSSVZBVEUgKz0gYXNzaW1wCisrICAgIFFNQUtFX1VTRV9QUklW QVRFICs9IHF1aWNrM2QtYXNzaW1wCisgfSBlbHNlIHsKKyAgICAgaW5jbHVkZSguLi8uLi8uLi8z cmRwYXJ0eS9hc3NpbXAvYXNzaW1wLnByaSkKKyB9CitTdWJtb2R1bGUgcXRxdWlja2NvbnRyb2xz MiAzYTY1N2RjMC4uNTZjZTgyMzM6CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMv aW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwIGIvcXRxdWlj a2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1l bnUuY3BwCitpbmRleCBlNWZlNzM0ZjcuLmUzNjkyMjc3NSAxMDA2NDQKKy0tLSBhL3F0cXVpY2tj b250cm9sczIvc3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51 LmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRz L3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwCitAQCAtMzgsNiArMzgsNyBAQAorICNpbmNsdWRlICJx d2lkZ2V0cGxhdGZvcm1tZW51aXRlbV9wLmgiCisgCisgI2luY2x1ZGUgPFF0R3VpL3F3aW5kb3cu aD4KKysjaW5jbHVkZSA8UXRHdWkvcHJpdmF0ZS9xaGlnaGRwaXNjYWxpbmdfcC5oPgorICNpbmNs dWRlIDxRdFdpZGdldHMvcW1lbnUuaD4KKyAjaW5jbHVkZSA8UXRXaWRnZXRzL3FhY3Rpb24uaD4K KyAKK0BAIC0xNDUsNyArMTQ2LDcgQEAgdm9pZCBRV2lkZ2V0UGxhdGZvcm1NZW51OjpzaG93UG9w dXAoY29uc3QgUVdpbmRvdyAqd2luZG93LCBjb25zdCBRUmVjdCAmdGFyZ2V0UmUKKyAKKyAgICAg UVBvaW50IHRhcmdldFBvcyA9IHRhcmdldFJlY3QuYm90dG9tTGVmdCgpOworICAgICBpZiAod2lu ZG93KQorLSAgICAgICAgdGFyZ2V0UG9zID0gd2luZG93LT5tYXBUb0dsb2JhbCh0YXJnZXRQb3Mp OworKyAgICAgICAgdGFyZ2V0UG9zID0gd2luZG93LT5tYXBUb0dsb2JhbChRSGlnaERwaTo6ZnJv bU5hdGl2ZUxvY2FsUG9zaXRpb24odGFyZ2V0UG9zLCB3aW5kb3cpKTsKKyAKKyAgICAgY29uc3Qg UVdpZGdldFBsYXRmb3JtTWVudUl0ZW0gKndpZGdldEl0ZW0gPSBxb2JqZWN0X2Nhc3Q8Y29uc3Qg UVdpZGdldFBsYXRmb3JtTWVudUl0ZW0gKj4oaXRlbSk7CisgICAgIG1fbWVudS0+cG9wdXAodGFy Z2V0UG9zLCB3aWRnZXRJdGVtID8gd2lkZ2V0SXRlbS0+YWN0aW9uKCkgOiBudWxscHRyKTsKK2Rp ZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJz dHJhY3RidXR0b24uY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3Fx dWlja2Fic3RyYWN0YnV0dG9uLmNwcAoraW5kZXggOTUwZTRlMDk5Li5iODFmYmVhMGIgMTAwNjQ0 CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJh Y3RidXR0b24uY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIv cXF1aWNrYWJzdHJhY3RidXR0b24uY3BwCitAQCAtMzg3LDYgKzM4NywxNyBAQCB2b2lkIFFRdWlj a0Fic3RyYWN0QnV0dG9uUHJpdmF0ZTo6aXRlbUltcGxpY2l0SGVpZ2h0Q2hhbmdlZChRUXVpY2tJ dGVtICppdGVtKQorICAgICAgICAgZW1pdCBxLT5pbXBsaWNpdEluZGljYXRvckhlaWdodENoYW5n ZWQoKTsKKyB9CisgCisrdm9pZCBRUXVpY2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6Oml0ZW1EZXN0 cm95ZWQoUVF1aWNrSXRlbSAqaXRlbSkKKyt7CisrICAgIFFfUShRUXVpY2tBYnN0cmFjdEJ1dHRv bik7CisrICAgIFFRdWlja0NvbnRyb2xQcml2YXRlOjppdGVtRGVzdHJveWVkKGl0ZW0pOworKyAg ICBpZiAoaXRlbSA9PSBpbmRpY2F0b3IpIHsKKysgICAgICAgIGluZGljYXRvciA9IG51bGxwdHI7 CisrICAgICAgICBlbWl0IHEtPmltcGxpY2l0SW5kaWNhdG9yV2lkdGhDaGFuZ2VkKCk7CisrICAg ICAgICBlbWl0IHEtPmltcGxpY2l0SW5kaWNhdG9ySGVpZ2h0Q2hhbmdlZCgpOworKyAgICB9Cisr fQorKworIFFRdWlja0Fic3RyYWN0QnV0dG9uICpRUXVpY2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6 OmZpbmRDaGVja2VkQnV0dG9uKCkgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRUXVpY2tBYnN0 cmFjdEJ1dHRvbik7CitAQCAtMTE3Niw2ICsxMTg3LDEyIEBAIFFBY2Nlc3NpYmxlOjpSb2xlIFFR dWlja0Fic3RyYWN0QnV0dG9uOjphY2Nlc3NpYmxlUm9sZSgpIGNvbnN0CisgICAgIH0KKyAgICAg cmV0dXJuIFFBY2Nlc3NpYmxlOjpCdXR0b247CisgfQorKworK3ZvaWQgUVF1aWNrQWJzdHJhY3RC dXR0b246OmFjY2Vzc2libGVQcmVzc0FjdGlvbigpCisreworKyAgICBRX0QoUVF1aWNrQWJzdHJh Y3RCdXR0b24pOworKyAgICBkLT50cmlnZ2VyKCk7CisrfQorICNlbmRpZgorIAorIFFUX0VORF9O QU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRl czIvcXF1aWNrYWJzdHJhY3RidXR0b25fcC5oIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0 ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3AuaAoraW5kZXggMGZhNDg5ODBlLi5hYjY2 MjIwZDAgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIv cXF1aWNrYWJzdHJhY3RidXR0b25fcC5oCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlj a3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcC5oCitAQCAtMjA5LDYgKzIwOSw3IEBA IHByb3RlY3RlZDoKKyAjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisgICAgIHZvaWQgYWNj ZXNzaWJpbGl0eUFjdGl2ZUNoYW5nZWQoYm9vbCBhY3RpdmUpIG92ZXJyaWRlOworICAgICBRQWNj ZXNzaWJsZTo6Um9sZSBhY2Nlc3NpYmxlUm9sZSgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBRX0lO Vk9LQUJMRSB2b2lkIGFjY2Vzc2libGVQcmVzc0FjdGlvbigpOworICNlbmRpZgorIAorIHByaXZh dGU6CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3Fx dWlja2Fic3RyYWN0YnV0dG9uX3BfcC5oIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1w bGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3BfcC5oCitpbmRleCA5MjkxYzFhODcuLmI3Mjk3 MjBmMiAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2thYnN0cmFjdGJ1dHRvbl9wX3AuaAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVp Y2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3BfcC5oCitAQCAtMTA5LDYgKzEwOSw3 IEBAIHB1YmxpYzoKKyAKKyAgICAgdm9pZCBpdGVtSW1wbGljaXRXaWR0aENoYW5nZWQoUVF1aWNr SXRlbSAqaXRlbSkgb3ZlcnJpZGU7CisgICAgIHZvaWQgaXRlbUltcGxpY2l0SGVpZ2h0Q2hhbmdl ZChRUXVpY2tJdGVtICppdGVtKSBvdmVycmlkZTsKKysgICAgdm9pZCBpdGVtRGVzdHJveWVkKFFR dWlja0l0ZW0gKml0ZW0pIG92ZXJyaWRlOworIAorICAgICAvLyBjb3BpZWQgZnJvbSBxYWJzdHJh Y3RidXR0b24uY3BwCisgICAgIHN0YXRpYyBjb25zdCBpbnQgQVVUT19SRVBFQVRfREVMQVkgPSAz MDA7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3Fx dWlja2FjdGlvbi5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1 aWNrYWN0aW9uLmNwcAoraW5kZXggMjA0MWU3NzQxLi44NjEwY2RmYWUgMTAwNjQ0CistLS0gYS9x dHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcAorKysr IGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAK K0BAIC0xNDUsNyArMTQ1LDcgQEAgaW50IFFRdWlja0FjdGlvblByaXZhdGU6OlNob3J0Y3V0RW50 cnk6OnNob3J0Y3V0SWQoKSBjb25zdAorIAorIHZvaWQgUVF1aWNrQWN0aW9uUHJpdmF0ZTo6U2hv cnRjdXRFbnRyeTo6Z3JhYihjb25zdCBRS2V5U2VxdWVuY2UgJnNob3J0Y3V0LCBib29sIGVuYWJs ZWQpCisgeworLSAgICBpZiAoc2hvcnRjdXQuaXNFbXB0eSgpKQorKyAgICBpZiAoc2hvcnRjdXQu aXNFbXB0eSgpIHx8IG1fc2hvcnRjdXRJZCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgUXQ6 OlNob3J0Y3V0Q29udGV4dCBjb250ZXh0ID0gUXQ6OldpbmRvd1Nob3J0Y3V0OyAvLyBUT0RPCitk aWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Nv bnRhaW5lci5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNr Y29udGFpbmVyLmNwcAoraW5kZXggZjM4YzJiMDljLi42ZWVkMmEwMjQgMTAwNjQ0CistLS0gYS9x dHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udGFpbmVyLmNwcAor KysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5l ci5jcHAKK0BAIC0yMjUsNiArMjI1LDcgQEAgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjpj bGVhbnVwKCkKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChjb250ZW50TW9kZWwsICZRUW1sT2Jq ZWN0TW9kZWw6OmNvdW50Q2hhbmdlZCwgcSwgJlFRdWlja0NvbnRhaW5lcjo6Y291bnRDaGFuZ2Vk KTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChjb250ZW50TW9kZWwsICZRUW1sT2JqZWN0TW9k ZWw6OmNoaWxkcmVuQ2hhbmdlZCwgcSwgJlFRdWlja0NvbnRhaW5lcjo6Y29udGVudENoaWxkcmVu Q2hhbmdlZCk7CisgICAgIGRlbGV0ZSBjb250ZW50TW9kZWw7CisrICAgIGNvbnRlbnRNb2RlbCA9 IG51bGxwdHI7CisgfQorIAorIFFRdWlja0l0ZW0gKlFRdWlja0NvbnRhaW5lclByaXZhdGU6Oml0 ZW1BdChpbnQgaW5kZXgpIGNvbnN0CitAQCAtNDM2LDcgKzQzNyw3IEBAIHZvaWQgUVF1aWNrQ29u dGFpbmVyUHJpdmF0ZTo6Y29udGVudENoaWxkcmVuX2NsZWFyKFFRbWxMaXN0UHJvcGVydHk8UVF1 aWNrSXRlbT4KKyB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRXaWR0 aCgpCisgeworICAgICBRX1EoUVF1aWNrQ29udGFpbmVyKTsKKy0gICAgaWYgKGhhc0NvbnRlbnRX aWR0aCB8fCBxRnV6enlDb21wYXJlKGNvbnRlbnRXaWR0aCwgaW1wbGljaXRDb250ZW50V2lkdGgp KQorKyAgICBpZiAoaGFzQ29udGVudFdpZHRoIHx8IHFGdXp6eUNvbXBhcmUoY29udGVudFdpZHRo LCBpbXBsaWNpdENvbnRlbnRXaWR0aCkgfHwgIWNvbnRlbnRNb2RlbCkKKyAgICAgICAgIHJldHVy bjsKKyAKKyAgICAgY29udGVudFdpZHRoID0gaW1wbGljaXRDb250ZW50V2lkdGg7CitAQCAtNDQ2 LDcgKzQ0Nyw3IEBAIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6dXBkYXRlQ29udGVudFdp ZHRoKCkKKyB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRIZWlnaHQo KQorIHsKKyAgICAgUV9RKFFRdWlja0NvbnRhaW5lcik7CistICAgIGlmIChoYXNDb250ZW50SGVp Z2h0IHx8IHFGdXp6eUNvbXBhcmUoY29udGVudEhlaWdodCwgaW1wbGljaXRDb250ZW50SGVpZ2h0 KSkKKysgICAgaWYgKGhhc0NvbnRlbnRIZWlnaHQgfHwgcUZ1enp5Q29tcGFyZShjb250ZW50SGVp Z2h0LCBpbXBsaWNpdENvbnRlbnRIZWlnaHQpIHx8ICFjb250ZW50TW9kZWwpCisgICAgICAgICBy ZXR1cm47CisgCisgICAgIGNvbnRlbnRIZWlnaHQgPSBpbXBsaWNpdENvbnRlbnRIZWlnaHQ7Citk aWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Nv bnRyb2wuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Nv bnRyb2wuY3BwCitpbmRleCBiYmJkMGU2MjIuLjFmNGI0NzM0MyAxMDA2NDQKKy0tLSBhL3F0cXVp Y2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcAorKysrIGIv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwCitA QCAtODQ1LDYgKzg0NSwxMyBAQCB2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjpleGVjdXRlQmFj a2dyb3VuZChib29sIGNvbXBsZXRlKQorICAgICAgICAgcXVpY2tDb21wbGV0ZURlZmVycmVkKHEs IGJhY2tncm91bmROYW1lKCksIGJhY2tncm91bmQpOworIH0KKyAKKysvKgorKyAgICBcaW50ZXJu YWwKKysKKysgICAgSGlkZXMgYW4gaXRlbSB0aGF0IHdhcyByZXBsYWNlZCBieSBhIG5ld2VyIG9u ZSwgcmF0aGVyIHRoYW4KKysgICAgZGVsZXRpbmcgaXQsIGFzIHRoZSBpdGVtIGlzIHR5cGljYWxs eSBjcmVhdGVkIGluIFFNTCBhbmQgaGVuY2UKKysgICAgd2UgZG9uJ3Qgb3duIGl0LgorKyovCisg dm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6aGlkZU9sZEl0ZW0oUVF1aWNrSXRlbSAqaXRlbSkK KyB7CisgICAgIGlmICghaXRlbSkKK0BAIC04NjMsNiArODcwLDI5IEBAIHZvaWQgUVF1aWNrQ29u dHJvbFByaXZhdGU6OmhpZGVPbGRJdGVtKFFRdWlja0l0ZW0gKml0ZW0pCisgI2VuZGlmCisgfQor IAorKy8qCisrICAgIFxpbnRlcm5hbAorKworKyAgICBOYW1lZCAidW5oaWRlIiBiZWNhdXNlIGl0 J3MgdXNlZCBmb3IgY2FzZXMgd2hlcmUgYW4gaXRlbQorKyAgICB0aGF0IHdhcyBwcmV2aW91c2x5 IGhpZGRlbiBieSBcbCBoaWRlT2xkSXRlbSgpIHdhbnRzIHRvIGJlCisrICAgIHNob3duIGJ5IGEg Y29udHJvbCBhZ2Fpbiwgc3VjaCBhcyBhIFNjcm9sbEJhciBpbiBTY3JvbGxWaWV3LgorKyovCisr dm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dW5oaWRlT2xkSXRlbShRUXVpY2tDb250cm9sICpj b250cm9sLCBRUXVpY2tJdGVtICppdGVtKQorK3sKKysgICAgUV9BU1NFUlQoaXRlbSk7CisrICAg IHFDRGVidWcobGNJdGVtTWFuYWdlbWVudCkgPDwgInVuaGlkaW5nIG9sZCBpdGVtIiA8PCBpdGVt OworKworKyAgICBpdGVtLT5zZXRWaXNpYmxlKHRydWUpOworKyAgICBpdGVtLT5zZXRQYXJlbnRJ dGVtKGNvbnRyb2wpOworKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgLy8g QWRkIHRoZSBpdGVtIGJhY2sgaW4gdG8gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KKysgICAgUVF1 aWNrQWNjZXNzaWJsZUF0dGFjaGVkICphY2Nlc3NpYmxlID0gYWNjZXNzaWJsZUF0dGFjaGVkKGl0 ZW0pOworKyAgICBpZiAoYWNjZXNzaWJsZSkKKysgICAgICAgIGFjY2Vzc2libGUtPnNldElnbm9y ZWQoZmFsc2UpOworKyNlbmRpZgorK30KKysKKyB2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1 cGRhdGVCYXNlbGluZU9mZnNldCgpCisgeworICAgICBRX1EoUVF1aWNrQ29udHJvbCk7CitkaWZm IC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRy b2xfcF9wLmggYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29u dHJvbF9wX3AuaAoraW5kZXggOGU5NzkwNzllLi5hNmU2MjRjOTEgMTAwNjQ0CistLS0gYS9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbF9wX3AuaAorKysr IGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9w LmgKK0BAIC0xNzMsNiArMTczLDcgQEAgcHVibGljOgorICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0 ZUJhY2tncm91bmQoYm9vbCBjb21wbGV0ZSA9IGZhbHNlKTsKKyAKKyAgICAgc3RhdGljIHZvaWQg aGlkZU9sZEl0ZW0oUVF1aWNrSXRlbSAqaXRlbSk7CisrICAgIHN0YXRpYyB2b2lkIHVuaGlkZU9s ZEl0ZW0oUVF1aWNrQ29udHJvbCAqY29udHJvbCwgUVF1aWNrSXRlbSAqaXRlbSk7CisgCisgICAg IHZvaWQgdXBkYXRlQmFzZWxpbmVPZmZzZXQoKTsKKyAKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcCBiL3F0 cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tkaWFsb2didXR0b25ib3gu Y3BwCitpbmRleCBlNmRiMTRlYjUuLjYxOTdkMTU0NyAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250 cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tkaWFsb2didXR0b25ib3guY3BwCisrKysg Yi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9u Ym94LmNwcAorQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgUVJlY3RGIGFsaWduZWRSZWN0KFF0 OjpMYXlvdXREaXJlY3Rpb24gZGlyZWN0aW9uLCBRdDo6QWxpZ25tZW50IGFsaWdubWVudAorIHZv aWQgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6cmVzaXplQ29udGVudCgpCisgeworICAg ICBRX1EoUVF1aWNrRGlhbG9nQnV0dG9uQm94KTsKKy0gICAgaWYgKCFjb250ZW50SXRlbSkKKysg ICAgaWYgKCFjb250ZW50SXRlbSB8fCAhY29udGVudE1vZGVsKQorICAgICAgICAgcmV0dXJuOwor IAorICAgICBRUmVjdEYgZ2VvbWV0cnkgPSBxLT5ib3VuZGluZ1JlY3QoKS5hZGp1c3RlZChxLT5s ZWZ0UGFkZGluZygpLCBxLT50b3BQYWRkaW5nKCksIC1xLT5yaWdodFBhZGRpbmcoKSwgLXEtPmJv dHRvbVBhZGRpbmcoKSk7CitAQCAtMzIyLDYgKzMyMiw5IEBAIHZvaWQgUVF1aWNrRGlhbG9nQnV0 dG9uQm94UHJpdmF0ZTo6dXBkYXRlTGF5b3V0KCkKKyBxcmVhbCBRUXVpY2tEaWFsb2dCdXR0b25C b3hQcml2YXRlOjpnZXRDb250ZW50V2lkdGgoKSBjb25zdAorIHsKKyAgICAgUV9RKGNvbnN0IFFR dWlja0RpYWxvZ0J1dHRvbkJveCk7CisrICAgIGlmICghY29udGVudE1vZGVsKQorKyAgICAgICAg cmV0dXJuIDA7CisrCisgICAgIGNvbnN0IGludCBjb3VudCA9IGNvbnRlbnRNb2RlbC0+Y291bnQo KTsKKyAgICAgY29uc3QgcXJlYWwgdG90YWxTcGFjaW5nID0gcU1heCgwLCBjb3VudCAtIDEpICog c3BhY2luZzsKKyAgICAgcXJlYWwgdG90YWxXaWR0aCA9IHRvdGFsU3BhY2luZzsKK0BAIC0zNDEs NiArMzQ0LDkgQEAgcXJlYWwgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6Z2V0Q29udGVu dFdpZHRoKCkgY29uc3QKKyBxcmVhbCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpnZXRD b250ZW50SGVpZ2h0KCkgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRUXVpY2tEaWFsb2dCdXR0 b25Cb3gpOworKyAgICBpZiAoIWNvbnRlbnRNb2RlbCkKKysgICAgICAgIHJldHVybiAwOworKwor ICAgICBjb25zdCBpbnQgY291bnQgPSBjb250ZW50TW9kZWwtPmNvdW50KCk7CisgICAgIHFyZWFs IG1heEhlaWdodCA9IDA7CisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewor ZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tv dmVybGF5LmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tv dmVybGF5LmNwcAoraW5kZXggOTFiZDU5MTg0Li4wY2U1MThmODQgMTAwNjQ0CistLS0gYS9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAKKysrKyBi L3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcAor QEAgLTM5OSw4ICszOTksMTEgQEAgdm9pZCBRUXVpY2tPdmVybGF5OjppdGVtQ2hhbmdlKEl0ZW1D aGFuZ2UgY2hhbmdlLCBjb25zdCBJdGVtQ2hhbmdlRGF0YSAmZGF0YSkKKyAgICAgUV9EKFFRdWlj a092ZXJsYXkpOworICAgICBRUXVpY2tJdGVtOjppdGVtQ2hhbmdlKGNoYW5nZSwgZGF0YSk7Cisg CistICAgIGlmIChjaGFuZ2UgPT0gSXRlbUNoaWxkQWRkZWRDaGFuZ2UgfHwgY2hhbmdlID09IEl0 ZW1DaGlsZFJlbW92ZWRDaGFuZ2UpCisrICAgIGlmIChjaGFuZ2UgPT0gSXRlbUNoaWxkQWRkZWRD aGFuZ2UgfHwgY2hhbmdlID09IEl0ZW1DaGlsZFJlbW92ZWRDaGFuZ2UpIHsKKyAgICAgICAgIHNl dFZpc2libGUoIWQtPmFsbERyYXdlcnMuaXNFbXB0eSgpIHx8ICFjaGlsZEl0ZW1zKCkuaXNFbXB0 eSgpKTsKKysgICAgICAgIGlmIChkYXRhLml0ZW0tPnBhcmVudCgpID09IGQtPm1vdXNlR3JhYmJl clBvcHVwKQorKyAgICAgICAgICAgIGQtPnNldE1vdXNlR3JhYmJlclBvcHVwKG51bGxwdHIpOwor KyAgICB9CisgfQorIAorIHZvaWQgUVF1aWNrT3ZlcmxheTo6Z2VvbWV0cnlDaGFuZ2VkKGNvbnN0 IFFSZWN0RiAmbmV3R2VvbWV0cnksIGNvbnN0IFFSZWN0RiAmb2xkR2VvbWV0cnkpCitkaWZmIC0t Z2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJh ci5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrc2Nyb2xs YmFyLmNwcAoraW5kZXggNGUyZjUwOWRiLi4xYzRiMzA4Y2QgMTAwNjQ0CistLS0gYS9xdHF1aWNr Y29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrc2Nyb2xsYmFyLmNwcAorKysrIGIv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAK K0BAIC03OTcsNiArNzk3LDE0IEBAIHZvaWQgUVF1aWNrU2Nyb2xsQmFyQXR0YWNoZWRQcml2YXRl Ojppbml0SG9yaXpvbnRhbCgpCisgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50ID09IGZsaWNrYWJs ZS0+cGFyZW50SXRlbSgpKQorICAgICAgICAgaG9yaXpvbnRhbC0+c3RhY2tBZnRlcihmbGlja2Fi bGUpOworIAorKyAgICAvLyBJZiBhIHNjcm9sbCBiYXIgd2FzIHByZXZpb3VzbHkgaGlkZGVuIChk dWUgdG8gZS5nLiBzZXR0aW5nIGEgbmV3IGNvbnRlbnRJdGVtCisrICAgIC8vIG9uIGEgU2Nyb2xs VmlldyksIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgdW4taGlkZSBpdC4KKysgICAgLy8g V2UgZG9uJ3QgYm90aGVyIGNoZWNraW5nIGlmIHRoZSBpdGVtIGlzIGFjdHVhbGx5IHRoZSBvbGQg b25lLCBiZWNhdXNlCisrICAgIC8vIGlmIGl0J3Mgbm90LCBhbGwgb2YgdGhlIHRoaW5ncyB0aGUg ZnVuY3Rpb24gZG9lcyAoc2V0dGluZyBwYXJlbnQsIHZpc2liaWxpdHksIGV0Yy4pCisrICAgIC8v IHNob3VsZCBiZSBuby1vcHMgYW55d2F5LgorKyAgICBpZiAoYXV0byBjb250cm9sID0gcW9iamVj dF9jYXN0PFFRdWlja0NvbnRyb2wqPihxX3B0ci0+cGFyZW50KCkpKQorKyAgICAgICAgUVF1aWNr Q29udHJvbFByaXZhdGU6OnVuaGlkZU9sZEl0ZW0oY29udHJvbCwgaG9yaXpvbnRhbCk7CisrCisg ICAgIGxheW91dEhvcml6b250YWwoKTsKKyAgICAgaG9yaXpvbnRhbC0+c2V0U2l6ZShhcmVhLT5w cm9wZXJ0eSgid2lkdGhSYXRpbyIpLnRvUmVhbCgpKTsKKyAgICAgaG9yaXpvbnRhbC0+c2V0UG9z aXRpb24oYXJlYS0+cHJvcGVydHkoInhQb3NpdGlvbiIpLnRvUmVhbCgpKTsKK0BAIC04MTgsNiAr ODI2LDkgQEAgdm9pZCBRUXVpY2tTY3JvbGxCYXJBdHRhY2hlZFByaXZhdGU6OmluaXRWZXJ0aWNh bCgpCisgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50ID09IGZsaWNrYWJsZS0+cGFyZW50SXRlbSgp KQorICAgICAgICAgdmVydGljYWwtPnN0YWNrQWZ0ZXIoZmxpY2thYmxlKTsKKyAKKysgICAgaWYg KGF1dG8gY29udHJvbCA9IHFvYmplY3RfY2FzdDxRUXVpY2tDb250cm9sKj4ocV9wdHItPnBhcmVu dCgpKSkKKysgICAgICAgIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1bmhpZGVPbGRJdGVtKGNvbnRy b2wsIHZlcnRpY2FsKTsKKysKKyAgICAgbGF5b3V0VmVydGljYWwoKTsKKyAgICAgdmVydGljYWwt PnNldFNpemUoYXJlYS0+cHJvcGVydHkoImhlaWdodFJhdGlvIikudG9SZWFsKCkpOworICAgICB2 ZXJ0aWNhbC0+c2V0UG9zaXRpb24oYXJlYS0+cHJvcGVydHkoInlQb3NpdGlvbiIpLnRvUmVhbCgp KTsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0 YS90c3Rfc2Nyb2xsdmlldy5xbWwgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJv bHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwKK2luZGV4IDBlOGIwODM1Mi4uY2Q0OTMxMTg0IDEw MDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0 X3Njcm9sbHZpZXcucW1sCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJv bHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwKK0BAIC01NzYsNCArNTc2LDUxIEBAIFRlc3RDYXNl IHsKKyAgICAgICAgIHZlcmlmeShuZXdIb3Jpem9udGFsU2Nyb2xsQmFyLnZpc2libGUpCisgICAg ICAgICB2ZXJpZnkoIW9sZEhvcml6b250YWxTY3JvbGxCYXIudmlzaWJsZSkKKyAgICAgfQorKwor KyAgICBDb21wb25lbnQgeworKyAgICAgICAgaWQ6IGJpbmRpbmdUb0NvbnRlbnRJdGVtQW5kU3Rh bmRhbG9uZUZsaWNrYWJsZQorKworKyAgICAgICAgSXRlbSB7CisrICAgICAgICAgICAgd2lkdGg6 IDIwMAorKyAgICAgICAgICAgIGhlaWdodDogMjAwCisrCisrICAgICAgICAgICAgcHJvcGVydHkg YWxpYXMgc2Nyb2xsVmlldzogc2Nyb2xsVmlldworKworKyAgICAgICAgICAgIFNjcm9sbFZpZXcg eworKyAgICAgICAgICAgICAgICBpZDogc2Nyb2xsVmlldworKyAgICAgICAgICAgICAgICBhbmNo b3JzLmZpbGw6IHBhcmVudAorKyAgICAgICAgICAgICAgICBjb250ZW50SXRlbTogbGlzdFZpZXcK KysKKysgICAgICAgICAgICAgICAgcHJvcGVydHkgSXRlbSBzb21lQmluZGluZzogY29udGVudEl0 ZW0KKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgTGlzdFZpZXcgeworKyAgICAgICAgICAg ICAgICBpZDogbGlzdFZpZXcKKysgICAgICAgICAgICAgICAgbW9kZWw6IDEwCisrICAgICAgICAg ICAgICAgIGRlbGVnYXRlOiBJdGVtRGVsZWdhdGUgeworKyAgICAgICAgICAgICAgICAgICAgdGV4 dDogbW9kZWxEYXRhCisrICAgICAgICAgICAgICAgICAgICB3aWR0aDogbGlzdFZpZXcud2lkdGgK KysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgfQor KworKyAgICAvLyBUZXN0cyB0aGF0IHNjcm9sbCBiYXJzIHNob3cgdXAgZm9yIGEgU2Nyb2xsVmll dyB3aGVyZQorKyAgICAvLyAtIGl0cyBjb250ZW50SXRlbSBpcyBkZWNsYXJlZCBhcyBhIHN0YW5k YWxvbmUsIHNlcGFyYXRlIGl0ZW0KKysgICAgLy8gLSB0aGVyZSBpcyBhIGJpbmRpbmcgdG8gY29u dGVudEl0ZW0gKHdoaWNoIGNhdXNlcyBhIGRlZmF1bHQgRmxpY2thYmxlIHRvIGJlIGNyZWF0ZWQp CisrICAgIGZ1bmN0aW9uIHRlc3RfYmluZGluZ1RvQ29udGVudEl0ZW1BbmRTdGFuZGFsb25lRmxp Y2thYmxlKCkgeworKyAgICAgICAgbGV0IHJvb3QgPSBjcmVhdGVUZW1wb3JhcnlPYmplY3QoYmlu ZGluZ1RvQ29udGVudEl0ZW1BbmRTdGFuZGFsb25lRmxpY2thYmxlLCB0ZXN0Q2FzZSkKKysgICAg ICAgIHZlcmlmeShyb290KQorKworKyAgICAgICAgbGV0IGNvbnRyb2wgPSByb290LnNjcm9sbFZp ZXcKKysgICAgICAgIGxldCB2ZXJ0aWNhbFNjcm9sbEJhciA9IGNvbnRyb2wuU2Nyb2xsQmFyLnZl cnRpY2FsCisrICAgICAgICBsZXQgaG9yaXpvbnRhbFNjcm9sbEJhciA9IGNvbnRyb2wuU2Nyb2xs QmFyLmhvcml6b250YWwKKysgICAgICAgIGNvbXBhcmUodmVydGljYWxTY3JvbGxCYXIucGFyZW50 LCBjb250cm9sKQorKyAgICAgICAgY29tcGFyZShob3Jpem9udGFsU2Nyb2xsQmFyLnBhcmVudCwg Y29udHJvbCkKKysgICAgICAgIHZlcmlmeSh2ZXJ0aWNhbFNjcm9sbEJhci52aXNpYmxlKQorKyAg ICAgICAgdmVyaWZ5KGhvcml6b250YWxTY3JvbGxCYXIudmlzaWJsZSkKKysKKysgICAgICAgIG1v dXNlRHJhZyh2ZXJ0aWNhbFNjcm9sbEJhciwgdmVydGljYWxTY3JvbGxCYXIud2lkdGggLyAyLCB2 ZXJ0aWNhbFNjcm9sbEJhci5oZWlnaHQgLyAyLCAwLCA1MCkKKysgICAgICAgIHZlcmlmeSh2ZXJ0 aWNhbFNjcm9sbEJhci5hY3RpdmUpCisrICAgICAgICB2ZXJpZnkoaG9yaXpvbnRhbFNjcm9sbEJh ci5hY3RpdmUpCisrICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0 cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwgYi9xdHF1aWNrY29udHJvbHMyL3Rl c3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFtbAoraW5kZXggYjNmYWI0MWNhLi4x MGI2YmFhMDIgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJv bHMvZGF0YS90c3Rfc3dpdGNoLnFtbAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRv L2NvbnRyb2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwKK0BAIC02MDgsNCArNjA4LDI3IEBAIFRlc3RD YXNlIHsKKyAgICAgICAgIG1vdXNlQ2xpY2soY29udHJvbC5pbmRpY2F0b3IpCisgICAgICAgICB2 ZXJpZnkoY29udHJvbC5hY3RpdmVGb2N1cykKKyAgICAgfQorKworKyAgICBDb21wb25lbnQgewor KyAgICAgICAgaWQ6IGRlbGV0aW9uT3JkZXIxCisrICAgICAgICBJdGVtIHsKKysgICAgICAgICAg ICBJbWFnZSB7IGlkOiBpbm5lckltYWdlIH0KKysgICAgICAgICAgICBTd2l0Y2ggeyBpbmRpY2F0 b3I6IGlubmVySW1hZ2UgfQorKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIENvbXBvbmVudCB7 CisrICAgICAgICBpZDogZGVsZXRpb25PcmRlcjIKKysgICAgICAgIEl0ZW0geworKyAgICAgICAg ICAgIFN3aXRjaCB7IGluZGljYXRvcjogaW5uZXJJbWFnZSB9CisrICAgICAgICAgICAgSW1hZ2Ug eyBpZDogaW5uZXJJbWFnZSB9CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgZnVuY3Rpb24g dGVzdF9kZWxldGlvbk9yZGVyKCkgeworKyAgICAgICAgdmFyIGNvbnRyb2wxID0gY3JlYXRlVGVt cG9yYXJ5T2JqZWN0KGRlbGV0aW9uT3JkZXIxLCB0ZXN0Q2FzZSkKKysgICAgICAgIHZlcmlmeShj b250cm9sMSkKKysgICAgICAgIHZhciBjb250cm9sMiA9IGNyZWF0ZVRlbXBvcmFyeU9iamVjdChk ZWxldGlvbk9yZGVyMiwgdGVzdENhc2UpCisrICAgICAgICB2ZXJpZnkoY29udHJvbDIpCisrICAg IH0KKyB9CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3Bv cHVwL2RhdGEvcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sIGIvcXRxdWlja2NvbnRyb2xz Mi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL2RhdGEvcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24u cW1sCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi45ZTQ1OThiOWYKKy0t LSAvZGV2L251bGwKKysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1 cC9kYXRhL3JlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbAorQEAgLTAsMCArMSw3OCBAQAor Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0 IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8K KysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBU b29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6QlNEJAorKyoqIENvbW1lcmNpYWwg TGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQg bGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNv bW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2Fy ZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWlu ZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29t cGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczov L3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9u IHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisr KioKKysqKiBCU0QgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHlvdSBtYXkgdXNl IHRoaXMgZmlsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEJTRCBsaWNlbnNlCisrKiogYXMgZm9s bG93czoKKysqKgorKyoqICJSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysqKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0 ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisrKiogbWV0Ogor KyoqICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi b3ZlIGNvcHlyaWdodAorKyoqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrKiogICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrKiogICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ciBpbgorKyoqICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy b3ZpZGVkIHdpdGggdGhlCisrKiogICAgIGRpc3RyaWJ1dGlvbi4KKysqKiAgICogTmVpdGhlciB0 aGUgbmFtZSBvZiBUaGUgUXQgQ29tcGFueSBMdGQgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKysqKiAg ICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0 cyBkZXJpdmVkCisrKiogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKysqKgorKyoqCisrKiogVEhJUyBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKyoqICJB UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC VVQgTk9UCisrKiogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisrKiogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKysqKiBPV05FUiBPUiBD T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB TCwKKysqKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D TFVESU5HLCBCVVQgTk9UCisrKiogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisrKiogREFUQSwgT1IgUFJPRklUUzsg T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisrKiog VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU WSwgT1IgVE9SVAorKyoqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKyoqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIgorKyoqCisrKiog JFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKytpbXBvcnQg UXRRdWljayAyLjE1CisraW1wb3J0IFF0UXVpY2suQ29udHJvbHMgMi4xNQorKworK0FwcGxpY2F0 aW9uV2luZG93IHsKKysgICAgaWQ6IHdpbmRvdworKyAgICB3aWR0aDogNDAwCisrICAgIGhlaWdo dDogNDAwCisrICAgIHRpdGxlOiAicmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24iCisrCisrICAg IHByb3BlcnR5IGFsaWFzIHBvcHVwOiBwb3B1cAorKyAgICBwcm9wZXJ0eSBhbGlhcyBtb2RhbFBv cHVwOiBtb2RhbFBvcHVwCisrCisrICAgIFBvcHVwIHsKKysgICAgICAgIGlkOiBwb3B1cAorKyAg ICAgICAgeTogcGFyZW50LmhlaWdodCAtIGhlaWdodAorKyAgICAgICAgd2lkdGg6IDUwCisrICAg ICAgICBoZWlnaHQ6IDUwCisrICAgIH0KKysKKysgICAgUG9wdXAgeworKyAgICAgICAgaWQ6IG1v ZGFsUG9wdXAKKysgICAgICAgIG1vZGFsOiB0cnVlCisrICAgICAgICB5OiBwYXJlbnQuaGVpZ2h0 IC0gaGVpZ2h0CisrICAgICAgICB3aWR0aDogNTAKKysgICAgICAgIGhlaWdodDogNTAKKysgICAg ICAgIGV4aXQ6ICBUcmFuc2l0aW9uIHsgUGF1c2VBbmltYXRpb24geyBkdXJhdGlvbjogMTAwIH0g fQorKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9x cXVpY2twb3B1cC90c3RfcXF1aWNrcG9wdXAuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9h dXRvL3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5jcHAKK2luZGV4IDU0OTUyZDEyOC4uM2Q1 MGUyZGQ0IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3Bv cHVwL3RzdF9xcXVpY2twb3B1cC5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0 by9xcXVpY2twb3B1cC90c3RfcXF1aWNrcG9wdXAuY3BwCitAQCAtMTAwLDYgKzEwMCw3IEBAIHBy aXZhdGUgc2xvdHM6CisgICAgIHZvaWQgaW52aXNpYmxlVG9vbFRpcE9wZW4oKTsKKyAgICAgdm9p ZCBjZW50ZXJJbk92ZXJsYXlXaXRoaW5TdGFja1ZpZXdJdGVtKCk7CisgICAgIHZvaWQgZGVzdHJv eUR1cmluZ0V4aXRUcmFuc2l0aW9uKCk7CisrICAgIHZvaWQgcmVsZWFzZUFmdGVyRXhpdFRyYW5z aXRpb24oKTsKKyB9OworIAorIHZvaWQgdHN0X1FRdWlja1BvcHVwOjppbml0VGVzdENhc2UoKQor QEAgLTE1NzUsNiArMTU3NiwzNCBAQCB2b2lkIHRzdF9RUXVpY2tQb3B1cDo6ZGVzdHJveUR1cmlu Z0V4aXRUcmFuc2l0aW9uKCkKKyAgICAgUVZFUklGWSghYnV0dG9uLT5pc0Rvd24oKSk7CisgfQor IAorK3ZvaWQgdHN0X1FRdWlja1BvcHVwOjpyZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbigpCisr eworKyAgICBRUXVpY2tBcHBsaWNhdGlvbkhlbHBlciBoZWxwZXIodGhpcywgInJlbGVhc2VBZnRl ckV4aXRUcmFuc2l0aW9uLnFtbCIpOworKyAgICBRVkVSSUZZMihoZWxwZXIucmVhZHksIGhlbHBl ci5mYWlsdXJlTWVzc2FnZSgpKTsKKysKKysgICAgUVF1aWNrV2luZG93ICp3aW5kb3cgPSBoZWxw ZXIud2luZG93OworKyAgICB3aW5kb3ctPnNob3coKTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdh aXRGb3JXaW5kb3dBY3RpdmUod2luZG93KSk7CisrCisrICAgIFFRdWlja092ZXJsYXkgKm92ZXJs YXkgPSBRUXVpY2tPdmVybGF5OjpvdmVybGF5KHdpbmRvdyk7CisrICAgIFFRdWlja1BvcHVwICpt b2RhbFBvcHVwID0gd2luZG93LT5wcm9wZXJ0eSgibW9kYWxQb3B1cCIpLnZhbHVlPFFRdWlja1Bv cHVwICo+KCk7CisrICAgIFFRdWlja1BvcHVwICpwb3B1cCA9IHdpbmRvdy0+cHJvcGVydHkoInBv cHVwIikudmFsdWU8UVF1aWNrUG9wdXAgKj4oKTsKKysKKysgICAgbW9kYWxQb3B1cC0+b3Blbigp OworKyAgICBRVFJZX1ZFUklGWShtb2RhbFBvcHVwLT5pc09wZW5lZCgpKTsKKysKKysgICAgUVRl c3Q6Om1vdXNlUHJlc3Mod2luZG93LCBRdDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIsIFFQ b2ludCgxLCAxKSk7CisrICAgIC8vIHdhaXQgdW50aWwgdGhlIHRyYW5zaXRpb24gaXMgZmluaXNo ZWQgYW5kIHRoZSBvdmVybGF5IGhpZGVzIGl0c2VsZgorKyAgICBRVFJZX1ZFUklGWSghb3Zlcmxh eS0+aXNWaXNpYmxlKCkpOworKyAgICBRVGVzdDo6bW91c2VSZWxlYXNlKHdpbmRvdywgUXQ6Okxl ZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyLCBRUG9pbnQoMSwgMSkpOworKworKyAgICBwb3B1cC0+ b3BlbigpOworKyAgICBRVFJZX1ZFUklGWShwb3B1cC0+aXNPcGVuZWQoKSk7CisrICAgIFFUZXN0 Ojptb3VzZUNsaWNrKHdpbmRvdywgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyLCBRUG9p bnQoMSwgMSkpOworKyAgICBRVFJZX1ZFUklGWSghcG9wdXAtPmlzT3BlbmVkKCkpOworK30KKysK KysKKyBRVEVTVF9RVUlDS0NPTlRST0xTX01BSU4odHN0X1FRdWlja1BvcHVwKQorIAorICNpbmNs dWRlICJ0c3RfcXF1aWNrcG9wdXAubW9jIgorU3VibW9kdWxlIHF0c2NyaXB0IDViZTk1Zjk2Li4u NGQ4ZTRiZDIgKGNvbW1pdHMgbm90IHByZXNlbnQpCitTdWJtb2R1bGUgcXRzcGVlY2ggMTdmYzlm ZGUuLjI1NTg0NWUyOgorZGlmZiAtLWdpdCBhL3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVl Y2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNoZC5jcHAgYi9xdHNwZWVjaC9zcmMvcGx1 Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hlci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQuY3BwCitpbmRl eCA2ZWI3NGI4Li5iY2M3ZGQxIDEwMDY0NAorLS0tIGEvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRz L3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcAorKysrIGIvcXRzcGVl Y2gvc3JjL3BsdWdpbnMvdHRzL3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hk LmNwcAorQEAgLTM1Nyw3ICszNTcsOSBAQCBRVmVjdG9yPFFMb2NhbGU+IFFUZXh0VG9TcGVlY2hF bmdpbmVTcGVlY2hkOjphdmFpbGFibGVMb2NhbGVzKCkgY29uc3QKKyAKKyBRVmVjdG9yPFFWb2lj ZT4gUVRleHRUb1NwZWVjaEVuZ2luZVNwZWVjaGQ6OmF2YWlsYWJsZVZvaWNlcygpIGNvbnN0Cisg eworLSAgICByZXR1cm4gbV92b2ljZXMudmFsdWVzKG1fY3VycmVudExvY2FsZS5uYW1lKCkpLnRv VmVjdG9yKCk7CisrICAgIFFMaXN0PFFWb2ljZT4gcmVzdWx0TGlzdCA9IG1fdm9pY2VzLnZhbHVl cyhtX2N1cnJlbnRMb2NhbGUubmFtZSgpKTsKKysgICAgc3RkOjpyZXZlcnNlKHJlc3VsdExpc3Qu YmVnaW4oKSwgcmVzdWx0TGlzdC5lbmQoKSk7CisrICAgIHJldHVybiByZXN1bHRMaXN0LnRvVmVj dG9yKCk7CisgfQorIAorIC8vIFdlIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgb3VyIG93biBjbGll bnRfaWQgc2luY2Ugc3BlZWNoLWRpc3BhdGNoZXIgc2VlbXMgdG8gYmUgaW5jb21wbGV0ZQorU3Vi bW9kdWxlIHF0c3ZnIDBjMDU3ODBlLi5hN2EwZjI0OToKK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMv cGx1Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdpb2hhbmRsZXIuY3BwIGIvcXRzdmcvc3JjL3Bs dWdpbnMvaW1hZ2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcAoraW5kZXggNTYxZTc3ZS4u MTJlMDU3NCAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcv cXN2Z2lvaGFuZGxlci5jcHAKKysrKyBiL3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9z dmcvcXN2Z2lvaGFuZGxlci5jcHAKK0BAIC0xOTEsNiArMTkxLDggQEAgYm9vbCBRU3ZnSU9IYW5k bGVyOjpyZWFkKFFJbWFnZSAqaW1hZ2UpCisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAg ICAgICAgaWYgKCFmaW5hbFNpemUuaXNFbXB0eSgpKSB7CisrICAgICAgICAgICAgaWYgKHFNYXgo ZmluYWxTaXplLndpZHRoKCksIGZpbmFsU2l6ZS5oZWlnaHQoKSkgPiAweGZmZmYpCisrICAgICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQXNzdW1lIGNvcnJ1cHRlZCBmaWxlCisgICAgICAg ICAgICAgaW1hZ2UtPmZpbGwoZC0+YmFja0NvbG9yLnJnYmEoKSk7CisgICAgICAgICAgICAgUVBh aW50ZXIgcChpbWFnZSk7CisgICAgICAgICAgICAgZC0+ci5yZW5kZXIoJnAsIGJvdW5kcyk7Citk aWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFuZGxlci5jcHAgYi9xdHN2Zy9zcmMvc3Zn L3FzdmdoYW5kbGVyLmNwcAoraW5kZXggYTVmODc3Zi4uOGRkYTU2MyAxMDA2NDQKKy0tLSBhL3F0 c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwCisrKysgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5k bGVyLmNwcAorQEAgLTEzOTMsOSArMTM5MywxMCBAQCBzdGF0aWMgdm9pZCBwYXJzZUZvbnQoUVN2 Z05vZGUgKm5vZGUsCisgICAgICAgICBjYXNlIEZvbnRTaXplTm9uZToKKyAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgIGNhc2UgRm9udFNpemVWYWx1ZTogeworLSAgICAgICAgICAgIFFTdmdI YW5kbGVyOjpMZW5ndGhUeXBlIGR1bW15OyAvLyBzaG91bGQgYWx3YXlzIGJlIHBpeGVsIHNpemUK Ky0gICAgICAgICAgICBmb250U3R5bGUtPnNldFNpemUocU1pbihwYXJzZUxlbmd0aChhdHRyaWJ1 dGVzLmZvbnRTaXplLCBkdW1teSwgaGFuZGxlciksCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcXJlYWwoMHhmZmZmKSkpOworKyAgICAgICAgICAgIFFTdmdIYW5kbGVyOjpM ZW5ndGhUeXBlIHR5cGU7CisrICAgICAgICAgICAgcXJlYWwgZnMgPSBwYXJzZUxlbmd0aChhdHRy aWJ1dGVzLmZvbnRTaXplLCB0eXBlLCBoYW5kbGVyKTsKKysgICAgICAgICAgICBmcyA9IGNvbnZl cnRUb1BpeGVscyhmcywgdHJ1ZSwgdHlwZSk7CisrICAgICAgICAgICAgZm9udFN0eWxlLT5zZXRT aXplKHFNaW4oZnMsIHFyZWFsKDB4ZmZmZikpKTsKKyAgICAgICAgIH0KKyAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgIGRlZmF1bHQ6CitAQCAtMjUxMyw2ICsyNTE0LDggQEAgc3RhdGljIGJv b2wgcGFyc2VBbmltYXRlVHJhbnNmb3JtTm9kZShRU3ZnTm9kZSAqcGFyZW50LAorICAgICAgICAg ICAgICsrczsKKyAgICAgICAgIH0KKyAgICAgfQorKyAgICBpZiAodmFscy5jb3VudCgpICUgMyAh PSAwKQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgICBib29sIG9rID0gdHJ1ZTsKKyAg ICAgaW50IGJlZ2luID0gcGFyc2VDbG9ja1ZhbHVlKGJlZ2luU3RyLCAmb2spOworQEAgLTI1NzYs NiArMjU3OSw4IEBAIHN0YXRpYyBRU3ZnTm9kZSAqY3JlYXRlQ2lyY2xlTm9kZShRU3ZnTm9kZSAq cGFyZW50LAorICAgICBxcmVhbCBuY3ggPSB0b0RvdWJsZShjeCk7CisgICAgIHFyZWFsIG5jeSA9 IHRvRG91YmxlKGN5KTsKKyAgICAgcXJlYWwgbnIgID0gdG9Eb3VibGUocik7CisrICAgIGlmIChu ciA8IDAuMCkKKysgICAgICAgIHJldHVybiBudWxscHRyOworIAorICAgICBRUmVjdEYgcmVjdChu Y3gtbnIsIG5jeS1uciwgbnIqMiwgbnIqMik7CisgICAgIFFTdmdOb2RlICpjaXJjbGUgPSBuZXcg UVN2Z0NpcmNsZShwYXJlbnQsIHJlY3QpOworQEAgLTMwNDYsMTUgKzMwNTEsMTYgQEAgc3RhdGlj IFFTdmdTdHlsZVByb3BlcnR5ICpjcmVhdGVSYWRpYWxHcmFkaWVudE5vZGUoUVN2Z05vZGUgKm5v ZGUsCisgCisgICAgIHFyZWFsIG5jeCA9IDAuNTsKKyAgICAgcXJlYWwgbmN5ID0gMC41OworLSAg ICBxcmVhbCBuciAgPSAwLjU7CisgICAgIGlmICghY3guaXNFbXB0eSgpKQorICAgICAgICAgbmN4 ID0gdG9Eb3VibGUoY3gpOworICAgICBpZiAoIWN5LmlzRW1wdHkoKSkKKyAgICAgICAgIG5jeSA9 IHRvRG91YmxlKGN5KTsKKysKKysgICAgcXJlYWwgbnIgPSAwLjA7CisgICAgIGlmICghci5pc0Vt cHR5KCkpCisgICAgICAgICBuciA9IHRvRG91YmxlKHIpOworLSAgICBpZiAobnIgPCAwLjUpCist ICAgICAgICBuciA9IDAuNTsKKysgICAgaWYgKG5yIDw9IDAuMCkKKysgICAgICAgIHJldHVybiBu dWxscHRyOworIAorICAgICBxcmVhbCBuZnggPSBuY3g7CisgICAgIGlmICghZnguaXNFbXB0eSgp KQorQEAgLTMzNTAsNyArMzM1Niw5IEBAIHN0YXRpYyBRU3ZnTm9kZSAqY3JlYXRlVGV4dE5vZGUo UVN2Z05vZGUgKnBhcmVudCwKKyAgICAgLy8jIyMgZWRpdGFibGUgYW5kIHJvdGF0ZSBub3QgaGFu ZGxlZAorICAgICBRU3ZnSGFuZGxlcjo6TGVuZ3RoVHlwZSB0eXBlOworICAgICBxcmVhbCBueCA9 IHBhcnNlTGVuZ3RoKHgsIHR5cGUsIGhhbmRsZXIpOworKyAgICBueCA9IGNvbnZlcnRUb1BpeGVs cyhueCwgdHJ1ZSwgdHlwZSk7CisgICAgIHFyZWFsIG55ID0gcGFyc2VMZW5ndGgoeSwgdHlwZSwg aGFuZGxlcik7CisrICAgIG55ID0gY29udmVydFRvUGl4ZWxzKG55LCB0cnVlLCB0eXBlKTsKKyAK KyAgICAgUVN2Z05vZGUgKnRleHQgPSBuZXcgUVN2Z1RleHQocGFyZW50LCBRUG9pbnRGKG54LCBu eSkpOworICAgICByZXR1cm4gdGV4dDsKK0BAIC0zNjkxLDkgKzM2OTksNyBAQCB2b2lkIFFTdmdI YW5kbGVyOjpwYXJzZSgpCisgICAgICAgICBjYXNlIFFYbWxTdHJlYW1SZWFkZXI6OkVuZEVsZW1l bnQ6CisgICAgICAgICAgICAgZW5kRWxlbWVudCh4bWwtPm5hbWUoKSk7CisgICAgICAgICAgICAg KytyZW1haW5pbmdVbmZpbmlzaGVkRWxlbWVudHM7CistICAgICAgICAgICAgLy8gaWYgd2UgYXJl IHVzaW5nIHNvbWVib2R5IGVsc2UncyBxeG1sc3RyZWFtcmVhZGVyCistICAgICAgICAgICAgLy8g d2Ugc2hvdWxkIG5vdCByZWFkIHVudGlsIHRoZSBlbmQgb2YgdGhlIHN0cmVhbQorLSAgICAgICAg ICAgIGRvbmUgPSAhbV9vd25zUmVhZGVyICYmICh4bWwtPm5hbWUoKSA9PSBRTGF0aW4xU3RyaW5n KCJzdmciKSk7CisrICAgICAgICAgICAgZG9uZSA9ICh4bWwtPm5hbWUoKSA9PSBRTGF0aW4xU3Ry aW5nKCJzdmciKSk7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlIFFYbWxTdHJl YW1SZWFkZXI6OkNoYXJhY3RlcnM6CisgICAgICAgICAgICAgY2hhcmFjdGVycyh4bWwtPnRleHQo KSk7CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcCBiL3F0c3Zn L3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAKK2luZGV4IGI4OTYwOGIuLjg5YzllNGUgMTAwNjQ0 CistLS0gYS9xdHN2Zy9zcmMvc3ZnL3FzdmdzdHJ1Y3R1cmUuY3BwCisrKysgYi9xdHN2Zy9zcmMv c3ZnL3FzdmdzdHJ1Y3R1cmUuY3BwCitAQCAtMjU1LDkgKzI1NSwxMyBAQCBpbmxpbmUgc3RhdGlj IGJvb2wgaXNTdXBwb3J0ZWRTdmdGZWF0dXJlKGNvbnN0IFFTdHJpbmcgJnN0cikKKyAgICAgfTsK KyAKKyAgICAgaWYgKHN0ci5sZW5ndGgoKSA8PSBNQVhfV09SRF9MRU5HVEggJiYgc3RyLmxlbmd0 aCgpID49IE1JTl9XT1JEX0xFTkdUSCkgeworKyAgICAgICAgY29uc3QgY2hhcjE2X3QgdW5pY29k ZTQ0ID0gc3RyLmF0KDQ0KS51bmljb2RlKCk7CisrICAgICAgICBjb25zdCBjaGFyMTZfdCB1bmlj b2RlNDUgPSBzdHIuYXQoNDUpLnVuaWNvZGUoKTsKKysgICAgICAgIGlmICh1bmljb2RlNDQgPj0g c2l6ZW9mKGFzc29fdmFsdWVzKSB8fCB1bmljb2RlNDUgPj0gc2l6ZW9mKGFzc29fdmFsdWVzKSkK KysgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICBjb25zdCBpbnQga2V5ID0gc3Ry Lmxlbmd0aCgpCistICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1tzdHIuYXQo NDUpLnVuaWNvZGUoKV0KKy0gICAgICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3N0 ci5hdCg0NCkudW5pY29kZSgpXTsKKysgICAgICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFs dWVzW3VuaWNvZGU0NV0KKysgICAgICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3Vu aWNvZGU0NF07CisgICAgICAgICBpZiAoa2V5IDw9IE1BWF9IQVNIX1ZBTFVFICYmIGtleSA+PSAw KQorICAgICAgICAgICAgIHJldHVybiBzdHIgPT0gUUxhdGluMVN0cmluZyh3b3JkbGlzdFtrZXld KTsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5j cHAgYi9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9jdW1lbnQuY3BwCitpbmRleCA2M2QwNzk3Li4x OWU3MTU0IDEwMDY0NAorLS0tIGEvcXRzdmcvc3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcAor KysrIGIvcXRzdmcvc3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcAorQEAgLTQzMyw4ICs0MzMs MTYgQEAgdm9pZCBRU3ZnVGlueURvY3VtZW50OjpkcmF3KFFQYWludGVyICpwLCBRU3ZnRXh0cmFT dGF0ZXMgJikKKyAgICAgZHJhdyhwKTsKKyB9CisgCisrc3RhdGljIGJvb2wgaXNWYWxpZE1hdHJp eChjb25zdCBRVHJhbnNmb3JtICZ0cmFuc2Zvcm0pCisreworKyAgICBxcmVhbCBkZXRlcm1pbmFu dCA9IHRyYW5zZm9ybS5kZXRlcm1pbmFudCgpOworKyAgICByZXR1cm4gcUlzRmluaXRlKGRldGVy bWluYW50KTsKKyt9CisrCisgdm9pZCBRU3ZnVGlueURvY3VtZW50OjptYXBTb3VyY2VUb1Rhcmdl dChRUGFpbnRlciAqcCwgY29uc3QgUVJlY3RGICZ0YXJnZXRSZWN0LCBjb25zdCBRUmVjdEYgJnNv dXJjZVJlY3QpCisgeworKyAgICBRVHJhbnNmb3JtIG9sZFRyYW5zZm9ybSA9IHAtPndvcmxkVHJh bnNmb3JtKCk7CisrCisgICAgIFFSZWN0RiB0YXJnZXQgPSB0YXJnZXRSZWN0OworICAgICBpZiAo dGFyZ2V0LmlzRW1wdHkoKSkgeworICAgICAgICAgUVBhaW50RGV2aWNlICpkZXYgPSBwLT5kZXZp Y2UoKTsKK0BAIC00ODcsNiArNDk1LDkgQEAgdm9pZCBRU3ZnVGlueURvY3VtZW50OjptYXBTb3Vy Y2VUb1RhcmdldChRUGFpbnRlciAqcCwgY29uc3QgUVJlY3RGICZ0YXJnZXRSZWN0LAorICAgICAg ICAgfQorICNlbmRpZgorICAgICB9CisrCisrICAgIGlmICghaXNWYWxpZE1hdHJpeChwLT53b3Js ZFRyYW5zZm9ybSgpKSkKKysgICAgICAgIHAtPnNldFdvcmxkVHJhbnNmb3JtKG9sZFRyYW5zZm9y bSk7CisgfQorIAorIFFSZWN0RiBRU3ZnVGlueURvY3VtZW50Ojpib3VuZHNPbkVsZW1lbnQoY29u c3QgUVN0cmluZyAmaWQpIGNvbnN0CitkaWZmIC0tZ2l0IGEvcXRzdmcvdGVzdHMvYXV0by9xc3Zn cmVuZGVyZXIvdHN0X3FzdmdyZW5kZXJlci5jcHAgYi9xdHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5k ZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcAoraW5kZXggMzZjNzZlYy4uZGI3MWUwMiAxMDA2NDQK Ky0tLSBhL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2Z3JlbmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIuY3Bw CisrKysgYi9xdHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNw cAorQEAgLTg2LDYgKzg2LDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBvc3NfZnV6el8y MzczMSgpOworICAgICB2b2lkIG9zc19mdXp6XzI0MTMxKCk7CisgICAgIHZvaWQgb3NzX2Z1enpf MjQ3MzgoKTsKKysgICAgdm9pZCBpbGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybV9kYXRhKCk7CisrICAg IHZvaWQgaWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm0oKTsKKyAKKyAjaWZuZGVmIFFUX05PX0NPTVBS RVNTCisgICAgIHZvaWQgdGVzdEd6TG9hZGluZygpOworQEAgLTE2NDYsNSArMTY0OCwyMiBAQCB2 b2lkIHRzdF9RU3ZnUmVuZGVyZXI6Om9zc19mdXp6XzI0NzM4KCkKKyAgICAgUVN2Z1JlbmRlcmVy KCkubG9hZChRQnl0ZUFycmF5KCI8c3ZnPjxwYXRoIGQ9XCJhIDIgMWUtMjEyLi4uLi5cIj4iKSk7 CisgfQorIAorK3ZvaWQgdHN0X1FTdmdSZW5kZXJlcjo6aWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm1f ZGF0YSgpCisreworKyAgICBRVGVzdDo6YWRkQ29sdW1uPFFCeXRlQXJyYXk+KCJzdmciKTsKKysK KysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTEiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRl VHJhbnNmb3JtIHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgdmFsdWVzPVwi OCwwLDUsMFwiPiIpOworKyAgICBRVGVzdDo6bmV3Um93KCJjYXNlMiIpIDw8IFFCeXRlQXJyYXko Ijxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1cInJvdGF0ZVwiIGJlZ2luPVwiMVwiIGR1cj1c IjJcIiB2YWx1ZXM9XCIxLDJcIj4iKTsKKysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTMiKSA8PCBR Qnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1c IjFcIiBkdXI9XCIyXCIgZnJvbT1cIi4uIDUgMlwiIHRvPVwiZlwiPiIpOworKyAgICBRVGVzdDo6 bmV3Um93KCJjYXNlNCIpIDw8IFFCeXRlQXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlw ZT1cInNjYWxlXCIgYmVnaW49XCIxXCIgZHVyPVwiMlwiIGJ5PVwiLS0sLi5cIj4iKTsKKyt9Cisr Cisrdm9pZCB0c3RfUVN2Z1JlbmRlcmVyOjppbGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybSgpCisrewor KyAgICBRRkVUQ0goUUJ5dGVBcnJheSwgc3ZnKTsKKysgICAgUVN2Z1JlbmRlcmVyIHJlbmRlcmVy OworKyAgICBRVkVSSUZZKCFyZW5kZXJlci5sb2FkKHN2ZykpOyAvLyBhbHNvIHNob3VsZG4ndCBh c3NlcnQKKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUVN2Z1JlbmRlcmVyKQorICNpbmNsdWRlICJ0 c3RfcXN2Z3JlbmRlcmVyLm1vYyIKK1N1Ym1vZHVsZSBxdHRvb2xzIDY5MTRmN2M4Li4wOTBlNTI2 ZToKK2RpZmYgLS1naXQgYS9xdHRvb2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVs cGdlbmVyYXRvci5jcHAgYi9xdHRvb2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVs cGdlbmVyYXRvci5jcHAKK2luZGV4IGZlYWIxZTJkNS4uY2JmYjgyNTA3IDEwMDY0NAorLS0tIGEv cXR0b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3IuY3BwCisr KysgYi9xdHRvb2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5j cHAKK0BAIC00NDUsNyArNDQ1LDkgQEAgYm9vbCBIZWxwR2VuZXJhdG9yUHJpdmF0ZTo6aW5zZXJ0 RmlsZXMoY29uc3QgUVN0cmluZ0xpc3QgJmZpbGVzLCBjb25zdCBRU3RyaW5nICYKKyAgICAgaWYg KGZpbHRlclNldElkIDwgMCkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgKytmaWx0ZXJT ZXRJZDsKKy0gICAgZm9yIChpbnQgYXR0SWQgOiBxQXNDb25zdChmaWx0ZXJBdHRzKSkgeworKyAg ICBRTGlzdDxpbnQ+IGF0dFZhbHVlcyA9IGZpbHRlckF0dHMudmFsdWVzKCk7CisrICAgIHN0ZDo6 c29ydChhdHRWYWx1ZXMuYmVnaW4oKSwgYXR0VmFsdWVzLmVuZCgpKTsKKysgICAgZm9yIChpbnQg YXR0SWQgOiBxQXNDb25zdChhdHRWYWx1ZXMpKSB7CisgICAgICAgICBtX3F1ZXJ5LT5wcmVwYXJl KFFMYXRpbjFTdHJpbmcoIklOU0VSVCBJTlRPIEZpbGVBdHRyaWJ1dGVTZXRUYWJsZSAiCisgICAg ICAgICAgICAgIlZBTFVFUyg/LCA/KSIpKTsKKyAgICAgICAgIG1fcXVlcnktPmJpbmRWYWx1ZSgw LCBmaWx0ZXJTZXRJZCk7CitTdWJtb2R1bGUgcXR3YXlsYW5kIGRmYjAxMjljLi4yOTA0ZTFiMzoK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbiBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L2NvbmZpZ3VyZS5qc29uCitpbmRleCAyZjQyNDU4MC4uMjkyMjIzNTcg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbgorKysrIGIv cXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24KK0BAIC0xNDksOCArMTQ5LDcgQEAK KyAgICAgICAgICAgICAgICAgICAgICIjZW5kaWYiCisgICAgICAgICAgICAgICAgIF0KKyAgICAg ICAgICAgICB9LAorLSAgICAgICAgICAgICJsaWJzIjogIi1sZHJtIiwKKy0gICAgICAgICAgICAi dXNlIjogImVnbCIKKysgICAgICAgICAgICAidXNlIjogImRybSBlZ2wiCisgICAgICAgICB9LAor ICAgICAgICAgInZ1bGthbi1zZXJ2ZXItYnVmZmVyIjogeworICAgICAgICAgICAgICJsYWJlbCI6 ICJWdWxrYW4gQnVmZmVyIFNoYXJpbmciLAorQEAgLTE2OCw3ICsxNjcsOCBAQAorICAgICAgICAg ICAgICAgICAgICAgImV4cG9ydEFsbG9jSW5mby5oYW5kbGVUeXBlcyA9IFZLX0VYVEVSTkFMX01F TU9SWV9IQU5ETEVfVFlQRV9PUEFRVUVfRkRfQklUX0tIUjsiLAorICAgICAgICAgICAgICAgICAg ICAgInJldHVybiAwOyIKKyAgICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgIH0KKysgICAg ICAgICAgICB9LAorKyAgICAgICAgICAgICJ1c2UiOiAid2F5bGFuZC1jbGllbnQiCisgICAgICAg ICB9LAorICAgICAgICAgImVnbF8xXzUtd2F5bGFuZCI6IHsKKyAgICAgICAgICAgICAibGFiZWwi OiAiRUdMIDEuNSB3aXRoIFdheWxhbmQgUGxhdGZvcm0iLAorQEAgLTE4Myw3ICsxODMsNyBAQAor ICAgICAgICAgICAgICAgICAgICAgImVnbEdldFBsYXRmb3JtRGlzcGxheShFR0xfUExBVEZPUk1f V0FZTEFORF9FWFQsIChzdHJ1Y3Qgd2xfZGlzcGxheSAqKShudWxscHRyKSwgbnVsbHB0cik7Igor ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAidXNlIjog ImVnbCIKKysgICAgICAgICAgICAidXNlIjogImVnbCB3YXlsYW5kLWNsaWVudCIKKyAgICAgICAg IH0KKyAgICAgfSwKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwv cXdheWxhbmRjbGllbnRleHRlbnNpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFs L3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcAoraW5kZXggMTI1YjFlMTkuLmVkY2NmZTYzIDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0 ZW5zaW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xp ZW50ZXh0ZW5zaW9uLmNwcAorQEAgLTc0LDcgKzc0LDEwIEBAIHZvaWQgUVdheWxhbmRDbGllbnRF eHRlbnNpb25Qcml2YXRlOjpoYW5kbGVSZWdpc3RyeUdsb2JhbCh2b2lkICpkYXRhLCA6OndsX3Jl Z2lzCisgdm9pZCBRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6YWRkUmVnaXN0cnlMaXN0ZW5lcigp CisgeworICAgICBRX0QoUVdheWxhbmRDbGllbnRFeHRlbnNpb24pOworLSAgICBkLT53YXlsYW5k SW50ZWdyYXRpb24tPmRpc3BsYXkoKS0+YWRkUmVnaXN0cnlMaXN0ZW5lcigmUVdheWxhbmRDbGll bnRFeHRlbnNpb25Qcml2YXRlOjpoYW5kbGVSZWdpc3RyeUdsb2JhbCwgdGhpcyk7CisrICAgIGlm ICghZC0+cmVnaXN0ZXJlZCkgeworKyAgICAgICAgZC0+d2F5bGFuZEludGVncmF0aW9uLT5kaXNw bGF5KCktPmFkZFJlZ2lzdHJ5TGlzdGVuZXIoJlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0 ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwsIHRoaXMpOworKyAgICAgICAgZC0+cmVnaXN0ZXJlZCA9 IHRydWU7CisrICAgIH0KKyB9CisgCisgUVdheWxhbmRDbGllbnRFeHRlbnNpb246OlFXYXlsYW5k Q2xpZW50RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXIpCitAQCAtODgsNiArOTEsMTMgQEAgUVdheWxh bmRDbGllbnRFeHRlbnNpb246OlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXIp CisgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgImFkZFJlZ2lzdHJ5TGlzdGVu ZXIiLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgfQorIAorK1FXYXlsYW5kQ2xpZW50RXh0ZW5z aW9uOjp+UVdheWxhbmRDbGllbnRFeHRlbnNpb24oKQorK3sKKysgICAgUV9EKFFXYXlsYW5kQ2xp ZW50RXh0ZW5zaW9uKTsKKysgICAgaWYgKGQtPnJlZ2lzdGVyZWQgJiYgIVFDb3JlQXBwbGljYXRp b246OmNsb3NpbmdEb3duKCkpCisrICAgICAgICBkLT53YXlsYW5kSW50ZWdyYXRpb24tPmRpc3Bs YXkoKS0+cmVtb3ZlTGlzdGVuZXIoJlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFu ZGxlUmVnaXN0cnlHbG9iYWwsIHRoaXMpOworK30KKysKKyBRdFdheWxhbmRDbGllbnQ6OlFXYXls YW5kSW50ZWdyYXRpb24gKlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjppbnRlZ3JhdGlvbigpIGNv bnN0CisgeworICAgICBRX0QoY29uc3QgUVdheWxhbmRDbGllbnRFeHRlbnNpb24pOworZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lv bi5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9u LmgKK2luZGV4IDk4MjcyZTU3Li41YmQyODM5OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5oCisrKysgYi9xdHdheWxhbmQv c3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uaAorQEAgLTYzLDYgKzYz LDcgQEAgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmRDbGllbnRFeHRlbnNp b24gOiBwdWJsaWMgUU9iamVjdAorICAgICBRX1BST1BFUlRZKGJvb2wgYWN0aXZlIFJFQUQgaXNB Y3RpdmUgTk9USUZZIGFjdGl2ZUNoYW5nZWQpCisgcHVibGljOgorICAgICBRV2F5bGFuZENsaWVu dEV4dGVuc2lvbihjb25zdCBpbnQgdmVyc2lvbik7CisrICAgIH5RV2F5bGFuZENsaWVudEV4dGVu c2lvbigpOworIAorICAgICBRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kSW50ZWdyYXRpb24gKmlu dGVncmF0aW9uKCkgY29uc3Q7CisgICAgIGludCB2ZXJzaW9uKCkgY29uc3Q7CitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3Au aCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9w LmgKK2luZGV4IDY5Y2M0NmEwLi45MDkxZWZiZSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgKKysrKyBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgKK0BAIC02OCw2 ICs2OCw3IEBAIHB1YmxpYzoKKyAgICAgUXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZEludGVncmF0 aW9uICp3YXlsYW5kSW50ZWdyYXRpb24gPSBudWxscHRyOworICAgICBpbnQgdmVyc2lvbiA9IC0x OworICAgICBib29sIGFjdGl2ZSA9IGZhbHNlOworKyAgICBib29sIHJlZ2lzdGVyZWQgPSBmYWxz ZTsKKyB9OworIAorIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kQ2xpZW50 RXh0ZW5zaW9uVGVtcGxhdGVQcml2YXRlIDogcHVibGljIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9u UHJpdmF0ZQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRl dmljZS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwCitp bmRleCA3ZTJlMzMwOC4uZTNlNjBlZDUgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRhdGFkZXZpY2UuY3BwCitAQCAtNzIsNiArNzIsOCBAQCBRV2F5bGFuZERhdGFEZXZpY2U6 OlFXYXlsYW5kRGF0YURldmljZShRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyICptYW5hZ2VyLCBR V2F5bAorIAorIFFXYXlsYW5kRGF0YURldmljZTo6flFXYXlsYW5kRGF0YURldmljZSgpCisgewor KyAgICBpZiAod2xfZGF0YV9kZXZpY2VfZ2V0X3ZlcnNpb24ob2JqZWN0KCkpID49IFdMX0RBVEFf REVWSUNFX1JFTEVBU0VfU0lOQ0VfVkVSU0lPTikKKysgICAgICAgIHJlbGVhc2UoKTsKKyB9Cisg CisgUVdheWxhbmREYXRhT2ZmZXIgKlFXYXlsYW5kRGF0YURldmljZTo6c2VsZWN0aW9uT2ZmZXIo KSBjb25zdAorQEAgLTExMCw3ICsxMTIsNyBAQCBRV2F5bGFuZERhdGFPZmZlciAqUVdheWxhbmRE YXRhRGV2aWNlOjpkcmFnT2ZmZXIoKSBjb25zdAorICAgICByZXR1cm4gbV9kcmFnT2ZmZXIuZGF0 YSgpOworIH0KKyAKKy1ib29sIFFXYXlsYW5kRGF0YURldmljZTo6c3RhcnREcmFnKFFNaW1lRGF0 YSAqbWltZURhdGEsIFFXYXlsYW5kV2luZG93ICppY29uKQorK2Jvb2wgUVdheWxhbmREYXRhRGV2 aWNlOjpzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUXQ6OkRyb3BBY3Rpb25zIHN1cHBv cnRlZEFjdGlvbnMsIFFXYXlsYW5kV2luZG93ICppY29uKQorIHsKKyAgICAgYXV0byAqc2VhdCA9 IG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCk7CisgICAgIGF1dG8gKm9yaWdpbiA9IHNl YXQtPnBvaW50ZXJGb2N1cygpOworQEAgLTEyMyw3ICsxMjUsMjggQEAgYm9vbCBRV2F5bGFuZERh dGFEZXZpY2U6OnN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRV2F5bGFuZFdpbmRvdyAq aWNvbikKKyAgICAgfQorIAorICAgICBtX2RyYWdTb3VyY2UucmVzZXQobmV3IFFXYXlsYW5kRGF0 YVNvdXJjZShtX2Rpc3BsYXktPmRuZFNlbGVjdGlvbkhhbmRsZXIoKSwgbWltZURhdGEpKTsKKysK KysgICAgaWYgKHdsX2RhdGFfZGV2aWNlX2dldF92ZXJzaW9uKG9iamVjdCgpKSA+PSAzKQorKyAg ICAgICAgbV9kcmFnU291cmNlLT5zZXRfYWN0aW9ucyhkcm9wQWN0aW9uc1RvV2woc3VwcG9ydGVk QWN0aW9ucykpOworKworICAgICBjb25uZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFu ZERhdGFTb3VyY2U6OmNhbmNlbGxlZCwgdGhpcywgJlFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ1Nv dXJjZUNhbmNlbGxlZCk7CisrICAgIGNvbm5lY3QobV9kcmFnU291cmNlLmRhdGEoKSwgJlFXYXls YW5kRGF0YVNvdXJjZTo6ZG5kUmVzcG9uc2VVcGRhdGVkLCB0aGlzLCBbdGhpc10oYm9vbCBhY2Nl cHRlZCwgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uKSB7CisrICAgICAgICAgICAgYXV0byBkcmFnID0g c3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRm b3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKTsKKysgICAgICAgICAgICAvLyBpbiBvbGQgdmVyc2lv bnMgZHJvcCBhY3Rpb24gaXMgbm90IHNldCwgc28gd2UgZ3Vlc3MKKysgICAgICAgICAgICBpZiAo d2xfZGF0YV9zb3VyY2VfZ2V0X3ZlcnNpb24obV9kcmFnU291cmNlLT5vYmplY3QoKSkgPCAzKSB7 CisrICAgICAgICAgICAgICAgIGRyYWctPnNldFJlc3BvbnNlKGFjY2VwdGVkKTsKKysgICAgICAg ICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSBy ZXNwb25zZShhY2NlcHRlZCwgYWN0aW9uKTsKKysgICAgICAgICAgICAgICAgZHJhZy0+c2V0UmVz cG9uc2UocmVzcG9uc2UpOworKyAgICAgICAgICAgIH0KKysgICAgfSk7CisrICAgIGNvbm5lY3Qo bV9kcmFnU291cmNlLmRhdGEoKSwgJlFXYXlsYW5kRGF0YVNvdXJjZTo6ZG5kRHJvcHBlZCwgdGhp cywgW10oYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uKSB7CisrICAgICAgICBR UGxhdGZvcm1Ecm9wUXRSZXNwb25zZSByZXNwb25zZShhY2NlcHRlZCwgYWN0aW9uKTsKKysgICAg ICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpw bGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPnNldERyb3BSZXNwb25zZShyZXNwb25zZSk7 CisrICAgIH0pOworKyAgICBjb25uZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERh dGFTb3VyY2U6OmZpbmlzaGVkLCB0aGlzLCBbXSgpIHsKKysgICAgICAgIHN0YXRpY19jYXN0PFFX YXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9u KCktPmRyYWcoKSktPmZpbmlzaERyYWcoKTsKKysgICAgfSk7CisgCisgICAgIHN0YXJ0X2RyYWco bV9kcmFnU291cmNlLT5vYmplY3QoKSwgb3JpZ2luLT53bFN1cmZhY2UoKSwgaWNvbi0+d2xTdXJm YWNlKCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPnNlcmlhbCgpKTsKKyAgICAg cmV0dXJuIHRydWU7CitAQCAtMTUyLDcgKzE3NSw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNl OjpkYXRhX2RldmljZV9kcm9wKCkKKyAgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBkcmFnLT5z dXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxzZSBpZiAobV9kcmFnT2ZmZXIpIHsKKyAgICAg ICAgIGRyYWdEYXRhID0gbV9kcmFnT2ZmZXItPm1pbWVEYXRhKCk7CistICAgICAgICBzdXBwb3J0 ZWRBY3Rpb25zID0gUXQ6OkNvcHlBY3Rpb24gfCBRdDo6TW92ZUFjdGlvbiB8IFF0OjpMaW5rQWN0 aW9uOworKyAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IG1fZHJhZ09mZmVyLT5zdXBwb3J0ZWRB Y3Rpb25zKCk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICByZXR1cm47CisgICAgIH0KK0BAIC0x NjIsNyArMTg1LDExIEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9kcm9w KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFHdWlBcHBsaWNhdGlvbjo6a2V5Ym9hcmRNb2RpZmllcnMo KSk7CisgCisgICAgIGlmIChkcmFnKSB7CistICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERy YWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFn KCkpLT5maW5pc2hEcmFnKHJlc3BvbnNlKTsKKysgICAgICAgIGF1dG8gZHJhZyA9ICBzdGF0aWNf Y2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRl Z3JhdGlvbigpLT5kcmFnKCkpOworKyAgICAgICAgZHJhZy0+c2V0RHJvcFJlc3BvbnNlKHJlc3Bv bnNlKTsKKysgICAgICAgIGRyYWctPmZpbmlzaERyYWcoKTsKKysgICAgfSBlbHNlIGlmIChtX2Ry YWdPZmZlcikgeworKyAgICAgICAgbV9kcmFnT2ZmZXItPmZpbmlzaCgpOworICAgICB9CisgfQor IAorQEAgLTE4Niw3ICsyMTMsNyBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZp Y2VfZW50ZXIodWludDMyX3Qgc2VyaWFsLCB3bF9zdXJmYWNlICpzdXJmYWNlLAorICAgICAgICAg c3VwcG9ydGVkQWN0aW9ucyA9IGRyYWctPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNl IGlmIChtX2RyYWdPZmZlcikgeworICAgICAgICAgZHJhZ0RhdGEgPSBtX2RyYWdPZmZlci0+bWlt ZURhdGEoKTsKKy0gICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0 OjpNb3ZlQWN0aW9uIHwgUXQ6OkxpbmtBY3Rpb247CisrICAgICAgICBzdXBwb3J0ZWRBY3Rpb25z ID0gbV9kcmFnT2ZmZXItPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfQorIAorICAgICBjb25z dCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2UgPSBRV2luZG93U3lzdGVtSW50ZXJm YWNlOjpoYW5kbGVEcmFnKG1fZHJhZ1dpbmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBw b3J0ZWRBY3Rpb25zLAorQEAgLTE5NywxMSArMjI0LDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZp Y2U6OmRhdGFfZGV2aWNlX2VudGVyKHVpbnQzMl90IHNlcmlhbCwgd2xfc3VyZmFjZSAqc3VyZmFj ZSwKKyAgICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Q cml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPnNldFJlc3BvbnNlKHJlc3Bv bnNlKTsKKyAgICAgfQorIAorLSAgICBpZiAocmVzcG9uc2UuaXNBY2NlcHRlZCgpKSB7CistICAg ICAgICB3bF9kYXRhX29mZmVyX2FjY2VwdChtX2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJT ZXJpYWwsIG1fZHJhZ09mZmVyLT5maXJzdEZvcm1hdCgpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsK Ky0gICAgfSBlbHNlIHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVy LT5vYmplY3QoKSwgbV9lbnRlclNlcmlhbCwgbnVsbHB0cik7CistICAgIH0KKysgICAgc2VuZFJl c3BvbnNlKHN1cHBvcnRlZEFjdGlvbnMsIHJlc3BvbnNlKTsKKyB9CisgCisgdm9pZCBRV2F5bGFu ZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2xlYXZlKCkKK0BAIC0yMzUsMTAgKzI1OCwxMCBAQCB2 b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfbW90aW9uKHVpbnQzMl90IHRpbWUs IHdsX2ZpeGVkX3QgeCwgd2xfZml4ZQorICAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IGRyYWct PnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIGRyYWdEYXRhID0g bV9kcmFnT2ZmZXItPm1pbWVEYXRhKCk7CistICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6 OkNvcHlBY3Rpb24gfCBRdDo6TW92ZUFjdGlvbiB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAg c3VwcG9ydGVkQWN0aW9ucyA9IG1fZHJhZ09mZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAg IH0KKyAKKy0gICAgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgcmVzcG9uc2UgPSBRV2luZG93U3lz dGVtSW50ZXJmYWNlOjpoYW5kbGVEcmFnKG1fZHJhZ1dpbmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1Bv aW50LCBzdXBwb3J0ZWRBY3Rpb25zLAorKyAgICBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25z ZSByZXNwb25zZSA9IFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZURyYWcobV9kcmFnV2lu ZG93LCBkcmFnRGF0YSwgbV9kcmFnUG9pbnQsIHN1cHBvcnRlZEFjdGlvbnMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRR3VpQXBwbGljYXRpb246Om1vdXNlQnV0dG9ucygpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUUd1aUFwcGxpY2F0aW9uOjprZXlib2FyZE1vZGlmaWVycygpKTsKKyAKK0BAIC0yNDYsMTEg KzI2OSw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9tb3Rpb24odWlu dDMyX3QgdGltZSwgd2xfZml4ZWRfdCB4LCB3bF9maXhlCisgICAgICAgICBzdGF0aWNfY2FzdDxR V2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlv bigpLT5kcmFnKCkpLT5zZXRSZXNwb25zZShyZXNwb25zZSk7CisgICAgIH0KKyAKKy0gICAgaWYg KHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSkgeworLSAgICAgICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQo bV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2VyaWFsLCBtX2RyYWdPZmZlci0+Zmlyc3RG b3JtYXQoKS50b1V0ZjgoKS5jb25zdERhdGEoKSk7CistICAgIH0gZWxzZSB7CistICAgICAgICB3 bF9kYXRhX29mZmVyX2FjY2VwdChtX2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWws IG51bGxwdHIpOworLSAgICB9CisrICAgIHNlbmRSZXNwb25zZShzdXBwb3J0ZWRBY3Rpb25zLCBy ZXNwb25zZSk7CisgfQorICNlbmRpZiAvLyBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgCitAQCAt Mjc3LDE0ICsyOTYsMTAgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OnNlbGVjdGlvblNvdXJj ZUNhbmNlbGxlZCgpCisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyB2b2lkIFFXYXlsYW5k RGF0YURldmljZTo6ZHJhZ1NvdXJjZUNhbmNlbGxlZCgpCisgeworKyAgICBzdGF0aWNfY2FzdDxR V2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlv bigpLT5kcmFnKCkpLT5maW5pc2hEcmFnKCk7CisgICAgIG1fZHJhZ1NvdXJjZS5yZXNldCgpOwor IH0KKyAKKy12b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ1NvdXJjZVRhcmdldENoYW5nZWQo Y29uc3QgUVN0cmluZyAmbWltZVR5cGUpCisteworLSAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERy YWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFn KCkpLT51cGRhdGVUYXJnZXQobWltZVR5cGUpOworLX0KKy0KKyBRUG9pbnQgUVdheWxhbmREYXRh RGV2aWNlOjpjYWxjdWxhdGVEcmFnUG9zaXRpb24oaW50IHgsIGludCB5LCBRV2luZG93ICp3bmQp IGNvbnN0CisgeworICAgICBRUG9pbnQgcG50KHdsX2ZpeGVkX3RvX2ludCh4KSwgd2xfZml4ZWRf dG9faW50KHkpKTsKK0BAIC0yOTcsNiArMzEyLDMzIEBAIFFQb2ludCBRV2F5bGFuZERhdGFEZXZp Y2U6OmNhbGN1bGF0ZURyYWdQb3NpdGlvbihpbnQgeCwgaW50IHksIFFXaW5kb3cgKnduZCkgY29u CisgICAgIH0KKyAgICAgcmV0dXJuIHBudDsKKyB9CisrCisrdm9pZCBRV2F5bGFuZERhdGFEZXZp Y2U6OnNlbmRSZXNwb25zZShRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgY29uc3Qg UVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKQorK3sKKysgICAgaWYgKHJlc3BvbnNl LmlzQWNjZXB0ZWQoKSkgeworKyAgICAgICAgaWYgKHdsX2RhdGFfZGV2aWNlX2dldF92ZXJzaW9u KG9iamVjdCgpKSA+PSAzKQorKyAgICAgICAgICAgIG1fZHJhZ09mZmVyLT5zZXRfYWN0aW9ucyhk cm9wQWN0aW9uc1RvV2woc3VwcG9ydGVkQWN0aW9ucyksIGRyb3BBY3Rpb25zVG9XbChyZXNwb25z ZS5hY2NlcHRlZEFjdGlvbigpKSk7CisrCisrICAgICAgICBtX2RyYWdPZmZlci0+YWNjZXB0KG1f ZW50ZXJTZXJpYWwsIG1fZHJhZ09mZmVyLT5maXJzdEZvcm1hdCgpKTsKKysgICAgfSBlbHNlIHsK KysgICAgICAgIG1fZHJhZ09mZmVyLT5hY2NlcHQobV9lbnRlclNlcmlhbCwgUVN0cmluZygpKTsK KysgICAgfQorK30KKysKKytpbnQgUVdheWxhbmREYXRhRGV2aWNlOjpkcm9wQWN0aW9uc1RvV2wo UXQ6OkRyb3BBY3Rpb25zIGFjdGlvbnMpCisreworKworKyAgICBpbnQgd2xBY3Rpb25zID0gV0xf REFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX05PTkU7CisrICAgIGlmIChhY3Rpb25zICYg UXQ6OkNvcHlBY3Rpb24pCisrICAgICAgICB3bEFjdGlvbnMgfD0gV0xfREFUQV9ERVZJQ0VfTUFO QUdFUl9ETkRfQUNUSU9OX0NPUFk7CisrICAgIGlmIChhY3Rpb25zICYgKFF0OjpNb3ZlQWN0aW9u IHwgUXQ6OlRhcmdldE1vdmVBY3Rpb24pKQorKyAgICAgICAgd2xBY3Rpb25zIHw9IFdMX0RBVEFf REVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9NT1ZFOworKworKyAgICAvLyB3YXlsYW5kIGRvZXMg bm90IHN1cHBvcnQgTGlua0FjdGlvbiBhdCB0aGUgdGltZSBvZiB3cml0aW5nCisrICAgIHJldHVy biB3bEFjdGlvbnM7CisrfQorKworKworICNlbmRpZiAvLyBRVF9DT05GSUcoZHJhZ2FuZGRyb3Ap CisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRl dmljZV9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oCitp bmRleCAxNmMzYWQyOC4uODAxZGNjMmMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRhdGFkZXZpY2VfcC5oCitAQCAtNjQsNiArNjQsNyBAQCBRVF9SRVFVSVJFX0NPTkZJRyh3 YXlsYW5kX2RhdGFkZXZpY2UpOworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFNaW1l RGF0YTsKKytjbGFzcyBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZTsKKyBjbGFzcyBRV2luZG93Owor IAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQgeworQEAgLTg5LDcgKzkwLDcgQEAgcHVibGlj OgorIAorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgICAgIFFXYXlsYW5kRGF0YU9mZmVy ICpkcmFnT2ZmZXIoKSBjb25zdDsKKy0gICAgYm9vbCBzdGFydERyYWcoUU1pbWVEYXRhICptaW1l RGF0YSwgUVdheWxhbmRXaW5kb3cgKmljb24pOworKyAgICBib29sIHN0YXJ0RHJhZyhRTWltZURh dGEgKm1pbWVEYXRhLCBRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgUVdheWxhbmRX aW5kb3cgKmljb24pOworICAgICB2b2lkIGNhbmNlbERyYWcoKTsKKyAjZW5kaWYKKyAKK0BAIC0x MDksMTMgKzExMCwxNiBAQCBwcml2YXRlIFFfU0xPVFM6CisgCisgI2lmIFFUX0NPTkZJRyhkcmFn YW5kZHJvcCkKKyAgICAgdm9pZCBkcmFnU291cmNlQ2FuY2VsbGVkKCk7CistICAgIHZvaWQgZHJh Z1NvdXJjZVRhcmdldENoYW5nZWQoY29uc3QgUVN0cmluZyAmbWltZVR5cGUpOworICNlbmRpZgor IAorIHByaXZhdGU6CisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAgICAgUVBvaW50IGNh bGN1bGF0ZURyYWdQb3NpdGlvbihpbnQgeCwgaW50IHksIFFXaW5kb3cgKnduZCkgY29uc3Q7Cisg I2VuZGlmCisrICAgIHZvaWQgc2VuZFJlc3BvbnNlKFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRB Y3Rpb25zLCBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKworKyAg ICBzdGF0aWMgaW50IGRyb3BBY3Rpb25zVG9XbChRdDo6RHJvcEFjdGlvbnMgZHJvcEFjdGlvbnMp OworKworIAorICAgICBRV2F5bGFuZERpc3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CisgICAg IFFXYXlsYW5kSW5wdXREZXZpY2UgKm1faW5wdXREZXZpY2UgPSBudWxscHRyOworZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwIGIv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlci5jcHAKK2luZGV4 IDM1ZDY3MzA3Li42ZGM0Zjc3ZiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyLmNwcAorQEAgLTUwLDggKzUwLDggQEAgUVRfQkVHSU5f TkFNRVNQQUNFCisgCisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7CisgCistUVdheWxhbmRE YXRhRGV2aWNlTWFuYWdlcjo6UVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3Bs YXkgKmRpc3BsYXksIHVpbnQzMl90IGlkKQorLSAgICA6IHdsX2RhdGFfZGV2aWNlX21hbmFnZXIo ZGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIDEpCisrUVdheWxhbmREYXRhRGV2aWNlTWFuYWdl cjo6UVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIGlu dCB2ZXJzaW9uLCB1aW50MzJfdCBpZCkKKysgICAgOiB3bF9kYXRhX2RldmljZV9tYW5hZ2VyKGRp c3BsYXktPndsX3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIDMpKQorICAgICAsIG1fZGlz cGxheShkaXNwbGF5KQorIHsKKyAgICAgLy8gQ3JlYXRlIHRyYW5zZmVyIGRldmljZXMgZm9yIGFs bCBpbnB1dCBkZXZpY2VzLgorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YWRldmljZW1hbmFnZXJfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRk YXRhZGV2aWNlbWFuYWdlcl9wLmgKK2luZGV4IGJkMDVjMGZiLi41MTBkOWJlNCAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXJfcC5oCisr KysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAor QEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgUVdheWxhbmRJbnB1dERldmljZTsKKyBjbGFzcyBRX1dB WUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyIDogcHVibGljIFF0 V2F5bGFuZDo6d2xfZGF0YV9kZXZpY2VfbWFuYWdlcgorIHsKKyBwdWJsaWM6CistICAgIFFXYXls YW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCB1aW50MzJfdCBp ZCk7CisrICAgIFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNw bGF5LCBpbnQgdmVyc2lvbiwgdWludDMyX3QgaWQpOworICAgICB+UVdheWxhbmREYXRhRGV2aWNl TWFuYWdlcigpIG92ZXJyaWRlOworIAorICAgICBRV2F5bGFuZERhdGFEZXZpY2UgKmdldERhdGFE ZXZpY2UoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpY2UpOworZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNwcCBiL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNwcAoraW5kZXggMjI5N2U4YTEuLmZlMGVhOGM5IDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCisr KysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlci5jcHAKK0BAIC04Miw2 ICs4MiwxNSBAQCBRTWltZURhdGEgKlFXYXlsYW5kRGF0YU9mZmVyOjptaW1lRGF0YSgpCisgICAg IHJldHVybiBtX21pbWVEYXRhLmRhdGEoKTsKKyB9CisgCisrUXQ6OkRyb3BBY3Rpb25zIFFXYXls YW5kRGF0YU9mZmVyOjpzdXBwb3J0ZWRBY3Rpb25zKCkgY29uc3QKKyt7CisrICAgIGlmICh3bF9k YXRhX29mZmVyX2dldF92ZXJzaW9uKGNvbnN0X2Nhc3Q8Ojp3bF9kYXRhX29mZmVyKj4ob2JqZWN0 KCkpKSA8IDMpIHsKKysgICAgICAgIHJldHVybiBRdDo6TW92ZUFjdGlvbiB8IFF0OjpDb3B5QWN0 aW9uOworKyAgICB9CisrCisrICAgIHJldHVybiBtX3N1cHBvcnRlZEFjdGlvbnM7CisrfQorKwor IHZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OnN0YXJ0UmVjZWl2aW5nKGNvbnN0IFFTdHJpbmcgJm1p bWVUeXBlLCBpbnQgZmQpCisgeworICAgICByZWNlaXZlKG1pbWVUeXBlLCBmZCk7CitAQCAtOTMs NiArMTAyLDIyIEBAIHZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OmRhdGFfb2ZmZXJfb2ZmZXIoY29u c3QgUVN0cmluZyAmbWltZV90eXBlKQorICAgICBtX21pbWVEYXRhLT5hcHBlbmRGb3JtYXQobWlt ZV90eXBlKTsKKyB9CisgCisrdm9pZCBRV2F5bGFuZERhdGFPZmZlcjo6ZGF0YV9vZmZlcl9hY3Rp b24odWludDMyX3QgZG5kX2FjdGlvbikKKyt7CisrICAgIFFfVU5VU0VEKGRuZF9hY3Rpb24pOwor KyAgICAvLyBUaGlzIGlzIHRoZSBjb21wb3NpdG9yIHRlbGxpbmcgdGhlIGRyYWcgdGFyZ2V0IHdo YXQgYWN0aW9uIGl0IHNob3VsZCBwZXJmb3JtCisrICAgIC8vIEl0IGRvZXMgbm90IG1hcCBuaWNl bHkgaW50byBRdCBmaW5hbCBkcm9wIHNlbWFudGljcywgb3RoZXIgdGhhbiBwcmV0ZW5kaW5nIHRo ZXJlIGlzIG9ubHkgb25lIHN1cHBvcnRlZCBhY3Rpb24/CisrfQorKworK3ZvaWQgUVdheWxhbmRE YXRhT2ZmZXI6OmRhdGFfb2ZmZXJfc291cmNlX2FjdGlvbnModWludDMyX3Qgc291cmNlX2FjdGlv bnMpCisreworKyAgICBtX3N1cHBvcnRlZEFjdGlvbnMgPSBRdDo6RHJvcEFjdGlvbnMoKTsKKysg ICAgaWYgKHNvdXJjZV9hY3Rpb25zICYgV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9O X01PVkUpCisrICAgICAgICBtX3N1cHBvcnRlZEFjdGlvbnMgfD0gUXQ6Ok1vdmVBY3Rpb247Cisr ICAgIGlmIChzb3VyY2VfYWN0aW9ucyAmIFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElP Tl9DT1BZKQorKyAgICAgICAgbV9zdXBwb3J0ZWRBY3Rpb25zIHw9IFF0OjpDb3B5QWN0aW9uOwor K30KKysKKyBRV2F5bGFuZE1pbWVEYXRhOjpRV2F5bGFuZE1pbWVEYXRhKFFXYXlsYW5kQWJzdHJh Y3REYXRhT2ZmZXIgKmRhdGFPZmZlcikKKyAgICAgOiBtX2RhdGFPZmZlcihkYXRhT2ZmZXIpCisg eworQEAgLTE2MywxNyArMTg4LDE4IEBAIFFWYXJpYW50IFFXYXlsYW5kTWltZURhdGE6OnJldHJp ZXZlRGF0YV9zeXMoY29uc3QgUVN0cmluZyAmbWltZVR5cGUsIFFWYXJpYW50OjpUCisgCisgaW50 IFFXYXlsYW5kTWltZURhdGE6OnJlYWREYXRhKGludCBmZCwgUUJ5dGVBcnJheSAmZGF0YSkgY29u c3QKKyB7CistICAgIGZkX3NldCByZWFkc2V0OworLSAgICBGRF9aRVJPKCZyZWFkc2V0KTsKKy0g ICAgRkRfU0VUKGZkLCAmcmVhZHNldCk7CistICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7Cisr ICAgIHN0cnVjdCBwb2xsZmQgcmVhZHNldDsKKysgICAgcmVhZHNldC5mZCA9IGZkOworKyAgICBy ZWFkc2V0LmV2ZW50cyA9IFBPTExJTjsKKysgICAgc3RydWN0IHRpbWVzcGVjIHRpbWVvdXQ7Cisg ICAgIHRpbWVvdXQudHZfc2VjID0gMTsKKy0gICAgdGltZW91dC50dl91c2VjID0gMDsKKysgICAg dGltZW91dC50dl9uc2VjID0gMDsKKysKKyAKKyAgICAgUV9GT1JFVkVSIHsKKy0gICAgICAgIGlu dCByZWFkeSA9IHNlbGVjdChGRF9TRVRTSVpFLCAmcmVhZHNldCwgbnVsbHB0ciwgbnVsbHB0ciwg JnRpbWVvdXQpOworKyAgICAgICAgaW50IHJlYWR5ID0gcXRfc2FmZV9wb2xsKCZyZWFkc2V0LCAx LCAmdGltZW91dCk7CisgICAgICAgICBpZiAocmVhZHkgPCAwKSB7CistICAgICAgICAgICAgcVdh cm5pbmcoKSA8PCAiUVdheWxhbmREYXRhT2ZmZXI6IHNlbGVjdCgpIGZhaWxlZCI7CisrICAgICAg ICAgICAgcVdhcm5pbmcoKSA8PCAiUVdheWxhbmREYXRhT2ZmZXI6IHF0X3NhZmVfcG9sbCgpIGZh aWxlZCI7CisgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgfSBlbHNlIGlmIChyZWFk eSA9PSAwKSB7CisgICAgICAgICAgICAgcVdhcm5pbmcoIlFXYXlsYW5kRGF0YU9mZmVyOiB0aW1l b3V0IHJlYWRpbmcgZnJvbSBwaXBlIik7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRk YXRhb2ZmZXJfcC5oCitpbmRleCA5Y2YxNDgzYy4uNmY2NjczOTggMTAwNjQ0CistLS0gYS9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlcl9wLmgKKysrKyBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyX3AuaAorQEAgLTgyLDYgKzgyLDcgQEAgcHVibGlj OgorICAgICBleHBsaWNpdCBRV2F5bGFuZERhdGFPZmZlcihRV2F5bGFuZERpc3BsYXkgKmRpc3Bs YXksIHN0cnVjdCA6OndsX2RhdGFfb2ZmZXIgKm9mZmVyKTsKKyAgICAgflFXYXlsYW5kRGF0YU9m ZmVyKCkgb3ZlcnJpZGU7CisgICAgIFFNaW1lRGF0YSAqbWltZURhdGEoKSBvdmVycmlkZTsKKysg ICAgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMoKSBjb25zdDsKKyAKKyAgICAgUVN0 cmluZyBmaXJzdEZvcm1hdCgpIGNvbnN0OworIAorQEAgLTg5LDEwICs5MCwxMyBAQCBwdWJsaWM6 CisgCisgcHJvdGVjdGVkOgorICAgICB2b2lkIGRhdGFfb2ZmZXJfb2ZmZXIoY29uc3QgUVN0cmlu ZyAmbWltZV90eXBlKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX29mZmVyX3NvdXJjZV9hY3Rp b25zKHVpbnQzMl90IHNvdXJjZV9hY3Rpb25zKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX29m ZmVyX2FjdGlvbih1aW50MzJfdCBkbmRfYWN0aW9uKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgor ICAgICBRV2F5bGFuZERpc3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFTY29wZWRQ b2ludGVyPFFXYXlsYW5kTWltZURhdGE+IG1fbWltZURhdGE7CisrICAgIFF0OjpEcm9wQWN0aW9u cyBtX3N1cHBvcnRlZEFjdGlvbnM7CisgfTsKKyAKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2UuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRkYXRhc291cmNlLmNwcAoraW5kZXggZjQ1MTIyZmIuLjU1OTljYmQ0IDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlLmNwcAorKysrIGIv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlLmNwcAorQEAgLTEwMSw3ICsx MDEsMzIgQEAgdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX3NlbmQoY29uc3Qg UVN0cmluZyAmbWltZV90eXBlLCBpbnQzMl90IGZkKQorIAorIHZvaWQgUVdheWxhbmREYXRhU291 cmNlOjpkYXRhX3NvdXJjZV90YXJnZXQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKQorIHsKKy0g ICAgUV9FTUlUIHRhcmdldENoYW5nZWQobWltZV90eXBlKTsKKysgICAgbV9hY2NlcHRlZCA9ICFt aW1lX3R5cGUuaXNFbXB0eSgpOworKyAgICBRX0VNSVQgZG5kUmVzcG9uc2VVcGRhdGVkKG1fYWNj ZXB0ZWQsIG1fZHJvcEFjdGlvbik7CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhU291cmNlOjpk YXRhX3NvdXJjZV9hY3Rpb24odWludDMyX3QgYWN0aW9uKQorK3sKKysgICAgUXQ6OkRyb3BBY3Rp b24gcXRBY3Rpb24gPSBRdDo6SWdub3JlQWN0aW9uOworKworKyAgICBpZiAoYWN0aW9uID09IFdM X0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9NT1ZFKQorKyAgICAgICAgcXRBY3Rpb24g PSBRdDo6TW92ZUFjdGlvbjsKKysgICAgZWxzZSBpZiAoYWN0aW9uID09IFdMX0RBVEFfREVWSUNF X01BTkFHRVJfRE5EX0FDVElPTl9DT1BZKQorKyAgICAgICAgcXRBY3Rpb24gPSBRdDo6Q29weUFj dGlvbjsKKysKKysgICAgbV9kcm9wQWN0aW9uID0gcXRBY3Rpb247CisrICAgIFFfRU1JVCBkbmRS ZXNwb25zZVVwZGF0ZWQobV9hY2NlcHRlZCwgbV9kcm9wQWN0aW9uKTsKKyt9CisrCisrdm9pZCBR V2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX2RuZF9maW5pc2hlZCgpCisreworKyAgICBR X0VNSVQgZmluaXNoZWQoKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFf c291cmNlX2RuZF9kcm9wX3BlcmZvcm1lZCgpCisreworKworKyAgICBRX0VNSVQgZG5kRHJvcHBl ZChtX2FjY2VwdGVkLCBtX2Ryb3BBY3Rpb24pOworIH0KKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlX3AuaCBiL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgKK2luZGV4IDI1YWZmZjc5Li45NmYwN2JjMyAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgK KysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgKK0BAIC03 NywxNyArNzcsMjUgQEAgcHVibGljOgorICAgICBRTWltZURhdGEgKm1pbWVEYXRhKCkgY29uc3Q7 CisgCisgUV9TSUdOQUxTOgorLSAgICB2b2lkIHRhcmdldENoYW5nZWQoY29uc3QgUVN0cmluZyAm bWltZV90eXBlKTsKKyAgICAgdm9pZCBjYW5jZWxsZWQoKTsKKysgICAgdm9pZCBmaW5pc2hlZCgp OworKworKyAgICB2b2lkIGRuZFJlc3BvbnNlVXBkYXRlZChib29sIGFjY2VwdGVkLCBRdDo6RHJv cEFjdGlvbiBhY3Rpb24pOworKyAgICB2b2lkIGRuZERyb3BwZWQoYm9vbCBhY2NlcHRlZCwgUXQ6 OkRyb3BBY3Rpb24gYWN0aW9uKTsKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgZGF0YV9zb3Vy Y2VfY2FuY2VsbGVkKCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgZGF0YV9zb3VyY2Vfc2VuZChjb25z dCBRU3RyaW5nICZtaW1lX3R5cGUsIGludDMyX3QgZmQpIG92ZXJyaWRlOworICAgICB2b2lkIGRh dGFfc291cmNlX3RhcmdldChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUpIG92ZXJyaWRlOworKyAg ICB2b2lkIGRhdGFfc291cmNlX2RuZF9kcm9wX3BlcmZvcm1lZCgpIG92ZXJyaWRlOworKyAgICB2 b2lkIGRhdGFfc291cmNlX2RuZF9maW5pc2hlZCgpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFf c291cmNlX2FjdGlvbih1aW50MzJfdCBhY3Rpb24pIG92ZXJyaWRlOworIAorIHByaXZhdGU6Cisg ICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5ID0gbnVsbHB0cjsKKyAgICAgUU1pbWVEYXRh ICptX21pbWVfZGF0YSA9IG51bGxwdHI7CisrICAgIGJvb2wgbV9hY2NlcHRlZCA9IGZhbHNlOwor KyAgICBRdDo6RHJvcEFjdGlvbiBtX2Ryb3BBY3Rpb24gPSBRdDo6SWdub3JlQWN0aW9uOworIH07 CisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxh eS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwCitpbmRleCBm MTBjMWY3OS4uYzAxZTIzOGIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRpc3BsYXkuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3Bs YXkuY3BwCitAQCAtODUsMTAgKzg1LDIwMyBAQAorIAorICNpbmNsdWRlIDxlcnJuby5oPgorIAor KyNpbmNsdWRlIDx0dXBsZT4gLy8gZm9yIHN0ZDo6dGllCisrCisrc3RhdGljIHZvaWQgY2hlY2tX YXlsYW5kRXJyb3Ioc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXkpCisreworKyAgICBpbnQgZWNv ZGUgPSB3bF9kaXNwbGF5X2dldF9lcnJvcihkaXNwbGF5KTsKKysgICAgaWYgKChlY29kZSA9PSBF UElQRSB8fCBlY29kZSA9PSBFQ09OTlJFU0VUKSkgeworKyAgICAgICAgLy8gc3BlY2lhbCBjYXNl IHRoaXMgdG8gcHJvdmlkZSBhIG5pY2VyIGVycm9yCisrICAgICAgICBxV2FybmluZygiVGhlIFdh eWxhbmQgY29ubmVjdGlvbiBicm9rZS4gRGlkIHRoZSBXYXlsYW5kIGNvbXBvc2l0b3IgZGllPyIp OworKyAgICB9IGVsc2UgeworKyAgICAgICAgcVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rp b24gZXhwZXJpZW5jZWQgYSBmYXRhbCBlcnJvcjogJXMiLCBzdHJlcnJvcihlY29kZSkpOworKyAg ICB9CisrICAgIF9leGl0KDEpOworK30KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBuYW1l c3BhY2UgUXRXYXlsYW5kQ2xpZW50IHsKKyAKKytjbGFzcyBFdmVudFRocmVhZCA6IHB1YmxpYyBR VGhyZWFkCisreworKyAgICBRX09CSkVDVAorK3B1YmxpYzoKKysgICAgZW51bSBPcGVyYXRpbmdN b2RlIHsKKysgICAgICAgIEVtaXRUb0Rpc3BhdGNoLCAvLyBFbWl0IHRoZSBzaWduYWwsIGFsbG93 IGRpc3BhdGNoaW5nIGluIGEgZGlmZmVybnQgdGhyZWFkLgorKyAgICAgICAgU2VsZkRpc3BhdGNo LCAvLyBEaXNwYXRjaCB0aGUgZXZlbnRzIGluc2lkZSB0aGlzIHRocmVhZC4KKysgICAgfTsKKysK KysgICAgRXZlbnRUaHJlYWQoc3RydWN0IHdsX2Rpc3BsYXkgKiB3bCwgc3RydWN0IHdsX2V2ZW50 X3F1ZXVlICogZXZfcXVldWUsCisrICAgICAgICAgICAgICAgIE9wZXJhdGluZ01vZGUgbW9kZSkK KysgICAgICAgIDogbV9mZCh3bF9kaXNwbGF5X2dldF9mZCh3bCkpCisrICAgICAgICAsIG1fcGlw ZWZkeyAtMSwgLTEgfQorKyAgICAgICAgLCBtX3dsZGlzcGxheSh3bCkKKysgICAgICAgICwgbV93 bGV2cXVldWUoZXZfcXVldWUpCisrICAgICAgICAsIG1fbW9kZShtb2RlKQorKyAgICAgICAgLCBt X3JlYWRpbmcodHJ1ZSkKKysgICAgICAgICwgbV9xdWl0dGluZyhmYWxzZSkKKysgICAgeworKyAg ICAgICAgc2V0T2JqZWN0TmFtZShRU3RyaW5nTGl0ZXJhbCgiV2F5bGFuZEV2ZW50VGhyZWFkIikp OworKyAgICB9CisrCisrICAgIHZvaWQgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkKKysgICAgewor KyAgICAgICAgLyoKKysgICAgICAgICAqIERpc3BhdGNoIHBlbmRpbmcgZXZlbnRzIGFuZCBmbHVz aCB0aGUgcmVxdWVzdHMgYXQgbGVhc3Qgb25jZS4gSWYgdGhlIGV2ZW50IHRocmVhZAorKyAgICAg ICAgICogaXMgbm90IHJlYWRpbmcsIHRyeSB0byBjYWxsIF9wcmVwYXJlX3JlYWQoKSB0byBhbGxv dyB0aGUgZXZlbnQgdGhyZWFkIHRvIHBvbGwoKS4KKysgICAgICAgICAqIElmIHRoYXQgZmFpbHMs IHJlLXRyeSBkaXNwYXRjaCAmIGZsdXNoIGFnYWluIHVudGlsIF9wcmVwYXJlX3JlYWQoKSBpcyBz dWNjZXNzZnVsLgorKyAgICAgICAgICoKKysgICAgICAgICAqIFRoaXMgYWxsb3cgYW55IGNhbGwg dG8gcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkgdG8gc3RhcnQgZXZlbnQgdGhyZWFkJ3MgcG9sbGlu ZywKKysgICAgICAgICAqIG5vdCBvbmx5IHRoZSBvbmUgaXNzdWVkIGZyb20gZXZlbnQgdGhyZWFk J3Mgd2FpdEZvclJlYWRpbmcoKSwgd2hpY2ggbWVhbnMgZnVuY3Rpb25zCisrICAgICAgICAgKiBj YWxsZWQgZnJvbSBkaXNwYXRjaF9wZW5kaW5nKCkgY2FuIHNhZmVseSBzcGluIGFuIGV2ZW50IGxv b3AuCisrICAgICAgICAgKi8KKysgICAgICAgIGZvciAoOzspIHsKKysgICAgICAgICAgICBpZiAo ZGlzcGF0Y2hRdWV1ZVBlbmRpbmcoKSA8IDApIHsKKysgICAgICAgICAgICAgICAgY2hlY2tXYXls YW5kRXJyb3IobV93bGRpc3BsYXkpOworKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAg ICAgICAgfQorKworKyAgICAgICAgICAgIHdsX2Rpc3BsYXlfZmx1c2gobV93bGRpc3BsYXkpOwor KworKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gY2hlY2sgaWYgZXZlbnQgdGhyZWFkIGlzIHJl YWRpbmcgZXZlcnkgdGltZSB3ZSBkaXNwYXRjaAorKyAgICAgICAgICAgIC8vIHNvbWV0aGluZywg YXMgdGhhdCBtYXkgcmVjdXJzaXZlbHkgY2FsbCB0aGlzIGZ1bmN0aW9uLgorKyAgICAgICAgICAg IGlmIChtX3JlYWRpbmcubG9hZEFjcXVpcmUoKSkKKysgICAgICAgICAgICAgICAgYnJlYWs7Cisr CisrICAgICAgICAgICAgaWYgKHByZXBhcmVSZWFkUXVldWUoKSA9PSAwKSB7CisrICAgICAgICAg ICAgICAgIFFNdXRleExvY2tlciBsKCZtX211dGV4KTsKKysgICAgICAgICAgICAgICAgbV9yZWFk aW5nLnN0b3JlUmVsZWFzZSh0cnVlKTsKKysgICAgICAgICAgICAgICAgbV9jb25kLndha2VPbmUo KTsKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQor KyAgICB9CisrCisrICAgIHZvaWQgc3RvcCgpCisrICAgIHsKKysgICAgICAgIC8vIFdlIGhhdmUg dG8gYm90aCB3cml0ZSB0byB0aGUgcGlwZSBhbmQgc2V0IHRoZSBmbGFnLCBhcyB0aGUgdGhyZWFk IG1heSBiZQorKyAgICAgICAgLy8gZWl0aGVyIGluIHRoZSBwb2xsKCkgb3Igd2FpdGluZyBmb3Ig X3ByZXBhcmVfcmVhZCgpLgorKyAgICAgICAgaWYgKG1fcGlwZWZkWzFdICE9IC0xICYmIHdyaXRl KG1fcGlwZWZkWzFdLCAiXDAiLCAxKSA9PSAtMSkKKysgICAgICAgICAgICBxV2FybmluZygiRmFp bGVkIHRvIHdyaXRlIHRvIHRoZSBwaXBlOiAlcy4iLCBzdHJlcnJvcihlcnJubykpOworKworKyAg ICAgICAgeworKyAgICAgICAgICAgIFFNdXRleExvY2tlciBsKCZtX211dGV4KTsKKysgICAgICAg ICAgICBtX3F1aXR0aW5nID0gdHJ1ZTsKKysgICAgICAgICAgICBtX2NvbmQud2FrZU9uZSgpOwor KyAgICAgICAgfQorKworKyAgICAgICAgd2FpdCgpOworKyAgICB9CisrCisrUV9TSUdOQUxTOgor KyAgICB2b2lkIG5lZWRSZWFkQW5kRGlzcGF0Y2goKTsKKysKKytwcm90ZWN0ZWQ6CisrICAgIHZv aWQgcnVuKCkgb3ZlcnJpZGUKKysgICAgeworKyAgICAgICAgLy8gd2UgdXNlIHRoaXMgcGlwZSB0 byBtYWtlIHRoZSBsb29wIGV4aXQgb3RoZXJ3aXNlIGlmIHdlIHNpbXBseSB1c2VkIGEgZmxhZyBv biB0aGUgbG9vcCBjb25kaXRpb24sIGlmIHN0b3AoKSBnZXRzCisrICAgICAgICAvLyBjYWxsZWQg d2hpbGUgcG9sbCgpIGlzIGJsb2NraW5nIHRoZSB0aHJlYWQgd2lsbCBuZXZlciBxdWl0IHNpbmNl IHRoZXJlIGFyZSBubyB3YXlsYW5kIG1lc3NhZ2VzIGNvbWluZyBhbnltb3JlLgorKyAgICAgICAg c3RydWN0IFBpcGUKKysgICAgICAgIHsKKysgICAgICAgICAgICBQaXBlKGludCAqZmRzKQorKyAg ICAgICAgICAgICAgICA6IGZkcyhmZHMpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg ICBpZiAocXRfc2FmZV9waXBlKGZkcykgIT0gMCkKKysgICAgICAgICAgICAgICAgICAgIHFXYXJu aW5nKCJQaXBlIGNyZWF0aW9uIGZhaWxlZC4gUXVpdHRpbmcgbWF5IGhhbmcuIik7CisrICAgICAg ICAgICAgfQorKyAgICAgICAgICAgIH5QaXBlKCkKKysgICAgICAgICAgICB7CisrICAgICAgICAg ICAgICAgIGlmIChmZHNbMF0gIT0gLTEpIHsKKysgICAgICAgICAgICAgICAgICAgIGNsb3NlKGZk c1swXSk7CisrICAgICAgICAgICAgICAgICAgICBjbG9zZShmZHNbMV0pOworKyAgICAgICAgICAg ICAgICB9CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIGludCAqZmRzOworKyAgICAg ICAgfSBwaXBlKG1fcGlwZWZkKTsKKysKKysgICAgICAgIC8vIE1ha2UgdGhlIG1haW4gdGhyZWFk IGNhbGwgd2xfcHJlcGFyZV9yZWFkKCksIGRpc3BhdGNoIHRoZSBwZW5kaW5nIG1lc3NhZ2VzIGFu ZCBmbHVzaCB0aGUKKysgICAgICAgIC8vIG91dGJvdW5kIG9uZXMuIFdhaXQgdW50aWwgaXQncyBk b25lIGJlZm9yZSBwcm9jZWVkaW5nLCB1bmxlc3Mgd2UncmUgdG9sZCB0byBxdWl0LgorKyAgICAg ICAgd2hpbGUgKHdhaXRGb3JSZWFkaW5nKCkpIHsKKysgICAgICAgICAgICBwb2xsZmQgZmRzWzJd ID0geyB7IG1fZmQsIFBPTExJTiwgMCB9LCB7IG1fcGlwZWZkWzBdLCBQT0xMSU4sIDAgfSB9Owor KyAgICAgICAgICAgIHBvbGwoZmRzLCAyLCAtMSk7CisrCisrICAgICAgICAgICAgaWYgKGZkc1sx XS5yZXZlbnRzICYgUE9MTElOKSB7CisrICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IHJlYWxs eSBjYXJlIHRvIHJlYWQgdGhlIGJ5dGUgdGhhdCB3YXMgd3JpdHRlbiBoZXJlIHNpbmNlIHdlJ3Jl IGNsb3NpbmcgZG93bgorKyAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X2NhbmNlbF9yZWFkKG1f d2xkaXNwbGF5KTsKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKwor KyAgICAgICAgICAgIGlmIChmZHNbMF0ucmV2ZW50cyAmIFBPTExJTikKKysgICAgICAgICAgICAg ICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtX3dsZGlzcGxheSk7CisrICAgICAgICAgICAgICAg IC8vIFRoZSBwb2xsbCB3YXMgc3VjY2VzZnVsbCBhbmQgdGhlIGV2ZW50IHRocmVhZCBkaWQgdGhl IHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMoKS4gT24gdGhlIG5leHQgaXRlcmF0aW9uIG9mIHRoZSBs b29wCisrICAgICAgICAgICAgICAgIC8vIHRoZSBldmVudCBzZW50IHRvIHRoZSBtYWluIHRocmVh ZCB3aWxsIGNhdXNlIGl0IHRvIGRpc3BhdGNoIHRoZSBtZXNzYWdlcyBqdXN0IHJlYWQsIHVubGVz cyB0aGUgbG9vcCBleGl0cyBpbiB3aGljaAorKyAgICAgICAgICAgICAgICAvLyBjYXNlIHdlIGRv bid0IGNhcmUgYW55bW9yZSBhYm91dCB0aGVtLgorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAg ICAgICAgICAgd2xfZGlzcGxheV9jYW5jZWxfcmVhZChtX3dsZGlzcGxheSk7CisrICAgICAgICB9 CisrICAgIH0KKysKKytwcml2YXRlOgorKyAgICBib29sIHdhaXRGb3JSZWFkaW5nKCkKKysgICAg eworKyAgICAgICAgUV9BU1NFUlQoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpID09IHRoaXMpOwor KworKyAgICAgICAgbV9yZWFkaW5nLnN0b3JlUmVsZWFzZShmYWxzZSk7CisrCisrICAgICAgICBp ZiAobV9tb2RlID09IFNlbGZEaXNwYXRjaCkgeworKyAgICAgICAgICAgIHJlYWRBbmREaXNwYXRj aEV2ZW50cygpOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBRX0VNSVQgbmVlZFJl YWRBbmREaXNwYXRjaCgpOworKworKyAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtX211 dGV4KTsKKysgICAgICAgICAgICAvLyBtX3JlYWRpbmcgbWlnaHQgYmUgc2V0IGZyb20gb3VyIGVt aXQgb3Igc29tZSBvdGhlciBpbnZvY2F0aW9uIG9mCisrICAgICAgICAgICAgLy8gcmVhZEFuZERp c3BhdGNoRXZlbnRzKCkuCisrICAgICAgICAgICAgd2hpbGUgKCFtX3JlYWRpbmcubG9hZFJlbGF4 ZWQoKSAmJiAhbV9xdWl0dGluZykKKysgICAgICAgICAgICAgICAgbV9jb25kLndhaXQoJm1fbXV0 ZXgpOworKyAgICAgICAgfQorKworKyAgICAgICAgcmV0dXJuICFtX3F1aXR0aW5nOworKyAgICB9 CisrCisrICAgIGludCBkaXNwYXRjaFF1ZXVlUGVuZGluZygpCisrICAgIHsKKysgICAgICAgIGlm IChtX3dsZXZxdWV1ZSkKKysgICAgICAgICAgICByZXR1cm4gd2xfZGlzcGxheV9kaXNwYXRjaF9x dWV1ZV9wZW5kaW5nKG1fd2xkaXNwbGF5LCBtX3dsZXZxdWV1ZSk7CisrICAgICAgICBlbHNlCisr ICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcGVuZGluZyhtX3dsZGlzcGxh eSk7CisrICAgIH0KKysKKysgICAgaW50IHByZXBhcmVSZWFkUXVldWUoKQorKyAgICB7CisrICAg ICAgICBpZiAobV93bGV2cXVldWUpCisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfcHJl cGFyZV9yZWFkX3F1ZXVlKG1fd2xkaXNwbGF5LCBtX3dsZXZxdWV1ZSk7CisrICAgICAgICBlbHNl CisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkKG1fd2xkaXNwbGF5 KTsKKysgICAgfQorKworKyAgICBpbnQgbV9mZDsKKysgICAgaW50IG1fcGlwZWZkWzJdOworKyAg ICB3bF9kaXNwbGF5ICptX3dsZGlzcGxheTsKKysgICAgd2xfZXZlbnRfcXVldWUgKm1fd2xldnF1 ZXVlOworKyAgICBPcGVyYXRpbmdNb2RlIG1fbW9kZTsKKysKKysgICAgLyogQ29uY3VycmVuY3kg bm90ZSB3aGVuIG9wZXJhdGluZyBpbiBFbWl0VG9EaXNwYXRjaCBtb2RlOgorKyAgICAgKiBtX3Jl YWRpbmcgaXMgc2V0IHRvIGZhbHNlIGluc2lkZSBldmVudCB0aHJlYWQncyB3YWl0Rm9yUmVhZGlu ZygpLCBhbmQgaXMKKysgICAgICogc2V0IHRvIHRydWUgaW5zaWRlIG1haW4gdGhyZWFkJ3MgcmVh ZEFuZERpc3BhdGNoRXZlbnRzKCkuCisrICAgICAqIFRoZSBsb2NrIGlzIG5vdCB0YWtlbiB3aGVu IHNldHRpbmcgbV9yZWFkaW5nIHRvIGZhbHNlLCBhcyB0aGUgbWFpbiB0aHJlYWQKKysgICAgICog aXMgbm90IGFjdGl2ZWx5IHdhaXRpbmcgZm9yIGl0IHRvIHR1cm4gZmFsc2UuIEhvd2V2ZXIsIHRo ZSBsb2NrIGlzIHRha2VuCisrICAgICAqIGluc2lkZSByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKSBi ZWZvcmUgc2V0dGluZyBtX3JlYWRpbmcgdG8gdHJ1ZSwKKysgICAgICogYXMgdGhlIGV2ZW50IHRo cmVhZCBpcyBhY3RpdmVseSB3YWl0aW5nIGZvciBpdCB1bmRlciB0aGUgd2FpdCBjb25kaXRpb24u CisrICAgICAqLworKworKyAgICBRQXRvbWljSW50ZWdlcjxib29sPiBtX3JlYWRpbmc7CisrICAg IGJvb2wgbV9xdWl0dGluZzsKKysgICAgUU11dGV4IG1fbXV0ZXg7CisrICAgIFFXYWl0Q29uZGl0 aW9uIG1fY29uZDsKKyt9OworKworIFFfTE9HR0lOR19DQVRFR09SWShsY1FwYVdheWxhbmQsICJx dC5xcGEud2F5bGFuZCIpOyAvLyBmb3IgZ2VuZXJhbCAodW5jYXRlZ29yaXplZCkgV2F5bGFuZCBw bGF0Zm9ybSBsb2dnaW5nCisgCisgc3RydWN0IHdsX3N1cmZhY2UgKlFXYXlsYW5kRGlzcGxheTo6 Y3JlYXRlU3VyZmFjZSh2b2lkICpoYW5kbGUpCitAQCAtMTU4LDE3ICszNTEsMTYgQEAgUVdheWxh bmREaXNwbGF5OjpRV2F5bGFuZERpc3BsYXkoUVdheWxhbmRJbnRlZ3JhdGlvbiAqd2F5bGFuZElu dGVncmF0aW9uKQorICAgICBpZiAoIW1Ya2JDb250ZXh0KQorICAgICAgICAgcUNXYXJuaW5nKGxj UXBhV2F5bGFuZCwgImZhaWxlZCB0byBjcmVhdGUgeGtiIGNvbnRleHQiKTsKKyAjZW5kaWYKKy0K Ky0gICAgZm9yY2VSb3VuZFRyaXAoKTsKKy0KKy0gICAgaWYgKCFtV2FpdGluZ1NjcmVlbnMuaXNF bXB0eSgpKSB7CistICAgICAgICAvLyBHaXZlIHdsX291dHB1dC5kb25lIGFuZCB6eGRnX291dHB1 dF92MS5kb25lIGV2ZW50cyBhIGNoYW5jZSB0byBhcnJpdmUKKy0gICAgICAgIGZvcmNlUm91bmRU cmlwKCk7CistICAgIH0KKyB9CisgCisgUVdheWxhbmREaXNwbGF5Ojp+UVdheWxhbmREaXNwbGF5 KHZvaWQpCisgeworKyAgICBpZiAobV9ldmVudFRocmVhZCkKKysgICAgICAgIG1fZXZlbnRUaHJl YWQtPnN0b3AoKTsKKysKKysgICAgaWYgKG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkKQorKyAgICAg ICAgbV9mcmFtZUV2ZW50UXVldWVUaHJlYWQtPnN0b3AoKTsKKysKKyAgICAgaWYgKG1TeW5jQ2Fs bGJhY2spCisgICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KG1TeW5jQ2FsbGJhY2spOworIAor QEAgLTE4Nyw2ICszNzksMjEgQEAgUVdheWxhbmREaXNwbGF5Ojp+UVdheWxhbmREaXNwbGF5KHZv aWQpCisgI2VuZGlmCisgICAgIGlmIChtRGlzcGxheSkKKyAgICAgICAgIHdsX2Rpc3BsYXlfZGlz Y29ubmVjdChtRGlzcGxheSk7CisrCisrICAgIGlmIChtX2ZyYW1lRXZlbnRRdWV1ZSkKKysgICAg ICAgIHdsX2V2ZW50X3F1ZXVlX2Rlc3Ryb3kobV9mcmFtZUV2ZW50UXVldWUpOworK30KKysKKysv LyBTdGVwcyB3aGljaCBpcyBjYWxsZWQganVzdCBhZnRlciBjb25zdHJ1Y3Rvci4gVGhpcyBzZXBh cmF0ZXMgcmVnaXN0cnlfZ2xvYmFsKCkgb3V0IG9mIHRoZSBjb25zdHJ1Y3RvcgorKy8vIHNvIHRo YXQgZmFjdG9yeSBmdW5jdGlvbnMgaW4gaW50ZWdyYXRpb24gY2FuIGJlIG92ZXJyaWRkZW4uCisr dm9pZCBRV2F5bGFuZERpc3BsYXk6OmluaXRpYWxpemUoKQorK3sKKysgICAgZm9yY2VSb3VuZFRy aXAoKTsKKysKKysgICAgaWYgKCFtV2FpdGluZ1NjcmVlbnMuaXNFbXB0eSgpKSB7CisrICAgICAg ICAvLyBHaXZlIHdsX291dHB1dC5kb25lIGFuZCB6eGRnX291dHB1dF92MS5kb25lIGV2ZW50cyBh IGNoYW5jZSB0byBhcnJpdmUKKysgICAgICAgIGZvcmNlUm91bmRUcmlwKCk7CisrICAgIH0KKyB9 CisgCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmVuc3VyZVNjcmVlbigpCitAQCAtMjAzLDk4ICs0 MTAsMzcgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmVuc3VyZVNjcmVlbigpCisgCisgdm9pZCBR V2F5bGFuZERpc3BsYXk6OmNoZWNrRXJyb3IoKSBjb25zdAorIHsKKy0gICAgaW50IGVjb2RlID0g d2xfZGlzcGxheV9nZXRfZXJyb3IobURpc3BsYXkpOworLSAgICBpZiAoKGVjb2RlID09IEVQSVBF IHx8IGVjb2RlID09IEVDT05OUkVTRVQpKSB7CistICAgICAgICAvLyBzcGVjaWFsIGNhc2UgdGhp cyB0byBwcm92aWRlIGEgbmljZXIgZXJyb3IKKy0gICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFu ZCBjb25uZWN0aW9uIGJyb2tlLiBEaWQgdGhlIFdheWxhbmQgY29tcG9zaXRvciBkaWU/Iik7Cist ICAgIH0gZWxzZSB7CistICAgICAgICBxV2FybmluZygiVGhlIFdheWxhbmQgY29ubmVjdGlvbiBl eHBlcmllbmNlZCBhIGZhdGFsIGVycm9yOiAlcyIsIHN0cmVycm9yKGVjb2RlKSk7CistICAgIH0K Ky0gICAgX2V4aXQoMSk7CisrICAgIGNoZWNrV2F5bGFuZEVycm9yKG1EaXNwbGF5KTsKKyB9Cisg CisrLy8gQ2FsbGVkIGluIG1haW4gdGhyZWFkLCBlaXRoZXIgZnJvbSBxdWV1ZWQgc2lnbmFsIG9y IGRpcmVjdGx5LgorIHZvaWQgUVdheWxhbmREaXNwbGF5OjpmbHVzaFJlcXVlc3RzKCkKKyB7Cist ICAgIGlmICh3bF9kaXNwbGF5X3ByZXBhcmVfcmVhZChtRGlzcGxheSkgPT0gMCkgeworLSAgICAg ICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtRGlzcGxheSk7CistICAgIH0KKy0KKy0gICAgaWYg KHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcGVuZGluZyhtRGlzcGxheSkgPCAwKQorLSAgICAgICAgY2hl Y2tFcnJvcigpOworLQorLSAgICB7CistICAgICAgICBRUmVhZExvY2tlciBsb2NrZXIoJm1fZnJh bWVRdWV1ZUxvY2spOworLSAgICAgICAgZm9yIChjb25zdCBGcmFtZVF1ZXVlICZxIDogbUV4dGVy bmFsUXVldWVzKSB7CistICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcihxLm11dGV4KTsK Ky0gICAgICAgICAgICB3aGlsZSAod2xfZGlzcGxheV9wcmVwYXJlX3JlYWRfcXVldWUobURpc3Bs YXksIHEucXVldWUpICE9IDApCistICAgICAgICAgICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hf cXVldWVfcGVuZGluZyhtRGlzcGxheSwgcS5xdWV1ZSk7CistICAgICAgICAgICAgd2xfZGlzcGxh eV9yZWFkX2V2ZW50cyhtRGlzcGxheSk7CistICAgICAgICAgICAgd2xfZGlzcGxheV9kaXNwYXRj aF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxLnF1ZXVlKTsKKy0gICAgICAgIH0KKy0gICAgfQor LQorLSAgICB3bF9kaXNwbGF5X2ZsdXNoKG1EaXNwbGF5KTsKKy19CistCistdm9pZCBRV2F5bGFu ZERpc3BsYXk6OmJsb2NraW5nUmVhZEV2ZW50cygpCisteworLSAgICBpZiAod2xfZGlzcGxheV9k aXNwYXRjaChtRGlzcGxheSkgPCAwKQorLSAgICAgICAgY2hlY2tFcnJvcigpOworLX0KKy0KKy12 b2lkIFFXYXlsYW5kRGlzcGxheTo6ZGVzdHJveUZyYW1lUXVldWUoY29uc3QgUVdheWxhbmREaXNw bGF5OjpGcmFtZVF1ZXVlICZxKQorLXsKKy0gICAgUVdyaXRlTG9ja2VyIGxvY2tlcigmbV9mcmFt ZVF1ZXVlTG9jayk7CistICAgIGF1dG8gaXQgPSBzdGQ6OmZpbmRfaWYobUV4dGVybmFsUXVldWVz LmJlZ2luKCksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgbUV4dGVybmFsUXVldWVzLmVu ZCgpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFsmcV0gKGNvbnN0IFFXYXlsYW5kRGlz cGxheTo6RnJhbWVRdWV1ZSAmb3RoZXIpeyByZXR1cm4gb3RoZXIucXVldWUgPT0gcS5xdWV1ZTsg fSk7CistICAgIFFfQVNTRVJUKGl0ICE9IG1FeHRlcm5hbFF1ZXVlcy5lbmQoKSk7CistICAgIG1F eHRlcm5hbFF1ZXVlcy5lcmFzZShpdCk7CistICAgIGlmIChxLnF1ZXVlICE9IG51bGxwdHIpCist ICAgICAgICB3bF9ldmVudF9xdWV1ZV9kZXN0cm95KHEucXVldWUpOworLSAgICBkZWxldGUgcS5t dXRleDsKKysgICAgbV9ldmVudFRocmVhZC0+cmVhZEFuZERpc3BhdGNoRXZlbnRzKCk7CisgfQor IAorLVFXYXlsYW5kRGlzcGxheTo6RnJhbWVRdWV1ZSBRV2F5bGFuZERpc3BsYXk6OmNyZWF0ZUZy YW1lUXVldWUoKQorKy8vIFdlIGhhdmUgdG8gd2FpdCB1bnRpbCB3ZSBoYXZlIGFuIGV2ZW50RGlz cGF0Y2hlciBiZWZvcmUgY3JlYXRpbmcgdGhlIGV2ZW50VGhyZWFkLAorKy8vIG90aGVyd2lzZSBm b3JjZVJvdW5kVHJpcCgpIG1heSBibG9jayBpbnNpZGUgX2V2ZW50c19yZWFkKCkgYmVjYXVzZSBl dmVudFRocmVhZCBpcworKy8vIHBvbGxpbmcuCisrdm9pZCBRV2F5bGFuZERpc3BsYXk6OmluaXRF dmVudFRocmVhZCgpCisgeworLSAgICBRV3JpdGVMb2NrZXIgbG9ja2VyKCZtX2ZyYW1lUXVldWVM b2NrKTsKKy0gICAgRnJhbWVRdWV1ZSBxe2NyZWF0ZUV2ZW50UXVldWUoKX07CistICAgIG1FeHRl cm5hbFF1ZXVlcy5hcHBlbmQocSk7CistICAgIHJldHVybiBxOworLX0KKysgICAgbV9ldmVudFRo cmVhZC5yZXNldCgKKysgICAgICAgICAgICBuZXcgRXZlbnRUaHJlYWQobURpc3BsYXksIC8qIGRl ZmF1bHQgcXVldWUgKi8gbnVsbHB0ciwgRXZlbnRUaHJlYWQ6OkVtaXRUb0Rpc3BhdGNoKSk7Cisr ICAgIGNvbm5lY3QobV9ldmVudFRocmVhZC5nZXQoKSwgJkV2ZW50VGhyZWFkOjpuZWVkUmVhZEFu ZERpc3BhdGNoLCB0aGlzLAorKyAgICAgICAgICAgICZRV2F5bGFuZERpc3BsYXk6OmZsdXNoUmVx dWVzdHMsIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKysgICAgbV9ldmVudFRocmVhZC0+c3RhcnQo KTsKKyAKKy13bF9ldmVudF9xdWV1ZSAqUVdheWxhbmREaXNwbGF5OjpjcmVhdGVFdmVudFF1ZXVl KCkKKy17CistICAgIHJldHVybiB3bF9kaXNwbGF5X2NyZWF0ZV9xdWV1ZShtRGlzcGxheSk7Cisr ICAgIC8vIHdsX2Rpc3BsYXlfZGlzY29ubmVjdCgpIGZyZWUgdGhpcy4KKysgICAgbV9mcmFtZUV2 ZW50UXVldWUgPSB3bF9kaXNwbGF5X2NyZWF0ZV9xdWV1ZShtRGlzcGxheSk7CisrICAgIG1fZnJh bWVFdmVudFF1ZXVlVGhyZWFkLnJlc2V0KAorKyAgICAgICAgICAgIG5ldyBFdmVudFRocmVhZCht RGlzcGxheSwgbV9mcmFtZUV2ZW50UXVldWUsIEV2ZW50VGhyZWFkOjpTZWxmRGlzcGF0Y2gpKTsK KysgICAgbV9mcmFtZUV2ZW50UXVldWVUaHJlYWQtPnN0YXJ0KCk7CisgfQorIAorLXZvaWQgUVdh eWxhbmREaXNwbGF5OjpkaXNwYXRjaFF1ZXVlV2hpbGUod2xfZXZlbnRfcXVldWUgKnF1ZXVlLCBz dGQ6OmZ1bmN0aW9uPGJvb2wgKCk+IGNvbmRpdGlvbiwgaW50IHRpbWVvdXQpCisrdm9pZCBRV2F5 bGFuZERpc3BsYXk6OmJsb2NraW5nUmVhZEV2ZW50cygpCisgeworLSAgICBpZiAoIWNvbmRpdGlv bigpKQorLSAgICAgICAgcmV0dXJuOworLQorLSAgICBRRWxhcHNlZFRpbWVyIHRpbWVyOworLSAg ICB0aW1lci5zdGFydCgpOworLSAgICBzdHJ1Y3QgcG9sbGZkIHBGZCA9IHF0X21ha2VfcG9sbGZk KHdsX2Rpc3BsYXlfZ2V0X2ZkKG1EaXNwbGF5KSwgUE9MTElOKTsKKy0gICAgd2hpbGUgKHRpbWVv dXQgPT0gLTEgfHwgdGltZXIuZWxhcHNlZCgpIDwgdGltZW91dCkgeworLSAgICAgICAgd2hpbGUg KHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkX3F1ZXVlKG1EaXNwbGF5LCBxdWV1ZSkgIT0gMCkKKy0g ICAgICAgICAgICB3bF9kaXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHF1 ZXVlKTsKKy0KKy0gICAgICAgIHdsX2Rpc3BsYXlfZmx1c2gobURpc3BsYXkpOworLQorLSAgICAg ICAgY29uc3QgaW50IHJlbWFpbmluZyA9IHFNYXgodGltZW91dCAtIHRpbWVyLmVsYXBzZWQoKSwg MGxsKTsKKy0gICAgICAgIGNvbnN0IGludCBwb2xsVGltZW91dCA9IHRpbWVvdXQgPT0gLTEgPyAt MSA6IHJlbWFpbmluZzsKKy0gICAgICAgIGlmIChxdF9wb2xsX21zZWNzKCZwRmQsIDEsIHBvbGxU aW1lb3V0KSA+IDApCistICAgICAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtRGlzcGxh eSk7CistICAgICAgICBlbHNlCistICAgICAgICAgICAgd2xfZGlzcGxheV9jYW5jZWxfcmVhZCht RGlzcGxheSk7CistCistICAgICAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5k aW5nKG1EaXNwbGF5LCBxdWV1ZSkgPCAwKQorLSAgICAgICAgICAgIGNoZWNrRXJyb3IoKTsKKy0K Ky0gICAgICAgIGlmICghY29uZGl0aW9uKCkpCistICAgICAgICAgICAgYnJlYWs7CistICAgIH0K KysgICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2gobURpc3BsYXkpIDwgMCkKKysgICAgICAgIGNo ZWNrV2F5bGFuZEVycm9yKG1EaXNwbGF5KTsKKyB9CisgCisgUVdheWxhbmRTY3JlZW4gKlFXYXls YW5kRGlzcGxheTo6c2NyZWVuRm9yT3V0cHV0KHN0cnVjdCB3bF9vdXRwdXQgKm91dHB1dCkgY29u c3QKK0BAIC0zNDUsNyArNDkxLDcgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2ds b2JhbCh1aW50MzJfdCBpZCwgY29uc3QgUVN0cmluZyAmaW50ZXJmYWNlLCB1aW4KKyAgICAgaWYg KGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xfb3V0cHV0IikpIHsKKyAgICAgICAgIG1X YWl0aW5nU2NyZWVucyA8PCBuZXcgUVdheWxhbmRTY3JlZW4odGhpcywgdmVyc2lvbiwgaWQpOwor ICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xfY29tcG9zaXRv ciIpKSB7CistICAgICAgICBtQ29tcG9zaXRvclZlcnNpb24gPSBxTWluKChpbnQpdmVyc2lvbiwg Myk7CisrICAgICAgICBtQ29tcG9zaXRvclZlcnNpb24gPSBxTWluKChpbnQpdmVyc2lvbiwgNCk7 CisgICAgICAgICBtQ29tcG9zaXRvci5pbml0KHJlZ2lzdHJ5LCBpZCwgbUNvbXBvc2l0b3JWZXJz aW9uKTsKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX3No bSIpKSB7CisgICAgICAgICBtU2htLnJlc2V0KG5ldyBRV2F5bGFuZFNobSh0aGlzLCB2ZXJzaW9u LCBpZCkpOworQEAgLTM1NCw3ICs1MDAsNyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0 cnlfZ2xvYmFsKHVpbnQzMl90IGlkLCBjb25zdCBRU3RyaW5nICZpbnRlcmZhY2UsIHVpbgorICAg ICAgICAgbUlucHV0RGV2aWNlcy5hcHBlbmQoaW5wdXREZXZpY2UpOworICNpZiBRVF9DT05GSUco d2F5bGFuZF9kYXRhZGV2aWNlKQorICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5n TGl0ZXJhbCgid2xfZGF0YV9kZXZpY2VfbWFuYWdlciIpKSB7CistICAgICAgICBtRG5kU2VsZWN0 aW9uSGFuZGxlci5yZXNldChuZXcgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcih0aGlzLCBpZCkp OworKyAgICAgICAgbURuZFNlbGVjdGlvbkhhbmRsZXIucmVzZXQobmV3IFFXYXlsYW5kRGF0YURl dmljZU1hbmFnZXIodGhpcywgdmVyc2lvbiwgaWQpKTsKKyAjZW5kaWYKKyAgICAgfSBlbHNlIGlm IChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInF0X3N1cmZhY2VfZXh0ZW5zaW9uIikpIHsK KyAgICAgICAgIG1XaW5kb3dFeHRlbnNpb24ucmVzZXQobmV3IFF0V2F5bGFuZDo6cXRfc3VyZmFj ZV9leHRlbnNpb24ocmVnaXN0cnksIGlkLCAxKSk7CitAQCAtMzY5LDYgKzUxNSw4IEBAIHZvaWQg UVdheWxhbmREaXNwbGF5OjpyZWdpc3RyeV9nbG9iYWwodWludDMyX3QgaWQsIGNvbnN0IFFTdHJp bmcgJmludGVyZmFjZSwgdWluCisgI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5 X3NlbGVjdGlvbikKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwo Inp3cF9wcmltYXJ5X3NlbGVjdGlvbl9kZXZpY2VfbWFuYWdlcl92MSIpKSB7CisgICAgICAgICBt UHJpbWFyeVNlbGVjdGlvbk1hbmFnZXIucmVzZXQobmV3IFFXYXlsYW5kUHJpbWFyeVNlbGVjdGlv bkRldmljZU1hbmFnZXJWMSh0aGlzLCBpZCwgMSkpOworKyAgICAgICAgZm9yIChRV2F5bGFuZElu cHV0RGV2aWNlICppbnB1dERldmljZSA6IHFBc0NvbnN0KG1JbnB1dERldmljZXMpKQorKyAgICAg ICAgICAgIGlucHV0RGV2aWNlLT5zZXRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlKG1QcmltYXJ5U2Vs ZWN0aW9uTWFuYWdlci0+Y3JlYXRlRGV2aWNlKGlucHV0RGV2aWNlKSk7CisgI2VuZGlmCisgICAg IH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ6d3BfdGV4dF9pbnB1dF9t YW5hZ2VyX3YyIikgJiYgIW1DbGllbnRTaWRlSW5wdXRDb250ZXh0UmVxdWVzdGVkKSB7CisgICAg ICAgICBtVGV4dElucHV0TWFuYWdlci5yZXNldChuZXcgUXRXYXlsYW5kOjp6d3BfdGV4dF9pbnB1 dF9tYW5hZ2VyX3YyKHJlZ2lzdHJ5LCBpZCwgMSkpOworQEAgLTQyNyw2ICs1NzUsMTMgQEAgdm9p ZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbF9yZW1vdmUodWludDMyX3QgaWQpCisg ICAgICAgICAgICAgICAgICAgICBpbnB1dERldmljZS0+c2V0VGV4dElucHV0KG51bGxwdHIpOwor ICAgICAgICAgICAgICAgICBtV2F5bGFuZEludGVncmF0aW9uLT5yZWNvbmZpZ3VyZUlucHV0Q29u dGV4dCgpOworICAgICAgICAgICAgIH0KKysjaWYgUVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3By aW1hcnlfc2VsZWN0aW9uKQorKyAgICAgICAgICAgIGlmIChnbG9iYWwuaW50ZXJmYWNlID09IFFT dHJpbmdMaXRlcmFsKCJ6d3BfcHJpbWFyeV9zZWxlY3Rpb25fZGV2aWNlX21hbmFnZXJfdjEiKSkg eworKyAgICAgICAgICAgICAgICBtUHJpbWFyeVNlbGVjdGlvbk1hbmFnZXIucmVzZXQoKTsKKysg ICAgICAgICAgICAgICAgZm9yIChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljZSA6IHFB c0NvbnN0KG1JbnB1dERldmljZXMpKQorKyAgICAgICAgICAgICAgICAgICAgaW5wdXREZXZpY2Ut PnNldFByaW1hcnlTZWxlY3Rpb25EZXZpY2UobnVsbHB0cik7CisrICAgICAgICAgICAgfQorKyNl bmRpZgorICAgICAgICAgICAgIG1HbG9iYWxzLnJlbW92ZUF0KGkpOworICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICAgfQorQEAgLTQ1Miw5ICs2MDcsMTAgQEAgdm9pZCBRV2F5bGFuZERpc3Bs YXk6OmFkZFJlZ2lzdHJ5TGlzdGVuZXIoUmVnaXN0cnlMaXN0ZW5lciBsaXN0ZW5lciwgdm9pZCAq ZGF0YSkKKyAKKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVtb3ZlTGlzdGVuZXIoUmVnaXN0cnlM aXN0ZW5lciBsaXN0ZW5lciwgdm9pZCAqZGF0YSkKKyB7CistICAgIHN0ZDo6cmVtb3ZlX2lmKG1S ZWdpc3RyeUxpc3RlbmVycy5iZWdpbigpLCBtUmVnaXN0cnlMaXN0ZW5lcnMuZW5kKCksIFs9XShM aXN0ZW5lciBsKXsKKysgICAgYXV0byBpdGVyID0gc3RkOjpyZW1vdmVfaWYobVJlZ2lzdHJ5TGlz dGVuZXJzLmJlZ2luKCksIG1SZWdpc3RyeUxpc3RlbmVycy5lbmQoKSwgWz1dKExpc3RlbmVyIGwp eworICAgICAgICAgcmV0dXJuIChsLmxpc3RlbmVyID09IGxpc3RlbmVyICYmIGwuZGF0YSA9PSBk YXRhKTsKKyAgICAgfSk7CisrICAgIG1SZWdpc3RyeUxpc3RlbmVycy5lcmFzZShpdGVyLCBtUmVn aXN0cnlMaXN0ZW5lcnMuZW5kKCkpOworIH0KKyAKKyB1aW50MzJfdCBRV2F5bGFuZERpc3BsYXk6 OmN1cnJlbnRUaW1lTWlsbGlzZWMoKQorQEAgLTQ2Nyw1MCArNjIzLDkgQEAgdWludDMyX3QgUVdh eWxhbmREaXNwbGF5OjpjdXJyZW50VGltZU1pbGxpc2VjKCkKKyAgICAgcmV0dXJuIDA7CisgfQor IAorLXN0YXRpYyB2b2lkCistc3luY19jYWxsYmFjayh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfY2Fs bGJhY2sgKmNhbGxiYWNrLCB1aW50MzJfdCBzZXJpYWwpCisteworLSAgICBRX1VOVVNFRChzZXJp YWwpCistICAgIGJvb2wgKmRvbmUgPSBzdGF0aWNfY2FzdDxib29sICo+KGRhdGEpOworLQorLSAg ICAqZG9uZSA9IHRydWU7CistCistICAgIC8vIElmIHRoZSB3bF9jYWxsYmFjayBkb25lIGV2ZW50 IGlzIHJlY2VpdmVkIGFmdGVyIHRoZSBjb25kaXRpb24gY2hlY2sgaW4gdGhlIHdoaWxlIGxvb3Ag aW4KKy0gICAgLy8gZm9yY2VSb3VuZFRyaXAoKSwgYnV0IGJlZm9yZSB0aGUgY2FsbCB0byBwcm9j ZXNzRXZlbnRzLCB0aGUgY2FsbCB0byBwcm9jZXNzRXZlbnRzIG1heSBibG9jaworLSAgICAvLyBm b3JldmVyIGlmIG5vIG1vcmUgZXZlbnRzIGFyZSBwb3N0ZWQgKGV2ZW50aG91Z2ggdGhlIGNhbGxi YWNrIGlzIGhhbmRsZWQgaW4gcmVzcG9uc2UgdG8gdGhlCistICAgIC8vIGFib3V0VG9CbG9jayBz aWduYWwpLiBIZW5jZSwgd2Ugd2FrZSB1cCB0aGUgZXZlbnQgZGlzcGF0Y2hlciBzbyBmb3JjZVJv dW5kVHJpcCBtYXkgcmV0dXJuLgorLSAgICAvLyAoUVRCVUctNjQ2OTYpCistICAgIGlmIChhdXRv ICpkaXNwYXRjaGVyID0gUVRocmVhZDo6Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIo KSkKKy0gICAgICAgIGRpc3BhdGNoZXItPndha2VVcCgpOworLQorLSAgICB3bF9jYWxsYmFja19k ZXN0cm95KGNhbGxiYWNrKTsKKy19CistCistc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9jYWxsYmFj a19saXN0ZW5lciBzeW5jX2xpc3RlbmVyID0geworLSAgICBzeW5jX2NhbGxiYWNrCistfTsKKy0K KyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6Zm9yY2VSb3VuZFRyaXAoKQorIHsKKy0gICAgLy8gd2xf ZGlzcGxheV9yb3VuZHRyaXAoKSB3b3JrcyBvbiB0aGUgbWFpbiBxdWV1ZSBvbmx5LAorLSAgICAv LyBidXQgd2UgdXNlIGEgc2VwYXJhdGUgb25lLCBzbyBiYXNpY2FsbHkgcmVpbXBsZW1lbnQgaXQg aGVyZQorLSAgICBpbnQgcmV0ID0gMDsKKy0gICAgYm9vbCBkb25lID0gZmFsc2U7CistICAgIHds X2NhbGxiYWNrICpjYWxsYmFjayA9IHdsX2Rpc3BsYXlfc3luYyhtRGlzcGxheSk7CistICAgIHds X2NhbGxiYWNrX2FkZF9saXN0ZW5lcihjYWxsYmFjaywgJnN5bmNfbGlzdGVuZXIsICZkb25lKTsK Ky0gICAgZmx1c2hSZXF1ZXN0cygpOworLSAgICBpZiAoUVRocmVhZDo6Y3VycmVudFRocmVhZCgp LT5ldmVudERpc3BhdGNoZXIoKSkgeworLSAgICAgICAgd2hpbGUgKCFkb25lICYmIHJldCA+PSAw KSB7CistICAgICAgICAgICAgUVRocmVhZDo6Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNo ZXIoKS0+cHJvY2Vzc0V2ZW50cyhRRXZlbnRMb29wOjpXYWl0Rm9yTW9yZUV2ZW50cyk7CistICAg ICAgICAgICAgcmV0ID0gd2xfZGlzcGxheV9kaXNwYXRjaF9wZW5kaW5nKG1EaXNwbGF5KTsKKy0g ICAgICAgIH0KKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIHdoaWxlICghZG9uZSAmJiByZXQgPj0g MCkKKy0gICAgICAgICAgICByZXQgPSB3bF9kaXNwbGF5X2Rpc3BhdGNoKG1EaXNwbGF5KTsKKy0g ICAgfQorLQorLSAgICBpZiAocmV0ID09IC0xICYmICFkb25lKQorLSAgICAgICAgd2xfY2FsbGJh Y2tfZGVzdHJveShjYWxsYmFjayk7CisrICAgICB3bF9kaXNwbGF5X3JvdW5kdHJpcChtRGlzcGxh eSk7CisgfQorIAorIGJvb2wgUVdheWxhbmREaXNwbGF5OjpzdXBwb3J0c1dpbmRvd0RlY29yYXRp b24oKSBjb25zdAorQEAgLTU3NCwxNCArNjg5LDEwIEBAIHZvaWQgUVdheWxhbmREaXNwbGF5Ojpo YW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmlj CisgICAgIGlmIChtTGFzdEtleWJvYXJkRm9jdXMgPT0ga2V5Ym9hcmRGb2N1cykKKyAgICAgICAg IHJldHVybjsKKyAKKy0gICAgaWYgKG1XYXlsYW5kSW50ZWdyYXRpb24tPm1TaGVsbEludGVncmF0 aW9uKSB7CistICAgICAgICBtV2F5bGFuZEludGVncmF0aW9uLT5tU2hlbGxJbnRlZ3JhdGlvbi0+ aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoa2V5Ym9hcmRGb2N1cywgbUxhc3RLZXlib2FyZEZv Y3VzKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIGlmIChrZXlib2FyZEZvY3VzKQorLSAgICAg ICAgICAgIGhhbmRsZVdpbmRvd0FjdGl2YXRlZChrZXlib2FyZEZvY3VzKTsKKy0gICAgICAgIGlm IChtTGFzdEtleWJvYXJkRm9jdXMpCistICAgICAgICAgICAgaGFuZGxlV2luZG93RGVhY3RpdmF0 ZWQobUxhc3RLZXlib2FyZEZvY3VzKTsKKy0gICAgfQorKyAgICBpZiAoa2V5Ym9hcmRGb2N1cykK KysgICAgICAgIGhhbmRsZVdpbmRvd0FjdGl2YXRlZChrZXlib2FyZEZvY3VzKTsKKysgICAgaWYg KG1MYXN0S2V5Ym9hcmRGb2N1cykKKysgICAgICAgIGhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG1M YXN0S2V5Ym9hcmRGb2N1cyk7CisgCisgICAgIG1MYXN0S2V5Ym9hcmRGb2N1cyA9IGtleWJvYXJk Rm9jdXM7CisgfQorQEAgLTYwMCw2ICs3MTEsMTkgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6Omhh bmRsZVdheWxhbmRTeW5jKCkKKyAgICAgUVdpbmRvdyAqYWN0aXZlV2luZG93ID0gbUFjdGl2ZVdp bmRvd3MuZW1wdHkoKSA/IG51bGxwdHIgOiBtQWN0aXZlV2luZG93cy5sYXN0KCktPndpbmRvdygp OworICAgICBpZiAoYWN0aXZlV2luZG93ICE9IFFHdWlBcHBsaWNhdGlvbjo6Zm9jdXNXaW5kb3co KSkKKyAgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd0FjdGl2YXRl ZChhY3RpdmVXaW5kb3cpOworKworKyAgICBpZiAoIWFjdGl2ZVdpbmRvdykgeworKyAgICAgICAg aWYgKGxhc3RJbnB1dERldmljZSgpKSB7CisrI2lmIFFUX0NPTkZJRyhjbGlwYm9hcmQpCisrICAg ICAgICAgICAgaWYgKGF1dG8gKmRhdGFEZXZpY2UgPSBsYXN0SW5wdXREZXZpY2UoKS0+ZGF0YURl dmljZSgpKQorKyAgICAgICAgICAgICAgICBkYXRhRGV2aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9u T2ZmZXIoKTsKKysjZW5kaWYKKysjaWYgUVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlf c2VsZWN0aW9uKQorKyAgICAgICAgICAgIGlmIChhdXRvICpkZXZpY2UgPSBsYXN0SW5wdXREZXZp Y2UoKS0+cHJpbWFyeVNlbGVjdGlvbkRldmljZSgpKQorKyAgICAgICAgICAgICAgICBkZXZpY2Ut PmludmFsaWRhdGVTZWxlY3Rpb25PZmZlcigpOworKyNlbmRpZgorKyAgICAgICAgfQorKyAgICB9 CisgfQorIAorIGNvbnN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIFFXYXlsYW5kRGlzcGxheTo6c3lu Y0NhbGxiYWNrTGlzdGVuZXIgPSB7CitAQCAtNjI2LDYgKzc1MCwxMyBAQCBRV2F5bGFuZElucHV0 RGV2aWNlICpRV2F5bGFuZERpc3BsYXk6OmRlZmF1bHRJbnB1dERldmljZSgpIGNvbnN0CisgICAg IHJldHVybiBtSW5wdXREZXZpY2VzLmlzRW1wdHkoKSA/IDAgOiBtSW5wdXREZXZpY2VzLmZpcnN0 KCk7CisgfQorIAorK2Jvb2wgUVdheWxhbmREaXNwbGF5Ojppc0tleWJvYXJkQXZhaWxhYmxlKCkg Y29uc3QKKyt7CisrICAgIHJldHVybiBzdGQ6OmFueV9vZigKKysgICAgICAgICAgICBtSW5wdXRE ZXZpY2VzLmNvbnN0QmVnaW4oKSwgbUlucHV0RGV2aWNlcy5jb25zdEVuZCgpLAorKyAgICAgICAg ICAgIFt0aGlzXShjb25zdCBRV2F5bGFuZElucHV0RGV2aWNlICpkZXZpY2UpIHsgcmV0dXJuIGRl dmljZS0+a2V5Ym9hcmQoKSAhPSBudWxscHRyOyB9KTsKKyt9CisrCisgI2lmIFFUX0NPTkZJRyhj dXJzb3IpCisgCisgUVdheWxhbmRDdXJzb3IgKlFXYXlsYW5kRGlzcGxheTo6d2F5bGFuZEN1cnNv cigpCitAQCAtNjUyLDQgKzc4Myw2IEBAIFFXYXlsYW5kQ3Vyc29yVGhlbWUgKlFXYXlsYW5kRGlz cGxheTo6bG9hZEN1cnNvclRoZW1lKGNvbnN0IFFTdHJpbmcgJm5hbWUsIGludCBwCisgCisgfSAv LyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50CisgCisrI2luY2x1ZGUgInF3YXlsYW5kZGlzcGxh eS5tb2MiCisrCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGlzcGxheV9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRpc3BsYXlfcC5oCitpbmRleCAzYjA5MmJjOC4uNDJiYzY2MWQgMTAwNjQ0CistLS0gYS9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXlfcC5oCisrKysgYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGRpc3BsYXlfcC5oCitAQCAtMTA5LDYgKzEwOSw3IEBAIGNsYXNzIFFX YXlsYW5kU3VyZmFjZTsKKyBjbGFzcyBRV2F5bGFuZFNoZWxsSW50ZWdyYXRpb247CisgY2xhc3Mg UVdheWxhbmRDdXJzb3I7CisgY2xhc3MgUVdheWxhbmRDdXJzb3JUaGVtZTsKKytjbGFzcyBFdmVu dFRocmVhZDsKKyAKKyB0eXBlZGVmIHZvaWQgKCpSZWdpc3RyeUxpc3RlbmVyKSh2b2lkICpkYXRh LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3bF9yZWdpc3RyeSAq cmVnaXN0cnksCitAQCAtMTIwLDE1ICsxMjEsMTEgQEAgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9F WFBPUlQgUVdheWxhbmREaXNwbGF5IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBRdFdheWxhbmQK KyAgICAgUV9PQkpFQ1QKKyAKKyBwdWJsaWM6CistICAgIHN0cnVjdCBGcmFtZVF1ZXVlIHsKKy0g ICAgICAgIEZyYW1lUXVldWUod2xfZXZlbnRfcXVldWUgKnEgPSBudWxscHRyKSA6IHF1ZXVlKHEp LCBtdXRleChuZXcgUU11dGV4KSB7fQorLSAgICAgICAgd2xfZXZlbnRfcXVldWUgKnF1ZXVlOwor LSAgICAgICAgUU11dGV4ICptdXRleDsKKy0gICAgfTsKKy0KKyAgICAgUVdheWxhbmREaXNwbGF5 KFFXYXlsYW5kSW50ZWdyYXRpb24gKndheWxhbmRJbnRlZ3JhdGlvbik7CisgICAgIH5RV2F5bGFu ZERpc3BsYXkodm9pZCkgb3ZlcnJpZGU7CisgCisrICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworKwor ICNpZiBRVF9DT05GSUcoeGtiY29tbW9uKQorICAgICBzdHJ1Y3QgeGtiX2NvbnRleHQgKnhrYkNv bnRleHQoKSBjb25zdCB7IHJldHVybiBtWGtiQ29udGV4dC5nZXQoKTsgfQorICNlbmRpZgorQEAg LTIxMCwxMSArMjA3LDExIEBAIHB1YmxpYzoKKyAgICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3Vz Q2hhbmdlZChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljZSk7CisgICAgIHZvaWQgaGFu ZGxlV2luZG93RGVzdHJveWVkKFFXYXlsYW5kV2luZG93ICp3aW5kb3cpOworIAorLSAgICB3bF9l dmVudF9xdWV1ZSAqY3JlYXRlRXZlbnRRdWV1ZSgpOworLSAgICBGcmFtZVF1ZXVlIGNyZWF0ZUZy YW1lUXVldWUoKTsKKy0gICAgdm9pZCBkZXN0cm95RnJhbWVRdWV1ZShjb25zdCBGcmFtZVF1ZXVl ICZxKTsKKy0gICAgdm9pZCBkaXNwYXRjaFF1ZXVlV2hpbGUod2xfZXZlbnRfcXVldWUgKnF1ZXVl LCBzdGQ6OmZ1bmN0aW9uPGJvb2woKT4gY29uZGl0aW9uLCBpbnQgdGltZW91dCA9IC0xKTsKKysg ICAgd2xfZXZlbnRfcXVldWUgKmZyYW1lRXZlbnRRdWV1ZSgpIHsgcmV0dXJuIG1fZnJhbWVFdmVu dFF1ZXVlOyB9OworKworKyAgICBib29sIGlzS2V5Ym9hcmRBdmFpbGFibGUoKSBjb25zdDsKKyAK KysgICAgdm9pZCBpbml0RXZlbnRUaHJlYWQoKTsKKyBwdWJsaWMgc2xvdHM6CisgICAgIHZvaWQg YmxvY2tpbmdSZWFkRXZlbnRzKCk7CisgICAgIHZvaWQgZmx1c2hSZXF1ZXN0cygpOworQEAgLTIz Nyw2ICsyMzQsOSBAQCBwcml2YXRlOgorICAgICB9OworIAorICAgICBzdHJ1Y3Qgd2xfZGlzcGxh eSAqbURpc3BsYXkgPSBudWxscHRyOworKyAgICBRU2NvcGVkUG9pbnRlcjxFdmVudFRocmVhZD4g bV9ldmVudFRocmVhZDsKKysgICAgd2xfZXZlbnRfcXVldWUgKm1fZnJhbWVFdmVudFF1ZXVlID0g bnVsbHB0cjsKKysgICAgUVNjb3BlZFBvaW50ZXI8RXZlbnRUaHJlYWQ+IG1fZnJhbWVFdmVudFF1 ZXVlVGhyZWFkOworICAgICBRdFdheWxhbmQ6OndsX2NvbXBvc2l0b3IgbUNvbXBvc2l0b3I7Cisg ICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kU2htPiBtU2htOworICAgICBRTGlzdDxRV2F5bGFu ZFNjcmVlbiAqPiBtV2FpdGluZ1NjcmVlbnM7CitAQCAtMjczLDExICsyNzMsOSBAQCBwcml2YXRl OgorICAgICBRV2F5bGFuZElucHV0RGV2aWNlICptTGFzdElucHV0RGV2aWNlID0gbnVsbHB0cjsK KyAgICAgUVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+IG1MYXN0SW5wdXRXaW5kb3c7CisgICAgIFFQ b2ludGVyPFFXYXlsYW5kV2luZG93PiBtTGFzdEtleWJvYXJkRm9jdXM7CistICAgIFFWZWN0b3I8 UVdheWxhbmRXaW5kb3cgKj4gbUFjdGl2ZVdpbmRvd3M7CistICAgIFFWZWN0b3I8RnJhbWVRdWV1 ZT4gbUV4dGVybmFsUXVldWVzOworKyAgICBRTGlzdDxRV2F5bGFuZFdpbmRvdyAqPiBtQWN0aXZl V2luZG93czsKKyAgICAgc3RydWN0IHdsX2NhbGxiYWNrICptU3luY0NhbGxiYWNrID0gbnVsbHB0 cjsKKyAgICAgc3RhdGljIGNvbnN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIHN5bmNDYWxsYmFja0xp c3RlbmVyOworLSAgICBRUmVhZFdyaXRlTG9jayBtX2ZyYW1lUXVldWVMb2NrOworIAorICAgICBi b29sIG1DbGllbnRTaWRlSW5wdXRDb250ZXh0UmVxdWVzdGVkID0gIVFQbGF0Zm9ybUlucHV0Q29u dGV4dEZhY3Rvcnk6OnJlcXVlc3RlZCgpLmlzTnVsbCgpOworIAorZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kZG5kLmNwcAoraW5kZXggNjUzNWFhMTYuLjdjNTNmNWZhIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmQuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGRuZC5jcHAKK0BAIC02Niw3ICs2Niw3IEBAIHZvaWQgUVdheWxhbmREcmFn OjpzdGFydERyYWcoKQorIHsKKyAgICAgUUJhc2ljRHJhZzo6c3RhcnREcmFnKCk7CisgICAgIFFX YXlsYW5kV2luZG93ICppY29uID0gc3RhdGljX2Nhc3Q8UVdheWxhbmRXaW5kb3cgKj4oc2hhcGVk UGl4bWFwV2luZG93KCktPmhhbmRsZSgpKTsKKy0gICAgaWYgKG1fZGlzcGxheS0+Y3VycmVudElu cHV0RGV2aWNlKCktPmRhdGFEZXZpY2UoKS0+c3RhcnREcmFnKGRyYWcoKS0+bWltZURhdGEoKSwg aWNvbikpIHsKKysgICAgaWYgKG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPmRhdGFE ZXZpY2UoKS0+c3RhcnREcmFnKGRyYWcoKS0+bWltZURhdGEoKSwgZHJhZygpLT5zdXBwb3J0ZWRB Y3Rpb25zKCksIGljb24pKSB7CisgICAgICAgICBpY29uLT5hZGRBdHRhY2hPZmZzZXQoLWRyYWco KS0+aG90U3BvdCgpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIC8vIENhbmNlbGxpbmcgaW1t ZWRpYXRlbHkgZG9lcyBub3Qgd29yaywgc2luY2UgdGhlIGV2ZW50IGxvb3AgZm9yIFFEcmFnOjpl eGVjIGlzIHN0YXJ0ZWQKK0BAIC04MCw2ICs4MCw5IEBAIHZvaWQgUVdheWxhbmREcmFnOjpjYW5j ZWwoKQorICAgICBRQmFzaWNEcmFnOjpjYW5jZWwoKTsKKyAKKyAgICAgbV9kaXNwbGF5LT5jdXJy ZW50SW5wdXREZXZpY2UoKS0+ZGF0YURldmljZSgpLT5jYW5jZWxEcmFnKCk7CisrCisrICAgIGlm IChkcmFnKCkpCisrICAgICAgICBkcmFnKCktPmRlbGV0ZUxhdGVyKCk7CisgfQorIAorIHZvaWQg UVdheWxhbmREcmFnOjptb3ZlKGNvbnN0IFFQb2ludCAmZ2xvYmFsUG9zLCBRdDo6TW91c2VCdXR0 b25zIGIsIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RzKQorQEAgLTEwMywzMyArMTA2LDQxIEBA IHZvaWQgUVdheWxhbmREcmFnOjplbmREcmFnKCkKKyAgICAgbV9kaXNwbGF5LT5jdXJyZW50SW5w dXREZXZpY2UoKS0+aGFuZGxlRW5kRHJhZygpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6 dXBkYXRlVGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlKQorK3ZvaWQgUVdheWxhbmREcmFn OjpzZXRSZXNwb25zZShib29sIGFjY2VwdGVkKQorIHsKKy0gICAgc2V0Q2FuRHJvcCghbWltZVR5 cGUuaXNFbXB0eSgpKTsKKy0KKy0gICAgaWYgKGNhbkRyb3AoKSkgeworLSAgICAgICAgdXBkYXRl Q3Vyc29yKGRlZmF1bHRBY3Rpb24oZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIG1fZGlzcGxh eS0+Y3VycmVudElucHV0RGV2aWNlKCktPm1vZGlmaWVycygpKSk7CistICAgIH0gZWxzZSB7Cist ICAgICAgICB1cGRhdGVDdXJzb3IoUXQ6Oklnbm9yZUFjdGlvbik7CistICAgIH0KKysgICAgLy8g VGhpcyBtZXRob2QgaXMgdXNlZCBmb3Igb2xkIERhdGFEZXZpY2VzIHdoZXJlIHRoZSBkcmFnIGFj dGlvbiBpcyBub3QgY29tbXVuaWNhdGVkCisrICAgIFF0OjpEcm9wQWN0aW9uIGFjdGlvbiA9IGRl ZmF1bHRBY3Rpb24oZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIG1fZGlzcGxheS0+Y3VycmVu dElucHV0RGV2aWNlKCktPm1vZGlmaWVycygpKTsKKysgICAgc2V0UmVzcG9uc2UoUVBsYXRmb3Jt RHJvcFF0UmVzcG9uc2UoYWNjZXB0ZWQsIGFjdGlvbikpOworIH0KKyAKKy12b2lkIFFXYXlsYW5k RHJhZzo6c2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNl KQorK3ZvaWQgUVdheWxhbmREcmFnOjpzZXRSZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRS ZXNwb25zZSAmcmVzcG9uc2UpCisgeworICAgICBzZXRDYW5Ecm9wKHJlc3BvbnNlLmlzQWNjZXB0 ZWQoKSk7CisgCisgICAgIGlmIChjYW5Ecm9wKCkpIHsKKy0gICAgICAgIHVwZGF0ZUN1cnNvcihk ZWZhdWx0QWN0aW9uKGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJl bnRJbnB1dERldmljZSgpLT5tb2RpZmllcnMoKSkpOworKyAgICAgICAgdXBkYXRlQ3Vyc29yKHJl c3BvbnNlLmFjY2VwdGVkQWN0aW9uKCkpOworICAgICB9IGVsc2UgeworICAgICAgICAgdXBkYXRl Q3Vyc29yKFF0OjpJZ25vcmVBY3Rpb24pOworICAgICB9CisgfQorIAorLXZvaWQgUVdheWxhbmRE cmFnOjpmaW5pc2hEcmFnKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSkK Kyt2b2lkIFFXYXlsYW5kRHJhZzo6c2V0RHJvcFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BR dFJlc3BvbnNlICZyZXNwb25zZSkKKyB7CisgICAgIHNldEV4ZWN1dGVkRHJvcEFjdGlvbihyZXNw b25zZS5hY2NlcHRlZEFjdGlvbigpKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZERyYWc6OmZpbmlz aERyYWcoKQorK3sKKyAgICAgUUtleUV2ZW50IGV2ZW50KFFFdmVudDo6S2V5UHJlc3MsIFF0OjpL ZXlfRXNjYXBlLCBRdDo6Tm9Nb2RpZmllcik7CisgICAgIGV2ZW50RmlsdGVyKHNoYXBlZFBpeG1h cFdpbmRvdygpLCAmZXZlbnQpOworKworKyAgICBpZiAoZHJhZygpKQorKyAgICAgICAgZHJhZygp LT5kZWxldGVMYXRlcigpOworK30KKysKKytib29sIFFXYXlsYW5kRHJhZzo6b3duc0RyYWdPYmpl Y3QoKSBjb25zdAorK3sKKysgICAgcmV0dXJuIHRydWU7CisgfQorIAorIH0KK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmggYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGRuZF9wLmgKK2luZGV4IDQ3NGZlMmFiLi40NmY2MjlhYyAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kX3AuaAorKysrIGIvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmRkbmRfcC5oCitAQCAtNzEsOSArNzEsMTAgQEAgcHVibGljOgor ICAgICBRV2F5bGFuZERyYWcoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KTsKKyAgICAgflFXYXls YW5kRHJhZygpIG92ZXJyaWRlOworIAorLSAgICB2b2lkIHVwZGF0ZVRhcmdldChjb25zdCBRU3Ry aW5nICZtaW1lVHlwZSk7CistICAgIHZvaWQgc2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJh Z1F0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKy0gICAgdm9pZCBmaW5pc2hEcmFnKGNvbnN0IFFQbGF0 Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSk7CisrICAgIHZvaWQgc2V0UmVzcG9uc2UoYm9v bCBhY2NlcHRlZCk7CisrICAgIHZvaWQgc2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0 UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysgICAgdm9pZCBzZXREcm9wUmVzcG9uc2UoY29uc3QgUVBs YXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysgICAgdm9pZCBmaW5pc2hEcmFnKCk7 CisgCisgcHJvdGVjdGVkOgorICAgICB2b2lkIHN0YXJ0RHJhZygpIG92ZXJyaWRlOworQEAgLTgy LDYgKzgzLDcgQEAgcHJvdGVjdGVkOgorICAgICB2b2lkIGRyb3AoY29uc3QgUVBvaW50ICZnbG9i YWxQb3MsIFF0OjpNb3VzZUJ1dHRvbnMgYiwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZHMpIG92 ZXJyaWRlOworICAgICB2b2lkIGVuZERyYWcoKSBvdmVycmlkZTsKKyAKKysgICAgYm9vbCBvd25z RHJhZ09iamVjdCgpIGNvbnN0IG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5k RGlzcGxheSAqbV9kaXNwbGF5ID0gbnVsbHB0cjsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGlucHV0ZGV2aWNlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kaW5wdXRkZXZpY2UuY3BwCitpbmRleCA2MTNmZTg2Mi4uNGI5MGRlODQgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlucHV0ZGV2aWNlLmNwcAorKysrIGIv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAKK0BAIC02ODUsNiAr Njg1LDExIEBAIHB1YmxpYzoKKyAKKyB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlBvaW50ZXI6 OnBvaW50ZXJfbGVhdmUodWludDMyX3QgdGltZSwgc3RydWN0IHdsX3N1cmZhY2UgKnN1cmZhY2Up CisgeworKyAgICBpbnZhbGlkYXRlRm9jdXMoKTsKKysgICAgbUJ1dHRvbnMgPSBRdDo6Tm9CdXR0 b247CisrCisrICAgIG1QYXJlbnQtPm1UaW1lID0gdGltZTsKKysKKyAgICAgLy8gVGhlIGV2ZW50 IG1heSBhcnJpdmUgYWZ0ZXIgZGVzdHJveWluZyB0aGUgd2luZG93LCBpbmRpY2F0ZWQgYnkKKyAg ICAgLy8gYSBudWxsIHN1cmZhY2UuCisgICAgIGlmICghc3VyZmFjZSkKK0BAIC02OTYsMTEgKzcw MSw2IEBAIHZvaWQgUVdheWxhbmRJbnB1dERldmljZTo6UG9pbnRlcjo6cG9pbnRlcl9sZWF2ZSh1 aW50MzJfdCB0aW1lLCBzdHJ1Y3Qgd2xfc3VyZmFjCisgCisgICAgIGlmICghUVdheWxhbmRXaW5k b3c6Om1vdXNlR3JhYigpKQorICAgICAgICAgc2V0RnJhbWVFdmVudChuZXcgTGVhdmVFdmVudCh3 aW5kb3csIG1TdXJmYWNlUG9zLCBtR2xvYmFsUG9zKSk7CistCistICAgIGludmFsaWRhdGVGb2N1 cygpOworLSAgICBtQnV0dG9ucyA9IFF0OjpOb0J1dHRvbjsKKy0KKy0gICAgbVBhcmVudC0+bVRp bWUgPSB0aW1lOworIH0KKyAKKyBjbGFzcyBNb3Rpb25FdmVudCA6IHB1YmxpYyBRV2F5bGFuZFBv aW50ZXJFdmVudAorQEAgLTEzMDAsMTQgKzEzMDAsNiBAQCB2b2lkIFFXYXlsYW5kSW5wdXREZXZp Y2U6OktleWJvYXJkOjpoYW5kbGVGb2N1c0Rlc3Ryb3llZCgpCisgdm9pZCBRV2F5bGFuZElucHV0 RGV2aWNlOjpLZXlib2FyZDo6aGFuZGxlRm9jdXNMb3N0KCkKKyB7CisgICAgIG1Gb2N1cyA9IG51 bGxwdHI7CistI2lmIFFUX0NPTkZJRyhjbGlwYm9hcmQpCistICAgIGlmIChhdXRvICpkYXRhRGV2 aWNlID0gbVBhcmVudC0+ZGF0YURldmljZSgpKQorLSAgICAgICAgZGF0YURldmljZS0+aW52YWxp ZGF0ZVNlbGVjdGlvbk9mZmVyKCk7CistI2VuZGlmCistI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2Ns aWVudF9wcmltYXJ5X3NlbGVjdGlvbikKKy0gICAgaWYgKGF1dG8gKmRldmljZSA9IG1QYXJlbnQt PnByaW1hcnlTZWxlY3Rpb25EZXZpY2UoKSkKKy0gICAgICAgIGRldmljZS0+aW52YWxpZGF0ZVNl bGVjdGlvbk9mZmVyKCk7CistI2VuZGlmCisgICAgIG1QYXJlbnQtPm1RRGlzcGxheS0+aGFuZGxl S2V5Ym9hcmRGb2N1c0NoYW5nZWQobVBhcmVudCk7CisgICAgIG1SZXBlYXRUaW1lci5zdG9wKCk7 CisgfQorQEAgLTEzOTYsNiArMTM4OCw3IEBAIHZvaWQgUVdheWxhbmRJbnB1dERldmljZTo6VG91 Y2g6OnRvdWNoX2NhbmNlbCgpCisgICAgIGlmICh0b3VjaEV4dCkKKyAgICAgICAgIHRvdWNoRXh0 LT50b3VjaENhbmNlbGVkKCk7CisgCisrICAgIG1Gb2N1cyA9IG51bGxwdHI7CisgICAgIFFXaW5k b3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVRvdWNoQ2FuY2VsRXZlbnQobnVsbHB0ciwgbVBhcmVu dC0+bVRvdWNoRGV2aWNlKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRpbnRlZ3JhdGlvbi5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGludGVncmF0aW9uLmNwcAoraW5kZXggYzUzY2NiNzguLjU0ODYxNjAwIDEwMDY0NAorLS0tIGEv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb24uY3BwCitAQCAtMTI1LDYgKzEyNSw5 IEBAIFFXYXlsYW5kSW50ZWdyYXRpb246OlFXYXlsYW5kSW50ZWdyYXRpb24oKQorICNlbmRpZgor IAorICAgICByZWNvbmZpZ3VyZUlucHV0Q29udGV4dCgpOworKworKyAgICBRV2F5bGFuZFdpbmRv dzo6Zml4ZWRUb3BsZXZlbFBvc2l0aW9ucyA9CisrICAgICAgICAgICAgIXFFbnZpcm9ubWVudFZh cmlhYmxlSXNTZXQoIlFUX1dBWUxBTkRfRElTQUJMRV9GSVhFRF9QT1NJVElPTlMiKTsKKyB9Cisg CisgUVdheWxhbmRJbnRlZ3JhdGlvbjo6flFXYXlsYW5kSW50ZWdyYXRpb24oKQorQEAgLTE5Miwx NCArMTk1LDE4IEBAIFFBYnN0cmFjdEV2ZW50RGlzcGF0Y2hlciAqUVdheWxhbmRJbnRlZ3JhdGlv bjo6Y3JlYXRlRXZlbnREaXNwYXRjaGVyKCkgY29uc3QKKyAKKyB2b2lkIFFXYXlsYW5kSW50ZWdy YXRpb246OmluaXRpYWxpemUoKQorIHsKKysgICAgbURpc3BsYXktPmluaXRFdmVudFRocmVhZCgp OworKworKyAgICAvLyBDYWxsIGFmdGVyIGV2ZW50RGlzcGF0Y2hlciBpcyBmdWxseSBjb25uZWN0 ZWQsIGZvciBRV2F5bGFuZERpc3BsYXk6OmZvcmNlUm91bmRUcmlwKCkKKysgICAgbURpc3BsYXkt PmluaXRpYWxpemUoKTsKKysKKysgICAgLy8gQnV0IHRoZSBhYm91dFRvQmxvY2soKSBhbmQgYXdh a2UoKSBzaG91bGQgYmUgY29ubmVjdGVkIGFmdGVyIGluaXRpYWxpemVQbGF0Zm9ybSgpLgorKyAg ICAvLyBPdGhlcndpc2UgdGhlIGNvbm5lY3RlZCBmbHVzaFJlcXVlc3RzKCkgbWF5IGNvbnN1bWVz IHVwIGFsbCBldmVudHMgYmVmb3JlIHByb2Nlc3NFdmVudHMgc3RhcnRzIHRvIHdhaXQsCisrICAg IC8vIHNvIHRoYXQgcHJvY2Vzc0V2ZW50cyhRRXZlbnRMb29wOjpXYWl0Rm9yTW9yZUV2ZW50cykg bWF5IGJlIGJsb2NrZWQgaW4gdGhlIGZvcmNlUm91bmRUcmlwKCkuCisgICAgIFFBYnN0cmFjdEV2 ZW50RGlzcGF0Y2hlciAqZGlzcGF0Y2hlciA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OmV2ZW50 RGlzcGF0Y2hlcjsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChkaXNwYXRjaGVyLCBTSUdOQUwoYWJv dXRUb0Jsb2NrKCkpLCBtRGlzcGxheS5kYXRhKCksIFNMT1QoZmx1c2hSZXF1ZXN0cygpKSk7Cisg ICAgIFFPYmplY3Q6OmNvbm5lY3QoZGlzcGF0Y2hlciwgU0lHTkFMKGF3YWtlKCkpLCBtRGlzcGxh eS5kYXRhKCksIFNMT1QoZmx1c2hSZXF1ZXN0cygpKSk7CisgCistICAgIGludCBmZCA9IHdsX2Rp c3BsYXlfZ2V0X2ZkKG1EaXNwbGF5LT53bF9kaXNwbGF5KCkpOworLSAgICBRU29ja2V0Tm90aWZp ZXIgKnNuID0gbmV3IFFTb2NrZXROb3RpZmllcihmZCwgUVNvY2tldE5vdGlmaWVyOjpSZWFkLCBt RGlzcGxheS5kYXRhKCkpOworLSAgICBRT2JqZWN0Ojpjb25uZWN0KHNuLCBTSUdOQUwoYWN0aXZh dGVkKFFTb2NrZXREZXNjcmlwdG9yKSksIG1EaXNwbGF5LmRhdGEoKSwgU0xPVChmbHVzaFJlcXVl c3RzKCkpKTsKKy0KKyAgICAgLy8gUXQgZG9lcyBub3Qgc3VwcG9ydCBydW5uaW5nIHdpdGggbm8g c2NyZWVucworICAgICBtRGlzcGxheS0+ZW5zdXJlU2NyZWVuKCk7CisgfQorQEAgLTI2Miw2ICsy NjksMTQgQEAgUVdheWxhbmREaXNwbGF5ICpRV2F5bGFuZEludGVncmF0aW9uOjpkaXNwbGF5KCkg Y29uc3QKKyAgICAgcmV0dXJuIG1EaXNwbGF5LmRhdGEoKTsKKyB9CisgCisrUXQ6OktleWJvYXJk TW9kaWZpZXJzIFFXYXlsYW5kSW50ZWdyYXRpb246OnF1ZXJ5S2V5Ym9hcmRNb2RpZmllcnMoKSBj b25zdAorK3sKKysgICAgaWYgKGF1dG8gKnNlYXQgPSBtRGlzcGxheS0+Y3VycmVudElucHV0RGV2 aWNlKCkpIHsKKysgICAgICAgIHJldHVybiBzZWF0LT5tb2RpZmllcnMoKTsKKysgICAgfQorKyAg ICByZXR1cm4gUXQ6Ok5vTW9kaWZpZXI7CisrfQorKworIFFMaXN0PGludD4gUVdheWxhbmRJbnRl Z3JhdGlvbjo6cG9zc2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0Cisgewor ICAgICBpZiAoYXV0byAqc2VhdCA9IG1EaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKSkKK0BA IC00NzksNyArNDk0LDcgQEAgdm9pZCBRV2F5bGFuZEludGVncmF0aW9uOjpyZWNvbmZpZ3VyZUlu cHV0Q29udGV4dCgpCisgICAgIH0KKyAjZW5kaWYKKyAKKy0gICAgcUNEZWJ1ZyhsY1FwYVdheWxh bmQpIDw8ICJ1c2luZyBpbnB1dCBtZXRob2Q6IiA8PCBpbnB1dENvbnRleHQoKS0+bWV0YU9iamVj dCgpLT5jbGFzc05hbWUoKTsKKysgICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJ1c2luZyBp bnB1dCBtZXRob2Q6IiA8PCAoaW5wdXRDb250ZXh0KCkgPyBpbnB1dENvbnRleHQoKS0+bWV0YU9i amVjdCgpLT5jbGFzc05hbWUoKSA6ICI8bm9uZT4iKTsKKyB9CisgCisgUVdheWxhbmRTaGVsbElu dGVncmF0aW9uICpRV2F5bGFuZEludGVncmF0aW9uOjpjcmVhdGVTaGVsbEludGVncmF0aW9uKGNv bnN0IFFTdHJpbmcgJmludGVncmF0aW9uTmFtZSkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kaW50ZWdyYXRpb25fcC5oCitpbmRleCBmZjcwYWUyNS4uNzNiODA2NTggMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uX3AuaAorKysrIGIv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmgKK0BAIC0xMDcsNiAr MTA3LDggQEAgcHVibGljOgorIAorICAgICBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkoKSBjb25z dDsKKyAKKysgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIHF1ZXJ5S2V5Ym9hcmRNb2RpZmllcnMo KSBjb25zdCBvdmVycmlkZTsKKysKKyAgICAgUUxpc3Q8aW50PiBwb3NzaWJsZUtleXMoY29uc3Qg UUtleUV2ZW50ICpldmVudCkgY29uc3Qgb3ZlcnJpZGU7CisgCisgICAgIFFTdHJpbmdMaXN0IHRo ZW1lTmFtZXMoKSBjb25zdCBvdmVycmlkZTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZHByaW1hcnlzZWxlY3Rpb252MS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZHByaW1hcnlzZWxlY3Rpb252MS5jcHAKK2luZGV4IDgzMmY5Njc4Li5lYTUwODc3 MSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVj dGlvbnYxLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRwcmltYXJ5c2Vs ZWN0aW9udjEuY3BwCitAQCAtNTQsMTEgKzU0LDYgQEAgUVdheWxhbmRQcmltYXJ5U2VsZWN0aW9u RGV2aWNlTWFuYWdlclYxOjpRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjEK KyAgICAgOiB6d3BfcHJpbWFyeV9zZWxlY3Rpb25fZGV2aWNlX21hbmFnZXJfdjEoZGlzcGxheS0+ d2xfcmVnaXN0cnkoKSwgaWQsIHFNaW4odmVyc2lvbiwgdWludCgxKSkpCisgICAgICwgbV9kaXNw bGF5KGRpc3BsYXkpCisgeworLSAgICAvLyBDcmVhdGUgZGV2aWNlcyBmb3IgYWxsIHNlYXRzLgor LSAgICAvLyBUaGlzIG9ubHkgd29ya3MgaWYgd2UgZ2V0IHRoZSBnbG9iYWwgYmVmb3JlIGFsbCBk ZXZpY2VzCistICAgIGNvbnN0IGF1dG8gc2VhdHMgPSBtX2Rpc3BsYXktPmlucHV0RGV2aWNlcygp OworLSAgICBmb3IgKGF1dG8gKnNlYXQgOiBzZWF0cykKKy0gICAgICAgIHNlYXQtPnNldFByaW1h cnlTZWxlY3Rpb25EZXZpY2UoY3JlYXRlRGV2aWNlKHNlYXQpKTsKKyB9CisgCisgUVdheWxhbmRQ cmltYXJ5U2VsZWN0aW9uRGV2aWNlVjEgKlFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1h bmFnZXJWMTo6Y3JlYXRlRGV2aWNlKFFXYXlsYW5kSW5wdXREZXZpY2UgKnNlYXQpCitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW4uY3BwIGIvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW4uY3BwCitpbmRleCA2Y2IzMzdkZS4uNTUzN2RhZmQg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAKKysr KyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuLmNwcAorQEAgLTYwLDcgKzYw LDcgQEAgUVdheWxhbmRYZGdPdXRwdXRNYW5hZ2VyVjE6OlFXYXlsYW5kWGRnT3V0cHV0TWFuYWdl clYxKFFXYXlsYW5kRGlzcGxheSogZGlzcGxheSwKKyB9CisgCisgUVdheWxhbmRTY3JlZW46OlFX YXlsYW5kU2NyZWVuKFFXYXlsYW5kRGlzcGxheSAqd2F5bGFuZERpc3BsYXksIGludCB2ZXJzaW9u LCB1aW50MzJfdCBpZCkKKy0gICAgOiBRdFdheWxhbmQ6OndsX291dHB1dCh3YXlsYW5kRGlzcGxh eS0+d2xfcmVnaXN0cnkoKSwgaWQsIHFNaW4odmVyc2lvbiwgMikpCisrICAgIDogUXRXYXlsYW5k Ojp3bF9vdXRwdXQod2F5bGFuZERpc3BsYXktPndsX3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZlcnNp b24sIDMpKQorICAgICAsIG1fb3V0cHV0SWQoaWQpCisgICAgICwgbVdheWxhbmREaXNwbGF5KHdh eWxhbmREaXNwbGF5KQorICAgICAsIG1PdXRwdXROYW1lKFFTdHJpbmdMaXRlcmFsKCJTY3JlZW4l MSIpLmFyZyhpZCkpCitAQCAtNzIsNyArNzIsNyBAQCBRV2F5bGFuZFNjcmVlbjo6UVdheWxhbmRT Y3JlZW4oUVdheWxhbmREaXNwbGF5ICp3YXlsYW5kRGlzcGxheSwgaW50IHZlcnNpb24sIHVpbgor ICAgICAgICAgcUNXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgIndsX291dHB1dCBkb25lIGV2ZW50 IG5vdCBzdXBwb3J0ZWQgYnkgY29tcG9zaXRvciwiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8PCAiUVNjcmVlbiBtYXkgbm90IHdvcmsgY29ycmVjdGx5IjsKKyAgICAgICAgIG1X YXlsYW5kRGlzcGxheS0+Zm9yY2VSb3VuZFRyaXAoKTsgLy8gR2l2ZSB0aGUgY29tcG9zaXRvciBh IGNoYW5jZSB0byBzZW5kIGdlb21ldHJ5IGV0Yy4KKy0gICAgICAgIG1PdXRwdXREb25lID0gdHJ1 ZTsgLy8gRmFrZSB0aGUgZG9uZSBldmVudAorKyAgICAgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBP dXRwdXREb25lRXZlbnQ7IC8vIEZha2UgdGhlIGRvbmUgZXZlbnQKKyAgICAgICAgIG1heWJlSW5p dGlhbGl6ZSgpOworICAgICB9CisgfQorQEAgLTgxLDE2ICs4MSwyOSBAQCBRV2F5bGFuZFNjcmVl bjo6flFXYXlsYW5kU2NyZWVuKCkKKyB7CisgICAgIGlmICh6eGRnX291dHB1dF92MTo6aXNJbml0 aWFsaXplZCgpKQorICAgICAgICAgenhkZ19vdXRwdXRfdjE6OmRlc3Ryb3koKTsKKysgICAgaWYg KHdsX291dHB1dDo6aXNJbml0aWFsaXplZCgpICYmIHdsX291dHB1dF9nZXRfdmVyc2lvbih3bF9v dXRwdXQ6Om9iamVjdCgpKSA+PSBXTF9PVVRQVVRfUkVMRUFTRV9TSU5DRV9WRVJTSU9OKQorKyAg ICAgICAgd2xfb3V0cHV0OjpyZWxlYXNlKCk7CisrfQorKworK3VpbnQgUVdheWxhbmRTY3JlZW46 OnJlcXVpcmVkRXZlbnRzKCkgY29uc3QKKyt7CisrICAgIHVpbnQgcmV0ID0gT3V0cHV0RG9uZUV2 ZW50OworKworKyAgICBpZiAobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCkpIHsK KysgICAgICAgIHJldCB8PSBYZGdPdXRwdXROYW1lRXZlbnQ7CisrCisrICAgICAgICBpZiAobVdh eWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCktPnZlcnNpb24oKSA8IDMpCisrICAgICAg ICAgICAgcmV0IHw9IFhkZ091dHB1dERvbmVFdmVudDsKKysgICAgfQorKyAgICByZXR1cm4gcmV0 OworIH0KKyAKKyB2b2lkIFFXYXlsYW5kU2NyZWVuOjptYXliZUluaXRpYWxpemUoKQorIHsKKyAg ICAgUV9BU1NFUlQoIW1Jbml0aWFsaXplZCk7CisgCistICAgIGlmICghbU91dHB1dERvbmUpCist ICAgICAgICByZXR1cm47CistCistICAgIGlmIChtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1h bmFnZXIoKSAmJiAhbVhkZ091dHB1dERvbmUpCisrICAgIGNvbnN0IHVpbnQgcmVxdWlyZWRFdmVu dHMgPSB0aGlzLT5yZXF1aXJlZEV2ZW50cygpOworKyAgICBpZiAoKG1Qcm9jZXNzZWRFdmVudHMg JiByZXF1aXJlZEV2ZW50cykgIT0gcmVxdWlyZWRFdmVudHMpCisgICAgICAgICByZXR1cm47Cisg CisgICAgIG1Jbml0aWFsaXplZCA9IHRydWU7CitAQCAtMjc2LDkgKzI4OSw4IEBAIHZvaWQgUVdh eWxhbmRTY3JlZW46Om91dHB1dF9zY2FsZShpbnQzMl90IGZhY3RvcikKKyAKKyB2b2lkIFFXYXls YW5kU2NyZWVuOjpvdXRwdXRfZG9uZSgpCisgeworLSAgICBtT3V0cHV0RG9uZSA9IHRydWU7Cist ICAgIGlmICh6eGRnX291dHB1dF92MTo6aXNJbml0aWFsaXplZCgpICYmIG1XYXlsYW5kRGlzcGxh eS0+eGRnT3V0cHV0TWFuYWdlcigpLT52ZXJzaW9uKCkgPj0gMykKKy0gICAgICAgIG1YZGdPdXRw dXREb25lID0gdHJ1ZTsKKysgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBPdXRwdXREb25lRXZlbnQ7 CisrCisgICAgIGlmIChtSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgIHVwZGF0ZU91dHB1dFByb3Bl cnRpZXMoKTsKKyAgICAgICAgIGlmICh6eGRnX291dHB1dF92MTo6aXNJbml0aWFsaXplZCgpKQor QEAgLTMzOSw3ICszNTEsNyBAQCB2b2lkIFFXYXlsYW5kU2NyZWVuOjp6eGRnX291dHB1dF92MV9k b25lKCkKKyAgICAgaWYgKFFfVU5MSUtFTFkobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5h Z2VyKCktPnZlcnNpb24oKSA+PSAzKSkKKyAgICAgICAgIHFXYXJuaW5nKGxjUXBhV2F5bGFuZCkg PDwgInp4ZGdfb3V0cHV0X3YxLmRvbmUgcmVjZWl2ZWQgb24gdmVyc2lvbiAzIG9yIG5ld2VyLCB0 aGlzIGlzIG1vc3QgbGlrZWx5IGEgYnVnIGluIHRoZSBjb21wb3NpdG9yIjsKKyAKKy0gICAgbVhk Z091dHB1dERvbmUgPSB0cnVlOworKyAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9IFhkZ091dHB1dERv bmVFdmVudDsKKyAgICAgaWYgKG1Jbml0aWFsaXplZCkKKyAgICAgICAgIHVwZGF0ZVhkZ091dHB1 dFByb3BlcnRpZXMoKTsKKyAgICAgZWxzZQorQEAgLTM0OCw3ICszNjAsMTEgQEAgdm9pZCBRV2F5 bGFuZFNjcmVlbjo6enhkZ19vdXRwdXRfdjFfZG9uZSgpCisgCisgdm9pZCBRV2F5bGFuZFNjcmVl bjo6enhkZ19vdXRwdXRfdjFfbmFtZShjb25zdCBRU3RyaW5nICZuYW1lKQorIHsKKysgICAgaWYg KFFfVU5MSUtFTFkobUluaXRpYWxpemVkKSkKKysgICAgICAgIHFXYXJuaW5nKGxjUXBhV2F5bGFu ZCkgPDwgInp4ZGdfb3V0cHV0X3YxLm5hbWUgcmVjZWl2ZWQgYWZ0ZXIgb3V0cHV0IGhhcyBiZWVu IGluaXRpYWxpemVkLCB0aGlzIGlzIG1vc3QgbGlrZWx5IGEgYnVnIGluIHRoZSBjb21wb3NpdG9y IjsKKysKKyAgICAgbU91dHB1dE5hbWUgPSBuYW1lOworKyAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9 IFhkZ091dHB1dE5hbWVFdmVudDsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6dXBkYXRl WGRnT3V0cHV0UHJvcGVydGllcygpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRzY3JlZW5fcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5f cC5oCitpbmRleCBkZjFjOTRmMi4uMDUwY2ZkYzAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZHNjcmVlbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kc2NyZWVuX3AuaAorQEAgLTExNiw2ICsxMTYsMTMgQEAgcHVibGljOgorICAgICBzdGF0 aWMgUVdheWxhbmRTY3JlZW4gKmZyb21XbE91dHB1dCg6OndsX291dHB1dCAqb3V0cHV0KTsKKyAK KyBwcml2YXRlOgorKyAgICBlbnVtIEV2ZW50IDogdWludCB7CisrICAgICAgICBYZGdPdXRwdXRE b25lRXZlbnQgPSAweDEsCisrICAgICAgICBPdXRwdXREb25lRXZlbnQgPSAweDIsCisrICAgICAg ICBYZGdPdXRwdXROYW1lRXZlbnQgPSAweDQsCisrICAgIH07CisrICAgIHVpbnQgcmVxdWlyZWRF dmVudHMoKSBjb25zdDsKKysKKyAgICAgdm9pZCBvdXRwdXRfbW9kZSh1aW50MzJfdCBmbGFncywg aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgcmVmcmVzaCkgb3ZlcnJpZGU7CisgICAgIHZvaWQg b3V0cHV0X2dlb21ldHJ5KGludDMyX3QgeCwgaW50MzJfdCB5LAorICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwKK0BAIC0xNDgsOCArMTU1LDcg QEAgcHJpdmF0ZToKKyAgICAgUVNpemUgbVBoeXNpY2FsU2l6ZTsKKyAgICAgUVN0cmluZyBtT3V0 cHV0TmFtZTsKKyAgICAgUXQ6OlNjcmVlbk9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24gPSBRdDo6 UHJpbWFyeU9yaWVudGF0aW9uOworLSAgICBib29sIG1PdXRwdXREb25lID0gZmFsc2U7CistICAg IGJvb2wgbVhkZ091dHB1dERvbmUgPSBmYWxzZTsKKysgICAgdWludCBtUHJvY2Vzc2VkRXZlbnRz ID0gMDsKKyAgICAgYm9vbCBtSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAKKyAjaWYgUVRfQ09ORklH KGN1cnNvcikKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJh Y2tpbmdzdG9yZS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdz dG9yZS5jcHAKK2luZGV4IGRjN2ZmNjcwLi40MWNmZmRmNyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcAorKysrIGIvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5nc3RvcmUuY3BwCitAQCAtNTIsNiArNTIsNyBA QAorIAorICNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJpdmF0ZS93YXlsYW5kLXdheWxhbmQt Y2xpZW50LXByb3RvY29sLmg+CisgCisrI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHVu aXN0ZC5oPgorICNpbmNsdWRlIDxzeXMvbW1hbi5oPgorIAorQEAgLTYxLDYgKzYyLDkgQEAKKyAj ICBpZm5kZWYgTUZEX0NMT0VYRUMKKyAjICAgIGRlZmluZSBNRkRfQ0xPRVhFQyAgICAgMHgwMDAx VQorICMgIGVuZGlmCisrIyAgaWZuZGVmIE1GRF9BTExPV19TRUFMSU5HCisrIyAgICBkZWZpbmUg TUZEX0FMTE9XX1NFQUxJTkcgMHgwMDAyVQorKyMgIGVuZGlmCisgI2VuZGlmCisgCisgUVRfQkVH SU5fTkFNRVNQQUNFCitAQCAtNzQsOCArNzgsMTAgQEAgUVdheWxhbmRTaG1CdWZmZXI6OlFXYXls YW5kU2htQnVmZmVyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwKKyAgICAgaW50IGFsbG9jID0g c3RyaWRlICogc2l6ZS5oZWlnaHQoKTsKKyAgICAgaW50IGZkID0gLTE7CisgCistI2lmZGVmIFNZ U19tZW1mZF9jcmVhdGUKKy0gICAgZmQgPSBzeXNjYWxsKFNZU19tZW1mZF9jcmVhdGUsICJ3YXls YW5kLXNobSIsIE1GRF9DTE9FWEVDKTsKKysjaWYgZGVmaW5lZChTWVNfbWVtZmRfY3JlYXRlKSAm JiBkZWZpbmVkKEZfU0VBTF9TRUFMKQorKyAgICBmZCA9IHN5c2NhbGwoU1lTX21lbWZkX2NyZWF0 ZSwgIndheWxhbmQtc2htIiwgTUZEX0NMT0VYRUMgfCBNRkRfQUxMT1dfU0VBTElORyk7CisrICAg IGlmIChmZCA+PSAwKQorKyAgICAgICAgZmNudGwoZmQsIEZfQUREX1NFQUxTLCBGX1NFQUxfU0hS SU5LIHwgRl9TRUFMX1NFQUwpOworICNlbmRpZgorIAorICAgICBRU2NvcGVkUG9pbnRlcjxRRmls ZT4gZmlsZVBvaW50ZXI7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmR3aW5kb3cuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3BwCitp bmRleCBjYjgyODU3YS4uZmIyYzU5ZGMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZHdpbmRvdy5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k d2luZG93LmNwcAorQEAgLTc2LDcgKzc2LDYgQEAgUVdheWxhbmRXaW5kb3cgKlFXYXlsYW5kV2lu ZG93OjptTW91c2VHcmFiID0gbnVsbHB0cjsKKyBRV2F5bGFuZFdpbmRvdzo6UVdheWxhbmRXaW5k b3coUVdpbmRvdyAqd2luZG93LCBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpCisgICAgIDogUVBs YXRmb3JtV2luZG93KHdpbmRvdykKKyAgICAgLCBtRGlzcGxheShkaXNwbGF5KQorLSAgICAsIG1G cmFtZVF1ZXVlKG1EaXNwbGF5LT5jcmVhdGVGcmFtZVF1ZXVlKCkpCisgICAgICwgbVJlc2l6ZUFm dGVyU3dhcChxRW52aXJvbm1lbnRWYXJpYWJsZUlzU2V0KCJRVF9XQVlMQU5EX1JFU0laRV9BRlRF Ul9TV0FQIikpCisgeworICAgICB7CitAQCAtOTUsOSArOTQsNiBAQCBRV2F5bGFuZFdpbmRvdzo6 UVdheWxhbmRXaW5kb3coUVdpbmRvdyAqd2luZG93LCBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkp CisgCisgUVdheWxhbmRXaW5kb3c6On5RV2F5bGFuZFdpbmRvdygpCisgeworLSAgICBtRGlzcGxh eS0+ZGVzdHJveUZyYW1lUXVldWUobUZyYW1lUXVldWUpOworLSAgICBtRGlzcGxheS0+aGFuZGxl V2luZG93RGVzdHJveWVkKHRoaXMpOworLQorICAgICBkZWxldGUgbVdpbmRvd0RlY29yYXRpb247 CisgCisgICAgIGlmIChtU3VyZmFjZSkKK0BAIC0yNDMsNiArMjM5LDcgQEAgYm9vbCBRV2F5bGFu ZFdpbmRvdzo6c2hvdWxkQ3JlYXRlU3ViU3VyZmFjZSgpIGNvbnN0CisgCisgdm9pZCBRV2F5bGFu ZFdpbmRvdzo6cmVzZXQoKQorIHsKKysgICAgY2xvc2VDaGlsZFBvcHVwcygpOworICAgICBkZWxl dGUgbVNoZWxsU3VyZmFjZTsKKyAgICAgbVNoZWxsU3VyZmFjZSA9IG51bGxwdHI7CisgICAgIGRl bGV0ZSBtU3ViU3VyZmFjZVdpbmRvdzsKK0BAIC0yNTUsMTcgKzI1MiwyMiBAQCB2b2lkIFFXYXls YW5kV2luZG93OjpyZXNldCgpCisgICAgICAgICBtU3VyZmFjZS5yZXNldCgpOworICAgICB9Cisg CistICAgIGlmIChtRnJhbWVDYWxsYmFjaykgeworLSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJv eShtRnJhbWVDYWxsYmFjayk7CistICAgICAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7Cist ICAgIH0KKysgICAgeworKyAgICAgICAgUU11dGV4TG9ja2VyIGxvY2soJm1GcmFtZVN5bmNNdXRl eCk7CisrICAgICAgICBpZiAobUZyYW1lQ2FsbGJhY2spIHsKKysgICAgICAgICAgICB3bF9jYWxs YmFja19kZXN0cm95KG1GcmFtZUNhbGxiYWNrKTsKKysgICAgICAgICAgICBtRnJhbWVDYWxsYmFj ayA9IG51bGxwdHI7CisrICAgICAgICB9CisgCistICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRp bWVyLmludmFsaWRhdGUoKTsKKy0gICAgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7 CisrICAgICAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisrICAg ICAgICBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsKKysgICAgfQorICAgICBtRnJh bWVDYWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7CisgCisgICAgIG1NYXNrID0gUVJlZ2lvbigpOwor ICAgICBtUXVldWVkQnVmZmVyID0gbnVsbHB0cjsKKysKKysgICAgbURpc3BsYXktPmhhbmRsZVdp bmRvd0Rlc3Ryb3llZCh0aGlzKTsKKyB9CisgCisgUVdheWxhbmRXaW5kb3cgKlFXYXlsYW5kV2lu ZG93Ojpmcm9tV2xTdXJmYWNlKDo6d2xfc3VyZmFjZSAqc3VyZmFjZSkKK0BAIC0zNTEsMTkgKzM1 MywyNSBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRHZW9tZXRyeV9oZWxwZXIoY29uc3QgUVJl Y3QgJnJlY3QpCisgICAgIH0KKyB9CisgCistdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0 cnkoY29uc3QgUVJlY3QgJnJlY3QpCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnko Y29uc3QgUVJlY3QgJnIpCisgeworKyAgICBhdXRvIHJlY3QgPSByOworKyAgICBpZiAoZml4ZWRU b3BsZXZlbFBvc2l0aW9ucyAmJiAhUVBsYXRmb3JtV2luZG93OjpwYXJlbnQoKSAmJiB3aW5kb3co KS0+dHlwZSgpICE9IFF0OjpQb3B1cAorKyAgICAgICAgJiYgd2luZG93KCktPnR5cGUoKSAhPSBR dDo6VG9vbFRpcCkgeworKyAgICAgICAgcmVjdC5tb3ZlVG8oc2NyZWVuKCktPmdlb21ldHJ5KCku dG9wTGVmdCgpKTsKKysgICAgfQorICAgICBzZXRHZW9tZXRyeV9oZWxwZXIocmVjdCk7CisgCisg ICAgIGlmICh3aW5kb3coKS0+aXNWaXNpYmxlKCkgJiYgcmVjdC5pc1ZhbGlkKCkpIHsKKyAgICAg ICAgIGlmIChtV2luZG93RGVjb3JhdGlvbikKKyAgICAgICAgICAgICBtV2luZG93RGVjb3JhdGlv bi0+dXBkYXRlKCk7CisgCistICAgICAgICBpZiAobVJlc2l6ZUFmdGVyU3dhcCAmJiB3aW5kb3dU eXBlKCkgPT0gRWdsICYmIG1TZW50SW5pdGlhbFJlc2l6ZSkKKysgICAgICAgIGlmIChtUmVzaXpl QWZ0ZXJTd2FwICYmIHdpbmRvd1R5cGUoKSA9PSBFZ2wgJiYgbVNlbnRJbml0aWFsUmVzaXplKSB7 CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2soJm1SZXNpemVMb2NrKTsKKyAgICAgICAg ICAgICBtUmVzaXplRGlydHkgPSB0cnVlOworLSAgICAgICAgZWxzZQorKyAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVHZW9tZXRyeUNo YW5nZSh3aW5kb3coKSwgZ2VvbWV0cnkoKSk7CistCisrICAgICAgICB9CisgICAgICAgICBtU2Vu dEluaXRpYWxSZXNpemUgPSB0cnVlOworICAgICB9CisgICAgIFFSZWN0IGV4cG9zZUdlb21ldHJ5 KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNpemUoKSk7CitAQCAtMzc0LDcgKzM4Miw3IEBAIHZvaWQg UVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5KGNvbnN0IFFSZWN0ICZyZWN0KQorICAgICAgICAg bVNoZWxsU3VyZmFjZS0+c2V0V2luZG93R2VvbWV0cnkod2luZG93Q29udGVudEdlb21ldHJ5KCkp OworIAorICAgICBpZiAoaXNPcGFxdWUoKSAmJiBtTWFzay5pc0VtcHR5KCkpCistICAgICAgICBz ZXRPcGFxdWVBcmVhKHJlY3QpOworKyAgICAgICAgc2V0T3BhcXVlQXJlYShRUmVjdChRUG9pbnQo MCwgMCksIHJlY3Quc2l6ZSgpKSk7CisgfQorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlc2l6 ZUZyb21BcHBseUNvbmZpZ3VyZShjb25zdCBRU2l6ZSAmc2l6ZVdpdGhNYXJnaW5zLCBjb25zdCBR UG9pbnQgJm9mZnNldCkKK0BAIC0zOTksMjEgKzQwNyw2IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6 OnNlbmRFeHBvc2VFdmVudChjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgbUxhc3RFeHBvc2VHZW9t ZXRyeSA9IHJlY3Q7CisgfQorIAorLQorLXN0YXRpYyBRVmVjdG9yPFFQb2ludGVyPFFXYXlsYW5k V2luZG93Pj4gYWN0aXZlUG9wdXBzOworLQorLXZvaWQgUVdheWxhbmRXaW5kb3c6OmNsb3NlUG9w dXBzKFFXYXlsYW5kV2luZG93ICpwYXJlbnQpCisteworLSAgICB3aGlsZSAoIWFjdGl2ZVBvcHVw cy5pc0VtcHR5KCkpIHsKKy0gICAgICAgIGF1dG8gcG9wdXAgPSBhY3RpdmVQb3B1cHMudGFrZUxh c3QoKTsKKy0gICAgICAgIGlmIChwb3B1cC5pc051bGwoKSkKKy0gICAgICAgICAgICBjb250aW51 ZTsKKy0gICAgICAgIGlmIChwb3B1cC5kYXRhKCkgPT0gcGFyZW50KQorLSAgICAgICAgICAgIHJl dHVybjsKKy0gICAgICAgIHBvcHVwLT5yZXNldCgpOworLSAgICB9CistfQorLQorIFFQbGF0Zm9y bVNjcmVlbiAqUVdheWxhbmRXaW5kb3c6OmNhbGN1bGF0ZVNjcmVlbkZyb21TdXJmYWNlRXZlbnRz KCkgY29uc3QKKyB7CisgICAgIFFSZWFkTG9ja2VyIGxvY2soJm1TdXJmYWNlTG9jayk7CitAQCAt NDMzLDEwICs0MjYsNyBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRWaXNpYmxlKGJvb2wgdmlz aWJsZSkKKyAgICAgbGFzdFZpc2libGUgPSB2aXNpYmxlOworIAorICAgICBpZiAodmlzaWJsZSkg eworLSAgICAgICAgaWYgKHdpbmRvdygpLT50eXBlKCkgPT0gUXQ6OlBvcHVwIHx8IHdpbmRvdygp LT50eXBlKCkgPT0gUXQ6OlRvb2xUaXApCistICAgICAgICAgICAgYWN0aXZlUG9wdXBzIDw8IHRo aXM7CisgICAgICAgICBpbml0V2luZG93KCk7CistICAgICAgICBtRGlzcGxheS0+Zmx1c2hSZXF1 ZXN0cygpOworIAorICAgICAgICAgc2V0R2VvbWV0cnkod2luZG93R2VvbWV0cnkoKSk7CisgICAg ICAgICAvLyBEb24ndCBmbHVzaCB0aGUgZXZlbnRzIGhlcmUsIG9yIGVsc2UgdGhlIG5ld2x5IHZp c2libGUgd2luZG93IG1heSBzdGFydCBkcmF3aW5nLCBidXQgc2luY2UKK0BAIC00NDQsNyArNDM0 LDYgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCisgICAg ICAgICAvLyBRV2F5bGFuZFNobUJhY2tpbmdTdG9yZTo6YmVnaW5QYWludCgpLgorICAgICB9IGVs c2UgeworICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KCkpOworLSAgICAgICAgY2xvc2VQ b3B1cHModGhpcyk7CisgICAgICAgICByZXNldCgpOworICAgICB9CisgfQorQEAgLTU1NiwxMiAr NTQ1LDEyIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNlbmRSZWN1cnNpdmVFeHBvc2VFdmVudCgp CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6YXR0YWNoKFFXYXlsYW5kQnVmZmVyICpidWZmZXIs IGludCB4LCBpbnQgeSkKKyB7CistICAgIFFfQVNTRVJUKCFidWZmZXItPmNvbW1pdHRlZCgpKTsK KyAgICAgUVJlYWRMb2NrZXIgbG9ja2VyKCZtU3VyZmFjZUxvY2spOworICAgICBpZiAobVN1cmZh Y2UgPT0gbnVsbHB0cikKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgaWYgKGJ1ZmZlcikgewor KyAgICAgICAgUV9BU1NFUlQoIWJ1ZmZlci0+Y29tbWl0dGVkKCkpOworICAgICAgICAgaGFuZGxl VXBkYXRlKCk7CisgICAgICAgICBidWZmZXItPnNldEJ1c3koKTsKKyAKK0BAIC01ODMsNyArNTcy LDExIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmRhbWFnZShjb25zdCBRUmVjdCAmcmVjdCkKKyAg ICAgaWYgKG1TdXJmYWNlID09IG51bGxwdHIpCisgICAgICAgICByZXR1cm47CisgCistICAgIG1T dXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVp Z2h0KCkpOworKyAgICBjb25zdCBpbnQgcyA9IHNjYWxlKCk7CisrICAgIGlmIChtRGlzcGxheS0+ Y29tcG9zaXRvclZlcnNpb24oKSA+PSA0KQorKyAgICAgICAgbVN1cmZhY2UtPmRhbWFnZV9idWZm ZXIocyAqIHJlY3QueCgpLCBzICogcmVjdC55KCksIHMgKiByZWN0LndpZHRoKCksIHMgKiByZWN0 LmhlaWdodCgpKTsKKysgICAgZWxzZQorKyAgICAgICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0Lngo KSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgfQorIAorIHZvaWQg UVdheWxhbmRXaW5kb3c6OnNhZmVDb21taXQoUVdheWxhbmRCdWZmZXIgKmJ1ZmZlciwgY29uc3Qg UVJlZ2lvbiAmZGFtYWdlKQorQEAgLTYxOSw4ICs2MTIsMTQgQEAgdm9pZCBRV2F5bGFuZFdpbmRv dzo6Y29tbWl0KFFXYXlsYW5kQnVmZmVyICpidWZmZXIsIGNvbnN0IFFSZWdpb24gJmRhbWFnZSkK KyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgYXR0YWNoT2Zmc2V0KGJ1ZmZlcik7CistICAgIGZv ciAoY29uc3QgUVJlY3QgJnJlY3Q6IGRhbWFnZSkKKy0gICAgICAgIG1TdXJmYWNlLT5kYW1hZ2Uo cmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworKyAgICBp ZiAobURpc3BsYXktPmNvbXBvc2l0b3JWZXJzaW9uKCkgPj0gNCkgeworKyAgICAgICAgY29uc3Qg aW50IHMgPSBzY2FsZSgpOworKyAgICAgICAgZm9yIChjb25zdCBRUmVjdCAmcmVjdDogZGFtYWdl KQorKyAgICAgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2VfYnVmZmVyKHMgKiByZWN0LngoKSwgcyAq IHJlY3QueSgpLCBzICogcmVjdC53aWR0aCgpLCBzICogcmVjdC5oZWlnaHQoKSk7CisrICAgIH0g ZWxzZSB7CisrICAgICAgICBmb3IgKGNvbnN0IFFSZWN0ICZyZWN0OiBkYW1hZ2UpCisrICAgICAg ICAgICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwg cmVjdC5oZWlnaHQoKSk7CisrICAgIH0KKyAgICAgUV9BU1NFUlQoIWJ1ZmZlci0+Y29tbWl0dGVk KCkpOworICAgICBidWZmZXItPnNldENvbW1pdHRlZCgpOworICAgICBtU3VyZmFjZS0+Y29tbWl0 KCk7CitAQCAtNjM1LDQyICs2MzQsNTMgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6Y29tbWl0KCkK KyAKKyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBRV2F5bGFuZFdpbmRvdzo6Y2FsbGJhY2tM aXN0ZW5lciA9IHsKKyAgICAgW10odm9pZCAqZGF0YSwgd2xfY2FsbGJhY2sgKmNhbGxiYWNrLCB1 aW50MzJfdCB0aW1lKSB7CistICAgICAgICBRX1VOVVNFRChjYWxsYmFjayk7CisgICAgICAgICBR X1VOVVNFRCh0aW1lKTsKKyAgICAgICAgIGF1dG8gKndpbmRvdyA9IHN0YXRpY19jYXN0PFFXYXls YW5kV2luZG93Kj4oZGF0YSk7CistICAgICAgICB3aW5kb3ctPmhhbmRsZUZyYW1lQ2FsbGJhY2so KTsKKysgICAgICAgIHdpbmRvdy0+aGFuZGxlRnJhbWVDYWxsYmFjayhjYWxsYmFjayk7CisgICAg IH0KKyB9OworIAorLXZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZUZyYW1lQ2FsbGJhY2soKQor K3ZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZUZyYW1lQ2FsbGJhY2sod2xfY2FsbGJhY2sqIGNh bGxiYWNrKQorIHsKKysgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsK KysgICAgaWYgKCFtRnJhbWVDYWxsYmFjaykgeworKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUg Y2FsbGJhY2sgaXMgYWxyZWFkeSB1bnNldCBieSBRV2F5bGFuZFdpbmRvdzo6cmVzZXQuCisrICAg ICAgICAvLyBUaGUgd2xfY2FsbGJhY2sgb2JqZWN0IHdpbGwgYmUgZGVzdHJveWVkIHRoZXJlIHRv by4KKysgICAgICAgIHJldHVybjsKKysgICAgfQorKyAgICBRX0FTU0VSVChjYWxsYmFjayA9PSBt RnJhbWVDYWxsYmFjayk7CisrICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJhY2spOworKyAg ICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CisrCisgICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxs YmFjayA9IGZhbHNlOworICAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRl KCk7CisgCisgICAgIC8vIFRoZSByZXN0IGNhbiB3YWl0IHVudGlsIHdlIGNhbiBydW4gaXQgb24g dGhlIGNvcnJlY3QgdGhyZWFkCistICAgIGlmICghbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSkg eworLSAgICAgICAgYXV0byBkb0hhbmRsZUV4cG9zZSA9IFt0aGlzXSgpIHsKKy0gICAgICAgICAg ICBib29sIHdhc0V4cG9zZWQgPSBpc0V4cG9zZWQoKTsKKy0gICAgICAgICAgICBtRnJhbWVDYWxs YmFja1RpbWVkT3V0ID0gZmFsc2U7CistICAgICAgICAgICAgaWYgKCF3YXNFeHBvc2VkICYmIGlz RXhwb3NlZCgpKSAvLyBEaWQgc2V0dGluZyBtRnJhbWVDYWxsYmFja1RpbWVkT3V0IG1ha2UgdGhl IHdpbmRvdyBleHBvc2VkPworLSAgICAgICAgICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3Qo UVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKSk7CistICAgICAgICAgICAgaWYgKHdhc0V4cG9z ZWQgJiYgaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSkKKy0gICAgICAgICAgICAgICAgZGVsaXZl clVwZGF0ZVJlcXVlc3QoKTsKKy0KKy0gICAgICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2 ZXJ5ID0gZmFsc2U7CistICAgICAgICB9OworKyAgICBhdXRvIGRvSGFuZGxlRXhwb3NlID0gW3Ro aXNdKCkgeworKyAgICAgICAgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeS5zdG9yZVJlbGVhc2Uo ZmFsc2UpOworKyAgICAgICAgYm9vbCB3YXNFeHBvc2VkID0gaXNFeHBvc2VkKCk7CisrICAgICAg ICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7CisrICAgICAgICBpZiAoIXdhc0V4cG9z ZWQgJiYgaXNFeHBvc2VkKCkpIC8vIERpZCBzZXR0aW5nIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQg bWFrZSB0aGUgd2luZG93IGV4cG9zZWQ/CisrICAgICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFS ZWN0KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNpemUoKSkpOworKyAgICAgICAgaWYgKHdhc0V4cG9z ZWQgJiYgaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSkKKysgICAgICAgICAgICBkZWxpdmVyVXBk YXRlUmVxdWVzdCgpOworKyAgICB9OworIAorKyAgICBpZiAobVdhaXRpbmdGb3JVcGRhdGVEZWxp dmVyeS50ZXN0QW5kU2V0QWNxdWlyZShmYWxzZSwgdHJ1ZSkpIHsKKyAgICAgICAgIC8vIFF1ZXVl ZCBjb25uZWN0aW9uLCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgY2FsbCBoYW5kbGVVcGRhdGUoKSBm cm9tIGluc2lkZSB3YWl0Rm9yRnJhbWVTeW5jKCkKKyAgICAgICAgIC8vIGluIHRoZSBzaW5nbGUt dGhyZWFkZWQgY2FzZS4KKy0gICAgICAgIG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSB0cnVl OworICAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBkb0hhbmRsZUV4cG9z ZSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAgICB9CisrCisrICAgIG1GcmFtZVN5bmNXYWl0 Lm5vdGlmeV9hbGwoKTsKKyB9CisgCisgYm9vbCBRV2F5bGFuZFdpbmRvdzo6d2FpdEZvckZyYW1l U3luYyhpbnQgdGltZW91dCkKKyB7CistICAgIFFNdXRleExvY2tlciBsb2NrZXIobUZyYW1lUXVl dWUubXV0ZXgpOworLSAgICBtRGlzcGxheS0+ZGlzcGF0Y2hRdWV1ZVdoaWxlKG1GcmFtZVF1ZXVl LnF1ZXVlLCBbJl0oKSB7IHJldHVybiBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2s7IH0sIHRpbWVv dXQpOworKyAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKworKyAg ICBRRGVhZGxpbmVUaW1lciBkZWFkbGluZSh0aW1lb3V0KTsKKysgICAgd2hpbGUgKG1XYWl0aW5n Rm9yRnJhbWVDYWxsYmFjayAmJiBtRnJhbWVTeW5jV2FpdC53YWl0KCZtRnJhbWVTeW5jTXV0ZXgs IGRlYWRsaW5lKSkgeyB9CisgCisgICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spIHsK KyAgICAgICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiRGlkbid0IHJlY2Vp dmUgZnJhbWUgY2FsbGJhY2sgaW4gdGltZSwgd2luZG93IHNob3VsZCBub3cgYmUgaW5leHBvc2Vk IjsKK0BAIC04NjgsNiArODc4LDE3IEBAIGJvb2wgUVdheWxhbmRXaW5kb3c6OmNyZWF0ZURlY29y YXRpb24oKQorICAgICAgICAgICAgIHN1YnN1cmYtPnNldF9wb3NpdGlvbihwb3MueCgpICsgbS5s ZWZ0KCksIHBvcy55KCkgKyBtLnRvcCgpKTsKKyAgICAgICAgIH0KKyAgICAgICAgIHNlbmRFeHBv c2VFdmVudChRUmVjdChRUG9pbnQoKSwgZ2VvbWV0cnkoKS5zaXplKCkpKTsKKysKKysgICAgICAg IC8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIGJ1ZmZlciBpcyByZWNyZWF0ZWQs IGJ1dCBzaW5jZQorKyAgICAgICAgLy8gdGhlIGNvbnRlbnQgcmVjdCByZW1haW5zIHRoZSBzYW1l LCB0aGUgd2lkZ2V0cyByZW1haW4gdGhlIHNhbWUKKysgICAgICAgIC8vIHNpemUgYW5kIGFyZSBu b3QgcmVkcmF3biwgbGVhdmluZyB0aGUgbmV3IGJ1ZmZlciBlbXB0eS4gQXMgYSBzaW1wbGUKKysg ICAgICAgIC8vIHdvcmstYXJvdW5kLCB3ZSB0cmlnZ2VyIGEgZnVsbCBleHRyYSB1cGRhdGUgd2hl bmV2ZXIgdGhlIGNsaWVudC1zaWRlCisrICAgICAgICAvLyB3aW5kb3cgZGVjb3JhdGlvbnMgYXJl IHRvZ2dsZWQgd2hpbGUgdGhlIHdpbmRvdyBpcyBzaG93aW5nLgorKyAgICAgICAgLy8gTm90ZTog Y3JlYXRlRGVjb3JhdGlvbigpIGlzIHNvbWV0aW1lcyBjYWxsZWQgZnJvbSB0aGUgcmVuZGVyIHRo cmVhZAorKyAgICAgICAgLy8gb2YgUXQgUXVpY2suIFRoaXMgaXMgZXNzZW50aWFsbHkgd3Jvbmcg YW5kIGNvdWxkIHBvdGVudGlhbGx5IGNhdXNlIHByb2JsZW1zLAorKyAgICAgICAgLy8gYnV0IHVu dGlsIHRoZSB1bmRlcmx5aW5nIGlzc3VlIGhhcyBiZWVuIGZpeGVkLCB3ZSBoYXZlIHRvIHVzZSBp bnZva2VNZXRob2QoKQorKyAgICAgICAgLy8gaGVyZSB0byBhdm9pZCBhc3NlcnRzLgorKyAgICAg ICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh3aW5kb3coKSwgJlFXaW5kb3c6OnJlcXVlc3RV cGRhdGUpOworICAgICB9CisgCisgICAgIHJldHVybiBtV2luZG93RGVjb3JhdGlvbjsKK0BAIC0x MDIzLDYgKzEwNDQsMTMgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlU2NyZWVuc0NoYW5n ZWQoKQorIAorICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dTY3JlZW5D aGFuZ2VkKHdpbmRvdygpLCBuZXdTY3JlZW4tPlFQbGF0Zm9ybVNjcmVlbjo6c2NyZWVuKCkpOwor ICAgICBtTGFzdFJlcG9ydGVkU2NyZWVuID0gbmV3U2NyZWVuOworKyAgICBpZiAoZml4ZWRUb3Bs ZXZlbFBvc2l0aW9ucyAmJiAhUVBsYXRmb3JtV2luZG93OjpwYXJlbnQoKSAmJiB3aW5kb3coKS0+ dHlwZSgpICE9IFF0OjpQb3B1cAorKyAgICAgICAgJiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6 VG9vbFRpcAorKyAgICAgICAgJiYgZ2VvbWV0cnkoKS50b3BMZWZ0KCkgIT0gbmV3U2NyZWVuLT5n ZW9tZXRyeSgpLnRvcExlZnQoKSkgeworKyAgICAgICAgYXV0byBnZW9tZXRyeSA9IHRoaXMtPmdl b21ldHJ5KCk7CisrICAgICAgICBnZW9tZXRyeS5tb3ZlVG8obmV3U2NyZWVuLT5nZW9tZXRyeSgp LnRvcExlZnQoKSk7CisrICAgICAgICBzZXRHZW9tZXRyeShnZW9tZXRyeSk7CisrICAgIH0KKyAK KyAgICAgaW50IHNjYWxlID0gbmV3U2NyZWVuLT5pc1BsYWNlaG9sZGVyKCkgPyAxIDogc3RhdGlj X2Nhc3Q8UVdheWxhbmRTY3JlZW4gKj4obmV3U2NyZWVuKS0+c2NhbGUoKTsKKyAgICAgaWYgKHNj YWxlICE9IG1TY2FsZSkgeworQEAgLTEwOTQsMTAgKzExMjIsMTggQEAgYm9vbCBRV2F5bGFuZFdp bmRvdzo6c2V0TW91c2VHcmFiRW5hYmxlZChib29sIGdyYWIpCisgICAgIHJldHVybiB0cnVlOwor IH0KKyAKKytRdDo6V2luZG93U3RhdGVzIFFXYXlsYW5kV2luZG93Ojp3aW5kb3dTdGF0ZXMoKSBj b25zdAorK3sKKysgICAgcmV0dXJuIG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXM7CisrfQorKwor IHZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQoUXQ6OldpbmRv d1N0YXRlcyBzdGF0ZXMpCisgeworICAgICBjcmVhdGVEZWNvcmF0aW9uKCk7CistICAgIFFXaW5k b3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd1N0YXRlQ2hhbmdlZCh3aW5kb3coKSwgc3Rh dGVzLCBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVzKTsKKysgICAgUXQ6OldpbmRvd1N0YXRlcyBz dGF0ZXNXaXRob3V0QWN0aXZlID0gc3RhdGVzICYgflF0OjpXaW5kb3dBY3RpdmU7CisrICAgIFF0 OjpXaW5kb3dTdGF0ZXMgbGFzdFN0YXRlc1dpdGhvdXRBY3RpdmUgPSBtTGFzdFJlcG9ydGVkV2lu ZG93U3RhdGVzICYgflF0OjpXaW5kb3dBY3RpdmU7CisrICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZh Y2U6OmhhbmRsZVdpbmRvd1N0YXRlQ2hhbmdlZCh3aW5kb3coKSwgc3RhdGVzV2l0aG91dEFjdGl2 ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxhc3RTdGF0ZXNXaXRob3V0QWN0aXZlKTsKKyAgICAgbUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRl cyA9IHN0YXRlczsKKyB9CisgCitAQCAtMTEzOSwxOSArMTE3NSwyNCBAQCB2b2lkIFFXYXlsYW5k V2luZG93Ojp0aW1lckV2ZW50KFFUaW1lckV2ZW50ICpldmVudCkKKyAgICAgaWYgKGV2ZW50LT50 aW1lcklkKCkgIT0gbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCkKKyAgICAgICAg IHJldHVybjsKKyAKKy0gICAgYm9vbCBjYWxsYmFja1RpbWVyRXhwaXJlZCA9IG1GcmFtZUNhbGxi YWNrRWxhcHNlZFRpbWVyLmhhc0V4cGlyZWQobUZyYW1lQ2FsbGJhY2tUaW1lb3V0KTsKKy0gICAg aWYgKCFtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pc1ZhbGlkKCkgfHwgY2FsbGJhY2tUaW1l ckV4cGlyZWQgKSB7CistICAgICAgICBraWxsVGltZXIobUZyYW1lQ2FsbGJhY2tDaGVja0ludGVy dmFsVGltZXJJZCk7CistICAgICAgICBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklk ID0gLTE7CistICAgIH0KKy0gICAgaWYgKG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFs aWQoKSAmJiBjYWxsYmFja1RpbWVyRXhwaXJlZCkgeworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2tF bGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworKyAgICB7CisrICAgICAgICBRTXV0ZXhMb2NrZXIg bG9jaygmbUZyYW1lU3luY011dGV4KTsKKyAKKy0gICAgICAgIHFDRGVidWcobGNXYXlsYW5kQmFj a2luZ3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUgZnJhbWUgY2FsbGJhY2sgaW4gdGltZSwgd2lu ZG93IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrVGlt ZWRPdXQgPSB0cnVlOworLSAgICAgICAgbVdhaXRpbmdGb3JVcGRhdGUgPSBmYWxzZTsKKy0gICAg ICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdCgpKTsKKysgICAgICAgIGJvb2wgY2FsbGJhY2tUaW1l ckV4cGlyZWQgPSBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5oYXNFeHBpcmVkKG1GcmFtZUNh bGxiYWNrVGltZW91dCk7CisrICAgICAgICBpZiAoIW1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVy LmlzVmFsaWQoKSB8fCBjYWxsYmFja1RpbWVyRXhwaXJlZCApIHsKKysgICAgICAgICAgICBraWxs VGltZXIobUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCk7CisrICAgICAgICAgICAg bUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA9IC0xOworKyAgICAgICAgfQorKyAg ICAgICAgaWYgKCFtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pc1ZhbGlkKCkgfHwgIWNhbGxi YWNrVGltZXJFeHBpcmVkKSB7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAg ICAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworICAgICB9Cisr CisrICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUg ZnJhbWUgY2FsbGJhY2sgaW4gdGltZSwgd2luZG93IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsK KysgICAgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IHRydWU7CisrICAgIG1XYWl0aW5nRm9yVXBk YXRlID0gZmFsc2U7CisrICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdCgpKTsKKyB9CisgCisgdm9p ZCBRV2F5bGFuZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgpCitAQCAtMTE2MCw4ICsxMjAxLDExIEBA IHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorICAgICBRX0FTU0VSVChoYXNQ ZW5kaW5nVXBkYXRlUmVxdWVzdCgpKTsgLy8gc2hvdWxkIGJlIHNldCBieSBRUEEKKyAKKyAgICAg Ly8gSWYgd2UgaGF2ZSBhIGZyYW1lIGNhbGxiYWNrIGFsbCBpcyBnb29kIGFuZCB3aWxsIGJlIHRh a2VuIGNhcmUgb2YgdGhlcmUKKy0gICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKy0g ICAgICAgIHJldHVybjsKKysgICAgeworKyAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZy YW1lU3luY011dGV4KTsKKysgICAgICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisr ICAgICAgICAgICAgcmV0dXJuOworKyAgICB9CisgCisgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkg Y2FsbGVkIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCksIGJ1dCBoYXZlbid0IHNlZW4gYW55IGF0dGFj aCtjb21taXQvc3dhcCB5ZXQKKyAgICAgLy8gVGhpcyBpcyBhIHNvbWV3aGF0IHJlZHVuZGFudCBi ZWhhdmlvciBhbmQgbWlnaHQgaW5kaWNhdGUgYSBidWcgaW4gdGhlIGNhbGxpbmcgY29kZSwgc28g bG9nCitAQCAtMTE3NCw3ICsxMjE4LDEyIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RV cGRhdGUoKQorICAgICAvLyBzbyB1c2UgaW52b2tlTWV0aG9kIHRvIGRlbGF5IHRoZSBkZWxpdmVy eSBhIGJpdC4KKyAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBbdGhpc10gewor ICAgICAgICAgLy8gVGhpbmdzIG1pZ2h0IGhhdmUgY2hhbmdlZCBpbiB0aGUgbWVhbnRpbWUKKy0g ICAgICAgIGlmIChoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpICYmICFtV2FpdGluZ0ZvckZyYW1l Q2FsbGJhY2spCisrICAgICAgICB7CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigm bUZyYW1lU3luY011dGV4KTsKKysgICAgICAgICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxi YWNrKQorKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrICAgICAgICBpZiAo aGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSkKKyAgICAgICAgICAgICBkZWxpdmVyVXBkYXRlUmVx dWVzdCgpOworICAgICB9LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgfQorQEAgLTExODUsMTkg KzEyMzQsMTggQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgpCisgdm9pZCBR V2F5bGFuZFdpbmRvdzo6aGFuZGxlVXBkYXRlKCkKKyB7CisgICAgIHFDRGVidWcobGNXYXlsYW5k QmFja2luZ3N0b3JlKSA8PCAiaGFuZGxlVXBkYXRlIiA8PCBRVGhyZWFkOjpjdXJyZW50VGhyZWFk KCk7CisrCisgICAgIC8vIFRPRE86IFNob3VsZCBzeW5jIHN1YnN1cmZhY2VzIGF2b2lkIHJlcXVl c3RpbmcgZnJhbWUgY2FsbGJhY2tzPworICAgICBRUmVhZExvY2tlciBsb2NrKCZtU3VyZmFjZUxv Y2spOworICAgICBpZiAoIW1TdXJmYWNlKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBpZiAo bUZyYW1lQ2FsbGJhY2spIHsKKy0gICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobUZyYW1lQ2Fs bGJhY2spOworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworLSAgICB9CisrICAg IFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrICAgIGlmIChtV2FpdGlu Z0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICByZXR1cm47CisgCistICAgIFFNdXRleExvY2tl ciBsb2NrZXIobUZyYW1lUXVldWUubXV0ZXgpOworICAgICBzdHJ1Y3QgOjp3bF9zdXJmYWNlICp3 cmFwcGVkU3VyZmFjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3RydWN0IDo6d2xfc3VyZmFjZSAqPih3 bF9wcm94eV9jcmVhdGVfd3JhcHBlcihtU3VyZmFjZS0+b2JqZWN0KCkpKTsKKy0gICAgd2xfcHJv eHlfc2V0X3F1ZXVlKHJlaW50ZXJwcmV0X2Nhc3Q8d2xfcHJveHkgKj4od3JhcHBlZFN1cmZhY2Up LCBtRnJhbWVRdWV1ZS5xdWV1ZSk7CisrICAgIHdsX3Byb3h5X3NldF9xdWV1ZShyZWludGVycHJl dF9jYXN0PHdsX3Byb3h5ICo+KHdyYXBwZWRTdXJmYWNlKSwgbURpc3BsYXktPmZyYW1lRXZlbnRR dWV1ZSgpKTsKKyAgICAgbUZyYW1lQ2FsbGJhY2sgPSB3bF9zdXJmYWNlX2ZyYW1lKHdyYXBwZWRT dXJmYWNlKTsKKyAgICAgd2xfcHJveHlfd3JhcHBlcl9kZXN0cm95KHdyYXBwZWRTdXJmYWNlKTsK KyAgICAgd2xfY2FsbGJhY2tfYWRkX2xpc3RlbmVyKG1GcmFtZUNhbGxiYWNrLCAmUVdheWxhbmRX aW5kb3c6OmNhbGxiYWNrTGlzdGVuZXIsIHRoaXMpOworQEAgLTEyMDcsNiArMTI1NSw4IEBAIHZv aWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZVVwZGF0ZSgpCisgICAgIC8vIFN0YXJ0IGEgdGltZXIg Zm9yIGhhbmRsaW5nIHRoZSBjYXNlIHdoZW4gdGhlIGNvbXBvc2l0b3Igc3RvcHMgc2VuZGluZyBm cmFtZSBjYWxsYmFja3MuCisgICAgIGlmIChtRnJhbWVDYWxsYmFja1RpbWVvdXQgPiAwKSB7Cisg ICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsIFt0aGlzXSB7CisrICAgICAg ICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysKKyAgICAgICAg ICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgIGlm IChtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkIDwgMCkKKyAgICAgICAgICAgICAg ICAgICAgIG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQgPSBzdGFydFRpbWVyKG1G cmFtZUNhbGxiYWNrVGltZW91dCk7CitAQCAtMTI2Nyw2ICsxMzE3LDIwIEBAIHZvaWQgUVdheWxh bmRXaW5kb3c6OnNldE9wYXF1ZUFyZWEoY29uc3QgUVJlZ2lvbiAmb3BhcXVlQXJlYSkKKyAgICAg d2xfcmVnaW9uX2Rlc3Ryb3kocmVnaW9uKTsKKyB9CisgCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6 YWRkQ2hpbGRQb3B1cChRV2F5bGFuZFdpbmRvdyAqc3VyZmFjZSkgeworKyAgICBtQ2hpbGRQb3B1 cHMuYXBwZW5kKHN1cmZhY2UpOworK30KKysKKyt2b2lkIFFXYXlsYW5kV2luZG93OjpyZW1vdmVD aGlsZFBvcHVwKFFXYXlsYW5kV2luZG93ICpzdXJmYWNlKSB7CisrICAgIG1DaGlsZFBvcHVwcy5y ZW1vdmVBbGwoc3VyZmFjZSk7CisrfQorKworK3ZvaWQgUVdheWxhbmRXaW5kb3c6OmNsb3NlQ2hp bGRQb3B1cHMoKSB7CisrICAgIHdoaWxlICghbUNoaWxkUG9wdXBzLmlzRW1wdHkoKSkgeworKyAg ICAgICAgYXV0byBwb3B1cCA9IG1DaGlsZFBvcHVwcy50YWtlTGFzdCgpOworKyAgICAgICAgcG9w dXAtPnJlc2V0KCk7CisrICAgIH0KKyt9CisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYg LS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvd19wLmggYi9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvd19wLmgKK2luZGV4IDAxMzM3Y2ZmLi4yZjIxOWQ4 YyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3AuaAor KysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3dfcC5oCitAQCAtOTgsNiAr OTgsOSBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kV2luZG93KFFXaW5kb3cgKndpbmRvdywgUVdh eWxhbmREaXNwbGF5ICpkaXNwbGF5KTsKKyAgICAgflFXYXlsYW5kV2luZG93KCkgb3ZlcnJpZGU7 CisgCisrICAgIC8vIEtlZXAgVG9wbGV2ZWxzIHBvc2l0aW9uIG9uIHRoZSB0b3AgbGVmdCBjb3Ju ZXIgb2YgdGhlaXIgc2NyZWVuCisrICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBmaXhlZFRvcGxldmVs UG9zaXRpb25zID0gdHJ1ZTsKKysKKyAgICAgdmlydHVhbCBXaW5kb3dUeXBlIHdpbmRvd1R5cGUo KSBjb25zdCA9IDA7CisgICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVTaXplKCk7CisgICAgIFdJZCB3 aW5JZCgpIGNvbnN0IG92ZXJyaWRlOworQEAgLTE0OCw2ICsxNTEsNyBAQCBwdWJsaWM6CisgICAg IHZvaWQgc2V0V2luZG93U3RhdGUoUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXMpIG92ZXJyaWRlOwor ICAgICB2b2lkIHNldFdpbmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFncyBmbGFncykgb3ZlcnJpZGU7 CisgICAgIHZvaWQgaGFuZGxlV2luZG93U3RhdGVzQ2hhbmdlZChRdDo6V2luZG93U3RhdGVzIHN0 YXRlcyk7CisrICAgIFF0OjpXaW5kb3dTdGF0ZXMgd2luZG93U3RhdGVzKCkgY29uc3Q7CisgCisg ICAgIHZvaWQgcmFpc2UoKSBvdmVycmlkZTsKKyAgICAgdm9pZCBsb3dlcigpIG92ZXJyaWRlOwor QEAgLTIwNiw2ICsyMTAsMTAgQEAgcHVibGljOgorICAgICB2b2lkIGhhbmRsZVVwZGF0ZSgpOwor ICAgICB2b2lkIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCkgb3ZlcnJpZGU7CisgCisrICAgIHZvaWQg YWRkQ2hpbGRQb3B1cChRV2F5bGFuZFdpbmRvdyogY2hpbGQpOworKyAgICB2b2lkIHJlbW92ZUNo aWxkUG9wdXAoUVdheWxhbmRXaW5kb3cqIGNoaWxkKTsKKysgICAgdm9pZCBjbG9zZUNoaWxkUG9w dXBzKCk7CisrCisgcHVibGljIHNsb3RzOgorICAgICB2b2lkIGFwcGx5Q29uZmlndXJlKCk7Cisg CitAQCAtMjE1LDcgKzIyMywxMSBAQCBzaWduYWxzOgorIAorIHByb3RlY3RlZDoKKyAgICAgUVdh eWxhbmREaXNwbGF5ICptRGlzcGxheSA9IG51bGxwdHI7CisrCisrICAgIC8vIG1TdXJmYWNlIGNh biBiZSB3cml0dGVuIGJ5IHRoZSBtYWluIHRocmVhZC4gT3RoZXIgdGhyZWFkcyBzaG91bGQgY2xh aW0gYSByZWFkIGxvY2sgZm9yIGFjY2VzcworKyAgICBtdXRhYmxlIFFSZWFkV3JpdGVMb2NrIG1T dXJmYWNlTG9jazsKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRTdXJmYWNlPiBtU3VyZmFj ZTsKKysKKyAgICAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKm1TaGVsbFN1cmZhY2UgPSBudWxscHRy OworICAgICBRV2F5bGFuZFN1YlN1cmZhY2UgKm1TdWJTdXJmYWNlV2luZG93ID0gbnVsbHB0cjsK KyAgICAgUVZlY3RvcjxRV2F5bGFuZFN1YlN1cmZhY2UgKj4gbUNoaWxkcmVuOworQEAgLTIyNSwx MyArMjM3LDE0IEBAIHByb3RlY3RlZDoKKyAgICAgUXQ6Ok1vdXNlQnV0dG9ucyBtTW91c2VQcmVz c2VkSW5Db250ZW50QXJlYSA9IFF0OjpOb0J1dHRvbjsKKyAKKyAgICAgV0lkIG1XaW5kb3dJZDsK Ky0gICAgYm9vbCBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsKKyAgICAgYm9vbCBt RnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7IC8vIFdoZXRoZXIgdGhlIGZyYW1lIGNhbGxi YWNrIGhhcyB0aW1lZCBvdXQKKy0gICAgYm9vbCBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0g ZmFsc2U7CisgICAgIGludCBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7 CistICAgIFFFbGFwc2VkVGltZXIgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXI7CistICAgIHN0 cnVjdCA6OndsX2NhbGxiYWNrICptRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CistICAgIFFXYXls YW5kRGlzcGxheTo6RnJhbWVRdWV1ZSBtRnJhbWVRdWV1ZTsKKysgICAgUUF0b21pY0ludCBtV2Fp dGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFsc2U7CisrCisrICAgIGJvb2wgbVdhaXRpbmdGb3JG cmFtZUNhbGxiYWNrID0gZmFsc2U7IC8vIFByb3RlY3RlZCBieSBtRnJhbWVTeW5jTXV0ZXgKKysg ICAgUUVsYXBzZWRUaW1lciBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lcjsgLy8gUHJvdGVjdGVk IGJ5IG1GcmFtZVN5bmNNdXRleAorKyAgICBzdHJ1Y3QgOjp3bF9jYWxsYmFjayAqbUZyYW1lQ2Fs bGJhY2sgPSBudWxscHRyOyAvLyBQcm90ZWN0ZWQgYnkgbUZyYW1lU3luY011dGV4CisrICAgIFFN dXRleCBtRnJhbWVTeW5jTXV0ZXg7CisgICAgIFFXYWl0Q29uZGl0aW9uIG1GcmFtZVN5bmNXYWl0 OworIAorICAgICAvLyBUcnVlIHdoZW4gd2UgaGF2ZSBjYWxsZWQgZGVsaXZlclJlcXVlc3RVcGRh dGUsIGJ1dCB0aGUgY2xpZW50IGhhcyBub3QgeWV0IGF0dGFjaGVkIGEgbmV3IGJ1ZmZlcgorQEAg LTI2MSw2ICsyNzQsOCBAQCBwcm90ZWN0ZWQ6CisgICAgIFFXYXlsYW5kQnVmZmVyICptUXVldWVk QnVmZmVyID0gbnVsbHB0cjsKKyAgICAgUVJlZ2lvbiBtUXVldWVkQnVmZmVyRGFtYWdlOworIAor KyAgICBRTGlzdDxRUG9pbnRlcjxRV2F5bGFuZFdpbmRvdz4+IG1DaGlsZFBvcHVwczsKKysKKyBw cml2YXRlOgorICAgICB2b2lkIHNldEdlb21ldHJ5X2hlbHBlcihjb25zdCBRUmVjdCAmcmVjdCk7 CisgICAgIHZvaWQgaW5pdFdpbmRvdygpOworQEAgLTI4MywxMiArMjk4LDEwIEBAIHByaXZhdGU6 CisgICAgIFFSZWN0IG1MYXN0RXhwb3NlR2VvbWV0cnk7CisgCisgICAgIHN0YXRpYyBjb25zdCB3 bF9jYWxsYmFja19saXN0ZW5lciBjYWxsYmFja0xpc3RlbmVyOworLSAgICB2b2lkIGhhbmRsZUZy YW1lQ2FsbGJhY2soKTsKKysgICAgdm9pZCBoYW5kbGVGcmFtZUNhbGxiYWNrKHN0cnVjdCA6Onds X2NhbGxiYWNrKiBjYWxsYmFjayk7CisgCisgICAgIHN0YXRpYyBRV2F5bGFuZFdpbmRvdyAqbU1v dXNlR3JhYjsKKyAKKy0gICAgbXV0YWJsZSBRUmVhZFdyaXRlTG9jayBtU3VyZmFjZUxvY2s7Cist CisgICAgIGZyaWVuZCBjbGFzcyBRV2F5bGFuZFN1YlN1cmZhY2U7CisgfTsKKyAKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxp bnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3 YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGNjYWQwMDQ4Li40Y2M5YjNiOCAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50ZWdyYXRpb24vcXdheWxhbmRz aGVsbGludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRl Z3JhdGlvbi9xd2F5bGFuZHNoZWxsaW50ZWdyYXRpb25fcC5oCitAQCAtNzMsMTEgKzczLDEwIEBA IHB1YmxpYzoKKyAgICAgICAgIHJldHVybiB0cnVlOworICAgICB9CisgICAgIHZpcnR1YWwgUVdh eWxhbmRTaGVsbFN1cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2lu ZG93KSA9IDA7CisrICAgIC8vIGtlcHQgZm9yIGJpbmFyeSBjb21wYXQgd2l0aCBsYXllci1zaGVs bC1xdAorICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxh bmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIHsKKy0gICAgICAg IGlmIChuZXdGb2N1cykKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2 YXRlZChuZXdGb2N1cyk7CistICAgICAgICBpZiAob2xkRm9jdXMpCistICAgICAgICAgICAgbV9k aXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CisrICAgICAgICBRX1VO VVNFRChuZXdGb2N1cyk7CisrICAgICAgICBRX1VOVVNFRChvbGRGb2N1cyk7CisgICAgIH0KKyAg ICAgdmlydHVhbCB2b2lkICpuYXRpdmVSZXNvdXJjZUZvcldpbmRvdyhjb25zdCBRQnl0ZUFycmF5 ICZyZXNvdXJjZSwgUVdpbmRvdyAqd2luZG93KSB7CisgICAgICAgICBRX1VOVVNFRChyZXNvdXJj ZSk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jb21wb3NpdG9yL2NvbmZpZ3VyZS5qc29u IGIvcXR3YXlsYW5kL3NyYy9jb21wb3NpdG9yL2NvbmZpZ3VyZS5qc29uCitpbmRleCBiY2ZkNTIx NS4uZGE5NWQwN2IgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmln dXJlLmpzb24KKysrKyBiL3F0d2F5bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbgor QEAgLTcsNiArNywzMSBAQAorICAgICAidGVzdERpciI6ICIuLi8uLi9jb25maWcudGVzdHMiLAor IAorICAgICAibGlicmFyaWVzIjogeworKyAgICAgICAgIndheWxhbmQtY2xpZW50IjogeworKyAg ICAgICAgICAgICJsYWJlbCI6ICJXYXlsYW5kIGNsaWVudCBsaWJyYXJ5IiwKKysgICAgICAgICAg ICAiaGVhZGVycyI6ICJ3YXlsYW5kLXZlcnNpb24uaCIsCisrICAgICAgICAgICAgInRlc3QiOiB7 CisrICAgICAgICAgICAgICAgICJtYWluIjogWworKyAgICAgICAgICAgICAgICAgICAgIiNpZiBX QVlMQU5EX1ZFUlNJT05fTUFKT1IgPCAxIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGVycm9y IFdheWxhbmQgMS44LjAgb3IgaGlnaGVyIHJlcXVpcmVkIiwKKysgICAgICAgICAgICAgICAgICAg ICIjZW5kaWYiLAorKyAgICAgICAgICAgICAgICAgICAgIiNpZiBXQVlMQU5EX1ZFUlNJT05fTUFK T1IgPT0gMSIsCisrICAgICAgICAgICAgICAgICAgICAiIyBpZiBXQVlMQU5EX1ZFUlNJT05fTUlO T1IgPCA4IiwKKysgICAgICAgICAgICAgICAgICAgICIjICBlcnJvciBXYXlsYW5kIDEuOC4wIG9y IGhpZ2hlciByZXF1aXJlZCIsCisrICAgICAgICAgICAgICAgICAgICAiIyBlbmRpZiIsCisrICAg ICAgICAgICAgICAgICAgICAiIyBpZiBXQVlMQU5EX1ZFUlNJT05fTUlOT1IgPT0gOCIsCisrICAg ICAgICAgICAgICAgICAgICAiIyAgaWYgV0FZTEFORF9WRVJTSU9OX01JQ1JPIDwgMCIsCisrICAg ICAgICAgICAgICAgICAgICAiIyAgIGVycm9yIFdheWxhbmQgMS44LjAgb3IgaGlnaGVyIHJlcXVp cmVkIiwKKysgICAgICAgICAgICAgICAgICAgICIjICBlbmRpZiIsCisrICAgICAgICAgICAgICAg ICAgICAiIyBlbmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiI2VuZGlmIgorKyAgICAgICAg ICAgICAgICAgXQorKyAgICAgICAgICAgIH0sCisrICAgICAgICAgICAgInNvdXJjZXMiOiBbCisr ICAgICAgICAgICAgICAgIHsgInR5cGUiOiAicGtnQ29uZmlnIiwgImFyZ3MiOiAid2F5bGFuZC1j bGllbnQiIH0sCisrICAgICAgICAgICAgICAgICItbHdheWxhbmQtY2xpZW50IgorKyAgICAgICAg ICAgIF0KKysgICAgICAgIH0sCisgICAgICAgICAid2F5bGFuZC1zZXJ2ZXIiOiB7CisgICAgICAg ICAgICAgImxhYmVsIjogIndheWxhbmQtc2VydmVyIiwKKyAgICAgICAgICAgICAiaGVhZGVycyI6 ICJ3YXlsYW5kLXZlcnNpb24uaCIsCitAQCAtMTUxLDggKzE3Niw3IEBACisgICAgICAgICAgICAg ICAgICAgICAiI2VuZGlmIgorICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgfSwKKy0g ICAgICAgICAgICAibGlicyI6ICItbGRybSIsCistICAgICAgICAgICAgInVzZSI6ICJlZ2wiCisr ICAgICAgICAgICAgInVzZSI6ICJkcm0gZWdsIgorICAgICAgICAgfSwKKyAgICAgICAgICJkbWFi dWYtY2xpZW50LWJ1ZmZlciI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAiTGludXggQ2xpZW50 IGRtYS1idWYgQnVmZmVyIFNoYXJpbmciLAorQEAgLTE3Niw4ICsyMDAsNyBAQAorICAgICAgICAg ICAgICAgICAgICAgInJldHVybiAwOyIKKyAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg IH0sCistICAgICAgICAgICAgImxpYnMiOiAiLWxkcm0iLAorLSAgICAgICAgICAgICJ1c2UiOiAi ZWdsIgorKyAgICAgICAgICAgICJ1c2UiOiAiZHJtIGVnbCIKKyAgICAgICAgIH0sCisgICAgICAg ICAidnVsa2FuLXNlcnZlci1idWZmZXIiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIlZ1bGth biBCdWZmZXIgU2hhcmluZyIsCitAQCAtMTk1LDcgKzIxOCw4IEBACisgICAgICAgICAgICAgICAg ICAgICAiZXhwb3J0QWxsb2NJbmZvLmhhbmRsZVR5cGVzID0gVktfRVhURVJOQUxfTUVNT1JZX0hB TkRMRV9UWVBFX09QQVFVRV9GRF9CSVRfS0hSOyIsCisgICAgICAgICAgICAgICAgICAgICAicmV0 dXJuIDA7IgorICAgICAgICAgICAgICAgICBdCistICAgICAgICAgICAgfQorKyAgICAgICAgICAg IH0sCisrICAgICAgICAgICAgInVzZSI6ICJ3YXlsYW5kLWNsaWVudCIKKyAgICAgICAgIH0KKyAg ICAgfSwKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24v Y2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcCBiL3F0d2F5bGFuZC9zcmMv aGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cu Y3BwCitpbmRleCA3ODg5ZjU3NS4uNjQxNDA2NzIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3Jj L2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93 LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXls YW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5jcHAKK0BAIC00MCw2ICs0MCw3IEBACisgI2luY2x1 ZGUgInF3YXlsYW5kZWdsd2luZG93LmgiCisgCisgI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9w cml2YXRlL3F3YXlsYW5kc2NyZWVuX3AuaD4KKysjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3By aXZhdGUvcXdheWxhbmRzdXJmYWNlX3AuaD4KKyAjaW5jbHVkZSAicXdheWxhbmRnbGNvbnRleHQu aCIKKyAKKyAjaW5jbHVkZSA8UXRFZ2xTdXBwb3J0L3ByaXZhdGUvcWVnbGNvbnZlbmllbmNlX3Au aD4KK0BAIC0xMjQsNiArMTI1LDcgQEAgdm9pZCBRV2F5bGFuZEVnbFdpbmRvdzo6dXBkYXRlU3Vy ZmFjZShib29sIGNyZWF0ZSkKKyAgICAgICAgIH0KKyAgICAgICAgIG1PZmZzZXQgPSBRUG9pbnQo KTsKKyAgICAgfSBlbHNlIHsKKysgICAgICAgIFFSZWFkTG9ja2VyIGxvY2tlcigmbVN1cmZhY2VM b2NrKTsKKyAgICAgICAgIGlmIChtX3dheWxhbmRFZ2xXaW5kb3cpIHsKKyAgICAgICAgICAgICBp bnQgY3VycmVudF93aWR0aCwgY3VycmVudF9oZWlnaHQ7CisgICAgICAgICAgICAgc3RhdGljIGJv b2wgZGlzYWJsZVJlc2l6ZUNoZWNrID0gcWdldGVudigiUVRfV0FZTEFORF9ESVNBQkxFX1JFU0la RUNIRUNLIikudG9JbnQoKTsKK0BAIC0xMzEsMTQgKzEzMywxNiBAQCB2b2lkIFFXYXlsYW5kRWds V2luZG93Ojp1cGRhdGVTdXJmYWNlKGJvb2wgY3JlYXRlKQorICAgICAgICAgICAgIGlmICghZGlz YWJsZVJlc2l6ZUNoZWNrKSB7CisgICAgICAgICAgICAgICAgIHdsX2VnbF93aW5kb3dfZ2V0X2F0 dGFjaGVkX3NpemUobV93YXlsYW5kRWdsV2luZG93LCAmY3VycmVudF93aWR0aCwgJmN1cnJlbnRf aGVpZ2h0KTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgaWYgKGRpc2FibGVSZXNpemVD aGVjayB8fCAoY3VycmVudF93aWR0aCAhPSBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSB8fCBjdXJy ZW50X2hlaWdodCAhPSBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkpKSB7CisrICAgICAgICAgICAg aWYgKGRpc2FibGVSZXNpemVDaGVjayB8fCAoY3VycmVudF93aWR0aCAhPSBzaXplV2l0aE1hcmdp bnMud2lkdGgoKSB8fCBjdXJyZW50X2hlaWdodCAhPSBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkp IHx8IG1fcmVxdWVzdGVkU2l6ZSAhPSBzaXplV2l0aE1hcmdpbnMpIHsKKyAgICAgICAgICAgICAg ICAgd2xfZWdsX3dpbmRvd19yZXNpemUobV93YXlsYW5kRWdsV2luZG93LCBzaXplV2l0aE1hcmdp bnMud2lkdGgoKSwgc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpLCBtT2Zmc2V0LngoKSwgbU9mZnNl dC55KCkpOworKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RlZFNpemUgPSBzaXplV2l0aE1hcmdp bnM7CisgICAgICAgICAgICAgICAgIG1PZmZzZXQgPSBRUG9pbnQoKTsKKyAKKyAgICAgICAgICAg ICAgICAgbV9yZXNpemUgPSB0cnVlOworICAgICAgICAgICAgIH0KKy0gICAgICAgIH0gZWxzZSBp ZiAoY3JlYXRlICYmIHdsU3VyZmFjZSgpKSB7CistICAgICAgICAgICAgbV93YXlsYW5kRWdsV2lu ZG93ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUod2xTdXJmYWNlKCksIHNpemVXaXRoTWFyZ2lucy53 aWR0aCgpLCBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkpOworKyAgICAgICAgfSBlbHNlIGlmIChj cmVhdGUgJiYgbVN1cmZhY2UpIHsKKysgICAgICAgICAgICBtX3dheWxhbmRFZ2xXaW5kb3cgPSB3 bF9lZ2xfd2luZG93X2NyZWF0ZShtU3VyZmFjZS0+b2JqZWN0KCksIHNpemVXaXRoTWFyZ2lucy53 aWR0aCgpLCBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkpOworKyAgICAgICAgICAgIG1fcmVxdWVz dGVkU2l6ZSA9IHNpemVXaXRoTWFyZ2luczsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmICgh bV9lZ2xTdXJmYWNlICYmIG1fd2F5bGFuZEVnbFdpbmRvdyAmJiBjcmVhdGUpIHsKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWds L3F3YXlsYW5kZWdsd2luZG93LmggYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24v Y2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmgKK2luZGV4IDViMWY0ZDU2Li4w MDc5ZGZlZiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9j bGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuaAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRv dy5oCitAQCAtODgsNiArODgsNyBAQCBwcml2YXRlOgorICAgICBtdXRhYmxlIFFPcGVuR0xGcmFt ZWJ1ZmZlck9iamVjdCAqbV9jb250ZW50RkJPID0gbnVsbHB0cjsKKyAKKyAgICAgUVN1cmZhY2VG b3JtYXQgbV9mb3JtYXQ7CisrICAgIFFTaXplIG1fcmVxdWVzdGVkU2l6ZTsKKyB9OworIAorIH0K K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRv ci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGludXhkbWFidWYuaCBiL3F0d2F5bGFuZC9zcmMv aGFyZHdhcmVpbnRlZ3JhdGlvbi9jb21wb3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9s aW51eGRtYWJ1Zi5oCitpbmRleCA1NmE3MTBjMy4uYzZhOGI2YzYgMTAwNjQ0CistLS0gYS9xdHdh eWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5z dGFibGUtdjEvbGludXhkbWFidWYuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVn cmF0aW9uL2NvbXBvc2l0b3IvbGludXgtZG1hYnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgK K0BAIC00MSw2ICs0MSw4IEBACisgI2luY2x1ZGUgPFF0Q29yZS9RVGV4dFN0cmVhbT4KKyAjaW5j bHVkZSA8UXRHdWkvUU9wZW5HTFRleHR1cmU+CisgCisrI2luY2x1ZGUgPGFycmF5PgorKworICNp bmNsdWRlIDxFR0wvZWdsLmg+CisgI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKyAKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAg Yi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAKK2lu ZGV4IGU3NWZkYTNjLi5mYTg4NTE0MyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9kZWNvcmF0aW9ucy9icmFkaWVudC9tYWluLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwCitAQCAtMTY0LDEzICsxNjQsMTAgQEAg dm9pZCBRV2F5bGFuZEJyYWRpZW50RGVjb3JhdGlvbjo6cGFpbnQoUVBhaW50RGV2aWNlICpkZXZp Y2UpCisgICAgIC8vIFdpbmRvdyBpY29uCisgICAgIFFJY29uIGljb24gPSB3YXlsYW5kV2luZG93 KCktPndpbmRvd0ljb24oKTsKKyAgICAgaWYgKCFpY29uLmlzTnVsbCgpKSB7CistICAgICAgICBR UGl4bWFwIHBpeG1hcCA9IGljb24ucGl4bWFwKFFTaXplKDEyOCwgMTI4KSk7CistICAgICAgICBR UGl4bWFwIHNjYWxlZCA9IHBpeG1hcC5zY2FsZWQoMjIsIDIyLCBRdDo6SWdub3JlQXNwZWN0UmF0 aW8sIFF0OjpTbW9vdGhUcmFuc2Zvcm1hdGlvbik7CistCisgICAgICAgICBRUmVjdEYgaWNvblJl Y3QoMCwgMCwgMjIsIDIyKTsKKy0gICAgICAgIHAuZHJhd1BpeG1hcChpY29uUmVjdC5hZGp1c3Rl ZChtYXJnaW5zKCkubGVmdCgpICsgQlVUVE9OX1NQQUNJTkcsIDQsCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5H LCA0KSwKKy0gICAgICAgICAgICAgICAgICAgICBzY2FsZWQsIGljb25SZWN0KTsKKysgICAgICAg IGljb25SZWN0LmFkanVzdChtYXJnaW5zKCkubGVmdCgpICsgQlVUVE9OX1NQQUNJTkcsIDQsCisr ICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5H LCA0KSwKKysgICAgICAgIGljb24ucGFpbnQoJnAsIGljb25SZWN0LnRvUmVjdCgpKTsKKyAgICAg fQorIAorICAgICAvLyBXaW5kb3cgdGl0bGUKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1LmNw cCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9x d2F5bGFuZHhkZ3BvcHVwdjUuY3BwCitpbmRleCA4NWQyNWUzYy4uNjBiZGQ0OTEgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUv cXdheWxhbmR4ZGdwb3B1cHY1LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NS5jcHAKK0BAIC00Nywx OCArNDcsMjEgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgbmFtZXNwYWNlIFF0V2F5bGFuZENs aWVudCB7CisgCistUVdheWxhbmRYZGdQb3B1cFY1OjpRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0 IDo6eGRnX3BvcHVwX3Y1ICpwb3B1cCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdykKKytRV2F5bGFu ZFhkZ1BvcHVwVjU6OlFXYXlsYW5kWGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBv cHVwLCBRV2F5bGFuZFdpbmRvdyogcGFyZW50LCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KQorICAg ICA6IFFXYXlsYW5kU2hlbGxTdXJmYWNlKHdpbmRvdykKKyAgICAgLCBRdFdheWxhbmQ6OnhkZ19w b3B1cF92NShwb3B1cCkKKysgICAgLCBtX3BhcmVudChwYXJlbnQpCisgICAgICwgbV93aW5kb3co d2luZG93KQorIHsKKyAgICAgaWYgKHdpbmRvdy0+ZGlzcGxheSgpLT53aW5kb3dFeHRlbnNpb24o KSkKKyAgICAgICAgIG1fZXh0ZW5kZWRXaW5kb3cgPSBuZXcgUVdheWxhbmRFeHRlbmRlZFN1cmZh Y2Uod2luZG93KTsKKysgICAgbV9wYXJlbnQtPmFkZENoaWxkUG9wdXAobV93aW5kb3cpOworIH0K KyAKKyBRV2F5bGFuZFhkZ1BvcHVwVjU6On5RV2F5bGFuZFhkZ1BvcHVwVjUoKQorIHsKKyAgICAg eGRnX3BvcHVwX2Rlc3Ryb3kob2JqZWN0KCkpOworKyAgICBtX3BhcmVudC0+cmVtb3ZlQ2hpbGRQ b3B1cChtX3dpbmRvdyk7CisgICAgIGRlbGV0ZSBtX2V4dGVuZGVkV2luZG93OworIH0KKyAKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjVfcC5oCitpbmRleCA3 NDk0ZjZhNi4uZDg1ZjEzMGIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hl bGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaAorKysrIGIv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXls YW5keGRncG9wdXB2NV9wLmgKK0BAIC03MCw3ICs3MCw3IEBAIGNsYXNzIFFfV0FZTEFORF9DTElF TlRfRVhQT1JUIFFXYXlsYW5kWGRnUG9wdXBWNSA6IHB1YmxpYyBRV2F5bGFuZFNoZWxsU3VyZmFj ZQorIHsKKyAgICAgUV9PQkpFQ1QKKyBwdWJsaWM6CistICAgIFFXYXlsYW5kWGRnUG9wdXBWNShz dHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KTsKKysg ICAgUVdheWxhbmRYZGdQb3B1cFY1KHN0cnVjdCA6OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXls YW5kV2luZG93KiBwYXJlbnQsIFFXYXlsYW5kV2luZG93ICp3aW5kb3cpOworICAgICB+UVdheWxh bmRYZGdQb3B1cFY1KCkgb3ZlcnJpZGU7CisgCisgcHJvdGVjdGVkOgorQEAgLTc4LDYgKzc4LDcg QEAgcHJvdGVjdGVkOgorIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRXh0ZW5kZWRTdXJmYWNl ICptX2V4dGVuZGVkV2luZG93ID0gbnVsbHB0cjsKKysgICAgUVdheWxhbmRXaW5kb3cgKm1fcGFy ZW50ID0gbnVsbHB0cjsKKyAgICAgUVdheWxhbmRXaW5kb3cgKm1fd2luZG93ID0gbnVsbHB0cjsK KyB9OworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwIGIvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NS5j cHAKK2luZGV4IDdlMjQyYzRhLi5kZWY4NDUyYSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUu Y3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1LmNwcAorQEAgLTg0LDcgKzg0LDcgQEAgUVdheWxhbmRY ZGdQb3B1cFY1ICpRV2F5bGFuZFhkZ1NoZWxsVjU6OmNyZWF0ZVhkZ1BvcHVwKFFXYXlsYW5kV2lu ZG93ICp3aW5kb3csIFEKKyAgICAgaW50IHggPSBwb3NpdGlvbi54KCkgKyBwYXJlbnRXaW5kb3ct PmZyYW1lTWFyZ2lucygpLmxlZnQoKTsKKyAgICAgaW50IHkgPSBwb3NpdGlvbi55KCkgKyBwYXJl bnRXaW5kb3ctPmZyYW1lTWFyZ2lucygpLnRvcCgpOworIAorLSAgICBhdXRvIHBvcHVwID0gbmV3 IFFXYXlsYW5kWGRnUG9wdXBWNShnZXRfeGRnX3BvcHVwKHdpbmRvdy0+d2xTdXJmYWNlKCksIHBh cmVudFN1cmZhY2UsIHNlYXQsIG1fcG9wdXBTZXJpYWwsIHgsIHkpLCB3aW5kb3cpOworKyAgICBh dXRvIHBvcHVwID0gbmV3IFFXYXlsYW5kWGRnUG9wdXBWNShnZXRfeGRnX3BvcHVwKHdpbmRvdy0+ d2xTdXJmYWNlKCksIHBhcmVudFN1cmZhY2UsIHNlYXQsIG1fcG9wdXBTZXJpYWwsIHgsIHkpLCBw YXJlbnRXaW5kb3csIHdpbmRvdyk7CisgICAgIG1fcG9wdXBzLmFwcGVuZCh3aW5kb3cpOworICAg ICBRT2JqZWN0Ojpjb25uZWN0KHBvcHVwLCAmUVdheWxhbmRYZGdQb3B1cFY1OjpkZXN0cm95ZWQs IFt0aGlzLCB3aW5kb3ddKCl7CisgICAgICAgICBtX3BvcHVwcy5yZW1vdmVPbmUod2luZG93KTsK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2 NWludGVncmF0aW9uLmNwcAoraW5kZXggNGUyNTk0OWYuLmNmYzYwOTM5IDEwMDY0NAorLS0tIGEv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXls YW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5z L3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0 aW9uLmNwcAorQEAgLTg1LDEzICs4NSw2IEBAIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpRV2F5bGFu ZFhkZ1NoZWxsVjVJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kCisgICAg IHJldHVybiBtX3hkZ1NoZWxsLT5jcmVhdGVYZGdTdXJmYWNlKHdpbmRvdyk7CisgfQorIAorLXZv aWQgUVdheWxhbmRYZGdTaGVsbFY1SW50ZWdyYXRpb246OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFu Z2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSB7 CistICAgIGlmIChuZXdGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdQb3B1cFY1ICo+ KG5ld0ZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpCistICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdp bmRvd0FjdGl2YXRlZChuZXdGb2N1cyk7CistICAgIGlmIChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nh c3Q8UVdheWxhbmRYZGdQb3B1cFY1ICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpCistICAg ICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG9sZEZvY3VzKTsKKy19Cist CisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50 ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uX3AuaAoraW5kZXggY2U2YmRi OWUuLmFlZDg4NjcwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uX3AuaAor KysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1 L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uX3AuaAorQEAgLTY3LDcgKzY3LDYgQEAgcHVi bGljOgorICAgICBRV2F5bGFuZFhkZ1NoZWxsVjVJbnRlZ3JhdGlvbigpIHt9CisgICAgIGJvb2wg aW5pdGlhbGl6ZShRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAgICBRV2F5 bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2luZG93ICp3aW5k b3cpIG92ZXJyaWRlOworLSAgICB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXls YW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSBvdmVycmlkZTsK KyAKKyBwcml2YXRlOgorICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZFhkZ1NoZWxsVjU+IG1f eGRnU2hlbGw7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAgYi9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2 LmNwcAoraW5kZXggOGMzNzE2NjEuLjE1MWM3OGUzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2 Ni5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1z aGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYuY3BwCitAQCAtMTc0LDYgKzE3NCw3IEBAIFFXYXls YW5kWGRnU3VyZmFjZVY2OjpQb3B1cDo6UG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlVjYgKnhkZ1N1 cmZhY2UsIFFXYXlsYW5kWGRnCisgICAgICwgbV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisgICAg ICwgbV9wYXJlbnQocGFyZW50KQorIHsKKysgICAgbV9wYXJlbnQtPndpbmRvdygpLT5hZGRDaGls ZFBvcHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworIH0KKyAKKyBRV2F5bGFuZFhkZ1N1cmZh Y2VWNjo6UG9wdXA6On5Qb3B1cCgpCitAQCAtMTgxLDYgKzE4Miw4IEBAIFFXYXlsYW5kWGRnU3Vy ZmFjZVY2OjpQb3B1cDo6flBvcHVwKCkKKyAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAg ICAgIGRlc3Ryb3koKTsKKyAKKysgICAgbV9wYXJlbnQtPndpbmRvdygpLT5yZW1vdmVDaGlsZFBv cHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworKworICAgICBpZiAobV9ncmFiYmluZykgewor ICAgICAgICAgYXV0byAqc2hlbGwgPSBtX3hkZ1N1cmZhY2UtPm1fc2hlbGw7CisgICAgICAgICBR X0FTU0VSVChzaGVsbC0+bV90b3Btb3N0R3JhYmJpbmdQb3B1cCA9PSB0aGlzKTsKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYv cXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5z L3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0 aW9uLmNwcAoraW5kZXggMDMxNjQzMTYuLmU4ZGE4YmExIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5k L3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hl bGx2NmludGVncmF0aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAor QEAgLTY4LDIwICs2OCw2IEBAIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxs VjZJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kCisgICAgIHJldHVybiBt X3hkZ1NoZWxsLT5nZXRYZGdTdXJmYWNlKHdpbmRvdyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRY ZGdTaGVsbFY2SW50ZWdyYXRpb246OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5k V2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKQorLXsKKy0gICAgaWYg KG5ld0ZvY3VzKSB7CistICAgICAgICBhdXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFX YXlsYW5kWGRnU3VyZmFjZVY2ICo+KG5ld0ZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAg ICBpZiAoeGRnU3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCist ICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMpOwor LSAgICB9CistICAgIGlmIChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJm YWNlVjYgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFjZSgpKSkgeworLSAgICAgICAgYXV0byAqeGRn U3VyZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2VWNiAqPihvbGRGb2N1cy0+ c2hlbGxTdXJmYWNlKCkpOworLSAgICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2Ut PmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2lu ZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworLSAgICB9CistfQorLQorIH0KKyAKKyBRVF9FTkRf TkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaCBiL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFu ZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IDI2MWY4Y2JiLi5jMWJjZDVjNiAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxs djZpbnRlZ3JhdGlvbl9wLmgKK0BAIC02NSw3ICs2NSw2IEBAIHB1YmxpYzoKKyAgICAgUVdheWxh bmRYZGdTaGVsbFY2SW50ZWdyYXRpb24oKSB7fQorICAgICBib29sIGluaXRpYWxpemUoUVdheWxh bmREaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAgICAgUVdheWxhbmRTaGVsbFN1cmZhY2Ug KmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSBvdmVycmlkZTsKKy0g ICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9j dXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAg ICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRYZGdTaGVsbFY2PiBtX3hkZ1NoZWxsOworZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9x d2F5bGFuZHhkZ3NoZWxsLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsLmNwcAoraW5kZXggZjNlM2MzMzAuLmZhNmQ1 ODA4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24v eGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAKK0BAIC02 NywxMSArNjcsNiBAQCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjpUb3BsZXZlbChRV2F5 bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UpCisgCisgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3Bs ZXZlbDo6flRvcGxldmVsKCkKKyB7CistICAgIGlmIChtX2FwcGxpZWQuc3RhdGVzICYgUXQ6Oldp bmRvd0FjdGl2ZSkgeworLSAgICAgICAgUVdheWxhbmRXaW5kb3cgKndpbmRvdyA9IG1feGRnU3Vy ZmFjZS0+d2luZG93KCk7CistICAgICAgICB3aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93 RGVhY3RpdmF0ZWQod2luZG93KTsKKy0gICAgfQorLQorICAgICAvLyBUaGUgcHJvdG9jb2wgc3Bl YyByZXF1aXJlcyB0aGF0IHRoZSBkZWNvcmF0aW9uIG9iamVjdCBpcyBkZWxldGVkIGJlZm9yZSB4 ZGdfdG9wbGV2ZWwuCisgICAgIGRlbGV0ZSBtX2RlY29yYXRpb247CisgICAgIG1fZGVjb3JhdGlv biA9IG51bGxwdHI7CitAQCAtODUsMTYgKzgwLDE1IEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNl OjpUb3BsZXZlbDo6YXBwbHlDb25maWd1cmUoKQorICAgICBpZiAoIShtX2FwcGxpZWQuc3RhdGVz ICYgKFF0OjpXaW5kb3dNYXhpbWl6ZWR8UXQ6OldpbmRvd0Z1bGxTY3JlZW4pKSkKKyAgICAgICAg IG1fbm9ybWFsU2l6ZSA9IG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPndpbmRvd0ZyYW1lR2VvbWV0 cnkoKS5zaXplKCk7CisgCistICAgIGlmICgobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dB Y3RpdmUpICYmICEobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpKQorKyAgICBp ZiAoKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSAmJiAhKG1fYXBwbGllZC5z dGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKQorKyAgICAgICAgJiYgIW1feGRnU3VyZmFjZS0+bV93 aW5kb3ctPmRpc3BsYXkoKS0+aXNLZXlib2FyZEF2YWlsYWJsZSgpKQorICAgICAgICAgbV94ZGdT dXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobV94ZGdT dXJmYWNlLT5tX3dpbmRvdyk7CisgCistICAgIGlmICghKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6 V2luZG93QWN0aXZlKSAmJiAobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpKQor KyAgICBpZiAoIShtX3BlbmRpbmcuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgJiYgKG1fYXBw bGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKQorKyAgICAgICAgJiYgIW1feGRnU3VyZmFj ZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aXNLZXlib2FyZEF2YWlsYWJsZSgpKQorICAgICAgICAg bV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRl ZChtX3hkZ1N1cmZhY2UtPm1fd2luZG93KTsKKyAKKy0gICAgLy8gVE9ETzogbm9uZSBvZiB0aGUg b3RoZXIgcGx1Z2lucyBzZW5kIFdpbmRvd0FjdGl2ZSBlaXRoZXIsIGJ1dCBpcyBpdCBvbiBwdXJw b3NlPworLSAgICBRdDo6V2luZG93U3RhdGVzIHN0YXRlc1dpdGhvdXRBY3RpdmUgPSBtX3BlbmRp bmcuc3RhdGVzICYgflF0OjpXaW5kb3dBY3RpdmU7CistCistICAgIG1feGRnU3VyZmFjZS0+bV93 aW5kb3ctPmhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQoc3RhdGVzV2l0aG91dEFjdGl2ZSk7Cisr ICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQobV9w ZW5kaW5nLnN0YXRlcyk7CisgCisgICAgIGlmIChtX3BlbmRpbmcuc2l6ZS5pc0VtcHR5KCkpIHsK KyAgICAgICAgIC8vIEFuIGVtcHR5IHNpemUgaW4gdGhlIGNvbmZpZ3VyZSBtZWFucyBpdCdzIHVw IHRvIHRoZSBjbGllbnQgdG8gY2hvb3NlIHRoZSBzaXplCitAQCAtMTA1LDggKzk5LDYgQEAgdm9p ZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjphcHBseUNvbmZpZ3VyZSgpCisgICAgICAg ICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5yZXNpemVGcm9tQXBwbHlDb25maWd1cmUobV9wZW5k aW5nLnNpemUpOworICAgICB9CisgCistICAgIG1feGRnU3VyZmFjZS0+c2V0U2l6ZUhpbnRzKCk7 CistCisgICAgIG1fYXBwbGllZCA9IG1fcGVuZGluZzsKKyAgICAgcUNEZWJ1ZyhsY1FwYVdheWxh bmQpIDw8ICJBcHBsaWVkIHBlbmRpbmcgeGRnX3RvcGxldmVsIGNvbmZpZ3VyZSBldmVudDoiIDw8 IG1fYXBwbGllZC5zaXplIDw8IG1fYXBwbGllZC5zdGF0ZXM7CisgfQorQEAgLTIwMywxMiArMTk1 LDE3IEBAIFF0V2F5bGFuZDo6eGRnX3RvcGxldmVsOjpyZXNpemVfZWRnZSBRV2F5bGFuZFhkZ1N1 cmZhY2U6OlRvcGxldmVsOjpjb252ZXJ0VG9SZXNpCisgICAgICAgICAgICAgICAgIHwgKChlZGdl cyAmIFF0OjpSaWdodEVkZ2UpID8gcmVzaXplX2VkZ2VfcmlnaHQgOiAwKSk7CisgfQorIAorLVFX YXlsYW5kWGRnU3VyZmFjZTo6UG9wdXA6OlBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3Vy ZmFjZSwgUVdheWxhbmRYZGdTdXJmYWNlICpwYXJlbnQsCisrUVdheWxhbmRYZGdTdXJmYWNlOjpQ b3B1cDo6UG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFdpbmRv dyAqcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0V2F5bGFuZDo6 eGRnX3Bvc2l0aW9uZXIgKnBvc2l0aW9uZXIpCistICAgIDogeGRnX3BvcHVwKHhkZ1N1cmZhY2Ut PmdldF9wb3B1cChwYXJlbnQtPm9iamVjdCgpLCBwb3NpdGlvbmVyLT5vYmplY3QoKSkpCistICAg ICwgbV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisrICAgIDogbV94ZGdTdXJmYWNlKHhkZ1N1cmZh Y2UpCisrICAgICwgbV9wYXJlbnRYZGdTdXJmYWNlKHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1 cmZhY2UgKj4ocGFyZW50LT5zaGVsbFN1cmZhY2UoKSkpCisgICAgICwgbV9wYXJlbnQocGFyZW50 KQorIHsKKysKKysgICAgaW5pdCh4ZGdTdXJmYWNlLT5nZXRfcG9wdXAobV9wYXJlbnRYZGdTdXJm YWNlID8gbV9wYXJlbnRYZGdTdXJmYWNlLT5vYmplY3QoKSA6IG51bGxwdHIsIHBvc2l0aW9uZXIt Pm9iamVjdCgpKSk7CisrICAgIGlmIChtX3BhcmVudCkgeworKyAgICAgICAgbV9wYXJlbnQtPmFk ZENoaWxkUG9wdXAobV94ZGdTdXJmYWNlLT53aW5kb3coKSk7CisrICAgIH0KKyB9CisgCisgUVdh eWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6flBvcHVwKCkKK0BAIC0yMTYsMTAgKzIxMywyNCBAQCBR V2F5bGFuZFhkZ1N1cmZhY2U6OlBvcHVwOjp+UG9wdXAoKQorICAgICBpZiAoaXNJbml0aWFsaXpl ZCgpKQorICAgICAgICAgZGVzdHJveSgpOworIAorKyAgICBpZiAobV9wYXJlbnQpIHsKKysgICAg ICAgIG1fcGFyZW50LT5yZW1vdmVDaGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOwor KyAgICB9CisrCisgICAgIGlmIChtX2dyYWJiaW5nKSB7CisgICAgICAgICBhdXRvICpzaGVsbCA9 IG1feGRnU3VyZmFjZS0+bV9zaGVsbDsKKyAgICAgICAgIFFfQVNTRVJUKHNoZWxsLT5tX3RvcG1v c3RHcmFiYmluZ1BvcHVwID09IHRoaXMpOworLSAgICAgICAgc2hlbGwtPm1fdG9wbW9zdEdyYWJi aW5nUG9wdXAgPSBtX3BhcmVudC0+bV9wb3B1cDsKKysgICAgICAgIHNoZWxsLT5tX3RvcG1vc3RH cmFiYmluZ1BvcHVwID0gbV9wYXJlbnRYZGdTdXJmYWNlID8gbV9wYXJlbnRYZGdTdXJmYWNlLT5t X3BvcHVwIDogbnVsbHB0cjsKKysgICAgICAgIG1fZ3JhYmJpbmcgPSBmYWxzZTsKKysKKysgICAg ICAgIC8vIFN5bnRoZXNpemUgUXQgZW50ZXIvbGVhdmUgZXZlbnRzIGZvciBwb3B1cAorKyAgICAg ICAgUVdpbmRvdyAqbGVhdmUgPSBudWxscHRyOworKyAgICAgICAgaWYgKG1feGRnU3VyZmFjZSAm JiBtX3hkZ1N1cmZhY2UtPndpbmRvdygpKQorKyAgICAgICAgICAgIGxlYXZlID0gbV94ZGdTdXJm YWNlLT53aW5kb3coKS0+d2luZG93KCk7CisrICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNl OjpoYW5kbGVMZWF2ZUV2ZW50KGxlYXZlKTsKKysKKysgICAgICAgIGlmIChRV2luZG93ICplbnRl ciA9IFFHdWlBcHBsaWNhdGlvbjo6dG9wTGV2ZWxBdChRQ3Vyc29yOjpwb3MoKSkpCisrICAgICAg ICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlRW50ZXJFdmVudChlbnRlciwgZW50 ZXItPm1hcEZyb21HbG9iYWwoUUN1cnNvcjo6cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSk7CisgICAg IH0KKyB9CisgCitAQCAtMjU3LDYgKzI2OCw3IEBAIFFXYXlsYW5kWGRnU3VyZmFjZTo6UVdheWxh bmRYZGdTdXJmYWNlKFFXYXlsYW5kWGRnU2hlbGwgKnNoZWxsLCA6OnhkZ19zdXJmYWNlICpzCisg ICAgICAgICAgICAgICAgIG1fdG9wbGV2ZWwtPnNldF9wYXJlbnQocGFyZW50WGRnU3VyZmFjZS0+ bV90b3BsZXZlbC0+b2JqZWN0KCkpOworICAgICAgICAgfQorICAgICB9CisrICAgIHNldFNpemVI aW50cygpOworIH0KKyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2U6On5RV2F5bGFuZFhkZ1N1cmZhY2Uo KQorQEAgLTQwMCw4ICs0MTIsNiBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6c2V0UG9wdXAo UVdheWxhbmRXaW5kb3cgKnBhcmVudCkKKyB7CisgICAgIFFfQVNTRVJUKCFtX3RvcGxldmVsICYm ICFtX3BvcHVwKTsKKyAKKy0gICAgYXV0byBwYXJlbnRYZGdTdXJmYWNlID0gc3RhdGljX2Nhc3Q8 UVdheWxhbmRYZGdTdXJmYWNlICo+KHBhcmVudC0+c2hlbGxTdXJmYWNlKCkpOworLQorICAgICBh dXRvIHBvc2l0aW9uZXIgPSBuZXcgUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lcihtX3NoZWxsLT5j cmVhdGVfcG9zaXRpb25lcigpKTsKKyAgICAgLy8gc2V0X3BvcHVwIGV4cGVjdHMgYSBwb3NpdGlv biByZWxhdGl2ZSB0byB0aGUgcGFyZW50CisgICAgIFFQb2ludCB0cmFuc2llbnRQb3MgPSBtX3dp bmRvdy0+Z2VvbWV0cnkoKS50b3BMZWZ0KCk7IC8vIHRoaXMgaXMgYWJzb2x1dGUKK0BAIC00MTQs OCArNDI0LDkgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OnNldFBvcHVwKFFXYXlsYW5kV2lu ZG93ICpwYXJlbnQpCisgICAgIHBvc2l0aW9uZXItPnNldF9hbmNob3IoUXRXYXlsYW5kOjp4ZGdf cG9zaXRpb25lcjo6YW5jaG9yX3RvcF9sZWZ0KTsKKyAgICAgcG9zaXRpb25lci0+c2V0X2dyYXZp dHkoUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lcjo6Z3Jhdml0eV9ib3R0b21fcmlnaHQpOworICAg ICBwb3NpdGlvbmVyLT5zZXRfc2l6ZShtX3dpbmRvdy0+Z2VvbWV0cnkoKS53aWR0aCgpLCBtX3dp bmRvdy0+Z2VvbWV0cnkoKS5oZWlnaHQoKSk7CistICAgIG1fcG9wdXAgPSBuZXcgUG9wdXAodGhp cywgcGFyZW50WGRnU3VyZmFjZSwgcG9zaXRpb25lcik7CisrICAgIG1fcG9wdXAgPSBuZXcgUG9w dXAodGhpcywgcGFyZW50LCBwb3NpdGlvbmVyKTsKKyAgICAgcG9zaXRpb25lci0+ZGVzdHJveSgp OworKworICAgICBkZWxldGUgcG9zaXRpb25lcjsKKyB9CisgCitAQCAtNDM3LDYgKzQ0OCwyMyBA QCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6c2V0R3JhYlBvcHVwKFFXYXlsYW5kV2luZG93ICpw YXJlbnQsIFFXYXlsYW5kSW5wdXREZXZpYworICAgICB9CisgICAgIHNldFBvcHVwKHBhcmVudCk7 CisgICAgIG1fcG9wdXAtPmdyYWIoZGV2aWNlLCBzZXJpYWwpOworKworKyAgICAvLyBTeW50aGVz aXplIFF0IGVudGVyL2xlYXZlIGV2ZW50cyBmb3IgcG9wdXAKKysgICAgaWYgKCFwYXJlbnQpCisr ICAgICAgICByZXR1cm47CisrICAgIFFXaW5kb3cgKmN1cnJlbnQgPSBRR3VpQXBwbGljYXRpb246 OnRvcExldmVsQXQoUUN1cnNvcjo6cG9zKCkpOworKyAgICBRV2luZG93ICpsZWF2ZSA9IHBhcmVu dC0+d2luZG93KCk7CisrICAgIGlmIChjdXJyZW50ICE9IGxlYXZlKQorKyAgICAgICAgcmV0dXJu OworKworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVMZWF2ZUV2ZW50KGxlYXZl KTsKKysKKysgICAgUVdpbmRvdyAqZW50ZXIgPSBudWxscHRyOworKyAgICBpZiAobV9wb3B1cCAm JiBtX3BvcHVwLT5tX3hkZ1N1cmZhY2UgJiYgbV9wb3B1cC0+bV94ZGdTdXJmYWNlLT53aW5kb3co KSkKKysgICAgICAgIGVudGVyID0gbV9wb3B1cC0+bV94ZGdTdXJmYWNlLT53aW5kb3coKS0+d2lu ZG93KCk7CisrCisrICAgIGlmIChlbnRlcikKKysgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZh Y2U6OmhhbmRsZUVudGVyRXZlbnQoZW50ZXIsIGVudGVyLT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6 OnBvcygpKSwgUUN1cnNvcjo6cG9zKCkpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kWGRnU3VyZmFj ZTo6eGRnX3N1cmZhY2VfY29uZmlndXJlKHVpbnQzMl90IHNlcmlhbCkKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4 ZGdzaGVsbF9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwvcXdheWxhbmR4ZGdzaGVsbF9wLmgKK2luZGV4IDk2Nzg1MjA1Li40YjUxOGYwYSAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC9xd2F5bGFuZHhkZ3NoZWxsX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxfcC5oCitAQCAtMTMxLDE0ICsx MzEsMTUgQEAgcHJpdmF0ZToKKyAKKyAgICAgY2xhc3MgUG9wdXAgOiBwdWJsaWMgUXRXYXlsYW5k Ojp4ZGdfcG9wdXAgeworICAgICBwdWJsaWM6CistICAgICAgICBQb3B1cChRV2F5bGFuZFhkZ1N1 cmZhY2UgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kWGRnU3VyZmFjZSAqcGFyZW50LCBRdFdheWxhbmQ6 OnhkZ19wb3NpdGlvbmVyICpwb3NpdGlvbmVyKTsKKysgICAgICAgIFBvcHVwKFFXYXlsYW5kWGRn U3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRXaW5kb3cgKnBhcmVudCwgUXRXYXlsYW5kOjp4 ZGdfcG9zaXRpb25lciAqcG9zaXRpb25lcik7CisgICAgICAgICB+UG9wdXAoKSBvdmVycmlkZTsK KyAKKyAgICAgICAgIHZvaWQgZ3JhYihRV2F5bGFuZElucHV0RGV2aWNlICpzZWF0LCB1aW50IHNl cmlhbCk7CisgICAgICAgICB2b2lkIHhkZ19wb3B1cF9wb3B1cF9kb25lKCkgb3ZlcnJpZGU7Cisg CisgICAgICAgICBRV2F5bGFuZFhkZ1N1cmZhY2UgKm1feGRnU3VyZmFjZSA9IG51bGxwdHI7Cist ICAgICAgICBRV2F5bGFuZFhkZ1N1cmZhY2UgKm1fcGFyZW50ID0gbnVsbHB0cjsKKysgICAgICAg IFFXYXlsYW5kWGRnU3VyZmFjZSAqbV9wYXJlbnRYZGdTdXJmYWNlID0gbnVsbHB0cjsKKysgICAg ICAgIFFXYXlsYW5kV2luZG93ICptX3BhcmVudCA9IG51bGxwdHI7CisgICAgICAgICBib29sIG1f Z3JhYmJpbmcgPSBmYWxzZTsKKyAgICAgfTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVn cmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1z aGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb24uY3BwCitpbmRleCA4NzY5ZDk3MS4uZGEw ZGQ2YTcgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcAorKysrIGIvcXR3YXls YW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hl bGxpbnRlZ3JhdGlvbi5jcHAKK0BAIC02OSwyMCArNjksNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFj ZSAqUVdheWxhbmRYZGdTaGVsbEludGVncmF0aW9uOjpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxh bmRXaQorICAgICByZXR1cm4gbV94ZGdTaGVsbC0+Z2V0WGRnU3VyZmFjZSh3aW5kb3cpOworIH0K KyAKKy12b2lkIFFXYXlsYW5kWGRnU2hlbGxJbnRlZ3JhdGlvbjo6aGFuZGxlS2V5Ym9hcmRGb2N1 c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9j dXMpCisteworLSAgICBpZiAobmV3Rm9jdXMpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2Ug PSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KG5ld0ZvY3VzLT5zaGVsbFN1cmZh Y2UoKSk7CistICAgICAgICBpZiAoeGRnU3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0Fj dGl2ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0 ZWQobmV3Rm9jdXMpOworLSAgICB9CistICAgIGlmIChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8 UVdheWxhbmRYZGdTdXJmYWNlICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpIHsKKy0gICAg ICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+ KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRnU3VyZmFjZSAmJiAh eGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9kaXNwbGF5 LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CistICAgIH0KKy19CistCisgfQor IAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uX3Au aCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5 bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb25fcC5oCitpbmRleCBiNmNhYTZjOS4uMmY5MjlmOTggMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3Jh dGlvbl9wLmgKK0BAIC02NSw3ICs2NSw2IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRYZGdTaGVs bEludGVncmF0aW9uKCkge30KKyAgICAgYm9vbCBpbml0aWFsaXplKFFXYXlsYW5kRGlzcGxheSAq ZGlzcGxheSkgb3ZlcnJpZGU7CisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVs bFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRvdykgb3ZlcnJpZGU7CistICAgIHZvaWQgaGFu ZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFu ZFdpbmRvdyAqb2xkRm9jdXMpIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFTY29wZWRQ b2ludGVyPFFXYXlsYW5kWGRnU2hlbGw+IG1feGRnU2hlbGw7CitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAgYi9xdHdh eWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcAoraW5k ZXggNTI2ZDBlZjQuLmY1MGNjZjMwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQv cXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMv c2hhcmVkL3F3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXIuY3BwCitAQCAtMzksNyArMzks MTAgQEAKKyAKKyAjaW5jbHVkZSAicXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlcl9wLmgi CisgCisrI2luY2x1ZGUgPFFCcnVzaD4KKysjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorICNp bmNsdWRlIDxRSW5wdXRNZXRob2Q+CisrI2luY2x1ZGUgPFFQYWxldHRlPgorICNpbmNsdWRlIDxR VGV4dENoYXJGb3JtYXQ+CisgCisgI2lmZGVmIFFUX0JVSUxEX1dBWUxBTkRDT01QT1NJVE9SX0xJ QgorQEAgLTgxLDMyICs4NCwzOCBAQCB2b2lkIFFXYXlsYW5kSW5wdXRNZXRob2RFdmVudEJ1aWxk ZXI6OmFkZFByZWVkaXRTdHlsaW5nKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdAorICAgICBRVGV4 dENoYXJGb3JtYXQgZm9ybWF0OworIAorICAgICBzd2l0Y2ggKHN0eWxlKSB7CistICAgIGNhc2Ug MDoKKy0gICAgY2FzZSAxOgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZ TEVfTk9ORToKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BS RUVESVRfU1RZTEVfREVGQVVMVDoKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElU X1NUWUxFX1VOREVSTElORToKKyAgICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUp OworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2lu Z2xlVW5kZXJsaW5lKTsKKyAgICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0 aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgs IGxlbmd0aCwgZm9ybWF0KSk7CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSAyOgorLSAgICBj YXNlIDM6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9BQ1RJVkU6 CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9JTkFDVElWRToKKyAg ICAgICAgIGZvcm1hdC5zZXRGb250V2VpZ2h0KFFGb250OjpCb2xkKTsKKyAgICAgICAgIGZvcm1h dC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0 eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJsaW5lKTsKKyAgICAgICAgIG1fcHJlZWRp dFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RF dmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisgICAgICAgICBicmVh azsKKy0gICAgY2FzZSA0OgorLSAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7 CistICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5n bGVVbmRlcmxpbmUpOworLSAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRo b2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwg bGVuZ3RoLCBmb3JtYXQpKTsKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NU WUxFX0hJR0hMSUdIVDoKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxF X1NFTEVDVElPTjoKKysgICAgICAgIHsKKysgICAgICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVy bGluZSh0cnVlKTsKKysgICAgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRD aGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOworKyAgICAgICAgICAgIFFQYWxldHRlIHBhbGV0 dGUgPSBxQXBwLT5wYWxldHRlKCk7CisrICAgICAgICAgICAgZm9ybWF0LnNldEJhY2tncm91bmQo UUJydXNoKHBhbGV0dGUuY29sb3IoUVBhbGV0dGU6OkFjdGl2ZSwgUVBhbGV0dGU6OkhpZ2hsaWdo dCkpKTsKKysgICAgICAgICAgICBmb3JtYXQuc2V0Rm9yZWdyb3VuZChRQnJ1c2gocGFsZXR0ZS5j b2xvcihRUGFsZXR0ZTo6QWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0ZWRUZXh0KSkpOworKyAg ICAgICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJp YnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0 KSk7CisrICAgICAgICB9CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSA1OgorKyAgICBjYXNl IFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfSU5DT1JSRUNUOgorICAgICAgICAgZm9y bWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CisgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5l U3R5bGUoUVRleHRDaGFyRm9ybWF0OjpXYXZlVW5kZXJsaW5lKTsKKyAgICAgICAgIGZvcm1hdC5z ZXRVbmRlcmxpbmVDb2xvcihRQ29sb3IoUXQ6OnJlZCkpOworICAgICAgICAgbV9wcmVlZGl0U3R5 bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50 OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKyAgICAgICAgIGJyZWFrOwor LS8vICAgIGNhc2UgUXRXYXlsYW5kOjp3bF90ZXh0X2lucHV0OjpwcmVlZGl0X3N0eWxlX3NlbGVj dGlvbjoKKy0vLyAgICBjYXNlIFF0V2F5bGFuZDo6d2xfdGV4dF9pbnB1dDo6cHJlZWRpdF9zdHls ZV9ub25lOgorICAgICBkZWZhdWx0OgorICAgICAgICAgYnJlYWs7CisgICAgIH0KK0BAIC0xNTMs NyArMTYyLDcgQEAgUUlucHV0TWV0aG9kRXZlbnQgUVdheWxhbmRJbnB1dE1ldGhvZEV2ZW50QnVp bGRlcjo6YnVpbGRQcmVlZGl0KGNvbnN0IFFTdHJpbmcgJnQKKyAKKyAgICAgaWYgKG1fcHJlZWRp dEN1cnNvciA8IDApIHsKKyAgICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2 ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OkN1cnNvciwgMCwgMCwgUVZhcmlhbnQo KSkpOworLSAgICB9IGVsc2UgaWYgKG1fcHJlZWRpdEN1cnNvciA+IDApIHsKKysgICAgfSBlbHNl IHsKKyAgICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1 dGUoUUlucHV0TWV0aG9kRXZlbnQ6OkN1cnNvciwgaW5kZXhGcm9tV2F5bGFuZCh0ZXh0LCBtX3By ZWVkaXRDdXJzb3IpLCAxLCBRVmFyaWFudCgpKSk7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZG1pbWVoZWxwZXIuY3BwIGIvcXR3YXlsYW5kL3Ny Yy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcAoraW5kZXggYTVmZGQzNGQuLmUyZmUxOTI4 IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNw cAorKysrIGIvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcAorQEAg LTYwLDcgKzYwLDcgQEAgUUJ5dGVBcnJheSBRV2F5bGFuZE1pbWVIZWxwZXI6OmdldEJ5dGVBcnJh eShRTWltZURhdGEgKm1pbWVEYXRhLCBjb25zdCBRU3RyaW5nICYKKyAgICAgICAgICAgICBidWYu b3BlbihRSU9EZXZpY2U6OlJlYWRXcml0ZSk7CisgICAgICAgICAgICAgUUJ5dGVBcnJheSBmbXQg PSAiQk1QIjsKKyAgICAgICAgICAgICBpZiAobWltZVR5cGUuc3RhcnRzV2l0aChRTGF0aW4xU3Ry aW5nKCJpbWFnZS8iKSkpIHsKKy0gICAgICAgICAgICAgICAgUUJ5dGVBcnJheSBpbWdGbXQgPSBt aW1lVHlwZS5taWQoNikudG9VcHBlcigpLnRvTGF0aW4xKCk7CisrICAgICAgICAgICAgICAgIFFC eXRlQXJyYXkgaW1nRm10ID0gbWltZVR5cGUubWlkKDYpLnRvTG93ZXIoKS50b0xhdGluMSgpOwor ICAgICAgICAgICAgICAgICBpZiAoUUltYWdlV3JpdGVyOjpzdXBwb3J0ZWRJbWFnZUZvcm1hdHMo KS5jb250YWlucyhpbWdGbXQpKQorICAgICAgICAgICAgICAgICAgICAgZm10ID0gaW1nRm10Owor ICAgICAgICAgICAgIH0KK0BAIC03NCw3ICs3NCw3IEBAIFFCeXRlQXJyYXkgUVdheWxhbmRNaW1l SGVscGVyOjpnZXRCeXRlQXJyYXkoUU1pbWVEYXRhICptaW1lRGF0YSwgY29uc3QgUVN0cmluZyAm CisgICAgICAgICBRTGlzdDxRVXJsPiB1cmxzID0gbWltZURhdGEtPnVybHMoKTsKKyAgICAgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgdXJscy5jb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgICBj b250ZW50LmFwcGVuZCh1cmxzLmF0KGkpLnRvRW5jb2RlZCgpKTsKKy0gICAgICAgICAgICBjb250 ZW50LmFwcGVuZCgnXG4nKTsKKysgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIpOwor ICAgICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgICAgY29udGVudCA9IG1pbWVEYXRhLT5k YXRhKG1pbWVUeXBlKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQv ZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8v Y2xpZW50L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRldmljZXYxLmNwcAoraW5kZXggMTU2OGIzYjku LjA2NzQxMGQwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFk ZXZpY2V2MS90c3RfZGF0YWRldmljZXYxLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8v Y2xpZW50L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRldmljZXYxLmNwcAorQEAgLTM1LDcgKzM1LDcg QEAKKyAKKyB1c2luZyBuYW1lc3BhY2UgTW9ja0NvbXBvc2l0b3I7CisgCistY29uc3RleHByIGlu dCBkYXRhRGV2aWNlVmVyc2lvbiA9IDE7CisrY29uc3RleHByIGludCBkYXRhRGV2aWNlVmVyc2lv biA9IDM7CisgCisgY2xhc3MgRGF0YURldmljZUNvbXBvc2l0b3IgOiBwdWJsaWMgRGVmYXVsdENv bXBvc2l0b3IgeworIHB1YmxpYzoKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQvc2VhdHY1L3RzdF9zZWF0djUuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50 L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAoraW5kZXggOTMxMmMyZTUuLjJlYTM4MmYxIDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAor KysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAor QEAgLTczLDYgKzczLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBtdWx0aVRvdWNoKCk7 CisgICAgIHZvaWQgbXVsdGlUb3VjaFVwQW5kTW90aW9uRnJhbWUoKTsKKyAgICAgdm9pZCB0YXBB bmRNb3ZlSW5TYW1lRnJhbWUoKTsKKysgICAgdm9pZCBjYW5jZWxUb3VjaCgpOworIH07CisgCisg dm9pZCB0c3Rfc2VhdHY1OjpiaW5kc1RvU2VhdCgpCitAQCAtNjQ2LDUgKzY0NywzNCBAQCB2b2lk IHRzdF9zZWF0djU6OnRhcEFuZE1vdmVJblNhbWVGcmFtZSgpCisgICAgIFFUUllfQ09NUEFSRSh3 aW5kb3cubV9ldmVudHMubGFzdCgpLnRvdWNoUG9pbnRzLmZpcnN0KCkuc3RhdGUoKSwgUXQ6OlRv dWNoUG9pbnRTdGF0ZTo6VG91Y2hQb2ludFJlbGVhc2VkKTsKKyB9CisgCisrdm9pZCB0c3Rfc2Vh dHY1OjpjYW5jZWxUb3VjaCgpCisreworKyAgICBUb3VjaFdpbmRvdyB3aW5kb3c7CisrICAgIFFD T01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnU3VyZmFjZSgpICYmIHhkZ1N1cmZhY2UoKS0+bV9jb21t aXR0ZWRDb25maWd1cmVTZXJpYWwpOworKworKyAgICBleGVjKFs9XSB7CisrICAgICAgICBhdXRv ICp0ID0gdG91Y2goKTsKKysgICAgICAgIGF1dG8gKmMgPSBjbGllbnQoKTsKKysgICAgICAgIHQt PnNlbmREb3duKHhkZ1RvcGxldmVsKCktPnN1cmZhY2UoKSwgezMyLCAzMn0sIDEpOworKyAgICAg ICAgdC0+c2VuZEZyYW1lKGMpOworKyAgICAgICAgdC0+c2VuZENhbmNlbChjKTsKKysgICAgICAg IHQtPnNlbmRGcmFtZShjKTsKKysgICAgfSk7CisrCisrICAgIFFUUllfVkVSSUZZKCF3aW5kb3cu bV9ldmVudHMuZW1wdHkoKSk7CisrICAgIHsKKysgICAgICAgIGF1dG8gZSA9IHdpbmRvdy5tX2V2 ZW50cy50YWtlRmlyc3QoKTsKKysgICAgICAgIFFDT01QQVJFKGUudHlwZSwgUUV2ZW50OjpUb3Vj aEJlZ2luKTsKKysgICAgICAgIFFDT01QQVJFKGUudG91Y2hQb2ludFN0YXRlcywgUXQ6OlRvdWNo UG9pbnRQcmVzc2VkKTsKKysgICAgICAgIFFDT01QQVJFKGUudG91Y2hQb2ludHMubGVuZ3RoKCks IDEpOworKyAgICAgICAgUUNPTVBBUkUoZS50b3VjaFBvaW50cy5maXJzdCgpLnBvcygpLCBRUG9p bnRGKDMyLXdpbmRvdy5mcmFtZU1hcmdpbnMoKS5sZWZ0KCksIDMyLXdpbmRvdy5mcmFtZU1hcmdp bnMoKS50b3AoKSkpOworKyAgICB9CisrICAgIHsKKysgICAgICAgIGF1dG8gZSA9IHdpbmRvdy5t X2V2ZW50cy50YWtlRmlyc3QoKTsKKysgICAgICAgIFFDT01QQVJFKGUudHlwZSwgUUV2ZW50OjpU b3VjaENhbmNlbCk7CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRzLmxlbmd0aCgpLCAw KTsKKysgICAgfQorK30KKysKKyBRQ09NUE9TSVRPUl9URVNUX01BSU4odHN0X3NlYXR2NSkKKyAj aW5jbHVkZSAidHN0X3NlYXR2NS5tb2MiCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0 by9jbGllbnQvc2hhcmVkL2NvcmVjb21wb3NpdG9yLmNwcAoraW5kZXggNWM2YzgzYmEuLmZhOWI3 NjYyIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3Jl Y29tcG9zaXRvci5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQv Y29yZWNvbXBvc2l0b3IuY3BwCitAQCAtMjcsNiArMjcsNyBAQAorICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisgCisgI2luY2x1ZGUgImNvcmVjb21wb3NpdG9yLmgiCisrI2luY2x1ZGUgPHRocmVhZD4K KyAKKyBuYW1lc3BhY2UgTW9ja0NvbXBvc2l0b3IgeworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmNwcCBiL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmNwcAoraW5kZXggMGQ5ODg1MjEu LmQxYTJlN2NiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJl ZC9jb3JlcHJvdG9jb2wuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hh cmVkL2NvcmVwcm90b2NvbC5jcHAKK0BAIC00NTEsNiArNDUxLDEzIEBAIHZvaWQgVG91Y2g6OnNl bmRGcmFtZSh3bF9jbGllbnQgKmNsaWVudCkKKyAgICAgICAgIHNlbmRfZnJhbWUoci0+aGFuZGxl KTsKKyB9CisgCisrdm9pZCBUb3VjaDo6c2VuZENhbmNlbCh3bF9jbGllbnQgKmNsaWVudCkKKyt7 CisrICAgIGNvbnN0IGF1dG8gdG91Y2hSZXNvdXJjZXMgPSByZXNvdXJjZU1hcCgpLnZhbHVlcyhj bGllbnQpOworKyAgICBmb3IgKGF1dG8gKnIgOiB0b3VjaFJlc291cmNlcykKKysgICAgICAgIHNl bmRfY2FuY2VsKHItPmhhbmRsZSk7CisrfQorKworIHVpbnQgS2V5Ym9hcmQ6OnNlbmRFbnRlcihT dXJmYWNlICpzdXJmYWNlKQorIHsKKyAgICAgYXV0byBzZXJpYWwgPSBtX3NlYXQtPm1fY29tcG9z aXRvci0+bmV4dFNlcmlhbCgpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC9zaGFyZWQvY29yZXByb3RvY29sLmggYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQv c2hhcmVkL2NvcmVwcm90b2NvbC5oCitpbmRleCBhMWFmMTM3YS4uMjEwZDhkZGIgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCisr KysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCitA QCAtMTU4LDcgKzE1OCw3IEBAIGNsYXNzIFdsQ29tcG9zaXRvciA6IHB1YmxpYyBHbG9iYWwsIHB1 YmxpYyBRdFdheWxhbmRTZXJ2ZXI6OndsX2NvbXBvc2l0b3IKKyB7CisgICAgIFFfT0JKRUNUCisg cHVibGljOgorLSAgICBleHBsaWNpdCBXbENvbXBvc2l0b3IoQ29yZUNvbXBvc2l0b3IgKmNvbXBv c2l0b3IsIGludCB2ZXJzaW9uID0gMykKKysgICAgZXhwbGljaXQgV2xDb21wb3NpdG9yKENvcmVD b21wb3NpdG9yICpjb21wb3NpdG9yLCBpbnQgdmVyc2lvbiA9IDQpCisgICAgICAgICA6IFF0V2F5 bGFuZFNlcnZlcjo6d2xfY29tcG9zaXRvcihjb21wb3NpdG9yLT5tX2Rpc3BsYXksIHZlcnNpb24p CisgICAgICAgICAsIG1fY29tcG9zaXRvcihjb21wb3NpdG9yKQorICAgICB7fQorQEAgLTM2NCw2 ICszNjQsNyBAQCBwdWJsaWM6CisgICAgIHVpbnQgc2VuZFVwKHdsX2NsaWVudCAqY2xpZW50LCBp bnQgaWQpOworICAgICB2b2lkIHNlbmRNb3Rpb24od2xfY2xpZW50ICpjbGllbnQsIGNvbnN0IFFQ b2ludEYgJnBvc2l0aW9uLCBpbnQgaWQpOworICAgICB2b2lkIHNlbmRGcmFtZSh3bF9jbGllbnQg KmNsaWVudCk7CisrICAgIHZvaWQgc2VuZENhbmNlbCh3bF9jbGllbnQgKmNsaWVudCk7CisgCisg ICAgIFNlYXQgKm1fc2VhdCA9IG51bGxwdHI7CisgfTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv dGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAgYi9xdHdheWxh bmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAKK2luZGV4 IGE0MTVjYmY1Li5iMWQzZDA3ZCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC9zaGFyZWRfb2xkL21vY2tjb21wb3NpdG9yLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3Rz L2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwCitAQCAtMzQyLDcgKzM0 Miw3IEBAIENvbXBvc2l0b3I6OkNvbXBvc2l0b3IoTW9ja0NvbXBvc2l0b3IgKm1vY2tDb21wb3Np dG9yKQorICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgICB9CisgCistICAgIHdsX2ds b2JhbF9jcmVhdGUobV9kaXNwbGF5LCAmd2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIDEsIHRoaXMs IGJpbmRDb21wb3NpdG9yKTsKKysgICAgd2xfZ2xvYmFsX2NyZWF0ZShtX2Rpc3BsYXksICZ3bF9j b21wb3NpdG9yX2ludGVyZmFjZSwgNCwgdGhpcywgYmluZENvbXBvc2l0b3IpOworIAorICAgICBt X2RhdGFfZGV2aWNlX21hbmFnZXIucmVzZXQobmV3IERhdGFEZXZpY2VNYW5hZ2VyKHRoaXMsIG1f ZGlzcGxheSkpOworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9z aGFyZWRfb2xkL21vY2tzdXJmYWNlLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9z aGFyZWRfb2xkL21vY2tzdXJmYWNlLmNwcAoraW5kZXggZTlkZjVmOTAuLmMzMjQ2ZTRhIDEwMDY0 NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZh Y2UuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nr c3VyZmFjZS5jcHAKK0BAIC0xMjUsNiArMTI1LDE2IEBAIHZvaWQgU3VyZmFjZTo6c3VyZmFjZV9k YW1hZ2UoUmVzb3VyY2UgKnJlc291cmNlLAorICAgICBRX1VOVVNFRChoZWlnaHQpOworIH0KKyAK Kyt2b2lkIFN1cmZhY2U6OnN1cmZhY2VfZGFtYWdlX2J1ZmZlcihSZXNvdXJjZSAqcmVzb3VyY2Us CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB4LCBpbnQzMl90 IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorK3sKKysgICAgUV9VTlVTRUQocmVz b3VyY2UpOworKyAgICBRX1VOVVNFRCh4KTsKKysgICAgUV9VTlVTRUQoeSk7CisrICAgIFFfVU5V U0VEKHdpZHRoKTsKKysgICAgUV9VTlVTRUQoaGVpZ2h0KTsKKyt9CisrCisgdm9pZCBTdXJmYWNl OjpzdXJmYWNlX2ZyYW1lKFJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgY2FsbGJhY2spCisgeworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmggYi9xdHdheWxhbmQvdGVz dHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5oCitpbmRleCA5NDlkYzIzZC4u ZDE3NjgzN2UgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVk X29sZC9tb2Nrc3VyZmFjZS5oCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hh cmVkX29sZC9tb2Nrc3VyZmFjZS5oCitAQCAtNjUsNiArNjUsOCBAQCBwcm90ZWN0ZWQ6CisgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHdsX3Jlc291cmNlICpidWZmZXIsIGludCB4LCBp bnQgeSkgb3ZlcnJpZGU7CisgICAgIHZvaWQgc3VyZmFjZV9kYW1hZ2UoUmVzb3VyY2UgKnJlc291 cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQz Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkgb3ZlcnJpZGU7CisrICAgIHZvaWQgc3VyZmFjZV9k YW1hZ2VfYnVmZmVyKFJlc291cmNlICpyZXNvdXJjZSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp Z2h0KSBvdmVycmlkZTsKKyAgICAgdm9pZCBzdXJmYWNlX2ZyYW1lKFJlc291cmNlICpyZXNvdXJj ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGNhbGxiYWNrKSBvdmVycmlkZTsK KyAgICAgdm9pZCBzdXJmYWNlX2NvbW1pdChSZXNvdXJjZSAqcmVzb3VyY2UpIG92ZXJyaWRlOwor ZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJm YWNlLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNl LmNwcAoraW5kZXggOTVlNGU2MDkuLjYwYzY3MmNlIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3N1cmZhY2UvdHN0X3N1cmZhY2UuY3BwCisrKysgYi9xdHdheWxhbmQv dGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFjZS5jcHAKK0BAIC0xMjksNiArMTI5 LDEwIEBAIHZvaWQgdHN0X3N1cmZhY2U6OndhaXRGb3JGcmFtZUNhbGxiYWNrR2woKQorICAgICAv LyBNYWtlIHN1cmUgd2UgZm9sbG93IGZyYW1lIGNhbGxiYWNrcyBmb3Igc29tZSBmcmFtZXMKKyAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyArK2kpIHsKKyAgICAgICAgIHhkZ1BpbmdBbmRXYWl0 Rm9yUG9uZygpOyAvLyBNYWtlIHN1cmUgdGhpbmdzIGhhdmUgaGFwcGVuZWQgb24gdGhlIGNsaWVu dAorKyAgICAgICAgaWYgKCFxRW52aXJvbm1lbnRWYXJpYWJsZUludFZhbHVlKCJRVF9XQVlMQU5E X0RJU0FCTEVfV0lORE9XREVDT1JBVElPTiIpICYmIGkgPT0gMCkgeworKyAgICAgICAgICAgIFFD T01QQVJFKGJ1ZmZlclNweS5jb3VudCgpLCAxKTsKKysgICAgICAgICAgICBidWZmZXJTcHkucmVt b3ZlRmlyc3QoKTsKKysgICAgICAgIH0KKyAgICAgICAgIGV4ZWMoWyZdIHsKKyAgICAgICAgICAg ICBRVkVSSUZZKGJ1ZmZlclNweS5lbXB0eSgpKTsgLy8gTWFrZSBzdXJlIG5vIGV4dHJhIGJ1ZmZl cnMgaGF2ZSBhcnJpdmVkCisgICAgICAgICAgICAgUVZFUklGWSgheGRnVG9wbGV2ZWwoKS0+c3Vy ZmFjZSgpLT5tX3dhaXRpbmdGcmFtZUNhbGxiYWNrcy5lbXB0eSgpKTsKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcCBiL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwCitpbmRl eCAyMjc3YmJiOC4uNzQ3ODc1YjQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVsbC5jcHAKK0BAIC0zMSw2ICszMSw3IEBACisg I2luY2x1ZGUgPFF0R3VpL1FPcGVuR0xXaW5kb3c+CisgI2luY2x1ZGUgPFF0R3VpL3FwYS9xcGxh dGZvcm1uYXRpdmVpbnRlcmZhY2UuaD4KKyAjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZh dGUvd2F5bGFuZC13YXlsYW5kLWNsaWVudC1wcm90b2NvbC5oPgorKyNpbmNsdWRlIDxRdFdheWxh bmRDbGllbnQvcHJpdmF0ZS9xd2F5bGFuZHdpbmRvd19wLmg+CisgCisgdXNpbmcgbmFtZXNwYWNl IE1vY2tDb21wb3NpdG9yOworIAorQEAgLTQ1LDYgKzQ2LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAg ICAgdm9pZCBjb25maWd1cmVTdGF0ZXMoKTsKKyAgICAgdm9pZCBwb3B1cCgpOworICAgICB2b2lk IHRvb2x0aXBPblBvcHVwKCk7CisrICAgIHZvaWQgdG9vbHRpcEFuZFNpYmxpbmdQb3B1cCgpOwor ICAgICB2b2lkIHN3aXRjaFBvcHVwcygpOworICAgICB2b2lkIGhpZGVQb3B1cFBhcmVudCgpOwor ICAgICB2b2lkIHBvbmdzKCk7CitAQCAtMTM4LDYgKzE0MCw3IEBAIHZvaWQgdHN0X3hkZ3NoZWxs Ojpjb25maWd1cmVTaXplKCkKKyAKKyB2b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJlU3RhdGVz KCkKKyB7CisrICAgIFFWRVJJRlkocXB1dGVudigiUVRfV0FZTEFORF9GUkFNRV9DQUxMQkFDS19U SU1FT1VUIiwgIjAiKSk7CisgICAgIFFSYXN0ZXJXaW5kb3cgd2luZG93OworICAgICB3aW5kb3cu cmVzaXplKDY0LCA0OCk7CisgICAgIHdpbmRvdy5zaG93KCk7CitAQCAtMTU0LDkgKzE1NywxMiBA QCB2b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJlU3RhdGVzKCkKKyAgICAgLy8gVG9wbGV2ZWwg d2luZG93cyBkb24ndCBrbm93IHRoZWlyIHBvc2l0aW9uIG9uIHhkZy1zaGVsbAorIC8vICAgIFFD T01QQVJFKHdpbmRvdy5mcmFtZUdlb21ldHJ5KCkudG9wTGVmdCgpLCBRUG9pbnQoKSk7IC8vIFRP RE86IHRoaXMgZG9lc24ndCBjdXJyZW50bHkgd29yayB3aGVuIHdpbmRvdyBkZWNvcmF0aW9ucyBh cmUgZW5hYmxlZAorIAorLS8vICAgIFFFWFBFQ1RfRkFJTCgiIiwgImNvbmZpZ3VyZSBoYXMgYWxy ZWFkeSBiZWVuIGFja2VkLCB3ZSBzaG91bGRuJ3QgaGF2ZSB0byB3YWl0IGZvciBpc0FjdGl2ZSIs IENvbnRpbnVlKTsKKy0vLyAgICBRVkVSSUZZKHdpbmRvdy5pc0FjdGl2ZSgpKTsKKy0gICAgUVRS WV9WRVJJRlkod2luZG93LmlzQWN0aXZlKCkpOyAvLyBKdXN0IG1ha2Ugc3VyZSBpdCBldmVudHVh bGx5IGdldCdzIHNldCBjb3JyZWN0bHkKKysgICAgLy8gd2luZG93LndpbmRvd3N0YXRlKCkgaXMg ZHJpdmVuIGJ5IGtleWJvYXJkIGZvY3VzLCBob3dldmVyIGZvciBkZWNvcmF0aW9ucyB3ZSB3YW50 IHRvIGZvbGxvdworKyAgICAvLyBYREdTaGVsbCB0aGlzIGlzIGludGVybmFsIHRvIFF0V2F5bGFu ZCBzbyBpdCBpcyBxdWVyaWVkIGRpcmVjdGx5CisrICAgIGF1dG8gd2F5bGFuZFdpbmRvdyA9IHN0 YXRpY19jYXN0PFF0V2F5bGFuZENsaWVudDo6UVdheWxhbmRXaW5kb3cgKj4od2luZG93LmhhbmRs ZSgpKTsKKysgICAgUV9BU1NFUlQod2F5bGFuZFdpbmRvdyk7CisrICAgIFFUUllfVkVSSUZZKHdh eWxhbmRXaW5kb3ctPndpbmRvd1N0YXRlcygpLnRlc3RGbGFnKAorKyAgICAgICAgICAgIFF0OjpX aW5kb3dBY3RpdmUpKTsgLy8gSnVzdCBtYWtlIHN1cmUgaXQgZXZlbnR1YWxseSBnZXQncyBzZXQg Y29ycmVjdGx5CisgCisgICAgIGNvbnN0IFFTaXplIHNjcmVlblNpemUoNjQwLCA0ODApOworICAg ICBjb25zdCB1aW50IG1heGltaXplZFNlcmlhbCA9IGV4ZWMoWz1dIHsKK0BAIC0xODYsNiArMTky LDcgQEAgdm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVN0YXRlcygpCisgICAgIFFDT01QQVJF KHdpbmRvdy53aW5kb3dTdGF0ZXMoKSwgUXQ6OldpbmRvd05vU3RhdGUpOworICAgICBRQ09NUEFS RSh3aW5kb3cuZnJhbWVHZW9tZXRyeSgpLnNpemUoKSwgd2luZG93ZWRTaXplKTsKKyAvLyAgICBR Q09NUEFSRSh3aW5kb3cuZnJhbWVHZW9tZXRyeSgpLnRvcExlZnQoKSwgUVBvaW50KCkpOyAvLyBU T0RPOiB0aGlzIGRvZXNuJ3QgY3VycmVudGx5IHdvcmsgd2hlbiB3aW5kb3cgZGVjb3JhdGlvbnMg YXJlIGVuYWJsZWQKKysgICAgUVZFUklGWShxdW5zZXRlbnYoIlFUX1dBWUxBTkRfRlJBTUVfQ0FM TEJBQ0tfVElNRU9VVCIpKTsKKyB9CisgCisgdm9pZCB0c3RfeGRnc2hlbGw6OnBvcHVwKCkKK0BA IC0zNDAsNiArMzQ3LDkyIEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjp0b29sdGlwT25Qb3B1cCgpCisg ICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVwKDApLCBudWxscHRyKTsKKyB9Cisg Cisrdm9pZCB0c3RfeGRnc2hlbGw6OnRvb2x0aXBBbmRTaWJsaW5nUG9wdXAoKQorK3sKKysgICAg Y2xhc3MgVG9vbFRpcCA6IHB1YmxpYyBRUmFzdGVyV2luZG93IHsKKysgICAgcHVibGljOgorKyAg ICAgICAgZXhwbGljaXQgVG9vbFRpcChRV2luZG93ICpwYXJlbnQpIHsKKysgICAgICAgICAgICBz ZXRUcmFuc2llbnRQYXJlbnQocGFyZW50KTsKKysgICAgICAgICAgICBzZXRGbGFncyhRdDo6VG9v bFRpcCk7CisrICAgICAgICAgICAgcmVzaXplKDEwMCwgMTAwKTsKKysgICAgICAgICAgICBzaG93 KCk7CisrICAgICAgICB9CisrICAgICAgICB2b2lkIG1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVu dCAqZXZlbnQpIG92ZXJyaWRlIHsKKysgICAgICAgICAgICBRUmFzdGVyV2luZG93Ojptb3VzZVBy ZXNzRXZlbnQoZXZlbnQpOworKyAgICAgICAgICAgIG1fcG9wdXAgPSBuZXcgUVJhc3RlcldpbmRv dzsKKysgICAgICAgICAgICBtX3BvcHVwLT5zZXRUcmFuc2llbnRQYXJlbnQodHJhbnNpZW50UGFy ZW50KCkpOworKyAgICAgICAgICAgIG1fcG9wdXAtPnNldEZsYWdzKFF0OjpQb3B1cCk7CisrICAg ICAgICAgICAgbV9wb3B1cC0+cmVzaXplKDEwMCwgMTAwKTsKKysgICAgICAgICAgICBtX3BvcHVw LT5zaG93KCk7CisrICAgICAgICB9CisrCisrICAgICAgICBRUmFzdGVyV2luZG93ICptX3BvcHVw ID0gbnVsbHB0cjsKKysgICAgfTsKKysKKysgICAgY2xhc3MgV2luZG93IDogcHVibGljIFFSYXN0 ZXJXaW5kb3cgeworKyAgICBwdWJsaWM6CisrICAgICAgICB2b2lkIG1vdXNlUHJlc3NFdmVudChR TW91c2VFdmVudCAqZXZlbnQpIG92ZXJyaWRlIHsKKysgICAgICAgICAgICBRUmFzdGVyV2luZG93 Ojptb3VzZVByZXNzRXZlbnQoZXZlbnQpOworKyAgICAgICAgICAgIG1fdG9vbHRpcCA9IG5ldyBU b29sVGlwKHRoaXMpOworKyAgICAgICAgfQorKyAgICAgICAgVG9vbFRpcCAqbV90b29sdGlwID0g bnVsbHB0cjsKKysgICAgfTsKKysKKysgICAgV2luZG93IHdpbmRvdzsKKysgICAgd2luZG93LnJl c2l6ZSgyMDAsIDIwMCk7CisrICAgIHdpbmRvdy5zaG93KCk7CisrCisrICAgIFFDT01QT1NJVE9S X1RSWV9WRVJJRlkoeGRnVG9wbGV2ZWwoKSk7CisrICAgIGV4ZWMoWz1dIHsgeGRnVG9wbGV2ZWwo KS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKCk7IH0pOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVS SUZZKHhkZ1RvcGxldmVsKCktPm1feGRnU3VyZmFjZS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJp YWwpOworKworKyAgICBleGVjKFs9XSB7CisrICAgICAgICBhdXRvICpzdXJmYWNlID0geGRnVG9w bGV2ZWwoKS0+c3VyZmFjZSgpOworKyAgICAgICAgYXV0byAqcCA9IHBvaW50ZXIoKTsKKysgICAg ICAgIGF1dG8gKmMgPSBjbGllbnQoKTsKKysgICAgICAgIHAtPnNlbmRFbnRlcihzdXJmYWNlLCB7 MTAwLCAxMDB9KTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRC dXR0b24oY2xpZW50KCksIEJUTl9MRUZULCBQb2ludGVyOjpidXR0b25fc3RhdGVfcHJlc3NlZCk7 CisrICAgICAgICBwLT5zZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0 dG9uX3N0YXRlX3JlbGVhc2VkKTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgICAg IHAtPnNlbmRMZWF2ZShzdXJmYWNlKTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAg fSk7CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoKSk7CisrICAgIGV4 ZWMoWz1dIHsgeGRnUG9wdXAoKS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKFFSZWN0KDEwMCwgMTAw LCAxMDAsIDEwMCkpOyB9KTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgp LT5tX3hkZ1N1cmZhY2UtPm1fY29tbWl0dGVkQ29uZmlndXJlU2VyaWFsKTsKKysgICAgUUNPTVBP U0lUT1JfVFJZX1ZFUklGWSgheGRnUG9wdXAoKS0+bV9ncmFiYmVkKTsKKysKKysgICAgZXhlYyhb PV0geworKyAgICAgICAgYXV0byAqc3VyZmFjZSA9IHhkZ1BvcHVwKCktPnN1cmZhY2UoKTsKKysg ICAgICAgIGF1dG8gKnAgPSBwb2ludGVyKCk7CisrICAgICAgICBhdXRvICpjID0gY2xpZW50KCk7 CisrICAgICAgICBwLT5zZW5kRW50ZXIoc3VyZmFjZSwgezEwMCwgMTAwfSk7CisrICAgICAgICBw LT5zZW5kRnJhbWUoYyk7CisrICAgICAgICBwLT5zZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVG VCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3ByZXNzZWQpOworKyAgICAgICAgcC0+c2VuZEJ1dHRv bihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6OmJ1dHRvbl9zdGF0ZV9yZWxlYXNlZCk7Cisr ICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgIH0pOworKworKyAgICBRQ09NUE9TSVRPUl9U UllfVkVSSUZZKHhkZ1BvcHVwKDEpKTsKKysgICAgZXhlYyhbPV0geyB4ZGdQb3B1cCgxKS0+c2Vu ZENvbXBsZXRlQ29uZmlndXJlKFFSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOyB9KTsKKysgICAg UUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgxKS0+bV94ZGdTdXJmYWNlLT5tX2NvbW1p dHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9w dXAoMSktPm1fZ3JhYmJlZCk7CisrCisrICAgIC8vIENsb3NlIHRoZSBtaWRkbGUgdG9vbHRpcCAo aXQgc2hvdWxkIG5vdCBjbG9zZSB0aGUgc2libGluZyBwb3B1cCkKKysgICAgd2luZG93Lm1fdG9v bHRpcC0+Y2xvc2UoKTsKKysKKysgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAo MSksIG51bGxwdHIpOworKyAgICAvLyBWZXJpZnkgdGhlIHJlbWFpbmluZyB4ZGcgc3VyZmFjZSBp cyBhIGdyYWIgcG9wdXAuLgorKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDAp KTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgwKS0+bV9ncmFiYmVkKTsK KysKKysgICAgd2luZG93Lm1fdG9vbHRpcC0+bV9wb3B1cC0+Y2xvc2UoKTsKKysgICAgUUNPTVBP U0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMSksIG51bGxwdHIpOworKyAgICBRQ09NUE9TSVRP Ul9UUllfQ09NUEFSRSh4ZGdQb3B1cCgwKSwgbnVsbHB0cik7CisrfQorKworIC8vIFFUQlVHLTY1 NjgwCisgdm9pZCB0c3RfeGRnc2hlbGw6OnN3aXRjaFBvcHVwcygpCisgeworQEAgLTUwNSw3ICs1 OTgsNyBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6bWluTWF4U2l6ZSgpCisgICAgIHdpbmRvdy5zaG93 KCk7CisgICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnVG9wbGV2ZWwoKSk7CisgCistICAg IGV4ZWMoWz1dIHsgeGRnVG9wbGV2ZWwoKS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKCk7IH0pOwor KyAgICAvLyB3ZSBkb24ndCByb3VuZHRyaXAgd2l0aCBvdXIgY29uZmlndXJhdGlvbiB0aGUgaW5p dGlhbCBjb21taXQgc2hvdWxkIGJlIGNvcnJlY3QKKyAKKyAgICAgUUNPTVBPU0lUT1JfVFJZX0NP TVBBUkUoeGRnVG9wbGV2ZWwoKS0+bV9jb21taXR0ZWQubWluU2l6ZSwgUVNpemUoMTAwLCAxMDAp KTsKKyAgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnVG9wbGV2ZWwoKS0+bV9jb21taXR0 ZWQubWF4U2l6ZSwgUVNpemUoMTAwMCwgMTAwMCkpOworU3VibW9kdWxlIHF0d2ViY2hhbm5lbCA2 MTg0MjJlZS4uZjg5NDk2NTU6CitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFu bmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyLmNwcCBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5l bC9xbWV0YW9iamVjdHB1Ymxpc2hlci5jcHAKK2luZGV4IDUzNmViNWMuLjg5OGQ3NjkgMTAwNjQ0 CistLS0gYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIu Y3BwCisrKysgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNo ZXIuY3BwCitAQCAtMTg2LDggKzE4Niw2IEBAIFFfREVDTEFSRV9UWVBFSU5GTyhPdmVybG9hZFJl c29sdXRpb25DYW5kaWRhdGUsIFFfTU9WQUJMRV9UWVBFKTsKKyBRTWV0YU9iamVjdFB1Ymxpc2hl cjo6UU1ldGFPYmplY3RQdWJsaXNoZXIoUVdlYkNoYW5uZWwgKndlYkNoYW5uZWwpCisgICAgIDog UU9iamVjdCh3ZWJDaGFubmVsKQorICAgICAsIHdlYkNoYW5uZWwod2ViQ2hhbm5lbCkKKy0gICAg LCBzaWduYWxIYW5kbGVyKHRoaXMpCistICAgICwgY2xpZW50SXNJZGxlKGZhbHNlKQorICAgICAs IGJsb2NrVXBkYXRlcyhmYWxzZSkKKyAgICAgLCBwcm9wZXJ0eVVwZGF0ZXNJbml0aWFsaXplZChm YWxzZSkKKyB7CitAQCAtMzAxLDE3ICsyOTksMTcgQEAgUUpzb25PYmplY3QgUU1ldGFPYmplY3RQ dWJsaXNoZXI6OmNsYXNzSW5mb0Zvck9iamVjdChjb25zdCBRT2JqZWN0ICpvYmplY3QsIFFXZWIK KyAgICAgcmV0dXJuIGRhdGE7CisgfQorIAorLXZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNl dENsaWVudElzSWRsZShib29sIGlzSWRsZSkKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpz ZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lkbGUsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQg KnRyYW5zcG9ydCkKKyB7CistICAgIGlmIChjbGllbnRJc0lkbGUgPT0gaXNJZGxlKSB7CistICAg ICAgICByZXR1cm47CistICAgIH0KKy0gICAgY2xpZW50SXNJZGxlID0gaXNJZGxlOworLSAgICBp ZiAoIWlzSWRsZSAmJiB0aW1lci5pc0FjdGl2ZSgpKSB7CistICAgICAgICB0aW1lci5zdG9wKCk7 CistICAgIH0gZWxzZSBpZiAoaXNJZGxlICYmICF0aW1lci5pc0FjdGl2ZSgpKSB7CistICAgICAg ICB0aW1lci5zdGFydChQUk9QRVJUWV9VUERBVEVfSU5URVJWQUwsIHRoaXMpOworLSAgICB9Cisr ICAgIHRyYW5zcG9ydFN0YXRlW3RyYW5zcG9ydF0uY2xpZW50SXNJZGxlID0gaXNJZGxlOworKyAg ICBpZiAoaXNJZGxlKQorKyAgICAgICAgc2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKHRyYW5z cG9ydCk7CisrfQorKworK2Jvb2wgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmlzQ2xpZW50SWRsZShR V2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisreworKyAgICBhdXRvIGZv dW5kID0gdHJhbnNwb3J0U3RhdGUuZmluZCh0cmFuc3BvcnQpOworKyAgICByZXR1cm4gZm91bmQg IT0gdHJhbnNwb3J0U3RhdGUuZW5kKCkgJiYgZm91bmQudmFsdWUoKS5jbGllbnRJc0lkbGU7Cisg fQorIAorIFFKc29uT2JqZWN0IFFNZXRhT2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplQ2xpZW50 KFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKK0BAIC0zMzMsNiArMzMx LDcgQEAgUUpzb25PYmplY3QgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmluaXRpYWxpemVDbGllbnQo UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydAorIAorIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNo ZXI6OmluaXRpYWxpemVQcm9wZXJ0eVVwZGF0ZXMoY29uc3QgUU9iamVjdCAqY29uc3Qgb2JqZWN0 LCBjb25zdCBRSnNvbk9iamVjdCAmb2JqZWN0SW5mbykKKyB7CisrICAgIGF1dG8gKnNpZ25hbEhh bmRsZXIgPSBzaWduYWxIYW5kbGVyRm9yKG9iamVjdCk7CisgICAgIGZvcmVhY2ggKGNvbnN0IFFK c29uVmFsdWUgJnByb3BlcnR5SW5mb1Zhciwgb2JqZWN0SW5mb1tLRVlfUFJPUEVSVElFU10udG9B cnJheSgpKSB7CisgICAgICAgICBjb25zdCBRSnNvbkFycmF5ICZwcm9wZXJ0eUluZm8gPSBwcm9w ZXJ0eUluZm9WYXIudG9BcnJheSgpOworICAgICAgICAgaWYgKHByb3BlcnR5SW5mby5zaXplKCkg PCAyKSB7CitAQCAtMzUzLDE5ICszNTIsMTkgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6 aW5pdGlhbGl6ZVByb3BlcnR5VXBkYXRlcyhjb25zdCBRT2JqZWN0ICpjb25zdCBvYmplY3QKKyAK KyAgICAgICAgIC8vIE9ubHkgY29ubmVjdCBmb3IgYSBwcm9wZXJ0eSB1cGRhdGUgb25jZQorICAg ICAgICAgaWYgKGNvbm5lY3RlZFByb3BlcnRpZXMuaXNFbXB0eSgpKSB7CistICAgICAgICAgICAg c2lnbmFsSGFuZGxlci5jb25uZWN0VG8ob2JqZWN0LCBzaWduYWxJbmRleCk7CisrICAgICAgICAg ICAgc2lnbmFsSGFuZGxlci0+Y29ubmVjdFRvKG9iamVjdCwgc2lnbmFsSW5kZXgpOworICAgICAg ICAgfQorIAorICAgICAgICAgY29ubmVjdGVkUHJvcGVydGllcy5pbnNlcnQocHJvcGVydHlJbmRl eCk7CisgICAgIH0KKyAKKyAgICAgLy8gYWxzbyBhbHdheXMgY29ubmVjdCB0byBkZXN0cm95ZWQg c2lnbmFsCistICAgIHNpZ25hbEhhbmRsZXIuY29ubmVjdFRvKG9iamVjdCwgc19kZXN0cm95ZWRT aWduYWxJbmRleCk7CisrICAgIHNpZ25hbEhhbmRsZXItPmNvbm5lY3RUbyhvYmplY3QsIHNfZGVz dHJveWVkU2lnbmFsSW5kZXgpOworIH0KKyAKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpz ZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpCisgeworLSAgICBpZiAoYmxvY2tVcGRhdGVzIHx8 ICFjbGllbnRJc0lkbGUgfHwgcGVuZGluZ1Byb3BlcnR5VXBkYXRlcy5pc0VtcHR5KCkpIHsKKysg ICAgaWYgKGJsb2NrVXBkYXRlcykgeworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCitAQCAt NDE1LDE4ICs0MTQsMTkgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2VuZFBlbmRpbmdQ cm9wZXJ0eVVwZGF0ZXMoKQorIAorICAgICAvLyBkYXRhIGRvZXMgbm90IGNvbnRhaW4gc3BlY2lm aWMgdXBkYXRlcworICAgICBpZiAoIWRhdGEuaXNFbXB0eSgpKSB7CistICAgICAgICBzZXRDbGll bnRJc0lkbGUoZmFsc2UpOworLQorICAgICAgICAgbWVzc2FnZVtLRVlfREFUQV0gPSBkYXRhOwor LSAgICAgICAgYnJvYWRjYXN0TWVzc2FnZShtZXNzYWdlKTsKKysgICAgICAgIGVucXVldWVCcm9h ZGNhc3RNZXNzYWdlKG1lc3NhZ2UpOworICAgICB9CisgCisgICAgIC8vIHNlbmQgZXZlcnkgcHJv cGVydHkgdXBkYXRlIHdoaWNoIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBicm9hZGNhc3RlZAorICAg ICBjb25zdCBRSGFzaDxRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0KiwgUUpzb25BcnJheT46 OmNvbnN0X2l0ZXJhdG9yIHN1ZW5kID0gc3BlY2lmaWNVcGRhdGVzLmNvbnN0RW5kKCk7CisgICAg IGZvciAoUUhhc2g8UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCosIFFKc29uQXJyYXk+Ojpj b25zdF9pdGVyYXRvciBpdCA9IHNwZWNpZmljVXBkYXRlcy5jb25zdEJlZ2luKCk7IGl0ICE9IHN1 ZW5kOyArK2l0KSB7CisgICAgICAgICBtZXNzYWdlW0tFWV9EQVRBXSA9IGl0LnZhbHVlKCk7Cist ICAgICAgICBpdC5rZXkoKS0+c2VuZE1lc3NhZ2UobWVzc2FnZSk7CisrICAgICAgICBlbnF1ZXVl TWVzc2FnZShtZXNzYWdlLCBpdC5rZXkoKSk7CisgICAgIH0KKysKKysgICAgZm9yIChhdXRvIHN0 YXRlID0gdHJhbnNwb3J0U3RhdGUuYmVnaW4oKTsgc3RhdGUgIT0gdHJhbnNwb3J0U3RhdGUuZW5k KCk7ICsrc3RhdGUpCisrICAgICAgICBzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVwZGF0ZXMoc3RhdGUu a2V5KCkpOworIH0KKyAKKyBRVmFyaWFudCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW52b2tlTWV0 aG9kKFFPYmplY3QgKmNvbnN0IG9iamVjdCwgY29uc3QgUU1ldGFNZXRob2QgJm1ldGhvZCwKK0BA IC01NzIsNyArNTcyLDcgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2lnbmFsRW1pdHRl ZChjb25zdCBRT2JqZWN0ICpvYmplY3QsIGNvbnN0IGludCBzaWduYWwKKyAgICAgICAgIH0KKyAg ICAgfSBlbHNlIHsKKyAgICAgICAgIHBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXNbb2JqZWN0XVtzaWdu YWxJbmRleF0gPSBhcmd1bWVudHM7CistICAgICAgICBpZiAoY2xpZW50SXNJZGxlICYmICFibG9j a1VwZGF0ZXMgJiYgIXRpbWVyLmlzQWN0aXZlKCkpIHsKKysgICAgICAgIGlmICghYmxvY2tVcGRh dGVzICYmICF0aW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgICAgICAgdGltZXIuc3RhcnQoUFJP UEVSVFlfVVBEQVRFX0lOVEVSVkFMLCB0aGlzKTsKKyAgICAgICAgIH0KKyAgICAgfQorQEAgLTU5 MCw3ICs1OTAsNyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpvYmplY3REZXN0cm95ZWQo Y29uc3QgUU9iamVjdCAqb2JqZWN0KQorICAgICAvLyBvbmx5IHJlbW92ZSBmcm9tIGhhbmRsZXIg d2hlbiB3ZSBpbml0aWFsaXplZCB0aGUgcHJvcGVydHkgdXBkYXRlcworICAgICAvLyBjZjogaHR0 cHM6Ly9idWdyZXBvcnRzLnF0LmlvL2Jyb3dzZS9RVEJVRy02MDI1MAorICAgICBpZiAocHJvcGVy dHlVcGRhdGVzSW5pdGlhbGl6ZWQpIHsKKy0gICAgICAgIHNpZ25hbEhhbmRsZXIucmVtb3ZlKG9i amVjdCk7CisrICAgICAgICBzaWduYWxIYW5kbGVyRm9yKG9iamVjdCktPnJlbW92ZShvYmplY3Qp OworICAgICAgICAgc2lnbmFsVG9Qcm9wZXJ0eU1hcC5yZW1vdmUob2JqZWN0KTsKKyAgICAgfQor ICAgICBwZW5kaW5nUHJvcGVydHlVcGRhdGVzLnJlbW92ZShvYmplY3QpOworQEAgLTg1Miw2ICs4 NTIsNTIgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6YnJvYWRjYXN0TWVzc2FnZShjb25z dCBRSnNvbk9iamVjdCAmbWVzc2FnZSkgY29uc3QKKyAgICAgfQorIH0KKyAKKyt2b2lkIFFNZXRh T2JqZWN0UHVibGlzaGVyOjplbnF1ZXVlQnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVj dCAmbWVzc2FnZSkKKyt7CisrICAgIGlmICh3ZWJDaGFubmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0 cy5pc0VtcHR5KCkpIHsKKysgICAgICAgIHFXYXJuaW5nKCJRV2ViQ2hhbm5lbCBpcyBub3QgY29u bmVjdGVkIHRvIGFueSB0cmFuc3BvcnRzLCBjYW5ub3Qgc2VuZCBtZXNzYWdlOiAlcyIsCisrICAg ICAgICAgICAgICAgICBRSnNvbkRvY3VtZW50KG1lc3NhZ2UpLnRvSnNvbigpLmNvbnN0RGF0YSgp KTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgICBmb3IgKGF1dG8gKnRyYW5zcG9y dCA6IHdlYkNoYW5uZWwtPmRfZnVuYygpLT50cmFuc3BvcnRzKSB7CisrICAgICAgICBhdXRvICZz dGF0ZSA9IHRyYW5zcG9ydFN0YXRlW3RyYW5zcG9ydF07CisrICAgICAgICBzdGF0ZS5xdWV1ZWRN ZXNzYWdlcy5hcHBlbmQobWVzc2FnZSk7CisrICAgIH0KKyt9CisrCisrdm9pZCBRTWV0YU9iamVj dFB1Ymxpc2hlcjo6ZW5xdWV1ZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVdlYkNoYW5uZWxBYnN0 cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorK3sKKysgICAgYXV0byAmc3RhdGUgPSB0cmFuc3Bv cnRTdGF0ZVt0cmFuc3BvcnRdOworKyAgICBzdGF0ZS5xdWV1ZWRNZXNzYWdlcy5hcHBlbmQobWVz c2FnZSk7CisrfQorKworK3ZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNlbmRFbnF1ZXVlZFBy b3BlcnR5VXBkYXRlcyhRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisr eworKyAgICBhdXRvIGZvdW5kID0gdHJhbnNwb3J0U3RhdGUuZmluZCh0cmFuc3BvcnQpOworKyAg ICBpZiAoZm91bmQgIT0gdHJhbnNwb3J0U3RhdGUuZW5kKCkgJiYgZm91bmQudmFsdWUoKS5jbGll bnRJc0lkbGUKKysgICAgICAgICYmICFmb3VuZC52YWx1ZSgpLnF1ZXVlZE1lc3NhZ2VzLmlzRW1w dHkoKSkgeworKworKyAgICAgICAgLy8gSWYgdGhlIGNsaWVudCBpcyBjb25uZWN0ZWQgd2l0aCBh biBpbi1wcm9jZXNzIHRyYW5zcG9ydCwgaXQgY2FuCisrICAgICAgICAvLyBoYXBwZW4gdGhhdCBh IG1lc3NhZ2UgdHJpZ2dlcnMgYSBzdWJzZXF1ZW50IHByb3BlcnR5IGNoYW5nZS4gSW4KKysgICAg ICAgIC8vIHRoYXQgY2FzZSwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcXVldWVkIG1lc3Nh Z2VzIGhhdmUgYWxyZWFkeQorKyAgICAgICAgLy8gYmVlbiBjbGVhcmVkOyBvdGhlcndpc2UgdGhl IHJlY3Vyc2l2ZSBjYWxsIHdpbGwgc2VuZCBldmVyeXRoaWcgYWdhaW4uCisrICAgICAgICAvLyBD YXNlIGluIHBvaW50OiBUaGUgcW1sd2ViY2hhbm5lbCB0ZXN0cyBmYWlsIGlmIHdlIGRvbid0IGNs ZWFyIHRoZQorKyAgICAgICAgLy8gcXVldWVkIG1lc3NhZ2VzIGJlZm9yZSBzZW5kaW5nIHRoZW0g b3V0LgorKyAgICAgICAgLy8gRm9yIHRoYXQgc2FtZSByZWFzb24gc2V0IHRoZSBjbGllbnQgdG8g ImJ1c3kiIChha2Egbm9uLWlkbGUpIGp1c3QKKysgICAgICAgIC8vIHJpZ2h0IGJlZm9yZSBzZW5k aW5nIG91dCB0aGUgbWVzc2FnZXM7IG90aGVyd2lzZSBhIHBvdGVudGlhbAorKyAgICAgICAgLy8g IklkbGUiIHR5cGUgbWVzc2FnZSB3aWxsIG5vdCBjb3JyZWN0bHkgcmVzdG9yZSB0aGUgSWRsZSBz dGF0ZS4KKysgICAgICAgIGNvbnN0IGF1dG8gbWVzc2FnZXMgPSBzdGQ6Om1vdmUoZm91bmQudmFs dWUoKS5xdWV1ZWRNZXNzYWdlcyk7CisrICAgICAgICBRX0FTU0VSVChmb3VuZC52YWx1ZSgpLnF1 ZXVlZE1lc3NhZ2VzLmlzRW1wdHkoKSk7CisrICAgICAgICBmb3VuZC52YWx1ZSgpLmNsaWVudElz SWRsZSA9IGZhbHNlOworKworKyAgICAgICAgZm9yIChjb25zdCBhdXRvICZtZXNzYWdlIDogbWVz c2FnZXMpIHsKKysgICAgICAgICAgICB0cmFuc3BvcnQtPnNlbmRNZXNzYWdlKG1lc3NhZ2UpOwor KyAgICAgICAgfQorKyAgICB9CisrfQorKworIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6Omhh bmRsZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsQWJzdHJh Y3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKKyB7CisgICAgIGlmICghd2ViQ2hhbm5lbC0+ZF9mdW5j KCktPnRyYW5zcG9ydHMuY29udGFpbnModHJhbnNwb3J0KSkgeworQEAgLTg2Niw3ICs5MTIsNyBA QCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpoYW5kbGVNZXNzYWdlKGNvbnN0IFFKc29uT2Jq ZWN0ICZtZXNzYWdlLCBRV2ViQ2hhbm5lbAorIAorICAgICBjb25zdCBNZXNzYWdlVHlwZSB0eXBl ID0gdG9UeXBlKG1lc3NhZ2UudmFsdWUoS0VZX1RZUEUpKTsKKyAgICAgaWYgKHR5cGUgPT0gVHlw ZUlkbGUpIHsKKy0gICAgICAgIHNldENsaWVudElzSWRsZSh0cnVlKTsKKysgICAgICAgIHNldENs aWVudElzSWRsZSh0cnVlLCB0cmFuc3BvcnQpOworICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlw ZUluaXQpIHsKKyAgICAgICAgIGlmICghbWVzc2FnZS5jb250YWlucyhLRVlfSUQpKSB7CisgICAg ICAgICAgICAgcVdhcm5pbmcoIkpTT04gbWVzc2FnZSBvYmplY3QgaXMgbWlzc2luZyB0aGUgaWQg cHJvcGVydHk6ICVzIiwKK0BAIC05MTMsOSArOTU5LDkgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxp c2hlcjo6aGFuZGxlTWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSwgUVdlYkNoYW5u ZWwKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgIHRyYW5zcG9ydC0+c2Vu ZE1lc3NhZ2UoY3JlYXRlUmVzcG9uc2UobWVzc2FnZS52YWx1ZShLRVlfSUQpLCB3cmFwUmVzdWx0 KHJlc3VsdCwgdHJhbnNwb3J0KSkpOworICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFR5cGVD b25uZWN0VG9TaWduYWwpIHsKKy0gICAgICAgICAgICBzaWduYWxIYW5kbGVyLmNvbm5lY3RUbyhv YmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQoLTEpKTsKKysgICAgICAgICAg ICBzaWduYWxIYW5kbGVyRm9yKG9iamVjdCktPmNvbm5lY3RUbyhvYmplY3QsIG1lc3NhZ2UudmFs dWUoS0VZX1NJR05BTCkudG9JbnQoLTEpKTsKKyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBU eXBlRGlzY29ubmVjdEZyb21TaWduYWwpIHsKKy0gICAgICAgICAgICBzaWduYWxIYW5kbGVyLmRp c2Nvbm5lY3RGcm9tKG9iamVjdCwgbWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkp OworKyAgICAgICAgICAgIHNpZ25hbEhhbmRsZXJGb3Iob2JqZWN0KS0+ZGlzY29ubmVjdEZyb20o b2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9TSUdOQUwpLnRvSW50KC0xKSk7CisgICAgICAgICB9 IGVsc2UgaWYgKHR5cGUgPT0gVHlwZVNldFByb3BlcnR5KSB7CisgICAgICAgICAgICAgc2V0UHJv cGVydHkob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9QUk9QRVJUWSkudG9JbnQoLTEpLAorICAg ICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UudmFsdWUoS0VZX1ZBTFVFKSk7CitAQCAtOTMx LDYgKzk3Nyw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNldEJsb2NrVXBkYXRlcyhi b29sIGJsb2NrKQorICAgICBibG9ja1VwZGF0ZXMgPSBibG9jazsKKyAKKyAgICAgaWYgKCFibG9j a1VwZGF0ZXMpIHsKKysgICAgICAgIHRpbWVyLnN0YXJ0KFBST1BFUlRZX1VQREFURV9JTlRFUlZB TCwgdGhpcyk7CisgICAgICAgICBzZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpOworICAgICB9 IGVsc2UgaWYgKHRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgIHRpbWVyLnN0b3AoKTsKK0BA IC05NDgsNCArOTk1LDE1IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnRpbWVyRXZlbnQo UVRpbWVyRXZlbnQgKmV2ZW50KQorICAgICB9CisgfQorIAorK1NpZ25hbEhhbmRsZXI8UU1ldGFP YmplY3RQdWJsaXNoZXI+ICpRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2lnbmFsSGFuZGxlckZvcihj b25zdCBRT2JqZWN0ICpvYmplY3QpCisreworKyAgICBhdXRvIHRocmVhZCA9IG9iamVjdC0+dGhy ZWFkKCk7CisrICAgIGF1dG8gaXQgPSBzaWduYWxIYW5kbGVycy5maW5kKHRocmVhZCk7CisrICAg IGlmIChpdCA9PSBzaWduYWxIYW5kbGVycy5lbmQoKSkgeworKyAgICAgICAgaXQgPSBzaWduYWxI YW5kbGVycy5lbXBsYWNlKHRocmVhZCwgdGhpcykuZmlyc3Q7CisrICAgICAgICBpdC0+c2Vjb25k Lm1vdmVUb1RocmVhZCh0aHJlYWQpOworKyAgICB9CisrICAgIHJldHVybiAmaXQtPnNlY29uZDsK Kyt9CisrCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMv d2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlcl9wLmggYi9xdHdlYmNoYW5uZWwvc3JjL3dl YmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXJfcC5oCitpbmRleCBiYmQ5ODc1Li40NzEzZWYx IDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVi bGlzaGVyX3AuaAorKysrIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0 cHVibGlzaGVyX3AuaAorQEAgLTU5LDYgKzU5LDkgQEAKKyAjaW5jbHVkZSA8UUJhc2ljVGltZXI+ CisgI2luY2x1ZGUgPFFQb2ludGVyPgorICNpbmNsdWRlIDxRSnNvbk9iamVjdD4KKysjaW5jbHVk ZSA8UVF1ZXVlPgorKworKyNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgorIAorICNpbmNsdWRlICJx d2ViY2hhbm5lbGdsb2JhbC5oIgorIAorQEAgLTEwOSwxNyArMTEyLDM2IEBAIHB1YmxpYzoKKyAg ICAgICovCisgICAgIHZvaWQgYnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVz c2FnZSkgY29uc3Q7CisgCisrICAgIC8qKgorKyAgICAgKiBFbnF1ZXVlIHRoZSBnaXZlbiBAcCBt ZXNzYWdlIHRvIGFsbCBrbm93biB0cmFuc3BvcnRzLgorKyAgICAgKi8KKysgICAgdm9pZCBlbnF1 ZXVlQnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSk7CisrCisrICAg IC8qKgorKyAgICAgKiBFbnF1ZXVlIHRoZSBnaXZlbiBAcCBtZXNzYWdlIHRvIEBwIHRyYW5zcG9y dC4KKysgICAgICovCisrICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3Qg Jm1lc3NhZ2UsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisrCisr ICAgIC8qKgorKyAgICAgKiBJZiBjbGllbnQgZm9yIGdpdmVuIEBwIHRyYW5zcG9ydCBpcyBpZGxl LCBzZW5kIHF1ZXVlZCBtZXNzYWdlZCB0byBAcCB0cmFuc3BvcnQgYW5kIHRoZW4gbWFyaworKyAg ICAgKiB0aGUgY2xpZW50IGFzIG5vdCBpZGxlLgorKyAgICAgKi8KKysgICAgdm9pZCBzZW5kRW5x dWV1ZWRQcm9wZXJ0eVVwZGF0ZXMoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNw b3J0KTsKKysKKyAgICAgLyoqCisgICAgICAqIFNlcmlhbGl6ZSB0aGUgUU1ldGFPYmplY3Qgb2Yg QHAgb2JqZWN0IGFuZCByZXR1cm4gaXQgaW4gSlNPTiBmb3JtLgorICAgICAgKi8KKyAgICAgUUpz b25PYmplY3QgY2xhc3NJbmZvRm9yT2JqZWN0KGNvbnN0IFFPYmplY3QgKm9iamVjdCwgUVdlYkNo YW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKyAKKyAgICAgLyoqCistICAgICAq IFNldCB0aGUgY2xpZW50IHRvIGlkbGUgb3IgYnVzeSwgYmFzZWQgb24gdGhlIHZhbHVlIG9mIEBw IGlzSWRsZS4KKy0gICAgICoKKy0gICAgICogV2hlbiB0aGUgdmFsdWUgY2hhbmdlZCwgc3RhcnQv c3RvcCB0aGUgcHJvcGVydHkgdXBkYXRlIHRpbWVyIGFjY29yZGluZ2x5LgorKyAgICAgKiBTZXQg dGhlIGNsaWVudCB0byBpZGxlIG9yIGJ1c3kgZm9yIGEgc2luZ2xlIEBwIHRyYW5zcG9ydCwgYmFz ZWQgb24gdGhlIHZhbHVlIG9mIEBwIGlzSWRsZS4KKysgICAgICovCisrICAgIHZvaWQgc2V0Q2xp ZW50SXNJZGxlKGJvb2wgaXNJZGxlLCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFu c3BvcnQpOworKworKyAgICAvKioKKysgICAgICogQ2hlY2sgdGhhdCBjbGllbnQgaXMgaWRsZSBm b3IgQHAgdHJhbnNwb3J0LgorICAgICAgKi8KKy0gICAgdm9pZCBzZXRDbGllbnRJc0lkbGUoYm9v bCBpc0lkbGUpOworKyAgICBib29sIGlzQ2xpZW50SWRsZShRV2ViQ2hhbm5lbEFic3RyYWN0VHJh bnNwb3J0ICp0cmFuc3BvcnQpOworIAorICAgICAvKioKKyAgICAgICogSW5pdGlhbGl6ZSBjbGll bnRzIGJ5IHNlbmRpbmcgdGhlbSB0aGUgY2xhc3MgaW5mb3JtYXRpb24gb2YgdGhlIHJlZ2lzdGVy ZWQgb2JqZWN0cy4KK0BAIC0yNzIsMTAgKzI5NCwxOCBAQCBwcml2YXRlOgorICAgICBmcmllbmQg Y2xhc3MgVGVzdFdlYkNoYW5uZWw7CisgCisgICAgIFFXZWJDaGFubmVsICp3ZWJDaGFubmVsOwor LSAgICBTaWduYWxIYW5kbGVyPFFNZXRhT2JqZWN0UHVibGlzaGVyPiBzaWduYWxIYW5kbGVyOwor KyAgICBzdGQ6OnVub3JkZXJlZF9tYXA8Y29uc3QgUVRocmVhZCosIFNpZ25hbEhhbmRsZXI8UU1l dGFPYmplY3RQdWJsaXNoZXI+PiBzaWduYWxIYW5kbGVyczsKKysgICAgU2lnbmFsSGFuZGxlcjxR TWV0YU9iamVjdFB1Ymxpc2hlcj4gKnNpZ25hbEhhbmRsZXJGb3IoY29uc3QgUU9iamVjdCAqb2Jq ZWN0KTsKKyAKKy0gICAgLy8gdHJ1ZSB3aGVuIHRoZSBjbGllbnQgaXMgaWRsZSwgZmFsc2Ugb3Ro ZXJ3aXNlCistICAgIGJvb2wgY2xpZW50SXNJZGxlOworKyAgICBzdHJ1Y3QgVHJhbnNwb3J0U3Rh dGUKKysgICAgeworKyAgICAgICAgVHJhbnNwb3J0U3RhdGUoKSA6IGNsaWVudElzSWRsZShmYWxz ZSkgeyB9CisrICAgICAgICAvLyB0cnVlIHdoZW4gdGhlIGNsaWVudCBpcyBpZGxlLCBmYWxzZSBv dGhlcndpc2UKKysgICAgICAgIGJvb2wgY2xpZW50SXNJZGxlOworKyAgICAgICAgLy8gbWVzc2Fn ZXMgdG8gc2VuZAorKyAgICAgICAgUVF1ZXVlPFFKc29uT2JqZWN0PiBxdWV1ZWRNZXNzYWdlczsK KysgICAgfTsKKysgICAgUUhhc2g8UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqLCBUcmFu c3BvcnRTdGF0ZT4gdHJhbnNwb3J0U3RhdGU7CisgCisgICAgIC8vIHRydWUgd2hlbiBubyBwcm9w ZXJ0eSB1cGRhdGVzIHNob3VsZCBiZSBzZW50LCBmYWxzZSBvdGhlcndpc2UKKyAgICAgYm9vbCBi bG9ja1VwZGF0ZXM7CitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3Np Z25hbGhhbmRsZXJfcC5oIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRs ZXJfcC5oCitpbmRleCAyN2FmYWRiLi5kNzczNzNjIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVs L3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5oCisrKysgYi9xdHdlYmNoYW5uZWwvc3Jj L3dlYmNoYW5uZWwvc2lnbmFsaGFuZGxlcl9wLmgKK0BAIC01Niw2ICs1Niw3IEBACisgI2luY2x1 ZGUgPFFWZWN0b3I+CisgI2luY2x1ZGUgPFFNZXRhTWV0aG9kPgorICNpbmNsdWRlIDxRRGVidWc+ CisrI2luY2x1ZGUgPFFUaHJlYWQ+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCitAQCAtNzEs NiArNzIsNyBAQCBzdGF0aWMgY29uc3QgaW50IHNfZGVzdHJveWVkU2lnbmFsSW5kZXggPSBRT2Jq ZWN0OjpzdGF0aWNNZXRhT2JqZWN0LmluZGV4T2ZNZXRobworIHRlbXBsYXRlPGNsYXNzIFJlY2Vp dmVyPgorIGNsYXNzIFNpZ25hbEhhbmRsZXIgOiBwdWJsaWMgUU9iamVjdAorIHsKKysgICAgUV9E SVNBQkxFX0NPUFkoU2lnbmFsSGFuZGxlcikKKyBwdWJsaWM6CisgICAgIFNpZ25hbEhhbmRsZXIo UmVjZWl2ZXIgKnJlY2VpdmVyLCBRT2JqZWN0ICpwYXJlbnQgPSAwKTsKKyAKK0BAIC0yNjgsNiAr MjcwLDcgQEAgaW50IFNpZ25hbEhhbmRsZXI8UmVjZWl2ZXI+OjpxdF9tZXRhY2FsbChRTWV0YU9i amVjdDo6Q2FsbCBjYWxsLCBpbnQgbWV0aG9kSWQsIHYKKyAgICAgaWYgKGNhbGwgPT0gUU1ldGFP YmplY3Q6Okludm9rZU1ldGFNZXRob2QpIHsKKyAgICAgICAgIGNvbnN0IFFPYmplY3QgKm9iamVj dCA9IHNlbmRlcigpOworICAgICAgICAgUV9BU1NFUlQob2JqZWN0KTsKKysgICAgICAgIFFfQVNT RVJUKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSA9PSBvYmplY3QtPnRocmVhZCgpKTsKKyAgICAg ICAgIFFfQVNTRVJUKHNlbmRlclNpZ25hbEluZGV4KCkgPT0gbWV0aG9kSWQpOworICAgICAgICAg UV9BU1NFUlQobV9jb25uZWN0aW9uc0NvdW50ZXIuY29udGFpbnMob2JqZWN0KSk7CisgICAgICAg ICBRX0FTU0VSVChtX2Nvbm5lY3Rpb25zQ291bnRlci52YWx1ZShvYmplY3QpLmNvbnRhaW5zKG1l dGhvZElkKSk7CitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vcW1sL3Rlc3R3 ZWJjaGFubmVsLmNwcCBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5l bC5jcHAKK2luZGV4IDk4OTE2ODcuLjNjYTgxYzIgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwv dGVzdHMvYXV0by9xbWwvdGVzdHdlYmNoYW5uZWwuY3BwCisrKysgYi9xdHdlYmNoYW5uZWwvdGVz dHMvYXV0by9xbWwvdGVzdHdlYmNoYW5uZWwuY3BwCitAQCAtNDYsNyArNDYsMTEgQEAgVGVzdFdl YkNoYW5uZWw6On5UZXN0V2ViQ2hhbm5lbCgpCisgCisgYm9vbCBUZXN0V2ViQ2hhbm5lbDo6Y2xp ZW50SXNJZGxlKCkgY29uc3QKKyB7CistICAgIHJldHVybiBRV2ViQ2hhbm5lbDo6ZF9mdW5jKCkt PnB1Ymxpc2hlci0+Y2xpZW50SXNJZGxlOworKyAgICBmb3IgKGF1dG8gKnRyYW5zcG9ydCA6IFFX ZWJDaGFubmVsOjpkX2Z1bmMoKS0+dHJhbnNwb3J0cykgeworKyAgICAgICAgaWYgKFFXZWJDaGFu bmVsOjpkX2Z1bmMoKS0+cHVibGlzaGVyLT5pc0NsaWVudElkbGUodHJhbnNwb3J0KSkKKysgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgfQorKyAgICByZXR1cm4gZmFsc2U7CisgfQorIAor IFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93 ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmNwcCBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dl YmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwCitpbmRleCAxODFkYTllLi4zN2Y5ODlhIDEwMDY0 NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5l bC5jcHAKKysrKyBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNo YW5uZWwuY3BwCitAQCAtNzg1LDcgKzc4NSw3IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RU cmFuc3BvcnRXcmFwT2JqZWN0UHJvcGVydGllcygpCisgICAgIER1bW15VHJhbnNwb3J0ICpkdW1t eVRyYW5zcG9ydCA9IG5ldyBEdW1teVRyYW5zcG9ydCh0aGlzKTsKKyAgICAgY2hhbm5lbC5jb25u ZWN0VG8oZHVtbXlUcmFuc3BvcnQpOworICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXIt PmluaXRpYWxpemVDbGllbnQoZHVtbXlUcmFuc3BvcnQpOworLSAgICBjaGFubmVsLmRfZnVuYygp LT5wdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlKTsKKysgICAgY2hhbm5lbC5kX2Z1bmMo KS0+cHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgZHVtbXlUcmFuc3BvcnQpOworIAor ICAgICBRQ09NUEFSRShjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnRyYW5zcG9ydGVkV3Jh cHBlZE9iamVjdHMuc2l6ZSgpLCAwKTsKKyAKK0BAIC05NDMsOCArOTQzLDYgQEAgdm9pZCBUZXN0 V2ViQ2hhbm5lbDo6dGVzdEluZmluaXRlUmVjdXJzaW9uKCkKKyAKKyB2b2lkIFRlc3RXZWJDaGFu bmVsOjp0ZXN0QXN5bmNPYmplY3QoKQorIHsKKy0gICAgUVNLSVAoIlRoaXMgdGVzdCBpcyBicm9r ZW4uIFNlZSBRVEJVRy04MDcyOSIpOworLQorICAgICBRV2ViQ2hhbm5lbCBjaGFubmVsOworICAg ICBjaGFubmVsLmNvbm5lY3RUbyhtX2R1bW15VHJhbnNwb3J0KTsKKyAKK0BAIC05OTAsNiArOTg4 LDUwIEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RBc3luY09iamVjdCgpCisgICAgIHRocmVh ZC53YWl0KCk7CisgfQorIAorK3ZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RQcm9wZXJ0eU11bHRp cGxlVHJhbnNwb3J0cygpCisreworKyAgICBEdW1teVRyYW5zcG9ydCB0cmFuc3BvcnQxOworKyAg ICBEdW1teVRyYW5zcG9ydCB0cmFuc3BvcnQyOworKworKyAgICBRV2ViQ2hhbm5lbCBjaGFubmVs OworKyAgICBRTWV0YU9iamVjdFB1Ymxpc2hlciAqcHVibGlzaGVyID0gY2hhbm5lbC5kX2Z1bmMo KS0+cHVibGlzaGVyOworKworKyAgICBUZXN0T2JqZWN0IHRlc3RPYmo7CisrICAgIHRlc3RPYmou c2V0T2JqZWN0TmFtZSgidGVzdE9iamVjdCIpOworKyAgICBjaGFubmVsLnJlZ2lzdGVyT2JqZWN0 KHRlc3RPYmoub2JqZWN0TmFtZSgpLCAmdGVzdE9iaik7CisrICAgIGNoYW5uZWwuY29ubmVjdFRv KCZ0cmFuc3BvcnQxKTsKKysgICAgY2hhbm5lbC5jb25uZWN0VG8oJnRyYW5zcG9ydDIpOworKwor KyAgICB0ZXN0T2JqLnNldFByb3AoIkhlbGxvIik7CisrCisrICAgIHB1Ymxpc2hlci0+aW5pdGlh bGl6ZUNsaWVudCgmdHJhbnNwb3J0MSk7CisrICAgIHB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVu dCgmdHJhbnNwb3J0Mik7CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0 cmFuc3BvcnQxKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5z cG9ydDEpLCB0cnVlKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRy YW5zcG9ydDIpLCBmYWxzZSk7CisrICAgIFFWRVJJRlkodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQo KS5pc0VtcHR5KCkpOworKyAgICBRVkVSSUZZKHRyYW5zcG9ydDIubWVzc2FnZXNTZW50KCkuaXNF bXB0eSgpKTsKKysKKysgICAgdGVzdE9iai5zZXRQcm9wKCJXb3JsZCIpOworKyAgICBRVFJZX0NP TVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAxdSwg MjAwMCk7CisrICAgIFFDT01QQVJFKHRyYW5zcG9ydDIubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAw dSk7CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQyKTsK KysgICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9VVCh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgp LnNpemUoKSwgMXUsIDIwMDApOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRs ZSgmdHJhbnNwb3J0MSksIGZhbHNlKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVu dElkbGUoJnRyYW5zcG9ydDIpLCBmYWxzZSk7CisrCisrICAgIHRlc3RPYmouc2V0UHJvcCgiISEh Iik7CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQyKTsK KysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCB0cnVl KTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCBm YWxzZSk7CisrICAgIFFUUllfQ09NUEFSRV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0Mi5tZXNzYWdl c1NlbnQoKS5zaXplKCksIDJ1LCAyMDAwKTsKKysgICAgUUNPTVBBUkUodHJhbnNwb3J0MS5tZXNz YWdlc1NlbnQoKS5zaXplKCksIDF1KTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUo dHJ1ZSwgJnRyYW5zcG9ydDEpOworKyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5z cG9ydDEubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAydSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHB1 Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwgZmFsc2UpOworKyAgICBRQ09NUEFS RShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MiksIGZhbHNlKTsKKyt9CisrCisg Y2xhc3MgRnVuY3Rpb25XcmFwcGVyIDogcHVibGljIFFPYmplY3QKKyB7CisgICAgIFFfT0JKRUNU CitAQCAtMTA4Miw3ICsxMTI0LDcgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6YmVuY2hJbml0aWFs aXplQ2xpZW50cygpCisgCisgICAgICAgICBwdWJsaXNoZXItPnByb3BlcnR5VXBkYXRlc0luaXRp YWxpemVkID0gZmFsc2U7CisgICAgICAgICBwdWJsaXNoZXItPnNpZ25hbFRvUHJvcGVydHlNYXAu Y2xlYXIoKTsKKy0gICAgICAgIHB1Ymxpc2hlci0+c2lnbmFsSGFuZGxlci5jbGVhcigpOworKyAg ICAgICAgcHVibGlzaGVyLT5zaWduYWxIYW5kbGVycy5jbGVhcigpOworICAgICB9CisgfQorIAor QEAgLTExMDcsNyArMTE0OSw3IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OmJlbmNoUHJvcGVydHlV cGRhdGVzKCkKKyAgICAgICAgICAgICBvYmotPmNoYW5nZSgpOworICAgICAgICAgfQorIAorLSAg ICAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5jbGllbnRJc0lkbGUgPSB0cnVlOwor KyAgICAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1 ZSwgbV9kdW1teVRyYW5zcG9ydCk7CisgICAgICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNo ZXItPnNlbmRQZW5kaW5nUHJvcGVydHlVcGRhdGVzKCk7CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0 IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oIGIv cXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oCitpbmRl eCBlYWUyMWY0Li5kZDRlNjkwIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8v d2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oCisrKysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0 by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmgKK0BAIC0zNDgsNiArMzQ4LDcgQEAgcHJpdmF0 ZSBzbG90czoKKyAgICAgdm9pZCB0ZXN0SnNvblRvVmFyaWFudCgpOworICAgICB2b2lkIHRlc3RJ bmZpbml0ZVJlY3Vyc2lvbigpOworICAgICB2b2lkIHRlc3RBc3luY09iamVjdCgpOworKyAgICB2 b2lkIHRlc3RQcm9wZXJ0eU11bHRpcGxlVHJhbnNwb3J0cygpOworICAgICB2b2lkIHRlc3REZWxl dGlvbkR1cmluZ01ldGhvZEludm9jYXRpb25fZGF0YSgpOworICAgICB2b2lkIHRlc3REZWxldGlv bkR1cmluZ01ldGhvZEludm9jYXRpb24oKTsKKyAKK1N1Ym1vZHVsZSBxdHdlYmVuZ2luZSBmMzI4 MDU0ZC4uLjM4ZTBkZjZjIChjb21taXRzIG5vdCBwcmVzZW50KQorU3VibW9kdWxlIHF0d2Vic29j a2V0cyA2NTg1MDk1NC4uNjNmYjhkYTE6CitkaWZmIC0tZ2l0IGEvcXR3ZWJzb2NrZXRzL3NyYy93 ZWJzb2NrZXRzL3F3ZWJzb2NrZXRkYXRhcHJvY2Vzc29yLmNwcCBiL3F0d2Vic29ja2V0cy9zcmMv d2Vic29ja2V0cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAKK2luZGV4IDJhZmZkZDUuLjk1 ZjExOTQgMTAwNjQ0CistLS0gYS9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tl dGRhdGFwcm9jZXNzb3IuY3BwCisrKysgYi9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdl YnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwCitAQCAtMjczLDYgKzI3Myw3IEBAIHZvaWQgUVdlYlNv Y2tldERhdGFQcm9jZXNzb3I6OmNsZWFyKCkKKyAgICAgaWYgKCFtX3BDb252ZXJ0ZXJTdGF0ZSkK KyAgICAgICAgIG1fcENvbnZlcnRlclN0YXRlID0gbmV3IFFUZXh0Q29kZWM6OkNvbnZlcnRlclN0 YXRlKFFUZXh0Q29kZWM6OkNvbnZlcnRJbnZhbGlkVG9OdWxsIHwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFUZXh0Q29kZWM6Okln bm9yZUhlYWRlcik7CisrICAgIGZyYW1lLmNsZWFyKCk7CisgfQorIAorIC8qIQorZGlmZiAtLWdp dCBhL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwIGIv cXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRwcm90b2NvbC5jcHAKK2luZGV4 IGRmODdhOTMuLmQwNDY1ZjEgMTAwNjQ0CistLS0gYS9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tl dHMvcXdlYnNvY2tldHByb3RvY29sLmNwcAorKysrIGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2Nr ZXRzL3F3ZWJzb2NrZXRwcm90b2NvbC5jcHAKK0BAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBRV2Vi U29ja2V0UHJvdG9jb2w6Om1hc2soY2hhciAqcGF5bG9hZCwgcXVpbnQ2NCBzaXplLCBxdWludDMy IG1hc2tpbmdLZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aW50OCgobWFza2lu Z0tleSAmIDB4MDAwMEZGMDB1KSA+PiA4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cXVpbnQ4KChtYXNraW5nS2V5ICYgMHgwMDAwMDBGRnUpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgfTsKKy0gICAgaW50IGkgPSAwOworKyAgICBxdWludDY0IGkgPSAwOworICAgICB3aGls ZSAoc2l6ZS0tID4gMCkKKyAgICAgICAgICpwYXlsb2FkKysgXj0gbWFza1tpKysgJSA0XTsKKyB9 CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRl CmluZGV4IGUwNDYzZTFjOTE5OC4uOGUwOTEwOTFiODc4IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0 NS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQpAQCAtMiw3ICsyLDkgQEAKICMK ICMgcmV2YnVtcCBsaWJxdHhkZyBhZnRlciBidW1waW5nIHBhdGNoIHZlcnNpb24KIHBrZ25hbWU9 cXQ1Ci12ZXJzaW9uPTUuMTUuNysyMDIyMTExOQordmVyc2lvbj01LjE1LjgKK3JldmlzaW9uPTEK K2J1aWxkX3N0eWxlPW1ldGEKICMgY29tbWl0IGY4YzlmYjMwNGJjM2U1M2IzYWEwN2Y5NjJjZDc0 ZTkxNjBkZWNjY2MKICMgYmFzZSByZXBvOiBodHRwczovL2ludmVudC5rZGUub3JnL3F0L3F0L3F0 NQogcmV2aXNpb249NApAQCAtMjksOCArMzEsOSBAQCBob21lcGFnZT0iaHR0cHM6Ly9xdC5pby8i CiAjIHRhcmJhbGwgaXMgZ2VuZXJhdGVkIHdpdGggYGdpdCBhcmNoaXZlLWFsbCBxdDUtJHZlcnNp b24udGFyLmd6YAogIyB0byBrZWVwIHRoZSBzaXplIHNtYWxsZXIgcXR3ZWJlbmdpbmUsIHF0d2Vi dmlldywgcXRkb2NnYWxsZXJ5LCBxdGFjdGl2ZXF0IGFuZCBxdHBpbQogIyBjYW4gYmUgbWFya2Vk IHdpdGggdGhlIGV4cG9ydC1pZ25vcmUgYXR0cmlidXRlCi1kaXN0ZmlsZXM9Imh0dHBzOi8vdm9p ZC5qb2hubnluYXRvci5kZXYvZGlzdGZpbGVzL3F0NS0ke3ZlcnNpb259LnRhci5neiIKLWNoZWNr c3VtPTlkNTdhZjQ3MWM3ODAyOWEzNjIyNzZiN2M5OTEwOGVhMDA5ZjUxMWJiOWJhNmZmNmNiODg0 ZjZkZGQyNTVlOWYKKyNkaXN0ZmlsZXM9Imh0dHBzOi8vdm9pZC5qb2hubnluYXRvci5kZXYvZGlz dGZpbGVzL3F0NS0ke3ZlcnNpb259LnRhci5neiIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9kb3dubG9h ZC5xdC5pby9hcmNoaXZlL3F0LzUuMTUvJHt2ZXJzaW9ufS9zaW5nbGUvcXQtZXZlcnl3aGVyZS1v cGVuc291cmNlLXNyYy0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNrc3VtPTc3NmE5MzAyYzMzNjY3 MWY5NDA2YTUzYmQzMGI4ZTM2ZjgyNTc0MmIyZWM0NGE1N2MwODIxN2JmZjBmYTg2YjkKIHB5dGhv bl92ZXJzaW9uPTIgI3VudmVyaWZpZWQKIHJlcGxhY2VzPSJxdDUtZG9jPDUuNi4wIHF0NS1xdWlj azE8NS42LjAgcXQ1LXF1aWNrMS1kZXZlbDw1LjYuMCBxdDUtd2Via2l0PDUuNi4wIHF0NS13ZWJr aXQtZGV2ZWw8NS42LjAKICBxdDUtZW5naW5pbzw1LjcuMSBxdDUtZW5naW5pby1kZXZlbDw1Ljcu MSBxdDUtcGx1Z2luLWd0azw1LjcuMSBxdDUtY2FudmFzM2Q8NS4xMy4wIgpAQCAtMjQ4LDcgKzI1 MSw2IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkjIG9wdHMrPSIgLXYiCiAJb3B0cys9IiAtc2tpcCBx dHdlYmVuZ2luZSIKIAlvcHRzKz0iIC1za2lwIHF0d2VidmlldyIKLQlvcHRzKz0iIC1za2lwIHF0 ZG9jZ2FsbGVyeSIKIAlvcHRzKz0iIC1za2lwIHF0cGltIgogCW9wdHMrPSIgLXNraXAgcXRzeXN0 ZW1zIgogCW9wdHMrPSIgLXNraXAgcXRzcGVlY2giCgpGcm9tIGNlNjE3OTEwNTc3YzZiNjZmY2E5 ODkyNDE3ODhjNTA2ZWNhMDM1MTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0 MDAKU3ViamVjdDogW1BBVENIIDA3OC8xNDBdIHF0Ni1tdWx0aW1lZGlhOiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlIGIvc3JjcGtncy9xdDYtbXVsdGltZWRp YS90ZW1wbGF0ZQppbmRleCBkODllN2Q1NGViNWEuLmFhZTE1ZTU3Y2E3YiAxMDA2NDQKLS0tIGEv c3JjcGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0Ni1tdWx0aW1l ZGlhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ2LW11 bHRpbWVkaWEnCiBwa2duYW1lPXF0Ni1tdWx0aW1lZGlhCiB2ZXJzaW9uPTYuNC4yCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EUVRf RkVBVFVSRV9nc3RyZWFtZXI9T04iCiBob3N0bWFrZWRlcGVuZHM9InBlcmwgcXQ2LWRlY2xhcmF0 aXZlLWhvc3QtdG9vbHMgcGtnLWNvbmZpZyBxdDYtc2hhZGVydG9vbHMiCgpGcm9tIGMwZjllYjM5 YmU4NGI1MzY5NjJlMzQyNGQzNDNjMTYxZDY0MTllMDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3OS8xNDBdIHF0YXY6IHJldmJ1bXAgZm9y IGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9xdGF2L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZp bGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZQppbmRleCAzNGMz MGIyYzBjNzguLjJkMDBhZDEwNDM1NSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdGF2L3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAncXRhdicKIHBrZ25hbWU9cXRhdgogdmVyc2lvbj0xLjEzLjAKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFrZWRlcGVuZHM9InF0NS1x bWFrZSBxdDUtaG9zdC10b29scyIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGliYXNzLWRl dmVsIGxpYm9wZW5hbC1kZXZlbAorbWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgbGliYXNzLWRl dmVsIGxpYm9wZW5hbC1kZXZlbAogIGxpYnZhLWdseC1kZXZlbCBsaWJYdi1kZXZlbCBwdWxzZWF1 ZGlvLWRldmVsCiAgcXQ1LWRlY2xhcmF0aXZlLWRldmVsIHF0NS1zdmctZGV2ZWwKICBxdDUtcXVp Y2tjb250cm9scyIKCkZyb20gMzgxOWRlNWJkYmRlNDRlYzY2ZmM3ZjViMmZmODU0MGM1YTE4ZjVj MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDgwLzE0MF0gcXRveDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3F0b3gv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0b3gvdGVtcGxhdGUgYi9zcmNwa2dzL3F0b3gv dGVtcGxhdGUKaW5kZXggMTYwMTlkN2VhZWM5Li41Y2VhMGIxMWI2OTcgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvcXRveC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0b3gvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdG94JwogcGtnbmFtZT1xdG94CiB2ZXJzaW9u PTEuMTcuNgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZp Z3VyZV9hcmdzPSItRFVQREFURV9DSEVDSz1PRkYKICAtREdJVF9ERVNDUklCRT0ke3ZlcnNpb259 CgpGcm9tIDZhYWZkMzk4NTllZTk1NDM1ZTgxYWNiMGUyNmE1YjMxOTY4MGFkMmMgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4MS8xNDBdIHJl dHJvYXJjaDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3JldHJvYXJjaC90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcmV0cm9hcmNoL3RlbXBsYXRlIGIvc3JjcGtncy9y ZXRyb2FyY2gvdGVtcGxhdGUKaW5kZXggMjQwZDNkZjlkYjAwLi42ZDBiMTZhZTI1OTggMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvcmV0cm9hcmNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcmV0cm9hcmNo L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncmV0cm9hcmNo JwogcGtnbmFtZT1yZXRyb2FyY2gKIHZlcnNpb249MS4xNC4wCi1yZXZpc2lvbj0xCityZXZpc2lv bj0yCiBidWlsZF9zdHlsZT1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLXByZWZpeD0vdXNy IC0tc3lzY29uZmRpcj0vZXRjIC0tZW5hYmxlLW5ldHdvcmtpbmcKICAtLWVuYWJsZS11ZGV2IC0t ZGlzYWJsZS1idWlsdGluZmxhYyAtLWRpc2FibGUtYnVpbHRpbmdsc2xhbmcKCkZyb20gNDU1YWNh OTgzOGQ4Y2JlMTE2ZjBmY2ZiOTJiNGE3N2U4MDM5YjJiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDgyLzE0MF0gc2NyY3B5OiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9zY3JjcHkvdGVtcGxhdGUgYi9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQppbmRleCBl ZTZlNjk4ZTM4N2YuLjhhZGE1Y2E0MzIzZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9zY3JjcHkvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdzY3JjcHknCiBwa2duYW1lPXNjcmNweQogdmVyc2lvbj0yLjAKLXJl dmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0i LURjb21waWxlX3NlcnZlcj1mYWxzZQogIC1EcHJlYnVpbHRfc2VydmVyPS91c3Ivc2hhcmUvc2Ny Y3B5L3NjcmNweS1zZXJ2ZXItdiR7dmVyc2lvbn0iCgpGcm9tIGExNjU2MzU5ZTkwYjk2NmVmNGIw YWQ0ZWExYzMzYTA2ZjA2ZjlmYjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0 MDAKU3ViamVjdDogW1BBVENIIDA4My8xNDBdIHNwZWstYWx0ZXJuYXRpdmU6IHJldmJ1bXAgZm9y IGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlIHwg NiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlIGIvc3JjcGtn cy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlCmluZGV4IGQ2NTA4NmI4ZjAwOC4uMDUyNDZmMWI4 ZDBjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdzcGVrLWFsdGVybmF0aXZlJwogcGtnbmFtZT1zcGVrLWFsdGVybmF0 aXZlCiB2ZXJzaW9uPTAuOC4yLjMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgZ2V0dGV4dC1kZXZlbCBp bnRsdG9vbCBsaWJ0b29sIHBrZy1jb25maWcgd3hXaWRnZXRzLWNvbW1vbiIKLW1ha2VkZXBlbmRz PSJmZm1wZWctZGV2ZWwgd3hXaWRnZXRzLWd0azMtZGV2ZWwiCi1kZXBlbmRzPSJmZm1wZWciCitt YWtlZGVwZW5kcz0iZmZtcGVnNC1kZXZlbCB3eFdpZGdldHMtZ3RrMy1kZXZlbCIKK2RlcGVuZHM9 ImZmbXBlZzQiCiBzaG9ydF9kZXNjPSJBY291c3RpYyBzcGVjdHJ1bSBhbmFseXNlciIKIG1haW50 YWluZXI9IkthcnRpayBTaW5naCA8a2FydGlrLnlud2FAZ21haWwuY29tPiIKIGxpY2Vuc2U9IkdQ TC0zLjAtb3ItbGF0ZXIiCgpGcm9tIDIwNjg2ZDlmMDQ1MWJkYjFkM2M2MTFhNGI1ZmY2ZDljOTdj MTgyNGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BB VENIIDA4NC8xNDBdIHNzcjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dz L3Nzci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Nzci90ZW1wbGF0ZSBiL3NyY3Br Z3Mvc3NyL3RlbXBsYXRlCmluZGV4IGIwNTViOWVjMDc3NC4uMzQ0OGNhMTEwZWIwIDEwMDY0NAot LS0gYS9zcmNwa2dzL3Nzci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Nzci90ZW1wbGF0ZQpAQCAt MSwxMSArMSwxMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc3NyJwogcGtnbmFtZT1zc3IKIHZl cnNpb249MC40LjQKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBj b25maWd1cmVfYXJncz0iLURXSVRIX1FUNT1PTiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZp ZyIKLW1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWctZGV2ZWwgZ2x1LWRldmVsIGph Y2stZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAorbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZm bXBlZzQtZGV2ZWwgZ2x1LWRldmVsIGphY2stZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAogIHF0NS10 b29scy1kZXZlbCBxdDUteDExZXh0cmFzLWRldmVsIGxpYlhpbmVyYW1hLWRldmVsIHY0bC11dGls cy1kZXZlbCIKIGRlcGVuZHM9ImRlc2t0b3AtZmlsZS11dGlscyBoaWNvbG9yLWljb24tdGhlbWUi CiBzaG9ydF9kZXNjPSJTaW1wbGUgU2NyZWVuIFJlY29yZGVyIGZvciBwcm9ncmFtcyBhbmQgZ2Ft ZXMiCgpGcm9tIDBlN2I4MTA1M2U3YmZmMzU1Yjc1ZDUwZmUyNWI3MDVhOTIyOGYxMzggTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4NS8xNDBd IHN1bW86IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9zdW1vL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9zdW1vL3RlbXBsYXRlIGIvc3JjcGtncy9zdW1vL3RlbXBsYXRl CmluZGV4IDBmOWI5ZWM4MTVmNS4uYTNmZTEzNGFhNWFjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3N1 bW8vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zdW1vL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnc3VtbycKIHBrZ25hbWU9c3VtbwogdmVyc2lvbj0xLjEyLjAK LXJldmlzaW9uPTUKK3JldmlzaW9uPTYKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVu ZHM9ImxpYmdkYWwtdG9vbHMgcGtnLWNvbmZpZyBzd2lnIHB5dGhvbjMtc2V0dXB0b29scyIKIG1h a2VkZXBlbmRzPSJweXRob24zLWRldmVsIGZmbXBlZy1kZXZlbCBmb3gtZGV2ZWwgZ2wycHMtZGV2 ZWwgbGliZ2RhbC1kZXZlbAoKRnJvbSBiODg5ZDI0YTA1NjQ4MDY0MjlkNzU1NTJkNjZkYWFkYzQ5 NzEyMDU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwODYvMTQwXSBzeW5maWc6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3Jj cGtncy9zeW5maWcvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZSBi L3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlCmluZGV4IDVmNWY1YmIzZjRiMi4uOWI0ZDlhZGYwOWM2 IDEwMDY0NAotLS0gYS9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3N5bmZp Zy90ZW1wbGF0ZQpAQCAtNyw3ICs3LDcgQEAgYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29u ZmlndXJlX2FyZ3M9Ii0td2l0aC1ib29zdC1saWJkaXI9JHtYQlBTX0NST1NTX0JBU0V9L3Vzci9s aWIiCiBob3N0bWFrZWRlcGVuZHM9ImJvb3N0LWJ1aWxkIEltYWdlTWFnaWNrIHBrZy1jb25maWcg aW50bHRvb2wiCiBtYWtlZGVwZW5kcz0iRVRMIGdldHRleHQtZGV2ZWwgbGlieG1sKystZGV2ZWwg bWx0LWRldmVsIGxpYm1hZ2ljay1kZXZlbAotIGxpYm1uZy1kZXZlbCBib29zdC1idWlsZCBib29z dC1kZXZlbCBsaWJvcGVuZXhyLWRldmVsIGZmbXBlZy1kZXZlbCIKKyBsaWJtbmctZGV2ZWwgYm9v c3QtYnVpbGQgYm9vc3QtZGV2ZWwgbGlib3BlbmV4ci1kZXZlbCBmZm1wZWc0LWRldmVsIgogZGVw ZW5kcz0iSW1hZ2VNYWdpY2siCiBzaG9ydF9kZXNjPSJDTEkgMkQgdmVjdG9yIGFuZCB0aW1lbGlu ZS1iYXNlZCBhbmltYXRpb24gc29mdHdhcmUiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFu QHZvaWRsaW51eC5vcmc+IgoKRnJvbSA4ZGUzZjlhOGRiN2I0YTAzZDAwM2JiMGRiNTIwZmE0ZjA3 Yzk2YjhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwODcvMTQwXSB0ZWxlZ3JhbS1kZXNrdG9wOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv dGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1w bGF0ZQppbmRleCBhYWU5ZjMxMzUxMDAuLjc5NDNiMzZmMGI4YSAxMDA2NDQKLS0tIGEvc3JjcGtn cy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3Rv cC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RlbGVncmFt LWRlc2t0b3AnCiBwa2duYW1lPXRlbGVncmFtLWRlc2t0b3AKIHZlcnNpb249NC42LjUKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBidWlsZF9oZWxwZXI9InFlbXUi CiBjb25maWd1cmVfYXJncz0iLURUREVTS1RPUF9BUElfSUQ9MjA5MjM1CgpGcm9tIGIwYjVkMzA0 MWU1OTJiZDJmOGNmODQ0OTZhNDBkY2Y2NzJlMWEyNWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4OC8xNDBdIHRnX293dDogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RnX293dC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvdGdfb3d0L3RlbXBsYXRlIGIvc3JjcGtncy90Z19vd3QvdGVtcGxhdGUKaW5kZXggOTdk MTk1ZGRiMzRhLi41NTE2MTRiMjQ5NTYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAndGdfb3d0JwogcGtnbmFtZT10Z19vd3QKIHZlcnNpb249MC4wLjAuMjAy MzAxMDcKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9jb21taXQ9NTA5ODczMGI5ZWI2MTczZjBi NTIwNjhmZTI1NTViN2MxMDE1MTIzYQogX2xpYnl1dl9jb21taXQ9MDA5NTA4NDBkMWM5YmNiYjNl YjZlYmM1YWFjNTc5M2U3MTE2NmM4YgogX2Fic2VpbF9jb21taXQ9OGMwYjk0ZTc5M2E2NjQ5NWUw YjFmMzRhNWViMjZiZDdkYzY3MmRiMAoKRnJvbSA4MDkzYWRhZjFmZDkwNzVmNzYwZmJmODQwMTg4 YTJhZmNiYWI0MWUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwODkvMTQwXSB0aW1nOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvdGltZy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvdGltZy90ZW1wbGF0ZQppbmRleCA5MWYxNTE2YjI1OTcuLjMzNDQ0M2QzZjliYiAxMDA2 NDQKLS0tIGEvc3JjcGtncy90aW1nL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGltZy90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RpbWcnCiBwa2duYW1lPXRp bWcKIHZlcnNpb249MS40LjQKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNt YWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRIX09QRU5TTElERV9TVVBQT1JUPW9mZiAtV25vLWRl diIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBnaXQiCgpGcm9tIGNmZTc2MDRjZDBhZGM2 OTgzNDA4Yzk2M2RkNGEzNzdhMmI3MjIzOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5MC8xNDBdIHR2aGVhZGVuZDogcmV2YnVtcCBmb3Ig ZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZSB8IDQgKystLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZSBiL3NyY3BrZ3MvdHZoZWFkZW5kL3RlbXBs YXRlCmluZGV4IGU2YjE2ZDdjY2YzYi4uNDZiNTJiNmZiN2Y5IDEwMDY0NAotLS0gYS9zcmNwa2dz L3R2aGVhZGVuZC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQpAQCAt MSwxNCArMSwxNCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndHZoZWFkZW5kJwogcGtnbmFtZT10 dmhlYWRlbmQKIHZlcnNpb249NC4yLjgKLXJldmlzaW9uPTYKK3JldmlzaW9uPTcKIGJ1aWxkX3N0 eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1kdmJzY2FuIC0tZGlz YWJsZS1mZm1wZWdfc3RhdGljCiAtLWRpc2FibGUtaGRob21lcnVuX3N0YXRpYyAtLWRpc2FibGUt YmludHJheV9jYWNoZSAtLWRpc2FibGUtbGlieDI2NF9zdGF0aWMKIC0tZGlzYWJsZS1saWJ4MjY1 X3N0YXRpYyAtLWRpc2FibGUtbGlidnB4X3N0YXRpYyAtLWRpc2FibGUtbGlidGhlb3JhX3N0YXRp YwogLS1kaXNhYmxlLWxpYnZvcmJpc19zdGF0aWMgLS1kaXNhYmxlLWxpYmZka2FhY19zdGF0aWMi CiBob3N0bWFrZWRlcGVuZHM9ImdldHRleHQgcGtnLWNvbmZpZyBweXRob24gZ2l0IHdoaWNoIgot bWFrZWRlcGVuZHM9ImF2YWhpLWxpYnMtZGV2ZWwgb3BlbnNzbC1kZXZlbCB6bGliLWRldmVsIGxp YmN1cmwtZGV2ZWwgZmZtcGVnLWRldmVsIgorbWFrZWRlcGVuZHM9ImF2YWhpLWxpYnMtZGV2ZWwg b3BlbnNzbC1kZXZlbCB6bGliLWRldmVsIGxpYmN1cmwtZGV2ZWwgZmZtcGVnNC1kZXZlbCIKIHNo b3J0X2Rlc2M9IlRWIHN0cmVhbWluZyBzZXJ2ZXIiCiBtYWludGFpbmVyPSJsZW1taSA8bGVtbWlA bmVyZDJuZXJkLm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9ubHkiCgpGcm9tIDk4ZjkzZjg1NTE4 MjM1MmNmODY2MGUyM2YwYjYxMDA0MDM1MzRiZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5MS8xNDBdIHVucGFwZXI6IHVwZGF0ZSB0byA3 LjAuMC4KCi0tLQogc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlIHwgMTYgKysrKysrKystLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3VucGFwZXIvdGVtcGxhdGUgYi9zcmNwa2dzL3VucGFwZXIvdGVtcGxh dGUKaW5kZXggMzhlZDQ3YTU4NDAxLi4xZmY5MTBlNzIyYWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv dW5wYXBlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3VucGFwZXIvdGVtcGxhdGUKQEAgLTEsMTMg KzEsMTMgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3VucGFwZXInCiBwa2duYW1lPXVucGFwZXIK LXZlcnNpb249Ni4xCi1yZXZpc2lvbj0zCi1idWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCit2ZXJz aW9uPTcuMC4wCityZXZpc2lvbj0xCitidWlsZF9zdHlsZT1tZXNvbgoraG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIG1lc29uIGxpYnhzbHQiCittYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHB5 dGhvbjMtU3BoaW54Igorc2hvcnRfZGVzYz0iUG9zdC1wcm9jZXNzaW5nIHRvb2wgZm9yIHNjYW5u ZWQgc2hlZXRzIG9mIHBhcGVyIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGlu dXgub3JnPiIKLWhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBsaWJ4c2x0IgotbWFrZWRlcGVu ZHM9ImZmbXBlZy1kZXZlbCIKLWxpY2Vuc2U9IkdQTC0yIgorbGljZW5zZT0iR1BMLTIuMC1vci1s YXRlciIKIGhvbWVwYWdlPSJodHRwczovL3d3dy5mbGFtZWV5ZXMuZXUvcHJvamVjdHMvdW5wYXBl ciIKLXNob3J0X2Rlc2M9IkEgcG9zdC1wcm9jZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRz IG9mIHBhcGVyIgogZGlzdGZpbGVzPSJodHRwczovL3d3dy5mbGFtZWV5ZXMuZXUvZmlsZXMvJHtw a2duYW1lfS0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3VtPTIzN2M4NGY1ZGE1NDRiM2Y3NzA5 ODI3ZjlmMTJjMzdjMzQ2Y2RmMDI5YjExMjhmYjQ2MzNmOWJhZmE1Y2I5MzAKK2NoZWNrc3VtPTI1 NzVmYmJmMjZjMjI3MTlkMWNiODgyYjU5NjAyYzk5MDBjN2Y3NDcxMThhYzEzMDg4M2Y2MzQxOWJl NDZhODAKCkZyb20gYTIzNDQ2MmIzMjM0OTcwNjYwNzZiYjQzYjZkYmFhZjFmMGY2YjU5MCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkyLzE0 MF0gdmJhLW06IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy92YmEtbS90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUgYi9zcmNwa2dzL3ZiYS1tL3Rl bXBsYXRlCmluZGV4IGJhMTUzZTBiNThjYS4uYWE2MDkzNjQ1ZTk3IDEwMDY0NAotLS0gYS9zcmNw a2dzL3ZiYS1tL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUKQEAgLTIsNyAr Miw3IEBACiBwa2duYW1lPXZiYS1tCiByZXZlcnRzPTEyOTJfMgogdmVyc2lvbj0yLjEuNQotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIt REVOQUJMRV9HVEs9VFJVRSAtREVOQUJMRV9GRk1QRUc9VFJVRSAtREVOQUJMRV9MSU5LPVRSVUUg LURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCiBob3N0bWFrZWRlcGVuZHM9ImdldHRleHQgcGtn LWNvbmZpZyB1bnppcCB6aXAgeWFzbSB3eFdpZGdldHMtZ3RrMy1kZXZlbCIKCkZyb20gNmZmOWJm Y2QwZGQ0M2Q1YWFhMWNmZTc0ZmZkNWQ5OThhMjY0YTA5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkzLzE0MF0gdmljZTogcmV2YnVtcCBm b3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3ZpY2UvdGVtcGxhdGUgfCA0ICsrLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy92aWNlL3RlbXBsYXRlIGIvc3JjcGtncy92aWNlL3RlbXBsYXRlCmluZGV4IDA5 MjQ3NjdjZmNmYi4uNTk4MWU0NTE0OWQwIDEwMDY0NAotLS0gYS9zcmNwa2dzL3ZpY2UvdGVtcGxh dGUKKysrIGIvc3JjcGtncy92aWNlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAndmljZScKIHBrZ25hbWU9dmljZQogdmVyc2lvbj0zLjUKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIK IAkkKHZvcHRfZW5hYmxlIHNkbDIgc2RsdWkyKQpAQCAtMjgsNyArMjgsNyBAQCBtYWtlZGVwZW5k cz0iCiAJJCh2b3B0X2lmIGd0azMgZ3RrKzMtZGV2ZWwpCiAJJCh2b3B0X2lmIGd0azMgcHVsc2Vh dWRpby1kZXZlbCkKIAkkKHZvcHRfaWYgZ3RrMyBwYW5nby1kZXZlbCkKLQkkKHZvcHRfaWYgZmZt cGVnIGZmbXBlZy1kZXZlbCkiCisJJCh2b3B0X2lmIGZmbXBlZyBmZm1wZWc0LWRldmVsKSIKIHNo b3J0X2Rlc2M9IkVtdWxhdG9yIGZvciBDNjQsIEMxMjgsIENCTS1JSSwgUEVULCBWSUMyMCwgUGx1 czQgYW5kIEMxNiIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4i CiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyIgoKRnJvbSAzMDhlMTlmMDJkMWUxODU3MTEyYWIx N2UyMDk5MDM5NmY5YjVjNDc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwOTQvMTQwXSB3YXlwaXBlOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2F5cGlw ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZQppbmRleCA1YzQxNjE5MDAwNjAu LjFhNDZmZTI3ZjdkOCAxMDA2NDQKLS0tIGEvc3JjcGtncy93YXlwaXBlL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3dheXBpcGUnCiBwa2duYW1lPXdheXBpcGUKIHZlcnNpb249MC44LjQKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiAjIGx0byBpcyBvZmYgYmVjYXVzZSBp dCBjYXVzZXMgbGlua2luZyBlcnJvcnMgaW4gYXJtdjZsIGFuZCBhcm12N2wgKGR1ZSB0byBORU9O KQogY29uZmlndXJlX2FyZ3M9Ii1Ed2Vycm9yPWZhbHNlIC1Ed2l0aF9kbWFidWY9ZW5hYmxlZCAt RHdpdGhfbHo0PWVuYWJsZWQKCkZyb20gMzkxNmVhYTFmYjdhNjQ0M2EwMWYyMjAzNTM4ODMzYmY5 M2ZmY2U3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDk1LzE0MF0gd2YtcmVjb3JkZXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2YtcmVjb3Jk ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlCmluZGV4IGUyNzhlYjAw MTYwMC4uNWQwMTRhNWYyOGFmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICd3Zi1yZWNvcmRlcicKIHBrZ25hbWU9d2YtcmVjb3JkZXIKIHZl cnNpb249MC4zLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgc2Nkb2Mgd2F5bGFuZC1kZXZlbCIKIG1ha2VkZXBl bmRzPSJ3YXlsYW5kLXByb3RvY29scyB3YXlsYW5kLWRldmVsIGZmbXBlZy1kZXZlbCB4MjY0LWRl dmVsCgpGcm9tIDBmNzc0MDg1NjE2ZjlkYzYwYWQ4Y2QzMmQyN2M1Mjc3M2JhM2EyNTEgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5Ni8xNDBd IHhwcmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy94cHJhL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy94cHJhL3RlbXBsYXRlIGIvc3JjcGtncy94cHJhL3RlbXBsYXRl CmluZGV4IDM4ZjgzMjgzYjFlNS4uYjZlMDFmZjBhODEzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3hw cmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy94cHJhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAneHByYScKIHBrZ25hbWU9eHByYQogdmVyc2lvbj00LjQuNAot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUKIG1ha2Vf YnVpbGRfYXJncz0iLS13aXRob3V0LWN1ZGFfa2VybmVscyAtLXdpdGhvdXQtY3VkYV9yZWJ1aWxk IgogbWFrZV9pbnN0YWxsX2FyZ3M9IiQodm9wdF93aXRoIGRvY3MpICR7bWFrZV9idWlsZF9hcmdz fSIKCkZyb20gOTYzN2RmMmZkMjMxYjdlN2EyNzBlMmVmZjZkZDVmMDdhYTViMDM2NCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog RnJpLCAzMSBNYXIgMjAyMyAwOTowNzo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk3LzE0MF0g bnYtY29kZWMtaGVhZGVyczogdXBkYXRlIHRvIDEyLjAuMTYuMAoKLS0tCiBzcmNwa2dzL252LWNv ZGVjLWhlYWRlcnMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9udi1jb2RlYy1oZWFk ZXJzL3RlbXBsYXRlIGIvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCmluZGV4IDNk NDIyYTYxZTQ4OS4uMjUxZTA1N2Y4MjZmIDEwMDY0NAotLS0gYS9zcmNwa2dzL252LWNvZGVjLWhl YWRlcnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCkBA IC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbnYtY29kZWMtaGVhZGVycycKIHBr Z25hbWU9bnYtY29kZWMtaGVhZGVycwotdmVyc2lvbj0xMS4xLjUuMQordmVyc2lvbj0xMi4wLjE2 LjAKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogc2hvcnRfZGVzYz0iRkZt cGVnIHZlcnNpb24gb2YgaGVhZGVycyByZXF1aXJlZCB0byBpbnRlcmZhY2Ugd2l0aCBOdmlkaWFz IGNvZGVjIEFQSXMiCkBAIC04LDcgKzgsNyBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFu QHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHA6Ly9naXQudmlk ZW9sYW4ub3JnLz9wPWZmbXBlZy9udi1jb2RlYy1oZWFkZXJzLmdpdCIKIGRpc3RmaWxlcz0iaHR0 cHM6Ly9naXRodWIuY29tL0ZGbXBlZy9udi1jb2RlYy1oZWFkZXJzL2FyY2hpdmUvbiR7dmVyc2lv bn0udGFyLmd6IgotY2hlY2tzdW09ZDA5NWZiZDU2YWE5Mzc3MjQ3MWEzMjNiZTBlYmU2NTUwNGEw ZjQzZjA2Yzc2YTMwYjZkMjVkYTc3YjA2YWU5YworY2hlY2tzdW09MmExNTMzYjY1ZjU1ZjlkYTUy OTU2ZmFmMDYyN2VkM2I3NDg2OGFjMGM3ZjI2OTk5MGVkZDIxMzY5MTEzYjQ4ZgogCiBwb3N0X2lu c3RhbGwoKSB7CiAJc2VkIC1uICc0LDI1cCcgaW5jbHVkZS9mZm52Y29kZWMvbnZFbmNvZGVBUEku aCA+IExJQ0VOU0UKCkZyb20gNjYyNTllYWU5ZDBlMjk0NzEwNjZmMjE1OGM0NWVhY2FiYjcwZGJl ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAzMSBNYXIgMjAyMyAwOTowODo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDk4LzE0MF0gb3BlbmltYWdlZGVub2lzZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5p bWFnZWRlbm9pc2UvdGVtcGxhdGUgYi9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUK aW5kZXggZGI1Y2NkYjA1NWNjLi5jYjkwMDQ1YWZiNjMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3Bl bmltYWdlZGVub2lzZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuaW1hZ2VkZW5v aXNlJwogcGtnbmFtZT1vcGVuaW1hZ2VkZW5vaXNlCiB2ZXJzaW9uPTEuNC4zCi1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBhcmNocz0ieDg2XzY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFr ZWRlcGVuZHM9ImlzcGMgcHl0aG9uMyIKCkZyb20gYTg4YjQyZWU0MjUwMzBmZGUxOWU0ZTZiZGE0 YzBmMjEwY2YzZGU3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAxOSBNYXIgMjAyMyAxMDo1ODowMSAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDk5LzE0MF0gZ3N0LWxpYmF2OiB1cGRhdGUgdG8gMS4yMi4xCgotLS0KIHNy Y3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGlu c2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtbGli YXYvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQppbmRleCBmMDgyYmQyMTFj NjUuLmEyYzk3YmZiY2RiOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdnc3QtbGliYXYnCiBwa2duYW1lPWdzdC1saWJhdgotdmVyc2lvbj0xLjIw LjMKLXJldmlzaW9uPTIKK3ZlcnNpb249MS4yMi4xCityZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1t ZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHlhc20iCiBtYWtlZGVwZW5kcz0ib3Jj LWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIGZmbXBlZy1kZXZlbCIKQEAgLTExLDcgKzEx LDcgQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vu c2U9IkxHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVk ZXNrdG9wLm9yZyIKIGRpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjLyR7cGtnbmFtZX0vJHtwa2du YW1lfS0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3VtPTNmZWRkMTA1NjBmY2RmYWExYjY0NjJj YmY3OWEzOGM0ZTdiNTdkN2YzOTAzNTkzOTNmYzBjZWY2ZGJmMjdkZmUKK2NoZWNrc3VtPWM5NThl ODI1ZGMzYWMzYjdhNDgxZjhkYjUyNjgxMzFhMWNkNzAxMzEyMzg1YzJkODAzZGM2M2M4ZTQ2MGI1 ZmIKIAogY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCiAJKi1tdXNsKSAjIFJlcXVpcmVk IGJ5IG11c2wgZm9yIE1fU1FSVDFfMgoKRnJvbSAwMjU4MTc5YzAyNzMyOGVmYTRjMWNlMTZkOWIx NjgxNTNjNzEzOThhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDE5IE1hciAyMDIzIDEwOjU4OjE4IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAxMDAvMTQwXSBnc3Qtb214OiB1cGRhdGUgdG8gMS4yMi4xCgotLS0KIHNyY3Br Z3MvZ3N0LW9teC90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1vbXgvdGVtcGxh dGUgYi9zcmNwa2dzL2dzdC1vbXgvdGVtcGxhdGUKaW5kZXggODkzNTM1YzQ2M2RhLi43NjY5MmMy YTEzZjYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LW9teC90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2dzdC1vbXgvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdn c3Qtb214JwogcGtnbmFtZT1nc3Qtb214Ci12ZXJzaW9uPTEuMjAuMwordmVyc2lvbj0xLjIyLjEK IHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURleGFtcGxl cz1kaXNhYmxlZCAtRHRhcmdldD1nZW5lcmljIgpAQCAtMTEsNCArMTEsNCBAQCBtYWludGFpbmVy PSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iTEdQTC0yLjEtb25s eSIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0Zmls ZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWV9LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIu eHoiCi1jaGVja3N1bT04ZGI0ODA0MGJiNDFmMDllZGY4ZDE3ZmY2ZDE2YzU0ODg4ZDc3NzdiYTQ1 MDFjMmM2OWYwMDgzMzUwZWE5YTE1CitjaGVja3N1bT0yZDM3ZjYwY2QzM2U2OGRjZWYwYmNkMDli MmRkOGEwYjJlYjNhYjZkNmFjMTcyZGNhNDZmNzBlYjAyNzU2Njg3CgpGcm9tIDhiOGM1NDRlMDBl OTY5NTM0OGNmMmViZTVhY2RiZWUxNzdmNzk3MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMTkgTWFyIDIwMjMgMTA6 NTk6MDQgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMS8xNDBdIGdzdC1wbHVnaW5zLWJhZDE6IHVw ZGF0ZSB0byAxLjIyLjEKCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgICAgICAgICAgIHwg MSArCiBzcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUgfCAyICstCiAyIGZpbGVzIGNo YW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2NvbW1v bi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IGQwZDMyOGIwOWVmOS4uNDI3NDRhNTViMWZj IDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTExNDcs NiArMTE0Nyw3IEBAIGxpYmdzdHBidXRpbHMtMS4wLnNvLjAgZ3N0LXBsdWdpbnMtYmFzZTEtMS4w LjBfMQogbGliZ3N0cmlmZi0xLjAuc28uMCBnc3QtcGx1Z2lucy1iYXNlMS0xLjAuMF8xCiBsaWJn c3RhcHAtMS4wLnNvLjAgZ3N0LXBsdWdpbnMtYmFzZTEtMS4wLjBfMQogbGliZ3N0YWxsb2NhdG9y cy0xLjAuc28uMCBnc3QtcGx1Z2lucy1iYXNlMS0xLjEuMV8xCitsaWJnc3R0cmFuc2NvZGVyLTEu MC5zby4wIGdzdC1wbHVnaW5zLWJhZDEtMS4yMi4xXzEKIGxpYmdzdHBob3RvZ3JhcGh5LTEuMC5z by4wIGdzdC1wbHVnaW5zLWJhZDEtMS4xOC4zXzIKIGxpYmdzdHNpZ25hbHByb2Nlc3Nvci0xLjAu c28uMCBnc3QtcGx1Z2lucy1iYWQxLTEuMTguM18yCiBsaWJnc3RiYXNldmlkZW8tMS4wLnNvLjAg Z3N0LXBsdWdpbnMtYmFkMS0xLjE4LjNfMgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcGx1Z2lu cy1iYWQxL3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlCmluZGV4 IDVhOWQ1Mzg3ZTBkNC4uN2YyNzJmOTE1YWM0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1wbHVn aW5zLWJhZDEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRl CkBAIC0zNiw3ICszNiw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4 Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyLCBMR1BMLTIuMS1vci1sYXRlciIKIGhv bWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7 aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWUvMS99LyR7cGtnbmFtZS8xL30tJHt2ZXJzaW9ufS50YXIu eHoiCi1jaGVja3N1bT03YTExYzEzYjU1ZGQxZDIzODZkZDkwMjIxOWU0MWNiZmNkZGE4ZTFlMGFh M2U3MzgxODZjOTUwNzRiMzVkYTRmCitjaGVja3N1bT0yZjM5YjZmMjIyZDk4NjY2ZjlmZjQyMGEw MDIzM2UzMzY5NDk5NTNhODQ2MjM3YzJiZmFmYzg4MDVmNTA5ZjBlCiAKIGJ1aWxkX29wdGlvbnM9 ImdpciBnbWUgd2F5bGFuZCIKIGJ1aWxkX29wdGlvbnNfZGVmYXVsdD0iZ2lyIHdheWxhbmQiCgpG cm9tIGJhNTVkNWQ3MTk0NmQwMmY4ZTkyMWMwMjFiNTY0NzRmNGJjN2E2NGUgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwg MTkgTWFyIDIwMjMgMTA6NTk6MDQgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMi8xNDBdIGdzdC1w bHVnaW5zLXVnbHkxOiB1cGRhdGUgdG8gMS4yMi4xCgotLS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMt dWdseTEvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcGx1Z2lucy11Z2x5MS90 ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtdWdseTEvdGVtcGxhdGUKaW5kZXggZTI1NGZk NDBmODY5Li41NjQ3YzAxMmM5ZmUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtdWds eTEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtcGx1Z2lucy11Z2x5MS90ZW1wbGF0ZQpAQCAt MSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLXVnbHkxJwogcGtn bmFtZT1nc3QtcGx1Z2lucy11Z2x5MQotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4xCiBy ZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EYW1ybmI9ZGlz YWJsZWQgLURhbXJ3YmRlYz1kaXNhYmxlZCAtRHNpZHBsYXk9ZGlzYWJsZWQiCkBAIC0xNSw0ICsx NSw0IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNl bnNlPSJMR1BMLTIuMS1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVl ZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWUvMS99LyR7 cGtnbmFtZS8xL30tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT04Y2FhMjA3ODlhMDljMzA0 YjQ5Y2Y1NjNkMzNjY2E5NDIxYjE4NzViODRmY2MxODdlNGEzODVmYTAxZDZhZWZkCitjaGVja3N1 bT00YWIzZDllMTM0ODFiY2UxY2EzYzdjNGJiMWY2NWRjZTRmMGJiNDBmYjFjYWM0NDE2ZThjMDZk ZDY0ODgxNWMyCgpGcm9tIDlkMGJhYWFiZjNhMzg0OGNhMWFmZDZkN2RlZmViYTk5ZDE5Y2I4NWUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFN1biwgMTkgTWFyIDIwMjMgMTA6NTk6MzEgLTA0MDAKU3ViamVjdDogW1BBVENIIDEw My8xNDBdIGdzdC1lZGl0aW5nLXNlcnZpY2VzOiB1cGRhdGUgdG8gMS4yMi4xCgotLS0KIHNyY3Br Z3MvZ3N0MS1lZGl0aW5nLXNlcnZpY2VzL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdl ZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv Z3N0MS1lZGl0aW5nLXNlcnZpY2VzL3RlbXBsYXRlIGIvc3JjcGtncy9nc3QxLWVkaXRpbmctc2Vy dmljZXMvdGVtcGxhdGUKaW5kZXggNjczYjQ2OTcwZjI0Li5mMjA0NWFkNjA0M2MgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvZ3N0MS1lZGl0aW5nLXNlcnZpY2VzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv Z3N0MS1lZGl0aW5nLXNlcnZpY2VzL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnZ3N0MS1lZGl0aW5nLXNlcnZpY2VzJwogcGtnbmFtZT1nc3QxLWVkaXRpbmct c2VydmljZXMKLXZlcnNpb249MS4yMC4zCit2ZXJzaW9uPTEuMjIuMQogcmV2aXNpb249MQogYnVp bGRfc3R5bGU9bWVzb24KIGJ1aWxkX2hlbHBlcj0iZ2lyIgpAQCAtMTIsNyArMTIsNyBAQCBtYWlu dGFpbmVyPSJUb3lhbSBDb3ggPFZhZWxhdGVybkBnbWFpbC5jb20+IgogbGljZW5zZT0iTEdQTC0y LjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3Jn IgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvJHtwa2duYW1lL2dzdDEvZ3N0fS8ke3BrZ25h bWUvZ3N0MS9nc3R9LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09NWZkODk2ZGU2OWZiZTI0 NDIxZWI2YjBmZjhkMmY4YjRjM2NiYTNmMzAyNWNlYWNkMzAyMTcyZjM5YThhYmFhMgorY2hlY2tz dW09MGY5ZTVlMDhlZjgwYTRiOWEwZTk3MWM1ZjAzMmIxM2M3MWFhNmZlZjIzNjI2NWMyZDYxNTQ1 NmUxNTE2MTQzOAogCiBkb19jaGVjaygpIHsKIAk6ICMgVGVzdHMgZmFpbCBpbiBvbGRlciB2ZXJz aW9ucyBhcyB3ZWxsCgpGcm9tIGYwYjUwMjA3NjUwZDE5OWU1N2JhYmU1NDkxZmIzZmY3ODEwY2I1 N2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFN1biwgMTkgTWFyIDIwMjMgMTE6MDA6MDAgLTA0MDAKU3ViamVjdDogW1BBVENI IDEwNC8xNDBdIGdzdC1ydHNwLXNlcnZlcjogdXBkYXRlIHRvIDEuMjIuMQoKLS0tCiBzcmNwa2dz L2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZSB8IDggKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0 IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3Qt cnRzcC1zZXJ2ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZQpp bmRleCA4Y2VlYThkMzRiNGIuLmRlZDlhNjlhMmU5ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3Qt cnRzcC1zZXJ2ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtcnRzcC1zZXJ2ZXIn CiBwa2duYW1lPWdzdC1ydHNwLXNlcnZlcgotdmVyc2lvbj0xLjIwLjMKLXJldmlzaW9uPTMKK3Zl cnNpb249MS4yMi4xCityZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBl bmRzPSJwa2ctY29uZmlnIHB5dGhvbjMiCiBtYWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBnc3QtcGx1 Z2lucy1iYWQxLWRldmVsIGdvYmplY3QtaW50cm9zcGVjdGlvbgpAQCAtMTAsNSArMTAsNSBAQCBz aG9ydF9kZXNjPSJHU3RyZWFtZXIgbXVsdGltZWRpYSBncmFwaCBmcmFtZXdvcmsgLSBydHNwIHNl cnZlciIKIG1haW50YWluZXI9IjFpczdhYzMgPGlzYWFjLnFhMTNAZ21haWwuY29tPiIKIGxpY2Vu c2U9IkxHUEwtMi4xLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVk ZXNrdG9wLm9yZyIKLWRpc3RmaWxlcz0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3Jn L3NyYy9nc3QtcnRzcC1zZXJ2ZXIvZ3N0LXJ0c3Atc2VydmVyLSR7dmVyc2lvbn0udGFyLnh6Igot Y2hlY2tzdW09ZWU0MDI3MThiZTliMTI3ZjBlNWU2NmNhNGMxYjRmNDJlNDkyNmVjOTNiYTMwN2I3 Y2NjYTVkYzZjYzk3OTRjYQorZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvJHtwa2duYW1lfS8k e3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLnh6IgorY2hlY2tzdW09NGUwYjk3MjYwOGY2N2Q1ZDhm NTM2M2M4MjdjZmNmMTMyYjBlMDA4NzdiZTZmMTkwNTM1OGQ1MTQyNDliMDVhMwoKRnJvbSA2YmNl YTFkODgzMTNhZWVkM2MwNTg3ODQ3ZjEyMjFjNDBlNmVmYmY4IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDE5IE1hciAy MDIzIDExOjAwOjM5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDUvMTQwXSBnc3QxLXB5dGhvbjM6 IHVwZGF0ZSB0byAxLjIyLjEKCi0tLQogc3JjcGtncy9nc3QxLXB5dGhvbjMvdGVtcGxhdGUgfCA2 ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdDEtcHl0aG9uMy90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0 MS1weXRob24zL3RlbXBsYXRlCmluZGV4IDNmNTY0YWM2NGI5My4uN2E4ZDA5NGVmNjFmIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2dzdDEtcHl0aG9uMy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdDEt cHl0aG9uMy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dz dDEtcHl0aG9uMycKIHBrZ25hbWU9Z3N0MS1weXRob24zCi12ZXJzaW9uPTEuMjAuMwotcmV2aXNp b249MgordmVyc2lvbj0xLjIyLjEKK3JldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0 bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcHl0aG9uMyIKIG1ha2VkZXBlbmRzPSJsaWJnbGliLWRl dmVsIHB5dGhvbjMtZGV2ZWwgcHl0aG9uMy1nb2JqZWN0LWRldmVsIGdzdC1wbHVnaW5zLWJhc2Ux LWRldmVsIgpAQCAtMTEsNCArMTEsNCBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZv aWRsaW51eC5vcmc+IgogbGljZW5zZT0iTEdQTC0yLjEtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0 cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9z cmMvZ3N0LXB5dGhvbi9nc3QtcHl0aG9uLSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09ZGIz NDgxMjBlYWU5NTViOGNjNGRlMzU2MGE3ZWEwNmUzNmQ2ZTFkZGJhYTk5YTdhZDk2YjU5ODQ2NjAx Y2ZkYworY2hlY2tzdW09OTYwMDhhNDQxZDY4NWE2NDI3NWE1MTViODkzY2NhZDBmZWExZDU2MGM0 M2FjZDA3NjM1MzNlMTdmM2ExM2ViYgoKRnJvbSA2ZmNmODY2NWY1MDc2NmI0NzFjYjU0OGU5ZThi NTU4ZTI0NzdhZWMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDE5IE1hciAyMDIzIDExOjAwOjQ2IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAxMDYvMTQwXSBnc3RyZWFtZXItdmFhcGk6IHVwZGF0ZSB0byAxLjIyLjEKCi0t LQogc3JjcGtncy9nc3RyZWFtZXItdmFhcGkvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFu Z2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9nc3RyZWFtZXItdmFhcGkvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdHJlYW1lci12YWFwaS90ZW1w bGF0ZQppbmRleCAzY2M0ZTA1NzU1OWEuLmMxMDBkOTllOWFmMSAxMDA2NDQKLS0tIGEvc3JjcGtn cy9nc3RyZWFtZXItdmFhcGkvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3RyZWFtZXItdmFhcGkv dGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3RyZWFtZXIt dmFhcGknCiBwa2duYW1lPWdzdHJlYW1lci12YWFwaQotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249 MS4yMi4xCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIgpAQCAtMTEsNyArMTEsNyBAQCBsaWNlbnNlPSJMR1BMLTIuMS1vci1sYXRlciIK IGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBjaGFuZ2Vsb2c9 Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9HU3RyZWFtZXIvZ3N0cmVhbWVyLXZh YXBpL21hc3Rlci9DaGFuZ2VMb2ciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy9nc3RyZWFt ZXItdmFhcGkvZ3N0cmVhbWVyLXZhYXBpLSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09NmVl OTllYjMxNmFiZGRlOWFkMzcwMDI5MTViZDhjMzg2NzkxOGY2ZmRjNzRiN2NmMmFjNGMxYWUwZDY5 MGI0NQorY2hlY2tzdW09NDIzYjU3ZGI3ZmM1ZjkxMzdkYWRmMTdjYjM4NTNhNDc0MzhkNjNjZDRi YTY4ODlhODgyZTYzZmI1YmU5OTdiYwogCiBwcmVfY2hlY2soKSB7CiAJIyBTZWVtcyB0byBuZWVk IGNlcnRhaW4gaGFyZHdhcmUgdG8gcGFzcwoKRnJvbSA4NjMwMTQ4Y2QwMjBkMzZmNWQwYzg3NmI2 ZTFhNTY1YTI4MjdlZGRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDE5IE1hciAyMDIzIDExOjAwOjUxIC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAxMDcvMTQwXSBnc3RyZWFtZXIxOiB1cGRhdGUgdG8gMS4yMi4xCgotLS0K IHNyY3BrZ3MvZ3N0cmVhbWVyMS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdHJl YW1lcjEvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdHJlYW1lcjEvdGVtcGxhdGUKaW5kZXggYWU4YTQ5 Y2IyMGU4Li4zNjJmZTgyZmFlYzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0cmVhbWVyMS90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2dzdHJlYW1lcjEvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdnc3RyZWFtZXIxJwogcGtnbmFtZT1nc3RyZWFtZXIxCi12ZXJz aW9uPTEuMjAuMwordmVyc2lvbj0xLjIyLjEKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29u CiBidWlsZF9oZWxwZXI9ImdpciIKQEAgLTE2LDcgKzE2LDcgQEAgbWFpbnRhaW5lcj0iT3JwaGFu ZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkxHUEwtMi4wLW9yLWxhdGVyIgog aG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKIGRpc3RmaWxlcz0i JHtob21lcGFnZX0vc3JjL2dzdHJlYW1lci9nc3RyZWFtZXItJHt2ZXJzaW9ufS50YXIueHoiCi1j aGVja3N1bT02MDdkYWY2NGJiYmQ1ZmIxOGFmOWQxN2UyMWMwZDIyYzRkNzAyZmZmZTgzYjIzY2Iy MmQxYjFhZjJjYTIzYTJhCitjaGVja3N1bT1jZDNjYTc1OWY5MjY3NjM2MTVmZGZjZWE2M2M5NzYx MTk4YzQyODg5YmMwNjE1Y2VlYzczZTIyYjI0ZmRlNzcxCiAKIHByZV9jaGVjaygpIHsKIAkjIGdz dF9nc3RkYXRldGltZSBpcyBrbm93biB0byBmYWlsIGFjY29yZGluZyB0byBMRlMKCkZyb20gMjBk MmYxZjVhNzU4YjgyOTIyMTc1ZDI4OTJhNTBmZTAzY2U4NDdhMyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAxOSBNYXIg MjAyMyAxMDo1OTowNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTA4LzE0MF0gZ3N0LXBsdWdpbnMt Z29vZDE6IHVwZGF0ZSB0byAxLjIyLjEKCi0tLQogc3JjcGtncy9nc3QtcGx1Z2lucy1nb29kMS90 ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWdvb2QxL3RlbXBsYXRl IGIvc3JjcGtncy9nc3QtcGx1Z2lucy1nb29kMS90ZW1wbGF0ZQppbmRleCAxZjVlNjIwY2UxZmQu LjAwYmFhNjczMmM3NSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy1nb29kMS90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWdvb2QxL3RlbXBsYXRlCkBAIC0xLDYgKzEs NiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXBsdWdpbnMtZ29vZDEnCiBwa2duYW1lPWdz dC1wbHVnaW5zLWdvb2QxCi12ZXJzaW9uPTEuMjAuMwordmVyc2lvbj0xLjIyLjEKIHJldmlzaW9u PTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURkdj1kaXNhYmxlZCAtRGR2 MTM5ND1kaXNhYmxlZCAtRHNob3V0Mj1kaXNhYmxlZCAtRHF0NT1lbmFibGVkCkBAIC0yMiw3ICsy Miw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNl bnNlPSJMR1BMLTIuMS1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVl ZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWUvMS99LyR7 cGtnbmFtZS8xL30tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1mOGYzYzIwNmJmNWNkYWJj MDA5NTM5MjBiNDdiMzU3NWFmMGVmMTVlOWY4NzFjMGI2OTY2ZjZkMGFhNTg2OGI3CitjaGVja3N1 bT00NGY5MTA0NjU0YjRmZDA0MmFlYmU5MDkzMmFiOTJlN2ZmN2Q4NDYwZmJjMDViMjNkYWQ4N2Rm ZmU3MDk3NGNjCiAKIGJ1aWxkX29wdGlvbnM9Imd0azMgd2F5bGFuZCIKIGJ1aWxkX29wdGlvbnNf ZGVmYXVsdD0iZ3RrMyB3YXlsYW5kIgoKRnJvbSBlMDlkMzM0MDI4OGQ5YzMxYzY3YTI5MjhkMWJk NTllMWJiMTI4MWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDE5IE1hciAyMDIzIDEwOjU5OjA0IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAxMDkvMTQwXSBnc3QtcGx1Z2lucy1iYXNlMTogdXBkYXRlIHRvIDEuMjIuMQoK LS0tCiBzcmNwa2dzL2dzdC1wbHVnaW5zLWJhc2UxL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZ3N0LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWJh c2UxL3RlbXBsYXRlCmluZGV4IDI5ZThmNzZiZDFmZS4uNmQyY2FkMTZmOTg1IDEwMDY0NAotLS0g YS9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhc2UxL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXBs dWdpbnMtYmFzZTEvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdnc3QtcGx1Z2lucy1iYXNlMScKIHBrZ25hbWU9Z3N0LXBsdWdpbnMtYmFzZTEKLXZlcnNpb249 MS4yMC4zCit2ZXJzaW9uPTEuMjIuMQogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9bWVzb24KIGJ1 aWxkX2hlbHBlcj0iZ2lyIgpAQCAtMjIsNyArMjIsNyBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8 b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciwgTEdQTC0y LjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3Jn IgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvJHtwa2duYW1lLzEvfS8ke3BrZ25hbWUvMS99 LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09N2UzMGIzZGQ4MWE3MDM4MGZmNzU1NGY5OTg0 NzFkNjk5NmZmNzZiYmU2ZmM1NDQ3MDk2Zjg1MWUyNDQ3M2M5ZgorY2hlY2tzdW09NTliY2FlYWNj NTY0NmI4ZGJkY2ZhNGVmMjBjYTZlODE4ZGQyMzQ5MTBlZmI0Y2VlMWJiZWE0NDFhMzgwMWM2OQog CiBidWlsZF9vcHRpb25zPSJjZHBhcmFub2lhIGdpciBzbmRpbyB3YXlsYW5kIgogYnVpbGRfb3B0 aW9uc19kZWZhdWx0PSJjZHBhcmFub2lhIGdpciB3YXlsYW5kIgoKRnJvbSBkYzUwZjMzNzY1MTAz YThlZGE5YmFlOTViZWYyNjhmOTY5YTM2ZDIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDE2IERlYyAyMDIyIDA5OjI1 OjIyIC0wNTAwClN1YmplY3Q6IFtQQVRDSCAxMTAvMTQwXSBpbnRlbC1nbW1saWI6IHVwZGF0ZSB0 byAyMi4zLjMKCi0tLQogc3JjcGtncy9pbnRlbC1nbW1saWIvdGVtcGxhdGUgfCA0ICsrLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9pbnRlbC1nbW1saWIvdGVtcGxhdGUgYi9zcmNwa2dzL2ludGVsLWdtbWxpYi90 ZW1wbGF0ZQppbmRleCA4ZWQ2ZWQzY2Y1NmMuLjI2MDUyMjYxNTJlNSAxMDA2NDQKLS0tIGEvc3Jj cGtncy9pbnRlbC1nbW1saWIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pbnRlbC1nbW1saWIvdGVt cGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpbnRlbC1nbW1saWIn CiBwa2duYW1lPWludGVsLWdtbWxpYgotdmVyc2lvbj0yMi4yLjAKK3ZlcnNpb249MjIuMy4zCiBy ZXZpc2lvbj0xCiBhcmNocz0iaTY4NiogeDg2XzY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCkBAIC0x OCw3ICsxOCw3IEBAIG1haW50YWluZXI9IlN0ZWZhbm8gUmFnbmkgPHN0M3I0Z0Bwcm90b25tYWls LmNvbT4iCiBsaWNlbnNlPSJNSVQiCiBob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2ludGVs L2dtbWxpYiIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2dtbWxpYi9hcmNo aXZlL2ludGVsLWdtbWxpYi0ke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTBiMjI1Mzg5NGM2 ZmM4NDU1YjZkN2M1ZTg3ZTY1MDRhNzZkNmY2MGVhMTkyZTE0NDVjMmY5MzE2NGJmNTI5YzAKK2No ZWNrc3VtPTg2NjUxYmQyODAzYzlmMGFmZDgyNDcxYmVjNzg0ZTY1ZDJiNDE4ZGVlMzE1YTA1M2Qy MjIxNWViMmE2NzliZTcKIAogbGliMzJkaXNhYmxlZD15ZXMKIAoKRnJvbSAxOTExNWJkZTI2OTZm ZGRiYjczN2U1Y2Y4ZWM4OTdhYWMxNjNjNTRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDE2IERlYyAyMDIyIDA5OjI1 OjQ3IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAxMTEvMTQwXSBpbnRlbC1tZWRpYS1kcml2ZXI6IHVw ZGF0ZSB0byAyMi42LjQKCi0tLQogLi4ubW1vbi1FbmFibGUtTU1DLWluLWZyZWUta2VybmVsLWJ1 aWxkLnBhdGNoIHwgMTI1ICsrKysrKysrKysrKysrKysrKwogLi4uL2ludGVsLW1lZGlhLWRyaXZl ci9wYXRjaGVzL2V4ZWNpbmZvLnBhdGNoIHwgIDU4IC0tLS0tLS0tCiBzcmNwa2dzL2ludGVsLW1l ZGlhLWRyaXZlci90ZW1wbGF0ZSAgICAgICAgICAgfCAgIDQgKy0KIDMgZmlsZXMgY2hhbmdlZCwg MTI3IGluc2VydGlvbnMoKyksIDYwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvMDAwMS1NZWRpYS1Db21tb24tRW5hYmxl LU1NQy1pbi1mcmVlLWtlcm5lbC1idWlsZC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvaW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvZXhlY2luZm8ucGF0Y2gKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci9wYXRjaGVzLzAwMDEtTWVkaWEtQ29tbW9uLUVu YWJsZS1NTUMtaW4tZnJlZS1rZXJuZWwtYnVpbGQucGF0Y2ggYi9zcmNwa2dzL2ludGVsLW1lZGlh LWRyaXZlci9wYXRjaGVzLzAwMDEtTWVkaWEtQ29tbW9uLUVuYWJsZS1NTUMtaW4tZnJlZS1rZXJu ZWwtYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41 MjVmYjY4ODcyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLW1lZGlhLWRyaXZl ci9wYXRjaGVzLzAwMDEtTWVkaWEtQ29tbW9uLUVuYWJsZS1NTUMtaW4tZnJlZS1rZXJuZWwtYnVp bGQucGF0Y2gKQEAgLTAsMCArMSwxMjUgQEAKK0Zyb20gZTY4ZmVhYjdkYjAzNjgzOGQ5NTIxYmEz YjlmMDA3MTdjMzdjMDI0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpheVlhbmcg PGpheS55YW5nQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMjEgTWFyIDIwMjMgMTc6MTc6NTUgKzA4 MDAKK1N1YmplY3Q6IFtQQVRDSF0gW01lZGlhIENvbW1vbl0gRW5hYmxlIE1NQyBpbiBmcmVlIGtl cm5lbCBidWlsZAorCitBZGQgbW1jIGJ1aWxkIGRlZmluaXRpb24gaW4gZnJlZSBrZXJuZWwgYnVp bGQKKy0tLQorIG1lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVjL2hhbC9tZWRpYV9zcmNz LmNtYWtlICAgICAgICAgIHwgMiArLQorIG1lZGlhX2RyaXZlci9jbWFrZS9saW51eC9tZWRpYV9m ZWF0dXJlX2ZsYWdzX2xpbnV4LmNtYWtlICAgICAgIHwgMyArLS0KKyAuLi4vbWVkaWFfaW50ZXJm YWNlc19tOV9ieHQvbWVkaWFfaW50ZXJmYWNlc19nOV9ieHQuY3BwICAgICAgICB8IDIgKy0KKyAu Li4vbWVkaWFfaW50ZXJmYWNlc19tOV9jZmwvbWVkaWFfaW50ZXJmYWNlc19nOV9jZmwuY3BwICAg ICAgICB8IDIgKy0KKyAuLi4vbWVkaWFfaW50ZXJmYWNlc19tOV9nbGsvbWVkaWFfaW50ZXJmYWNl c19nOV9nbGsuY3BwICAgICAgICB8IDIgKy0KKyAuLi4vbWVkaWFfaW50ZXJmYWNlc19tOV9rYmwv bWVkaWFfaW50ZXJmYWNlc19nOV9rYmwuY3BwICAgICAgICB8IDIgKy0KKyAuLi4vbWVkaWFfaW50 ZXJmYWNlc19tOV9za2wvbWVkaWFfaW50ZXJmYWNlc19nOV9za2wuY3BwICAgICAgICB8IDIgKy0K KyA3IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlm ZiAtLWdpdCBhL21lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVjL2hhbC9tZWRpYV9zcmNz LmNtYWtlIGIvbWVkaWFfZHJpdmVyL2Fnbm9zdGljL2dlbjkvY29kZWMvaGFsL21lZGlhX3NyY3Mu Y21ha2UKK2luZGV4IDhiYjM2YmFmZS4uNzg5MDJhMjJkIDEwMDY0NAorLS0tIGEvbWVkaWFfZHJp dmVyL2Fnbm9zdGljL2dlbjkvY29kZWMvaGFsL21lZGlhX3NyY3MuY21ha2UKKysrKyBiL21lZGlh X2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVjL2hhbC9tZWRpYV9zcmNzLmNtYWtlCitAQCAtMjcs NyArMjcsNyBAQCBzZXQoVE1QXzFfSEVBREVSU18KKyAgICAgJHtDTUFLRV9DVVJSRU5UX0xJU1Rf RElSfS9jb2RlY2hhbF9od19nOV9YLmgKKyApCisgCistaWYoJHtNTUNfU3VwcG9ydGVkfSBTVFJF UVVBTCAieWVzIikKKytpZigke01NQ19TdXBwb3J0ZWR9IFNUUkVRVUFMICJ5ZXMiIEFORCBFTkFC TEVfTk9ORlJFRV9LRVJORUxTIEFORCBFTkFCTEVfS0VSTkVMUykKKyAgICAgc2V0KFRNUF8xX1NP VVJDRVNfCisgICAgICAgICAke1RNUF8xX1NPVVJDRVNffQorICAgICAgICAgJHtDTUFLRV9DVVJS RU5UX0xJU1RfRElSfS9jb2RlY2hhbF9tZW1kZWNvbXBfZzkuY3BwCitkaWZmIC0tZ2l0IGEvbWVk aWFfZHJpdmVyL2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVfZmxhZ3NfbGludXguY21ha2UgYi9t ZWRpYV9kcml2ZXIvY21ha2UvbGludXgvbWVkaWFfZmVhdHVyZV9mbGFnc19saW51eC5jbWFrZQor aW5kZXggZGUwY2E4NTNmLi44MTIxZWE2MGMgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvY21h a2UvbGludXgvbWVkaWFfZmVhdHVyZV9mbGFnc19saW51eC5jbWFrZQorKysrIGIvbWVkaWFfZHJp dmVyL2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVfZmxhZ3NfbGludXguY21ha2UKK0BAIC0zNSw3 ICszNSw2IEBAIGlmKE5PVCBFTkFCTEVfS0VSTkVMUyBPUiBOT1QgRU5BQkxFX05PTkZSRUVfS0VS TkVMUykKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChIRVZDX0VuY29kZV9WTUVfU3VwcG9ydGVk ICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoTVBFRzJfRW5jb2RlX1ZNRV9TdXBwb3J0 ZWQgIm5vIikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChDTVJUX0hFVkNfRU5DX0ZFSV9TdXBw b3J0ZWQgIm5vIikKKy0gICAgYnNfc2V0X2lmX3VuZGVmaW5lZChNTUNfU3VwcG9ydGVkICJubyIp CisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoVkMxX0RlY29kZV9TdXBwb3J0ZWQgIm5vIikKKyAg ICAgYnNfc2V0X2lmX3VuZGVmaW5lZChEZWNvZGVfUHJvY2Vzc2luZ19TdXBwb3J0ZWQgIm5vIikK KyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChLZXJuZWxfQXV0b19EZW5vaXNlX1N1cHBvcnRlZCAi bm8iKQorQEAgLTQ2LDcgKzQ1LDYgQEAgZWxzZSgpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQo SEVWQ19FbmNvZGVfVk1FX1N1cHBvcnRlZCAiJHtFbmNvZGVfVk1FX1N1cHBvcnRlZH0iKQorICAg ICBic19zZXRfaWZfdW5kZWZpbmVkKE1QRUcyX0VuY29kZV9WTUVfU3VwcG9ydGVkICIke0VuY29k ZV9WTUVfU3VwcG9ydGVkfSIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoQ01SVF9IRVZDX0VO Q19GRUlfU3VwcG9ydGVkICJ5ZXMiKQorLSAgICBic19zZXRfaWZfdW5kZWZpbmVkKE1NQ19TdXBw b3J0ZWQgInllcyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoVkMxX0RlY29kZV9TdXBwb3J0 ZWQgInllcyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoRGVjb2RlX1Byb2Nlc3NpbmdfU3Vw cG9ydGVkICJ5ZXMiKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKEtlcm5lbF9BdXRvX0Rlbm9p c2VfU3VwcG9ydGVkICJ5ZXMiKQorQEAgLTY0LDYgKzYyLDcgQEAgYnNfc2V0X2lmX3VuZGVmaW5l ZChWUDlfRGVjb2RlX1N1cHBvcnRlZCAieWVzIikKKyBic19zZXRfaWZfdW5kZWZpbmVkKFZQX1NG Q19TdXBwb3J0ZWQgInllcyIpCisgYnNfc2V0X2lmX3VuZGVmaW5lZChDb21tb25fRW5jb2RlX1N1 cHBvcnRlZCAieWVzIikKKyBic19zZXRfaWZfdW5kZWZpbmVkKE1lZGlhX1NjYWxhYmlsaXR5X1N1 cHBvcnRlZCAieWVzIikKKytic19zZXRfaWZfdW5kZWZpbmVkKE1NQ19TdXBwb3J0ZWQgInllcyIp CisgCisgIyBmZWF0dXJlcyBjb250cm9sbGVkIGJ5IGdsb2JhbCBmbGFnIEVuY29kZV9WREVuY19T dXBwb3J0ZWQKKyBic19zZXRfaWZfdW5kZWZpbmVkKEFWQ19FbmNvZGVfVkRFbmNfU3VwcG9ydGVk ICIke0VuY29kZV9WREVuY19TdXBwb3J0ZWR9IikKK2RpZmYgLS1naXQgYS9tZWRpYV9kcml2ZXIv bWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNf ZzlfYnh0LmNwcCBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNl c19tOV9ieHQvbWVkaWFfaW50ZXJmYWNlc19nOV9ieHQuY3BwCitpbmRleCAzZjMwNmVlMmEuLjhl NGMwZjUzMiAxMDA2NDQKKy0tLSBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFf aW50ZXJmYWNlc19tOV9ieHQvbWVkaWFfaW50ZXJmYWNlc19nOV9ieHQuY3BwCisrKysgYi9tZWRp YV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2lu dGVyZmFjZXNfZzlfYnh0LmNwcAorQEAgLTEzNSw3ICsxMzUsNyBAQCBNT1NfU1RBVFVTIE1od0lu dGVyZmFjZXNHOUJ4dDo6SW5pdGlhbGl6ZSgKKyAKKyAgICAgcmV0dXJuIE1PU19TVEFUVVNfU1VD Q0VTUzsKKyB9CistI2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRlZmluZWQoX01NQ19TVVBQ T1JURUQpICYmIGRlZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZpbmVkKF9GVUxMX09QRU5f U09VUkNFKQorIHN0YXRpYyBib29sIGJ4dFJlZ2lzdGVyZWRNbWQgPQorICAgICBNZWRpYUZhY3Rv cnk8dWludDMyX3QsIE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxNbWREZXZpY2VHOUJ4dD4o KHVpbnQzMl90KUlHRlhfQlJPWFRPTik7CitkaWZmIC0tZ2l0IGEvbWVkaWFfZHJpdmVyL21lZGlh X2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2NmbC9tZWRpYV9pbnRlcmZhY2VzX2c5X2Nm bC5jcHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlf Y2ZsL21lZGlhX2ludGVyZmFjZXNfZzlfY2ZsLmNwcAoraW5kZXggYjhmYTFlZWMwLi44NGUwZmFk MWQgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVy ZmFjZXNfbTlfY2ZsL21lZGlhX2ludGVyZmFjZXNfZzlfY2ZsLmNwcAorKysrIGIvbWVkaWFfZHJp dmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2NmbC9tZWRpYV9pbnRlcmZh Y2VzX2c5X2NmbC5jcHAKK0BAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBib29sIGNmbFJlZ2lzdGVy ZWRNaHcgPQorICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1od0ludGVyZmFjZXM+OjoKKyAg ICAgUmVnaXN0ZXI8TWh3SW50ZXJmYWNlc0c5S2JsPigodWludDMyX3QpSUdGWF9DT0ZGRUVMQUtF KTsKKyAKKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5lZChfTU1DX1NVUFBPUlRF RCkgJiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQoX0ZVTExfT1BFTl9TT1VS Q0UpCisgc3RhdGljIGJvb2wgY2ZsUmVnaXN0ZXJlZE1tZCA9CisgICAgIE1lZGlhRmFjdG9yeTx1 aW50MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERldmljZUc5S2JsPigodWlu dDMyX3QpSUdGWF9DT0ZGRUVMQUtFKTsKK2RpZmYgLS1naXQgYS9tZWRpYV9kcml2ZXIvbWVkaWFf aW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xr LmNwcCBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9n bGsvbWVkaWFfaW50ZXJmYWNlc19nOV9nbGsuY3BwCitpbmRleCBkZTgxZTYwOTEuLjI2MzhjYjNh NiAxMDA2NDQKKy0tLSBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJm YWNlc19tOV9nbGsvbWVkaWFfaW50ZXJmYWNlc19nOV9nbGsuY3BwCisrKysgYi9tZWRpYV9kcml2 ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVyZmFj ZXNfZzlfZ2xrLmNwcAorQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIGJvb2wgZ2xrUmVnaXN0ZXJl ZE1odyA9CisgICAgIE1lZGlhRmFjdG9yeTx1aW50MzJfdCwgTWh3SW50ZXJmYWNlcz46OgorICAg ICBSZWdpc3RlcjxNaHdJbnRlcmZhY2VzRzlLYmw+KCh1aW50MzJfdClJR0ZYX0dFTUlOSUxBS0Up OworIAorLSNpZmRlZiBfTU1DX1NVUFBPUlRFRAorKyNpZiBkZWZpbmVkKF9NTUNfU1VQUE9SVEVE KSAmJiBkZWZpbmVkKEVOQUJMRV9LRVJORUxTKSAmJiAhZGVmaW5lZChfRlVMTF9PUEVOX1NPVVJD RSkKKyBzdGF0aWMgYm9vbCBnbGtSZWdpc3RlcmVkTW1kID0KKyAgICAgTWVkaWFGYWN0b3J5PHVp bnQzMl90LCBNbWREZXZpY2U+OjoKKyAgICAgUmVnaXN0ZXI8TW1kRGV2aWNlRzlLYmw+KCh1aW50 MzJfdClJR0ZYX0dFTUlOSUxBS0UpOworZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZlci9tZWRpYV9p bnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9rYmwvbWVkaWFfaW50ZXJmYWNlc19nOV9rYmwu Y3BwIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2ti bC9tZWRpYV9pbnRlcmZhY2VzX2c5X2tibC5jcHAKK2luZGV4IDk5ZDc4NjE4NS4uNGU5YzZlN2Yx IDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZh Y2VzX205X2tibC9tZWRpYV9pbnRlcmZhY2VzX2c5X2tibC5jcHAKKysrKyBiL21lZGlhX2RyaXZl ci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9rYmwvbWVkaWFfaW50ZXJmYWNl c19nOV9rYmwuY3BwCitAQCAtMTMxLDcgKzEzMSw3IEBAIE1PU19TVEFUVVMgTWh3SW50ZXJmYWNl c0c5S2JsOjpJbml0aWFsaXplKAorIAorICAgICByZXR1cm4gTU9TX1NUQVRVU19TVUNDRVNTOwor IH0KKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5lZChfTU1DX1NVUFBPUlRFRCkg JiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQoX0ZVTExfT1BFTl9TT1VSQ0Up Cisgc3RhdGljIGJvb2wga2JsUmVnaXN0ZXJlZE1tZCA9CisgICAgIE1lZGlhRmFjdG9yeTx1aW50 MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERldmljZUc5S2JsPigodWludDMy X3QpSUdGWF9LQUJZTEFLRSk7CitkaWZmIC0tZ2l0IGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVy ZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X3NrbC9tZWRpYV9pbnRlcmZhY2VzX2c5X3NrbC5jcHAg Yi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfc2tsL21l ZGlhX2ludGVyZmFjZXNfZzlfc2tsLmNwcAoraW5kZXggZTI1MjBlZGY3Li40YjAwMTJjNjQgMTAw NjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNf bTlfc2tsL21lZGlhX2ludGVyZmFjZXNfZzlfc2tsLmNwcAorKysrIGIvbWVkaWFfZHJpdmVyL21l ZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X3NrbC9tZWRpYV9pbnRlcmZhY2VzX2c5 X3NrbC5jcHAKK0BAIC0xMzksNyArMTM5LDcgQEAgTU9TX1NUQVRVUyBNaHdJbnRlcmZhY2VzRzlT a2w6OkluaXRpYWxpemUoCisgCisgICAgIHJldHVybiBNT1NfU1RBVFVTX1NVQ0NFU1M7CisgfQor LSNpZmRlZiBfTU1DX1NVUFBPUlRFRAorKyNpZiBkZWZpbmVkKF9NTUNfU1VQUE9SVEVEKSAmJiBk ZWZpbmVkKEVOQUJMRV9LRVJORUxTKSAmJiAhZGVmaW5lZChfRlVMTF9PUEVOX1NPVVJDRSkKKyBz dGF0aWMgYm9vbCBza2xSZWdpc3RlcmVkTW1kID0KKyAgICAgTWVkaWFGYWN0b3J5PHVpbnQzMl90 LCBNbWREZXZpY2U+OjoKKyAgICAgUmVnaXN0ZXI8TW1kRGV2aWNlRzlTa2w+KCh1aW50MzJfdClJ R0ZYX1NLWUxBS0UpOworLS0gCisyLjQwLjAKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1t ZWRpYS1kcml2ZXIvcGF0Y2hlcy9leGVjaW5mby5wYXRjaCBiL3NyY3BrZ3MvaW50ZWwtbWVkaWEt ZHJpdmVyL3BhdGNoZXMvZXhlY2luZm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDI1ZDIxMTkyZDVhMS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaW50ZWwtbWVkaWEt ZHJpdmVyL3BhdGNoZXMvZXhlY2luZm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCww IEBACi1Gcm9tIGIxNzM1NDE0MjU2M2I0NWUwZWJmNDI3NDg1NTkxNDI2NDgxMzY4ZmQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCZXJuZCBLdWhscyA8YmVybmQua3VobHNAdC1vbmxp bmUuZGU+Ci1EYXRlOiBGcmksIDI5IEp1bCAyMDIyIDE5OjUxOjM5ICswMjAwCi1TdWJqZWN0OiBb UEFUQ0hdIEZpeCB1Q2xpYmMgYnVpbGQKLQotdUNsaWJjIGRvZXMgbm90IHByb3ZpZGUgZXhlY2lu Zm8uaAotLS0tCi0gQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCA2ICsrKysrKwotIC4uLi9saW51eC9jb21tb24vb3Mvb3NzZXJ2aWNl L21vc191dGlsaXRpZXNfc3BlY2lmaWMuY3BwICAgIHwgNCArKysrCi0gMiBmaWxlcyBjaGFuZ2Vk LCAxMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtl TGlzdHMudHh0Ci1pbmRleCAwNTM5MDQ3NDguLjRhM2YwODY5ZSAxMDA3NTUKLS0tLSBhL0NNYWtl TGlzdHMudHh0Ci0rKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTUzLDYgKzUzLDEyIEBAIG9wdGlv biAoQlVJTERfQ01SVExJQiAiQnVpbGQgYW5kIEluc3RhbGwgY21ydGxpYiB0b2dldGhlciB3aXRo IG1lZGlhIGRyaXZlciIgT04pCi0gCi0gb3B0aW9uIChFTkFCTEVfUFJPRFVDVElPTl9LTUQgIkVu YWJsZSBQcm9kdWN0aW9uIEtNRCBoZWFkZXIgZmlsZXMiIE9GRikKLSAKLStpbmNsdWRlKENoZWNr SW5jbHVkZUZpbGVDWFgpCi0rY2hlY2tfaW5jbHVkZV9maWxlX2N4eCgiZXhlY2luZm8uaCIgSEFW RV9FWEVDSU5GTykKLStpZiAoSEFWRV9FWEVDSU5GTykKLSsgICAgYWRkX2RlZmluaXRpb25zKC1E SEFWRV9FWEVDSU5GTykKLStlbmRpZigpCi0rCi0gaW5jbHVkZShHTlVJbnN0YWxsRGlycykKLSAK LSBpZiAoQlVJTERfQ01SVExJQiBBTkQgTk9UIENNQUtFX1dERE1fTElOVVgpCi1kaWZmIC0tZ2l0 IGEvbWVkaWFfc29mdGxldC9saW51eC9jb21tb24vb3Mvb3NzZXJ2aWNlL21vc191dGlsaXRpZXNf c3BlY2lmaWMuY3BwIGIvbWVkaWFfc29mdGxldC9saW51eC9jb21tb24vb3Mvb3NzZXJ2aWNlL21v c191dGlsaXRpZXNfc3BlY2lmaWMuY3BwCi1pbmRleCBiZGUyMTZiODMuLjEyMGIwMmQ1NSAxMDA2 NDQKLS0tLSBhL21lZGlhX3NvZnRsZXQvbGludXgvY29tbW9uL29zL29zc2VydmljZS9tb3NfdXRp bGl0aWVzX3NwZWNpZmljLmNwcAotKysrIGIvbWVkaWFfc29mdGxldC9saW51eC9jb21tb24vb3Mv b3NzZXJ2aWNlL21vc191dGlsaXRpZXNfc3BlY2lmaWMuY3BwCi1AQCAtMzQsNyArMzQsOSBAQAot ICNpbmNsdWRlIDxzaWduYWwuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+ICAvLyBmb3JrCi0gI2lu Y2x1ZGUgPGFsZ29yaXRobT4KLSsjaWZkZWYgSEFWRV9FWEVDSU5GTwotICNpbmNsdWRlIDxleGVj aW5mby5oPiAvLyBiYWNrdHJhY2UKLSsjZW5kaWYKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0g I2luY2x1ZGUgPHN5cy9zdGF0Lmg+ICAvLyBmc3RhdAotICNpbmNsdWRlIDxzeXMvaXBjLmg+ICAv LyBTeXN0ZW0gViBJUEMKLUBAIC0yNDczLDYgKzI0NzUsNyBAQCB2b2lkIE1vc1V0aWxpdGllczo6 TW9zVHJhY2VFdmVudCgKLSAgICAgICAgICAgICAgICAgTU9TX0ZyZWVNZW1vcnkocFRyYWNlQnVm KTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0rI2lmZGVmIEhBVkVfRVhFQ0lORk8KLSAg ICAgICAgIGlmIChtX21vc1RyYWNlRmlsdGVyICYgKDFVTEwgPDwgVFJfS0VZX0NBTExfU1RBQ0sp KQotICAgICAgICAgewotICAgICAgICAgICAgIC8vIHJlc2VydmUgc3BhY2UgZm9yIGhlYWRlciBh bmQgc3RhY2sgc2l6ZSBmaWVsZC4KLUBAIC0yNDkyLDYgKzI0OTUsNyBAQCB2b2lkIE1vc1V0aWxp dGllczo6TW9zVHJhY2VFdmVudCgKLSAgICAgICAgICAgICAgICAgc2l6ZV90IHJldCA9IHdyaXRl KE1vc1V0aWxpdGllc1NwZWNpZmljTmV4dDo6bV9tb3NUcmFjZUZkLCB0cmFjZUJ1Ziwgbkxlbik7 Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotKyNlbmRpZgotICAgICB9Ci0gICAgIHJldHVy bjsKLSB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci90ZW1wbGF0ZSBi L3NyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3RlbXBsYXRlCmluZGV4IDFjYTk0NTY5ZTExNy4u MTczNWI5MGM2NWNlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci90ZW1wbGF0ZQpAQCAtMSw2ICsx LDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ludGVsLW1lZGlhLWRyaXZlcicKIHBrZ25hbWU9 aW50ZWwtbWVkaWEtZHJpdmVyCi12ZXJzaW9uPTIyLjUuMwordmVyc2lvbj0yMi42LjQKIHJldmlz aW9uPTEKIGFyY2hzPSJ4ODZfNjQqIgogYnVpbGRfc3R5bGU9Y21ha2UKQEAgLTEyLDcgKzEyLDcg QEAgbWFpbnRhaW5lcj0iU3RlZmFubyBSYWduaSA8c3QzcjRnQHByb3Rvbm1haWwuY29tPiIKIGxp Y2Vuc2U9Ik1JVCwgQlNELTMtQ2xhdXNlIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9p bnRlbC9tZWRpYS1kcml2ZXIiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9t ZWRpYS1kcml2ZXIvYXJjaGl2ZS9pbnRlbC1tZWRpYS0ke3ZlcnNpb259LnRhci5neiIKLWNoZWNr c3VtPTY1NjUyYjM2NWQ0OGJlM2M5ZjBiM2M1NjE1MDI5NTJiOTJlZTVmY2M1ODc1MjBiODhkMGQ3 NTJjZjJhNmEzYjUKK2NoZWNrc3VtPTBjMDRiOWQ3NGI5MmRlNDFmZDQwOWI2MjkxM2NlNGFmZDc5 OTIzNmMwYjZiYzE5ODNhNDk2OTkwNzY0ZTVkOTAKIAogYnVpbGRfb3B0aW9ucz0ibm9uZnJlZSIK IGRlc2Nfb3B0aW9uX25vbmZyZWU9IkVuYWJsZSBub25mcmVlIGtlcm5lbHMiCgpGcm9tIDJkZjc2 ZTUwYWYyMjFjY2UwOWNlZDZhMzgyMDM2MDBhZDk1NGQ1OWUgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTYgRGVjIDIw MjIgMDk6MzE6NDMgLTA1MDAKU3ViamVjdDogW1BBVENIIDExMi8xNDBdIE5ldyBwYWNrYWdlOiBv bmV2cGwtMjAyMy4xLjIKCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgfCAgMSArCiBzcmNw a2dzL29uZXZwbC1kZXZlbCAgICB8ICAxICsKIHNyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlIHwgMzQg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAzNiBp bnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9vbmV2cGwtZGV2ZWwKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL29uZXZwbC90ZW1wbGF0ZQoKZGlmZiAtLWdpdCBhL2Nv bW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDQyNzQ0YTU1YjFmYy4uZjE2NzViYWNm ZThiIDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTg3 OSw2ICs4NzksNyBAQCBsaWJ3ZWJwLnNvLjcgbGlid2VicC0wLjYuMF8xCiBsaWJ3ZWJwbXV4LnNv LjMgbGlid2VicC0wLjYuMF8xCiBsaWJ3ZWJwZGVtdXguc28uMiBsaWJ3ZWJwLTAuNS4wXzEKIGxp YndlYnBkZWNvZGVyLnNvLjMgbGlid2VicC0wLjYuMF8xCitsaWJ2cGwuc28uMiBvbmV2cGwtMjAy My4xLjJfMQogbGlidmEteDExLnNvLjIgbGlidmEtMi4xMy4wXzEKIGxpYnZhLnNvLjIgbGlidmEt Mi4xMy4wXzEKIGxpYnZhLWdseC5zby4yIGxpYnZhLWdseC0yLjEzLjBfMQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9vbmV2cGwtZGV2ZWwgYi9zcmNwa2dzL29uZXZwbC1kZXZlbApuZXcgZmlsZSBtb2Rl IDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLmUyMzA2NTAwYjQ4NwotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3Mvb25ldnBsLWRldmVsCkBAIC0wLDAgKzEgQEAKK29uZXZwbApcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlIGIv c3JjcGtncy9vbmV2cGwvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi44NWM3YzJkYTg1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL29uZXZwbC90 ZW1wbGF0ZQpAQCAtMCwwICsxLDM0IEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdvbmV2cGwnCitw a2duYW1lPW9uZXZwbAordmVyc2lvbj0yMDIzLjEuMgorcmV2aXNpb249MQorYXJjaHM9Ing4Nl82 NCoiCitidWlsZF9zdHlsZT1jbWFrZQorY29uZmlndXJlX2FyZ3M9IgorCS1EQ01BS0VfQlVJTERf VFlQRT1SZWxlYXNlIC1Xbm8tZGV2CisJLURCVUlMRF9QWVRIT05fQklORElORzpCT09MPSdPRkYn CisJLURCVUlMRF9FWEFNUExFUzpCT09MPSdPRkYnCisJLURCVUlMRF9URVNUUzpCT09MPSdPTicK KwktRElOU1RBTExfRVhBTVBMRV9DT0RFOkJPT0w9J09GRiciCitob3N0bWFrZWRlcGVuZHM9ImNt YWtlIGxpYlgxMSBweXRob24gd2F5bGFuZC1wcm90b2NvbHMgcGtnLWNvbmZpZyIKK21ha2VkZXBl bmRzPSJsaWJ2YS1kZXZlbCBsaWJYMTEtZGV2ZWwgd2F5bGFuZC1kZXZlbCIKK3Nob3J0X2Rlc2M9 IkludGVsIG9uZUFQSSBWaWRlbyBQcm9jZXNzaW5nIGxpYnJhcnkiCittYWludGFpbmVyPSJ6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPiIKK2xpY2Vuc2U9Ik1JVCIKK2hvbWVwYWdlPSJodHRwczov L3d3dy5pbnRlbC5jb20vY29udGVudC93d3cvdXMvZW4vZGV2ZWxvcGVyL3Rvb2xzL29uZWFwaS9v bmV2cGwuaHRtbCIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL29uZWFwaS1zcmMvb25l VlBML2FyY2hpdmUvdiR7dmVyc2lvbn0vJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci5neiIKK2No ZWNrc3VtPWIyMjYxY2NhMTc0Y2UxODE1ZjNkNDdjNjQ3OTIxYWIxN2Y2ODI2N2M2OWMxZTI0NDRm ZjI3YWFiN2QxOTljYmIKKworcG9zdF9pbnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0UKK30K Kworb25ldnBsLWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHttYWtlZGVwZW5kc30gJHtz b3VyY2Vwa2d9LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJc2hvcnRfZGVzYys9IiAtIGRldmVs b3BtZW50IGZpbGVzIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZQorCQl2 bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCQl2bW92ZSAidXNyL2xpYi8qLnNvIgorCX0KK30KCkZy b20gNDI3NGJhZjQxZTAyZDU3OWM0MTk0ZmMzMzE1ZDY3YjBkNTgxMzE4ZCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAx NiBEZWMgMjAyMiAxNToyNzowNCAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTEzLzE0MF0gTmV3IHBh Y2thZ2U6IG9uZXZwbC1pbnRlbC1ncHUtMjIuNi40CgotLS0KIHNyY3BrZ3Mvb25ldnBsLWludGVs LWdwdS1kZXZlbCAgICB8ICAxICsKIHNyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS90ZW1wbGF0ZSB8 IDI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1LWRl dmVsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1L3RlbXBsYXRl CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1LWRldmVsIGIvc3JjcGtncy9v bmV2cGwtaW50ZWwtZ3B1LWRldmVsCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAw MDAwMC4uNDc5MjBjZWVjZjkxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9vbmV2cGwtaW50 ZWwtZ3B1LWRldmVsCkBAIC0wLDAgKzEgQEAKK29uZXZwbC1pbnRlbC1ncHUKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL29uZXZwbC1pbnRlbC1ncHUvdGVt cGxhdGUgYi9zcmNwa2dzL29uZXZwbC1pbnRlbC1ncHUvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMTRhY2I3MjhhNTQKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL29uZXZwbC1pbnRlbC1ncHUvdGVtcGxhdGUKQEAgLTAsMCArMSwyNyBAQAorIyBU ZW1wbGF0ZSBmaWxlIGZvciAnb25ldnBsLWludGVsLWdwdScKK3BrZ25hbWU9b25ldnBsLWludGVs LWdwdQordmVyc2lvbj0yMi42LjQKK3JldmlzaW9uPTEKK2FyY2hzPSJ4ODZfNjQqIgorYnVpbGRf c3R5bGU9Y21ha2UKK2NvbmZpZ3VyZV9hcmdzPSItV25vLWRldiAtRENNQUtFX0JVSUxEX1RZUEU9 UmVsZWFzZSIKK2hvc3RtYWtlZGVwZW5kcz0iY21ha2UgcGtnLWNvbmZpZyIKK21ha2VkZXBlbmRz PSJsaWJkcm0tZGV2ZWwgbGlidmEtZGV2ZWwgb25ldnBsLWRldmVsIgorc2hvcnRfZGVzYz0iUnVu dGltZSBpbXBsZW1lbnRhdGlvbiBvZiBvbmVWUEwgQVBJIGZvciBJbnRlbCBHZW4gR1BVcyIKK21h aW50YWluZXI9InpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+IgorbGljZW5zZT0iTUlUIgoraG9t ZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9vbmVhcGktc3JjL29uZVZQTC1pbnRlbC1ncHUiCitj aGFuZ2Vsb2c9Imh0dHBzOi8vZ2l0aHViLmNvbS9vbmVhcGktc3JjL29uZVZQTC1pbnRlbC1ncHUv YmxvYi9tYWluL0NIQU5HRUxPRy5tZCIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL29u ZWFwaS1zcmMvb25lVlBMLWludGVsLWdwdS9hcmNoaXZlL3JlZnMvdGFncy9pbnRlbC1vbmV2cGwt JHt2ZXJzaW9ufS50YXIuZ3oiCitjaGVja3N1bT03NGIwOTc5ZGNiMmFmMWI3YzY4ZWRiOGNiY2Iw MmQ1MzlkZTUxMTA5MGIxMmZhYzUwNjUyY2JhY2Q3MDdjNGU2CisKK3Bvc3RfaW5zdGFsbCgpIHsK Kwl2bGljZW5zZSBMSUNFTlNFCit9CisKK29uZXZwbC1pbnRlbC1ncHUtZGV2ZWxfcGFja2FnZSgp IHsKKwlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJcGtnX2luc3RhbGwoKSB7 CisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJfQorfQoKRnJvbSBjMGJhZjk1NzFlZTJmNTlh YmZiMTM5OTViYmMwYjAyNjEzMDI4NWZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDE4IERlYyAyMDIyIDAxOjQwOjE1 IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAxMTQvMTQwXSBpZ3QtZ3B1LXRvb2xzOiB1cGRhdGUgdG8g dmVyc2lvbiAxLjI3IHJldmJ1bXAgaWRrCiByZW1vdmUKCi0tLQogLi4uLWxvYWRpbmctZmFpbHVy ZS1pbi1yZXNvbHZlLWZ1bmN0aW9uLnBhdGNoIHwgNjMgLS0tLS0tLS0tLS0tLS0tLS0tLQogc3Jj cGtncy9pZ3QtZ3B1LXRvb2xzL3BhdGNoZXMvbXVzbC5wYXRjaCAgICAgIHwgMjAgKysrKysrCiBz cmNwa2dzL2lndC1ncHUtdG9vbHMvdGVtcGxhdGUgICAgICAgICAgICAgICAgfCAgNCArLQogMyBm aWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCA2NSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2lndC1ncHUtdG9vbHMvcGF0Y2hlcy9pLWctdC1GaXgtZ2xvYmFs LXN5bWJvbC1sb2FkaW5nLWZhaWx1cmUtaW4tcmVzb2x2ZS1mdW5jdGlvbi5wYXRjaAoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvaWd0LWdwdS10b29scy9wYXRjaGVzL2ktZy10LUZpeC1nbG9iYWwtc3lt Ym9sLWxvYWRpbmctZmFpbHVyZS1pbi1yZXNvbHZlLWZ1bmN0aW9uLnBhdGNoIGIvc3JjcGtncy9p Z3QtZ3B1LXRvb2xzL3BhdGNoZXMvaS1nLXQtRml4LWdsb2JhbC1zeW1ib2wtbG9hZGluZy1mYWls dXJlLWluLXJlc29sdmUtZnVuY3Rpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDBjM2I1NTRkOTk0OS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaWd0LWdwdS10b29s cy9wYXRjaGVzL2ktZy10LUZpeC1nbG9iYWwtc3ltYm9sLWxvYWRpbmctZmFpbHVyZS1pbi1yZXNv bHZlLWZ1bmN0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotZGlmZiAt LWdpdCBsaWIvaWd0X2hhbGZmbG9hdC5jIGxpYi9pZ3RfaGFsZmZsb2F0LmMKLWluZGV4IDA4YWIw NWZjLi5lNWU4YTViZCAxMDA2NDQKLS0tLSBhL2xpYi9pZ3RfaGFsZmZsb2F0LmMKLSsrKyBiL2xp Yi9pZ3RfaGFsZmZsb2F0LmMKLUBAIC0yNCw2ICsyNCwxOSBAQAotIAotICNpbmNsdWRlIDxhc3Nl cnQuaD4KLSAjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlIDxzdGRib29sLmg+Ci0rCi0rI2lm ZGVmIEhBVkVfQ1BVSURfSAotKyNpbmNsdWRlIDxjcHVpZC5oPgotKyNlbHNlCi0rI2RlZmluZSBf X2dldF9jcHVpZF9tYXgoeCwgeSkgMAotKyNkZWZpbmUgX19jcHVpZChsZXZlbCwgYSwgYiwgYywg ZCkgYSA9IGIgPSBjID0gZCA9IDAKLSsjZGVmaW5lIF9fY3B1aWRfY291bnQobGV2ZWwsIGNvdW50 LCBhLCBiLCBjLCBkKSBhID0gYiA9IGMgPSBkID0gMAotKyNlbmRpZgotKwotKyNpZm5kZWYgYml0 X0YxNkMKLSsjZGVmaW5lIGJpdF9GMTZDCSgxIDw8IDI5KQotKyNlbmRpZgotIAotICNpbmNsdWRl ICJpZ3RfaGFsZmZsb2F0LmgiCi0gI2luY2x1ZGUgImlndF94ODYuaCIKLUBAIC0xODIsNiArMTk1 LDIwIEBAIHN0YXRpYyB2b2lkIGhhbGZfdG9fZmxvYXRfZjE2Yyhjb25zdCB1aW50MTZfdCAqaCwg ZmxvYXQgKmYsIHVuc2lnbmVkIGludCBudW0pCi0gCi0gI3ByYWdtYSBHQ0MgcG9wX29wdGlvbnMK LSAKLStzdGF0aWMgYm9vbCBmMTZjX2lzX3N1cHBvcnRlZCh2b2lkKQotK3sKLSsJdW5zaWduZWQg bWF4ID0gX19nZXRfY3B1aWRfbWF4KDAsIE5VTEwpOwotKwl1bnNpZ25lZCBlYXgsIGVieCwgZWN4 LCBlZHg7Ci0rCi0rCWlmIChtYXggPj0gMSkgewotKwkJX19jcHVpZCgxLCBlYXgsIGVieCwgZWN4 LCBlZHgpOwotKwotKwkJaWYgKGVjeCAmIGJpdF9GMTZDKQotKwkJCXJldHVybiB0cnVlOwotKwl9 Ci0rCXJldHVybiBmYWxzZTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQgZmxvYXRfdG9faGFsZihjb25z dCBmbG9hdCAqZiwgdWludDE2X3QgKmgsIHVuc2lnbmVkIGludCBudW0pCi0gewotIAlmb3IgKGlu dCBpID0gMDsgaSA8IG51bTsgaSsrKQotQEAgLTE5Niw3ICsyMjMsNyBAQCBzdGF0aWMgdm9pZCBo YWxmX3RvX2Zsb2F0KGNvbnN0IHVpbnQxNl90ICpoLCBmbG9hdCAqZiwgdW5zaWduZWQgaW50IG51 bSkKLSAKLSBzdGF0aWMgdm9pZCAoKnJlc29sdmVfZmxvYXRfdG9faGFsZih2b2lkKSkoY29uc3Qg ZmxvYXQgKmYsIHVpbnQxNl90ICpoLCB1bnNpZ25lZCBpbnQgbnVtKQotIHsKLS0JaWYgKGlndF94 ODZfZmVhdHVyZXMoKSAmIEYxNkMpCi0rCWlmIChmMTZjX2lzX3N1cHBvcnRlZCgpKQotIAkJcmV0 dXJuIGZsb2F0X3RvX2hhbGZfZjE2YzsKLSAKLSAJcmV0dXJuIGZsb2F0X3RvX2hhbGY7Ci1AQCAt MjA3LDcgKzIzNCw3IEBAIHZvaWQgaWd0X2Zsb2F0X3RvX2hhbGYoY29uc3QgZmxvYXQgKmYsIHVp bnQxNl90ICpoLCB1bnNpZ25lZCBpbnQgbnVtKQotIAotIHN0YXRpYyB2b2lkICgqcmVzb2x2ZV9o YWxmX3RvX2Zsb2F0KHZvaWQpKShjb25zdCB1aW50MTZfdCAqaCwgZmxvYXQgKmYsIHVuc2lnbmVk IGludCBudW0pCi0gewotLQlpZiAoaWd0X3g4Nl9mZWF0dXJlcygpICYgRjE2QykKLSsJaWYgKGYx NmNfaXNfc3VwcG9ydGVkKCkpCi0gCQlyZXR1cm4gaGFsZl90b19mbG9hdF9mMTZjOwotIAotIAly ZXR1cm4gaGFsZl90b19mbG9hdDsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaWd0LWdwdS10b29scy9w YXRjaGVzL211c2wucGF0Y2ggYi9zcmNwa2dzL2lndC1ncHUtdG9vbHMvcGF0Y2hlcy9tdXNsLnBh dGNoCmluZGV4IDYxNWFmZGI4ZjhlYS4uNGRlNmUwY2ZkODk4IDEwMDY0NAotLS0gYS9zcmNwa2dz L2lndC1ncHUtdG9vbHMvcGF0Y2hlcy9tdXNsLnBhdGNoCisrKyBiL3NyY3BrZ3MvaWd0LWdwdS10 b29scy9wYXRjaGVzL211c2wucGF0Y2gKQEAgLTE5MSw2ICsxOTEsNyBAQCBpbmRleCA3NDkzNTQz MC4uMGRjODdkOGMgMTAwNjQ0CiArKysgYi90ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMKIEBAIC0y Nyw2ICsyNyw3IEBACiAgCis8PDw8PDw8IEhFQUQKICAjaW5jbHVkZSAiY29uZmlnLmgiCiAgCiAr I2luY2x1ZGUgPGxpbWl0cy5oPiAvLyBQQVRIX01BWApAQCAtMjkzLDMgKzI5NCwyMiBAQCBpbmRl eCAwZmFmM2ZjOC4uZjZiZDk3MGUgMTAwNjQ0CiAgI2luY2x1ZGUgPHN0ZGlvLmg+CiAgI2luY2x1 ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KKz09PT09PT0KKyAgICAgICAgIGZi byA9IGJvLT5tYXA7CitsaWIvaW9jdGxfd3JhcHBlcnMuYy5uZXcKKy0tLSBhL2JlbmNobWFya3Mv Z2VtX2V4ZWNfdHJhY2VyLmMJMjAyMi0xMi0xOCAxMDozMjoxNS43NDIzNDE5NjQgLTA1MDAKKysr KyBiL2JlbmNobWFya3MvZ2VtX2V4ZWNfdHJhY2VyLmMJMjAyMi0xMi0xOCAxMDozMjowOS44NjIy MTEzNzIgLTA1MDAKK0BAIC0yNzUsNyArMjc1LDExIEBACisgICAgIERSTV9JT1dSKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fRVhFQ0JVRkZFUjIsIHN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY2J1ZmZlcjIpCisgCisgaW50CisrI2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVk KF9fRnJlZUJTRF9fKQorIGlvY3RsKGludCBmZCwgdW5zaWduZWQgbG9uZyByZXF1ZXN0LCAuLi4p CisrI2Vsc2UKKytpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0LCAuLi4pCisrI2VuZGlmCisgewor IAlzdHJ1Y3QgdHJhY2UgKnQsICoqcDsKKyAJdmFfbGlzdCBhcmdzOworCis+Pj4+Pj4+IDYwMzAx YWUwMmYgKGlndC1ncHUtdG9vbHM6IHVwZGF0ZSB0byB2ZXJzaW9uIDEuMjYpCmRpZmYgLS1naXQg YS9zcmNwa2dzL2lndC1ncHUtdG9vbHMvdGVtcGxhdGUgYi9zcmNwa2dzL2lndC1ncHUtdG9vbHMv dGVtcGxhdGUKaW5kZXggMjI1ZTJjNzkxMThhLi4xMzc2YzM5ZDVkNWIgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvaWd0LWdwdS10b29scy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2lndC1ncHUtdG9vbHMv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpZ3QtZ3B1LXRv b2xzJwogcGtnbmFtZT1pZ3QtZ3B1LXRvb2xzCiB2ZXJzaW9uPTEuMjcuMQotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRGJfbmRlYnVn PWZhbHNlIC1EZG9jcz1kaXNhYmxlZCIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBmbGV4 IHBlZyBweXRob24zLWRvY3V0aWxzIgpAQCAtMTMsNyArMTMsNyBAQCBtYWludGFpbmVyPSJPcnBo YW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0 dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vaWd0LWdwdS10b29scyIKIGNoYW5nZWxv Zz0iaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9pZ3QtZ3B1LXRvb2xzLy0vcmF3 L21hc3Rlci9ORVdTIgotZGlzdGZpbGVzPSIke1hPUkdfU0lURX0vYXBwL2lndC1ncHUtdG9vbHMt JHt2ZXJzaW9ufS50YXIueHoiCitkaXN0ZmlsZXM9IiR7WE9SR19TSVRFfS9hcHAvJHtwa2duYW1l fS0ke3ZlcnNpb259LnRhci54eiIKIGNoZWNrc3VtPTkzYjlhNDgxNmVkMjJiNTE0NWJiNjEwMjQz MTRjOGE2NWNhZWVhOTkxY2U5MzAyNzY0M2YxZDQwNzIzYmY0MTcKICMgdGVzdHMgZG9uJ3QgYmVo YXZlIGluIGNvbnRhaW5lcnMKIG1ha2VfY2hlY2s9Y2ktc2tpcAoKRnJvbSBiMGM0NmE3OTNiZGFi ZWYxYmQxN2Y4Zjc5ODNkZjVhNzRlZGQ0MTk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMjM6MzA6 MjggLTA0MDAKU3ViamVjdDogW1BBVENIIDExNS8xNDBdIGZyZWVjYWQ6IHJldmJ1bXAgZm9yIHF0 NS13ZWJlbmdpbmUtNS4xNS4xMwoKLS0tCiBzcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUgYi9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUK aW5kZXggZjYyMDIzZWU4Y2U0Li5lMzAxZjMyZDM1NDAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZnJl ZWNhZC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmcmVlY2FkJwogcGtnbmFtZT1mcmVlY2FkCiB2ZXJz aW9uPTAuMjAuMgotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9Y21ha2UKIAog X2luc3RfcHJlZml4PS91c3IvbGliLyR7cGtnbmFtZX0KCkZyb20gMDJiNzlhYzBjNDk1ZjhmMmMy MjM3YzQzMjg3Mzc4YWE0NzVjYTM5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAzIEFwciAyMDIzIDIzOjMxOjQ1IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAxMTYvMTQwXSBzaG90Y3V0OiByZXZidW1wIGZvciBtbHQ3LTcu MTQuMAoKLS0tCiBzcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3No b3RjdXQvdGVtcGxhdGUgYi9zcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUKaW5kZXggMzI1ODMyNzdk YWIyLi44ZDhhN2EwZWJkZWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdzaG90Y3V0JwogcGtnbmFtZT1zaG90Y3V0CiB2ZXJzaW9uPTIyLjEyLjIxCi1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9 Ii1EU0hPVENVVF9WRVJTSU9OPSR7dmVyc2lvbn0iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25m aWcgcXQ1LXRvb2xzLWRldmVsIgoKRnJvbSA5OTU1ZjAwYTViNDQ5ZTYyNjg0ZWZhYzY0MGRmMGMy NDY2NGNlMDhlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMjM6MzM6MzAgLTA0MDAKU3ViamVjdDog W1BBVENIIDExNy8xNDBdIHNoaWJva2VuMjogcmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0tCiBz cmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNo IHwgMSArCiBzcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2lt cG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zaGli b2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaCBiL3NyY3BrZ3Mv c2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi5lZmNmMzI0OWJkODgKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnkt YnlwYXNzLnBhdGNoCkBAIC0wLDAgKzEgQEAKKy4uLy4uL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVz L2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUgYi9zcmNwa2dzL3No aWJva2VuMi90ZW1wbGF0ZQppbmRleCAwODRlY2MzYmExZTEuLjJhMjE5OTg5OTdlYiAxMDA2NDQK LS0tIGEvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaGlib2tlbjIv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaGlib2tlbjIn CiBwa2duYW1lPXNoaWJva2VuMgogdmVyc2lvbj01LjE1LjcKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIF9wa2duYW1lPSJweXNpZGUtc2V0dXAtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIGJ1 aWxkX3dya3NyYz0ic291cmNlcy9zaGlib2tlbjIiCiBidWlsZF9zdHlsZT1jbWFrZQoKRnJvbSA1 NWEzMTYxMGFmNDliNGQ2NjY2NzRmYmE3MWFhZGU2YWU2ZGQzYjdhIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24sIDMgQXBy IDIwMjMgMjM6MzM6NTMgLTA0MDAKU3ViamVjdDogW1BBVENIIDExOC8xNDBdIHB5dGhvbjMtcHlz aWRlMjogdXBkYXRlIHRvIDUuMTUuOAoKLS0tCiAuLi4vcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGlu ZXJ5LWJ5cGFzcy5wYXRjaCAgICAgIHwgMTUgKysrKysrKysrKysrKysrCiBzcmNwa2dzL3B5dGhv bjMtcHlzaWRlMi90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgIHwgIDkgKysrKystLS0tCiAyIGZp bGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGlu ZXJ5LWJ5cGFzcy5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3Bh dGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggYi9zcmNwa2dzL3B5dGhvbjMt cHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjRjNDI5NTg0Nzc2Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGlu ZXJ5LWJ5cGFzcy5wYXRjaApAQCAtMCwwICsxLDE1IEBACitVc2luZyB0aGlzIHByZXZlbnRzIGFu IGVycm9yIGFyb3VuZCBsaW5lIDIyMCBiZWxvdyBpdC4KKyJBdHRyaWJ1dGVFcnJvcjogbW9kdWxl ICdpbXBvcnRsaWInIGhhcyBubyBhdHRyaWJ1dGUgJ21hY2hpbmVyeSciCitUaGUgb2xkIGJhY2t1 cCBsb2dpYyBpcyBpbiBwbGFjZSBhbmQgY29tcGlsZXMgd2l0aG91dCBpc3N1ZXMuCistLS0gYS9z b3VyY2VzL3NoaWJva2VuMi9saWJzaGlib2tlbi9lbWJlZC9zaWduYXR1cmVfYm9vdHN0cmFwLnB5 CTIwMjMtMDQtMDIgMjM6MDk6MzQuNjg4OTEyNDAyIC0wNDAwCisrKysgYi9zb3VyY2VzL3NoaWJv a2VuMi9saWJzaGlib2tlbi9lbWJlZC9zaWduYXR1cmVfYm9vdHN0cmFwLnB5CTIwMjMtMDQtMDIg MjM6MTA6MDMuMzk1NTI5NTgyIC0wNDAwCitAQCAtMTcwLDkgKzE3MCw2IEBACisKKyAgICAgIyAn emlwc3RyaW5nX3NlcXVlbmNlJyBjb21lcyBmcm9tIHNpZ25hdHVyZS5jcHAKKyAgICAgemlwYnl0 ZXMgPSBiYXNlNjQuYjY0ZGVjb2RlKCcnLmpvaW4oemlwc3RyaW5nX3NlcXVlbmNlKSkKKy0gICAg aWYgc3lzLnZlcnNpb25faW5mb1swXSA+PSAzOgorLSAgICAgICAgdnppcCA9IHppcGZpbGUuWmlw RmlsZShpby5CeXRlc0lPKHppcGJ5dGVzKSkKKy0gICAgICAgIHJldHVybiBzeXMubWV0YV9wYXRo LCBFbWJlZGRhYmxlWmlwSW1wb3J0ZXIodnppcCkKKworICAgICAjIE9sZCB2ZXJzaW9uIGZvciBQ eXRob24gMi43LCBvbmx5LgorICAgICBpbXBvcnQgb3MKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0 aG9uMy1weXNpZGUyL3RlbXBsYXRlIGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUK aW5kZXggNTBlNmZmMjYwZDNiLi5iNTBlNjJiZDIxNWQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHl0 aG9uMy1weXNpZGUyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3RlbXBs YXRlCkBAIC0xLDExICsxLDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdweXRob24zLXB5c2lk ZTInCiBwa2duYW1lPXB5dGhvbjMtcHlzaWRlMgotdmVyc2lvbj01LjE1LjUKLXJldmlzaW9uPTIK K3ZlcnNpb249NS4xNS44CityZXZpc2lvbj0xCiBfcGtnbmFtZT0icHlzaWRlLXNldHVwLW9wZW5z b3VyY2Utc3JjLSR7dmVyc2lvbn0iCiBidWlsZF93cmtzcmM9InNvdXJjZXMvcHlzaWRlMiIKIGJ1 aWxkX3N0eWxlPWNtYWtlCi1jb25maWd1cmVfYXJncz0iLURQWVRIT05fRVhFQ1VUQUJMRT0vdXNy L2Jpbi9weXRob24iCitjb25maWd1cmVfYXJncz0iLURQWVRIT05fRVhFQ1VUQUJMRT0vdXNyL2Jp bi9weXRob24gLURDTUFLRV9CVUlMRF9UWVBFPU5vbmUKKyAtREJVSUxEX1RFU1RTPU9GRiIKIGhv c3RtYWtlZGVwZW5kcz0iY21ha2UgcHl0aG9uMyBzaGlib2tlbjIiCiBtYWtlZGVwZW5kcz0icHl0 aG9uMy1kZXZlbCBsaWJzaGlib2tlbjItZGV2ZWwgcXQ1LWRldmVsCiAgcXQ1LW11bHRpbWVkaWEt ZGV2ZWwgcXQ1LXRvb2xzLWRldmVsIHF0NS1wbHVnaW4tbXlzcWwgcXQ1LXBsdWdpbi1vZGJjCkBA IC0yMyw3ICsyNCw3IEBAIG1haW50YWluZXI9InlvcGl0byA8cGllcnJlLmJvdXJnaW5AZnJlZS5m cj4iCiBsaWNlbnNlPSJMR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3dpa2ku cXQuaW8vUXRfZm9yX1B5dGhvbiIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9kb3dubG9hZC5xdC5pby9v ZmZpY2lhbF9yZWxlYXNlcy9RdEZvclB5dGhvbi9weXNpZGUyL1B5U2lkZTItJHt2ZXJzaW9ufS1z cmMvJHtfcGtnbmFtZX0udGFyLnh6IgotY2hlY2tzdW09MzkyMGE0ZmIzNTMzMDAyNjBjOWJjNDZm ZjcwZjFmYjk3NWM1ZTdlZmEyMmU5ZDUxMjIyNTg4OTI4Y2UxOWIzMworY2hlY2tzdW09MjM0MzYz MDJjOGRlYjViNGNiYzc2OWIyMDVkMDk2MDRlMzhiYTgzYjQwNzA4ZWZjY2I3YmQ4YzlhZjZmNmI1 ZAogCiBidWlsZF9vcHRpb25zPSJ3ZWJlbmdpbmUiCiBkZXNjX29wdGlvbl93ZWJlbmdpbmU9IkJ1 aWxkIFF0NSBXZWJFbmdpbmUgYmluZGluZ3MiCgpGcm9tIDUyZDBmZjYyNGUyYWRkODE1MGEyZWU2 NmUyNDZhNjRlYjE5ZjFiZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIgMjAyMyAxMToxNDozNSAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMTE5LzE0MF0ga29ucXVlcm9yOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdl ZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv a29ucXVlcm9yL3RlbXBsYXRlIGIvc3JjcGtncy9rb25xdWVyb3IvdGVtcGxhdGUKaW5kZXggZDhk MGU3M2E3OGFiLi5jNWJkYmE2MDFkM2MgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva29ucXVlcm9yL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrb25xdWVyb3InCiBwa2duYW1lPWtvbnF1ZXJvcgogdmVy c2lvbj0yMy4wNC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQog Y29uZmlndXJlX2FyZ3M9Ii1EREVTS1RPUFRPSlNPTl9FWEVDVVRBQkxFPS91c3IvYmluL2Rlc2t0 b3B0b2pzb24iCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgcHl0aG9uMyBx dDUtaG9zdC10b29scyBxdDUtcW1ha2Uga2RvY3Rvb2xzCi1rY29yZWFkZG9ucyBrY29uZmlnIGdl dHRleHQiCisga2NvcmVhZGRvbnMga2NvbmZpZyBnZXR0ZXh0IgogbWFrZWRlcGVuZHM9InF0NS1k ZXZlbCBxdDUtd2ViZW5naW5lLWRldmVsIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbAogIHF0NS13ZWJj aGFubmVsLWRldmVsIHF0NS1sb2NhdGlvbi1kZXZlbCBrY211dGlscy1kZXZlbCBrZGVsaWJzNHN1 cHBvcnQtZGV2ZWwKICBrYXJjaGl2ZS1kZXZlbCBraHRtbC1kZXZlbCBrZGVzdS1kZXZlbCBrYWN0 aXZpdGllczUtZGV2ZWwiCgpGcm9tIDYxYzY1YzY3ZDcxODQzMjUyOWY2Mjk0YjI4ZTkwNjI2YjJh ZmMwMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIgMjAyMyAxMToxNDo1OCAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMTIwLzE0MF0gcXQ1LXNwZWVjaDogcmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0tCiBzcmNw a2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1zcGVlY2gvdGVt cGxhdGUgYi9zcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUKaW5kZXggM2VjZDEwZDUwNjUwLi4y ZDdkNGQ0ZDI0NTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdxdDUtc3BlZWNoJwogcGtnbmFtZT1xdDUtc3BlZWNoCiB2ZXJzaW9uPTUuMTUu NwotcmV2aXNpb249MgorcmV2aXNpb249MwogX2NvbW1pdD1kMzJmNGE0NzlkMzhhMTFmNTQ3NTk4 MDA0Yjk3NWY0MzU2NDI0YTE2CiBidWlsZF9zdHlsZT1xbWFrZQogY29uZmlndXJlX2FyZ3M9Ii0t IC1mbGl0ZSAtZmxpdGUtYWxzYSAtc3BlZWNoZCIKCkZyb20gMmEwOTA3YjhjM2YwOWRlZDY2NGE0 MWJiOTBiODRmOTA4Nzc2OWM1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCA0IEFwciAyMDIzIDE4OjM4OjUwIC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAxMjEvMTQwXSBxdDVfc3R5bGVwbHVnaW5zOiByZXZidW1wIGZvciBx dDUtNS4xNS44CgotLS0KIHNyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXN0eWxl cGx1Z2lucy90ZW1wbGF0ZQppbmRleCA5NmVkOTdkMTJjZDIuLjMwZDkzNjYwYTJhNCAxMDA2NDQK LS0tIGEvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1 LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ3F0NS1zdHlsZXBsdWdpbnMnCiBwa2duYW1lPXF0NS1zdHlsZXBsdWdpbnMKIHZlcnNpb249 NS4wLjAKLXJldmlzaW9uPTIwCityZXZpc2lvbj0yMQogX2dpdHJldj0zMzVkYmVjZTEwM2UyY2Jm NmM3Y2Y4MTlhYjY2NzJjMjk1NmIxN2IzCiBidWlsZF9zdHlsZT1xbWFrZQogaG9zdG1ha2VkZXBl bmRzPSJwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSIKCkZyb20gNDVlZDVkM2Rh NWZkOGZhMmUyYjNlMDhmYzhiZjIwZjg4NWZlYWNhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogVGh1LCAyNyBBcHIgMjAyMyAy MTo1ODozNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTIyLzE0MF0gYmxlbmRlcjogdXBkYXRlIHRv IDMuNS4xCgotLS0KIHNyY3BrZ3MvYmxlbmRlci9wYXRjaGVzL251bXB5LTIuMjQucGF0Y2ggfCAy MiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUgICAgICAg ICAgICAgICAgIHwgMTMgKysrKysrKy0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlv bnMoKyksIDI4IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmxlbmRl ci9wYXRjaGVzL251bXB5LTIuMjQucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JsZW5kZXIv cGF0Y2hlcy9udW1weS0yLjI0LnBhdGNoIGIvc3JjcGtncy9ibGVuZGVyL3BhdGNoZXMvbnVtcHkt Mi4yNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE2MzE1Yjc0YmU3Li4w MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9ibGVuZGVyL3BhdGNoZXMvbnVtcHktMi4yNC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLUZyb20gNzRlNmUwN2NmN2M2N2I1NWQz ODRkYjcyZjVhYTM4OTJkYjhhM2RhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG9y ZW82MzkgPG9yZW82MzkxQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTcgSmFuIDIwMjMgMTQ6MzY6 NTQgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIHVzYWdlIG9mIGRlcHJlY2F0ZWQgbnAu Ym9vbCBhbGlhcwotCi0tLS0KLSBhZGRvbnMvaW9fc2NlbmVfZ2x0ZjIvYmxlbmRlci9pbXAvZ2x0 ZjJfYmxlbmRlcl9tZXNoLnB5IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYWRkb25zL2lvX3NjZW5lX2dsdGYyL2Js ZW5kZXIvaW1wL2dsdGYyX2JsZW5kZXJfbWVzaC5weSBiL2FkZG9ucy9pb19zY2VuZV9nbHRmMi9i bGVuZGVyL2ltcC9nbHRmMl9ibGVuZGVyX21lc2gucHkKLWluZGV4IDYzNjY0MzRhNi4uODE2MGM5 ZTk5IDEwMDY0NAotLS0tIGEvcmVsZWFzZS9zY3JpcHRzL2FkZG9ucy9pb19zY2VuZV9nbHRmMi9i bGVuZGVyL2ltcC9nbHRmMl9ibGVuZGVyX21lc2gucHkKLSsrKyBiL3JlbGVhc2Uvc2NyaXB0cy9h ZGRvbnMvaW9fc2NlbmVfZ2x0ZjIvYmxlbmRlci9pbXAvZ2x0ZjJfYmxlbmRlcl9tZXNoLnB5Ci1A QCAtNjIwLDcgKzYyMCw3IEBAIGRlZiBzZXRfcG9seV9zbW9vdGhpbmcoZ2x0ZiwgcHltZXNoLCBt ZXNoLCB2ZXJ0X25vcm1hbHMsIGxvb3BfdmlkeHMpOgotICAgICAjIFRyeSB0byBndWVzcyB3aGlj aCBwb2x5cyBzaG91bGQgYmUgZmxhdCBiYXNlZCBvbiB0aGUgZmFjdCB0aGF0IGFsbCB0aGUKLSAg ICAgIyBsb29wIG5vcm1hbHMgZm9yIGEgZmxhdCBwb2x5IGFyZSA9IHRoZSBwb2x5J3Mgbm9ybWFs LgotIAotLSAgICBwb2x5X3Ntb290aHMgPSBucC5lbXB0eShudW1fcG9seXMsIGR0eXBlPW5wLmJv b2wpCi0rICAgIHBvbHlfc21vb3RocyA9IG5wLmVtcHR5KG51bV9wb2x5cywgZHR5cGU9Ym9vbCkK LSAKLSAgICAgcG9seV9ub3JtYWxzID0gbnAuZW1wdHkobnVtX3BvbHlzICogMywgZHR5cGU9bnAu ZmxvYXQzMikKLSAgICAgbWVzaC5wb2x5Z29ucy5mb3JlYWNoX2dldCgnbm9ybWFsJywgcG9seV9u b3JtYWxzKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlIGIvc3JjcGtncy9i bGVuZGVyL3RlbXBsYXRlCmluZGV4IGQxOGJjODg4MzhmZi4uOTAwYmMxNzkzN2MzIDEwMDY0NAot LS0gYS9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9ibGVuZGVyL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYmxlbmRlcicKIHBrZ25h bWU9YmxlbmRlcgotdmVyc2lvbj0zLjQuMQotcmV2aXNpb249NAordmVyc2lvbj0zLjUuMQorcmV2 aXNpb249MQogYXJjaHM9Ing4Nl82NCogcHBjNjQqIgogYnVpbGRfc3R5bGU9ImNtYWtlIgogcHlj b21waWxlX2RpcnM9Ii91c3Ivc2hhcmUvYmxlbmRlci8ke3ZlcnNpb24lLip9L3NjcmlwdHMiCkBA IC05LDggKzksOCBAQCBjb25maWd1cmVfYXJncz0iLURXSVRIX0lOU1RBTExfUE9SVEFCTEU9T0ZG IC1EV0lUSF9QWVRIT05fSU5TVEFMTD1PRkYKICAtRFdJVEhfSkFDSz1PTiAtRFdJVEhfQ09ERUNf RkZNUEVHPU9OIC1EV0lUSF9DT0RFQ19TTkRGSUxFPU9OIC1EV0lUSF9PUEVOTVA9T04KICAtRFdJ VEhfRkZUVzM9T04gLURXSVRIX01PRF9PQ0VBTlNJTT1PTiAtRFdJVEhfQ1lDTEVTX0VNQlJFRT1P RkYgLURXSVRIX09QRU5DT0xPUklPPU9OCiAgLURXSVRIX0lNQUdFX09QRU5FWFI9T04gLURXSVRI X0lNQUdFX09QRU5KUEVHPU9OIC1EV0lUSF9PUEVOU1VCRElWPU9OCi0gLURXSVRIX09QRU5DT0xM QURBPU9OIC1EV0lUSF9TWVNURU1fR0xFVz1PTiAtRFdJVEhfT1BFTlZEQj1PTiAtRFdJVEhfQUxF TUJJQz1PTgotIC1EV0lUSF9HSE9TVF9YMTE9T04gLURXSVRIX0dIT1NUX1dBWUxBTkQ9T04gLURX SVRIX0dIT1NUX0xJQkRFQ09SPU9OCisgLURXSVRIX09QRU5DT0xMQURBPU9OIC1EV0lUSF9PUEVO VkRCPU9OIC1EV0lUSF9BTEVNQklDPU9OCisgLURXSVRIX0dIT1NUX1gxMT1PTiAtRFdJVEhfR0hP U1RfV0FZTEFORD1PTiAtRFdJVEhfR0hPU1RfV0FZTEFORF9MSUJERUNPUj1PTgogIC1EV0lUSF9C VUlMRElORk89T0ZGIC1EUFlUSE9OX1ZFUlNJT049JHtweTNfdmVyfSAtRFBZVEhPTl9MSUJQQVRI PS91c3IvbGliCiAgLURQWVRIT05fTElCUkFSWT0ncHl0aG9uJHtweTNfdmVyfSR7cHkzX2FiaXZl cn0nCiAgLURQWVRIT05fSU5DTFVERV9ESVJTPS8ke3B5M19pbmN9IgpAQCAtMjIsMTQgKzIyLDE1 IEBAIG1ha2VkZXBlbmRzPSJsaWJnb21wLWRldmVsIGxpYnBuZy1kZXZlbCB0aWZmLWRldmVsIHB5 dGhvbjMtZGV2ZWwgZ2x1LWRldmVsCiAgb3BlbmNvbG9yaW8tZGV2ZWwgb3BlbmNvbGxhZGEtZGV2 ZWwgcHl0aG9uMy1udW1weSBsaWJYcmVuZGVyLWRldmVsCiAgT3BlblN1YmRpdi1kZXZlbCB0YmIt ZGV2ZWwgbGlieG1sMi1kZXZlbCBvcGVudmRiLWRldmVsIGFsZW1iaWMtZGV2ZWwKICBwdWdpeG1s LWRldmVsIGxpYlh4Zjg2dm0tZGV2ZWwgbGliZXBveHktZGV2ZWwgZ21wLWRldmVsIGdtcHh4LWRl dmVsCi0gd2F5bGFuZC1wcm90b2NvbHMgd2F5bGFuZC1kZXZlbCBsaWJ4a2Jjb21tb24tZGV2ZWwg bGliZGVjb3ItZGV2ZWwiCisgd2F5bGFuZC1wcm90b2NvbHMgd2F5bGFuZC1kZXZlbCBsaWJ4a2Jj b21tb24tZGV2ZWwgbGliZGVjb3ItZGV2ZWwKKyBsZXZlbC16ZXJvLWRldmVsIgogZGVwZW5kcz0i ZGVza3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNvbi10aGVtZSIKIHNob3J0X2Rlc2M9IjNEIGdy YXBoaWNzIGNyZWF0aW9uIHN1aXRlIgogbWFpbnRhaW5lcj0iRW5ubyBCb2xhbmQgPGdvdHRveEB2 b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0 cHM6Ly93d3cuYmxlbmRlci5vcmciCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQuYmxlbmRl ci5vcmcvc291cmNlL2JsZW5kZXItJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT0yNDdjNGMx MjI4MjcwYzkwMTBmNDcyMWM5ODVjYjViNjI4YWI1MGFiY2Y5ZjI2Nzg2MzA3MzcxNDJlZWI5MWMz CitjaGVja3N1bT1iZDc0MjhjN2U2Y2JhNWE5MDAyMTYyNjljMzIxMTFkZmZhYWJhZjFiZGI1NDcy ZjIzMTk2NWU2MTUxNzRhODA5CiBweXRob25fdmVyc2lvbj0zCiBMREZMQUdTPSItV2wsLXosc3Rh Y2stc2l6ZT0yMDk3MTUyIgogIyBCbGVuZGVyIHRlc3RzIGFyZSBleGVjdXRlZCBhZ2FpbnN0IGEg c3lzdGVtIGluc3RhbGxhdGlvbiBvZiBibGVuZGVyLiBUaGlzCgpGcm9tIDQwZGYxNTU4ZmE4ODQw YzgxYjY1NmJmYjViMjIxNGQ5MWIzYTExZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFRodSwgMjcgQXByIDIwMjMgMjA6NDE6 MTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDEyMy8xNDBdIE5ldyBwYWNrYWdlOiBsZXZlbC16ZXJv LTEuMTAuMAoKLS0tCiBzcmNwa2dzL2xldmVsLXplcm8tZGV2ZWwgICAgfCAgMSArCiBzcmNwa2dz L2xldmVsLXplcm8vdGVtcGxhdGUgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAy IGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNw a2dzL2xldmVsLXplcm8tZGV2ZWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xldmVsLXpl cm8vdGVtcGxhdGUKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xldmVsLXplcm8tZGV2ZWwgYi9zcmNw a2dzL2xldmVsLXplcm8tZGV2ZWwKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAw MDAwLi45NmVlOGFkZjczMDMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xldmVsLXplcm8t ZGV2ZWwKQEAgLTAsMCArMSBAQAorbGV2ZWwtemVybwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGV2ZWwtemVyby90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGV2 ZWwtemVyby90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjQ2MzFjOGM2NzUwNQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGV2ZWwtemVyby90ZW1w bGF0ZQpAQCAtMCwwICsxLDI4IEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdsZXZlbC16ZXJvJwor cGtnbmFtZT1sZXZlbC16ZXJvCit2ZXJzaW9uPTEuMTAuMAorcmV2aXNpb249MQorYXJjaHM9Ing4 Nl82NCoiCitidWlsZF9zdHlsZT1jbWFrZQoraG9zdG1ha2VkZXBlbmRzPSJjbWFrZSIKK21ha2Vk ZXBlbmRzPSJsbHZtIGNsYW5nIGNsYW5nLXRvb2xzLWV4dHJhIFNQSVJWLUxMVk0tVHJhbnNsYXRv ci1kZXZlbCIKK3Nob3J0X2Rlc2M9Im9uZUFQSSBMZXZlbCBaZXJvIFNwZWNpZmljYXRpb24iCitt YWludGFpbmVyPSJabGljZSA8emxpY2U1NTVAZ21haWwuY29tPiIKK2xpY2Vuc2U9Ik5DU0EiCito b21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL29uZWFwaS1zcmMvbGV2ZWwtemVybyIKK2Rpc3Rm aWxlcz0iJHtob21lcGFnZX0vYXJjaGl2ZS9yZWZzL3RhZ3MvdiR7dmVyc2lvbn0udGFyLmd6Igor Y2hlY2tzdW09MjgxMWU0MTI4ZmY2MTE0MDIwZDBhMTQ3YzI3NjliOWIyZTc4MmU2OGFkNDk4Mjc2 ODVjMzNiOWU3MTZiZjZhYgorCitwb3N0X2luc3RhbGwoKSB7CisJdmxpY2Vuc2UgTElDRU5TRQor fQorCitsZXZlbC16ZXJvLWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHttYWtlZGVwZW5k c30gJHtzb3VyY2Vwa2d9LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJc2hvcnRfZGVzYys9IiAt IGRldmVsb3BtZW50IGZpbGVzIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVk ZQorCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCQl2bW92ZSAidXNyL2xpYi8qLnNvIgorCX0K K30KCkZyb20gOTBmODE5YTMyMmZiMjEyY2EwZGY4ODY3ODYzOGVkNmQxMzcxMzQ4ZCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog VHVlLCAyOCBNYXIgMjAyMyAxOTo1NDo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTI0LzE0MF0g TmV3IHBhY2thZ2U6IGludGVsLW1ldHJpY3MtbGlicmFyeSAxLjAuMTMzCgotLS0KIHNyY3BrZ3Mv aW50ZWwtbWV0cmljcy1saWJyYXJ5L3RlbXBsYXRlIHwgMTkgKysrKysrKysrKysrKysrKysrKwog MSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2ludGVsLW1ldHJpY3MtbGlicmFyeS90ZW1wbGF0ZQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv aW50ZWwtbWV0cmljcy1saWJyYXJ5L3RlbXBsYXRlIGIvc3JjcGtncy9pbnRlbC1tZXRyaWNzLWxp YnJhcnkvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41 MGYxYTYwNzlkN2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLW1ldHJpY3MtbGli cmFyeS90ZW1wbGF0ZQpAQCAtMCwwICsxLDE5IEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdpbnRl bC1tZXRyaWNzLWxpYnJhcnknCitwa2duYW1lPWludGVsLW1ldHJpY3MtbGlicmFyeQordmVyc2lv bj0xLjAuMTMzCityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxlPWNtYWtl Citjb25maWd1cmVfYXJncz0iLVdkZXYtbm8gLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCito b3N0bWFrZWRlcGVuZHM9ImNtYWtlIgorbWFrZWRlcGVuZHM9ImxpYmRybS1kZXZlbCIKK3Nob3J0 X2Rlc2M9IkhlbHBlciBsaWJyYXJ5IHRoYXQgcHJvdmlkZXMgYWNjZXNzIHRvIEdQVSBwZXJmb3Jt YW5jZSBjb3VudGVycyIKK21haW50YWluZXI9IlpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+Igor bGljZW5zZT0iTUlUIgoraG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9tZXRyaWNz LWxpYnJhcnkiCitkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L2FyY2hpdmUvcmVmcy90YWdzL21ldHJp Y3MtbGlicmFyeS0ke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPTgzZjdiMmRlM2FmNWZmZDJm MWI0ODdkZjg4MzZlNmQyMTJlMTE2NjhiZDk1OGJlYmFlNjIyYTQ4M2ZiMTIzMWYKKworcG9zdF9p bnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0UubWQKK30KCkZyb20gNzEyNjliNDg4MDY3ZDNi ZjljYjczZjJlMDdmMjYwNDZjMDE5MzE2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAyOCBNYXIgMjAyMyAxOTo1NDox OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTI1LzE0MF0gTmV3IHBhY2thZ2U6IGludGVsLW1ldHJp Y3MtZGlzY292ZXJ5IDEuMTIuMTYzCgotLS0KIHNyY3BrZ3MvaW50ZWwtbWV0cmljcy1kaXNjb3Zl cnkvdGVtcGxhdGUgfCAxOSArKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTkg aW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaW50ZWwtbWV0cmljcy1k aXNjb3ZlcnkvdGVtcGxhdGUKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ludGVsLW1ldHJpY3MtZGlz Y292ZXJ5L3RlbXBsYXRlIGIvc3JjcGtncy9pbnRlbC1tZXRyaWNzLWRpc2NvdmVyeS90ZW1wbGF0 ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjYwODM1OTVlMjczYwot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvaW50ZWwtbWV0cmljcy1kaXNjb3ZlcnkvdGVtcGxh dGUKQEAgLTAsMCArMSwxOSBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAnaW50ZWwtbWV0cmljcy1k aXNjb3ZlcnknCitwa2duYW1lPWludGVsLW1ldHJpY3MtZGlzY292ZXJ5Cit2ZXJzaW9uPTEuMTIu MTYzCityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxlPWNtYWtlCitjb25m aWd1cmVfYXJncz0iLVdkZXYtbm8gLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCitob3N0bWFr ZWRlcGVuZHM9ImNtYWtlIgorbWFrZWRlcGVuZHM9ImxpYmRybS1kZXZlbCIKK3Nob3J0X2Rlc2M9 IkhlbHBlciBsaWJyYXJ5IHRoYXQgcHJvdmlkZXMgYWNjZXNzIHRvIEdQVSBwZXJmb3JtYW5jZSBk YXRhIgorbWFpbnRhaW5lcj0iWmxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4iCitsaWNlbnNlPSJN SVQiCitob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL21ldHJpY3MtZGlzY292ZXJ5 IgorZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9hcmNoaXZlL3JlZnMvdGFncy9tZXRyaWNzLWRpc2Nv dmVyeS0ke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPTZkZmU4ZDExYzU4NjI1YmYzZWJmNjU2 ZWMyYTk1ZGM5NmJiYjA1NzA1ZWM3MWM2YzNjM2RkMGVmNWNkMjMxOWMKKworcG9zdF9pbnN0YWxs KCkgeworCXZsaWNlbnNlIExJQ0VOU0UubWQKK30KCkZyb20gYjEwMzA3NjNhNTM3ZmM5NDM0ZmY3 NGQ1ZjY5MTg5ODBhZTM0ZjQyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAyNiBNYXIgMjAyMyAxMDo0ODozNCAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMTI2LzE0MF0gTmV3IHBhY2thZ2U6IGludGVsLWdyYXBoaWNzLWNv bXBpbGVyLTEuMC4xMzQ2My4xOAoKLS0tCiBzcmNwa2dzL2ludGVsLWdyYXBoaWNzLWNvbXBpbGVy L3RlbXBsYXRlIHwgMjIgKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIy IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ludGVsLWdyYXBoaWNz LWNvbXBpbGVyL3RlbXBsYXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1ncmFwaGljcy1j b21waWxlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvaW50ZWwtZ3JhcGhpY3MtY29tcGlsZXIvdGVtcGxh dGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NGQzODIxNGY5MjkK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLWdyYXBoaWNzLWNvbXBpbGVyL3RlbXBs YXRlCkBAIC0wLDAgKzEsMjIgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ludGVsLWdyYXBoaWNz LWNvbXBpbGVyJworcGtnbmFtZT1pbnRlbC1ncmFwaGljcy1jb21waWxlcgordmVyc2lvbj0xLjAu MTM0NjMuMTgKK3JldmlzaW9uPTEKK2FyY2hzPSJ4ODZfNjQqIgorYnVpbGRfc3R5bGU9Y21ha2UK K2NvbmZpZ3VyZV9hcmdzPSItV25vLWRldiAtRElHQ19PUFRJT05fX0xMVk1fUFJFRkVSUkVEX1ZF UlNJT049MTUuMC43IC1EQ0NMQU5HX0ZST01fU1lTVEVNPU9OCisgLURJR0NfT1BUSU9OX19TUElS Vl9UT09MU19NT0RFPVByZWJ1aWxkcyAtRElHQ19PUFRJT05fX1VTRV9QUkVJTlNUQUxMRURfU1BS SVZfSEVBREVSUz1PTgorIC1ESUdDX09QVElPTl9fVkNfSU5UUklOU0lDU19NT0RFPVByZWJ1aWxk cyIKK2hvc3RtYWtlZGVwZW5kcz0iZmxleCBiaXNvbiB6bGliLWRldmVsIGxpYnpzdGQtZGV2ZWwg Y21ha2UiCittYWtlZGVwZW5kcz0ibGx2bSBjbGFuZyBjbGFuZy10b29scy1leHRyYSBpbnRlbC1v cGVuY2wtY2xhbmcgaW50ZWwtdmMtaW50cmluc2ljcworIGxsZCBsbGQtZGV2ZWwgU1BJUlYtSGVh ZGVycyAgU1BJUlYtTExWTS1UcmFuc2xhdG9yLWRldmVsIFNQSVJWLVRvb2xzLWRldmVsIgorc2hv cnRfZGVzYz0iTExWTSBiYXNlZCBjb21waWxlciBmb3IgT3BlbkNMIHRhcmdldGluZyBJbnRlbCIK K21haW50YWluZXI9IlpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+IgorbGljZW5zZT0iTUlUIgor aG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9pbnRlbC1ncmFwaGljcy1jb21waWxl ciIKK2Rpc3RmaWxlcz0iJHtob21lcGFnZX0vYXJjaGl2ZS9yZWZzL3RhZ3MvaWdjLSR7dmVyc2lv bn0udGFyLmd6IgorY2hlY2tzdW09MGI5NjA4NzhhNWZlZmZkNmFhMTAxOTdjNDhiZjczYTBhM2Ex OWQwMTA1NDI4ZDQ4MTYzZTkxZGIwNDQ0MDcwYQorCitwb3N0X2luc3RhbGwoKSB7CisJdmxpY2Vu c2UgTElDRU5TRS5tZAorfQoKRnJvbSAyYmIxMWQ2YzBiYWMwZTA0ZTZmZjBhNWQ0Nzk4MmI3ZDc0 ZjhhZmVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBTdW4sIDI2IE1hciAyMDIzIDEwOjQ4OjA1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAxMjcvMTQwXSBOZXcgcGFja2FnZTogaW50ZWwtY29tcHV0ZS1ydW50aW1lLTIzLjA5LjI1 ODEyLjE0CgotLS0KIHNyY3BrZ3MvaW50ZWwtY29tcHV0ZS1ydW50aW1lL3RlbXBsYXRlIHwgMjIg KysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ludGVsLWNvbXB1dGUtcnVudGltZS90ZW1wbGF0 ZQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50ZWwtY29tcHV0ZS1ydW50aW1lL3RlbXBsYXRlIGIv c3JjcGtncy9pbnRlbC1jb21wdXRlLXJ1bnRpbWUvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xMTMyYjgzMGQzNDgKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL2ludGVsLWNvbXB1dGUtcnVudGltZS90ZW1wbGF0ZQpAQCAtMCwwICsxLDIyIEBACisj IFRlbXBsYXRlIGZpbGUgZm9yICdpbnRlbC1jb21wdXRlLXJ1bnRpbWUnCitwa2duYW1lPWludGVs LWNvbXB1dGUtcnVudGltZQordmVyc2lvbj0yMy4wOS4yNTgxMi4xNAorcmV2aXNpb249MQorYXJj aHM9Ing4Nl82NCIKK2J1aWxkX3N0eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iLVduby1kZXYg LURORU9fU0tJUF9VTklUX1RFU1RTPTEgLURTVVBQT1JUX0RHMT1PTiAtRFNVUFBPUlRfREcyPU9O IgoraG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBwa2ctY29uZmlnIgorbWFrZWRlcGVuZHM9ImdjYyBp bnRlbC1nbW1saWItZGV2ZWwgbGlidmEtZGV2ZWwgb2NsLWljZC1kZXZlbAorIGludGVsLW9wZW5j bC1jbGFuZyBpbnRlbC1ncmFwaGljcy1jb21waWxlciBsZXZlbC16ZXJvLWRldmVsCisgaW50ZWwt bWV0cmljcy1saWJyYXJ5IGludGVsLW1ldHJpY3MtZGlzY292ZXJ5IgorZGVwZW5kcz0iaW50ZWwt Z3JhcGhpY3MtY29tcGlsZXIiCitzaG9ydF9kZXNjPSJJbnRlbCBHcmFwaGljcyBDb21wdXRlIFJ1 bnRpbWUgZm9yIG9uZUFQSSBMZXZlbCBaZXJvIGFuZCBPcGVuQ0wiCittYWludGFpbmVyPSJabGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPiIKK2xpY2Vuc2U9Ik1JVCIKK2hvbWVwYWdlPSJodHRwczov L2dpdGh1Yi5jb20vaW50ZWwvY29tcHV0ZS1ydW50aW1lIgorZGlzdGZpbGVzPSIke2hvbWVwYWdl fS9hcmNoaXZlL3JlZnMvdGFncy8ke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPWFiZTJlNmQ5 ZDJhYzc3MWQ1ZjQyZWUyMzU3Y2U4OTdjYTNiMDBkYzYxODVjMDZmM2Y2Mjc3MmY3MjljN2Y4ZTEK KworcG9zdF9pbnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0UubWQKK30KCkZyb20gZTVhMDgw YjExN2RlYTQwNDIxYWMwMjk3YzEwMTJlYzVmMzAxNmMyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAyNiBNYXIgMjAy MyAxMDo0Njo1OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTI4LzE0MF0gTmV3IHBhY2thZ2U6IGlu dGVsLXZjLWludHJpbnNpY3MtMC4xMi4zCgotLS0KIHNyY3BrZ3MvaW50ZWwtdmMtaW50cmluc2lj cy90ZW1wbGF0ZSB8IDIxICsrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIx IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ludGVsLXZjLWludHJp bnNpY3MvdGVtcGxhdGUKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ludGVsLXZjLWludHJpbnNpY3Mv dGVtcGxhdGUgYi9zcmNwa2dzL2ludGVsLXZjLWludHJpbnNpY3MvdGVtcGxhdGUKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xMjk0ODJiZGY5ODUKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2ludGVsLXZjLWludHJpbnNpY3MvdGVtcGxhdGUKQEAgLTAsMCArMSwy MSBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAnaW50ZWwtdmMtaW50cmluc2ljcycKK3BrZ25hbWU9 aW50ZWwtdmMtaW50cmluc2ljcwordmVyc2lvbj0wLjEyLjMKK3JldmlzaW9uPTEKK2FyY2hzPSJ4 ODZfNjQqIgorYnVpbGRfc3R5bGU9Y21ha2UKK2NvbmZpZ3VyZV9hcmdzPSItV25vLWRldiAtRExM Vk1fRElSPS91c3IvbGliL2NtYWtlL2xsdm0gLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCito b3N0bWFrZWRlcGVuZHM9ImNtYWtlIHB5dGhvbiIKK21ha2VkZXBlbmRzPSJsbHZtIGNsYW5nIGNs YW5nLXRvb2xzLWV4dHJhIgorc2hvcnRfZGVzYz0iU2V0IG9mIGludHJpbnNpY3Mgb24gdG9wIG9m IGNvcmUgTExWTSBJUiIKK21haW50YWluZXI9IlpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+Igor bGljZW5zZT0iTUlUIgoraG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC92Yy1pbnRy aW5zaWNzIgorZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9hcmNoaXZlL3JlZnMvdGFncy92JHt2ZXJz aW9ufS50YXIuZ3oiCitjaGVja3N1bT1lZDFjMGQ5NjhjYjJmOGVlN2IyODQwYTE0YzMyNjE2Mzlm MTcwMGU4NDRmYjdkMmE4OTg1NmJhYmZmZDVlMWQxCisKKyMgVE9ETzogbGljZW5zZSBpc24ndCBi dW5kbGVkIGluIHRhcj8KKyMgICAgICAganVzdCBhZGRlZCAyIGRheXMgYWdvLi4uIG1hciAyNHRo IDIwMjMKKyNwb3N0X2luc3RhbGwoKSB7CisjCXZsaWNlbnNlIExJQ0VOU0UubWQKKyN9CgpGcm9t IGI0YmNmYmY4MDJkOWRiMTMwYWMxMTk2NjI1YmE3NjFiMmExYjMyZWMgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMjYg TWFyIDIwMjMgMTA6NDY6MTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDEyOS8xNDBdIE5ldyBwYWNr YWdlOiBpbnRlbC1vcGVuY2wtY2xhbmctMTUuMC4wCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAg ICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjcGtncy9pbnRlbC1vcGVuY2wtY2xhbmcvdGVtcGxh dGUgfCAxOCArKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9u cygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaW50ZWwtb3BlbmNsLWNsYW5nL3RlbXBs YXRlCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1vbi9zaGxpYnMKaW5kZXggZjE2 NzViYWNmZThiLi5mMmQxYmUzZDg1MTQgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIv Y29tbW9uL3NobGlicwpAQCAtMTAwOCw2ICsxMDA4LDcgQEAgbGliTExWTS0xNS5zbyBsaWJsbHZt MTUtMTUuMC43XzEKIGxpYkxMVk1TUElSVkxpYi5zby4xNSBTUElSVi1MTFZNLVRyYW5zbGF0b3It MTUuMC4wXzEKIGxpYm9tcC5zby41IGxpYm9tcC0xNS4wLjdfMQogbGlib21wdGFyZ2V0LnNvLjE1 IGxpYm9tcC0xNS4wLjdfMQorbGlib3BlbmNsLWNsYW5nLnNvLjE1IGludGVsLW9wZW5jbC1jbGFu Zy0xNS4wLjBfMQogbGliaXNvZnMuc28uNiBsaWJpc29mcy0wLjYuMjRfMQogbGlibXBhY2suc28u MCBsaWJtcGFjay0xLjAuNV8xCiBsaWJHZW9JUC5zby4xIGxpYmdlb2lwLTEuNC44XzEKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvaW50ZWwtb3BlbmNsLWNsYW5nL3RlbXBsYXRlIGIvc3JjcGtncy9pbnRl bC1vcGVuY2wtY2xhbmcvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5lNmYwOWY2YWQ3MjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLW9w ZW5jbC1jbGFuZy90ZW1wbGF0ZQpAQCAtMCwwICsxLDE4IEBACisjIFRlbXBsYXRlIGZpbGUgZm9y ICdpbnRlbC1vcGVuY2wtY2xhbmcnCitwa2duYW1lPWludGVsLW9wZW5jbC1jbGFuZwordmVyc2lv bj0xNS4wLjAKK3JldmlzaW9uPTEKK2FyY2hzPSJ4ODZfNjQqIgorYnVpbGRfc3R5bGU9Y21ha2UK K2hvc3RtYWtlZGVwZW5kcz0iY21ha2UiCittYWtlZGVwZW5kcz0ibGx2bSBjbGFuZyBjbGFuZy10 b29scy1leHRyYSBTUElSVi1MTFZNLVRyYW5zbGF0b3ItZGV2ZWwiCitzaG9ydF9kZXNjPSJMTFZN IGxpbmtlZCBvcGVuY2wtY2xhbmciCittYWludGFpbmVyPSJabGljZSA8emxpY2U1NTVAZ21haWwu Y29tPiIKK2xpY2Vuc2U9Ik5DU0EiCitob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2ludGVs L29wZW5jbC1jbGFuZyIKK2Rpc3RmaWxlcz0iJHtob21lcGFnZX0vYXJjaGl2ZS9yZWZzL3RhZ3Mv diR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09ZWExNzk2NzRlNTJiYzhjNjU4ZTI2NTVmNzZi ZTQ2N2Y3MDUyZjdkMmMzN2ViY2ZkYjEwMmRjZTY0NWFkMTQxMQorCitwb3N0X2luc3RhbGwoKSB7 CisJdmxpY2Vuc2UgTElDRU5TRQorfQoKRnJvbSA2Zjk2MTZjZWEwYTAzZGMzODdmMzMyYjIwY2Vm ZjFkNzEwZDBkMzdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDMwIEFwciAyMDIzIDIwOjIyOjI1IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAxMzAvMTQwXSBnc3RyZWFtZXIxOiB1cGRhdGUgdG8gMS4yMi4yCgotLS0KIHNy Y3BrZ3MvZ3N0cmVhbWVyMS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdHJlYW1l cjEvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdHJlYW1lcjEvdGVtcGxhdGUKaW5kZXggMzYyZmU4MmZh ZWMzLi41NzExNDhmMmZmMzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0cmVhbWVyMS90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2dzdHJlYW1lcjEvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdnc3RyZWFtZXIxJwogcGtnbmFtZT1nc3RyZWFtZXIxCi12ZXJzaW9u PTEuMjIuMQordmVyc2lvbj0xLjIyLjIKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBi dWlsZF9oZWxwZXI9ImdpciIKQEAgLTE2LDcgKzE2LDcgQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQg PG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkxHUEwtMi4wLW9yLWxhdGVyIgogaG9t ZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKIGRpc3RmaWxlcz0iJHto b21lcGFnZX0vc3JjL2dzdHJlYW1lci9nc3RyZWFtZXItJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVj a3N1bT1jZDNjYTc1OWY5MjY3NjM2MTVmZGZjZWE2M2M5NzYxMTk4YzQyODg5YmMwNjE1Y2VlYzcz ZTIyYjI0ZmRlNzcxCitjaGVja3N1bT1iMmFmZTczNjAzOTIxYzYwOGJhNDg5NjlkYmI3ZDc0Mzc3 Njc0NGJmZTVkODA1OWVjZTI0MTEzN2I3Zjg4ZTIxCiAKIHByZV9jaGVjaygpIHsKIAkjIGdzdF9n c3RkYXRldGltZSBpcyBrbm93biB0byBmYWlsIGFjY29yZGluZyB0byBMRlMKCkZyb20gM2M2ODEz MmU5MzM0NzcxYTU0MGI4NTM0ZjNiZjhmZDQ1M2Y2N2ZmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAzMCBBcHIgMjAy MyAyMDoyMjoyNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTMxLzE0MF0gZ3N0LXBsdWdpbnMtYmFz ZTE6IHVwZGF0ZSB0byAxLjIyLjIKCi0tLQogc3JjcGtncy9nc3QtcGx1Z2lucy1iYXNlMS90ZW1w bGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhc2UxL3RlbXBsYXRlIGIv c3JjcGtncy9nc3QtcGx1Z2lucy1iYXNlMS90ZW1wbGF0ZQppbmRleCA2ZDJjYWQxNmY5ODUuLjJm MjBlYTgxOTg0OSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYXNlMS90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhc2UxL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXBsdWdpbnMtYmFzZTEnCiBwa2duYW1lPWdzdC1w bHVnaW5zLWJhc2UxCi12ZXJzaW9uPTEuMjIuMQordmVyc2lvbj0xLjIyLjIKIHJldmlzaW9uPTEK IGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9ImdpciIKQEAgLTIyLDcgKzIyLDcgQEAg bWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQ TC0yLjAtb3ItbGF0ZXIsIExHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0 cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKIGRpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjLyR7cGtn bmFtZS8xL30vJHtwa2duYW1lLzEvfS0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3VtPTU5YmNh ZWFjYzU2NDZiOGRiZGNmYTRlZjIwY2E2ZTgxOGRkMjM0OTEwZWZiNGNlZTFiYmVhNDQxYTM4MDFj NjkKK2NoZWNrc3VtPWViNjUxMjBjNGVlNzliN2ExNTNjM2MxOTcyZDVjMDE1OGMyMTUxODc3Y2M1 MWVjNzcyNWJiYTU3NDk2NzlkNDkKIAogYnVpbGRfb3B0aW9ucz0iY2RwYXJhbm9pYSBnaXIgc25k aW8gd2F5bGFuZCIKIGJ1aWxkX29wdGlvbnNfZGVmYXVsdD0iY2RwYXJhbm9pYSBnaXIgd2F5bGFu ZCIKCkZyb20gMDQ0N2I0MDIxMjdkMTBhN2JhYTYwYzk3MWEwNmIxODU1M2NkYTkwOSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog U3VuLCAzMCBBcHIgMjAyMyAyMDoyMjoyNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTMyLzE0MF0g Z3N0LXBsdWdpbnMtZ29vZDE6IHVwZGF0ZSB0byAxLjIyLjIKCi0tLQogc3JjcGtncy9nc3QtcGx1 Z2lucy1nb29kMS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWdv b2QxL3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtcGx1Z2lucy1nb29kMS90ZW1wbGF0ZQppbmRleCAw MGJhYTY3MzJjNzUuLjVkMGZlMWJmZTI4NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lu cy1nb29kMS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWdvb2QxL3RlbXBsYXRl CkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXBsdWdpbnMtZ29vZDEn CiBwa2duYW1lPWdzdC1wbHVnaW5zLWdvb2QxCi12ZXJzaW9uPTEuMjIuMQordmVyc2lvbj0xLjIy LjIKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURkdj1k aXNhYmxlZCAtRGR2MTM5ND1kaXNhYmxlZCAtRHNob3V0Mj1kaXNhYmxlZCAtRHF0NT1lbmFibGVk CkBAIC0yMiw3ICsyMiw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4 Lm9yZz4iCiBsaWNlbnNlPSJMR1BMLTIuMS1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dz dHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3Br Z25hbWUvMS99LyR7cGtnbmFtZS8xL30tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT00NGY5 MTA0NjU0YjRmZDA0MmFlYmU5MDkzMmFiOTJlN2ZmN2Q4NDYwZmJjMDViMjNkYWQ4N2RmZmU3MDk3 NGNjCitjaGVja3N1bT03YzhjYzU5NDI1ZjJiMjMyZjYwY2E3ZDEzZTU2ZWRkNjE1ZGE0ZjcxMWU3 M2RkMDFhN2NmZmE0NmU2YmMwY2RkCiAKIGJ1aWxkX29wdGlvbnM9Imd0azMgd2F5bGFuZCIKIGJ1 aWxkX29wdGlvbnNfZGVmYXVsdD0iZ3RrMyB3YXlsYW5kIgoKRnJvbSAwMmFmMmUzZTY0OWQ4NGE3 ZTExNDkwYjRjZTIzNzFiYWNiOGYzMDhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDMwIEFwciAyMDIzIDIwOjIyOjI2 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMzMvMTQwXSBnc3QtcGx1Z2lucy1iYWQxOiB1cGRhdGUg dG8gMS4yMi4yCgotLS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZSB8IDYgKysr LS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0 LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQppbmRleCA3ZjI3MmY5MTVhYzQuLjc3YmY3OTk4MWMyMCAx MDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLWJhZDEnCiBwa2duYW1lPWdzdC1wbHVnaW5zLWJhZDEKLXZl cnNpb249MS4yMi4xCi1yZXZpc2lvbj0yCit2ZXJzaW9uPTEuMjIuMgorcmV2aXNpb249MQogYnVp bGRfaGVscGVyPSJnaXIiCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EcGFj a2FnZS1vcmlnaW49aHR0cHM6Ly92b2lkbGludXgub3JnIC1EZG9jPWRpc2FibGVkCkBAIC0zNiw3 ICszNiw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBs aWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyLCBMR1BMLTIuMS1vci1sYXRlciIKIGhvbWVwYWdlPSJo dHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9 L3NyYy8ke3BrZ25hbWUvMS99LyR7cGtnbmFtZS8xL30tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVj a3N1bT0yZjM5YjZmMjIyZDk4NjY2ZjlmZjQyMGEwMDIzM2UzMzY5NDk5NTNhODQ2MjM3YzJiZmFm Yzg4MDVmNTA5ZjBlCitjaGVja3N1bT0zZDhmYWYxY2UzNDAyYzg1MzVjZTNhOGM0ZTFhNmM5NjBl NGI1NjU1ZGJkYTZiNTU5NDNkYjlhYzc5MDIyZDBmCiAKIGJ1aWxkX29wdGlvbnM9ImdpciBnbWUg d2F5bGFuZCIKIGJ1aWxkX29wdGlvbnNfZGVmYXVsdD0iZ2lyIHdheWxhbmQiCgpGcm9tIDEwNjdl MTAxYTQwMDA4ZjNkY2MyOTU4ZTEyODI2YTdiYjdlZjQ3ODIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMzAgQXByIDIw MjMgMjA6MjI6MjYgLTA0MDAKU3ViamVjdDogW1BBVENIIDEzNC8xNDBdIGdzdC1wbHVnaW5zLXVn bHkxOiB1cGRhdGUgdG8gMS4yMi4yCgotLS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMtdWdseTEvdGVt cGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcGx1Z2lucy11Z2x5MS90ZW1wbGF0ZSBi L3NyY3BrZ3MvZ3N0LXBsdWdpbnMtdWdseTEvdGVtcGxhdGUKaW5kZXggNTY0N2MwMTJjOWZlLi44 NWFlNjRiYzdhMGEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtdWdseTEvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9nc3QtcGx1Z2lucy11Z2x5MS90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLXVnbHkxJwogcGtnbmFtZT1nc3Qt cGx1Z2lucy11Z2x5MQotdmVyc2lvbj0xLjIyLjEKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0x CiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EYW1ybmI9ZGlzYWJsZWQgLURh bXJ3YmRlYz1kaXNhYmxlZCAtRHNpZHBsYXk9ZGlzYWJsZWQiCkBAIC0xNSw0ICsxNSw0IEBAIG1h aW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJMR1BM LTIuMS1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5v cmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWUvMS99LyR7cGtnbmFtZS8x L30tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT00YWIzZDllMTM0ODFiY2UxY2EzYzdjNGJi MWY2NWRjZTRmMGJiNDBmYjFjYWM0NDE2ZThjMDZkZDY0ODgxNWMyCitjaGVja3N1bT04ZjMwZjQ0 ZGIwYmQwNjM3MDliZjZmYmU1NTEzOGUzYTk4YWYwYWJjYjYxYzM2MGYzNTU4MmJiZTEwZTgwNjkx CgpGcm9tIDRiZWE0NzVkYzZhOTNmNTVhNDc5ZjE3ZmIzMmJhNTY0MDgzYzZhMzMgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1 biwgMzAgQXByIDIwMjMgMjA6MjI6MjYgLTA0MDAKU3ViamVjdDogW1BBVENIIDEzNS8xNDBdIGdz dC1vbXg6IHVwZGF0ZSB0byAxLjIyLjIKCi0tLQogc3JjcGtncy9nc3Qtb214L3RlbXBsYXRlIHwg NCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LW9teC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LW9teC90 ZW1wbGF0ZQppbmRleCA3NjY5MmMyYTEzZjYuLjVhZDU0Y2M3YjlkOCAxMDA2NDQKLS0tIGEvc3Jj cGtncy9nc3Qtb214L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LW9teC90ZW1wbGF0ZQpAQCAt MSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1vbXgnCiBwa2duYW1lPWdzdC1v bXgKLXZlcnNpb249MS4yMi4xCit2ZXJzaW9uPTEuMjIuMgogcmV2aXNpb249MQogYnVpbGRfc3R5 bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRGV4YW1wbGVzPWRpc2FibGVkIC1EdGFyZ2V0PWdl bmVyaWMiCkBAIC0xMSw0ICsxMSw0IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9p ZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJMR1BMLTIuMS1vbmx5IgogaG9tZXBhZ2U9Imh0dHBzOi8v Z3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKIGRpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjLyR7 cGtnbmFtZX0vJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3VtPTJkMzdmNjBj ZDMzZTY4ZGNlZjBiY2QwOWIyZGQ4YTBiMmViM2FiNmQ2YWMxNzJkY2E0NmY3MGViMDI3NTY2ODcK K2NoZWNrc3VtPTFiMGM1N2YyY2M0ZGRlZWM1ZTdmMGM0MzZlNTAyZjA2NjY1YzRlOTNjNzMyNjE4 NTViOTRlMDRmYzk0MzM3YjIKCkZyb20gYmMxYWQyNDgzZjQyZTc4ZWNkMDRkN2VjNTcxOWEwMDQ4 NGU3NjlmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogU3VuLCAzMCBBcHIgMjAyMyAyMDoyMjoyNiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMTM2LzE0MF0gZ3N0LXJ0c3Atc2VydmVyOiB1cGRhdGUgdG8gMS4yMi4yCgotLS0KIHNy Y3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0 LXJ0c3Atc2VydmVyL3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUK aW5kZXggZGVkOWE2OWEyZTlkLi4yZjBjMGM0NWZmODIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0 LXJ0c3Atc2VydmVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBs YXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXJ0c3Atc2VydmVy JwogcGtnbmFtZT1nc3QtcnRzcC1zZXJ2ZXIKLXZlcnNpb249MS4yMi4xCit2ZXJzaW9uPTEuMjIu MgogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyBweXRob24zIgpAQCAtMTEsNCArMTEsNCBAQCBtYWludGFpbmVyPSIxaXM3YWMzIDxpc2Fh Yy5xYTEzQGdtYWlsLmNvbT4iCiBsaWNlbnNlPSJMR1BMLTIuMS1vci1sYXRlciIKIGhvbWVwYWdl PSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBh Z2V9L3NyYy8ke3BrZ25hbWV9LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1 bT00ZTBiOTcyNjA4ZjY3ZDVkOGY1MzYzYzgyN2NmY2YxMzJiMGUwMDg3N2JlNmYxOTA1MzU4ZDUx NDI0OWIwNWEzCitjaGVja3N1bT0yYmU0YWVjZmI4ODcxMDEwMGVhNzExNWVkMDIxNjQwM2U4MDk0 MzQ0ZWJmMTQ2MDk0MjcxYjhkNGQ3MzgyOGJmCgpGcm9tIDgxODA1OTM2Y2Q1MDJkZmRjYWVmYWQ4 ZmEyNDQwY2VkYjVhZmI1OTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMzAgQXByIDIwMjMgMjA6MjI6MjYgLTA0MDAK U3ViamVjdDogW1BBVENIIDEzNy8xNDBdIGdzdDEtZWRpdGluZy1zZXJ2aWNlczogdXBkYXRlIHRv IDEuMjIuMgoKLS0tCiBzcmNwa2dzL2dzdDEtZWRpdGluZy1zZXJ2aWNlcy90ZW1wbGF0ZSB8IDQg KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2dzdDEtZWRpdGluZy1zZXJ2aWNlcy90ZW1wbGF0ZSBiL3NyY3Br Z3MvZ3N0MS1lZGl0aW5nLXNlcnZpY2VzL3RlbXBsYXRlCmluZGV4IGYyMDQ1YWQ2MDQzYy4uMTAy NDQwZjdmMjUzIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdDEtZWRpdGluZy1zZXJ2aWNlcy90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2dzdDEtZWRpdGluZy1zZXJ2aWNlcy90ZW1wbGF0ZQpAQCAtMSw2 ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdDEtZWRpdGluZy1zZXJ2aWNlcycKIHBr Z25hbWU9Z3N0MS1lZGl0aW5nLXNlcnZpY2VzCi12ZXJzaW9uPTEuMjIuMQordmVyc2lvbj0xLjIy LjIKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9ImdpciIKQEAg LTEyLDcgKzEyLDcgQEAgbWFpbnRhaW5lcj0iVG95YW0gQ294IDxWYWVsYXRlcm5AZ21haWwuY29t PiIKIGxpY2Vuc2U9IkxHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVh bWVyLmZyZWVkZXNrdG9wLm9yZyIKIGRpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjLyR7cGtnbmFt ZS9nc3QxL2dzdH0vJHtwa2duYW1lL2dzdDEvZ3N0fS0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNr c3VtPTBmOWU1ZTA4ZWY4MGE0YjlhMGU5NzFjNWYwMzJiMTNjNzFhYTZmZWYyMzYyNjVjMmQ2MTU0 NTZlMTUxNjE0MzgKK2NoZWNrc3VtPTQ1M2IxNDY0ZmMzODU3ZGUyNjlhN2NiMGViZDk2NmFmZTAy MTcxZDk3YmVmNjcyYTBiOGEwYTZkNDNlMGNlYmYKIAogZG9fY2hlY2soKSB7CiAJOiAjIFRlc3Rz IGZhaWwgaW4gb2xkZXIgdmVyc2lvbnMgYXMgd2VsbAoKRnJvbSBmZmNiNjNkZmQ1MGI4MWM0ODBj N2RiNTc2ZDk3OTY4ODk4YmM2MGFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDMwIEFwciAyMDIzIDIwOjIyOjI2IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAxMzgvMTQwXSBnc3QxLXB5dGhvbjM6IHVwZGF0ZSB0byAxLjIy LjIKCi0tLQogc3JjcGtncy9nc3QxLXB5dGhvbjMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9nc3QxLXB5dGhvbjMvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdDEtcHl0aG9uMy90ZW1wbGF0 ZQppbmRleCA3YThkMDk0ZWY2MWYuLjc4OWU0MGYwMzZlYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9n c3QxLXB5dGhvbjMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QxLXB5dGhvbjMvdGVtcGxhdGUK QEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QxLXB5dGhvbjMnCiBwa2du YW1lPWdzdDEtcHl0aG9uMwotdmVyc2lvbj0xLjIyLjEKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lv bj0xCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHB5dGhv bjMiCkBAIC0xMSw0ICsxMSw0IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxp bnV4Lm9yZz4iCiBsaWNlbnNlPSJMR1BMLTIuMS1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczov L2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy9n c3QtcHl0aG9uL2dzdC1weXRob24tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT05NjAwOGE0 NDFkNjg1YTY0Mjc1YTUxNWI4OTNjY2FkMGZlYTFkNTYwYzQzYWNkMDc2MzUzM2UxN2YzYTEzZWJi CitjaGVja3N1bT1iZWYyYjNkODJjZTRiZTQ2Yjc3NWIxYmI1NjMwNWMxMDAzZWUwMWI1MzVhNTNh ODJmOWZlODkyNDk3MjE1M2FkCgpGcm9tIDgxZmQ1NjQ1ZDdhZDI1M2MwMWJjODcwNGJlYjdiYzUw MmZmMTliYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFN1biwgMzAgQXByIDIwMjMgMjA6MjI6MjYgLTA0MDAKU3ViamVjdDog W1BBVENIIDEzOS8xNDBdIGdzdHJlYW1lci12YWFwaTogdXBkYXRlIHRvIDEuMjIuMgoKLS0tCiBz cmNwa2dzL2dzdHJlYW1lci12YWFwaS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dz dHJlYW1lci12YWFwaS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0cmVhbWVyLXZhYXBpL3RlbXBsYXRl CmluZGV4IGMxMDBkOTllOWFmMS4uMGE1ZWU4YjFjYTNmIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dz dHJlYW1lci12YWFwaS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdHJlYW1lci12YWFwaS90ZW1w bGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdHJlYW1lci12YWFw aScKIHBrZ25hbWU9Z3N0cmVhbWVyLXZhYXBpCi12ZXJzaW9uPTEuMjIuMQordmVyc2lvbj0xLjIy LjIKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWciCkBAIC0xMSw3ICsxMSw3IEBAIGxpY2Vuc2U9IkxHUEwtMi4xLW9yLWxhdGVyIgogaG9t ZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKIGNoYW5nZWxvZz0iaHR0 cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0dTdHJlYW1lci9nc3RyZWFtZXItdmFhcGkv bWFzdGVyL0NoYW5nZUxvZyIKIGRpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjL2dzdHJlYW1lci12 YWFwaS9nc3RyZWFtZXItdmFhcGktJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT00MjNiNTdk YjdmYzVmOTEzN2RhZGYxN2NiMzg1M2E0NzQzOGQ2M2NkNGJhNjg4OWE4ODJlNjNmYjViZTk5N2Jj CitjaGVja3N1bT1kMmU2NDJmOTc0NWY5N2Q5ZjczYTdmNTA4NWU3NjU5YTlhMzFmZTIwOWI3NzRl NmU0NWRhZTA0MWI0MzVkZjA2CiAKIHByZV9jaGVjaygpIHsKIAkjIFNlZW1zIHRvIG5lZWQgY2Vy dGFpbiBoYXJkd2FyZSB0byBwYXNzCgpGcm9tIDFhMzgwZWQzMmE4YzNmZTVkNTA4Y2M2YTRhZjVm NzJmOWU5NjViOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMzAgQXByIDIwMjMgMjA6MjI6MjYgLTA0MDAKU3ViamVj dDogW1BBVENIIDE0MC8xNDBdIGdzdC1saWJhdjogdXBkYXRlIHRvIDEuMjIuMgoKLS0tCiBzcmNw a2dzL2dzdC1saWJhdi90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1saWJhdi90 ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCmluZGV4IGEyYzk3YmZiY2RiOS4u OGM3MmZjM2U5N2VlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2dzdC1saWJhdicKIHBrZ25hbWU9Z3N0LWxpYmF2Ci12ZXJzaW9uPTEuMjIuMQor dmVyc2lvbj0xLjIyLjIKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRl cGVuZHM9InBrZy1jb25maWcgeWFzbSIKQEAgLTExLDcgKzExLDcgQEAgbWFpbnRhaW5lcj0iT3Jw aGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkxHUEwtMi4wLW9yLWxhdGVy IgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKIGRpc3RmaWxl cz0iJHtob21lcGFnZX0vc3JjLyR7cGtnbmFtZX0vJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci54 eiIKLWNoZWNrc3VtPWM5NThlODI1ZGMzYWMzYjdhNDgxZjhkYjUyNjgxMzFhMWNkNzAxMzEyMzg1 YzJkODAzZGM2M2M4ZTQ2MGI1ZmIKK2NoZWNrc3VtPWZjYWFmOTg3OGZlOGYzYmM4MjMxN2VmMTNh MTU1ODgyNGNiNjhkZjFmODk2OGM2Nzk3ZjU1NmM1ZTMzYmNmZmQKIAogY2FzZSAiJFhCUFNfVEFS R0VUX01BQ0hJTkUiIGluCiAJKi1tdXNsKSAjIFJlcXVpcmVkIGJ5IG11c2wgZm9yIE1fU1FSVDFf Mgo= --===============3175329988513185431==--