From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 31149 invoked from network); 5 May 2023 18:04:50 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 5 May 2023 18:04:50 -0000 Content-Type: multipart/mixed; boundary="===============8607413357142639109==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_ffmpeg6_split?= To: ml@inbox.vuxu.org From: zlice Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Fri, 05 May 2023 20:04:50 +0200 List-Id: Message-ID: <20230505180450.vAmFRxD_v2LGcv-gP66daBlkefGUQ_CtMlRoNiSqjK4@z> GitHub notification mails are now in MIME to allow UTF8. --===============8607413357142639109== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgemxpY2UgYWdhaW5zdCBtYXN0ZXIg b24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL3psaWNl L3ZvaWQtcGFja2FnZXMgZmZtcGVnNi1zcGxpdApodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NjEKCmZmbXBlZzYgc3BsaXQKW2NpIHNraXBdDQoNCg0K IyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQoNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhp cyBQUjogKipZRVMqKg0KDQptYWluIHRlc3RpbmcgaGFzIGJlZW4gdmFhcGkgaW4gRmlyZWZveCBO aWdodGx5IGFuZCBlbmMvZGVjIGluIFNob3RjdXQgb24gSW50ZWwgQTc3MA0KDQojIyMjIE5ldyBw YWNrYWdlDQoNCi0gVGhpcyBuZXcgcGFja2FnZSBjb25mb3JtcyB0byB0aGUgW3BhY2thZ2UgcmVx dWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Js b2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCNwYWNrYWdlLXJlcXVpcmVtZW50cyk6ICoqWUVTKioN Cg0KIyMjIyBMb2NhbCBidWlsZCB0ZXN0aW5nDQoNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkg Zm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsICoqeDg2XzY0KioNCg0KIyMjIyBEaXNjdXNzaW9u DQoNCkNvbnRpbnVhdGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBh Y2thZ2VzL3B1bGwvMzYzMTUNCg0KYGxpYmF2cmVzYW1wbGVgIGlzIGRlcHJlY2F0ZWQsIGJ1dCBt YXJrZWQgYXMgYSBkZXBlbmRlbmN5IHdoZW4gdHJ5aW5nIHRvIGJ1aWxkIG90aGVyIHBhY2thZ2Vz IGFuZCBpbnN0YWxsIGBmZm1wZWdgKDUpLiBJIHRoaW5rIHRoZSByaWdodCB3YXkgdG8gaGFuZGxl IHRoaXMgaXMgbWFrZSBhIG1ldGEgcGFja2FnZSBhbmQgdGhlIGFkZCB0byByZW1vdmFscz8NCg0K DQojIyMjIyBDb21taXQgbmFtaW5nIC8gbWlzYw0KDQpDb21taXRzIGFyZSAnZGlydHknIHJpZ2h0 IG5vdywgcnVubmluZyB3aXRoIFtnc3RyZWFtZXIgMS4yMi4xIHVwZGF0ZXNdKGh0dHBzOi8vZ2l0 aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80Mjg2MSkgYW5kIFtJbnRlbCBP cGVuQ0xdKGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80 MzA4NCkuIFRoaXMgd2lsbCBhbHNvIG1ha2UgW2ludGVsIHBhY2thZ2VzIHByXShodHRwczovL2dp dGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDExMzIpIG9ic29sZXRlLg0K DQpNYWludGFpbmVyIGZvciBwcmV2aW91cyBmZm1wZWcoNCkgd2FzIG9ycGhhbmVkLCBJIGNhbiBw dXQgbXkgbmFtZSBpbiB0aGVyZSBpZiB0aGF0IG1hdHRlcnMsIHRob3VnaCBJIGRvbid0IGV4YWN0 bHkgc2VlIG15c2VsZiBrZWVwaW5nIHVwIG9uIGZmbXBlZy4NCg0KVGhpcyB1cGRhdGVzIFFUNSB3 aGljaCBsb29rcyBsaWtlIGl0IGlzIHVzdWFsbHkgaG9zdGVkIGJ5IEpvaG5ueS4gTm90IHN1cmUg aWYgdGhlcmUncyBhbnkgcmVhc29uIHRvIHN0YXkgdGhlcmUgb3IgdGhlc2Ugc291cmNlcyBhcmUg ZmluZS4NCg0KIyMjIyMgU1RJTEwgRkZNUEVHNA0KDQpUaGVzZSBhcmUgYSBtaXggb2YgZW11bGF0 b3JzLCBnYW1lcyBhbmQvb3Igb2xkZXIgcGFja2FnZXMuDQoNCi0gYXR0cmFjdCAobXVsdGlwbGUg cGF0Y2hlcyBpbiBtYXN0ZXIpDQotIGF1ZGFjaXR5ICAoMy4yLngrIHNob3VsZCB3b3JrIGJ1dCBy ZXF1aXJlcyB3eFdpZGdldHMgZGV2IDMuMS54KQ0KLSBjY2V4dHJhY3RvciAobWFzdGVyIHBhdGNo ZXM/IG5vIHJlbGVhc2UpDQotIHZpY2UNCi0ga29kaQ0KLSBtbHQNCi0gc3luZmlnIChtbHQpDQot IHR2aGVhZGVuZA0KLSBzc3INCi0gc3Blay1hbHRlcm5hdGl2ZQ0KLSBwcHNzcHANCi0gb2xpdmUN Ci0gbW9jDQotIG1lZGlhc3RyZWFtZXINCi0gbGliZXh0cmFjdG9yDQotIGlkamMNCi0gaGVkZ2V3 YXJzDQotIGZmbXBlZ3RodW1ibmFpbGVyDQotIGZmbXBlZ3RodW1icw0KLSBkZWFkYmVlZg0KLSBv bXhwbGF5ZXINCi0gcXRhdiAoZm9yayBoYXMgZmZtcGVnIDUgcGF0Y2ggLSBodHRwczovL2dpdGh1 Yi5jb20vY21ndW8vUXRBVikNCi0gYHZsY2AgKHZsYzQgd2lsbCBzdXBwb3J0IGZmbXBlZzUsIHRo ZXJlJ3MgYSBwYXRjaCB0byBidWlsZCAzLnggd2l0aCBmZm1wZWc1IGJ1dCBpdCB3aWxsIGxhY2sg dmFhcGkpDQotIGBvc2dgIChPcGVuU2NlbmVHcmFwaCBwbHVzIGB4aW5lLWxpYmApDQotIGB5dG1k bGAgPyBub3Qgc3VyZSBidXQgaXQgdXNlcyBgcHl0aG9uMy1mZm1wZWctcHl0aG9uYCB3aGljaCBi ZWluZyA2LTh5ciBvbGQgSSBpbWFnaW5lIGlzIGZmbXBlZzQNCg0KDQojIyMjIyBIQVZFIE5PVCBC VUlMVCBZRVQNCg0KLSBvbXhwbGF5ZXIgKHJwaSBvbmx5PykNCi0ga29kaSAoYmlnLCBidXQgZmZt cGVnNCkNCg0KDQojIyMjIyBVUERBVEVEIChmb3IgZmZtcGVnNSkNCg0KLSB1bnBhcGVyOiB1cGRh dGUgdG8gNy4wLjAuDQotIGd1dmN2aWV3OiB1cGRhdGUgdG8gMi4wLjguDQotIHF0NTogdXBkYXRl IHRvIDUuMTUuOA0KLSBxdDUtd2ViZW5naW5lOiB1cGRhdGUgdG8gNS4xOC4xMw0KLSBzaGlib2tl bjI6IHJldmJ1bXAgZm9yIHF0NS4xNS44IChwYXRjaCkNCi0gcHl0aG9uMy1weXNpZGUyOiB1cGRh dGUgdG8gNS4xNS44IChwYXRjaCkNCgoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9naXRodWIu Y29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQzNzYxLnBhdGNoIGlzIGF0dGFjaGVk --===============8607413357142639109== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSBmZmJhYWMyNGMxY2JlYzUwNmFmMjBlOWY1ZTA0NGNjMTlkOWE3ZTI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDE5OjU1OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTMwXSBmZm1w 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 CQl2bW92ZSB1c3IvaW5jbHVkZQogCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZwoKRnJvbSBjYWVj OGZkYzc4MjljMDFiNjdmYzM3ZmE4NGI5ZDdhODRmYzE0NzYxIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDE5OjU2OjIyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDIvMTMwXSBOZXcgcGFja2FnZTog 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 bmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKRnJvbSBhMzdiN2RjM2I5MjMyYzI3ZWVjMWE2ZWE1MWY0 ZWViNTdkMzg3OTNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU5OjA0IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMDMvMTMwXSBvcGVuY3Y6IHVwZGF0ZSB0byA0LjcuMC4KCi0tLQogY29tbW9u 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 IHdpdGggdGVzdCBkYXRhIGluY2x1ZGVkCiBtYWtlX2NoZWNrPW5vCgpGcm9tIGE1ZTQzNzkxMTIx NDc0MDNmNDM4YWE4MGFiZDkyN2VmOTgxZDY2MjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6 NTk6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNC8xMzBdIGFjdGlvbmE6IHJldmJ1bXAgZm9y IG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUgYi9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKaW5kZXgg Y2Y1ZjBiN2EyYWU2Li4wZDg5OTMxMWU2ZGYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWN0aW9uYS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdhY3Rpb25hJwogcGtnbmFtZT1hY3Rpb25hCiB2ZXJzaW9uPTMu MTAuMQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3Vy ZV9hcmdzPSJQS0dDT05GSUdfT1BFTkNWPW9wZW5jdjQiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWcgcXQ1LXBsdWdpbi1teXNxbCBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCgpGcm9tIDA1 YmZkODk2ZmZmMDFhNzk4YTkwMDQwNTk2M2M3YjNkNzE1YWFkM2YgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMTk6NTk6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNS8xMzBdIGdtaWM6IHJldmJ1 bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL2dtaWMvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2dtaWMvdGVtcGxhdGUgYi9zcmNwa2dzL2dtaWMvdGVtcGxhdGUKaW5kZXggMjRh OWM3MjE4ZmRmLi4wYmI0MDM0ZDVjYzggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ21pYy90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2dtaWMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdnbWljJwogcGtnbmFtZT1nbWljCiB2ZXJzaW9uPTMuMS42Ci1yZXZpc2lvbj0z CityZXZpc2lvbj00CiBfemFydF9oYXNoPTM0ZWJmNmNjZTBiYWZiOThhYmU1N2NlYzgzYzRhMDJj ZDFhYmVjYTAKIGNyZWF0ZV93cmtzcmM9eWVzCiBidWlsZF93cmtzcmM9InNyYyIKCkZyb20gZDYy Yjg0OTQzMDViZDg2ZjI1ZmQzYmI2MzdhYWI2MmM1OGQ3MDc3ZCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA2LzEzMF0gcWltZ3Y6IHJldmJ1 bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL3FpbWd2L3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKaW5kZXgg N2ViMzBkYjMzOTkyLi5kZDM0MWRmZTFiZmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcWltZ3YvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3FpbWd2JwogcGtnbmFtZT1xaW1ndgogdmVyc2lvbj0xLjAuMgotcmV2 aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIk KHZvcHRfaWYgdmlkZW8gLURWSURFT19TVVBQT1JUPU9OIC1EVklERU9fU1VQUE9SVD1PRkYpCiAg JCh2b3B0X2lmIHNjYWxlIC1ET1BFTkNWX1NVUFBPUlQ9T04gLURPUEVOQ1ZfU1VQUE9SVD1PRkYp CgpGcm9tIDEzN2UxYzM5ZjZlOTMxMWQ1NDg0YWM2YTI4NjJlN2E3ZDMwNmVjNWIgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNy8xMzBdIHJl dHJvc2hhcmU6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL3JldHJvc2hh cmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgYi9zcmNw a2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKaW5kZXggOGEwNzg2YzIxYTA4Li43MjAyM2ZhOThiNzUg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmV0cm9zaGFyZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Jl dHJvc2hhcmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdy ZXRyb3NoYXJlJwogcGtnbmFtZT1yZXRyb3NoYXJlCiB2ZXJzaW9uPTAuNi42Ci1yZXZpc2lvbj0y CityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1xbWFrZQogI1hYWCBicm9hZGNhc3QgZmVhdHVyZSBy ZXF1aXJlcyBhbiBhbmNpZW50IHVkcC1kaXNjb3ZlcnktY3BwIHdoaWNoIGVpdGhlciBuZWVkcwog IyB0byBiZSBmZXRjaGVkK3BhdGNoZWQgKEZUQkZTKSBoZXJlIG9yIHBhY2thZ2VkIDovCgpGcm9t IGM2YzY3ZWQ4OGRlMGUzMWE2OGI0NjQxZDkzOGU2ZTFiNDYyMmMxNGQgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwOC8xMzBdIHNpcmlsOiBy ZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy9zaXJpbC90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUgYi9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlCmlu ZGV4IGU4OGYzMGZiNjE3OC4uODQzMzJmNzlkMDYwIDEwMDY0NAotLS0gYS9zcmNwa2dzL3Npcmls L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdzaXJpbCcKIHBrZ25hbWU9c2lyaWwKIHZlcnNpb249MC45LjEy Ci1yZXZpc2lvbj05CityZXZpc2lvbj0xMAogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9z dG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29sIGF1dG9jb25mIGF1dG9tYWtlIGdldHRl eHQtZGV2ZWwiCiBtYWtlZGVwZW5kcz0iZmZ0dy1kZXZlbCBsaWJjb25maWctZGV2ZWwgbGlib3Bl bmN2LWRldmVsIGxpYmZmbXMyLWRldmVsCgpGcm9tIGE0NjZlZmRjMTg5ZDljZjNjMjgwOGEyM2U0 ZWEyMjdmYTBlMjc3OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3Vi amVjdDogW1BBVENIIDAwOS8xMzBdIHdhaWZ1MngtY29udmVydGVyLWNwcDogcmV2YnVtcCBmb3Ig b3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUgYi9zcmNw a2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0ZQppbmRleCA4YzA5NWQwZDdiYWIuLmFh NTJkOGM5ODFhOCAxMDA2NDQKLS0tIGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVt cGxhdGUKKysrIGIvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3YWlmdTJ4LWNvbnZlcnRlci1jcHAnCiBw a2duYW1lPXdhaWZ1MngtY29udmVydGVyLWNwcAogdmVyc2lvbj01LjIuNAotcmV2aXNpb249Mgor cmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRElOU1RBTExf TU9ERUxTPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSBjY2UxZjVkZjE2 MzMwZTJhYTE1MzIxYzVhMDlhMzE4Zjk4MzdmMTAyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAwOjM4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTAvMTMwXSB2bGM6IHJldmJ1bXAgZm9yIGZm bXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy92bGMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy92bGMvdGVtcGxhdGUgYi9zcmNwa2dzL3ZsYy90ZW1wbGF0ZQppbmRleCAyMTA3NjJiMGE3 ZTIuLjg1NWNhNTIzODY2MiAxMDA2NDQKLS0tIGEvc3JjcGtncy92bGMvdGVtcGxhdGUKKysrIGIv c3JjcGtncy92bGMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICd2bGMnCiBwa2duYW1lPXZsYwogdmVyc2lvbj0zLjAuMTgKLXJldmlzaW9uPTMKK3JldmlzaW9u PTQKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUt Z21lIC0tZGlzYWJsZS1saWJ0YXIgLS1lbmFibGUtamFjawogIC0tZW5hYmxlLWxpdmU1NTUgLS1k aXNhYmxlLWZsdWlkc3ludGggLS1lbmFibGUtZHZkcmVhZApAQCAtMjUsNyArMjUsNyBAQCBsaWIz MmRpc2FibGVkPXllcwogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBsaWJ0b29sIHBrZy1jb25m aWcgZmxleCBnZXR0ZXh0IGxpYmdjcnlwdC1kZXZlbAogIGxpdmU1NTUtZGV2ZWwgZ2V0dGV4dC1k ZXZlbCAkKHZvcHRfaWYgbHVhIGx1YTUyKSAkKHZvcHRfaWYgY2hyb21lY2FzdCBwcm90b2J1Ziki CiBtYWtlZGVwZW5kcz0iCi0gYXZhaGktbGlicy1kZXZlbCBkYnVzLWdsaWItZGV2ZWwgZmFhZDIt ZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWVmb250LXR0ZgorIGF2YWhpLWxpYnMtZGV2ZWwgZGJ1cy1n bGliLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZzQtZGV2ZWwgZnJlZWZvbnQtdHRmCiAgZ251dGxz LWRldmVsIGphY2stZGV2ZWwgbGliYTUyLWRldmVsIGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2 ZWwKICBsaWJjZGlvLWRldmVsIGxpYmRjYS1kZXZlbCBsaWJkdmJwc2ktZGV2ZWwgbGliZHZkbmF2 LWRldmVsIGxpYm1hZC1kZXZlbAogIGxpYm1hdHJvc2thLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwg bGlibXBjZGVjLWRldmVsIGxpYm1wZWcyLWRldmVsCgpGcm9tIGUyNzY2NzcxYjRlZDJkZTEyMmNk NWM5YzFhMGI2MGQwYTc2YzE0ZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDA6NTUgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAxMS8xMzBdIG9zZzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQu MwoKLS0tCiBzcmNwa2dzL29zZy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3NnL3RlbXBs YXRlIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUKaW5kZXggYTllYmJkMjg3OTMzLi43NTU3OTNmN2Ux MWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3NnL3Rl bXBsYXRlCkBAIC04LDcgKzgsNyBAQCBidWlsZF9oZWxwZXI9InFlbXUiCiBjb25maWd1cmVfYXJn cz0iLURMSUJfUE9TVEZJWD0iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgeHJhbmRyIgog bWFrZWRlcGVuZHM9Ik1lc2FMaWItZGV2ZWwgZ3RrZ2xleHQtZGV2ZWwgbGliY3VybC1kZXZlbCBn aWZsaWItZGV2ZWwgbGlicnN2Zy1kZXZlbAotIGphc3Blci1kZXZlbCB0aWZmLWRldmVsIGxpYmdk YWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZy1kZXZlbCB4aW5lLWxpYi1kZXZlbAorIGphc3Bl ci1kZXZlbCB0aWZmLWRldmVsIGxpYmdkYWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZzQtZGV2 ZWwgeGluZS1saWItZGV2ZWwKICBTREwyLWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsCiAg JCh2b3B0X2lmIG9wZW5leHIgbGlib3BlbmV4ci1kZXZlbCkKICAkKHZvcHRfaWYgcG9wcGxlciBw b3BwbGVyLWdsaWItZGV2ZWwpCgpGcm9tIDI5ZGY5N2E4MzUxYzRjZGZhYjE0NWM4YmI2YzY5OTg4 NjY2NDcyY2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6MTMgLTA0MDAKU3ViamVjdDog W1BBVENIIDAxMi8xMzBdIHhpbmUtbGliOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0K 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 SU5FIiBpbgogCWk2ODYtbXVzbCkKCkZyb20gMTliYTY2MWQ0MjVmODk1MDdlMjFmMWY1MWEzNDU3 MDE3YTQ2NmRhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDEzLzEzMF0gUU1QbGF5MjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL1FNUGxheTIvdGVtcGxh dGUgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKaW5kZXggYWQ3M2NiYjAxYmFlLi41NTI4NGMw NTExNjEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvUU1QbGF5Mi90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L1FNUGxheTIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdR TVBsYXkyJwogcGtnbmFtZT1RTVBsYXkyCiB2ZXJzaW9uPTIzLjAyLjA1Ci1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKIG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBm Zm1wZWctZGV2ZWwgbGliYXNzLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliZ21lLWRldmVsCgpGcm9t IGEwMzYxNjdlY2FmODlhNWJlZWUyNGY3YzY0OTdkMGIyNjYzOTdhMmUgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNC8xMzBdIGFsc2EtcGx1 Z2luczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Fsc2EtcGx1Z2lucy90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtn cy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUKaW5kZXggMGJmYTZkOWZkMjY0Li5hNTcwOGE3ZDgyYTgg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv YWxzYS1wbHVnaW5zL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnYWxzYS1wbHVnaW5zJwogcGtnbmFtZT1hbHNhLXBsdWdpbnMKIHZlcnNpb249MS4yLjcuMQot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmln dXJlX2FyZ3M9Ii0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWciCgpGcm9tIDcxMzEzYjM2MTliZWZjYjQzMDkxN2UxNGQ0YmU4MjBjYjYyMTlhNGMgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNS8x MzBdIGFyY2FuOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYXJjYW4vdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlIGIvc3JjcGtncy9hcmNhbi90 ZW1wbGF0ZQppbmRleCA3YmU5NjUyZWNjZjMuLmNjYzdkZjExY2VhYyAxMDA2NDQKLS0tIGEvc3Jj cGtncy9hcmNhbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlCkBAIC0yLDcg KzIsNyBAQAogIyAhISBrZWVwIHN5bmNlZCB3aXRoOiBhY2ZnZnMgYWNsaXAgYWxvYWRpbWFnZQog cGtnbmFtZT1hcmNhbgogdmVyc2lvbj0wLjYuMi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBj cmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jrc3JjPWFyY2FuL3NyYwogYnVpbGRfc3R5bGU9Y21h a2UKCkZyb20gZWRmZGNjNGVmY2NiNWY4MTUyNDc5ZmYzNDAzM2U2MGQzZjcyZmI4OCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE2LzEzMF0g YXR0cmFjdDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2F0dHJhY3Qv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlIGIvc3JjcGtn cy9hdHRyYWN0L3RlbXBsYXRlCmluZGV4IDI2MTQ0ZTkzMWEzYy4uZTc2MGJmMGQxOGFlIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdHRyYWN0L3Rl bXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhdHRyYWN0Jwog cGtnbmFtZT1hdHRyYWN0CiB2ZXJzaW9uPTIuNi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfYnVpbGRfYXJncz0iVkVSQk9TRT0xIgogbWFr ZV91c2VfZW52PXllcwogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9 IlNGTUwtZGV2ZWwgZmZtcGVnLWRldmVsIGZvbnRjb25maWctZGV2ZWwgZ2x1LWRldmVsIGxpYmFy Y2hpdmUtZGV2ZWwKK21ha2VkZXBlbmRzPSJTRk1MLWRldmVsIGZmbXBlZzQtZGV2ZWwgZm9udGNv bmZpZy1kZXZlbCBnbHUtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbAogIGxpYmN1cmwtZGV2ZWwgbGli anBlZy10dXJiby1kZXZlbCB4aW5lLWxpYiByYXBpZGpzb24gbGliWHJhbmRyLWRldmVsIgogZGVw ZW5kcz0iZ2l0Igogc2hvcnRfZGVzYz0iQXR0cmFjdC1Nb2RlIGlzIGEgZ3JhcGhpY2FsIGZyb250 ZW5kIGZvciBlbXVsYXRvcnMiCgpGcm9tIDcyNWQ2NTgxM2NiNTBhNzkwNjE2NjQyMmRiZDUyOTQ4 MGU0MmI2OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDog W1BBVENIIDAxNy8xMzBdIGF1YmlvOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br 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 aWcgc3VwcG9ydC4KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB0eHQybWFuIgoKRnJvbSBj YmVmMDRlOTlkNWU4MjNiZTkzNTAwYzJkODdkOTZkYWMzYTY0ZDgzIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTgvMTMwXSBhdWRhY2lvdXMt 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 dCkgJCh2b3B0X2Jvb2wgcXQgcXQ2KSIKCkZyb20gNjFmYzdlY2FjMjBhMzZkZTJjNDNiZGRlZTdm MmE5ZjYxYzZmMzBjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDE5LzEzMF0gYXVkYWNpdHk6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMK Ci0tLQogc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZSB8IDUgKystLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9h dWRhY2l0eS90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKaW5kZXggZDUwOWMw YTg5NDA3Li4xMWUyMDI1NTY4NWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2F1ZGFjaXR5JwogcGtnbmFtZT1hdWRhY2l0eQogdmVyc2lvbj0yLjQu MQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29u ZmlndXJlX2FyZ3M9Ii0td2l0aC1mZm1wZWc9c3lzdGVtIC0td2l0aC1saWJzbmRmaWxlPXN5c3Rl bSAtLXdpdGgtZXhwYXQ9c3lzdGVtCiAgLS13aXRoLWxpYnNveHI9c3lzdGVtIC0td2l0aC1sYW1l PXN5c3RlbSAtLXdpdGgtbHYyPXN5c3RlbSBhY19jdl9wYXRoX1dYX0NPTkZJRz13eC1jb25maWct Z3RrMyIKQEAgLTksNyArOSw3IEBAIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBjbWFrZSBn ZXR0ZXh0IGxpYnRvb2wgbTQgd2hpY2giCiBtYWtlZGVwZW5kcz0iamFjay1kZXZlbCB3eFdpZGdl dHMtZ3RrMy1kZXZlbCBndGsrMy1kZXZlbAogIGxpYm1hZC1kZXZlbCBzb3VuZHRvdWNoLWRldmVs IGxpYnNveHItZGV2ZWwKICB2YW1wLXBsdWdpbi1zZGstZGV2ZWwgbGFtZS1kZXZlbCBsaWJpZDN0 YWctZGV2ZWwgbGliZmxhYy1kZXZlbAotIGZmbXBlZy1kZXZlbCB0d29sYW1lLWRldmVsIHNlcmQt ZGV2ZWwgbHYyIGxpbHYtZGV2ZWwgc3VpbC1kZXZlbCIKKyBmZm1wZWc0LWRldmVsIHR3b2xhbWUt ZGV2ZWwgc2VyZC1kZXZlbCBsdjIgbGlsdi1kZXZlbCBzdWlsLWRldmVsIgogZGVwZW5kcz0iZGVz a3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNvbi10aGVtZSIKIHNob3J0X2Rlc2M9IkdyYXBoaWNh bCBjcm9zcy1wbGF0Zm9ybSBhdWRpbyBlZGl0b3IiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3Jw aGFuQHZvaWRsaW51eC5vcmc+IgpAQCAtMzMsNSArMzMsNCBAQCBwb3N0X2luc3RhbGwoKSB7CiAJ dmNvcHkgcGx1Zy1pbnMgL3Vzci9zaGFyZS9hdWRhY2l0eQogCiAJcm0gJHtERVNURElSfS91c3Iv c2hhcmUvZG9jL2F1ZGFjaXR5L0xJQ0VOU0UudHh0Ci0JdmxpY2Vuc2UgTElDRU5TRS50eHQgTElD RU5TRQogfQoKRnJvbSAyOTZmZDAzYmNiZjg3NTJhMTdlY2Y1MzFjOTdhMjRjMjM1Mjc0YzlhIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjAv MTMwXSBhdmlkZW11eDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2F2aWRl bXV4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZSBiL3NyY3Br Z3MvYXZpZGVtdXgvdGVtcGxhdGUKaW5kZXggMjUzYTAyNDNlMjI1Li41NTcyODU5ODJkMmIgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdmlkZW11 eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F2aWRlbXV4 JwogcGtnbmFtZT1hdmlkZW11eAogdmVyc2lvbj0yLjguMAotcmV2aXNpb249MgorcmV2aXNpb249 MwogIyBDYW4ndCBiZSBjb21waWxlZCBmb3IgYWFyY2g2NCwgYXJtKiBvciBtaXBzKgogYXJjaHM9 Ing4Nl82NCogaTY4NioiCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1jb25maWcgcXQ1LWhv c3QtdG9vbHMgcXQ1LWRldmVsIHRhciB5YXNtIgoKRnJvbSA3M2RjZjc4OGZiOGIzMjBlOTQ4ZmIz ZDcxZmQ5M2NiMGJlNTM4NWZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMjEvMTMwXSBiYXJlc2lwOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFyZXNp cC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQppbmRleCBmMWJkMTgxNzA0OGIu LmIyMWUyMjMzNDMxNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ2JhcmVzaXAnCiBwa2duYW1lPWJhcmVzaXAKIHZlcnNpb249Mi4xMC4wCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5kcz0ibGliZ3NtLWRldmVsIGxpYnBuZy1kZXZl bCBvcGVuc3NsLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwKCkZyb20gNzkwNWIwMjhkODY1MTk5Mzdk NDZkZjhiZDQ1Y2E1NzdmNTZhNzY1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIyLzEzMF0gYmxlbmRlcjogcmV2YnVtcCBmb3IgZmZtcGVn 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 c2hhcmUvYmxlbmRlci8ke3ZlcnNpb24lLip9L3NjcmlwdHMiCgpGcm9tIGExNGJiY2JjODQ4ZmY4 NzdjOTkyOTRiZmJkNjZmMGI2YmNkYzNhODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyMy8xMzBdIGNhbnRhdGE6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9jYW50YXRhL3RlbXBsYXRlIGIvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCmluZGV4IDRiNDE3 ZDgwZDVjMi4uOGE5MGFhYTRjMDdhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2NhbnRhdGEvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnY2FudGF0YScKIHBrZ25hbWU9Y2FudGF0YQogdmVyc2lvbj0yLjUuMAot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMgcXQ1LXRvb2xzIgogbWFrZWRl cGVuZHM9InF0NS1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBxdDUteG1scGF0 dGVybnMtZGV2ZWwKCkZyb20gZjhkYzNmNzk1OTU4YmI0MWY1YzdjY2RiZWZkZTZlYjdjOTc1OGE4 OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDI0LzEzMF0gY2NleHRyYWN0b3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3Jj cGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NjZXh0cmFj dG9yL3RlbXBsYXRlIGIvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZQppbmRleCA5YWJjZDgy ODUyYjIuLjZlY2NhZDU4ODVhZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlCkBAIC0xLDEyICsxLDEyIEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjY2V4dHJhY3RvcicKIHBrZ25hbWU9Y2NleHRyYWN0b3IK IHZlcnNpb249MC45MwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfd3Jrc3JjPSJsaW51 eCIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1v Y3IgLS1lbmFibGUtaGFyZHN1YngiCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIHBrZy1jb25m aWciCi1tYWtlZGVwZW5kcz0ibGVwdG9uaWNhLWRldmVsIHRlc3NlcmFjdC1vY3ItZGV2ZWwgZmZt cGVnLWRldmVsIgorbWFrZWRlcGVuZHM9ImxlcHRvbmljYS1kZXZlbCB0ZXNzZXJhY3Qtb2NyLWRl dmVsIGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJFeHRyYWN0IHN1YnRpdGxlcyBmcm9tIHZp ZGVvIHN0cmVhbXMiCiBtYWludGFpbmVyPSJuZXdibHVlbW9vbiA8YmxhdW1vbGNoQG1haWxib3gu b3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCgpGcm9tIDc1ZmQxZWE5NTM5MzFlNWU3 ZjUwZDZjYjZhMmNhYWMxNTc4ZDZjOTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYg LTA0MDAKU3ViamVjdDogW1BBVENIIDAyNS8xMzBdIGNocm9tYXByaW50OiByZXZidW1wIGZvciBm 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 SUxEX1RPT0xTPU9OIgogbWFrZV9jaGVja190YXJnZXQ9ImNoZWNrIgoKRnJvbSBlYjE5NTcwYzdh NmFiOTNjNjAyMTc5MTVjMDM2NWE1OTlkNDkzNWEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjYvMTMwXSBjaHJvbWl1bTogcmV2YnVtcCBm 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 IikKCkZyb20gZTAxNTAwZDU2MDhiYTVjYjkyMTNlNDFmN2VlNDcwZDdhNWRjOGYwNiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI3LzEzMF0g Y211czogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2NtdXMvcGF0Y2hlcy9m Zm1wZWc2LnBhdGNoIHwgMTIgKysrKysrKysrKysrCiBzcmNwa2dzL2NtdXMvdGVtcGxhdGUgICAg ICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBl ZzYucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNo IGIvc3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLmZmYTk1YWI4MTExMAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorLS0tIGEv aXAvZmZtcGVnLmMKKysrKyBiL2lwL2ZmbXBlZy5jCitAQCAtMjAyLDkgKzIwMiw2IEBAIHN0YXRp YyBpbnQgZmZtcGVnX29wZW4oc3RydWN0IGlucHV0X3BsdWdpbl9kYXRhICppcF9kYXRhKQorIAkJ CWJyZWFrOworIAkJfQorIAorLQkJaWYgKGNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19D QVBfVFJVTkNBVEVEKQorLQkJCWNjLT5mbGFncyB8PSBBVl9DT0RFQ19GTEFHX1RSVU5DQVRFRDsK Ky0KKyAJCWlmIChhdmNvZGVjX29wZW4yKGNjLCBjb2RlYywgTlVMTCkgPCAwKSB7CisgCQkJZF9w cmludCgiY291bGQgbm90IG9wZW4gY29kZWM6ICVkLCAlc1xuIiwgY2MtPmNvZGVjX2lkLCBhdmNv ZGVjX2dldF9uYW1lKGNjLT5jb2RlY19pZCkpOworIAkJCWVyciA9IC1JUF9FUlJPUl9VTlNVUFBP UlRFRF9GSUxFX1RZUEU7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2NtdXMvdGVtcGxhdGUgYi9zcmNw a2dzL2NtdXMvdGVtcGxhdGUKaW5kZXggMGZjYjQyNGNlMzM2Li4wNWI3N2QwZmVjYWUgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvY211cy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NtdXMvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjbXVzJwogcGtnbmFtZT1jbXVz CiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y29u ZmlndXJlCiBjb25maWd1cmVfYXJncz0icHJlZml4PS91c3IgTEQ9JENDIgogaG9zdG1ha2VkZXBl bmRzPSJwa2ctY29uZmlnIgoKRnJvbSA3NjA5OTk3ZWMzMjNjNzQ3ZTU1NDMwNTJlNDA1YWQyNjMx YjgwNDdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwMjgvMTMwXSBjeWFucmlwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvY3lhbnJpcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZSBi L3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZQppbmRleCA5Nzk2ZTM0NjE2MDEuLjVkYjMwZTAyMGQx NyAxMDA2NDQKLS0tIGEvc3JjcGtncy9jeWFucmlwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY3lh bnJpcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2N5YW5y aXAnCiBwa2duYW1lPWN5YW5yaXAKIHZlcnNpb249MC45LjAKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtl ZGVwZW5kcz0iZmZtcGVnLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliY2Rpby1wYXJhbm9pYS1kZXZl bCBsaWJjdXJsLWRldmVsIGxpYm11c2ljYnJhaW56NS1kZXZlbCIKCkZyb20gZjM5NWY1NmVjZTJl ZDQzNGNmYjY5NTgzYzYzNTVmOWY3ODY1MjlhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI5LzEzMF0gZGVhZGJlZWY6IHJldmJ1bXAgZm9y IGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZSB8IDQgKystLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlIGIvc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0 ZQppbmRleCBiNjY0YmIxYjliZDkuLjE2NWIzYzdiOWNhZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9k ZWFkYmVlZi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlCkBAIC0xLDE0 ICsxLDE0IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdkZWFkYmVlZicKIHBrZ25hbWU9ZGVhZGJl ZWYKIHZlcnNpb249MS44LjgKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGNyZWF0ZV93cmtzcmM9 eWVzCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxl LW9zcyAtLWRpc2FibGUtbGZtIC0tZGlzYWJsZS1ub3RpZnkgLS1kaXNhYmxlLWd0azIiCiBob3N0 bWFrZWRlcGVuZHM9ImF1dG9tYWtlIGxpYnRvb2wgZ2V0dGV4dCBnZXR0ZXh0LWRldmVsIGludGx0 b29sIHBrZy1jb25maWcKICB5YXNtIGNsYW5nIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5kcz0iCi0g YWxzYS1saWItZGV2ZWwgZGJ1cy1kZXZlbCBmYWFkMi1kZXZlbCBmZm1wZWctZGV2ZWwgZ3RrKzMt ZGV2ZWwgaW1saWIyLWRldmVsCisgYWxzYS1saWItZGV2ZWwgZGJ1cy1kZXZlbCBmYWFkMi1kZXZl bCBmZm1wZWc0LWRldmVsIGd0ayszLWRldmVsIGltbGliMi1kZXZlbAogIGphbnNzb24tZGV2ZWwg bGliY2RkYi1kZXZlbCBsaWJjZGlvLWRldmVsIGxpYmN1cmwtZGV2ZWwgbGliZmxhYy1kZXZlbAog IGxpYm1hZC1kZXZlbCBsaWJwbmctZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJzbmRmaWxl LWRldmVsIGxpYnZvcmJpcy1kZXZlbAogIGxpYnppcC1kZXZlbCBtcGcxMjMtZGV2ZWwgb3B1c2Zp bGUtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbCB3YXZwYWNrLWRldmVsIgoKRnJvbSAwNDNiNWE4MDgz YTg3YjMzNTM3ZTA1NzM0MWRhZjI3MjJhOTg4MDA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzAvMTMwXSBkb2xwaGluLWVtdTogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9kb2xwaGluLWVtdS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZG9scGhpbi1lbXUv dGVtcGxhdGUKaW5kZXggN2VhMTk3Y2ViMmE4Li43YWViMGE1YjY0NWUgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kb2xwaGluLWVtdS90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2RvbHBoaW4tZW11Jwog cGtnbmFtZT1kb2xwaGluLWVtdQogdmVyc2lvbj01LjAuMTYxMDEKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIF9kb2xwaGluX2NvbW1pdD04ZWNmYTUzN2EyNDJkZTc0ZDJlMzcyZTMwZDlkNzliMTQ1 ODRiMmZiCiBfbWdiYV9jb21taXQ9NDBkNGM0MzBmYzM2Y2FlYjdlYTMyZmQzOTYyNDk0N2VkNDg3 ZDJmMgogI1ZlcnNpb24vaGFzaCBwYWlyIGNhbiBiZSBmb3VuZCBhdCBodHRwczovL2RvbHBoaW4t ZW11Lm9yZy9kb3dubG9hZC8KCkZyb20gOGYwZDY2OGRmYjVmNWZmZTQ1YmQ5ZGY5YTlhZTAwMTc5 NDgwYWY2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDMxLzEzMF0gZHJvaWRjYW0tb2JzLXBsdWdpbjogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUgYi9zcmNwa2dzL2Ryb2lkY2FtLW9i cy1wbHVnaW4vdGVtcGxhdGUKaW5kZXggZmM5YzliZjZiOWQ1Li5mYjA0ODA3NTRkZjQgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdkcm9pZGNhbS1vYnMtcGx1Z2luJwogcGtnbmFtZT1kcm9pZGNhbS1vYnMtcGx1 Z2luCiB2ZXJzaW9uPTIuMC4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1n bnUtbWFrZWZpbGUKIG1ha2VfdXNlX2Vudj15ZXMKIG1ha2VfYnVpbGRfYXJncz0iQUxMT1dfU1RB VElDPW5vIgoKRnJvbSA5ODhiZDFiNTBkYWIxNWQ4ZjA1ZWI4NGQ0ZjIyYmY3MWExZjkxZTg5IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzIv MTMwXSBkcm9pZGNhbTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Ryb2lk Y2FtL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZSBiL3NyY3Br Z3MvZHJvaWRjYW0vdGVtcGxhdGUKaW5kZXggMWMzZjFiOGIxZmM2Li4zMmE5MjIwYjc5YTQgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kcm9pZGNh bS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Ryb2lkY2Ft JwogcGtnbmFtZT1kcm9pZGNhbQogdmVyc2lvbj0xLjguMgotcmV2aXNpb249MgorcmV2aXNpb249 MwogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBtYWtlX2J1aWxkX2FyZ3M9IlVTQk1VWEQ9LWx1 c2JtdXhkLTIuMCBKUEVHPS1sdHVyYm9qcGVnIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IgoKRnJvbSAyOTMyNTBiZThlOTI0NDY2ZmExNjhmOTM3ZDkzOGNkYmM5OWM4ZjJiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzMvMTMwXSBl bGVjdHJvbjE5OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZWxlY3Ryb24x OS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZSBiL3NyY3Br Z3MvZWxlY3Ryb24xOS90ZW1wbGF0ZQppbmRleCAwNjgxMzZiZTc2MjMuLjMyY2UzMDFlNzMwYyAx MDA2NDQKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjE5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZWxl Y3Ryb24xOS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Vs ZWN0cm9uMTknCiBwa2duYW1lPWVsZWN0cm9uMTkKIHZlcnNpb249MTkuMC44Ci1yZXZpc2lvbj0y CityZXZpc2lvbj0zCiBfbm9kZXZlcj0xNi4xNC4yCiBfY2hyb21pdW12ZXI9MTAyLjAuNTAwNS4x MjUKIGFyY2hzPSJ4ODZfNjQqIGFhcmNoNjQqIHBwYzY0bGUqIgoKRnJvbSBjNGIzNTZhOTIzMjEx MGU4MzVkYWFkNDVlNjYxZGQ1MWQwZWIxNTA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzQvMTMwXSBmZm1wZWd0aHVtYm5haWxlcjogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9m Zm1wZWc2LnBhdGNoICAgfCAyMDIgKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2ZmbXBlZ3Ro dW1ibmFpbGVyL3RlbXBsYXRlICAgICAgICAgICAgfCAgIDYgKy0KIDIgZmlsZXMgY2hhbmdlZCwg MjA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCBiL3NyY3Br Z3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzYzZmYzNWEyODQxCi0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAgLTAs MCArMSwyMDIgQEAKKy0tLSBhL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmllZGVjb2Rlci5jcHAJ MjAxNy0xMS0yMSAxNDowNjo1Ny4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xpYmZmbXBlZ3RodW1i bmFpbGVyL21vdmllZGVjb2Rlci5jcHAJMjAyMy0wNS0wNSAxMzoxNDo0Ny45NDY1NjA2NjggLTA0 MDAKK0BAIC00MSwxMSArNDEsNiBAQAorIG5hbWVzcGFjZSBmZm1wZWd0aHVtYm5haWxlcgorIHsK KyAKKy1zdHJ1Y3QgU2lsZW5jZUxvZ0xldmVsCisteworLSAgICBTaWxlbmNlTG9nTGV2ZWwoKSB7 IGF2X2xvZ19zZXRfbGV2ZWwoQVZfTE9HX1FVSUVUKTsgfQorLX07CistCisgTW92aWVEZWNvZGVy OjpNb3ZpZURlY29kZXIoQVZGb3JtYXRDb250ZXh0KiBwYXZDb250ZXh0KQorIDogbV9WaWRlb1N0 cmVhbSgtMSkKKyAsIG1fcEZvcm1hdENvbnRleHQocGF2Q29udGV4dCkKK0BAIC03MCw4ICs2NSw2 IEBACisgCisgdm9pZCBNb3ZpZURlY29kZXI6OmluaXRpYWxpemUoY29uc3Qgc3RyaW5nJiBmaWxl bmFtZSwgYm9vbCBwcmVmZXJFbWJlZGRlZE1ldGFkYXRhKQorIHsKKy0gICAgYXZfcmVnaXN0ZXJf YWxsKCk7CistICAgIGF2Y29kZWNfcmVnaXN0ZXJfYWxsKCk7CisgICAgIGF2Zm9ybWF0X25ldHdv cmtfaW5pdCgpOworIAorICAgICBzdHJpbmcgaW5wdXRGaWxlID0gZmlsZW5hbWUgPT0gIi0iID8g InBpcGU6IiA6IGZpbGVuYW1lOworQEAgLTk3LDggKzkwLDcgQEAKKyB7CisgICAgIGlmIChtX3BW aWRlb0NvZGVjQ29udGV4dCkKKyAgICAgeworLSAgICAgICAgYXZjb2RlY19jbG9zZShtX3BWaWRl b0NvZGVjQ29udGV4dCk7CistICAgICAgICBtX3BWaWRlb0NvZGVjQ29udGV4dCA9IG51bGxwdHI7 CisrICAgICAgICBhdmNvZGVjX2ZyZWVfY29udGV4dCgmbV9wVmlkZW9Db2RlY0NvbnRleHQpOwor ICAgICB9CisgCisgICAgIGlmICgoIW1fRm9ybWF0Q29udGV4dFdhc0dpdmVuKSAmJiBtX3BGb3Jt YXRDb250ZXh0KQorQEAgLTE1MiwxMCArMTQ0LDEwIEBACisgICAgIGZvciAodW5zaWduZWQgaW50 IGkgPSAwOyBpIDwgbV9wRm9ybWF0Q29udGV4dC0+bmJfc3RyZWFtczsgKytpKQorICAgICB7Cisg ICAgICAgICBBVlN0cmVhbSAqc3RyZWFtID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXTsK Ky0gICAgICAgIGF1dG8gY3R4ID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWM7 CistICAgICAgICBpZiAoY3R4LT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykKKysg ICAgICAgIGF1dG8gcGFyID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXI7 CisrICAgICAgICBpZiAocGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykKKyAg ICAgICAgIHsKKy0gICAgICAgICAgICBpZiAoIXByZWZlckVtYmVkZGVkTWV0YWRhdGEgfHwgIWlz U3RpbGxJbWFnZUNvZGVjKGN0eC0+Y29kZWNfaWQpKQorKyAgICAgICAgICAgIGlmICghcHJlZmVy RW1iZWRkZWRNZXRhZGF0YSB8fCAhaXNTdGlsbEltYWdlQ29kZWMocGFyLT5jb2RlY19pZCkpCisg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICB2aWRlb1N0cmVhbXMucHVzaF9iYWNrKGkp OworICAgICAgICAgICAgICAgICBjb250aW51ZTsKK0BAIC0yMDMsOCArMTk1LDcgQEAKKyAgICAg fQorIAorICAgICBtX3BWaWRlb1N0cmVhbSA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbbV9W aWRlb1N0cmVhbV07CistICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0ID0gbV9wVmlkZW9TdHJlYW0t PmNvZGVjOworLSAgICBtX3BWaWRlb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIobV9wVmlk ZW9Db2RlY0NvbnRleHQtPmNvZGVjX2lkKTsKKysgICAgbV9wVmlkZW9Db2RlYyA9IGF2Y29kZWNf ZmluZF9kZWNvZGVyKG1fcFZpZGVvU3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworIAorICAg ICBpZiAobV9wVmlkZW9Db2RlYyA9PSBudWxscHRyKQorICAgICB7CitAQCAtMjE0LDYgKzIwNSwy MCBAQAorICAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIlZpZGVvIENvZGVjIG5vdCBmb3VuZCIp OworICAgICB9CisgCisrICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0ID0gYXZjb2RlY19hbGxvY19j b250ZXh0MyhtX3BWaWRlb0NvZGVjKTsKKysKKysgICAgaWYgKG1fcFZpZGVvQ29kZWNDb250ZXh0 ID09IG51bGxwdHIpCisrICAgIHsKKysgICAgICAgIGRlc3Ryb3koKTsKKysgICAgICAgIHRocm93 IGxvZ2ljX2Vycm9yKCJDb3VsZCBub3QgYWxsb2NhdGUgdmlkZW8gY29kZWMgY29udGV4dCIpOwor KyAgICB9CisrCisrICAgIGlmIChhdmNvZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4dChtX3BWaWRl b0NvZGVjQ29udGV4dCwgbV9wVmlkZW9TdHJlYW0tPmNvZGVjcGFyKSA8IDApCisrICAgIHsKKysg ICAgICAgIGRlc3Ryb3koKTsKKysgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJDb3VsZCBub3Qg Y29uZmlndXJlIHZpZGVvIGNvZGVjIGNvbnRleHQiKTsKKysgICAgfQorKworICAgICBtX3BWaWRl b0NvZGVjQ29udGV4dC0+d29ya2Fyb3VuZF9idWdzID0gMTsKKyAKKyAgICAgaWYgKGF2Y29kZWNf b3BlbjIobV9wVmlkZW9Db2RlY0NvbnRleHQsIG1fcFZpZGVvQ29kZWMsIG51bGxwdHIpIDwgMCkK K0BAIC0zODYsMTMgKzM5MSw2IEBACisgCisgdm9pZCBNb3ZpZURlY29kZXI6OmluaXRpYWxpemVG aWx0ZXJHcmFwaChjb25zdCBBVlJhdGlvbmFsJiB0aW1lQmFzZSwgY29uc3Qgc3RkOjpzdHJpbmcm IHNpemUsIGJvb2wgbWFpbnRhaW5Bc3BlY3RSYXRpbykKKyB7CistICAgIHN0YXRpYyBjb25zdCBB VlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0c1tdID0geyBBVl9QSVhfRk1UX1JHQjI0LCBBVl9QSVhf Rk1UX05PTkUgfTsKKy0KKy0gICAgYXV0byBkZWwgPSBbXSAoQVZCdWZmZXJTaW5rUGFyYW1zKiBw KSB7IGF2X2ZyZWVwKHApOyB9OworLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVZCdWZmZXJTaW5rUGFy YW1zLCBkZWNsdHlwZShkZWwpPiBidWZmZXJzaW5rUGFyYW1zKGF2X2J1ZmZlcnNpbmtfcGFyYW1z X2FsbG9jKCksIGRlbCk7CistCistICAgIGF2ZmlsdGVyX3JlZ2lzdGVyX2FsbCgpOworLQorICAg ICBtX3BGaWx0ZXJHcmFwaCA9IGF2ZmlsdGVyX2dyYXBoX2FsbG9jKCk7CisgICAgIGFzc2VydCht X3BGaWx0ZXJHcmFwaCk7CisgCitAQCAtNDA0LDEwICs0MDIsOCBAQAorIAorICAgICBjaGVja1Jj KGF2ZmlsdGVyX2dyYXBoX2NyZWF0ZV9maWx0ZXIoJm1fcEZpbHRlclNvdXJjZSwgYXZmaWx0ZXJf Z2V0X2J5X25hbWUoImJ1ZmZlciIpLCAidGh1bWJfYnVmZmVyIiwgc3Muc3RyKCkuY19zdHIoKSwg bnVsbHB0ciwgbV9wRmlsdGVyR3JhcGgpLAorICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRl IGZpbHRlciBzb3VyY2UiKTsKKy0gICAgYnVmZmVyc2lua1BhcmFtcy0+cGl4ZWxfZm10cyA9IHBp eGVsRm9ybWF0czsKKy0gICAgY2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZt X3BGaWx0ZXJTaW5rLCBhdmZpbHRlcl9nZXRfYnlfbmFtZSgiYnVmZmVyc2luayIpLCAidGh1bWJf YnVmZmVyc2luayIsIG51bGxwdHIsIGJ1ZmZlcnNpbmtQYXJhbXMuZ2V0KCksIG1fcEZpbHRlckdy YXBoKSwKKysgICAgY2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BGaWx0 ZXJTaW5rLCBhdmZpbHRlcl9nZXRfYnlfbmFtZSgiYnVmZmVyc2luayIpLCAidGh1bWJfYnVmZmVy c2luayIsIG51bGxwdHIsIG51bGxwdHIsIG1fcEZpbHRlckdyYXBoKSwKKyAgICAgICAgICAgICAi RmFpbGVkIHRvIGNyZWF0ZSBmaWx0ZXIgc2luayIpOworLSAgICBidWZmZXJzaW5rUGFyYW1zLnJl bGVhc2UoKTsKKyAKKyAgICAgQVZGaWx0ZXJDb250ZXh0KiB5YWRpZkZpbHRlciA9IG51bGxwdHI7 CisgICAgIGlmIChtX3BGcmFtZS0+aW50ZXJsYWNlZF9mcmFtZSAhPSAwKQorQEAgLTUwMCwxNSAr NDk2LDE1IEBACisgICAgIH0KKyAKKyAgICAgY2hlY2tSYyhhdl9zZWVrX2ZyYW1lKG1fcEZvcm1h dENvbnRleHQsIC0xLCB0aW1lc3RhbXAsIDApLCAiU2Vla2luZyBpbiB2aWRlbyBmYWlsZWQiKTsK Ky0gICAgYXZjb2RlY19mbHVzaF9idWZmZXJzKG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbbV9W aWRlb1N0cmVhbV0tPmNvZGVjKTsKKysgICAgYXZjb2RlY19mbHVzaF9idWZmZXJzKG1fcFZpZGVv Q29kZWNDb250ZXh0KTsKKyAKKyAgICAgaW50IGtleUZyYW1lQXR0ZW1wdHMgPSAwOworLSAgICBi b29sIGdvdEZyYW1lID0gMDsKKysgICAgYm9vbCBnb3RGcmFtZTsKKyAKKyAgICAgZG8KKyAgICAg eworICAgICAgICAgaW50IGNvdW50ID0gMDsKKy0gICAgICAgIGdvdEZyYW1lID0gMDsKKysgICAg ICAgIGdvdEZyYW1lID0gZmFsc2U7CisgCisgICAgICAgICB3aGlsZSAoIWdvdEZyYW1lICYmIGNv dW50IDwgMjApCisgICAgICAgICB7CitAQCAtNTUyLDE3ICs1NDgsMzMgQEAKKyAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgfQorIAorLSAgICBhdl9mcmFtZV91bnJlZihtX3BGcmFtZSk7Cist CistICAgIGludCBmcmFtZUZpbmlzaGVkOworKyAgICBpbnQgcmMgPSBhdmNvZGVjX3NlbmRfcGFj a2V0KG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BQYWNrZXQpOworKyAgICBpZihyYyA9PSBBVkVS Uk9SKEVBR0FJTikpCisrICAgIHsKKysgICAgICAgIHJjID0gMDsKKysgICAgfQorIAorLSAgICBp bnQgYnl0ZXNEZWNvZGVkID0gYXZjb2RlY19kZWNvZGVfdmlkZW8yKG1fcFZpZGVvQ29kZWNDb250 ZXh0LCBtX3BGcmFtZSwgJmZyYW1lRmluaXNoZWQsIG1fcFBhY2tldCk7CistICAgIGlmIChieXRl c0RlY29kZWQgPCAwKQorKyAgICBpZihyYyA9PSBBVkVSUk9SX0VPRikKKysgICAgeworKyAgICAg ICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisrICAgIGVsc2UgaWYocmMgPCAwKQorICAgICB7Cist ICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigiRmFpbGVkIHRvIGRlY29kZSB2aWRlbyBmcmFtZTog Ynl0ZXNEZWNvZGVkIDwgMCIpOworKyAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkZhaWxlZCB0 byBkZWNvZGUgdmlkZW8gZnJhbWU6IGF2Y29kZWNfc2VuZF9wYWNrZXQoKSA8IDAiKTsKKyAgICAg fQorIAorLSAgICByZXR1cm4gZnJhbWVGaW5pc2hlZCA+IDA7CisrICAgIHJjID0gYXZjb2RlY19y ZWNlaXZlX2ZyYW1lKG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BGcmFtZSk7CisrICAgIHN3aXRj aChyYykKKysgICAgeworKyAgICAgICAgY2FzZSAwOgorKyAgICAgICAgICAgIHJldHVybiB0cnVl OworKworKyAgICAgICAgY2FzZSBBVkVSUk9SKEVBR0FJTik6CisrICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworKworKyAgICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICB0aHJvdyBsb2dpY19l cnJvcigiRmFpbGVkIHRvIGRlY29kZSB2aWRlbyBmcmFtZTogYXZjb2RlY19yZWNlaXZlX2ZyYW1l KCkgPCAwIik7CisrICAgIH0KKyB9CisgCisgYm9vbCBNb3ZpZURlY29kZXI6OmdldFZpZGVvUGFj a2V0KCkKK0BAIC01NzAsOCArNTgyLDYgQEAKKyAgICAgYm9vbCBmcmFtZXNBdmFpbGFibGUgPSB0 cnVlOworICAgICBib29sIGZyYW1lRGVjb2RlZCA9IGZhbHNlOworIAorLSAgICBpbnQgYXR0ZW1w dHMgPSAwOworLQorICAgICBpZiAobV9wUGFja2V0KQorICAgICB7CisgICAgICAgICBhdl9wYWNr ZXRfdW5yZWYobV9wUGFja2V0KTsKK0BAIC01ODAsNiArNTkwLDcgQEAKKyAKKyAgICAgbV9wUGFj a2V0ID0gbmV3IEFWUGFja2V0KCk7CisgCisrCisgICAgIHdoaWxlIChmcmFtZXNBdmFpbGFibGUg JiYgIWZyYW1lRGVjb2RlZCkKKyAgICAgeworICAgICAgICAgZnJhbWVzQXZhaWxhYmxlID0gYXZf cmVhZF9mcmFtZShtX3BGb3JtYXRDb250ZXh0LCBtX3BQYWNrZXQpID49IDA7CitAQCAtNjQ0LDcg KzY1NSw3IEBACisgCisgaW50MzJfdCBNb3ZpZURlY29kZXI6OmdldFN0cmVhbVJvdGF0aW9uKCkK KyB7CistICAgIGludDMyX3QqIG1hdHJpeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KGF2 X3N0cmVhbV9nZXRfc2lkZV9kYXRhKG1fcFZpZGVvU3RyZWFtLCBBVl9QS1RfREFUQV9ESVNQTEFZ TUFUUklYLCBudWxscHRyKSk7CisrICAgIGF1dG8gbWF0cml4ID0gcmVpbnRlcnByZXRfY2FzdDxp bnQzMl90Kj4oYXZfc3RyZWFtX2dldF9zaWRlX2RhdGEobV9wVmlkZW9TdHJlYW0sIEFWX1BLVF9E QVRBX0RJU1BMQVlNQVRSSVgsIG51bGxwdHIpKTsKKyAgICAgaWYgKG1hdHJpeCkKKyAgICAgewor ICAgICAgICAgYXV0byBhbmdsZSA9IGxyb3VuZChhdl9kaXNwbGF5X3JvdGF0aW9uX2dldChtYXRy aXgpKTsKKworLS0tIGEvbGliZmZtcGVndGh1bWJuYWlsZXIvbW92aWVkZWNvZGVyLmgJMjAxNy0x MS0xMiAwNDoyMzozOC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xpYmZmbXBlZ3RodW1ibmFpbGVy L21vdmllZGVjb2Rlci5oCTIwMjMtMDUtMDUgMTM6MjY6MDcuMDk1NTI5OTExIC0wNDAwCitAQCAt NzgsNyArNzgsNyBAQAorICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBtX1ZpZGVvU3RyZWFt Ow0KKyAgICAgQVZGb3JtYXRDb250ZXh0KiAgICAgICAgbV9wRm9ybWF0Q29udGV4dDsNCisgICAg IEFWQ29kZWNDb250ZXh0KiAgICAgICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0Ow0KKy0gICAgQVZD b2RlYyogICAgICAgICAgICAgICAgbV9wVmlkZW9Db2RlYzsNCisrICAgIGNvbnN0IEFWQ29kZWMq ICAgICAgICAgIG1fcFZpZGVvQ29kZWM7DQorICAgICBBVkZpbHRlckdyYXBoKiAgICAgICAgICBt X3BGaWx0ZXJHcmFwaDsNCisgICAgIEFWRmlsdGVyQ29udGV4dCogICAgICAgIG1fcEZpbHRlclNv dXJjZTsNCisgICAgIEFWRmlsdGVyQ29udGV4dCogICAgICAgIG1fcEZpbHRlclNpbms7DQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZt cGVndGh1bWJuYWlsZXIvdGVtcGxhdGUKaW5kZXggMDM5ZWVhNzYyMmIzLi4zNWQ1NDYwMThkMTIg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ2ZmbXBlZ3RodW1ibmFpbGVyJwogcGtnbmFtZT1mZm1wZWd0aHVtYm5haWxl cgogdmVyc2lvbj0yLjIuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21h a2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJwbmctZGV2 ZWwgbGlianBlZy10dXJiby1kZXZlbCBmZm1wZWctZGV2ZWwiCkBAIC05LDggKzksOCBAQCBkZXBl bmRzPSJmZm1wZWciCiBzaG9ydF9kZXNjPSJMaWdodHdlaWdodCB2aWRlbyB0aHVtYm5haWxlciIK IG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJH UEwtMi4wLW9yLWxhdGVyIgotaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9kaXJrdmRiLyR7 cGtnbmFtZX0iCi1kaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVy c2lvbn0vJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci5iejIiCitob21lcGFnZT0iaHR0cHM6Ly9n aXRodWIuY29tL2Rpcmt2ZGIiCitkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9LyR7cGtnbmFtZX0vcmVs ZWFzZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLmJ6MiIK IGNoZWNrc3VtPTFjYjI0MDU5YzM4MjIzZjY1N2IzMDBjODRkZDgwNDkxYjcwNDBkNGI2OTQ3MWM0 ZmVhNjliZTg2MmJjOTliNWIKIAogcG9zdF9pbnN0YWxsKCkgewoKRnJvbSA5MThlMzNkNjY1OWVm NGE1M2RkZWNjYThlZDZiMWMxZGFiZDlmMjZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzUvMTMwXSBmZm1wZWd0aHVtYnM6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVndGh1bWJz L3RlbXBsYXRlCmluZGV4IDVmMGI5NDE0ZGFkYS4uMTFiODgxOTM1MjhmIDEwMDY0NAotLS0gYS9z cmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZmbXBlZ3RodW1icy90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZmbXBlZ3RodW1i cycKIHBrZ25hbWU9ZmZtcGVndGh1bWJzCiB2ZXJzaW9uPTIyLjEyLjEKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtl LW1vZHVsZXMga2NvcmVhZGRvbnMga2NvbmZpZy1kZXZlbAogIHBrZy1jb25maWcgcXQ1LWhvc3Qt dG9vbHMgcXQ1LXFtYWtlIGdldHRleHQiCgpGcm9tIGY3N2NlYWNlODk0MTFlNjA0ZDQyYTg3ZjE4 YjQ4ZTZiMDhmYmQzOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3Vi amVjdDogW1BBVENIIDAzNi8xMzBdIGZmbXMyOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgNDI0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysKIHNyY3BrZ3MvZmZtczIvdGVtcGxhdGUgICAgICAgICAgICAgIHwgICAy ICstCiAyIGZpbGVzIGNoYW5nZWQsIDQyNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3Mv ZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uMTQ3OWZhYmNhZmNiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1z Mi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw0MjQgQEAKK0Zyb20gNDU2NzMxNDll OWEyZjU1ODY4NTVhZDQ3MmUzMDU5MDg0ZWFhMzZiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorRGF0 ZTogVHVlLCA0IE1heSAyMDIxIDE0OjQxOjIxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBh dXRvIGZvciBBVkNvZGVjCisKK1RoZSBnZW5pdXNlcyBvdmVyIGF0IEZGbXBlZyBkZWNpZGVkIHRv IGNvbnN0aWZ5IHRoaXMgQVBJLCBzbyBvbGQKK3ZlcnNpb25zIG9mIHRoZSBsaWJyYXJ5IHdpbGwg cmV0dXJuIEFWQ29kZWMgKiwgd2hpbGUgbmV3IHZlcnNpb25zCitvZiB0aGUgbGliYXJ5IHdpbGwg cmV0dXJuIGNvbnN0IEFWQ29kZWMgKiwgd2hpY2gsIGluIEMrKywgYXJlIG5vdAorT0sgdG8gY29u dmVydCBiZXR3ZWVuLgorCitSYXRoZXIgdGhhbiB1c2Ugc29tZSBtYWNybyBoZWxsIGluIGZmbXNj b21wYXQuaCwgd2UgY2FuIHdvcmsgYXJvdW5kCit0aGlzIGJ5IHVzaW5nIGF1dG8uCisKK0dyb3Nz LgorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdt YWlsLmNvbT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCB8IDIgKy0KKyBzcmMvY29y ZS9pbmRleGluZy5jcHAgICAgfCA2ICsrKy0tLQorIHNyYy9jb3JlL3ZpZGVvc291cmNlLmNwcCB8 IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkK KworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCBiL3NyYy9jb3JlL2F1ZGlv c291cmNlLmNwcAoraW5kZXggZTRjZTk3Yy4uYWMwOTY2NiAxMDA2NDQKKy0tLSBhL3NyYy9jb3Jl L2F1ZGlvc291cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwCitAQCAtNDY5 LDcgKzQ2OSw3IEBAIHZvaWQgRkZNU19BdWRpb1NvdXJjZTo6T3BlbkZpbGUoKSB7CisgCisgICAg IExBVkZPcGVuRmlsZShTb3VyY2VGaWxlLmNfc3RyKCksIEZvcm1hdENvbnRleHQsIFRyYWNrTnVt YmVyKTsKKyAKKy0gICAgQVZDb2RlYyAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3Jt YXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrTnVtYmVyXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysg ICAgYXV0byAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJl YW1zW1RyYWNrTnVtYmVyXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgaWYgKENvZGVjID09 IG51bGxwdHIpCisgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09E SU5HLCBGRk1TX0VSUk9SX0NPREVDLAorICAgICAgICAgICAgICJBdWRpbyBjb2RlYyBub3QgZm91 bmQiKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9pbmRleGluZy5jcHAgYi9zcmMvY29yZS9pbmRl eGluZy5jcHAKK2luZGV4IGU1NDdjNWEuLjU5ZmI0ZTggMTAwNjQ0CistLS0gYS9zcmMvY29yZS9p bmRleGluZy5jcHAKKysrKyBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAorQEAgLTM4NCw3ICszODQs NyBAQCBGRk1TX1RyYWNrVHlwZSBGRk1TX0luZGV4ZXI6OkdldFRyYWNrVHlwZShpbnQgVHJhY2sp IHsKKyB9CisgCisgY29uc3QgY2hhciAqRkZNU19JbmRleGVyOjpHZXRUcmFja0NvZGVjKGludCBU cmFjaykgeworLSAgICBBVkNvZGVjICpjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1h dENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICBhdXRv ICpjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJh Y2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAgICByZXR1cm4gY29kZWMgPyBjb2RlYy0+bmFt ZSA6IG51bGxwdHI7CisgfQorIAorQEAgLTQwMiw3ICs0MDIsNyBAQCBGRk1TX0luZGV4ICpGRk1T X0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgVXNlRFRTKTsKKyAKKyAgICAg ICAgIGlmIChJbmRleE1hc2suY291bnQoaSkgJiYgRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+ Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKSB7CistICAgICAgICAg ICAgQVZDb2RlYyAqVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRl eHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgICAgICAgICAgYXV0byAq VmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNb aV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgICAgICAgICAgaWYgKCFWaWRlb0NvZGVjKSB7 CisgICAgICAgICAgICAgICAgIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmRpc2NhcmQgPSBB VkRJU0NBUkRfQUxMOworICAgICAgICAgICAgICAgICBJbmRleE1hc2suZXJhc2UoaSk7CitAQCAt NDMzLDcgKzQzMyw3IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsK KyAgICAgICAgICAgICAgICAgSW5kZXhNYXNrLmluc2VydChpKTsKKyAgICAgICAgICAgICB9Cisg ICAgICAgICB9IGVsc2UgaWYgKEluZGV4TWFzay5jb3VudChpKSAmJiBGb3JtYXRDb250ZXh0LT5z dHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8pIHsK Ky0gICAgICAgICAgICBBVkNvZGVjICpBdWRpb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIo Rm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgICAgICAg ICAgICBhdXRvICpBdWRpb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4 dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgICAgICAgICBpZiAoQXVk aW9Db2RlYyA9PSBudWxscHRyKQorICAgICAgICAgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlv bihGRk1TX0VSUk9SX0NPREVDLCBGRk1TX0VSUk9SX1VOU1VQUE9SVEVELAorICAgICAgICAgICAg ICAgICAgICAgIkF1ZGlvIGNvZGVjIG5vdCBmb3VuZCIpOworZGlmZiAtLWdpdCBhL3NyYy9jb3Jl L3ZpZGVvc291cmNlLmNwcCBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAoraW5kZXggYjg4OTk3 MC4uODk1NmMyMiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAorKysrIGIv c3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwCitAQCAtMTcxLDcgKzE3MSw3IEBAIEZGTVNfVmlkZW9T b3VyY2U6OkZGTVNfVmlkZW9Tb3VyY2UoY29uc3QgY2hhciAqU291cmNlRmlsZSwgRkZNU19JbmRl eCAmSW5kZXgsIGluCisgCisgICAgICAgICBMQVZGT3BlbkZpbGUoU291cmNlRmlsZSwgRm9ybWF0 Q29udGV4dCwgVmlkZW9UcmFjayk7CisgCistICAgICAgICBBVkNvZGVjICpDb2RlYyA9IGF2Y29k ZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVmlkZW9UcmFja10tPmNvZGVj cGFyLT5jb2RlY19pZCk7CisrICAgICAgICBhdXRvICpDb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNv ZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVmlkZW9UcmFja10tPmNvZGVjcGFyLT5jb2RlY19p ZCk7CisgICAgICAgICBpZiAoQ29kZWMgPT0gbnVsbHB0cikKKyAgICAgICAgICAgICB0aHJvdyBG Rk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VSUk9SX0NPREVDLAorICAg ICAgICAgICAgICAgICAiVmlkZW8gY29kZWMgbm90IGZvdW5kIik7CistLSAKKzIuNDAuMAorCitG cm9tIDk2Y2JmMzhlYTkzODE4MjlhMTMxNGY0MzJhMmM2MDQ5NWRjZWZhYWQgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdt YWlsLmNvbT4KK0RhdGU6IFR1ZSwgNCBNYXkgMjAyMSAxNDoxMjo0MSArMDEwMAorU3ViamVjdDog W1BBVENIXSBhbGw6IFVwZGF0ZSBBVlBhY2tldCBBUEkgdXNhZ2UKKworQVZQYWNrZXRzIG11c3Qg YWxsIGJlIG9uIHRoZSBoZWFwIG5vdywgc2luY2UgaXQgaXMgbm8gbG9uZ2VyCitwYXJ0IG9mIHRo ZSBsaWJhdiogQUJJLgorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5i dWl0ZW5odWlzQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCB8IDE2 ICsrKysrKy0tLS0KKyBzcmMvY29yZS9pbmRleGluZy5jcHAgICAgfCA2MyArKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL2NvcmUvaW5kZXhpbmcuaCAgICAgIHwg IDQgKy0tCisgc3JjL2NvcmUvdXRpbHMuY3BwICAgICAgIHwgIDYgLS0tLQorIHNyYy9jb3JlL3V0 aWxzLmggICAgICAgICB8ICAxIC0KKyBzcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgfCAzMCArKysr KysrKysrLS0tLS0tLS0tCisgNiBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCA1NiBk ZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCBiL3Ny Yy9jb3JlL2F1ZGlvc291cmNlLmNwcAoraW5kZXggMzdjZjlhZS4uZTRjZTk3YyAxMDA2NDQKKy0t LSBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2Uu Y3BwCitAQCAtMjg1LDEwICsyODUsMTUgQEAgRkZNU19BdWRpb1NvdXJjZTo6QXVkaW9CbG9jayAq RkZNU19BdWRpb1NvdXJjZTo6Q2FjaGVCbG9jayhDYWNoZUl0ZXJhdG9yICZwb3MpIHsKKyBpbnQg RkZNU19BdWRpb1NvdXJjZTo6RGVjb2RlTmV4dEJsb2NrKENhY2hlSXRlcmF0b3IgKnBvcykgewor ICAgICBDdXJyZW50RnJhbWUgPSAmRnJhbWVzW1BhY2tldE51bWJlcl07CisgCistICAgIEFWUGFj a2V0IFBhY2tldDsKKy0gICAgaWYgKCFSZWFkUGFja2V0KCZQYWNrZXQpKQorKyAgICBBVlBhY2tl dCAqUGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghUGFja2V0KQorKyAgICAg ICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9QQVJTRVIsIEZGTVNfRVJST1JfQUxM T0NBVElPTl9GQUlMRUQsCisrICAgICAgICAgICAgIkNvdWxkIG5vdCBhbGxvY2F0ZSBwYWNrZXQu Iik7CisrICAgIGlmICghUmVhZFBhY2tldChQYWNrZXQpKSB7CisrICAgICAgICBhdl9wYWNrZXRf ZnJlZSgmUGFja2V0KTsKKyAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1Jf UEFSU0VSLCBGRk1TX0VSUk9SX1VOS05PV04sCisgICAgICAgICAgICAgIlJlYWRQYWNrZXQgdW5l eHBlY3RlZGx5IGZhaWxlZCB0byByZWFkIGEgcGFja2V0Iik7CisrICAgIH0KKyAKKyAgICAgLy8g UmVhZFBhY2tldCBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBwYWNrZXQgbnVtYmVyCisgICAgIEN1cnJl bnRGcmFtZSA9ICZGcmFtZXNbUGFja2V0TnVtYmVyXTsKK0BAIC0yOTcsOCArMzAyLDkgQEAgaW50 IEZGTVNfQXVkaW9Tb3VyY2U6OkRlY29kZU5leHRCbG9jayhDYWNoZUl0ZXJhdG9yICpwb3MpIHsK KyAgICAgaW50IE51bWJlck9mU2FtcGxlcyA9IDA7CisgICAgIEF1ZGlvQmxvY2sgKkNhY2hlZEJs b2NrID0gbnVsbHB0cjsKKyAgICAgCistICAgIGludCBSZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0 KENvZGVjQ29udGV4dCwgJlBhY2tldCk7CistICAgIGF2X3BhY2tldF91bnJlZigmUGFja2V0KTsK KysgICAgaW50IFJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoQ29kZWNDb250ZXh0LCBQYWNrZXQp OworKyAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKysgICAgYXZfcGFja2V0X2ZyZWUoJlBh Y2tldCk7CisgCisgICAgIGF2X2ZyYW1lX3VucmVmKERlY29kZUZyYW1lKTsKKyAgICAgUmV0ID0g YXZjb2RlY19yZWNlaXZlX2ZyYW1lKENvZGVjQ29udGV4dCwgRGVjb2RlRnJhbWUpOworQEAgLTUx Myw4ICs1MTksNiBAQCB2b2lkIEZGTVNfQXVkaW9Tb3VyY2U6OlNlZWsoKSB7CisgfQorIAorIGJv b2wgRkZNU19BdWRpb1NvdXJjZTo6UmVhZFBhY2tldChBVlBhY2tldCAqUGFja2V0KSB7CistICAg IEluaXROdWxsUGFja2V0KCpQYWNrZXQpOworLQorICAgICB3aGlsZSAoYXZfcmVhZF9mcmFtZShG b3JtYXRDb250ZXh0LCBQYWNrZXQpID49IDApIHsKKyAgICAgICAgIGlmIChQYWNrZXQtPnN0cmVh bV9pbmRleCA9PSBUcmFja051bWJlcikgeworICAgICAgICAgICAgIC8vIFJlcXVpcmVkIGJlY2F1 c2Ugbm90IGFsbCBhdWRpbyBwYWNrZXRzLCBlc3BlY2lhbGx5IGluIG9nZywgaGF2ZSBhIHB0cy4g VXNlIHRoZSBwcmV2aW91cyB2YWxpZCBwYWNrZXQncyBwdHMgaW5zdGVhZC4KK2RpZmYgLS1naXQg YS9zcmMvY29yZS9pbmRleGluZy5jcHAgYi9zcmMvY29yZS9pbmRleGluZy5jcHAKK2luZGV4IDIz ZmI5NWIuLmU1NDdjNWEgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9pbmRleGluZy5jcHAKKysrKyBi L3NyYy9jb3JlL2luZGV4aW5nLmNwcAorQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIEZGTVNfSW5k ZXhlcjo6Q2hlY2tBdWRpb1Byb3BlcnRpZXMoaW50IFRyYWNrLCBBVkNvZGVjQ29udGV4dCAqQ29u dGV4dCkgeworICAgICB9CisgfQorIAorLXZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFj a2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0LCBpbnQgKlJl cGVhdFBpY3QsCisrdm9pZCBGRk1TX0luZGV4ZXI6OlBhcnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZD b250ZXh0ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICpwa3QsIGludCAqUmVwZWF0UGljdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKkZyYW1lVHlwZSwgYm9vbCAq SW52aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBpY1N0cnVjdCkgeworICAg ICBpZiAoVmlkZW9Db250ZXh0LlBhcnNlcikgeworICAgICAgICAgdWludDhfdCAqT0I7CitAQCAt MzMwLDggKzMzMCw4IEBAIHZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJl ZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0CisgICAgICAgICBhdl9wYXJz ZXJfcGFyc2UyKFZpZGVvQ29udGV4dC5QYXJzZXIsCisgICAgICAgICAgICAgVmlkZW9Db250ZXh0 LkNvZGVjQ29udGV4dCwKKyAgICAgICAgICAgICAmT0IsICZPQlNpemUsCistICAgICAgICAgICAg cGt0LmRhdGEsIHBrdC5zaXplLAorLSAgICAgICAgICAgIHBrdC5wdHMsIHBrdC5kdHMsIHBrdC5w b3MpOworKyAgICAgICAgICAgIHBrdC0+ZGF0YSwgcGt0LT5zaXplLAorKyAgICAgICAgICAgIHBr dC0+cHRzLCBwa3QtPmR0cywgcGt0LT5wb3MpOworIAorICAgICAgICAgLy8gSC4yNjQgKFBBRkYp IGFuZCBIRVZDIG1heSBoYXZlIG9uZSBmaWVsZCBwZXIgcGFja2V0LCBzbyB3ZSBuZWVkIHRvIHRy YWNrCisgICAgICAgICAvLyB3aGVuIHdlIGhhdmUgYSBmdWxsIG9yIGhhbGYgZnJhbWUgYXZhaWxh YmxlLCBhbmQgbWFyayBvbmUgb2YgdGhlbSBhcworQEAgLTM1MSwxNSArMzUxLDE1IEBAIHZvaWQg RkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250 ZXh0LCBBVlBhY2tldCAmcGt0CisgCisgICAgICAgICAqUmVwZWF0UGljdCA9IFZpZGVvQ29udGV4 dC5QYXJzZXItPnJlcGVhdF9waWN0OworICAgICAgICAgKkZyYW1lVHlwZSA9IFZpZGVvQ29udGV4 dC5QYXJzZXItPnBpY3RfdHlwZTsKKy0gICAgICAgICpJbnZpc2libGUgPSAoSW5jb21wbGV0ZUZy YW1lIHx8IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0IDwgMCB8fCAocGt0LmZsYWdz ICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpOworKyAgICAgICAgKkludmlzaWJsZSA9IChJbmNvbXBs ZXRlRnJhbWUgfHwgVmlkZW9Db250ZXh0LlBhcnNlci0+cmVwZWF0X3BpY3QgPCAwIHx8IChwa3Qt PmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpOworICAgICB9IGVsc2UgeworLSAgICAgICAg KkludmlzaWJsZSA9ICEhKHBrdC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpOworKyAgICAg ICAgKkludmlzaWJsZSA9ICEhKHBrdC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKyAg ICAgfQorIAorICAgICBpZiAoVmlkZW9Db250ZXh0LkNvZGVjQ29udGV4dC0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfVlA4KQorLSAgICAgICAgUGFyc2VWUDgocGt0LmRhdGFbMF0sIEludmlzaWJs ZSwgRnJhbWVUeXBlKTsKKysgICAgICAgIFBhcnNlVlA4KHBrdC0+ZGF0YVswXSwgSW52aXNpYmxl LCBGcmFtZVR5cGUpOworICAgICBlbHNlIGlmIChWaWRlb0NvbnRleHQuQ29kZWNDb250ZXh0LT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpCistICAgICAgICBQYXJzZVZQOShwa3QuZGF0YVsw XSwgSW52aXNpYmxlLCBGcmFtZVR5cGUpOworKyAgICAgICAgUGFyc2VWUDkocGt0LT5kYXRhWzBd LCBJbnZpc2libGUsIEZyYW1lVHlwZSk7CisgfQorIAorIHZvaWQgRkZNU19JbmRleGVyOjpGcmVl KCkgeworQEAgLTQ1OCwzMiArNDU4LDM2IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9J bmRleGluZygpIHsKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBBVlBhY2tldCBQYWNrZXQ7 CistICAgIEluaXROdWxsUGFja2V0KFBhY2tldCk7CisrICAgIEFWUGFja2V0ICpQYWNrZXQgPSBh dl9wYWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQYWNrZXQpCisrICAgICAgICB0aHJvdyBGRk1T X0V4Y2VwdGlvbihGRk1TX0VSUk9SX0NPREVDLCBGRk1TX0VSUk9SX0FMTE9DQVRJT05fRkFJTEVE LAorKyAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0LiIpOworICAgICBzdGQ6 OnZlY3RvcjxpbnQ2NF90PiBMYXN0VmFsaWRUUyhGb3JtYXRDb250ZXh0LT5uYl9zdHJlYW1zLCBB Vl9OT1BUU19WQUxVRSk7CisgCisgICAgIGludDY0X3QgZmlsZXNpemUgPSBhdmlvX3NpemUoRm9y bWF0Q29udGV4dC0+cGIpOworICAgICBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSBMYXN0UGljU3Ry dWN0ID0gQVZfUElDVFVSRV9TVFJVQ1RVUkVfVU5LTk9XTjsKKy0gICAgd2hpbGUgKGF2X3JlYWRf ZnJhbWUoRm9ybWF0Q29udGV4dCwgJlBhY2tldCkgPj0gMCkgeworKyAgICB3aGlsZSAoYXZfcmVh ZF9mcmFtZShGb3JtYXRDb250ZXh0LCBQYWNrZXQpID49IDApIHsKKyAgICAgICAgIC8vIFVwZGF0 ZSBwcm9ncmVzcworICAgICAgICAgLy8gRm9ybWF0Q29udGV4dC0+cGIgY2FuIGFwcGFyZW50bHkg YmUgTlVMTCB3aGVuIG9wZW5pbmcgaW1hZ2VzLgorICAgICAgICAgaWYgKElDICYmIEZvcm1hdENv bnRleHQtPnBiKSB7CistICAgICAgICAgICAgaWYgKCgqSUMpKEZvcm1hdENvbnRleHQtPnBiLT5w b3MsIGZpbGVzaXplLCBJQ1ByaXZhdGUpKQorKyAgICAgICAgICAgIGlmICgoKklDKShGb3JtYXRD b250ZXh0LT5wYi0+cG9zLCBmaWxlc2l6ZSwgSUNQcml2YXRlKSkgeworKyAgICAgICAgICAgICAg ICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgICAgICAgICAgdGhyb3cgRkZNU19F eGNlcHRpb24oRkZNU19FUlJPUl9DQU5DRUxMRUQsIEZGTVNfRVJST1JfVVNFUiwKKyAgICAgICAg ICAgICAgICAgICAgICJDYW5jZWxsZWQgYnkgdXNlciIpOworKyAgICAgICAgICAgIH0KKyAgICAg ICAgIH0KKy0gICAgICAgIGlmICghSW5kZXhNYXNrLmNvdW50KFBhY2tldC5zdHJlYW1faW5kZXgp KSB7CistICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAgICAgICAgaWYg KCFJbmRleE1hc2suY291bnQoUGFja2V0LT5zdHJlYW1faW5kZXgpKSB7CisrICAgICAgICAgICAg YXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg ICB9CisgCistICAgICAgICBpbnQgVHJhY2sgPSBQYWNrZXQuc3RyZWFtX2luZGV4OworKyAgICAg ICAgaW50IFRyYWNrID0gUGFja2V0LT5zdHJlYW1faW5kZXg7CisgICAgICAgICBGRk1TX1RyYWNr ICZUcmFja0luZm8gPSAoKlRyYWNrSW5kaWNlcylbVHJhY2tdOworLSAgICAgICAgYm9vbCBLZXlG cmFtZSA9ICEhKFBhY2tldC5mbGFncyAmIEFWX1BLVF9GTEFHX0tFWSk7CisrICAgICAgICBib29s IEtleUZyYW1lID0gISEoUGFja2V0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0tFWSk7CisgICAgICAg ICBSZWFkVFMoUGFja2V0LCBMYXN0VmFsaWRUU1tUcmFja10sICgqVHJhY2tJbmRpY2VzKVtUcmFj a10uVXNlRFRTKTsKKyAKKyAgICAgICAgIGlmIChGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNr XS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKSB7CistICAgICAg ICAgICAgaW50NjRfdCBQVFMgPSBUcmFja0luZm8uVXNlRFRTID8gUGFja2V0LmR0cyA6IFBhY2tl dC5wdHM7CisrICAgICAgICAgICAgaW50NjRfdCBQVFMgPSBUcmFja0luZm8uVXNlRFRTID8gUGFj a2V0LT5kdHMgOiBQYWNrZXQtPnB0czsKKyAgICAgICAgICAgICBpZiAoUFRTID09IEFWX05PUFRT X1ZBTFVFKSB7CisgICAgICAgICAgICAgICAgIC8vIFZQeCBhbHQtcmVmcyBhcmUgb3V0cHV0IGFz IHBhY2tldHMgd2hpY2ggbGFjayB0aW1lc3RtcHMgb3IgZHVyYXRpb25zLCBzaW5jZQorICAgICAg ICAgICAgICAgICAvLyB0aGV5IGFyZSBpbnZpc2libGUuIEN1cnJlbnRseSwgdGhlIHRpbWVzdGFt cCBtYW5nbGluZyBjb2RlIGluIGxpYmF2Zm9ybWF0CitAQCAtNDk1LDkgKzQ5OSwxMSBAQCBGRk1T X0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgICAgIC8v IEZGTVMyIGN1cnJlbnRseSBzb3J0cyBwYWNrZXRzIGJ5IFBUUywgd2hpY2ggd2lsbCBicmVhayBk ZWNvZGluZywgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgICBib29sIEhhc0FsdFJlZnMgPSAo Rm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9D T0RFQ19JRF9WUDggfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1h dENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf SURfVlA5KTsKKy0gICAgICAgICAgICAgICAgaWYgKFBhY2tldC5kdXJhdGlvbiA9PSAwICYmICFI YXNBbHRSZWZzKQorKyAgICAgICAgICAgICAgICBpZiAoUGFja2V0LT5kdXJhdGlvbiA9PSAwICYm ICFIYXNBbHRSZWZzKSB7CisrICAgICAgICAgICAgICAgICAgICBhdl9wYWNrZXRfZnJlZSgmUGFj a2V0KTsKKyAgICAgICAgICAgICAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJS T1JfSU5ERVhJTkcsIEZGTVNfRVJST1JfUEFSU0VSLAorICAgICAgICAgICAgICAgICAgICAgICAg ICJJbnZhbGlkIHBhY2tldCBwdHMsIGR0cywgYW5kIGR1cmF0aW9uIik7CisrICAgICAgICAgICAg ICAgIH0KKyAKKyAgICAgICAgICAgICAgICAgaWYgKFRyYWNrSW5mby5lbXB0eSgpKQorICAgICAg ICAgICAgICAgICAgICAgUFRTID0gMDsKK0BAIC01MTMsNyArNTE5LDcgQEAgRkZNU19JbmRleCAq RkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgIFBhcnNlVmlkZW9QYWNr ZXQoQVZDb250ZXh0c1tUcmFja10sIFBhY2tldCwgJlJlcGVhdFBpY3QsICZGcmFtZVR5cGUsICZJ bnZpc2libGUsICZMYXN0UGljU3RydWN0KTsKKyAKKyAgICAgICAgICAgICBUcmFja0luZm8uQWRk VmlkZW9GcmFtZShQVFMsIFJlcGVhdFBpY3QsIEtleUZyYW1lLAorLSAgICAgICAgICAgICAgICBG cmFtZVR5cGUsIFBhY2tldC5wb3MsIEludmlzaWJsZSk7CisrICAgICAgICAgICAgICAgIEZyYW1l VHlwZSwgUGFja2V0LT5wb3MsIEludmlzaWJsZSk7CisgICAgICAgICB9IGVsc2UgaWYgKEZvcm1h dENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElB X1RZUEVfQVVESU8pIHsKKyAgICAgICAgICAgICAvLyBGb3IgdmlkZW8gc2Vla2luZyB0aW1lc3Rh bXBzIGFyZSB1c2VkIG9ubHkgaWYgYWxsIHBhY2tldHMgaGF2ZQorICAgICAgICAgICAgIC8vIHRp bWVzdGFtcHMsIHdoaWxlIGZvciBhdWRpbyB0aGV5J3JlIHVzZWQgaWYgYW55IGhhdmUgdGltZXN0 YW1wcywKK0BAIC01MjIsMjggKzUyOCwyOSBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRv SW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgICAgIFRyYWNrSW5mby5IYXNUUyA9IHRydWU7Cisg CisgICAgICAgICAgICAgaW50NjRfdCBTdGFydFNhbXBsZSA9IEFWQ29udGV4dHNbVHJhY2tdLkN1 cnJlbnRTYW1wbGU7CistICAgICAgICAgICAgdWludDMyX3QgU2FtcGxlQ291bnQgPSBJbmRleEF1 ZGlvUGFja2V0KFRyYWNrLCAmUGFja2V0LCBBVkNvbnRleHRzW1RyYWNrXSwgKlRyYWNrSW5kaWNl cyk7CisrICAgICAgICAgICAgdWludDMyX3QgU2FtcGxlQ291bnQgPSBJbmRleEF1ZGlvUGFja2V0 KFRyYWNrLCBQYWNrZXQsIEFWQ29udGV4dHNbVHJhY2tdLCAqVHJhY2tJbmRpY2VzKTsKKyAgICAg ICAgICAgICBUcmFja0luZm8uU2FtcGxlUmF0ZSA9IEFWQ29udGV4dHNbVHJhY2tdLkNvZGVjQ29u dGV4dC0+c2FtcGxlX3JhdGU7CisgCisgICAgICAgICAgICAgVHJhY2tJbmZvLkFkZEF1ZGlvRnJh bWUoTGFzdFZhbGlkVFNbVHJhY2tdLAorLSAgICAgICAgICAgICAgICBTdGFydFNhbXBsZSwgU2Ft cGxlQ291bnQsIEtleUZyYW1lLCBQYWNrZXQucG9zLCBQYWNrZXQuZmxhZ3MgJiBBVl9QS1RfRkxB R19ESVNDQVJEKTsKKysgICAgICAgICAgICAgICAgU3RhcnRTYW1wbGUsIFNhbXBsZUNvdW50LCBL ZXlGcmFtZSwgUGFja2V0LT5wb3MsIFBhY2tldC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJE KTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGlmICghKFBhY2tldC5mbGFncyAmIEFWX1BLVF9G TEFHX0RJU0NBUkQpKQorLSAgICAgICAgICAgIFRyYWNrSW5mby5MYXN0RHVyYXRpb24gPSBQYWNr ZXQuZHVyYXRpb247CisrICAgICAgICBpZiAoIShQYWNrZXQtPmZsYWdzICYgQVZfUEtUX0ZMQUdf RElTQ0FSRCkpCisrICAgICAgICAgICAgVHJhY2tJbmZvLkxhc3REdXJhdGlvbiA9IFBhY2tldC0+ ZHVyYXRpb247CisgCistICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CisrICAgICAg ICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgfQorKyAgICBhdl9wYWNrZXRfZnJlZSgm UGFja2V0KTsKKyAKKyAgICAgVHJhY2tJbmRpY2VzLT5GaW5hbGl6ZShBVkNvbnRleHRzLCBGb3Jt YXRDb250ZXh0LT5pZm9ybWF0LT5uYW1lKTsKKyAgICAgcmV0dXJuIFRyYWNrSW5kaWNlcy5yZWxl YXNlKCk7CisgfQorIAorLXZvaWQgRkZNU19JbmRleGVyOjpSZWFkVFMoY29uc3QgQVZQYWNrZXQg JlBhY2tldCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUykgeworLSAgICBpZiAoIVVzZURUUyAm JiBQYWNrZXQucHRzICE9IEFWX05PUFRTX1ZBTFVFKQorLSAgICAgICAgVFMgPSBQYWNrZXQucHRz OworK3ZvaWQgRkZNU19JbmRleGVyOjpSZWFkVFMoY29uc3QgQVZQYWNrZXQgKlBhY2tldCwgaW50 NjRfdCAmVFMsIGJvb2wgJlVzZURUUykgeworKyAgICBpZiAoIVVzZURUUyAmJiBQYWNrZXQtPnB0 cyAhPSBBVl9OT1BUU19WQUxVRSkKKysgICAgICAgIFRTID0gUGFja2V0LT5wdHM7CisgICAgIGlm IChUUyA9PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICAgIFVzZURUUyA9IHRydWU7CistICAgIGlm IChVc2VEVFMgJiYgUGFja2V0LmR0cyAhPSBBVl9OT1BUU19WQUxVRSkKKy0gICAgICAgIFRTID0g UGFja2V0LmR0czsKKysgICAgaWYgKFVzZURUUyAmJiBQYWNrZXQtPmR0cyAhPSBBVl9OT1BUU19W QUxVRSkKKysgICAgICAgIFRTID0gUGFja2V0LT5kdHM7CisgfQorZGlmZiAtLWdpdCBhL3NyYy9j b3JlL2luZGV4aW5nLmggYi9zcmMvY29yZS9pbmRleGluZy5oCitpbmRleCAzY2ZjM2MzLi41YzA2 ODY4IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvaW5kZXhpbmcuaAorKysrIGIvc3JjL2NvcmUvaW5k ZXhpbmcuaAorQEAgLTgwLDEwICs4MCwxMCBAQCBwcml2YXRlOgorICAgICBpbnQ2NF90IEZpbGVz aXplOworICAgICB1aW50OF90IERpZ2VzdFsyMF07CisgCistICAgIHZvaWQgUmVhZFRTKGNvbnN0 IEFWUGFja2V0ICZQYWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMpOworKyAgICB2b2lk IFJlYWRUUyhjb25zdCBBVlBhY2tldCAqUGFja2V0LCBpbnQ2NF90ICZUUywgYm9vbCAmVXNlRFRT KTsKKyAgICAgdm9pZCBDaGVja0F1ZGlvUHJvcGVydGllcyhpbnQgVHJhY2ssIEFWQ29kZWNDb250 ZXh0ICpDb250ZXh0KTsKKyAgICAgdWludDMyX3QgSW5kZXhBdWRpb1BhY2tldChpbnQgVHJhY2ss IEFWUGFja2V0ICpQYWNrZXQsIFNoYXJlZEFWQ29udGV4dCAmQ29udGV4dCwgRkZNU19JbmRleCAm VHJhY2tJbmRpY2VzKTsKKy0gICAgdm9pZCBQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4 dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0LCBpbnQgKlJlcGVhdFBpY3QsIGludCAqRnJh bWVUeXBlLCBib29sICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3RydWN0dXJlICpMYXN0UGlj U3RydWN0KTsKKysgICAgdm9pZCBQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlk ZW9Db250ZXh0LCBBVlBhY2tldCAqcGt0LCBpbnQgKlJlcGVhdFBpY3QsIGludCAqRnJhbWVUeXBl LCBib29sICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3RydWN0dXJlICpMYXN0UGljU3RydWN0 KTsKKyAgICAgdm9pZCBGcmVlKCk7CisgcHVibGljOgorICAgICBGRk1TX0luZGV4ZXIoY29uc3Qg Y2hhciAqRmlsZW5hbWUpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3V0aWxzLmNwcCBiL3NyYy9j b3JlL3V0aWxzLmNwcAoraW5kZXggY2U2NzUzMy4uOGEyZTk5NyAxMDA2NDQKKy0tLSBhL3NyYy9j b3JlL3V0aWxzLmNwcAorKysrIGIvc3JjL2NvcmUvdXRpbHMuY3BwCitAQCAtNjIsMTIgKzYyLDYg QEAgdm9pZCBDbGVhckVycm9ySW5mbyhGRk1TX0Vycm9ySW5mbyAqRXJyb3JJbmZvKSB7CisgICAg IH0KKyB9CisgCistdm9pZCBJbml0TnVsbFBhY2tldChBVlBhY2tldCAmcGt0KSB7CistICAgIGF2 X2luaXRfcGFja2V0KCZwa3QpOworLSAgICBwa3QuZGF0YSA9IG51bGxwdHI7CistICAgIHBrdC5z aXplID0gMDsKKy19CistCisgdm9pZCBGaWxsQVAoRkZNU19BdWRpb1Byb3BlcnRpZXMgJkFQLCBB VkNvZGVjQ29udGV4dCAqQ1RYLCBGRk1TX1RyYWNrICZGcmFtZXMpIHsKKyAgICAgQVAuU2FtcGxl Rm9ybWF0ID0gc3RhdGljX2Nhc3Q8RkZNU19TYW1wbGVGb3JtYXQ+KGF2X2dldF9wYWNrZWRfc2Ft cGxlX2ZtdChDVFgtPnNhbXBsZV9mbXQpKTsKKyAgICAgQVAuQml0c1BlclNhbXBsZSA9IGF2X2dl dF9ieXRlc19wZXJfc2FtcGxlKENUWC0+c2FtcGxlX2ZtdCkgKiA4OworZGlmZiAtLWdpdCBhL3Ny Yy9jb3JlL3V0aWxzLmggYi9zcmMvY29yZS91dGlscy5oCitpbmRleCA5ODE5ZGM3Li4wMDNhYjc5 IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdXRpbHMuaAorKysrIGIvc3JjL2NvcmUvdXRpbHMuaAor QEAgLTU4LDcgKzU4LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1ha2VfdW5pcXVlKEFyZ3MmJi4u LiBhcmdzKSB7CisgfQorIAorIHZvaWQgQ2xlYXJFcnJvckluZm8oRkZNU19FcnJvckluZm8gKkVy cm9ySW5mbyk7Cistdm9pZCBJbml0TnVsbFBhY2tldChBVlBhY2tldCAmcGt0KTsKKyB2b2lkIEZp bGxBUChGRk1TX0F1ZGlvUHJvcGVydGllcyAmQVAsIEFWQ29kZWNDb250ZXh0ICpDVFgsIEZGTVNf VHJhY2sgJkZyYW1lcyk7CisgCisgdm9pZCBMQVZGT3BlbkZpbGUoY29uc3QgY2hhciAqU291cmNl RmlsZSwgQVZGb3JtYXRDb250ZXh0IComRm9ybWF0Q29udGV4dCwgaW50IFRyYWNrKTsKK2RpZmYg LS1naXQgYS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5j cHAKK2luZGV4IDA2YmQxNjEuLmI4ODk5NzAgMTAwNjQ0CistLS0gYS9zcmMvY29yZS92aWRlb3Nv dXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAorQEAgLTY3MywzMCArNjcz LDM0IEBAIHZvaWQgRkZNU19WaWRlb1NvdXJjZTo6RGVjb2RlTmV4dEZyYW1lKGludDY0X3QgJkFT dGFydFRpbWUsIGludDY0X3QgJlBvcykgeworICAgICBpZiAoSGFzUGVuZGluZ0RlbGF5ZWRGcmFt ZXMoKSkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgQVZQYWNrZXQgUGFja2V0OworLSAgICBJ bml0TnVsbFBhY2tldChQYWNrZXQpOworLQorLSAgICB3aGlsZSAoUmVhZEZyYW1lKCZQYWNrZXQp ID49IDApIHsKKy0gICAgICAgIGlmIChQYWNrZXQuc3RyZWFtX2luZGV4ICE9IFZpZGVvVHJhY2sp IHsKKy0gICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CisrICAgIEFWUGFja2V0 ICpQYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQYWNrZXQpCisrICAgICAg ICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VSUk9SX0FM TE9DQVRJT05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0 LiIpOworKworKyAgICB3aGlsZSAoUmVhZEZyYW1lKFBhY2tldCkgPj0gMCkgeworKyAgICAgICAg aWYgKFBhY2tldC0+c3RyZWFtX2luZGV4ICE9IFZpZGVvVHJhY2spIHsKKysgICAgICAgICAgICBh dl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg IH0KKyAKKyAgICAgICAgIGlmIChBU3RhcnRUaW1lIDwgMCkKKy0gICAgICAgICAgICBBU3RhcnRU aW1lID0gRnJhbWVzLlVzZURUUyA/IFBhY2tldC5kdHMgOiBQYWNrZXQucHRzOworKyAgICAgICAg ICAgIEFTdGFydFRpbWUgPSBGcmFtZXMuVXNlRFRTID8gUGFja2V0LT5kdHMgOiBQYWNrZXQtPnB0 czsKKyAKKyAgICAgICAgIGlmIChQb3MgPCAwKQorLSAgICAgICAgICAgIFBvcyA9IFBhY2tldC5w b3M7CisrICAgICAgICAgICAgUG9zID0gUGFja2V0LT5wb3M7CisgCistICAgICAgICBib29sIEZy YW1lRmluaXNoZWQgPSBEZWNvZGVQYWNrZXQoJlBhY2tldCk7CistICAgICAgICBhdl9wYWNrZXRf dW5yZWYoJlBhY2tldCk7CistICAgICAgICBpZiAoRnJhbWVGaW5pc2hlZCkKKysgICAgICAgIGJv b2wgRnJhbWVGaW5pc2hlZCA9IERlY29kZVBhY2tldChQYWNrZXQpOworKyAgICAgICAgYXZfcGFj a2V0X3VucmVmKFBhY2tldCk7CisrICAgICAgICBpZiAoRnJhbWVGaW5pc2hlZCkgeworKyAgICAg ICAgICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworICAgICAgICAgICAgIHJldHVybjsKKysg ICAgICAgIH0KKyAgICAgfQorIAorICAgICAvLyBGbHVzaCBmaW5hbCBmcmFtZXMKKy0gICAgSW5p dE51bGxQYWNrZXQoUGFja2V0KTsKKy0gICAgRGVjb2RlUGFja2V0KCZQYWNrZXQpOworKyAgICBE ZWNvZGVQYWNrZXQoUGFja2V0KTsKKysgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgfQor IAorIGJvb2wgRkZNU19WaWRlb1NvdXJjZTo6U2Vla1RvKGludCBuLCBpbnQgU2Vla09mZnNldCkg eworLS0gCisyLjQwLjAKKworRnJvbSBiZjllMDNlOWUwODUzNGMwMjRlNWE3NDRhNjQzN2M0YWFj MTYwMjAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVyZWsgQnVpdGVuaHVpcyA8 ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQgTWF5IDIwMjEgMTQ6MjA6 NDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIGNvbmZpZ3VyZTogUmVtb3ZlIGRlcHJlY2F0 ZWQgQVBJIHVzZQorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0 ZW5odWlzQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9j b25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGIzNWVmODBiYy4uZDE5NzE0ZDBmIDEw MDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMDIsMTAg KzEwMiwxMCBAQCBDRkxBR1M9IiRfQ0ZMQUdTICRGRk1QRUdfQ0ZMQUdTIgorCisgQUNfREVGVU4o W1RFU1RfRkZNUEVHXSwKKyAgICAgICAgICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JB TShbWworLSAgICAgICAgICAgICNpbmNsdWRlIDxsaWJhdmNvZGVjL2F2Y29kZWMuaD4KKysgICAg ICAgICAgICAjaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KKyAgICAgICAgICAgICAj aW5jbHVkZSA8bGlic3dzY2FsZS9zd3NjYWxlLmg+CisgICAgICAgICAgICAgXV0sW1sKKy0gICAg ICAgICAgICAgICAgYXZjb2RlY19yZWdpc3Rlcl9hbGwoKTsKKysgICAgICAgICAgICAgICAgYXZm b3JtYXRfbmV0d29ya19pbml0KCk7CisgICAgICAgICAgICAgICAgIHN3c2NhbGVfdmVyc2lvbigp OworICAgICAgICAgICAgIF1dKV0sIFtldmFsICQxPXllc10sIFtldmFsICQxPW5vXSkKKyAgICAg ICAgIF0pCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUgYi9zcmNwa2dzL2Zm bXMyL3RlbXBsYXRlCmluZGV4IDY4ZThhMGMxNGJjZS4uMmFjZmFkYWM0NGIzIDEwMDY0NAotLS0g YS9zcmNwa2dzL2ZmbXMyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1zMicKIHBrZ25hbWU9ZmZtczIK IHZlcnNpb249Mi40MAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNv bmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZW5hYmxlLXNoYXJlZCAtLWRpc2FibGUtc3RhdGlj IgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGF1dG9jb25mIGF1dG9tYWtlIGxpYnRvb2wi CgpGcm9tIDcyMWUyZjZhOGMxYTI0OTM4OTRmZTc5MTAwYjY3NjczN2NiMDhhY2IgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNy8xMzBdIGZy ZWVyZHA6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL2ZyZWVyZHAvcGF0Y2hlcy9m Zm1wZWc2X2FhMmNiOWFhLnBhdGNoICAgIHwgNDIgKysrKysrKysrKysrKysrKysrKwogc3JjcGtn cy9mcmVlcmRwL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMg Y2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2gKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoIGIv c3JjcGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE0MzI0ZGEzYTg4MgotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2gKQEAg LTAsMCArMSw0MiBAQAorRnJvbSBhYTJjYjlhYTVmZjU1NjI0MzM1OThiYTE2OGE0NjZlMDc1MmJj YTBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogYWthbGxhYmV0aCA8YWthbGxhYmV0 aEBwb3N0ZW8ubmV0PgorRGF0ZTogVHVlLCAxNCBGZWIgMjAyMyAwNzo0ODo1NCArMDEwMAorU3Vi amVjdDogW1BBVENIXSBGaXhlZCAjODY4NjogVXBkYXRlIGgyNjQgdG8gdXNlIG5ldyBGRk1QRUcg QVBJCisKKy0tLQorIGNoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jIHwg MiArKworIGxpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYyAgICAgICAgICAgIHwgMiArKwor IDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jaGFubmVs cy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYyBiL2NoYW5uZWxzL3RzbWYvY2xpZW50 L2ZmbXBlZy90c21mX2ZmbXBlZy5jCitpbmRleCAzMzk0NjJkODY1Zi4uYmVlYTgwYjdhMWUgMTAw NjQ0CistLS0gYS9jaGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYworKysr IGIvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMKK0BAIC0yMzksOCAr MjM5LDEwIEBAIHN0YXRpYyBCT09MIHRzbWZfZmZtcGVnX2luaXRfc3RyZWFtKElUU01GRGVjb2Rl ciogZGVjb2RlciwgY29uc3QgVFNfQU1fTUVESUFfVFlQCisgCQl9CisgCX0KKyAKKysjaWYgTElC QVZDT0RFQ19WRVJTSU9OX0lOVCA8IEFWX1ZFUlNJT05fSU5UKDU5LCAxOCwgMTAwKQorIAlpZiAo bWRlY29kZXItPmNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBfVFJVTkNBVEVEKQor IAkJbWRlY29kZXItPmNvZGVjX2NvbnRleHQtPmZsYWdzIHw9IEFWX0NPREVDX0ZMQUdfVFJVTkNB VEVEOworKyNlbmRpZgorIAorIAlyZXR1cm4gVFJVRTsKKyB9CitkaWZmIC0tZ2l0IGEvbGliZnJl ZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jIGIvbGliZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5j CitpbmRleCA4YTIzZGIyNDczYy4uODk2YTMzMzAxOWIgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRw L2NvZGVjL2gyNjRfZmZtcGVnLmMKKysrKyBiL2xpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcu YworQEAgLTYxNSwxMCArNjE1LDEyIEBAIHN0YXRpYyBCT09MIGxpYmF2Y29kZWNfaW5pdChIMjY0 X0NPTlRFWFQqIGgyNjQpCisgCQkJZ290byBFWENFUFRJT047CisgCQl9CisgCisrI2lmIExJQkFW Q09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCg1OSwgMTgsIDEwMCkKKyAJCWlmIChz eXMtPmNvZGVjRGVjb2Rlci0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkK KyAJCXsKKyAJCQlzeXMtPmNvZGVjRGVjb2RlckNvbnRleHQtPmZsYWdzIHw9IEFWX0NPREVDX0ZM QUdfVFJVTkNBVEVEOworIAkJfQorKyNlbmRpZgorIAorICNpZmRlZiBXSVRIX1ZBQVBJCisgCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVyZHAvdGVtcGxhdGUgYi9zcmNwa2dzL2ZyZWVyZHAvdGVt cGxhdGUKaW5kZXggMjVlOGFhOTY3N2YwLi40ZDUxYzgxODk5MDIgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZnJlZXJkcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZyZWVyZHAvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmcmVlcmRwJwogcGtnbmFtZT1mcmVlcmRw CiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21h a2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfQUxTQT1PTiAtRFdJVEhfQ1VQUz1PRkYgLURXSVRI X0ZGTVBFRz1PTgogIC1EV0lUSF9HU1RSRUFNRVJfMF8xMD1PRkYgLURXSVRIX0dTVFJFQU1FUl8x XzA9T0ZGIC1EV0lUSF9KUEVHPU9OCgpGcm9tIDBkYmNjOWU1ZTA4MWEyOGIwYTk3YWY4YTAzMDhm NGEyODc3NTc4NjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVj dDogW1BBVENIIDAzOC8xMzBdIGdlcmJlcmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nZXJiZXJhL3RlbXBs YXRlIGIvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCmluZGV4IGFlMTRmMzVjNzY3Yy4uMmRjMGFj MGNlMDNiIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dlcmJlcmEvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9nZXJiZXJhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn Z2VyYmVyYScKIHBrZ25hbWU9Z2VyYmVyYQogdmVyc2lvbj0xLjEyLjEKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRIX1NZU1RF TUQ9MCAtRFdJVEhfQVZDT0RFQz0xIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJv bSA2MWQ1MTRmZTc1YjljZDY1NDAxYWEzNzgwNmU0ZTM5YzQyNzdmYzUwIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzkvMTMwXSBnb2xkZW5k aWN0OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ29sZGVuZGljdC9wYXRj aGVzL2ZmbXBlZzQucGF0Y2ggfCAgMjEgLS0KIHNyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2Zm bXBlZzUucGF0Y2ggfCAyMzIgKysrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvZ29sZGVu ZGljdC90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgIDIgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjMz IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVnNC5wYXRjaCBiL3NyY3BrZ3MvZ29sZGVuZGlj dC9wYXRjaGVzL2ZmbXBlZzQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYw NDVmYTI3ZjU0Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVz L2ZmbXBlZzQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0tLS0gYS9mZm1w ZWdhdWRpby5jYy5vcmlnIDIwMTgtMDUtMDkgMjI6MTY6MTMuNDgwNjU5OTU4ICswMjAwCi0rKysg Yi9mZm1wZWdhdWRpby5jYyAgICAgIDIwMTgtMDUtMDkgMjI6MTY6NTAuNzQ4MzIyNzkwICswMjAw Ci1AQCAtMTQzLDcgKzE0Myw3IEBACi0gICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLQotLSAgdW5z aWduZWQgY2hhciAqIGF2aW9CdWZmZXIgPSAoIHVuc2lnbmVkIGNoYXIgKiApYXZfbWFsbG9jKCBr QnVmZmVyU2l6ZSArIEZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUgKTsKLSsgIHVuc2lnbmVk IGNoYXIgKiBhdmlvQnVmZmVyID0gKCB1bnNpZ25lZCBjaGFyICogKWF2X21hbGxvYygga0J1ZmZl clNpemUgKyBBVl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFICk7Ci0gICBpZiAoICFhdmlvQnVm ZmVyICkKLSAgIHsKLSAgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0ciggImF2X21hbGxvYygp IGZhaWxlZC4iICk7Ci1AQCAtMzgwLDcgKzM4MCw3IEBACi0gICB9Ci0KLSAgIGlmICggIVF0NHg1 OjpBdG9taWNJbnQ6OmxvYWRBY3F1aXJlKCBpc0NhbmNlbGxlZF8gKSAmJgotLSAgICAgICBjb2Rl Y0NvbnRleHRfLT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQ09ERUNfQ0FQX0RFTEFZICkKLSsgICAg ICAgY29kZWNDb250ZXh0Xy0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9ERUxB WSApCi0gICB7Ci0gICAgIGF2X2luaXRfcGFja2V0KCAmcGFja2V0ICk7Ci0gICAgIGludCBnb3RG cmFtZSA9IDA7Ci0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBl ZzUucGF0Y2ggYi9zcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2NmYzk4YWRhMzY4Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAt MCwwICsxLDIzMiBAQAorRnJvbSAwM2JiZTAxYjc5YTFmMDdhNjc4MGNiNjBmMjNhMDg3MTA0YzVk NzdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWJzNjIgPG90dG9tYW5uQHlhbmRl eC5ydT4KK0RhdGU6IEZyaSwgMzAgTWFyIDIwMTggMjI6NTM6MjQgKzAzMDAKK1N1YmplY3Q6IFtQ QVRDSF0gRml4IHdhcm5pbmdzIHdoaWxlIGNvbXBpbGUgd2l0aCBGRk1wZWcgMy40LjIgKGlzc3Vl ICM5NzgpCisKKy0tLQorIGZmbXBlZ2F1ZGlvLmNjIHwgNjggKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNjIgaW5zZXJ0 aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2ZmbXBlZ2F1ZGlvLmNjIGIv ZmZtcGVnYXVkaW8uY2MKK2luZGV4IGVkMTE3MmJkZC4uNTZlOGY3ODhlIDEwMDY0NAorLS0tIGEv ZmZtcGVnYXVkaW8uY2MKKysrKyBiL2ZmbXBlZ2F1ZGlvLmNjCitAQCAtOTEsNiArOTEsNyBAQCBz dHJ1Y3QgRGVjb2RlckNvbnRleHQKKyAgIFFCeXRlQXJyYXkgYXVkaW9EYXRhXzsKKyAgIFFEYXRh U3RyZWFtIGF1ZGlvRGF0YVN0cmVhbV87CisgICBBVkZvcm1hdENvbnRleHQgKiBmb3JtYXRDb250 ZXh0XzsKKysgIEFWQ29kZWMgKiBjb2RlY187CisgICBBVkNvZGVjQ29udGV4dCAqIGNvZGVjQ29u dGV4dF87CisgICBBVklPQ29udGV4dCAqIGF2aW9Db250ZXh0XzsKKyAgIEFWU3RyZWFtICogYXVk aW9TdHJlYW1fOworQEAgLTExNCw2ICsxMTUsNyBAQCBEZWNvZGVyQ29udGV4dDo6RGVjb2RlckNv bnRleHQoIFFCeXRlQXJyYXkgY29uc3QgJiBhdWRpb0RhdGEsIFFBdG9taWNJbnQgJiBpc0Nhbgor ICAgYXVkaW9EYXRhXyggYXVkaW9EYXRhICksCisgICBhdWRpb0RhdGFTdHJlYW1fKCBhdWRpb0Rh dGFfICksCisgICBmb3JtYXRDb250ZXh0XyggTlVMTCApLAorKyAgY29kZWNfKCBOVUxMICksCisg ICBjb2RlY0NvbnRleHRfKCBOVUxMICksCisgICBhdmlvQ29udGV4dF8oIE5VTEwgKSwKKyAgIGF1 ZGlvU3RyZWFtXyggTlVMTCApLAorQEAgLTE0Myw3ICsxNDUsMTEgQEAgYm9vbCBEZWNvZGVyQ29u dGV4dDo6b3BlbkNvZGVjKCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICAgICByZXR1cm4gZmFs c2U7CisgICB9CisKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTYgfHwgKCBMSUJB VkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTYgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwg NTYgKQorICAgdW5zaWduZWQgY2hhciAqIGF2aW9CdWZmZXIgPSAoIHVuc2lnbmVkIGNoYXIgKiAp YXZfbWFsbG9jKCBrQnVmZmVyU2l6ZSArIEZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUgKTsK KysjZWxzZQorKyAgdW5zaWduZWQgY2hhciAqIGF2aW9CdWZmZXIgPSAoIHVuc2lnbmVkIGNoYXIg KiApYXZfbWFsbG9jKCBrQnVmZmVyU2l6ZSArIEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUg KTsKKysjZW5kaWYKKyAgIGlmICggIWF2aW9CdWZmZXIgKQorICAgeworICAgICBlcnJvclN0cmlu ZyA9IFFPYmplY3Q6OnRyKCAiYXZfbWFsbG9jKCkgZmFpbGVkLiIgKTsKK0BAIC0xODYsNyArMTky LDExIEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6Om9wZW5Db2RlYyggUVN0cmluZyAmIGVycm9yU3Ry aW5nICkKKyAgIC8vIEZpbmQgYXVkaW8gc3RyZWFtLCB1c2UgdGhlIGZpcnN0IGF1ZGlvIHN0cmVh bSBpZiBhdmFpbGFibGUKKyAgIGZvciAoIHVuc2lnbmVkIGkgPSAwOyBpIDwgZm9ybWF0Q29udGV4 dF8tPm5iX3N0cmVhbXM7IGkrKyApCisgICB7CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpP UiA8IDU3IHx8ICggTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID09IDU3ICYmIExJQkFWQ09ERUNf VkVSU0lPTl9NSU5PUiA8IDMzICkKKyAgICAgaWYgKCBmb3JtYXRDb250ZXh0Xy0+c3RyZWFtc1tp XS0+Y29kZWMtPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPICkKKysjZWxzZQorKyAg ICAgIGlmICggZm9ybWF0Q29udGV4dF8tPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY190eXBl ID09IEFWTUVESUFfVFlQRV9BVURJTyApCisrI2VuZGlmCisgICAgIHsKKyAgICAgICBhdWRpb1N0 cmVhbV8gPSBmb3JtYXRDb250ZXh0Xy0+c3RyZWFtc1tpXTsKKyAgICAgICBicmVhazsKK0BAIC0x OTgsMjIgKzIwOCwzOCBAQCBib29sIERlY29kZXJDb250ZXh0OjpvcGVuQ29kZWMoIFFTdHJpbmcg JiBlcnJvclN0cmluZyApCisgICAgIHJldHVybiBmYWxzZTsKKyAgIH0KKworKyNpZiBMSUJBVkNP REVDX1ZFUlNJT05fTUFKT1IgPCA1NyB8fCAoIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1 NyAmJiBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgPCAzMyApCisgICBjb2RlY0NvbnRleHRfID0g YXVkaW9TdHJlYW1fLT5jb2RlYzsKKy0gIEFWQ29kZWMgKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9k ZWNvZGVyKCBjb2RlY0NvbnRleHRfLT5jb2RlY19pZCApOworLSAgaWYgKCAhY29kZWMgKQorKyAg Y29kZWNfID0gYXZjb2RlY19maW5kX2RlY29kZXIoIGNvZGVjQ29udGV4dF8tPmNvZGVjX2lkICk7 CisrICBpZiAoICFjb2RlY18gKQorICAgeworICAgICBlcnJvclN0cmluZyA9IFFPYmplY3Q6OnRy KCAiQ29kZWMgW2lkOiAlMV0gbm90IGZvdW5kLiIgKS5hcmcoIGNvZGVjQ29udGV4dF8tPmNvZGVj X2lkICk7CisgICAgIHJldHVybiBmYWxzZTsKKyAgIH0KKysjZWxzZQorKyAgY29kZWNfID0gYXZj b2RlY19maW5kX2RlY29kZXIoIGF1ZGlvU3RyZWFtXy0+Y29kZWNwYXItPmNvZGVjX2lkICk7Cisr ICBpZiAoICFjb2RlY18gKQorKyAgeworKyAgICBlcnJvclN0cmluZyA9IFFPYmplY3Q6OnRyKCAi Q29kZWMgW2lkOiAlMV0gbm90IGZvdW5kLiIgKS5hcmcoIGF1ZGlvU3RyZWFtXy0+Y29kZWNwYXIt PmNvZGVjX2lkICk7CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysgIGNvZGVjQ29udGV4dF8g PSBhdmNvZGVjX2FsbG9jX2NvbnRleHQzKCBjb2RlY18gKTsKKysgIGlmICggIWNvZGVjQ29udGV4 dF8gKQorKyAgeworKyAgICBlcnJvclN0cmluZyA9IFFPYmplY3Q6OnRyKCAiYXZjb2RlY19hbGxv Y19jb250ZXh0MygpIGZhaWxlZC4iICk7CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysgIGF2 Y29kZWNfcGFyYW1ldGVyc190b19jb250ZXh0KCBjb2RlY0NvbnRleHRfLCBhdWRpb1N0cmVhbV8t PmNvZGVjcGFyICk7CisrI2VuZGlmCisKKy0gIHJldCA9IGF2Y29kZWNfb3BlbjIoIGNvZGVjQ29u dGV4dF8sIGNvZGVjLCBOVUxMICk7CisrICByZXQgPSBhdmNvZGVjX29wZW4yKCBjb2RlY0NvbnRl eHRfLCBjb2RlY18sIE5VTEwgKTsKKyAgIGlmICggcmV0IDwgMCApCisgICB7CisgICAgIGVycm9y U3RyaW5nID0gUU9iamVjdDo6dHIoICJhdmNvZGVjX29wZW4yKCkgZmFpbGVkOiAlMS4iICkuYXJn KCBhdkVycm9yU3RyaW5nKCByZXQgKSApOworICAgICByZXR1cm4gZmFsc2U7CisgICB9CisKKy0g IGF2X2xvZyggTlVMTCwgQVZfTE9HX0lORk8sICJDb2RlYyBvcGVuOiAlczogY2hhbm5lbHM6ICVk LCByYXRlOiAlZCwgZm9ybWF0OiAlc1xuIiwgY29kZWMtPmxvbmdfbmFtZSwKKysgIGF2X2xvZygg TlVMTCwgQVZfTE9HX0lORk8sICJDb2RlYyBvcGVuOiAlczogY2hhbm5lbHM6ICVkLCByYXRlOiAl ZCwgZm9ybWF0OiAlc1xuIiwgY29kZWNfLT5sb25nX25hbWUsCisgICAgICAgICAgIGNvZGVjQ29u dGV4dF8tPmNoYW5uZWxzLCBjb2RlY0NvbnRleHRfLT5zYW1wbGVfcmF0ZSwgYXZfZ2V0X3NhbXBs ZV9mbXRfbmFtZSggY29kZWNDb250ZXh0Xy0+c2FtcGxlX2ZtdCApICk7CisgICByZXR1cm4gdHJ1 ZTsKKyB9CitAQCAtMjUyLDEwICsyNzgsMTMgQEAgdm9pZCBEZWNvZGVyQ29udGV4dDo6Y2xvc2VD b2RlYygpCisKKyAgIC8vIENsb3NpbmcgYSBjb2RlYyBjb250ZXh0IHdpdGhvdXQgcHJpb3IgYXZj b2RlY19vcGVuMigpIHdpbGwgcmVzdWx0IGluCisgICAvLyBhIGNyYXNoIGluIGZmbXBlZworLSAg aWYgKCBhdWRpb1N0cmVhbV8gJiYgYXVkaW9TdHJlYW1fLT5jb2RlYyAmJiBhdWRpb1N0cmVhbV8t PmNvZGVjLT5jb2RlYyApCisrICBpZiAoIGF1ZGlvU3RyZWFtXyAmJiBjb2RlY0NvbnRleHRfICYm IGNvZGVjXyApCisgICB7CisgICAgIGF1ZGlvU3RyZWFtXy0+ZGlzY2FyZCA9IEFWRElTQ0FSRF9B TEw7CistICAgIGF2Y29kZWNfY2xvc2UoIGF1ZGlvU3RyZWFtXy0+Y29kZWMgKTsKKysgICAgYXZj b2RlY19jbG9zZSggY29kZWNDb250ZXh0XyApOworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFK T1IgPiA1NyB8fCAoIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1NyAmJiBMSUJBVkNPREVD X1ZFUlNJT05fTUlOT1IgPj0gMzMgKQorKyAgICBhdmNvZGVjX2ZyZWVfY29udGV4dCggJmNvZGVj Q29udGV4dF8gKTsKKysjZW5kaWYKKyAgIH0KKworICAgYXZmb3JtYXRfY2xvc2VfaW5wdXQoICZm b3JtYXRDb250ZXh0XyApOworQEAgLTM1Niw2ICszODUsNyBAQCBib29sIERlY29kZXJDb250ZXh0 OjpwbGF5KCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICAgICBpZiAoIHBhY2tldC5zdHJlYW1f aW5kZXggPT0gYXVkaW9TdHJlYW1fLT5pbmRleCApCisgICAgIHsKKyAgICAgICBBVlBhY2tldCBw YWNrID0gcGFja2V0OworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1NyB8fCAoIExJ QkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1NyAmJiBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1Ig PCAzNyApCisgICAgICAgaW50IGdvdEZyYW1lID0gMDsKKyAgICAgICBkbworICAgICAgIHsKK0BA IC0zNzAsNiArNDAwLDE5IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6OnBsYXkoIFFTdHJpbmcgJiBl cnJvclN0cmluZyApCisgICAgICAgICBwYWNrLmRhdGEgKz0gbGVuOworICAgICAgIH0KKyAgICAg ICB3aGlsZSggcGFjay5zaXplID4gMCApOworKyNlbHNlCisrICAgICAgaW50IHJldCA9IGF2Y29k ZWNfc2VuZF9wYWNrZXQoIGNvZGVjQ29udGV4dF8sICZwYWNrICk7CisrICAgICAgLyogcmVhZCBh bGwgdGhlIG91dHB1dCBmcmFtZXMgKGluIGdlbmVyYWwgdGhlcmUgbWF5IGJlIGFueSBudW1iZXIg b2YgdGhlbSkgKi8KKysgICAgICB3aGlsZSggcmV0ID49IDAgKQorKyAgICAgIHsKKysgICAgICAg IHJldCA9IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZSggY29kZWNDb250ZXh0XywgZnJhbWUpOworKwor KyAgICAgICAgaWYgKCBRdDR4NTo6QXRvbWljSW50Ojpsb2FkQWNxdWlyZSggaXNDYW5jZWxsZWRf ICkgfHwgcmV0IDwgMCApCisrICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAgcGxheUZyYW1l KCBmcmFtZSApOworKyAgICAgIH0KKysjZW5kaWYKKyAgICAgfQorICAgICAvLyBhdl9mcmVlX3Bh Y2tldCgpIG11c3QgYmUgY2FsbGVkIGFmdGVyIGVhY2ggY2FsbCB0byBhdl9yZWFkX2ZyYW1lKCkK KyAjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJ T05fTUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwgNyApCitAQCAtMzc5 LDYgKzQyMiw3IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6OnBsYXkoIFFTdHJpbmcgJiBlcnJvclN0 cmluZyApCisgI2VuZGlmCisgICB9CisKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwg NTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19WRVJT SU9OX01JTk9SIDwgMzcgKQorICAgaWYgKCAhUXQ0eDU6OkF0b21pY0ludDo6bG9hZEFjcXVpcmUo IGlzQ2FuY2VsbGVkXyApICYmCisgICAgICAgIGNvZGVjQ29udGV4dF8tPmNvZGVjLT5jYXBhYmls aXRpZXMgJiBDT0RFQ19DQVBfREVMQVkgKQorICAgeworQEAgLTM5MSw2ICs0MzUsMTggQEAgYm9v bCBEZWNvZGVyQ29udGV4dDo6cGxheSggUVN0cmluZyAmIGVycm9yU3RyaW5nICkKKyAgICAgICBw bGF5RnJhbWUoIGZyYW1lICk7CisgICAgIH0KKyAgIH0KKysjZWxzZQorKyAgLyogZmx1c2ggdGhl IGRlY29kZXIgKi8KKysgIGF2X2luaXRfcGFja2V0KCAmcGFja2V0ICk7CisrICBpbnQgcmV0ID0g YXZjb2RlY19zZW5kX3BhY2tldChjb2RlY0NvbnRleHRfLCAmcGFja2V0ICk7CisrICB3aGlsZSgg cmV0ID49IDAgKQorKyAgeworKyAgICByZXQgPSBhdmNvZGVjX3JlY2VpdmVfZnJhbWUoY29kZWND b250ZXh0XywgZnJhbWUpOworKyAgICBpZiAoIFF0NHg1OjpBdG9taWNJbnQ6OmxvYWRBY3F1aXJl KCBpc0NhbmNlbGxlZF8gKSB8fCByZXQgPCAwICkKKysgICAgICBicmVhazsKKysgICAgcGxheUZy YW1lKCBmcmFtZSApOworKyAgfQorKyNlbmRpZgorCisgI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9N QUpPUiA8IDU0CisgICBhdl9mcmVlKCBmcmFtZSApOworMzIKK3NyY3BrZ3MvZ29sZGVuZGljdC9w YXRjaGVzL2ZmbXBlZzUtMi5wYXRjaAorQ29tbWVudCBvbiB0aGlzIGZpbGUKK0BAIC0wLDAgKzEs MzIgQEAKK0Zyb20gOTY2ZjRhOGI3OGU2MzI0YjkzMGU1YTUwZjJiYjkzMGJkODdlNTY1ZSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFiczYyIDxvdHRvbWFubkB5YW5kZXgucnU+CitE YXRlOiBGcmksIDI3IFNlcCAyMDE5IDE3OjAwOjUyICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZG bXBlZyBwbGF5ZXI6IEZpeCBzb21lIGNyYXNoZXMgb24gYnJva2VuIGZpbGVzCisKKy0tLQorIGZm bXBlZ2F1ZGlvLmNjIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQor CitkaWZmIC0tZ2l0IGEvZmZtcGVnYXVkaW8uY2MgYi9mZm1wZWdhdWRpby5jYworaW5kZXggNTZl OGY3ODhlLi40MTVmYzc5Y2IgMTAwNjQ0CistLS0gYS9mZm1wZWdhdWRpby5jYworKysrIGIvZmZt cGVnYXVkaW8uY2MKK0BAIC01MSw3ICs1MSw5IEBAIEF1ZGlvU2VydmljZSAmIEF1ZGlvU2Vydmlj ZTo6aW5zdGFuY2UoKQorCisgQXVkaW9TZXJ2aWNlOjpBdWRpb1NlcnZpY2UoKQorIHsKKysjaWYg TElCQVZGT1JNQVRfVkVSU0lPTl9NQUpPUiA8IDU4IHx8ICggTElCQVZGT1JNQVRfVkVSU0lPTl9N QUpPUiA9PSA1OCAmJiBMSUJBVkZPUk1BVF9WRVJTSU9OX01JTk9SIDwgOSApCisgICBhdl9yZWdp c3Rlcl9hbGwoKTsKKysjZW5kaWYKKyAgIGFvX2luaXRpYWxpemUoKTsKKyB9CisKK0BAIC00Mzgs NiArNDQwLDggQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6cGxheSggUVN0cmluZyAmIGVycm9yU3Ry aW5nICkKKyAjZWxzZQorICAgLyogZmx1c2ggdGhlIGRlY29kZXIgKi8KKyAgIGF2X2luaXRfcGFj a2V0KCAmcGFja2V0ICk7CisrICBwYWNrZXQuZGF0YSA9IE5VTEw7CisrICBwYWNrZXQuc2l6ZSA9 IDA7CisgICBpbnQgcmV0ID0gYXZjb2RlY19zZW5kX3BhY2tldChjb2RlY0NvbnRleHRfLCAmcGFj a2V0ICk7CisgICB3aGlsZSggcmV0ID49IDAgKQorICAgeworMjUKK3NyY3BrZ3MvZ29sZGVuZGlj dC9wYXRjaGVzL2ZmbXBlZzUtMy5wYXRjaAorQ29tbWVudCBvbiB0aGlzIGZpbGUKK0BAIC0wLDAg KzEsMjUgQEAKK0Zyb20gOGFjYjI4OGM5ZTliZGIzYzZiZjJlODAzOTU0ZGQzYjZhYzI3M2MwNSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IExpYW8gSnVueHVhbiA8bWlrZWxqeEAxMjYu Y29tPgorRGF0ZTogU3VuLCAyMCBGZWIgMjAyMiAxMjoyODowNSArMDgwMAorU3ViamVjdDogW1BB VENIXSBhZGQgc3VwcG9ydCBmb3IgZmZtcGVnIDUuMAorCistLS0KKyBmZm1wZWdhdWRpby5jYyB8 IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBh L2ZmbXBlZ2F1ZGlvLmNjIGIvZmZtcGVnYXVkaW8uY2MKK2luZGV4IGQ1NTBmNGE3Ny4uNzk0OGQy MTg3IDEwMDY0NAorLS0tIGEvZmZtcGVnYXVkaW8uY2MKKysrKyBiL2ZmbXBlZ2F1ZGlvLmNjCitA QCAtOTQsNyArOTQsMTEgQEAgc3RydWN0IERlY29kZXJDb250ZXh0CisgICBRQnl0ZUFycmF5IGF1 ZGlvRGF0YV87CisgICBRRGF0YVN0cmVhbSBhdWRpb0RhdGFTdHJlYW1fOworICAgQVZGb3JtYXRD b250ZXh0ICogZm9ybWF0Q29udGV4dF87CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8 IDU5CisgICBBVkNvZGVjICogY29kZWNfOworKyNlbHNlCisrICBjb25zdCBBVkNvZGVjICogY29k ZWNfOworKyNlbmRpZgorICAgQVZDb2RlY0NvbnRleHQgKiBjb2RlY0NvbnRleHRfOworICAgQVZJ T0NvbnRleHQgKiBhdmlvQ29udGV4dF87CisgICBBVlN0cmVhbSAqIGF1ZGlvU3RyZWFtXzsKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ29sZGVuZGlj dC90ZW1wbGF0ZQppbmRleCA0NTQ0YWU3MTBlZTYuLjJjYTQxODVlNTM4YSAxMDA2NDQKLS0tIGEv c3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1w bGF0ZQpAQCAtOSw3ICs5LDcgQEAgbWFrZWRlcGVuZHM9InRpZmYtZGV2ZWwgcXQ1LWRldmVsIGxp YnZvcmJpcy1kZXZlbCB6bGliLWRldmVsCiAgbGliWHRzdC1kZXZlbCBodW5zcGVsbC1kZXZlbCBx dDUtdG9vbHMtZGV2ZWwgcXQ1LWRlY2xhcmF0aXZlLWRldmVsCiAgcXQ1LXdlYmtpdC1kZXZlbCBs em8tZGV2ZWwgYnppcDItZGV2ZWwgbGliYW8tZGV2ZWwgcXQ1LXN2Zy1kZXZlbAogIGxpYmViLWRl dmVsIHF0NS14MTFleHRyYXMtZGV2ZWwgZmZtcGVnLWRldmVsIGxpYmx6bWEtZGV2ZWwiCi1zaG9y dF9kZXNjPSJBIGZlYXR1cmUtcmljaCBkaWN0aW9uYXJ5IGxvb2t1cCBwcm9ncmFtIgorc2hvcnRf ZGVzYz0iRmVhdHVyZS1yaWNoIGRpY3Rpb25hcnkgbG9va3VwIHByb2dyYW0iCiBtYWludGFpbmVy PSJKb2huIDxtZUBqb2hubnluYXRvci5kZXY+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIK IGhvbWVwYWdlPSJodHRwOi8vZ29sZGVuZGljdC5vcmcvIgoKRnJvbSA3ZDM5OGNkMjg2YjZlMjI5 MjUyNDdjNmVjNTgwYjA0ODQ4NDRmZDI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDAvMTMwXSBnc3QtbGliYXY6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2dzdC1saWJhdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCmluZGV4 IGU5YTc5ZGM2NTBhNS4uZjA4MmJkMjExYzY1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1saWJh di90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1saWJhdicKIHBrZ25hbWU9Z3N0LWxpYmF2CiB2 ZXJzaW9uPTEuMjAuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24K IGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB5YXNtIgogbWFrZWRlcGVuZHM9Im9yYy1kZXZl bCBnc3QtcGx1Z2lucy1iYXNlMS1kZXZlbCBmZm1wZWctZGV2ZWwiCgpGcm9tIDMyNjMwY2IyNDMx NDc0NTFhNjAyZjJkN2Q2Zjg5YTI1ODIxYjc5NzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDA0MS8xMzBdIGdzdC1wbHVnaW5zLWJhZDE6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBs YXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQppbmRleCBmNTVmODJmZDRjNzcuLjVhOWQ1 Mzg3ZTBkNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLWJhZDEnCiBwa2duYW1lPWdzdC1wbHVnaW5z LWJhZDEKLXZlcnNpb249MS4yMC4zCi1yZXZpc2lvbj0zCit2ZXJzaW9uPTEuMjIuMQorcmV2aXNp b249MgogYnVpbGRfaGVscGVyPSJnaXIiCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2Fy Z3M9Ii1EcGFja2FnZS1vcmlnaW49aHR0cHM6Ly92b2lkbGludXgub3JnIC1EZG9jPWRpc2FibGVk CgpGcm9tIDUzZmVlNzM4Njg3ZmU4ZmQyODk2YzgzMDBkZWEzYmQ4MjI4NzM0MDcgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDA0Mi8xMzBdIGdz dC1ydHNwLXNlcnZlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1y dHNwLXNlcnZlci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3Rl bXBsYXRlIGIvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUKaW5kZXggMzNjZDY0Y2Vi OTVlLi44Y2VlYThkMzRiNGIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXJ0c3Atc2VydmVyJwogcGtnbmFtZT1nc3Qt cnRzcC1zZXJ2ZXIKIHZlcnNpb249MS4yMC4zCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWls ZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHB5dGhvbjMiCiBtYWtl ZGVwZW5kcz0iZ2xpYi1kZXZlbCBnc3QtcGx1Z2lucy1iYWQxLWRldmVsIGdvYmplY3QtaW50cm9z cGVjdGlvbgoKRnJvbSBhNjQwMGNmYTFiYzRhYTIwM2Q4ZTE0YjA0ZWJkOWNkOTQyOWMyZTQyIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDMv MTMwXSBndXZjdmlldzogdXBkYXRlIHRvIDIuMC44LgoKLS0tCiBzcmNwa2dzL2d1dmN2aWV3L3Bh dGNoZXMvZml4LWluY2x1ZGUucGF0Y2ggfCAxMCArKysrKysrKysrCiBzcmNwa2dzL2d1dmN2aWV3 L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgfCAgNSArKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCAx MiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaCBiL3NyY3BrZ3MvZ3V2Y3ZpZXcv cGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjUwM2MyYWYzYjc4YwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZ3V2Y3Zp ZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDEwIEBACistLS0gYS9ndXZj dmlldy9ndXZjdmlldy5jCisrKysgYi9ndXZjdmlldy9ndXZjdmlldy5jCitAQCAtMjgsNiArMjgs NyBAQAorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4K KyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8bG9jYWxlLmg+CisgCisgI2luY2x1ZGUg Imd2aWV3LmgiCisgI2luY2x1ZGUgImd2aWV3djRsMmNvcmUuaCIKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZ3V2Y3ZpZXcvdGVtcGxhdGUgYi9zcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlCmluZGV4IDM0 NWNmNjAwNmYyNC4uODZhN2ZkNjE5NjEyIDEwMDY0NAotLS0gYS9zcmNwa2dzL2d1dmN2aWV3L3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUKQEAgLTEsOCArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdndXZjdmlldycKIHBrZ25hbWU9Z3V2Y3ZpZXcKLXZlcnNpb249 Mi4wLjcKK3ZlcnNpb249Mi4wLjgKIHJldmlzaW9uPTEKLWNyZWF0ZV93cmtzcmM9eWVzCiBidWls ZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXN0YXRpYyAt LWRpc2FibGUtZGViaWFuLW1lbnUiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgaW50bHRv b2wgYXV0b2NvbmYgYXV0b21ha2UgbGlidG9vbCBnbGliLWRldmVsIgpAQCAtMTQsNyArMTMsNyBA QCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0i R1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwOi8vZ3V2Y3ZpZXcuc291cmNlZm9yZ2Uu bmV0LyIKIGRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JHRV9TSVRFfS8ke3BrZ25hbWV9LyR7cGtnbmFt ZX0tc3JjLSR7dmVyc2lvbn0udGFyLmJ6MiIKLWNoZWNrc3VtPWY0N2Q1MWZiZDA2ZTQ0ZWVhYTFh ODJmNGExNTNjOTI3NTI3YzkwZDk0NTE0MTk3YTcwYjI5NTYwMjhjYzhhZDQKK2NoZWNrc3VtPWEy MWY0ZTQ0ODI4NjY2NmNmMjdiYWZlZjUyOTBjYzk1M2EwYTE3OTZiNzUyZTViYmU1MjEyNjZkYzEy MzBjODEKIAogcG9zdF9wYXRjaCgpIHsKIAlzZWQgJzMxYSNpbmNsdWRlIDxsb2NhbGUuaD4nIC1p ICBndXZjdmlldy9ndXZjdmlldy5jCgpGcm9tIGZkZjAyMDY5MDI4ZWVhY2Y1OGJkYzc4MjVhMmU2 ZDljOGM1ZmI1ZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVj dDogW1BBVENIIDA0NC8xMzBdIGhhbmRicmFrZTogdXBkYXRlIHRvIDEuNi4xCgotLS0KIC4uLi9w YXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoICAgIHwgMTEgKysrKysrLS0t LS0KIC4uLi9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaCAgIHwgMTUg KysrKysrKysrKysrKysrCiBzcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZSAgICAgICAgICAgICAg ICAgICAgICB8IDE3ICsrKysrKysrKystLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDMxIGluc2Vy dGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaGFu ZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoIGIv c3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRj aAppbmRleCAyNmRiMDM4NjdhMGMuLmQ2YmIyZWRhNjI3YSAxMDA2NDQKLS0tIGEvc3JjcGtncy9o YW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRjaAorKysgYi9z cmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNo CkBAIC0xLDE0ICsxLDE1IEBACiAtLS0gYS9ndGsvY29uZmlndXJlLmFjCiArKysgYi9ndGsvY29u ZmlndXJlLmFjCiBAQCAtMjAzLDcgKzIwMyw3IEBACi0gCisKICBBTV9DT05ESVRJT05BTChbTUlO R1ddLCBbdGVzdCAieCRtaW5nd19mbGFnIiA9ICJ4eWVzIl0pCi0gCi0tSEJfTElCUz0iJEhCX0xJ QlMgLWxoYW5kYnJha2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVyIC1sYXZjb2RlYyAtbGF2dXRpbCAt bGRhdjFkIC1sc3dyZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZkbmF2IC1sZHZkcmVhZCAtbG1wM2xh bWUgLWx2b3JiaXMgLWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3NjYWxlIC1sdGhlb3JhZW5jIC1sdGhl b3JhZGVjIC1sdnB4IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFzcyAtbGZvbnRjb25maWcgLWxmcmVl dHlwZSAtbHhtbDIgLWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4IC1sdHVyYm9qcGVnIC1sbHptYSAt bHppbWciCi0rSEJfTElCUz0iJEhCX0xJQlMgLWxoYW5kYnJha2UgLWxhdmZvcm1hdCAtbGF2Zmls dGVyIC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRhdjFkIC1sc3dyZXNhbXBsZSAtbHBvc3Rwcm9jIC1s ZHZkbmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUgLWx2b3JiaXMgLWx2b3JiaXNlbmMgLWxvZ2cgLWxz d3NjYWxlIC1sdGhlb3JhZW5jIC1sdGhlb3JhZGVjIC1sdnB4IC1seiAtbGJ6MiAtbGJsdXJheSAt bGFzcyAtbGZvbnRjb25maWcgLWxmcmVldHlwZSAtbHhtbDIgLWxqYW5zc29uIC1sb3B1cyAtbHNw ZWV4IC1sdHVyYm9qcGVnIC1sbHptYSAtbHppbWcgLWxkbCIKKworLUhCX0xJQlM9IiRIQl9MSUJT IC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxk YXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1l IC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9y YWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5 cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6 aW1nIC1sU3Z0QXYxRW5jIgorK0hCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3Jt YXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxw b3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5j IC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIg LWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAt bG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sU3Z0QXYxRW5jIC1sZGwi CiAgSEJfQ1BQRkxBR1M9IiRIQl9DUFBGTEFHUyAkSEJJTkMiCi0gCisKICBQS0dfQ0hFQ0tfTU9E VUxFUyhbeDI2NF0sIFt4MjY0XSwgc3lzX3gyNjQ9eWVzLCBzeXNfeDI2ND1ubykKKwogLS0tIGEv dGVzdC9tb2R1bGUuZGVmcwogKysrIGIvdGVzdC9tb2R1bGUuZGVmcwogQEAgLTY5LDYgKzY5LDkg QEAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1 ZGUucGF0Y2ggYi9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjk4ZjlmNGFiMjhm Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwt aW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDE1IEBACistLS0gYS9saWJoYi9tb2R1bGUuZGVmcwky MDIzLTAxLTIyIDExOjM2OjQ5LjAwMDAwMDAwMCAtMDUwMAorKysrIGIvbGliaGIvbW9kdWxlLmRl ZnMJMjAyMy0wNC0wMyAyMjozNzo1Mi4zOTU0NjcwMTAgLTA0MDAKK0BAIC00NiwxMSArNDYsNyBA QAorIExJQkhCLkdDQy5JICs9ICQoTElCSEIuYnVpbGQvKSAkKENPTlRSSUIuYnVpbGQvKWluY2x1 ZGUKKyAKKyBpZmVxICgxLCQoRkVBVFVSRS5xc3YpKQorLSAgICBpZmVxICgkKEhPU1Quc3lzdGVt KSxmcmVlYnNkKSkKKy0gICAgICAgIExJQkhCLkdDQy5JICs9ICQoTE9DQUxCQVNFKS9pbmNsdWRl L3ZwbAorLSAgICBlbHNlCistICAgICAgICBMSUJIQi5HQ0MuSSArPSAkKENPTlRSSUIuYnVpbGQv KWluY2x1ZGUvdnBsCistICAgIGVuZGlmCisrICAgIExJQkhCLkdDQy5JICs9IC91c3IvaW5jbHVk ZS92cGwKKyBlbmRpZgorIAorIGlmbmVxICgsJChmaWx0ZXIgJChIT1NULnN5c3RlbSksZnJlZWJz ZCBuZXRic2Qgb3BlbmJzZCkpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0 ZSBiL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlCmluZGV4IGNhNWU0NTcxZTQ5Yy4uYzMyY2Ix YmZhMzFmIDEwMDY0NAotLS0gYS9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2hhbmRicmFrZS90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnaGFuZGJyYWtlJwogcGtnbmFtZT1oYW5kYnJha2UKLXZlcnNpb249MS41LjEKK3ZlcnNp b249MS42LjEKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3Vy ZV9hcmdzPSItLWZvcmNlIC0tZGlzYWJsZS1ndGstdXBkYXRlLWNoZWNrcyAtLWRpc2FibGUtZGYt ZmV0Y2ggLS1oYXJkZW4KLSAkKHZvcHRfZW5hYmxlIGZka19hYWMgZmRrLWFhYykgJCh2b3B0X2Vu YWJsZSBudmVuYykiCisgJCh2b3B0X2VuYWJsZSBmZGtfYWFjIGZkay1hYWMpICQodm9wdF9lbmFi bGUgbnZlbmMpICQodm9wdF9lbmFibGUgcXN2KSIKIG1ha2VfYnVpbGRfYXJncz0iLUMgJHtYQlBT X1RSSVBMRVR9IgogbWFrZV9pbnN0YWxsX2FyZ3M9Ii1DICR7WEJQU19UUklQTEVUfSIKIGhvc3Rt YWtlZGVwZW5kcz0iYXV0b21ha2UgY21ha2UgZ2V0dGV4dC1kZXZlbCBnbGliLWRldmVsIGludGx0 b29sIGxpYnRvb2wgbTQgbWVzb24gbmFzbSBwa2ctY29uZmlnIHB5dGhvbjMiCkBAIC0xMiw4ICsx MiwxMSBAQCBtYWtlZGVwZW5kcz0iYnppcDItZGV2ZWwgZmZtcGVnLWRldmVsIGdzdC1wbHVnaW5z LWJhc2UxLWRldmVsIGd0ayszLWRldmVsCiAgamFuc3Nvbi1kZXZlbCBsYW1lLWRldmVsIGxpYmFz cy1kZXZlbCBsaWJibHVyYXktZGV2ZWwgbGliZGF2MWQtZGV2ZWwKICBsaWJkdmRuYXYtZGV2ZWwg bGliZHZkcmVhZC1kZXZlbCBsaWJndWRldi1kZXZlbCBsaWJudW1hLWRldmVsCiAgbGlic2FtcGxl cmF0ZS1kZXZlbCBsaWJ0aGVvcmEtZGV2ZWwgbGlidm9yYmlzLWRldmVsIGxpYnZweC1kZXZlbCBs aWJ4bWwyLWRldmVsCi0gb3B1cy1kZXZlbCBzcGVleC1kZXZlbCB4MjY0LWRldmVsIHgyNjUtZGV2 ZWwgemltZy1kZXZlbAorIG9wdXMtZGV2ZWwgc3BlZXgtZGV2ZWwgeDI2NC1kZXZlbCB4MjY1LWRl dmVsIHppbWctZGV2ZWwgbGlic3Z0LWF2MS1kZXZlbAogICQodm9wdF9pZiBmZGtfYWFjIGZkay1h YWMtZGV2ZWwpCisgJCh2b3B0X2lmIHFzdiBsaWJ2YS1kZXZlbCkKKyAkKHZvcHRfaWYgcXN2IGxp YmRybS1kZXZlbCkKKyAkKHZvcHRfaWYgcXN2IG9uZXZwbC1kZXZlbCkKICAkKHZvcHRfaWYgbnZl bmMgbnYtY29kZWMtaGVhZGVycykiCiBkZXBlbmRzPSJkZXNrdG9wLWZpbGUtdXRpbHMgZ3N0LXBs dWdpbnMtZ29vZDEgaGljb2xvci1pY29uLXRoZW1lIgogc2hvcnRfZGVzYz0iTXVsdGl0aHJlYWRl ZCB2aWRlbyB0cmFuc2NvZGVyIgpAQCAtMjEsMTUgKzI0LDE1IEBAIG1haW50YWluZXI9IkVubm8g Qm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9ubHkiCiBo b21lcGFnZT0iaHR0cHM6Ly9oYW5kYnJha2UuZnIvIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1 Yi5jb20vSGFuZEJyYWtlL0hhbmRCcmFrZS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNpb259L0hh bmRCcmFrZS0ke3ZlcnNpb259LXNvdXJjZS50YXIuYnoyIgotY2hlY2tzdW09Mzk5OWZlMDZkNTMw OWM4MTk3OTlhNzNhOTY4YThlYzM4NDBlNzg0MGMyYjY0YWY4ZjVjZGI3ZmQ4Yzk0MzBmMAorY2hl Y2tzdW09OTRjY2ZlMDNkYjkxN2E5MTY1MDAwMGM1MTBmN2ZkNTNmODQ0ZGExOWYxOWFkNGI0YmUx YjhmNmJjMzFhOGQ0Ywogbm9jcm9zcz15ZXMKIAotYnVpbGRfb3B0aW9ucz0iZmRrX2FhYyBudmVu YyIKK2J1aWxkX29wdGlvbnM9ImZka19hYWMgbnZlbmMgcXN2IgogCiBjYXNlICIkWEJQU19UQVJH RVRfTUFDSElORSIgaW4KIAl4ODZfNjQqfGk2ODYqKQogCQlDRkxBR1M9Ii1tc3NlIgotCQlidWls ZF9vcHRpb25zX2RlZmF1bHQ9Im52ZW5jIgorCQlidWlsZF9vcHRpb25zX2RlZmF1bHQ9Im52ZW5j IHFzdiIKIAkJOzsKIGVzYWMKIApAQCAtMzcsNyArNDAsNyBAQCBwcmVfY29uZmlndXJlKCkgewog CSMgdXNlIHN5c3RlbSBsaWJyYXJpZXMsIGRvbid0IGRvd25sb2FkIHRoZW0KIAlybSAtcmYgY29u dHJpYi8KIAlmb3IgbW9kdWxlIGluIGZkay1hYWMgZmZtcGVnIGxpYmJsdXJheSBsaWJkYXYxZCBs aWJkdmRuYXYgbGliZHZkcmVhZCBudmVuYyBcCi0JCXgyNjUgemltZzsgZG8KKwkJeDI2NSB6aW1n IHN2dC1hdjEgbGlidnBsOyBkbwogCSAgICB2c2VkIC1pICIvTU9EVUxFUyArPSBjb250cmliXC8k e21vZHVsZX0vZCIgbWFrZS9pbmNsdWRlL21haW4uZGVmcwogCWRvbmUKIH0KCkZyb20gYmMyMjU1 ZTJlNzlmNTVlY2I2ODE3MTA4MmI5Zjc2ZTI1ODVjZTczNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ1LzEzMF0gaGVkZ2V3YXJzOiByZXZi dW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlIHwg NCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlIGIvc3JjcGtncy9oZWRnZXdh cnMvdGVtcGxhdGUKaW5kZXggNDE5ZjI5Yjk4YjQ0Li45MjZmZTRmZTNlNjggMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBs YXRlCkBAIC0xLDEzICsxLDEzIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdoZWRnZXdhcnMnCiBw a2duYW1lPWhlZGdld2FycwogdmVyc2lvbj0xLjAuMgotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE5PU0VSVkVSPTEgLUREQVRBX0lO U1RBTExfRElSPS91c3Ivc2hhcmUvJHtwa2duYW1lfQogIC1EUEhZU0ZTX1NZU1RFTT0xIC1ETUlO SU1BTF9GTEFHUz0xIgogbWFrZV9jbWQ9bWFrZQogaG9zdG1ha2VkZXBlbmRzPSJsdWE1MSBwa2ct Y29uZmlnIHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2 ZWwgbHVhNTEtZGV2ZWwgcGh5c2ZzLWRldmVsIHF0NS10b29scy1kZXZlbCBTREwyX2ltYWdlLWRl dmVsCittYWtlZGVwZW5kcz0iZmZtcGVnNC1kZXZlbCBsdWE1MS1kZXZlbCBwaHlzZnMtZGV2ZWwg cXQ1LXRvb2xzLWRldmVsIFNETDJfaW1hZ2UtZGV2ZWwKICBTREwyX21peGVyLWRldmVsIFNETDJf bmV0LWRldmVsIFNETDJfdHRmLWRldmVsIgogZGVwZW5kcz0ibGliZnJlZWdsdXQiCiBzaG9ydF9k ZXNjPSJGdW5ueSB0dXJuLWJhc2VkIGFydGlsbGVyeSBnYW1lLCBmZWF0dXJpbmcgZmlnaHRpbmcg SGVkZ2Vob2dzISIKCkZyb20gOWQxZDQ1OWRiYzk1NDA5ZDI5YWQxYmFjODVhZWJmMmJiNGMzOTli MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDQ2LzEzMF0gaWRqYzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2lk amMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pZGpjL3RlbXBsYXRlIGIvc3JjcGtn cy9pZGpjL3RlbXBsYXRlCmluZGV4IGRmNjAzMThiM2RiOS4uMzZhNzViYWY1OTdjIDEwMDY0NAot LS0gYS9zcmNwa2dzL2lkamMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pZGpjL3RlbXBsYXRlCkBA IC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpZGpjJwogcGtnbmFtZT1pZGpj CiB2ZXJzaW9uPTAuOS4xCi1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1nbnUt Y29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgZ2l0IHB5dGhvbjMgYXV0b21h a2UgZ2V0dGV4dC1kZXZlbCBsaWJ0b29sIgogbWFrZWRlcGVuZHM9ImxpYnZvcmJpcy1kZXZlbCBs aWJvZ2ctZGV2ZWwgamFjay1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsCi0gbGliZmxhYy1kZXZl bCBsaWJzbmRmaWxlLWRldmVsIG1wZzEyMy1kZXZlbCBmZm1wZWctZGV2ZWwgc3BlZXgtZGV2ZWwK KyBsaWJmbGFjLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwgbXBnMTIzLWRldmVsIGZmbXBlZzQtZGV2 ZWwgc3BlZXgtZGV2ZWwKICBnbGliLWRldmVsIHBpeG1hbi1kZXZlbCBsYW1lLWRldmVsIHB5dGhv bjMtZ29iamVjdC1kZXZlbCBsaWJzaG91dC1pZGpjLWRldmVsCiAgb3B1cy1kZXZlbCB0d29sYW1l LWRldmVsIHB5dGhvbjMtbXV0YWdlbiBweXRob24zLWRldmVsIgogZGVwZW5kcz0icHl0aG9uMy1n b2JqZWN0IHB5dGhvbjMtbXV0YWdlbiBkZXNrdG9wLWZpbGUtdXRpbHMgc2hhcmVkLW1pbWUtaW5m byBweXRob24zLWRidXMgamFjayIKCkZyb20gM2Y5MjhmNzQyOGJhNWVhOTRmZDM2N2I5Mjc3YjJl MmNiNjg1YzJjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDQ3LzEzMF0ga2ZpbGVtZXRhZGF0YTU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv a2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUgYi9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRl CmluZGV4IDg5ODAxMjFmYmM2OS4uZjY2MmEyMDQzZjkzIDEwMDY0NAotLS0gYS9zcmNwa2dzL2tm aWxlbWV0YWRhdGE1L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrZmlsZW1ldGFkYXRhNScK IHBrZ25hbWU9a2ZpbGVtZXRhZGF0YTUKIHZlcnNpb249NS4xMDUuMAotcmV2aXNpb249MQorcmV2 aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0ia2NvcmVhZGRvbnMg ZXh0cmEtY21ha2UtbW9kdWxlcyBwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZQog IGdldHRleHQga2NvcmVhZGRvbnMgcHl0aG9uMyIKCkZyb20gMzcxY2Q2MTJiMzJjODY4NmQ0Njc0 ODk1NTkzNmU2NjJmNzgwMWUwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDQ4LzEzMF0ga2lkMzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMTcgKysrKysrKysrKysr KysrKysKIHNyY3BrZ3Mva2lkMy90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxl cyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2tpZDMvcGF0Y2hlcy9m Zm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTM1 ZmM1MGUwN2M5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVn NS5wYXRjaApAQCAtMCwwICsxLDE3IEBACisjIGh0dHBzOi8vYXVyLmFyY2hsaW51eC5vcmcvY2dp dC9hdXIuZ2l0L2RpZmYvZmZtcGVnNS5wYXRjaD9oPWtpZDMtY2xpJmlkPTEyNDEwYTc0OTA2NjEy ZTdlZmMwZWM4ZmJjZTczOWI0YTBmZWY3ZTcKK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9hY291 c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRlY29kZXIuY3BwIGIvc3JjL3BsdWdpbnMvYWNv dXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAoraW5kZXggZTE1NmQ0MjQu LmUxMmI5YWJkIDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVn ZmluZ2VycHJpbnRkZWNvZGVyLmNwcAorKysrIGIvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQv ZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAorQEAgLTIzMiw3ICsyMzIsMTEgQEAgcHJpdmF0 ZToKKyAgIGZyaWVuZCBjbGFzcyBGb3JtYXQ7CisgICBmcmllbmQgY2xhc3MgQ29udmVydGVyOwor ICAgQVZDb2RlY0NvbnRleHQqIG1fcHRyOworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fSU5UIDwg QVZfVkVSU0lPTl9JTlQoNTksIDAsIDApCisgICBBVkNvZGVjKiBtX2ltcGw7CisrI2Vsc2UKKysg IGNvbnN0IEFWQ29kZWMqIG1faW1wbDsKKysjZW5kaWYKKyAgIEFWRnJhbWUqIG1fZnJhbWU7Cisg ICBib29sIG1fb3BlbmVkOworIH07CmRpZmYgLS1naXQgYS9zcmNwa2dzL2tpZDMvdGVtcGxhdGUg Yi9zcmNwa2dzL2tpZDMvdGVtcGxhdGUKaW5kZXggNDU2MjA2ZDkwZTE2Li5mMzJmOWRlY2IwZTcg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva2lkMy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tpZDMvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdraWQzJwogcGtnbmFt ZT1raWQzCiB2ZXJzaW9uPTMuOS4xCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHls ZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9BUFBTPSdDTEk7JCh2b3B0X2lmIEtERSBL REUgUXQpJwogIC1EV0lUSF9ET0NCT09LRElSPS91c3Ivc2hhcmUveHNsL2RvY2Jvb2sgLURXSVRI X0ZMQUM9JCh2b3B0X2lmIGZsYWMgT04gT0ZGKQoKRnJvbSA2MWFmYjkwNDI0NmQ5ODNkZWJlZWQ4 YzAyZGEzZTg5MmM2YTM3MzI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNDkvMTMwXSBrb2RpOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4z CgotLS0KIHNyY3BrZ3Mva29kaS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tvZGkv dGVtcGxhdGUgYi9zcmNwa2dzL2tvZGkvdGVtcGxhdGUKaW5kZXggODA1Nzk2NGQ3OGEzLi42Y2Mx ODc0YmU3YmEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva29kaS90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2tvZGkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrb2Rp JwogcGtnbmFtZT1rb2RpCiB2ZXJzaW9uPTE5LjQKLXJldmlzaW9uPTYKK3JldmlzaW9uPTcKIF9j b2RlbmFtZT0iTWF0cml4IgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJ VEhfRkZNUEVHPS91c3IgLURFTkFCTEVfTERHT0xEPU9GRgpAQCAtNTQsNyArNTQsNyBAQCBtYWtl ZGVwZW5kcz0iCiAgbGlibWFkLWRldmVsIGZvbnRjb25maWctZGV2ZWwgbGliWGluZXJhbWEtZGV2 ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJtbXMtZGV2ZWwKICBlbmNhLWRldmVsIGJvb3N0LWRl dmVsIGxpYmN1cmwtZGV2ZWwgbGlidmEtZGV2ZWwgbGlidmRwYXUtZGV2ZWwgbGliYXNzLWRldmVs CiAgbGliYmx1ZXRvb3RoLWRldmVsIHlhamwtZGV2ZWwgbGlicGxpc3QtZGV2ZWwgbGlicnRtcC1k ZXZlbCB0aW55eG1sLWRldmVsCi0gdGFnbGliLWRldmVsIGxpYmNhcC1kZXZlbCBsYW1lLWRldmVs IGxpYmJsdXJheS1kZXZlbCBsaWJuZnMtZGV2ZWwgZmZtcGVnLWRldmVsCisgdGFnbGliLWRldmVs IGxpYmNhcC1kZXZlbCBsYW1lLWRldmVsIGxpYmJsdXJheS1kZXZlbCBsaWJuZnMtZGV2ZWwgZmZt cGVnNC1kZXZlbAogIGdpZmxpYi1kZXZlbCBsaWJ4c2x0LWRldmVsIGdudXRscy1kZXZlbCBsaWJz c2gtZGV2ZWwgbGlibWljcm9odHRwZC1kZXZlbAogIGxpYmNlYy1kZXZlbCBkY2FkZWMtZGV2ZWwg ZmxhdGJ1ZmZlcnMtZGV2ZWwgZm10LWRldmVsIGxjbXMyLWRldmVsCiAgbGliZnN0cmNtcC1kZXZl bCByYXBpZGpzb24gbGliY2Rpby1wYXJhbm9pYSBzcGRsb2cgbGlid2F5bGFuZHBwLWRldmVsCgpG cm9tIGUxYzUyNzk0YTBiNmUzYWQ4ZWU4YjQxOTE5YjBlMTYxMDcwODdkMDYgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1MC8xMzBdIGtwaXBl d2lyZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2twaXBld2lyZS90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlIGIvc3JjcGtncy9rcGlw ZXdpcmUvdGVtcGxhdGUKaW5kZXggNDY3YWI4MjNhNWUxLi41MTgyN2YyNGRiOWUgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva3BpcGV3aXJlL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna3BpcGV3aXJlJwog cGtnbmFtZT1rcGlwZXdpcmUKIHZlcnNpb249NS4yNy40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVz IHBsYXNtYS13YXlsYW5kLXByb3RvY29scyBnZXR0ZXh0CiAgcXQ1LXFtYWtlIHF0NS1ob3N0LXRv b2xzIHBrZy1jb25maWcgd2F5bGFuZC1kZXZlbCBrY29yZWFkZG9ucwoKRnJvbSBiMDNhZjY3YTUw ZDIwY2YxNDZlMjJmMTMzYzY1OGUzZWMwZGFkZTE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTEvMTMwXSBsaWJleHRyYWN0b3I6IHJldmJ1 bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGliZXh0 cmFjdG9yL3RlbXBsYXRlCmluZGV4IGRkZDQ3OTBmOTNlOC4uMWZiOWNhNTZhOTZhIDEwMDY0NAot LS0gYS9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYmV4dHJh Y3Rvci90ZW1wbGF0ZQpAQCAtNyw3ICs3LDcgQEAgY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1z dGF0aWMiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0iemxpYi1k ZXZlbCBiemlwMi1kZXZlbCBleGl2Mi1kZXZlbCB0aWZmLWRldmVsIGxpYnBuZy1kZXZlbAogIGxp YmpwZWctdHVyYm8tZGV2ZWwgbGlidm9yYmlzLWRldmVsIGxpYmZsYWMtZGV2ZWwgZ2lmbGliLWRl dmVsIGxpYm1wZWcyLWRldmVsCi0gZmZtcGVnLWRldmVsIGd0ayszLWRldmVsIGxpYmx0ZGwtZGV2 ZWwgbGliYXJjaGl2ZS1kZXZlbCBmaWxlLWRldmVsIGxpYmdzZi1kZXZlbCIKKyBmZm1wZWc0LWRl dmVsIGd0ayszLWRldmVsIGxpYmx0ZGwtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbCBmaWxlLWRldmVs IGxpYmdzZi1kZXZlbCIKIHNob3J0X2Rlc2M9IkxpYnJhcnkgdXNlZCB0byBleHRyYWN0IG1ldGEg ZGF0YSBmcm9tIGZpbGVzIgogbWFpbnRhaW5lcj0iTWFydGluIFJpZXNlIDxncmF1ZWhhYXJlQGdt eC5kZT4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgoKRnJvbSBkZjUwMzgzZTI2NWMyMjg5 Y2Q0Njc0M2ZlNjk5ZDQ3MjVkOTJlNTdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTIvMTMwXSBsaWJvcGVuYWw6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2xpYm9wZW5hbC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRlCmluZGV4 IDc3MjE4ZjllNTM5ZC4uM2Y0OWVkNzVhMWZkIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xpYm9wZW5h bC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xpYm9wZW5hbCcKIHBrZ25hbWU9bGlib3BlbmFsCiB2 ZXJzaW9uPTEuMjIuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UK IGNvbmZpZ3VyZV9hcmdzPSItREFMU09GVF9FWEFNUExFUz1PRkYiCiBob3N0bWFrZWRlcGVuZHM9 InBrZy1jb25maWciCgpGcm9tIDAzNTNiNmY0NGI2MDk5ZGUyNzgyNDkyMGJhMjE1MDExMGIyYTI1 NWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENI IDA1My8xMzBdIGxpYm9wZW5zaG90OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvbGlib3BlbnNob3QvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYm9wZW5zaG90L3Rl bXBsYXRlIGIvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZQppbmRleCBkYjgzMWY2OWI0NzQu LjgxYWEwZDcxMzZkOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnbGlib3BlbnNob3QnCiBwa2duYW1lPWxpYm9wZW5zaG90CiB2ZXJzaW9u PTAuMy4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogIyBCdWls ZHMgZmFpbCB3aXRoIFJ1YnktMi40LjEKIGNvbmZpZ3VyZV9hcmdzPSItREVOQUJMRV9SVUJZPU9G RiAtRFVTRV9TWVNURU1fSlNPTkNQUD1PTiIKCkZyb20gMWZkN2YxZDMwMjM5YzdkNDI1NWM3NjM5 MzNiNjZmY2Q1YTNkN2VmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDU0LzEzMF0gbG91ZGdhaW46IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggfCAxMSArKysrKysr KysrKwogc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBm aWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvbG91 ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uMTZkNDUxMGVlOThmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sb3Vk Z2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIGEvc3JjL3Nj YW4uYwkyMDE5LTA5LTA2IDExOjMxOjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIGIvc3JjL3NjYW4u YwkyMDIzLTAzLTIzIDExOjE1OjQwLjg2Nzk2ODUyMSAtMDQwMAorQEAgLTY5LDggKzY5LDYgQEAK KyAJICogSXQgaXMgbm93IHVzZWxlc3MKKyAJICogaHR0cHM6Ly9naXRodWIuY29tL0ZGbXBlZy9G Rm1wZWcvYmxvYi83MGQyNTI2OGMyMWNiZWU1ZjA4MzA0ZGE5NWJlMWY2NDdjNjMwYzE1L2RvYy9B UEljaGFuZ2VzI0w4NgorIAkgKi8KKy0gIGlmIChhdmZvcm1hdF92ZXJzaW9uKCkgPCBBVl9WRVJT SU9OX0lOVCg1OCw5LDEwMCkpCistICAgIGF2X3JlZ2lzdGVyX2FsbCgpOworIAorIAlhdl9sb2df c2V0X2NhbGxiYWNrKHNjYW5fYXZfbG9nKTsKKyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbG91ZGdh aW4vdGVtcGxhdGUgYi9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlCmluZGV4IGRhNGYyZDU2ZTk0 Yy4uNGQ2YmYyOWVmYjRmIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdsb3VkZ2FpbicKIHBrZ25hbWU9bG91ZGdhaW4KIHZlcnNpb249MC42LjgKLXJl dmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9 InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0ibGliZWJ1cjEyOC1kZXZlbCB0YWdsaWItZGV2ZWwg ZmZtcGVnLWRldmVsIgoKRnJvbSAwZjRkYzFiNWQzYjYwYjk0YjI5YmFjNWZiZGZkYTNkNmUxM2Q1 NjBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNTUvMTMwXSBtZWRpYXN0cmVhbWVyOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0K IHNyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21l ZGlhc3RyZWFtZXIvdGVtcGxhdGUgYi9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKaW5k ZXggZDBlOTdlODU4ZTI5Li4xYmRlMDMxNDQzYTUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWVkaWFz dHJlYW1lci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKQEAg LTEsMTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21lZGlhc3RyZWFtZXInCiBwa2du YW1lPW1lZGlhc3RyZWFtZXIKIHZlcnNpb249NS4yLjYKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURFTkFCTEVfU1RSSUNUPTAgLURF TkFCTEVfVU5JVF9URVNUUz0wIgogaG9zdG1ha2VkZXBlbmRzPSJweXRob24zIgotbWFrZWRlcGVu ZHM9ImJ6cnRwLWRldmVsIGZmbXBlZy1kZXZlbCBnbGV3LWRldmVsIGxpYlh2LWRldmVsIGxpYnNy dHAtZGV2ZWwKK21ha2VkZXBlbmRzPSJienJ0cC1kZXZlbCBmZm1wZWc0LWRldmVsIGdsZXctZGV2 ZWwgbGliWHYtZGV2ZWwgbGlic3J0cC1kZXZlbAogIGxpYnVwbnAtZGV2ZWwgbGlidnB4LWRldmVs IG1iZWR0bHMtZGV2ZWwgb3B1cy1kZXZlbCBvcnRwLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKICBs aWJ0aGVvcmEtZGV2ZWwgc3BlZXgtZGV2ZWwgdjRsLXV0aWxzLWRldmVsIGJjZzcyOS1kZXZlbCBi Y21hdHJvc2thMi1kZXZlbCBsaWJnc20tZGV2ZWwiCiAjIHp4aW5nLWNwcC1kZXZlbCAoMS4yLjAg cHJvYmFibHkgbm90IGNvbXBhdGlibGUsIGNoZWNrIGFnYWluIGFmdGVyIHVwZGFpbmcgeHppbmcp CgpGcm9tIDEzOGJjMTRlYmYzMzNmMzBlMWUyMTAxYWIzMGFmYWFjODMyZGYxNDEgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1Ni8xMzBdIG1n YmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9tZ2JhL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9tZ2JhL3RlbXBsYXRlIGIvc3JjcGtncy9tZ2JhL3RlbXBsYXRlCmlu ZGV4IGFlMDUwNDMxMWVlZS4uZDMxMjk1YTBjZDNkIDEwMDY0NAotLS0gYS9zcmNwa2dzL21nYmEv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9tZ2JhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnbWdiYScKIHBrZ25hbWU9bWdiYQogdmVyc2lvbj0wLjEwLjIKLXJl dmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9 InBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIGRlc2t0b3AtZmlsZS11dGlscyIK IG1ha2VkZXBlbmRzPSJTREwyLWRldmVsIGZmbXBlZy1kZXZlbCBsaWJlZGl0LWRldmVsIGxpYmVw b3h5LWRldmVsIGxpYm1hZ2ljay1kZXZlbAoKRnJvbSBmNzVhY2ZhZGQzOGEzNTNiNmVjZDdlOWYz YjY5YTViZDEzZTExZTE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwNTcvMTMwXSBtaW5pZGxuYTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9taW5pZGxu YS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUKaW5kZXggZTgwODFiMWNiYzY3 Li45ZWU5NzE0ODYxZmQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ21pbmlkbG5hJwogcGtnbmFtZT1taW5pZGxuYQogdmVyc2lvbj0xLjMuMgotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJl X2FyZ3M9IgogIC0tc2JpbmRpcj0vdXNyL2JpbgoKRnJvbSA2OTlmZDFjZWUyNTliNzkwOThiZTIw OWUxNjE0NzA2ZGNlNTYwZDBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNTgvMTMwXSBtaXh4eDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL21peHh4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9taXh4eC90ZW1w bGF0ZSBiL3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUKaW5kZXggNjE5ZGRjYTBkMzMyLi40YjllYTAw ZDNmYjMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9t aXh4eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21peHh4 JwogcGtnbmFtZT1taXh4eAogdmVyc2lvbj0yLjMuMwotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRENNQUtFX0JVSUxEX1RZUEU9UmVs ZWFzZSIKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21ha2UtbW9kdWxlcyBwa2ctY29uZmlnIHBy b3RvYnVmIHF0NS1ob3N0LXRvb2xzIHF0NS1kZXZlbCIKCkZyb20gYzRmOTg5MjY1NzdjODU5MjU5 MzYzNDQwM2VlMGE5YjE1MWJlZGNhZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU5LzEzMF0gbWx0OiByZXZidW1wIGZvciBmZm1wZWc0LTQu NC4zCgotLS0KIHNyY3BrZ3MvbWx0L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWx0 L3RlbXBsYXRlIGIvc3JjcGtncy9tbHQvdGVtcGxhdGUKaW5kZXggODkzM2ViNGU3YmI5Li43MzM1 M2ZlZGFmYjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWx0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv bWx0L3RlbXBsYXRlCkBAIC0xLDE0ICsxLDE0IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtbHQn CiBwa2duYW1lPW1sdAogdmVyc2lvbj02LjI2LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1 aWxkX3N0eWxlPWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tcHJlZml4PS91c3IgLS1saWJk aXI9L3Vzci9saWIkWEJQU19UQVJHRVRfV09SRFNJWkUKICAtLWVuYWJsZS1ncGwgLS1lbmFibGUt Z3BsMyAtLWRpc2FibGUtc3dmZGVjIC0td2l0aG91dC1rZGUKICAtLXN3aWctbGFuZ3VhZ2VzPXB5 dGhvbiIKIGhvc3RtYWtlZGVwZW5kcz0iZG94eWdlbiBwa2ctY29uZmlnIGxhZHNwYS1zZGsgc3dp ZyBweXRob24zIHdoaWNoIgogIyBYWFg6IG1vdml0IHZpZC5zdGFiCi1tYWtlZGVwZW5kcz0iYWxz YS1saWItZGV2ZWwgZmZtcGVnLWRldmVsIGd0aystZGV2ZWwgamFjay1kZXZlbCBsYWRzcGEtc2Rr CittYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnNC1kZXZlbCBndGsrLWRldmVsIGph Y2stZGV2ZWwgbGFkc3BhLXNkawogIGxpYmV4aWYtZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBs aWJ4bWwyLWRldmVsIHNveC1kZXZlbCBTRExfaW1hZ2UtZGV2ZWwKICBmZnR3LWRldmVsIGZyZWkw ci1wbHVnaW5zIHB5dGhvbjMtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbCBtb3ZpdC1kZXZlbAogIGxp YnZpZHN0YWItZGV2ZWwgbGliYXRvbWljLWRldmVsIgoKRnJvbSBkZDUzOGU1MzRiNWM2N2Q1MjQ1 Y2FjYzE0NzI3ZjA1OTQ4M2I3M2RjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwNjAvMTMwXSBtb2M6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40 LjMKCi0tLQogc3JjcGtncy9tb2MvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAy IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tb2Mv dGVtcGxhdGUgYi9zcmNwa2dzL21vYy90ZW1wbGF0ZQppbmRleCBjNDJiZTY1MGExZDIuLmQ0ZjBl ZWZiYWQ1MiAxMDA2NDQKLS0tIGEvc3JjcGtncy9tb2MvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9t b2MvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21vYycK IHBrZ25hbWU9bW9jCiB2ZXJzaW9uPTIuNS4yCi1yZXZpc2lvbj02CityZXZpc2lvbj03CiBidWls ZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCi1tYWtl ZGVwZW5kcz0iZGItZGV2ZWwgbmN1cnNlcy1kZXZlbCBsaWJjdXJsLWRldmVsIHBvcHQtZGV2ZWwg ZmZtcGVnLWRldmVsCittYWtlZGVwZW5kcz0iZGItZGV2ZWwgbmN1cnNlcy1kZXZlbCBsaWJjdXJs LWRldmVsIHBvcHQtZGV2ZWwgZmZtcGVnNC1kZXZlbAogIGphY2stZGV2ZWwgYWxzYS1saWItZGV2 ZWwgbGlibHRkbC1kZXZlbCBsaWJmbGFjLWRldmVsIGxpYnZvcmJpcy1kZXZlbAogIGxpYm1hZC1k ZXZlbCBsaWJtcGNkZWMtZGV2ZWwgbGlibW9kcGx1Zy1kZXZlbCBsaWJpZDN0YWctZGV2ZWwgZmFh ZDItZGV2ZWwKICB0YWdsaWItZGV2ZWwgbGlic25kZmlsZS1kZXZlbCB3YXZwYWNrLWRldmVsIHNw ZWV4LWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwKCkZyb20gNTdjZjU5MDJhNDc2YzkxMmI3MzI1 ODAwYzMyOTZkZTkyZjkyNmFiZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDYxLzEzMF0gbW90aW9uOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvbW90aW9uL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tb3Rpb24v dGVtcGxhdGUgYi9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZQppbmRleCAzY2YzYzMwMzVjNWIuLjdk Y2ExMmQ4NTFlMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9tb3Rpb24vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdtb3Rpb24nCiBwa2duYW1lPW1vdGlvbgogdmVyc2lvbj00LjUuMQotcmV2aXNpb249MQorcmV2 aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJhdXRv bWFrZSBwa2ctY29uZmlnIGdldHRleHQtZGV2ZWwgdGFyIgogbWFrZWRlcGVuZHM9ImZmbXBlZy1k ZXZlbCBsaWJtaWNyb2h0dHBkLWRldmVsIHY0bC11dGlscy1kZXZlbCBnZXR0ZXh0LWRldmVsIgoK RnJvbSAzMWE2ZjJlN2VjOTAwZjcwZDYzNGZjZjZhNzA1ZTMyY2IyMmIyMTFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjIvMTMwXSBtcHY6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9tcHYvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL21wdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvbXB2L3RlbXBsYXRlCmluZGV4IGUx NjNjNDk2YzZlYi4uZDRmZWZiZjVlM2M3IDEwMDY0NAotLS0gYS9zcmNwa2dzL21wdi90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL21wdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ21wdicKIHBrZ25hbWU9bXB2CiB2ZXJzaW9uPTAuMzUuMQotcmV2aXNpb249Mgor cmV2aXNpb249MwogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRGNkZGE9ZW5h YmxlZCAtRGR2YmluPWVuYWJsZWQgLURkdmRuYXY9ZW5hYmxlZAogIC1EbGlibXB2PXRydWUgLURj cGx1Z2lucz1lbmFibGVkCgpGcm9tIDg2ZmMxYzE3MzU2N2JjYWU0NDJjOTY5YTkxZWMzNDhkNjFj YzRjOTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BB VENIIDA2My8xMzBdIG11c2lrY3ViZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL211c2lrY3ViZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBs YXRlIGIvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUKaW5kZXggNGI3OTMwMDQxMTI2Li43Y2Q2 NWNmNzZiNzcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnbXVzaWtjdWJlJwogcGtnbmFtZT1tdXNpa2N1YmUKIHZlcnNpb249MC45OS40Ci1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQogY29u ZmlndXJlX2FyZ3M9Ii1ETk9fTkNVUlNFU1c9MSIKCkZyb20gNDA4NjU5ZTBjMDc2NTY0ZTBjZWI3 MDU4MTRmZTRjZjA5ZjlkOWE1ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDY0LzEzMF0gbm90Y3Vyc2VzOiByZXZidW1wIGZvciBmZm1wZWct Ni4wCgotLS0KIHNyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9u b3RjdXJzZXMvdGVtcGxhdGUgYi9zcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZQppbmRleCA2ZGQ4 YTA5MTMxOWYuLjMxMTBjMzBjOWFmZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9ub3RjdXJzZXMvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdub3RjdXJzZXMnCiBwa2duYW1lPW5vdGN1cnNlcwogdmVyc2lv bj0zLjAuOQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZp Z3VyZV9hcmdzPSItRFVTRV9TVEFUSUM9T04gJCh2b3B0X2Jvb2wgbWFuIFVTRV9QQU5ET0MpIgog aG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnICQodm9wdF9pZiBtYW4gcGFuZG9jKSIKCkZyb20g OGFlMGFkMGJhNjVmMjFhNDNjOWQ0ODBlZDZiYTFmMmUzZTRjODhkMyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY1LzEzMF0gb2JzOiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvb2JzL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9vYnMvdGVtcGxhdGUgYi9zcmNwa2dzL29icy90ZW1wbGF0ZQppbmRleCA4OWZkMTEy OTdjM2YuLjNjZjQ5ZTQxNGJmMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9vYnMvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9vYnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdvYnMnCiBwa2duYW1lPW9icwogdmVyc2lvbj0yOS4xLjAKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGFyY2hzPSJpNjg2KiB4ODZfNjQqIHBwYzY0bGUqIGFhcmNoNjQqIgogYnVpbGRfc3R5 bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE9CU19WRVJTSU9OX09WRVJSSURFPSR7dmVyc2lv bn0gLURFTkFCTEVfSkFDSz1PTgoKRnJvbSA3OWRkY2I1YTg0MDIxMmRjNGQ1MjcwNjA5ZDBhYjVl MTNjNGRiODczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNjYvMTMwXSBvbGl2ZTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBz cmNwa2dzL29saXZlL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRp b25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb2xpdmUvdGVtcGxh dGUgYi9zcmNwa2dzL29saXZlL3RlbXBsYXRlCmluZGV4IDEyYTQ2OTM2Yzk5MC4uNWMyOTE3Yjlj NTEyIDEwMDY0NAotLS0gYS9zcmNwa2dzL29saXZlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb2xp dmUvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29saXZl JwogcGtnbmFtZT1vbGl2ZQogdmVyc2lvbj0wLjEuMgotcmV2aXNpb249MgorcmV2aXNpb249Mwog YnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icXQ1LXFtYWtlIHF0NS1ob3N0LXRv b2xzIHBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0icXQ1LWRldmVsIHF0NS1tdWx0aW1lZGlhLWRl dmVsIHF0NS1zdmctZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWkwci1wbHVnaW5zIgorbWFrZWRlcGVu ZHM9InF0NS1kZXZlbCBxdDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtc3ZnLWRldmVsIGZmbXBlZzQt ZGV2ZWwgZnJlaTByLXBsdWdpbnMiCiBzaG9ydF9kZXNjPSJOb24tbGluZWFyIHZpZGVvIGVkaXRv ciIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNl PSJHUEwtMy4wLW9yLWxhdGVyIgoKRnJvbSAwYjg3YjA3NmM5MmQ0MjQ0N2RkMjYzNzdjOTg1NjAz ZDE3MDA1MGJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNjcvMTMwXSBvbXhwbGF5ZXI6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0t LQogc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQs IDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29t eHBsYXllci90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlCmluZGV4IGU3MGJm Nzg3M2Q0ZC4uMGU5YmM3MGU3YzhlIDEwMDY0NAotLS0gYS9zcmNwa2dzL29teHBsYXllci90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnb214cGxheWVyJwogcGtnbmFtZT1vbXhwbGF5ZXIKIHZlcnNp b249MjAxOTAxMDIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIHNob3J0X2Rlc2M9IkNvbW1hbmRs aW5lIE9NWCBwbGF5ZXIgZm9yIHRoZSBSYXNwYmVycnkgUGkiCiBtYWludGFpbmVyPSJPcnBoYW5l ZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgotbGljZW5zZT0iR1BMLTIiCitsaWNlbnNlPSJHUEwt Mi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9wb3Bjb3JubWl4L29t eHBsYXllciIKIAogX2NvbW1pdD0iZjA2MjM1Y2M5NjkwYTZkNTgxODc1MTQ0NTJkZjhjZjhmY2Rh YWNlYyIKQEAgLTE1LDcgKzE1LDcgQEAgY2hlY2tzdW09YWYyZDk0NTBmODk0Nzg0MmVhOGM0MDFm ZTlmNzFlZWM0NDQwMTNlYmJkZWUyOWYyYWM4MjhjOWM0OTNjMTMyOQogYXJjaHM9ImFybXY2bCog YXJtdjdsKiIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogaG9zdG1ha2VkZXBlbmRzPSJjdXJs IHBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgcnBpLXVzZXJsYW5kLWRl dmVsIHBjcmUtZGV2ZWwgYm9vc3QtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgZmZtcGVnLWRldmVsIGRi dXMtZGV2ZWwiCittYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgcnBpLXVzZXJsYW5kLWRldmVs IHBjcmUtZGV2ZWwgYm9vc3QtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgZmZtcGVnNC1kZXZlbCBkYnVz LWRldmVsIgogZGVwZW5kcz0iZnJlZWZvbnQtdHRmIgogCiBkb19idWlsZCgpIHsKCkZyb20gMWEx MWQ5NTljODg0YzM0NmM1ZTEwNjRkMjM2ODJiZDIxZmQ4Njg2ZiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY4LzEzMF0gb3BlbmltYWdlaW86 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgICAg ICB8IDIgKysKIHNyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUgfCAyICstCiAyIGZpbGVzIGNo YW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2NvbW1v bi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDQ2MjZjZmRhODEwYi4uZDBkMzI4YjA5ZWY5 IDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTIyNjIs NiArMjI2Miw4IEBAIGxpYnhtcC5zby40IGxpYnhtcC00LjMuN18xCiBsaWJLRjVUaHJlYWRXZWF2 ZXIuc28uNSB0aHJlYWR3ZWF2ZXItNS4yNi4wXzEKIGxpYk9wZW5JbWFnZUlPX1V0aWwuc28uMi40 IG9wZW5pbWFnZWlvLTIuNC45LjBfMQogbGliT3BlbkltYWdlSU8uc28uMi40IG9wZW5pbWFnZWlv LTIuNC45LjBfMQorbGliT3BlbkltYWdlSU9fVXRpbC5zby4yLjQgb3BlbmltYWdlaW8tMi40Ljgu MV8xCitsaWJPcGVuSW1hZ2VJTy5zby4yLjQgb3BlbmltYWdlaW8tMi40LjguMV8xCiBsaWJPcGVu Q29sb3JJTy5zby4yLjEgb3BlbmNvbG9yaW8tMi4xLjJfMQogbGlicHlzdHJpbmcuc28uMSBweXN0 cmluZy0xLjEuM18xCiBsaWJ5YW1sLWNwcC5zby4wLjcgeWFtbC1jcHAtMC43LjBfMQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbmltYWdlaW8v dGVtcGxhdGUKaW5kZXggYjY2MWJiZjdiYTU3Li45YjM4YWNlNTBmN2UgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5pbWFnZWlvJwog cGtnbmFtZT1vcGVuaW1hZ2VpbwogdmVyc2lvbj0yLjQuOS4wCi1yZXZpc2lvbj0yCityZXZpc2lv bj0zCiBidWlsZF9zdHlsZT1jbWFrZQogYnVpbGRfaGVscGVyPXFlbXUKIGNvbmZpZ3VyZV9hcmdz PSItRFVTRV9RVD0wIC1EVVNFX1BZVEhPTj0wIC1ET0lJT19CVUlMRF9URVNUUz0wCgpGcm9tIDMw MjZlNjc4MDY4ZDU0ZDkzYWViZjg3N2NlMzZkOGZlZTcyMjY5YTkgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2OS8xMzBdIG9wZW5tdzogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29wZW5tdy90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVubXcvdGVtcGxhdGUKaW5k ZXggNTI1MWEwMjgzZGMxLi5lMzc3MWM3YWFmMWEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3Blbm13 L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnb3Blbm13JwogcGtnbmFtZT1vcGVubXcKIHZlcnNpb249MC40 Ny4wCi1yZXZpc2lvbj00CityZXZpc2lvbj01CiBidWlsZF9zdHlsZT1jbWFrZQogX3JlY2FzdF9j b21taXQ9ZTc1YWRmODZmOTFlYjMwODIyMjAwODVlNDJkZGE2MjY3OWY5YTNlYQogX2J1bGxldF90 YWc9My4xNwoKRnJvbSAwMjIxNjliYjBmNzJhZDU2OGZhOGYzZTVjOGNhYzRiN2ZhNTViZTBlIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzAv MTMwXSBvcGVuc2hvdDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29wZW5z aG90L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZSBiL3NyY3Br Z3Mvb3BlbnNob3QvdGVtcGxhdGUKaW5kZXggMzIyNzE3ZDQwYWJjLi5jMDc0ZTAzMzg3NzMgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuc2hv dC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5zaG90 JwogcGtnbmFtZT1vcGVuc2hvdAogdmVyc2lvbj0zLjAuMAotcmV2aXNpb249MQorcmV2aXNpb249 MgogYnVpbGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUKIGhvc3RtYWtlZGVwZW5kcz0icHl0aG9uMyBw eXRob24zLXNldHVwdG9vbHMiCiBtYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHB5dGhvbjMtUHlR dDUiCgpGcm9tIDU2MTBkYzhhYmE2NjQ5YmNkMzljM2RkZmExYmZjNWExOTAzNDcxNDUgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3MS8xMzBd IG9wZW50b29uejogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29wZW50b29u ei90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlIGIvc3JjcGtn cy9vcGVudG9vbnovdGVtcGxhdGUKaW5kZXggZWU5Zjc2MDNmNTVmLi4zZTgxODM0Y2EwZWQgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbnRv b256L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbnRv b256JwogcGtnbmFtZT1vcGVudG9vbnoKIHZlcnNpb249MS42LjAKLXJldmlzaW9uPTIKK3Jldmlz aW9uPTMKIGJ1aWxkX3dya3NyYz0idG9vbnovc291cmNlcyIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBt YWtlX2NtZD1tYWtlCgpGcm9tIDBjMTMxNzJlNTE2OTlmZTY3Y2ZiODc0M2JlNzI3ZjEwOTcwOGIw Y2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENI IDA3Mi8xMzBdIHBpYW5vYmFyOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv cGlhbm9iYXIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlIGIv c3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQppbmRleCBhOWIyOWU5MTk5M2YuLjgxZWZjZDEyMmM0 ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Bp YW5vYmFyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncGlh bm9iYXInCiBwa2duYW1lPXBpYW5vYmFyCiB2ZXJzaW9uPTIwMjIuMDQuMDEKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogbWFrZV9idWlsZF9hcmdzPSJW PTEiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIGE5YmY2YzJkNDA5OWNjNDg4 ODhiNTMzZTE1MzY4ZmM3MjFjNmViNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAg LTA0MDAKU3ViamVjdDogW1BBVENIIDA3My8xMzBdIHBwc3NwcDogcmV2YnVtcCBmb3IgZmZtcGVn NC00LjQuMwoKLS0tCiBzcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZSB8IDcgKysrLS0tLQogMSBmaWxl IGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlCmluZGV4IDc5 ODRhNzMzZDRiZS4uMTVhNDJmZDJjOTkzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3Bwc3NwcC90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3Bwc3NwcCcKIHBrZ25hbWU9cHBzc3BwCiB2ZXJzaW9uPTEuMTQuNAot cmV2aXNpb249MQorcmV2aXNpb249MgogX2dsc2xhbmdfY29tbWl0PWRjMTFhZGRlMjNjNDU1YTI0 ZTEzZGQ1NGRlOWI0ZWRlOGJkZDdkYjgKIF9TUElSVl9Dcm9zc19jb21taXQ9OWFjYjllYzMxZjVh OGVmODBlYTZiOTk0YmI3N2JlNzg3YjA4ZDNkMQogX2FybWlwc19jb21taXQ9NjcxOWVkZWJhYWUw MzMzMGVlNTQ0MWQ5YjI4MjgwNjcyZWRmMDBkNQpAQCAtMTMsNyArMTMsNyBAQCBjb25maWd1cmVf YXJncz0iLURIRUFETEVTUz0xIC1EVVNFX1NZU1RFTV9GRk1QRUc9MSAtRFVOSVRURVNUPU9OCiAg LURVU0lOR19RVF9VST0kKHZvcHRfaWYgcXQgT04gT0ZGKSAtRFVTRV9TWVNURU1fWlNURD1PTgog IC1EQVJNSVBTX1VTRV9TVERfRklMRVNZU1RFTT1PTiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyBweXRob24zICQodm9wdF9pZiBxdCBxdDUtaG9zdC10b29scykiCi1tYWtlZGVwZW5kcz0i emxpYi1kZXZlbCBnbGV3LWRldmVsIGZmbXBlZy1kZXZlbCBsaWJ6aXAtZGV2ZWwKK21ha2VkZXBl bmRzPSJ6bGliLWRldmVsIGdsZXctZGV2ZWwgZmZtcGVnNC1kZXZlbCBsaWJ6aXAtZGV2ZWwKICBz bmFwcHktZGV2ZWwgcmFwaWRqc29uIGxpYnBuZy1kZXZlbCBsaWJ6c3RkLWRldmVsCiAgJCh2b3B0 X2lmIHNkbDIgU0RMMi1kZXZlbCkgJCh2b3B0X2lmIHdheWxhbmQgd2F5bGFuZC1kZXZlbCkKICAk KHZvcHRfaWYgcXQgJ3F0NS1kZXZlbCBxdDUtbXVsdGltZWRpYS1kZXZlbCcpIgpAQCAtNjIsMTMg KzYyLDEyIEBAIHBvc3RfZXh0cmFjdCgpIHsKIAltdiAke3dya3NyY30vbWluaXVwbnAtJHtfbWlu aXVwbnBfY29tbWl0fSAke3dya3NyY30vZXh0L21pbml1cG5wCiB9CiAKLXBvc3RfcGF0Y2goKXsK K3Bvc3RfcGF0Y2goKSB7CiAJIyBkaXNhYmxlIGdpdCB2ZXJzaW9uaW5nCiAJdnNlZCAtZSAnc3xm aW5kX3BhY2thZ2UoR2l0KXwjICZ8JyAtaSBnaXQtdmVyc2lvbi5jbWFrZQogfQogCiBkb19pbnN0 YWxsKCkgewotCXZsaWNlbnNlIExJQ0VOU0UuVFhUCiAJdmluc3RhbGwgaWNvbnMvaWNvbi5zdmcg NjQ0IHVzci9zaGFyZS9waXhtYXBzIHBwc3NwcC5zdmcKIAl2aW5zdGFsbCBRdC9QUFNTUFAuZGVz a3RvcCA2NDQgdXNyL3NoYXJlL2FwcGxpY2F0aW9ucwogCXZiaW4gYnVpbGQvUFBTU1BQSGVhZGxl c3MgcHBzc3BwLWhlYWRsZXNzCgpGcm9tIDk0ZWRiMGJmOWQ0NDJjYTQ0NTQ2ZGQ5N2I1Y2NkMmZl MzMyZGU5MmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDog W1BBVENIIDA3NC8xMzBdIHBxaXY6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9wcWl2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9wcWl2L3RlbXBsYXRlIGIvc3JjcGtn cy9wcWl2L3RlbXBsYXRlCmluZGV4IDU0MmZjMjdhMmQzMi4uOTMwOGQ5NDliNmExIDEwMDY0NAot LS0gYS9zcmNwa2dzL3BxaXYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9wcWl2L3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHFpdicKIHBrZ25hbWU9cHFpdgog dmVyc2lvbj0yLjEyCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtbWFr ZWZpbGUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJnbGliLWRl dmVsIGd0ayszLWRldmVsICQodm9wdF9pZiBmZm1wZWcgZmZtcGVnLWRldmVsKQoKRnJvbSA4NWE2 NDJjMDdiNjhlNTdlOGVlNzZjZGM1MGJkNGFjNGM3Mjc4YjI0IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzUvMTMwXSBxbW1wOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcW1tcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcW1tcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZQppbmRleCAyNmM2NjFl ZDE2YmUuLmExNTBkNzQ0MWM3YSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xbW1wL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3FtbXAnCiBwa2duYW1lPXFtbXAKIHZlcnNpb249MS42LjEKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURVU0VfSEFMOkJP T0w9RkFMU0UgLURRTU1QX0RFRkFVTFRfVUk6U1RSSU5HPXNpbXBsZSIKIGhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UiCgpGcm9tIDE2OGM5ZTZiZjk1 YzNlMTcwM2MwODUwYjdkM2VhNDJhYzE0MmFkMWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3Ni8xMzBdIHF0NS13ZWJlbmdpbmU6IHVwZGF0 ZSB0byA1LjE1LjEzCgotLS0KIC4uLi9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNo ICAgICAgICB8ICAxMSArKwogc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5w YXRjaCAgIHwgMTc5ICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9xdDUtd2ViZW5naW5lL3Rl bXBsYXRlICAgICAgICAgICAgICAgIHwgIDEwICstCiAzIGZpbGVzIGNoYW5nZWQsIDE5NSBpbnNl cnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1 LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBh dGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvY2hyb21pdW0t bWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVz L2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi4wNGFkYzU0MGYyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0LnBh dGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9m aWx0ZXJzL0JVSUxELmduCTIwMjMtMDItMjcgMTM6MzI6NTkuMDAwMDAwMDAwIC0wNTAwCisrKysg Yi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9CVUlMRC5nbgkyMDIzLTA0LTAy IDE3OjIxOjM5LjIwNDA2NjM4NCAtMDQwMAorQEAgLTk2LDYgKzk2LDggQEAKKyAgICAgIi8vdWkv Z2Z4L2dlb21ldHJ5Omdlb21ldHJ5IiwKKyAgIF0KKyAKKysgIGNmbGFnc19jYyA9IFsgIi1zdGQ9 YysrMTQiIF0KKysKKyAgIGxpYnMgPSBbXQorIAorICAgaWYgKHByb3ByaWV0YXJ5X2NvZGVjcykg ewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRj aCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hYzU1ZTE2MzQ0MjMKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0w LDAgKzEsMTc5IEBACistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9m Zm1wZWdfZGVtdXhlci5jYwkyMDIzLTA0LTAyIDE2OjUwOjU3LjczMjU0NzQ0NiAtMDQwMAorKysr IGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJ MjAyMy0wNC0wMiAxNjo1MDowOS40ODY0Nzg5OTUgLTA0MDAKK0BAIC01Nyw2ICs1Nyw4IEBACisg CisgbmFtZXNwYWNlIHsKKyAKKytjb25zdGV4cHIgaW50NjRfdCBrUmVsYXRpdmVUc0Jhc2UgPSBz dGF0aWNfY2FzdDxpbnQ2NF90PigweDdmZmVmZmZmZmZmZmZmZmYpOworKworIHZvaWQgU2V0QVZT dHJlYW1EaXNjYXJkKEFWU3RyZWFtKiBzdHJlYW0sIEFWRGlzY2FyZCBkaXNjYXJkKSB7CisgICBE Q0hFQ0soc3RyZWFtKTsKKyAgIHN0cmVhbS0+ZGlzY2FyZCA9IGRpc2NhcmQ7CitAQCAtOTAsMjQg KzkyLDEyIEBACisgCisgc3RhdGljIGJhc2U6OlRpbWVEZWx0YSBFeHRyYWN0U3RhcnRUaW1lKEFW U3RyZWFtKiBzdHJlYW0pIHsKKyAgIC8vIFRoZSBkZWZhdWx0IHN0YXJ0IHRpbWUgaXMgemVyby4K Ky0gIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lOworKyAgYmFzZTo6VGltZURlbHRhIHN0YXJ0 X3RpbWUgPSBrTm9UaW1lc3RhbXA7CisgCisgICAvLyBGaXJzdCB0cnkgdG8gdXNlICB0aGUgfHN0 YXJ0X3RpbWV8IHZhbHVlIGFzIGlzLgorICAgaWYgKHN0cmVhbS0+c3RhcnRfdGltZSAhPSBrTm9G Rm1wZWdUaW1lc3RhbXApCisgICAgIHN0YXJ0X3RpbWUgPSBDb252ZXJ0RnJvbVRpbWVCYXNlKHN0 cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPnN0YXJ0X3RpbWUpOworIAorLSAgLy8gTmV4dCB0cnkg dG8gdXNlIHRoZSBmaXJzdCBEVFMgdmFsdWUsIGZvciBjb2RlY3Mgd2hlcmUgd2Uga25vdyBQVFMg PT0gRFRTCistICAvLyAoZXhjbHVkZXMgYWxsIEgyNnggY29kZWNzKS4gVGhlIHN0YXJ0IHRpbWUg bXVzdCBiZSByZXR1cm5lZCBpbiBQVFMuCistICBpZiAoc3RyZWFtLT5maXJzdF9kdHMgIT0ga05v RkZtcGVnVGltZXN0YW1wICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0g QVZfQ09ERUNfSURfSEVWQyAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9 IEFWX0NPREVDX0lEX0gyNjQgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAh PSBBVl9DT0RFQ19JRF9NUEVHNCkgeworLSAgICBjb25zdCBiYXNlOjpUaW1lRGVsdGEgZmlyc3Rf cHRzID0KKy0gICAgICAgIENvbnZlcnRGcm9tVGltZUJhc2Uoc3RyZWFtLT50aW1lX2Jhc2UsIHN0 cmVhbS0+Zmlyc3RfZHRzKTsKKy0gICAgaWYgKGZpcnN0X3B0cyA8IHN0YXJ0X3RpbWUpCistICAg ICAgc3RhcnRfdGltZSA9IGZpcnN0X3B0czsKKy0gIH0KKy0KKyAgIHJldHVybiBzdGFydF90aW1l OworIH0KKyAKK0BAIC00MDgsMTEgKzM5OCwxMSBAQAorICAgc2NvcGVkX3JlZnB0cjxEZWNvZGVy QnVmZmVyPiBidWZmZXI7CisgCisgICBpZiAodHlwZSgpID09IERlbXV4ZXJTdHJlYW06OlRFWFQp IHsKKy0gICAgaW50IGlkX3NpemUgPSAwOworKyAgICBzaXplX3QgaWRfc2l6ZSA9IDA7CisgICAg IHVpbnQ4X3QqIGlkX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAgICAgICAgIHBh Y2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfV0VCVlRUX0lERU5USUZJRVIsICZpZF9zaXplKTsKKyAK Ky0gICAgaW50IHNldHRpbmdzX3NpemUgPSAwOworKyAgICBzaXplX3Qgc2V0dGluZ3Nfc2l6ZSA9 IDA7CisgICAgIHVpbnQ4X3QqIHNldHRpbmdzX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0 YSgKKyAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfV0VCVlRUX1NFVFRJTkdTLCAm c2V0dGluZ3Nfc2l6ZSk7CisgCitAQCAtNDI0LDcgKzQxNCw3IEBACisgICAgIGJ1ZmZlciA9IERl Y29kZXJCdWZmZXI6OkNvcHlGcm9tKHBhY2tldC0+ZGF0YSwgcGFja2V0LT5zaXplLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlX2RhdGEuZGF0YSgpLCBzaWRlX2Rh dGEuc2l6ZSgpKTsKKyAgIH0gZWxzZSB7CistICAgIGludCBzaWRlX2RhdGFfc2l6ZSA9IDA7Cisr ICAgIHNpemVfdCBzaWRlX2RhdGFfc2l6ZSA9IDA7CisgICAgIHVpbnQ4X3QqIHNpZGVfZGF0YSA9 IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1Rf REFUQV9NQVRST1NLQV9CTE9DS0FERElUSU9OQUwsICZzaWRlX2RhdGFfc2l6ZSk7CisgCitAQCAt NDg1LDcgKzQ3NSw3IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGFja2V0LT5zaXplIC0gZGF0YV9vZmZzZXQpOworICAgICB9CisgCistICAgIGludCBza2lwX3Nh bXBsZXNfc2l6ZSA9IDA7CisrICAgIHNpemVfdCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7CisgICAg IGNvbnN0IHVpbnQzMl90KiBza2lwX3NhbXBsZXNfcHRyID0KKyAgICAgICAgIHJlaW50ZXJwcmV0 X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAgICAgICAg ICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1NLSVBfU0FNUExFUywgJnNraXBfc2FtcGxl c19zaXplKSk7CitAQCAtMTU4Nyw2ICsxNTc3LDggQEAKKyAgIGZvciAoY29uc3QgYXV0byYgc3Ry ZWFtIDogc3RyZWFtc18pIHsKKyAgICAgaWYgKCFzdHJlYW0gfHwgc3RyZWFtLT5Jc0VuYWJsZWQo KSAhPSBlbmFibGVkKQorICAgICAgIGNvbnRpbnVlOworKyAgICBpZiAoc3RyZWFtLT5hdl9zdHJl YW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKysgICAgICBjb250aW51ZTsKKyAg ICAgaWYgKCFsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gfHwKKyAgICAgICAgIHN0cmVhbS0+c3Rh cnRfdGltZSgpIDwgbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtLT5zdGFydF90aW1lKCkpIHsKKyAg ICAgICBsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gPSBzdHJlYW0uZ2V0KCk7CitAQCAtMTYwNCw2 ICsxNTk2LDggQEAKKyAgICAgaWYgKHN0cmVhbSAmJiBzdHJlYW0tPnR5cGUoKSA9PSBEZW11eGVy U3RyZWFtOjpWSURFTyAmJgorICAgICAgICAgc3RyZWFtLT5Jc0VuYWJsZWQoKSkgeworICAgICAg IHZpZGVvX3N0cmVhbSA9IHN0cmVhbS5nZXQoKTsKKysgICAgICBpZiAoc3RyZWFtLT5hdl9zdHJl YW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKysgICAgICAgIGNvbnRpbnVlOwor ICAgICAgIGlmICh2aWRlb19zdHJlYW0tPnN0YXJ0X3RpbWUoKSA8PSBzZWVrX3RpbWUpIHsKKyAg ICAgICAgIHJldHVybiB2aWRlb19zdHJlYW07CisgICAgICAgfQorZGlmZiAtTmF1cnAgcXR3ZWJl bmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZt cGVnX2NvbW1vbi5oIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21l ZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmgKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9t ZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAw IC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19j b21tb24uaAkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAtMDUwMAorQEAgLTI5LDYgKzI5 LDcgQEAgZXh0ZXJuICJDIiB7CisgI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2Zm9ybWF0Lmg+Cisg I2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2aW8uaD4KKyAjaW5jbHVkZSA8bGliYXZ1dGlsL2F2dXRp bC5oPgorKyNpbmNsdWRlIDxsaWJhdnV0aWwvY2hhbm5lbF9sYXlvdXQuaD4KKyAjaW5jbHVkZSA8 bGliYXZ1dGlsL2ltZ3V0aWxzLmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9sb2cuaD4KKyAjaW5j bHVkZSA8bGliYXZ1dGlsL21hc3RlcmluZ19kaXNwbGF5X21ldGFkYXRhLmg+CitkaWZmIC1OYXVy cCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2Zp bHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MgcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFy dHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5jYworLS0tIGEvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MJMjAy Mi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjCTIwMjItMDctMTEgMjI6MTI6 NDcuOTE3MTkyNzg4IC0wNTAwCitAQCAtODUsNyArODUsNyBAQCBib29sIEF1ZGlvRmlsZVJlYWRl cjo6T3BlbkRlbXV4ZXIoKSB7CisgfQorIAorIGJvb2wgQXVkaW9GaWxlUmVhZGVyOjpPcGVuRGVj b2RlcigpIHsKKy0gIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNf Y29udGV4dF8tPmNvZGVjX2lkKTsKKysgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19m aW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKyAgIGlmIChjb2RlYykgewor ICAgICAvLyBNUDMgZGVjb2RlcyB0byBTMTZQIHdoaWNoIHdlIGRvbid0IHN1cHBvcnQsIHRlbGwg aXQgdG8gdXNlIFMxNiBpbnN0ZWFkLgorICAgICBpZiAoY29kZWNfY29udGV4dF8tPnNhbXBsZV9m bXQgPT0gQVZfU0FNUExFX0ZNVF9TMTZQKQorZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4x MC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19k ZWNvZGVyLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlh L2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19kZWNvZGVyLmNjCTIwMjItMDUtMjMgMDY6 Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEv ZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxNzE5 Mjc4OCAtMDUwMAorQEAgLTMyOSw3ICszMjksNyBAQCBib29sIEZGbXBlZ0F1ZGlvRGVjb2Rlcjo6 Q29uZmlndXJlRGVjb2RlCisgICAgIH0KKyAgIH0KKyAKKy0gIEFWQ29kZWMqIGNvZGVjID0gYXZj b2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKysgIGNvbnN0IEFW Q29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVj X2lkKTsKKyAgIGlmICghY29kZWMgfHwKKyAgICAgICBhdmNvZGVjX29wZW4yKGNvZGVjX2NvbnRl eHRfLmdldCgpLCBjb2RlYywgJmNvZGVjX29wdGlvbnMpIDwgMCkgeworICAgICBETE9HKEVSUk9S KSA8PCAiQ291bGQgbm90IGluaXRpYWxpemUgYXVkaW8gZGVjb2RlcjogIgorZGlmZiAtTmF1cnAg cXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0 ZXJzL2ZmbXBlZ19nbHVlLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAw MDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9m Zm1wZWdfZ2x1ZS5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAtMDUwMAorQEAgLTU5 LDcgKzU5LDYgQEAgc3RhdGljIGludDY0X3QgQVZJT1NlZWtPcGVyYXRpb24odm9pZCogbworIH0K KyAKKyB2b2lkIEZGbXBlZ0dsdWU6OkluaXRpYWxpemVGRm1wZWcoKSB7CistICBhdl9yZWdpc3Rl cl9hbGwoKTsKKyB9CisgCisgc3RhdGljIHZvaWQgTG9nQ29udGFpbmVyKGJvb2wgaXNfbG9jYWxf ZmlsZSwKK0BAIC05NSw5ICs5NCw2IEBAIEZGbXBlZ0dsdWU6OkZGbXBlZ0dsdWUoRkZtcGVnVVJM UHJvdG9jb2wKKyAgIC8vIEVuYWJsZSBmYXN0LCBidXQgaW5hY2N1cmF0ZSBzZWVrcyBmb3IgTVAz LgorICAgZm9ybWF0X2NvbnRleHRfLT5mbGFncyB8PSBBVkZNVF9GTEFHX0ZBU1RfU0VFSzsKKyAK Ky0gIC8vIEVuc3VyZXMgd2UgY2FuIHJlYWQgb3V0IHZhcmlvdXMgbWV0YWRhdGEgYml0cyBsaWtl IHZwOCBhbHBoYS4KKy0gIGZvcm1hdF9jb250ZXh0Xy0+ZmxhZ3MgfD0gQVZGTVRfRkxBR19LRUVQ X1NJREVfREFUQTsKKy0KKyAgIC8vIEVuc3VyZXMgZm9ybWF0IHBhcnNpbmcgZXJyb3JzIHdpbGwg YmFpbCBvdXQuIEZyb20gYW4gYXVkaXQgb24gMTEvMjAxNywgYWxsCisgICAvLyBpbnN0YW5jZXMg d2VyZSByZWFsIGZhaWx1cmVzLiBTb2x2ZXMgYnVncyBsaWtlIGh0dHA6Ly9jcmJ1Zy5jb20vNzEw NzkxLgorICAgZm9ybWF0X2NvbnRleHRfLT5lcnJvcl9yZWNvZ25pdGlvbiB8PSBBVl9FRl9FWFBM T0RFOworZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjIHF0d2ViZW5naW5l LTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX3ZpZGVv X2RlY29kZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2Zm bXBlZ192aWRlb19kZWNvZGVyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAw CisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlkZW9f ZGVjb2Rlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAtMDUwMAorQEAgLTM5MSw3 ICszOTEsNyBAQCBib29sIEZGbXBlZ1ZpZGVvRGVjb2Rlcjo6Q29uZmlndXJlRGVjb2RlCisgICBp ZiAoZGVjb2RlX25hbHVzXykKKyAgICAgY29kZWNfY29udGV4dF8tPmZsYWdzMiB8PSBBVl9DT0RF Q19GTEFHMl9DSFVOS1M7CisgCistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNv ZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9 IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAo IWNvZGVjIHx8IGF2Y29kZWNfb3BlbjIoY29kZWNfY29udGV4dF8uZ2V0KCksIGNvZGVjLCBOVUxM KSA8IDApIHsKKyAgICAgUmVsZWFzZUZGbXBlZ1Jlc291cmNlcygpOworICAgICByZXR1cm4gZmFs c2U7CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2No cm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjIHF0d2ViZW5naW5lLTUu MTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVj a2VyLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9tZWRpYV9m aWxlX2NoZWNrZXIuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBi L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2ZpbGVfY2hlY2tlci5j YwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAtMDUwMAorQEAgLTY4LDcgKzY4LDcgQEAg Ym9vbCBNZWRpYUZpbGVDaGVja2VyOjpTdGFydChiYXNlOjpUaW1lRAorICAgICAgIGF1dG8gY29u dGV4dCA9IEFWU3RyZWFtVG9BVkNvZGVjQ29udGV4dChmb3JtYXRfY29udGV4dC0+c3RyZWFtc1tp XSk7CisgICAgICAgaWYgKCFjb250ZXh0KQorICAgICAgICAgY29udGludWU7CistICAgICAgQVZD b2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihjcC0+Y29kZWNfaWQpOworKyAgICAg IGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY3AtPmNvZGVjX2lk KTsKKyAgICAgICBpZiAoY29kZWMgJiYgYXZjb2RlY19vcGVuMihjb250ZXh0LmdldCgpLCBjb2Rl YywgbnVsbHB0cikgPj0gMCkgeworICAgICAgICAgYXV0byBsb29wID0gc3RkOjptYWtlX3VuaXF1 ZTxGRm1wZWdEZWNvZGluZ0xvb3A+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICAgc3RyZWFtX2Nv bnRleHRzW2ldID0ge3N0ZDo6bW92ZShjb250ZXh0KSwgc3RkOjptb3ZlKGxvb3ApfTsKK2RpZmYg LU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVj b2Rlcl9pbXBsLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2Rl Y29kZXJfaW1wbC5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dl YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5j YwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv aDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAt MDUwMAorQEAgLTIwMyw3ICsyMDMsNyBAQCBpbnQzMl90IEgyNjREZWNvZGVySW1wbDo6SW5pdERl Y29kZShjb25zCisgICAvLyBhIHBvaW50ZXIgfHRoaXN8LgorICAgYXZfY29udGV4dF8tPm9wYXF1 ZSA9IHRoaXM7CisgCistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGF2 X2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNf ZmluZF9kZWNvZGVyKGF2X2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAoIWNvZGVjKSB7Cisg ICAgIC8vIFRoaXMgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IEZGbXBlZyBoYXMgbm90IGJlZW4gaW5p dGlhbGl6ZWQgb3IgaXQgaGFzIG5vdAorICAgICAvLyBiZWVuIGNvbXBpbGVkL2luaXRpYWxpemVk IHdpdGggdGhlIGNvcnJlY3Qgc2V0IG9mIGNvZGVjcy4KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1 LXdlYmVuZ2luZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQppbmRl eCAwYTcxNDg0MjA4YmMuLjA5NWFiNjc3MDFlNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQpAQCAt MSw5ICsxLDkgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS13ZWJlbmdpbmUnCiBwa2duYW1l PXF0NS13ZWJlbmdpbmUKLXZlcnNpb249NS4xNS4xMQotcmV2aXNpb249MgordmVyc2lvbj01LjE1 LjEzCityZXZpc2lvbj0xCiBfdmVyc2lvbj0iJHt2ZXJzaW9ufS1sdHMiCi1fY2hyb21pdW1fY29t bWl0PWJlMzQ5ZWFmNjJlNzc5NTU3OTFkN2JmMjlmODkzZjFlOGEzN2RhZjQKK19jaHJvbWl1bV9j b21taXQ9ZTQ4ZGY3ODAzYzdjOThiMGIyNDcxYzk0MDU3ZDMyZTQ0YTMwMWFkNQogYXJjaHM9Ing4 Nl82NCogaTY4NiogYXJtdls2N10qIHBwYzY0KiBhYXJjaDY0KiIKIGNyZWF0ZV93cmtzcmM9eWVz CiBidWlsZF9zdHlsZT1xbWFrZQpAQCAtMzIsOCArMzIsOCBAQCBsaWNlbnNlPSJHUEwtMy4wLW9y LWxhdGVyLCBMR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3F0LmlvLyIKIGRp c3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL3F0L3F0d2ViZW5naW5lL2FyY2hpdmUvdiR7X3Zl cnNpb259LnRhci5negogIGh0dHBzOi8vZ2l0aHViLmNvbS9xdC9xdHdlYmVuZ2luZS1jaHJvbWl1 bS9hcmNoaXZlLyR7X2Nocm9taXVtX2NvbW1pdH0udGFyLmd6IgotY2hlY2tzdW09ImFhNzQ2NjM1 NmM0NTBjNWY1ODcwZjk3OWI5M2NkN2U3ZTYyZGExMTY1YzMyOGZmY2FiMWE5OTI4ZGIxOGFkNjcK LSA2ZjQ3ZWQ4YWI4Y2MwNjI0MTFmNmYyMDZkYTYzNTNiYzgyNjNkNmVkNmQ2MjkwYzY4OWEwNWMw MWQ5MWY2NDZiIgorY2hlY2tzdW09IjRiNTk4MzhlZDc1ZWY3ODhiNTllMWU0MTI1MzVhMGU0MmRk OWQzMTE2NjFmZGVhZGIxOTFiNTgxYmE4MTVjNjMKKyBhOTE2ODY1NjJiMWQ0ZThiMjIwZTBiYmNi YWI1ZmViNjQ2MzBlMmRlOTc0YjM1YWMwMzRiZjM4OGFmNzcxYTZjIgogCiBub19nZW5lcmljX3Br Z2NvbmZpZ19saW5rPXllcwogYnVpbGRfb3B0aW9ucz0ic25kaW8gcGlwZXdpcmUiCgpGcm9tIDI4 Y2I3YzZkY2ZmYzcyNjc3NmRkNmQyYmRiMGI5MzE1Y2Y4NjMzNWQgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3Ny8xMzBdIHF0NTogdXBkYXRl IHRvIDUuMTUuOAoKLS0tCiAuLi5lcnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEu cGF0Y2ggfCAxMjkxMyArKysrKysrKysrKysrKysrCiBzcmNwa2dzL3F0NS90ZW1wbGF0ZSAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAxMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxMjkxOSBp bnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv cXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0 Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5d2hlcmUtb3BlbnNv dXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVy eXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk2NmM5OGJjZDNiYgotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1Ljgt a2Y1LTEucGF0Y2gKQEAgLTAsMCArMSwxMjkxMyBAQAorU3VibWl0dGVkIEJ5OiAgICAgICAgICAg IFBpZXJyZSBMYWJhc3RpZSA8cGllcnJlX2RvdF9sYWJhc3RpZV9hdF9uZXVmX2RvdF9mcj4KK0Rh dGU6ICAgICAgICAgICAgICAgICAgICAyMDIzLTAxLTA1CitJbml0aWFsIFBhY2thZ2UgVmVyc2lv bjogNS4xNS44CitVcHN0cmVhbSBTdGF0dXM6ICAgICAgICAgQXBwbGllZCAoYWNjb3JkaW5nIHRv IEtERSkKK09yaWdpbjogICAgICAgICAgICAgICAgICBLREUgcGF0Y2ggc2V0CitEZXNjcmlwdGlv bjogICAgICAgICAgICAgUGF0Y2ggc2V0IG1haW50YWluZWQgYnkgdGhlIEtERSBmb2xrcworc2Vl IGh0dHBzOi8vZG90LmtkZS5vcmcvMjAyMS8wNC8wNi9hbm5vdW5jaW5nLWtkZXMtcXQtNS1wYXRj aC1jb2xsZWN0aW9uCitQYXRjaCBnZW5lcmF0ZWQgdXNpbmcgdGhlIHByb2NlZHVyZSBpbgoraHR0 cHM6Ly93aWtpLmxpbnV4ZnJvbXNjcmF0Y2gub3JnL2JsZnMvdGlja2V0LzE3NDc2I2NvbW1lbnQ6 MworCitTdWJtb2R1bGUgcXRiYXNlIDRlZTRmYzE4Li45Y2Y1ODZkNjoKK2RpZmYgLS1naXQgYS9x dGJhc2UvbWtzcGVjcy9jb21tb24vYW5kcm9pZC9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtz cGVjcy9jb21tb24vYW5kcm9pZC9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IGY3NWJjNDA5M2IuLjJi ZDU5NDEwZDQgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9jb21tb24vYW5kcm9pZC9xcGxh dGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0Zm9y bWRlZnMuaAorQEAgLTE0NCwxMSArMTQ0LDcgQEAKKyAjZGVmaW5lIFFUX1NJR05BTF9BUkdTICAg ICAgICAgIGludAorICNkZWZpbmUgUVRfU0lHTkFMX0lHTk9SRSAgICAgICAgU0lHX0lHTgorIAor LSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorICNkZWZpbmUgUVRf U09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tM RU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VS Q0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAg ICAgICAgIDo6c25wcmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9t YWMvc2RrLm1rIGIvcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5taworaW5kZXggZjMw YjU4MzBiNC4uYTMyY2VhY2I2YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVz L21hYy9zZGsubWsKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsKK0BA IC0xLDYgKzEsNiBAQAorIAorIGlmZXEgKCQoUVRfTUFDX1NES19OT19WRVJTSU9OX0NIRUNLKSwp CistICAgIENIRUNLX1NES19DT01NQU5EID0gL3Vzci9iaW4veGNydW4gLS1zZGsgJChFWFBPUlRf UU1BS0VfTUFDX1NESykgLXNob3ctc2RrLXZlcnNpb24gMj4mMQorKyAgICBDSEVDS19TREtfQ09N TUFORCA9IC91c3IvYmluL3hjcnVuIC0tc2RrICQoRVhQT1JUX1FNQUtFX01BQ19TREspIC1zaG93 LXNkay12ZXJzaW9uIDI+L2Rldi9udWxsCisgICAgIENVUlJFTlRfTUFDX1NES19WRVJTSU9OIDo9 ICQoc2hlbGwgREVWRUxPUEVSX0RJUj0kKEVYUE9SVF9RTUFLRV9YQ09ERV9ERVZFTE9QRVJfUEFU SCkgJChDSEVDS19TREtfQ09NTUFORCkpCisgICAgIGlmbmVxICgkKENVUlJFTlRfTUFDX1NES19W RVJTSU9OKSwkKEVYUE9SVF9RTUFLRV9NQUNfU0RLX1ZFUlNJT04pKQorICAgICAgICAgIyBXZSBk b24ndCB3YW50IHRvIGNvbXBsYWluIGFib3V0IG91dCBvZiBkYXRlIFNESyB1bmxlc3MgdGhlIHRh cmdldCBuZWVkcyB0byBiZSByZW1hZGUuCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbGlu dXgtY2xhbmcvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcvcXBs YXRmb3JtZGVmcy5oCitpbmRleCBhODE4ZDk3M2YwLi5jMWFiNzJmYmM2IDEwMDY0NAorLS0tIGEv cXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2Uv bWtzcGVjcy9saW51eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmgKK0BAIC03OSwxNCArNzksNiBAQAor ICNkZWZpbmUgUVRfVVNFX1hPUEVOX0xGU19FWFRFTlNJT05TCisgI2luY2x1ZGUgIi4uL2NvbW1v bi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorLQorLSNp ZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09D S0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5f VCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0Up ICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAgICAg ICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5URiAgICAgICAgICAgIDo6dnNucHJp bnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMu aCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IDEzNTIz ZjA3MDIuLjRkMjc1MGQ5ZWMgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1nKysv cXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3Jt ZGVmcy5oCitAQCAtNzksMTQgKzc5LDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9YT1BFTl9MRlNfRVhU RU5TSU9OUworICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAor LSN1bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dM SUJDX18gPCAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2Vsc2UK Ky0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbmRpZgorLQor ICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAj ZGVmaW5lIFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZT TlBSSU5URiAgICAgICAgICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3Bl Y3MvbGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1sbHZt L3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggZGM3NTBhYjFlZi4uZDNjYzM5YjQ3ZiAxMDA2NDQKKy0t LSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJh c2UvbWtzcGVjcy9saW51eC1sbHZtL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTgwLDE0ICs4MCw2IEBA CisgI2RlZmluZSBRVF9VU0VfWE9QRU5fTEZTX0VYVEVOU0lPTlMKKyAjaW5jbHVkZSAiLi4vY29t bW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCist I2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49IDIpCistI2RlZmluZSBRVF9T T0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xF Tl9UICAgICAgICAgICAgaW50CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJD RSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAg ICAgICAgOjpzbnByaW50ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2c25w cmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9y bWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oCitp bmRleCA0YzRlNTNkYTJhLi44M2JhZmZiM2UzIDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3Mv bGludXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4 LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oCitAQCAtODUsMTYgKzg1LDkgQEAKKyAjaW5jbHVkZSAi Li4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKyAjdW5kZWYgUVRfT1BFTl9MQVJH RUZJTEUKKy0jdW5kZWYgUVRfU09DS0xFTl9UCisgCisgI2RlZmluZSBRVF9PUEVOX0xBUkdFRklM RSAgICAgICAwCisgCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49IDIp CistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQorLSNk ZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2VuZGlmCistCisgI2lmbmRlZiBT SU9DR0lGQlJEQUREUgorICMgIGRlZmluZSBTSU9DR0lGQlJEQUREUiAweDg5MTkKKyAjZW5kaWYK K2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaCBi L3F0YmFzZS9ta3NwZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oCitpbmRleCA0MzM5ZWEy YjIzLi42MDA3YWYwMDU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvbHlueG9zLWcrKy9x cGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2x5bnhvcy1nKysvcXBsYXRmb3Jt ZGVmcy5oCitAQCAtNzIsMTQgKzcyLDYgQEAKKyAKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4 L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lmIGRlZmlu ZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49IDIpCistI2RlZmluZSBRVF9TT0NLTEVOX1Qg ICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAg ICAgICAgaW50CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9Y T1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAgOjpz bnByaW50ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2c25wcmludGYKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5kbGVB bGxvY2F0b3IuY3BwIGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvSGFu ZGxlQWxsb2NhdG9yLmNwcAoraW5kZXggYzNjMTg0MjU4Zi4uMzJhZjNmOGYyOSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvM3JkcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRv ci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvM3JkcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRs ZUFsbG9jYXRvci5jcHAKK0BAIC0xMCw2ICsxMCw3IEBACisgI2luY2x1ZGUgImxpYkFOR0xFL0hh bmRsZUFsbG9jYXRvci5oIgorIAorICNpbmNsdWRlIDxhbGdvcml0aG0+CisrI2luY2x1ZGUgPGxp bWl0cz4KKyAKKyAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisgCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMgYi9xdGJhc2Uvc3JjLzNyZHBh cnR5L2ZvcmtmZC9mb3JrZmRfbGludXguYworaW5kZXggZmZlMGU5YTVlMi4uYjFmNTQwOGQxMSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5jCisr KysgYi9xdGJhc2Uvc3JjLzNyZHBhcnR5L2ZvcmtmZC9mb3JrZmRfbGludXguYworQEAgLTgyLDcg KzgyLDggQEAgc3RhdGljIGludCBzeXNfY2xvbmUodW5zaWduZWQgbG9uZyBjbG9uZWZsYWdzLCBp bnQgKnB0aWQpCisgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfY2xvbmUsIGNsb25lZmxhZ3MsIGNo aWxkX3N0YWNrLCBzdGFja19zaXplLCBwdGlkLCBuZXd0bHMsIGN0aWQpOworICNlbGlmIGRlZmlu ZWQoX19hcmNfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8 fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisgICAgIGRlZmluZWQoX19uZHMzMl9fKSB8fCBkZWZp bmVkKF9faHBwYV9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9faTM4Nl9f KSB8fCBcCistICAgIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3h0ZW5zYV9fKSB8 fCBkZWZpbmVkKF9fYWxwaGFfXykgfHwgZGVmaW5lZChfX3Jpc2N2KQorKyAgICBkZWZpbmVkKF9f eDg2XzY0X18pIHx8IGRlZmluZWQoX194dGVuc2FfXykgfHwgZGVmaW5lZChfX2FscGhhX18pIHx8 IGRlZmluZWQoX19yaXNjdikgfHwgXAorKyAgICBkZWZpbmVkKF9fbG9vbmdhcmNoX18pCisgICAg IC8qIGN0aWQgYW5kIG5ld3RscyBhcmUgaW52ZXJ0ZWQgb24gQ09ORklHX0NMT05FX0JBQ0tXQVJE UyBhcmNoaXRlY3R1cmVzLAorICAgICAgKiBidXQgc2luY2UgYm90aCB2YWx1ZXMgYXJlIDAsIHRo ZXJlJ3Mgbm8gaGFybS4gKi8KKyAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9jbG9uZSwgY2xvbmVm bGFncywgY2hpbGRfc3RhY2ssIHB0aWQsIGN0aWQsIG5ld3Rscyk7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9hbmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9pZC9RdE5hdGl2 ZS5qYXZhIGIvcXRiYXNlL3NyYy9hbmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5k cm9pZC9RdE5hdGl2ZS5qYXZhCitpbmRleCA1NzkyYjViMmY1Li4yZjc0NzUwZmNmIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9hbmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9p ZC9RdE5hdGl2ZS5qYXZhCisrKysgYi9xdGJhc2Uvc3JjL2FuZHJvaWQvamFyL3NyYy9vcmcvcXRw cm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEKK0BAIC0xMTYsNiArMTE2LDcgQEAgcHVi bGljIGNsYXNzIFF0TmF0aXZlCisgICAgIHB1YmxpYyBzdGF0aWMgUXRUaHJlYWQgbV9xdFRocmVh ZCA9IG5ldyBRdFRocmVhZCgpOworICAgICBwcml2YXRlIHN0YXRpYyBIYXNoTWFwPFN0cmluZywg VXJpPiBtX2NhY2hlZFVyaXMgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFVyaT4oKTsKKyAgICAgcHJp dmF0ZSBzdGF0aWMgQXJyYXlMaXN0PFN0cmluZz4gbV9rbm93bkRpcnMgPSBuZXcgQXJyYXlMaXN0 PFN0cmluZz4oKTsKKysgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5vUGVybWlzc2lv bkVycm9yTWVzc2FnZSA9ICJObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSI7CisgCisgICAgIHBy aXZhdGUgc3RhdGljIGZpbmFsIFJ1bm5hYmxlIHJ1blBlbmRpbmdDcHBSdW5uYWJsZXNSdW5uYWJs ZSA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgIEBPdmVycmlkZQorQEAgLTE5MywxMSArMTk0 LDEwIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IGl0ZXJVcmk7CisgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgIC8vIEFuZHJvaWQgNiBh bmQgZWFybGllciBjb3VsZCBzdGlsbCBtYW5hZ2UgdG8gb3BlbiB0aGUgZmlsZSBzbyB3ZSBjYW4g cmV0dXJuIHRoZQorLSAgICAgICAgICAgIC8vIHBhcnNlZCB1cmkgaGVyZQorLSAgICAgICAgICAg IGlmIChCdWlsZC5WRVJTSU9OLlNES19JTlQgPCAyNCkKKy0gICAgICAgICAgICAgICAgcmV0dXJu IHBhcnNlZFVyaTsKKy0gICAgICAgICAgICByZXR1cm4gbnVsbDsKKysgICAgICAgICAgICAvLyBp ZiB3ZSBvbmx5IGhhdmUgdHJhbnNpZW50IHBlcm1pc3Npb25zIG9uIHVyaSBhbGwgdGhlIGFib3Zl IHdpbGwgZmFpbCwKKysgICAgICAgICAgICAvLyBidXQgd2Ugd2lsbCBiZSBhYmxlIHRvIHJlYWQg dGhlIGZpbGUgYW55d2F5LCBzbyBjb250aW51ZSB3aXRoIHVyaSBoZXJlIGFueXdheQorKyAgICAg ICAgICAgIC8vIGFuZCBjaGVjayBmb3IgU2VjdXJpdHlFeGNlcHRpb25zIGxhdGVyCisrICAgICAg ICAgICAgcmV0dXJuIHBhcnNlZFVyaTsKKyAgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0 aW9uIGUpIHsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgICAg IHJldHVybiBudWxsOworQEAgLTI0NCw3ICsyNDQsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUK KyAgICAgICAgIGludCBlcnJvciA9IC0xOworIAorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7 CistICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJvcGVuRmRGb3JDb250ZW50VXJsKCk6IE5vIHBl cm1pc3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJvcGVu RmRGb3JDb250ZW50VXJsKCk6ICIgKyBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAg ICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgIH0KKyAKK0BAIC0yNTQsMTIgKzI1NCwxMyBA QCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgICAgICByZXR1cm4gZmREZXNjLmRldGFj aEZkKCk7CisgICAgICAgICB9IGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAg ICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGVycm9y OworICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAg ICAgICAgICBMb2cuZShRdFRBRywgIm9wZW5GZEZvckNvbnRlbnRVcmwoKTogSW52YWxpZCBVcmki KTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVy biBlcnJvcjsKKysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysgICAg ICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAg IH0KKysgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgfQorIAorICAgICBwdWJsaWMgc3RhdGlj IGxvbmcgZ2V0U2l6ZShDb250ZXh0IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorQEAgLTI3 MCw3ICsyNzEsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgICAgICB1cmkgPSBn ZXRVcmlXaXRoVmFsaWRQZXJtaXNzaW9uKGNvbnRleHQsIGNvbnRlbnRVcmwsICJyIik7CisgCisg ICAgICAgICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cuZShRdFRBRywgImdl dFNpemUoKTogTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiKTsKKysgICAgICAgICAgICBMb2cu ZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1cm4g c2l6ZTsKKyAgICAgICAgIH0gZWxzZSBpZiAoIW1fY2FjaGVkVXJpcy5jb250YWluc0tleShjb250 ZW50VXJsKSkgeworICAgICAgICAgICAgIG1fY2FjaGVkVXJpcy5wdXQoY29udGVudFVybCwgdXJp KTsKK0BAIC0yODgsMTIgKzI4OSwxMyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAg IH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9n LmUoUXRUQUcsICJnZXRTaXplKCk6IEludmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmlu dFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgICAgIH0gIGNh dGNoIChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9n LmUoUXRUQUcsICJnZXRTaXplKCk6IFVuc3VwcG9ydGVkIG9wZXJhdGlvbiBmb3IgZ2l2ZW4gVXJp Iik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1 cm4gc2l6ZTsKKysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysgICAg ICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAg IH0KKysgICAgICAgIHJldHVybiBzaXplOworICAgICB9CisgCisgICAgIHB1YmxpYyBzdGF0aWMg Ym9vbGVhbiBjaGVja0ZpbGVFeGlzdHMoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVy bCkKK0BAIC0zMDMsNyArMzA1LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICBp ZiAodXJpID09IG51bGwpCisgICAgICAgICAgICAgdXJpID0gZ2V0VXJpV2l0aFZhbGlkUGVybWlz c2lvbihjb250ZXh0LCBjb250ZW50VXJsLCAiciIpOworICAgICAgICAgaWYgKHVyaSA9PSBudWxs KSB7CistICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0ZpbGVFeGlzdHMoKTogTm8gcGVy bWlzc2lvbnMgdG8gb3BlbiBVcmkiKTsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJt aXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1cm4gZXhpc3RzOworICAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBpZiAoIW1fY2FjaGVkVXJpcy5jb250YWluc0tleShj b250ZW50VXJsKSkKK0BAIC0zMjEsMTIgKzMyMywxMyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUK KyAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAg ICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0ZpbGVFeGlzdHMoKTogSW52YWxpZCBVcmkiKTsKKyAg ICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBleGlz dHM7CisgICAgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBlKSB7 CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0ZpbGVFeGlzdHMoKTogVW5zdXBwb3J0 ZWQgb3BlcmF0aW9uIGZvciBnaXZlbiBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tU cmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgIH0gY2F0Y2ggKFNl Y3VyaXR5RXhjZXB0aW9uIGUpIHsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNz aW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgIH0KKysgICAgICAgIHJldHVybiBleGlzdHM7Cisg ICAgIH0KKyAKKyAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGNoZWNrSWZXcml0YWJsZShDb250 ZXh0IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorQEAgLTM0NCw3ICszNDcsNyBAQCBwdWJs aWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgICAgICB1cmkgPSBnZXRVcmlXaXRoVmFsaWRQZXJt aXNzaW9uKGNvbnRleHQsIGNvbnRlbnRVcmwsICJyIik7CisgICAgICAgICB9CisgICAgICAgICBp ZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cuZShRdFRBRywgImlzRGlyKCk6IE5v IHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5v UGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgcmV0dXJuIGlzRGlyOworICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBpZiAoIW1fY2FjaGVkVXJpcy5jb250YWluc0tl eShjb250ZW50VXJsKSkKK0BAIC0zNzQsMTIgKzM3NywxMyBAQCBwdWJsaWMgY2xhc3MgUXROYXRp dmUKKyAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAg ICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0lmRGlyKCk6IEludmFsaWQgVXJpIik7CisgICAg ICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBlKSB7Cisg ICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0lmRGlyKCk6IFVuc3VwcG9ydGVkIG9wZXJh dGlvbiBmb3IgZ2l2ZW4gVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsK Ky0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4 Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9y TWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKyAg ICAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBsaXN0Q29udGVudHNGcm9tVHJlZVVyaShDb250ZXh0 IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oIGIvcXRiYXNlL3NyYy9j b25jdXJyZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oCitpbmRleCA4ZjlhOTM4OTUyLi5h OThkZWRlZjJlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVu dHJlZHVjZWtlcm5lbC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50 cmVkdWNla2VybmVsLmgKK0BAIC0yMTIsMTEgKzIxMiwxMyBAQCBwdWJsaWM6CisgCisgICAgIGlu bGluZSBib29sIHNob3VsZFRocm90dGxlKCkKKyAgICAgeworKyAgICAgICAgc3RkOjpsb2NrX2d1 YXJkPFFNdXRleD4gbG9ja2VyKG11dGV4KTsKKyAgICAgICAgIHJldHVybiAocmVzdWx0c01hcFNp emUgPiAoUmVkdWNlUXVldWVUaHJvdHRsZUxpbWl0ICogdGhyZWFkQ291bnQpKTsKKyAgICAgfQor IAorICAgICBpbmxpbmUgYm9vbCBzaG91bGRTdGFydFRocmVhZCgpCisgICAgIHsKKysgICAgICAg IHN0ZDo6bG9ja19ndWFyZDxRTXV0ZXg+IGxvY2tlcihtdXRleCk7CisgICAgICAgICByZXR1cm4g KHJlc3VsdHNNYXBTaXplIDw9IChSZWR1Y2VRdWV1ZVN0YXJ0TGltaXQgKiB0aHJlYWRDb3VudCkp OworICAgICB9CisgfTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25j dXJyZW50dGhyZWFkZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJl bnR0aHJlYWRlbmdpbmUuY3BwCitpbmRleCBlYTZjZTNhYzQyLi43ZjkxYTJiYTY4IDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAK KysrKyBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3Bw CitAQCAtMTc2LDYgKzE3NiwzOSBAQCB2b2lkIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0U2luZ2xl VGhyZWFkZWQoKQorICAgICBmaW5pc2goKTsKKyB9CisgCisrdm9pZCBUaHJlYWRFbmdpbmVCYXNl OjpzdGFydEJsb2NraW5nKCkKKyt7CisrICAgIHN0YXJ0KCk7CisrICAgIGJhcnJpZXIuYWNxdWly ZSgpOworKyAgICBzdGFydFRocmVhZHMoKTsKKysKKysgICAgYm9vbCB0aHJvdHRsZWQgPSBmYWxz ZTsKKysjaWZuZGVmIFFUX05PX0VYQ0VQVElPTlMKKysgICAgdHJ5IHsKKysjZW5kaWYKKysgICAg ICAgIHdoaWxlICh0aHJlYWRGdW5jdGlvbigpID09IFRocm90dGxlVGhyZWFkKSB7CisrICAgICAg ICAgICAgaWYgKHRocmVhZFRocm90dGxlRXhpdCgpKSB7CisrICAgICAgICAgICAgICAgIHRocm90 dGxlZCA9IHRydWU7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysg ICAgICAgIH0KKysjaWZuZGVmIFFUX05PX0VYQ0VQVElPTlMKKysgICAgfSBjYXRjaCAoUUV4Y2Vw dGlvbiAmZSkgeworKyAgICAgICAgaGFuZGxlRXhjZXB0aW9uKGUpOworKyAgICB9IGNhdGNoICgu Li4pIHsKKysgICAgICAgIGhhbmRsZUV4Y2VwdGlvbihRVW5oYW5kbGVkRXhjZXB0aW9uKCkpOwor KyAgICB9CisrI2VuZGlmCisrCisrICAgIGlmICh0aHJvdHRsZWQgPT0gZmFsc2UpIHsKKysgICAg ICAgIGJhcnJpZXIucmVsZWFzZSgpOworKyAgICB9CisrCisrICAgIGJhcnJpZXIud2FpdCgpOwor KyAgICBmaW5pc2goKTsKKysgICAgZXhjZXB0aW9uU3RvcmUudGhyb3dQb3NzaWJsZUV4Y2VwdGlv bigpOworK30KKysKKyB2b2lkIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0VGhyZWFkKCkKKyB7Cisg ICAgIHN0YXJ0VGhyZWFkSW50ZXJuYWwoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvbmN1 cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmggYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQv cXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmgKK2luZGV4IDdjMzBjZWJkYmMuLmE0Yzg1NDhjYzQg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5n aW5lLmgKKysrKyBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdp bmUuaAorQEAgLTkxLDYgKzkxLDcgQEAgcHVibGljOgorICAgICBUaHJlYWRFbmdpbmVCYXNlKCk7 CisgICAgIHZpcnR1YWwgflRocmVhZEVuZ2luZUJhc2UoKTsKKyAgICAgdm9pZCBzdGFydFNpbmds ZVRocmVhZGVkKCk7CisrICAgIHZvaWQgc3RhcnRCbG9ja2luZygpOworICAgICB2b2lkIHN0YXJ0 VGhyZWFkKCk7CisgICAgIGJvb2wgaXNDYW5jZWxlZCgpOworICAgICB2b2lkIHdhaXRGb3JSZXN1 bWUoKTsKK0BAIC0xNDMsNiArMTQ0LDE1IEBAIHB1YmxpYzoKKyAgICAgICAgIHJldHVybiByZXN1 bHQoKTsKKyAgICAgfQorIAorKyAgICAvLyBSdW5zIHRoZSB1c2VyIGFsZ29yaXRobSB1c2luZyBt dWx0aXBsZSB0aHJlYWRzLgorKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGJsb2NrcyB1bnRpbCB0aGUg YWxnb3JpdGhtIGlzIGZpbmlzaGVkLAorKyAgICAvLyBhbmQgdGhlbiByZXR1cm5zIHRoZSByZXN1 bHQuCisrICAgIFQgKnN0YXJ0QmxvY2tpbmcoKQorKyAgICB7CisrICAgICAgICBUaHJlYWRFbmdp bmVCYXNlOjpzdGFydEJsb2NraW5nKCk7CisrICAgICAgICByZXR1cm4gcmVzdWx0KCk7CisrICAg IH0KKysKKyAgICAgLy8gUnVucyB0aGUgdXNlciBhbGdvcml0aG0gdXNpbmcgbXVsdGlwbGUgdGhy ZWFkcy4KKyAgICAgLy8gRG9lcyBub3QgYmxvY2ssIHJldHVybnMgYSBmdXR1cmUuCisgICAgIFFG dXR1cmU8VD4gc3RhcnRBc3luY2hyb25vdXNseSgpCitAQCAtMjIzLDYgKzIzMywxMyBAQCBjbGFz cyBUaHJlYWRFbmdpbmVTdGFydGVyIDogcHVibGljIFRocmVhZEVuZ2luZVN0YXJ0ZXJCYXNlPFQ+ CisgcHVibGljOgorICAgICBUaHJlYWRFbmdpbmVTdGFydGVyKFR5cGVkVGhyZWFkRW5naW5lICpl bmcpCisgICAgICAgICA6IEJhc2UoZW5nKSB7IH0KKysKKysgICAgVCBzdGFydEJsb2NraW5nKCkK KysgICAgeworKyAgICAgICAgVCB0ID0gKnRoaXMtPnRocmVhZEVuZ2luZS0+c3RhcnRCbG9ja2lu ZygpOworKyAgICAgICAgZGVsZXRlIHRoaXMtPnRocmVhZEVuZ2luZTsKKysgICAgICAgIHJldHVy biB0OworKyAgICB9CisgfTsKKyAKKyAvLyBGdWxsIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHdo ZXJlIFQgaXMgdm9pZC4KK0BAIC0yMzIsNiArMjQ5LDEyIEBAIGNsYXNzIFRocmVhZEVuZ2luZVN0 YXJ0ZXI8dm9pZD4gOiBwdWJsaWMgVGhyZWFkRW5naW5lU3RhcnRlckJhc2U8dm9pZD4KKyBwdWJs aWM6CisgICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXIoVGhyZWFkRW5naW5lPHZvaWQ+ICpfdGhyZWFk RW5naW5lKQorICAgICAgICAgOiBUaHJlYWRFbmdpbmVTdGFydGVyQmFzZTx2b2lkPihfdGhyZWFk RW5naW5lKSB7fQorKworKyAgICB2b2lkIHN0YXJ0QmxvY2tpbmcoKQorKyAgICB7CisrICAgICAg ICB0aGlzLT50aHJlYWRFbmdpbmUtPnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGRlbGV0ZSB0 aGlzLT50aHJlYWRFbmdpbmU7CisrICAgIH0KKyB9OworIAorIC8vISBbcXRjb25jdXJyZW50dGhy ZWFkZW5naW5lLTFdCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1hdGlvbi9x dmFyaWFudGFuaW1hdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJp YW50YW5pbWF0aW9uLmNwcAoraW5kZXggOThiMDJmMDIwMi4uZWFjMTUyNDEwNyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvY29yZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwCisr KysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0aW9uLmNwcAor QEAgLTI3Niw3ICsyNzYsOSBAQCB2b2lkIFFWYXJpYW50QW5pbWF0aW9uUHJpdmF0ZTo6c2V0Q3Vy cmVudFZhbHVlRm9yUHJvZ3Jlc3MoY29uc3QgcXJlYWwgcHJvZ3Jlc3MpCisgCisgICAgIGNvbnN0 IHFyZWFsIHN0YXJ0UHJvZ3Jlc3MgPSBjdXJyZW50SW50ZXJ2YWwuc3RhcnQuZmlyc3Q7CisgICAg IGNvbnN0IHFyZWFsIGVuZFByb2dyZXNzID0gY3VycmVudEludGVydmFsLmVuZC5maXJzdDsKKy0g ICAgY29uc3QgcXJlYWwgbG9jYWxQcm9ncmVzcyA9IChwcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3Mp IC8gKGVuZFByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcyk7CisrICAgIGNvbnN0IHFyZWFsIGxvY2Fs UHJvZ3Jlc3MgPQorKyAgICAgICAgICAgIHFJc051bGwocHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNz KSA/IDAuMCAvLyBhdm9pZCAwLzAgYmVsb3cKKysgICAgICAgICAgICAvKiBlbHNlICovICAgICAg ICAgICAgICAgICAgICAgICAgOiAocHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKSAvIChlbmRQcm9n cmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpOworIAorICAgICBRVmFyaWFudCByZXQgPSBxLT5pbnRlcnBv bGF0ZWQoY3VycmVudEludGVydmFsLnN0YXJ0LnNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGN1cnJlbnRJbnRlcnZhbC5lbmQuc2Vjb25kLAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oIGIvcXRiYXNlL3NyYy9jb3Jl bGliL2dsb2JhbC9xbmFtZXNwYWNlLmgKK2luZGV4IGFkNDE1MGIzMTcuLmJmMTliMTYyN2IgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1lc3BhY2UuaAorKysrIGIv cXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xbmFtZXNwYWNlLmgKK0BAIC0xODY0LDcgKzE4NjQs NyBAQCBwdWJsaWM6CisgICAgIFFUX1FfRU5VTShUaW1lclR5cGUpCisgICAgIFFUX1FfRU5VTShT Y3JvbGxQaGFzZSkKKyAgICAgUVRfUV9FTlVNKE1vdXNlRXZlbnRTb3VyY2UpCistICAgIFFUX1Ff RkxBRyhNb3VzZUV2ZW50RmxhZykKKysgICAgUVRfUV9GTEFHKE1vdXNlRXZlbnRGbGFncykKKyAg ICAgUVRfUV9FTlVNKENoZWNrc3VtVHlwZSkKKyAgICAgUVRfUV9FTlVNKEhpZ2hEcGlTY2FsZUZh Y3RvclJvdW5kaW5nUG9saWN5KQorICAgICBRVF9RX0VOVU0oVGFiRm9jdXNCZWhhdmlvcikKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20uY3BwIGIvcXRiYXNl L3NyYy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcAoraW5kZXggMTA2NzJjMWY5Mi4uMjVmODdj N2U2YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAKK0BAIC0zODMsNyAr MzgzLDYgQEAgc3RydWN0IFFSYW5kb21HZW5lcmF0b3I6OlN5c3RlbUFuZEdsb2JhbEdlbmVyYXRv cnMKKyAKKyAgICAgICAgIGNvbnN0ZXhwciBTeXN0ZW1BbmRHbG9iYWxHZW5lcmF0b3JzIGcgPSB7 fTsKKyAgICAgICAgIFFfVU5VU0VEKGcpOworLSAgICAgICAgUV9TVEFUSUNfQVNTRVJUKHN0ZDo6 aXNfbGl0ZXJhbF90eXBlPFN5c3RlbUFuZEdsb2JhbEdlbmVyYXRvcnM+Ojp2YWx1ZSk7CisgI2Vu ZGlmCisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1ZmZl ci5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1ZmZlci5jcHAKK2luZGV4IDU5NWZjZDI3 MjQuLjAzMmMwZGRkNGIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1ZmZl ci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVyLmNwcAorQEAgLTQxLDYg KzQxLDggQEAKKyAjaW5jbHVkZSA8UXRDb3JlL3FtZXRhb2JqZWN0Lmg+CisgI2luY2x1ZGUgInBy aXZhdGUvcWlvZGV2aWNlX3AuaCIKKyAKKysjaW5jbHVkZSA8bGltaXRzPgorKworIFFUX0JFR0lO X05BTUVTUEFDRQorIAorIC8qKiBRQnVmZmVyUHJpdmF0ZSAqKi8KK0BAIC0zNjYsNyArMzY4LDkg QEAgcWludDY0IFFCdWZmZXI6OnNpemUoKSBjb25zdAorIGJvb2wgUUJ1ZmZlcjo6c2VlayhxaW50 NjQgcG9zKQorIHsKKyAgICAgUV9EKFFCdWZmZXIpOworLSAgICBpZiAocG9zID4gZC0+YnVmLT5z aXplKCkgJiYgaXNXcml0YWJsZSgpKSB7CisrICAgIGNvbnN0IGF1dG8gb2xkQnVmU2l6ZSA9IGQt PmJ1Zi0+c2l6ZSgpOworKyAgICBjb25zdGV4cHIgcWludDY0IE1heFNlZWtQb3MgPSAoc3RkOjpu dW1lcmljX2xpbWl0czxkZWNsdHlwZShvbGRCdWZTaXplKT46Om1heCkoKTsKKysgICAgaWYgKHBv cyA8PSBNYXhTZWVrUG9zICYmIHBvcyA+IG9sZEJ1ZlNpemUgJiYgaXNXcml0YWJsZSgpKSB7Cisg ICAgICAgICBpZiAoc2VlayhkLT5idWYtPnNpemUoKSkpIHsKKyAgICAgICAgICAgICBjb25zdCBx aW50NjQgZ2FwU2l6ZSA9IHBvcyAtIGQtPmJ1Zi0+c2l6ZSgpOworICAgICAgICAgICAgIGlmICh3 cml0ZShRQnl0ZUFycmF5KGdhcFNpemUsIDApKSAhPSBnYXBTaXplKSB7CitAQCAtMzc3LDcgKzM4 MSw3IEBAIGJvb2wgUUJ1ZmZlcjo6c2VlayhxaW50NjQgcG9zKQorICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIGlmIChwb3MgPiBkLT5idWYtPnNpemUo KSB8fCBwb3MgPCAwKSB7CistICAgICAgICBxV2FybmluZygiUUJ1ZmZlcjo6c2VlazogSW52YWxp ZCBwb3M6ICVkIiwgaW50KHBvcykpOworKyAgICAgICAgcVdhcm5pbmcoIlFCdWZmZXI6OnNlZWs6 IEludmFsaWQgcG9zOiAlbGxkIiwgcG9zKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg fQorICAgICByZXR1cm4gUUlPRGV2aWNlOjpzZWVrKHBvcyk7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvaW8vcWZpbGVzeXN0ZW1lbmdpbmVfd2luLmNwcAoraW5kZXggODFkM2E3MTk4Ni4uYzg2 ZWQxZjliMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVu Z2luZV93aW4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW1lbmdp bmVfd2luLmNwcAorQEAgLTY2NCwxNCArNjY0LDE0IEBAIFFGaWxlU3lzdGVtRW50cnkgUUZpbGVT eXN0ZW1FbmdpbmU6OmFic29sdXRlTmFtZShjb25zdCBRRmlsZVN5c3RlbUVudHJ5ICZlbnRyeSkK KyAgICAgcmV0dXJuIFFGaWxlU3lzdGVtRW50cnkocmV0LCBRRmlsZVN5c3RlbUVudHJ5OjpGcm9t SW50ZXJuYWxQYXRoKCkpOworIH0KKyAKKy0jaWYgZGVmaW5lZChRX0NDX01JTkdXKSAmJiBXSU5W RVIgPCAweDA2MDIgLy8gIFdpbmRvd3MgOCBvbndhcmRzCisrI2lmIGRlZmluZWQoUV9DQ19NSU5H VykgJiYgV0lOVkVSIDwgMHgwNjAyICYmIF9XSU4zMl9XSU5OVCA8IF9XSU4zMl9XSU5OVF9XSU44 IC8vICBXaW5kb3dzIDggb253YXJkcworIAorIHR5cGVkZWYgc3RydWN0IF9GSUxFX0lEX0lORk8g eworICAgICBVTE9OR0xPTkcgVm9sdW1lU2VyaWFsTnVtYmVyOworICAgICBGSUxFX0lEXzEyOCBG aWxlSWQ7CisgfSBGSUxFX0lEX0lORk8sICpQRklMRV9JRF9JTkZPOworIAorLSNlbmRpZiAvLyBp ZiBkZWZpbmVkIChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAweDA2MDIKKysjZW5kaWYgLy8gaWYg ZGVmaW5lZChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAweDA2MDIgJiYgX1dJTjMyX1dJTk5UIDwg X1dJTjMyX1dJTk5UX1dJTjgKKyAKKyAvLyBGaWxlIElEIGZvciBXaW5kb3dzIHVwIHRvIHZlcnNp b24gNyBhbmQgRkFUMzIgZHJpdmVzCisgc3RhdGljIGlubGluZSBRQnl0ZUFycmF5IGZpbGVJZChI QU5ETEUgaGFuZGxlKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5 c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0 ZW13YXRjaGVyX2lub3RpZnkuY3BwCitpbmRleCA5NGQ5ZDA2YmNiLi4yN2UwYjEzYjBiIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5 LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90 aWZ5LmNwcAorQEAgLTM2Niw3ICszNjYsOSBAQCB2b2lkIFFJbm90aWZ5RmlsZVN5c3RlbVdhdGNo ZXJFbmdpbmU6OnJlYWRGcm9tSW5vdGlmeSgpCisgICAgIC8vIHFEZWJ1ZygiUUlub3RpZnlGaWxl U3lzdGVtV2F0Y2hlckVuZ2luZTo6cmVhZEZyb21Jbm90aWZ5Iik7CisgCisgICAgIGludCBidWZm U2l6ZSA9IDA7CistICAgIGlvY3RsKGlub3RpZnlGZCwgRklPTlJFQUQsIChjaGFyICopICZidWZm U2l6ZSk7CisrICAgIGlmIChpb2N0bChpbm90aWZ5RmQsIEZJT05SRUFELCAoY2hhciAqKSAmYnVm ZlNpemUpID09IC0xIHx8IGJ1ZmZTaXplID09IDApCisrICAgICAgICByZXR1cm47CisrCisgICAg IFFWYXJMZW5ndGhBcnJheTxjaGFyLCA0MDk2PiBidWZmZXIoYnVmZlNpemUpOworICAgICBidWZm U2l6ZSA9IHJlYWQoaW5vdGlmeUZkLCBidWZmZXIuZGF0YSgpLCBidWZmU2l6ZSk7CisgICAgIGNo YXIgKmF0ID0gYnVmZmVyLmRhdGEoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIv aW8vcWxvY2tmaWxlX3dpbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dp bi5jcHAKK2luZGV4IDI3N2Y4ZDQyMzAuLjM4ZWNlZjU1NTAgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dpbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxp Yi9pby9xbG9ja2ZpbGVfd2luLmNwcAorQEAgLTQ4LDYgKzQ4LDggQEAKKyAjaW5jbHVkZSAiUXRD b3JlL3FkZWJ1Zy5oIgorICNpbmNsdWRlICJRdENvcmUvcXRocmVhZC5oIgorIAorKyNpbmNsdWRl ICJwcml2YXRlL3FzeXN0ZW1saWJyYXJ5X3AuaCIKKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAK KyBzdGF0aWMgaW5saW5lIGJvb2wgZmlsZUV4aXN0cyhjb25zdCB3Y2hhcl90ICpmaWxlTmFtZSkK K0BAIC0xNTAsNyArMTUyLDcgQEAgUVN0cmluZyBRTG9ja0ZpbGVQcml2YXRlOjpwcm9jZXNzTmFt ZUJ5UGlkKHFpbnQ2NCBwaWQpCisgI2lmICFkZWZpbmVkKFFfT1NfV0lOUlQpCisgICAgIHR5cGVk ZWYgRFdPUkQgKFdJTkFQSSAqR2V0TW9kdWxlRmlsZU5hbWVFeEZ1bmMpKEhBTkRMRSwgSE1PRFVM RSwgTFBUU1RSLCBEV09SRCk7CisgCistICAgIEhNT0RVTEUgaFBzYXBpID0gTG9hZExpYnJhcnlB KCJwc2FwaSIpOworKyAgICBITU9EVUxFIGhQc2FwaSA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKEwi cHNhcGkiKTsKKyAgICAgaWYgKCFoUHNhcGkpCisgICAgICAgICByZXR1cm4gUVN0cmluZygpOwor ICAgICBHZXRNb2R1bGVGaWxlTmFtZUV4RnVuYyBxR2V0TW9kdWxlRmlsZU5hbWVFeCA9IHJlaW50 ZXJwcmV0X2Nhc3Q8R2V0TW9kdWxlRmlsZU5hbWVFeEZ1bmM+KAorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi9pby9xcHJvY2Vzc191bml4LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9p by9xcHJvY2Vzc191bml4LmNwcAoraW5kZXggNTAzOTBlNTdmNS4uMTVjOGYzMDc0NSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xcHJvY2Vzc191bml4LmNwcAorKysrIGIvcXRi YXNlL3NyYy9jb3JlbGliL2lvL3Fwcm9jZXNzX3VuaXguY3BwCitAQCAtMSw3ICsxLDcgQEAKKyAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorICoqCisgKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBD b21wYW55IEx0ZC4KKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24uCisr KiogQ29weXJpZ2h0IChDKSAyMDIyIEludGVsIENvcnBvcmF0aW9uLgorICoqIENvbnRhY3Q6IGh0 dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBRdENvcmUgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTQyMiwxNCArNDIyLDE1 IEBAIHZvaWQgUVByb2Nlc3NQcml2YXRlOjpzdGFydFByb2Nlc3MoKQorICAgICAvLyBBZGQgdGhl IHByb2dyYW0gbmFtZSB0byB0aGUgYXJndW1lbnQgbGlzdC4KKyAgICAgYXJndlswXSA9IG51bGxw dHI7CisgICAgIGlmICghcHJvZ3JhbS5jb250YWlucyhRTGF0aW4xQ2hhcignLycpKSkgeworKyAg ICAgICAgLy8gZmluZEV4ZWN1dGFibGUoKSByZXR1cm5zIGl0cyBhcmd1bWVudCBpZiBpdCdzIGFu IGFic29sdXRlIHBhdGgsCisrICAgICAgICAvLyBvdGhlcndpc2UgaXQgc2VhcmNoZXMgJFBBVEg7 IHJldHVybnMgZW1wdHkgaWYgbm90IGZvdW5kICh3ZSBoYW5kbGUKKysgICAgICAgIC8vIHRoYXQg Y2FzZSBtdWNoIGxhdGVyKQorICAgICAgICAgY29uc3QgUVN0cmluZyAmZXhlRmlsZVBhdGggPSBR U3RhbmRhcmRQYXRoczo6ZmluZEV4ZWN1dGFibGUocHJvZ3JhbSk7CistICAgICAgICBpZiAoIWV4 ZUZpbGVQYXRoLmlzRW1wdHkoKSkgeworLSAgICAgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgJnRt cCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKy0gICAgICAgICAgICBhcmd2WzBd ID0gOjpzdHJkdXAodG1wLmNvbnN0RGF0YSgpKTsKKy0gICAgICAgIH0KKy0gICAgfQorLSAgICBp ZiAoIWFyZ3ZbMF0pCisrICAgICAgICBjb25zdCBRQnl0ZUFycmF5ICZ0bXAgPSBRRmlsZTo6ZW5j b2RlTmFtZShleGVGaWxlUGF0aCk7CisrICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAodG1wLmNv bnN0RGF0YSgpKTsKKysgICAgfSBlbHNlIHsKKyAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cChl bmNvZGVkUHJvZ3JhbU5hbWUuY29uc3REYXRhKCkpOworKyAgICB9CisgCisgICAgIC8vIEFkZCBl dmVyeSBhcmd1bWVudCB0byB0aGUgbGlzdAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3Vt ZW50cy5jb3VudCgpOyArK2kpCitAQCAtOTgzLDE1ICs5ODQsMTYgQEAgYm9vbCBRUHJvY2Vzc1By aXZhdGU6OnN0YXJ0RGV0YWNoZWQocWludDY0ICpwaWQpCisgICAgICAgICAgICAgICAgIGVudnAg PSBfcV9kdXBFbnZpcm9ubWVudChlbnZpcm9ubWVudC5kLmNvbnN0RGF0YSgpLT52YXJzLCAmZW52 Yyk7CisgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgIFFCeXRlQXJyYXkgdG1wOworICAg ICAgICAgICAgIGlmICghcHJvZ3JhbS5jb250YWlucyhRTGF0aW4xQ2hhcignLycpKSkgeworKyAg ICAgICAgICAgICAgICAvLyBmaW5kRXhlY3V0YWJsZSgpIHJldHVybnMgaXRzIGFyZ3VtZW50IGlm IGl0J3MgYW4gYWJzb2x1dGUgcGF0aCwKKysgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGl0 IHNlYXJjaGVzICRQQVRIOyByZXR1cm5zIGVtcHR5IGlmIG5vdCBmb3VuZCAod2UgaGFuZGxlCisr ICAgICAgICAgICAgICAgIC8vIHRoYXQgY2FzZSBtdWNoIGxhdGVyKQorICAgICAgICAgICAgICAg ICBjb25zdCBRU3RyaW5nICZleGVGaWxlUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjpmaW5kRXhlY3V0 YWJsZShwcm9ncmFtKTsKKy0gICAgICAgICAgICAgICAgaWYgKCFleGVGaWxlUGF0aC5pc0VtcHR5 KCkpCistICAgICAgICAgICAgICAgICAgICB0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxl UGF0aCk7CisrICAgICAgICAgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgJnRtcCA9IFFGaWxlOjpl bmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKysgICAgICAgICAgICAgICAgYXJndlswXSA9IDo6c3Ry ZHVwKHRtcC5jb25zdERhdGEoKSk7CisrICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAg ICAgICAgYXJndlswXSA9IDo6c3RyZHVwKFFGaWxlOjplbmNvZGVOYW1lKHByb2dyYW0pKTsKKyAg ICAgICAgICAgICB9CistICAgICAgICAgICAgaWYgKHRtcC5pc0VtcHR5KCkpCistICAgICAgICAg ICAgICAgIHRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKHByb2dyYW0pOworLSAgICAgICAgICAgIGFy Z3ZbMF0gPSB0bXAuZGF0YSgpOworIAorICAgICAgICAgICAgIGlmIChlbnZwKQorICAgICAgICAg ICAgICAgICBxdF9zYWZlX2V4ZWN2ZShhcmd2WzBdLCBhcmd2LCBlbnZwKTsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwIGIv cXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRlbW1vZGVsLmNwcAoraW5k ZXggM2E3OWM1MDJhZi4uOTk3YTYzNGU3NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxp Yi9pdGVtbW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29y ZWxpYi9pdGVtbW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAKK0BAIC0zMTk2LDkgKzMxOTYs OCBAQCBib29sIFFBYnN0cmFjdEl0ZW1Nb2RlbDo6YmVnaW5Nb3ZlQ29sdW1ucyhjb25zdCBRTW9k ZWxJbmRleCAmc291cmNlUGFyZW50LCBpbnQgcworICAgICBkZXN0aW5hdGlvbkNoYW5nZS5uZWVk c0FkanVzdCA9IGRlc3RpbmF0aW9uUGFyZW50LmlzVmFsaWQoKSAmJiBkZXN0aW5hdGlvblBhcmVu dC5yb3coKSA+PSBzb3VyY2VMYXN0ICYmIGRlc3RpbmF0aW9uUGFyZW50LnBhcmVudCgpID09IHNv dXJjZVBhcmVudDsKKyAgICAgZC0+Y2hhbmdlcy5wdXNoKGRlc3RpbmF0aW9uQ2hhbmdlKTsKKyAK Ky0gICAgZC0+aXRlbXNBYm91dFRvQmVNb3ZlZChzb3VyY2VQYXJlbnQsIHNvdXJjZUZpcnN0LCBz b3VyY2VMYXN0LCBkZXN0aW5hdGlvblBhcmVudCwgZGVzdGluYXRpb25DaGlsZCwgUXQ6Okhvcml6 b250YWwpOworLQorICAgICBlbWl0IGNvbHVtbnNBYm91dFRvQmVNb3ZlZChzb3VyY2VQYXJlbnQs IHNvdXJjZUZpcnN0LCBzb3VyY2VMYXN0LCBkZXN0aW5hdGlvblBhcmVudCwgZGVzdGluYXRpb25D aGlsZCwgUVByaXZhdGVTaWduYWwoKSk7CisrICAgIGQtPml0ZW1zQWJvdXRUb0JlTW92ZWQoc291 cmNlUGFyZW50LCBzb3VyY2VGaXJzdCwgc291cmNlTGFzdCwgZGVzdGluYXRpb25QYXJlbnQsIGRl c3RpbmF0aW9uQ2hpbGQsIFF0OjpIb3Jpem9udGFsKTsKKyAgICAgcmV0dXJuIHRydWU7CisgfQor IAorQEAgLTMyMzEsNyArMzIzMCw2IEBAIHZvaWQgUUFic3RyYWN0SXRlbU1vZGVsOjplbmRNb3Zl Q29sdW1ucygpCisgICAgICAgYWRqdXN0ZWRTb3VyY2UgPSBjcmVhdGVJbmRleChhZGp1c3RlZFNv dXJjZS5yb3coKSwgYWRqdXN0ZWRTb3VyY2UuY29sdW1uKCkgKyBudW1Nb3ZlZCwgYWRqdXN0ZWRT b3VyY2UuaW50ZXJuYWxQb2ludGVyKCkpOworIAorICAgICBkLT5pdGVtc01vdmVkKGFkanVzdGVk U291cmNlLCByZW1vdmVDaGFuZ2UuZmlyc3QsIHJlbW92ZUNoYW5nZS5sYXN0LCBhZGp1c3RlZERl c3RpbmF0aW9uLCBpbnNlcnRDaGFuZ2UuZmlyc3QsIFF0OjpIb3Jpem9udGFsKTsKKy0KKyAgICAg ZW1pdCBjb2x1bW5zTW92ZWQoYWRqdXN0ZWRTb3VyY2UsIHJlbW92ZUNoYW5nZS5maXJzdCwgcmVt b3ZlQ2hhbmdlLmxhc3QsIGFkanVzdGVkRGVzdGluYXRpb24sIGluc2VydENoYW5nZS5maXJzdCwg UVByaXZhdGVTaWduYWwoKSk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxp Yi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9kZWwuY3BwCitpbmRleCBkYzYzNzlkOWZi Li5jNWUyODdlZTg0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMv cXNvcnRmaWx0ZXJwcm94eW1vZGVsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1t b2RlbHMvcXNvcnRmaWx0ZXJwcm94eW1vZGVsLmNwcAorQEAgLTkzOSw4ICs5MzksOSBAQCB2b2lk IFFTb3J0RmlsdGVyUHJveHlNb2RlbFByaXZhdGU6Omluc2VydF9zb3VyY2VfaXRlbXMoCisgICAg ICAgICAgICAgICAgIHEtPmJlZ2luSW5zZXJ0Q29sdW1ucyhwcm94eV9wYXJlbnQsIHByb3h5X3N0 YXJ0LCBwcm94eV9lbmQpOworICAgICAgICAgfQorIAorLSAgICAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBzb3VyY2VfaXRlbXMuc2l6ZSgpOyArK2kpCistICAgICAgICAgICAgcHJveHlfdG9fc291 cmNlLmluc2VydChwcm94eV9zdGFydCArIGksIHNvdXJjZV9pdGVtcy5hdChpKSk7CisrICAgICAg ICAvLyBUT0RPOiB1c2UgdGhlIHJhbmdlIFFMaXN0OjppbnNlcnQoKSBvdmVybG9hZCBvbmNlIGl0 IGlzIGltcGxlbWVudGVkIChRVEJVRy01ODYzMykuCisrICAgICAgICBwcm94eV90b19zb3VyY2Uu aW5zZXJ0KHByb3h5X3N0YXJ0LCBzb3VyY2VfaXRlbXMuc2l6ZSgpLCAwKTsKKysgICAgICAgIHN0 ZDo6Y29weShzb3VyY2VfaXRlbXMuY2JlZ2luKCksIHNvdXJjZV9pdGVtcy5jZW5kKCksIHByb3h5 X3RvX3NvdXJjZS5iZWdpbigpICsgcHJveHlfc3RhcnQpOworIAorICAgICAgICAgYnVpbGRfc291 cmNlX3RvX3Byb3h5X21hcHBpbmcocHJveHlfdG9fc291cmNlLCBzb3VyY2VfdG9fcHJveHkpOwor IAorQEAgLTMxMjMsOCArMzEyNCw5IEBAIGJvb2wgUVNvcnRGaWx0ZXJQcm94eU1vZGVsOjpmaWx0 ZXJBY2NlcHRzUm93KGludCBzb3VyY2Vfcm93LCBjb25zdCBRTW9kZWxJbmRleCAmCisgCisgICAg IGlmIChkLT5maWx0ZXJfZGF0YS5pc0VtcHR5KCkpCisgICAgICAgICByZXR1cm4gdHJ1ZTsKKysK KysgICAgaW50IGNvbHVtbl9jb3VudCA9IGQtPm1vZGVsLT5jb2x1bW5Db3VudChzb3VyY2VfcGFy ZW50KTsKKyAgICAgaWYgKGQtPmZpbHRlcl9jb2x1bW4gPT0gLTEpIHsKKy0gICAgICAgIGludCBj b2x1bW5fY291bnQgPSBkLT5tb2RlbC0+Y29sdW1uQ291bnQoc291cmNlX3BhcmVudCk7CisgICAg ICAgICBmb3IgKGludCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBjb2x1bW5fY291bnQ7ICsrY29sdW1u KSB7CisgICAgICAgICAgICAgUU1vZGVsSW5kZXggc291cmNlX2luZGV4ID0gZC0+bW9kZWwtPmlu ZGV4KHNvdXJjZV9yb3csIGNvbHVtbiwgc291cmNlX3BhcmVudCk7CisgICAgICAgICAgICAgUVN0 cmluZyBrZXkgPSBkLT5tb2RlbC0+ZGF0YShzb3VyY2VfaW5kZXgsIGQtPmZpbHRlcl9yb2xlKS50 b1N0cmluZygpOworQEAgLTMxMzMsOSArMzEzNSwxMCBAQCBib29sIFFTb3J0RmlsdGVyUHJveHlN b2RlbDo6ZmlsdGVyQWNjZXB0c1JvdyhpbnQgc291cmNlX3JvdywgY29uc3QgUU1vZGVsSW5kZXgg JgorICAgICAgICAgfQorICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CistICAgIFFNb2Rl bEluZGV4IHNvdXJjZV9pbmRleCA9IGQtPm1vZGVsLT5pbmRleChzb3VyY2Vfcm93LCBkLT5maWx0 ZXJfY29sdW1uLCBzb3VyY2VfcGFyZW50KTsKKy0gICAgaWYgKCFzb3VyY2VfaW5kZXguaXNWYWxp ZCgpKSAvLyB0aGUgY29sdW1uIG1heSBub3QgZXhpc3QKKysKKysgICAgaWYgKGQtPmZpbHRlcl9j b2x1bW4gPj0gY29sdW1uX2NvdW50KSAvLyB0aGUgY29sdW1uIG1heSBub3QgZXhpc3QKKyAgICAg ICAgIHJldHVybiB0cnVlOworKyAgICBRTW9kZWxJbmRleCBzb3VyY2VfaW5kZXggPSBkLT5tb2Rl bC0+aW5kZXgoc291cmNlX3JvdywgZC0+ZmlsdGVyX2NvbHVtbiwgc291cmNlX3BhcmVudCk7Cisg ICAgIFFTdHJpbmcga2V5ID0gZC0+bW9kZWwtPmRhdGEoc291cmNlX2luZGV4LCBkLT5maWx0ZXJf cm9sZSkudG9TdHJpbmcoKTsKKyAgICAgcmV0dXJuIGQtPmZpbHRlcl9kYXRhLmhhc01hdGNoKGtl eSk7CisgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBs aWNhdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBwbGljYXRpb24u Y3BwCitpbmRleCBjYTI4NjRkZjgzLi4xMzJiMmVhZTUyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9j b3JlbGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcAorQEAgLTExNTcsNyArMTE1Nyw3IEBA IHN0YXRpYyBib29sIGRvTm90aWZ5KFFPYmplY3QgKnJlY2VpdmVyLCBRRXZlbnQgKmV2ZW50KQor IGJvb2wgUUNvcmVBcHBsaWNhdGlvblByaXZhdGU6OnNlbmRUaHJvdWdoQXBwbGljYXRpb25FdmVu dEZpbHRlcnMoUU9iamVjdCAqcmVjZWl2ZXIsIFFFdmVudCAqZXZlbnQpCisgeworICAgICAvLyBX ZSBjYW4ndCBhY2Nlc3MgdGhlIGFwcGxpY2F0aW9uIGV2ZW50IGZpbHRlcnMgb3V0c2lkZSBvZiB0 aGUgbWFpbiB0aHJlYWQgKHJhY2UgY29uZGl0aW9ucykKKy0gICAgUV9BU1NFUlQocmVjZWl2ZXIt PmRfZnVuYygpLT50aHJlYWREYXRhLmxvYWRSZWxheGVkKCktPnRocmVhZC5sb2FkQWNxdWlyZSgp ID09IG1haW5UaHJlYWQoKSk7CisrICAgIFFfQVNTRVJUKHJlY2VpdmVyLT5kX2Z1bmMoKS0+dGhy ZWFkRGF0YS5sb2FkQWNxdWlyZSgpLT50aHJlYWQubG9hZFJlbGF4ZWQoKSA9PSBtYWluVGhyZWFk KCkpOworIAorICAgICBpZiAoZXh0cmFEYXRhKSB7CisgICAgICAgICAvLyBhcHBsaWNhdGlvbiBl dmVudCBmaWx0ZXJzIGFyZSBvbmx5IGNhbGxlZCBmb3Igb2JqZWN0cyBpbiB0aGUgR1VJIHRocmVh ZAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdC5jcHAgYi9x dGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3QuY3BwCitpbmRleCAxZWI3OTEzOGQ5Li4z NmNkNzgwZWUxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0 LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcAorQEAgLTEw MTAsNyArMTAxMCw3IEBAIFFPYmplY3Q6On5RT2JqZWN0KCkKKyAgICAgICAgIGVtaXQgZGVzdHJv eWVkKHRoaXMpOworICAgICB9CisgCistICAgIGlmIChkLT5kZWNsYXJhdGl2ZURhdGEpIHsKKysg ICAgaWYgKCFkLT5pc0RlbGV0aW5nQ2hpbGRyZW4gJiYgZC0+ZGVjbGFyYXRpdmVEYXRhKSB7Cisg ICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8UUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhSW1wbCo+KGQt PmRlY2xhcmF0aXZlRGF0YSktPm93bmVkQnlRbWwxKSB7CisgICAgICAgICAgICAgaWYgKFFBYnN0 cmFjdERlY2xhcmF0aXZlRGF0YTo6ZGVzdHJveWVkX3FtbDEpCisgICAgICAgICAgICAgICAgIFFB YnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6ZGVzdHJveWVkX3FtbDEoZC0+ZGVjbGFyYXRpdmVEYXRh LCB0aGlzKTsKK0BAIC0xNTgwLDcgKzE1ODAsNyBAQCB2b2lkIFFPYmplY3Q6Om1vdmVUb1RocmVh ZChRVGhyZWFkICp0YXJnZXRUaHJlYWQpCisgCisgICAgIFFUaHJlYWREYXRhICpjdXJyZW50RGF0 YSA9IFFUaHJlYWREYXRhOjpjdXJyZW50KCk7CisgICAgIFFUaHJlYWREYXRhICp0YXJnZXREYXRh ID0gdGFyZ2V0VGhyZWFkID8gUVRocmVhZERhdGE6OmdldDIodGFyZ2V0VGhyZWFkKSA6IG51bGxw dHI7CistICAgIFFUaHJlYWREYXRhICp0aGlzVGhyZWFkRGF0YSA9IGQtPnRocmVhZERhdGEubG9h ZFJlbGF4ZWQoKTsKKysgICAgUVRocmVhZERhdGEgKnRoaXNUaHJlYWREYXRhID0gZC0+dGhyZWFk RGF0YS5sb2FkQWNxdWlyZSgpOworICAgICBpZiAoIXRoaXNUaHJlYWREYXRhLT50aHJlYWQubG9h ZEFjcXVpcmUoKSAmJiBjdXJyZW50RGF0YSA9PSB0YXJnZXREYXRhKSB7CisgICAgICAgICAvLyBv bmUgZXhjZXB0aW9uIHRvIHRoZSBydWxlOiB3ZSBhbGxvdyBtb3Zpbmcgb2JqZWN0cyB3aXRoIG5v IHRocmVhZCBhZmZpbml0eSB0byB0aGUgY3VycmVudCB0aHJlYWQKKyAgICAgICAgIGN1cnJlbnRE YXRhID0gZC0+dGhyZWFkRGF0YTsKK0BAIC0yNjIwLDcgKzI2MjAsNyBAQCBpbnQgUU9iamVjdDo6 cmVjZWl2ZXJzKGNvbnN0IGNoYXIgKnNpZ25hbCkgY29uc3QKKyAgICAgICAgIGlmICghZC0+aXNT aWduYWxDb25uZWN0ZWQoc2lnbmFsX2luZGV4KSkKKyAgICAgICAgICAgICByZXR1cm4gcmVjZWl2 ZXJzOworIAorLSAgICAgICAgaWYgKGQtPmRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNs YXJhdGl2ZURhdGE6OnJlY2VpdmVycykgeworKyAgICAgICAgaWYgKCFkLT5pc0RlbGV0aW5nQ2hp bGRyZW4gJiYgZC0+ZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6 cmVjZWl2ZXJzKSB7CisgICAgICAgICAgICAgcmVjZWl2ZXJzICs9IFFBYnN0cmFjdERlY2xhcmF0 aXZlRGF0YTo6cmVjZWl2ZXJzKGQtPmRlY2xhcmF0aXZlRGF0YSwgdGhpcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFs X2luZGV4KTsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2Vy bmVsL3FvYmplY3RfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaAor aW5kZXggMGI4MjdhNTJjYS4uMTNmZmI4ODk5OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29y ZWxpYi9rZXJuZWwvcW9iamVjdF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwv cW9iamVjdF9wLmgKK0BAIC00NDQsNyArNDQ0LDcgQEAgaW5saW5lIHZvaWQgUU9iamVjdFByaXZh dGU6OmNoZWNrRm9ySW5jb21wYXRpYmxlTGlicmFyeVZlcnNpb24oaW50IHZlcnNpb24pIGNvbnMK KyAKKyBpbmxpbmUgYm9vbCBRT2JqZWN0UHJpdmF0ZTo6aXNEZWNsYXJhdGl2ZVNpZ25hbENvbm5l Y3RlZCh1aW50IHNpZ25hbF9pbmRleCkgY29uc3QKKyB7CistICAgIHJldHVybiBkZWNsYXJhdGl2 ZURhdGEgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjppc1NpZ25hbENvbm5lY3RlZAorKyAg ICByZXR1cm4gIWlzRGVsZXRpbmdDaGlsZHJlbiAmJiBkZWNsYXJhdGl2ZURhdGEgJiYgUUFic3Ry YWN0RGVjbGFyYXRpdmVEYXRhOjppc1NpZ25hbENvbm5lY3RlZAorICAgICAgICAgICAgICYmIFFB YnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0ZWQoZGVjbGFyYXRpdmVEYXRh LCBxX2Z1bmMoKSwgc2lnbmFsX2luZGV4KTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9jb3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2Vy bmVsL3F0cmFuc2xhdG9yLmNwcAoraW5kZXggMjgxMmZmYjdlYS4uYmMwMTc3YzVlYyAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3IuY3BwCisrKysgYi9x dGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3F0cmFuc2xhdG9yLmNwcAorQEAgLTkwMiw3ICs5MDIs NyBAQCBzdGF0aWMgUVN0cmluZyBnZXRNZXNzYWdlKGNvbnN0IHVjaGFyICptLCBjb25zdCB1Y2hh ciAqZW5kLCBjb25zdCBjaGFyICpjb250ZXh0LAorICAgICAgICAgICAgIGdvdG8gZW5kOworICAg ICAgICAgY2FzZSBUYWdfVHJhbnNsYXRpb246IHsKKyAgICAgICAgICAgICBpbnQgbGVuID0gcmVh ZDMyKG0pOworLSAgICAgICAgICAgIGlmIChsZW4gJSAxKQorKyAgICAgICAgICAgIGlmIChsZW4g JiAxKQorICAgICAgICAgICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgICAgICAgICAgIG0g Kz0gNDsKKyAgICAgICAgICAgICBpZiAoIW51bWVydXMtLSkgeworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwCitpbmRleCA5ZGUyMmNlZjMzLi5mZjg2 OGEzMjY4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRh dGFiYXNlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFi YXNlLmNwcAorQEAgLTM4OSwyMCArMzg5LDIzIEBAIFFNaW1lVHlwZSBRTWltZURhdGFiYXNlUHJp dmF0ZTo6bWltZVR5cGVGb3JGaWxlTmFtZUFuZERhdGEoY29uc3QgUVN0cmluZyAmZmlsZU5hCisg ICAgICAgICAvLyBEaXNhbWJpZ3VhdGUgY29uZmxpY3RpbmcgZXh0ZW5zaW9ucyAoaWYgbWFnaWMg bWF0Y2hpbmcgZm91bmQgc29tZXRoaW5nKQorICAgICAgICAgaWYgKGNhbmRpZGF0ZUJ5RGF0YS5p c1ZhbGlkKCkgJiYgbWFnaWNBY2N1cmFjeSA+IDApIHsKKyAgICAgICAgICAgICBjb25zdCBRU3Ry aW5nIHNuaWZmZWRNaW1lID0gY2FuZGlkYXRlQnlEYXRhLm5hbWUoKTsKKy0gICAgICAgICAgICAv LyBJZiB0aGUgc25pZmZlZE1pbWUgbWF0Y2hlcyBhIGdsb2IgbWF0Y2gsIHVzZSBpdAorKyAgICAg ICAgICAgIC8vIElmIHRoZSBzbmlmZmVkTWltZSBtYXRjaGVzIGEgaGlnaGVzdC13ZWlnaHQgZ2xv YiBtYXRjaCwgdXNlIGl0CisgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXNCeU5hbWUubV9tYXRj aGluZ01pbWVUeXBlcy5jb250YWlucyhzbmlmZmVkTWltZSkpIHsKKyAgICAgICAgICAgICAgICAg KmFjY3VyYWN5UHRyID0gMTAwOworICAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlQnlE YXRhOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBmb3IgKGNvbnN0IFFTdHJpbmcgJm0g OiBxQXNDb25zdChjYW5kaWRhdGVzQnlOYW1lLm1fbWF0Y2hpbmdNaW1lVHlwZXMpKSB7CisrICAg ICAgICAgICAgZm9yIChjb25zdCBRU3RyaW5nICZtIDogcUFzQ29uc3QoY2FuZGlkYXRlc0J5TmFt ZS5tX2FsbE1hdGNoaW5nTWltZVR5cGVzKSkgeworICAgICAgICAgICAgICAgICBpZiAoaW5oZXJp dHMobSwgc25pZmZlZE1pbWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIG1h Z2ljICsgcGF0dGVybiBwb2ludGluZyB0byB0aGlzLCBzbyBpdCdzIGEgcHJldHR5IGdvb2QgbWF0 Y2gKKyAgICAgICAgICAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IDEwMDsKKyAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBtaW1lVHlwZUZvck5hbWUobSk7CisgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICB9CistICAgICAgICAgICAgKmFjY3VyYWN5UHRyID0gbWFnaWNBY2N1cmFj eTsKKy0gICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlQnlEYXRhOworKyAgICAgICAgICAgIGlm IChjYW5kaWRhdGVzQnlOYW1lLm1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKSB7Cisr ICAgICAgICAgICAgICAgIC8vIE5vIGdsb2IsIHVzZSBtYWdpYworKyAgICAgICAgICAgICAgICAq YWNjdXJhY3lQdHIgPSBtYWdpY0FjY3VyYWN5OworKyAgICAgICAgICAgICAgICByZXR1cm4gY2Fu ZGlkYXRlQnlEYXRhOworKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorIAorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5j cHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBhdHRlcm4uY3BwCitp bmRleCBhODExMTJkMjI3Li5mYThmNGM1NDVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3Jl bGliL21pbWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3Jl bGliL21pbWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcAorQEAgLTgzLDcgKzgzLDEwIEBAIHZv aWQgUU1pbWVHbG9iTWF0Y2hSZXN1bHQ6OmFkZE1hdGNoKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBl LCBpbnQgd2VpZ2h0LCBjb25zdCBRCisgICAgIH0KKyAgICAgaWYgKCFtX21hdGNoaW5nTWltZVR5 cGVzLmNvbnRhaW5zKG1pbWVUeXBlKSkgeworICAgICAgICAgbV9tYXRjaGluZ01pbWVUeXBlcy5h cHBlbmQobWltZVR5cGUpOworLSAgICAgICAgbV9hbGxNYXRjaGluZ01pbWVUeXBlcy5hcHBlbmQo bWltZVR5cGUpOworKyAgICAgICAgaWYgKHJlcGxhY2UpCisrICAgICAgICAgICAgbV9hbGxNYXRj aGluZ01pbWVUeXBlcy5wcmVwZW5kKG1pbWVUeXBlKTsgLy8gaGlnaGVzdC13ZWlnaHQgZmlyc3QK KysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBtX2FsbE1hdGNoaW5nTWltZVR5cGVzLmFwcGVu ZChtaW1lVHlwZSk7CisgICAgICAgICBtX2tub3duU3VmZml4TGVuZ3RoID0ga25vd25TdWZmaXhM ZW5ndGg7CisgICAgIH0KKyB9CitAQCAtOTQsNyArOTcsNyBAQCBRTWltZUdsb2JQYXR0ZXJuOjpQ YXR0ZXJuVHlwZSBRTWltZUdsb2JQYXR0ZXJuOjpkZXRlY3RQYXR0ZXJuVHlwZShjb25zdCBRU3Ry aW5nCisgICAgIGlmICghcGF0dGVybkxlbmd0aCkKKyAgICAgICAgIHJldHVybiBPdGhlclBhdHRl cm47CisgCistICAgIGNvbnN0IGJvb2wgc3RhckNvdW50ID0gcGF0dGVybi5jb3VudChRTGF0aW4x Q2hhcignKicpKSA9PSAxOworKyAgICBjb25zdCBpbnQgc3RhckNvdW50ID0gcGF0dGVybi5jb3Vu dChRTGF0aW4xQ2hhcignKicpKTsKKyAgICAgY29uc3QgYm9vbCBoYXNTcXVhcmVCcmFja2V0ID0g cGF0dGVybi5pbmRleE9mKFFMYXRpbjFDaGFyKCdbJykpICE9IC0xOworICAgICBjb25zdCBib29s IGhhc1F1ZXN0aW9uTWFyayA9IHBhdHRlcm4uaW5kZXhPZihRTGF0aW4xQ2hhcignPycpKSAhPSAt MTsKKyAKK0BAIC0xMDYsMTAgKzEwOSwxMCBAQCBRTWltZUdsb2JQYXR0ZXJuOjpQYXR0ZXJuVHlw ZSBRTWltZUdsb2JQYXR0ZXJuOjpkZXRlY3RQYXR0ZXJuVHlwZShjb25zdCBRU3RyaW5nCisgICAg ICAgICAgICAgLy8gUGF0dGVybnMgbGlrZSAiUkVBRE1FKiIgKHdlbGwgdGhpcyBpcyBjdXJyZW50 bHkgdGhlIG9ubHkgb25lIGxpa2UgdGhhdC4uLikKKyAgICAgICAgICAgICBpZiAocGF0dGVybi5h dChwYXR0ZXJuTGVuZ3RoIC0gMSkgPT0gUUxhdGluMUNoYXIoJyonKSkKKyAgICAgICAgICAgICAg ICAgcmV0dXJuIFByZWZpeFBhdHRlcm47CistICAgICAgICB9CistICAgICAgICAvLyBOYW1lcyB3 aXRob3V0IGFueSB3aWxkY2FyZHMgbGlrZSAiUkVBRE1FIgorLSAgICAgICAgaWYgKHN0YXJDb3Vu dCA9PSAwKQorKyAgICAgICAgfSBlbHNlIGlmIChzdGFyQ291bnQgPT0gMCkgeworKyAgICAgICAg ICAgIC8vIE5hbWVzIHdpdGhvdXQgYW55IHdpbGRjYXJkcyBsaWtlICJSRUFETUUiCisgICAgICAg ICAgICAgcmV0dXJuIExpdGVyYWxQYXR0ZXJuOworKyAgICAgICAgfQorICAgICB9CisgCisgICAg IGlmIChwYXR0ZXJuID09IFFMYXRpbjFTdHJpbmcoIlswLTldWzAtOV1bMC05XS52ZHIiKSkKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3Bw IGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3ZpZGVyLmNwcAoraW5kZXgg MjU4ZGRkZjhjYi4uNDY0MmQwZjJkMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9t aW1ldHlwZXMvcW1pbWVwcm92aWRlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1l dHlwZXMvcW1pbWVwcm92aWRlci5jcHAKK0BAIC0yNDQsMTUgKzI0NCwxOCBAQCB2b2lkIFFNaW1l QmluYXJ5UHJvdmlkZXI6OmFkZEZpbGVOYW1lTWF0Y2hlcyhjb25zdCBRU3RyaW5nICZmaWxlTmFt ZSwgUU1pbWVHbG9iTQorICAgICBjb25zdCBRU3RyaW5nIGxvd2VyRmlsZU5hbWUgPSBmaWxlTmFt ZS50b0xvd2VyKCk7CisgICAgIC8vIENoZWNrIGxpdGVyYWxzIChlLmcuICJNYWtlZmlsZSIpCisg ICAgIG1hdGNoR2xvYkxpc3QocmVzdWx0LCBtX2NhY2hlRmlsZSwgbV9jYWNoZUZpbGUtPmdldFVp bnQzMihQb3NMaXRlcmFsTGlzdE9mZnNldCksIGZpbGVOYW1lKTsKKy0gICAgLy8gQ2hlY2sgY29t cGxleCBnbG9icyAoZS5nLiAiY2FsbGdyaW5kLm91dFswLTldKiIpCistICAgIG1hdGNoR2xvYkxp c3QocmVzdWx0LCBtX2NhY2hlRmlsZSwgbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NHbG9iTGlz dE9mZnNldCksIGZpbGVOYW1lKTsKKyAgICAgLy8gQ2hlY2sgdGhlIHZlcnkgY29tbW9uICoudHh0 IGNhc2VzIHdpdGggdGhlIHN1ZmZpeCB0cmVlCistICAgIGNvbnN0IGludCByZXZlcnNlU3VmZml4 VHJlZU9mZnNldCA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIoUG9zUmV2ZXJzZVN1ZmZpeFRyZWVP ZmZzZXQpOworLSAgICBjb25zdCBpbnQgbnVtUm9vdHMgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMy KHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKy0gICAgY29uc3QgaW50IGZpcnN0Um9vdE9mZnNl dCA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgKyA0KTsK Ky0gICAgbWF0Y2hTdWZmaXhUcmVlKHJlc3VsdCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJz dFJvb3RPZmZzZXQsIGxvd2VyRmlsZU5hbWUsIGxvd2VyRmlsZU5hbWUubGVuZ3RoKCkgLSAxLCBm YWxzZSk7CisrICAgIGlmIChyZXN1bHQubV9tYXRjaGluZ01pbWVUeXBlcy5pc0VtcHR5KCkpIHsK KysgICAgICAgIGNvbnN0IGludCByZXZlcnNlU3VmZml4VHJlZU9mZnNldCA9IG1fY2FjaGVGaWxl LT5nZXRVaW50MzIoUG9zUmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQpOworKyAgICAgICAgY29uc3Qg aW50IG51bVJvb3RzID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9m ZnNldCk7CisrICAgICAgICBjb25zdCBpbnQgZmlyc3RSb290T2Zmc2V0ID0gbV9jYWNoZUZpbGUt PmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCArIDQpOworKyAgICAgICAgbWF0Y2hT dWZmaXhUcmVlKHJlc3VsdCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQs IGxvd2VyRmlsZU5hbWUsIGxvd2VyRmlsZU5hbWUubGVuZ3RoKCkgLSAxLCBmYWxzZSk7CisrICAg ICAgICBpZiAocmVzdWx0Lm1fbWF0Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKQorKyAgICAgICAg ICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RS b290T2Zmc2V0LCBmaWxlTmFtZSwgZmlsZU5hbWUubGVuZ3RoKCkgLSAxLCB0cnVlKTsKKysgICAg fQorKyAgICAvLyBDaGVjayBjb21wbGV4IGdsb2JzIChlLmcuICJjYWxsZ3JpbmQub3V0WzAtOV0q IiBvciAiUkVBRE1FKiIpCisgICAgIGlmIChyZXN1bHQubV9tYXRjaGluZ01pbWVUeXBlcy5pc0Vt cHR5KCkpCistICAgICAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBtX2NhY2hlRmlsZSwgbnVt Um9vdHMsIGZpcnN0Um9vdE9mZnNldCwgZmlsZU5hbWUsIGZpbGVOYW1lLmxlbmd0aCgpIC0gMSwg dHJ1ZSk7CisrICAgICAgICBtYXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNoZUZpbGUsIG1fY2Fj aGVGaWxlLT5nZXRVaW50MzIoUG9zR2xvYkxpc3RPZmZzZXQpLCBmaWxlTmFtZSk7CisgfQorIAor IHZvaWQgUU1pbWVCaW5hcnlQcm92aWRlcjo6bWF0Y2hHbG9iTGlzdChRTWltZUdsb2JNYXRjaFJl c3VsdCAmcmVzdWx0LCBDYWNoZUZpbGUgKmNhY2hlRmlsZSwgaW50IG9mZiwgY29uc3QgUVN0cmlu ZyAmZmlsZU5hbWUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRp b24vcWpzb25wYXJzZXIuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcWpz b25wYXJzZXIuY3BwCitpbmRleCAxN2U2ZjExMWFiLi4yZTQwYjZjOGZiIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcWpzb25wYXJzZXIuY3BwCisrKysgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAKK0BAIC0zNzks MTAgKzM3OSwzMCBAQCBlcnJvcjoKKyAgICAgcmV0dXJuIFFDYm9yVmFsdWUoKTsKKyB9CisgCisr Ly8gV2UgbmVlZCB0byByZXRhaW4gdGhlIF9sYXN0XyB2YWx1ZSBmb3IgYW55IGR1cGxpY2F0ZSBr ZXlzIGFuZCB3ZSBuZWVkIHRvIGRlcmVmIGNvbnRhaW5lcnMuCisrLy8gVGhlcmVmb3JlIHRoZSBt YW51YWwgaW1wbGVtZW50YXRpb24gb2Ygc3RkOjp1bmlxdWUoKS4KKyt0ZW1wbGF0ZTx0eXBlbmFt ZSBJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZSwgdHlwZW5hbWUgQXNzaWduPgorK3N0YXRpYyBJ dGVyYXRvciBjdXN0b21Bc3NpZ25pbmdVbmlxdWVMYXN0KEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRv ciBsYXN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBh cmUgY29tcGFyZSwgQXNzaWduIGFzc2lnbikKKyt7CisrICAgIGZpcnN0ID0gc3RkOjphZGphY2Vu dF9maW5kKGZpcnN0LCBsYXN0LCBjb21wYXJlKTsKKysgICAgaWYgKGZpcnN0ID09IGxhc3QpCisr ICAgICAgICByZXR1cm4gbGFzdDsKKysKKysgICAgSXRlcmF0b3IgcmVzdWx0ID0gZmlyc3Q7Cisr ICAgIHdoaWxlICgrK2ZpcnN0ICE9IGxhc3QpIHsKKysgICAgICAgIGlmICghY29tcGFyZSgqcmVz dWx0LCAqZmlyc3QpKQorKyAgICAgICAgICAgICsrcmVzdWx0OworKyAgICAgICAgaWYgKHJlc3Vs dCAhPSBmaXJzdCkKKysgICAgICAgICAgICBhc3NpZ24oKnJlc3VsdCwgKmZpcnN0KTsKKysgICAg fQorKworKyAgICByZXR1cm4gKytyZXN1bHQ7CisrfQorKworIHN0YXRpYyB2b2lkIHNvcnRDb250 YWluZXIoUUNib3JDb250YWluZXJQcml2YXRlICpjb250YWluZXIpCisgeworICAgICB1c2luZyBG b3J3YXJkID0gUUpzb25Qcml2YXRlOjpLZXlJdGVyYXRvcjsKKy0gICAgdXNpbmcgUmV2ZXJzZSA9 IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxGb3J3YXJkPjsKKyAgICAgdXNpbmcgVmFsdWUgPSBGb3J3 YXJkOjp2YWx1ZV90eXBlOworIAorICAgICBhdXRvIGNvbXBhcmUgPSBbY29udGFpbmVyXShjb25z dCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpCitAQCAtNDIwLDE3ICs0NDAsMzEgQEAgc3RhdGlj IHZvaWQgc29ydENvbnRhaW5lcihRQ2JvckNvbnRhaW5lclByaXZhdGUgKmNvbnRhaW5lcikKKyAg ICAgICAgIH0KKyAgICAgfTsKKyAKKy0gICAgc3RkOjpzb3J0KEZvcndhcmQoY29udGFpbmVyLT5l bGVtZW50cy5iZWdpbigpKSwgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmVuZCgpKSwKKy0g ICAgICAgICAgICAgIFsmY29tcGFyZV0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7 IHJldHVybiBjb21wYXJlKGEsIGIpIDwgMDsgfSk7CisrICAgIC8vIFRoZSBlbGVtZW50cycgY29u dGFpbmVycyBhcmUgb3duZWQgYnkgdGhlIG91dGVyIGNvbnRhaW5lciwgbm90IGJ5IHRoZSBlbGVt ZW50cyB0aGVtc2VsdmVzLgorKyAgICBhdXRvIG1vdmUgPSBbXShGb3J3YXJkOjpyZWZlcmVuY2Ug dGFyZ2V0LCBGb3J3YXJkOjpyZWZlcmVuY2Ugc291cmNlKQorKyAgICB7CisrICAgICAgICBRdENi b3I6OkVsZW1lbnQgJnRhcmdldFZhbHVlID0gdGFyZ2V0LnZhbHVlKCk7CisrCisrICAgICAgICAv LyBJZiB0aGUgdGFyZ2V0IGhhcyBhIGNvbnRhaW5lciwgZGVyZWYgaXQgYmVmb3JlIG92ZXJ3cml0 aW5nLCBzbyB0aGF0IHdlIGRvbid0IGxlYWsuCisrICAgICAgICBpZiAodGFyZ2V0VmFsdWUuZmxh Z3MgJiBRdENib3I6OkVsZW1lbnQ6OklzQ29udGFpbmVyKQorKyAgICAgICAgICAgIHRhcmdldFZh bHVlLmNvbnRhaW5lci0+ZGVyZWYoKTsKKysKKysgICAgICAgIC8vIERvIG5vdCBtb3ZlLCBzbyB0 aGF0IHdlIGNhbiBjbGVhciB0aGUgdmFsdWUgYWZ0ZXJ3YXJkcy4KKysgICAgICAgIHRhcmdldCA9 IHNvdXJjZTsKKysKKysgICAgICAgIC8vIENsZWFyIHRoZSBzb3VyY2UgdmFsdWUsIHNvIHRoYXQg d2UgZG9uJ3Qgc3RvcmUgdGhlIHNhbWUgY29udGFpbmVyIHR3aWNlLgorKyAgICAgICAgc291cmNl LnZhbHVlKCkgPSBRdENib3I6OkVsZW1lbnQoKTsKKysgICAgfTsKKysKKysgICAgc3RkOjpzdGFi bGVfc29ydCgKKysgICAgICAgICAgICAgICAgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmJl Z2luKCkpLCBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLAorKyAgICAgICAgICAg ICAgICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeyByZXR1cm4g Y29tcGFyZShhLCBiKSA8IDA7IH0pOworIAorLSAgICAvLyBXZSBuZWVkIHRvIHJldGFpbiB0aGUg X2xhc3RfIHZhbHVlIGZvciBhbnkgZHVwbGljYXRlIGtleXMuIFRoZXJlZm9yZSB0aGUgcmV2ZXJz ZSBkYW5jZSBoZXJlLgorLSAgICBhdXRvIGl0ID0gc3RkOjp1bmlxdWUoUmV2ZXJzZShjb250YWlu ZXItPmVsZW1lbnRzLmVuZCgpKSwgUmV2ZXJzZShjb250YWluZXItPmVsZW1lbnRzLmJlZ2luKCkp LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAmYSwg Y29uc3QgVmFsdWUgJmIpIHsKKy0gICAgICAgIHJldHVybiBjb21wYXJlKGEsIGIpID09IDA7Cist ICAgIH0pLmJhc2UoKS5lbGVtZW50c0l0ZXJhdG9yKCk7CisrICAgIEZvcndhcmQgcmVzdWx0ID0g Y3VzdG9tQXNzaWduaW5nVW5pcXVlTGFzdCgKKysgICAgICAgICAgICAgICAgRm9yd2FyZChjb250 YWluZXItPmVsZW1lbnRzLmJlZ2luKCkpLCAgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmVu ZCgpKSwKKysgICAgICAgICAgICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAmYSwgY29uc3Qg VmFsdWUgJmIpIHsgcmV0dXJuIGNvbXBhcmUoYSwgYikgPT0gMDsgfSwgbW92ZSk7CisgCistICAg IC8vIFRoZSBlcmFzZSBmcm9tIGJlZ2lubmluZyBpcyBleHBlbnNpdmUgYnV0IGhvcGVmdWxseSBy YXJlLgorLSAgICBjb250YWluZXItPmVsZW1lbnRzLmVyYXNlKGNvbnRhaW5lci0+ZWxlbWVudHMu YmVnaW4oKSwgaXQpOworKyAgICBjb250YWluZXItPmVsZW1lbnRzLmVyYXNlKHJlc3VsdC5lbGVt ZW50c0l0ZXJhdG9yKCksIGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpOworIH0KKyAKKyAKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFtLmNw cCBiL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwCitpbmRl eCBiMmY4NDY1NDRkLi43Y2Q0NTdiYTNhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L3NlcmlhbGl6YXRpb24vcXhtbHN0cmVhbS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9z ZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwCitAQCAtOTgwLDcgKzk4MCw3IEBAIGlubGluZSB1 aW50IFFYbWxTdHJlYW1SZWFkZXJQcml2YXRlOjpwZWVrQ2hhcigpCisgYm9vbCBRWG1sU3RyZWFt UmVhZGVyUHJpdmF0ZTo6c2NhblVudGlsKGNvbnN0IGNoYXIgKnN0ciwgc2hvcnQgdG9rZW5Ub0lu amVjdCkKKyB7CisgICAgIGludCBwb3MgPSB0ZXh0QnVmZmVyLnNpemUoKTsKKy0gICAgaW50IG9s ZExpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOworKyAgICBjb25zdCBhdXRvIG9sZExpbmVOdW1iZXIg PSBsaW5lTnVtYmVyOworIAorICAgICB1aW50IGM7CisgICAgIHdoaWxlICgoYyA9IGdldENoYXIo KSkgIT0gU3RyZWFtRU9GKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQv cXN0cmluZy5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcAoraW5kZXgg M2U4OGFiNDg1OS4uOGRlZWFlNDdiYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90 ZXh0L3FzdHJpbmcuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNw cAorQEAgLTEyMzEyLDcgKzEyMzEyLDcgQEAgc3RhdGljIHFzaXpldHlwZSBxTGFzdEluZGV4T2Yo SGF5c3RhY2sgaGF5c3RhY2swLCBxc2l6ZXR5cGUgZnJvbSwKKyAgICAgY29uc3QgYXV0byBuZWVk bGUgPSBuZWVkbGUwLmRhdGEoKTsKKyAgICAgY29uc3QgYXV0byAqZW5kID0gaGF5c3RhY2s7Cisg ICAgIGhheXN0YWNrICs9IGZyb207CistICAgIGNvbnN0IHN0ZDo6c2l6ZV90IHNsX21pbnVzXzEg PSBzbCAtIDE7CisrICAgIGNvbnN0IHN0ZDo6c2l6ZV90IHNsX21pbnVzXzEgPSBzbCA/IHNsIC0g MSA6IDA7CisgICAgIGNvbnN0IGF1dG8gKm4gPSBuZWVkbGUgKyBzbF9taW51c18xOworICAgICBj b25zdCBhdXRvICpoID0gaGF5c3RhY2sgKyBzbF9taW51c18xOworICAgICBzdGQ6OnNpemVfdCBo YXNoTmVlZGxlID0gMCwgaGFzaEhheXN0YWNrID0gMDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0b3JfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rl eHQvcXN0cmluZ2l0ZXJhdG9yX3AuaAoraW5kZXggMjE5NTg5YjZlNC4uMWQwYzY2Y2M3OCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmgKKysr KyBiL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmgKK0BAIC02MSw2 ICs2MSw4IEBAIGNsYXNzIFFTdHJpbmdJdGVyYXRvcgorIHsKKyAgICAgUVN0cmluZzo6Y29uc3Rf aXRlcmF0b3IgaSwgcG9zLCBlOworICAgICBRX1NUQVRJQ19BU1NFUlQoKHN0ZDo6aXNfc2FtZTxR U3RyaW5nOjpjb25zdF9pdGVyYXRvciwgY29uc3QgUUNoYXIgKj46OnZhbHVlKSk7CisrICAgIHN0 YXRpYyBib29sIGxlc3MoY29uc3QgUUNoYXIgKmxocywgY29uc3QgUUNoYXIgKnJocykgbm9leGNl cHQKKysgICAgeyByZXR1cm4gc3RkOjpsZXNzPFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPnt9KGxo cywgcmhzKTsgfQorIHB1YmxpYzoKKyAgICAgZXhwbGljaXQgUVN0cmluZ0l0ZXJhdG9yKFFTdHJp bmdWaWV3IHN0cmluZywgcXNpemV0eXBlIGlkeCA9IDApCisgICAgICAgICA6IGkoc3RyaW5nLmJl Z2luKCkpLAorQEAgLTk1LDcgKzk3LDggQEAgcHVibGljOgorIAorICAgICBpbmxpbmUgdm9pZCBz ZXRQb3NpdGlvbihRU3RyaW5nOjpjb25zdF9pdGVyYXRvciBwb3NpdGlvbikKKyAgICAgeworLSAg ICAgICAgUV9BU1NFUlRfWChpIDw9IHBvc2l0aW9uICYmIHBvc2l0aW9uIDw9IGUsIFFfRlVOQ19J TkZPLCAicG9zaXRpb24gb3V0IG9mIGJvdW5kcyIpOworKyAgICAgICAgUV9BU1NFUlRfWCghbGVz cyhwb3NpdGlvbiwgaSkgJiYgIWxlc3MoZSwgcG9zaXRpb24pLAorKyAgICAgICAgICAgICAgICAg ICBRX0ZVTkNfSU5GTywgInBvc2l0aW9uIG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgIHBvcyA9 IHBvc2l0aW9uOworICAgICB9CisgCitAQCAtMTAzLDcgKzEwNiw3IEBAIHB1YmxpYzoKKyAKKyAg ICAgaW5saW5lIGJvb2wgaGFzTmV4dCgpIGNvbnN0CisgICAgIHsKKy0gICAgICAgIHJldHVybiBw b3MgPCBlOworKyAgICAgICAgcmV0dXJuIGxlc3MocG9zLCBlKTsKKyAgICAgfQorIAorICAgICBp bmxpbmUgdm9pZCBhZHZhbmNlKCkKK0BAIC0xMjAsMTYgKzEyMywyMCBAQCBwdWJsaWM6CisgICAg IHsKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzTmV4dCgpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9y IGhhc24ndCBhIG5leHQgaXRlbSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoKHBvcysr KS0+aXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkoKHBvcysrKS0+ aXNIaWdoU3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzTmV4dCgpICYm IHBvcy0+aXNMb3dTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgKytwb3M7CisrICAgICAgICB9 CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHVpbnQgcGVla05leHRVbmNoZWNrZWQoKSBjb25zdAor ICAgICB7CisgICAgICAgICBRX0FTU0VSVF9YKGhhc05leHQoKSwgUV9GVU5DX0lORk8sICJpdGVy YXRvciBoYXNuJ3QgYSBuZXh0IGl0ZW0iKTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKHBv cy0+aXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9zLT5pc0hp Z2hTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVChsZXNzKHBvcyArIDEsIGUp ICYmIHBvc1sxXS5pc0xvd1N1cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICByZXR1cm4gUUNoYXI6 OnN1cnJvZ2F0ZVRvVWNzNChwb3NbMF0sIHBvc1sxXSk7CisrICAgICAgICB9CisgCisgICAgICAg ICByZXR1cm4gcG9zLT51bmljb2RlKCk7CisgICAgIH0KK0BAIC0xNTUsOCArMTYyLDEwIEBAIHB1 YmxpYzoKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzTmV4dCgpLCBRX0ZVTkNfSU5GTywgIml0ZXJh dG9yIGhhc24ndCBhIG5leHQgaXRlbSIpOworIAorICAgICAgICAgY29uc3QgUUNoYXIgY3VyID0g KnBvcysrOworLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoY3VyLmlzSGlnaFN1cnJvZ2F0ZSgpKSkK KysgICAgICAgIGlmIChRX1VOTElLRUxZKGN1ci5pc0hpZ2hTdXJyb2dhdGUoKSkpIHsKKysgICAg ICAgICAgICBRX0FTU0VSVChoYXNOZXh0KCkgJiYgcG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKTsKKyAg ICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNChjdXIsICpwb3MrKyk7Cisr ICAgICAgICB9CisgICAgICAgICByZXR1cm4gY3VyLnVuaWNvZGUoKTsKKyAgICAgfQorIAorQEAg LTE2Niw3ICsxNzUsNyBAQCBwdWJsaWM6CisgCisgICAgICAgICBjb25zdCBRQ2hhciB1YyA9ICpw b3MrKzsKKyAgICAgICAgIGlmIChRX1VOTElLRUxZKHVjLmlzU3Vycm9nYXRlKCkpKSB7CistICAg ICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzSGlnaFN1cnJvZ2F0ZSgpICYmIHBvcyA8IGUgJiYg cG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgICAgICBpZiAoUV9MSUtFTFkodWMuaXNI aWdoU3Vycm9nYXRlKCkgJiYgaGFzTmV4dCgpICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUoKSkpCisg ICAgICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KHVjLCAqcG9zKysp OworICAgICAgICAgICAgIHJldHVybiBpbnZhbGlkQXM7CisgICAgICAgICB9CitAQCAtMTc4LDcg KzE4Nyw3IEBAIHB1YmxpYzoKKyAKKyAgICAgaW5saW5lIGJvb2wgaGFzUHJldmlvdXMoKSBjb25z dAorICAgICB7CistICAgICAgICByZXR1cm4gcG9zID4gaTsKKysgICAgICAgIHJldHVybiBsZXNz KGksIHBvcyk7CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHZvaWQgcmVjZWRlKCkKK0BAIC0xOTYs MTYgKzIwNSwyMCBAQCBwdWJsaWM6CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzUHJl dmlvdXMoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBwcmV2aW91cyBpdGVtIik7 CisgCistICAgICAgICBpZiAoUV9VTkxJS0VMWSgoLS1wb3MpLT5pc0xvd1N1cnJvZ2F0ZSgpKSkK KysgICAgICAgIGlmIChRX1VOTElLRUxZKCgtLXBvcyktPmlzTG93U3Vycm9nYXRlKCkpKSB7Cisr ICAgICAgICAgICAgUV9BU1NFUlQoaGFzUHJldmlvdXMoKSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJv Z2F0ZSgpKTsKKyAgICAgICAgICAgICAtLXBvczsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAg ICBpbmxpbmUgdWludCBwZWVrUHJldmlvdXNVbmNoZWNrZWQoKSBjb25zdAorICAgICB7CisgICAg ICAgICBRX0FTU0VSVF9YKGhhc1ByZXZpb3VzKCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFz bid0IGEgcHJldmlvdXMgaXRlbSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9zWy0x XS5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKHBvc1stMV0uaXNM b3dTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVChsZXNzKGkgKyAxLCBwb3Mp ICYmIHBvc1stMl0uaXNIaWdoU3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIHJldHVybiBRQ2hh cjo6c3Vycm9nYXRlVG9VY3M0KHBvc1stMl0sIHBvc1stMV0pOworKyAgICAgICAgfQorICAgICAg ICAgcmV0dXJuIHBvc1stMV0udW5pY29kZSgpOworICAgICB9CisgCitAQCAtMjMwLDggKzI0Mywx MCBAQCBwdWJsaWM6CisgICAgICAgICBRX0FTU0VSVF9YKGhhc1ByZXZpb3VzKCksIFFfRlVOQ19J TkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgcHJldmlvdXMgaXRlbSIpOworIAorICAgICAgICAgY29u c3QgUUNoYXIgY3VyID0gKi0tcG9zOworLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoY3VyLmlzTG93 U3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkoY3VyLmlzTG93U3Vycm9nYXRl KCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzUHJldmlvdXMoKSAmJiBwb3NbLTFdLmlz SGlnaFN1cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRv VWNzNCgqLS1wb3MsIGN1cik7CisrICAgICAgICB9CisgICAgICAgICByZXR1cm4gY3VyLnVuaWNv ZGUoKTsKKyAgICAgfQorIAorQEAgLTI0MSw3ICsyNTYsNyBAQCBwdWJsaWM6CisgCisgICAgICAg ICBjb25zdCBRQ2hhciB1YyA9ICotLXBvczsKKyAgICAgICAgIGlmIChRX1VOTElLRUxZKHVjLmlz U3Vycm9nYXRlKCkpKSB7CistICAgICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzTG93U3Vycm9n YXRlKCkgJiYgcG9zID4gaSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAgICAg ICAgICBpZiAoUV9MSUtFTFkodWMuaXNMb3dTdXJyb2dhdGUoKSAmJiBoYXNQcmV2aW91cygpICYm IHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpKQorICAgICAgICAgICAgICAgICByZXR1cm4gUUNo YXI6OnN1cnJvZ2F0ZVRvVWNzNCgqLS1wb3MsIHVjKTsKKyAgICAgICAgICAgICByZXR1cm4gaW52 YWxpZEFzOworICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJl YWQvcWZ1dGV4X3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcWZ1dGV4X3AuaAoraW5k ZXggZjI4N2I3NTJkNy4uZTI5NDUzNzc4NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxp Yi90aHJlYWQvcWZ1dGV4X3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0 ZXhfcC5oCitAQCAtNTIsNiArNTIsNyBAQAorIC8vCisgCisgI2luY2x1ZGUgPHFnbG9iYWwuaD4K KysjaW5jbHVkZSA8UXRDb3JlL3F0c2FuX2ltcGwuaD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UK KyAKK0BAIC0xMDYsMTYgKzEwNywxMyBAQCBuYW1lc3BhY2UgUXRMaW51eEZ1dGV4IHsKKyAgICAg aW5saW5lIGludCBfcV9mdXRleChpbnQgKmFkZHIsIGludCBvcCwgaW50IHZhbCwgcXVpbnRwdHIg dmFsMiA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICphZGRyMiA9IG51bGxwdHIs IGludCB2YWwzID0gMCkgbm9leGNlcHQKKyAgICAgeworLSAgICAgICAgLy8gQSBmdXRleCBjYWxs IGVuc3VyZXMgdG90YWwgb3JkZXJpbmcgb24gdGhlIGZ1dGV4IHdvcmRzCistICAgICAgICAvLyAo aW4gZWl0aGVyIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgY2FsbCkuIEluc3RydWN0IFRTQU4g YWNjb3JkaW5nbHksCistICAgICAgICAvLyBhcyBUU0FOIGRvZXMgbm90IHVuZGVyc3RhbmQgdGhl IGZ1dGV4KDIpIHN5c2NhbGwuCistICAgICAgICBfcV90c2FuX3JlbGVhc2UoYWRkciwgYWRkcjIp OworKyAgICAgICAgUXRUc2FuOjpmdXRleFJlbGVhc2UoYWRkciwgYWRkcjIpOworIAorICAgICAg ICAgLy8gd2UgdXNlIF9fTlJfZnV0ZXggYmVjYXVzZSBzb21lIGxpYmNzIChsaWtlIEFuZHJvaWQn cyBiaW9uaWMpIGRvbid0CisgICAgICAgICAvLyBwcm92aWRlIFNZU19mdXRleCBldGMuCisgICAg ICAgICBpbnQgcmVzdWx0ID0gc3lzY2FsbChfX05SX2Z1dGV4LCBhZGRyLCBvcCB8IEZVVEVYX1BS SVZBVEVfRkxBRywgdmFsLCB2YWwyLCBhZGRyMiwgdmFsMyk7CisgCistICAgICAgICBfcV90c2Fu X2FjcXVpcmUoYWRkciwgYWRkcjIpOworKyAgICAgICAgUXRUc2FuOjpmdXRleEFjcXVpcmUoYWRk ciwgYWRkcjIpOworIAorICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgfQorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmNwcCBiL3F0YmFzZS9zcmMvY29y ZWxpYi90aHJlYWQvcW11dGV4LmNwcAoraW5kZXggMzEwZDFjYjE0Zi4uNzA5NzEyMmQ4ZSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmNwcAorKysrIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguY3BwCitAQCAtMTUyLDYgKzE1Miw3IEBAIHB1 YmxpYzoKKyAKKyAvKiEKKyAgICAgXGVudW0gUU11dGV4OjpSZWN1cnNpb25Nb2RlCisrICAgIFxv YnNvbGV0ZSBVc2UgUVJlY3Vyc2l2ZU11dGV4IHRvIGNyZWF0ZSBhIHJlY3Vyc2l2ZSBtdXRleC4K KyAKKyAgICAgXHZhbHVlIFJlY3Vyc2l2ZSAgSW4gdGhpcyBtb2RlLCBhIHRocmVhZCBjYW4gbG9j ayB0aGUgc2FtZSBtdXRleAorICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSB0aW1lcyBh bmQgdGhlIG11dGV4IHdvbid0IGJlIHVubG9ja2VkCitAQCAtMTczLDYgKzE3NCw3IEBAIHB1Ymxp YzoKKyAKKyAvKiEKKyAgICAgQ29uc3RydWN0cyBhIG5ldyBtdXRleC4gVGhlIG11dGV4IGlzIGNy ZWF0ZWQgaW4gYW4gdW5sb2NrZWQgc3RhdGUuCisrICAgIFxvYnNvbGV0ZSBVc2UgUVJlY3Vyc2l2 ZU11dGV4IHRvIGNyZWF0ZSBhIHJlY3Vyc2l2ZSBtdXRleC4KKyAKKyAgICAgSWYgXGEgbW9kZSBp cyBRTXV0ZXg6OlJlY3Vyc2l2ZSwgYSB0aHJlYWQgY2FuIGxvY2sgdGhlIHNhbWUgbXV0ZXgKKyAg ICAgbXVsdGlwbGUgdGltZXMgYW5kIHRoZSBtdXRleCB3b24ndCBiZSB1bmxvY2tlZCB1bnRpbCBh CitAQCAtMTk3LDcgKzE5OSw3IEBAIFFNdXRleDo6UU11dGV4KFJlY3Vyc2lvbk1vZGUgbW9kZSkK KyBRTXV0ZXg6On5RTXV0ZXgoKQorIHsKKyAgICAgUU11dGV4RGF0YSAqZCA9IGRfcHRyLmxvYWRS ZWxheGVkKCk7CistICAgIGlmIChpc1JlY3Vyc2l2ZSgpKSB7CisrICAgIGlmIChRQmFzaWNNdXRl eDo6aXNSZWN1cnNpdmUoKSkgeworICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFFSZWN1cnNp dmVNdXRleFByaXZhdGUgKj4oZCk7CisgICAgIH0gZWxzZSBpZiAoZCkgeworICNpZm5kZWYgUVRf TElOVVhfRlVURVgKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRl eC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguaAoraW5kZXggNzNjOWUwMDY2 My4uMWJhZTU3M2EwMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11 dGV4LmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmgKK0BAIC00Miw2 ICs0Miw3IEBACisgCisgI2luY2x1ZGUgPFF0Q29yZS9xZ2xvYmFsLmg+CisgI2luY2x1ZGUgPFF0 Q29yZS9xYXRvbWljLmg+CisrI2luY2x1ZGUgPFF0Q29yZS9xdHNhbl9pbXBsLmg+CisgI2luY2x1 ZGUgPG5ldz4KKyAKKyAjaWYgX19oYXNfaW5jbHVkZSg8Y2hyb25vPikKK0BAIC03NywxOSArNzgs MzcgQEAgcHVibGljOgorIAorICAgICAvLyBCYXNpY0xvY2thYmxlIGNvbmNlcHQKKyAgICAgaW5s aW5lIHZvaWQgbG9jaygpIFFUX01VVEVYX0xPQ0tfTk9FWENFUFQgeworKyAgICAgICAgUXRUc2Fu OjptdXRleFByZUxvY2sodGhpcywgMHUpOworKworICAgICAgICAgaWYgKCFmYXN0VHJ5TG9jaygp KQorICAgICAgICAgICAgIGxvY2tJbnRlcm5hbCgpOworKworKyAgICAgICAgUXRUc2FuOjptdXRl eFBvc3RMb2NrKHRoaXMsIDB1LCAwKTsKKyAgICAgfQorIAorICAgICAvLyBCYXNpY0xvY2thYmxl IGNvbmNlcHQKKyAgICAgaW5saW5lIHZvaWQgdW5sb2NrKCkgbm9leGNlcHQgeworICAgICAgICAg UV9BU1NFUlQoZF9wdHIubG9hZFJlbGF4ZWQoKSk7IC8vbXV0ZXggbXVzdCBiZSBsb2NrZWQKKysK KysgICAgICAgIFF0VHNhbjo6bXV0ZXhQcmVVbmxvY2sodGhpcywgMHUpOworKworICAgICAgICAg aWYgKCFmYXN0VHJ5VW5sb2NrKCkpCisgICAgICAgICAgICAgdW5sb2NrSW50ZXJuYWwoKTsKKysK KysgICAgICAgIFF0VHNhbjo6bXV0ZXhQb3N0VW5sb2NrKHRoaXMsIDB1KTsKKyAgICAgfQorIAor ICAgICBib29sIHRyeUxvY2soKSBub2V4Y2VwdCB7CistICAgICAgICByZXR1cm4gZmFzdFRyeUxv Y2soKTsKKysgICAgICAgIHVuc2lnbmVkIHRzYW5GbGFncyA9IFF0VHNhbjo6VHJ5TG9jazsKKysg ICAgICAgIFF0VHNhbjo6bXV0ZXhQcmVMb2NrKHRoaXMsIHRzYW5GbGFncyk7CisrCisrICAgICAg ICBjb25zdCBib29sIHN1Y2Nlc3MgPSBmYXN0VHJ5TG9jaygpOworKworKyAgICAgICAgaWYgKCFz dWNjZXNzKQorKyAgICAgICAgICAgIHRzYW5GbGFncyB8PSBRdFRzYW46OlRyeUxvY2tGYWlsZWQ7 CisrICAgICAgICBRdFRzYW46Om11dGV4UG9zdExvY2sodGhpcywgdHNhbkZsYWdzLCAwKTsKKysK KysgICAgICAgIHJldHVybiBzdWNjZXNzOworICAgICB9CisgCisgICAgIC8vIExvY2thYmxlIGNv bmNlcHQKK0BAIC0xMzQsOCArMTUzLDE2IEBAIHB1YmxpYzoKKyAjZWxzZQorICAgICBRTXV0ZXgo KSB7IGRfcHRyLnN0b3JlUmVsYXhlZChudWxscHRyKTsgfQorICNlbmRpZgorKyNpZiBRVF9ERVBS RUNBVEVEX1NJTkNFKDUsMTUpCisgICAgIGVudW0gUmVjdXJzaW9uTW9kZSB7IE5vblJlY3Vyc2l2 ZSwgUmVjdXJzaXZlIH07CisrICAgIFFUX0RFUFJFQ0FURURfVkVSU0lPTl9YKDUsIDE1LCAiVXNl IFFSZWN1cnNpdmVNdXRleCBpbnN0ZWFkIG9mIGEgcmVjdXJzaXZlIFFNdXRleCIpCisgICAgIGV4 cGxpY2l0IFFNdXRleChSZWN1cnNpb25Nb2RlIG1vZGUpOworKworKyAgICBRVF9ERVBSRUNBVEVE X1ZFUlNJT05fWCg1LCAxNSwgIlVzZSBRUmVjdXJzaXZlTXV0ZXggaW5zdGVhZCBvZiBhIHJlY3Vy c2l2ZSBRTXV0ZXgiKQorKyAgICBib29sIGlzUmVjdXJzaXZlKCkgY29uc3Qgbm9leGNlcHQKKysg ICAgeyByZXR1cm4gUUJhc2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCk7IH0KKysjZW5kaWYKKysKKyAg ICAgflFNdXRleCgpOworIAorICAgICAvLyBCYXNpY0xvY2thYmxlIGNvbmNlcHQKK0BAIC0xNjYs OSArMTkzLDYgQEAgcHVibGljOgorICAgICB9CisgI2VuZGlmCisgCistICAgIGJvb2wgaXNSZWN1 cnNpdmUoKSBjb25zdCBub2V4Y2VwdAorLSAgICB7IHJldHVybiBRQmFzaWNNdXRleDo6aXNSZWN1 cnNpdmUoKTsgfQorLQorIHByaXZhdGU6CisgICAgIFFfRElTQUJMRV9DT1BZKFFNdXRleCkKKyAg ICAgZnJpZW5kIGNsYXNzIFFNdXRleExvY2tlcjsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJl YWQvcXJlYWR3cml0ZWxvY2suY3BwCitpbmRleCA4YzI4NTA3ZDVhLi45ZGQ4NTAzMTE2IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5jcHAKKysr KyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJlYWR3cml0ZWxvY2suY3BwCitAQCAtMTU1 LDcgKzE1NSw3IEBAIFFSZWFkV3JpdGVMb2NrOjpRUmVhZFdyaXRlTG9jayhSZWN1cnNpb25Nb2Rl IHJlY3Vyc2lvbk1vZGUpCisgKi8KKyBRUmVhZFdyaXRlTG9jazo6flFSZWFkV3JpdGVMb2NrKCkK KyB7CistICAgIGF1dG8gZCA9IGRfcHRyLmxvYWRSZWxheGVkKCk7CisrICAgIGF1dG8gZCA9IGRf cHRyLmxvYWRBY3F1aXJlKCk7CisgICAgIGlmIChpc1VuY29udGVuZGVkTG9ja2VkKGQpKSB7Cisg ICAgICAgICBxV2FybmluZygiUVJlYWRXcml0ZUxvY2s6IGRlc3Ryb3lpbmcgbG9ja2VkIFFSZWFk V3JpdGVMb2NrIik7CisgICAgICAgICByZXR1cm47CitAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQg UVJlYWRXcml0ZUxvY2s6OnVubG9jaygpCisgLyohIFxpbnRlcm5hbCAgSGVscGVyIGZvciBRV2Fp dENvbmRpdGlvbjo6d2FpdCAqLworIFFSZWFkV3JpdGVMb2NrOjpTdGF0ZUZvcldhaXRDb25kaXRp b24gUVJlYWRXcml0ZUxvY2s6OnN0YXRlRm9yV2FpdENvbmRpdGlvbigpIGNvbnN0CisgeworLSAg ICBRUmVhZFdyaXRlTG9ja1ByaXZhdGUgKmQgPSBkX3B0ci5sb2FkUmVsYXhlZCgpOworKyAgICBR UmVhZFdyaXRlTG9ja1ByaXZhdGUgKmQgPSBkX3B0ci5sb2FkQWNxdWlyZSgpOworICAgICBzd2l0 Y2ggKHF1aW50cHRyKGQpICYgU3RhdGVNYXNrKSB7CisgICAgIGNhc2UgU3RhdGVMb2NrZWRGb3JS ZWFkOiByZXR1cm4gTG9ja2VkRm9yUmVhZDsKKyAgICAgY2FzZSBTdGF0ZUxvY2tlZEZvcldyaXRl OiByZXR1cm4gTG9ja2VkRm9yV3JpdGU7CitAQCAtNDUzLDYgKzQ1Myw3IEBAIFFSZWFkV3JpdGVM b2NrOjpTdGF0ZUZvcldhaXRDb25kaXRpb24gUVJlYWRXcml0ZUxvY2s6OnN0YXRlRm9yV2FpdENv bmRpdGlvbigpIGNvCisgCisgICAgIGlmICghZCkKKyAgICAgICAgIHJldHVybiBVbmxvY2tlZDsK KysgICAgY29uc3QgYXV0byBsb2NrID0gcXRfc2NvcGVkX2xvY2soZC0+bXV0ZXgpOworICAgICBp ZiAoZC0+d3JpdGVyQ291bnQgPiAxKQorICAgICAgICAgcmV0dXJuIFJlY3Vyc2l2ZWx5TG9ja2Vk OworICAgICBlbHNlIGlmIChkLT53cml0ZXJDb3VudCA9PSAxKQorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv dGhyZWFkL3FzZW1hcGhvcmUuY3BwCitpbmRleCAxZDAxZmMxYjI4Li4zZWNkZWUzNzQ3IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNwcAorKysrIGIv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNwcAorQEAgLTM1NCw3ICszNTQs MTIgQEAgdm9pZCBRU2VtYXBob3JlOjpyZWxlYXNlKGludCBuKQorICAgICAgICAgcXVpbnRwdHIg bm4gPSB1bnNpZ25lZChuKTsKKyAgICAgICAgIGlmIChmdXRleEhhc1dhaXRlckNvdW50KQorICAg ICAgICAgICAgIG5uIHw9IHF1aW50NjQobm4pIDw8IDMyOyAgICAvLyB0b2tlbiBjb3VudCByZXBs aWNhdGVkIGluIGhpZ2ggd29yZAorLSAgICAgICAgcXVpbnRwdHIgcHJldlZhbHVlID0gdS5mZXRj aEFuZEFkZFJlbGVhc2Uobm4pOworKyAgICAgICAgcXVpbnRwdHIgcHJldlZhbHVlID0gdS5sb2Fk UmVsYXhlZCgpOworKyAgICAgICAgcXVpbnRwdHIgbmV3VmFsdWU7CisrICAgICAgICBkbyB7IC8v IGxvb3AganVzdCB0byBlbnN1cmUgdGhlIG9wZXJhdGlvbnMgYXJlIGRvbmUgYXRvbWljYWxseQor KyAgICAgICAgICAgIG5ld1ZhbHVlID0gcHJldlZhbHVlICsgbm47CisrICAgICAgICAgICAgbmV3 VmFsdWUgJj0gKGZ1dGV4TmVlZHNXYWtlQWxsQml0IC0gMSk7CisrICAgICAgICB9IHdoaWxlICgh dS50ZXN0QW5kU2V0UmVsZWFzZShwcmV2VmFsdWUsIG5ld1ZhbHVlLCBwcmV2VmFsdWUpKTsKKyAg ICAgICAgIGlmIChmdXRleE5lZWRzV2FrZShwcmV2VmFsdWUpKSB7CisgI2lmZGVmIEZVVEVYX09Q CisgICAgICAgICAgICAgaWYgKGZ1dGV4SGFzV2FpdGVyQ291bnQpIHsKK0BAIC0zNzYsNyArMzgx LDYgQEAgdm9pZCBRU2VtYXBob3JlOjpyZWxlYXNlKGludCBuKQorICAgICAgICAgICAgICAgICBx dWludDMyIG9wYXJnID0gMDsKKyAgICAgICAgICAgICAgICAgcXVpbnQzMiBjbXAgPSBGVVRFWF9P UF9DTVBfTkU7CisgICAgICAgICAgICAgICAgIHF1aW50MzIgY21wYXJnID0gMDsKKy0gICAgICAg ICAgICAgICAgdS5mZXRjaEFuZEFuZFJlbGVhc2UoZnV0ZXhOZWVkc1dha2VBbGxCaXQgLSAxKTsK KyAgICAgICAgICAgICAgICAgZnV0ZXhXYWtlT3AoKmZ1dGV4TG93MzIoJnUpLCBuLCBJTlRfTUFY LCAqZnV0ZXhIaWdoMzIoJnUpLCBGVVRFWF9PUChvcCwgb3BhcmcsIGNtcCwgY21wYXJnKSk7Cisg ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICB9CitAQCAtMzg4LDcgKzM5Miw2 IEBAIHZvaWQgUVNlbWFwaG9yZTo6cmVsZWFzZShpbnQgbikKKyAgICAgICAgICAgICAvLyAgICBp dHMgYWNxdWlzaXRpb24gYW55d2F5LCBzbyBpdCBoYXMgdG8gd2FpdDsKKyAgICAgICAgICAgICAv LyAyKSBpdCBkaWQgbm90IHNlZSB0aGUgbmV3IGNvdW50ZXIgdmFsdWUsIGluIHdoaWNoIGNhc2Ug aXRzCisgICAgICAgICAgICAgLy8gICAgZnV0ZXhXYWl0IHdpbGwgZmFpbC4KKy0gICAgICAgICAg ICB1LmZldGNoQW5kQW5kUmVsZWFzZShmdXRleE5lZWRzV2FrZUFsbEJpdCAtIDEpOworICAgICAg ICAgICAgIGlmIChmdXRleEhhc1dhaXRlckNvdW50KSB7CisgICAgICAgICAgICAgICAgIGZ1dGV4 V2FrZUFsbCgqZnV0ZXhMb3czMigmdSkpOworICAgICAgICAgICAgICAgICBmdXRleFdha2VBbGwo KmZ1dGV4SGlnaDMyKCZ1KSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xdGhyZWFkX3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmgKK2lu ZGV4IGIyZDE2MjhlNmUuLmYzMmY2ZjA0NjAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3F0aHJlYWRfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0 aHJlYWRfcC5oCitAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKKyAgICAgaW50IHJldHVybkNv ZGU7CisgCisgICAgIHVpbnQgc3RhY2tTaXplOworLSAgICBRVGhyZWFkOjpQcmlvcml0eSBwcmlv cml0eTsKKysgICAgc3RkOjp1bmRlcmx5aW5nX3R5cGU8UVRocmVhZDo6UHJpb3JpdHk+Ojp0eXBl IHByaW9yaXR5OworIAorICAgICBzdGF0aWMgUVRocmVhZCAqdGhyZWFkRm9ySWQoaW50IGlkKTsK KyAKK0BAIC0yMTMsNiArMjEzLDEzIEBAIHB1YmxpYzoKKyAgICAgICAgICAgICBRQ29yZUFwcGxp Y2F0aW9uOjppbnN0YW5jZSgpLT5wb3N0RXZlbnQocV9wdHIsIG5ldyBRRXZlbnQoUUV2ZW50OjpR dWl0KSk7CisgICAgICAgICB9CisgICAgIH0KKysKKysjaWZuZGVmIFFfT1NfSU5URUdSSVRZCisr cHJpdmF0ZToKKysgICAgLy8gVXNlZCBpbiBRVGhyZWFkKFByaXZhdGUpOjpzdGFydCB0byBhdm9p ZCByYWN5IGFjY2VzcyB0byBRT2JqZWN0OjpvYmplY3ROYW1lLAorKyAgICAvLyB1bnNldCBhZnRl cndhcmRzLiBPbiBJTlRFR1JJVFkgd2Ugc2V0IHRoZSB0aHJlYWQgbmFtZSBiZWZvcmUgc3RhcnRp bmcgaXQuCisrICAgIFFTdHJpbmcgb2JqZWN0TmFtZTsKKysjZW5kaWYKKyB9OworIAorICNlbHNl IC8vIFFUX0NPTkZJRyh0aHJlYWQpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xdGhyZWFkX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFk X3VuaXguY3BwCitpbmRleCA1NmE4ZTBhMDM4Li42MTAxMTdhNjQwIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfdW5peC5jcHAKK0BAIC0xNjksOCArMTY5LDcgQEAgc3Rh dGljIHZvaWQgc2V0X3RocmVhZF9kYXRhKFFUaHJlYWREYXRhICpkYXRhKQorIAorIHN0YXRpYyB2 b2lkIGNsZWFyX3RocmVhZF9kYXRhKCkKKyB7CistICAgIGN1cnJlbnRUaHJlYWREYXRhID0gbnVs bHB0cjsKKy0gICAgcHRocmVhZF9zZXRzcGVjaWZpYyhjdXJyZW50X3RocmVhZF9kYXRhX2tleSwg bnVsbHB0cik7CisrICAgIHNldF90aHJlYWRfZGF0YShudWxscHRyKTsKKyB9CisgCisgdGVtcGxh dGUgPHR5cGVuYW1lIFQ+CitAQCAtMjk2LDcgKzI5NSw3IEBAIHZvaWQgKlFUaHJlYWRQcml2YXRl OjpzdGFydCh2b2lkICphcmcpCisgICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmdGhy LT5kX2Z1bmMoKS0+bXV0ZXgpOworIAorICAgICAgICAgICAgIC8vIGRvIHdlIG5lZWQgdG8gcmVz ZXQgdGhlIHRocmVhZCBwcmlvcml0eT8KKy0gICAgICAgICAgICBpZiAoaW50KHRoci0+ZF9mdW5j KCktPnByaW9yaXR5KSAmIFRocmVhZFByaW9yaXR5UmVzZXRGbGFnKSB7CisrICAgICAgICAgICAg aWYgKHRoci0+ZF9mdW5jKCktPnByaW9yaXR5ICYgVGhyZWFkUHJpb3JpdHlSZXNldEZsYWcpIHsK KyAgICAgICAgICAgICAgICAgdGhyLT5kX2Z1bmMoKS0+c2V0UHJpb3JpdHkoUVRocmVhZDo6UHJp b3JpdHkodGhyLT5kX2Z1bmMoKS0+cHJpb3JpdHkgJiB+VGhyZWFkUHJpb3JpdHlSZXNldEZsYWcp KTsKKyAgICAgICAgICAgICB9CisgCitAQCAtMzE2LDEwICszMTUsMTAgQEAgdm9pZCAqUVRocmVh ZFByaXZhdGU6OnN0YXJ0KHZvaWQgKmFyZykKKyAgICAgICAgICAgICAvLyBTZXRzIHRoZSBuYW1l IG9mIHRoZSBjdXJyZW50IHRocmVhZC4gV2UgY2FuIG9ubHkgZG8gdGhpcworICAgICAgICAgICAg IC8vIHdoZW4gdGhlIHRocmVhZCBpcyBzdGFydGluZywgYXMgd2UgZG9uJ3QgaGF2ZSBhIGNyb3Nz CisgICAgICAgICAgICAgLy8gcGxhdGZvcm0gd2F5IG9mIHNldHRpbmcgdGhlIG5hbWUgb2YgYW4g YXJiaXRyYXJ5IHRocmVhZC4KKy0gICAgICAgICAgICBpZiAoUV9MSUtFTFkodGhyLT5vYmplY3RO YW1lKCkuaXNFbXB0eSgpKSkKKysgICAgICAgICAgICBpZiAoUV9MSUtFTFkodGhyLT5kX2Z1bmMo KS0+b2JqZWN0TmFtZS5pc0VtcHR5KCkpKQorICAgICAgICAgICAgICAgICBzZXRDdXJyZW50VGhy ZWFkTmFtZSh0aHItPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkpOworICAgICAgICAgICAgIGVs c2UKKy0gICAgICAgICAgICAgICAgc2V0Q3VycmVudFRocmVhZE5hbWUodGhyLT5vYmplY3ROYW1l KCkudG9Mb2NhbDhCaXQoKSk7CisrICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUaHJlYWROYW1l KHN0ZDo6ZXhjaGFuZ2UodGhyLT5kX2Z1bmMoKS0+b2JqZWN0TmFtZSwge30pLnRvTG9jYWw4Qml0 KCkpOworICAgICAgICAgfQorICNlbmRpZgorIAorQEAgLTY3MSw3ICs2NzAsNyBAQCB2b2lkIFFU aHJlYWQ6OnN0YXJ0KFByaW9yaXR5IHByaW9yaXR5KQorICAgICAgICAgICAgICAgICAvLyBjb3Vs ZCBub3Qgc2V0IHNjaGVkdWxpbmcgaGludHMsIGZhbGxiYWNrIHRvIGluaGVyaXRpbmcgdGhlbQor ICAgICAgICAgICAgICAgICAvLyB3ZSdsbCB0cnkgYWdhaW4gZnJvbSBpbnNpZGUgdGhlIHRocmVh ZAorICAgICAgICAgICAgICAgICBwdGhyZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkKCZhdHRyLCBQ VEhSRUFEX0lOSEVSSVRfU0NIRUQpOworLSAgICAgICAgICAgICAgICBkLT5wcmlvcml0eSA9IFBy aW9yaXR5KHByaW9yaXR5IHwgVGhyZWFkUHJpb3JpdHlSZXNldEZsYWcpOworKyAgICAgICAgICAg ICAgICBkLT5wcmlvcml0eSA9IHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPFFUaHJl YWQ6OlByaW9yaXR5Pjo6dHlwZT4ocHJpb3JpdHkpIHwgVGhyZWFkUHJpb3JpdHlSZXNldEZsYWc7 CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorQEAgLTcw Miw3ICs3MDEsMTAgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAg ICAgICAgIHB0aHJlYWRfYXR0cl9zZXR0aHJlYWRuYW1lKCZhdHRyLCBtZXRhT2JqZWN0KCktPmNs YXNzTmFtZSgpKTsKKyAgICAgZWxzZQorICAgICAgICAgcHRocmVhZF9hdHRyX3NldHRocmVhZG5h bWUoJmF0dHIsIG9iamVjdE5hbWUoKS50b0xvY2FsOEJpdCgpKTsKKysjZWxzZQorKyAgICBkLT5v YmplY3ROYW1lID0gb2JqZWN0TmFtZSgpOworICNlbmRpZgorKworICAgICBwdGhyZWFkX3QgdGhy ZWFkSWQ7CisgICAgIGludCBjb2RlID0gcHRocmVhZF9jcmVhdGUoJnRocmVhZElkLCAmYXR0ciwg UVRocmVhZFByaXZhdGU6OnN0YXJ0LCB0aGlzKTsKKyAgICAgaWYgKGNvZGUgPT0gRVBFUk0pIHsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcCBi L3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3BwCitpbmRleCBiYzcwZTMx NzhhLi40ZTc2OTcyNDk4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9x dGhyZWFkX3dpbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF93 aW4uY3BwCitAQCAtMzk0LDEwICszOTQsOSBAQCB1bnNpZ25lZCBpbnQgX19zdGRjYWxsIFFUX0VO U1VSRV9TVEFDS19BTElHTkVEX0ZPUl9TU0UgUVRocmVhZFByaXZhdGU6OnN0YXJ0KHZvaQorIAor ICNpZiAhZGVmaW5lZChRVF9OT19ERUJVRykgJiYgZGVmaW5lZChRX0NDX01TVkMpICYmICFkZWZp bmVkKFFfT1NfV0lOUlQpCisgICAgIC8vIHNldHMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgdGhy ZWFkLgorLSAgICBRQnl0ZUFycmF5IG9iamVjdE5hbWUgPSB0aHItPm9iamVjdE5hbWUoKS50b0xv Y2FsOEJpdCgpOworLSAgICBxdF9zZXRfdGhyZWFkX25hbWUoSEFORExFKC0xKSwKKy0gICAgICAg ICAgICAgICAgICAgICAgIG9iamVjdE5hbWUuaXNFbXB0eSgpID8KKy0gICAgICAgICAgICAgICAg ICAgICAgIHRoci0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSA6IG9iamVjdE5hbWUuY29uc3RE YXRhKCkpOworKyAgICBxdF9zZXRfdGhyZWFkX25hbWUoSEFORExFKC0xKSwgdGhyLT5kX2Z1bmMo KS0+b2JqZWN0TmFtZS5pc0VtcHR5KCkKKysgICAgICAgICAgICAgICAgICAgICAgICA/IHRoci0+ bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgIDogc3Rk OjpleGNoYW5nZSh0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLCB7fSkudG9Mb2NhbDhCaXQoKS5j b25zdERhdGEoKSk7CisgI2VuZGlmCisgCisgICAgIGVtaXQgdGhyLT5zdGFydGVkKFFUaHJlYWQ6 OlFQcml2YXRlU2lnbmFsKCkpOworQEAgLTUwMyw2ICs1MDIsNyBAQCB2b2lkIFFUaHJlYWQ6OnN0 YXJ0KFByaW9yaXR5IHByaW9yaXR5KQorICAgICBpZiAoZC0+cnVubmluZykKKyAgICAgICAgIHJl dHVybjsKKyAKKysgICAgZC0+b2JqZWN0TmFtZSA9IG9iamVjdE5hbWUoKTsKKyAgICAgZC0+cnVu bmluZyA9IHRydWU7CisgICAgIGQtPmZpbmlzaGVkID0gZmFsc2U7CisgICAgIGQtPmV4aXRlZCA9 IGZhbHNlOworQEAgLTU0OCw3ICs1NDgsNyBAQCB2b2lkIFFUaHJlYWQ6OnN0YXJ0KFByaW9yaXR5 IHByaW9yaXR5KQorIAorICAgICBpbnQgcHJpbzsKKyAgICAgZC0+cHJpb3JpdHkgPSBwcmlvcml0 eTsKKy0gICAgc3dpdGNoIChkLT5wcmlvcml0eSkgeworKyAgICBzd2l0Y2ggKHByaW9yaXR5KSB7 CisgICAgIGNhc2UgSWRsZVByaW9yaXR5OgorICAgICAgICAgcHJpbyA9IFRIUkVBRF9QUklPUklU WV9JRExFOworICAgICAgICAgYnJlYWs7CitAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgUVRocmVh ZFByaXZhdGU6OnNldFByaW9yaXR5KFFUaHJlYWQ6OlByaW9yaXR5IHRocmVhZFByaW9yaXR5KQor IAorICAgICBpbnQgcHJpbzsKKyAgICAgcHJpb3JpdHkgPSB0aHJlYWRQcmlvcml0eTsKKy0gICAg c3dpdGNoIChwcmlvcml0eSkgeworKyAgICBzd2l0Y2ggKHRocmVhZFByaW9yaXR5KSB7CisgICAg IGNhc2UgUVRocmVhZDo6SWRsZVByaW9yaXR5OgorICAgICAgICAgcHJpbyA9IFRIUkVBRF9QUklP UklUWV9JRExFOworICAgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3Jl bGliL3RocmVhZC9xdHNhbl9pbXBsLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0c2Fu X2ltcGwuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjU4MGE3Mzhi OTEKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRzYW5f aW1wbC5oCitAQCAtMCwwICsxLDExNSBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysq KiBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24uCisrKiogQ29weXJpZ2h0IChD KSAyMDIyIEtsYXLDpGx2ZGFsZW5zIERhdGFrb25zdWx0IEFCLCBhIEtEQUIgR3JvdXAgY29tcGFu eSwgaW5mb0BrZGFiLmNvbSwgYXV0aG9yIEdpdXNlcHBlIEQnQW5nZWxvIDxnaXVzZXBwZS5kYW5n ZWxvQGtkYWIuY29tPgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8K KysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdENvcmUgbW9kdWxlIG9mIHRoZSBR dCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJj aWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFs IFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRo ZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29m dHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29u dGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0 IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0 cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1h dGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVz LgorKyoqCisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiog QWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmlu ZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2lu ZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0 bworKyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp b24gMyByZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24g Mi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vu c2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJl ZQorKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxl IExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2th Z2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9y bWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1l bnRzIHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIu MC5odG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1s LgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K KysKKysjaWZuZGVmIFFUU0FOX0lNUExfSAorKyNkZWZpbmUgUVRTQU5fSU1QTF9ICisrCisrI2lu Y2x1ZGUgPFF0Q29yZS9xZ2xvYmFsLmg+CisrCisrI2lmIChfX2hhc19mZWF0dXJlKHRocmVhZF9z YW5pdGl6ZXIpIHx8IGRlZmluZWQoX19TQU5JVElaRV9USFJFQURfXykpICYmIF9faGFzX2luY2x1 ZGUoPHNhbml0aXplci90c2FuX2ludGVyZmFjZS5oPikKKysjICBkZWZpbmUgUVRfQlVJTERJTkdf VU5ERVJfVFNBTgorKyMgIGluY2x1ZGUgPHNhbml0aXplci90c2FuX2ludGVyZmFjZS5oPgorKyNl bmRpZgorKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworK25hbWVzcGFjZSBRdFRzYW4geworKyNp ZmRlZiBRVF9CVUlMRElOR19VTkRFUl9UU0FOCisraW5saW5lIHZvaWQgZnV0ZXhBY3F1aXJlKHZv aWQgKmFkZHIsIHZvaWQgKmFkZHIyID0gbnVsbHB0cikKKyt7CisrICAgIC8vIEEgZnV0ZXggY2Fs bCBlbnN1cmVzIHRvdGFsIG9yZGVyaW5nIG9uIHRoZSBmdXRleCB3b3JkcworKyAgICAvLyAoaW4g ZWl0aGVyIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgY2FsbCkuIEluc3RydWN0IFRTQU4gYWNj b3JkaW5nbHksCisrICAgIC8vIGFzIFRTQU4gZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgZnV0ZXgo Mikgc3lzY2FsbCAob3IgZXF1aXZhbGVudCkuCisrICAgIDo6X190c2FuX2FjcXVpcmUoYWRkcik7 CisrICAgIGlmIChhZGRyMikKKysgICAgICAgIDo6X190c2FuX2FjcXVpcmUoYWRkcjIpOworK30K KysKKytpbmxpbmUgdm9pZCBmdXRleFJlbGVhc2Uodm9pZCAqYWRkciwgdm9pZCAqYWRkcjIgPSBu dWxscHRyKQorK3sKKysgICAgaWYgKGFkZHIyKQorKyAgICAgICAgOjpfX3RzYW5fcmVsZWFzZShh ZGRyMik7CisrICAgIDo6X190c2FuX3JlbGVhc2UoYWRkcik7CisrfQorKworK2lubGluZSB2b2lk IG11dGV4UHJlTG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAgIDo6X190 c2FuX211dGV4X3ByZV9sb2NrKGFkZHIsIGZsYWdzKTsKKyt9CisrCisraW5saW5lIHZvaWQgbXV0 ZXhQb3N0TG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncywgaW50IHJlY3Vyc2lvbikKKyt7 CisrICAgIDo6X190c2FuX211dGV4X3Bvc3RfbG9jayhhZGRyLCBmbGFncywgcmVjdXJzaW9uKTsK Kyt9CisrCisraW5saW5lIHZvaWQgbXV0ZXhQcmVVbmxvY2sodm9pZCAqYWRkciwgdW5zaWduZWQg ZmxhZ3MpCisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wcmVfdW5sb2NrKGFkZHIsIGZsYWdzKTsK Kyt9CisrCisraW5saW5lIHZvaWQgbXV0ZXhQb3N0VW5sb2NrKHZvaWQgKmFkZHIsIHVuc2lnbmVk IGZsYWdzKQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcG9zdF91bmxvY2soYWRkciwgZmxhZ3Mp OworK30KKysKKytlbnVtIDogdW5zaWduZWQgeworKyAgICBNdXRleFdyaXRlUmVlbnRyYW50ID0g OjpfX3RzYW5fbXV0ZXhfd3JpdGVfcmVlbnRyYW50LAorKyAgICBUcnlMb2NrID0gOjpfX3RzYW5f bXV0ZXhfdHJ5X2xvY2ssCisrICAgIFRyeUxvY2tGYWlsZWQgPSA6Ol9fdHNhbl9tdXRleF90cnlf bG9ja19mYWlsZWQsCisrfTsKKysjZWxzZQorK2lubGluZSB2b2lkIGZ1dGV4QWNxdWlyZSh2b2lk ICosIHZvaWQgKiA9IG51bGxwdHIpIHt9CisraW5saW5lIHZvaWQgZnV0ZXhSZWxlYXNlKHZvaWQg Kiwgdm9pZCAqID0gbnVsbHB0cikge30KKysKKytlbnVtIDogdW5zaWduZWQgeworKyAgICBNdXRl eFdyaXRlUmVlbnRyYW50LAorKyAgICBUcnlMb2NrLAorKyAgICBUcnlMb2NrRmFpbGVkLAorK307 CisraW5saW5lIHZvaWQgbXV0ZXhQcmVMb2NrKHZvaWQgKiwgdW5zaWduZWQpIHt9CisraW5saW5l IHZvaWQgbXV0ZXhQb3N0TG9jayh2b2lkICosIHVuc2lnbmVkLCBpbnQpIHt9CisraW5saW5lIHZv aWQgbXV0ZXhQcmVVbmxvY2sodm9pZCAqLCB1bnNpZ25lZCkge30KKytpbmxpbmUgdm9pZCBtdXRl eFBvc3RVbmxvY2sodm9pZCAqLCB1bnNpZ25lZCkge30KKysjZW5kaWYgLy8gUVRfQlVJTERJTkdf VU5ERVJfVFNBTgorK30gLy8gbmFtZXNwYWNlIFF0VHNhbgorKworK1FUX0VORF9OQU1FU1BBQ0UK KysKKysjZW5kaWYgLy8gUVRTQU5fSU1QTF9ICitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3Jl bGliL3RocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90 aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAKK2luZGV4IDg4YjA1OGY0MTAuLjBmMWRhNGRj OWIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9u X3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9u X3VuaXguY3BwCitAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgUVdhaXRDb25kaXRpb246OndhaXQo UU11dGV4ICptdXRleCwgUURlYWRsaW5lVGltZXIgZGVhZGxpbmUpCisgeworICAgICBpZiAoISBt dXRleCkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgaWYgKG11dGV4LT5pc1JlY3Vyc2l2 ZSgpKSB7CisrICAgIGlmIChzdGF0aWNfY2FzdDxRQmFzaWNNdXRleCAqPihtdXRleCktPmlzUmVj dXJzaXZlKCkpIHsKKyAgICAgICAgIHFXYXJuaW5nKCJRV2FpdENvbmRpdGlvbjogY2Fubm90IHdh aXQgb24gcmVjdXJzaXZlIG11dGV4ZXMiKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg fQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3FkYXRldGltZS5jcHAgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwCitpbmRleCBlYzEyNTY5ZTNmLi4y YzBiMDk4MDc5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0aW1l LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcAorQEAgLTQz LDYgKzQzLDcgQEAKKyAjaWYgUVRfQ09ORklHKGRhdGV0aW1lcGFyc2VyKQorICNpbmNsdWRlICJw cml2YXRlL3FkYXRldGltZXBhcnNlcl9wLmgiCisgI2VuZGlmCisrI2luY2x1ZGUgPHByaXZhdGUv cW51bWVyaWNfcC5oPgorIAorICNpbmNsdWRlICJxZGF0YXN0cmVhbS5oIgorICNpbmNsdWRlICJx c2V0LmgiCitAQCAtMTQyOSw5ICsxNDMwLDExIEBAIFFEYXRlIFFEYXRlOjphZGREYXlzKHFpbnQ2 NCBuZGF5cykgY29uc3QKKyAgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICAgcmV0dXJuIFFEYXRl KCk7CisgCistICAgIC8vIER1ZSB0byBsaW1pdHMgb24gbWluSmQoKSBhbmQgbWF4SmQoKSB3ZSBr bm93IHRoYXQgYW55IG92ZXJmbG93CistICAgIC8vIHdpbGwgYmUgaW52YWxpZCBhbmQgY2F1Z2h0 IGJ5IGZyb21KdWxpYW5EYXkoKS4KKy0gICAgcmV0dXJuIGZyb21KdWxpYW5EYXkoamQgKyBuZGF5 cyk7CisrICAgIHFpbnQ2NCByOworKyAgICBpZiAoUV9VTkxJS0VMWShhZGRfb3ZlcmZsb3coamQs IG5kYXlzLCAmcikpKQorKyAgICAgICAgcmV0dXJuIFFEYXRlKCk7CisrICAgIGVsc2UKKysgICAg ICAgIHJldHVybiBmcm9tSnVsaWFuRGF5KHIpOworIH0KKyAKKyAvKiEKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGli L3RpbWUvcXRpbWV6b25lLmNwcAoraW5kZXggMDMwOWU0M2U1Mi4uM2Q0NTE2OTZhMSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTMgSm9obiBMYXl0IDxq bGF5dEBrZGUub3JnPgorKyoqIENvcHlyaWdodCAoQykgMjAyMCBKb2huIExheXQgPGpsYXl0QGtk ZS5vcmc+CisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisg KiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0Q29yZSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xr aXQuCitAQCAtOTc1LDkgKzk3NSwxNSBAQCBRTGlzdDxRQnl0ZUFycmF5PiBRVGltZVpvbmU6Ondp bmRvd3NJZFRvSWFuYUlkcyhjb25zdCBRQnl0ZUFycmF5ICZ3aW5kb3dzSWQsCisgfQorIAorICNp Zm5kZWYgUVRfTk9fREFUQVNUUkVBTQorKy8vIEludmFsaWQsIGFzIGFuIElBTkEgSUQ6IHRvbyBs b25nLCBzdGFydHMgd2l0aCAtIGFuZCBoYXMgb3RoZXIgaW52YWxpZCBjaGFyYWN0ZXJzIGluIGl0 Cisrc3RhdGljIGlubGluZSBRU3RyaW5nIGludmFsaWRJZCgpIHsgcmV0dXJuIFFTdHJpbmdMaXRl cmFsKCItTm8gVGltZSBab25lIFNwZWNpZmllZCEiKTsgfQorKworIFFEYXRhU3RyZWFtICZvcGVy YXRvcjw8KFFEYXRhU3RyZWFtICZkcywgY29uc3QgUVRpbWVab25lICZ0eikKKyB7CistICAgIHR6 LmQtPnNlcmlhbGl6ZShkcyk7CisrICAgIGlmICh0ei5pc1ZhbGlkKCkpCisrICAgICAgICB0ei5k LT5zZXJpYWxpemUoZHMpOworKyAgICBlbHNlCisrICAgICAgICBkcyA8PCBpbnZhbGlkSWQoKTsK KyAgICAgcmV0dXJuIGRzOworIH0KKyAKK0BAIC05ODUsNyArOTkxLDkgQEAgUURhdGFTdHJlYW0g Jm9wZXJhdG9yPj4oUURhdGFTdHJlYW0gJmRzLCBRVGltZVpvbmUgJnR6KQorIHsKKyAgICAgUVN0 cmluZyBpYW5hSWQ7CisgICAgIGRzID4+IGlhbmFJZDsKKy0gICAgaWYgKGlhbmFJZCA9PSBRTGF0 aW4xU3RyaW5nKCJPZmZzZXRGcm9tVXRjIikpIHsKKysgICAgaWYgKGlhbmFJZCA9PSBpbnZhbGlk SWQoKSkgeworKyAgICAgICAgdHogPSBRVGltZVpvbmUoKTsKKysgICAgfSBlbHNlIGlmIChpYW5h SWQgPT0gUUxhdGluMVN0cmluZygiT2Zmc2V0RnJvbVV0YyIpKSB7CisgICAgICAgICBpbnQgdXRj T2Zmc2V0OworICAgICAgICAgUVN0cmluZyBuYW1lOworICAgICAgICAgUVN0cmluZyBhYmJyZXZp YXRpb247CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lcHJp dmF0ZV90ei5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6 LmNwcAoraW5kZXggYjE2MTFkN2RkYi4uYTdhNmE3MmNjZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvY29yZWxpYi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3BwCisrKysgYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNwcAorQEAgLTQyLDYgKzQyLDcgQEAK KyAjaW5jbHVkZSAicXRpbWV6b25lLmgiCisgI2luY2x1ZGUgInF0aW1lem9uZXByaXZhdGVfcC5o IgorICNpbmNsdWRlICJwcml2YXRlL3Fsb2NhbGVfdG9vbHNfcC5oIgorKyNpbmNsdWRlICJwcml2 YXRlL3Fsb2NraW5nX3AuaCIKKyAKKyAjaW5jbHVkZSA8UXRDb3JlL1FEYXRhU3RyZWFtPgorICNp bmNsdWRlIDxRdENvcmUvUURhdGVUaW1lPgorQEAgLTYyLDYgKzYzLDEwIEBACisgCisgUVRfQkVH SU5fTkFNRVNQQUNFCisgCisrI2lmIFFUX0NPTkZJRyhpY3UpCisrc3RhdGljIFFCYXNpY011dGV4 IHNfaWN1X211dGV4OworKyNlbmRpZgorKworIC8qCisgICAgIFByaXZhdGUKKyAKK0BAIC02NzAs NiArNjc1LDkgQEAgUVR6VGltZVpvbmVQcml2YXRlOjp+UVR6VGltZVpvbmVQcml2YXRlKCkKKyAK KyBRVHpUaW1lWm9uZVByaXZhdGUgKlFUelRpbWVab25lUHJpdmF0ZTo6Y2xvbmUoKSBjb25zdAor IHsKKysjaWYgUVRfQ09ORklHKGljdSkKKysgICAgY29uc3QgYXV0byBsb2NrID0gcXRfc2NvcGVk X2xvY2soc19pY3VfbXV0ZXgpOworKyNlbmRpZgorICAgICByZXR1cm4gbmV3IFFUelRpbWVab25l UHJpdmF0ZSgqdGhpcyk7CisgfQorIAorQEAgLTkxMywxMiArOTIxLDE0IEBAIFFTdHJpbmcgUVR6 VGltZVpvbmVQcml2YXRlOjpkaXNwbGF5TmFtZShxaW50NjQgYXRNU2Vjc1NpbmNlRXBvY2gsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFMb2NhbGUgJmxv Y2FsZSkgY29uc3QKKyB7CisgI2lmIFFUX0NPTkZJRyhpY3UpCisrICAgIGF1dG8gbG9jayA9IHF0 X3VuaXF1ZV9sb2NrKHNfaWN1X211dGV4KTsKKyAgICAgaWYgKCFtX2ljdSkKKyAgICAgICAgIG1f aWN1ID0gbmV3IFFJY3VUaW1lWm9uZVByaXZhdGUobV9pZCk7CisgICAgIC8vIFRPRE8gc21hbGwg cmlzayBtYXkgbm90IG1hdGNoIGlmIHRyYW4gdGltZXMgZGlmZmVyIGR1ZSB0byBvdXRkYXRlZCBm aWxlcworICAgICAvLyBUT0RPIFNvbWUgdmFsaWQgVFogbmFtZXMgYXJlIG5vdCB2YWxpZCBJQ1Ug bmFtZXMsIHVzZSB0cmFuc2xhdGlvbiB0YWJsZT8KKyAgICAgaWYgKG1faWN1LT5pc1ZhbGlkKCkp CisgICAgICAgICByZXR1cm4gbV9pY3UtPmRpc3BsYXlOYW1lKGF0TVNlY3NTaW5jZUVwb2NoLCBu YW1lVHlwZSwgbG9jYWxlKTsKKysgICAgbG9jay51bmxvY2soKTsKKyAjZWxzZQorICAgICBRX1VO VVNFRChuYW1lVHlwZSkKKyAgICAgUV9VTlVTRUQobG9jYWxlKQorQEAgLTkzMiwxMiArOTQyLDE0 IEBAIFFTdHJpbmcgUVR6VGltZVpvbmVQcml2YXRlOjpkaXNwbGF5TmFtZShRVGltZVpvbmU6OlRp bWVUeXBlIHRpbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBRTG9jYWxlICZsb2NhbGUpIGNvbnN0CisgeworICNpZiBRVF9DT05GSUcoaWN1KQor KyAgICBhdXRvIGxvY2sgPSBxdF91bmlxdWVfbG9jayhzX2ljdV9tdXRleCk7CisgICAgIGlmICgh bV9pY3UpCisgICAgICAgICBtX2ljdSA9IG5ldyBRSWN1VGltZVpvbmVQcml2YXRlKG1faWQpOwor ICAgICAvLyBUT0RPIHNtYWxsIHJpc2sgbWF5IG5vdCBtYXRjaCBpZiB0cmFuIHRpbWVzIGRpZmZl ciBkdWUgdG8gb3V0ZGF0ZWQgZmlsZXMKKyAgICAgLy8gVE9ETyBTb21lIHZhbGlkIFRaIG5hbWVz IGFyZSBub3QgdmFsaWQgSUNVIG5hbWVzLCB1c2UgdHJhbnNsYXRpb24gdGFibGU/CisgICAgIGlm IChtX2ljdS0+aXNWYWxpZCgpKQorICAgICAgICAgcmV0dXJuIG1faWN1LT5kaXNwbGF5TmFtZSh0 aW1lVHlwZSwgbmFtZVR5cGUsIGxvY2FsZSk7CisrICAgIGxvY2sudW5sb2NrKCk7CisgI2Vsc2UK KyAgICAgUV9VTlVTRUQodGltZVR5cGUpCisgICAgIFFfVU5VU0VEKG5hbWVUeXBlKQorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlkYXRhLmggYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5oCitpbmRleCBkY2Q5NTkyNGMxLi5kMDE3MzllN2U2 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaAorKysr IGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaAorQEAgLTQyLDYgKzQyLDcg QEAKKyAKKyAjaW5jbHVkZSA8UXRDb3JlL3FyZWZjb3VudC5oPgorICNpbmNsdWRlIDxzdHJpbmcu aD4KKysjaW5jbHVkZSA8Y3N0ZGludD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKK0BAIC01 OCwxNCArNTksMTQgQEAgc3RydWN0IFFfQ09SRV9FWFBPUlQgUUFycmF5RGF0YQorICAgICB7Cisg ICAgICAgICBRX0FTU0VSVChzaXplID09IDAKKyAgICAgICAgICAgICAgICAgfHwgb2Zmc2V0IDwg MCB8fCBzaXplX3Qob2Zmc2V0KSA+PSBzaXplb2YoUUFycmF5RGF0YSkpOworLSAgICAgICAgcmV0 dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciAqPih0aGlzKSArIG9mZnNldDsKKysgICAgICAgIHJl dHVybiByZWludGVycHJldF9jYXN0PHZvaWQgKj4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90 Pih0aGlzKSArIG9mZnNldCk7CisgICAgIH0KKyAKKyAgICAgY29uc3Qgdm9pZCAqZGF0YSgpIGNv bnN0CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUKHNpemUgPT0gMAorICAgICAgICAgICAgICAg ICB8fCBvZmZzZXQgPCAwIHx8IHNpemVfdChvZmZzZXQpID49IHNpemVvZihRQXJyYXlEYXRhKSk7 CistICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KHRoaXMpICsg b2Zmc2V0OworKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPiAocmVpbnRl cnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgb2Zmc2V0KTsKKyAgICAgfQorIAorICAgICAv LyBUaGlzIHJlZmVycyB0byBhcnJheSBkYXRhIG11dGFiaWxpdHksIG5vdCAiaGVhZGVyIGRhdGEi IHJlcHJlc2VudGVkIGJ5CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3Fm cmVlbGlzdF9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaAoraW5k ZXggNWJhMjNiMzQ0Yi4uOTk3NDEwMjEzNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxp Yi90b29scy9xZnJlZWxpc3RfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZy ZWVsaXN0X3AuaAorQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBRRnJlZUxpc3QKKyAgICAgICAg ICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICAgeCAtPSBzaXplOworICAgICAgICAgfQor LSAgICAgICAgUV9BU1NFUlQoZmFsc2UpOworKyAgICAgICAgUV9VTlJFQUNIQUJMRSgpOworICAg ICAgICAgcmV0dXJuIC0xOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3Jl bGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZl cnNpb25udW1iZXIuaAoraW5kZXggZDQzYjg2YmE1MS4uMjg0M2YyYjA0MyAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvdG9vbHMvcXZlcnNpb25udW1iZXIuaAorQEAgLTI3MywxMCArMjczLDEwIEBA IHB1YmxpYzoKKyAKKyAgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBRU3RyaW5n IHRvU3RyaW5nKCkgY29uc3Q7CisgI2lmIFFUX1NUUklOR1ZJRVdfTEVWRUwgPCAyCistICAgIFFf UkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFfREVDTF9QVVJFX0ZVTkNUSU9O IFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoY29uc3QgUVN0cmluZyAmc3RyaW5nLCBpbnQgKnN1 ZmZpeEluZGV4ID0gbnVsbHB0cik7CisrICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBP UlQgc3RhdGljIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoY29uc3QgUVN0cmluZyAmc3RyaW5n LCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisgI2VuZGlmCistICAgIFFfUkVRVUlSRURf UkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFfREVDTF9QVVJFX0ZVTkNUSU9OIFFWZXJzaW9u TnVtYmVyIGZyb21TdHJpbmcoUUxhdGluMVN0cmluZyBzdHJpbmcsIGludCAqc3VmZml4SW5kZXgg PSBudWxscHRyKTsKKy0gICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMg UV9ERUNMX1BVUkVfRlVOQ1RJT04gUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhRU3RyaW5nVmll dyBzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKysgICAgUV9SRVFVSVJFRF9S RVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhRTGF0 aW4xU3RyaW5nIHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworKyAgICBRX1JF UVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRVmVyc2lvbk51bWJlciBmcm9tU3Ry aW5nKFFTdHJpbmdWaWV3IHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworIAor IHByaXZhdGU6CisgI2lmbmRlZiBRVF9OT19EQVRBU1RSRUFNCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAgYi9xdGJhc2Uvc3JjL2RidXMvcWRidXNpbnRl Z3JhdG9yLmNwcAoraW5kZXggNWI2NmNlOTcxYi4uMjhhM2IwZmZlYSAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2RidXMv cWRidXNpbnRlZ3JhdG9yLmNwcAorQEAgLTExMzUsNyArMTEzNSwxMyBAQCB2b2lkIFFEQnVzQ29u bmVjdGlvblByaXZhdGU6OmNsb3NlQ29ubmVjdGlvbigpCisgICAgICAgICB9CisgICAgIH0KKyAK Ky0gICAgcURlbGV0ZUFsbChwZW5kaW5nQ2FsbHMpOworKyAgICBmb3IgKGF1dG8gaXQgPSBwZW5k aW5nQ2FsbHMuYmVnaW4oKTsgaXQgIT0gcGVuZGluZ0NhbGxzLmVuZCgpOyArK2l0KSB7CisrICAg ICAgICBhdXRvIGNhbGwgPSAqaXQ7CisrICAgICAgICBpZiAoIWNhbGwtPnJlZi5kZXJlZigpKSB7 CisrICAgICAgICAgICAgZGVsZXRlIGNhbGw7CisrICAgICAgICB9CisrICAgIH0KKysgICAgcGVu ZGluZ0NhbGxzLmNsZWFyKCk7CisgCisgICAgIC8vIERpc2Nvbm5lY3QgYWxsIHNpZ25hbHMgZnJv bSBzaWduYWwgaG9va3MgYW5kIGZyb20gdGhlIG9iamVjdCB0cmVlIHRvCisgICAgIC8vIGF2b2lk IFFPYmplY3Q6OmRlc3Ryb3llZCBiZWluZyBzZW50IHRvIGRidXMgZGFlbW9uIHRocmVhZCB3aGlj aCBoYXMKK0BAIC0yNTg0LDYgKzI1OTAsMTEgQEAgUURCdXNDb25uZWN0aW9uUHJpdmF0ZTo6Zmlu ZE1ldGFPYmplY3QoY29uc3QgUVN0cmluZyAmc2VydmljZSwgY29uc3QgUVN0cmluZyAmcGEKKyAg ICAgICAgIGlmIChtbykKKyAgICAgICAgICAgICByZXR1cm4gbW87CisgICAgIH0KKysgICAgaWYg KHBhdGguaXNFbXB0eSgpKSB7CisrICAgICAgICBlcnJvciA9IFFEQnVzRXJyb3IoUURCdXNFcnJv cjo6SW52YWxpZE9iamVjdFBhdGgsIFFMYXRpbjFTdHJpbmcoIk9iamVjdCBwYXRoIGNhbm5vdCBi ZSBlbXB0eSIpKTsKKysgICAgICAgIGxhc3RFcnJvciA9IGVycm9yOworKyAgICAgICAgcmV0dXJu IG51bGxwdHI7CisrICAgIH0KKyAKKyAgICAgLy8gaW50cm9zcGVjdCB0aGUgdGFyZ2V0IG9iamVj dAorICAgICBRREJ1c01lc3NhZ2UgbXNnID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxs KHNlcnZpY2UsIHBhdGgsCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9i amVjdC5jcHAgYi9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcAoraW5kZXggNTI2 NTU2OGY0Mi4uN2U5ZjBmMWFjYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c21l dGFvYmplY3QuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcAor QEAgLTIxMCw2ICsyMTAsOSBAQCBRREJ1c01ldGFPYmplY3RHZW5lcmF0b3I6OmZpbmRUeXBlKGNv bnN0IFFCeXRlQXJyYXkgJnNpZ25hdHVyZSwKKyAgICAgICAgIH0gZWxzZSBpZiAoc2lnbmF0dXJl ID09ICJhe3NzfSIpIHsKKyAgICAgICAgICAgICByZXN1bHQubmFtZSA9ICJRTWFwPFFTdHJpbmcs UVN0cmluZz4iOworICAgICAgICAgICAgIHR5cGUgPSBxTWV0YVR5cGVJZDxRTWFwPFFTdHJpbmcs IFFTdHJpbmc+ID4oKTsKKysgICAgICAgIH0gZWxzZSBpZiAoc2lnbmF0dXJlID09ICJhYXkiKSB7 CisrICAgICAgICAgICAgcmVzdWx0Lm5hbWUgPSAiUUJ5dGVBcnJheUxpc3QiOworKyAgICAgICAg ICAgIHR5cGUgPSBxTWV0YVR5cGVJZDxRQnl0ZUFycmF5TGlzdD4oKTsKKyAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgcmVzdWx0Lm5hbWUgPSAie0QtQnVzIHR5cGUgXCIiICsgc2lnbmF0 dXJlICsgIlwifSI7CisgICAgICAgICAgICAgdHlwZSA9IHJlZ2lzdGVyQ29tcGxleERCdXNUeXBl KHJlc3VsdC5uYW1lKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3Fh Y2Nlc3NpYmxlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUuY3Bw CitpbmRleCBkNzA1YmZjY2I1Li4wY2FmM2M4MDhjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9n dWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2FjY2Vz c2libGUvcWFjY2Vzc2libGUuY3BwCitAQCAtNTQsNiArNTQsNyBAQAorICNpbmNsdWRlIDxRdENv cmUvcWRlYnVnLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xbG9nZ2luZ2NhdGVnb3J5Lmg+CisgI2lu Y2x1ZGUgPFF0Q29yZS9xbWV0YW9iamVjdC5oPgorKyNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9x bWV0YW9iamVjdF9wLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xaGFzaC5oPgorICNpbmNsdWRlIDxw cml2YXRlL3FmYWN0b3J5bG9hZGVyX3AuaD4KKyAKK0BAIC02ODEsNiArNjgyLDI1IEBAIFFBY2Nl c3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKFFP YmplY3QgKm9iamVjdCkKKyAgICAgLy8gQ3JlYXRlIGEgUUFjY2Vzc2libGVJbnRlcmZhY2UgZm9y IHRoZSBvYmplY3QgY2xhc3MuIFN0YXJ0IGJ5IHRoZSBtb3N0CisgICAgIC8vIGRlcml2ZWQgY2xh c3MgYW5kIHdhbGsgdXAgdGhlIGNsYXNzIGhpZXJhcmNoeS4KKyAgICAgY29uc3QgUU1ldGFPYmpl Y3QgKm1vID0gb2JqZWN0LT5tZXRhT2JqZWN0KCk7CisrICAgIGNvbnN0IGF1dG8gKm9iamVjdFBy aXYgPSBRT2JqZWN0UHJpdmF0ZTo6Z2V0KG9iamVjdCk7CisrICAgIC8qCisrICAgICBXZSBkbyBu b3Qgd2FudCB0byBjYWNoZSBlYWNoIGFuZCBldmVyeSBRTUwgbWV0YW9iamVjdCAoQnV0dG9uX1FN TFRZUEVfMTI0LAorKyAgICAgQnV0dG9uX1FNTFRZUEVfMTI1LCBldGMuKS4gVGhvc2UgZHluYW1p YyBtZXRhb2JqZWN0cyBzaG91bGRuJ3QgaGF2ZSBhbgorKyAgICAgYWNjZXNzaWJsZSBpbnRlcmZh Y2UgaW4gYW55IGNhc2UuIEluc3RlYWQsIHdlIHN0YXJ0IHRoZSB3aG9sZSBjaGVja2luZworKyAg ICAgd2l0aCB0aGUgZmlyc3Qgbm9uLWR5bmFtaWMgbWV0YS1vYmplY3QuIFRvIGF2b2lkIHBvdGVu dGlhbCByZWdyZXNzaW9ucworKyAgICAgaW4gb3RoZXIgYXJlYXMgb2YgUXQgdGhhdCBhbHNvIHVz ZSBkeW5hbWljIG1ldGFvYmplY3RzLCB3ZSBvbmx5IGRvIHRoaXMKKysgICAgIGZvciBvYmplY3Rz IHRoYXQgYXJlIFFNTC1yZWxhdGVkIChhcHByb3hpbWF0ZWQgYnkgY2hlY2tpbmcgd2hldGhlciB0 aGV5CisrICAgICBoYXZlIGRkYXRhIHNldCkuCisrICAgICovCisrICAgIGNvbnN0IGJvb2wgcW1s UmVsYXRlZCA9ICFvYmplY3RQcml2LT5pc0RlbGV0aW5nQ2hpbGRyZW4gJiYKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2JqZWN0UHJpdi0+ZGVjbGFyYXRpdmVEYXRhOworKyAgICB3aGls ZSAocW1sUmVsYXRlZCAmJiBtbykgeworKyAgICAgICAgYXV0byBtb3AgPSBRTWV0YU9iamVjdFBy aXZhdGU6OmdldChtbyk7CisrICAgICAgICBpZiAoIW1vcCB8fCAhKG1vcC0+ZmxhZ3MgJiBEeW5h bWljTWV0YU9iamVjdCkpCisrICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICBtbyA9IG1v LT5zdXBlckNsYXNzKCk7CisrICAgIH07CisgICAgIHdoaWxlIChtbykgeworICAgICAgICAgY29u c3QgUVN0cmluZyBjbiA9IFFMYXRpbjFTdHJpbmcobW8tPmNsYXNzTmFtZSgpKTsKKyAKK0BAIC02 OTYsMTQgKzcxNiwxNSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGU6OnF1ZXJ5 QWNjZXNzaWJsZUludGVyZmFjZShRT2JqZWN0ICpvYmplY3QpCisgICAgICAgICAvLyBGaW5kIGEg UUFjY2Vzc2libGVQbHVnaW4gKGZhY3RvcnkpIGZvciB0aGUgY2xhc3MgbmFtZS4gSWYgdGhlcmUn cworICAgICAgICAgLy8gbm8gZW50cnkgaW4gdGhlIGNhY2hlIHRyeSB0byBjcmVhdGUgaXQgdXNp bmcgdGhlIHBsdWdpbiBsb2FkZXIuCisgICAgICAgICBpZiAoIXFBY2Nlc3NpYmxlUGx1Z2lucygp LT5jb250YWlucyhjbikpIHsKKysgICAgICAgICAgICBRQWNjZXNzaWJsZVBsdWdpbiAqZmFjdG9y eSA9IG51bGxwdHI7IC8vIDAgbWVhbnMgIm5vIHBsdWdpbiBmb3VuZCIuIFRoaXMgaXMgY2FjaGVk IGFzIHdlbGwuCisgICAgICAgICAgICAgY29uc3QgaW50IGluZGV4ID0gbG9hZGVyKCktPmluZGV4 T2YoY24pOworLSAgICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkgeworLSAgICAgICAgICAgICAg ICBRQWNjZXNzaWJsZVBsdWdpbiAqZmFjdG9yeSA9IHFvYmplY3RfY2FzdDxRQWNjZXNzaWJsZVBs dWdpbiAqPihsb2FkZXIoKS0+aW5zdGFuY2UoaW5kZXgpKTsKKy0gICAgICAgICAgICAgICAgcUFj Y2Vzc2libGVQbHVnaW5zKCktPmluc2VydChjbiwgZmFjdG9yeSk7CistICAgICAgICAgICAgfQor KyAgICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkKKysgICAgICAgICAgICAgICAgZmFjdG9yeSA9 IHFvYmplY3RfY2FzdDxRQWNjZXNzaWJsZVBsdWdpbiAqPihsb2FkZXIoKS0+aW5zdGFuY2UoaW5k ZXgpKTsKKysgICAgICAgICAgICBxQWNjZXNzaWJsZVBsdWdpbnMoKS0+aW5zZXJ0KGNuLCBmYWN0 b3J5KTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGNhY2hl IHNob3VsZCBjb250YWluIGEgdmFsaWQgZmFjdG9yeSBwb2ludGVyIG9yIDA6CisrICAgICAgICBR X0FTU0VSVChxQWNjZXNzaWJsZVBsdWdpbnMoKS0+Y29udGFpbnMoY24pKTsKKyAgICAgICAgIFFB Y2Nlc3NpYmxlUGx1Z2luICpmYWN0b3J5ID0gcUFjY2Vzc2libGVQbHVnaW5zKCktPnZhbHVlKGNu KTsKKyAgICAgICAgIGlmIChmYWN0b3J5KSB7CisgICAgICAgICAgICAgUUFjY2Vzc2libGVJbnRl cmZhY2UgKnJlc3VsdCA9IGZhY3RvcnktPmNyZWF0ZShjbiwgb2JqZWN0KTsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2d1aS9jb25maWd1cmUuanNvbiBiL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3Vy ZS5qc29uCitpbmRleCAxZjA4Nzk1YzU3Li4xMmM5NTc0MmQyIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9ndWkvY29uZmlndXJlLmpzb24KKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3VyZS5q c29uCitAQCAtODM0LDcgKzgzNCw4IEBACisgICAgICAgICAgICAgICAgICAgICAiLy8gZW1iZWRk ZWQgZGV2aWNlcywgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggWC4g RUdMIHN1cHBvcnQiLAorICAgICAgICAgICAgICAgICAgICAgIi8vIGhhcyB0byBiZSBkaXNhYmxl ZCBpbiBwbHVnaW5zIGxpa2UgeGNiIGluIHRoaXMgY2FzZSBzaW5jZSB0aGUgbmF0aXZlIGRpc3Bs YXksIiwKKyAgICAgICAgICAgICAgICAgICAgICIvLyB3aW5kb3cgYW5kIHBpeG1hcCB0eXBlcyB3 aWxsIGJlIGRpZmZlcmVudCB0aGFuIHdoYXQgYW4gWC1iYXNlZCBwbGF0Zm9ybSIsCistICAgICAg ICAgICAgICAgICAgICAiLy8gcGx1Z2luIHdvdWxkIGV4cGVjdC4iCisrICAgICAgICAgICAgICAg ICAgICAiLy8gcGx1Z2luIHdvdWxkIGV4cGVjdC4iLAorKyAgICAgICAgICAgICAgICAgICAgIiNk ZWZpbmUgVVNFX1gxMSIKKyAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgImlu Y2x1ZGUiOiBbICJFR0wvZWdsLmgiLCAiWDExL1hsaWIuaCIgXSwKKyAgICAgICAgICAgICAgICAg Im1haW4iOiBbCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhhbmRsZXIu Y3BwIGIvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhhbmRsZXIuY3BwCitpbmRleCA5NmYxZThj YjFkLi4wZTczYmJiZGIwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhh bmRsZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAKK0BA IC0xNTAsMTYgKzE1MCw0MiBAQCBzdGF0aWMgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoUURhdGFT dHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSkKKyAgICAgcmV0dXJuIHM7CisgfQorIAor LXN0YXRpYyBpbnQgY2FsY19zaGlmdCh1aW50IG1hc2spCisrc3RhdGljIHVpbnQgY2FsY19zaGlm dCh1aW50IG1hc2spCisgeworLSAgICBpbnQgcmVzdWx0ID0gMDsKKy0gICAgd2hpbGUgKG1hc2sg JiYgIShtYXNrICYgMSkpIHsKKysgICAgdWludCByZXN1bHQgPSAwOworKyAgICB3aGlsZSAoKG1h c2sgPj0gMHgxMDApIHx8ICghKG1hc2sgJiAxKSAmJiBtYXNrKSkgeworICAgICAgICAgcmVzdWx0 Kys7CisgICAgICAgICBtYXNrID4+PSAxOworICAgICB9CisgICAgIHJldHVybiByZXN1bHQ7Cisg fQorIAorK3N0YXRpYyB1aW50IGNhbGNfc2NhbGUodWludCBsb3dfbWFzaykKKyt7CisrICAgIHVp bnQgcmVzdWx0ID0gODsKKysgICAgd2hpbGUgKGxvd19tYXNrICYmIHJlc3VsdCkgeworKyAgICAg ICAgcmVzdWx0LS07CisrICAgICAgICBsb3dfbWFzayA+Pj0gMTsKKysgICAgfQorKyAgICByZXR1 cm4gcmVzdWx0OworK30KKysKKytzdGF0aWMgaW5saW5lIHVpbnQgYXBwbHlfc2NhbGUodWludCB2 YWx1ZSwgdWludCBzY2FsZSkKKyt7CisrICAgIGlmICghKHNjYWxlICYgMHgwNykpIC8vIHJldHVy biBpbW1lZGlhdGVseSBpZiBzY2FsZSA9PSA4IG9yIDAKKysgICAgICAgIHJldHVybiB2YWx1ZTsK KysKKysgICAgdWludCBmaWxsZWQgPSA4IC0gc2NhbGU7CisrICAgIHVpbnQgcmVzdWx0ID0gdmFs dWUgPDwgc2NhbGU7CisrCisrICAgIGRvIHsKKysgICAgICAgIHJlc3VsdCB8PSByZXN1bHQgPj4g ZmlsbGVkOworKyAgICAgICAgZmlsbGVkIDw8PSAxOworKyAgICB9IHdoaWxlIChmaWxsZWQgPCA4 KTsKKysKKysgICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisgc3RhdGljIGJvb2wgcmVhZF9kaWJf ZmlsZWhlYWRlcihRRGF0YVN0cmVhbSAmcywgQk1QX0ZJTEVIRFIgJmJmKQorIHsKKyAgICAgLy8g cmVhZCBCTVAgZmlsZSBoZWFkZXIKK0BAIC0yMjIsMTQgKzI0OCwxNCBAQCBzdGF0aWMgYm9vbCBy ZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmksIHFpbnQ2 NCBvZmZzZXQsCisgICAgIHVpbnQgZ3JlZW5fbWFzayA9IDA7CisgICAgIHVpbnQgYmx1ZV9tYXNr ID0gMDsKKyAgICAgdWludCBhbHBoYV9tYXNrID0gMDsKKy0gICAgaW50IHJlZF9zaGlmdCA9IDA7 CistICAgIGludCBncmVlbl9zaGlmdCA9IDA7CistICAgIGludCBibHVlX3NoaWZ0ID0gMDsKKy0g ICAgaW50IGFscGhhX3NoaWZ0ID0gMDsKKy0gICAgaW50IHJlZF9zY2FsZSA9IDA7CistICAgIGlu dCBncmVlbl9zY2FsZSA9IDA7CistICAgIGludCBibHVlX3NjYWxlID0gMDsKKy0gICAgaW50IGFs cGhhX3NjYWxlID0gMDsKKysgICAgdWludCByZWRfc2hpZnQgPSAwOworKyAgICB1aW50IGdyZWVu X3NoaWZ0ID0gMDsKKysgICAgdWludCBibHVlX3NoaWZ0ID0gMDsKKysgICAgdWludCBhbHBoYV9z aGlmdCA9IDA7CisrICAgIHVpbnQgcmVkX3NjYWxlID0gMDsKKysgICAgdWludCBncmVlbl9zY2Fs ZSA9IDA7CisrICAgIHVpbnQgYmx1ZV9zY2FsZSA9IDA7CisrICAgIHVpbnQgYWxwaGFfc2NhbGUg PSAwOworIAorICAgICBpZiAoIWQtPmlzU2VxdWVudGlhbCgpKQorICAgICAgICAgZC0+c2Vlayhz dGFydHBvcyArIEJNUF9GSUxFSERSX1NJWkUgKyBiaS5iaVNpemUpOyAvLyBnb3RvIHN0YXJ0IG9m IGNvbG9ybWFwIG9yIG1hc2tzCitAQCAtMzA4LDE5ICszMzQsMTkgQEAgc3RhdGljIGJvb2wgcmVh ZF9kaWJfYm9keShRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQg b2Zmc2V0LAorICAgICAgICAgcmVkX3NoaWZ0ID0gY2FsY19zaGlmdChyZWRfbWFzayk7CisgICAg ICAgICBpZiAoKChyZWRfbWFzayA+PiByZWRfc2hpZnQpICsgMSkgPT0gMCkKKyAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CistICAgICAgICByZWRfc2NhbGUgPSAyNTYgLyAoKHJlZF9tYXNrID4+ IHJlZF9zaGlmdCkgKyAxKTsKKysgICAgICAgIHJlZF9zY2FsZSA9IGNhbGNfc2NhbGUocmVkX21h c2sgPj4gcmVkX3NoaWZ0KTsKKyAgICAgICAgIGdyZWVuX3NoaWZ0ID0gY2FsY19zaGlmdChncmVl bl9tYXNrKTsKKyAgICAgICAgIGlmICgoKGdyZWVuX21hc2sgPj4gZ3JlZW5fc2hpZnQpICsgMSkg PT0gMCkKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICBncmVlbl9zY2FsZSA9 IDI1NiAvICgoZ3JlZW5fbWFzayA+PiBncmVlbl9zaGlmdCkgKyAxKTsKKysgICAgICAgIGdyZWVu X3NjYWxlID0gY2FsY19zY2FsZShncmVlbl9tYXNrID4+IGdyZWVuX3NoaWZ0KTsKKyAgICAgICAg IGJsdWVfc2hpZnQgPSBjYWxjX3NoaWZ0KGJsdWVfbWFzayk7CisgICAgICAgICBpZiAoKChibHVl X21hc2sgPj4gYmx1ZV9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKKy0gICAgICAgIGJsdWVfc2NhbGUgPSAyNTYgLyAoKGJsdWVfbWFzayA+PiBibHVlX3NoaWZ0 KSArIDEpOworKyAgICAgICAgYmx1ZV9zY2FsZSA9IGNhbGNfc2NhbGUoYmx1ZV9tYXNrID4+IGJs dWVfc2hpZnQpOworICAgICAgICAgYWxwaGFfc2hpZnQgPSBjYWxjX3NoaWZ0KGFscGhhX21hc2sp OworICAgICAgICAgaWYgKCgoYWxwaGFfbWFzayA+PiBhbHBoYV9zaGlmdCkgKyAxKSA9PSAwKQor ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgICAgIGFscGhhX3NjYWxlID0gMjU2IC8g KChhbHBoYV9tYXNrID4+IGFscGhhX3NoaWZ0KSArIDEpOworKyAgICAgICAgYWxwaGFfc2NhbGUg PSBjYWxjX3NjYWxlKGFscGhhX21hc2sgPj4gYWxwaGFfc2hpZnQpOworICAgICB9IGVsc2UgaWYg KGNvbXAgPT0gQk1QX1JHQiAmJiAobmJpdHMgPT0gMjQgfHwgbmJpdHMgPT0gMzIpKSB7CisgICAg ICAgICBibHVlX21hc2sgPSAweDAwMDAwMGZmOworICAgICAgICAgZ3JlZW5fbWFzayA9IDB4MDAw MGZmMDA7CitAQCAtMzI4LDE3ICszNTQsMTUgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShR RGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAg ICAgICAgYmx1ZV9zaGlmdCA9IDA7CisgICAgICAgICBncmVlbl9zaGlmdCA9IDg7CisgICAgICAg ICByZWRfc2hpZnQgPSAxNjsKKy0gICAgICAgIGJsdWVfc2NhbGUgPSBncmVlbl9zY2FsZSA9IHJl ZF9zY2FsZSA9IDE7CisrICAgICAgICBibHVlX3NjYWxlID0gZ3JlZW5fc2NhbGUgPSByZWRfc2Nh bGUgPSAwOworICAgICB9IGVsc2UgaWYgKGNvbXAgPT0gQk1QX1JHQiAmJiBuYml0cyA9PSAxNikg eworICAgICAgICAgYmx1ZV9tYXNrID0gMHgwMDFmOworICAgICAgICAgZ3JlZW5fbWFzayA9IDB4 MDNlMDsKKyAgICAgICAgIHJlZF9tYXNrID0gMHg3YzAwOworICAgICAgICAgYmx1ZV9zaGlmdCA9 IDA7CistICAgICAgICBncmVlbl9zaGlmdCA9IDI7CistICAgICAgICByZWRfc2hpZnQgPSA3Owor LSAgICAgICAgcmVkX3NjYWxlID0gMTsKKy0gICAgICAgIGdyZWVuX3NjYWxlID0gMTsKKy0gICAg ICAgIGJsdWVfc2NhbGUgPSA4OworKyAgICAgICAgZ3JlZW5fc2hpZnQgPSA1OworKyAgICAgICAg cmVkX3NoaWZ0ID0gMTA7CisrICAgICAgICBibHVlX3NjYWxlID0gZ3JlZW5fc2NhbGUgPSByZWRf c2NhbGUgPSAzOworICAgICB9CisgCisgI2lmIDAKK0BAIC01NDQsMTAgKzU2OCwxMCBAQCBzdGF0 aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAm YmksIHFpbnQ2NCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICBjIHw9ICoodWNoYXIqKShi KzIpPDwxNjsKKyAgICAgICAgICAgICAgICAgaWYgKG5iaXRzID4gMjQpCisgICAgICAgICAgICAg ICAgICAgICBjIHw9ICoodWNoYXIqKShiKzMpPDwyNDsKKy0gICAgICAgICAgICAgICAgKnArKyA9 IHFSZ2JhKCgoYyAmIHJlZF9tYXNrKSA+PiByZWRfc2hpZnQpICogcmVkX3NjYWxlLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGMgJiBncmVlbl9tYXNrKSA+PiBn cmVlbl9zaGlmdCkgKiBncmVlbl9zY2FsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKChjICYgYmx1ZV9tYXNrKSA+PiBibHVlX3NoaWZ0KSAqIGJsdWVfc2NhbGUs CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcCA/ICgoYyAm IGFscGhhX21hc2spID4+IGFscGhhX3NoaWZ0KSAqIGFscGhhX3NjYWxlIDogMHhmZik7CisrICAg ICAgICAgICAgICAgICpwKysgPSBxUmdiYShhcHBseV9zY2FsZSgoYyAmIHJlZF9tYXNrKSA+PiBy ZWRfc2hpZnQsIHJlZF9zY2FsZSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBs eV9zY2FsZSgoYyAmIGdyZWVuX21hc2spID4+IGdyZWVuX3NoaWZ0LCBncmVlbl9zY2FsZSksCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBseV9zY2FsZSgoYyAmIGJsdWVfbWFzaykg Pj4gYmx1ZV9zaGlmdCwgYmx1ZV9zY2FsZSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0cmFuc3AgPyBhcHBseV9zY2FsZSgoYyAmIGFscGhhX21hc2spID4+IGFscGhhX3NoaWZ0LCBh bHBoYV9zY2FsZSkgOiAweGZmKTsKKyAgICAgICAgICAgICAgICAgYiArPSBuYml0cy84OworICAg ICAgICAgICAgIH0KKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9pbWFn ZS9xaW1hZ2UuY3BwIGIvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcAoraW5kZXggNzE1 MmFjMTYwNy4uMGRmNzcyNTY0YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3Fp bWFnZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAKK0BAIC00Njk0 LDYgKzQ2OTQsOCBAQCBRSW1hZ2UgUUltYWdlOjpzbW9vdGhTY2FsZWQoaW50IHcsIGludCBoKSBj b25zdCB7Cisgc3RhdGljIFFJbWFnZSByb3RhdGVkOTAoY29uc3QgUUltYWdlICZpbWFnZSkKKyB7 CisgICAgIFFJbWFnZSBvdXQoaW1hZ2UuaGVpZ2h0KCksIGltYWdlLndpZHRoKCksIGltYWdlLmZv cm1hdCgpKTsKKysgICAgaWYgKG91dC5pc051bGwoKSkKKysgICAgICAgIHJldHVybiBvdXQ7Cisg ICAgIGNvcHlNZXRhZGF0YSgmb3V0LCBpbWFnZSk7CisgICAgIGlmIChpbWFnZS5jb2xvckNvdW50 KCkgPiAwKQorICAgICAgICAgb3V0LnNldENvbG9yVGFibGUoaW1hZ2UuY29sb3JUYWJsZSgpKTsK K0BAIC00NzIyLDYgKzQ3MjQsOCBAQCBzdGF0aWMgUUltYWdlIHJvdGF0ZWQxODAoY29uc3QgUUlt YWdlICZpbWFnZSkKKyAgICAgICAgIHJldHVybiBpbWFnZS5taXJyb3JlZCh0cnVlLCB0cnVlKTsK KyAKKyAgICAgUUltYWdlIG91dChpbWFnZS53aWR0aCgpLCBpbWFnZS5oZWlnaHQoKSwgaW1hZ2Uu Zm9ybWF0KCkpOworKyAgICBpZiAob3V0LmlzTnVsbCgpKQorKyAgICAgICAgcmV0dXJuIG91dDsK KyAgICAgY29weU1ldGFkYXRhKCZvdXQsIGltYWdlKTsKKyAgICAgaWYgKGltYWdlLmNvbG9yQ291 bnQoKSA+IDApCisgICAgICAgICBvdXQuc2V0Q29sb3JUYWJsZShpbWFnZS5jb2xvclRhYmxlKCkp OworQEAgLTQ3MzQsNiArNDczOCw4IEBAIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDE4MChjb25zdCBR SW1hZ2UgJmltYWdlKQorIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDI3MChjb25zdCBRSW1hZ2UgJmlt YWdlKQorIHsKKyAgICAgUUltYWdlIG91dChpbWFnZS5oZWlnaHQoKSwgaW1hZ2Uud2lkdGgoKSwg aW1hZ2UuZm9ybWF0KCkpOworKyAgICBpZiAob3V0LmlzTnVsbCgpKQorKyAgICAgICAgcmV0dXJu IG91dDsKKyAgICAgY29weU1ldGFkYXRhKCZvdXQsIGltYWdlKTsKKyAgICAgaWYgKGltYWdlLmNv bG9yQ291bnQoKSA+IDApCisgICAgICAgICBvdXQuc2V0Q29sb3JUYWJsZShpbWFnZS5jb2xvclRh YmxlKCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNwcCBi L3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNwcAoraW5kZXggZDZjY2FmZjhlZC4uNDU1 MDg4MjQxYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNwcAor KysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwCitAQCAtMjUxLDcgKzI1MSw4 IEBAIHZvaWQgUUN1cnNvcjo6c2V0UG9zKFFTY3JlZW4gKnNjcmVlbiwgaW50IHgsIGludCB5KQor IHsKKyAgICAgaWYgKHNjcmVlbikgeworICAgICAgICAgaWYgKFFQbGF0Zm9ybUN1cnNvciAqY3Vy c29yID0gc2NyZWVuLT5oYW5kbGUoKS0+Y3Vyc29yKCkpIHsKKy0gICAgICAgICAgICBjb25zdCBR UG9pbnQgZGV2aWNlUG9zID0gUUhpZ2hEcGk6OnRvTmF0aXZlUGl4ZWxzKFFQb2ludCh4LCB5KSwg c2NyZWVuKTsKKysgICAgICAgICAgICBjb25zdCBRUG9pbnQgcG9zKHgsIHkpOworKyAgICAgICAg ICAgIGNvbnN0IFFQb2ludCBkZXZpY2VQb3MgPSBRSGlnaERwaTo6dG9OYXRpdmVQaXhlbHMocG9z LCBzY3JlZW4tPnZpcnR1YWxTaWJsaW5nQXQocG9zKSk7CisgICAgICAgICAgICAgLy8gTmVlZCB0 byBjaGVjaywgc2luY2Ugc29tZSBYIHNlcnZlcnMgZ2VuZXJhdGUgbnVsbCBtb3VzZSBtb3ZlCisg ICAgICAgICAgICAgLy8gZXZlbnRzLCBjYXVzaW5nIGxvb3BpbmcgaW4gYXBwbGljYXRpb25zIHdo aWNoIGNhbGwgc2V0UG9zKCkgb24KKyAgICAgICAgICAgICAvLyBldmVyeSBtb3VzZSBtb3ZlIGV2 ZW50LgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcu Y3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAKK2luZGV4IDli YmYyNzczYTkuLjNhYzRhNGQ4YjYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwv cWhpZ2hkcGlzY2FsaW5nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FoaWdoZHBp c2NhbGluZy5jcHAKK0BAIC01ODAsOSArNTgwLDggQEAgdm9pZCBRSGlnaERwaVNjYWxpbmc6OnNl dFNjcmVlbkZhY3RvcihRU2NyZWVuICpzY3JlZW4sIHFyZWFsIGZhY3RvcikKKyAgICAgZWxzZQor ICAgICAgICAgcU5hbWVkU2NyZWVuU2NhbGVGYWN0b3JzKCktPmluc2VydChuYW1lLCBmYWN0b3Ip OworIAorLSAgICAvLyBoYWNrIHRvIGZvcmNlIHJlLWV2YWx1YXRpb24gb2Ygc2NyZWVuIGdlb21l dHJ5CisgICAgIGlmIChzY3JlZW4tPmhhbmRsZSgpKQorLSAgICAgICAgc2NyZWVuLT5kX2Z1bmMo KS0+c2V0UGxhdGZvcm1TY3JlZW4oc2NyZWVuLT5oYW5kbGUoKSk7IC8vIHVwZGF0ZXMgZ2VvbWV0 cmllcyBiYXNlZCBvbiBzY2FsZSBmYWN0b3IKKysgICAgICAgIHNjcmVlbi0+ZF9mdW5jKCktPnVw ZGF0ZUxvZ2ljYWxEcGkoKTsKKyB9CisgCisgUVBvaW50IFFIaWdoRHBpU2NhbGluZzo6bWFwUG9z aXRpb25Ub05hdGl2ZShjb25zdCBRUG9pbnQgJnBvcywgY29uc3QgUVBsYXRmb3JtU2NyZWVuICpw bGF0Zm9ybVNjcmVlbikKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNl cXVlbmNlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwCitpbmRl eCBhNzViOGVmOTIwLi40ZjJkMjk0NzM5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FrZXlzZXF1ZW5jZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2Vx dWVuY2UuY3BwCitAQCAtNzAxLDYgKzcwMSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKKyAg ICAgeyBRdDo6S2V5X1RvdWNocGFkVG9nZ2xlLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1 dCIsICJUb3VjaHBhZCBUb2dnbGUiKSB9LAorICAgICB7IFF0OjpLZXlfVG91Y2hwYWRPbiwgIFFU X1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiVG91Y2hwYWQgT24iKSB9LAorICAgICB7IFF0 OjpLZXlfVG91Y2hwYWRPZmYsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlRvdWNo cGFkIE9mZiIpIH0sCisrICAgIHsgUXQ6OktleV9TaGlmdCwgIFFUX1RSQU5TTEFURV9OT09QKCJR U2hvcnRjdXQiLCAiU2hpZnQiKSB9LAorKyAgICB7IFF0OjpLZXlfQ29udHJvbCwgIFFUX1RSQU5T TEFURV9OT09QKCJRU2hvcnRjdXQiLCAiQ29udHJvbCIpIH0sCisrICAgIHsgUXQ6OktleV9BbHQs ICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIkFsdCIpIH0sCisrICAgIHsgUXQ6Oktl eV9NZXRhLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJNZXRhIikgfSwKKyAKKyB9 OworIHN0YXRpYyBRX0NPTlNURVhQUiBpbnQgbnVtS2V5TmFtZXMgPSBzaXplb2Yga2V5bmFtZSAv IHNpemVvZiAqa2V5bmFtZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBs YXRmb3Jtc2VydmljZXMuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZp Y2VzLmNwcAoraW5kZXggZmRjNmE2YzRhYS4uYWM0N2Y5OGM1ZCAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAKK0BAIC01NSw2ICs1NSwxOSBAQCBRVF9C RUdJTl9OQU1FU1BBQ0UKKyAgICAgXGJyaWVmIFRoZSBRUGxhdGZvcm1TZXJ2aWNlcyBwcm92aWRl cyB0aGUgYmFja2VuZCBmb3IgZGVza3RvcC1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCisgKi8KKyAK KysvKiEKKysgICAgXGVudW0gUVBsYXRmb3JtU2VydmljZXM6OkNhcGFiaWxpdHkKKysKKysgICAg Q2FwYWJpbGl0aWVzIGFyZSB1c2VkIHRvIGRldGVybWluZSBhIHNwZWNpZmljIHBsYXRmb3JtIHNl cnZpY2UncyBhdmFpbGFiaWxpdHkuCisrCisrICAgIFx2YWx1ZSBDb2xvclBpY2tpbmdGcm9tU2Ny ZWVuIFRoZSBwbGF0Zm9ybSBuYXRpdmVseSBzdXBwb3J0cyBjb2xvciBwaWNraW5nIGZyb20gc2Ny ZWVuLgorKyAgICBUaGlzIGNhcGFiaWxpdHkgaW5kaWNhdGVzIHRoYXQgdGhlIHBsYXRmb3JtIHN1 cHBvcnRzICJvcGFxdWUiIGNvbG9yIHBpY2tpbmcsIHdoZXJlIHRoZQorKyAgICBwbGF0Zm9ybSBp bXBsZW1lbnRzIGEgY29tcGxldGUgdXNlciBleHBlcmllbmNlIGZvciBjb2xvciBwaWNraW5nIGFu ZCBvdXRwdXRzIGEgY29sb3IuCisrICAgIFRoaXMgaXMgaW4gY29udHJhc3QgdG8gdGhlIGFwcGxp Y2F0aW9uIGltcGxlbWVudGluZyB0aGUgY29sb3IgcGlja2luZyB1c2VyIGV4cGVyaWVuY2UKKysg ICAgKHRha2luZyBjYXJlIG9mIHNob3dpbmcgYSBjcm9zcyBoYWlyLCBpbnN0cnVjdGluZyB0aGUg cGxhdGZvcm0gaW50ZWdyYXRpb24gdG8gb2J0YWluCisrICAgIHRoZSBjb2xvciBhdCBhIGdpdmVu IHBpeGVsLCBldGMuKS4gVGhlIHJlbGF0ZWQgc2VydmljZSBmdW5jdGlvbiBpcyBwaWNrQ29sb3Io KS4KKysgKi8KKysKKyBRUGxhdGZvcm1TZXJ2aWNlczo6UVBsYXRmb3JtU2VydmljZXMoKQorIHsg fQorIAorQEAgLTg1LDUgKzk4LDE2IEBAIFFCeXRlQXJyYXkgUVBsYXRmb3JtU2VydmljZXM6OmRl c2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0CisgICAgIHJldHVybiBRQnl0ZUFycmF5KCJVTktOT1dO Iik7CisgfQorIAorK1FQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqUVBsYXRmb3JtU2Vydmlj ZXM6OmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCkKKyt7CisrICAgIFFfVU5VU0VEKHBhcmVu dCk7CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKytib29sIFFQbGF0Zm9ybVNlcnZpY2Vz OjpoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3QKKyt7CisrICAgIFFf VU5VU0VEKGNhcGFiaWxpdHkpCisrICAgIHJldHVybiBmYWxzZTsKKyt9CisgCisgUVRfRU5EX05B TUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2 aWNlcy5oIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmgKK2luZGV4 IDVkZTk2Y2ZhN2QuLmE4YjJhNGNlNzEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcXBsYXRmb3Jtc2VydmljZXMuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0 Zm9ybXNlcnZpY2VzLmgKK0BAIC01MCwxNiArNTAsMzIgQEAKKyAvLworIAorICNpbmNsdWRlIDxR dEd1aS9xdGd1aWdsb2JhbC5oPgorKyNpbmNsdWRlIDxRdENvcmUvcW9iamVjdC5oPgorIAorIFFU X0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFVcmw7CisrY2xhc3MgUVdpbmRvdzsKKysKKytj bGFzcyBRX0dVSV9FWFBPUlQgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyIDogcHVibGljIFFP YmplY3QKKyt7CisrICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAgICB1c2luZyBRT2JqZWN0OjpR T2JqZWN0OworKyAgICB2aXJ0dWFsIHZvaWQgcGlja0NvbG9yKCkgPSAwOworK1FfU0lHTkFMUzoK KysgICAgdm9pZCBjb2xvclBpY2tlZChjb25zdCBRQ29sb3IgJmNvbG9yKTsKKyt9OworIAorIGNs YXNzIFFfR1VJX0VYUE9SVCBRUGxhdGZvcm1TZXJ2aWNlcworIHsKKyBwdWJsaWM6CisgICAgIFFf RElTQUJMRV9DT1BZX01PVkUoUVBsYXRmb3JtU2VydmljZXMpCisgCisrICAgIGVudW0gQ2FwYWJp bGl0eSB7CisrICAgICAgICBDb2xvclBpY2tpbmcsCisrICAgIH07CisrCisgICAgIFFQbGF0Zm9y bVNlcnZpY2VzKCk7CisgICAgIHZpcnR1YWwgflFQbGF0Zm9ybVNlcnZpY2VzKCkgeyB9CisgCitA QCAtNjcsNiArODMsMTAgQEAgcHVibGljOgorICAgICB2aXJ0dWFsIGJvb2wgb3BlbkRvY3VtZW50 KGNvbnN0IFFVcmwgJnVybCk7CisgCisgICAgIHZpcnR1YWwgUUJ5dGVBcnJheSBkZXNrdG9wRW52 aXJvbm1lbnQoKSBjb25zdDsKKysKKysgICAgdmlydHVhbCBib29sIGhhc0NhcGFiaWxpdHkoQ2Fw YWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdDsKKysKKysgICAgdmlydHVhbCBRUGxhdGZvcm1TZXJ2 aWNlQ29sb3JQaWNrZXIgKmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCA9IG51bGxwdHIpOwor IH07CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xcGxhdGZvcm10aGVtZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jt dGhlbWUuY3BwCitpbmRleCA3MTUyMWMwMzM5Li4yMzI1ODczMjQ1IDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9n dWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcAorQEAgLTE2Myw2ICsxNjMsOCBAQCBRVF9CRUdJ Tl9OQU1FU1BBQ0UKKyAKKyAgICAgXHZhbHVlIFNob3dTaG9ydGN1dHNJbkNvbnRleHRNZW51cyAo Ym9vbCkgV2hldGhlciB0byBkaXNwbGF5IHNob3J0Y3V0IGtleSBzZXF1ZW5jZXMgaW4gY29udGV4 dCBtZW51cy4KKyAKKysgICAgXHZhbHVlIEJ1dHRvblByZXNzS2V5cyAoUUxpc3Q8UXQ6OktleT4p IEEgbGlzdCBvZiBrZXlzIHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJlc3MgYnV0dG9ucyB2aWEga2V5 Ym9hcmQgaW5wdXQuCisrCisgICAgIFxzYSB0aGVtZUhpbnQoKSwgUVN0eWxlOjpwaXhlbE1ldHJp YygpCisgKi8KKyAKK0BAIC01NjMsNiArNTY1LDggQEAgUVZhcmlhbnQgUVBsYXRmb3JtVGhlbWU6 OmRlZmF1bHRUaGVtZUhpbnQoVGhlbWVIaW50IGhpbnQpCisgICAgICAgICB9CisgICAgIGNhc2Ug TW91c2VRdWlja1NlbGVjdGlvblRocmVzaG9sZDoKKyAgICAgICAgIHJldHVybiBRVmFyaWFudCgx MCk7CisrICAgIGNhc2UgQnV0dG9uUHJlc3NLZXlzOgorKyAgICAgICAgcmV0dXJuIFFWYXJpYW50 Ojpmcm9tVmFsdWUoUUxpc3Q8UXQ6OktleT4oeyBRdDo6S2V5X1NwYWNlLCBRdDo6S2V5X1NlbGVj dCB9KSk7CisgICAgIH0KKyAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisgfQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oIGIvcXRiYXNlL3NyYy9ndWkv a2VybmVsL3FwbGF0Zm9ybXRoZW1lLmgKK2luZGV4IDMxODVmYzQ1NDEuLjdlNmM5ZDU3NDAgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuaAorKysrIGIv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmgKK0BAIC0xMjAsNyArMTIwLDgg QEAgcHVibGljOgorICAgICAgICAgVG91Y2hEb3VibGVUYXBEaXN0YW5jZSwKKyAgICAgICAgIFNo b3dTaG9ydGN1dHNJbkNvbnRleHRNZW51cywKKyAgICAgICAgIEljb25GYWxsYmFja1NlYXJjaFBh dGhzLAorLSAgICAgICAgTW91c2VRdWlja1NlbGVjdGlvblRocmVzaG9sZAorKyAgICAgICAgTW91 c2VRdWlja1NlbGVjdGlvblRocmVzaG9sZCwKKysgICAgICAgIEJ1dHRvblByZXNzS2V5cworICAg ICB9OworIAorICAgICBlbnVtIERpYWxvZ1R5cGUgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xc2NyZWVuLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuLmNw cAoraW5kZXggOGUwZWIzNTExNi4uNWQxNzJhNThkZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xc2NyZWVuLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3Jl ZW4uY3BwCitAQCAtNzcsNiArNzcsMTIgQEAgUVNjcmVlbjo6UVNjcmVlbihRUGxhdGZvcm1TY3Jl ZW4gKnNjcmVlbikKKyAgICAgZC0+c2V0UGxhdGZvcm1TY3JlZW4oc2NyZWVuKTsKKyB9CisgCisr dm9pZCBRU2NyZWVuUHJpdmF0ZTo6dXBkYXRlTG9naWNhbERwaSgpCisreworKyAgICBsb2dpY2Fs RHBpID0gUVBsYXRmb3JtU2NyZWVuOjpvdmVycmlkZURwaShwbGF0Zm9ybVNjcmVlbi0+bG9naWNh bERwaSgpKTsKKysgICAgdXBkYXRlR2VvbWV0cmllc1dpdGhTaWduYWxzKCk7IC8vIHVwZGF0ZXMg Z2VvbWV0cmllcyBiYXNlZCBvbiBzY2FsZSBmYWN0b3IKKyt9CisrCisgdm9pZCBRU2NyZWVuUHJp dmF0ZTo6dXBkYXRlR2VvbWV0cmllc1dpdGhTaWduYWxzKCkKKyB7CisgICAgIGNvbnN0IFFSZWN0 IG9sZEdlb21ldHJ5ID0gZ2VvbWV0cnk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FzY3JlZW5fcC5oIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW5fcC5oCitpbmRl eCA3ZGE1NDJjMjVlLi5lNTBmYzMxOTBiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FzY3JlZW5fcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmgK K0BAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKKyAgICAgICAgIGdlb21ldHJ5ID0gcGxhdGZvcm1T Y3JlZW4tPmRldmljZUluZGVwZW5kZW50R2VvbWV0cnkoKTsKKyAgICAgICAgIGF2YWlsYWJsZUdl b21ldHJ5ID0gUUhpZ2hEcGk6OmZyb21OYXRpdmUocGxhdGZvcm1TY3JlZW4tPmF2YWlsYWJsZUdl b21ldHJ5KCksIFFIaWdoRHBpU2NhbGluZzo6ZmFjdG9yKHBsYXRmb3JtU2NyZWVuKSwgZ2VvbWV0 cnkudG9wTGVmdCgpKTsKKyAgICAgfQorKyAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxEcGkoKTsKKyAK KyAgICAgdm9pZCB1cGRhdGVQcmltYXJ5T3JpZW50YXRpb24oKTsKKyAgICAgdm9pZCB1cGRhdGVH ZW9tZXRyaWVzV2l0aFNpZ25hbHMoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWlu dGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJsZW5k ZnVuY3Rpb25zX3AuaAoraW5kZXggMDgwZGE5OGVjNC4uNjk5N2Q2MmIzYyAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgKKysrKyBiL3F0YmFz ZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgKK0BAIC0yNDYsMjUgKzI0Niwz MiBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMs IGludCBkYnBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHVkeCwg aW50IGR2ZHgsIGludCBkdWR5LCBpbnQgZHZkeSwgaW50IHUwLCBpbnQgdjAsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEJsZW5kZXIgYmxlbmRlcikKKyB7CistICAgIGludCBm cm9tWSA9IHFNYXgocVJvdW5kKHRvcFkpLCBjbGlwLnRvcCgpKTsKKy0gICAgaW50IHRvWSA9IHFN aW4ocVJvdW5kKGJvdHRvbVkpLCBjbGlwLnRvcCgpICsgY2xpcC5oZWlnaHQoKSk7CisrICAgIHFp bnQ2NCBmcm9tWSA9IHFNYXgocVJvdW5kKHRvcFkpLCBjbGlwLnRvcCgpKTsKKysgICAgcWludDY0 IHRvWSA9IHFNaW4ocVJvdW5kKGJvdHRvbVkpLCBjbGlwLnRvcCgpICsgY2xpcC5oZWlnaHQoKSk7 CisgICAgIGlmIChmcm9tWSA+PSB0b1kpCisgICAgICAgICByZXR1cm47CisgCisgICAgIHFyZWFs IGxlZnRTbG9wZSA9IChib3R0b21MZWZ0LnggLSB0b3BMZWZ0LngpIC8gKGJvdHRvbUxlZnQueSAt IHRvcExlZnQueSk7CisgICAgIHFyZWFsIHJpZ2h0U2xvcGUgPSAoYm90dG9tUmlnaHQueCAtIHRv cFJpZ2h0LngpIC8gKGJvdHRvbVJpZ2h0LnkgLSB0b3BSaWdodC55KTsKKy0gICAgaW50IGR4X2wg PSBpbnQobGVmdFNsb3BlICogMHgxMDAwMCk7CistICAgIGludCBkeF9yID0gaW50KHJpZ2h0U2xv cGUgKiAweDEwMDAwKTsKKy0gICAgaW50IHhfbCA9IGludCgodG9wTGVmdC54ICsgKHFyZWFsKDAu NSkgKyBmcm9tWSAtIHRvcExlZnQueSkgKiBsZWZ0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAw MDApOworLSAgICBpbnQgeF9yID0gaW50KCh0b3BSaWdodC54ICsgKHFyZWFsKDAuNSkgKyBmcm9t WSAtIHRvcFJpZ2h0LnkpICogcmlnaHRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7Cist CistICAgIGludCBmcm9tWCwgdG9YLCB4MSwgeDIsIHUsIHYsIGksIGlpOworKyAgICBxaW50NjQg ZHhfbCA9IHFpbnQ2NChsZWZ0U2xvcGUgKiAweDEwMDAwKTsKKysgICAgcWludDY0IGR4X3IgPSBx aW50NjQocmlnaHRTbG9wZSAqIDB4MTAwMDApOworKyAgICBxaW50NjQgeF9sID0gcWludDY0KCh0 b3BMZWZ0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wTGVmdC55KSAqIGxlZnRTbG9wZSAr IHFyZWFsKDAuNSkpICogMHgxMDAwMCk7CisrICAgIHFpbnQ2NCB4X3IgPSBxaW50NjQoKHRvcFJp Z2h0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wUmlnaHQueSkgKiByaWdodFNsb3BlICsg cXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKysKKysgICAgcWludDY0IHNvdXJjZVJlY3RUb3AgPSBx aW50NjQoc291cmNlUmVjdC50b3AoKSk7CisrICAgIHFpbnQ2NCBzb3VyY2VSZWN0TGVmdCA9IHFp bnQ2NChzb3VyY2VSZWN0LmxlZnQoKSk7CisrICAgIHFpbnQ2NCBzb3VyY2VSZWN0V2lkdGggPSBx aW50NjQoc291cmNlUmVjdC53aWR0aCgpKTsKKysgICAgcWludDY0IHNvdXJjZVJlY3RIZWlnaHQg PSBxaW50NjQoc291cmNlUmVjdC5oZWlnaHQoKSk7CisrICAgIHFpbnQ2NCBjbGlwTGVmdCA9IHFp bnQ2NChjbGlwLmxlZnQoKSk7CisrICAgIHFpbnQ2NCBjbGlwV2lkdGggPSBxaW50NjQoY2xpcC53 aWR0aCgpKTsKKysKKysgICAgcWludDY0IGZyb21YLCB0b1gsIHgxLCB4MiwgdSwgdiwgaSwgaWk7 CisgICAgIERlc3RUICpsaW5lOworLSAgICBmb3IgKGludCB5ID0gZnJvbVk7IHkgPCB0b1k7ICsr eSkgeworKyAgICBmb3IgKHFpbnQ2NCB5ID0gZnJvbVk7IHkgPCB0b1k7ICsreSkgeworICAgICAg ICAgbGluZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGVzdFQgKj4ocmVpbnRlcnByZXRfY2FzdDx1Y2hh ciAqPihkZXN0UGl4ZWxzKSArIHkgKiBkYnBsKTsKKyAKKy0gICAgICAgIGZyb21YID0gcU1heCh4 X2wgPj4gMTYsIGNsaXAubGVmdCgpKTsKKy0gICAgICAgIHRvWCA9IHFNaW4oeF9yID4+IDE2LCBj bGlwLmxlZnQoKSArIGNsaXAud2lkdGgoKSk7CisrICAgICAgICBmcm9tWCA9IHFNYXgoeF9sID4+ IDE2LCBjbGlwTGVmdCk7CisrICAgICAgICB0b1ggPSBxTWluKHhfciA+PiAxNiwgY2xpcExlZnQg KyBjbGlwV2lkdGgpOworICAgICAgICAgaWYgKGZyb21YIDwgdG9YKSB7CisgICAgICAgICAgICAg Ly8gQmVjYXVzZSBvZiByb3VuZGluZywgd2UgY2FuIGdldCBzb3VyY2UgY29vcmRpbmF0ZXMgb3V0 c2lkZSB0aGUgc291cmNlIGltYWdlLgorICAgICAgICAgICAgIC8vIENsYW1wIHRoZXNlIGNvb3Jk aW5hdGVzIHRvIHRoZSBzb3VyY2UgcmVjdCB0byBhdm9pZCBzZWdtZW50YXRpb24gZmF1bHQgYW5k CitAQCAtMjc1LDEwICsyODIsMTAgQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXpl KERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICB1ID0geDEgKiBkdWR4 ICsgeSAqIGR1ZHkgKyB1MDsKKyAgICAgICAgICAgICB2ID0geDEgKiBkdmR4ICsgeSAqIGR2ZHkg KyB2MDsKKyAgICAgICAgICAgICBmb3IgKDsgeDEgPCB0b1g7ICsreDEpIHsKKy0gICAgICAgICAg ICAgICAgaW50IHV1ID0gdSA+PiAxNjsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gdiA+PiAx NjsKKy0gICAgICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJjZVJlY3QubGVmdCgpICYmIHV1IDwg c291cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VSZWN0LndpZHRoKCkKKy0gICAgICAgICAgICAgICAg ICAgICYmIHZ2ID49IHNvdXJjZVJlY3QudG9wKCkgJiYgdnYgPCBzb3VyY2VSZWN0LnRvcCgpICsg c291cmNlUmVjdC5oZWlnaHQoKSkgeworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSB1ID4+ IDE2OworKyAgICAgICAgICAgICAgICBxaW50NjQgdnYgPSB2ID4+IDE2OworKyAgICAgICAgICAg ICAgICBpZiAodXUgPj0gc291cmNlUmVjdExlZnQgJiYgdXUgPCBzb3VyY2VSZWN0TGVmdCArIHNv dXJjZVJlY3RXaWR0aAorKyAgICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVjdFRv cCAmJiB2diA8IHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0KSB7CisgICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB1 ICs9IGR1ZHg7CitAQCAtMjkwLDEwICsyOTcsMTAgQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2Vf cmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICB1ID0g KHgyIC0gMSkgKiBkdWR4ICsgeSAqIGR1ZHkgKyB1MDsKKyAgICAgICAgICAgICB2ID0gKHgyIC0g MSkgKiBkdmR4ICsgeSAqIGR2ZHkgKyB2MDsKKyAgICAgICAgICAgICBmb3IgKDsgeDIgPiB4MTsg LS14MikgeworLSAgICAgICAgICAgICAgICBpbnQgdXUgPSB1ID4+IDE2OworLSAgICAgICAgICAg ICAgICBpbnQgdnYgPSB2ID4+IDE2OworLSAgICAgICAgICAgICAgICBpZiAodXUgPj0gc291cmNl UmVjdC5sZWZ0KCkgJiYgdXUgPCBzb3VyY2VSZWN0LmxlZnQoKSArIHNvdXJjZVJlY3Qud2lkdGgo KQorLSAgICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVjdC50b3AoKSAmJiB2diA8 IHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgpKSB7CisrICAgICAgICAgICAg ICAgIHFpbnQ2NCB1dSA9IHUgPj4gMTY7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9IHYg Pj4gMTY7CisrICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0TGVmdCAmJiB1dSA8 IHNvdXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoCisrICAgICAgICAgICAgICAgICAgICAm JiB2diA+PSBzb3VyY2VSZWN0VG9wICYmIHZ2IDwgc291cmNlUmVjdFRvcCArIHNvdXJjZVJlY3RI ZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgIHUgLT0gZHVkeDsKK0BAIC0zMDgsOCArMzE1LDggQEAgdm9pZCBx dF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwK KyAgICAgICAgICAgICAvLyBCZWdpbm5pbmcgb2YgdGhlIHNjYW4gbGluZSwgd2l0aCBwZXItcGl4 ZWwgY2hlY2tzLgorICAgICAgICAgICAgIGkgPSB4MSAtIGZyb21YOworICAgICAgICAgICAgIHdo aWxlIChpKSB7CistICAgICAgICAgICAgICAgIGludCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0Lmxl ZnQoKSwgdSA+PiAxNiwgc291cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VSZWN0LndpZHRoKCkgLSAx KTsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3QudG9wKCksIHYg Pj4gMTYsIHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgpIC0gMSk7CisrICAg ICAgICAgICAgICAgIHFpbnQ2NCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0TGVmdCwgdSA+PiAxNiwg c291cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGggLSAxKTsKKysgICAgICAgICAgICAgICAg cWludDY0IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3RUb3AsIHYgPj4gMTYsIHNvdXJjZVJlY3RUb3Ag KyBzb3VyY2VSZWN0SGVpZ2h0IC0gMSk7CisgICAgICAgICAgICAgICAgIGJsZW5kZXIud3JpdGUo bGluZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBTcmNUICo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u c3QgdWNoYXIgKj4oc3JjUGl4ZWxzKSArIHZ2ICogc2JwbClbdXVdKTsKKyAgICAgICAgICAgICAg ICAgdSArPSBkdWR4OworICAgICAgICAgICAgICAgICB2ICs9IGR2ZHg7CitAQCAtMzQ4LDggKzM1 NSw4IEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVs cywgaW50IGRicGwsCisgICAgICAgICAgICAgLy8gRW5kIG9mIHRoZSBzY2FuIGxpbmUsIHdpdGgg cGVyLXBpeGVsIGNoZWNrcy4KKyAgICAgICAgICAgICBpID0gdG9YIC0geDI7CisgICAgICAgICAg ICAgd2hpbGUgKGkpIHsKKy0gICAgICAgICAgICAgICAgaW50IHV1ID0gcUJvdW5kKHNvdXJjZVJl Y3QubGVmdCgpLCB1ID4+IDE2LCBzb3VyY2VSZWN0LmxlZnQoKSArIHNvdXJjZVJlY3Qud2lkdGgo KSAtIDEpOworLSAgICAgICAgICAgICAgICBpbnQgdnYgPSBxQm91bmQoc291cmNlUmVjdC50b3Ao KSwgdiA+PiAxNiwgc291cmNlUmVjdC50b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkgLSAxKTsK KysgICAgICAgICAgICAgICAgcWludDY0IHV1ID0gcUJvdW5kKHNvdXJjZVJlY3RMZWZ0LCB1ID4+ IDE2LCBzb3VyY2VSZWN0TGVmdCArIHNvdXJjZVJlY3RXaWR0aCAtIDEpOworKyAgICAgICAgICAg ICAgICBxaW50NjQgdnYgPSBxQm91bmQoc291cmNlUmVjdFRvcCwgdiA+PiAxNiwgc291cmNlUmVj dFRvcCArIHNvdXJjZVJlY3RIZWlnaHQgLSAxKTsKKyAgICAgICAgICAgICAgICAgYmxlbmRlci53 cml0ZShsaW5lLCByZWludGVycHJldF9jYXN0PGNvbnN0IFNyY1QgKj4ocmVpbnRlcnByZXRfY2Fz dDxjb25zdCB1Y2hhciAqPihzcmNQaXhlbHMpICsgdnYgKiBzYnBsKVt1dV0pOworICAgICAgICAg ICAgICAgICB1ICs9IGR1ZHg7CisgICAgICAgICAgICAgICAgIHYgKz0gZHZkeDsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29sb3J0cmNsdXRfcC5oIGIvcXRiYXNlL3Ny Yy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaAoraW5kZXggNzZhNmE2MDgwMy4uMjRmZDUy MmU2YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9w LmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9wLmgKK0BAIC0x MTgsNiArMTE4LDcgQEAgcHVibGljOgorICAgICAgICAgcmV0dXJuIFFSZ2JhNjQ6OmZyb21SZ2Jh NjQociwgZywgYiwgcUFscGhhKHJnYjMyKSAqIDI1Nyk7CisgI2VuZGlmCisgICAgIH0KKysgICAg UVJnYmE2NCB0b0xpbmVhcjY0KFFSZ2JhNjQpIGNvbnN0ID0gZGVsZXRlOworIAorICAgICBRUmdi IHRvTGluZWFyKFFSZ2IgcmdiMzIpIGNvbnN0CisgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2d1aS9wYWludGluZy9xZHJhd2hlbHBlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGlu Zy9xZHJhd2hlbHBlci5jcHAKK2luZGV4IGE2MTc5MzUwOGEuLjViYTJkMjc3YjcgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xZHJhd2hlbHBlci5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvZ3VpL3BhaW50aW5nL3FkcmF3aGVscGVyLmNwcAorQEAgLTYwOTEsNyArNjA5MSw3IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBhbHBoYXJnYmJsZW5kX2FyZ2IzMihxdWludDMyICpkc3QsIHVp bnQgY292ZXJhZ2UsIGNvbnN0IFFSZ2JhCisgc3RhdGljIGlubGluZSB2b2lkIHJnYkJsZW5kUGl4 ZWwoUVJnYmE2NCAmZHN0LCBpbnQgY292ZXJhZ2UsIFFSZ2JhNjQgc2xpbmVhciwgY29uc3QgUUNv bG9yVHJjTHV0ICpjb2xvclByb2ZpbGUpCisgeworICAgICAvLyBEbyBhIGdhbW1hY29ycmVjdGVk IFJHQiBhbHBoYWJsZW5kLi4uCistICAgIGNvbnN0IFFSZ2JhNjQgZGxpbmVhciA9IGNvbG9yUHJv ZmlsZSA/IGNvbG9yUHJvZmlsZS0+dG9MaW5lYXI2NChkc3QpIDogZHN0OworKyAgICBjb25zdCBR UmdiYTY0IGRsaW5lYXIgPSBjb2xvclByb2ZpbGUgPyBjb2xvclByb2ZpbGUtPnRvTGluZWFyKGRz dCkgOiBkc3Q7CisgCisgICAgIFFSZ2JhNjQgYmxlbmQgPSByZ2JCbGVuZChkbGluZWFyLCBzbGlu ZWFyLCBjb3ZlcmFnZSk7CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRl bmdpbmVfcmFzdGVyLmNwcAoraW5kZXggMjgzOTIzZGU1Mi4uZjA4ZWI5Y2JlZSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyLmNwcAorQEAgLTU2 MCwzMSArNTYwLDYgQEAgdm9pZCBRUmFzdGVyUGFpbnRFbmdpbmU6OnVwZGF0ZU1hdHJpeChjb25z dCBRVHJhbnNmb3JtICZtYXRyaXgpCisgICAgIFFSYXN0ZXJQYWludEVuZ2luZVN0YXRlICpzID0g c3RhdGUoKTsKKyAgICAgLy8gRkFMQ09OOiBnZXQgcmlkIG9mIHRoaXMgbGluZSwgc2VlIGRyYXdJ bWFnZSBjYWxsIGJlbG93LgorICAgICBzLT5tYXRyaXggPSBtYXRyaXg7CistICAgIFFUcmFuc2Zv cm06OlRyYW5zZm9ybWF0aW9uVHlwZSB0eG9wID0gcy0+bWF0cml4LnR5cGUoKTsKKy0KKy0gICAg c3dpdGNoICh0eG9wKSB7CistCistICAgIGNhc2UgUVRyYW5zZm9ybTo6VHhOb25lOgorLSAgICAg ICAgcy0+ZmxhZ3MuaW50X3hmb3JtID0gdHJ1ZTsKKy0gICAgICAgIGJyZWFrOworLQorLSAgICBj YXNlIFFUcmFuc2Zvcm06OlR4VHJhbnNsYXRlOgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hmb3Jt ID0gcXJlYWwoaW50KHMtPm1hdHJpeC5keCgpKSkgPT0gcy0+bWF0cml4LmR4KCkKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5keSgpKSkgPT0gcy0+ bWF0cml4LmR5KCk7CistICAgICAgICBicmVhazsKKy0KKy0gICAgY2FzZSBRVHJhbnNmb3JtOjpU eFNjYWxlOgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hmb3JtID0gcXJlYWwoaW50KHMtPm1hdHJp eC5keCgpKSkgPT0gcy0+bWF0cml4LmR4KCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg JiYgcXJlYWwoaW50KHMtPm1hdHJpeC5keSgpKSkgPT0gcy0+bWF0cml4LmR5KCkKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5tMTEoKSkpID09IHMt Pm1hdHJpeC5tMTEoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBxcmVhbChpbnQo cy0+bWF0cml4Lm0yMigpKSkgPT0gcy0+bWF0cml4Lm0yMigpOworLSAgICAgICAgYnJlYWs7Cist CistICAgIGRlZmF1bHQ6IC8vIHNoZWFyIC8gcGVyc3BlY3RpdmUuLi4KKy0gICAgICAgIHMtPmZs YWdzLmludF94Zm9ybSA9IGZhbHNlOworLSAgICAgICAgYnJlYWs7CistICAgIH0KKy0KKyAgICAg cy0+ZmxhZ3MudHhfbm9zaGVhciA9IHF0X3NjYWxlRm9yVHJhbnNmb3JtKHMtPm1hdHJpeCwgJnMt PnR4c2NhbGUpOworIAorICAgICBlbnN1cmVPdXRsaW5lTWFwcGVyKCk7CitAQCAtNjE3LDcgKzU5 Miw2IEBAIFFSYXN0ZXJQYWludEVuZ2luZVN0YXRlOjpRUmFzdGVyUGFpbnRFbmdpbmVTdGF0ZSgp CisgICAgIGZsYWdzLmJpbGluZWFyID0gZmFsc2U7CisgICAgIGZsYWdzLmxlZ2FjeV9yb3VuZGlu ZyA9IGZhbHNlOworICAgICBmbGFncy5mYXN0X3RleHQgPSB0cnVlOworLSAgICBmbGFncy5pbnRf eGZvcm0gPSB0cnVlOworICAgICBmbGFncy50eF9ub3NoZWFyID0gdHJ1ZTsKKyAgICAgZmxhZ3Mu ZmFzdF9pbWFnZXMgPSB0cnVlOworIAorQEAgLTE3OTMsNyArMTc2Nyw3IEBAIHZvaWQgUVJhc3Rl clBhaW50RW5naW5lOjpmaWxsKGNvbnN0IFFWZWN0b3JQYXRoICZwYXRoLCBjb25zdCBRQnJ1c2gg JmJydXNoKQorICAgICBRUmVjdEYgY3BSZWN0ID0gcGF0aC5jb250cm9sUG9pbnRSZWN0KCk7Cisg ICAgIGNvbnN0IFFSZWN0RiBwYXRoRGV2aWNlUmVjdCA9IHMtPm1hdHJpeC5tYXBSZWN0KGNwUmVj dCk7CisgICAgIC8vIFNraXAgcGF0aHMgdGhhdCBieSBjb25zZXJ2YXRpdmUgZXN0aW1hdGVzIGFy ZSBjb21wbGV0ZWx5IG91dHNpZGUgdGhlIHBhaW50IGRldmljZS4KKy0gICAgaWYgKCFwYXRoRGV2 aWNlUmVjdC5pbnRlcnNlY3RzKFFSZWN0RihkLT5kZXZpY2VSZWN0KSkpCisrICAgIGlmICghcGF0 aERldmljZVJlY3QuaW50ZXJzZWN0cyhRUmVjdEYoZC0+ZGV2aWNlUmVjdCkpIHx8ICFwYXRoRGV2 aWNlUmVjdC5pc1ZhbGlkKCkpCisgICAgICAgICByZXR1cm47CisgCisgICAgIFByb2Nlc3NTcGFu cyBibGVuZCA9IGQtPmdldEJydXNoRnVuYyhwYXRoRGV2aWNlUmVjdCwgJnMtPmJydXNoRGF0YSk7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rl cl9wLmggYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaAor aW5kZXggMDg5YWFkYzNmNy4uYmY3MzYzZDVhYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9w YWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaAorQEAgLTExMSw3ICsxMTEsNiBAQCBwdWJs aWM6CisgICAgICAgICB1aW50IGJpbGluZWFyIDogMTsKKyAgICAgICAgIHVpbnQgbGVnYWN5X3Jv dW5kaW5nIDogMTsKKyAgICAgICAgIHVpbnQgZmFzdF90ZXh0IDogMTsKKy0gICAgICAgIHVpbnQg aW50X3hmb3JtIDogMTsKKyAgICAgICAgIHVpbnQgdHhfbm9zaGVhciA6IDE7CisgICAgICAgICB1 aW50IGZhc3RfaW1hZ2VzIDogMTsKKyAgICAgfTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBh aW50ZXJwYXRoLmNwcAoraW5kZXggZjk1NDRhMzI0MS4uZDgwZmFmZWFmMSAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAKKysrKyBiL3F0YmFzZS9z cmMvZ3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAKK0BAIC0xMjUzLDcgKzEyNTMsNyBAQCB2 b2lkIFFQYWludGVyUGF0aDo6YWRkVGV4dChjb25zdCBRUG9pbnRGICZwb2ludCwgY29uc3QgUUZv bnQgJmYsIGNvbnN0IFFTdHJpbmcgJgorIAorICAgICAgICAgaWYgKHNpLmFuYWx5c2lzLmZsYWdz IDwgUVNjcmlwdEFuYWx5c2lzOjpUYWJPck9iamVjdCkgeworICAgICAgICAgICAgIFFHbHlwaExh eW91dCBnbHlwaHMgPSBlbmctPnNoYXBlZEdseXBocygmc2kpOworLSAgICAgICAgICAgIFFGb250 RW5naW5lICpmZSA9IGYuZC0+ZW5naW5lRm9yU2NyaXB0KHNpLmFuYWx5c2lzLnNjcmlwdCk7Cisr ICAgICAgICAgICAgUUZvbnRFbmdpbmUgKmZlID0gZW5nLT5mb250RW5naW5lKHNpKTsKKyAgICAg ICAgICAgICBRX0FTU0VSVChmZSk7CisgICAgICAgICAgICAgZmUtPmFkZE91dGxpbmVUb1BhdGgo eCwgeSwgZ2x5cGhzLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp LmFuYWx5c2lzLmJpZGlMZXZlbCAlIDIKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWlu dGluZy9xcGF0aGNsaXBwZXJfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlw cGVyX3AuaAoraW5kZXggOTQ0NGE4N2I3MS4uMThmNjRjNWU4YyAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvZ3VpL3BhaW50aW5nL3FwYXRoY2xpcHBlcl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FwYXRoY2xpcHBlcl9wLmgKK0BAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgor ICAgICBpbnQgdmVydGV4KERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0OworIAorIHByaXZhdGU6 CistICAgIGludCBtX25leHRbMl1bMl07CisrICAgIGludCBtX25leHRbMl1bMl0gPSB7IHsgLTEs IC0xIH0sIHsgLTEsIC0xIH0gfTsKKyB9OworIAorIGNsYXNzIFFQYXRoU2VnbWVudHMKK0BAIC0y OTYsMTAgKzI5Niw2IEBAIGlubGluZSBRUGF0aEVkZ2U6OlFQYXRoRWRnZShpbnQgYSwgaW50IGIp CisgICAgICwgYW5nbGUoMCkKKyAgICAgLCBpbnZBbmdsZSgwKQorIHsKKy0gICAgbV9uZXh0WzBd WzBdID0gLTE7CistICAgIG1fbmV4dFsxXVswXSA9IC0xOworLSAgICBtX25leHRbMF1bMF0gPSAt MTsKKy0gICAgbV9uZXh0WzFdWzBdID0gLTE7CisgfQorIAorIGlubGluZSBpbnQgUVBhdGhFZGdl OjpuZXh0KFRyYXZlcnNhbCB0cmF2ZXJzYWwsIERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAgYi9xdGJhc2Uvc3Jj L2d1aS9wYWludGluZy9xcGRmLmNwcAoraW5kZXggMzA2Njc0NGYxYi4uMmM4ZDNjM2I1MyAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYuY3BwCisrKysgYi9xdGJhc2Uv c3JjL2d1aS9wYWludGluZy9xcGRmLmNwcAorQEAgLTI3NjAsNiArMjc2MCw4IEBAIGludCBRUGRm RW5naW5lUHJpdmF0ZTo6YWRkQnJ1c2hQYXR0ZXJuKGNvbnN0IFFUcmFuc2Zvcm0gJm0sIGJvb2wg KnNwZWNpZnlDb2xvciwKKyAgICAgICAgIHJldHVybiBncmFkaWVudEJydXNoKGJydXNoLCBtYXRy aXgsIGdTdGF0ZU9iamVjdCk7CisgICAgIH0KKyAKKysgICAgbWF0cml4ID0gYnJ1c2gudHJhbnNm b3JtKCkgKiBtYXRyaXg7CisrCisgICAgIGlmICgoIWJydXNoLmlzT3BhcXVlKCkgJiYgYnJ1c2gu c3R5bGUoKSA8IFF0OjpMaW5lYXJHcmFkaWVudFBhdHRlcm4pIHx8IG9wYWNpdHkgIT0gMS4wKQor ICAgICAgICAgKmdTdGF0ZU9iamVjdCA9IGFkZENvbnN0YW50QWxwaGFPYmplY3QocVJvdW5kKGJy dXNoLmNvbG9yKCkuYWxwaGEoKSAqIG9wYWNpdHkpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcVJvdW5kKHBlbi5jb2xvcigpLmFscGhhKCkgKiBvcGFj aXR5KSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9rZXIuY3Bw IGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9rZXIuY3BwCitpbmRleCBjYjVkMzk1ZTgw Li4zYjYzNTdhODkzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9r ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAKK0BAIC0x MTgyLDYgKzExODIsNyBAQCB2b2lkIFFEYXNoU3Ryb2tlcjo6cHJvY2Vzc0N1cnJlbnRTdWJwYXRo KCkKKyAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBlbnRpcmUgbGluZSBzaG91bGQgYmUgY2xpcHBl ZCBhd2F5IG9yIHNpbXBsaWZpZWQKKyAgICAgICAgIGJvb2wgY2xpcEl0ID0gY2xpcHBpbmcgJiYg IWxpbmVJbnRlcnNlY3RzUmVjdChwcmV2LCBlLCBjbGlwX3RsLCBjbGlwX2JyKTsKKyAgICAgICAg IGJvb2wgc2tpcERhc2hpbmcgPSBlbGVuICogaW52U3VtTGVuZ3RoID4gcmVwZXRpdGlvbkxpbWl0 KCk7CisrICAgICAgICBpbnQgbWF4RGFzaGVzID0gZGFzaENvdW50OworICAgICAgICAgaWYgKHNr aXBEYXNoaW5nIHx8IGNsaXBJdCkgeworICAgICAgICAgICAgIC8vIEN1dCBhd2F5IGZ1bGwgZGFz aCBzZXF1ZW5jZXMuCisgICAgICAgICAgICAgZWxlbiAtPSBzdGQ6OmZsb29yKGVsZW4gKiBpbnZT dW1MZW5ndGgpICogc3VtTGVuZ3RoOworQEAgLTExOTYsNyArMTE5Nyw3IEBAIHZvaWQgUURhc2hT dHJva2VyOjpwcm9jZXNzQ3VycmVudFN1YnBhdGgoKQorICAgICAgICAgICAgICAgICAgICAgcG9z ID0gZXN0b3A7IC8vIG1vdmUgcG9zIHRvIG5leHQgcGF0aCBlbGVtZW50CisgICAgICAgICAgICAg ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gRGFzaCBp cyBvbiB0aGlzIGxpbmUKKy0gICAgICAgICAgICAgICAgICAgIHBvcyA9IGRwb3MgKyBlc3RhcnQ7 CisrICAgICAgICAgICAgICAgICAgICBwb3MgPSAtLW1heERhc2hlcyA+IDAgPyBkcG9zICsgZXN0 YXJ0IDogZXN0b3A7CisgICAgICAgICAgICAgICAgICAgICBkb25lID0gcG9zID49IGVzdG9wOwor ICAgICAgICAgICAgICAgICAgICAgaWYgKCsraWRhc2ggPj0gZGFzaENvdW50KQorICAgICAgICAg ICAgICAgICAgICAgICAgIGlkYXNoID0gMDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9w YWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29uIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXRf YXR0cmlidXRpb24uanNvbgoraW5kZXggN2IxNmU4YzIxMS4uMGU4N2QzMGFhMiAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24KKysrKyBiL3F0 YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24KK0BAIC0xMCw3ICsxMCw3 IEBACisgICAgICAgICAiSG9tZXBhZ2UiOiAiaHR0cDovL3d3dy5mcmVldHlwZS5vcmciLAorICAg ICAgICAgIkxpY2Vuc2UiOiAiRnJlZXR5cGUgUHJvamVjdCBMaWNlbnNlIG9yIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHYyLjAgb25seSIsCisgICAgICAgICAiTGljZW5zZUlkIjogIkZUTCBv ciBHUEwtMi4wIiwKKy0gICAgICAgICJMaWNlbnNlRmlsZSI6ICIuLi8uLi8zcmRwYXJ0eS9mcmVl dHlwZS9kb2NzL0xJQ0VOU0UuVFhUIiwKKysgICAgICAgICJMaWNlbnNlRmlsZSI6ICIuLi8uLi8z cmRwYXJ0eS9mcmVldHlwZS9MSUNFTlNFLlRYVCIsCisgICAgICAgICAiQ29weXJpZ2h0IjogIkNv cHlyaWdodCAyMDAwLTIwMTYgYnkgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdl cm5lciBMZW1iZXJnLiIKKyAgICAgfSwKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Z3VpL3JoaS9xc2hhZGVyX3BfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9wLmgK K2luZGV4IGVjOWQyNTk3MWYuLjRhNWE3YTZkNTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1 aS9yaGkvcXNoYWRlcl9wX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9w LmgKK0BAIC02OCwxMyArNjgsMTMgQEAgc3RydWN0IFFfR1VJX0VYUE9SVCBRU2hhZGVyUHJpdmF0 ZQorICAgICB7CisgICAgIH0KKyAKKy0gICAgUVNoYWRlclByaXZhdGUoY29uc3QgUVNoYWRlclBy aXZhdGUgKm90aGVyKQorKyAgICBRU2hhZGVyUHJpdmF0ZShjb25zdCBRU2hhZGVyUHJpdmF0ZSAm b3RoZXIpCisgICAgICAgICA6IHJlZigxKSwKKy0gICAgICAgICAgcXNiVmVyc2lvbihvdGhlci0+ cXNiVmVyc2lvbiksCistICAgICAgICAgIHN0YWdlKG90aGVyLT5zdGFnZSksCistICAgICAgICAg IGRlc2Mob3RoZXItPmRlc2MpLAorLSAgICAgICAgICBzaGFkZXJzKG90aGVyLT5zaGFkZXJzKSwK Ky0gICAgICAgICAgYmluZGluZ3Mob3RoZXItPmJpbmRpbmdzKQorKyAgICAgICAgICBxc2JWZXJz aW9uKG90aGVyLnFzYlZlcnNpb24pLAorKyAgICAgICAgICBzdGFnZShvdGhlci5zdGFnZSksCisr ICAgICAgICAgIGRlc2Mob3RoZXIuZGVzYyksCisrICAgICAgICAgIHNoYWRlcnMob3RoZXIuc2hh ZGVycyksCisrICAgICAgICAgIGJpbmRpbmdzKG90aGVyLmJpbmRpbmdzKQorICAgICB7CisgICAg IH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9u X3BfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9wX3AuaAoraW5k ZXggZWMyYjBiNmI0Yy4uM2RhMzNhOGEyYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3Jo aS9xc2hhZGVyZGVzY3JpcHRpb25fcF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hh ZGVyZGVzY3JpcHRpb25fcF9wLmgKK0BAIC02MywxNiArNjMsMTYgQEAgc3RydWN0IFFfR1VJX0VY UE9SVCBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlCisgICAgICAgICBsb2NhbFNpemVbMF0gPSBs b2NhbFNpemVbMV0gPSBsb2NhbFNpemVbMl0gPSAwOworICAgICB9CisgCistICAgIFFTaGFkZXJE ZXNjcmlwdGlvblByaXZhdGUoY29uc3QgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZSAqb3RoZXIp CisrICAgIFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUoY29uc3QgUVNoYWRlckRlc2NyaXB0aW9u UHJpdmF0ZSAmb3RoZXIpCisgICAgICAgICA6IHJlZigxKSwKKy0gICAgICAgICAgaW5WYXJzKG90 aGVyLT5pblZhcnMpLAorLSAgICAgICAgICBvdXRWYXJzKG90aGVyLT5vdXRWYXJzKSwKKy0gICAg ICAgICAgdW5pZm9ybUJsb2NrcyhvdGhlci0+dW5pZm9ybUJsb2NrcyksCistICAgICAgICAgIHB1 c2hDb25zdGFudEJsb2NrcyhvdGhlci0+cHVzaENvbnN0YW50QmxvY2tzKSwKKy0gICAgICAgICAg c3RvcmFnZUJsb2NrcyhvdGhlci0+c3RvcmFnZUJsb2NrcyksCistICAgICAgICAgIGNvbWJpbmVk SW1hZ2VTYW1wbGVycyhvdGhlci0+Y29tYmluZWRJbWFnZVNhbXBsZXJzKSwKKy0gICAgICAgICAg c3RvcmFnZUltYWdlcyhvdGhlci0+c3RvcmFnZUltYWdlcyksCistICAgICAgICAgIGxvY2FsU2l6 ZShvdGhlci0+bG9jYWxTaXplKQorKyAgICAgICAgICBpblZhcnMob3RoZXIuaW5WYXJzKSwKKysg ICAgICAgICAgb3V0VmFycyhvdGhlci5vdXRWYXJzKSwKKysgICAgICAgICAgdW5pZm9ybUJsb2Nr cyhvdGhlci51bmlmb3JtQmxvY2tzKSwKKysgICAgICAgICAgcHVzaENvbnN0YW50QmxvY2tzKG90 aGVyLnB1c2hDb25zdGFudEJsb2NrcyksCisrICAgICAgICAgIHN0b3JhZ2VCbG9ja3Mob3RoZXIu c3RvcmFnZUJsb2NrcyksCisrICAgICAgICAgIGNvbWJpbmVkSW1hZ2VTYW1wbGVycyhvdGhlci5j b21iaW5lZEltYWdlU2FtcGxlcnMpLAorKyAgICAgICAgICBzdG9yYWdlSW1hZ2VzKG90aGVyLnN0 b3JhZ2VJbWFnZXMpLAorKyAgICAgICAgICBsb2NhbFNpemUob3RoZXIubG9jYWxTaXplKQorICAg ICB7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3Fmb250ZGF0 YWJhc2UuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcAoraW5kZXgg YTY1N2E4YzUxNi4uNGZjMDEwMDk1OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3RleHQv cWZvbnRkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRhYmFz ZS5jcHAKK0BAIC05ODMsNyArOTgzLDcgQEAgUUZvbnRFbmdpbmUgKmxvYWRTaW5nbGVFbmdpbmUo aW50IHNjcmlwdCwKKyAgICAgICAgIGlmIChzdHlsZS0+a2V5LnN0cmV0Y2ggIT0gMCAmJiByZXF1 ZXN0LnN0cmV0Y2ggIT0gMAorICAgICAgICAgICAgICYmIChyZXF1ZXN0LnN0eWxlTmFtZS5pc0Vt cHR5KCkgfHwgcmVxdWVzdC5zdHlsZU5hbWUgIT0gc3R5bGUtPnN0eWxlTmFtZSkpIHsKKyAgICAg ICAgICAgICBkZWYuc3RyZXRjaCA9IChyZXF1ZXN0LnN0cmV0Y2ggKiAxMDAgKyBzdHlsZS0+a2V5 LnN0cmV0Y2ggLyAyKSAvIHN0eWxlLT5rZXkuc3RyZXRjaDsKKy0gICAgICAgIH0gZWxzZSB7Cisr ICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3Quc3RyZXRjaCA9PSBRRm9udDo6QW55U3RyZXRjaCkg eworICAgICAgICAgICAgIGRlZi5zdHJldGNoID0gMTAwOworICAgICAgICAgfQorIAorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAgYi9xdGJh c2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwCitpbmRleCBmM2U2ZWEyMTAw Li43MjI2N2U5MzgwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRvY3Vt ZW50bGF5b3V0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRvY3VtZW50bGF5 b3V0LmNwcAorQEAgLTIxMjMsNyArMjEyMyw3IEBAIHZvaWQgUVRleHREb2N1bWVudExheW91dFBy aXZhdGU6OmRyYXdMaXN0SXRlbShjb25zdCBRUG9pbnRGICZvZmZzZXQsIFFQYWludGVyICpwCisg eworICAgICBRX1EoY29uc3QgUVRleHREb2N1bWVudExheW91dCk7CisgICAgIGNvbnN0IFFUZXh0 QmxvY2tGb3JtYXQgYmxvY2tGb3JtYXQgPSBibC5ibG9ja0Zvcm1hdCgpOworLSAgICBjb25zdCBR VGV4dENoYXJGb3JtYXQgY2hhckZvcm1hdCA9IFFUZXh0Q3Vyc29yKGJsKS5jaGFyRm9ybWF0KCk7 CisrICAgIGNvbnN0IFFUZXh0Q2hhckZvcm1hdCBjaGFyRm9ybWF0ID0gYmwuY2hhckZvcm1hdCgp OworICAgICBRRm9udCBmb250KGNoYXJGb3JtYXQuZm9udCgpKTsKKyAgICAgaWYgKHEtPnBhaW50 RGV2aWNlKCkpCisgICAgICAgICBmb250ID0gUUZvbnQoZm9udCwgcS0+cGFpbnREZXZpY2UoKSk7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAgYi9xdGJh c2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcAoraW5kZXggY2U0YWJhYzQ3Mi4uYTZjNjZl NWQyZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRlbmdpbmUuY3BwCisr KysgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcAorQEAgLTEsNiArMSw2IEBA CisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUg UXQgQ29tcGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0 ZC4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRHdWkgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0Lgor QEAgLTE1NjUsNiArMTU2NSwxMiBAQCB2b2lkIFFUZXh0RW5naW5lOjpzaGFwZVRleHQoaW50IGl0 ZW0pIGNvbnN0CisgICAgICAgICAvLyBPdmVyd3JpdGUgd2l0aCAwIHRva2VuIHRvIGluZGljYXRl IGZhaWx1cmUKKyAgICAgICAgIFFHbHlwaExheW91dCBnID0gYXZhaWxhYmxlR2x5cGhzKCZzaSk7 CisgICAgICAgICBnLmdseXBoc1swXSA9IDA7CisrICAgICAgICBnLmF0dHJpYnV0ZXNbMF0uY2x1 c3RlclN0YXJ0ID0gdHJ1ZTsKKysKKysgICAgICAgIHVzaG9ydCAqbG9nX2NsdXN0ZXJzID0gbG9n Q2x1c3RlcnMoJnNpKTsKKysgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlbUxlbmd0aDsg KytpKQorKyAgICAgICAgICAgIGxvZ19jbHVzdGVyc1tpXSA9IDA7CisrCisgICAgICAgICByZXR1 cm47CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9w c2VydmljZXMuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcAor aW5kZXggZmJiNjNhOTQwOC4uNGQ1ZmFmYWFhNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3Vp L3V0aWwvcWRlc2t0b3BzZXJ2aWNlcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcWRl c2t0b3BzZXJ2aWNlcy5jcHAKK0BAIC01NCw2ICs1NCw4IEBACisgI2luY2x1ZGUgPHFwYS9xcGxh dGZvcm1pbnRlZ3JhdGlvbi5oPgorICNpbmNsdWRlIDxxZGlyLmg+CisgCisrI2luY2x1ZGUgPFF0 Q29yZS9wcml2YXRlL3Fsb2NraW5nX3AuaD4KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBj bGFzcyBRT3BlblVybEhhbmRsZXJSZWdpc3RyeSA6IHB1YmxpYyBRT2JqZWN0CitAQCAtODEsNiAr ODMsNyBAQCBRX0dMT0JBTF9TVEFUSUMoUU9wZW5VcmxIYW5kbGVyUmVnaXN0cnksIGhhbmRsZXJS ZWdpc3RyeSkKKyAKKyB2b2lkIFFPcGVuVXJsSGFuZGxlclJlZ2lzdHJ5OjpoYW5kbGVyRGVzdHJv eWVkKFFPYmplY3QgKmhhbmRsZXIpCisgeworKyAgICBjb25zdCBhdXRvIGxvY2sgPSBxdF9zY29w ZWRfbG9jayhtdXRleCk7CisgICAgIEhhbmRsZXJIYXNoOjpJdGVyYXRvciBpdCA9IGhhbmRsZXJz LmJlZ2luKCk7CisgICAgIHdoaWxlIChpdCAhPSBoYW5kbGVycy5lbmQoKSkgeworICAgICAgICAg aWYgKGl0LT5yZWNlaXZlciA9PSBoYW5kbGVyKSB7CitAQCAtMjk0LDcgKzI5Nyw4IEBAIHZvaWQg UURlc2t0b3BTZXJ2aWNlczo6c2V0VXJsSGFuZGxlcihjb25zdCBRU3RyaW5nICZzY2hlbWUsIFFP YmplY3QgKnJlY2VpdmVyLCBjCisgICAgIGgubmFtZSA9IG1ldGhvZDsKKyAgICAgcmVnaXN0cnkt PmhhbmRsZXJzLmluc2VydChzY2hlbWUudG9Mb3dlcigpLCBoKTsKKyAgICAgUU9iamVjdDo6Y29u bmVjdChyZWNlaXZlciwgU0lHTkFMKGRlc3Ryb3llZChRT2JqZWN0KikpLAorLSAgICAgICAgICAg ICAgICAgICAgIHJlZ2lzdHJ5LCBTTE9UKGhhbmRsZXJEZXN0cm95ZWQoUU9iamVjdCopKSk7Cisr ICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIFNMT1QoaGFuZGxlckRlc3Ryb3llZChRT2Jq ZWN0KikpLAorKyAgICAgICAgICAgICAgICAgICAgIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsKKyB9 CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5j cHAgYi9xdGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcAoraW5kZXggZTBjM2I3NWVm ZS4uMzQxNGY5ZDhiYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcXBrbWhhbmRs ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcAorQEAgLTU3 LDcgKzU3LDcgQEAgc3RydWN0IFBrbVR5cGUKKyAgICAgcXVpbnQzMiBieXRlc1BlckJsb2NrOwor IH07CisgCistc3RhdGljIFBrbVR5cGUgdHlwZU1hcFs1XSA9IHsKKytzdGF0aWMgY29uc3RleHBy IFBrbVR5cGUgdHlwZU1hcFs1XSA9IHsKKyAgICAgeyAweDhENjQsICA4IH0sICAgLy8gR0xfRVRD MV9SR0I4X09FUworICAgICB7IDB4OTI3NCwgIDggfSwgICAvLyBHTF9DT01QUkVTU0VEX1JHQjhf RVRDMgorICAgICB7IDAsIDAgfSwgICAgICAgICAvLyB1bnVzZWQgKG9ic29sZXRlKQorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNw cCBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNwcAor aW5kZXggYjZiZTkzMTQ3YS4uNmU2OWI0YzRkMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0 d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9u ZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3BwCitAQCAtODksOSArODksMTAg QEAgUU5ldHdvcmtSZXBseUZpbGVJbXBsOjpRTmV0d29ya1JlcGx5RmlsZUltcGwoUU5ldHdvcmtB Y2Nlc3NNYW5hZ2VyICptYW5hZ2VyLCBjb24KKyAgICAgICAgIC8vIHdlIGhhbmRsZSBvbmx5IGxv Y2FsIGZpbGVzCisgICAgICAgICBRU3RyaW5nIG1zZyA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5z bGF0ZSgiUU5ldHdvcmtBY2Nlc3NGaWxlQmFja2VuZCIsICJSZXF1ZXN0IGZvciBvcGVuaW5nIG5v bi1sb2NhbCBmaWxlICUxIikuYXJnKHVybC50b1N0cmluZygpKTsKKyAgICAgICAgIHNldEVycm9y KFFOZXR3b3JrUmVwbHk6OlByb3RvY29sSW52YWxpZE9wZXJhdGlvbkVycm9yLCBtc2cpOworKyAg ICAgICAgc2V0RmluaXNoZWQodHJ1ZSk7IC8vIFdlJ3JlIGZpbmlzaGVkLCB3aWxsIGVtaXQgZmlu aXNoZWQoKSBhZnRlciBjdG9yIGlzIGRvbmUuCisgICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tl TWV0aG9kKHRoaXMsICJlcnJvck9jY3VycmVkIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24sCisgICAg ICAgICAgICAgUV9BUkcoUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yLCBRTmV0d29ya1JlcGx5 OjpQcm90b2NvbEludmFsaWRPcGVyYXRpb25FcnJvcikpOworLSAgICAgICAgZmlsZU9wZW5GaW5p c2hlZChmYWxzZSk7CisrICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsIFt0 aGlzXSgpeyBmaWxlT3BlbkZpbmlzaGVkKGZhbHNlKTsgfSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24p OworICAgICAgICAgcmV0dXJuOworICAgICB9CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAgYi9xdGJhc2Uvc3JjL25l dHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlpbXBsLmNwcAoraW5kZXggYmNkZjZlZTJmMS4uM2I2 ZGViODJiZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmty ZXBseWltcGwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVw bHlpbXBsLmNwcAorQEAgLTY4MCw3ICs2ODAsNyBAQCB2b2lkIFFOZXR3b3JrUmVwbHlJbXBsUHJp dmF0ZTo6YXBwZW5kRG93bnN0cmVhbURhdGEoUUlPRGV2aWNlICpkYXRhKQorICAgICAvLyByZWFk IHVudGlsIEVPRiBmcm9tIGRhdGEKKyAgICAgaWYgKFFfVU5MSUtFTFkoY29weURldmljZSkpIHsK KyAgICAgICAgIHFDcml0aWNhbCgiUU5ldHdvcmtSZXBseUltcGw6IGNvcHkgZnJvbSBRSU9EZXZp Y2UgYWxyZWFkeSBpbiBwcm9ncmVzcyAtLSAiCistICAgICAgICAgICAgICAgICAgImJhY2tlbmQg cHJvYmx5IG5lZWRzIHRvIGJlIGZpeGVkIik7CisrICAgICAgICAgICAgICAgICAgImJhY2tlbmQg cHJvYmFibHkgbmVlZHMgdG8gYmUgZml4ZWQiKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQor IAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3Iu Y3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5jcHAKK2luZGV4 IGQ5ZmU3YmM0N2IuLmNjZDA0YjI5NGEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsv a2VybmVsL3FhdXRoZW50aWNhdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5l bC9xYXV0aGVudGljYXRvci5jcHAKK0BAIC01MCw2ICs1MCw3IEBACisgI2luY2x1ZGUgPHFzdHJp bmcuaD4KKyAjaW5jbHVkZSA8cWRhdGV0aW1lLmg+CisgI2luY2x1ZGUgPHFyYW5kb20uaD4KKysj aW5jbHVkZSAicHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmgiCisgCisgI2lmZGVmIFFfT1NfV0lO CisgI2luY2x1ZGUgPHFtdXRleC5oPgorQEAgLTE1NjMsNyArMTU2NCw3IEBAIHN0YXRpYyBib29s IHFfU1NQSV9saWJyYXJ5X2xvYWQoKQorIAorICAgICAvLyBJbml0aWFsaXplIHNlY3VyaXR5IGlu dGVyZmFjZQorICAgICBpZiAocFNlY3VyaXR5RnVuY3Rpb25UYWJsZSA9PSBudWxscHRyKSB7Cist ICAgICAgICBzZWN1cml0eURMTEhhbmRsZSA9IExvYWRMaWJyYXJ5KEwic2VjdXIzMi5kbGwiKTsK KysgICAgICAgIHNlY3VyaXR5RExMSGFuZGxlID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJzZWN1 cjMyIik7CisgICAgICAgICBpZiAoc2VjdXJpdHlETExIYW5kbGUgIT0gbnVsbHB0cikgeworICAg ICAgICAgICAgIElOSVRfU0VDVVJJVFlfSU5URVJGQUNFIHBJbml0U2VjdXJpdHlJbnRlcmZhY2Ug PQorICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PElOSVRfU0VDVVJJVFlfSU5URVJG QUNFPigKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191 bml4LmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwCitp bmRleCA5YjBhMmVlNjY5Li43MzY3OWM5ZWYxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3 b3JrL2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9r ZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwCitAQCAtMTIyLDcgKzEyMiw2IEBAIHN0YXRpYyBRRnVu Y3Rpb25Qb2ludGVyIHJlc29sdmVTeW1ib2woUUxpYnJhcnkgJmxpYiwgY29uc3QgY2hhciAqc3lt KQorIAorIExpYlJlc29sdjo6TGliUmVzb2x2KCkKKyB7CistICAgIFFMaWJyYXJ5IGxpYjsKKyAj aWZkZWYgTElCUkVTT0xWX1NPCisgICAgIGxpYi5zZXRGaWxlTmFtZShRU3RyaW5nTGl0ZXJhbChM SUJSRVNPTFZfU08pKTsKKyAgICAgaWYgKCFsaWIubG9hZCgpKQorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvbmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3Jj L25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3BwCitpbmRleCAzYTA0NmZkMTE2 Li45N2ZhZGNhMGIzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29j a3M1c29ja2V0ZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29j a3M1c29ja2V0ZW5naW5lLmNwcAorQEAgLTEyOTYsNyArMTI5Niw3IEBAIHZvaWQgUVNvY2tzNVNv Y2tldEVuZ2luZVByaXZhdGU6Ol9xX3VkcFNvY2tldFJlYWROb3RpZmljYXRpb24oKQorICAgICAg ICAgaW50IHBvcyA9IDA7CisgICAgICAgICBjb25zdCBjaGFyICpidWYgPSBpbkJ1Zi5jb25zdERh dGEoKTsKKyAgICAgICAgIGlmIChpbkJ1Zi5zaXplKCkgPCA0KSB7CistICAgICAgICAgICAgUVNP Q0tTNV9EX0RFQlVHIDw8ICJidWd1cyB1ZHAgZGF0YSwgZGlzY2FyZGluZyI7CisrICAgICAgICAg ICAgUVNPQ0tTNV9EX0RFQlVHIDw8ICJib2d1cyB1ZHAgZGF0YSwgZGlzY2FyZGluZyI7CisgICAg ICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICAgICAgUVNvY2tzNVJldml2ZWREYXRh Z3JhbSBkYXRhZ3JhbTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xj b250ZXh0X29wZW5zc2wuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsY29udGV4dF9v cGVuc3NsLmNwcAoraW5kZXggYzlmMjAyZjU3My4uYzk5MmRhOWQ4ZSAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAKK0BAIC00MDksNyArNDA5 LDcgQEAgaW5pdF9jb250ZXh0OgorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUVNzbDo6RHRs c1YxXzBPckxhdGVyOgorICAgICAgICAgbWluVmVyc2lvbiA9IERUTFMxX1ZFUlNJT047CistICAg ICAgICBtYXhWZXJzaW9uID0gRFRMU19NQVhfVkVSU0lPTjsKKysgICAgICAgIG1heFZlcnNpb24g PSAwOworICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUVNzbDo6RHRsc1YxXzI6CisgICAgICAg ICBtaW5WZXJzaW9uID0gRFRMUzFfMl9WRVJTSU9OOworQEAgLTQxNyw3ICs0MTcsNyBAQCBpbml0 X2NvbnRleHQ6CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpEdGxzVjFfMk9yTGF0 ZXI6CisgICAgICAgICBtaW5WZXJzaW9uID0gRFRMUzFfMl9WRVJTSU9OOworLSAgICAgICAgbWF4 VmVyc2lvbiA9IERUTFNfTUFYX1ZFUlNJT047CisrICAgICAgICBtYXhWZXJzaW9uID0gMDsKKyAg ICAgICAgIGJyZWFrOworICAgICBjYXNlIFFTc2w6OlRsc1YxXzNPckxhdGVyOgorICNpZmRlZiBU TFMxXzNfVkVSU0lPTgorQEAgLTQ1NSw3ICs0NTUsNyBAQCBpbml0X2NvbnRleHQ6CisgICAgIH0K KyAKKyAgICAgLy8gRW5hYmxlIGJ1ZyB3b3JrYXJvdW5kcy4KKy0gICAgbG9uZyBvcHRpb25zID0g UVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKGNvbmZpZ3VyYXRp b24ucHJvdG9jb2woKSwgY29uZmlndXJhdGlvbi5kLT5zc2xPcHRpb25zKTsKKysgICAgcXNzbG9w dGlvbnMgb3B0aW9ucyA9IFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVuU3NsT3B0 aW9ucyhjb25maWd1cmF0aW9uLnByb3RvY29sKCksIGNvbmZpZ3VyYXRpb24uZC0+c3NsT3B0aW9u cyk7CisgICAgIHFfU1NMX0NUWF9zZXRfb3B0aW9ucyhzc2xDb250ZXh0LT5jdHgsIG9wdGlvbnMp OworIAorICAgICAvLyBUZWxsIE9wZW5TU0wgdG8gcmVsZWFzZSBtZW1vcnkgZWFybHkKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVy c19vcGVuc3NsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGRpZmZpZWhlbGxtYW5w YXJhbWV0ZXJzX29wZW5zc2wuY3BwCitpbmRleCBhYWY4NzQxMTMwLi5iNTg5MzUzNzJjIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRl cnNfb3BlbnNzbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGRpZmZpZWhl bGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwCitAQCAtNTksNTcgKzU5LDYgQEAKKyAKKyBRVF9C RUdJTl9OQU1FU1BBQ0UKKyAKKy0jaWZkZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorLQor LXN0YXRpYyBpbnQgcV9ESF9jaGVjayhESCAqZGgsIGludCAqc3RhdHVzKQorLXsKKy0gICAgLy8g REhfY2hlY2sgd2FzIGZpcnN0IGRlcHJlY2F0ZWQgaW4gT3BlblNTTCAzLjAuMCwgYXMgbG93LWxl dmVsCistICAgIC8vIEFQSTsgdGhlIEVWUF9QS0VZIGZhbWlseSBvZiBmdW5jdGlvbnMgd2FzIGFk dmlzZWQgYXMgYW4gYWx0ZXJuYXRpdmUuCistICAgIC8vIEFzIG9mIG5vdyBFVlBfUEtFWV9wYXJh bXNfY2hlY2sgZW5kcyB1cCBjYWxsaW5nIC4uLiBESF9jaGVjaywKKy0gICAgLy8gd2hpY2ggaXMg Z29vZCBlbm91Z2guCistCistICAgIFFfQVNTRVJUKGRoKTsKKy0gICAgUV9BU1NFUlQoc3RhdHVz KTsKKy0KKy0gICAgRVZQX1BLRVkgKmtleSA9IHFfRVZQX1BLRVlfbmV3KCk7CistICAgIGlmICgh a2V5KSB7CistICAgICAgICBxQ1dhcm5pbmcobGNTc2wsICJFVlBfUEtFWV9uZXcgZmFpbGVkIik7 CistICAgICAgICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OmxvZ0FuZENsZWFyRXJyb3JRdWV1 ZSgpOworLSAgICAgICAgcmV0dXJuIDA7CistICAgIH0KKy0gICAgY29uc3QgYXV0byBrZXlEZWxl dGVyID0gcVNjb3BlR3VhcmQoW2tleV0oKXsKKy0gICAgICAgIHFfRVZQX1BLRVlfZnJlZShrZXkp OworLSAgICB9KTsKKy0gICAgaWYgKCFxX0VWUF9QS0VZX3NldDFfREgoa2V5LCBkaCkpIHsKKy0g ICAgICAgIHFDV2FybmluZyhsY1NzbCwgIkVWUF9QS0VZX3NldDFfREggZmFpbGVkIik7CistICAg ICAgICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OmxvZ0FuZENsZWFyRXJyb3JRdWV1ZSgpOwor LSAgICAgICAgcmV0dXJuIDA7CistICAgIH0KKy0KKy0gICAgRVZQX1BLRVlfQ1RYICprZXlDdHgg PSBxX0VWUF9QS0VZX0NUWF9uZXcoa2V5LCBudWxscHRyKTsKKy0gICAgaWYgKCFrZXlDdHgpIHsK Ky0gICAgICAgIHFDV2FybmluZyhsY1NzbCwgIkVWUF9QS0VZX0NUWF9uZXcgZmFpbGVkIik7Cist ICAgICAgICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OmxvZ0FuZENsZWFyRXJyb3JRdWV1ZSgp OworLSAgICAgICAgcmV0dXJuIDA7CistICAgIH0KKy0gICAgY29uc3QgYXV0byBjdHhEZWxldGVy ID0gcVNjb3BlR3VhcmQoW2tleUN0eF17CistICAgICAgICBxX0VWUF9QS0VZX0NUWF9mcmVlKGtl eUN0eCk7CistICAgIH0pOworLQorLSAgICBjb25zdCBpbnQgcmVzdWx0ID0gcV9FVlBfUEtFWV9w YXJhbV9jaGVjayhrZXlDdHgpOworLSAgICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OmxvZ0Fu ZENsZWFyRXJyb3JRdWV1ZSgpOworLSAgICAvLyBOb3RlOiB1bmxpa2UgREhfY2hlY2ssIHdlIGNh bm5vdCBvYnRhaW4gdGhlICdzdGF0dXMnLAorLSAgICAvLyBpZiB0aGUgJ3Jlc3VsdCcgaXMgMCAo YWN0dWFsbHkgdGhlIHJlc3VsdCBpcyAxIG9ubHkKKy0gICAgLy8gaWYgdGhpcyAnc3RhdHVzJyB3 YXMgMCkuIFdlIGNvdWxkIHByb2JhYmx5IGNoZWNrIHRoZQorLSAgICAvLyBlcnJvcnMgZnJvbSB0 aGUgZXJyb3IgcXVldWUsIGJ1dCBpdCdzIG5vdCBuZWVkZWQgYW55d2F5CistICAgIC8vIC0gc2Vl IHRoZSAnaXNTYWZlREgnIGJlbG93LCBob3cgaXQgcmV0dXJucyBpbW1lZGlhdGVseQorLSAgICAv LyBvbiAwLgorLSAgICBRX1VOVVNFRChzdGF0dXMpCistCistICAgIHJldHVybiByZXN1bHQ7Cist fQorLSNlbmRpZiAvLyBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCistCisgc3RhdGljIGJvb2wg aXNTYWZlREgoREggKmRoKQorIHsKKyAgICAgaW50IHN0YXR1cyA9IDA7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwIGIvcXRiYXNlL3Ny Yy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwCitpbmRleCAzN2ZhZDJhNjhmLi44 ZjY4NThjODY3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0 X29wZW5zc2wuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3Bl bnNzbC5jcHAKK0BAIC01NTAsOSArNTUwLDkgQEAgc3RhdGljIHZvaWQgcV9sb2FkQ2lwaGVyc0Zv ckNvbm5lY3Rpb24oU1NMICpjb25uZWN0aW9uLCBRTGlzdDxRU3NsQ2lwaGVyPiAmY2lwaGUKKyAv LyBEZWZpbmVkIGluIHFzc2xzb2NrZXQuY3BwCisgdm9pZCBxX3NldERlZmF1bHREdGxzQ2lwaGVy cyhjb25zdCBRTGlzdDxRU3NsQ2lwaGVyPiAmY2lwaGVycyk7CisgCistbG9uZyBRU3NsU29ja2V0 QmFja2VuZFByaXZhdGU6OnNldHVwT3BlblNzbE9wdGlvbnMoUVNzbDo6U3NsUHJvdG9jb2wgcHJv dG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucykKKytxc3Nsb3B0aW9ucyBRU3NsU29j a2V0QmFja2VuZFByaXZhdGU6OnNldHVwT3BlblNzbE9wdGlvbnMoUVNzbDo6U3NsUHJvdG9jb2wg cHJvdG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucykKKyB7CistICAgIGxvbmcgb3B0 aW9uczsKKysgICAgcXNzbG9wdGlvbnMgb3B0aW9uczsKKyAgICAgaWYgKHByb3RvY29sID09IFFT c2w6OlRsc1YxU3NsVjMpCisgICAgICAgICBvcHRpb25zID0gU1NMX09QX0FMTHxTU0xfT1BfTk9f U1NMdjJ8U1NMX09QX05PX1NTTHYzOworICAgICBlbHNlIGlmIChwcm90b2NvbCA9PSBRU3NsOjpT ZWN1cmVQcm90b2NvbHMpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Ns c29ja2V0X29wZW5zc2xfcC5oIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29w ZW5zc2xfcC5oCitpbmRleCA0MTAzZGUyM2U4Li41NTQ3NTg5MjU2IDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfcC5oCisrKysgYi9xdGJhc2Uv c3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmgKK0BAIC0xMDcsNiArMTA3LDEy IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJT SU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworK3R5cGVkZWYgdWludDY0 X3QgcXNzbG9wdGlvbnM7CisrI2Vsc2UKKyt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcXNzbG9wdGlv bnM7CisrI2VuZGlmCisrCisgc3RydWN0IFFTc2xFcnJvckVudHJ5IHsKKyAgICAgaW50IGNvZGU7 CisgICAgIGludCBkZXB0aDsKK0BAIC0xNzEsNyArMTc3LDcgQEAgcHVibGljOgorICAgICBRVmVj dG9yPFFTc2xFcnJvcj4gb2NzcEVycm9yczsKKyAgICAgUUJ5dGVBcnJheSBvY3NwUmVzcG9uc2VE ZXI7CisgCistICAgIFFfQVVUT1RFU1RfRVhQT1JUIHN0YXRpYyBsb25nIHNldHVwT3BlblNzbE9w dGlvbnMoUVNzbDo6U3NsUHJvdG9jb2wgcHJvdG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0 aW9ucyk7CisrICAgIFFfQVVUT1RFU1RfRVhQT1JUIHN0YXRpYyBxc3Nsb3B0aW9ucyBzZXR1cE9w ZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25z IHNzbE9wdGlvbnMpOworICAgICBzdGF0aWMgUVNzbENpcGhlciBRU3NsQ2lwaGVyX2Zyb21fU1NM X0NJUEhFUihjb25zdCBTU0xfQ0lQSEVSICpjaXBoZXIpOworICAgICBzdGF0aWMgUUxpc3Q8UVNz bENlcnRpZmljYXRlPiBTVEFDS09GWDUwOV90b19RU3NsQ2VydGlmaWNhdGVzKFNUQUNLX09GKFg1 MDkpICp4NTA5KTsKKyAgICAgc3RhdGljIFFMaXN0PFFTc2xFcnJvcj4gdmVyaWZ5KGNvbnN0IFFM aXN0PFFTc2xDZXJ0aWZpY2F0ZT4gJmNlcnRpZmljYXRlQ2hhaW4sIGNvbnN0IFFTdHJpbmcgJmhv c3ROYW1lKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRf b3BlbnNzbF9zeW1ib2xzLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9v cGVuc3NsX3N5bWJvbHMuY3BwCitpbmRleCBlNTNmYjI3OWYwLi40NTljY2QwYjE5IDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5j cHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJv bHMuY3BwCitAQCAtMTQ4LDcgKzE0OCw2IEBAIERFRklORUZVTkMoaW50LCBFVlBfUEtFWV91cF9y ZWYsIEVWUF9QS0VZICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMyKEVWUF9Q S0VZX0NUWCAqLCBFVlBfUEtFWV9DVFhfbmV3LCBFVlBfUEtFWSAqcGtleSwgcGtleSwgRU5HSU5F ICplLCBlLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBFVlBfUEtF WV9wYXJhbV9jaGVjaywgRVZQX1BLRVlfQ1RYICpjdHgsIGN0eCwgcmV0dXJuIDAsIHJldHVybikK KyBERUZJTkVGVU5DKHZvaWQsIEVWUF9QS0VZX0NUWF9mcmVlLCBFVlBfUEtFWV9DVFggKmN0eCwg Y3R4LCByZXR1cm4sIHJldHVybikKKy1ERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfYmFzZV9pZCwg RVZQX1BLRVkgKmEsIGEsIHJldHVybiBOSURfdW5kZWYsIHJldHVybikKKyBERUZJTkVGVU5DKGlu dCwgUlNBX2JpdHMsIFJTQSAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DKGlu dCwgRFNBX2JpdHMsIERTQSAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DKGlu dCwgT1BFTlNTTF9za19udW0sIE9QRU5TU0xfU1RBQ0sgKmEsIGEsIHJldHVybiAtMSwgcmV0dXJu KQorQEAgLTE1OCw3ICsxNTcsNyBAQCBERUZJTkVGVU5DMih2b2lkLCBPUEVOU1NMX3NrX3B1c2gs IE9QRU5TU0xfU1RBQ0sgKmEsIGEsIHZvaWQgKmIsIGIsIHJldHVybiwgRFVNTQorIERFRklORUZV TkModm9pZCwgT1BFTlNTTF9za19mcmVlLCBPUEVOU1NMX1NUQUNLICphLCBhLCByZXR1cm4sIERV TU1ZQVJHKQorIERFRklORUZVTkMyKHZvaWQgKiwgT1BFTlNTTF9za192YWx1ZSwgT1BFTlNTTF9T VEFDSyAqYSwgYSwgaW50IGIsIGIsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVO QyhpbnQsIFNTTF9zZXNzaW9uX3JldXNlZCwgU1NMICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQor LURFRklORUZVTkMyKHVuc2lnbmVkIGxvbmcsIFNTTF9DVFhfc2V0X29wdGlvbnMsIFNTTF9DVFgg KmN0eCwgY3R4LCB1bnNpZ25lZCBsb25nIG9wLCBvcCwgcmV0dXJuIDAsIHJldHVybikKKytERUZJ TkVGVU5DMihxc3Nsb3B0aW9ucywgU1NMX0NUWF9zZXRfb3B0aW9ucywgU1NMX0NUWCAqY3R4LCBj dHgsIHFzc2xvcHRpb25zIG9wLCBvcCwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DKGlu dCwgU1NMX0NUWF9nZXRfc2VjdXJpdHlfbGV2ZWwsIGNvbnN0IFNTTF9DVFggKmN0eCwgY3R4LCBy ZXR1cm4gLTEsIHJldHVybikKKyBERUZJTkVGVU5DMih2b2lkLCBTU0xfQ1RYX3NldF9zZWN1cml0 eV9sZXZlbCwgU1NMX0NUWCAqY3R4LCBjdHgsIGludCBsZXZlbCwgbGV2ZWwsIHJldHVybiwgcmV0 dXJuKQorICNpZmRlZiBUTFMxXzNfVkVSU0lPTgorQEAgLTM3MSw3ICszNzAsMTUgQEAgREVGSU5F RlVOQyhjb25zdCBTU0xfQ0lQSEVSICosIFNTTF9nZXRfY3VycmVudF9jaXBoZXIsIFNTTCAqYSwg YSwgcmV0dXJuIG51bGxwdHIKKyBERUZJTkVGVU5DKGludCwgU1NMX3ZlcnNpb24sIGNvbnN0IFNT TCAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DMihpbnQsIFNTTF9nZXRfZXJy b3IsIFNTTCAqYSwgYSwgaW50IGIsIGIsIHJldHVybiAtMSwgcmV0dXJuKQorIERFRklORUZVTkMo U1RBQ0tfT0YoWDUwOSkgKiwgU1NMX2dldF9wZWVyX2NlcnRfY2hhaW4sIFNTTCAqYSwgYSwgcmV0 dXJuIG51bGxwdHIsIHJldHVybikKKysKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTUFK T1IpICYmIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrREVGSU5FRlVOQyhYNTA5ICosIFNT TF9nZXQxX3BlZXJfY2VydGlmaWNhdGUsIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxwdHIsIHJldHVy bikKKytERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfZ2V0X2Jhc2VfaWQsIGNvbnN0IEVWUF9QS0VZ ICpwa2V5LCBwa2V5LCByZXR1cm4gLTEsIHJldHVybikKKysjZWxzZQorIERFRklORUZVTkMoWDUw OSAqLCBTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUsIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxwdHIs IHJldHVybikKKytERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfYmFzZV9pZCwgRVZQX1BLRVkgKmEs IGEsIHJldHVybiBOSURfdW5kZWYsIHJldHVybikKKysjZW5kaWYgLy8gT1BFTlNTTF9WRVJTSU9O X01BSk9SID49IDMKKysKKyBERUZJTkVGVU5DKGxvbmcsIFNTTF9nZXRfdmVyaWZ5X3Jlc3VsdCwg Y29uc3QgU1NMICphLCBhLCByZXR1cm4gLTEsIHJldHVybikKKyBERUZJTkVGVU5DKFNTTCAqLCBT U0xfbmV3LCBTU0xfQ1RYICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZV TkMoU1NMX0NUWCAqLCBTU0xfZ2V0X1NTTF9DVFgsIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxwdHIs IHJldHVybikKK0BAIC00OTIsOSArNDk5LDcgQEAgREVGSU5FRlVOQyhESCAqLCBESF9uZXcsIERV TU1ZQVJHLCBEVU1NWUFSRywgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DKHZv aWQsIERIX2ZyZWUsIERIICpkaCwgZGgsIHJldHVybiwgRFVNTVlBUkcpCisgREVGSU5FRlVOQzMo REggKiwgZDJpX0RIcGFyYW1zLCBESCoqYSwgYSwgY29uc3QgdW5zaWduZWQgY2hhciAqKnBwLCBw cCwgbG9uZyBsZW5ndGgsIGxlbmd0aCwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVG VU5DMihpbnQsIGkyZF9ESHBhcmFtcywgREggKmEsIGEsIHVuc2lnbmVkIGNoYXIgKipwLCBwLCBy ZXR1cm4gLTEsIHJldHVybikKKy0jaWZuZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyBE RUZJTkVGVU5DMihpbnQsIERIX2NoZWNrLCBESCAqZGgsIGRoLCBpbnQgKmNvZGVzLCBjb2Rlcywg cmV0dXJuIDAsIHJldHVybikKKy0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAor IERFRklORUZVTkMzKEJJR05VTSAqLCBCTl9iaW4yYm4sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMs IHMsIGludCBsZW4sIGxlbiwgQklHTlVNICpyZXQsIHJldCwgcmV0dXJuIG51bGxwdHIsIHJldHVy bikKKyAKKyAjaWZuZGVmIE9QRU5TU0xfTk9fRUMKK0BAIC04NjgsNyArODczLDYgQEAgYm9vbCBx X3Jlc29sdmVPcGVuU3NsU3ltYm9scygpCisgICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX0NUWF9u ZXcpCisgICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX3BhcmFtX2NoZWNrKQorICAgICBSRVNPTFZF RlVOQyhFVlBfUEtFWV9DVFhfZnJlZSkKKy0gICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfYmFzZV9p ZCkKKyAgICAgUkVTT0xWRUZVTkMoUlNBX2JpdHMpCisgICAgIFJFU09MVkVGVU5DKE9QRU5TU0xf c2tfbmV3X251bGwpCisgICAgIFJFU09MVkVGVU5DKE9QRU5TU0xfc2tfcHVzaCkKK0BAIC0xMTA3 LDcgKzExMTEsMTUgQEAgYm9vbCBxX3Jlc29sdmVPcGVuU3NsU3ltYm9scygpCisgICAgIFJFU09M VkVGVU5DKFNTTF92ZXJzaW9uKQorICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X2Vycm9yKQorICAg ICBSRVNPTFZFRlVOQyhTU0xfZ2V0X3BlZXJfY2VydF9jaGFpbikKKysKKysjaWYgZGVmaW5lZChP UEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrICAg IFJFU09MVkVGVU5DKFNTTF9nZXQxX3BlZXJfY2VydGlmaWNhdGUpCisrICAgIFJFU09MVkVGVU5D KEVWUF9QS0VZX2dldF9iYXNlX2lkKQorKyNlbHNlCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRf cGVlcl9jZXJ0aWZpY2F0ZSkKKysgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfYmFzZV9pZCkKKysj ZW5kaWYgLy8gT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKysKKyAgICAgUkVTT0xWRUZVTkMo U1NMX2dldF92ZXJpZnlfcmVzdWx0KQorICAgICBSRVNPTFZFRlVOQyhTU0xfbmV3KQorICAgICBS RVNPTFZFRlVOQyhTU0xfZ2V0X1NTTF9DVFgpCitAQCAtMTIwNiw5ICsxMjE4LDcgQEAgYm9vbCBx X3Jlc29sdmVPcGVuU3NsU3ltYm9scygpCisgICAgIFJFU09MVkVGVU5DKERIX2ZyZWUpCisgICAg IFJFU09MVkVGVU5DKGQyaV9ESHBhcmFtcykKKyAgICAgUkVTT0xWRUZVTkMoaTJkX0RIcGFyYW1z KQorLSNpZm5kZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorICAgICBSRVNPTFZFRlVOQyhE SF9jaGVjaykKKy0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorICAgICBSRVNP TFZFRlVOQyhCTl9iaW4yYm4pCisgCisgI2lmbmRlZiBPUEVOU1NMX05PX0VDCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9sc19wLmgg Yi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaAor aW5kZXggOTVlODg5N2EzYi4uMjdhZWZmYTE4YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0 d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oCisrKysgYi9xdGJhc2Uvc3Jj L25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaAorQEAgLTIzNyw3ICsy MzcsNiBAQCBRX0FVVE9URVNUX0VYUE9SVCBpbnQgcV9FVlBfUEtFWV91cF9yZWYoRVZQX1BLRVkg KmEpOworIEVWUF9QS0VZX0NUWCAqcV9FVlBfUEtFWV9DVFhfbmV3KEVWUF9QS0VZICpwa2V5LCBF TkdJTkUgKmUpOworIHZvaWQgcV9FVlBfUEtFWV9DVFhfZnJlZShFVlBfUEtFWV9DVFggKmN0eCk7 CisgaW50IHFfRVZQX1BLRVlfcGFyYW1fY2hlY2soRVZQX1BLRVlfQ1RYICpjdHgpOworLWludCBx X0VWUF9QS0VZX2Jhc2VfaWQoRVZQX1BLRVkgKmEpOworIGludCBxX1JTQV9iaXRzKFJTQSAqYSk7 CisgUV9BVVRPVEVTVF9FWFBPUlQgaW50IHFfT1BFTlNTTF9za19udW0oT1BFTlNTTF9TVEFDSyAq YSk7CisgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCBxX09QRU5TU0xfc2tfcG9wX2ZyZWUoT1BFTlNT TF9TVEFDSyAqYSwgdm9pZCAoKmIpKHZvaWQgKikpOworQEAgLTI0Niw3ICsyNDUsNyBAQCBRX0FV VE9URVNUX0VYUE9SVCB2b2lkIHFfT1BFTlNTTF9za19wdXNoKE9QRU5TU0xfU1RBQ0sgKnN0LCB2 b2lkICpkYXRhKTsKKyBRX0FVVE9URVNUX0VYUE9SVCB2b2lkIHFfT1BFTlNTTF9za19mcmVlKE9Q RU5TU0xfU1RBQ0sgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQgKiBxX09QRU5TU0xfc2tf dmFsdWUoT1BFTlNTTF9TVEFDSyAqYSwgaW50IGIpOworIGludCBxX1NTTF9zZXNzaW9uX3JldXNl ZChTU0wgKmEpOworLXVuc2lnbmVkIGxvbmcgcV9TU0xfQ1RYX3NldF9vcHRpb25zKFNTTF9DVFgg KmN0eCwgdW5zaWduZWQgbG9uZyBvcCk7CisrcXNzbG9wdGlvbnMgcV9TU0xfQ1RYX3NldF9vcHRp b25zKFNTTF9DVFggKmN0eCwgcXNzbG9wdGlvbnMgb3ApOworIGludCBxX09QRU5TU0xfaW5pdF9z c2wodWludDY0X3Qgb3B0cywgY29uc3QgT1BFTlNTTF9JTklUX1NFVFRJTkdTICpzZXR0aW5ncyk7 Cisgc2l6ZV90IHFfU1NMX2dldF9jbGllbnRfcmFuZG9tKFNTTCAqYSwgdW5zaWduZWQgY2hhciAq b3V0LCBzaXplX3Qgb3V0bGVuKTsKKyBzaXplX3QgcV9TU0xfU0VTU0lPTl9nZXRfbWFzdGVyX2tl eShjb25zdCBTU0xfU0VTU0lPTiAqc2Vzc2lvbiwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qg b3V0bGVuKTsKK0BAIC01MTAsNyArNTA5LDYgQEAgY29uc3QgU1NMX0NJUEhFUiAqcV9TU0xfZ2V0 X2N1cnJlbnRfY2lwaGVyKFNTTCAqYSk7CisgaW50IHFfU1NMX3ZlcnNpb24oY29uc3QgU1NMICph KTsKKyBpbnQgcV9TU0xfZ2V0X2Vycm9yKFNTTCAqYSwgaW50IGIpOworIFNUQUNLX09GKFg1MDkp ICpxX1NTTF9nZXRfcGVlcl9jZXJ0X2NoYWluKFNTTCAqYSk7CistWDUwOSAqcV9TU0xfZ2V0X3Bl ZXJfY2VydGlmaWNhdGUoU1NMICphKTsKKyBsb25nIHFfU1NMX2dldF92ZXJpZnlfcmVzdWx0KGNv bnN0IFNTTCAqYSk7CisgU1NMICpxX1NTTF9uZXcoU1NMX0NUWCAqYSk7CisgU1NMX0NUWCAqcV9T U0xfZ2V0X1NTTF9DVFgoU1NMICphKTsKK0BAIC01ODIsMTAgKzU4MCw3IEBAIERIICpxX0RIX25l dygpOworIHZvaWQgcV9ESF9mcmVlKERIICpkaCk7CisgREggKnFfZDJpX0RIcGFyYW1zKERIICoq YSwgY29uc3QgdW5zaWduZWQgY2hhciAqKnBwLCBsb25nIGxlbmd0aCk7CisgaW50IHFfaTJkX0RI cGFyYW1zKERIICphLCB1bnNpZ25lZCBjaGFyICoqcCk7CistCistI2lmbmRlZiBPUEVOU1NMX05P X0RFUFJFQ0FURURfM18wCisgaW50IHFfREhfY2hlY2soREggKmRoLCBpbnQgKmNvZGVzKTsKKy0j ZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIAorIEJJR05VTSAqcV9CTl9iaW4y Ym4oY29uc3QgdW5zaWduZWQgY2hhciAqcywgaW50IGxlbiwgQklHTlVNICpyZXQpOworICNkZWZp bmUgcV9TU0xfQ1RYX3NldF90bXBfZGgoY3R4LCBkaCkgcV9TU0xfQ1RYX2N0cmwoKGN0eCksIFNT TF9DVFJMX1NFVF9UTVBfREgsIDAsIChjaGFyICopZGgpCitAQCAtNzU0LDYgKzc0OSwxNyBAQCB2 b2lkIHFfQ1JZUFRPX2ZyZWUodm9pZCAqc3RyLCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSk7 CisgaW50IHFfU1NMX0NUWF9nZXRfc2VjdXJpdHlfbGV2ZWwoY29uc3QgU1NMX0NUWCAqY3R4KTsK KyB2b2lkIHFfU1NMX0NUWF9zZXRfc2VjdXJpdHlfbGV2ZWwoU1NMX0NUWCAqY3R4LCBpbnQgbGV2 ZWwpOworIAorKy8vIEhlcmUgd2UgaGF2ZSB0aGUgb25lcyB0aGF0IG1ha2UgZGlmZmVyZW5jZSBi ZXR3ZWVuIE9wZW5TU0wgcHJlL3Bvc3QgdjM6CisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9O X01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworK1g1MDkgKnFfU1NMX2dldDFf cGVlcl9jZXJ0aWZpY2F0ZShTU0wgKmEpOworKyNkZWZpbmUgcV9TU0xfZ2V0X3BlZXJfY2VydGlm aWNhdGUgcV9TU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlCisraW50IHFfRVZQX1BLRVlfZ2V0X2Jh c2VfaWQoY29uc3QgRVZQX1BLRVkgKnBrZXkpOworKyNkZWZpbmUgcV9FVlBfUEtFWV9iYXNlX2lk IHFfRVZQX1BLRVlfZ2V0X2Jhc2VfaWQKKysjZWxzZQorK1g1MDkgKnFfU1NMX2dldF9wZWVyX2Nl cnRpZmljYXRlKFNTTCAqYSk7CisraW50IHFfRVZQX1BLRVlfYmFzZV9pZChFVlBfUEtFWSAqYSk7 CisrI2VuZGlmIC8vIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrCisgUVRfRU5EX05BTUVT UEFDRQorIAorICNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9l Z2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oCitpbmRleCBiZjM3ZDA3ZmQ4Li5kYmQ0MmZiNzk5IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRf ZWdsX3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2Uv cXRfZWdsX3AuaAorQEAgLTYxLDcgKzYxLDExIEBACisgIyBpZiAhZGVmaW5lZChRX09TX0lOVEVH UklUWSkKKyAjICBkZWZpbmUgV0lOX0lOVEVSRkFDRV9DVVNUT00gICAvLyBOVgorICMgZW5kaWYg Ly8gUV9PU19JTlRFR1JJVFkKKy0jZW5kaWYgIC8vIFFUX0VHTF9OT19YMTEKKysjZWxzZSAvLyBR VF9FR0xfTk9fWDExCisrLy8gSWYgb25lIGhhcyBhbiBlZ2xwbGF0Zm9ybS5oIHdpdGggaHR0cHM6 Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9FR0wtUmVnaXN0cnkvcHVsbC8xMzAKKysvLyB0aGF0 IG5lZWRzIFVTRV9YMTEgdG8gYmUgZGVmaW5lZC4KKysjIGRlZmluZSBVU0VfWDExCisrI2VuZGlm CisgCisgI2lmZGVmIFFUX0VHTF9XQVlMQU5ECisgIyBkZWZpbmUgV0FZTEFORCAvLyBOVgorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ZvbnRkYXRhYmFzZXMvZm9udGNv bmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L2ZvbnRkYXRhYmFzZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcAoraW5kZXgg MTU5YjQ5MGNlMC4uMDBhYTgwY2Q1OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L2ZvbnRkYXRhYmFzZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcAor KysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29uZmln L3Fmb250Y29uZmlnZGF0YWJhc2UuY3BwCitAQCAtNTY3LDYgKzU2Nyw4IEBAIHZvaWQgUUZvbnRj b25maWdEYXRhYmFzZTo6cG9wdWxhdGVGb250RGF0YWJhc2UoKQorICAgICAgICAgZm9udHMgPSBG Y0ZvbnRMaXN0KG51bGxwdHIsIHBhdHRlcm4sIG9zKTsKKyAgICAgICAgIEZjT2JqZWN0U2V0RGVz dHJveShvcyk7CisgICAgICAgICBGY1BhdHRlcm5EZXN0cm95KHBhdHRlcm4pOworKyAgICAgICAg aWYgKCFmb250cykKKysgICAgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKyAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBmb250cy0+bmZvbnQ7IGkrKykKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAgYi9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAKK2luZGV4 IGI3MTNjMTk0NDcuLjdjYjlhOGM3OWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uLmNwcAorQEAgLTk1LDYg Kzk1LDcgQEAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBhdXRvIEtleVRibCA9IHFNYWtlQXJyYXko CisgICAgICAgICBYa2IyUXQ8WEtCX0tFWV9DbGVhciwgICAgICAgICAgICAgICAgICAgUXQ6Oktl eV9EZWxldGU+LAorICAgICAgICAgWGtiMlF0PFhLQl9LRVlfUGF1c2UsICAgICAgICAgICAgICAg ICAgIFF0OjpLZXlfUGF1c2U+LAorICAgICAgICAgWGtiMlF0PFhLQl9LRVlfUHJpbnQsICAgICAg ICAgICAgICAgICAgIFF0OjpLZXlfUHJpbnQ+LAorKyAgICAgICAgWGtiMlF0PFhLQl9LRVlfU3lz X1JlcSwgICAgICAgICAgICAgICAgIFF0OjpLZXlfU3lzUmVxPiwKKyAgICAgICAgIFhrYjJRdDww eDEwMDVGRjYwLCAgICAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1N5c1JlcT4sICAgICAgICAg Ly8gaGFyZGNvZGVkIFN1biBTeXNSZXEKKyAgICAgICAgIFhrYjJRdDwweDEwMDdmZjAwLCAgICAg ICAgICAgICAgICAgICAgICBRdDo6S2V5X1N5c1JlcT4sICAgICAgICAgLy8gaGFyZGNvZGVkIFgz ODYgU3lzUmVxCisgCitAQCAtNDcxLDcgKzQ3Miw3IEBAIFFWZWN0b3I8eGtiX2tleXN5bV90PiBR WGtiQ29tbW9uOjp0b0tleXN5bShRS2V5RXZlbnQgKmV2ZW50KQorICAgICB9IGVsc2UgaWYgKGV2 ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpLZXlwYWRNb2RpZmllcikgeworICAgICAgICAgaWYgKHF0 S2V5ID49IFF0OjpLZXlfMCAmJiBxdEtleSA8PSBRdDo6S2V5XzkpCisgICAgICAgICAgICAga2V5 c3ltcy5hcHBlbmQoWEtCX0tFWV9LUF8wICsgKHF0S2V5IC0gUXQ6OktleV8wKSk7CistICAgIH0g ZWxzZSBpZiAoaXNMYXRpbihxdEtleSkgJiYgZXZlbnQtPnRleHQoKS5pc1VwcGVyKCkpIHsKKysg ICAgfSBlbHNlIGlmIChpc0xhdGluMShxdEtleSkgJiYgZXZlbnQtPnRleHQoKS5pc1VwcGVyKCkp IHsKKyAgICAgICAgIGtleXN5bXMuYXBwZW5kKHF0S2V5KTsKKyAgICAgfQorIAorQEAgLTUyMyw3 ICs1MjQsNyBAQCBpbnQgUVhrYkNvbW1vbjo6a2V5c3ltVG9RdEtleSh4a2Jfa2V5c3ltX3Qga2V5 c3ltLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kaWZpZQorICAgICAgICAgLy8gV2l0aCBzdGFu ZGFyZCBzaG9ydGN1dHMgd2Ugc2hvdWxkIHByZWZlciBhIGxhdGluIGNoYXJhY3RlciwgdGhpcyBp cworICAgICAgICAgLy8gZm9yIGNoZWNrcyBsaWtlICJzb21lIHFrZXlldmVudCA9PSBRS2V5U2Vx dWVuY2U6OkNvcHkiIHRvIHdvcmsgZXZlbgorICAgICAgICAgLy8gd2hlbiB1c2luZyBmb3IgZXhh bXBsZSAncnVzc2lhbicga2V5Ym9hcmQgbGF5b3V0LgorLSAgICAgICAgaWYgKCFRWGtiQ29tbW9u Ojppc0xhdGluKGtleXN5bSkpIHsKKysgICAgICAgIGlmICghUVhrYkNvbW1vbjo6aXNMYXRpbjEo a2V5c3ltKSkgeworICAgICAgICAgICAgIHhrYl9rZXlzeW1fdCBsYXRpbktleXN5bSA9IFFYa2JD b21tb246Omxvb2t1cExhdGluS2V5c3ltKHN0YXRlLCBjb2RlKTsKKyAgICAgICAgICAgICBpZiAo bGF0aW5LZXlzeW0gIT0gWEtCX0tFWV9Ob1N5bWJvbCkKKyAgICAgICAgICAgICAgICAga2V5c3lt ID0gbGF0aW5LZXlzeW07CitAQCAtNTQ2LDcgKzU0Nyw3IEBAIHN0YXRpYyBpbnQga2V5c3ltVG9R dEtleV9pbnRlcm5hbCh4a2Jfa2V5c3ltX3Qga2V5c3ltLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMg bW9kCisgICAgIH0gZWxzZSBpZiAoa2V5c3ltID49IFhLQl9LRVlfS1BfMCAmJiBrZXlzeW0gPD0g WEtCX0tFWV9LUF85KSB7CisgICAgICAgICAvLyBudW1lcmljIGtleXBhZCBrZXlzCisgICAgICAg ICBxdEtleSA9IFF0OjpLZXlfMCArIChrZXlzeW0gLSBYS0JfS0VZX0tQXzApOworLSAgICB9IGVs c2UgaWYgKFFYa2JDb21tb246OmlzTGF0aW4oa2V5c3ltKSkgeworKyAgICB9IGVsc2UgaWYgKFFY a2JDb21tb246OmlzTGF0aW4xKGtleXN5bSkpIHsKKyAgICAgICAgIHF0S2V5ID0gUVhrYkNvbW1v bjo6cXhrYmNvbW1vbl94a2Jfa2V5c3ltX3RvX3VwcGVyKGtleXN5bSk7CisgICAgIH0gZWxzZSB7 CisgICAgICAgICAvLyBjaGVjayBpZiB3ZSBoYXZlIGEgZGlyZWN0IG1hcHBpbmcKK0BAIC02Nzgs NyArNjc5LDcgQEAgUUxpc3Q8aW50PiBRWGtiQ29tbW9uOjpwb3NzaWJsZUtleXMoeGtiX3N0YXRl ICpzdGF0ZSwgY29uc3QgUUtleUV2ZW50ICpldmVudCwKKyAgICAgICAgIFF0OjpLZXlib2FyZE1v ZGlmaWVycyBuZWVkZWRNb2RzID0gTW9kc1RibFtpXTsKKyAgICAgICAgIGlmICgobW9kaWZpZXJz ICYgbmVlZGVkTW9kcykgPT0gbmVlZGVkTW9kcykgeworICAgICAgICAgICAgIGlmIChpID09IDgp IHsKKy0gICAgICAgICAgICAgICAgaWYgKGlzTGF0aW4oYmFzZVF0S2V5KSkKKysgICAgICAgICAg ICAgICAgaWYgKGlzTGF0aW4xKGJhc2VRdEtleSkpCisgICAgICAgICAgICAgICAgICAgICBjb250 aW51ZTsKKyAgICAgICAgICAgICAgICAgLy8gYWRkIGEgbGF0aW4ga2V5IGFzIGEgZmFsbCBiYWNr IGtleQorICAgICAgICAgICAgICAgICBzeW0gPSBsb29rdXBMYXRpbktleXN5bShzdGF0ZSwga2V5 Y29kZSk7CitAQCAtNzMzLDcgKzczNCw3IEBAIHZvaWQgUVhrYkNvbW1vbjo6dmVyaWZ5SGFzTGF0 aW5MYXlvdXQoeGtiX2tleW1hcCAqa2V5bWFwKQorICAgICBmb3IgKHhrYl9sYXlvdXRfaW5kZXhf dCBsYXlvdXQgPSAwOyBsYXlvdXQgPCBsYXlvdXRDb3VudDsgKytsYXlvdXQpIHsKKyAgICAgICAg IGZvciAoeGtiX2tleWNvZGVfdCBjb2RlID0gbWluS2V5Y29kZTsgY29kZSA8IG1heEtleWNvZGU7 ICsrY29kZSkgeworICAgICAgICAgICAgIHhrYl9rZXltYXBfa2V5X2dldF9zeW1zX2J5X2xldmVs KGtleW1hcCwgY29kZSwgbGF5b3V0LCAwLCAma2V5c3ltcyk7CistICAgICAgICAgICAgaWYgKGtl eXN5bXMgJiYgaXNMYXRpbihrZXlzeW1zWzBdKSkKKysgICAgICAgICAgICBpZiAoa2V5c3ltcyAm JiBpc0xhdGluMShrZXlzeW1zWzBdKSkKKyAgICAgICAgICAgICAgICAgbnJMYXRpbktleXMrKzsK KyAgICAgICAgICAgICBpZiAobnJMYXRpbktleXMgPiAxMCkgLy8gYXJiaXRyYXJpbHkgY2hvc2Vu IHRocmVzaG9sZAorICAgICAgICAgICAgICAgICByZXR1cm47CitAQCAtNzY2LDcgKzc2Nyw3IEBA IHhrYl9rZXlzeW1fdCBRWGtiQ29tbW9uOjpsb29rdXBMYXRpbktleXN5bSh4a2Jfc3RhdGUgKnN0 YXRlLCB4a2Jfa2V5Y29kZV90IGtleWNvCisgICAgICAgICB4a2JfbGV2ZWxfaW5kZXhfdCBsZXZl bCA9IHhrYl9zdGF0ZV9rZXlfZ2V0X2xldmVsKHN0YXRlLCBrZXljb2RlLCBsYXlvdXQpOworICAg ICAgICAgaWYgKHhrYl9rZXltYXBfa2V5X2dldF9zeW1zX2J5X2xldmVsKGtleW1hcCwga2V5Y29k ZSwgbGF5b3V0LCBsZXZlbCwgJnN5bXMpICE9IDEpCisgICAgICAgICAgICAgY29udGludWU7Cist ICAgICAgICBpZiAoaXNMYXRpbihzeW1zWzBdKSkgeworKyAgICAgICAgaWYgKGlzTGF0aW4xKHN5 bXNbMF0pKSB7CisgICAgICAgICAgICAgc3ltID0gc3ltc1swXTsKKyAgICAgICAgICAgICBicmVh azsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9p bnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbl9wLmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9y dC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbl9wLmgKK2luZGV4IDU2MWVhZTAzZGIuLjgzODli ZDhmNWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jj b21tb24vcXhrYmNvbW1vbl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lu cHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uX3AuaAorQEAgLTk0LDggKzk0LDggQEAgcHVibGljOgor ICAgICBzdGF0aWMgdm9pZCB2ZXJpZnlIYXNMYXRpbkxheW91dCh4a2Jfa2V5bWFwICprZXltYXAp OworICAgICBzdGF0aWMgeGtiX2tleXN5bV90IGxvb2t1cExhdGluS2V5c3ltKHhrYl9zdGF0ZSAq c3RhdGUsIHhrYl9rZXljb2RlX3Qga2V5Y29kZSk7CisgCistICAgIHN0YXRpYyBib29sIGlzTGF0 aW4oeGtiX2tleXN5bV90IHN5bSkgeworLSAgICAgICAgcmV0dXJuICgoc3ltID49ICdhJyAmJiBz eW0gPD0gJ3onKSB8fCAoc3ltID49ICdBJyAmJiBzeW0gPD0gJ1onKSk7CisrICAgIHN0YXRpYyBi b29sIGlzTGF0aW4xKHhrYl9rZXlzeW1fdCBzeW0pIHsKKysgICAgICAgIHJldHVybiBzeW0gPD0g MHhmZjsKKyAgICAgfQorICAgICBzdGF0aWMgYm9vbCBpc0tleXBhZCh4a2Jfa2V5c3ltX3Qgc3lt KSB7CisgICAgICAgICByZXR1cm4gc3ltID49IFhLQl9LRVlfS1BfU3BhY2UgJiYgc3ltIDw9IFhL Ql9LRVlfS1BfOTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9rbXNj b252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2tt c2NvbnZlbmllbmNlL3FrbXNkZXZpY2UuY3BwCitpbmRleCA4Y2Q3ZjliMzY4Li40MDZmODQ2NjNm IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2Uv cWttc2RldmljZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2NvbnZl bmllbmNlL3FrbXNkZXZpY2UuY3BwCitAQCAtMzE4LDcgKzMxOCw3IEBAIFFQbGF0Zm9ybVNjcmVl biAqUUttc0RldmljZTo6Y3JlYXRlU2NyZWVuRm9yQ29ubmVjdG9yKGRybU1vZGVSZXNQdHIgcmVz b3VyY2VzLAorIAorICAgICBpZiAoY3VycmVudCA8IDAgJiYgY3J0Y19tb2RlLmNsb2NrICE9IDAp IHsKKyAgICAgICAgIG1vZGVzIDw8IGNydGNfbW9kZTsKKy0gICAgICAgIGN1cnJlbnQgPSBtb2Rl LnNpemUoKSAtIDE7CisrICAgICAgICBjdXJyZW50ID0gbW9kZXMuc2l6ZSgpIC0gMTsKKyAgICAg fQorIAorICAgICBpZiAoY29uZmlndXJhdGlvbiA9PSBPdXRwdXRDb25maWdDdXJyZW50KQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9h dHNwaWFkYXB0b3IuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3Np YmlsaXR5L2F0c3BpYWRhcHRvci5jcHAKK2luZGV4IDkxNTNmZDIwYmIuLjI1NWVhNWUzM2UgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkv YXRzcGlhZGFwdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhh Y2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAKK0BAIC0xOTQsNiArMTk0LDkgQEAgUVN0cmlu ZyBBdFNwaUFkYXB0b3I6OmludHJvc3BlY3QoY29uc3QgUVN0cmluZyAmcGF0aCkgY29uc3QKKyAg ICAgICAgICAgICAgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPVwib3V0XCIgdHlwZT1cIihzbylc Ii8+XG4iCisgICAgICAgICAgICAgICAgICIgICAgICA8YW5ub3RhdGlvbiB2YWx1ZT1cIlFTcGlP YmplY3RSZWZlcmVuY2VcIiBuYW1lPVwib3JnLnF0cHJvamVjdC5RdERCdXMuUXRUeXBlTmFtZS5P dXQwXCIvPlxuIgorICAgICAgICAgICAgICAgICAiICAgIDwvbWV0aG9kPlxuIgorKyAgICAgICAg ICAgICAgICAiICAgIDxtZXRob2QgbmFtZT1cIkdldEFjY2Vzc2libGVJZFwiPlxuIgorKyAgICAg ICAgICAgICAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249XCJvdXRcIiB0eXBlPVwic1wiLz5cbiIK KysgICAgICAgICAgICAgICAgIiAgICA8L21ldGhvZD5cbiIKKyAgICAgICAgICAgICAgICAgIiAg PC9pbnRlcmZhY2U+XG4iCisgICAgICAgICAgICAgICAgICk7CisgCitAQCAtOTEzLDggKzkxNiwx NyBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6bm90aWZ5KFFBY2Nlc3NpYmxlRXZlbnQgKmV2ZW50KQor ICAgICB9CisgICAgIGNhc2UgUUFjY2Vzc2libGU6Ok5hbWVDaGFuZ2VkOiB7CisgICAgICAgICBp ZiAoc2VuZE9iamVjdCB8fCBzZW5kT2JqZWN0X3Byb3BlcnR5X2NoYW5nZSB8fCBzZW5kT2JqZWN0 X3Byb3BlcnR5X2NoYW5nZV9hY2Nlc3NpYmxlX25hbWUpIHsKKy0gICAgICAgICAgICBRU3RyaW5n IHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCkpOwor LSAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMo UUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsIHZhcmlhbnRGb3JQYXRoKHBh dGgpKTsKKysgICAgICAgICAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UgPSBldmVudC0+ YWNjZXNzaWJsZUludGVyZmFjZSgpOworKyAgICAgICAgICAgIGlmICghaWZhY2UpIHsKKysgICAg ICAgICAgICAgICAgcUNEZWJ1ZyhsY0FjY2Vzc2liaWxpdHlBdHNwaSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAiTmFtZUNoYW5nZWQgZXZlbnQgZnJvbSBpbnZhbGlkIGFjY2Vzc2libGUuIik7 CisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAg ICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShpZmFjZSk7CisrICAgICAgICAgICAg UVZhcmlhbnRMaXN0IGFyZ3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cygKKysgICAgICAgICAg ICAgICAgUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsCisrICAgICAgICAg ICAgICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50KGlmYWNlLT50ZXh0KFFBY2Nl c3NpYmxlOjpOYW1lKSkpKTsKKyAgICAgICAgICAgICBzZW5kREJ1c1NpZ25hbChwYXRoLCBRTGF0 aW4xU3RyaW5nKEFUU1BJX0RCVVNfSU5URVJGQUNFX0VWRU5UX09CSkVDVCksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUHJvcGVydHlDaGFuZ2UiKSwgYXJncyk7 CisgICAgICAgICB9CitAQCAtOTIyLDggKzkzNCwxNyBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6bm90 aWZ5KFFBY2Nlc3NpYmxlRXZlbnQgKmV2ZW50KQorICAgICB9CisgICAgIGNhc2UgUUFjY2Vzc2li bGU6OkRlc2NyaXB0aW9uQ2hhbmdlZDogeworICAgICAgICAgaWYgKHNlbmRPYmplY3QgfHwgc2Vu ZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2UgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2VfYWNj ZXNzaWJsZV9kZXNjcmlwdGlvbikgeworLSAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhG b3JJbnRlcmZhY2UoZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKSk7CistICAgICAgICAgICAg UVZhcmlhbnRMaXN0IGFyZ3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhRTGF0aW4xU3RyaW5n KCJhY2Nlc3NpYmxlLWRlc2NyaXB0aW9uIiksIDAsIDAsIHZhcmlhbnRGb3JQYXRoKHBhdGgpKTsK KysgICAgICAgICAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UgPSBldmVudC0+YWNjZXNz aWJsZUludGVyZmFjZSgpOworKyAgICAgICAgICAgIGlmICghaWZhY2UpIHsKKysgICAgICAgICAg ICAgICAgcUNEZWJ1ZyhsY0FjY2Vzc2liaWxpdHlBdHNwaSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAiRGVzY3JpcHRpb25DaGFuZ2VkIGV2ZW50IGZyb20gaW52YWxpZCBhY2Nlc3NpYmxlLiIp OworKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgfQorKworKyAgICAgICAg ICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoaWZhY2UpOworKyAgICAgICAgICAg IFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoCisrICAgICAgICAg ICAgICAgIFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtZGVzY3JpcHRpb24iKSwgMCwgMCwKKysg ICAgICAgICAgICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoaWZhY2UtPnRl eHQoUUFjY2Vzc2libGU6OkRlc2NyaXB0aW9uKSkpKTsKKyAgICAgICAgICAgICBzZW5kREJ1c1Np Z25hbChwYXRoLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNfSU5URVJGQUNFX0VWRU5UX09CSkVD VCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUHJvcGVydHlD aGFuZ2UiKSwgYXJncyk7CisgICAgICAgICB9CitAQCAtMTAzOCw3ICsxMDU5LDkgQEAgdm9pZCBB dFNwaUFkYXB0b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2ZW50ICpldmVudCkKKyAgICAgICAgICAg ICAgICAgLy8gQ29tYm8gQm94IHdpdGggQVQtU1BJIGxpa2VzIHRvIGJlIHNwZWNpYWwKKyAgICAg ICAgICAgICAgICAgLy8gSXQgcmVxdWlyZXMgYSBuYW1lLWNoYW5nZSB0byB1cGRhdGUgY2FjaGVz IGFuZCB0aGVuIHNlbGVjdGlvbi1jaGFuZ2VkCisgICAgICAgICAgICAgICAgIFFTdHJpbmcgcGF0 aCA9IHBhdGhGb3JJbnRlcmZhY2UoaWZhY2UpOworLSAgICAgICAgICAgICAgICBRVmFyaWFudExp c3QgYXJnczEgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhRTGF0aW4xU3RyaW5nKCJhY2Nlc3Np YmxlLW5hbWUiKSwgMCwgMCwgdmFyaWFudEZvclBhdGgocGF0aCkpOworKyAgICAgICAgICAgICAg ICBRVmFyaWFudExpc3QgYXJnczEgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cygKKysgICAgICAg ICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLAorKyAg ICAgICAgICAgICAgICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoaWZhY2Ut PnRleHQoUUFjY2Vzc2libGU6Ok5hbWUpKSkpOworICAgICAgICAgICAgICAgICBzZW5kREJ1c1Np Z25hbChwYXRoLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNfSU5URVJGQUNFX0VWRU5UX09CSkVD VCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlByb3Bl cnR5Q2hhbmdlIiksIGFyZ3MxKTsKKyAgICAgICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3My ID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoUVN0cmluZygpLCAwLCAwLCBRVmFyaWFudDo6ZnJv bVZhbHVlKFFEQnVzVmFyaWFudChRVmFyaWFudCgwKSkpKTsKK0BAIC0xMzU4LDYgKzEzODEsMjYg QEAgdm9pZCBBdFNwaUFkYXB0b3I6OnJlZ2lzdGVyQXBwbGljYXRpb24oKQorICAgICBkZWxldGUg cmVnaXN0cnk7CisgfQorIAorK25hbWVzcGFjZSB7CisrUVN0cmluZyBhY2Nlc3NpYmxlSWRGb3JB Y2Nlc3NpYmxlKFFBY2Nlc3NpYmxlSW50ZXJmYWNlICphY2Nlc3NpYmxlKQorK3sKKysgICAgUVN0 cmluZyByZXN1bHQ7CisrICAgIHdoaWxlIChhY2Nlc3NpYmxlKSB7CisrICAgICAgICBpZiAoIXJl c3VsdC5pc0VtcHR5KCkpCisrICAgICAgICAgICAgcmVzdWx0LnByZXBlbmQoUUxhdGluMUNoYXIo Jy4nKSk7CisrICAgICAgICBpZiAoYXV0byBvYmogPSBhY2Nlc3NpYmxlLT5vYmplY3QoKSkgewor KyAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgbmFtZSA9IG9iai0+b2JqZWN0TmFtZSgpOworKyAg ICAgICAgICAgIGlmICghbmFtZS5pc0VtcHR5KCkpCisrICAgICAgICAgICAgICAgIHJlc3VsdC5w cmVwZW5kKG5hbWUpOworKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgcmVzdWx0 LnByZXBlbmQoUVN0cmluZzo6ZnJvbVV0Zjgob2JqLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgp KSk7CisrICAgICAgICB9CisrICAgICAgICBhY2Nlc3NpYmxlID0gYWNjZXNzaWJsZS0+cGFyZW50 KCk7CisrICAgIH0KKysgICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrfSAvLyBuYW1lc3BhY2UKKysK KyAvLyBBY2Nlc3NpYmxlCisgYm9vbCBBdFNwaUFkYXB0b3I6OmFjY2Vzc2libGVJbnRlcmZhY2Uo UUFjY2Vzc2libGVJbnRlcmZhY2UgKmludGVyZmFjZSwgY29uc3QgUVN0cmluZyAmZnVuY3Rpb24s IGNvbnN0IFFEQnVzTWVzc2FnZSAmbWVzc2FnZSwgY29uc3QgUURCdXNDb25uZWN0aW9uICZjb25u ZWN0aW9uKQorIHsKK0BAIC0xNDQxLDYgKzE0ODQsOSBAQCBib29sIEF0U3BpQWRhcHRvcjo6YWNj ZXNzaWJsZUludGVyZmFjZShRQWNjZXNzaWJsZUludGVyZmFjZSAqaW50ZXJmYWNlLCBjb25zdCBR UworICAgICAgICAgICAgIGNoaWxkcmVuIDw8IHJlZjsKKyAgICAgICAgIH0KKyAgICAgICAgIGNv bm5lY3Rpb24uc2VuZChtZXNzYWdlLmNyZWF0ZVJlcGx5KFFWYXJpYW50Ojpmcm9tVmFsdWUoY2hp bGRyZW4pKSk7CisrICAgIH0gZWxzZSBpZiAoZnVuY3Rpb24gPT0gUUxhdGluMVN0cmluZygiR2V0 QWNjZXNzaWJsZUlkIikpIHsKKysgICAgICAgIHNlbmRSZXBseShjb25uZWN0aW9uLCBtZXNzYWdl LAorKyAgICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50KGFj Y2Vzc2libGVJZEZvckFjY2Vzc2libGUoaW50ZXJmYWNlKSkpKTsKKyAgICAgfSBlbHNlIHsKKyAg ICAgICAgIHFDRGVidWcobGNBY2Nlc3NpYmlsaXR5QXRzcGkpIDw8ICJXQVJOSU5HOiBBdFNwaUFk YXB0b3I6OmFjY2Vzc2libGVJbnRlcmZhY2UgZG9lcyBub3QgaW1wbGVtZW50ICIgPDwgZnVuY3Rp b24gPDwgbWVzc2FnZS5wYXRoKCk7CisgICAgICAgICByZXR1cm4gZmFsc2U7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25u ZWN0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0 eS9kYnVzY29ubmVjdGlvbi5jcHAKK2luZGV4IDQ1ZGRjOGU0OTYuLmNjNzM0YWJjNjMgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvZGJ1 c2Nvbm5lY3Rpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFj Y2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwCitAQCAtNjksNiArNjksMjEgQEAgUVRfQkVH SU5fTkFNRVNQQUNFCisgREJ1c0Nvbm5lY3Rpb246OkRCdXNDb25uZWN0aW9uKFFPYmplY3QgKnBh cmVudCkKKyAgICAgOiBRT2JqZWN0KHBhcmVudCksIG1fYTExeUNvbm5lY3Rpb24oUVN0cmluZygp KSwgbV9lbmFibGVkKGZhbHNlKQorIHsKKysgICAgLy8gSWYgdGhlIGJ1cyBpcyBleHBsaWNpdGx5 IHNldCB2aWEgZW52IHZhciBpdCBvdmVycmlkZXMgZXZlcnl0aGluZyBlbHNlLgorKyAgICBRQnl0 ZUFycmF5IGFkZHJlc3NFbnYgPSBxZ2V0ZW52KCJBVF9TUElfQlVTX0FERFJFU1MiKTsKKysgICAg aWYgKCFhZGRyZXNzRW52LmlzRW1wdHkoKSkgeworKyAgICAgICAgLy8gT25seSBjb25uZWN0IG9u IG5leHQgbG9vcCBydW4sIGNvbm5lY3Rpb25zIHRvIG91ciBlbmFibGVkIHNpZ25hbCBhcmUKKysg ICAgICAgIC8vIG9ubHkgZXN0YWJsaXNoZWQgYWZ0ZXIgdGhlIGN0b3IgcmV0dXJucy4KKysgICAg ICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QoCisrICAgICAgICAgICAgICAgIHRoaXMsCisr ICAgICAgICAgICAgICAgIFt0aGlzLCBhZGRyZXNzRW52XSB7CisrICAgICAgICAgICAgICAgICAg ICBtX2VuYWJsZWQgPSB0cnVlOworKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdEExMXlCdXMo UVN0cmluZzo6ZnJvbUxvY2FsOEJpdChhZGRyZXNzRW52KSk7CisrICAgICAgICAgICAgICAgIH0s CisrICAgICAgICAgICAgICAgIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKysgICAgICAgIHJldHVy bjsKKysgICAgfQorKworICAgICAvLyBTdGFydCBtb25pdG9yaW5nIGlmICJvcmcuYTExeS5CdXMi IGlzIHJlZ2lzdGVyZWQgYXMgREJ1cyBzZXJ2aWNlLgorICAgICBRREJ1c0Nvbm5lY3Rpb24gYyA9 IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpOworICAgICBpZiAoIWMuaXNDb25uZWN0ZWQo KSkgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dl bmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcAoraW5k ZXggMWEzY2FiMjc1ZC4uMmFiZTAzOTEyNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcAor KysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdl bmVyaWN1bml4c2VydmljZXMuY3BwCitAQCAtNTEsNiArNTEsOSBAQAorICNpbmNsdWRlIDxRdENv cmUvUVN0YW5kYXJkUGF0aHM+CisgI2luY2x1ZGUgPFF0Q29yZS9RVXJsPgorIAorKyNpbmNsdWRl IDxRdEd1aS9RR3VpQXBwbGljYXRpb24+CisrI2luY2x1ZGUgPFF0R3VpL1FXaW5kb3c+CisrCisg I2lmIFFUX0NPTkZJRyhkYnVzKQorIC8vIFRoZXNlIFF0Q29yZSBpbmNsdWRlcyBhcmUgbmVlZGVk IGZvciB4ZGctZGVza3RvcC1wb3J0YWwgc3VwcG9ydAorICNpbmNsdWRlIDxRdENvcmUvcHJpdmF0 ZS9xY29yZV91bml4X3AuaD4KK0BAIC01OCw2ICs2MSw4IEBACisgI2luY2x1ZGUgPFF0Q29yZS9R RmlsZUluZm8+CisgI2luY2x1ZGUgPFF0Q29yZS9RVXJsUXVlcnk+CisgCisrI2luY2x1ZGUgPFF0 R3VpL1FDb2xvcj4KKysKKyAjaW5jbHVkZSA8UXREQnVzL1FEQnVzQ29ubmVjdGlvbj4KKyAjaW5j bHVkZSA8UXREQnVzL1FEQnVzTWVzc2FnZT4KKyAjaW5jbHVkZSA8UXREQnVzL1FEQnVzUGVuZGlu Z0NhbGw+CitAQCAtMTQyLDYgKzE0Nyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkZXRlY3RXZWJC cm93c2VyKGNvbnN0IFFCeXRlQXJyYXkgJmRlc2t0b3AsCisgICAgIH0KKyAKKyAgICAgaWYgKGRl c2t0b3AgPT0gUUJ5dGVBcnJheSgiS0RFIikpIHsKKysgICAgICAgIGlmIChjaGVja0V4ZWN1dGFi bGUoUVN0cmluZ0xpdGVyYWwoImtkZS1vcGVuNSIpLCBicm93c2VyKSkKKysgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgIC8vIEtvbnF1ZXJvciBsYXVuY2hlcgorICAgICAgICAgaWYg KGNoZWNrRXhlY3V0YWJsZShRU3RyaW5nTGl0ZXJhbCgia2ZtY2xpZW50IiksIGJyb3dzZXIpKSB7 CisgICAgICAgICAgICAgYnJvd3Nlci0+YXBwZW5kKFFMYXRpbjFTdHJpbmcoIiBleGVjIikpOwor QEAgLTI5Niw4ICszMDMsMTM1IEBAIHN0YXRpYyBpbmxpbmUgUURCdXNNZXNzYWdlIHhkZ0Rlc2t0 b3BQb3J0YWxTZW5kRW1haWwoY29uc3QgUVVybCAmdXJsKQorIAorICAgICByZXR1cm4gUURCdXND b25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuY2FsbChtZXNzYWdlKTsKKyB9CisrCisrbmFtZXNwYWNl IHsKKytzdHJ1Y3QgWERHRGVza3RvcENvbG9yCisreworKyAgICBkb3VibGUgciA9IDA7CisrICAg IGRvdWJsZSBnID0gMDsKKysgICAgZG91YmxlIGIgPSAwOworKworKyAgICBRQ29sb3IgdG9RQ29s b3IoKSBjb25zdAorKyAgICB7CisrICAgICAgICBjb25zdGV4cHIgYXV0byByZ2JNYXggPSAyNTU7 CisrICAgICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxpbnQ+KHIgKiByZ2JNYXgpLCBzdGF0aWNf Y2FzdDxpbnQ+KGcgKiByZ2JNYXgpLAorKyAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50 PihiICogcmdiTWF4KSB9OworKyAgICB9CisrfTsKKysKKytjb25zdCBRREJ1c0FyZ3VtZW50ICZv cGVyYXRvcj4+KGNvbnN0IFFEQnVzQXJndW1lbnQgJmFyZ3VtZW50LCBYREdEZXNrdG9wQ29sb3Ig Jm15U3RydWN0KQorK3sKKysgICAgYXJndW1lbnQuYmVnaW5TdHJ1Y3R1cmUoKTsKKysgICAgYXJn dW1lbnQgPj4gbXlTdHJ1Y3QuciA+PiBteVN0cnVjdC5nID4+IG15U3RydWN0LmI7CisrICAgIGFy Z3VtZW50LmVuZFN0cnVjdHVyZSgpOworKyAgICByZXR1cm4gYXJndW1lbnQ7CisrfQorKworK2Ns YXNzIFhkZ0Rlc2t0b3BQb3J0YWxDb2xvclBpY2tlciA6IHB1YmxpYyBRUGxhdGZvcm1TZXJ2aWNl Q29sb3JQaWNrZXIKKyt7CisrICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAgICBYZGdEZXNrdG9w UG9ydGFsQ29sb3JQaWNrZXIoY29uc3QgUVN0cmluZyAmcGFyZW50V2luZG93SWQsIFFXaW5kb3cg KnBhcmVudCkKKysgICAgICAgIDogUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyKHBhcmVudCks IG1fcGFyZW50V2luZG93SWQocGFyZW50V2luZG93SWQpCisrICAgIHsKKysgICAgfQorKworKyAg ICB2b2lkIHBpY2tDb2xvcigpIG92ZXJyaWRlCisrICAgIHsKKysgICAgICAgIC8vIERCdXMgc2ln bmF0dXJlOgorKyAgICAgICAgLy8gUGlja0NvbG9yIChJTiAgIHMgICAgICBwYXJlbnRfd2luZG93 LAorKyAgICAgICAgLy8gICAgICAgICAgICBJTiAgIGF7c3Z9ICBvcHRpb25zCisrICAgICAgICAv LyAgICAgICAgICAgIE9VVCAgbyAgICAgIGhhbmRsZSkKKysgICAgICAgIC8vIE9wdGlvbnM6Cisr ICAgICAgICAvLyBoYW5kbGVfdG9rZW4gKHMpIC0gIEEgc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2Vk IGFzIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIEBoYW5kbGUuCisrCisrICAgICAgICBRREJ1c01l c3NhZ2UgbWVzc2FnZSA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9kQ2FsbCgKKysgICAgICAg ICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuRGVza3RvcCIp LCBRU3RyaW5nTGl0ZXJhbCgiL29yZy9mcmVlZGVza3RvcC9wb3J0YWwvZGVza3RvcCIpLAorKyAg ICAgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TY3Jl ZW5zaG90IiksIFFTdHJpbmdMaXRlcmFsKCJQaWNrQ29sb3IiKSk7CisrICAgICAgICBtZXNzYWdl IDw8IG1fcGFyZW50V2luZG93SWQgPDwgUVZhcmlhbnRNYXAoKTsKKysKKysgICAgICAgIFFEQnVz UGVuZGluZ0NhbGwgcGVuZGluZ0NhbGwgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5h c3luY0NhbGwobWVzc2FnZSk7CisrICAgICAgICBhdXRvIHdhdGNoZXIgPSBuZXcgUURCdXNQZW5k aW5nQ2FsbFdhdGNoZXIocGVuZGluZ0NhbGwsIHRoaXMpOworKyAgICAgICAgY29ubmVjdCh3YXRj aGVyLCAmUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB0aGlzLAorKyAgICAgICAg ICAgICAgICBbdGhpc10oUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKysgICAg ICAgICAgICAgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxhdGVyKCk7CisrICAgICAgICAgICAgICAg ICAgICBRREJ1c1BlbmRpbmdSZXBseTxRREJ1c09iamVjdFBhdGg+IHJlcGx5ID0gKndhdGNoZXI7 CisrICAgICAgICAgICAgICAgICAgICBpZiAocmVwbHkuaXNFcnJvcigpKSB7CisrICAgICAgICAg ICAgICAgICAgICAgICAgcVdhcm5pbmcoIkRCdXMgY2FsbCB0byBwaWNrIGNvbG9yIGZhaWxlZDog JXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFibGUocmVwbHku ZXJyb3IoKS5tZXNzYWdlKCkpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBRX0VNSVQgY29s b3JQaWNrZWQoe30pOworKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAg ICAgICAgICAgICAgICBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5jb25uZWN0KAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVz a3RvcC5wb3J0YWwuRGVza3RvcCIpLCByZXBseS52YWx1ZSgpLnBhdGgoKSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9y dGFsLlJlcXVlc3QiKSwgUVN0cmluZ0xpdGVyYWwoIlJlc3BvbnNlIiksIHRoaXMsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTTE9UKGdvdENvbG9yUmVzcG9uc2UodWludCxRVmFyaWFu dE1hcCkpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGFuZy1mb3JtYXQg b24KKysgICAgICAgICAgICAgICAgICAgICAgICApOworKyAgICAgICAgICAgICAgICAgICAgfQor KyAgICAgICAgICAgICAgICB9KTsKKysgICAgfQorKworK3ByaXZhdGUgUV9TTE9UUzoKKysgICAg dm9pZCBnb3RDb2xvclJlc3BvbnNlKHVpbnQgcmVzdWx0LCBjb25zdCBRVmFyaWFudE1hcCAmbWFw KQorKyAgICB7CisrICAgICAgICBpZiAocmVzdWx0ICE9IDApCisrICAgICAgICAgICAgcmV0dXJu OworKyAgICAgICAgWERHRGVza3RvcENvbG9yIGNvbG9ye307CisrICAgICAgICBtYXAudmFsdWUo UVN0cmluZ0xpdGVyYWwoImNvbG9yIikpLnZhbHVlPFFEQnVzQXJndW1lbnQ+KCkgPj4gY29sb3I7 CisrICAgICAgICBRX0VNSVQgY29sb3JQaWNrZWQoY29sb3IudG9RQ29sb3IoKSk7CisrICAgICAg ICBkZWxldGVMYXRlcigpOworKyAgICB9CisrCisrcHJpdmF0ZToKKysgICAgY29uc3QgUVN0cmlu ZyBtX3BhcmVudFdpbmRvd0lkOworK307CisrfSAvLyBuYW1lc3BhY2UKKysKKyAjZW5kaWYgLy8g UVRfQ09ORklHKGRidXMpCisgCisrUUdlbmVyaWNVbml4U2VydmljZXM6OlFHZW5lcmljVW5peFNl cnZpY2VzKCkKKyt7CisrI2lmIFFUX0NPTkZJRyhkYnVzKQorKyAgICBpZiAocUVudmlyb25tZW50 VmFyaWFibGVJbnRWYWx1ZSgiUVRfTk9fWERHX0RFU0tUT1BfUE9SVEFMIikgPiAwKSB7CisrICAg ICAgICByZXR1cm47CisrICAgIH0KKysgICAgUURCdXNNZXNzYWdlIG1lc3NhZ2UgPSBRREJ1c01l c3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwoCisrICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9y Zy5mcmVlZGVza3RvcC5wb3J0YWwuRGVza3RvcCIpLCBRU3RyaW5nTGl0ZXJhbCgiL29yZy9mcmVl ZGVza3RvcC9wb3J0YWwvZGVza3RvcCIpLAorKyAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJv cmcuZnJlZWRlc2t0b3AuREJ1cy5Qcm9wZXJ0aWVzIiksIFFTdHJpbmdMaXRlcmFsKCJHZXQiKSk7 CisrICAgIG1lc3NhZ2UgPDwgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwu U2NyZWVuc2hvdCIpCisrICAgICAgICAgICAgPDwgUVN0cmluZ0xpdGVyYWwoInZlcnNpb24iKTsK KysKKysgICAgUURCdXNQZW5kaW5nQ2FsbCBwZW5kaW5nQ2FsbCA9IFFEQnVzQ29ubmVjdGlvbjo6 c2Vzc2lvbkJ1cygpLmFzeW5jQ2FsbChtZXNzYWdlKTsKKysgICAgYXV0byB3YXRjaGVyID0gbmV3 IFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyKHBlbmRpbmdDYWxsKTsKKysgICAgUU9iamVjdDo6Y29u bmVjdCh3YXRjaGVyLCAmUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB3YXRjaGVy LAorKyAgICAgICAgICAgICAgICAgICAgIFt0aGlzXShRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAq d2F0Y2hlcikgeworKyAgICAgICAgICAgICAgICAgICAgICAgICB3YXRjaGVyLT5kZWxldGVMYXRl cigpOworKyAgICAgICAgICAgICAgICAgICAgICAgICBRREJ1c1BlbmRpbmdSZXBseTxRVmFyaWFu dD4gcmVwbHkgPSAqd2F0Y2hlcjsKKysgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXBs eS5pc0Vycm9yKCkgJiYgcmVwbHkudmFsdWUoKS50b1VJbnQoKSA+PSAyKQorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbV9oYXNTY3JlZW5zaG90UG9ydGFsV2l0aENvbG9yUGlja2luZyA9 IHRydWU7CisrICAgICAgICAgICAgICAgICAgICAgfSk7CisrCisrI2VuZGlmCisrfQorKworK1FQ bGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqUUdlbmVyaWNVbml4U2VydmljZXM6OmNvbG9yUGlj a2VyKFFXaW5kb3cgKnBhcmVudCkKKyt7CisrI2lmIFFUX0NPTkZJRyhkYnVzKQorKyAgICAvLyBN YWtlIGRvdWJsZSBzdXJlIHRoYXQgd2UgYXJlIGluIGEgd2F5bGFuZCBlbnZpcm9ubWVudC4gSW4g cGFydGljdWxhciBjaGVjaworKyAgICAvLyBXQVlMQU5EX0RJU1BMQVkgc28gYWxzbyBYV2F5bGFu ZCBhcHBzIGJlbmVmaXQgZnJvbSBwb3J0YWwtYmFzZWQgY29sb3IgcGlja2luZy4KKysgICAgLy8g T3V0c2lkZSB3YXlsYW5kIHdlJ2xsIHJhdGhlciByZWx5IG9uIG90aGVyIG1lYW5zIHRoYW4gdGhl IFhERyBkZXNrdG9wIHBvcnRhbC4KKysgICAgaWYgKCFxRW52aXJvbm1lbnRWYXJpYWJsZUlzRW1w dHkoIldBWUxBTkRfRElTUExBWSIpCisrICAgICAgICB8fCBRR3VpQXBwbGljYXRpb246OnBsYXRm b3JtTmFtZSgpLnN0YXJ0c1dpdGgoUUxhdGluMVN0cmluZygid2F5bGFuZCIpKSkgeworKyAgICAg ICAgcmV0dXJuIG5ldyBYZGdEZXNrdG9wUG9ydGFsQ29sb3JQaWNrZXIocG9ydGFsV2luZG93SWRl bnRpZmllcihwYXJlbnQpLCBwYXJlbnQpOworKyAgICB9CisrICAgIHJldHVybiBudWxscHRyOwor KyNlbHNlCisrICAgIFFfVU5VU0VEKHBhcmVudCk7CisrICAgIHJldHVybiBudWxscHRyOworKyNl bmRpZgorK30KKysKKyBRQnl0ZUFycmF5IFFHZW5lcmljVW5peFNlcnZpY2VzOjpkZXNrdG9wRW52 aXJvbm1lbnQoKSBjb25zdAorIHsKKyAgICAgc3RhdGljIGNvbnN0IFFCeXRlQXJyYXkgcmVzdWx0 ID0gZGV0ZWN0RGVza3RvcEVudmlyb25tZW50KCk7CitAQCAtMzUyLDYgKzQ4Niw4IEBAIGJvb2wg UUdlbmVyaWNVbml4U2VydmljZXM6Om9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpCisgfQor IAorICNlbHNlCisrUUdlbmVyaWNVbml4U2VydmljZXM6OlFHZW5lcmljVW5peFNlcnZpY2VzKCkg PSBkZWZhdWx0OworKworIFFCeXRlQXJyYXkgUUdlbmVyaWNVbml4U2VydmljZXM6OmRlc2t0b3BF bnZpcm9ubWVudCgpIGNvbnN0CisgeworICAgICByZXR1cm4gUUJ5dGVBcnJheUxpdGVyYWwoIlVO S05PV04iKTsKK0BAIC0zNzEsNiArNTA3LDMwIEBAIGJvb2wgUUdlbmVyaWNVbml4U2VydmljZXM6 Om9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpCisgICAgIHJldHVybiBmYWxzZTsKKyB9Cisg CisrUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpRR2VuZXJpY1VuaXhTZXJ2aWNlczo6Y29s b3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50KQorK3sKKysgICAgUV9VTlVTRUQocGFyZW50KTsKKysg ICAgcmV0dXJuIG51bGxwdHI7CisrfQorKworICNlbmRpZiAvLyBRVF9OT19NVUxUSVBST0NFU1MK KyAKKytRU3RyaW5nIFFHZW5lcmljVW5peFNlcnZpY2VzOjpwb3J0YWxXaW5kb3dJZGVudGlmaWVy KFFXaW5kb3cgKndpbmRvdykKKyt7CisrICAgIGlmIChRR3VpQXBwbGljYXRpb246OnBsYXRmb3Jt TmFtZSgpID09IFFMYXRpbjFTdHJpbmcoInhjYiIpKQorKyAgICAgICAgcmV0dXJuIFFTdHJpbmdM aXRlcmFsKCJ4MTE6IikgKyBRU3RyaW5nOjpudW1iZXIod2luZG93LT53aW5JZCgpLCAxNik7Cisr ICAgIHJldHVybiBRU3RyaW5nKCk7CisrfQorKworK2Jvb2wgUUdlbmVyaWNVbml4U2VydmljZXM6 Omhhc0NhcGFiaWxpdHkoQ2FwYWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdAorK3sKKysgICAgc3dp dGNoIChjYXBhYmlsaXR5KSB7CisrICAgIGNhc2UgQ2FwYWJpbGl0eTo6Q29sb3JQaWNraW5nOgor KyAgICAgICAgcmV0dXJuIG1faGFzU2NyZWVuc2hvdFBvcnRhbFdpdGhDb2xvclBpY2tpbmc7Cisr ICAgIH0KKysgICAgcmV0dXJuIGZhbHNlOworK30KKysKKyBRVF9FTkRfTkFNRVNQQUNFCisrCisr I2luY2x1ZGUgInFnZW5lcmljdW5peHNlcnZpY2VzLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2 aWNlc19wLmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5p eC9xZ2VuZXJpY3VuaXhzZXJ2aWNlc19wLmgKK2luZGV4IDhhYzNkZTZmMDMuLjMwOTI0ZTY0YmQg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmlj dW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlc19wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzX3AuaAorQEAg LTU5LDE2ICs1OSwyMSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyBjbGFzcyBRR2VuZXJpY1VuaXhT ZXJ2aWNlcyA6IHB1YmxpYyBRUGxhdGZvcm1TZXJ2aWNlcworIHsKKyBwdWJsaWM6CistICAgIFFH ZW5lcmljVW5peFNlcnZpY2VzKCkge30KKysgICAgUUdlbmVyaWNVbml4U2VydmljZXMoKTsKKyAK KyAgICAgUUJ5dGVBcnJheSBkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAK KysgICAgYm9vbCBoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3Qgb3Zl cnJpZGU7CisgICAgIGJvb2wgb3BlblVybChjb25zdCBRVXJsICZ1cmwpIG92ZXJyaWRlOworICAg ICBib29sIG9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpIG92ZXJyaWRlOworKyAgICBRUGxh dGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCA9IG51 bGxwdHIpIG92ZXJyaWRlOworKworKyAgICB2aXJ0dWFsIFFTdHJpbmcgcG9ydGFsV2luZG93SWRl bnRpZmllcihRV2luZG93ICp3aW5kb3cpOworIAorIHByaXZhdGU6CisgICAgIFFTdHJpbmcgbV93 ZWJCcm93c2VyOworICAgICBRU3RyaW5nIG1fZG9jdW1lbnRMYXVuY2hlcjsKKysgICAgYm9vbCBt X2hhc1NjcmVlbnNob3RQb3J0YWxXaXRoQ29sb3JQaWNraW5nID0gZmFsc2U7CisgfTsKKyAKKyBR VF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv dGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb24uY3BwIGIvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVz bWVudWNvbm5lY3Rpb24uY3BwCitpbmRleCAwOTQ3MGJjY2M2Li5jYzdjN2Q0ZDhhIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNt ZW51L3FkYnVzbWVudWNvbm5lY3Rpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5jcHAK K0BAIC02OSw2ICs2OSw3IEBAIGNvbnN0IFFTdHJpbmcgTWVudUJhclBhdGggPSBRTGF0aW4xU3Ry aW5nKCIvTWVudUJhciIpOworICovCisgUURCdXNNZW51Q29ubmVjdGlvbjo6UURCdXNNZW51Q29u bmVjdGlvbihRT2JqZWN0ICpwYXJlbnQsIGNvbnN0IFFTdHJpbmcgJnNlcnZpY2VOYW1lKQorICAg ICA6IFFPYmplY3QocGFyZW50KQorKyAgICAsIG1fc2VydmljZU5hbWUoc2VydmljZU5hbWUpCisg ICAgICwgbV9jb25uZWN0aW9uKHNlcnZpY2VOYW1lLmlzTnVsbCgpID8gUURCdXNDb25uZWN0aW9u OjpzZXNzaW9uQnVzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OiBRREJ1c0Nvbm5lY3Rpb246OmNvbm5lY3RUb0J1cyhRREJ1c0Nvbm5lY3Rpb246OlNlc3Npb25C dXMsIHNlcnZpY2VOYW1lKSkKKyAgICAgLCBtX2RidXNXYXRjaGVyKG5ldyBRREJ1c1NlcnZpY2VX YXRjaGVyKFN0YXR1c05vdGlmaWVyV2F0Y2hlclNlcnZpY2UsIG1fY29ubmVjdGlvbiwgUURCdXNT ZXJ2aWNlV2F0Y2hlcjo6V2F0Y2hGb3JSZWdpc3RyYXRpb24sIHRoaXMpKQorQEAgLTgzLDYgKzg0 LDEyIEBAIFFEQnVzTWVudUNvbm5lY3Rpb246OlFEQnVzTWVudUNvbm5lY3Rpb24oUU9iamVjdCAq cGFyZW50LCBjb25zdCBRU3RyaW5nICZzZXJ2aWNlCisgI2VuZGlmCisgfQorIAorK1FEQnVzTWVu dUNvbm5lY3Rpb246On5RREJ1c01lbnVDb25uZWN0aW9uKCkKKyt7CisrICBpZiAoIW1fc2Vydmlj ZU5hbWUuaXNFbXB0eSgpICYmIG1fY29ubmVjdGlvbi5pc0Nvbm5lY3RlZCgpKQorKyAgICAgIFFE QnVzQ29ubmVjdGlvbjo6ZGlzY29ubmVjdEZyb21CdXMobV9zZXJ2aWNlTmFtZSk7CisrfQorKwor IHZvaWQgUURCdXNNZW51Q29ubmVjdGlvbjo6ZGJ1c0Vycm9yKGNvbnN0IFFEQnVzRXJyb3IgJmVy cm9yKQorIHsKKyAgICAgcVdhcm5pbmcoKSA8PCAiUURCdXNUcmF5SWNvbiBlbmNvdW50ZXJlZCBh IEQtQnVzIGVycm9yOiIgPDwgZXJyb3I7CitAQCAtMTA1LDEzICsxMTIsNyBAQCB2b2lkIFFEQnVz TWVudUNvbm5lY3Rpb246OnVucmVnaXN0ZXJUcmF5SWNvbk1lbnUoUURCdXNUcmF5SWNvbiAqaXRl bSkKKyAKKyBib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnJlZ2lzdGVyVHJheUljb24oUURCdXNU cmF5SWNvbiAqaXRlbSkKKyB7CistICAgIGJvb2wgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS5yZWdp c3RlclNlcnZpY2UoaXRlbS0+aW5zdGFuY2VJZCgpKTsKKy0gICAgaWYgKCFzdWNjZXNzKSB7Cist ICAgICAgICBxV2FybmluZygpIDw8ICJmYWlsZWQgdG8gcmVnaXN0ZXIgc2VydmljZSIgPDwgaXRl bS0+aW5zdGFuY2VJZCgpOworLSAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICB9CistCistICAg IHN1Y2Nlc3MgPSBjb25uZWN0aW9uKCkucmVnaXN0ZXJPYmplY3QoU3RhdHVzTm90aWZpZXJJdGVt UGF0aCwgaXRlbSk7CisrICAgIGJvb2wgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS5yZWdpc3Rlck9i amVjdChTdGF0dXNOb3RpZmllckl0ZW1QYXRoLCBpdGVtKTsKKyAgICAgaWYgKCFzdWNjZXNzKSB7 CisgICAgICAgICB1bnJlZ2lzdGVyVHJheUljb24oaXRlbSk7CisgICAgICAgICBxV2FybmluZygp IDw8ICJmYWlsZWQgdG8gcmVnaXN0ZXIiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKSA8PCBTdGF0dXNO b3RpZmllckl0ZW1QYXRoOworQEAgLTEyNiwyMSArMTI3LDE4IEBAIGJvb2wgUURCdXNNZW51Q29u bmVjdGlvbjo6cmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQorIAorIGJvb2wg UURCdXNNZW51Q29ubmVjdGlvbjo6cmVnaXN0ZXJUcmF5SWNvbldpdGhXYXRjaGVyKFFEQnVzVHJh eUljb24gKml0ZW0pCisgeworKyAgICBRX1VOVVNFRChpdGVtKTsKKyAgICAgUURCdXNNZXNzYWdl IHJlZ2lzdGVyTWV0aG9kID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxsKAorICAgICAg ICAgICAgICAgICBTdGF0dXNOb3RpZmllcldhdGNoZXJTZXJ2aWNlLCBTdGF0dXNOb3RpZmllcldh dGNoZXJQYXRoLCBTdGF0dXNOb3RpZmllcldhdGNoZXJTZXJ2aWNlLAorICAgICAgICAgICAgICAg ICBRTGF0aW4xU3RyaW5nKCJSZWdpc3RlclN0YXR1c05vdGlmaWVySXRlbSIpKTsKKy0gICAgcmVn aXN0ZXJNZXRob2Quc2V0QXJndW1lbnRzKFFWYXJpYW50TGlzdCgpIDw8IGl0ZW0tPmluc3RhbmNl SWQoKSk7CisrICAgIHJlZ2lzdGVyTWV0aG9kLnNldEFyZ3VtZW50cyhRVmFyaWFudExpc3QoKSA8 PCBtX2Nvbm5lY3Rpb24uYmFzZVNlcnZpY2UoKSk7CisgICAgIHJldHVybiBtX2Nvbm5lY3Rpb24u Y2FsbFdpdGhDYWxsYmFjayhyZWdpc3Rlck1ldGhvZCwgdGhpcywgU0lHTkFMKHRyYXlJY29uUmVn aXN0ZXJlZCgpKSwgU0xPVChkYnVzRXJyb3IoUURCdXNFcnJvcikpKTsKKyB9CisgCistYm9vbCBR REJ1c01lbnVDb25uZWN0aW9uOjp1bnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRl bSkKKyt2b2lkIFFEQnVzTWVudUNvbm5lY3Rpb246OnVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1Ry YXlJY29uICppdGVtKQorIHsKKyAgICAgdW5yZWdpc3RlclRyYXlJY29uTWVudShpdGVtKTsKKyAg ICAgY29ubmVjdGlvbigpLnVucmVnaXN0ZXJPYmplY3QoU3RhdHVzTm90aWZpZXJJdGVtUGF0aCk7 CistICAgIGJvb2wgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS51bnJlZ2lzdGVyU2VydmljZShpdGVt LT5pbnN0YW5jZUlkKCkpOworLSAgICBpZiAoIXN1Y2Nlc3MpCistICAgICAgICBxV2FybmluZygp IDw8ICJmYWlsZWQgdG8gdW5yZWdpc3RlciBzZXJ2aWNlIiA8PCBpdGVtLT5pbnN0YW5jZUlkKCk7 CistICAgIHJldHVybiBzdWNjZXNzOworIH0KKyAjZW5kaWYgLy8gUVRfTk9fU1lTVEVNVFJBWUlD T04KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2Vu ZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbl9wLmggYi9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVj dGlvbl9wLmgKK2luZGV4IGY0ODQ3OTVmYmIuLjk3YmRmYWJiODUgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNt ZW51Y29ubmVjdGlvbl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1l cy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaAorQEAgLTcwLDYg KzcwLDcgQEAgY2xhc3MgUURCdXNNZW51Q29ubmVjdGlvbiA6IHB1YmxpYyBRT2JqZWN0CisgCisg cHVibGljOgorICAgICBRREJ1c01lbnVDb25uZWN0aW9uKFFPYmplY3QgKnBhcmVudCA9IG51bGxw dHIsIGNvbnN0IFFTdHJpbmcgJnNlcnZpY2VOYW1lID0gUVN0cmluZygpKTsKKysgICAgflFEQnVz TWVudUNvbm5lY3Rpb24oKTsKKyAgICAgUURCdXNDb25uZWN0aW9uIGNvbm5lY3Rpb24oKSBjb25z dCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKyAgICAgUURCdXNTZXJ2aWNlV2F0Y2hlciAqZGJ1 c1dhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2RidXNXYXRjaGVyOyB9CisgICAgIGJvb2wgaXNT dGF0dXNOb3RpZmllckhvc3RSZWdpc3RlcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNOb3Rp Zmllckhvc3RSZWdpc3RlcmVkOyB9CitAQCAtNzgsNyArNzksNyBAQCBwdWJsaWM6CisgICAgIHZv aWQgdW5yZWdpc3RlclRyYXlJY29uTWVudShRREJ1c1RyYXlJY29uICppdGVtKTsKKyAgICAgYm9v bCByZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pOworICAgICBib29sIHJlZ2lz dGVyVHJheUljb25XaXRoV2F0Y2hlcihRREJ1c1RyYXlJY29uICppdGVtKTsKKy0gICAgYm9vbCB1 bnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSk7CisrICAgIHZvaWQgdW5yZWdp c3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pOworICNlbmRpZiAvLyBRVF9OT19TWVNU RU1UUkFZSUNPTgorIAorIFFfU0lHTkFMUzoKK0BAIC05MCw2ICs5MSw3IEBAIHByaXZhdGUgUV9T TE9UUzoKKyAgICAgdm9pZCBkYnVzRXJyb3IoY29uc3QgUURCdXNFcnJvciAmZXJyb3IpOworIAor IHByaXZhdGU6CisrICAgIFFTdHJpbmcgbV9zZXJ2aWNlTmFtZTsKKyAgICAgUURCdXNDb25uZWN0 aW9uIG1fY29ubmVjdGlvbjsKKyAgICAgUURCdXNTZXJ2aWNlV2F0Y2hlciAqbV9kYnVzV2F0Y2hl cjsKKyAgICAgYm9vbCBtX3N0YXR1c05vdGlmaWVySG9zdFJlZ2lzdGVyZWQ7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXN0cmF5 L3FkYnVzdHJheWljb24uY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dl bmVyaWN1bml4L2RidXN0cmF5L3FkYnVzdHJheWljb24uY3BwCitpbmRleCBiZWRlNzA5NzVhLi43 NmJmZWM1ZTVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVz L2dlbmVyaWN1bml4L2RidXN0cmF5L3FkYnVzdHJheWljb24uY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0cmF5aWNv bi5jcHAKK0BAIC03MSw4ICs3MSwxMiBAQCBRX0xPR0dJTkdfQ0FURUdPUlkocUxjVHJheSwgInF0 LnFwYS50cmF5IikKKyBzdGF0aWMgUVN0cmluZyBpY29uVGVtcFBhdGgoKQorIHsKKyAgICAgUVN0 cmluZyB0ZW1wUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjp3cml0YWJsZUxvY2F0aW9uKFFTdGFuZGFy ZFBhdGhzOjpSdW50aW1lTG9jYXRpb24pOworLSAgICBpZiAoIXRlbXBQYXRoLmlzRW1wdHkoKSkK KysgICAgaWYgKCF0ZW1wUGF0aC5pc0VtcHR5KCkpIHsKKysgICAgICAgIFFTdHJpbmcgZmxhdHBh a0lkID0gcUVudmlyb25tZW50VmFyaWFibGUoIkZMQVRQQUtfSUQiKTsKKysgICAgICAgIGlmICgh ZmxhdHBha0lkLmlzRW1wdHkoKSAmJiBRRmlsZUluZm86OmV4aXN0cyhRTGF0aW4xU3RyaW5nKCIv LmZsYXRwYWstaW5mbyIpKSkKKysgICAgICAgICAgICB0ZW1wUGF0aCArPSBRTGF0aW4xU3RyaW5n KCIvYXBwLyIpICsgZmxhdHBha0lkOworICAgICAgICAgcmV0dXJuIHRlbXBQYXRoOworKyAgICB9 CisgCisgICAgIHRlbXBQYXRoID0gUVN0YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0 YW5kYXJkUGF0aHM6OkdlbmVyaWNDYWNoZUxvY2F0aW9uKTsKKyAKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhl bWVzLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9x Z2VuZXJpY3VuaXh0aGVtZXMuY3BwCitpbmRleCBjYjFiMzlkYjY0Li42ZTAxYWYwNTJjIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3Fn ZW5lcmljdW5peHRoZW1lcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3Ro ZW1lcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwCitAQCAtNzU1LDYgKzc1NSw5 IEBAIFFWYXJpYW50IFFHbm9tZVRoZW1lOjp0aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OlRoZW1l SGludCBoaW50KSBjb25zdAorICAgICAgICAgcmV0dXJuIFFWYXJpYW50KFFDaGFyKDB4MjAyMikp OworICAgICBjYXNlIFFQbGF0Zm9ybVRoZW1lOjpVaUVmZmVjdHM6CisgICAgICAgICByZXR1cm4g UVZhcmlhbnQoaW50KEhvdmVyRWZmZWN0KSk7CisrICAgIGNhc2UgUVBsYXRmb3JtVGhlbWU6OkJ1 dHRvblByZXNzS2V5czoKKysgICAgICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlKAorKyAg ICAgICAgICAgICAgICBRTGlzdDxRdDo6S2V5Pih7IFF0OjpLZXlfU3BhY2UsIFF0OjpLZXlfUmV0 dXJuLCBRdDo6S2V5X0VudGVyLCBRdDo6S2V5X1NlbGVjdCB9KSk7CisgICAgIGRlZmF1bHQ6Cisg ICAgICAgICBicmVhazsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3IuY3BwCitpbmRleCA5OGUwNTE5NWVlLi4x ZTkyZjQzZGVjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xm cy9hcGkvcWVnbGZzY3Vyc29yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy9lZ2xmcy9hcGkvcWVnbGZzY3Vyc29yLmNwcAorQEAgLTM0Myw4ICszNDMsNyBAQCB2b2lkIFFF Z2xGU0N1cnNvcjo6cGFpbnRPblNjcmVlbigpCisgICAgIC8vIHNjcmVlbnMgYXJlIHNpYmxpbmdz IG9mIGVhY2ggb3RoZXIuIFdoZW4gbm90IGVuYWJsZWQsIHRoZSBzaWJsaW5nIGxpc3QKKyAgICAg Ly8gb25seSBjb250YWlucyBtX3NjcmVlbiBpdHNlbGYuCisgICAgIGZvciAoUVBsYXRmb3JtU2Ny ZWVuICpzY3JlZW4gOiBtX3NjcmVlbi0+dmlydHVhbFNpYmxpbmdzKCkpIHsKKy0gICAgICAgIGlm IChzY3JlZW4tPmdlb21ldHJ5KCkuY29udGFpbnMoY3IudG9wTGVmdCgpLnRvUG9pbnQoKSArIG1f Y3Vyc29yLmhvdFNwb3QpCistICAgICAgICAgICAgJiYgUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRD b250ZXh0KCktPnNjcmVlbigpID09IHNjcmVlbi0+c2NyZWVuKCkpCisrICAgICAgICBpZiAoc2Ny ZWVuLT5nZW9tZXRyeSgpLmNvbnRhaW5zKGNyLnRvcExlZnQoKS50b1BvaW50KCkgKyBtX2N1cnNv ci5ob3RTcG90KSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBjci50cmFuc2xhdGUoLXNjcmVl bi0+Z2VvbWV0cnkoKS50b3BMZWZ0KCkpOworICAgICAgICAgICAgIGNvbnN0IFFTaXplIHNjcmVl blNpemUgPSBzY3JlZW4tPmdlb21ldHJ5KCkuc2l6ZSgpOworQEAgLTQ2OCwxMSArNDY3LDEyIEBA IHZvaWQgUUVnbEZTQ3Vyc29yOjpkcmF3KGNvbnN0IFFSZWN0RiAmcikKKyB7CisgICAgIFN0YXRl U2F2ZXIgc3RhdGVTYXZlcjsKKyAKKy0gICAgUUVnbEZTQ3Vyc29yRGF0YSAmZ2Z4ID0gc3RhdGlj X2Nhc3Q8UUVnbEZTQ29udGV4dCo+KFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5o YW5kbGUoKSktPmN1cnNvckRhdGE7CistICAgIGlmICghZ2Z4LnByb2dyYW0pIHsKKy0gICAgICAg IC8vIG9uZSB0aW1lIGluaXRpYWxpemF0aW9uCisrICAgIC8vIG9uZSB0aW1lIGluaXRpYWxpemF0 aW9uCisrICAgIGlmICghUU9wZW5HTEZ1bmN0aW9uczo6ZF9wdHIpCisgICAgICAgICBpbml0aWFs aXplT3BlbkdMRnVuY3Rpb25zKCk7CisgCisrICAgIFFFZ2xGU0N1cnNvckRhdGEgJmdmeCA9IHN0 YXRpY19jYXN0PFFFZ2xGU0NvbnRleHQqPihRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRleHQo KS0+aGFuZGxlKCkpLT5jdXJzb3JEYXRhOworKyAgICBpZiAoIWdmeC5wcm9ncmFtKSB7CisgICAg ICAgICBjcmVhdGVTaGFkZXJQcm9ncmFtcygpOworIAorICAgICAgICAgaWYgKCFnZnguYXRsYXNU ZXh0dXJlKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xm cy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVudHJlYWRl ci5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0 aW9uL2VnbGZzX2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcAoraW5kZXggNjQ1 YTBhZTJlOS4uM2UwZTQwNmYxYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21zX3N1cHBvcnQvcWVnbGZza21z ZXZlbnRyZWFkZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZz L2RldmljZWludGVncmF0aW9uL2VnbGZzX2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVy LmNwcAorQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIFFFZ2xGU0ttc0V2ZW50UmVhZGVyOjpjcmVh dGUoUUVnbEZTS21zRGV2aWNlICpkZXZpY2UpCisgCisgICAgIG1fZGV2aWNlID0gZGV2aWNlOwor IAorLSAgICBxQ0RlYnVnKHFMY0VnbGZzS21zRGVidWcsICJJbml0YWxpemluZyBldmVudCByZWFk ZXIgZm9yIGRldmljZSAlcCBmZCAlZCIsCisrICAgIHFDRGVidWcocUxjRWdsZnNLbXNEZWJ1Zywg IkluaXRpYWxpemluZyBldmVudCByZWFkZXIgZm9yIGRldmljZSAlcCBmZCAlZCIsCisgICAgICAg ICAgICAgbV9kZXZpY2UsIG1fZGV2aWNlLT5mZCgpKTsKKyAKKyAgICAgbV90aHJlYWQgPSBuZXcg UUVnbEZTS21zRXZlbnRSZWFkZXJUaHJlYWQobV9kZXZpY2UtPmZkKCkpOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3Jh dGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2Ny ZWVuaW50ZWdyYXRpb24uY3BwCitpbmRleCAxNDFmYjY4YTIzLi5kNDI5NGQ0MjVhIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmlu dGVncmF0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3Jl ZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNwcAorQEAgLTEyMiwxMSArMTIyLDEzIEBAIFFPZmZz Y3JlZW5JbnRlZ3JhdGlvbjo6UU9mZnNjcmVlbkludGVncmF0aW9uKCkKKyAjZW5kaWYKKyAgICAg bV9zZXJ2aWNlcy5yZXNldChuZXcgUVBsYXRmb3JtU2VydmljZXMpOworIAorLSAgICBRV2luZG93 U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVTY3JlZW5BZGRlZChuZXcgUU9mZnNjcmVlblNjcmVlbik7 CisrICAgIG1fc2NyZWVuID0gbmV3IFFPZmZzY3JlZW5TY3JlZW47CisrICAgIFFXaW5kb3dTeXN0 ZW1JbnRlcmZhY2U6OmhhbmRsZVNjcmVlbkFkZGVkKG1fc2NyZWVuKTsKKyB9CisgCisgUU9mZnNj cmVlbkludGVncmF0aW9uOjp+UU9mZnNjcmVlbkludGVncmF0aW9uKCkKKyB7CisrICAgIFFXaW5k b3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVNjcmVlblJlbW92ZWQobV9zY3JlZW4pOworIH0KKyAK KyB2b2lkIFFPZmZzY3JlZW5JbnRlZ3JhdGlvbjo6aW5pdGlhbGl6ZSgpCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0 aW9uLmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVu aW50ZWdyYXRpb24uaAoraW5kZXggMGVhOTBmNmMyZi4uZmUwMGZkZTA3YyAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3Jh dGlvbi5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zm c2NyZWVuaW50ZWdyYXRpb24uaAorQEAgLTg0LDYgKzg0LDcgQEAgcHJvdGVjdGVkOgorICNlbmRp ZgorICAgICBRU2NvcGVkUG9pbnRlcjxRUGxhdGZvcm1JbnB1dENvbnRleHQ+IG1faW5wdXRDb250 ZXh0OworICAgICBRU2NvcGVkUG9pbnRlcjxRUGxhdGZvcm1TZXJ2aWNlcz4gbV9zZXJ2aWNlczsK KysgICAgUVBsYXRmb3JtU2NyZWVuICptX3NjcmVlbjsKKyAgICAgbXV0YWJsZSBRU2NvcGVkUG9p bnRlcjxRUGxhdGZvcm1OYXRpdmVJbnRlcmZhY2U+IG1fbmF0aXZlSW50ZXJmYWNlOworIH07Cisg CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5k b3dzZ2xjb250ZXh0LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9x d2luZG93c2dsY29udGV4dC5jcHAKK2luZGV4IDZmYTVhOGEyYjMuLjFmNDlmMGFlZmQgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNv bnRleHQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdp bmRvd3NnbGNvbnRleHQuY3BwCitAQCAtNDgsNiArNDgsNyBAQAorICNpbmNsdWRlIDxxcGEvcXBs YXRmb3JtbmF0aXZlaW50ZXJmYWNlLmg+CisgI2luY2x1ZGUgPFF0UGxhdGZvcm1IZWFkZXJzL3F3 Z2xuYXRpdmVjb250ZXh0Lmg+CisgCisrI2luY2x1ZGUgPHByaXZhdGUvcXN5c3RlbWxpYnJhcnlf cC5oPgorICNpbmNsdWRlIDxhbGdvcml0aG0+CisgCisgI2luY2x1ZGUgPHdpbmdkaS5oPgorQEAg LTE2MiwxOSArMTYzLDI1IEBAIFFGdW5jdGlvblBvaW50ZXIgUVdpbmRvd3NPcGVuZ2wzMkRMTDo6 cmVzb2x2ZShjb25zdCBjaGFyICpuYW1lKQorIAorIGJvb2wgUVdpbmRvd3NPcGVuZ2wzMkRMTDo6 aW5pdChib29sIHNvZnR3YXJlUmVuZGVyaW5nKQorIHsKKy0gICAgY29uc3QgUUJ5dGVBcnJheSBv cGVuZ2wzMiA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMi5kbGwiKTsKKy0gICAgY29uc3Qg UUJ5dGVBcnJheSBzd29wZW5nbCA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMnN3LmRsbCIp OworKyAgICBjb25zdCBRQnl0ZUFycmF5IG9wZW5nbDMyID0gUUJ5dGVBcnJheUxpdGVyYWwoIm9w ZW5nbDMyIik7CisrICAgIGNvbnN0IFFCeXRlQXJyYXkgc3dvcGVuZ2wgPSBRQnl0ZUFycmF5TGl0 ZXJhbCgib3BlbmdsMzJzdyIpOworKyAgICBib29sIHVzZVN5c3RlbUxpYiA9IGZhbHNlOworIAor ICAgICBRQnl0ZUFycmF5IG9wZW5nbERsbCA9IHFnZXRlbnYoIlFUX09QRU5HTF9ETEwiKTsKKy0g ICAgaWYgKG9wZW5nbERsbC5pc0VtcHR5KCkpCisrICAgIGlmIChvcGVuZ2xEbGwuaXNFbXB0eSgp KSB7CisgICAgICAgICBvcGVuZ2xEbGwgPSBzb2Z0d2FyZVJlbmRlcmluZyA/IHN3b3BlbmdsIDog b3BlbmdsMzI7CisrICAgICAgICB1c2VTeXN0ZW1MaWIgPSAhc29mdHdhcmVSZW5kZXJpbmc7Cisr ICAgIH0KKyAKKyAgICAgb3BlbmdsRGxsID0gb3BlbmdsRGxsLnRvTG93ZXIoKTsKKyAgICAgbV9u b25PcGVuZ2wzMiA9IG9wZW5nbERsbCAhPSBvcGVuZ2wzMjsKKyAKKyAgICAgcUNEZWJ1ZyhsY1Fw YUdsKSA8PCAiUXQ6IFVzaW5nIFdHTCBhbmQgT3BlbkdMIGZyb20iIDw8IG9wZW5nbERsbDsKKyAK Ky0gICAgbV9saWIgPSA6OkxvYWRMaWJyYXJ5QShvcGVuZ2xEbGwuY29uc3REYXRhKCkpOworKyAg ICBpZiAodXNlU3lzdGVtTGliKQorKyAgICAgICAgbV9saWIgPSBRU3lzdGVtTGlicmFyeTo6bG9h ZCgod2NoYXJfdCopKFFTdHJpbmc6OmZyb21MYXRpbjEob3BlbmdsRGxsKS51dGYxNigpKSk7Cisr ICAgIGVsc2UKKysgICAgICAgIG1fbGliID0gTG9hZExpYnJhcnlBKG9wZW5nbERsbC5jb25zdERh dGEoKSk7CisgICAgIGlmICghbV9saWIpIHsKKyAgICAgICAgIHFFcnJub1dhcm5pbmcoOjpHZXRM YXN0RXJyb3IoKSwgIkZhaWxlZCB0byBsb2FkICVzIiwgb3BlbmdsRGxsLmNvbnN0RGF0YSgpKTsK KyAgICAgICAgIHJldHVybiBmYWxzZTsKK0BAIC0xODQsNyArMTkxLDcgQEAgYm9vbCBRV2luZG93 c09wZW5nbDMyRExMOjppbml0KGJvb2wgc29mdHdhcmVSZW5kZXJpbmcpCisgICAgICAgICAvLyBM b2FkIG9wZW5nbDMyLmRsbCBhbHdheXMuIEdESSBmdW5jdGlvbnMgbGlrZSBDaG9vc2VQaXhlbEZv cm1hdCBkbworICAgICAgICAgLy8gR2V0TW9kdWxlSGFuZGxlIGZvciBvcGVuZ2wzMi5kbGwgYW5k IGJlaGF2ZSBkaWZmZXJlbnRseSAoYW5kIGNhbGwgYmFjayBpbnRvCisgICAgICAgICAvLyBvcGVu Z2wzMikgd2hlbiB0aGUgbW9kdWxlIGlzIHByZXNlbnQuIFRoaXMgaXMgZmluZSBmb3IgZHVtbXkg Y29udGV4dHMgYW5kIHdpbmRvd3MuCistICAgICAgICA6OkxvYWRMaWJyYXJ5QSgib3BlbmdsMzIu ZGxsIik7CisrICAgICAgICBRU3lzdGVtTGlicmFyeTo6bG9hZChMIm9wZW5nbDMyIik7CisgICAg IH0KKyAKKyAgICAgd2dsQ3JlYXRlQ29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEdMUkMgKFdJ TkFQSSAqKShIREMpPihyZXNvbHZlKCJ3Z2xDcmVhdGVDb250ZXh0IikpOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rl ci5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NvcGVu Z2x0ZXN0ZXIuY3BwCitpbmRleCBkN2QxODZlODA0Li45ZWI0MDExYmYyIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVy LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dz b3BlbmdsdGVzdGVyLmNwcAorQEAgLTQ5LDYgKzQ5LDcgQEAKKyAjaW5jbHVkZSA8UXRDb3JlL3Fz dGFuZGFyZHBhdGhzLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xbGlicmFyeWluZm8uaD4KKyAjaW5j bHVkZSA8UXRDb3JlL3FoYXNoLmg+CisrI2luY2x1ZGUgPHByaXZhdGUvcXN5c3RlbWxpYnJhcnlf cC5oPgorIAorICNpZm5kZWYgUVRfTk9fT1BFTkdMCisgI2luY2x1ZGUgPHByaXZhdGUvcW9wZW5n bF9wLmg+CitAQCAtMzk2LDcgKzM5Nyw3IEBAIGJvb2wgUVdpbmRvd3NPcGVuR0xUZXN0ZXI6OnRl c3REZXNrdG9wR0woKQorIAorICAgICAvLyBUZXN0ICMxOiBMb2FkIG9wZW5nbDMyLmRsbCBhbmQg dHJ5IHRvIHJlc29sdmUgYW4gT3BlbkdMIDIgZnVuY3Rpb24uCisgICAgIC8vIFRoaXMgd2lsbCB0 eXBpY2FsbHkgZmFpbCBvbiBzeXN0ZW1zIHRoYXQgZG8gbm90IGhhdmUgYSByZWFsIE9wZW5HTCBk cml2ZXIuCistICAgIGxpYiA9IExvYWRMaWJyYXJ5QSgib3BlbmdsMzIuZGxsIik7CisrICAgIGxp YiA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKEwib3BlbmdsMzIiKTsKKyAgICAgaWYgKGxpYikgewor ICAgICAgICAgQ3JlYXRlQ29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q3JlYXRlQ29udGV4dFR5 cGU+KAorICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UUZ1bmN0aW9uUG9pbnRlcj4oOjpH ZXRQcm9jQWRkcmVzcyhsaWIsICJ3Z2xDcmVhdGVDb250ZXh0IikpKTsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0 b3IuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcv cXRlc3NlbGxhdG9yLmNwcAoraW5kZXggMWFmYTAwY2ZjOS4uMTE4YWY2Y2U3MyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL25hdGl2ZXBhaW50aW5nL3F0ZXNz ZWxsYXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL25hdGl2 ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAKK0BAIC00MSw2ICs0MSw3IEBACisgCisgI2luY2x1 ZGUgPFFSZWN0PgorICNpbmNsdWRlIDxRTGlzdD4KKysjaW5jbHVkZSA8UU1hcD4KKyAjaW5jbHVk ZSA8UURlYnVnPgorIAorICNpbmNsdWRlIDxxbWF0aC5oPgorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNwcCBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNwcAoraW5kZXggOWUyYTM3YTZh MS4uZTZlMTc1YTExOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv eGNiL3F4Y2Jjb25uZWN0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy94Y2IvcXhjYmNvbm5lY3Rpb24uY3BwCitAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9pZCBRWGNi Q29ubmVjdGlvbjo6cHJpbnRYY2JFcnJvcihjb25zdCBjaGFyICptZXNzYWdlLCB4Y2JfZ2VuZXJp Y19lcnJvcl90ICplcnIKKyAgICAgdWludCBjbGFtcGVkX2Vycm9yX2NvZGUgPSBxTWluPHVpbnQ+ KGVycm9yLT5lcnJvcl9jb2RlLCAoc2l6ZW9mKHhjYl9lcnJvcnMpIC8gc2l6ZW9mKHhjYl9lcnJv cnNbMF0pKSAtIDEpOworICAgICB1aW50IGNsYW1wZWRfbWFqb3JfY29kZSA9IHFNaW48dWludD4o ZXJyb3ItPm1ham9yX2NvZGUsIChzaXplb2YoeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXMpIC8g c2l6ZW9mKHhjYl9wcm90b2NvbF9yZXF1ZXN0X2NvZGVzWzBdKSkgLSAxKTsKKyAKKy0gICAgcUNX YXJuaW5nKGxjUXBhWGNiLCAiJXM6ICVkICglcyksIHNlcXVlbmNlOiAlZCwgcmVzb3VyY2UgaWQ6 ICVkLCBtYWpvciBjb2RlOiAlZCAoJXMpLCBtaW5vciBjb2RlOiAlZCIsCistICAgICAgICAgICAg IG1lc3NhZ2UsCistICAgICAgICAgICAgIGludChlcnJvci0+ZXJyb3JfY29kZSksIHhjYl9lcnJv cnNbY2xhbXBlZF9lcnJvcl9jb2RlXSwKKy0gICAgICAgICAgICAgaW50KGVycm9yLT5zZXF1ZW5j ZSksIGludChlcnJvci0+cmVzb3VyY2VfaWQpLAorLSAgICAgICAgICAgICBpbnQoZXJyb3ItPm1h am9yX2NvZGUpLCB4Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2Rlc1tjbGFtcGVkX21ham9yX2NvZGVd LAorLSAgICAgICAgICAgICBpbnQoZXJyb3ItPm1pbm9yX2NvZGUpKTsKKysgICAgcUNEZWJ1Zyhs Y1FwYVhjYiwgIiVzOiAlZCAoJXMpLCBzZXF1ZW5jZTogJWQsIHJlc291cmNlIGlkOiAlZCwgbWFq b3IgY29kZTogJWQgKCVzKSwgbWlub3IgY29kZTogJWQiLAorKyAgICAgICAgICAgIG1lc3NhZ2Us CisrICAgICAgICAgICAgaW50KGVycm9yLT5lcnJvcl9jb2RlKSwgeGNiX2Vycm9yc1tjbGFtcGVk X2Vycm9yX2NvZGVdLAorKyAgICAgICAgICAgIGludChlcnJvci0+c2VxdWVuY2UpLCBpbnQoZXJy b3ItPnJlc291cmNlX2lkKSwKKysgICAgICAgICAgICBpbnQoZXJyb3ItPm1ham9yX2NvZGUpLCB4 Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2Rlc1tjbGFtcGVkX21ham9yX2NvZGVdLAorKyAgICAgICAg ICAgIGludChlcnJvci0+bWlub3JfY29kZSkpOworIH0KKyAKKyBzdGF0aWMgUXQ6Ok1vdXNlQnV0 dG9ucyB0cmFuc2xhdGVNb3VzZUJ1dHRvbnMoaW50IHMpCitAQCAtNzAyLDYgKzcwMiw4IEBAIHZv aWQgUVhjYkNvbm5lY3Rpb246OmhhbmRsZVhjYkV2ZW50KHhjYl9nZW5lcmljX2V2ZW50X3QgKmV2 ZW50KQorICAgICAgICAgICAgIFFYY2JWaXJ0dWFsRGVza3RvcCAqdmlydHVhbERlc2t0b3AgPSB2 aXJ0dWFsRGVza3RvcEZvclJvb3RXaW5kb3cocHJvcGVydHlOb3RpZnktPndpbmRvdyk7CisgICAg ICAgICAgICAgaWYgKHZpcnR1YWxEZXNrdG9wKQorICAgICAgICAgICAgICAgICB2aXJ0dWFsRGVz a3RvcC0+dXBkYXRlV29ya0FyZWEoKTsKKysgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlOb3Rp ZnktPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9TVVBQT1JURUQpKSB7CisrICAgICAgICAg ICAgbV93bVN1cHBvcnQtPnVwZGF0ZU5ldFdNQXRvbXMoKTsKKyAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAgSEFORExFX1BMQVRGT1JNX1dJTkRPV19FVkVOVCh4Y2JfcHJvcGVydHlfbm90 aWZ5X2V2ZW50X3QsIHdpbmRvdywgaGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudCk7CisgICAgICAg ICB9CitAQCAtNzUwLDcgKzc1Miw3IEBAIHZvaWQgUVhjYkNvbm5lY3Rpb246OmhhbmRsZVhjYkV2 ZW50KHhjYl9nZW5lcmljX2V2ZW50X3QgKmV2ZW50KQorICAgICAgICAgICAgICAgICBjYXNlIFhD Ql9YS0JfTkVXX0tFWUJPQVJEX05PVElGWTogeworICAgICAgICAgICAgICAgICAgICAgeGNiX3hr Yl9uZXdfa2V5Ym9hcmRfbm90aWZ5X2V2ZW50X3QgKmV2ID0gJnhrYl9ldmVudC0+bmV3X2tleWJv YXJkX25vdGlmeTsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChldi0+Y2hhbmdlZCAmIFhDQl9Y S0JfTktOX0RFVEFJTF9LRVlDT0RFUykKKy0gICAgICAgICAgICAgICAgICAgICAgICBtX2tleWJv YXJkLT51cGRhdGVLZXltYXAoZXYpOworKyAgICAgICAgICAgICAgICAgICAgICAgIG1fa2V5Ym9h cmQtPnVwZGF0ZUtleW1hcCgpOworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgZGVmYXVsdDoKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwIGIvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVncmF0aW9uLmNwcAoraW5kZXggNzY4 NjljZWQ2MC4uMDJkMmVlYmI1NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMveGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMveGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAKK0BAIC0yNzQsOCArMjc0LDcgQEAgUVBs YXRmb3JtV2luZG93ICpRWGNiSW50ZWdyYXRpb246OmNyZWF0ZUZvcmVpZ25XaW5kb3coUVdpbmRv dyAqd2luZG93LCBXSWQgbmF0aXYKKyAjaWZuZGVmIFFUX05PX09QRU5HTAorIFFQbGF0Zm9ybU9w ZW5HTENvbnRleHQgKlFYY2JJbnRlZ3JhdGlvbjo6Y3JlYXRlUGxhdGZvcm1PcGVuR0xDb250ZXh0 KFFPcGVuR0xDb250ZXh0ICpjb250ZXh0KSBjb25zdAorIHsKKy0gICAgUVhjYlNjcmVlbiAqc2Ny ZWVuID0gc3RhdGljX2Nhc3Q8UVhjYlNjcmVlbiAqPihjb250ZXh0LT5zY3JlZW4oKS0+aGFuZGxl KCkpOworLSAgICBRWGNiR2xJbnRlZ3JhdGlvbiAqZ2xJbnRlZ3JhdGlvbiA9IHNjcmVlbi0+Y29u bmVjdGlvbigpLT5nbEludGVncmF0aW9uKCk7CisrICAgIFFYY2JHbEludGVncmF0aW9uICpnbElu dGVncmF0aW9uID0gZGVmYXVsdENvbm5lY3Rpb24oKS0+Z2xJbnRlZ3JhdGlvbigpOworICAgICBp ZiAoIWdsSW50ZWdyYXRpb24pIHsKKyAgICAgICAgIHFXYXJuaW5nKCJRWGNiSW50ZWdyYXRpb246 IENhbm5vdCBjcmVhdGUgcGxhdGZvcm0gT3BlbkdMIGNvbnRleHQsIG5laXRoZXIgR0xYIG5vciBF R0wgYXJlIGVuYWJsZWQiKTsKKyAgICAgICAgIHJldHVybiBudWxscHRyOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAgYi9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuY3BwCitpbmRleCBlZmVj ZDdlMmQxLi5lODI4NjM4MWEyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvcXhjYmtleWJvYXJkLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvcXhjYmtleWJvYXJkLmNwcAorQEAgLTM2NSwxNyArMzY1LDYgQEAgdm9pZCBRWGNi S2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCh4Y2JfbWFwcGluZ19ub3RpZnlfZXZlbnRfdCAqZXZlbnQp CisgICAgIHVwZGF0ZUtleW1hcCgpOworIH0KKyAKKy12b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRl S2V5bWFwKHhjYl94a2JfbmV3X2tleWJvYXJkX25vdGlmeV9ldmVudF90ICpldmVudCkKKy17Cist ICAgIGlmICghZXZlbnQpCistICAgICAgICByZXR1cm47CistCistICAgIGlmIChldmVudC0+ZGV2 aWNlSUQgIT0gZXZlbnQtPm9sZERldmljZUlEKQorLSAgICAgICAgbV9jb25maWcgPSBmYWxzZTsK Ky0KKy0gICAgdXBkYXRlS2V5bWFwKCk7CistfQorLQorIHZvaWQgUVhjYktleWJvYXJkOjp1cGRh dGVLZXltYXAoKQorIHsKKyAgICAgS2V5c3ltTW9kaWZpZXJNYXAga2V5c3ltTW9kczsKK0BAIC0z ODMsNiArMzcyLDggQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCgpCisgICAgICAg ICBrZXlzeW1Nb2RzID0ga2V5c3ltc1RvTW9kaWZpZXJzKCk7CisgICAgIHVwZGF0ZU1vZGlmaWVy cyhrZXlzeW1Nb2RzKTsKKyAKKysgICAgbV9jb25maWcgPSB0cnVlOworKworICAgICBpZiAoIW1f eGtiQ29udGV4dCkgeworICAgICAgICAgbV94a2JDb250ZXh0LnJlc2V0KHhrYl9jb250ZXh0X25l dyhYS0JfQ09OVEVYVF9OT19ERUZBVUxUX0lOQ0xVREVTKSk7CisgICAgICAgICBpZiAoIW1feGti Q29udGV4dCkgeworQEAgLTM5OCwxMyArMzg5LDggQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0 ZUtleW1hcCgpCisgICAgIGlmIChjb25uZWN0aW9uKCktPmhhc1hLQigpKSB7CisgICAgICAgICBt X3hrYktleW1hcC5yZXNldCh4a2JfeDExX2tleW1hcF9uZXdfZnJvbV9kZXZpY2UobV94a2JDb250 ZXh0LmdldCgpLCB4Y2JfY29ubmVjdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVfZGV2aWNlX2lkLCBYS0JfS0VZTUFQ X0NPTVBJTEVfTk9fRkxBR1MpKTsKKy0gICAgICAgIGlmIChtX3hrYktleW1hcCkgeworLSAgICAg ICAgICAgIGlmIChtX2NvbmZpZykKKy0gICAgICAgICAgICAgICAgbV94a2JTdGF0ZS5yZXNldCh4 a2Jfc3RhdGVfbmV3KG1feGtiS2V5bWFwLmdldCgpKSk7CistICAgICAgICAgICAgZWxzZQorLSAg ICAgICAgICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhrYl94MTFfc3RhdGVfbmV3X2Zyb21fZGV2 aWNlKG1feGtiS2V5bWFwLmdldCgpLCB4Y2JfY29ubmVjdGlvbigpLCBjb3JlX2RldmljZV9pZCkp OworLQorLSAgICAgICAgfQorKyAgICAgICAgaWYgKG1feGtiS2V5bWFwKQorKyAgICAgICAgICAg IG1feGtiU3RhdGUucmVzZXQoeGtiX3gxMV9zdGF0ZV9uZXdfZnJvbV9kZXZpY2UobV94a2JLZXlt YXAuZ2V0KCksIHhjYl9jb25uZWN0aW9uKCksIGNvcmVfZGV2aWNlX2lkKSk7CisgICAgIH0gZWxz ZSB7CisgICAgICAgICBtX3hrYktleW1hcC5yZXNldChrZXltYXBGcm9tQ29yZShrZXlzeW1Nb2Rz KSk7CisgICAgICAgICBpZiAobV94a2JLZXltYXApCitAQCAtNDI1LDggKzQxMSw2IEBAIHZvaWQg UVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoKQorICAgICB1cGRhdGVYS0JNb2RzKCk7CisgCisg ICAgIFFYa2JDb21tb246OnZlcmlmeUhhc0xhdGluTGF5b3V0KG1feGtiS2V5bWFwLmdldCgpKTsK Ky0KKy0gICAgbV9jb25maWcgPSB0cnVlOworIH0KKyAKKyBRTGlzdDxpbnQ+IFFYY2JLZXlib2Fy ZDo6cG9zc2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmggYi9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuaAoraW5kZXggYjY1MmM4 NWZlMy4uMGVlMDhhZWZmMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMveGNiL3F4Y2JrZXlib2FyZC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L3hjYi9xeGNia2V5Ym9hcmQuaAorQEAgLTY5LDcgKzY5LDYgQEAgcHVibGljOgorIAorICAgICBR dDo6S2V5Ym9hcmRNb2RpZmllcnMgdHJhbnNsYXRlTW9kaWZpZXJzKGludCBzKSBjb25zdDsKKyAg ICAgdm9pZCB1cGRhdGVLZXltYXAoeGNiX21hcHBpbmdfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KTsK Ky0gICAgdm9pZCB1cGRhdGVLZXltYXAoeGNiX3hrYl9uZXdfa2V5Ym9hcmRfbm90aWZ5X2V2ZW50 X3QgKmV2ZW50KTsKKyAgICAgdm9pZCB1cGRhdGVLZXltYXAoKTsKKyAgICAgUUxpc3Q8aW50PiBw b3NzaWJsZUtleXMoY29uc3QgUUtleUV2ZW50ICpldmVudCkgY29uc3Q7CisgCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAgYi9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmNwcAoraW5kZXggZmZkYTdi NmE1Ny4uODYzZTk2MWY0YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMveGNiL3F4Y2J3aW5kb3cuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L3hjYi9xeGNid2luZG93LmNwcAorQEAgLTU2NCwxMSArNTY0LDYgQEAgdm9pZCBRWGNiV2luZG93 OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcmVjdCkKKyB7CisgICAgIFFQbGF0Zm9ybVdpbmRv dzo6c2V0R2VvbWV0cnkocmVjdCk7CisgCistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6 U2V0R2VvbWV0cnkpKSB7CistICAgICAgICBtX2RlZmVycmVkR2VvbWV0cnkgPSByZWN0OworLSAg ICAgICAgcmV0dXJuOworLSAgICB9CistCisgICAgIHByb3BhZ2F0ZVNpemVIaW50cygpOworIAor ICAgICBRWGNiU2NyZWVuICpjdXJyZW50U2NyZWVuID0geGNiU2NyZWVuKCk7CitAQCAtNjkzLDkg KzY4OCw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCisgCisg dm9pZCBRWGNiV2luZG93OjpzaG93KCkKKyB7CistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFz azo6TWFwKSkKKy0gICAgICAgIHJldHVybjsKKy0KKyAgICAgaWYgKHdpbmRvdygpLT5pc1RvcExl dmVsKCkpIHsKKyAKKyAgICAgICAgIC8vIHVwZGF0ZSBXTV9OT1JNQUxfSElOVFMKK0BAIC03MDYs NyArNjk4LDcgQEAgdm9pZCBRWGNiV2luZG93OjpzaG93KCkKKyAgICAgICAgIGlmIChpc1RyYW5z aWVudCh3aW5kb3coKSkpIHsKKyAgICAgICAgICAgICBjb25zdCBRV2luZG93ICp0cCA9IHdpbmRv dygpLT50cmFuc2llbnRQYXJlbnQoKTsKKyAgICAgICAgICAgICBpZiAodHAgJiYgdHAtPmhhbmRs ZSgpKQorLSAgICAgICAgICAgICAgICB0cmFuc2llbnRYY2JQYXJlbnQgPSBzdGF0aWNfY2FzdDxj b25zdCBRWGNiV2luZG93ICo+KHRwLT5oYW5kbGUoKSktPndpbklkKCk7CisrICAgICAgICAgICAg ICAgIHRyYW5zaWVudFhjYlBhcmVudCA9IHRwLT5oYW5kbGUoKS0+d2luSWQoKTsKKyAgICAgICAg ICAgICAvLyBEZWZhdWx0IHRvIGNsaWVudCBsZWFkZXIgaWYgdGhlcmUgaXMgbm8gdHJhbnNpZW50 IHBhcmVudCwgZWxzZSBtb2RhbCBkaWFsb2dzIGNhbgorICAgICAgICAgICAgIC8vIGJlIGhpZGRl biBieSB0aGVpciBwYXJlbnRzLgorICAgICAgICAgICAgIGlmICghdHJhbnNpZW50WGNiUGFyZW50 KQorQEAgLTc0NiwxMCArNzM4LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzaG93KCkKKyAKKyB2b2lk IFFYY2JXaW5kb3c6OmhpZGUoKQorIHsKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpV bm1hcCkpCistICAgICAgICByZXR1cm47CistCistICAgIG1fd21TdGF0ZVZhbGlkID0gZmFsc2U7 CisgICAgIHhjYl91bm1hcF93aW5kb3coeGNiX2Nvbm5lY3Rpb24oKSwgbV93aW5kb3cpOworIAor ICAgICAvLyBzZW5kIHN5bnRoZXRpYyBVbm1hcE5vdGlmeSBldmVudCBhY2NvcmRpbmcgdG8gaWNj Y20gNC4xLjQKK0BAIC05MDksOSArODk3LDYgQEAgUVhjYldpbmRvdzo6TmV0V21TdGF0ZXMgUVhj YldpbmRvdzo6bmV0V21TdGF0ZXMoKQorIAorIHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93Rmxh Z3MoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKQorIHsKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhU YXNrOjpTZXRXaW5kb3dGbGFncykpCistICAgICAgICByZXR1cm47CistCisgICAgIFF0OjpXaW5k b3dUeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxRdDo6V2luZG93VHlwZT4oaW50KGZsYWdzICYgUXQ6 OldpbmRvd1R5cGVfTWFzaykpOworIAorICAgICBpZiAodHlwZSA9PSBRdDo6VG9vbFRpcCkKK0BA IC05NDEsOCArOTI2LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dGbGFncyhRdDo6V2lu ZG93RmxhZ3MgZmxhZ3MpCisgCisgICAgIHNldFRyYW5zcGFyZW50Rm9yTW91c2VFdmVudHMoZmxh Z3MgJiBRdDo6V2luZG93VHJhbnNwYXJlbnRGb3JJbnB1dCk7CisgICAgIHVwZGF0ZURvZXNOb3RB Y2NlcHRGb2N1cyhmbGFncyAmIFF0OjpXaW5kb3dEb2VzTm90QWNjZXB0Rm9jdXMpOworLQorLSAg ICBtX2lzV21NYW5hZ2VkV2luZG93ID0gIShmbGFncyAmIFF0OjpYMTFCeXBhc3NXaW5kb3dNYW5h Z2VySGludCk7CisgfQorIAorIHZvaWQgUVhjYldpbmRvdzo6c2V0TW90aWZXbUhpbnRzKFF0OjpX aW5kb3dGbGFncyBmbGFncykKK0BAIC0xMTQyLDkgKzExMjUsNiBAQCB2b2lkIFFYY2JXaW5kb3c6 OnNldFdpbmRvd1N0YXRlKFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGUpCisgICAgIGlmIChzdGF0ZSA9 PSBtX3dpbmRvd1N0YXRlKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBpZiAoc2hvdWxkRGVm ZXJUYXNrKFRhc2s6OlNldFdpbmRvd1N0YXRlKSkKKy0gICAgICAgIHJldHVybjsKKy0KKyAgICAg Ly8gdW5zZXQgb2xkIHN0YXRlCisgICAgIGlmIChtX3dpbmRvd1N0YXRlICYgUXQ6OldpbmRvd01p bmltaXplZCkKKyAgICAgICAgIHhjYl9tYXBfd2luZG93KHhjYl9jb25uZWN0aW9uKCksIG1fd2lu ZG93KTsKK0BAIC0xMzUwLDYgKzEzMzAsMTIgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dJ Y29uKGNvbnN0IFFJY29uICZpY29uKQorICAgICB9CisgCisgICAgIGlmICghaWNvbl9kYXRhLmlz RW1wdHkoKSkgeworKyAgICAgICAgLy8gSWdub3JlIGljb24gZXhjZWVkaW5nIG1heGltdW0geGNi IHJlcXVlc3QgbGVuZ3RoCisrICAgICAgICBpZiAoaWNvbl9kYXRhLnNpemUoKSA+IHhjYl9nZXRf bWF4aW11bV9yZXF1ZXN0X2xlbmd0aCh4Y2JfY29ubmVjdGlvbigpKSkgeworKyAgICAgICAgICAg IHFXYXJuaW5nKCJJZ25vcmluZyB3aW5kb3cgaWNvbjogU2l6ZSAlbGx1IGV4Y2VlZHMgbWF4aW11 bSB4Y2IgcmVxdWVzdCBsZW5ndGggJXUuIiwKKysgICAgICAgICAgICAgICAgICAgICBpY29uX2Rh dGEuc2l6ZSgpLCB4Y2JfZ2V0X21heGltdW1fcmVxdWVzdF9sZW5ndGgoeGNiX2Nvbm5lY3Rpb24o KSkpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKyAgICAgICAgIHhjYl9jaGFu Z2VfcHJvcGVydHkoeGNiX2Nvbm5lY3Rpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgWENCX1BST1BfTU9ERV9SRVBMQUNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt X3dpbmRvdywKK0BAIC0xNjM5LDcgKzE2MjUsNyBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFdtV2lu ZG93VHlwZShRWGNiV2luZG93RnVuY3Rpb25zOjpXbVdpbmRvd1R5cGVzIHR5cGVzLCBRdDo6Vwor ICAgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKy0gICAgaWYgKChmbGFncyAmIFF0OjpGcmFtZWxl c3NXaW5kb3dIaW50KSAmJiAhKHR5cGUgJiBRWGNiV2luZG93RnVuY3Rpb25zOjpLZGVPdmVycmlk ZSkpIHsKKysgICAgaWYgKChmbGFncyAmIFF0OjpGcmFtZWxlc3NXaW5kb3dIaW50KSAmJiAhKHR5 cGVzICYgUVhjYldpbmRvd0Z1bmN0aW9uczo6S2RlT3ZlcnJpZGUpKSB7CisgICAgICAgICAvLyBv dmVycmlkZSBuZXR3bSB0eXBlIC0gcXVpY2sgYW5kIGVhc3kgZm9yIEtERSBub2JvcmRlcgorICAg ICAgICAgYXRvbXMuYXBwZW5kKGF0b20oUVhjYkF0b206Ol9LREVfTkVUX1dNX1dJTkRPV19UWVBF X09WRVJSSURFKSk7CisgICAgIH0KK0BAIC0xODk0LDEwICsxODgwLDYgQEAgdm9pZCBRWGNiV2lu ZG93OjpoYW5kbGVVbm1hcE5vdGlmeUV2ZW50KGNvbnN0IHhjYl91bm1hcF9ub3RpZnlfZXZlbnRf dCAqZXZlbnQpCisgICAgIGlmIChldmVudC0+d2luZG93ID09IG1fd2luZG93KSB7CisgICAgICAg ICBtX21hcHBlZCA9IGZhbHNlOworICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFu ZGxlRXhwb3NlRXZlbnQod2luZG93KCksIFFSZWdpb24oKSk7CistICAgICAgICBpZiAoIW1faXNX bU1hbmFnZWRXaW5kb3cgfHwgcGFyZW50KCkpIHsKKy0gICAgICAgICAgICBtX3dtU3RhdGVWYWxp ZCA9IHRydWU7CistICAgICAgICAgICAgaGFuZGxlRGVmZXJyZWRUYXNrcygpOworLSAgICAgICAg fQorICAgICB9CisgfQorIAorQEAgLTIyMTIsOTggKzIxOTQsMzAgQEAgdm9pZCBRWGNiV2luZG93 OjpoYW5kbGVMZWF2ZU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9sZWF2ZV9ub3RpZnlfZXZlbnRfdCAq ZXZlbnQpCisgICAgIGhhbmRsZUxlYXZlTm90aWZ5RXZlbnQoZXZlbnQtPnJvb3RfeCwgZXZlbnQt PnJvb3RfeSwgZXZlbnQtPm1vZGUsIGV2ZW50LT5kZXRhaWwsIGV2ZW50LT50aW1lKTsKKyB9Cisg CistYm9vbCBRWGNiV2luZG93OjpzaG91bGREZWZlclRhc2soVGFzayB0YXNrKQorLXsKKy0gICAg aWYgKG1fd21TdGF0ZVZhbGlkKQorLSAgICAgICAgcmV0dXJuIGZhbHNlOworLQorLSAgICBtX2Rl ZmVycmVkVGFza3MuYXBwZW5kKHRhc2spOworLSAgICByZXR1cm4gdHJ1ZTsKKy19CistCistdm9p ZCBRWGNiV2luZG93OjpoYW5kbGVEZWZlcnJlZFRhc2tzKCkKKy17CistICAgIFFfQVNTRVJUKG1f d21TdGF0ZVZhbGlkID09IHRydWUpOworLSAgICBpZiAobV9kZWZlcnJlZFRhc2tzLmlzRW1wdHko KSkKKy0gICAgICAgIHJldHVybjsKKy0KKy0gICAgYm9vbCBtYXAgPSBmYWxzZTsKKy0gICAgYm9v bCB1bm1hcCA9IGZhbHNlOworLQorLSAgICBRVmVjdG9yPFRhc2s+IHRhc2tzOworLSAgICBmb3Ig KGF1dG8gdGFza0l0ID0gbV9kZWZlcnJlZFRhc2tzLnJiZWdpbigpOyB0YXNrSXQgIT0gbV9kZWZl cnJlZFRhc2tzLnJlbmQoKTsgKyt0YXNrSXQpIHsKKy0gICAgICAgIGlmICghdGFza3MuY29udGFp bnMoKnRhc2tJdCkpCistICAgICAgICAgICAgdGFza3MucHJlcGVuZCgqdGFza0l0KTsKKy0gICAg fQorLQorLSAgICBmb3IgKFRhc2sgdGFzayA6IHRhc2tzKSB7CistICAgICAgICBzd2l0Y2ggKHRh c2spIHsKKy0gICAgICAgIGNhc2UgVGFzazo6TWFwOgorLSAgICAgICAgICAgIG1hcCA9IHRydWU7 CistICAgICAgICAgICAgdW5tYXAgPSBmYWxzZTsKKy0gICAgICAgICAgICBicmVhazsKKy0gICAg ICAgIGNhc2UgVGFzazo6VW5tYXA6CistICAgICAgICAgICAgdW5tYXAgPSB0cnVlOworLSAgICAg ICAgICAgIG1hcCA9IGZhbHNlOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBU YXNrOjpTZXRHZW9tZXRyeToKKy0gICAgICAgICAgICBzZXRHZW9tZXRyeShtX2RlZmVycmVkR2Vv bWV0cnkpOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBUYXNrOjpTZXRXaW5k b3dGbGFnczoKKy0gICAgICAgICAgICBzZXRXaW5kb3dGbGFncyh3aW5kb3coKS0+ZmxhZ3MoKSk7 CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlNldFdpbmRvd1N0YXRl OgorLSAgICAgICAgICAgIHNldFdpbmRvd1N0YXRlKHdpbmRvdygpLT53aW5kb3dTdGF0ZSgpKTsK Ky0gICAgICAgICAgICBicmVhazsKKy0gICAgICAgIH0KKy0gICAgfQorLSAgICBtX2RlZmVycmVk VGFza3MuY2xlYXIoKTsKKy0KKy0gICAgaWYgKG1hcCkgeworLSAgICAgICAgUV9BU1NFUlQodW5t YXAgPT0gZmFsc2UpOworLSAgICAgICAgc2hvdygpOworLSAgICB9CistICAgIGlmICh1bm1hcCkg eworLSAgICAgICAgUV9BU1NFUlQobWFwID09IGZhbHNlKTsKKy0gICAgICAgIGhpZGUoKTsKKy0g ICAgfQorLX0KKy0KKyB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZVByb3BlcnR5Tm90aWZ5RXZlbnQo Y29uc3QgeGNiX3Byb3BlcnR5X25vdGlmeV9ldmVudF90ICpldmVudCkKKyB7CisgICAgIGNvbm5l Y3Rpb24oKS0+c2V0VGltZShldmVudC0+dGltZSk7CisgCistICAgIGNvbnN0IGJvb2wgd21TdGF0 ZUNoYW5nZWQgPSBldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSk7CistICAg IGNvbnN0IGJvb2wgbmV0V21TdGF0ZUNoYW5nZWQgPSBldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JB dG9tOjpfTkVUX1dNX1NUQVRFKTsKKy0gICAgaWYgKG5ldFdtU3RhdGVDaGFuZ2VkIHx8IHdtU3Rh dGVDaGFuZ2VkKSB7CistICAgICAgICBpZiAod21TdGF0ZUNoYW5nZWQgJiYgIW1fd21TdGF0ZVZh bGlkICYmIG1faXNXbU1hbmFnZWRXaW5kb3cpIHsKKy0gICAgICAgICAgICAvLyBJQ0NDTSA0LjEu NAorLSAgICAgICAgICAgIC8vIENsaWVudHMgdGhhdCB3YW50IHRvIHJlLXVzZSBhIGNsaWVudCB3 aW5kb3cgKGUuZy4gYnkgbWFwcGluZyBpdCBhZ2FpbikKKy0gICAgICAgICAgICAvLyBhZnRlciB3 aXRoZHJhd2luZyBpdCBtdXN0IHdhaXQgZm9yIHRoZSB3aXRoZHJhd2FsIHRvIGJlIGNvbXBsZXRl IGJlZm9yZQorLSAgICAgICAgICAgIC8vIHByb2NlZWRpbmcuIFRoZSBwcmVmZXJyZWQgbWV0aG9k IGZvciBkb2luZyB0aGlzIGlzIGZvciBjbGllbnRzIHRvIHdhaXQgZm9yCistICAgICAgICAgICAg Ly8gYSB3aW5kb3cgbWFuYWdlciB0byB1cGRhdGUgb3IgcmVtb3ZlIHRoZSBXTV9TVEFURSBwcm9w ZXJ0eS4KKy0gICAgICAgICAgICBtX3dtU3RhdGVWYWxpZCA9IHRydWU7CistICAgICAgICAgICAg aGFuZGxlRGVmZXJyZWRUYXNrcygpOworLSAgICAgICAgfQorLSAgICAgICAgaWYgKGV2ZW50LT5z dGF0ZSA9PSBYQ0JfUFJPUEVSVFlfREVMRVRFKQorKyAgICBjb25zdCBib29sIHByb3BlcnR5RGVs ZXRlZCA9IGV2ZW50LT5zdGF0ZSA9PSBYQ0JfUFJPUEVSVFlfREVMRVRFOworKworKyAgICBpZiAo ZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9XTV9TVEFURSkgfHwgZXZlbnQtPmF0 b20gPT0gYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpKSB7CisrICAgICAgICBpZiAocHJvcGVydHlE ZWxldGVkKQorICAgICAgICAgICAgIHJldHVybjsKKyAKKy0gICAgICAgIGlmICh3bVN0YXRlQ2hh bmdlZCkgeworKyAgICAgICAgUXQ6OldpbmRvd1N0YXRlcyBuZXdTdGF0ZSA9IFF0OjpXaW5kb3dO b1N0YXRlOworKworKyAgICAgICAgaWYgKGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206OldN X1NUQVRFKSkgeyAvLyBXTV9TVEFURTogUXVpY2sgY2hlY2sgZm9yICdNaW5pbWl6ZScuCisgICAg ICAgICAgICAgYXV0byByZXBseSA9IFFfWENCX1JFUExZKHhjYl9nZXRfcHJvcGVydHksIHhjYl9j b25uZWN0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIG1f d2luZG93LCBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFhDQl9BVE9NX0FOWSwgMCwgMTAyNCk7CisgICAgICAgICAgICAgaWYg KHJlcGx5ICYmIHJlcGx5LT5mb3JtYXQgPT0gMzIgJiYgcmVwbHktPnR5cGUgPT0gYXRvbShRWGNi QXRvbTo6V01fU1RBVEUpKSB7CistICAgICAgICAgICAgICAgIGF1dG8gZGF0YSA9IHN0YXRpY19j YXN0PGNvbnN0IHF1aW50MzIgKj4oeGNiX2dldF9wcm9wZXJ0eV92YWx1ZShyZXBseS5nZXQoKSkp OworLSAgICAgICAgICAgICAgICBpZiAocmVwbHktPmxlbmd0aCAhPSAwKSB7CistICAgICAgICAg ICAgICAgICAgICBjb25zdCBib29sIGNoYW5nZWRUb1dpdGhkcmF3biA9IGRhdGFbMF0gPT0gWENC X0lDQ0NNX1dNX1NUQVRFX1dJVEhEUkFXTjsKKy0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJv b2wgY2hhbmdlZFRvSWNvbmljID0gZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfSUNPTklD OworLSAgICAgICAgICAgICAgICAgICAgbV9taW5pbWl6ZWQgPSBjaGFuZ2VkVG9JY29uaWMgfHwg KGNoYW5nZWRUb1dpdGhkcmF3biAmJiBtX21pbmltaXplZCk7CistICAgICAgICAgICAgICAgIH0K KysgICAgICAgICAgICAgICAgY29uc3QgcXVpbnQzMiAqZGF0YSA9IChjb25zdCBxdWludDMyICop eGNiX2dldF9wcm9wZXJ0eV92YWx1ZShyZXBseS5nZXQoKSk7CisrICAgICAgICAgICAgICAgIGlm IChyZXBseS0+bGVuZ3RoICE9IDApCisrICAgICAgICAgICAgICAgICAgICBtX21pbmltaXplZCA9 IChkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9JQ09OSUMKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHx8IChkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9XSVRI RFJBV04gJiYgbV9taW5pbWl6ZWQpKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgCist ICAgICAgICAvLyBfTkVUX1dNX1NUQVRFIGhhbmRsaW5nCistICAgICAgICBRdDo6V2luZG93U3Rh dGVzIG5ld1N0YXRlID0gUXQ6OldpbmRvd05vU3RhdGU7CisgICAgICAgICBjb25zdCBOZXRXbVN0 YXRlcyBzdGF0ZXMgPSBuZXRXbVN0YXRlcygpOworICAgICAgICAgLy8gX05FVF9XTV9TVEFURV9I SURERU4gc2hvdWxkIGJlIHNldCBieSB0aGUgV2luZG93IE1hbmFnZXIgdG8gaW5kaWNhdGUgdGhh dCBhIHdpbmRvdyB3b3VsZAorICAgICAgICAgLy8gbm90IGJlIHZpc2libGUgb24gdGhlIHNjcmVl biBpZiBpdHMgZGVza3RvcC92aWV3cG9ydCB3ZXJlIGFjdGl2ZSBhbmQgaXRzIGNvb3JkaW5hdGVz IHdlcmUKK0BAIC0yMzI1LDYgKzIyMzksNyBAQCB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZVByb3Bl cnR5Tm90aWZ5RXZlbnQoY29uc3QgeGNiX3Byb3BlcnR5X25vdGlmeV9ldmVudF90ICpldgorICAg ICAgICAgICAgIGlmICgobV93aW5kb3dTdGF0ZSAmIFF0OjpXaW5kb3dNaW5pbWl6ZWQpICYmIGNv bm5lY3Rpb24oKS0+bW91c2VHcmFiYmVyKCkgPT0gdGhpcykKKyAgICAgICAgICAgICAgICAgY29u bmVjdGlvbigpLT5zZXRNb3VzZUdyYWJiZXIobnVsbHB0cik7CisgICAgICAgICB9CisrICAgICAg ICByZXR1cm47CisgICAgIH0gZWxzZSBpZiAoZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6 X05FVF9GUkFNRV9FWFRFTlRTKSkgeworICAgICAgICAgbV9kaXJ0eUZyYW1lTWFyZ2lucyA9IHRy dWU7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hj Yi9xeGNid2luZG93LmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2lu ZG93LmgKK2luZGV4IDU1YWY5Mjc5YjEuLjZmNWMxZjVlZDkgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmgKKysrKyBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaAorQEAgLTc0LDE0ICs3NCw2IEBAIHB1 YmxpYzoKKyAKKyAgICAgUV9ERUNMQVJFX0ZMQUdTKE5ldFdtU3RhdGVzLCBOZXRXbVN0YXRlKQor IAorLSAgICBlbnVtIFRhc2sgeworLSAgICAgICAgTWFwLAorLSAgICAgICAgVW5tYXAsCistICAg ICAgICBTZXRHZW9tZXRyeSwKKy0gICAgICAgIFNldFdpbmRvd0ZsYWdzLAorLSAgICAgICAgU2V0 V2luZG93U3RhdGUKKy0gICAgfTsKKy0KKyAgICAgUVhjYldpbmRvdyhRV2luZG93ICp3aW5kb3cp OworICAgICB+UVhjYldpbmRvdygpOworIAorQEAgLTE1MSw5ICsxNDMsNiBAQCBwdWJsaWM6Cisg CisgICAgIFFYY2JXaW5kb3cgKnRvV2luZG93KCkgb3ZlcnJpZGU7CisgCistICAgIGJvb2wgc2hv dWxkRGVmZXJUYXNrKFRhc2sgdGFzayk7CistICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRUYXNrcygp OworLQorICAgICB2b2lkIGhhbmRsZU1vdXNlRXZlbnQoeGNiX3RpbWVzdGFtcF90IHRpbWUsIGNv bnN0IFFQb2ludCAmbG9jYWwsIGNvbnN0IFFQb2ludCAmZ2xvYmFsLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWVycywgUUV2ZW50OjpUeXBl IHR5cGUsIFF0OjpNb3VzZUV2ZW50U291cmNlIHNvdXJjZSk7CisgCitAQCAtMjkyLDExICsyODEs NiBAQCBwcm90ZWN0ZWQ6CisgICAgIGludCBtX3N3YXBJbnRlcnZhbCA9IC0xOworIAorICAgICBx cmVhbCBtX3NpemVIaW50c1NjYWxlRmFjdG9yID0gMS4wOworLQorLSAgICBib29sIG1fd21TdGF0 ZVZhbGlkID0gdHJ1ZTsKKy0gICAgUVZlY3RvcjxUYXNrPiBtX2RlZmVycmVkVGFza3M7CistICAg IGJvb2wgbV9pc1dtTWFuYWdlZFdpbmRvdyA9IHRydWU7CistICAgIFFSZWN0IG1fZGVmZXJyZWRH ZW9tZXRyeTsKKyB9OworIAorIGNsYXNzIFFYY2JGb3JlaWduV2luZG93IDogcHVibGljIFFYY2JX aW5kb3cKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3Rr My9xZ3RrM21lbnUuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL2d0azMv cWd0azNtZW51LmNwcAoraW5kZXggZDlkMTE3ZmFlYi4uNjQwYjQ5ZGFhMCAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAKKysr KyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAK K0BAIC04NSw2ICs4NSw3IEBAIFFHdGszTWVudUl0ZW06OlFHdGszTWVudUl0ZW0oKQorICAgICAg IG1fY2hlY2thYmxlKGZhbHNlKSwKKyAgICAgICBtX2NoZWNrZWQoZmFsc2UpLAorICAgICAgIG1f ZW5hYmxlZCh0cnVlKSwKKysgICAgICBtX2V4Y2x1c2l2ZShmYWxzZSksCisgICAgICAgbV91bmRl cmxpbmUoZmFsc2UpLAorICAgICAgIG1faW52YWxpZCh0cnVlKSwKKyAgICAgICBtX21lbnUobnVs bHB0ciksCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hk Z2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcCBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9y dGFsZmlsZWRpYWxvZy5jcHAKK2luZGV4IDAwNDhiYmMxZTYuLjM5NmU3ZjZkMWMgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9x eGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFs b2cuY3BwCitAQCAtMTAyLDE1ICsxMDIsMTIgQEAgY29uc3QgUURCdXNBcmd1bWVudCAmb3BlcmF0 b3IgPj4oY29uc3QgUURCdXNBcmd1bWVudCAmYXJnLCBRWGRnRGVza3RvcFBvcnRhbEZpbGUKKyBj bGFzcyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlCisgeworIHB1YmxpYzoKKy0g ICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShRUGxhdGZvcm1GaWxlRGlhbG9n SGVscGVyICpuYXRpdmVGaWxlRGlhbG9nKQorKyAgICBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFs b2dQcml2YXRlKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2csIHVp bnQgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKQorICAgICAgICAgOiBuYXRpdmVGaWxlRGlhbG9n KG5hdGl2ZUZpbGVEaWFsb2cpCisrICAgICAgICAsIGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbihm aWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pCisgICAgIHsgfQorIAorLSAgICBXSWQgd2luSWQgPSAw OworLSAgICBib29sIGRpcmVjdG9yeU1vZGUgPSBmYWxzZTsKKy0gICAgYm9vbCBtb2RhbCA9IGZh bHNlOworLSAgICBib29sIG11bHRpcGxlRmlsZXMgPSBmYWxzZTsKKy0gICAgYm9vbCBzYXZlRmls ZSA9IGZhbHNlOworKyAgICBRRXZlbnRMb29wIGxvb3A7CisgICAgIFFTdHJpbmcgYWNjZXB0TGFi ZWw7CisgICAgIFFTdHJpbmcgZGlyZWN0b3J5OworICAgICBRU3RyaW5nIHRpdGxlOworQEAgLTEy MSwxOSArMTE4LDI3IEBAIHB1YmxpYzoKKyAgICAgUVN0cmluZyBzZWxlY3RlZE1pbWVUeXBlRmls dGVyOworICAgICBRU3RyaW5nIHNlbGVjdGVkTmFtZUZpbHRlcjsKKyAgICAgUVN0cmluZ0xpc3Qg c2VsZWN0ZWRGaWxlczsKKy0gICAgUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmls ZURpYWxvZyA9IG51bGxwdHI7CisrICAgIHN0ZDo6dW5pcXVlX3B0cjxRUGxhdGZvcm1GaWxlRGlh bG9nSGVscGVyPiBuYXRpdmVGaWxlRGlhbG9nOworKyAgICB1aW50IGZpbGVDaG9vc2VyUG9ydGFs VmVyc2lvbiA9IDA7CisrICAgIGJvb2wgZmFpbGVkVG9PcGVuID0gZmFsc2U7CisrICAgIGJvb2wg ZGlyZWN0b3J5TW9kZSA9IGZhbHNlOworKyAgICBib29sIG11bHRpcGxlRmlsZXMgPSBmYWxzZTsK KysgICAgYm9vbCBzYXZlRmlsZSA9IGZhbHNlOworIH07CisgCistUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nOjpRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coUVBsYXRmb3JtRmlsZURpYWxv Z0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZykKKytRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6 OlFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpu YXRpdmVGaWxlRGlhbG9nLCB1aW50IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikKKyAgICAgOiBR UGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyKCkKKy0gICAgLCBkX3B0cihuZXcgUVhkZ0Rlc2t0b3BQ b3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShuYXRpdmVGaWxlRGlhbG9nKSkKKysgICAgLCBkX3B0cihu ZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShuYXRpdmVGaWxlRGlhbG9nLCBm aWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pKQorIHsKKyAgICAgUV9EKFFYZGdEZXNrdG9wUG9ydGFs RmlsZURpYWxvZyk7CisgCisgICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nKSB7CistICAgICAg ICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2csIFNJR05BTChhY2NlcHQoKSksIHRoaXMsIFNJ R05BTChhY2NlcHQoKSkpOworLSAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlhbG9nLCBT SUdOQUwocmVqZWN0KCkpLCB0aGlzLCBTSUdOQUwocmVqZWN0KCkpKTsKKysgICAgICAgIGNvbm5l Y3QoZC0+bmF0aXZlRmlsZURpYWxvZy5nZXQoKSwgU0lHTkFMKGFjY2VwdCgpKSwgdGhpcywgU0lH TkFMKGFjY2VwdCgpKSk7CisrICAgICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2cuZ2V0 KCksIFNJR05BTChyZWplY3QoKSksIHRoaXMsIFNJR05BTChyZWplY3QoKSkpOworICAgICB9Cisr CisrICAgIGQtPmxvb3AuY29ubmVjdCh0aGlzLCBTSUdOQUwoYWNjZXB0KCkpLCBTTE9UKHF1aXQo KSkpOworKyAgICBkLT5sb29wLmNvbm5lY3QodGhpcywgU0lHTkFMKHJlamVjdCgpKSwgU0xPVChx dWl0KCkpKTsKKyB9CisgCisgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjp+UVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlRGlhbG9nKCkKK0BAIC0xNzcsNyArMTgyLDcgQEAgdm9pZCBRWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2c6OmluaXRpYWxpemVEaWFsb2coKQorICAgICBzZXREaXJlY3Rvcnko b3B0aW9ucygpLT5pbml0aWFsRGlyZWN0b3J5KCkpOworIH0KKyAKKy12b2lkIFFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbCgpCisrdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZp bGVEaWFsb2c6Om9wZW5Qb3J0YWwoUXQ6OldpbmRvd0ZsYWdzIHdpbmRvd0ZsYWdzLCBRdDo6V2lu ZG93TW9kYWxpdHkgd2luZG93TW9kYWxpdHksIFFXaW5kb3cgKnBhcmVudCkKKyB7CisgICAgIFFf RChRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorQEAgLTE4NSwxMyArMTkwLDEzIEBA IHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxhdGlu MVN0cmluZygiL29yZy9mcmVlZGVza3RvcC9wb3J0YWwvZGVza3RvcCIpLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3Ry aW5nKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkZpbGVDaG9vc2VyIiksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPnNhdmVGaWxl ID8gUUxhdGluMVN0cmluZygiU2F2ZUZpbGUiKSA6IFFMYXRpbjFTdHJpbmcoIk9wZW5GaWxlIikp OworLSAgICBRU3RyaW5nIHBhcmVudFdpbmRvd0lkID0gUUxhdGluMVN0cmluZygieDExOiIpICsg UVN0cmluZzo6bnVtYmVyKGQtPndpbklkLCAxNik7CisrICAgIFFTdHJpbmcgcGFyZW50V2luZG93 SWQgPSBRTGF0aW4xU3RyaW5nKCJ4MTE6IikgKyBRU3RyaW5nOjpudW1iZXIocGFyZW50ID8gcGFy ZW50LT53aW5JZCgpIDogMCwgMTYpOworIAorICAgICBRVmFyaWFudE1hcCBvcHRpb25zOworICAg ICBpZiAoIWQtPmFjY2VwdExhYmVsLmlzRW1wdHkoKSkKKyAgICAgICAgIG9wdGlvbnMuaW5zZXJ0 KFFMYXRpbjFTdHJpbmcoImFjY2VwdF9sYWJlbCIpLCBkLT5hY2NlcHRMYWJlbCk7CisgCistICAg IG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoIm1vZGFsIiksIGQtPm1vZGFsKTsKKysgICAg b3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygibW9kYWwiKSwgd2luZG93TW9kYWxpdHkgIT0g UXQ6Ok5vbk1vZGFsKTsKKyAgICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygibXVsdGlw bGUiKSwgZC0+bXVsdGlwbGVGaWxlcyk7CisgICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJp bmcoImRpcmVjdG9yeSIpLCBkLT5kaXJlY3RvcnlNb2RlKTsKKyAKK0BAIC0yOTAsMTAgKzI5NSwx OCBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbCgpCisgCisg ICAgIFFEQnVzUGVuZGluZ0NhbGwgcGVuZGluZ0NhbGwgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Np b25CdXMoKS5hc3luY0NhbGwobWVzc2FnZSk7CisgICAgIFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVy ICp3YXRjaGVyID0gbmV3IFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyKHBlbmRpbmdDYWxsKTsKKy0g ICAgY29ubmVjdCh3YXRjaGVyLCAmUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB0 aGlzLCBbdGhpc10gKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7CisrICAgIGNv bm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hlZCwgdGhpcywg Wz1dIChRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlcikgeworICAgICAgICAgUURCdXNQ ZW5kaW5nUmVwbHk8UURCdXNPYmplY3RQYXRoPiByZXBseSA9ICp3YXRjaGVyOworLSAgICAgICAg aWYgKHJlcGx5LmlzRXJyb3IoKSkgeworLSAgICAgICAgICAgIFFfRU1JVCByZWplY3QoKTsKKysg ICAgICAgIC8vIEFueSBlcnJvciBtZWFucyB0aGUgZGlhbG9nIGlzIG5vdCBzaG93biBhbmQgd2Ug bmVlZCB0byBmYWxsYmFjaworKyAgICAgICAgZC0+ZmFpbGVkVG9PcGVuID0gcmVwbHkuaXNFcnJv cigpOworKyAgICAgICAgaWYgKGQtPmZhaWxlZFRvT3BlbikgeworKyAgICAgICAgICAgIGlmIChk LT5uYXRpdmVGaWxlRGlhbG9nKSB7CisrICAgICAgICAgICAgICAgIGQtPm5hdGl2ZUZpbGVEaWFs b2ctPnNob3cod2luZG93RmxhZ3MsIHdpbmRvd01vZGFsaXR5LCBwYXJlbnQpOworKyAgICAgICAg ICAgICAgICBpZiAoZC0+bG9vcC5pc1J1bm5pbmcoKSkKKysgICAgICAgICAgICAgICAgICAgIGQt Pm5hdGl2ZUZpbGVEaWFsb2ctPmV4ZWMoKTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAg ICAgICAgICAgICBRX0VNSVQgcmVqZWN0KCk7CisrICAgICAgICAgICAgfQorICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5jb25uZWN0 KG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXBseS52YWx1ZSgpLnBhdGgoKSwKK0BAIC0zMDIsNiArMzE1LDcgQEAgdm9pZCBRWGRn RGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QoZ290UmVzcG9uc2UodWludCxR VmFyaWFudE1hcCkpKTsKKyAgICAgICAgIH0KKysgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxhdGVy KCk7CisgICAgIH0pOworIH0KKyAKK0BAIC0zMjYsNyArMzQwLDcgQEAgUVVybCBRWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2c6OmRpcmVjdG9yeSgpIGNvbnN0CisgeworICAgICBRX0QoY29uc3Qg UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQtPm5hdGl2ZUZpbGVE aWFsb2cgJiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRp cmVjdG9yeSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpE aXJlY3RvcnlPbmx5KSkKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0aXZl RmlsZURpYWxvZygpKQorICAgICAgICAgcmV0dXJuIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPmRpcmVj dG9yeSgpOworIAorICAgICByZXR1cm4gZC0+ZGlyZWN0b3J5OworQEAgLTM0OCw3ICszNjIsNyBA QCBRTGlzdDxRVXJsPiBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OnNlbGVjdGVkRmlsZXMo KSBjb25zdAorIHsKKyAgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7 CisgCistICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2Rl KCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9k ZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpCisrICAgIGlmIChkLT5u YXRpdmVGaWxlRGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coKSkKKyAgICAgICAgIHJldHVy biBkLT5uYXRpdmVGaWxlRGlhbG9nLT5zZWxlY3RlZEZpbGVzKCk7CisgCisgICAgIFFMaXN0PFFV cmw+IGZpbGVzOworQEAgLTQwMywxNiArNDE3LDEzIEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nOjpleGVjKCkKKyB7CisgICAgIFFfRChRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFs b2cpOworIAorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygpLT5maWxl TW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMoKS0+Zmls ZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKSB7CisrICAgIGlm IChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coKSkgeworICAgICAg ICAgZC0+bmF0aXZlRmlsZURpYWxvZy0+ZXhlYygpOworICAgICAgICAgcmV0dXJuOworICAgICB9 CisgCisgICAgIC8vIEhBQ0sgd2UgaGF2ZSB0byBhdm9pZCByZXR1cm5pbmcgdW50aWwgd2UgZW1p dCB0aGF0IHRoZSBkaWFsb2cgd2FzIGFjY2VwdGVkIG9yIHJlamVjdGVkCistICAgIFFFdmVudExv b3AgbG9vcDsKKy0gICAgbG9vcC5jb25uZWN0KHRoaXMsIFNJR05BTChhY2NlcHQoKSksIFNMT1Qo cXVpdCgpKSk7CistICAgIGxvb3AuY29ubmVjdCh0aGlzLCBTSUdOQUwocmVqZWN0KCkpLCBTTE9U KHF1aXQoKSkpOworLSAgICBsb29wLmV4ZWMoKTsKKysgICAgZC0+bG9vcC5leGVjKCk7CisgfQor IAorIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpoaWRlKCkKK0BAIC00MjksMTMg KzQ0MCwxMCBAQCBib29sIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6c2hvdyhRdDo6V2lu ZG93RmxhZ3Mgd2luZG93RmxhZ3MsIFF0OjpXaW5kb3dNbworIAorICAgICBpbml0aWFsaXplRGlh bG9nKCk7CisgCistICAgIGQtPm1vZGFsID0gd2luZG93TW9kYWxpdHkgIT0gUXQ6Ok5vbk1vZGFs OworLSAgICBkLT53aW5JZCA9IHBhcmVudCA/IHBhcmVudC0+d2luSWQoKSA6IDA7CistCistICAg IGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZp bGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFG aWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpCisrICAgIGlmIChkLT5uYXRpdmVGaWxl RGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coT3BlbkZhbGxiYWNrKSkKKyAgICAgICAgIHJl dHVybiBkLT5uYXRpdmVGaWxlRGlhbG9nLT5zaG93KHdpbmRvd0ZsYWdzLCB3aW5kb3dNb2RhbGl0 eSwgcGFyZW50KTsKKyAKKy0gICAgb3BlblBvcnRhbCgpOworKyAgICBvcGVuUG9ydGFsKHdpbmRv d0ZsYWdzLCB3aW5kb3dNb2RhbGl0eSwgcGFyZW50KTsKKyAKKyAgICAgcmV0dXJuIHRydWU7Cisg fQorQEAgLTQ2NSw0ICs0NzMsMjEgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6 OmdvdFJlc3BvbnNlKHVpbnQgcmVzcG9uc2UsIGNvbnN0IFFWYXJpYW50TWFwICYKKyAgICAgfQor IH0KKyAKKytib29sIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6dXNlTmF0aXZlRmlsZURp YWxvZyhRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OkZhbGxiYWNrVHlwZSBmYWxsYmFja1R5 cGUpIGNvbnN0CisreworKyAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n KTsKKysKKysgICAgaWYgKGQtPmZhaWxlZFRvT3BlbiAmJiBmYWxsYmFja1R5cGUgIT0gT3BlbkZh bGxiYWNrKQorKyAgICAgICAgcmV0dXJuIHRydWU7CisrCisrICAgIGlmIChkLT5maWxlQ2hvb3Nl clBvcnRhbFZlcnNpb24gPCAzKSB7CisrICAgICAgICBpZiAob3B0aW9ucygpLT5maWxlTW9kZSgp ID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5KQorKyAgICAgICAgICAgIHJldHVybiB0 cnVlOworKyAgICAgICAgZWxzZSBpZiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlh bG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysg ICAgfQorKworKyAgICByZXR1cm4gZmFsc2U7CisrfQorKworIFFUX0VORF9OQU1FU1BBQ0UKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBv cnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oIGIvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlh bG9nX3AuaAoraW5kZXggNGY0ZGU5NmVjZi4uNjVlMjJhNWNmMiAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9w cG9ydGFsZmlsZWRpYWxvZ19wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRo ZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZ19wLmgKK0BA IC01MSw2ICs1MSwxMSBAQCBjbGFzcyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cgOiBwdWJs aWMgUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcgorICAgICBRX09CSkVDVAorICAgICBRX0RFQ0xB UkVfUFJJVkFURShRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpCisgcHVibGljOgorKyAgICBl bnVtIEZhbGxiYWNrVHlwZSB7CisrICAgICAgICBHZW5lcmljRmFsbGJhY2ssCisrICAgICAgICBP cGVuRmFsbGJhY2sKKysgICAgfTsKKysKKyAgICAgZW51bSBDb25kaXRpb25UeXBlIDogdWludCB7 CisgICAgICAgICBHbG9iYWxQYXR0ZXJuID0gMCwKKyAgICAgICAgIE1pbWVUeXBlID0gMQorQEAg LTY5LDcgKzc0LDcgQEAgcHVibGljOgorICAgICB9OworICAgICB0eXBlZGVmIFFWZWN0b3I8Rmls dGVyPiBGaWx0ZXJMaXN0OworIAorLSAgICBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coUVBs YXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZyA9IG51bGxwdHIpOworKyAg ICBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAq bmF0aXZlRmlsZURpYWxvZyA9IG51bGxwdHIsIHVpbnQgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9u ID0gMCk7CisgICAgIH5RWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coKTsKKyAKKyAgICAgYm9v bCBkZWZhdWx0TmFtZUZpbHRlckRpc2FibGVzKCkgY29uc3Qgb3ZlcnJpZGU7CitAQCAtOTIsNyAr OTcsOCBAQCBwcml2YXRlIFFfU0xPVFM6CisgCisgcHJpdmF0ZToKKyAgICAgdm9pZCBpbml0aWFs aXplRGlhbG9nKCk7CistICAgIHZvaWQgb3BlblBvcnRhbCgpOworKyAgICB2b2lkIG9wZW5Qb3J0 YWwoUXQ6OldpbmRvd0ZsYWdzIHdpbmRvd0ZsYWdzLCBRdDo6V2luZG93TW9kYWxpdHkgd2luZG93 TW9kYWxpdHksIFFXaW5kb3cgKnBhcmVudCk7CisrICAgIGJvb2wgdXNlTmF0aXZlRmlsZURpYWxv ZyhGYWxsYmFja1R5cGUgZmFsbGJhY2tUeXBlID0gR2VuZXJpY0ZhbGxiYWNrKSBjb25zdDsKKyAK KyAgICAgUVNjb3BlZFBvaW50ZXI8UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZT4g ZF9wdHI7CisgfTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVt ZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcCBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9y dGFsdGhlbWUuY3BwCitpbmRleCBmYjMyNGFmYmQ4Li5iODA5NTAzMTIyIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rl c2t0b3Bwb3J0YWx0aGVtZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRo ZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3BwCitAQCAtMTEx LDYgKzExMSw3IEBAIFFYZGdEZXNrdG9wUG9ydGFsVGhlbWU6OlFYZGdEZXNrdG9wUG9ydGFsVGhl bWUoKQorICAgICAgICAgaWYgKHJlcGx5LmlzVmFsaWQoKSkgeworICAgICAgICAgICAgIGQtPmZp bGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA9IHJlcGx5LnZhbHVlKCkudG9VSW50KCk7CisgICAgICAg ICB9CisrICAgICAgICB3YXRjaGVyLT5kZWxldGVMYXRlcigpOworICAgICB9KTsKKyB9CisgCitA QCAtMTUyLDExICsxNTMsMTIgQEAgUVBsYXRmb3JtRGlhbG9nSGVscGVyKiBRWGRnRGVza3RvcFBv cnRhbFRoZW1lOjpjcmVhdGVQbGF0Zm9ybURpYWxvZ0hlbHBlcihEaWFsb2cKKyB7CisgICAgIFFf RChjb25zdCBRWGRnRGVza3RvcFBvcnRhbFRoZW1lKTsKKyAKKy0gICAgaWYgKHR5cGUgPT0gRmls ZURpYWxvZykgeworKyAgICBpZiAodHlwZSA9PSBGaWxlRGlhbG9nICYmIGQtPmZpbGVDaG9vc2Vy UG9ydGFsVmVyc2lvbikgeworICAgICAgICAgLy8gT2xkZXIgdmVyc2lvbnMgb2YgRmlsZUNob29z ZXIgcG9ydGFsIGRvbid0IHN1cHBvcnQgb3BlbmluZyBkaXJlY3RvcmllcywgdGhlcmVmb3JlIHdl IGZhbGxiYWNrCisgICAgICAgICAvLyB0byBuYXRpdmUgZmlsZSBkaWFsb2cgb3BlbmVkIGluc2lk ZSB0aGUgc2FuZGJveCB0byBvcGVuIGEgZGlyZWN0b3J5LgorLSAgICAgICAgaWYgKGQtPmZpbGVD aG9vc2VyUG9ydGFsVmVyc2lvbiA8IDMgJiYgZC0+YmFzZVRoZW1lLT51c2VQbGF0Zm9ybU5hdGl2 ZURpYWxvZyh0eXBlKSkKKy0gICAgICAgICAgICByZXR1cm4gbmV3IFFYZGdEZXNrdG9wUG9ydGFs RmlsZURpYWxvZyhzdGF0aWNfY2FzdDxRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyKj4oZC0+YmFz ZVRoZW1lLT5jcmVhdGVQbGF0Zm9ybURpYWxvZ0hlbHBlcih0eXBlKSkpOworKyAgICAgICAgaWYg KGQtPmJhc2VUaGVtZS0+dXNlUGxhdGZvcm1OYXRpdmVEaWFsb2codHlwZSkpCisrICAgICAgICAg ICAgcmV0dXJuIG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coc3RhdGljX2Nhc3Q8UVBs YXRmb3JtRmlsZURpYWxvZ0hlbHBlcio+KGQtPmJhc2VUaGVtZS0+Y3JlYXRlUGxhdGZvcm1EaWFs b2dIZWxwZXIodHlwZSkpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbik7CisgCisgICAgICAgICBy ZXR1cm4gbmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzsKKyAgICAgfQorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5l LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5n aW5lLmNwcAoraW5kZXggNDNkNWUxMTlhZC4uMWY5Y2JjNDU2NSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lLmNwcAorKysr IGIvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUu Y3BwCitAQCAtODksOCArODksMTAgQEAgdm9pZCBRQ3Vwc1ByaW50RW5naW5lOjpzZXRQcm9wZXJ0 eShQcmludEVuZ2luZVByb3BlcnR5S2V5IGtleSwgY29uc3QgUVZhcmlhbnQgJnYKKyAgICAgICAg IGJyZWFrOworICAgICBjYXNlIFBQS19EdXBsZXg6IHsKKyAgICAgICAgIFFQcmludDo6RHVwbGV4 TW9kZSBtb2RlID0gUVByaW50OjpEdXBsZXhNb2RlKHZhbHVlLnRvSW50KCkpOworLSAgICAgICAg aWYgKG1vZGUgIT0gZC0+ZHVwbGV4ICYmIGQtPm1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVwbGV4 TW9kZXMoKS5jb250YWlucyhtb2RlKSkKKysgICAgICAgIGlmIChkLT5tX3ByaW50RGV2aWNlLnN1 cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMobW9kZSkpIHsKKyAgICAgICAgICAgICBkLT5k dXBsZXggPSBtb2RlOworKyAgICAgICAgICAgIGQtPmR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkg PSB0cnVlOworKyAgICAgICAgfQorICAgICAgICAgYnJlYWs7CisgICAgIH0KKyAgICAgY2FzZSBQ UEtfUHJpbnRlck5hbWU6CitAQCAtMjc3LDkgKzI3OSwxMiBAQCB2b2lkIFFDdXBzUHJpbnRFbmdp bmVQcml2YXRlOjpjaGFuZ2VQcmludGVyKGNvbnN0IFFTdHJpbmcgJm5ld1ByaW50ZXIpCisgICAg IG1fcHJpbnREZXZpY2Uuc3dhcChwcmludERldmljZSk7CisgICAgIHByaW50ZXJOYW1lID0gbV9w cmludERldmljZS5pZCgpOworIAorLSAgICAvLyBDaGVjayBpZiBuZXcgcHJpbnRlciBzdXBwb3J0 cyBjdXJyZW50IHNldHRpbmdzLCBvdGhlcndpc2UgdXMgZGVmYXVsdHMKKy0gICAgaWYgKGR1cGxl eCAhPSBRUHJpbnQ6OkR1cGxleEF1dG8gJiYgIW1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVwbGV4 TW9kZXMoKS5jb250YWlucyhkdXBsZXgpKQorKyAgICAvLyBpbiBjYXNlIGEgZHVwbGV4IHZhbHVl IHdhcyBleHBsaWNpdGx5IHNldCwgY2hlY2sgaWYgbmV3IHByaW50ZXIgc3VwcG9ydHMgY3VycmVu dCB2YWx1ZSwKKysgICAgLy8gb3RoZXJ3aXNlIHVzZSBkZXZpY2UgZGVmYXVsdAorKyAgICBpZiAo IWR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgfHwgIW1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVw bGV4TW9kZXMoKS5jb250YWlucyhkdXBsZXgpKSB7CisgICAgICAgICBkdXBsZXggPSBtX3ByaW50 RGV2aWNlLmRlZmF1bHREdXBsZXhNb2RlKCk7CisrICAgICAgICBkdXBsZXhSZXF1ZXN0ZWRFeHBs aWNpdGx5ID0gZmFsc2U7CisrICAgIH0KKyAgICAgUVByaW50OjpDb2xvck1vZGUgY29sb3JNb2Rl ID0gZ3JheXNjYWxlID8gUVByaW50OjpHcmF5U2NhbGUgOiBRUHJpbnQ6OkNvbG9yOworICAgICBp ZiAoIW1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkQ29sb3JNb2RlcygpLmNvbnRhaW5zKGNvbG9yTW9k ZSkpCisgICAgICAgICBncmF5c2NhbGUgPSBtX3ByaW50RGV2aWNlLmRlZmF1bHRDb2xvck1vZGUo KSA9PSBRUHJpbnQ6OkdyYXlTY2FsZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9wLmggYi9xdGJhc2Uvc3JjL3BsdWdp bnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9wLmgKK2luZGV4IGMwMjFiMGM2 NDMuLjhmODFmZTQ3OGQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBw b3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w cmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lX3AuaAorQEAgLTEwMCw2ICsxMDAsNyBA QCBwcml2YXRlOgorICAgICBRU3RyaW5nTGlzdCBjdXBzT3B0aW9uczsKKyAgICAgUVN0cmluZyBj dXBzVGVtcEZpbGU7CisgICAgIFFQcmludDo6RHVwbGV4TW9kZSBkdXBsZXg7CisrICAgIGJvb2wg ZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSA9IGZhbHNlOworIH07CisgCisgUVRfRU5EX05BTUVT UEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2liYXNlL3Fz cWxfaWJhc2UuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9p YmFzZS5jcHAKK2luZGV4IDY3ZTcxNTRmYTYuLjQwODc2MTUyZTUgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcAorKysrIGIvcXRi YXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAKK0BAIC04MTcs NyArODE3LDcgQEAgYm9vbCBRSUJhc2VSZXN1bHRQcml2YXRlOjp3cml0ZUFycmF5KGludCBjb2x1 bW4sIGNvbnN0IFFMaXN0PFFWYXJpYW50PiAmbGlzdCkKKyAgICAgYmEucmVzaXplKGludChidWZM ZW4pKTsKKyAKKyAgICAgaWYgKGxpc3Quc2l6ZSgpID4gYXJyYXlTaXplKSB7CistICAgICAgICBl cnJvciA9IFFMYXRpbjFTdHJpbmcoIkFycmF5IHNpemUgbWlzc21hdGNoOiBzaXplIG9mICUxIGlz ICUyLCBzaXplIG9mIHByb3ZpZGVkIGxpc3QgaXMgJTMiKTsKKysgICAgICAgIGVycm9yID0gUUxh dGluMVN0cmluZygiQXJyYXkgc2l6ZSBtaXNtYXRjaDogc2l6ZSBvZiAlMSBpcyAlMiwgc2l6ZSBv ZiBwcm92aWRlZCBsaXN0IGlzICUzIik7CisgICAgICAgICBlcnJvciA9IGVycm9yLmFyZyhRTGF0 aW4xU3RyaW5nKHNxbG5hbWUpKS5hcmcoYXJyYXlTaXplKS5hcmcobGlzdC5zaXplKCkpOworICAg ICAgICAgcS0+c2V0TGFzdEVycm9yKFFTcWxFcnJvcihlcnJvciwgUUxhdGluMVN0cmluZygiIiks IFFTcWxFcnJvcjo6U3RhdGVtZW50RXJyb3IpKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3FsX215c3Fs LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3Bw CitpbmRleCA3Y2EwNTVlZWEyLi42YmM5ZDQ2NzU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9w bHVnaW5zL3NxbGRyaXZlcnMvbXlzcWwvcXNxbF9teXNxbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMv cGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3BwCitAQCAtMjIzLDcgKzIyMyw3 IEBAIHB1YmxpYzoKKyAgICAgc3RydWN0IFFNeUZpZWxkCisgICAgIHsKKyAgICAgICAgIGNoYXIg Km91dEZpZWxkID0gbnVsbHB0cjsKKy0gICAgICAgIE1ZU1FMX0ZJRUxEICpteUZpZWxkID0gbnVs bHB0cjsKKysgICAgICAgIGNvbnN0IE1ZU1FMX0ZJRUxEICpteUZpZWxkID0gbnVsbHB0cjsKKyAg ICAgICAgIFFNZXRhVHlwZTo6VHlwZSB0eXBlID0gUU1ldGFUeXBlOjpVbmtub3duVHlwZTsKKyAg ICAgICAgIG15X2Jvb2wgbnVsbEluZGljYXRvciA9IGZhbHNlOworICAgICAgICAgdWxvbmcgYnVm TGVuZ3RoID0gMHVsOworQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgYm9vbCBxSXNJbnRlZ2Vy KGludCB0KQorIHZvaWQgUU1ZU1FMUmVzdWx0UHJpdmF0ZTo6YmluZEJsb2JzKCkKKyB7CisgICAg IGludCBpOworLSAgICBNWVNRTF9GSUVMRCAqZmllbGRJbmZvOworKyAgICBjb25zdCBNWVNRTF9G SUVMRCAqZmllbGRJbmZvOworICAgICBNWVNRTF9CSU5EICpiaW5kOworIAorICAgICBmb3IoaSA9 IDA7IGkgPCBmaWVsZHMuY291bnQoKTsgKytpKSB7CitAQCAtMzc5LDcgKzM3OSw2IEBAIHZvaWQg UU1ZU1FMUmVzdWx0UHJpdmF0ZTo6YmluZEJsb2JzKCkKKyBib29sIFFNWVNRTFJlc3VsdFByaXZh dGU6OmJpbmRJblZhbHVlcygpCisgeworICAgICBNWVNRTF9CSU5EICpiaW5kOworLSAgICBjaGFy ICpmaWVsZDsKKyAgICAgaW50IGkgPSAwOworIAorICAgICBpZiAoIW1ldGEpCitAQCAtMzkyLDM1 ICszOTEsMzQgQEAgYm9vbCBRTVlTUUxSZXN1bHRQcml2YXRlOjpiaW5kSW5WYWx1ZXMoKQorICAg ICBpbkJpbmRzID0gbmV3IE1ZU1FMX0JJTkRbZmllbGRzLnNpemUoKV07CisgICAgIG1lbXNldChp bkJpbmRzLCAwLCBmaWVsZHMuc2l6ZSgpICogc2l6ZW9mKE1ZU1FMX0JJTkQpKTsKKyAKKy0gICAg TVlTUUxfRklFTEQgKmZpZWxkSW5mbzsKKysgICAgY29uc3QgTVlTUUxfRklFTEQgKmZpZWxkSW5m bzsKKyAKKyAgICAgd2hpbGUoKGZpZWxkSW5mbyA9IG15c3FsX2ZldGNoX2ZpZWxkKG1ldGEpKSkg eworKyAgICAgICAgYmluZCA9ICZpbkJpbmRzW2ldOworKworICAgICAgICAgUU15RmllbGQgJmYg PSBmaWVsZHNbaV07CisgICAgICAgICBmLm15RmllbGQgPSBmaWVsZEluZm87CistCisrICAgICAg ICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSBmaWVsZEluZm8tPmxlbmd0aCAr IDE7CisrICAgICAgICBiaW5kLT5idWZmZXJfdHlwZSA9IGZpZWxkSW5mby0+dHlwZTsKKyAgICAg ICAgIGYudHlwZSA9IHFEZWNvZGVNWVNRTFR5cGUoZmllbGRJbmZvLT50eXBlLCBmaWVsZEluZm8t PmZsYWdzKTsKKyAgICAgICAgIGlmIChxSXNCbG9iKGZpZWxkSW5mby0+dHlwZSkpIHsKKyAgICAg ICAgICAgICAvLyB0aGUgc2l6ZSBvZiBhIGJsb2ItZmllbGQgaXMgYXZhaWxhYmxlIGFzIHNvb24g YXMgd2UgY2FsbAorICAgICAgICAgICAgIC8vIG15c3FsX3N0bXRfc3RvcmVfcmVzdWx0KCkKKyAg ICAgICAgICAgICAvLyBhZnRlciBteXNxbF9zdG10X2V4ZWMoKSBpbiBRTVlTUUxSZXN1bHQ6OmV4 ZWMoKQorLSAgICAgICAgICAgIGZpZWxkSW5mby0+bGVuZ3RoID0gMDsKKysgICAgICAgICAgICBi aW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSAwOworICAgICAgICAgICAgIGhhc0Js b2JzID0gdHJ1ZTsKKyAgICAgICAgIH0gZWxzZSBpZiAocUlzSW50ZWdlcihmLnR5cGUpKSB7Cist ICAgICAgICAgICAgZmllbGRJbmZvLT5sZW5ndGggPSA4OworKyAgICAgICAgICAgIGJpbmQtPmJ1 ZmZlcl9sZW5ndGggPSBmLmJ1Zkxlbmd0aCA9IDg7CisgICAgICAgICB9IGVsc2UgeworLSAgICAg ICAgICAgIGZpZWxkSW5mby0+dHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworKyAgICAgICAgICAg IGJpbmQtPmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisgICAgICAgICB9CistICAg ICAgICBiaW5kID0gJmluQmluZHNbaV07CistICAgICAgICBmaWVsZCA9IG5ldyBjaGFyW2ZpZWxk SW5mby0+bGVuZ3RoICsgMV07CistICAgICAgICBtZW1zZXQoZmllbGQsIDAsIGZpZWxkSW5mby0+ bGVuZ3RoICsgMSk7CisgCistICAgICAgICBiaW5kLT5idWZmZXJfdHlwZSA9IGZpZWxkSW5mby0+ dHlwZTsKKy0gICAgICAgIGJpbmQtPmJ1ZmZlciA9IGZpZWxkOworLSAgICAgICAgYmluZC0+YnVm ZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3RoID0gZmllbGRJbmZvLT5sZW5ndGggKyAxOworICAgICAg ICAgYmluZC0+aXNfbnVsbCA9ICZmLm51bGxJbmRpY2F0b3I7CisgICAgICAgICBiaW5kLT5sZW5n dGggPSAmZi5idWZMZW5ndGg7CisgICAgICAgICBiaW5kLT5pc191bnNpZ25lZCA9IGZpZWxkSW5m by0+ZmxhZ3MgJiBVTlNJR05FRF9GTEFHID8gMSA6IDA7CistICAgICAgICBmLm91dEZpZWxkPWZp ZWxkOworKworKyAgICAgICAgY2hhciAqZmllbGQgPSBuZXcgY2hhcltiaW5kLT5idWZmZXJfbGVu Z3RoICsgMV17fTsKKysgICAgICAgIGJpbmQtPmJ1ZmZlciA9IGYub3V0RmllbGQgPSBmaWVsZDsK KyAKKyAgICAgICAgICsraTsKKyAgICAgfQorQEAgLTEzNjksMjAgKzEzNjcsMjAgQEAgYm9vbCBR TVlTUUxEcml2ZXI6Om9wZW4oY29uc3QgUVN0cmluZyYgZGIsCisgICAgIH0KKyAKKyAjaWYgTVlT UUxfVkVSU0lPTl9JRCA+PSA1MDAwNworLSAgICBpZiAobXlzcWxfZ2V0X2NsaWVudF92ZXJzaW9u KCkgPj0gNTA1MDMgJiYgbXlzcWxfZ2V0X3NlcnZlcl92ZXJzaW9uKGQtPm15c3FsKSA+PSA1MDUw MykgeworLSAgICAgICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRpb24gdG8gYmUgdXRmOG1iNCAo b25seSB1dGY4bWI0IHN1cHBvcnRzIDQtYnl0ZSBjaGFyYWN0ZXJzKQorLSAgICAgICAgbXlzcWxf c2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4bWI0Iik7CisrICAgIC8vIGZvcmNlIHRo ZSBjb21tdW5pY2F0aW9uIHRvIGJlIHV0ZjhtYjQgKG9ubHkgdXRmOG1iNCBzdXBwb3J0cyA0LWJ5 dGUgY2hhcmFjdGVycykKKysgICAgaWYgKG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3Fs LCAidXRmOG1iNCIpKSB7CisrICAgICAgICAvLyB0aGlzIGZhaWxlZCwgdHJ5IGZvcmNpbmcgaXQg dG8gdXRmIChCTVAgb25seSkKKysgICAgICAgIGlmIChteXNxbF9zZXRfY2hhcmFjdGVyX3NldChk LT5teXNxbCwgInV0ZjgiKSkKKysgICAgICAgICAgICBxV2FybmluZygpIDw8ICJNeVNRTDogVW5h YmxlIHRvIHNldCB0aGUgY2xpZW50IGNoYXJhY3RlciBzZXQgdG8gdXRmOC4iOworICNpZiBRVF9D T05GSUcodGV4dGNvZGVjKQorLSAgICAgICAgZC0+dGMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck5h bWUoIlVURi04Iik7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgZC0+dGMgPSBjb2RlYyhk LT5teXNxbCk7CisgI2VuZGlmCistICAgIH0gZWxzZQorLSAgICB7CistICAgICAgICAvLyBmb3Jj ZSB0aGUgY29tbXVuaWNhdGlvbiB0byBiZSB1dGY4CistICAgICAgICBteXNxbF9zZXRfY2hhcmFj dGVyX3NldChkLT5teXNxbCwgInV0ZjgiKTsKKysgICAgfQorICNpZiBRVF9DT05GSUcodGV4dGNv ZGVjKQorLSAgICAgICAgZC0+dGMgPSBjb2RlYyhkLT5teXNxbCk7CisrICAgIGVsc2UKKysgICAg ICAgIGQtPnRjID0gUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lKCJVVEYtOCIpOworICNlbmRpZgor LSAgICB9CisgI2VuZGlmICAvLyBNWVNRTF9WRVJTSU9OX0lEID49IDUwMDA3CisgCisgICAgIGQt PnByZXBhcmVkUXVlcnlzRW5hYmxlZCA9IGNoZWNrUHJlcGFyZWRRdWVyaWVzKGQtPm15c3FsKTsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmlu dC0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVy LTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50LTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBv cnQvZGlhbG9ncy9pbWFnZXMvcHJpbnRlci0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludC0zMi5wbmcgYi9xdGJhc2Uvc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVyLTMyLnBuZworc2ltaWxhcml0eSBpbmRl eCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50 LTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnRl ci0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy92aWV3LXBhZ2Utc2lkZWQtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEw MCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdl LXNpZGVkLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv dmlldy1wYWdlcy1mYWNpbmctMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTMyLnBuZyBiL3F0YmFzZS9zcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTMyLnBuZworc2lt aWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0yNC5w bmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92 ZXJ2aWV3LTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0yNC5wbmcKK3JlbmFtZSB0 byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMjQu cG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv dmlldy1wYWdlLW11bHRpLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUK K3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW11 bHRpLTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmll dy1wYWdlcy1vdmVydmlldy0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTI0LnBuZworc2ltaWxh cml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3ZpZXctcGFnZS1vbmUtMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL2ltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTMyLnBuZyBiL3F0 YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTMy LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1vbmUtMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0zMi5wbmcKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0yNC5w bmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC1wYWdl LTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtcGFnZS0yNC5wbmcKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0zMi5wbmcgYi9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC1wYWdlLTMyLnBu Zworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtcGFnZS0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMjQucG5nIGIvcXRiYXNl L3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtd2lkdGgtMjQucG5nCitz aW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvZml0LXdpZHRoLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvem9vbS1maXQtd2lkdGgtMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRoLTMyLnBuZyBiL3F0YmFzZS9z cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTMyLnBuZworc2lt aWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL2ZpdC13aWR0aC0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcCBiL3F0YmFzZS9z cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcAoraW5kZXgg NzhlNWI4ZDFlZi4uMmEyODUxNjcxOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9xcGFnZXNldHVwZGlhbG9nX3VuaXguY3BwCitAQCAtNTMyLDYg KzUzMiw3IEBAIHZvaWQgUVBhZ2VTZXR1cFdpZGdldDo6dXBkYXRlV2lkZ2V0KCkKKyB2b2lkIFFQ YWdlU2V0dXBXaWRnZXQ6OnNldHVwUHJpbnRlcigpIGNvbnN0CisgeworICAgICBtX3ByaW50ZXIt PnNldFBhZ2VMYXlvdXQobV9wYWdlTGF5b3V0KTsKKysgICAgbV9wcmludGVyLT5zZXRQYWdlT3Jp ZW50YXRpb24obV9wYWdlTGF5b3V0Lm9yaWVudGF0aW9uKCkpOworICNpZiBRVF9DT05GSUcoY3Vw cykKKyAgICAgUUNVUFNTdXBwb3J0OjpQYWdlc1BlclNoZWV0IHBhZ2VzUGVyU2hlZXQgPSBxdmFy aWFudF9jYXN0PFFDVVBTU3VwcG9ydDo6UGFnZXNQZXJTaGVldD4obV91aS5wYWdlc1BlclNoZWV0 Q29tYm8tPmN1cnJlbnREYXRhKCkKKyApOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nLnFyYyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvcXByaW50ZGlhbG9nLnFyYworaW5kZXggNWE1NzliYWE1NS4uMTBiOGUxZDM0MSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9n LnFyYworKysrIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2cu cXJjCitAQCAtMSw5ICsxLDkgQEAKKyA8IURPQ1RZUEUgUkNDPjxSQ0MgdmVyc2lvbj0iMS4wIj4K KyA8cXJlc291cmNlIHByZWZpeD0iL3F0LXByb2plY3Qub3JnL2RpYWxvZ3MvcXByaW50cHJldmll d2RpYWxvZyI+CistPGZpbGU+aW1hZ2VzL2ZpdC1wYWdlLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5p bWFnZXMvZml0LXBhZ2UtMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy9maXQtd2lkdGgtMjQu cG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy9maXQtd2lkdGgtMzIucG5nPC9maWxlPgorKzxmaWxl PmltYWdlcy96b29tLWZpdC1wYWdlLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1m aXQtcGFnZS0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXdpZHRoLTI0LnBu ZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQtd2lkdGgtMzIucG5nPC9maWxlPgorIDxm aWxlPmltYWdlcy9nby1maXJzdC0yNC5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL2dvLWZpcnN0 LTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tbGFzdC0yNC5wbmc8L2ZpbGU+CitAQCAt MTgsMTQgKzE4LDE0IEBACisgPGZpbGU+aW1hZ2VzL2xheW91dC1wb3J0cmFpdC0zMi5wbmc8L2Zp bGU+CisgPGZpbGU+aW1hZ2VzL3BhZ2Utc2V0dXAtMjQucG5nPC9maWxlPgorIDxmaWxlPmltYWdl cy9wYWdlLXNldHVwLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvcHJpbnQtMjQucG5nPC9m aWxlPgorLTxmaWxlPmltYWdlcy9wcmludC0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3Zp ZXctcGFnZS1tdWx0aS0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1tdWx0 aS0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1vbmUtMjQucG5nPC9maWxl PgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utb25lLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFn ZXMvdmlldy1wYWdlLXNpZGVkLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdl LXNpZGVkLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvcHJpbnRlci0yNC5wbmc8L2ZpbGU+ CisrPGZpbGU+aW1hZ2VzL3ByaW50ZXItMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3 LXBhZ2VzLW92ZXJ2aWV3LTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1v dmVydmlldy0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTI0 LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMzIucG5nPC9maWxl PgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+ aW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvem9v bS1pbi0yNC5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3pvb20taW4tMzIucG5nPC9maWxlPgor IDxmaWxlPmltYWdlcy96b29tLW91dC0yNC5wbmc8L2ZpbGU+CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5peC5jcHAgYi9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcAoraW5kZXggYzVi ODQ1ZjRlYy4uNWE1YmExZDBhOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvcXByaW50ZGlhbG9nX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcAorQEAgLTcwMiwxMyArNzAyLDE0IEBA IHZvaWQgUVByaW50RGlhbG9nUHJpdmF0ZTo6c2VsZWN0UHJpbnRlcihjb25zdCBRUHJpbnRlcjo6 T3V0cHV0Rm9ybWF0IG91dHB1dEZvcm1hCisgICAgICAgICBlbHNlCisgICAgICAgICAgICAgb3B0 aW9ucy5ncmF5c2NhbGUtPnNldENoZWNrZWQodHJ1ZSk7CisgCistICAgICAgICAvLyBrZWVwIGR1 cGxleCB2YWx1ZSBleHBsaWNpdGx5IHNldCBieSB1c2VyLCBpZiBhbnksIGFuZCBzZWxlY3RlZCBw cmludGVyIHN1cHBvcnRzIGl0OworLSAgICAgICAgLy8gdXNlIGRldmljZSBkZWZhdWx0IG90aGVy d2lzZQorKyAgICAgICAgLy8gZHVwbGV4IHByaW9yaXRpZXMgdG8gYmUgYXMgZm9sbG93czoKKysg ICAgICAgIC8vIDEpIGEgdXNlci1zZWxlY3RlZCBkdXBsZXggdmFsdWUgaW4gdGhlIGRpYWxvZyBo YXMgaGlnaGVzdCBwcm9yaXR5CisrICAgICAgICAvLyAyKSBkdXBsZXggdmFsdWUgc2V0IGluIHRo ZSBRUHJpbnRlcgorICAgICAgICAgUVByaW50OjpEdXBsZXhNb2RlIGR1cGxleDsKKyAgICAgICAg IGlmIChleHBsaWNpdER1cGxleE1vZGUgIT0gUVByaW50OjpEdXBsZXhBdXRvICYmIHN1cHBvcnRl ZER1cGxleE1vZGUuY29udGFpbnMoZXhwbGljaXREdXBsZXhNb2RlKSkKKyAgICAgICAgICAgICBk dXBsZXggPSBleHBsaWNpdER1cGxleE1vZGU7CisgICAgICAgICBlbHNlCistICAgICAgICAgICAg ZHVwbGV4ID0gdG9wLT5kLT5tX2N1cnJlbnRQcmludERldmljZS5kZWZhdWx0RHVwbGV4TW9kZSgp OworKyAgICAgICAgICAgIGR1cGxleCA9IHN0YXRpY19jYXN0PFFQcmludDo6RHVwbGV4TW9kZT4o cC0+ZHVwbGV4KCkpOworICAgICAgICAgc3dpdGNoIChkdXBsZXgpIHsKKyAgICAgICAgIGNhc2Ug UVByaW50OjpEdXBsZXhOb25lOgorICAgICAgICAgICAgIG9wdGlvbnMubm9EdXBsZXgtPnNldENo ZWNrZWQodHJ1ZSk7IGJyZWFrOworQEAgLTEyNDIsMTAgKzEyNDMsMTAgQEAgdm9pZCBRVW5peFBy aW50V2lkZ2V0UHJpdmF0ZTo6X3FfcHJpbnRlckNoYW5nZWQoaW50IGluZGV4KQorICAgICAgICAg ICAgIFFTdHJpbmcgZmlsZW5hbWUgPSB3aWRnZXQuZmlsZW5hbWUtPnRleHQoKTsKKyAgICAgICAg ICAgICB3aWRnZXQuZmlsZW5hbWUtPnNldFRleHQoZmlsZW5hbWUpOworICAgICAgICAgICAgIHdp ZGdldC5sT3V0cHV0LT5zZXRFbmFibGVkKHRydWUpOworLSAgICAgICAgICAgIGlmIChvcHRpb25z UGFuZSkKKy0gICAgICAgICAgICAgICAgb3B0aW9uc1BhbmUtPnNlbGVjdFByaW50ZXIoUVByaW50 ZXI6OlBkZkZvcm1hdCk7CisgICAgICAgICAgICAgcHJpbnRlci0+c2V0T3V0cHV0Rm9ybWF0KFFQ cmludGVyOjpQZGZGb3JtYXQpOworICAgICAgICAgICAgIG1fY3VycmVudFByaW50RGV2aWNlID0g UVByaW50RGV2aWNlKCk7CisrICAgICAgICAgICAgaWYgKG9wdGlvbnNQYW5lKQorKyAgICAgICAg ICAgICAgICBvcHRpb25zUGFuZS0+c2VsZWN0UHJpbnRlcihRUHJpbnRlcjo6UGRmRm9ybWF0KTsK KyAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICB9CisgICAgIH0KK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3BwIGIv cXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nLmNwcAor aW5kZXggMzk1NzVkNWY1Ny4uMjNiN2U4OTUzOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAKKysrKyBiL3F0YmFzZS9z cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAKK0BAIC0zNTIs NyArMzUyLDcgQEAgdm9pZCBRUHJpbnRQcmV2aWV3RGlhbG9nUHJpdmF0ZTo6aW5pdChRUHJpbnRl ciAqX3ByaW50ZXIpCisgc3RhdGljIGlubGluZSB2b2lkIHF0X3NldHVwQWN0aW9uSWNvbihRQWN0 aW9uICphY3Rpb24sIFFMYXRpbjFTdHJpbmcgbmFtZSkKKyB7CisgICAgIFFMYXRpbjFTdHJpbmcg aW1hZ2VQcmVmaXgoIjovcXQtcHJvamVjdC5vcmcvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9n L2ltYWdlcy8iKTsKKy0gICAgUUljb24gaWNvbjsKKysgICAgUUljb24gaWNvbiA9IFFJY29uOjpm cm9tVGhlbWUobmFtZSk7CisgICAgIGljb24uYWRkRmlsZShpbWFnZVByZWZpeCArIG5hbWUgKyBR TGF0aW4xU3RyaW5nKCItMjQucG5nIiksIFFTaXplKDI0LCAyNCkpOworICAgICBpY29uLmFkZEZp bGUoaW1hZ2VQcmVmaXggKyBuYW1lICsgUUxhdGluMVN0cmluZygiLTMyLnBuZyIpLCBRU2l6ZSgz MiwgMzIpKTsKKyAgICAgYWN0aW9uLT5zZXRJY29uKGljb24pOworQEAgLTM4Myw4ICszODMsOCBA QCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQcml2YXRlOjpzZXR1cEFjdGlvbnMoKQorICAgICBm aXRQYWdlQWN0aW9uLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFTdHJpbmcoImZpdFBhZ2VBY3Rpb24i KSk7CisgICAgIGZpdFdpZHRoQWN0aW9uLT5zZXRDaGVja2FibGUodHJ1ZSk7CisgICAgIGZpdFBh Z2VBY3Rpb24tPnNldENoZWNrYWJsZSh0cnVlKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKGZp dFdpZHRoQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJmaXQtd2lkdGgiKSk7CistICAgIHF0X3NldHVw QWN0aW9uSWNvbihmaXRQYWdlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJmaXQtcGFnZSIpKTsKKysg ICAgcXRfc2V0dXBBY3Rpb25JY29uKGZpdFdpZHRoQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ6b29t LWZpdC13aWR0aCIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKGZpdFBhZ2VBY3Rpb24sIFFM YXRpbjFTdHJpbmcoInpvb20tZml0LXBhZ2UiKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QoZml0 R3JvdXAsIFNJR05BTCh0cmlnZ2VyZWQoUUFjdGlvbiopKSwgcSwgU0xPVChfcV9maXQoUUFjdGlv biopKSk7CisgCisgICAgIC8vIFpvb20KK0BAIC00MTAsOSArNDEwLDkgQEAgdm9pZCBRUHJpbnRQ cmV2aWV3RGlhbG9nUHJpdmF0ZTo6c2V0dXBBY3Rpb25zKCkKKyAgICAgc2luZ2xlTW9kZUFjdGlv biA9IG1vZGVHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVBy aW50UHJldmlld0RpYWxvZyIsICJTaG93IHNpbmdsZSBwYWdlIikpOworICAgICBmYWNpbmdNb2Rl QWN0aW9uID0gbW9kZUdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl KCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlNob3cgZmFjaW5nIHBhZ2VzIikpOworICAgICBvdmVy dmlld01vZGVBY3Rpb24gPSBtb2RlR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0 cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiU2hvdyBvdmVydmlldyBvZiBhbGwgcGFn ZXMiKSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihzaW5nbGVNb2RlQWN0aW9uLCBRTGF0aW4x U3RyaW5nKCJ2aWV3LXBhZ2Utb25lIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oZmFjaW5n TW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlLXNpZGVkIikpOworLSAgICBxdF9z ZXR1cEFjdGlvbkljb24ob3ZlcnZpZXdNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBh Z2UtbXVsdGkiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihzaW5nbGVNb2RlQWN0aW9uLCBR TGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2VzLXNpbmdsZSIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25J Y29uKGZhY2luZ01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZXMtZmFjaW5nIikp OworKyAgICBxdF9zZXR1cEFjdGlvbkljb24ob3ZlcnZpZXdNb2RlQWN0aW9uLCBRTGF0aW4xU3Ry aW5nKCJ2aWV3LXBhZ2VzLW92ZXJ2aWV3IikpOworICAgICBzaW5nbGVNb2RlQWN0aW9uLT5zZXRP YmplY3ROYW1lKFFMYXRpbjFTdHJpbmcoInNpbmdsZU1vZGVBY3Rpb24iKSk7CisgICAgIGZhY2lu Z01vZGVBY3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0cmluZygiZmFjaW5nTW9kZUFjdGlv biIpKTsKKyAgICAgb3ZlcnZpZXdNb2RlQWN0aW9uLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFTdHJp bmcoIm92ZXJ2aWV3TW9kZUFjdGlvbiIpKTsKK0BAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBRUHJp bnRQcmV2aWV3RGlhbG9nUHJpdmF0ZTo6c2V0dXBBY3Rpb25zKCkKKyAgICAgcHJpbnRlckdyb3Vw ID0gbmV3IFFBY3Rpb25Hcm91cChxKTsKKyAgICAgcHJpbnRBY3Rpb24gPSBwcmludGVyR3JvdXAt PmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFs b2ciLCAiUHJpbnQiKSk7CisgICAgIHBhZ2VTZXR1cEFjdGlvbiA9IHByaW50ZXJHcm91cC0+YWRk QWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIs ICJQYWdlIHNldHVwIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24ocHJpbnRBY3Rpb24sIFFM YXRpbjFTdHJpbmcoInByaW50IikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24ocHJpbnRBY3Rp b24sIFFMYXRpbjFTdHJpbmcoInByaW50ZXIiKSk7CisgICAgIHF0X3NldHVwQWN0aW9uSWNvbihw YWdlU2V0dXBBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInBhZ2Utc2V0dXAiKSk7CisgICAgIFFPYmpl Y3Q6OmNvbm5lY3QocHJpbnRBY3Rpb24sIFNJR05BTCh0cmlnZ2VyZWQoYm9vbCkpLCBxLCBTTE9U KF9xX3ByaW50KCkpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChwYWdlU2V0dXBBY3Rpb24sIFNJ R05BTCh0cmlnZ2VyZWQoYm9vbCkpLCBxLCBTTE9UKF9xX3BhZ2VTZXR1cCgpKSk7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAgYi9xdGJhc2Uvc3JjL3Nx bC9rZXJuZWwvcXNxbHF1ZXJ5LmNwcAoraW5kZXggMzJjNjE2NmM3OS4uNjBhZmVmMTBjMyAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVlcnkuY3BwCisrKysgYi9xdGJh c2Uvc3JjL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5LmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFu eSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBRdCBDb21wYW55IEx0ZC4KKyAqKiBD b250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUg aXMgcGFydCBvZiB0aGUgUXRTcWwgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTM3Nyw2 ICszNzcsMTAgQEAgYm9vbCBRU3FsUXVlcnk6OmV4ZWMoY29uc3QgUVN0cmluZyYgcXVlcnkpCisg ICAgIFFFbGFwc2VkVGltZXIgdDsKKyAgICAgdC5zdGFydCgpOworICNlbmRpZgorKyAgICBpZiAo IWRyaXZlcigpKSB7CisrICAgICAgICBxV2FybmluZygiUVNxbFF1ZXJ5OjpleGVjOiBjYWxsZWQg YmVmb3JlIGRyaXZlciBoYXMgYmVlbiBzZXQgdXAiKTsKKysgICAgICAgIHJldHVybiBmYWxzZTsK KysgICAgfQorICAgICBpZiAoZC0+cmVmLmxvYWRSZWxheGVkKCkgIT0gMSkgeworICAgICAgICAg Ym9vbCBmbyA9IGlzRm9yd2FyZE9ubHkoKTsKKyAgICAgICAgICp0aGlzID0gUVNxbFF1ZXJ5KGRy aXZlcigpLT5jcmVhdGVSZXN1bHQoKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy90ZXN0bGli L3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3Ry YWN0aXRlbW1vZGVsdGVzdGVyLmNwcAoraW5kZXggOGVmYjljNTNkNC4uY2UwNjJmNjZkNyAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAor QEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIFFBYnN0cmFjdEl0ZW1Nb2RlbFRlc3RlclByaXZhdGU6 OnBhcmVudCgpCisgCisgICAgIC8vIENvbW1vbiBlcnJvciB0ZXN0ICMyLCBtYWtlIHN1cmUgdGhh dCBhIHNlY29uZCBsZXZlbCBpbmRleCBoYXMgYSBwYXJlbnQKKyAgICAgLy8gdGhhdCBpcyB0aGUg Zmlyc3QgbGV2ZWwgaW5kZXguCistICAgIGlmIChtb2RlbC0+cm93Q291bnQodG9wSW5kZXgpID4g MCkgeworKyAgICBpZiAobW9kZWwtPnJvd0NvdW50KHRvcEluZGV4KSA+IDAgJiYgbW9kZWwtPmNv bHVtbkNvdW50KHRvcEluZGV4KSA+IDApIHsKKyAgICAgICAgIFFNb2RlbEluZGV4IGNoaWxkSW5k ZXggPSBtb2RlbC0+aW5kZXgoMCwgMCwgdG9wSW5kZXgpOworICAgICAgICAgTU9ERUxURVNURVJf VkVSSUZZKGNoaWxkSW5kZXguaXNWYWxpZCgpKTsKKyAgICAgICAgIE1PREVMVEVTVEVSX0NPTVBB UkUobW9kZWwtPnBhcmVudChjaGlsZEluZGV4KSwgdG9wSW5kZXgpOworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwIGIvcXRiYXNlL3NyYy90ZXN0bGliL3Fhc2Np aWtleS5jcHAKK2luZGV4IDlhMzA4ZGEyYmMuLjkzNDk4YjI1NmYgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcAorKysrIGIvcXRiYXNlL3NyYy90ZXN0bGliL3Fh c2NpaWtleS5jcHAKK0BAIC00OTgsNiArNDk4LDExIEBAIGNoYXIgUVRlc3Q6OmtleVRvQXNjaWko UXQ6OktleSBrZXkpCisgICAgIGNhc2UgUXQ6OktleV9MYXVuY2hFIDogcmV0dXJuIDA7IC8vID0g MHgxMGIwLAorICAgICBjYXNlIFF0OjpLZXlfTGF1bmNoRiA6IHJldHVybiAwOyAvLyA9IDB4MTBi MSwKKyAKKysgICAgLy8gS2V5cGFkIG5hdmlnYXRpb24ga2V5cworKyAgICBjYXNlIFF0OjpLZXlf U2VsZWN0IDogcmV0dXJuIDA7IC8vID0gMHgwMTAxMDAwMAorKyAgICBjYXNlIFF0OjpLZXlfWWVz IDogcmV0dXJuIDA7IC8vID0gMHgwMTAxMDAwMQorKyAgICBjYXNlIFF0OjpLZXlfTm8gOiByZXR1 cm4gMDsgLy8gPSAweDAxMDEwMDAyCisrCisgICAgIGRlZmF1bHQ6IFFURVNUX0FTU0VSVChmYWxz ZSk7IHJldHVybiAwOworICAgICB9CisgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvdGVzdGxp Yi9xdGVzdHJlc3VsdC5jcHAgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwCitp bmRleCA4ODAyOGFhYzZlLi4yZTg5OTMwNzc2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy90ZXN0 bGliL3F0ZXN0cmVzdWx0LmNwcAorKysrIGIvcXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVzdWx0 LmNwcAorQEAgLTI1MSw3ICsyNTEsOCBAQCBib29sIFFUZXN0UmVzdWx0Ojp2ZXJpZnkoYm9vbCBz dGF0ZW1lbnQsIGNvbnN0IGNoYXIgKnN0YXRlbWVudFN0ciwKKyB7CisgICAgIFFURVNUX0FTU0VS VChzdGF0ZW1lbnRTdHIpOworIAorLSAgICBjaGFyIG1zZ1sxMDI0XSA9IHsnXDAnfTsKKysgICAg Y2hhciBtc2dbMTAyNF07CisrICAgIG1zZ1swXSA9ICdcMCc7CisgCisgICAgIGlmIChRVGVzdExv Zzo6dmVyYm9zZUxldmVsKCkgPj0gMikgeworICAgICAgICAgcXNucHJpbnRmKG1zZywgMTAyNCwg IlFWRVJJRlkoJXMpIiwgc3RhdGVtZW50U3RyKTsKK0BAIC0zMDksNyArMzEwLDggQEAgc3RhdGlj IGJvb2wgY29tcGFyZUhlbHBlcihib29sIHN1Y2Nlc3MsIGNvbnN0IGNoYXIgKmZhaWx1cmVNc2cs CisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhhc1ZhbHVlcyA9IHRydWUpCisgewor ICAgICBjb25zdCBzaXplX3QgbWF4TXNnTGVuID0gMTAyNDsKKy0gICAgY2hhciBtc2dbbWF4TXNn TGVuXSA9IHsnXDAnfTsKKysgICAgY2hhciBtc2dbbWF4TXNnTGVuXTsKKysgICAgbXNnWzBdID0g J1wwJzsKKyAKKyAgICAgUVRFU1RfQVNTRVJUKGV4cGVjdGVkKTsKKyAgICAgUVRFU1RfQVNTRVJU KGFjdHVhbCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9y ZGlhbG9nLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5jcHAK K2luZGV4IDQyNDc3MzEyNzUuLmNiMzI1YmU4NWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dp ZGdldHMvZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMv ZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwCitAQCAtNzgsNyArNzgsMTAgQEAKKyAjaW5jbHVkZSAi cXdpbmRvdy5oIgorIAorICNpbmNsdWRlICJwcml2YXRlL3FkaWFsb2dfcC5oIgorKyNpbmNsdWRl ICJwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmgiCisgCisrI2luY2x1ZGUgPHFwYS9xcGxhdGZv cm1zZXJ2aWNlcy5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtaW50ZWdyYXRpb24uaD4KKyAj aW5jbHVkZSA8YWxnb3JpdGhtPgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorQEAgLTE2MTEsNiAr MTYxNCwyMCBAQCB2b2lkIFFDb2xvckRpYWxvZ1ByaXZhdGU6Ol9xX25ld1N0YW5kYXJkKGludCBy LCBpbnQgYykKKyB2b2lkIFFDb2xvckRpYWxvZ1ByaXZhdGU6Ol9xX3BpY2tTY3JlZW5Db2xvcigp CisgeworICAgICBRX1EoUUNvbG9yRGlhbG9nKTsKKysKKysgICAgYXV0byAqcGxhdGZvcm1TZXJ2 aWNlcyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+c2Vy dmljZXMoKTsKKysgICAgaWYgKHBsYXRmb3JtU2VydmljZXMtPmhhc0NhcGFiaWxpdHkoUVBsYXRm b3JtU2VydmljZXM6OkNhcGFiaWxpdHk6OkNvbG9yUGlja2luZykpIHsKKysgICAgICAgIGlmIChh dXRvICpjb2xvclBpY2tlciA9IHBsYXRmb3JtU2VydmljZXMtPmNvbG9yUGlja2VyKHEtPndpbmRv d0hhbmRsZSgpKSkgeworKyAgICAgICAgICAgIHEtPmNvbm5lY3QoY29sb3JQaWNrZXIsICZRUGxh dGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXI6OmNvbG9yUGlja2VkLCBxLAorKyAgICAgICAgICAgICAg ICAgICAgICAgW3EsIGNvbG9yUGlja2VyXShjb25zdCBRQ29sb3IgJmNvbG9yKSB7CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29sb3JQaWNrZXItPmRlbGV0ZUxhdGVyKCk7CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgcS0+c2V0Q3VycmVudENvbG9yKGNvbG9yKTsKKysgICAgICAg ICAgICAgICAgICAgICAgIH0pOworKyAgICAgICAgICAgIGNvbG9yUGlja2VyLT5waWNrQ29sb3Io KTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrICAgIH0KKysKKyAgICAgaWYg KCFjb2xvclBpY2tpbmdFdmVudEZpbHRlcikKKyAgICAgICAgIGNvbG9yUGlja2luZ0V2ZW50Rmls dGVyID0gbmV3IFFDb2xvclBpY2tpbmdFdmVudEZpbHRlcih0aGlzLCBxKTsKKyAgICAgcS0+aW5z dGFsbEV2ZW50RmlsdGVyKGNvbG9yUGlja2luZ0V2ZW50RmlsdGVyKTsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAgYi9x dGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAKK2lu ZGV4IGUxMjA4MTdlZGMuLjhlYTM2YjU0MjcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdl dHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMv d2lkZ2V0cy9pdGVtdmlld3MvcWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcAorQEAgLTQwMCwxMiAr NDAwLDcgQEAgYm9vbCBRQWJzdHJhY3RJdGVtRGVsZWdhdGU6OmhlbHBFdmVudChRSGVscEV2ZW50 ICpldmVudCwKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcgdG9vbHRpcCA9IGluZGV4LmlzVmFsaWQo KSA/CisgICAgICAgICAgICAgICBkLT50ZXh0Rm9yUm9sZShRdDo6VG9vbFRpcFJvbGUsIGluZGV4 LmRhdGEoUXQ6OlRvb2xUaXBSb2xlKSwgb3B0aW9uLmxvY2FsZSwgcHJlY2lzaW9uKSA6CisgICAg ICAgICAgICAgICBRU3RyaW5nKCk7CistICAgICAgICBRUmVjdCByZWN0OworLSAgICAgICAgaWYg KGluZGV4LmlzVmFsaWQoKSkgeworLSAgICAgICAgICAgIGNvbnN0IFFSZWN0IHIgPSB2aWV3LT52 aXN1YWxSZWN0KGluZGV4KTsKKy0gICAgICAgICAgICByZWN0ID0gUVJlY3Qodmlldy0+bWFwVG9H bG9iYWwoci50b3BMZWZ0KCkpLCByLnNpemUoKSk7CistICAgICAgICB9CistICAgICAgICBRVG9v bFRpcDo6c2hvd1RleHQoaGUtPmdsb2JhbFBvcygpLCB0b29sdGlwLCB2aWV3LCByZWN0KTsKKysg ICAgICAgIFFUb29sVGlwOjpzaG93VGV4dChoZS0+Z2xvYmFsUG9zKCksIHRvb2x0aXAsIHZpZXct PnZpZXdwb3J0KCksIG9wdGlvbi5yZWN0KTsKKyAgICAgICAgIGV2ZW50LT5zZXRBY2NlcHRlZCgh dG9vbHRpcC5pc0VtcHR5KCkpOworICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xbGlzdHZpZXcuY3BwIGIvcXRiYXNl L3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xbGlzdHZpZXcuY3BwCitpbmRleCAyYjM0NDc2NjQyLi5l ZWJmYWEwMzBlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xbGlz dHZpZXcuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0dmlldy5j cHAKK0BAIC0zMzg2LDYgKzMzODYsNyBAQCB2b2lkIFFJY29uTW9kZVZpZXdCYXNlOjp1cGRhdGVD b250ZW50c1NpemUoKQorICovCisgdm9pZCBRTGlzdFZpZXc6OmN1cnJlbnRDaGFuZ2VkKGNvbnN0 IFFNb2RlbEluZGV4ICZjdXJyZW50LCBjb25zdCBRTW9kZWxJbmRleCAmcHJldmlvdXMpCisgewor KyAgICBRQWJzdHJhY3RJdGVtVmlldzo6Y3VycmVudENoYW5nZWQoY3VycmVudCwgcHJldmlvdXMp OworICNpZm5kZWYgUVRfTk9fQUNDRVNTSUJJTElUWQorICAgICBpZiAoUUFjY2Vzc2libGU6Omlz QWN0aXZlKCkpIHsKKyAgICAgICAgIGlmIChjdXJyZW50LmlzVmFsaWQoKSkgeworQEAgLTMzOTYs NyArMzM5Nyw2IEBAIHZvaWQgUUxpc3RWaWV3OjpjdXJyZW50Q2hhbmdlZChjb25zdCBRTW9kZWxJ bmRleCAmY3VycmVudCwgY29uc3QgUU1vZGVsSW5kZXggJnByCisgICAgICAgICB9CisgICAgIH0K KyAjZW5kaWYKKy0gICAgUUFic3RyYWN0SXRlbVZpZXc6OmN1cnJlbnRDaGFuZ2VkKGN1cnJlbnQs IHByZXZpb3VzKTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRz L2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3Mv cXRhYmxldmlldy5jcHAKK2luZGV4IDkzNGFjNTgxYjIuLmY3OWJiMjQyNDkgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwCisrKysgYi9xdGJh c2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwCitAQCAtMTAxMyw2ICsxMDEz LDcgQEAgdm9pZCBRVGFibGVWaWV3UHJpdmF0ZTo6ZHJhd0NlbGwoUVBhaW50ZXIgKnBhaW50ZXIs IGNvbnN0IFFTdHlsZU9wdGlvblZpZXdJdGVtICYKKyBpbnQgUVRhYmxlVmlld1ByaXZhdGU6Ondp ZHRoSGludEZvckluZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRleCwgaW50IGhpbnQsIGNvbnN0 IFFTdHlsZU9wdGlvblZpZXdJdGVtICZvcHRpb24pIGNvbnN0CisgeworICAgICBRX1EoY29uc3Qg UVRhYmxlVmlldyk7CisrICAgIGNvbnN0IGludCBvbGRIaW50ID0gaGludDsKKyAgICAgUVdpZGdl dCAqZWRpdG9yID0gZWRpdG9yRm9ySW5kZXgoaW5kZXgpLndpZGdldC5kYXRhKCk7CisgICAgIGlm IChlZGl0b3IgJiYgcGVyc2lzdGVudC5jb250YWlucyhlZGl0b3IpKSB7CisgICAgICAgICBoaW50 ID0gcU1heChoaW50LCBlZGl0b3ItPnNpemVIaW50KCkud2lkdGgoKSk7CitAQCAtMTAyMSw2ICsx MDIyLDE3IEBAIGludCBRVGFibGVWaWV3UHJpdmF0ZTo6d2lkdGhIaW50Rm9ySW5kZXgoY29uc3Qg UU1vZGVsSW5kZXggJmluZGV4LCBpbnQgaGludCwgY29uCisgICAgICAgICBoaW50ID0gcUJvdW5k KG1pbiwgaGludCwgbWF4KTsKKyAgICAgfQorICAgICBoaW50ID0gcU1heChoaW50LCBxLT5pdGVt RGVsZWdhdGUoaW5kZXgpLT5zaXplSGludChvcHRpb24sIGluZGV4KS53aWR0aCgpKTsKKysKKysg ICAgaWYgKGhhc1NwYW5zKCkpIHsKKysgICAgICAgIGF1dG8gc3BhbiA9IHNwYW5zLnNwYW5BdChp bmRleC5jb2x1bW4oKSwgaW5kZXgucm93KCkpOworKyAgICAgICAgaWYgKHNwYW4gJiYgc3Bhbi0+ bV9sZWZ0ID09IGluZGV4LmNvbHVtbigpICYmIHNwYW4tPm1fdG9wID09IGluZGV4LnJvdygpKSB7 CisrICAgICAgICAgICAgLy8gc3BhbnMgYXJlIHNjcmV3ZWQgdXAgd2hlbiBzZWN0aW9ucyBhcmUg bW92ZWQKKysgICAgICAgICAgICBjb25zdCBhdXRvIGxlZnQgPSBsb2dpY2FsQ29sdW1uKHNwYW4t Pm1fbGVmdCk7CisrICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gc3Bhbi0+d2lkdGgo KTsgKytpKQorKyAgICAgICAgICAgICAgIGhpbnQgLT0gcS0+Y29sdW1uV2lkdGgodmlzdWFsQ29s dW1uKGxlZnQgKyBpKSk7CisrICAgICAgICB9CisrICAgICAgICBoaW50ID0gc3RkOjptYXgoaGlu dCwgb2xkSGludCk7CisrICAgIH0KKyAgICAgcmV0dXJuIGhpbnQ7CisgfQorIAorQEAgLTEwNTMs NiArMTA2NSwxMSBAQCBpbnQgUVRhYmxlVmlld1ByaXZhdGU6OmhlaWdodEhpbnRGb3JJbmRleChj b25zdCBRTW9kZWxJbmRleCAmaW5kZXgsIGludCBoaW50LCBRUworICAgICAgICAgb3B0aW9uLnJl Y3Quc2V0SGVpZ2h0KGhlaWdodCk7CisgICAgICAgICBvcHRpb24ucmVjdC5zZXRYKHEtPmNvbHVt blZpZXdwb3J0UG9zaXRpb24oaW5kZXguY29sdW1uKCkpKTsKKyAgICAgICAgIG9wdGlvbi5yZWN0 LnNldFdpZHRoKHEtPmNvbHVtbldpZHRoKGluZGV4LmNvbHVtbigpKSk7CisrICAgICAgICBpZiAo aGFzU3BhbnMoKSkgeworKyAgICAgICAgICAgIGF1dG8gc3BhbiA9IHNwYW5zLnNwYW5BdChpbmRl eC5jb2x1bW4oKSwgaW5kZXgucm93KCkpOworKyAgICAgICAgICAgIGlmIChzcGFuICYmIHNwYW4t Pm1fbGVmdCA9PSBpbmRleC5jb2x1bW4oKSAmJiBzcGFuLT5tX3RvcCA9PSBpbmRleC5yb3coKSkK KysgICAgICAgICAgICAgICAgb3B0aW9uLnJlY3Quc2V0V2lkdGgoc3RkOjptYXgob3B0aW9uLnJl Y3Qud2lkdGgoKSwgdmlzdWFsU3BhblJlY3QoKnNwYW4pLndpZHRoKCkpKTsKKysgICAgICAgIH0K KyAgICAgICAgIC8vIDFweCBsZXNzIHNwYWNlIHdoZW4gZ3JpZCBpcyBzaG93biAoc2VlIGRyYXdD ZWxsKQorICAgICAgICAgaWYgKHNob3dHcmlkKQorICAgICAgICAgICAgIG9wdGlvbi5yZWN0LnNl dFdpZHRoKG9wdGlvbi5yZWN0LndpZHRoKCkgLSAxKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3dpZGdldHMva2VybmVsL3FhY3Rpb24uaCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcWFj dGlvbi5oCitpbmRleCAyNThhMWVhMGEwLi43MzdjMWU4Mjg1IDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmgKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9r ZXJuZWwvcWFjdGlvbi5oCitAQCAtODEsNyArODEsNyBAQCBjbGFzcyBRX1dJREdFVFNfRVhQT1JU IFFBY3Rpb24gOiBwdWJsaWMgUU9iamVjdAorICAgICBRX1BST1BFUlRZKE1lbnVSb2xlIG1lbnVS b2xlIFJFQUQgbWVudVJvbGUgV1JJVEUgc2V0TWVudVJvbGUgTk9USUZZIGNoYW5nZWQpCisgICAg IFFfUFJPUEVSVFkoYm9vbCBpY29uVmlzaWJsZUluTWVudSBSRUFEIGlzSWNvblZpc2libGVJbk1l bnUgV1JJVEUgc2V0SWNvblZpc2libGVJbk1lbnUgTk9USUZZIGNoYW5nZWQpCisgICAgIFFfUFJP UEVSVFkoYm9vbCBzaG9ydGN1dFZpc2libGVJbkNvbnRleHRNZW51IFJFQUQgaXNTaG9ydGN1dFZp c2libGVJbkNvbnRleHRNZW51IFdSSVRFIHNldFNob3J0Y3V0VmlzaWJsZUluQ29udGV4dE1lbnUg Tk9USUZZIGNoYW5nZWQpCistICAgIFFfUFJPUEVSVFkoUHJpb3JpdHkgcHJpb3JpdHkgUkVBRCBw cmlvcml0eSBXUklURSBzZXRQcmlvcml0eSkKKysgICAgUV9QUk9QRVJUWShQcmlvcml0eSBwcmlv cml0eSBSRUFEIHByaW9yaXR5IFdSSVRFIHNldFByaW9yaXR5IE5PVElGWSBjaGFuZ2VkKQorIAor IHB1YmxpYzoKKyAgICAgLy8gbm90ZSB0aGlzIGlzIGNvcGllZCBpbnRvIHFwbGF0Zm9ybW1lbnUu aCwgd2hpY2ggbXVzdCBzdGF5IGluIHN5bmMKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdl dHMva2VybmVsL3F3aWRnZXQuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0 LmNwcAoraW5kZXggOWViYTFlMDAxZS4uMjZmNmQyN2UxOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9r ZXJuZWwvcXdpZGdldC5jcHAKK0BAIC01Mjk2LDcgKzUyOTYsNyBAQCB2b2lkIFFXaWRnZXRQcml2 YXRlOjpkcmF3V2lkZ2V0KFFQYWludERldmljZSAqcGRldiwgY29uc3QgUVJlZ2lvbiAmcmduLCBj b25zdCBRUAorICAgICAgICAgUVdpZGdldEVmZmVjdFNvdXJjZVByaXZhdGUgKnNvdXJjZWQgPSBz dGF0aWNfY2FzdDxRV2lkZ2V0RWZmZWN0U291cmNlUHJpdmF0ZSAqPgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2UtPmRfZnVu YygpKTsKKyAgICAgICAgIGlmICghc291cmNlZC0+Y29udGV4dCkgeworLSAgICAgICAgICAgIGNv bnN0IFFSZWdpb24gZWZmZWN0UmduKHJnbi5ib3VuZGluZ1JlY3QoKSk7CisrICAgICAgICAgICAg Y29uc3QgUVJlZ2lvbiBlZmZlY3RSZ24oKGZsYWdzICYgVXNlRWZmZWN0UmVnaW9uQm91bmRzKSA/ IHJnbi5ib3VuZGluZ1JlY3QoKSA6IHJnbik7CisgICAgICAgICAgICAgUVdpZGdldFBhaW50Q29u dGV4dCBjb250ZXh0KHBkZXYsIGVmZmVjdFJnbiwgb2Zmc2V0LCBmbGFncywgc2hhcmVkUGFpbnRl ciwgcmVwYWludE1hbmFnZXIpOworICAgICAgICAgICAgIHNvdXJjZWQtPmNvbnRleHQgPSAmY29u dGV4dDsKKyAgICAgICAgICAgICBpZiAoIXNoYXJlZFBhaW50ZXIpIHsKK0BAIC01MzI4LDYgKzUz MjgsNyBAQCB2b2lkIFFXaWRnZXRQcml2YXRlOjpkcmF3V2lkZ2V0KFFQYWludERldmljZSAqcGRl diwgY29uc3QgUVJlZ2lvbiAmcmduLCBjb25zdCBRUAorICAgICAgICAgfQorICAgICB9CisgI2Vu ZGlmIC8vIFFUX0NPTkZJRyhncmFwaGljc2VmZmVjdCkKKysgICAgZmxhZ3MgPSBmbGFncyAmIH5V c2VFZmZlY3RSZWdpb25Cb3VuZHM7CisgCisgICAgIGNvbnN0IGJvb2wgYWxzb09uU2NyZWVuID0g ZmxhZ3MgJiBEcmF3UGFpbnRPblNjcmVlbjsKKyAgICAgY29uc3QgYm9vbCByZWN1cnNpdmUgPSBm bGFncyAmIERyYXdSZWN1cnNpdmU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tl cm5lbC9xd2lkZ2V0X3AuaCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmgK K2luZGV4IGVlZjZiOGZhMmMuLmM0MzJmNGI1ZDUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dp ZGdldHMva2VybmVsL3F3aWRnZXRfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVs L3F3aWRnZXRfcC5oCitAQCAtMjI5LDcgKzIyOSw4IEBAIHB1YmxpYzoKKyAgICAgICAgIERvbnRT dWJ0cmFjdE9wYXF1ZUNoaWxkcmVuID0gMHgxMCwKKyAgICAgICAgIERvbnREcmF3T3BhcXVlQ2hp bGRyZW4gPSAweDIwLAorICAgICAgICAgRG9udERyYXdOYXRpdmVDaGlsZHJlbiA9IDB4NDAsCist ICAgICAgICBEb250U2V0Q29tcG9zaXRpb25Nb2RlID0gMHg4MAorKyAgICAgICAgRG9udFNldENv bXBvc2l0aW9uTW9kZSA9IDB4ODAsCisrICAgICAgICBVc2VFZmZlY3RSZWdpb25Cb3VuZHMgPSAw eDEwMAorICAgICB9OworICAgICBRX0RFQ0xBUkVfRkxBR1MoRHJhd1dpZGdldEZsYWdzLCBEcmF3 V2lkZ2V0RmxhZykKKyAgICAgUV9GTEFHKERyYXdXaWRnZXRGbGFncykKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAgYi9xdGJh c2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAKK2luZGV4IDAy ODgwYjM0ZGEuLjBkNDRlMTMyNmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2Vy bmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9r ZXJuZWwvcXdpZGdldHJlcGFpbnRtYW5hZ2VyLmNwcAorQEAgLTEwMTgsNyArMTAxOCw4IEBAIHZv aWQgUVdpZGdldFJlcGFpbnRNYW5hZ2VyOjpwYWludEFuZEZsdXNoKCkKKyAKKyAgICAgLy8gUGFp bnQgdGhlIHJlc3Qgd2l0aCBjb21wb3NpdGlvbi4KKyAgICAgaWYgKHJlcGFpbnRBbGxXaWRnZXRz IHx8ICFkaXJ0eUNvcHkuaXNFbXB0eSgpKSB7CistICAgICAgICBRV2lkZ2V0UHJpdmF0ZTo6RHJh d1dpZGdldEZsYWdzIGZsYWdzID0gUVdpZGdldFByaXZhdGU6OkRyYXdBc1Jvb3QgfCBRV2lkZ2V0 UHJpdmF0ZTo6RHJhd1JlY3Vyc2l2ZTsKKysgICAgICAgIFFXaWRnZXRQcml2YXRlOjpEcmF3V2lk Z2V0RmxhZ3MgZmxhZ3MgPSBRV2lkZ2V0UHJpdmF0ZTo6RHJhd0FzUm9vdCB8IFFXaWRnZXRQcml2 YXRlOjpEcmF3UmVjdXJzaXZlCisrICAgICAgICAgICAgICAgIHwgUVdpZGdldFByaXZhdGU6OlVz ZUVmZmVjdFJlZ2lvbkJvdW5kczsKKyAgICAgICAgIHRsdy0+ZF9mdW5jKCktPmRyYXdXaWRnZXQo c3RvcmUtPnBhaW50RGV2aWNlKCksIGRpcnR5Q29weSwgUVBvaW50KCksIGZsYWdzLCBudWxscHRy LCB0aGlzKTsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9zdHls ZXMvcWZ1c2lvbnN0eWxlLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lvbnN0 eWxlLmNwcAoraW5kZXggZjQzNDVkOTdjNC4uOTYyOTEyYzgzOCAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lvbnN0eWxlLmNwcAorKysrIGIvcXRiYXNlL3NyYy93 aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5bGUuY3BwCitAQCAtMTc3MiwxNCArMTc3Miw2IEBAIHZv aWQgUUZ1c2lvblN0eWxlOjpkcmF3Q29udHJvbChDb250cm9sRWxlbWVudCBlbGVtZW50LCBjb25z dCBRU3R5bGVPcHRpb24gKm9wdGlvCisgICAgICAgICAgICAgcHJveHkoKS0+ZHJhd0NvbnRyb2wo Q0VfUHVzaEJ1dHRvbkxhYmVsLCAmc3Vib3B0LCBwYWludGVyLCB3aWRnZXQpOworICAgICAgICAg fQorICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgQ0VfUHVzaEJ1dHRvbkxhYmVsOgorLSAgICAg ICAgaWYgKGNvbnN0IFFTdHlsZU9wdGlvbkJ1dHRvbiAqYnV0dG9uID0gcXN0eWxlb3B0aW9uX2Nh c3Q8Y29uc3QgUVN0eWxlT3B0aW9uQnV0dG9uICo+KG9wdGlvbikpIHsKKy0gICAgICAgICAgICBR U3R5bGVPcHRpb25CdXR0b24gYigqYnV0dG9uKTsKKy0gICAgICAgICAgICAvLyBubyBQTV9CdXR0 b25TaGlmdEhvcml6b250YWwgYW5kIFBNX0J1dHRvblNoaWZ0VmVydGljYWwgZm9yIGZ1c2lvbiBz dHlsZQorLSAgICAgICAgICAgIGIuc3RhdGUgJj0gfihTdGF0ZV9PbiB8IFN0YXRlX1N1bmtlbik7 CistICAgICAgICAgICAgUUNvbW1vblN0eWxlOjpkcmF3Q29udHJvbChlbGVtZW50LCAmYiwgcGFp bnRlciwgd2lkZ2V0KTsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworICAgICBjYXNlIENF X01lbnVCYXJFbXB0eUFyZWE6CisgICAgICAgICBwYWludGVyLT5zYXZlKCk7CisgICAgIHsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcCBiL3F0YmFz ZS9zcmMvd2lkZ2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwCitpbmRleCAxOGIyNDA2M2Q4Li5lZjcy MDdhOGEzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3V0aWwvcWNvbXBsZXRlci5j cHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwCitAQCAtMTEy MCw2ICsxMTIwLDggQEAgdm9pZCBRQ29tcGxldGVyOjpzZXRNb2RlbChRQWJzdHJhY3RJdGVtTW9k ZWwgKm1vZGVsKQorIHsKKyAgICAgUV9EKFFDb21wbGV0ZXIpOworICAgICBRQWJzdHJhY3RJdGVt TW9kZWwgKm9sZE1vZGVsID0gZC0+cHJveHktPnNvdXJjZU1vZGVsKCk7CisrICAgIGlmIChvbGRN b2RlbCA9PSBtb2RlbCkKKysgICAgICAgIHJldHVybjsKKyAjaWYgUVRfQ09ORklHKGZpbGVzeXN0 ZW1tb2RlbCkKKyAgICAgaWYgKHFvYmplY3RfY2FzdDxjb25zdCBRRmlsZVN5c3RlbU1vZGVsICo+ KG9sZE1vZGVsKSkKKyAgICAgICAgIHNldENvbXBsZXRpb25Sb2xlKFF0OjpFZGl0Um9sZSk7IC8v IFFUQlVHLTU0NjQyLCBjbGVhciBGaWxlTmFtZVJvbGUgc2V0IGJ5IFFGaWxlU3lzdGVtTW9kZWwK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24u Y3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uLmNwcAoraW5k ZXggYTEyOGIyMzk1MC4uZGM0MGJmNjJmYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0 cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93 aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHAKK0BAIC01Niw2ICs1Niw3IEBACisgI2lmbmRlZiBR VF9OT19BQ0NFU1NJQklMSVRZCisgI2luY2x1ZGUgInFhY2Nlc3NpYmxlLmgiCisgI2VuZGlmCisr I2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorIAorICNpbmNsdWRlIDxhbGdvcml0aG0+ CisgCitAQCAtMTA3NiwxOSArMTA3NywxOSBAQCB2b2lkIFFBYnN0cmFjdEJ1dHRvbjo6a2V5UHJl c3NFdmVudChRS2V5RXZlbnQgKmUpCisgeworICAgICBRX0QoUUFic3RyYWN0QnV0dG9uKTsKKyAg ICAgYm9vbCBuZXh0ID0gdHJ1ZTsKKy0gICAgc3dpdGNoIChlLT5rZXkoKSkgeworLSAgICBjYXNl IFF0OjpLZXlfRW50ZXI6CistICAgIGNhc2UgUXQ6OktleV9SZXR1cm46CistICAgICAgICBlLT5p Z25vcmUoKTsKKy0gICAgICAgIGJyZWFrOworLSAgICBjYXNlIFF0OjpLZXlfU2VsZWN0OgorLSAg ICBjYXNlIFF0OjpLZXlfU3BhY2U6CistICAgICAgICBpZiAoIWUtPmlzQXV0b1JlcGVhdCgpKSB7 CistICAgICAgICAgICAgc2V0RG93bih0cnVlKTsKKy0gICAgICAgICAgICByZXBhaW50KCk7Cist ICAgICAgICAgICAgZC0+ZW1pdFByZXNzZWQoKTsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFr OworKworKyAgICBjb25zdCBhdXRvIGtleSA9IHN0YXRpY19jYXN0PFF0OjpLZXk+KGUtPmtleSgp KTsKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2 YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6Oktl eT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoa2V5KSAmJiAhZS0+aXNB dXRvUmVwZWF0KCkpIHsKKysgICAgICAgIHNldERvd24odHJ1ZSk7CisrICAgICAgICByZXBhaW50 KCk7CisrICAgICAgICBkLT5lbWl0UHJlc3NlZCgpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9 CisrCisrICAgIHN3aXRjaCAoa2V5KSB7CisgICAgIGNhc2UgUXQ6OktleV9VcDoKKyAgICAgICAg IG5leHQgPSBmYWxzZTsKKyAgICAgICAgIFFfRkFMTFRIUk9VR0goKTsKK0BAIC0xMTUzLDE1ICsx MTU0LDE1IEBAIHZvaWQgUUFic3RyYWN0QnV0dG9uOjprZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50 ICplKQorICAgICBpZiAoIWUtPmlzQXV0b1JlcGVhdCgpKQorICAgICAgICAgZC0+cmVwZWF0VGlt ZXIuc3RvcCgpOworIAorLSAgICBzd2l0Y2ggKGUtPmtleSgpKSB7CistICAgIGNhc2UgUXQ6Oktl eV9TZWxlY3Q6CistICAgIGNhc2UgUXQ6OktleV9TcGFjZToKKy0gICAgICAgIGlmICghZS0+aXNB dXRvUmVwZWF0KCkgJiYgZC0+ZG93bikKKy0gICAgICAgICAgICBkLT5jbGljaygpOworLSAgICAg ICAgYnJlYWs7CistICAgIGRlZmF1bHQ6CistICAgICAgICBlLT5pZ25vcmUoKTsKKysgICAgY29u c3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9y bVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhl bWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAg IGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoc3RhdGljX2Nhc3Q8UXQ6OktleT4oZS0+a2V5 KCkpKSAmJiAhZS0+aXNBdXRvUmVwZWF0KCkgJiYgZC0+ZG93bikgeworKyAgICAgICAgZC0+Y2xp Y2soKTsKKysgICAgICAgIHJldHVybjsKKyAgICAgfQorKworKyAgICBlLT5pZ25vcmUoKTsKKyB9 CisgCisgLyohXHJlaW1wCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMv cWNvbWJvYm94LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAK K2luZGV4IDdhNDk2YzI3ZTAuLjBhM2Q5NjY0N2IgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dp ZGdldHMvd2lkZ2V0cy9xY29tYm9ib3guY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lk Z2V0cy9xY29tYm9ib3guY3BwCitAQCAtMzM1Miw3ICszMzUyLDIzIEBAIHZvaWQgUUNvbWJvQm94 OjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCAqZSkKKyAKKyAgICAgTW92ZSBtb3ZlID0gTm9Nb3Zl OworICAgICBpbnQgbmV3SW5kZXggPSBjdXJyZW50SW5kZXgoKTsKKy0gICAgc3dpdGNoIChlLT5r ZXkoKSkgeworKworKyAgICBib29sIHByZXNzTGlrZUJ1dHRvbiA9ICFkLT5saW5lRWRpdDsKKysj aWZkZWYgUVRfS0VZUEFEX05BVklHQVRJT04KKysgICAgcHJlc3NMaWtlQnV0dG9uIHw9IFFBcHBs aWNhdGlvblByaXZhdGU6OmtleXBhZE5hdmlnYXRpb25FbmFibGVkKCkgJiYgIWhhc0VkaXRGb2N1 cygpOworKyNlbmRpZgorKyAgICBhdXRvIGtleSA9IHN0YXRpY19jYXN0PFF0OjpLZXk+KGUtPmtl eSgpKTsKKysgICAgaWYgKHByZXNzTGlrZUJ1dHRvbikgeworKyAgICAgICAgY29uc3QgYXV0byBi dXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGlu dChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAg ICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoa2V5KSkgeworKyAgICAgICAgICAgIHNo b3dQb3B1cCgpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAgfQorKwor KyAgICBzd2l0Y2ggKGtleSkgeworICAgICBjYXNlIFF0OjpLZXlfVXA6CisgICAgICAgICBpZiAo ZS0+bW9kaWZpZXJzKCkgJiBRdDo6Q29udHJvbE1vZGlmaWVyKQorICAgICAgICAgICAgIGJyZWFr OyAvLyBwYXNzIHRvIGxpbmUgZWRpdCBmb3IgYXV0byBjb21wbGV0aW9uCitAQCAtMzM5NCwyNiAr MzQxMCwxMSBAQCB2b2lkIFFDb21ib0JveDo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQgKmUpCisg ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICAgICAgYnJlYWs7CistICAgIGNh c2UgUXQ6OktleV9TcGFjZToKKy0gICAgICAgIGlmICghZC0+bGluZUVkaXQpIHsKKy0gICAgICAg ICAgICBzaG93UG9wdXAoKTsKKy0gICAgICAgICAgICByZXR1cm47CistICAgICAgICB9CistICAg ICAgICBicmVhazsKKy0gICAgY2FzZSBRdDo6S2V5X0VudGVyOgorLSAgICBjYXNlIFF0OjpLZXlf UmV0dXJuOgorICAgICBjYXNlIFF0OjpLZXlfRXNjYXBlOgorICAgICAgICAgaWYgKCFkLT5saW5l RWRpdCkKKyAgICAgICAgICAgICBlLT5pZ25vcmUoKTsKKyAgICAgICAgIGJyZWFrOworICNpZmRl ZiBRVF9LRVlQQURfTkFWSUdBVElPTgorLSAgICBjYXNlIFF0OjpLZXlfU2VsZWN0OgorLSAgICAg ICAgaWYgKFFBcHBsaWNhdGlvblByaXZhdGU6OmtleXBhZE5hdmlnYXRpb25FbmFibGVkKCkKKy0g ICAgICAgICAgICAgICAgJiYgKCFoYXNFZGl0Rm9jdXMoKSB8fCAhZC0+bGluZUVkaXQpKSB7Cist ICAgICAgICAgICAgc2hvd1BvcHVwKCk7CistICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAg fQorLSAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUXQ6OktleV9MZWZ0OgorICAgICBjYXNlIFF0 OjpLZXlfUmlnaHQ6CisgICAgICAgICBpZiAoUUFwcGxpY2F0aW9uUHJpdmF0ZTo6a2V5cGFkTmF2 aWdhdGlvbkVuYWJsZWQoKSAmJiAhaGFzRWRpdEZvY3VzKCkpCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmggYi9xdGJhc2Uvc3JjL3dpZGdl dHMvd2lkZ2V0cy9xZGF0ZXRpbWVlZGl0X3AuaAoraW5kZXggZDM2YjZmOGY5YS4uZTBkZjViNTE1 OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGltZWVkaXRf cC5oCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZGF0ZXRpbWVlZGl0X3AuaAor QEAgLTEsNiArMSw2IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdo dCAoQykgMjAxOCBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRo ZSBRdCBDb21wYW55IEx0ZC4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNp bmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRXaWRnZXRzIG1vZHVsZSBv ZiB0aGUgUXQgVG9vbGtpdC4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0 cy9xZ3JvdXBib3guY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNw cAoraW5kZXggMDJhMGJlZDMyNS4uM2YzZWNjYzM3MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv d2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93 aWRnZXRzL3Fncm91cGJveC5jcHAKK0BAIC01NCw2ICs1NCw4IEBACisgI2luY2x1ZGUgInFhY2Nl c3NpYmxlLmgiCisgI2VuZGlmCisgI2luY2x1ZGUgPHByaXZhdGUvcXdpZGdldF9wLmg+CisrI2lu Y2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0 Zm9ybXRoZW1lLmg+CisgCisgI2luY2x1ZGUgInFkZWJ1Zy5oIgorIAorQEAgLTM2MCw3ICszNjIs MTAgQEAgYm9vbCBRR3JvdXBCb3g6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgICAgIHJldHVybiB0 cnVlOworICAgICBjYXNlIFFFdmVudDo6S2V5UHJlc3M6IHsKKyAgICAgICAgIFFLZXlFdmVudCAq ayA9IHN0YXRpY19jYXN0PFFLZXlFdmVudCo+KGUpOworLSAgICAgICAgaWYgKCFrLT5pc0F1dG9S ZXBlYXQoKSAmJiAoay0+a2V5KCkgPT0gUXQ6OktleV9TZWxlY3QgfHwgay0+a2V5KCkgPT0gUXQ6 OktleV9TcGFjZSkpIHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1 aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1 dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoIWstPmlzQXV0b1Jl cGVhdCgpICYmIGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhzdGF0aWNfY2FzdDxRdDo6S2V5Pihr LT5rZXkoKSkpKSB7CisgICAgICAgICAgICAgZC0+cHJlc3NlZENvbnRyb2wgPSBRU3R5bGU6OlND X0dyb3VwQm94Q2hlY2tCb3g7CisgICAgICAgICAgICAgdXBkYXRlKHN0eWxlKCktPnN1YkNvbnRy b2xSZWN0KFFTdHlsZTo6Q0NfR3JvdXBCb3gsICZib3gsIFFTdHlsZTo6U0NfR3JvdXBCb3hDaGVj a0JveCwgdGhpcykpOworICAgICAgICAgICAgIHJldHVybiB0cnVlOworQEAgLTM2OSw3ICszNzQs MTAgQEAgYm9vbCBRR3JvdXBCb3g6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgfQorICAgICBjYXNl IFFFdmVudDo6S2V5UmVsZWFzZTogeworICAgICAgICAgUUtleUV2ZW50ICprID0gc3RhdGljX2Nh c3Q8UUtleUV2ZW50Kj4oZSk7CistICAgICAgICBpZiAoIWstPmlzQXV0b1JlcGVhdCgpICYmIChr LT5rZXkoKSA9PSBRdDo6S2V5X1NlbGVjdCB8fCBrLT5rZXkoKSA9PSBRdDo6S2V5X1NwYWNlKSkg eworKyAgICAgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Q cml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlz KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxR TGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgYnV0 dG9uUHJlc3NLZXlzLmNvbnRhaW5zKHN0YXRpY19jYXN0PFF0OjpLZXk+KGstPmtleSgpKSkpIHsK KyAgICAgICAgICAgICBib29sIHRvZ2dsZSA9IChkLT5wcmVzc2VkQ29udHJvbCA9PSBRU3R5bGU6 OlNDX0dyb3VwQm94TGFiZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBkLT5wcmVz c2VkQ29udHJvbCA9PSBRU3R5bGU6OlNDX0dyb3VwQm94Q2hlY2tCb3gpOworICAgICAgICAgICAg IGQtPnByZXNzZWRDb250cm9sID0gUVN0eWxlOjpTQ19Ob25lOworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lk Z2V0cy9xbGFiZWwuY3BwCitpbmRleCAzMGZmODBjYmIwLi5jZjI2MDVjMTdjIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy93aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNwcAorQEAgLTQyMSw5ICs0MjEsNiBAQCB2b2lkIFFM YWJlbDo6c2V0UGl4bWFwKGNvbnN0IFFQaXhtYXAgJnBpeG1hcCkKKyAgICAgICAgIGQtPnBpeG1h cCA9IG5ldyBRUGl4bWFwKHBpeG1hcCk7CisgICAgIH0KKyAKKy0gICAgaWYgKGQtPnBpeG1hcC0+ ZGVwdGgoKSA9PSAxICYmICFkLT5waXhtYXAtPm1hc2soKSkKKy0gICAgICAgIGQtPnBpeG1hcC0+ c2V0TWFzaygqKChRQml0bWFwICopZC0+cGl4bWFwKSk7CistCisgICAgIGQtPnVwZGF0ZUxhYmVs KCk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29s YmFyYXJlYWxheW91dC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xdG9vbGJhcmFy ZWFsYXlvdXQuY3BwCitpbmRleCA0OTNjMDk0Y2MxLi5kNWY0YjU5MDE3IDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcAorKysrIGIv cXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcAorQEAgLTEz NjcsNyArMTM2Nyw3IEBAIGJvb2wgUVRvb2xCYXJBcmVhTGF5b3V0OjpyZXN0b3JlU3RhdGUoUURh dGFTdHJlYW0gJnN0cmVhbSwgY29uc3QgUUxpc3Q8UVRvb2xCYXIqCisgICAgICAgICAgICAgICAg IGl0ZW0ud2lkZ2V0SXRlbSA9IG5ldyBRV2lkZ2V0SXRlbVYyKHRvb2xCYXIpOworICAgICAgICAg ICAgICAgICB0b29sQmFyLT5zZXRPcmllbnRhdGlvbihmbG9hdGluZyA/ICgoc2hvd24gJiAyKSA/ IFF0OjpWZXJ0aWNhbCA6IFF0OjpIb3Jpem9udGFsKSA6IGRvY2subyk7CisgICAgICAgICAgICAg ICAgIHRvb2xCYXItPnNldFZpc2libGUoc2hvd24gJiAxKTsKKy0gICAgICAgICAgICAgICAgdG9v bEJhci0+ZF9mdW5jKCktPnNldFdpbmRvd1N0YXRlKGZsb2F0aW5nLCB0cnVlLCByZWN0KTsKKysg ICAgICAgICAgICAgICAgdG9vbEJhci0+ZF9mdW5jKCktPnNldFdpbmRvd1N0YXRlKGZsb2F0aW5n LCBmYWxzZSwgcmVjdCk7CisgCisgICAgICAgICAgICAgICAgIGl0ZW0ucHJlZmVycmVkU2l6ZSA9 IGl0ZW0uc2l6ZTsKKyAgICAgICAgICAgICAgICAgbGluZS50b29sQmFySXRlbXMuYXBwZW5kKGl0 ZW0pOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJy ZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAgYi9xdGJh c2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0 Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwuY3BwCitpbmRleCAyMTJjMGEyZTEzLi4zYzc3YjFiYTBi IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRp dGVyYXRla2VybmVsL3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcAorKysrIGIvcXRi YXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsL3RzdF9x dGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcAorQEAgLTEyNiw4ICsxMjYsNyBAQCBwdWJsaWM6 CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6aW5zdGFudGlhdGUoKQor IHsKKy0gICAgYXV0byBmdXR1cmUgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgUHJpbnRGb3IoMCwg NDApKS5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgIGZ1dHVyZS53YWl0Rm9yRmluaXNoZWQo KTsKKysgICAgc3RhcnRUaHJlYWRFbmdpbmUobmV3IFByaW50Rm9yKDAsIDQwKSkuc3RhcnRCbG9j a2luZygpOworICAgICBRQ09NUEFSRShpdGVyYXRpb25zLmxvYWRSZWxheGVkKCksIDQwKTsKKyB9 CisgCitAQCAtMTY2LDEwICsxNjUsOCBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2Vy bmVsOjpzdHJlc3N0ZXN0KCkKKyAgICAgY29uc3QgaW50IHRpbWVzID0gNTA7CisgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgdGltZXM7ICsraSkgeworICAgICAgICAgY291bnRlci5zdG9yZVJlbGF4 ZWQoMCk7CistICAgICAgICAvLyBUaHJlYWRFbmdpbmUgd2lsbCBkZWxldGUgZiB3aGVuIGl0IGZp bmlzaGVzCistICAgICAgICBhdXRvIGYgPSBuZXcgQ291bnRGb3IoMCwgaXRlcmF0aW9ucyk7Cist ICAgICAgICBhdXRvIGZ1dHVyZSA9IGYtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgICAg IGZ1dHVyZS53YWl0Rm9yRmluaXNoZWQoKTsKKysgICAgICAgIENvdW50Rm9yIGYoMCwgaXRlcmF0 aW9ucyk7CisrICAgICAgICBmLnN0YXJ0QmxvY2tpbmcoKTsKKyAgICAgICAgIFFDT01QQVJFKGNv dW50ZXIubG9hZFJlbGF4ZWQoKSwgaXRlcmF0aW9ucyk7CisgICAgIH0KKyB9CitAQCAtMTc3LDEx ICsxNzQsOCBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVsOjpzdHJlc3N0ZXN0 KCkKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVsOjpub0l0ZXJhdGlvbnMoKQor IHsKKyAgICAgY29uc3QgaW50IHRpbWVzID0gMjAwMDA7CistICAgIGZvciAoaW50IGkgPSAwOyBp IDwgdGltZXM7ICsraSkgeworLSAgICAgICAgYXV0byBmdXR1cmUgPSBzdGFydFRocmVhZEVuZ2lu ZShuZXcgSXRlcmF0ZUtlcm5lbDxUZXN0SXRlcmF0b3IsIHZvaWQ+KDAsIDApKQorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgICAgICBm dXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CistICAgIH0KKysgICAgZm9yIChpbnQgaSA9IDA7IGkg PCB0aW1lczsgKytpKQorKyAgICAgICAgc3RhcnRUaHJlYWRFbmdpbmUobmV3IEl0ZXJhdGVLZXJu ZWw8VGVzdEl0ZXJhdG9yLCB2b2lkPigwLCAwKSkuc3RhcnRCbG9ja2luZygpOworIH0KKyAKKyBR TXV0ZXggdGhyZWFkc011dGV4OworQEAgLTIzNiwxMCArMjMwLDggQEAgdm9pZCB0c3RfUXRDb25j dXJyZW50SXRlcmF0ZUtlcm5lbDo6dGhyb3R0bGluZygpCisgCisgICAgIHRocmVhZHMuY2xlYXIo KTsKKyAKKy0gICAgLy8gVGhyZWFkRW5naW5lIHdpbGwgZGVsZXRlIGYgd2hlbiBpdCBmaW5pc2hl cworLSAgICBhdXRvIGYgPSBuZXcgVGhyb3R0bGVGb3IoMCwgdG90YWxJdGVyYXRpb25zKTsKKy0g ICAgYXV0byBmdXR1cmUgPSBmLT5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgIGZ1dHVyZS53 YWl0Rm9yRmluaXNoZWQoKTsKKysgICAgVGhyb3R0bGVGb3IgZigwLCB0b3RhbEl0ZXJhdGlvbnMp OworKyAgICBmLnN0YXJ0QmxvY2tpbmcoKTsKKyAKKyAgICAgUUNPTVBBUkUoaXRlcmF0aW9ucy5s b2FkUmVsYXhlZCgpLCB0b3RhbEl0ZXJhdGlvbnMpOworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1 cnJlbnR0aHJlYWRlbmdpbmUuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNv bmN1cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKK2lu ZGV4IGFjN2JlN2FjZGQuLjgxYmM2NGM4ZDkgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0 by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90c3RfcXRjb25jdXJyZW50dGhy ZWFkZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1 cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKK0BAIC02 NSw5ICs2NSwxNiBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5n aW5lOjpydW5EaXJlY3RseSgpCisgeworLSAgICBQcmludFVzZXIgKmVuZ2luZSA9IG5ldyBQcmlu dFVzZXIoKTsKKy0gICAgUUZ1dHVyZTx2b2lkPiBmID0gZW5naW5lLT5zdGFydEFzeW5jaHJvbm91 c2x5KCk7CistICAgIGYud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIHsKKysgICAgICAgIFByaW50 VXNlciBlbmdpbmU7CisrICAgICAgICBlbmdpbmUuc3RhcnRTaW5nbGVUaHJlYWRlZCgpOworKyAg ICAgICAgZW5naW5lLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgfQorKyAgICB7CisrICAgICAgICBQ cmludFVzZXIgKmVuZ2luZSA9IG5ldyBQcmludFVzZXIoKTsKKysgICAgICAgIFFGdXR1cmU8dm9p ZD4gZiA9IGVuZ2luZS0+c3RhcnRBc3luY2hyb25vdXNseSgpOworKyAgICAgICAgZi53YWl0Rm9y RmluaXNoZWQoKTsKKysgICAgfQorIH0KKyAKKyBjbGFzcyBTdHJpbmdSZXN1bHRVc2VyIDogcHVi bGljIFRocmVhZEVuZ2luZTxRU3RyaW5nPgorQEAgLTk5LDEwICsxMDYsOCBAQCBwdWJsaWM6Cisg Cisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpyZXN1bHQoKQorIHsKKy0gICAg Ly8gVGhyZWFkRW5naW5lIHdpbGwgZGVsZXRlICdlbmdpbmUnIHdoZW4gaXQgZmluaXNoZXMKKy0g ICAgYXV0byBlbmdpbmUgPSBuZXcgU3RyaW5nUmVzdWx0VXNlcigpOworLSAgICBhdXRvIGZ1dHVy ZSA9IGVuZ2luZS0+c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBRQ09NUEFSRShmdXR1cmUu cmVzdWx0KCksIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgU3RyaW5nUmVzdWx0VXNlciBlbmdpbmU7 CisrICAgIFFDT01QQVJFKCplbmdpbmUuc3RhcnRCbG9ja2luZygpLCBRU3RyaW5nKCJGb28iKSk7 CisgfQorIAorIGNsYXNzIFZvaWRSZXN1bHRVc2VyIDogcHVibGljIFRocmVhZEVuZ2luZTx2b2lk PgorQEAgLTEyOCw5ICsxMzMsMTcgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVu dFRocmVhZEVuZ2luZTo6cnVuVGhyb3VnaFN0YXJ0ZXIoKQorIHsKKy0gICAgVGhyZWFkRW5naW5l U3RhcnRlcjxRU3RyaW5nPiBzdGFydGVyID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFN0cmluZ1Jl c3VsdFVzZXIoKSk7CistICAgIFFGdXR1cmU8UVN0cmluZz4gZiA9IHN0YXJ0ZXIuc3RhcnRBc3lu Y2hyb25vdXNseSgpOworLSAgICBRQ09NUEFSRShmLnJlc3VsdCgpLCBRU3RyaW5nKCJGb28iKSk7 CisrICAgIHsKKysgICAgICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4gc3RhcnRlciA9 IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBTdHJpbmdSZXN1bHRVc2VyKCkpOworKyAgICAgICAgUUZ1 dHVyZTxRU3RyaW5nPiAgZiA9IHN0YXJ0ZXIuc3RhcnRBc3luY2hyb25vdXNseSgpOworKyAgICAg ICAgUUNPTVBBUkUoZi5yZXN1bHQoKSwgUVN0cmluZygiRm9vIikpOworKyAgICB9CisrCisrICAg IHsKKysgICAgICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4gc3RhcnRlciA9IHN0YXJ0 VGhyZWFkRW5naW5lKG5ldyBTdHJpbmdSZXN1bHRVc2VyKCkpOworKyAgICAgICAgUVN0cmluZyBz dHIgPSBzdGFydGVyLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIFFDT01QQVJFKHN0ciwgUVN0 cmluZygiRm9vIikpOworKyAgICB9CisgfQorIAorIGNsYXNzIENhbmNlbFVzZXIgOiBwdWJsaWMg VGhyZWFkRW5naW5lPHZvaWQ+CitAQCAtMjEzLDYgKzIyNiwxMiBAQCB2b2lkIHRzdF9RdENvbmN1 cnJlbnRUaHJlYWRFbmdpbmU6OnRocm90dGxlKCkKKyAgICAgICAgIGYud2FpdEZvckZpbmlzaGVk KCk7CisgICAgICAgICBRQ09NUEFSRShjb3VudC5sb2FkUmVsYXhlZCgpLCAwKTsKKyAgICAgfQor KworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdHM7ICsraSkgeworKyAgICAgICAgVGhy b3R0bGVBbHdheXNVc2VyIHQ7CisrICAgICAgICB0LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAg IFFDT01QQVJFKGNvdW50LmxvYWRSZWxheGVkKCksIDApOworKyAgICB9CisgfQorIAorIFFTZXQ8 UVRocmVhZCAqPiB0aHJlYWRzOworQEAgLTI0OSwxNyArMjY4LDM1IEBAIHZvaWQgdHN0X1F0Q29u Y3VycmVudFRocmVhZEVuZ2luZTo6dGhyZWFkQ291bnQoKQorIHsKKyAgICAgY29uc3QgaW50IHJl cGVhdHMgPSAxMDsKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXRzOyArK2kpIHsKKysg ICAgICAgIFRocmVhZENvdW50VXNlciB0OworKyAgICAgICAgdC5zdGFydEJsb2NraW5nKCk7Cisr ICAgICAgICBpbnQgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBpbnQgY291bnRf ZXhwZWN0ZWQgPSBRVGhyZWFkUG9vbDo6Z2xvYmFsSW5zdGFuY2UoKS0+bWF4VGhyZWFkQ291bnQo KSArIDE7IC8vICsxIGZvciB0aGUgbWFpbiB0aHJlYWQuCisrICAgICAgICBpZiAoY291bnQgIT0g Y291bnRfZXhwZWN0ZWQpCisrICAgICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRCVUctMjMz MzMiLCBBYm9ydCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudCwgY291bnRfZXhwZWN0ZWQpOwor KworICAgICAgICAgKG5ldyBUaHJlYWRDb3VudFVzZXIoKSktPnN0YXJ0QXN5bmNocm9ub3VzbHko KS53YWl0Rm9yRmluaXNoZWQoKTsKKy0gICAgICAgIGNvbnN0IGF1dG8gY291bnQgPSB0aHJlYWRz LmNvdW50KCk7CistICAgICAgICBjb25zdCBhdXRvIG1heFRocmVhZENvdW50ID0gUVRocmVhZFBv b2w6Omdsb2JhbEluc3RhbmNlKCktPm1heFRocmVhZENvdW50KCk7CistICAgICAgICBRVkVSSUZZ KGNvdW50IDw9IG1heFRocmVhZENvdW50KTsKKy0gICAgICAgIFFWRVJJRlkoIXRocmVhZHMuY29u dGFpbnMoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKSk7CisrICAgICAgICBjb3VudCA9IHRocmVh ZHMuY291bnQoKTsKKysgICAgICAgIGNvdW50X2V4cGVjdGVkID0gUVRocmVhZFBvb2w6Omdsb2Jh bEluc3RhbmNlKCktPm1heFRocmVhZENvdW50KCk7CisrICAgICAgICBpZiAoY291bnQgIT0gY291 bnRfZXhwZWN0ZWQpCisrICAgICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRCVUctMjMzMzMi LCBBYm9ydCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudCwgY291bnRfZXhwZWN0ZWQpOworICAg ICB9CisgCisgICAgIC8vIFNldCB0aGUgZmluaXNoIGZsYWcgaW1tZWRpYXRlbHksIHRoaXMgc2hv dWxkIGdpdmUgdXMgb25lIHRocmVhZCBvbmx5LgorICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJl cGVhdHM7ICsraSkgeworKyAgICAgICAgVGhyZWFkQ291bnRVc2VyIHQodHJ1ZSAvKmZpbmlzaElt bWVkaWF0ZWx5Ki8pOworKyAgICAgICAgdC5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBpbnQg Y291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBpZiAoY291bnQgIT0gMSkKKysgICAg ICAgICAgICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKysgICAgICAg IFFDT01QQVJFKGNvdW50LCAxKTsKKysKKyAgICAgICAgIChuZXcgVGhyZWFkQ291bnRVc2VyKHRy dWUgLypmaW5pc2hJbW1lZGlhdGVseSovKSktPnN0YXJ0QXN5bmNocm9ub3VzbHkoKS53YWl0Rm9y RmluaXNoZWQoKTsKKy0gICAgICAgIGNvbnN0IGF1dG8gY291bnQgPSB0aHJlYWRzLmNvdW50KCk7 CisrICAgICAgICBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGlmIChjb3VudCAh PSAxKQorKyAgICAgICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQp OworICAgICAgICAgUUNPTVBBUkUoY291bnQsIDEpOworICAgICAgICAgUVZFUklGWSghdGhyZWFk cy5jb250YWlucyhRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkpKTsKKyAgICAgfQorQEAgLTQwMCw2 ICs0MzcsNyBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5l OjpleGNlcHRpb25zKCkKKyB7CisrICAgIC8vIEFzeW5jaHJvbm91cyBtb2RlOgorICAgICB7Cisg ICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOworICAgICAgICAgdHJ5ICB7CitAQCAtNDEyLDYg KzQ1MCwzMiBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OmV4Y2VwdGlvbnMo KQorICAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7Cisg ICAgIH0KKyAKKysgICAgLy8gQmxvY2tpbmcgbW9kZToKKysgICAgLy8gdGVzdCB0aHJvd2luZyB0 aGUgZXhjZXB0aW9uIGZyb20gYSB3b3JrZXIgdGhyZWFkLgorKyAgICB7CisrICAgICAgICBib29s IGNhdWdodCA9IGZhbHNlOworKyAgICAgICAgdHJ5ICB7CisrICAgICAgICAgICAgUXRDb25jdXJy ZW50RXhjZXB0aW9uVGhyb3dlciBlKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSk7CisrICAgICAg ICAgICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNhdGNoIChjb25zdCBRRXhjZXB0 aW9uICYpIHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0cnVlOworKyAgICAgICAgfQorKyAgICAg ICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisrICAgIH0KKysK KysgICAgLy8gdGVzdCB0aHJvd2luZyB0aGUgZXhjZXB0aW9uIGZyb20gdGhlIG1haW4gdGhyZWFk IChkaWZmZXJlbnQgY29kZSBwYXRoKQorKyAgICB7CisrICAgICAgICBib29sIGNhdWdodCA9IGZh bHNlOworKyAgICAgICAgdHJ5ICB7CisrICAgICAgICAgICAgUXRDb25jdXJyZW50RXhjZXB0aW9u VGhyb3dlciBlKDApOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAg fSBjYXRjaCAoY29uc3QgUUV4Y2VwdGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1 ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4 Y2VwdGlvbiIpOworKyAgICB9CisrCisrICAgIC8vIEFzeW5jaHJvbm91cyBtb2RlOgorICAgICB7 CisgICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOworICAgICAgICAgdHJ5ICB7CitAQCAtNDIz LDYgKzQ4NywzMSBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OmV4Y2VwdGlv bnMoKQorICAgICAgICAgfQorICAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQg ZXhjZXB0aW9uIik7CisgICAgIH0KKysKKysgICAgLy8gQmxvY2tpbmcgbW9kZToKKysgICAgLy8g dGVzdCB0aHJvd2luZyB0aGUgZXhjZXB0aW9uIGZyb20gYSB3b3JrZXIgdGhyZWFkLgorKyAgICB7 CisrICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOworKyAgICAgICAgdHJ5ICB7CisrICAgICAg ICAgICAgVW5yZWxhdGVkRXhjZXB0aW9uVGhyb3dlciBlKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQo KSk7CisrICAgICAgICAgICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNhdGNoIChj b25zdCBRVW5oYW5kbGVkRXhjZXB0aW9uICYpIHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0cnVl OworKyAgICAgICAgfQorKyAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhj ZXB0aW9uIik7CisrICAgIH0KKysKKysgICAgLy8gdGVzdCB0aHJvd2luZyB0aGUgZXhjZXB0aW9u IGZyb20gdGhlIG1haW4gdGhyZWFkIChkaWZmZXJlbnQgY29kZSBwYXRoKQorKyAgICB7CisrICAg ICAgICBib29sIGNhdWdodCA9IGZhbHNlOworKyAgICAgICAgdHJ5ICB7CisrICAgICAgICAgICAg VW5yZWxhdGVkRXhjZXB0aW9uVGhyb3dlciBlKDApOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9j a2luZygpOworKyAgICAgICAgfSBjYXRjaCAoY29uc3QgUVVuaGFuZGxlZEV4Y2VwdGlvbiAmKSB7 CisrICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFWRVJJ RlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAgICB9CisgfQorIAorICNl bmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90 c3RfcWJ1ZmZlci5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3FidWZmZXIvdHN0 X3FidWZmZXIuY3BwCitpbmRleCA0OTY4NzQyMTEwLi5mNGMzZmI3MTFkIDEwMDY0NAorLS0tIGEv cXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcAorKysr IGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcAor QEAgLTQyLDYgKzQyLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB3cml0ZUJsb2NrX2Rh dGEoKTsKKyAgICAgdm9pZCB3cml0ZUJsb2NrKCk7CisgICAgIHZvaWQgc2VlaygpOworKyAgICB2 b2lkIGludmFsaWRTZWVrcygpOworICAgICB2b2lkIHNlZWtUZXN0X2RhdGEoKTsKKyAgICAgdm9p ZCBzZWVrVGVzdCgpOworICAgICB2b2lkIHJlYWRfcmF3ZGF0YSgpOworQEAgLTI4Niw2ICsyODcs MjkgQEAgdm9pZCB0c3RfUUJ1ZmZlcjo6c2VlaygpCisgICAgIFFDT01QQVJFKGJ1ZmZlci5zaXpl KCksIHBvcyk7CisgfQorIAorK3ZvaWQgdHN0X1FCdWZmZXI6OmludmFsaWRTZWVrcygpCisrewor KyAgICBpZiBjb25zdGV4cHIgKHNpemVvZihxc2l6ZXR5cGUpID09IHNpemVvZihxaW50NjQpKSB7 CisrICAgICAgICAvLyBzaXplb2YocXNpemV0eXBlKSA9PSBzaXplb2YocWludDY0KSwgc28gKzEg d291bGQgb3ZlcmZsb3cKKysgICAgICAgIFFTS0lQKCJUaGlzIGlzIGEgMzItYml0LW9ubHkgdGVz dC4iKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIFFCdWZmZXIgYnVmZmVyOworKyAgICAgICAg YnVmZmVyLm9wZW4oUUlPRGV2aWNlOjpXcml0ZU9ubHkpOworKyAgICAgICAgUUNPTVBBUkUoYnVm ZmVyLmJ1ZmZlcigpLnNpemUoKSwgcXNpemV0eXBlKDApKTsKKysgICAgICAgIFFDT01QQVJFKGJ1 ZmZlci5wb3MoKSwgcWludDY0KDApKTsKKysgICAgICAgIGNvbnN0ZXhwciBxaW50NjQgTWF4UUJ5 dGVBcnJheUNhcGFjaXR5ID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8cXNpemV0eXBlPjo6bWF4KSgp OworKyAgICAgICAgLy8gdGhpcyBzaG91bGQgZmFpbCBmYXN0LCBub3QgYWZ0ZXIgdHJ5aW5nIHRv IGFsbG9jYXRlIG5lYXJseSAyIEdpQiBvZiBkYXRhLAorKyAgICAgICAgLy8gcG90ZW50aWFsbHkg Y3Jhc2hpbmcgaW4gdGhlIHByb2Nlc3M6CisrICAgICAgICBRVkVSSUZZKCFidWZmZXIuc2Vlaygy ICogTWF4UUJ5dGVBcnJheUNhcGFjaXR5IC0gMSkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVy LmJ1ZmZlcigpLnNpemUoKSwgcXNpemV0eXBlKDApKTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZl ci5wb3MoKSwgcWludDY0KDApKTsKKysgICAgICAgIC8vIGRpdHRvOgorKyAgICAgICAgUVZFUklG WSghYnVmZmVyLnNlZWsoTWF4UUJ5dGVBcnJheUNhcGFjaXR5ICsgMSkpOworKyAgICAgICAgUUNP TVBBUkUoYnVmZmVyLmJ1ZmZlcigpLnNpemUoKSwgcXNpemV0eXBlKDApKTsKKysgICAgICAgIFFD T01QQVJFKGJ1ZmZlci5wb3MoKSwgcWludDY0KDApKTsKKysgICAgfQorK30KKysKKyB2b2lkIHRz dF9RQnVmZmVyOjpzZWVrVGVzdF9kYXRhKCkKKyB7CisgICAgIHdyaXRlQmxvY2tfZGF0YSgpOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWlvZGV2aWNlL3RzdF9x aW9kZXZpY2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0 X3Fpb2RldmljZS5jcHAKK2luZGV4IGRhNTMyNzU5NGMuLjRhMDRlMGY3YzYgMTAwNjQ0CistLS0g YS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNw cAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fpb2Rl dmljZS5jcHAKK0BAIC01NjEsNyArNTYxLDggQEAgcHJvdGVjdGVkOgorICAgICBxaW50NjQgcmVh ZERhdGEoY2hhciAqZGF0YSwgcWludDY0IG1heFNpemUpIG92ZXJyaWRlCisgICAgIHsKKyAgICAg ICAgIG1heFNpemUgPSBxTWluKG1heFNpemUsIHFpbnQ2NChidWYtPnNpemUoKSAtIG9mZnNldCkp OworLSAgICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi0+Y29uc3REYXRhKCkgKyBvZmZzZXQsIG1heFNp emUpOworKyAgICAgICAgaWYgKG1heFNpemUgPiAwKQorKyAgICAgICAgICAgIG1lbWNweShkYXRh LCBidWYtPmNvbnN0RGF0YSgpICsgb2Zmc2V0LCBtYXhTaXplKTsKKyAgICAgICAgIG9mZnNldCAr PSBtYXhTaXplOworICAgICAgICAgcmV0dXJuIG1heFNpemU7CisgICAgIH0KK0BAIC02MDQsMTMg KzYwNSwxNSBAQCBwcm90ZWN0ZWQ6CisgICAgIHFpbnQ2NCByZWFkRGF0YShjaGFyICpkYXRhLCBx aW50NjQgbWF4U2l6ZSkgb3ZlcnJpZGUKKyAgICAgeworICAgICAgICAgbWF4U2l6ZSA9IHFNaW4o bWF4U2l6ZSwgcWludDY0KGJ1Zi5zaXplKCkgLSBwb3MoKSkpOworLSAgICAgICAgbWVtY3B5KGRh dGEsIGJ1Zi5jb25zdERhdGEoKSArIHBvcygpLCBtYXhTaXplKTsKKysgICAgICAgIGlmIChtYXhT aXplID4gMCkKKysgICAgICAgICAgICBtZW1jcHkoZGF0YSwgYnVmLmNvbnN0RGF0YSgpICsgcG9z KCksIG1heFNpemUpOworICAgICAgICAgcmV0dXJuIG1heFNpemU7CisgICAgIH0KKyAgICAgcWlu dDY0IHdyaXRlRGF0YShjb25zdCBjaGFyICpkYXRhLCBxaW50NjQgbWF4U2l6ZSkgb3ZlcnJpZGUK KyAgICAgeworICAgICAgICAgbWF4U2l6ZSA9IHFNaW4obWF4U2l6ZSwgcWludDY0KGJ1Zi5zaXpl KCkgLSBwb3MoKSkpOworLSAgICAgICAgbWVtY3B5KGJ1Zi5kYXRhKCkgKyBwb3MoKSwgZGF0YSwg bWF4U2l6ZSk7CisrICAgICAgICBpZiAobWF4U2l6ZSA+IDApCisrICAgICAgICAgICAgbWVtY3B5 KGJ1Zi5kYXRhKCkgKyBwb3MoKSwgZGF0YSwgbWF4U2l6ZSk7CisgICAgICAgICByZXR1cm4gbWF4 U2l6ZTsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIv aW8vcXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIv aW8vcXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcAoraW5kZXggZGI2MGJlYWQ2NC4uZjM0NWE0NDQx NCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcXByb2Nlc3MvdHN0 X3Fwcm9jZXNzLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vz cy90c3RfcXByb2Nlc3MuY3BwCitAQCAtMSw3ICsxLDggQEAKKyAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICoqCisgKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKy0qKiBD b3B5cmlnaHQgKEMpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24uCisrKiogQ29weXJpZ2h0IChDKSAy MDIwIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgSW50ZWwgQ29y cG9yYXRpb24uCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoq CisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qgc3VpdGUgb2YgdGhlIFF0IFRvb2xr aXQuCitAQCAtMTUwLDYgKzE1MSw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgc3RhcnRT dG9wU3RhcnRTdG9wQnVmZmVycygpOworICAgICB2b2lkIHByb2Nlc3NFdmVudHNJbkFSZWFkeVJl YWRTbG90X2RhdGEoKTsKKyAgICAgdm9pZCBwcm9jZXNzRXZlbnRzSW5BUmVhZHlSZWFkU2xvdCgp OworKyAgICB2b2lkIHN0YXJ0RnJvbUN1cnJlbnRXb3JraW5nRGlyX2RhdGEoKTsKKysgICAgdm9p ZCBzdGFydEZyb21DdXJyZW50V29ya2luZ0RpcigpOworIAorICAgICAvLyBrZWVwIHRoZXNlIGF0 IHRoZSBlbmQsIHNpbmNlIHRoZXkgdXNlIGxvdHMgb2YgcHJvY2Vzc2VzIGFuZCBzb21ldGltZXMK KyAgICAgLy8gY2F1c2VkIG9ic2N1cmUgZmFpbHVyZXMgdG8gb2NjdXIgaW4gdGVzdHMgdGhhdCBm b2xsb3dlZCB0aGVtIChlc3AuIG9uIHRoZSBNYWMpCitAQCAtMjczMSw1ICsyNzM0LDk0IEBAIHZv aWQgdHN0X1FQcm9jZXNzOjpmaW5pc2hQcm9jZXNzQmVmb3JlUmVhZGluZ0RvbmVfZGVwcmVjYXRl ZCgpCisgCisgI2VuZGlmCisgCisrZW51bSBjbGFzcyBDaGRpck1vZGUgeworKyAgICBOb25lID0g MCwKKysgICAgSW5QYXJlbnQsCisrICAgIEluQ2hpbGQKKyt9OworK1FfREVDTEFSRV9NRVRBVFlQ RShDaGRpck1vZGUpCisrCisrdm9pZCB0c3RfUVByb2Nlc3M6OnN0YXJ0RnJvbUN1cnJlbnRXb3Jr aW5nRGlyX2RhdGEoKQorK3sKKysgICAgcVJlZ2lzdGVyTWV0YVR5cGU8Q2hkaXJNb2RlPigpOwor KyAgICBRVGVzdDo6YWRkQ29sdW1uPFFTdHJpbmc+KCJwcm9ncmFtUHJlZml4Iik7CisrICAgIFFU ZXN0OjphZGRDb2x1bW48Q2hkaXJNb2RlPigiY2hkaXJNb2RlIik7CisrICAgIFFUZXN0OjphZGRD b2x1bW48Ym9vbD4oInN1Y2Nlc3MiKTsKKysKKysgICAgY29uc3RleHByIGJvb2wgSXNXaW5kb3dz ID0gdHJ1ZQorKyNpZmRlZiBRX09TX1VOSVgKKysgICAgICAgICAgICAmJiBmYWxzZQorKyNlbmRp ZgorKyAgICAgICAgICAgIDsKKysKKysgICAgLy8gYmFzZWxpbmU6IHRyeWluZyB0byBleGVjdXRl IHRoZSBkaXJlY3RvcnksIHRoaXMgY2FuJ3QgcG9zc2libHkgc3VjY2VlZCEKKysgICAgUVRlc3Q6 Om5ld1JvdygicGxhaW4tc2FtZS1jd2QiKSA8PCBRU3RyaW5nKCkgPDwgQ2hkaXJNb2RlOjpOb25l IDw8IGZhbHNlOworKworKyAgICAvLyBjcm9zcy1wbGF0Zm9ybSBiZWhhdmlvcjogbmVpdGhlciBP UyBzZWFyY2hlcyB0aGUgc2V0V29ya2luZ0RpcmVjdG9yeSgpCisrICAgIC8vIGRpciB3aXRob3V0 ICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicGxhaW4tY2hpbGQtY2hkaXIiKSA8PCBRU3RyaW5n KCkgPDwgQ2hkaXJNb2RlOjpJbkNoaWxkIDw8IGZhbHNlOworKworKyAgICAvLyBjcm9zcy1wbGF0 Zm9ybSBiZWhhdmlvcjogYm90aCBPU2VzIHNlYXJjaCB0aGUgcGFyZW50J3MgQ1dEIHdpdGggIi4v IgorKyAgICBRVGVzdDo6bmV3Um93KCJwcmVmaXhlZC1wYXJlbnQtY2hkaXIiKSA8PCAiLi8iIDw8 IENoZGlyTW9kZTo6SW5QYXJlbnQgPDwgdHJ1ZTsKKysKKysgICAgLy8gb3Bwb3NpdGUgYmVoYXZp b3JzOiBXaW5kb3dzIHNlYXJjaGVzIHRoZSBwYXJlbnQncyBDV0QgYW5kIFVuaXggc2VhcmNoZXMK KysgICAgLy8gdGhlIGNoaWxkJ3Mgd2l0aCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3coInByZWZp eGVkLWNoaWxkLWNoZGlyIikgPDwgIi4vIiA8PCBDaGRpck1vZGU6OkluQ2hpbGQgPDwgIUlzV2lu ZG93czsKKysKKysgICAgLy8gV2luZG93cyBzZWFyY2hlcyB0aGUgcGFyZW50J3MgQ1dEIHdpdGhv dXQgIi4vIgorKyAgICBRVGVzdDo6bmV3Um93KCJwbGFpbi1wYXJlbnQtY2hkaXIiKSA8PCBRU3Ry aW5nKCkgPDwgQ2hkaXJNb2RlOjpJblBhcmVudCA8PCBJc1dpbmRvd3M7CisrfQorKworK3ZvaWQg dHN0X1FQcm9jZXNzOjpzdGFydEZyb21DdXJyZW50V29ya2luZ0RpcigpCisreworKyAgICBRRkVU Q0goUVN0cmluZywgcHJvZ3JhbVByZWZpeCk7CisrICAgIFFGRVRDSChDaGRpck1vZGUsIGNoZGly TW9kZSk7CisrICAgIFFGRVRDSChib29sLCBzdWNjZXNzKTsKKysKKysgICAgUVByb2Nlc3MgcHJv Y2VzczsKKysgICAgcVJlZ2lzdGVyTWV0YVR5cGU8UVByb2Nlc3M6OlByb2Nlc3NFcnJvcj4oKTsK KysgICAgUVNpZ25hbFNweSBlcnJvclNweSgmcHJvY2VzcywgJlFQcm9jZXNzOjplcnJvck9jY3Vy cmVkKTsKKysgICAgUVZFUklGWShlcnJvclNweS5pc1ZhbGlkKCkpOworKworKyAgICAvLyBib3Ro IHRoZSBkaXIgbmFtZSBhbmQgdGhlIGV4ZWN1dGFibGUgbmFtZQorKyAgICBjb25zdCBRU3RyaW5n IHRhcmdldCA9IFFTdHJpbmdMaXRlcmFsKCJ0ZXN0UHJvY2Vzc05vcm1hbCIpOworKyAgICBwcm9j ZXNzLnNldFByb2dyYW0ocHJvZ3JhbVByZWZpeCArIHRhcmdldCk7CisrCisrI2lmZGVmIFFfT1Nf VU5JWAorKyAgICAvLyBSZXNldCBQQVRILCB0byBiZSBzdXJlIGl0IGRvZXNuJ3QgY29udGFpbiAu IG9yIHRoZSBlbXB0eSBwYXRoLgorKyAgICAvLyBXZSBjYW4ndCBkbyB0aGlzIG9uIFdpbmRvd3Mg YmVjYXVzZSBETExzIGFyZSBzZWFyY2hlZCBpbiBQQVRICisrICAgIC8vIGFuZCBXaW5kb3dzIGFs d2F5cyBzZWFyY2hlcyAiLiIgYW55d2F5LgorKyAgICBhdXRvIHJlc3RvcmVFbnYgPSBxU2NvcGVH dWFyZChbb2xkID0gcWdldGVudigiUEFUSCIpXSB7CisrICAgICAgICBxcHV0ZW52KCJQQVRIIiwg b2xkKTsKKysgICAgfSk7CisrICAgIHFwdXRlbnYoIlBBVEgiLCAiLyIpOworKyNlbmRpZgorKwor KyAgICBzd2l0Y2ggKGNoZGlyTW9kZSkgeworKyAgICBjYXNlIENoZGlyTW9kZTo6SW5QYXJlbnQ6 IHsKKysgICAgICAgIGF1dG8gcmVzdG9yZUN3ZCA9IHFTY29wZUd1YXJkKFtvbGQgPSBRRGlyOjpj dXJyZW50UGF0aCgpXSB7CisrICAgICAgICAgICAgUURpcjo6c2V0Q3VycmVudChvbGQpOworKyAg ICAgICAgfSk7CisrICAgICAgICBRVkVSSUZZKFFEaXI6OnNldEN1cnJlbnQodGFyZ2V0KSk7Cisr ICAgICAgICBwcm9jZXNzLnN0YXJ0KCk7CisrICAgICAgICBicmVhazsKKysgICAgfQorKyAgICBj YXNlIENoZGlyTW9kZTo6SW5DaGlsZDoKKysgICAgICAgIHByb2Nlc3Muc2V0V29ya2luZ0RpcmVj dG9yeSh0YXJnZXQpOworKyAgICAgICAgUV9GQUxMVEhST1VHSCgpOworKyAgICBjYXNlIENoZGly TW9kZTo6Tm9uZToKKysgICAgICAgIHByb2Nlc3Muc3RhcnQoKTsKKysgICAgICAgIGJyZWFrOwor KyAgICB9CisrCisrICAgIFFDT01QQVJFKHByb2Nlc3Mud2FpdEZvclN0YXJ0ZWQoKSwgc3VjY2Vz cyk7CisrICAgIFFDT01QQVJFKGVycm9yU3B5LmNvdW50KCksIGludCghc3VjY2VzcykpOworKyAg ICBpZiAoc3VjY2VzcykgeworKyAgICAgICAgUVZFUklGWShwcm9jZXNzLndhaXRGb3JGaW5pc2hl ZCgpKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIFFDT01QQVJFKHByb2Nlc3MuZXJyb3IoKSwg UVByb2Nlc3M6OkZhaWxlZFRvU3RhcnQpOworKyAgICB9CisrfQorKworIFFURVNUX01BSU4odHN0 X1FQcm9jZXNzKQorICNpbmNsdWRlICJ0c3RfcXByb2Nlc3MubW9jIgorZGlmZiAtLWdpdCBhL3F0 YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94 eW1vZGVsL3RzdF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLmNwcCBiL3F0YmFzZS90ZXN0 cy9hdXRvL2NvcmVsaWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsL3Rz dF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLmNwcAoraW5kZXggZTFlYTdhNDU1Mi4uOTA5 NzJjYWE1NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaXRlbW1vZGVs cy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsL3RzdF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94 eW1vZGVsLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVtbW9kZWxzL3Fj b25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9k ZWwuY3BwCitAQCAtMTE3LDYgKzExNyw3IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBz aG91bGRQcm9wYWdhdGVEcm9wQWZ0ZXJMYXN0Um93X2RhdGEoKTsKKyAgICAgdm9pZCBzaG91bGRQ cm9wYWdhdGVEcm9wQWZ0ZXJMYXN0Um93KCk7CisgICAgIHZvaWQgcXRidWc5MTc4OCgpOworKyAg ICB2b2lkIHF0YnVnOTE4NzgoKTsKKyAKKyBwcml2YXRlOgorICAgICBRU3RhbmRhcmRJdGVtTW9k ZWwgbW9kOworQEAgLTg0Myw2ICs4NDQsMjIgQEAgdm9pZCB0c3RfUUNvbmNhdGVuYXRlVGFibGVz UHJveHlNb2RlbDo6cXRidWc5MTc4OCgpCisgICAgIFFDT01QQVJFKHByb3h5Q29uY2F0LmNvbHVt bkNvdW50KCksIDApOworIH0KKyAKKyt2b2lkIHRzdF9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1v ZGVsOjpxdGJ1ZzkxODc4KCkKKyt7CisrICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCBtOworKyAgICBt LnNldFJvd0NvdW50KDQpOworKyAgICBtLnNldENvbHVtbkNvdW50KDQpOworKworKyAgICBRQ29u Y2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsIHBtOworKyAgICBRU29ydEZpbHRlclByb3h5TW9kZWwg cHJveHlGaWx0ZXI7CisrICAgIHByb3h5RmlsdGVyLnNldFNvdXJjZU1vZGVsKCZwbSk7CisrICAg IHByb3h5RmlsdGVyLnNldEZpbHRlckZpeGVkU3RyaW5nKCJzb21ldGhpbmciKTsKKysgICAgcG0u YWRkU291cmNlTW9kZWwoJm0pOyAgLy8gVGhpcyBzaG91bGQgbm90IGFzc2VydAorKworKyAgICBR Q09NUEFSRShwbS5jb2x1bW5Db3VudCgpLCA0KTsKKysgICAgUUNPTVBBUkUocG0ucm93Q291bnQo KSwgNCk7CisrfQorKworIFFURVNUX0dVSUxFU1NfTUFJTih0c3RfUUNvbmNhdGVuYXRlVGFibGVz UHJveHlNb2RlbCkKKyAKKyAjaW5jbHVkZSAidHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9k ZWwubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIva2VybmVsL3Fv YmplY3QvdHN0X3FvYmplY3QuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwv cW9iamVjdC90c3RfcW9iamVjdC5jcHAKK2luZGV4IDliZDY2YzA4MzUuLmVkNGEwYmFlNWQgMTAw NjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9x b2JqZWN0LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9iamVj dC90c3RfcW9iamVjdC5jcHAKK0BAIC0xNTgsNiArMTU4LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAg ICAgdm9pZCBudWxsUmVjZWl2ZXIoKTsKKyAgICAgdm9pZCBmdW5jdG9yUmVmZXJlbmNlc0Nvbm5l Y3Rpb24oKTsKKyAgICAgdm9pZCBkaXNjb25uZWN0RGlzY29ubmVjdHMoKTsKKysgICAgdm9pZCBk ZWNsYXJhdGl2ZURhdGEoKTsKKyB9OworIAorIHN0cnVjdCBRT2JqZWN0Q3JlYXRlZE9uU2h1dGRv d24KK0BAIC03Njc5LDUgKzc2ODAsODEgQEAgdm9pZCB0c3RfUU9iamVjdDo6ZGlzY29ubmVjdERp c2Nvbm5lY3RzKCkKKyBRX1NUQVRJQ19BU1NFUlQoUXRQcml2YXRlOjpIYXNRX09CSkVDVF9NYWNy bzx0c3RfUU9iamVjdD46OlZhbHVlKTsKKyBRX1NUQVRJQ19BU1NFUlQoIVF0UHJpdmF0ZTo6SGFz UV9PQkpFQ1RfTWFjcm88U2libGluZ0RlbGV0ZXI+OjpWYWx1ZSk7CisgCisrI2lmZGVmIFFUX0JV SUxEX0lOVEVSTkFMCisrLyoKKysgICAgU2luY2UgUU9iamVjdFByaXZhdGUgc3RvcmVzIHRoZSBk ZWNsYXJhdGl2ZURhdGEgcG9pbnRlciBpbiBhIHVuaW9uIHdpdGggdGhlIHBvaW50ZXIKKysgICAg dG8gdGhlIGN1cnJlbnRseSBkZXN0cm95ZWQgY2hpbGQsIGNhbGxzIHRvIHRoZSBRdERlY2xhcmF0 aXZlIGhhbmRsZXJzIG5lZWQgdG8gYmUKKysgICAgY29ycmVjdGx5IGd1YXJkZWQuIFFUQlVHLTEw NTI4NgorKyovCisrbmFtZXNwYWNlIFF0RGVjbGFyYXRpdmUgeworK3N0YXRpYyBRQWJzdHJhY3RE ZWNsYXJhdGl2ZURhdGEgKnRoZURhdGE7CisrCisrc3RhdGljIHZvaWQgZGVzdHJveWVkKFFBYnN0 cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgUU9iamVjdCAqKQorK3sKKysgICAgUUNPTVBBUkUo ZGF0YSwgdGhlRGF0YSk7CisrfQorK3N0YXRpYyB2b2lkIHNpZ25hbEVtaXR0ZWQoUUFic3RyYWN0 RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBRT2JqZWN0ICosIGludCwgdm9pZCAqKikKKyt7CisrICAg IFFDT01QQVJFKGRhdGEsIHRoZURhdGEpOworK30KKysvLyB3ZSBjYW4ndCB1c2UgUUNPTVBBUkUg aW4gdGhlIG5leHQgdHdvIGZ1bmN0aW9ucywgYXMgdGhleSBkb24ndCByZXR1cm4gdm9pZAorK3N0 YXRpYyBpbnQgcmVjZWl2ZXJzKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgY29uc3Qg UU9iamVjdCAqLCBpbnQpCisreworKyAgICBRVGVzdDo6cUNvbXBhcmUoZGF0YSwgdGhlRGF0YSwg ImRhdGEiLCAidGhlRGF0YSIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisrICAgIHJldHVybiAwOwor K30KKytzdGF0aWMgYm9vbCBpc1NpZ25hbENvbm5lY3RlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURh dGEgKmRhdGEsIGNvbnN0IFFPYmplY3QgKiwgaW50KQorK3sKKysgICAgUVRlc3Q6OnFDb21wYXJl KGRhdGEsIHRoZURhdGEsICJkYXRhIiwgInRoZURhdGEiLCBfX0ZJTEVfXywgX19MSU5FX18pOwor KyAgICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrY2xhc3MgT2JqZWN0IDogcHVibGljIFFPYmplY3QK Kyt7CisrICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAgICB1c2luZyBRT2JqZWN0OjpRT2JqZWN0 OworKyAgICB+T2JqZWN0KCkKKysgICAgeworKyAgICAgICAgaWYgKE9iamVjdCAqcCA9IHN0YXRp Y19jYXN0PE9iamVjdCAqPihwYXJlbnQoKSkpCisrICAgICAgICAgICAgcC0+ZW1pdFNpZ25hbCgp OworKyAgICB9CisrCisrICAgIHZvaWQgZW1pdFNpZ25hbCgpCisrICAgIHsKKysgICAgICAgIGVt aXQgdGhlU2lnbmFsKCk7CisrICAgIH0KKysKKytzaWduYWxzOgorKyAgICB2b2lkIHRoZVNpZ25h bCgpOworK307CisrCisrfQorKyNlbmRpZgorKworK3ZvaWQgdHN0X1FPYmplY3Q6OmRlY2xhcmF0 aXZlRGF0YSgpCisreworKyNpZmRlZiBRVF9CVUlMRF9JTlRFUk5BTAorKyAgICBRU2NvcGVkVmFs dWVSb2xsYmFjayBkZXN0cm95ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpkZXN0cm95ZWQs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZlOjpkZXN0 cm95ZWQpOworKyAgICBRU2NvcGVkVmFsdWVSb2xsYmFjayBzaWduYWxFbWl0dGVkKFFBYnN0cmFj dERlY2xhcmF0aXZlRGF0YTo6c2lnbmFsRW1pdHRlZCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZlOjpzaWduYWxFbWl0dGVkKTsKKysgICAgUVNj b3BlZFZhbHVlUm9sbGJhY2sgcmVjZWl2ZXJzKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6cmVj ZWl2ZXJzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2 ZTo6cmVjZWl2ZXJzKTsKKysgICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sgaXNTaWduYWxDb25uZWN0 ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjppc1NpZ25hbENvbm5lY3RlZCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2ZTo6aXNTaWdu YWxDb25uZWN0ZWQpOworKworKyAgICBRdERlY2xhcmF0aXZlOjpPYmplY3QgcDsKKysgICAgUU9i amVjdFByaXZhdGUgKnByaXYgPSBRT2JqZWN0UHJpdmF0ZTo6Z2V0KCZwKTsKKysgICAgcHJpdi0+ ZGVjbGFyYXRpdmVEYXRhID0gUXREZWNsYXJhdGl2ZTo6dGhlRGF0YSA9IG5ldyBRQWJzdHJhY3RE ZWNsYXJhdGl2ZURhdGE7CisrCisrICAgIGNvbm5lY3QoJnAsICZRdERlY2xhcmF0aXZlOjpPYmpl Y3Q6OnRoZVNpZ25hbCwgJnAsIFtdeworKyAgICB9KTsKKysKKysgICAgUXREZWNsYXJhdGl2ZTo6 T2JqZWN0ICpjaGlsZCA9IG5ldyBRdERlY2xhcmF0aXZlOjpPYmplY3Q7CisrICAgIGNoaWxkLT5z ZXRQYXJlbnQoJnApOworKyNlbmRpZgorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RT2JqZWN0KQor ICNpbmNsdWRlICJ0c3RfcW9iamVjdC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1 dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAg Yi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlL3RzdF9x bWltZWRhdGFiYXNlLmNwcAoraW5kZXggMGVhNDIyZWNiYy4uMWEzMjU2NTM0YiAxMDA2NDQKKy0t LSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0 X3FtaW1lZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0 eXBlcy9xbWltZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcAorQEAgLTcwLDE1ICs3MCwx NSBAQCBzdGF0aWMgaW5saW5lIFFTdHJpbmcgdGVzdFN1aXRlV2FybmluZygpCisgCisgICAgIFFT dHJpbmcgcmVzdWx0OworICAgICBRVGV4dFN0cmVhbSBzdHIoJnJlc3VsdCk7CistICAgIHN0ciA8 PCAiXG5DYW5ub3QgZmluZCB0aGUgc2hhcmVkLW1pbWUtaW5mbyB0ZXN0IHN1aXRlXG5zdGFydGlu ZyBmcm9tOiAiCisrICAgIHN0ciA8PCAiXG5DYW5ub3QgZmluZCB0aGUgc2hhcmVkLW1pbWUtaW5m byB0ZXN0IHN1aXRlXG5pbiB0aGUgcGFyZW50IG9mOiAiCisgICAgICAgICA8PCBRRGlyOjp0b05h dGl2ZVNlcGFyYXRvcnMoUURpcjo6Y3VycmVudFBhdGgoKSkgPDwgIlxuIgorICAgICAgICAgICAg ImNkICIgPDwgUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKFFTdHJpbmdMaXRlcmFsKCJ0ZXN0cy9h dXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UiKSkgPDwgIlxuIgorLSAgICAgICAg ICAgIndnZXQgaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hkZy9zaGFyZWQtbWltZS1pbmZv L3NuYXBzaG90L1JlbGVhc2UtMS0xMC56aXBcbiIKKy0gICAgICAgICAgICJ1bnppcCBSZWxlYXNl LTEtMTAuemlwXG4iOworKyAgICAgICAgICAgIndnZXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0 b3Aub3JnL3hkZy9zaGFyZWQtbWltZS1pbmZvLy0vYXJjaGl2ZS8yLjEvc2hhcmVkLW1pbWUtaW5m by0yLjEuemlwXG4iCisrICAgICAgICAgICAidW56aXAgc2hhcmVkLW1pbWUtaW5mby0yLjEuemlw XG4iOworICNpZmRlZiBRX09TX1dJTgorLSAgICBzdHIgPDwgIm1rZGlyIHRlc3RmaWxlc1xueGNv cHkgL3MgUmVsZWFzZS0xLTEwIHMtbS1pXG4iOworKyAgICBzdHIgPDwgIm1rZGlyIHRlc3RmaWxl c1xueGNvcHkgL3Mgc2hhcmVkLW1pbWUtaW5mby0yLjEgcy1tLWlcbiI7CisgI2Vsc2UKKy0gICAg c3RyIDw8ICJsbiAtcyBSZWxlYXNlLTEtMTAgcy1tLWlcbiI7CisrICAgIHN0ciA8PCAibG4gLXMg c2hhcmVkLW1pbWUtaW5mby0yLjEgcy1tLWlcbiI7CisgI2VuZGlmCisgICAgIHJldHVybiByZXN1 bHQ7CisgfQorQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIHRzdF9RTWltZURhdGFiYXNlOjppbml0 VGVzdENhc2UoKQorICAgICBRVkVSSUZZMihjb3B5UmVzb3VyY2VGaWxlKHhtbEZpbGVOYW1lLCB4 bWxUYXJnZXRGaWxlTmFtZSwgJmVycm9yTWVzc2FnZSksIHFQcmludGFibGUoZXJyb3JNZXNzYWdl KSk7CisgI2VuZGlmCisgCistICAgIG1fdGVzdFN1aXRlID0gUUZJTkRURVNUREFUQSgicy1tLWkv dGVzdHMiKTsKKysgICAgbV90ZXN0U3VpdGUgPSBRRklORFRFU1REQVRBKCJzLW0taS90ZXN0cy9t aW1lLWRldGVjdGlvbiIpOworICAgICBpZiAobV90ZXN0U3VpdGUuaXNFbXB0eSgpKQorICAgICAg ICAgcVdhcm5pbmcoIiVzIiwgcVByaW50YWJsZSh0ZXN0U3VpdGVXYXJuaW5nKCkpKTsKKyAKK0BA IC02MTEsNyArNjExLDcgQEAgdm9pZCB0c3RfUU1pbWVEYXRhYmFzZTo6YWxsTWltZVR5cGVzKCkK KyAgICAgUVZFUklGWSghbHN0LmlzRW1wdHkoKSk7CisgCisgICAgIC8vIEhhcmRjb2RpbmcgdGhp cyBpcyB0aGUgb25seSB3YXkgdG8gY2hlY2sgYm90aCBwcm92aWRlcnMgZmluZCB0aGUgc2FtZSBu dW1iZXIgb2YgbWltZXR5cGVzLgorLSAgICBRQ09NUEFSRShsc3QuY291bnQoKSwgNzc5KTsKKysg ICAgUUNPTVBBUkUobHN0LmNvdW50KCksIDgxMSk7CisgCisgICAgIGZvcmVhY2ggKGNvbnN0IFFN aW1lVHlwZSAmbWltZSwgbHN0KSB7CisgICAgICAgICBjb25zdCBRU3RyaW5nIG5hbWUgPSBtaW1l Lm5hbWUoKTsKK0BAIC02MzEsMTAgKzYzMSw5IEBAIHZvaWQgdHN0X1FNaW1lRGF0YWJhc2U6OnN1 ZmZpeGVzX2RhdGEoKQorIAorICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIGEgc2lu Z2xlIHBhdHRlcm4iKSA8PCAiYXBwbGljYXRpb24vcGRmIiA8PCAiKi5wZGYiIDw8ICJwZGYiOwor ICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG11bHRpcGxlIHBhdHRlcm5zIikgPDwg ImFwcGxpY2F0aW9uL3gta3ByZXNlbnRlciIgPDwgIioua3ByOyoua3B0IiA8PCAia3ByIjsKKy0g ICAgUVRlc3Q6Om5ld1JvdygianBlZyIpIDw8ICJpbWFnZS9qcGVnIiA8PCAiKi5qcGU7Ki5qcGc7 Ki5qcGVnIiA8PCAianBlZyI7CistICAgIC8vaWYgKEtNaW1lVHlwZTo6c2hhcmVkTWltZUluZm9W ZXJzaW9uKCkgPiBLREVfTUFLRV9WRVJTSU9OKDAsIDYwLCAwKSkgeworLSAgICAgICAgUVRlc3Q6 Om5ld1JvdygibWltZXR5cGUgd2l0aCBtYW55IHBhdHRlcm5zIikgPDwgImFwcGxpY2F0aW9uL3Zu ZC53b3JkcGVyZmVjdCIgPDwgIioud3A7Ki53cDQ7Ki53cDU7Ki53cDY7Ki53cGQ7Ki53cHAiIDw8 ICJ3cCI7CistICAgIC8vfQorKyAgICAvLyBUaGUgcHJlZmVycmVkIHN1ZmZpeCBmb3IgaW1hZ2Uv anBlZyBpcyAqLmpwZywgYXMgcGVyIGh0dHBzOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9p ZD0xNzY3MzcKKysgICAgUVRlc3Q6Om5ld1JvdygianBlZyIpIDw8ICJpbWFnZS9qcGVnIiA8PCAi Ki5qcGU7Ki5qcGc7Ki5qcGVnIiA8PCAianBnIjsKKysgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5 cGUgd2l0aCBtYW55IHBhdHRlcm5zIikgPDwgImFwcGxpY2F0aW9uL3ZuZC53b3JkcGVyZmVjdCIg PDwgIioud3A7Ki53cDQ7Ki53cDU7Ki53cDY7Ki53cGQ7Ki53cHAiIDw8ICJ3cCI7CisgICAgIFFU ZXN0OjpuZXdSb3coIm9hc2lzIHRleHQgbWltZXR5cGUiKSA8PCAiYXBwbGljYXRpb24vdm5kLm9h c2lzLm9wZW5kb2N1bWVudC50ZXh0IiA8PCAiKi5vZHQiIDw8ICJvZHQiOworICAgICBRVGVzdDo6 bmV3Um93KCJvYXNpcyBwcmVzZW50YXRpb24gbWltZXR5cGUiKSA8PCAiYXBwbGljYXRpb24vdm5k Lm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24iIDw8ICIqLm9kcCIgPDwgIm9kcCI7Cisg ICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbXVsdGlwbGUgcGF0dGVybnMiKSA8PCAi dGV4dC9wbGFpbiIgPDwgIiouYXNjOyoudHh0OyosdiIgPDwgInR4dCI7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxpemF0aW9uL2pzb24vdHN0X3F0anNvbi5j cHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6YXRpb24vanNvbi90c3RfcXRq c29uLmNwcAoraW5kZXggM2U1OGRkMDNjYy4uYzhmODJlZjVkNSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS90ZXN0cy9hdXRvL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3BwCisr KysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6YXRpb24vanNvbi90c3RfcXRq c29uLmNwcAorQEAgLTE3Niw2ICsxNzYsOCBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQg ZnJvbVRvVmFyaWFudENvbnZlcnNpb25zX2RhdGEoKTsKKyAgICAgdm9pZCBmcm9tVG9WYXJpYW50 Q29udmVyc2lvbnMoKTsKKyAKKysgICAgdm9pZCBub0xlYWtPbk5hbWVDbGFzaCgpOworKworIHBy aXZhdGU6CisgICAgIFFTdHJpbmcgdGVzdERhdGFEaXI7CisgfTsKK0BAIC0zNjg1LDUgKzM2ODcs MjMgQEAgdm9pZCB0c3RfUXRKc29uOjpmcm9tVG9WYXJpYW50Q29udmVyc2lvbnMoKQorICAgICB9 CisgfQorIAorK3ZvaWQgdHN0X1F0SnNvbjo6bm9MZWFrT25OYW1lQ2xhc2goKQorK3sKKysgICAg UUpzb25Eb2N1bWVudCBkb2MgPSBRSnNvbkRvY3VtZW50Ojpmcm9tSnNvbigie1wiXCI6e1wiXCI6 MH0sXCJcIjowfSIpOworKyAgICBRVkVSSUZZKCFkb2MuaXNOdWxsKCkpOworKyAgICBjb25zdCBR SnNvbk9iamVjdCBvYmogPSBkb2Mub2JqZWN0KCk7CisrCisrICAgIC8vIFJlbW92ZWQgdGhlIGR1 cGxpY2F0ZSBrZXkuCisrICAgIFFDT01QQVJFKG9iai5sZW5ndGgoKSwgMSk7CisrCisrICAgIC8v IFJldGFpbmVkIHRoZSBsYXN0IG9mIHRoZSBkdXBsaWNhdGVzLgorKyAgICBjb25zdCBRSnNvblZh bHVlIHZhbCA9IG9iai5iZWdpbigpLnZhbHVlKCk7CisrICAgIFFWRVJJRlkodmFsLmlzRG91Ymxl KCkpOworKyAgICBRQ09NUEFSRSh2YWwudG9Eb3VibGUoKSwgMC4wKTsKKysKKysgICAgLy8gSXQg c2hvdWxkIG5vdCBsZWFrLgorKyAgICAvLyBJbiBwYXJ0aWN1bGFyIGl0IHNob3VsZCBub3QgZm9y Z2V0IHRvIGRlcmVmIHRoZSBjb250YWluZXIgZm9yIHRoZSBpbm5lciBvYmplY3QuCisrfQorKwor IFFURVNUX01BSU4odHN0X1F0SnNvbikKKyAjaW5jbHVkZSAidHN0X3F0anNvbi5tb2MiCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1lem9uZS90c3RfcXRp bWV6b25lLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvdGltZS9xdGltZXpvbmUvdHN0 X3F0aW1lem9uZS5jcHAKK2luZGV4IGE1OWI1OGQ1N2YuLjI0MWMzZTg0YWMgMTAwNjQ0CistLS0g YS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9xdGltZXpvbmUu Y3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9x dGltZXpvbmUuY3BwCitAQCAtNjMsNiArNjMsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lk IGlzVmFsaWRJZF9kYXRhKCk7CisgICAgIHZvaWQgaXNWYWxpZElkKCk7CisgICAgIHZvaWQgbWFs Zm9ybWVkKCk7CisrICAgIHZvaWQgc2VyaWFsaXplKCk7CisgICAgIC8vIEJhY2tlbmQgdGVzdHMK KyAgICAgdm9pZCB1dGNUZXN0KCk7CisgICAgIHZvaWQgaWN1VGVzdCgpOworQEAgLTk0Nyw2ICs5 NDgsMzMgQEAgdm9pZCB0c3RfUVRpbWVab25lOjptYWxmb3JtZWQoKQorICAgICAgICAgYmFyZi5v ZmZzZXRGcm9tVXRjKG5vdyk7CisgfQorIAorK3ZvaWQgdHN0X1FUaW1lWm9uZTo6c2VyaWFsaXpl KCkKKyt7CisrICAgIGludCBwYXJ0cyA9IDA7CisrI2lmbmRlZiBRVF9OT19ERUJVR19TVFJFQU0K KysgICAgcURlYnVnKCkgPDwgUVRpbWVab25lKCk7IC8vIHRvIHZlcmlmeSBubyBjcmFzaAorKyAg ICBwYXJ0cysrOworKyNlbmRpZgorKyNpZm5kZWYgUVRfTk9fREFUQVNUUkVBTQorKyAgICBRQnl0 ZUFycmF5IGJsb2I7CisrICAgIHsKKysgICAgICAgIFFEYXRhU3RyZWFtIHN0cmVhbSgmYmxvYiwg UUlPRGV2aWNlOjpXcml0ZU9ubHkpOworKyAgICAgICAgc3RyZWFtIDw8IFFUaW1lWm9uZSgiRXVy b3BlL09zbG8iKSA8PCBRVGltZVpvbmUoNDIwKSA8PCBRVGltZVpvbmUoKSA8PCBxaW50NjQoLTEp OworKyAgICB9CisrICAgIFFEYXRhU3RyZWFtIHN0cmVhbSgmYmxvYiwgUUlPRGV2aWNlOjpSZWFk T25seSk7CisrICAgIFFUaW1lWm9uZSBpbnZhbGlkLCBvZmZzZXQsIG9zbG87CisrICAgIHFpbnQ2 NCBtaW51c29uZTsKKysgICAgc3RyZWFtID4+IG9zbG8gPj4gb2Zmc2V0ID4+IGludmFsaWQgPj4g bWludXNvbmU7CisrICAgIFFDT01QQVJFKG9zbG8sIFFUaW1lWm9uZSgiRXVyb3BlL09zbG8iKSk7 CisrICAgIFFDT01QQVJFKG9mZnNldCwgUVRpbWVab25lKDQyMCkpOworKyAgICBRVkVSSUZZKCFp bnZhbGlkLmlzVmFsaWQoKSk7CisrICAgIFFDT01QQVJFKG1pbnVzb25lLCBxaW50NjQoLTEpKTsK KysgICAgcGFydHMrKzsKKysjZW5kaWYKKysgICAgaWYgKCFwYXJ0cykKKysgICAgICAgIFFTS0lQ KCJObyBzZXJpYWxpemF0aW9uIGVuYWJsZWQiKTsKKyt9CisrCisgdm9pZCB0c3RfUVRpbWVab25l Ojp1dGNUZXN0KCkKKyB7CisgI2lmZGVmIFFUX0JVSUxEX0lOVEVSTkFMCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNpbnRlcmZhY2Uu Y3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNpbnRl cmZhY2UuY3BwCitpbmRleCAwNTQ4MGM2ZGQyLi43MGY0Yzc1NzU2IDEwMDY0NAorLS0tIGEvcXRi YXNlL3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNpbnRlcmZhY2UuY3Bw CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9kYnVzL3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2lu dGVyZmFjZS5jcHAKK0BAIC0zMjQsNiArMzI0LDEzIEBAIHZvaWQgdHN0X1FEQnVzSW50ZXJmYWNl Ojpub3RWYWxpZCgpCisgCisgICAgIFFWRVJJRlkoIWludGVyZmFjZS5pc1ZhbGlkKCkpOworICAg ICBRVkVSSUZZKCFRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKCZpbnRlcmZhY2UsICJMaXN0TmFt ZXMiLCBRdDo6RGlyZWN0Q29ubmVjdGlvbikpOworKworKyAgICAvLyBXaXRoIGEgY29ubmVjdGlv biwgYnV0IGVtcHR5L251bGwgc2VydmljZSBhbmQgcGF0aCBzcGVjaWZpZWQKKysgICAgUURCdXND b25uZWN0aW9uIGNvbiA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpOworKyAgICBRVkVS SUZZKGNvbi5pc0Nvbm5lY3RlZCgpKTsKKysgICAgUURCdXNJbnRlcmZhY2UgaWZhY2Uoe30sIHt9 LCB7fSwgY29uKTsKKysgICAgUVZFUklGWSghaWZhY2UuaXNWYWxpZCgpKTsKKysgICAgUVZFUklG WSghUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCgmaW50ZXJmYWNlLCAiTGlzdE5hbWVzIiwgUXQ6 OkRpcmVjdENvbm5lY3Rpb24pKTsKKyB9CisgCisgdm9pZCB0c3RfUURCdXNJbnRlcmZhY2U6Om5v dFZhbGlkRGVyaXZlZCgpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5l bC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlzZXF1ZW5jZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9n dWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVlbmNlLmNwcAoraW5kZXggODc0NDY4 Yzk1NC4uMDRjZWI0YWI2NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJu ZWwvcWtleXNlcXVlbmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMv YXV0by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVlbmNlLmNwcAorQEAgLTUw Nyw2ICs1MDcsMTAgQEAgdm9pZCB0c3RfUUtleVNlcXVlbmNlOjp0b1N0cmluZ0Zyb21LZXljb2Rl X2RhdGEoKQorICAgICBRVGVzdDo6bmV3Um93KCJDdHJsK0FsdCtOdW0rRGVsIikgPDwgUUtleVNl cXVlbmNlKFF0OjpDb250cm9sTW9kaWZpZXIgfCBRdDo6QWx0TW9kaWZpZXIgfCBRdDo6S2V5cGFk TW9kaWZpZXIgfCBRdDo6S2V5X0RlbGV0ZSkgPDwgIkN0cmwrQWx0K051bStEZWwiOworICAgICBR VGVzdDo6bmV3Um93KCJDdHJsK0lucyIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6Q29udHJvbE1vZGlm aWVyIHwgUXQ6OktleV9JbnNlcnQpIDw8ICJDdHJsK0lucyI7CisgICAgIFFUZXN0OjpuZXdSb3co IkN0cmwrTnVtK0lucygxKSIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X0luc2VydCB8IFF0OjpL ZXlwYWRNb2RpZmllciB8IFF0OjpDb250cm9sTW9kaWZpZXIpIDw8ICJDdHJsK051bStJbnMiOwor KyAgICBRVGVzdDo6bmV3Um93KCJDdHJsIikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfQ29udHJv bCkgPDwgIkNvbnRyb2wiOworKyAgICBRVGVzdDo6bmV3Um93KCJBbHQiKSA8PCBRS2V5U2VxdWVu Y2UoUXQ6OktleV9BbHQpIDw8ICJBbHQiOworKyAgICBRVGVzdDo6bmV3Um93KCJTaGlmdCIpIDw8 IFFLZXlTZXF1ZW5jZShRdDo6S2V5X1NoaWZ0KSA8PCAiU2hpZnQiOworKyAgICBRVGVzdDo6bmV3 Um93KCJNZXRhIikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfTWV0YSkgPDwgIk1ldGEiOworIH0K KyAKKyB2b2lkIHRzdF9RS2V5U2VxdWVuY2U6OnRvU3RyaW5nRnJvbUtleWNvZGUoKQorZGlmZiAt LWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250 ZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS90 c3RfcWZvbnRkYXRhYmFzZS5jcHAKK2luZGV4IDE1ZTBlY2FkYWEuLmI0ZWNhNzQyODMgMTAwNjQ0 CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9u dGRhdGFiYXNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRkYXRh YmFzZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAKK0BAIC04MSw2ICs4MSw4IEBAIHByaXZhdGUgc2xv dHM6CisgICAgIHZvaWQgcmVnaXN0ZXJPcGVuVHlwZVByZWZlcnJlZE5hbWVzU3lzdGVtKCk7Cisg ICAgIHZvaWQgcmVnaXN0ZXJPcGVuVHlwZVByZWZlcnJlZE5hbWVzQXBwbGljYXRpb24oKTsKKyAK KysgICAgdm9pZCBzdHJldGNoUmVzcGVjdGVkKCk7CisrCisgcHJpdmF0ZToKKyAgICAgUVN0cmlu ZyBtX2xlZEZvbnQ7CisgICAgIFFTdHJpbmcgbV90ZXN0Rm9udDsKK0BAIC0zNTUsNiArMzU3LDI4 IEBAIHN0YXRpYyBRU3RyaW5nIHRlc3RTdHJpbmcoKQorICAgICByZXR1cm4gUVN0cmluZ0xpdGVy YWwoImZvbyBiYXIiKTsKKyB9CisgCisrdm9pZCB0c3RfUUZvbnREYXRhYmFzZTo6c3RyZXRjaFJl c3BlY3RlZCgpCisreworKyAgICBpbnQgaXRhbGljSWQgPSBRRm9udERhdGFiYXNlOjphZGRBcHBs aWNhdGlvbkZvbnQobV90ZXN0Rm9udEl0YWxpYyk7CisrICAgIFFWRVJJRlkoaXRhbGljSWQgIT0g LTEpOworKworKyAgICBRVkVSSUZZKCFRRm9udERhdGFiYXNlOjphcHBsaWNhdGlvbkZvbnRGYW1p bGllcyhpdGFsaWNJZCkuaXNFbXB0eSgpKTsKKysKKysgICAgUVN0cmluZyBpdGFsaWNGb250TmFt ZSA9IFFGb250RGF0YWJhc2U6OmFwcGxpY2F0aW9uRm9udEZhbWlsaWVzKGl0YWxpY0lkKS5maXJz dCgpOworKworKyAgICBRRm9udCBpdGFsaWNGb250ID0gUUZvbnREYXRhYmFzZSgpLmZvbnQoaXRh bGljRm9udE5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRU3RyaW5nOjpmcm9tTGF0aW4xKCJJdGFsaWMiKSwgMTQpOworKyAgICBRVkVSSUZZKGl0YWxp Y0ZvbnQuaXRhbGljKCkpOworKworKyAgICBRRm9udCBpdGFsaWNTdHJldGNoZWRGb250ID0gaXRh bGljRm9udDsKKysgICAgaXRhbGljU3RyZXRjaGVkRm9udC5zZXRTdHJldGNoKCA0MDAgKTsKKysK KysgICAgUVZFUklGWShRRm9udE1ldHJpY3NGKGl0YWxpY0ZvbnQpLmhvcml6b250YWxBZHZhbmNl KFFTdHJpbmdMaXRlcmFsKCJmb29iYXIiKSkgPAorKyAgICAgICAgICAgIFFGb250TWV0cmljc0Yo aXRhbGljU3RyZXRjaGVkRm9udCkuaG9yaXpvbnRhbEFkdmFuY2UoUVN0cmluZ0xpdGVyYWwoImZv b2JhciIpKSk7CisrCisrICAgIFFGb250RGF0YWJhc2U6OnJlbW92ZUFwcGxpY2F0aW9uRm9udChp dGFsaWNJZCk7CisrfQorKworIHZvaWQgdHN0X1FGb250RGF0YWJhc2U6OmNvbmRlbnNlZEZvbnRX aWR0aE5vRm9udE1lcmdpbmcoKQorIHsKKyAgICAgaW50IHJlZ3VsYXJGb250SWQgPSBRRm9udERh dGFiYXNlOjphZGRBcHBsaWNhdGlvbkZvbnQobV90ZXN0Rm9udCk7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3Rlc3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmty ZXBseS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5 L3RzdF9xbmV0d29ya3JlcGx5LmNwcAoraW5kZXggM2Q0YTA5NGM0My4uYjQyM2UxMWE5OSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkv dHN0X3FuZXR3b3JrcmVwbHkuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL2Fj Y2Vzcy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcAorQEAgLTI4MSw2ICsyODEs NyBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgaW9HZXRGcm9tRmlsZVNwZWNpYWwoKTsK KyAgICAgdm9pZCBpb0dldEZyb21GaWxlX2RhdGEoKTsKKyAgICAgdm9pZCBpb0dldEZyb21GaWxl KCk7CisrICAgIHZvaWQgaW9HZXRGcm9tRmlsZVVybCgpOworICAgICB2b2lkIGlvR2V0RnJvbUZ0 cF9kYXRhKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRnRwKCk7CisgICAgIHZvaWQgaW9HZXRGcm9t RnRwV2l0aFJldXNlKCk7CitAQCAtMzMwMCw2ICszMzAxLDE4IEBAIHZvaWQgdHN0X1FOZXR3b3Jr UmVwbHk6OmlvR2V0RnJvbUZpbGUoKQorICAgICBRQ09NUEFSRShyZWFkZXIuZGF0YSwgZGF0YSk7 CisgfQorIAorK3ZvaWQgdHN0X1FOZXR3b3JrUmVwbHk6OmlvR2V0RnJvbUZpbGVVcmwoKQorK3sK KysgICAgLy8gVGhpcyBpbW1lZGlhdGVseSBmYWlscyBvbiBub24td2luZG93cyBwbGF0Zm9ybXM6 CisrICAgIFFOZXR3b3JrUmVxdWVzdCByZXF1ZXN0KFFVcmwoImZpbGU6Ly91bmMtc2VydmVyL3Nv bWUvcGF0aCIpKTsKKysgICAgUU5ldHdvcmtSZXBseVB0ciByZXBseShtYW5hZ2VyLmdldChyZXF1 ZXN0KSk7CisrICAgIFFTaWduYWxTcHkgZmluaXNoZWRTcHkocmVwbHkuZ2V0KCksICZRTmV0d29y a1JlcGx5OjpmaW5pc2hlZCk7CisrICAgIC8vIFFUQlVHLTEwNTYxODogVGhpcyB3b3VsZCwgb24g bm9uLVdpbmRvd3MgcGxhdGZvcm1zLCBuZXZlciBoYXBwZW4gYmVjYXVzZSB0aGUgc2lnbmFsCisr ICAgIC8vIHdhcyBlbWl0dGVkIGJlZm9yZSB0aGUgY29uc3RydWN0b3IgZmluaXNoZWQsIGxlYXZp bmcgbm8gY2hhbmNlIGF0IGFsbCB0byBjb25uZWN0IHRvIHRoZQorKyAgICAvLyBzaWduYWwKKysg ICAgUVZFUklGWShmaW5pc2hlZFNweS53YWl0KCkpOworK30KKysKKyB2b2lkIHRzdF9RTmV0d29y a1JlcGx5Ojppb0dldEZyb21GdHBfZGF0YSgpCisgeworICAgICBRVGVzdDo6YWRkQ29sdW1uPFFT dHJpbmc+KCJmaWxlTmFtZSIpOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdv cmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydCBiL3F0YmFzZS90ZXN0cy9hdXRvL25l dHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydAoraW5kZXggMDY5ZmE2YjM0MS4u NGNjNGQ5YTVlYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fz c2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29y ay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5jZXJ0CitAQCAtMSw3NSArMSwzNCBAQAorLUNl cnRpZmljYXRlOgorLSAgICBEYXRhOgorLSAgICAgICAgVmVyc2lvbjogMyAoMHgyKQorLSAgICAg ICAgU2VyaWFsIE51bWJlcjogMCAoMHgwKQorLSAgICAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTog c2hhMVdpdGhSU0FFbmNyeXB0aW9uCistICAgICAgICBJc3N1ZXI6IEM9Tk8sIFNUPU9zbG8sIEw9 TnlkYWxlbiwgTz1Ob2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyks IE9VPURldmVsb3BtZW50LCBDTj1mbHVrZS50cm9sbC5uby9lbWFpbEFkZHJlc3M9YWhhbnNzZW5A dHJvbGx0ZWNoLmNvbQorLSAgICAgICAgVmFsaWRpdHkKKy0gICAgICAgICAgICBOb3QgQmVmb3Jl OiBEZWMgIDQgMDE6MTA6MzIgMjAwNyBHTVQKKy0gICAgICAgICAgICBOb3QgQWZ0ZXIgOiBBcHIg MjEgMDE6MTA6MzIgMjAzNSBHTVQKKy0gICAgICAgIFN1YmplY3Q6IEM9Tk8sIFNUPU9zbG8sIE89 Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLCBPVT1EZXZlbG9w bWVudCwgQ049Zmx1a2UudHJvbGwubm8KKy0gICAgICAgIFN1YmplY3QgUHVibGljIEtleSBJbmZv OgorLSAgICAgICAgICAgIFB1YmxpYyBLZXkgQWxnb3JpdGhtOiByc2FFbmNyeXB0aW9uCistICAg ICAgICAgICAgUlNBIFB1YmxpYyBLZXk6ICgxMDI0IGJpdCkKKy0gICAgICAgICAgICAgICAgTW9k dWx1cyAoMTAyNCBiaXQpOgorLSAgICAgICAgICAgICAgICAgICAgMDA6YTc6Yzg6YTA6NGE6YzQ6 MTk6MDU6MWI6NjY6YmE6MzI6ZTI6ZDI6ZjE6CistICAgICAgICAgICAgICAgICAgICAxYzo2Zjox Nzo4MjplNDozOToyZTowMTo1MTo5MDpkYjowNDozNDozMjoxMToKKy0gICAgICAgICAgICAgICAg ICAgIDIxOmMyOjBkOjZmOjU5OmQ4OjUzOjkwOjU0OjNmOjgzOjhmOmE5OmQzOmIzOgorLSAgICAg ICAgICAgICAgICAgICAgZDU6ZWU6MWE6OWI6ODA6YWU6YzM6MjU6Yzk6NWU6YTU6YWY6NGI6NjA6 MDU6CistICAgICAgICAgICAgICAgICAgICBhYTphMDpkMTo5MTowMToxZjpjYTowNDo4MzplMzo1 ODoxYzo5OTozMjo0NToKKy0gICAgICAgICAgICAgICAgICAgIDg0OjcwOjcyOjU4OjAzOjk4OjRh OjYzOjhiOjQxOmY1OjA4OjQ5OmQyOjkxOgorLSAgICAgICAgICAgICAgICAgICAgMDI6NjA6NmI6 ZTQ6NjQ6ZmU6ZGQ6YTA6YWE6NzQ6MDg6ZTk6MzQ6NGM6OTE6CistICAgICAgICAgICAgICAgICAg ICA1ZjoxMjozZDozNzo0ZDo1NDoyYzphZDo3Zjo1Yjo5ODo2MDozNjowMjo4YzoKKy0gICAgICAg ICAgICAgICAgICAgIDNiOmY2OjQ1OmYzOjI3OjZhOjliOjk0OjlkCistICAgICAgICAgICAgICAg IEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKKy0gICAgICAgIFg1MDl2MyBleHRlbnNpb25zOgor LSAgICAgICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJhaW50czogCistICAgICAgICAgICAgICAg IENBOkZBTFNFCistICAgICAgICAgICAgTmV0c2NhcGUgQ29tbWVudDogCistICAgICAgICAgICAg ICAgIE9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlCistICAgICAgICAgICAgWDUwOXYzIFN1 YmplY3QgS2V5IElkZW50aWZpZXI6IAorLSAgICAgICAgICAgICAgICAyMTo4NTowNDozRDoyMzow MTo2NjpFNTpGNzo5RjoxQTo4NDoyNDo4QTpBRjowQTo3OTpGNDpFNTpBQworLSAgICAgICAgICAg IFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAorLSAgICAgICAgICAgICAgICBEaXJO YW1lOi9DPU5PL1NUPU9zbG8vTD1OeWRhbGVuL089Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0 cyBzdWJzaWRpYXJ5KC1pZXMpL09VPURldmVsb3BtZW50L0NOPWZsdWtlLnRyb2xsLm5vL2VtYWls QWRkcmVzcz1haGFuc3NlbkB0cm9sbHRlY2guY29tCistICAgICAgICAgICAgICAgIHNlcmlhbDo4 RTpBODpCNDpFODo5MTpCNzo1NDoyRQorLQorLSAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEx V2l0aFJTQUVuY3J5cHRpb24KKy0gICAgICAgIDZkOjU3OjVmOmQxOjA1OjQzOmYwOjYyOjA1OmVj OjJhOjcxOmE1OmRjOjE5OjA4OmYyOmM0OgorLSAgICAgICAgYTY6YmQ6YmI6MjU6ZDk6Y2E6ODk6 MDE6MGU6ZTQ6Y2Y6MWY6YzE6OGM6Yzg6MjQ6MTg6MzU6CistICAgICAgICA1Mzo1OTo3YjpjMDo0 MzpiNDozMjplNjo5ODpiMjphNjplZjoxNTowNTowYjo0ODo1ZjplMToKKy0gICAgICAgIGEwOjBj Ojk3OmE5OmExOjc3OmQ4OjM1OjE4OjMwOmJjOmE5OjhmOmQzOmI3OjU0OmM3OmYxOgorLSAgICAg ICAgYTk6OWU6NWQ6ZTY6MTk6YmY6ZjY6M2M6NWI6MmI6ZDg6ZTQ6M2U6NjI6MTg6ODg6OGI6ZDM6 CistICAgICAgICAyNDplMTo0MDo5YjowYzplNjoyOToxNjo2MjphYjplYTowNToyNDo3MDozNjph YTo1NTo5MzoKKy0gICAgICAgIGVmOjAyOjgxOjFiOjIzOjEwOmEyOjA0OmViOjU2Ojk1Ojc1OmZj OmY4Ojk0OmIxOjVkOjQyOgorLSAgICAgICAgYzU6M2Y6MzY6NDQ6ODU6NWQ6M2E6MmU6OTA6NDY6 OGE6YTI6Yjk6NmY6ODc6YWU6MGM6MTU6CistICAgICAgICA0MDoxOTozMTo5MDpmYzozYjoyNTpi YjphZTpmMTo2NjoxMzowZDo4NTo5MDpkOTo0OTozNDoKKy0gICAgICAgIDhmOmYyOjVkOmY5Ojdh OmRiOjRkOjVkOjI3OmY2Ojc2OjlkOjM1OjhjOjA2OmE2OjRjOmEzOgorLSAgICAgICAgYjE6YjI6 YjY6NmY6MWQ6ZDc6YTM6MDA6ZmQ6NzI6ZWI6OWU6ZWE6NDQ6YTE6YWY6MjE6MzQ6CistICAgICAg ICA3ZDpjNzo0MjplMjo0OTo5MToxOTo4YjpjMDphZDpiYTo4Mjo4MDphODo3MTo3MDpmNDozNToK Ky0gICAgICAgIDMxOjkxOjYzOjg0OjIwOjk1OmU5OjYwOmFmOjY0OjhiOmNjOmZmOjNkOjhhOjc2 Ojc0OjNkOgorLSAgICAgICAgYzg6NTU6NmQ6ZTQ6OGU6YzM6MmI6MWM6ZTg6NDI6MTg6YWU6OWY6 ZTY6NmI6OWM6MzQ6MDY6CistICAgICAgICBlYzo2YTpmMjpjMworIC0tLS0tQkVHSU4gQ0VSVElG SUNBVEUtLS0tLQorLU1JSUVFekNDQXZ1Z0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRVUZBRENC bkRFTE1Ba0dBMVVFQmhNQ1RrOHgKKy1EVEFMQmdOVkJBZ1RCRTl6Ykc4eEVEQU9CZ05WQkFjVEIw NTVaR0ZzWlc0eEZqQVVCZ05WQkFvVERWUnliMnhzCistZEdWamFDQkJVMEV4RkRBU0JnTlZCQXNU QzBSbGRtVnNiM0J0Wlc1ME1SY3dGUVlEVlFRREV3NW1iSFZyWlM1MAorLWNtOXNiQzV1YnpFbE1D TUdDU3FHU0liM0RRRUpBUllXWVdoaGJuTnpaVzVBZEhKdmJHeDBaV05vTG1OdmJUQWUKKy1GdzB3 TnpFeU1EUXdNVEV3TXpKYUZ3MHpOVEEwTWpFd01URXdNekphTUdNeEN6QUpCZ05WQkFZVEFrNVBN UTB3CistQ3dZRFZRUUlFd1JQYzJ4dk1SWXdGQVlEVlFRS0V3MVVjbTlzYkhSbFkyZ2dRVk5CTVJR d0VnWURWUVFMRXd0RQorLVpYWmxiRzl3YldWdWRERVhNQlVHQTFVRUF4TU9abXgxYTJVdWRISnZi R3d1Ym04d2daOHdEUVlKS29aSWh2Y04KKy1BUUVCQlFBRGdZMEFNSUdKQW9HQkFLZklvRXJFR1FV Ylpyb3k0dEx4SEc4WGd1UTVMZ0ZSa05zRU5ESVJJY0lOCistYjFuWVU1QlVQNE9QcWRPejFlNGFt NEN1d3lYSlhxV3ZTMkFGcXFEUmtRRWZ5Z1NENDFnY21USkZoSEJ5V0FPWQorLVNtT0xRZlVJU2RL UkFtQnI1R1QrM2FDcWRBanBORXlSWHhJOU4wMVVMSzEvVzVoZ05nS01PL1pGOHlkcW01U2QKKy1B Z01CQUFHamdnRWFNSUlCRmpBSkJnTlZIUk1FQWpBQU1Dd0dDV0NHU0FHRytFSUJEUVFmRmgxUGNH VnVVMU5NCistSUVkbGJtVnlZWFJsWkNCRFpYSjBhV1pwWTJGMFpUQWRCZ05WSFE0RUZnUVVJWVVF UFNNQlp1WDNueHFFSklxdgorLUNubjA1YXd3Z2JzR0ExVWRJd1NCc3pDQnNLR0JvcVNCbnpDQm5E RUxNQWtHQTFVRUJoTUNUazh4RFRBTEJnTlYKKy1CQWdUQkU5emJHOHhFREFPQmdOVkJBY1RCMDU1 WkdGc1pXNHhGakFVQmdOVkJBb1REVlJ5YjJ4c2RHVmphQ0JCCistVTBFeEZEQVNCZ05WQkFzVEMw UmxkbVZzYjNCdFpXNTBNUmN3RlFZRFZRUURFdzVtYkhWclpTNTBjbTlzYkM1dQorLWJ6RWxNQ01H Q1NxR1NJYjNEUUVKQVJZV1lXaGhibk56Wlc1QWRISnZiR3gwWldOb0xtTnZiWUlKQUk2b3RPaVIK Ky10MVF1TUEwR0NTcUdTSWIzRFFFQkJRVUFBNElCQVFCdFYxL1JCVVB3WWdYc0tuR2wzQmtJOHNT bXZic2wyY3FKCistQVE3a3p4L0JqTWdrR0RWVFdYdkFRN1F5NXBpeXB1OFZCUXRJWCtHZ0RKZXBv WGZZTlJnd3ZLbVAwN2RVeC9HcAorLW5sM21HYi8yUEZzcjJPUStZaGlJaTlNazRVQ2JET1lwRm1L cjZnVWtjRGFxVlpQdkFvRWJJeENpQk90V2xYWDgKKy0rSlN4WFVMRlB6WkVoVjA2THBCR2lxSzVi NGV1REJWQUdUR1EvRHNsdTY3eFpoTU5oWkRaU1RTUDhsMzVldHROCistWFNmMmRwMDFqQWFtVEtP eHNyWnZIZGVqQVAxeTY1N3FSS0d2SVRSOXgwTGlTWkVaaThDdHVvS0FxSEZ3OURVeAorLWtXT0VJ SlhwWUs5a2k4ei9QWXAyZEQzSVZXM2tqc01ySE9oQ0dLNmY1bXVjTkFic2F2TEQKKytNSUlGNnpD Q0E5T2dBd0lCQWdJVWZvOWFtSnRKR1dxV0U2ZitTa0FPODV6a0dyNHdEUVlKS29aSWh2Y05BUUVM CisrQlFBd2dZTXhDekFKQmdOVkJBWVRBazVQTVEwd0N3WURWUVFJREFSUGMyeHZNUTB3Q3dZRFZR UUhEQVJQYzJ4dgorK01SY3dGUVlEVlFRS0RBNVVhR1VnVVhRZ1EyOXRjR0Z1ZVRFTU1Bb0dBMVVF Q3d3RFVpWkVNUkl3RUFZRFZRUUQKKytEQWxJTWlCVVpYTjBaWEl4R3pBWkJna3Foa2lHOXcwQkNR RVdERzFwYm1sdGFVQnhkQzVwYnpBZ0Z3MHlNREV3CisrTWpZeE1qQXhNekZhR0E4eU1USXdNVEF3 TWpFeU1ERXpNVm93Z1lNeEN6QUpCZ05WQkFZVEFrNVBNUTB3Q3dZRAorK1ZRUUlEQVJQYzJ4dk1R MHdDd1lEVlFRSERBUlBjMnh2TVJjd0ZRWURWUVFLREE1VWFHVWdVWFFnUTI5dGNHRnUKKytlVEVN TUFvR0ExVUVDd3dEVWlaRU1SSXdFQVlEVlFRRERBbElNaUJVWlhOMFpYSXhHekFaQmdrcWhraUc5 dzBCCisrQ1FFV0RHMXBibWx0YVVCeGRDNXBiekNDQWlJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dJ UEFEQ0NBZ29DZ2dJQgorK0FPaVVwNStFNGJsb3VLSDdxK3JWTlI4Tm9ZWDJYa0JXK3ErcnB5MXp1 NXNzUlN6YnF4QWpEeDlka2h0N1FsbmYKKytWbERUMDBKdnBPV2RldVBvbjU5MTVlZFFSc1k0VW5s Nm1LSDI5cmEzT3RVYTEveUNKWHNHVkpUS0NqN2s0QnhiCisrNW1aemIvZlRsWm50TUxkVElCTWZV Ync2MkZLaXIxV2pLSWNKOWZDb0c4SmFHZUtWTzRSaDVwMGV6ZDRVVVVJZAorK3IxQlhsNU5xZHF5 MnZUTXNFRG5qT3NEM2Vna3Y4STJTS040TzZuL0Mzd1dZcE1PV1laa0dvWmlLejdySnMvaS8KKytl ejdic1Y3Smx3ZHpUbGhwSnprY09TVkZCUDZKbEVPeFROTnhaMXd0S3k3UHRaR21zU1NBVHEyZTYr YnczOEFlCisrT3AwWG56enFjR2p0RERvZkJtVDdPRnpaV2pTOVZaUzYrRE9PZTJRSFdsZTFuQ0hj SHlINGt1NklSbHNyOXhrUgorK05BSWxPZm52SEh4cUpVZW5vZWFaNG9RRGpDQktTMUtYeWdKTy90 TDdCTFRRVm4veEsxRW1QdktObmp6V2s0dFIKKytQbmliVWhoczU2MzVxcE9VL1lQcUZCaDFKalZy dVpic1djREFoUmNldzB1eE9OWE9hOUUrNGx0dFE5eVNZYTFBCisrTHZXcUp1QVg3Z3UyQnNCTUx5 cWZtODExWW5BN0NJRk15TytIbHFta0xGZnY1TC94SVJBWFI3bDI2WUdPMFZ3WAorK0NHak1mejRO VlBNTWtlNG5CN3FhOU5rcFhRQlFLTW1zM1F6ZDVKVzBIeTlSdWo1TzhHUGNGWm1WMHR3amQxdUoK KytQRC9jQWprV0xhWGpkTnNKMTZRV2MybmdoUVJTNkhZcUtSWDZqK0NYT3h1cEFnTUJBQUdqVXpC Uk1CMEdBMVVkCisrRGdRV0JCUlNDT1U1OGo5Tkpaa01hbXQ2MjNxeUNyaE4zVEFmQmdOVkhTTUVH REFXZ0JSU0NPVTU4ajlOSlprTQorK2FtdDYyM3F5Q3JoTjNUQVBCZ05WSFJNQkFmOEVCVEFEQVFI L01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQ3EKKytxNGp4c1dlTkR2NU5xMTRoSnRGOUhCK1pM NjR6Y1p0UmpKUDFZZ05zMFFwcEtJQ21qUE9MMm5JTUdtSS9qS3JzCisrMGVHQUwvOVhYTlZIUHht MU9QT25jdmltTU1tVTZlbVpmcE1kRXRUZktQNDMrUGc5SGdLUmpMb1FwNDA2dkdlUQorKzhraS9t YkJockl0VlBnRW0zdHUyQUZBMDJYVFlpK1l4Q0k5a1JaTEdrTTNGYmd0T3VUTFBsMFo5eStraVBj OUYKKyt1Q1NDMDNhbkJFcXYrdkRTSTgrd09EeW1RL0lKM0p5ejFseElSRGZwNHFBZWtteTBqVTJj OTFWT0hIRW1PbXFxCisra3F5Z0dGUmR3YmU5OW05eVA2M3I2cTBiNUszWDJVbko2Ym5zMGhtVHdU aFl3cFZQWExVOGpkYVRkZGJNdWtOMgorKy9FZjk2VHN3OG5XT0VPUE15U0hPVElQZ3d5WlJwMjZi MGtBOUVtaEx3T1A0MDFTeFhWUUNtU1JtdHdOYWdtdGcKKytqSkttWm9ZQk4rLy9ENDVpYks4ejZR MG9PbTlQK1doZi91VVhlaGNSeEJ4eVYzeHo3azB3S0dRYkhqL2Rkd2N5CisrSVVvSU40bHJBbGli K2xLMTcwa1RLTjM1MlBEbXJwbzJnbUl6UEVzZnVyS0FJTVNlbERsNkgra2loMTZCdFo4eQorK056 NmZoOVNvcXJnM09TQXdhcmU4cHhWN2s1MWNyQk1vUExONzhLb1JWOE1GQ0s0SzdGZGRxNHJSSVNx NmhpWHEKKytyMW5zam9FUHVLTTlodXBybVpWWmU5dDVZY0RhMkkrd2IzSWlFM3V3cFpiQWRhTER5 UTVuNkYvcXBzaUlrWlhuCisrZ3RjRjdvcXBHNW9ZcndDY1o1M3kvZXpVZ1VnN1BsU3oyWHdBR3ZR dGdnPT0KKyAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5rZXkgYi9xdGJhc2Uv dGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleQoraW5kZXgg OWQxNjY0ZDYwOS4uMzM3Y2U1NDFhNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL25l dHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5CisrKysgYi9xdGJhc2UvdGVzdHMv YXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleQorQEAgLTEsMTUgKzEs NTIgQEAKKy0tLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCistTUlJQ1hBSUJBQUtCZ1FD bnlLQkt4QmtGRzJhNk11TFM4Unh2RjRMa09TNEJVWkRiQkRReUVTSENEVzlaMkZPUQorLVZEK0Rq Nm5UczlYdUdwdUFyc01seVY2bHIwdGdCYXFnMFpFQkg4b0VnK05ZSEpreVJZUndjbGdEbUVwamkw SDEKKy1DRW5Ta1FKZ2ErUmsvdDJncW5RSTZUUk1rVjhTUFRkTlZDeXRmMXVZWURZQ2pEdjJSZk1u YXB1VW5RSURBUUFCCistQW9HQU5GekxrYW5UZVNHTkZNMHV0dEJpcEZUOUY0YTAwZHFIejZKbk83 elhBVDI2STVyOHNVMXBxUUJiNnVMegorLS8rUXo1WndrOFJVQVFjc01SZ0pldHVQUVViMEpaakY2 RHV2MjRoTmF6cVhCQ3U3QVp6VWVuamFmd21LQy84cmkKKy1LcFgzZlR3cXpmemkvL0ZLR2diWFE4 MHl5a1NTbGlETDNrbi9kckFUeHNMQ2dRRUNRUURYaEVGV0xKMHZWWjFzCistMUVrZiszTklURStE UjE2WCtMUTRXNnZ5RUhBalRiYU5XdGNUS2RBV0xBMmw2TjRXQUFQWVNpNmF3bSt6TXh4NAorLVZv bVZUc2pkQWtFQXgweitlN25hdExlRmNycnE4cGJVK3dhNlNBUDFWZmhRV0tpdHhMMWU3dS9RTzkw TkNweEUKKy1vUVlLek1rbW1wT09GalF3RU1BeTFkdkZNYm00TEhsZXdRSkFDL2tzREJhVWNRSEhx amt0Q3RyVWI4clZqQXlXCistQThsc2Nja2VCMmZFWXlHNUo2ZEpWYVk0Q2xOT09zNXlNRFMyQWZr MUY2SC94S3Z0US81Q3pJbkEvUUpBVER1YgorLUsrQlBVOGpPOXErZ3B1SWkzVklaZHVwc3NWR21D Z09iVkNITGFrRzR1TzA0eTlJeVBoVjlsQTl0QUx0b0lmNGMKKy1WSXZ2NWZXR1hCclo0OGtaQVFK QkFKbVZDZHpReGQ5TFpJNXZ4aWpVQ2o1RUk0ZSt4NURScVZVdnlQOEtDWnJDCistQWlOeW9EUDg1 VCtoQlphU1hLM2FZR3BWd2VseWozYnZvMUdyVE53TldMdz0KKy0tLS0tLUVORCBSU0EgUFJJVkFU RSBLRVktLS0tLQorKy0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQorK01JSUpRZ0lCQURBTkJn a3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRRG9sS2VmaE9HNWFMaWgKKysrNnZx MVRVZkRhR0Y5bDVBVnZxdnE2Y3RjN3ViTEVVczI2c1FJdzhmWFpJYmUwSlozMVpRMDlOQ2I2VGxu WHJqCisrNkorZmRlWG5VRWJHT0ZKNWVwaWg5dmEydHpyVkd0ZjhnaVY3QmxTVXlnbys1T0FjVyta bWMyLzMwNVdaN1RDMworK1V5QVRIMUc4T3RoU29xOVZveWlIQ2ZYd3FCdkNXaG5pbFR1RVllYWRI czNlRkZGQ0hhOVFWNWVUYW5hc3RyMHoKKytMQkE1NHpyQTkzb0pML0NOa2lqZUR1cC93dDhGbUtU RGxtR1pCcUdZaXMrNnliUDR2M3MrMjdGZXlaY0hjMDVZCisrYVNjNUhEa2xSUVQraVpSRHNVelRj V2RjTFNzdXo3V1JwckVrZ0U2dG51dm04Ti9BSGpxZEY1ODg2bkJvN1F3NgorK0h3WmsremhjMlZv MHZWV1V1dmd6am50a0IxcFh0WndoM0I4aCtKTHVpRVpiSy9jWkVUUUNKVG41N3h4OGFpVkgKKytw NkhtbWVLRUE0d2dTa3RTbDhvQ1R2N1Mrd1MwMEZaLzhTdFJKajd5alo0ODFwT0xVVDU0bTFJWWJP ZXQrYXFUCisrbFAyRDZoUVlkU1kxYTdtVzdGbkF3SVVYSHNOTHNUalZ6bXZSUHVKYmJVUGNrbUd0 UUM3MXFpYmdGKzRMdGdiQQorK1RDOHFuNXZOZFdKd093aUJUTWp2aDVhcHBDeFg3K1MvOFNFUUYw ZTVkdW1CanRGY0Z3aG96SDgrRFZUekRKSHUKKytKd2U2bXZUWktWMEFVQ2pKck4wTTNlU1Z0Qjh2 VWJvK1R2QmozQldabGRMY0kzZGJpVHcvM0FJNUZpMmw0M1RiCisrQ2Rla0ZuTnA0SVVFVXVoMktp a1Yrby9nbHpzYnFRSURBUUFCQW9JQ0FGdzFxNnRyNUk0OHZZN0RGK3JYc3VMbgorKzVaVVdFMUlR NmZ6QjRscjcybkp2LzlFRUduTWdZenQ5UHBNVXNENnZkQ3BCZ1MyQzArNlJIQXJGekp0TkErUk0K KytpSExJRzdLNzcwMnZleXIveEJ4L013aVNsTWVNdi9YcGtGeFZJNkU2c2tNR0cyczNBTVh4S3ZK VHk1Q3BSeCtJCisrZVFGeUxHK1lhMVgybGdKZXMvcSsvQ3BBSGtPakNPcGNMeVNRQzVOWjc0cTcz NFY3blNkbW4rWnMzdFlFaCtPLworK2VpdXdUUC9qNWIzOFRlNXZWVHFEeFRjaUpQbWxqbVhMQ3dh ME4xMDBsV2xiY3B2dzhxYnFpVEkySm0zWENiVUUKKytBekhqVzl2bXJGM2NSUzFmWHhLRkdTaHcz U1JxbGtieGpmZVdvaThxRFBVQlM0bThMT3I4cUc5V281TmZvbjB6CisrekxQNGJjaTN6SER2VmNh YVpycnNVQnMveVpiZytEZ2thMURtWDdla21lY2NyMnlUZEtERmdQdXBZVXl4VmJUbAorK2E5WkxK eXNqRkQ3cmdCdjFaY2xIb25McDZWYm0rWm9UcXZ0ZW80aWtBeTZMOVJ0QldKMjNYRUszNFBrUC8r YzUKKysydldaYU9ybmpTZUJIYkZjZThjZEpTeHFXcFArZVNDSTVJOVhiRHJZRklzUS9ncUtndHpE S3kyaWhKMlk4U1RMCisreU80aHlGUEZqeGMrR2c0L1AyUHBtVDVDWTJ0eTQ0TTBCV3MrSkdXOTZD SlBycnBsZjJsbVFVUUpqNUxaWTY2WAorK1ovNEM5TDdaWXRLWiticzVTdlU0NnlXdWdBdlFaWDIy WG05eExYV3lWWFJkeDNiaiszTTNmRG5GOWRpL3pkYmgKKytDZ0x4N29XUE5yWGM3RkNham5uOUFv SUJBUUQ1Rk1Zd1JwdzlOV1Q5V0R4UXd4K2NTSTRJY2JkODhCeVRXNjNTCisrTHplUndaQTBKOS9T ZndPK2FCUnVwemM5R2tHWENpWmNHTXczQUdzQ3RpZzh5Rmx3OEU1S256TjdLbGZ0RE1uTQorKzlO VXh4emxSOFZ3S3lMblpmRzdzRFRsMDU3WmxVdWpucWhtdC9GOEY3ZEl5N0ZWTzFkRS84bm5nQStG WVRDT0cKKytVWmRHand5QkRsRE0wSkpkVVdHWTN4c2x1dGNwQ0RONW16U1RLank5ZHJNdkltQXNo UmF3eFJGNldCcG43dnIyCisrbkM2dmNpcWZ4MU16eDF2eWswSm0waWxheWREZExNQURqdC9pTDRO a3IwQkVzNGsrVXpRaUtEd3A4Z3U3YWJRMQorK2VCZnhkOUlhcjRodFFhMkkxRXdsNlAwMUcvcSta WXdnSGhKOVJWbjRBeFFYZWZJTEFvSUJBUUR2Q291T1JkUVgKKytDOHdzeXA3TXdYbEYvM05RZU5O NS8rQjJtaGJ4ckJPZjdQbU1DWExua1JXY2p3SnR6eXBXRnFKMHNxYWkvMiswCisrYnFiTWNqWDVt YVQ4c3RUMnNobDN6WGUvRWp0MmUzVEJZcGMxdHl1c2VzOEtiNUJNVThodTZ0VGQzRzJDTVhwRAor K2RUNkRWZW1KWkNUdHdqOWFCTkl4U2l6dmxnTW9sSm5DcHpoUG5sZkhTSTZFK2czbS9MVFRvM0h3 YmpNU3cvVXEKKytpcmdqT3BJMndTQkI2TFpQU2dqdmZjWVBSeVdVazE2TDRBNXVTWDBjQURub3ZE RkxhNS9oMHdKdk4vT29DU1FnCisrckxDWEc1RTE4RXlMNVdjNThCQ1kxWnZ4bWpHM2xRdGdQeFl1 Mkp3YzM2Ui95L0pLbHhXNXN1RVI1Wk5wYmJENAorK3VPeVR0MlZ4TVEyYkFvSUJBUUM1K016UkZx ZG8vQWpmTDVZNUpyYmZWVHpYQ1REYTA5eENHZDE2WlU2MFFUV04KKysrNGVkL3IrbzFzVUtxVWNS RkIyTXpFTS8yRFFCalFwWkIvQ2JFV3ZXYTFYSldYeHlwWGJvd3ZlWlUrUXFPbm1OCisrdVF2ajhX THlBM28rUE5GOWU5UXZhdXdDckhwbjhWcHhidFBXdWFZb0tuVUZyZUZaWlF4SGhQR3hSQklTMkpP WgorK2VEclQ4WmFXbmtDa2gxQVpwNXNtUTcxTE9wclNsbUtyZzRqZDFHakNWTXhRUjVONUtYYnR5 djBPVENaL1VGcUsKKysyYVJCc01QeUpna2FCQ2hrWlBMUmNLd2MrL3dsUVJ4MWZIUWIxNEROVEFw TXhvWEZPN2VPd3FtT2twQXQ5aXlsCisrU0JJd29TMFVVSTVhYjg4K2JCbVhOdktjdUZkTnVRNG5v d1RKVW45cEFvSUJBRE1Oa0lMQlhTdlM1RGVJeXVPMgorK1NwMXRrb1pVVis1TmZQWTNzTURLM0tJ aWJhVy8rdCtFT0JabzRMN3RLUUNiOHZSemwyMW1tc2Z4ZmdSYVBEYmoKKyszcjN0djlnMGI0WUx4 eEJ5NTJwRnNjai9zb1hSYWkxN1NTN1Vad0EyUUsrWHpnRFliRGNMTkM2bUlzVFFHNEd4CisrZHNX azMvenMzS3VVU1FhZWhtd3JXSytmSVVLMzhjMXBMSzh2N0xveHJMa3F4bEh3WjA0UnRoSHc4S1R0 aEg3WAorK1BubDFKMExGOENTZU95ZldMU3VQVWZrVDBHRXpwdG5OSHBFYmFIZlFNNlI2ZWFHaFZK UEY2QVptZTR5NllZZ2cKKyttMmloaFN0MW4wWFZFV3BIWVdqeEZ5M21LMm16NzV1bkZDNExNK05F WTJwMnp1VVFvQ3c3TmpuWTNRWXJmQ254CisrclJNQ2dnRUFYZVhzTVNMRmpqeXVvTDdpS2JBeG81 MkhEL1AwZkJveTU4THlSY3dmTlZyMGx2WWFuNHBZRXgrbworK0tpakloOUsxNlBxWFpYS01BOXYw MDNCK3VsbUY4Yko3U2RkQ1o1Tkd2bkZoVVREZTREZFRLZ3AyUnV3UTNCc2MKKyszc2tQSURiaFZF VHlPTEN0eXMzNFVTSHJxOFUvMERsR1kzZUxSZnh3OUduYkt4U0JHYS9LRXUvcVFMUE5VbzUwCisr N3hIWkRnN0dLZUMza3FOSmVxS005cmtwMFZ6SUdrRW5hRDkxMjdMZU5EbUVSRGZmdHhKekZvQy9U SHZVQkxmVQorKzZTdXMyWll3UkU4VkZ2S0MzMFE0NXQvYzU0WDNJdWhZdkF1aUN1VG15ZkU0cnV5 enlPd0t6aFVrZWVMcTFBUFgKKytnMHZlRmJ5ZnpsSjBxOHF6RC9pZmZxcUlhMlpTbVE9PQorKy0t LS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0KK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9v dGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcCBiL3F0 YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmlsaXR5bGludXgvdHN0X3FhY2Nlc3NpYmls aXR5bGludXguY3BwCitpbmRleCA3YmEzNzE1ZTEzLi43NTJhYTEyMmY2IDEwMDY0NAorLS0tIGEv cXRiYXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2li aWxpdHlsaW51eC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmls aXR5bGludXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwCitAQCAtMTc5LDYgKzE3OSw3IEBA IHZvaWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGludXg6OmluaXRUZXN0Q2FzZSgpCisgICAgIFFWRVJJ RlkoIWFkZHJlc3MuaXNFbXB0eSgpKTsKKyAKKyAgICAgbV93aW5kb3cgPSBuZXcgQWNjZXNzaWJs ZVRlc3RXaW5kb3coKTsKKysgICAgbV93aW5kb3ctPnNldE9iamVjdE5hbWUoIm1haW5XaW5kb3ci X0wxKTsKKyAgICAgbV93aW5kb3ctPnNob3coKTsKKyAKKyAgICAgUVZFUklGWShRVGVzdDo6cVdh aXRGb3JXaW5kb3dFeHBvc2VkKG1fd2luZG93KSk7CitAQCAtMjM2LDggKzIzNywxMSBAQCBib29s IGhhc1N0YXRlKFFEQnVzSW50ZXJmYWNlICppbnRlcmZhY2UsIEF0c3BpU3RhdGVUeXBlIHN0YXRl KQorIHZvaWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGludXg6OnRlc3RMYWJlbCgpCisgeworICAgICBR TGFiZWwgKmwgPSBuZXcgUUxhYmVsKG1fd2luZG93KTsKKysgICAgbC0+c2V0T2JqZWN0TmFtZSgi dGhlT2JqZWN0TmFtZSJfTDEpOworICAgICBsLT5zZXRUZXh0KCJIZWxsbyBBMTF5Iik7CisgICAg IG1fd2luZG93LT5hZGRXaWRnZXQobCk7CisrICAgIGF1dG8gYTExeUVtcHR5ID0gbmV3IFFMYWJl bChtX3dpbmRvdyk7CisrICAgIG1fd2luZG93LT5hZGRXaWRnZXQobCk7CisgCisgICAgIC8vIEFw cGxpY2F0aW9uCisgICAgIFFDT01QQVJFKGdldFBhcmVudChtYWluV2luZG93KSwgUUxhdGluMVN0 cmluZyhBVFNQSV9EQlVTX1BBVEhfUk9PVCkpOworQEAgLTI0OSw2ICsyNTMsOCBAQCB2b2lkIHRz dF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojp0ZXN0TGFiZWwoKQorICAgICBRQ09NUEFSRShnZXRDaGls ZHJlbihsYWJlbEludGVyZmFjZSkuY291bnQoKSwgMCk7CisgICAgIFFDT01QQVJFKGxhYmVsSW50 ZXJmYWNlLT5jYWxsKFFEQnVzOjpCbG9jaywgIkdldFJvbGVOYW1lIikuYXJndW1lbnRzKCkuZmly c3QoKS50b1N0cmluZygpLCBRTGF0aW4xU3RyaW5nKCJsYWJlbCIpKTsKKyAgICAgUUNPTVBBUkUo bGFiZWxJbnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAiR2V0Um9sZSIpLmFyZ3VtZW50cygp LmZpcnN0KCkudG9VSW50KCksIDI5dSk7CisrICAgIFFDT01QQVJFKGxhYmVsSW50ZXJmYWNlLT5j YWxsKFFEQnVzOjpCbG9jaywgIkdldEFjY2Vzc2libGVJZCIpLmFyZ3VtZW50cygpLmZpcnN0KCku dG9TdHJpbmcoKSwKKysgICAgICAgICAgICAgUUxhdGluMVN0cmluZygibWFpbldpbmRvdy50aGVP YmplY3ROYW1lIikpOworICAgICBRQ09NUEFSRShnZXRQYXJlbnQobGFiZWxJbnRlcmZhY2UpLCBt YWluV2luZG93LT5wYXRoKCkpOworICAgICBRVkVSSUZZKCFoYXNTdGF0ZShsYWJlbEludGVyZmFj ZSwgQVRTUElfU1RBVEVfRURJVEFCTEUpKTsKKyAgICAgUVZFUklGWShoYXNTdGF0ZShsYWJlbElu dGVyZmFjZSwgQVRTUElfU1RBVEVfUkVBRF9PTkxZKSk7CitAQCAtMjU2LDcgKzI2MiwxMiBAQCB2 b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojp0ZXN0TGFiZWwoKQorICAgICBsLT5zZXRUZXh0 KCJOZXcgdGV4dCIpOworICAgICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+cHJvcGVydHkoIk5h bWUiKS50b1N0cmluZygpLCBsLT50ZXh0KCkpOworIAorKyAgICBhdXRvICphMTF5RW1wdHlJbnRl cmZhY2UgPSBnZXRJbnRlcmZhY2UoY2hpbGRyZW4uYXQoMSksICJvcmcuYTExeS5hdHNwaS5BY2Nl c3NpYmxlIik7CisrICAgIFFDT01QQVJFKGExMXlFbXB0eUludGVyZmFjZS0+Y2FsbChRREJ1czo6 QmxvY2ssICJHZXRBY2Nlc3NpYmxlSWQiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvU3RyaW5nKCks CisrICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIm1haW5XaW5kb3cuUUxhYmVsIikpOworKwor ICAgICBtX3dpbmRvdy0+Y2xlYXJDaGlsZHJlbigpOworKyAgICBkZWxldGUgYTExeUVtcHR5SW50 ZXJmYWNlOworICAgICBkZWxldGUgbGFiZWxJbnRlcmZhY2U7CisgfQorIAorZGlmZiAtLWdpdCBh L3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5L3RzdF9xc3FscXVlcnkuY3Bw IGIvcXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5j cHAKK2luZGV4IDc2ZGY2MWM4OTIuLjZkNmQ2NWI3OTEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVz dHMvYXV0by9zcWwva2VybmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcAorKysrIGIvcXRi YXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAKK0BA IC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQg KEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBUaGUg UXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5n LworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qgc3VpdGUgb2YgdGhlIFF0 IFRvb2xraXQuCitAQCAtNjgsNiArNjgsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHF1 ZXJ5X2V4ZWMoKTsKKyAgICAgdm9pZCBleGVjRXJyb3JSZWNvdmVyeV9kYXRhKCkgeyBnZW5lcmlj X2RhdGEoKTsgfQorICAgICB2b2lkIGV4ZWNFcnJvclJlY292ZXJ5KCk7CisrICAgIHZvaWQgcHJl bWF0dXJlRXhlY19kYXRhKCkgeyBnZW5lcmljX2RhdGEoKTsgfQorKyAgICB2b2lkIHByZW1hdHVy ZUV4ZWMoKTsKKyAgICAgdm9pZCBmaXJzdF9kYXRhKCkgeyBnZW5lcmljX2RhdGEoKTsgfQorICAg ICB2b2lkIGZpcnN0KCk7CisgICAgIHZvaWQgbmV4dF9kYXRhKCkgeyBnZW5lcmljX2RhdGEoKTsg fQorQEAgLTI3NzAsNiArMjc3MiwzNSBAQCB2b2lkIHRzdF9RU3FsUXVlcnk6OmV4ZWNFcnJvclJl Y292ZXJ5KCkKKyAgICAgUVZFUklGWV9TUUwoIHEsIGV4ZWMoKSApOworIH0KKyAKKyt2b2lkIHRz dF9RU3FsUXVlcnk6OnByZW1hdHVyZUV4ZWMoKQorK3sKKysgICAgUUZFVENIKFFTdHJpbmcsIGRi TmFtZSk7CisrICAgIC8vIFdlIG9ubHkgd2FudCB0aGUgZW5naW5lIG5hbWUsIGZvciBhZGREYXRh YmFzZSgpOgorKyAgICBpbnQgY3V0ID0gZGJOYW1lLmluZGV4T2YoUUNoYXIoJ0AnKSk7CisrICAg IGlmIChjdXQgPCAwKQorKyAgICAgICAgUVNLSVAoIkZhaWxlZCB0byBwYXJzZSBkYXRhYmFzZSB0 eXBlIG91dCBvZiBuYW1lIik7CisrICAgIGRiTmFtZS50cnVuY2F0ZShjdXQpOworKyAgICBjdXQg PSBkYk5hbWUuaW5kZXhPZihRQ2hhcignXycpKTsKKysgICAgaWYgKGN1dCA+PSAwKQorKyAgICAg ICAgZGJOYW1lID0gZGJOYW1lLm1pZChjdXQgKyAxKTsKKysKKysgICAgYXV0byBkYiA9IFFTcWxE YXRhYmFzZTo6YWRkRGF0YWJhc2UoZGJOYW1lKTsKKysgICAgUVNxbFF1ZXJ5IHEoZGIpOworKwor KyAgICBRVGVzdDo6aWdub3JlTWVzc2FnZShRdFdhcm5pbmdNc2csCisrICAgICAgICAgICAgICAg ICAgICAgICAgICJRU3FsRGF0YWJhc2VQcml2YXRlOjpyZW1vdmVEYXRhYmFzZTogY29ubmVjdGlv biAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICIncXRfc3FsX2RlZmF1bHRfY29ubmVjdGlv bicgaXMgc3RpbGwgaW4gdXNlLCBhbGwgIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAicXVl cmllcyB3aWxsIGNlYXNlIHRvIHdvcmsuIik7CisrICAgIFFUZXN0OjppZ25vcmVNZXNzYWdlKFF0 V2FybmluZ01zZywKKysgICAgICAgICAgICAgICAgICAgICAgICAgIlFTcWxEYXRhYmFzZVByaXZh dGU6OmFkZERhdGFiYXNlOiBkdXBsaWNhdGUgY29ubmVjdGlvbiBuYW1lICIKKysgICAgICAgICAg ICAgICAgICAgICAgICAgIidxdF9zcWxfZGVmYXVsdF9jb25uZWN0aW9uJywgb2xkIGNvbm5lY3Rp b24gcmVtb3ZlZC4iKTsKKysgICAgYXV0byBvdGhlckRiID0gUVNxbERhdGFiYXNlOjphZGREYXRh YmFzZShkYk5hbWUpOworKworKyAgICBRVGVzdDo6aWdub3JlTWVzc2FnZShRdFdhcm5pbmdNc2cs ICJRU3FsUXVlcnk6OmV4ZWM6IGNhbGxlZCBiZWZvcmUgZHJpdmVyIGhhcyBiZWVuIHNldCB1cCIp OworKyAgICAvLyBRVEJVRy0xMDAwMzc6IHNob3VsZG4ndCBjcmFzaCAhCisrICAgIFFWRVJJRlko IXEuZXhlYygic2VsZWN0IHN0dWZmIGZyb20gVGhlVm9pZCIpKTsKKyt9CisrCisgdm9pZCB0c3Rf UVNxbFF1ZXJ5OjpsYXN0SW5zZXJ0SWQoKQorIHsKKyAgICAgUUZFVENIKCBRU3RyaW5nLCBkYk5h bWUgKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0 ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcCBiL3F0YmFzZS90 ZXN0cy9hdXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3Rp dGVtbW9kZWx0ZXN0ZXIuY3BwCitpbmRleCA0YWEzZjhkNjBiLi5kMjA1MGE2MWFhIDEwMDY0NAor LS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIv dHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRv L3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9kZWx0 ZXN0ZXIuY3BwCitAQCAtMTE1LDYgKzExNSwxMCBAQCB2b2lkIHRzdF9RQWJzdHJhY3RJdGVtTW9k ZWxUZXN0ZXI6OnN0YW5kYXJkSXRlbU1vZGVsWmVyb0NvbHVtbnMoKQorICAgICAvLyBRVEJVRy05 Mjg4NgorICAgICBtb2RlbC5pbnNlcnRSb3dzKDAsIDUpOworICAgICBtb2RlbC5yZW1vdmVSb3dz KDEsIDIpOworKworKyAgICBjb25zdCBRTW9kZWxJbmRleCBwYXJlbnRJbmRleCA9IG1vZGVsLmlu ZGV4KDAsIDApOworKyAgICBtb2RlbC5pbnNlcnRSb3dzKDAsIDUsIHBhcmVudEluZGV4KTsKKysg ICAgbW9kZWwucmVtb3ZlUm93cygxLCAyLCBwYXJlbnRJbmRleCk7CisgfQorIAorIHZvaWQgdHN0 X1FBYnN0cmFjdEl0ZW1Nb2RlbFRlc3Rlcjo6dGVzdEluc2VydFRocm91Z2hQcm94eSgpCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4u anNvbiBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2NzX2Jhc2VsaW5lX2luLmpz b24KK2luZGV4IDEyYTRhMjJhMTkuLmNlNTE4ZTc4ZmIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVz dHMvYXV0by90b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5qc29uCisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by90b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5qc29uCitAQCAtNjY4LDUw ICs2NjgsNiBAQAorICAgICAgICAgImlucHV0RmlsZSI6ICJ0YXNrMTkyNTUyLmgiLAorICAgICAg ICAgIm91dHB1dFJldmlzaW9uIjogNjcKKyAgICAgfSwKKy0gICAgeworLSAgICAgICAgImNsYXNz ZXMiOiBbCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAiY2xhc3NOYW1lIjogIklu bGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24iLAorLSAgICAgICAgICAgICAgICAib2JqZWN0 IjogdHJ1ZSwKKy0gICAgICAgICAgICAgICAgInF1YWxpZmllZENsYXNzTmFtZSI6ICJJbmxpbmVT bG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uIiwKKy0gICAgICAgICAgICAgICAgInNsb3RzIjogWwor LSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3Mi OiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhIiwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAg ICAgICAgfSwKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAg ICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAi YiIsCistICAgICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAg ICAgICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAg ICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICJuYW1lIjogImMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZv aWQiCistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAgICAgeworLSAg ICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAibmFtZSI6ICJkIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJu VHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAgICAg ICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAg ICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZSIsCistICAgICAgICAgICAgICAgICAgICAg ICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAg ICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgInN1cGVyQ2xhc3NlcyI6IFsKKy0gICAgICAg ICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1Ymxp YyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiUU9iamVjdCIKKy0gICAgICAg ICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgIH0KKy0gICAg ICAgIF0sCistICAgICAgICAiaW5wdXRGaWxlIjogInRhc2sxODk5OTYuaCIsCistICAgICAgICAi b3V0cHV0UmV2aXNpb24iOiA2NworLSAgICB9LAorICAgICB7CisgICAgICAgICAiY2xhc3NlcyI6 IFsKKyAgICAgICAgICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMv bW9jL21vYy5wcm8gYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybworaW5kZXgg YzMyNGIzYThjZC4uNGFjZWI3OGRjMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rv b2xzL21vYy9tb2MucHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBy bworQEAgLTE1LDcgKzE1LDcgQEAgY3Jvc3NfY29tcGlsZTogREVGSU5FUyArPSBNT0NfQ1JPU1Nf Q09NUElMRUQKKyBIRUFERVJTICs9IHVzaW5nLW5hbWVzcGFjZXMuaCBuby1rZXl3b3Jkcy5oIHRh c2s4Nzg4My5oIGMtY29tbWVudHMuaCBiYWNrc2xhc2gtbmV3bGluZXMuaCBvbGRzdHlsZS1jYXN0 cy5oIFwKKyAgICAgICAgICAgIHNsb3RzLXdpdGgtdm9pZC10ZW1wbGF0ZS5oIHFpbnZva2FibGUu aCBuYW1lc3BhY2VkLWZsYWdzLmggdHJpZ3JhcGhzLmggXAorICAgICAgICAgICAgZXNjYXBlcy1p bi1zdHJpbmctbGl0ZXJhbHMuaCBjc3R5bGUtZW51bXMuaCBxcHJpdmF0ZXNsb3RzLmggZ2FkZ2V0 d2l0aG5vZW51bXMuaCBcCistICAgICAgICAgICBkaXItaW4taW5jbHVkZS1wYXRoLmggc2luZ2xl X2Z1bmN0aW9uX2tleXdvcmQuaCB0YXNrMTkyNTUyLmggdGFzazE4OTk5Ni5oIFwKKysgICAgICAg ICAgIGRpci1pbi1pbmNsdWRlLXBhdGguaCBzaW5nbGVfZnVuY3Rpb25fa2V5d29yZC5oIHRhc2sx OTI1NTIuaCBcCisgICAgICAgICAgICB0YXNrMjM0OTA5LmggdGFzazI0MDM2OC5oIHB1cmUtdmly dHVhbC1zaWduYWxzLmggY3h4MTEtZW51bXMuaCBcCisgICAgICAgICAgICBjeHgxMS1maW5hbC1j bGFzc2VzLmggXAorICAgICAgICAgICAgY3h4MTEtZXhwbGljaXQtb3ZlcnJpZGUtY29udHJvbC5o IFwKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdGFzazE4OTk5Ni5o IGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3Rhc2sxODk5OTYuaAorZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCBmOTRhMDUxYjNhLi4wMDAwMDAwMDAwCistLS0gYS9xdGJhc2Uv dGVzdHMvYXV0by90b29scy9tb2MvdGFzazE4OTk5Ni5oCisrKysgL2Rldi9udWxsCitAQCAtMSw0 NyArMCwwIEBACistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0qKgorLSoqIENvcHlyaWdodCAoQykg MjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCistKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8v bGljZW5zaW5nLworLSoqCistKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qgc3VpdGUg b2YgdGhlIFF0IFRvb2xraXQuCistKioKKy0qKiAkUVRfQkVHSU5fTElDRU5TRTpHUEwtRVhDRVBU JAorLSoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorLSoqIExpY2Vuc2VlcyBob2xkaW5nIHZh bGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKy0qKiBhY2Nv cmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0 aCB0aGUKKy0qKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRo IHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKy0qKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4g eW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworLSoqIGFuZCBjb25k aXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhl cgorLSoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0 LmlvL2NvbnRhY3QtdXMuCistKioKKy0qKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2Fn ZQorLSoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVQorLSoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorLSoqIEZvdW5kYXRpb24gd2l0aCBleGNlcHRp b25zIGFzIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDMtRVhDRVBUCistKiogaW5j bHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZv bGxvd2luZworLSoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKKy0qKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorLSoqCistKiogJFFUX0VORF9MSUNFTlNFJAorLSoq CistKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKy0vLyBpbmxpbmUgZnVuY3Rpb25zIGNhbiBoYXZlIHRo cm93IGRlY2xhcmF0aW9ucworLQorLSNpZm5kZWYgVEFTSzE4OTk5Nl9ICistI2RlZmluZSBUQVNL MTg5OTk2X0gKKy0KKy0jaW5jbHVkZSA8UU9iamVjdD4KKy0KKy1jbGFzcyBJbmxpbmVTbG90c1dp dGhUaHJvd0RlY2xhcmF0aW9uIDogcHVibGljIFFPYmplY3QKKy17CistICAgIFFfT0JKRUNUCist CistcHVibGljIHNsb3RzOgorLSAgICB2b2lkIGEoKSB0aHJvdygpIHsgfQorLSAgICB2b2lkIGIo KSBjb25zdCB0aHJvdygpIHsgfQorLSAgICB2b2lkIGMoKSB0aHJvdygpOworLSAgICB2b2lkIGQo KSB0aHJvdyhpbnQpIHsgfQorLSAgICB2b2lkIGUoKSBjb25zdCB0aHJvdyhpbnQsZG91YmxlKSB7 IH0KKy19OworLQorLSNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xz L21vYy90c3RfbW9jLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9jLmNw cAoraW5kZXggYzcxNmFlYWQyMS4uMTVkZDllNDFlNSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0 cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9jLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9v bHMvbW9jL3RzdF9tb2MuY3BwCitAQCAtNjMxLDcgKzYzMSw2IEBAIHB1YmxpYzoKKyBwcml2YXRl IHNsb3RzOgorICAgICB2b2lkIGluaXRUZXN0Q2FzZSgpOworIAorLSAgICB2b2lkIHNsb3RXaXRo RXhjZXB0aW9uKCkgdGhyb3coTXlTdHJ1Y3QpOworICAgICB2b2lkIGRvbnRTdHJpcE5hbWVzcGFj ZXMoKTsKKyAgICAgdm9pZCBvbGRTdHlsZUNhc3RzKCk7CisgICAgIHZvaWQgd2Fybk9uRXh0cmFT aWduYWxTbG90UXVhbGlmaWFjdGlvbigpOworQEAgLTY3Myw3ICs2NzIsNiBAQCBwcml2YXRlIHNs b3RzOgorICAgICB2b2lkIHRlbXBsYXRlR3RHdCgpOworICAgICB2b2lkIHFwcml2YXRlc2xvdHMo KTsKKyAgICAgdm9pZCBxcHJpdmF0ZXByb3BlcnRpZXMoKTsKKy0gICAgdm9pZCBpbmxpbmVTbG90 c1dpdGhUaHJvd0RlY2xhcmF0aW9uKCk7CisgICAgIHZvaWQgd2Fybk9uUHJvcGVydHlXaXRob3V0 UkVBRCgpOworICAgICB2b2lkIGNvbnN0cnVjdG9ycygpOworICAgICB2b2lkIHR5cGVuYW1lV2l0 aFVuc2lnbmVkKCk7CitAQCAtNzg0LDEyICs3ODIsNiBAQCB2b2lkIHRzdF9Nb2M6OmluaXRUZXN0 Q2FzZSgpCisgI2VuZGlmCisgfQorIAorLXZvaWQgdHN0X01vYzo6c2xvdFdpdGhFeGNlcHRpb24o KSB0aHJvdyhNeVN0cnVjdCkKKy17CistICAgIC8vIGJlIGhhcHB5CistICAgIFFWRVJJRlkodHJ1 ZSk7CistfQorLQorIHZvaWQgdHN0X01vYzo6ZG9udFN0cmlwTmFtZXNwYWNlcygpCisgeworICAg ICBTZW5kZXIgc2VuZGVyOworQEAgLTgyNCw3ICs4MTYsNyBAQCB2b2lkIHRzdF9Nb2M6Om9sZFN0 eWxlQ2FzdHMoKQorIAorICAgICBRU3RyaW5nTGlzdCBhcmdzOworICAgICBhcmdzIDw8ICItYyIg PDwgIi14IiA8PCAiYysrIiA8PCAiLVdvbGQtc3R5bGUtY2FzdCIgPDwgIi1JIiA8PCAiLiIKKy0g ICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8 PCAiLWZQSUMiIDw8ICItc3RkPWMrKzExIiA8PCAiLSI7CisrICAgICAgICAgPDwgIi1JIiA8PCBx dEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1j KysxeiIgPDwgIi0iOworICAgICBwcm9jLnN0YXJ0KCJnY2MiLCBhcmdzKTsKKyAgICAgUVZFUklG WShwcm9jLndhaXRGb3JTdGFydGVkKCkpOworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitAQCAt ODk0LDcgKzg4Niw3IEBAIHZvaWQgdHN0X01vYzo6aW5wdXRGaWxlTmFtZVdpdGhEb3RzQnV0Tm9F eHRlbnNpb24oKQorIAorICAgICBRU3RyaW5nTGlzdCBhcmdzOworICAgICBhcmdzIDw8ICItYyIg PDwgIi14IiA8PCAiYysrIiA8PCAiLUkiIDw8ICIuLiIKKy0gICAgICAgICA8PCAiLUkiIDw8IHF0 SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMr KzExIiA8PCAiLSI7CisrICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIg PDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxeiIgPDwgIi0iOworICAgICBw cm9jLnN0YXJ0KCJnY2MiLCBhcmdzKTsKKyAgICAgUVZFUklGWShwcm9jLndhaXRGb3JTdGFydGVk KCkpOworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitAQCAtMTE3NCw3ICsxMTY2LDcgQEAgdm9p ZCB0c3RfTW9jOjppZ25vcmVPcHRpb25DbGFzaGVzKCkKKyAgICAgUVN0cmluZ0xpc3QgZ2NjQXJn czsKKyAgICAgZ2NjQXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1JIiA8PCAiLi4i CisgICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItSSIgPDwgaW5jbHVkZURp ciA8PCAiLW8iIDw8ICIvZGV2L251bGwiCistICAgICAgICAgPDwgIi1mUElDIiA8PCAiLXN0ZD1j KysxMSIgPDwgICItIjsKKysgICAgICAgICA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAg Ii0iOworICAgICBwcm9jLnN0YXJ0KCJnY2MiLCBnY2NBcmdzKTsKKyAgICAgUVZFUklGWShwcm9j LndhaXRGb3JTdGFydGVkKCkpOworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitAQCAtMTU5Mywy MSArMTU4NSw2IEBAIHZvaWQgdHN0X01vYzo6cXByaXZhdGVwcm9wZXJ0aWVzKCkKKyAKKyB9Cisg CistI2luY2x1ZGUgInRhc2sxODk5OTYuaCIKKy0KKy12b2lkIElubGluZVNsb3RzV2l0aFRocm93 RGVjbGFyYXRpb246OmMoKSB0aHJvdygpIHt9CistCistdm9pZCB0c3RfTW9jOjppbmxpbmVTbG90 c1dpdGhUaHJvd0RlY2xhcmF0aW9uKCkKKy17CistICAgIElubGluZVNsb3RzV2l0aFRocm93RGVj bGFyYXRpb24gdHN0OworLSAgICBjb25zdCBRTWV0YU9iamVjdCAqbW9iaiA9IHRzdC5tZXRhT2Jq ZWN0KCk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImEoKSIpICE9IC0xKTsKKy0g ICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiYigpIikgIT0gLTEpOworLSAgICBRVkVSSUZZ KG1vYmotPmluZGV4T2ZTbG90KCJjKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5k ZXhPZlNsb3QoImQoKSIpICE9IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgi ZSgpIikgIT0gLTEpOworLX0KKy0KKyB2b2lkIHRzdF9Nb2M6Ondhcm5PblByb3BlcnR5V2l0aG91 dFJFQUQoKQorIHsKKyAjaWZkZWYgTU9DX0NST1NTX0NPTVBJTEVECitAQCAtMTg2OSw3ICsxODQ2 LDcgQEAgdm9pZCB0c3RfTW9jOjpub3RpZnlFcnJvcigpCisgCisgICAgIFFTdHJpbmdMaXN0IGFy Z3M7CisgICAgIGFyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysiIDw8ICItSSIgPDwgIi4iCist ICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIg PDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgIi0iOworKyAgICAgICAgIDw8ICItSSIgPDwg cXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9 YysrMXoiIDw8ICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgYXJncyk7CisgICAgIFFWRVJJ RlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQpOworZGlm ZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3 L3RzdF9xaGVhZGVydmlldy5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3 cy9xaGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3BwCitpbmRleCBjMzU1ZWU5NjY1Li44OGMw OWRlOGUwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3Mv cWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcAorQEAgLTI1 MSw2ICsyNTEsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHRlc3RSZXNldENhY2hlZFNp emVIaW50KCk7CisgICAgIHZvaWQgc3RhdHVzVGlwcygpOworICAgICB2b2lkIHRlc3RSZW1vdmlu Z0NvbHVtbnNWaWFMYXlvdXRDaGFuZ2VkKCk7CisrICAgIHZvaWQgdGVzdE1vZGVsTW92aW5nQ29s dW1ucygpOworIAorIHByb3RlY3RlZDoKKyAgICAgdm9pZCBzZXR1cFRlc3REYXRhKGJvb2wgdXNl X3Jlc2V0X21vZGVsID0gZmFsc2UpOworQEAgLTM2MCw2ICszNjEsMTIgQEAgcHVibGljOgorICAg ICAgICAgZW5kUmVtb3ZlQ29sdW1ucygpOworICAgICB9CisgCisrICAgIHZvaWQgbW92ZUNvbHVt bihpbnQgZnJvbSwgaW50IHRvKQorKyAgICB7CisrICAgICAgICBiZWdpbk1vdmVDb2x1bW5zKFFN b2RlbEluZGV4KCksIGZyb20sIGZyb20sIFFNb2RlbEluZGV4KCksIHRvKTsKKysgICAgICAgIGVu ZE1vdmVDb2x1bW5zKCk7CisrICAgIH0KKysKKyAgICAgdm9pZCBjbGVhbnVwKCkKKyAgICAgewor ICAgICAgICAgZW1pdCBsYXlvdXRBYm91dFRvQmVDaGFuZ2VkKCk7CitAQCAtMzYyNyw1ICszNjM0 LDE4IEBAIHZvaWQgdHN0X1FIZWFkZXJWaWV3Ojp0ZXN0UmVtb3ZpbmdDb2x1bW5zVmlhTGF5b3V0 Q2hhbmdlZCgpCisgICAgIC8vIFRoZSBtYWluIHBvaW50IG9mIHRoaXMgdGVzdCBpcyB0aGF0IHRo ZSBzZWN0aW9uLXNpemUgcmVzdG9yaW5nIGNvZGUgZGlkbid0IGdvIG91dCBvZiBib3VuZHMuCisg fQorIAorK3ZvaWQgdHN0X1FIZWFkZXJWaWV3Ojp0ZXN0TW9kZWxNb3ZpbmdDb2x1bW5zKCkKKyt7 CisrICAgIFF0VGVzdE1vZGVsIG1vZGVsKDEwLCAxMCk7CisrICAgIFFIZWFkZXJWaWV3IGh2KFF0 OjpIb3Jpem9udGFsKTsKKysgICAgaHYuc2V0TW9kZWwoJm1vZGVsKTsKKysgICAgaHYucmVzaXpl U2VjdGlvbnMoUUhlYWRlclZpZXc6OlJlc2l6ZVRvQ29udGVudHMpOworKyAgICBodi5zaG93KCk7 CisrCisrICAgIFFQZXJzaXN0ZW50TW9kZWxJbmRleCBpbmRleDMgPSBtb2RlbC5pbmRleCgwLCAz KTsKKysgICAgbW9kZWwubW92ZUNvbHVtbigzLCAxKTsKKysgICAgUUNPTVBBUkUoaW5kZXgzLmNv bHVtbigpLCAxKTsKKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUUhlYWRlclZpZXcpCisgI2luY2x1 ZGUgInRzdF9xaGVhZGVydmlldy5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAgYi9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3L3RzdF9xdGFibGV2aWV3LmNw cAoraW5kZXggNzYxMzU3YjI1Mi4uMDZiYjcwNjA3NCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwCisr KysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3L3RzdF9x dGFibGV2aWV3LmNwcAorQEAgLTM5Nyw2ICszOTcsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2 b2lkIGNoZWNrSGVhZGVyTWluU2l6ZSgpOworIAorICAgICB2b2lkIHJlc2l6ZVRvQ29udGVudHMo KTsKKysgICAgdm9pZCByZXNpemVUb0NvbnRlbnRzU3BhbnMoKTsKKyAKKyAgICAgdm9pZCB0YWJG b2N1cygpOworICAgICB2b2lkIGJpZ01vZGVsKCk7CitAQCAtMzcyMSw2ICszNzIyLDcwIEBAIHZv aWQgdHN0X1FUYWJsZVZpZXc6OnJlc2l6ZVRvQ29udGVudHMoKQorIAorIH0KKyAKKysKKytjbGFz cyBTcGFuTW9kZWwgOiBwdWJsaWMgUUFic3RyYWN0VGFibGVNb2RlbAorK3sKKytwdWJsaWM6Cisr ICAgIFNwYW5Nb2RlbChib29sIHNlY3Rpb25zTW92ZWQpCisrICAgICAgICA6IF9zZWN0aW9uc01v dmVkKHNlY3Rpb25zTW92ZWQpCisrICAgIHt9CisrICAgIGludCBjb2x1bW5Db3VudChjb25zdCBR TW9kZWxJbmRleCAmID0ge30pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDI7IH0KKysgICAgaW50 IHJvd0NvdW50KGNvbnN0IFFNb2RlbEluZGV4ICYgPSB7fSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1 cm4gMTsgfQorKyAgICBRVmFyaWFudCBkYXRhKGNvbnN0IFFNb2RlbEluZGV4ICZpZHgsIGludCBy b2xlID0gUXQ6OkRpc3BsYXlSb2xlKSBjb25zdCBvdmVycmlkZQorKyAgICB7CisrICAgICAgICBp ZiAocm9sZSAhPSBRdDo6RGlzcGxheVJvbGUpCisrICAgICAgICAgICAgcmV0dXJuIFFWYXJpYW50 KCk7CisrICAgICAgICBjb25zdCBpbnQgY29sID0gX3NlY3Rpb25zTW92ZWQgPyAxIC0gaWR4LmNv bHVtbigpIDogaWR4LmNvbHVtbigpOworKyAgICAgICAgaWYgKGNvbCA9PSAwKQorKyAgICAgICAg ICAgIHJldHVybiAiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBp c2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0 IGRvbG9yZSBtYWduYSBhbGlxdWEuIjsKKysgICAgICAgIHJldHVybiBRVmFyaWFudCgpOworKyAg ICB9CisrcHJpdmF0ZToKKysgICAgYm9vbCBfc2VjdGlvbnNNb3ZlZDsKKyt9OworKworKworK3Zv aWQgdHN0X1FUYWJsZVZpZXc6OnJlc2l6ZVRvQ29udGVudHNTcGFucygpCisreworKyAgICBTcGFu TW9kZWwgbW9kZWwxKGZhbHNlKTsKKysgICAgU3Bhbk1vZGVsIG1vZGVsMih0cnVlKTsKKysgICAg UVRhYmxlVmlldyB2aWV3MSwgdmlldzIsIHZpZXczOworKyAgICB2aWV3MS5zZXRNb2RlbCgmbW9k ZWwxKTsKKysgICAgdmlldzIuc2V0TW9kZWwoJm1vZGVsMik7CisrICAgIHZpZXcyLmhvcml6b250 YWxIZWFkZXIoKS0+bW92ZVNlY3Rpb24oMCwgMSk7CisrICAgIHZpZXczLnNldE1vZGVsKCZtb2Rl bDEpOworKworKyAgICB2aWV3MS5zZXRTcGFuKDAsIDAsIDEsIDIpOworKyAgICB2aWV3Mi5zZXRT cGFuKDAsIDEsIDEsIDIpOworKyAgICB2aWV3MS5zaG93KCk7CisrICAgIHZpZXcyLnNob3coKTsK KysgICAgdmlldzMuc2hvdygpOworKyAgICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4 cG9zZWQoJnZpZXcxKSk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3Nl ZCgmdmlldzIpKTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2 aWV3MykpOworKyAgICB2aWV3MS5zZXRDb2x1bW5XaWR0aCgwLCAxMDApOworKyAgICB2aWV3MS5z ZXRDb2x1bW5XaWR0aCgxLCAxMDApOworKyAgICB2aWV3Mi5zZXRDb2x1bW5XaWR0aCgwLCAxMDAp OworKyAgICB2aWV3Mi5zZXRDb2x1bW5XaWR0aCgxLCAxMDApOworKyAgICB2aWV3My5zZXRDb2x1 bW5XaWR0aCgwLCAyMDApOworKworKyAgICB2aWV3MS5yZXNpemVSb3dUb0NvbnRlbnRzKDApOwor KyAgICB2aWV3Mi5yZXNpemVSb3dUb0NvbnRlbnRzKDApOworKyAgICB2aWV3My5yZXNpemVSb3dU b0NvbnRlbnRzKDApOworKyAgICBRQ09NUEFSRSh2aWV3MS5yb3dIZWlnaHQoMCksIHZpZXczLnJv d0hlaWdodCgwKSk7CisrICAgIFFDT01QQVJFKHZpZXcyLnJvd0hlaWdodCgwKSwgdmlldzMucm93 SGVpZ2h0KDApKTsKKysKKysgICAgdmlldzMucmVzaXplQ29sdW1uVG9Db250ZW50cygwKTsKKysg ICAgdmlldzMucmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAgLy8gaGVpZ2h0IHNob3VsZCBi ZSBvbmx5IDEgdGV4dCBsaW5lIGZvciBlYXN5IHRlc3RpbmcKKysgICAgdmlldzEuc2V0Um93SGVp Z2h0KDAsIHZpZXczLnZlcnRpY2FsSGVhZGVyKCktPnNlY3Rpb25TaXplKDApKTsKKysgICAgdmll dzIuc2V0Um93SGVpZ2h0KDAsIHZpZXczLnZlcnRpY2FsSGVhZGVyKCktPnNlY3Rpb25TaXplKDAp KTsKKysgICAgdmlldzEucmVzaXplQ29sdW1uVG9Db250ZW50cygwKTsKKysgICAgdmlldzIucmVz aXplQ29sdW1uVG9Db250ZW50cygxKTsKKysgICAgUUNPTVBBUkUodmlldzEuY29sdW1uV2lkdGgo MCksIHZpZXczLmNvbHVtbldpZHRoKDApIC0gdmlldzEuY29sdW1uV2lkdGgoMSkpOworKyAgICBR Q09NUEFSRSh2aWV3Mi5jb2x1bW5XaWR0aCgwKSwgdmlldzMuY29sdW1uV2lkdGgoMCkgLSB2aWV3 Mi5jb2x1bW5XaWR0aCgxKSk7CisrfQorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIGV4dGVybiBi b29sIFFfV0lER0VUU19FWFBPUlQgcXRfdGFiX2FsbF93aWRnZXRzKCk7IC8vIHFhcHBsaWNhdGlv bi5jcHAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3BwIGIvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24u Y3BwCitpbmRleCBhM2I4ZWY3OGQ4Li40OTU1Y2ViZDVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3Bw CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5lbC9xYXBwbGljYXRpb24vdHN0 X3FhcHBsaWNhdGlvbi5jcHAKK0BAIC0xNDk4LDcgKzE0OTgsNyBAQCB2b2lkIHRzdF9RQXBwbGlj YXRpb246OmRlc2t0b3BTZXR0aW5nc0F3YXJlKCkKKyAgICAgZW52aXJvbm1lbnQgKz0gUUxhdGlu MVN0cmluZygiUVRfTUFDX0RJU0FCTEVfRk9SRUdST1VORF9BUFBMSUNBVElPTl9UUkFOU0ZPUk09 MSIpOworICAgICB0ZXN0UHJvY2Vzcy5zZXRFbnZpcm9ubWVudChlbnZpcm9ubWVudCk7CisgI2Vu ZGlmCistICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCJkZXNrdG9wc2V0dGluZ3Nhd2FyZV9oZWxwZXIi KTsKKysgICAgdGVzdFByb2Nlc3Muc3RhcnQoIi4vZGVza3RvcHNldHRpbmdzYXdhcmVfaGVscGVy Iik7CisgICAgIFFWRVJJRlkyKHRlc3RQcm9jZXNzLndhaXRGb3JTdGFydGVkKCksCisgICAgICAg ICAgICAgIHFQcmludGFibGUoUVN0cmluZzo6ZnJvbUxhdGluMSgiQ2Fubm90IHN0YXJ0ICdkZXNr dG9wc2V0dGluZ3Nhd2FyZV9oZWxwZXInOiAlMSIpLmFyZyh0ZXN0UHJvY2Vzcy5lcnJvclN0cmlu ZygpKSkpOworICAgICBRVkVSSUZZKHRlc3RQcm9jZXNzLndhaXRGb3JGaW5pc2hlZCgxMDAwMCkp OworQEAgLTI0NTIsNyArMjQ1Miw3IEBAIHZvaWQgdHN0X1FBcHBsaWNhdGlvbjo6cXRidWdfMTI2 NzMoKQorICNpZiBRVF9DT05GSUcocHJvY2VzcykKKyAgICAgUVByb2Nlc3MgdGVzdFByb2Nlc3M7 CisgICAgIFFTdHJpbmdMaXN0IGFyZ3VtZW50czsKKy0gICAgdGVzdFByb2Nlc3Muc3RhcnQoIm1v ZGFsX2hlbHBlciIsIGFyZ3VtZW50cyk7CisrICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCIuL21vZGFs X2hlbHBlciIsIGFyZ3VtZW50cyk7CisgICAgIFFWRVJJRlkyKHRlc3RQcm9jZXNzLndhaXRGb3JT dGFydGVkKCksCisgICAgICAgICAgICAgIHFQcmludGFibGUoUVN0cmluZzo6ZnJvbUxhdGluMSgi Q2Fubm90IHN0YXJ0ICdtb2RhbF9oZWxwZXInOiAlMSIpLmFyZyh0ZXN0UHJvY2Vzcy5lcnJvclN0 cmluZygpKSkpOworICAgICBRVkVSSUZZKHRlc3RQcm9jZXNzLndhaXRGb3JGaW5pc2hlZCgyMDAw MCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJz dHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3BwCitp bmRleCBlYjEwOGE0MGRlLi5kY2E1NTI4YzFiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3RfcWFic3RyYWN0YnV0dG9uLmNw cAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRv bi90c3RfcWFic3RyYWN0YnV0dG9uLmNwcAorQEAgLTQxLDYgKzQxLDcgQEAKKyAKKyAjaW5jbHVk ZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorICNpbmNsdWRlIDxxcGEvcXBsYXRmb3Jt aW50ZWdyYXRpb24uaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisgCisgY2xh c3MgdHN0X1FBYnN0cmFjdEJ1dHRvbiA6IHB1YmxpYyBRT2JqZWN0CisgeworQEAgLTc2LDYgKzc3 LDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBrZXlOYXZpZ2F0aW9uKCk7CisgI2VuZGlm CisgCisrICAgIHZvaWQgYnV0dG9uUHJlc3NLZXlzKCk7CisrCisgcHJvdGVjdGVkIHNsb3RzOgor ICAgICB2b2lkIG9uQ2xpY2tlZCgpOworICAgICB2b2lkIG9uVG9nZ2xlZCggYm9vbCBvbiApOwor QEAgLTI2OSw3ICsyNzIsMTMgQEAgdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpzZXRBdXRvUmVw ZWF0KCkKKyAgICAgICAgIFFDT01QQVJFKHByZXNzX2NvdW50LCBjbGlja19jb3VudCk7CisgICAg ICAgICBRVkVSSUZZKGNsaWNrX2NvdW50ID4gMSk7CisgICAgICAgICBicmVhazsKKy0gICAgY2Fz ZSA0OgorKyAgICBjYXNlIDQ6IHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlz ID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhl bWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoYnV0dG9u UHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICAgICAgUVNLSVAo InBsYXRmb3JtIHRoZW1lIGhhcyBLZXlfRW50ZXIgaW4gQnV0dG9uUHJlc3NLZXlzIik7CisrICAg ICAgICB9CisgICAgICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZl Y3Qgd2hlbiBhdXRvcmVwZWF0IGlzIGZhbHNlCisgICAgICAgICB0ZXN0V2lkZ2V0LT5zZXREb3du KCBmYWxzZSApOworICAgICAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggZmFsc2UgKTsK K0BAIC0yODYsNyArMjk1LDE0IEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6c2V0QXV0b1Jl cGVhdCgpCisgCisgICAgICAgICBRVkVSSUZZKCBjbGlja19jb3VudCA9PSAwICk7CisgICAgICAg ICBicmVhazsKKy0gICAgY2FzZSA1OgorKyAgICB9CisrICAgIGNhc2UgNTogeworKyAgICAgICAg Y29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0 Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5 Pj4oKTsKKysgICAgICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRl cikpIHsKKysgICAgICAgICAgICBRU0tJUCgicGxhdGZvcm0gdGhlbWUgaGFzIEtleV9FbnRlciBp biBCdXR0b25QcmVzc0tleXMiKTsKKysgICAgICAgIH0KKyAgICAgICAgIC8vIGNoZWNrIHRoYXQg cHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVjdCB3aGVuIGF1dG9yZXBlYXQgaXMgdHJ1ZQorICAg ICAgICAgdGVzdFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKyAgICAgICAgIHRlc3RXaWRnZXQt PnNldEF1dG9SZXBlYXQoIHRydWUgKTsKK0BAIC0zMDQsNiArMzIwLDcgQEAgdm9pZCB0c3RfUUFi c3RyYWN0QnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkKKyAKKyAgICAgICAgIFFWRVJJRlkoIGNsaWNr X2NvdW50ID09IDAgKTsKKyAgICAgICAgIGJyZWFrOworKyAgICB9CisgICAgIGNhc2UgNjoKKyAg ICAgICAgIC8vIHZlcmlmeSBhdXRvcmVwZWF0IGlzIG9mZiBieSBkZWZhdWx0LgorICAgICAgICAg TXlCdXR0b24gdG1wKCAwKTsKK0BAIC02NTEsNSArNjY4LDE2IEBAIHZvaWQgdHN0X1FBYnN0cmFj dEJ1dHRvbjo6a2V5TmF2aWdhdGlvbigpCisgfQorICNlbmRpZgorIAorK3ZvaWQgdHN0X1FBYnN0 cmFjdEJ1dHRvbjo6YnV0dG9uUHJlc3NLZXlzKCkKKyt7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9u UHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZv cm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBmb3IgKGludCBpID0g MDsgaSA8IGJ1dHRvblByZXNzS2V5cy5sZW5ndGgoKTsgKytpKSB7CisrICAgICAgICBRVGVzdDo6 a2V5Q2xpY2sodGVzdFdpZGdldCwgYnV0dG9uUHJlc3NLZXlzW2ldKTsKKysgICAgICAgIFFDT01Q QVJFKGNsaWNrX2NvdW50LCBpICsgMSk7CisrICAgIH0KKyt9CisrCisgUVRFU1RfTUFJTih0c3Rf UUFic3RyYWN0QnV0dG9uKQorICNpbmNsdWRlICJ0c3RfcWFic3RyYWN0YnV0dG9uLm1vYyIKK2Rp ZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3Rz dF9xY29tYm9ib3guY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21i b2JveC90c3RfcWNvbWJvYm94LmNwcAoraW5kZXggMzI0MzcwNTBmNS4uNDZiNWFmNmQ2MyAxMDA2 NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0 X3Fjb21ib2JveC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9x Y29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAKK0BAIC0xNjgsNiArMTY4LDcgQEAgcHJpdmF0ZSBz bG90czoKKyAgICAgdm9pZCBjaGVja01lbnVJdGVtUG9zV2hlblN0eWxlU2hlZXRJc1NldCgpOwor ICAgICB2b2lkIGNoZWNrRW1iZWRkZWRMaW5lRWRpdFdoZW5TdHlsZVNoZWV0SXNTZXQoKTsKKyAg ICAgdm9pZCBwcm9wYWdhdGVTdHlsZUNoYW5nZXMoKTsKKysgICAgdm9pZCBidXR0b25QcmVzc0tl eXMoKTsKKyAKKyBwcml2YXRlOgorICAgICBQbGF0Zm9ybUlucHV0Q29udGV4dCBtX3BsYXRmb3Jt SW5wdXRDb250ZXh0OworQEAgLTE2ODIsNiArMTY4MywxNiBAQCB2b2lkIHRzdF9RQ29tYm9Cb3g6 OnNldE1vZGVsKCkKKyAgICAgUUNPTVBBUkUoYm94LnJvb3RNb2RlbEluZGV4KCksIHJvb3RNb2Rl bEluZGV4KTsKKyAgICAgYm94LnNldE1vZGVsKGJveC5tb2RlbCgpKTsKKyAgICAgUUNPTVBBUkUo Ym94LnJvb3RNb2RlbEluZGV4KCksIHJvb3RNb2RlbEluZGV4KTsKKysKKysgICAgLy8gY2hlY2sg dGhhdCBzZXR0aW5nIHRoZSBzYW1lIG1vZGVsIGFzIHRoZSBjb21wbGV0ZXIncyBkb2Vzbid0IGNy YXNoCisrICAgIFFDb21wbGV0ZXIgKmNvbXBsZXRlciA9IG5ldyBRQ29tcGxldGVyKCZib3gpOwor KyAgICBib3guc2V0RWRpdGFibGUodHJ1ZSk7CisrICAgIGJveC5zZXRDb21wbGV0ZXIoY29tcGxl dGVyKTsKKysgICAgYXV0byAqbGlzdE1vZGVsID0gbmV3IFFTdHJpbmdMaXN0TW9kZWwoeyAib25l IiwgInR3byIgfSwgY29tcGxldGVyKTsKKysgICAgY29tcGxldGVyLT5zZXRNb2RlbChsaXN0TW9k ZWwpOworKyAgICBRQ09NUEFSRShsaXN0TW9kZWwtPnJvd0NvdW50KCksIDIpOyAvLyBtYWtlIHN1 cmUgaXQgd2Fzbid0IGRlbGV0ZWQKKysgICAgYm94LnNldE1vZGVsKGxpc3RNb2RlbCk7CisrICAg IFFDT01QQVJFKGxpc3RNb2RlbC0+cm93Q291bnQoKSwgMik7IC8vIG1ha2Ugc3VyZSBpdCB3YXNu J3QgZGVsZXRlZAorIH0KKyAKKyB2b2lkIHRzdF9RQ29tYm9Cb3g6OnNldEN1c3RvbU1vZGVsQW5k VmlldygpCitAQCAtMzYzMiw1ICszNjQzLDI0IEBAIHZvaWQgdHN0X1FDb21ib0JveDo6cHJvcGFn YXRlU3R5bGVDaGFuZ2VzKCkKKyAgICAgUVZFUklGWShmcmFtZVN0eWxlLmlucXVpcmVkKTsKKyB9 CisgCisrdm9pZCB0c3RfUUNvbWJvQm94OjpidXR0b25QcmVzc0tleXMoKQorK3sKKysgICAgUUNv bWJvQm94IGNvbWJvQm94OworKyAgICBjb21ib0JveC5zZXRFZGl0YWJsZShmYWxzZSk7CisrICAg IGNvbWJvQm94LmFkZEl0ZW0oUVN0cmluZzo6bnVtYmVyKDEpKTsKKysgICAgY29tYm9Cb3guYWRk SXRlbShRU3RyaW5nOjpudW1iZXIoMikpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5 cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6 OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBi dXR0b25QcmVzc0tleXMubGVuZ3RoKCk7ICsraSkgeworKyAgICAgICAgUVRlc3Q6OmtleUNsaWNr KCZjb21ib0JveCwgYnV0dG9uUHJlc3NLZXlzW2ldKTsKKysgICAgICAgIC8vIE9uIHNvbWUgcGxh dGZvcm1zLCBhIHdpbmRvdyB3aWxsIG5vdCBiZSBpbW1lZGlhdGVseSB2aXNpYmxlLAorKyAgICAg ICAgLy8gYnV0IHRha2Ugc29tZSBldmVudC1sb29wIGl0ZXJhdGlvbnMgdG8gY29tcGxldGUuCisr ICAgICAgICAvLyBVc2luZyBRVFJZX1ZFUklGWSB0byBkZWFsIHdpdGggdGhhdC4KKysgICAgICAg IFFUUllfVkVSSUZZKGNvbWJvQm94LnZpZXcoKS0+aXNWaXNpYmxlKCkpOworKyAgICAgICAgY29t Ym9Cb3guaGlkZVBvcHVwKCk7CisrICAgIH0KKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUUNvbWJv Qm94KQorICNpbmNsdWRlICJ0c3RfcWNvbWJvYm94Lm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3Fjb21tYW5kbGlu a2J1dHRvbi5wcm8gYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRs aW5rYnV0dG9uL3Fjb21tYW5kbGlua2J1dHRvbi5wcm8KK2luZGV4IGJlM2NmY2QxMDQuLmMyMjhm ZGZjY2EgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNv bW1hbmRsaW5rYnV0dG9uL3Fjb21tYW5kbGlua2J1dHRvbi5wcm8KKysrKyBiL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5rYnV0 dG9uLnBybworQEAgLTEsNiArMSw2IEBACisgQ09ORklHICs9IHRlc3RjYXNlCisgVEFSR0VUID0g dHN0X3Fjb21tYW5kbGlua2J1dHRvbgorLVFUICs9IHdpZGdldHMgdGVzdGxpYgorK1FUICs9IHdp ZGdldHMgdGVzdGxpYiBndWktcHJpdmF0ZQorIFNPVVJDRVMgICs9IHRzdF9xY29tbWFuZGxpbmti dXR0b24uY3BwCisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93 aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcCBiL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0X3Fj b21tYW5kbGlua2J1dHRvbi5jcHAKK2luZGV4IDAwNDRkMzNjNjYuLjRjZjA2Mjk2ZTQgMTAwNjQ0 CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0 dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24u Y3BwCitAQCAtNDAsNiArNDAsOSBAQAorICNpbmNsdWRlIDxRR3JpZExheW91dD4KKyAjaW5jbHVk ZSA8UVBhaW50ZXI+CisgCisrI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4K KysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisrCisgY2xhc3MgdHN0X1FDb21tYW5k TGlua0J1dHRvbiA6IHB1YmxpYyBRT2JqZWN0CisgeworICAgICBRX09CSkVDVAorQEAgLTIyMyw2 ICsyMjYsMTMgQEAgdm9pZCB0c3RfUUNvbW1hbmRMaW5rQnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkK KyAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBoYXMgbm8gZWZmZWN0CisgICAgIHJl c2V0Q291bnRlcnMoKTsKKyAgICAgdGVzdFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKysgICAg Ly8gU2tpcCBhZnRlciByZXNldCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtleV9FbnRlcgorKyAg ICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBs YXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsK KysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAg ICAgICAgcmV0dXJuOworKyAgICB9CisgICAgIHRlc3RXaWRnZXQtPnNldEF1dG9SZXBlYXQoIGZh bHNlICk7CisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVzdFdpZGdldCwgUXQ6OktleV9FbnRlciAp OworIAorQEAgLTI1NSw2ICsyNjUsMTQgQEAgdm9pZCB0c3RfUUNvbW1hbmRMaW5rQnV0dG9uOjpw cmVzc2VkKCkKKyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFD T01QQVJFKCByZWxlYXNlX2NvdW50LCAodWludCkxICk7CisgCisrICAgIC8vIFNraXAgaWYgQnV0 dG9uUHJlc3NLZXlzIGhhcyBLZXlfRW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tl eXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1l OjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMu Y29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKwor ICAgICBRVGVzdDo6a2V5UHJlc3MoIHRlc3RXaWRnZXQsUXQ6OktleV9FbnRlciApOworICAgICBR Q09NUEFSRSggcHJlc3NfY291bnQsICh1aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2Vf Y291bnQsICh1aW50KTEgKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRz L3dpZGdldHMvcWdyb3VwYm94L3Fncm91cGJveC5wcm8gYi9xdGJhc2UvdGVzdHMvYXV0by93aWRn ZXRzL3dpZGdldHMvcWdyb3VwYm94L3Fncm91cGJveC5wcm8KK2luZGV4IDRhNWU3NmZmNjUuLmEy MzVmYTFmYWMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMv cWdyb3VwYm94L3Fncm91cGJveC5wcm8KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMv d2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3VwYm94LnBybworQEAgLTEsNiArMSw2IEBACisgQ09ORklH ICs9IHRlc3RjYXNlCisgVEFSR0VUID0gdHN0X3Fncm91cGJveAorLVFUICs9IHdpZGdldHMgdGVz dGxpYgorK1FUICs9IHdpZGdldHMgdGVzdGxpYiBndWktcHJpdmF0ZQorIFNPVVJDRVMgICs9IHRz dF9xZ3JvdXBib3guY3BwCisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lk Z2V0cy93aWRnZXRzL3Fncm91cGJveC90c3RfcWdyb3VwYm94LmNwcCBiL3F0YmFzZS90ZXN0cy9h dXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fncm91cGJveC5jcHAKK2luZGV4IDRm YjVkMjYyY2EuLmQ4ZDc1NjJiNzMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRn ZXRzL3dpZGdldHMvcWdyb3VwYm94L3RzdF9xZ3JvdXBib3guY3BwCisrKysgYi9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3RzdF9xZ3JvdXBib3guY3BwCitAQCAt MzUsNiArMzUsOSBAQAorICNpbmNsdWRlIDxRUmFkaW9CdXR0b24+CisgI2luY2x1ZGUgPFFEaWFs b2c+CisgCisrI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5jbHVk ZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisrCisgI2luY2x1ZGUgInFncm91cGJveC5oIgorIAor IGNsYXNzIHRzdF9RR3JvdXBCb3ggOiBwdWJsaWMgUU9iamVjdAorQEAgLTY5LDYgKzcyLDcgQEAg cHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBwcm9wYWdhdGVGb2N1cygpOworICAgICB2b2lkIHRh c2tfUVRCVUdfMTkxNzBfaWdub3JlTW91c2VSZWxlYXNlRXZlbnQoKTsKKyAgICAgdm9pZCB0YXNr X1FUQlVHXzE1NTE5X3Byb3BhZ2F0ZU1vdXNlRXZlbnRzKCk7CisrICAgIHZvaWQgYnV0dG9uUHJl c3NLZXlzKCk7CisgCisgcHJpdmF0ZToKKyAgICAgYm9vbCBjaGVja2VkOworQEAgLTYxMCw2ICs2 MTQsMjAgQEAgdm9pZCB0c3RfUUdyb3VwQm94Ojp0YXNrX1FUQlVHXzE1NTE5X3Byb3BhZ2F0ZU1v dXNlRXZlbnRzKCkKKyAgICAgUUNPTVBBUkUocGFyZW50Lm1vdXNlTW92ZWQsIHRydWUpOworIH0K KyAKKyt2b2lkIHRzdF9RR3JvdXBCb3g6OmJ1dHRvblByZXNzS2V5cygpCisreworKyAgICBRR3Jv dXBCb3ggZ3JvdXBCb3g7CisrICAgIGdyb3VwQm94LnNldENoZWNrYWJsZSh0cnVlKTsKKysgICAg UVNpZ25hbFNweSBjbGlja2VkU3B5KCZncm91cEJveCwgJlFHcm91cEJveDo6Y2xpY2tlZCk7Cisr ICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6 cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+Pigp OworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ1dHRvblByZXNzS2V5cy5sZW5ndGgoKTsgKytp KSB7CisrICAgICAgICBRVGVzdDo6a2V5Q2xpY2soJmdyb3VwQm94LCBidXR0b25QcmVzc0tleXNb aV0pOworKyAgICAgICAgUUNPTVBBUkUoY2xpY2tlZFNweS5sZW5ndGgoKSwgaSArIDEpOworKyAg ICB9CisrfQorKworIHZvaWQgdHN0X1FHcm91cEJveDo6c2VuZE1vdXNlTW92ZUV2ZW50KFFXaWRn ZXQgKndpZGdldCwgY29uc3QgUVBvaW50ICZsb2NhbFBvcykKKyB7CisgICAgIC8vIFNlbmQgYSBN b3VzZU1vdmUgZXZlbnQgd2l0aG91dCBhY3R1YWxseSBtb3ZpbmcgdGhlIHBvaW50ZXIKK2RpZmYg LS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1 c2hidXR0b24ucHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0 dG9uL3FwdXNoYnV0dG9uLnBybworaW5kZXggMzUzYWQwNmNhMi4uZTU1ZjYxNDhmMiAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVz aGJ1dHRvbi5wcm8KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVz aGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8KK0BAIC0xLDYgKzEsNiBAQAorIENPTkZJRyArPSB0ZXN0 Y2FzZQorIFRBUkdFVCA9IHRzdF9xcHVzaGJ1dHRvbgorLVFUICs9IHdpZGdldHMgdGVzdGxpYgor K1FUICs9IHdpZGdldHMgdGVzdGxpYiBndWktcHJpdmF0ZQorIFNPVVJDRVMgICs9IHRzdF9xcHVz aGJ1dHRvbi5jcHAKKyAKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRz L3dpZGdldHMvcXB1c2hidXR0b24vdHN0X3FwdXNoYnV0dG9uLmNwcCBiL3F0YmFzZS90ZXN0cy9h dXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1c2hidXR0b24uY3BwCitpbmRl eCBlODE4NTE0YTc5Li40MDQzZTkzMjZhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAKKysrKyBiL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1c2hidXR0 b24uY3BwCitAQCAtNDEsNiArNDEsOSBAQAorICNpbmNsdWRlIDxRU3R5bGVGYWN0b3J5PgorICNp bmNsdWRlIDxRVGFiV2lkZ2V0PgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlv bl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorKworIGNsYXNzIHRzdF9R UHVzaEJ1dHRvbiA6IHB1YmxpYyBRT2JqZWN0CisgeworIFFfT0JKRUNUCitAQCAtMjEyLDYgKzIx NSwxMyBAQCB2b2lkIHRzdF9RUHVzaEJ1dHRvbjo6YXV0b1JlcGVhdCgpCisgICAgIC8vIGNoZWNr IHRoYXQgcHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVjdAorICAgICByZXNldENvdW50ZXJzKCk7 CisgICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7CisrICAgIC8vIFNraXAgYWZ0ZXIg cmVzZXQgaWYgQnV0dG9uUHJlc3NLZXlzIGhhcyBLZXlfRW50ZXIKKysgICAgY29uc3QgYXV0byBi dXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQ bGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0 b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgIHJldHVybjsK KysgICAgfQorICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCBmYWxzZSApOworICAgICBR VGVzdDo6a2V5UHJlc3MoIHRlc3RXaWRnZXQsIFF0OjpLZXlfRW50ZXIgKTsKKyAKK0BAIC0yNDcs NiArMjU3LDE0IEBAIHZvaWQgdHN0X1FQdXNoQnV0dG9uOjpwcmVzc2VkKCkKKyAgICAgUUNPTVBB UkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFDT01QQVJFKCByZWxlYXNlX2NvdW50 LCAodWludCkxICk7CisgCisrICAgIC8vIFNraXAgaWYgQnV0dG9uUHJlc3NLZXlzIGhhcyBLZXlf RW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Q cml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6 OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRl cikpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworICAgICBRVGVzdDo6a2V5UHJlc3Mo IHRlc3RXaWRnZXQsUXQ6OktleV9FbnRlciApOworICAgICBRQ09NUEFSRSggcHJlc3NfY291bnQs ICh1aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291bnQsICh1aW50KTEgKTsKK2Rp ZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvbWFudWFsL3JoaS9jdWJlbWFwX3JlbmRlci9idWlsZHNo YWRlci5iYXQgYi9xdGJhc2UvdGVzdHMvbWFudWFsL3JoaS9jdWJlbWFwX3JlbmRlci9idWlsZHNo YWRlci5iYXQKK29sZCBtb2RlIDEwMDc1NQorbmV3IG1vZGUgMTAwNjQ0CitTdWJtb2R1bGUgcXRj b25uZWN0aXZpdHkgZTk1N2Q0ODEuLjA1NjI5NGMwOgorZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2 aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAgYi9xdGNvbm5lY3Rpdml0eS9z cmMvYmx1ZXRvb3RoL2JsdWV6L2hjaW1hbmFnZXIuY3BwCitpbmRleCBlMjYzNWZhZS4uYThiOGUz YjkgMTAwNjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hjaW1h bmFnZXIuY3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hjaW1h bmFnZXIuY3BwCitAQCAtNTYzLDkgKzU2MywxMSBAQCB2b2lkIEhjaU1hbmFnZXI6OmhhbmRsZUhj aUFjbFBhY2tldChjb25zdCBxdWludDggKmRhdGEsIGludCBzaXplKQorIAorIHZvaWQgSGNpTWFu YWdlcjo6aGFuZGxlTGVNZXRhRXZlbnQoY29uc3QgcXVpbnQ4ICpkYXRhKQorIHsKKy0gICAgLy8g U3BlYyB2NC4yLCBWb2wgMiwgcGFydCBFLCA3LjcuNjVmZgorKyAgICAvLyBTcGVjIHY1LjMsIFZv bCA0LCBwYXJ0IEUsIDcuNy42NS4qCisgICAgIHN3aXRjaCAoKmRhdGEpIHsKKy0gICAgY2FzZSAw eDE6IHsKKysgICAgY2FzZSAweDE6IC8vIEhDSV9MRV9Db25uZWN0aW9uX0NvbXBsZXRlCisrICAg IGNhc2UgMHhBOiAvLyBIQ0lfTEVfRW5oYW5jZWRfQ29ubmVjdGlvbl9Db21wbGV0ZQorKyAgICB7 CisgICAgICAgICBjb25zdCBxdWludDE2IGhhbmRsZSA9IGJ0X2dldF9sZTE2KGRhdGEgKyAyKTsK KyAgICAgICAgIGVtaXQgY29ubmVjdGlvbkNvbXBsZXRlKGhhbmRsZSk7CisgICAgICAgICBicmVh azsKK2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhz ZXJ2aWNlZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0 b290aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNwcAoraW5kZXggNmE5 MzE0M2IuLjRhMThjZmM3IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290 aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNwcAorKysrIGIvcXRjb25u ZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2Js dWV6LmNwcAorQEAgLTMyMCw3ICszMjAsMTAgQEAgdm9pZCBRQmx1ZXRvb3RoU2VydmljZURpc2Nv dmVyeUFnZW50UHJpdmF0ZTo6X3FfZmluaXNoU2RwU2NhbihRQmx1ZXRvb3RoU2VydmljZUQKKyAg ICAgICAgICAgICBmb3IgKGNvbnN0IFFCbHVldG9vdGhVdWlkICZpZCA6IHNlcnZpY2VDbGFzc1V1 aWRzKSB7CisgICAgICAgICAgICAgICAgIGlmIChpZC5taW5pbXVtU2l6ZSgpID09IDE2KSB7Cisg ICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlSW5mby5zZXRTZXJ2aWNlVXVpZChpZCk7CistICAg ICAgICAgICAgICAgICAgICBzZXJ2aWNlSW5mby5zZXRTZXJ2aWNlTmFtZShRQmx1ZXRvb3RoU2Vy dmljZURpc2NvdmVyeUFnZW50Ojp0cigiQ3VzdG9tIFNlcnZpY2UiKSk7CisrICAgICAgICAgICAg ICAgICAgICBpZiAoc2VydmljZUluZm8uc2VydmljZU5hbWUoKS5pc0VtcHR5KCkpIHsKKysgICAg ICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlSW5mby5zZXRTZXJ2aWNlTmFtZSgKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRQmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFn ZW50Ojp0cigiQ3VzdG9tIFNlcnZpY2UiKSk7CisrICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgICBRQmx1ZXRvb3RoU2VydmljZUluZm86OlNlcXVlbmNlIG1vZFNlcSA9 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJbmZvLmF0dHJpYnV0ZShRQmx1 ZXRvb3RoU2VydmljZUluZm86OlNlcnZpY2VDbGFzc0lkcykudmFsdWU8UUJsdWV0b290aFNlcnZp Y2VJbmZvOjpTZXF1ZW5jZT4oKTsKKyAgICAgICAgICAgICAgICAgICAgIG1vZFNlcS5yZW1vdmVP bmUoUVZhcmlhbnQ6OmZyb21WYWx1ZShpZCkpOworQEAgLTMzNCw4ICszMzcsMTAgQEAgdm9pZCBR Qmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFnZW50UHJpdmF0ZTo6X3FfZmluaXNoU2RwU2NhbihR Qmx1ZXRvb3RoU2VydmljZUQKKyAgICAgICAgICAgICAgICAgcUNEZWJ1ZyhRVF9CVF9CTFVFWikg PDwgIkRpc2NvdmVyZWQgc2VydmljZXMiIDw8IGRpc2NvdmVyZWREZXZpY2VzLmF0KDApLmFkZHJl c3MoKS50b1N0cmluZygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8 IHNlcnZpY2VJbmZvLnNlcnZpY2VOYW1lKCkgPDwgc2VydmljZUluZm8uc2VydmljZVV1aWQoKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiPj4+IiA8PCBzZXJ2aWNl SW5mby5zZXJ2aWNlQ2xhc3NVdWlkcygpOworLQorLSAgICAgICAgICAgICAgICBlbWl0IHEtPnNl cnZpY2VEaXNjb3ZlcmVkKHNlcnZpY2VJbmZvKTsKKysgICAgICAgICAgICAgICAgLy8gVXNlIHF1 ZXVlZCBjb25uZWN0aW9uIHRvIGFsbG93IHVzIGZpbmlzaCB0aGUgc2VydmljZSBsb29waW5nOyB0 aGUgYXBwbGljYXRpb24KKysgICAgICAgICAgICAgICAgLy8gbWlnaHQgY2FsbCBzdG9wKCkgd2hl biBpdCBoYXMgZGV0ZWN0ZWQgdGhlIHNlcnZpY2Utb2YtaW50ZXJlc3QuCisrICAgICAgICAgICAg ICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QocSwgInNlcnZpY2VEaXNjb3ZlcmVkIiwgUXQ6 OlF1ZXVlZENvbm5lY3Rpb24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUV9BUkcoUUJsdWV0b290aFNlcnZpY2VJbmZvLCBzZXJ2aWNlSW5mbykpOworICAgICAg ICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2aXR5 L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5jcHAgYi9xdGNvbm5lY3Rpdml0eS9zcmMv Ymx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXQuY3BwCitpbmRleCBlNGQ4NTQ0Ny4uYWFkZDQ3NTUg MTAwNjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2Nr ZXQuY3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2Nr ZXQuY3BwCitAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgUUJsdWV0b290aFNvY2tldDo6c2V0U29j a2V0U3RhdGUoUUJsdWV0b290aFNvY2tldDo6U29ja2V0U3RhdGUgc3RhdGUpCisgYm9vbCBRQmx1 ZXRvb3RoU29ja2V0OjpjYW5SZWFkTGluZSgpIGNvbnN0CisgeworICAgICBRX0QoY29uc3QgUUJs dWV0b290aFNvY2tldEJhc2UpOworLSAgICByZXR1cm4gZC0+Y2FuUmVhZExpbmUoKTsKKysgICAg cmV0dXJuIGQtPmNhblJlYWRMaW5lKCkgfHwgUUlPRGV2aWNlOjpjYW5SZWFkTGluZSgpOworIH0K KyAKKyAvKiEKK2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVl dG9vdGhzb2NrZXRfYmx1ZXpkYnVzLmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgv cWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3BwCitpbmRleCAwODRhYTk1OC4uZDZhYTE3YTcg MTAwNjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2Nr ZXRfYmx1ZXpkYnVzLmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1 ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAKK0BAIC0yODQsNiArMjg0LDEwIEBAIHZvaWQgUUJs dWV0b290aFNvY2tldFByaXZhdGVCbHVlekRCdXM6OmNvbm5lY3RUb1NlcnZpY2UoCisgICAgICAg ICByZXR1cm47CisgICAgIH0KKyAKKysgICAgaWYgKHNlcnZpY2Uuc29ja2V0UHJvdG9jb2woKSAh PSBRQmx1ZXRvb3RoU2VydmljZUluZm86OlByb3RvY29sOjpVbmtub3duUHJvdG9jb2wpCisrICAg ICAgICBzb2NrZXRUeXBlID0gc2VydmljZS5zb2NrZXRQcm90b2NvbCgpOworKyAgICBxQ0RlYnVn KFFUX0JUX0JMVUVaKSA8PCAiU29ja2V0IHByb3RvY29sIHVzZWQ6IiA8PCBzb2NrZXRUeXBlOwor KworICAgICBjb25uZWN0VG9TZXJ2aWNlKHNlcnZpY2UuZGV2aWNlKCkuYWRkcmVzcygpLCB0YXJn ZXRTZXJ2aWNlLCBvcGVuTW9kZSk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2aXR5 L3Rlc3RzL2F1dG8vcWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAgYi9x dGNvbm5lY3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0X3FibHVldG9vdGhz b2NrZXQuY3BwCitpbmRleCAwNWJjMWEwZi4uYTdiNWVmMWYgMTAwNjQ0CistLS0gYS9xdGNvbm5l Y3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0X3FibHVldG9vdGhzb2NrZXQu Y3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0 X3FibHVldG9vdGhzb2NrZXQuY3BwCitAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgdHN0X1FCbHVl dG9vdGhTb2NrZXQ6OmluaXRUZXN0Q2FzZSgpCisgICAgIHFEZWJ1ZygpIDw8ICJTdGFydGluZyBk aXNjb3ZlcnkiOworIAorICAgICBzZGEtPnNldFV1aWRGaWx0ZXIoUUJsdWV0b290aFV1aWQoUVN0 cmluZyhURVNUX1NFUlZJQ0VfVVVJRCkpKTsKKy0gICAgc2RhLT5zdGFydChRQmx1ZXRvb3RoU2Vy dmljZURpc2NvdmVyeUFnZW50OjpNaW5pbWFsRGlzY292ZXJ5KTsKKysgICAgc2RhLT5zdGFydChR Qmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFnZW50OjpGdWxsRGlzY292ZXJ5KTsKKyAKKyAgICAg Zm9yIChpbnQgY29ubmVjdFRpbWUgPSBNYXhDb25uZWN0VGltZTsgIWRvbmVfZGlzY292ZXJ5ICYm IGNvbm5lY3RUaW1lID4gMDsgY29ubmVjdFRpbWUgLT0gMTAwMCkKKyAgICAgICAgIFFUZXN0Ojpx V2FpdCgxMDAwKTsKK1N1Ym1vZHVsZSBxdGRlY2xhcmF0aXZlIGY1NzAxZjBkLi44ZGVmZTdiZjoK K2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29tbW9uL3FxbWxqc2ZpeGVkcG9v bGFycmF5X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29s YXJyYXlfcC5oCitpbmRleCBiNjViOTk0ZDZjLi4xNWE4Y2Q2ODc4IDEwMDY0NAorLS0tIGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcW1sL2NvbW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmgKKysrKyBi L3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29sYXJyYXlfcC5oCitA QCAtODYsNyArODYsNyBAQCBwdWJsaWM6CisgICAgICAgICBpZiAoUVR5cGVJbmZvPFQ+Ojppc0Nv bXBsZXgpIHsKKyAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisg ICAgICAgICAgICAgICAgIG5ldyAoZGF0YSArIGkpIFQodmVjdG9yLmF0KGkpKTsKKy0gICAgICAg IH0gZWxzZSB7CisrICAgICAgICB9IGVsc2UgaWYgKGNvdW50KSB7CisgICAgICAgICAgICAgbWVt Y3B5KGRhdGEsIHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPih2ZWN0b3IuY29uc3REYXRhKCkpLCBj b3VudCAqIHNpemVvZihUKSk7CisgICAgICAgICB9CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGRl Y2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3cmFwcGVyLmNwcCBiL3F0ZGVj bGFyYXRpdmUvc3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwCitpbmRleCBl NTdjZGQ4Mjc4Li45NDYxMzU5OGFmIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1s L2pzcnVudGltZS9xdjRxb2JqZWN0d3JhcHBlci5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3Jj L3FtbC9qc3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwCitAQCAtMTE0NSw4ICsxMTQ1LDcg QEAgdm9pZCBIZWFwOjpRT2JqZWN0V3JhcHBlcjo6bWFya09iamVjdHMoSGVhcDo6QmFzZSAqdGhh dCwgUVY0OjpNYXJrU3RhY2sgKm1hcmtTdGEKKyB2b2lkIFFPYmplY3RXcmFwcGVyOjpkZXN0cm95 T2JqZWN0KGJvb2wgbGFzdENhbGwpCisgeworICAgICBIZWFwOjpRT2JqZWN0V3JhcHBlciAqaCA9 IGQoKTsKKy0gICAgaWYgKCFoLT5pbnRlcm5hbENsYXNzKQorLSAgICAgICAgcmV0dXJuOyAvLyBk ZXN0cm95T2JqZWN0IGFscmVhZHkgZ290IGNhbGxlZAorKyAgICBRX0FTU0VSVChoLT5pbnRlcm5h bENsYXNzKTsKKyAKKyAgICAgaWYgKGgtPm9iamVjdCgpKSB7CisgICAgICAgICBRUW1sRGF0YSAq ZGRhdGEgPSBRUW1sRGF0YTo6Z2V0KGgtPm9iamVjdCgpLCBmYWxzZSk7CitAQCAtMTE3Niw3ICsx MTc1LDcgQEAgdm9pZCBRT2JqZWN0V3JhcHBlcjo6ZGVzdHJveU9iamVjdChib29sIGxhc3RDYWxs KQorICAgICAgICAgfQorICAgICB9CisgCistICAgIGgtPn5EYXRhKCk7CisrICAgIGgtPmRlc3Ry b3koKTsKKyB9CisgCisgCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9y eS9xdjRtbS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcAoraW5k ZXggMDZjYWYwNGU1YS4uZGExNDlhNjdjNCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3Jj L3FtbC9tZW1vcnkvcXY0bW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5 L3F2NG1tLmNwcAorQEAgLTk4MSw3ICs5ODEsNyBAQCB2b2lkIE1lbW9yeU1hbmFnZXI6OnN3ZWVw KGJvb2wgbGFzdFN3ZWVwLCBDbGFzc0Rlc3Ryb3lTdGF0c0NhbGxiYWNrIGNsYXNzQ291bnRQdAor IAorICAgICBpZiAoTXVsdGlwbHlXcmFwcGVkUU9iamVjdE1hcCAqbXVsdGlwbHlXcmFwcGVkUU9i amVjdHMgPSBlbmdpbmUtPm1fbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMpIHsKKyAgICAgICAgIGZv ciAoTXVsdGlwbHlXcmFwcGVkUU9iamVjdE1hcDo6SXRlcmF0b3IgaXQgPSBtdWx0aXBseVdyYXBw ZWRRT2JqZWN0cy0+YmVnaW4oKTsgaXQgIT0gbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMtPmVuZCgp OykgeworLSAgICAgICAgICAgIGlmICghaXQudmFsdWUoKS5pc051bGxPclVuZGVmaW5lZCgpKQor KyAgICAgICAgICAgIGlmIChpdC52YWx1ZSgpLmlzTnVsbE9yVW5kZWZpbmVkKCkpCisgICAgICAg ICAgICAgICAgIGl0ID0gbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMtPmVyYXNlKGl0KTsKKyAgICAg ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICsraXQ7CitkaWZmIC0tZ2l0IGEvcXRkZWNs YXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcCBiL3F0ZGVjbGFyYXRp dmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKK2luZGV4IDIwNzlhOGVkMDQu LmE1NzdjYjIzNTEgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFt bGRlbGVnYXRlbW9kZWwuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFt bGRlbGVnYXRlbW9kZWwuY3BwCitAQCAtMzg5LDYgKzM4OSwxMiBAQCB2b2lkIFFRbWxEZWxlZ2F0 ZU1vZGVsUHJpdmF0ZTo6Y29ubmVjdFRvQWJzdHJhY3RJdGVtTW9kZWwoKQorICAgICAgICAgICAg ICAgICAgICAgICBxLCAgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3Ffcm93c1JlbW92ZWQoUU1v ZGVsSW5kZXgsaW50LGludCkpKTsKKyAgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJh Y3RJdGVtTW9kZWwsIFNJR05BTChyb3dzQWJvdXRUb0JlUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQs aW50KSksCisgICAgICAgICAgICAgICAgICAgICAgIHEsICBRUW1sRGVsZWdhdGVNb2RlbCwgU0xP VChfcV9yb3dzQWJvdXRUb0JlUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBx bWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKGNvbHVtbnNJ bnNlcnRlZChRTW9kZWxJbmRleCxpbnQsaW50KSksCisrICAgICAgICAgICAgICAgICAgICAgIHEs IFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2NvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRleCxp bnQsaW50KSkpOworKyAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2Rl bCwgU0lHTkFMKGNvbHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwKKysgICAgICAg ICAgICAgICAgICAgICAgcSwgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3FfY29sdW1uc1JlbW92 ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBR QWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChjb2x1bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50LGlu dCxRTW9kZWxJbmRleCxpbnQpKSwKKysgICAgICAgICAgICAgICAgICAgICAgcSwgUVFtbERlbGVn YXRlTW9kZWwsIFNMT1QoX3FfY29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVs SW5kZXgsaW50KSkpOworICAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1N b2RlbCwgU0lHTkFMKGRhdGFDaGFuZ2VkKFFNb2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8 aW50PikpLAorICAgICAgICAgICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xP VChfcV9kYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9yPGludD4pKSk7 CisgICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwo cm93c01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSksCitAQCAtNDEz LDYgKzQxOSwxMiBAQCB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsUHJpdmF0ZTo6ZGlzY29ubmVjdEZy b21BYnN0cmFjdEl0ZW1Nb2RlbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgcSwgU0xPVChf cV9yb3dzQWJvdXRUb0JlUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworICAgICBRT2Jq ZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKHJvd3NSZW1vdmVkKFFNb2RlbEluZGV4LGludCxp bnQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBxLCBTTE9UKF9xX3Jvd3NSZW1vdmVkKFFN b2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdO QUwoY29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwgcSwKKysgICAgICAgICAg ICAgICAgICAgICAgICBTTE9UKF9xX2NvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRleCxpbnQsaW50 KSkpOworKyAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGNvbHVtbnNSZW1vdmVk KFFNb2RlbEluZGV4LGludCxpbnQpKSwgcSwKKysgICAgICAgICAgICAgICAgICAgICAgICBTTE9U KF9xX2NvbHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIFFPYmplY3Q6 OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwoY29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQs UU1vZGVsSW5kZXgsaW50KSksIHEsCisrICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChfcV9j b2x1bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSk7CisgICAg IFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwoZGF0YUNoYW5nZWQoUU1vZGVsSW5kZXgs UU1vZGVsSW5kZXgsUVZlY3RvcjxpbnQ+KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgcSwg U0xPVChfcV9kYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9yPGludD4p KSk7CisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwocm93c01vdmVkKFFNb2Rl bEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSksCitAQCAtMTk3Myw2ICsxOTg1LDM4IEBA IHZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX3Jvd3NNb3ZlZCgKKyAgICAgfQorIH0KKyAKKyt2 b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9jb2x1bW5zSW5zZXJ0ZWQoY29uc3QgUU1vZGVsSW5k ZXggJnBhcmVudCwgaW50IGJlZ2luLCBpbnQgZW5kKQorK3sKKysgICAgUV9EKFFRbWxEZWxlZ2F0 ZU1vZGVsKTsKKysgICAgUV9VTlVTRUQoZW5kKTsKKysgICAgaWYgKHBhcmVudCA9PSBkLT5tX2Fk YXB0b3JNb2RlbC5yb290SW5kZXggJiYgYmVnaW4gPT0gMCkgeworKyAgICAgICAgLy8gbWFyayBh bGwgaXRlbXMgYXMgY2hhbmdlZAorKyAgICAgICAgX3FfaXRlbXNDaGFuZ2VkKDAsIGQtPm1fY291 bnQsIFFWZWN0b3I8aW50PigpKTsKKysgICAgfQorK30KKysKKyt2b2lkIFFRbWxEZWxlZ2F0ZU1v ZGVsOjpfcV9jb2x1bW5zUmVtb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQgYmVn aW4sIGludCBlbmQpCisreworKyAgICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOworKyAgICBRX1VO VVNFRChlbmQpOworKyAgICBpZiAocGFyZW50ID09IGQtPm1fYWRhcHRvck1vZGVsLnJvb3RJbmRl eCAmJiBiZWdpbiA9PSAwKSB7CisrICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBjaGFuZ2Vk CisrICAgICAgICBfcV9pdGVtc0NoYW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3RvcjxpbnQ+KCkp OworKyAgICB9CisrfQorKworK3ZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2NvbHVtbnNNb3Zl ZChjb25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQgc3RhcnQsIGludCBlbmQsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFNb2RlbEluZGV4ICZkZXN0 aW5hdGlvbiwgaW50IGNvbHVtbikKKyt7CisrICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7Cisr ICAgIFFfVU5VU0VEKGVuZCk7CisrICAgIGlmICgocGFyZW50ID09IGQtPm1fYWRhcHRvck1vZGVs LnJvb3RJbmRleCAmJiBzdGFydCA9PSAwKQorKyAgICAgICAgfHwgKGRlc3RpbmF0aW9uID09IGQt Pm1fYWRhcHRvck1vZGVsLnJvb3RJbmRleCAmJiBjb2x1bW4gPT0gMCkpIHsKKysgICAgICAgIC8v IG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5nZWQKKysgICAgICAgIF9xX2l0ZW1zQ2hhbmdlZCgwLCBk LT5tX2NvdW50LCBRVmVjdG9yPGludD4oKSk7CisrICAgIH0KKyt9CisrCisgdm9pZCBRUW1sRGVs ZWdhdGVNb2RlbDo6X3FfZGF0YUNoYW5nZWQoY29uc3QgUU1vZGVsSW5kZXggJmJlZ2luLCBjb25z dCBRTW9kZWxJbmRleCAmZW5kLCBjb25zdCBRVmVjdG9yPGludD4gJnJvbGVzKQorIHsKKyAgICAg UV9EKFFRbWxEZWxlZ2F0ZU1vZGVsKTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9x bWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9k ZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaAoraW5kZXggOGFhYjRiYWRjYS4uZDE0MGJmYmFhZiAx MDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2Rl bF9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2Rl bF9wLmgKK0BAIC0xNTIsNiArMTUyLDkgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIF9x X2l0ZW1zTW92ZWQoaW50IGZyb20sIGludCB0bywgaW50IGNvdW50KTsKKyAgICAgdm9pZCBfcV9t b2RlbFJlc2V0KCk7CisgICAgIHZvaWQgX3Ffcm93c0luc2VydGVkKGNvbnN0IFFNb2RlbEluZGV4 ICYsaW50LGludCk7CisrICAgIHZvaWQgX3FfY29sdW1uc0luc2VydGVkKGNvbnN0IFFNb2RlbElu ZGV4ICYsIGludCwgaW50KTsKKysgICAgdm9pZCBfcV9jb2x1bW5zUmVtb3ZlZChjb25zdCBRTW9k ZWxJbmRleCAmLCBpbnQsIGludCk7CisrICAgIHZvaWQgX3FfY29sdW1uc01vdmVkKGNvbnN0IFFN b2RlbEluZGV4ICYsIGludCwgaW50LCBjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQpOworICAgICB2 b2lkIF9xX3Jvd3NBYm91dFRvQmVSZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQsIGlu dCBiZWdpbiwgaW50IGVuZCk7CisgICAgIHZvaWQgX3Ffcm93c1JlbW92ZWQoY29uc3QgUU1vZGVs SW5kZXggJixpbnQsaW50KTsKKyAgICAgdm9pZCBfcV9yb3dzTW92ZWQoY29uc3QgUU1vZGVsSW5k ZXggJiwgaW50LCBpbnQsIGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCk7CitkaWZmIC0tZ2l0IGEv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5j cHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tp dGVtLmNwcAoraW5kZXggODU3MTlmZGM4MC4uNzhlMmFiMzAyYyAxMDA2NDQKKy0tLSBhL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwCisr KysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tp dGVtLmNwcAorQEAgLTQ2LDYgKzQ2LDcgQEAKKyAjaW5jbHVkZSAiUXRRdWljay9wcml2YXRlL3Fx dWlja3RleHRpbnB1dF9wLmgiCisgI2luY2x1ZGUgIlF0UXVpY2svcHJpdmF0ZS9xcXVpY2thY2Nl c3NpYmxlYXR0YWNoZWRfcC5oIgorICNpbmNsdWRlICJRdFF1aWNrL3FxdWlja3RleHRkb2N1bWVu dC5oIgorKyNpbmNsdWRlICJRdFF1aWNrL3FxdWlja3JlbmRlcmNvbnRyb2wuaCIKKyBRVF9CRUdJ Tl9OQU1FU1BBQ0UKKyAKKyAjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCitAQCAtNTcsNyAr NTgsMTkgQEAgUUFjY2Vzc2libGVRdWlja0l0ZW06OlFBY2Nlc3NpYmxlUXVpY2tJdGVtKFFRdWlj a0l0ZW0gKml0ZW0pCisgCisgUVdpbmRvdyAqUUFjY2Vzc2libGVRdWlja0l0ZW06OndpbmRvdygp IGNvbnN0CisgeworLSAgICByZXR1cm4gaXRlbSgpLT53aW5kb3coKTsKKysgICAgUVF1aWNrV2lu ZG93ICp3aW5kb3cgPSBpdGVtKCktPndpbmRvdygpOworKworKyAgICAvLyBGb3IgUVF1aWNrV2lk Z2V0IHRoZSBhYm92ZSB3aW5kb3cgd2lsbCBiZSB0aGUgb2Zmc2NyZWVuIFFRdWlja1dpbmRvdywK KysgICAgLy8gd2hpY2ggaXMgbm90IGEgcGFydCBvZiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiBE ZXRlY3QgdGhpcyBjYXNlIGFuZAorKyAgICAvLyByZXR1cm4gdGhlIHdpbmRvdyBmb3IgdGhlIFFR dWlja1dpZGdldCBpbnN0ZWFkLgorKyAgICBpZiAod2luZG93ICYmICF3aW5kb3ctPmhhbmRsZSgp KSB7CisrICAgICAgICBpZiAoUVF1aWNrUmVuZGVyQ29udHJvbCAqcmVuZGVyQ29udHJvbCA9IFFR dWlja1dpbmRvd1ByaXZhdGU6OmdldCh3aW5kb3cpLT5yZW5kZXJDb250cm9sKSB7CisrICAgICAg ICAgICAgaWYgKFFXaW5kb3cgKnJlbmRlcldpbmRvdyA9IHJlbmRlckNvbnRyb2wtPnJlbmRlcldp bmRvdyhudWxscHRyKSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcldpbmRvdzsKKysg ICAgICAgIH0KKysgICAgfQorKworKyAgICByZXR1cm4gd2luZG93OworIH0KKyAKKyBpbnQgUUFj Y2Vzc2libGVRdWlja0l0ZW06OmNoaWxkQ291bnQoKSBjb25zdAorQEAgLTExMywxOSArMTI2LDE1 IEBAIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrSXRlbTo6Y2hpbGRBdChp bnQgeCwgaW50IHkpIGNvbnN0CisgUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVp Y2tJdGVtOjpwYXJlbnQoKSBjb25zdAorIHsKKyAgICAgUVF1aWNrSXRlbSAqcGFyZW50ID0gaXRl bSgpLT5wYXJlbnRJdGVtKCk7CistICAgIFFRdWlja1dpbmRvdyAqd2luZG93ID0gaXRlbSgpLT53 aW5kb3coKTsKKy0gICAgUVF1aWNrSXRlbSAqY2kgPSB3aW5kb3cgPyB3aW5kb3ctPmNvbnRlbnRJ dGVtKCkgOiBudWxscHRyOworKyAgICBRUXVpY2tXaW5kb3cgKml0ZW1XaW5kb3cgPSBpdGVtKCkt PndpbmRvdygpOworKyAgICBRUXVpY2tJdGVtICpjaSA9IGl0ZW1XaW5kb3cgPyBpdGVtV2luZG93 LT5jb250ZW50SXRlbSgpIDogbnVsbHB0cjsKKyAgICAgd2hpbGUgKHBhcmVudCAmJiAhUVF1aWNr SXRlbVByaXZhdGU6OmdldChwYXJlbnQpLT5pc0FjY2Vzc2libGUgJiYgcGFyZW50ICE9IGNpKQor ICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRJdGVtKCk7CisgCisgICAgIGlmIChwYXJl bnQpIHsKKyAgICAgICAgIGlmIChwYXJlbnQgPT0gY2kpIHsKKy0gICAgICAgICAgICAvLyBKdW1w IG91dCB0byB0aGUgc2NlbmUgd2lkZ2V0IGlmIHRoZSBwYXJlbnQgaXMgdGhlIHJvb3QgaXRlbS4K Ky0gICAgICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHJvb3QgaXRlbXMsIFFRdWlja1dpbmRvdzo6 cm9vdEl0ZW0gYW5kCistICAgICAgICAgICAgLy8gUVF1aWNrVmlldzo6ZGVjbGFyYXRpdmVSb290 LiBUaGUgZm9ybWVyIGlzIHRoZSB0cnVlIHJvb3QgaXRlbSwKKy0gICAgICAgICAgICAvLyBidXQg aXMgbm90IGEgcGFydCBvZiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiBDaGVjayBpZiB3ZSBoaXQK Ky0gICAgICAgICAgICAvLyBpdCBoZXJlIGFuZCByZXR1cm4gYW4gaW50ZXJmYWNlIGZvciB0aGUg c2NlbmUgaW5zdGVhZC4KKy0gICAgICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OnF1ZXJ5QWNj ZXNzaWJsZUludGVyZmFjZSh3aW5kb3cpOworKyAgICAgICAgICAgIC8vIEp1bXAgb3V0IHRvIHRo ZSB3aW5kb3cgaWYgdGhlIHBhcmVudCBpcyB0aGUgcm9vdCBpdGVtCisrICAgICAgICAgICAgcmV0 dXJuIFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uod2luZG93KCkpOworICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICB3aGlsZSAocGFyZW50ICYmICFwYXJlbnQtPmRf ZnVuYygpLT5pc0FjY2Vzc2libGUpCisgICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+ cGFyZW50SXRlbSgpOworQEAgLTE4OCw3ICsxOTcsNyBAQCBRQWNjZXNzaWJsZTo6U3RhdGUgUUFj Y2Vzc2libGVRdWlja0l0ZW06OnN0YXRlKCkgY29uc3QKKyAgICAgUVJlY3Qgdmlld1JlY3RfID0g dmlld1JlY3QoKTsKKyAgICAgUVJlY3QgaXRlbVJlY3QgPSByZWN0KCk7CisgCistICAgIGlmICh2 aWV3UmVjdF8uaXNOdWxsKCkgfHwgaXRlbVJlY3QuaXNOdWxsKCkgfHwgIWl0ZW0oKS0+d2luZG93 KCkgfHwgIWl0ZW0oKS0+d2luZG93KCktPmlzVmlzaWJsZSgpIHx8IWl0ZW0oKS0+aXNWaXNpYmxl KCkgfHwgcUZ1enp5SXNOdWxsKGl0ZW0oKS0+b3BhY2l0eSgpKSkKKysgICAgaWYgKHZpZXdSZWN0 Xy5pc051bGwoKSB8fCBpdGVtUmVjdC5pc051bGwoKSB8fCAhd2luZG93KCkgfHwgIXdpbmRvdygp LT5pc1Zpc2libGUoKSB8fCFpdGVtKCktPmlzVmlzaWJsZSgpIHx8IHFGdXp6eUlzTnVsbChpdGVt KCktPm9wYWNpdHkoKSkpCisgICAgICAgICBzdGF0ZS5pbnZpc2libGUgPSB0cnVlOworICAgICBp ZiAoIXZpZXdSZWN0Xy5pbnRlcnNlY3RzKGl0ZW1SZWN0KSkKKyAgICAgICAgIHN0YXRlLm9mZnNj cmVlbiA9IHRydWU7CitAQCAtMjAxLDYgKzIxMCwxMCBAQCBRQWNjZXNzaWJsZTo6U3RhdGUgUUFj Y2Vzc2libGVRdWlja0l0ZW06OnN0YXRlKCkgY29uc3QKKyAgICAgaWYgKHJvbGUoKSA9PSBRQWNj ZXNzaWJsZTo6RWRpdGFibGVUZXh0KQorICAgICAgICAgaWYgKGF1dG8gdGkgPSBxb2JqZWN0X2Nh c3Q8UVF1aWNrVGV4dElucHV0ICo+KGl0ZW0oKSkpCisgICAgICAgICAgICAgc3RhdGUucGFzc3dv cmRFZGl0ID0gdGktPmVjaG9Nb2RlKCkgIT0gUVF1aWNrVGV4dElucHV0OjpOb3JtYWw7CisrICAg IGlmICghaXRlbSgpLT5pc0VuYWJsZWQoKSkgeworKyAgICAgICAgc3RhdGUuZm9jdXNhYmxlID0g ZmFsc2U7CisrICAgICAgICBzdGF0ZS5kaXNhYmxlZCA9IHRydWU7CisrICAgIH0KKyAgICAgcmV0 dXJuIHN0YXRlOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9h Y2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oCitpbmRleCAzOWZmY2FmMzlj Li44YmFhMDEzMzBjIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNz aWJsZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oCitAQCAtNTgsNyArNTgsNyBA QCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyAjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisg CistY2xhc3MgUUFjY2Vzc2libGVRdWlja1dpbmRvdyA6IHB1YmxpYyBRQWNjZXNzaWJsZU9iamVj dAorK2NsYXNzIFFfUVVJQ0tfRVhQT1JUIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cgOiBwdWJsaWMg UUFjY2Vzc2libGVPYmplY3QKKyB7CisgcHVibGljOgorICAgICBRQWNjZXNzaWJsZVF1aWNrV2lu ZG93KFFRdWlja1dpbmRvdyAqb2JqZWN0KTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0 ZW1zL3FxdWlja2RyYWcuY3BwCitpbmRleCA4MzIxZmNmZWVkLi4zODMwNzhiM2I5IDEwMDY0NAor LS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAKKysrKyBi L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2RyYWcuY3BwCitAQCAtNDgxLDcg KzQ4MSw5IEBAIHZvaWQgUVF1aWNrRHJhZ0F0dGFjaGVkOjpzZXRLZXlzKGNvbnN0IFFTdHJpbmdM aXN0ICZrZXlzKQorICAgICBccW1sYXR0YWNoZWRwcm9wZXJ0eSBzdHJpbmdsaXN0IFF0UXVpY2s6 OkRyYWc6Om1pbWVEYXRhCisgICAgIFxzaW5jZSA1LjIKKyAKKy0gICAgVGhpcyBwcm9wZXJ0eSBo b2xkcyBhIG1hcCBvZiBtaW1lRGF0YSB0aGF0IGlzIHVzZWQgZHVyaW5nIHN0YXJ0RHJhZy4KKysg ICAgVGhpcyBwcm9wZXJ0eSBob2xkcyBhIG1hcCBmcm9tIG1pbWUgdHlwZSB0byBkYXRhIHRoYXQg aXMgdXNlZCBkdXJpbmcgc3RhcnREcmFnLgorKyAgICBUaGUgbWltZSBkYXRhIG5lZWRzIHRvIGJl IGEgXGMgc3RyaW5nLCBvciBhbiBcYyBBcnJheUJ1ZmZlciB3aXRoIHRoZSBkYXRhIGVuY29kZWQK KysgICAgYWNjb3JkaW5nIHRvIHRoZSBtaW1lIHR5cGUuCisgKi8KKyAKKyBRVmFyaWFudE1hcCBR UXVpY2tEcmFnQXR0YWNoZWQ6Om1pbWVEYXRhKCkgY29uc3QKK0BAIC03NjYsOCArNzY4LDEyIEBA IFF0OjpEcm9wQWN0aW9uIFFRdWlja0RyYWdBdHRhY2hlZFByaXZhdGU6OnN0YXJ0RHJhZyhRdDo6 RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0CisgICAgIFFEcmFnICpkcmFnID0gbmV3IFFEcmFnKHNv dXJjZSA/IHNvdXJjZSA6IHEpOworICAgICBRTWltZURhdGEgKm1pbWVEYXRhID0gbmV3IFFNaW1l RGF0YSgpOworIAorLSAgICBmb3IgKGF1dG8gaXQgPSBleHRlcm5hbE1pbWVEYXRhLmNiZWdpbigp LCBlbmQgPSBleHRlcm5hbE1pbWVEYXRhLmNlbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorLSAgICAg ICAgbWltZURhdGEtPnNldERhdGEoaXQua2V5KCksIGl0LnZhbHVlKCkudG9TdHJpbmcoKS50b1V0 ZjgoKSk7CisrICAgIGZvciAoYXV0byBpdCA9IGV4dGVybmFsTWltZURhdGEuY2JlZ2luKCksIGVu ZCA9IGV4dGVybmFsTWltZURhdGEuY2VuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKysgICAgICAg IGlmIChzdGF0aWNfY2FzdDxRTWV0YVR5cGU6OlR5cGU+KGl0LnZhbHVlKCkudHlwZSgpKSA9PSBR TWV0YVR5cGU6OlFCeXRlQXJyYXkpCisrICAgICAgICAgICAgbWltZURhdGEtPnNldERhdGEoaXQu a2V5KCksIGl0LnZhbHVlKCkudG9CeXRlQXJyYXkoKSk7CisrICAgICAgICBlbHNlCisrICAgICAg ICAgICAgbWltZURhdGEtPnNldERhdGEoaXQua2V5KCksIGl0LnZhbHVlKCkudG9TdHJpbmcoKS50 b1V0ZjgoKSk7CisrICAgIH0KKyAKKyAgICAgZHJhZy0+c2V0TWltZURhdGEobWltZURhdGEpOwor ICAgICBpZiAocGl4bWFwTG9hZGVyLmlzUmVhZHkoKSkgeworZGlmZiAtLWdpdCBhL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2svaXRlbXMvcXF1aWNraXRlbS5jcHAKK2luZGV4IDc1ZjE0NTc4MTYuLmRlYzBhZTE5YWUg MTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtLmNw cAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbS5jcHAKK0BA IC01OSw2ICs1OSw3IEBACisgI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3FudW1lcmljX3AuaD4K KyAjaW5jbHVkZSA8UXRHdWkvcXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisgI2luY2x1ZGUgPFF0Q29y ZS9xbG9nZ2luZ2NhdGVnb3J5Lmg+CisrI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3FkdXBsaWNh dGV0cmFja2VyX3AuaD4KKyAKKyAjaW5jbHVkZSA8cHJpdmF0ZS9xcW1sZ2xvYmFsX3AuaD4KKyAj aW5jbHVkZSA8cHJpdmF0ZS9xcW1sZW5naW5lX3AuaD4KK0BAIC0yMzI2LDYgKzIzMjcsNyBAQCBR UXVpY2tJdGVtOjpRUXVpY2tJdGVtKFFRdWlja0l0ZW1Qcml2YXRlICZkZCwgUVF1aWNrSXRlbSAq cGFyZW50KQorIFFRdWlja0l0ZW06On5RUXVpY2tJdGVtKCkKKyB7CisgICAgIFFfRChRUXVpY2tJ dGVtKTsKKysgICAgZC0+aW5EZXN0cnVjdG9yID0gdHJ1ZTsKKyAKKyAgICAgaWYgKGQtPndpbmRv d1JlZkNvdW50ID4gMSkKKyAgICAgICAgIGQtPndpbmRvd1JlZkNvdW50ID0gMTsgLy8gTWFrZSBz dXJlIHdpbmRvdyBpcyBzZXQgdG8gbnVsbCBpbiBuZXh0IGNhbGwgdG8gZGVyZWZXaW5kb3coKS4K K0BAIC0yNTI2LDYgKzI1MjgsNyBAQCBRUXVpY2tJdGVtKiBRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4 dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluKFFRdWlja0l0ZW0gKml0ZW0sIGJvbworICAgICBRUXVp Y2tJdGVtICpjdXJyZW50ID0gaXRlbTsKKyAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVp Y2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluOiBzdGFydEl0ZW06IiA8 PCBzdGFydEl0ZW07CisgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZh dGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogZmlyc3RGcm9tSXRlbToiIDw8IGZpcnN0 RnJvbUl0ZW07CisrICAgIFFEdXBsaWNhdGVUcmFja2VyPFFRdWlja0l0ZW0gKj4gY3ljbGVEZXRl Y3RvcjsKKyAgICAgZG8geworICAgICAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJ dGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluOiBjdXJyZW50OiIgPDwgY3Vy cmVudDsKKyAgICAgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6 Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogZnJvbToiIDw8IGZyb207CitAQCAtMjU5Miw3 ICsyNTk1LDEwIEBAIFFRdWlja0l0ZW0qIFFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1J blRhYkZvY3VzQ2hhaW4oUVF1aWNrSXRlbSAqaXRlbSwgYm9vCisgICAgICAgICAvLyB0cmF2ZXJz ZWQgYWxsIG9mIHRoZSBjaGFpbiAoYnkgY29tcGFyZSB0aGUgW2N1cnJlbnRdIGl0ZW0gd2l0aCBb c3RhcnRJdGVtXSkKKyAgICAgICAgIC8vIFNpbmNlIHRoZSBbc3RhcnRJdGVtXSBtaWdodCBiZSBw cm9tb3RlZCB0byBpdHMgcGFyZW50IGlmIGl0IGlzIGludmlzaWJsZSwKKyAgICAgICAgIC8vIHdl IHN0aWxsIGhhdmUgdG8gY2hlY2sgW2N1cnJlbnRdIGl0ZW0gd2l0aCBvcmlnaW5hbCBzdGFydCBp dGVtCistICAgICAgICBpZiAoKGN1cnJlbnQgPT0gc3RhcnRJdGVtIHx8IGN1cnJlbnQgPT0gb3Jp Z2luYWxTdGFydEl0ZW0pICYmIGZyb20gPT0gZmlyc3RGcm9tSXRlbSkgeworKyAgICAgICAgLy8g V2UgbWlnaHQgYWxzbyBydW4gaW50byBhIGN5Y2xlIGJlZm9yZSB3ZSByZWFjaCBmaXJzdEZyb21J dGVtIGFnYWluCisrICAgICAgICAvLyBidXQgbm90ZSB0aGF0IHdlIGhhdmUgdG8gaWdub3JlIGN1 cnJlbnQgaWYgd2UgYXJlIG1lYW50IHRvIHNraXAgaXQKKysgICAgICAgIGlmICgoKGN1cnJlbnQg PT0gc3RhcnRJdGVtIHx8IGN1cnJlbnQgPT0gb3JpZ2luYWxTdGFydEl0ZW0pICYmIGZyb20gPT0g Zmlyc3RGcm9tSXRlbSkgfHwKKysgICAgICAgICAgICAgICAgKCFza2lwICYmIGN5Y2xlRGV0ZWN0 b3IuaGFzU2VlbihjdXJyZW50KSkpIHsKKyAgICAgICAgICAgICAvLyB3cmFwcGVkIGFyb3VuZCwg YXZvaWQgZW5kbGVzcyBsb29wcworICAgICAgICAgICAgIGlmIChpdGVtID09IGNvbnRlbnRJdGVt KSB7CisgICAgICAgICAgICAgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVBy aXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogbG9vcGVkLCByZXR1cm4gY29udGVu dEl0ZW0iOworQEAgLTI2ODksOSArMjY5NSw4IEBAIHZvaWQgUVF1aWNrSXRlbTo6c2V0UGFyZW50 SXRlbShRUXVpY2tJdGVtICpwYXJlbnRJdGVtKQorIAorICAgICAgICAgY29uc3QgYm9vbCB3YXNW aXNpYmxlID0gaXNWaXNpYmxlKCk7CisgICAgICAgICBvcC0+cmVtb3ZlQ2hpbGQodGhpcyk7Cist ICAgICAgICBpZiAod2FzVmlzaWJsZSkgeworKyAgICAgICAgaWYgKHdhc1Zpc2libGUgJiYgIW9w LT5pbkRlc3RydWN0b3IpCisgICAgICAgICAgICAgZW1pdCBvbGRQYXJlbnRJdGVtLT52aXNpYmxl Q2hpbGRyZW5DaGFuZ2VkKCk7CistICAgICAgICB9CisgICAgIH0gZWxzZSBpZiAoZC0+d2luZG93 KSB7CisgICAgICAgICBRUXVpY2tXaW5kb3dQcml2YXRlOjpnZXQoZC0+d2luZG93KS0+cGFyZW50 bGVzc0l0ZW1zLnJlbW92ZSh0aGlzKTsKKyAgICAgfQorQEAgLTI3NjgsOCArMjc3Myw5IEBAIHZv aWQgUVF1aWNrSXRlbTo6c2V0UGFyZW50SXRlbShRUXVpY2tJdGVtICpwYXJlbnRJdGVtKQorIAor ICAgICBkLT5pdGVtQ2hhbmdlKEl0ZW1QYXJlbnRIYXNDaGFuZ2VkLCBkLT5wYXJlbnRJdGVtKTsK KyAKKy0gICAgZW1pdCBwYXJlbnRDaGFuZ2VkKGQtPnBhcmVudEl0ZW0pOworLSAgICBpZiAoaXNW aXNpYmxlKCkgJiYgZC0+cGFyZW50SXRlbSkKKysgICAgaWYgKCFkLT5pbkRlc3RydWN0b3IpCisr ICAgICAgICBlbWl0IHBhcmVudENoYW5nZWQoZC0+cGFyZW50SXRlbSk7CisrICAgIGlmIChpc1Zp c2libGUoKSAmJiBkLT5wYXJlbnRJdGVtICYmICFRUXVpY2tJdGVtUHJpdmF0ZTo6Z2V0KGQtPnBh cmVudEl0ZW0pLT5pbkRlc3RydWN0b3IpCisgICAgICAgICBlbWl0IGQtPnBhcmVudEl0ZW0tPnZp c2libGVDaGlsZHJlbkNoYW5nZWQoKTsKKyB9CisgCitAQCAtMjk2NSw3ICsyOTcxLDggQEAgdm9p ZCBRUXVpY2tJdGVtUHJpdmF0ZTo6cmVtb3ZlQ2hpbGQoUVF1aWNrSXRlbSAqY2hpbGQpCisgCisg ICAgIGl0ZW1DaGFuZ2UoUVF1aWNrSXRlbTo6SXRlbUNoaWxkUmVtb3ZlZENoYW5nZSwgY2hpbGQp OworIAorLSAgICBlbWl0IHEtPmNoaWxkcmVuQ2hhbmdlZCgpOworKyAgICBpZiAoIWluRGVzdHJ1 Y3RvcikKKysgICAgICAgIGVtaXQgcS0+Y2hpbGRyZW5DaGFuZ2VkKCk7CisgfQorIAorIHZvaWQg UVF1aWNrSXRlbVByaXZhdGU6OnJlZldpbmRvdyhRUXVpY2tXaW5kb3cgKmMpCitAQCAtMzE5NCw2 ICszMjAxLDcgQEAgUVF1aWNrSXRlbVByaXZhdGU6OlFRdWlja0l0ZW1Qcml2YXRlKCkKKyAgICAg LCB0b3VjaEVuYWJsZWQoZmFsc2UpCisgI2VuZGlmCisgICAgICwgaGFzQ3Vyc29ySGFuZGxlcihm YWxzZSkKKysgICAgLCBpbkRlc3RydWN0b3IoZmFsc2UpCisgICAgICwgZGlydHlBdHRyaWJ1dGVz KDApCisgICAgICwgbmV4dERpcnR5SXRlbShudWxscHRyKQorICAgICAsIHByZXZEaXJ0eUl0ZW0o bnVsbHB0cikKK0BAIC01MTIwLDYgKzUxMjgsMTMgQEAgdm9pZCBRUXVpY2tJdGVtOjpjb21wb25l bnRDb21wbGV0ZSgpCisgICAgICAgICBkLT5hZGRUb0RpcnR5TGlzdCgpOworICAgICAgICAgUVF1 aWNrV2luZG93UHJpdmF0ZTo6Z2V0KGQtPndpbmRvdyktPmRpcnR5SXRlbSh0aGlzKTsKKyAgICAg fQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgaWYgKGQtPmlzQWNjZXNz aWJsZSAmJiBkLT5lZmZlY3RpdmVWaXNpYmxlKSB7CisrICAgICAgICBRQWNjZXNzaWJsZUV2ZW50 IGV2KHRoaXMsIFFBY2Nlc3NpYmxlOjpPYmplY3RTaG93KTsKKysgICAgICAgIFFBY2Nlc3NpYmxl Ojp1cGRhdGVBY2Nlc3NpYmlsaXR5KCZldik7CisrICAgIH0KKysjZW5kaWYKKyB9CisgCisgUVF1 aWNrU3RhdGVHcm91cCAqUVF1aWNrSXRlbVByaXZhdGU6Ol9zdGF0ZXMoKQorQEAgLTYxMDYsOSAr NjEyMSwxMSBAQCBib29sIFFRdWlja0l0ZW1Qcml2YXRlOjpzZXRFZmZlY3RpdmVWaXNpYmxlUmVj dXIoYm9vbCBuZXdFZmZlY3RpdmVWaXNpYmxlKQorICAgICAgICAgUUFjY2Vzc2libGU6OnVwZGF0 ZUFjY2Vzc2liaWxpdHkoJmV2KTsKKyAgICAgfQorICNlbmRpZgorLSAgICBlbWl0IHEtPnZpc2li bGVDaGFuZ2VkKCk7CistICAgIGlmIChjaGlsZFZpc2liaWxpdHlDaGFuZ2VkKQorLSAgICAgICAg ZW1pdCBxLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisrICAgIGlmICghaW5EZXN0cnVjdG9y KSB7CisrICAgICAgICBlbWl0IHEtPnZpc2libGVDaGFuZ2VkKCk7CisrICAgICAgICBpZiAoY2hp bGRWaXNpYmlsaXR5Q2hhbmdlZCkKKysgICAgICAgICAgICBlbWl0IHEtPnZpc2libGVDaGlsZHJl bkNoYW5nZWQoKTsKKysgICAgfQorIAorICAgICByZXR1cm4gdHJ1ZTsgICAgLy8gZWZmZWN0aXZl IHZpc2liaWxpdHkgRElEIGNoYW5nZQorIH0KK0BAIC02MTU3LDYgKzYxNzQsMTUgQEAgdm9pZCBR UXVpY2tJdGVtUHJpdmF0ZTo6c2V0RWZmZWN0aXZlRW5hYmxlUmVjdXIoUVF1aWNrSXRlbSAqc2Nv cGUsIGJvb2wgbmV3RWZmZWMKKyAgICAgfQorIAorICAgICBpdGVtQ2hhbmdlKFFRdWlja0l0ZW06 Okl0ZW1FbmFibGVkSGFzQ2hhbmdlZCwgZWZmZWN0aXZlRW5hYmxlKTsKKysjaWYgUVRfQ09ORklH KGFjY2Vzc2liaWxpdHkpCisrICAgIGlmIChpc0FjY2Vzc2libGUpIHsKKysgICAgICAgIFFBY2Nl c3NpYmxlOjpTdGF0ZSBjaGFuZ2VkU3RhdGU7CisrICAgICAgICBjaGFuZ2VkU3RhdGUuZGlzYWJs ZWQgPSB0cnVlOworKyAgICAgICAgY2hhbmdlZFN0YXRlLmZvY3VzYWJsZSA9IHRydWU7CisrICAg ICAgICBRQWNjZXNzaWJsZVN0YXRlQ2hhbmdlRXZlbnQgZXYocSwgY2hhbmdlZFN0YXRlKTsKKysg ICAgICAgIFFBY2Nlc3NpYmxlOjp1cGRhdGVBY2Nlc3NpYmlsaXR5KCZldik7CisrICAgIH0KKysj ZW5kaWYKKyAgICAgZW1pdCBxLT5lbmFibGVkQ2hhbmdlZCgpOworIH0KKyAKK2RpZmYgLS1naXQg YS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaCBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5oCitpbmRleCA4NDFkOTFiYjQwLi5h ZGU4ZmI2MWYyIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1 aWNraXRlbV9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0 ZW1fcC5oCitAQCAtNDcyLDYgKzQ3Miw3IEBAIHB1YmxpYzoKKyAgICAgYm9vbCByZXBsYXlpbmdQ cmVzc0V2ZW50OjE7CisgICAgIGJvb2wgdG91Y2hFbmFibGVkOjE7CisgICAgIGJvb2wgaGFzQ3Vy c29ySGFuZGxlcjoxOworKyAgICBxdWludDMyIGluRGVzdHJ1Y3RvcjoxOyAvLyBoYXMgZW50ZXJl ZCB+UVF1aWNrSXRlbQorIAorICAgICBlbnVtIERpcnR5VHlwZSB7CisgICAgICAgICBUcmFuc2Zv cm1PcmlnaW4gICAgICAgICA9IDB4MDAwMDAwMDEsCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2svaXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwCitpbmRleCAwMTBhMDE1MmUxLi5mOGFkMTY4 YTE3IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRl bXZpZXcuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVt dmlldy5jcHAKK0BAIC0xNzg1LDcgKzE3ODUsNyBAQCB2b2lkIFFRdWlja0l0ZW1WaWV3UHJpdmF0 ZTo6cmVmaWxsKHFyZWFsIGZyb20sIHFyZWFsIHRvKQorIAorICAgICBkbyB7CisgICAgICAgICBi dWZmZXJQYXVzZS5zdG9wKCk7CistICAgICAgICBpZiAoY3VycmVudENoYW5nZXMuaGFzUGVuZGlu Z0NoYW5nZXMoKSB8fCBidWZmZXJlZENoYW5nZXMuaGFzUGVuZGluZ0NoYW5nZXMoKSkgeworKyAg ICAgICAgaWYgKGN1cnJlbnRDaGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkgfHwgYnVmZmVyZWRD aGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkgfHwgY3VycmVudENoYW5nZXMuYWN0aXZlKSB7Cisg ICAgICAgICAgICAgY3VycmVudENoYW5nZXMucmVzZXQoKTsKKyAgICAgICAgICAgICBidWZmZXJl ZENoYW5nZXMucmVzZXQoKTsKKyAgICAgICAgICAgICByZWxlYXNlVmlzaWJsZUl0ZW1zKHJldXNh YmxlRmxhZyk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1 aWNrbW91c2VhcmVhX3BfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNr bW91c2VhcmVhX3BfcC5oCitpbmRleCBmYmEzODNlMjY4Li4wZDYzNjE4NjIyIDEwMDY0NAorLS0t IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrbW91c2VhcmVhX3BfcC5oCisr KysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmgK K0BAIC02MSw3ICs2MSw2IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFRdWlja01v dXNlRXZlbnQ7CisgY2xhc3MgUVF1aWNrTW91c2VBcmVhOworLWNsYXNzIFFRdWlja1BvaW50ZXJN YXNrOworIGNsYXNzIFFRdWlja01vdXNlQXJlYVByaXZhdGUgOiBwdWJsaWMgUVF1aWNrSXRlbVBy aXZhdGUKKyB7CisgICAgIFFfREVDTEFSRV9QVUJMSUMoUVF1aWNrTW91c2VBcmVhKQorQEAgLTEw MCw3ICs5OSw2IEBAIHB1YmxpYzoKKyAjaWYgUVRfQ09ORklHKHF1aWNrX2RyYWdhbmRkcm9wKQor ICAgICBRUXVpY2tEcmFnICpkcmFnOworICNlbmRpZgorLSAgICBRUG9pbnRlcjxRUXVpY2tQb2lu dGVyTWFzaz4gbWFzazsKKyAgICAgUVBvaW50RiBzdGFydFNjZW5lOworICAgICBRUG9pbnRGIHRh cmdldFN0YXJ0UG9zOworICAgICBRUG9pbnRGIGxhc3RQb3M7CitkaWZmIC0tZ2l0IGEvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAgYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay9pdGVtcy9xcXVpY2t0ZXh0LmNwcAoraW5kZXggNjIzMDE4NjkzMy4uZTgyM2NhMTA5 NSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja3RleHQu Y3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2t0ZXh0LmNwcAor QEAgLTIxNjgsNyArMjE2OCw3IEBAIHZvaWQgUVF1aWNrVGV4dDo6cmVzZXRNYXhpbXVtTGluZUNv dW50KCkKKyAgICAgPGltZyBzcmM9IiIgYWxpZ249InRvcCxtaWRkbGUsYm90dG9tIiB3aWR0aD0i IiBoZWlnaHQ9IiI+IC0gaW5saW5lIGltYWdlcworICAgICA8b2wgdHlwZT0iIj4sIDx1bCB0eXBl PSIiPiBhbmQgPGxpPiAtIG9yZGVyZWQgYW5kIHVub3JkZXJlZCBsaXN0cworICAgICA8cHJlPjwv cHJlPiAtIHByZWZvcm1hdHRlZAorLSAgICAmZ3Q7ICZsdDsgJmFtcDsKKysgICAgJmd0OyAmbHQ7 ICZhbXA7ICZxdW90OyAmbmJzcDsgJmFwb3M7CisgICAgIFxlbmRjb2RlCisgCisgICAgIFxjIFRl eHQuU3R5bGVkVGV4dCBwYXJzZXIgaXMgc3RyaWN0LCByZXF1aXJpbmcgdGFncyB0byBiZSBjb3Jy ZWN0bHkgbmVzdGVkLgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5l Z3JhcGgvcXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxkZ2x5cGhjYWNoZS5jcHAKK2lu ZGV4IGViNGRiMGY4NWUuLjIzMjVhMjY2NWIgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcAorKysr IGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxk Z2x5cGhjYWNoZS5jcHAKK0BAIC00NDYsNyArNDQ2LDcgQEAgYm9vbCBRU0dSaGlEaXN0YW5jZUZp ZWxkR2x5cGhDYWNoZTo6bG9hZFByZWdlbmVyYXRlZENhY2hlKGNvbnN0IFFSYXdGb250ICZmb250 KQorIAorICAgICAgICAgY29uc3QgY2hhciAqdGV4dHVyZVJlY29yZCA9IGFsbG9jYXRvckRhdGE7 CisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRleHR1cmVDb3VudDsgKytpLCB0ZXh0dXJl UmVjb3JkICs9IFF0ZGY6OlRleHR1cmVSZWNvcmRTaXplKSB7CistICAgICAgICAgICAgaWYgKHRl eHR1cmVSZWNvcmQgKyBRdGRmOjpUZXh0dXJlUmVjb3JkU2l6ZSA+IHF0ZGZUYWJsZUVuZCkgewor KyAgICAgICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSB0ZXh0dXJlUmVjb3JkIDwgUXRkZjo6VGV4 dHVyZVJlY29yZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgcVdhcm5pbmcoInF0ZGYgdGFibGUg dG9vIHNtYWxsIGluIGZvbnQgJyVzJy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBxUHJp bnRhYmxlKGZvbnQuZmFtaWx5TmFtZSgpKSk7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKK0BAIC00NjIsNyArNDYyLDcgQEAgYm9vbCBRU0dSaGlEaXN0YW5jZUZpZWxkR2x5cGhDYWNo ZTo6bG9hZFByZWdlbmVyYXRlZENhY2hlKGNvbnN0IFFSYXdGb250ICZmb250KQorIAorICAgICAg ICAgY29uc3QgY2hhciAqZ2x5cGhSZWNvcmQgPSB0ZXh0dXJlUmVjb3JkOworICAgICAgICAgZm9y IChxdWludDMyIGkgPSAwOyBpIDwgZ2x5cGhDb3VudDsgKytpLCBnbHlwaFJlY29yZCArPSBRdGRm OjpHbHlwaFJlY29yZFNpemUpIHsKKy0gICAgICAgICAgICBpZiAoZ2x5cGhSZWNvcmQgKyBRdGRm OjpHbHlwaFJlY29yZFNpemUgPiBxdGRmVGFibGVFbmQpIHsKKysgICAgICAgICAgICBpZiAocXRk ZlRhYmxlRW5kIC0gZ2x5cGhSZWNvcmQgPCBRdGRmOjogR2x5cGhSZWNvcmRTaXplKSB7CisgICAg ICAgICAgICAgICAgIHFXYXJuaW5nKCJxdGRmIHRhYmxlIHRvbyBzbWFsbCBpbiBmb250ICclcycu IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcVByaW50YWJsZShmb250LmZhbWlseU5hbWUo KSkpOworICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtNTEyLDggKzUxMiw4IEBA IGJvb2wgUVNHUmhpRGlzdGFuY2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0ZWRDYWNo ZShjb25zdCBRUmF3Rm9udCAmZm9udCkKKyAKKyAgICAgICAgICAgICBpbnQgd2lkdGggPSB0ZXhJ bmZvLT5hbGxvY2F0ZWRBcmVhLndpZHRoKCk7CisgICAgICAgICAgICAgaW50IGhlaWdodCA9IHRl eEluZm8tPmFsbG9jYXRlZEFyZWEuaGVpZ2h0KCk7CistICAgICAgICAgICAgcWludDY0IHNpemUg PSB3aWR0aCAqIGhlaWdodDsKKy0gICAgICAgICAgICBpZiAocmVpbnRlcnByZXRfY2FzdDxjb25z dCBjaGFyICo+KHRleHR1cmVEYXRhICsgc2l6ZSkgPiBxdGRmVGFibGVFbmQpIHsKKysgICAgICAg ICAgICBxaW50NjQgc2l6ZSA9IHFpbnQ2NCh3aWR0aCkgKiBoZWlnaHQ7CisrICAgICAgICAgICAg aWYgKHF0ZGZUYWJsZUVuZCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPih0ZXh0dXJl RGF0YSkgPCBzaXplKSB7CisgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJxdGRmIHRhYmxlIHRv byBzbWFsbCBpbiBmb250ICclcycuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcVByaW50 YWJsZShmb250LmZhbWlseU5hbWUoKSkpOworICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0 ZXh0LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNrc3R5bGVkdGV4dC5j cHAKK2luZGV4IGQ1MzFmYzkyMDUuLmEyNWFmOTA0MTQgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0 aXZlL3NyYy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3BwCisrKysgYi9xdGRlY2xhcmF0 aXZlL3NyYy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3BwCitAQCAtNTY0LDYgKzU2NCw4 IEBAIHZvaWQgUVF1aWNrU3R5bGVkVGV4dFByaXZhdGU6OnBhcnNlRW50aXR5KGNvbnN0IFFDaGFy IComY2gsIGNvbnN0IFFTdHJpbmcgJnRleHRJCisgICAgICAgICAgICAgICAgIHRleHRPdXQgKz0g UUNoYXIoNjApOworICAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5n KCJhbXAiKSkKKyAgICAgICAgICAgICAgICAgdGV4dE91dCArPSBRQ2hhcigzOCk7CisrICAgICAg ICAgICAgZWxzZSBpZiAoZW50aXR5ID09IFFMYXRpbjFTdHJpbmcoImFwb3MiKSkKKysgICAgICAg ICAgICAgICAgdGV4dE91dCArPSBRQ2hhcigzOSk7CisgICAgICAgICAgICAgZWxzZSBpZiAoZW50 aXR5ID09IFFMYXRpbjFTdHJpbmcoInF1b3QiKSkKKyAgICAgICAgICAgICAgICAgdGV4dE91dCAr PSBRQ2hhcigzNCk7CisgICAgICAgICAgICAgZWxzZSBpZiAoZW50aXR5ID09IFFMYXRpbjFTdHJp bmcoIm5ic3AiKSkKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMv cWFjY2Vzc2libGVxdWlja3dpZGdldC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdl dHMvcWFjY2Vzc2libGVxdWlja3dpZGdldC5jcHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwMDAwLi44YTFjOTAxODgwCistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0 aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldC5jcHAKK0BAIC0wLDAg KzEsMTEwIEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykg MjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8v bGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9k dWxlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQK KysqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxp ZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3Jk YW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGgg dGhlCisrKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0 aGUgdGVybXMgY29udGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlv dSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0 aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIK KysqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5p by9jb250YWN0LXVzLgorKyoqCisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVy c2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24g YW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQor KyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBp bmZvcm1hdGlvbiB0bworKyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJl IHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiog UHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5 IHRoZSBLREUgRnJlZQorKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5n IGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQg aW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2lu ZworKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgcmVxdWlyZW1lbnRzIHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Z3BsLTMuMC5odG1sLgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKysKKysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgiCisr CisrI2luY2x1ZGUgInFxdWlja3dpZGdldF9wLmgiCisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisr CisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworK1FBY2Nlc3NpYmxlUXVpY2tXaWRn ZXQ6OlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQoUVF1aWNrV2lkZ2V0KiB3aWRnZXQpCisrOiBRQWNj ZXNzaWJsZVdpZGdldCh3aWRnZXQpCisrLCBtX2FjY2Vzc2libGVXaW5kb3coUVF1aWNrV2lkZ2V0 UHJpdmF0ZTo6Z2V0KHdpZGdldCktPm9mZnNjcmVlbldpbmRvdykKKyt7CisrICAgIC8vIE5PVEU6 IG1fYWNjZXNzaWJsZVdpbmRvdyBpcyBhIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3csIGFuZCBub3Qg YQorKyAgICAvLyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93IChkZWZpbmVk IGJlbG93KS4gVGhpcyBtZWFucworKyAgICAvLyBpdCB3aWxsIHJldHVybiB0aGUgUXVpY2sgaXRl bSBjaGlsZCBpbnRlcmZhY2VzLCB3aGljaCBpcyB3aGF0J3MgbmVlZGVkIGhlcmUKKysgICAgLy8g KHVubGlrZSBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93LCB3aGljaCB3aWxs IHJlcG9ydCAwIGNoaWxkcmVuKS4KKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nl c3NpYmxlUXVpY2tXaWRnZXQ6OmNoaWxkKGludCBpbmRleCkgY29uc3QKKyt7CisrICAgIHJldHVy biBtX2FjY2Vzc2libGVXaW5kb3cuY2hpbGQoaW5kZXgpOworK30KKysKKytpbnQgUUFjY2Vzc2li bGVRdWlja1dpZGdldDo6Y2hpbGRDb3VudCgpIGNvbnN0CisreworKyAgICByZXR1cm4gbV9hY2Nl c3NpYmxlV2luZG93LmNoaWxkQ291bnQoKTsKKyt9CisrCisraW50IFFBY2Nlc3NpYmxlUXVpY2tX aWRnZXQ6OmluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UpIGNv bnN0CisreworKyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmluZGV4T2ZDaGlsZChpZmFj ZSk7CisrfQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0 OjpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3QKKyt7CisrICAgIHJldHVybiBtX2FjY2Vzc2li bGVXaW5kb3cuY2hpbGRBdCh4LCB5KTsKKyt9CisrCisrUUFjY2Vzc2libGVRdWlja1dpZGdldE9m ZnNjcmVlbldpbmRvdzo6UUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVp Y2tXaW5kb3cgKndpbmRvdykKKys6UUFjY2Vzc2libGVRdWlja1dpbmRvdyh3aW5kb3cpCisrewor KworK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdldE9m ZnNjcmVlbldpbmRvdzo6Y2hpbGQoaW50IGluZGV4KSBjb25zdAorK3sKKysgICAgUV9VTlVTRUQo aW5kZXgpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisraW50IFFBY2Nlc3NpYmxlUXVp Y2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmNoaWxkQ291bnQoKSBjb25zdAorK3sKKysgICAgcmV0 dXJuIDA7CisrfQorKworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93 OjppbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdAor K3sKKysgICAgUV9VTlVTRUQoaWZhY2UpOworKyAgICByZXR1cm4gLTE7CisrfQorKworK1FBY2Nl c3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpR QWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpjaGlsZEF0KGludCB4LCBpbnQg eSkgY29uc3QKKyt7CisrICAgIFFfVU5VU0VEKHgpOworKyAgICBRX1VOVVNFRCh5KTsKKysgICAg cmV0dXJuIG51bGxwdHI7CisrfQorKworKyNlbmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisrUVRf RU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0 cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lk Z2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu ZGV4IDAwMDAwMDAwMDAuLjdjMmFiOTMwZTAKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaAorQEAgLTAs MCArMSw5NSBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMp IDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0Lmlv L2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1aWNrIG1v ZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwk CisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFs aWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29y ZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRo IHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGgg dGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5 b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRp dGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVy CisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQu aW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZl cnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9u IGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUK KysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcg aW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBi ZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoq IFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBi eSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmlu ZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVk IGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dp bmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz L2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisrCisrI2lmbmRlZiBRQUNDRVNTSUJMRVFVSUNLV0lER0VUX0gKKysjZGVm aW5lIFFBQ0NFU1NJQkxFUVVJQ0tXSURHRVRfSAorKworKy8vCisrLy8gIFcgQSBSIE4gSSBOIEcK KysvLyAgLS0tLS0tLS0tLS0tLQorKy8vCisrLy8gVGhpcyBmaWxlIGlzIG5vdCBwYXJ0IG9mIHRo ZSBRdCBBUEkuICBJdCBleGlzdHMgcHVyZWx5IGFzIGFuCisrLy8gaW1wbGVtZW50YXRpb24gZGV0 YWlsLiAgVGhpcyBoZWFkZXIgZmlsZSBtYXkgY2hhbmdlIGZyb20gdmVyc2lvbiB0bworKy8vIHZl cnNpb24gd2l0aG91dCBub3RpY2UsIG9yIGV2ZW4gYmUgcmVtb3ZlZC4KKysvLworKy8vIFdlIG1l YW4gaXQuCisrLy8KKysKKysjaW5jbHVkZSAicXF1aWNrd2lkZ2V0LmgiCisrI2luY2x1ZGUgPFF0 V2lkZ2V0cy9xYWNjZXNzaWJsZXdpZGdldC5oPgorKworKyNpbmNsdWRlIDxwcml2YXRlL3FhY2Nl c3NpYmxlcXVpY2t2aWV3X3AuaD4KKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysjaWYgUVRf Q09ORklHKGFjY2Vzc2liaWxpdHkpCisrCisrLy8gVGhlc2UgY2xhc3NlcyBpbXBsZW1lbnQgdGhl IFFRdWlja1dpZ2V0IGFjY2Vzc2liaWxpdHkgc3dpdGNoYXJvbywKKysvLyB3aGVyZSB0aGUgY2hp bGQgaXRlbXMgb2YgdGhlIFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyBhcmUgcmVwb3J0ZWQK KysvLyBhcyBjaGlsZCBhY2Nlc3NpYmxlIGludGVyZmFjZXMgb2YgdGhlIFFBY2Nlc3NpYmxlUXVp Y2tXaWRnZXQuCisrY2xhc3MgUUFjY2Vzc2libGVRdWlja1dpZGdldDogcHVibGljIFFBY2Nlc3Np YmxlV2lkZ2V0CisreworK3B1YmxpYzoKKysgICAgUUFjY2Vzc2libGVRdWlja1dpZGdldChRUXVp Y2tXaWRnZXQqIHdpZGdldCk7CisrCisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZChp bnQgaW5kZXgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBpbnQgY2hpbGRDb3VudCgpIGNvbnN0IG92 ZXJyaWRlOworKyAgICBpbnQgaW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNl ICppZmFjZSkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGls ZEF0KGludCB4LCBpbnQgeSkgY29uc3Qgb3ZlcnJpZGU7CisrCisrcHJpdmF0ZToKKysgICAgUUFj Y2Vzc2libGVRdWlja1dpbmRvdyBtX2FjY2Vzc2libGVXaW5kb3c7CisrICAgIFFfRElTQUJMRV9D T1BZKFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQpCisrfTsKKysKKytjbGFzcyBRQWNjZXNzaWJsZVF1 aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OiBwdWJsaWMgUUFjY2Vzc2libGVRdWlja1dpbmRvdwor K3sKKytwdWJsaWM6CisrICAgIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3co UVF1aWNrV2luZG93ICp3aW5kb3cpOworKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqY2hpbGQo aW50IGluZGV4KSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50IGNoaWxkQ291bnQoKSBjb25zdCBv dmVycmlkZTsKKysgICAgaW50IGluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFj ZSAqaWZhY2UpIGNvbnN0IG92ZXJyaWRlOworKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqY2hp bGRBdChpbnQgeCwgaW50IHkpIGNvbnN0IG92ZXJyaWRlOworK307CisrCisrI2VuZGlmIC8vIGFj Y2Vzc2liaWxpdHkKKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCisrI2VuZGlmCitkaWZmIC0tZ2l0 IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRm YWN0b3J5LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1 aWNrd2lkZ2V0ZmFjdG9yeS5jcHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw MDAwLi43YmE4OGExNzY5CistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9x dWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwCitAQCAtMCwwICsx LDYwIEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAy MSBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGlj ZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9kdWxl IG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysq KiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBj b21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5j ZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhl CisrKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUg dGVybXMgY29udGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBh bmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9u cyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysq KiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9j b250YWN0LXVzLgorKyoqCisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVz YWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv biAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5k IGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoq IHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZv cm1hdGlvbiB0bworKyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVz ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVi bGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRo ZSBLREUgRnJlZQorKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGlu IHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4g dGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZwor KyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug cmVxdWlyZW1lbnRzIHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvZ3BsLTIuMC5odG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3Bs LTMuMC5odG1sLgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKysKKysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5o IgorKyNpbmNsdWRlICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCIKKysKKytRVF9CRUdJTl9O QU1FU1BBQ0UKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrCisrUUFjY2Vzc2li bGVJbnRlcmZhY2UgKnFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRGYWN0b3J5KGNvbnN0IFFTdHJpbmcg JmNsYXNzbmFtZSwgUU9iamVjdCAqb2JqZWN0KQorK3sKKysgICAgaWYgKGNsYXNzbmFtZSA9PSBR TGF0aW4xU3RyaW5nKCJRUXVpY2tXaWRnZXQiKSkgeworKyAgICAgICAgcmV0dXJuIG5ldyBRQWNj ZXNzaWJsZVF1aWNrV2lkZ2V0KHFvYmplY3RfY2FzdDxRUXVpY2tXaWRnZXQgKj4ob2JqZWN0KSk7 CisrICAgIH0gZWxzZSBpZiAoY2xhc3NuYW1lID09IFFMYXRpbjFTdHJpbmcoIlFRdWlja1dpZGdl dE9mZnNjcmVlbldpbmRvdyIpKSB7CisrICAgICAgICByZXR1cm4gbmV3IFFBY2Nlc3NpYmxlUXVp Y2tXaWRnZXRPZmZzY3JlZW5XaW5kb3cocW9iamVjdF9jYXN0PFFRdWlja1dpbmRvdyAqPihvYmpl Y3QpKTsKKysgICAgfQorKyAgICByZXR1cm4gMDsKKyt9CisrCisrI2VuZGlmIC8vIGFjY2Vzc2li aWxpdHkKKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaCBiL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9y eV9wLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi44YzYzYjA5Zjgx CistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFj Y2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oCitAQCAtMCwwICsxLDY2IEBACisrLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFu eSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisr KiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9kdWxlIG9mIHRoZSBRdCBUb29s a2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFsIExp Y2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxp Y2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21t ZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUg b3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVk IGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBh bnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93 d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1 c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoq CisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJu YXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0 aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBvZiB0 aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bworKyoq IGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBy ZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNh Z2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9y IChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2UgdmVy c2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQorKyoq IFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VO U0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBv ZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0aW9u IHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdp bGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1s IGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorKyoq CisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysj aW5jbHVkZSA8UXRHdWkvcWFjY2Vzc2libGUuaD4KKysKKysjaWZuZGVmIFFBQ0NFU1NJQkxFUVVJ Q0tXSURHRVRGQUNUT1JZX0gKKysjZGVmaW5lIFFBQ0NFU1NJQkxFUVVJQ0tXSURHRVRGQUNUT1JZ X0gKKysKKysvLworKy8vICBXIEEgUiBOIEkgTiBHCisrLy8gIC0tLS0tLS0tLS0tLS0KKysvLwor Ky8vIFRoaXMgZmlsZSBpcyBub3QgcGFydCBvZiB0aGUgUXQgQVBJLiAgSXQgZXhpc3RzIHB1cmVs eSBhcyBhbgorKy8vIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFRoaXMgaGVhZGVyIGZpbGUgbWF5 IGNoYW5nZSBmcm9tIHZlcnNpb24gdG8KKysvLyB2ZXJzaW9uIHdpdGhvdXQgbm90aWNlLCBvciBl dmVuIGJlIHJlbW92ZWQuCisrLy8KKysvLyBXZSBtZWFuIGl0LgorKy8vCisrCisrUVRfQkVHSU5f TkFNRVNQQUNFCisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworK1FBY2Nlc3Np YmxlSW50ZXJmYWNlICpxQWNjZXNzaWJsZVF1aWNrV2lkZ2V0RmFjdG9yeShjb25zdCBRU3RyaW5n ICZjbGFzc25hbWUsIFFPYmplY3QgKm9iamVjdCk7CisrCisrI2VuZGlmCisrCisrUVRfRU5EX05B TUVTUEFDRQorKworKyNlbmRpZgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr d2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRz L3FxdWlja3dpZGdldC5jcHAKK2luZGV4IDM5NzgwZjhkZTMuLjljOTdiNDM1MTggMTAwNjQ0Cist LS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcAorKysr IGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldC5jcHAKK0BAIC0z OSw2ICszOSw3IEBACisgCisgI2luY2x1ZGUgInFxdWlja3dpZGdldC5oIgorICNpbmNsdWRlICJx cXVpY2t3aWRnZXRfcC5oIgorKyNpbmNsdWRlICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9y eV9wLmgiCisgCisgI2luY2x1ZGUgInByaXZhdGUvcXF1aWNrd2luZG93X3AuaCIKKyAjaW5jbHVk ZSAicHJpdmF0ZS9xcXVpY2tpdGVtX3AuaCIKK0BAIC03NSw5ICs3NiwxNiBAQAorIAorIFFUX0JF R0lOX05BTUVTUEFDRQorIAorK1FRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6UVF1aWNrV2lk Z2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvd1ByaXZhdGUgJmRkLCBRUXVpY2tSZW5kZXJD b250cm9sICpjb250cm9sKQorKzpRUXVpY2tXaW5kb3coZGQsIGNvbnRyb2wpCisreworKyAgICBz ZXRUaXRsZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJPZmZzY3JlZW4iKSk7CisrICAgIHNldE9iamVj dE5hbWUoUVN0cmluZzo6ZnJvbUxhdGluMSgiUVF1aWNrT2ZmU2NyZWVuV2luZG93IikpOworK30K KysKKyAvLyBvdmVycmlkZSBzZXRWaXNibGUgdG8gcHJldmVudCBhY2NpZGVudGFsIG9mZnNjcmVl biB3aW5kb3cgYmVpbmcgY3JlYXRlZAorIC8vIGJ5IGJhc2UgY2xhc3MuCistY2xhc3MgUVF1aWNr T2ZmY3JlZW5XaW5kb3dQcml2YXRlOiBwdWJsaWMgUVF1aWNrV2luZG93UHJpdmF0ZSB7CisrY2xh c3MgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93UHJpdmF0ZTogcHVibGljIFFRdWlja1dpbmRv d1ByaXZhdGUgeworIHB1YmxpYzoKKyAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkg b3ZlcnJpZGUgeworICAgICAgICAgUV9RKFFXaW5kb3cpOworQEAgLTEwNSw5ICsxMTMsOCBAQCB2 b2lkIFFRdWlja1dpZGdldFByaXZhdGU6OmluaXQoUVFtbEVuZ2luZSogZSkKKyAgICAgUV9RKFFR dWlja1dpZGdldCk7CisgCisgICAgIHJlbmRlckNvbnRyb2wgPSBuZXcgUVF1aWNrV2lkZ2V0UmVu ZGVyQ29udHJvbChxKTsKKy0gICAgb2Zmc2NyZWVuV2luZG93ID0gbmV3IFFRdWlja1dpbmRvdygq bmV3IFFRdWlja09mZmNyZWVuV2luZG93UHJpdmF0ZSgpLHJlbmRlckNvbnRyb2wpOworLSAgICBv ZmZzY3JlZW5XaW5kb3ctPnNldFRpdGxlKFFTdHJpbmc6OmZyb21MYXRpbjEoIk9mZnNjcmVlbiIp KTsKKy0gICAgb2Zmc2NyZWVuV2luZG93LT5zZXRPYmplY3ROYW1lKFFTdHJpbmc6OmZyb21MYXRp bjEoIlFRdWlja09mZlNjcmVlbldpbmRvdyIpKTsKKysgICAgb2Zmc2NyZWVuV2luZG93ID0gbmV3 IFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdygqbmV3IFFRdWlja1dpZGdldE9mZnNjcmVlbldp bmRvd1ByaXZhdGUoKSwgcmVuZGVyQ29udHJvbCk7CisrICAgIG9mZnNjcmVlbldpbmRvdy0+c2V0 U2NyZWVuKHEtPnNjcmVlbigpKTsKKyAgICAgLy8gRG8gbm90IGNhbGwgY3JlYXRlKCkgb24gb2Zm c2NyZWVuV2luZG93LgorIAorICAgICAvLyBDaGVjayBpZiB0aGUgU29mdHdhcmUgQWRhcHRhdGlv biBpcyBiZWluZyB1c2VkCitAQCAtMTM4LDYgKzE0NSwxMCBAQCB2b2lkIFFRdWlja1dpZGdldFBy aXZhdGU6OmluaXQoUVFtbEVuZ2luZSogZSkKKyAgICAgUVdpZGdldDo6Y29ubmVjdChvZmZzY3Jl ZW5XaW5kb3csICZRUXVpY2tXaW5kb3c6OmZvY3VzT2JqZWN0Q2hhbmdlZCwgcSwgJlFRdWlja1dp ZGdldDo6cHJvcGFnYXRlRm9jdXNPYmplY3RDaGFuZ2VkKTsKKyAgICAgUU9iamVjdDo6Y29ubmVj dChyZW5kZXJDb250cm9sLCBTSUdOQUwocmVuZGVyUmVxdWVzdGVkKCkpLCBxLCBTTE9UKHRyaWdn ZXJVcGRhdGUoKSkpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHJlbmRlckNvbnRyb2wsIFNJR05B TChzY2VuZUNoYW5nZWQoKSksIHEsIFNMT1QodHJpZ2dlclVwZGF0ZSgpKSk7CisrCisrI2lmIFFU X0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKyAgICBRQWNjZXNzaWJsZTo6aW5zdGFsbEZhY3Rvcnko JnFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRGYWN0b3J5KTsKKysjZW5kaWYKKyB9CisgCisgdm9pZCBR UXVpY2tXaWRnZXRQcml2YXRlOjplbnN1cmVFbmdpbmUoKSBjb25zdAorQEAgLTkwMSw5ICs5MTIs NyBAQCB2b2lkIFFRdWlja1dpZGdldFByaXZhdGU6OmNyZWF0ZUNvbnRleHQoKQorIAorICAgICAg ICAgY29udGV4dCA9IG5ldyBRT3BlbkdMQ29udGV4dDsKKyAgICAgICAgIGNvbnRleHQtPnNldEZv cm1hdChvZmZzY3JlZW5XaW5kb3ctPnJlcXVlc3RlZEZvcm1hdCgpKTsKKy0gICAgICAgIGNvbnN0 IFFXaW5kb3cgKndpbiA9IHEtPndpbmRvdygpLT53aW5kb3dIYW5kbGUoKTsKKy0gICAgICAgIGlm ICh3aW4gJiYgd2luLT5zY3JlZW4oKSkKKy0gICAgICAgICAgICBjb250ZXh0LT5zZXRTY3JlZW4o d2luLT5zY3JlZW4oKSk7CisrICAgICAgICBjb250ZXh0LT5zZXRTY3JlZW4ocS0+c2NyZWVuKCkp OworICAgICAgICAgUU9wZW5HTENvbnRleHQgKnNoYXJlQ29udGV4dCA9IHF0X2dsX2dsb2JhbF9z aGFyZV9jb250ZXh0KCk7CisgICAgICAgICBpZiAoIXNoYXJlQ29udGV4dCkKKyAgICAgICAgICAg ICBzaGFyZUNvbnRleHQgPSBRV2lkZ2V0UHJpdmF0ZTo6Z2V0KHEtPndpbmRvdygpKS0+c2hhcmVD b250ZXh0KCk7CitAQCAtMTUyMCwxOSArMTUyOSwxNiBAQCBib29sIFFRdWlja1dpZGdldDo6ZXZl bnQoUUV2ZW50ICplKQorICAgICAgICAgZC0+aGFuZGxlV2luZG93Q2hhbmdlKCk7CisgICAgICAg ICBicmVhazsKKyAKKy0gICAgY2FzZSBRRXZlbnQ6OlNjcmVlbkNoYW5nZUludGVybmFsOgorLSAg ICAgICAgaWYgKFFXaW5kb3cgKndpbmRvdyA9IHRoaXMtPndpbmRvdygpLT53aW5kb3dIYW5kbGUo KSkgeworLSAgICAgICAgICAgIFFTY3JlZW4gKm5ld1NjcmVlbiA9IHdpbmRvdy0+c2NyZWVuKCk7 CistCistICAgICAgICAgICAgaWYgKGQtPm9mZnNjcmVlbldpbmRvdykKKy0gICAgICAgICAgICAg ICAgZC0+b2Zmc2NyZWVuV2luZG93LT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKy0gICAgICAgICAg ICBpZiAoZC0+b2Zmc2NyZWVuU3VyZmFjZSkKKy0gICAgICAgICAgICAgICAgZC0+b2Zmc2NyZWVu U3VyZmFjZS0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisrICAgIGNhc2UgUUV2ZW50OjpTY3JlZW5D aGFuZ2VJbnRlcm5hbDogeworKyAgICAgICAgUVNjcmVlbiAqbmV3U2NyZWVuID0gc2NyZWVuKCk7 CisrICAgICAgICBpZiAoZC0+b2Zmc2NyZWVuV2luZG93KQorKyAgICAgICAgICAgIGQtPm9mZnNj cmVlbldpbmRvdy0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisrICAgICAgICBpZiAoZC0+b2Zmc2Ny ZWVuU3VyZmFjZSkKKysgICAgICAgICAgICBkLT5vZmZzY3JlZW5TdXJmYWNlLT5zZXRTY3JlZW4o bmV3U2NyZWVuKTsKKyAjaWYgUVRfQ09ORklHKG9wZW5nbCkKKy0gICAgICAgICAgICBpZiAoZC0+ Y29udGV4dCkKKy0gICAgICAgICAgICAgICAgZC0+Y29udGV4dC0+c2V0U2NyZWVuKG5ld1NjcmVl bik7CisrICAgICAgICBpZiAoZC0+Y29udGV4dCkKKysgICAgICAgICAgICBkLT5jb250ZXh0LT5z ZXRTY3JlZW4obmV3U2NyZWVuKTsKKyAjZW5kaWYKKy0gICAgICAgIH0KKyAKKyAgICAgICAgIGlm IChkLT51c2VTb2Z0d2FyZVJlbmRlcmVyCisgI2lmIFFUX0NPTkZJRyhvcGVuZ2wpCitAQCAtMTU0 NSw3ICsxNTUxLDcgQEAgYm9vbCBRUXVpY2tXaWRnZXQ6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAg ICAgICAgICBkLT5yZW5kZXIodHJ1ZSk7CisgICAgICAgICB9CisgICAgICAgICBicmVhazsKKy0K KysgICAgfQorICAgICBjYXNlIFFFdmVudDo6U2hvdzoKKyAgICAgY2FzZSBRRXZlbnQ6Ok1vdmU6 CisgICAgICAgICBkLT51cGRhdGVQb3NpdGlvbigpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldF9wLmgKK2luZGV4IDg4MWY3ZjkyMjAuLjFhOTQ2YmNj NzEgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lk Z2V0X3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdl dF9wLmgKK0BAIC0xNDgsNiArMTQ4LDE0IEBAIHB1YmxpYzoKKyAgICAgYm9vbCBmb3JjZUZ1bGxV cGRhdGU7CisgfTsKKyAKKytjbGFzcyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6IHB1Ymxp YyBRUXVpY2tXaW5kb3cKKyt7CisrICAgIFFfT0JKRUNUCisrCisrcHVibGljOgorKyAgICBRUXVp Y2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coUVF1aWNrV2luZG93UHJpdmF0ZSAmZGQsIFFRdWlja1Jl bmRlckNvbnRyb2wgKmNvbnRyb2wpOworK307CisrCisgUVRfRU5EX05BTUVTUEFDRQorIAorICNl bmRpZiAvLyBRUXVpY2tXaWRnZXRfUF9ICitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8gYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dp ZGdldHMvcXVpY2t3aWRnZXRzLnBybworaW5kZXggMjQzOGU1NzdhZS4uODVkMTU2YjhhMyAxMDA2 NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJv CisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXVpY2t3aWRnZXRzLnBybwor QEAgLTcsOSArNywxMyBAQCBERUZJTkVTICAgKz0gUVRfTk9fVVJMX0NBU1RfRlJPTV9TVFJJTkcg UVRfTk9fSU5URUdFUl9FVkVOVF9DT09SRElOQVRFUyBRVF9OT19GTworIEhFQURFUlMgKz0gXAor ICAgICBxcXVpY2t3aWRnZXQuaCBcCisgICAgIHFxdWlja3dpZGdldF9wLmggXAorLSAgICBxdHF1 aWNrd2lkZ2V0c2dsb2JhbC5oCisrICAgIHF0cXVpY2t3aWRnZXRzZ2xvYmFsLmggXAorKyAgICBx YWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCBcCisrICAgIHFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRm YWN0b3J5X3AuaAorIAorIFNPVVJDRVMgKz0gXAorLSAgICBxcXVpY2t3aWRnZXQuY3BwCisrICAg IHFxdWlja3dpZGdldC5jcHAgXAorKyAgICBxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0LmNwcCBcCisr ICAgIHFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5LmNwcAorIAorIGxvYWQocXRfbW9kdWxl KQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcWpzZW5naW5lL3Rz dF9xanNlbmdpbmUuY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUv dHN0X3Fqc2VuZ2luZS5jcHAKK2luZGV4IDNiN2Q3NGRmNjMuLmI3NWJmODIwZDUgMTAwNjQ0Cist LS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5l LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0X3Fq c2VuZ2luZS5jcHAKK0BAIC0xMDIsNiArMTAyLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9p ZCB2YWx1ZUNvbnZlcnNpb25fUmVndWxhckV4cHJlc3Npb24oKTsKKyAgICAgdm9pZCBjYXN0V2l0 aE11bHRpcGxlSW5oZXJpdGFuY2UoKTsKKyAgICAgdm9pZCBjb2xsZWN0R2FyYmFnZSgpOworKyAg ICB2b2lkIGNvbGxlY3RHYXJiYWdlTmVzdGVkV3JhcHBlcnNUd29FbmdpbmVzKCk7CisgICAgIHZv aWQgZ2NXaXRoTmVzdGVkRGF0YVN0cnVjdHVyZSgpOworICAgICB2b2lkIHN0YWNrdHJhY2UoKTsK KyAgICAgdm9pZCBudW1iZXJQYXJzaW5nX2RhdGEoKTsKK0BAIC0xODA5LDYgKzE4MTAsNDQgQEAg dm9pZCB0c3RfUUpTRW5naW5lOjpjb2xsZWN0R2FyYmFnZSgpCisgICAgIFFWRVJJRlkocHRyLmlz TnVsbCgpKTsKKyB9CisgCisrY2xhc3MgVGVzdE9iamVjdENvbnRhaW5lciA6IHB1YmxpYyBRT2Jq ZWN0CisreworKyAgICBRX09CSkVDVAorKyAgICBRX1BST1BFUlRZKFFPYmplY3QgKmR1bW15IE1F TUJFUiBtX2R1bW15IENPTlNUQU5UKQorKworK3B1YmxpYzoKKysgICAgVGVzdE9iamVjdENvbnRh aW5lcigpIDogbV9kdW1teShuZXcgUU9iamVjdCh0aGlzKSkge30KKysKKytwcml2YXRlOgorKyAg ICBRT2JqZWN0ICptX2R1bW15OworK307CisrCisrdm9pZCB0c3RfUUpTRW5naW5lOjpjb2xsZWN0 R2FyYmFnZU5lc3RlZFdyYXBwZXJzVHdvRW5naW5lcygpCisreworKyAgICBRSlNFbmdpbmUgZW5n aW5lMTsKKysgICAgUUpTRW5naW5lIGVuZ2luZTI7CisrCisrICAgIFRlc3RPYmplY3RDb250YWlu ZXIgY29udGFpbmVyOworKyAgICBRUW1sRW5naW5lOjpzZXRPYmplY3RPd25lcnNoaXAoJmNvbnRh aW5lciwgUVFtbEVuZ2luZTo6Q3BwT3duZXJzaGlwKTsKKysKKysgICAgZW5naW5lMS5nbG9iYWxP YmplY3QoKS5zZXRQcm9wZXJ0eSgiZm9vYmFyIiwgZW5naW5lMS5uZXdRT2JqZWN0KCZjb250YWlu ZXIpKTsKKysgICAgZW5naW5lMi5nbG9iYWxPYmplY3QoKS5zZXRQcm9wZXJ0eSgiZm9vYmFyIiwg ZW5naW5lMi5uZXdRT2JqZWN0KCZjb250YWluZXIpKTsKKysKKysgICAgZW5naW5lMS5ldmFsdWF0 ZSgiZm9vYmFyLmR1bW15LmJheiA9IDQyIik7CisrICAgIGVuZ2luZTIuZXZhbHVhdGUoImZvb2Jh ci5kdW1teS5iYXogPSA0MyIpOworKworKyAgICBRQ09NUEFSRShlbmdpbmUxLmV2YWx1YXRlKCJm b29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDIpOworKyAgICBRQ09NUEFSRShlbmdpbmUyLmV2 YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDMpOworKworKyAgICBlbmdpbmUx LmNvbGxlY3RHYXJiYWdlKCk7CisrICAgIGVuZ2luZTIuY29sbGVjdEdhcmJhZ2UoKTsKKysKKysg ICAgLy8gVGhlIEdDIHNob3VsZCBub3QgY29sbGVjdCBkdW1teSBvYmplY3Qgd3JhcHBlcnMgbmVp dGhlciBpbiBlbmdpbmUxIG5vciBlbmdpbmUyLCB3ZQorKyAgICAvLyB2ZXJpZnkgdGhhdCBieSBj aGVja2luZyB3aGV0aGVyIHRoZSBiYXogcHJvcGVydHkgc3RpbGwgaGFzIGl0cyBwcmV2aW91cyB2 YWx1ZS4KKysgICAgUUNPTVBBUkUoZW5naW5lMS5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIp LnRvSW50KCksIDQyKTsKKysgICAgUUNPTVBBUkUoZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFyLmR1 bW15LmJheiIpLnRvSW50KCksIDQzKTsKKyt9CisrCisgdm9pZCB0c3RfUUpTRW5naW5lOjpnY1dp dGhOZXN0ZWREYXRhU3RydWN0dXJlKCkKKyB7CisgICAgIC8vIFRoZSBHQyBtdXN0IGJlIGFibGUg dG8gdHJhdmVyc2UgZGVlcGx5IG5lc3RlZCBvYmplY3RzLCBvdGhlcndpc2UgdGhpcworZGlmZiAt LWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvZGF0 YS9yZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9x bWwvcXFtbGRlbGVnYXRlbW9kZWwvZGF0YS9yZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbAorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjIwNjEzM2JiMzkKKy0tLSAvZGV2 L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9k ZWwvZGF0YS9yZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbAorQEAgLTAsMCArMSwxMSBAQAorK2lt cG9ydCBRdFF1aWNrIDIuOAorKworK0xpc3RWaWV3IHsKKysgICAgaWQ6IHJvb3QKKysgICAgd2lk dGg6IDIwMAorKyAgICBoZWlnaHQ6IDIwMAorKworKyAgICBkZWxlZ2F0ZTogVGV4dCB7CisrICAg ICAgICB0ZXh0OiBkaXNwbGF5CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2 ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90c3RfcXFtbGRlbGVnYXRlbW9kZWwu Y3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90c3Rf cXFtbGRlbGVnYXRlbW9kZWwuY3BwCitpbmRleCAzNWYxZTJjOTRkLi4xNzIyNDQ3ODMwIDEwMDY0 NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90 c3RfcXFtbGRlbGVnYXRlbW9kZWwuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8v cW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKK0BAIC0yNyw2 ICsyNyw4IEBACisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAKKyAjaW5jbHVkZSA8UXRUZXN0L3F0 ZXN0Lmg+CisrI2luY2x1ZGUgPFF0Q29yZS9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsPgor KyNpbmNsdWRlIDxRdEd1aS9RU3RhbmRhcmRJdGVtTW9kZWw+CisgI2luY2x1ZGUgPFF0UW1sL3Fx bWxjb21wb25lbnQuaD4KKyAjaW5jbHVkZSA8UXRRbWxNb2RlbHMvcHJpdmF0ZS9xcW1sZGVsZWdh dGVtb2RlbF9wLmg+CisgI2luY2x1ZGUgPFF0UXVpY2svcXF1aWNrdmlldy5oPgorQEAgLTQ3LDYg KzQ5LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBmaWx0ZXJPbkdyb3VwX3JlbW92ZVdo ZW5Db21wbGV0ZWQoKTsKKyAgICAgdm9pZCBxdGJ1Z184NjAxNygpOworICAgICB2b2lkIGNvbnRl eHRBY2Nlc3NlZEJ5SGFuZGxlcigpOworKyAgICB2b2lkIHJlZHJhd1Vwb25Db2x1bW5DaGFuZ2Uo KTsKKyB9OworIAorIGNsYXNzIEFic3RyYWN0SXRlbU1vZGVsIDogcHVibGljIFFBYnN0cmFjdEl0 ZW1Nb2RlbAorQEAgLTE4Niw2ICsxODksMzAgQEAgdm9pZCB0c3RfUVFtbERlbGVnYXRlTW9kZWw6 OmNvbnRleHRBY2Nlc3NlZEJ5SGFuZGxlcigpCisgICAgIFFWRVJJRlkocm9vdC0+cHJvcGVydHko IndvcmtzIikudG9Cb29sKCkpOworIH0KKyAKKyt2b2lkIHRzdF9RUW1sRGVsZWdhdGVNb2RlbDo6 cmVkcmF3VXBvbkNvbHVtbkNoYW5nZSgpCisreworKyAgICBRU3RhbmRhcmRJdGVtTW9kZWwgbTE7 CisrICAgIG0xLmFwcGVuZFJvdyh7CisrICAgICAgICAgICAgbmV3IFFTdGFuZGFyZEl0ZW0oIkJh bmFuYSIpLAorKyAgICAgICAgICAgIG5ldyBRU3RhbmRhcmRJdGVtKCJDb2NvbnV0IiksCisrICAg IH0pOworKworKyAgICBRUXVpY2tWaWV3IHZpZXcodGVzdEZpbGVVcmwoInJlZHJhd1Vwb25Db2x1 bW5DaGFuZ2UucW1sIikpOworKyAgICBRQ09NUEFSRSh2aWV3LnN0YXR1cygpLCBRUXVpY2tWaWV3 OjpSZWFkeSk7CisrICAgIHZpZXcuc2hvdygpOworKyAgICBRUXVpY2tJdGVtICpyb290ID0gdmll dy5yb290T2JqZWN0KCk7CisrICAgIHJvb3QtPnNldFByb3BlcnR5KCJtb2RlbCIsIFFWYXJpYW50 Ojpmcm9tVmFsdWU8UU9iamVjdCAqPigmbTEpKTsKKysKKysgICAgUU9iamVjdCAqaXRlbSA9IHJv b3QtPnByb3BlcnR5KCJjdXJyZW50SXRlbSIpLnZhbHVlPFFPYmplY3QgKj4oKTsKKysgICAgUVZF UklGWShpdGVtKTsKKysgICAgUUNPTVBBUkUoaXRlbS0+cHJvcGVydHkoInRleHQiKS50b1N0cmlu ZygpLCAiQmFuYW5hIik7CisrCisrICAgIFFWRVJJRlkocm9vdCk7CisrICAgIG0xLnJlbW92ZUNv bHVtbigwKTsKKysKKysgICAgUUNPTVBBUkUoaXRlbS0+cHJvcGVydHkoInRleHQiKS50b1N0cmlu ZygpLCAiQ29jb251dCIpOworK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RUW1sRGVsZWdhdGVNb2Rl bCkKKyAKKyAjaW5jbHVkZSAidHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLm1vYyIKK2RpZmYgLS1naXQg YS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAgYi9xdGRl Y2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAKK2luZGV4IDVkNjM1 YWE2M2IuLjgyNGZkODllNWIgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8v cW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9x bWwvcXY0bW0vdHN0X3F2NG1tLmNwcAorQEAgLTc2LDEwICs3NiwxMCBAQCB2b2lkIHRzdF9xdjRt bTo6bXVsdGlXcmFwcGVkUU9iamVjdHMoKQorICAgICAgICAgUUNPTVBBUkUoZW5naW5lMS5tZW1v cnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDEpOwor ICAgICAgICAgUUNPTVBBUkUoZW5naW5lMi5tZW1vcnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVlZE9i amVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDApOworIAorLSAgICAgICAgLy8gTW92ZXMgdGhlIGFk ZGl0aW9uYWwgV2Vha1ZhbHVlIGZyb20gbV9tdWx0aXBseVdyYXBwZWRRT2JqZWN0cyB0bworLSAg ICAgICAgLy8gbV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuIEl0J3Mgc3RpbGwgYWxp dmUgYWZ0ZXIgYWxsLgorKyAgICAgICAgLy8gVGhlIGFkZGl0aW9uYWwgV2Vha1ZhbHVlIGZyb20g bV9tdWx0aXBseVdyYXBwZWRRT2JqZWN0cyBoYXNuJ3QgYmVlbiBtb3ZlZAorKyAgICAgICAgLy8g dG8gbV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUgeWV0LiBJdCdzIHN0aWxsIGFsaXZl IGFmdGVyIGFsbC4KKyAgICAgICAgIGVuZ2luZTEubWVtb3J5TWFuYWdlci0+cnVuR0MoKTsKKy0g ICAgICAgIFFDT01QQVJFKGVuZ2luZTEubWVtb3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRPYmpl Y3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAyKTsKKysgICAgICAgIFFDT01QQVJFKGVuZ2luZTEubWVt b3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAxKTsK KyAKKyAgICAgICAgIC8vIGVuZ2luZTIgZG9lc24ndCBvd24gdGhlIG9iamVjdCBhcyBlbmdpbmUx IHdhcyB0aGUgZmlyc3QgdG8gd3JhcCBpdCBhYm92ZS4KKyAgICAgICAgIC8vIFRoZXJlZm9yZSwg bm8gZWZmZWN0IGhlcmUuCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1 aWNrL3FxdWlja2l0ZW0yL2RhdGEvYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbCBi L3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi9kYXRhL2FjdGl2ZUZv Y3VzT25UYWJfaW5maW5pdGVMb29wMy5xbWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwMDAwLi44ODllNDgwZjNiCistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZl L3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvZGF0YS9hY3RpdmVGb2N1c09uVGFiX2luZmlu aXRlTG9vcDMucW1sCitAQCAtMCwwICsxLDEzIEBACisraW1wb3J0IFF0UXVpY2sgMi42CisrCisr SXRlbSB7CisrICAgIHZpc2libGU6IHRydWUKKysgICAgSXRlbSB7CisrICAgICAgICB2aXNpYmxl OiBmYWxzZQorKyAgICAgICAgSXRlbSB7CisrICAgICAgICAgICAgb2JqZWN0TmFtZTogImhpZGRl bkNoaWxkIgorKyAgICAgICAgICAgIGFjdGl2ZUZvY3VzT25UYWI6IHRydWUKKysgICAgICAgICAg ICBmb2N1czogdHJ1ZQorKyAgICAgICAgfQorKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL3F0ZGVj bGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAg Yi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlja2l0 ZW0uY3BwCitpbmRleCBjOGYyNTFkYmUxLi5jOGVmMzZlZTY4IDEwMDY0NAorLS0tIGEvcXRkZWNs YXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcAor KysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL3RzdF9xcXVp Y2tpdGVtLmNwcAorQEAgLTY3LDYgKzY3LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBh Y3RpdmVGb2N1c09uVGFiMTAoKTsKKyAgICAgdm9pZCBhY3RpdmVGb2N1c09uVGFiX2luZmluaXRl TG9vcF9kYXRhKCk7CisgICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AoKTsK KysgICAgdm9pZCBhY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcENvbnRyb2xzKCk7CisgCisg ICAgIHZvaWQgbmV4dEl0ZW1JbkZvY3VzQ2hhaW4oKTsKKyAgICAgdm9pZCBuZXh0SXRlbUluRm9j dXNDaGFpbjIoKTsKK0BAIC0xMDU3LDYgKzEwNTgsMTcgQEAgdm9pZCB0c3RfUVF1aWNrSXRlbTo6 YWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AoKQorICAgICBRQ09NUEFSRShpdGVtLCB3aW5k b3ctPnJvb3RPYmplY3QoKSk7CisgfQorIAorKworK3ZvaWQgdHN0X1FRdWlja0l0ZW06OmFjdGl2 ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wQ29udHJvbHMoKQorK3sKKysgICAgYXV0byBzb3VyY2Ug PSB0ZXN0RmlsZVVybCgiYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbCIpOworKyAg ICBRU2NvcGVkUG9pbnRlcjxRUXVpY2tWaWV3PndpbmRvdyhuZXcgUVF1aWNrVmlldygpKTsKKysg ICAgd2luZG93LT5zZXRTb3VyY2Uoc291cmNlKTsKKysgICAgd2luZG93LT5zaG93KCk7CisrICAg IFFWRVJJRlkod2luZG93LT5lcnJvcnMoKS5pc0VtcHR5KCkpOworKyAgICBRVGVzdDo6a2V5Q2xp Y2sod2luZG93LmdldCgpLCBRdDo6S2V5X1RhYik7IC8vIHNob3VsZCBub3QgaGFuZworK30KKysK KyB2b2lkIHRzdF9RUXVpY2tJdGVtOjpuZXh0SXRlbUluRm9jdXNDaGFpbigpCisgeworICAgICBp ZiAoIXF0X3RhYl9hbGxfd2lkZ2V0cygpKQorU3VibW9kdWxlIHF0ZG9jIGMwYzdiZjA3Li4uNzlk NmVmNjk6CitTdWJtb2R1bGUgcXRpbWFnZWZvcm1hdHMgMmRjZjI4OTkuLmFiZTQ0YzBmOgorZGlm ZiAtLWdpdCBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25zL3Fp Y25zaGFuZGxlci5jcHAgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMv aWNucy9xaWNuc2hhbmRsZXIuY3BwCitpbmRleCBkZGU3ODNjLi4xYmY5MDc0IDEwMDY0NAorLS0t IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5k bGVyLmNwcAorKysrIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2lj bnMvcWljbnNoYW5kbGVyLmNwcAorQEAgLTQ2Miw4ICs0NjIsMTIgQEAgc3RhdGljIGJvb2wgcGFy c2VJY29uRW50cnlJbmZvKElDTlNFbnRyeSAmaWNvbikKKyAgICAgaWYgKGlzSWNvbkNvbXByZXNz ZWQoaWNvbikpCisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgLy8gSWNvbiBkZXB0aDoKKy0g ICAgaWYgKCFkZXB0aC5pc0VtcHR5KCkpCistICAgICAgICBpY29uLmRlcHRoID0gSUNOU0VudHJ5 OjpEZXB0aChkZXB0aC50b1VJbnQoKSk7CisrICAgIGlmICghZGVwdGguaXNFbXB0eSgpKSB7Cisr ICAgICAgICBjb25zdCB1aW50IGRlcHRoVUludCA9IGRlcHRoLnRvVUludCgpOworKyAgICAgICAg aWYgKGRlcHRoVUludCA+IDMyKQorKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAg IGljb24uZGVwdGggPSBJQ05TRW50cnk6OkRlcHRoKGRlcHRoVUludCk7CisrICAgIH0KKyAgICAg Ly8gVHJ5IG1vbm8gaWYgZGVwdGggbm90IGZvdW5kCisgICAgIGlmIChpY29uLmRlcHRoID09IElD TlNFbnRyeTo6RGVwdGhVbmtub3duKQorICAgICAgICAgaWNvbi5kZXB0aCA9IElDTlNFbnRyeTo6 RGVwdGhNb25vOworQEAgLTUxNSw2ICs1MTksOSBAQCBzdGF0aWMgYm9vbCBwYXJzZUljb25FbnRy eUluZm8oSUNOU0VudHJ5ICZpY29uKQorICAgICAgICAgfQorICAgICAgICAgaWNvbi5oZWlnaHQg PSBpY29uLndpZHRoOworICAgICB9CisrICAgIC8vIFNhbml0eSBjaGVjaworKyAgICBpZiAoaWNv bi53aWR0aCA9PSAwIHx8IGljb24ud2lkdGggPiA0MDk2KQorKyAgICAgICAgcmV0dXJuIGZhbHNl OworICAgICByZXR1cm4gdHJ1ZTsKKyB9CisgCitAQCAtNjg1LDcgKzY5Miw3IEBAIGJvb2wgUUlD TlNIYW5kbGVyOjpjYW5SZWFkKCkgY29uc3QKKyBib29sIFFJQ05TSGFuZGxlcjo6cmVhZChRSW1h Z2UgKm91dEltYWdlKQorIHsKKyAgICAgUUltYWdlIGltZzsKKy0gICAgaWYgKCFlbnN1cmVTY2Fu bmVkKCkpIHsKKysgICAgaWYgKCFlbnN1cmVTY2FubmVkKCkgfHwgbV9jdXJyZW50SWNvbkluZGV4 ID49IG1faWNvbnMuc2l6ZSgpKSB7CisgICAgICAgICBxV2FybmluZygiUUlDTlNIYW5kbGVyOjpy ZWFkKCk6IFRoZSBkZXZpY2Ugd2Fzbid0IHBhcnNlZCBwcm9wZXJseSEiKTsKKyAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgfQorQEAgLTg5Miw3ICs4OTksNyBAQCBib29sIFFJQ05TSGFuZGxl cjo6c2NhbkRldmljZSgpCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgICAgICAg Y29uc3QgcWludDY0IGJsb2NrRGF0YU9mZnNldCA9IGRldmljZSgpLT5wb3MoKTsKKy0gICAgICAg IGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGJsb2NrSGVhZGVyKSkgeworKyAgICAgICAgaWYgKCFp c0Jsb2NrSGVhZGVyVmFsaWQoYmxvY2tIZWFkZXIsIElDTlNCbG9ja0hlYWRlclNpemUgKyBmaWxl bGVuZ3RoIC0gYmxvY2tEYXRhT2Zmc2V0KSkgeworICAgICAgICAgICAgIHFXYXJuaW5nKCJRSUNO U0hhbmRsZXI6OnNjYW5EZXZpY2UoKTogRmFpbGVkLCBiYWQgaGVhZGVyIGF0IHBvcyAlcy4gT1NU eXBlIFwiJXNcIiwgbGVuZ3RoICV1IiwKKyAgICAgICAgICAgICAgICAgICAgICBRQnl0ZUFycmF5 OjpudW1iZXIoYmxvY2tEYXRhT2Zmc2V0KS5jb25zdERhdGEoKSwKKyAgICAgICAgICAgICAgICAg ICAgICBuYW1lRnJvbU9TVHlwZShibG9ja0hlYWRlci5vc3R5cGUpLmNvbnN0RGF0YSgpLCBibG9j a0hlYWRlci5sZW5ndGgpOworQEAgLTkyNywxMSArOTM0LDE0IEBAIGJvb2wgUUlDTlNIYW5kbGVy OjpzY2FuRGV2aWNlKCkKKyAgICAgICAgIGNhc2UgSUNOU0Jsb2NrSGVhZGVyOjpUeXBlT2RycDoK KyAgICAgICAgICAgICAvLyBJY25zIGNvbnRhaW5lciBzZWVtcyB0byBoYXZlIGFuIGVtYmVkZGVk IGljb24gdmFyaWFudCBjb250YWluZXIKKyAgICAgICAgICAgICAvLyBMZXQncyBzdGFydCBhIHNj YW4gZm9yIGVudHJpZXMKKy0gICAgICAgICAgICB3aGlsZSAoZGV2aWNlKCktPnBvcygpIDwgbmV4 dEJsb2NrT2Zmc2V0KSB7CisrICAgICAgICAgICAgd2hpbGUgKCFzdHJlYW0uYXRFbmQoKSAmJiBk ZXZpY2UoKS0+cG9zKCkgPCBuZXh0QmxvY2tPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgSUNO U0Jsb2NrSGVhZGVyIGljb247CisgICAgICAgICAgICAgICAgIHN0cmVhbSA+PiBpY29uOworKyAg ICAgICAgICAgICAgICBpZiAoc3RyZWFtLnN0YXR1cygpICE9IFFEYXRhU3RyZWFtOjpPaykKKysg ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgLy8gQ2hl Y2sgZm9yIGluY29ycmVjdCB2YXJpYW50IGVudHJ5IGhlYWRlciBhbmQgc3RvcCBzY2FuCistICAg ICAgICAgICAgICAgIGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGljb24sIGJsb2NrRGF0YUxlbmd0 aCkpCisrICAgICAgICAgICAgICAgIHF1aW50NjQgcmVtYWluaW5nID0gYmxvY2tEYXRhTGVuZ3Ro IC0gKGRldmljZSgpLT5wb3MoKSAtIGJsb2NrRGF0YU9mZnNldCk7CisrICAgICAgICAgICAgICAg IGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGljb24sIElDTlNCbG9ja0hlYWRlclNpemUgKyByZW1h aW5pbmcpKQorICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIGlm ICghYWRkRW50cnkoaWNvbiwgZGV2aWNlKCktPnBvcygpLCBibG9ja0hlYWRlci5vc3R5cGUpKQor ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTEwMDMsNyArMTAxMyw3IEBA IGJvb2wgUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCkKKyAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgIH0KKyAgICAgfQorLSAgICByZXR1cm4gdHJ1ZTsKKysgICAgcmV0dXJuIChtX2ljb25z LnNpemUoKSA+IDApOworIH0KKyAKKyBjb25zdCBJQ05TRW50cnkgJlFJQ05TSGFuZGxlcjo6Z2V0 SWNvbk1hc2soY29uc3QgSUNOU0VudHJ5ICZpY29uKSBjb25zdAorZGlmZiAtLWdpdCBhL3F0aW1h Z2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIvcWpwMmhhbmRsZXIuY3BwIGIv cXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxlci5j cHAKK2luZGV4IDUwODIwMjMuLmNiMzQzNzQgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9z cmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcAorKysrIGIvcXRpbWFn ZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxlci5jcHAKK0BA IC00Myw2ICs0Myw3IEBACisgI2luY2x1ZGUgInFpbWFnZS5oIgorICNpbmNsdWRlICJxdmFyaWFu dC5oIgorICNpbmNsdWRlICJxY29sb3IuaCIKKysjaW5jbHVkZSAicWltYWdlcmVhZGVyLmgiCisg CisgI2luY2x1ZGUgPGphc3Blci9qYXNwZXIuaD4KKyAjaW5jbHVkZSA8bWF0aC5oPiAvLyBmb3Ig cG93CitAQCAtMzMzLDE2ICszMzQsNDYgQEAgcHJpdmF0ZToKKyBKcGVnMjAwMEphc3BlclJlYWRl cjo6SnBlZzIwMDBKYXNwZXJSZWFkZXIoUUlPRGV2aWNlICppb2QsIFN1YkZvcm1hdCBmb3JtYXQp CisgICAgIDogamFzcGVyT2sodHJ1ZSksIGlvRGV2aWNlKGlvZCksIGZvcm1hdChmb3JtYXQpLCBo YXNBbHBoYShmYWxzZSkKKyB7CisrI2lmIEpBU19WRVJTSU9OX01BSk9SIDwgMworICAgICBpZiAo amFzX2luaXQoKSkgeworICAgICAgICAgamFzcGVyT2sgPSBmYWxzZTsKKyAgICAgICAgIHFEZWJ1 ZygiSmFzcGVyIExpYnJhcnkgaW5pdGlhbGl6YXRpb24gZmFpbGVkIik7CisgICAgIH0KKysjZWxz ZQorKyAgICBqYXNfY29uZl9jbGVhcigpOworKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05f Q0hFQ0soNiwgMCwgMCkKKysgICAgamFzX2NvbmZfc2V0X21heF9tZW1fdXNhZ2UoUUltYWdlUmVh ZGVyOjphbGxvY2F0aW9uTGltaXQoKSAqIDEwMjQgKiAxMDI0KTsKKysjZWxzZQorKyAgICAvLyAx MjhNQiBzZWVtcyB0byBiZSBlbm91Z2guCisrICAgIGphc19jb25mX3NldF9tYXhfbWVtX3VzYWdl KDEyOCAqIDEwMjQgKiAxMDI0KTsKKysjZW5kaWYKKysgICAgaWYgKGphc19pbml0X2xpYnJhcnko KSkgeworKyAgICAgICAgamFzcGVyT2sgPSBmYWxzZTsKKysgICAgICAgIHFEZWJ1ZygiSmFzcGVy IGxpYnJhcnkgaW5pdGlhbGl6YXRpb24gZmFpbGVkIik7CisrICAgIH0KKysgICAgaWYgKGphc19p bml0X3RocmVhZCgpKSB7CisrICAgICAgICBqYXNfY2xlYW51cF9saWJyYXJ5KCk7CisrICAgICAg ICBqYXNwZXJPayA9IGZhbHNlOworKyAgICAgICAgcURlYnVnKCJKYXNwZXIgdGhyZWFkIGluaXRp YWxpemF0aW9uIGZhaWxlZCIpOworKyAgICB9CisrI2VuZGlmCisgfQorIAorIEpwZWcyMDAwSmFz cGVyUmVhZGVyOjp+SnBlZzIwMDBKYXNwZXJSZWFkZXIoKQorIHsKKysjaWYgSkFTX1ZFUlNJT05f TUFKT1IgPCAzCisgICAgIGlmIChqYXNwZXJPaykKKyAgICAgICAgIGphc19jbGVhbnVwKCk7Cisr I2Vsc2UKKysgICAgaWYgKGphc3Blck9rKSB7CisrICAgICAgICBpZiAoamFzX2NsZWFudXBfdGhy ZWFkKCkpIHsKKysgICAgICAgICAgICBxRGVidWcoIkphc3BlciB0aHJlYWQgY2xlYW51cCBmYWls ZWQiKTsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChqYXNfY2xlYW51cF9saWJyYXJ5KCkpIHsK KysgICAgICAgICAgICBxRGVidWcoIkphc3BlciBsaWJyYXJ5IGNsZWFudXAgZmFpbGVkIik7Cisr ICAgICAgICB9CisrICAgIH0KKysjZW5kaWYKKyB9CisgCisgLyohIFxpbnRlcm5hbAorQEAgLTg1 Nyw3ICs4ODgsNyBAQCBib29sIEpwZWcyMDAwSmFzcGVyUmVhZGVyOjp3cml0ZShjb25zdCBRSW1h Z2UgJmltYWdlLCBpbnQgcXVhbGl0eSkKKyAgICAgfQorIAorICAgICAvLyBPcGVuIGFuIGVtcHR5 IGphc3BlciBzdHJlYW0gdGhhdCBncm93cyBhdXRvbWF0aWNhbGx5CistICAgIGphc19zdHJlYW1f dCAqIG1lbW9yeV9zdHJlYW0gPSBqYXNfc3RyZWFtX21lbW9wZW4oMCwgLTEpOworKyAgICBqYXNf c3RyZWFtX3QgKiBtZW1vcnlfc3RyZWFtID0gamFzX3N0cmVhbV9tZW1vcGVuKDAsIDApOworIAor ICAgICAvLyBKYXNwZXIgd2FudHMgYSBub24tY29uc3Qgc3RyaW5nLgorICAgICBjaGFyICpzdHIg PSBxc3RyZHVwKGphc3BlckZvcm1hdFN0cmluZy50b0xhdGluMSgpLmNvbnN0RGF0YSgpKTsKK2Rp ZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9x dGlmZmhhbmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRz L3RpZmYvcXRpZmZoYW5kbGVyLmNwcAoraW5kZXggMTM4Njc1MC4uYWM4OTU2YyAxMDA2NDQKKy0t LSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZmaGFu ZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90 aWZmL3F0aWZmaGFuZGxlci5jcHAKK0BAIC0zNjEsNiArMzYxLDggQEAgYm9vbCBRVGlmZkhhbmRs ZXI6OnJlYWQoUUltYWdlICppbWFnZSkKKyAgICAgfQorIAorICAgICBUSUZGICpjb25zdCB0aWZm ID0gZC0+dGlmZjsKKysgICAgaWYgKFRJRkZJc1RpbGVkKHRpZmYpICYmIFRJRkZUaWxlU2l6ZTY0 KHRpZmYpID4gdWludDY0X3QoaW1hZ2UtPnNpemVJbkJ5dGVzKCkpKSAvLyBDb3JydXB0IGltYWdl CisrICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIGNvbnN0IHF1aW50MzIgd2lkdGggPSBkLT5z aXplLndpZHRoKCk7CisgICAgIGNvbnN0IHF1aW50MzIgaGVpZ2h0ID0gZC0+c2l6ZS5oZWlnaHQo KTsKKyAKK2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1h dHMvd2VicC9xd2VicGhhbmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1h Z2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcAoraW5kZXggODJkMzhjYi4uZDAyZWIwNSAx MDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJw L3F3ZWJwaGFuZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdl Zm9ybWF0cy93ZWJwL3F3ZWJwaGFuZGxlci5jcHAKK0BAIC00NSw2ICs0NSw3IEBACisgI2luY2x1 ZGUgPHFkZWJ1Zy5oPgorICNpbmNsdWRlIDxxcGFpbnRlci5oPgorICNpbmNsdWRlIDxxdmFyaWFu dC5oPgorKyNpbmNsdWRlIDxRdEVuZGlhbj4KKyAKKyBzdGF0aWMgY29uc3QgaW50IHJpZmZIZWFk ZXJTaXplID0gMTI7IC8vIFJJRkZfSEVBREVSX1NJWkUgZnJvbSB3ZWJwL2Zvcm1hdF9jb25zdGFu dHMuaAorIAorQEAgLTEwMiwyMSArMTAzLDIzIEBAIGJvb2wgUVdlYnBIYW5kbGVyOjplbnN1cmVT Y2FubmVkKCkgY29uc3QKKyAKKyAgICAgbV9zY2FuU3RhdGUgPSBTY2FuRXJyb3I7CisgCistICAg IGlmIChkZXZpY2UoKS0+aXNTZXF1ZW50aWFsKCkpIHsKKy0gICAgICAgIHFXYXJuaW5nKCkgPDwg IlNlcXVlbnRpYWwgZGV2aWNlcyBhcmUgbm90IHN1cHBvcnRlZCI7CisrICAgIFFXZWJwSGFuZGxl ciAqdGhhdCA9IGNvbnN0X2Nhc3Q8UVdlYnBIYW5kbGVyICo+KHRoaXMpOworKyAgICBjb25zdCBp bnQgaGVhZGVyQnl0ZXNOZWVkZWQgPSBzaXplb2YoV2ViUEJpdHN0cmVhbUZlYXR1cmVzKTsKKysg ICAgUUJ5dGVBcnJheSBoZWFkZXIgPSBkZXZpY2UoKS0+cGVlayhoZWFkZXJCeXRlc05lZWRlZCk7 CisrICAgIGlmIChoZWFkZXIuc2l6ZSgpIDwgaGVhZGVyQnl0ZXNOZWVkZWQpCisgICAgICAgICBy ZXR1cm4gZmFsc2U7CistICAgIH0KKyAKKy0gICAgcWludDY0IG9sZFBvcyA9IGRldmljZSgpLT5w b3MoKTsKKy0gICAgZGV2aWNlKCktPnNlZWsoMCk7CistCistICAgIFFXZWJwSGFuZGxlciAqdGhh dCA9IGNvbnN0X2Nhc3Q8UVdlYnBIYW5kbGVyICo+KHRoaXMpOworLSAgICBRQnl0ZUFycmF5IGhl YWRlciA9IGRldmljZSgpLT5wZWVrKHNpemVvZihXZWJQQml0c3RyZWFtRmVhdHVyZXMpKTsKKysg ICAgLy8gV2UgZG8gbm8gcmFuZG9tIGFjY2VzcyBkdXJpbmcgZGVjb2RpbmcsIGp1c3QgYSByZWFk QWxsKCkgb2YgdGhlIHdob2xlIGltYWdlIGZpbGUuIFNvIGlmCisrICAgIC8vIGlmIGl0IGlzIGFs bCBhdmFpbGFibGUgYWxyZWFkeSwgd2UgY2FuIGFjY2VwdCBhIHNlcXVlbnRpYWwgZGV2aWNlLiBU aGUgcmlmZiBoZWFkZXIgY29udGFpbnMKKysgICAgLy8gdGhlIGZpbGUgc2l6ZSBtaW51cyA4IGJ5 dGVzIGhlYWRlcgorKyAgICBxaW50NjQgYnl0ZVNpemUgPSBxRnJvbUxpdHRsZUVuZGlhbjxxdWlu dDMyPihoZWFkZXIuY29uc3REYXRhKCkgKyA0KTsKKysgICAgaWYgKGRldmljZSgpLT5pc1NlcXVl bnRpYWwoKSAmJiBkZXZpY2UoKS0+Ynl0ZXNBdmFpbGFibGUoKSA8IGJ5dGVTaXplICsgOCkgewor KyAgICAgICAgcVdhcm5pbmcoKSA8PCAiUVdlYnBIYW5kbGVyOiBJbnN1ZmZpY2llbnQgZGF0YSBh dmFpbGFibGUgaW4gc2VxdWVudGlhbCBkZXZpY2UiOworKyAgICAgICAgcmV0dXJuIGZhbHNlOwor KyAgICB9CisgICAgIGlmIChXZWJQR2V0RmVhdHVyZXMoKGNvbnN0IHVpbnQ4X3QqKWhlYWRlci5j b25zdERhdGEoKSwgaGVhZGVyLnNpemUoKSwgJih0aGF0LT5tX2ZlYXR1cmVzKSkgPT0gVlA4X1NU QVRVU19PSykgeworICAgICAgICAgaWYgKG1fZmVhdHVyZXMuaGFzX2FuaW1hdGlvbikgeworICAg ICAgICAgICAgIC8vIEZvciBhbmltYXRpb24sIHdlIGhhdmUgdG8gcmVhZCBhbmQgc2NhbiB3aG9s ZSBmaWxlIHRvIGRldGVybWluZSBsb29wIGNvdW50IGFuZCBpbWFnZXMgY291bnQKKy0gICAgICAg ICAgICBkZXZpY2UoKS0+c2VlayhvbGRQb3MpOworLQorICAgICAgICAgICAgIGlmICh0aGF0LT5l bnN1cmVEZW11eGVyKCkpIHsKKyAgICAgICAgICAgICAgICAgdGhhdC0+bV9sb29wID0gV2ViUERl bXV4R2V0SShtX2RlbXV4ZXIsIFdFQlBfRkZfTE9PUF9DT1VOVCk7CisgICAgICAgICAgICAgICAg IHRoYXQtPm1fZnJhbWVDb3VudCA9IFdlYlBEZW11eEdldEkobV9kZW11eGVyLCBXRUJQX0ZGX0ZS QU1FX0NPVU5UKTsKK0BAIC0xMjYsMTcgKzEyOSwxMyBAQCBib29sIFFXZWJwSGFuZGxlcjo6ZW5z dXJlU2Nhbm5lZCgpIGNvbnN0CisgICAgICAgICAgICAgICAgIGlmICh0aGF0LT5tX2ZlYXR1cmVz Lmhhc19hbHBoYSkKKyAgICAgICAgICAgICAgICAgICAgIHRoYXQtPm1fY29tcG9zaXRlZC0+Zmls bChRdDo6dHJhbnNwYXJlbnQpOworIAorLSAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3QgcmVz ZXQgZGV2aWNlIHBvc2l0aW9uIHNpbmNlIHdlIGhhdmUgcmVhZCBpbiBhbGwgZGF0YQorICAgICAg ICAgICAgICAgICBtX3NjYW5TdGF0ZSA9IFNjYW5TdWNjZXNzOworLSAgICAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgIG1fc2NhblN0YXRlID0gU2NhblN1Y2Nlc3M7CisgICAgICAgICB9CisgICAgIH0KKyAKKy0g ICAgZGV2aWNlKCktPnNlZWsob2xkUG9zKTsKKy0KKyAgICAgcmV0dXJuIG1fc2NhblN0YXRlID09 IFNjYW5TdWNjZXNzOworIH0KKyAKK0BAIC0xNTksNyArMTU4LDcgQEAgYm9vbCBRV2VicEhhbmRs ZXI6OmVuc3VyZURlbXV4ZXIoKQorIAorIGJvb2wgUVdlYnBIYW5kbGVyOjpyZWFkKFFJbWFnZSAq aW1hZ2UpCisgeworLSAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSB8fCBkZXZpY2UoKS0+aXNTZXF1 ZW50aWFsKCkgfHwgIWVuc3VyZURlbXV4ZXIoKSkKKysgICAgaWYgKCFlbnN1cmVTY2FubmVkKCkg fHwgIWVuc3VyZURlbXV4ZXIoKSkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAKKyAgICAgUVJl Y3QgcHJldkZyYW1lUmVjdDsKK1N1Ym1vZHVsZSBxdGxvY2F0aW9uIDk4YTVjNTExLi5mOTkxZTI4 YzoKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1cmUuanNvbiBi L3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29uCitpbmRleCA2ZDAxYTlhMy4u ZDFlNjIzYTEgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1cmUu anNvbgorKysrIGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vY29uZmlndXJlLmpzb24KK0BAIC05 LDcgKzksNyBAQAorICAgICAgICAgICAgICJsYWJlbCI6ICJRdC5sYWJzLmxvY2F0aW9uIGV4cGVy aW1lbnRhbCBRTUwgcGx1Z2luIiwKKyAgICAgICAgICAgICAicHVycG9zZSI6ICJQcm92aWRlcyBl eHBlcmltZW50YWwgUXRMb2NhdGlvbiBRTUwgdHlwZXMiLAorICAgICAgICAgICAgICJzZWN0aW9u IjogIkxvY2F0aW9uIiwKKy0gICAgICAgICAgICAiY29uZGl0aW9uIjogImNvbmZpZy5vcGVuZ2wi LAorKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiZmVhdHVyZXMub3BlbmdsIiwKKyAgICAgICAg ICAgICAib3V0cHV0IjogWyAicHJpdmF0ZUZlYXR1cmUiIF0KKyAgICAgICAgIH0sCisgICAgICAg ICAiZ2Vvc2VydmljZXNfb3NtIjogeworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL2xvY2F0 aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNwcCBiL3F0bG9jYXRpb24vc3Jj L2xvY2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNwcAoraW5kZXggYTk3 ODU3M2QuLjExZTE0NjZmIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFi cy9xc2cvcWdlb21hcG9iamVjdHFzZ3N1cHBvcnQuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9s b2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9ydC5jcHAKK0BAIC0xNTgsNyAr MTU4LDcgQEAgdm9pZCBRR2VvTWFwT2JqZWN0UVNHU3VwcG9ydDo6dXBkYXRlTWFwT2JqZWN0cyhR U0dOb2RlICpyb290LCBRUXVpY2tXaW5kb3cgKndpbmQKKyAgICAgaWYgKCFyb290KQorICAgICAg ICAgcmV0dXJuOworIAorLSAgICBpZiAobV9tYXBPYmplY3RzUm9vdE5vZGUgJiYgbV9tYXBPYmpl Y3RzUm9vdE5vZGUtPnBhcmVudCgpKQorKyAgICBpZiAobV9tYXBPYmplY3RzUm9vdE5vZGUgJiYg IW1fbWFwT2JqZWN0c1Jvb3ROb2RlLT5wYXJlbnQoKSkKKyAgICAgICAgIHJvb3QtPmFwcGVuZENo aWxkTm9kZShtX21hcE9iamVjdHNSb290Tm9kZS5nZXQoKSk7CisgCisgICAgIGlmICghbV9tYXBP YmplY3RzUm9vdE5vZGUpIHsKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dl b3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9jYXRp b24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2Vz cmkuY3BwCitpbmRleCA1YTQwNDY3ZS4uZDEyM2M2YTggMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9u L3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9lc3Jp LmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2Nv ZGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK0BAIC01OSw4ICs1OSwxMCBAQCBRVF9CRUdJTl9O QU1FU1BBQ0UKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrUHJlZml4RXNyaShRU3RyaW5nTGl0ZXJh bCgiZXNyaS4iKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1BhcmFtVXNlckFnZW50KGtQcmVm aXhFc3JpICsgUVN0cmluZ0xpdGVyYWwoInVzZXJhZ2VudCIpKTsKKyAKKy1zdGF0aWMgY29uc3Qg UVN0cmluZyBrVXJsR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgiaHR0cDovL2dlb2NvZGUuYXJjZ2lz LmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNz Q2FuZGlkYXRlcyIpKTsKKy1zdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUmV2ZXJzZUdlb2NvZGUo UVN0cmluZ0xpdGVyYWwoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2Vy dmljZXMvV29ybGQvR2VvY29kZVNlcnZlci9yZXZlcnNlR2VvY29kZSIpKTsKKytzdGF0aWMgY29u c3QgUVN0cmluZyBrVXJsR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgiaHR0cHM6Ly9nZW9jb2RlLmFy Y2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvIgorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJXb3JsZC9HZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNz Q2FuZGlkYXRlcyIpKTsKKytzdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUmV2ZXJzZUdlb2NvZGUo UVN0cmluZ0xpdGVyYWwoCisrICAgICAgICAiaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJj Z2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlci9yZXZlcnNlR2VvY29kZSIpKTsK KyAKKyBzdGF0aWMgUVN0cmluZyBhZGRyZXNzVG9RdWVyeShjb25zdCBRR2VvQWRkcmVzcyAmYWRk cmVzcykKKyB7CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNl cy9lc3JpL2dlb3JvdXRlanNvbnBhcnNlcl9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdp bnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5jcHAKK2luZGV4IDE3 NDkyZDk0Li45NmMxMmIxYiAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vv c2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRp b24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5j cHAKK0BAIC00Niw3ICs0Niw4IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCistLy8gSlNP TiByZWZlcmVuY2U6IGh0dHA6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1y ZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRpb24vMDJyMzAw MDAwMDM2MDAwMDAwLworKy8vIEpTT04gcmVmZXJlbmNlOgorKy8vIGh0dHBzOi8vcmVzb3VyY2Vz LmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhf c3luY2hyb25vdXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKyAKKyBzdGF0aWMgY29u c3QgUVN0cmluZyBrRXJyb3JNZXNzYWdlKFFTdHJpbmdMaXRlcmFsKCJFcnJvciAlMTogJTIuIikp OworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtFcnJvckpzb24oUVN0cmluZ0xpdGVyYWwoIkVycm9y OiBpbnZhbGlkZSBKU09OIGRvY3VtZW50LiIpKTsKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3Ny Yy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcCBiL3F0bG9j YXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZXJlcGx5X2VzcmkuY3Bw CitpbmRleCA4Y2FkZmIyOS4uOTJiNmJiMTMgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9w bHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcAorKysrIGIvcXRs b2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5j cHAKK0BAIC00NCw3ICs0NCw4IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCistLy8gSlNP TiByZWZlcmVuY2U6IGh0dHA6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1y ZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRpb24vMDJyMzAw MDAwMDM2MDAwMDAwLworKy8vIEpTT04gcmVmZXJlbmNlOgorKy8vIGh0dHBzOi8vcmVzb3VyY2Vz LmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhf c3luY2hyb25vdXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKyAKKyBHZW9Sb3V0ZVJl cGx5RXNyaTo6R2VvUm91dGVSZXBseUVzcmkoUU5ldHdvcmtSZXBseSAqcmVwbHksIGNvbnN0IFFH ZW9Sb3V0ZVJlcXVlc3QgJnJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFPYmplY3QgKnBhcmVudCkgOgorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3Bs dWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBi L3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5nbWFuYWdl cmVuZ2luZV9lc3JpLmNwcAoraW5kZXggMGU2YmMyYzcuLmVkNjEzZjRiIDEwMDY0NAorLS0tIGEv cXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2Vy ZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2Vz L2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK0BAIC00OCw3ICs0OCw4IEBA IHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQcmVmaXhFc3JpKFFTdHJpbmdMaXRlcmFsKCJlc3JpLiIp KTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrUGFyYW1Vc2VyQWdlbnQoa1ByZWZpeEVzcmkgKyBR U3RyaW5nTGl0ZXJhbCgidXNlcmFnZW50IikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQYXJh bVRva2VuKGtQcmVmaXhFc3JpICsgUVN0cmluZ0xpdGVyYWwoInRva2VuIikpOworIAorLXN0YXRp YyBjb25zdCBRU3RyaW5nIGtVcmxSb3V0aW5nKFFTdHJpbmdMaXRlcmFsKCJodHRwOi8vcm91dGUu YXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9Sb3V0ZS9OQVNlcnZlci9Sb3V0 ZV9Xb3JsZC9zb2x2ZSIpKTsKKytzdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUm91dGluZyhRU3Ry aW5nTGl0ZXJhbCgKKysgICAgICAgICJodHRwczovL3JvdXRlLmFyY2dpcy5jb20vYXJjZ2lzL3Jl c3Qvc2VydmljZXMvV29ybGQvUm91dGUvTkFTZXJ2ZXIvUm91dGVfV29ybGQvc29sdmUiKSk7Cisg CisgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVz cmkoY29uc3QgUVZhcmlhbnRNYXAgJnBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUdlb1NlcnZpY2VQcm92aWRlcjo6 RXJyb3IgKmVycm9yLAorQEAgLTcwLDcgKzcxLDggQEAgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVF c3JpOjp+R2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpKCkKKyB7CisgfQorIAorLS8vIFJFU1Qg cmVmZXJlbmNlOiBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVz dC1hcGkvaW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorKy8vIFJFU1QgcmVmZXJlbmNl OgorKy8vIGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1h cGkvaW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorIAorIFFHZW9Sb3V0ZVJlcGx5ICpH ZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6OmNhbGN1bGF0ZVJvdXRlKGNvbnN0IFFHZW9Sb3V0 ZVJlcXVlc3QgJnJlcXVlc3QpCisgeworQEAgLTEyNSw3ICsxMjcsNyBAQCB2b2lkIEdlb1JvdXRp bmdNYW5hZ2VyRW5naW5lRXNyaTo6cmVwbHlFcnJvcihRR2VvUm91dGVSZXBseTo6RXJyb3IgZXJy b3JDb2RlLCBjbworIFFTdHJpbmcgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpwcmVmZXJl ZERpcmVjdGlvbkxhbmdhZ2UoKQorIHsKKyAgICAgLy8gbGlzdCBvZiBzdXBwb3J0ZWQgbGFuZ2Fn ZXMgaXMgZGVmaW5lZCBpbjoKKy0gICAgLy8gaHR0cDovL3Jlc291cmNlcy5hcmNnaXMuY29tL2Vu L2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYwMDAwMDAKKysg ICAgLy8gaHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFw aS9pbmRleC5odG1sIy8vMDJyMzAwMDAwMDM2MDAwMDAwCisgICAgIGNvbnN0IFFTdHJpbmdMaXN0 IHN1cHBvcnRlZExhbmd1YWdlcyA9IHsKKyAgICAgICAgICJhciIsIC8vIEdlbmVyYXRlIGRpcmVj dGlvbnMgaW4gQXJhYmljCisgICAgICAgICAiY3MiLCAvLyBHZW5lcmF0ZSBkaXJlY3Rpb25zIGlu IEN6ZWNoCitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9l c3JpL2dlb3RpbGVkbWFwcGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3Ny Yy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2luZV9l c3JpLmNwcAoraW5kZXggNWQxNTgzNWQuLjI0MTQ4Zjk1IDEwMDY0NAorLS0tIGEvcXRsb2NhdGlv bi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGluZ21hbmFnZXJlbmdp bmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNy aS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtMjMwLDcgKzIzMCw4 IEBAIFFHZW9NYXAgKkdlb1RpbGVkTWFwcGluZ01hbmFnZXJFbmdpbmVFc3JpOjpjcmVhdGVNYXAo KQorIC8vICR7eX0gPSBZCisgLy8gJHt0b2tlbn0gPSBUb2tlbgorIAorLS8vIHRlbXBsYXRlID0g J2h0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dv cmxkX1RvcG9fTWFwL01hcFNlcnZlci90aWxlL3t7en19L3t7eX19L3t7eH19LnBuZycKKysvLyB0 ZW1wbGF0ZSA9CisrLy8gJ2h0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMv cmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2ZXIvdGlsZS97e3p9fS97e3l9fS97 e3h9fS5wbmcnCisgCisgYm9vbCBHZW9UaWxlZE1hcHBpbmdNYW5hZ2VyRW5naW5lRXNyaTo6aW5p dGlhbGl6ZU1hcFNvdXJjZXMoUUdlb1NlcnZpY2VQcm92aWRlcjo6RXJyb3IgKmVycm9yLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFTdHJpbmcgKmVycm9yU3RyaW5nLAorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdp bnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24gYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dl b3NlcnZpY2VzL2VzcmkvbWFwcy5qc29uCitpbmRleCA4MTY3YWU3ZC4uODYyZTA4N2QgMTAwNjQ0 CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5qc29u CisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5qc29u CitAQCAtNiw4ICs2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXJjR0lTIE9u bGluZSBXb3JsZCBTdHJlZXQgTWFwIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwKKyAg ICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9z ZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1N0cmVl dF9NYXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsg PGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTNiOTMzMzc5 ODNlOTQzNmY4ZGI5NTBlMzhhODYyOWFmJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAg ICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jl c3Qvc2VydmljZXMvV29ybGRfU3RyZWV0X01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJj b3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hv bWUvaXRlbS5odG1sP2lkPTNiOTMzMzc5ODNlOTQzNmY4ZGI5NTBlMzhhODYyOWFmJz5Fc3JpPC9h PiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTE2LDggKzE2 LDggQEAKKyAgICAgICAgICAgICAiIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgSW1hZ2VyeSIsCisg ICAgICAgICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2Us CistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJj R0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfSW1hZ2VyeS9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAg ICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20v aG9tZS9pdGVtLmh0bWw/aWQ9MTBkZjIyNzlmOTY4NGU0YTlmNmE3ZjA4ZmViYWMyYTknPkVzcmk8 L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFy Y2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfSW1hZ2VyeS9NYXBTZXJ2 ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRw czovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTEwZGYyMjc5Zjk2ODRlNGE5ZjZh N2YwOGZlYmFjMmE5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAg ICAgICAgeworQEAgLTI2LDggKzI2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi QXJjR0lTIE9ubGluZSBXb3JsZCBUZXJyYWluIEJhc2UiLAorICAgICAgICAgICAgICJtb2JpbGUi OiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJs IjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9X b3JsZF9UZXJyYWluX0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4 dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1s P2lkPWM2MWFkOGFiMDE3ZDQ5ZTFhODJmNTgwZWUxMjk4OTMxJz5Fc3JpPC9hPiBjb250cmlidXRv cnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29t L0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RlcnJhaW5fQmFzZS9NYXBTZXJ2ZXIiLAorKyAg ICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5h cmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWM2MWFkOGFiMDE3ZDQ5ZTFhODJmNTgwZWUxMjk4 OTMxJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgewor QEAgLTM2LDggKzM2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXJjR0lTIE9u bGluZSBXb3JsZCBUb3BvZ3JhcGh5IiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwKKyAg ICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9z ZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01h cC9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBo cmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MzBlNWZlMzE0OWMz NGRmMWJhOTIyZTZmNWJiZjgwOGYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAg ICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2Vy dmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0 VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0u aHRtbD9pZD0zMGU1ZmUzMTQ5YzM0ZGYxYmE5MjJlNmY1YmJmODA4Zic+RXNyaTwvYT4gY29udHJp YnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC00Niw4ICs0Niw4IEBACisg ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgbWFwIHByZXNlbnRzIGxhbmQgY292ZXIg YW5kIGRldGFpbGVkIHRvcG9ncmFwaGljIG1hcHMgZm9yIHRoZSBVbml0ZWQgU3RhdGVzLiIsCisg ICAgICAgICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2Us CistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9B cmNHSVMvcmVzdC9zZXJ2aWNlcy9VU0FfVG9wb19NYXBzL01hcFNlcnZlciIsCistICAgICAgICAg ICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNv bS9ob21lL2l0ZW0uaHRtbD9pZD05OWNkNWZiZDk4OTM0MDI4ODAyYjRmNzk3YzRiMTczMic+RXNy aTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNl cy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1VTQV9Ub3BvX01hcHMvTWFw U2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0n aHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD05OWNkNWZiZDk4OTM0MDI4 ODAyYjRmNzk3YzRiMTczMic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAK KyAgICAgICAgIHsKK0BAIC01Niw4ICs1Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9u IjogIk5hdGlvbmFsIEdlb2dyYXBoaWMgV29ybGQgTWFwIiwKKyAgICAgICAgICAgICAibW9iaWxl IjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVy bCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNl cy9OYXRHZW9fV29ybGRfTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRl eHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRt bD9pZD1iOWIxYjQyMjE5ODk0NGZiYmQ1MjUwYjMyNDE2OTFiNic+RXNyaTwvYT4gY29udHJpYnV0 b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUu Y29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL05hdEdlb19Xb3JsZF9NYXAvTWFwU2VydmVyIiwKKysg ICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cu YXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1iOWIxYjQyMjE5ODk0NGZiYmQ1MjUwYjMyNDE2 OTFiNic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsK K0BAIC02Niw4ICs2Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZW1hdGlj IGNvbnRlbnQgcHJvdmlkaW5nIGEgbmV1dHJhbCBiYWNrZ3JvdW5kIHdpdGggbWluaW1hbCBjb2xv cnMiLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6 IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGlu ZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0xpZ2h0X0dyYXlfQmFzZS9N YXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVm PSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9ZWQ3MTJjYjFkYjNlNGJh ZTllODUzMjkwNDBmYjlhNDknPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAi dXJsIjogImh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2 aWNlcy9DYW52YXMvV29ybGRfTGlnaHRfR3JheV9CYXNlL01hcFNlcnZlciIsCisrICAgICAgICAg ICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5j b20vaG9tZS9pdGVtLmh0bWw/aWQ9ZWQ3MTJjYjFkYjNlNGJhZTllODUzMjkwNDBmYjlhNDknPkVz cmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtNzYs OCArNzYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJOYXR1cmFsIEVhcnRoIHBo eXNpY2FsIG1hcCBmb3IgdGhlIHdvcmxkIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2Us CisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRw Oi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfUGh5 c2ljYWxfTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNv cHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1jNGVj NzIyYTFjZDM0Y2YwYTIzOTA0YWFkZjg5MjNhMCc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAg ICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMv cmVzdC9zZXJ2aWNlcy9Xb3JsZF9QaHlzaWNhbF9NYXAvTWFwU2VydmVyIiwKKysgICAgICAgICAg ICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNv bS9ob21lL2l0ZW0uaHRtbD9pZD1jNGVjNzIyYTFjZDM0Y2YwYTIzOTA0YWFkZjg5MjNhMCc+RXNy aTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC04Niw4 ICs4Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBvcnRyYXlzIHN1cmZhY2Ug ZWxldmF0aW9uIGFzIHNoYWRlZCByZWxpZWYiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxz ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0 dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9T aGFkZWRfUmVsaWVmL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAi JmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD05 YzUzNzBkMGI1NGY0ZGUxYjQ4YTM3OTJkNzM3N2ZmMic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgor KyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNH SVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9TaGFkZWRfUmVsaWVmL01hcFNlcnZlciIsCisrICAgICAg ICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dp cy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9OWM1MzcwZDBiNTRmNGRlMWI0OGEzNzkyZDczNzdmZjIn PkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAt OTYsOCArOTYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIG1hcCBpcyBk ZXNpZ25lZCB0byBiZSB1c2VkIGFzIGEgYmFzZW1hcCBieSBtYXJpbmUgR0lTIHByb2Zlc3Npb25h bHMgYW5kIGFzIGEgcmVmZXJlbmNlIG1hcCBieSBhbnlvbmUgaW50ZXJlc3RlZCBpbiBvY2VhbiBk YXRhIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0 IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGlu ZS5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvT2NlYW4vV29ybGRfT2NlYW5fQmFzZS9NYXBTZXJ2 ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRw Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MWUxMjZlNzUyMGY5NDY2YzljYTI4 YjhmMjhiNWU1MDAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjog Imh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvT2Nl YW4vV29ybGRfT2NlYW5fQmFzZS9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRU ZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5o dG1sP2lkPTFlMTI2ZTc1MjBmOTQ2NmM5Y2EyOGI4ZjI4YjVlNTAwJz5Fc3JpPC9hPiBjb250cmli dXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTEwNiw4ICsxMDYsOCBAQAor ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGVtYXRpYyBjb250ZW50IHByb3ZpZGluZyBh IG5ldXRyYWwgYmFja2dyb3VuZCB3aXRoIG1pbmltYWwgY29sb3JzIiwKKyAgICAgICAgICAgICAi bW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogdHJ1ZSwKKy0gICAgICAgICAg ICAidXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3Nl cnZpY2VzL0NhbnZhcy9Xb3JsZF9EYXJrX0dyYXlfQmFzZS9NYXBTZXJ2ZXIiLAorLSAgICAgICAg ICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5j b20vaG9tZS9pdGVtLmh0bWw/aWQ9YTI4NGE5Yjk5YjM0NDZhMzkxMGQ0MTQ0YTUwOTkwZjYnPkVz cmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2Vydmlj ZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9DYW52YXMvV29ybGRfRGFy a19HcmF5X0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICIm Y29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1h Mjg0YTliOTliMzQ0NmEzOTEwZDQxNDRhNTA5OTBmNic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgor ICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0xMTYsOCArMTE2LDggQEAKKyAgICAgICAg ICAgICAiZGVzY3JpcHRpb24iOiAiRGVMb3JtZeKAmXMgdG9wb2dyYXBoaWMgYmFzZW1hcCBpcyBh IHNlYW1sZXNzIGdsb2JhbCBkYXRhIHNldCB0aGF0IHBvcnRyYXlzIHRyYW5zcG9ydGF0aW9uLCBo eWRyb2dyYXBoeSwganVyaXNkaWN0aW9uIGJvdW5kYXJpZXMsIGFuZCBtYWpvciBnZW9ncmFwaGlj IGZlYXR1cmVzIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAg Im5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dp c29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvU3BlY2lhbHR5L0RlTG9ybWVfV29ybGRf QmFzZV9NYXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29w eTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWIxNjVj M2RmNDUzZTRiZTZiNWFjNGZkYjI0MWVmZmJlJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAg ICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9y ZXN0L3NlcnZpY2VzL1NwZWNpYWx0eS9EZUxvcm1lX1dvcmxkX0Jhc2VfTWFwL01hcFNlcnZlciIs CisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8v d3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjE2NWMzZGY0NTNlNGJlNmI1YWM0ZmRi MjQxZWZmYmUnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0KKyAgICAgXQorIH0K K2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxh Y2VtYW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2 aWNlcy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAoraW5kZXggMzg1OGRkZjUuLmFm NjZmMjhlIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9l c3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1 Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorQEAgLTYz LDggKzYzLDEwIEBAIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtDb3VudHJpZXNLZXkoUVN0cmluZ0xp dGVyYWwoImRldGFpbGVkQ291bnRyaWVzIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtMb2Nh bGl6ZWROYW1lc0tleShRU3RyaW5nTGl0ZXJhbCgibG9jYWxpemVkTmFtZXMiKSk7Cisgc3RhdGlj IGNvbnN0IFFTdHJpbmcga01heExvY2F0aW9uc0tleShRU3RyaW5nTGl0ZXJhbCgibWF4TG9jYXRp b25zIikpOworIAorLXN0YXRpYyBjb25zdCBRVXJsIGtVcmxHZW9jb2RlU2VydmVyKCJodHRwOi8v Z2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2 ZXI/Zj1wanNvbiIpOworLXN0YXRpYyBjb25zdCBRVXJsIGtVcmxGaW5kQWRkcmVzc0NhbmRpZGF0 ZXMoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQv R2VvY29kZVNlcnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKTsKKytzdGF0aWMgY29uc3QgUVVy bCBrVXJsR2VvY29kZVNlcnZlcigKKysgICAgICAgICJodHRwczovL2dlb2NvZGUuYXJjZ2lzLmNv bS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyP2Y9cGpzb24iKTsKKytz dGF0aWMgY29uc3QgUVVybCBrVXJsRmluZEFkZHJlc3NDYW5kaWRhdGVzKCJodHRwczovL2dlb2Nv ZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC8iCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2VvY29kZVNlcnZlci9maW5kQWRkcmVz c0NhbmRpZGF0ZXMiKTsKKyAKKyBQbGFjZU1hbmFnZXJFbmdpbmVFc3JpOjpQbGFjZU1hbmFnZXJF bmdpbmVFc3JpKGNvbnN0IFFWYXJpYW50TWFwICZwYXJhbWV0ZXJzLCBRR2VvU2VydmljZVByb3Zp ZGVyOjpFcnJvciAqZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRU3RyaW5nICplcnJvclN0cmluZykgOgorU3VibW9kdWxlIHF0bXVsdGltZWRp YSBmMDM0NDA3OS4uMGQ3Y2MzM2E6CitkaWZmIC0tZ2l0IGEvcXRtdWx0aW1lZGlhL3NyYy9wbHVn aW5zL3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3BwIGIvcXRtdWx0aW1lZGlhL3NyYy9w bHVnaW5zL3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3BwCitpbmRleCAyYjUzMjUxMzIu LmI2OGI0YWYxYiAxMDA2NDQKKy0tLSBhL3F0bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1 ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNwcAorKysrIGIvcXRtdWx0aW1lZGlhL3NyYy9wbHVnaW5z L3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3BwCitAQCAtNDAyLDYgKzQwMiw4IEBAIGlu dCBRUHVsc2VBdWRpb0lucHV0OjpieXRlc1JlYWR5KCkgY29uc3QKKyAKKyBxaW50NjQgUVB1bHNl QXVkaW9JbnB1dDo6cmVhZChjaGFyICpkYXRhLCBxaW50NjQgbGVuKQorIHsKKysgICAgUV9BU1NF UlQoZGF0YSAhPSBudWxscHRyIHx8IGxlbiA9PSAwKTsKKysKKyAgICAgbV9ieXRlc0F2YWlsYWJs ZSA9IGNoZWNrQnl0ZXNSZWFkeSgpOworIAorICAgICBzZXRFcnJvcihRQXVkaW86Ok5vRXJyb3Ip OworQEAgLTQxMSw3ICs0MTMsOCBAQCBxaW50NjQgUVB1bHNlQXVkaW9JbnB1dDo6cmVhZChjaGFy ICpkYXRhLCBxaW50NjQgbGVuKQorIAorICAgICBpZiAoIW1fcHVsbE1vZGUgJiYgIW1fdGVtcEJ1 ZmZlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgIHJlYWRCeXRlcyA9IHFNaW4oc3RhdGljX2Nhc3Q8 aW50PihsZW4pLCBtX3RlbXBCdWZmZXIuc2l6ZSgpKTsKKy0gICAgICAgIG1lbWNweShkYXRhLCBt X3RlbXBCdWZmZXIuY29uc3REYXRhKCksIHJlYWRCeXRlcyk7CisrICAgICAgICBpZiAocmVhZEJ5 dGVzKQorKyAgICAgICAgICAgIG1lbWNweShkYXRhLCBtX3RlbXBCdWZmZXIuY29uc3REYXRhKCks IHJlYWRCeXRlcyk7CisgICAgICAgICBtX3RvdGFsVGltZVZhbHVlICs9IHJlYWRCeXRlczsKKyAK KyAgICAgICAgIGlmIChyZWFkQnl0ZXMgPCBtX3RlbXBCdWZmZXIuc2l6ZSgpKSB7CitAQCAtNTAy LDkgKzUwNSwxMCBAQCBxaW50NjQgUVB1bHNlQXVkaW9JbnB1dDo6cmVhZChjaGFyICpkYXRhLCBx aW50NjQgbGVuKQorIAorIHZvaWQgUVB1bHNlQXVkaW9JbnB1dDo6YXBwbHlWb2x1bWUoY29uc3Qg dm9pZCAqc3JjLCB2b2lkICpkZXN0LCBpbnQgbGVuKQorIHsKKysgICAgUV9BU1NFUlQoKHNyYyAm JiBkZXN0KSB8fCBsZW4gPT0gMCk7CisgICAgIGlmIChtX3ZvbHVtZSA8IDEuZikKKyAgICAgICAg IFFBdWRpb0hlbHBlckludGVybmFsOjpxTXVsdGlwbHlTYW1wbGVzKG1fdm9sdW1lLCBtX2Zvcm1h dCwgc3JjLCBkZXN0LCBsZW4pOworLSAgICBlbHNlCisrICAgIGVsc2UgaWYgKGxlbikKKyAgICAg ICAgIG1lbWNweShkZXN0LCBzcmMsIGxlbik7CisgfQorIAorU3VibW9kdWxlIHF0cGltIDAyZWZl ZjVlLi4uZjlhOGYwZmMgKGNvbW1pdHMgbm90IHByZXNlbnQpCitTdWJtb2R1bGUgcXRxdWljazNk IGI4NWNmNjIyLi40N2RlZmM4YjoKK2RpZmYgLS1naXQgYS9xdHF1aWNrM2Qvc3JjL3BsdWdpbnMv YXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8gYi9xdHF1aWNrM2Qvc3JjL3BsdWdpbnMv YXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8KK2luZGV4IGNhNWM0OTllLi4xNzRhMDc1 YiAxMDA2NDQKKy0tLSBhL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9hc3Np bXAvYXNzaW1wLnBybworKysrIGIvcXRxdWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJz L2Fzc2ltcC9hc3NpbXAucHJvCitAQCAtMTAsNyArMTAsNyBAQCBRVF9GT1JfQ09ORklHICs9IGFz c2V0aW1wb3J0ZXJzLXByaXZhdGUKKyBpbmNsdWRlKCQkT1VUX1BXRC8uLi9xdGFzc2V0aW1wb3J0 ZXJzLWNvbmZpZy5wcmkpCisgCisgcXRDb25maWcoc3lzdGVtLWFzc2ltcCk6IWlmKGNyb3NzX2Nv bXBpbGU6aG9zdF9idWlsZCkgeworLSAgICBRTUFLRV9VU0VfUFJJVkFURSArPSBhc3NpbXAKKysg ICAgUU1BS0VfVVNFX1BSSVZBVEUgKz0gcXVpY2szZC1hc3NpbXAKKyB9IGVsc2UgeworICAgICBp bmNsdWRlKC4uLy4uLy4uLzNyZHBhcnR5L2Fzc2ltcC9hc3NpbXAucHJpKQorIH0KK1N1Ym1vZHVs ZSBxdHF1aWNrY29udHJvbHMyIDNhNjU3ZGMwLi41NmNlODIzMzoKK2RpZmYgLS1naXQgYS9xdHF1 aWNrY29udHJvbHMyL3NyYy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdldHMvcXdpZGdldHBsYXRmb3Jt bWVudS5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdldHMv cXdpZGdldHBsYXRmb3JtbWVudS5jcHAKK2luZGV4IGU1ZmU3MzRmNy4uZTM2OTIyNzc1IDEwMDY0 NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3 aWRnZXRwbGF0Zm9ybW1lbnUuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9pbXBvcnRz L3BsYXRmb3JtL3dpZGdldHMvcXdpZGdldHBsYXRmb3JtbWVudS5jcHAKK0BAIC0zOCw2ICszOCw3 IEBACisgI2luY2x1ZGUgInF3aWRnZXRwbGF0Zm9ybW1lbnVpdGVtX3AuaCIKKyAKKyAjaW5jbHVk ZSA8UXRHdWkvcXdpbmRvdy5oPgorKyNpbmNsdWRlIDxRdEd1aS9wcml2YXRlL3FoaWdoZHBpc2Nh bGluZ19wLmg+CisgI2luY2x1ZGUgPFF0V2lkZ2V0cy9xbWVudS5oPgorICNpbmNsdWRlIDxRdFdp ZGdldHMvcWFjdGlvbi5oPgorIAorQEAgLTE0NSw3ICsxNDYsNyBAQCB2b2lkIFFXaWRnZXRQbGF0 Zm9ybU1lbnU6OnNob3dQb3B1cChjb25zdCBRV2luZG93ICp3aW5kb3csIGNvbnN0IFFSZWN0ICZ0 YXJnZXRSZQorIAorICAgICBRUG9pbnQgdGFyZ2V0UG9zID0gdGFyZ2V0UmVjdC5ib3R0b21MZWZ0 KCk7CisgICAgIGlmICh3aW5kb3cpCistICAgICAgICB0YXJnZXRQb3MgPSB3aW5kb3ctPm1hcFRv R2xvYmFsKHRhcmdldFBvcyk7CisrICAgICAgICB0YXJnZXRQb3MgPSB3aW5kb3ctPm1hcFRvR2xv YmFsKFFIaWdoRHBpOjpmcm9tTmF0aXZlTG9jYWxQb3NpdGlvbih0YXJnZXRQb3MsIHdpbmRvdykp OworIAorICAgICBjb25zdCBRV2lkZ2V0UGxhdGZvcm1NZW51SXRlbSAqd2lkZ2V0SXRlbSA9IHFv YmplY3RfY2FzdDxjb25zdCBRV2lkZ2V0UGxhdGZvcm1NZW51SXRlbSAqPihpdGVtKTsKKyAgICAg bV9tZW51LT5wb3B1cCh0YXJnZXRQb3MsIHdpZGdldEl0ZW0gPyB3aWRnZXRJdGVtLT5hY3Rpb24o KSA6IG51bGxwdHIpOworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVt cGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3BwCitpbmRleCA5NTBlNGUwOTku LmI4MWZiZWEwYiAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxh dGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3Jj L3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAKK0BAIC0zODcsNiArMzg3 LDE3IEBAIHZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0b25Qcml2YXRlOjppdGVtSW1wbGljaXRIZWln aHRDaGFuZ2VkKFFRdWlja0l0ZW0gKml0ZW0pCisgICAgICAgICBlbWl0IHEtPmltcGxpY2l0SW5k aWNhdG9ySGVpZ2h0Q2hhbmdlZCgpOworIH0KKyAKKyt2b2lkIFFRdWlja0Fic3RyYWN0QnV0dG9u UHJpdmF0ZTo6aXRlbURlc3Ryb3llZChRUXVpY2tJdGVtICppdGVtKQorK3sKKysgICAgUV9RKFFR dWlja0Fic3RyYWN0QnV0dG9uKTsKKysgICAgUVF1aWNrQ29udHJvbFByaXZhdGU6Oml0ZW1EZXN0 cm95ZWQoaXRlbSk7CisrICAgIGlmIChpdGVtID09IGluZGljYXRvcikgeworKyAgICAgICAgaW5k aWNhdG9yID0gbnVsbHB0cjsKKysgICAgICAgIGVtaXQgcS0+aW1wbGljaXRJbmRpY2F0b3JXaWR0 aENoYW5nZWQoKTsKKysgICAgICAgIGVtaXQgcS0+aW1wbGljaXRJbmRpY2F0b3JIZWlnaHRDaGFu Z2VkKCk7CisrICAgIH0KKyt9CisrCisgUVF1aWNrQWJzdHJhY3RCdXR0b24gKlFRdWlja0Fic3Ry YWN0QnV0dG9uUHJpdmF0ZTo6ZmluZENoZWNrZWRCdXR0b24oKSBjb25zdAorIHsKKyAgICAgUV9R KGNvbnN0IFFRdWlja0Fic3RyYWN0QnV0dG9uKTsKK0BAIC0xMTc2LDYgKzExODcsMTIgQEAgUUFj Y2Vzc2libGU6OlJvbGUgUVF1aWNrQWJzdHJhY3RCdXR0b246OmFjY2Vzc2libGVSb2xlKCkgY29u c3QKKyAgICAgfQorICAgICByZXR1cm4gUUFjY2Vzc2libGU6OkJ1dHRvbjsKKyB9CisrCisrdm9p ZCBRUXVpY2tBYnN0cmFjdEJ1dHRvbjo6YWNjZXNzaWJsZVByZXNzQWN0aW9uKCkKKyt7CisrICAg IFFfRChRUXVpY2tBYnN0cmFjdEJ1dHRvbik7CisrICAgIGQtPnRyaWdnZXIoKTsKKyt9CisgI2Vu ZGlmCisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIv c3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmggYi9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcC5oCitpbmRl eCAwZmE0ODk4MGUuLmFiNjYyMjBkMCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3Jj L3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmgKKysrKyBiL3F0cXVpY2tj b250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmgKK0BA IC0yMDksNiArMjA5LDcgQEAgcHJvdGVjdGVkOgorICNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0 eSkKKyAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5QWN0aXZlQ2hhbmdlZChib29sIGFjdGl2ZSkgb3Zl cnJpZGU7CisgICAgIFFBY2Nlc3NpYmxlOjpSb2xlIGFjY2Vzc2libGVSb2xlKCkgY29uc3Qgb3Zl cnJpZGU7CisrICAgIFFfSU5WT0tBQkxFIHZvaWQgYWNjZXNzaWJsZVByZXNzQWN0aW9uKCk7Cisg I2VuZGlmCisgCisgcHJpdmF0ZToKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcF9wLmggYi9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcF9wLmgKK2luZGV4 IDkyOTFjMWE4Ny4uYjcyOTcyMGYyIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMv cXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3BfcC5oCisrKysgYi9xdHF1aWNr Y29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcF9wLmgK K0BAIC0xMDksNiArMTA5LDcgQEAgcHVibGljOgorIAorICAgICB2b2lkIGl0ZW1JbXBsaWNpdFdp ZHRoQ2hhbmdlZChRUXVpY2tJdGVtICppdGVtKSBvdmVycmlkZTsKKyAgICAgdm9pZCBpdGVtSW1w bGljaXRIZWlnaHRDaGFuZ2VkKFFRdWlja0l0ZW0gKml0ZW0pIG92ZXJyaWRlOworKyAgICB2b2lk IGl0ZW1EZXN0cm95ZWQoUVF1aWNrSXRlbSAqaXRlbSkgb3ZlcnJpZGU7CisgCisgICAgIC8vIGNv cGllZCBmcm9tIHFhYnN0cmFjdGJ1dHRvbi5jcHAKKyAgICAgc3RhdGljIGNvbnN0IGludCBBVVRP X1JFUEVBVF9ERUxBWSA9IDMwMDsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1 aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rpb24uY3BwCitpbmRleCAyMDQxZTc3NDEuLjg2MTBjZGZh ZSAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVp Y2thY3Rpb24uY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIv cXF1aWNrYWN0aW9uLmNwcAorQEAgLTE0NSw3ICsxNDUsNyBAQCBpbnQgUVF1aWNrQWN0aW9uUHJp dmF0ZTo6U2hvcnRjdXRFbnRyeTo6c2hvcnRjdXRJZCgpIGNvbnN0CisgCisgdm9pZCBRUXVpY2tB Y3Rpb25Qcml2YXRlOjpTaG9ydGN1dEVudHJ5OjpncmFiKGNvbnN0IFFLZXlTZXF1ZW5jZSAmc2hv cnRjdXQsIGJvb2wgZW5hYmxlZCkKKyB7CistICAgIGlmIChzaG9ydGN1dC5pc0VtcHR5KCkpCisr ICAgIGlmIChzaG9ydGN1dC5pc0VtcHR5KCkgfHwgbV9zaG9ydGN1dElkKQorICAgICAgICAgcmV0 dXJuOworIAorICAgICBRdDo6U2hvcnRjdXRDb250ZXh0IGNvbnRleHQgPSBRdDo6V2luZG93U2hv cnRjdXQ7IC8vIFRPRE8KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrY29udGFpbmVyLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNr dGVtcGxhdGVzMi9xcXVpY2tjb250YWluZXIuY3BwCitpbmRleCBmMzhjMmIwOWMuLjZlZWQyYTAy NCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVp Y2tjb250YWluZXIuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRl czIvcXF1aWNrY29udGFpbmVyLmNwcAorQEAgLTIyNSw2ICsyMjUsNyBAQCB2b2lkIFFRdWlja0Nv bnRhaW5lclByaXZhdGU6OmNsZWFudXAoKQorICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGNvbnRl bnRNb2RlbCwgJlFRbWxPYmplY3RNb2RlbDo6Y291bnRDaGFuZ2VkLCBxLCAmUVF1aWNrQ29udGFp bmVyOjpjb3VudENoYW5nZWQpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGNvbnRlbnRNb2Rl bCwgJlFRbWxPYmplY3RNb2RlbDo6Y2hpbGRyZW5DaGFuZ2VkLCBxLCAmUVF1aWNrQ29udGFpbmVy Ojpjb250ZW50Q2hpbGRyZW5DaGFuZ2VkKTsKKyAgICAgZGVsZXRlIGNvbnRlbnRNb2RlbDsKKysg ICAgY29udGVudE1vZGVsID0gbnVsbHB0cjsKKyB9CisgCisgUVF1aWNrSXRlbSAqUVF1aWNrQ29u dGFpbmVyUHJpdmF0ZTo6aXRlbUF0KGludCBpbmRleCkgY29uc3QKK0BAIC00MzYsNyArNDM3LDcg QEAgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjpjb250ZW50Q2hpbGRyZW5fY2xlYXIoUVFt bExpc3RQcm9wZXJ0eTxRUXVpY2tJdGVtPgorIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6 dXBkYXRlQ29udGVudFdpZHRoKCkKKyB7CisgICAgIFFfUShRUXVpY2tDb250YWluZXIpOworLSAg ICBpZiAoaGFzQ29udGVudFdpZHRoIHx8IHFGdXp6eUNvbXBhcmUoY29udGVudFdpZHRoLCBpbXBs aWNpdENvbnRlbnRXaWR0aCkpCisrICAgIGlmIChoYXNDb250ZW50V2lkdGggfHwgcUZ1enp5Q29t cGFyZShjb250ZW50V2lkdGgsIGltcGxpY2l0Q29udGVudFdpZHRoKSB8fCAhY29udGVudE1vZGVs KQorICAgICAgICAgcmV0dXJuOworIAorICAgICBjb250ZW50V2lkdGggPSBpbXBsaWNpdENvbnRl bnRXaWR0aDsKK0BAIC00NDYsNyArNDQ3LDcgQEAgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRl Ojp1cGRhdGVDb250ZW50V2lkdGgoKQorIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6dXBk YXRlQ29udGVudEhlaWdodCgpCisgeworICAgICBRX1EoUVF1aWNrQ29udGFpbmVyKTsKKy0gICAg aWYgKGhhc0NvbnRlbnRIZWlnaHQgfHwgcUZ1enp5Q29tcGFyZShjb250ZW50SGVpZ2h0LCBpbXBs aWNpdENvbnRlbnRIZWlnaHQpKQorKyAgICBpZiAoaGFzQ29udGVudEhlaWdodCB8fCBxRnV6enlD b21wYXJlKGNvbnRlbnRIZWlnaHQsIGltcGxpY2l0Q29udGVudEhlaWdodCkgfHwgIWNvbnRlbnRN b2RlbCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgY29udGVudEhlaWdodCA9IGltcGxpY2l0 Q29udGVudEhlaWdodDsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrY29udHJvbC5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrY29udHJvbC5jcHAKK2luZGV4IGJiYmQwZTYyMi4uMWY0YjQ3MzQzIDEw MDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Nv bnRyb2wuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1 aWNrY29udHJvbC5jcHAKK0BAIC04NDUsNiArODQ1LDEzIEBAIHZvaWQgUVF1aWNrQ29udHJvbFBy aXZhdGU6OmV4ZWN1dGVCYWNrZ3JvdW5kKGJvb2wgY29tcGxldGUpCisgICAgICAgICBxdWlja0Nv bXBsZXRlRGVmZXJyZWQocSwgYmFja2dyb3VuZE5hbWUoKSwgYmFja2dyb3VuZCk7CisgfQorIAor Ky8qCisrICAgIFxpbnRlcm5hbAorKworKyAgICBIaWRlcyBhbiBpdGVtIHRoYXQgd2FzIHJlcGxh Y2VkIGJ5IGEgbmV3ZXIgb25lLCByYXRoZXIgdGhhbgorKyAgICBkZWxldGluZyBpdCwgYXMgdGhl IGl0ZW0gaXMgdHlwaWNhbGx5IGNyZWF0ZWQgaW4gUU1MIGFuZCBoZW5jZQorKyAgICB3ZSBkb24n dCBvd24gaXQuCisrKi8KKyB2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjpoaWRlT2xkSXRlbShR UXVpY2tJdGVtICppdGVtKQorIHsKKyAgICAgaWYgKCFpdGVtKQorQEAgLTg2Myw2ICs4NzAsMjkg QEAgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6aGlkZU9sZEl0ZW0oUVF1aWNrSXRlbSAqaXRl bSkKKyAjZW5kaWYKKyB9CisgCisrLyoKKysgICAgXGludGVybmFsCisrCisrICAgIE5hbWVkICJ1 bmhpZGUiIGJlY2F1c2UgaXQncyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpdGVtCisrICAgIHRo YXQgd2FzIHByZXZpb3VzbHkgaGlkZGVuIGJ5IFxsIGhpZGVPbGRJdGVtKCkgd2FudHMgdG8gYmUK KysgICAgc2hvd24gYnkgYSBjb250cm9sIGFnYWluLCBzdWNoIGFzIGEgU2Nyb2xsQmFyIGluIFNj cm9sbFZpZXcuCisrKi8KKyt2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1bmhpZGVPbGRJdGVt KFFRdWlja0NvbnRyb2wgKmNvbnRyb2wsIFFRdWlja0l0ZW0gKml0ZW0pCisreworKyAgICBRX0FT U0VSVChpdGVtKTsKKysgICAgcUNEZWJ1ZyhsY0l0ZW1NYW5hZ2VtZW50KSA8PCAidW5oaWRpbmcg b2xkIGl0ZW0iIDw8IGl0ZW07CisrCisrICAgIGl0ZW0tPnNldFZpc2libGUodHJ1ZSk7CisrICAg IGl0ZW0tPnNldFBhcmVudEl0ZW0oY29udHJvbCk7CisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3Np YmlsaXR5KQorKyAgICAvLyBBZGQgdGhlIGl0ZW0gYmFjayBpbiB0byB0aGUgYWNjZXNzaWJpbGl0 eSB0cmVlLgorKyAgICBRUXVpY2tBY2Nlc3NpYmxlQXR0YWNoZWQgKmFjY2Vzc2libGUgPSBhY2Nl c3NpYmxlQXR0YWNoZWQoaXRlbSk7CisrICAgIGlmIChhY2Nlc3NpYmxlKQorKyAgICAgICAgYWNj ZXNzaWJsZS0+c2V0SWdub3JlZChmYWxzZSk7CisrI2VuZGlmCisrfQorKworIHZvaWQgUVF1aWNr Q29udHJvbFByaXZhdGU6OnVwZGF0ZUJhc2VsaW5lT2Zmc2V0KCkKKyB7CisgICAgIFFfUShRUXVp Y2tDb250cm9sKTsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBs YXRlczIvcXF1aWNrY29udHJvbF9wX3AuaCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVt cGxhdGVzMi9xcXVpY2tjb250cm9sX3BfcC5oCitpbmRleCA4ZTk3OTA3OWUuLmE2ZTYyNGM5MSAx MDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tj b250cm9sX3BfcC5oCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIv cXF1aWNrY29udHJvbF9wX3AuaAorQEAgLTE3Myw2ICsxNzMsNyBAQCBwdWJsaWM6CisgICAgIHZp cnR1YWwgdm9pZCBleGVjdXRlQmFja2dyb3VuZChib29sIGNvbXBsZXRlID0gZmFsc2UpOworIAor ICAgICBzdGF0aWMgdm9pZCBoaWRlT2xkSXRlbShRUXVpY2tJdGVtICppdGVtKTsKKysgICAgc3Rh dGljIHZvaWQgdW5oaWRlT2xkSXRlbShRUXVpY2tDb250cm9sICpjb250cm9sLCBRUXVpY2tJdGVt ICppdGVtKTsKKyAKKyAgICAgdm9pZCB1cGRhdGVCYXNlbGluZU9mZnNldCgpOworIAorZGlmZiAt LWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tkaWFsb2di dXR0b25ib3guY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlj a2RpYWxvZ2J1dHRvbmJveC5jcHAKK2luZGV4IGU2ZGIxNGViNS4uNjE5N2QxNTQ3IDEwMDY0NAor LS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1 dHRvbmJveC5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2tkaWFsb2didXR0b25ib3guY3BwCitAQCAtMjM3LDcgKzIzNyw3IEBAIHN0YXRpYyBRUmVj dEYgYWxpZ25lZFJlY3QoUXQ6OkxheW91dERpcmVjdGlvbiBkaXJlY3Rpb24sIFF0OjpBbGlnbm1l bnQgYWxpZ25tZW50Cisgdm9pZCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpyZXNpemVD b250ZW50KCkKKyB7CisgICAgIFFfUShRUXVpY2tEaWFsb2dCdXR0b25Cb3gpOworLSAgICBpZiAo IWNvbnRlbnRJdGVtKQorKyAgICBpZiAoIWNvbnRlbnRJdGVtIHx8ICFjb250ZW50TW9kZWwpCisg ICAgICAgICByZXR1cm47CisgCisgICAgIFFSZWN0RiBnZW9tZXRyeSA9IHEtPmJvdW5kaW5nUmVj dCgpLmFkanVzdGVkKHEtPmxlZnRQYWRkaW5nKCksIHEtPnRvcFBhZGRpbmcoKSwgLXEtPnJpZ2h0 UGFkZGluZygpLCAtcS0+Ym90dG9tUGFkZGluZygpKTsKK0BAIC0zMjIsNiArMzIyLDkgQEAgdm9p ZCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjp1cGRhdGVMYXlvdXQoKQorIHFyZWFsIFFR dWlja0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OmdldENvbnRlbnRXaWR0aCgpIGNvbnN0Cisgewor ICAgICBRX1EoY29uc3QgUVF1aWNrRGlhbG9nQnV0dG9uQm94KTsKKysgICAgaWYgKCFjb250ZW50 TW9kZWwpCisrICAgICAgICByZXR1cm4gMDsKKysKKyAgICAgY29uc3QgaW50IGNvdW50ID0gY29u dGVudE1vZGVsLT5jb3VudCgpOworICAgICBjb25zdCBxcmVhbCB0b3RhbFNwYWNpbmcgPSBxTWF4 KDAsIGNvdW50IC0gMSkgKiBzcGFjaW5nOworICAgICBxcmVhbCB0b3RhbFdpZHRoID0gdG90YWxT cGFjaW5nOworQEAgLTM0MSw2ICszNDQsOSBAQCBxcmVhbCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQ cml2YXRlOjpnZXRDb250ZW50V2lkdGgoKSBjb25zdAorIHFyZWFsIFFRdWlja0RpYWxvZ0J1dHRv bkJveFByaXZhdGU6OmdldENvbnRlbnRIZWlnaHQoKSBjb25zdAorIHsKKyAgICAgUV9RKGNvbnN0 IFFRdWlja0RpYWxvZ0J1dHRvbkJveCk7CisrICAgIGlmICghY29udGVudE1vZGVsKQorKyAgICAg ICAgcmV0dXJuIDA7CisrCisgICAgIGNvbnN0IGludCBjb3VudCA9IGNvbnRlbnRNb2RlbC0+Y291 bnQoKTsKKyAgICAgcXJlYWwgbWF4SGVpZ2h0ID0gMDsKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkg PCBjb3VudDsgKytpKSB7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0 ZW1wbGF0ZXMyL3FxdWlja292ZXJsYXkuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0 ZW1wbGF0ZXMyL3FxdWlja292ZXJsYXkuY3BwCitpbmRleCA5MWJkNTkxODQuLjBjZTUxOGY4NCAx MDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tv dmVybGF5LmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3Fx dWlja292ZXJsYXkuY3BwCitAQCAtMzk5LDggKzM5OSwxMSBAQCB2b2lkIFFRdWlja092ZXJsYXk6 Oml0ZW1DaGFuZ2UoSXRlbUNoYW5nZSBjaGFuZ2UsIGNvbnN0IEl0ZW1DaGFuZ2VEYXRhICZkYXRh KQorICAgICBRX0QoUVF1aWNrT3ZlcmxheSk7CisgICAgIFFRdWlja0l0ZW06Oml0ZW1DaGFuZ2Uo Y2hhbmdlLCBkYXRhKTsKKyAKKy0gICAgaWYgKGNoYW5nZSA9PSBJdGVtQ2hpbGRBZGRlZENoYW5n ZSB8fCBjaGFuZ2UgPT0gSXRlbUNoaWxkUmVtb3ZlZENoYW5nZSkKKysgICAgaWYgKGNoYW5nZSA9 PSBJdGVtQ2hpbGRBZGRlZENoYW5nZSB8fCBjaGFuZ2UgPT0gSXRlbUNoaWxkUmVtb3ZlZENoYW5n ZSkgeworICAgICAgICAgc2V0VmlzaWJsZSghZC0+YWxsRHJhd2Vycy5pc0VtcHR5KCkgfHwgIWNo aWxkSXRlbXMoKS5pc0VtcHR5KCkpOworKyAgICAgICAgaWYgKGRhdGEuaXRlbS0+cGFyZW50KCkg PT0gZC0+bW91c2VHcmFiYmVyUG9wdXApCisrICAgICAgICAgICAgZC0+c2V0TW91c2VHcmFiYmVy UG9wdXAobnVsbHB0cik7CisrICAgIH0KKyB9CisgCisgdm9pZCBRUXVpY2tPdmVybGF5OjpnZW9t ZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGICZuZXdHZW9tZXRyeSwgY29uc3QgUVJlY3RGICZvbGRH ZW9tZXRyeSkKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRl czIvcXF1aWNrc2Nyb2xsYmFyLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxh dGVzMi9xcXVpY2tzY3JvbGxiYXIuY3BwCitpbmRleCA0ZTJmNTA5ZGIuLjFjNGIzMDhjZCAxMDA2 NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3Jv bGxiYXIuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1 aWNrc2Nyb2xsYmFyLmNwcAorQEAgLTc5Nyw2ICs3OTcsMTQgQEAgdm9pZCBRUXVpY2tTY3JvbGxC YXJBdHRhY2hlZFByaXZhdGU6OmluaXRIb3Jpem9udGFsKCkKKyAgICAgaWYgKHBhcmVudCAmJiBw YXJlbnQgPT0gZmxpY2thYmxlLT5wYXJlbnRJdGVtKCkpCisgICAgICAgICBob3Jpem9udGFsLT5z dGFja0FmdGVyKGZsaWNrYWJsZSk7CisgCisrICAgIC8vIElmIGEgc2Nyb2xsIGJhciB3YXMgcHJl dmlvdXNseSBoaWRkZW4gKGR1ZSB0byBlLmcuIHNldHRpbmcgYSBuZXcgY29udGVudEl0ZW0KKysg ICAgLy8gb24gYSBTY3JvbGxWaWV3KSwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSB1bi1o aWRlIGl0LgorKyAgICAvLyBXZSBkb24ndCBib3RoZXIgY2hlY2tpbmcgaWYgdGhlIGl0ZW0gaXMg YWN0dWFsbHkgdGhlIG9sZCBvbmUsIGJlY2F1c2UKKysgICAgLy8gaWYgaXQncyBub3QsIGFsbCBv ZiB0aGUgdGhpbmdzIHRoZSBmdW5jdGlvbiBkb2VzIChzZXR0aW5nIHBhcmVudCwgdmlzaWJpbGl0 eSwgZXRjLikKKysgICAgLy8gc2hvdWxkIGJlIG5vLW9wcyBhbnl3YXkuCisrICAgIGlmIChhdXRv IGNvbnRyb2wgPSBxb2JqZWN0X2Nhc3Q8UVF1aWNrQ29udHJvbCo+KHFfcHRyLT5wYXJlbnQoKSkp CisrICAgICAgICBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dW5oaWRlT2xkSXRlbShjb250cm9sLCBo b3Jpem9udGFsKTsKKysKKyAgICAgbGF5b3V0SG9yaXpvbnRhbCgpOworICAgICBob3Jpem9udGFs LT5zZXRTaXplKGFyZWEtPnByb3BlcnR5KCJ3aWR0aFJhdGlvIikudG9SZWFsKCkpOworICAgICBo b3Jpem9udGFsLT5zZXRQb3NpdGlvbihhcmVhLT5wcm9wZXJ0eSgieFBvc2l0aW9uIikudG9SZWFs KCkpOworQEAgLTgxOCw2ICs4MjYsOSBAQCB2b2lkIFFRdWlja1Njcm9sbEJhckF0dGFjaGVkUHJp dmF0ZTo6aW5pdFZlcnRpY2FsKCkKKyAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQgPT0gZmxpY2th YmxlLT5wYXJlbnRJdGVtKCkpCisgICAgICAgICB2ZXJ0aWNhbC0+c3RhY2tBZnRlcihmbGlja2Fi bGUpOworIAorKyAgICBpZiAoYXV0byBjb250cm9sID0gcW9iamVjdF9jYXN0PFFRdWlja0NvbnRy b2wqPihxX3B0ci0+cGFyZW50KCkpKQorKyAgICAgICAgUVF1aWNrQ29udHJvbFByaXZhdGU6OnVu aGlkZU9sZEl0ZW0oY29udHJvbCwgdmVydGljYWwpOworKworICAgICBsYXlvdXRWZXJ0aWNhbCgp OworICAgICB2ZXJ0aWNhbC0+c2V0U2l6ZShhcmVhLT5wcm9wZXJ0eSgiaGVpZ2h0UmF0aW8iKS50 b1JlYWwoKSk7CisgICAgIHZlcnRpY2FsLT5zZXRQb3NpdGlvbihhcmVhLT5wcm9wZXJ0eSgieVBv c2l0aW9uIikudG9SZWFsKCkpOworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMv YXV0by9jb250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3LnFtbCBiL3F0cXVpY2tjb250cm9sczIv dGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3LnFtbAoraW5kZXggMGU4YjA4 MzUyLi5jZDQ5MzExODQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8v Y29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwKKysrKyBiL3F0cXVpY2tjb250cm9sczIv dGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3LnFtbAorQEAgLTU3Niw0ICs1 NzYsNTEgQEAgVGVzdENhc2UgeworICAgICAgICAgdmVyaWZ5KG5ld0hvcml6b250YWxTY3JvbGxC YXIudmlzaWJsZSkKKyAgICAgICAgIHZlcmlmeSghb2xkSG9yaXpvbnRhbFNjcm9sbEJhci52aXNp YmxlKQorICAgICB9CisrCisrICAgIENvbXBvbmVudCB7CisrICAgICAgICBpZDogYmluZGluZ1Rv Q29udGVudEl0ZW1BbmRTdGFuZGFsb25lRmxpY2thYmxlCisrCisrICAgICAgICBJdGVtIHsKKysg ICAgICAgICAgICB3aWR0aDogMjAwCisrICAgICAgICAgICAgaGVpZ2h0OiAyMDAKKysKKysgICAg ICAgICAgICBwcm9wZXJ0eSBhbGlhcyBzY3JvbGxWaWV3OiBzY3JvbGxWaWV3CisrCisrICAgICAg ICAgICAgU2Nyb2xsVmlldyB7CisrICAgICAgICAgICAgICAgIGlkOiBzY3JvbGxWaWV3CisrICAg ICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisrICAgICAgICAgICAgICAgIGNvbnRl bnRJdGVtOiBsaXN0VmlldworKworKyAgICAgICAgICAgICAgICBwcm9wZXJ0eSBJdGVtIHNvbWVC aW5kaW5nOiBjb250ZW50SXRlbQorKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBMaXN0Vmll dyB7CisrICAgICAgICAgICAgICAgIGlkOiBsaXN0VmlldworKyAgICAgICAgICAgICAgICBtb2Rl bDogMTAKKysgICAgICAgICAgICAgICAgZGVsZWdhdGU6IEl0ZW1EZWxlZ2F0ZSB7CisrICAgICAg ICAgICAgICAgICAgICB0ZXh0OiBtb2RlbERhdGEKKysgICAgICAgICAgICAgICAgICAgIHdpZHRo OiBsaXN0Vmlldy53aWR0aAorKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAg ICAgICAgfQorKyAgICB9CisrCisrICAgIC8vIFRlc3RzIHRoYXQgc2Nyb2xsIGJhcnMgc2hvdyB1 cCBmb3IgYSBTY3JvbGxWaWV3IHdoZXJlCisrICAgIC8vIC0gaXRzIGNvbnRlbnRJdGVtIGlzIGRl Y2xhcmVkIGFzIGEgc3RhbmRhbG9uZSwgc2VwYXJhdGUgaXRlbQorKyAgICAvLyAtIHRoZXJlIGlz IGEgYmluZGluZyB0byBjb250ZW50SXRlbSAod2hpY2ggY2F1c2VzIGEgZGVmYXVsdCBGbGlja2Fi bGUgdG8gYmUgY3JlYXRlZCkKKysgICAgZnVuY3Rpb24gdGVzdF9iaW5kaW5nVG9Db250ZW50SXRl bUFuZFN0YW5kYWxvbmVGbGlja2FibGUoKSB7CisrICAgICAgICBsZXQgcm9vdCA9IGNyZWF0ZVRl bXBvcmFyeU9iamVjdChiaW5kaW5nVG9Db250ZW50SXRlbUFuZFN0YW5kYWxvbmVGbGlja2FibGUs IHRlc3RDYXNlKQorKyAgICAgICAgdmVyaWZ5KHJvb3QpCisrCisrICAgICAgICBsZXQgY29udHJv bCA9IHJvb3Quc2Nyb2xsVmlldworKyAgICAgICAgbGV0IHZlcnRpY2FsU2Nyb2xsQmFyID0gY29u dHJvbC5TY3JvbGxCYXIudmVydGljYWwKKysgICAgICAgIGxldCBob3Jpem9udGFsU2Nyb2xsQmFy ID0gY29udHJvbC5TY3JvbGxCYXIuaG9yaXpvbnRhbAorKyAgICAgICAgY29tcGFyZSh2ZXJ0aWNh bFNjcm9sbEJhci5wYXJlbnQsIGNvbnRyb2wpCisrICAgICAgICBjb21wYXJlKGhvcml6b250YWxT Y3JvbGxCYXIucGFyZW50LCBjb250cm9sKQorKyAgICAgICAgdmVyaWZ5KHZlcnRpY2FsU2Nyb2xs QmFyLnZpc2libGUpCisrICAgICAgICB2ZXJpZnkoaG9yaXpvbnRhbFNjcm9sbEJhci52aXNpYmxl KQorKworKyAgICAgICAgbW91c2VEcmFnKHZlcnRpY2FsU2Nyb2xsQmFyLCB2ZXJ0aWNhbFNjcm9s bEJhci53aWR0aCAvIDIsIHZlcnRpY2FsU2Nyb2xsQmFyLmhlaWdodCAvIDIsIDAsIDUwKQorKyAg ICAgICAgdmVyaWZ5KHZlcnRpY2FsU2Nyb2xsQmFyLmFjdGl2ZSkKKysgICAgICAgIHZlcmlmeSho b3Jpem9udGFsU2Nyb2xsQmFyLmFjdGl2ZSkKKysgICAgfQorIH0KK2RpZmYgLS1naXQgYS9xdHF1 aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFtbCBiL3F0 cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1sCitp bmRleCBiM2ZhYjQxY2EuLjEwYjZiYWEwMiAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIv dGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1sCisrKysgYi9xdHF1aWNrY29u dHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFtbAorQEAgLTYwOCw0 ICs2MDgsMjcgQEAgVGVzdENhc2UgeworICAgICAgICAgbW91c2VDbGljayhjb250cm9sLmluZGlj YXRvcikKKyAgICAgICAgIHZlcmlmeShjb250cm9sLmFjdGl2ZUZvY3VzKQorICAgICB9CisrCisr ICAgIENvbXBvbmVudCB7CisrICAgICAgICBpZDogZGVsZXRpb25PcmRlcjEKKysgICAgICAgIEl0 ZW0geworKyAgICAgICAgICAgIEltYWdlIHsgaWQ6IGlubmVySW1hZ2UgfQorKyAgICAgICAgICAg IFN3aXRjaCB7IGluZGljYXRvcjogaW5uZXJJbWFnZSB9CisrICAgICAgICB9CisrICAgIH0KKysK KysgICAgQ29tcG9uZW50IHsKKysgICAgICAgIGlkOiBkZWxldGlvbk9yZGVyMgorKyAgICAgICAg SXRlbSB7CisrICAgICAgICAgICAgU3dpdGNoIHsgaW5kaWNhdG9yOiBpbm5lckltYWdlIH0KKysg ICAgICAgICAgICBJbWFnZSB7IGlkOiBpbm5lckltYWdlIH0KKysgICAgICAgIH0KKysgICAgfQor KworKyAgICBmdW5jdGlvbiB0ZXN0X2RlbGV0aW9uT3JkZXIoKSB7CisrICAgICAgICB2YXIgY29u dHJvbDEgPSBjcmVhdGVUZW1wb3JhcnlPYmplY3QoZGVsZXRpb25PcmRlcjEsIHRlc3RDYXNlKQor KyAgICAgICAgdmVyaWZ5KGNvbnRyb2wxKQorKyAgICAgICAgdmFyIGNvbnRyb2wyID0gY3JlYXRl VGVtcG9yYXJ5T2JqZWN0KGRlbGV0aW9uT3JkZXIyLCB0ZXN0Q2FzZSkKKysgICAgICAgIHZlcmlm eShjb250cm9sMikKKysgICAgfQorIH0KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3Rl c3RzL2F1dG8vcXF1aWNrcG9wdXAvZGF0YS9yZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbi5xbWwg Yi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvZGF0YS9yZWxlYXNlQWZ0 ZXJFeGl0VHJhbnNpdGlvbi5xbWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw MDAuLjllNDU5OGI5ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0 cy9hdXRvL3FxdWlja3BvcHVwL2RhdGEvcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sCitA QCAtMCwwICsxLDc4IEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdo dCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cu cXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qg c3VpdGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpCU0Qk CisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFs aWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29y ZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRo IHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGgg dGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5 b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRp dGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVy CisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQu aW8vY29udGFjdC11cy4KKysqKgorKyoqIEJTRCBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRp dmVseSwgeW91IG1heSB1c2UgdGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQlNEIGxp Y2Vuc2UKKysqKiBhcyBmb2xsb3dzOgorKyoqCisrKiogIlJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyoqIG1vZGlmaWNh dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u cyBhcmUKKysqKiBtZXQ6CisrKiogICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrKiogICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysqKiAgICogUmVk aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5 cmlnaHQKKysqKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyIGluCisrKiogICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiAgICAgZGlzdHJpYnV0aW9uLgor KyoqICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFRoZSBRdCBDb21wYW55IEx0ZCBub3IgdGhlIG5h bWVzIG9mIGl0cworKyoqICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKysqKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKyoqCisrKioKKysqKiBU SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O VFJJQlVUT1JTCisrKiogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKysqKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKysqKiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI VAorKyoqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO RElSRUNULCBJTkNJREVOVEFMLAorKyoqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKysqKiBMSU1JVEVEIFRPLCBQUk9DVVJF TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKysqKiBE QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE IEFORCBPTiBBTlkKKysqKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisrKiogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisrKiogT0YgVEhJ UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB TUFHRS4iCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworKworK2ltcG9ydCBRdFF1aWNrIDIuMTUKKytpbXBvcnQgUXRRdWljay5Db250cm9scyAy LjE1CisrCisrQXBwbGljYXRpb25XaW5kb3cgeworKyAgICBpZDogd2luZG93CisrICAgIHdpZHRo OiA0MDAKKysgICAgaGVpZ2h0OiA0MDAKKysgICAgdGl0bGU6ICJyZWxlYXNlQWZ0ZXJFeGl0VHJh bnNpdGlvbiIKKysKKysgICAgcHJvcGVydHkgYWxpYXMgcG9wdXA6IHBvcHVwCisrICAgIHByb3Bl cnR5IGFsaWFzIG1vZGFsUG9wdXA6IG1vZGFsUG9wdXAKKysKKysgICAgUG9wdXAgeworKyAgICAg ICAgaWQ6IHBvcHVwCisrICAgICAgICB5OiBwYXJlbnQuaGVpZ2h0IC0gaGVpZ2h0CisrICAgICAg ICB3aWR0aDogNTAKKysgICAgICAgIGhlaWdodDogNTAKKysgICAgfQorKworKyAgICBQb3B1cCB7 CisrICAgICAgICBpZDogbW9kYWxQb3B1cAorKyAgICAgICAgbW9kYWw6IHRydWUKKysgICAgICAg IHk6IHBhcmVudC5oZWlnaHQgLSBoZWlnaHQKKysgICAgICAgIHdpZHRoOiA1MAorKyAgICAgICAg aGVpZ2h0OiA1MAorKyAgICAgICAgZXhpdDogIFRyYW5zaXRpb24geyBQYXVzZUFuaW1hdGlvbiB7 IGR1cmF0aW9uOiAxMDAgfSB9CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRy b2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5jcHAgYi9xdHF1aWNr Y29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvdHN0X3FxdWlja3BvcHVwLmNwcAoraW5k ZXggNTQ5NTJkMTI4Li4zZDUwZTJkZDQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3Rl c3RzL2F1dG8vcXF1aWNrcG9wdXAvdHN0X3FxdWlja3BvcHVwLmNwcAorKysrIGIvcXRxdWlja2Nv bnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5jcHAKK0BAIC0x MDAsNiArMTAwLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBpbnZpc2libGVUb29sVGlw T3BlbigpOworICAgICB2b2lkIGNlbnRlckluT3ZlcmxheVdpdGhpblN0YWNrVmlld0l0ZW0oKTsK KyAgICAgdm9pZCBkZXN0cm95RHVyaW5nRXhpdFRyYW5zaXRpb24oKTsKKysgICAgdm9pZCByZWxl YXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbigpOworIH07CisgCisgdm9pZCB0c3RfUVF1aWNrUG9wdXA6 OmluaXRUZXN0Q2FzZSgpCitAQCAtMTU3NSw2ICsxNTc2LDM0IEBAIHZvaWQgdHN0X1FRdWlja1Bv cHVwOjpkZXN0cm95RHVyaW5nRXhpdFRyYW5zaXRpb24oKQorICAgICBRVkVSSUZZKCFidXR0b24t PmlzRG93bigpKTsKKyB9CisgCisrdm9pZCB0c3RfUVF1aWNrUG9wdXA6OnJlbGVhc2VBZnRlckV4 aXRUcmFuc2l0aW9uKCkKKyt7CisrICAgIFFRdWlja0FwcGxpY2F0aW9uSGVscGVyIGhlbHBlcih0 aGlzLCAicmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sIik7CisrICAgIFFWRVJJRlkyKGhl bHBlci5yZWFkeSwgaGVscGVyLmZhaWx1cmVNZXNzYWdlKCkpOworKworKyAgICBRUXVpY2tXaW5k b3cgKndpbmRvdyA9IGhlbHBlci53aW5kb3c7CisrICAgIHdpbmRvdy0+c2hvdygpOworKyAgICBR VkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0FjdGl2ZSh3aW5kb3cpKTsKKysKKysgICAgUVF1 aWNrT3ZlcmxheSAqb3ZlcmxheSA9IFFRdWlja092ZXJsYXk6Om92ZXJsYXkod2luZG93KTsKKysg ICAgUVF1aWNrUG9wdXAgKm1vZGFsUG9wdXAgPSB3aW5kb3ctPnByb3BlcnR5KCJtb2RhbFBvcHVw IikudmFsdWU8UVF1aWNrUG9wdXAgKj4oKTsKKysgICAgUVF1aWNrUG9wdXAgKnBvcHVwID0gd2lu ZG93LT5wcm9wZXJ0eSgicG9wdXAiKS52YWx1ZTxRUXVpY2tQb3B1cCAqPigpOworKworKyAgICBt b2RhbFBvcHVwLT5vcGVuKCk7CisrICAgIFFUUllfVkVSSUZZKG1vZGFsUG9wdXAtPmlzT3BlbmVk KCkpOworKworKyAgICBRVGVzdDo6bW91c2VQcmVzcyh3aW5kb3csIFF0OjpMZWZ0QnV0dG9uLCBR dDo6Tm9Nb2RpZmllciwgUVBvaW50KDEsIDEpKTsKKysgICAgLy8gd2FpdCB1bnRpbCB0aGUgdHJh bnNpdGlvbiBpcyBmaW5pc2hlZCBhbmQgdGhlIG92ZXJsYXkgaGlkZXMgaXRzZWxmCisrICAgIFFU UllfVkVSSUZZKCFvdmVybGF5LT5pc1Zpc2libGUoKSk7CisrICAgIFFUZXN0Ojptb3VzZVJlbGVh c2Uod2luZG93LCBRdDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIsIFFQb2ludCgxLCAxKSk7 CisrCisrICAgIHBvcHVwLT5vcGVuKCk7CisrICAgIFFUUllfVkVSSUZZKHBvcHVwLT5pc09wZW5l ZCgpKTsKKysgICAgUVRlc3Q6Om1vdXNlQ2xpY2sod2luZG93LCBRdDo6TGVmdEJ1dHRvbiwgUXQ6 Ok5vTW9kaWZpZXIsIFFQb2ludCgxLCAxKSk7CisrICAgIFFUUllfVkVSSUZZKCFwb3B1cC0+aXNP cGVuZWQoKSk7CisrfQorKworKworIFFURVNUX1FVSUNLQ09OVFJPTFNfTUFJTih0c3RfUVF1aWNr UG9wdXApCisgCisgI2luY2x1ZGUgInRzdF9xcXVpY2twb3B1cC5tb2MiCitTdWJtb2R1bGUgcXRz Y3JpcHQgNWJlOTVmOTYuLi40ZDhlNGJkMiAoY29tbWl0cyBub3QgcHJlc2VudCkKK1N1Ym1vZHVs ZSBxdHNwZWVjaCAxN2ZjOWZkZS4uMjU1ODQ1ZTI6CitkaWZmIC0tZ2l0IGEvcXRzcGVlY2gvc3Jj L3BsdWdpbnMvdHRzL3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcCBi L3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hf c3BlZWNoZC5jcHAKK2luZGV4IDZlYjc0YjguLmJjYzdkZDEgMTAwNjQ0CistLS0gYS9xdHNwZWVj aC9zcmMvcGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hlci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQu Y3BwCisrKysgYi9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hlci9xdGV4 dHRvc3BlZWNoX3NwZWVjaGQuY3BwCitAQCAtMzU3LDcgKzM1Nyw5IEBAIFFWZWN0b3I8UUxvY2Fs ZT4gUVRleHRUb1NwZWVjaEVuZ2luZVNwZWVjaGQ6OmF2YWlsYWJsZUxvY2FsZXMoKSBjb25zdAor IAorIFFWZWN0b3I8UVZvaWNlPiBRVGV4dFRvU3BlZWNoRW5naW5lU3BlZWNoZDo6YXZhaWxhYmxl Vm9pY2VzKCkgY29uc3QKKyB7CistICAgIHJldHVybiBtX3ZvaWNlcy52YWx1ZXMobV9jdXJyZW50 TG9jYWxlLm5hbWUoKSkudG9WZWN0b3IoKTsKKysgICAgUUxpc3Q8UVZvaWNlPiByZXN1bHRMaXN0 ID0gbV92b2ljZXMudmFsdWVzKG1fY3VycmVudExvY2FsZS5uYW1lKCkpOworKyAgICBzdGQ6OnJl dmVyc2UocmVzdWx0TGlzdC5iZWdpbigpLCByZXN1bHRMaXN0LmVuZCgpKTsKKysgICAgcmV0dXJu IHJlc3VsdExpc3QudG9WZWN0b3IoKTsKKyB9CisgCisgLy8gV2UgaGF2ZSBubyB3YXkgb2Yga25v d2luZyBvdXIgb3duIGNsaWVudF9pZCBzaW5jZSBzcGVlY2gtZGlzcGF0Y2hlciBzZWVtcyB0byBi ZSBpbmNvbXBsZXRlCitTdWJtb2R1bGUgcXRzdmcgMGMwNTc4MGUuLmE3YTBmMjQ5OgorZGlmZiAt LWdpdCBhL3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5j cHAgYi9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdpb2hhbmRsZXIuY3Bw CitpbmRleCA1NjFlNzdlLi4xMmUwNTc0IDEwMDY0NAorLS0tIGEvcXRzdmcvc3JjL3BsdWdpbnMv aW1hZ2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcAorKysrIGIvcXRzdmcvc3JjL3BsdWdp bnMvaW1hZ2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcAorQEAgLTE5MSw2ICsxOTEsOCBA QCBib29sIFFTdmdJT0hhbmRsZXI6OnJlYWQoUUltYWdlICppbWFnZSkKKyAgICAgICAgICAgICB9 CisgICAgICAgICB9CisgICAgICAgICBpZiAoIWZpbmFsU2l6ZS5pc0VtcHR5KCkpIHsKKysgICAg ICAgICAgICBpZiAocU1heChmaW5hbFNpemUud2lkdGgoKSwgZmluYWxTaXplLmhlaWdodCgpKSA+ IDB4ZmZmZikKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBc3N1bWUgY29ycnVw dGVkIGZpbGUKKyAgICAgICAgICAgICBpbWFnZS0+ZmlsbChkLT5iYWNrQ29sb3IucmdiYSgpKTsK KyAgICAgICAgICAgICBRUGFpbnRlciBwKGltYWdlKTsKKyAgICAgICAgICAgICBkLT5yLnJlbmRl cigmcCwgYm91bmRzKTsKK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNw cCBiL3F0c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwCitpbmRleCBhNWY4NzdmLi44ZGRhNTYz IDEwMDY0NAorLS0tIGEvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFuZGxlci5jcHAKKysrKyBiL3F0c3Zn L3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwCitAQCAtMTM5Myw5ICsxMzkzLDEwIEBAIHN0YXRpYyB2 b2lkIHBhcnNlRm9udChRU3ZnTm9kZSAqbm9kZSwKKyAgICAgICAgIGNhc2UgRm9udFNpemVOb25l OgorICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgY2FzZSBGb250U2l6ZVZhbHVlOiB7Cist ICAgICAgICAgICAgUVN2Z0hhbmRsZXI6Okxlbmd0aFR5cGUgZHVtbXk7IC8vIHNob3VsZCBhbHdh eXMgYmUgcGl4ZWwgc2l6ZQorLSAgICAgICAgICAgIGZvbnRTdHlsZS0+c2V0U2l6ZShxTWluKHBh cnNlTGVuZ3RoKGF0dHJpYnV0ZXMuZm9udFNpemUsIGR1bW15LCBoYW5kbGVyKSwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxcmVhbCgweGZmZmYpKSk7CisrICAgICAgICAg ICAgUVN2Z0hhbmRsZXI6Okxlbmd0aFR5cGUgdHlwZTsKKysgICAgICAgICAgICBxcmVhbCBmcyA9 IHBhcnNlTGVuZ3RoKGF0dHJpYnV0ZXMuZm9udFNpemUsIHR5cGUsIGhhbmRsZXIpOworKyAgICAg ICAgICAgIGZzID0gY29udmVydFRvUGl4ZWxzKGZzLCB0cnVlLCB0eXBlKTsKKysgICAgICAgICAg ICBmb250U3R5bGUtPnNldFNpemUocU1pbihmcywgcXJlYWwoMHhmZmZmKSkpOworICAgICAgICAg fQorICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgZGVmYXVsdDoKK0BAIC0yNTEzLDYgKzI1 MTQsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZUFuaW1hdGVUcmFuc2Zvcm1Ob2RlKFFTdmdOb2RlICpw YXJlbnQsCisgICAgICAgICAgICAgKytzOworICAgICAgICAgfQorICAgICB9CisrICAgIGlmICh2 YWxzLmNvdW50KCkgJSAzICE9IDApCisrICAgICAgICByZXR1cm4gZmFsc2U7CisgCisgICAgIGJv b2wgb2sgPSB0cnVlOworICAgICBpbnQgYmVnaW4gPSBwYXJzZUNsb2NrVmFsdWUoYmVnaW5TdHIs ICZvayk7CitAQCAtMjU3Niw2ICsyNTc5LDggQEAgc3RhdGljIFFTdmdOb2RlICpjcmVhdGVDaXJj bGVOb2RlKFFTdmdOb2RlICpwYXJlbnQsCisgICAgIHFyZWFsIG5jeCA9IHRvRG91YmxlKGN4KTsK KyAgICAgcXJlYWwgbmN5ID0gdG9Eb3VibGUoY3kpOworICAgICBxcmVhbCBuciAgPSB0b0RvdWJs ZShyKTsKKysgICAgaWYgKG5yIDwgMC4wKQorKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgCisg ICAgIFFSZWN0RiByZWN0KG5jeC1uciwgbmN5LW5yLCBucioyLCBucioyKTsKKyAgICAgUVN2Z05v ZGUgKmNpcmNsZSA9IG5ldyBRU3ZnQ2lyY2xlKHBhcmVudCwgcmVjdCk7CitAQCAtMzA0NiwxNSAr MzA1MSwxNiBAQCBzdGF0aWMgUVN2Z1N0eWxlUHJvcGVydHkgKmNyZWF0ZVJhZGlhbEdyYWRpZW50 Tm9kZShRU3ZnTm9kZSAqbm9kZSwKKyAKKyAgICAgcXJlYWwgbmN4ID0gMC41OworICAgICBxcmVh bCBuY3kgPSAwLjU7CistICAgIHFyZWFsIG5yICA9IDAuNTsKKyAgICAgaWYgKCFjeC5pc0VtcHR5 KCkpCisgICAgICAgICBuY3ggPSB0b0RvdWJsZShjeCk7CisgICAgIGlmICghY3kuaXNFbXB0eSgp KQorICAgICAgICAgbmN5ID0gdG9Eb3VibGUoY3kpOworKworKyAgICBxcmVhbCBuciA9IDAuMDsK KyAgICAgaWYgKCFyLmlzRW1wdHkoKSkKKyAgICAgICAgIG5yID0gdG9Eb3VibGUocik7CistICAg IGlmIChuciA8IDAuNSkKKy0gICAgICAgIG5yID0gMC41OworKyAgICBpZiAobnIgPD0gMC4wKQor KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgCisgICAgIHFyZWFsIG5meCA9IG5jeDsKKyAgICAg aWYgKCFmeC5pc0VtcHR5KCkpCitAQCAtMzM1MCw3ICszMzU2LDkgQEAgc3RhdGljIFFTdmdOb2Rl ICpjcmVhdGVUZXh0Tm9kZShRU3ZnTm9kZSAqcGFyZW50LAorICAgICAvLyMjIyBlZGl0YWJsZSBh bmQgcm90YXRlIG5vdCBoYW5kbGVkCisgICAgIFFTdmdIYW5kbGVyOjpMZW5ndGhUeXBlIHR5cGU7 CisgICAgIHFyZWFsIG54ID0gcGFyc2VMZW5ndGgoeCwgdHlwZSwgaGFuZGxlcik7CisrICAgIG54 ID0gY29udmVydFRvUGl4ZWxzKG54LCB0cnVlLCB0eXBlKTsKKyAgICAgcXJlYWwgbnkgPSBwYXJz ZUxlbmd0aCh5LCB0eXBlLCBoYW5kbGVyKTsKKysgICAgbnkgPSBjb252ZXJ0VG9QaXhlbHMobnks IHRydWUsIHR5cGUpOworIAorICAgICBRU3ZnTm9kZSAqdGV4dCA9IG5ldyBRU3ZnVGV4dChwYXJl bnQsIFFQb2ludEYobngsIG55KSk7CisgICAgIHJldHVybiB0ZXh0OworQEAgLTM2OTEsOSArMzY5 OSw3IEBAIHZvaWQgUVN2Z0hhbmRsZXI6OnBhcnNlKCkKKyAgICAgICAgIGNhc2UgUVhtbFN0cmVh bVJlYWRlcjo6RW5kRWxlbWVudDoKKyAgICAgICAgICAgICBlbmRFbGVtZW50KHhtbC0+bmFtZSgp KTsKKyAgICAgICAgICAgICArK3JlbWFpbmluZ1VuZmluaXNoZWRFbGVtZW50czsKKy0gICAgICAg ICAgICAvLyBpZiB3ZSBhcmUgdXNpbmcgc29tZWJvZHkgZWxzZSdzIHF4bWxzdHJlYW1yZWFkZXIK Ky0gICAgICAgICAgICAvLyB3ZSBzaG91bGQgbm90IHJlYWQgdW50aWwgdGhlIGVuZCBvZiB0aGUg c3RyZWFtCistICAgICAgICAgICAgZG9uZSA9ICFtX293bnNSZWFkZXIgJiYgKHhtbC0+bmFtZSgp ID09IFFMYXRpbjFTdHJpbmcoInN2ZyIpKTsKKysgICAgICAgICAgICBkb25lID0gKHhtbC0+bmFt ZSgpID09IFFMYXRpbjFTdHJpbmcoInN2ZyIpKTsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgIGNhc2UgUVhtbFN0cmVhbVJlYWRlcjo6Q2hhcmFjdGVyczoKKyAgICAgICAgICAgICBjaGFy YWN0ZXJzKHhtbC0+dGV4dCgpKTsKK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvc3ZnL3FzdmdzdHJ1 Y3R1cmUuY3BwIGIvcXRzdmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcAoraW5kZXggYjg5NjA4 Yi4uODljOWU0ZSAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAK KysrKyBiL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAKK0BAIC0yNTUsOSArMjU1LDEz IEBAIGlubGluZSBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFN2Z0ZlYXR1cmUoY29uc3QgUVN0cmlu ZyAmc3RyKQorICAgICB9OworIAorICAgICBpZiAoc3RyLmxlbmd0aCgpIDw9IE1BWF9XT1JEX0xF TkdUSCAmJiBzdHIubGVuZ3RoKCkgPj0gTUlOX1dPUkRfTEVOR1RIKSB7CisrICAgICAgICBjb25z dCBjaGFyMTZfdCB1bmljb2RlNDQgPSBzdHIuYXQoNDQpLnVuaWNvZGUoKTsKKysgICAgICAgIGNv bnN0IGNoYXIxNl90IHVuaWNvZGU0NSA9IHN0ci5hdCg0NSkudW5pY29kZSgpOworKyAgICAgICAg aWYgKHVuaWNvZGU0NCA+PSBzaXplb2YoYXNzb192YWx1ZXMpIHx8IHVuaWNvZGU0NSA+PSBzaXpl b2YoYXNzb192YWx1ZXMpKQorKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIGNv bnN0IGludCBrZXkgPSBzdHIubGVuZ3RoKCkKKy0gICAgICAgICAgICAgICAgICAgICAgICArIGFz c29fdmFsdWVzW3N0ci5hdCg0NSkudW5pY29kZSgpXQorLSAgICAgICAgICAgICAgICAgICAgICAg ICsgYXNzb192YWx1ZXNbc3RyLmF0KDQ0KS51bmljb2RlKCldOworKyAgICAgICAgICAgICAgICAg ICAgICAgICsgYXNzb192YWx1ZXNbdW5pY29kZTQ1XQorKyAgICAgICAgICAgICAgICAgICAgICAg ICsgYXNzb192YWx1ZXNbdW5pY29kZTQ0XTsKKyAgICAgICAgIGlmIChrZXkgPD0gTUFYX0hBU0hf VkFMVUUgJiYga2V5ID49IDApCisgICAgICAgICAgICAgcmV0dXJuIHN0ciA9PSBRTGF0aW4xU3Ry aW5nKHdvcmRsaXN0W2tleV0pOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3N2Zy9x c3ZndGlueWRvY3VtZW50LmNwcCBiL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAK K2luZGV4IDYzZDA3OTcuLjE5ZTcxNTQgMTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvc3ZnL3Fzdmd0 aW55ZG9jdW1lbnQuY3BwCisrKysgYi9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9jdW1lbnQuY3Bw CitAQCAtNDMzLDggKzQzMywxNiBAQCB2b2lkIFFTdmdUaW55RG9jdW1lbnQ6OmRyYXcoUVBhaW50 ZXIgKnAsIFFTdmdFeHRyYVN0YXRlcyAmKQorICAgICBkcmF3KHApOworIH0KKyAKKytzdGF0aWMg Ym9vbCBpc1ZhbGlkTWF0cml4KGNvbnN0IFFUcmFuc2Zvcm0gJnRyYW5zZm9ybSkKKyt7CisrICAg IHFyZWFsIGRldGVybWluYW50ID0gdHJhbnNmb3JtLmRldGVybWluYW50KCk7CisrICAgIHJldHVy biBxSXNGaW5pdGUoZGV0ZXJtaW5hbnQpOworK30KKysKKyB2b2lkIFFTdmdUaW55RG9jdW1lbnQ6 Om1hcFNvdXJjZVRvVGFyZ2V0KFFQYWludGVyICpwLCBjb25zdCBRUmVjdEYgJnRhcmdldFJlY3Qs IGNvbnN0IFFSZWN0RiAmc291cmNlUmVjdCkKKyB7CisrICAgIFFUcmFuc2Zvcm0gb2xkVHJhbnNm b3JtID0gcC0+d29ybGRUcmFuc2Zvcm0oKTsKKysKKyAgICAgUVJlY3RGIHRhcmdldCA9IHRhcmdl dFJlY3Q7CisgICAgIGlmICh0YXJnZXQuaXNFbXB0eSgpKSB7CisgICAgICAgICBRUGFpbnREZXZp Y2UgKmRldiA9IHAtPmRldmljZSgpOworQEAgLTQ4Nyw2ICs0OTUsOSBAQCB2b2lkIFFTdmdUaW55 RG9jdW1lbnQ6Om1hcFNvdXJjZVRvVGFyZ2V0KFFQYWludGVyICpwLCBjb25zdCBRUmVjdEYgJnRh cmdldFJlY3QsCisgICAgICAgICB9CisgI2VuZGlmCisgICAgIH0KKysKKysgICAgaWYgKCFpc1Zh bGlkTWF0cml4KHAtPndvcmxkVHJhbnNmb3JtKCkpKQorKyAgICAgICAgcC0+c2V0V29ybGRUcmFu c2Zvcm0ob2xkVHJhbnNmb3JtKTsKKyB9CisgCisgUVJlY3RGIFFTdmdUaW55RG9jdW1lbnQ6OmJv dW5kc09uRWxlbWVudChjb25zdCBRU3RyaW5nICZpZCkgY29uc3QKK2RpZmYgLS1naXQgYS9xdHN2 Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcCBiL3F0c3ZnL3Rl c3RzL2F1dG8vcXN2Z3JlbmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIuY3BwCitpbmRleCAzNmM3NmVj Li5kYjcxZTAyIDEwMDY0NAorLS0tIGEvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0 X3FzdmdyZW5kZXJlci5jcHAKKysrKyBiL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2Z3JlbmRlcmVyL3Rz dF9xc3ZncmVuZGVyZXIuY3BwCitAQCAtODYsNiArODYsOCBAQCBwcml2YXRlIHNsb3RzOgorICAg ICB2b2lkIG9zc19mdXp6XzIzNzMxKCk7CisgICAgIHZvaWQgb3NzX2Z1enpfMjQxMzEoKTsKKyAg ICAgdm9pZCBvc3NfZnV6el8yNDczOCgpOworKyAgICB2b2lkIGlsbGVnYWxBbmltYXRlVHJhbnNm b3JtX2RhdGEoKTsKKysgICAgdm9pZCBpbGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybSgpOworIAorICNp Zm5kZWYgUVRfTk9fQ09NUFJFU1MKKyAgICAgdm9pZCB0ZXN0R3pMb2FkaW5nKCk7CitAQCAtMTY0 Niw1ICsxNjQ4LDIyIEBAIHZvaWQgdHN0X1FTdmdSZW5kZXJlcjo6b3NzX2Z1enpfMjQ3MzgoKQor ICAgICBRU3ZnUmVuZGVyZXIoKS5sb2FkKFFCeXRlQXJyYXkoIjxzdmc+PHBhdGggZD1cImEgMiAx ZS0yMTIuLi4uLlwiPiIpKTsKKyB9CisgCisrdm9pZCB0c3RfUVN2Z1JlbmRlcmVyOjppbGxlZ2Fs QW5pbWF0ZVRyYW5zZm9ybV9kYXRhKCkKKyt7CisrICAgIFFUZXN0OjphZGRDb2x1bW48UUJ5dGVB cnJheT4oInN2ZyIpOworKworKyAgICBRVGVzdDo6bmV3Um93KCJjYXNlMSIpIDw8IFFCeXRlQXJy YXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1cInJvdGF0ZVwiIGJlZ2luPVwiMVwiIGR1 cj1cIjJcIiB2YWx1ZXM9XCI4LDAsNSwwXCI+Iik7CisrICAgIFFUZXN0OjpuZXdSb3coImNhc2Uy IikgPDwgUUJ5dGVBcnJheSgiPHN2Zz48YW5pbWF0ZVRyYW5zZm9ybSB0eXBlPVwicm90YXRlXCIg YmVnaW49XCIxXCIgZHVyPVwiMlwiIHZhbHVlcz1cIjEsMlwiPiIpOworKyAgICBRVGVzdDo6bmV3 Um93KCJjYXNlMyIpIDw8IFFCeXRlQXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1c InJvdGF0ZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiBmcm9tPVwiLi4gNSAyXCIgdG89XCJmXCI+ Iik7CisrICAgIFFUZXN0OjpuZXdSb3coImNhc2U0IikgPDwgUUJ5dGVBcnJheSgiPHN2Zz48YW5p bWF0ZVRyYW5zZm9ybSB0eXBlPVwic2NhbGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgYnk9XCIt LSwuLlwiPiIpOworK30KKysKKyt2b2lkIHRzdF9RU3ZnUmVuZGVyZXI6OmlsbGVnYWxBbmltYXRl VHJhbnNmb3JtKCkKKyt7CisrICAgIFFGRVRDSChRQnl0ZUFycmF5LCBzdmcpOworKyAgICBRU3Zn UmVuZGVyZXIgcmVuZGVyZXI7CisrICAgIFFWRVJJRlkoIXJlbmRlcmVyLmxvYWQoc3ZnKSk7IC8v IGFsc28gc2hvdWxkbid0IGFzc2VydAorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RU3ZnUmVuZGVy ZXIpCisgI2luY2x1ZGUgInRzdF9xc3ZncmVuZGVyZXIubW9jIgorU3VibW9kdWxlIHF0dG9vbHMg NjkxNGY3YzguLjA5MGU1MjZlOgorZGlmZiAtLWdpdCBhL3F0dG9vbHMvc3JjL2Fzc2lzdGFudC9x aGVscGdlbmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNwcCBiL3F0dG9vbHMvc3JjL2Fzc2lzdGFudC9x aGVscGdlbmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNwcAoraW5kZXggZmVhYjFlMmQ1Li5jYmZiODI1 MDcgMTAwNjQ0CistLS0gYS9xdHRvb2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVs cGdlbmVyYXRvci5jcHAKKysrKyBiL3F0dG9vbHMvc3JjL2Fzc2lzdGFudC9xaGVscGdlbmVyYXRv ci9oZWxwZ2VuZXJhdG9yLmNwcAorQEAgLTQ0NSw3ICs0NDUsOSBAQCBib29sIEhlbHBHZW5lcmF0 b3JQcml2YXRlOjppbnNlcnRGaWxlcyhjb25zdCBRU3RyaW5nTGlzdCAmZmlsZXMsIGNvbnN0IFFT dHJpbmcgJgorICAgICBpZiAoZmlsdGVyU2V0SWQgPCAwKQorICAgICAgICAgcmV0dXJuIGZhbHNl OworICAgICArK2ZpbHRlclNldElkOworLSAgICBmb3IgKGludCBhdHRJZCA6IHFBc0NvbnN0KGZp bHRlckF0dHMpKSB7CisrICAgIFFMaXN0PGludD4gYXR0VmFsdWVzID0gZmlsdGVyQXR0cy52YWx1 ZXMoKTsKKysgICAgc3RkOjpzb3J0KGF0dFZhbHVlcy5iZWdpbigpLCBhdHRWYWx1ZXMuZW5kKCkp OworKyAgICBmb3IgKGludCBhdHRJZCA6IHFBc0NvbnN0KGF0dFZhbHVlcykpIHsKKyAgICAgICAg IG1fcXVlcnktPnByZXBhcmUoUUxhdGluMVN0cmluZygiSU5TRVJUIElOVE8gRmlsZUF0dHJpYnV0 ZVNldFRhYmxlICIKKyAgICAgICAgICAgICAiVkFMVUVTKD8sID8pIikpOworICAgICAgICAgbV9x dWVyeS0+YmluZFZhbHVlKDAsIGZpbHRlclNldElkKTsKK1N1Ym1vZHVsZSBxdHdheWxhbmQgZGZi MDEyOWMuLjI5MDRlMWIzOgorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2NvbmZp Z3VyZS5qc29uIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24KK2luZGV4IDJm NDI0NTgwLi4yOTIyMjM1NyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2NvbmZp Z3VyZS5qc29uCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbgorQEAg LTE0OSw4ICsxNDksNyBAQAorICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZiIKKyAgICAgICAg ICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgImxpYnMiOiAiLWxkcm0i LAorLSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAgICAgICJ1c2UiOiAiZHJtIGVn bCIKKyAgICAgICAgIH0sCisgICAgICAgICAidnVsa2FuLXNlcnZlci1idWZmZXIiOiB7CisgICAg ICAgICAgICAgImxhYmVsIjogIlZ1bGthbiBCdWZmZXIgU2hhcmluZyIsCitAQCAtMTY4LDcgKzE2 Nyw4IEBACisgICAgICAgICAgICAgICAgICAgICAiZXhwb3J0QWxsb2NJbmZvLmhhbmRsZVR5cGVz ID0gVktfRVhURVJOQUxfTUVNT1JZX0hBTkRMRV9UWVBFX09QQVFVRV9GRF9CSVRfS0hSOyIsCisg ICAgICAgICAgICAgICAgICAgICAicmV0dXJuIDA7IgorICAgICAgICAgICAgICAgICBdCistICAg ICAgICAgICAgfQorKyAgICAgICAgICAgIH0sCisrICAgICAgICAgICAgInVzZSI6ICJ3YXlsYW5k LWNsaWVudCIKKyAgICAgICAgIH0sCisgICAgICAgICAiZWdsXzFfNS13YXlsYW5kIjogeworICAg ICAgICAgICAgICJsYWJlbCI6ICJFR0wgMS41IHdpdGggV2F5bGFuZCBQbGF0Zm9ybSIsCitAQCAt MTgzLDcgKzE4Myw3IEBACisgICAgICAgICAgICAgICAgICAgICAiZWdsR2V0UGxhdGZvcm1EaXNw bGF5KEVHTF9QTEFURk9STV9XQVlMQU5EX0VYVCwgKHN0cnVjdCB3bF9kaXNwbGF5ICopKG51bGxw dHIpLCBudWxscHRyKTsiCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9LAorLSAg ICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAgICAgICJ1c2UiOiAiZWdsIHdheWxhbmQt Y2xpZW50IgorICAgICAgICAgfQorICAgICB9LAorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9z cmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5jcHAgYi9xdHdheWxhbmQv c3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uY3BwCitpbmRleCAxMjVi MWUxOS4uZWRjY2ZlNjMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwv cXdheWxhbmRjbGllbnRleHRlbnNpb24uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9n bG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uY3BwCitAQCAtNzQsNyArNzQsMTAgQEAgdm9p ZCBRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6OmhhbmRsZVJlZ2lzdHJ5R2xvYmFsKHZv aWQgKmRhdGEsIDo6d2xfcmVnaXMKKyB2b2lkIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjphZGRS ZWdpc3RyeUxpc3RlbmVyKCkKKyB7CisgICAgIFFfRChRV2F5bGFuZENsaWVudEV4dGVuc2lvbik7 CistICAgIGQtPndheWxhbmRJbnRlZ3JhdGlvbi0+ZGlzcGxheSgpLT5hZGRSZWdpc3RyeUxpc3Rl bmVyKCZRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6OmhhbmRsZVJlZ2lzdHJ5R2xvYmFs LCB0aGlzKTsKKysgICAgaWYgKCFkLT5yZWdpc3RlcmVkKSB7CisrICAgICAgICBkLT53YXlsYW5k SW50ZWdyYXRpb24tPmRpc3BsYXkoKS0+YWRkUmVnaXN0cnlMaXN0ZW5lcigmUVdheWxhbmRDbGll bnRFeHRlbnNpb25Qcml2YXRlOjpoYW5kbGVSZWdpc3RyeUdsb2JhbCwgdGhpcyk7CisrICAgICAg ICBkLT5yZWdpc3RlcmVkID0gdHJ1ZTsKKysgICAgfQorIH0KKyAKKyBRV2F5bGFuZENsaWVudEV4 dGVuc2lvbjo6UVdheWxhbmRDbGllbnRFeHRlbnNpb24oY29uc3QgaW50IHZlcikKK0BAIC04OCw2 ICs5MSwxMyBAQCBRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6UVdheWxhbmRDbGllbnRFeHRlbnNp b24oY29uc3QgaW50IHZlcikKKyAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAi YWRkUmVnaXN0cnlMaXN0ZW5lciIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyB9CisgCisrUVdh eWxhbmRDbGllbnRFeHRlbnNpb246On5RV2F5bGFuZENsaWVudEV4dGVuc2lvbigpCisreworKyAg ICBRX0QoUVdheWxhbmRDbGllbnRFeHRlbnNpb24pOworKyAgICBpZiAoZC0+cmVnaXN0ZXJlZCAm JiAhUUNvcmVBcHBsaWNhdGlvbjo6Y2xvc2luZ0Rvd24oKSkKKysgICAgICAgIGQtPndheWxhbmRJ bnRlZ3JhdGlvbi0+ZGlzcGxheSgpLT5yZW1vdmVMaXN0ZW5lcigmUVdheWxhbmRDbGllbnRFeHRl bnNpb25Qcml2YXRlOjpoYW5kbGVSZWdpc3RyeUdsb2JhbCwgdGhpcyk7CisrfQorKworIFF0V2F5 bGFuZENsaWVudDo6UVdheWxhbmRJbnRlZ3JhdGlvbiAqUVdheWxhbmRDbGllbnRFeHRlbnNpb246 OmludGVncmF0aW9uKCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRV2F5bGFuZENsaWVudEV4 dGVuc2lvbik7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXls YW5kY2xpZW50ZXh0ZW5zaW9uLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxh bmRjbGllbnRleHRlbnNpb24uaAoraW5kZXggOTgyNzJlNTcuLjViZDI4Mzk4IDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmgK KysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lv bi5oCitAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5 bGFuZENsaWVudEV4dGVuc2lvbiA6IHB1YmxpYyBRT2JqZWN0CisgICAgIFFfUFJPUEVSVFkoYm9v bCBhY3RpdmUgUkVBRCBpc0FjdGl2ZSBOT1RJRlkgYWN0aXZlQ2hhbmdlZCkKKyBwdWJsaWM6Cisg ICAgIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXJzaW9uKTsKKysgICAgflFX YXlsYW5kQ2xpZW50RXh0ZW5zaW9uKCk7CisgCisgICAgIFF0V2F5bGFuZENsaWVudDo6UVdheWxh bmRJbnRlZ3JhdGlvbiAqaW50ZWdyYXRpb24oKSBjb25zdDsKKyAgICAgaW50IHZlcnNpb24oKSBj b25zdDsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRj bGllbnRleHRlbnNpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5k Y2xpZW50ZXh0ZW5zaW9uX3AuaAoraW5kZXggNjljYzQ2YTAuLjkwOTFlZmJlIDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3Au aAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5z aW9uX3AuaAorQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgorICAgICBRdFdheWxhbmRDbGllbnQ6 OlFXYXlsYW5kSW50ZWdyYXRpb24gKndheWxhbmRJbnRlZ3JhdGlvbiA9IG51bGxwdHI7CisgICAg IGludCB2ZXJzaW9uID0gLTE7CisgICAgIGJvb2wgYWN0aXZlID0gZmFsc2U7CisrICAgIGJvb2wg cmVnaXN0ZXJlZCA9IGZhbHNlOworIH07CisgCisgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBP UlQgUVdheWxhbmRDbGllbnRFeHRlbnNpb25UZW1wbGF0ZVByaXZhdGUgOiBwdWJsaWMgUVdheWxh bmRDbGllbnRFeHRlbnNpb25Qcml2YXRlCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkYXRhZGV2aWNlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k ZGF0YWRldmljZS5jcHAKK2luZGV4IDdlMmUzMzA4Li5lM2U2MGVkNSAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5jcHAKKysrKyBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5jcHAKK0BAIC03Miw2ICs3Miw4IEBAIFFX YXlsYW5kRGF0YURldmljZTo6UVdheWxhbmREYXRhRGV2aWNlKFFXYXlsYW5kRGF0YURldmljZU1h bmFnZXIgKm1hbmFnZXIsIFFXYXlsCisgCisgUVdheWxhbmREYXRhRGV2aWNlOjp+UVdheWxhbmRE YXRhRGV2aWNlKCkKKyB7CisrICAgIGlmICh3bF9kYXRhX2RldmljZV9nZXRfdmVyc2lvbihvYmpl Y3QoKSkgPj0gV0xfREFUQV9ERVZJQ0VfUkVMRUFTRV9TSU5DRV9WRVJTSU9OKQorKyAgICAgICAg cmVsZWFzZSgpOworIH0KKyAKKyBRV2F5bGFuZERhdGFPZmZlciAqUVdheWxhbmREYXRhRGV2aWNl OjpzZWxlY3Rpb25PZmZlcigpIGNvbnN0CitAQCAtMTEwLDcgKzExMiw3IEBAIFFXYXlsYW5kRGF0 YU9mZmVyICpRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdPZmZlcigpIGNvbnN0CisgICAgIHJldHVy biBtX2RyYWdPZmZlci5kYXRhKCk7CisgfQorIAorLWJvb2wgUVdheWxhbmREYXRhRGV2aWNlOjpz dGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUVdheWxhbmRXaW5kb3cgKmljb24pCisrYm9v bCBRV2F5bGFuZERhdGFEZXZpY2U6OnN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRdDo6 RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgUVdheWxhbmRXaW5kb3cgKmljb24pCisgewor ICAgICBhdXRvICpzZWF0ID0gbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKTsKKyAgICAg YXV0byAqb3JpZ2luID0gc2VhdC0+cG9pbnRlckZvY3VzKCk7CitAQCAtMTIzLDcgKzEyNSwyOCBA QCBib29sIFFXYXlsYW5kRGF0YURldmljZTo6c3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEs IFFXYXlsYW5kV2luZG93ICppY29uKQorICAgICB9CisgCisgICAgIG1fZHJhZ1NvdXJjZS5yZXNl dChuZXcgUVdheWxhbmREYXRhU291cmNlKG1fZGlzcGxheS0+ZG5kU2VsZWN0aW9uSGFuZGxlcigp LCBtaW1lRGF0YSkpOworKworKyAgICBpZiAod2xfZGF0YV9kZXZpY2VfZ2V0X3ZlcnNpb24ob2Jq ZWN0KCkpID49IDMpCisrICAgICAgICBtX2RyYWdTb3VyY2UtPnNldF9hY3Rpb25zKGRyb3BBY3Rp b25zVG9XbChzdXBwb3J0ZWRBY3Rpb25zKSk7CisrCisgICAgIGNvbm5lY3QobV9kcmFnU291cmNl LmRhdGEoKSwgJlFXYXlsYW5kRGF0YVNvdXJjZTo6Y2FuY2VsbGVkLCB0aGlzLCAmUVdheWxhbmRE YXRhRGV2aWNlOjpkcmFnU291cmNlQ2FuY2VsbGVkKTsKKysgICAgY29ubmVjdChtX2RyYWdTb3Vy Y2UuZGF0YSgpLCAmUVdheWxhbmREYXRhU291cmNlOjpkbmRSZXNwb25zZVVwZGF0ZWQsIHRoaXMs IFt0aGlzXShib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rpb24pIHsKKysgICAgICAg ICAgICBhdXRvIGRyYWcgPSBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0 aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpOworKyAgICAgICAgICAg IC8vIGluIG9sZCB2ZXJzaW9ucyBkcm9wIGFjdGlvbiBpcyBub3Qgc2V0LCBzbyB3ZSBndWVzcwor KyAgICAgICAgICAgIGlmICh3bF9kYXRhX3NvdXJjZV9nZXRfdmVyc2lvbihtX2RyYWdTb3VyY2Ut Pm9iamVjdCgpKSA8IDMpIHsKKysgICAgICAgICAgICAgICAgZHJhZy0+c2V0UmVzcG9uc2UoYWNj ZXB0ZWQpOworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIFFQbGF0Zm9y bURyb3BRdFJlc3BvbnNlIHJlc3BvbnNlKGFjY2VwdGVkLCBhY3Rpb24pOworKyAgICAgICAgICAg ICAgICBkcmFnLT5zZXRSZXNwb25zZShyZXNwb25zZSk7CisrICAgICAgICAgICAgfQorKyAgICB9 KTsKKysgICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxhbmREYXRhU291cmNl OjpkbmREcm9wcGVkLCB0aGlzLCBbXShib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rp b24pIHsKKysgICAgICAgIFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlIHJlc3BvbnNlKGFjY2VwdGVk LCBhY3Rpb24pOworKyAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBs aWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+c2V0RHJvcFJl c3BvbnNlKHJlc3BvbnNlKTsKKysgICAgfSk7CisrICAgIGNvbm5lY3QobV9kcmFnU291cmNlLmRh dGEoKSwgJlFXYXlsYW5kRGF0YVNvdXJjZTo6ZmluaXNoZWQsIHRoaXMsIFtdKCkgeworKyAgICAg ICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBs YXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+ZmluaXNoRHJhZygpOworKyAgICB9KTsKKyAK KyAgICAgc3RhcnRfZHJhZyhtX2RyYWdTb3VyY2UtPm9iamVjdCgpLCBvcmlnaW4tPndsU3VyZmFj ZSgpLCBpY29uLT53bFN1cmZhY2UoKSwgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+ c2VyaWFsKCkpOworICAgICByZXR1cm4gdHJ1ZTsKK0BAIC0xNTIsNyArMTc1LDcgQEAgdm9pZCBR V2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2Ryb3AoKQorICAgICAgICAgc3VwcG9ydGVk QWN0aW9ucyA9IGRyYWctPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIGlmIChtX2Ry YWdPZmZlcikgeworICAgICAgICAgZHJhZ0RhdGEgPSBtX2RyYWdPZmZlci0+bWltZURhdGEoKTsK Ky0gICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0OjpNb3ZlQWN0 aW9uIHwgUXQ6OkxpbmtBY3Rpb247CisrICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gbV9kcmFn T2ZmZXItPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHJldHVy bjsKKyAgICAgfQorQEAgLTE2Miw3ICsxODUsMTEgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6 OmRhdGFfZGV2aWNlX2Ryb3AoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUd1aUFwcGxpY2F0aW9uOjpr ZXlib2FyZE1vZGlmaWVycygpKTsKKyAKKyAgICAgaWYgKGRyYWcpIHsKKy0gICAgICAgIHN0YXRp Y19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUlu dGVncmF0aW9uKCktPmRyYWcoKSktPmZpbmlzaERyYWcocmVzcG9uc2UpOworKyAgICAgICAgYXV0 byBkcmFnID0gIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2 YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSk7CisrICAgICAgICBkcmFnLT5zZXRE cm9wUmVzcG9uc2UocmVzcG9uc2UpOworKyAgICAgICAgZHJhZy0+ZmluaXNoRHJhZygpOworKyAg ICB9IGVsc2UgaWYgKG1fZHJhZ09mZmVyKSB7CisrICAgICAgICBtX2RyYWdPZmZlci0+ZmluaXNo KCk7CisgICAgIH0KKyB9CisgCitAQCAtMTg2LDcgKzIxMyw3IEBAIHZvaWQgUVdheWxhbmREYXRh RGV2aWNlOjpkYXRhX2RldmljZV9lbnRlcih1aW50MzJfdCBzZXJpYWwsIHdsX3N1cmZhY2UgKnN1 cmZhY2UsCisgICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gZHJhZy0+c3VwcG9ydGVkQWN0aW9u cygpOworICAgICB9IGVsc2UgaWYgKG1fZHJhZ09mZmVyKSB7CisgICAgICAgICBkcmFnRGF0YSA9 IG1fZHJhZ09mZmVyLT5taW1lRGF0YSgpOworLSAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IFF0 OjpDb3B5QWN0aW9uIHwgUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6TGlua0FjdGlvbjsKKysgICAgICAg IHN1cHBvcnRlZEFjdGlvbnMgPSBtX2RyYWdPZmZlci0+c3VwcG9ydGVkQWN0aW9ucygpOworICAg ICB9CisgCisgICAgIGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSA9IFFX aW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZURyYWcobV9kcmFnV2luZG93LCBkcmFnRGF0YSwg bV9kcmFnUG9pbnQsIHN1cHBvcnRlZEFjdGlvbnMsCitAQCAtMTk3LDExICsyMjQsNyBAQCB2b2lk IFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZW50ZXIodWludDMyX3Qgc2VyaWFsLCB3 bF9zdXJmYWNlICpzdXJmYWNlLAorICAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+ KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+ c2V0UmVzcG9uc2UocmVzcG9uc2UpOworICAgICB9CisgCistICAgIGlmIChyZXNwb25zZS5pc0Fj Y2VwdGVkKCkpIHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5v YmplY3QoKSwgbV9lbnRlclNlcmlhbCwgbV9kcmFnT2ZmZXItPmZpcnN0Rm9ybWF0KCkudG9VdGY4 KCkuY29uc3REYXRhKCkpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgd2xfZGF0YV9vZmZlcl9h Y2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2VyaWFsLCBudWxscHRyKTsKKy0g ICAgfQorKyAgICBzZW5kUmVzcG9uc2Uoc3VwcG9ydGVkQWN0aW9ucywgcmVzcG9uc2UpOworIH0K KyAKKyB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfbGVhdmUoKQorQEAgLTIz NSwxMCArMjU4LDEwIEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9tb3Rp b24odWludDMyX3QgdGltZSwgd2xfZml4ZWRfdCB4LCB3bF9maXhlCisgICAgICAgICBzdXBwb3J0 ZWRBY3Rpb25zID0gZHJhZy0+c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9IGVsc2UgeworICAg ICAgICAgZHJhZ0RhdGEgPSBtX2RyYWdPZmZlci0+bWltZURhdGEoKTsKKy0gICAgICAgIHN1cHBv cnRlZEFjdGlvbnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OkxpbmtB Y3Rpb247CisrICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gbV9kcmFnT2ZmZXItPnN1cHBvcnRl ZEFjdGlvbnMoKTsKKyAgICAgfQorIAorLSAgICBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSByZXNw b25zZSA9IFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZURyYWcobV9kcmFnV2luZG93LCBk cmFnRGF0YSwgbV9kcmFnUG9pbnQsIHN1cHBvcnRlZEFjdGlvbnMsCisrICAgIGNvbnN0IFFQbGF0 Zm9ybURyYWdRdFJlc3BvbnNlIHJlc3BvbnNlID0gUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFu ZGxlRHJhZyhtX2RyYWdXaW5kb3csIGRyYWdEYXRhLCBtX2RyYWdQb2ludCwgc3VwcG9ydGVkQWN0 aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFHdWlBcHBsaWNhdGlvbjo6bW91c2VCdXR0b25zKCks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRR3VpQXBwbGljYXRpb246OmtleWJvYXJkTW9kaWZpZXJzKCkp OworIAorQEAgLTI0NiwxMSArMjY5LDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFf ZGV2aWNlX21vdGlvbih1aW50MzJfdCB0aW1lLCB3bF9maXhlZF90IHgsIHdsX2ZpeGUKKyAgICAg ICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpw bGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPnNldFJlc3BvbnNlKHJlc3BvbnNlKTsKKyAg ICAgfQorIAorLSAgICBpZiAocmVzcG9uc2UuaXNBY2NlcHRlZCgpKSB7CistICAgICAgICB3bF9k YXRhX29mZmVyX2FjY2VwdChtX2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG1f ZHJhZ09mZmVyLT5maXJzdEZvcm1hdCgpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKy0gICAgfSBl bHNlIHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5vYmplY3Qo KSwgbV9lbnRlclNlcmlhbCwgbnVsbHB0cik7CistICAgIH0KKysgICAgc2VuZFJlc3BvbnNlKHN1 cHBvcnRlZEFjdGlvbnMsIHJlc3BvbnNlKTsKKyB9CisgI2VuZGlmIC8vIFFUX0NPTkZJRyhkcmFn YW5kZHJvcCkKKyAKK0BAIC0yNzcsMTQgKzI5NiwxMCBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmlj ZTo6c2VsZWN0aW9uU291cmNlQ2FuY2VsbGVkKCkKKyAjaWYgUVRfQ09ORklHKGRyYWdhbmRkcm9w KQorIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkcmFnU291cmNlQ2FuY2VsbGVkKCkKKyB7Cisr ICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpw bGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPmZpbmlzaERyYWcoKTsKKyAgICAgbV9kcmFn U291cmNlLnJlc2V0KCk7CisgfQorIAorLXZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkcmFnU291 cmNlVGFyZ2V0Q2hhbmdlZChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSkKKy17CistICAgIHN0YXRp Y19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUlu dGVncmF0aW9uKCktPmRyYWcoKSktPnVwZGF0ZVRhcmdldChtaW1lVHlwZSk7CistfQorLQorIFFQ b2ludCBRV2F5bGFuZERhdGFEZXZpY2U6OmNhbGN1bGF0ZURyYWdQb3NpdGlvbihpbnQgeCwgaW50 IHksIFFXaW5kb3cgKnduZCkgY29uc3QKKyB7CisgICAgIFFQb2ludCBwbnQod2xfZml4ZWRfdG9f aW50KHgpLCB3bF9maXhlZF90b19pbnQoeSkpOworQEAgLTI5Nyw2ICszMTIsMzMgQEAgUVBvaW50 IFFXYXlsYW5kRGF0YURldmljZTo6Y2FsY3VsYXRlRHJhZ1Bvc2l0aW9uKGludCB4LCBpbnQgeSwg UVdpbmRvdyAqd25kKSBjb24KKyAgICAgfQorICAgICByZXR1cm4gcG50OworIH0KKysKKyt2b2lk IFFXYXlsYW5kRGF0YURldmljZTo6c2VuZFJlc3BvbnNlKFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0 ZWRBY3Rpb25zLCBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2UpCisrewor KyAgICBpZiAocmVzcG9uc2UuaXNBY2NlcHRlZCgpKSB7CisrICAgICAgICBpZiAod2xfZGF0YV9k ZXZpY2VfZ2V0X3ZlcnNpb24ob2JqZWN0KCkpID49IDMpCisrICAgICAgICAgICAgbV9kcmFnT2Zm ZXItPnNldF9hY3Rpb25zKGRyb3BBY3Rpb25zVG9XbChzdXBwb3J0ZWRBY3Rpb25zKSwgZHJvcEFj dGlvbnNUb1dsKHJlc3BvbnNlLmFjY2VwdGVkQWN0aW9uKCkpKTsKKysKKysgICAgICAgIG1fZHJh Z09mZmVyLT5hY2NlcHQobV9lbnRlclNlcmlhbCwgbV9kcmFnT2ZmZXItPmZpcnN0Rm9ybWF0KCkp OworKyAgICB9IGVsc2UgeworKyAgICAgICAgbV9kcmFnT2ZmZXItPmFjY2VwdChtX2VudGVyU2Vy aWFsLCBRU3RyaW5nKCkpOworKyAgICB9CisrfQorKworK2ludCBRV2F5bGFuZERhdGFEZXZpY2U6 OmRyb3BBY3Rpb25zVG9XbChRdDo6RHJvcEFjdGlvbnMgYWN0aW9ucykKKyt7CisrCisrICAgIGlu dCB3bEFjdGlvbnMgPSBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fTk9ORTsKKysg ICAgaWYgKGFjdGlvbnMgJiBRdDo6Q29weUFjdGlvbikKKysgICAgICAgIHdsQWN0aW9ucyB8PSBX TF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fQ09QWTsKKysgICAgaWYgKGFjdGlvbnMg JiAoUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6VGFyZ2V0TW92ZUFjdGlvbikpCisrICAgICAgICB3bEFj dGlvbnMgfD0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX01PVkU7CisrCisrICAg IC8vIHdheWxhbmQgZG9lcyBub3Qgc3VwcG9ydCBMaW5rQWN0aW9uIGF0IHRoZSB0aW1lIG9mIHdy aXRpbmcKKysgICAgcmV0dXJuIHdsQWN0aW9uczsKKyt9CisrCisrCisgI2VuZGlmIC8vIFFUX0NP TkZJRyhkcmFnYW5kZHJvcCkKKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkYXRhZGV2aWNlX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k ZGF0YWRldmljZV9wLmgKK2luZGV4IDE2YzNhZDI4Li44MDFkY2MyYyAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9wLmgKKysrKyBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9wLmgKK0BAIC02NCw2ICs2NCw3IEBAIFFU X1JFUVVJUkVfQ09ORklHKHdheWxhbmRfZGF0YWRldmljZSk7CisgUVRfQkVHSU5fTkFNRVNQQUNF CisgCisgY2xhc3MgUU1pbWVEYXRhOworK2NsYXNzIFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlOwor IGNsYXNzIFFXaW5kb3c7CisgCisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7CitAQCAtODks NyArOTAsNyBAQCBwdWJsaWM6CisgCisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAgICAg UVdheWxhbmREYXRhT2ZmZXIgKmRyYWdPZmZlcigpIGNvbnN0OworLSAgICBib29sIHN0YXJ0RHJh ZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRV2F5bGFuZFdpbmRvdyAqaWNvbik7CisrICAgIGJvb2wg c3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRB Y3Rpb25zLCBRV2F5bGFuZFdpbmRvdyAqaWNvbik7CisgICAgIHZvaWQgY2FuY2VsRHJhZygpOwor ICNlbmRpZgorIAorQEAgLTEwOSwxMyArMTEwLDE2IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAKKyAj aWYgUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorICAgICB2b2lkIGRyYWdTb3VyY2VDYW5jZWxsZWQo KTsKKy0gICAgdm9pZCBkcmFnU291cmNlVGFyZ2V0Q2hhbmdlZChjb25zdCBRU3RyaW5nICZtaW1l VHlwZSk7CisgI2VuZGlmCisgCisgcHJpdmF0ZToKKyAjaWYgUVRfQ09ORklHKGRyYWdhbmRkcm9w KQorICAgICBRUG9pbnQgY2FsY3VsYXRlRHJhZ1Bvc2l0aW9uKGludCB4LCBpbnQgeSwgUVdpbmRv dyAqd25kKSBjb25zdDsKKyAjZW5kaWYKKysgICAgdm9pZCBzZW5kUmVzcG9uc2UoUXQ6OkRyb3BB Y3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZy ZXNwb25zZSk7CisrCisrICAgIHN0YXRpYyBpbnQgZHJvcEFjdGlvbnNUb1dsKFF0OjpEcm9wQWN0 aW9ucyBkcm9wQWN0aW9ucyk7CisrCisgCisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5 ID0gbnVsbHB0cjsKKyAgICAgUVdheWxhbmRJbnB1dERldmljZSAqbV9pbnB1dERldmljZSA9IG51 bGxwdHI7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2 aWNlbWFuYWdlci5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2Vt YW5hZ2VyLmNwcAoraW5kZXggMzVkNjczMDcuLjZkYzRmNzdmIDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlci5jcHAKKysrKyBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwCitAQCAtNTAsOCAr NTAsOCBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50 IHsKKyAKKy1RV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyOjpRV2F5bGFuZERhdGFEZXZpY2VNYW5h Z2VyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwgdWludDMyX3QgaWQpCistICAgIDogd2xfZGF0 YV9kZXZpY2VfbWFuYWdlcihkaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgMSkKKytRV2F5bGFu ZERhdGFEZXZpY2VNYW5hZ2VyOjpRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFXYXlsYW5kRGlz cGxheSAqZGlzcGxheSwgaW50IHZlcnNpb24sIHVpbnQzMl90IGlkKQorKyAgICA6IHdsX2RhdGFf ZGV2aWNlX21hbmFnZXIoZGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIHFNaW4odmVyc2lvbiwg MykpCisgICAgICwgbV9kaXNwbGF5KGRpc3BsYXkpCisgeworICAgICAvLyBDcmVhdGUgdHJhbnNm ZXIgZGV2aWNlcyBmb3IgYWxsIGlucHV0IGRldmljZXMuCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9wLmggYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAoraW5kZXggYmQwNWMwZmIuLjUx MGQ5YmU0IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2 aWNlbWFuYWdlcl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRl dmljZW1hbmFnZXJfcC5oCitAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBRV2F5bGFuZElucHV0RGV2 aWNlOworIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kRGF0YURldmljZU1h bmFnZXIgOiBwdWJsaWMgUXRXYXlsYW5kOjp3bF9kYXRhX2RldmljZV9tYW5hZ2VyCisgeworIHB1 YmxpYzoKKy0gICAgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkgKmRp c3BsYXksIHVpbnQzMl90IGlkKTsKKysgICAgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihRV2F5 bGFuZERpc3BsYXkgKmRpc3BsYXksIGludCB2ZXJzaW9uLCB1aW50MzJfdCBpZCk7CisgICAgIH5R V2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKCkgb3ZlcnJpZGU7CisgCisgICAgIFFXYXlsYW5kRGF0 YURldmljZSAqZ2V0RGF0YURldmljZShRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljZSk7 CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3Bw IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCitpbmRleCAyMjk3 ZThhMS4uZmUwZWE4YzkgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRhdGFvZmZlci5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9m ZmVyLmNwcAorQEAgLTgyLDYgKzgyLDE1IEBAIFFNaW1lRGF0YSAqUVdheWxhbmREYXRhT2ZmZXI6 Om1pbWVEYXRhKCkKKyAgICAgcmV0dXJuIG1fbWltZURhdGEuZGF0YSgpOworIH0KKyAKKytRdDo6 RHJvcEFjdGlvbnMgUVdheWxhbmREYXRhT2ZmZXI6OnN1cHBvcnRlZEFjdGlvbnMoKSBjb25zdAor K3sKKysgICAgaWYgKHdsX2RhdGFfb2ZmZXJfZ2V0X3ZlcnNpb24oY29uc3RfY2FzdDw6OndsX2Rh dGFfb2ZmZXIqPihvYmplY3QoKSkpIDwgMykgeworKyAgICAgICAgcmV0dXJuIFF0OjpNb3ZlQWN0 aW9uIHwgUXQ6OkNvcHlBY3Rpb247CisrICAgIH0KKysKKysgICAgcmV0dXJuIG1fc3VwcG9ydGVk QWN0aW9uczsKKyt9CisrCisgdm9pZCBRV2F5bGFuZERhdGFPZmZlcjo6c3RhcnRSZWNlaXZpbmco Y29uc3QgUVN0cmluZyAmbWltZVR5cGUsIGludCBmZCkKKyB7CisgICAgIHJlY2VpdmUobWltZVR5 cGUsIGZkKTsKK0BAIC05Myw2ICsxMDIsMjIgQEAgdm9pZCBRV2F5bGFuZERhdGFPZmZlcjo6ZGF0 YV9vZmZlcl9vZmZlcihjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUpCisgICAgIG1fbWltZURhdGEt PmFwcGVuZEZvcm1hdChtaW1lX3R5cGUpOworIH0KKyAKKyt2b2lkIFFXYXlsYW5kRGF0YU9mZmVy OjpkYXRhX29mZmVyX2FjdGlvbih1aW50MzJfdCBkbmRfYWN0aW9uKQorK3sKKysgICAgUV9VTlVT RUQoZG5kX2FjdGlvbik7CisrICAgIC8vIFRoaXMgaXMgdGhlIGNvbXBvc2l0b3IgdGVsbGluZyB0 aGUgZHJhZyB0YXJnZXQgd2hhdCBhY3Rpb24gaXQgc2hvdWxkIHBlcmZvcm0KKysgICAgLy8gSXQg ZG9lcyBub3QgbWFwIG5pY2VseSBpbnRvIFF0IGZpbmFsIGRyb3Agc2VtYW50aWNzLCBvdGhlciB0 aGFuIHByZXRlbmRpbmcgdGhlcmUgaXMgb25seSBvbmUgc3VwcG9ydGVkIGFjdGlvbj8KKyt9Cisr Cisrdm9pZCBRV2F5bGFuZERhdGFPZmZlcjo6ZGF0YV9vZmZlcl9zb3VyY2VfYWN0aW9ucyh1aW50 MzJfdCBzb3VyY2VfYWN0aW9ucykKKyt7CisrICAgIG1fc3VwcG9ydGVkQWN0aW9ucyA9IFF0OjpE cm9wQWN0aW9ucygpOworKyAgICBpZiAoc291cmNlX2FjdGlvbnMgJiBXTF9EQVRBX0RFVklDRV9N QU5BR0VSX0RORF9BQ1RJT05fTU9WRSkKKysgICAgICAgIG1fc3VwcG9ydGVkQWN0aW9ucyB8PSBR dDo6TW92ZUFjdGlvbjsKKysgICAgaWYgKHNvdXJjZV9hY3Rpb25zICYgV0xfREFUQV9ERVZJQ0Vf TUFOQUdFUl9ETkRfQUNUSU9OX0NPUFkpCisrICAgICAgICBtX3N1cHBvcnRlZEFjdGlvbnMgfD0g UXQ6OkNvcHlBY3Rpb247CisrfQorKworIFFXYXlsYW5kTWltZURhdGE6OlFXYXlsYW5kTWltZURh dGEoUVdheWxhbmRBYnN0cmFjdERhdGFPZmZlciAqZGF0YU9mZmVyKQorICAgICA6IG1fZGF0YU9m ZmVyKGRhdGFPZmZlcikKKyB7CitAQCAtMTYzLDE3ICsxODgsMTggQEAgUVZhcmlhbnQgUVdheWxh bmRNaW1lRGF0YTo6cmV0cmlldmVEYXRhX3N5cyhjb25zdCBRU3RyaW5nICZtaW1lVHlwZSwgUVZh cmlhbnQ6OlQKKyAKKyBpbnQgUVdheWxhbmRNaW1lRGF0YTo6cmVhZERhdGEoaW50IGZkLCBRQnl0 ZUFycmF5ICZkYXRhKSBjb25zdAorIHsKKy0gICAgZmRfc2V0IHJlYWRzZXQ7CistICAgIEZEX1pF Uk8oJnJlYWRzZXQpOworLSAgICBGRF9TRVQoZmQsICZyZWFkc2V0KTsKKy0gICAgc3RydWN0IHRp bWV2YWwgdGltZW91dDsKKysgICAgc3RydWN0IHBvbGxmZCByZWFkc2V0OworKyAgICByZWFkc2V0 LmZkID0gZmQ7CisrICAgIHJlYWRzZXQuZXZlbnRzID0gUE9MTElOOworKyAgICBzdHJ1Y3QgdGlt ZXNwZWMgdGltZW91dDsKKyAgICAgdGltZW91dC50dl9zZWMgPSAxOworLSAgICB0aW1lb3V0LnR2 X3VzZWMgPSAwOworKyAgICB0aW1lb3V0LnR2X25zZWMgPSAwOworKworIAorICAgICBRX0ZPUkVW RVIgeworLSAgICAgICAgaW50IHJlYWR5ID0gc2VsZWN0KEZEX1NFVFNJWkUsICZyZWFkc2V0LCBu dWxscHRyLCBudWxscHRyLCAmdGltZW91dCk7CisrICAgICAgICBpbnQgcmVhZHkgPSBxdF9zYWZl X3BvbGwoJnJlYWRzZXQsIDEsICZ0aW1lb3V0KTsKKyAgICAgICAgIGlmIChyZWFkeSA8IDApIHsK Ky0gICAgICAgICAgICBxV2FybmluZygpIDw8ICJRV2F5bGFuZERhdGFPZmZlcjogc2VsZWN0KCkg ZmFpbGVkIjsKKysgICAgICAgICAgICBxV2FybmluZygpIDw8ICJRV2F5bGFuZERhdGFPZmZlcjog cXRfc2FmZV9wb2xsKCkgZmFpbGVkIjsKKyAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAg ICB9IGVsc2UgaWYgKHJlYWR5ID09IDApIHsKKyAgICAgICAgICAgICBxV2FybmluZygiUVdheWxh bmREYXRhT2ZmZXI6IHRpbWVvdXQgcmVhZGluZyBmcm9tIHBpcGUiKTsKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlcl9wLmggYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlcl9wLmgKK2luZGV4IDljZjE0ODNjLi42ZjY2NzM5OCAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyX3AuaAor KysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oCitAQCAtODIs NiArODIsNyBAQCBwdWJsaWM6CisgICAgIGV4cGxpY2l0IFFXYXlsYW5kRGF0YU9mZmVyKFFXYXls YW5kRGlzcGxheSAqZGlzcGxheSwgc3RydWN0IDo6d2xfZGF0YV9vZmZlciAqb2ZmZXIpOworICAg ICB+UVdheWxhbmREYXRhT2ZmZXIoKSBvdmVycmlkZTsKKyAgICAgUU1pbWVEYXRhICptaW1lRGF0 YSgpIG92ZXJyaWRlOworKyAgICBRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucygpIGNv bnN0OworIAorICAgICBRU3RyaW5nIGZpcnN0Rm9ybWF0KCkgY29uc3Q7CisgCitAQCAtODksMTAg KzkwLDEzIEBAIHB1YmxpYzoKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgZGF0YV9vZmZlcl9v ZmZlcihjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFf b2ZmZXJfc291cmNlX2FjdGlvbnModWludDMyX3Qgc291cmNlX2FjdGlvbnMpIG92ZXJyaWRlOwor KyAgICB2b2lkIGRhdGFfb2ZmZXJfYWN0aW9uKHVpbnQzMl90IGRuZF9hY3Rpb24pIG92ZXJyaWRl OworIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5ID0gbnVsbHB0 cjsKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRNaW1lRGF0YT4gbV9taW1lRGF0YTsKKysg ICAgUXQ6OkRyb3BBY3Rpb25zIG1fc3VwcG9ydGVkQWN0aW9uczsKKyB9OworIAorIAorZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAgYi9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2UuY3BwCitpbmRleCBmNDUxMjJmYi4u NTU5OWNiZDQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFz b3VyY2UuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2Uu Y3BwCitAQCAtMTAxLDcgKzEwMSwzMiBAQCB2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9z b3VyY2Vfc2VuZChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUsIGludDMyX3QgZmQpCisgCisgdm9p ZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX3RhcmdldChjb25zdCBRU3RyaW5nICZt aW1lX3R5cGUpCisgeworLSAgICBRX0VNSVQgdGFyZ2V0Q2hhbmdlZChtaW1lX3R5cGUpOworKyAg ICBtX2FjY2VwdGVkID0gIW1pbWVfdHlwZS5pc0VtcHR5KCk7CisrICAgIFFfRU1JVCBkbmRSZXNw b25zZVVwZGF0ZWQobV9hY2NlcHRlZCwgbV9kcm9wQWN0aW9uKTsKKyt9CisrCisrdm9pZCBRV2F5 bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX2FjdGlvbih1aW50MzJfdCBhY3Rpb24pCisrewor KyAgICBRdDo6RHJvcEFjdGlvbiBxdEFjdGlvbiA9IFF0OjpJZ25vcmVBY3Rpb247CisrCisrICAg IGlmIChhY3Rpb24gPT0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX01PVkUpCisr ICAgICAgICBxdEFjdGlvbiA9IFF0OjpNb3ZlQWN0aW9uOworKyAgICBlbHNlIGlmIChhY3Rpb24g PT0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX0NPUFkpCisrICAgICAgICBxdEFj dGlvbiA9IFF0OjpDb3B5QWN0aW9uOworKworKyAgICBtX2Ryb3BBY3Rpb24gPSBxdEFjdGlvbjsK KysgICAgUV9FTUlUIGRuZFJlc3BvbnNlVXBkYXRlZChtX2FjY2VwdGVkLCBtX2Ryb3BBY3Rpb24p OworK30KKysKKyt2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2VfZG5kX2Zpbmlz aGVkKCkKKyt7CisrICAgIFFfRU1JVCBmaW5pc2hlZCgpOworK30KKysKKyt2b2lkIFFXYXlsYW5k RGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2VfZG5kX2Ryb3BfcGVyZm9ybWVkKCkKKyt7CisrCisrICAg IFFfRU1JVCBkbmREcm9wcGVkKG1fYWNjZXB0ZWQsIG1fZHJvcEFjdGlvbik7CisgfQorIAorIH0K K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5o IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlX3AuaAoraW5kZXggMjVh ZmZmNzkuLjk2ZjA3YmMzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkYXRhc291cmNlX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh c291cmNlX3AuaAorQEAgLTc3LDE3ICs3NywyNSBAQCBwdWJsaWM6CisgICAgIFFNaW1lRGF0YSAq bWltZURhdGEoKSBjb25zdDsKKyAKKyBRX1NJR05BTFM6CistICAgIHZvaWQgdGFyZ2V0Q2hhbmdl ZChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUpOworICAgICB2b2lkIGNhbmNlbGxlZCgpOworKyAg ICB2b2lkIGZpbmlzaGVkKCk7CisrCisrICAgIHZvaWQgZG5kUmVzcG9uc2VVcGRhdGVkKGJvb2wg YWNjZXB0ZWQsIFF0OjpEcm9wQWN0aW9uIGFjdGlvbik7CisrICAgIHZvaWQgZG5kRHJvcHBlZChi b29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rpb24pOworIAorIHByb3RlY3RlZDoKKyAg ICAgdm9pZCBkYXRhX3NvdXJjZV9jYW5jZWxsZWQoKSBvdmVycmlkZTsKKyAgICAgdm9pZCBkYXRh X3NvdXJjZV9zZW5kKGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSwgaW50MzJfdCBmZCkgb3ZlcnJp ZGU7CisgICAgIHZvaWQgZGF0YV9zb3VyY2VfdGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlw ZSkgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9zb3VyY2VfZG5kX2Ryb3BfcGVyZm9ybWVkKCkg b3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9zb3VyY2VfZG5kX2ZpbmlzaGVkKCkgb3ZlcnJpZGU7 CisrICAgIHZvaWQgZGF0YV9zb3VyY2VfYWN0aW9uKHVpbnQzMl90IGFjdGlvbikgb3ZlcnJpZGU7 CisgCisgcHJpdmF0ZToKKyAgICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRy OworICAgICBRTWltZURhdGEgKm1fbWltZV9kYXRhID0gbnVsbHB0cjsKKysgICAgYm9vbCBtX2Fj Y2VwdGVkID0gZmFsc2U7CisrICAgIFF0OjpEcm9wQWN0aW9uIG1fZHJvcEFjdGlvbiA9IFF0OjpJ Z25vcmVBY3Rpb247CisgfTsKKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkaXNwbGF5LmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlz cGxheS5jcHAKK2luZGV4IGYxMGMxZjc5Li5jMDFlMjM4YiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZGlzcGxheS5jcHAKK0BAIC04NSwxMCArODUsMjAzIEBACisgCisgI2luY2x1 ZGUgPGVycm5vLmg+CisgCisrI2luY2x1ZGUgPHR1cGxlPiAvLyBmb3Igc3RkOjp0aWUKKysKKytz dGF0aWMgdm9pZCBjaGVja1dheWxhbmRFcnJvcihzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxheSkK Kyt7CisrICAgIGludCBlY29kZSA9IHdsX2Rpc3BsYXlfZ2V0X2Vycm9yKGRpc3BsYXkpOworKyAg ICBpZiAoKGVjb2RlID09IEVQSVBFIHx8IGVjb2RlID09IEVDT05OUkVTRVQpKSB7CisrICAgICAg ICAvLyBzcGVjaWFsIGNhc2UgdGhpcyB0byBwcm92aWRlIGEgbmljZXIgZXJyb3IKKysgICAgICAg IHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9uIGJyb2tlLiBEaWQgdGhlIFdheWxhbmQg Y29tcG9zaXRvciBkaWU/Iik7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBxV2FybmluZygiVGhl IFdheWxhbmQgY29ubmVjdGlvbiBleHBlcmllbmNlZCBhIGZhdGFsIGVycm9yOiAlcyIsIHN0cmVy cm9yKGVjb2RlKSk7CisrICAgIH0KKysgICAgX2V4aXQoMSk7CisrfQorKworIFFUX0JFR0lOX05B TUVTUEFDRQorIAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQgeworIAorK2NsYXNzIEV2ZW50 VGhyZWFkIDogcHVibGljIFFUaHJlYWQKKyt7CisrICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAg ICBlbnVtIE9wZXJhdGluZ01vZGUgeworKyAgICAgICAgRW1pdFRvRGlzcGF0Y2gsIC8vIEVtaXQg dGhlIHNpZ25hbCwgYWxsb3cgZGlzcGF0Y2hpbmcgaW4gYSBkaWZmZXJudCB0aHJlYWQuCisrICAg ICAgICBTZWxmRGlzcGF0Y2gsIC8vIERpc3BhdGNoIHRoZSBldmVudHMgaW5zaWRlIHRoaXMgdGhy ZWFkLgorKyAgICB9OworKworKyAgICBFdmVudFRocmVhZChzdHJ1Y3Qgd2xfZGlzcGxheSAqIHds LCBzdHJ1Y3Qgd2xfZXZlbnRfcXVldWUgKiBldl9xdWV1ZSwKKysgICAgICAgICAgICAgICAgT3Bl cmF0aW5nTW9kZSBtb2RlKQorKyAgICAgICAgOiBtX2ZkKHdsX2Rpc3BsYXlfZ2V0X2ZkKHdsKSkK KysgICAgICAgICwgbV9waXBlZmR7IC0xLCAtMSB9CisrICAgICAgICAsIG1fd2xkaXNwbGF5KHds KQorKyAgICAgICAgLCBtX3dsZXZxdWV1ZShldl9xdWV1ZSkKKysgICAgICAgICwgbV9tb2RlKG1v ZGUpCisrICAgICAgICAsIG1fcmVhZGluZyh0cnVlKQorKyAgICAgICAgLCBtX3F1aXR0aW5nKGZh bHNlKQorKyAgICB7CisrICAgICAgICBzZXRPYmplY3ROYW1lKFFTdHJpbmdMaXRlcmFsKCJXYXls YW5kRXZlbnRUaHJlYWQiKSk7CisrICAgIH0KKysKKysgICAgdm9pZCByZWFkQW5kRGlzcGF0Y2hF dmVudHMoKQorKyAgICB7CisrICAgICAgICAvKgorKyAgICAgICAgICogRGlzcGF0Y2ggcGVuZGlu ZyBldmVudHMgYW5kIGZsdXNoIHRoZSByZXF1ZXN0cyBhdCBsZWFzdCBvbmNlLiBJZiB0aGUgZXZl bnQgdGhyZWFkCisrICAgICAgICAgKiBpcyBub3QgcmVhZGluZywgdHJ5IHRvIGNhbGwgX3ByZXBh cmVfcmVhZCgpIHRvIGFsbG93IHRoZSBldmVudCB0aHJlYWQgdG8gcG9sbCgpLgorKyAgICAgICAg ICogSWYgdGhhdCBmYWlscywgcmUtdHJ5IGRpc3BhdGNoICYgZmx1c2ggYWdhaW4gdW50aWwgX3By ZXBhcmVfcmVhZCgpIGlzIHN1Y2Nlc3NmdWwuCisrICAgICAgICAgKgorKyAgICAgICAgICogVGhp cyBhbGxvdyBhbnkgY2FsbCB0byByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKSB0byBzdGFydCBldmVu dCB0aHJlYWQncyBwb2xsaW5nLAorKyAgICAgICAgICogbm90IG9ubHkgdGhlIG9uZSBpc3N1ZWQg ZnJvbSBldmVudCB0aHJlYWQncyB3YWl0Rm9yUmVhZGluZygpLCB3aGljaCBtZWFucyBmdW5jdGlv bnMKKysgICAgICAgICAqIGNhbGxlZCBmcm9tIGRpc3BhdGNoX3BlbmRpbmcoKSBjYW4gc2FmZWx5 IHNwaW4gYW4gZXZlbnQgbG9vcC4KKysgICAgICAgICAqLworKyAgICAgICAgZm9yICg7Oykgewor KyAgICAgICAgICAgIGlmIChkaXNwYXRjaFF1ZXVlUGVuZGluZygpIDwgMCkgeworKyAgICAgICAg ICAgICAgICBjaGVja1dheWxhbmRFcnJvcihtX3dsZGlzcGxheSk7CisrICAgICAgICAgICAgICAg IHJldHVybjsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgd2xfZGlzcGxheV9mbHVz aChtX3dsZGlzcGxheSk7CisrCisrICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBjaGVjayBpZiBl dmVudCB0aHJlYWQgaXMgcmVhZGluZyBldmVyeSB0aW1lIHdlIGRpc3BhdGNoCisrICAgICAgICAg ICAgLy8gc29tZXRoaW5nLCBhcyB0aGF0IG1heSByZWN1cnNpdmVseSBjYWxsIHRoaXMgZnVuY3Rp b24uCisrICAgICAgICAgICAgaWYgKG1fcmVhZGluZy5sb2FkQWNxdWlyZSgpKQorKyAgICAgICAg ICAgICAgICBicmVhazsKKysKKysgICAgICAgICAgICBpZiAocHJlcGFyZVJlYWRRdWV1ZSgpID09 IDApIHsKKysgICAgICAgICAgICAgICAgUU11dGV4TG9ja2VyIGwoJm1fbXV0ZXgpOworKyAgICAg ICAgICAgICAgICBtX3JlYWRpbmcuc3RvcmVSZWxlYXNlKHRydWUpOworKyAgICAgICAgICAgICAg ICBtX2NvbmQud2FrZU9uZSgpOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAg ICB9CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgdm9pZCBzdG9wKCkKKysgICAgeworKyAg ICAgICAgLy8gV2UgaGF2ZSB0byBib3RoIHdyaXRlIHRvIHRoZSBwaXBlIGFuZCBzZXQgdGhlIGZs YWcsIGFzIHRoZSB0aHJlYWQgbWF5IGJlCisrICAgICAgICAvLyBlaXRoZXIgaW4gdGhlIHBvbGwo KSBvciB3YWl0aW5nIGZvciBfcHJlcGFyZV9yZWFkKCkuCisrICAgICAgICBpZiAobV9waXBlZmRb MV0gIT0gLTEgJiYgd3JpdGUobV9waXBlZmRbMV0sICJcMCIsIDEpID09IC0xKQorKyAgICAgICAg ICAgIHFXYXJuaW5nKCJGYWlsZWQgdG8gd3JpdGUgdG8gdGhlIHBpcGU6ICVzLiIsIHN0cmVycm9y KGVycm5vKSk7CisrCisrICAgICAgICB7CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGwoJm1f bXV0ZXgpOworKyAgICAgICAgICAgIG1fcXVpdHRpbmcgPSB0cnVlOworKyAgICAgICAgICAgIG1f Y29uZC53YWtlT25lKCk7CisrICAgICAgICB9CisrCisrICAgICAgICB3YWl0KCk7CisrICAgIH0K KysKKytRX1NJR05BTFM6CisrICAgIHZvaWQgbmVlZFJlYWRBbmREaXNwYXRjaCgpOworKworK3By b3RlY3RlZDoKKysgICAgdm9pZCBydW4oKSBvdmVycmlkZQorKyAgICB7CisrICAgICAgICAvLyB3 ZSB1c2UgdGhpcyBwaXBlIHRvIG1ha2UgdGhlIGxvb3AgZXhpdCBvdGhlcndpc2UgaWYgd2Ugc2lt cGx5IHVzZWQgYSBmbGFnIG9uIHRoZSBsb29wIGNvbmRpdGlvbiwgaWYgc3RvcCgpIGdldHMKKysg ICAgICAgIC8vIGNhbGxlZCB3aGlsZSBwb2xsKCkgaXMgYmxvY2tpbmcgdGhlIHRocmVhZCB3aWxs IG5ldmVyIHF1aXQgc2luY2UgdGhlcmUgYXJlIG5vIHdheWxhbmQgbWVzc2FnZXMgY29taW5nIGFu eW1vcmUuCisrICAgICAgICBzdHJ1Y3QgUGlwZQorKyAgICAgICAgeworKyAgICAgICAgICAgIFBp cGUoaW50ICpmZHMpCisrICAgICAgICAgICAgICAgIDogZmRzKGZkcykKKysgICAgICAgICAgICB7 CisrICAgICAgICAgICAgICAgIGlmIChxdF9zYWZlX3BpcGUoZmRzKSAhPSAwKQorKyAgICAgICAg ICAgICAgICAgICAgcVdhcm5pbmcoIlBpcGUgY3JlYXRpb24gZmFpbGVkLiBRdWl0dGluZyBtYXkg aGFuZy4iKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgflBpcGUoKQorKyAgICAgICAg ICAgIHsKKysgICAgICAgICAgICAgICAgaWYgKGZkc1swXSAhPSAtMSkgeworKyAgICAgICAgICAg ICAgICAgICAgY2xvc2UoZmRzWzBdKTsKKysgICAgICAgICAgICAgICAgICAgIGNsb3NlKGZkc1sx XSk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAg aW50ICpmZHM7CisrICAgICAgICB9IHBpcGUobV9waXBlZmQpOworKworKyAgICAgICAgLy8gTWFr ZSB0aGUgbWFpbiB0aHJlYWQgY2FsbCB3bF9wcmVwYXJlX3JlYWQoKSwgZGlzcGF0Y2ggdGhlIHBl bmRpbmcgbWVzc2FnZXMgYW5kIGZsdXNoIHRoZQorKyAgICAgICAgLy8gb3V0Ym91bmQgb25lcy4g V2FpdCB1bnRpbCBpdCdzIGRvbmUgYmVmb3JlIHByb2NlZWRpbmcsIHVubGVzcyB3ZSdyZSB0b2xk IHRvIHF1aXQuCisrICAgICAgICB3aGlsZSAod2FpdEZvclJlYWRpbmcoKSkgeworKyAgICAgICAg ICAgIHBvbGxmZCBmZHNbMl0gPSB7IHsgbV9mZCwgUE9MTElOLCAwIH0sIHsgbV9waXBlZmRbMF0s IFBPTExJTiwgMCB9IH07CisrICAgICAgICAgICAgcG9sbChmZHMsIDIsIC0xKTsKKysKKysgICAg ICAgICAgICBpZiAoZmRzWzFdLnJldmVudHMgJiBQT0xMSU4pIHsKKysgICAgICAgICAgICAgICAg Ly8gd2UgZG9uJ3QgcmVhbGx5IGNhcmUgdG8gcmVhZCB0aGUgYnl0ZSB0aGF0IHdhcyB3cml0dGVu IGhlcmUgc2luY2Ugd2UncmUgY2xvc2luZyBkb3duCisrICAgICAgICAgICAgICAgIHdsX2Rpc3Bs YXlfY2FuY2VsX3JlYWQobV93bGRpc3BsYXkpOworKyAgICAgICAgICAgICAgICBicmVhazsKKysg ICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgaWYgKGZkc1swXS5yZXZlbnRzICYgUE9MTElO KQorKyAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKG1fd2xkaXNwbGF5KTsK KysgICAgICAgICAgICAgICAgLy8gVGhlIHBvbGxsIHdhcyBzdWNjZXNmdWxsIGFuZCB0aGUgZXZl bnQgdGhyZWFkIGRpZCB0aGUgd2xfZGlzcGxheV9yZWFkX2V2ZW50cygpLiBPbiB0aGUgbmV4dCBp dGVyYXRpb24gb2YgdGhlIGxvb3AKKysgICAgICAgICAgICAgICAgLy8gdGhlIGV2ZW50IHNlbnQg dG8gdGhlIG1haW4gdGhyZWFkIHdpbGwgY2F1c2UgaXQgdG8gZGlzcGF0Y2ggdGhlIG1lc3NhZ2Vz IGp1c3QgcmVhZCwgdW5sZXNzIHRoZSBsb29wIGV4aXRzIGluIHdoaWNoCisrICAgICAgICAgICAg ICAgIC8vIGNhc2Ugd2UgZG9uJ3QgY2FyZSBhbnltb3JlIGFib3V0IHRoZW0uCisrICAgICAgICAg ICAgZWxzZQorKyAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X2NhbmNlbF9yZWFkKG1fd2xkaXNw bGF5KTsKKysgICAgICAgIH0KKysgICAgfQorKworK3ByaXZhdGU6CisrICAgIGJvb2wgd2FpdEZv clJlYWRpbmcoKQorKyAgICB7CisrICAgICAgICBRX0FTU0VSVChRVGhyZWFkOjpjdXJyZW50VGhy ZWFkKCkgPT0gdGhpcyk7CisrCisrICAgICAgICBtX3JlYWRpbmcuc3RvcmVSZWxlYXNlKGZhbHNl KTsKKysKKysgICAgICAgIGlmIChtX21vZGUgPT0gU2VsZkRpc3BhdGNoKSB7CisrICAgICAgICAg ICAgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCk7CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAg ICAgIFFfRU1JVCBuZWVkUmVhZEFuZERpc3BhdGNoKCk7CisrCisrICAgICAgICAgICAgUU11dGV4 TG9ja2VyIGxvY2soJm1fbXV0ZXgpOworKyAgICAgICAgICAgIC8vIG1fcmVhZGluZyBtaWdodCBi ZSBzZXQgZnJvbSBvdXIgZW1pdCBvciBzb21lIG90aGVyIGludm9jYXRpb24gb2YKKysgICAgICAg ICAgICAvLyByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKS4KKysgICAgICAgICAgICB3aGlsZSAoIW1f cmVhZGluZy5sb2FkUmVsYXhlZCgpICYmICFtX3F1aXR0aW5nKQorKyAgICAgICAgICAgICAgICBt X2NvbmQud2FpdCgmbV9tdXRleCk7CisrICAgICAgICB9CisrCisrICAgICAgICByZXR1cm4gIW1f cXVpdHRpbmc7CisrICAgIH0KKysKKysgICAgaW50IGRpc3BhdGNoUXVldWVQZW5kaW5nKCkKKysg ICAgeworKyAgICAgICAgaWYgKG1fd2xldnF1ZXVlKQorKyAgICAgICAgICAgIHJldHVybiB3bF9k aXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobV93bGRpc3BsYXksIG1fd2xldnF1ZXVlKTsK KysgICAgICAgIGVsc2UKKysgICAgICAgICAgICByZXR1cm4gd2xfZGlzcGxheV9kaXNwYXRjaF9w ZW5kaW5nKG1fd2xkaXNwbGF5KTsKKysgICAgfQorKworKyAgICBpbnQgcHJlcGFyZVJlYWRRdWV1 ZSgpCisrICAgIHsKKysgICAgICAgIGlmIChtX3dsZXZxdWV1ZSkKKysgICAgICAgICAgICByZXR1 cm4gd2xfZGlzcGxheV9wcmVwYXJlX3JlYWRfcXVldWUobV93bGRpc3BsYXksIG1fd2xldnF1ZXVl KTsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICByZXR1cm4gd2xfZGlzcGxheV9wcmVwYXJl X3JlYWQobV93bGRpc3BsYXkpOworKyAgICB9CisrCisrICAgIGludCBtX2ZkOworKyAgICBpbnQg bV9waXBlZmRbMl07CisrICAgIHdsX2Rpc3BsYXkgKm1fd2xkaXNwbGF5OworKyAgICB3bF9ldmVu dF9xdWV1ZSAqbV93bGV2cXVldWU7CisrICAgIE9wZXJhdGluZ01vZGUgbV9tb2RlOworKworKyAg ICAvKiBDb25jdXJyZW5jeSBub3RlIHdoZW4gb3BlcmF0aW5nIGluIEVtaXRUb0Rpc3BhdGNoIG1v ZGU6CisrICAgICAqIG1fcmVhZGluZyBpcyBzZXQgdG8gZmFsc2UgaW5zaWRlIGV2ZW50IHRocmVh ZCdzIHdhaXRGb3JSZWFkaW5nKCksIGFuZCBpcworKyAgICAgKiBzZXQgdG8gdHJ1ZSBpbnNpZGUg bWFpbiB0aHJlYWQncyByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKS4KKysgICAgICogVGhlIGxvY2sg aXMgbm90IHRha2VuIHdoZW4gc2V0dGluZyBtX3JlYWRpbmcgdG8gZmFsc2UsIGFzIHRoZSBtYWlu IHRocmVhZAorKyAgICAgKiBpcyBub3QgYWN0aXZlbHkgd2FpdGluZyBmb3IgaXQgdG8gdHVybiBm YWxzZS4gSG93ZXZlciwgdGhlIGxvY2sgaXMgdGFrZW4KKysgICAgICogaW5zaWRlIHJlYWRBbmRE aXNwYXRjaEV2ZW50cygpIGJlZm9yZSBzZXR0aW5nIG1fcmVhZGluZyB0byB0cnVlLAorKyAgICAg KiBhcyB0aGUgZXZlbnQgdGhyZWFkIGlzIGFjdGl2ZWx5IHdhaXRpbmcgZm9yIGl0IHVuZGVyIHRo ZSB3YWl0IGNvbmRpdGlvbi4KKysgICAgICovCisrCisrICAgIFFBdG9taWNJbnRlZ2VyPGJvb2w+ IG1fcmVhZGluZzsKKysgICAgYm9vbCBtX3F1aXR0aW5nOworKyAgICBRTXV0ZXggbV9tdXRleDsK KysgICAgUVdhaXRDb25kaXRpb24gbV9jb25kOworK307CisrCisgUV9MT0dHSU5HX0NBVEVHT1JZ KGxjUXBhV2F5bGFuZCwgInF0LnFwYS53YXlsYW5kIik7IC8vIGZvciBnZW5lcmFsICh1bmNhdGVn b3JpemVkKSBXYXlsYW5kIHBsYXRmb3JtIGxvZ2dpbmcKKyAKKyBzdHJ1Y3Qgd2xfc3VyZmFjZSAq UVdheWxhbmREaXNwbGF5OjpjcmVhdGVTdXJmYWNlKHZvaWQgKmhhbmRsZSkKK0BAIC0xNTgsMTcg KzM1MSwxNiBAQCBRV2F5bGFuZERpc3BsYXk6OlFXYXlsYW5kRGlzcGxheShRV2F5bGFuZEludGVn cmF0aW9uICp3YXlsYW5kSW50ZWdyYXRpb24pCisgICAgIGlmICghbVhrYkNvbnRleHQpCisgICAg ICAgICBxQ1dhcm5pbmcobGNRcGFXYXlsYW5kLCAiZmFpbGVkIHRvIGNyZWF0ZSB4a2IgY29udGV4 dCIpOworICNlbmRpZgorLQorLSAgICBmb3JjZVJvdW5kVHJpcCgpOworLQorLSAgICBpZiAoIW1X YWl0aW5nU2NyZWVucy5pc0VtcHR5KCkpIHsKKy0gICAgICAgIC8vIEdpdmUgd2xfb3V0cHV0LmRv bmUgYW5kIHp4ZGdfb3V0cHV0X3YxLmRvbmUgZXZlbnRzIGEgY2hhbmNlIHRvIGFycml2ZQorLSAg ICAgICAgZm9yY2VSb3VuZFRyaXAoKTsKKy0gICAgfQorIH0KKyAKKyBRV2F5bGFuZERpc3BsYXk6 On5RV2F5bGFuZERpc3BsYXkodm9pZCkKKyB7CisrICAgIGlmIChtX2V2ZW50VGhyZWFkKQorKyAg ICAgICAgbV9ldmVudFRocmVhZC0+c3RvcCgpOworKworKyAgICBpZiAobV9mcmFtZUV2ZW50UXVl dWVUaHJlYWQpCisrICAgICAgICBtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZC0+c3RvcCgpOworKwor ICAgICBpZiAobVN5bmNDYWxsYmFjaykKKyAgICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobVN5 bmNDYWxsYmFjayk7CisgCitAQCAtMTg3LDYgKzM3OSwyMSBAQCBRV2F5bGFuZERpc3BsYXk6On5R V2F5bGFuZERpc3BsYXkodm9pZCkKKyAjZW5kaWYKKyAgICAgaWYgKG1EaXNwbGF5KQorICAgICAg ICAgd2xfZGlzcGxheV9kaXNjb25uZWN0KG1EaXNwbGF5KTsKKysKKysgICAgaWYgKG1fZnJhbWVF dmVudFF1ZXVlKQorKyAgICAgICAgd2xfZXZlbnRfcXVldWVfZGVzdHJveShtX2ZyYW1lRXZlbnRR dWV1ZSk7CisrfQorKworKy8vIFN0ZXBzIHdoaWNoIGlzIGNhbGxlZCBqdXN0IGFmdGVyIGNvbnN0 cnVjdG9yLiBUaGlzIHNlcGFyYXRlcyByZWdpc3RyeV9nbG9iYWwoKSBvdXQgb2YgdGhlIGNvbnN0 cnVjdG9yCisrLy8gc28gdGhhdCBmYWN0b3J5IGZ1bmN0aW9ucyBpbiBpbnRlZ3JhdGlvbiBjYW4g YmUgb3ZlcnJpZGRlbi4KKyt2b2lkIFFXYXlsYW5kRGlzcGxheTo6aW5pdGlhbGl6ZSgpCisrewor KyAgICBmb3JjZVJvdW5kVHJpcCgpOworKworKyAgICBpZiAoIW1XYWl0aW5nU2NyZWVucy5pc0Vt cHR5KCkpIHsKKysgICAgICAgIC8vIEdpdmUgd2xfb3V0cHV0LmRvbmUgYW5kIHp4ZGdfb3V0cHV0 X3YxLmRvbmUgZXZlbnRzIGEgY2hhbmNlIHRvIGFycml2ZQorKyAgICAgICAgZm9yY2VSb3VuZFRy aXAoKTsKKysgICAgfQorIH0KKyAKKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6ZW5zdXJlU2NyZWVu KCkKK0BAIC0yMDMsOTggKzQxMCwzNyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6ZW5zdXJlU2Ny ZWVuKCkKKyAKKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6Y2hlY2tFcnJvcigpIGNvbnN0Cisgewor LSAgICBpbnQgZWNvZGUgPSB3bF9kaXNwbGF5X2dldF9lcnJvcihtRGlzcGxheSk7CistICAgIGlm ICgoZWNvZGUgPT0gRVBJUEUgfHwgZWNvZGUgPT0gRUNPTk5SRVNFVCkpIHsKKy0gICAgICAgIC8v IHNwZWNpYWwgY2FzZSB0aGlzIHRvIHByb3ZpZGUgYSBuaWNlciBlcnJvcgorLSAgICAgICAgcVdh cm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gYnJva2UuIERpZCB0aGUgV2F5bGFuZCBjb21w b3NpdG9yIGRpZT8iKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5 bGFuZCBjb25uZWN0aW9uIGV4cGVyaWVuY2VkIGEgZmF0YWwgZXJyb3I6ICVzIiwgc3RyZXJyb3Io ZWNvZGUpKTsKKy0gICAgfQorLSAgICBfZXhpdCgxKTsKKysgICAgY2hlY2tXYXlsYW5kRXJyb3Io bURpc3BsYXkpOworIH0KKyAKKysvLyBDYWxsZWQgaW4gbWFpbiB0aHJlYWQsIGVpdGhlciBmcm9t IHF1ZXVlZCBzaWduYWwgb3IgZGlyZWN0bHkuCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmZsdXNo UmVxdWVzdHMoKQorIHsKKy0gICAgaWYgKHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkKG1EaXNwbGF5 KSA9PSAwKSB7CistICAgICAgICB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKG1EaXNwbGF5KTsKKy0g ICAgfQorLQorLSAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaF9wZW5kaW5nKG1EaXNwbGF5KSA8 IDApCistICAgICAgICBjaGVja0Vycm9yKCk7CistCistICAgIHsKKy0gICAgICAgIFFSZWFkTG9j a2VyIGxvY2tlcigmbV9mcmFtZVF1ZXVlTG9jayk7CistICAgICAgICBmb3IgKGNvbnN0IEZyYW1l UXVldWUgJnEgOiBtRXh0ZXJuYWxRdWV1ZXMpIHsKKy0gICAgICAgICAgICBRTXV0ZXhMb2NrZXIg bG9ja2VyKHEubXV0ZXgpOworLSAgICAgICAgICAgIHdoaWxlICh3bF9kaXNwbGF5X3ByZXBhcmVf cmVhZF9xdWV1ZShtRGlzcGxheSwgcS5xdWV1ZSkgIT0gMCkKKy0gICAgICAgICAgICAgICAgd2xf ZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxLnF1ZXVlKTsKKy0gICAg ICAgICAgICB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKG1EaXNwbGF5KTsKKy0gICAgICAgICAgICB3 bF9kaXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHEucXVldWUpOworLSAg ICAgICAgfQorLSAgICB9CistCistICAgIHdsX2Rpc3BsYXlfZmx1c2gobURpc3BsYXkpOworLX0K Ky0KKy12b2lkIFFXYXlsYW5kRGlzcGxheTo6YmxvY2tpbmdSZWFkRXZlbnRzKCkKKy17CistICAg IGlmICh3bF9kaXNwbGF5X2Rpc3BhdGNoKG1EaXNwbGF5KSA8IDApCistICAgICAgICBjaGVja0Vy cm9yKCk7CistfQorLQorLXZvaWQgUVdheWxhbmREaXNwbGF5OjpkZXN0cm95RnJhbWVRdWV1ZShj b25zdCBRV2F5bGFuZERpc3BsYXk6OkZyYW1lUXVldWUgJnEpCisteworLSAgICBRV3JpdGVMb2Nr ZXIgbG9ja2VyKCZtX2ZyYW1lUXVldWVMb2NrKTsKKy0gICAgYXV0byBpdCA9IHN0ZDo6ZmluZF9p ZihtRXh0ZXJuYWxRdWV1ZXMuYmVnaW4oKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBt RXh0ZXJuYWxRdWV1ZXMuZW5kKCksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgWyZxXSAo Y29uc3QgUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlICZvdGhlcil7IHJldHVybiBvdGhlci5x dWV1ZSA9PSBxLnF1ZXVlOyB9KTsKKy0gICAgUV9BU1NFUlQoaXQgIT0gbUV4dGVybmFsUXVldWVz LmVuZCgpKTsKKy0gICAgbUV4dGVybmFsUXVldWVzLmVyYXNlKGl0KTsKKy0gICAgaWYgKHEucXVl dWUgIT0gbnVsbHB0cikKKy0gICAgICAgIHdsX2V2ZW50X3F1ZXVlX2Rlc3Ryb3kocS5xdWV1ZSk7 CistICAgIGRlbGV0ZSBxLm11dGV4OworKyAgICBtX2V2ZW50VGhyZWFkLT5yZWFkQW5kRGlzcGF0 Y2hFdmVudHMoKTsKKyB9CisgCistUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlIFFXYXlsYW5k RGlzcGxheTo6Y3JlYXRlRnJhbWVRdWV1ZSgpCisrLy8gV2UgaGF2ZSB0byB3YWl0IHVudGlsIHdl IGhhdmUgYW4gZXZlbnREaXNwYXRjaGVyIGJlZm9yZSBjcmVhdGluZyB0aGUgZXZlbnRUaHJlYWQs CisrLy8gb3RoZXJ3aXNlIGZvcmNlUm91bmRUcmlwKCkgbWF5IGJsb2NrIGluc2lkZSBfZXZlbnRz X3JlYWQoKSBiZWNhdXNlIGV2ZW50VGhyZWFkIGlzCisrLy8gcG9sbGluZy4KKyt2b2lkIFFXYXls YW5kRGlzcGxheTo6aW5pdEV2ZW50VGhyZWFkKCkKKyB7CistICAgIFFXcml0ZUxvY2tlciBsb2Nr ZXIoJm1fZnJhbWVRdWV1ZUxvY2spOworLSAgICBGcmFtZVF1ZXVlIHF7Y3JlYXRlRXZlbnRRdWV1 ZSgpfTsKKy0gICAgbUV4dGVybmFsUXVldWVzLmFwcGVuZChxKTsKKy0gICAgcmV0dXJuIHE7Cist fQorKyAgICBtX2V2ZW50VGhyZWFkLnJlc2V0KAorKyAgICAgICAgICAgIG5ldyBFdmVudFRocmVh ZChtRGlzcGxheSwgLyogZGVmYXVsdCBxdWV1ZSAqLyBudWxscHRyLCBFdmVudFRocmVhZDo6RW1p dFRvRGlzcGF0Y2gpKTsKKysgICAgY29ubmVjdChtX2V2ZW50VGhyZWFkLmdldCgpLCAmRXZlbnRU aHJlYWQ6Om5lZWRSZWFkQW5kRGlzcGF0Y2gsIHRoaXMsCisrICAgICAgICAgICAgJlFXYXlsYW5k RGlzcGxheTo6Zmx1c2hSZXF1ZXN0cywgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworKyAgICBtX2V2 ZW50VGhyZWFkLT5zdGFydCgpOworIAorLXdsX2V2ZW50X3F1ZXVlICpRV2F5bGFuZERpc3BsYXk6 OmNyZWF0ZUV2ZW50UXVldWUoKQorLXsKKy0gICAgcmV0dXJuIHdsX2Rpc3BsYXlfY3JlYXRlX3F1 ZXVlKG1EaXNwbGF5KTsKKysgICAgLy8gd2xfZGlzcGxheV9kaXNjb25uZWN0KCkgZnJlZSB0aGlz LgorKyAgICBtX2ZyYW1lRXZlbnRRdWV1ZSA9IHdsX2Rpc3BsYXlfY3JlYXRlX3F1ZXVlKG1EaXNw bGF5KTsKKysgICAgbV9mcmFtZUV2ZW50UXVldWVUaHJlYWQucmVzZXQoCisrICAgICAgICAgICAg bmV3IEV2ZW50VGhyZWFkKG1EaXNwbGF5LCBtX2ZyYW1lRXZlbnRRdWV1ZSwgRXZlbnRUaHJlYWQ6 OlNlbGZEaXNwYXRjaCkpOworKyAgICBtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZC0+c3RhcnQoKTsK KyB9CisgCistdm9pZCBRV2F5bGFuZERpc3BsYXk6OmRpc3BhdGNoUXVldWVXaGlsZSh3bF9ldmVu dF9xdWV1ZSAqcXVldWUsIHN0ZDo6ZnVuY3Rpb248Ym9vbCAoKT4gY29uZGl0aW9uLCBpbnQgdGlt ZW91dCkKKyt2b2lkIFFXYXlsYW5kRGlzcGxheTo6YmxvY2tpbmdSZWFkRXZlbnRzKCkKKyB7Cist ICAgIGlmICghY29uZGl0aW9uKCkpCistICAgICAgICByZXR1cm47CistCistICAgIFFFbGFwc2Vk VGltZXIgdGltZXI7CistICAgIHRpbWVyLnN0YXJ0KCk7CistICAgIHN0cnVjdCBwb2xsZmQgcEZk ID0gcXRfbWFrZV9wb2xsZmQod2xfZGlzcGxheV9nZXRfZmQobURpc3BsYXkpLCBQT0xMSU4pOwor LSAgICB3aGlsZSAodGltZW91dCA9PSAtMSB8fCB0aW1lci5lbGFwc2VkKCkgPCB0aW1lb3V0KSB7 CistICAgICAgICB3aGlsZSAod2xfZGlzcGxheV9wcmVwYXJlX3JlYWRfcXVldWUobURpc3BsYXks IHF1ZXVlKSAhPSAwKQorLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVu ZGluZyhtRGlzcGxheSwgcXVldWUpOworLQorLSAgICAgICAgd2xfZGlzcGxheV9mbHVzaChtRGlz cGxheSk7CistCistICAgICAgICBjb25zdCBpbnQgcmVtYWluaW5nID0gcU1heCh0aW1lb3V0IC0g dGltZXIuZWxhcHNlZCgpLCAwbGwpOworLSAgICAgICAgY29uc3QgaW50IHBvbGxUaW1lb3V0ID0g dGltZW91dCA9PSAtMSA/IC0xIDogcmVtYWluaW5nOworLSAgICAgICAgaWYgKHF0X3BvbGxfbXNl Y3MoJnBGZCwgMSwgcG9sbFRpbWVvdXQpID4gMCkKKy0gICAgICAgICAgICB3bF9kaXNwbGF5X3Jl YWRfZXZlbnRzKG1EaXNwbGF5KTsKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgICB3bF9kaXNw bGF5X2NhbmNlbF9yZWFkKG1EaXNwbGF5KTsKKy0KKy0gICAgICAgIGlmICh3bF9kaXNwbGF5X2Rp c3BhdGNoX3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHF1ZXVlKSA8IDApCistICAgICAgICAgICAg Y2hlY2tFcnJvcigpOworLQorLSAgICAgICAgaWYgKCFjb25kaXRpb24oKSkKKy0gICAgICAgICAg ICBicmVhazsKKy0gICAgfQorKyAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaChtRGlzcGxheSkg PCAwKQorKyAgICAgICAgY2hlY2tXYXlsYW5kRXJyb3IobURpc3BsYXkpOworIH0KKyAKKyBRV2F5 bGFuZFNjcmVlbiAqUVdheWxhbmREaXNwbGF5OjpzY3JlZW5Gb3JPdXRwdXQoc3RydWN0IHdsX291 dHB1dCAqb3V0cHV0KSBjb25zdAorQEAgLTM0NSw3ICs0OTEsNyBAQCB2b2lkIFFXYXlsYW5kRGlz cGxheTo6cmVnaXN0cnlfZ2xvYmFsKHVpbnQzMl90IGlkLCBjb25zdCBRU3RyaW5nICZpbnRlcmZh Y2UsIHVpbgorICAgICBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9vdXRwdXQi KSkgeworICAgICAgICAgbVdhaXRpbmdTY3JlZW5zIDw8IG5ldyBRV2F5bGFuZFNjcmVlbih0aGlz LCB2ZXJzaW9uLCBpZCk7CisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRl cmFsKCJ3bF9jb21wb3NpdG9yIikpIHsKKy0gICAgICAgIG1Db21wb3NpdG9yVmVyc2lvbiA9IHFN aW4oKGludCl2ZXJzaW9uLCAzKTsKKysgICAgICAgIG1Db21wb3NpdG9yVmVyc2lvbiA9IHFNaW4o KGludCl2ZXJzaW9uLCA0KTsKKyAgICAgICAgIG1Db21wb3NpdG9yLmluaXQocmVnaXN0cnksIGlk LCBtQ29tcG9zaXRvclZlcnNpb24pOworICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3Ry aW5nTGl0ZXJhbCgid2xfc2htIikpIHsKKyAgICAgICAgIG1TaG0ucmVzZXQobmV3IFFXYXlsYW5k U2htKHRoaXMsIHZlcnNpb24sIGlkKSk7CitAQCAtMzU0LDcgKzUwMCw3IEBAIHZvaWQgUVdheWxh bmREaXNwbGF5OjpyZWdpc3RyeV9nbG9iYWwodWludDMyX3QgaWQsIGNvbnN0IFFTdHJpbmcgJmlu dGVyZmFjZSwgdWluCisgICAgICAgICBtSW5wdXREZXZpY2VzLmFwcGVuZChpbnB1dERldmljZSk7 CisgI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2RhdGFkZXZpY2UpCisgICAgIH0gZWxzZSBpZiAoaW50 ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9kYXRhX2RldmljZV9tYW5hZ2VyIikpIHsKKy0g ICAgICAgIG1EbmRTZWxlY3Rpb25IYW5kbGVyLnJlc2V0KG5ldyBRV2F5bGFuZERhdGFEZXZpY2VN YW5hZ2VyKHRoaXMsIGlkKSk7CisrICAgICAgICBtRG5kU2VsZWN0aW9uSGFuZGxlci5yZXNldChu ZXcgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcih0aGlzLCB2ZXJzaW9uLCBpZCkpOworICNlbmRp ZgorICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgicXRfc3VyZmFj ZV9leHRlbnNpb24iKSkgeworICAgICAgICAgbVdpbmRvd0V4dGVuc2lvbi5yZXNldChuZXcgUXRX YXlsYW5kOjpxdF9zdXJmYWNlX2V4dGVuc2lvbihyZWdpc3RyeSwgaWQsIDEpKTsKK0BAIC0zNjks NiArNTE1LDggQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbCh1aW50MzJf dCBpZCwgY29uc3QgUVN0cmluZyAmaW50ZXJmYWNlLCB1aW4KKyAjaWYgUVRfQ09ORklHKHdheWxh bmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9 PSBRU3RyaW5nTGl0ZXJhbCgiendwX3ByaW1hcnlfc2VsZWN0aW9uX2RldmljZV9tYW5hZ2VyX3Yx IikpIHsKKyAgICAgICAgIG1QcmltYXJ5U2VsZWN0aW9uTWFuYWdlci5yZXNldChuZXcgUVdheWxh bmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxKHRoaXMsIGlkLCAxKSk7CisrICAgICAg ICBmb3IgKFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWNlIDogcUFzQ29uc3QobUlucHV0 RGV2aWNlcykpCisrICAgICAgICAgICAgaW5wdXREZXZpY2UtPnNldFByaW1hcnlTZWxlY3Rpb25E ZXZpY2UobVByaW1hcnlTZWxlY3Rpb25NYW5hZ2VyLT5jcmVhdGVEZXZpY2UoaW5wdXREZXZpY2Up KTsKKyAjZW5kaWYKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwo Inp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjIiKSAmJiAhbUNsaWVudFNpZGVJbnB1dENvbnRleHRS ZXF1ZXN0ZWQpIHsKKyAgICAgICAgIG1UZXh0SW5wdXRNYW5hZ2VyLnJlc2V0KG5ldyBRdFdheWxh bmQ6Onp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjIocmVnaXN0cnksIGlkLCAxKSk7CitAQCAtNDI3 LDYgKzU3NSwxMyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsX3JlbW92 ZSh1aW50MzJfdCBpZCkKKyAgICAgICAgICAgICAgICAgICAgIGlucHV0RGV2aWNlLT5zZXRUZXh0 SW5wdXQobnVsbHB0cik7CisgICAgICAgICAgICAgICAgIG1XYXlsYW5kSW50ZWdyYXRpb24tPnJl Y29uZmlndXJlSW5wdXRDb250ZXh0KCk7CisgICAgICAgICAgICAgfQorKyNpZiBRVF9DT05GSUco d2F5bGFuZF9jbGllbnRfcHJpbWFyeV9zZWxlY3Rpb24pCisrICAgICAgICAgICAgaWYgKGdsb2Jh bC5pbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInp3cF9wcmltYXJ5X3NlbGVjdGlvbl9kZXZp Y2VfbWFuYWdlcl92MSIpKSB7CisrICAgICAgICAgICAgICAgIG1QcmltYXJ5U2VsZWN0aW9uTWFu YWdlci5yZXNldCgpOworKyAgICAgICAgICAgICAgICBmb3IgKFFXYXlsYW5kSW5wdXREZXZpY2Ug KmlucHV0RGV2aWNlIDogcUFzQ29uc3QobUlucHV0RGV2aWNlcykpCisrICAgICAgICAgICAgICAg ICAgICBpbnB1dERldmljZS0+c2V0UHJpbWFyeVNlbGVjdGlvbkRldmljZShudWxscHRyKTsKKysg ICAgICAgICAgICB9CisrI2VuZGlmCisgICAgICAgICAgICAgbUdsb2JhbHMucmVtb3ZlQXQoaSk7 CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitAQCAtNDUyLDkgKzYwNywxMCBAQCB2 b2lkIFFXYXlsYW5kRGlzcGxheTo6YWRkUmVnaXN0cnlMaXN0ZW5lcihSZWdpc3RyeUxpc3RlbmVy IGxpc3RlbmVyLCB2b2lkICpkYXRhKQorIAorIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZW1vdmVM aXN0ZW5lcihSZWdpc3RyeUxpc3RlbmVyIGxpc3RlbmVyLCB2b2lkICpkYXRhKQorIHsKKy0gICAg c3RkOjpyZW1vdmVfaWYobVJlZ2lzdHJ5TGlzdGVuZXJzLmJlZ2luKCksIG1SZWdpc3RyeUxpc3Rl bmVycy5lbmQoKSwgWz1dKExpc3RlbmVyIGwpeworKyAgICBhdXRvIGl0ZXIgPSBzdGQ6OnJlbW92 ZV9pZihtUmVnaXN0cnlMaXN0ZW5lcnMuYmVnaW4oKSwgbVJlZ2lzdHJ5TGlzdGVuZXJzLmVuZCgp LCBbPV0oTGlzdGVuZXIgbCl7CisgICAgICAgICByZXR1cm4gKGwubGlzdGVuZXIgPT0gbGlzdGVu ZXIgJiYgbC5kYXRhID09IGRhdGEpOworICAgICB9KTsKKysgICAgbVJlZ2lzdHJ5TGlzdGVuZXJz LmVyYXNlKGl0ZXIsIG1SZWdpc3RyeUxpc3RlbmVycy5lbmQoKSk7CisgfQorIAorIHVpbnQzMl90 IFFXYXlsYW5kRGlzcGxheTo6Y3VycmVudFRpbWVNaWxsaXNlYygpCitAQCAtNDY3LDUwICs2MjMs OSBAQCB1aW50MzJfdCBRV2F5bGFuZERpc3BsYXk6OmN1cnJlbnRUaW1lTWlsbGlzZWMoKQorICAg ICByZXR1cm4gMDsKKyB9CisgCistc3RhdGljIHZvaWQKKy1zeW5jX2NhbGxiYWNrKHZvaWQgKmRh dGEsIHN0cnVjdCB3bF9jYWxsYmFjayAqY2FsbGJhY2ssIHVpbnQzMl90IHNlcmlhbCkKKy17Cist ICAgIFFfVU5VU0VEKHNlcmlhbCkKKy0gICAgYm9vbCAqZG9uZSA9IHN0YXRpY19jYXN0PGJvb2wg Kj4oZGF0YSk7CistCistICAgICpkb25lID0gdHJ1ZTsKKy0KKy0gICAgLy8gSWYgdGhlIHdsX2Nh bGxiYWNrIGRvbmUgZXZlbnQgaXMgcmVjZWl2ZWQgYWZ0ZXIgdGhlIGNvbmRpdGlvbiBjaGVjayBp biB0aGUgd2hpbGUgbG9vcCBpbgorLSAgICAvLyBmb3JjZVJvdW5kVHJpcCgpLCBidXQgYmVmb3Jl IHRoZSBjYWxsIHRvIHByb2Nlc3NFdmVudHMsIHRoZSBjYWxsIHRvIHByb2Nlc3NFdmVudHMgbWF5 IGJsb2NrCistICAgIC8vIGZvcmV2ZXIgaWYgbm8gbW9yZSBldmVudHMgYXJlIHBvc3RlZCAoZXZl bnRob3VnaCB0aGUgY2FsbGJhY2sgaXMgaGFuZGxlZCBpbiByZXNwb25zZSB0byB0aGUKKy0gICAg Ly8gYWJvdXRUb0Jsb2NrIHNpZ25hbCkuIEhlbmNlLCB3ZSB3YWtlIHVwIHRoZSBldmVudCBkaXNw YXRjaGVyIHNvIGZvcmNlUm91bmRUcmlwIG1heSByZXR1cm4uCistICAgIC8vIChRVEJVRy02NDY5 NikKKy0gICAgaWYgKGF1dG8gKmRpc3BhdGNoZXIgPSBRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkt PmV2ZW50RGlzcGF0Y2hlcigpKQorLSAgICAgICAgZGlzcGF0Y2hlci0+d2FrZVVwKCk7CistCist ICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJhY2spOworLX0KKy0KKy1zdGF0aWMgY29uc3Qg c3RydWN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIHN5bmNfbGlzdGVuZXIgPSB7CistICAgIHN5bmNf Y2FsbGJhY2sKKy19OworLQorIHZvaWQgUVdheWxhbmREaXNwbGF5Ojpmb3JjZVJvdW5kVHJpcCgp CisgeworLSAgICAvLyB3bF9kaXNwbGF5X3JvdW5kdHJpcCgpIHdvcmtzIG9uIHRoZSBtYWluIHF1 ZXVlIG9ubHksCistICAgIC8vIGJ1dCB3ZSB1c2UgYSBzZXBhcmF0ZSBvbmUsIHNvIGJhc2ljYWxs eSByZWltcGxlbWVudCBpdCBoZXJlCistICAgIGludCByZXQgPSAwOworLSAgICBib29sIGRvbmUg PSBmYWxzZTsKKy0gICAgd2xfY2FsbGJhY2sgKmNhbGxiYWNrID0gd2xfZGlzcGxheV9zeW5jKG1E aXNwbGF5KTsKKy0gICAgd2xfY2FsbGJhY2tfYWRkX2xpc3RlbmVyKGNhbGxiYWNrLCAmc3luY19s aXN0ZW5lciwgJmRvbmUpOworLSAgICBmbHVzaFJlcXVlc3RzKCk7CistICAgIGlmIChRVGhyZWFk OjpjdXJyZW50VGhyZWFkKCktPmV2ZW50RGlzcGF0Y2hlcigpKSB7CistICAgICAgICB3aGlsZSAo IWRvbmUgJiYgcmV0ID49IDApIHsKKy0gICAgICAgICAgICBRVGhyZWFkOjpjdXJyZW50VGhyZWFk KCktPmV2ZW50RGlzcGF0Y2hlcigpLT5wcm9jZXNzRXZlbnRzKFFFdmVudExvb3A6OldhaXRGb3JN b3JlRXZlbnRzKTsKKy0gICAgICAgICAgICByZXQgPSB3bF9kaXNwbGF5X2Rpc3BhdGNoX3BlbmRp bmcobURpc3BsYXkpOworLSAgICAgICAgfQorLSAgICB9IGVsc2UgeworLSAgICAgICAgd2hpbGUg KCFkb25lICYmIHJldCA+PSAwKQorLSAgICAgICAgICAgIHJldCA9IHdsX2Rpc3BsYXlfZGlzcGF0 Y2gobURpc3BsYXkpOworLSAgICB9CistCistICAgIGlmIChyZXQgPT0gLTEgJiYgIWRvbmUpCist ICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsKKysgICAgIHdsX2Rpc3BsYXlf cm91bmR0cmlwKG1EaXNwbGF5KTsKKyB9CisgCisgYm9vbCBRV2F5bGFuZERpc3BsYXk6OnN1cHBv cnRzV2luZG93RGVjb3JhdGlvbigpIGNvbnN0CitAQCAtNTc0LDE0ICs2ODksMTAgQEAgdm9pZCBR V2F5bGFuZERpc3BsYXk6OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kSW5wdXRE ZXZpY2UgKmlucHV0RGV2aWMKKyAgICAgaWYgKG1MYXN0S2V5Ym9hcmRGb2N1cyA9PSBrZXlib2Fy ZEZvY3VzKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBpZiAobVdheWxhbmRJbnRlZ3JhdGlv bi0+bVNoZWxsSW50ZWdyYXRpb24pIHsKKy0gICAgICAgIG1XYXlsYW5kSW50ZWdyYXRpb24tPm1T aGVsbEludGVncmF0aW9uLT5oYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChrZXlib2FyZEZvY3Vz LCBtTGFzdEtleWJvYXJkRm9jdXMpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgaWYgKGtleWJv YXJkRm9jdXMpCistICAgICAgICAgICAgaGFuZGxlV2luZG93QWN0aXZhdGVkKGtleWJvYXJkRm9j dXMpOworLSAgICAgICAgaWYgKG1MYXN0S2V5Ym9hcmRGb2N1cykKKy0gICAgICAgICAgICBoYW5k bGVXaW5kb3dEZWFjdGl2YXRlZChtTGFzdEtleWJvYXJkRm9jdXMpOworLSAgICB9CisrICAgIGlm IChrZXlib2FyZEZvY3VzKQorKyAgICAgICAgaGFuZGxlV2luZG93QWN0aXZhdGVkKGtleWJvYXJk Rm9jdXMpOworKyAgICBpZiAobUxhc3RLZXlib2FyZEZvY3VzKQorKyAgICAgICAgaGFuZGxlV2lu ZG93RGVhY3RpdmF0ZWQobUxhc3RLZXlib2FyZEZvY3VzKTsKKyAKKyAgICAgbUxhc3RLZXlib2Fy ZEZvY3VzID0ga2V5Ym9hcmRGb2N1czsKKyB9CitAQCAtNjAwLDYgKzcxMSwxOSBAQCB2b2lkIFFX YXlsYW5kRGlzcGxheTo6aGFuZGxlV2F5bGFuZFN5bmMoKQorICAgICBRV2luZG93ICphY3RpdmVX aW5kb3cgPSBtQWN0aXZlV2luZG93cy5lbXB0eSgpID8gbnVsbHB0ciA6IG1BY3RpdmVXaW5kb3dz Lmxhc3QoKS0+d2luZG93KCk7CisgICAgIGlmIChhY3RpdmVXaW5kb3cgIT0gUUd1aUFwcGxpY2F0 aW9uOjpmb2N1c1dpbmRvdygpKQorICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFu ZGxlV2luZG93QWN0aXZhdGVkKGFjdGl2ZVdpbmRvdyk7CisrCisrICAgIGlmICghYWN0aXZlV2lu ZG93KSB7CisrICAgICAgICBpZiAobGFzdElucHV0RGV2aWNlKCkpIHsKKysjaWYgUVRfQ09ORklH KGNsaXBib2FyZCkKKysgICAgICAgICAgICBpZiAoYXV0byAqZGF0YURldmljZSA9IGxhc3RJbnB1 dERldmljZSgpLT5kYXRhRGV2aWNlKCkpCisrICAgICAgICAgICAgICAgIGRhdGFEZXZpY2UtPmlu dmFsaWRhdGVTZWxlY3Rpb25PZmZlcigpOworKyNlbmRpZgorKyNpZiBRVF9DT05GSUcod2F5bGFu ZF9jbGllbnRfcHJpbWFyeV9zZWxlY3Rpb24pCisrICAgICAgICAgICAgaWYgKGF1dG8gKmRldmlj ZSA9IGxhc3RJbnB1dERldmljZSgpLT5wcmltYXJ5U2VsZWN0aW9uRGV2aWNlKCkpCisrICAgICAg ICAgICAgICAgIGRldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7CisrI2VuZGlmCisr ICAgICAgICB9CisrICAgIH0KKyB9CisgCisgY29uc3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgUVdh eWxhbmREaXNwbGF5OjpzeW5jQ2FsbGJhY2tMaXN0ZW5lciA9IHsKK0BAIC02MjYsNiArNzUwLDEz IEBAIFFXYXlsYW5kSW5wdXREZXZpY2UgKlFXYXlsYW5kRGlzcGxheTo6ZGVmYXVsdElucHV0RGV2 aWNlKCkgY29uc3QKKyAgICAgcmV0dXJuIG1JbnB1dERldmljZXMuaXNFbXB0eSgpID8gMCA6IG1J bnB1dERldmljZXMuZmlyc3QoKTsKKyB9CisgCisrYm9vbCBRV2F5bGFuZERpc3BsYXk6OmlzS2V5 Ym9hcmRBdmFpbGFibGUoKSBjb25zdAorK3sKKysgICAgcmV0dXJuIHN0ZDo6YW55X29mKAorKyAg ICAgICAgICAgIG1JbnB1dERldmljZXMuY29uc3RCZWdpbigpLCBtSW5wdXREZXZpY2VzLmNvbnN0 RW5kKCksCisrICAgICAgICAgICAgW3RoaXNdKGNvbnN0IFFXYXlsYW5kSW5wdXREZXZpY2UgKmRl dmljZSkgeyByZXR1cm4gZGV2aWNlLT5rZXlib2FyZCgpICE9IG51bGxwdHI7IH0pOworK30KKysK KyAjaWYgUVRfQ09ORklHKGN1cnNvcikKKyAKKyBRV2F5bGFuZEN1cnNvciAqUVdheWxhbmREaXNw bGF5Ojp3YXlsYW5kQ3Vyc29yKCkKK0BAIC02NTIsNCArNzgzLDYgQEAgUVdheWxhbmRDdXJzb3JU aGVtZSAqUVdheWxhbmREaXNwbGF5Ojpsb2FkQ3Vyc29yVGhlbWUoY29uc3QgUVN0cmluZyAmbmFt ZSwgaW50IHAKKyAKKyB9IC8vIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQKKyAKKysjaW5jbHVk ZSAicXdheWxhbmRkaXNwbGF5Lm1vYyIKKysKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5X3AuaCBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheV9wLmgKK2luZGV4IDNiMDkyYmM4Li40MmJjNjYxZCAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheV9wLmgKKysr KyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheV9wLmgKK0BAIC0xMDksNiAr MTA5LDcgQEAgY2xhc3MgUVdheWxhbmRTdXJmYWNlOworIGNsYXNzIFFXYXlsYW5kU2hlbGxJbnRl Z3JhdGlvbjsKKyBjbGFzcyBRV2F5bGFuZEN1cnNvcjsKKyBjbGFzcyBRV2F5bGFuZEN1cnNvclRo ZW1lOworK2NsYXNzIEV2ZW50VGhyZWFkOworIAorIHR5cGVkZWYgdm9pZCAoKlJlZ2lzdHJ5TGlz dGVuZXIpKHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHdsX3JlZ2lzdHJ5ICpyZWdpc3RyeSwKK0BAIC0xMjAsMTUgKzEyMSwxMSBAQCBjbGFzcyBR X1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZERpc3BsYXkgOiBwdWJsaWMgUU9iamVjdCwg cHVibGljIFF0V2F5bGFuZAorICAgICBRX09CSkVDVAorIAorIHB1YmxpYzoKKy0gICAgc3RydWN0 IEZyYW1lUXVldWUgeworLSAgICAgICAgRnJhbWVRdWV1ZSh3bF9ldmVudF9xdWV1ZSAqcSA9IG51 bGxwdHIpIDogcXVldWUocSksIG11dGV4KG5ldyBRTXV0ZXgpIHt9CistICAgICAgICB3bF9ldmVu dF9xdWV1ZSAqcXVldWU7CistICAgICAgICBRTXV0ZXggKm11dGV4OworLSAgICB9OworLQorICAg ICBRV2F5bGFuZERpc3BsYXkoUVdheWxhbmRJbnRlZ3JhdGlvbiAqd2F5bGFuZEludGVncmF0aW9u KTsKKyAgICAgflFXYXlsYW5kRGlzcGxheSh2b2lkKSBvdmVycmlkZTsKKyAKKysgICAgdm9pZCBp bml0aWFsaXplKCk7CisrCisgI2lmIFFUX0NPTkZJRyh4a2Jjb21tb24pCisgICAgIHN0cnVjdCB4 a2JfY29udGV4dCAqeGtiQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1Ya2JDb250ZXh0LmdldCgp OyB9CisgI2VuZGlmCitAQCAtMjEwLDExICsyMDcsMTEgQEAgcHVibGljOgorICAgICB2b2lkIGhh bmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWNl KTsKKyAgICAgdm9pZCBoYW5kbGVXaW5kb3dEZXN0cm95ZWQoUVdheWxhbmRXaW5kb3cgKndpbmRv dyk7CisgCistICAgIHdsX2V2ZW50X3F1ZXVlICpjcmVhdGVFdmVudFF1ZXVlKCk7CistICAgIEZy YW1lUXVldWUgY3JlYXRlRnJhbWVRdWV1ZSgpOworLSAgICB2b2lkIGRlc3Ryb3lGcmFtZVF1ZXVl KGNvbnN0IEZyYW1lUXVldWUgJnEpOworLSAgICB2b2lkIGRpc3BhdGNoUXVldWVXaGlsZSh3bF9l dmVudF9xdWV1ZSAqcXVldWUsIHN0ZDo6ZnVuY3Rpb248Ym9vbCgpPiBjb25kaXRpb24sIGludCB0 aW1lb3V0ID0gLTEpOworKyAgICB3bF9ldmVudF9xdWV1ZSAqZnJhbWVFdmVudFF1ZXVlKCkgeyBy ZXR1cm4gbV9mcmFtZUV2ZW50UXVldWU7IH07CisrCisrICAgIGJvb2wgaXNLZXlib2FyZEF2YWls YWJsZSgpIGNvbnN0OworIAorKyAgICB2b2lkIGluaXRFdmVudFRocmVhZCgpOworIHB1YmxpYyBz bG90czoKKyAgICAgdm9pZCBibG9ja2luZ1JlYWRFdmVudHMoKTsKKyAgICAgdm9pZCBmbHVzaFJl cXVlc3RzKCk7CitAQCAtMjM3LDYgKzIzNCw5IEBAIHByaXZhdGU6CisgICAgIH07CisgCisgICAg IHN0cnVjdCB3bF9kaXNwbGF5ICptRGlzcGxheSA9IG51bGxwdHI7CisrICAgIFFTY29wZWRQb2lu dGVyPEV2ZW50VGhyZWFkPiBtX2V2ZW50VGhyZWFkOworKyAgICB3bF9ldmVudF9xdWV1ZSAqbV9m cmFtZUV2ZW50UXVldWUgPSBudWxscHRyOworKyAgICBRU2NvcGVkUG9pbnRlcjxFdmVudFRocmVh ZD4gbV9mcmFtZUV2ZW50UXVldWVUaHJlYWQ7CisgICAgIFF0V2F5bGFuZDo6d2xfY29tcG9zaXRv ciBtQ29tcG9zaXRvcjsKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRTaG0+IG1TaG07Cisg ICAgIFFMaXN0PFFXYXlsYW5kU2NyZWVuICo+IG1XYWl0aW5nU2NyZWVuczsKK0BAIC0yNzMsMTEg KzI3Myw5IEBAIHByaXZhdGU6CisgICAgIFFXYXlsYW5kSW5wdXREZXZpY2UgKm1MYXN0SW5wdXRE ZXZpY2UgPSBudWxscHRyOworICAgICBRUG9pbnRlcjxRV2F5bGFuZFdpbmRvdz4gbUxhc3RJbnB1 dFdpbmRvdzsKKyAgICAgUVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+IG1MYXN0S2V5Ym9hcmRGb2N1 czsKKy0gICAgUVZlY3RvcjxRV2F5bGFuZFdpbmRvdyAqPiBtQWN0aXZlV2luZG93czsKKy0gICAg UVZlY3RvcjxGcmFtZVF1ZXVlPiBtRXh0ZXJuYWxRdWV1ZXM7CisrICAgIFFMaXN0PFFXYXlsYW5k V2luZG93ICo+IG1BY3RpdmVXaW5kb3dzOworICAgICBzdHJ1Y3Qgd2xfY2FsbGJhY2sgKm1TeW5j Q2FsbGJhY2sgPSBudWxscHRyOworICAgICBzdGF0aWMgY29uc3Qgd2xfY2FsbGJhY2tfbGlzdGVu ZXIgc3luY0NhbGxiYWNrTGlzdGVuZXI7CistICAgIFFSZWFkV3JpdGVMb2NrIG1fZnJhbWVRdWV1 ZUxvY2s7CisgCisgICAgIGJvb2wgbUNsaWVudFNpZGVJbnB1dENvbnRleHRSZXF1ZXN0ZWQgPSAh UVBsYXRmb3JtSW5wdXRDb250ZXh0RmFjdG9yeTo6cmVxdWVzdGVkKCkuaXNOdWxsKCk7CisgCitk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmQuY3BwIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmQuY3BwCitpbmRleCA2NTM1YWExNi4uN2M1M2Y1ZmEg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZC5jcHAKKysrKyBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcAorQEAgLTY2LDcgKzY2LDcgQEAg dm9pZCBRV2F5bGFuZERyYWc6OnN0YXJ0RHJhZygpCisgeworICAgICBRQmFzaWNEcmFnOjpzdGFy dERyYWcoKTsKKyAgICAgUVdheWxhbmRXaW5kb3cgKmljb24gPSBzdGF0aWNfY2FzdDxRV2F5bGFu ZFdpbmRvdyAqPihzaGFwZWRQaXhtYXBXaW5kb3coKS0+aGFuZGxlKCkpOworLSAgICBpZiAobV9k aXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+ZGF0YURldmljZSgpLT5zdGFydERyYWcoZHJh ZygpLT5taW1lRGF0YSgpLCBpY29uKSkgeworKyAgICBpZiAobV9kaXNwbGF5LT5jdXJyZW50SW5w dXREZXZpY2UoKS0+ZGF0YURldmljZSgpLT5zdGFydERyYWcoZHJhZygpLT5taW1lRGF0YSgpLCBk cmFnKCktPnN1cHBvcnRlZEFjdGlvbnMoKSwgaWNvbikpIHsKKyAgICAgICAgIGljb24tPmFkZEF0 dGFjaE9mZnNldCgtZHJhZygpLT5ob3RTcG90KCkpOworICAgICB9IGVsc2UgeworICAgICAgICAg Ly8gQ2FuY2VsbGluZyBpbW1lZGlhdGVseSBkb2VzIG5vdCB3b3JrLCBzaW5jZSB0aGUgZXZlbnQg bG9vcCBmb3IgUURyYWc6OmV4ZWMgaXMgc3RhcnRlZAorQEAgLTgwLDYgKzgwLDkgQEAgdm9pZCBR V2F5bGFuZERyYWc6OmNhbmNlbCgpCisgICAgIFFCYXNpY0RyYWc6OmNhbmNlbCgpOworIAorICAg ICBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5kYXRhRGV2aWNlKCktPmNhbmNlbERy YWcoKTsKKysKKysgICAgaWYgKGRyYWcoKSkKKysgICAgICAgIGRyYWcoKS0+ZGVsZXRlTGF0ZXIo KTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZERyYWc6Om1vdmUoY29uc3QgUVBvaW50ICZnbG9iYWxQ b3MsIFF0OjpNb3VzZUJ1dHRvbnMgYiwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZHMpCitAQCAt MTAzLDMzICsxMDYsNDEgQEAgdm9pZCBRV2F5bGFuZERyYWc6OmVuZERyYWcoKQorICAgICBtX2Rp c3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5oYW5kbGVFbmREcmFnKCk7CisgfQorIAorLXZv aWQgUVdheWxhbmREcmFnOjp1cGRhdGVUYXJnZXQoY29uc3QgUVN0cmluZyAmbWltZVR5cGUpCisr dm9pZCBRV2F5bGFuZERyYWc6OnNldFJlc3BvbnNlKGJvb2wgYWNjZXB0ZWQpCisgeworLSAgICBz ZXRDYW5Ecm9wKCFtaW1lVHlwZS5pc0VtcHR5KCkpOworLQorLSAgICBpZiAoY2FuRHJvcCgpKSB7 CistICAgICAgICB1cGRhdGVDdXJzb3IoZGVmYXVsdEFjdGlvbihkcmFnKCktPnN1cHBvcnRlZEFj dGlvbnMoKSwgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+bW9kaWZpZXJzKCkpKTsK Ky0gICAgfSBlbHNlIHsKKy0gICAgICAgIHVwZGF0ZUN1cnNvcihRdDo6SWdub3JlQWN0aW9uKTsK Ky0gICAgfQorKyAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvciBvbGQgRGF0YURldmljZXMg d2hlcmUgdGhlIGRyYWcgYWN0aW9uIGlzIG5vdCBjb21tdW5pY2F0ZWQKKysgICAgUXQ6OkRyb3BB Y3Rpb24gYWN0aW9uID0gZGVmYXVsdEFjdGlvbihkcmFnKCktPnN1cHBvcnRlZEFjdGlvbnMoKSwg bV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+bW9kaWZpZXJzKCkpOworKyAgICBzZXRS ZXNwb25zZShRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZShhY2NlcHRlZCwgYWN0aW9uKSk7CisgfQor IAorLXZvaWQgUVdheWxhbmREcmFnOjpzZXRSZXNwb25zZShjb25zdCBRUGxhdGZvcm1EcmFnUXRS ZXNwb25zZSAmcmVzcG9uc2UpCisrdm9pZCBRV2F5bGFuZERyYWc6OnNldFJlc3BvbnNlKGNvbnN0 IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSkKKyB7CisgICAgIHNldENhbkRyb3Ao cmVzcG9uc2UuaXNBY2NlcHRlZCgpKTsKKyAKKyAgICAgaWYgKGNhbkRyb3AoKSkgeworLSAgICAg ICAgdXBkYXRlQ3Vyc29yKGRlZmF1bHRBY3Rpb24oZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCks IG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPm1vZGlmaWVycygpKSk7CisrICAgICAg ICB1cGRhdGVDdXJzb3IocmVzcG9uc2UuYWNjZXB0ZWRBY3Rpb24oKSk7CisgICAgIH0gZWxzZSB7 CisgICAgICAgICB1cGRhdGVDdXJzb3IoUXQ6Oklnbm9yZUFjdGlvbik7CisgICAgIH0KKyB9Cisg Cistdm9pZCBRV2F5bGFuZERyYWc6OmZpbmlzaERyYWcoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVz cG9uc2UgJnJlc3BvbnNlKQorK3ZvaWQgUVdheWxhbmREcmFnOjpzZXREcm9wUmVzcG9uc2UoY29u c3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKQorIHsKKyAgICAgc2V0RXhlY3V0 ZWREcm9wQWN0aW9uKHJlc3BvbnNlLmFjY2VwdGVkQWN0aW9uKCkpOworK30KKysKKyt2b2lkIFFX YXlsYW5kRHJhZzo6ZmluaXNoRHJhZygpCisreworICAgICBRS2V5RXZlbnQgZXZlbnQoUUV2ZW50 OjpLZXlQcmVzcywgUXQ6OktleV9Fc2NhcGUsIFF0OjpOb01vZGlmaWVyKTsKKyAgICAgZXZlbnRG aWx0ZXIoc2hhcGVkUGl4bWFwV2luZG93KCksICZldmVudCk7CisrCisrICAgIGlmIChkcmFnKCkp CisrICAgICAgICBkcmFnKCktPmRlbGV0ZUxhdGVyKCk7CisrfQorKworK2Jvb2wgUVdheWxhbmRE cmFnOjpvd25zRHJhZ09iamVjdCgpIGNvbnN0CisreworKyAgICByZXR1cm4gdHJ1ZTsKKyB9Cisg CisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kX3AuaCBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kX3AuaAoraW5kZXggNDc0ZmUyYWIuLjQ2 ZjYyOWFjIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmRfcC5o CisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmgKK0BAIC03MSw5ICs3 MSwxMCBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kRHJhZyhRV2F5bGFuZERpc3BsYXkgKmRpc3Bs YXkpOworICAgICB+UVdheWxhbmREcmFnKCkgb3ZlcnJpZGU7CisgCistICAgIHZvaWQgdXBkYXRl VGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlKTsKKy0gICAgdm9pZCBzZXRSZXNwb25zZShj b25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2UpOworLSAgICB2b2lkIGZpbmlz aERyYWcoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysgICAgdm9p ZCBzZXRSZXNwb25zZShib29sIGFjY2VwdGVkKTsKKysgICAgdm9pZCBzZXRSZXNwb25zZShjb25z dCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKyAgICB2b2lkIHNldERyb3BS ZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKyAgICB2 b2lkIGZpbmlzaERyYWcoKTsKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgc3RhcnREcmFnKCkg b3ZlcnJpZGU7CitAQCAtODIsNiArODMsNyBAQCBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgZHJvcChj b25zdCBRUG9pbnQgJmdsb2JhbFBvcywgUXQ6Ok1vdXNlQnV0dG9ucyBiLCBRdDo6S2V5Ym9hcmRN b2RpZmllcnMgbW9kcykgb3ZlcnJpZGU7CisgICAgIHZvaWQgZW5kRHJhZygpIG92ZXJyaWRlOwor IAorKyAgICBib29sIG93bnNEcmFnT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgCisgcHJpdmF0 ZToKKyAgICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2UuY3BwIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAKK2luZGV4IDYxM2ZlODYyLi40 YjkwZGU4NCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRk ZXZpY2UuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlucHV0ZGV2aWNl LmNwcAorQEAgLTY4NSw2ICs2ODUsMTEgQEAgcHVibGljOgorIAorIHZvaWQgUVdheWxhbmRJbnB1 dERldmljZTo6UG9pbnRlcjo6cG9pbnRlcl9sZWF2ZSh1aW50MzJfdCB0aW1lLCBzdHJ1Y3Qgd2xf c3VyZmFjZSAqc3VyZmFjZSkKKyB7CisrICAgIGludmFsaWRhdGVGb2N1cygpOworKyAgICBtQnV0 dG9ucyA9IFF0OjpOb0J1dHRvbjsKKysKKysgICAgbVBhcmVudC0+bVRpbWUgPSB0aW1lOworKwor ICAgICAvLyBUaGUgZXZlbnQgbWF5IGFycml2ZSBhZnRlciBkZXN0cm95aW5nIHRoZSB3aW5kb3cs IGluZGljYXRlZCBieQorICAgICAvLyBhIG51bGwgc3VyZmFjZS4KKyAgICAgaWYgKCFzdXJmYWNl KQorQEAgLTY5NiwxMSArNzAxLDYgQEAgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpQb2ludGVy Ojpwb2ludGVyX2xlYXZlKHVpbnQzMl90IHRpbWUsIHN0cnVjdCB3bF9zdXJmYWMKKyAKKyAgICAg aWYgKCFRV2F5bGFuZFdpbmRvdzo6bW91c2VHcmFiKCkpCisgICAgICAgICBzZXRGcmFtZUV2ZW50 KG5ldyBMZWF2ZUV2ZW50KHdpbmRvdywgbVN1cmZhY2VQb3MsIG1HbG9iYWxQb3MpKTsKKy0KKy0g ICAgaW52YWxpZGF0ZUZvY3VzKCk7CistICAgIG1CdXR0b25zID0gUXQ6Ok5vQnV0dG9uOworLQor LSAgICBtUGFyZW50LT5tVGltZSA9IHRpbWU7CisgfQorIAorIGNsYXNzIE1vdGlvbkV2ZW50IDog cHVibGljIFFXYXlsYW5kUG9pbnRlckV2ZW50CitAQCAtMTMwMCwxNCArMTMwMCw2IEBAIHZvaWQg UVdheWxhbmRJbnB1dERldmljZTo6S2V5Ym9hcmQ6OmhhbmRsZUZvY3VzRGVzdHJveWVkKCkKKyB2 b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OktleWJvYXJkOjpoYW5kbGVGb2N1c0xvc3QoKQorIHsK KyAgICAgbUZvY3VzID0gbnVsbHB0cjsKKy0jaWYgUVRfQ09ORklHKGNsaXBib2FyZCkKKy0gICAg aWYgKGF1dG8gKmRhdGFEZXZpY2UgPSBtUGFyZW50LT5kYXRhRGV2aWNlKCkpCistICAgICAgICBk YXRhRGV2aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKy0jZW5kaWYKKy0jaWYgUVRf Q09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorLSAgICBpZiAoYXV0byAq ZGV2aWNlID0gbVBhcmVudC0+cHJpbWFyeVNlbGVjdGlvbkRldmljZSgpKQorLSAgICAgICAgZGV2 aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKy0jZW5kaWYKKyAgICAgbVBhcmVudC0+ bVFEaXNwbGF5LT5oYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChtUGFyZW50KTsKKyAgICAgbVJl cGVhdFRpbWVyLnN0b3AoKTsKKyB9CitAQCAtMTM5Niw2ICsxMzg4LDcgQEAgdm9pZCBRV2F5bGFu ZElucHV0RGV2aWNlOjpUb3VjaDo6dG91Y2hfY2FuY2VsKCkKKyAgICAgaWYgKHRvdWNoRXh0KQor ICAgICAgICAgdG91Y2hFeHQtPnRvdWNoQ2FuY2VsZWQoKTsKKyAKKysgICAgbUZvY3VzID0gbnVs bHB0cjsKKyAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlVG91Y2hDYW5jZWxFdmVu dChudWxscHRyLCBtUGFyZW50LT5tVG91Y2hEZXZpY2UpOworIH0KKyAKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb24uY3BwCitpbmRleCBjNTNjY2I3OC4uNTQ4NjE2 MDAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9u LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbi5jcHAK K0BAIC0xMjUsNiArMTI1LDkgQEAgUVdheWxhbmRJbnRlZ3JhdGlvbjo6UVdheWxhbmRJbnRlZ3Jh dGlvbigpCisgI2VuZGlmCisgCisgICAgIHJlY29uZmlndXJlSW5wdXRDb250ZXh0KCk7CisrCisr ICAgIFFXYXlsYW5kV2luZG93OjpmaXhlZFRvcGxldmVsUG9zaXRpb25zID0KKysgICAgICAgICAg ICAhcUVudmlyb25tZW50VmFyaWFibGVJc1NldCgiUVRfV0FZTEFORF9ESVNBQkxFX0ZJWEVEX1BP U0lUSU9OUyIpOworIH0KKyAKKyBRV2F5bGFuZEludGVncmF0aW9uOjp+UVdheWxhbmRJbnRlZ3Jh dGlvbigpCitAQCAtMTkyLDE0ICsxOTUsMTggQEAgUUFic3RyYWN0RXZlbnREaXNwYXRjaGVyICpR V2F5bGFuZEludGVncmF0aW9uOjpjcmVhdGVFdmVudERpc3BhdGNoZXIoKSBjb25zdAorIAorIHZv aWQgUVdheWxhbmRJbnRlZ3JhdGlvbjo6aW5pdGlhbGl6ZSgpCisgeworKyAgICBtRGlzcGxheS0+ aW5pdEV2ZW50VGhyZWFkKCk7CisrCisrICAgIC8vIENhbGwgYWZ0ZXIgZXZlbnREaXNwYXRjaGVy IGlzIGZ1bGx5IGNvbm5lY3RlZCwgZm9yIFFXYXlsYW5kRGlzcGxheTo6Zm9yY2VSb3VuZFRyaXAo KQorKyAgICBtRGlzcGxheS0+aW5pdGlhbGl6ZSgpOworKworKyAgICAvLyBCdXQgdGhlIGFib3V0 VG9CbG9jaygpIGFuZCBhd2FrZSgpIHNob3VsZCBiZSBjb25uZWN0ZWQgYWZ0ZXIgaW5pdGlhbGl6 ZVBsYXRmb3JtKCkuCisrICAgIC8vIE90aGVyd2lzZSB0aGUgY29ubmVjdGVkIGZsdXNoUmVxdWVz dHMoKSBtYXkgY29uc3VtZXMgdXAgYWxsIGV2ZW50cyBiZWZvcmUgcHJvY2Vzc0V2ZW50cyBzdGFy dHMgdG8gd2FpdCwKKysgICAgLy8gc28gdGhhdCBwcm9jZXNzRXZlbnRzKFFFdmVudExvb3A6Oldh aXRGb3JNb3JlRXZlbnRzKSBtYXkgYmUgYmxvY2tlZCBpbiB0aGUgZm9yY2VSb3VuZFRyaXAoKS4K KyAgICAgUUFic3RyYWN0RXZlbnREaXNwYXRjaGVyICpkaXNwYXRjaGVyID0gUUd1aUFwcGxpY2F0 aW9uUHJpdmF0ZTo6ZXZlbnREaXNwYXRjaGVyOworICAgICBRT2JqZWN0Ojpjb25uZWN0KGRpc3Bh dGNoZXIsIFNJR05BTChhYm91dFRvQmxvY2soKSksIG1EaXNwbGF5LmRhdGEoKSwgU0xPVChmbHVz aFJlcXVlc3RzKCkpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChkaXNwYXRjaGVyLCBTSUdOQUwo YXdha2UoKSksIG1EaXNwbGF5LmRhdGEoKSwgU0xPVChmbHVzaFJlcXVlc3RzKCkpKTsKKyAKKy0g ICAgaW50IGZkID0gd2xfZGlzcGxheV9nZXRfZmQobURpc3BsYXktPndsX2Rpc3BsYXkoKSk7Cist ICAgIFFTb2NrZXROb3RpZmllciAqc24gPSBuZXcgUVNvY2tldE5vdGlmaWVyKGZkLCBRU29ja2V0 Tm90aWZpZXI6OlJlYWQsIG1EaXNwbGF5LmRhdGEoKSk7CistICAgIFFPYmplY3Q6OmNvbm5lY3Qo c24sIFNJR05BTChhY3RpdmF0ZWQoUVNvY2tldERlc2NyaXB0b3IpKSwgbURpc3BsYXkuZGF0YSgp LCBTTE9UKGZsdXNoUmVxdWVzdHMoKSkpOworLQorICAgICAvLyBRdCBkb2VzIG5vdCBzdXBwb3J0 IHJ1bm5pbmcgd2l0aCBubyBzY3JlZW5zCisgICAgIG1EaXNwbGF5LT5lbnN1cmVTY3JlZW4oKTsK KyB9CitAQCAtMjYyLDYgKzI2OSwxNCBAQCBRV2F5bGFuZERpc3BsYXkgKlFXYXlsYW5kSW50ZWdy YXRpb246OmRpc3BsYXkoKSBjb25zdAorICAgICByZXR1cm4gbURpc3BsYXkuZGF0YSgpOworIH0K KyAKKytRdDo6S2V5Ym9hcmRNb2RpZmllcnMgUVdheWxhbmRJbnRlZ3JhdGlvbjo6cXVlcnlLZXli b2FyZE1vZGlmaWVycygpIGNvbnN0CisreworKyAgICBpZiAoYXV0byAqc2VhdCA9IG1EaXNwbGF5 LT5jdXJyZW50SW5wdXREZXZpY2UoKSkgeworKyAgICAgICAgcmV0dXJuIHNlYXQtPm1vZGlmaWVy cygpOworKyAgICB9CisrICAgIHJldHVybiBRdDo6Tm9Nb2RpZmllcjsKKyt9CisrCisgUUxpc3Q8 aW50PiBRV2F5bGFuZEludGVncmF0aW9uOjpwb3NzaWJsZUtleXMoY29uc3QgUUtleUV2ZW50ICpl dmVudCkgY29uc3QKKyB7CisgICAgIGlmIChhdXRvICpzZWF0ID0gbURpc3BsYXktPmN1cnJlbnRJ bnB1dERldmljZSgpKQorQEAgLTQ3OSw3ICs0OTQsNyBAQCB2b2lkIFFXYXlsYW5kSW50ZWdyYXRp b246OnJlY29uZmlndXJlSW5wdXRDb250ZXh0KCkKKyAgICAgfQorICNlbmRpZgorIAorLSAgICBx Q0RlYnVnKGxjUXBhV2F5bGFuZCkgPDwgInVzaW5nIGlucHV0IG1ldGhvZDoiIDw8IGlucHV0Q29u dGV4dCgpLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpOworKyAgICBxQ0RlYnVnKGxjUXBhV2F5 bGFuZCkgPDwgInVzaW5nIGlucHV0IG1ldGhvZDoiIDw8IChpbnB1dENvbnRleHQoKSA/IGlucHV0 Q29udGV4dCgpLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpIDogIjxub25lPiIpOworIH0KKyAK KyBRV2F5bGFuZFNoZWxsSW50ZWdyYXRpb24gKlFXYXlsYW5kSW50ZWdyYXRpb246OmNyZWF0ZVNo ZWxsSW50ZWdyYXRpb24oY29uc3QgUVN0cmluZyAmaW50ZWdyYXRpb25OYW1lKQorZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25fcC5oIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGZmNzBhZTI1Li43 M2I4MDY1OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdy YXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9u X3AuaAorQEAgLTEwNyw2ICsxMDcsOCBAQCBwdWJsaWM6CisgCisgICAgIFFXYXlsYW5kRGlzcGxh eSAqZGlzcGxheSgpIGNvbnN0OworIAorKyAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgcXVlcnlL ZXlib2FyZE1vZGlmaWVycygpIGNvbnN0IG92ZXJyaWRlOworKworICAgICBRTGlzdDxpbnQ+IHBv c3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2ZW50KSBjb25zdCBvdmVycmlkZTsKKyAKKyAg ICAgUVN0cmluZ0xpc3QgdGhlbWVOYW1lcygpIGNvbnN0IG92ZXJyaWRlOworZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcCBiL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcAoraW5kZXgg ODMyZjk2NzguLmVhNTA4NzcxIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZHByaW1hcnlzZWxlY3Rpb252MS5jcHAKK0BAIC01NCwxMSArNTQsNiBAQCBRV2F5bGFu ZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjE6OlFXYXlsYW5kUHJpbWFyeVNlbGVjdGlv bkRldmljZU1hbmFnZXJWMQorICAgICA6IHp3cF9wcmltYXJ5X3NlbGVjdGlvbl9kZXZpY2VfbWFu YWdlcl92MShkaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCB1aW50KDEp KSkKKyAgICAgLCBtX2Rpc3BsYXkoZGlzcGxheSkKKyB7CistICAgIC8vIENyZWF0ZSBkZXZpY2Vz IGZvciBhbGwgc2VhdHMuCistICAgIC8vIFRoaXMgb25seSB3b3JrcyBpZiB3ZSBnZXQgdGhlIGds b2JhbCBiZWZvcmUgYWxsIGRldmljZXMKKy0gICAgY29uc3QgYXV0byBzZWF0cyA9IG1fZGlzcGxh eS0+aW5wdXREZXZpY2VzKCk7CistICAgIGZvciAoYXV0byAqc2VhdCA6IHNlYXRzKQorLSAgICAg ICAgc2VhdC0+c2V0UHJpbWFyeVNlbGVjdGlvbkRldmljZShjcmVhdGVEZXZpY2Uoc2VhdCkpOwor IH0KKyAKKyBRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VWMSAqUVdheWxhbmRQcmltYXJ5 U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxOjpjcmVhdGVEZXZpY2UoUVdheWxhbmRJbnB1dERldmlj ZSAqc2VhdCkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVl bi5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAKK2luZGV4IDZj YjMzN2RlLi41NTM3ZGFmZCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kc2NyZWVuLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW4u Y3BwCitAQCAtNjAsNyArNjAsNyBAQCBRV2F5bGFuZFhkZ091dHB1dE1hbmFnZXJWMTo6UVdheWxh bmRYZGdPdXRwdXRNYW5hZ2VyVjEoUVdheWxhbmREaXNwbGF5KiBkaXNwbGF5LAorIH0KKyAKKyBR V2F5bGFuZFNjcmVlbjo6UVdheWxhbmRTY3JlZW4oUVdheWxhbmREaXNwbGF5ICp3YXlsYW5kRGlz cGxheSwgaW50IHZlcnNpb24sIHVpbnQzMl90IGlkKQorLSAgICA6IFF0V2F5bGFuZDo6d2xfb3V0 cHV0KHdheWxhbmREaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCAyKSkK KysgICAgOiBRdFdheWxhbmQ6OndsX291dHB1dCh3YXlsYW5kRGlzcGxheS0+d2xfcmVnaXN0cnko KSwgaWQsIHFNaW4odmVyc2lvbiwgMykpCisgICAgICwgbV9vdXRwdXRJZChpZCkKKyAgICAgLCBt V2F5bGFuZERpc3BsYXkod2F5bGFuZERpc3BsYXkpCisgICAgICwgbU91dHB1dE5hbWUoUVN0cmlu Z0xpdGVyYWwoIlNjcmVlbiUxIikuYXJnKGlkKSkKK0BAIC03Miw3ICs3Miw3IEBAIFFXYXlsYW5k U2NyZWVuOjpRV2F5bGFuZFNjcmVlbihRV2F5bGFuZERpc3BsYXkgKndheWxhbmREaXNwbGF5LCBp bnQgdmVyc2lvbiwgdWluCisgICAgICAgICBxQ1dhcm5pbmcobGNRcGFXYXlsYW5kKSA8PCAid2xf b3V0cHV0IGRvbmUgZXZlbnQgbm90IHN1cHBvcnRlZCBieSBjb21wb3NpdG9yLCIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJRU2NyZWVuIG1heSBub3Qgd29yayBjb3JyZWN0 bHkiOworICAgICAgICAgbVdheWxhbmREaXNwbGF5LT5mb3JjZVJvdW5kVHJpcCgpOyAvLyBHaXZl IHRoZSBjb21wb3NpdG9yIGEgY2hhbmNlIHRvIHNlbmQgZ2VvbWV0cnkgZXRjLgorLSAgICAgICAg bU91dHB1dERvbmUgPSB0cnVlOyAvLyBGYWtlIHRoZSBkb25lIGV2ZW50CisrICAgICAgICBtUHJv Y2Vzc2VkRXZlbnRzIHw9IE91dHB1dERvbmVFdmVudDsgLy8gRmFrZSB0aGUgZG9uZSBldmVudAor ICAgICAgICAgbWF5YmVJbml0aWFsaXplKCk7CisgICAgIH0KKyB9CitAQCAtODEsMTYgKzgxLDI5 IEBAIFFXYXlsYW5kU2NyZWVuOjp+UVdheWxhbmRTY3JlZW4oKQorIHsKKyAgICAgaWYgKHp4ZGdf b3V0cHV0X3YxOjppc0luaXRpYWxpemVkKCkpCisgICAgICAgICB6eGRnX291dHB1dF92MTo6ZGVz dHJveSgpOworKyAgICBpZiAod2xfb3V0cHV0Ojppc0luaXRpYWxpemVkKCkgJiYgd2xfb3V0cHV0 X2dldF92ZXJzaW9uKHdsX291dHB1dDo6b2JqZWN0KCkpID49IFdMX09VVFBVVF9SRUxFQVNFX1NJ TkNFX1ZFUlNJT04pCisrICAgICAgICB3bF9vdXRwdXQ6OnJlbGVhc2UoKTsKKyt9CisrCisrdWlu dCBRV2F5bGFuZFNjcmVlbjo6cmVxdWlyZWRFdmVudHMoKSBjb25zdAorK3sKKysgICAgdWludCBy ZXQgPSBPdXRwdXREb25lRXZlbnQ7CisrCisrICAgIGlmIChtV2F5bGFuZERpc3BsYXktPnhkZ091 dHB1dE1hbmFnZXIoKSkgeworKyAgICAgICAgcmV0IHw9IFhkZ091dHB1dE5hbWVFdmVudDsKKysK KysgICAgICAgIGlmIChtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKS0+dmVyc2lv bigpIDwgMykKKysgICAgICAgICAgICByZXQgfD0gWGRnT3V0cHV0RG9uZUV2ZW50OworKyAgICB9 CisrICAgIHJldHVybiByZXQ7CisgfQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46Om1heWJlSW5p dGlhbGl6ZSgpCisgeworICAgICBRX0FTU0VSVCghbUluaXRpYWxpemVkKTsKKyAKKy0gICAgaWYg KCFtT3V0cHV0RG9uZSkKKy0gICAgICAgIHJldHVybjsKKy0KKy0gICAgaWYgKG1XYXlsYW5kRGlz cGxheS0+eGRnT3V0cHV0TWFuYWdlcigpICYmICFtWGRnT3V0cHV0RG9uZSkKKysgICAgY29uc3Qg dWludCByZXF1aXJlZEV2ZW50cyA9IHRoaXMtPnJlcXVpcmVkRXZlbnRzKCk7CisrICAgIGlmICgo bVByb2Nlc3NlZEV2ZW50cyAmIHJlcXVpcmVkRXZlbnRzKSAhPSByZXF1aXJlZEV2ZW50cykKKyAg ICAgICAgIHJldHVybjsKKyAKKyAgICAgbUluaXRpYWxpemVkID0gdHJ1ZTsKK0BAIC0yNzYsOSAr Mjg5LDggQEAgdm9pZCBRV2F5bGFuZFNjcmVlbjo6b3V0cHV0X3NjYWxlKGludDMyX3QgZmFjdG9y KQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46Om91dHB1dF9kb25lKCkKKyB7CistICAgIG1PdXRw dXREb25lID0gdHJ1ZTsKKy0gICAgaWYgKHp4ZGdfb3V0cHV0X3YxOjppc0luaXRpYWxpemVkKCkg JiYgbVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCktPnZlcnNpb24oKSA+PSAzKQor LSAgICAgICAgbVhkZ091dHB1dERvbmUgPSB0cnVlOworKyAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9 IE91dHB1dERvbmVFdmVudDsKKysKKyAgICAgaWYgKG1Jbml0aWFsaXplZCkgeworICAgICAgICAg dXBkYXRlT3V0cHV0UHJvcGVydGllcygpOworICAgICAgICAgaWYgKHp4ZGdfb3V0cHV0X3YxOjpp c0luaXRpYWxpemVkKCkpCitAQCAtMzM5LDcgKzM1MSw3IEBAIHZvaWQgUVdheWxhbmRTY3JlZW46 Onp4ZGdfb3V0cHV0X3YxX2RvbmUoKQorICAgICBpZiAoUV9VTkxJS0VMWShtV2F5bGFuZERpc3Bs YXktPnhkZ091dHB1dE1hbmFnZXIoKS0+dmVyc2lvbigpID49IDMpKQorICAgICAgICAgcVdhcm5p bmcobGNRcGFXYXlsYW5kKSA8PCAienhkZ19vdXRwdXRfdjEuZG9uZSByZWNlaXZlZCBvbiB2ZXJz aW9uIDMgb3IgbmV3ZXIsIHRoaXMgaXMgbW9zdCBsaWtlbHkgYSBidWcgaW4gdGhlIGNvbXBvc2l0 b3IiOworIAorLSAgICBtWGRnT3V0cHV0RG9uZSA9IHRydWU7CisrICAgIG1Qcm9jZXNzZWRFdmVu dHMgfD0gWGRnT3V0cHV0RG9uZUV2ZW50OworICAgICBpZiAobUluaXRpYWxpemVkKQorICAgICAg ICAgdXBkYXRlWGRnT3V0cHV0UHJvcGVydGllcygpOworICAgICBlbHNlCitAQCAtMzQ4LDcgKzM2 MCwxMSBAQCB2b2lkIFFXYXlsYW5kU2NyZWVuOjp6eGRnX291dHB1dF92MV9kb25lKCkKKyAKKyB2 b2lkIFFXYXlsYW5kU2NyZWVuOjp6eGRnX291dHB1dF92MV9uYW1lKGNvbnN0IFFTdHJpbmcgJm5h bWUpCisgeworKyAgICBpZiAoUV9VTkxJS0VMWShtSW5pdGlhbGl6ZWQpKQorKyAgICAgICAgcVdh cm5pbmcobGNRcGFXYXlsYW5kKSA8PCAienhkZ19vdXRwdXRfdjEubmFtZSByZWNlaXZlZCBhZnRl ciBvdXRwdXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIHRoaXMgaXMgbW9zdCBsaWtlbHkgYSBidWcg aW4gdGhlIGNvbXBvc2l0b3IiOworKworICAgICBtT3V0cHV0TmFtZSA9IG5hbWU7CisrICAgIG1Q cm9jZXNzZWRFdmVudHMgfD0gWGRnT3V0cHV0TmFtZUV2ZW50OworIH0KKyAKKyB2b2lkIFFXYXls YW5kU2NyZWVuOjp1cGRhdGVYZGdPdXRwdXRQcm9wZXJ0aWVzKCkKK2RpZmYgLS1naXQgYS9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZHNjcmVlbl9wLmgKK2luZGV4IGRmMWM5NGYyLi4wNTBjZmRjMCAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuX3AuaAorKysrIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oCitAQCAtMTE2LDYgKzExNiwxMyBAQCBw dWJsaWM6CisgICAgIHN0YXRpYyBRV2F5bGFuZFNjcmVlbiAqZnJvbVdsT3V0cHV0KDo6d2xfb3V0 cHV0ICpvdXRwdXQpOworIAorIHByaXZhdGU6CisrICAgIGVudW0gRXZlbnQgOiB1aW50IHsKKysg ICAgICAgIFhkZ091dHB1dERvbmVFdmVudCA9IDB4MSwKKysgICAgICAgIE91dHB1dERvbmVFdmVu dCA9IDB4MiwKKysgICAgICAgIFhkZ091dHB1dE5hbWVFdmVudCA9IDB4NCwKKysgICAgfTsKKysg ICAgdWludCByZXF1aXJlZEV2ZW50cygpIGNvbnN0OworKworICAgICB2b2lkIG91dHB1dF9tb2Rl KHVpbnQzMl90IGZsYWdzLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCByZWZyZXNoKSBvdmVy cmlkZTsKKyAgICAgdm9pZCBvdXRwdXRfZ2VvbWV0cnkoaW50MzJfdCB4LCBpbnQzMl90IHksCisg ICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LAor QEAgLTE0OCw4ICsxNTUsNyBAQCBwcml2YXRlOgorICAgICBRU2l6ZSBtUGh5c2ljYWxTaXplOwor ICAgICBRU3RyaW5nIG1PdXRwdXROYW1lOworICAgICBRdDo6U2NyZWVuT3JpZW50YXRpb24gbV9v cmllbnRhdGlvbiA9IFF0OjpQcmltYXJ5T3JpZW50YXRpb247CistICAgIGJvb2wgbU91dHB1dERv bmUgPSBmYWxzZTsKKy0gICAgYm9vbCBtWGRnT3V0cHV0RG9uZSA9IGZhbHNlOworKyAgICB1aW50 IG1Qcm9jZXNzZWRFdmVudHMgPSAwOworICAgICBib29sIG1Jbml0aWFsaXplZCA9IGZhbHNlOwor IAorICNpZiBRVF9DT05GSUcoY3Vyc29yKQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcAoraW5kZXggZGM3ZmY2NzAuLjQxY2ZmZGY3IDEwMDY0 NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5nc3RvcmUuY3Bw CisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAK K0BAIC01Miw2ICs1Miw3IEBACisgCisgI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRl L3dheWxhbmQtd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaD4KKyAKKysjaW5jbHVkZSA8ZmNudGwu aD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisgCitAQCAt NjEsNiArNjIsOSBAQAorICMgIGlmbmRlZiBNRkRfQ0xPRVhFQworICMgICAgZGVmaW5lIE1GRF9D TE9FWEVDICAgICAweDAwMDFVCisgIyAgZW5kaWYKKysjICBpZm5kZWYgTUZEX0FMTE9XX1NFQUxJ TkcKKysjICAgIGRlZmluZSBNRkRfQUxMT1dfU0VBTElORyAweDAwMDJVCisrIyAgZW5kaWYKKyAj ZW5kaWYKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKK0BAIC03NCw4ICs3OCwxMCBAQCBRV2F5bGFu ZFNobUJ1ZmZlcjo6UVdheWxhbmRTaG1CdWZmZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LAor ICAgICBpbnQgYWxsb2MgPSBzdHJpZGUgKiBzaXplLmhlaWdodCgpOworICAgICBpbnQgZmQgPSAt MTsKKyAKKy0jaWZkZWYgU1lTX21lbWZkX2NyZWF0ZQorLSAgICBmZCA9IHN5c2NhbGwoU1lTX21l bWZkX2NyZWF0ZSwgIndheWxhbmQtc2htIiwgTUZEX0NMT0VYRUMpOworKyNpZiBkZWZpbmVkKFNZ U19tZW1mZF9jcmVhdGUpICYmIGRlZmluZWQoRl9TRUFMX1NFQUwpCisrICAgIGZkID0gc3lzY2Fs bChTWVNfbWVtZmRfY3JlYXRlLCAid2F5bGFuZC1zaG0iLCBNRkRfQ0xPRVhFQyB8IE1GRF9BTExP V19TRUFMSU5HKTsKKysgICAgaWYgKGZkID49IDApCisrICAgICAgICBmY250bChmZCwgRl9BRERf U0VBTFMsIEZfU0VBTF9TSFJJTksgfCBGX1NFQUxfU0VBTCk7CisgI2VuZGlmCisgCisgICAgIFFT Y29wZWRQb2ludGVyPFFGaWxlPiBmaWxlUG9pbnRlcjsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvdy5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZHdpbmRvdy5jcHAKK2luZGV4IGNiODI4NTdhLi5mYjJjNTlkYyAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3BwCitAQCAtNzYsNyArNzYsNiBAQCBRV2F5bGFuZFdp bmRvdyAqUVdheWxhbmRXaW5kb3c6Om1Nb3VzZUdyYWIgPSBudWxscHRyOworIFFXYXlsYW5kV2lu ZG93OjpRV2F5bGFuZFdpbmRvdyhRV2luZG93ICp3aW5kb3csIFFXYXlsYW5kRGlzcGxheSAqZGlz cGxheSkKKyAgICAgOiBRUGxhdGZvcm1XaW5kb3cod2luZG93KQorICAgICAsIG1EaXNwbGF5KGRp c3BsYXkpCistICAgICwgbUZyYW1lUXVldWUobURpc3BsYXktPmNyZWF0ZUZyYW1lUXVldWUoKSkK KyAgICAgLCBtUmVzaXplQWZ0ZXJTd2FwKHFFbnZpcm9ubWVudFZhcmlhYmxlSXNTZXQoIlFUX1dB WUxBTkRfUkVTSVpFX0FGVEVSX1NXQVAiKSkKKyB7CisgICAgIHsKK0BAIC05NSw5ICs5NCw2IEBA IFFXYXlsYW5kV2luZG93OjpRV2F5bGFuZFdpbmRvdyhRV2luZG93ICp3aW5kb3csIFFXYXlsYW5k RGlzcGxheSAqZGlzcGxheSkKKyAKKyBRV2F5bGFuZFdpbmRvdzo6flFXYXlsYW5kV2luZG93KCkK KyB7CistICAgIG1EaXNwbGF5LT5kZXN0cm95RnJhbWVRdWV1ZShtRnJhbWVRdWV1ZSk7CistICAg IG1EaXNwbGF5LT5oYW5kbGVXaW5kb3dEZXN0cm95ZWQodGhpcyk7CistCisgICAgIGRlbGV0ZSBt V2luZG93RGVjb3JhdGlvbjsKKyAKKyAgICAgaWYgKG1TdXJmYWNlKQorQEAgLTI0Myw2ICsyMzks NyBAQCBib29sIFFXYXlsYW5kV2luZG93OjpzaG91bGRDcmVhdGVTdWJTdXJmYWNlKCkgY29uc3QK KyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXNldCgpCisgeworKyAgICBjbG9zZUNoaWxkUG9w dXBzKCk7CisgICAgIGRlbGV0ZSBtU2hlbGxTdXJmYWNlOworICAgICBtU2hlbGxTdXJmYWNlID0g bnVsbHB0cjsKKyAgICAgZGVsZXRlIG1TdWJTdXJmYWNlV2luZG93OworQEAgLTI1NSwxNyArMjUy LDIyIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlc2V0KCkKKyAgICAgICAgIG1TdXJmYWNlLnJl c2V0KCk7CisgICAgIH0KKyAKKy0gICAgaWYgKG1GcmFtZUNhbGxiYWNrKSB7CistICAgICAgICB3 bF9jYWxsYmFja19kZXN0cm95KG1GcmFtZUNhbGxiYWNrKTsKKy0gICAgICAgIG1GcmFtZUNhbGxi YWNrID0gbnVsbHB0cjsKKy0gICAgfQorKyAgICB7CisrICAgICAgICBRTXV0ZXhMb2NrZXIgbG9j aygmbUZyYW1lU3luY011dGV4KTsKKysgICAgICAgIGlmIChtRnJhbWVDYWxsYmFjaykgeworKyAg ICAgICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobUZyYW1lQ2FsbGJhY2spOworKyAgICAgICAg ICAgIG1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKysgICAgICAgIH0KKyAKKy0gICAgbUZyYW1l Q2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworLSAgICBtV2FpdGluZ0ZvckZyYW1l Q2FsbGJhY2sgPSBmYWxzZTsKKysgICAgICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlu dmFsaWRhdGUoKTsKKysgICAgICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOwor KyAgICB9CisgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsKKyAKKyAgICAgbU1h c2sgPSBRUmVnaW9uKCk7CisgICAgIG1RdWV1ZWRCdWZmZXIgPSBudWxscHRyOworKworKyAgICBt RGlzcGxheS0+aGFuZGxlV2luZG93RGVzdHJveWVkKHRoaXMpOworIH0KKyAKKyBRV2F5bGFuZFdp bmRvdyAqUVdheWxhbmRXaW5kb3c6OmZyb21XbFN1cmZhY2UoOjp3bF9zdXJmYWNlICpzdXJmYWNl KQorQEAgLTM1MSwxOSArMzUzLDI1IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5 X2hlbHBlcihjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgfQorIH0KKyAKKy12b2lkIFFXYXlsYW5k V2luZG93OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcmVjdCkKKyt2b2lkIFFXYXlsYW5kV2lu ZG93OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcikKKyB7CisrICAgIGF1dG8gcmVjdCA9IHI7 CisrICAgIGlmIChmaXhlZFRvcGxldmVsUG9zaXRpb25zICYmICFRUGxhdGZvcm1XaW5kb3c6OnBh cmVudCgpICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlBvcHVwCisrICAgICAgICAmJiB3aW5k b3coKS0+dHlwZSgpICE9IFF0OjpUb29sVGlwKSB7CisrICAgICAgICByZWN0Lm1vdmVUbyhzY3Jl ZW4oKS0+Z2VvbWV0cnkoKS50b3BMZWZ0KCkpOworKyAgICB9CisgICAgIHNldEdlb21ldHJ5X2hl bHBlcihyZWN0KTsKKyAKKyAgICAgaWYgKHdpbmRvdygpLT5pc1Zpc2libGUoKSAmJiByZWN0Lmlz VmFsaWQoKSkgeworICAgICAgICAgaWYgKG1XaW5kb3dEZWNvcmF0aW9uKQorICAgICAgICAgICAg IG1XaW5kb3dEZWNvcmF0aW9uLT51cGRhdGUoKTsKKyAKKy0gICAgICAgIGlmIChtUmVzaXplQWZ0 ZXJTd2FwICYmIHdpbmRvd1R5cGUoKSA9PSBFZ2wgJiYgbVNlbnRJbml0aWFsUmVzaXplKQorKyAg ICAgICAgaWYgKG1SZXNpemVBZnRlclN3YXAgJiYgd2luZG93VHlwZSgpID09IEVnbCAmJiBtU2Vu dEluaXRpYWxSZXNpemUpIHsKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbVJlc2l6 ZUxvY2spOworICAgICAgICAgICAgIG1SZXNpemVEaXJ0eSA9IHRydWU7CistICAgICAgICBlbHNl CisrICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6 OmhhbmRsZUdlb21ldHJ5Q2hhbmdlKHdpbmRvdygpLCBnZW9tZXRyeSgpKTsKKy0KKysgICAgICAg IH0KKyAgICAgICAgIG1TZW50SW5pdGlhbFJlc2l6ZSA9IHRydWU7CisgICAgIH0KKyAgICAgUVJl Y3QgZXhwb3NlR2VvbWV0cnkoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKTsKK0BAIC0zNzQs NyArMzgyLDcgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3Qg JnJlY3QpCisgICAgICAgICBtU2hlbGxTdXJmYWNlLT5zZXRXaW5kb3dHZW9tZXRyeSh3aW5kb3dD b250ZW50R2VvbWV0cnkoKSk7CisgCisgICAgIGlmIChpc09wYXF1ZSgpICYmIG1NYXNrLmlzRW1w dHkoKSkKKy0gICAgICAgIHNldE9wYXF1ZUFyZWEocmVjdCk7CisrICAgICAgICBzZXRPcGFxdWVB cmVhKFFSZWN0KFFQb2ludCgwLCAwKSwgcmVjdC5zaXplKCkpKTsKKyB9CisgCisgdm9pZCBRV2F5 bGFuZFdpbmRvdzo6cmVzaXplRnJvbUFwcGx5Q29uZmlndXJlKGNvbnN0IFFTaXplICZzaXplV2l0 aE1hcmdpbnMsIGNvbnN0IFFQb2ludCAmb2Zmc2V0KQorQEAgLTM5OSwyMSArNDA3LDYgQEAgdm9p ZCBRV2F5bGFuZFdpbmRvdzo6c2VuZEV4cG9zZUV2ZW50KGNvbnN0IFFSZWN0ICZyZWN0KQorICAg ICBtTGFzdEV4cG9zZUdlb21ldHJ5ID0gcmVjdDsKKyB9CisgCistCistc3RhdGljIFFWZWN0b3I8 UVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+PiBhY3RpdmVQb3B1cHM7CistCistdm9pZCBRV2F5bGFu ZFdpbmRvdzo6Y2xvc2VQb3B1cHMoUVdheWxhbmRXaW5kb3cgKnBhcmVudCkKKy17CistICAgIHdo aWxlICghYWN0aXZlUG9wdXBzLmlzRW1wdHkoKSkgeworLSAgICAgICAgYXV0byBwb3B1cCA9IGFj dGl2ZVBvcHVwcy50YWtlTGFzdCgpOworLSAgICAgICAgaWYgKHBvcHVwLmlzTnVsbCgpKQorLSAg ICAgICAgICAgIGNvbnRpbnVlOworLSAgICAgICAgaWYgKHBvcHVwLmRhdGEoKSA9PSBwYXJlbnQp CistICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgcG9wdXAtPnJlc2V0KCk7CistICAgIH0K Ky19CistCisgUVBsYXRmb3JtU2NyZWVuICpRV2F5bGFuZFdpbmRvdzo6Y2FsY3VsYXRlU2NyZWVu RnJvbVN1cmZhY2VFdmVudHMoKSBjb25zdAorIHsKKyAgICAgUVJlYWRMb2NrZXIgbG9jaygmbVN1 cmZhY2VMb2NrKTsKK0BAIC00MzMsMTAgKzQyNiw3IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNl dFZpc2libGUoYm9vbCB2aXNpYmxlKQorICAgICBsYXN0VmlzaWJsZSA9IHZpc2libGU7CisgCisg ICAgIGlmICh2aXNpYmxlKSB7CistICAgICAgICBpZiAod2luZG93KCktPnR5cGUoKSA9PSBRdDo6 UG9wdXAgfHwgd2luZG93KCktPnR5cGUoKSA9PSBRdDo6VG9vbFRpcCkKKy0gICAgICAgICAgICBh Y3RpdmVQb3B1cHMgPDwgdGhpczsKKyAgICAgICAgIGluaXRXaW5kb3coKTsKKy0gICAgICAgIG1E aXNwbGF5LT5mbHVzaFJlcXVlc3RzKCk7CisgCisgICAgICAgICBzZXRHZW9tZXRyeSh3aW5kb3dH ZW9tZXRyeSgpKTsKKyAgICAgICAgIC8vIERvbid0IGZsdXNoIHRoZSBldmVudHMgaGVyZSwgb3Ig ZWxzZSB0aGUgbmV3bHkgdmlzaWJsZSB3aW5kb3cgbWF5IHN0YXJ0IGRyYXdpbmcsIGJ1dCBzaW5j ZQorQEAgLTQ0NCw3ICs0MzQsNiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRWaXNpYmxlKGJv b2wgdmlzaWJsZSkKKyAgICAgICAgIC8vIFFXYXlsYW5kU2htQmFja2luZ1N0b3JlOjpiZWdpblBh aW50KCkuCisgICAgIH0gZWxzZSB7CisgICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoKSk7 CistICAgICAgICBjbG9zZVBvcHVwcyh0aGlzKTsKKyAgICAgICAgIHJlc2V0KCk7CisgICAgIH0K KyB9CitAQCAtNTU2LDEyICs1NDUsMTIgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2VuZFJlY3Vy c2l2ZUV4cG9zZUV2ZW50KCkKKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjphdHRhY2goUVdheWxh bmRCdWZmZXIgKmJ1ZmZlciwgaW50IHgsIGludCB5KQorIHsKKy0gICAgUV9BU1NFUlQoIWJ1ZmZl ci0+Y29tbWl0dGVkKCkpOworICAgICBRUmVhZExvY2tlciBsb2NrZXIoJm1TdXJmYWNlTG9jayk7 CisgICAgIGlmIChtU3VyZmFjZSA9PSBudWxscHRyKQorICAgICAgICAgcmV0dXJuOworIAorICAg ICBpZiAoYnVmZmVyKSB7CisrICAgICAgICBRX0FTU0VSVCghYnVmZmVyLT5jb21taXR0ZWQoKSk7 CisgICAgICAgICBoYW5kbGVVcGRhdGUoKTsKKyAgICAgICAgIGJ1ZmZlci0+c2V0QnVzeSgpOwor IAorQEAgLTU4Myw3ICs1NzIsMTEgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6ZGFtYWdlKGNvbnN0 IFFSZWN0ICZyZWN0KQorICAgICBpZiAobVN1cmZhY2UgPT0gbnVsbHB0cikKKyAgICAgICAgIHJl dHVybjsKKyAKKy0gICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qu d2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisrICAgIGNvbnN0IGludCBzID0gc2NhbGUoKTsKKysg ICAgaWYgKG1EaXNwbGF5LT5jb21wb3NpdG9yVmVyc2lvbigpID49IDQpCisrICAgICAgICBtU3Vy ZmFjZS0+ZGFtYWdlX2J1ZmZlcihzICogcmVjdC54KCksIHMgKiByZWN0LnkoKSwgcyAqIHJlY3Qu d2lkdGgoKSwgcyAqIHJlY3QuaGVpZ2h0KCkpOworKyAgICBlbHNlCisrICAgICAgICBtU3VyZmFj ZS0+ZGFtYWdlKHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgp KTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2FmZUNvbW1pdChRV2F5bGFuZEJ1ZmZl ciAqYnVmZmVyLCBjb25zdCBRUmVnaW9uICZkYW1hZ2UpCitAQCAtNjE5LDggKzYxMiwxNCBAQCB2 b2lkIFFXYXlsYW5kV2luZG93Ojpjb21taXQoUVdheWxhbmRCdWZmZXIgKmJ1ZmZlciwgY29uc3Qg UVJlZ2lvbiAmZGFtYWdlKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBhdHRhY2hPZmZzZXQo YnVmZmVyKTsKKy0gICAgZm9yIChjb25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQorLSAgICAgICAg bVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5o ZWlnaHQoKSk7CisrICAgIGlmIChtRGlzcGxheS0+Y29tcG9zaXRvclZlcnNpb24oKSA+PSA0KSB7 CisrICAgICAgICBjb25zdCBpbnQgcyA9IHNjYWxlKCk7CisrICAgICAgICBmb3IgKGNvbnN0IFFS ZWN0ICZyZWN0OiBkYW1hZ2UpCisrICAgICAgICAgICAgbVN1cmZhY2UtPmRhbWFnZV9idWZmZXIo cyAqIHJlY3QueCgpLCBzICogcmVjdC55KCksIHMgKiByZWN0LndpZHRoKCksIHMgKiByZWN0Lmhl aWdodCgpKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIGZvciAoY29uc3QgUVJlY3QgJnJlY3Q6 IGRhbWFnZSkKKysgICAgICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlKHJlY3QueCgpLCByZWN0Lnko KSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKysgICAgfQorICAgICBRX0FTU0VSVCgh YnVmZmVyLT5jb21taXR0ZWQoKSk7CisgICAgIGJ1ZmZlci0+c2V0Q29tbWl0dGVkKCk7CisgICAg IG1TdXJmYWNlLT5jb21taXQoKTsKK0BAIC02MzUsNDIgKzYzNCw1MyBAQCB2b2lkIFFXYXlsYW5k V2luZG93Ojpjb21taXQoKQorIAorIGNvbnN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIFFXYXlsYW5k V2luZG93OjpjYWxsYmFja0xpc3RlbmVyID0geworICAgICBbXSh2b2lkICpkYXRhLCB3bF9jYWxs YmFjayAqY2FsbGJhY2ssIHVpbnQzMl90IHRpbWUpIHsKKy0gICAgICAgIFFfVU5VU0VEKGNhbGxi YWNrKTsKKyAgICAgICAgIFFfVU5VU0VEKHRpbWUpOworICAgICAgICAgYXV0byAqd2luZG93ID0g c3RhdGljX2Nhc3Q8UVdheWxhbmRXaW5kb3cqPihkYXRhKTsKKy0gICAgICAgIHdpbmRvdy0+aGFu ZGxlRnJhbWVDYWxsYmFjaygpOworKyAgICAgICAgd2luZG93LT5oYW5kbGVGcmFtZUNhbGxiYWNr KGNhbGxiYWNrKTsKKyAgICAgfQorIH07CisgCistdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxl RnJhbWVDYWxsYmFjaygpCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlRnJhbWVDYWxsYmFj ayh3bF9jYWxsYmFjayogY2FsbGJhY2spCisgeworKyAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZt RnJhbWVTeW5jTXV0ZXgpOworKyAgICBpZiAoIW1GcmFtZUNhbGxiYWNrKSB7CisrICAgICAgICAv LyBUaGlzIG1lYW5zIHRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IHVuc2V0IGJ5IFFXYXlsYW5kV2lu ZG93OjpyZXNldC4KKysgICAgICAgIC8vIFRoZSB3bF9jYWxsYmFjayBvYmplY3Qgd2lsbCBiZSBk ZXN0cm95ZWQgdGhlcmUgdG9vLgorKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIFFfQVNT RVJUKGNhbGxiYWNrID09IG1GcmFtZUNhbGxiYWNrKTsKKysgICAgd2xfY2FsbGJhY2tfZGVzdHJv eShjYWxsYmFjayk7CisrICAgIG1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKysKKyAgICAgbVdh aXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisgICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNl ZFRpbWVyLmludmFsaWRhdGUoKTsKKyAKKyAgICAgLy8gVGhlIHJlc3QgY2FuIHdhaXQgdW50aWwg d2UgY2FuIHJ1biBpdCBvbiB0aGUgY29ycmVjdCB0aHJlYWQKKy0gICAgaWYgKCFtV2FpdGluZ0Zv clVwZGF0ZURlbGl2ZXJ5KSB7CistICAgICAgICBhdXRvIGRvSGFuZGxlRXhwb3NlID0gW3RoaXNd KCkgeworLSAgICAgICAgICAgIGJvb2wgd2FzRXhwb3NlZCA9IGlzRXhwb3NlZCgpOworLSAgICAg ICAgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsKKy0gICAgICAgICAgICBpZiAo IXdhc0V4cG9zZWQgJiYgaXNFeHBvc2VkKCkpIC8vIERpZCBzZXR0aW5nIG1GcmFtZUNhbGxiYWNr VGltZWRPdXQgbWFrZSB0aGUgd2luZG93IGV4cG9zZWQ/CistICAgICAgICAgICAgICAgIHNlbmRF eHBvc2VFdmVudChRUmVjdChRUG9pbnQoKSwgZ2VvbWV0cnkoKS5zaXplKCkpKTsKKy0gICAgICAg ICAgICBpZiAod2FzRXhwb3NlZCAmJiBoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKQorLSAgICAg ICAgICAgICAgICBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpOworLQorLSAgICAgICAgICAgIG1XYWl0 aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSBmYWxzZTsKKy0gICAgICAgIH07CisrICAgIGF1dG8gZG9I YW5kbGVFeHBvc2UgPSBbdGhpc10oKSB7CisrICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2 ZXJ5LnN0b3JlUmVsZWFzZShmYWxzZSk7CisrICAgICAgICBib29sIHdhc0V4cG9zZWQgPSBpc0V4 cG9zZWQoKTsKKysgICAgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsKKysgICAg ICAgIGlmICghd2FzRXhwb3NlZCAmJiBpc0V4cG9zZWQoKSkgLy8gRGlkIHNldHRpbmcgbUZyYW1l Q2FsbGJhY2tUaW1lZE91dCBtYWtlIHRoZSB3aW5kb3cgZXhwb3NlZD8KKysgICAgICAgICAgICBz ZW5kRXhwb3NlRXZlbnQoUVJlY3QoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKSk7CisrICAg ICAgICBpZiAod2FzRXhwb3NlZCAmJiBoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKQorKyAgICAg ICAgICAgIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCk7CisrICAgIH07CisgCisrICAgIGlmIChtV2Fp dGluZ0ZvclVwZGF0ZURlbGl2ZXJ5LnRlc3RBbmRTZXRBY3F1aXJlKGZhbHNlLCB0cnVlKSkgewor ICAgICAgICAgLy8gUXVldWVkIGNvbm5lY3Rpb24sIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBjYWxs IGhhbmRsZVVwZGF0ZSgpIGZyb20gaW5zaWRlIHdhaXRGb3JGcmFtZVN5bmMoKQorICAgICAgICAg Ly8gaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBjYXNlLgorLSAgICAgICAgbVdhaXRpbmdGb3JVcGRh dGVEZWxpdmVyeSA9IHRydWU7CisgICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRo aXMsIGRvSGFuZGxlRXhwb3NlLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAgIH0KKysKKysg ICAgbUZyYW1lU3luY1dhaXQubm90aWZ5X2FsbCgpOworIH0KKyAKKyBib29sIFFXYXlsYW5kV2lu ZG93Ojp3YWl0Rm9yRnJhbWVTeW5jKGludCB0aW1lb3V0KQorIHsKKy0gICAgUU11dGV4TG9ja2Vy IGxvY2tlcihtRnJhbWVRdWV1ZS5tdXRleCk7CistICAgIG1EaXNwbGF5LT5kaXNwYXRjaFF1ZXVl V2hpbGUobUZyYW1lUXVldWUucXVldWUsIFsmXSgpIHsgcmV0dXJuIG1XYWl0aW5nRm9yRnJhbWVD YWxsYmFjazsgfSwgdGltZW91dCk7CisrICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5 bmNNdXRleCk7CisrCisrICAgIFFEZWFkbGluZVRpbWVyIGRlYWRsaW5lKHRpbWVvdXQpOworKyAg ICB3aGlsZSAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrICYmIG1GcmFtZVN5bmNXYWl0LndhaXQo Jm1GcmFtZVN5bmNNdXRleCwgZGVhZGxpbmUpKSB7IH0KKyAKKyAgICAgaWYgKG1XYWl0aW5nRm9y RnJhbWVDYWxsYmFjaykgeworICAgICAgICAgcUNEZWJ1ZyhsY1dheWxhbmRCYWNraW5nc3RvcmUp IDw8ICJEaWRuJ3QgcmVjZWl2ZSBmcmFtZSBjYWxsYmFjayBpbiB0aW1lLCB3aW5kb3cgc2hvdWxk IG5vdyBiZSBpbmV4cG9zZWQiOworQEAgLTg2OCw2ICs4NzgsMTcgQEAgYm9vbCBRV2F5bGFuZFdp bmRvdzo6Y3JlYXRlRGVjb3JhdGlvbigpCisgICAgICAgICAgICAgc3Vic3VyZi0+c2V0X3Bvc2l0 aW9uKHBvcy54KCkgKyBtLmxlZnQoKSwgcG9zLnkoKSArIG0udG9wKCkpOworICAgICAgICAgfQor ICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNpemUo KSkpOworKworKyAgICAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgYnVm ZmVyIGlzIHJlY3JlYXRlZCwgYnV0IHNpbmNlCisrICAgICAgICAvLyB0aGUgY29udGVudCByZWN0 IHJlbWFpbnMgdGhlIHNhbWUsIHRoZSB3aWRnZXRzIHJlbWFpbiB0aGUgc2FtZQorKyAgICAgICAg Ly8gc2l6ZSBhbmQgYXJlIG5vdCByZWRyYXduLCBsZWF2aW5nIHRoZSBuZXcgYnVmZmVyIGVtcHR5 LiBBcyBhIHNpbXBsZQorKyAgICAgICAgLy8gd29yay1hcm91bmQsIHdlIHRyaWdnZXIgYSBmdWxs IGV4dHJhIHVwZGF0ZSB3aGVuZXZlciB0aGUgY2xpZW50LXNpZGUKKysgICAgICAgIC8vIHdpbmRv dyBkZWNvcmF0aW9ucyBhcmUgdG9nZ2xlZCB3aGlsZSB0aGUgd2luZG93IGlzIHNob3dpbmcuCisr ICAgICAgICAvLyBOb3RlOiBjcmVhdGVEZWNvcmF0aW9uKCkgaXMgc29tZXRpbWVzIGNhbGxlZCBm cm9tIHRoZSByZW5kZXIgdGhyZWFkCisrICAgICAgICAvLyBvZiBRdCBRdWljay4gVGhpcyBpcyBl c3NlbnRpYWxseSB3cm9uZyBhbmQgY291bGQgcG90ZW50aWFsbHkgY2F1c2UgcHJvYmxlbXMsCisr ICAgICAgICAvLyBidXQgdW50aWwgdGhlIHVuZGVybHlpbmcgaXNzdWUgaGFzIGJlZW4gZml4ZWQs IHdlIGhhdmUgdG8gdXNlIGludm9rZU1ldGhvZCgpCisrICAgICAgICAvLyBoZXJlIHRvIGF2b2lk IGFzc2VydHMuCisrICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHdpbmRvdygpLCAm UVdpbmRvdzo6cmVxdWVzdFVwZGF0ZSk7CisgICAgIH0KKyAKKyAgICAgcmV0dXJuIG1XaW5kb3dE ZWNvcmF0aW9uOworQEAgLTEwMjMsNiArMTA0NCwxMyBAQCB2b2lkIFFXYXlsYW5kV2luZG93Ojpo YW5kbGVTY3JlZW5zQ2hhbmdlZCgpCisgCisgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6Omhh bmRsZVdpbmRvd1NjcmVlbkNoYW5nZWQod2luZG93KCksIG5ld1NjcmVlbi0+UVBsYXRmb3JtU2Ny ZWVuOjpzY3JlZW4oKSk7CisgICAgIG1MYXN0UmVwb3J0ZWRTY3JlZW4gPSBuZXdTY3JlZW47Cisr ICAgIGlmIChmaXhlZFRvcGxldmVsUG9zaXRpb25zICYmICFRUGxhdGZvcm1XaW5kb3c6OnBhcmVu dCgpICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlBvcHVwCisrICAgICAgICAmJiB3aW5kb3co KS0+dHlwZSgpICE9IFF0OjpUb29sVGlwCisrICAgICAgICAmJiBnZW9tZXRyeSgpLnRvcExlZnQo KSAhPSBuZXdTY3JlZW4tPmdlb21ldHJ5KCkudG9wTGVmdCgpKSB7CisrICAgICAgICBhdXRvIGdl b21ldHJ5ID0gdGhpcy0+Z2VvbWV0cnkoKTsKKysgICAgICAgIGdlb21ldHJ5Lm1vdmVUbyhuZXdT Y3JlZW4tPmdlb21ldHJ5KCkudG9wTGVmdCgpKTsKKysgICAgICAgIHNldEdlb21ldHJ5KGdlb21l dHJ5KTsKKysgICAgfQorIAorICAgICBpbnQgc2NhbGUgPSBuZXdTY3JlZW4tPmlzUGxhY2Vob2xk ZXIoKSA/IDEgOiBzdGF0aWNfY2FzdDxRV2F5bGFuZFNjcmVlbiAqPihuZXdTY3JlZW4pLT5zY2Fs ZSgpOworICAgICBpZiAoc2NhbGUgIT0gbVNjYWxlKSB7CitAQCAtMTA5NCwxMCArMTEyMiwxOCBA QCBib29sIFFXYXlsYW5kV2luZG93OjpzZXRNb3VzZUdyYWJFbmFibGVkKGJvb2wgZ3JhYikKKyAg ICAgcmV0dXJuIHRydWU7CisgfQorIAorK1F0OjpXaW5kb3dTdGF0ZXMgUVdheWxhbmRXaW5kb3c6 OndpbmRvd1N0YXRlcygpIGNvbnN0CisreworKyAgICByZXR1cm4gbUxhc3RSZXBvcnRlZFdpbmRv d1N0YXRlczsKKyt9CisrCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlV2luZG93U3RhdGVz Q2hhbmdlZChRdDo6V2luZG93U3RhdGVzIHN0YXRlcykKKyB7CisgICAgIGNyZWF0ZURlY29yYXRp b24oKTsKKy0gICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93U3RhdGVDaGFu Z2VkKHdpbmRvdygpLCBzdGF0ZXMsIG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXMpOworKyAgICBR dDo6V2luZG93U3RhdGVzIHN0YXRlc1dpdGhvdXRBY3RpdmUgPSBzdGF0ZXMgJiB+UXQ6OldpbmRv d0FjdGl2ZTsKKysgICAgUXQ6OldpbmRvd1N0YXRlcyBsYXN0U3RhdGVzV2l0aG91dEFjdGl2ZSA9 IG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXMgJiB+UXQ6OldpbmRvd0FjdGl2ZTsKKysgICAgUVdp bmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93U3RhdGVDaGFuZ2VkKHdpbmRvdygpLCBz dGF0ZXNXaXRob3V0QWN0aXZlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGFzdFN0YXRlc1dpdGhvdXRBY3RpdmUpOworICAgICBtTGFzdFJl cG9ydGVkV2luZG93U3RhdGVzID0gc3RhdGVzOworIH0KKyAKK0BAIC0xMTM5LDE5ICsxMTc1LDI0 IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQgKmV2ZW50KQor ICAgICBpZiAoZXZlbnQtPnRpbWVySWQoKSAhPSBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxU aW1lcklkKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBib29sIGNhbGxiYWNrVGltZXJFeHBp cmVkID0gbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaGFzRXhwaXJlZChtRnJhbWVDYWxsYmFj a1RpbWVvdXQpOworLSAgICBpZiAoIW1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQo KSB8fCBjYWxsYmFja1RpbWVyRXhwaXJlZCApIHsKKy0gICAgICAgIGtpbGxUaW1lcihtRnJhbWVD YWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkKTsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrQ2hl Y2tJbnRlcnZhbFRpbWVySWQgPSAtMTsKKy0gICAgfQorLSAgICBpZiAobUZyYW1lQ2FsbGJhY2tF bGFwc2VkVGltZXIuaXNWYWxpZCgpICYmIGNhbGxiYWNrVGltZXJFeHBpcmVkKSB7CistICAgICAg ICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisrICAgIHsKKysgICAg ICAgIFFNdXRleExvY2tlciBsb2NrKCZtRnJhbWVTeW5jTXV0ZXgpOworIAorLSAgICAgICAgcUNE ZWJ1ZyhsY1dheWxhbmRCYWNraW5nc3RvcmUpIDw8ICJEaWRuJ3QgcmVjZWl2ZSBmcmFtZSBjYWxs YmFjayBpbiB0aW1lLCB3aW5kb3cgc2hvdWxkIG5vdyBiZSBpbmV4cG9zZWQiOworLSAgICAgICAg bUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IHRydWU7CistICAgICAgICBtV2FpdGluZ0ZvclVwZGF0 ZSA9IGZhbHNlOworLSAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KCkpOworKyAgICAgICAg Ym9vbCBjYWxsYmFja1RpbWVyRXhwaXJlZCA9IG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmhh c0V4cGlyZWQobUZyYW1lQ2FsbGJhY2tUaW1lb3V0KTsKKysgICAgICAgIGlmICghbUZyYW1lQ2Fs bGJhY2tFbGFwc2VkVGltZXIuaXNWYWxpZCgpIHx8IGNhbGxiYWNrVGltZXJFeHBpcmVkICkgewor KyAgICAgICAgICAgIGtpbGxUaW1lcihtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklk KTsKKysgICAgICAgICAgICBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7 CisrICAgICAgICB9CisrICAgICAgICBpZiAoIW1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlz VmFsaWQoKSB8fCAhY2FsbGJhY2tUaW1lckV4cGlyZWQpIHsKKysgICAgICAgICAgICByZXR1cm47 CisrICAgICAgICB9CisrICAgICAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlk YXRlKCk7CisgICAgIH0KKysKKysgICAgcUNEZWJ1ZyhsY1dheWxhbmRCYWNraW5nc3RvcmUpIDw8 ICJEaWRuJ3QgcmVjZWl2ZSBmcmFtZSBjYWxsYmFjayBpbiB0aW1lLCB3aW5kb3cgc2hvdWxkIG5v dyBiZSBpbmV4cG9zZWQiOworKyAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gdHJ1ZTsKKysg ICAgbVdhaXRpbmdGb3JVcGRhdGUgPSBmYWxzZTsKKysgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0 KCkpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0VXBkYXRlKCkKK0BAIC0x MTYwLDggKzEyMDEsMTEgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgpCisg ICAgIFFfQVNTRVJUKGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkpOyAvLyBzaG91bGQgYmUgc2V0 IGJ5IFFQQQorIAorICAgICAvLyBJZiB3ZSBoYXZlIGEgZnJhbWUgY2FsbGJhY2sgYWxsIGlzIGdv b2QgYW5kIHdpbGwgYmUgdGFrZW4gY2FyZSBvZiB0aGVyZQorLSAgICBpZiAobVdhaXRpbmdGb3JG cmFtZUNhbGxiYWNrKQorLSAgICAgICAgcmV0dXJuOworKyAgICB7CisrICAgICAgICBRTXV0ZXhM b2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICAgICAgaWYgKG1XYWl0aW5nRm9y RnJhbWVDYWxsYmFjaykKKysgICAgICAgICAgICByZXR1cm47CisrICAgIH0KKyAKKyAgICAgLy8g SWYgd2UndmUgYWxyZWFkeSBjYWxsZWQgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKSwgYnV0IGhhdmVu J3Qgc2VlbiBhbnkgYXR0YWNoK2NvbW1pdC9zd2FwIHlldAorICAgICAvLyBUaGlzIGlzIGEgc29t ZXdoYXQgcmVkdW5kYW50IGJlaGF2aW9yIGFuZCBtaWdodCBpbmRpY2F0ZSBhIGJ1ZyBpbiB0aGUg Y2FsbGluZyBjb2RlLCBzbyBsb2cKK0BAIC0xMTc0LDcgKzEyMTgsMTIgQEAgdm9pZCBRV2F5bGFu ZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgpCisgICAgIC8vIHNvIHVzZSBpbnZva2VNZXRob2QgdG8g ZGVsYXkgdGhlIGRlbGl2ZXJ5IGEgYml0LgorICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9k KHRoaXMsIFt0aGlzXSB7CisgICAgICAgICAvLyBUaGluZ3MgbWlnaHQgaGF2ZSBjaGFuZ2VkIGlu IHRoZSBtZWFudGltZQorLSAgICAgICAgaWYgKGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkgJiYg IW1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKysgICAgICAgIHsKKysgICAgICAgICAgICBRTXV0 ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICAgICAgICAgIGlmIChtV2Fp dGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAg IH0KKysgICAgICAgIGlmIChoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKQorICAgICAgICAgICAg IGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCk7CisgICAgIH0sIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsK KyB9CitAQCAtMTE4NSwxOSArMTIzNCwxOCBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0 VXBkYXRlKCkKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVVcGRhdGUoKQorIHsKKyAgICAg cUNEZWJ1ZyhsY1dheWxhbmRCYWNraW5nc3RvcmUpIDw8ICJoYW5kbGVVcGRhdGUiIDw8IFFUaHJl YWQ6OmN1cnJlbnRUaHJlYWQoKTsKKysKKyAgICAgLy8gVE9ETzogU2hvdWxkIHN5bmMgc3Vic3Vy ZmFjZXMgYXZvaWQgcmVxdWVzdGluZyBmcmFtZSBjYWxsYmFja3M/CisgICAgIFFSZWFkTG9ja2Vy IGxvY2soJm1TdXJmYWNlTG9jayk7CisgICAgIGlmICghbVN1cmZhY2UpCisgICAgICAgICByZXR1 cm47CisgCistICAgIGlmIChtRnJhbWVDYWxsYmFjaykgeworLSAgICAgICAgd2xfY2FsbGJhY2tf ZGVzdHJveShtRnJhbWVDYWxsYmFjayk7CistICAgICAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxw dHI7CistICAgIH0KKysgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsK KysgICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKysgICAgICAgIHJldHVybjsKKyAK Ky0gICAgUU11dGV4TG9ja2VyIGxvY2tlcihtRnJhbWVRdWV1ZS5tdXRleCk7CisgICAgIHN0cnVj dCA6OndsX3N1cmZhY2UgKndyYXBwZWRTdXJmYWNlID0gcmVpbnRlcnByZXRfY2FzdDxzdHJ1Y3Qg Ojp3bF9zdXJmYWNlICo+KHdsX3Byb3h5X2NyZWF0ZV93cmFwcGVyKG1TdXJmYWNlLT5vYmplY3Qo KSkpOworLSAgICB3bF9wcm94eV9zZXRfcXVldWUocmVpbnRlcnByZXRfY2FzdDx3bF9wcm94eSAq Pih3cmFwcGVkU3VyZmFjZSksIG1GcmFtZVF1ZXVlLnF1ZXVlKTsKKysgICAgd2xfcHJveHlfc2V0 X3F1ZXVlKHJlaW50ZXJwcmV0X2Nhc3Q8d2xfcHJveHkgKj4od3JhcHBlZFN1cmZhY2UpLCBtRGlz cGxheS0+ZnJhbWVFdmVudFF1ZXVlKCkpOworICAgICBtRnJhbWVDYWxsYmFjayA9IHdsX3N1cmZh Y2VfZnJhbWUod3JhcHBlZFN1cmZhY2UpOworICAgICB3bF9wcm94eV93cmFwcGVyX2Rlc3Ryb3ko d3JhcHBlZFN1cmZhY2UpOworICAgICB3bF9jYWxsYmFja19hZGRfbGlzdGVuZXIobUZyYW1lQ2Fs bGJhY2ssICZRV2F5bGFuZFdpbmRvdzo6Y2FsbGJhY2tMaXN0ZW5lciwgdGhpcyk7CitAQCAtMTIw Nyw2ICsxMjU1LDggQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlVXBkYXRlKCkKKyAgICAg Ly8gU3RhcnQgYSB0aW1lciBmb3IgaGFuZGxpbmcgdGhlIGNhc2Ugd2hlbiB0aGUgY29tcG9zaXRv ciBzdG9wcyBzZW5kaW5nIGZyYW1lIGNhbGxiYWNrcy4KKyAgICAgaWYgKG1GcmFtZUNhbGxiYWNr VGltZW91dCA+IDApIHsKKyAgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywg W3RoaXNdIHsKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0 ZXgpOworKworICAgICAgICAgICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spIHsKKyAg ICAgICAgICAgICAgICAgaWYgKG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQgPCAw KQorICAgICAgICAgICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJ ZCA9IHN0YXJ0VGltZXIobUZyYW1lQ2FsbGJhY2tUaW1lb3V0KTsKK0BAIC0xMjY3LDYgKzEzMTcs MjAgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0T3BhcXVlQXJlYShjb25zdCBRUmVnaW9uICZv cGFxdWVBcmVhKQorICAgICB3bF9yZWdpb25fZGVzdHJveShyZWdpb24pOworIH0KKyAKKyt2b2lk IFFXYXlsYW5kV2luZG93OjphZGRDaGlsZFBvcHVwKFFXYXlsYW5kV2luZG93ICpzdXJmYWNlKSB7 CisrICAgIG1DaGlsZFBvcHVwcy5hcHBlbmQoc3VyZmFjZSk7CisrfQorKworK3ZvaWQgUVdheWxh bmRXaW5kb3c6OnJlbW92ZUNoaWxkUG9wdXAoUVdheWxhbmRXaW5kb3cgKnN1cmZhY2UpIHsKKysg ICAgbUNoaWxkUG9wdXBzLnJlbW92ZUFsbChzdXJmYWNlKTsKKyt9CisrCisrdm9pZCBRV2F5bGFu ZFdpbmRvdzo6Y2xvc2VDaGlsZFBvcHVwcygpIHsKKysgICAgd2hpbGUgKCFtQ2hpbGRQb3B1cHMu aXNFbXB0eSgpKSB7CisrICAgICAgICBhdXRvIHBvcHVwID0gbUNoaWxkUG9wdXBzLnRha2VMYXN0 KCk7CisrICAgICAgICBwb3B1cC0+cmVzZXQoKTsKKysgICAgfQorK30KKyB9CisgCisgUVRfRU5E X05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2lu ZG93X3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3AuaAoraW5kZXgg MDEzMzdjZmYuLjJmMjE5ZDhjIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmR3aW5kb3dfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRv d19wLmgKK0BAIC05OCw2ICs5OCw5IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRXaW5kb3coUVdp bmRvdyAqd2luZG93LCBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpOworICAgICB+UVdheWxhbmRX aW5kb3coKSBvdmVycmlkZTsKKyAKKysgICAgLy8gS2VlcCBUb3BsZXZlbHMgcG9zaXRpb24gb24g dGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGVpciBzY3JlZW4KKysgICAgc3RhdGljIGlubGluZSBi b29sIGZpeGVkVG9wbGV2ZWxQb3NpdGlvbnMgPSB0cnVlOworKworICAgICB2aXJ0dWFsIFdpbmRv d1R5cGUgd2luZG93VHlwZSgpIGNvbnN0ID0gMDsKKyAgICAgdmlydHVhbCB2b2lkIGVuc3VyZVNp emUoKTsKKyAgICAgV0lkIHdpbklkKCkgY29uc3Qgb3ZlcnJpZGU7CitAQCAtMTQ4LDYgKzE1MSw3 IEBAIHB1YmxpYzoKKyAgICAgdm9pZCBzZXRXaW5kb3dTdGF0ZShRdDo6V2luZG93U3RhdGVzIHN0 YXRlcykgb3ZlcnJpZGU7CisgICAgIHZvaWQgc2V0V2luZG93RmxhZ3MoUXQ6OldpbmRvd0ZsYWdz IGZsYWdzKSBvdmVycmlkZTsKKyAgICAgdm9pZCBoYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKFF0 OjpXaW5kb3dTdGF0ZXMgc3RhdGVzKTsKKysgICAgUXQ6OldpbmRvd1N0YXRlcyB3aW5kb3dTdGF0 ZXMoKSBjb25zdDsKKyAKKyAgICAgdm9pZCByYWlzZSgpIG92ZXJyaWRlOworICAgICB2b2lkIGxv d2VyKCkgb3ZlcnJpZGU7CitAQCAtMjA2LDYgKzIxMCwxMCBAQCBwdWJsaWM6CisgICAgIHZvaWQg aGFuZGxlVXBkYXRlKCk7CisgICAgIHZvaWQgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKSBvdmVycmlk ZTsKKyAKKysgICAgdm9pZCBhZGRDaGlsZFBvcHVwKFFXYXlsYW5kV2luZG93KiBjaGlsZCk7Cisr ICAgIHZvaWQgcmVtb3ZlQ2hpbGRQb3B1cChRV2F5bGFuZFdpbmRvdyogY2hpbGQpOworKyAgICB2 b2lkIGNsb3NlQ2hpbGRQb3B1cHMoKTsKKysKKyBwdWJsaWMgc2xvdHM6CisgICAgIHZvaWQgYXBw bHlDb25maWd1cmUoKTsKKyAKK0BAIC0yMTUsNyArMjIzLDExIEBAIHNpZ25hbHM6CisgCisgcHJv dGVjdGVkOgorICAgICBRV2F5bGFuZERpc3BsYXkgKm1EaXNwbGF5ID0gbnVsbHB0cjsKKysKKysg ICAgLy8gbVN1cmZhY2UgY2FuIGJlIHdyaXR0ZW4gYnkgdGhlIG1haW4gdGhyZWFkLiBPdGhlciB0 aHJlYWRzIHNob3VsZCBjbGFpbSBhIHJlYWQgbG9jayBmb3IgYWNjZXNzCisrICAgIG11dGFibGUg UVJlYWRXcml0ZUxvY2sgbVN1cmZhY2VMb2NrOworICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFu ZFN1cmZhY2U+IG1TdXJmYWNlOworKworICAgICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqbVNoZWxs U3VyZmFjZSA9IG51bGxwdHI7CisgICAgIFFXYXlsYW5kU3ViU3VyZmFjZSAqbVN1YlN1cmZhY2VX aW5kb3cgPSBudWxscHRyOworICAgICBRVmVjdG9yPFFXYXlsYW5kU3ViU3VyZmFjZSAqPiBtQ2hp bGRyZW47CitAQCAtMjI1LDEzICsyMzcsMTQgQEAgcHJvdGVjdGVkOgorICAgICBRdDo6TW91c2VC dXR0b25zIG1Nb3VzZVByZXNzZWRJbkNvbnRlbnRBcmVhID0gUXQ6Ok5vQnV0dG9uOworIAorICAg ICBXSWQgbVdpbmRvd0lkOworLSAgICBib29sIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZh bHNlOworICAgICBib29sIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsgLy8gV2hldGhl ciB0aGUgZnJhbWUgY2FsbGJhY2sgaGFzIHRpbWVkIG91dAorLSAgICBib29sIG1XYWl0aW5nRm9y VXBkYXRlRGVsaXZlcnkgPSBmYWxzZTsKKyAgICAgaW50IG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRl cnZhbFRpbWVySWQgPSAtMTsKKy0gICAgUUVsYXBzZWRUaW1lciBtRnJhbWVDYWxsYmFja0VsYXBz ZWRUaW1lcjsKKy0gICAgc3RydWN0IDo6d2xfY2FsbGJhY2sgKm1GcmFtZUNhbGxiYWNrID0gbnVs bHB0cjsKKy0gICAgUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlIG1GcmFtZVF1ZXVlOworKyAg ICBRQXRvbWljSW50IG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSBmYWxzZTsKKysKKysgICAg Ym9vbCBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsgLy8gUHJvdGVjdGVkIGJ5IG1G cmFtZVN5bmNNdXRleAorKyAgICBRRWxhcHNlZFRpbWVyIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRp bWVyOyAvLyBQcm90ZWN0ZWQgYnkgbUZyYW1lU3luY011dGV4CisrICAgIHN0cnVjdCA6OndsX2Nh bGxiYWNrICptRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7IC8vIFByb3RlY3RlZCBieSBtRnJhbWVT eW5jTXV0ZXgKKysgICAgUU11dGV4IG1GcmFtZVN5bmNNdXRleDsKKyAgICAgUVdhaXRDb25kaXRp b24gbUZyYW1lU3luY1dhaXQ7CisgCisgICAgIC8vIFRydWUgd2hlbiB3ZSBoYXZlIGNhbGxlZCBk ZWxpdmVyUmVxdWVzdFVwZGF0ZSwgYnV0IHRoZSBjbGllbnQgaGFzIG5vdCB5ZXQgYXR0YWNoZWQg YSBuZXcgYnVmZmVyCitAQCAtMjYxLDYgKzI3NCw4IEBAIHByb3RlY3RlZDoKKyAgICAgUVdheWxh bmRCdWZmZXIgKm1RdWV1ZWRCdWZmZXIgPSBudWxscHRyOworICAgICBRUmVnaW9uIG1RdWV1ZWRC dWZmZXJEYW1hZ2U7CisgCisrICAgIFFMaXN0PFFQb2ludGVyPFFXYXlsYW5kV2luZG93Pj4gbUNo aWxkUG9wdXBzOworKworIHByaXZhdGU6CisgICAgIHZvaWQgc2V0R2VvbWV0cnlfaGVscGVyKGNv bnN0IFFSZWN0ICZyZWN0KTsKKyAgICAgdm9pZCBpbml0V2luZG93KCk7CitAQCAtMjgzLDEyICsy OTgsMTAgQEAgcHJpdmF0ZToKKyAgICAgUVJlY3QgbUxhc3RFeHBvc2VHZW9tZXRyeTsKKyAKKyAg ICAgc3RhdGljIGNvbnN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIGNhbGxiYWNrTGlzdGVuZXI7Cist ICAgIHZvaWQgaGFuZGxlRnJhbWVDYWxsYmFjaygpOworKyAgICB2b2lkIGhhbmRsZUZyYW1lQ2Fs bGJhY2soc3RydWN0IDo6d2xfY2FsbGJhY2sqIGNhbGxiYWNrKTsKKyAKKyAgICAgc3RhdGljIFFX YXlsYW5kV2luZG93ICptTW91c2VHcmFiOworIAorLSAgICBtdXRhYmxlIFFSZWFkV3JpdGVMb2Nr IG1TdXJmYWNlTG9jazsKKy0KKyAgICAgZnJpZW5kIGNsYXNzIFFXYXlsYW5kU3ViU3VyZmFjZTsK KyB9OworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50ZWdyYXRp b24vcXdheWxhbmRzaGVsbGludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3No ZWxsaW50ZWdyYXRpb24vcXdheWxhbmRzaGVsbGludGVncmF0aW9uX3AuaAoraW5kZXggY2NhZDAw NDguLjRjYzliM2I4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRl Z3JhdGlvbi9xd2F5bGFuZHNoZWxsaW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK0BA IC03MywxMSArNzMsMTAgQEAgcHVibGljOgorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgIH0K KyAgICAgdmlydHVhbCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNlKFFX YXlsYW5kV2luZG93ICp3aW5kb3cpID0gMDsKKysgICAgLy8ga2VwdCBmb3IgYmluYXJ5IGNvbXBh dCB3aXRoIGxheWVyLXNoZWxsLXF0CisgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlib2FyZEZv Y3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRG b2N1cykgeworLSAgICAgICAgaWYgKG5ld0ZvY3VzKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+ aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsKKy0gICAgICAgIGlmIChvbGRGb2N1cykK Ky0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG9sZEZvY3Vz KTsKKysgICAgICAgIFFfVU5VU0VEKG5ld0ZvY3VzKTsKKysgICAgICAgIFFfVU5VU0VEKG9sZEZv Y3VzKTsKKyAgICAgfQorICAgICB2aXJ0dWFsIHZvaWQgKm5hdGl2ZVJlc291cmNlRm9yV2luZG93 KGNvbnN0IFFCeXRlQXJyYXkgJnJlc291cmNlLCBRV2luZG93ICp3aW5kb3cpIHsKKyAgICAgICAg IFFfVU5VU0VEKHJlc291cmNlKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NvbXBvc2l0 b3IvY29uZmlndXJlLmpzb24gYi9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpz b24KK2luZGV4IGJjZmQ1MjE1Li5kYTk1ZDA3YiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv Y29tcG9zaXRvci9jb25maWd1cmUuanNvbgorKysrIGIvcXR3YXlsYW5kL3NyYy9jb21wb3NpdG9y L2NvbmZpZ3VyZS5qc29uCitAQCAtNyw2ICs3LDMxIEBACisgICAgICJ0ZXN0RGlyIjogIi4uLy4u L2NvbmZpZy50ZXN0cyIsCisgCisgICAgICJsaWJyYXJpZXMiOiB7CisrICAgICAgICAid2F5bGFu ZC1jbGllbnQiOiB7CisrICAgICAgICAgICAgImxhYmVsIjogIldheWxhbmQgY2xpZW50IGxpYnJh cnkiLAorKyAgICAgICAgICAgICJoZWFkZXJzIjogIndheWxhbmQtdmVyc2lvbi5oIiwKKysgICAg ICAgICAgICAidGVzdCI6IHsKKysgICAgICAgICAgICAgICAgIm1haW4iOiBbCisrICAgICAgICAg ICAgICAgICAgICAiI2lmIFdBWUxBTkRfVkVSU0lPTl9NQUpPUiA8IDEiLAorKyAgICAgICAgICAg ICAgICAgICAgIiMgZXJyb3IgV2F5bGFuZCAxLjguMCBvciBoaWdoZXIgcmVxdWlyZWQiLAorKyAg ICAgICAgICAgICAgICAgICAgIiNlbmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiI2lmIFdB WUxBTkRfVkVSU0lPTl9NQUpPUiA9PSAxIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGlmIFdB WUxBTkRfVkVSU0lPTl9NSU5PUiA8IDgiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgIGVycm9y IFdheWxhbmQgMS44LjAgb3IgaGlnaGVyIHJlcXVpcmVkIiwKKysgICAgICAgICAgICAgICAgICAg ICIjIGVuZGlmIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGlmIFdBWUxBTkRfVkVSU0lPTl9N SU5PUiA9PSA4IiwKKysgICAgICAgICAgICAgICAgICAgICIjICBpZiBXQVlMQU5EX1ZFUlNJT05f TUlDUk8gPCAwIiwKKysgICAgICAgICAgICAgICAgICAgICIjICAgZXJyb3IgV2F5bGFuZCAxLjgu MCBvciBoaWdoZXIgcmVxdWlyZWQiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgIGVuZGlmIiwK KysgICAgICAgICAgICAgICAgICAgICIjIGVuZGlmIiwKKysgICAgICAgICAgICAgICAgICAgICIj ZW5kaWYiCisrICAgICAgICAgICAgICAgICBdCisrICAgICAgICAgICAgfSwKKysgICAgICAgICAg ICAic291cmNlcyI6IFsKKysgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJwa2dDb25maWciLCAi YXJncyI6ICJ3YXlsYW5kLWNsaWVudCIgfSwKKysgICAgICAgICAgICAgICAgIi1sd2F5bGFuZC1j bGllbnQiCisrICAgICAgICAgICAgXQorKyAgICAgICAgfSwKKyAgICAgICAgICJ3YXlsYW5kLXNl cnZlciI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAid2F5bGFuZC1zZXJ2ZXIiLAorICAgICAg ICAgICAgICJoZWFkZXJzIjogIndheWxhbmQtdmVyc2lvbi5oIiwKK0BAIC0xNTEsOCArMTc2LDcg QEAKKyAgICAgICAgICAgICAgICAgICAgICIjZW5kaWYiCisgICAgICAgICAgICAgICAgIF0KKyAg ICAgICAgICAgICB9LAorLSAgICAgICAgICAgICJsaWJzIjogIi1sZHJtIiwKKy0gICAgICAgICAg ICAidXNlIjogImVnbCIKKysgICAgICAgICAgICAidXNlIjogImRybSBlZ2wiCisgICAgICAgICB9 LAorICAgICAgICAgImRtYWJ1Zi1jbGllbnQtYnVmZmVyIjogeworICAgICAgICAgICAgICJsYWJl bCI6ICJMaW51eCBDbGllbnQgZG1hLWJ1ZiBCdWZmZXIgU2hhcmluZyIsCitAQCAtMTc2LDggKzIw MCw3IEBACisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIDA7IgorICAgICAgICAgICAgICAg ICBdCisgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAibGlicyI6ICItbGRybSIsCistICAg ICAgICAgICAgInVzZSI6ICJlZ2wiCisrICAgICAgICAgICAgInVzZSI6ICJkcm0gZWdsIgorICAg ICAgICAgfSwKKyAgICAgICAgICJ2dWxrYW4tc2VydmVyLWJ1ZmZlciI6IHsKKyAgICAgICAgICAg ICAibGFiZWwiOiAiVnVsa2FuIEJ1ZmZlciBTaGFyaW5nIiwKK0BAIC0xOTUsNyArMjE4LDggQEAK KyAgICAgICAgICAgICAgICAgICAgICJleHBvcnRBbGxvY0luZm8uaGFuZGxlVHlwZXMgPSBWS19F WFRFUk5BTF9NRU1PUllfSEFORExFX1RZUEVfT1BBUVVFX0ZEX0JJVF9LSFI7IiwKKyAgICAgICAg ICAgICAgICAgICAgICJyZXR1cm4gMDsiCisgICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAg ICB9CisrICAgICAgICAgICAgfSwKKysgICAgICAgICAgICAidXNlIjogIndheWxhbmQtY2xpZW50 IgorICAgICAgICAgfQorICAgICB9LAorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvaGFy ZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuY3Bw IGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9x d2F5bGFuZGVnbHdpbmRvdy5jcHAKK2luZGV4IDc4ODlmNTc1Li42NDE0MDY3MiAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wv cXdheWxhbmRlZ2x3aW5kb3cuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdy YXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcAorQEAgLTQwLDYg KzQwLDcgQEAKKyAjaW5jbHVkZSAicXdheWxhbmRlZ2x3aW5kb3cuaCIKKyAKKyAjaW5jbHVkZSA8 UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvcXdheWxhbmRzY3JlZW5fcC5oPgorKyNpbmNsdWRlIDxR dFdheWxhbmRDbGllbnQvcHJpdmF0ZS9xd2F5bGFuZHN1cmZhY2VfcC5oPgorICNpbmNsdWRlICJx d2F5bGFuZGdsY29udGV4dC5oIgorIAorICNpbmNsdWRlIDxRdEVnbFN1cHBvcnQvcHJpdmF0ZS9x ZWdsY29udmVuaWVuY2VfcC5oPgorQEAgLTEyNCw2ICsxMjUsNyBAQCB2b2lkIFFXYXlsYW5kRWds V2luZG93Ojp1cGRhdGVTdXJmYWNlKGJvb2wgY3JlYXRlKQorICAgICAgICAgfQorICAgICAgICAg bU9mZnNldCA9IFFQb2ludCgpOworICAgICB9IGVsc2UgeworKyAgICAgICAgUVJlYWRMb2NrZXIg bG9ja2VyKCZtU3VyZmFjZUxvY2spOworICAgICAgICAgaWYgKG1fd2F5bGFuZEVnbFdpbmRvdykg eworICAgICAgICAgICAgIGludCBjdXJyZW50X3dpZHRoLCBjdXJyZW50X2hlaWdodDsKKyAgICAg ICAgICAgICBzdGF0aWMgYm9vbCBkaXNhYmxlUmVzaXplQ2hlY2sgPSBxZ2V0ZW52KCJRVF9XQVlM QU5EX0RJU0FCTEVfUkVTSVpFQ0hFQ0siKS50b0ludCgpOworQEAgLTEzMSwxNCArMTMzLDE2IEBA IHZvaWQgUVdheWxhbmRFZ2xXaW5kb3c6OnVwZGF0ZVN1cmZhY2UoYm9vbCBjcmVhdGUpCisgICAg ICAgICAgICAgaWYgKCFkaXNhYmxlUmVzaXplQ2hlY2spIHsKKyAgICAgICAgICAgICAgICAgd2xf ZWdsX3dpbmRvd19nZXRfYXR0YWNoZWRfc2l6ZShtX3dheWxhbmRFZ2xXaW5kb3csICZjdXJyZW50 X3dpZHRoLCAmY3VycmVudF9oZWlnaHQpOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBp ZiAoZGlzYWJsZVJlc2l6ZUNoZWNrIHx8IChjdXJyZW50X3dpZHRoICE9IHNpemVXaXRoTWFyZ2lu cy53aWR0aCgpIHx8IGN1cnJlbnRfaGVpZ2h0ICE9IHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSkp IHsKKysgICAgICAgICAgICBpZiAoZGlzYWJsZVJlc2l6ZUNoZWNrIHx8IChjdXJyZW50X3dpZHRo ICE9IHNpemVXaXRoTWFyZ2lucy53aWR0aCgpIHx8IGN1cnJlbnRfaGVpZ2h0ICE9IHNpemVXaXRo TWFyZ2lucy5oZWlnaHQoKSkgfHwgbV9yZXF1ZXN0ZWRTaXplICE9IHNpemVXaXRoTWFyZ2lucykg eworICAgICAgICAgICAgICAgICB3bF9lZ2xfd2luZG93X3Jlc2l6ZShtX3dheWxhbmRFZ2xXaW5k b3csIHNpemVXaXRoTWFyZ2lucy53aWR0aCgpLCBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCksIG1P ZmZzZXQueCgpLCBtT2Zmc2V0LnkoKSk7CisrICAgICAgICAgICAgICAgIG1fcmVxdWVzdGVkU2l6 ZSA9IHNpemVXaXRoTWFyZ2luczsKKyAgICAgICAgICAgICAgICAgbU9mZnNldCA9IFFQb2ludCgp OworIAorICAgICAgICAgICAgICAgICBtX3Jlc2l6ZSA9IHRydWU7CisgICAgICAgICAgICAgfQor LSAgICAgICAgfSBlbHNlIGlmIChjcmVhdGUgJiYgd2xTdXJmYWNlKCkpIHsKKy0gICAgICAgICAg ICBtX3dheWxhbmRFZ2xXaW5kb3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZSh3bFN1cmZhY2UoKSwg c2l6ZVdpdGhNYXJnaW5zLndpZHRoKCksIHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSk7CisrICAg ICAgICB9IGVsc2UgaWYgKGNyZWF0ZSAmJiBtU3VyZmFjZSkgeworKyAgICAgICAgICAgIG1fd2F5 bGFuZEVnbFdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKG1TdXJmYWNlLT5vYmplY3QoKSwg c2l6ZVdpdGhNYXJnaW5zLndpZHRoKCksIHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSk7CisrICAg ICAgICAgICAgbV9yZXF1ZXN0ZWRTaXplID0gc2l6ZVdpdGhNYXJnaW5zOworICAgICAgICAgfQor IAorICAgICAgICAgaWYgKCFtX2VnbFN1cmZhY2UgJiYgbV93YXlsYW5kRWdsV2luZG93ICYmIGNy ZWF0ZSkgeworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9j bGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuaCBiL3F0d2F5bGFuZC9zcmMvaGFy ZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuaAor aW5kZXggNWIxZjRkNTYuLjAwNzlkZmVmIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9oYXJk d2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oCisr KysgYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWds L3F3YXlsYW5kZWdsd2luZG93LmgKK0BAIC04OCw2ICs4OCw3IEBAIHByaXZhdGU6CisgICAgIG11 dGFibGUgUU9wZW5HTEZyYW1lYnVmZmVyT2JqZWN0ICptX2NvbnRlbnRGQk8gPSBudWxscHRyOwor IAorICAgICBRU3VyZmFjZUZvcm1hdCBtX2Zvcm1hdDsKKysgICAgUVNpemUgbV9yZXF1ZXN0ZWRT aXplOworIH07CisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRl Z3JhdGlvbi9jb21wb3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5o IGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGludXgtZG1h YnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgKK2luZGV4IDU2YTcxMGMzLi5jNmE4YjZjNiAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jb21wb3NpdG9y L2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5oCisrKysgYi9xdHdheWxhbmQv c3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUt djEvbGludXhkbWFidWYuaAorQEAgLTQxLDYgKzQxLDggQEAKKyAjaW5jbHVkZSA8UXRDb3JlL1FU ZXh0U3RyZWFtPgorICNpbmNsdWRlIDxRdEd1aS9RT3BlbkdMVGV4dHVyZT4KKyAKKysjaW5jbHVk ZSA8YXJyYXk+CisrCisgI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyAjaW5jbHVkZSA8RUdML2VnbGV4 dC5oPgorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9ucy9i cmFkaWVudC9tYWluLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9ucy9icmFk aWVudC9tYWluLmNwcAoraW5kZXggZTc1ZmRhM2MuLmZhODg1MTQzIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwCisrKysgYi9x dHdheWxhbmQvc3JjL3BsdWdpbnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAKK0BAIC0x NjQsMTMgKzE2NCwxMCBAQCB2b2lkIFFXYXlsYW5kQnJhZGllbnREZWNvcmF0aW9uOjpwYWludChR UGFpbnREZXZpY2UgKmRldmljZSkKKyAgICAgLy8gV2luZG93IGljb24KKyAgICAgUUljb24gaWNv biA9IHdheWxhbmRXaW5kb3coKS0+d2luZG93SWNvbigpOworICAgICBpZiAoIWljb24uaXNOdWxs KCkpIHsKKy0gICAgICAgIFFQaXhtYXAgcGl4bWFwID0gaWNvbi5waXhtYXAoUVNpemUoMTI4LCAx MjgpKTsKKy0gICAgICAgIFFQaXhtYXAgc2NhbGVkID0gcGl4bWFwLnNjYWxlZCgyMiwgMjIsIFF0 OjpJZ25vcmVBc3BlY3RSYXRpbywgUXQ6OlNtb290aFRyYW5zZm9ybWF0aW9uKTsKKy0KKyAgICAg ICAgIFFSZWN0RiBpY29uUmVjdCgwLCAwLCAyMiwgMjIpOworLSAgICAgICAgcC5kcmF3UGl4bWFw KGljb25SZWN0LmFkanVzdGVkKG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lORywgNCwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5zKCkubGVmdCgp ICsgQlVUVE9OX1NQQUNJTkcsIDQpLAorLSAgICAgICAgICAgICAgICAgICAgIHNjYWxlZCwgaWNv blJlY3QpOworKyAgICAgICAgaWNvblJlY3QuYWRqdXN0KG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRU T05fU1BBQ0lORywgNCwKKysgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5zKCkubGVmdCgp ICsgQlVUVE9OX1NQQUNJTkcsIDQpLAorKyAgICAgICAgaWNvbi5wYWludCgmcCwgaWNvblJlY3Qu dG9SZWN0KCkpOworICAgICB9CisgCisgICAgIC8vIFdpbmRvdyB0aXRsZQorZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5 bGFuZHhkZ3BvcHVwdjUuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NS5jcHAKK2luZGV4IDg1ZDI1ZTNjLi42 MGJkZDQ5MSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3BwCisrKysgYi9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1 cHY1LmNwcAorQEAgLTQ3LDE4ICs0NywyMSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBuYW1l c3BhY2UgUXRXYXlsYW5kQ2xpZW50IHsKKyAKKy1RV2F5bGFuZFhkZ1BvcHVwVjU6OlFXYXlsYW5k WGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFuZFdpbmRvdyAq d2luZG93KQorK1FXYXlsYW5kWGRnUG9wdXBWNTo6UVdheWxhbmRYZGdQb3B1cFY1KHN0cnVjdCA6 OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93KiBwYXJlbnQsIFFXYXlsYW5kV2lu ZG93ICp3aW5kb3cpCisgICAgIDogUVdheWxhbmRTaGVsbFN1cmZhY2Uod2luZG93KQorICAgICAs IFF0V2F5bGFuZDo6eGRnX3BvcHVwX3Y1KHBvcHVwKQorKyAgICAsIG1fcGFyZW50KHBhcmVudCkK KyAgICAgLCBtX3dpbmRvdyh3aW5kb3cpCisgeworICAgICBpZiAod2luZG93LT5kaXNwbGF5KCkt PndpbmRvd0V4dGVuc2lvbigpKQorICAgICAgICAgbV9leHRlbmRlZFdpbmRvdyA9IG5ldyBRV2F5 bGFuZEV4dGVuZGVkU3VyZmFjZSh3aW5kb3cpOworKyAgICBtX3BhcmVudC0+YWRkQ2hpbGRQb3B1 cChtX3dpbmRvdyk7CisgfQorIAorIFFXYXlsYW5kWGRnUG9wdXBWNTo6flFXYXlsYW5kWGRnUG9w dXBWNSgpCisgeworICAgICB4ZGdfcG9wdXBfZGVzdHJveShvYmplY3QoKSk7CisrICAgIG1fcGFy ZW50LT5yZW1vdmVDaGlsZFBvcHVwKG1fd2luZG93KTsKKyAgICAgZGVsZXRlIG1fZXh0ZW5kZWRX aW5kb3c7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGlu dGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjVfcC5oIGIvcXR3YXlsYW5k L3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9w dXB2NV9wLmgKK2luZGV4IDc0OTRmNmE2Li5kODVmMTMwYiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3Bv cHVwdjVfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94 ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaAorQEAgLTcwLDcgKzcwLDcgQEAgY2xh c3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmRYZGdQb3B1cFY1IDogcHVibGljIFFX YXlsYW5kU2hlbGxTdXJmYWNlCisgeworICAgICBRX09CSkVDVAorIHB1YmxpYzoKKy0gICAgUVdh eWxhbmRYZGdQb3B1cFY1KHN0cnVjdCA6OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2lu ZG93ICp3aW5kb3cpOworKyAgICBRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVw X3Y1ICpwb3B1cCwgUVdheWxhbmRXaW5kb3cqIHBhcmVudCwgUVdheWxhbmRXaW5kb3cgKndpbmRv dyk7CisgICAgIH5RV2F5bGFuZFhkZ1BvcHVwVjUoKSBvdmVycmlkZTsKKyAKKyBwcm90ZWN0ZWQ6 CitAQCAtNzgsNiArNzgsNyBAQCBwcm90ZWN0ZWQ6CisgCisgcHJpdmF0ZToKKyAgICAgUVdheWxh bmRFeHRlbmRlZFN1cmZhY2UgKm1fZXh0ZW5kZWRXaW5kb3cgPSBudWxscHRyOworKyAgICBRV2F5 bGFuZFdpbmRvdyAqbV9wYXJlbnQgPSBudWxscHRyOworICAgICBRV2F5bGFuZFdpbmRvdyAqbV93 aW5kb3cgPSBudWxscHRyOworIH07CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NS5jcHAg Yi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdh eWxhbmR4ZGdzaGVsbHY1LmNwcAoraW5kZXggN2UyNDJjNGEuLmRlZjg0NTJhIDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3 YXlsYW5keGRnc2hlbGx2NS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGlu dGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwCitAQCAtODQsNyAr ODQsNyBAQCBRV2F5bGFuZFhkZ1BvcHVwVjUgKlFXYXlsYW5kWGRnU2hlbGxWNTo6Y3JlYXRlWGRn UG9wdXAoUVdheWxhbmRXaW5kb3cgKndpbmRvdywgUQorICAgICBpbnQgeCA9IHBvc2l0aW9uLngo KSArIHBhcmVudFdpbmRvdy0+ZnJhbWVNYXJnaW5zKCkubGVmdCgpOworICAgICBpbnQgeSA9IHBv c2l0aW9uLnkoKSArIHBhcmVudFdpbmRvdy0+ZnJhbWVNYXJnaW5zKCkudG9wKCk7CisgCistICAg IGF1dG8gcG9wdXAgPSBuZXcgUVdheWxhbmRYZGdQb3B1cFY1KGdldF94ZGdfcG9wdXAod2luZG93 LT53bFN1cmZhY2UoKSwgcGFyZW50U3VyZmFjZSwgc2VhdCwgbV9wb3B1cFNlcmlhbCwgeCwgeSks IHdpbmRvdyk7CisrICAgIGF1dG8gcG9wdXAgPSBuZXcgUVdheWxhbmRYZGdQb3B1cFY1KGdldF94 ZGdfcG9wdXAod2luZG93LT53bFN1cmZhY2UoKSwgcGFyZW50U3VyZmFjZSwgc2VhdCwgbV9wb3B1 cFNlcmlhbCwgeCwgeSksIHBhcmVudFdpbmRvdywgd2luZG93KTsKKyAgICAgbV9wb3B1cHMuYXBw ZW5kKHdpbmRvdyk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocG9wdXAsICZRV2F5bGFuZFhkZ1Bv cHVwVjU6OmRlc3Ryb3llZCwgW3RoaXMsIHdpbmRvd10oKXsKKyAgICAgICAgIG1fcG9wdXBzLnJl bW92ZU9uZSh3aW5kb3cpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbi5j cHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUv cXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb24uY3BwCitpbmRleCA0ZTI1OTQ5Zi4uY2ZjNjA5 MzkgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94 ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb24uY3BwCisrKysgYi9xdHdh eWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4 ZGdzaGVsbHY1aW50ZWdyYXRpb24uY3BwCitAQCAtODUsMTMgKzg1LDYgQEAgUVdheWxhbmRTaGVs bFN1cmZhY2UgKlFXYXlsYW5kWGRnU2hlbGxWNUludGVncmF0aW9uOjpjcmVhdGVTaGVsbFN1cmZh Y2UoUVdheWxhbmQKKyAgICAgcmV0dXJuIG1feGRnU2hlbGwtPmNyZWF0ZVhkZ1N1cmZhY2Uod2lu ZG93KTsKKyB9CisgCistdm9pZCBRV2F5bGFuZFhkZ1NoZWxsVjVJbnRlZ3JhdGlvbjo6aGFuZGxl S2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdp bmRvdyAqb2xkRm9jdXMpIHsKKy0gICAgaWYgKG5ld0ZvY3VzICYmIHFvYmplY3RfY2FzdDxRV2F5 bGFuZFhkZ1BvcHVwVjUgKj4obmV3Rm9jdXMtPnNoZWxsU3VyZmFjZSgpKSkKKy0gICAgICAgIG1f ZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsKKy0gICAgaWYgKG9sZEZv Y3VzICYmIHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1BvcHVwVjUgKj4ob2xkRm9jdXMtPnNoZWxs U3VyZmFjZSgpKSkKKy0gICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQo b2xkRm9jdXMpOworLX0KKy0KKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5 bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hl bGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb25f cC5oCitpbmRleCBjZTZiZGI5ZS4uYWVkODg2NzAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1 aW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3Jh dGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb25fcC5oCitAQCAt NjcsNyArNjcsNiBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kWGRnU2hlbGxWNUludGVncmF0aW9u KCkge30KKyAgICAgYm9vbCBpbml0aWFsaXplKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkgb3Zl cnJpZGU7CisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdh eWxhbmRXaW5kb3cgKndpbmRvdykgb3ZlcnJpZGU7CistICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRG b2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xk Rm9jdXMpIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXls YW5kWGRnU2hlbGxWNT4gbV94ZGdTaGVsbDsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2LmNw cCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9x d2F5bGFuZHhkZ3NoZWxsdjYuY3BwCitpbmRleCA4YzM3MTY2MS4uMTUxYzc4ZTMgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYv cXdheWxhbmR4ZGdzaGVsbHY2LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAKK0BAIC0xNzQs NiArMTc0LDcgQEAgUVdheWxhbmRYZGdTdXJmYWNlVjY6OlBvcHVwOjpQb3B1cChRV2F5bGFuZFhk Z1N1cmZhY2VWNiAqeGRnU3VyZmFjZSwgUVdheWxhbmRYZGcKKyAgICAgLCBtX3hkZ1N1cmZhY2Uo eGRnU3VyZmFjZSkKKyAgICAgLCBtX3BhcmVudChwYXJlbnQpCisgeworKyAgICBtX3BhcmVudC0+ d2luZG93KCktPmFkZENoaWxkUG9wdXAobV94ZGdTdXJmYWNlLT53aW5kb3coKSk7CisgfQorIAor IFFXYXlsYW5kWGRnU3VyZmFjZVY2OjpQb3B1cDo6flBvcHVwKCkKK0BAIC0xODEsNiArMTgyLDgg QEAgUVdheWxhbmRYZGdTdXJmYWNlVjY6OlBvcHVwOjp+UG9wdXAoKQorICAgICBpZiAoaXNJbml0 aWFsaXplZCgpKQorICAgICAgICAgZGVzdHJveSgpOworIAorKyAgICBtX3BhcmVudC0+d2luZG93 KCktPnJlbW92ZUNoaWxkUG9wdXAobV94ZGdTdXJmYWNlLT53aW5kb3coKSk7CisrCisgICAgIGlm IChtX2dyYWJiaW5nKSB7CisgICAgICAgICBhdXRvICpzaGVsbCA9IG1feGRnU3VyZmFjZS0+bV9z aGVsbDsKKyAgICAgICAgIFFfQVNTRVJUKHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVwID09 IHRoaXMpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAgYi9xdHdh eWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4 ZGdzaGVsbHY2aW50ZWdyYXRpb24uY3BwCitpbmRleCAwMzE2NDMxNi4uZThkYThiYTEgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwt djYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb24uY3BwCisrKysgYi9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2 aW50ZWdyYXRpb24uY3BwCitAQCAtNjgsMjAgKzY4LDYgQEAgUVdheWxhbmRTaGVsbFN1cmZhY2Ug KlFXYXlsYW5kWGRnU2hlbGxWNkludGVncmF0aW9uOjpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxh bmQKKyAgICAgcmV0dXJuIG1feGRnU2hlbGwtPmdldFhkZ1N1cmZhY2Uod2luZG93KTsKKyB9Cisg Cistdm9pZCBRV2F5bGFuZFhkZ1NoZWxsVjZJbnRlZ3JhdGlvbjo6aGFuZGxlS2V5Ym9hcmRGb2N1 c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9j dXMpCisteworLSAgICBpZiAobmV3Rm9jdXMpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2Ug PSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlVjYgKj4obmV3Rm9jdXMtPnNoZWxsU3Vy ZmFjZSgpKTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNlLT5oYW5kbGVz QWN0aXZlU3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2 YXRlZChuZXdGb2N1cyk7CistICAgIH0KKy0gICAgaWYgKG9sZEZvY3VzICYmIHFvYmplY3RfY2Fz dDxRV2F5bGFuZFhkZ1N1cmZhY2VWNiAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKSB7Cist ICAgICAgICBhdXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFj ZVY2ICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRnU3VyZmFj ZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9k aXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CistICAgIH0KKy19Cist CisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50 ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaAoraW5kZXggMjYxZjhj YmIuLmMxYmNkNWM2IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaAor KysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2 L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaAorQEAgLTY1LDcgKzY1LDYgQEAgcHVi bGljOgorICAgICBRV2F5bGFuZFhkZ1NoZWxsVjZJbnRlZ3JhdGlvbigpIHt9CisgICAgIGJvb2wg aW5pdGlhbGl6ZShRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAgICBRV2F5 bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2luZG93ICp3aW5k b3cpIG92ZXJyaWRlOworLSAgICB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXls YW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSBvdmVycmlkZTsK KyAKKyBwcml2YXRlOgorICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZFhkZ1NoZWxsVjY+IG1f eGRnU2hlbGw7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwCitpbmRl eCBmM2UzYzMzMC4uZmE2ZDU4MDggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAKKysrKyBiL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhk Z3NoZWxsLmNwcAorQEAgLTY3LDExICs2Nyw2IEBAIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2 ZWw6OlRvcGxldmVsKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSkKKyAKKyBRV2F5bGFu ZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjp+VG9wbGV2ZWwoKQorIHsKKy0gICAgaWYgKG1fYXBwbGll ZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSB7CistICAgICAgICBRV2F5bGFuZFdpbmRvdyAq d2luZG93ID0gbV94ZGdTdXJmYWNlLT53aW5kb3coKTsKKy0gICAgICAgIHdpbmRvdy0+ZGlzcGxh eSgpLT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZCh3aW5kb3cpOworLSAgICB9CistCisgICAgIC8v IFRoZSBwcm90b2NvbCBzcGVjIHJlcXVpcmVzIHRoYXQgdGhlIGRlY29yYXRpb24gb2JqZWN0IGlz IGRlbGV0ZWQgYmVmb3JlIHhkZ190b3BsZXZlbC4KKyAgICAgZGVsZXRlIG1fZGVjb3JhdGlvbjsK KyAgICAgbV9kZWNvcmF0aW9uID0gbnVsbHB0cjsKK0BAIC04NSwxNiArODAsMTUgQEAgdm9pZCBR V2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjphcHBseUNvbmZpZ3VyZSgpCisgICAgIGlmICgh KG1fYXBwbGllZC5zdGF0ZXMgJiAoUXQ6OldpbmRvd01heGltaXplZHxRdDo6V2luZG93RnVsbFNj cmVlbikpKQorICAgICAgICAgbV9ub3JtYWxTaXplID0gbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ d2luZG93RnJhbWVHZW9tZXRyeSgpLnNpemUoKTsKKyAKKy0gICAgaWYgKChtX3BlbmRpbmcuc3Rh dGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgJiYgIShtX2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRv d0FjdGl2ZSkpCisrICAgIGlmICgobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUp ICYmICEobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpCisrICAgICAgICAmJiAh bV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5pc0tleWJvYXJkQXZhaWxhYmxlKCkp CisgICAgICAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5kaXNwbGF5KCktPmhhbmRsZVdpbmRv d0FjdGl2YXRlZChtX3hkZ1N1cmZhY2UtPm1fd2luZG93KTsKKyAKKy0gICAgaWYgKCEobV9wZW5k aW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmIChtX2FwcGxpZWQuc3RhdGVzICYgUXQ6 OldpbmRvd0FjdGl2ZSkpCisrICAgIGlmICghKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93 QWN0aXZlKSAmJiAobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpCisrICAgICAg ICAmJiAhbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5pc0tleWJvYXJkQXZhaWxh YmxlKCkpCisgICAgICAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5kaXNwbGF5KCktPmhhbmRs ZVdpbmRvd0RlYWN0aXZhdGVkKG1feGRnU3VyZmFjZS0+bV93aW5kb3cpOworIAorLSAgICAvLyBU T0RPOiBub25lIG9mIHRoZSBvdGhlciBwbHVnaW5zIHNlbmQgV2luZG93QWN0aXZlIGVpdGhlciwg YnV0IGlzIGl0IG9uIHB1cnBvc2U/CistICAgIFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzV2l0aG91 dEFjdGl2ZSA9IG1fcGVuZGluZy5zdGF0ZXMgJiB+UXQ6OldpbmRvd0FjdGl2ZTsKKy0KKy0gICAg bV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+aGFuZGxlV2luZG93U3RhdGVzQ2hhbmdlZChzdGF0ZXNX aXRob3V0QWN0aXZlKTsKKysgICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+aGFuZGxlV2luZG93 U3RhdGVzQ2hhbmdlZChtX3BlbmRpbmcuc3RhdGVzKTsKKyAKKyAgICAgaWYgKG1fcGVuZGluZy5z aXplLmlzRW1wdHkoKSkgeworICAgICAgICAgLy8gQW4gZW1wdHkgc2l6ZSBpbiB0aGUgY29uZmln dXJlIG1lYW5zIGl0J3MgdXAgdG8gdGhlIGNsaWVudCB0byBjaG9vc2UgdGhlIHNpemUKK0BAIC0x MDUsOCArOTksNiBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6OmFwcGx5Q29u ZmlndXJlKCkKKyAgICAgICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPnJlc2l6ZUZyb21BcHBs eUNvbmZpZ3VyZShtX3BlbmRpbmcuc2l6ZSk7CisgICAgIH0KKyAKKy0gICAgbV94ZGdTdXJmYWNl LT5zZXRTaXplSGludHMoKTsKKy0KKyAgICAgbV9hcHBsaWVkID0gbV9wZW5kaW5nOworICAgICBx Q0RlYnVnKGxjUXBhV2F5bGFuZCkgPDwgIkFwcGxpZWQgcGVuZGluZyB4ZGdfdG9wbGV2ZWwgY29u ZmlndXJlIGV2ZW50OiIgPDwgbV9hcHBsaWVkLnNpemUgPDwgbV9hcHBsaWVkLnN0YXRlczsKKyB9 CitAQCAtMjAzLDEyICsxOTUsMTcgQEAgUXRXYXlsYW5kOjp4ZGdfdG9wbGV2ZWw6OnJlc2l6ZV9l ZGdlIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6OmNvbnZlcnRUb1Jlc2kKKyAgICAgICAg ICAgICAgICAgfCAoKGVkZ2VzICYgUXQ6OlJpZ2h0RWRnZSkgPyByZXNpemVfZWRnZV9yaWdodCA6 IDApKTsKKyB9CisgCistUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6UG9wdXAoUVdheWxhbmRY ZGdTdXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFhkZ1N1cmZhY2UgKnBhcmVudCwKKytRV2F5 bGFuZFhkZ1N1cmZhY2U6OlBvcHVwOjpQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZh Y2UsIFFXYXlsYW5kV2luZG93ICpwYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lciAqcG9zaXRpb25lcikKKy0gICAgOiB4ZGdf cG9wdXAoeGRnU3VyZmFjZS0+Z2V0X3BvcHVwKHBhcmVudC0+b2JqZWN0KCksIHBvc2l0aW9uZXIt Pm9iamVjdCgpKSkKKy0gICAgLCBtX3hkZ1N1cmZhY2UoeGRnU3VyZmFjZSkKKysgICAgOiBtX3hk Z1N1cmZhY2UoeGRnU3VyZmFjZSkKKysgICAgLCBtX3BhcmVudFhkZ1N1cmZhY2UocW9iamVjdF9j YXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihwYXJlbnQtPnNoZWxsU3VyZmFjZSgpKSkKKyAgICAg LCBtX3BhcmVudChwYXJlbnQpCisgeworKworKyAgICBpbml0KHhkZ1N1cmZhY2UtPmdldF9wb3B1 cChtX3BhcmVudFhkZ1N1cmZhY2UgPyBtX3BhcmVudFhkZ1N1cmZhY2UtPm9iamVjdCgpIDogbnVs bHB0ciwgcG9zaXRpb25lci0+b2JqZWN0KCkpKTsKKysgICAgaWYgKG1fcGFyZW50KSB7CisrICAg ICAgICBtX3BhcmVudC0+YWRkQ2hpbGRQb3B1cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsKKysg ICAgfQorIH0KKyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2U6OlBvcHVwOjp+UG9wdXAoKQorQEAgLTIx NiwxMCArMjEzLDI0IEBAIFFXYXlsYW5kWGRnU3VyZmFjZTo6UG9wdXA6On5Qb3B1cCgpCisgICAg IGlmIChpc0luaXRpYWxpemVkKCkpCisgICAgICAgICBkZXN0cm95KCk7CisgCisrICAgIGlmICht X3BhcmVudCkgeworKyAgICAgICAgbV9wYXJlbnQtPnJlbW92ZUNoaWxkUG9wdXAobV94ZGdTdXJm YWNlLT53aW5kb3coKSk7CisrICAgIH0KKysKKyAgICAgaWYgKG1fZ3JhYmJpbmcpIHsKKyAgICAg ICAgIGF1dG8gKnNoZWxsID0gbV94ZGdTdXJmYWNlLT5tX3NoZWxsOworICAgICAgICAgUV9BU1NF UlQoc2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPT0gdGhpcyk7CistICAgICAgICBzaGVs bC0+bV90b3Btb3N0R3JhYmJpbmdQb3B1cCA9IG1fcGFyZW50LT5tX3BvcHVwOworKyAgICAgICAg c2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPSBtX3BhcmVudFhkZ1N1cmZhY2UgPyBtX3Bh cmVudFhkZ1N1cmZhY2UtPm1fcG9wdXAgOiBudWxscHRyOworKyAgICAgICAgbV9ncmFiYmluZyA9 IGZhbHNlOworKworKyAgICAgICAgLy8gU3ludGhlc2l6ZSBRdCBlbnRlci9sZWF2ZSBldmVudHMg Zm9yIHBvcHVwCisrICAgICAgICBRV2luZG93ICpsZWF2ZSA9IG51bGxwdHI7CisrICAgICAgICBp ZiAobV94ZGdTdXJmYWNlICYmIG1feGRnU3VyZmFjZS0+d2luZG93KCkpCisrICAgICAgICAgICAg bGVhdmUgPSBtX3hkZ1N1cmZhY2UtPndpbmRvdygpLT53aW5kb3coKTsKKysgICAgICAgIFFXaW5k b3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUxlYXZlRXZlbnQobGVhdmUpOworKworKyAgICAgICAg aWYgKFFXaW5kb3cgKmVudGVyID0gUUd1aUFwcGxpY2F0aW9uOjp0b3BMZXZlbEF0KFFDdXJzb3I6 OnBvcygpKSkKKysgICAgICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVFbnRl ckV2ZW50KGVudGVyLCBlbnRlci0+bWFwRnJvbUdsb2JhbChRQ3Vyc29yOjpwb3MoKSksIFFDdXJz b3I6OnBvcygpKTsKKyAgICAgfQorIH0KKyAKK0BAIC0yNTcsNiArMjY4LDcgQEAgUVdheWxhbmRY ZGdTdXJmYWNlOjpRV2F5bGFuZFhkZ1N1cmZhY2UoUVdheWxhbmRYZGdTaGVsbCAqc2hlbGwsIDo6 eGRnX3N1cmZhY2UgKnMKKyAgICAgICAgICAgICAgICAgbV90b3BsZXZlbC0+c2V0X3BhcmVudChw YXJlbnRYZGdTdXJmYWNlLT5tX3RvcGxldmVsLT5vYmplY3QoKSk7CisgICAgICAgICB9CisgICAg IH0KKysgICAgc2V0U2l6ZUhpbnRzKCk7CisgfQorIAorIFFXYXlsYW5kWGRnU3VyZmFjZTo6flFX YXlsYW5kWGRnU3VyZmFjZSgpCitAQCAtNDAwLDggKzQxMiw2IEBAIHZvaWQgUVdheWxhbmRYZGdT dXJmYWNlOjpzZXRQb3B1cChRV2F5bGFuZFdpbmRvdyAqcGFyZW50KQorIHsKKyAgICAgUV9BU1NF UlQoIW1fdG9wbGV2ZWwgJiYgIW1fcG9wdXApOworIAorLSAgICBhdXRvIHBhcmVudFhkZ1N1cmZh Y2UgPSBzdGF0aWNfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4ocGFyZW50LT5zaGVsbFN1cmZh Y2UoKSk7CistCisgICAgIGF1dG8gcG9zaXRpb25lciA9IG5ldyBRdFdheWxhbmQ6OnhkZ19wb3Np dGlvbmVyKG1fc2hlbGwtPmNyZWF0ZV9wb3NpdGlvbmVyKCkpOworICAgICAvLyBzZXRfcG9wdXAg ZXhwZWN0cyBhIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQKKyAgICAgUVBvaW50IHRy YW5zaWVudFBvcyA9IG1fd2luZG93LT5nZW9tZXRyeSgpLnRvcExlZnQoKTsgLy8gdGhpcyBpcyBh YnNvbHV0ZQorQEAgLTQxNCw4ICs0MjQsOSBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6c2V0 UG9wdXAoUVdheWxhbmRXaW5kb3cgKnBhcmVudCkKKyAgICAgcG9zaXRpb25lci0+c2V0X2FuY2hv cihRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyOjphbmNob3JfdG9wX2xlZnQpOworICAgICBwb3Np dGlvbmVyLT5zZXRfZ3Jhdml0eShRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyOjpncmF2aXR5X2Jv dHRvbV9yaWdodCk7CisgICAgIHBvc2l0aW9uZXItPnNldF9zaXplKG1fd2luZG93LT5nZW9tZXRy eSgpLndpZHRoKCksIG1fd2luZG93LT5nZW9tZXRyeSgpLmhlaWdodCgpKTsKKy0gICAgbV9wb3B1 cCA9IG5ldyBQb3B1cCh0aGlzLCBwYXJlbnRYZGdTdXJmYWNlLCBwb3NpdGlvbmVyKTsKKysgICAg bV9wb3B1cCA9IG5ldyBQb3B1cCh0aGlzLCBwYXJlbnQsIHBvc2l0aW9uZXIpOworICAgICBwb3Np dGlvbmVyLT5kZXN0cm95KCk7CisrCisgICAgIGRlbGV0ZSBwb3NpdGlvbmVyOworIH0KKyAKK0BA IC00MzcsNiArNDQ4LDIzIEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpzZXRHcmFiUG9wdXAo UVdheWxhbmRXaW5kb3cgKnBhcmVudCwgUVdheWxhbmRJbnB1dERldmljCisgICAgIH0KKyAgICAg c2V0UG9wdXAocGFyZW50KTsKKyAgICAgbV9wb3B1cC0+Z3JhYihkZXZpY2UsIHNlcmlhbCk7Cisr CisrICAgIC8vIFN5bnRoZXNpemUgUXQgZW50ZXIvbGVhdmUgZXZlbnRzIGZvciBwb3B1cAorKyAg ICBpZiAoIXBhcmVudCkKKysgICAgICAgIHJldHVybjsKKysgICAgUVdpbmRvdyAqY3VycmVudCA9 IFFHdWlBcHBsaWNhdGlvbjo6dG9wTGV2ZWxBdChRQ3Vyc29yOjpwb3MoKSk7CisrICAgIFFXaW5k b3cgKmxlYXZlID0gcGFyZW50LT53aW5kb3coKTsKKysgICAgaWYgKGN1cnJlbnQgIT0gbGVhdmUp CisrICAgICAgICByZXR1cm47CisrCisrICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRs ZUxlYXZlRXZlbnQobGVhdmUpOworKworKyAgICBRV2luZG93ICplbnRlciA9IG51bGxwdHI7Cisr ICAgIGlmIChtX3BvcHVwICYmIG1fcG9wdXAtPm1feGRnU3VyZmFjZSAmJiBtX3BvcHVwLT5tX3hk Z1N1cmZhY2UtPndpbmRvdygpKQorKyAgICAgICAgZW50ZXIgPSBtX3BvcHVwLT5tX3hkZ1N1cmZh Y2UtPndpbmRvdygpLT53aW5kb3coKTsKKysKKysgICAgaWYgKGVudGVyKQorKyAgICAgICAgUVdp bmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlRW50ZXJFdmVudChlbnRlciwgZW50ZXItPm1hcEZy b21HbG9iYWwoUUN1cnNvcjo6cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSk7CisgfQorIAorIHZvaWQg UVdheWxhbmRYZGdTdXJmYWNlOjp4ZGdfc3VyZmFjZV9jb25maWd1cmUodWludDMyX3Qgc2VyaWFs KQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hk Zy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3AuaAoraW5kZXggOTY3ODUy MDUuLjRiNTE4ZjBhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxfcC5oCisrKysgYi9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbF9w LmgKK0BAIC0xMzEsMTQgKzEzMSwxNSBAQCBwcml2YXRlOgorIAorICAgICBjbGFzcyBQb3B1cCA6 IHB1YmxpYyBRdFdheWxhbmQ6OnhkZ19wb3B1cCB7CisgICAgIHB1YmxpYzoKKy0gICAgICAgIFBv cHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRYZGdTdXJmYWNlICpw YXJlbnQsIFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIgKnBvc2l0aW9uZXIpOworKyAgICAgICAg UG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFdpbmRvdyAqcGFy ZW50LCBRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyICpwb3NpdGlvbmVyKTsKKyAgICAgICAgIH5Q b3B1cCgpIG92ZXJyaWRlOworIAorICAgICAgICAgdm9pZCBncmFiKFFXYXlsYW5kSW5wdXREZXZp Y2UgKnNlYXQsIHVpbnQgc2VyaWFsKTsKKyAgICAgICAgIHZvaWQgeGRnX3BvcHVwX3BvcHVwX2Rv bmUoKSBvdmVycmlkZTsKKyAKKyAgICAgICAgIFFXYXlsYW5kWGRnU3VyZmFjZSAqbV94ZGdTdXJm YWNlID0gbnVsbHB0cjsKKy0gICAgICAgIFFXYXlsYW5kWGRnU3VyZmFjZSAqbV9wYXJlbnQgPSBu dWxscHRyOworKyAgICAgICAgUVdheWxhbmRYZGdTdXJmYWNlICptX3BhcmVudFhkZ1N1cmZhY2Ug PSBudWxscHRyOworKyAgICAgICAgUVdheWxhbmRXaW5kb3cgKm1fcGFyZW50ID0gbnVsbHB0cjsK KyAgICAgICAgIGJvb2wgbV9ncmFiYmluZyA9IGZhbHNlOworICAgICB9OworIAorZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5 bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAKK2lu ZGV4IDg3NjlkOTcxLi5kYTBkZDZhNyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb24u Y3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcAorQEAgLTY5LDIwICs2OSw2IEBAIFFX YXlsYW5kU2hlbGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsSW50ZWdyYXRpb246OmNyZWF0ZVNo ZWxsU3VyZmFjZShRV2F5bGFuZFdpCisgICAgIHJldHVybiBtX3hkZ1NoZWxsLT5nZXRYZGdTdXJm YWNlKHdpbmRvdyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRYZGdTaGVsbEludGVncmF0aW9uOjpo YW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXls YW5kV2luZG93ICpvbGRGb2N1cykKKy17CistICAgIGlmIChuZXdGb2N1cykgeworLSAgICAgICAg YXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4obmV3 Rm9jdXMtPnNoZWxsU3VyZmFjZSgpKTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNlICYmICF4ZGdT dXJmYWNlLT5oYW5kbGVzQWN0aXZlU3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhh bmRsZVdpbmRvd0FjdGl2YXRlZChuZXdGb2N1cyk7CistICAgIH0KKy0gICAgaWYgKG9sZEZvY3Vz ICYmIHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4ob2xkRm9jdXMtPnNoZWxsU3Vy ZmFjZSgpKSkgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5 bGFuZFhkZ1N1cmZhY2UgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFjZSgpKTsKKy0gICAgICAgIGlm ICh4ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNlLT5oYW5kbGVzQWN0aXZlU3RhdGUoKSkKKy0gICAg ICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG9sZEZvY3VzKTsKKy0g ICAgfQorLX0KKy0KKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3No ZWxsaW50ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGI2Y2Fh NmM5Li4yZjkyOWY5OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGlu dGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb25fcC5oCisrKysg Yi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxh bmR4ZGdzaGVsbGludGVncmF0aW9uX3AuaAorQEAgLTY1LDcgKzY1LDYgQEAgcHVibGljOgorICAg ICBRV2F5bGFuZFhkZ1NoZWxsSW50ZWdyYXRpb24oKSB7fQorICAgICBib29sIGluaXRpYWxpemUo UVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAgICAgUVdheWxhbmRTaGVsbFN1 cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSBvdmVycmlk ZTsKKy0gICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAq bmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgb3ZlcnJpZGU7CisgCisgcHJpdmF0 ZToKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRYZGdTaGVsbD4gbV94ZGdTaGVsbDsKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZGlucHV0bWV0aG9kZXZlbnRi dWlsZGVyLmNwcCBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kaW5wdXRtZXRob2RldmVu dGJ1aWxkZXIuY3BwCitpbmRleCA1MjZkMGVmNC4uZjUwY2NmMzAgMTAwNjQ0CistLS0gYS9xdHdh eWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcAorKysr IGIvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5j cHAKK0BAIC0zOSw3ICszOSwxMCBAQAorIAorICNpbmNsdWRlICJxd2F5bGFuZGlucHV0bWV0aG9k ZXZlbnRidWlsZGVyX3AuaCIKKyAKKysjaW5jbHVkZSA8UUJydXNoPgorKyNpbmNsdWRlIDxRR3Vp QXBwbGljYXRpb24+CisgI2luY2x1ZGUgPFFJbnB1dE1ldGhvZD4KKysjaW5jbHVkZSA8UVBhbGV0 dGU+CisgI2luY2x1ZGUgPFFUZXh0Q2hhckZvcm1hdD4KKyAKKyAjaWZkZWYgUVRfQlVJTERfV0FZ TEFORENPTVBPU0lUT1JfTElCCitAQCAtODEsMzIgKzg0LDM4IEBAIHZvaWQgUVdheWxhbmRJbnB1 dE1ldGhvZEV2ZW50QnVpbGRlcjo6YWRkUHJlZWRpdFN0eWxpbmcodWludDMyX3QgaW5kZXgsIHVp bnQzMl90CisgICAgIFFUZXh0Q2hhckZvcm1hdCBmb3JtYXQ7CisgCisgICAgIHN3aXRjaCAoc3R5 bGUpIHsKKy0gICAgY2FzZSAwOgorLSAgICBjYXNlIDE6CisrICAgIGNhc2UgWldQX1RFWFRfSU5Q VVRfVjJfUFJFRURJVF9TVFlMRV9OT05FOgorKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgWldQ X1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9ERUZBVUxUOgorKyAgICBjYXNlIFpXUF9URVhU X0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfVU5ERVJMSU5FOgorICAgICAgICAgZm9ybWF0LnNldEZv bnRVbmRlcmxpbmUodHJ1ZSk7CisgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRl eHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOworICAgICAgICAgbV9wcmVlZGl0U3R5bGVz LmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpU ZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKyAgICAgICAgIGJyZWFrOworLSAg ICBjYXNlIDI6CistICAgIGNhc2UgMzoKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVF RElUX1NUWUxFX0FDVElWRToKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NU WUxFX0lOQUNUSVZFOgorICAgICAgICAgZm9ybWF0LnNldEZvbnRXZWlnaHQoUUZvbnQ6OkJvbGQp OworICAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CisgICAgICAgICBmb3Jt YXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOwor ICAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmli dXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQp KTsKKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIDQ6CistICAgICAgICBmb3JtYXQuc2V0Rm9u dFVuZGVybGluZSh0cnVlKTsKKy0gICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4 dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7CistICAgICAgICBtX3ByZWVkaXRTdHlsZXMu YXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRl eHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworKyAgICBjYXNlIFpXUF9URVhUX0lO UFVUX1YyX1BSRUVESVRfU1RZTEVfSElHSExJR0hUOgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVU X1YyX1BSRUVESVRfU1RZTEVfU0VMRUNUSU9OOgorKyAgICAgICAgeworKyAgICAgICAgICAgIGZv cm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworKyAgICAgICAgICAgIGZvcm1hdC5zZXRVbmRl cmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7CisrICAgICAgICAg ICAgUVBhbGV0dGUgcGFsZXR0ZSA9IHFBcHAtPnBhbGV0dGUoKTsKKysgICAgICAgICAgICBmb3Jt YXQuc2V0QmFja2dyb3VuZChRQnJ1c2gocGFsZXR0ZS5jb2xvcihRUGFsZXR0ZTo6QWN0aXZlLCBR UGFsZXR0ZTo6SGlnaGxpZ2h0KSkpOworKyAgICAgICAgICAgIGZvcm1hdC5zZXRGb3JlZ3JvdW5k KFFCcnVzaChwYWxldHRlLmNvbG9yKFFQYWxldHRlOjpBY3RpdmUsIFFQYWxldHRlOjpIaWdobGln aHRlZFRleHQpKSk7CisrICAgICAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRN ZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRl eCwgbGVuZ3RoLCBmb3JtYXQpKTsKKysgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLSAgICBj YXNlIDU6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9JTkNPUlJF Q1Q6CisgICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKyAgICAgICAgIGZv cm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OldhdmVVbmRlcmxpbmUpOwor ICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZUNvbG9yKFFDb2xvcihRdDo6cmVkKSk7CisgICAg ICAgICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUo UUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOwor ICAgICAgICAgYnJlYWs7CistLy8gICAgY2FzZSBRdFdheWxhbmQ6OndsX3RleHRfaW5wdXQ6OnBy ZWVkaXRfc3R5bGVfc2VsZWN0aW9uOgorLS8vICAgIGNhc2UgUXRXYXlsYW5kOjp3bF90ZXh0X2lu cHV0OjpwcmVlZGl0X3N0eWxlX25vbmU6CisgICAgIGRlZmF1bHQ6CisgICAgICAgICBicmVhazsK KyAgICAgfQorQEAgLTE1Myw3ICsxNjIsNyBAQCBRSW5wdXRNZXRob2RFdmVudCBRV2F5bGFuZElu cHV0TWV0aG9kRXZlbnRCdWlsZGVyOjpidWlsZFByZWVkaXQoY29uc3QgUVN0cmluZyAmdAorIAor ICAgICBpZiAobV9wcmVlZGl0Q3Vyc29yIDwgMCkgeworICAgICAgICAgYXR0cmlidXRlcy5hcHBl bmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6Q3Vyc29y LCAwLCAwLCBRVmFyaWFudCgpKSk7CistICAgIH0gZWxzZSBpZiAobV9wcmVlZGl0Q3Vyc29yID4g MCkgeworKyAgICB9IGVsc2UgeworICAgICAgICAgYXR0cmlidXRlcy5hcHBlbmQoUUlucHV0TWV0 aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6Q3Vyc29yLCBpbmRleEZyb21X YXlsYW5kKHRleHQsIG1fcHJlZWRpdEN1cnNvciksIDEsIFFWYXJpYW50KCkpKTsKKyAgICAgfQor IAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5j cHAgYi9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZG1pbWVoZWxwZXIuY3BwCitpbmRleCBh NWZkZDM0ZC4uZTJmZTE5MjggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5 bGFuZG1pbWVoZWxwZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZG1p bWVoZWxwZXIuY3BwCitAQCAtNjAsNyArNjAsNyBAQCBRQnl0ZUFycmF5IFFXYXlsYW5kTWltZUhl bHBlcjo6Z2V0Qnl0ZUFycmF5KFFNaW1lRGF0YSAqbWltZURhdGEsIGNvbnN0IFFTdHJpbmcgJgor ICAgICAgICAgICAgIGJ1Zi5vcGVuKFFJT0RldmljZTo6UmVhZFdyaXRlKTsKKyAgICAgICAgICAg ICBRQnl0ZUFycmF5IGZtdCA9ICJCTVAiOworICAgICAgICAgICAgIGlmIChtaW1lVHlwZS5zdGFy dHNXaXRoKFFMYXRpbjFTdHJpbmcoImltYWdlLyIpKSkgeworLSAgICAgICAgICAgICAgICBRQnl0 ZUFycmF5IGltZ0ZtdCA9IG1pbWVUeXBlLm1pZCg2KS50b1VwcGVyKCkudG9MYXRpbjEoKTsKKysg ICAgICAgICAgICAgICAgUUJ5dGVBcnJheSBpbWdGbXQgPSBtaW1lVHlwZS5taWQoNikudG9Mb3dl cigpLnRvTGF0aW4xKCk7CisgICAgICAgICAgICAgICAgIGlmIChRSW1hZ2VXcml0ZXI6OnN1cHBv cnRlZEltYWdlRm9ybWF0cygpLmNvbnRhaW5zKGltZ0ZtdCkpCisgICAgICAgICAgICAgICAgICAg ICBmbXQgPSBpbWdGbXQ7CisgICAgICAgICAgICAgfQorQEAgLTc0LDcgKzc0LDcgQEAgUUJ5dGVB cnJheSBRV2F5bGFuZE1pbWVIZWxwZXI6OmdldEJ5dGVBcnJheShRTWltZURhdGEgKm1pbWVEYXRh LCBjb25zdCBRU3RyaW5nICYKKyAgICAgICAgIFFMaXN0PFFVcmw+IHVybHMgPSBtaW1lRGF0YS0+ dXJscygpOworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB1cmxzLmNvdW50KCk7ICsraSkg eworICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKHVybHMuYXQoaSkudG9FbmNvZGVkKCkpOwor LSAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdcbicpOworKyAgICAgICAgICAgIGNvbnRlbnQu YXBwZW5kKCJcclxuIik7CisgICAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICBjb250 ZW50ID0gbWltZURhdGEtPmRhdGEobWltZVR5cGUpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9kYXRhZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAgYi9xdHdh eWxhbmQvdGVzdHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEuY3Bw CitpbmRleCAxNTY4YjNiOS4uMDY3NDEwZDAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMv YXV0by9jbGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEuY3BwCisrKysgYi9xdHdh eWxhbmQvdGVzdHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEuY3Bw CitAQCAtMzUsNyArMzUsNyBAQAorIAorIHVzaW5nIG5hbWVzcGFjZSBNb2NrQ29tcG9zaXRvcjsK KyAKKy1jb25zdGV4cHIgaW50IGRhdGFEZXZpY2VWZXJzaW9uID0gMTsKKytjb25zdGV4cHIgaW50 IGRhdGFEZXZpY2VWZXJzaW9uID0gMzsKKyAKKyBjbGFzcyBEYXRhRGV2aWNlQ29tcG9zaXRvciA6 IHB1YmxpYyBEZWZhdWx0Q29tcG9zaXRvciB7CisgcHVibGljOgorZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAgYi9xdHdheWxhbmQv dGVzdHMvYXV0by9jbGllbnQvc2VhdHY1L3RzdF9zZWF0djUuY3BwCitpbmRleCA5MzEyYzJlNS4u MmVhMzgyZjEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2VhdHY1 L3RzdF9zZWF0djUuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2VhdHY1 L3RzdF9zZWF0djUuY3BwCitAQCAtNzMsNiArNzMsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2 b2lkIG11bHRpVG91Y2goKTsKKyAgICAgdm9pZCBtdWx0aVRvdWNoVXBBbmRNb3Rpb25GcmFtZSgp OworICAgICB2b2lkIHRhcEFuZE1vdmVJblNhbWVGcmFtZSgpOworKyAgICB2b2lkIGNhbmNlbFRv dWNoKCk7CisgfTsKKyAKKyB2b2lkIHRzdF9zZWF0djU6OmJpbmRzVG9TZWF0KCkKK0BAIC02NDYs NSArNjQ3LDM0IEBAIHZvaWQgdHN0X3NlYXR2NTo6dGFwQW5kTW92ZUluU2FtZUZyYW1lKCkKKyAg ICAgUVRSWV9DT01QQVJFKHdpbmRvdy5tX2V2ZW50cy5sYXN0KCkudG91Y2hQb2ludHMuZmlyc3Qo KS5zdGF0ZSgpLCBRdDo6VG91Y2hQb2ludFN0YXRlOjpUb3VjaFBvaW50UmVsZWFzZWQpOworIH0K KyAKKyt2b2lkIHRzdF9zZWF0djU6OmNhbmNlbFRvdWNoKCkKKyt7CisrICAgIFRvdWNoV2luZG93 IHdpbmRvdzsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdTdXJmYWNlKCkgJiYgeGRn U3VyZmFjZSgpLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrCisrICAgIGV4ZWMoWz1d IHsKKysgICAgICAgIGF1dG8gKnQgPSB0b3VjaCgpOworKyAgICAgICAgYXV0byAqYyA9IGNsaWVu dCgpOworKyAgICAgICAgdC0+c2VuZERvd24oeGRnVG9wbGV2ZWwoKS0+c3VyZmFjZSgpLCB7MzIs IDMyfSwgMSk7CisrICAgICAgICB0LT5zZW5kRnJhbWUoYyk7CisrICAgICAgICB0LT5zZW5kQ2Fu Y2VsKGMpOworKyAgICAgICAgdC0+c2VuZEZyYW1lKGMpOworKyAgICB9KTsKKysKKysgICAgUVRS WV9WRVJJRlkoIXdpbmRvdy5tX2V2ZW50cy5lbXB0eSgpKTsKKysgICAgeworKyAgICAgICAgYXV0 byBlID0gd2luZG93Lm1fZXZlbnRzLnRha2VGaXJzdCgpOworKyAgICAgICAgUUNPTVBBUkUoZS50 eXBlLCBRRXZlbnQ6OlRvdWNoQmVnaW4pOworKyAgICAgICAgUUNPTVBBUkUoZS50b3VjaFBvaW50 U3RhdGVzLCBRdDo6VG91Y2hQb2ludFByZXNzZWQpOworKyAgICAgICAgUUNPTVBBUkUoZS50b3Vj aFBvaW50cy5sZW5ndGgoKSwgMSk7CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRzLmZp cnN0KCkucG9zKCksIFFQb2ludEYoMzItd2luZG93LmZyYW1lTWFyZ2lucygpLmxlZnQoKSwgMzIt d2luZG93LmZyYW1lTWFyZ2lucygpLnRvcCgpKSk7CisrICAgIH0KKysgICAgeworKyAgICAgICAg YXV0byBlID0gd2luZG93Lm1fZXZlbnRzLnRha2VGaXJzdCgpOworKyAgICAgICAgUUNPTVBBUkUo ZS50eXBlLCBRRXZlbnQ6OlRvdWNoQ2FuY2VsKTsKKysgICAgICAgIFFDT01QQVJFKGUudG91Y2hQ b2ludHMubGVuZ3RoKCksIDApOworKyAgICB9CisrfQorKworIFFDT01QT1NJVE9SX1RFU1RfTUFJ Tih0c3Rfc2VhdHY1KQorICNpbmNsdWRlICJ0c3Rfc2VhdHY1Lm1vYyIKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVjb21wb3NpdG9yLmNwcCBiL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwCitpbmRl eCA1YzZjODNiYS4uZmE5Yjc2NjIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQvc2hhcmVkL2NvcmVjb21wb3NpdG9yLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5jcHAKK0BAIC0yNyw2ICsyNyw3IEBACisg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKyAKKyAjaW5jbHVkZSAiY29yZWNvbXBvc2l0b3IuaCIKKysj aW5jbHVkZSA8dGhyZWFkPgorIAorIG5hbWVzcGFjZSBNb2NrQ29tcG9zaXRvciB7CisgCitkaWZm IC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wu Y3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuY3Bw CitpbmRleCAwZDk4ODUyMS4uZDFhMmU3Y2IgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMv YXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0 cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmNwcAorQEAgLTQ1MSw2ICs0NTEsMTMg QEAgdm9pZCBUb3VjaDo6c2VuZEZyYW1lKHdsX2NsaWVudCAqY2xpZW50KQorICAgICAgICAgc2Vu ZF9mcmFtZShyLT5oYW5kbGUpOworIH0KKyAKKyt2b2lkIFRvdWNoOjpzZW5kQ2FuY2VsKHdsX2Ns aWVudCAqY2xpZW50KQorK3sKKysgICAgY29uc3QgYXV0byB0b3VjaFJlc291cmNlcyA9IHJlc291 cmNlTWFwKCkudmFsdWVzKGNsaWVudCk7CisrICAgIGZvciAoYXV0byAqciA6IHRvdWNoUmVzb3Vy Y2VzKQorKyAgICAgICAgc2VuZF9jYW5jZWwoci0+aGFuZGxlKTsKKyt9CisrCisgdWludCBLZXli b2FyZDo6c2VuZEVudGVyKFN1cmZhY2UgKnN1cmZhY2UpCisgeworICAgICBhdXRvIHNlcmlhbCA9 IG1fc2VhdC0+bV9jb21wb3NpdG9yLT5uZXh0U2VyaWFsKCk7CitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaCBiL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmgKK2luZGV4IGExYWYxMzdhLi4y MTBkOGRkYiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQv Y29yZXByb3RvY29sLmgKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQv Y29yZXByb3RvY29sLmgKK0BAIC0xNTgsNyArMTU4LDcgQEAgY2xhc3MgV2xDb21wb3NpdG9yIDog cHVibGljIEdsb2JhbCwgcHVibGljIFF0V2F5bGFuZFNlcnZlcjo6d2xfY29tcG9zaXRvcgorIHsK KyAgICAgUV9PQkpFQ1QKKyBwdWJsaWM6CistICAgIGV4cGxpY2l0IFdsQ29tcG9zaXRvcihDb3Jl Q29tcG9zaXRvciAqY29tcG9zaXRvciwgaW50IHZlcnNpb24gPSAzKQorKyAgICBleHBsaWNpdCBX bENvbXBvc2l0b3IoQ29yZUNvbXBvc2l0b3IgKmNvbXBvc2l0b3IsIGludCB2ZXJzaW9uID0gNCkK KyAgICAgICAgIDogUXRXYXlsYW5kU2VydmVyOjp3bF9jb21wb3NpdG9yKGNvbXBvc2l0b3ItPm1f ZGlzcGxheSwgdmVyc2lvbikKKyAgICAgICAgICwgbV9jb21wb3NpdG9yKGNvbXBvc2l0b3IpCisg ICAgIHt9CitAQCAtMzY0LDYgKzM2NCw3IEBAIHB1YmxpYzoKKyAgICAgdWludCBzZW5kVXAod2xf Y2xpZW50ICpjbGllbnQsIGludCBpZCk7CisgICAgIHZvaWQgc2VuZE1vdGlvbih3bF9jbGllbnQg KmNsaWVudCwgY29uc3QgUVBvaW50RiAmcG9zaXRpb24sIGludCBpZCk7CisgICAgIHZvaWQgc2Vu ZEZyYW1lKHdsX2NsaWVudCAqY2xpZW50KTsKKysgICAgdm9pZCBzZW5kQ2FuY2VsKHdsX2NsaWVu dCAqY2xpZW50KTsKKyAKKyAgICAgU2VhdCAqbV9zZWF0ID0gbnVsbHB0cjsKKyB9OworZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tjb21wb3Np dG9yLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tjb21w b3NpdG9yLmNwcAoraW5kZXggYTQxNWNiZjUuLmIxZDNkMDdkIDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwCisrKysg Yi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2NrY29tcG9zaXRvci5j cHAKK0BAIC0zNDIsNyArMzQyLDcgQEAgQ29tcG9zaXRvcjo6Q29tcG9zaXRvcihNb2NrQ29tcG9z aXRvciAqbW9ja0NvbXBvc2l0b3IpCisgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAg IH0KKyAKKy0gICAgd2xfZ2xvYmFsX2NyZWF0ZShtX2Rpc3BsYXksICZ3bF9jb21wb3NpdG9yX2lu dGVyZmFjZSwgMSwgdGhpcywgYmluZENvbXBvc2l0b3IpOworKyAgICB3bF9nbG9iYWxfY3JlYXRl KG1fZGlzcGxheSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCA0LCB0aGlzLCBiaW5kQ29tcG9z aXRvcik7CisgCisgICAgIG1fZGF0YV9kZXZpY2VfbWFuYWdlci5yZXNldChuZXcgRGF0YURldmlj ZU1hbmFnZXIodGhpcywgbV9kaXNwbGF5KSk7CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwIGIvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwCitpbmRleCBlOWRmNWY5 MC4uYzMyNDZlNGEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hh cmVkX29sZC9tb2Nrc3VyZmFjZS5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVu dC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmNwcAorQEAgLTEyNSw2ICsxMjUsMTYgQEAgdm9pZCBT dXJmYWNlOjpzdXJmYWNlX2RhbWFnZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgIFFfVU5VU0VE KGhlaWdodCk7CisgfQorIAorK3ZvaWQgU3VyZmFjZTo6c3VyZmFjZV9kYW1hZ2VfYnVmZmVyKFJl c291cmNlICpyZXNvdXJjZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisrewor KyAgICBRX1VOVVNFRChyZXNvdXJjZSk7CisrICAgIFFfVU5VU0VEKHgpOworKyAgICBRX1VOVVNF RCh5KTsKKysgICAgUV9VTlVTRUQod2lkdGgpOworKyAgICBRX1VOVVNFRChoZWlnaHQpOworK30K KysKKyB2b2lkIFN1cmZhY2U6OnN1cmZhY2VfZnJhbWUoUmVzb3VyY2UgKnJlc291cmNlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjYWxsYmFjaykKKyB7CitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2Uu aCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmgK K2luZGV4IDk0OWRjMjNkLi5kMTc2ODM3ZSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9h dXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmgKKysrKyBiL3F0d2F5bGFuZC90ZXN0 cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmgKK0BAIC02NSw2ICs2NSw4IEBA IHByb3RlY3RlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2xfcmVzb3VyY2Ug KmJ1ZmZlciwgaW50IHgsIGludCB5KSBvdmVycmlkZTsKKyAgICAgdm9pZCBzdXJmYWNlX2RhbWFn ZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB4 LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KSBvdmVycmlkZTsKKysg ICAgdm9pZCBzdXJmYWNlX2RhbWFnZV9idWZmZXIoUmVzb3VyY2UgKnJlc291cmNlLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3 aWR0aCwgaW50MzJfdCBoZWlnaHQpIG92ZXJyaWRlOworICAgICB2b2lkIHN1cmZhY2VfZnJhbWUo UmVzb3VyY2UgKnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY2Fs bGJhY2spIG92ZXJyaWRlOworICAgICB2b2lkIHN1cmZhY2VfY29tbWl0KFJlc291cmNlICpyZXNv dXJjZSkgb3ZlcnJpZGU7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50 L3N1cmZhY2UvdHN0X3N1cmZhY2UuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3N1 cmZhY2UvdHN0X3N1cmZhY2UuY3BwCitpbmRleCA5NWU0ZTYwOS4uNjBjNjcyY2UgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFjZS5jcHAK KysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNw cAorQEAgLTEyOSw2ICsxMjksMTAgQEAgdm9pZCB0c3Rfc3VyZmFjZTo6d2FpdEZvckZyYW1lQ2Fs bGJhY2tHbCgpCisgICAgIC8vIE1ha2Ugc3VyZSB3ZSBmb2xsb3cgZnJhbWUgY2FsbGJhY2tzIGZv ciBzb21lIGZyYW1lcworICAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7ICsraSkgeworICAgICAg ICAgeGRnUGluZ0FuZFdhaXRGb3JQb25nKCk7IC8vIE1ha2Ugc3VyZSB0aGluZ3MgaGF2ZSBoYXBw ZW5lZCBvbiB0aGUgY2xpZW50CisrICAgICAgICBpZiAoIXFFbnZpcm9ubWVudFZhcmlhYmxlSW50 VmFsdWUoIlFUX1dBWUxBTkRfRElTQUJMRV9XSU5ET1dERUNPUkFUSU9OIikgJiYgaSA9PSAwKSB7 CisrICAgICAgICAgICAgUUNPTVBBUkUoYnVmZmVyU3B5LmNvdW50KCksIDEpOworKyAgICAgICAg ICAgIGJ1ZmZlclNweS5yZW1vdmVGaXJzdCgpOworKyAgICAgICAgfQorICAgICAgICAgZXhlYyhb Jl0geworICAgICAgICAgICAgIFFWRVJJRlkoYnVmZmVyU3B5LmVtcHR5KCkpOyAvLyBNYWtlIHN1 cmUgbm8gZXh0cmEgYnVmZmVycyBoYXZlIGFycml2ZWQKKyAgICAgICAgICAgICBRVkVSSUZZKCF4 ZGdUb3BsZXZlbCgpLT5zdXJmYWNlKCktPm1fd2FpdGluZ0ZyYW1lQ2FsbGJhY2tzLmVtcHR5KCkp OworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC94ZGdzaGVsbC90c3Rf eGRnc2hlbGwuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3RzdF94 ZGdzaGVsbC5jcHAKK2luZGV4IDIyNzdiYmI4Li43NDc4NzViNCAxMDA2NDQKKy0tLSBhL3F0d2F5 bGFuZC90ZXN0cy9hdXRvL2NsaWVudC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwCisrKysgYi9x dHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcAorQEAg LTMxLDYgKzMxLDcgQEAKKyAjaW5jbHVkZSA8UXRHdWkvUU9wZW5HTFdpbmRvdz4KKyAjaW5jbHVk ZSA8UXRHdWkvcXBhL3FwbGF0Zm9ybW5hdGl2ZWludGVyZmFjZS5oPgorICNpbmNsdWRlIDxRdFdh eWxhbmRDbGllbnQvcHJpdmF0ZS93YXlsYW5kLXdheWxhbmQtY2xpZW50LXByb3RvY29sLmg+Cisr I2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3F3YXlsYW5kd2luZG93X3AuaD4KKyAK KyB1c2luZyBuYW1lc3BhY2UgTW9ja0NvbXBvc2l0b3I7CisgCitAQCAtNDUsNiArNDYsNyBAQCBw cml2YXRlIHNsb3RzOgorICAgICB2b2lkIGNvbmZpZ3VyZVN0YXRlcygpOworICAgICB2b2lkIHBv cHVwKCk7CisgICAgIHZvaWQgdG9vbHRpcE9uUG9wdXAoKTsKKysgICAgdm9pZCB0b29sdGlwQW5k U2libGluZ1BvcHVwKCk7CisgICAgIHZvaWQgc3dpdGNoUG9wdXBzKCk7CisgICAgIHZvaWQgaGlk ZVBvcHVwUGFyZW50KCk7CisgICAgIHZvaWQgcG9uZ3MoKTsKK0BAIC0xMzgsNiArMTQwLDcgQEAg dm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVNpemUoKQorIAorIHZvaWQgdHN0X3hkZ3NoZWxs Ojpjb25maWd1cmVTdGF0ZXMoKQorIHsKKysgICAgUVZFUklGWShxcHV0ZW52KCJRVF9XQVlMQU5E X0ZSQU1FX0NBTExCQUNLX1RJTUVPVVQiLCAiMCIpKTsKKyAgICAgUVJhc3RlcldpbmRvdyB3aW5k b3c7CisgICAgIHdpbmRvdy5yZXNpemUoNjQsIDQ4KTsKKyAgICAgd2luZG93LnNob3coKTsKK0BA IC0xNTQsOSArMTU3LDEyIEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTdGF0ZXMoKQor ICAgICAvLyBUb3BsZXZlbCB3aW5kb3dzIGRvbid0IGtub3cgdGhlaXIgcG9zaXRpb24gb24geGRn LXNoZWxsCisgLy8gICAgUUNPTVBBUkUod2luZG93LmZyYW1lR2VvbWV0cnkoKS50b3BMZWZ0KCks IFFQb2ludCgpKTsgLy8gVE9ETzogdGhpcyBkb2Vzbid0IGN1cnJlbnRseSB3b3JrIHdoZW4gd2lu ZG93IGRlY29yYXRpb25zIGFyZSBlbmFibGVkCisgCistLy8gICAgUUVYUEVDVF9GQUlMKCIiLCAi Y29uZmlndXJlIGhhcyBhbHJlYWR5IGJlZW4gYWNrZWQsIHdlIHNob3VsZG4ndCBoYXZlIHRvIHdh aXQgZm9yIGlzQWN0aXZlIiwgQ29udGludWUpOworLS8vICAgIFFWRVJJRlkod2luZG93LmlzQWN0 aXZlKCkpOworLSAgICBRVFJZX1ZFUklGWSh3aW5kb3cuaXNBY3RpdmUoKSk7IC8vIEp1c3QgbWFr ZSBzdXJlIGl0IGV2ZW50dWFsbHkgZ2V0J3Mgc2V0IGNvcnJlY3RseQorKyAgICAvLyB3aW5kb3cu d2luZG93c3RhdGUoKSBpcyBkcml2ZW4gYnkga2V5Ym9hcmQgZm9jdXMsIGhvd2V2ZXIgZm9yIGRl Y29yYXRpb25zIHdlIHdhbnQgdG8gZm9sbG93CisrICAgIC8vIFhER1NoZWxsIHRoaXMgaXMgaW50 ZXJuYWwgdG8gUXRXYXlsYW5kIHNvIGl0IGlzIHF1ZXJpZWQgZGlyZWN0bHkKKysgICAgYXV0byB3 YXlsYW5kV2luZG93ID0gc3RhdGljX2Nhc3Q8UXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZFdpbmRv dyAqPih3aW5kb3cuaGFuZGxlKCkpOworKyAgICBRX0FTU0VSVCh3YXlsYW5kV2luZG93KTsKKysg ICAgUVRSWV9WRVJJRlkod2F5bGFuZFdpbmRvdy0+d2luZG93U3RhdGVzKCkudGVzdEZsYWcoCisr ICAgICAgICAgICAgUXQ6OldpbmRvd0FjdGl2ZSkpOyAvLyBKdXN0IG1ha2Ugc3VyZSBpdCBldmVu dHVhbGx5IGdldCdzIHNldCBjb3JyZWN0bHkKKyAKKyAgICAgY29uc3QgUVNpemUgc2NyZWVuU2l6 ZSg2NDAsIDQ4MCk7CisgICAgIGNvbnN0IHVpbnQgbWF4aW1pemVkU2VyaWFsID0gZXhlYyhbPV0g eworQEAgLTE4Niw2ICsxOTIsNyBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJlU3RhdGVz KCkKKyAgICAgUUNPTVBBUkUod2luZG93LndpbmRvd1N0YXRlcygpLCBRdDo6V2luZG93Tm9TdGF0 ZSk7CisgICAgIFFDT01QQVJFKHdpbmRvdy5mcmFtZUdlb21ldHJ5KCkuc2l6ZSgpLCB3aW5kb3dl ZFNpemUpOworIC8vICAgIFFDT01QQVJFKHdpbmRvdy5mcmFtZUdlb21ldHJ5KCkudG9wTGVmdCgp LCBRUG9pbnQoKSk7IC8vIFRPRE86IHRoaXMgZG9lc24ndCBjdXJyZW50bHkgd29yayB3aGVuIHdp bmRvdyBkZWNvcmF0aW9ucyBhcmUgZW5hYmxlZAorKyAgICBRVkVSSUZZKHF1bnNldGVudigiUVRf V0FZTEFORF9GUkFNRV9DQUxMQkFDS19USU1FT1VUIikpOworIH0KKyAKKyB2b2lkIHRzdF94ZGdz aGVsbDo6cG9wdXAoKQorQEAgLTM0MCw2ICszNDcsOTIgQEAgdm9pZCB0c3RfeGRnc2hlbGw6OnRv b2x0aXBPblBvcHVwKCkKKyAgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMCks IG51bGxwdHIpOworIH0KKyAKKyt2b2lkIHRzdF94ZGdzaGVsbDo6dG9vbHRpcEFuZFNpYmxpbmdQ b3B1cCgpCisreworKyAgICBjbGFzcyBUb29sVGlwIDogcHVibGljIFFSYXN0ZXJXaW5kb3cgewor KyAgICBwdWJsaWM6CisrICAgICAgICBleHBsaWNpdCBUb29sVGlwKFFXaW5kb3cgKnBhcmVudCkg eworKyAgICAgICAgICAgIHNldFRyYW5zaWVudFBhcmVudChwYXJlbnQpOworKyAgICAgICAgICAg IHNldEZsYWdzKFF0OjpUb29sVGlwKTsKKysgICAgICAgICAgICByZXNpemUoMTAwLCAxMDApOwor KyAgICAgICAgICAgIHNob3coKTsKKysgICAgICAgIH0KKysgICAgICAgIHZvaWQgbW91c2VQcmVz c0V2ZW50KFFNb3VzZUV2ZW50ICpldmVudCkgb3ZlcnJpZGUgeworKyAgICAgICAgICAgIFFSYXN0 ZXJXaW5kb3c6Om1vdXNlUHJlc3NFdmVudChldmVudCk7CisrICAgICAgICAgICAgbV9wb3B1cCA9 IG5ldyBRUmFzdGVyV2luZG93OworKyAgICAgICAgICAgIG1fcG9wdXAtPnNldFRyYW5zaWVudFBh cmVudCh0cmFuc2llbnRQYXJlbnQoKSk7CisrICAgICAgICAgICAgbV9wb3B1cC0+c2V0RmxhZ3Mo UXQ6OlBvcHVwKTsKKysgICAgICAgICAgICBtX3BvcHVwLT5yZXNpemUoMTAwLCAxMDApOworKyAg ICAgICAgICAgIG1fcG9wdXAtPnNob3coKTsKKysgICAgICAgIH0KKysKKysgICAgICAgIFFSYXN0 ZXJXaW5kb3cgKm1fcG9wdXAgPSBudWxscHRyOworKyAgICB9OworKworKyAgICBjbGFzcyBXaW5k b3cgOiBwdWJsaWMgUVJhc3RlcldpbmRvdyB7CisrICAgIHB1YmxpYzoKKysgICAgICAgIHZvaWQg bW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50ICpldmVudCkgb3ZlcnJpZGUgeworKyAgICAgICAg ICAgIFFSYXN0ZXJXaW5kb3c6Om1vdXNlUHJlc3NFdmVudChldmVudCk7CisrICAgICAgICAgICAg bV90b29sdGlwID0gbmV3IFRvb2xUaXAodGhpcyk7CisrICAgICAgICB9CisrICAgICAgICBUb29s VGlwICptX3Rvb2x0aXAgPSBudWxscHRyOworKyAgICB9OworKworKyAgICBXaW5kb3cgd2luZG93 OworKyAgICB3aW5kb3cucmVzaXplKDIwMCwgMjAwKTsKKysgICAgd2luZG93LnNob3coKTsKKysK KysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdUb3BsZXZlbCgpKTsKKysgICAgZXhlYyhb PV0geyB4ZGdUb3BsZXZlbCgpLT5zZW5kQ29tcGxldGVDb25maWd1cmUoKTsgfSk7CisrICAgIFFD T01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnVG9wbGV2ZWwoKS0+bV94ZGdTdXJmYWNlLT5tX2NvbW1p dHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrCisrICAgIGV4ZWMoWz1dIHsKKysgICAgICAgIGF1dG8g KnN1cmZhY2UgPSB4ZGdUb3BsZXZlbCgpLT5zdXJmYWNlKCk7CisrICAgICAgICBhdXRvICpwID0g cG9pbnRlcigpOworKyAgICAgICAgYXV0byAqYyA9IGNsaWVudCgpOworKyAgICAgICAgcC0+c2Vu ZEVudGVyKHN1cmZhY2UsIHsxMDAsIDEwMH0pOworKyAgICAgICAgcC0+c2VuZEZyYW1lKGMpOwor KyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6OmJ1dHRv bl9zdGF0ZV9wcmVzc2VkKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24oY2xpZW50KCksIEJUTl9M RUZULCBQb2ludGVyOjpidXR0b25fc3RhdGVfcmVsZWFzZWQpOworKyAgICAgICAgcC0+c2VuZEZy YW1lKGMpOworKyAgICAgICAgcC0+c2VuZExlYXZlKHN1cmZhY2UpOworKyAgICAgICAgcC0+c2Vu ZEZyYW1lKGMpOworKyAgICB9KTsKKysKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQ b3B1cCgpKTsKKysgICAgZXhlYyhbPV0geyB4ZGdQb3B1cCgpLT5zZW5kQ29tcGxldGVDb25maWd1 cmUoUVJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7IH0pOworKyAgICBRQ09NUE9TSVRPUl9UUllf VkVSSUZZKHhkZ1BvcHVwKCktPm1feGRnU3VyZmFjZS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJp YWwpOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKCF4ZGdQb3B1cCgpLT5tX2dyYWJiZWQp OworKworKyAgICBleGVjKFs9XSB7CisrICAgICAgICBhdXRvICpzdXJmYWNlID0geGRnUG9wdXAo KS0+c3VyZmFjZSgpOworKyAgICAgICAgYXV0byAqcCA9IHBvaW50ZXIoKTsKKysgICAgICAgIGF1 dG8gKmMgPSBjbGllbnQoKTsKKysgICAgICAgIHAtPnNlbmRFbnRlcihzdXJmYWNlLCB7MTAwLCAx MDB9KTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24o Y2xpZW50KCksIEJUTl9MRUZULCBQb2ludGVyOjpidXR0b25fc3RhdGVfcHJlc3NlZCk7CisrICAg ICAgICBwLT5zZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0 YXRlX3JlbGVhc2VkKTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgfSk7CisrCisr ICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMSkpOworKyAgICBleGVjKFs9XSB7 IHhkZ1BvcHVwKDEpLT5zZW5kQ29tcGxldGVDb25maWd1cmUoUVJlY3QoMTAwLCAxMDAsIDEwMCwg MTAwKSk7IH0pOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDEpLT5tX3hk Z1N1cmZhY2UtPm1fY29tbWl0dGVkQ29uZmlndXJlU2VyaWFsKTsKKysgICAgUUNPTVBPU0lUT1Jf VFJZX1ZFUklGWSh4ZGdQb3B1cCgxKS0+bV9ncmFiYmVkKTsKKysKKysgICAgLy8gQ2xvc2UgdGhl IG1pZGRsZSB0b29sdGlwIChpdCBzaG91bGQgbm90IGNsb3NlIHRoZSBzaWJsaW5nIHBvcHVwKQor KyAgICB3aW5kb3cubV90b29sdGlwLT5jbG9zZSgpOworKworKyAgICBRQ09NUE9TSVRPUl9UUllf Q09NUEFSRSh4ZGdQb3B1cCgxKSwgbnVsbHB0cik7CisrICAgIC8vIFZlcmlmeSB0aGUgcmVtYWlu aW5nIHhkZyBzdXJmYWNlIGlzIGEgZ3JhYiBwb3B1cC4uCisrICAgIFFDT01QT1NJVE9SX1RSWV9W RVJJRlkoeGRnUG9wdXAoMCkpOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVw KDApLT5tX2dyYWJiZWQpOworKworKyAgICB3aW5kb3cubV90b29sdGlwLT5tX3BvcHVwLT5jbG9z ZSgpOworKyAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1cCgxKSwgbnVsbHB0cik7 CisrICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVwKDApLCBudWxscHRyKTsKKyt9 CisrCisgLy8gUVRCVUctNjU2ODAKKyB2b2lkIHRzdF94ZGdzaGVsbDo6c3dpdGNoUG9wdXBzKCkK KyB7CitAQCAtNTA1LDcgKzU5OCw3IEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjptaW5NYXhTaXplKCkK KyAgICAgd2luZG93LnNob3coKTsKKyAgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdUb3Bs ZXZlbCgpKTsKKyAKKy0gICAgZXhlYyhbPV0geyB4ZGdUb3BsZXZlbCgpLT5zZW5kQ29tcGxldGVD b25maWd1cmUoKTsgfSk7CisrICAgIC8vIHdlIGRvbid0IHJvdW5kdHJpcCB3aXRoIG91ciBjb25m aWd1cmF0aW9uIHRoZSBpbml0aWFsIGNvbW1pdCBzaG91bGQgYmUgY29ycmVjdAorIAorICAgICBR Q09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdUb3BsZXZlbCgpLT5tX2NvbW1pdHRlZC5taW5TaXpl LCBRU2l6ZSgxMDAsIDEwMCkpOworICAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdUb3Bs ZXZlbCgpLT5tX2NvbW1pdHRlZC5tYXhTaXplLCBRU2l6ZSgxMDAwLCAxMDAwKSk7CitTdWJtb2R1 bGUgcXR3ZWJjaGFubmVsIDYxODQyMmVlLi5mODk0OTY1NToKK2RpZmYgLS1naXQgYS9xdHdlYmNo YW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwIGIvcXR3ZWJjaGFu bmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyLmNwcAoraW5kZXggNTM2ZWI1 Yy4uODk4ZDc2OSAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0 YW9iamVjdHB1Ymxpc2hlci5jcHAKKysrKyBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9x bWV0YW9iamVjdHB1Ymxpc2hlci5jcHAKK0BAIC0xODYsOCArMTg2LDYgQEAgUV9ERUNMQVJFX1RZ UEVJTkZPKE92ZXJsb2FkUmVzb2x1dGlvbkNhbmRpZGF0ZSwgUV9NT1ZBQkxFX1RZUEUpOworIFFN ZXRhT2JqZWN0UHVibGlzaGVyOjpRTWV0YU9iamVjdFB1Ymxpc2hlcihRV2ViQ2hhbm5lbCAqd2Vi Q2hhbm5lbCkKKyAgICAgOiBRT2JqZWN0KHdlYkNoYW5uZWwpCisgICAgICwgd2ViQ2hhbm5lbCh3 ZWJDaGFubmVsKQorLSAgICAsIHNpZ25hbEhhbmRsZXIodGhpcykKKy0gICAgLCBjbGllbnRJc0lk bGUoZmFsc2UpCisgICAgICwgYmxvY2tVcGRhdGVzKGZhbHNlKQorICAgICAsIHByb3BlcnR5VXBk YXRlc0luaXRpYWxpemVkKGZhbHNlKQorIHsKK0BAIC0zMDEsMTcgKzI5OSwxNyBAQCBRSnNvbk9i amVjdCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6Y2xhc3NJbmZvRm9yT2JqZWN0KGNvbnN0IFFPYmpl Y3QgKm9iamVjdCwgUVdlYgorICAgICByZXR1cm4gZGF0YTsKKyB9CisgCistdm9pZCBRTWV0YU9i amVjdFB1Ymxpc2hlcjo6c2V0Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxlKQorK3ZvaWQgUU1ldGFP YmplY3RQdWJsaXNoZXI6OnNldENsaWVudElzSWRsZShib29sIGlzSWRsZSwgUVdlYkNoYW5uZWxB YnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorIHsKKy0gICAgaWYgKGNsaWVudElzSWRsZSA9 PSBpc0lkbGUpIHsKKy0gICAgICAgIHJldHVybjsKKy0gICAgfQorLSAgICBjbGllbnRJc0lkbGUg PSBpc0lkbGU7CistICAgIGlmICghaXNJZGxlICYmIHRpbWVyLmlzQWN0aXZlKCkpIHsKKy0gICAg ICAgIHRpbWVyLnN0b3AoKTsKKy0gICAgfSBlbHNlIGlmIChpc0lkbGUgJiYgIXRpbWVyLmlzQWN0 aXZlKCkpIHsKKy0gICAgICAgIHRpbWVyLnN0YXJ0KFBST1BFUlRZX1VQREFURV9JTlRFUlZBTCwg dGhpcyk7CistICAgIH0KKysgICAgdHJhbnNwb3J0U3RhdGVbdHJhbnNwb3J0XS5jbGllbnRJc0lk bGUgPSBpc0lkbGU7CisrICAgIGlmIChpc0lkbGUpCisrICAgICAgICBzZW5kRW5xdWV1ZWRQcm9w ZXJ0eVVwZGF0ZXModHJhbnNwb3J0KTsKKyt9CisrCisrYm9vbCBRTWV0YU9iamVjdFB1Ymxpc2hl cjo6aXNDbGllbnRJZGxlKFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkK Kyt7CisrICAgIGF1dG8gZm91bmQgPSB0cmFuc3BvcnRTdGF0ZS5maW5kKHRyYW5zcG9ydCk7Cisr ICAgIHJldHVybiBmb3VuZCAhPSB0cmFuc3BvcnRTdGF0ZS5lbmQoKSAmJiBmb3VuZC52YWx1ZSgp LmNsaWVudElzSWRsZTsKKyB9CisgCisgUUpzb25PYmplY3QgUU1ldGFPYmplY3RQdWJsaXNoZXI6 OmluaXRpYWxpemVDbGllbnQoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0 KQorQEAgLTMzMyw2ICszMzEsNyBAQCBRSnNvbk9iamVjdCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6 aW5pdGlhbGl6ZUNsaWVudChRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0CisgCisgdm9pZCBR TWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZVByb3BlcnR5VXBkYXRlcyhjb25zdCBRT2Jq ZWN0ICpjb25zdCBvYmplY3QsIGNvbnN0IFFKc29uT2JqZWN0ICZvYmplY3RJbmZvKQorIHsKKysg ICAgYXV0byAqc2lnbmFsSGFuZGxlciA9IHNpZ25hbEhhbmRsZXJGb3Iob2JqZWN0KTsKKyAgICAg Zm9yZWFjaCAoY29uc3QgUUpzb25WYWx1ZSAmcHJvcGVydHlJbmZvVmFyLCBvYmplY3RJbmZvW0tF WV9QUk9QRVJUSUVTXS50b0FycmF5KCkpIHsKKyAgICAgICAgIGNvbnN0IFFKc29uQXJyYXkgJnBy b3BlcnR5SW5mbyA9IHByb3BlcnR5SW5mb1Zhci50b0FycmF5KCk7CisgICAgICAgICBpZiAocHJv cGVydHlJbmZvLnNpemUoKSA8IDIpIHsKK0BAIC0zNTMsMTkgKzM1MiwxOSBAQCB2b2lkIFFNZXRh T2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplUHJvcGVydHlVcGRhdGVzKGNvbnN0IFFPYmplY3Qg KmNvbnN0IG9iamVjdAorIAorICAgICAgICAgLy8gT25seSBjb25uZWN0IGZvciBhIHByb3BlcnR5 IHVwZGF0ZSBvbmNlCisgICAgICAgICBpZiAoY29ubmVjdGVkUHJvcGVydGllcy5pc0VtcHR5KCkp IHsKKy0gICAgICAgICAgICBzaWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmplY3QsIHNpZ25hbElu ZGV4KTsKKysgICAgICAgICAgICBzaWduYWxIYW5kbGVyLT5jb25uZWN0VG8ob2JqZWN0LCBzaWdu YWxJbmRleCk7CisgICAgICAgICB9CisgCisgICAgICAgICBjb25uZWN0ZWRQcm9wZXJ0aWVzLmlu c2VydChwcm9wZXJ0eUluZGV4KTsKKyAgICAgfQorIAorICAgICAvLyBhbHNvIGFsd2F5cyBjb25u ZWN0IHRvIGRlc3Ryb3llZCBzaWduYWwKKy0gICAgc2lnbmFsSGFuZGxlci5jb25uZWN0VG8ob2Jq ZWN0LCBzX2Rlc3Ryb3llZFNpZ25hbEluZGV4KTsKKysgICAgc2lnbmFsSGFuZGxlci0+Y29ubmVj dFRvKG9iamVjdCwgc19kZXN0cm95ZWRTaWduYWxJbmRleCk7CisgfQorIAorIHZvaWQgUU1ldGFP YmplY3RQdWJsaXNoZXI6OnNlbmRQZW5kaW5nUHJvcGVydHlVcGRhdGVzKCkKKyB7CistICAgIGlm IChibG9ja1VwZGF0ZXMgfHwgIWNsaWVudElzSWRsZSB8fCBwZW5kaW5nUHJvcGVydHlVcGRhdGVz LmlzRW1wdHkoKSkgeworKyAgICBpZiAoYmxvY2tVcGRhdGVzKSB7CisgICAgICAgICByZXR1cm47 CisgICAgIH0KKyAKK0BAIC00MTUsMTggKzQxNCwxOSBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlz aGVyOjpzZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpCisgCisgICAgIC8vIGRhdGEgZG9lcyBu b3QgY29udGFpbiBzcGVjaWZpYyB1cGRhdGVzCisgICAgIGlmICghZGF0YS5pc0VtcHR5KCkpIHsK Ky0gICAgICAgIHNldENsaWVudElzSWRsZShmYWxzZSk7CistCisgICAgICAgICBtZXNzYWdlW0tF WV9EQVRBXSA9IGRhdGE7CistICAgICAgICBicm9hZGNhc3RNZXNzYWdlKG1lc3NhZ2UpOworKyAg ICAgICAgZW5xdWV1ZUJyb2FkY2FzdE1lc3NhZ2UobWVzc2FnZSk7CisgICAgIH0KKyAKKyAgICAg Ly8gc2VuZCBldmVyeSBwcm9wZXJ0eSB1cGRhdGUgd2hpY2ggaXMgbm90IHN1cHBvc2VkIHRvIGJl IGJyb2FkY2FzdGVkCisgICAgIGNvbnN0IFFIYXNoPFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3Bv cnQqLCBRSnNvbkFycmF5Pjo6Y29uc3RfaXRlcmF0b3Igc3VlbmQgPSBzcGVjaWZpY1VwZGF0ZXMu Y29uc3RFbmQoKTsKKyAgICAgZm9yIChRSGFzaDxRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0 KiwgUUpzb25BcnJheT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3BlY2lmaWNVcGRhdGVzLmNvbnN0 QmVnaW4oKTsgaXQgIT0gc3VlbmQ7ICsraXQpIHsKKyAgICAgICAgIG1lc3NhZ2VbS0VZX0RBVEFd ID0gaXQudmFsdWUoKTsKKy0gICAgICAgIGl0LmtleSgpLT5zZW5kTWVzc2FnZShtZXNzYWdlKTsK KysgICAgICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2UsIGl0LmtleSgpKTsKKyAgICAgfQorKwor KyAgICBmb3IgKGF1dG8gc3RhdGUgPSB0cmFuc3BvcnRTdGF0ZS5iZWdpbigpOyBzdGF0ZSAhPSB0 cmFuc3BvcnRTdGF0ZS5lbmQoKTsgKytzdGF0ZSkKKysgICAgICAgIHNlbmRFbnF1ZXVlZFByb3Bl cnR5VXBkYXRlcyhzdGF0ZS5rZXkoKSk7CisgfQorIAorIFFWYXJpYW50IFFNZXRhT2JqZWN0UHVi bGlzaGVyOjppbnZva2VNZXRob2QoUU9iamVjdCAqY29uc3Qgb2JqZWN0LCBjb25zdCBRTWV0YU1l dGhvZCAmbWV0aG9kLAorQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlz aGVyOjpzaWduYWxFbWl0dGVkKGNvbnN0IFFPYmplY3QgKm9iamVjdCwgY29uc3QgaW50IHNpZ25h bAorICAgICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgICAgcGVuZGluZ1Byb3BlcnR5VXBk YXRlc1tvYmplY3RdW3NpZ25hbEluZGV4XSA9IGFyZ3VtZW50czsKKy0gICAgICAgIGlmIChjbGll bnRJc0lkbGUgJiYgIWJsb2NrVXBkYXRlcyAmJiAhdGltZXIuaXNBY3RpdmUoKSkgeworKyAgICAg ICAgaWYgKCFibG9ja1VwZGF0ZXMgJiYgIXRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAg ICB0aW1lci5zdGFydChQUk9QRVJUWV9VUERBVEVfSU5URVJWQUwsIHRoaXMpOworICAgICAgICAg fQorICAgICB9CitAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6 Om9iamVjdERlc3Ryb3llZChjb25zdCBRT2JqZWN0ICpvYmplY3QpCisgICAgIC8vIG9ubHkgcmVt b3ZlIGZyb20gaGFuZGxlciB3aGVuIHdlIGluaXRpYWxpemVkIHRoZSBwcm9wZXJ0eSB1cGRhdGVz CisgICAgIC8vIGNmOiBodHRwczovL2J1Z3JlcG9ydHMucXQuaW8vYnJvd3NlL1FUQlVHLTYwMjUw CisgICAgIGlmIChwcm9wZXJ0eVVwZGF0ZXNJbml0aWFsaXplZCkgeworLSAgICAgICAgc2lnbmFs SGFuZGxlci5yZW1vdmUob2JqZWN0KTsKKysgICAgICAgIHNpZ25hbEhhbmRsZXJGb3Iob2JqZWN0 KS0+cmVtb3ZlKG9iamVjdCk7CisgICAgICAgICBzaWduYWxUb1Byb3BlcnR5TWFwLnJlbW92ZShv YmplY3QpOworICAgICB9CisgICAgIHBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMucmVtb3ZlKG9iamVj dCk7CitAQCAtODUyLDYgKzg1Miw1MiBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpicm9h ZGNhc3RNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlKSBjb25zdAorICAgICB9Cisg fQorIAorK3ZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmVucXVldWVCcm9hZGNhc3RNZXNzYWdl KGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlKQorK3sKKysgICAgaWYgKHdlYkNoYW5uZWwtPmRf ZnVuYygpLT50cmFuc3BvcnRzLmlzRW1wdHkoKSkgeworKyAgICAgICAgcVdhcm5pbmcoIlFXZWJD aGFubmVsIGlzIG5vdCBjb25uZWN0ZWQgdG8gYW55IHRyYW5zcG9ydHMsIGNhbm5vdCBzZW5kIG1l c3NhZ2U6ICVzIiwKKysgICAgICAgICAgICAgICAgIFFKc29uRG9jdW1lbnQobWVzc2FnZSkudG9K c29uKCkuY29uc3REYXRhKCkpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAgIGZv ciAoYXV0byAqdHJhbnNwb3J0IDogd2ViQ2hhbm5lbC0+ZF9mdW5jKCktPnRyYW5zcG9ydHMpIHsK KysgICAgICAgIGF1dG8gJnN0YXRlID0gdHJhbnNwb3J0U3RhdGVbdHJhbnNwb3J0XTsKKysgICAg ICAgIHN0YXRlLnF1ZXVlZE1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKTsKKysgICAgfQorK30KKysK Kyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjplbnF1ZXVlTWVzc2FnZShjb25zdCBRSnNvbk9i amVjdCAmbWVzc2FnZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisreworKyAgICBhdXRv ICZzdGF0ZSA9IHRyYW5zcG9ydFN0YXRlW3RyYW5zcG9ydF07CisrICAgIHN0YXRlLnF1ZXVlZE1l c3NhZ2VzLmFwcGVuZChtZXNzYWdlKTsKKyt9CisrCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hl cjo6c2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3Bv cnQgKnRyYW5zcG9ydCkKKyt7CisrICAgIGF1dG8gZm91bmQgPSB0cmFuc3BvcnRTdGF0ZS5maW5k KHRyYW5zcG9ydCk7CisrICAgIGlmIChmb3VuZCAhPSB0cmFuc3BvcnRTdGF0ZS5lbmQoKSAmJiBm b3VuZC52YWx1ZSgpLmNsaWVudElzSWRsZQorKyAgICAgICAgJiYgIWZvdW5kLnZhbHVlKCkucXVl dWVkTWVzc2FnZXMuaXNFbXB0eSgpKSB7CisrCisrICAgICAgICAvLyBJZiB0aGUgY2xpZW50IGlz IGNvbm5lY3RlZCB3aXRoIGFuIGluLXByb2Nlc3MgdHJhbnNwb3J0LCBpdCBjYW4KKysgICAgICAg IC8vIGhhcHBlbiB0aGF0IGEgbWVzc2FnZSB0cmlnZ2VycyBhIHN1YnNlcXVlbnQgcHJvcGVydHkg Y2hhbmdlLiBJbgorKyAgICAgICAgLy8gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0 IHRoZSBxdWV1ZWQgbWVzc2FnZXMgaGF2ZSBhbHJlYWR5CisrICAgICAgICAvLyBiZWVuIGNsZWFy ZWQ7IG90aGVyd2lzZSB0aGUgcmVjdXJzaXZlIGNhbGwgd2lsbCBzZW5kIGV2ZXJ5dGhpZyBhZ2Fp bi4KKysgICAgICAgIC8vIENhc2UgaW4gcG9pbnQ6IFRoZSBxbWx3ZWJjaGFubmVsIHRlc3RzIGZh aWwgaWYgd2UgZG9uJ3QgY2xlYXIgdGhlCisrICAgICAgICAvLyBxdWV1ZWQgbWVzc2FnZXMgYmVm b3JlIHNlbmRpbmcgdGhlbSBvdXQuCisrICAgICAgICAvLyBGb3IgdGhhdCBzYW1lIHJlYXNvbiBz ZXQgdGhlIGNsaWVudCB0byAiYnVzeSIgKGFrYSBub24taWRsZSkganVzdAorKyAgICAgICAgLy8g cmlnaHQgYmVmb3JlIHNlbmRpbmcgb3V0IHRoZSBtZXNzYWdlczsgb3RoZXJ3aXNlIGEgcG90ZW50 aWFsCisrICAgICAgICAvLyAiSWRsZSIgdHlwZSBtZXNzYWdlIHdpbGwgbm90IGNvcnJlY3RseSBy ZXN0b3JlIHRoZSBJZGxlIHN0YXRlLgorKyAgICAgICAgY29uc3QgYXV0byBtZXNzYWdlcyA9IHN0 ZDo6bW92ZShmb3VuZC52YWx1ZSgpLnF1ZXVlZE1lc3NhZ2VzKTsKKysgICAgICAgIFFfQVNTRVJU KGZvdW5kLnZhbHVlKCkucXVldWVkTWVzc2FnZXMuaXNFbXB0eSgpKTsKKysgICAgICAgIGZvdW5k LnZhbHVlKCkuY2xpZW50SXNJZGxlID0gZmFsc2U7CisrCisrICAgICAgICBmb3IgKGNvbnN0IGF1 dG8gJm1lc3NhZ2UgOiBtZXNzYWdlcykgeworKyAgICAgICAgICAgIHRyYW5zcG9ydC0+c2VuZE1l c3NhZ2UobWVzc2FnZSk7CisrICAgICAgICB9CisrICAgIH0KKyt9CisrCisgdm9pZCBRTWV0YU9i amVjdFB1Ymxpc2hlcjo6aGFuZGxlTWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSwg UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorIHsKKyAgICAgaWYgKCF3 ZWJDaGFubmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cy5jb250YWlucyh0cmFuc3BvcnQpKSB7CitA QCAtODY2LDcgKzkxMiw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmhhbmRsZU1lc3Nh Z2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsCisgCisgICAgIGNvbnN0 IE1lc3NhZ2VUeXBlIHR5cGUgPSB0b1R5cGUobWVzc2FnZS52YWx1ZShLRVlfVFlQRSkpOworICAg ICBpZiAodHlwZSA9PSBUeXBlSWRsZSkgeworLSAgICAgICAgc2V0Q2xpZW50SXNJZGxlKHRydWUp OworKyAgICAgICAgc2V0Q2xpZW50SXNJZGxlKHRydWUsIHRyYW5zcG9ydCk7CisgICAgIH0gZWxz ZSBpZiAodHlwZSA9PSBUeXBlSW5pdCkgeworICAgICAgICAgaWYgKCFtZXNzYWdlLmNvbnRhaW5z KEtFWV9JRCkpIHsKKyAgICAgICAgICAgICBxV2FybmluZygiSlNPTiBtZXNzYWdlIG9iamVjdCBp cyBtaXNzaW5nIHRoZSBpZCBwcm9wZXJ0eTogJXMiLAorQEAgLTkxMyw5ICs5NTksOSBAQCB2b2lk IFFNZXRhT2JqZWN0UHVibGlzaGVyOjpoYW5kbGVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZt ZXNzYWdlLCBRV2ViQ2hhbm5lbAorICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg ICAgdHJhbnNwb3J0LT5zZW5kTWVzc2FnZShjcmVhdGVSZXNwb25zZShtZXNzYWdlLnZhbHVlKEtF WV9JRCksIHdyYXBSZXN1bHQocmVzdWx0LCB0cmFuc3BvcnQpKSk7CisgICAgICAgICB9IGVsc2Ug aWYgKHR5cGUgPT0gVHlwZUNvbm5lY3RUb1NpZ25hbCkgeworLSAgICAgICAgICAgIHNpZ25hbEhh bmRsZXIuY29ubmVjdFRvKG9iamVjdCwgbWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgt MSkpOworKyAgICAgICAgICAgIHNpZ25hbEhhbmRsZXJGb3Iob2JqZWN0KS0+Y29ubmVjdFRvKG9i amVjdCwgbWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOworICAgICAgICAgfSBl bHNlIGlmICh0eXBlID09IFR5cGVEaXNjb25uZWN0RnJvbVNpZ25hbCkgeworLSAgICAgICAgICAg IHNpZ25hbEhhbmRsZXIuZGlzY29ubmVjdEZyb20ob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9T SUdOQUwpLnRvSW50KC0xKSk7CisrICAgICAgICAgICAgc2lnbmFsSGFuZGxlckZvcihvYmplY3Qp LT5kaXNjb25uZWN0RnJvbShvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQo LTEpKTsKKyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBlU2V0UHJvcGVydHkpIHsKKyAg ICAgICAgICAgICBzZXRQcm9wZXJ0eShvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1BST1BFUlRZ KS50b0ludCgtMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS52YWx1ZShLRVlf VkFMVUUpKTsKK0BAIC05MzEsNiArOTc3LDcgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6 c2V0QmxvY2tVcGRhdGVzKGJvb2wgYmxvY2spCisgICAgIGJsb2NrVXBkYXRlcyA9IGJsb2NrOwor IAorICAgICBpZiAoIWJsb2NrVXBkYXRlcykgeworKyAgICAgICAgdGltZXIuc3RhcnQoUFJPUEVS VFlfVVBEQVRFX0lOVEVSVkFMLCB0aGlzKTsKKyAgICAgICAgIHNlbmRQZW5kaW5nUHJvcGVydHlV cGRhdGVzKCk7CisgICAgIH0gZWxzZSBpZiAodGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICAg dGltZXIuc3RvcCgpOworQEAgLTk0OCw0ICs5OTUsMTUgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxp c2hlcjo6dGltZXJFdmVudChRVGltZXJFdmVudCAqZXZlbnQpCisgICAgIH0KKyB9CisgCisrU2ln bmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4gKlFNZXRhT2JqZWN0UHVibGlzaGVyOjpz aWduYWxIYW5kbGVyRm9yKGNvbnN0IFFPYmplY3QgKm9iamVjdCkKKyt7CisrICAgIGF1dG8gdGhy ZWFkID0gb2JqZWN0LT50aHJlYWQoKTsKKysgICAgYXV0byBpdCA9IHNpZ25hbEhhbmRsZXJzLmZp bmQodGhyZWFkKTsKKysgICAgaWYgKGl0ID09IHNpZ25hbEhhbmRsZXJzLmVuZCgpKSB7CisrICAg ICAgICBpdCA9IHNpZ25hbEhhbmRsZXJzLmVtcGxhY2UodGhyZWFkLCB0aGlzKS5maXJzdDsKKysg ICAgICAgIGl0LT5zZWNvbmQubW92ZVRvVGhyZWFkKHRocmVhZCk7CisrICAgIH0KKysgICAgcmV0 dXJuICZpdC0+c2Vjb25kOworK30KKysKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEv cXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaCBiL3F0 d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlcl9wLmgKK2luZGV4 IGJiZDk4NzUuLjQ3MTNlZjEgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5u ZWwvcW1ldGFvYmplY3RwdWJsaXNoZXJfcC5oCisrKysgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNo YW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXJfcC5oCitAQCAtNTksNiArNTksOSBAQAorICNpbmNs dWRlIDxRQmFzaWNUaW1lcj4KKyAjaW5jbHVkZSA8UVBvaW50ZXI+CisgI2luY2x1ZGUgPFFKc29u T2JqZWN0PgorKyNpbmNsdWRlIDxRUXVldWU+CisrCisrI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+ CisgCisgI2luY2x1ZGUgInF3ZWJjaGFubmVsZ2xvYmFsLmgiCisgCitAQCAtMTA5LDE3ICsxMTIs MzYgQEAgcHVibGljOgorICAgICAgKi8KKyAgICAgdm9pZCBicm9hZGNhc3RNZXNzYWdlKGNvbnN0 IFFKc29uT2JqZWN0ICZtZXNzYWdlKSBjb25zdDsKKyAKKysgICAgLyoqCisrICAgICAqIEVucXVl dWUgdGhlIGdpdmVuIEBwIG1lc3NhZ2UgdG8gYWxsIGtub3duIHRyYW5zcG9ydHMuCisrICAgICAq LworKyAgICB2b2lkIGVucXVldWVCcm9hZGNhc3RNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZt ZXNzYWdlKTsKKysKKysgICAgLyoqCisrICAgICAqIEVucXVldWUgdGhlIGdpdmVuIEBwIG1lc3Nh Z2UgdG8gQHAgdHJhbnNwb3J0LgorKyAgICAgKi8KKysgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShj b25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAq dHJhbnNwb3J0KTsKKysKKysgICAgLyoqCisrICAgICAqIElmIGNsaWVudCBmb3IgZ2l2ZW4gQHAg dHJhbnNwb3J0IGlzIGlkbGUsIHNlbmQgcXVldWVkIG1lc3NhZ2VkIHRvIEBwIHRyYW5zcG9ydCBh bmQgdGhlbiBtYXJrCisrICAgICAqIHRoZSBjbGllbnQgYXMgbm90IGlkbGUuCisrICAgICAqLwor KyAgICB2b2lkIHNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyhRV2ViQ2hhbm5lbEFic3RyYWN0 VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworKworICAgICAvKioKKyAgICAgICogU2VyaWFsaXplIHRo ZSBRTWV0YU9iamVjdCBvZiBAcCBvYmplY3QgYW5kIHJldHVybiBpdCBpbiBKU09OIGZvcm0uCisg ICAgICAqLworICAgICBRSnNvbk9iamVjdCBjbGFzc0luZm9Gb3JPYmplY3QoY29uc3QgUU9iamVj dCAqb2JqZWN0LCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworIAor ICAgICAvKioKKy0gICAgICogU2V0IHRoZSBjbGllbnQgdG8gaWRsZSBvciBidXN5LCBiYXNlZCBv biB0aGUgdmFsdWUgb2YgQHAgaXNJZGxlLgorLSAgICAgKgorLSAgICAgKiBXaGVuIHRoZSB2YWx1 ZSBjaGFuZ2VkLCBzdGFydC9zdG9wIHRoZSBwcm9wZXJ0eSB1cGRhdGUgdGltZXIgYWNjb3JkaW5n bHkuCisrICAgICAqIFNldCB0aGUgY2xpZW50IHRvIGlkbGUgb3IgYnVzeSBmb3IgYSBzaW5nbGUg QHAgdHJhbnNwb3J0LCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgQHAgaXNJZGxlLgorKyAgICAgKi8K KysgICAgdm9pZCBzZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lkbGUsIFFXZWJDaGFubmVsQWJzdHJh Y3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisrCisrICAgIC8qKgorKyAgICAgKiBDaGVjayB0aGF0 IGNsaWVudCBpcyBpZGxlIGZvciBAcCB0cmFuc3BvcnQuCisgICAgICAqLworLSAgICB2b2lkIHNl dENsaWVudElzSWRsZShib29sIGlzSWRsZSk7CisrICAgIGJvb2wgaXNDbGllbnRJZGxlKFFXZWJD aGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisgCisgICAgIC8qKgorICAgICAg KiBJbml0aWFsaXplIGNsaWVudHMgYnkgc2VuZGluZyB0aGVtIHRoZSBjbGFzcyBpbmZvcm1hdGlv biBvZiB0aGUgcmVnaXN0ZXJlZCBvYmplY3RzLgorQEAgLTI3MiwxMCArMjk0LDE4IEBAIHByaXZh dGU6CisgICAgIGZyaWVuZCBjbGFzcyBUZXN0V2ViQ2hhbm5lbDsKKyAKKyAgICAgUVdlYkNoYW5u ZWwgKndlYkNoYW5uZWw7CistICAgIFNpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNoZXI+ IHNpZ25hbEhhbmRsZXI7CisrICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxjb25zdCBRVGhyZWFkKiwg U2lnbmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4+IHNpZ25hbEhhbmRsZXJzOworKyAg ICBTaWduYWxIYW5kbGVyPFFNZXRhT2JqZWN0UHVibGlzaGVyPiAqc2lnbmFsSGFuZGxlckZvcihj b25zdCBRT2JqZWN0ICpvYmplY3QpOworIAorLSAgICAvLyB0cnVlIHdoZW4gdGhlIGNsaWVudCBp cyBpZGxlLCBmYWxzZSBvdGhlcndpc2UKKy0gICAgYm9vbCBjbGllbnRJc0lkbGU7CisrICAgIHN0 cnVjdCBUcmFuc3BvcnRTdGF0ZQorKyAgICB7CisrICAgICAgICBUcmFuc3BvcnRTdGF0ZSgpIDog Y2xpZW50SXNJZGxlKGZhbHNlKSB7IH0KKysgICAgICAgIC8vIHRydWUgd2hlbiB0aGUgY2xpZW50 IGlzIGlkbGUsIGZhbHNlIG90aGVyd2lzZQorKyAgICAgICAgYm9vbCBjbGllbnRJc0lkbGU7Cisr ICAgICAgICAvLyBtZXNzYWdlcyB0byBzZW5kCisrICAgICAgICBRUXVldWU8UUpzb25PYmplY3Q+ IHF1ZXVlZE1lc3NhZ2VzOworKyAgICB9OworKyAgICBRSGFzaDxRV2ViQ2hhbm5lbEFic3RyYWN0 VHJhbnNwb3J0ICosIFRyYW5zcG9ydFN0YXRlPiB0cmFuc3BvcnRTdGF0ZTsKKyAKKyAgICAgLy8g dHJ1ZSB3aGVuIG5vIHByb3BlcnR5IHVwZGF0ZXMgc2hvdWxkIGJlIHNlbnQsIGZhbHNlIG90aGVy d2lzZQorICAgICBib29sIGJsb2NrVXBkYXRlczsKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwv c3JjL3dlYmNoYW5uZWwvc2lnbmFsaGFuZGxlcl9wLmggYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNo YW5uZWwvc2lnbmFsaGFuZGxlcl9wLmgKK2luZGV4IDI3YWZhZGIuLmQ3NzM3M2MgMTAwNjQ0Cist LS0gYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvc2lnbmFsaGFuZGxlcl9wLmgKKysrKyBi L3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWduYWxoYW5kbGVyX3AuaAorQEAgLTU2LDYg KzU2LDcgQEAKKyAjaW5jbHVkZSA8UVZlY3Rvcj4KKyAjaW5jbHVkZSA8UU1ldGFNZXRob2Q+Cisg I2luY2x1ZGUgPFFEZWJ1Zz4KKysjaW5jbHVkZSA8UVRocmVhZD4KKyAKKyBRVF9CRUdJTl9OQU1F U1BBQ0UKKyAKK0BAIC03MSw2ICs3Miw3IEBAIHN0YXRpYyBjb25zdCBpbnQgc19kZXN0cm95ZWRT aWduYWxJbmRleCA9IFFPYmplY3Q6OnN0YXRpY01ldGFPYmplY3QuaW5kZXhPZk1ldGhvCisgdGVt cGxhdGU8Y2xhc3MgUmVjZWl2ZXI+CisgY2xhc3MgU2lnbmFsSGFuZGxlciA6IHB1YmxpYyBRT2Jq ZWN0CisgeworKyAgICBRX0RJU0FCTEVfQ09QWShTaWduYWxIYW5kbGVyKQorIHB1YmxpYzoKKyAg ICAgU2lnbmFsSGFuZGxlcihSZWNlaXZlciAqcmVjZWl2ZXIsIFFPYmplY3QgKnBhcmVudCA9IDAp OworIAorQEAgLTI2OCw2ICsyNzAsNyBAQCBpbnQgU2lnbmFsSGFuZGxlcjxSZWNlaXZlcj46OnF0 X21ldGFjYWxsKFFNZXRhT2JqZWN0OjpDYWxsIGNhbGwsIGludCBtZXRob2RJZCwgdgorICAgICBp ZiAoY2FsbCA9PSBRTWV0YU9iamVjdDo6SW52b2tlTWV0YU1ldGhvZCkgeworICAgICAgICAgY29u c3QgUU9iamVjdCAqb2JqZWN0ID0gc2VuZGVyKCk7CisgICAgICAgICBRX0FTU0VSVChvYmplY3Qp OworKyAgICAgICAgUV9BU1NFUlQoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpID09IG9iamVjdC0+ dGhyZWFkKCkpOworICAgICAgICAgUV9BU1NFUlQoc2VuZGVyU2lnbmFsSW5kZXgoKSA9PSBtZXRo b2RJZCk7CisgICAgICAgICBRX0FTU0VSVChtX2Nvbm5lY3Rpb25zQ291bnRlci5jb250YWlucyhv YmplY3QpKTsKKyAgICAgICAgIFFfQVNTRVJUKG1fY29ubmVjdGlvbnNDb3VudGVyLnZhbHVlKG9i amVjdCkuY29udGFpbnMobWV0aG9kSWQpKTsKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvdGVz dHMvYXV0by9xbWwvdGVzdHdlYmNoYW5uZWwuY3BwIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8v cW1sL3Rlc3R3ZWJjaGFubmVsLmNwcAoraW5kZXggOTg5MTY4Ny4uM2NhODFjMiAxMDA2NDQKKy0t LSBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAKKysrKyBi L3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAKK0BAIC00Niw3 ICs0NiwxMSBAQCBUZXN0V2ViQ2hhbm5lbDo6flRlc3RXZWJDaGFubmVsKCkKKyAKKyBib29sIFRl c3RXZWJDaGFubmVsOjpjbGllbnRJc0lkbGUoKSBjb25zdAorIHsKKy0gICAgcmV0dXJuIFFXZWJD aGFubmVsOjpkX2Z1bmMoKS0+cHVibGlzaGVyLT5jbGllbnRJc0lkbGU7CisrICAgIGZvciAoYXV0 byAqdHJhbnNwb3J0IDogUVdlYkNoYW5uZWw6OmRfZnVuYygpLT50cmFuc3BvcnRzKSB7CisrICAg ICAgICBpZiAoUVdlYkNoYW5uZWw6OmRfZnVuYygpLT5wdWJsaXNoZXItPmlzQ2xpZW50SWRsZSh0 cmFuc3BvcnQpKQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICB9CisrICAgIHJldHVy biBmYWxzZTsKKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2ViY2hh bm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwIGIvcXR3ZWJjaGFu bmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAKK2luZGV4IDE4MWRh OWUuLjM3Zjk4OWEgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFu bmVsL3RzdF93ZWJjaGFubmVsLmNwcAorKysrIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2Vi Y2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAKK0BAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBUZXN0 V2ViQ2hhbm5lbDo6dGVzdFRyYW5zcG9ydFdyYXBPYmplY3RQcm9wZXJ0aWVzKCkKKyAgICAgRHVt bXlUcmFuc3BvcnQgKmR1bW15VHJhbnNwb3J0ID0gbmV3IER1bW15VHJhbnNwb3J0KHRoaXMpOwor ICAgICBjaGFubmVsLmNvbm5lY3RUbyhkdW1teVRyYW5zcG9ydCk7CisgICAgIGNoYW5uZWwuZF9m dW5jKCktPnB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudChkdW1teVRyYW5zcG9ydCk7CistICAg IGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUpOworKyAg ICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCBkdW1t eVRyYW5zcG9ydCk7CisgCisgICAgIFFDT01QQVJFKGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hl ci0+dHJhbnNwb3J0ZWRXcmFwcGVkT2JqZWN0cy5zaXplKCksIDApOworIAorQEAgLTk0Myw4ICs5 NDMsNiBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0SW5maW5pdGVSZWN1cnNpb24oKQorIAor IHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RBc3luY09iamVjdCgpCisgeworLSAgICBRU0tJUCgi VGhpcyB0ZXN0IGlzIGJyb2tlbi4gU2VlIFFUQlVHLTgwNzI5Iik7CistCisgICAgIFFXZWJDaGFu bmVsIGNoYW5uZWw7CisgICAgIGNoYW5uZWwuY29ubmVjdFRvKG1fZHVtbXlUcmFuc3BvcnQpOwor IAorQEAgLTk5MCw2ICs5ODgsNTAgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdEFzeW5jT2Jq ZWN0KCkKKyAgICAgdGhyZWFkLndhaXQoKTsKKyB9CisgCisrdm9pZCBUZXN0V2ViQ2hhbm5lbDo6 dGVzdFByb3BlcnR5TXVsdGlwbGVUcmFuc3BvcnRzKCkKKyt7CisrICAgIER1bW15VHJhbnNwb3J0 IHRyYW5zcG9ydDE7CisrICAgIER1bW15VHJhbnNwb3J0IHRyYW5zcG9ydDI7CisrCisrICAgIFFX ZWJDaGFubmVsIGNoYW5uZWw7CisrICAgIFFNZXRhT2JqZWN0UHVibGlzaGVyICpwdWJsaXNoZXIg PSBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXI7CisrCisrICAgIFRlc3RPYmplY3QgdGVzdE9i ajsKKysgICAgdGVzdE9iai5zZXRPYmplY3ROYW1lKCJ0ZXN0T2JqZWN0Iik7CisrICAgIGNoYW5u ZWwucmVnaXN0ZXJPYmplY3QodGVzdE9iai5vYmplY3ROYW1lKCksICZ0ZXN0T2JqKTsKKysgICAg Y2hhbm5lbC5jb25uZWN0VG8oJnRyYW5zcG9ydDEpOworKyAgICBjaGFubmVsLmNvbm5lY3RUbygm dHJhbnNwb3J0Mik7CisrCisrICAgIHRlc3RPYmouc2V0UHJvcCgiSGVsbG8iKTsKKysKKysgICAg cHVibGlzaGVyLT5pbml0aWFsaXplQ2xpZW50KCZ0cmFuc3BvcnQxKTsKKysgICAgcHVibGlzaGVy LT5pbml0aWFsaXplQ2xpZW50KCZ0cmFuc3BvcnQyKTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGll bnRJc0lkbGUodHJ1ZSwgJnRyYW5zcG9ydDEpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlz Q2xpZW50SWRsZSgmdHJhbnNwb3J0MSksIHRydWUpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXIt PmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MiksIGZhbHNlKTsKKysgICAgUVZFUklGWSh0cmFuc3Bv cnQxLm1lc3NhZ2VzU2VudCgpLmlzRW1wdHkoKSk7CisrICAgIFFWRVJJRlkodHJhbnNwb3J0Mi5t ZXNzYWdlc1NlbnQoKS5pc0VtcHR5KCkpOworKworKyAgICB0ZXN0T2JqLnNldFByb3AoIldvcmxk Iik7CisrICAgIFFUUllfQ09NUEFSRV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0MS5tZXNzYWdlc1Nl bnQoKS5zaXplKCksIDF1LCAyMDAwKTsKKysgICAgUUNPTVBBUkUodHJhbnNwb3J0Mi5tZXNzYWdl c1NlbnQoKS5zaXplKCksIDB1KTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1 ZSwgJnRyYW5zcG9ydDIpOworKyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9y dDIubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAxdSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHB1Ymxp c2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwgZmFsc2UpOworKyAgICBRQ09NUEFSRShw dWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MiksIGZhbHNlKTsKKysKKysgICAgdGVz dE9iai5zZXRQcm9wKCIhISEiKTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1 ZSwgJnRyYW5zcG9ydDIpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgm dHJhbnNwb3J0MiksIHRydWUpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRs ZSgmdHJhbnNwb3J0MSksIGZhbHNlKTsKKysgICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9VVCh0 cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMnUsIDIwMDApOworKyAgICBRQ09NUEFS RSh0cmFuc3BvcnQxLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMXUpOworKyAgICBwdWJsaXNoZXIt PnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0MSk7CisrICAgIFFUUllfQ09NUEFSRV9X SVRIX1RJTUVPVVQodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDJ1LCAyMDAwKTsK KysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCBmYWxz ZSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQyKSwg ZmFsc2UpOworK30KKysKKyBjbGFzcyBGdW5jdGlvbldyYXBwZXIgOiBwdWJsaWMgUU9iamVjdAor IHsKKyAgICAgUV9PQkpFQ1QKK0BAIC0xMDgyLDcgKzExMjQsNyBAQCB2b2lkIFRlc3RXZWJDaGFu bmVsOjpiZW5jaEluaXRpYWxpemVDbGllbnRzKCkKKyAKKyAgICAgICAgIHB1Ymxpc2hlci0+cHJv cGVydHlVcGRhdGVzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICAgICAgIHB1Ymxpc2hlci0+c2ln bmFsVG9Qcm9wZXJ0eU1hcC5jbGVhcigpOworLSAgICAgICAgcHVibGlzaGVyLT5zaWduYWxIYW5k bGVyLmNsZWFyKCk7CisrICAgICAgICBwdWJsaXNoZXItPnNpZ25hbEhhbmRsZXJzLmNsZWFyKCk7 CisgICAgIH0KKyB9CisgCitAQCAtMTEwNyw3ICsxMTQ5LDcgQEAgdm9pZCBUZXN0V2ViQ2hhbm5l bDo6YmVuY2hQcm9wZXJ0eVVwZGF0ZXMoKQorICAgICAgICAgICAgIG9iai0+Y2hhbmdlKCk7Cisg ICAgICAgICB9CisgCistICAgICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPmNsaWVu dElzSWRsZSA9IHRydWU7CisrICAgICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNl dENsaWVudElzSWRsZSh0cnVlLCBtX2R1bW15VHJhbnNwb3J0KTsKKyAgICAgICAgIGNoYW5uZWwu ZF9mdW5jKCktPnB1Ymxpc2hlci0+c2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKTsKKyAgICAg fQorIH0KK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3Rz dF93ZWJjaGFubmVsLmggYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93 ZWJjaGFubmVsLmgKK2luZGV4IGVhZTIxZjQuLmRkNGU2OTAgMTAwNjQ0CistLS0gYS9xdHdlYmNo YW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmgKKysrKyBiL3F0d2Vi Y2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaAorQEAgLTM0OCw2 ICszNDgsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHRlc3RKc29uVG9WYXJpYW50KCk7 CisgICAgIHZvaWQgdGVzdEluZmluaXRlUmVjdXJzaW9uKCk7CisgICAgIHZvaWQgdGVzdEFzeW5j T2JqZWN0KCk7CisrICAgIHZvaWQgdGVzdFByb3BlcnR5TXVsdGlwbGVUcmFuc3BvcnRzKCk7Cisg ICAgIHZvaWQgdGVzdERlbGV0aW9uRHVyaW5nTWV0aG9kSW52b2NhdGlvbl9kYXRhKCk7CisgICAg IHZvaWQgdGVzdERlbGV0aW9uRHVyaW5nTWV0aG9kSW52b2NhdGlvbigpOworIAorU3VibW9kdWxl IHF0d2ViZW5naW5lIGYzMjgwNTRkLi4uMzhlMGRmNmMgKGNvbW1pdHMgbm90IHByZXNlbnQpCitT dWJtb2R1bGUgcXR3ZWJzb2NrZXRzIDY1ODUwOTU0Li42M2ZiOGRhMToKK2RpZmYgLS1naXQgYS9x dHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwIGIv cXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRkYXRhcHJvY2Vzc29yLmNwcAor aW5kZXggMmFmZmRkNS4uOTVmMTE5NCAxMDA2NDQKKy0tLSBhL3F0d2Vic29ja2V0cy9zcmMvd2Vi c29ja2V0cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAKKysrKyBiL3F0d2Vic29ja2V0cy9z cmMvd2Vic29ja2V0cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAKK0BAIC0yNzMsNiArMjcz LDcgQEAgdm9pZCBRV2ViU29ja2V0RGF0YVByb2Nlc3Nvcjo6Y2xlYXIoKQorICAgICBpZiAoIW1f cENvbnZlcnRlclN0YXRlKQorICAgICAgICAgbV9wQ29udmVydGVyU3RhdGUgPSBuZXcgUVRleHRD b2RlYzo6Q29udmVydGVyU3RhdGUoUVRleHRDb2RlYzo6Q29udmVydEludmFsaWRUb051bGwgfAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVRleHRDb2RlYzo6SWdub3JlSGVhZGVyKTsKKysgICAgZnJhbWUuY2xlYXIoKTsKKyB9Cisg CisgLyohCitkaWZmIC0tZ2l0IGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2Nr ZXRwcm90b2NvbC5jcHAgYi9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHBy b3RvY29sLmNwcAoraW5kZXggZGY4N2E5My4uZDA0NjVmMSAxMDA2NDQKKy0tLSBhL3F0d2Vic29j a2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwCisrKysgYi9xdHdlYnNv Y2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29sLmNwcAorQEAgLTIxMCw3ICsy MTAsNyBAQCB2b2lkIFFXZWJTb2NrZXRQcm90b2NvbDo6bWFzayhjaGFyICpwYXlsb2FkLCBxdWlu dDY0IHNpemUsIHF1aW50MzIgbWFza2luZ0tleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcXVpbnQ4KChtYXNraW5nS2V5ICYgMHgwMDAwRkYwMHUpID4+IDgpLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBxdWludDgoKG1hc2tpbmdLZXkgJiAweDAwMDAwMEZGdSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICB9OworLSAgICBpbnQgaSA9IDA7CisrICAgIHF1aW50NjQg aSA9IDA7CisgICAgIHdoaWxlIChzaXplLS0gPiAwKQorICAgICAgICAgKnBheWxvYWQrKyBePSBt YXNrW2krKyAlIDRdOworIH0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlIGIvc3Jj cGtncy9xdDUvdGVtcGxhdGUKaW5kZXggZTA0NjNlMWM5MTk4Li5jYTE4MDBjZTlkYzIgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCkBA IC0yLDExICsyLDExIEBACiAjCiAjIHJldmJ1bXAgbGlicXR4ZGcgYWZ0ZXIgYnVtcGluZyBwYXRj aCB2ZXJzaW9uCiBwa2duYW1lPXF0NQotdmVyc2lvbj01LjE1LjcrMjAyMjExMTkKK3ZlcnNpb249 NS4xNS44CityZXZpc2lvbj0xCitidWlsZF9zdHlsZT1tZXRhCiAjIGNvbW1pdCBmOGM5ZmIzMDRi YzNlNTNiM2FhMDdmOTYyY2Q3NGU5MTYwZGVjY2NjCiAjIGJhc2UgcmVwbzogaHR0cHM6Ly9pbnZl bnQua2RlLm9yZy9xdC9xdC9xdDUKLXJldmlzaW9uPTQKLWJ1aWxkX3N0eWxlPW1ldGEKIGhvc3Rt YWtlZGVwZW5kcz0iY21ha2UgY2xhbmcgZmxleCBwZXJsIGdsaWItZGV2ZWwgcGtnLWNvbmZpZwog IHB5dGhvbiByZTJjIHJ1Ynkgd2hpY2giCiBtYWtlZGVwZW5kcz0iU0RMMi1kZXZlbCBWdWxrYW4t SGVhZGVycyBhbHNhLWxpYi1kZXZlbCBkb3VibGUtY29udmVyc2lvbi1kZXZlbApAQCAtMjksOCAr MjksOSBAQCBob21lcGFnZT0iaHR0cHM6Ly9xdC5pby8iCiAjIHRhcmJhbGwgaXMgZ2VuZXJhdGVk IHdpdGggYGdpdCBhcmNoaXZlLWFsbCBxdDUtJHZlcnNpb24udGFyLmd6YAogIyB0byBrZWVwIHRo ZSBzaXplIHNtYWxsZXIgcXR3ZWJlbmdpbmUsIHF0d2VidmlldywgcXRkb2NnYWxsZXJ5LCBxdGFj dGl2ZXF0IGFuZCBxdHBpbQogIyBjYW4gYmUgbWFya2VkIHdpdGggdGhlIGV4cG9ydC1pZ25vcmUg YXR0cmlidXRlCi1kaXN0ZmlsZXM9Imh0dHBzOi8vdm9pZC5qb2hubnluYXRvci5kZXYvZGlzdGZp bGVzL3F0NS0ke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTlkNTdhZjQ3MWM3ODAyOWEzNjIy NzZiN2M5OTEwOGVhMDA5ZjUxMWJiOWJhNmZmNmNiODg0ZjZkZGQyNTVlOWYKKyNkaXN0ZmlsZXM9 Imh0dHBzOi8vdm9pZC5qb2hubnluYXRvci5kZXYvZGlzdGZpbGVzL3F0NS0ke3ZlcnNpb259LnRh ci5neiIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9kb3dubG9hZC5xdC5pby9hcmNoaXZlL3F0LzUuMTUv JHt2ZXJzaW9ufS9zaW5nbGUvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNyYy0ke3ZlcnNpb259 LnRhci54eiIKK2NoZWNrc3VtPTc3NmE5MzAyYzMzNjY3MWY5NDA2YTUzYmQzMGI4ZTM2ZjgyNTc0 MmIyZWM0NGE1N2MwODIxN2JmZjBmYTg2YjkKIHB5dGhvbl92ZXJzaW9uPTIgI3VudmVyaWZpZWQK IHJlcGxhY2VzPSJxdDUtZG9jPDUuNi4wIHF0NS1xdWljazE8NS42LjAgcXQ1LXF1aWNrMS1kZXZl bDw1LjYuMCBxdDUtd2Via2l0PDUuNi4wIHF0NS13ZWJraXQtZGV2ZWw8NS42LjAKICBxdDUtZW5n aW5pbzw1LjcuMSBxdDUtZW5naW5pby1kZXZlbDw1LjcuMSBxdDUtcGx1Z2luLWd0azw1LjcuMSBx dDUtY2FudmFzM2Q8NS4xMy4wIgpAQCAtMjQ4LDcgKzI0OSw2IEBAIGRvX2NvbmZpZ3VyZSgpIHsK IAkjIG9wdHMrPSIgLXYiCiAJb3B0cys9IiAtc2tpcCBxdHdlYmVuZ2luZSIKIAlvcHRzKz0iIC1z a2lwIHF0d2VidmlldyIKLQlvcHRzKz0iIC1za2lwIHF0ZG9jZ2FsbGVyeSIKIAlvcHRzKz0iIC1z a2lwIHF0cGltIgogCW9wdHMrPSIgLXNraXAgcXRzeXN0ZW1zIgogCW9wdHMrPSIgLXNraXAgcXRz cGVlY2giCgpGcm9tIGY4ZDQ4MTRhYjc2OGU2MzIyNGIwNmQyYWMwNWRkNWZmMGQyMzU2YTkgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3OC8x MzBdIHF0Ni1tdWx0aW1lZGlhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv cXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlh L3RlbXBsYXRlIGIvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0ZQppbmRleCBkODllN2Q1 NGViNWEuLmFhZTE1ZTU3Y2E3YiAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ2LW11bHRpbWVkaWEnCiBwa2duYW1lPXF0Ni1t dWx0aW1lZGlhCiB2ZXJzaW9uPTYuNC4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9z dHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EUVRfRkVBVFVSRV9nc3RyZWFtZXI9T04iCiBo b3N0bWFrZWRlcGVuZHM9InBlcmwgcXQ2LWRlY2xhcmF0aXZlLWhvc3QtdG9vbHMgcGtnLWNvbmZp ZyBxdDYtc2hhZGVydG9vbHMiCgpGcm9tIGE3NDc1YTg5NThlMTYzZjUzZmRjZGU3OTFjYWY1ZDE1 OTU4ZjE0OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDog W1BBVENIIDA3OS8xMzBdIHF0YXY6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3Jj cGtncy9xdGF2L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZSBi L3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZQppbmRleCAzNGMzMGIyYzBjNzguLjJkMDBhZDEwNDM1NSAx MDA2NDQKLS0tIGEvc3JjcGtncy9xdGF2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXRhdi90ZW1w bGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXRhdicKIHBrZ25h bWU9cXRhdgogdmVyc2lvbj0xLjEzLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0 eWxlPXFtYWtlCiBob3N0bWFrZWRlcGVuZHM9InF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKLW1h a2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGliYXNzLWRldmVsIGxpYm9wZW5hbC1kZXZlbAorbWFr ZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgbGliYXNzLWRldmVsIGxpYm9wZW5hbC1kZXZlbAogIGxp YnZhLWdseC1kZXZlbCBsaWJYdi1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAgcXQ1LWRlY2xhcmF0 aXZlLWRldmVsIHF0NS1zdmctZGV2ZWwKICBxdDUtcXVpY2tjb250cm9scyIKCkZyb20gMWI1YmI5 MTIyMDRjZTZlZmI3MWVhMDE4NDM3MTdiMTY5OGE4ODcwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDgwLzEzMF0gcXRveDogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3F0b3gvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3F0b3gvdGVtcGxhdGUgYi9zcmNwa2dzL3F0b3gvdGVtcGxhdGUKaW5kZXggMTYwMTlkN2Vh ZWM5Li41Y2VhMGIxMWI2OTcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXRveC90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3F0b3gvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdxdG94JwogcGtnbmFtZT1xdG94CiB2ZXJzaW9uPTEuMTcuNgotcmV2aXNpb249MgorcmV2 aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFVQREFURV9DSEVD Sz1PRkYKICAtREdJVF9ERVNDUklCRT0ke3ZlcnNpb259CgpGcm9tIDg5ZTVkNDM2ZDE0ZWQwNDY3 NjU3NDMwMmE2Njk0YjgyMzkzYjUzODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEg LTA0MDAKU3ViamVjdDogW1BBVENIIDA4MS8xMzBdIHJldHJvYXJjaDogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcmV0cm9hcmNoL3RlbXBsYXRlIGIvc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUKaW5kZXgg MjQwZDNkZjlkYjAwLi42ZDBiMTZhZTI1OTggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmV0cm9hcmNo L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcmV0cm9hcmNoL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncmV0cm9hcmNoJwogcGtnbmFtZT1yZXRyb2FyY2gKIHZl cnNpb249MS4xNC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jb25maWd1 cmUKIGNvbmZpZ3VyZV9hcmdzPSItLXByZWZpeD0vdXNyIC0tc3lzY29uZmRpcj0vZXRjIC0tZW5h YmxlLW5ldHdvcmtpbmcKICAtLWVuYWJsZS11ZGV2IC0tZGlzYWJsZS1idWlsdGluZmxhYyAtLWRp c2FibGUtYnVpbHRpbmdsc2xhbmcKCkZyb20gMTkyZDBhYWE1ZTUwNWU4OWYwYzZjM2M4YjI5OWRj NjEwZTc2NzMwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDgyLzEzMF0gc2NyY3B5OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3Mvc2NyY3B5L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUg Yi9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQppbmRleCBlZTZlNjk4ZTM4N2YuLjhhZGE1Y2E0MzIz ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zY3Jj cHkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzY3JjcHkn CiBwa2duYW1lPXNjcmNweQogdmVyc2lvbj0yLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1 aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURjb21waWxlX3NlcnZlcj1mYWxzZQog IC1EcHJlYnVpbHRfc2VydmVyPS91c3Ivc2hhcmUvc2NyY3B5L3NjcmNweS1zZXJ2ZXItdiR7dmVy c2lvbn0iCgpGcm9tIGUzNDNlYzYyMjZhZTFmNWJmYmNiMDlmNmMzYTRiMTRkZWUwYjhjMTAgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4My8x MzBdIHNwZWstYWx0ZXJuYXRpdmU6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3Jj cGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2Vk LCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9z cGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlIGIvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBs YXRlCmluZGV4IGQ2NTA4NmI4ZjAwOC4uMDUyNDZmMWI4ZDBjIDEwMDY0NAotLS0gYS9zcmNwa2dz L3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZl L3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzcGVrLWFs dGVybmF0aXZlJwogcGtnbmFtZT1zcGVrLWFsdGVybmF0aXZlCiB2ZXJzaW9uPTAuOC4yLjMKLXJl dmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGhvc3RtYWtl ZGVwZW5kcz0iYXV0b21ha2UgZ2V0dGV4dC1kZXZlbCBpbnRsdG9vbCBsaWJ0b29sIHBrZy1jb25m aWcgd3hXaWRnZXRzLWNvbW1vbiIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgd3hXaWRnZXRz LWd0azMtZGV2ZWwiCi1kZXBlbmRzPSJmZm1wZWciCittYWtlZGVwZW5kcz0iZmZtcGVnNC1kZXZl bCB3eFdpZGdldHMtZ3RrMy1kZXZlbCIKK2RlcGVuZHM9ImZmbXBlZzQiCiBzaG9ydF9kZXNjPSJB Y291c3RpYyBzcGVjdHJ1bSBhbmFseXNlciIKIG1haW50YWluZXI9IkthcnRpayBTaW5naCA8a2Fy dGlrLnlud2FAZ21haWwuY29tPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCgpGcm9tIDNm OTdmOTc2MDZjZGRjMjhmMWFmNTg4YmRlZmMyZmQyNDI2YTk4ZmQgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4NC8xMzBdIHNzcjogcmV2YnVt cCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3Nzci90ZW1wbGF0ZSB8IDQgKystLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3Nzci90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3NyL3RlbXBsYXRlCmluZGV4IGIw NTViOWVjMDc3NC4uMzQ0OGNhMTEwZWIwIDEwMDY0NAotLS0gYS9zcmNwa2dzL3Nzci90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL3Nzci90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMSBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnc3NyJwogcGtnbmFtZT1zc3IKIHZlcnNpb249MC40LjQKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRIX1FU NT1PTiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJhbHNhLWxp Yi1kZXZlbCBmZm1wZWctZGV2ZWwgZ2x1LWRldmVsIGphY2stZGV2ZWwgcHVsc2VhdWRpby1kZXZl bAorbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZzQtZGV2ZWwgZ2x1LWRldmVsIGph Y2stZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAogIHF0NS10b29scy1kZXZlbCBxdDUteDExZXh0cmFz LWRldmVsIGxpYlhpbmVyYW1hLWRldmVsIHY0bC11dGlscy1kZXZlbCIKIGRlcGVuZHM9ImRlc2t0 b3AtZmlsZS11dGlscyBoaWNvbG9yLWljb24tdGhlbWUiCiBzaG9ydF9kZXNjPSJTaW1wbGUgU2Ny ZWVuIFJlY29yZGVyIGZvciBwcm9ncmFtcyBhbmQgZ2FtZXMiCgpGcm9tIGYyMGZhMDcxYjE4ZWQy Y2M0NGEyZTczMDJlNzY2MmNkMDgxZWE0YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4NS8xMzBdIHN1bW86IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9zdW1vL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zdW1v L3RlbXBsYXRlIGIvc3JjcGtncy9zdW1vL3RlbXBsYXRlCmluZGV4IDBmOWI5ZWM4MTVmNS4uYTNm ZTEzNGFhNWFjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3N1bW8vdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9zdW1vL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc3Vt bycKIHBrZ25hbWU9c3VtbwogdmVyc2lvbj0xLjEyLjAKLXJldmlzaW9uPTUKK3JldmlzaW9uPTYK IGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImxpYmdkYWwtdG9vbHMgcGtnLWNv bmZpZyBzd2lnIHB5dGhvbjMtc2V0dXB0b29scyIKIG1ha2VkZXBlbmRzPSJweXRob24zLWRldmVs IGZmbXBlZy1kZXZlbCBmb3gtZGV2ZWwgZ2wycHMtZGV2ZWwgbGliZ2RhbC1kZXZlbAoKRnJvbSAx NDFkZGQ5MzU4MzE3YzNkNDg0N2VhMDdiNzg0ODQwMTAwNTVlNjBlIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODYvMTMwXSBzeW5maWc6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAgYW5kIG1sdDcKCi0tLQogc3JjcGtncy9zeW5maWcvcGF0Y2hl cy9mZm1wZWc2LnBhdGNoIHwgNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtn cy9zeW5maWcvdGVtcGxhdGUgICAgICAgICAgICAgIHwgIDQgKy0tCiAyIGZpbGVzIGNoYW5nZWQs IDQ4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9z eW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoIGIvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1w ZWc2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTcwMjA0 YTlkMjNlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2 LnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKKy0tLSBhL3NyYy9tb2R1bGVzL21vZF9saWJhdmNvZGVj L3RyZ3RfYXYuY3BwCTIwMjItMTAtMjUgMDk6MTQ6MTIuMDAwMDAwMDAwIC0wNDAwCisrKysgYi9z cmMvbW9kdWxlcy9tb2RfbGliYXZjb2RlYy90cmd0X2F2LmNwcAkyMDIzLTA1LTA1IDEyOjA0OjA0 Ljg5NzIxOTc3NSAtMDQwMAorQEAgLTQ5LDYgKzQ5LDggQEAKKyAjICAgZW5kaWYKKyAjZW5kaWYK KyAKKysjaW5jbHVkZSA8bGliYXZjb2RlYy9hdmNvZGVjLmg+CisrCisgI2lmZGVmIEhBVkVfTElC U1dTQ0FMRV9TV1NDQUxFX0gKKyAjCWluY2x1ZGUgPGxpYnN3c2NhbGUvc3dzY2FsZS5oPgorICNl bGlmIGRlZmluZWQoSEFWRV9TV1NDQUxFX0gpCistLS0gYS9zcmMvbW9kdWxlcy9tb2RfbGliYXZj b2RlYy90cmd0X2F2LmNwcAkyMDIzLTA1LTA1IDEyOjA3OjI2LjU3OTg2MDgzMyAtMDQwMAorKysr IGIvc3JjL21vZHVsZXMvbW9kX2xpYmF2Y29kZWMvdHJndF9hdi5jcHAJMjAyMy0wNS0wNSAxMjox NDoxMS4xMjIwMzM3NjMgLTA0MDAKK0BAIC0yMzYsMTIgKzIzNiwxMSBAQAorIAkJY2xvc2UoKTsK KyAKKyAJCWlmICghYXZfcmVnaXN0ZXJlZCkgeworLQkJCWF2X3JlZ2lzdGVyX2FsbCgpOworIAkJ CWF2X3JlZ2lzdGVyZWQgPSB0cnVlOworIAkJfQorIAorIAkJLy8gZ3Vlc3MgZm9ybWF0CistCQlB Vk91dHB1dEZvcm1hdCAqZm9ybWF0ID0gYXZfZ3Vlc3NfZm9ybWF0KE5VTEwsIGZpbGVuYW1lLmNf c3RyKCksIE5VTEwpOworKwkJY29uc3QgQVZPdXRwdXRGb3JtYXQgKmZvcm1hdCA9IGF2X2d1ZXNz X2Zvcm1hdChOVUxMLCBmaWxlbmFtZS5jX3N0cigpLCBOVUxMKTsKKyAJCWlmICghZm9ybWF0KSB7 CisgCQkJc3luZmlnOjp3YXJuaW5nKCJUYXJnZXRfTGliQVZDb2RlYzogdW5hYmxlIHRvIGd1ZXNz IHRoZSBvdXRwdXQgZm9ybWF0LCBkZWZhdWx0aW5nIHRvIE1QRUciKTsKKyAJCQlmb3JtYXQgPSBh dl9ndWVzc19mb3JtYXQoIm1wZWciLCBOVUxMLCBOVUxMKTsKK0BAIC0yNTYsMTUgKzI1NSwxNSBA QAorIAkJY29udGV4dCA9IGF2Zm9ybWF0X2FsbG9jX2NvbnRleHQoKTsKKyAJCWFzc2VydChjb250 ZXh0KTsKKyAJCWNvbnRleHQtPm9mb3JtYXQgPSBmb3JtYXQ7CistCQlpZiAoZmlsZW5hbWUuc2l6 ZSgpICsgMSA+IHNpemVvZihjb250ZXh0LT5maWxlbmFtZSkpIHsKKysJCWlmIChmaWxlbmFtZS5z aXplKCkgKyAxID4gc2l6ZW9mKGNvbnRleHQtPnVybCkpIHsKKyAJCQlzeW5maWc6OmVycm9yKAor IAkJCQkiVGFyZ2V0X0xpYkFWQ29kZWM6IGZpbGVuYW1lIHRvbyBsb25nLCBtYXggbGVuZ3RoIGlz ICVkLCBmaWxlbmFtZSBpcyAnJXMnIiwKKy0JCQkJc2l6ZW9mKGNvbnRleHQtPmZpbGVuYW1lKSAt IDEsCisrCQkJCXNpemVvZihjb250ZXh0LT51cmwpIC0gMSwKKyAJCQkJZmlsZW5hbWUuY19zdHIo KSApOworIAkJCWNsb3NlKCk7CisgCQkJcmV0dXJuIGZhbHNlOworIAkJfQorLQkJbWVtY3B5KGNv bnRleHQtPmZpbGVuYW1lLCBmaWxlbmFtZS5jX3N0cigpLCBmaWxlbmFtZS5zaXplKCkgKyAxKTsK KysJCW1lbWNweShjb250ZXh0LT51cmwsIGZpbGVuYW1lLmNfc3RyKCksIGZpbGVuYW1lLnNpemUo KSArIDEpOworIAorIAkJcGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisgCQlhc3NlcnQocGFj a2V0KTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlIGIvc3JjcGtncy9zeW5m aWcvdGVtcGxhdGUKaW5kZXggNWY1ZjViYjNmNGIyLi42ZTBkNzEzMTUwYWUgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlCkBA IC02LDcgKzYsNyBAQCByZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25m aWd1cmVfYXJncz0iLS13aXRoLWJvb3N0LWxpYmRpcj0ke1hCUFNfQ1JPU1NfQkFTRX0vdXNyL2xp YiIKIGhvc3RtYWtlZGVwZW5kcz0iYm9vc3QtYnVpbGQgSW1hZ2VNYWdpY2sgcGtnLWNvbmZpZyBp bnRsdG9vbCIKLW1ha2VkZXBlbmRzPSJFVEwgZ2V0dGV4dC1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBt bHQtZGV2ZWwgbGlibWFnaWNrLWRldmVsCittYWtlZGVwZW5kcz0iRVRMIGdldHRleHQtZGV2ZWwg bGlieG1sKystZGV2ZWwgbWx0Ny1kZXZlbCBsaWJtYWdpY2stZGV2ZWwKICBsaWJtbmctZGV2ZWwg Ym9vc3QtYnVpbGQgYm9vc3QtZGV2ZWwgbGlib3BlbmV4ci1kZXZlbCBmZm1wZWctZGV2ZWwiCiBk ZXBlbmRzPSJJbWFnZU1hZ2ljayIKIHNob3J0X2Rlc2M9IkNMSSAyRCB2ZWN0b3IgYW5kIHRpbWVs aW5lLWJhc2VkIGFuaW1hdGlvbiBzb2Z0d2FyZSIKQEAgLTIwLDcgKzIwLDcgQEAgQ1hYRkxBR1M9 Ii1zdGQ9YysrMTEgLURIQVZFX0xPQ0FMRV9IPTEiCiAKIHN5bmZpZy1kZXZlbF9wYWNrYWdlKCkg ewogCWRlcGVuZHM9IiR7c291cmNlcGtnfT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQotCSBsaWJv cGVuZXhyLWRldmVsIGxpYnhtbCsrLWRldmVsIG1sdC1kZXZlbCIKKwkgbGlib3BlbmV4ci1kZXZl bCBsaWJ4bWwrKy1kZXZlbCBtbHQ3LWRldmVsIgogCXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVu dCBmaWxlcyIKIAlwa2dfaW5zdGFsbCgpIHsKIAkJdm1vdmUgdXNyL2Jpbi9zeW5maWctY29uZmln CgpGcm9tIDA4YzQwYWUxM2YzNjU0NGMzODY5OTkyODRhN2U5Y2M5Y2NkMzdhYjAgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZy aSwgNSBNYXkgMjAyMyAxMjo1Nzo1NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg3LzEzMF0gc3lu Zmlnc3R1ZGlvOiByZXZidW1wIGZvciBzeW5maWcgbWx0NwoKLS0tCiBzcmNwa2dzL3N5bmZpZ3N0 dWRpby90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlIGIv c3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUKaW5kZXggOTEzNDkxNjllZDJiLi5hZjFjNWEy OTZlZjAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogIyBTaG91bGQgYmUg a2VwdCBpbiBzeW5jIHdpdGggJ3N5bmZpZycgYW5kICdFVEwnCiBwa2duYW1lPXN5bmZpZ3N0dWRp bwogdmVyc2lvbj0xLjQuNAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Z251 LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS11cGRhdGUtbWltZWRiIgogaG9z dG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29sIGdldHRleHQgc3luZmlnIgoKRnJvbSBm MWMzY2QyODlkZWU4YmY5MTQ3ZTU1N2M3NzUxMTNjZTExMDM1MjEzIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODgvMTMwXSB0ZWxlZ3JhbS1k ZXNrdG9wOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdGVsZWdyYW0tZGVz a3RvcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0 ZSBiL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQppbmRleCBhYWU5ZjMxMzUxMDAu Ljc5NDNiMzZmMGI4YSAxMDA2NDQKLS0tIGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RlbGVncmFtLWRlc2t0b3AnCiBwa2duYW1lPXRlbGVn cmFtLWRlc2t0b3AKIHZlcnNpb249NC42LjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxk X3N0eWxlPWNtYWtlCiBidWlsZF9oZWxwZXI9InFlbXUiCiBjb25maWd1cmVfYXJncz0iLURUREVT S1RPUF9BUElfSUQ9MjA5MjM1CgpGcm9tIDlmNDEwYWYwZjE2Y2MxZGU3ZWU3ODg0OTcwMWFhODEw NjI0ZjljYzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDog W1BBVENIIDA4OS8xMzBdIHRnX293dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL3RnX293dC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlIGIv c3JjcGtncy90Z19vd3QvdGVtcGxhdGUKaW5kZXggOTdkMTk1ZGRiMzRhLi41NTE2MTRiMjQ5NTYg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGdfb3d0 L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndGdfb3d0Jwog cGtnbmFtZT10Z19vd3QKIHZlcnNpb249MC4wLjAuMjAyMzAxMDcKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIF9jb21taXQ9NTA5ODczMGI5ZWI2MTczZjBiNTIwNjhmZTI1NTViN2MxMDE1MTIzYQog X2xpYnl1dl9jb21taXQ9MDA5NTA4NDBkMWM5YmNiYjNlYjZlYmM1YWFjNTc5M2U3MTE2NmM4Ygog X2Fic2VpbF9jb21taXQ9OGMwYjk0ZTc5M2E2NjQ5NWUwYjFmMzRhNWViMjZiZDdkYzY3MmRiMAoK RnJvbSAzMzU1NDA1MDQ4OWM2ODFlZmMzMTE4N2ZkMDJiMTY0OGUxMWM4ZmQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTAvMTMwXSB0aW1n OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdGltZy90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZQppbmRl eCA5MWYxNTE2YjI1OTcuLjMzNDQ0M2QzZjliYiAxMDA2NDQKLS0tIGEvc3JjcGtncy90aW1nL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3RpbWcnCiBwa2duYW1lPXRpbWcKIHZlcnNpb249MS40LjQKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURX SVRIX09QRU5TTElERV9TVVBQT1JUPW9mZiAtV25vLWRldiIKIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyBnaXQiCgpGcm9tIDlmNmIwOTYxNTZjYzk5YmJkZDgyOWI2YTcxM2YzNmM4OWVlNjc0 MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENI IDA5MS8xMzBdIHR2aGVhZGVuZDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNw a2dzL3R2aGVhZGVuZC90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3R2aGVhZGVuZC90 ZW1wbGF0ZSBiL3NyY3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlCmluZGV4IGU2YjE2ZDdjY2YzYi4u NDZiNTJiNmZiN2Y5IDEwMDY0NAotLS0gYS9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAndHZoZWFkZW5kJwogcGtnbmFtZT10dmhlYWRlbmQKIHZlcnNpb249NC4yLjgK LXJldmlzaW9uPTYKK3JldmlzaW9uPTcKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZp Z3VyZV9hcmdzPSItLWVuYWJsZS1kdmJzY2FuIC0tZGlzYWJsZS1mZm1wZWdfc3RhdGljCiAtLWRp c2FibGUtaGRob21lcnVuX3N0YXRpYyAtLWRpc2FibGUtYmludHJheV9jYWNoZSAtLWRpc2FibGUt bGlieDI2NF9zdGF0aWMKIC0tZGlzYWJsZS1saWJ4MjY1X3N0YXRpYyAtLWRpc2FibGUtbGlidnB4 X3N0YXRpYyAtLWRpc2FibGUtbGlidGhlb3JhX3N0YXRpYwogLS1kaXNhYmxlLWxpYnZvcmJpc19z dGF0aWMgLS1kaXNhYmxlLWxpYmZka2FhY19zdGF0aWMiCiBob3N0bWFrZWRlcGVuZHM9ImdldHRl eHQgcGtnLWNvbmZpZyBweXRob24gZ2l0IHdoaWNoIgotbWFrZWRlcGVuZHM9ImF2YWhpLWxpYnMt ZGV2ZWwgb3BlbnNzbC1kZXZlbCB6bGliLWRldmVsIGxpYmN1cmwtZGV2ZWwgZmZtcGVnLWRldmVs IgorbWFrZWRlcGVuZHM9ImF2YWhpLWxpYnMtZGV2ZWwgb3BlbnNzbC1kZXZlbCB6bGliLWRldmVs IGxpYmN1cmwtZGV2ZWwgZmZtcGVnNC1kZXZlbCIKIHNob3J0X2Rlc2M9IlRWIHN0cmVhbWluZyBz ZXJ2ZXIiCiBtYWludGFpbmVyPSJsZW1taSA8bGVtbWlAbmVyZDJuZXJkLm9yZz4iCiBsaWNlbnNl PSJHUEwtMy4wLW9ubHkiCgpGcm9tIGEwZDc0MGJkYzA4ZWM0NDYxY2JkZjFhOTUzYjE1NGM4Mjdk ZTg0OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BB VENIIDA5Mi8xMzBdIHVucGFwZXI6IHVwZGF0ZSB0byA3LjAuMC4KCi0tLQogc3JjcGtncy91bnBh cGVyL3RlbXBsYXRlIHwgMTYgKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5z ZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3VucGFwZXIv dGVtcGxhdGUgYi9zcmNwa2dzL3VucGFwZXIvdGVtcGxhdGUKaW5kZXggMzhlZDQ3YTU4NDAxLi4x ZmY5MTBlNzIyYWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL3VucGFwZXIvdGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3VucGFwZXInCiBwa2duYW1lPXVucGFwZXIKLXZlcnNpb249Ni4xCi1yZXZpc2lvbj0z Ci1idWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCit2ZXJzaW9uPTcuMC4wCityZXZpc2lvbj0xCiti dWlsZF9zdHlsZT1tZXNvbgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIG1lc29uIGxpYnhz bHQiCittYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHB5dGhvbjMtU3BoaW54Igorc2hvcnRfZGVz Yz0iUG9zdC1wcm9jZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogbWFp bnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKLWhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyBsaWJ4c2x0IgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCIKLWxpY2Vu c2U9IkdQTC0yIgorbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczov L3d3dy5mbGFtZWV5ZXMuZXUvcHJvamVjdHMvdW5wYXBlciIKLXNob3J0X2Rlc2M9IkEgcG9zdC1w cm9jZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogZGlzdGZpbGVzPSJo dHRwczovL3d3dy5mbGFtZWV5ZXMuZXUvZmlsZXMvJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci54 eiIKLWNoZWNrc3VtPTIzN2M4NGY1ZGE1NDRiM2Y3NzA5ODI3ZjlmMTJjMzdjMzQ2Y2RmMDI5YjEx MjhmYjQ2MzNmOWJhZmE1Y2I5MzAKK2NoZWNrc3VtPTI1NzVmYmJmMjZjMjI3MTlkMWNiODgyYjU5 NjAyYzk5MDBjN2Y3NDcxMThhYzEzMDg4M2Y2MzQxOWJlNDZhODAKCkZyb20gOGUwMzc1YmU0NjE3 MWZjZDdkZDk0NjhiYzI4YjRkN2NlZDNmZTI5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkzLzEzMF0gdmJhLW06IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy92YmEtbS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv dmJhLW0vdGVtcGxhdGUgYi9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRlCmluZGV4IGJhMTUzZTBiNThj YS4uYWE2MDkzNjQ1ZTk3IDEwMDY0NAotLS0gYS9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiBwa2duYW1lPXZiYS1tCiBy ZXZlcnRzPTEyOTJfMgogdmVyc2lvbj0yLjEuNQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREVOQUJMRV9HVEs9VFJVRSAtREVOQUJM RV9GRk1QRUc9VFJVRSAtREVOQUJMRV9MSU5LPVRSVUUgLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVh c2UiCiBob3N0bWFrZWRlcGVuZHM9ImdldHRleHQgcGtnLWNvbmZpZyB1bnppcCB6aXAgeWFzbSB3 eFdpZGdldHMtZ3RrMy1kZXZlbCIKCkZyb20gMTk3YmFhMmZlY2ZjZGJkY2UyZTcyMWNjZjY5ZDE1 MzIxOGI4OTI4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDk0LzEzMF0gdmljZTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBz cmNwa2dzL3ZpY2UvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy92aWNlL3RlbXBsYXRl IGIvc3JjcGtncy92aWNlL3RlbXBsYXRlCmluZGV4IDA5MjQ3NjdjZmNmYi4uNTk4MWU0NTE0OWQw IDEwMDY0NAotLS0gYS9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUKKysrIGIvc3JjcGtncy92aWNlL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndmljZScKIHBrZ25h bWU9dmljZQogdmVyc2lvbj0zLjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIKIAkkKHZvcHRfZW5hYmxlIHNkbDIgc2Rs dWkyKQpAQCAtMjgsNyArMjgsNyBAQCBtYWtlZGVwZW5kcz0iCiAJJCh2b3B0X2lmIGd0azMgZ3Rr KzMtZGV2ZWwpCiAJJCh2b3B0X2lmIGd0azMgcHVsc2VhdWRpby1kZXZlbCkKIAkkKHZvcHRfaWYg Z3RrMyBwYW5nby1kZXZlbCkKLQkkKHZvcHRfaWYgZmZtcGVnIGZmbXBlZy1kZXZlbCkiCisJJCh2 b3B0X2lmIGZmbXBlZyBmZm1wZWc0LWRldmVsKSIKIHNob3J0X2Rlc2M9IkVtdWxhdG9yIGZvciBD NjQsIEMxMjgsIENCTS1JSSwgUEVULCBWSUMyMCwgUGx1czQgYW5kIEMxNiIKIG1haW50YWluZXI9 Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxh dGVyIgoKRnJvbSA1NTVjNTgzOTM4YjIwY2UyOWM2ZGE4ODkwZTJmZjQzNWI1ZDU3N2Q4IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTUvMTMw XSB3YXlwaXBlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvd2F5cGlwZS90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvd2F5 cGlwZS90ZW1wbGF0ZQppbmRleCA1YzQxNjE5MDAwNjAuLjFhNDZmZTI3ZjdkOCAxMDA2NDQKLS0t IGEvc3JjcGtncy93YXlwaXBlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3dheXBpcGUnCiBwa2duYW1l PXdheXBpcGUKIHZlcnNpb249MC44LjQKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0 eWxlPW1lc29uCiAjIGx0byBpcyBvZmYgYmVjYXVzZSBpdCBjYXVzZXMgbGlua2luZyBlcnJvcnMg aW4gYXJtdjZsIGFuZCBhcm12N2wgKGR1ZSB0byBORU9OKQogY29uZmlndXJlX2FyZ3M9Ii1Ed2Vy cm9yPWZhbHNlIC1Ed2l0aF9kbWFidWY9ZW5hYmxlZCAtRHdpdGhfbHo0PWVuYWJsZWQKCkZyb20g OWY3ZDYxZDM4NDAwNzZjYjNhMjQwMjc3NGYyYTBkYzc1Njg4MDZhYyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk2LzEzMF0gd2YtcmVjb3Jk ZXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy93Zi1yZWNvcmRlci90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUgYi9zcmNwa2dzL3dm LXJlY29yZGVyL3RlbXBsYXRlCmluZGV4IGUyNzhlYjAwMTYwMC4uNWQwMTRhNWYyOGFmIDEwMDY0 NAotLS0gYS9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvd2YtcmVj b3JkZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3Zi1y ZWNvcmRlcicKIHBrZ25hbWU9d2YtcmVjb3JkZXIKIHZlcnNpb249MC4zLjAKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25m aWcgc2Nkb2Mgd2F5bGFuZC1kZXZlbCIKIG1ha2VkZXBlbmRzPSJ3YXlsYW5kLXByb3RvY29scyB3 YXlsYW5kLWRldmVsIGZmbXBlZy1kZXZlbCB4MjY0LWRldmVsCgpGcm9tIDYzZjkxMDdjNjRkNzVi MDliMmQ4YmQ3ZjI0MzQzOWU2N2RlYzdkMTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5Ny8xMzBdIHhwcmE6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy94cHJhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy94cHJh L3RlbXBsYXRlIGIvc3JjcGtncy94cHJhL3RlbXBsYXRlCmluZGV4IDM4ZjgzMjgzYjFlNS4uYjZl MDFmZjBhODEzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3hwcmEvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy94cHJhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAneHBy YScKIHBrZ25hbWU9eHByYQogdmVyc2lvbj00LjQuNAotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUKIG1ha2VfYnVpbGRfYXJncz0iLS13aXRob3V0LWN1 ZGFfa2VybmVscyAtLXdpdGhvdXQtY3VkYV9yZWJ1aWxkIgogbWFrZV9pbnN0YWxsX2FyZ3M9IiQo dm9wdF93aXRoIGRvY3MpICR7bWFrZV9idWlsZF9hcmdzfSIKCkZyb20gNjYyNzM0Y2IxYzdmYzU4 NTI2MjU3ZDNlMzNhY2IxYjRkOTJmMDI0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAzMSBNYXIgMjAyMyAwOTowNzo0 MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk4LzEzMF0gbnYtY29kZWMtaGVhZGVyczogdXBkYXRl IHRvIDEyLjAuMTYuMAoKLS0tCiBzcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUgfCA0 ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlIGIvc3JjcGtncy9u di1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCmluZGV4IDNkNDIyYTYxZTQ4OS4uMjUxZTA1N2Y4MjZm IDEwMDY0NAotLS0gYS9zcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnbnYtY29kZWMtaGVhZGVycycKIHBrZ25hbWU9bnYtY29kZWMtaGVhZGVycwot dmVyc2lvbj0xMS4xLjUuMQordmVyc2lvbj0xMi4wLjE2LjAKIHJldmlzaW9uPTEKIGJ1aWxkX3N0 eWxlPWdudS1tYWtlZmlsZQogc2hvcnRfZGVzYz0iRkZtcGVnIHZlcnNpb24gb2YgaGVhZGVycyBy ZXF1aXJlZCB0byBpbnRlcmZhY2Ugd2l0aCBOdmlkaWFzIGNvZGVjIEFQSXMiCkBAIC04LDcgKzgs NyBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5z ZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHA6Ly9naXQudmlkZW9sYW4ub3JnLz9wPWZmbXBlZy9udi1j b2RlYy1oZWFkZXJzLmdpdCIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL0ZGbXBlZy9u di1jb2RlYy1oZWFkZXJzL2FyY2hpdmUvbiR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09ZDA5 NWZiZDU2YWE5Mzc3MjQ3MWEzMjNiZTBlYmU2NTUwNGEwZjQzZjA2Yzc2YTMwYjZkMjVkYTc3YjA2 YWU5YworY2hlY2tzdW09MmExNTMzYjY1ZjU1ZjlkYTUyOTU2ZmFmMDYyN2VkM2I3NDg2OGFjMGM3 ZjI2OTk5MGVkZDIxMzY5MTEzYjQ4ZgogCiBwb3N0X2luc3RhbGwoKSB7CiAJc2VkIC1uICc0LDI1 cCcgaW5jbHVkZS9mZm52Y29kZWMvbnZFbmNvZGVBUEkuaCA+IExJQ0VOU0UKCkZyb20gYjJhY2Vk ZTk0YWExYjJkZTU1M2ZhYjA0OTAzOTUwMGVmYWQ5Zjc5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAzMSBNYXIgMjAy MyAwOTowODo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk5LzEzMF0gb3BlbmltYWdlZGVub2lz ZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29wZW5pbWFnZWRlbm9pc2Uv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUgYi9z cmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUKaW5kZXggZGI1Y2NkYjA1NWNjLi5jYjkw MDQ1YWZiNjMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuaW1hZ2VkZW5vaXNlJwogcGtnbmFtZT1vcGVuaW1hZ2Vk ZW5vaXNlCiB2ZXJzaW9uPTEuNC4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0ieDg2 XzY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImlzcGMgcHl0aG9uMyIK CkZyb20gMDM5ZTk1MTZlNWVjOGMyMGYwZGY2NTRmNDk5OTM3NTFhZTFlNGZiOSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJp LCAxNiBEZWMgMjAyMiAwOToyNToyMiAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTAwLzEzMF0gaW50 ZWwtZ21tbGliOiB1cGRhdGUgdG8gMjIuMy4zCgotLS0KIHNyY3BrZ3MvaW50ZWwtZ21tbGliL3Rl bXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50ZWwtZ21tbGliL3RlbXBsYXRlIGIvc3Jj cGtncy9pbnRlbC1nbW1saWIvdGVtcGxhdGUKaW5kZXggOGVkNmVkM2NmNTZjLi4yNjA1MjI2MTUy ZTUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaW50ZWwtZ21tbGliL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvaW50ZWwtZ21tbGliL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnaW50ZWwtZ21tbGliJwogcGtnbmFtZT1pbnRlbC1nbW1saWIKLXZlcnNpb249MjIuMi4w Cit2ZXJzaW9uPTIyLjMuMwogcmV2aXNpb249MQogYXJjaHM9Imk2ODYqIHg4Nl82NCoiCiBidWls ZF9zdHlsZT1jbWFrZQpAQCAtMTgsNyArMTgsNyBAQCBtYWludGFpbmVyPSJTdGVmYW5vIFJhZ25p IDxzdDNyNGdAcHJvdG9ubWFpbC5jb20+IgogbGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHBz Oi8vZ2l0aHViLmNvbS9pbnRlbC9nbW1saWIiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNv bS9pbnRlbC9nbW1saWIvYXJjaGl2ZS9pbnRlbC1nbW1saWItJHt2ZXJzaW9ufS50YXIuZ3oiCi1j aGVja3N1bT0wYjIyNTM4OTRjNmZjODQ1NWI2ZDdjNWU4N2U2NTA0YTc2ZDZmNjBlYTE5MmUxNDQ1 YzJmOTMxNjRiZjUyOWMwCitjaGVja3N1bT04NjY1MWJkMjgwM2M5ZjBhZmQ4MjQ3MWJlYzc4NGU2 NWQyYjQxOGRlZTMxNWEwNTNkMjIyMTVlYjJhNjc5YmU3CiAKIGxpYjMyZGlzYWJsZWQ9eWVzCiAK CkZyb20gMDRmODIzY2YwMTQzMTRlZjUwMzI2YWE1ODA4YjNjMjQ1ZTYyYjllZiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJp LCAxNiBEZWMgMjAyMiAwOToyNTo0NyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTAxLzEzMF0gaW50 ZWwtbWVkaWEtZHJpdmVyOiB1cGRhdGUgdG8gMjIuNi40CgotLS0KIC4uLm1tb24tRW5hYmxlLU1N Qy1pbi1mcmVlLWtlcm5lbC1idWlsZC5wYXRjaCB8IDEyNSArKysrKysrKysrKysrKysrKysKIC4u Li9pbnRlbC1tZWRpYS1kcml2ZXIvcGF0Y2hlcy9leGVjaW5mby5wYXRjaCB8ICA1OCAtLS0tLS0t LQogc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUgICAgICAgICAgIHwgICA0ICst CiAzIGZpbGVzIGNoYW5nZWQsIDEyNyBpbnNlcnRpb25zKCspLCA2MCBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci9wYXRjaGVzLzAwMDEt TWVkaWEtQ29tbW9uLUVuYWJsZS1NTUMtaW4tZnJlZS1rZXJuZWwtYnVpbGQucGF0Y2gKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci9wYXRjaGVzL2V4ZWNpbmZv LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvcGF0Y2hlcy8w MDAxLU1lZGlhLUNvbW1vbi1FbmFibGUtTU1DLWluLWZyZWUta2VybmVsLWJ1aWxkLnBhdGNoIGIv c3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvcGF0Y2hlcy8wMDAxLU1lZGlhLUNvbW1vbi1FbmFi bGUtTU1DLWluLWZyZWUta2VybmVsLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uNTI1ZmI2ODg3MjJjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9pbnRlbC1tZWRpYS1kcml2ZXIvcGF0Y2hlcy8wMDAxLU1lZGlhLUNvbW1vbi1FbmFibGUtTU1D LWluLWZyZWUta2VybmVsLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMTI1IEBACitGcm9tIGU2OGZl YWI3ZGIwMzY4MzhkOTUyMWJhM2I5ZjAwNzE3YzM3YzAyNGMgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tOiBKYXlZYW5nIDxqYXkueWFuZ0BpbnRlbC5jb20+CitEYXRlOiBUdWUsIDIxIE1h ciAyMDIzIDE3OjE3OjU1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFtNZWRpYSBDb21tb25dIEVu YWJsZSBNTUMgaW4gZnJlZSBrZXJuZWwgYnVpbGQKKworQWRkIG1tYyBidWlsZCBkZWZpbml0aW9u IGluIGZyZWUga2VybmVsIGJ1aWxkCistLS0KKyBtZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9j b2RlYy9oYWwvbWVkaWFfc3Jjcy5jbWFrZSAgICAgICAgICB8IDIgKy0KKyBtZWRpYV9kcml2ZXIv Y21ha2UvbGludXgvbWVkaWFfZmVhdHVyZV9mbGFnc19saW51eC5jbWFrZSAgICAgICB8IDMgKy0t CisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNw cCAgICAgICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfY2ZsL21lZGlhX2ludGVy ZmFjZXNfZzlfY2ZsLmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlf Z2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlh X2ludGVyZmFjZXNfbTlfa2JsL21lZGlhX2ludGVyZmFjZXNfZzlfa2JsLmNwcCAgICAgICAgfCAy ICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfc2tsL21lZGlhX2ludGVyZmFjZXNfZzlfc2ts LmNwcCAgICAgICAgfCAyICstCisgNyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDgg ZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9j b2RlYy9oYWwvbWVkaWFfc3Jjcy5jbWFrZSBiL21lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2Nv ZGVjL2hhbC9tZWRpYV9zcmNzLmNtYWtlCitpbmRleCA4YmIzNmJhZmUuLjc4OTAyYTIyZCAxMDA2 NDQKKy0tLSBhL21lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVjL2hhbC9tZWRpYV9zcmNz LmNtYWtlCisrKysgYi9tZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9oYWwvbWVkaWFf c3Jjcy5jbWFrZQorQEAgLTI3LDcgKzI3LDcgQEAgc2V0KFRNUF8xX0hFQURFUlNfCisgICAgICR7 Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vY29kZWNoYWxfaHdfZzlfWC5oCisgKQorIAorLWlmKCR7 TU1DX1N1cHBvcnRlZH0gU1RSRVFVQUwgInllcyIpCisraWYoJHtNTUNfU3VwcG9ydGVkfSBTVFJF UVVBTCAieWVzIiBBTkQgRU5BQkxFX05PTkZSRUVfS0VSTkVMUyBBTkQgRU5BQkxFX0tFUk5FTFMp CisgICAgIHNldChUTVBfMV9TT1VSQ0VTXworICAgICAgICAgJHtUTVBfMV9TT1VSQ0VTX30KKyAg ICAgICAgICR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vY29kZWNoYWxfbWVtZGVjb21wX2c5LmNw cAorZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZlci9jbWFrZS9saW51eC9tZWRpYV9mZWF0dXJlX2Zs YWdzX2xpbnV4LmNtYWtlIGIvbWVkaWFfZHJpdmVyL2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVf ZmxhZ3NfbGludXguY21ha2UKK2luZGV4IGRlMGNhODUzZi4uODEyMWVhNjBjIDEwMDY0NAorLS0t IGEvbWVkaWFfZHJpdmVyL2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVfZmxhZ3NfbGludXguY21h a2UKKysrKyBiL21lZGlhX2RyaXZlci9jbWFrZS9saW51eC9tZWRpYV9mZWF0dXJlX2ZsYWdzX2xp bnV4LmNtYWtlCitAQCAtMzUsNyArMzUsNiBAQCBpZihOT1QgRU5BQkxFX0tFUk5FTFMgT1IgTk9U IEVOQUJMRV9OT05GUkVFX0tFUk5FTFMpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoSEVWQ19F bmNvZGVfVk1FX1N1cHBvcnRlZCAibm8iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKE1QRUcy X0VuY29kZV9WTUVfU3VwcG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoQ01S VF9IRVZDX0VOQ19GRUlfU3VwcG9ydGVkICJubyIpCistICAgIGJzX3NldF9pZl91bmRlZmluZWQo TU1DX1N1cHBvcnRlZCAibm8iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKFZDMV9EZWNvZGVf U3VwcG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoRGVjb2RlX1Byb2Nlc3Np bmdfU3VwcG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoS2VybmVsX0F1dG9f RGVub2lzZV9TdXBwb3J0ZWQgIm5vIikKK0BAIC00Niw3ICs0NSw2IEBAIGVsc2UoKQorICAgICBi c19zZXRfaWZfdW5kZWZpbmVkKEhFVkNfRW5jb2RlX1ZNRV9TdXBwb3J0ZWQgIiR7RW5jb2RlX1ZN RV9TdXBwb3J0ZWR9IikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChNUEVHMl9FbmNvZGVfVk1F X1N1cHBvcnRlZCAiJHtFbmNvZGVfVk1FX1N1cHBvcnRlZH0iKQorICAgICBic19zZXRfaWZfdW5k ZWZpbmVkKENNUlRfSEVWQ19FTkNfRkVJX1N1cHBvcnRlZCAieWVzIikKKy0gICAgYnNfc2V0X2lm X3VuZGVmaW5lZChNTUNfU3VwcG9ydGVkICJ5ZXMiKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVk KFZDMV9EZWNvZGVfU3VwcG9ydGVkICJ5ZXMiKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKERl Y29kZV9Qcm9jZXNzaW5nX1N1cHBvcnRlZCAieWVzIikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5l ZChLZXJuZWxfQXV0b19EZW5vaXNlX1N1cHBvcnRlZCAieWVzIikKK0BAIC02NCw2ICs2Miw3IEBA IGJzX3NldF9pZl91bmRlZmluZWQoVlA5X0RlY29kZV9TdXBwb3J0ZWQgInllcyIpCisgYnNfc2V0 X2lmX3VuZGVmaW5lZChWUF9TRkNfU3VwcG9ydGVkICJ5ZXMiKQorIGJzX3NldF9pZl91bmRlZmlu ZWQoQ29tbW9uX0VuY29kZV9TdXBwb3J0ZWQgInllcyIpCisgYnNfc2V0X2lmX3VuZGVmaW5lZChN ZWRpYV9TY2FsYWJpbGl0eV9TdXBwb3J0ZWQgInllcyIpCisrYnNfc2V0X2lmX3VuZGVmaW5lZChN TUNfU3VwcG9ydGVkICJ5ZXMiKQorIAorICMgZmVhdHVyZXMgY29udHJvbGxlZCBieSBnbG9iYWwg ZmxhZyBFbmNvZGVfVkRFbmNfU3VwcG9ydGVkCisgYnNfc2V0X2lmX3VuZGVmaW5lZChBVkNfRW5j b2RlX1ZERW5jX1N1cHBvcnRlZCAiJHtFbmNvZGVfVkRFbmNfU3VwcG9ydGVkfSIpCitkaWZmIC0t Z2l0IGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2J4 dC9tZWRpYV9pbnRlcmZhY2VzX2c5X2J4dC5jcHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJm YWNlL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcAor aW5kZXggM2YzMDZlZTJhLi44ZTRjMGY1MzIgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVk aWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlf Ynh0LmNwcAorKysrIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZh Y2VzX205X2J4dC9tZWRpYV9pbnRlcmZhY2VzX2c5X2J4dC5jcHAKK0BAIC0xMzUsNyArMTM1LDcg QEAgTU9TX1NUQVRVUyBNaHdJbnRlcmZhY2VzRzlCeHQ6OkluaXRpYWxpemUoCisgCisgICAgIHJl dHVybiBNT1NfU1RBVFVTX1NVQ0NFU1M7CisgfQorLSNpZmRlZiBfTU1DX1NVUFBPUlRFRAorKyNp ZiBkZWZpbmVkKF9NTUNfU1VQUE9SVEVEKSAmJiBkZWZpbmVkKEVOQUJMRV9LRVJORUxTKSAmJiAh ZGVmaW5lZChfRlVMTF9PUEVOX1NPVVJDRSkKKyBzdGF0aWMgYm9vbCBieHRSZWdpc3RlcmVkTW1k ID0KKyAgICAgTWVkaWFGYWN0b3J5PHVpbnQzMl90LCBNbWREZXZpY2U+OjoKKyAgICAgUmVnaXN0 ZXI8TW1kRGV2aWNlRzlCeHQ+KCh1aW50MzJfdClJR0ZYX0JST1hUT04pOworZGlmZiAtLWdpdCBh L21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9jZmwvbWVk aWFfaW50ZXJmYWNlc19nOV9jZmwuY3BwIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9t ZWRpYV9pbnRlcmZhY2VzX205X2NmbC9tZWRpYV9pbnRlcmZhY2VzX2c5X2NmbC5jcHAKK2luZGV4 IGI4ZmExZWVjMC4uODRlMGZhZDFkIDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2lu dGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2NmbC9tZWRpYV9pbnRlcmZhY2VzX2c5X2NmbC5j cHAKKysrKyBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19t OV9jZmwvbWVkaWFfaW50ZXJmYWNlc19nOV9jZmwuY3BwCitAQCAtNDQsNyArNDQsNyBAQCBzdGF0 aWMgYm9vbCBjZmxSZWdpc3RlcmVkTWh3ID0KKyAgICAgTWVkaWFGYWN0b3J5PHVpbnQzMl90LCBN aHdJbnRlcmZhY2VzPjo6CisgICAgIFJlZ2lzdGVyPE1od0ludGVyZmFjZXNHOUtibD4oKHVpbnQz Ml90KUlHRlhfQ09GRkVFTEFLRSk7CisgCistI2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRl ZmluZWQoX01NQ19TVVBQT1JURUQpICYmIGRlZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZp bmVkKF9GVUxMX09QRU5fU09VUkNFKQorIHN0YXRpYyBib29sIGNmbFJlZ2lzdGVyZWRNbWQgPQor ICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxN bWREZXZpY2VHOUtibD4oKHVpbnQzMl90KUlHRlhfQ09GRkVFTEFLRSk7CitkaWZmIC0tZ2l0IGEv bWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2dsay9tZWRp YV9pbnRlcmZhY2VzX2c5X2dsay5jcHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21l ZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcAoraW5kZXgg ZGU4MWU2MDkxLi4yNjM4Y2IzYTYgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50 ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNw cAorKysrIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205 X2dsay9tZWRpYV9pbnRlcmZhY2VzX2c5X2dsay5jcHAKK0BAIC02NSw3ICs2NSw3IEBAIHN0YXRp YyBib29sIGdsa1JlZ2lzdGVyZWRNaHcgPQorICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1o d0ludGVyZmFjZXM+OjoKKyAgICAgUmVnaXN0ZXI8TWh3SW50ZXJmYWNlc0c5S2JsPigodWludDMy X3QpSUdGWF9HRU1JTklMQUtFKTsKKyAKKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVm aW5lZChfTU1DX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmlu ZWQoX0ZVTExfT1BFTl9TT1VSQ0UpCisgc3RhdGljIGJvb2wgZ2xrUmVnaXN0ZXJlZE1tZCA9Cisg ICAgIE1lZGlhRmFjdG9yeTx1aW50MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1t ZERldmljZUc5S2JsPigodWludDMyX3QpSUdGWF9HRU1JTklMQUtFKTsKK2RpZmYgLS1naXQgYS9t ZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfa2JsL21lZGlh X2ludGVyZmFjZXNfZzlfa2JsLmNwcCBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVk aWFfaW50ZXJmYWNlc19tOV9rYmwvbWVkaWFfaW50ZXJmYWNlc19nOV9rYmwuY3BwCitpbmRleCA5 OWQ3ODYxODUuLjRlOWM2ZTdmMSAxMDA2NDQKKy0tLSBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRl cmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9rYmwvbWVkaWFfaW50ZXJmYWNlc19nOV9rYmwuY3Bw CisrKysgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlf a2JsL21lZGlhX2ludGVyZmFjZXNfZzlfa2JsLmNwcAorQEAgLTEzMSw3ICsxMzEsNyBAQCBNT1Nf U1RBVFVTIE1od0ludGVyZmFjZXNHOUtibDo6SW5pdGlhbGl6ZSgKKyAKKyAgICAgcmV0dXJuIE1P U19TVEFUVVNfU1VDQ0VTUzsKKyB9CistI2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRlZmlu ZWQoX01NQ19TVVBQT1JURUQpICYmIGRlZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZpbmVk KF9GVUxMX09QRU5fU09VUkNFKQorIHN0YXRpYyBib29sIGtibFJlZ2lzdGVyZWRNbWQgPQorICAg ICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxNbWRE ZXZpY2VHOUtibD4oKHVpbnQzMl90KUlHRlhfS0FCWUxBS0UpOworZGlmZiAtLWdpdCBhL21lZGlh X2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9za2wvbWVkaWFfaW50 ZXJmYWNlc19nOV9za2wuY3BwIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9p bnRlcmZhY2VzX205X3NrbC9tZWRpYV9pbnRlcmZhY2VzX2c5X3NrbC5jcHAKK2luZGV4IGUyNTIw ZWRmNy4uNGIwMDEyYzY0IDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFj ZS9tZWRpYV9pbnRlcmZhY2VzX205X3NrbC9tZWRpYV9pbnRlcmZhY2VzX2c5X3NrbC5jcHAKKysr KyBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9za2wv bWVkaWFfaW50ZXJmYWNlc19nOV9za2wuY3BwCitAQCAtMTM5LDcgKzEzOSw3IEBAIE1PU19TVEFU VVMgTWh3SW50ZXJmYWNlc0c5U2tsOjpJbml0aWFsaXplKAorIAorICAgICByZXR1cm4gTU9TX1NU QVRVU19TVUNDRVNTOworIH0KKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5lZChf TU1DX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQoX0ZV TExfT1BFTl9TT1VSQ0UpCisgc3RhdGljIGJvb2wgc2tsUmVnaXN0ZXJlZE1tZCA9CisgICAgIE1l ZGlhRmFjdG9yeTx1aW50MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERldmlj ZUc5U2tsPigodWludDMyX3QpSUdGWF9TS1lMQUtFKTsKKy0tIAorMi40MC4wCisKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvZXhlY2luZm8ucGF0Y2ggYi9z cmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci9wYXRjaGVzL2V4ZWNpbmZvLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWQyMTE5MmQ1YTEuLjAwMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci9wYXRjaGVzL2V4ZWNpbmZvLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsNTggKzAsMCBAQAotRnJvbSBiMTczNTQxNDI1NjNiNDVlMGViZjQyNzQ4NTU5 MTQyNjQ4MTM2OGZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmVybmQgS3VobHMg PGJlcm5kLmt1aGxzQHQtb25saW5lLmRlPgotRGF0ZTogRnJpLCAyOSBKdWwgMjAyMiAxOTo1MToz OSArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggdUNsaWJjIGJ1aWxkCi0KLXVDbGliYyBkb2Vz IG5vdCBwcm92aWRlIGV4ZWNpbmZvLmgKLS0tLQotIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNiArKysrKysKLSAuLi4vbGludXgv Y29tbW9uL29zL29zc2VydmljZS9tb3NfdXRpbGl0aWVzX3NwZWNpZmljLmNwcCAgICB8IDQgKysr KwotIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvQ01h a2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggMDUzOTA0NzQ4Li40YTNmMDg2OWUg MTAwNzU1Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC01 Myw2ICs1MywxMiBAQCBvcHRpb24gKEJVSUxEX0NNUlRMSUIgIkJ1aWxkIGFuZCBJbnN0YWxsIGNt cnRsaWIgdG9nZXRoZXIgd2l0aCBtZWRpYSBkcml2ZXIiIE9OKQotIAotIG9wdGlvbiAoRU5BQkxF X1BST0RVQ1RJT05fS01EICJFbmFibGUgUHJvZHVjdGlvbiBLTUQgaGVhZGVyIGZpbGVzIiBPRkYp Ci0gCi0raW5jbHVkZShDaGVja0luY2x1ZGVGaWxlQ1hYKQotK2NoZWNrX2luY2x1ZGVfZmlsZV9j eHgoImV4ZWNpbmZvLmgiIEhBVkVfRVhFQ0lORk8pCi0raWYgKEhBVkVfRVhFQ0lORk8pCi0rICAg IGFkZF9kZWZpbml0aW9ucygtREhBVkVfRVhFQ0lORk8pCi0rZW5kaWYoKQotKwotIGluY2x1ZGUo R05VSW5zdGFsbERpcnMpCi0gCi0gaWYgKEJVSUxEX0NNUlRMSUIgQU5EIE5PVCBDTUFLRV9XRERN X0xJTlVYKQotZGlmZiAtLWdpdCBhL21lZGlhX3NvZnRsZXQvbGludXgvY29tbW9uL29zL29zc2Vy dmljZS9tb3NfdXRpbGl0aWVzX3NwZWNpZmljLmNwcCBiL21lZGlhX3NvZnRsZXQvbGludXgvY29t bW9uL29zL29zc2VydmljZS9tb3NfdXRpbGl0aWVzX3NwZWNpZmljLmNwcAotaW5kZXggYmRlMjE2 YjgzLi4xMjBiMDJkNTUgMTAwNjQ0Ci0tLS0gYS9tZWRpYV9zb2Z0bGV0L2xpbnV4L2NvbW1vbi9v cy9vc3NlcnZpY2UvbW9zX3V0aWxpdGllc19zcGVjaWZpYy5jcHAKLSsrKyBiL21lZGlhX3NvZnRs ZXQvbGludXgvY29tbW9uL29zL29zc2VydmljZS9tb3NfdXRpbGl0aWVzX3NwZWNpZmljLmNwcAot QEAgLTM0LDcgKzM0LDkgQEAKLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPHVuaXN0 ZC5oPiAgLy8gZm9yawotICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0rI2lmZGVmIEhBVkVfRVhFQ0lO Rk8KLSAjaW5jbHVkZSA8ZXhlY2luZm8uaD4gLy8gYmFja3RyYWNlCi0rI2VuZGlmCi0gI2luY2x1 ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPiAgLy8gZnN0YXQKLSAjaW5j bHVkZSA8c3lzL2lwYy5oPiAgLy8gU3lzdGVtIFYgSVBDCi1AQCAtMjQ3Myw2ICsyNDc1LDcgQEAg dm9pZCBNb3NVdGlsaXRpZXM6Ok1vc1RyYWNlRXZlbnQoCi0gICAgICAgICAgICAgICAgIE1PU19G cmVlTWVtb3J5KHBUcmFjZUJ1Zik7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotKyNpZmRl ZiBIQVZFX0VYRUNJTkZPCi0gICAgICAgICBpZiAobV9tb3NUcmFjZUZpbHRlciAmICgxVUxMIDw8 IFRSX0tFWV9DQUxMX1NUQUNLKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICAvLyByZXNlcnZl IHNwYWNlIGZvciBoZWFkZXIgYW5kIHN0YWNrIHNpemUgZmllbGQuCi1AQCAtMjQ5Miw2ICsyNDk1 LDcgQEAgdm9pZCBNb3NVdGlsaXRpZXM6Ok1vc1RyYWNlRXZlbnQoCi0gICAgICAgICAgICAgICAg IHNpemVfdCByZXQgPSB3cml0ZShNb3NVdGlsaXRpZXNTcGVjaWZpY05leHQ6Om1fbW9zVHJhY2VG ZCwgdHJhY2VCdWYsIG5MZW4pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSsjZW5kaWYK LSAgICAgfQotICAgICByZXR1cm47Ci0gfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1tZWRp YS1kcml2ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci90ZW1wbGF0ZQpp bmRleCAxY2E5NDU2OWUxMTcuLjE3MzViOTBjNjVjZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9pbnRl bC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIv dGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpbnRlbC1tZWRp YS1kcml2ZXInCiBwa2duYW1lPWludGVsLW1lZGlhLWRyaXZlcgotdmVyc2lvbj0yMi41LjMKK3Zl cnNpb249MjIuNi40CiByZXZpc2lvbj0xCiBhcmNocz0ieDg2XzY0KiIKIGJ1aWxkX3N0eWxlPWNt YWtlCkBAIC0xMiw3ICsxMiw3IEBAIG1haW50YWluZXI9IlN0ZWZhbm8gUmFnbmkgPHN0M3I0Z0Bw cm90b25tYWlsLmNvbT4iCiBsaWNlbnNlPSJNSVQsIEJTRC0zLUNsYXVzZSIKIGhvbWVwYWdlPSJo dHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyIgogZGlzdGZpbGVzPSJodHRwczov L2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyL2FyY2hpdmUvaW50ZWwtbWVkaWEtJHt2ZXJz aW9ufS50YXIuZ3oiCi1jaGVja3N1bT02NTY1MmIzNjVkNDhiZTNjOWYwYjNjNTYxNTAyOTUyYjky ZWU1ZmNjNTg3NTIwYjg4ZDBkNzUyY2YyYTZhM2I1CitjaGVja3N1bT0wYzA0YjlkNzRiOTJkZTQx ZmQ0MDliNjI5MTNjZTRhZmQ3OTkyMzZjMGI2YmMxOTgzYTQ5Njk5MDc2NGU1ZDkwCiAKIGJ1aWxk X29wdGlvbnM9Im5vbmZyZWUiCiBkZXNjX29wdGlvbl9ub25mcmVlPSJFbmFibGUgbm9uZnJlZSBr ZXJuZWxzIgoKRnJvbSBlNjBlZWIzZDE1N2ViZWE1YzQ0YmY1ODUzMjZjMTQ3MDVmZjI1ZmEzIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBGcmksIDE2IERlYyAyMDIyIDA5OjMxOjQzIC0wNTAwClN1YmplY3Q6IFtQQVRDSCAxMDIv MTMwXSBOZXcgcGFja2FnZTogb25ldnBsLTIwMjMuMS4yCgotLS0KIGNvbW1vbi9zaGxpYnMgICAg ICAgICAgIHwgIDEgKwogc3JjcGtncy9vbmV2cGwtZGV2ZWwgICAgfCAgMSArCiBzcmNwa2dzL29u ZXZwbC90ZW1wbGF0ZSB8IDM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMg ZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3Br Z3Mvb25ldnBsLWRldmVsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9vbmV2cGwvdGVtcGxh dGUKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3NobGlicwppbmRleCBkMGQz MjhiMDllZjkuLmRiYzJkYmYyNWQzZCAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGlicworKysgYi9j b21tb24vc2hsaWJzCkBAIC04NzksNiArODc5LDcgQEAgbGlid2VicC5zby43IGxpYndlYnAtMC42 LjBfMQogbGlid2VicG11eC5zby4zIGxpYndlYnAtMC42LjBfMQogbGlid2VicGRlbXV4LnNvLjIg bGlid2VicC0wLjUuMF8xCiBsaWJ3ZWJwZGVjb2Rlci5zby4zIGxpYndlYnAtMC42LjBfMQorbGli dnBsLnNvLjIgb25ldnBsLTIwMjMuMS4yXzEKIGxpYnZhLXgxMS5zby4yIGxpYnZhLTIuMTMuMF8x CiBsaWJ2YS5zby4yIGxpYnZhLTIuMTMuMF8xCiBsaWJ2YS1nbHguc28uMiBsaWJ2YS1nbHgtMi4x My4wXzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb25ldnBsLWRldmVsIGIvc3JjcGtncy9vbmV2cGwt ZGV2ZWwKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi5lMjMwNjUwMGI0 ODcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL29uZXZwbC1kZXZlbApAQCAtMCwwICsxIEBA CitvbmV2cGwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dz L29uZXZwbC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODVjN2MyZGE4NWNlCi0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9vbmV2cGwvdGVtcGxhdGUKQEAgLTAsMCArMSwzNCBAQAorIyBUZW1wbGF0ZSBm aWxlIGZvciAnb25ldnBsJworcGtnbmFtZT1vbmV2cGwKK3ZlcnNpb249MjAyMy4xLjIKK3Jldmlz aW9uPTEKK2FyY2hzPSJ4ODZfNjQqIgorYnVpbGRfc3R5bGU9Y21ha2UKK2NvbmZpZ3VyZV9hcmdz PSIKKwktRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSAtV25vLWRldgorCS1EQlVJTERfUFlUSE9O X0JJTkRJTkc6Qk9PTD0nT0ZGJworCS1EQlVJTERfRVhBTVBMRVM6Qk9PTD0nT0ZGJworCS1EQlVJ TERfVEVTVFM6Qk9PTD0nT04nCisJLURJTlNUQUxMX0VYQU1QTEVfQ09ERTpCT09MPSdPRkYnIgor aG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBsaWJYMTEgcHl0aG9uIHdheWxhbmQtcHJvdG9jb2xzIHBr Zy1jb25maWciCittYWtlZGVwZW5kcz0ibGlidmEtZGV2ZWwgbGliWDExLWRldmVsIHdheWxhbmQt ZGV2ZWwiCitzaG9ydF9kZXNjPSJJbnRlbCBvbmVBUEkgVmlkZW8gUHJvY2Vzc2luZyBsaWJyYXJ5 IgorbWFpbnRhaW5lcj0iemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4iCitsaWNlbnNlPSJNSVQi Citob21lcGFnZT0iaHR0cHM6Ly93d3cuaW50ZWwuY29tL2NvbnRlbnQvd3d3L3VzL2VuL2RldmVs b3Blci90b29scy9vbmVhcGkvb25ldnBsLmh0bWwiCitkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHVi LmNvbS9vbmVhcGktc3JjL29uZVZQTC9hcmNoaXZlL3Yke3ZlcnNpb259LyR7cGtnbmFtZX0tJHt2 ZXJzaW9ufS50YXIuZ3oiCitjaGVja3N1bT1iMjI2MWNjYTE3NGNlMTgxNWYzZDQ3YzY0NzkyMWFi MTdmNjgyNjdjNjljMWUyNDQ0ZmYyN2FhYjdkMTk5Y2JiCisKK3Bvc3RfaW5zdGFsbCgpIHsKKwl2 bGljZW5zZSBMSUNFTlNFCit9CisKK29uZXZwbC1kZXZlbF9wYWNrYWdlKCkgeworCWRlcGVuZHM9 IiR7bWFrZWRlcGVuZHN9ICR7c291cmNlcGtnfS0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNo b3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1v dmUgdXNyL2luY2x1ZGUKKwkJdm1vdmUgdXNyL2xpYi9wa2djb25maWcKKwkJdm1vdmUgInVzci9s aWIvKi5zbyIKKwl9Cit9CgpGcm9tIDM4YzE0ZTg0ZmM2MWEyMjlkN2YyYmFmZDRiZjU4ZDhlZDhm YTBlY2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IEZyaSwgMTYgRGVjIDIwMjIgMTU6Mjc6MDQgLTA1MDAKU3ViamVjdDogW1BB VENIIDEwMy8xMzBdIE5ldyBwYWNrYWdlOiBvbmV2cGwtaW50ZWwtZ3B1LTIyLjYuNAoKLS0tCiBz cmNwa2dzL29uZXZwbC1pbnRlbC1ncHUtZGV2ZWwgICAgfCAgMSArCiBzcmNwa2dzL29uZXZwbC1p bnRlbC1ncHUvdGVtcGxhdGUgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmls ZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3Mv b25ldnBsLWludGVsLWdwdS1kZXZlbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvb25ldnBs LWludGVsLWdwdS90ZW1wbGF0ZQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb25ldnBsLWludGVsLWdw dS1kZXZlbCBiL3NyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS1kZXZlbApuZXcgZmlsZSBtb2RlIDEy MDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjQ3OTIwY2VlY2Y5MQotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS1kZXZlbApAQCAtMCwwICsxIEBACitvbmV2cGwtaW50 ZWwtZ3B1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9v bmV2cGwtaW50ZWwtZ3B1L3RlbXBsYXRlIGIvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1L3RlbXBs YXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjE0YWNiNzI4YTU0 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1L3RlbXBsYXRlCkBA IC0wLDAgKzEsMjcgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ29uZXZwbC1pbnRlbC1ncHUnCitw a2duYW1lPW9uZXZwbC1pbnRlbC1ncHUKK3ZlcnNpb249MjIuNi40CityZXZpc2lvbj0xCithcmNo cz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iLVduby1kZXYg LURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCitob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1j b25maWciCittYWtlZGVwZW5kcz0ibGliZHJtLWRldmVsIGxpYnZhLWRldmVsIG9uZXZwbC1kZXZl bCIKK3Nob3J0X2Rlc2M9IlJ1bnRpbWUgaW1wbGVtZW50YXRpb24gb2Ygb25lVlBMIEFQSSBmb3Ig SW50ZWwgR2VuIEdQVXMiCittYWludGFpbmVyPSJ6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPiIK K2xpY2Vuc2U9Ik1JVCIKK2hvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9v bmVWUEwtaW50ZWwtZ3B1IgorY2hhbmdlbG9nPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNy Yy9vbmVWUEwtaW50ZWwtZ3B1L2Jsb2IvbWFpbi9DSEFOR0VMT0cubWQiCitkaXN0ZmlsZXM9Imh0 dHBzOi8vZ2l0aHViLmNvbS9vbmVhcGktc3JjL29uZVZQTC1pbnRlbC1ncHUvYXJjaGl2ZS9yZWZz L3RhZ3MvaW50ZWwtb25ldnBsLSR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09NzRiMDk3OWRj YjJhZjFiN2M2OGVkYjhjYmNiMDJkNTM5ZGU1MTEwOTBiMTJmYWM1MDY1MmNiYWNkNzA3YzRlNgor Citwb3N0X2luc3RhbGwoKSB7CisJdmxpY2Vuc2UgTElDRU5TRQorfQorCitvbmV2cGwtaW50ZWwt Z3B1LWRldmVsX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVz IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCX0KK30KCkZy b20gZjIxODMxMDQwN2Y5OGM1ZWMzZDVlMDQyZDdkYTA1YzgwZTYwNDQ1NiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAx OCBEZWMgMjAyMiAwMTo0MDoxNSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTA0LzEzMF0gaWd0LWdw dS10b29sczogdXBkYXRlIHRvIHZlcnNpb24gMS4yNyByZXZidW1wIGlkawogcmVtb3ZlCgotLS0K IC4uLi1sb2FkaW5nLWZhaWx1cmUtaW4tcmVzb2x2ZS1mdW5jdGlvbi5wYXRjaCB8IDYzIC0tLS0t LS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvaWd0LWdwdS10b29scy9wYXRjaGVzL211c2wucGF0Y2gg ICAgICB8IDIwICsrKysrKwogc3JjcGtncy9pZ3QtZ3B1LXRvb2xzL3RlbXBsYXRlICAgICAgICAg ICAgICAgIHwgIDQgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgNjUgZGVs ZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pZ3QtZ3B1LXRvb2xzL3BhdGNo ZXMvaS1nLXQtRml4LWdsb2JhbC1zeW1ib2wtbG9hZGluZy1mYWlsdXJlLWluLXJlc29sdmUtZnVu Y3Rpb24ucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lndC1ncHUtdG9vbHMvcGF0Y2hlcy9p LWctdC1GaXgtZ2xvYmFsLXN5bWJvbC1sb2FkaW5nLWZhaWx1cmUtaW4tcmVzb2x2ZS1mdW5jdGlv bi5wYXRjaCBiL3NyY3BrZ3MvaWd0LWdwdS10b29scy9wYXRjaGVzL2ktZy10LUZpeC1nbG9iYWwt c3ltYm9sLWxvYWRpbmctZmFpbHVyZS1pbi1yZXNvbHZlLWZ1bmN0aW9uLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzNiNTU0ZDk5NDkuLjAwMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL2lndC1ncHUtdG9vbHMvcGF0Y2hlcy9pLWctdC1GaXgtZ2xvYmFsLXN5bWJvbC1sb2Fk aW5nLWZhaWx1cmUtaW4tcmVzb2x2ZS1mdW5jdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDYzICswLDAgQEAKLWRpZmYgLS1naXQgbGliL2lndF9oYWxmZmxvYXQuYyBsaWIvaWd0X2hhbGZm bG9hdC5jCi1pbmRleCAwOGFiMDVmYy4uZTVlOGE1YmQgMTAwNjQ0Ci0tLS0gYS9saWIvaWd0X2hh bGZmbG9hdC5jCi0rKysgYi9saWIvaWd0X2hhbGZmbG9hdC5jCi1AQCAtMjQsNiArMjQsMTkgQEAK LSAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8 c3RkYm9vbC5oPgotKwotKyNpZmRlZiBIQVZFX0NQVUlEX0gKLSsjaW5jbHVkZSA8Y3B1aWQuaD4K LSsjZWxzZQotKyNkZWZpbmUgX19nZXRfY3B1aWRfbWF4KHgsIHkpIDAKLSsjZGVmaW5lIF9fY3B1 aWQobGV2ZWwsIGEsIGIsIGMsIGQpIGEgPSBiID0gYyA9IGQgPSAwCi0rI2RlZmluZSBfX2NwdWlk X2NvdW50KGxldmVsLCBjb3VudCwgYSwgYiwgYywgZCkgYSA9IGIgPSBjID0gZCA9IDAKLSsjZW5k aWYKLSsKLSsjaWZuZGVmIGJpdF9GMTZDCi0rI2RlZmluZSBiaXRfRjE2QwkoMSA8PCAyOSkKLSsj ZW5kaWYKLSAKLSAjaW5jbHVkZSAiaWd0X2hhbGZmbG9hdC5oIgotICNpbmNsdWRlICJpZ3RfeDg2 LmgiCi1AQCAtMTgyLDYgKzE5NSwyMCBAQCBzdGF0aWMgdm9pZCBoYWxmX3RvX2Zsb2F0X2YxNmMo Y29uc3QgdWludDE2X3QgKmgsIGZsb2F0ICpmLCB1bnNpZ25lZCBpbnQgbnVtKQotIAotICNwcmFn bWEgR0NDIHBvcF9vcHRpb25zCi0gCi0rc3RhdGljIGJvb2wgZjE2Y19pc19zdXBwb3J0ZWQodm9p ZCkKLSt7Ci0rCXVuc2lnbmVkIG1heCA9IF9fZ2V0X2NwdWlkX21heCgwLCBOVUxMKTsKLSsJdW5z aWduZWQgZWF4LCBlYngsIGVjeCwgZWR4OwotKwotKwlpZiAobWF4ID49IDEpIHsKLSsJCV9fY3B1 aWQoMSwgZWF4LCBlYngsIGVjeCwgZWR4KTsKLSsKLSsJCWlmIChlY3ggJiBiaXRfRjE2QykKLSsJ CQlyZXR1cm4gdHJ1ZTsKLSsJfQotKwlyZXR1cm4gZmFsc2U7Ci0rfQotKwotIHN0YXRpYyB2b2lk IGZsb2F0X3RvX2hhbGYoY29uc3QgZmxvYXQgKmYsIHVpbnQxNl90ICpoLCB1bnNpZ25lZCBpbnQg bnVtKQotIHsKLSAJZm9yIChpbnQgaSA9IDA7IGkgPCBudW07IGkrKykKLUBAIC0xOTYsNyArMjIz LDcgQEAgc3RhdGljIHZvaWQgaGFsZl90b19mbG9hdChjb25zdCB1aW50MTZfdCAqaCwgZmxvYXQg KmYsIHVuc2lnbmVkIGludCBudW0pCi0gCi0gc3RhdGljIHZvaWQgKCpyZXNvbHZlX2Zsb2F0X3Rv X2hhbGYodm9pZCkpKGNvbnN0IGZsb2F0ICpmLCB1aW50MTZfdCAqaCwgdW5zaWduZWQgaW50IG51 bSkKLSB7Ci0tCWlmIChpZ3RfeDg2X2ZlYXR1cmVzKCkgJiBGMTZDKQotKwlpZiAoZjE2Y19pc19z dXBwb3J0ZWQoKSkKLSAJCXJldHVybiBmbG9hdF90b19oYWxmX2YxNmM7Ci0gCi0gCXJldHVybiBm bG9hdF90b19oYWxmOwotQEAgLTIwNyw3ICsyMzQsNyBAQCB2b2lkIGlndF9mbG9hdF90b19oYWxm KGNvbnN0IGZsb2F0ICpmLCB1aW50MTZfdCAqaCwgdW5zaWduZWQgaW50IG51bSkKLSAKLSBzdGF0 aWMgdm9pZCAoKnJlc29sdmVfaGFsZl90b19mbG9hdCh2b2lkKSkoY29uc3QgdWludDE2X3QgKmgs IGZsb2F0ICpmLCB1bnNpZ25lZCBpbnQgbnVtKQotIHsKLS0JaWYgKGlndF94ODZfZmVhdHVyZXMo KSAmIEYxNkMpCi0rCWlmIChmMTZjX2lzX3N1cHBvcnRlZCgpKQotIAkJcmV0dXJuIGhhbGZfdG9f ZmxvYXRfZjE2YzsKLSAKLSAJcmV0dXJuIGhhbGZfdG9fZmxvYXQ7CmRpZmYgLS1naXQgYS9zcmNw a2dzL2lndC1ncHUtdG9vbHMvcGF0Y2hlcy9tdXNsLnBhdGNoIGIvc3JjcGtncy9pZ3QtZ3B1LXRv b2xzL3BhdGNoZXMvbXVzbC5wYXRjaAppbmRleCA2MTVhZmRiOGY4ZWEuLjRkZTZlMGNmZDg5OCAx MDA2NDQKLS0tIGEvc3JjcGtncy9pZ3QtZ3B1LXRvb2xzL3BhdGNoZXMvbXVzbC5wYXRjaAorKysg Yi9zcmNwa2dzL2lndC1ncHUtdG9vbHMvcGF0Y2hlcy9tdXNsLnBhdGNoCkBAIC0xOTEsNiArMTkx LDcgQEAgaW5kZXggNzQ5MzU0MzAuLjBkYzg3ZDhjIDEwMDY0NAogKysrIGIvdGVzdHMvaTkxNS9p OTE1X3BtX3JwbS5jCiBAQCAtMjcsNiArMjcsNyBAQAogIAorPDw8PDw8PCBIRUFECiAgI2luY2x1 ZGUgImNvbmZpZy5oIgogIAogKyNpbmNsdWRlIDxsaW1pdHMuaD4gLy8gUEFUSF9NQVgKQEAgLTI5 MywzICsyOTQsMjIgQEAgaW5kZXggMGZhZjNmYzguLmY2YmQ5NzBlIDEwMDY0NAogICNpbmNsdWRl IDxzdGRpby5oPgogICNpbmNsdWRlIDxzdHJpbmcuaD4KICAjaW5jbHVkZSA8c3RkbGliLmg+Cis9 PT09PT09CisgICAgICAgICBmYm8gPSBiby0+bWFwOworbGliL2lvY3RsX3dyYXBwZXJzLmMubmV3 CistLS0gYS9iZW5jaG1hcmtzL2dlbV9leGVjX3RyYWNlci5jCTIwMjItMTItMTggMTA6MzI6MTUu NzQyMzQxOTY0IC0wNTAwCisrKysgYi9iZW5jaG1hcmtzL2dlbV9leGVjX3RyYWNlci5jCTIwMjIt MTItMTggMTA6MzI6MDkuODYyMjExMzcyIC0wNTAwCitAQCAtMjc1LDcgKzI3NSwxMSBAQAorICAg ICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0VYRUNCVUZGRVIyLCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyKQorIAorIGludAorKyNpZiBkZWZpbmVkKF9f R0xJQkNfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyBpb2N0bChpbnQgZmQsIHVuc2lnbmVk IGxvbmcgcmVxdWVzdCwgLi4uKQorKyNlbHNlCisraW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCwg Li4uKQorKyNlbmRpZgorIHsKKyAJc3RydWN0IHRyYWNlICp0LCAqKnA7CisgCXZhX2xpc3QgYXJn czsKKworPj4+Pj4+PiA2MDMwMWFlMDJmIChpZ3QtZ3B1LXRvb2xzOiB1cGRhdGUgdG8gdmVyc2lv biAxLjI2KQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pZ3QtZ3B1LXRvb2xzL3RlbXBsYXRlIGIvc3Jj cGtncy9pZ3QtZ3B1LXRvb2xzL3RlbXBsYXRlCmluZGV4IDIyNWUyYzc5MTE4YS4uMTM3NmMzOWQ1 ZDViIDEwMDY0NAotLS0gYS9zcmNwa2dzL2lndC1ncHUtdG9vbHMvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9pZ3QtZ3B1LXRvb2xzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnaWd0LWdwdS10b29scycKIHBrZ25hbWU9aWd0LWdwdS10b29scwogdmVyc2lvbj0x LjI3LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1 cmVfYXJncz0iLURiX25kZWJ1Zz1mYWxzZSAtRGRvY3M9ZGlzYWJsZWQiCiBob3N0bWFrZWRlcGVu ZHM9InBrZy1jb25maWcgZmxleCBwZWcgcHl0aG9uMy1kb2N1dGlscyIKQEAgLTEzLDcgKzEzLDcg QEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9 Ik1JVCIKIGhvbWVwYWdlPSJodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL2lndC1n cHUtdG9vbHMiCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0v aWd0LWdwdS10b29scy8tL3Jhdy9tYXN0ZXIvTkVXUyIKLWRpc3RmaWxlcz0iJHtYT1JHX1NJVEV9 L2FwcC9pZ3QtZ3B1LXRvb2xzLSR7dmVyc2lvbn0udGFyLnh6IgorZGlzdGZpbGVzPSIke1hPUkdf U0lURX0vYXBwLyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIueHoiCiBjaGVja3N1bT05M2I5YTQ4 MTZlZDIyYjUxNDViYjYxMDI0MzE0YzhhNjVjYWVlYTk5MWNlOTMwMjc2NDNmMWQ0MDcyM2JmNDE3 CiAjIHRlc3RzIGRvbid0IGJlaGF2ZSBpbiBjb250YWluZXJzCiBtYWtlX2NoZWNrPWNpLXNraXAK CkZyb20gNjRhNzUxYmViYmE3YzhjNzU0ZWVmOGY5NDhhYzIwNjIwMTgyNDU2OCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9u LCAzIEFwciAyMDIzIDIzOjMwOjI4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDUvMTMwXSBmcmVl Y2FkOiByZXZidW1wIGZvciBxdDUtd2ViZW5naW5lLTUuMTUuMTMKCi0tLQogc3JjcGtncy9mcmVl Y2FkL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlIGIvc3JjcGtn cy9mcmVlY2FkL3RlbXBsYXRlCmluZGV4IGY2MjAyM2VlOGNlNC4uZTMwMWYzMmQzNTQwIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mcmVlY2FkL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZnJlZWNhZCcKIHBr Z25hbWU9ZnJlZWNhZAogdmVyc2lvbj0wLjIwLjIKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1 aWxkX3N0eWxlPWNtYWtlCiAKIF9pbnN0X3ByZWZpeD0vdXNyL2xpYi8ke3BrZ25hbWV9CgpGcm9t IGM3ZTIxODVjMWU3ZDg0M2VlNjAzOTk5NTIwZGY5MzJiZjIwZmM0MGYgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMyBB cHIgMjAyMyAyMzozMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTA2LzEzMF0gc2hvdGN1dDog cmV2YnVtcCBmb3IgbWx0Ny03LjE0LjAKCi0tLQogc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlIGIvc3JjcGtncy9zaG90Y3V0L3RlbXBs YXRlCmluZGV4IDMyNTgzMjc3ZGFiMi4uOGQ4YTdhMGViZGViIDEwMDY0NAotLS0gYS9zcmNwa2dz L3Nob3RjdXQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2hvdGN1dCcKIHBrZ25hbWU9c2hvdGN1dAog dmVyc2lvbj0yMi4xMi4yMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21h a2UKIGNvbmZpZ3VyZV9hcmdzPSItRFNIT1RDVVRfVkVSU0lPTj0ke3ZlcnNpb259IgogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS10b29scy1kZXZlbCIKCkZyb20gNGM0NjhlZDQ3OWRj N2U5NDk1NDk5OWU1OTlhYTJjMzRjZGMwOWI0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAzIEFwciAyMDIzIDIzOjMz OjMwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDcvMTMwXSBzaGlib2tlbjI6IHJldmJ1bXAgZm9y IHF0NS01LjE1LjgKCi0tLQogc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFj aGluZXJ5LWJ5cGFzcy5wYXRjaCB8IDEgKwogc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9z aGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaAoKZGlmZiAt LWdpdCBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBh c3MucGF0Y2ggYi9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnkt YnlwYXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uZWZj ZjMyNDliZDg4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9p bXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApAQCAtMCwwICsxIEBACisuLi8uLi9weXRo b24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3Rl bXBsYXRlIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKaW5kZXggMDg0ZWNjM2JhMWUxLi4y YTIxOTk4OTk3ZWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnc2hpYm9rZW4yJwogcGtnbmFtZT1zaGlib2tlbjIKIHZlcnNpb249NS4xNS43Ci1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfcGtnbmFtZT0icHlzaWRlLXNldHVwLW9wZW5zb3VyY2Ut c3JjLSR7dmVyc2lvbn0iCiBidWlsZF93cmtzcmM9InNvdXJjZXMvc2hpYm9rZW4yIgogYnVpbGRf c3R5bGU9Y21ha2UKCkZyb20gMzU4NWYyMTU0ZThlODc2ZTJkYjBjOThlZDJiNWQ5NWVhMzk1MWU1 YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogTW9uLCAzIEFwciAyMDIzIDIzOjMzOjUzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAx MDgvMTMwXSBweXRob24zLXB5c2lkZTI6IHVwZGF0ZSB0byA1LjE1LjgKCi0tLQogLi4uL3BhdGNo ZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggICAgICB8IDE1ICsrKysrKysrKysr KysrKwogc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUgICAgICAgICAgICAgICAgICB8 ICA5ICsrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNo ZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dz L3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNo IGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5 cGFzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY0YzQy OTU4NDc3NgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNo ZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKQEAgLTAsMCArMSwxNSBAQAorVXNp bmcgdGhpcyBwcmV2ZW50cyBhbiBlcnJvciBhcm91bmQgbGluZSAyMjAgYmVsb3cgaXQuCisiQXR0 cmlidXRlRXJyb3I6IG1vZHVsZSAnaW1wb3J0bGliJyBoYXMgbm8gYXR0cmlidXRlICdtYWNoaW5l cnknIgorVGhlIG9sZCBiYWNrdXAgbG9naWMgaXMgaW4gcGxhY2UgYW5kIGNvbXBpbGVzIHdpdGhv dXQgaXNzdWVzLgorLS0tIGEvc291cmNlcy9zaGlib2tlbjIvbGlic2hpYm9rZW4vZW1iZWQvc2ln bmF0dXJlX2Jvb3RzdHJhcC5weQkyMDIzLTA0LTAyIDIzOjA5OjM0LjY4ODkxMjQwMiAtMDQwMAor KysrIGIvc291cmNlcy9zaGlib2tlbjIvbGlic2hpYm9rZW4vZW1iZWQvc2lnbmF0dXJlX2Jvb3Rz dHJhcC5weQkyMDIzLTA0LTAyIDIzOjEwOjAzLjM5NTUyOTU4MiAtMDQwMAorQEAgLTE3MCw5ICsx NzAsNiBAQAorCisgICAgICMgJ3ppcHN0cmluZ19zZXF1ZW5jZScgY29tZXMgZnJvbSBzaWduYXR1 cmUuY3BwCisgICAgIHppcGJ5dGVzID0gYmFzZTY0LmI2NGRlY29kZSgnJy5qb2luKHppcHN0cmlu Z19zZXF1ZW5jZSkpCistICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPj0gMzoKKy0gICAgICAg IHZ6aXAgPSB6aXBmaWxlLlppcEZpbGUoaW8uQnl0ZXNJTyh6aXBieXRlcykpCistICAgICAgICBy ZXR1cm4gc3lzLm1ldGFfcGF0aCwgRW1iZWRkYWJsZVppcEltcG9ydGVyKHZ6aXApCisKKyAgICAg IyBPbGQgdmVyc2lvbiBmb3IgUHl0aG9uIDIuNywgb25seS4KKyAgICAgaW1wb3J0IG9zCmRpZmYg LS1naXQgYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHl0aG9u My1weXNpZGUyL3RlbXBsYXRlCmluZGV4IDUwZTZmZjI2MGQzYi4uYjUwZTYyYmQyMTVkIDEwMDY0 NAotLS0gYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3B5 dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMiBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAncHl0aG9uMy1weXNpZGUyJwogcGtnbmFtZT1weXRob24zLXB5c2lkZTIKLXZlcnNpb249 NS4xNS41Ci1yZXZpc2lvbj0yCit2ZXJzaW9uPTUuMTUuOAorcmV2aXNpb249MQogX3BrZ25hbWU9 InB5c2lkZS1zZXR1cC1vcGVuc291cmNlLXNyYy0ke3ZlcnNpb259IgogYnVpbGRfd3Jrc3JjPSJz b3VyY2VzL3B5c2lkZTIiCiBidWlsZF9zdHlsZT1jbWFrZQotY29uZmlndXJlX2FyZ3M9Ii1EUFlU SE9OX0VYRUNVVEFCTEU9L3Vzci9iaW4vcHl0aG9uIgorY29uZmlndXJlX2FyZ3M9Ii1EUFlUSE9O X0VYRUNVVEFCTEU9L3Vzci9iaW4vcHl0aG9uIC1EQ01BS0VfQlVJTERfVFlQRT1Ob25lCisgLURC VUlMRF9URVNUUz1PRkYiCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHB5dGhvbjMgc2hpYm9rZW4y IgogbWFrZWRlcGVuZHM9InB5dGhvbjMtZGV2ZWwgbGlic2hpYm9rZW4yLWRldmVsIHF0NS1kZXZl bAogIHF0NS1tdWx0aW1lZGlhLWRldmVsIHF0NS10b29scy1kZXZlbCBxdDUtcGx1Z2luLW15c3Fs IHF0NS1wbHVnaW4tb2RiYwpAQCAtMjMsNyArMjQsNyBAQCBtYWludGFpbmVyPSJ5b3BpdG8gPHBp ZXJyZS5ib3VyZ2luQGZyZWUuZnI+IgogbGljZW5zZT0iTEdQTC0zLjAtb3ItbGF0ZXIiCiBob21l cGFnZT0iaHR0cHM6Ly93aWtpLnF0LmlvL1F0X2Zvcl9QeXRob24iCiBkaXN0ZmlsZXM9Imh0dHBz Oi8vZG93bmxvYWQucXQuaW8vb2ZmaWNpYWxfcmVsZWFzZXMvUXRGb3JQeXRob24vcHlzaWRlMi9Q eVNpZGUyLSR7dmVyc2lvbn0tc3JjLyR7X3BrZ25hbWV9LnRhci54eiIKLWNoZWNrc3VtPTM5MjBh NGZiMzUzMzAwMjYwYzliYzQ2ZmY3MGYxZmI5NzVjNWU3ZWZhMjJlOWQ1MTIyMjU4ODkyOGNlMTli MzMKK2NoZWNrc3VtPTIzNDM2MzAyYzhkZWI1YjRjYmM3NjliMjA1ZDA5NjA0ZTM4YmE4M2I0MDcw OGVmY2NiN2JkOGM5YWY2ZjZiNWQKIAogYnVpbGRfb3B0aW9ucz0id2ViZW5naW5lIgogZGVzY19v cHRpb25fd2ViZW5naW5lPSJCdWlsZCBRdDUgV2ViRW5naW5lIGJpbmRpbmdzIgoKRnJvbSAzYTc5 ZWIwMmMxMDlhMTc1MjdlMTkzYTg2MzA5NDQ3NDJmMjllZGMwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXByIDIw MjMgMTE6MTQ6MzUgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwOS8xMzBdIGtvbnF1ZXJvcjogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZSB8IDQg KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZSBiL3NyY3BrZ3Mva29ucXVlcm9y L3RlbXBsYXRlCmluZGV4IGQ4ZDBlNzNhNzhhYi4uYzViZGJhNjAxZDNjIDEwMDY0NAotLS0gYS9z cmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0 ZQpAQCAtMSwxMSArMSwxMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna29ucXVlcm9yJwogcGtn bmFtZT1rb25xdWVyb3IKIHZlcnNpb249MjMuMDQuMAotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRERFU0tUT1BUT0pTT05fRVhFQ1VU QUJMRT0vdXNyL2Jpbi9kZXNrdG9wdG9qc29uIgogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFr ZS1tb2R1bGVzIHB5dGhvbjMgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIGtkb2N0b29scwota2Nv cmVhZGRvbnMga2NvbmZpZyBnZXR0ZXh0IgorIGtjb3JlYWRkb25zIGtjb25maWcgZ2V0dGV4dCIK IG1ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LXdlYmVuZ2luZS1kZXZlbCBxdDUtZGVjbGFyYXRp dmUtZGV2ZWwKICBxdDUtd2ViY2hhbm5lbC1kZXZlbCBxdDUtbG9jYXRpb24tZGV2ZWwga2NtdXRp bHMtZGV2ZWwga2RlbGliczRzdXBwb3J0LWRldmVsCiAga2FyY2hpdmUtZGV2ZWwga2h0bWwtZGV2 ZWwga2Rlc3UtZGV2ZWwga2FjdGl2aXRpZXM1LWRldmVsIgoKRnJvbSA4YjY1NmQ3MjRiZDE3NDYw MGQ4ZTQwYTZhNzIwYzk3ODE0MWI3NjhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTE6MTQ6NTgg LTA0MDAKU3ViamVjdDogW1BBVENIIDExMC8xMzBdIHF0NS1zcGVlY2g6IHJldmJ1bXAgZm9yIHF0 NS01LjE1LjgKCi0tLQogc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCmlu ZGV4IDNlY2QxMGQ1MDY1MC4uMmQ3ZDRkNGQyNDUzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS1z cGVlY2gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1LXNwZWVjaCcKIHBrZ25hbWU9cXQ1LXNw ZWVjaAogdmVyc2lvbj01LjE1LjcKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIF9jb21taXQ9ZDMy ZjRhNDc5ZDM4YTExZjU0NzU5ODAwNGI5NzVmNDM1NjQyNGExNgogYnVpbGRfc3R5bGU9cW1ha2UK IGNvbmZpZ3VyZV9hcmdzPSItLSAtZmxpdGUgLWZsaXRlLWFsc2EgLXNwZWVjaGQiCgpGcm9tIDE4 NDFkZDkyODY5MGQ1ZGEyZTIzYjE2YTUxYzAxMzk1MjMxNzgzN2EgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIg MjAyMyAxODozODo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTExLzEzMF0gcXQ1LXN0eWxlcGx1 Z2luczogcmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0tCiBzcmNwa2dzL3F0NS1zdHlsZXBsdWdp bnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUg Yi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKaW5kZXggOTZlZDk3ZDEyY2QyLi4z MGQ5MzY2MGEyYTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUtc3R5bGVwbHVnaW5zJwogcGtnbmFtZT1xdDUtc3R5 bGVwbHVnaW5zCiB2ZXJzaW9uPTUuMC4wCi1yZXZpc2lvbj0yMAorcmV2aXNpb249MjEKIF9naXRy ZXY9MzM1ZGJlY2UxMDNlMmNiZjZjN2NmODE5YWI2NjcyYzI5NTZiMTdiMwogYnVpbGRfc3R5bGU9 cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1h a2UiCgpGcm9tIDJjMmYwZjNiNGVhMjc5ODI3OTcwOGFjYjcxYWQxMmZhODY1ZmNmMmIgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFRodSwgMjcgQXByIDIwMjMgMjE6NTg6MzUgLTA0MDAKU3ViamVjdDogW1BBVENIIDExMi8xMzBd IGJsZW5kZXI6IHVwZGF0ZSB0byAzLjUuMQoKLS0tCiBzcmNwa2dzL2JsZW5kZXIvcGF0Y2hlcy9u dW1weS0yLjI0LnBhdGNoIHwgMjIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9ibGVu ZGVyL3RlbXBsYXRlICAgICAgICAgICAgICAgICB8IDEzICsrKysrKystLS0tLS0KIDIgZmlsZXMg Y2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2JsZW5kZXIvcGF0Y2hlcy9udW1weS0yLjI0LnBhdGNoCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9ibGVuZGVyL3BhdGNoZXMvbnVtcHktMi4yNC5wYXRjaCBiL3NyY3BrZ3MvYmxl bmRlci9wYXRjaGVzL251bXB5LTIuMjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDcxNjMxNWI3NGJlNy4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmxlbmRlci9wYXRj aGVzL251bXB5LTIuMjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1Gcm9t IDc0ZTZlMDdjZjdjNjdiNTVkMzg0ZGI3MmY1YWEzODkyZGI4YTNkYTYgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiBvcmVvNjM5IDxvcmVvNjM5MUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUs IDE3IEphbiAyMDIzIDE0OjM2OjU0IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB1c2Fn ZSBvZiBkZXByZWNhdGVkIG5wLmJvb2wgYWxpYXMKLQotLS0tCi0gYWRkb25zL2lvX3NjZW5lX2ds dGYyL2JsZW5kZXIvaW1wL2dsdGYyX2JsZW5kZXJfbWVzaC5weSB8IDIgKy0KLSAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2FkZG9u cy9pb19zY2VuZV9nbHRmMi9ibGVuZGVyL2ltcC9nbHRmMl9ibGVuZGVyX21lc2gucHkgYi9hZGRv bnMvaW9fc2NlbmVfZ2x0ZjIvYmxlbmRlci9pbXAvZ2x0ZjJfYmxlbmRlcl9tZXNoLnB5Ci1pbmRl eCA2MzY2NDM0YTYuLjgxNjBjOWU5OSAxMDA2NDQKLS0tLSBhL3JlbGVhc2Uvc2NyaXB0cy9hZGRv bnMvaW9fc2NlbmVfZ2x0ZjIvYmxlbmRlci9pbXAvZ2x0ZjJfYmxlbmRlcl9tZXNoLnB5Ci0rKysg Yi9yZWxlYXNlL3NjcmlwdHMvYWRkb25zL2lvX3NjZW5lX2dsdGYyL2JsZW5kZXIvaW1wL2dsdGYy X2JsZW5kZXJfbWVzaC5weQotQEAgLTYyMCw3ICs2MjAsNyBAQCBkZWYgc2V0X3BvbHlfc21vb3Ro aW5nKGdsdGYsIHB5bWVzaCwgbWVzaCwgdmVydF9ub3JtYWxzLCBsb29wX3ZpZHhzKToKLSAgICAg IyBUcnkgdG8gZ3Vlc3Mgd2hpY2ggcG9seXMgc2hvdWxkIGJlIGZsYXQgYmFzZWQgb24gdGhlIGZh Y3QgdGhhdCBhbGwgdGhlCi0gICAgICMgbG9vcCBub3JtYWxzIGZvciBhIGZsYXQgcG9seSBhcmUg PSB0aGUgcG9seSdzIG5vcm1hbC4KLSAKLS0gICAgcG9seV9zbW9vdGhzID0gbnAuZW1wdHkobnVt X3BvbHlzLCBkdHlwZT1ucC5ib29sKQotKyAgICBwb2x5X3Ntb290aHMgPSBucC5lbXB0eShudW1f cG9seXMsIGR0eXBlPWJvb2wpCi0gCi0gICAgIHBvbHlfbm9ybWFscyA9IG5wLmVtcHR5KG51bV9w b2x5cyAqIDMsIGR0eXBlPW5wLmZsb2F0MzIpCi0gICAgIG1lc2gucG9seWdvbnMuZm9yZWFjaF9n ZXQoJ25vcm1hbCcsIHBvbHlfbm9ybWFscykKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmxlbmRlci90 ZW1wbGF0ZSBiL3NyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZQppbmRleCBkMThiYzg4ODM4ZmYuLjkw MGJjMTc5MzdjMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvYmxlbmRlci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2JsZW5kZXInCiBwa2duYW1lPWJsZW5kZXIKLXZlcnNpb249My40LjEKLXJldmlzaW9uPTQK K3ZlcnNpb249My41LjEKK3JldmlzaW9uPTEKIGFyY2hzPSJ4ODZfNjQqIHBwYzY0KiIKIGJ1aWxk X3N0eWxlPSJjbWFrZSIKIHB5Y29tcGlsZV9kaXJzPSIvdXNyL3NoYXJlL2JsZW5kZXIvJHt2ZXJz aW9uJS4qfS9zY3JpcHRzIgpAQCAtOSw4ICs5LDggQEAgY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9J TlNUQUxMX1BPUlRBQkxFPU9GRiAtRFdJVEhfUFlUSE9OX0lOU1RBTEw9T0ZGCiAgLURXSVRIX0pB Q0s9T04gLURXSVRIX0NPREVDX0ZGTVBFRz1PTiAtRFdJVEhfQ09ERUNfU05ERklMRT1PTiAtRFdJ VEhfT1BFTk1QPU9OCiAgLURXSVRIX0ZGVFczPU9OIC1EV0lUSF9NT0RfT0NFQU5TSU09T04gLURX SVRIX0NZQ0xFU19FTUJSRUU9T0ZGIC1EV0lUSF9PUEVOQ09MT1JJTz1PTgogIC1EV0lUSF9JTUFH RV9PUEVORVhSPU9OIC1EV0lUSF9JTUFHRV9PUEVOSlBFRz1PTiAtRFdJVEhfT1BFTlNVQkRJVj1P TgotIC1EV0lUSF9PUEVOQ09MTEFEQT1PTiAtRFdJVEhfU1lTVEVNX0dMRVc9T04gLURXSVRIX09Q RU5WREI9T04gLURXSVRIX0FMRU1CSUM9T04KLSAtRFdJVEhfR0hPU1RfWDExPU9OIC1EV0lUSF9H SE9TVF9XQVlMQU5EPU9OIC1EV0lUSF9HSE9TVF9MSUJERUNPUj1PTgorIC1EV0lUSF9PUEVOQ09M TEFEQT1PTiAtRFdJVEhfT1BFTlZEQj1PTiAtRFdJVEhfQUxFTUJJQz1PTgorIC1EV0lUSF9HSE9T VF9YMTE9T04gLURXSVRIX0dIT1NUX1dBWUxBTkQ9T04gLURXSVRIX0dIT1NUX1dBWUxBTkRfTElC REVDT1I9T04KICAtRFdJVEhfQlVJTERJTkZPPU9GRiAtRFBZVEhPTl9WRVJTSU9OPSR7cHkzX3Zl cn0gLURQWVRIT05fTElCUEFUSD0vdXNyL2xpYgogIC1EUFlUSE9OX0xJQlJBUlk9J3B5dGhvbiR7 cHkzX3Zlcn0ke3B5M19hYml2ZXJ9JwogIC1EUFlUSE9OX0lOQ0xVREVfRElSUz0vJHtweTNfaW5j fSIKQEAgLTIyLDE0ICsyMiwxNSBAQCBtYWtlZGVwZW5kcz0ibGliZ29tcC1kZXZlbCBsaWJwbmct ZGV2ZWwgdGlmZi1kZXZlbCBweXRob24zLWRldmVsIGdsdS1kZXZlbAogIG9wZW5jb2xvcmlvLWRl dmVsIG9wZW5jb2xsYWRhLWRldmVsIHB5dGhvbjMtbnVtcHkgbGliWHJlbmRlci1kZXZlbAogIE9w ZW5TdWJkaXYtZGV2ZWwgdGJiLWRldmVsIGxpYnhtbDItZGV2ZWwgb3BlbnZkYi1kZXZlbCBhbGVt YmljLWRldmVsCiAgcHVnaXhtbC1kZXZlbCBsaWJYeGY4NnZtLWRldmVsIGxpYmVwb3h5LWRldmVs IGdtcC1kZXZlbCBnbXB4eC1kZXZlbAotIHdheWxhbmQtcHJvdG9jb2xzIHdheWxhbmQtZGV2ZWwg bGlieGtiY29tbW9uLWRldmVsIGxpYmRlY29yLWRldmVsIgorIHdheWxhbmQtcHJvdG9jb2xzIHdh eWxhbmQtZGV2ZWwgbGlieGtiY29tbW9uLWRldmVsIGxpYmRlY29yLWRldmVsCisgbGV2ZWwtemVy by1kZXZlbCIKIGRlcGVuZHM9ImRlc2t0b3AtZmlsZS11dGlscyBoaWNvbG9yLWljb24tdGhlbWUi CiBzaG9ydF9kZXNjPSIzRCBncmFwaGljcyBjcmVhdGlvbiBzdWl0ZSIKIG1haW50YWluZXI9IkVu bm8gQm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxh dGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmJsZW5kZXIub3JnIgogZGlzdGZpbGVzPSJodHRw czovL2Rvd25sb2FkLmJsZW5kZXIub3JnL3NvdXJjZS9ibGVuZGVyLSR7dmVyc2lvbn0udGFyLnh6 IgotY2hlY2tzdW09MjQ3YzRjMTIyODI3MGM5MDEwZjQ3MjFjOTg1Y2I1YjYyOGFiNTBhYmNmOWYy Njc4NjMwNzM3MTQyZWViOTFjMworY2hlY2tzdW09YmQ3NDI4YzdlNmNiYTVhOTAwMjE2MjY5YzMy MTExZGZmYWFiYWYxYmRiNTQ3MmYyMzE5NjVlNjE1MTc0YTgwOQogcHl0aG9uX3ZlcnNpb249Mwog TERGTEFHUz0iLVdsLC16LHN0YWNrLXNpemU9MjA5NzE1MiIKICMgQmxlbmRlciB0ZXN0cyBhcmUg ZXhlY3V0ZWQgYWdhaW5zdCBhIHN5c3RlbSBpbnN0YWxsYXRpb24gb2YgYmxlbmRlci4gVGhpcwoK RnJvbSBjMWYxMTE2Mzg4YjQ3YTQwMjdiMDNiYmQxOTQ2YzU5ODhlNTE0MGM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUaHUs IDI3IEFwciAyMDIzIDIwOjQxOjEwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMTMvMTMwXSBOZXcg cGFja2FnZTogbGV2ZWwtemVyby0xLjEwLjAKCi0tLQogc3JjcGtncy9sZXZlbC16ZXJvLWRldmVs ICAgIHwgIDEgKwogc3JjcGtncy9sZXZlbC16ZXJvL3RlbXBsYXRlIHwgMjggKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMjAwMDAgc3JjcGtncy9sZXZlbC16ZXJvLWRldmVsCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9sZXZlbC16ZXJvL3RlbXBsYXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sZXZl bC16ZXJvLWRldmVsIGIvc3JjcGtncy9sZXZlbC16ZXJvLWRldmVsCm5ldyBmaWxlIG1vZGUgMTIw MDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uOTZlZThhZGY3MzAzCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9sZXZlbC16ZXJvLWRldmVsCkBAIC0wLDAgKzEgQEAKK2xldmVsLXplcm8KXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xldmVsLXplcm8vdGVt cGxhdGUgYi9zcmNwa2dzL2xldmVsLXplcm8vdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi4yMzM4NDgyYTBmZGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL2xldmVsLXplcm8vdGVtcGxhdGUKQEAgLTAsMCArMSwyOCBAQAorIyBUZW1wbGF0ZSBmaWxl IGZvciAnbGV2ZWwtemVybycKK3BrZ25hbWU9bGV2ZWwtemVybwordmVyc2lvbj0xLjEwLjAKK3Jl dmlzaW9uPTEKK2FyY2hzPSJ4ODZfNjQqIgorYnVpbGRfc3R5bGU9Y21ha2UKK2hvc3RtYWtlZGVw ZW5kcz0iY21ha2UiCittYWtlZGVwZW5kcz0ibGx2bSBjbGFuZyBjbGFuZy10b29scy1leHRyYSBT UElSVi1MTFZNLVRyYW5zbGF0b3ItZGV2ZWwiCitzaG9ydF9kZXNjPSJPbmVBUEkgTGV2ZWwgWmVy byBTcGVjaWZpY2F0aW9uIgorbWFpbnRhaW5lcj0iWmxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4i CitsaWNlbnNlPSJOQ1NBIgoraG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9vbmVhcGktc3Jj L2xldmVsLXplcm8iCitkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L2FyY2hpdmUvcmVmcy90YWdzL3Yk e3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPTI4MTFlNDEyOGZmNjExNDAyMGQwYTE0N2MyNzY5 YjliMmU3ODJlNjhhZDQ5ODI3Njg1YzMzYjllNzE2YmY2YWIKKworcG9zdF9pbnN0YWxsKCkgewor CXZsaWNlbnNlIExJQ0VOU0UKK30KKworbGV2ZWwtemVyby1kZXZlbF9wYWNrYWdlKCkgeworCWRl cGVuZHM9IiR7bWFrZWRlcGVuZHN9ICR7c291cmNlcGtnfS0ke3ZlcnNpb259XyR7cmV2aXNpb259 IgorCXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlwa2dfaW5zdGFsbCgpIHsK KwkJdm1vdmUgdXNyL2luY2x1ZGUKKwkJdm1vdmUgdXNyL2xpYi9wa2djb25maWcKKwkJdm1vdmUg InVzci9saWIvKi5zbyIKKwl9Cit9CgpGcm9tIDVhMjY1ODk0YjkwZjdhYmRmMTQwM2YyZDQ3Mjlj OTIzMjk3MTE5NjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjggTWFyIDIwMjMgMTk6NTQ6NDkgLTA0MDAKU3ViamVj dDogW1BBVENIIDExNC8xMzBdIE5ldyBwYWNrYWdlOiBpbnRlbC1tZXRyaWNzLWxpYnJhcnkgMS4w LjEzMwoKLS0tCiBzcmNwa2dzL2ludGVsLW1ldHJpY3MtbGlicmFyeS90ZW1wbGF0ZSB8IDE5ICsr KysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pbnRlbC1tZXRyaWNzLWxpYnJhcnkvdGVtcGxhdGUKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2ludGVsLW1ldHJpY3MtbGlicmFyeS90ZW1wbGF0ZSBiL3NyY3Br Z3MvaW50ZWwtbWV0cmljcy1saWJyYXJ5L3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uNTBmMWE2MDc5ZDdiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9pbnRlbC1tZXRyaWNzLWxpYnJhcnkvdGVtcGxhdGUKQEAgLTAsMCArMSwxOSBAQAorIyBUZW1w bGF0ZSBmaWxlIGZvciAnaW50ZWwtbWV0cmljcy1saWJyYXJ5JworcGtnbmFtZT1pbnRlbC1tZXRy aWNzLWxpYnJhcnkKK3ZlcnNpb249MS4wLjEzMworcmV2aXNpb249MQorYXJjaHM9Ing4Nl82NCoi CitidWlsZF9zdHlsZT1jbWFrZQorY29uZmlndXJlX2FyZ3M9Ii1XZGV2LW5vIC1EQ01BS0VfQlVJ TERfVFlQRT1SZWxlYXNlIgoraG9zdG1ha2VkZXBlbmRzPSJjbWFrZSIKK21ha2VkZXBlbmRzPSJs aWJkcm0tZGV2ZWwiCitzaG9ydF9kZXNjPSJIZWxwZXIgbGlicmFyeSB0aGF0IHByb3ZpZGVzIGFj Y2VzcyB0byBHUFUgcGVyZm9ybWFuY2UgY291bnRlcnMiCittYWludGFpbmVyPSJabGljZSA8emxp Y2U1NTVAZ21haWwuY29tPiIKK2xpY2Vuc2U9Ik1JVCIKK2hvbWVwYWdlPSJodHRwczovL2dpdGh1 Yi5jb20vaW50ZWwvbWV0cmljcy1saWJyYXJ5IgorZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9hcmNo aXZlL3JlZnMvdGFncy9tZXRyaWNzLWxpYnJhcnktJHt2ZXJzaW9ufS50YXIuZ3oiCitjaGVja3N1 bT04M2Y3YjJkZTNhZjVmZmQyZjFiNDg3ZGY4ODM2ZTZkMjEyZTExNjY4YmQ5NThiZWJhZTYyMmE0 ODNmYjEyMzFmCisKK3Bvc3RfaW5zdGFsbCgpIHsKKwl2bGljZW5zZSBMSUNFTlNFLm1kCit9CgpG cm9tIGE3NWM3MGY1MjQ4ZjMzMTMzY2UwNTE5YmNlZGJmNzRmNWI2NTU1Y2EgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwg MjggTWFyIDIwMjMgMTk6NTQ6MTggLTA0MDAKU3ViamVjdDogW1BBVENIIDExNS8xMzBdIE5ldyBw YWNrYWdlOiBpbnRlbC1tZXRyaWNzLWRpc2NvdmVyeSAxLjEyLjE2MwoKLS0tCiBzcmNwa2dzL2lu dGVsLW1ldHJpY3MtZGlzY292ZXJ5L3RlbXBsYXRlIHwgMTkgKysrKysrKysrKysrKysrKysrKwog MSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2ludGVsLW1ldHJpY3MtZGlzY292ZXJ5L3RlbXBsYXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9pbnRlbC1tZXRyaWNzLWRpc2NvdmVyeS90ZW1wbGF0ZSBiL3NyY3BrZ3MvaW50ZWwtbWV0cmlj cy1kaXNjb3ZlcnkvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi42MDgzNTk1ZTI3M2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLW1ldHJp Y3MtZGlzY292ZXJ5L3RlbXBsYXRlCkBAIC0wLDAgKzEsMTkgQEAKKyMgVGVtcGxhdGUgZmlsZSBm b3IgJ2ludGVsLW1ldHJpY3MtZGlzY292ZXJ5JworcGtnbmFtZT1pbnRlbC1tZXRyaWNzLWRpc2Nv dmVyeQordmVyc2lvbj0xLjEyLjE2MworcmV2aXNpb249MQorYXJjaHM9Ing4Nl82NCoiCitidWls ZF9zdHlsZT1jbWFrZQorY29uZmlndXJlX2FyZ3M9Ii1XZGV2LW5vIC1EQ01BS0VfQlVJTERfVFlQ RT1SZWxlYXNlIgoraG9zdG1ha2VkZXBlbmRzPSJjbWFrZSIKK21ha2VkZXBlbmRzPSJsaWJkcm0t ZGV2ZWwiCitzaG9ydF9kZXNjPSJIZWxwZXIgbGlicmFyeSB0aGF0IHByb3ZpZGVzIGFjY2VzcyB0 byBHUFUgcGVyZm9ybWFuY2UgZGF0YSIKK21haW50YWluZXI9IlpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+IgorbGljZW5zZT0iTUlUIgoraG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9pbnRl bC9tZXRyaWNzLWRpc2NvdmVyeSIKK2Rpc3RmaWxlcz0iJHtob21lcGFnZX0vYXJjaGl2ZS9yZWZz L3RhZ3MvbWV0cmljcy1kaXNjb3ZlcnktJHt2ZXJzaW9ufS50YXIuZ3oiCitjaGVja3N1bT02ZGZl OGQxMWM1ODYyNWJmM2ViZjY1NmVjMmE5NWRjOTZiYmIwNTcwNWVjNzFjNmMzYzNkZDBlZjVjZDIz MTljCisKK3Bvc3RfaW5zdGFsbCgpIHsKKwl2bGljZW5zZSBMSUNFTlNFLm1kCit9CgpGcm9tIGNk YWM3NDdhY2UxNzVmNzc3OWMyZDA4YWEzNzU5MDBkY2NhYmQxMDAgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMjYgTWFy IDIwMjMgMTA6NDg6MzQgLTA0MDAKU3ViamVjdDogW1BBVENIIDExNi8xMzBdIE5ldyBwYWNrYWdl OiBpbnRlbC1ncmFwaGljcy1jb21waWxlci0xLjAuMTM0NjMuMTgKCi0tLQogc3JjcGtncy9pbnRl bC1ncmFwaGljcy1jb21waWxlci90ZW1wbGF0ZSB8IDIyICsrKysrKysrKysrKysrKysrKysrKysK IDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9pbnRlbC1ncmFwaGljcy1jb21waWxlci90ZW1wbGF0ZQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvaW50ZWwtZ3JhcGhpY3MtY29tcGlsZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2ludGVsLWdyYXBo aWNzLWNvbXBpbGVyL3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uNDRkMzgyMTRmOTI5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9pbnRlbC1ncmFw aGljcy1jb21waWxlci90ZW1wbGF0ZQpAQCAtMCwwICsxLDIyIEBACisjIFRlbXBsYXRlIGZpbGUg Zm9yICdpbnRlbC1ncmFwaGljcy1jb21waWxlcicKK3BrZ25hbWU9aW50ZWwtZ3JhcGhpY3MtY29t cGlsZXIKK3ZlcnNpb249MS4wLjEzNDYzLjE4CityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIK K2J1aWxkX3N0eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iLVduby1kZXYgLURJR0NfT1BUSU9O X19MTFZNX1BSRUZFUlJFRF9WRVJTSU9OPTE1LjAuNyAtRENDTEFOR19GUk9NX1NZU1RFTT1PTgor IC1ESUdDX09QVElPTl9fU1BJUlZfVE9PTFNfTU9ERT1QcmVidWlsZHMgLURJR0NfT1BUSU9OX19V U0VfUFJFSU5TVEFMTEVEX1NQUklWX0hFQURFUlM9T04KKyAtRElHQ19PUFRJT05fX1ZDX0lOVFJJ TlNJQ1NfTU9ERT1QcmVidWlsZHMiCitob3N0bWFrZWRlcGVuZHM9ImZsZXggYmlzb24gemxpYi1k ZXZlbCBsaWJ6c3RkLWRldmVsIGNtYWtlIgorbWFrZWRlcGVuZHM9Imxsdm0gY2xhbmcgY2xhbmct dG9vbHMtZXh0cmEgaW50ZWwtb3BlbmNsLWNsYW5nIGludGVsLXZjLWludHJpbnNpY3MKKyBsbGQg bGxkLWRldmVsIFNQSVJWLUhlYWRlcnMgIFNQSVJWLUxMVk0tVHJhbnNsYXRvci1kZXZlbCBTUElS Vi1Ub29scy1kZXZlbCIKK3Nob3J0X2Rlc2M9IkxMVk0gYmFzZWQgY29tcGlsZXIgZm9yIE9wZW5D TCB0YXJnZXRpbmcgSW50ZWwiCittYWludGFpbmVyPSJabGljZSA8emxpY2U1NTVAZ21haWwuY29t PiIKK2xpY2Vuc2U9Ik1JVCIKK2hvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvaW50 ZWwtZ3JhcGhpY3MtY29tcGlsZXIiCitkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L2FyY2hpdmUvcmVm cy90YWdzL2lnYy0ke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPTBiOTYwODc4YTVmZWZmZDZh YTEwMTk3YzQ4YmY3M2EwYTNhMTlkMDEwNTQyOGQ0ODE2M2U5MWRiMDQ0NDA3MGEKKworcG9zdF9p bnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0UubWQKK30KCkZyb20gYTFiYWRlODA3YmUxYjZi MjdlNDMxODA0MDYyODIyZWYzZTMxNjhmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAyNiBNYXIgMjAyMyAxMDo0ODow NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTE3LzEzMF0gTmV3IHBhY2thZ2U6IGludGVsLWNvbXB1 dGUtcnVudGltZS0yMy4wOS4yNTgxMi4xNAoKLS0tCiBzcmNwa2dzL2ludGVsLWNvbXB1dGUtcnVu dGltZS90ZW1wbGF0ZSB8IDIyICsrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2Vk LCAyMiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pbnRlbC1jb21w dXRlLXJ1bnRpbWUvdGVtcGxhdGUKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ludGVsLWNvbXB1dGUt cnVudGltZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvaW50ZWwtY29tcHV0ZS1ydW50aW1lL3RlbXBsYXRl Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTEzMmI4MzBkMzQ4Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9pbnRlbC1jb21wdXRlLXJ1bnRpbWUvdGVtcGxhdGUK QEAgLTAsMCArMSwyMiBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAnaW50ZWwtY29tcHV0ZS1ydW50 aW1lJworcGtnbmFtZT1pbnRlbC1jb21wdXRlLXJ1bnRpbWUKK3ZlcnNpb249MjMuMDkuMjU4MTIu MTQKK3JldmlzaW9uPTEKK2FyY2hzPSJ4ODZfNjQiCitidWlsZF9zdHlsZT1jbWFrZQorY29uZmln dXJlX2FyZ3M9Ii1Xbm8tZGV2IC1ETkVPX1NLSVBfVU5JVF9URVNUUz0xIC1EU1VQUE9SVF9ERzE9 T04gLURTVVBQT1JUX0RHMj1PTiIKK2hvc3RtYWtlZGVwZW5kcz0iY21ha2UgcGtnLWNvbmZpZyIK K21ha2VkZXBlbmRzPSJnY2MgaW50ZWwtZ21tbGliLWRldmVsIGxpYnZhLWRldmVsIG9jbC1pY2Qt ZGV2ZWwKKyBpbnRlbC1vcGVuY2wtY2xhbmcgaW50ZWwtZ3JhcGhpY3MtY29tcGlsZXIgbGV2ZWwt emVyby1kZXZlbAorIGludGVsLW1ldHJpY3MtbGlicmFyeSBpbnRlbC1tZXRyaWNzLWRpc2NvdmVy eSIKK2RlcGVuZHM9ImludGVsLWdyYXBoaWNzLWNvbXBpbGVyIgorc2hvcnRfZGVzYz0iSW50ZWwg R3JhcGhpY3MgQ29tcHV0ZSBSdW50aW1lIGZvciBvbmVBUEkgTGV2ZWwgWmVybyBhbmQgT3BlbkNM IgorbWFpbnRhaW5lcj0iWmxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4iCitsaWNlbnNlPSJNSVQi Citob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2NvbXB1dGUtcnVudGltZSIKK2Rp c3RmaWxlcz0iJHtob21lcGFnZX0vYXJjaGl2ZS9yZWZzL3RhZ3MvJHt2ZXJzaW9ufS50YXIuZ3oi CitjaGVja3N1bT1hYmUyZTZkOWQyYWM3NzFkNWY0MmVlMjM1N2NlODk3Y2EzYjAwZGM2MTg1YzA2 ZjNmNjI3NzJmNzI5YzdmOGUxCisKK3Bvc3RfaW5zdGFsbCgpIHsKKwl2bGljZW5zZSBMSUNFTlNF Lm1kCit9CgpGcm9tIGE1MzE2MTVmNWIwZTFlM2E1YzhmNDRkMDAwNjQ1YWE2NjdkMzRiZDkgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFN1biwgMjYgTWFyIDIwMjMgMTA6NDY6NTggLTA0MDAKU3ViamVjdDogW1BBVENIIDExOC8x MzBdIE5ldyBwYWNrYWdlOiBpbnRlbC12Yy1pbnRyaW5zaWNzLTAuMTIuMwoKLS0tCiBzcmNwa2dz L2ludGVsLXZjLWludHJpbnNpY3MvdGVtcGxhdGUgfCAyMSArKysrKysrKysrKysrKysrKysrKysK IDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9pbnRlbC12Yy1pbnRyaW5zaWNzL3RlbXBsYXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9p bnRlbC12Yy1pbnRyaW5zaWNzL3RlbXBsYXRlIGIvc3JjcGtncy9pbnRlbC12Yy1pbnRyaW5zaWNz L3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTI5NDgy YmRmOTg1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9pbnRlbC12Yy1pbnRyaW5zaWNzL3Rl bXBsYXRlCkBAIC0wLDAgKzEsMjEgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ludGVsLXZjLWlu dHJpbnNpY3MnCitwa2duYW1lPWludGVsLXZjLWludHJpbnNpY3MKK3ZlcnNpb249MC4xMi4zCity ZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxlPWNtYWtlCitjb25maWd1cmVf YXJncz0iLVduby1kZXYgLURMTFZNX0RJUj0vdXNyL2xpYi9jbWFrZS9sbHZtIC1EQ01BS0VfQlVJ TERfVFlQRT1SZWxlYXNlIgoraG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBweXRob24iCittYWtlZGVw ZW5kcz0ibGx2bSBjbGFuZyBjbGFuZy10b29scy1leHRyYSIKK3Nob3J0X2Rlc2M9IlNldCBvZiBp bnRyaW5zaWNzIG9uIHRvcCBvZiBjb3JlIExMVk0gSVIiCittYWludGFpbmVyPSJabGljZSA8emxp Y2U1NTVAZ21haWwuY29tPiIKK2xpY2Vuc2U9Ik1JVCIKK2hvbWVwYWdlPSJodHRwczovL2dpdGh1 Yi5jb20vaW50ZWwvdmMtaW50cmluc2ljcyIKK2Rpc3RmaWxlcz0iJHtob21lcGFnZX0vYXJjaGl2 ZS9yZWZzL3RhZ3MvdiR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09ZWQxYzBkOTY4Y2IyZjhl ZTdiMjg0MGExNGMzMjYxNjM5ZjE3MDBlODQ0ZmI3ZDJhODk4NTZiYWJmZmQ1ZTFkMQorCisjIFRP RE86IGxpY2Vuc2UgaXNuJ3QgYnVuZGxlZCBpbiB0YXI/CisjICAgICAgIGp1c3QgYWRkZWQgMiBk YXlzIGFnby4uLiBtYXIgMjR0aCAyMDIzCisjcG9zdF9pbnN0YWxsKCkgeworIwl2bGljZW5zZSBM SUNFTlNFLm1kCisjfQoKRnJvbSAzOWQ1YmMyZmRiNTc1ZmUyMTkzM2Y1YzU3YzFkYTdkZTQ4OGYw YTM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBTdW4sIDI2IE1hciAyMDIzIDEwOjQ2OjExIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAxMTkvMTMwXSBOZXcgcGFja2FnZTogaW50ZWwtb3BlbmNsLWNsYW5nLTE1LjAuMAoKLS0tCiBj b21tb24vc2hsaWJzICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIHNyY3BrZ3MvaW50ZWwt b3BlbmNsLWNsYW5nL3RlbXBsYXRlIHwgMTggKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDE5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ludGVs LW9wZW5jbC1jbGFuZy90ZW1wbGF0ZQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21t b24vc2hsaWJzCmluZGV4IGRiYzJkYmYyNWQzZC4uMjUxNzgyMTFiOGVjIDEwMDY0NAotLS0gYS9j b21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTEwMDgsNiArMTAwOCw3IEBAIGxp YkxMVk0tMTUuc28gbGlibGx2bTE1LTE1LjAuN18xCiBsaWJMTFZNU1BJUlZMaWIuc28uMTUgU1BJ UlYtTExWTS1UcmFuc2xhdG9yLTE1LjAuMF8xCiBsaWJvbXAuc28uNSBsaWJvbXAtMTUuMC43XzEK IGxpYm9tcHRhcmdldC5zby4xNSBsaWJvbXAtMTUuMC43XzEKK2xpYm9wZW5jbC1jbGFuZy5zby4x NSBpbnRlbC1vcGVuY2wtY2xhbmctMTUuMC4wXzEKIGxpYmlzb2ZzLnNvLjYgbGliaXNvZnMtMC42 LjI0XzEKIGxpYm1wYWNrLnNvLjAgbGlibXBhY2stMS4wLjVfMQogbGliR2VvSVAuc28uMSBsaWJn ZW9pcC0xLjQuOF8xCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ludGVsLW9wZW5jbC1jbGFuZy90ZW1w bGF0ZSBiL3NyY3BrZ3MvaW50ZWwtb3BlbmNsLWNsYW5nL3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTZmMDlmNmFkNzI0Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9pbnRlbC1vcGVuY2wtY2xhbmcvdGVtcGxhdGUKQEAgLTAsMCArMSwxOCBAQAor IyBUZW1wbGF0ZSBmaWxlIGZvciAnaW50ZWwtb3BlbmNsLWNsYW5nJworcGtnbmFtZT1pbnRlbC1v cGVuY2wtY2xhbmcKK3ZlcnNpb249MTUuMC4wCityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIK K2J1aWxkX3N0eWxlPWNtYWtlCitob3N0bWFrZWRlcGVuZHM9ImNtYWtlIgorbWFrZWRlcGVuZHM9 Imxsdm0gY2xhbmcgY2xhbmctdG9vbHMtZXh0cmEgU1BJUlYtTExWTS1UcmFuc2xhdG9yLWRldmVs Igorc2hvcnRfZGVzYz0iTExWTSBsaW5rZWQgb3BlbmNsLWNsYW5nIgorbWFpbnRhaW5lcj0iWmxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4iCitsaWNlbnNlPSJOQ1NBIgoraG9tZXBhZ2U9Imh0dHBz Oi8vZ2l0aHViLmNvbS9pbnRlbC9vcGVuY2wtY2xhbmciCitkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9 L2FyY2hpdmUvcmVmcy90YWdzL3Yke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPWVhMTc5Njc0 ZTUyYmM4YzY1OGUyNjU1Zjc2YmU0NjdmNzA1MmY3ZDJjMzdlYmNmZGIxMDJkY2U2NDVhZDE0MTEK KworcG9zdF9pbnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0UKK30KCkZyb20gNzk2OGNhZDYw NjA5YTgyNjc0MjRmNTFlZTcwYmIwYTZmMWRlMzY0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAzMCBBcHIgMjAyMyAy MDoyMjoyNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTIwLzEzMF0gZ3N0cmVhbWVyMTogdXBkYXRl IHRvIDEuMjIuMgoKLS0tCiBzcmNwa2dzL2dzdHJlYW1lcjEvdGVtcGxhdGUgfCA0ICsrLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9nc3RyZWFtZXIxL3RlbXBsYXRlIGIvc3JjcGtncy9nc3RyZWFtZXIxL3RlbXBs YXRlCmluZGV4IGFlOGE0OWNiMjBlOC4uNTcxMTQ4ZjJmZjMzIDEwMDY0NAotLS0gYS9zcmNwa2dz L2dzdHJlYW1lcjEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3RyZWFtZXIxL3RlbXBsYXRlCkBA IC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0cmVhbWVyMScKIHBrZ25hbWU9 Z3N0cmVhbWVyMQotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0xCiBi dWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVyPSJnaXIiCkBAIC0xNiw3ICsxNiw3IEBAIG1h aW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJMR1BM LTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5v cmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy9nc3RyZWFtZXIvZ3N0cmVhbWVyLSR7dmVy c2lvbn0udGFyLnh6IgotY2hlY2tzdW09NjA3ZGFmNjRiYmJkNWZiMThhZjlkMTdlMjFjMGQyMmM0 ZDcwMmZmZmU4M2IyM2NiMjJkMWIxYWYyY2EyM2EyYQorY2hlY2tzdW09YjJhZmU3MzYwMzkyMWM2 MDhiYTQ4OTY5ZGJiN2Q3NDM3NzY3NDRiZmU1ZDgwNTllY2UyNDExMzdiN2Y4OGUyMQogCiBwcmVf Y2hlY2soKSB7CiAJIyBnc3RfZ3N0ZGF0ZXRpbWUgaXMga25vd24gdG8gZmFpbCBhY2NvcmRpbmcg dG8gTEZTCgpGcm9tIDg4MzgyY2MyMTNjOTY0YTI1MjhkMzk2NzI1ZTcyMzY1YmY3NTUxMTkgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFN1biwgMzAgQXByIDIwMjMgMjA6MjI6MjYgLTA0MDAKU3ViamVjdDogW1BBVENIIDEyMS8x MzBdIGdzdC1wbHVnaW5zLWJhc2UxOiB1cGRhdGUgdG8gMS4yMi4yCgotLS0KIHNyY3BrZ3MvZ3N0 LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcGx1Z2lu cy1iYXNlMS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUKaW5k ZXggMjllOGY3NmJkMWZlLi4yZjIwZWE4MTk4NDkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXBs dWdpbnMtYmFzZTEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtcGx1Z2lucy1iYXNlMS90ZW1w bGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLWJh c2UxJwogcGtnbmFtZT1nc3QtcGx1Z2lucy1iYXNlMQotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249 MS4yMi4yCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVyPSJnaXIi CkBAIC0yMiw3ICsyMiw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4 Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyLCBMR1BMLTIuMC1vci1sYXRlciIKIGhv bWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7 aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWUvMS99LyR7cGtnbmFtZS8xL30tJHt2ZXJzaW9ufS50YXIu eHoiCi1jaGVja3N1bT03ZTMwYjNkZDgxYTcwMzgwZmY3NTU0Zjk5ODQ3MWQ2OTk2ZmY3NmJiZTZm YzU0NDcwOTZmODUxZTI0NDczYzlmCitjaGVja3N1bT1lYjY1MTIwYzRlZTc5YjdhMTUzYzNjMTk3 MmQ1YzAxNThjMjE1MTg3N2NjNTFlYzc3MjViYmE1NzQ5Njc5ZDQ5CiAKIGJ1aWxkX29wdGlvbnM9 ImNkcGFyYW5vaWEgZ2lyIHNuZGlvIHdheWxhbmQiCiBidWlsZF9vcHRpb25zX2RlZmF1bHQ9ImNk cGFyYW5vaWEgZ2lyIHdheWxhbmQiCgpGcm9tIGVkYWZmMmJiNTBlMTk0ODFiMGUzZjY4YmZjYzY2 NGE0NzM2ZTNjYzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMzAgQXByIDIwMjMgMjA6MjI6MjYgLTA0MDAKU3ViamVj dDogW1BBVENIIDEyMi8xMzBdIGdzdC1wbHVnaW5zLWdvb2QxOiB1cGRhdGUgdG8gMS4yMi4yCgot LS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMtZ29vZDEvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9nc3QtcGx1Z2lucy1nb29kMS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtZ29v ZDEvdGVtcGxhdGUKaW5kZXggMWY1ZTYyMGNlMWZkLi41ZDBmZTFiZmUyODQgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvZ3N0LXBsdWdpbnMtZ29vZDEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtcGx1 Z2lucy1nb29kMS90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2dzdC1wbHVnaW5zLWdvb2QxJwogcGtnbmFtZT1nc3QtcGx1Z2lucy1nb29kMQotdmVyc2lvbj0x LjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNvbgogY29u ZmlndXJlX2FyZ3M9Ii1EZHY9ZGlzYWJsZWQgLURkdjEzOTQ9ZGlzYWJsZWQgLURzaG91dDI9ZGlz YWJsZWQgLURxdDU9ZW5hYmxlZApAQCAtMjIsNyArMjIsNyBAQCBtYWludGFpbmVyPSJPcnBoYW5l ZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iTEdQTC0yLjEtb3ItbGF0ZXIiCiBo b21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIk e2hvbWVwYWdlfS9zcmMvJHtwa2duYW1lLzEvfS8ke3BrZ25hbWUvMS99LSR7dmVyc2lvbn0udGFy Lnh6IgotY2hlY2tzdW09ZjhmM2MyMDZiZjVjZGFiYzAwOTUzOTIwYjQ3YjM1NzVhZjBlZjE1ZTlm ODcxYzBiNjk2NmY2ZDBhYTU4NjhiNworY2hlY2tzdW09N2M4Y2M1OTQyNWYyYjIzMmY2MGNhN2Qx M2U1NmVkZDYxNWRhNGY3MTFlNzNkZDAxYTdjZmZhNDZlNmJjMGNkZAogCiBidWlsZF9vcHRpb25z PSJndGszIHdheWxhbmQiCiBidWlsZF9vcHRpb25zX2RlZmF1bHQ9Imd0azMgd2F5bGFuZCIKCkZy b20gYTc1MDVlNzIxZWY3NmZmYzdmYjk0ZjVjZmIxZWNmYTg2MTU3ZTcyZCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAz MCBBcHIgMjAyMyAyMDoyMjoyNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTIzLzEzMF0gZ3N0LXBs dWdpbnMtYmFkMTogdXBkYXRlIHRvIDEuMjIuMgoKLS0tCiBzcmNwa2dzL2dzdC1wbHVnaW5zLWJh ZDEvdGVtcGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwg MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVt cGxhdGUgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUKaW5kZXggNWE5ZDUzODdl MGQ0Li43N2JmNzk5ODFjMjAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtcGx1Z2lucy1iYWQxJwogcGtnbmFtZT1n c3QtcGx1Z2lucy1iYWQxCi12ZXJzaW9uPTEuMjIuMQotcmV2aXNpb249MgordmVyc2lvbj0xLjIy LjIKK3JldmlzaW9uPTEKIGJ1aWxkX2hlbHBlcj0iZ2lyIgogYnVpbGRfc3R5bGU9bWVzb24KIGNv bmZpZ3VyZV9hcmdzPSItRHBhY2thZ2Utb3JpZ2luPWh0dHBzOi8vdm9pZGxpbnV4Lm9yZyAtRGRv Yz1kaXNhYmxlZApAQCAtMzYsNyArMzYsNyBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFu QHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciwgTEdQTC0yLjEtb3It bGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlz dGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvJHtwa2duYW1lLzEvfS8ke3BrZ25hbWUvMS99LSR7dmVy c2lvbn0udGFyLnh6IgotY2hlY2tzdW09N2ExMWMxM2I1NWRkMWQyMzg2ZGQ5MDIyMTllNDFjYmZj ZGRhOGUxZTBhYTNlNzM4MTg2Yzk1MDc0YjM1ZGE0ZgorY2hlY2tzdW09M2Q4ZmFmMWNlMzQwMmM4 NTM1Y2UzYThjNGUxYTZjOTYwZTRiNTY1NWRiZGE2YjU1OTQzZGI5YWM3OTAyMmQwZgogCiBidWls ZF9vcHRpb25zPSJnaXIgZ21lIHdheWxhbmQiCiBidWlsZF9vcHRpb25zX2RlZmF1bHQ9ImdpciB3 YXlsYW5kIgoKRnJvbSAyMjdmOTQ4MjI1YjI4MjUxNjdkZTk0NjQwODY4MGM1ZjA2ZWVjN2U0IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBTdW4sIDMwIEFwciAyMDIzIDIwOjIyOjI2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMjQv MTMwXSBnc3QtcGx1Z2lucy11Z2x5MTogdXBkYXRlIHRvIDEuMjIuMgoKLS0tCiBzcmNwa2dzL2dz dC1wbHVnaW5zLXVnbHkxL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXBsdWdp bnMtdWdseTEvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLXVnbHkxL3RlbXBsYXRlCmlu ZGV4IGUyNTRmZDQwZjg2OS4uODVhZTY0YmM3YTBhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1w bHVnaW5zLXVnbHkxL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtdWdseTEvdGVt cGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtcGx1Z2lucy11 Z2x5MScKIHBrZ25hbWU9Z3N0LXBsdWdpbnMtdWdseTEKLXZlcnNpb249MS4yMC4zCit2ZXJzaW9u PTEuMjIuMgogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSIt RGFtcm5iPWRpc2FibGVkIC1EYW1yd2JkZWM9ZGlzYWJsZWQgLURzaWRwbGF5PWRpc2FibGVkIgpA QCAtMTUsNCArMTUsNCBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5v cmc+IgogbGljZW5zZT0iTEdQTC0yLjEtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9nc3Ry ZWFtZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvJHtwa2du YW1lLzEvfS8ke3BrZ25hbWUvMS99LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09OGNhYTIw Nzg5YTA5YzMwNGI0OWNmNTYzZDMzY2NhOTQyMWIxODc1Yjg0ZmNjMTg3ZTRhMzg1ZmEwMWQ2YWVm ZAorY2hlY2tzdW09OGYzMGY0NGRiMGJkMDYzNzA5YmY2ZmJlNTUxMzhlM2E5OGFmMGFiY2I2MWMz NjBmMzU1ODJiYmUxMGU4MDY5MQoKRnJvbSBlNDRmMTljZmM0ZDEyNzUyMGQyNDU1YzNiZGUwZDMy MjI3MDNhMGYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBTdW4sIDMwIEFwciAyMDIzIDIwOjIyOjI2IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAxMjUvMTMwXSBnc3Qtb214OiB1cGRhdGUgdG8gMS4yMi4yCgotLS0KIHNyY3BrZ3Mv Z3N0LW9teC90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1vbXgvdGVtcGxhdGUg Yi9zcmNwa2dzL2dzdC1vbXgvdGVtcGxhdGUKaW5kZXggODkzNTM1YzQ2M2RhLi41YWQ1NGNjN2I5 ZDggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LW9teC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dz dC1vbXgvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3Qt b214JwogcGtnbmFtZT1nc3Qtb214Ci12ZXJzaW9uPTEuMjAuMwordmVyc2lvbj0xLjIyLjIKIHJl dmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURleGFtcGxlcz1k aXNhYmxlZCAtRHRhcmdldD1nZW5lcmljIgpAQCAtMTEsNCArMTEsNCBAQCBtYWludGFpbmVyPSJP cnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iTEdQTC0yLjEtb25seSIK IGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9 IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWV9LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIueHoi Ci1jaGVja3N1bT04ZGI0ODA0MGJiNDFmMDllZGY4ZDE3ZmY2ZDE2YzU0ODg4ZDc3NzdiYTQ1MDFj MmM2OWYwMDgzMzUwZWE5YTE1CitjaGVja3N1bT0xYjBjNTdmMmNjNGRkZWVjNWU3ZjBjNDM2ZTUw MmYwNjY2NWM0ZTkzYzczMjYxODU1Yjk0ZTA0ZmM5NDMzN2IyCgpGcm9tIGQwMzFkOTgwMWE1NmE4 MmZhZmZiZjBlZGRjZjEzZjU5ODAxYmZiNTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMzAgQXByIDIwMjMgMjA6MjI6 MjYgLTA0MDAKU3ViamVjdDogW1BBVENIIDEyNi8xMzBdIGdzdC1ydHNwLXNlcnZlcjogdXBkYXRl IHRvIDEuMjIuMgoKLS0tCiBzcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZSB8IDggKysr Ky0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2dz dC1ydHNwLXNlcnZlci90ZW1wbGF0ZQppbmRleCA4Y2VlYThkMzRiNGIuLjJmMGMwYzQ1ZmY4MiAx MDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdnc3QtcnRzcC1zZXJ2ZXInCiBwa2duYW1lPWdzdC1ydHNwLXNlcnZlcgotdmVyc2lv bj0xLjIwLjMKLXJldmlzaW9uPTMKK3ZlcnNpb249MS4yMi4yCityZXZpc2lvbj0xCiBidWlsZF9z dHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHB5dGhvbjMiCiBtYWtlZGVw ZW5kcz0iZ2xpYi1kZXZlbCBnc3QtcGx1Z2lucy1iYWQxLWRldmVsIGdvYmplY3QtaW50cm9zcGVj dGlvbgpAQCAtMTAsNSArMTAsNSBAQCBzaG9ydF9kZXNjPSJHU3RyZWFtZXIgbXVsdGltZWRpYSBn cmFwaCBmcmFtZXdvcmsgLSBydHNwIHNlcnZlciIKIG1haW50YWluZXI9IjFpczdhYzMgPGlzYWFj LnFhMTNAZ21haWwuY29tPiIKIGxpY2Vuc2U9IkxHUEwtMi4xLW9yLWxhdGVyIgogaG9tZXBhZ2U9 Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKLWRpc3RmaWxlcz0iaHR0cHM6Ly9n c3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcnRzcC1zZXJ2ZXIvZ3N0LXJ0c3Atc2Vy dmVyLSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09ZWU0MDI3MThiZTliMTI3ZjBlNWU2NmNh NGMxYjRmNDJlNDkyNmVjOTNiYTMwN2I3Y2NjYTVkYzZjYzk3OTRjYQorZGlzdGZpbGVzPSIke2hv bWVwYWdlfS9zcmMvJHtwa2duYW1lfS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLnh6IgorY2hl Y2tzdW09MmJlNGFlY2ZiODg3MTAxMDBlYTcxMTVlZDAyMTY0MDNlODA5NDM0NGViZjE0NjA5NDI3 MWI4ZDRkNzM4MjhiZgoKRnJvbSAwZTgzOTU3MjQxMjdiMTAxMmQ0YjBhMjRiYTQ0Yzc0MmJkOGM0 ZWZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBTdW4sIDMwIEFwciAyMDIzIDIwOjIyOjI2IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAxMjcvMTMwXSBnc3QxLWVkaXRpbmctc2VydmljZXM6IHVwZGF0ZSB0byAxLjIyLjIKCi0tLQog c3JjcGtncy9nc3QxLWVkaXRpbmctc2VydmljZXMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9nc3QxLWVkaXRpbmctc2VydmljZXMvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdDEtZWRpdGlu Zy1zZXJ2aWNlcy90ZW1wbGF0ZQppbmRleCA2NzNiNDY5NzBmMjQuLjEwMjQ0MGY3ZjI1MyAxMDA2 NDQKLS0tIGEvc3JjcGtncy9nc3QxLWVkaXRpbmctc2VydmljZXMvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9nc3QxLWVkaXRpbmctc2VydmljZXMvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdnc3QxLWVkaXRpbmctc2VydmljZXMnCiBwa2duYW1lPWdzdDEtZWRp dGluZy1zZXJ2aWNlcwotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0x CiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVyPSJnaXIiCkBAIC0xMiw3ICsxMiw3IEBA IG1haW50YWluZXI9IlRveWFtIENveCA8VmFlbGF0ZXJuQGdtYWlsLmNvbT4iCiBsaWNlbnNlPSJM R1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3Rv cC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWUvZ3N0MS9nc3R9LyR7 cGtnbmFtZS9nc3QxL2dzdH0tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT01ZmQ4OTZkZTY5 ZmJlMjQ0MjFlYjZiMGZmOGQyZjhiNGMzY2JhM2YzMDI1Y2VhY2QzMDIxNzJmMzlhOGFiYWEyCitj aGVja3N1bT00NTNiMTQ2NGZjMzg1N2RlMjY5YTdjYjBlYmQ5NjZhZmUwMjE3MWQ5N2JlZjY3MmEw YjhhMGE2ZDQzZTBjZWJmCiAKIGRvX2NoZWNrKCkgewogCTogIyBUZXN0cyBmYWlsIGluIG9sZGVy IHZlcnNpb25zIGFzIHdlbGwKCkZyb20gN2FkNzQ1ODM3MWIwMTQwZDVjMjA3MWZmOTYyZDRmNDRj OGU0NTBiYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogU3VuLCAzMCBBcHIgMjAyMyAyMDoyMjoyNiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMTI4LzEzMF0gZ3N0MS1weXRob24zOiB1cGRhdGUgdG8gMS4yMi4yCgotLS0KIHNyY3Br Z3MvZ3N0MS1weXRob24zL3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGlu c2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QxLXB5 dGhvbjMvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdDEtcHl0aG9uMy90ZW1wbGF0ZQppbmRleCAzZjU2 NGFjNjRiOTMuLjc4OWU0MGYwMzZlYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QxLXB5dGhvbjMv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QxLXB5dGhvbjMvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QxLXB5dGhvbjMnCiBwa2duYW1lPWdzdDEtcHl0 aG9uMwotdmVyc2lvbj0xLjIwLjMKLXJldmlzaW9uPTIKK3ZlcnNpb249MS4yMi4yCityZXZpc2lv bj0xCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHB5dGhv bjMiCiBtYWtlZGVwZW5kcz0ibGliZ2xpYi1kZXZlbCBweXRob24zLWRldmVsIHB5dGhvbjMtZ29i amVjdC1kZXZlbCBnc3QtcGx1Z2lucy1iYXNlMS1kZXZlbCIKQEAgLTExLDQgKzExLDQgQEAgbWFp bnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkxHUEwt Mi4xLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9y ZyIKIGRpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjL2dzdC1weXRob24vZ3N0LXB5dGhvbi0ke3Zl cnNpb259LnRhci54eiIKLWNoZWNrc3VtPWRiMzQ4MTIwZWFlOTU1YjhjYzRkZTM1NjBhN2VhMDZl MzZkNmUxZGRiYWE5OWE3YWQ5NmI1OTg0NjYwMWNmZGMKK2NoZWNrc3VtPWJlZjJiM2Q4MmNlNGJl NDZiNzc1YjFiYjU2MzA1YzEwMDNlZTAxYjUzNWE1M2E4MmY5ZmU4OTI0OTcyMTUzYWQKCkZyb20g ZTBmMmI4MTQ2NTZiZmJkMTY2MjA4YmFiOWExYTNkYzQ3MTFlYzRmZCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAzMCBB cHIgMjAyMyAyMDoyMjoyNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTI5LzEzMF0gZ3N0cmVhbWVy LXZhYXBpOiB1cGRhdGUgdG8gMS4yMi4yCgotLS0KIHNyY3BrZ3MvZ3N0cmVhbWVyLXZhYXBpL3Rl bXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0cmVhbWVyLXZhYXBpL3RlbXBsYXRlIGIv c3JjcGtncy9nc3RyZWFtZXItdmFhcGkvdGVtcGxhdGUKaW5kZXggM2NjNGUwNTc1NTlhLi4wYTVl ZThiMWNhM2YgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0cmVhbWVyLXZhYXBpL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvZ3N0cmVhbWVyLXZhYXBpL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZ3N0cmVhbWVyLXZhYXBpJwogcGtnbmFtZT1nc3RyZWFtZXItdmFh cGkKLXZlcnNpb249MS4yMC4zCit2ZXJzaW9uPTEuMjIuMgogcmV2aXNpb249MQogYnVpbGRfc3R5 bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKQEAgLTExLDcgKzExLDcgQEAg bGljZW5zZT0iTEdQTC0yLjEtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIu ZnJlZWRlc2t0b3Aub3JnIgogY2hhbmdlbG9nPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVu dC5jb20vR1N0cmVhbWVyL2dzdHJlYW1lci12YWFwaS9tYXN0ZXIvQ2hhbmdlTG9nIgogZGlzdGZp bGVzPSIke2hvbWVwYWdlfS9zcmMvZ3N0cmVhbWVyLXZhYXBpL2dzdHJlYW1lci12YWFwaS0ke3Zl cnNpb259LnRhci54eiIKLWNoZWNrc3VtPTZlZTk5ZWIzMTZhYmRkZTlhZDM3MDAyOTE1YmQ4YzM4 Njc5MThmNmZkYzc0YjdjZjJhYzRjMWFlMGQ2OTBiNDUKK2NoZWNrc3VtPWQyZTY0MmY5NzQ1Zjk3 ZDlmNzNhN2Y1MDg1ZTc2NTlhOWEzMWZlMjA5Yjc3NGU2ZTQ1ZGFlMDQxYjQzNWRmMDYKIAogcHJl X2NoZWNrKCkgewogCSMgU2VlbXMgdG8gbmVlZCBjZXJ0YWluIGhhcmR3YXJlIHRvIHBhc3MKCkZy b20gOTNlMGFmZTkwZGQ1YTJhZTNmY2RiMTQzYzYyYTMxOTI2ODFhNjUzMCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAz MCBBcHIgMjAyMyAyMDoyMjoyNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTMwLzEzMF0gZ3N0LWxp YmF2OiB1cGRhdGUgdG8gMS4yMi4yCgotLS0KIHNyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlIHwg NiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1s aWJhdi90ZW1wbGF0ZQppbmRleCBmMDgyYmQyMTFjNjUuLjhjNzJmYzNlOTdlZSAxMDA2NDQKLS0t IGEvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtbGliYXYvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtbGliYXYnCiBw a2duYW1lPWdzdC1saWJhdgotdmVyc2lvbj0xLjIwLjMKLXJldmlzaW9uPTIKK3ZlcnNpb249MS4y Mi4yCityZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIHlhc20iCiBtYWtlZGVwZW5kcz0ib3JjLWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRl dmVsIGZmbXBlZy1kZXZlbCIKQEAgLTExLDcgKzExLDcgQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQg PG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkxHUEwtMi4wLW9yLWxhdGVyIgogaG9t ZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKIGRpc3RmaWxlcz0iJHto b21lcGFnZX0vc3JjLyR7cGtnbmFtZX0vJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci54eiIKLWNo ZWNrc3VtPTNmZWRkMTA1NjBmY2RmYWExYjY0NjJjYmY3OWEzOGM0ZTdiNTdkN2YzOTAzNTkzOTNm YzBjZWY2ZGJmMjdkZmUKK2NoZWNrc3VtPWZjYWFmOTg3OGZlOGYzYmM4MjMxN2VmMTNhMTU1ODgy NGNiNjhkZjFmODk2OGM2Nzk3ZjU1NmM1ZTMzYmNmZmQKIAogY2FzZSAiJFhCUFNfVEFSR0VUX01B Q0hJTkUiIGluCiAJKi1tdXNsKSAjIFJlcXVpcmVkIGJ5IG11c2wgZm9yIE1fU1FSVDFfMgo= --===============8607413357142639109==--