From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 22229 invoked from network); 4 Jul 2023 14:18:16 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 4 Jul 2023 14:18:16 -0000 Content-Type: multipart/mixed; boundary="===============7232513806979916305==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_ffmpeg6_split?= To: ml@inbox.vuxu.org From: zlice Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Tue, 04 Jul 2023 16:18:15 +0200 List-Id: Message-ID: <20230704141815.FwbOGwV4h-DPfUQHsa88RgAu6gaZR4rGumkZZVRVvc0@z> GitHub notification mails are now in MIME to allow UTF8. --===============7232513806979916305== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgemxpY2UgYWdhaW5zdCBtYXN0ZXIg b24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL3psaWNl L3ZvaWQtcGFja2FnZXMgZmZtcGVnNi1zcGxpdApodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NjEKCmZmbXBlZzYgc3BsaXQKW2NpIHNraXBdDQoNCg0K IyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQoNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhp cyBQUjogKipZRVMqKg0KDQptYWluIHRlc3RpbmcgaGFzIGJlZW4gdmFhcGkgaW4gRmlyZWZveCBO aWdodGx5IGFuZCBlbmMvZGVjIGluIFNob3RjdXQgb24gSW50ZWwgQTc3MA0KDQojIyMjIE5ldyBw YWNrYWdlDQoNCi0gVGhpcyBuZXcgcGFja2FnZSBjb25mb3JtcyB0byB0aGUgW3BhY2thZ2UgcmVx dWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Js b2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCNwYWNrYWdlLXJlcXVpcmVtZW50cyk6ICoqWUVTKioN Cg0KIyMjIyBMb2NhbCBidWlsZCB0ZXN0aW5nDQoNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkg Zm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsICoqeDg2XzY0KioNCg0KIyMjIyBEaXNjdXNzaW9u DQoNCkNvbnRpbnVhdGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBh Y2thZ2VzL3B1bGwvMzYzMTUNCg0KYGxpYmF2cmVzYW1wbGVgIGlzIGRlcHJlY2F0ZWQsIGJ1dCBt YXJrZWQgYXMgYSBkZXBlbmRlbmN5IHdoZW4gdHJ5aW5nIHRvIGJ1aWxkIG90aGVyIHBhY2thZ2Vz IGFuZCBpbnN0YWxsIGBmZm1wZWdgKDYpLiBJIHRoaW5rIHRoZSByaWdodCB3YXkgdG8gaGFuZGxl IHRoaXMgaXMgbWFrZSBhIG1ldGEgcGFja2FnZSBhbmQgdGhlIGFkZCB0byByZW1vdmFscz8NCg0K DQojIyMjIyBDb21taXQgbmFtaW5nIC8gbWlzYw0KDQp+fkNvbW1pdHMgYXJlICdkaXJ0eScgcmln aHQgbm93LCBydW5uaW5nIHdpdGggW2dzdHJlYW1lciAxLjIyLjEgdXBkYXRlc10oaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQyODYxKSBhbmQgW0ludGVs IE9wZW5DTF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxs LzQzMDg0KS4gVGhpcyB3aWxsIGFsc28gbWFrZSBbaW50ZWwgcGFja2FnZXMgcHJdKGh0dHBzOi8v Z2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80MTEzMikgb2Jzb2xldGUu fn4gKHNlZSBSZXF1aXJlbWVudHMgYmVsb3cpDQoNCk1haW50YWluZXIgZm9yIHByZXZpb3VzIGZm bXBlZyg0KSB3YXMgb3JwaGFuZWQsIEkgY2FuIHB1dCBteSBuYW1lIGluIHRoZXJlIGlmIHRoYXQg bWF0dGVycywgdGhvdWdoIEkgZG9uJ3QgZXhhY3RseSBzZWUgbXlzZWxmIGtlZXBpbmcgdXAgb24g ZmZtcGVnLg0KDQpUaGlzIHVwZGF0ZXMgUVQ1IHdoaWNoIGxvb2tzIGxpa2UgaXQgaXMgdXN1YWxs eSBob3N0ZWQgYnkgSm9obm55LiBOb3Qgc3VyZSBpZiB0aGVyZSdzIGFueSByZWFzb24gdG8gc3Rh eSB0aGVyZSBvciB0aGVzZSBzb3VyY2VzIGFyZSBmaW5lLg0KDQojIyMjIyBTVElMTCBGRk1QRUc0 DQoNClRoZXNlIGFyZSBhIG1peCBvZiBlbXVsYXRvcnMsIGdhbWVzIGFuZC9vciBvbGRlciBwYWNr YWdlcy4NCg0KLSBhdHRyYWN0IChtdWx0aXBsZSBwYXRjaGVzIGluIG1hc3RlcikNCi0gYXVkYWNp dHkgKGh0dHBzOi8vZ2l0aHViLmNvbS9hdWRhY2l0eS9hdWRhY2l0eS9pc3N1ZXMvMjMwNSBhbmQg aHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9wb3J0bWVkaWEvd2lraS9wb3J0c21mLyBpcyAnYmV0 YScpDQotIGNjZXh0cmFjdG9yIChtYXN0ZXIgcGF0Y2hlcz8gbm8gcmVsZWFzZSkNCi0gdmljZQ0K LSBrb2RpDQotIG1sdCAob25seSBkZXAgbGVmdCBpcyBmbG93YmxhZGUpDQotIH5+c3luZmlnICht bHQpfn4gKHdvcmsgd2l0aCBtbHQ3LCBidW1wIHN5bmZpZ3N0dWRpbykNCi0gdHZoZWFkZW5kDQot IHNzcg0KLSBzcGVrLWFsdGVybmF0aXZlDQotIHBwc3NwcA0KLSBvbGl2ZQ0KLSBtb2MNCi0gbWVk aWFzdHJlYW1lcg0KLSBsaWJleHRyYWN0b3INCi0gaWRqYw0KLSBoZWRnZXdhcnMNCi0gfn5mZm1w ZWd0aHVtYm5haWxlcn5+IChwYXRjaGVzIGZvciBtb3ZpZWRlY29kZXIueHh4IGZpbGVzKQ0KLSB+ fmZmbXBlZ3RodW1ic35+IChsYXRlc3QgY29tcGlsZXMpDQotIGRlYWRiZWVmDQotIG9teHBsYXll cg0KLSBxdGF2IChmb3JrIGhhcyBmZm1wZWcgNSBwYXRjaCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9j bWd1by9RdEFWKQ0KLSBgdmxjYCAodmxjNCB3aWxsIHN1cHBvcnQgZmZtcGVnNSwgdGhlcmUncyBh IHBhdGNoIHRvIGJ1aWxkIDMueCB3aXRoIGZmbXBlZzUgYnV0IGl0IHdpbGwgbGFjayB2YWFwaSkN Ci0gYG9zZ2AgKE9wZW5TY2VuZUdyYXBoIHBsdXMgYHhpbmUtbGliYCkNCg0KDQojIyMjIyBIQVZF IE5PVCBCVUlMVCBZRVQNCg0KLSBvbXhwbGF5ZXIgKHJwaSBvbmx5PyBmZm1wZWc0KQ0KLSBrb2Rp IChiaWcsIGJ1dCBmZm1wZWc0KQ0KDQoNCiMjIyMjIFVQREFURUQgKGZvciBmZm1wZWc2KQ0KDQot IH5+YmxlbmRlcjogdXBkYXRlIHRvIDMuNS4xfn4gfn53aWxsIGJlIHJldmJ1bXAgd2l0aH5+IGh0 dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80Mzk5Mg0KLSB1 bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAuDQotIGd1dmN2aWV3OiB1cGRhdGUgdG8gMi4wLjguDQot IHF0NTogdXBkYXRlIHRvIDUuMTUuOA0KLSBxdDUtd2ViZW5naW5lOiB1cGRhdGUgdG8gNS4xOC4x Mw0KLSBzaGlib2tlbjI6IHJldmJ1bXAgZm9yIHF0NS4xNS44IChwYXRjaCkNCi0gcHl0aG9uMy1w eXNpZGUyOiB1cGRhdGUgdG8gNS4xNS44IChwYXRjaCkNCg0KDQojIyMjIyBSZXF1aXJlbWVudHMN Cg0KLSB+fltnc3RyZWFtZXIgMS4yMi4yXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvNDI4NjEpfn4gLSBhIGZldyBwYWNrYWdlcyB1c2UgZmZtcGVnLWRl dmVsIGFuZCByZXF1aXJlIGEgcmV2YnVtcA0KDQotIFtJbnRlbCBQYWNrYWdlc10oaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQxMTMyKSAtIGZmbXBlZzQg dXNlcyBkaWZmZXJlbnQgbGlicmFyaWVzIHRoYW4gNiAobGlibWZ4IC8gSW50ZWwtTWVkaWFTREsg dnMgb25seSBvbmVWUEwgdGhhdCBJbnRlbCBpcyBtb3ZpbmcgdG8pLCBib3RoIGFyZSBpbmNsdWRl ZCBoZXJlDQoNCi0gfn5bc2hvdGN1dCAyMy4wNS4xNF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQt bGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQ0MjYwKX5+CgpBIHBhdGNoIGZpbGUgZnJvbSBodHRw czovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NjEucGF0Y2gg aXMgYXR0YWNoZWQ= --===============7232513806979916305== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSA0ODllZjgwOTFmMTdiYjE3MjYyMmJiYmNjOGY1OGZjZGZhYzFhNWJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDE5OjU1OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTEzXSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLi93b3JrYXJv dW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0tLQogc3JjcGtn cy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgNDEgKysrKystLS0tLS0t LQogNSBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxNDAgZGVsZXRpb25zKC0pCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvZmlsZXMvYWx0aXZlYy5wYXRjaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmct cG9pbnQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3dv cmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaAoKZGlmZiAtLWdpdCBhL2NvbW1v bi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDRlNmE1YTY2M2ZhMDIuLmE3NzM0NmNjZTNl OWEgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29tbW9uL3NobGlicwpAQCAtMzg3 LDE1ICszODcsMjMgQEAgbGliaWQzdGFnLnNvLjAgbGliaWQzdGFnLTAuMTUuMWJfMQogbGliZ2lm LnNvLjcgZ2lmbGliLTUuMS4wXzEKIGxpYkltbGliMi5zby4xIGltbGliMi0xLjQuMl8xCiBsaWJt cDNsYW1lLnNvLjAgbGFtZS0zLjk4LjJfMQotbGliYXZkZXZpY2Uuc28uNTggbGliYXZkZXZpY2Ut NC4wXzEKLWxpYmF2Zm9ybWF0LnNvLjU4IGxpYmF2Zm9ybWF0LTQuMF8xCi1saWJzd3NjYWxlLnNv LjUgbGlic3dzY2FsZS00LjBfMQotbGlic3dyZXNhbXBsZS5zby4zIGxpYnN3cmVzYW1wbGUtNC4w XzEKLWxpYmF2cmVzYW1wbGUuc28uNCBsaWJhdnJlc2FtcGxlLTQuMF8xCi1saWJwb3N0cHJvYy5z by41NSBsaWJwb3N0cHJvYy00LjBfMQotbGliYXZjb2RlYy5zby41OCBsaWJhdmNvZGVjLTQuMF8x Ci1saWJhdnV0aWwuc28uNTYgbGliYXZ1dGlsLTQuMF8xCi1saWJhdmZpbHRlci5zby43IGxpYmF2 ZmlsdGVyLTQuMF8xCitsaWJhdmRldmljZS5zby42MCBsaWJhdmRldmljZS02LjBfMQorbGliYXZm b3JtYXQuc28uNjAgbGliYXZmb3JtYXQtNi4wXzEKK2xpYnN3c2NhbGUuc28uNyBsaWJzd3NjYWxl LTYuMF8xCitsaWJzd3Jlc2FtcGxlLnNvLjQgbGlic3dyZXNhbXBsZS02LjBfMQorbGlicG9zdHBy b2Muc28uNTcgbGlicG9zdHByb2MtNi4wXzEKK2xpYmF2Y29kZWMuc28uNjAgbGliYXZjb2RlYy02 LjBfMQorbGliYXZ1dGlsLnNvLjU4IGxpYmF2dXRpbC02LjBfMQorbGliYXZmaWx0ZXIuc28uOSBs aWJhdmZpbHRlci02LjBfMQorbGliYXZkZXZpY2Uuc28uNTggbGliYXZkZXZpY2U0LTQuMF8xCits aWJhdmZvcm1hdC5zby41OCBsaWJhdmZvcm1hdDQtNC4wXzEKK2xpYnN3c2NhbGUuc28uNSBsaWJz d3NjYWxlNC00LjBfMQorbGlic3dyZXNhbXBsZS5zby4zIGxpYnN3cmVzYW1wbGU0LTQuMF8xCits aWJhdnJlc2FtcGxlLnNvLjQgbGliYXZyZXNhbXBsZTQtNC4wXzEKK2xpYnBvc3Rwcm9jLnNvLjU1 IGxpYnBvc3Rwcm9jNC00LjBfMQorbGliYXZjb2RlYy5zby41OCBsaWJhdmNvZGVjNC00LjBfMQor bGliYXZ1dGlsLnNvLjU2IGxpYmF2dXRpbDQtNC4wXzEKK2xpYmF2ZmlsdGVyLnNvLjcgbGliYXZm aWx0ZXI0LTQuMF8xCiBsaWJTREwtMS4yLnNvLjAgU0RMLTEuMi4xNF8xCiBsaWJTRExfaW1hZ2Ut MS4yLnNvLjAgU0RMX2ltYWdlLTEuMi4xMF8xCiBsaWJ4MjY0LnNvLjE1NyB4MjY0LTIwMTkwNTA3 LjIyNDVfMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWcvZmlsZXMvYWx0aXZlYy5wYXRjaCBi L3NyY3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2ZWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDljNTcyMDA0NjMzMjAuLjAwMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9mZm1w ZWcvZmlsZXMvYWx0aXZlYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLXJl dmVydCBzb21lIGFsdGl2ZWMgc3BlY2lmaWMgY2hhbmdlIG9uIGFsbCBwcGMqIGV4Y2VwdCBwcGM2 NGxlKgotCi1xNjY6ICJXZSBzaG91bGQgYWxzbyB0aHJvdyBpbiBhIHJldmVydCBvZiBGRm1wZWcv RkZtcGVnQDNhNTU3YzUgYnV0IG9ubHkKLWNvbmRpdGlvbmFsbHksIGZvciBwcGMqIGJ1dCBub3Qg cHBjNjRsZSogKHRoZSBuZXcgY29kZSBpcyB2YWxpZCBmb3IKLVBPV0VSOCBWU1ggd2hpY2ggTEUg dGFyZ2V0cyBhcyBhIGJhc2VsaW5lIGJ1dCBub3QgQkUpIgotCi0KLVRoaXMgcmV2ZXJ0cyBjb21t aXQgM2E1NTdjNWQ4OGI3YjE1YjU5NTRiYTI3NDNmZWJiMDU1NTQ5YjUzNi4KLS0tLQotIGxpYnN3 c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jIHwgMjQgKysrKysrKysrKysrKysrKysrKystLS0t Ci0gMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRp ZmYgLS1naXQgYS9saWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYyBiL2xpYnN3c2NhbGUv cHBjL3l1djJyZ2JfYWx0aXZlYy5jCi1pbmRleCA1MzY1NDUyOTNkLi5jMWUyODUyYWRiIDEwMDY0 NAotLS0tIGEvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMKLSsrKyBiL2xpYnN3c2Nh bGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCi1AQCAtMzA1LDYgKzMwNSw5IEBAIHN0YXRpYyBpbnQg YWx0aXZlY18gIyMgbmFtZShTd3NDb250ZXh0ICpjLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4s ICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBSMSwgRzEsIEIxOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciB1bnNpZ25l ZCBjaGFyIFIsIEcsIEI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgY29uc3QgdmVjdG9yIHVuc2lnbmVk IGNoYXIgKnkxaXZQLCAqeTJpdlAsICp1aXZQLCAqdml2UDsgICAgICAgICAgICAgICAgICBcCi0r ICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIGFsaWduX3Blcm07ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVj dG9yIHNpZ25lZCBzaG9ydCBsQ1kgICAgICAgPSBjLT5DWTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbE9ZICAgICAgID0gYy0+ T1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3Igc2ln bmVkIHNob3J0IGxDUlYgICAgICA9IGMtPkNSVjsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLUBAIC0zMzUsMTMgKzMzOCwyNiBAQCBzdGF0aWMgaW50IGFsdGl2ZWNfICMjIG5h bWUoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAgICAgICBcCi0g ICAgICAgICB2ZWNfZHN0c3Qob3V0ZSwgKDB4MDIwMDAwMDIgfCAoKCh3ICogMyArIDMyKSAvIDMy KSA8PCAxNikpLCAxKTsgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg IGZvciAoaiA9IDA7IGogPCB3IC8gMTY7IGorKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgeTAgPSB2ZWNfeGwoMCwgeTFpKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHkx aXZQID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHkxaTsgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgICAgICAgICB5Mml2UCA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciAqKSB5Mmk7ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgdWl2UCAgPSAo Y29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdWk7ICAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgICAgICAgICAgIHZpdlAgID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHZp OyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAg ICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkxaSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHkwID0gKHZlY3RvciB1bnNpZ25lZCBj aGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAg ICAgICAgICAgICB2ZWNfcGVybSh5MWl2UFswXSwgeTFpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAg ICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAgIHkxID0g dmVjX3hsKDAsIHkyaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgeTJpKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgeTEgPSAodmVjdG9y IHVuc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHkyaXZQWzBdLCB5Mml2UFsxXSwgYWxpZ25f cGVybSk7ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAg ICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB1aSk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB1 aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB1 ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh1aXZQWzBdLCB1aXZQWzFd LCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLS0gICAgICAgICAgICB2ID0gKHZlY3RvciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHZpKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZl Y19sdnNsKDAsIHZpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg ICAgICAgICAgIHYgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHZpdlBb MF0sIHZpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAg ICAgIHZlY19zdWIodSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0tLSAKLTIuMjcuMAotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVz L2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoIGIvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggOWE1NTE3OGM3NGYwZi4uMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9wYXRj aGVzL2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTgg KzAsMCBAQAotLS0tIGEvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTEwLTI2IDIxOjAz OjAzLjAwMDAwMDAwMCArMDIwMAotKysrIGIvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3 LTExLTIxIDExOjA2OjQ5LjYwMjI4NDQyMiArMDEwMAotQEAgLTM5LDYgKzM5LDE1IEBACi0gI2Vu ZGlmCi0gI2luY2x1ZGUgPGZlbnYuaD4KLSAKLSsjaWYgKEZFX0FMTF9FWENFUFQgPT0gMCkKLSsv KiBFLmcuIEFSTSBzb2Z0IGZsb2F0IGRvZXMgbm90IGRlZmluZSB0aGVzZSAqLwotKyNkZWZpbmUg RkVfSU5WQUxJRCAgICAwCi0rI2RlZmluZSBGRV9ESVZCWVpFUk8gIDAKLSsjZGVmaW5lIEZFX09W RVJGTE9XICAgMAotKyNkZWZpbmUgRkVfVU5ERVJGTE9XICAwCi0rI2RlZmluZSBGRV9JTkVYQUNU ICAgIDAKLSsjZW5kaWYKLSsKLSAjaWYgQ09ORklHX0xJQkZPTlRDT05GSUcKLSAjaW5jbHVkZSA8 Zm9udGNvbmZpZy9mb250Y29uZmlnLmg+Ci0gI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Zm bXBlZy9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaCBiL3Ny Y3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGUzZjY4YTQxNWI4Li4wMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRl b24tdmFhcGktYnVnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSA4 MTFkMjkwODQ0MjA2ZmM3M2RjMzljM2U1YjY3ZDVkODk1YmFlZGY4IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQotRnJvbTogUmFpbmVyIEhvY2hlY2tlciA8ZmVybmV0bWVudGFAb25saW5lLmRlPgot RGF0ZTogU2F0LCAyNiBKYW4gMjAxOSAxOTo0ODozNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBh dmNvZGVjL3ZhYXBpX2gyNjQ6IHNraXAgZGVjb2RlIGlmIHBpYyBoYXMgbm8gc2xpY2VzCi0KLVRo aXMgZml4ZXMgLyB3b3JrYXJvdW5kcyBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3df YnVnLmNnaT9pZD0xMDUzNjguCi1JdCB3YXMgaGl0IGZyZXF1ZW50bHkgd2hlbiB3YXRjaGluZyBo MjY0IGNoYW5uZWxzIHJlY2VpdmVkIHZpYSBEVkItWC4KLUNvcnJlc3BvbmRpbmcga29kaSBidWc6 IGh0dHBzOi8vZ2l0aHViLmNvbS94Ym1jL3hibWMvaXNzdWVzLzE1NzA0Ci0tLS0KLSBsaWJhdmNv ZGVjL3ZhYXBpX2gyNjQuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25z KCspCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYyBiL2xpYmF2Y29kZWMv dmFhcGlfaDI2NC5jCi1pbmRleCA1ODU0NTg3YTI1NS4uZjEyZmRjNDU3YTQgMTAwNjQ0Ci0tLS0g YS9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYwotKysrIGIvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMK LUBAIC0zMTcsNiArMzE3LDExIEBAIHN0YXRpYyBpbnQgdmFhcGlfaDI2NF9lbmRfZnJhbWUoQVZD b2RlY0NvbnRleHQgKmF2Y3R4KQotICAgICBIMjY0U2xpY2VDb250ZXh0ICpzbCA9ICZoLT5zbGlj ZV9jdHhbMF07Ci0gICAgIGludCByZXQ7Ci0gCi0rICAgIGlmIChwaWMtPm5iX3NsaWNlcyA9PSAw KSB7Ci0rICAgICAgICByZXQgPSBBVkVSUk9SX0lOVkFMSUREQVRBOwotKyAgICAgICAgZ290byBm aW5pc2g7Ci0rICAgIH0KLSsKLSAgICAgcmV0ID0gZmZfdmFhcGlfZGVjb2RlX2lzc3VlKGF2Y3R4 LCBwaWMpOwotICAgICBpZiAocmV0IDwgMCkKLSAgICAgICAgIGdvdG8gZmluaXNoOwpkaWZmIC0t Z2l0IGEvc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXBlZy90ZW1wbGF0ZQpp bmRleCBhYTA1OGFhYjljYTlmLi5hMmM1ZDg3NTBkZDZiIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Zm bXBlZy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZmbXBlZy90ZW1wbGF0ZQpAQCAtMSwxNSArMSwx NCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZmZtcGVnJwogIyBhdWRhY2l0eSBhbHNvIG5lZWRz IHRvIGJlIGJ1bXBlZCB3aGVuIGEgbmV3IGZmbXBlZyB2ZXJzaW9uIGJ1bXBzIGxpYmF2Zm9ybWF0 J3Mgc29uYW1lIQotcGtnbmFtZT1mZm1wZWcKLXZlcnNpb249NC40LjQKLXJldmlzaW9uPTIKK3Zl cnNpb249Ni4wCityZXZpc2lvbj0xCiBzaG9ydF9kZXNjPSJEZWNvZGluZywgZW5jb2RpbmcgYW5k IHN0cmVhbWluZyBzb2Z0d2FyZSIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxp bnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8v d3d3LmZmbXBlZy5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50 LmNvbS9GRm1wZWcvRkZtcGVnL21hc3Rlci9DaGFuZ2Vsb2ciCiBkaXN0ZmlsZXM9Imh0dHBzOi8v d3d3LmZmbXBlZy5vcmcvcmVsZWFzZXMvZmZtcGVnLSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tz dW09ZTgwYjM4MGQ1OTVjODA5MDYwZjY2Zjk2YTVkODQ5NTExZWY0YTc2YTI2Yjc2ZWFjZjU3Nzhi OTRjMzU3MDMwOQorY2hlY2tzdW09NTdiZTg3YzIyZDliNDljMTEyYjZkMjRiYzY3ZDQyNTA4NjYw ZTZiNzE4YjNkYjg5YzQ0ZTQ3ZTI4OTEzNzA4MgogCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25m aWcgcGVybCIKIG1ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGJ6aXAyLWRldmVsIGZyZWV0eXBlLWRl dmVsIGFsc2EtbGliLWRldmVsIGxpYlhmaXhlcy1kZXZlbApAQCAtMjYsMTIgKzI1LDEzIEBAIG1h a2VkZXBlbmRzPSJ6bGliLWRldmVsIGJ6aXAyLWRldmVsIGZyZWV0eXBlLWRldmVsIGFsc2EtbGli LWRldmVsIGxpYlhmaXhlcy1kZXZlCiAgJCh2b3B0X2lmIHdlYnAgbGlid2VicC1kZXZlbCkgJCh2 b3B0X2lmIHNvZmEgbGlibXlzb2ZhLWRldmVsKQogICQodm9wdF9pZiBkcm0gbGliZHJtLWRldmVs KSAkKHZvcHRfaWYgc3Z0YXYxIGxpYnN2dC1hdjEtZGV2ZWwpCiAgJCh2b3B0X2lmIHNydCBzcnQt ZGV2ZWwpICQodm9wdF9pZiByaXN0IGxpYnJpc3QtZGV2ZWwpCi0gJCh2b3B0X2lmIHZ1bGthbiAn dnVsa2FuLWxvYWRlciBWdWxrYW4tSGVhZGVycycpCisgJCh2b3B0X2lmIHZ1bGthbiAndnVsa2Fu LWxvYWRlciBWdWxrYW4tSGVhZGVycyBWdWxrYW4tVG9vbHMgVnVsa2FuLVZhbGlkYXRpb25MYXll cnMnKQorICQodm9wdF9pZiBvbmV2cGwgJ29uZXZwbCBvbmV2cGwtZGV2ZWwnKQogICQodm9wdF9p ZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSAkKHZvcHRfaWYgbnZkZWMgbnYtY29kZWMtaGVhZGVy cykiCiBkZXBlbmRzPSJmZnBsYXk+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCiAKIGJ1aWxkX29w dGlvbnM9IngyNjUgdjRsMiB2YWFwaSB2ZHBhdSB2cHggZmRrX2FhYyBhb20gbnZlbmMgc25kaW8g cHVsc2VhdWRpbwotIGRhdjFkIHppbWcgd2VicCBzb2ZhIHZ1bGthbiBkcm0gc3Z0YXYxIHNydCBy aXN0IG52ZGVjIgorIGRhdjFkIHppbWcgd2VicCBzb2ZhIHZ1bGthbiBkcm0gc3Z0YXYxIHNydCBy aXN0IG52ZGVjIG9uZXZwbCIKIGJ1aWxkX29wdGlvbnNfZGVmYXVsdD0ieDI2NSB2NGwyIHZweCBh b20gc25kaW8gcHVsc2VhdWRpbyBkYXYxZCB3ZWJwIHZ1bGthbiBkcm0gc3J0IHJpc3QiCiBkZXNj X29wdGlvbl9zcnQ9IkVuYWJsZSBzdXBwb3J0IGZvciBTUlQgKFNlY3VyZSwgUmVsaWFibGUsIFRy YW5zcG9ydCkiCiBkZXNjX29wdGlvbl9yaXN0PSJFbmFibGUgc3VwcG9ydCBmb3IgUklTVCAoUmVs aWFibGUgSW50ZXJuZXQgU3RyZWFtIFRyYW5zcG9ydCkiCkBAIC0zOSwxMCArMzksOCBAQCBkZXNj X29wdGlvbl9zb2ZhPSJFbmFibGUgc3VwcG9ydCBmb3IgQUVTIFNPRkEiCiBkZXNjX29wdGlvbl93 ZWJwPSJFbmFibGUgc3VwcG9ydCBmb3IgV2ViUCIKIAogY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJ TkUiIGluCi0JaTY4Nip8eDg2XzY0KikKLQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5hc20iCi0JCWJ1 aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSBudmVuYyBudmRlYyIKLQkJOzsKKwlp Njg2KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52ZGVjIjs7 CisJeDg2XzY0KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52 ZGVjIG9uZXZwbCI7OwogCXBwYzY0KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZk cGF1Ijs7CiAJbWlwcyopIENGTEFHUz0iLW1uYW49bGVnYWN5Ijs7CiBlc2FjCkBAIC0xMTksMTgg KzExNywxOSBAQCBkb19jb25maWd1cmUoKSB7CiAJCSQodm9wdF9lbmFibGUgeDI2NSBsaWJ4MjY1 KSBcCiAJCSQodm9wdF9lbmFibGUgdjRsMiBsaWJ2NGwyKSBcCiAJCSQodm9wdF9lbmFibGUgYW9t IGxpYmFvbSkgJCh2b3B0X2VuYWJsZSB2YWFwaSkgJCh2b3B0X2VuYWJsZSB2ZHBhdSkgXAotCQkt LWVuYWJsZS1saWJiczJiIC0tZW5hYmxlLWF2cmVzYW1wbGUgLS1lbmFibGUtbGlidmlkc3RhYiBc CisJCS0tZW5hYmxlLWxpYmJzMmIgLS1lbmFibGUtbGlidmlkc3RhYiBcCiAJCSQodm9wdF9lbmFi bGUgZGF2MWQgbGliZGF2MWQpIFwKIAkJJCh2b3B0X2VuYWJsZSB6aW1nIGxpYnppbWcpIFwKIAkJ JCh2b3B0X2VuYWJsZSB3ZWJwIGxpYndlYnApIFwKIAkJJCh2b3B0X2VuYWJsZSBzb2ZhIGxpYm15 c29mYSkgXAogCQkkKHZvcHRfZW5hYmxlIHZ1bGthbikgXAorCQkkKHZvcHRfZW5hYmxlIG9uZXZw bCBsaWJ2cGwpIFwKIAkJJCh2b3B0X2VuYWJsZSBkcm0gbGliZHJtKSBcCiAJCSQodm9wdF9lbmFi bGUgc3Z0YXYxIGxpYnN2dGF2MSkgXAogCQkkKHZvcHRfZW5hYmxlIHNydCBsaWJzcnQpIFwKIAkJ JCh2b3B0X2VuYWJsZSByaXN0IGxpYnJpc3QpIFwKLQkJJCh2b3B0X2lmIG52ZW5jICctLWVuYWJs ZS1udmVuYycpIFwKLQkJJCh2b3B0X2lmIG52ZGVjICctLWVuYWJsZS1udmRlYycpCisJCSQodm9w dF9lbmFibGUgbnZlbmMgbnZlbmMpIFwKKwkJJCh2b3B0X2VuYWJsZSBudmRlYyBudmRlYykKIH0K IAogZG9fYnVpbGQoKSB7CkBAIC0xNTcsMTAgKzE1Niw4IEBAIGxpYmF2ZGV2aWNlX3BhY2thZ2Uo KSB7CiB9CiAKIGxpYmF2cmVzYW1wbGVfcGFja2FnZSgpIHsKLQlzaG9ydF9kZXNjPSJGRm1wZWcg YXVkaW8gcmVzYW1wbGluZyBsaWJyYXJ5IgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSAidXNy L2xpYi9saWJhdnJlc2FtcGxlLnNvLioiCi0JfQorCXNob3J0X2Rlc2M9IlBhY2thZ2UgZGVwcmVj YXRlZCwgcmVtb3ZhbCBuZWVkZWQiCisJYnVpbGRfc3R5bGU9bWV0YQogfQogCiBsaWJhdmZvcm1h dF9wYWNrYWdlKCkgewpAQCAtMjE0LDE1ICsyMTEsOSBAQCBmZm1wZWctZGV2ZWxfcGFja2FnZSgp IHsKIAkJbGliYXZmaWx0ZXI+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KIAkJbGlicG9zdHByb2M+ PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KIAkJbGlic3dzY2FsZT49JHt2ZXJzaW9ufV8ke3Jldmlz aW9ufQotCQlsaWJzd3Jlc2FtcGxlPj0ke3ZlcnNpb259XyR7cmV2aXNpb259Ci0JCWxpYmF2cmVz YW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJCWxpYnN3cmVzYW1wbGU+PSR7dmVyc2lv bn1fJHtyZXZpc2lvbn0iCiAJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgotCi0J aWYgWyAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiID0gImk2ODYiIF07IHRoZW4KLQkJIyAvdXNyL2Jp bi9zdHJpcDogZXJyb3I6IHRoZSBpbnB1dCBmaWxlICcvZGVzdGRpci8vZmZtcGVnLWRldmVsLTQu NC40L3Vzci9saWIvbGliYXZmaWx0ZXIuYSh2Zl9hdGFkZW5vaXNlLm8pJyBoYXMgbm8gc2VjdGlv bnMKLQkJbm9zdHJpcF9maWxlcz0iL3Vzci9saWIvbGliYXZmaWx0ZXIuYSIKLQlmaQotCisJY29u ZmxpY3RzPSJmZm1wZWc0LWRldmVsIgogCXBrZ19pbnN0YWxsKCkgewogCQl2bW92ZSB1c3IvaW5j bHVkZQogCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZwoKRnJvbSBkYjIwZjA2YmFhYTZiMWY3ZTYw ODJkZmIxYTNkZmI1ZjRiYmMwNmQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU2OjIyIC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwMDIvMTEzXSBOZXcgcGFja2FnZTogZmZtcGVnNC00LjQuNC4K Ci0tLQogc3JjcGtncy9mZm1wZWc0LWRldmVsICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNoICAgICAgICAgICB8ICA2MCAr KysrKwogLi4uL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2ggICAgIHwgIDE4 ICsrCiAuLi5oLWxpYmF2Y29kZWMtbGlic3Z0YXYxLXRlbl9iaXRfZm9ybWF0LmRpZmYgfCAgNDAg KysrCiAuLi4vd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoICAgfCAgMjgg KysKIHNyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICB8IDI0MCAr KysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvbGliYXZjb2RlYzQgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2ZGV2aWNlNCAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdmZpbHRlcjQgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZmb3JtYXQ0ICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2cmVzYW1wbGU0ICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjcGtncy9saWJhdnV0aWw0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyY3BrZ3MvbGlicG9zdHByb2M0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MSArCiBzcmNwa2dzL2xpYnN3cmVzYW1wbGU0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjcGtncy9saWJzd3NjYWxlNCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IDE1IGZpbGVzIGNoYW5nZWQsIDM5NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMjAwMDAg c3JjcGtncy9mZm1wZWc0LWRldmVsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWc0 L2ZpbGVzL2FsdGl2ZWMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQv cGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0YXYxLXRlbl9i aXRfZm9ybWF0LmRpZmYKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQvcGF0Y2hl cy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2gKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2ZmbXBlZzQvdGVtcGxhdGUKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dz L2xpYmF2Y29kZWM0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdmRldmljZTQKIGNy ZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2ZmlsdGVyNAogY3JlYXRlIG1vZGUgMTIwMDAw IHNyY3BrZ3MvbGliYXZmb3JtYXQ0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdnJl c2FtcGxlNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZ1dGlsNAogY3JlYXRlIG1v ZGUgMTIwMDAwIHNyY3BrZ3MvbGlicG9zdHByb2M0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtn cy9saWJzd3Jlc2FtcGxlNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGlic3dzY2FsZTQK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQtZGV2ZWwgYi9zcmNwa2dzL2ZmbXBlZzQtZGV2 ZWwKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZi ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbApAQCAtMCwwICsxIEBA CitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0 aXZlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi45YzU3 MjAwNDYzMzIwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2 ZWMucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorcmV2ZXJ0IHNvbWUgYWx0aXZlYyBzcGVjaWZpYyBj aGFuZ2Ugb24gYWxsIHBwYyogZXhjZXB0IHBwYzY0bGUqCisKK3E2NjogIldlIHNob3VsZCBhbHNv IHRocm93IGluIGEgcmV2ZXJ0IG9mIEZGbXBlZy9GRm1wZWdAM2E1NTdjNSBidXQgb25seQorY29u ZGl0aW9uYWxseSwgZm9yIHBwYyogYnV0IG5vdCBwcGM2NGxlKiAodGhlIG5ldyBjb2RlIGlzIHZh bGlkIGZvcgorUE9XRVI4IFZTWCB3aGljaCBMRSB0YXJnZXRzIGFzIGEgYmFzZWxpbmUgYnV0IG5v dCBCRSkiCisKKworVGhpcyByZXZlcnRzIGNvbW1pdCAzYTU1N2M1ZDg4YjdiMTViNTk1NGJhMjc0 M2ZlYmIwNTU1NDliNTM2LgorLS0tCisgbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMg fCAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0 aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvcHBjL3l1 djJyZ2JfYWx0aXZlYy5jIGIvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMKK2luZGV4 IDUzNjU0NTI5M2QuLmMxZTI4NTJhZGIgMTAwNjQ0CistLS0gYS9saWJzd3NjYWxlL3BwYy95dXYy cmdiX2FsdGl2ZWMuYworKysrIGIvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMKK0BA IC0zMDUsNiArMzA1LDkgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1lKFN3c0NvbnRleHQg KmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAorICAgICB2ZWN0b3Igc2ln bmVkIHNob3J0IFIxLCBHMSwgQjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgUiwgRywgQjsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorKyAgICBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqeTFpdlAsICp5Mml2UCwgKnVpdlAs ICp2aXZQOyAgICAgICAgICAgICAgICAgIFwKKysgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgYWxp Z25fcGVybTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxDWSAgICAgICA9 IGMtPkNZOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdmVjdG9y IHNpZ25lZCBzaG9ydCBsT1kgICAgICAgPSBjLT5PWTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbENSViAgICAgID0gYy0+Q1JW OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTMzNSwxMyArMzM4LDI2 IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFtZShTd3NDb250ZXh0ICpjLCBjb25zdCB1bnNp Z25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKKyAgICAgICAgIHZlY19kc3RzdChvdXRlLCAoMHgw MjAwMDAwMiB8ICgoKHcgKiAzICsgMzIpIC8gMzIpIDw8IDE2KSksIDEpOyAgICAgICBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgZm9yIChqID0gMDsgaiA8IHcgLyAxNjsgaisr KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAg ICB5MCA9IHZlY194bCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisrICAgICAgICAgICAgeTFpdlAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVk IGNoYXIgKikgeTFpOyAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkyaXZQ ID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHkyaTsgICAgICAgICAgICAgICAgICAg ICAgIFwKKysgICAgICAgICAgICB1aXZQICA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAq KSB1aTsgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgdml2UCAgPSAoY29u c3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdmk7ICAgICAgICAgICAgICAgICAgICAgICAgXAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2 c2woMCwgeTFpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAg ICAgICAgeTAgPSAodmVjdG9yIHVuc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHkxaXZQWzBd LCB5MWl2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCistICAgICAgICAgICAgeTEgPSB2ZWNfeGwoMCwgeTJpKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIGFsaWduX3Bl cm0gPSB2ZWNfbHZzbCgwLCB5MmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKysgICAgICAgICAgICB5MSA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgdmVjX3Bl cm0oeTJpdlBbMF0sIHkyaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hh cikgdmVjX3hsKDAsIHVpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAg ICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHVpKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAg ICAgIHZlY19wZXJtKHVpdlBbMF0sIHVpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIHYgPSAodmVjdG9y IHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdmkpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgdiA9ICh2ZWN0b3Igc2lnbmVk IGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAg ICAgICAgICAgICAgICAgdmVjX3Blcm0odml2UFswXSwgdml2UFsxXSwgYWxpZ25fcGVybSk7ICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg dSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgdmVjX3N1Yih1LCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0tIAorMi4yNy4wCisKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBh dGNoIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uOWE1NTE3OGM3NGYw ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZs b2F0aW5nLXBvaW50LnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKKy0tLSBhL2xpYmF2ZmlsdGVyL3Zm X2RyYXd0ZXh0LmMJMjAxNy0xMC0yNiAyMTowMzowMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBiL2xp YmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMJMjAxNy0xMS0yMSAxMTowNjo0OS42MDIyODQ0MjIgKzAx MDAKK0BAIC0zOSw2ICszOSwxNSBAQAorICNlbmRpZgorICNpbmNsdWRlIDxmZW52Lmg+CisgCisr I2lmIChGRV9BTExfRVhDRVBUID09IDApCisrLyogRS5nLiBBUk0gc29mdCBmbG9hdCBkb2VzIG5v dCBkZWZpbmUgdGhlc2UgKi8KKysjZGVmaW5lIEZFX0lOVkFMSUQgICAgMAorKyNkZWZpbmUgRkVf RElWQllaRVJPICAwCisrI2RlZmluZSBGRV9PVkVSRkxPVyAgIDAKKysjZGVmaW5lIEZFX1VOREVS RkxPVyAgMAorKyNkZWZpbmUgRkVfSU5FWEFDVCAgICAwCisrI2VuZGlmCisrCisgI2lmIENPTkZJ R19MSUJGT05UQ09ORklHCisgI2luY2x1ZGUgPGZvbnRjb25maWcvZm9udGNvbmZpZy5oPgorICNl bmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvcGF0Y2gtbGliYXZjb2Rl Yy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVz L3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0YXYxLXRlbl9iaXRfZm9ybWF0LmRpZmYKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uYWE5NDhmN2E4YTJkZgotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0 YXYxLXRlbl9iaXRfZm9ybWF0LmRpZmYKQEAgLTAsMCArMSw0MCBAQAorIz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEZyb20gMDMxZjE1NjFjZDI4NjU5NmNkYjM3 NGRhMzJmOGFhODE2Y2UzYjEzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKKyMgRnJvbTogQ2hy aXN0b3BoZXIgRGVnYXdhIDxjaHJpc3RvcGhlci5kZWdhd2FAaW50ZWwuY29tPgorIyBEYXRlOiBU aHUsIDIwIE9jdCAyMDIyIDIyOjU1OjI3IC0wNTAwCisjIFN1YmplY3Q6IFtQQVRDSF0gYXZjb2Rl Yy9saWJzdnRhdjE6IHJlbW92ZSBjb21wcmVzc2VkX3Rlbl9iaXRfZm9ybWF0IGFuZCBzaW1wbGlm eSBhbGxvY19idWZmZXIKKyMKKyMgY29tcHJlc3NlZF90ZW5fYml0X2Zvcm1hdCBoYXMgYmVlbiBk ZXByZWNhdGVkIHVwc3RyZWFtIGFuZCBoYXMgbm8gZWZmZWN0CisjIGFuZCBjYW4gYmUgcmVtb3Zl ZC4gUGx1cywgdGVjaG5pY2FsbHkgaXQgd2FzIG5ldmVyIHVzZWQgaW4gdGhlIGZpcnN0IHBsYWNl CisjIHNpbmNlIGl0IHdvdWxkIHJlcXVpcmUgdGhlIGFwcCAoZmZtcGVnKSB0byBzZXQgaXQgYW5k IGRvIGFkZGl0aW9uYWwKKyMgcHJvY2Vzc2luZyBvZiB0aGUgaW5wdXQgZnJhbWVzLgorIworIyBB bHNvIHNpbXBsaWZ5IGFsbG9jX2J1ZmZlciBieSByZW1vdmluZyBjYWxjdWxhdGlvbnMgcmVsYXRp bmcgdG8gdGhlIG5vbi1leGlzdGFudCBwcm9jZXNzaW5nLgorIworIyBTaWduZWQtb2ZmLWJ5OiBD aHJpc3RvcGhlciBEZWdhd2EgPGNocmlzdG9waGVyLmRlZ2F3YUBpbnRlbC5jb20+CisjPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhL2xpYmF2Y29kZWMvbGli c3Z0YXYxLmMKKysrKyBiL2xpYmF2Y29kZWMvbGlic3Z0YXYxLmMKK0BAIC0xMjQsMTYgKzEyNCwx MiBAQCBzdGF0aWMgaW50IHN2dF9wcmludF9lcnJvcih2b2lkICpsb2dfY3R4LCBFYkVycm9yVHlw ZSBlcnIsCisgCisgc3RhdGljIGludCBhbGxvY19idWZmZXIoRWJTdnRBdjFFbmNDb25maWd1cmF0 aW9uICpjb25maWcsIFN2dENvbnRleHQgKnN2dF9lbmMpCisgeworLSAgICBjb25zdCBpbnQgICAg cGFja19tb2RlXzEwYml0ID0KKy0gICAgICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4g OCkgJiYgKGNvbmZpZy0+Y29tcHJlc3NlZF90ZW5fYml0X2Zvcm1hdCA9PSAwKSA/IDEgOiAwOwor LSAgICBjb25zdCBzaXplX3QgbHVtYV9zaXplXzhiaXQgID0KKy0gICAgICAgIGNvbmZpZy0+c291 cmNlX3dpZHRoICogY29uZmlnLT5zb3VyY2VfaGVpZ2h0ICogKDEgPDwgcGFja19tb2RlXzEwYml0 KTsKKy0gICAgY29uc3Qgc2l6ZV90IGx1bWFfc2l6ZV8xMGJpdCA9CistICAgICAgICAoY29uZmln LT5lbmNvZGVyX2JpdF9kZXB0aCA+IDggJiYgcGFja19tb2RlXzEwYml0ID09IDApID8gbHVtYV9z aXplXzhiaXQgOiAwOworKyAgICBjb25zdCBzaXplX3QgbHVtYV9zaXplID0gY29uZmlnLT5zb3Vy Y2Vfd2lkdGggKiBjb25maWctPnNvdXJjZV9oZWlnaHQgKgorKyAgICAgICAgKGNvbmZpZy0+ZW5j b2Rlcl9iaXRfZGVwdGggPiA4ID8gMiA6IDEpOworIAorICAgICBFYlN2dElPRm9ybWF0ICppbl9k YXRhOworIAorLSAgICBzdnRfZW5jLT5yYXdfc2l6ZSA9IChsdW1hX3NpemVfOGJpdCArIGx1bWFf c2l6ZV8xMGJpdCkgKiAzIC8gMjsKKysgICAgc3Z0X2VuYy0+cmF3X3NpemUgPSBsdW1hX3NpemUg KiAzIC8gMjsKKyAKKyAgICAgLy8gYWxsb2NhdGUgYnVmZmVyIGZvciBpbiBhbmQgb3V0CisgICAg IHN2dF9lbmMtPmluX2J1ZiAgICAgICAgICAgPSBhdl9tYWxsb2N6KHNpemVvZigqc3Z0X2VuYy0+ aW5fYnVmKSk7CistLSAKK0dpdExhYgorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0 Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggYi9zcmNwa2dzL2Zm bXBlZzQvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMDBlM2Y2OGE0MTViOAotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1y ZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDgxMWQyOTA4NDQy MDZmYzczZGMzOWMzZTViNjdkNWQ4OTViYWVkZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBSYWluZXIgSG9jaGVja2VyIDxmZXJuZXRtZW50YUBvbmxpbmUuZGU+CitEYXRlOiBTYXQs IDI2IEphbiAyMDE5IDE5OjQ4OjM1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2Y29kZWMvdmFh cGlfaDI2NDogc2tpcCBkZWNvZGUgaWYgcGljIGhhcyBubyBzbGljZXMKKworVGhpcyBmaXhlcyAv IHdvcmthcm91bmRzIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lk PTEwNTM2OC4KK0l0IHdhcyBoaXQgZnJlcXVlbnRseSB3aGVuIHdhdGNoaW5nIGgyNjQgY2hhbm5l bHMgcmVjZWl2ZWQgdmlhIERWQi1YLgorQ29ycmVzcG9uZGluZyBrb2RpIGJ1ZzogaHR0cHM6Ly9n aXRodWIuY29tL3hibWMveGJtYy9pc3N1ZXMvMTU3MDQKKy0tLQorIGxpYmF2Y29kZWMvdmFhcGlf aDI2NC5jIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jIGIvbGliYXZjb2RlYy92YWFwaV9oMjY0 LmMKK2luZGV4IDU4NTQ1ODdhMjU1Li5mMTJmZGM0NTdhNCAxMDA2NDQKKy0tLSBhL2xpYmF2Y29k ZWMvdmFhcGlfaDI2NC5jCisrKysgYi9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYworQEAgLTMxNyw2 ICszMTcsMTEgQEAgc3RhdGljIGludCB2YWFwaV9oMjY0X2VuZF9mcmFtZShBVkNvZGVjQ29udGV4 dCAqYXZjdHgpCisgICAgIEgyNjRTbGljZUNvbnRleHQgKnNsID0gJmgtPnNsaWNlX2N0eFswXTsK KyAgICAgaW50IHJldDsKKyAKKysgICAgaWYgKHBpYy0+bmJfc2xpY2VzID09IDApIHsKKysgICAg ICAgIHJldCA9IEFWRVJST1JfSU5WQUxJRERBVEE7CisrICAgICAgICBnb3RvIGZpbmlzaDsKKysg ICAgfQorKworICAgICByZXQgPSBmZl92YWFwaV9kZWNvZGVfaXNzdWUoYXZjdHgsIHBpYyk7Cisg ICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgZ290byBmaW5pc2g7CmRpZmYgLS1naXQgYS9zcmNw a2dzL2ZmbXBlZzQvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXBlZzQvdGVtcGxhdGUKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uZjJjODUxNjkzZDM2NwotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZQpAQCAtMCwwICsxLDI0MCBAQAorIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZmZtcGVnNCcKKyMgYXVkYWNpdHkgYWxzbyBuZWVkcyB0byBiZSBi dW1wZWQgd2hlbiBhIG5ldyBmZm1wZWcgdmVyc2lvbiBidW1wcyBsaWJhdmZvcm1hdCdzIHNvbmFt ZSEKK3BrZ25hbWU9ZmZtcGVnNAordmVyc2lvbj00LjQuNAorcmV2aXNpb249MQorc2hvcnRfZGVz Yz0iRGVjb2RpbmcsIGVuY29kaW5nIGFuZCBzdHJlYW1pbmcgc29mdHdhcmUgLSBmZm1wZWc0IGxp YnJhcmllcyBvbmx5IgorbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3Jn PiIKK2xpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCitob21lcGFnZT0iaHR0cHM6Ly93d3cuZmZt cGVnLm9yZyIKK2NoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0ZG bXBlZy9GRm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly93d3cuZmZt cGVnLm9yZy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJzaW9ufS50YXIueHoiCitjaGVja3N1bT1lODBi MzgwZDU5NWM4MDkwNjBmNjZmOTZhNWQ4NDk1MTFlZjRhNzZhMjZiNzZlYWNmNTc3OGI5NGMzNTcw MzA5CisKK2hvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBwZXJsIgorbWFrZWRlcGVuZHM9Inps aWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGliWGZp eGVzLWRldmVsCisgbGliWGV4dC1kZXZlbCBsaWJYdk1DLWRldmVsIGxpYnhjYi1kZXZlbCBsYW1l LWRldmVsIGxpYnRoZW9yYS1kZXZlbAorIGxpYnZvcmJpcy1kZXZlbCB4MjY0LWRldmVsIHh2aWRj b3JlLWRldmVsIGphY2stZGV2ZWwgU0RMMi1kZXZlbAorIGxpYmNkaW8tcGFyYW5vaWEtZGV2ZWwg bGlicnRtcC1kZXZlbCBsaWJtb2RwbHVnLWRldmVsIGdudXRscy1kZXZlbAorIHNwZWV4LWRldmVs IGNlbHQtZGV2ZWwgaGFyZmJ1enotZGV2ZWwgbGliYXNzLWRldmVsIG9wdXMtZGV2ZWwgb2NsLWlj ZC1kZXZlbAorIGxpYmJzMmItZGV2ZWwgbGlidmlkc3RhYi1kZXZlbCB2bWFmLWRldmVsICQodm9w dF9pZiBwdWxzZWF1ZGlvIHB1bHNlYXVkaW8tZGV2ZWwpCisgJCh2b3B0X2lmIHZhYXBpIGxpYnZh LWRldmVsKSAkKHZvcHRfaWYgdmRwYXUgbGlidmRwYXUtZGV2ZWwpCisgJCh2b3B0X2lmIHgyNjUg eDI2NS1kZXZlbCkgJCh2b3B0X2lmIHY0bDIgdjRsLXV0aWxzLWRldmVsKQorICQodm9wdF9pZiBm ZGtfYWFjIGZkay1hYWMtZGV2ZWwpICQodm9wdF9pZiB2cHggbGlidnB4LWRldmVsKQorICQodm9w dF9pZiBhb20gbGliYW9tLWRldmVsKSAkKHZvcHRfaWYgc25kaW8gc25kaW8tZGV2ZWwpCisgJCh2 b3B0X2lmIGRhdjFkIGxpYmRhdjFkLWRldmVsKSAkKHZvcHRfaWYgemltZyB6aW1nLWRldmVsKQor ICQodm9wdF9pZiB3ZWJwIGxpYndlYnAtZGV2ZWwpICQodm9wdF9pZiBzb2ZhIGxpYm15c29mYS1k ZXZlbCkKKyAkKHZvcHRfaWYgZHJtIGxpYmRybS1kZXZlbCkgJCh2b3B0X2lmIHN2dGF2MSBsaWJz dnQtYXYxLWRldmVsKQorICQodm9wdF9pZiBzcnQgc3J0LWRldmVsKSAkKHZvcHRfaWYgcmlzdCBs aWJyaXN0LWRldmVsKQorICQodm9wdF9pZiB2dWxrYW4gJ3Z1bGthbi1sb2FkZXIgVnVsa2FuLUhl YWRlcnMnKQorICQodm9wdF9pZiBtZnggJ2xpYm1meCBsaWJtZngtZGV2ZWwnKQorICQodm9wdF9p ZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSAkKHZvcHRfaWYgbnZkZWMgbnYtY29kZWMtaGVhZGVy cykiCisKK2J1aWxkX29wdGlvbnM9IngyNjUgdjRsMiB2YWFwaSB2ZHBhdSB2cHggZmRrX2FhYyBh b20gbnZlbmMgc25kaW8gcHVsc2VhdWRpbworIGRhdjFkIHppbWcgd2VicCBzb2ZhIHZ1bGthbiBk cm0gc3Z0YXYxIHNydCByaXN0IG52ZGVjIG1meCIKK2J1aWxkX29wdGlvbnNfZGVmYXVsdD0ieDI2 NSB2NGwyIHZweCBhb20gc25kaW8gcHVsc2VhdWRpbyBkYXYxZCB3ZWJwIHZ1bGthbiBkcm0gc3J0 IHJpc3QiCisKK2Rlc2Nfb3B0aW9uX3NydD0iRW5hYmxlIHN1cHBvcnQgZm9yIFNSVCAoU2VjdXJl LCBSZWxpYWJsZSwgVHJhbnNwb3J0KSIKK2Rlc2Nfb3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBwb3J0 IGZvciBSSVNUIChSZWxpYWJsZSBJbnRlcm5ldCBTdHJlYW0gVHJhbnNwb3J0KSIKK2Rlc2Nfb3B0 aW9uX3NvZmE9IkVuYWJsZSBzdXBwb3J0IGZvciBBRVMgU09GQSIKK2Rlc2Nfb3B0aW9uX3dlYnA9 IkVuYWJsZSBzdXBwb3J0IGZvciBXZWJQIgorCitjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIg aW4KKwlpNjg2KikKKwkJCWhvc3RtYWtlZGVwZW5kcys9IiBuYXNtIgorCQkJYnVpbGRfb3B0aW9u c19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52ZGVjIgorCQkJOzsKKwl4ODZfNjQqKQor CQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5hc20iCisJCQlidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIg dmFhcGkgdmRwYXUgbWZ4IG52ZW5jIG52ZGVjIgorCQkJOzsKKwlwcGM2NCopIGJ1aWxkX29wdGlv bnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSI7OworCW1pcHMqKSBDRkxBR1M9Ii1tbmFuPWxlZ2Fj eSI7OworZXNhYworCitpZiBbICIkWEJQU19UQVJHRVRfV09SRFNJWkUiICE9ICIzMiIgXTsgdGhl bgorCWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiBzdnRhdjEiCitmaQorCitpZiBbICIkWEJQU19U QVJHRVRfTk9fQVRPTUlDOCIgXTsgdGhlbgorCW1ha2VkZXBlbmRzKz0iIGxpYmF0b21pYy1kZXZl bCIKK2ZpCisKK19hcHBseV9wYXRjaCgpIHsKKwlsb2NhbCBhcmdzPSIkMSIgcG5hbWU9IiQoYmFz ZW5hbWUgJDIpIgorCisJaWYgWyAhIC1mICIuJHtwbmFtZX1fZG9uZSIgXTsgdGhlbgorCQlwYXRj aCAtTiAkYXJncyAtaSAkMgorCQl0b3VjaCAuJHtwbmFtZX1fZG9uZQorCWZpCit9CisKK3Bvc3Rf cGF0Y2goKSB7CisJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXBwYzY0bGUqKSA7 OworCQlwcGMqKSBfYXBwbHlfcGF0Y2ggLXAxICR7RklMRVNESVJ9L2FsdGl2ZWMucGF0Y2ggOzsK Kwllc2FjCisKKwl2c2VkIC1pIGxpYmF2ZmlsdGVyL3ZmX2xpYnZtYWYuYyAtZSAncyEvdXNyL2xv Y2FsL3NoYXJlL21vZGVsL1wodm1hZl92MC42LjFcKS5wa2whL3Vzci9zaGFyZS92bWFmL1wxLmpz b24hJworfQorCitkb19jb25maWd1cmUoKSB7CisJIyBGaXggZ2NjIG9uIHg4Nl82NC1tdXNsIG9u bHkKKwlpZiBbICIkWEJQU19UQVJHRVRfTUFDSElORSIgPSAieDg2XzY0LW11c2wiIF07IHRoZW4K KwkJdnNlZCAtaSBjb25maWd1cmUgLWUgInM7X2NmbGFnc19zcGVlZD0nLU8zJztfY2ZsYWdzX3Nw ZWVkPSctTzInOyIKKwlmaQorCisJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCWNhc2Ug IiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCQkJYXJtKikgX2FyY2g9ImFybSI7OworCQkJYWFy Y2g2NCopIF9hcmNoPSJhYXJjaDY0Ijs7CisJCQltaXBzKikgX2FyY2g9Im1pcHMiOzsKKwkJCXBw YzY0KikgX2FyY2g9InBwYzY0Ijs7CisJCQlwcGMqKSBfYXJjaD0icHBjIjs7CisJCQkqKSBfYXJj aD0iJHtYQlBTX1RBUkdFVF9NQUNISU5FJSUtbXVzbH0iOzsKKwkJZXNhYworCisJCV9hcmdzKz0i IC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUKKwkJCS0tc3lzcm9vdD0kWEJQU19DUk9TU19CQVNFCisJ CQktLWNyb3NzLXByZWZpeD0ke1hCUFNfQ1JPU1NfVFJJUExFVH0tCisJCQktLXRhcmdldC1vcz1s aW51eCAtLWFyY2g9JHtfYXJjaH0iCisJZmkKKworCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5F IiBpbgorCQlwcGN8cHBjLW11c2wpIF9hcmdzKz0iIC0tZGlzYWJsZS1hbHRpdmVjIjs7CisJZXNh YworCisJaWYgWyAiJFhCUFNfVEFSR0VUX05PX0FUT01JQzgiIF07IHRoZW4KKwkJX2FyZ3MrPSIg LS1leHRyYS1saWJzPS1sYXRvbWljIgorCWZpCisKKwkuL2NvbmZpZ3VyZSAtLXByZWZpeD0vdXNy IC0tZGlzYWJsZS1kZWJ1ZyAtLWVuYWJsZS1ncGwgLS1lbmFibGUtZ251dGxzIFwKKwkJLS1kaXNh YmxlLXN0cmlwcGluZyBcCisJCS0tZW5hYmxlLWxpYmNkaW8gLS1lbmFibGUtdmVyc2lvbjMgLS1l bmFibGUtcnVudGltZS1jcHVkZXRlY3QgXAorCQktLWVuYWJsZS1saWJtcDNsYW1lIC0tZW5hYmxl LWxpYnZvcmJpcyAtLWVuYWJsZS1saWJ4dmlkIFwKKwkJLS1lbmFibGUtbGlieDI2NCAkKHZvcHRf ZW5hYmxlIHZweCBsaWJ2cHgpIC0tZW5hYmxlLWxpYnRoZW9yYSBcCisJCS0tZW5hYmxlLXNoYXJl ZCAtLWVuYWJsZS1zdGF0aWMgLS1lbmFibGUtbGlieGNiIFwKKwkJJCh2b3B0X2VuYWJsZSBwdWxz ZWF1ZGlvIGxpYnB1bHNlKSAtLWVuYWJsZS1saWJmcmVldHlwZSAtLWVuYWJsZS1saWJtb2RwbHVn IFwKKwkJLS1lbmFibGUtbGlic3BlZXggLS1lbmFibGUtbGliY2VsdCAtLWVuYWJsZS1saWJhc3Mg XAorCQktLWVuYWJsZS1saWJvcHVzIC0tZW5hYmxlLWxpYnJ0bXAgLS1lbmFibGUtbGliamFjayBc CisJCSQodm9wdF9pZiBmZGtfYWFjICctLWVuYWJsZS1ub25mcmVlIC0tZW5hYmxlLWxpYmZkay1h YWMnKSBcCisJCS0tZGlzYWJsZS1saWJvcGVuY29yZV9hbXJuYiAtLWRpc2FibGUtbGlib3BlbmNv cmVfYW1yd2IgXAorCQktLWRpc2FibGUtbGlib3BlbmpwZWcgXAorCQktLWVuYWJsZS1wb3N0cHJv YyAtLWVuYWJsZS1vcGVuY2wgJHtfYXJnc30gLS1lbmFibGUtbGlidm1hZiAke19hcmdzfSBcCisJ CSQodm9wdF9lbmFibGUgeDI2NSBsaWJ4MjY1KSBcCisJCSQodm9wdF9lbmFibGUgdjRsMiBsaWJ2 NGwyKSBcCisJCSQodm9wdF9lbmFibGUgYW9tIGxpYmFvbSkgJCh2b3B0X2VuYWJsZSB2YWFwaSkg JCh2b3B0X2VuYWJsZSB2ZHBhdSkgXAorCQktLWVuYWJsZS1saWJiczJiIC0tZW5hYmxlLWF2cmVz YW1wbGUgLS1lbmFibGUtbGlidmlkc3RhYiBcCisJCSQodm9wdF9lbmFibGUgZGF2MWQgbGliZGF2 MWQpIFwKKwkJJCh2b3B0X2VuYWJsZSB6aW1nIGxpYnppbWcpIFwKKwkJJCh2b3B0X2VuYWJsZSB3 ZWJwIGxpYndlYnApIFwKKwkJJCh2b3B0X2VuYWJsZSBzb2ZhIGxpYm15c29mYSkgXAorCQkkKHZv cHRfZW5hYmxlIHZ1bGthbikgXAorCQkkKHZvcHRfZW5hYmxlIGRybSBsaWJkcm0pIFwKKwkJJCh2 b3B0X2VuYWJsZSBzdnRhdjEgbGlic3Z0YXYxKSBcCisJCSQodm9wdF9lbmFibGUgc3J0IGxpYnNy dCkgXAorCQkkKHZvcHRfZW5hYmxlIHJpc3QgbGlicmlzdCkgXAorCQkkKHZvcHRfZW5hYmxlIG1m eCBsaWJtZngpIFwKKwkJJCh2b3B0X2lmIG52ZW5jICctLWVuYWJsZS1udmVuYycpIFwKKwkJJCh2 b3B0X2lmIG52ZGVjICctLWVuYWJsZS1udmRlYycpCit9CisKK2RvX2J1aWxkKCkgeworCW1ha2Ug JHttYWtlam9ic30KKwltYWtlIGRvYy9mZnttcGVnLHBsYXl9LjEKK30KKworZG9faW5zdGFsbCgp IHsKKwltYWtlIERFU1RESVI9JHtERVNURElSfSBpbnN0YWxsIGluc3RhbGwtbWFuCisJcm0gLXJm ICR7REVTVERJUn0vdXNyL2JpbgorfQorCitsaWJhdmNvZGVjNF9wYWNrYWdlKCkgeworCXNob3J0 X2Rlc2M9IkZGbXBlZyBjb2RlYyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAi dXNyL2xpYi9saWJhdmNvZGVjLnNvLioiCisJfQorfQorCitsaWJhdmRldmljZTRfcGFja2FnZSgp IHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgZGV2aWNlIGhhbmRsaW5nIGxpYnJhcnkiCisJcGtnX2lu c3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2ZGV2aWNlLnNvLioiCisJfQorfQorCits aWJhdnJlc2FtcGxlNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyBhdWRpbyByZXNh bXBsaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2 cmVzYW1wbGUuc28uKiIKKwl9Cit9CisKK2xpYmF2Zm9ybWF0NF9wYWNrYWdlKCkgeworCXNob3J0 X2Rlc2M9IkZGbXBlZyBmaWxlIGZvcm1hdCBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2 bW92ZSAidXNyL2xpYi9saWJhdmZvcm1hdC5zby4qIgorCX0KK30KKworbGliYXZ1dGlsNF9wYWNr YWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyB1dGlsaXR5IGxpYnJhcnkiCisJcGtnX2luc3Rh bGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2dXRpbC5zby4qIgorCX0KK30KKworbGliYXZm aWx0ZXI0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGF1ZGlvL3ZpZGVvIGZpbHRl ciBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJhdmZpbHRl ci5zby4qIgorCX0KK30KKworbGlicG9zdHByb2M0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0i RkZtcGVnIHZpZGVvIHBvc3Rwcm9jZXNzaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJ CXZtb3ZlICJ1c3IvbGliL2xpYnBvc3Rwcm9jLnNvLioiCisJfQorfQorCitsaWJzd3NjYWxlNF9w YWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyB2aWRlbyBzY2FsaW5nIGxpYnJhcnkiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnN3c2NhbGUuc28uKiIKKwl9Cit9 CisKK2xpYnN3cmVzYW1wbGU0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIHZpZGVv IHJlc2FtcGxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIv bGlic3dyZXNhbXBsZS5zby4qIgorCX0KK30KKworZmZtcGVnNC1kZXZlbF9wYWNrYWdlKCkgewor CWRlcGVuZHM9IgorCQlsaWJhdmNvZGVjND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJh dmRldmljZTQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGliYXZmb3JtYXQ0Pj0ke3ZlcnNp b259XyR7cmV2aXNpb259CisJCWxpYmF2dXRpbDQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJ bGliYXZmaWx0ZXI0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnBvc3Rwcm9jND49JHt2 ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJzd3NjYWxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9u fQorCQlsaWJzd3Jlc2FtcGxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdnJlc2Ft cGxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1l bnQgZmlsZXMiCisJY29uZmxpY3RzPSJmZm1wZWctZGV2ZWwiCisJaWYgWyAiJFhCUFNfVEFSR0VU X01BQ0hJTkUiID0gImk2ODYiIF07IHRoZW4KKwkJIyAvdXNyL2Jpbi9zdHJpcDogZXJyb3I6IHRo ZSBpbnB1dCBmaWxlICcvZGVzdGRpci8vZmZtcGVnLWRldmVsLTQuNC40L3Vzci9saWIvbGliYXZm aWx0ZXIuYSh2Zl9hdGFkZW5vaXNlLm8pJyBoYXMgbm8gc2VjdGlvbnMKKwkJbm9zdHJpcF9maWxl cz0iL3Vzci9saWIvbGliYXZmaWx0ZXIuYSIKKwlmaQorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92 ZSB1c3IvaW5jbHVkZQorCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCQl2bW92ZSAidXNyL2xp Yi8qLmEiCisJCXZtb3ZlICJ1c3IvbGliLyouc28iCisJCXZtb3ZlIHVzci9zaGFyZS9mZm1wZWcv ZXhhbXBsZXMKKwkJdm1vdmUgdXNyL3NoYXJlL21hbi9tYW4zCisJfQorfQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9saWJhdmNvZGVjNCBiL3NyY3BrZ3MvbGliYXZjb2RlYzQKbmV3IGZpbGUgbW9kZSAx MjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvbGliYXZjb2RlYzQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZkZXZpY2U0IGIvc3Jj cGtncy9saWJhdmRldmljZTQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAw MC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZkZXZpY2U0 CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS9zcmNwa2dzL2xpYmF2ZmlsdGVyNCBiL3NyY3BrZ3MvbGliYXZmaWx0ZXI0Cm5ldyBm aWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2ZmlsdGVyNApAQCAtMCwwICsxIEBACitmZm1wZWc0 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmZv cm1hdDQgYi9zcmNwa2dzL2xpYmF2Zm9ybWF0NApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAw MDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9s aWJhdmZvcm1hdDQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZyZXNhbXBsZTQgYi9zcmNwa2dzL2xpYmF2 cmVzYW1wbGU0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2Yz NTRlN2M2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2cmVzYW1wbGU0CkBAIC0w LDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9zcmNwa2dzL2xpYmF2dXRpbDQgYi9zcmNwa2dzL2xpYmF2dXRpbDQKbmV3IGZpbGUgbW9kZSAx MjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvbGliYXZ1dGlsNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJwb3N0cHJvYzQgYi9zcmNw a2dzL2xpYnBvc3Rwcm9jNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAw Li44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJwb3N0cHJvYzQK QEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGlic3dyZXNhbXBsZTQgYi9zcmNwa2dzL2xpYnN3cmVzYW1wbGU0Cm5l dyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYnN3cmVzYW1wbGU0CkBAIC0wLDAgKzEgQEAKK2Zm bXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xp YnN3c2NhbGU0IGIvc3JjcGtncy9saWJzd3NjYWxlNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRl eCAwMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9saWJzd3NjYWxlNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQoKRnJvbSBlNzU4NTdhYThmMzk5ZWVmYWZlODBiYmVjMzU4OThkZDA4ZjQwYWJkIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU5OjA0IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDMv MTEzXSBvcGVuY3Y6IHVwZGF0ZSB0byA0LjcuMC4KCi0tLQogY29tbW9uL3NobGlicyAgICAgICAg ICAgfCAxMDQgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtn cy9vcGVuY3YvdGVtcGxhdGUgfCAgIDggKystLQogMiBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNlcnRp b25zKCspLCA1NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29t bW9uL3NobGlicwppbmRleCBhNzczNDZjY2UzZTlhLi5jYTBlZTA2NjIxNWVhIDEwMDY0NAotLS0g YS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTIxMzYsNTggKzIxMzYsNTgg QEAgbGliY2Fwc3RvbmUuc28uNCBjYXBzdG9uZS00LjBfMQogbGliaGF2ZWdlLnNvLjIgbGliaGF2 ZWdlZC0xLjkuMTFfMQogbGlibmloLnNvLjEgbGlibmloLTEuMC4zXzEKIGxpYm5paC1kYnVzLnNv LjEgbGlibmloLTEuMC4zXzEKLWxpYm9wZW5jdl9xdWFsaXR5LnNvLjQwNiBsaWJvcGVuY3YtNC42 LjBfMQotbGlib3BlbmN2X3JlZy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9z dXJmYWNlX21hdGNoaW5nLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3hwaG90 by5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mcmVldHlwZS5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mdXp6eS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9oZnMuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaW1nX2hh c2guc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfbGluZV9kZXNjcmlwdG9yLnNv LjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3NhbGllbmN5LnNvLjQwNiBsaWJvcGVu Y3YtNC42LjBfMQotbGlib3BlbmN2X3N0cnVjdHVyZWRfbGlnaHQuc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3ZfYXJ1Y28uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVu Y3ZfYmdzZWdtLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Jpb2luc3BpcmVk LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2NjYWxpYi5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mYWNlLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGli b3BlbmN2X3RyYWNraW5nLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3hmZWF0 dXJlczJkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X29wdGZsb3cuc28uNDA2 IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfeGltZ3Byb2Muc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3ZfcGxvdC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl90ZXh0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X21sLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X29iamRldGVjdC5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9kbm4uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc2hh cGUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3RpdGNoaW5nLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3Bob3RvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X3ZpZGVvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Nh bGliM2Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZmVhdHVyZXMyZC5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mbGFubi5zby40MDYgbGlib3BlbmN2LTQu Ni4wXzEKLWxpYm9wZW5jdl9oaWdoZ3VpLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X3ZpZGVvaW8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaW1nY29kZWNz LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ltZ3Byb2Muc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfY29yZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl9zdXBlcnJlcy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl92aWRl b3N0YWIuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZ2FwaS5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94b2JqZGV0ZWN0LnNvLjQwNiBsaWJvcGVuY3YtNC42 LjBfMQotbGlib3BlbmN2X2RhdGFzZXRzLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X2Rubl9vYmpkZXRlY3Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZG5u X3N1cGVycmVzLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2RwbS5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9waGFzZV91bndyYXBwaW5nLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N0ZXJlby5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9yYXBpZC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9pbnRl bnNpdHlfdHJhbnNmb3JtLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2FscGhh bWF0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2JhcmNvZGUuc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfbWNjLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQor bGlib3BlbmN2X3F1YWxpdHkuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfcmVn LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N1cmZhY2VfbWF0Y2hpbmcuc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfeHBob3RvLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X2ZyZWV0eXBlLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X2Z1enp5LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2hmcy5zby40 MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9pbWdfaGFzaC5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9saW5lX2Rlc2NyaXB0b3Iuc28uNDA3IGxpYm9wZW5jdi00Ljcu MF8xCitsaWJvcGVuY3Zfc2FsaWVuY3kuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVu Y3Zfc3RydWN0dXJlZF9saWdodC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9h cnVjby5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9iZ3NlZ20uc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYmlvaW5zcGlyZWQuc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3ZfY2NhbGliLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X2ZhY2Uuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfdHJhY2tpbmcuc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfeGZlYXR1cmVzMmQuc28uNDA3IGxpYm9w ZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfb3B0Zmxvdy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEK K2xpYm9wZW5jdl94aW1ncHJvYy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9w bG90LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3RleHQuc28uNDA3IGxpYm9w ZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfbWwuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3Zfb2JqZGV0ZWN0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Rubi5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zaGFwZS5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9zdGl0Y2hpbmcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfcGhvdG8uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfdmlkZW8u c28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfY2FsaWIzZC5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mZWF0dXJlczJkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X2ZsYW5uLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2hp Z2hndWkuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfdmlkZW9pby5zby40MDcg bGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9pbWdjb2RlY3Muc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3ZfaW1ncHJvYy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl9jb3JlLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N1cGVycmVzLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3ZpZGVvc3RhYi5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9nYXBpLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X3hvYmpkZXRlY3Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZGF0 YXNldHMuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZG5uX29iamRldGVjdC5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9kbm5fc3VwZXJyZXMuc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZHBtLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X3BoYXNlX3Vud3JhcHBpbmcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3Zfc3RlcmVvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3JhcGlkLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ludGVuc2l0eV90cmFuc2Zvcm0uc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYWxwaGFtYXQuc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3ZfYmFyY29kZS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl9tY2Muc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCiBsaWJ1bmljb25mLnNvLjQuNiB3 dnN0cmVhbXMtNC42LjFfMjAKIGxpYnd2YmFzZS5zby40LjYgd3ZzdHJlYW1zLTQuNi4xXzIwCiBs aWJ3dnV0aWxzLnNvLjQuNiB3dnN0cmVhbXMtNC42LjFfMjAKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv b3BlbmN2L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUKaW5kZXggNjljNjM1YjFh ZDJiYy4uNDFmMzE4M2YxNTgyZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdvcGVuY3YnCiBwa2duYW1lPW9wZW5jdgotdmVyc2lvbj00LjYuMAotcmV2aXNp b249NAordmVyc2lvbj00LjcuMAorcmV2aXNpb249MQogY3JlYXRlX3dya3NyYz15ZXMKIGJ1aWxk X3dya3NyYz0ke3BrZ25hbWV9LSR7dmVyc2lvbn0KIGJ1aWxkX3N0eWxlPWNtYWtlCkBAIC0yNCw4 ICsyNCw4IEBAIGhvbWVwYWdlPSJodHRwczovL29wZW5jdi5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBz Oi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2L3dpa2kvQ2hhbmdlTG9nIgogZGlzdGZpbGVzPSJo dHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6 CiAgaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfY29udHJpYi9hcmNoaXZlLyR7dmVy c2lvbn0udGFyLmd6PmNvbnRyaWIudGFyLmd6IgotY2hlY2tzdW09IjFlYzFjYmE2NWY5ZjIwZmU1 YTQxZmRhMTU4NmUwMWM3MGVhMGM5YTZkN2I2N2M5ZTEzZWRmMGNmZTIyMzkyNzcKLSAxNzc3ZDVm ZDJiNTkwMjljZjUzN2U1ZmQ2ZjhhYTY4ZDcwNzA3NTgyMmY5MGJkZTY4M2ZjZGUwODZmODVmN2E3 IgorY2hlY2tzdW09IjhkZjAwNzljZGJlMTc5NzQ4YTE4ZDQ0NzMxYWY2MmEyNDVhNDVlYmY1MDg1 MjIzZGMwMzEzMzk1NGM2NjI5NzMKKyA0MmRmODQwY2Y5MDU1ZTU5ZDBlMjJjMjQ5Y2ZiMTlmMDQ3 NDNlMWJkYWQxMTNkMzFiMTU3M2QzOTM0ZDYyNTg0IgogcGF0Y2hfYXJncz0iLU5wMSAtZCAke2J1 aWxkX3dya3NyY30iCiAjIHRlc3RzIGhhbmcgaW5kZW5maW5pdGVseSwgZXZlbiB3aXRoIHRlc3Qg ZGF0YSBpbmNsdWRlZAogbWFrZV9jaGVjaz1ubwoKRnJvbSA4NzJiMjdjY2FiODNmNmU2NjUyNGQ4 ZTZkMzY1ZTQwNzY3OWRhMTYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU5OjQ1IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMDQvMTEzXSBhY3Rpb25hOiByZXZidW1wIGZvciBvcGVuY3YtNC43 LjAKCi0tLQogc3JjcGtncy9hY3Rpb25hL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hY3Rp b25hL3RlbXBsYXRlIGIvc3JjcGtncy9hY3Rpb25hL3RlbXBsYXRlCmluZGV4IGNmNWYwYjdhMmFl NjEuLjBkODk5MzExZTZkZjcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdhY3Rpb25hJwogcGtnbmFtZT1hY3Rpb25hCiB2ZXJzaW9uPTMuMTAuMQotcmV2 aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSJQ S0dDT05GSUdfT1BFTkNWPW9wZW5jdjQiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1 LXBsdWdpbi1teXNxbCBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCgpGcm9tIDFkNzJlOTEyMDg3 N2ZkY2ZkYjllYzU1OGI1OTQzMmFhZGUyNDVlNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6 NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNS8xMTNdIHFpbWd2OiByZXZidW1wIGZvciBv cGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy9xaW1ndi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcWltZ3YvdGVtcGxhdGUgYi9zcmNwa2dzL3FpbWd2L3RlbXBsYXRlCmluZGV4IDdlYjMwZGIz Mzk5MmMuLmRkMzQxZGZlMWJmY2UgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ3FpbWd2JwogcGtnbmFtZT1xaW1ndgogdmVyc2lvbj0xLjAuMgotcmV2aXNpb249 MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIkKHZvcHRf aWYgdmlkZW8gLURWSURFT19TVVBQT1JUPU9OIC1EVklERU9fU1VQUE9SVD1PRkYpCiAgJCh2b3B0 X2lmIHNjYWxlIC1ET1BFTkNWX1NVUFBPUlQ9T04gLURPUEVOQ1ZfU1VQUE9SVD1PRkYpCgpGcm9t IGEzZGRkNzRlMzA2MDlkZjc2MmNkZDRkYTY5YjQxM2FiYjY4OWJhODcgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNi8xMTNdIHJldHJvc2hh cmU6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL3JldHJvc2hhcmUvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgYi9zcmNwa2dzL3Jl dHJvc2hhcmUvdGVtcGxhdGUKaW5kZXggOGEwNzg2YzIxYTA4Mi4uNzIwMjNmYTk4Yjc1MSAxMDA2 NDQKLS0tIGEvc3JjcGtncy9yZXRyb3NoYXJlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcmV0cm9z aGFyZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3JldHJv c2hhcmUnCiBwa2duYW1lPXJldHJvc2hhcmUKIHZlcnNpb249MC42LjYKLXJldmlzaW9uPTIKK3Jl dmlzaW9uPTQKIGJ1aWxkX3N0eWxlPXFtYWtlCiAjWFhYIGJyb2FkY2FzdCBmZWF0dXJlIHJlcXVp cmVzIGFuIGFuY2llbnQgdWRwLWRpc2NvdmVyeS1jcHAgd2hpY2ggZWl0aGVyIG5lZWRzCiAjIHRv IGJlIGZldGNoZWQrcGF0Y2hlZCAoRlRCRlMpIGhlcmUgb3IgcGFja2FnZWQgOi8KCkZyb20gZjVj ZDNiMDhiM2YxNmM2MmJlM2NhMGI1ZjdjZWQzYmM5ODNhMzhmMiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA3LzExM10gd2FpZnUyeC1jb252 ZXJ0ZXItY3BwOiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy93YWlmdTJ4 LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3dhaWZ1MngtY29udmVy dGVyLWNwcC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRl CmluZGV4IDhjMDk1ZDBkN2JhYmEuLmFhNTJkOGM5ODFhODQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv d2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvd2FpZnUyeC1jb252 ZXJ0ZXItY3BwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn d2FpZnUyeC1jb252ZXJ0ZXItY3BwJwogcGtnbmFtZT13YWlmdTJ4LWNvbnZlcnRlci1jcHAKIHZl cnNpb249NS4yLjQKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBj b25maWd1cmVfYXJncz0iLURJTlNUQUxMX01PREVMUz1PTiIKIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyIKCkZyb20gZjBkYTE3NGE3MDgxNDczNmY3ZGM0MjEzYjAxM2ZkYmJiODJlNmQwMSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMDozOCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA4 LzExM10gdmxjOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvdmxjL3Rl bXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmxjL3RlbXBsYXRlIGIvc3JjcGtncy92bGMv dGVtcGxhdGUKaW5kZXggMjEwNzYyYjBhN2UyOS4uODU1Y2E1MjM4NjYyNiAxMDA2NDQKLS0tIGEv c3JjcGtncy92bGMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy92bGMvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd2bGMnCiBwa2duYW1lPXZsYwogdmVyc2lvbj0z LjAuMTgKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUK IGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtZ21lIC0tZGlzYWJsZS1saWJ0YXIgLS1lbmFibGUt amFjawogIC0tZW5hYmxlLWxpdmU1NTUgLS1kaXNhYmxlLWZsdWlkc3ludGggLS1lbmFibGUtZHZk cmVhZApAQCAtMjUsNyArMjUsNyBAQCBsaWIzMmRpc2FibGVkPXllcwogaG9zdG1ha2VkZXBlbmRz PSJhdXRvbWFrZSBsaWJ0b29sIHBrZy1jb25maWcgZmxleCBnZXR0ZXh0IGxpYmdjcnlwdC1kZXZl bAogIGxpdmU1NTUtZGV2ZWwgZ2V0dGV4dC1kZXZlbCAkKHZvcHRfaWYgbHVhIGx1YTUyKSAkKHZv cHRfaWYgY2hyb21lY2FzdCBwcm90b2J1ZikiCiBtYWtlZGVwZW5kcz0iCi0gYXZhaGktbGlicy1k ZXZlbCBkYnVzLWdsaWItZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWVmb250LXR0 ZgorIGF2YWhpLWxpYnMtZGV2ZWwgZGJ1cy1nbGliLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZzQt ZGV2ZWwgZnJlZWZvbnQtdHRmCiAgZ251dGxzLWRldmVsIGphY2stZGV2ZWwgbGliYTUyLWRldmVs IGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2ZWwKICBsaWJjZGlvLWRldmVsIGxpYmRjYS1kZXZl bCBsaWJkdmJwc2ktZGV2ZWwgbGliZHZkbmF2LWRldmVsIGxpYm1hZC1kZXZlbAogIGxpYm1hdHJv c2thLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGlibXBjZGVjLWRldmVsIGxpYm1wZWcyLWRldmVs CgpGcm9tIDdlYmVhOWQ1NjY4ZWRiOGJjMWM2NTUwNWZmNTI0MjJjZmU0ZDMxYjQgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDA6NTUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwOS8xMTNdIG9z ZzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL29zZy90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUKaW5k ZXggYTllYmJkMjg3OTMzYi4uNzU1NzkzZjdlMTFiZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9vc2cv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUKQEAgLTgsNyArOCw3IEBAIGJ1aWxk X2hlbHBlcj0icWVtdSIKIGNvbmZpZ3VyZV9hcmdzPSItRExJQl9QT1NURklYPSIKIGhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyB4cmFuZHIiCiBtYWtlZGVwZW5kcz0iTWVzYUxpYi1kZXZlbCBn dGtnbGV4dC1kZXZlbCBsaWJjdXJsLWRldmVsIGdpZmxpYi1kZXZlbCBsaWJyc3ZnLWRldmVsCi0g amFzcGVyLWRldmVsIHRpZmYtZGV2ZWwgbGliZ2RhbC1kZXZlbCBsaWJndGEtZGV2ZWwgZmZtcGVn LWRldmVsIHhpbmUtbGliLWRldmVsCisgamFzcGVyLWRldmVsIHRpZmYtZGV2ZWwgbGliZ2RhbC1k ZXZlbCBsaWJndGEtZGV2ZWwgZmZtcGVnNC1kZXZlbCB4aW5lLWxpYi1kZXZlbAogIFNETDItZGV2 ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwKICAkKHZvcHRfaWYgb3BlbmV4ciBsaWJvcGVuZXhy LWRldmVsKQogICQodm9wdF9pZiBwb3BwbGVyIHBvcHBsZXItZ2xpYi1kZXZlbCkKCkZyb20gNzk5 YzQ4OTEzZGJjMWZlNDA4NDExMjFjN2Y2OTEyZDYxYzA4ODExOCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMToxMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDEwLzExM10geGluZS1saWI6IHJl dmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZSB8 IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUgYi9zcmNwa2dzL3hpbmUt bGliL3RlbXBsYXRlCmluZGV4IGY3MTNlZmY0OWIwN2MuLmVkNjE5NGMxN2QxMWUgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy94aW5lLWxpYi90ZW1w bGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3hpbmUtbGliJwogcGtn bmFtZT14aW5lLWxpYgotdmVyc2lvbj0xLjIuMTIKK3ZlcnNpb249MS4yLjEzCiByZXZpc2lvbj0x CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXZj ZCAtLWRpc2FibGUtZ25vbWV2ZnMgLS13aXRob3V0LWVzb3VuZCAtLWRpc2FibGUtZHhyMwpAQCAt OCw3ICs4LDcgQEAgY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS12Y2QgLS1kaXNhYmxlLWdub21l dmZzIC0td2l0aG91dC1lc291bmQgLS1kaXNhYmxlLWR4cjMKIGhvc3RtYWtlZGVwZW5kcz0iYXV0 b21ha2UgZ2V0dGV4dC1kZXZlbCBsaWJ0b29sIHBrZy1jb25maWcgcGVybCIKIG1ha2VkZXBlbmRz PSIKICB6bGliLWRldmVsIGFsc2EtbGliLWRldmVsIGxpYnhjYi1kZXZlbCBsaWJTTS1kZXZlbCBs aWJYZXh0LWRldmVsIGxpYlh2LWRldmVsCi0gbGliWHZNQy1kZXZlbCBsaWJhNTItZGV2ZWwgbGli bWFkLWRldmVsIGZmbXBlZy1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCisgbGliWHZNQy1kZXZlbCBs aWJhNTItZGV2ZWwgbGlibWFkLWRldmVsIGZmbXBlZzQtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAog IGphY2stZGV2ZWwgc2FtYmEtZGV2ZWwgbGliZmxhYy1kZXZlbCBsaWJtb2RwbHVnLWRldmVsIGxp Ym1wY2RlYy1kZXZlbAogIHNwZWV4LWRldmVsIGxpYnRoZW9yYS1kZXZlbCBsaWJ2b3JiaXMtZGV2 ZWwgbGliZGNhLWRldmVsIGZhYWQyLWRldmVsCiAgbGliY2Rpby1kZXZlbCBsaWJibHVyYXktZGV2 ZWwgYWFsaWItZGV2ZWwgbGliY2FjYS1kZXZlbCBsaWJYaW5lcmFtYS1kZXZlbApAQCAtMTksNyAr MTksNyBAQCBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyLCBMR1BMLTIuMC1vci1sYXRlciIKIGhv bWVwYWdlPSJodHRwOi8vd3d3LnhpbmUtcHJvamVjdC5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBzOi8v c291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3hpbmUvZmlsZXMveGluZS1saWIvJHt2ZXJzaW9ufS9S RUFETUUudHh0L3ZpZXciCiBkaXN0ZmlsZXM9IiR7U09VUkNFRk9SR0VfU0lURX0veGluZS8ke3Br Z25hbWV9LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09ZDYwNjI3MDQ2OGUxNTQwYzJhODlj MGQ3ZjVmZGYxMWUxN2VjYzBjMjY5OGNjMGJjYjEwNjVmZjI2YWJlZTA5OAorY2hlY2tzdW09NWYx MGQ2ZDcxOGE0YTUxYzE3ZWQxYjMyYjAzMWQ0ZjliODBiMDYxZTgyNzY1MzViMmJlMzFlNWFjNGI3 NWU2ZgogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KIAlpNjg2LW11c2wpCgpGcm9t IDZhMDhhNGRkNDhlN2FkNmE0MTc3NDQ2ZjQ2NTM5OGY5MjhjNjRlY2YgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMS8xMTNdIFFNUGxheTI6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9RTVBsYXkyL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9RTVBsYXkyL3RlbXBsYXRlIGIvc3JjcGtncy9RTVBsYXkyL3RlbXBs YXRlCmluZGV4IDg1MGRmOWQ0MThiOTAuLjhkMmNlN2E3NjE1NmMgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvUU1QbGF5Mi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdRTVBsYXkyJwogcGtnbmFtZT1RTVBsYXky CiB2ZXJzaW9uPTIzLjA2LjE3Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1j bWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1xbWFrZSBxdDUtaG9zdC10b29s cyIKIG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWctZGV2ZWwgbGliYXNzLWRldmVs IGxpYmNkaW8tZGV2ZWwgbGliZ21lLWRldmVsCgpGcm9tIDJiNmIzNTY3YWU0MDI3ODBjN2U3Y2I1 OGUyNmNjYjY2ZTcyYzUyOTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAK U3ViamVjdDogW1BBVENIIDAxMi8xMTNdIGFsc2EtcGx1Z2luczogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtncy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUK aW5kZXggMGJmYTZkOWZkMjY0My4uYTU3MDhhN2Q4MmE4ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9h bHNhLXBsdWdpbnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhbHNhLXBsdWdpbnMnCiBwa2du YW1lPWFsc2EtcGx1Z2lucwogdmVyc2lvbj0xLjIuNy4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLW1h ZW1vLXBsdWdpbiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gZjgzNDBmMmZm NTY0YmM4N2FjNWRmNGU0MTIwODY5MjVhZjE2ODlhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDEzLzExM10gYXJjYW46IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9hcmNhbi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvYXJjYW4vdGVtcGxhdGUgYi9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlCmluZGV4IDdiZTk2NTJl Y2NmM2MuLmNjYzdkZjExY2VhYzYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXJjYW4vdGVtcGxhdGUK KysrIGIvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKICMgISEga2VlcCBz eW5jZWQgd2l0aDogYWNmZ2ZzIGFjbGlwIGFsb2FkaW1hZ2UKIHBrZ25hbWU9YXJjYW4KIHZlcnNp b249MC42LjIuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogY3JlYXRlX3dya3NyYz15ZXMKIGJ1 aWxkX3dya3NyYz1hcmNhbi9zcmMKIGJ1aWxkX3N0eWxlPWNtYWtlCgpGcm9tIDM2YzA1Mjk5NzMw YWEyNzAzMWEwMTQ2YTMzYTBiNDE0NGNmNGNlMWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNC8xMTNdIGF0dHJhY3Q6IHJldmJ1bXAgZm9y IGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlIHwgNCArKy0tCiAx IGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvYXR0cmFjdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXR0cmFjdC90ZW1wbGF0ZQpp bmRleCAyNjE0NGU5MzFhM2M3Li5lNzYwYmYwZDE4YWVjIDEwMDY0NAotLS0gYS9zcmNwa2dzL2F0 dHJhY3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlCkBAIC0xLDEyICsx LDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhdHRyYWN0JwogcGtnbmFtZT1hdHRyYWN0CiB2 ZXJzaW9uPTIuNi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtbWFr ZWZpbGUKIG1ha2VfYnVpbGRfYXJncz0iVkVSQk9TRT0xIgogbWFrZV91c2VfZW52PXllcwogaG9z dG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9IlNGTUwtZGV2ZWwgZmZtcGVn LWRldmVsIGZvbnRjb25maWctZGV2ZWwgZ2x1LWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwKK21ha2Vk ZXBlbmRzPSJTRk1MLWRldmVsIGZmbXBlZzQtZGV2ZWwgZm9udGNvbmZpZy1kZXZlbCBnbHUtZGV2 ZWwgbGliYXJjaGl2ZS1kZXZlbAogIGxpYmN1cmwtZGV2ZWwgbGlianBlZy10dXJiby1kZXZlbCB4 aW5lLWxpYiByYXBpZGpzb24gbGliWHJhbmRyLWRldmVsIgogZGVwZW5kcz0iZ2l0Igogc2hvcnRf ZGVzYz0iQXR0cmFjdC1Nb2RlIGlzIGEgZ3JhcGhpY2FsIGZyb250ZW5kIGZvciBlbXVsYXRvcnMi CgpGcm9tIDUwMGU2ZDZiZWFlNGZkOTZmZTk3YWIwYzVjZTViNTBmMTFmNzI4ZGIgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNS8xMTNdIGF1 YmlvOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYXViaW8vcGF0Y2hlcy9m Zm1wZWc1LnBhdGNoIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9hdWJp by90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9hdWJp by9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1YmlvL3BhdGNo ZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmFhY2U0MWE2ZTZkOWEKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2F1YmlvL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAt MCwwICsxLDI1IEBACitGcm9tIDhhMDU0MjBlNWRkOGM3YjhiMjQ0N2Y4MmRjOTE5NzY1ODc2NTEx YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEJyb3NzaWVyIDxwaWVtQHBp ZW0ub3JnPgorRGF0ZTogVHVlLCAyNSBKYW4gMjAyMiAxODozMDoyNyArMDEwMAorU3ViamVjdDog W1BBVENIXSBbc291cmNlX2F2Y29kZWNdIGRlZmluZSBGRl9BUElfTEFWRl9BVkNUWCBmb3IgbGli YXZjb2RlYyA+CisgNTksIHRoeCBAYmVyb2xpbnV4IChjbG9zZXMgZ2gtMzUzKQorCistLS0KKyBz cmMvaW8vc291cmNlX2F2Y29kZWMuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2Vy dGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9pby9zb3VyY2VfYXZjb2RlYy5jIGIvc3JjL2lv L3NvdXJjZV9hdmNvZGVjLmMKK2luZGV4IGUwYWU5M2I1Li4xNDIxYmQ5YSAxMDA2NDQKKy0tLSBh L3NyYy9pby9zb3VyY2VfYXZjb2RlYy5jCisrKysgYi9zcmMvaW8vc291cmNlX2F2Y29kZWMuYwor QEAgLTY4LDYgKzY4LDEwIEBACisgI2RlZmluZSBBVUJJT19BVkNPREVDX01BWF9CVUZGRVJfU0la RSBBVl9JTlBVVF9CVUZGRVJfTUlOX1NJWkUKKyAjZW5kaWYKKyAKKysjaWYgTElCQVZDT0RFQ19W RVJTSU9OX01BSk9SID49IDU5CisrI2RlZmluZSBGRl9BUElfTEFWRl9BVkNUWCAxCisrI2VuZGlm CisrCisgc3RydWN0IF9hdWJpb19zb3VyY2VfYXZjb2RlY190IHsKKyAgIHVpbnRfdCBob3Bfc2l6 ZTsKKyAgIHVpbnRfdCBzYW1wbGVyYXRlOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdWJpby90ZW1w bGF0ZSBiL3NyY3BrZ3MvYXViaW8vdGVtcGxhdGUKaW5kZXggYWQxYzRiMjU2OTkxNy4uN2Q4NzVj YzAyNTQxYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9hdWJpby90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2F1YmlvL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYXVi aW8nCiBwa2duYW1lPWF1YmlvCiB2ZXJzaW9uPTAuNC45Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT13YWYzCiAjIFhYWCBsYXNoLCBwdXJlIGFuZCBzd2lnIHN1cHBvcnQuCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgdHh0Mm1hbiIKCkZyb20gZWQ1YzMxMTMwOTc4ZWIw YTFjYTI2NWNhMDdkMDczYzQ2MzI3ZGJiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE2LzExM10gYXVkYWNpb3VzLXBsdWdpbnM6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZt cGVnNS5wYXRjaCAgIHwgNDMgKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9hdWRhY2lvdXMt cGx1Z2lucy90ZW1wbGF0ZSAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNDQg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv YXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2F1 ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAwLi40ZTVlMzQwOTlkNzFjCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCAr MSw0MyBAQAorY29tbWl0IDI5OGFhMzcxYzU2YzJmNTJjMjVhMzNkOWJkZWM0OTE4YjExY2ViZGMK K0F1dGhvcjogdGliZXF1YWRvcmlhbiA8dGliZXF1YWRvcmlhbkBwb3N0ZW8uZGU+CitEYXRlOiAg IFNhdCBNYXIgMTkgMTg6NDA6MTIgMjAyMiArMDEwMAorCisgICAgYXVkYWNpb3VzLXBsdWdpbnM6 IHJlYnVpbGQgYWdhaW5zdCBmZm1wZWctNS4wCisKK2RpZmYgLS1naXQgYS9zcmNwa2dzL2F1ZGFj aW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnLTUuMC5wYXRjaCBiL3NyY3BrZ3MvYXVkYWNpb3Vz LXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWctNS4wLnBhdGNoCituZXcgZmlsZSBtb2RlIDEwMDY0NAor aW5kZXggMDAwMDAwMDAwMC4uNjE3YzExMjE1YgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjcGtn cy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZy01LjAucGF0Y2gKK0BAIC0wLDAgKzEs MzEgQEAKKytGcm9tIGY2MGJlYjQwMGVlYjFlNDc3OGJiZmQ3MzhiYzRhNGNjZWYzZGU1MzkgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCisrRnJvbTogSm9obiBMaW5kZ3JlbiA8am9obkBqbGluZGdy ZW4ubmV0PgorK0RhdGU6IFNhdCwgNSBNYXIgMjAyMiAxMjowNTozNCAtMDUwMAorK1N1YmplY3Q6 IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggRkZtcGVnIDUuMAorKworKy0tLQorKyBzcmMvZmZhdWRp by9mZmF1ZGlvLWNvcmUuY2MgfCA0ICsrLS0KKysgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKKysKKytkaWZmIC0tZ2l0IGEvc3JjL2ZmYXVkaW8vZmZhdWRp by1jb3JlLmNjIGIvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisraW5kZXggMTZkYzYzZTNh Li5hMmI5NWZkNmMgMTAwNjQ0CisrLS0tIGEvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisr KysrIGIvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisrQEAgLTI3NCw3ICsyNzQsNyBAQCBz dGF0aWMgQVZJbnB1dEZvcm1hdCAqIGdldF9mb3JtYXRfYnlfY29udGVudCAoY29uc3QgY2hhciAq IG5hbWUsIFZGU0ZpbGUgJiBmaWxlKQorKyAgICAgICAgIEFWUHJvYmVEYXRhIGQgPSB7bmFtZSwg YnVmLCBmaWxsZWR9OworKyAgICAgICAgIHNjb3JlID0gdGFyZ2V0OworKyAKKystICAgICAgICBm ID0gYXZfcHJvYmVfaW5wdXRfZm9ybWF0MiAoJiBkLCB0cnVlLCAmIHNjb3JlKTsKKysrICAgICAg ICBmID0gKEFWSW5wdXRGb3JtYXQgKikgYXZfcHJvYmVfaW5wdXRfZm9ybWF0MiAoJiBkLCB0cnVl LCAmIHNjb3JlKTsKKysgICAgICAgICBpZiAoZikKKysgICAgICAgICAgICAgYnJlYWs7CisrIAor K0BAIC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIGJvb2wgZmluZF9jb2RlYyAoQVZGb3JtYXRDb250 ZXh0ICogYywgQ29kZWNJbmZvICogY2luZm8pCisrICNlbmRpZgorKyAgICAgICAgIGlmIChzdHJl YW0gJiYgc3RyZWFtLT5jb2RlY3BhciAmJiBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY190eXBlID09 IEFWTUVESUFfVFlQRV9BVURJTykKKysgICAgICAgICB7CisrLSAgICAgICAgICAgIEFWQ29kZWMg KiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19p ZCk7CisrKyAgICAgICAgICAgIEFWQ29kZWMgKiBjb2RlYyA9IChBVkNvZGVjICopIGF2Y29kZWNf ZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrIAorKyAgICAgICAg ICAgICBpZiAoY29kZWMpCisrICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXVk YWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBs YXRlCmluZGV4IDg4Y2JjMTY3MWZjNmEuLmJlZWJmYWU1OWVkNDQgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1 Z2lucy90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKICNLZWVwIGluIHN5bmMgd2l0aCBhdWRhY2lv dXMhCiBwa2duYW1lPWF1ZGFjaW91cy1wbHVnaW5zCiB2ZXJzaW9uPTQuMy4xCi1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9IiQodm9wdF9i b29sIGd0azMgZ3RrKSAkKHZvcHRfYm9vbCBndGszKQogICQodm9wdF9ib29sIHF0KSAkKHZvcHRf Ym9vbCBxdCBxdDYpIgoKRnJvbSAzMWQ3YTNiYjFhZmQxZjAxODk3MDc5ZjRmZTIxYzM1OGRlNjVl MGVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwMTcvMTEzXSBhdWRhY2l0eTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNw a2dzL2F1ZGFjaXR5L3RlbXBsYXRlIHwgNSArKy0tLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1ZGFjaXR5L3Rl bXBsYXRlIGIvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZQppbmRleCBkNTA5YzBhODk0MDc3Li4x MWUyMDI1NTY4NWIwIDEwMDY0NAotLS0gYS9zcmNwa2dzL2F1ZGFjaXR5L3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdhdWRhY2l0eScKIHBrZ25hbWU9YXVkYWNpdHkKIHZlcnNpb249Mi40LjEKLXJldmlz aW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9h cmdzPSItLXdpdGgtZmZtcGVnPXN5c3RlbSAtLXdpdGgtbGlic25kZmlsZT1zeXN0ZW0gLS13aXRo LWV4cGF0PXN5c3RlbQogIC0td2l0aC1saWJzb3hyPXN5c3RlbSAtLXdpdGgtbGFtZT1zeXN0ZW0g LS13aXRoLWx2Mj1zeXN0ZW0gYWNfY3ZfcGF0aF9XWF9DT05GSUc9d3gtY29uZmlnLWd0azMiCkBA IC05LDcgKzksNyBAQCBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgY21ha2UgZ2V0dGV4dCBs aWJ0b29sIG00IHdoaWNoIgogbWFrZWRlcGVuZHM9ImphY2stZGV2ZWwgd3hXaWRnZXRzLWd0azMt ZGV2ZWwgZ3RrKzMtZGV2ZWwKICBsaWJtYWQtZGV2ZWwgc291bmR0b3VjaC1kZXZlbCBsaWJzb3hy LWRldmVsCiAgdmFtcC1wbHVnaW4tc2RrLWRldmVsIGxhbWUtZGV2ZWwgbGliaWQzdGFnLWRldmVs IGxpYmZsYWMtZGV2ZWwKLSBmZm1wZWctZGV2ZWwgdHdvbGFtZS1kZXZlbCBzZXJkLWRldmVsIGx2 MiBsaWx2LWRldmVsIHN1aWwtZGV2ZWwiCisgZmZtcGVnNC1kZXZlbCB0d29sYW1lLWRldmVsIHNl cmQtZGV2ZWwgbHYyIGxpbHYtZGV2ZWwgc3VpbC1kZXZlbCIKIGRlcGVuZHM9ImRlc2t0b3AtZmls ZS11dGlscyBoaWNvbG9yLWljb24tdGhlbWUiCiBzaG9ydF9kZXNjPSJHcmFwaGljYWwgY3Jvc3Mt cGxhdGZvcm0gYXVkaW8gZWRpdG9yIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lk bGludXgub3JnPiIKQEAgLTMzLDUgKzMzLDQgQEAgcG9zdF9pbnN0YWxsKCkgewogCXZjb3B5IHBs dWctaW5zIC91c3Ivc2hhcmUvYXVkYWNpdHkKIAogCXJtICR7REVTVERJUn0vdXNyL3NoYXJlL2Rv Yy9hdWRhY2l0eS9MSUNFTlNFLnR4dAotCXZsaWNlbnNlIExJQ0VOU0UudHh0IExJQ0VOU0UKIH0K CkZyb20gMTBhZGU5ZDc5MzU5NGMzYTU5ODViZGE2NzM2NzEyZGMxMGVmNGQwZSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE4LzExM10gYXZp ZGVtdXg6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9hdmlkZW11eC90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUgYi9zcmNwa2dzL2F2aWRl bXV4L3RlbXBsYXRlCmluZGV4IDI1M2EwMjQzZTIyNTkuLjU1NzI4NTk4MmQyYjggMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdmlkZW11eC90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F2aWRlbXV4JwogcGtn bmFtZT1hdmlkZW11eAogdmVyc2lvbj0yLjguMAotcmV2aXNpb249MgorcmV2aXNpb249MwogIyBD YW4ndCBiZSBjb21waWxlZCBmb3IgYWFyY2g2NCwgYXJtKiBvciBtaXBzKgogYXJjaHM9Ing4Nl82 NCogaTY4NioiCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9v bHMgcXQ1LWRldmVsIHRhciB5YXNtIgoKRnJvbSAwNWM5OWU2NTgzNTgwMGE1MjhlZTMxMDdlNjAz MmVmMTFiZWFkZTBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMTkvMTEzXSBiYXJlc2lwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFyZXNpcC90ZW1w bGF0ZSBiL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQppbmRleCBmMWJkMTgxNzA0OGI1Li5iMjFl MjIzMzQzMTZlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2JhcmVzaXAvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9iYXJlc2lwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnYmFyZXNpcCcKIHBrZ25hbWU9YmFyZXNpcAogdmVyc2lvbj0yLjEwLjAKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25m aWcgZ2xpYi1kZXZlbCIKIG1ha2VkZXBlbmRzPSJsaWJnc20tZGV2ZWwgbGlicG5nLWRldmVsIG9w ZW5zc2wtZGV2ZWwgbGlic25kZmlsZS1kZXZlbAoKRnJvbSA0Y2RmMjlmMTNmYzY5NGIxMzE1MGIw NjBmNGQyZDBhNDBmZTk3MmE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMjAvMTEzXSBibGVuZGVyOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Js ZW5kZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKaW5kZXggN2E3MTBhYzBk ZjQ5NS4uMGY3Mjg3NmQ0ZDcwNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZQpAQCAtOSw4ICs5LDggQEAgY29uZmlndXJl X2FyZ3M9Ii1EV0lUSF9JTlNUQUxMX1BPUlRBQkxFPU9GRiAtRFdJVEhfUFlUSE9OX0lOU1RBTEw9 T0ZGCiAgLURXSVRIX0pBQ0s9T04gLURXSVRIX0NPREVDX0ZGTVBFRz1PTiAtRFdJVEhfQ09ERUNf U05ERklMRT1PTiAtRFdJVEhfT1BFTk1QPU9OCiAgLURXSVRIX0ZGVFczPU9OIC1EV0lUSF9NT0Rf T0NFQU5TSU09T04gLURXSVRIX0NZQ0xFU19FTUJSRUU9T0ZGIC1EV0lUSF9PUEVOQ09MT1JJTz1P TgogIC1EV0lUSF9JTUFHRV9PUEVORVhSPU9OIC1EV0lUSF9JTUFHRV9PUEVOSlBFRz1PTiAtRFdJ VEhfT1BFTlNVQkRJVj1PTgotIC1EV0lUSF9PUEVOQ09MTEFEQT1PTiAtRFdJVEhfU1lTVEVNX0dM RVc9T04gLURXSVRIX09QRU5WREI9T04gLURXSVRIX0FMRU1CSUM9T04KLSAtRFdJVEhfR0hPU1Rf WDExPU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5EPU9OIC1EV0lUSF9HSE9TVF9MSUJERUNPUj1PTgor IC1EV0lUSF9PUEVOQ09MTEFEQT1PTiAtRFdJVEhfT1BFTlZEQj1PTiAtRFdJVEhfQUxFTUJJQz1P TgorIC1EV0lUSF9HSE9TVF9YMTE9T04gLURXSVRIX0dIT1NUX1dBWUxBTkQ9T04gLURXSVRIX0dI T1NUX1dBWUxBTkRfTElCREVDT1I9T04KICAtRFdJVEhfQlVJTERJTkZPPU9GRiAtRFBZVEhPTl9W RVJTSU9OPSR7cHkzX3Zlcn0gLURQWVRIT05fTElCUEFUSD0vdXNyL2xpYgogIC1EUFlUSE9OX0xJ QlJBUlk9cHl0aG9uJHtweTNfdmVyfSR7cHkzX2FiaXZlcn0gLURQWVRIT05fSU5DTFVERV9ESVJT PS8ke3B5M19pbmN9CiAgLURXSVRIX1NZU1RFTV9MWk89T04gLURXSVRIX1NZU1RFTV9FSUdFTjM9 T04gLURXSVRIX1NZU1RFTV9GUkVFVFlQRT1PTiIKCkZyb20gOTQwMzI5ZGFhZTNhMTRmYzQ1YTk3 YzkwMTcwYTQ5NmY5YTMyZDJiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDIxLzExM10gY2FudGF0YTogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NhbnRh dGEvdGVtcGxhdGUgYi9zcmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUKaW5kZXggNGI0MTdkODBkNWMy ZC4uOGE5MGFhYTRjMDdhMiAxMDA2NDQKLS0tIGEvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvY2FudGF0YS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2NhbnRhdGEnCiBwa2duYW1lPWNhbnRhdGEKIHZlcnNpb249Mi41LjAKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWcgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHF0NS10b29scyIKIG1ha2VkZXBlbmRz PSJxdDUtZGV2ZWwgcXQ1LXRvb2xzLWRldmVsIHF0NS1zdmctZGV2ZWwgcXQ1LXhtbHBhdHRlcm5z LWRldmVsCgpGcm9tIDYyYTA4MTE5ZGY4MDAwM2FhZmJjYTVhZmMxYmYxY2JjOThhMzk4YTggTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyMi8x MTNdIGNjZXh0cmFjdG9yOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mv Y2NleHRyYWN0b3IvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jY2V4dHJhY3Rvci90 ZW1wbGF0ZSBiL3NyY3BrZ3MvY2NleHRyYWN0b3IvdGVtcGxhdGUKaW5kZXggOWFiY2Q4Mjg1MmIy Ny4uNmVjY2FkNTg4NWFmOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdjY2V4dHJhY3RvcicKIHBrZ25hbWU9Y2NleHRyYWN0b3IKIHZl cnNpb249MC45MwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfd3Jrc3JjPSJsaW51eCIK IGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1vY3Ig LS1lbmFibGUtaGFyZHN1YngiCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIHBrZy1jb25maWci Ci1tYWtlZGVwZW5kcz0ibGVwdG9uaWNhLWRldmVsIHRlc3NlcmFjdC1vY3ItZGV2ZWwgZmZtcGVn LWRldmVsIgorbWFrZWRlcGVuZHM9ImxlcHRvbmljYS1kZXZlbCB0ZXNzZXJhY3Qtb2NyLWRldmVs IGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJFeHRyYWN0IHN1YnRpdGxlcyBmcm9tIHZpZGVv IHN0cmVhbXMiCiBtYWludGFpbmVyPSJuZXdibHVlbW9vbiA8YmxhdW1vbGNoQG1haWxib3gub3Jn PiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCgpGcm9tIGJiOTlhZDkzZjVkNTAyODUwNzEx ZmNkMDhlNTRjNGE5ZTk2NzUwYTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAyMy8xMTNdIGNocm9tYXByaW50OiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwg NTY5ICsrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUg ICAgICAgICAgICAgIHwgICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDU3MCBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWFwcmludC9w YXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9tYXByaW50L3Bh dGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmE5ZmQzMDdh MjNjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2Nocm9tYXByaW50L3BhdGNoZXMvZmZt cGVnNS5wYXRjaApAQCAtMCwwICsxLDU2OSBAQAorRnJvbSA4Y2NhZDY5MzcxNzdiMWI5MmU0MGFi OGY0NDQ3ZWEyN2JhYzAwOWE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYt OD9xP0x1az1DMz1BMT1DNT1BMT0yMExhbGluc2s9QzM9QkQ/PSA8bGFsaW5za3lAZ21haWwuY29t PgorRGF0ZTogRnJpLCA0IE5vdiAyMDIyIDIxOjQ3OjM4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hd IFVzZSBGRm1wZWcgNS54ICgjMTIwKQorCisqIFVzZSBGRm1wZWcgNS4xLjIgZm9yIENJIGJ1aWxk cworCisqIEJ1aWxkIG9uIFVidW50dSAyMC4wNAorCisqIFVwZ3JhZGUgY29kZSB0byBGRm1wZWcg NS54IEFQSXMKKworKiBPbmx5IHNldCBGRm1wZWcgaW5jbHVkZSBkaXJzIGlmIGJ1aWxkaW5nIHRv b2xzCisKKyogTm8gbG9uZ2VyIG5lZWRlZAorCisqIFVzZSB1YnVudHUgMjAuMDQKKy0tLQorIC5n aXRodWIvd29ya2Zsb3dzL2J1aWxkLnltbCAgICAgICAgICAgICAgICAgICB8ICAgNiArLQorIENN YWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNiAtLQorIHBh Y2thZ2UvYnVpbGQuc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQorIHNy Yy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmggICAgICAgICAgICB8ICAgMiAtCisgc3Jj L2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oIHwgIDcyIC0tLS0tLS0K KyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmggfCAgMTggKy0K KyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlci5oICAgICAgICAgICAgICAgfCAxOTcgKysr KysrKysrLS0tLS0tLS0tCisgdGVzdHMvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA2ICsKKyA4IGZpbGVzIGNoYW5nZWQsIDEyMiBpbnNlcnRpb25zKCspLCAxOTkg ZGVsZXRpb25zKC0pCisgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9hdWRpby9mZm1wZWdfYXVkaW9f cHJvY2Vzc29yX2F2cmVzYW1wbGUuaAorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9D TWFrZUxpc3RzLnR4dAoraW5kZXggZjhkNmEzMi4uNGRhMjQwNSAxMDA2NDQKKy0tLSBhL0NNYWtl TGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTg0LDkgKzg0LDYgQEAgZmluZF9w YWNrYWdlKEZGbXBlZykKKyBpZihGRk1QRUdfTElCUkFSSUVTKQorIAljbWFrZV9wdXNoX2NoZWNr X3N0YXRlKFJFU0VUKQorIAlzZXQoQ01BS0VfUkVRVUlSRURfTElCUkFSSUVTICR7RkZNUEVHX0xJ QlJBUklFU30gJHtDTUFLRV9USFJFQURfTElCU19JTklUfSAtbG0pCistCWNoZWNrX2Z1bmN0aW9u X2V4aXN0cyhhdl9wYWNrZXRfdW5yZWYgSEFWRV9BVl9QQUNLRVRfVU5SRUYpCistCWNoZWNrX2Z1 bmN0aW9uX2V4aXN0cyhhdl9mcmFtZV9hbGxvYyBIQVZFX0FWX0ZSQU1FX0FMTE9DKQorLQljaGVj a19mdW5jdGlvbl9leGlzdHMoYXZfZnJhbWVfZnJlZSBIQVZFX0FWX0ZSQU1FX0ZSRUUpCisgCWNt YWtlX3BvcF9jaGVja19zdGF0ZSgpCisgZW5kaWYoKQorCitAQCAtMTYzLDE0ICsxNjAsMTEgQEAg bWVzc2FnZShTVEFUVVMgIlVzaW5nICR7RkZUX0xJQn0gZm9yIEZGVCBjYWxjdWxhdGlvbnMiKQor IGlmKE5PVCBBVURJT19QUk9DRVNTT1JfTElCKQorIAlpZihGRk1QRUdfTElCU1dSRVNBTVBMRV9G T1VORCkKKyAJCXNldChBVURJT19QUk9DRVNTT1JfTElCICJzd3Jlc2FtcGxlIikKKy0JZWxzZWlm KEZGTVBFR19MSUJBVlJFU0FNUExFX0ZPVU5EKQorLQkJc2V0KEFVRElPX1BST0NFU1NPUl9MSUIg ImF2cmVzYW1wbGUiKQorIAllbmRpZigpCisgZW5kaWYoKQorCisgaWYoQVVESU9fUFJPQ0VTU09S X0xJQiBTVFJFUVVBTCAic3dyZXNhbXBsZSIpCisgCWlmKEZGTVBFR19MSUJTV1JFU0FNUExFX0ZP VU5EKQorLQkJc2V0KFVTRV9BVlJFU0FNUExFIE9GRikKKyAJCXNldChVU0VfU1dSRVNBTVBMRSBP TikKKyAJCXNldChBVURJT19QUk9DRVNTT1JfTElCUkFSSUVTICR7RkZNUEVHX0xJQlNXUkVTQU1Q TEVfTElCUkFSSUVTfSkKKyAJCXNldChBVURJT19QUk9DRVNTT1JfSU5DTFVERV9ESVJTICR7RkZN UEVHX0xJQlNXUkVTQU1QTEVfSU5DTFVERV9ESVJTfSkKK0BAIC0xNzgsMTYgKzE3Miw2IEBAIGlm KEFVRElPX1BST0NFU1NPUl9MSUIgU1RSRVFVQUwgInN3cmVzYW1wbGUiKQorIAkJbWVzc2FnZShG QVRBTF9FUlJPUiAiU2VsZWN0ZWQgJHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3IgYXVkaW8gcHJv Y2Vzc2luZywgYnV0IHRoZSBsaWJyYXJ5IGlzIG5vdCBmb3VuZCIpCisgCWVuZGlmKCkKKyAJbWVz c2FnZShTVEFUVVMgIlVzaW5nICR7QVVESU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIGNvbnZl cnNpb24iKQorLWVsc2VpZihBVURJT19QUk9DRVNTT1JfTElCIFNUUkVRVUFMICJhdnJlc2FtcGxl IikKKy0JaWYoRkZNUEVHX0xJQkFWUkVTQU1QTEVfRk9VTkQpCistCQlzZXQoVVNFX0FWUkVTQU1Q TEUgT04pCistCQlzZXQoVVNFX1NXUkVTQU1QTEUgT0ZGKQorLQkJc2V0KEFVRElPX1BST0NFU1NP Ul9MSUJSQVJJRVMgJHtGRk1QRUdfTElCQVZSRVNBTVBMRV9MSUJSQVJJRVN9KQorLQkJc2V0KEFV RElPX1BST0NFU1NPUl9JTkNMVURFX0RJUlMgJHtGRk1QRUdfTElCQVZSRVNBTVBMRV9JTkNMVURF X0RJUlN9KQorLQllbHNlKCkKKy0JCW1lc3NhZ2UoRkFUQUxfRVJST1IgIlNlbGVjdGVkICR7QVVE SU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIHByb2Nlc3NpbmcsIGJ1dCB0aGUgbGlicmFyeSBp cyBub3QgZm91bmQiKQorLQllbmRpZigpCistCW1lc3NhZ2UoU1RBVFVTICJVc2luZyAke0FVRElP X1BST0NFU1NPUl9MSUJ9IGZvciBhdWRpbyBjb252ZXJzaW9uIikKKyBlbHNlKCkKKyAJbWVzc2Fn ZShTVEFUVVMgIkJ1aWxkaW5nIHdpdGhvdXQgYXVkaW8gY29udmVyc2lvbiBzdXBwb3J0LCBwbGVh c2UgaW5zdGFsbCBGRm1wZWcgd2l0aCBsaWJzd3Jlc2FtcGxlIikKKyBlbmRpZigpCitkaWZmIC0t Z2l0IGEvcGFja2FnZS9idWlsZC5zaCBiL3BhY2thZ2UvYnVpbGQuc2gKK2luZGV4IGRhNjMxYWUu LmI0MWQzNmUgMTAwNzU1CistLS0gYS9wYWNrYWdlL2J1aWxkLnNoCisrKysgYi9wYWNrYWdlL2J1 aWxkLnNoCitAQCAtNyw4ICs3LDggQEAgc2V0IC1ldXgKKworIEJBU0VfRElSPSQoY2QgJChkaXJu YW1lICQwKS8uLiAmJiBwd2QpCisKKy1GRk1QRUdfVkVSU0lPTj00LjQuMQorLUZGTVBFR19CVUlM RF9UQUc9djQuNC4xLTEKKytGRk1QRUdfVkVSU0lPTj01LjEuMgorK0ZGTVBFR19CVUlMRF9UQUc9 diR7RkZNUEVHX1ZFUlNJT059LTEKKworIFRNUF9CVUlMRF9ESVI9JEJBU0VfRElSLyQobWt0ZW1w IC1kIGJ1aWxkLlhYWFhYWFhYKQorIHRyYXAgJ3JtIC1yZiAkVE1QX0JVSUxEX0RJUicgRVhJVAor ZGlmZiAtLWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmggYi9zcmMvYXVk aW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oCitpbmRleCA3NjI4ZmM3Li4zOWY0ZjZkIDEwMDY0 NAorLS0tIGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaAorKysrIGIvc3JjL2F1 ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaAorQEAgLTEwLDggKzEwLDYgQEAKKworICNpZiBk ZWZpbmVkKFVTRV9TV1JFU0FNUExFKQorICNpbmNsdWRlICJhdWRpby9mZm1wZWdfYXVkaW9fcHJv Y2Vzc29yX3N3cmVzYW1wbGUuaCIKKy0jZWxpZiBkZWZpbmVkKFVTRV9BVlJFU0FNUExFKQorLSNp bmNsdWRlICJhdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaCIKKyAjZWxz ZQorICNlcnJvciAibm8gYXVkaW8gcHJvY2Vzc2luZyBsaWJyYXJ5IgorICNlbmRpZgorZGlmZiAt LWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaCBiL3Ny Yy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaAorZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCBiZDg1ZjkyLi4wMDAwMDAwCistLS0gYS9zcmMvYXVkaW8vZmZt cGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgKKysrKyAvZGV2L251bGwKK0BAIC0xLDcy ICswLDAgQEAKKy0vLyBDb3B5cmlnaHQgKEMpIDIwMTYgIEx1a2FzIExhbGluc2t5CistLy8gRGlz dHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLCBzZWUgdGhlIExJQ0VOU0UgZmlsZSBmb3Ig ZGV0YWlscy4KKy0KKy0jaWZuZGVmIENIUk9NQVBSSU5UX0FVRElPX0ZGTVBFR19BVURJT19QUk9D RVNTT1JfQVZSRVNBTVBMRV9IXworLSNkZWZpbmUgQ0hST01BUFJJTlRfQVVESU9fRkZNUEVHX0FV RElPX1BST0NFU1NPUl9BVlJFU0FNUExFX0hfCistCistZXh0ZXJuICJDIiB7CistI2luY2x1ZGUg PGxpYmF2cmVzYW1wbGUvYXZyZXNhbXBsZS5oPgorLX0KKy0KKy1uYW1lc3BhY2UgY2hyb21hcHJp bnQgeworLQorLWNsYXNzIEZGbXBlZ0F1ZGlvUHJvY2Vzc29yIHsKKy1wdWJsaWM6CistCUZGbXBl Z0F1ZGlvUHJvY2Vzc29yKCkgeworLQkJbV9yZXNhbXBsZV9jdHggPSBhdnJlc2FtcGxlX2FsbG9j X2NvbnRleHQoKTsKKy0JfQorLQorLQl+RkZtcGVnQXVkaW9Qcm9jZXNzb3IoKSB7CistCQlhdnJl c2FtcGxlX2ZyZWUoJm1fcmVzYW1wbGVfY3R4KTsKKy0JfQorLQorLQl2b2lkIFNldENvbXBhdGli bGVNb2RlKCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJmaWx0ZXJfc2l6 ZSIsIDE2LCAwKTsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAicGhhc2Vfc2hp ZnQiLCA4LCAwKTsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAibGluZWFyX2lu dGVycCIsIDEsIDApOworLQkJYXZfb3B0X3NldF9kb3VibGUobV9yZXNhbXBsZV9jdHgsICJjdXRv ZmYiLCAwLjgsIDApOworLQl9CistCistCXZvaWQgU2V0SW5wdXRDaGFubmVsTGF5b3V0KGludDY0 X3QgY2hhbm5lbF9sYXlvdXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAi aW5fY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xheW91dCwgMCk7CistCX0KKy0KKy0Jdm9pZCBT ZXRJbnB1dFNhbXBsZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBzYW1wbGVfZm9ybWF0KSB7CistCQlh dl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImluX3NhbXBsZV9mbXQiLCBzYW1wbGVfZm9y bWF0LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldElucHV0U2FtcGxlUmF0ZShpbnQgc2FtcGxlX3Jh dGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAiaW5fc2FtcGxlX3JhdGUi LCBzYW1wbGVfcmF0ZSwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRPdXRwdXRDaGFubmVsTGF5b3V0 KGludDY0X3QgY2hhbm5lbF9sYXlvdXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVf Y3R4LCAib3V0X2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5lbF9sYXlvdXQsIDApOworLQl9CistCist CXZvaWQgU2V0T3V0cHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9mb3JtYXQp IHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAib3V0X3NhbXBsZV9mbXQiLCBz YW1wbGVfZm9ybWF0LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldE91dHB1dFNhbXBsZVJhdGUoaW50 IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgIm91dF9z YW1wbGVfZm10Iiwgc2FtcGxlX3JhdGUsIDApOworLQl9CistCistCWludCBJbml0KCkgeworLQkJ cmV0dXJuIGF2cmVzYW1wbGVfb3BlbihtX3Jlc2FtcGxlX2N0eCk7CistCX0KKy0KKy0JaW50IENv bnZlcnQodWludDhfdCAqKm91dCwgaW50IG91dF9jb3VudCwgY29uc3QgdWludDhfdCAqKmluLCBp bnQgaW5fY291bnQpIHsKKy0JCXJldHVybiBhdnJlc2FtcGxlX2NvbnZlcnQobV9yZXNhbXBsZV9j dHgsIG91dCwgMCwgb3V0X2NvdW50LCAodWludDhfdCAqKikgaW4sIDAsIGluX2NvdW50KTsKKy0J fQorLQorLQlpbnQgRmx1c2godWludDhfdCAqKm91dCwgaW50IG91dF9jb3VudCkgeworLQkJcmV0 dXJuIGF2cmVzYW1wbGVfcmVhZChtX3Jlc2FtcGxlX2N0eCwgb3V0LCBvdXRfY291bnQpOworLQl9 CistCistcHJpdmF0ZToKKy0JQVZBdWRpb1Jlc2FtcGxlQ29udGV4dCAqbV9yZXNhbXBsZV9jdHgg PSBudWxscHRyOworLX07CistCistfTsgLy8gbmFtZXNwYWNlIGNocm9tYXByaW50CistCistI2Vu ZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNh bXBsZS5oIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oCitp bmRleCBiODYyNjZiLi5iMWQ0YmVhIDEwMDY0NAorLS0tIGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRp b19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oCisrKysgYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3By b2Nlc3Nvcl9zd3Jlc2FtcGxlLmgKK0BAIC0yOCwzMCArMjgsMjggQEAgcHVibGljOgorIAkJYXZf b3B0X3NldF9kb3VibGUobV9zd3JfY3R4LCAiY3V0b2ZmIiwgMC44LCAwKTsKKyAJfQorCistCXZv aWQgU2V0SW5wdXRDaGFubmVsTGF5b3V0KGludDY0X3QgY2hhbm5lbF9sYXlvdXQpIHsKKy0JCWF2 X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImljbCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JCWF2 X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImljaCIsIGF2X2dldF9jaGFubmVsX2xheW91dF9uYl9j aGFubmVscyhjaGFubmVsX2xheW91dCksIDApOworKwl2b2lkIFNldElucHV0Q2hhbm5lbExheW91 dChBVkNoYW5uZWxMYXlvdXQgKmNoYW5uZWxfbGF5b3V0KSB7CisrCQlhdl9vcHRfc2V0X2ludCht X3N3cl9jdHgsICJpbl9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LT51Lm1hc2ssIDAp OworIAl9CisKKyAJdm9pZCBTZXRJbnB1dFNhbXBsZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBzYW1w bGVfZm9ybWF0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpc2YiLCBzYW1wbGVf Zm9ybWF0LCAwKTsKKysJCWF2X29wdF9zZXRfc2FtcGxlX2ZtdChtX3N3cl9jdHgsICJpbl9zYW1w bGVfZm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CisgCX0KKworIAl2b2lkIFNldElucHV0U2FtcGxl UmF0ZShpbnQgc2FtcGxlX3JhdGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImlz ciIsIHNhbXBsZV9yYXRlLCAwKTsKKysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImluX3Nh bXBsZV9yYXRlIiwgc2FtcGxlX3JhdGUsIDApOworIAl9CisKKy0Jdm9pZCBTZXRPdXRwdXRDaGFu bmVsTGF5b3V0KGludDY0X3QgY2hhbm5lbF9sYXlvdXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1f c3dyX2N0eCwgIm9jbCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JCWF2X29wdF9zZXRfaW50KG1f c3dyX2N0eCwgIm9jaCIsIGF2X2dldF9jaGFubmVsX2xheW91dF9uYl9jaGFubmVscyhjaGFubmVs X2xheW91dCksIDApOworKwl2b2lkIFNldE91dHB1dENoYW5uZWxMYXlvdXQoQVZDaGFubmVsTGF5 b3V0ICpjaGFubmVsX2xheW91dCkgeworKwkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib3V0 X2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5lbF9sYXlvdXQtPnUubWFzaywgMCk7CisgCX0KKworIAl2 b2lkIFNldE91dHB1dFNhbXBsZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBzYW1wbGVfZm9ybWF0KSB7 CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvc2YiLCBzYW1wbGVfZm9ybWF0LCAwKTsK KysJCWF2X29wdF9zZXRfc2FtcGxlX2ZtdChtX3N3cl9jdHgsICJvdXRfc2FtcGxlX2ZtdCIsIHNh bXBsZV9mb3JtYXQsIDApOworIAl9CisKKyAJdm9pZCBTZXRPdXRwdXRTYW1wbGVSYXRlKGludCBz YW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib3NyIiwgc2FtcGxl X3JhdGUsIDApOworKwkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib3V0X3NhbXBsZV9yYXRl Iiwgc2FtcGxlX3JhdGUsIDApOworIAl9CisKKyAJaW50IEluaXQoKSB7CitkaWZmIC0tZ2l0IGEv c3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaCBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9f cmVhZGVyLmgKK2luZGV4IDU1NTAxNjQuLjFjNmIzNDYgMTAwNjQ0CistLS0gYS9zcmMvYXVkaW8v ZmZtcGVnX2F1ZGlvX3JlYWRlci5oCisrKysgYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRl ci5oCitAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CisgCWJvb2wgUmVhZChjb25zdCBpbnQxNl90 ICoqZGF0YSwgc2l6ZV90ICpzaXplKTsKKworIAlib29sIElzT3BlbigpIGNvbnN0IHsgcmV0dXJu IG1fb3BlbmVkOyB9CistCWJvb2wgSXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmluaXNo ZWQgJiYgIW1fZ290X2ZyYW1lOyB9CisrCWJvb2wgSXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJu ICFtX2hhc19tb3JlX3BhY2tldHMgJiYgIW1faGFzX21vcmVfZnJhbWVzOyB9CisKKyAJc3RkOjpz dHJpbmcgR2V0RXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CisgCWludCBHZXRFcnJv ckNvZGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yX2NvZGU7IH0KK0BAIC03NCwyMCArNzQsMTkg QEAgcHJpdmF0ZToKKyAJdWludDhfdCAqbV9jb252ZXJ0X2J1ZmZlclsxXSA9IHsgbnVsbHB0ciB9 OworIAlpbnQgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzID0gMDsKKworLQlBVklucHV0Rm9y bWF0ICptX2lucHV0X2ZtdCA9IG51bGxwdHI7CisrCWNvbnN0IEFWSW5wdXRGb3JtYXQgKm1faW5w dXRfZm10ID0gbnVsbHB0cjsKKyAJQVZEaWN0aW9uYXJ5ICptX2lucHV0X29wdHMgPSBudWxscHRy OworCisgCUFWRm9ybWF0Q29udGV4dCAqbV9mb3JtYXRfY3R4ID0gbnVsbHB0cjsKKyAJQVZDb2Rl Y0NvbnRleHQgKm1fY29kZWNfY3R4ID0gbnVsbHB0cjsKKy0JQVZGcmFtZSAqbV9mcmFtZSA9IG51 bGxwdHI7CisgCWludCBtX3N0cmVhbV9pbmRleCA9IC0xOworIAlzdGQ6OnN0cmluZyBtX2Vycm9y OworIAlpbnQgbV9lcnJvcl9jb2RlID0gMDsKKy0JYm9vbCBtX2ZpbmlzaGVkID0gZmFsc2U7Cisg CWJvb2wgbV9vcGVuZWQgPSBmYWxzZTsKKy0JaW50IG1fZ290X2ZyYW1lID0gMDsKKy0JQVZQYWNr ZXQgbV9wYWNrZXQ7CistCUFWUGFja2V0IG1fcGFja2V0MDsKKysJYm9vbCBtX2hhc19tb3JlX3Bh Y2tldHMgPSB0cnVlOworKwlib29sIG1faGFzX21vcmVfZnJhbWVzID0gdHJ1ZTsKKysJQVZQYWNr ZXQgKm1fcGFja2V0ID0gbnVsbHB0cjsKKysJQVZGcmFtZSAqbV9mcmFtZSA9IG51bGxwdHI7CisK KyAJaW50IG1fb3V0cHV0X3NhbXBsZV9yYXRlID0gMDsKKyAJaW50IG1fb3V0cHV0X2NoYW5uZWxz ID0gMDsKK0BAIC05OCwxOSArOTcsMTIgQEAgcHJpdmF0ZToKKworIGlubGluZSBGRm1wZWdBdWRp b1JlYWRlcjo6RkZtcGVnQXVkaW9SZWFkZXIoKSB7CisgCWF2X2xvZ19zZXRfbGV2ZWwoQVZfTE9H X1FVSUVUKTsKKy0KKy0JYXZfaW5pdF9wYWNrZXQoJm1fcGFja2V0KTsKKy0JbV9wYWNrZXQuZGF0 YSA9IG51bGxwdHI7CistCW1fcGFja2V0LnNpemUgPSAwOworLQorLQltX3BhY2tldDAgPSBtX3Bh Y2tldDsKKyB9CisKKyBpbmxpbmUgRkZtcGVnQXVkaW9SZWFkZXI6On5GRm1wZWdBdWRpb1JlYWRl cigpIHsKKyAJQ2xvc2UoKTsKKyAJYXZfZGljdF9mcmVlKCZtX2lucHV0X29wdHMpOworIAlhdl9m cmVlcCgmbV9jb252ZXJ0X2J1ZmZlclswXSk7CistCWF2X3BhY2tldF91bnJlZigmbV9wYWNrZXQw KTsKKyB9CisKKyBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6U2V0SW5wdXRGb3JtYXQo Y29uc3QgY2hhciAqbmFtZSkgeworQEAgLTEzNSwxMSArMTI3LDEwIEBAIGlubGluZSBib29sIEZG bXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKwor IAlDbG9zZSgpOworCistICAgIGF2X2luaXRfcGFja2V0KCZtX3BhY2tldCk7CistCW1fcGFja2V0 LmRhdGEgPSBudWxscHRyOworLQltX3BhY2tldC5zaXplID0gMDsKKy0KKy0JbV9wYWNrZXQwID0g bV9wYWNrZXQ7CisrCW1fcGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrCWlmICghbV9wYWNr ZXQpIHsKKysJCXJldHVybiBmYWxzZTsKKysJfQorCisgCXJldCA9IGF2Zm9ybWF0X29wZW5faW5w dXQoJm1fZm9ybWF0X2N0eCwgZmlsZV9uYW1lLmNfc3RyKCksIG1faW5wdXRfZm10LCAmbV9pbnB1 dF9vcHRzKTsKKyAJaWYgKHJldCA8IDApIHsKK0BAIC0xNTMsMjYgKzE0NCwzMSBAQCBpbmxpbmUg Ym9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1l KSB7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKworLQlBVkNvZGVjICpjb2RlYzsKKysJY29uc3Qg QVZDb2RlYyAqY29kZWM7CisgCXJldCA9IGF2X2ZpbmRfYmVzdF9zdHJlYW0obV9mb3JtYXRfY3R4 LCBBVk1FRElBX1RZUEVfQVVESU8sIC0xLCAtMSwgJmNvZGVjLCAwKTsKKyAJaWYgKHJldCA8IDAp IHsKKyAJCVNldEVycm9yKCJDb3VsZCBub3QgZmluZCBhbnkgYXVkaW8gc3RyZWFtIGluIHRoZSBm aWxlIiwgcmV0KTsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorIAltX3N0cmVhbV9pbmRleCA9IHJl dDsKKysJYXV0byBzdHJlYW0gPSBtX2Zvcm1hdF9jdHgtPnN0cmVhbXNbbV9zdHJlYW1faW5kZXhd OworCistCW1fY29kZWNfY3R4ID0gbV9mb3JtYXRfY3R4LT5zdHJlYW1zW21fc3RyZWFtX2luZGV4 XS0+Y29kZWM7CisrCW1fY29kZWNfY3R4ID0gYXZjb2RlY19hbGxvY19jb250ZXh0Myhjb2RlYyk7 CisgCW1fY29kZWNfY3R4LT5yZXF1ZXN0X3NhbXBsZV9mbXQgPSBBVl9TQU1QTEVfRk1UX1MxNjsK KworKwlyZXQgPSBhdmNvZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4dChtX2NvZGVjX2N0eCwgc3Ry ZWFtLT5jb2RlY3Bhcik7CisrCWlmIChyZXQgPCAwKSB7CisrCQlTZXRFcnJvcigiQ291bGQgbm90 IGNvcHkgdGhlIHN0cmVhbSBwYXJhbWV0ZXJzIiwgcmV0KTsKKysJCXJldHVybiBmYWxzZTsKKysJ fQorKworIAlyZXQgPSBhdmNvZGVjX29wZW4yKG1fY29kZWNfY3R4LCBjb2RlYywgbnVsbHB0cik7 CisgCWlmIChyZXQgPCAwKSB7CisgCQlTZXRFcnJvcigiQ291bGQgbm90IG9wZW4gdGhlIGNvZGVj IiwgcmV0KTsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorCistCWlmICghbV9jb2RlY19jdHgtPmNo YW5uZWxfbGF5b3V0KSB7CistCQltX2NvZGVjX2N0eC0+Y2hhbm5lbF9sYXlvdXQgPSBhdl9nZXRf ZGVmYXVsdF9jaGFubmVsX2xheW91dChtX2NvZGVjX2N0eC0+Y2hhbm5lbHMpOworLQl9CisrCWF2 X2R1bXBfZm9ybWF0KG1fZm9ybWF0X2N0eCwgMCwgImZvbyIsIDApOworCisgCW1fZnJhbWUgPSBh dl9mcmFtZV9hbGxvYygpOworIAlpZiAoIW1fZnJhbWUpIHsKK0BAIC0xODMsMTkgKzE3OSwyMyBA QCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0cmluZyAm ZmlsZV9uYW1lKSB7CisgCQltX291dHB1dF9zYW1wbGVfcmF0ZSA9IG1fY29kZWNfY3R4LT5zYW1w bGVfcmF0ZTsKKyAJfQorCistCWlmICghbV9vdXRwdXRfY2hhbm5lbHMpIHsKKy0JCW1fb3V0cHV0 X2NoYW5uZWxzID0gbV9jb2RlY19jdHgtPmNoYW5uZWxzOworKwlBVkNoYW5uZWxMYXlvdXQgb3V0 cHV0X2NoYW5uZWxfbGF5b3V0OworKwlpZiAobV9vdXRwdXRfY2hhbm5lbHMpIHsKKysJCWF2X2No YW5uZWxfbGF5b3V0X2RlZmF1bHQoJm91dHB1dF9jaGFubmVsX2xheW91dCwgbV9vdXRwdXRfY2hh bm5lbHMpOworKwl9IGVsc2UgeworKwkJbV9vdXRwdXRfY2hhbm5lbHMgPSBtX2NvZGVjX2N0eC0+ Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOworKwkJYXZfY2hhbm5lbF9sYXlvdXRfZGVmYXVsdCgmb3V0 cHV0X2NoYW5uZWxfbGF5b3V0LCBtX291dHB1dF9jaGFubmVscyk7CisgCX0KKworLQlpZiAobV9j b2RlY19jdHgtPnNhbXBsZV9mbXQgIT0gQVZfU0FNUExFX0ZNVF9TMTYgfHwgbV9jb2RlY19jdHgt PmNoYW5uZWxzICE9IG1fb3V0cHV0X2NoYW5uZWxzIHx8IG1fY29kZWNfY3R4LT5zYW1wbGVfcmF0 ZSAhPSBtX291dHB1dF9zYW1wbGVfcmF0ZSkgeworKwlpZiAobV9jb2RlY19jdHgtPnNhbXBsZV9m bXQgIT0gQVZfU0FNUExFX0ZNVF9TMTYgfHwgbV9jb2RlY19jdHgtPmNoX2xheW91dC5uYl9jaGFu bmVscyAhPSBtX291dHB1dF9jaGFubmVscyB8fCBtX2NvZGVjX2N0eC0+c2FtcGxlX3JhdGUgIT0g bV9vdXRwdXRfc2FtcGxlX3JhdGUpIHsKKyAJCW1fY29udmVydGVyLnJlc2V0KG5ldyBGRm1wZWdB dWRpb1Byb2Nlc3NvcigpKTsKKyAJCW1fY29udmVydGVyLT5TZXRDb21wYXRpYmxlTW9kZSgpOwor IAkJbV9jb252ZXJ0ZXItPlNldElucHV0U2FtcGxlRm9ybWF0KG1fY29kZWNfY3R4LT5zYW1wbGVf Zm10KTsKKyAJCW1fY29udmVydGVyLT5TZXRJbnB1dFNhbXBsZVJhdGUobV9jb2RlY19jdHgtPnNh bXBsZV9yYXRlKTsKKy0JCW1fY29udmVydGVyLT5TZXRJbnB1dENoYW5uZWxMYXlvdXQobV9jb2Rl Y19jdHgtPmNoYW5uZWxfbGF5b3V0KTsKKysJCW1fY29udmVydGVyLT5TZXRJbnB1dENoYW5uZWxM YXlvdXQoJihtX2NvZGVjX2N0eC0+Y2hfbGF5b3V0KSk7CisgCQltX2NvbnZlcnRlci0+U2V0T3V0 cHV0U2FtcGxlRm9ybWF0KEFWX1NBTVBMRV9GTVRfUzE2KTsKKyAJCW1fY29udmVydGVyLT5TZXRP dXRwdXRTYW1wbGVSYXRlKG1fb3V0cHV0X3NhbXBsZV9yYXRlKTsKKy0JCW1fY29udmVydGVyLT5T ZXRPdXRwdXRDaGFubmVsTGF5b3V0KGF2X2dldF9kZWZhdWx0X2NoYW5uZWxfbGF5b3V0KG1fb3V0 cHV0X2NoYW5uZWxzKSk7CisrCQltX2NvbnZlcnRlci0+U2V0T3V0cHV0Q2hhbm5lbExheW91dCgm b3V0cHV0X2NoYW5uZWxfbGF5b3V0KTsKKyAJCWF1dG8gcmV0ID0gbV9jb252ZXJ0ZXItPkluaXQo KTsKKyAJCWlmIChyZXQgIT0gMCkgeworIAkJCVNldEVycm9yKCJDb3VsZCBub3QgY3JlYXRlIGFu IGF1ZGlvIGNvbnZlcnRlciBpbnN0YW5jZSIsIHJldCk7CitAQCAtMjAzLDEwICsyMDMsMTEgQEAg aW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZp bGVfbmFtZSkgeworIAkJfQorIAl9CisKKysJYXZfY2hhbm5lbF9sYXlvdXRfdW5pbml0KCZvdXRw dXRfY2hhbm5lbF9sYXlvdXQpOworKworIAltX29wZW5lZCA9IHRydWU7CistCW1fZmluaXNoZWQg PSBmYWxzZTsKKy0JbV9nb3RfZnJhbWUgPSAwOworLQltX25iX3BhY2tldHMgPSAwOworKwltX2hh c19tb3JlX3BhY2tldHMgPSB0cnVlOworKwltX2hhc19tb3JlX2ZyYW1lcyA9IHRydWU7CisgCW1f ZGVjb2RlX2Vycm9yID0gMDsKKworIAlyZXR1cm4gdHJ1ZTsKK0BAIC0yMTQsNiArMjE1LDcgQEAg aW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZp bGVfbmFtZSkgeworCisgaW5saW5lIHZvaWQgRkZtcGVnQXVkaW9SZWFkZXI6OkNsb3NlKCkgewor IAlhdl9mcmFtZV9mcmVlKCZtX2ZyYW1lKTsKKysJYXZfcGFja2V0X2ZyZWUoJm1fcGFja2V0KTsK KworIAltX3N0cmVhbV9pbmRleCA9IC0xOworCitAQCAtMjUyLDkxICsyNTQsOTggQEAgaW5saW5l IGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6OlJlYWQoY29uc3QgaW50MTZfdCAqKmRhdGEsIHNpemVf dCAqc2l6ZSkgeworIAkJcmV0dXJuIGZhbHNlOworIAl9CisKKysJKmRhdGEgPSBudWxscHRyOwor Kwkqc2l6ZSA9IDA7CisrCisgCWludCByZXQ7CisrCWJvb2wgbmVlZHNfcGFja2V0ID0gZmFsc2U7 CisgCXdoaWxlICh0cnVlKSB7CistCQl3aGlsZSAobV9wYWNrZXQuc2l6ZSA8PSAwKSB7CistCQkJ YXZfcGFja2V0X3VucmVmKCZtX3BhY2tldDApOworLQkJCWF2X2luaXRfcGFja2V0KCZtX3BhY2tl dCk7CistCQkJbV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7CistCQkJbV9wYWNrZXQuc2l6ZSA9IDA7 CistCQkJcmV0ID0gYXZfcmVhZF9mcmFtZShtX2Zvcm1hdF9jdHgsICZtX3BhY2tldCk7CisrCQl3 aGlsZSAobmVlZHNfcGFja2V0ICYmIG1fcGFja2V0LT5zaXplID09IDApIHsKKysJCQlyZXQgPSBh dl9yZWFkX2ZyYW1lKG1fZm9ybWF0X2N0eCwgbV9wYWNrZXQpOworIAkJCWlmIChyZXQgPCAwKSB7 CisgCQkJCWlmIChyZXQgPT0gQVZFUlJPUl9FT0YpIHsKKy0JCQkJCW1fZmluaXNoZWQgPSB0cnVl OworKwkJCQkJbmVlZHNfcGFja2V0ID0gZmFsc2U7CisrCQkJCQltX2hhc19tb3JlX3BhY2tldHMg PSBmYWxzZTsKKyAJCQkJCWJyZWFrOworLQkJCQl9IGVsc2UgeworKwkJCQl9CisrCQkJCVNldEVy cm9yKCJFcnJvciByZWFkaW5nIGZyb20gdGhlIGF1ZGlvIHNvdXJjZSIsIHJldCk7CisrCQkJCXJl dHVybiBmYWxzZTsKKysJCQl9CisrCQkJaWYgKG1fcGFja2V0LT5zdHJlYW1faW5kZXggPT0gbV9z dHJlYW1faW5kZXgpIHsKKysJCQkJbmVlZHNfcGFja2V0ID0gZmFsc2U7CisrCQkJfSBlbHNlIHsK KysJCQkJYXZfcGFja2V0X3VucmVmKG1fcGFja2V0KTsKKysJCQl9CisrCQl9CisrCisrCQlpZiAo bV9wYWNrZXQtPnNpemUgIT0gMCkgeworKwkJCXJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQobV9j b2RlY19jdHgsIG1fcGFja2V0KTsKKysJCQlpZiAocmV0IDwgMCkgeworKwkJCQlpZiAocmV0ICE9 IEFWRVJST1IoRUFHQUlOKSkgeworIAkJCQkJU2V0RXJyb3IoIkVycm9yIHJlYWRpbmcgZnJvbSB0 aGUgYXVkaW8gc291cmNlIiwgcmV0KTsKKyAJCQkJCXJldHVybiBmYWxzZTsKKyAJCQkJfQorLQkJ CX0KKy0JCQltX3BhY2tldDAgPSBtX3BhY2tldDsKKy0JCQlpZiAobV9wYWNrZXQuc3RyZWFtX2lu ZGV4ICE9IG1fc3RyZWFtX2luZGV4KSB7CistCQkJCW1fcGFja2V0LmRhdGEgPSBudWxscHRyOwor LQkJCQltX3BhY2tldC5zaXplID0gMDsKKyAJCQl9IGVsc2UgeworLQkJCQltX25iX3BhY2tldHMr KzsKKysJCQkJYXZfcGFja2V0X3VucmVmKG1fcGFja2V0KTsKKyAJCQl9CisgCQl9CisKKy0JCXJl dCA9IGF2Y29kZWNfZGVjb2RlX2F1ZGlvNChtX2NvZGVjX2N0eCwgbV9mcmFtZSwgJm1fZ290X2Zy YW1lLCAmbV9wYWNrZXQpOworKwkJcmV0ID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1lKG1fY29kZWNf Y3R4LCBtX2ZyYW1lKTsKKyAJCWlmIChyZXQgPCAwKSB7CistCQkJaWYgKG1fZGVjb2RlX2Vycm9y KSB7CistCQkJCVNldEVycm9yKCJFcnJvciBkZWNvZGluZyBhdWRpbyBmcmFtZSIsIG1fZGVjb2Rl X2Vycm9yKTsKKy0JCQkJcmV0dXJuIGZhbHNlOworKwkJCWlmIChyZXQgPT0gQVZFUlJPUl9FT0Yp IHsKKysJCQkJbV9oYXNfbW9yZV9mcmFtZXMgPSBmYWxzZTsKKysJCQl9IGVsc2UgaWYgKHJldCA9 PSBBVkVSUk9SKEVBR0FJTikpIHsKKysJCQkJaWYgKG1faGFzX21vcmVfcGFja2V0cykgeworKwkJ CQkJbmVlZHNfcGFja2V0ID0gdHJ1ZTsKKysJCQkJCWNvbnRpbnVlOworKwkJCQl9IGVsc2Ugewor KwkJCQkJbV9oYXNfbW9yZV9mcmFtZXMgPSBmYWxzZTsKKysJCQkJfQorIAkJCX0KKy0JCQltX2Rl Y29kZV9lcnJvciA9IHJldDsKKy0JCQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JCQltX3Bh Y2tldC5zaXplID0gMDsKKy0JCQljb250aW51ZTsKKysJCQlTZXRFcnJvcigiRXJyb3IgZGVjb2Rp bmcgdGhlIGF1ZGlvIHNvdXJjZSIsIHJldCk7CisrCQkJcmV0dXJuIGZhbHNlOworIAkJfQorCist CQlicmVhazsKKy0JfQorLQorLQltX2RlY29kZV9lcnJvciA9IDA7CistCistCWNvbnN0IGludCBk ZWNvZGVkID0gc3RkOjptaW4ocmV0LCBtX3BhY2tldC5zaXplKTsKKy0JbV9wYWNrZXQuZGF0YSAr PSBkZWNvZGVkOworLQltX3BhY2tldC5zaXplIC09IGRlY29kZWQ7CistCistCWlmIChtX2dvdF9m cmFtZSkgeworLQkJaWYgKG1fY29udmVydGVyKSB7CistCQkJaWYgKG1fZnJhbWUtPm5iX3NhbXBs ZXMgPiBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMpIHsKKy0JCQkJaW50IGxpbnNpemU7Cist CQkJCWF2X2ZyZWVwKCZtX2NvbnZlcnRfYnVmZmVyWzBdKTsKKy0JCQkJbV9jb252ZXJ0X2J1ZmZl cl9uYl9zYW1wbGVzID0gc3RkOjptYXgoMTAyNCAqIDgsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOwor LQkJCQlyZXQgPSBhdl9zYW1wbGVzX2FsbG9jKG1fY29udmVydF9idWZmZXIsICZsaW5zaXplLCBt X2NvZGVjX2N0eC0+Y2hhbm5lbHMsIG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcywgQVZfU0FN UExFX0ZNVF9TMTYsIDEpOworLQkJCQlpZiAocmV0IDwgMCkgeworLQkJCQkJU2V0RXJyb3IoIkNv dWxkbid0IGFsbG9jYXRlIGF1ZGlvIGNvbnZlcnRlciBidWZmZXIiLCByZXQpOworKwkJaWYgKG1f ZnJhbWUtPm5iX3NhbXBsZXMgPiAwKSB7CisrCQkJaWYgKG1fY29udmVydGVyKSB7CisrCQkJCWlm IChtX2ZyYW1lLT5uYl9zYW1wbGVzID4gbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKSB7Cisr CQkJCQlpbnQgbGluc2l6ZTsKKysJCQkJCWF2X2ZyZWVwKCZtX2NvbnZlcnRfYnVmZmVyWzBdKTsK KysJCQkJCW1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcyA9IHN0ZDo6bWF4KDEwMjQgKiA4LCBt X2ZyYW1lLT5uYl9zYW1wbGVzKTsKKysJCQkJCXJldCA9IGF2X3NhbXBsZXNfYWxsb2MobV9jb252 ZXJ0X2J1ZmZlciwgJmxpbnNpemUsIG1fY29kZWNfY3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHMs IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcywgQVZfU0FNUExFX0ZNVF9TMTYsIDEpOworKwkJ CQkJaWYgKHJldCA8IDApIHsKKysJCQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgYWxsb2NhdGUgYXVk aW8gY29udmVydGVyIGJ1ZmZlciIsIHJldCk7CisrCQkJCQkJcmV0dXJuIGZhbHNlOworKwkJCQkJ fQorKwkJCQl9CisrCQkJCWF1dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5Db252ZXJ0KG1f Y29udmVydF9idWZmZXIsIG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcywgKGNvbnN0IHVpbnQ4 X3QgKiopIG1fZnJhbWUtPmRhdGEsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOworKwkJCQlpZiAobmJf c2FtcGxlcyA8IDApIHsKKysJCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlvIiwg cmV0KTsKKyAJCQkJCXJldHVybiBmYWxzZTsKKyAJCQkJfQorLQkJCX0KKy0JCQlhdXRvIG5iX3Nh bXBsZXMgPSBtX2NvbnZlcnRlci0+Q29udmVydChtX2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZlcnRf YnVmZmVyX25iX3NhbXBsZXMsIChjb25zdCB1aW50OF90ICoqKSBtX2ZyYW1lLT5kYXRhLCBtX2Zy YW1lLT5uYl9zYW1wbGVzKTsKKy0JCQlpZiAobmJfc2FtcGxlcyA8IDApIHsKKy0JCQkJU2V0RXJy b3IoIkNvdWxkbid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOworLQkJCQlyZXR1cm4gZmFsc2U7Cist CQkJfQorLQkJCSpkYXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9jb252ZXJ0X2J1ZmZlclswXTsK Ky0JCQkqc2l6ZSA9IG5iX3NhbXBsZXM7CistCQl9IGVsc2UgeworLQkJCSpkYXRhID0gKGNvbnN0 IGludDE2X3QgKikgbV9mcmFtZS0+ZGF0YVswXTsKKy0JCQkqc2l6ZSA9IG1fZnJhbWUtPm5iX3Nh bXBsZXM7CistCQl9CistCX0gZWxzZSB7CistCQlpZiAobV9maW5pc2hlZCAmJiBtX2NvbnZlcnRl cikgeworLQkJCWF1dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5GbHVzaChtX2NvbnZlcnRf YnVmZmVyLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMpOworLQkJCWlmIChuYl9zYW1wbGVz IDwgMCkgeworLQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIsIHJldCk7Cist CQkJCXJldHVybiBmYWxzZTsKKy0JCQl9IGVsc2UgaWYgKG5iX3NhbXBsZXMgPiAwKSB7CistCQkJ CW1fZ290X2ZyYW1lID0gMTsKKyAJCQkJKmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2NvbnZl cnRfYnVmZmVyWzBdOworIAkJCQkqc2l6ZSA9IG5iX3NhbXBsZXM7CisrCQkJfSBlbHNlIHsKKysJ CQkJKmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2ZyYW1lLT5kYXRhWzBdOworKwkJCQkqc2l6 ZSA9IG1fZnJhbWUtPm5iX3NhbXBsZXM7CisrCQkJfQorKwkJfSBlbHNlIHsKKysJCQlpZiAobV9j b252ZXJ0ZXIpIHsKKysJCQkJaWYgKElzRmluaXNoZWQoKSkgeworKwkJCQkJYXV0byBuYl9zYW1w bGVzID0gbV9jb252ZXJ0ZXItPkZsdXNoKG1fY29udmVydF9idWZmZXIsIG1fY29udmVydF9idWZm ZXJfbmJfc2FtcGxlcyk7CisrCQkJCQlpZiAobmJfc2FtcGxlcyA8IDApIHsKKysJCQkJCQlTZXRF cnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIsIHJldCk7CisrCQkJCQkJcmV0dXJuIGZhbHNl OworKwkJCQkJfSBlbHNlIGlmIChuYl9zYW1wbGVzID4gMCkgeworKwkJCQkJCSpkYXRhID0gKGNv bnN0IGludDE2X3QgKikgbV9jb252ZXJ0X2J1ZmZlclswXTsKKysJCQkJCQkqc2l6ZSA9IG5iX3Nh bXBsZXM7CisrCQkJCQl9CisrCQkJCX0KKyAJCQl9CisgCQl9CistCX0KKworLQlyZXR1cm4gdHJ1 ZTsKKysJCXJldHVybiB0cnVlOworKwl9CisgfQorCisgaW5saW5lIHZvaWQgRkZtcGVnQXVkaW9S ZWFkZXI6OlNldEVycm9yKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIGludCBlcnJudW0pIHsKK2RpZmYg LS1naXQgYS90ZXN0cy9DTWFrZUxpc3RzLnR4dCBiL3Rlc3RzL0NNYWtlTGlzdHMudHh0CitpbmRl eCBhMmI1MTdiLi4xMjNlNjQzIDEwMDY0NAorLS0tIGEvdGVzdHMvQ01ha2VMaXN0cy50eHQKKysr KyBiL3Rlc3RzL0NNYWtlTGlzdHMudHh0CitAQCAtMzgsNiArMzgsMTIgQEAgc2V0KFNSQ1MKKwor IGlmKEJVSUxEX1RPT0xTKQorIAlzZXQoU1JDUyAke1NSQ1N9IC4uL3NyYy9hdWRpby9mZm1wZWdf YXVkaW9fcmVhZGVyX3Rlc3QuY3BwKQorKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKAorKyAgICAg ICAgJHtGRk1QRUdfTElCQVZGT1JNQVRfSU5DTFVERV9ESVJTfQorKyAgICAgICAgJHtGRk1QRUdf TElCQVZDT0RFQ19JTkNMVURFX0RJUlN9CisrICAgICAgICAke0ZGTVBFR19MSUJBVlVUSUxfSU5D TFVERV9ESVJTfQorKyAgICAgICAgJHtBVURJT19QUk9DRVNTT1JfSU5DTFVERV9ESVJTfQorKyAg ICApCisgCWxpbmtfbGlicmFyaWVzKGZwY2FsY19saWJzKQorIGVuZGlmKCkKKworLS0gCisyLjM4 LjEKKworCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlIGIvc3JjcGtn cy9jaHJvbWFwcmludC90ZW1wbGF0ZQppbmRleCA3ZWY3ODM4OTQ5ZjNhLi4xZjdiYmM3MGEyMmM4 IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv Y2hyb21hcHJpbnQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdjaHJvbWFwcmludCcKIHBrZ25hbWU9Y2hyb21hcHJpbnQKIHZlcnNpb249MS41LjEKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURC VUlMRF9UT09MUz1PTiIKIG1ha2VfY2hlY2tfdGFyZ2V0PSJjaGVjayIKCkZyb20gMWM2ZGE2ZDFk MmNmNmJhZmRkZDVkOTQ3YzZjOWQ0NGU1ZWE5ZTcyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI0LzExM10gY2hyb21pdW06IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL3BhdGNoZXMvY2hyb21pdW0tOTMtZmZtcGVnLTQuNC5w YXRjaCAgICAgIHwgMzYgLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9m Zm1wZWc1LnBhdGNoICAgICAgICB8IDQ3ICsrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvY2hy b21pdW0vdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiAzIGZpbGVzIGNoYW5n ZWQsIDQ4IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWctNC40LnBhdGNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvY2hyb21pdW0tOTMtZmZtcGVn LTQuNC5wYXRjaCBiL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWct NC40LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGVjNzM2Zjk4YmM3Li4w MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1m Zm1wZWctNC40LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotZGlmZiAtLWdp dCBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MgYi9tZWRpYS9maWx0ZXJzL2ZmbXBl Z19kZW11eGVyLmNjCi1pbmRleCBhYzQ3MTNiMDcyNjguLjQ5MmE5YTM3ZDA5NiAxMDA2NDQKLS0t LSBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MKLSsrKyBiL21lZGlhL2ZpbHRlcnMv ZmZtcGVnX2RlbXV4ZXIuY2MKLUBAIC00MjcsMTEgKzQyNywxMSBAQCB2b2lkIEZGbXBlZ0RlbXV4 ZXJTdHJlYW06OkVucXVldWVQYWNrZXQoU2NvcGVkQVZQYWNrZXQgcGFja2V0KSB7Ci0gICBzY29w ZWRfcmVmcHRyPERlY29kZXJCdWZmZXI+IGJ1ZmZlcjsKLSAKLSAgIGlmICh0eXBlKCkgPT0gRGVt dXhlclN0cmVhbTo6VEVYVCkgewotLSAgICBzaXplX3QgaWRfc2l6ZSA9IDA7Ci0rICAgIGludCBp ZF9zaXplID0gMDsKLSAgICAgdWludDhfdCogaWRfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9k YXRhKAotICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9XRUJWVFRfSURFTlRJRklF UiwgJmlkX3NpemUpOwotIAotLSAgICBzaXplX3Qgc2V0dGluZ3Nfc2l6ZSA9IDA7Ci0rICAgIGlu dCBzZXR0aW5nc19zaXplID0gMDsKLSAgICAgdWludDhfdCogc2V0dGluZ3NfZGF0YSA9IGF2X3Bh Y2tldF9nZXRfc2lkZV9kYXRhKAotICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9X RUJWVFRfU0VUVElOR1MsICZzZXR0aW5nc19zaXplKTsKLSAKLUBAIC00NDMsNyArNDQzLDcgQEAg dm9pZCBGRm1wZWdEZW11eGVyU3RyZWFtOjpFbnF1ZXVlUGFja2V0KFNjb3BlZEFWUGFja2V0IHBh Y2tldCkgewotICAgICBidWZmZXIgPSBEZWNvZGVyQnVmZmVyOjpDb3B5RnJvbShwYWNrZXQtPmRh dGEsIHBhY2tldC0+c2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2lkZV9kYXRhLmRhdGEoKSwgc2lkZV9kYXRhLnNpemUoKSk7Ci0gICB9IGVsc2UgewotLSAgICBz aXplX3Qgc2lkZV9kYXRhX3NpemUgPSAwOwotKyAgICBpbnQgc2lkZV9kYXRhX3NpemUgPSAwOwot ICAgICB1aW50OF90KiBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAg ICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFMLCAm c2lkZV9kYXRhX3NpemUpOwotIAotQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEZGbXBlZ0RlbXV4 ZXJTdHJlYW06OkVucXVldWVQYWNrZXQoU2NvcGVkQVZQYWNrZXQgcGFja2V0KSB7Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0LT5zaXplIC0gZGF0YV9vZmZz ZXQpOwotICAgICB9Ci0gCi0tICAgIHNpemVfdCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7Ci0rICAg IGludCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7Ci0gICAgIGNvbnN0IHVpbnQzMl90KiBza2lwX3Nh bXBsZXNfcHRyID0KLSAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihh dl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BL VF9EQVRBX1NLSVBfU0FNUExFUywgJnNraXBfc2FtcGxlc19zaXplKSk7CmRpZmYgLS1naXQgYS9z cmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvY2hyb21pdW0v cGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMDAuLjI0ZTJkYTM4ZTM0Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2Nocm9taXVt L3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDQ3IEBACistLS0gYS9tZWRpYS9maWx0 ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCTIwMjMtMDEtMjMgMTc6MzM6NTcuMzY2MjEzODA1ICswMjAw CisrKysgYi9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCTIwMjMtMDEtMjMgMTc6NDM6 MDkuMjgzNDM2OTgzICswMjAwCitAQCAtOTIsMjQgKzkyLDEyIEBACisgCisgc3RhdGljIGJhc2U6 OlRpbWVEZWx0YSBFeHRyYWN0U3RhcnRUaW1lKEFWU3RyZWFtKiBzdHJlYW0pIHsKKyAgIC8vIFRo ZSBkZWZhdWx0IHN0YXJ0IHRpbWUgaXMgemVyby4KKy0gIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90 aW1lOworKyAgYmFzZTo6VGltZURlbHRhIHN0YXJ0X3RpbWUgPSBrTm9UaW1lc3RhbXA7CisgCisg ICAvLyBGaXJzdCB0cnkgdG8gdXNlICB0aGUgfHN0YXJ0X3RpbWV8IHZhbHVlIGFzIGlzLgorLSAg aWYgKHN0cmVhbS0+c3RhcnRfdGltZSAhPSBrTm9GRm1wZWdUaW1lc3RhbXApCisrICBpZiAoc3Ry ZWFtLT5zdGFydF90aW1lICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCkgLy8gQVZfTk9QVFNfVkFMVUUK KyAgICAgc3RhcnRfdGltZSA9IENvbnZlcnRGcm9tVGltZUJhc2Uoc3RyZWFtLT50aW1lX2Jhc2Us IHN0cmVhbS0+c3RhcnRfdGltZSk7CisgCistICAvLyBOZXh0IHRyeSB0byB1c2UgdGhlIGZpcnN0 IERUUyB2YWx1ZSwgZm9yIGNvZGVjcyB3aGVyZSB3ZSBrbm93IFBUUyA9PSBEVFMKKy0gIC8vIChl eGNsdWRlcyBhbGwgSDI2eCBjb2RlY3MpLiBUaGUgc3RhcnQgdGltZSBtdXN0IGJlIHJldHVybmVk IGluIFBUUy4KKy0gIGlmIChhdl9zdHJlYW1fZ2V0X2ZpcnN0X2R0cyhzdHJlYW0pICE9IGtOb0ZG bXBlZ1RpbWVzdGFtcCAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFW X0NPREVDX0lEX0hFVkMgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBB Vl9DT0RFQ19JRF9IMjY0ICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0g QVZfQ09ERUNfSURfTVBFRzQpIHsKKy0gICAgY29uc3QgYmFzZTo6VGltZURlbHRhIGZpcnN0X3B0 cyA9CistICAgICAgICBDb252ZXJ0RnJvbVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBhdl9z dHJlYW1fZ2V0X2ZpcnN0X2R0cyhzdHJlYW0pKTsKKy0gICAgaWYgKGZpcnN0X3B0cyA8IHN0YXJ0 X3RpbWUpCistICAgICAgc3RhcnRfdGltZSA9IGZpcnN0X3B0czsKKy0gIH0KKy0KKyAgIHJldHVy biBzdGFydF90aW1lOworIH0KKyAKK0BAIC0xNTk3LDcgKzE1ODUsNyBAQAorICAgZm9yIChjb25z dCBhdXRvJiBzdHJlYW0gOiBzdHJlYW1zXykgeworICAgICBpZiAoIXN0cmVhbSB8fCBzdHJlYW0t PklzRW5hYmxlZCgpICE9IGVuYWJsZWQpCisgICAgICAgY29udGludWU7CistICAgIGlmIChhdl9z dHJlYW1fZ2V0X2ZpcnN0X2R0cyhzdHJlYW0tPmF2X3N0cmVhbSgpKSA9PSBrSW52YWxpZFBUU01h cmtlcikKKysgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9Q VFNfVkFMVUUpCisgICAgICAgY29udGludWU7CisgICAgIGlmICghbG93ZXN0X3N0YXJ0X3RpbWVf c3RyZWFtIHx8CisgICAgICAgICBzdHJlYW0tPnN0YXJ0X3RpbWUoKSA8IGxvd2VzdF9zdGFydF90 aW1lX3N0cmVhbS0+c3RhcnRfdGltZSgpKSB7CitAQCAtMTYxOCw3ICsxNjA2LDcgQEAKKyAgICAg aWYgKHN0cmVhbS0+dHlwZSgpICE9IERlbXV4ZXJTdHJlYW06OlZJREVPKQorICAgICAgIGNvbnRp bnVlOworIAorLSAgICBpZiAoYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtLT5hdl9zdHJl YW0oKSkgPT0ga0ludmFsaWRQVFNNYXJrZXIpCisrICAgIGlmIChzdHJlYW0tPmF2X3N0cmVhbSgp LT5zdGFydF90aW1lID09IEFWX05PUFRTX1ZBTFVFKQorICAgICAgIGNvbnRpbnVlOworIAorICAg ICBpZiAoIXN0cmVhbS0+SXNFbmFibGVkKCkpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9taXVt L3RlbXBsYXRlIGIvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZQppbmRleCBiNGEzOWRmZDM4MTVj Li5jMjk0NTNjZDFmNTA5IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Nocm9taXVtL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiBwa2duYW1lPWNo cm9taXVtCiAjIFNlZSBodHRwczovL2Nocm9taXVtZGFzaC5hcHBzcG90LmNvbS9yZWxlYXNlcz9w bGF0Zm9ybT1MaW51eCBmb3IgdGhlIGxhdGVzdCB2ZXJzaW9uCiB2ZXJzaW9uPTExNC4wLjU3MzUu MTA2Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0iaTY4NiogeDg2XzY0KiBhYXJjaDY0 KiBhcm12N2wqIgogaG9zdG1ha2VkZXBlbmRzPSIKICAkKHZvcHRfaWYgY2xhbmcgImNsYW5nIGxs ZCBsbHZtMTUiKQoKRnJvbSBhMmQ2YjE0YjQyNzJiMTc4ODhkNzA5ZDJiYThlYWJjZjkxNTI5Y2Ix IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw MjUvMTEzXSBjbXVzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvY211cy9w YXRjaGVzL2ZmbXBlZzYucGF0Y2ggfCAxMiArKysrKysrKysrKysKIHNyY3BrZ3MvY211cy90ZW1w bGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jbXVzL3BhdGNo ZXMvZmZtcGVnNi5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBl ZzYucGF0Y2ggYi9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmZmYTk1YWI4MTExMDEKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCkBAIC0wLDAgKzEsMTIg QEAKKy0tLSBhL2lwL2ZmbXBlZy5jCisrKysgYi9pcC9mZm1wZWcuYworQEAgLTIwMiw5ICsyMDIs NiBAQCBzdGF0aWMgaW50IGZmbXBlZ19vcGVuKHN0cnVjdCBpbnB1dF9wbHVnaW5fZGF0YSAqaXBf ZGF0YSkKKyAJCQlicmVhazsKKyAJCX0KKyAKKy0JCWlmIChjb2RlYy0+Y2FwYWJpbGl0aWVzICYg QVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKy0JCQljYy0+ZmxhZ3MgfD0gQVZfQ09ERUNfRkxBR19U UlVOQ0FURUQ7CistCisgCQlpZiAoYXZjb2RlY19vcGVuMihjYywgY29kZWMsIE5VTEwpIDwgMCkg eworIAkJCWRfcHJpbnQoImNvdWxkIG5vdCBvcGVuIGNvZGVjOiAlZCwgJXNcbiIsIGNjLT5jb2Rl Y19pZCwgYXZjb2RlY19nZXRfbmFtZShjYy0+Y29kZWNfaWQpKTsKKyAJCQllcnIgPSAtSVBfRVJS T1JfVU5TVVBQT1JURURfRklMRV9UWVBFOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jbXVzL3RlbXBs YXRlIGIvc3JjcGtncy9jbXVzL3RlbXBsYXRlCmluZGV4IDBmY2I0MjRjZTMzNmMuLjA1Yjc3ZDBm ZWNhZWEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY211cy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Nt dXMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjbXVzJwog cGtnbmFtZT1jbXVzCiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Y29uZmlndXJlCiBjb25maWd1cmVfYXJncz0icHJlZml4PS91c3IgTEQ9JENDIgog aG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSBiNTUyODBmMTZkNmE4MjgyNjdlZWI3 OTljMGU2Y2NjNDM1ZGE4NDkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMjYvMTEzXSBjeWFucmlwOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY3lhbnJp cC90ZW1wbGF0ZSBiL3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZQppbmRleCA5Nzk2ZTM0NjE2MDFh Li41ZGIzMGUwMjBkMTdlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9jeWFucmlwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnY3lhbnJpcCcKIHBrZ25hbWU9Y3lhbnJpcAogdmVyc2lvbj0wLjkuMAotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGliY2Rpby1kZXZlbCBsaWJjZGlv LXBhcmFub2lhLWRldmVsIGxpYmN1cmwtZGV2ZWwgbGlibXVzaWNicmFpbno1LWRldmVsIgoKRnJv bSA4MDA5MDZhMTBhZGY3OTVmOTgyYjQzODQ0NmUzNGIzZjMyMjQwMjZiIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjcvMTEzXSBkZWFkYmVl ZjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2RlYWRiZWVmL3RlbXBs YXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUgYi9zcmNwa2dzL2Rl YWRiZWVmL3RlbXBsYXRlCmluZGV4IGI2NjRiYjFiOWJkOWYuLjE2NWIzYzdiOWNhZDggMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kZWFkYmVlZi90 ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZGVhZGJlZWYn CiBwa2duYW1lPWRlYWRiZWVmCiB2ZXJzaW9uPTEuOC44Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJl X2FyZ3M9Ii0tZGlzYWJsZS1vc3MgLS1kaXNhYmxlLWxmbSAtLWRpc2FibGUtbm90aWZ5IC0tZGlz YWJsZS1ndGsyIgogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBsaWJ0b29sIGdldHRleHQgZ2V0 dGV4dC1kZXZlbCBpbnRsdG9vbCBwa2ctY29uZmlnCiAgeWFzbSBjbGFuZyBnbGliLWRldmVsIgog bWFrZWRlcGVuZHM9IgotIGFsc2EtbGliLWRldmVsIGRidXMtZGV2ZWwgZmFhZDItZGV2ZWwgZmZt cGVnLWRldmVsIGd0ayszLWRldmVsIGltbGliMi1kZXZlbAorIGFsc2EtbGliLWRldmVsIGRidXMt ZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnNC1kZXZlbCBndGsrMy1kZXZlbCBpbWxpYjItZGV2ZWwK ICBqYW5zc29uLWRldmVsIGxpYmNkZGItZGV2ZWwgbGliY2Rpby1kZXZlbCBsaWJjdXJsLWRldmVs IGxpYmZsYWMtZGV2ZWwKICBsaWJtYWQtZGV2ZWwgbGlicG5nLWRldmVsIGxpYnNhbXBsZXJhdGUt ZGV2ZWwgbGlic25kZmlsZS1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwKICBsaWJ6aXAtZGV2ZWwgbXBn MTIzLWRldmVsIG9wdXNmaWxlLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwgd2F2cGFjay1kZXZlbCIK CkZyb20gOGRkMTA5Yzg5MmM4NzJjNWU4NDUzMTA3MGE5ZTc2OWU0NzAxZDcwNyBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI4LzExM10gZG9s cGhpbi1lbXU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9kb2xwaGluLWVt dS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUgYi9zcmNw a2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlCmluZGV4IDdlYTE5N2NlYjJhOGUuLjdhZWIwYTViNjQ1 ZTAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9kb2xwaGluLWVtdS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2RvbHBoaW4tZW11JwogcGtnbmFtZT1kb2xwaGluLWVtdQogdmVyc2lvbj01LjAuMTYxMDEK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9kb2xwaGluX2NvbW1pdD04ZWNmYTUzN2EyNDJkZTc0 ZDJlMzcyZTMwZDlkNzliMTQ1ODRiMmZiCiBfbWdiYV9jb21taXQ9NDBkNGM0MzBmYzM2Y2FlYjdl YTMyZmQzOTYyNDk0N2VkNDg3ZDJmMgogI1ZlcnNpb24vaGFzaCBwYWlyIGNhbiBiZSBmb3VuZCBh dCBodHRwczovL2RvbHBoaW4tZW11Lm9yZy9kb3dubG9hZC8KCkZyb20gZGQzMDczNGEwMDJmZmQ1 MDk3MzkzNTMxNWQ5NTViNWUzOWY3YTU4YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI5LzExM10gZHJvaWRjYW0tb2JzLXBsdWdpbjogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUgYi9z cmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUKaW5kZXggZmM5YzliZjZiOWQ1NC4u ZmIwNDgwNzU0ZGY0ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Ryb2lkY2FtLW9icy1wbHVnaW4nCiBwa2du YW1lPWRyb2lkY2FtLW9icy1wbHVnaW4KIHZlcnNpb249Mi4wLjEKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogbWFrZV91c2VfZW52PXllcwogbWFrZV9i dWlsZF9hcmdzPSJBTExPV19TVEFUSUM9bm8iCgpGcm9tIDY2YTRjZmMxMDg4YzRhZDgxZmQwMDI3 ZWEwZGUzMTg5ZDc4YmYyMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAK U3ViamVjdDogW1BBVENIIDAzMC8xMTNdIGRyb2lkY2FtOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Ryb2lk Y2FtL3RlbXBsYXRlIGIvc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZQppbmRleCAxYzNmMWI4YjFm YzY3Li4zMmE5MjIwYjc5YTRkIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Ryb2lkY2FtL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdkcm9pZGNhbScKIHBrZ25hbWU9ZHJvaWRjYW0KIHZlcnNpb249MS44LjIK LXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogbWFrZV9i dWlsZF9hcmdzPSJVU0JNVVhEPS1sdXNibXV4ZC0yLjAgSlBFRz0tbHR1cmJvanBlZyIKIGhvc3Rt YWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gMGNhNWFjOTBmOGMyYWI5YzY3NWFhOWQ0OTM4 ZGIyZjNiMjMwZDZiYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDMxLzExM10gZmZtcGVndGh1bWJuYWlsZXI6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogLi4uL2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCAg IHwgMjAyICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1w bGF0ZSAgICAgICAgICAgIHwgICA2ICstCiAyIGZpbGVzIGNoYW5nZWQsIDIwNSBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVndGh1 bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1w ZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZ3RodW1i bmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAwLi4zNjNmZjM1YTI4NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9m Zm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAgLTAsMCArMSwyMDIgQEAK Ky0tLSBhL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmllZGVjb2Rlci5jcHAJMjAxNy0xMS0yMSAx NDowNjo1Ny4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmll ZGVjb2Rlci5jcHAJMjAyMy0wNS0wNSAxMzoxNDo0Ny45NDY1NjA2NjggLTA0MDAKK0BAIC00MSwx MSArNDEsNiBAQAorIG5hbWVzcGFjZSBmZm1wZWd0aHVtYm5haWxlcgorIHsKKyAKKy1zdHJ1Y3Qg U2lsZW5jZUxvZ0xldmVsCisteworLSAgICBTaWxlbmNlTG9nTGV2ZWwoKSB7IGF2X2xvZ19zZXRf bGV2ZWwoQVZfTE9HX1FVSUVUKTsgfQorLX07CistCisgTW92aWVEZWNvZGVyOjpNb3ZpZURlY29k ZXIoQVZGb3JtYXRDb250ZXh0KiBwYXZDb250ZXh0KQorIDogbV9WaWRlb1N0cmVhbSgtMSkKKyAs IG1fcEZvcm1hdENvbnRleHQocGF2Q29udGV4dCkKK0BAIC03MCw4ICs2NSw2IEBACisgCisgdm9p ZCBNb3ZpZURlY29kZXI6OmluaXRpYWxpemUoY29uc3Qgc3RyaW5nJiBmaWxlbmFtZSwgYm9vbCBw cmVmZXJFbWJlZGRlZE1ldGFkYXRhKQorIHsKKy0gICAgYXZfcmVnaXN0ZXJfYWxsKCk7CistICAg IGF2Y29kZWNfcmVnaXN0ZXJfYWxsKCk7CisgICAgIGF2Zm9ybWF0X25ldHdvcmtfaW5pdCgpOwor IAorICAgICBzdHJpbmcgaW5wdXRGaWxlID0gZmlsZW5hbWUgPT0gIi0iID8gInBpcGU6IiA6IGZp bGVuYW1lOworQEAgLTk3LDggKzkwLDcgQEAKKyB7CisgICAgIGlmIChtX3BWaWRlb0NvZGVjQ29u dGV4dCkKKyAgICAgeworLSAgICAgICAgYXZjb2RlY19jbG9zZShtX3BWaWRlb0NvZGVjQ29udGV4 dCk7CistICAgICAgICBtX3BWaWRlb0NvZGVjQ29udGV4dCA9IG51bGxwdHI7CisrICAgICAgICBh dmNvZGVjX2ZyZWVfY29udGV4dCgmbV9wVmlkZW9Db2RlY0NvbnRleHQpOworICAgICB9CisgCisg ICAgIGlmICgoIW1fRm9ybWF0Q29udGV4dFdhc0dpdmVuKSAmJiBtX3BGb3JtYXRDb250ZXh0KQor QEAgLTE1MiwxMCArMTQ0LDEwIEBACisgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg bV9wRm9ybWF0Q29udGV4dC0+bmJfc3RyZWFtczsgKytpKQorICAgICB7CisgICAgICAgICBBVlN0 cmVhbSAqc3RyZWFtID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXTsKKy0gICAgICAgIGF1 dG8gY3R4ID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWM7CistICAgICAgICBp ZiAoY3R4LT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykKKysgICAgICAgIGF1dG8g cGFyID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXI7CisrICAgICAgICBp ZiAocGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykKKyAgICAgICAgIHsKKy0g ICAgICAgICAgICBpZiAoIXByZWZlckVtYmVkZGVkTWV0YWRhdGEgfHwgIWlzU3RpbGxJbWFnZUNv ZGVjKGN0eC0+Y29kZWNfaWQpKQorKyAgICAgICAgICAgIGlmICghcHJlZmVyRW1iZWRkZWRNZXRh ZGF0YSB8fCAhaXNTdGlsbEltYWdlQ29kZWMocGFyLT5jb2RlY19pZCkpCisgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICB2aWRlb1N0cmVhbXMucHVzaF9iYWNrKGkpOworICAgICAgICAg ICAgICAgICBjb250aW51ZTsKK0BAIC0yMDMsOCArMTk1LDcgQEAKKyAgICAgfQorIAorICAgICBt X3BWaWRlb1N0cmVhbSA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbbV9WaWRlb1N0cmVhbV07 CistICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0ID0gbV9wVmlkZW9TdHJlYW0tPmNvZGVjOworLSAg ICBtX3BWaWRlb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIobV9wVmlkZW9Db2RlY0NvbnRl eHQtPmNvZGVjX2lkKTsKKysgICAgbV9wVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVy KG1fcFZpZGVvU3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworIAorICAgICBpZiAobV9wVmlk ZW9Db2RlYyA9PSBudWxscHRyKQorICAgICB7CitAQCAtMjE0LDYgKzIwNSwyMCBAQAorICAgICAg ICAgdGhyb3cgbG9naWNfZXJyb3IoIlZpZGVvIENvZGVjIG5vdCBmb3VuZCIpOworICAgICB9Cisg CisrICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0ID0gYXZjb2RlY19hbGxvY19jb250ZXh0MyhtX3BW aWRlb0NvZGVjKTsKKysKKysgICAgaWYgKG1fcFZpZGVvQ29kZWNDb250ZXh0ID09IG51bGxwdHIp CisrICAgIHsKKysgICAgICAgIGRlc3Ryb3koKTsKKysgICAgICAgIHRocm93IGxvZ2ljX2Vycm9y KCJDb3VsZCBub3QgYWxsb2NhdGUgdmlkZW8gY29kZWMgY29udGV4dCIpOworKyAgICB9CisrCisr ICAgIGlmIChhdmNvZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4dChtX3BWaWRlb0NvZGVjQ29udGV4 dCwgbV9wVmlkZW9TdHJlYW0tPmNvZGVjcGFyKSA8IDApCisrICAgIHsKKysgICAgICAgIGRlc3Ry b3koKTsKKysgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJDb3VsZCBub3QgY29uZmlndXJlIHZp ZGVvIGNvZGVjIGNvbnRleHQiKTsKKysgICAgfQorKworICAgICBtX3BWaWRlb0NvZGVjQ29udGV4 dC0+d29ya2Fyb3VuZF9idWdzID0gMTsKKyAKKyAgICAgaWYgKGF2Y29kZWNfb3BlbjIobV9wVmlk ZW9Db2RlY0NvbnRleHQsIG1fcFZpZGVvQ29kZWMsIG51bGxwdHIpIDwgMCkKK0BAIC0zODYsMTMg KzM5MSw2IEBACisgCisgdm9pZCBNb3ZpZURlY29kZXI6OmluaXRpYWxpemVGaWx0ZXJHcmFwaChj b25zdCBBVlJhdGlvbmFsJiB0aW1lQmFzZSwgY29uc3Qgc3RkOjpzdHJpbmcmIHNpemUsIGJvb2wg bWFpbnRhaW5Bc3BlY3RSYXRpbykKKyB7CistICAgIHN0YXRpYyBjb25zdCBBVlBpeGVsRm9ybWF0 IHBpeGVsRm9ybWF0c1tdID0geyBBVl9QSVhfRk1UX1JHQjI0LCBBVl9QSVhfRk1UX05PTkUgfTsK Ky0KKy0gICAgYXV0byBkZWwgPSBbXSAoQVZCdWZmZXJTaW5rUGFyYW1zKiBwKSB7IGF2X2ZyZWVw KHApOyB9OworLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVZCdWZmZXJTaW5rUGFyYW1zLCBkZWNsdHlw ZShkZWwpPiBidWZmZXJzaW5rUGFyYW1zKGF2X2J1ZmZlcnNpbmtfcGFyYW1zX2FsbG9jKCksIGRl bCk7CistCistICAgIGF2ZmlsdGVyX3JlZ2lzdGVyX2FsbCgpOworLQorICAgICBtX3BGaWx0ZXJH cmFwaCA9IGF2ZmlsdGVyX2dyYXBoX2FsbG9jKCk7CisgICAgIGFzc2VydChtX3BGaWx0ZXJHcmFw aCk7CisgCitAQCAtNDA0LDEwICs0MDIsOCBAQAorIAorICAgICBjaGVja1JjKGF2ZmlsdGVyX2dy YXBoX2NyZWF0ZV9maWx0ZXIoJm1fcEZpbHRlclNvdXJjZSwgYXZmaWx0ZXJfZ2V0X2J5X25hbWUo ImJ1ZmZlciIpLCAidGh1bWJfYnVmZmVyIiwgc3Muc3RyKCkuY19zdHIoKSwgbnVsbHB0ciwgbV9w RmlsdGVyR3JhcGgpLAorICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGZpbHRlciBzb3Vy Y2UiKTsKKy0gICAgYnVmZmVyc2lua1BhcmFtcy0+cGl4ZWxfZm10cyA9IHBpeGVsRm9ybWF0czsK Ky0gICAgY2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BGaWx0ZXJTaW5r LCBhdmZpbHRlcl9nZXRfYnlfbmFtZSgiYnVmZmVyc2luayIpLCAidGh1bWJfYnVmZmVyc2luayIs IG51bGxwdHIsIGJ1ZmZlcnNpbmtQYXJhbXMuZ2V0KCksIG1fcEZpbHRlckdyYXBoKSwKKysgICAg Y2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BGaWx0ZXJTaW5rLCBhdmZp bHRlcl9nZXRfYnlfbmFtZSgiYnVmZmVyc2luayIpLCAidGh1bWJfYnVmZmVyc2luayIsIG51bGxw dHIsIG51bGxwdHIsIG1fcEZpbHRlckdyYXBoKSwKKyAgICAgICAgICAgICAiRmFpbGVkIHRvIGNy ZWF0ZSBmaWx0ZXIgc2luayIpOworLSAgICBidWZmZXJzaW5rUGFyYW1zLnJlbGVhc2UoKTsKKyAK KyAgICAgQVZGaWx0ZXJDb250ZXh0KiB5YWRpZkZpbHRlciA9IG51bGxwdHI7CisgICAgIGlmICht X3BGcmFtZS0+aW50ZXJsYWNlZF9mcmFtZSAhPSAwKQorQEAgLTUwMCwxNSArNDk2LDE1IEBACisg ICAgIH0KKyAKKyAgICAgY2hlY2tSYyhhdl9zZWVrX2ZyYW1lKG1fcEZvcm1hdENvbnRleHQsIC0x LCB0aW1lc3RhbXAsIDApLCAiU2Vla2luZyBpbiB2aWRlbyBmYWlsZWQiKTsKKy0gICAgYXZjb2Rl Y19mbHVzaF9idWZmZXJzKG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbbV9WaWRlb1N0cmVhbV0t PmNvZGVjKTsKKysgICAgYXZjb2RlY19mbHVzaF9idWZmZXJzKG1fcFZpZGVvQ29kZWNDb250ZXh0 KTsKKyAKKyAgICAgaW50IGtleUZyYW1lQXR0ZW1wdHMgPSAwOworLSAgICBib29sIGdvdEZyYW1l ID0gMDsKKysgICAgYm9vbCBnb3RGcmFtZTsKKyAKKyAgICAgZG8KKyAgICAgeworICAgICAgICAg aW50IGNvdW50ID0gMDsKKy0gICAgICAgIGdvdEZyYW1lID0gMDsKKysgICAgICAgIGdvdEZyYW1l ID0gZmFsc2U7CisgCisgICAgICAgICB3aGlsZSAoIWdvdEZyYW1lICYmIGNvdW50IDwgMjApCisg ICAgICAgICB7CitAQCAtNTUyLDE3ICs1NDgsMzMgQEAKKyAgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgfQorIAorLSAgICBhdl9mcmFtZV91bnJlZihtX3BGcmFtZSk7CistCistICAgIGludCBm cmFtZUZpbmlzaGVkOworKyAgICBpbnQgcmMgPSBhdmNvZGVjX3NlbmRfcGFja2V0KG1fcFZpZGVv Q29kZWNDb250ZXh0LCBtX3BQYWNrZXQpOworKyAgICBpZihyYyA9PSBBVkVSUk9SKEVBR0FJTikp CisrICAgIHsKKysgICAgICAgIHJjID0gMDsKKysgICAgfQorIAorLSAgICBpbnQgYnl0ZXNEZWNv ZGVkID0gYXZjb2RlY19kZWNvZGVfdmlkZW8yKG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BGcmFt ZSwgJmZyYW1lRmluaXNoZWQsIG1fcFBhY2tldCk7CistICAgIGlmIChieXRlc0RlY29kZWQgPCAw KQorKyAgICBpZihyYyA9PSBBVkVSUk9SX0VPRikKKysgICAgeworKyAgICAgICAgcmV0dXJuIGZh bHNlOworKyAgICB9CisrICAgIGVsc2UgaWYocmMgPCAwKQorICAgICB7CistICAgICAgICB0aHJv dyBsb2dpY19lcnJvcigiRmFpbGVkIHRvIGRlY29kZSB2aWRlbyBmcmFtZTogYnl0ZXNEZWNvZGVk IDwgMCIpOworKyAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkZhaWxlZCB0byBkZWNvZGUgdmlk ZW8gZnJhbWU6IGF2Y29kZWNfc2VuZF9wYWNrZXQoKSA8IDAiKTsKKyAgICAgfQorIAorLSAgICBy ZXR1cm4gZnJhbWVGaW5pc2hlZCA+IDA7CisrICAgIHJjID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1l KG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BGcmFtZSk7CisrICAgIHN3aXRjaChyYykKKysgICAg eworKyAgICAgICAgY2FzZSAwOgorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworKworKyAgICAg ICAgY2FzZSBBVkVSUk9SKEVBR0FJTik6CisrICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKwor KyAgICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigiRmFpbGVk IHRvIGRlY29kZSB2aWRlbyBmcmFtZTogYXZjb2RlY19yZWNlaXZlX2ZyYW1lKCkgPCAwIik7Cisr ICAgIH0KKyB9CisgCisgYm9vbCBNb3ZpZURlY29kZXI6OmdldFZpZGVvUGFja2V0KCkKK0BAIC01 NzAsOCArNTgyLDYgQEAKKyAgICAgYm9vbCBmcmFtZXNBdmFpbGFibGUgPSB0cnVlOworICAgICBi b29sIGZyYW1lRGVjb2RlZCA9IGZhbHNlOworIAorLSAgICBpbnQgYXR0ZW1wdHMgPSAwOworLQor ICAgICBpZiAobV9wUGFja2V0KQorICAgICB7CisgICAgICAgICBhdl9wYWNrZXRfdW5yZWYobV9w UGFja2V0KTsKK0BAIC01ODAsNiArNTkwLDcgQEAKKyAKKyAgICAgbV9wUGFja2V0ID0gbmV3IEFW UGFja2V0KCk7CisgCisrCisgICAgIHdoaWxlIChmcmFtZXNBdmFpbGFibGUgJiYgIWZyYW1lRGVj b2RlZCkKKyAgICAgeworICAgICAgICAgZnJhbWVzQXZhaWxhYmxlID0gYXZfcmVhZF9mcmFtZSht X3BGb3JtYXRDb250ZXh0LCBtX3BQYWNrZXQpID49IDA7CitAQCAtNjQ0LDcgKzY1NSw3IEBACisg CisgaW50MzJfdCBNb3ZpZURlY29kZXI6OmdldFN0cmVhbVJvdGF0aW9uKCkKKyB7CistICAgIGlu dDMyX3QqIG1hdHJpeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KGF2X3N0cmVhbV9nZXRf c2lkZV9kYXRhKG1fcFZpZGVvU3RyZWFtLCBBVl9QS1RfREFUQV9ESVNQTEFZTUFUUklYLCBudWxs cHRyKSk7CisrICAgIGF1dG8gbWF0cml4ID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4oYXZf c3RyZWFtX2dldF9zaWRlX2RhdGEobV9wVmlkZW9TdHJlYW0sIEFWX1BLVF9EQVRBX0RJU1BMQVlN QVRSSVgsIG51bGxwdHIpKTsKKyAgICAgaWYgKG1hdHJpeCkKKyAgICAgeworICAgICAgICAgYXV0 byBhbmdsZSA9IGxyb3VuZChhdl9kaXNwbGF5X3JvdGF0aW9uX2dldChtYXRyaXgpKTsKKworLS0t IGEvbGliZmZtcGVndGh1bWJuYWlsZXIvbW92aWVkZWNvZGVyLmgJMjAxNy0xMS0xMiAwNDoyMzoz OC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmllZGVjb2Rl ci5oCTIwMjMtMDUtMDUgMTM6MjY6MDcuMDk1NTI5OTExIC0wNDAwCitAQCAtNzgsNyArNzgsNyBA QAorICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBtX1ZpZGVvU3RyZWFtOw0KKyAgICAgQVZG b3JtYXRDb250ZXh0KiAgICAgICAgbV9wRm9ybWF0Q29udGV4dDsNCisgICAgIEFWQ29kZWNDb250 ZXh0KiAgICAgICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0Ow0KKy0gICAgQVZDb2RlYyogICAgICAg ICAgICAgICAgbV9wVmlkZW9Db2RlYzsNCisrICAgIGNvbnN0IEFWQ29kZWMqICAgICAgICAgIG1f cFZpZGVvQ29kZWM7DQorICAgICBBVkZpbHRlckdyYXBoKiAgICAgICAgICBtX3BGaWx0ZXJHcmFw aDsNCisgICAgIEFWRmlsdGVyQ29udGV4dCogICAgICAgIG1fcEZpbHRlclNvdXJjZTsNCisgICAg IEFWRmlsdGVyQ29udGV4dCogICAgICAgIG1fcEZpbHRlclNpbms7DQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWls ZXIvdGVtcGxhdGUKaW5kZXggMDM5ZWVhNzYyMmIzOS4uMzVkNTQ2MDE4ZDEyYSAxMDA2NDQKLS0t IGEvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZmbXBl Z3RodW1ibmFpbGVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnZmZtcGVndGh1bWJuYWlsZXInCiBwa2duYW1lPWZmbXBlZ3RodW1ibmFpbGVyCiB2ZXJzaW9u PTIuMi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9ImxpYnBuZy1kZXZlbCBsaWJqcGVn LXR1cmJvLWRldmVsIGZmbXBlZy1kZXZlbCIKQEAgLTksOCArOSw4IEBAIGRlcGVuZHM9ImZmbXBl ZyIKIHNob3J0X2Rlc2M9IkxpZ2h0d2VpZ2h0IHZpZGVvIHRodW1ibmFpbGVyIgogbWFpbnRhaW5l cj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3It bGF0ZXIiCi1ob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2Rpcmt2ZGIvJHtwa2duYW1lfSIK LWRpc3RmaWxlcz0iJHtob21lcGFnZX0vcmVsZWFzZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS8ke3Br Z25hbWV9LSR7dmVyc2lvbn0udGFyLmJ6MiIKK2hvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20v ZGlya3ZkYiIKK2Rpc3RmaWxlcz0iJHtob21lcGFnZX0vJHtwa2duYW1lfS9yZWxlYXNlcy9kb3du bG9hZC8ke3ZlcnNpb259LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIuYnoyIgogY2hlY2tzdW09 MWNiMjQwNTljMzgyMjNmNjU3YjMwMGM4NGRkODA0OTFiNzA0MGQ0YjY5NDcxYzRmZWE2OWJlODYy YmM5OWI1YgogCiBwb3N0X2luc3RhbGwoKSB7CgpGcm9tIDk1Y2ZjNGZmN2YyZGY1MDE1NTQxMzY1 YjRlNjNiY2JkODFiMGM2MzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAK U3ViamVjdDogW1BBVENIIDAzMi8xMTNdIGZmbXBlZ3RodW1iczogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUK aW5kZXggNWYwYjk0MTRkYWRhZi4uMTFiODgxOTM1MjhmNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9m Zm1wZWd0aHVtYnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWd0aHVtYnMnCiBwa2du YW1lPWZmbXBlZ3RodW1icwogdmVyc2lvbj0yMi4xMi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVz IGtjb3JlYWRkb25zIGtjb25maWctZGV2ZWwKICBwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0 NS1xbWFrZSBnZXR0ZXh0IgoKRnJvbSA5NmNiZmQzOTU5NDk0NzhiMDE3ZmU0MjA3MmQzMGY3YTdl MmNmMTJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwMzMvMTEzXSBmZm1zMjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDQyNCArKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBzcmNwa2dzL2ZmbXMyL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAgMiArLQogMiBm aWxlcyBjaGFuZ2VkLCA0MjUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2ZmbXMyL3Bh dGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwLi4xNDc5ZmFiY2FmY2I0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1zMi9wYXRj aGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw0MjQgQEAKK0Zyb20gNDU2NzMxNDllOWEyZjU1 ODY4NTVhZDQ3MmUzMDU5MDg0ZWFhMzZiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorRGF0ZTogVHVl LCA0IE1heSAyMDIxIDE0OjQxOjIxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBhdXRvIGZv ciBBVkNvZGVjCisKK1RoZSBnZW5pdXNlcyBvdmVyIGF0IEZGbXBlZyBkZWNpZGVkIHRvIGNvbnN0 aWZ5IHRoaXMgQVBJLCBzbyBvbGQKK3ZlcnNpb25zIG9mIHRoZSBsaWJyYXJ5IHdpbGwgcmV0dXJu IEFWQ29kZWMgKiwgd2hpbGUgbmV3IHZlcnNpb25zCitvZiB0aGUgbGliYXJ5IHdpbGwgcmV0dXJu IGNvbnN0IEFWQ29kZWMgKiwgd2hpY2gsIGluIEMrKywgYXJlIG5vdAorT0sgdG8gY29udmVydCBi ZXR3ZWVuLgorCitSYXRoZXIgdGhhbiB1c2Ugc29tZSBtYWNybyBoZWxsIGluIGZmbXNjb21wYXQu aCwgd2UgY2FuIHdvcmsgYXJvdW5kCit0aGlzIGJ5IHVzaW5nIGF1dG8uCisKK0dyb3NzLgorCitT aWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNv bT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCB8IDIgKy0KKyBzcmMvY29yZS9pbmRl eGluZy5jcHAgICAgfCA2ICsrKy0tLQorIHNyYy9jb3JlL3ZpZGVvc291cmNlLmNwcCB8IDIgKy0K KyAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlm ZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCBiL3NyYy9jb3JlL2F1ZGlvc291cmNl LmNwcAoraW5kZXggZTRjZTk3Yy4uYWMwOTY2NiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2F1ZGlv c291cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwCitAQCAtNDY5LDcgKzQ2 OSw3IEBAIHZvaWQgRkZNU19BdWRpb1NvdXJjZTo6T3BlbkZpbGUoKSB7CisgCisgICAgIExBVkZP cGVuRmlsZShTb3VyY2VGaWxlLmNfc3RyKCksIEZvcm1hdENvbnRleHQsIFRyYWNrTnVtYmVyKTsK KyAKKy0gICAgQVZDb2RlYyAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250 ZXh0LT5zdHJlYW1zW1RyYWNrTnVtYmVyXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgICAgYXV0 byAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1Ry YWNrTnVtYmVyXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgaWYgKENvZGVjID09IG51bGxw dHIpCisgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBG Rk1TX0VSUk9SX0NPREVDLAorICAgICAgICAgICAgICJBdWRpbyBjb2RlYyBub3QgZm91bmQiKTsK K2RpZmYgLS1naXQgYS9zcmMvY29yZS9pbmRleGluZy5jcHAgYi9zcmMvY29yZS9pbmRleGluZy5j cHAKK2luZGV4IGU1NDdjNWEuLjU5ZmI0ZTggMTAwNjQ0CistLS0gYS9zcmMvY29yZS9pbmRleGlu Zy5jcHAKKysrKyBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAorQEAgLTM4NCw3ICszODQsNyBAQCBG Rk1TX1RyYWNrVHlwZSBGRk1TX0luZGV4ZXI6OkdldFRyYWNrVHlwZShpbnQgVHJhY2spIHsKKyB9 CisgCisgY29uc3QgY2hhciAqRkZNU19JbmRleGVyOjpHZXRUcmFja0NvZGVjKGludCBUcmFjaykg eworLSAgICBBVkNvZGVjICpjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRl eHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICBhdXRvICpjb2Rl YyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5j b2RlY3Bhci0+Y29kZWNfaWQpOworICAgICByZXR1cm4gY29kZWMgPyBjb2RlYy0+bmFtZSA6IG51 bGxwdHI7CisgfQorIAorQEAgLTQwMiw3ICs0MDIsNyBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4 ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgVXNlRFRTKTsKKyAKKyAgICAgICAgIGlm IChJbmRleE1hc2suY291bnQoaSkgJiYgRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNw YXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKSB7CistICAgICAgICAgICAgQVZD b2RlYyAqVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0 cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgICAgICAgICAgYXV0byAqVmlkZW9D b2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNv ZGVjcGFyLT5jb2RlY19pZCk7CisgICAgICAgICAgICAgaWYgKCFWaWRlb0NvZGVjKSB7CisgICAg ICAgICAgICAgICAgIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmRpc2NhcmQgPSBBVkRJU0NB UkRfQUxMOworICAgICAgICAgICAgICAgICBJbmRleE1hc2suZXJhc2UoaSk7CitAQCAtNDMzLDcg KzQzMyw3IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAg ICAgICAgICAgICAgSW5kZXhNYXNrLmluc2VydChpKTsKKyAgICAgICAgICAgICB9CisgICAgICAg ICB9IGVsc2UgaWYgKEluZGV4TWFzay5jb3VudChpKSAmJiBGb3JtYXRDb250ZXh0LT5zdHJlYW1z W2ldLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8pIHsKKy0gICAg ICAgICAgICBBVkNvZGVjICpBdWRpb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0 Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgICAgICAgICAgICBh dXRvICpBdWRpb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3Ry ZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgICAgICAgICBpZiAoQXVkaW9Db2Rl YyA9PSBudWxscHRyKQorICAgICAgICAgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1T X0VSUk9SX0NPREVDLCBGRk1TX0VSUk9SX1VOU1VQUE9SVEVELAorICAgICAgICAgICAgICAgICAg ICAgIkF1ZGlvIGNvZGVjIG5vdCBmb3VuZCIpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3ZpZGVv c291cmNlLmNwcCBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAoraW5kZXggYjg4OTk3MC4uODk1 NmMyMiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAorKysrIGIvc3JjL2Nv cmUvdmlkZW9zb3VyY2UuY3BwCitAQCAtMTcxLDcgKzE3MSw3IEBAIEZGTVNfVmlkZW9Tb3VyY2U6 OkZGTVNfVmlkZW9Tb3VyY2UoY29uc3QgY2hhciAqU291cmNlRmlsZSwgRkZNU19JbmRleCAmSW5k ZXgsIGluCisgCisgICAgICAgICBMQVZGT3BlbkZpbGUoU291cmNlRmlsZSwgRm9ybWF0Q29udGV4 dCwgVmlkZW9UcmFjayk7CisgCistICAgICAgICBBVkNvZGVjICpDb2RlYyA9IGF2Y29kZWNfZmlu ZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVmlkZW9UcmFja10tPmNvZGVjcGFyLT5j b2RlY19pZCk7CisrICAgICAgICBhdXRvICpDb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZv cm1hdENvbnRleHQtPnN0cmVhbXNbVmlkZW9UcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCk7Cisg ICAgICAgICBpZiAoQ29kZWMgPT0gbnVsbHB0cikKKyAgICAgICAgICAgICB0aHJvdyBGRk1TX0V4 Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VSUk9SX0NPREVDLAorICAgICAgICAg ICAgICAgICAiVmlkZW8gY29kZWMgbm90IGZvdW5kIik7CistLSAKKzIuNDAuMAorCitGcm9tIDk2 Y2JmMzhlYTkzODE4MjlhMTMxNGY0MzJhMmM2MDQ5NWRjZWZhYWQgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNv bT4KK0RhdGU6IFR1ZSwgNCBNYXkgMjAyMSAxNDoxMjo0MSArMDEwMAorU3ViamVjdDogW1BBVENI XSBhbGw6IFVwZGF0ZSBBVlBhY2tldCBBUEkgdXNhZ2UKKworQVZQYWNrZXRzIG11c3QgYWxsIGJl IG9uIHRoZSBoZWFwIG5vdywgc2luY2UgaXQgaXMgbm8gbG9uZ2VyCitwYXJ0IG9mIHRoZSBsaWJh diogQUJJLgorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5o dWlzQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCB8IDE2ICsrKysr Ky0tLS0KKyBzcmMvY29yZS9pbmRleGluZy5jcHAgICAgfCA2MyArKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL2NvcmUvaW5kZXhpbmcuaCAgICAgIHwgIDQgKy0t Cisgc3JjL2NvcmUvdXRpbHMuY3BwICAgICAgIHwgIDYgLS0tLQorIHNyYy9jb3JlL3V0aWxzLmgg ICAgICAgICB8ICAxIC0KKyBzcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgfCAzMCArKysrKysrKysr LS0tLS0tLS0tCisgNiBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCA1NiBkZWxldGlv bnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCBiL3NyYy9jb3Jl L2F1ZGlvc291cmNlLmNwcAoraW5kZXggMzdjZjlhZS4uZTRjZTk3YyAxMDA2NDQKKy0tLSBhL3Ny Yy9jb3JlL2F1ZGlvc291cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwCitA QCAtMjg1LDEwICsyODUsMTUgQEAgRkZNU19BdWRpb1NvdXJjZTo6QXVkaW9CbG9jayAqRkZNU19B dWRpb1NvdXJjZTo6Q2FjaGVCbG9jayhDYWNoZUl0ZXJhdG9yICZwb3MpIHsKKyBpbnQgRkZNU19B dWRpb1NvdXJjZTo6RGVjb2RlTmV4dEJsb2NrKENhY2hlSXRlcmF0b3IgKnBvcykgeworICAgICBD dXJyZW50RnJhbWUgPSAmRnJhbWVzW1BhY2tldE51bWJlcl07CisgCistICAgIEFWUGFja2V0IFBh Y2tldDsKKy0gICAgaWYgKCFSZWFkUGFja2V0KCZQYWNrZXQpKQorKyAgICBBVlBhY2tldCAqUGFj a2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghUGFja2V0KQorKyAgICAgICAgdGhy b3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9QQVJTRVIsIEZGTVNfRVJST1JfQUxMT0NBVElP Tl9GQUlMRUQsCisrICAgICAgICAgICAgIkNvdWxkIG5vdCBhbGxvY2F0ZSBwYWNrZXQuIik7Cisr ICAgIGlmICghUmVhZFBhY2tldChQYWNrZXQpKSB7CisrICAgICAgICBhdl9wYWNrZXRfZnJlZSgm UGFja2V0KTsKKyAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfUEFSU0VS LCBGRk1TX0VSUk9SX1VOS05PV04sCisgICAgICAgICAgICAgIlJlYWRQYWNrZXQgdW5leHBlY3Rl ZGx5IGZhaWxlZCB0byByZWFkIGEgcGFja2V0Iik7CisrICAgIH0KKyAKKyAgICAgLy8gUmVhZFBh Y2tldCBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBwYWNrZXQgbnVtYmVyCisgICAgIEN1cnJlbnRGcmFt ZSA9ICZGcmFtZXNbUGFja2V0TnVtYmVyXTsKK0BAIC0yOTcsOCArMzAyLDkgQEAgaW50IEZGTVNf QXVkaW9Tb3VyY2U6OkRlY29kZU5leHRCbG9jayhDYWNoZUl0ZXJhdG9yICpwb3MpIHsKKyAgICAg aW50IE51bWJlck9mU2FtcGxlcyA9IDA7CisgICAgIEF1ZGlvQmxvY2sgKkNhY2hlZEJsb2NrID0g bnVsbHB0cjsKKyAgICAgCistICAgIGludCBSZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KENvZGVj Q29udGV4dCwgJlBhY2tldCk7CistICAgIGF2X3BhY2tldF91bnJlZigmUGFja2V0KTsKKysgICAg aW50IFJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoQ29kZWNDb250ZXh0LCBQYWNrZXQpOworKyAg ICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKysgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7 CisgCisgICAgIGF2X2ZyYW1lX3VucmVmKERlY29kZUZyYW1lKTsKKyAgICAgUmV0ID0gYXZjb2Rl Y19yZWNlaXZlX2ZyYW1lKENvZGVjQ29udGV4dCwgRGVjb2RlRnJhbWUpOworQEAgLTUxMyw4ICs1 MTksNiBAQCB2b2lkIEZGTVNfQXVkaW9Tb3VyY2U6OlNlZWsoKSB7CisgfQorIAorIGJvb2wgRkZN U19BdWRpb1NvdXJjZTo6UmVhZFBhY2tldChBVlBhY2tldCAqUGFja2V0KSB7CistICAgIEluaXRO dWxsUGFja2V0KCpQYWNrZXQpOworLQorICAgICB3aGlsZSAoYXZfcmVhZF9mcmFtZShGb3JtYXRD b250ZXh0LCBQYWNrZXQpID49IDApIHsKKyAgICAgICAgIGlmIChQYWNrZXQtPnN0cmVhbV9pbmRl eCA9PSBUcmFja051bWJlcikgeworICAgICAgICAgICAgIC8vIFJlcXVpcmVkIGJlY2F1c2Ugbm90 IGFsbCBhdWRpbyBwYWNrZXRzLCBlc3BlY2lhbGx5IGluIG9nZywgaGF2ZSBhIHB0cy4gVXNlIHRo ZSBwcmV2aW91cyB2YWxpZCBwYWNrZXQncyBwdHMgaW5zdGVhZC4KK2RpZmYgLS1naXQgYS9zcmMv Y29yZS9pbmRleGluZy5jcHAgYi9zcmMvY29yZS9pbmRleGluZy5jcHAKK2luZGV4IDIzZmI5NWIu LmU1NDdjNWEgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9pbmRleGluZy5jcHAKKysrKyBiL3NyYy9j b3JlL2luZGV4aW5nLmNwcAorQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIEZGTVNfSW5kZXhlcjo6 Q2hlY2tBdWRpb1Byb3BlcnRpZXMoaW50IFRyYWNrLCBBVkNvZGVjQ29udGV4dCAqQ29udGV4dCkg eworICAgICB9CisgfQorIAorLXZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNo YXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0LCBpbnQgKlJlcGVhdFBp Y3QsCisrdm9pZCBGRk1TX0luZGV4ZXI6OlBhcnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZDb250ZXh0 ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICpwa3QsIGludCAqUmVwZWF0UGljdCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKkZyYW1lVHlwZSwgYm9vbCAqSW52aXNp YmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBpY1N0cnVjdCkgeworICAgICBpZiAo VmlkZW9Db250ZXh0LlBhcnNlcikgeworICAgICAgICAgdWludDhfdCAqT0I7CitAQCAtMzMwLDgg KzMzMCw4IEBAIHZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29u dGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0CisgICAgICAgICBhdl9wYXJzZXJfcGFy c2UyKFZpZGVvQ29udGV4dC5QYXJzZXIsCisgICAgICAgICAgICAgVmlkZW9Db250ZXh0LkNvZGVj Q29udGV4dCwKKyAgICAgICAgICAgICAmT0IsICZPQlNpemUsCistICAgICAgICAgICAgcGt0LmRh dGEsIHBrdC5zaXplLAorLSAgICAgICAgICAgIHBrdC5wdHMsIHBrdC5kdHMsIHBrdC5wb3MpOwor KyAgICAgICAgICAgIHBrdC0+ZGF0YSwgcGt0LT5zaXplLAorKyAgICAgICAgICAgIHBrdC0+cHRz LCBwa3QtPmR0cywgcGt0LT5wb3MpOworIAorICAgICAgICAgLy8gSC4yNjQgKFBBRkYpIGFuZCBI RVZDIG1heSBoYXZlIG9uZSBmaWVsZCBwZXIgcGFja2V0LCBzbyB3ZSBuZWVkIHRvIHRyYWNrCisg ICAgICAgICAvLyB3aGVuIHdlIGhhdmUgYSBmdWxsIG9yIGhhbGYgZnJhbWUgYXZhaWxhYmxlLCBh bmQgbWFyayBvbmUgb2YgdGhlbSBhcworQEAgLTM1MSwxNSArMzUxLDE1IEBAIHZvaWQgRkZNU19J bmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBB VlBhY2tldCAmcGt0CisgCisgICAgICAgICAqUmVwZWF0UGljdCA9IFZpZGVvQ29udGV4dC5QYXJz ZXItPnJlcGVhdF9waWN0OworICAgICAgICAgKkZyYW1lVHlwZSA9IFZpZGVvQ29udGV4dC5QYXJz ZXItPnBpY3RfdHlwZTsKKy0gICAgICAgICpJbnZpc2libGUgPSAoSW5jb21wbGV0ZUZyYW1lIHx8 IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0IDwgMCB8fCAocGt0LmZsYWdzICYgQVZf UEtUX0ZMQUdfRElTQ0FSRCkpOworKyAgICAgICAgKkludmlzaWJsZSA9IChJbmNvbXBsZXRlRnJh bWUgfHwgVmlkZW9Db250ZXh0LlBhcnNlci0+cmVwZWF0X3BpY3QgPCAwIHx8IChwa3QtPmZsYWdz ICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpOworICAgICB9IGVsc2UgeworLSAgICAgICAgKkludmlz aWJsZSA9ICEhKHBrdC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpOworKyAgICAgICAgKklu dmlzaWJsZSA9ICEhKHBrdC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKyAgICAgfQor IAorICAgICBpZiAoVmlkZW9Db250ZXh0LkNvZGVjQ29udGV4dC0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfVlA4KQorLSAgICAgICAgUGFyc2VWUDgocGt0LmRhdGFbMF0sIEludmlzaWJsZSwgRnJh bWVUeXBlKTsKKysgICAgICAgIFBhcnNlVlA4KHBrdC0+ZGF0YVswXSwgSW52aXNpYmxlLCBGcmFt ZVR5cGUpOworICAgICBlbHNlIGlmIChWaWRlb0NvbnRleHQuQ29kZWNDb250ZXh0LT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9WUDkpCistICAgICAgICBQYXJzZVZQOShwa3QuZGF0YVswXSwgSW52 aXNpYmxlLCBGcmFtZVR5cGUpOworKyAgICAgICAgUGFyc2VWUDkocGt0LT5kYXRhWzBdLCBJbnZp c2libGUsIEZyYW1lVHlwZSk7CisgfQorIAorIHZvaWQgRkZNU19JbmRleGVyOjpGcmVlKCkgewor QEAgLTQ1OCwzMiArNDU4LDM2IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGlu ZygpIHsKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBBVlBhY2tldCBQYWNrZXQ7CistICAg IEluaXROdWxsUGFja2V0KFBhY2tldCk7CisrICAgIEFWUGFja2V0ICpQYWNrZXQgPSBhdl9wYWNr ZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQYWNrZXQpCisrICAgICAgICB0aHJvdyBGRk1TX0V4Y2Vw dGlvbihGRk1TX0VSUk9SX0NPREVDLCBGRk1TX0VSUk9SX0FMTE9DQVRJT05fRkFJTEVELAorKyAg ICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0LiIpOworICAgICBzdGQ6OnZlY3Rv cjxpbnQ2NF90PiBMYXN0VmFsaWRUUyhGb3JtYXRDb250ZXh0LT5uYl9zdHJlYW1zLCBBVl9OT1BU U19WQUxVRSk7CisgCisgICAgIGludDY0X3QgZmlsZXNpemUgPSBhdmlvX3NpemUoRm9ybWF0Q29u dGV4dC0+cGIpOworICAgICBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSBMYXN0UGljU3RydWN0ID0g QVZfUElDVFVSRV9TVFJVQ1RVUkVfVU5LTk9XTjsKKy0gICAgd2hpbGUgKGF2X3JlYWRfZnJhbWUo Rm9ybWF0Q29udGV4dCwgJlBhY2tldCkgPj0gMCkgeworKyAgICB3aGlsZSAoYXZfcmVhZF9mcmFt ZShGb3JtYXRDb250ZXh0LCBQYWNrZXQpID49IDApIHsKKyAgICAgICAgIC8vIFVwZGF0ZSBwcm9n cmVzcworICAgICAgICAgLy8gRm9ybWF0Q29udGV4dC0+cGIgY2FuIGFwcGFyZW50bHkgYmUgTlVM TCB3aGVuIG9wZW5pbmcgaW1hZ2VzLgorICAgICAgICAgaWYgKElDICYmIEZvcm1hdENvbnRleHQt PnBiKSB7CistICAgICAgICAgICAgaWYgKCgqSUMpKEZvcm1hdENvbnRleHQtPnBiLT5wb3MsIGZp bGVzaXplLCBJQ1ByaXZhdGUpKQorKyAgICAgICAgICAgIGlmICgoKklDKShGb3JtYXRDb250ZXh0 LT5wYi0+cG9zLCBmaWxlc2l6ZSwgSUNQcml2YXRlKSkgeworKyAgICAgICAgICAgICAgICBhdl9w YWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRp b24oRkZNU19FUlJPUl9DQU5DRUxMRUQsIEZGTVNfRVJST1JfVVNFUiwKKyAgICAgICAgICAgICAg ICAgICAgICJDYW5jZWxsZWQgYnkgdXNlciIpOworKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0K Ky0gICAgICAgIGlmICghSW5kZXhNYXNrLmNvdW50KFBhY2tldC5zdHJlYW1faW5kZXgpKSB7Cist ICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAgICAgICAgaWYgKCFJbmRl eE1hc2suY291bnQoUGFja2V0LT5zdHJlYW1faW5kZXgpKSB7CisrICAgICAgICAgICAgYXZfcGFj a2V0X3VucmVmKFBhY2tldCk7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9Cisg CistICAgICAgICBpbnQgVHJhY2sgPSBQYWNrZXQuc3RyZWFtX2luZGV4OworKyAgICAgICAgaW50 IFRyYWNrID0gUGFja2V0LT5zdHJlYW1faW5kZXg7CisgICAgICAgICBGRk1TX1RyYWNrICZUcmFj a0luZm8gPSAoKlRyYWNrSW5kaWNlcylbVHJhY2tdOworLSAgICAgICAgYm9vbCBLZXlGcmFtZSA9 ICEhKFBhY2tldC5mbGFncyAmIEFWX1BLVF9GTEFHX0tFWSk7CisrICAgICAgICBib29sIEtleUZy YW1lID0gISEoUGFja2V0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0tFWSk7CisgICAgICAgICBSZWFk VFMoUGFja2V0LCBMYXN0VmFsaWRUU1tUcmFja10sICgqVHJhY2tJbmRpY2VzKVtUcmFja10uVXNl RFRTKTsKKyAKKyAgICAgICAgIGlmIChGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29k ZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKSB7CistICAgICAgICAgICAg aW50NjRfdCBQVFMgPSBUcmFja0luZm8uVXNlRFRTID8gUGFja2V0LmR0cyA6IFBhY2tldC5wdHM7 CisrICAgICAgICAgICAgaW50NjRfdCBQVFMgPSBUcmFja0luZm8uVXNlRFRTID8gUGFja2V0LT5k dHMgOiBQYWNrZXQtPnB0czsKKyAgICAgICAgICAgICBpZiAoUFRTID09IEFWX05PUFRTX1ZBTFVF KSB7CisgICAgICAgICAgICAgICAgIC8vIFZQeCBhbHQtcmVmcyBhcmUgb3V0cHV0IGFzIHBhY2tl dHMgd2hpY2ggbGFjayB0aW1lc3RtcHMgb3IgZHVyYXRpb25zLCBzaW5jZQorICAgICAgICAgICAg ICAgICAvLyB0aGV5IGFyZSBpbnZpc2libGUuIEN1cnJlbnRseSwgdGhlIHRpbWVzdGFtcCBtYW5n bGluZyBjb2RlIGluIGxpYmF2Zm9ybWF0CitAQCAtNDk1LDkgKzQ5OSwxMSBAQCBGRk1TX0luZGV4 ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgICAgIC8vIEZGTVMy IGN1cnJlbnRseSBzb3J0cyBwYWNrZXRzIGJ5IFBUUywgd2hpY2ggd2lsbCBicmVhayBkZWNvZGlu Zywgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgICBib29sIEhhc0FsdFJlZnMgPSAoRm9ybWF0 Q29udGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9WUDggfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdENvbnRl eHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5 KTsKKy0gICAgICAgICAgICAgICAgaWYgKFBhY2tldC5kdXJhdGlvbiA9PSAwICYmICFIYXNBbHRS ZWZzKQorKyAgICAgICAgICAgICAgICBpZiAoUGFja2V0LT5kdXJhdGlvbiA9PSAwICYmICFIYXNB bHRSZWZzKSB7CisrICAgICAgICAgICAgICAgICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsK KyAgICAgICAgICAgICAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfSU5E RVhJTkcsIEZGTVNfRVJST1JfUEFSU0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZh bGlkIHBhY2tldCBwdHMsIGR0cywgYW5kIGR1cmF0aW9uIik7CisrICAgICAgICAgICAgICAgIH0K KyAKKyAgICAgICAgICAgICAgICAgaWYgKFRyYWNrSW5mby5lbXB0eSgpKQorICAgICAgICAgICAg ICAgICAgICAgUFRTID0gMDsKK0BAIC01MTMsNyArNTE5LDcgQEAgRkZNU19JbmRleCAqRkZNU19J bmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgIFBhcnNlVmlkZW9QYWNrZXQoQVZD b250ZXh0c1tUcmFja10sIFBhY2tldCwgJlJlcGVhdFBpY3QsICZGcmFtZVR5cGUsICZJbnZpc2li bGUsICZMYXN0UGljU3RydWN0KTsKKyAKKyAgICAgICAgICAgICBUcmFja0luZm8uQWRkVmlkZW9G cmFtZShQVFMsIFJlcGVhdFBpY3QsIEtleUZyYW1lLAorLSAgICAgICAgICAgICAgICBGcmFtZVR5 cGUsIFBhY2tldC5wb3MsIEludmlzaWJsZSk7CisrICAgICAgICAgICAgICAgIEZyYW1lVHlwZSwg UGFja2V0LT5wb3MsIEludmlzaWJsZSk7CisgICAgICAgICB9IGVsc2UgaWYgKEZvcm1hdENvbnRl eHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVf QVVESU8pIHsKKyAgICAgICAgICAgICAvLyBGb3IgdmlkZW8gc2Vla2luZyB0aW1lc3RhbXBzIGFy ZSB1c2VkIG9ubHkgaWYgYWxsIHBhY2tldHMgaGF2ZQorICAgICAgICAgICAgIC8vIHRpbWVzdGFt cHMsIHdoaWxlIGZvciBhdWRpbyB0aGV5J3JlIHVzZWQgaWYgYW55IGhhdmUgdGltZXN0YW1wcywK K0BAIC01MjIsMjggKzUyOCwyOSBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhp bmcoKSB7CisgICAgICAgICAgICAgICAgIFRyYWNrSW5mby5IYXNUUyA9IHRydWU7CisgCisgICAg ICAgICAgICAgaW50NjRfdCBTdGFydFNhbXBsZSA9IEFWQ29udGV4dHNbVHJhY2tdLkN1cnJlbnRT YW1wbGU7CistICAgICAgICAgICAgdWludDMyX3QgU2FtcGxlQ291bnQgPSBJbmRleEF1ZGlvUGFj a2V0KFRyYWNrLCAmUGFja2V0LCBBVkNvbnRleHRzW1RyYWNrXSwgKlRyYWNrSW5kaWNlcyk7Cisr ICAgICAgICAgICAgdWludDMyX3QgU2FtcGxlQ291bnQgPSBJbmRleEF1ZGlvUGFja2V0KFRyYWNr LCBQYWNrZXQsIEFWQ29udGV4dHNbVHJhY2tdLCAqVHJhY2tJbmRpY2VzKTsKKyAgICAgICAgICAg ICBUcmFja0luZm8uU2FtcGxlUmF0ZSA9IEFWQ29udGV4dHNbVHJhY2tdLkNvZGVjQ29udGV4dC0+ c2FtcGxlX3JhdGU7CisgCisgICAgICAgICAgICAgVHJhY2tJbmZvLkFkZEF1ZGlvRnJhbWUoTGFz dFZhbGlkVFNbVHJhY2tdLAorLSAgICAgICAgICAgICAgICBTdGFydFNhbXBsZSwgU2FtcGxlQ291 bnQsIEtleUZyYW1lLCBQYWNrZXQucG9zLCBQYWNrZXQuZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVND QVJEKTsKKysgICAgICAgICAgICAgICAgU3RhcnRTYW1wbGUsIFNhbXBsZUNvdW50LCBLZXlGcmFt ZSwgUGFja2V0LT5wb3MsIFBhY2tldC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKyAg ICAgICAgIH0KKyAKKy0gICAgICAgIGlmICghKFBhY2tldC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJ U0NBUkQpKQorLSAgICAgICAgICAgIFRyYWNrSW5mby5MYXN0RHVyYXRpb24gPSBQYWNrZXQuZHVy YXRpb247CisrICAgICAgICBpZiAoIShQYWNrZXQtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FS RCkpCisrICAgICAgICAgICAgVHJhY2tJbmZvLkxhc3REdXJhdGlvbiA9IFBhY2tldC0+ZHVyYXRp b247CisgCistICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CisrICAgICAgICBhdl9w YWNrZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgfQorKyAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0 KTsKKyAKKyAgICAgVHJhY2tJbmRpY2VzLT5GaW5hbGl6ZShBVkNvbnRleHRzLCBGb3JtYXRDb250 ZXh0LT5pZm9ybWF0LT5uYW1lKTsKKyAgICAgcmV0dXJuIFRyYWNrSW5kaWNlcy5yZWxlYXNlKCk7 CisgfQorIAorLXZvaWQgRkZNU19JbmRleGVyOjpSZWFkVFMoY29uc3QgQVZQYWNrZXQgJlBhY2tl dCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUykgeworLSAgICBpZiAoIVVzZURUUyAmJiBQYWNr ZXQucHRzICE9IEFWX05PUFRTX1ZBTFVFKQorLSAgICAgICAgVFMgPSBQYWNrZXQucHRzOworK3Zv aWQgRkZNU19JbmRleGVyOjpSZWFkVFMoY29uc3QgQVZQYWNrZXQgKlBhY2tldCwgaW50NjRfdCAm VFMsIGJvb2wgJlVzZURUUykgeworKyAgICBpZiAoIVVzZURUUyAmJiBQYWNrZXQtPnB0cyAhPSBB Vl9OT1BUU19WQUxVRSkKKysgICAgICAgIFRTID0gUGFja2V0LT5wdHM7CisgICAgIGlmIChUUyA9 PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICAgIFVzZURUUyA9IHRydWU7CistICAgIGlmIChVc2VE VFMgJiYgUGFja2V0LmR0cyAhPSBBVl9OT1BUU19WQUxVRSkKKy0gICAgICAgIFRTID0gUGFja2V0 LmR0czsKKysgICAgaWYgKFVzZURUUyAmJiBQYWNrZXQtPmR0cyAhPSBBVl9OT1BUU19WQUxVRSkK KysgICAgICAgIFRTID0gUGFja2V0LT5kdHM7CisgfQorZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2lu ZGV4aW5nLmggYi9zcmMvY29yZS9pbmRleGluZy5oCitpbmRleCAzY2ZjM2MzLi41YzA2ODY4IDEw MDY0NAorLS0tIGEvc3JjL2NvcmUvaW5kZXhpbmcuaAorKysrIGIvc3JjL2NvcmUvaW5kZXhpbmcu aAorQEAgLTgwLDEwICs4MCwxMCBAQCBwcml2YXRlOgorICAgICBpbnQ2NF90IEZpbGVzaXplOwor ICAgICB1aW50OF90IERpZ2VzdFsyMF07CisgCistICAgIHZvaWQgUmVhZFRTKGNvbnN0IEFWUGFj a2V0ICZQYWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMpOworKyAgICB2b2lkIFJlYWRU Uyhjb25zdCBBVlBhY2tldCAqUGFja2V0LCBpbnQ2NF90ICZUUywgYm9vbCAmVXNlRFRTKTsKKyAg ICAgdm9pZCBDaGVja0F1ZGlvUHJvcGVydGllcyhpbnQgVHJhY2ssIEFWQ29kZWNDb250ZXh0ICpD b250ZXh0KTsKKyAgICAgdWludDMyX3QgSW5kZXhBdWRpb1BhY2tldChpbnQgVHJhY2ssIEFWUGFj a2V0ICpQYWNrZXQsIFNoYXJlZEFWQ29udGV4dCAmQ29udGV4dCwgRkZNU19JbmRleCAmVHJhY2tJ bmRpY2VzKTsKKy0gICAgdm9pZCBQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlk ZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0LCBpbnQgKlJlcGVhdFBpY3QsIGludCAqRnJhbWVUeXBl LCBib29sICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3RydWN0dXJlICpMYXN0UGljU3RydWN0 KTsKKysgICAgdm9pZCBQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250 ZXh0LCBBVlBhY2tldCAqcGt0LCBpbnQgKlJlcGVhdFBpY3QsIGludCAqRnJhbWVUeXBlLCBib29s ICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3RydWN0dXJlICpMYXN0UGljU3RydWN0KTsKKyAg ICAgdm9pZCBGcmVlKCk7CisgcHVibGljOgorICAgICBGRk1TX0luZGV4ZXIoY29uc3QgY2hhciAq RmlsZW5hbWUpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3V0aWxzLmNwcCBiL3NyYy9jb3JlL3V0 aWxzLmNwcAoraW5kZXggY2U2NzUzMy4uOGEyZTk5NyAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3V0 aWxzLmNwcAorKysrIGIvc3JjL2NvcmUvdXRpbHMuY3BwCitAQCAtNjIsMTIgKzYyLDYgQEAgdm9p ZCBDbGVhckVycm9ySW5mbyhGRk1TX0Vycm9ySW5mbyAqRXJyb3JJbmZvKSB7CisgICAgIH0KKyB9 CisgCistdm9pZCBJbml0TnVsbFBhY2tldChBVlBhY2tldCAmcGt0KSB7CistICAgIGF2X2luaXRf cGFja2V0KCZwa3QpOworLSAgICBwa3QuZGF0YSA9IG51bGxwdHI7CistICAgIHBrdC5zaXplID0g MDsKKy19CistCisgdm9pZCBGaWxsQVAoRkZNU19BdWRpb1Byb3BlcnRpZXMgJkFQLCBBVkNvZGVj Q29udGV4dCAqQ1RYLCBGRk1TX1RyYWNrICZGcmFtZXMpIHsKKyAgICAgQVAuU2FtcGxlRm9ybWF0 ID0gc3RhdGljX2Nhc3Q8RkZNU19TYW1wbGVGb3JtYXQ+KGF2X2dldF9wYWNrZWRfc2FtcGxlX2Zt dChDVFgtPnNhbXBsZV9mbXQpKTsKKyAgICAgQVAuQml0c1BlclNhbXBsZSA9IGF2X2dldF9ieXRl c19wZXJfc2FtcGxlKENUWC0+c2FtcGxlX2ZtdCkgKiA4OworZGlmZiAtLWdpdCBhL3NyYy9jb3Jl L3V0aWxzLmggYi9zcmMvY29yZS91dGlscy5oCitpbmRleCA5ODE5ZGM3Li4wMDNhYjc5IDEwMDY0 NAorLS0tIGEvc3JjL2NvcmUvdXRpbHMuaAorKysrIGIvc3JjL2NvcmUvdXRpbHMuaAorQEAgLTU4 LDcgKzU4LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1ha2VfdW5pcXVlKEFyZ3MmJi4uLiBhcmdz KSB7CisgfQorIAorIHZvaWQgQ2xlYXJFcnJvckluZm8oRkZNU19FcnJvckluZm8gKkVycm9ySW5m byk7Cistdm9pZCBJbml0TnVsbFBhY2tldChBVlBhY2tldCAmcGt0KTsKKyB2b2lkIEZpbGxBUChG Rk1TX0F1ZGlvUHJvcGVydGllcyAmQVAsIEFWQ29kZWNDb250ZXh0ICpDVFgsIEZGTVNfVHJhY2sg JkZyYW1lcyk7CisgCisgdm9pZCBMQVZGT3BlbkZpbGUoY29uc3QgY2hhciAqU291cmNlRmlsZSwg QVZGb3JtYXRDb250ZXh0IComRm9ybWF0Q29udGV4dCwgaW50IFRyYWNrKTsKK2RpZmYgLS1naXQg YS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKK2lu ZGV4IDA2YmQxNjEuLmI4ODk5NzAgMTAwNjQ0CistLS0gYS9zcmMvY29yZS92aWRlb3NvdXJjZS5j cHAKKysrKyBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAorQEAgLTY3MywzMCArNjczLDM0IEBA IHZvaWQgRkZNU19WaWRlb1NvdXJjZTo6RGVjb2RlTmV4dEZyYW1lKGludDY0X3QgJkFTdGFydFRp bWUsIGludDY0X3QgJlBvcykgeworICAgICBpZiAoSGFzUGVuZGluZ0RlbGF5ZWRGcmFtZXMoKSkK KyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgQVZQYWNrZXQgUGFja2V0OworLSAgICBJbml0TnVs bFBhY2tldChQYWNrZXQpOworLQorLSAgICB3aGlsZSAoUmVhZEZyYW1lKCZQYWNrZXQpID49IDAp IHsKKy0gICAgICAgIGlmIChQYWNrZXQuc3RyZWFtX2luZGV4ICE9IFZpZGVvVHJhY2spIHsKKy0g ICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CisrICAgIEFWUGFja2V0ICpQYWNr ZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQYWNrZXQpCisrICAgICAgICB0aHJv dyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VSUk9SX0FMTE9DQVRJ T05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0LiIpOwor KworKyAgICB3aGlsZSAoUmVhZEZyYW1lKFBhY2tldCkgPj0gMCkgeworKyAgICAgICAgaWYgKFBh Y2tldC0+c3RyZWFtX2luZGV4ICE9IFZpZGVvVHJhY2spIHsKKysgICAgICAgICAgICBhdl9wYWNr ZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKyAK KyAgICAgICAgIGlmIChBU3RhcnRUaW1lIDwgMCkKKy0gICAgICAgICAgICBBU3RhcnRUaW1lID0g RnJhbWVzLlVzZURUUyA/IFBhY2tldC5kdHMgOiBQYWNrZXQucHRzOworKyAgICAgICAgICAgIEFT dGFydFRpbWUgPSBGcmFtZXMuVXNlRFRTID8gUGFja2V0LT5kdHMgOiBQYWNrZXQtPnB0czsKKyAK KyAgICAgICAgIGlmIChQb3MgPCAwKQorLSAgICAgICAgICAgIFBvcyA9IFBhY2tldC5wb3M7Cisr ICAgICAgICAgICAgUG9zID0gUGFja2V0LT5wb3M7CisgCistICAgICAgICBib29sIEZyYW1lRmlu aXNoZWQgPSBEZWNvZGVQYWNrZXQoJlBhY2tldCk7CistICAgICAgICBhdl9wYWNrZXRfdW5yZWYo JlBhY2tldCk7CistICAgICAgICBpZiAoRnJhbWVGaW5pc2hlZCkKKysgICAgICAgIGJvb2wgRnJh bWVGaW5pc2hlZCA9IERlY29kZVBhY2tldChQYWNrZXQpOworKyAgICAgICAgYXZfcGFja2V0X3Vu cmVmKFBhY2tldCk7CisrICAgICAgICBpZiAoRnJhbWVGaW5pc2hlZCkgeworKyAgICAgICAgICAg IGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAg IH0KKyAgICAgfQorIAorICAgICAvLyBGbHVzaCBmaW5hbCBmcmFtZXMKKy0gICAgSW5pdE51bGxQ YWNrZXQoUGFja2V0KTsKKy0gICAgRGVjb2RlUGFja2V0KCZQYWNrZXQpOworKyAgICBEZWNvZGVQ YWNrZXQoUGFja2V0KTsKKysgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgfQorIAorIGJv b2wgRkZNU19WaWRlb1NvdXJjZTo6U2Vla1RvKGludCBuLCBpbnQgU2Vla09mZnNldCkgeworLS0g CisyLjQwLjAKKworRnJvbSBiZjllMDNlOWUwODUzNGMwMjRlNWE3NDRhNjQzN2M0YWFjMTYwMjAx IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsu YnVpdGVuaHVpc0BnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQgTWF5IDIwMjEgMTQ6MjA6NDcgKzAx MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIGNvbmZpZ3VyZTogUmVtb3ZlIGRlcHJlY2F0ZWQgQVBJ IHVzZQorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlz QGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1 cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGIzNWVmODBiYy4uZDE5NzE0ZDBmIDEwMDY0NAor LS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMDIsMTAgKzEwMiwx MCBAQCBDRkxBR1M9IiRfQ0ZMQUdTICRGRk1QRUdfQ0ZMQUdTIgorCisgQUNfREVGVU4oW1RFU1Rf RkZNUEVHXSwKKyAgICAgICAgICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwor LSAgICAgICAgICAgICNpbmNsdWRlIDxsaWJhdmNvZGVjL2F2Y29kZWMuaD4KKysgICAgICAgICAg ICAjaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KKyAgICAgICAgICAgICAjaW5jbHVk ZSA8bGlic3dzY2FsZS9zd3NjYWxlLmg+CisgICAgICAgICAgICAgXV0sW1sKKy0gICAgICAgICAg ICAgICAgYXZjb2RlY19yZWdpc3Rlcl9hbGwoKTsKKysgICAgICAgICAgICAgICAgYXZmb3JtYXRf bmV0d29ya19pbml0KCk7CisgICAgICAgICAgICAgICAgIHN3c2NhbGVfdmVyc2lvbigpOworICAg ICAgICAgICAgIF1dKV0sIFtldmFsICQxPXllc10sIFtldmFsICQxPW5vXSkKKyAgICAgICAgIF0p CisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXMyL3Rl bXBsYXRlCmluZGV4IDY4ZThhMGMxNGJjZTMuLjJhY2ZhZGFjNDRiMzQgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvZmZtczIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mZm1zMi90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZmbXMyJwogcGtnbmFtZT1mZm1zMgogdmVy c2lvbj0yLjQwCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmln dXJlCiBjb25maWd1cmVfYXJncz0iLS1lbmFibGUtc2hhcmVkIC0tZGlzYWJsZS1zdGF0aWMiCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgYXV0b2NvbmYgYXV0b21ha2UgbGlidG9vbCIKCkZy b20gZTg3NDA0MWYzZjMzNTRlNmQyZWM0Y2QzYjMzNWFkYmFlOWEwMjIzNiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM0LzExM10gZnJlZXJk cDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vZnJlZXJkcC9wYXRjaGVzL2ZmbXBl ZzZfYWEyY2I5YWEucGF0Y2ggICAgfCA0MiArKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2Zy ZWVyZHAvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFu Z2VkLCA0MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRjaAoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2ggYi9zcmNw a2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmE0MzI0ZGEzYTg4MjIKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoCkBAIC0w LDAgKzEsNDIgQEAKK0Zyb20gYWEyY2I5YWE1ZmY1NTYyNDMzNTk4YmExNjhhNDY2ZTA3NTJiY2Ew ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGFrYWxsYWJldGggPGFrYWxsYWJldGhA cG9zdGVvLm5ldD4KK0RhdGU6IFR1ZSwgMTQgRmViIDIwMjMgMDc6NDg6NTQgKzAxMDAKK1N1Ympl Y3Q6IFtQQVRDSF0gRml4ZWQgIzg2ODY6IFVwZGF0ZSBoMjY0IHRvIHVzZSBuZXcgRkZNUEVHIEFQ SQorCistLS0KKyBjaGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYyB8IDIg KysKKyBsaWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMgICAgICAgICAgICB8IDIgKysKKyAy IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMv dHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMgYi9jaGFubmVscy90c21mL2NsaWVudC9m Zm1wZWcvdHNtZl9mZm1wZWcuYworaW5kZXggMzM5NDYyZDg2NWYuLmJlZWE4MGI3YTFlIDEwMDY0 NAorLS0tIGEvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMKKysrKyBi L2NoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jCitAQCAtMjM5LDggKzIz OSwxMCBAQCBzdGF0aWMgQk9PTCB0c21mX2ZmbXBlZ19pbml0X3N0cmVhbShJVFNNRkRlY29kZXIq IGRlY29kZXIsIGNvbnN0IFRTX0FNX01FRElBX1RZUAorIAkJfQorIAl9CisgCisrI2lmIExJQkFW Q09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCg1OSwgMTgsIDEwMCkKKyAJaWYgKG1k ZWNvZGVyLT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKyAJ CW1kZWNvZGVyLT5jb2RlY19jb250ZXh0LT5mbGFncyB8PSBBVl9DT0RFQ19GTEFHX1RSVU5DQVRF RDsKKysjZW5kaWYKKyAKKyAJcmV0dXJuIFRSVUU7CisgfQorZGlmZiAtLWdpdCBhL2xpYmZyZWVy ZHAvY29kZWMvaDI2NF9mZm1wZWcuYyBiL2xpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYwor aW5kZXggOGEyM2RiMjQ3M2MuLjg5NmEzMzMwMTliIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9j b2RlYy9oMjY0X2ZmbXBlZy5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMK K0BAIC02MTUsMTAgKzYxNSwxMiBAQCBzdGF0aWMgQk9PTCBsaWJhdmNvZGVjX2luaXQoSDI2NF9D T05URVhUKiBoMjY0KQorIAkJCWdvdG8gRVhDRVBUSU9OOworIAkJfQorIAorKyNpZiBMSUJBVkNP REVDX1ZFUlNJT05fSU5UIDwgQVZfVkVSU0lPTl9JTlQoNTksIDE4LCAxMDApCisgCQlpZiAoc3lz LT5jb2RlY0RlY29kZXItPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9UUlVOQ0FURUQpCisg CQl7CisgCQkJc3lzLT5jb2RlY0RlY29kZXJDb250ZXh0LT5mbGFncyB8PSBBVl9DT0RFQ19GTEFH X1RSVU5DQVRFRDsKKyAJCX0KKysjZW5kaWYKKyAKKyAjaWZkZWYgV0lUSF9WQUFQSQorIApkaWZm IC0tZ2l0IGEvc3JjcGtncy9mcmVlcmRwL3RlbXBsYXRlIGIvc3JjcGtncy9mcmVlcmRwL3RlbXBs YXRlCmluZGV4IDI1ZThhYTk2NzdmMGIuLjRkNTFjODE4OTkwMmEgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZnJlZXJkcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZyZWVyZHAvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmcmVlcmRwJwogcGtnbmFtZT1mcmVlcmRw CiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21h a2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfQUxTQT1PTiAtRFdJVEhfQ1VQUz1PRkYgLURXSVRI X0ZGTVBFRz1PTgogIC1EV0lUSF9HU1RSRUFNRVJfMF8xMD1PRkYgLURXSVRIX0dTVFJFQU1FUl8x XzA9T0ZGIC1EV0lUSF9KUEVHPU9OCgpGcm9tIDhjODhhODllYzkzMWI2ZWE3NDJkN2ZhZGEzMzc0 NmQxZjRlMjk5MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVj dDogW1BBVENIIDAzNS8xMTNdIGdlcmJlcmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nZXJiZXJhL3RlbXBs YXRlIGIvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCmluZGV4IGFlMTRmMzVjNzY3YzAuLjJkYzBh YzBjZTAzYjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2dlcmJlcmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdnZXJiZXJhJwogcGtnbmFtZT1nZXJiZXJhCiB2ZXJzaW9uPTEuMTIuMQotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfU1lT VEVNRD0wIC1EV0lUSF9BVkNPREVDPTEiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpG cm9tIDIyOGZlMWU2YTE1MTJmZGM2OTRiZWQzM2RlM2Y2YThkOTBlMTc3N2EgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNi8xMTNdIGdvbGRl bmRpY3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nb2xkZW5kaWN0L3Bh dGNoZXMvZmZtcGVnNS5wYXRjaCB8IDIzMiArKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtn cy9nb2xkZW5kaWN0L3RlbXBsYXRlICAgICAgICAgICAgICB8ICAgNCArLQogMiBmaWxlcyBjaGFu Z2VkLCAyMzQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvZ29sZGVu ZGljdC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMC4uN2NmYzk4YWRhMzY4YQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZ29s ZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwyMzIgQEAKK0Zyb20gMDNi YmUwMWI3OWExZjA3YTY3ODBjYjYwZjIzYTA4NzEwNGM1ZDc3YiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKK0Zyb206IEFiczYyIDxvdHRvbWFubkB5YW5kZXgucnU+CitEYXRlOiBGcmksIDMwIE1h ciAyMDE4IDIyOjUzOjI0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCB3YXJuaW5ncyB3aGls ZSBjb21waWxlIHdpdGggRkZNcGVnIDMuNC4yIChpc3N1ZSAjOTc4KQorCistLS0KKyBmZm1wZWdh dWRpby5jYyB8IDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0p CisKK2RpZmYgLS1naXQgYS9mZm1wZWdhdWRpby5jYyBiL2ZmbXBlZ2F1ZGlvLmNjCitpbmRleCBl ZDExNzJiZGQuLjU2ZThmNzg4ZSAxMDA2NDQKKy0tLSBhL2ZmbXBlZ2F1ZGlvLmNjCisrKysgYi9m Zm1wZWdhdWRpby5jYworQEAgLTkxLDYgKzkxLDcgQEAgc3RydWN0IERlY29kZXJDb250ZXh0Cisg ICBRQnl0ZUFycmF5IGF1ZGlvRGF0YV87CisgICBRRGF0YVN0cmVhbSBhdWRpb0RhdGFTdHJlYW1f OworICAgQVZGb3JtYXRDb250ZXh0ICogZm9ybWF0Q29udGV4dF87CisrICBBVkNvZGVjICogY29k ZWNfOworICAgQVZDb2RlY0NvbnRleHQgKiBjb2RlY0NvbnRleHRfOworICAgQVZJT0NvbnRleHQg KiBhdmlvQ29udGV4dF87CisgICBBVlN0cmVhbSAqIGF1ZGlvU3RyZWFtXzsKK0BAIC0xMTQsNiAr MTE1LDcgQEAgRGVjb2RlckNvbnRleHQ6OkRlY29kZXJDb250ZXh0KCBRQnl0ZUFycmF5IGNvbnN0 ICYgYXVkaW9EYXRhLCBRQXRvbWljSW50ICYgaXNDYW4KKyAgIGF1ZGlvRGF0YV8oIGF1ZGlvRGF0 YSApLAorICAgYXVkaW9EYXRhU3RyZWFtXyggYXVkaW9EYXRhXyApLAorICAgZm9ybWF0Q29udGV4 dF8oIE5VTEwgKSwKKysgIGNvZGVjXyggTlVMTCApLAorICAgY29kZWNDb250ZXh0XyggTlVMTCAp LAorICAgYXZpb0NvbnRleHRfKCBOVUxMICksCisgICBhdWRpb1N0cmVhbV8oIE5VTEwgKSwKK0BA IC0xNDMsNyArMTQ1LDExIEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6Om9wZW5Db2RlYyggUVN0cmlu ZyAmIGVycm9yU3RyaW5nICkKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorCisrI2lmIExJQkFW Q09ERUNfVkVSU0lPTl9NQUpPUiA8IDU2IHx8ICggTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID09 IDU2ICYmIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiA8IDU2ICkKKyAgIHVuc2lnbmVkIGNoYXIg KiBhdmlvQnVmZmVyID0gKCB1bnNpZ25lZCBjaGFyICogKWF2X21hbGxvYygga0J1ZmZlclNpemUg KyBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFICk7CisrI2Vsc2UKKysgIHVuc2lnbmVkIGNo YXIgKiBhdmlvQnVmZmVyID0gKCB1bnNpZ25lZCBjaGFyICogKWF2X21hbGxvYygga0J1ZmZlclNp emUgKyBBVl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFICk7CisrI2VuZGlmCisgICBpZiAoICFh dmlvQnVmZmVyICkKKyAgIHsKKyAgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0ciggImF2X21h bGxvYygpIGZhaWxlZC4iICk7CitAQCAtMTg2LDcgKzE5MiwxMSBAQCBib29sIERlY29kZXJDb250 ZXh0OjpvcGVuQ29kZWMoIFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgICAvLyBGaW5kIGF1ZGlv IHN0cmVhbSwgdXNlIHRoZSBmaXJzdCBhdWRpbyBzdHJlYW0gaWYgYXZhaWxhYmxlCisgICBmb3Ig KCB1bnNpZ25lZCBpID0gMDsgaSA8IGZvcm1hdENvbnRleHRfLT5uYl9zdHJlYW1zOyBpKysgKQor ICAgeworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1NyB8fCAoIExJQkFWQ09ERUNf VkVSU0lPTl9NQUpPUiA9PSA1NyAmJiBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgPCAzMyApCisg ICAgIGlmICggZm9ybWF0Q29udGV4dF8tPnN0cmVhbXNbaV0tPmNvZGVjLT5jb2RlY190eXBlID09 IEFWTUVESUFfVFlQRV9BVURJTyApCisrI2Vsc2UKKysgICAgICBpZiAoIGZvcm1hdENvbnRleHRf LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8g KQorKyNlbmRpZgorICAgICB7CisgICAgICAgYXVkaW9TdHJlYW1fID0gZm9ybWF0Q29udGV4dF8t PnN0cmVhbXNbaV07CisgICAgICAgYnJlYWs7CitAQCAtMTk4LDIyICsyMDgsMzggQEAgYm9vbCBE ZWNvZGVyQ29udGV4dDo6b3BlbkNvZGVjKCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICAgICBy ZXR1cm4gZmFsc2U7CisgICB9CisKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTcg fHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9O X01JTk9SIDwgMzMgKQorICAgY29kZWNDb250ZXh0XyA9IGF1ZGlvU3RyZWFtXy0+Y29kZWM7Cist ICBBVkNvZGVjICogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlciggY29kZWNDb250ZXh0Xy0+ Y29kZWNfaWQgKTsKKy0gIGlmICggIWNvZGVjICkKKysgIGNvZGVjXyA9IGF2Y29kZWNfZmluZF9k ZWNvZGVyKCBjb2RlY0NvbnRleHRfLT5jb2RlY19pZCApOworKyAgaWYgKCAhY29kZWNfICkKKyAg IHsKKyAgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0ciggIkNvZGVjIFtpZDogJTFdIG5vdCBm b3VuZC4iICkuYXJnKCBjb2RlY0NvbnRleHRfLT5jb2RlY19pZCApOworICAgICByZXR1cm4gZmFs c2U7CisgICB9CisrI2Vsc2UKKysgIGNvZGVjXyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKCBhdWRp b1N0cmVhbV8tPmNvZGVjcGFyLT5jb2RlY19pZCApOworKyAgaWYgKCAhY29kZWNfICkKKysgIHsK KysgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0ciggIkNvZGVjIFtpZDogJTFdIG5vdCBmb3Vu ZC4iICkuYXJnKCBhdWRpb1N0cmVhbV8tPmNvZGVjcGFyLT5jb2RlY19pZCApOworKyAgICByZXR1 cm4gZmFsc2U7CisrICB9CisrICBjb2RlY0NvbnRleHRfID0gYXZjb2RlY19hbGxvY19jb250ZXh0 MyggY29kZWNfICk7CisrICBpZiAoICFjb2RlY0NvbnRleHRfICkKKysgIHsKKysgICAgZXJyb3JT dHJpbmcgPSBRT2JqZWN0Ojp0ciggImF2Y29kZWNfYWxsb2NfY29udGV4dDMoKSBmYWlsZWQuIiAp OworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrICBhdmNvZGVjX3BhcmFtZXRlcnNfdG9fY29u dGV4dCggY29kZWNDb250ZXh0XywgYXVkaW9TdHJlYW1fLT5jb2RlY3BhciApOworKyNlbmRpZgor CistICByZXQgPSBhdmNvZGVjX29wZW4yKCBjb2RlY0NvbnRleHRfLCBjb2RlYywgTlVMTCApOwor KyAgcmV0ID0gYXZjb2RlY19vcGVuMiggY29kZWNDb250ZXh0XywgY29kZWNfLCBOVUxMICk7Cisg ICBpZiAoIHJldCA8IDAgKQorICAgeworICAgICBlcnJvclN0cmluZyA9IFFPYmplY3Q6OnRyKCAi YXZjb2RlY19vcGVuMigpIGZhaWxlZDogJTEuIiApLmFyZyggYXZFcnJvclN0cmluZyggcmV0ICkg KTsKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorCistICBhdl9sb2coIE5VTEwsIEFWX0xPR19J TkZPLCAiQ29kZWMgb3BlbjogJXM6IGNoYW5uZWxzOiAlZCwgcmF0ZTogJWQsIGZvcm1hdDogJXNc biIsIGNvZGVjLT5sb25nX25hbWUsCisrICBhdl9sb2coIE5VTEwsIEFWX0xPR19JTkZPLCAiQ29k ZWMgb3BlbjogJXM6IGNoYW5uZWxzOiAlZCwgcmF0ZTogJWQsIGZvcm1hdDogJXNcbiIsIGNvZGVj Xy0+bG9uZ19uYW1lLAorICAgICAgICAgICBjb2RlY0NvbnRleHRfLT5jaGFubmVscywgY29kZWND b250ZXh0Xy0+c2FtcGxlX3JhdGUsIGF2X2dldF9zYW1wbGVfZm10X25hbWUoIGNvZGVjQ29udGV4 dF8tPnNhbXBsZV9mbXQgKSApOworICAgcmV0dXJuIHRydWU7CisgfQorQEAgLTI1MiwxMCArMjc4 LDEzIEBAIHZvaWQgRGVjb2RlckNvbnRleHQ6OmNsb3NlQ29kZWMoKQorCisgICAvLyBDbG9zaW5n IGEgY29kZWMgY29udGV4dCB3aXRob3V0IHByaW9yIGF2Y29kZWNfb3BlbjIoKSB3aWxsIHJlc3Vs dCBpbgorICAgLy8gYSBjcmFzaCBpbiBmZm1wZWcKKy0gIGlmICggYXVkaW9TdHJlYW1fICYmIGF1 ZGlvU3RyZWFtXy0+Y29kZWMgJiYgYXVkaW9TdHJlYW1fLT5jb2RlYy0+Y29kZWMgKQorKyAgaWYg KCBhdWRpb1N0cmVhbV8gJiYgY29kZWNDb250ZXh0XyAmJiBjb2RlY18gKQorICAgeworICAgICBh dWRpb1N0cmVhbV8tPmRpc2NhcmQgPSBBVkRJU0NBUkRfQUxMOworLSAgICBhdmNvZGVjX2Nsb3Nl KCBhdWRpb1N0cmVhbV8tPmNvZGVjICk7CisrICAgIGF2Y29kZWNfY2xvc2UoIGNvZGVjQ29udGV4 dF8gKTsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID4gNTcgfHwgKCBMSUJBVkNPREVD X1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SID49IDMzICkK KysgICAgYXZjb2RlY19mcmVlX2NvbnRleHQoICZjb2RlY0NvbnRleHRfICk7CisrI2VuZGlmCisg ICB9CisKKyAgIGF2Zm9ybWF0X2Nsb3NlX2lucHV0KCAmZm9ybWF0Q29udGV4dF8gKTsKK0BAIC0z NTYsNiArMzg1LDcgQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6cGxheSggUVN0cmluZyAmIGVycm9y U3RyaW5nICkKKyAgICAgaWYgKCBwYWNrZXQuc3RyZWFtX2luZGV4ID09IGF1ZGlvU3RyZWFtXy0+ aW5kZXggKQorICAgICB7CisgICAgICAgQVZQYWNrZXQgcGFjayA9IHBhY2tldDsKKysjaWYgTElC QVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1Ig PT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwgMzcgKQorICAgICAgIGludCBnb3RG cmFtZSA9IDA7CisgICAgICAgZG8KKyAgICAgICB7CitAQCAtMzcwLDYgKzQwMCwxOSBAQCBib29s IERlY29kZXJDb250ZXh0OjpwbGF5KCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICAgICAgICAg cGFjay5kYXRhICs9IGxlbjsKKyAgICAgICB9CisgICAgICAgd2hpbGUoIHBhY2suc2l6ZSA+IDAg KTsKKysjZWxzZQorKyAgICAgIGludCByZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KCBjb2RlY0Nv bnRleHRfLCAmcGFjayApOworKyAgICAgIC8qIHJlYWQgYWxsIHRoZSBvdXRwdXQgZnJhbWVzIChp biBnZW5lcmFsIHRoZXJlIG1heSBiZSBhbnkgbnVtYmVyIG9mIHRoZW0pICovCisrICAgICAgd2hp bGUoIHJldCA+PSAwICkKKysgICAgICB7CisrICAgICAgICByZXQgPSBhdmNvZGVjX3JlY2VpdmVf ZnJhbWUoIGNvZGVjQ29udGV4dF8sIGZyYW1lKTsKKysKKysgICAgICAgIGlmICggUXQ0eDU6OkF0 b21pY0ludDo6bG9hZEFjcXVpcmUoIGlzQ2FuY2VsbGVkXyApIHx8IHJldCA8IDAgKQorKyAgICAg ICAgICBicmVhazsKKysKKysgICAgICAgIHBsYXlGcmFtZSggZnJhbWUgKTsKKysgICAgICB9Cisr I2VuZGlmCisgICAgIH0KKyAgICAgLy8gYXZfZnJlZV9wYWNrZXQoKSBtdXN0IGJlIGNhbGxlZCBh ZnRlciBlYWNoIGNhbGwgdG8gYXZfcmVhZF9mcmFtZSgpCisgI2lmIExJQkFWQ09ERUNfVkVSU0lP Tl9NQUpPUiA8IDU3IHx8ICggTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID09IDU3ICYmIExJQkFW Q09ERUNfVkVSU0lPTl9NSU5PUiA8IDcgKQorQEAgLTM3OSw2ICs0MjIsNyBAQCBib29sIERlY29k ZXJDb250ZXh0OjpwbGF5KCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICNlbmRpZgorICAgfQor CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU3IHx8ICggTElCQVZDT0RFQ19WRVJT SU9OX01BSk9SID09IDU3ICYmIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiA8IDM3ICkKKyAgIGlm ICggIVF0NHg1OjpBdG9taWNJbnQ6OmxvYWRBY3F1aXJlKCBpc0NhbmNlbGxlZF8gKSAmJgorICAg ICAgICBjb2RlY0NvbnRleHRfLT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQ09ERUNfQ0FQX0RFTEFZ ICkKKyAgIHsKK0BAIC0zOTEsNiArNDM1LDE4IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6OnBsYXko IFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgICAgICAgcGxheUZyYW1lKCBmcmFtZSApOworICAg ICB9CisgICB9CisrI2Vsc2UKKysgIC8qIGZsdXNoIHRoZSBkZWNvZGVyICovCisrICBhdl9pbml0 X3BhY2tldCggJnBhY2tldCApOworKyAgaW50IHJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoY29k ZWNDb250ZXh0XywgJnBhY2tldCApOworKyAgd2hpbGUoIHJldCA+PSAwICkKKysgIHsKKysgICAg cmV0ID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1lKGNvZGVjQ29udGV4dF8sIGZyYW1lKTsKKysgICAg aWYgKCBRdDR4NTo6QXRvbWljSW50Ojpsb2FkQWNxdWlyZSggaXNDYW5jZWxsZWRfICkgfHwgcmV0 IDwgMCApCisrICAgICAgYnJlYWs7CisrICAgIHBsYXlGcmFtZSggZnJhbWUgKTsKKysgIH0KKysj ZW5kaWYKKworICNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1NAorICAgYXZfZnJlZSgg ZnJhbWUgKTsKKzMyCitzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LTIucGF0Y2gK K0NvbW1lbnQgb24gdGhpcyBmaWxlCitAQCAtMCwwICsxLDMyIEBACitGcm9tIDk2NmY0YThiNzhl NjMyNGI5MzBlNWE1MGYyYmI5MzBiZDg3ZTU2NWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBBYnM2MiA8b3R0b21hbm5AeWFuZGV4LnJ1PgorRGF0ZTogRnJpLCAyNyBTZXAgMjAxOSAx NzowMDo1MiArMDMwMAorU3ViamVjdDogW1BBVENIXSBGRm1wZWcgcGxheWVyOiBGaXggc29tZSBj cmFzaGVzIG9uIGJyb2tlbiBmaWxlcworCistLS0KKyBmZm1wZWdhdWRpby5jYyB8IDQgKysrKwor IDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2ZmbXBlZ2F1 ZGlvLmNjIGIvZmZtcGVnYXVkaW8uY2MKK2luZGV4IDU2ZThmNzg4ZS4uNDE1ZmM3OWNiIDEwMDY0 NAorLS0tIGEvZmZtcGVnYXVkaW8uY2MKKysrKyBiL2ZmbXBlZ2F1ZGlvLmNjCitAQCAtNTEsNyAr NTEsOSBAQCBBdWRpb1NlcnZpY2UgJiBBdWRpb1NlcnZpY2U6Omluc3RhbmNlKCkKKworIEF1ZGlv U2VydmljZTo6QXVkaW9TZXJ2aWNlKCkKKyB7CisrI2lmIExJQkFWRk9STUFUX1ZFUlNJT05fTUFK T1IgPCA1OCB8fCAoIExJQkFWRk9STUFUX1ZFUlNJT05fTUFKT1IgPT0gNTggJiYgTElCQVZGT1JN QVRfVkVSU0lPTl9NSU5PUiA8IDkgKQorICAgYXZfcmVnaXN0ZXJfYWxsKCk7CisrI2VuZGlmCisg ICBhb19pbml0aWFsaXplKCk7CisgfQorCitAQCAtNDM4LDYgKzQ0MCw4IEBAIGJvb2wgRGVjb2Rl ckNvbnRleHQ6OnBsYXkoIFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgI2Vsc2UKKyAgIC8qIGZs dXNoIHRoZSBkZWNvZGVyICovCisgICBhdl9pbml0X3BhY2tldCggJnBhY2tldCApOworKyAgcGFj a2V0LmRhdGEgPSBOVUxMOworKyAgcGFja2V0LnNpemUgPSAwOworICAgaW50IHJldCA9IGF2Y29k ZWNfc2VuZF9wYWNrZXQoY29kZWNDb250ZXh0XywgJnBhY2tldCApOworICAgd2hpbGUoIHJldCA+ PSAwICkKKyAgIHsKKzI1CitzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LTMucGF0 Y2gKK0NvbW1lbnQgb24gdGhpcyBmaWxlCitAQCAtMCwwICsxLDI1IEBACitGcm9tIDhhY2IyODhj OWU5YmRiM2M2YmYyZTgwMzk1NGRkM2I2YWMyNzNjMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBMaWFvIEp1bnh1YW4gPG1pa2VsanhAMTI2LmNvbT4KK0RhdGU6IFN1biwgMjAgRmVi IDIwMjIgMTI6Mjg6MDUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYWRkIHN1cHBvcnQgZm9yIGZm bXBlZyA1LjAKKworLS0tCisgZmZtcGVnYXVkaW8uY2MgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdl ZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9mZm1wZWdhdWRpby5jYyBiL2ZmbXBl Z2F1ZGlvLmNjCitpbmRleCBkNTUwZjRhNzcuLjc5NDhkMjE4NyAxMDA2NDQKKy0tLSBhL2ZmbXBl Z2F1ZGlvLmNjCisrKysgYi9mZm1wZWdhdWRpby5jYworQEAgLTk0LDcgKzk0LDExIEBAIHN0cnVj dCBEZWNvZGVyQ29udGV4dAorICAgUUJ5dGVBcnJheSBhdWRpb0RhdGFfOworICAgUURhdGFTdHJl YW0gYXVkaW9EYXRhU3RyZWFtXzsKKyAgIEFWRm9ybWF0Q29udGV4dCAqIGZvcm1hdENvbnRleHRf OworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1OQorICAgQVZDb2RlYyAqIGNvZGVj XzsKKysjZWxzZQorKyAgY29uc3QgQVZDb2RlYyAqIGNvZGVjXzsKKysjZW5kaWYKKyAgIEFWQ29k ZWNDb250ZXh0ICogY29kZWNDb250ZXh0XzsKKyAgIEFWSU9Db250ZXh0ICogYXZpb0NvbnRleHRf OworICAgQVZTdHJlYW0gKiBhdWRpb1N0cmVhbV87CmRpZmYgLS1naXQgYS9zcmNwa2dzL2dvbGRl bmRpY3QvdGVtcGxhdGUgYi9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUKaW5kZXggZjRhMDU3 NTlmNjkzZC4uOTdmNDQzNDdiMDNhNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9nb2xkZW5kaWN0L3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dvbGRlbmRpY3QnCiBwa2duYW1lPWdvbGRlbmRpY3QKIHZl cnNpb249MS41LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXFtYWtlCiBj b25maWd1cmVfYXJncz0iQ09ORklHKz16aW1fc3VwcG9ydCBnb2xkZW5kaWN0LnBybyIKIGhvc3Rt YWtlZGVwZW5kcz0icXQ1LXFtYWtlIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMiCkBAIC0xMCw3 ICsxMCw3IEBAIG1ha2VkZXBlbmRzPSJ0aWZmLWRldmVsIHF0NS1kZXZlbCBsaWJ2b3JiaXMtZGV2 ZWwgemxpYi1kZXZlbAogIHF0NS13ZWJraXQtZGV2ZWwgbHpvLWRldmVsIGJ6aXAyLWRldmVsIGxp YmFvLWRldmVsIHF0NS1zdmctZGV2ZWwKICBsaWJlYi1kZXZlbCBxdDUteDExZXh0cmFzLWRldmVs IGZmbXBlZy1kZXZlbCBsaWJsem1hLWRldmVsCiAgcXQ1LW11bHRpbWVkaWEtZGV2ZWwiCi1zaG9y dF9kZXNjPSJBIGZlYXR1cmUtcmljaCBkaWN0aW9uYXJ5IGxvb2t1cCBwcm9ncmFtIgorc2hvcnRf ZGVzYz0iRmVhdHVyZS1yaWNoIGRpY3Rpb25hcnkgbG9va3VwIHByb2dyYW0iCiBtYWludGFpbmVy PSJKb2huIDxtZUBqb2hubnluYXRvci5kZXY+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIK IGhvbWVwYWdlPSJodHRwOi8vZ29sZGVuZGljdC5vcmcvIgoKRnJvbSAxMDkyY2FiNzBlYjcwMjMz OGZjZGEzOTQ1OGFmMzA3NWE4NDk4OWViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzcvMTEzXSBnc3QtbGliYXY6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2dzdC1saWJhdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCmluZGV4 IDhjNzJmYzNlOTdlZWUuLjA0YzM5YmZmMTQ4OTYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LWxp YmF2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LWxpYmF2JwogcGtnbmFtZT1nc3QtbGliYXYK IHZlcnNpb249MS4yMi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNv bgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHlhc20iCiBtYWtlZGVwZW5kcz0ib3JjLWRl dmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIGZmbXBlZy1kZXZlbCIKCkZyb20gNzk1ZjAxZjFk YjM1ZmRkNjVjMmYxMmMyMWViMTE3ODJiMDJiZjFkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM4LzExM10gZ3N0LXBsdWdpbnMtYmFkMTog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUgYi9zcmNw a2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUKaW5kZXggNzdiZjc5OTgxYzIwYi4uNWMxNTg3 MjRhNmM3ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLWJhZDEnCiBwa2duYW1lPWdzdC1wbHVnaW5z LWJhZDEKIHZlcnNpb249MS4yMi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9oZWxw ZXI9ImdpciIKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURwYWNrYWdlLW9y aWdpbj1odHRwczovL3ZvaWRsaW51eC5vcmcgLURkb2M9ZGlzYWJsZWQKCkZyb20gMjYxY2YyYzBj Zjc5NWQyMDg1OTAxMzY0ODVjYTI1ZmZiNTk0ZmUxMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM5LzExM10gZ3N0LXJ0c3Atc2VydmVyOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUgYi9zcmNwa2dz L2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZQppbmRleCAyZjBjMGM0NWZmODIwLi45ODBmZDcyY2Rk NGM1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ2dzdC1ydHNwLXNlcnZlcicKIHBrZ25hbWU9Z3N0LXJ0c3Atc2VydmVyCiB2 ZXJzaW9uPTEuMjIuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24K IGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBweXRob24zIgogbWFrZWRlcGVuZHM9ImdsaWIt ZGV2ZWwgZ3N0LXBsdWdpbnMtYmFkMS1kZXZlbCBnb2JqZWN0LWludHJvc3BlY3Rpb24KCkZyb20g NGVmOWRhZWI1ZmM4NDcxOTU5ZTAwZWQ5NTQ3MDQxMWMzNmRmMjgyNyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQwLzExM10gZ3V2Y3ZpZXc6 IHVwZGF0ZSB0byAyLjAuOC4KCi0tLQogc3JjcGtncy9ndXZjdmlldy9wYXRjaGVzL2ZpeC1pbmNs dWRlLnBhdGNoIHwgMTAgKysrKysrKysrKwogc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZSAgICAg ICAgICAgICAgICAgIHwgIDUgKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygr KSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2d1dmN2aWV3L3Bh dGNoZXMvZml4LWluY2x1ZGUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2d1dmN2aWV3L3Bh dGNoZXMvZml4LWluY2x1ZGUucGF0Y2ggYi9zcmNwa2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWlu Y2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uNTAz YzJhZjNiNzhjMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9m aXgtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDEwIEBACistLS0gYS9ndXZjdmlldy9ndXZjdmll dy5jCisrKysgYi9ndXZjdmlldy9ndXZjdmlldy5jCitAQCAtMjgsNiArMjgsNyBAQAorICNpbmNs dWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyAjaW5jbHVkZSA8 ZXJybm8uaD4KKysjaW5jbHVkZSA8bG9jYWxlLmg+CisgCisgI2luY2x1ZGUgImd2aWV3LmgiCisg I2luY2x1ZGUgImd2aWV3djRsMmNvcmUuaCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3V2Y3ZpZXcv dGVtcGxhdGUgYi9zcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlCmluZGV4IDM0NWNmNjAwNmYyNDYu Ljg2YTdmZDYxOTYxMmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZQpAQCAtMSw4ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2d1dmN2aWV3JwogcGtnbmFtZT1ndXZjdmlldwotdmVyc2lvbj0yLjAuNwordmVy c2lvbj0yLjAuOAogcmV2aXNpb249MQotY3JlYXRlX3dya3NyYz15ZXMKIGJ1aWxkX3N0eWxlPWdu dS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtc3RhdGljIC0tZGlzYWJsZS1k ZWJpYW4tbWVudSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBpbnRsdG9vbCBhdXRvY29u ZiBhdXRvbWFrZSBsaWJ0b29sIGdsaWItZGV2ZWwiCkBAIC0xNCw3ICsxMyw3IEBAIG1haW50YWlu ZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9y LWxhdGVyIgogaG9tZXBhZ2U9Imh0dHA6Ly9ndXZjdmlldy5zb3VyY2Vmb3JnZS5uZXQvIgogZGlz dGZpbGVzPSIke1NPVVJDRUZPUkdFX1NJVEV9LyR7cGtnbmFtZX0vJHtwa2duYW1lfS1zcmMtJHt2 ZXJzaW9ufS50YXIuYnoyIgotY2hlY2tzdW09ZjQ3ZDUxZmJkMDZlNDRlZWFhMWE4MmY0YTE1M2M5 Mjc1MjdjOTBkOTQ1MTQxOTdhNzBiMjk1NjAyOGNjOGFkNAorY2hlY2tzdW09YTIxZjRlNDQ4Mjg2 NjY2Y2YyN2JhZmVmNTI5MGNjOTUzYTBhMTc5NmI3NTJlNWJiZTUyMTI2NmRjMTIzMGM4MQogCiBw b3N0X3BhdGNoKCkgewogCXNlZCAnMzFhI2luY2x1ZGUgPGxvY2FsZS5oPicgLWkgIGd1dmN2aWV3 L2d1dmN2aWV3LmMKCkZyb20gYjI0ZjAzNjRmMDUzOWNlZWVlYTI1NGE4MDlmOGM4YTE5NmE2NWNh OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDQxLzExM10gaGFuZGJyYWtlOiB1cGRhdGUgdG8gMS42LjEKCi0tLQogLi4uL3BhdGNoZXMvZml4 LW1pc3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2ggICAgfCAxMSArKysrKystLS0tLQogLi4uL2hh bmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoICAgfCAxNSArKysrKysrKysr KysrKysKIHNyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgIHwg MTcgKysrKysrKysrKy0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwg MTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9oYW5kYnJha2UvcGF0 Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGFuZGJy YWtlL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2ggYi9zcmNwa2dzL2hh bmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoCmluZGV4IDI2 ZGIwMzg2N2EwYzguLmQ2YmIyZWRhNjI3YTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaGFuZGJyYWtl L3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2gKKysrIGIvc3JjcGtncy9o YW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRjaApAQCAtMSwx NCArMSwxNSBAQAogLS0tIGEvZ3RrL2NvbmZpZ3VyZS5hYwogKysrIGIvZ3RrL2NvbmZpZ3VyZS5h YwogQEAgLTIwMyw3ICsyMDMsNyBAQAotIAorCiAgQU1fQ09ORElUSU9OQUwoW01JTkdXXSwgW3Rl c3QgIngkbWluZ3dfZmxhZyIgPSAieHllcyJdKQotIAotLUhCX0xJQlM9IiRIQl9MSUJTIC1saGFu ZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAt bHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9y YmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAt bHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4 bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIgot K0hCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2 Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAt bGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAt bHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxm b250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1 cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sZGwiCisKKy1IQl9MSUJTPSIkSEJfTElCUyAtbGhhbmRi cmFrZSAtbGF2Zm9ybWF0IC1sYXZmaWx0ZXIgLWxhdmNvZGVjIC1sYXZ1dGlsIC1sZGF2MWQgLWxz d3Jlc2FtcGxlIC1scG9zdHByb2MgLWxkdmRuYXYgLWxkdmRyZWFkIC1sbXAzbGFtZSAtbHZvcmJp cyAtbHZvcmJpc2VuYyAtbG9nZyAtbHN3c2NhbGUgLWx0aGVvcmFlbmMgLWx0aGVvcmFkZWMgLWx2 cHggLWx6IC1sYnoyIC1sYmx1cmF5IC1sYXNzIC1sZm9udGNvbmZpZyAtbGZyZWV0eXBlIC1seG1s MiAtbGphbnNzb24gLWxvcHVzIC1sc3BlZXggLWx0dXJib2pwZWcgLWxsem1hIC1semltZyAtbFN2 dEF2MUVuYyIKKytIQl9MSUJTPSIkSEJfTElCUyAtbGhhbmRicmFrZSAtbGF2Zm9ybWF0IC1sYXZm aWx0ZXIgLWxhdmNvZGVjIC1sYXZ1dGlsIC1sZGF2MWQgLWxzd3Jlc2FtcGxlIC1scG9zdHByb2Mg LWxkdmRuYXYgLWxkdmRyZWFkIC1sbXAzbGFtZSAtbHZvcmJpcyAtbHZvcmJpc2VuYyAtbG9nZyAt bHN3c2NhbGUgLWx0aGVvcmFlbmMgLWx0aGVvcmFkZWMgLWx2cHggLWx6IC1sYnoyIC1sYmx1cmF5 IC1sYXNzIC1sZm9udGNvbmZpZyAtbGZyZWV0eXBlIC1seG1sMiAtbGphbnNzb24gLWxvcHVzIC1s c3BlZXggLWx0dXJib2pwZWcgLWxsem1hIC1semltZyAtbFN2dEF2MUVuYyAtbGRsIgogIEhCX0NQ UEZMQUdTPSIkSEJfQ1BQRkxBR1MgJEhCSU5DIgotIAorCiAgUEtHX0NIRUNLX01PRFVMRVMoW3gy NjRdLCBbeDI2NF0sIHN5c194MjY0PXllcywgc3lzX3gyNjQ9bm8pCisKIC0tLSBhL3Rlc3QvbW9k dWxlLmRlZnMKICsrKyBiL3Rlc3QvbW9kdWxlLmRlZnMKIEBAIC02OSw2ICs2OSw5IEBACmRpZmYg LS1naXQgYS9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNo IGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4yOThmOWY0YWIyOGYyCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwtaW5jbHVk ZS5wYXRjaApAQCAtMCwwICsxLDE1IEBACistLS0gYS9saWJoYi9tb2R1bGUuZGVmcwkyMDIzLTAx LTIyIDExOjM2OjQ5LjAwMDAwMDAwMCAtMDUwMAorKysrIGIvbGliaGIvbW9kdWxlLmRlZnMJMjAy My0wNC0wMyAyMjozNzo1Mi4zOTU0NjcwMTAgLTA0MDAKK0BAIC00NiwxMSArNDYsNyBAQAorIExJ QkhCLkdDQy5JICs9ICQoTElCSEIuYnVpbGQvKSAkKENPTlRSSUIuYnVpbGQvKWluY2x1ZGUKKyAK KyBpZmVxICgxLCQoRkVBVFVSRS5xc3YpKQorLSAgICBpZmVxICgkKEhPU1Quc3lzdGVtKSxmcmVl YnNkKSkKKy0gICAgICAgIExJQkhCLkdDQy5JICs9ICQoTE9DQUxCQVNFKS9pbmNsdWRlL3ZwbAor LSAgICBlbHNlCistICAgICAgICBMSUJIQi5HQ0MuSSArPSAkKENPTlRSSUIuYnVpbGQvKWluY2x1 ZGUvdnBsCistICAgIGVuZGlmCisrICAgIExJQkhCLkdDQy5JICs9IC91c3IvaW5jbHVkZS92cGwK KyBlbmRpZgorIAorIGlmbmVxICgsJChmaWx0ZXIgJChIT1NULnN5c3RlbSksZnJlZWJzZCBuZXRi c2Qgb3BlbmJzZCkpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlCmluZGV4IGNhNWU0NTcxZTQ5YzMuLmMzMmNiMWJmYTMx ZjQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv aGFuZGJyYWtlL3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdoYW5kYnJha2UnCiBwa2duYW1lPWhhbmRicmFrZQotdmVyc2lvbj0xLjUuMQordmVyc2lvbj0x LjYuMQogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2Fy Z3M9Ii0tZm9yY2UgLS1kaXNhYmxlLWd0ay11cGRhdGUtY2hlY2tzIC0tZGlzYWJsZS1kZi1mZXRj aCAtLWhhcmRlbgotICQodm9wdF9lbmFibGUgZmRrX2FhYyBmZGstYWFjKSAkKHZvcHRfZW5hYmxl IG52ZW5jKSIKKyAkKHZvcHRfZW5hYmxlIGZka19hYWMgZmRrLWFhYykgJCh2b3B0X2VuYWJsZSBu dmVuYykgJCh2b3B0X2VuYWJsZSBxc3YpIgogbWFrZV9idWlsZF9hcmdzPSItQyAke1hCUFNfVFJJ UExFVH0iCiBtYWtlX2luc3RhbGxfYXJncz0iLUMgJHtYQlBTX1RSSVBMRVR9IgogaG9zdG1ha2Vk ZXBlbmRzPSJhdXRvbWFrZSBjbWFrZSBnZXR0ZXh0LWRldmVsIGdsaWItZGV2ZWwgaW50bHRvb2wg bGlidG9vbCBtNCBtZXNvbiBuYXNtIHBrZy1jb25maWcgcHl0aG9uMyIKQEAgLTEyLDggKzEyLDEx IEBAIG1ha2VkZXBlbmRzPSJiemlwMi1kZXZlbCBmZm1wZWctZGV2ZWwgZ3N0LXBsdWdpbnMtYmFz ZTEtZGV2ZWwgZ3RrKzMtZGV2ZWwKICBqYW5zc29uLWRldmVsIGxhbWUtZGV2ZWwgbGliYXNzLWRl dmVsIGxpYmJsdXJheS1kZXZlbCBsaWJkYXYxZC1kZXZlbAogIGxpYmR2ZG5hdi1kZXZlbCBsaWJk dmRyZWFkLWRldmVsIGxpYmd1ZGV2LWRldmVsIGxpYm51bWEtZGV2ZWwKICBsaWJzYW1wbGVyYXRl LWRldmVsIGxpYnRoZW9yYS1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwgbGlidnB4LWRldmVsIGxpYnht bDItZGV2ZWwKLSBvcHVzLWRldmVsIHNwZWV4LWRldmVsIHgyNjQtZGV2ZWwgeDI2NS1kZXZlbCB6 aW1nLWRldmVsCisgb3B1cy1kZXZlbCBzcGVleC1kZXZlbCB4MjY0LWRldmVsIHgyNjUtZGV2ZWwg emltZy1kZXZlbCBsaWJzdnQtYXYxLWRldmVsCiAgJCh2b3B0X2lmIGZka19hYWMgZmRrLWFhYy1k ZXZlbCkKKyAkKHZvcHRfaWYgcXN2IGxpYnZhLWRldmVsKQorICQodm9wdF9pZiBxc3YgbGliZHJt LWRldmVsKQorICQodm9wdF9pZiBxc3Ygb25ldnBsLWRldmVsKQogICQodm9wdF9pZiBudmVuYyBu di1jb2RlYy1oZWFkZXJzKSIKIGRlcGVuZHM9ImRlc2t0b3AtZmlsZS11dGlscyBnc3QtcGx1Z2lu cy1nb29kMSBoaWNvbG9yLWljb24tdGhlbWUiCiBzaG9ydF9kZXNjPSJNdWx0aXRocmVhZGVkIHZp ZGVvIHRyYW5zY29kZXIiCkBAIC0yMSwxNSArMjQsMTUgQEAgbWFpbnRhaW5lcj0iRW5ubyBCb2xh bmQgPGdvdHRveEB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb25seSIKIGhvbWVw YWdlPSJodHRwczovL2hhbmRicmFrZS5mci8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNv bS9IYW5kQnJha2UvSGFuZEJyYWtlL3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVyc2lvbn0vSGFuZEJy YWtlLSR7dmVyc2lvbn0tc291cmNlLnRhci5iejIiCi1jaGVja3N1bT0zOTk5ZmUwNmQ1MzA5Yzgx OTc5OWE3M2E5NjhhOGVjMzg0MGU3ODQwYzJiNjRhZjhmNWNkYjdmZDhjOTQzMGYwCitjaGVja3N1 bT05NGNjZmUwM2RiOTE3YTkxNjUwMDAwYzUxMGY3ZmQ1M2Y4NDRkYTE5ZjE5YWQ0YjRiZTFiOGY2 YmMzMWE4ZDRjCiBub2Nyb3NzPXllcwogCi1idWlsZF9vcHRpb25zPSJmZGtfYWFjIG52ZW5jIgor YnVpbGRfb3B0aW9ucz0iZmRrX2FhYyBudmVuYyBxc3YiCiAKIGNhc2UgIiRYQlBTX1RBUkdFVF9N QUNISU5FIiBpbgogCXg4Nl82NCp8aTY4NiopCiAJCUNGTEFHUz0iLW1zc2UiCi0JCWJ1aWxkX29w dGlvbnNfZGVmYXVsdD0ibnZlbmMiCisJCWJ1aWxkX29wdGlvbnNfZGVmYXVsdD0ibnZlbmMgcXN2 IgogCQk7OwogZXNhYwogCkBAIC0zNyw3ICs0MCw3IEBAIHByZV9jb25maWd1cmUoKSB7CiAJIyB1 c2Ugc3lzdGVtIGxpYnJhcmllcywgZG9uJ3QgZG93bmxvYWQgdGhlbQogCXJtIC1yZiBjb250cmli LwogCWZvciBtb2R1bGUgaW4gZmRrLWFhYyBmZm1wZWcgbGliYmx1cmF5IGxpYmRhdjFkIGxpYmR2 ZG5hdiBsaWJkdmRyZWFkIG52ZW5jIFwKLQkJeDI2NSB6aW1nOyBkbworCQl4MjY1IHppbWcgc3Z0 LWF2MSBsaWJ2cGw7IGRvCiAJICAgIHZzZWQgLWkgIi9NT0RVTEVTICs9IGNvbnRyaWJcLyR7bW9k dWxlfS9kIiBtYWtlL2luY2x1ZGUvbWFpbi5kZWZzCiAJZG9uZQogfQoKRnJvbSA4NDI4NjM0ZTgx ZDk0NmVjNWY5NDU5ZmI1M2Q1MTUwZTllMjVhOWQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDIvMTEzXSBoZWRnZXdhcnM6IHJldmJ1bXAg Zm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9oZWRnZXdhcnMvdGVtcGxhdGUgfCA0ICsr LS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9oZWRnZXdhcnMvdGVtcGxhdGUgYi9zcmNwa2dzL2hlZGdld2Fycy90 ZW1wbGF0ZQppbmRleCA0MTlmMjliOThiNDRkLi45MjZmZTRmZTNlNjg4IDEwMDY0NAotLS0gYS9z cmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0 ZQpAQCAtMSwxMyArMSwxMyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnaGVkZ2V3YXJzJwogcGtn bmFtZT1oZWRnZXdhcnMKIHZlcnNpb249MS4wLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLUROT1NFUlZFUj0xIC1EREFUQV9JTlNU QUxMX0RJUj0vdXNyL3NoYXJlLyR7cGtnbmFtZX0KICAtRFBIWVNGU19TWVNURU09MSAtRE1JTklN QUxfRkxBR1M9MSIKIG1ha2VfY21kPW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0ibHVhNTEgcGtnLWNv bmZpZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCi1tYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVs IGx1YTUxLWRldmVsIHBoeXNmcy1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgU0RMMl9pbWFnZS1kZXZl bAorbWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgbHVhNTEtZGV2ZWwgcGh5c2ZzLWRldmVsIHF0 NS10b29scy1kZXZlbCBTREwyX2ltYWdlLWRldmVsCiAgU0RMMl9taXhlci1kZXZlbCBTREwyX25l dC1kZXZlbCBTREwyX3R0Zi1kZXZlbCIKIGRlcGVuZHM9ImxpYmZyZWVnbHV0Igogc2hvcnRfZGVz Yz0iRnVubnkgdHVybi1iYXNlZCBhcnRpbGxlcnkgZ2FtZSwgZmVhdHVyaW5nIGZpZ2h0aW5nIEhl ZGdlaG9ncyEiCgpGcm9tIDU3NDMzMGEwNTYxMTNiMmJjYTY1YTY5YzE0ZjIzMGI5YmE3ZmVlYmIg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0 My8xMTNdIGlkamM6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9pZGpj L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaWRqYy90ZW1wbGF0ZSBiL3NyY3BrZ3Mv aWRqYy90ZW1wbGF0ZQppbmRleCBkZjYwMzE4YjNkYjk2Li4zNmE3NWJhZjU5N2M1IDEwMDY0NAot LS0gYS9zcmNwa2dzL2lkamMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pZGpjL3RlbXBsYXRlCkBA IC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpZGpjJwogcGtnbmFtZT1pZGpj CiB2ZXJzaW9uPTAuOS4xCi1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1nbnUt Y29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgZ2l0IHB5dGhvbjMgYXV0b21h a2UgZ2V0dGV4dC1kZXZlbCBsaWJ0b29sIgogbWFrZWRlcGVuZHM9ImxpYnZvcmJpcy1kZXZlbCBs aWJvZ2ctZGV2ZWwgamFjay1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsCi0gbGliZmxhYy1kZXZl bCBsaWJzbmRmaWxlLWRldmVsIG1wZzEyMy1kZXZlbCBmZm1wZWctZGV2ZWwgc3BlZXgtZGV2ZWwK KyBsaWJmbGFjLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwgbXBnMTIzLWRldmVsIGZmbXBlZzQtZGV2 ZWwgc3BlZXgtZGV2ZWwKICBnbGliLWRldmVsIHBpeG1hbi1kZXZlbCBsYW1lLWRldmVsIHB5dGhv bjMtZ29iamVjdC1kZXZlbCBsaWJzaG91dC1pZGpjLWRldmVsCiAgb3B1cy1kZXZlbCB0d29sYW1l LWRldmVsIHB5dGhvbjMtbXV0YWdlbiBweXRob24zLWRldmVsIgogZGVwZW5kcz0icHl0aG9uMy1n b2JqZWN0IHB5dGhvbjMtbXV0YWdlbiBkZXNrdG9wLWZpbGUtdXRpbHMgc2hhcmVkLW1pbWUtaW5m byBweXRob24zLWRidXMgamFjayIKCkZyb20gNmY5YjQyYzdiN2IzOWMzZjc5ODZkNTlhZWE4ZGM1 YzlmN2ViOGJiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDQ0LzExM10ga2ZpbGVtZXRhZGF0YTU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv a2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUgYi9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRl CmluZGV4IDRiOTFjZjE5ZjI5OGYuLmEzNjcxYTM4Y2U1OWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv a2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tmaWxlbWV0YWRhdGE1 JwogcGtnbmFtZT1rZmlsZW1ldGFkYXRhNQogdmVyc2lvbj01LjEwNy4wCi1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJrY29yZWFkZG9u cyBleHRyYS1jbWFrZS1tb2R1bGVzIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtl CiAgZ2V0dGV4dCBrY29yZWFkZG9ucyBweXRob24zIgoKRnJvbSBkMWJjNGE3NmVkMjNmOWYzN2Fm YjRmOTRiZjhjYTMyNmU3ZWQ4ZjJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwNDUvMTEzXSBraWQzOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggfCAxNyArKysrKysrKysr KysrKysrKwogc3JjcGtncy9raWQzL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAyICstCiAyIGZp bGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3Mva2lkMy9wYXRjaGVz L2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4u MTM1ZmM1MGUwN2M5YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mva2lkMy9wYXRjaGVzL2Zm bXBlZzUucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorIyBodHRwczovL2F1ci5hcmNobGludXgub3Jn L2NnaXQvYXVyLmdpdC9kaWZmL2ZmbXBlZzUucGF0Y2g/aD1raWQzLWNsaSZpZD0xMjQxMGE3NDkw NjYxMmU3ZWZjMGVjOGZiY2U3MzliNGEwZmVmN2U3CitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMv YWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcCBiL3NyYy9wbHVnaW5z L2Fjb3VzdGlkaW1wb3J0L2ZmbXBlZ2ZpbmdlcnByaW50ZGVjb2Rlci5jcHAKK2luZGV4IGUxNTZk NDI0Li5lMTJiOWFiZCAxMDA2NDQKKy0tLSBhL3NyYy9wbHVnaW5zL2Fjb3VzdGlkaW1wb3J0L2Zm bXBlZ2ZpbmdlcnByaW50ZGVjb2Rlci5jcHAKKysrKyBiL3NyYy9wbHVnaW5zL2Fjb3VzdGlkaW1w b3J0L2ZmbXBlZ2ZpbmdlcnByaW50ZGVjb2Rlci5jcHAKK0BAIC0yMzIsNyArMjMyLDExIEBAIHBy aXZhdGU6CisgICBmcmllbmQgY2xhc3MgRm9ybWF0OworICAgZnJpZW5kIGNsYXNzIENvbnZlcnRl cjsKKyAgIEFWQ29kZWNDb250ZXh0KiBtX3B0cjsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX0lO VCA8IEFWX1ZFUlNJT05fSU5UKDU5LCAwLCAwKQorICAgQVZDb2RlYyogbV9pbXBsOworKyNlbHNl CisrICBjb25zdCBBVkNvZGVjKiBtX2ltcGw7CisrI2VuZGlmCisgICBBVkZyYW1lKiBtX2ZyYW1l OworICAgYm9vbCBtX29wZW5lZDsKKyB9OwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9raWQzL3RlbXBs YXRlIGIvc3JjcGtncy9raWQzL3RlbXBsYXRlCmluZGV4IDQ1NjIwNmQ5MGUxNmEuLmYzMmY5ZGVj YjBlN2YgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva2lkMy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tp ZDMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdraWQzJwog cGtnbmFtZT1raWQzCiB2ZXJzaW9uPTMuOS4xCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWls ZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9BUFBTPSdDTEk7JCh2b3B0X2lm IEtERSBLREUgUXQpJwogIC1EV0lUSF9ET0NCT09LRElSPS91c3Ivc2hhcmUveHNsL2RvY2Jvb2sg LURXSVRIX0ZMQUM9JCh2b3B0X2lmIGZsYWMgT04gT0ZGKQoKRnJvbSA1NDM3NmNhNzkwODBlZjA4 YjEwZWQ3NTFlZTQ4ZWE4YTIxODQwNWFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDYvMTEzXSBrb2RpOiByZXZidW1wIGZvciBmZm1wZWc0 LTQuNC4zCgotLS0KIHNyY3BrZ3Mva29kaS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5n ZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2tvZGkvdGVtcGxhdGUgYi9zcmNwa2dzL2tvZGkvdGVtcGxhdGUKaW5kZXggODA1Nzk2NGQ3OGEz OC4uNmNjMTg3NGJlN2JhNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9rb2RpL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mva29kaS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2tvZGknCiBwa2duYW1lPWtvZGkKIHZlcnNpb249MTkuNAotcmV2aXNpb249NgorcmV2aXNp b249NwogX2NvZGVuYW1lPSJNYXRyaXgiCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2Fy Z3M9Ii1EV0lUSF9GRk1QRUc9L3VzciAtREVOQUJMRV9MREdPTEQ9T0ZGCkBAIC01NCw3ICs1NCw3 IEBAIG1ha2VkZXBlbmRzPSIKICBsaWJtYWQtZGV2ZWwgZm9udGNvbmZpZy1kZXZlbCBsaWJYaW5l cmFtYS1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsIGxpYm1tcy1kZXZlbAogIGVuY2EtZGV2ZWwg Ym9vc3QtZGV2ZWwgbGliY3VybC1kZXZlbCBsaWJ2YS1kZXZlbCBsaWJ2ZHBhdS1kZXZlbCBsaWJh c3MtZGV2ZWwKICBsaWJibHVldG9vdGgtZGV2ZWwgeWFqbC1kZXZlbCBsaWJwbGlzdC1kZXZlbCBs aWJydG1wLWRldmVsIHRpbnl4bWwtZGV2ZWwKLSB0YWdsaWItZGV2ZWwgbGliY2FwLWRldmVsIGxh bWUtZGV2ZWwgbGliYmx1cmF5LWRldmVsIGxpYm5mcy1kZXZlbCBmZm1wZWctZGV2ZWwKKyB0YWds aWItZGV2ZWwgbGliY2FwLWRldmVsIGxhbWUtZGV2ZWwgbGliYmx1cmF5LWRldmVsIGxpYm5mcy1k ZXZlbCBmZm1wZWc0LWRldmVsCiAgZ2lmbGliLWRldmVsIGxpYnhzbHQtZGV2ZWwgZ251dGxzLWRl dmVsIGxpYnNzaC1kZXZlbCBsaWJtaWNyb2h0dHBkLWRldmVsCiAgbGliY2VjLWRldmVsIGRjYWRl Yy1kZXZlbCBmbGF0YnVmZmVycy1kZXZlbCBmbXQtZGV2ZWwgbGNtczItZGV2ZWwKICBsaWJmc3Ry Y21wLWRldmVsIHJhcGlkanNvbiBsaWJjZGlvLXBhcmFub2lhIHNwZGxvZyBsaWJ3YXlsYW5kcHAt ZGV2ZWwKCkZyb20gZDgzMmNkZDZjZmU4MGM4ZjQyOTg3ZTk3MTA4M2NmYzY1NDJlNGE4ZSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ3LzEx M10ga3BpcGV3aXJlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mva3BpcGV3 aXJlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9rcGlwZXdpcmUvdGVtcGxhdGUgYi9zcmNw a2dzL2twaXBld2lyZS90ZW1wbGF0ZQppbmRleCBkYjRlNDJmMGQ0NTZhLi4yMzM0YmY4Njc4MDYy IDEwMDY0NAotLS0gYS9zcmNwa2dzL2twaXBld2lyZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tw aXBld2lyZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tw aXBld2lyZScKIHBrZ25hbWU9a3BpcGV3aXJlCiB2ZXJzaW9uPTUuMjcuNgotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21h a2UtbW9kdWxlcyBwbGFzbWEtd2F5bGFuZC1wcm90b2NvbHMgZ2V0dGV4dAogIHF0NS1xbWFrZSBx dDUtaG9zdC10b29scyBwa2ctY29uZmlnIHdheWxhbmQtZGV2ZWwga2NvcmVhZGRvbnMKCkZyb20g YWI0ODc1ZjNkZWQ3NGY0OTdkOGM0OTI1NTNiY2IzOTRhY2Y4MjMwYiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ4LzExM10gbGliZXh0cmFj dG9yOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbGliZXh0cmFjdG9y L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUgYi9zcmNw a2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQppbmRleCBkZGQ0NzkwZjkzZTg4Li4xZmI5Y2E1NmE5 NmFlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQpAQCAtNyw3ICs3LDcgQEAgY29uZmlndXJlX2FyZ3M9 Ii0tZGlzYWJsZS1zdGF0aWMiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVw ZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBleGl2Mi1kZXZlbCB0aWZmLWRldmVsIGxpYnBu Zy1kZXZlbAogIGxpYmpwZWctdHVyYm8tZGV2ZWwgbGlidm9yYmlzLWRldmVsIGxpYmZsYWMtZGV2 ZWwgZ2lmbGliLWRldmVsIGxpYm1wZWcyLWRldmVsCi0gZmZtcGVnLWRldmVsIGd0ayszLWRldmVs IGxpYmx0ZGwtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbCBmaWxlLWRldmVsIGxpYmdzZi1kZXZlbCIK KyBmZm1wZWc0LWRldmVsIGd0ayszLWRldmVsIGxpYmx0ZGwtZGV2ZWwgbGliYXJjaGl2ZS1kZXZl bCBmaWxlLWRldmVsIGxpYmdzZi1kZXZlbCIKIHNob3J0X2Rlc2M9IkxpYnJhcnkgdXNlZCB0byBl eHRyYWN0IG1ldGEgZGF0YSBmcm9tIGZpbGVzIgogbWFpbnRhaW5lcj0iTWFydGluIFJpZXNlIDxn cmF1ZWhhYXJlQGdteC5kZT4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgoKRnJvbSBlN2Iw MGMzMTQyMmI1Nzc1OWU4NTI1ZDk3ZjgwMzg1YWFiZmEyNDM4IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDkvMTEzXSBsaWJvcGVuYWw6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlib3BlbmFsL3Rl bXBsYXRlCmluZGV4IDc3MjE4ZjllNTM5ZGYuLjNmNDllZDc1YTFmZGMgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGlib3BlbmFsJwogcGtnbmFt ZT1saWJvcGVuYWwKIHZlcnNpb249MS4yMi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWls ZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EQUxTT0ZUX0VYQU1QTEVTPU9GRiIKIGhv c3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gYjVmMzFmYmE5M2UxOWMzMWEwYzk2NDBh OGE4NDg4MjZjZGY0YWM1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDUwLzExM10gbGlib3BlbnNob3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bGlib3BlbnNob3QvdGVtcGxhdGUgYi9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlCmluZGV4 IGRiODMxZjY5YjQ3NGMuLjgxYWEwZDcxMzZkOTIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGlib3Bl bnNob3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xpYm9wZW5zaG90JwogcGtnbmFtZT1saWJv cGVuc2hvdAogdmVyc2lvbj0wLjMuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9Y21ha2UKICMgQnVpbGRzIGZhaWwgd2l0aCBSdWJ5LTIuNC4xCiBjb25maWd1cmVfYXJncz0i LURFTkFCTEVfUlVCWT1PRkYgLURVU0VfU1lTVEVNX0pTT05DUFA9T04iCgpGcm9tIGJkOGFlNGVi YmZmNTlhY2M2Yzc2ZjExNzJhNDc0ZmRhNzc2ZjEzM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1MS8xMTNdIGxvdWRnYWluOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBh dGNoIHwgMTEgKysrKysrKysrKysKIHNyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUgICAgICAgICAg ICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2ggYi9zcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4xNmQ0NTEwZWU5OGZhCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwx MSBAQAorLS0tIGEvc3JjL3NjYW4uYwkyMDE5LTA5LTA2IDExOjMxOjE5LjAwMDAwMDAwMCAtMDQw MAorKysrIGIvc3JjL3NjYW4uYwkyMDIzLTAzLTIzIDExOjE1OjQwLjg2Nzk2ODUyMSAtMDQwMAor QEAgLTY5LDggKzY5LDYgQEAKKyAJICogSXQgaXMgbm93IHVzZWxlc3MKKyAJICogaHR0cHM6Ly9n aXRodWIuY29tL0ZGbXBlZy9GRm1wZWcvYmxvYi83MGQyNTI2OGMyMWNiZWU1ZjA4MzA0ZGE5NWJl MWY2NDdjNjMwYzE1L2RvYy9BUEljaGFuZ2VzI0w4NgorIAkgKi8KKy0gIGlmIChhdmZvcm1hdF92 ZXJzaW9uKCkgPCBBVl9WRVJTSU9OX0lOVCg1OCw5LDEwMCkpCistICAgIGF2X3JlZ2lzdGVyX2Fs bCgpOworIAorIAlhdl9sb2dfc2V0X2NhbGxiYWNrKHNjYW5fYXZfbG9nKTsKKyAKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUgYi9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRl CmluZGV4IGRhNGYyZDU2ZTk0YzMuLjRkNmJmMjllZmI0ZmQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv bG91ZGdhaW4vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xvdWRnYWluJwogcGtnbmFtZT1sb3VkZ2Fp bgogdmVyc2lvbj0wLjYuOAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21h a2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJlYnVyMTI4 LWRldmVsIHRhZ2xpYi1kZXZlbCBmZm1wZWctZGV2ZWwiCgpGcm9tIDgwOTJhM2FiNzgzZmY2OTAz YWYyM2ZjNDQwNWE3MGNhNTZkOGU5NTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDgg LTA0MDAKU3ViamVjdDogW1BBVENIIDA1Mi8xMTNdIG1lZGlhc3RyZWFtZXI6IHJldmJ1bXAgZm9y IGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9tZWRpYXN0cmVhbWVyL3RlbXBsYXRlIHwgNCAr Ky0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWVkaWFz dHJlYW1lci90ZW1wbGF0ZQppbmRleCBkMGU5N2U4NThlMjlhLi4xYmRlMDMxNDQzYTU5IDEwMDY0 NAotLS0gYS9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tZWRp YXN0cmVhbWVyL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdtZWRpYXN0cmVhbWVyJwogcGtnbmFtZT1tZWRpYXN0cmVhbWVyCiB2ZXJzaW9uPTUuMi42Ci1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9 Ii1ERU5BQkxFX1NUUklDVD0wIC1ERU5BQkxFX1VOSVRfVEVTVFM9MCIKIGhvc3RtYWtlZGVwZW5k cz0icHl0aG9uMyIKLW1ha2VkZXBlbmRzPSJienJ0cC1kZXZlbCBmZm1wZWctZGV2ZWwgZ2xldy1k ZXZlbCBsaWJYdi1kZXZlbCBsaWJzcnRwLWRldmVsCittYWtlZGVwZW5kcz0iYnpydHAtZGV2ZWwg ZmZtcGVnNC1kZXZlbCBnbGV3LWRldmVsIGxpYlh2LWRldmVsIGxpYnNydHAtZGV2ZWwKICBsaWJ1 cG5wLWRldmVsIGxpYnZweC1kZXZlbCBtYmVkdGxzLWRldmVsIG9wdXMtZGV2ZWwgb3J0cC1kZXZl bCBwdWxzZWF1ZGlvLWRldmVsCiAgbGlidGhlb3JhLWRldmVsIHNwZWV4LWRldmVsIHY0bC11dGls cy1kZXZlbCBiY2c3MjktZGV2ZWwgYmNtYXRyb3NrYTItZGV2ZWwgbGliZ3NtLWRldmVsIgogIyB6 eGluZy1jcHAtZGV2ZWwgKDEuMi4wIHByb2JhYmx5IG5vdCBjb21wYXRpYmxlLCBjaGVjayBhZ2Fp biBhZnRlciB1cGRhaW5nIHh6aW5nKQoKRnJvbSBkMjE3MDU3Mjg3ZjU1ODlhYjk5NzA3NTIzYzll ZTRhMWYyMDcyYmU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNTMvMTEzXSBtZ2JhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvbWdiYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvbWdiYS90ZW1wbGF0ZQppbmRleCBhZTA1MDQzMTFlZWUwLi5kMzEyOTVhMGNkM2QzIDEw MDY0NAotLS0gYS9zcmNwa2dzL21nYmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tZ2JhL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWdiYScKIHBrZ25hbWU9 bWdiYQogdmVyc2lvbj0wLjEwLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFt YWtlIGRlc2t0b3AtZmlsZS11dGlscyIKIG1ha2VkZXBlbmRzPSJTREwyLWRldmVsIGZmbXBlZy1k ZXZlbCBsaWJlZGl0LWRldmVsIGxpYmVwb3h5LWRldmVsIGxpYm1hZ2ljay1kZXZlbAoKRnJvbSBj MTI0OWY0N2MyMWU3MDk4NTU5Yjc4MGEzMjFhYWJhM2NlOTc2YzRhIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTQvMTEzXSBtaW5pZGxuYTog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWluaWRsbmEvdGVt cGxhdGUKaW5kZXggZDU1MWU0OWVkNDY1My4uNWZhOTI5ZjNhMGMxMiAxMDA2NDQKLS0tIGEvc3Jj cGtncy9taW5pZGxuYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWluaWRsbmEnCiBwa2duYW1lPW1p bmlkbG5hCiB2ZXJzaW9uPTEuMy4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHls ZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iCiAgLS1zYmluZGlyPS91c3IvYmluCgpG cm9tIDRhZTRkZGY3MWEyZTE0MjkwZDkyMGUwYTEyZDI0ZTA4MDJlNjAxZDIgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1NS8xMTNdIG1peHh4 OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbWl4eHgvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL21peHh4L3RlbXBsYXRlIGIvc3JjcGtncy9taXh4eC90ZW1wbGF0ZQpp bmRleCA2MTlkZGNhMGQzMzI0Li40YjllYTAwZDNmYjNkIDEwMDY0NAotLS0gYS9zcmNwa2dzL21p eHh4L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtaXh4eCcKIHBrZ25hbWU9bWl4eHgKIHZlcnNpb249Mi4z LjMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVf YXJncz0iLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJh LWNtYWtlLW1vZHVsZXMgcGtnLWNvbmZpZyBwcm90b2J1ZiBxdDUtaG9zdC10b29scyBxdDUtZGV2 ZWwiCgpGcm9tIGE0NmU4MDQwOGI1OTU4YmQzMTE0YjM0MTJjOTg1ZGZjYzJmZTBmMzggTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1Ni8xMTNd IG1sdDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL21sdC90ZW1wbGF0 ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21sdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWx0L3RlbXBs YXRlCmluZGV4IDg5MzNlYjRlN2JiOWUuLjczMzUzZmVkYWZiNTAgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvbWx0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWx0L3RlbXBsYXRlCkBAIC0xLDE0ICsxLDE0 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtbHQnCiBwa2duYW1lPW1sdAogdmVyc2lvbj02LjI2 LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNvbmZpZ3VyZQogY29uZmln dXJlX2FyZ3M9Ii0tcHJlZml4PS91c3IgLS1saWJkaXI9L3Vzci9saWIkWEJQU19UQVJHRVRfV09S RFNJWkUKICAtLWVuYWJsZS1ncGwgLS1lbmFibGUtZ3BsMyAtLWRpc2FibGUtc3dmZGVjIC0td2l0 aG91dC1rZGUKICAtLXN3aWctbGFuZ3VhZ2VzPXB5dGhvbiIKIGhvc3RtYWtlZGVwZW5kcz0iZG94 eWdlbiBwa2ctY29uZmlnIGxhZHNwYS1zZGsgc3dpZyBweXRob24zIHdoaWNoIgogIyBYWFg6IG1v dml0IHZpZC5zdGFiCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnLWRldmVsIGd0 aystZGV2ZWwgamFjay1kZXZlbCBsYWRzcGEtc2RrCittYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2 ZWwgZmZtcGVnNC1kZXZlbCBndGsrLWRldmVsIGphY2stZGV2ZWwgbGFkc3BhLXNkawogIGxpYmV4 aWYtZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJ4bWwyLWRldmVsIHNveC1kZXZlbCBTRExf aW1hZ2UtZGV2ZWwKICBmZnR3LWRldmVsIGZyZWkwci1wbHVnaW5zIHB5dGhvbjMtZGV2ZWwgcHVs c2VhdWRpby1kZXZlbCBtb3ZpdC1kZXZlbAogIGxpYnZpZHN0YWItZGV2ZWwgbGliYXRvbWljLWRl dmVsIgoKRnJvbSAxNGI5YzgzN2U0OWE4MTA2YTIzMmNmMzQ2MmUwZDY1MmZlNGY0YTAzIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTcvMTEz XSBtb2M6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9tb2MvdGVtcGxh dGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tb2MvdGVtcGxhdGUgYi9zcmNwa2dzL21vYy90ZW1w bGF0ZQppbmRleCBjNDJiZTY1MGExZDI1Li5kNGYwZWVmYmFkNTJkIDEwMDY0NAotLS0gYS9zcmNw a2dzL21vYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21vYy90ZW1wbGF0ZQpAQCAtMSwxMCArMSwx MCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbW9jJwogcGtnbmFtZT1tb2MKIHZlcnNpb249Mi41 LjIKLXJldmlzaW9uPTYKK3JldmlzaW9uPTcKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGhv c3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJkYi1kZXZlbCBuY3Vyc2Vz LWRldmVsIGxpYmN1cmwtZGV2ZWwgcG9wdC1kZXZlbCBmZm1wZWctZGV2ZWwKK21ha2VkZXBlbmRz PSJkYi1kZXZlbCBuY3Vyc2VzLWRldmVsIGxpYmN1cmwtZGV2ZWwgcG9wdC1kZXZlbCBmZm1wZWc0 LWRldmVsCiAgamFjay1kZXZlbCBhbHNhLWxpYi1kZXZlbCBsaWJsdGRsLWRldmVsIGxpYmZsYWMt ZGV2ZWwgbGlidm9yYmlzLWRldmVsCiAgbGlibWFkLWRldmVsIGxpYm1wY2RlYy1kZXZlbCBsaWJt b2RwbHVnLWRldmVsIGxpYmlkM3RhZy1kZXZlbCBmYWFkMi1kZXZlbAogIHRhZ2xpYi1kZXZlbCBs aWJzbmRmaWxlLWRldmVsIHdhdnBhY2stZGV2ZWwgc3BlZXgtZGV2ZWwgbGlic2FtcGxlcmF0ZS1k ZXZlbAoKRnJvbSA4MTMzNjJlYzBjYzcwNTk5NDFmMDk2N2RmZmRmMDMyZWNiOWE2Y2ZiIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTgvMTEz XSBtb3Rpb246IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9tb3Rpb24vdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZSBiL3NyY3BrZ3MvbW90aW9u L3RlbXBsYXRlCmluZGV4IDNjZjNjMzAzNWM1YjcuLjdkY2ExMmQ4NTFlMzMgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbW90aW9uJwogcGtnbmFtZT1tb3Rp b24KIHZlcnNpb249NC41LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdu dS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgcGtnLWNvbmZpZyBnZXR0ZXh0 LWRldmVsIHRhciIKIG1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGlibWljcm9odHRwZC1kZXZl bCB2NGwtdXRpbHMtZGV2ZWwgZ2V0dGV4dC1kZXZlbCIKCkZyb20gMWZkMzU5YjY3YmY2MDhiYzgw Y2RkMDU3YWJhMDMyNjQyYTcyZTFkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU5LzExM10gbXB2OiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvbXB2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tcHYvdGVtcGxh dGUgYi9zcmNwa2dzL21wdi90ZW1wbGF0ZQppbmRleCBlMTYzYzQ5NmM2ZWJiLi5kNGZlZmJmNWUz YzdjIDEwMDY0NAotLS0gYS9zcmNwa2dzL21wdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21wdi90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21wdicKIHBrZ25h bWU9bXB2CiB2ZXJzaW9uPTAuMzUuMQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5 bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRGNkZGE9ZW5hYmxlZCAtRGR2YmluPWVuYWJsZWQg LURkdmRuYXY9ZW5hYmxlZAogIC1EbGlibXB2PXRydWUgLURjcGx1Z2lucz1lbmFibGVkCgpGcm9t IGM4YzU5M2RhODFjZWZmMjk0ODYwZmNmY2I0N2U1ZjE2NTNjMTU2ZDEgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2MC8xMTNdIG11c2lrY3Vi ZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL211c2lrY3ViZS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlIGIvc3JjcGtncy9tdXNpa2N1 YmUvdGVtcGxhdGUKaW5kZXggN2M1NjkzMDNjMDU0My4uYTRkZWE0NjBjMzcxNyAxMDA2NDQKLS0t IGEvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tdXNpa2N1YmUvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtdXNpa2N1YmUnCiBw a2duYW1lPW11c2lrY3ViZQogdmVyc2lvbj0zLjAuMAotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIG1ha2VfY21kPW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE5PX05D VVJTRVNXPTEiCgpGcm9tIDM2OTk0M2YwZjQ0YWY3ZTM0OGQ0ZWJhMmI3ZjRmYmFiOGUzOTUyOWQg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2 MS8xMTNdIG5vdGN1cnNlczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL25v dGN1cnNlcy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlIGIv c3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUKaW5kZXggNmRkOGEwOTEzMTlmNy4uMzExMGMzMGM5 YWZmMiAxMDA2NDQKLS0tIGEvc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9ub3RjdXJzZXMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdub3RjdXJzZXMnCiBwa2duYW1lPW5vdGN1cnNlcwogdmVyc2lvbj0zLjAuOQotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFVTRV9T VEFUSUM9T04gJCh2b3B0X2Jvb2wgbWFuIFVTRV9QQU5ET0MpIgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnICQodm9wdF9pZiBtYW4gcGFuZG9jKSIKCkZyb20gOGEzMGNmOWU2YTg0M2UxZjAw ZmY3YzlhZmM4NjA0OTZiMWM3ZmExOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYyLzExM10gb2JzOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3Mvb2JzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vYnMvdGVtcGxh dGUgYi9zcmNwa2dzL29icy90ZW1wbGF0ZQppbmRleCA3YjY5YzYzMGQzMGQ0Li4yYzhkNjhkNzFm M2ExIDEwMDY0NAotLS0gYS9zcmNwa2dzL29icy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29icy90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29icycKIHBrZ25h bWU9b2JzCiB2ZXJzaW9uPTI5LjEuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYXJjaHM9Imk2 ODYqIHg4Nl82NCogcHBjNjRsZSogYWFyY2g2NCoiCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmln dXJlX2FyZ3M9Ii1ET0JTX1ZFUlNJT05fT1ZFUlJJREU9JHt2ZXJzaW9ufSAtREVOQUJMRV9KQUNL PU9OCgpGcm9tIDdkNDU0MDI1OWUyZDcyYTU5ZjUxNDQ5N2Y1YjZlMGQzMDAzYjRmZWQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2My8xMTNd IG9saXZlOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb2xpdmUvdGVt cGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb2xp dmUvdGVtcGxhdGUKaW5kZXggMTJhNDY5MzZjOTkwMC4uNWMyOTE3YjljNTEyNCAxMDA2NDQKLS0t IGEvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29saXZlL3RlbXBsYXRlCkBA IC0xLDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvbGl2ZScKIHBrZ25hbWU9b2xp dmUKIHZlcnNpb249MC4xLjIKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPXFt YWtlCiBob3N0bWFrZWRlcGVuZHM9InF0NS1xbWFrZSBxdDUtaG9zdC10b29scyBwa2ctY29uZmln IgotbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtc3ZnLWRl dmVsIGZmbXBlZy1kZXZlbCBmcmVpMHItcGx1Z2lucyIKK21ha2VkZXBlbmRzPSJxdDUtZGV2ZWwg cXQ1LW11bHRpbWVkaWEtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBmZm1wZWc0LWRldmVsIGZyZWkwci1w bHVnaW5zIgogc2hvcnRfZGVzYz0iTm9uLWxpbmVhciB2aWRlbyBlZGl0b3IiCiBtYWludGFpbmVy PSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vci1s YXRlciIKCkZyb20gNTA4ZmZiZWMyMDQzYTMzMWMwMDY2OTgxNmM4MzA3NGY2MmRkNGU1YyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY0LzEx M10gb214cGxheWVyOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb214 cGxheWVyL3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMo KyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxh dGUgYi9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQppbmRleCBlNzBiZjc4NzNkNGRlLi4wZTli YzcwZTdjOGViIDEwMDY0NAotLS0gYS9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnb214cGxheWVyJwogcGtnbmFtZT1vbXhwbGF5ZXIKIHZlcnNpb249MjAxOTAxMDIK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIHNob3J0X2Rlc2M9IkNvbW1hbmRsaW5lIE9NWCBwbGF5 ZXIgZm9yIHRoZSBSYXNwYmVycnkgUGkiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZv aWRsaW51eC5vcmc+IgotbGljZW5zZT0iR1BMLTIiCitsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVy IgogaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9wb3Bjb3JubWl4L29teHBsYXllciIKIAog X2NvbW1pdD0iZjA2MjM1Y2M5NjkwYTZkNTgxODc1MTQ0NTJkZjhjZjhmY2RhYWNlYyIKQEAgLTE1 LDcgKzE1LDcgQEAgY2hlY2tzdW09YWYyZDk0NTBmODk0Nzg0MmVhOGM0MDFmZTlmNzFlZWM0NDQw MTNlYmJkZWUyOWYyYWM4MjhjOWM0OTNjMTMyOQogYXJjaHM9ImFybXY2bCogYXJtdjdsKiIKIGJ1 aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogaG9zdG1ha2VkZXBlbmRzPSJjdXJsIHBrZy1jb25maWci Ci1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgcnBpLXVzZXJsYW5kLWRldmVsIHBjcmUtZGV2 ZWwgYm9vc3QtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgZmZtcGVnLWRldmVsIGRidXMtZGV2ZWwiCitt YWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgcnBpLXVzZXJsYW5kLWRldmVsIHBjcmUtZGV2ZWwg Ym9vc3QtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgZmZtcGVnNC1kZXZlbCBkYnVzLWRldmVsIgogZGVw ZW5kcz0iZnJlZWZvbnQtdHRmIgogCiBkb19idWlsZCgpIHsKCkZyb20gMzQ2MWMyZTEyZTA5NzQx MjQ2ODliYTdjMjU0MWU1OTczODY2NWZkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1 MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY1LzExM10gb3BlbmltYWdlaW86IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogZXRjL3hicHMuZC9yZXBvcy1yZW1vdGUuY29uZiB8IDQgKysrKwog c3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZSB8IDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNSBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZXRjL3hicHMuZC9yZXBv cy1yZW1vdGUuY29uZiBiL2V0Yy94YnBzLmQvcmVwb3MtcmVtb3RlLmNvbmYKaW5kZXggZTE3MWVk NTNjMmQ0Yi4uMDE0YzAwNzRkM2IzMyAxMDA2NDQKLS0tIGEvZXRjL3hicHMuZC9yZXBvcy1yZW1v dGUuY29uZgorKysgYi9ldGMveGJwcy5kL3JlcG9zLXJlbW90ZS5jb25mCkBAIC0zLDMgKzMsNyBA QCByZXBvc2l0b3J5PWh0dHBzOi8vcmVwby1kZWZhdWx0LnZvaWRsaW51eC5vcmcvY3VycmVudC9i b290c3RyYXAKIHJlcG9zaXRvcnk9aHR0cHM6Ly9yZXBvLWRlZmF1bHQudm9pZGxpbnV4Lm9yZy9j dXJyZW50CiByZXBvc2l0b3J5PWh0dHBzOi8vcmVwby1kZWZhdWx0LnZvaWRsaW51eC5vcmcvY3Vy cmVudC9ub25mcmVlCiByZXBvc2l0b3J5PWh0dHBzOi8vcmVwby1kZWZhdWx0LnZvaWRsaW51eC5v cmcvY3VycmVudC9kZWJ1ZworI3JlcG9zaXRvcnk9aHR0cHM6Ly9taXJyb3JzLnNlcnZlcmNlbnRy YWwuY29tL3ZvaWRsaW51eC9jdXJyZW50L2Jvb3RzdHJhcAorI3JlcG9zaXRvcnk9aHR0cHM6Ly9t aXJyb3JzLnNlcnZlcmNlbnRyYWwuY29tL3ZvaWRsaW51eC9jdXJyZW50CisjcmVwb3NpdG9yeT1o dHRwczovL21pcnJvcnMuc2VydmVyY2VudHJhbC5jb20vdm9pZGxpbnV4L2N1cnJlbnQvbm9uZnJl ZQorI3JlcG9zaXRvcnk9aHR0cHM6Ly9taXJyb3JzLnNlcnZlcmNlbnRyYWwuY29tL3ZvaWRsaW51 eC9jdXJyZW50L2RlYnVnCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRl IGIvc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZQppbmRleCAwZTllMjJlOTY4NWQ5Li5lNzRh OGRiZDY4M2U0IDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdvcGVuaW1hZ2VpbycKIHBrZ25hbWU9b3BlbmltYWdlaW8KIHZlcnNpb249Mi40 LjkuMAotcmV2aXNpb249NQorcmV2aXNpb249NgogYnVpbGRfc3R5bGU9Y21ha2UKIGJ1aWxkX2hl bHBlcj1xZW11CiBjb25maWd1cmVfYXJncz0iLURVU0VfUVQ9MCAtRFVTRV9QWVRIT049MCAtRE9J SU9fQlVJTERfVEVTVFM9MAoKRnJvbSAxNWY1ZjFhYjZmZjIwOTMyNGUzYWU4YWMyYmEwYzU1M2Fk NmZhNmRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwNjYvMTEzXSBvcGVuc2hvdDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL29wZW5zaG90L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUKaW5kZXggMzIyNzE3ZDQwYWJjMC4uYzA3NGUw MzM4NzczYiAxMDA2NDQKLS0tIGEvc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL29wZW5zaG90L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnb3BlbnNob3QnCiBwa2duYW1lPW9wZW5zaG90CiB2ZXJzaW9uPTMuMC4wCi1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1weXRob24zLW1vZHVsZQogaG9zdG1ha2VkZXBlbmRz PSJweXRob24zIHB5dGhvbjMtc2V0dXB0b29scyIKIG1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwg cHl0aG9uMy1QeVF0NSIKCkZyb20gNTM4MTFhZTljYjkyYjk1OWUwYjY5MDViYzM0YjY0ZDhmMmQx OTg0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDY3LzExM10gb3BlbnRvb256OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3Mvb3BlbnRvb256L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVudG9vbnovdGVtcGxh dGUgYi9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZQppbmRleCBlZTlmNzYwM2Y1NWZkLi4zZTgx ODM0Y2EwZWRkIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL29wZW50b29uei90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ29wZW50b29ueicKIHBrZ25hbWU9b3BlbnRvb256CiB2ZXJzaW9uPTEuNi4wCi1yZXZp c2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF93cmtzcmM9InRvb256L3NvdXJjZXMiCiBidWlsZF9z dHlsZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQoKRnJvbSA3OTJhYjI3YzMxZWQ4NGQ1MmY0NzQxNTg1 NWE1ZTEzNTBhZWQ2MTU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwNjgvMTEzXSBwaWFub2JhcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9waWFub2Jh ci90ZW1wbGF0ZSBiL3NyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUKaW5kZXggZTNmZWJiODIxYTQ1 MS4uMWUzZGMxYmY5MzA4ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAncGlhbm9iYXInCiBwa2duYW1lPXBpYW5vYmFyCiB2ZXJzaW9uPTIwMjIuMDQu MDEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogbWFr ZV9idWlsZF9hcmdzPSJWPTEiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIDQy M2EwZTFhMWZhYzExMjI0ZjExY2UzMTNiMGI1NGRkZjI2ZDU2NjMgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2OS8xMTNdIHBwc3NwcDogcmV2 YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZSB8IDcg KysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHBzc3BwL3Rl bXBsYXRlCmluZGV4IDc5ODRhNzMzZDRiZWEuLjE1YTQyZmQyYzk5M2UgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvcHBzc3BwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHBzc3BwJwogcGtnbmFtZT1wcHNzcHAK IHZlcnNpb249MS4xNC40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfZ2xzbGFuZ19jb21taXQ9 ZGMxMWFkZGUyM2M0NTVhMjRlMTNkZDU0ZGU5YjRlZGU4YmRkN2RiOAogX1NQSVJWX0Nyb3NzX2Nv bW1pdD05YWNiOWVjMzFmNWE4ZWY4MGVhNmI5OTRiYjc3YmU3ODdiMDhkM2QxCiBfYXJtaXBzX2Nv bW1pdD02NzE5ZWRlYmFhZTAzMzMwZWU1NDQxZDliMjgyODA2NzJlZGYwMGQ1CkBAIC0xMyw3ICsx Myw3IEBAIGNvbmZpZ3VyZV9hcmdzPSItREhFQURMRVNTPTEgLURVU0VfU1lTVEVNX0ZGTVBFRz0x IC1EVU5JVFRFU1Q9T04KICAtRFVTSU5HX1FUX1VJPSQodm9wdF9pZiBxdCBPTiBPRkYpIC1EVVNF X1NZU1RFTV9aU1REPU9OCiAgLURBUk1JUFNfVVNFX1NURF9GSUxFU1lTVEVNPU9OIgogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIHB5dGhvbjMgJCh2b3B0X2lmIHF0IHF0NS1ob3N0LXRvb2xz KSIKLW1ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGdsZXctZGV2ZWwgZmZtcGVnLWRldmVsIGxpYnpp cC1kZXZlbAorbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgZ2xldy1kZXZlbCBmZm1wZWc0LWRldmVs IGxpYnppcC1kZXZlbAogIHNuYXBweS1kZXZlbCByYXBpZGpzb24gbGlicG5nLWRldmVsIGxpYnpz dGQtZGV2ZWwKICAkKHZvcHRfaWYgc2RsMiBTREwyLWRldmVsKSAkKHZvcHRfaWYgd2F5bGFuZCB3 YXlsYW5kLWRldmVsKQogICQodm9wdF9pZiBxdCAncXQ1LWRldmVsIHF0NS1tdWx0aW1lZGlhLWRl dmVsJykiCkBAIC02MiwxMyArNjIsMTIgQEAgcG9zdF9leHRyYWN0KCkgewogCW12ICR7d3Jrc3Jj fS9taW5pdXBucC0ke19taW5pdXBucF9jb21taXR9ICR7d3Jrc3JjfS9leHQvbWluaXVwbnAKIH0K IAotcG9zdF9wYXRjaCgpeworcG9zdF9wYXRjaCgpIHsKIAkjIGRpc2FibGUgZ2l0IHZlcnNpb25p bmcKIAl2c2VkIC1lICdzfGZpbmRfcGFja2FnZShHaXQpfCMgJnwnIC1pIGdpdC12ZXJzaW9uLmNt YWtlCiB9CiAKIGRvX2luc3RhbGwoKSB7Ci0JdmxpY2Vuc2UgTElDRU5TRS5UWFQKIAl2aW5zdGFs bCBpY29ucy9pY29uLnN2ZyA2NDQgdXNyL3NoYXJlL3BpeG1hcHMgcHBzc3BwLnN2ZwogCXZpbnN0 YWxsIFF0L1BQU1NQUC5kZXNrdG9wIDY0NCB1c3Ivc2hhcmUvYXBwbGljYXRpb25zCiAJdmJpbiBi dWlsZC9QUFNTUFBIZWFkbGVzcyBwcHNzcHAtaGVhZGxlc3MKCkZyb20gM2JhYTBmMzQ5NGVkOTZh NjQzNDAyOTc5MzY3NzRiNGEzZGZjZjE4YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1 MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDcwLzExM10gcHFpdjogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL3BxaXYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3BxaXYv dGVtcGxhdGUgYi9zcmNwa2dzL3BxaXYvdGVtcGxhdGUKaW5kZXggNTQyZmMyN2EyZDMyYS4uOTMw OGQ5NDliNmExYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9wcWl2L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvcHFpdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Bx aXYnCiBwa2duYW1lPXBxaXYKIHZlcnNpb249Mi4xMgotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBt YWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBndGsrMy1kZXZlbCAkKHZvcHRfaWYgZmZtcGVnIGZmbXBl Zy1kZXZlbCkKCkZyb20gYWRhZDUyYTg2M2JmZjI1NzM2NWZjN2RmMmY3ZDk0NjgwNjFiZjJkMCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDcx LzExM10gcW1tcDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3FtbXAvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3FtbXAvdGVtcGxhdGUgYi9zcmNwa2dzL3FtbXAvdGVt cGxhdGUKaW5kZXggMjZjNjYxZWQxNmJlYS4uYTE1MGQ3NDQxYzdhNiAxMDA2NDQKLS0tIGEvc3Jj cGtncy9xbW1wL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3FtbXAnCiBwa2duYW1lPXFtbXAKIHZlcnNpb249 MS42LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1 cmVfYXJncz0iLURVU0VfSEFMOkJPT0w9RkFMU0UgLURRTU1QX0RFRkFVTFRfVUk6U1RSSU5HPXNp bXBsZSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1h a2UiCgpGcm9tIGMwMzcyOGU2NTkyODA4NWM4YTEwNzZjYWM5ZGFkN2M3MTlkOWI4ZjAgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3Mi8xMTNd IHF0NS13ZWJlbmdpbmU6IHVwZGF0ZSB0byA1LjE1LjEzCgotLS0KIC4uLi9jaHJvbWl1bS1tZWRp YS1maWx0ZXJzLWNwcDE0LnBhdGNoICAgICAgICB8ICAxMSArKwogc3JjcGtncy9xdDUtd2ViZW5n aW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCAgIHwgMTc5ICsrKysrKysrKysrKysrKysrKwogc3Jj cGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlICAgICAgICAgICAgICAgIHwgIDEwICstCiAzIGZp bGVzIGNoYW5nZWQsIDE5NSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZp bHRlcnMtY3BwMTQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5n aW5lL3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaCBiL3NyY3BrZ3Mv cXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMDRhZGM1NDBmMmNiYwot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVt LW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIGEvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvQlVJTEQuZ24JMjAyMy0wMi0yNyAxMzozMjo1 OS4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0 ZXJzL0JVSUxELmduCTIwMjMtMDQtMDIgMTc6MjE6MzkuMjA0MDY2Mzg0IC0wNDAwCitAQCAtOTYs NiArOTYsOCBAQAorICAgICAiLy91aS9nZngvZ2VvbWV0cnk6Z2VvbWV0cnkiLAorICAgXQorIAor KyAgY2ZsYWdzX2NjID0gWyAiLXN0ZD1jKysxNCIgXQorKworICAgbGlicyA9IFtdCisgCisgICBp ZiAocHJvcHJpZXRhcnlfY29kZWNzKSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv ZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5h YzU1ZTE2MzQ0MjNhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3Bh dGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDE3OSBAQAorLS0tIGEvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJMjAyMy0wNC0wMiAxNjo1 MDo1Ny43MzI1NDc0NDYgLTA0MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9m aWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCTIwMjMtMDQtMDIgMTY6NTA6MDkuNDg2NDc4OTk1IC0w NDAwCitAQCAtNTcsNiArNTcsOCBAQAorIAorIG5hbWVzcGFjZSB7CisgCisrY29uc3RleHByIGlu dDY0X3Qga1JlbGF0aXZlVHNCYXNlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oMHg3ZmZlZmZmZmZm ZmZmZmZmKTsKKysKKyB2b2lkIFNldEFWU3RyZWFtRGlzY2FyZChBVlN0cmVhbSogc3RyZWFtLCBB VkRpc2NhcmQgZGlzY2FyZCkgeworICAgRENIRUNLKHN0cmVhbSk7CisgICBzdHJlYW0tPmRpc2Nh cmQgPSBkaXNjYXJkOworQEAgLTkwLDI0ICs5MiwxMiBAQAorIAorIHN0YXRpYyBiYXNlOjpUaW1l RGVsdGEgRXh0cmFjdFN0YXJ0VGltZShBVlN0cmVhbSogc3RyZWFtKSB7CisgICAvLyBUaGUgZGVm YXVsdCBzdGFydCB0aW1lIGlzIHplcm8uCistICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZTsK KysgIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lID0ga05vVGltZXN0YW1wOworIAorICAgLy8g Rmlyc3QgdHJ5IHRvIHVzZSAgdGhlIHxzdGFydF90aW1lfCB2YWx1ZSBhcyBpcy4KKyAgIGlmIChz dHJlYW0tPnN0YXJ0X3RpbWUgIT0ga05vRkZtcGVnVGltZXN0YW1wKQorICAgICBzdGFydF90aW1l ID0gQ29udmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3RyZWFtLT5zdGFydF90 aW1lKTsKKyAKKy0gIC8vIE5leHQgdHJ5IHRvIHVzZSB0aGUgZmlyc3QgRFRTIHZhbHVlLCBmb3Ig Y29kZWNzIHdoZXJlIHdlIGtub3cgUFRTID09IERUUworLSAgLy8gKGV4Y2x1ZGVzIGFsbCBIMjZ4 IGNvZGVjcykuIFRoZSBzdGFydCB0aW1lIG11c3QgYmUgcmV0dXJuZWQgaW4gUFRTLgorLSAgaWYg KHN0cmVhbS0+Zmlyc3RfZHRzICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCAmJgorLSAgICAgIHN0cmVh bS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0hFVkMgJiYKKy0gICAgICBzdHJl YW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IMjY0ICYmCistICAgICAgc3Ry ZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfTVBFRzQpIHsKKy0gICAgY29u c3QgYmFzZTo6VGltZURlbHRhIGZpcnN0X3B0cyA9CistICAgICAgICBDb252ZXJ0RnJvbVRpbWVC YXNlKHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPmZpcnN0X2R0cyk7CistICAgIGlmIChmaXJz dF9wdHMgPCBzdGFydF90aW1lKQorLSAgICAgIHN0YXJ0X3RpbWUgPSBmaXJzdF9wdHM7CistICB9 CistCisgICByZXR1cm4gc3RhcnRfdGltZTsKKyB9CisgCitAQCAtNDA4LDExICszOTgsMTEgQEAK KyAgIHNjb3BlZF9yZWZwdHI8RGVjb2RlckJ1ZmZlcj4gYnVmZmVyOworIAorICAgaWYgKHR5cGUo KSA9PSBEZW11eGVyU3RyZWFtOjpURVhUKSB7CistICAgIGludCBpZF9zaXplID0gMDsKKysgICAg c2l6ZV90IGlkX3NpemUgPSAwOworICAgICB1aW50OF90KiBpZF9kYXRhID0gYXZfcGFja2V0X2dl dF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1dFQlZUVF9J REVOVElGSUVSLCAmaWRfc2l6ZSk7CisgCistICAgIGludCBzZXR0aW5nc19zaXplID0gMDsKKysg ICAgc2l6ZV90IHNldHRpbmdzX3NpemUgPSAwOworICAgICB1aW50OF90KiBzZXR0aW5nc19kYXRh ID0gYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BL VF9EQVRBX1dFQlZUVF9TRVRUSU5HUywgJnNldHRpbmdzX3NpemUpOworIAorQEAgLTQyNCw3ICs0 MTQsNyBAQAorICAgICBidWZmZXIgPSBEZWNvZGVyQnVmZmVyOjpDb3B5RnJvbShwYWNrZXQtPmRh dGEsIHBhY2tldC0+c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2lkZV9kYXRhLmRhdGEoKSwgc2lkZV9kYXRhLnNpemUoKSk7CisgICB9IGVsc2UgeworLSAgICBp bnQgc2lkZV9kYXRhX3NpemUgPSAwOworKyAgICBzaXplX3Qgc2lkZV9kYXRhX3NpemUgPSAwOwor ICAgICB1aW50OF90KiBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAgICAg ICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFMLCAm c2lkZV9kYXRhX3NpemUpOworIAorQEAgLTQ4NSw3ICs0NzUsNyBAQAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldC0+c2l6ZSAtIGRhdGFfb2Zmc2V0KTsKKyAg ICAgfQorIAorLSAgICBpbnQgc2tpcF9zYW1wbGVzX3NpemUgPSAwOworKyAgICBzaXplX3Qgc2tp cF9zYW1wbGVzX3NpemUgPSAwOworICAgICBjb25zdCB1aW50MzJfdCogc2tpcF9zYW1wbGVzX3B0 ciA9CisgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXZfcGFja2V0 X2dldF9zaWRlX2RhdGEoCisgICAgICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9T S0lQX1NBTVBMRVMsICZza2lwX3NhbXBsZXNfc2l6ZSkpOworQEAgLTE1ODcsNiArMTU3Nyw4IEBA CisgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHN0cmVhbXNfKSB7CisgICAgIGlmICghc3Ry ZWFtIHx8IHN0cmVhbS0+SXNFbmFibGVkKCkgIT0gZW5hYmxlZCkKKyAgICAgICBjb250aW51ZTsK KysgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9QVFNfVkFM VUUpCisrICAgICAgY29udGludWU7CisgICAgIGlmICghbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFt IHx8CisgICAgICAgICBzdHJlYW0tPnN0YXJ0X3RpbWUoKSA8IGxvd2VzdF9zdGFydF90aW1lX3N0 cmVhbS0+c3RhcnRfdGltZSgpKSB7CisgICAgICAgbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtID0g c3RyZWFtLmdldCgpOworQEAgLTE2MDQsNiArMTU5Niw4IEBACisgICAgIGlmIChzdHJlYW0gJiYg c3RyZWFtLT50eXBlKCkgPT0gRGVtdXhlclN0cmVhbTo6VklERU8gJiYKKyAgICAgICAgIHN0cmVh bS0+SXNFbmFibGVkKCkpIHsKKyAgICAgICB2aWRlb19zdHJlYW0gPSBzdHJlYW0uZ2V0KCk7Cisr ICAgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9QVFNfVkFM VUUpCisrICAgICAgICBjb250aW51ZTsKKyAgICAgICBpZiAodmlkZW9fc3RyZWFtLT5zdGFydF90 aW1lKCkgPD0gc2Vla190aW1lKSB7CisgICAgICAgICByZXR1cm4gdmlkZW9fc3RyZWFtOworICAg ICAgIH0KK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkv Y2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaCBxdHdlYmVuZ2luZS01LjE1LjEw L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oCistLS0g YS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaAkyMDIy LTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmgJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTcx OTI3ODggLTA1MDAKK0BAIC0yOSw2ICsyOSw3IEBAIGV4dGVybiAiQyIgeworICNpbmNsdWRlIDxs aWJhdmZvcm1hdC9hdmZvcm1hdC5oPgorICNpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmlvLmg+Cisg I2luY2x1ZGUgPGxpYmF2dXRpbC9hdnV0aWwuaD4KKysjaW5jbHVkZSA8bGliYXZ1dGlsL2NoYW5u ZWxfbGF5b3V0Lmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9pbWd1dGlscy5oPgorICNpbmNsdWRl IDxsaWJhdnV0aWwvbG9nLmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9tYXN0ZXJpbmdfZGlzcGxh eV9tZXRhZGF0YS5oPgorZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjIHF0d2Vi ZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvYXVkaW9f ZmlsZV9yZWFkZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJz L2F1ZGlvX2ZpbGVfcmVhZGVyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAw CisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3Jl YWRlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAtMDUwMAorQEAgLTg1LDcgKzg1 LDcgQEAgYm9vbCBBdWRpb0ZpbGVSZWFkZXI6Ok9wZW5EZW11eGVyKCkgeworIH0KKyAKKyBib29s IEF1ZGlvRmlsZVJlYWRlcjo6T3BlbkRlY29kZXIoKSB7CistICBBVkNvZGVjKiBjb2RlYyA9IGF2 Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBB VkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2Rl Y19pZCk7CisgICBpZiAoY29kZWMpIHsKKyAgICAgLy8gTVAzIGRlY29kZXMgdG8gUzE2UCB3aGlj aCB3ZSBkb24ndCBzdXBwb3J0LCB0ZWxsIGl0IHRvIHVzZSBTMTYgaW5zdGVhZC4KKyAgICAgaWYg KGNvZGVjX2NvbnRleHRfLT5zYW1wbGVfZm10ID09IEFWX1NBTVBMRV9GTVRfUzE2UCkKK2RpZmYg LU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVk aWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19kZWNvZGVyLmNj CistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVkaW9f ZGVjb2Rlci5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MJ MjAyMi0wNy0xMSAyMjoxMjo0Ny45MTcxOTI3ODggLTA1MDAKK0BAIC0zMjksNyArMzI5LDcgQEAg Ym9vbCBGRm1wZWdBdWRpb0RlY29kZXI6OkNvbmZpZ3VyZURlY29kZQorICAgICB9CisgICB9Cisg CistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRf LT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNv ZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAoIWNvZGVjIHx8CisgICAgICAg YXZjb2RlY19vcGVuMihjb2RlY19jb250ZXh0Xy5nZXQoKSwgY29kZWMsICZjb2RlY19vcHRpb25z KSA8IDApIHsKKyAgICAgRExPRyhFUlJPUikgPDwgIkNvdWxkIG5vdCBpbml0aWFsaXplIGF1ZGlv IGRlY29kZXI6ICIKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3Jk cGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYyBxdHdlYmVuZ2luZS01 LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNj CistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5j YwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MJMjAyMi0wNy0xMSAyMjoxMjo0 Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC01OSw3ICs1OSw2IEBAIHN0YXRpYyBpbnQ2NF90IEFWSU9T ZWVrT3BlcmF0aW9uKHZvaWQqIG8KKyB9CisgCisgdm9pZCBGRm1wZWdHbHVlOjpJbml0aWFsaXpl RkZtcGVnKCkgeworLSAgYXZfcmVnaXN0ZXJfYWxsKCk7CisgfQorIAorIHN0YXRpYyB2b2lkIExv Z0NvbnRhaW5lcihib29sIGlzX2xvY2FsX2ZpbGUsCitAQCAtOTUsOSArOTQsNiBAQCBGRm1wZWdH bHVlOjpGRm1wZWdHbHVlKEZGbXBlZ1VSTFByb3RvY29sCisgICAvLyBFbmFibGUgZmFzdCwgYnV0 IGluYWNjdXJhdGUgc2Vla3MgZm9yIE1QMy4KKyAgIGZvcm1hdF9jb250ZXh0Xy0+ZmxhZ3MgfD0g QVZGTVRfRkxBR19GQVNUX1NFRUs7CisgCistICAvLyBFbnN1cmVzIHdlIGNhbiByZWFkIG91dCB2 YXJpb3VzIG1ldGFkYXRhIGJpdHMgbGlrZSB2cDggYWxwaGEuCistICBmb3JtYXRfY29udGV4dF8t PmZsYWdzIHw9IEFWRk1UX0ZMQUdfS0VFUF9TSURFX0RBVEE7CistCisgICAvLyBFbnN1cmVzIGZv cm1hdCBwYXJzaW5nIGVycm9ycyB3aWxsIGJhaWwgb3V0LiBGcm9tIGFuIGF1ZGl0IG9uIDExLzIw MTcsIGFsbAorICAgLy8gaW5zdGFuY2VzIHdlcmUgcmVhbCBmYWlsdXJlcy4gU29sdmVzIGJ1Z3Mg bGlrZSBodHRwOi8vY3JidWcuY29tLzcxMDc5MS4KKyAgIGZvcm1hdF9jb250ZXh0Xy0+ZXJyb3Jf cmVjb2duaXRpb24gfD0gQVZfRUZfRVhQTE9ERTsKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUu MTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlk ZW9fZGVjb2Rlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9t ZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjCistLS0gYS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5jYwkyMDIyLTA1LTIz IDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21l ZGlhL2ZpbHRlcnMvZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45 MTgxOTI3NzkgLTA1MDAKK0BAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBGRm1wZWdWaWRlb0RlY29k ZXI6OkNvbmZpZ3VyZURlY29kZQorICAgaWYgKGRlY29kZV9uYWx1c18pCisgICAgIGNvZGVjX2Nv bnRleHRfLT5mbGFnczIgfD0gQVZfQ09ERUNfRkxBRzJfQ0hVTktTOworIAorLSAgQVZDb2RlYyog Y29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOwor KyAgY29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250 ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKCFjb2RlYyB8fCBhdmNvZGVjX29wZW4yKGNvZGVjX2Nv bnRleHRfLmdldCgpLCBjb2RlYywgTlVMTCkgPCAwKSB7CisgICAgIFJlbGVhc2VGRm1wZWdSZXNv dXJjZXMoKTsKKyAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4x NS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2ZpbGVf Y2hlY2tlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRp YS9maWx0ZXJzL21lZGlhX2ZpbGVfY2hlY2tlci5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjCTIwMjItMDUtMjMgMDY6Mzg6 NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmls dGVycy9tZWRpYV9maWxlX2NoZWNrZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3Nzkg LTA1MDAKK0BAIC02OCw3ICs2OCw3IEBAIGJvb2wgTWVkaWFGaWxlQ2hlY2tlcjo6U3RhcnQoYmFz ZTo6VGltZUQKKyAgICAgICBhdXRvIGNvbnRleHQgPSBBVlN0cmVhbVRvQVZDb2RlY0NvbnRleHQo Zm9ybWF0X2NvbnRleHQtPnN0cmVhbXNbaV0pOworICAgICAgIGlmICghY29udGV4dCkKKyAgICAg ICAgIGNvbnRpbnVlOworLSAgICAgIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29k ZXIoY3AtPmNvZGVjX2lkKTsKKysgICAgICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNf ZmluZF9kZWNvZGVyKGNwLT5jb2RlY19pZCk7CisgICAgICAgaWYgKGNvZGVjICYmIGF2Y29kZWNf b3BlbjIoY29udGV4dC5nZXQoKSwgY29kZWMsIG51bGxwdHIpID49IDApIHsKKyAgICAgICAgIGF1 dG8gbG9vcCA9IHN0ZDo6bWFrZV91bmlxdWU8RkZtcGVnRGVjb2RpbmdMb29wPihjb250ZXh0Lmdl dCgpKTsKKyAgICAgICAgIHN0cmVhbV9jb250ZXh0c1tpXSA9IHtzdGQ6Om1vdmUoY29udGV4dCks IHN0ZDo6bW92ZShsb29wKX07CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv ZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYyBxdHdlYmVuZ2luZS01LjE1LjEw L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19j b2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz L2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAg LTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9k dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MJMjAyMi0w Ny0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC0yMDMsNyArMjAzLDcgQEAgaW50MzJf dCBIMjY0RGVjb2RlckltcGw6OkluaXREZWNvZGUoY29ucworICAgLy8gYSBwb2ludGVyIHx0aGlz fC4KKyAgIGF2X2NvbnRleHRfLT5vcGFxdWUgPSB0aGlzOworIAorLSAgQVZDb2RlYyogY29kZWMg PSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihhdl9jb250ZXh0Xy0+Y29kZWNfaWQpOworKyAgY29uc3Qg QVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihhdl9jb250ZXh0Xy0+Y29kZWNf aWQpOworICAgaWYgKCFjb2RlYykgeworICAgICAvLyBUaGlzIGlzIGFuIGluZGljYXRpb24gdGhh dCBGRm1wZWcgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIG9yIGl0IGhhcyBub3QKKyAgICAgLy8g YmVlbiBjb21waWxlZC9pbml0aWFsaXplZCB3aXRoIHRoZSBjb3JyZWN0IHNldCBvZiBjb2RlY3Mu CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0 NS13ZWJlbmdpbmUvdGVtcGxhdGUKaW5kZXggODUyNjdjN2NmOGEzZi4uMDk1YWI2NzcwMWU0MiAx MDA2NDQKLS0tIGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv cXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQpAQCAtMSw5ICsxLDkgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ3F0NS13ZWJlbmdpbmUnCiBwa2duYW1lPXF0NS13ZWJlbmdpbmUKLXZlcnNpb249NS4xNS4x MQotcmV2aXNpb249MwordmVyc2lvbj01LjE1LjEzCityZXZpc2lvbj0xCiBfdmVyc2lvbj0iJHt2 ZXJzaW9ufS1sdHMiCi1fY2hyb21pdW1fY29tbWl0PWJlMzQ5ZWFmNjJlNzc5NTU3OTFkN2JmMjlm ODkzZjFlOGEzN2RhZjQKK19jaHJvbWl1bV9jb21taXQ9ZTQ4ZGY3ODAzYzdjOThiMGIyNDcxYzk0 MDU3ZDMyZTQ0YTMwMWFkNQogYXJjaHM9Ing4Nl82NCogaTY4NiogYXJtdls2N10qIHBwYzY0KiBh YXJjaDY0KiIKIGNyZWF0ZV93cmtzcmM9eWVzCiBidWlsZF9zdHlsZT1xbWFrZQpAQCAtMzIsOCAr MzIsOCBAQCBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyLCBMR1BMLTMuMC1vci1sYXRlciIKIGhv bWVwYWdlPSJodHRwczovL3F0LmlvLyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL3F0 L3F0d2ViZW5naW5lL2FyY2hpdmUvdiR7X3ZlcnNpb259LnRhci5negogIGh0dHBzOi8vZ2l0aHVi LmNvbS9xdC9xdHdlYmVuZ2luZS1jaHJvbWl1bS9hcmNoaXZlLyR7X2Nocm9taXVtX2NvbW1pdH0u dGFyLmd6IgotY2hlY2tzdW09ImFhNzQ2NjM1NmM0NTBjNWY1ODcwZjk3OWI5M2NkN2U3ZTYyZGEx MTY1YzMyOGZmY2FiMWE5OTI4ZGIxOGFkNjcKLSA2ZjQ3ZWQ4YWI4Y2MwNjI0MTFmNmYyMDZkYTYz NTNiYzgyNjNkNmVkNmQ2MjkwYzY4OWEwNWMwMWQ5MWY2NDZiIgorY2hlY2tzdW09IjRiNTk4Mzhl ZDc1ZWY3ODhiNTllMWU0MTI1MzVhMGU0MmRkOWQzMTE2NjFmZGVhZGIxOTFiNTgxYmE4MTVjNjMK KyBhOTE2ODY1NjJiMWQ0ZThiMjIwZTBiYmNiYWI1ZmViNjQ2MzBlMmRlOTc0YjM1YWMwMzRiZjM4 OGFmNzcxYTZjIgogCiBub19nZW5lcmljX3BrZ2NvbmZpZ19saW5rPXllcwogYnVpbGRfb3B0aW9u cz0ic25kaW8gcGlwZXdpcmUiCgpGcm9tIDE3YWFlODBmM2ExMzA0MWQ5NTZjNGRjOTgxMjgyMzM5 Y2MyNWZlYTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDog W1BBVENIIDA3My8xMTNdIHF0NTogdXBkYXRlIHRvIDUuMTUuOAoKLS0tCiAuLi5lcnl3aGVyZS1v cGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0Y2ggfCAxMjkxMyArKysrKysrKysrKysrKysr CiBzcmNwa2dzL3F0NS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxMiAr LQogMiBmaWxlcyBjaGFuZ2VkLCAxMjkxOSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVu c291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9w YXRjaGVzL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoIGIv c3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1r ZjUtMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi45NjZj OThiY2QzYmIxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVy eXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRjaApAQCAtMCwwICsxLDEyOTEz IEBACitTdWJtaXR0ZWQgQnk6ICAgICAgICAgICAgUGllcnJlIExhYmFzdGllIDxwaWVycmVfZG90 X2xhYmFzdGllX2F0X25ldWZfZG90X2ZyPgorRGF0ZTogICAgICAgICAgICAgICAgICAgIDIwMjMt MDEtMDUKK0luaXRpYWwgUGFja2FnZSBWZXJzaW9uOiA1LjE1LjgKK1Vwc3RyZWFtIFN0YXR1czog ICAgICAgICBBcHBsaWVkIChhY2NvcmRpbmcgdG8gS0RFKQorT3JpZ2luOiAgICAgICAgICAgICAg ICAgIEtERSBwYXRjaCBzZXQKK0Rlc2NyaXB0aW9uOiAgICAgICAgICAgICBQYXRjaCBzZXQgbWFp bnRhaW5lZCBieSB0aGUgS0RFIGZvbGtzCitzZWUgaHR0cHM6Ly9kb3Qua2RlLm9yZy8yMDIxLzA0 LzA2L2Fubm91bmNpbmcta2Rlcy1xdC01LXBhdGNoLWNvbGxlY3Rpb24KK1BhdGNoIGdlbmVyYXRl ZCB1c2luZyB0aGUgcHJvY2VkdXJlIGluCitodHRwczovL3dpa2kubGludXhmcm9tc2NyYXRjaC5v cmcvYmxmcy90aWNrZXQvMTc0NzYjY29tbWVudDozCisKK1N1Ym1vZHVsZSBxdGJhc2UgNGVlNGZj MTguLjljZjU4NmQ2OgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lk L3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0Zm9y bWRlZnMuaAoraW5kZXggZjc1YmM0MDkzYi4uMmJkNTk0MTBkNCAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21r c3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oCitAQCAtMTQ0LDExICsxNDQsNyBA QAorICNkZWZpbmUgUVRfU0lHTkFMX0FSR1MgICAgICAgICAgaW50CisgI2RlZmluZSBRVF9TSUdO QUxfSUdOT1JFICAgICAgICBTSUdfSUdOCisgCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAo X19HTElCQ19fID49IDIpCisgI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVu X3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2VuZGlm CisgCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAw KQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50ZgorZGlmZiAtLWdp dCBhL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsgYi9xdGJhc2UvbWtzcGVjcy9m ZWF0dXJlcy9tYWMvc2RrLm1rCitpbmRleCBmMzBiNTgzMGI0Li5hMzJjZWFjYjZjIDEwMDY0NAor LS0tIGEvcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5taworKysrIGIvcXRiYXNlL21r c3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5taworQEAgLTEsNiArMSw2IEBACisgCisgaWZlcSAoJChR VF9NQUNfU0RLX05PX1ZFUlNJT05fQ0hFQ0spLCkKKy0gICAgQ0hFQ0tfU0RLX0NPTU1BTkQgPSAv dXNyL2Jpbi94Y3J1biAtLXNkayAkKEVYUE9SVF9RTUFLRV9NQUNfU0RLKSAtc2hvdy1zZGstdmVy c2lvbiAyPiYxCisrICAgIENIRUNLX1NES19DT01NQU5EID0gL3Vzci9iaW4veGNydW4gLS1zZGsg JChFWFBPUlRfUU1BS0VfTUFDX1NESykgLXNob3ctc2RrLXZlcnNpb24gMj4vZGV2L251bGwKKyAg ICAgQ1VSUkVOVF9NQUNfU0RLX1ZFUlNJT04gOj0gJChzaGVsbCBERVZFTE9QRVJfRElSPSQoRVhQ T1JUX1FNQUtFX1hDT0RFX0RFVkVMT1BFUl9QQVRIKSAkKENIRUNLX1NES19DT01NQU5EKSkKKyAg ICAgaWZuZXEgKCQoQ1VSUkVOVF9NQUNfU0RLX1ZFUlNJT04pLCQoRVhQT1JUX1FNQUtFX01BQ19T REtfVkVSU0lPTikpCisgICAgICAgICAjIFdlIGRvbid0IHdhbnQgdG8gY29tcGxhaW4gYWJvdXQg b3V0IG9mIGRhdGUgU0RLIHVubGVzcyB0aGUgdGFyZ2V0IG5lZWRzIHRvIGJlIHJlbWFkZS4KK2Rp ZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmggYi9x dGJhc2UvbWtzcGVjcy9saW51eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IGE4MThkOTcz ZjAuLmMxYWI3MmZiYzYgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1jbGFuZy9x cGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9y bWRlZnMuaAorQEAgLTc5LDE0ICs3OSw2IEBACisgI2RlZmluZSBRVF9VU0VfWE9QRU5fTEZTX0VY VEVOU0lPTlMKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAK Ky0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19H TElCQ19fID49IDIpCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QK Ky0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2VuZGlmCist CisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQor ICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50ZgorICNkZWZpbmUgUVRf VlNOUFJJTlRGICAgICAgICAgICAgOjp2c25wcmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtz cGVjcy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbGludXgtZysr L3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggMTM1MjNmMDcwMi4uNGQyNzUwZDllYyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFz ZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgKK0BAIC03OSwxNCArNzksNiBAQAor ICNkZWZpbmUgUVRfVVNFX1hPUEVOX0xGU19FWFRFTlNJT05TCisgI2luY2x1ZGUgIi4uL2NvbW1v bi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorLQorLSNp ZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA8IDIpCistI2RlZmluZSBRVF9TT0NL TEVOX1QgICAgICAgICAgICBpbnQKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAg ICAgICAgc29ja2xlbl90CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkg JiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAg ICAgOjpzbnByaW50ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2c25wcmlu dGYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sbHZtL3FwbGF0Zm9ybWRlZnMu aCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5oCitpbmRleCBkYzc1 MGFiMWVmLi5kM2NjMzliNDdmIDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvbGludXgtbGx2 bS9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRm b3JtZGVmcy5oCitAQCAtODAsMTQgKzgwLDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9YT1BFTl9MRlNf RVhURU5TSU9OUworICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgor IAorLSN1bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChf X0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5f dAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYK Ky0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDAp CisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmluZSBR VF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9t a3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbGlu dXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IDRjNGU1M2RhMmEuLjgzYmFmZmIzZTMg MTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9ybWRlZnMu aAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmgKK0BA IC04NSwxNiArODUsOSBAQAorICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVm cy5oIgorIAorICN1bmRlZiBRVF9PUEVOX0xBUkdFRklMRQorLSN1bmRlZiBRVF9TT0NLTEVOX1QK KyAKKyAjZGVmaW5lIFFUX09QRU5fTEFSR0VGSUxFICAgICAgIDAKKyAKKy0jaWYgZGVmaW5lZChf X0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAg ICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAg ICBpbnQKKy0jZW5kaWYKKy0KKyAjaWZuZGVmIFNJT0NHSUZCUkRBRERSCisgIyAgZGVmaW5lIFNJ T0NHSUZCUkRBRERSIDB4ODkxOQorICNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNz L2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbHlueG9zLWcrKy9x cGxhdGZvcm1kZWZzLmgKK2luZGV4IDQzMzllYTJiMjMuLjYwMDdhZjAwNTUgMTAwNjQ0CistLS0g YS9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNl L21rc3BlY3MvbHlueG9zLWcrKy9xcGxhdGZvcm1kZWZzLmgKK0BAIC03MiwxNCArNzIsNiBAQAor IAorICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAorLSN1bmRl ZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18g Pj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNl CistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKy0KKyAjaWYg ZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmlu ZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmluZSBRVF9WU05QUklO VEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvM3JkcGFy dHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAgYi9xdGJhc2Uvc3JjLzNy ZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCitpbmRleCBjM2Mx ODQyNThmLi4zMmFmM2Y4ZjI5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy8zcmRwYXJ0eS9hbmds ZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy8zcmRw YXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAorQEAgLTEwLDYgKzEw LDcgQEAKKyAjaW5jbHVkZSAibGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmgiCisgCisgI2luY2x1 ZGUgPGFsZ29yaXRobT4KKysjaW5jbHVkZSA8bGltaXRzPgorIAorICNpbmNsdWRlICJjb21tb24v ZGVidWcuaCIKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2ZvcmtmZC9mb3Jr ZmRfbGludXguYyBiL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5jCitp bmRleCBmZmUwZTlhNWUyLi5iMWY1NDA4ZDExIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy8zcmRw YXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMKKysrKyBiL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9y a2ZkL2ZvcmtmZF9saW51eC5jCitAQCAtODIsNyArODIsOCBAQCBzdGF0aWMgaW50IHN5c19jbG9u ZSh1bnNpZ25lZCBsb25nIGNsb25lZmxhZ3MsIGludCAqcHRpZCkKKyAgICAgcmV0dXJuIHN5c2Nh bGwoX19OUl9jbG9uZSwgY2xvbmVmbGFncywgY2hpbGRfc3RhY2ssIHN0YWNrX3NpemUsIHB0aWQs IG5ld3RscywgY3RpZCk7CisgI2VsaWYgZGVmaW5lZChfX2FyY19fKSB8fCBkZWZpbmVkKF9fYXJt X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKyAg ICAgZGVmaW5lZChfX25kczMyX18pIHx8IGRlZmluZWQoX19ocHBhX18pIHx8IGRlZmluZWQoX19w b3dlcnBjX18pIHx8IGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9feHRlbnNhX18pIHx8IGRlZmluZWQoX19hbHBoYV9fKSB8fCBkZWZp bmVkKF9fcmlzY3YpCisrICAgIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3h0ZW5z YV9fKSB8fCBkZWZpbmVkKF9fYWxwaGFfXykgfHwgZGVmaW5lZChfX3Jpc2N2KSB8fCBcCisrICAg IGRlZmluZWQoX19sb29uZ2FyY2hfXykKKyAgICAgLyogY3RpZCBhbmQgbmV3dGxzIGFyZSBpbnZl cnRlZCBvbiBDT05GSUdfQ0xPTkVfQkFDS1dBUkRTIGFyY2hpdGVjdHVyZXMsCisgICAgICAqIGJ1 dCBzaW5jZSBib3RoIHZhbHVlcyBhcmUgMCwgdGhlcmUncyBubyBoYXJtLiAqLworICAgICByZXR1 cm4gc3lzY2FsbChfX05SX2Nsb25lLCBjbG9uZWZsYWdzLCBjaGlsZF9zdGFjaywgcHRpZCwgY3Rp ZCwgbmV3dGxzKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2FuZHJvaWQvamFyL3NyYy9vcmcv cXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEgYi9xdGJhc2Uvc3JjL2FuZHJvaWQv amFyL3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEKK2luZGV4IDU3 OTJiNWIyZjUuLjJmNzQ3NTBmY2YgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2FuZHJvaWQvamFy L3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEKKysrKyBiL3F0YmFz ZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUu amF2YQorQEAgLTExNiw2ICsxMTYsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgcHVi bGljIHN0YXRpYyBRdFRocmVhZCBtX3F0VGhyZWFkID0gbmV3IFF0VGhyZWFkKCk7CisgICAgIHBy aXZhdGUgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBVcmk+IG1fY2FjaGVkVXJpcyA9IG5ldyBIYXNo TWFwPFN0cmluZywgVXJpPigpOworICAgICBwcml2YXRlIHN0YXRpYyBBcnJheUxpc3Q8U3RyaW5n PiBtX2tub3duRGlycyA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOworKyAgICBwcml2YXRlIHN0 YXRpYyBmaW5hbCBTdHJpbmcgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlID0gIk5vIHBlcm1pc3Np b25zIHRvIG9wZW4gVXJpIjsKKyAKKyAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgUnVubmFibGUg cnVuUGVuZGluZ0NwcFJ1bm5hYmxlc1J1bm5hYmxlID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAg ICAgQE92ZXJyaWRlCitAQCAtMTkzLDExICsxOTQsMTAgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZl CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlclVyaTsKKyAgICAgICAgICAgICB9Cisg CistICAgICAgICAgICAgLy8gQW5kcm9pZCA2IGFuZCBlYXJsaWVyIGNvdWxkIHN0aWxsIG1hbmFn ZSB0byBvcGVuIHRoZSBmaWxlIHNvIHdlIGNhbiByZXR1cm4gdGhlCistICAgICAgICAgICAgLy8g cGFyc2VkIHVyaSBoZXJlCistICAgICAgICAgICAgaWYgKEJ1aWxkLlZFUlNJT04uU0RLX0lOVCA8 IDI0KQorLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VkVXJpOworLSAgICAgICAgICAgIHJl dHVybiBudWxsOworKyAgICAgICAgICAgIC8vIGlmIHdlIG9ubHkgaGF2ZSB0cmFuc2llbnQgcGVy bWlzc2lvbnMgb24gdXJpIGFsbCB0aGUgYWJvdmUgd2lsbCBmYWlsLAorKyAgICAgICAgICAgIC8v IGJ1dCB3ZSB3aWxsIGJlIGFibGUgdG8gcmVhZCB0aGUgZmlsZSBhbnl3YXksIHNvIGNvbnRpbnVl IHdpdGggdXJpIGhlcmUgYW55d2F5CisrICAgICAgICAgICAgLy8gYW5kIGNoZWNrIGZvciBTZWN1 cml0eUV4Y2VwdGlvbnMgbGF0ZXIKKysgICAgICAgICAgICByZXR1cm4gcGFyc2VkVXJpOworICAg ICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIGUucHJp bnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICAgcmV0dXJuIG51bGw7CitAQCAtMjQ0LDcgKzI0 NCw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgaW50IGVycm9yID0gLTE7Cisg CisgICAgICAgICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cuZShRdFRBRywg Im9wZW5GZEZvckNvbnRlbnRVcmwoKTogTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiKTsKKysg ICAgICAgICAgICBMb2cuZShRdFRBRywgIm9wZW5GZEZvckNvbnRlbnRVcmwoKTogIiArIE5vUGVy bWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAg ICAgfQorIAorQEAgLTI1NCwxMiArMjU0LDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAg ICAgICAgICAgIHJldHVybiBmZERlc2MuZGV0YWNoRmQoKTsKKyAgICAgICAgIH0gY2F0Y2ggKEZp bGVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2Uo KTsKKy0gICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICB9IGNhdGNoIChJbGxlZ2Fs QXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAib3BlbkZk Rm9yQ29udGVudFVybCgpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFj a1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGVycm9yOworKyAgICAgICAgfSBjYXRjaCAo U2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1p c3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuIGVycm9yOwor ICAgICB9CisgCisgICAgIHB1YmxpYyBzdGF0aWMgbG9uZyBnZXRTaXplKENvbnRleHQgY29udGV4 dCwgU3RyaW5nIGNvbnRlbnRVcmwpCitAQCAtMjcwLDcgKzI3MSw3IEBAIHB1YmxpYyBjbGFzcyBR dE5hdGl2ZQorICAgICAgICAgICAgIHVyaSA9IGdldFVyaVdpdGhWYWxpZFBlcm1pc3Npb24oY29u dGV4dCwgY29udGVudFVybCwgInIiKTsKKyAKKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgewor LSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBObyBwZXJtaXNzaW9ucyB0byBv cGVuIFVyaSIpOworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1l c3NhZ2UpOworICAgICAgICAgICAgIHJldHVybiBzaXplOworICAgICAgICAgfSBlbHNlIGlmICgh bV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKSB7CisgICAgICAgICAgICAgbV9j YWNoZWRVcmlzLnB1dChjb250ZW50VXJsLCB1cmkpOworQEAgLTI4OCwxMiArMjg5LDEzIEBAIHB1 YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhj ZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImdldFNpemUoKTogSW52YWxp ZCBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAg IHJldHVybiBzaXplOworICAgICAgICAgfSAgY2F0Y2ggKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhj ZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImdldFNpemUoKTogVW5zdXBw b3J0ZWQgb3BlcmF0aW9uIGZvciBnaXZlbiBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3Rh Y2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBzaXplOworKyAgICAgICAgfSBjYXRjaCAo U2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1p c3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuIHNpemU7Cisg ICAgIH0KKyAKKyAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGNoZWNrRmlsZUV4aXN0cyhDb250 ZXh0IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorQEAgLTMwMyw3ICszMDUsNyBAQCBwdWJs aWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkKKyAgICAgICAgICAg ICB1cmkgPSBnZXRVcmlXaXRoVmFsaWRQZXJtaXNzaW9uKGNvbnRleHQsIGNvbnRlbnRVcmwsICJy Iik7CisgICAgICAgICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cuZShRdFRB RywgImNoZWNrRmlsZUV4aXN0cygpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOworKyAg ICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAg ICAgICAgIHJldHVybiBleGlzdHM7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIGlm ICghbV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKQorQEAgLTMyMSwxMiArMzIz LDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFy Z3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImNoZWNrRmls ZUV4aXN0cygpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNl KCk7CistICAgICAgICAgICAgcmV0dXJuIGV4aXN0czsKKyAgICAgICAgIH0gY2F0Y2ggKFVuc3Vw cG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywg ImNoZWNrRmlsZUV4aXN0cygpOiBVbnN1cHBvcnRlZCBvcGVyYXRpb24gZm9yIGdpdmVuIFVyaSIp OworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworKyAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAg ICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAg fQorKyAgICAgICAgcmV0dXJuIGV4aXN0czsKKyAgICAgfQorIAorICAgICBwdWJsaWMgc3RhdGlj IGJvb2xlYW4gY2hlY2tJZldyaXRhYmxlKENvbnRleHQgY29udGV4dCwgU3RyaW5nIGNvbnRlbnRV cmwpCitAQCAtMzQ0LDcgKzM0Nyw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAg ICAgIHVyaSA9IGdldFVyaVdpdGhWYWxpZFBlcm1pc3Npb24oY29udGV4dCwgY29udGVudFVybCwg InIiKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAg ICAgIExvZy5lKFF0VEFHLCAiaXNEaXIoKTogTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiKTsK KysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAg ICAgICAgICAgICByZXR1cm4gaXNEaXI7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg IGlmICghbV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKQorQEAgLTM3NCwxMiAr Mzc3LDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgfSBjYXRjaCAoSWxsZWdh bEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImNoZWNr SWZEaXIoKTogSW52YWxpZCBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgp OworLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIH0gY2F0Y2ggKFVuc3VwcG9y dGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImNo ZWNrSWZEaXIoKTogVW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGZvciBnaXZlbiBVcmkiKTsKKyAgICAg ICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK KysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysgICAgICAgICAgICBM b2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgIH0KKysgICAg ICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorICAgICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGxp c3RDb250ZW50c0Zyb21UcmVlVXJpKENvbnRleHQgY29udGV4dCwgU3RyaW5nIGNvbnRlbnRVcmwp CisgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50 cmVkdWNla2VybmVsLmggYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50cmVkdWNl a2VybmVsLmgKK2luZGV4IDhmOWE5Mzg5NTIuLmE5OGRlZGVmMmUgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50cmVkdWNla2VybmVsLmgKKysrKyBiL3F0YmFz ZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAorQEAgLTIxMiwxMSAr MjEyLDEzIEBAIHB1YmxpYzoKKyAKKyAgICAgaW5saW5lIGJvb2wgc2hvdWxkVGhyb3R0bGUoKQor ICAgICB7CisrICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8UU11dGV4PiBsb2NrZXIobXV0ZXgpOwor ICAgICAgICAgcmV0dXJuIChyZXN1bHRzTWFwU2l6ZSA+IChSZWR1Y2VRdWV1ZVRocm90dGxlTGlt aXQgKiB0aHJlYWRDb3VudCkpOworICAgICB9CisgCisgICAgIGlubGluZSBib29sIHNob3VsZFN0 YXJ0VGhyZWFkKCkKKyAgICAgeworKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPFFNdXRleD4gbG9j a2VyKG11dGV4KTsKKyAgICAgICAgIHJldHVybiAocmVzdWx0c01hcFNpemUgPD0gKFJlZHVjZVF1 ZXVlU3RhcnRMaW1pdCAqIHRocmVhZENvdW50KSk7CisgICAgIH0KKyB9OworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwIGIvcXRi YXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKK2luZGV4IGVh NmNlM2FjNDIuLjdmOTFhMmJhNjggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQv cXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50 L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKK0BAIC0xNzYsNiArMTc2LDM5IEBAIHZvaWQg VGhyZWFkRW5naW5lQmFzZTo6c3RhcnRTaW5nbGVUaHJlYWRlZCgpCisgICAgIGZpbmlzaCgpOwor IH0KKyAKKyt2b2lkIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0QmxvY2tpbmcoKQorK3sKKysgICAg c3RhcnQoKTsKKysgICAgYmFycmllci5hY3F1aXJlKCk7CisrICAgIHN0YXJ0VGhyZWFkcygpOwor KworKyAgICBib29sIHRocm90dGxlZCA9IGZhbHNlOworKyNpZm5kZWYgUVRfTk9fRVhDRVBUSU9O UworKyAgICB0cnkgeworKyNlbmRpZgorKyAgICAgICAgd2hpbGUgKHRocmVhZEZ1bmN0aW9uKCkg PT0gVGhyb3R0bGVUaHJlYWQpIHsKKysgICAgICAgICAgICBpZiAodGhyZWFkVGhyb3R0bGVFeGl0 KCkpIHsKKysgICAgICAgICAgICAgICAgdGhyb3R0bGVkID0gdHJ1ZTsKKysgICAgICAgICAgICAg ICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyNpZm5kZWYgUVRfTk9fRVhD RVBUSU9OUworKyAgICB9IGNhdGNoIChRRXhjZXB0aW9uICZlKSB7CisrICAgICAgICBoYW5kbGVF eGNlcHRpb24oZSk7CisrICAgIH0gY2F0Y2ggKC4uLikgeworKyAgICAgICAgaGFuZGxlRXhjZXB0 aW9uKFFVbmhhbmRsZWRFeGNlcHRpb24oKSk7CisrICAgIH0KKysjZW5kaWYKKysKKysgICAgaWYg KHRocm90dGxlZCA9PSBmYWxzZSkgeworKyAgICAgICAgYmFycmllci5yZWxlYXNlKCk7CisrICAg IH0KKysKKysgICAgYmFycmllci53YWl0KCk7CisrICAgIGZpbmlzaCgpOworKyAgICBleGNlcHRp b25TdG9yZS50aHJvd1Bvc3NpYmxlRXhjZXB0aW9uKCk7CisrfQorKworIHZvaWQgVGhyZWFkRW5n aW5lQmFzZTo6c3RhcnRUaHJlYWQoKQorIHsKKyAgICAgc3RhcnRUaHJlYWRJbnRlcm5hbCgpOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdp bmUuaCBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuaAor aW5kZXggN2MzMGNlYmRiYy4uYTRjODU0OGNjNCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29u Y3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuaAorKysrIGIvcXRiYXNlL3NyYy9jb25j dXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oCitAQCAtOTEsNiArOTEsNyBAQCBwdWJs aWM6CisgICAgIFRocmVhZEVuZ2luZUJhc2UoKTsKKyAgICAgdmlydHVhbCB+VGhyZWFkRW5naW5l QmFzZSgpOworICAgICB2b2lkIHN0YXJ0U2luZ2xlVGhyZWFkZWQoKTsKKysgICAgdm9pZCBzdGFy dEJsb2NraW5nKCk7CisgICAgIHZvaWQgc3RhcnRUaHJlYWQoKTsKKyAgICAgYm9vbCBpc0NhbmNl bGVkKCk7CisgICAgIHZvaWQgd2FpdEZvclJlc3VtZSgpOworQEAgLTE0Myw2ICsxNDQsMTUgQEAg cHVibGljOgorICAgICAgICAgcmV0dXJuIHJlc3VsdCgpOworICAgICB9CisgCisrICAgIC8vIFJ1 bnMgdGhlIHVzZXIgYWxnb3JpdGhtIHVzaW5nIG11bHRpcGxlIHRocmVhZHMuCisrICAgIC8vIFRo aXMgZnVuY3Rpb24gYmxvY2tzIHVudGlsIHRoZSBhbGdvcml0aG0gaXMgZmluaXNoZWQsCisrICAg IC8vIGFuZCB0aGVuIHJldHVybnMgdGhlIHJlc3VsdC4KKysgICAgVCAqc3RhcnRCbG9ja2luZygp CisrICAgIHsKKysgICAgICAgIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0QmxvY2tpbmcoKTsKKysg ICAgICAgIHJldHVybiByZXN1bHQoKTsKKysgICAgfQorKworICAgICAvLyBSdW5zIHRoZSB1c2Vy IGFsZ29yaXRobSB1c2luZyBtdWx0aXBsZSB0aHJlYWRzLgorICAgICAvLyBEb2VzIG5vdCBibG9j aywgcmV0dXJucyBhIGZ1dHVyZS4KKyAgICAgUUZ1dHVyZTxUPiBzdGFydEFzeW5jaHJvbm91c2x5 KCkKK0BAIC0yMjMsNiArMjMzLDEzIEBAIGNsYXNzIFRocmVhZEVuZ2luZVN0YXJ0ZXIgOiBwdWJs aWMgVGhyZWFkRW5naW5lU3RhcnRlckJhc2U8VD4KKyBwdWJsaWM6CisgICAgIFRocmVhZEVuZ2lu ZVN0YXJ0ZXIoVHlwZWRUaHJlYWRFbmdpbmUgKmVuZykKKyAgICAgICAgIDogQmFzZShlbmcpIHsg fQorKworKyAgICBUIHN0YXJ0QmxvY2tpbmcoKQorKyAgICB7CisrICAgICAgICBUIHQgPSAqdGhp cy0+dGhyZWFkRW5naW5lLT5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBkZWxldGUgdGhpcy0+ dGhyZWFkRW5naW5lOworKyAgICAgICAgcmV0dXJuIHQ7CisrICAgIH0KKyB9OworIAorIC8vIEZ1 bGwgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd2hlcmUgVCBpcyB2b2lkLgorQEAgLTIzMiw2ICsy NDksMTIgQEAgY2xhc3MgVGhyZWFkRW5naW5lU3RhcnRlcjx2b2lkPiA6IHB1YmxpYyBUaHJlYWRF bmdpbmVTdGFydGVyQmFzZTx2b2lkPgorIHB1YmxpYzoKKyAgICAgVGhyZWFkRW5naW5lU3RhcnRl cihUaHJlYWRFbmdpbmU8dm9pZD4gKl90aHJlYWRFbmdpbmUpCisgICAgICAgICA6IFRocmVhZEVu Z2luZVN0YXJ0ZXJCYXNlPHZvaWQ+KF90aHJlYWRFbmdpbmUpIHt9CisrCisrICAgIHZvaWQgc3Rh cnRCbG9ja2luZygpCisrICAgIHsKKysgICAgICAgIHRoaXMtPnRocmVhZEVuZ2luZS0+c3RhcnRC bG9ja2luZygpOworKyAgICAgICAgZGVsZXRlIHRoaXMtPnRocmVhZEVuZ2luZTsKKysgICAgfQor IH07CisgCisgLy8hIFtxdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUtMV0KK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0aW9uLmNwcCBiL3F0YmFz ZS9zcmMvY29yZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwCitpbmRleCA5OGIw MmYwMjAyLi5lYWMxNTI0MTA3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1h dGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9hbmlt YXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwCitAQCAtMjc2LDcgKzI3Niw5IEBAIHZvaWQgUVZh cmlhbnRBbmltYXRpb25Qcml2YXRlOjpzZXRDdXJyZW50VmFsdWVGb3JQcm9ncmVzcyhjb25zdCBx cmVhbCBwcm9ncmVzcykKKyAKKyAgICAgY29uc3QgcXJlYWwgc3RhcnRQcm9ncmVzcyA9IGN1cnJl bnRJbnRlcnZhbC5zdGFydC5maXJzdDsKKyAgICAgY29uc3QgcXJlYWwgZW5kUHJvZ3Jlc3MgPSBj dXJyZW50SW50ZXJ2YWwuZW5kLmZpcnN0OworLSAgICBjb25zdCBxcmVhbCBsb2NhbFByb2dyZXNz ID0gKHByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcykgLyAoZW5kUHJvZ3Jlc3MgLSBzdGFydFByb2dy ZXNzKTsKKysgICAgY29uc3QgcXJlYWwgbG9jYWxQcm9ncmVzcyA9CisrICAgICAgICAgICAgcUlz TnVsbChwcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpID8gMC4wIC8vIGF2b2lkIDAvMCBiZWxvdwor KyAgICAgICAgICAgIC8qIGVsc2UgKi8gICAgICAgICAgICAgICAgICAgICAgICA6IChwcm9ncmVz cyAtIHN0YXJ0UHJvZ3Jlc3MpIC8gKGVuZFByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcyk7CisgCisg ICAgIFFWYXJpYW50IHJldCA9IHEtPmludGVycG9sYXRlZChjdXJyZW50SW50ZXJ2YWwuc3RhcnQu c2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEludGVy dmFsLmVuZC5zZWNvbmQsCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9x bmFtZXNwYWNlLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1lc3BhY2UuaAoraW5k ZXggYWQ0MTUwYjMxNy4uYmYxOWIxNjI3YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxp Yi9nbG9iYWwvcW5hbWVzcGFjZS5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3Fu YW1lc3BhY2UuaAorQEAgLTE4NjQsNyArMTg2NCw3IEBAIHB1YmxpYzoKKyAgICAgUVRfUV9FTlVN KFRpbWVyVHlwZSkKKyAgICAgUVRfUV9FTlVNKFNjcm9sbFBoYXNlKQorICAgICBRVF9RX0VOVU0o TW91c2VFdmVudFNvdXJjZSkKKy0gICAgUVRfUV9GTEFHKE1vdXNlRXZlbnRGbGFnKQorKyAgICBR VF9RX0ZMQUcoTW91c2VFdmVudEZsYWdzKQorICAgICBRVF9RX0VOVU0oQ2hlY2tzdW1UeXBlKQor ICAgICBRVF9RX0VOVU0oSGlnaERwaVNjYWxlRmFjdG9yUm91bmRpbmdQb2xpY3kpCisgICAgIFFU X1FfRU5VTShUYWJGb2N1c0JlaGF2aW9yKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxp Yi9nbG9iYWwvcXJhbmRvbS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20u Y3BwCitpbmRleCAxMDY3MmMxZjkyLi4yNWY4N2M3ZTZhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2ds b2JhbC9xcmFuZG9tLmNwcAorQEAgLTM4Myw3ICszODMsNiBAQCBzdHJ1Y3QgUVJhbmRvbUdlbmVy YXRvcjo6U3lzdGVtQW5kR2xvYmFsR2VuZXJhdG9ycworIAorICAgICAgICAgY29uc3RleHByIFN5 c3RlbUFuZEdsb2JhbEdlbmVyYXRvcnMgZyA9IHt9OworICAgICAgICAgUV9VTlVTRUQoZyk7Cist ICAgICAgICBRX1NUQVRJQ19BU1NFUlQoc3RkOjppc19saXRlcmFsX3R5cGU8U3lzdGVtQW5kR2xv YmFsR2VuZXJhdG9ycz46OnZhbHVlKTsKKyAjZW5kaWYKKyAgICAgfQorIAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVyLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9p by9xYnVmZmVyLmNwcAoraW5kZXggNTk1ZmNkMjcyNC4uMDMyYzBkZGQ0YiAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3Jl bGliL2lvL3FidWZmZXIuY3BwCitAQCAtNDEsNiArNDEsOCBAQAorICNpbmNsdWRlIDxRdENvcmUv cW1ldGFvYmplY3QuaD4KKyAjaW5jbHVkZSAicHJpdmF0ZS9xaW9kZXZpY2VfcC5oIgorIAorKyNp bmNsdWRlIDxsaW1pdHM+CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgLyoqIFFCdWZmZXJQ cml2YXRlICoqLworQEAgLTM2Niw3ICszNjgsOSBAQCBxaW50NjQgUUJ1ZmZlcjo6c2l6ZSgpIGNv bnN0CisgYm9vbCBRQnVmZmVyOjpzZWVrKHFpbnQ2NCBwb3MpCisgeworICAgICBRX0QoUUJ1ZmZl cik7CistICAgIGlmIChwb3MgPiBkLT5idWYtPnNpemUoKSAmJiBpc1dyaXRhYmxlKCkpIHsKKysg ICAgY29uc3QgYXV0byBvbGRCdWZTaXplID0gZC0+YnVmLT5zaXplKCk7CisrICAgIGNvbnN0ZXhw ciBxaW50NjQgTWF4U2Vla1BvcyA9IChzdGQ6Om51bWVyaWNfbGltaXRzPGRlY2x0eXBlKG9sZEJ1 ZlNpemUpPjo6bWF4KSgpOworKyAgICBpZiAocG9zIDw9IE1heFNlZWtQb3MgJiYgcG9zID4gb2xk QnVmU2l6ZSAmJiBpc1dyaXRhYmxlKCkpIHsKKyAgICAgICAgIGlmIChzZWVrKGQtPmJ1Zi0+c2l6 ZSgpKSkgeworICAgICAgICAgICAgIGNvbnN0IHFpbnQ2NCBnYXBTaXplID0gcG9zIC0gZC0+YnVm LT5zaXplKCk7CisgICAgICAgICAgICAgaWYgKHdyaXRlKFFCeXRlQXJyYXkoZ2FwU2l6ZSwgMCkp ICE9IGdhcFNpemUpIHsKK0BAIC0zNzcsNyArMzgxLDcgQEAgYm9vbCBRQnVmZmVyOjpzZWVrKHFp bnQ2NCBwb3MpCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgfQorICAgICB9 IGVsc2UgaWYgKHBvcyA+IGQtPmJ1Zi0+c2l6ZSgpIHx8IHBvcyA8IDApIHsKKy0gICAgICAgIHFX YXJuaW5nKCJRQnVmZmVyOjpzZWVrOiBJbnZhbGlkIHBvczogJWQiLCBpbnQocG9zKSk7CisrICAg ICAgICBxV2FybmluZygiUUJ1ZmZlcjo6c2VlazogSW52YWxpZCBwb3M6ICVsbGQiLCBwb3MpOwor ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgICAgIHJldHVybiBRSU9EZXZpY2U6OnNl ZWsocG9zKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW1l bmdpbmVfd2luLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2luZV93 aW4uY3BwCitpbmRleCA4MWQzYTcxOTg2Li5jODZlZDFmOWIwIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAKKysrKyBiL3F0YmFzZS9z cmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2luZV93aW4uY3BwCitAQCAtNjY0LDE0ICs2NjQs MTQgQEAgUUZpbGVTeXN0ZW1FbnRyeSBRRmlsZVN5c3RlbUVuZ2luZTo6YWJzb2x1dGVOYW1lKGNv bnN0IFFGaWxlU3lzdGVtRW50cnkgJmVudHJ5KQorICAgICByZXR1cm4gUUZpbGVTeXN0ZW1FbnRy eShyZXQsIFFGaWxlU3lzdGVtRW50cnk6OkZyb21JbnRlcm5hbFBhdGgoKSk7CisgfQorIAorLSNp ZiBkZWZpbmVkKFFfQ0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYwMiAvLyAgV2luZG93cyA4IG9u d2FyZHMKKysjaWYgZGVmaW5lZChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAweDA2MDIgJiYgX1dJ TjMyX1dJTk5UIDwgX1dJTjMyX1dJTk5UX1dJTjggLy8gIFdpbmRvd3MgOCBvbndhcmRzCisgCisg dHlwZWRlZiBzdHJ1Y3QgX0ZJTEVfSURfSU5GTyB7CisgICAgIFVMT05HTE9ORyBWb2x1bWVTZXJp YWxOdW1iZXI7CisgICAgIEZJTEVfSURfMTI4IEZpbGVJZDsKKyB9IEZJTEVfSURfSU5GTywgKlBG SUxFX0lEX0lORk87CisgCistI2VuZGlmIC8vIGlmIGRlZmluZWQgKFFfQ0NfTUlOR1cpICYmIFdJ TlZFUiA8IDB4MDYwMgorKyNlbmRpZiAvLyBpZiBkZWZpbmVkKFFfQ0NfTUlOR1cpICYmIFdJTlZF UiA8IDB4MDYwMiAmJiBfV0lOMzJfV0lOTlQgPCBfV0lOMzJfV0lOTlRfV0lOOAorIAorIC8vIEZp bGUgSUQgZm9yIFdpbmRvd3MgdXAgdG8gdmVyc2lvbiA3IGFuZCBGQVQzMiBkcml2ZXMKKyBzdGF0 aWMgaW5saW5lIFFCeXRlQXJyYXkgZmlsZUlkKEhBTkRMRSBoYW5kbGUpCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5LmNwcCBiL3F0 YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAKK2luZGV4 IDk0ZDlkMDZiY2IuLjI3ZTBiMTNiMGIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIv aW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwCitAQCAtMzY2LDcgKzM2Niw5IEBA IHZvaWQgUUlub3RpZnlGaWxlU3lzdGVtV2F0Y2hlckVuZ2luZTo6cmVhZEZyb21Jbm90aWZ5KCkK KyAgICAgLy8gcURlYnVnKCJRSW5vdGlmeUZpbGVTeXN0ZW1XYXRjaGVyRW5naW5lOjpyZWFkRnJv bUlub3RpZnkiKTsKKyAKKyAgICAgaW50IGJ1ZmZTaXplID0gMDsKKy0gICAgaW9jdGwoaW5vdGlm eUZkLCBGSU9OUkVBRCwgKGNoYXIgKikgJmJ1ZmZTaXplKTsKKysgICAgaWYgKGlvY3RsKGlub3Rp ZnlGZCwgRklPTlJFQUQsIChjaGFyICopICZidWZmU2l6ZSkgPT0gLTEgfHwgYnVmZlNpemUgPT0g MCkKKysgICAgICAgIHJldHVybjsKKysKKyAgICAgUVZhckxlbmd0aEFycmF5PGNoYXIsIDQwOTY+ IGJ1ZmZlcihidWZmU2l6ZSk7CisgICAgIGJ1ZmZTaXplID0gcmVhZChpbm90aWZ5RmQsIGJ1ZmZl ci5kYXRhKCksIGJ1ZmZTaXplKTsKKyAgICAgY2hhciAqYXQgPSBidWZmZXIuZGF0YSgpOworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2luLmNwcCBiL3F0YmFz ZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2luLmNwcAoraW5kZXggMjc3ZjhkNDIzMC4uMzhl Y2VmNTU1MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2lu LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwCitAQCAt NDgsNiArNDgsOCBAQAorICNpbmNsdWRlICJRdENvcmUvcWRlYnVnLmgiCisgI2luY2x1ZGUgIlF0 Q29yZS9xdGhyZWFkLmgiCisgCisrI2luY2x1ZGUgInByaXZhdGUvcXN5c3RlbWxpYnJhcnlfcC5o IgorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIHN0YXRpYyBpbmxpbmUgYm9vbCBmaWxlRXhp c3RzKGNvbnN0IHdjaGFyX3QgKmZpbGVOYW1lKQorQEAgLTE1MCw3ICsxNTIsNyBAQCBRU3RyaW5n IFFMb2NrRmlsZVByaXZhdGU6OnByb2Nlc3NOYW1lQnlQaWQocWludDY0IHBpZCkKKyAjaWYgIWRl ZmluZWQoUV9PU19XSU5SVCkKKyAgICAgdHlwZWRlZiBEV09SRCAoV0lOQVBJICpHZXRNb2R1bGVG aWxlTmFtZUV4RnVuYykoSEFORExFLCBITU9EVUxFLCBMUFRTVFIsIERXT1JEKTsKKyAKKy0gICAg SE1PRFVMRSBoUHNhcGkgPSBMb2FkTGlicmFyeUEoInBzYXBpIik7CisrICAgIEhNT0RVTEUgaFBz YXBpID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJwc2FwaSIpOworICAgICBpZiAoIWhQc2FwaSkK KyAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisgICAgIEdldE1vZHVsZUZpbGVOYW1lRXhGdW5j IHFHZXRNb2R1bGVGaWxlTmFtZUV4ID0gcmVpbnRlcnByZXRfY2FzdDxHZXRNb2R1bGVGaWxlTmFt ZUV4RnVuYz4oCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fwcm9jZXNzX3Vu aXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fwcm9jZXNzX3VuaXguY3BwCitpbmRleCA1 MDM5MGU1N2Y1Li4xNWM4ZjMwNzQ1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lv L3Fwcm9jZXNzX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3Nf dW5peC5jcHAKK0BAIC0xLDcgKzEsNyBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKyAq KiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoqIENvcHlyaWdodCAo QykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgSW50ZWwg Q29ycG9yYXRpb24uCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLwor ICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0Q29yZSBtb2R1bGUgb2YgdGhlIFF0 IFRvb2xraXQuCitAQCAtNDIyLDE0ICs0MjIsMTUgQEAgdm9pZCBRUHJvY2Vzc1ByaXZhdGU6OnN0 YXJ0UHJvY2VzcygpCisgICAgIC8vIEFkZCB0aGUgcHJvZ3JhbSBuYW1lIHRvIHRoZSBhcmd1bWVu dCBsaXN0LgorICAgICBhcmd2WzBdID0gbnVsbHB0cjsKKyAgICAgaWYgKCFwcm9ncmFtLmNvbnRh aW5zKFFMYXRpbjFDaGFyKCcvJykpKSB7CisrICAgICAgICAvLyBmaW5kRXhlY3V0YWJsZSgpIHJl dHVybnMgaXRzIGFyZ3VtZW50IGlmIGl0J3MgYW4gYWJzb2x1dGUgcGF0aCwKKysgICAgICAgIC8v IG90aGVyd2lzZSBpdCBzZWFyY2hlcyAkUEFUSDsgcmV0dXJucyBlbXB0eSBpZiBub3QgZm91bmQg KHdlIGhhbmRsZQorKyAgICAgICAgLy8gdGhhdCBjYXNlIG11Y2ggbGF0ZXIpCisgICAgICAgICBj b25zdCBRU3RyaW5nICZleGVGaWxlUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjpmaW5kRXhlY3V0YWJs ZShwcm9ncmFtKTsKKy0gICAgICAgIGlmICghZXhlRmlsZVBhdGguaXNFbXB0eSgpKSB7CistICAg ICAgICAgICAgY29uc3QgUUJ5dGVBcnJheSAmdG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmls ZVBhdGgpOworLSAgICAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAuY29uc3REYXRhKCkp OworLSAgICAgICAgfQorLSAgICB9CistICAgIGlmICghYXJndlswXSkKKysgICAgICAgIGNvbnN0 IFFCeXRlQXJyYXkgJnRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKysgICAg ICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAuY29uc3REYXRhKCkpOworKyAgICB9IGVsc2Ugewor ICAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKGVuY29kZWRQcm9ncmFtTmFtZS5jb25zdERhdGEo KSk7CisrICAgIH0KKyAKKyAgICAgLy8gQWRkIGV2ZXJ5IGFyZ3VtZW50IHRvIHRoZSBsaXN0Cisg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1lbnRzLmNvdW50KCk7ICsraSkKK0BAIC05ODMs MTUgKzk4NCwxNiBAQCBib29sIFFQcm9jZXNzUHJpdmF0ZTo6c3RhcnREZXRhY2hlZChxaW50NjQg KnBpZCkKKyAgICAgICAgICAgICAgICAgZW52cCA9IF9xX2R1cEVudmlyb25tZW50KGVudmlyb25t ZW50LmQuY29uc3REYXRhKCktPnZhcnMsICZlbnZjKTsKKyAgICAgICAgICAgICB9CisgCistICAg ICAgICAgICAgUUJ5dGVBcnJheSB0bXA7CisgICAgICAgICAgICAgaWYgKCFwcm9ncmFtLmNvbnRh aW5zKFFMYXRpbjFDaGFyKCcvJykpKSB7CisrICAgICAgICAgICAgICAgIC8vIGZpbmRFeGVjdXRh YmxlKCkgcmV0dXJucyBpdHMgYXJndW1lbnQgaWYgaXQncyBhbiBhYnNvbHV0ZSBwYXRoLAorKyAg ICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgaXQgc2VhcmNoZXMgJFBBVEg7IHJldHVybnMgZW1w dHkgaWYgbm90IGZvdW5kICh3ZSBoYW5kbGUKKysgICAgICAgICAgICAgICAgLy8gdGhhdCBjYXNl IG11Y2ggbGF0ZXIpCisgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJmV4ZUZpbGVQYXRo ID0gUVN0YW5kYXJkUGF0aHM6OmZpbmRFeGVjdXRhYmxlKHByb2dyYW0pOworLSAgICAgICAgICAg ICAgICBpZiAoIWV4ZUZpbGVQYXRoLmlzRW1wdHkoKSkKKy0gICAgICAgICAgICAgICAgICAgIHRt cCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKysgICAgICAgICAgICAgICAgY29u c3QgUUJ5dGVBcnJheSAmdG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgpOworKyAg ICAgICAgICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAodG1wLmNvbnN0RGF0YSgpKTsKKysgICAg ICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAoUUZp bGU6OmVuY29kZU5hbWUocHJvZ3JhbSkpOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBp ZiAodG1wLmlzRW1wdHkoKSkKKy0gICAgICAgICAgICAgICAgdG1wID0gUUZpbGU6OmVuY29kZU5h bWUocHJvZ3JhbSk7CistICAgICAgICAgICAgYXJndlswXSA9IHRtcC5kYXRhKCk7CisgCisgICAg ICAgICAgICAgaWYgKGVudnApCisgICAgICAgICAgICAgICAgIHF0X3NhZmVfZXhlY3ZlKGFyZ3Zb MF0sIGFyZ3YsIGVudnApOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9k ZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVs cy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwCitpbmRleCAzYTc5YzUwMmFmLi45OTdhNjM0ZTc2IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRlbW1v ZGVsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRl bW1vZGVsLmNwcAorQEAgLTMxOTYsOSArMzE5Niw4IEBAIGJvb2wgUUFic3RyYWN0SXRlbU1vZGVs OjpiZWdpbk1vdmVDb2x1bW5zKGNvbnN0IFFNb2RlbEluZGV4ICZzb3VyY2VQYXJlbnQsIGludCBz CisgICAgIGRlc3RpbmF0aW9uQ2hhbmdlLm5lZWRzQWRqdXN0ID0gZGVzdGluYXRpb25QYXJlbnQu aXNWYWxpZCgpICYmIGRlc3RpbmF0aW9uUGFyZW50LnJvdygpID49IHNvdXJjZUxhc3QgJiYgZGVz dGluYXRpb25QYXJlbnQucGFyZW50KCkgPT0gc291cmNlUGFyZW50OworICAgICBkLT5jaGFuZ2Vz LnB1c2goZGVzdGluYXRpb25DaGFuZ2UpOworIAorLSAgICBkLT5pdGVtc0Fib3V0VG9CZU1vdmVk KHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNvdXJjZUxhc3QsIGRlc3RpbmF0aW9uUGFyZW50 LCBkZXN0aW5hdGlvbkNoaWxkLCBRdDo6SG9yaXpvbnRhbCk7CistCisgICAgIGVtaXQgY29sdW1u c0Fib3V0VG9CZU1vdmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNvdXJjZUxhc3QsIGRl c3RpbmF0aW9uUGFyZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRUHJpdmF0ZVNpZ25hbCgpKTsKKysg ICAgZC0+aXRlbXNBYm91dFRvQmVNb3ZlZChzb3VyY2VQYXJlbnQsIHNvdXJjZUZpcnN0LCBzb3Vy Y2VMYXN0LCBkZXN0aW5hdGlvblBhcmVudCwgZGVzdGluYXRpb25DaGlsZCwgUXQ6Okhvcml6b250 YWwpOworICAgICByZXR1cm4gdHJ1ZTsKKyB9CisgCitAQCAtMzIzMSw3ICszMjMwLDYgQEAgdm9p ZCBRQWJzdHJhY3RJdGVtTW9kZWw6OmVuZE1vdmVDb2x1bW5zKCkKKyAgICAgICBhZGp1c3RlZFNv dXJjZSA9IGNyZWF0ZUluZGV4KGFkanVzdGVkU291cmNlLnJvdygpLCBhZGp1c3RlZFNvdXJjZS5j b2x1bW4oKSArIG51bU1vdmVkLCBhZGp1c3RlZFNvdXJjZS5pbnRlcm5hbFBvaW50ZXIoKSk7Cisg CisgICAgIGQtPml0ZW1zTW92ZWQoYWRqdXN0ZWRTb3VyY2UsIHJlbW92ZUNoYW5nZS5maXJzdCwg cmVtb3ZlQ2hhbmdlLmxhc3QsIGFkanVzdGVkRGVzdGluYXRpb24sIGluc2VydENoYW5nZS5maXJz dCwgUXQ6Okhvcml6b250YWwpOworLQorICAgICBlbWl0IGNvbHVtbnNNb3ZlZChhZGp1c3RlZFNv dXJjZSwgcmVtb3ZlQ2hhbmdlLmZpcnN0LCByZW1vdmVDaGFuZ2UubGFzdCwgYWRqdXN0ZWREZXN0 aW5hdGlvbiwgaW5zZXJ0Q2hhbmdlLmZpcnN0LCBRUHJpdmF0ZVNpZ25hbCgpKTsKKyB9CisgCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRmaWx0ZXJwcm94 eW1vZGVsLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJv eHltb2RlbC5jcHAKK2luZGV4IGRjNjM3OWQ5ZmIuLmM1ZTI4N2VlODQgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9kZWwuY3BwCisr KysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9kZWwu Y3BwCitAQCAtOTM5LDggKzkzOSw5IEBAIHZvaWQgUVNvcnRGaWx0ZXJQcm94eU1vZGVsUHJpdmF0 ZTo6aW5zZXJ0X3NvdXJjZV9pdGVtcygKKyAgICAgICAgICAgICAgICAgcS0+YmVnaW5JbnNlcnRD b2x1bW5zKHByb3h5X3BhcmVudCwgcHJveHlfc3RhcnQsIHByb3h5X2VuZCk7CisgICAgICAgICB9 CisgCistICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZV9pdGVtcy5zaXplKCk7ICsr aSkKKy0gICAgICAgICAgICBwcm94eV90b19zb3VyY2UuaW5zZXJ0KHByb3h5X3N0YXJ0ICsgaSwg c291cmNlX2l0ZW1zLmF0KGkpKTsKKysgICAgICAgIC8vIFRPRE86IHVzZSB0aGUgcmFuZ2UgUUxp c3Q6Omluc2VydCgpIG92ZXJsb2FkIG9uY2UgaXQgaXMgaW1wbGVtZW50ZWQgKFFUQlVHLTU4NjMz KS4KKysgICAgICAgIHByb3h5X3RvX3NvdXJjZS5pbnNlcnQocHJveHlfc3RhcnQsIHNvdXJjZV9p dGVtcy5zaXplKCksIDApOworKyAgICAgICAgc3RkOjpjb3B5KHNvdXJjZV9pdGVtcy5jYmVnaW4o KSwgc291cmNlX2l0ZW1zLmNlbmQoKSwgcHJveHlfdG9fc291cmNlLmJlZ2luKCkgKyBwcm94eV9z dGFydCk7CisgCisgICAgICAgICBidWlsZF9zb3VyY2VfdG9fcHJveHlfbWFwcGluZyhwcm94eV90 b19zb3VyY2UsIHNvdXJjZV90b19wcm94eSk7CisgCitAQCAtMzEyMyw4ICszMTI0LDkgQEAgYm9v bCBRU29ydEZpbHRlclByb3h5TW9kZWw6OmZpbHRlckFjY2VwdHNSb3coaW50IHNvdXJjZV9yb3cs IGNvbnN0IFFNb2RlbEluZGV4ICYKKyAKKyAgICAgaWYgKGQtPmZpbHRlcl9kYXRhLmlzRW1wdHko KSkKKyAgICAgICAgIHJldHVybiB0cnVlOworKworKyAgICBpbnQgY29sdW1uX2NvdW50ID0gZC0+ bW9kZWwtPmNvbHVtbkNvdW50KHNvdXJjZV9wYXJlbnQpOworICAgICBpZiAoZC0+ZmlsdGVyX2Nv bHVtbiA9PSAtMSkgeworLSAgICAgICAgaW50IGNvbHVtbl9jb3VudCA9IGQtPm1vZGVsLT5jb2x1 bW5Db3VudChzb3VyY2VfcGFyZW50KTsKKyAgICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNv bHVtbiA8IGNvbHVtbl9jb3VudDsgKytjb2x1bW4pIHsKKyAgICAgICAgICAgICBRTW9kZWxJbmRl eCBzb3VyY2VfaW5kZXggPSBkLT5tb2RlbC0+aW5kZXgoc291cmNlX3JvdywgY29sdW1uLCBzb3Vy Y2VfcGFyZW50KTsKKyAgICAgICAgICAgICBRU3RyaW5nIGtleSA9IGQtPm1vZGVsLT5kYXRhKHNv dXJjZV9pbmRleCwgZC0+ZmlsdGVyX3JvbGUpLnRvU3RyaW5nKCk7CitAQCAtMzEzMyw5ICszMTM1 LDEwIEBAIGJvb2wgUVNvcnRGaWx0ZXJQcm94eU1vZGVsOjpmaWx0ZXJBY2NlcHRzUm93KGludCBz b3VyY2Vfcm93LCBjb25zdCBRTW9kZWxJbmRleCAmCisgICAgICAgICB9CisgICAgICAgICByZXR1 cm4gZmFsc2U7CisgICAgIH0KKy0gICAgUU1vZGVsSW5kZXggc291cmNlX2luZGV4ID0gZC0+bW9k ZWwtPmluZGV4KHNvdXJjZV9yb3csIGQtPmZpbHRlcl9jb2x1bW4sIHNvdXJjZV9wYXJlbnQpOwor LSAgICBpZiAoIXNvdXJjZV9pbmRleC5pc1ZhbGlkKCkpIC8vIHRoZSBjb2x1bW4gbWF5IG5vdCBl eGlzdAorKworKyAgICBpZiAoZC0+ZmlsdGVyX2NvbHVtbiA+PSBjb2x1bW5fY291bnQpIC8vIHRo ZSBjb2x1bW4gbWF5IG5vdCBleGlzdAorICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgIFFNb2Rl bEluZGV4IHNvdXJjZV9pbmRleCA9IGQtPm1vZGVsLT5pbmRleChzb3VyY2Vfcm93LCBkLT5maWx0 ZXJfY29sdW1uLCBzb3VyY2VfcGFyZW50KTsKKyAgICAgUVN0cmluZyBrZXkgPSBkLT5tb2RlbC0+ ZGF0YShzb3VyY2VfaW5kZXgsIGQtPmZpbHRlcl9yb2xlKS50b1N0cmluZygpOworICAgICByZXR1 cm4gZC0+ZmlsdGVyX2RhdGEuaGFzTWF0Y2goa2V5KTsKKyB9CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcCBiL3F0YmFzZS9zcmMvY29y ZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHAKK2luZGV4IGNhMjg2NGRmODMuLjEzMmIy ZWFlNTIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBwbGlj YXRpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBwbGljYXRp b24uY3BwCitAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgc3RhdGljIGJvb2wgZG9Ob3RpZnkoUU9iamVj dCAqcmVjZWl2ZXIsIFFFdmVudCAqZXZlbnQpCisgYm9vbCBRQ29yZUFwcGxpY2F0aW9uUHJpdmF0 ZTo6c2VuZFRocm91Z2hBcHBsaWNhdGlvbkV2ZW50RmlsdGVycyhRT2JqZWN0ICpyZWNlaXZlciwg UUV2ZW50ICpldmVudCkKKyB7CisgICAgIC8vIFdlIGNhbid0IGFjY2VzcyB0aGUgYXBwbGljYXRp b24gZXZlbnQgZmlsdGVycyBvdXRzaWRlIG9mIHRoZSBtYWluIHRocmVhZCAocmFjZSBjb25kaXRp b25zKQorLSAgICBRX0FTU0VSVChyZWNlaXZlci0+ZF9mdW5jKCktPnRocmVhZERhdGEubG9hZFJl bGF4ZWQoKS0+dGhyZWFkLmxvYWRBY3F1aXJlKCkgPT0gbWFpblRocmVhZCgpKTsKKysgICAgUV9B U1NFUlQocmVjZWl2ZXItPmRfZnVuYygpLT50aHJlYWREYXRhLmxvYWRBY3F1aXJlKCktPnRocmVh ZC5sb2FkUmVsYXhlZCgpID09IG1haW5UaHJlYWQoKSk7CisgCisgICAgIGlmIChleHRyYURhdGEp IHsKKyAgICAgICAgIC8vIGFwcGxpY2F0aW9uIGV2ZW50IGZpbHRlcnMgYXJlIG9ubHkgY2FsbGVk IGZvciBvYmplY3RzIGluIHRoZSBHVUkgdGhyZWFkCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9i amVjdC5jcHAKK2luZGV4IDFlYjc5MTM4ZDkuLjM2Y2Q3ODBlZTEgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3QuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIva2VybmVsL3FvYmplY3QuY3BwCitAQCAtMTAxMCw3ICsxMDEwLDcgQEAgUU9iamVjdDo6flFP YmplY3QoKQorICAgICAgICAgZW1pdCBkZXN0cm95ZWQodGhpcyk7CisgICAgIH0KKyAKKy0gICAg aWYgKGQtPmRlY2xhcmF0aXZlRGF0YSkgeworKyAgICBpZiAoIWQtPmlzRGVsZXRpbmdDaGlsZHJl biAmJiBkLT5kZWNsYXJhdGl2ZURhdGEpIHsKKyAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxRQWJz dHJhY3REZWNsYXJhdGl2ZURhdGFJbXBsKj4oZC0+ZGVjbGFyYXRpdmVEYXRhKS0+b3duZWRCeVFt bDEpIHsKKyAgICAgICAgICAgICBpZiAoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpkZXN0cm95 ZWRfcW1sMSkKKyAgICAgICAgICAgICAgICAgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpkZXN0 cm95ZWRfcW1sMShkLT5kZWNsYXJhdGl2ZURhdGEsIHRoaXMpOworQEAgLTE1ODAsNyArMTU4MCw3 IEBAIHZvaWQgUU9iamVjdDo6bW92ZVRvVGhyZWFkKFFUaHJlYWQgKnRhcmdldFRocmVhZCkKKyAK KyAgICAgUVRocmVhZERhdGEgKmN1cnJlbnREYXRhID0gUVRocmVhZERhdGE6OmN1cnJlbnQoKTsK KyAgICAgUVRocmVhZERhdGEgKnRhcmdldERhdGEgPSB0YXJnZXRUaHJlYWQgPyBRVGhyZWFkRGF0 YTo6Z2V0Mih0YXJnZXRUaHJlYWQpIDogbnVsbHB0cjsKKy0gICAgUVRocmVhZERhdGEgKnRoaXNU aHJlYWREYXRhID0gZC0+dGhyZWFkRGF0YS5sb2FkUmVsYXhlZCgpOworKyAgICBRVGhyZWFkRGF0 YSAqdGhpc1RocmVhZERhdGEgPSBkLT50aHJlYWREYXRhLmxvYWRBY3F1aXJlKCk7CisgICAgIGlm ICghdGhpc1RocmVhZERhdGEtPnRocmVhZC5sb2FkQWNxdWlyZSgpICYmIGN1cnJlbnREYXRhID09 IHRhcmdldERhdGEpIHsKKyAgICAgICAgIC8vIG9uZSBleGNlcHRpb24gdG8gdGhlIHJ1bGU6IHdl IGFsbG93IG1vdmluZyBvYmplY3RzIHdpdGggbm8gdGhyZWFkIGFmZmluaXR5IHRvIHRoZSBjdXJy ZW50IHRocmVhZAorICAgICAgICAgY3VycmVudERhdGEgPSBkLT50aHJlYWREYXRhOworQEAgLTI2 MjAsNyArMjYyMCw3IEBAIGludCBRT2JqZWN0OjpyZWNlaXZlcnMoY29uc3QgY2hhciAqc2lnbmFs KSBjb25zdAorICAgICAgICAgaWYgKCFkLT5pc1NpZ25hbENvbm5lY3RlZChzaWduYWxfaW5kZXgp KQorICAgICAgICAgICAgIHJldHVybiByZWNlaXZlcnM7CisgCistICAgICAgICBpZiAoZC0+ZGVj bGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6cmVjZWl2ZXJzKSB7Cisr ICAgICAgICBpZiAoIWQtPmlzRGVsZXRpbmdDaGlsZHJlbiAmJiBkLT5kZWNsYXJhdGl2ZURhdGEg JiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMpIHsKKyAgICAgICAgICAgICBy ZWNlaXZlcnMgKz0gUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMoZC0+ZGVjbGFy YXRpdmVEYXRhLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxfaW5kZXgpOworICAgICAgICAgfQorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdF9wLmggYi9xdGJhc2Uvc3Jj L2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCitpbmRleCAwYjgyN2E1MmNhLi4xM2ZmYjg4OTk5 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaAorKysr IGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaAorQEAgLTQ0NCw3ICs0NDQs NyBAQCBpbmxpbmUgdm9pZCBRT2JqZWN0UHJpdmF0ZTo6Y2hlY2tGb3JJbmNvbXBhdGlibGVMaWJy YXJ5VmVyc2lvbihpbnQgdmVyc2lvbikgY29ucworIAorIGlubGluZSBib29sIFFPYmplY3RQcml2 YXRlOjppc0RlY2xhcmF0aXZlU2lnbmFsQ29ubmVjdGVkKHVpbnQgc2lnbmFsX2luZGV4KSBjb25z dAorIHsKKy0gICAgcmV0dXJuIGRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNsYXJhdGl2 ZURhdGE6OmlzU2lnbmFsQ29ubmVjdGVkCisrICAgIHJldHVybiAhaXNEZWxldGluZ0NoaWxkcmVu ICYmIGRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmlzU2lnbmFs Q29ubmVjdGVkCisgICAgICAgICAgICAgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjppc1Np Z25hbENvbm5lY3RlZChkZWNsYXJhdGl2ZURhdGEsIHFfZnVuYygpLCBzaWduYWxfaW5kZXgpOwor IH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3F0cmFuc2xhdG9y LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3IuY3BwCitpbmRleCAy ODEyZmZiN2VhLi5iYzAxNzdjNWVjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2tl cm5lbC9xdHJhbnNsYXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRy YW5zbGF0b3IuY3BwCitAQCAtOTAyLDcgKzkwMiw3IEBAIHN0YXRpYyBRU3RyaW5nIGdldE1lc3Nh Z2UoY29uc3QgdWNoYXIgKm0sIGNvbnN0IHVjaGFyICplbmQsIGNvbnN0IGNoYXIgKmNvbnRleHQs CisgICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgICBjYXNlIFRhZ19UcmFuc2xhdGlvbjog eworICAgICAgICAgICAgIGludCBsZW4gPSByZWFkMzIobSk7CistICAgICAgICAgICAgaWYgKGxl biAlIDEpCisrICAgICAgICAgICAgaWYgKGxlbiAmIDEpCisgICAgICAgICAgICAgICAgIHJldHVy biBRU3RyaW5nKCk7CisgICAgICAgICAgICAgbSArPSA0OworICAgICAgICAgICAgIGlmICghbnVt ZXJ1cy0tKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWlt ZWRhdGFiYXNlLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFz ZS5jcHAKK2luZGV4IDlkZTIyY2VmMzMuLmZmODY4YTMyNjggMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwCitAQCAtMzg5LDIwICszODksMjMg QEAgUU1pbWVUeXBlIFFNaW1lRGF0YWJhc2VQcml2YXRlOjptaW1lVHlwZUZvckZpbGVOYW1lQW5k RGF0YShjb25zdCBRU3RyaW5nICZmaWxlTmEKKyAgICAgICAgIC8vIERpc2FtYmlndWF0ZSBjb25m bGljdGluZyBleHRlbnNpb25zIChpZiBtYWdpYyBtYXRjaGluZyBmb3VuZCBzb21ldGhpbmcpCisg ICAgICAgICBpZiAoY2FuZGlkYXRlQnlEYXRhLmlzVmFsaWQoKSAmJiBtYWdpY0FjY3VyYWN5ID4g MCkgeworICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgc25pZmZlZE1pbWUgPSBjYW5kaWRhdGVC eURhdGEubmFtZSgpOworLSAgICAgICAgICAgIC8vIElmIHRoZSBzbmlmZmVkTWltZSBtYXRjaGVz IGEgZ2xvYiBtYXRjaCwgdXNlIGl0CisrICAgICAgICAgICAgLy8gSWYgdGhlIHNuaWZmZWRNaW1l IG1hdGNoZXMgYSBoaWdoZXN0LXdlaWdodCBnbG9iIG1hdGNoLCB1c2UgaXQKKyAgICAgICAgICAg ICBpZiAoY2FuZGlkYXRlc0J5TmFtZS5tX21hdGNoaW5nTWltZVR5cGVzLmNvbnRhaW5zKHNuaWZm ZWRNaW1lKSkgeworICAgICAgICAgICAgICAgICAqYWNjdXJhY3lQdHIgPSAxMDA7CisgICAgICAg ICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVCeURhdGE7CisgICAgICAgICAgICAgfQorLSAgICAg ICAgICAgIGZvciAoY29uc3QgUVN0cmluZyAmbSA6IHFBc0NvbnN0KGNhbmRpZGF0ZXNCeU5hbWUu bV9tYXRjaGluZ01pbWVUeXBlcykpIHsKKysgICAgICAgICAgICBmb3IgKGNvbnN0IFFTdHJpbmcg Jm0gOiBxQXNDb25zdChjYW5kaWRhdGVzQnlOYW1lLm1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMpKSB7 CisgICAgICAgICAgICAgICAgIGlmIChpbmhlcml0cyhtLCBzbmlmZmVkTWltZSkpIHsKKyAgICAg ICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgbWFnaWMgKyBwYXR0ZXJuIHBvaW50aW5nIHRvIHRo aXMsIHNvIGl0J3MgYSBwcmV0dHkgZ29vZCBtYXRjaAorICAgICAgICAgICAgICAgICAgICAgKmFj Y3VyYWN5UHRyID0gMTAwOworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1pbWVUeXBlRm9y TmFtZShtKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKy0gICAgICAgICAg ICAqYWNjdXJhY3lQdHIgPSBtYWdpY0FjY3VyYWN5OworLSAgICAgICAgICAgIHJldHVybiBjYW5k aWRhdGVCeURhdGE7CisrICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXNCeU5hbWUubV9hbGxNYXRj aGluZ01pbWVUeXBlcy5pc0VtcHR5KCkpIHsKKysgICAgICAgICAgICAgICAgLy8gTm8gZ2xvYiwg dXNlIG1hZ2ljCisrICAgICAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IG1hZ2ljQWNjdXJhY3k7 CisrICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVCeURhdGE7CisrICAgICAgICAgICAg fQorICAgICAgICAgfQorICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGli L21pbWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1l dHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAKK2luZGV4IGE4MTExMmQyMjcuLmZhOGY0YzU0NWQg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBhdHRl cm4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBhdHRl cm4uY3BwCitAQCAtODMsNyArODMsMTAgQEAgdm9pZCBRTWltZUdsb2JNYXRjaFJlc3VsdDo6YWRk TWF0Y2goY29uc3QgUVN0cmluZyAmbWltZVR5cGUsIGludCB3ZWlnaHQsIGNvbnN0IFEKKyAgICAg fQorICAgICBpZiAoIW1fbWF0Y2hpbmdNaW1lVHlwZXMuY29udGFpbnMobWltZVR5cGUpKSB7Cisg ICAgICAgICBtX21hdGNoaW5nTWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7CistICAgICAgICBt X2FsbE1hdGNoaW5nTWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7CisrICAgICAgICBpZiAocmVw bGFjZSkKKysgICAgICAgICAgICBtX2FsbE1hdGNoaW5nTWltZVR5cGVzLnByZXBlbmQobWltZVR5 cGUpOyAvLyBoaWdoZXN0LXdlaWdodCBmaXJzdAorKyAgICAgICAgZWxzZQorKyAgICAgICAgICAg IG1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKyAgICAgICAgIG1fa25v d25TdWZmaXhMZW5ndGggPSBrbm93blN1ZmZpeExlbmd0aDsKKyAgICAgfQorIH0KK0BAIC05NCw3 ICs5Nyw3IEBAIFFNaW1lR2xvYlBhdHRlcm46OlBhdHRlcm5UeXBlIFFNaW1lR2xvYlBhdHRlcm46 OmRldGVjdFBhdHRlcm5UeXBlKGNvbnN0IFFTdHJpbmcKKyAgICAgaWYgKCFwYXR0ZXJuTGVuZ3Ro KQorICAgICAgICAgcmV0dXJuIE90aGVyUGF0dGVybjsKKyAKKy0gICAgY29uc3QgYm9vbCBzdGFy Q291bnQgPSBwYXR0ZXJuLmNvdW50KFFMYXRpbjFDaGFyKCcqJykpID09IDE7CisrICAgIGNvbnN0 IGludCBzdGFyQ291bnQgPSBwYXR0ZXJuLmNvdW50KFFMYXRpbjFDaGFyKCcqJykpOworICAgICBj b25zdCBib29sIGhhc1NxdWFyZUJyYWNrZXQgPSBwYXR0ZXJuLmluZGV4T2YoUUxhdGluMUNoYXIo J1snKSkgIT0gLTE7CisgICAgIGNvbnN0IGJvb2wgaGFzUXVlc3Rpb25NYXJrID0gcGF0dGVybi5p bmRleE9mKFFMYXRpbjFDaGFyKCc/JykpICE9IC0xOworIAorQEAgLTEwNiwxMCArMTA5LDEwIEBA IFFNaW1lR2xvYlBhdHRlcm46OlBhdHRlcm5UeXBlIFFNaW1lR2xvYlBhdHRlcm46OmRldGVjdFBh dHRlcm5UeXBlKGNvbnN0IFFTdHJpbmcKKyAgICAgICAgICAgICAvLyBQYXR0ZXJucyBsaWtlICJS RUFETUUqIiAod2VsbCB0aGlzIGlzIGN1cnJlbnRseSB0aGUgb25seSBvbmUgbGlrZSB0aGF0Li4u KQorICAgICAgICAgICAgIGlmIChwYXR0ZXJuLmF0KHBhdHRlcm5MZW5ndGggLSAxKSA9PSBRTGF0 aW4xQ2hhcignKicpKQorICAgICAgICAgICAgICAgICByZXR1cm4gUHJlZml4UGF0dGVybjsKKy0g ICAgICAgIH0KKy0gICAgICAgIC8vIE5hbWVzIHdpdGhvdXQgYW55IHdpbGRjYXJkcyBsaWtlICJS RUFETUUiCistICAgICAgICBpZiAoc3RhckNvdW50ID09IDApCisrICAgICAgICB9IGVsc2UgaWYg KHN0YXJDb3VudCA9PSAwKSB7CisrICAgICAgICAgICAgLy8gTmFtZXMgd2l0aG91dCBhbnkgd2ls ZGNhcmRzIGxpa2UgIlJFQURNRSIKKyAgICAgICAgICAgICByZXR1cm4gTGl0ZXJhbFBhdHRlcm47 CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaWYgKHBhdHRlcm4gPT0gUUxhdGluMVN0cmlu ZygiWzAtOV1bMC05XVswLTldLnZkciIpKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxp Yi9taW1ldHlwZXMvcW1pbWVwcm92aWRlci5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5 cGVzL3FtaW1lcHJvdmlkZXIuY3BwCitpbmRleCAyNThkZGRmOGNiLi40NjQyZDBmMmQwIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3ZpZGVyLmNwcAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3ZpZGVyLmNwcAorQEAg LTI0NCwxNSArMjQ0LDE4IEBAIHZvaWQgUU1pbWVCaW5hcnlQcm92aWRlcjo6YWRkRmlsZU5hbWVN YXRjaGVzKGNvbnN0IFFTdHJpbmcgJmZpbGVOYW1lLCBRTWltZUdsb2JNCisgICAgIGNvbnN0IFFT dHJpbmcgbG93ZXJGaWxlTmFtZSA9IGZpbGVOYW1lLnRvTG93ZXIoKTsKKyAgICAgLy8gQ2hlY2sg bGl0ZXJhbHMgKGUuZy4gIk1ha2VmaWxlIikKKyAgICAgbWF0Y2hHbG9iTGlzdChyZXN1bHQsIG1f Y2FjaGVGaWxlLCBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc0xpdGVyYWxMaXN0T2Zmc2V0KSwg ZmlsZU5hbWUpOworLSAgICAvLyBDaGVjayBjb21wbGV4IGdsb2JzIChlLmcuICJjYWxsZ3JpbmQu b3V0WzAtOV0qIikKKy0gICAgbWF0Y2hHbG9iTGlzdChyZXN1bHQsIG1fY2FjaGVGaWxlLCBtX2Nh Y2hlRmlsZS0+Z2V0VWludDMyKFBvc0dsb2JMaXN0T2Zmc2V0KSwgZmlsZU5hbWUpOworICAgICAv LyBDaGVjayB0aGUgdmVyeSBjb21tb24gKi50eHQgY2FzZXMgd2l0aCB0aGUgc3VmZml4IHRyZWUK Ky0gICAgY29uc3QgaW50IHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0ID0gbV9jYWNoZUZpbGUtPmdl dFVpbnQzMihQb3NSZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7CistICAgIGNvbnN0IGludCBudW1S b290cyA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQpOwor LSAgICBjb25zdCBpbnQgZmlyc3RSb290T2Zmc2V0ID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihy ZXZlcnNlU3VmZml4VHJlZU9mZnNldCArIDQpOworLSAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0 LCBtX2NhY2hlRmlsZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgbG93ZXJGaWxlTmFtZSwg bG93ZXJGaWxlTmFtZS5sZW5ndGgoKSAtIDEsIGZhbHNlKTsKKysgICAgaWYgKHJlc3VsdC5tX21h dGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkgeworKyAgICAgICAgY29uc3QgaW50IHJldmVyc2VT dWZmaXhUcmVlT2Zmc2V0ID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NSZXZlcnNlU3VmZml4 VHJlZU9mZnNldCk7CisrICAgICAgICBjb25zdCBpbnQgbnVtUm9vdHMgPSBtX2NhY2hlRmlsZS0+ Z2V0VWludDMyKHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKysgICAgICAgIGNvbnN0IGludCBm aXJzdFJvb3RPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKHJldmVyc2VTdWZmaXhUcmVl T2Zmc2V0ICsgNCk7CisrICAgICAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBtX2NhY2hlRmls ZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgbG93ZXJGaWxlTmFtZSwgbG93ZXJGaWxlTmFt ZS5sZW5ndGgoKSAtIDEsIGZhbHNlKTsKKysgICAgICAgIGlmIChyZXN1bHQubV9tYXRjaGluZ01p bWVUeXBlcy5pc0VtcHR5KCkpCisrICAgICAgICAgICAgbWF0Y2hTdWZmaXhUcmVlKHJlc3VsdCwg bV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQsIGZpbGVOYW1lLCBmaWxlTmFt ZS5sZW5ndGgoKSAtIDEsIHRydWUpOworKyAgICB9CisrICAgIC8vIENoZWNrIGNvbXBsZXggZ2xv YnMgKGUuZy4gImNhbGxncmluZC5vdXRbMC05XSoiIG9yICJSRUFETUUqIikKKyAgICAgaWYgKHJl c3VsdC5tX21hdGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkKKy0gICAgICAgIG1hdGNoU3VmZml4 VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RSb290T2Zmc2V0LCBmaWxl TmFtZSwgZmlsZU5hbWUubGVuZ3RoKCkgLSAxLCB0cnVlKTsKKysgICAgICAgIG1hdGNoR2xvYkxp c3QocmVzdWx0LCBtX2NhY2hlRmlsZSwgbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NHbG9iTGlz dE9mZnNldCksIGZpbGVOYW1lKTsKKyB9CisgCisgdm9pZCBRTWltZUJpbmFyeVByb3ZpZGVyOjpt YXRjaEdsb2JMaXN0KFFNaW1lR2xvYk1hdGNoUmVzdWx0ICZyZXN1bHQsIENhY2hlRmlsZSAqY2Fj aGVGaWxlLCBpbnQgb2ZmLCBjb25zdCBRU3RyaW5nICZmaWxlTmFtZSkKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAKK2luZGV4IDE3ZTZmMTEx YWIuLjJlNDBiNmM4ZmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXph dGlvbi9xanNvbnBhcnNlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0 aW9uL3Fqc29ucGFyc2VyLmNwcAorQEAgLTM3OSwxMCArMzc5LDMwIEBAIGVycm9yOgorICAgICBy ZXR1cm4gUUNib3JWYWx1ZSgpOworIH0KKyAKKysvLyBXZSBuZWVkIHRvIHJldGFpbiB0aGUgX2xh c3RfIHZhbHVlIGZvciBhbnkgZHVwbGljYXRlIGtleXMgYW5kIHdlIG5lZWQgdG8gZGVyZWYgY29u dGFpbmVycy4KKysvLyBUaGVyZWZvcmUgdGhlIG1hbnVhbCBpbXBsZW1lbnRhdGlvbiBvZiBzdGQ6 OnVuaXF1ZSgpLgorK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBDb21wYXJl LCB0eXBlbmFtZSBBc3NpZ24+Cisrc3RhdGljIEl0ZXJhdG9yIGN1c3RvbUFzc2lnbmluZ1VuaXF1 ZUxhc3QoSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3QsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFyZSBjb21wYXJlLCBBc3NpZ24gYXNzaWduKQor K3sKKysgICAgZmlyc3QgPSBzdGQ6OmFkamFjZW50X2ZpbmQoZmlyc3QsIGxhc3QsIGNvbXBhcmUp OworKyAgICBpZiAoZmlyc3QgPT0gbGFzdCkKKysgICAgICAgIHJldHVybiBsYXN0OworKworKyAg ICBJdGVyYXRvciByZXN1bHQgPSBmaXJzdDsKKysgICAgd2hpbGUgKCsrZmlyc3QgIT0gbGFzdCkg eworKyAgICAgICAgaWYgKCFjb21wYXJlKCpyZXN1bHQsICpmaXJzdCkpCisrICAgICAgICAgICAg KytyZXN1bHQ7CisrICAgICAgICBpZiAocmVzdWx0ICE9IGZpcnN0KQorKyAgICAgICAgICAgIGFz c2lnbigqcmVzdWx0LCAqZmlyc3QpOworKyAgICB9CisrCisrICAgIHJldHVybiArK3Jlc3VsdDsK Kyt9CisrCisgc3RhdGljIHZvaWQgc29ydENvbnRhaW5lcihRQ2JvckNvbnRhaW5lclByaXZhdGUg KmNvbnRhaW5lcikKKyB7CisgICAgIHVzaW5nIEZvcndhcmQgPSBRSnNvblByaXZhdGU6OktleUl0 ZXJhdG9yOworLSAgICB1c2luZyBSZXZlcnNlID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPEZvcndh cmQ+OworICAgICB1c2luZyBWYWx1ZSA9IEZvcndhcmQ6OnZhbHVlX3R5cGU7CisgCisgICAgIGF1 dG8gY29tcGFyZSA9IFtjb250YWluZXJdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikK K0BAIC00MjAsMTcgKzQ0MCwzMSBAQCBzdGF0aWMgdm9pZCBzb3J0Q29udGFpbmVyKFFDYm9yQ29u dGFpbmVyUHJpdmF0ZSAqY29udGFpbmVyKQorICAgICAgICAgfQorICAgICB9OworIAorLSAgICBz dGQ6OnNvcnQoRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmJlZ2luKCkpLCBGb3J3YXJkKGNv bnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLAorLSAgICAgICAgICAgICAgWyZjb21wYXJlXShjb25z dCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpIHsgcmV0dXJuIGNvbXBhcmUoYSwgYikgPCAwOyB9 KTsKKysgICAgLy8gVGhlIGVsZW1lbnRzJyBjb250YWluZXJzIGFyZSBvd25lZCBieSB0aGUgb3V0 ZXIgY29udGFpbmVyLCBub3QgYnkgdGhlIGVsZW1lbnRzIHRoZW1zZWx2ZXMuCisrICAgIGF1dG8g bW92ZSA9IFtdKEZvcndhcmQ6OnJlZmVyZW5jZSB0YXJnZXQsIEZvcndhcmQ6OnJlZmVyZW5jZSBz b3VyY2UpCisrICAgIHsKKysgICAgICAgIFF0Q2Jvcjo6RWxlbWVudCAmdGFyZ2V0VmFsdWUgPSB0 YXJnZXQudmFsdWUoKTsKKysKKysgICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaGFzIGEgY29udGFp bmVyLCBkZXJlZiBpdCBiZWZvcmUgb3ZlcndyaXRpbmcsIHNvIHRoYXQgd2UgZG9uJ3QgbGVhay4K KysgICAgICAgIGlmICh0YXJnZXRWYWx1ZS5mbGFncyAmIFF0Q2Jvcjo6RWxlbWVudDo6SXNDb250 YWluZXIpCisrICAgICAgICAgICAgdGFyZ2V0VmFsdWUuY29udGFpbmVyLT5kZXJlZigpOworKwor KyAgICAgICAgLy8gRG8gbm90IG1vdmUsIHNvIHRoYXQgd2UgY2FuIGNsZWFyIHRoZSB2YWx1ZSBh ZnRlcndhcmRzLgorKyAgICAgICAgdGFyZ2V0ID0gc291cmNlOworKworKyAgICAgICAgLy8gQ2xl YXIgdGhlIHNvdXJjZSB2YWx1ZSwgc28gdGhhdCB3ZSBkb24ndCBzdG9yZSB0aGUgc2FtZSBjb250 YWluZXIgdHdpY2UuCisrICAgICAgICBzb3VyY2UudmFsdWUoKSA9IFF0Q2Jvcjo6RWxlbWVudCgp OworKyAgICB9OworKworKyAgICBzdGQ6OnN0YWJsZV9zb3J0KAorKyAgICAgICAgICAgICAgICBG b3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksIEZvcndhcmQoY29udGFpbmVyLT5l bGVtZW50cy5lbmQoKSksCisrICAgICAgICAgICAgICAgIFsmY29tcGFyZV0oY29uc3QgVmFsdWUg JmEsIGNvbnN0IFZhbHVlICZiKSB7IHJldHVybiBjb21wYXJlKGEsIGIpIDwgMDsgfSk7CisgCist ICAgIC8vIFdlIG5lZWQgdG8gcmV0YWluIHRoZSBfbGFzdF8gdmFsdWUgZm9yIGFueSBkdXBsaWNh dGUga2V5cy4gVGhlcmVmb3JlIHRoZSByZXZlcnNlIGRhbmNlIGhlcmUuCistICAgIGF1dG8gaXQg PSBzdGQ6OnVuaXF1ZShSZXZlcnNlKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLCBSZXZlcnNl KGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksCistICAgICAgICAgICAgICAgICAgICAgICAg ICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeworLSAgICAgICAg cmV0dXJuIGNvbXBhcmUoYSwgYikgPT0gMDsKKy0gICAgfSkuYmFzZSgpLmVsZW1lbnRzSXRlcmF0 b3IoKTsKKysgICAgRm9yd2FyZCByZXN1bHQgPSBjdXN0b21Bc3NpZ25pbmdVbmlxdWVMYXN0KAor KyAgICAgICAgICAgICAgICBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksICBG b3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLAorKyAgICAgICAgICAgICAgICBbJmNv bXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeyByZXR1cm4gY29tcGFyZShh LCBiKSA9PSAwOyB9LCBtb3ZlKTsKKyAKKy0gICAgLy8gVGhlIGVyYXNlIGZyb20gYmVnaW5uaW5n IGlzIGV4cGVuc2l2ZSBidXQgaG9wZWZ1bGx5IHJhcmUuCistICAgIGNvbnRhaW5lci0+ZWxlbWVu dHMuZXJhc2UoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpLCBpdCk7CisrICAgIGNvbnRhaW5l ci0+ZWxlbWVudHMuZXJhc2UocmVzdWx0LmVsZW1lbnRzSXRlcmF0b3IoKSwgY29udGFpbmVyLT5l bGVtZW50cy5lbmQoKSk7CisgfQorIAorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxp Yi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Nlcmlh bGl6YXRpb24vcXhtbHN0cmVhbS5jcHAKK2luZGV4IGIyZjg0NjU0NGQuLjdjZDQ1N2JhM2EgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFtLmNw cAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcXhtbHN0cmVhbS5jcHAK K0BAIC05ODAsNyArOTgwLDcgQEAgaW5saW5lIHVpbnQgUVhtbFN0cmVhbVJlYWRlclByaXZhdGU6 OnBlZWtDaGFyKCkKKyBib29sIFFYbWxTdHJlYW1SZWFkZXJQcml2YXRlOjpzY2FuVW50aWwoY29u c3QgY2hhciAqc3RyLCBzaG9ydCB0b2tlblRvSW5qZWN0KQorIHsKKyAgICAgaW50IHBvcyA9IHRl eHRCdWZmZXIuc2l6ZSgpOworLSAgICBpbnQgb2xkTGluZU51bWJlciA9IGxpbmVOdW1iZXI7Cisr ICAgIGNvbnN0IGF1dG8gb2xkTGluZU51bWJlciA9IGxpbmVOdW1iZXI7CisgCisgICAgIHVpbnQg YzsKKyAgICAgd2hpbGUgKChjID0gZ2V0Q2hhcigpKSAhPSBTdHJlYW1FT0YpIHsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcCBiL3F0YmFzZS9zcmMvY29y ZWxpYi90ZXh0L3FzdHJpbmcuY3BwCitpbmRleCAzZTg4YWI0ODU5Li44ZGVlYWU0N2JiIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZy5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwCitAQCAtMTIzMTIsNyArMTIzMTIsNyBAQCBz dGF0aWMgcXNpemV0eXBlIHFMYXN0SW5kZXhPZihIYXlzdGFjayBoYXlzdGFjazAsIHFzaXpldHlw ZSBmcm9tLAorICAgICBjb25zdCBhdXRvIG5lZWRsZSA9IG5lZWRsZTAuZGF0YSgpOworICAgICBj b25zdCBhdXRvICplbmQgPSBoYXlzdGFjazsKKyAgICAgaGF5c3RhY2sgKz0gZnJvbTsKKy0gICAg Y29uc3Qgc3RkOjpzaXplX3Qgc2xfbWludXNfMSA9IHNsIC0gMTsKKysgICAgY29uc3Qgc3RkOjpz aXplX3Qgc2xfbWludXNfMSA9IHNsID8gc2wgLSAxIDogMDsKKyAgICAgY29uc3QgYXV0byAqbiA9 IG5lZWRsZSArIHNsX21pbnVzXzE7CisgICAgIGNvbnN0IGF1dG8gKmggPSBoYXlzdGFjayArIHNs X21pbnVzXzE7CisgICAgIHN0ZDo6c2l6ZV90IGhhc2hOZWVkbGUgPSAwLCBoYXNoSGF5c3RhY2sg PSAwOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRv cl9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0b3JfcC5oCitpbmRl eCAyMTk1ODliNmU0Li4xZDBjNjZjYzc4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L3RleHQvcXN0cmluZ2l0ZXJhdG9yX3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQv cXN0cmluZ2l0ZXJhdG9yX3AuaAorQEAgLTYxLDYgKzYxLDggQEAgY2xhc3MgUVN0cmluZ0l0ZXJh dG9yCisgeworICAgICBRU3RyaW5nOjpjb25zdF9pdGVyYXRvciBpLCBwb3MsIGU7CisgICAgIFFf U1RBVElDX0FTU0VSVCgoc3RkOjppc19zYW1lPFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yLCBjb25z dCBRQ2hhciAqPjo6dmFsdWUpKTsKKysgICAgc3RhdGljIGJvb2wgbGVzcyhjb25zdCBRQ2hhciAq bGhzLCBjb25zdCBRQ2hhciAqcmhzKSBub2V4Y2VwdAorKyAgICB7IHJldHVybiBzdGQ6Omxlc3M8 UVN0cmluZzo6Y29uc3RfaXRlcmF0b3I+e30obGhzLCByaHMpOyB9CisgcHVibGljOgorICAgICBl eHBsaWNpdCBRU3RyaW5nSXRlcmF0b3IoUVN0cmluZ1ZpZXcgc3RyaW5nLCBxc2l6ZXR5cGUgaWR4 ID0gMCkKKyAgICAgICAgIDogaShzdHJpbmcuYmVnaW4oKSksCitAQCAtOTUsNyArOTcsOCBAQCBw dWJsaWM6CisgCisgICAgIGlubGluZSB2b2lkIHNldFBvc2l0aW9uKFFTdHJpbmc6OmNvbnN0X2l0 ZXJhdG9yIHBvc2l0aW9uKQorICAgICB7CistICAgICAgICBRX0FTU0VSVF9YKGkgPD0gcG9zaXRp b24gJiYgcG9zaXRpb24gPD0gZSwgUV9GVU5DX0lORk8sICJwb3NpdGlvbiBvdXQgb2YgYm91bmRz Iik7CisrICAgICAgICBRX0FTU0VSVF9YKCFsZXNzKHBvc2l0aW9uLCBpKSAmJiAhbGVzcyhlLCBw b3NpdGlvbiksCisrICAgICAgICAgICAgICAgICAgIFFfRlVOQ19JTkZPLCAicG9zaXRpb24gb3V0 IG9mIGJvdW5kcyIpOworICAgICAgICAgcG9zID0gcG9zaXRpb247CisgICAgIH0KKyAKK0BAIC0x MDMsNyArMTA2LDcgQEAgcHVibGljOgorIAorICAgICBpbmxpbmUgYm9vbCBoYXNOZXh0KCkgY29u c3QKKyAgICAgeworLSAgICAgICAgcmV0dXJuIHBvcyA8IGU7CisrICAgICAgICByZXR1cm4gbGVz cyhwb3MsIGUpOworICAgICB9CisgCisgICAgIGlubGluZSB2b2lkIGFkdmFuY2UoKQorQEAgLTEy MCwxNiArMTIzLDIwIEBAIHB1YmxpYzoKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNO ZXh0KCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBpdGVtIik7CisgCist ICAgICAgICBpZiAoUV9VTkxJS0VMWSgocG9zKyspLT5pc0hpZ2hTdXJyb2dhdGUoKSkpCisrICAg ICAgICBpZiAoUV9VTkxJS0VMWSgocG9zKyspLT5pc0hpZ2hTdXJyb2dhdGUoKSkpIHsKKysgICAg ICAgICAgICBRX0FTU0VSVChoYXNOZXh0KCkgJiYgcG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKTsKKyAg ICAgICAgICAgICArK3BvczsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICBpbmxpbmUgdWlu dCBwZWVrTmV4dFVuY2hlY2tlZCgpIGNvbnN0CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUX1go aGFzTmV4dCgpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIG5leHQgaXRlbSIpOwor IAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9zLT5pc0hpZ2hTdXJyb2dhdGUoKSkpCisrICAg ICAgICBpZiAoUV9VTkxJS0VMWShwb3MtPmlzSGlnaFN1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAg ICAgIFFfQVNTRVJUKGxlc3MocG9zICsgMSwgZSkgJiYgcG9zWzFdLmlzTG93U3Vycm9nYXRlKCkp OworICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KHBvc1swXSwgcG9z WzFdKTsKKysgICAgICAgIH0KKyAKKyAgICAgICAgIHJldHVybiBwb3MtPnVuaWNvZGUoKTsKKyAg ICAgfQorQEAgLTE1NSw4ICsxNjIsMTAgQEAgcHVibGljOgorICAgICAgICAgUV9BU1NFUlRfWCho YXNOZXh0KCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBpdGVtIik7Cisg CisgICAgICAgICBjb25zdCBRQ2hhciBjdXIgPSAqcG9zKys7CistICAgICAgICBpZiAoUV9VTkxJ S0VMWShjdXIuaXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkoY3Vy LmlzSGlnaFN1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc05leHQoKSAm JiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vy cm9nYXRlVG9VY3M0KGN1ciwgKnBvcysrKTsKKysgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBj dXIudW5pY29kZSgpOworICAgICB9CisgCitAQCAtMTY2LDcgKzE3NSw3IEBAIHB1YmxpYzoKKyAK KyAgICAgICAgIGNvbnN0IFFDaGFyIHVjID0gKnBvcysrOworICAgICAgICAgaWYgKFFfVU5MSUtF TFkodWMuaXNTdXJyb2dhdGUoKSkpIHsKKy0gICAgICAgICAgICBpZiAoUV9MSUtFTFkodWMuaXNI aWdoU3Vycm9nYXRlKCkgJiYgcG9zIDwgZSAmJiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpKQorKyAg ICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0hpZ2hTdXJyb2dhdGUoKSAmJiBoYXNOZXh0KCkg JiYgcG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFFDaGFy OjpzdXJyb2dhdGVUb1VjczQodWMsICpwb3MrKyk7CisgICAgICAgICAgICAgcmV0dXJuIGludmFs aWRBczsKKyAgICAgICAgIH0KK0BAIC0xNzgsNyArMTg3LDcgQEAgcHVibGljOgorIAorICAgICBp bmxpbmUgYm9vbCBoYXNQcmV2aW91cygpIGNvbnN0CisgICAgIHsKKy0gICAgICAgIHJldHVybiBw b3MgPiBpOworKyAgICAgICAgcmV0dXJuIGxlc3MoaSwgcG9zKTsKKyAgICAgfQorIAorICAgICBp bmxpbmUgdm9pZCByZWNlZGUoKQorQEAgLTE5NiwxNiArMjA1LDIwIEBAIHB1YmxpYzoKKyAgICAg eworICAgICAgICAgUV9BU1NFUlRfWChoYXNQcmV2aW91cygpLCBRX0ZVTkNfSU5GTywgIml0ZXJh dG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0iKTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElLRUxZ KCgtLXBvcyktPmlzTG93U3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkoKC0t cG9zKS0+aXNMb3dTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVChoYXNQcmV2 aW91cygpICYmIHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIC0tcG9z OworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIGlubGluZSB1aW50IHBlZWtQcmV2aW91c1Vu Y2hlY2tlZCgpIGNvbnN0CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzUHJldmlvdXMo KSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBwcmV2aW91cyBpdGVtIik7CisgCist ICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3NbLTFdLmlzTG93U3Vycm9nYXRlKCkpKQorKyAgICAg ICAgaWYgKFFfVU5MSUtFTFkocG9zWy0xXS5pc0xvd1N1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAg ICAgIFFfQVNTRVJUKGxlc3MoaSArIDEsIHBvcykgJiYgcG9zWy0yXS5pc0hpZ2hTdXJyb2dhdGUo KSk7CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQocG9zWy0yXSwg cG9zWy0xXSk7CisrICAgICAgICB9CisgICAgICAgICByZXR1cm4gcG9zWy0xXS51bmljb2RlKCk7 CisgICAgIH0KKyAKK0BAIC0yMzAsOCArMjQzLDEwIEBAIHB1YmxpYzoKKyAgICAgICAgIFFfQVNT RVJUX1goaGFzUHJldmlvdXMoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBwcmV2 aW91cyBpdGVtIik7CisgCisgICAgICAgICBjb25zdCBRQ2hhciBjdXIgPSAqLS1wb3M7CistICAg ICAgICBpZiAoUV9VTkxJS0VMWShjdXIuaXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAo UV9VTkxJS0VMWShjdXIuaXNMb3dTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VS VChoYXNQcmV2aW91cygpICYmIHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpOworICAgICAgICAg ICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KCotLXBvcywgY3VyKTsKKysgICAgICAg IH0KKyAgICAgICAgIHJldHVybiBjdXIudW5pY29kZSgpOworICAgICB9CisgCitAQCAtMjQxLDcg KzI1Niw3IEBAIHB1YmxpYzoKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIHVjID0gKi0tcG9zOwor ICAgICAgICAgaWYgKFFfVU5MSUtFTFkodWMuaXNTdXJyb2dhdGUoKSkpIHsKKy0gICAgICAgICAg ICBpZiAoUV9MSUtFTFkodWMuaXNMb3dTdXJyb2dhdGUoKSAmJiBwb3MgPiBpICYmIHBvc1stMV0u aXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0xvd1N1 cnJvZ2F0ZSgpICYmIGhhc1ByZXZpb3VzKCkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSkp CisgICAgICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KCotLXBvcywg dWMpOworICAgICAgICAgICAgIHJldHVybiBpbnZhbGlkQXM7CisgICAgICAgICB9CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oIGIvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oCitpbmRleCBmMjg3Yjc1MmQ3Li5lMjk0NTM3Nzg3IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oCisrKysgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmgKK0BAIC01Miw2ICs1Miw3IEBACisg Ly8KKyAKKyAjaW5jbHVkZSA8cWdsb2JhbC5oPgorKyNpbmNsdWRlIDxRdENvcmUvcXRzYW5faW1w bC5oPgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTEwNiwxNiArMTA3LDEzIEBAIG5h bWVzcGFjZSBRdExpbnV4RnV0ZXggeworICAgICBpbmxpbmUgaW50IF9xX2Z1dGV4KGludCAqYWRk ciwgaW50IG9wLCBpbnQgdmFsLCBxdWludHB0ciB2YWwyID0gMCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgKmFkZHIyID0gbnVsbHB0ciwgaW50IHZhbDMgPSAwKSBub2V4Y2VwdAorICAg ICB7CistICAgICAgICAvLyBBIGZ1dGV4IGNhbGwgZW5zdXJlcyB0b3RhbCBvcmRlcmluZyBvbiB0 aGUgZnV0ZXggd29yZHMKKy0gICAgICAgIC8vIChpbiBlaXRoZXIgc3VjY2VzcyBvciBmYWlsdXJl IG9mIHRoZSBjYWxsKS4gSW5zdHJ1Y3QgVFNBTiBhY2NvcmRpbmdseSwKKy0gICAgICAgIC8vIGFz IFRTQU4gZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgZnV0ZXgoMikgc3lzY2FsbC4KKy0gICAgICAg IF9xX3RzYW5fcmVsZWFzZShhZGRyLCBhZGRyMik7CisrICAgICAgICBRdFRzYW46OmZ1dGV4UmVs ZWFzZShhZGRyLCBhZGRyMik7CisgCisgICAgICAgICAvLyB3ZSB1c2UgX19OUl9mdXRleCBiZWNh dXNlIHNvbWUgbGliY3MgKGxpa2UgQW5kcm9pZCdzIGJpb25pYykgZG9uJ3QKKyAgICAgICAgIC8v IHByb3ZpZGUgU1lTX2Z1dGV4IGV0Yy4KKyAgICAgICAgIGludCByZXN1bHQgPSBzeXNjYWxsKF9f TlJfZnV0ZXgsIGFkZHIsIG9wIHwgRlVURVhfUFJJVkFURV9GTEFHLCB2YWwsIHZhbDIsIGFkZHIy LCB2YWwzKTsKKyAKKy0gICAgICAgIF9xX3RzYW5fYWNxdWlyZShhZGRyLCBhZGRyMik7CisrICAg ICAgICBRdFRzYW46OmZ1dGV4QWNxdWlyZShhZGRyLCBhZGRyMik7CisgCisgICAgICAgICByZXR1 cm4gcmVzdWx0OworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xbXV0ZXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguY3BwCitpbmRl eCAzMTBkMWNiMTRmLi43MDk3MTIyZDhlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L3RocmVhZC9xbXV0ZXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRl eC5jcHAKK0BAIC0xNTIsNiArMTUyLDcgQEAgcHVibGljOgorIAorIC8qIQorICAgICBcZW51bSBR TXV0ZXg6OlJlY3Vyc2lvbk1vZGUKKysgICAgXG9ic29sZXRlIFVzZSBRUmVjdXJzaXZlTXV0ZXgg dG8gY3JlYXRlIGEgcmVjdXJzaXZlIG11dGV4LgorIAorICAgICBcdmFsdWUgUmVjdXJzaXZlICBJ biB0aGlzIG1vZGUsIGEgdGhyZWFkIGNhbiBsb2NrIHRoZSBzYW1lIG11dGV4CisgICAgICAgICAg ICAgICAgICAgICAgIG11bHRpcGxlIHRpbWVzIGFuZCB0aGUgbXV0ZXggd29uJ3QgYmUgdW5sb2Nr ZWQKK0BAIC0xNzMsNiArMTc0LDcgQEAgcHVibGljOgorIAorIC8qIQorICAgICBDb25zdHJ1Y3Rz IGEgbmV3IG11dGV4LiBUaGUgbXV0ZXggaXMgY3JlYXRlZCBpbiBhbiB1bmxvY2tlZCBzdGF0ZS4K KysgICAgXG9ic29sZXRlIFVzZSBRUmVjdXJzaXZlTXV0ZXggdG8gY3JlYXRlIGEgcmVjdXJzaXZl IG11dGV4LgorIAorICAgICBJZiBcYSBtb2RlIGlzIFFNdXRleDo6UmVjdXJzaXZlLCBhIHRocmVh ZCBjYW4gbG9jayB0aGUgc2FtZSBtdXRleAorICAgICBtdWx0aXBsZSB0aW1lcyBhbmQgdGhlIG11 dGV4IHdvbid0IGJlIHVubG9ja2VkIHVudGlsIGEKK0BAIC0xOTcsNyArMTk5LDcgQEAgUU11dGV4 OjpRTXV0ZXgoUmVjdXJzaW9uTW9kZSBtb2RlKQorIFFNdXRleDo6flFNdXRleCgpCisgeworICAg ICBRTXV0ZXhEYXRhICpkID0gZF9wdHIubG9hZFJlbGF4ZWQoKTsKKy0gICAgaWYgKGlzUmVjdXJz aXZlKCkpIHsKKysgICAgaWYgKFFCYXNpY011dGV4Ojppc1JlY3Vyc2l2ZSgpKSB7CisgICAgICAg ICBkZWxldGUgc3RhdGljX2Nhc3Q8UVJlY3Vyc2l2ZU11dGV4UHJpdmF0ZSAqPihkKTsKKyAgICAg fSBlbHNlIGlmIChkKSB7CisgI2lmbmRlZiBRVF9MSU5VWF9GVVRFWAorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhy ZWFkL3FtdXRleC5oCitpbmRleCA3M2M5ZTAwNjYzLi4xYmFlNTczYTAzIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguaAorKysrIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3RocmVhZC9xbXV0ZXguaAorQEAgLTQyLDYgKzQyLDcgQEAKKyAKKyAjaW5jbHVkZSA8UXRD b3JlL3FnbG9iYWwuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FhdG9taWMuaD4KKysjaW5jbHVkZSA8 UXRDb3JlL3F0c2FuX2ltcGwuaD4KKyAjaW5jbHVkZSA8bmV3PgorIAorICNpZiBfX2hhc19pbmNs dWRlKDxjaHJvbm8+KQorQEAgLTc3LDE5ICs3OCwzNyBAQCBwdWJsaWM6CisgCisgICAgIC8vIEJh c2ljTG9ja2FibGUgY29uY2VwdAorICAgICBpbmxpbmUgdm9pZCBsb2NrKCkgUVRfTVVURVhfTE9D S19OT0VYQ0VQVCB7CisrICAgICAgICBRdFRzYW46Om11dGV4UHJlTG9jayh0aGlzLCAwdSk7Cisr CisgICAgICAgICBpZiAoIWZhc3RUcnlMb2NrKCkpCisgICAgICAgICAgICAgbG9ja0ludGVybmFs KCk7CisrCisrICAgICAgICBRdFRzYW46Om11dGV4UG9zdExvY2sodGhpcywgMHUsIDApOworICAg ICB9CisgCisgICAgIC8vIEJhc2ljTG9ja2FibGUgY29uY2VwdAorICAgICBpbmxpbmUgdm9pZCB1 bmxvY2soKSBub2V4Y2VwdCB7CisgICAgICAgICBRX0FTU0VSVChkX3B0ci5sb2FkUmVsYXhlZCgp KTsgLy9tdXRleCBtdXN0IGJlIGxvY2tlZAorKworKyAgICAgICAgUXRUc2FuOjptdXRleFByZVVu bG9jayh0aGlzLCAwdSk7CisrCisgICAgICAgICBpZiAoIWZhc3RUcnlVbmxvY2soKSkKKyAgICAg ICAgICAgICB1bmxvY2tJbnRlcm5hbCgpOworKworKyAgICAgICAgUXRUc2FuOjptdXRleFBvc3RV bmxvY2sodGhpcywgMHUpOworICAgICB9CisgCisgICAgIGJvb2wgdHJ5TG9jaygpIG5vZXhjZXB0 IHsKKy0gICAgICAgIHJldHVybiBmYXN0VHJ5TG9jaygpOworKyAgICAgICAgdW5zaWduZWQgdHNh bkZsYWdzID0gUXRUc2FuOjpUcnlMb2NrOworKyAgICAgICAgUXRUc2FuOjptdXRleFByZUxvY2so dGhpcywgdHNhbkZsYWdzKTsKKysKKysgICAgICAgIGNvbnN0IGJvb2wgc3VjY2VzcyA9IGZhc3RU cnlMb2NrKCk7CisrCisrICAgICAgICBpZiAoIXN1Y2Nlc3MpCisrICAgICAgICAgICAgdHNhbkZs YWdzIHw9IFF0VHNhbjo6VHJ5TG9ja0ZhaWxlZDsKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQb3N0 TG9jayh0aGlzLCB0c2FuRmxhZ3MsIDApOworKworKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7Cisg ICAgIH0KKyAKKyAgICAgLy8gTG9ja2FibGUgY29uY2VwdAorQEAgLTEzNCw4ICsxNTMsMTYgQEAg cHVibGljOgorICNlbHNlCisgICAgIFFNdXRleCgpIHsgZF9wdHIuc3RvcmVSZWxheGVkKG51bGxw dHIpOyB9CisgI2VuZGlmCisrI2lmIFFUX0RFUFJFQ0FURURfU0lOQ0UoNSwxNSkKKyAgICAgZW51 bSBSZWN1cnNpb25Nb2RlIHsgTm9uUmVjdXJzaXZlLCBSZWN1cnNpdmUgfTsKKysgICAgUVRfREVQ UkVDQVRFRF9WRVJTSU9OX1goNSwgMTUsICJVc2UgUVJlY3Vyc2l2ZU11dGV4IGluc3RlYWQgb2Yg YSByZWN1cnNpdmUgUU11dGV4IikKKyAgICAgZXhwbGljaXQgUU11dGV4KFJlY3Vyc2lvbk1vZGUg bW9kZSk7CisrCisrICAgIFFUX0RFUFJFQ0FURURfVkVSU0lPTl9YKDUsIDE1LCAiVXNlIFFSZWN1 cnNpdmVNdXRleCBpbnN0ZWFkIG9mIGEgcmVjdXJzaXZlIFFNdXRleCIpCisrICAgIGJvb2wgaXNS ZWN1cnNpdmUoKSBjb25zdCBub2V4Y2VwdAorKyAgICB7IHJldHVybiBRQmFzaWNNdXRleDo6aXNS ZWN1cnNpdmUoKTsgfQorKyNlbmRpZgorKworICAgICB+UU11dGV4KCk7CisgCisgICAgIC8vIEJh c2ljTG9ja2FibGUgY29uY2VwdAorQEAgLTE2Niw5ICsxOTMsNiBAQCBwdWJsaWM6CisgICAgIH0K KyAjZW5kaWYKKyAKKy0gICAgYm9vbCBpc1JlY3Vyc2l2ZSgpIGNvbnN0IG5vZXhjZXB0CistICAg IHsgcmV0dXJuIFFCYXNpY011dGV4Ojppc1JlY3Vyc2l2ZSgpOyB9CistCisgcHJpdmF0ZToKKyAg ICAgUV9ESVNBQkxFX0NPUFkoUU11dGV4KQorICAgICBmcmllbmQgY2xhc3MgUU11dGV4TG9ja2Vy OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJlYWR3cml0ZWxvY2su Y3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5jcHAKK2luZGV4 IDhjMjg1MDdkNWEuLjlkZDg1MDMxMTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIv dGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xcmVhZHdyaXRlbG9jay5jcHAKK0BAIC0xNTUsNyArMTU1LDcgQEAgUVJlYWRXcml0ZUxvY2s6 OlFSZWFkV3JpdGVMb2NrKFJlY3Vyc2lvbk1vZGUgcmVjdXJzaW9uTW9kZSkKKyAqLworIFFSZWFk V3JpdGVMb2NrOjp+UVJlYWRXcml0ZUxvY2soKQorIHsKKy0gICAgYXV0byBkID0gZF9wdHIubG9h ZFJlbGF4ZWQoKTsKKysgICAgYXV0byBkID0gZF9wdHIubG9hZEFjcXVpcmUoKTsKKyAgICAgaWYg KGlzVW5jb250ZW5kZWRMb2NrZWQoZCkpIHsKKyAgICAgICAgIHFXYXJuaW5nKCJRUmVhZFdyaXRl TG9jazogZGVzdHJveWluZyBsb2NrZWQgUVJlYWRXcml0ZUxvY2siKTsKKyAgICAgICAgIHJldHVy bjsKK0BAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBRUmVhZFdyaXRlTG9jazo6dW5sb2NrKCkKKyAv KiEgXGludGVybmFsICBIZWxwZXIgZm9yIFFXYWl0Q29uZGl0aW9uOjp3YWl0ICovCisgUVJlYWRX cml0ZUxvY2s6OlN0YXRlRm9yV2FpdENvbmRpdGlvbiBRUmVhZFdyaXRlTG9jazo6c3RhdGVGb3JX YWl0Q29uZGl0aW9uKCkgY29uc3QKKyB7CistICAgIFFSZWFkV3JpdGVMb2NrUHJpdmF0ZSAqZCA9 IGRfcHRyLmxvYWRSZWxheGVkKCk7CisrICAgIFFSZWFkV3JpdGVMb2NrUHJpdmF0ZSAqZCA9IGRf cHRyLmxvYWRBY3F1aXJlKCk7CisgICAgIHN3aXRjaCAocXVpbnRwdHIoZCkgJiBTdGF0ZU1hc2sp IHsKKyAgICAgY2FzZSBTdGF0ZUxvY2tlZEZvclJlYWQ6IHJldHVybiBMb2NrZWRGb3JSZWFkOwor ICAgICBjYXNlIFN0YXRlTG9ja2VkRm9yV3JpdGU6IHJldHVybiBMb2NrZWRGb3JXcml0ZTsKK0BA IC00NTMsNiArNDUzLDcgQEAgUVJlYWRXcml0ZUxvY2s6OlN0YXRlRm9yV2FpdENvbmRpdGlvbiBR UmVhZFdyaXRlTG9jazo6c3RhdGVGb3JXYWl0Q29uZGl0aW9uKCkgY28KKyAKKyAgICAgaWYgKCFk KQorICAgICAgICAgcmV0dXJuIFVubG9ja2VkOworKyAgICBjb25zdCBhdXRvIGxvY2sgPSBxdF9z Y29wZWRfbG9jayhkLT5tdXRleCk7CisgICAgIGlmIChkLT53cml0ZXJDb3VudCA+IDEpCisgICAg ICAgICByZXR1cm4gUmVjdXJzaXZlbHlMb2NrZWQ7CisgICAgIGVsc2UgaWYgKGQtPndyaXRlckNv dW50ID09IDEpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBo b3JlLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5jcHAKK2luZGV4 IDFkMDFmYzFiMjguLjNlY2RlZTM3NDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIv dGhyZWFkL3FzZW1hcGhvcmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3Fz ZW1hcGhvcmUuY3BwCitAQCAtMzU0LDcgKzM1NCwxMiBAQCB2b2lkIFFTZW1hcGhvcmU6OnJlbGVh c2UoaW50IG4pCisgICAgICAgICBxdWludHB0ciBubiA9IHVuc2lnbmVkKG4pOworICAgICAgICAg aWYgKGZ1dGV4SGFzV2FpdGVyQ291bnQpCisgICAgICAgICAgICAgbm4gfD0gcXVpbnQ2NChubikg PDwgMzI7ICAgIC8vIHRva2VuIGNvdW50IHJlcGxpY2F0ZWQgaW4gaGlnaCB3b3JkCistICAgICAg ICBxdWludHB0ciBwcmV2VmFsdWUgPSB1LmZldGNoQW5kQWRkUmVsZWFzZShubik7CisrICAgICAg ICBxdWludHB0ciBwcmV2VmFsdWUgPSB1LmxvYWRSZWxheGVkKCk7CisrICAgICAgICBxdWludHB0 ciBuZXdWYWx1ZTsKKysgICAgICAgIGRvIHsgLy8gbG9vcCBqdXN0IHRvIGVuc3VyZSB0aGUgb3Bl cmF0aW9ucyBhcmUgZG9uZSBhdG9taWNhbGx5CisrICAgICAgICAgICAgbmV3VmFsdWUgPSBwcmV2 VmFsdWUgKyBubjsKKysgICAgICAgICAgICBuZXdWYWx1ZSAmPSAoZnV0ZXhOZWVkc1dha2VBbGxC aXQgLSAxKTsKKysgICAgICAgIH0gd2hpbGUgKCF1LnRlc3RBbmRTZXRSZWxlYXNlKHByZXZWYWx1 ZSwgbmV3VmFsdWUsIHByZXZWYWx1ZSkpOworICAgICAgICAgaWYgKGZ1dGV4TmVlZHNXYWtlKHBy ZXZWYWx1ZSkpIHsKKyAjaWZkZWYgRlVURVhfT1AKKyAgICAgICAgICAgICBpZiAoZnV0ZXhIYXNX YWl0ZXJDb3VudCkgeworQEAgLTM3Niw3ICszODEsNiBAQCB2b2lkIFFTZW1hcGhvcmU6OnJlbGVh c2UoaW50IG4pCisgICAgICAgICAgICAgICAgIHF1aW50MzIgb3BhcmcgPSAwOworICAgICAgICAg ICAgICAgICBxdWludDMyIGNtcCA9IEZVVEVYX09QX0NNUF9ORTsKKyAgICAgICAgICAgICAgICAg cXVpbnQzMiBjbXBhcmcgPSAwOworLSAgICAgICAgICAgICAgICB1LmZldGNoQW5kQW5kUmVsZWFz ZShmdXRleE5lZWRzV2FrZUFsbEJpdCAtIDEpOworICAgICAgICAgICAgICAgICBmdXRleFdha2VP cCgqZnV0ZXhMb3czMigmdSksIG4sIElOVF9NQVgsICpmdXRleEhpZ2gzMigmdSksIEZVVEVYX09Q KG9wLCBvcGFyZywgY21wLCBjbXBhcmcpKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg ICAgICAgICAgIH0KK0BAIC0zODgsNyArMzkyLDYgQEAgdm9pZCBRU2VtYXBob3JlOjpyZWxlYXNl KGludCBuKQorICAgICAgICAgICAgIC8vICAgIGl0cyBhY3F1aXNpdGlvbiBhbnl3YXksIHNvIGl0 IGhhcyB0byB3YWl0OworICAgICAgICAgICAgIC8vIDIpIGl0IGRpZCBub3Qgc2VlIHRoZSBuZXcg Y291bnRlciB2YWx1ZSwgaW4gd2hpY2ggY2FzZSBpdHMKKyAgICAgICAgICAgICAvLyAgICBmdXRl eFdhaXQgd2lsbCBmYWlsLgorLSAgICAgICAgICAgIHUuZmV0Y2hBbmRBbmRSZWxlYXNlKGZ1dGV4 TmVlZHNXYWtlQWxsQml0IC0gMSk7CisgICAgICAgICAgICAgaWYgKGZ1dGV4SGFzV2FpdGVyQ291 bnQpIHsKKyAgICAgICAgICAgICAgICAgZnV0ZXhXYWtlQWxsKCpmdXRleExvdzMyKCZ1KSk7Cisg ICAgICAgICAgICAgICAgIGZ1dGV4V2FrZUFsbCgqZnV0ZXhIaWdoMzIoJnUpKTsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfcC5oIGIvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAoraW5kZXggYjJkMTYyOGU2ZS4uZjMyZjZmMDQ2MCAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmgKKysrKyBi L3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmgKK0BAIC0xNzQsNyArMTc0LDcg QEAgcHVibGljOgorICAgICBpbnQgcmV0dXJuQ29kZTsKKyAKKyAgICAgdWludCBzdGFja1NpemU7 CistICAgIFFUaHJlYWQ6OlByaW9yaXR5IHByaW9yaXR5OworKyAgICBzdGQ6OnVuZGVybHlpbmdf dHlwZTxRVGhyZWFkOjpQcmlvcml0eT46OnR5cGUgcHJpb3JpdHk7CisgCisgICAgIHN0YXRpYyBR VGhyZWFkICp0aHJlYWRGb3JJZChpbnQgaWQpOworIAorQEAgLTIxMyw2ICsyMTMsMTMgQEAgcHVi bGljOgorICAgICAgICAgICAgIFFDb3JlQXBwbGljYXRpb246Omluc3RhbmNlKCktPnBvc3RFdmVu dChxX3B0ciwgbmV3IFFFdmVudChRRXZlbnQ6OlF1aXQpKTsKKyAgICAgICAgIH0KKyAgICAgfQor KworKyNpZm5kZWYgUV9PU19JTlRFR1JJVFkKKytwcml2YXRlOgorKyAgICAvLyBVc2VkIGluIFFU aHJlYWQoUHJpdmF0ZSk6OnN0YXJ0IHRvIGF2b2lkIHJhY3kgYWNjZXNzIHRvIFFPYmplY3Q6Om9i amVjdE5hbWUsCisrICAgIC8vIHVuc2V0IGFmdGVyd2FyZHMuIE9uIElOVEVHUklUWSB3ZSBzZXQg dGhlIHRocmVhZCBuYW1lIGJlZm9yZSBzdGFydGluZyBpdC4KKysgICAgUVN0cmluZyBvYmplY3RO YW1lOworKyNlbmRpZgorIH07CisgCisgI2Vsc2UgLy8gUVRfQ09ORklHKHRocmVhZCkKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfdW5peC5jcHAgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfdW5peC5jcHAKK2luZGV4IDU2YThlMGEwMzgu LjYxMDExN2E2NDAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJl YWRfdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4 LmNwcAorQEAgLTE2OSw4ICsxNjksNyBAQCBzdGF0aWMgdm9pZCBzZXRfdGhyZWFkX2RhdGEoUVRo cmVhZERhdGEgKmRhdGEpCisgCisgc3RhdGljIHZvaWQgY2xlYXJfdGhyZWFkX2RhdGEoKQorIHsK Ky0gICAgY3VycmVudFRocmVhZERhdGEgPSBudWxscHRyOworLSAgICBwdGhyZWFkX3NldHNwZWNp ZmljKGN1cnJlbnRfdGhyZWFkX2RhdGFfa2V5LCBudWxscHRyKTsKKysgICAgc2V0X3RocmVhZF9k YXRhKG51bGxwdHIpOworIH0KKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0BAIC0yOTYsNyAr Mjk1LDcgQEAgdm9pZCAqUVRocmVhZFByaXZhdGU6OnN0YXJ0KHZvaWQgKmFyZykKKyAgICAgICAg ICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZ0aHItPmRfZnVuYygpLT5tdXRleCk7CisgCisgICAg ICAgICAgICAgLy8gZG8gd2UgbmVlZCB0byByZXNldCB0aGUgdGhyZWFkIHByaW9yaXR5PworLSAg ICAgICAgICAgIGlmIChpbnQodGhyLT5kX2Z1bmMoKS0+cHJpb3JpdHkpICYgVGhyZWFkUHJpb3Jp dHlSZXNldEZsYWcpIHsKKysgICAgICAgICAgICBpZiAodGhyLT5kX2Z1bmMoKS0+cHJpb3JpdHkg JiBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZykgeworICAgICAgICAgICAgICAgICB0aHItPmRfZnVu YygpLT5zZXRQcmlvcml0eShRVGhyZWFkOjpQcmlvcml0eSh0aHItPmRfZnVuYygpLT5wcmlvcml0 eSAmIH5UaHJlYWRQcmlvcml0eVJlc2V0RmxhZykpOworICAgICAgICAgICAgIH0KKyAKK0BAIC0z MTYsMTAgKzMxNSwxMCBAQCB2b2lkICpRVGhyZWFkUHJpdmF0ZTo6c3RhcnQodm9pZCAqYXJnKQor ICAgICAgICAgICAgIC8vIFNldHMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLiBXZSBj YW4gb25seSBkbyB0aGlzCisgICAgICAgICAgICAgLy8gd2hlbiB0aGUgdGhyZWFkIGlzIHN0YXJ0 aW5nLCBhcyB3ZSBkb24ndCBoYXZlIGEgY3Jvc3MKKyAgICAgICAgICAgICAvLyBwbGF0Zm9ybSB3 YXkgb2Ygc2V0dGluZyB0aGUgbmFtZSBvZiBhbiBhcmJpdHJhcnkgdGhyZWFkLgorLSAgICAgICAg ICAgIGlmIChRX0xJS0VMWSh0aHItPm9iamVjdE5hbWUoKS5pc0VtcHR5KCkpKQorKyAgICAgICAg ICAgIGlmIChRX0xJS0VMWSh0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLmlzRW1wdHkoKSkpCisg ICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUaHJlYWROYW1lKHRoci0+bWV0YU9iamVjdCgpLT5j bGFzc05hbWUoKSk7CisgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICBzZXRDdXJy ZW50VGhyZWFkTmFtZSh0aHItPm9iamVjdE5hbWUoKS50b0xvY2FsOEJpdCgpKTsKKysgICAgICAg ICAgICAgICAgc2V0Q3VycmVudFRocmVhZE5hbWUoc3RkOjpleGNoYW5nZSh0aHItPmRfZnVuYygp LT5vYmplY3ROYW1lLCB7fSkudG9Mb2NhbDhCaXQoKSk7CisgICAgICAgICB9CisgI2VuZGlmCisg CitAQCAtNjcxLDcgKzY3MCw3IEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3Jp dHkpCisgICAgICAgICAgICAgICAgIC8vIGNvdWxkIG5vdCBzZXQgc2NoZWR1bGluZyBoaW50cywg ZmFsbGJhY2sgdG8gaW5oZXJpdGluZyB0aGVtCisgICAgICAgICAgICAgICAgIC8vIHdlJ2xsIHRy eSBhZ2FpbiBmcm9tIGluc2lkZSB0aGUgdGhyZWFkCisgICAgICAgICAgICAgICAgIHB0aHJlYWRf YXR0cl9zZXRpbmhlcml0c2NoZWQoJmF0dHIsIFBUSFJFQURfSU5IRVJJVF9TQ0hFRCk7CistICAg ICAgICAgICAgICAgIGQtPnByaW9yaXR5ID0gUHJpb3JpdHkocHJpb3JpdHkgfCBUaHJlYWRQcmlv cml0eVJlc2V0RmxhZyk7CisrICAgICAgICAgICAgICAgIGQtPnByaW9yaXR5ID0gc3RhdGljX2Nh c3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8UVRocmVhZDo6UHJpb3JpdHk+Ojp0eXBlPihwcmlvcml0 eSkgfCBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZzsKKyAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICB9CitAQCAtNzAyLDcgKzcwMSwxMCBAQCB2b2lkIFFUaHJlYWQ6 OnN0YXJ0KFByaW9yaXR5IHByaW9yaXR5KQorICAgICAgICAgcHRocmVhZF9hdHRyX3NldHRocmVh ZG5hbWUoJmF0dHIsIG1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkpOworICAgICBlbHNlCisgICAg ICAgICBwdGhyZWFkX2F0dHJfc2V0dGhyZWFkbmFtZSgmYXR0ciwgb2JqZWN0TmFtZSgpLnRvTG9j YWw4Qml0KCkpOworKyNlbHNlCisrICAgIGQtPm9iamVjdE5hbWUgPSBvYmplY3ROYW1lKCk7Cisg I2VuZGlmCisrCisgICAgIHB0aHJlYWRfdCB0aHJlYWRJZDsKKyAgICAgaW50IGNvZGUgPSBwdGhy ZWFkX2NyZWF0ZSgmdGhyZWFkSWQsICZhdHRyLCBRVGhyZWFkUHJpdmF0ZTo6c3RhcnQsIHRoaXMp OworICAgICBpZiAoY29kZSA9PSBFUEVSTSkgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29y ZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9x dGhyZWFkX3dpbi5jcHAKK2luZGV4IGJjNzBlMzE3OGEuLjRlNzY5NzI0OTggMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcAorKysrIGIvcXRiYXNl L3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3dpbi5jcHAKK0BAIC0zOTQsMTAgKzM5NCw5IEBA IHVuc2lnbmVkIGludCBfX3N0ZGNhbGwgUVRfRU5TVVJFX1NUQUNLX0FMSUdORURfRk9SX1NTRSBR VGhyZWFkUHJpdmF0ZTo6c3RhcnQodm9pCisgCisgI2lmICFkZWZpbmVkKFFUX05PX0RFQlVHKSAm JiBkZWZpbmVkKFFfQ0NfTVNWQykgJiYgIWRlZmluZWQoUV9PU19XSU5SVCkKKyAgICAgLy8gc2V0 cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuCistICAgIFFCeXRlQXJyYXkgb2JqZWN0 TmFtZSA9IHRoci0+b2JqZWN0TmFtZSgpLnRvTG9jYWw4Qml0KCk7CistICAgIHF0X3NldF90aHJl YWRfbmFtZShIQU5ETEUoLTEpLAorLSAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0TmFtZS5p c0VtcHR5KCkgPworLSAgICAgICAgICAgICAgICAgICAgICAgdGhyLT5tZXRhT2JqZWN0KCktPmNs YXNzTmFtZSgpIDogb2JqZWN0TmFtZS5jb25zdERhdGEoKSk7CisrICAgIHF0X3NldF90aHJlYWRf bmFtZShIQU5ETEUoLTEpLCB0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLmlzRW1wdHkoKQorKyAg ICAgICAgICAgICAgICAgICAgICAgID8gdGhyLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpCisr ICAgICAgICAgICAgICAgICAgICAgICAgOiBzdGQ6OmV4Y2hhbmdlKHRoci0+ZF9mdW5jKCktPm9i amVjdE5hbWUsIHt9KS50b0xvY2FsOEJpdCgpLmNvbnN0RGF0YSgpKTsKKyAjZW5kaWYKKyAKKyAg ICAgZW1pdCB0aHItPnN0YXJ0ZWQoUVRocmVhZDo6UVByaXZhdGVTaWduYWwoKSk7CitAQCAtNTAz LDYgKzUwMiw3IEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3JpdHkpCisgICAg IGlmIChkLT5ydW5uaW5nKQorICAgICAgICAgcmV0dXJuOworIAorKyAgICBkLT5vYmplY3ROYW1l ID0gb2JqZWN0TmFtZSgpOworICAgICBkLT5ydW5uaW5nID0gdHJ1ZTsKKyAgICAgZC0+ZmluaXNo ZWQgPSBmYWxzZTsKKyAgICAgZC0+ZXhpdGVkID0gZmFsc2U7CitAQCAtNTQ4LDcgKzU0OCw3IEBA IHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3JpdHkpCisgCisgICAgIGludCBwcmlv OworICAgICBkLT5wcmlvcml0eSA9IHByaW9yaXR5OworLSAgICBzd2l0Y2ggKGQtPnByaW9yaXR5 KSB7CisrICAgIHN3aXRjaCAocHJpb3JpdHkpIHsKKyAgICAgY2FzZSBJZGxlUHJpb3JpdHk6Cisg ICAgICAgICBwcmlvID0gVEhSRUFEX1BSSU9SSVRZX0lETEU7CisgICAgICAgICBicmVhazsKK0BA IC02ODYsNyArNjg2LDcgQEAgdm9pZCBRVGhyZWFkUHJpdmF0ZTo6c2V0UHJpb3JpdHkoUVRocmVh ZDo6UHJpb3JpdHkgdGhyZWFkUHJpb3JpdHkpCisgCisgICAgIGludCBwcmlvOworICAgICBwcmlv cml0eSA9IHRocmVhZFByaW9yaXR5OworLSAgICBzd2l0Y2ggKHByaW9yaXR5KSB7CisrICAgIHN3 aXRjaCAodGhyZWFkUHJpb3JpdHkpIHsKKyAgICAgY2FzZSBRVGhyZWFkOjpJZGxlUHJpb3JpdHk6 CisgICAgICAgICBwcmlvID0gVEhSRUFEX1BSSU9SSVRZX0lETEU7CisgICAgICAgICBicmVhazsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0c2FuX2ltcGwuaCBiL3F0 YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRzYW5faW1wbC5oCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMDAwMC4uNTgwYTczOGI5MQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdHNhbl9pbXBsLmgKK0BAIC0wLDAgKzEsMTE1IEBACisr LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBD b3Jwb3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgS2xhcsOkbHZkYWxlbnMgRGF0YWtv bnN1bHQgQUIsIGEgS0RBQiBHcm91cCBjb21wYW55LCBpbmZvQGtkYWIuY29tLCBhdXRob3IgR2l1 c2VwcGUgRCdBbmdlbG8gPGdpdXNlcHBlLmRhbmdlbG9Aa2RhYi5jb20+CisrKiogQ29udGFjdDog aHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIFF0Q29yZSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVH SU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vu c2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZp bGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1l bnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4g YWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdy ZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJt cworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRp b25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0 IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5 IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl CisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMg aW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmll dyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdpbGwg YmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisrKioK KysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHks IHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoqIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUg R05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZl cnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhlIGxp Y2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0 aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQ TDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJl dmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0cHM6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0Uk CisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpZm5kZWYgUVRTQU5fSU1QTF9ICisr I2RlZmluZSBRVFNBTl9JTVBMX0gKKysKKysjaW5jbHVkZSA8UXRDb3JlL3FnbG9iYWwuaD4KKysK KysjaWYgKF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nhbml0aXplcikgfHwgZGVmaW5lZChfX1NBTklU SVpFX1RIUkVBRF9fKSkgJiYgX19oYXNfaW5jbHVkZSg8c2FuaXRpemVyL3RzYW5faW50ZXJmYWNl Lmg+KQorKyMgIGRlZmluZSBRVF9CVUlMRElOR19VTkRFUl9UU0FOCisrIyAgaW5jbHVkZSA8c2Fu aXRpemVyL3RzYW5faW50ZXJmYWNlLmg+CisrI2VuZGlmCisrCisrUVRfQkVHSU5fTkFNRVNQQUNF CisrCisrbmFtZXNwYWNlIFF0VHNhbiB7CisrI2lmZGVmIFFUX0JVSUxESU5HX1VOREVSX1RTQU4K KytpbmxpbmUgdm9pZCBmdXRleEFjcXVpcmUodm9pZCAqYWRkciwgdm9pZCAqYWRkcjIgPSBudWxs cHRyKQorK3sKKysgICAgLy8gQSBmdXRleCBjYWxsIGVuc3VyZXMgdG90YWwgb3JkZXJpbmcgb24g dGhlIGZ1dGV4IHdvcmRzCisrICAgIC8vIChpbiBlaXRoZXIgc3VjY2VzcyBvciBmYWlsdXJlIG9m IHRoZSBjYWxsKS4gSW5zdHJ1Y3QgVFNBTiBhY2NvcmRpbmdseSwKKysgICAgLy8gYXMgVFNBTiBk b2VzIG5vdCB1bmRlcnN0YW5kIHRoZSBmdXRleCgyKSBzeXNjYWxsIChvciBlcXVpdmFsZW50KS4K KysgICAgOjpfX3RzYW5fYWNxdWlyZShhZGRyKTsKKysgICAgaWYgKGFkZHIyKQorKyAgICAgICAg OjpfX3RzYW5fYWNxdWlyZShhZGRyMik7CisrfQorKworK2lubGluZSB2b2lkIGZ1dGV4UmVsZWFz ZSh2b2lkICphZGRyLCB2b2lkICphZGRyMiA9IG51bGxwdHIpCisreworKyAgICBpZiAoYWRkcjIp CisrICAgICAgICA6Ol9fdHNhbl9yZWxlYXNlKGFkZHIyKTsKKysgICAgOjpfX3RzYW5fcmVsZWFz ZShhZGRyKTsKKyt9CisrCisraW5saW5lIHZvaWQgbXV0ZXhQcmVMb2NrKHZvaWQgKmFkZHIsIHVu c2lnbmVkIGZsYWdzKQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcHJlX2xvY2soYWRkciwgZmxh Z3MpOworK30KKysKKytpbmxpbmUgdm9pZCBtdXRleFBvc3RMb2NrKHZvaWQgKmFkZHIsIHVuc2ln bmVkIGZsYWdzLCBpbnQgcmVjdXJzaW9uKQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcG9zdF9s b2NrKGFkZHIsIGZsYWdzLCByZWN1cnNpb24pOworK30KKysKKytpbmxpbmUgdm9pZCBtdXRleFBy ZVVubG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAgIDo6X190c2FuX211 dGV4X3ByZV91bmxvY2soYWRkciwgZmxhZ3MpOworK30KKysKKytpbmxpbmUgdm9pZCBtdXRleFBv c3RVbmxvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MpCisreworKyAgICA6Ol9fdHNhbl9t dXRleF9wb3N0X3VubG9jayhhZGRyLCBmbGFncyk7CisrfQorKworK2VudW0gOiB1bnNpZ25lZCB7 CisrICAgIE11dGV4V3JpdGVSZWVudHJhbnQgPSA6Ol9fdHNhbl9tdXRleF93cml0ZV9yZWVudHJh bnQsCisrICAgIFRyeUxvY2sgPSA6Ol9fdHNhbl9tdXRleF90cnlfbG9jaywKKysgICAgVHJ5TG9j a0ZhaWxlZCA9IDo6X190c2FuX211dGV4X3RyeV9sb2NrX2ZhaWxlZCwKKyt9OworKyNlbHNlCisr aW5saW5lIHZvaWQgZnV0ZXhBY3F1aXJlKHZvaWQgKiwgdm9pZCAqID0gbnVsbHB0cikge30KKytp bmxpbmUgdm9pZCBmdXRleFJlbGVhc2Uodm9pZCAqLCB2b2lkICogPSBudWxscHRyKSB7fQorKwor K2VudW0gOiB1bnNpZ25lZCB7CisrICAgIE11dGV4V3JpdGVSZWVudHJhbnQsCisrICAgIFRyeUxv Y2ssCisrICAgIFRyeUxvY2tGYWlsZWQsCisrfTsKKytpbmxpbmUgdm9pZCBtdXRleFByZUxvY2so dm9pZCAqLCB1bnNpZ25lZCkge30KKytpbmxpbmUgdm9pZCBtdXRleFBvc3RMb2NrKHZvaWQgKiwg dW5zaWduZWQsIGludCkge30KKytpbmxpbmUgdm9pZCBtdXRleFByZVVubG9jayh2b2lkICosIHVu c2lnbmVkKSB7fQorK2lubGluZSB2b2lkIG11dGV4UG9zdFVubG9jayh2b2lkICosIHVuc2lnbmVk KSB7fQorKyNlbmRpZiAvLyBRVF9CVUlMRElOR19VTkRFUl9UU0FOCisrfSAvLyBuYW1lc3BhY2Ug UXRUc2FuCisrCisrUVRfRU5EX05BTUVTUEFDRQorKworKyNlbmRpZiAvLyBRVFNBTl9JTVBMX0gK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3Vu aXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNw cAoraW5kZXggODhiMDU4ZjQxMC4uMGYxZGE0ZGM5YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Y29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAKK0BAIC0yMTMsNyArMjEzLDcg QEAgYm9vbCBRV2FpdENvbmRpdGlvbjo6d2FpdChRTXV0ZXggKm11dGV4LCBRRGVhZGxpbmVUaW1l ciBkZWFkbGluZSkKKyB7CisgICAgIGlmICghIG11dGV4KQorICAgICAgICAgcmV0dXJuIGZhbHNl OworLSAgICBpZiAobXV0ZXgtPmlzUmVjdXJzaXZlKCkpIHsKKysgICAgaWYgKHN0YXRpY19jYXN0 PFFCYXNpY011dGV4ICo+KG11dGV4KS0+aXNSZWN1cnNpdmUoKSkgeworICAgICAgICAgcVdhcm5p bmcoIlFXYWl0Q29uZGl0aW9uOiBjYW5ub3Qgd2FpdCBvbiByZWN1cnNpdmUgbXV0ZXhlcyIpOwor ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3FkYXRl dGltZS5jcHAKK2luZGV4IGVjMTI1NjllM2YuLjJjMGIwOTgwNzkgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdGltZS9xZGF0ZXRpbWUuY3BwCitAQCAtNDMsNiArNDMsNyBAQAorICNpZiBRVF9DT05GSUco ZGF0ZXRpbWVwYXJzZXIpCisgI2luY2x1ZGUgInByaXZhdGUvcWRhdGV0aW1lcGFyc2VyX3AuaCIK KyAjZW5kaWYKKysjaW5jbHVkZSA8cHJpdmF0ZS9xbnVtZXJpY19wLmg+CisgCisgI2luY2x1ZGUg InFkYXRhc3RyZWFtLmgiCisgI2luY2x1ZGUgInFzZXQuaCIKK0BAIC0xNDI5LDkgKzE0MzAsMTEg QEAgUURhdGUgUURhdGU6OmFkZERheXMocWludDY0IG5kYXlzKSBjb25zdAorICAgICBpZiAoaXNO dWxsKCkpCisgICAgICAgICByZXR1cm4gUURhdGUoKTsKKyAKKy0gICAgLy8gRHVlIHRvIGxpbWl0 cyBvbiBtaW5KZCgpIGFuZCBtYXhKZCgpIHdlIGtub3cgdGhhdCBhbnkgb3ZlcmZsb3cKKy0gICAg Ly8gd2lsbCBiZSBpbnZhbGlkIGFuZCBjYXVnaHQgYnkgZnJvbUp1bGlhbkRheSgpLgorLSAgICBy ZXR1cm4gZnJvbUp1bGlhbkRheShqZCArIG5kYXlzKTsKKysgICAgcWludDY0IHI7CisrICAgIGlm IChRX1VOTElLRUxZKGFkZF9vdmVyZmxvdyhqZCwgbmRheXMsICZyKSkpCisrICAgICAgICByZXR1 cm4gUURhdGUoKTsKKysgICAgZWxzZQorKyAgICAgICAgcmV0dXJuIGZyb21KdWxpYW5EYXkocik7 CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1l em9uZS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3BwCitpbmRleCAw MzA5ZTQzZTUyLi4zZDQ1MTY5NmExIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rp bWUvcXRpbWV6b25lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25l LmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENv cHlyaWdodCAoQykgMjAxMyBKb2huIExheXQgPGpsYXl0QGtkZS5vcmc+CisrKiogQ29weXJpZ2h0 IChDKSAyMDIwIEpvaG4gTGF5dCA8amxheXRAa2RlLm9yZz4KKyAqKiBDb250YWN0OiBodHRwczov L3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg UXRDb3JlIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC05NzUsOSArOTc1LDE1IEBAIFFM aXN0PFFCeXRlQXJyYXk+IFFUaW1lWm9uZTo6d2luZG93c0lkVG9JYW5hSWRzKGNvbnN0IFFCeXRl QXJyYXkgJndpbmRvd3NJZCwKKyB9CisgCisgI2lmbmRlZiBRVF9OT19EQVRBU1RSRUFNCisrLy8g SW52YWxpZCwgYXMgYW4gSUFOQSBJRDogdG9vIGxvbmcsIHN0YXJ0cyB3aXRoIC0gYW5kIGhhcyBv dGhlciBpbnZhbGlkIGNoYXJhY3RlcnMgaW4gaXQKKytzdGF0aWMgaW5saW5lIFFTdHJpbmcgaW52 YWxpZElkKCkgeyByZXR1cm4gUVN0cmluZ0xpdGVyYWwoIi1ObyBUaW1lIFpvbmUgU3BlY2lmaWVk ISIpOyB9CisrCisgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoUURhdGFTdHJlYW0gJmRzLCBjb25z dCBRVGltZVpvbmUgJnR6KQorIHsKKy0gICAgdHouZC0+c2VyaWFsaXplKGRzKTsKKysgICAgaWYg KHR6LmlzVmFsaWQoKSkKKysgICAgICAgIHR6LmQtPnNlcmlhbGl6ZShkcyk7CisrICAgIGVsc2UK KysgICAgICAgIGRzIDw8IGludmFsaWRJZCgpOworICAgICByZXR1cm4gZHM7CisgfQorIAorQEAg LTk4NSw3ICs5OTEsOSBAQCBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PihRRGF0YVN0cmVhbSAmZHMs IFFUaW1lWm9uZSAmdHopCisgeworICAgICBRU3RyaW5nIGlhbmFJZDsKKyAgICAgZHMgPj4gaWFu YUlkOworLSAgICBpZiAoaWFuYUlkID09IFFMYXRpbjFTdHJpbmcoIk9mZnNldEZyb21VdGMiKSkg eworKyAgICBpZiAoaWFuYUlkID09IGludmFsaWRJZCgpKSB7CisrICAgICAgICB0eiA9IFFUaW1l Wm9uZSgpOworKyAgICB9IGVsc2UgaWYgKGlhbmFJZCA9PSBRTGF0aW4xU3RyaW5nKCJPZmZzZXRG cm9tVXRjIikpIHsKKyAgICAgICAgIGludCB1dGNPZmZzZXQ7CisgICAgICAgICBRU3RyaW5nIG5h bWU7CisgICAgICAgICBRU3RyaW5nIGFiYnJldmlhdGlvbjsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNwcCBiL3F0YmFzZS9zcmMvY29y ZWxpYi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3BwCitpbmRleCBiMTYxMWQ3ZGRiLi5hN2E2 YTcyY2NmIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lcHJp dmF0ZV90ei5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZXByaXZh dGVfdHouY3BwCitAQCAtNDIsNiArNDIsNyBAQAorICNpbmNsdWRlICJxdGltZXpvbmUuaCIKKyAj aW5jbHVkZSAicXRpbWV6b25lcHJpdmF0ZV9wLmgiCisgI2luY2x1ZGUgInByaXZhdGUvcWxvY2Fs ZV90b29sc19wLmgiCisrI2luY2x1ZGUgInByaXZhdGUvcWxvY2tpbmdfcC5oIgorIAorICNpbmNs dWRlIDxRdENvcmUvUURhdGFTdHJlYW0+CisgI2luY2x1ZGUgPFF0Q29yZS9RRGF0ZVRpbWU+CitA QCAtNjIsNiArNjMsMTAgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKysjaWYgUVRfQ09O RklHKGljdSkKKytzdGF0aWMgUUJhc2ljTXV0ZXggc19pY3VfbXV0ZXg7CisrI2VuZGlmCisrCisg LyoKKyAgICAgUHJpdmF0ZQorIAorQEAgLTY3MCw2ICs2NzUsOSBAQCBRVHpUaW1lWm9uZVByaXZh dGU6On5RVHpUaW1lWm9uZVByaXZhdGUoKQorIAorIFFUelRpbWVab25lUHJpdmF0ZSAqUVR6VGlt ZVpvbmVQcml2YXRlOjpjbG9uZSgpIGNvbnN0CisgeworKyNpZiBRVF9DT05GSUcoaWN1KQorKyAg ICBjb25zdCBhdXRvIGxvY2sgPSBxdF9zY29wZWRfbG9jayhzX2ljdV9tdXRleCk7CisrI2VuZGlm CisgICAgIHJldHVybiBuZXcgUVR6VGltZVpvbmVQcml2YXRlKCp0aGlzKTsKKyB9CisgCitAQCAt OTEzLDEyICs5MjEsMTQgQEAgUVN0cmluZyBRVHpUaW1lWm9uZVByaXZhdGU6OmRpc3BsYXlOYW1l KHFpbnQ2NCBhdE1TZWNzU2luY2VFcG9jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgUUxvY2FsZSAmbG9jYWxlKSBjb25zdAorIHsKKyAjaWYgUVRfQ09O RklHKGljdSkKKysgICAgYXV0byBsb2NrID0gcXRfdW5pcXVlX2xvY2soc19pY3VfbXV0ZXgpOwor ICAgICBpZiAoIW1faWN1KQorICAgICAgICAgbV9pY3UgPSBuZXcgUUljdVRpbWVab25lUHJpdmF0 ZShtX2lkKTsKKyAgICAgLy8gVE9ETyBzbWFsbCByaXNrIG1heSBub3QgbWF0Y2ggaWYgdHJhbiB0 aW1lcyBkaWZmZXIgZHVlIHRvIG91dGRhdGVkIGZpbGVzCisgICAgIC8vIFRPRE8gU29tZSB2YWxp ZCBUWiBuYW1lcyBhcmUgbm90IHZhbGlkIElDVSBuYW1lcywgdXNlIHRyYW5zbGF0aW9uIHRhYmxl PworICAgICBpZiAobV9pY3UtPmlzVmFsaWQoKSkKKyAgICAgICAgIHJldHVybiBtX2ljdS0+ZGlz cGxheU5hbWUoYXRNU2Vjc1NpbmNlRXBvY2gsIG5hbWVUeXBlLCBsb2NhbGUpOworKyAgICBsb2Nr LnVubG9jaygpOworICNlbHNlCisgICAgIFFfVU5VU0VEKG5hbWVUeXBlKQorICAgICBRX1VOVVNF RChsb2NhbGUpCitAQCAtOTMyLDEyICs5NDIsMTQgQEAgUVN0cmluZyBRVHpUaW1lWm9uZVByaXZh dGU6OmRpc3BsYXlOYW1lKFFUaW1lWm9uZTo6VGltZVR5cGUgdGltZVR5cGUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFMb2NhbGUgJmxvY2FsZSkgY29u c3QKKyB7CisgI2lmIFFUX0NPTkZJRyhpY3UpCisrICAgIGF1dG8gbG9jayA9IHF0X3VuaXF1ZV9s b2NrKHNfaWN1X211dGV4KTsKKyAgICAgaWYgKCFtX2ljdSkKKyAgICAgICAgIG1faWN1ID0gbmV3 IFFJY3VUaW1lWm9uZVByaXZhdGUobV9pZCk7CisgICAgIC8vIFRPRE8gc21hbGwgcmlzayBtYXkg bm90IG1hdGNoIGlmIHRyYW4gdGltZXMgZGlmZmVyIGR1ZSB0byBvdXRkYXRlZCBmaWxlcworICAg ICAvLyBUT0RPIFNvbWUgdmFsaWQgVFogbmFtZXMgYXJlIG5vdCB2YWxpZCBJQ1UgbmFtZXMsIHVz ZSB0cmFuc2xhdGlvbiB0YWJsZT8KKyAgICAgaWYgKG1faWN1LT5pc1ZhbGlkKCkpCisgICAgICAg ICByZXR1cm4gbV9pY3UtPmRpc3BsYXlOYW1lKHRpbWVUeXBlLCBuYW1lVHlwZSwgbG9jYWxlKTsK KysgICAgbG9jay51bmxvY2soKTsKKyAjZWxzZQorICAgICBRX1VOVVNFRCh0aW1lVHlwZSkKKyAg ICAgUV9VTlVTRUQobmFtZVR5cGUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rv b2xzL3FhcnJheWRhdGEuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlkYXRhLmgK K2luZGV4IGRjZDk1OTI0YzEuLmQwMTczOWU3ZTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMv cWFycmF5ZGF0YS5oCitAQCAtNDIsNiArNDIsNyBAQAorIAorICNpbmNsdWRlIDxRdENvcmUvcXJl ZmNvdW50Lmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxjc3RkaW50PgorIAor IFFUX0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTU4LDE0ICs1OSwxNCBAQCBzdHJ1Y3QgUV9DT1JF X0VYUE9SVCBRQXJyYXlEYXRhCisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUKHNpemUgPT0gMAor ICAgICAgICAgICAgICAgICB8fCBvZmZzZXQgPCAwIHx8IHNpemVfdChvZmZzZXQpID49IHNpemVv ZihRQXJyYXlEYXRhKSk7CistICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyICo+ KHRoaXMpICsgb2Zmc2V0OworKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAq PiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgb2Zmc2V0KTsKKyAgICAgfQor IAorICAgICBjb25zdCB2b2lkICpkYXRhKCkgY29uc3QKKyAgICAgeworICAgICAgICAgUV9BU1NF UlQoc2l6ZSA9PSAwCisgICAgICAgICAgICAgICAgIHx8IG9mZnNldCA8IDAgfHwgc2l6ZV90KG9m ZnNldCkgPj0gc2l6ZW9mKFFBcnJheURhdGEpKTsKKy0gICAgICAgIHJldHVybiByZWludGVycHJl dF9jYXN0PGNvbnN0IGNoYXIgKj4odGhpcykgKyBvZmZzZXQ7CisrICAgICAgICByZXR1cm4gcmVp bnRlcnByZXRfY2FzdDx2b2lkICo+IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykg KyBvZmZzZXQpOworICAgICB9CisgCisgICAgIC8vIFRoaXMgcmVmZXJzIHRvIGFycmF5IGRhdGEg bXV0YWJpbGl0eSwgbm90ICJoZWFkZXIgZGF0YSIgcmVwcmVzZW50ZWQgYnkKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaCBiL3F0YmFzZS9zcmMvY29y ZWxpYi90b29scy9xZnJlZWxpc3RfcC5oCitpbmRleCA1YmEyM2IzNDRiLi45OTc0MTAyMTM2IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlzdF9wLmgKKysrKyBi L3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oCitAQCAtMTYxLDcgKzE2MSw3 IEBAIGNsYXNzIFFGcmVlTGlzdAorICAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAg ICAgICB4IC09IHNpemU7CisgICAgICAgICB9CistICAgICAgICBRX0FTU0VSVChmYWxzZSk7Cisr ICAgICAgICBRX1VOUkVBQ0hBQkxFKCk7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgIH0KKyAK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZlcnNpb25udW1iZXIuaCBi L3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oCitpbmRleCBkNDNiODZi YTUxLi4yODQzZjJiMDQzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3F2 ZXJzaW9ubnVtYmVyLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51 bWJlci5oCitAQCAtMjczLDEwICsyNzMsMTAgQEAgcHVibGljOgorIAorICAgICBRX1JFUVVJUkVE X1JFU1VMVCBRX0NPUkVfRVhQT1JUIFFTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKyAjaWYgUVRf U1RSSU5HVklFV19MRVZFTCA8IDIKKy0gICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9S VCBzdGF0aWMgUV9ERUNMX1BVUkVfRlVOQ1RJT04gUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhj b25zdCBRU3RyaW5nICZzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKysgICAg UV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUVZlcnNpb25OdW1iZXIgZnJv bVN0cmluZyhjb25zdCBRU3RyaW5nICZzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRy KTsKKyAjZW5kaWYKKy0gICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMg UV9ERUNMX1BVUkVfRlVOQ1RJT04gUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhRTGF0aW4xU3Ry aW5nIHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworLSAgICBRX1JFUVVJUkVE X1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRX0RFQ0xfUFVSRV9GVU5DVElPTiBRVmVyc2lv bk51bWJlciBmcm9tU3RyaW5nKFFTdHJpbmdWaWV3IHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9 IG51bGxwdHIpOworKyAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBR VmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFMYXRpbjFTdHJpbmcgc3RyaW5nLCBpbnQgKnN1ZmZp eEluZGV4ID0gbnVsbHB0cik7CisrICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQg c3RhdGljIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoUVN0cmluZ1ZpZXcgc3RyaW5nLCBpbnQg KnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisgCisgcHJpdmF0ZToKKyAjaWZuZGVmIFFUX05PX0RB VEFTVFJFQU0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNpbnRlZ3JhdG9yLmNw cCBiL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwCitpbmRleCA1YjY2Y2U5NzFi Li4yOGEzYjBmZmVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRv ci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwCitAQCAtMTEz NSw3ICsxMTM1LDEzIEBAIHZvaWQgUURCdXNDb25uZWN0aW9uUHJpdmF0ZTo6Y2xvc2VDb25uZWN0 aW9uKCkKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBxRGVsZXRlQWxsKHBlbmRpbmdDYWxs cyk7CisrICAgIGZvciAoYXV0byBpdCA9IHBlbmRpbmdDYWxscy5iZWdpbigpOyBpdCAhPSBwZW5k aW5nQ2FsbHMuZW5kKCk7ICsraXQpIHsKKysgICAgICAgIGF1dG8gY2FsbCA9ICppdDsKKysgICAg ICAgIGlmICghY2FsbC0+cmVmLmRlcmVmKCkpIHsKKysgICAgICAgICAgICBkZWxldGUgY2FsbDsK KysgICAgICAgIH0KKysgICAgfQorKyAgICBwZW5kaW5nQ2FsbHMuY2xlYXIoKTsKKyAKKyAgICAg Ly8gRGlzY29ubmVjdCBhbGwgc2lnbmFscyBmcm9tIHNpZ25hbCBob29rcyBhbmQgZnJvbSB0aGUg b2JqZWN0IHRyZWUgdG8KKyAgICAgLy8gYXZvaWQgUU9iamVjdDo6ZGVzdHJveWVkIGJlaW5nIHNl bnQgdG8gZGJ1cyBkYWVtb24gdGhyZWFkIHdoaWNoIGhhcworQEAgLTI1ODQsNiArMjU5MCwxMSBA QCBRREJ1c0Nvbm5lY3Rpb25Qcml2YXRlOjpmaW5kTWV0YU9iamVjdChjb25zdCBRU3RyaW5nICZz ZXJ2aWNlLCBjb25zdCBRU3RyaW5nICZwYQorICAgICAgICAgaWYgKG1vKQorICAgICAgICAgICAg IHJldHVybiBtbzsKKyAgICAgfQorKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpIHsKKysgICAgICAg IGVycm9yID0gUURCdXNFcnJvcihRREJ1c0Vycm9yOjpJbnZhbGlkT2JqZWN0UGF0aCwgUUxhdGlu MVN0cmluZygiT2JqZWN0IHBhdGggY2Fubm90IGJlIGVtcHR5IikpOworKyAgICAgICAgbGFzdEVy cm9yID0gZXJyb3I7CisrICAgICAgICByZXR1cm4gbnVsbHB0cjsKKysgICAgfQorIAorICAgICAv LyBpbnRyb3NwZWN0IHRoZSB0YXJnZXQgb2JqZWN0CisgICAgIFFEQnVzTWVzc2FnZSBtc2cgPSBR REJ1c01lc3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwoc2VydmljZSwgcGF0aCwKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcCBiL3F0YmFzZS9zcmMvZGJ1cy9x ZGJ1c21ldGFvYmplY3QuY3BwCitpbmRleCA1MjY1NTY4ZjQyLi43ZTlmMGYxYWNjIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9iamVjdC5jcHAKKysrKyBiL3F0YmFzZS9z cmMvZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwCitAQCAtMjEwLDYgKzIxMCw5IEBAIFFEQnVzTWV0 YU9iamVjdEdlbmVyYXRvcjo6ZmluZFR5cGUoY29uc3QgUUJ5dGVBcnJheSAmc2lnbmF0dXJlLAor ICAgICAgICAgfSBlbHNlIGlmIChzaWduYXR1cmUgPT0gImF7c3N9IikgeworICAgICAgICAgICAg IHJlc3VsdC5uYW1lID0gIlFNYXA8UVN0cmluZyxRU3RyaW5nPiI7CisgICAgICAgICAgICAgdHlw ZSA9IHFNZXRhVHlwZUlkPFFNYXA8UVN0cmluZywgUVN0cmluZz4gPigpOworKyAgICAgICAgfSBl bHNlIGlmIChzaWduYXR1cmUgPT0gImFheSIpIHsKKysgICAgICAgICAgICByZXN1bHQubmFtZSA9 ICJRQnl0ZUFycmF5TGlzdCI7CisrICAgICAgICAgICAgdHlwZSA9IHFNZXRhVHlwZUlkPFFCeXRl QXJyYXlMaXN0PigpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICByZXN1bHQubmFt ZSA9ICJ7RC1CdXMgdHlwZSBcIiIgKyBzaWduYXR1cmUgKyAiXCJ9IjsKKyAgICAgICAgICAgICB0 eXBlID0gcmVnaXN0ZXJDb21wbGV4REJ1c1R5cGUocmVzdWx0Lm5hbWUpOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUuY3BwIGIvcXRiYXNlL3NyYy9n dWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAKK2luZGV4IGQ3MDViZmNjYjUuLjBjYWYzYzgw OGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlLmNw cAorKysrIGIvcXRiYXNlL3NyYy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAKK0BAIC01 NCw2ICs1NCw3IEBACisgI2luY2x1ZGUgPFF0Q29yZS9xZGVidWcuaD4KKyAjaW5jbHVkZSA8UXRD b3JlL3Fsb2dnaW5nY2F0ZWdvcnkuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FtZXRhb2JqZWN0Lmg+ CisrI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3FtZXRhb2JqZWN0X3AuaD4KKyAjaW5jbHVkZSA8 UXRDb3JlL3FoYXNoLmg+CisgI2luY2x1ZGUgPHByaXZhdGUvcWZhY3Rvcnlsb2FkZXJfcC5oPgor IAorQEAgLTY4MSw2ICs2ODIsMjUgQEAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxl OjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2UoUU9iamVjdCAqb2JqZWN0KQorICAgICAvLyBDcmVh dGUgYSBRQWNjZXNzaWJsZUludGVyZmFjZSBmb3IgdGhlIG9iamVjdCBjbGFzcy4gU3RhcnQgYnkg dGhlIG1vc3QKKyAgICAgLy8gZGVyaXZlZCBjbGFzcyBhbmQgd2FsayB1cCB0aGUgY2xhc3MgaGll cmFyY2h5LgorICAgICBjb25zdCBRTWV0YU9iamVjdCAqbW8gPSBvYmplY3QtPm1ldGFPYmplY3Qo KTsKKysgICAgY29uc3QgYXV0byAqb2JqZWN0UHJpdiA9IFFPYmplY3RQcml2YXRlOjpnZXQob2Jq ZWN0KTsKKysgICAgLyoKKysgICAgIFdlIGRvIG5vdCB3YW50IHRvIGNhY2hlIGVhY2ggYW5kIGV2 ZXJ5IFFNTCBtZXRhb2JqZWN0IChCdXR0b25fUU1MVFlQRV8xMjQsCisrICAgICBCdXR0b25fUU1M VFlQRV8xMjUsIGV0Yy4pLiBUaG9zZSBkeW5hbWljIG1ldGFvYmplY3RzIHNob3VsZG4ndCBoYXZl IGFuCisrICAgICBhY2Nlc3NpYmxlIGludGVyZmFjZSBpbiBhbnkgY2FzZS4gSW5zdGVhZCwgd2Ug c3RhcnQgdGhlIHdob2xlIGNoZWNraW5nCisrICAgICB3aXRoIHRoZSBmaXJzdCBub24tZHluYW1p YyBtZXRhLW9iamVjdC4gVG8gYXZvaWQgcG90ZW50aWFsIHJlZ3Jlc3Npb25zCisrICAgICBpbiBv dGhlciBhcmVhcyBvZiBRdCB0aGF0IGFsc28gdXNlIGR5bmFtaWMgbWV0YW9iamVjdHMsIHdlIG9u bHkgZG8gdGhpcworKyAgICAgZm9yIG9iamVjdHMgdGhhdCBhcmUgUU1MLXJlbGF0ZWQgKGFwcHJv eGltYXRlZCBieSBjaGVja2luZyB3aGV0aGVyIHRoZXkKKysgICAgIGhhdmUgZGRhdGEgc2V0KS4K KysgICAgKi8KKysgICAgY29uc3QgYm9vbCBxbWxSZWxhdGVkID0gIW9iamVjdFByaXYtPmlzRGVs ZXRpbmdDaGlsZHJlbiAmJgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RQcml2 LT5kZWNsYXJhdGl2ZURhdGE7CisrICAgIHdoaWxlIChxbWxSZWxhdGVkICYmIG1vKSB7CisrICAg ICAgICBhdXRvIG1vcCA9IFFNZXRhT2JqZWN0UHJpdmF0ZTo6Z2V0KG1vKTsKKysgICAgICAgIGlm ICghbW9wIHx8ICEobW9wLT5mbGFncyAmIER5bmFtaWNNZXRhT2JqZWN0KSkKKysgICAgICAgICAg ICBicmVhazsKKysKKysgICAgICAgIG1vID0gbW8tPnN1cGVyQ2xhc3MoKTsKKysgICAgfTsKKyAg ICAgd2hpbGUgKG1vKSB7CisgICAgICAgICBjb25zdCBRU3RyaW5nIGNuID0gUUxhdGluMVN0cmlu Zyhtby0+Y2xhc3NOYW1lKCkpOworIAorQEAgLTY5NiwxNCArNzE2LDE1IEBAIFFBY2Nlc3NpYmxl SW50ZXJmYWNlICpRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKFFPYmplY3Qg Km9iamVjdCkKKyAgICAgICAgIC8vIEZpbmQgYSBRQWNjZXNzaWJsZVBsdWdpbiAoZmFjdG9yeSkg Zm9yIHRoZSBjbGFzcyBuYW1lLiBJZiB0aGVyZSdzCisgICAgICAgICAvLyBubyBlbnRyeSBpbiB0 aGUgY2FjaGUgdHJ5IHRvIGNyZWF0ZSBpdCB1c2luZyB0aGUgcGx1Z2luIGxvYWRlci4KKyAgICAg ICAgIGlmICghcUFjY2Vzc2libGVQbHVnaW5zKCktPmNvbnRhaW5zKGNuKSkgeworKyAgICAgICAg ICAgIFFBY2Nlc3NpYmxlUGx1Z2luICpmYWN0b3J5ID0gbnVsbHB0cjsgLy8gMCBtZWFucyAibm8g cGx1Z2luIGZvdW5kIi4gVGhpcyBpcyBjYWNoZWQgYXMgd2VsbC4KKyAgICAgICAgICAgICBjb25z dCBpbnQgaW5kZXggPSBsb2FkZXIoKS0+aW5kZXhPZihjbik7CistICAgICAgICAgICAgaWYgKGlu ZGV4ICE9IC0xKSB7CistICAgICAgICAgICAgICAgIFFBY2Nlc3NpYmxlUGx1Z2luICpmYWN0b3J5 ID0gcW9iamVjdF9jYXN0PFFBY2Nlc3NpYmxlUGx1Z2luICo+KGxvYWRlcigpLT5pbnN0YW5jZShp bmRleCkpOworLSAgICAgICAgICAgICAgICBxQWNjZXNzaWJsZVBsdWdpbnMoKS0+aW5zZXJ0KGNu LCBmYWN0b3J5KTsKKy0gICAgICAgICAgICB9CisrICAgICAgICAgICAgaWYgKGluZGV4ICE9IC0x KQorKyAgICAgICAgICAgICAgICBmYWN0b3J5ID0gcW9iamVjdF9jYXN0PFFBY2Nlc3NpYmxlUGx1 Z2luICo+KGxvYWRlcigpLT5pbnN0YW5jZShpbmRleCkpOworKyAgICAgICAgICAgIHFBY2Nlc3Np YmxlUGx1Z2lucygpLT5pbnNlcnQoY24sIGZhY3RvcnkpOworICAgICAgICAgfQorIAorICAgICAg ICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgY2FjaGUgc2hvdWxkIGNvbnRhaW4gYSB2YWxpZCBmYWN0 b3J5IHBvaW50ZXIgb3IgMDoKKysgICAgICAgIFFfQVNTRVJUKHFBY2Nlc3NpYmxlUGx1Z2lucygp LT5jb250YWlucyhjbikpOworICAgICAgICAgUUFjY2Vzc2libGVQbHVnaW4gKmZhY3RvcnkgPSBx QWNjZXNzaWJsZVBsdWdpbnMoKS0+dmFsdWUoY24pOworICAgICAgICAgaWYgKGZhY3RvcnkpIHsK KyAgICAgICAgICAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqcmVzdWx0ID0gZmFjdG9yeS0+Y3Jl YXRlKGNuLCBvYmplY3QpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3VyZS5q c29uIGIvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpzb24KK2luZGV4IDFmMDg3OTVjNTcuLjEy Yzk1NzQyZDIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9jb25maWd1cmUuanNvbgorKysr IGIvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpzb24KK0BAIC04MzQsNyArODM0LDggQEAKKyAg ICAgICAgICAgICAgICAgICAgICIvLyBlbWJlZGRlZCBkZXZpY2VzLCBhcmUgbm90IGludGVuZGVk IHRvIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBYLiBFR0wgc3VwcG9ydCIsCisgICAgICAgICAgICAg ICAgICAgICAiLy8gaGFzIHRvIGJlIGRpc2FibGVkIGluIHBsdWdpbnMgbGlrZSB4Y2IgaW4gdGhp cyBjYXNlIHNpbmNlIHRoZSBuYXRpdmUgZGlzcGxheSwiLAorICAgICAgICAgICAgICAgICAgICAg Ii8vIHdpbmRvdyBhbmQgcGl4bWFwIHR5cGVzIHdpbGwgYmUgZGlmZmVyZW50IHRoYW4gd2hhdCBh biBYLWJhc2VkIHBsYXRmb3JtIiwKKy0gICAgICAgICAgICAgICAgICAgICIvLyBwbHVnaW4gd291 bGQgZXhwZWN0LiIKKysgICAgICAgICAgICAgICAgICAgICIvLyBwbHVnaW4gd291bGQgZXhwZWN0 LiIsCisrICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBVU0VfWDExIgorICAgICAgICAgICAg ICAgICBdLAorICAgICAgICAgICAgICAgICAiaW5jbHVkZSI6IFsgIkVHTC9lZ2wuaCIsICJYMTEv WGxpYi5oIiBdLAorICAgICAgICAgICAgICAgICAibWFpbiI6IFsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9x Ym1waGFuZGxlci5jcHAKK2luZGV4IDk2ZjFlOGNiMWQuLjBlNzNiYmJkYjAgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Z3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcAorQEAgLTE1MCwxNiArMTUwLDQyIEBAIHN0YXRpYyBR RGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIg JmJpKQorICAgICByZXR1cm4gczsKKyB9CisgCistc3RhdGljIGludCBjYWxjX3NoaWZ0KHVpbnQg bWFzaykKKytzdGF0aWMgdWludCBjYWxjX3NoaWZ0KHVpbnQgbWFzaykKKyB7CistICAgIGludCBy ZXN1bHQgPSAwOworLSAgICB3aGlsZSAobWFzayAmJiAhKG1hc2sgJiAxKSkgeworKyAgICB1aW50 IHJlc3VsdCA9IDA7CisrICAgIHdoaWxlICgobWFzayA+PSAweDEwMCkgfHwgKCEobWFzayAmIDEp ICYmIG1hc2spKSB7CisgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgIG1hc2sgPj49IDE7Cisg ICAgIH0KKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CisgCisrc3RhdGljIHVpbnQgY2FsY19zY2Fs ZSh1aW50IGxvd19tYXNrKQorK3sKKysgICAgdWludCByZXN1bHQgPSA4OworKyAgICB3aGlsZSAo bG93X21hc2sgJiYgcmVzdWx0KSB7CisrICAgICAgICByZXN1bHQtLTsKKysgICAgICAgIGxvd19t YXNrID4+PSAxOworKyAgICB9CisrICAgIHJldHVybiByZXN1bHQ7CisrfQorKworK3N0YXRpYyBp bmxpbmUgdWludCBhcHBseV9zY2FsZSh1aW50IHZhbHVlLCB1aW50IHNjYWxlKQorK3sKKysgICAg aWYgKCEoc2NhbGUgJiAweDA3KSkgLy8gcmV0dXJuIGltbWVkaWF0ZWx5IGlmIHNjYWxlID09IDgg b3IgMAorKyAgICAgICAgcmV0dXJuIHZhbHVlOworKworKyAgICB1aW50IGZpbGxlZCA9IDggLSBz Y2FsZTsKKysgICAgdWludCByZXN1bHQgPSB2YWx1ZSA8PCBzY2FsZTsKKysKKysgICAgZG8gewor KyAgICAgICAgcmVzdWx0IHw9IHJlc3VsdCA+PiBmaWxsZWQ7CisrICAgICAgICBmaWxsZWQgPDw9 IDE7CisrICAgIH0gd2hpbGUgKGZpbGxlZCA8IDgpOworKworKyAgICByZXR1cm4gcmVzdWx0Owor K30KKysKKyBzdGF0aWMgYm9vbCByZWFkX2RpYl9maWxlaGVhZGVyKFFEYXRhU3RyZWFtICZzLCBC TVBfRklMRUhEUiAmYmYpCisgeworICAgICAvLyByZWFkIEJNUCBmaWxlIGhlYWRlcgorQEAgLTIy MiwxNCArMjQ4LDE0IEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMs IGNvbnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAgdWludCBncmVlbl9t YXNrID0gMDsKKyAgICAgdWludCBibHVlX21hc2sgPSAwOworICAgICB1aW50IGFscGhhX21hc2sg PSAwOworLSAgICBpbnQgcmVkX3NoaWZ0ID0gMDsKKy0gICAgaW50IGdyZWVuX3NoaWZ0ID0gMDsK Ky0gICAgaW50IGJsdWVfc2hpZnQgPSAwOworLSAgICBpbnQgYWxwaGFfc2hpZnQgPSAwOworLSAg ICBpbnQgcmVkX3NjYWxlID0gMDsKKy0gICAgaW50IGdyZWVuX3NjYWxlID0gMDsKKy0gICAgaW50 IGJsdWVfc2NhbGUgPSAwOworLSAgICBpbnQgYWxwaGFfc2NhbGUgPSAwOworKyAgICB1aW50IHJl ZF9zaGlmdCA9IDA7CisrICAgIHVpbnQgZ3JlZW5fc2hpZnQgPSAwOworKyAgICB1aW50IGJsdWVf c2hpZnQgPSAwOworKyAgICB1aW50IGFscGhhX3NoaWZ0ID0gMDsKKysgICAgdWludCByZWRfc2Nh bGUgPSAwOworKyAgICB1aW50IGdyZWVuX3NjYWxlID0gMDsKKysgICAgdWludCBibHVlX3NjYWxl ID0gMDsKKysgICAgdWludCBhbHBoYV9zY2FsZSA9IDA7CisgCisgICAgIGlmICghZC0+aXNTZXF1 ZW50aWFsKCkpCisgICAgICAgICBkLT5zZWVrKHN0YXJ0cG9zICsgQk1QX0ZJTEVIRFJfU0laRSAr IGJpLmJpU2l6ZSk7IC8vIGdvdG8gc3RhcnQgb2YgY29sb3JtYXAgb3IgbWFza3MKK0BAIC0zMDgs MTkgKzMzNCwxOSBAQCBzdGF0aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBj b25zdCBCTVBfSU5GT0hEUiAmYmksIHFpbnQ2NCBvZmZzZXQsCisgICAgICAgICByZWRfc2hpZnQg PSBjYWxjX3NoaWZ0KHJlZF9tYXNrKTsKKyAgICAgICAgIGlmICgoKHJlZF9tYXNrID4+IHJlZF9z aGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgICAgIHJl ZF9zY2FsZSA9IDI1NiAvICgocmVkX21hc2sgPj4gcmVkX3NoaWZ0KSArIDEpOworKyAgICAgICAg cmVkX3NjYWxlID0gY2FsY19zY2FsZShyZWRfbWFzayA+PiByZWRfc2hpZnQpOworICAgICAgICAg Z3JlZW5fc2hpZnQgPSBjYWxjX3NoaWZ0KGdyZWVuX21hc2spOworICAgICAgICAgaWYgKCgoZ3Jl ZW5fbWFzayA+PiBncmVlbl9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKKy0gICAgICAgIGdyZWVuX3NjYWxlID0gMjU2IC8gKChncmVlbl9tYXNrID4+IGdyZWVu X3NoaWZ0KSArIDEpOworKyAgICAgICAgZ3JlZW5fc2NhbGUgPSBjYWxjX3NjYWxlKGdyZWVuX21h c2sgPj4gZ3JlZW5fc2hpZnQpOworICAgICAgICAgYmx1ZV9zaGlmdCA9IGNhbGNfc2hpZnQoYmx1 ZV9tYXNrKTsKKyAgICAgICAgIGlmICgoKGJsdWVfbWFzayA+PiBibHVlX3NoaWZ0KSArIDEpID09 IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgYmx1ZV9zY2FsZSA9IDI1 NiAvICgoYmx1ZV9tYXNrID4+IGJsdWVfc2hpZnQpICsgMSk7CisrICAgICAgICBibHVlX3NjYWxl ID0gY2FsY19zY2FsZShibHVlX21hc2sgPj4gYmx1ZV9zaGlmdCk7CisgICAgICAgICBhbHBoYV9z aGlmdCA9IGNhbGNfc2hpZnQoYWxwaGFfbWFzayk7CisgICAgICAgICBpZiAoKChhbHBoYV9tYXNr ID4+IGFscGhhX3NoaWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor LSAgICAgICAgYWxwaGFfc2NhbGUgPSAyNTYgLyAoKGFscGhhX21hc2sgPj4gYWxwaGFfc2hpZnQp ICsgMSk7CisrICAgICAgICBhbHBoYV9zY2FsZSA9IGNhbGNfc2NhbGUoYWxwaGFfbWFzayA+PiBh bHBoYV9zaGlmdCk7CisgICAgIH0gZWxzZSBpZiAoY29tcCA9PSBCTVBfUkdCICYmIChuYml0cyA9 PSAyNCB8fCBuYml0cyA9PSAzMikpIHsKKyAgICAgICAgIGJsdWVfbWFzayA9IDB4MDAwMDAwZmY7 CisgICAgICAgICBncmVlbl9tYXNrID0gMHgwMDAwZmYwMDsKK0BAIC0zMjgsMTcgKzM1NCwxNSBA QCBzdGF0aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5G T0hEUiAmYmksIHFpbnQ2NCBvZmZzZXQsCisgICAgICAgICBibHVlX3NoaWZ0ID0gMDsKKyAgICAg ICAgIGdyZWVuX3NoaWZ0ID0gODsKKyAgICAgICAgIHJlZF9zaGlmdCA9IDE2OworLSAgICAgICAg Ymx1ZV9zY2FsZSA9IGdyZWVuX3NjYWxlID0gcmVkX3NjYWxlID0gMTsKKysgICAgICAgIGJsdWVf c2NhbGUgPSBncmVlbl9zY2FsZSA9IHJlZF9zY2FsZSA9IDA7CisgICAgIH0gZWxzZSBpZiAoY29t cCA9PSBCTVBfUkdCICYmIG5iaXRzID09IDE2KSB7CisgICAgICAgICBibHVlX21hc2sgPSAweDAw MWY7CisgICAgICAgICBncmVlbl9tYXNrID0gMHgwM2UwOworICAgICAgICAgcmVkX21hc2sgPSAw eDdjMDA7CisgICAgICAgICBibHVlX3NoaWZ0ID0gMDsKKy0gICAgICAgIGdyZWVuX3NoaWZ0ID0g MjsKKy0gICAgICAgIHJlZF9zaGlmdCA9IDc7CistICAgICAgICByZWRfc2NhbGUgPSAxOworLSAg ICAgICAgZ3JlZW5fc2NhbGUgPSAxOworLSAgICAgICAgYmx1ZV9zY2FsZSA9IDg7CisrICAgICAg ICBncmVlbl9zaGlmdCA9IDU7CisrICAgICAgICByZWRfc2hpZnQgPSAxMDsKKysgICAgICAgIGJs dWVfc2NhbGUgPSBncmVlbl9zY2FsZSA9IHJlZF9zY2FsZSA9IDM7CisgICAgIH0KKyAKKyAjaWYg MAorQEAgLTU0NCwxMCArNTY4LDEwIEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFT dHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAgICAg ICAgICAgICAgICAgIGMgfD0gKih1Y2hhciopKGIrMik8PDE2OworICAgICAgICAgICAgICAgICBp ZiAobmJpdHMgPiAyNCkKKyAgICAgICAgICAgICAgICAgICAgIGMgfD0gKih1Y2hhciopKGIrMyk8 PDI0OworLSAgICAgICAgICAgICAgICAqcCsrID0gcVJnYmEoKChjICYgcmVkX21hc2spID4+IHJl ZF9zaGlmdCkgKiByZWRfc2NhbGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgoYyAmIGdyZWVuX21hc2spID4+IGdyZWVuX3NoaWZ0KSAqIGdyZWVuX3NjYWxlLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGMgJiBibHVlX21hc2sp ID4+IGJsdWVfc2hpZnQpICogYmx1ZV9zY2FsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdHJhbnNwID8gKChjICYgYWxwaGFfbWFzaykgPj4gYWxwaGFfc2hpZnQp ICogYWxwaGFfc2NhbGUgOiAweGZmKTsKKysgICAgICAgICAgICAgICAgKnArKyA9IHFSZ2JhKGFw cGx5X3NjYWxlKChjICYgcmVkX21hc2spID4+IHJlZF9zaGlmdCwgcmVkX3NjYWxlKSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5X3NjYWxlKChjICYgZ3JlZW5fbWFzaykgPj4g Z3JlZW5fc2hpZnQsIGdyZWVuX3NjYWxlKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFwcGx5X3NjYWxlKChjICYgYmx1ZV9tYXNrKSA+PiBibHVlX3NoaWZ0LCBibHVlX3NjYWxlKSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcCA/IGFwcGx5X3NjYWxlKChjICYg YWxwaGFfbWFzaykgPj4gYWxwaGFfc2hpZnQsIGFscGhhX3NjYWxlKSA6IDB4ZmYpOworICAgICAg ICAgICAgICAgICBiICs9IG5iaXRzLzg7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAgYi9xdGJhc2Uvc3JjL2d1 aS9pbWFnZS9xaW1hZ2UuY3BwCitpbmRleCA3MTUyYWMxNjA3Li4wZGY3NzI1NjRjIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9n dWkvaW1hZ2UvcWltYWdlLmNwcAorQEAgLTQ2OTQsNiArNDY5NCw4IEBAIFFJbWFnZSBRSW1hZ2U6 OnNtb290aFNjYWxlZChpbnQgdywgaW50IGgpIGNvbnN0IHsKKyBzdGF0aWMgUUltYWdlIHJvdGF0 ZWQ5MChjb25zdCBRSW1hZ2UgJmltYWdlKQorIHsKKyAgICAgUUltYWdlIG91dChpbWFnZS5oZWln aHQoKSwgaW1hZ2Uud2lkdGgoKSwgaW1hZ2UuZm9ybWF0KCkpOworKyAgICBpZiAob3V0LmlzTnVs bCgpKQorKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICAgY29weU1ldGFkYXRhKCZvdXQsIGltYWdl KTsKKyAgICAgaWYgKGltYWdlLmNvbG9yQ291bnQoKSA+IDApCisgICAgICAgICBvdXQuc2V0Q29s b3JUYWJsZShpbWFnZS5jb2xvclRhYmxlKCkpOworQEAgLTQ3MjIsNiArNDcyNCw4IEBAIHN0YXRp YyBRSW1hZ2Ugcm90YXRlZDE4MChjb25zdCBRSW1hZ2UgJmltYWdlKQorICAgICAgICAgcmV0dXJu IGltYWdlLm1pcnJvcmVkKHRydWUsIHRydWUpOworIAorICAgICBRSW1hZ2Ugb3V0KGltYWdlLndp ZHRoKCksIGltYWdlLmhlaWdodCgpLCBpbWFnZS5mb3JtYXQoKSk7CisrICAgIGlmIChvdXQuaXNO dWxsKCkpCisrICAgICAgICByZXR1cm4gb3V0OworICAgICBjb3B5TWV0YWRhdGEoJm91dCwgaW1h Z2UpOworICAgICBpZiAoaW1hZ2UuY29sb3JDb3VudCgpID4gMCkKKyAgICAgICAgIG91dC5zZXRD b2xvclRhYmxlKGltYWdlLmNvbG9yVGFibGUoKSk7CitAQCAtNDczNCw2ICs0NzM4LDggQEAgc3Rh dGljIFFJbWFnZSByb3RhdGVkMTgwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgc3RhdGljIFFJbWFn ZSByb3RhdGVkMjcwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgeworICAgICBRSW1hZ2Ugb3V0KGlt YWdlLmhlaWdodCgpLCBpbWFnZS53aWR0aCgpLCBpbWFnZS5mb3JtYXQoKSk7CisrICAgIGlmIChv dXQuaXNOdWxsKCkpCisrICAgICAgICByZXR1cm4gb3V0OworICAgICBjb3B5TWV0YWRhdGEoJm91 dCwgaW1hZ2UpOworICAgICBpZiAoaW1hZ2UuY29sb3JDb3VudCgpID4gMCkKKyAgICAgICAgIG91 dC5zZXRDb2xvclRhYmxlKGltYWdlLmNvbG9yVGFibGUoKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FjdXJz b3IuY3BwCitpbmRleCBkNmNjYWZmOGVkLi40NTUwODgyNDFjIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwv cWN1cnNvci5jcHAKK0BAIC0yNTEsNyArMjUxLDggQEAgdm9pZCBRQ3Vyc29yOjpzZXRQb3MoUVNj cmVlbiAqc2NyZWVuLCBpbnQgeCwgaW50IHkpCisgeworICAgICBpZiAoc2NyZWVuKSB7CisgICAg ICAgICBpZiAoUVBsYXRmb3JtQ3Vyc29yICpjdXJzb3IgPSBzY3JlZW4tPmhhbmRsZSgpLT5jdXJz b3IoKSkgeworLSAgICAgICAgICAgIGNvbnN0IFFQb2ludCBkZXZpY2VQb3MgPSBRSGlnaERwaTo6 dG9OYXRpdmVQaXhlbHMoUVBvaW50KHgsIHkpLCBzY3JlZW4pOworKyAgICAgICAgICAgIGNvbnN0 IFFQb2ludCBwb3MoeCwgeSk7CisrICAgICAgICAgICAgY29uc3QgUVBvaW50IGRldmljZVBvcyA9 IFFIaWdoRHBpOjp0b05hdGl2ZVBpeGVscyhwb3MsIHNjcmVlbi0+dmlydHVhbFNpYmxpbmdBdChw b3MpKTsKKyAgICAgICAgICAgICAvLyBOZWVkIHRvIGNoZWNrLCBzaW5jZSBzb21lIFggc2VydmVy cyBnZW5lcmF0ZSBudWxsIG1vdXNlIG1vdmUKKyAgICAgICAgICAgICAvLyBldmVudHMsIGNhdXNp bmcgbG9vcGluZyBpbiBhcHBsaWNhdGlvbnMgd2hpY2ggY2FsbCBzZXRQb3MoKSBvbgorICAgICAg ICAgICAgIC8vIGV2ZXJ5IG1vdXNlIG1vdmUgZXZlbnQuCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwv cWhpZ2hkcGlzY2FsaW5nLmNwcAoraW5kZXggOWJiZjI3NzNhOS4uM2FjNGE0ZDhiNiAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3BwCisrKysgYi9x dGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcAorQEAgLTU4MCw5ICs1ODAs OCBAQCB2b2lkIFFIaWdoRHBpU2NhbGluZzo6c2V0U2NyZWVuRmFjdG9yKFFTY3JlZW4gKnNjcmVl biwgcXJlYWwgZmFjdG9yKQorICAgICBlbHNlCisgICAgICAgICBxTmFtZWRTY3JlZW5TY2FsZUZh Y3RvcnMoKS0+aW5zZXJ0KG5hbWUsIGZhY3Rvcik7CisgCistICAgIC8vIGhhY2sgdG8gZm9yY2Ug cmUtZXZhbHVhdGlvbiBvZiBzY3JlZW4gZ2VvbWV0cnkKKyAgICAgaWYgKHNjcmVlbi0+aGFuZGxl KCkpCistICAgICAgICBzY3JlZW4tPmRfZnVuYygpLT5zZXRQbGF0Zm9ybVNjcmVlbihzY3JlZW4t PmhhbmRsZSgpKTsgLy8gdXBkYXRlcyBnZW9tZXRyaWVzIGJhc2VkIG9uIHNjYWxlIGZhY3Rvcgor KyAgICAgICAgc2NyZWVuLT5kX2Z1bmMoKS0+dXBkYXRlTG9naWNhbERwaSgpOworIH0KKyAKKyBR UG9pbnQgUUhpZ2hEcGlTY2FsaW5nOjptYXBQb3NpdGlvblRvTmF0aXZlKGNvbnN0IFFQb2ludCAm cG9zLCBjb25zdCBRUGxhdGZvcm1TY3JlZW4gKnBsYXRmb3JtU2NyZWVuKQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwIGIvcXRiYXNlL3NyYy9ndWkv a2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAKK2luZGV4IGE3NWI4ZWY5MjAuLjRmMmQyOTQ3MzkgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlLmNwcAorKysrIGIv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAKK0BAIC03MDEsNiArNzAxLDEw IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgeworICAgICB7IFF0OjpLZXlfVG91Y2hwYWRUb2dnbGUs ICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlRvdWNocGFkIFRvZ2dsZSIpIH0sCisg ICAgIHsgUXQ6OktleV9Ub3VjaHBhZE9uLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIs ICJUb3VjaHBhZCBPbiIpIH0sCisgICAgIHsgUXQ6OktleV9Ub3VjaHBhZE9mZiwgIFFUX1RSQU5T TEFURV9OT09QKCJRU2hvcnRjdXQiLCAiVG91Y2hwYWQgT2ZmIikgfSwKKysgICAgeyBRdDo6S2V5 X1NoaWZ0LCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJTaGlmdCIpIH0sCisrICAg IHsgUXQ6OktleV9Db250cm9sLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJDb250 cm9sIikgfSwKKysgICAgeyBRdDo6S2V5X0FsdCwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRj dXQiLCAiQWx0IikgfSwKKysgICAgeyBRdDo6S2V5X01ldGEsICBRVF9UUkFOU0xBVEVfTk9PUCgi UVNob3J0Y3V0IiwgIk1ldGEiKSB9LAorIAorIH07Cisgc3RhdGljIFFfQ09OU1RFWFBSIGludCBu dW1LZXlOYW1lcyA9IHNpemVvZiBrZXluYW1lIC8gc2l6ZW9mICprZXluYW1lOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAgYi9xdGJhc2Uv c3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuY3BwCitpbmRleCBmZGM2YTZjNGFhLi5h YzQ3Zjk4YzVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNl cnZpY2VzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2Vz LmNwcAorQEAgLTU1LDYgKzU1LDE5IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorICAgICBcYnJpZWYg VGhlIFFQbGF0Zm9ybVNlcnZpY2VzIHByb3ZpZGVzIHRoZSBiYWNrZW5kIGZvciBkZXNrdG9wLXJl bGF0ZWQgZnVuY3Rpb25hbGl0eS4KKyAqLworIAorKy8qIQorKyAgICBcZW51bSBRUGxhdGZvcm1T ZXJ2aWNlczo6Q2FwYWJpbGl0eQorKworKyAgICBDYXBhYmlsaXRpZXMgYXJlIHVzZWQgdG8gZGV0 ZXJtaW5lIGEgc3BlY2lmaWMgcGxhdGZvcm0gc2VydmljZSdzIGF2YWlsYWJpbGl0eS4KKysKKysg ICAgXHZhbHVlIENvbG9yUGlja2luZ0Zyb21TY3JlZW4gVGhlIHBsYXRmb3JtIG5hdGl2ZWx5IHN1 cHBvcnRzIGNvbG9yIHBpY2tpbmcgZnJvbSBzY3JlZW4uCisrICAgIFRoaXMgY2FwYWJpbGl0eSBp bmRpY2F0ZXMgdGhhdCB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgIm9wYXF1ZSIgY29sb3IgcGlja2lu Zywgd2hlcmUgdGhlCisrICAgIHBsYXRmb3JtIGltcGxlbWVudHMgYSBjb21wbGV0ZSB1c2VyIGV4 cGVyaWVuY2UgZm9yIGNvbG9yIHBpY2tpbmcgYW5kIG91dHB1dHMgYSBjb2xvci4KKysgICAgVGhp cyBpcyBpbiBjb250cmFzdCB0byB0aGUgYXBwbGljYXRpb24gaW1wbGVtZW50aW5nIHRoZSBjb2xv ciBwaWNraW5nIHVzZXIgZXhwZXJpZW5jZQorKyAgICAodGFraW5nIGNhcmUgb2Ygc2hvd2luZyBh IGNyb3NzIGhhaXIsIGluc3RydWN0aW5nIHRoZSBwbGF0Zm9ybSBpbnRlZ3JhdGlvbiB0byBvYnRh aW4KKysgICAgdGhlIGNvbG9yIGF0IGEgZ2l2ZW4gcGl4ZWwsIGV0Yy4pLiBUaGUgcmVsYXRlZCBz ZXJ2aWNlIGZ1bmN0aW9uIGlzIHBpY2tDb2xvcigpLgorKyAqLworKworIFFQbGF0Zm9ybVNlcnZp Y2VzOjpRUGxhdGZvcm1TZXJ2aWNlcygpCisgeyB9CisgCitAQCAtODUsNSArOTgsMTYgQEAgUUJ5 dGVBcnJheSBRUGxhdGZvcm1TZXJ2aWNlczo6ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3QKKyAg ICAgcmV0dXJuIFFCeXRlQXJyYXkoIlVOS05PV04iKTsKKyB9CisgCisrUVBsYXRmb3JtU2Vydmlj ZUNvbG9yUGlja2VyICpRUGxhdGZvcm1TZXJ2aWNlczo6Y29sb3JQaWNrZXIoUVdpbmRvdyAqcGFy ZW50KQorK3sKKysgICAgUV9VTlVTRUQocGFyZW50KTsKKysgICAgcmV0dXJuIG51bGxwdHI7Cisr fQorKworK2Jvb2wgUVBsYXRmb3JtU2VydmljZXM6Omhhc0NhcGFiaWxpdHkoQ2FwYWJpbGl0eSBj YXBhYmlsaXR5KSBjb25zdAorK3sKKysgICAgUV9VTlVTRUQoY2FwYWJpbGl0eSkKKysgICAgcmV0 dXJuIGZhbHNlOworK30KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmggYi9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcXBsYXRmb3Jtc2VydmljZXMuaAoraW5kZXggNWRlOTZjZmE3ZC4uYThiMmE0Y2U3MSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5oCisrKysg Yi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaAorQEAgLTUwLDE2ICs1 MCwzMiBAQAorIC8vCisgCisgI2luY2x1ZGUgPFF0R3VpL3F0Z3VpZ2xvYmFsLmg+CisrI2luY2x1 ZGUgPFF0Q29yZS9xb2JqZWN0Lmg+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgY2xhc3Mg UVVybDsKKytjbGFzcyBRV2luZG93OworKworK2NsYXNzIFFfR1VJX0VYUE9SVCBRUGxhdGZvcm1T ZXJ2aWNlQ29sb3JQaWNrZXIgOiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9PQkpFQ1QKKytw dWJsaWM6CisrICAgIHVzaW5nIFFPYmplY3Q6OlFPYmplY3Q7CisrICAgIHZpcnR1YWwgdm9pZCBw aWNrQ29sb3IoKSA9IDA7CisrUV9TSUdOQUxTOgorKyAgICB2b2lkIGNvbG9yUGlja2VkKGNvbnN0 IFFDb2xvciAmY29sb3IpOworK307CisgCisgY2xhc3MgUV9HVUlfRVhQT1JUIFFQbGF0Zm9ybVNl cnZpY2VzCisgeworIHB1YmxpYzoKKyAgICAgUV9ESVNBQkxFX0NPUFlfTU9WRShRUGxhdGZvcm1T ZXJ2aWNlcykKKyAKKysgICAgZW51bSBDYXBhYmlsaXR5IHsKKysgICAgICAgIENvbG9yUGlja2lu ZywKKysgICAgfTsKKysKKyAgICAgUVBsYXRmb3JtU2VydmljZXMoKTsKKyAgICAgdmlydHVhbCB+ UVBsYXRmb3JtU2VydmljZXMoKSB7IH0KKyAKK0BAIC02Nyw2ICs4MywxMCBAQCBwdWJsaWM6Cisg ICAgIHZpcnR1YWwgYm9vbCBvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJsKTsKKyAKKyAgICAg dmlydHVhbCBRQnl0ZUFycmF5IGRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0OworKworKyAgICB2 aXJ0dWFsIGJvb2wgaGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNhcGFiaWxpdHkpIGNvbnN0Owor KworKyAgICB2aXJ0dWFsIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqY29sb3JQaWNrZXIo UVdpbmRvdyAqcGFyZW50ID0gbnVsbHB0cik7CisgfTsKKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcCBiL3F0 YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAKK2luZGV4IDcxNTIxYzAzMzku LjIzMjU4NzMyNDUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jt dGhlbWUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuY3Bw CitAQCAtMTYzLDYgKzE2Myw4IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorICAgICBcdmFsdWUg U2hvd1Nob3J0Y3V0c0luQ29udGV4dE1lbnVzIChib29sKSBXaGV0aGVyIHRvIGRpc3BsYXkgc2hv cnRjdXQga2V5IHNlcXVlbmNlcyBpbiBjb250ZXh0IG1lbnVzLgorIAorKyAgICBcdmFsdWUgQnV0 dG9uUHJlc3NLZXlzIChRTGlzdDxRdDo6S2V5PikgQSBsaXN0IG9mIGtleXMgdGhhdCBjYW4gYmUg dXNlZCB0byBwcmVzcyBidXR0b25zIHZpYSBrZXlib2FyZCBpbnB1dC4KKysKKyAgICAgXHNhIHRo ZW1lSGludCgpLCBRU3R5bGU6OnBpeGVsTWV0cmljKCkKKyAqLworIAorQEAgLTU2Myw2ICs1NjUs OCBAQCBRVmFyaWFudCBRUGxhdGZvcm1UaGVtZTo6ZGVmYXVsdFRoZW1lSGludChUaGVtZUhpbnQg aGludCkKKyAgICAgICAgIH0KKyAgICAgY2FzZSBNb3VzZVF1aWNrU2VsZWN0aW9uVGhyZXNob2xk OgorICAgICAgICAgcmV0dXJuIFFWYXJpYW50KDEwKTsKKysgICAgY2FzZSBCdXR0b25QcmVzc0tl eXM6CisrICAgICAgICByZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1ZShRTGlzdDxRdDo6S2V5Pih7 IFF0OjpLZXlfU3BhY2UsIFF0OjpLZXlfU2VsZWN0IH0pKTsKKyAgICAgfQorICAgICByZXR1cm4g UVZhcmlhbnQoKTsKKyB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0 Zm9ybXRoZW1lLmggYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuaAoraW5k ZXggMzE4NWZjNDU0MS4uN2U2YzlkNTc0MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xcGxhdGZvcm10aGVtZS5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRm b3JtdGhlbWUuaAorQEAgLTEyMCw3ICsxMjAsOCBAQCBwdWJsaWM6CisgICAgICAgICBUb3VjaERv dWJsZVRhcERpc3RhbmNlLAorICAgICAgICAgU2hvd1Nob3J0Y3V0c0luQ29udGV4dE1lbnVzLAor ICAgICAgICAgSWNvbkZhbGxiYWNrU2VhcmNoUGF0aHMsCistICAgICAgICBNb3VzZVF1aWNrU2Vs ZWN0aW9uVGhyZXNob2xkCisrICAgICAgICBNb3VzZVF1aWNrU2VsZWN0aW9uVGhyZXNob2xkLAor KyAgICAgICAgQnV0dG9uUHJlc3NLZXlzCisgICAgIH07CisgCisgICAgIGVudW0gRGlhbG9nVHlw ZSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4uY3BwIGIvcXRi YXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4uY3BwCitpbmRleCA4ZTBlYjM1MTE2Li41ZDE3MmE1 OGRkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4uY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAKK0BAIC03Nyw2ICs3NywxMiBAQCBR U2NyZWVuOjpRU2NyZWVuKFFQbGF0Zm9ybVNjcmVlbiAqc2NyZWVuKQorICAgICBkLT5zZXRQbGF0 Zm9ybVNjcmVlbihzY3JlZW4pOworIH0KKyAKKyt2b2lkIFFTY3JlZW5Qcml2YXRlOjp1cGRhdGVM b2dpY2FsRHBpKCkKKyt7CisrICAgIGxvZ2ljYWxEcGkgPSBRUGxhdGZvcm1TY3JlZW46Om92ZXJy aWRlRHBpKHBsYXRmb3JtU2NyZWVuLT5sb2dpY2FsRHBpKCkpOworKyAgICB1cGRhdGVHZW9tZXRy aWVzV2l0aFNpZ25hbHMoKTsgLy8gdXBkYXRlcyBnZW9tZXRyaWVzIGJhc2VkIG9uIHNjYWxlIGZh Y3RvcgorK30KKysKKyB2b2lkIFFTY3JlZW5Qcml2YXRlOjp1cGRhdGVHZW9tZXRyaWVzV2l0aFNp Z25hbHMoKQorIHsKKyAgICAgY29uc3QgUVJlY3Qgb2xkR2VvbWV0cnkgPSBnZW9tZXRyeTsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmggYi9xdGJhc2Uvc3Jj L2d1aS9rZXJuZWwvcXNjcmVlbl9wLmgKK2luZGV4IDdkYTU0MmMyNWUuLmU1MGZjMzE5MGIgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmgKKysrKyBiL3F0YmFz ZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaAorQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgor ICAgICAgICAgZ2VvbWV0cnkgPSBwbGF0Zm9ybVNjcmVlbi0+ZGV2aWNlSW5kZXBlbmRlbnRHZW9t ZXRyeSgpOworICAgICAgICAgYXZhaWxhYmxlR2VvbWV0cnkgPSBRSGlnaERwaTo6ZnJvbU5hdGl2 ZShwbGF0Zm9ybVNjcmVlbi0+YXZhaWxhYmxlR2VvbWV0cnkoKSwgUUhpZ2hEcGlTY2FsaW5nOjpm YWN0b3IocGxhdGZvcm1TY3JlZW4pLCBnZW9tZXRyeS50b3BMZWZ0KCkpOworICAgICB9CisrICAg IHZvaWQgdXBkYXRlTG9naWNhbERwaSgpOworIAorICAgICB2b2lkIHVwZGF0ZVByaW1hcnlPcmll bnRhdGlvbigpOworICAgICB2b2lkIHVwZGF0ZUdlb21ldHJpZXNXaXRoU2lnbmFscygpOworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmggYi9x dGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oCitpbmRleCAwODBkYTk4 ZWM0Li42OTk3ZDYyYjNjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJs ZW5kZnVuY3Rpb25zX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJsZW5kZnVu Y3Rpb25zX3AuaAorQEAgLTI0NiwyNSArMjQ2LDMyIEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdl X3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBkdWR4LCBpbnQgZHZkeCwgaW50IGR1ZHksIGludCBkdmR5 LCBpbnQgdTAsIGludCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxl bmRlciBibGVuZGVyKQorIHsKKy0gICAgaW50IGZyb21ZID0gcU1heChxUm91bmQodG9wWSksIGNs aXAudG9wKCkpOworLSAgICBpbnQgdG9ZID0gcU1pbihxUm91bmQoYm90dG9tWSksIGNsaXAudG9w KCkgKyBjbGlwLmhlaWdodCgpKTsKKysgICAgcWludDY0IGZyb21ZID0gcU1heChxUm91bmQodG9w WSksIGNsaXAudG9wKCkpOworKyAgICBxaW50NjQgdG9ZID0gcU1pbihxUm91bmQoYm90dG9tWSks IGNsaXAudG9wKCkgKyBjbGlwLmhlaWdodCgpKTsKKyAgICAgaWYgKGZyb21ZID49IHRvWSkKKyAg ICAgICAgIHJldHVybjsKKyAKKyAgICAgcXJlYWwgbGVmdFNsb3BlID0gKGJvdHRvbUxlZnQueCAt IHRvcExlZnQueCkgLyAoYm90dG9tTGVmdC55IC0gdG9wTGVmdC55KTsKKyAgICAgcXJlYWwgcmln aHRTbG9wZSA9IChib3R0b21SaWdodC54IC0gdG9wUmlnaHQueCkgLyAoYm90dG9tUmlnaHQueSAt IHRvcFJpZ2h0LnkpOworLSAgICBpbnQgZHhfbCA9IGludChsZWZ0U2xvcGUgKiAweDEwMDAwKTsK Ky0gICAgaW50IGR4X3IgPSBpbnQocmlnaHRTbG9wZSAqIDB4MTAwMDApOworLSAgICBpbnQgeF9s ID0gaW50KCh0b3BMZWZ0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wTGVmdC55KSAqIGxl ZnRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7CistICAgIGludCB4X3IgPSBpbnQoKHRv cFJpZ2h0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wUmlnaHQueSkgKiByaWdodFNsb3Bl ICsgcXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKy0KKy0gICAgaW50IGZyb21YLCB0b1gsIHgxLCB4 MiwgdSwgdiwgaSwgaWk7CisrICAgIHFpbnQ2NCBkeF9sID0gcWludDY0KGxlZnRTbG9wZSAqIDB4 MTAwMDApOworKyAgICBxaW50NjQgZHhfciA9IHFpbnQ2NChyaWdodFNsb3BlICogMHgxMDAwMCk7 CisrICAgIHFpbnQ2NCB4X2wgPSBxaW50NjQoKHRvcExlZnQueCArIChxcmVhbCgwLjUpICsgZnJv bVkgLSB0b3BMZWZ0LnkpICogbGVmdFNsb3BlICsgcXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKysg ICAgcWludDY0IHhfciA9IHFpbnQ2NCgodG9wUmlnaHQueCArIChxcmVhbCgwLjUpICsgZnJvbVkg LSB0b3BSaWdodC55KSAqIHJpZ2h0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAwMDApOworKwor KyAgICBxaW50NjQgc291cmNlUmVjdFRvcCA9IHFpbnQ2NChzb3VyY2VSZWN0LnRvcCgpKTsKKysg ICAgcWludDY0IHNvdXJjZVJlY3RMZWZ0ID0gcWludDY0KHNvdXJjZVJlY3QubGVmdCgpKTsKKysg ICAgcWludDY0IHNvdXJjZVJlY3RXaWR0aCA9IHFpbnQ2NChzb3VyY2VSZWN0LndpZHRoKCkpOwor KyAgICBxaW50NjQgc291cmNlUmVjdEhlaWdodCA9IHFpbnQ2NChzb3VyY2VSZWN0LmhlaWdodCgp KTsKKysgICAgcWludDY0IGNsaXBMZWZ0ID0gcWludDY0KGNsaXAubGVmdCgpKTsKKysgICAgcWlu dDY0IGNsaXBXaWR0aCA9IHFpbnQ2NChjbGlwLndpZHRoKCkpOworKworKyAgICBxaW50NjQgZnJv bVgsIHRvWCwgeDEsIHgyLCB1LCB2LCBpLCBpaTsKKyAgICAgRGVzdFQgKmxpbmU7CistICAgIGZv ciAoaW50IHkgPSBmcm9tWTsgeSA8IHRvWTsgKyt5KSB7CisrICAgIGZvciAocWludDY0IHkgPSBm cm9tWTsgeSA8IHRvWTsgKyt5KSB7CisgICAgICAgICBsaW5lID0gcmVpbnRlcnByZXRfY2FzdDxE ZXN0VCAqPihyZWludGVycHJldF9jYXN0PHVjaGFyICo+KGRlc3RQaXhlbHMpICsgeSAqIGRicGwp OworIAorLSAgICAgICAgZnJvbVggPSBxTWF4KHhfbCA+PiAxNiwgY2xpcC5sZWZ0KCkpOworLSAg ICAgICAgdG9YID0gcU1pbih4X3IgPj4gMTYsIGNsaXAubGVmdCgpICsgY2xpcC53aWR0aCgpKTsK KysgICAgICAgIGZyb21YID0gcU1heCh4X2wgPj4gMTYsIGNsaXBMZWZ0KTsKKysgICAgICAgIHRv WCA9IHFNaW4oeF9yID4+IDE2LCBjbGlwTGVmdCArIGNsaXBXaWR0aCk7CisgICAgICAgICBpZiAo ZnJvbVggPCB0b1gpIHsKKyAgICAgICAgICAgICAvLyBCZWNhdXNlIG9mIHJvdW5kaW5nLCB3ZSBj YW4gZ2V0IHNvdXJjZSBjb29yZGluYXRlcyBvdXRzaWRlIHRoZSBzb3VyY2UgaW1hZ2UuCisgICAg ICAgICAgICAgLy8gQ2xhbXAgdGhlc2UgY29vcmRpbmF0ZXMgdG8gdGhlIHNvdXJjZSByZWN0IHRv IGF2b2lkIHNlZ21lbnRhdGlvbiBmYXVsdCBhbmQKK0BAIC0yNzUsMTAgKzI4MiwxMCBAQCB2b2lk IHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBs LAorICAgICAgICAgICAgIHUgPSB4MSAqIGR1ZHggKyB5ICogZHVkeSArIHUwOworICAgICAgICAg ICAgIHYgPSB4MSAqIGR2ZHggKyB5ICogZHZkeSArIHYwOworICAgICAgICAgICAgIGZvciAoOyB4 MSA8IHRvWDsgKyt4MSkgeworLSAgICAgICAgICAgICAgICBpbnQgdXUgPSB1ID4+IDE2OworLSAg ICAgICAgICAgICAgICBpbnQgdnYgPSB2ID4+IDE2OworLSAgICAgICAgICAgICAgICBpZiAodXUg Pj0gc291cmNlUmVjdC5sZWZ0KCkgJiYgdXUgPCBzb3VyY2VSZWN0LmxlZnQoKSArIHNvdXJjZVJl Y3Qud2lkdGgoKQorLSAgICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVjdC50b3Ao KSAmJiB2diA8IHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgpKSB7CisrICAg ICAgICAgICAgICAgIHFpbnQ2NCB1dSA9IHUgPj4gMTY7CisrICAgICAgICAgICAgICAgIHFpbnQ2 NCB2diA9IHYgPj4gMTY7CisrICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0TGVm dCAmJiB1dSA8IHNvdXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoCisrICAgICAgICAgICAg ICAgICAgICAmJiB2diA+PSBzb3VyY2VSZWN0VG9wICYmIHZ2IDwgc291cmNlUmVjdFRvcCArIHNv dXJjZVJlY3RIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgIHUgKz0gZHVkeDsKK0BAIC0yOTAsMTAgKzI5Nywx MCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMs IGludCBkYnBsLAorICAgICAgICAgICAgIHUgPSAoeDIgLSAxKSAqIGR1ZHggKyB5ICogZHVkeSAr IHUwOworICAgICAgICAgICAgIHYgPSAoeDIgLSAxKSAqIGR2ZHggKyB5ICogZHZkeSArIHYwOwor ICAgICAgICAgICAgIGZvciAoOyB4MiA+IHgxOyAtLXgyKSB7CistICAgICAgICAgICAgICAgIGlu dCB1dSA9IHUgPj4gMTY7CistICAgICAgICAgICAgICAgIGludCB2diA9IHYgPj4gMTY7CistICAg ICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0LmxlZnQoKSAmJiB1dSA8IHNvdXJjZVJl Y3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgpCistICAgICAgICAgICAgICAgICAgICAmJiB2 diA+PSBzb3VyY2VSZWN0LnRvcCgpICYmIHZ2IDwgc291cmNlUmVjdC50b3AoKSArIHNvdXJjZVJl Y3QuaGVpZ2h0KCkpIHsKKysgICAgICAgICAgICAgICAgcWludDY0IHV1ID0gdSA+PiAxNjsKKysg ICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gdiA+PiAxNjsKKysgICAgICAgICAgICAgICAgaWYg KHV1ID49IHNvdXJjZVJlY3RMZWZ0ICYmIHV1IDwgc291cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0 V2lkdGgKKysgICAgICAgICAgICAgICAgICAgICYmIHZ2ID49IHNvdXJjZVJlY3RUb3AgJiYgdnYg PCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCkgeworICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgdSAtPSBkdWR4 OworQEAgLTMwOCw4ICszMTUsOCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUo RGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgIC8vIEJlZ2lubmluZyBv ZiB0aGUgc2NhbiBsaW5lLCB3aXRoIHBlci1waXhlbCBjaGVja3MuCisgICAgICAgICAgICAgaSA9 IHgxIC0gZnJvbVg7CisgICAgICAgICAgICAgd2hpbGUgKGkpIHsKKy0gICAgICAgICAgICAgICAg aW50IHV1ID0gcUJvdW5kKHNvdXJjZVJlY3QubGVmdCgpLCB1ID4+IDE2LCBzb3VyY2VSZWN0Lmxl ZnQoKSArIHNvdXJjZVJlY3Qud2lkdGgoKSAtIDEpOworLSAgICAgICAgICAgICAgICBpbnQgdnYg PSBxQm91bmQoc291cmNlUmVjdC50b3AoKSwgdiA+PiAxNiwgc291cmNlUmVjdC50b3AoKSArIHNv dXJjZVJlY3QuaGVpZ2h0KCkgLSAxKTsKKysgICAgICAgICAgICAgICAgcWludDY0IHV1ID0gcUJv dW5kKHNvdXJjZVJlY3RMZWZ0LCB1ID4+IDE2LCBzb3VyY2VSZWN0TGVmdCArIHNvdXJjZVJlY3RX aWR0aCAtIDEpOworKyAgICAgICAgICAgICAgICBxaW50NjQgdnYgPSBxQm91bmQoc291cmNlUmVj dFRvcCwgdiA+PiAxNiwgc291cmNlUmVjdFRvcCArIHNvdXJjZVJlY3RIZWlnaHQgLSAxKTsKKyAg ICAgICAgICAgICAgICAgYmxlbmRlci53cml0ZShsaW5lLCByZWludGVycHJldF9jYXN0PGNvbnN0 IFNyY1QgKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1Y2hhciAqPihzcmNQaXhlbHMpICsgdnYg KiBzYnBsKVt1dV0pOworICAgICAgICAgICAgICAgICB1ICs9IGR1ZHg7CisgICAgICAgICAgICAg ICAgIHYgKz0gZHZkeDsKK0BAIC0zNDgsOCArMzU1LDggQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1h Z2VfcmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICAv LyBFbmQgb2YgdGhlIHNjYW4gbGluZSwgd2l0aCBwZXItcGl4ZWwgY2hlY2tzLgorICAgICAgICAg ICAgIGkgPSB0b1ggLSB4MjsKKyAgICAgICAgICAgICB3aGlsZSAoaSkgeworLSAgICAgICAgICAg ICAgICBpbnQgdXUgPSBxQm91bmQoc291cmNlUmVjdC5sZWZ0KCksIHUgPj4gMTYsIHNvdXJjZVJl Y3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgpIC0gMSk7CistICAgICAgICAgICAgICAgIGlu dCB2diA9IHFCb3VuZChzb3VyY2VSZWN0LnRvcCgpLCB2ID4+IDE2LCBzb3VyY2VSZWN0LnRvcCgp ICsgc291cmNlUmVjdC5oZWlnaHQoKSAtIDEpOworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUg PSBxQm91bmQoc291cmNlUmVjdExlZnQsIHUgPj4gMTYsIHNvdXJjZVJlY3RMZWZ0ICsgc291cmNl UmVjdFdpZHRoIC0gMSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9IHFCb3VuZChzb3Vy Y2VSZWN0VG9wLCB2ID4+IDE2LCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCAtIDEp OworICAgICAgICAgICAgICAgICBibGVuZGVyLndyaXRlKGxpbmUsIHJlaW50ZXJwcmV0X2Nhc3Q8 Y29uc3QgU3JjVCAqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVjaGFyICo+KHNyY1BpeGVscykg KyB2diAqIHNicGwpW3V1XSk7CisgICAgICAgICAgICAgICAgIHUgKz0gZHVkeDsKKyAgICAgICAg ICAgICAgICAgdiArPSBkdmR4OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5n L3Fjb2xvcnRyY2x1dF9wLmggYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29sb3J0cmNsdXRf cC5oCitpbmRleCA3NmE2YTYwODAzLi4yNGZkNTIyZTZjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFp bnRpbmcvcWNvbG9ydHJjbHV0X3AuaAorQEAgLTExOCw2ICsxMTgsNyBAQCBwdWJsaWM6CisgICAg ICAgICByZXR1cm4gUVJnYmE2NDo6ZnJvbVJnYmE2NChyLCBnLCBiLCBxQWxwaGEocmdiMzIpICog MjU3KTsKKyAjZW5kaWYKKyAgICAgfQorKyAgICBRUmdiYTY0IHRvTGluZWFyNjQoUVJnYmE2NCkg Y29uc3QgPSBkZWxldGU7CisgCisgICAgIFFSZ2IgdG9MaW5lYXIoUVJnYiByZ2IzMikgY29uc3QK KyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FkcmF3aGVscGVy LmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FkcmF3aGVscGVyLmNwcAoraW5kZXggYTYx NzkzNTA4YS4uNWJhMmQyNzdiNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5n L3FkcmF3aGVscGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxw ZXIuY3BwCitAQCAtNjA5MSw3ICs2MDkxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFscGhhcmdi YmxlbmRfYXJnYjMyKHF1aW50MzIgKmRzdCwgdWludCBjb3ZlcmFnZSwgY29uc3QgUVJnYmEKKyBz dGF0aWMgaW5saW5lIHZvaWQgcmdiQmxlbmRQaXhlbChRUmdiYTY0ICZkc3QsIGludCBjb3ZlcmFn ZSwgUVJnYmE2NCBzbGluZWFyLCBjb25zdCBRQ29sb3JUcmNMdXQgKmNvbG9yUHJvZmlsZSkKKyB7 CisgICAgIC8vIERvIGEgZ2FtbWFjb3JyZWN0ZWQgUkdCIGFscGhhYmxlbmQuLi4KKy0gICAgY29u c3QgUVJnYmE2NCBkbGluZWFyID0gY29sb3JQcm9maWxlID8gY29sb3JQcm9maWxlLT50b0xpbmVh cjY0KGRzdCkgOiBkc3Q7CisrICAgIGNvbnN0IFFSZ2JhNjQgZGxpbmVhciA9IGNvbG9yUHJvZmls ZSA/IGNvbG9yUHJvZmlsZS0+dG9MaW5lYXIoZHN0KSA6IGRzdDsKKyAKKyAgICAgUVJnYmE2NCBi bGVuZCA9IHJnYkJsZW5kKGRsaW5lYXIsIHNsaW5lYXIsIGNvdmVyYWdlKTsKKyAKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyLmNwcCBiL3F0 YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwCitpbmRleCAyODM5 MjNkZTUyLi5mMDhlYjljYmVlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fw YWludGVuZ2luZV9yYXN0ZXIuY3BwCitAQCAtNTYwLDMxICs1NjAsNiBAQCB2b2lkIFFSYXN0ZXJQ YWludEVuZ2luZTo6dXBkYXRlTWF0cml4KGNvbnN0IFFUcmFuc2Zvcm0gJm1hdHJpeCkKKyAgICAg UVJhc3RlclBhaW50RW5naW5lU3RhdGUgKnMgPSBzdGF0ZSgpOworICAgICAvLyBGQUxDT046IGdl dCByaWQgb2YgdGhpcyBsaW5lLCBzZWUgZHJhd0ltYWdlIGNhbGwgYmVsb3cuCisgICAgIHMtPm1h dHJpeCA9IG1hdHJpeDsKKy0gICAgUVRyYW5zZm9ybTo6VHJhbnNmb3JtYXRpb25UeXBlIHR4b3Ag PSBzLT5tYXRyaXgudHlwZSgpOworLQorLSAgICBzd2l0Y2ggKHR4b3ApIHsKKy0KKy0gICAgY2Fz ZSBRVHJhbnNmb3JtOjpUeE5vbmU6CistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSB0cnVl OworLSAgICAgICAgYnJlYWs7CistCistICAgIGNhc2UgUVRyYW5zZm9ybTo6VHhUcmFuc2xhdGU6 CistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSBxcmVhbChpbnQocy0+bWF0cml4LmR4KCkp KSA9PSBzLT5tYXRyaXguZHgoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBxcmVh bChpbnQocy0+bWF0cml4LmR5KCkpKSA9PSBzLT5tYXRyaXguZHkoKTsKKy0gICAgICAgIGJyZWFr OworLQorLSAgICBjYXNlIFFUcmFuc2Zvcm06OlR4U2NhbGU6CistICAgICAgICBzLT5mbGFncy5p bnRfeGZvcm0gPSBxcmVhbChpbnQocy0+bWF0cml4LmR4KCkpKSA9PSBzLT5tYXRyaXguZHgoKQor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBxcmVhbChpbnQocy0+bWF0cml4LmR5KCkp KSA9PSBzLT5tYXRyaXguZHkoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBxcmVh bChpbnQocy0+bWF0cml4Lm0xMSgpKSkgPT0gcy0+bWF0cml4Lm0xMSgpCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRyaXgubTIyKCkpKSA9PSBzLT5tYXRy aXgubTIyKCk7CistICAgICAgICBicmVhazsKKy0KKy0gICAgZGVmYXVsdDogLy8gc2hlYXIgLyBw ZXJzcGVjdGl2ZS4uLgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hmb3JtID0gZmFsc2U7CistICAg ICAgICBicmVhazsKKy0gICAgfQorLQorICAgICBzLT5mbGFncy50eF9ub3NoZWFyID0gcXRfc2Nh bGVGb3JUcmFuc2Zvcm0ocy0+bWF0cml4LCAmcy0+dHhzY2FsZSk7CisgCisgICAgIGVuc3VyZU91 dGxpbmVNYXBwZXIoKTsKK0BAIC02MTcsNyArNTkyLDYgQEAgUVJhc3RlclBhaW50RW5naW5lU3Rh dGU6OlFSYXN0ZXJQYWludEVuZ2luZVN0YXRlKCkKKyAgICAgZmxhZ3MuYmlsaW5lYXIgPSBmYWxz ZTsKKyAgICAgZmxhZ3MubGVnYWN5X3JvdW5kaW5nID0gZmFsc2U7CisgICAgIGZsYWdzLmZhc3Rf dGV4dCA9IHRydWU7CistICAgIGZsYWdzLmludF94Zm9ybSA9IHRydWU7CisgICAgIGZsYWdzLnR4 X25vc2hlYXIgPSB0cnVlOworICAgICBmbGFncy5mYXN0X2ltYWdlcyA9IHRydWU7CisgCitAQCAt MTc5Myw3ICsxNzY3LDcgQEAgdm9pZCBRUmFzdGVyUGFpbnRFbmdpbmU6OmZpbGwoY29uc3QgUVZl Y3RvclBhdGggJnBhdGgsIGNvbnN0IFFCcnVzaCAmYnJ1c2gpCisgICAgIFFSZWN0RiBjcFJlY3Qg PSBwYXRoLmNvbnRyb2xQb2ludFJlY3QoKTsKKyAgICAgY29uc3QgUVJlY3RGIHBhdGhEZXZpY2VS ZWN0ID0gcy0+bWF0cml4Lm1hcFJlY3QoY3BSZWN0KTsKKyAgICAgLy8gU2tpcCBwYXRocyB0aGF0 IGJ5IGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZXMgYXJlIGNvbXBsZXRlbHkgb3V0c2lkZSB0aGUgcGFp bnQgZGV2aWNlLgorLSAgICBpZiAoIXBhdGhEZXZpY2VSZWN0LmludGVyc2VjdHMoUVJlY3RGKGQt PmRldmljZVJlY3QpKSkKKysgICAgaWYgKCFwYXRoRGV2aWNlUmVjdC5pbnRlcnNlY3RzKFFSZWN0 RihkLT5kZXZpY2VSZWN0KSkgfHwgIXBhdGhEZXZpY2VSZWN0LmlzVmFsaWQoKSkKKyAgICAgICAg IHJldHVybjsKKyAKKyAgICAgUHJvY2Vzc1NwYW5zIGJsZW5kID0gZC0+Z2V0QnJ1c2hGdW5jKHBh dGhEZXZpY2VSZWN0LCAmcy0+YnJ1c2hEYXRhKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50 aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oCitpbmRleCAwODlhYWRjM2Y3Li5iZjczNjNkNWFh IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rl cl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJf cC5oCitAQCAtMTExLDcgKzExMSw2IEBAIHB1YmxpYzoKKyAgICAgICAgIHVpbnQgYmlsaW5lYXIg OiAxOworICAgICAgICAgdWludCBsZWdhY3lfcm91bmRpbmcgOiAxOworICAgICAgICAgdWludCBm YXN0X3RleHQgOiAxOworLSAgICAgICAgdWludCBpbnRfeGZvcm0gOiAxOworICAgICAgICAgdWlu dCB0eF9ub3NoZWFyIDogMTsKKyAgICAgICAgIHVpbnQgZmFzdF9pbWFnZXMgOiAxOworICAgICB9 OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAg Yi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3BwCitpbmRleCBmOTU0NGEz MjQxLi5kODBmYWZlYWYxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBh aW50ZXJwYXRoLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJwYXRo LmNwcAorQEAgLTEyNTMsNyArMTI1Myw3IEBAIHZvaWQgUVBhaW50ZXJQYXRoOjphZGRUZXh0KGNv bnN0IFFQb2ludEYgJnBvaW50LCBjb25zdCBRRm9udCAmZiwgY29uc3QgUVN0cmluZyAmCisgCisg ICAgICAgICBpZiAoc2kuYW5hbHlzaXMuZmxhZ3MgPCBRU2NyaXB0QW5hbHlzaXM6OlRhYk9yT2Jq ZWN0KSB7CisgICAgICAgICAgICAgUUdseXBoTGF5b3V0IGdseXBocyA9IGVuZy0+c2hhcGVkR2x5 cGhzKCZzaSk7CistICAgICAgICAgICAgUUZvbnRFbmdpbmUgKmZlID0gZi5kLT5lbmdpbmVGb3JT Y3JpcHQoc2kuYW5hbHlzaXMuc2NyaXB0KTsKKysgICAgICAgICAgICBRRm9udEVuZ2luZSAqZmUg PSBlbmctPmZvbnRFbmdpbmUoc2kpOworICAgICAgICAgICAgIFFfQVNTRVJUKGZlKTsKKyAgICAg ICAgICAgICBmZS0+YWRkT3V0bGluZVRvUGF0aCh4LCB5LCBnbHlwaHMsIHRoaXMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2kuYW5hbHlzaXMuYmlkaUxldmVsICUgMgorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYXRoY2xpcHBlcl9wLmggYi9xdGJh c2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJfcC5oCitpbmRleCA5NDQ0YTg3YjcxLi4x OGY2NGM1ZThjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlw cGVyX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlwcGVyX3AuaAor QEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CisgICAgIGludCB2ZXJ0ZXgoRGlyZWN0aW9uIGRp cmVjdGlvbikgY29uc3Q7CisgCisgcHJpdmF0ZToKKy0gICAgaW50IG1fbmV4dFsyXVsyXTsKKysg ICAgaW50IG1fbmV4dFsyXVsyXSA9IHsgeyAtMSwgLTEgfSwgeyAtMSwgLTEgfSB9OworIH07Cisg CisgY2xhc3MgUVBhdGhTZWdtZW50cworQEAgLTI5NiwxMCArMjk2LDYgQEAgaW5saW5lIFFQYXRo RWRnZTo6UVBhdGhFZGdlKGludCBhLCBpbnQgYikKKyAgICAgLCBhbmdsZSgwKQorICAgICAsIGlu dkFuZ2xlKDApCisgeworLSAgICBtX25leHRbMF1bMF0gPSAtMTsKKy0gICAgbV9uZXh0WzFdWzBd ID0gLTE7CistICAgIG1fbmV4dFswXVswXSA9IC0xOworLSAgICBtX25leHRbMV1bMF0gPSAtMTsK KyB9CisgCisgaW5saW5lIGludCBRUGF0aEVkZ2U6Om5leHQoVHJhdmVyc2FsIHRyYXZlcnNhbCwg RGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9w YWludGluZy9xcGRmLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYuY3BwCitpbmRl eCAzMDY2NzQ0ZjFiLi4yYzhkM2MzYjUzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFp bnRpbmcvcXBkZi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYuY3BwCitA QCAtMjc2MCw2ICsyNzYwLDggQEAgaW50IFFQZGZFbmdpbmVQcml2YXRlOjphZGRCcnVzaFBhdHRl cm4oY29uc3QgUVRyYW5zZm9ybSAmbSwgYm9vbCAqc3BlY2lmeUNvbG9yLAorICAgICAgICAgcmV0 dXJuIGdyYWRpZW50QnJ1c2goYnJ1c2gsIG1hdHJpeCwgZ1N0YXRlT2JqZWN0KTsKKyAgICAgfQor IAorKyAgICBtYXRyaXggPSBicnVzaC50cmFuc2Zvcm0oKSAqIG1hdHJpeDsKKysKKyAgICAgaWYg KCghYnJ1c2guaXNPcGFxdWUoKSAmJiBicnVzaC5zdHlsZSgpIDwgUXQ6OkxpbmVhckdyYWRpZW50 UGF0dGVybikgfHwgb3BhY2l0eSAhPSAxLjApCisgICAgICAgICAqZ1N0YXRlT2JqZWN0ID0gYWRk Q29uc3RhbnRBbHBoYU9iamVjdChxUm91bmQoYnJ1c2guY29sb3IoKS5hbHBoYSgpICogb3BhY2l0 eSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxUm91 bmQocGVuLmNvbG9yKCkuYWxwaGEoKSAqIG9wYWNpdHkpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x c3Ryb2tlci5jcHAKK2luZGV4IGNiNWQzOTVlODAuLjNiNjM1N2E4OTMgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FzdHJva2VyLmNwcAorQEAgLTExODIsNiArMTE4Miw3IEBAIHZvaWQgUURhc2hT dHJva2VyOjpwcm9jZXNzQ3VycmVudFN1YnBhdGgoKQorICAgICAgICAgLy8gQ2hlY2sgaWYgdGhl IGVudGlyZSBsaW5lIHNob3VsZCBiZSBjbGlwcGVkIGF3YXkgb3Igc2ltcGxpZmllZAorICAgICAg ICAgYm9vbCBjbGlwSXQgPSBjbGlwcGluZyAmJiAhbGluZUludGVyc2VjdHNSZWN0KHByZXYsIGUs IGNsaXBfdGwsIGNsaXBfYnIpOworICAgICAgICAgYm9vbCBza2lwRGFzaGluZyA9IGVsZW4gKiBp bnZTdW1MZW5ndGggPiByZXBldGl0aW9uTGltaXQoKTsKKysgICAgICAgIGludCBtYXhEYXNoZXMg PSBkYXNoQ291bnQ7CisgICAgICAgICBpZiAoc2tpcERhc2hpbmcgfHwgY2xpcEl0KSB7CisgICAg ICAgICAgICAgLy8gQ3V0IGF3YXkgZnVsbCBkYXNoIHNlcXVlbmNlcy4KKyAgICAgICAgICAgICBl bGVuIC09IHN0ZDo6Zmxvb3IoZWxlbiAqIGludlN1bUxlbmd0aCkgKiBzdW1MZW5ndGg7CitAQCAt MTE5Niw3ICsxMTk3LDcgQEAgdm9pZCBRRGFzaFN0cm9rZXI6OnByb2Nlc3NDdXJyZW50U3VicGF0 aCgpCisgICAgICAgICAgICAgICAgICAgICBwb3MgPSBlc3RvcDsgLy8gbW92ZSBwb3MgdG8gbmV4 dCBwYXRoIGVsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAg ICAgICAgICAgICB9IGVsc2UgeyAvLyBEYXNoIGlzIG9uIHRoaXMgbGluZQorLSAgICAgICAgICAg ICAgICAgICAgcG9zID0gZHBvcyArIGVzdGFydDsKKysgICAgICAgICAgICAgICAgICAgIHBvcyA9 IC0tbWF4RGFzaGVzID4gMCA/IGRwb3MgKyBlc3RhcnQgOiBlc3RvcDsKKyAgICAgICAgICAgICAg ICAgICAgIGRvbmUgPSBwb3MgPj0gZXN0b3A7CisgICAgICAgICAgICAgICAgICAgICBpZiAoKytp ZGFzaCA+PSBkYXNoQ291bnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgaWRhc2ggPSAwOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24g Yi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29uCitpbmRleCA3YjE2 ZThjMjExLi4wZTg3ZDMwYWEyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cXRfYXR0cmlidXRpb24uanNvbgorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXRfYXR0 cmlidXRpb24uanNvbgorQEAgLTEwLDcgKzEwLDcgQEAKKyAgICAgICAgICJIb21lcGFnZSI6ICJo dHRwOi8vd3d3LmZyZWV0eXBlLm9yZyIsCisgICAgICAgICAiTGljZW5zZSI6ICJGcmVldHlwZSBQ cm9qZWN0IExpY2Vuc2Ugb3IgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdjIuMCBvbmx5IiwK KyAgICAgICAgICJMaWNlbnNlSWQiOiAiRlRMIG9yIEdQTC0yLjAiLAorLSAgICAgICAgIkxpY2Vu c2VGaWxlIjogIi4uLy4uLzNyZHBhcnR5L2ZyZWV0eXBlL2RvY3MvTElDRU5TRS5UWFQiLAorKyAg ICAgICAgIkxpY2Vuc2VGaWxlIjogIi4uLy4uLzNyZHBhcnR5L2ZyZWV0eXBlL0xJQ0VOU0UuVFhU IiwKKyAgICAgICAgICJDb3B5cmlnaHQiOiAiQ29weXJpZ2h0IDIwMDAtMjAxNiBieSBEYXZpZCBU dXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuIgorICAgICB9LAorICAg ICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9wLmggYi9xdGJh c2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaAoraW5kZXggZWM5ZDI1OTcxZi4uNGE1YTdhNmQ1 MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyX3BfcC5oCisrKysgYi9x dGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaAorQEAgLTY4LDEzICs2OCwxMyBAQCBzdHJ1 Y3QgUV9HVUlfRVhQT1JUIFFTaGFkZXJQcml2YXRlCisgICAgIHsKKyAgICAgfQorIAorLSAgICBR U2hhZGVyUHJpdmF0ZShjb25zdCBRU2hhZGVyUHJpdmF0ZSAqb3RoZXIpCisrICAgIFFTaGFkZXJQ cml2YXRlKGNvbnN0IFFTaGFkZXJQcml2YXRlICZvdGhlcikKKyAgICAgICAgIDogcmVmKDEpLAor LSAgICAgICAgICBxc2JWZXJzaW9uKG90aGVyLT5xc2JWZXJzaW9uKSwKKy0gICAgICAgICAgc3Rh Z2Uob3RoZXItPnN0YWdlKSwKKy0gICAgICAgICAgZGVzYyhvdGhlci0+ZGVzYyksCistICAgICAg ICAgIHNoYWRlcnMob3RoZXItPnNoYWRlcnMpLAorLSAgICAgICAgICBiaW5kaW5ncyhvdGhlci0+ YmluZGluZ3MpCisrICAgICAgICAgIHFzYlZlcnNpb24ob3RoZXIucXNiVmVyc2lvbiksCisrICAg ICAgICAgIHN0YWdlKG90aGVyLnN0YWdlKSwKKysgICAgICAgICAgZGVzYyhvdGhlci5kZXNjKSwK KysgICAgICAgICAgc2hhZGVycyhvdGhlci5zaGFkZXJzKSwKKysgICAgICAgICAgYmluZGluZ3Mo b3RoZXIuYmluZGluZ3MpCisgICAgIHsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvZ3VpL3JoaS9xc2hhZGVyZGVzY3JpcHRpb25fcF9wLmggYi9xdGJhc2Uvc3JjL2d1aS9yaGkv cXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCitpbmRleCBlYzJiMGI2YjRjLi4zZGEzM2E4YTJiIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9wX3AuaAor KysrIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9wX3AuaAorQEAgLTYz LDE2ICs2MywxNiBAQCBzdHJ1Y3QgUV9HVUlfRVhQT1JUIFFTaGFkZXJEZXNjcmlwdGlvblByaXZh dGUKKyAgICAgICAgIGxvY2FsU2l6ZVswXSA9IGxvY2FsU2l6ZVsxXSA9IGxvY2FsU2l6ZVsyXSA9 IDA7CisgICAgIH0KKyAKKy0gICAgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZShjb25zdCBRU2hh ZGVyRGVzY3JpcHRpb25Qcml2YXRlICpvdGhlcikKKysgICAgUVNoYWRlckRlc2NyaXB0aW9uUHJp dmF0ZShjb25zdCBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlICZvdGhlcikKKyAgICAgICAgIDog cmVmKDEpLAorLSAgICAgICAgICBpblZhcnMob3RoZXItPmluVmFycyksCistICAgICAgICAgIG91 dFZhcnMob3RoZXItPm91dFZhcnMpLAorLSAgICAgICAgICB1bmlmb3JtQmxvY2tzKG90aGVyLT51 bmlmb3JtQmxvY2tzKSwKKy0gICAgICAgICAgcHVzaENvbnN0YW50QmxvY2tzKG90aGVyLT5wdXNo Q29uc3RhbnRCbG9ja3MpLAorLSAgICAgICAgICBzdG9yYWdlQmxvY2tzKG90aGVyLT5zdG9yYWdl QmxvY2tzKSwKKy0gICAgICAgICAgY29tYmluZWRJbWFnZVNhbXBsZXJzKG90aGVyLT5jb21iaW5l ZEltYWdlU2FtcGxlcnMpLAorLSAgICAgICAgICBzdG9yYWdlSW1hZ2VzKG90aGVyLT5zdG9yYWdl SW1hZ2VzKSwKKy0gICAgICAgICAgbG9jYWxTaXplKG90aGVyLT5sb2NhbFNpemUpCisrICAgICAg ICAgIGluVmFycyhvdGhlci5pblZhcnMpLAorKyAgICAgICAgICBvdXRWYXJzKG90aGVyLm91dFZh cnMpLAorKyAgICAgICAgICB1bmlmb3JtQmxvY2tzKG90aGVyLnVuaWZvcm1CbG9ja3MpLAorKyAg ICAgICAgICBwdXNoQ29uc3RhbnRCbG9ja3Mob3RoZXIucHVzaENvbnN0YW50QmxvY2tzKSwKKysg ICAgICAgICAgc3RvcmFnZUJsb2NrcyhvdGhlci5zdG9yYWdlQmxvY2tzKSwKKysgICAgICAgICAg Y29tYmluZWRJbWFnZVNhbXBsZXJzKG90aGVyLmNvbWJpbmVkSW1hZ2VTYW1wbGVycyksCisrICAg ICAgICAgIHN0b3JhZ2VJbWFnZXMob3RoZXIuc3RvcmFnZUltYWdlcyksCisrICAgICAgICAgIGxv Y2FsU2l6ZShvdGhlci5sb2NhbFNpemUpCisgICAgIHsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS90 ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCitpbmRleCBhNjU3YThjNTE2Li40ZmMwMTAwOTU4IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcAorKysrIGIvcXRi YXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcAorQEAgLTk4Myw3ICs5ODMsNyBAQCBR Rm9udEVuZ2luZSAqbG9hZFNpbmdsZUVuZ2luZShpbnQgc2NyaXB0LAorICAgICAgICAgaWYgKHN0 eWxlLT5rZXkuc3RyZXRjaCAhPSAwICYmIHJlcXVlc3Quc3RyZXRjaCAhPSAwCisgICAgICAgICAg ICAgJiYgKHJlcXVlc3Quc3R5bGVOYW1lLmlzRW1wdHkoKSB8fCByZXF1ZXN0LnN0eWxlTmFtZSAh PSBzdHlsZS0+c3R5bGVOYW1lKSkgeworICAgICAgICAgICAgIGRlZi5zdHJldGNoID0gKHJlcXVl c3Quc3RyZXRjaCAqIDEwMCArIHN0eWxlLT5rZXkuc3RyZXRjaCAvIDIpIC8gc3R5bGUtPmtleS5z dHJldGNoOworLSAgICAgICAgfSBlbHNlIHsKKysgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdC5z dHJldGNoID09IFFGb250OjpBbnlTdHJldGNoKSB7CisgICAgICAgICAgICAgZGVmLnN0cmV0Y2gg PSAxMDA7CisgICAgICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9x dGV4dGRvY3VtZW50bGF5b3V0LmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRkb2N1bWVu dGxheW91dC5jcHAKK2luZGV4IGYzZTZlYTIxMDAuLjcyMjY3ZTkzODAgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwCisrKysgYi9xdGJhc2Uv c3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwCitAQCAtMjEyMyw3ICsyMTIzLDcg QEAgdm9pZCBRVGV4dERvY3VtZW50TGF5b3V0UHJpdmF0ZTo6ZHJhd0xpc3RJdGVtKGNvbnN0IFFQ b2ludEYgJm9mZnNldCwgUVBhaW50ZXIgKnAKKyB7CisgICAgIFFfUShjb25zdCBRVGV4dERvY3Vt ZW50TGF5b3V0KTsKKyAgICAgY29uc3QgUVRleHRCbG9ja0Zvcm1hdCBibG9ja0Zvcm1hdCA9IGJs LmJsb2NrRm9ybWF0KCk7CistICAgIGNvbnN0IFFUZXh0Q2hhckZvcm1hdCBjaGFyRm9ybWF0ID0g UVRleHRDdXJzb3IoYmwpLmNoYXJGb3JtYXQoKTsKKysgICAgY29uc3QgUVRleHRDaGFyRm9ybWF0 IGNoYXJGb3JtYXQgPSBibC5jaGFyRm9ybWF0KCk7CisgICAgIFFGb250IGZvbnQoY2hhckZvcm1h dC5mb250KCkpOworICAgICBpZiAocS0+cGFpbnREZXZpY2UoKSkKKyAgICAgICAgIGZvbnQgPSBR Rm9udChmb250LCBxLT5wYWludERldmljZSgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1 aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRlbmdpbmUu Y3BwCitpbmRleCBjZTRhYmFjNDcyLi5hNmM2NmU1ZDJkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRl eHRlbmdpbmUuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoq CistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmln aHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3 LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdEd1 aSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtMTU2NSw2ICsxNTY1LDEyIEBAIHZvaWQg UVRleHRFbmdpbmU6OnNoYXBlVGV4dChpbnQgaXRlbSkgY29uc3QKKyAgICAgICAgIC8vIE92ZXJ3 cml0ZSB3aXRoIDAgdG9rZW4gdG8gaW5kaWNhdGUgZmFpbHVyZQorICAgICAgICAgUUdseXBoTGF5 b3V0IGcgPSBhdmFpbGFibGVHbHlwaHMoJnNpKTsKKyAgICAgICAgIGcuZ2x5cGhzWzBdID0gMDsK KysgICAgICAgIGcuYXR0cmlidXRlc1swXS5jbHVzdGVyU3RhcnQgPSB0cnVlOworKworKyAgICAg ICAgdXNob3J0ICpsb2dfY2x1c3RlcnMgPSBsb2dDbHVzdGVycygmc2kpOworKyAgICAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBpdGVtTGVuZ3RoOyArK2kpCisrICAgICAgICAgICAgbG9nX2NsdXN0 ZXJzW2ldID0gMDsKKysKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZ3VpL3V0aWwvcWRlc2t0b3BzZXJ2aWNlcy5jcHAgYi9xdGJhc2Uvc3JjL2d1 aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCitpbmRleCBmYmI2M2E5NDA4Li40ZDVmYWZhYWE3 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcAor KysrIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcAorQEAgLTU0LDYg KzU0LDggQEAKKyAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWludGVncmF0aW9uLmg+CisgI2luY2x1 ZGUgPHFkaXIuaD4KKyAKKysjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcWxvY2tpbmdfcC5oPgor KworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFPcGVuVXJsSGFuZGxlclJlZ2lzdHJ5 IDogcHVibGljIFFPYmplY3QKK0BAIC04MSw2ICs4Myw3IEBAIFFfR0xPQkFMX1NUQVRJQyhRT3Bl blVybEhhbmRsZXJSZWdpc3RyeSwgaGFuZGxlclJlZ2lzdHJ5KQorIAorIHZvaWQgUU9wZW5VcmxI YW5kbGVyUmVnaXN0cnk6OmhhbmRsZXJEZXN0cm95ZWQoUU9iamVjdCAqaGFuZGxlcikKKyB7Cisr ICAgIGNvbnN0IGF1dG8gbG9jayA9IHF0X3Njb3BlZF9sb2NrKG11dGV4KTsKKyAgICAgSGFuZGxl ckhhc2g6Okl0ZXJhdG9yIGl0ID0gaGFuZGxlcnMuYmVnaW4oKTsKKyAgICAgd2hpbGUgKGl0ICE9 IGhhbmRsZXJzLmVuZCgpKSB7CisgICAgICAgICBpZiAoaXQtPnJlY2VpdmVyID09IGhhbmRsZXIp IHsKK0BAIC0yOTQsNyArMjk3LDggQEAgdm9pZCBRRGVza3RvcFNlcnZpY2VzOjpzZXRVcmxIYW5k bGVyKGNvbnN0IFFTdHJpbmcgJnNjaGVtZSwgUU9iamVjdCAqcmVjZWl2ZXIsIGMKKyAgICAgaC5u YW1lID0gbWV0aG9kOworICAgICByZWdpc3RyeS0+aGFuZGxlcnMuaW5zZXJ0KHNjaGVtZS50b0xv d2VyKCksIGgpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHJlY2VpdmVyLCBTSUdOQUwoZGVzdHJv eWVkKFFPYmplY3QqKSksCistICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIFNMT1QoaGFu ZGxlckRlc3Ryb3llZChRT2JqZWN0KikpKTsKKysgICAgICAgICAgICAgICAgICAgICByZWdpc3Ry eSwgU0xPVChoYW5kbGVyRGVzdHJveWVkKFFPYmplY3QqKSksCisrICAgICAgICAgICAgICAgICAg ICAgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworIH0KKyAKKyAvKiEKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcXBr bWhhbmRsZXIuY3BwCitpbmRleCBlMGMzYjc1ZWZlLi4zNDE0ZjlkOGJhIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3Vp L3V0aWwvcXBrbWhhbmRsZXIuY3BwCitAQCAtNTcsNyArNTcsNyBAQCBzdHJ1Y3QgUGttVHlwZQor ICAgICBxdWludDMyIGJ5dGVzUGVyQmxvY2s7CisgfTsKKyAKKy1zdGF0aWMgUGttVHlwZSB0eXBl TWFwWzVdID0geworK3N0YXRpYyBjb25zdGV4cHIgUGttVHlwZSB0eXBlTWFwWzVdID0geworICAg ICB7IDB4OEQ2NCwgIDggfSwgICAvLyBHTF9FVEMxX1JHQjhfT0VTCisgICAgIHsgMHg5Mjc0LCAg OCB9LCAgIC8vIEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyCisgICAgIHsgMCwgMCB9LCAgICAgICAg IC8vIHVudXNlZCAob2Jzb2xldGUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL2Fj Y2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vz cy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3BwCitpbmRleCBiNmJlOTMxNDdhLi42ZTY5YjRjNGQz IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5Zmls ZWltcGwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlm aWxlaW1wbC5jcHAKK0BAIC04OSw5ICs4OSwxMCBAQCBRTmV0d29ya1JlcGx5RmlsZUltcGw6OlFO ZXR3b3JrUmVwbHlGaWxlSW1wbChRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm1hbmFnZXIsIGNvbgor ICAgICAgICAgLy8gd2UgaGFuZGxlIG9ubHkgbG9jYWwgZmlsZXMKKyAgICAgICAgIFFTdHJpbmcg bXNnID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRTmV0d29ya0FjY2Vzc0ZpbGVCYWNr ZW5kIiwgIlJlcXVlc3QgZm9yIG9wZW5pbmcgbm9uLWxvY2FsIGZpbGUgJTEiKS5hcmcodXJsLnRv U3RyaW5nKCkpOworICAgICAgICAgc2V0RXJyb3IoUU5ldHdvcmtSZXBseTo6UHJvdG9jb2xJbnZh bGlkT3BlcmF0aW9uRXJyb3IsIG1zZyk7CisrICAgICAgICBzZXRGaW5pc2hlZCh0cnVlKTsgLy8g V2UncmUgZmluaXNoZWQsIHdpbGwgZW1pdCBmaW5pc2hlZCgpIGFmdGVyIGN0b3IgaXMgZG9uZS4K KyAgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgImVycm9yT2NjdXJyZWQi LCBRdDo6UXVldWVkQ29ubmVjdGlvbiwKKyAgICAgICAgICAgICBRX0FSRyhRTmV0d29ya1JlcGx5 OjpOZXR3b3JrRXJyb3IsIFFOZXR3b3JrUmVwbHk6OlByb3RvY29sSW52YWxpZE9wZXJhdGlvbkVy cm9yKSk7CistICAgICAgICBmaWxlT3BlbkZpbmlzaGVkKGZhbHNlKTsKKysgICAgICAgIFFNZXRh T2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgW3RoaXNdKCl7IGZpbGVPcGVuRmluaXNoZWQoZmFs c2UpOyB9LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAgICAgICByZXR1cm47CisgICAgIH0K KyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3Jr cmVwbHlpbXBsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWlt cGwuY3BwCitpbmRleCBiY2RmNmVlMmYxLi4zYjZkZWI4MmJkIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAKKysrKyBiL3F0YmFzZS9z cmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWltcGwuY3BwCitAQCAtNjgwLDcgKzY4MCw3 IEBAIHZvaWQgUU5ldHdvcmtSZXBseUltcGxQcml2YXRlOjphcHBlbmREb3duc3RyZWFtRGF0YShR SU9EZXZpY2UgKmRhdGEpCisgICAgIC8vIHJlYWQgdW50aWwgRU9GIGZyb20gZGF0YQorICAgICBp ZiAoUV9VTkxJS0VMWShjb3B5RGV2aWNlKSkgeworICAgICAgICAgcUNyaXRpY2FsKCJRTmV0d29y a1JlcGx5SW1wbDogY29weSBmcm9tIFFJT0RldmljZSBhbHJlYWR5IGluIHByb2dyZXNzIC0tICIK Ky0gICAgICAgICAgICAgICAgICAiYmFja2VuZCBwcm9ibHkgbmVlZHMgdG8gYmUgZml4ZWQiKTsK KysgICAgICAgICAgICAgICAgICAiYmFja2VuZCBwcm9iYWJseSBuZWVkcyB0byBiZSBmaXhlZCIp OworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9u ZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2Vy bmVsL3FhdXRoZW50aWNhdG9yLmNwcAoraW5kZXggZDlmZTdiYzQ3Yi4uY2NkMDRiMjk0YSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3BwCisr KysgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3FhdXRoZW50aWNhdG9yLmNwcAorQEAgLTUw LDYgKzUwLDcgQEAKKyAjaW5jbHVkZSA8cXN0cmluZy5oPgorICNpbmNsdWRlIDxxZGF0ZXRpbWUu aD4KKyAjaW5jbHVkZSA8cXJhbmRvbS5oPgorKyNpbmNsdWRlICJwcml2YXRlL3FzeXN0ZW1saWJy YXJ5X3AuaCIKKyAKKyAjaWZkZWYgUV9PU19XSU4KKyAjaW5jbHVkZSA8cW11dGV4Lmg+CitAQCAt MTU2Myw3ICsxNTY0LDcgQEAgc3RhdGljIGJvb2wgcV9TU1BJX2xpYnJhcnlfbG9hZCgpCisgCisg ICAgIC8vIEluaXRpYWxpemUgc2VjdXJpdHkgaW50ZXJmYWNlCisgICAgIGlmIChwU2VjdXJpdHlG dW5jdGlvblRhYmxlID09IG51bGxwdHIpIHsKKy0gICAgICAgIHNlY3VyaXR5RExMSGFuZGxlID0g TG9hZExpYnJhcnkoTCJzZWN1cjMyLmRsbCIpOworKyAgICAgICAgc2VjdXJpdHlETExIYW5kbGUg PSBRU3lzdGVtTGlicmFyeTo6bG9hZChMInNlY3VyMzIiKTsKKyAgICAgICAgIGlmIChzZWN1cml0 eURMTEhhbmRsZSAhPSBudWxscHRyKSB7CisgICAgICAgICAgICAgSU5JVF9TRUNVUklUWV9JTlRF UkZBQ0UgcEluaXRTZWN1cml0eUludGVyZmFjZSA9CisgICAgICAgICAgICAgICAgIHJlaW50ZXJw cmV0X2Nhc3Q8SU5JVF9TRUNVUklUWV9JTlRFUkZBQ0U+KAorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3Jr L2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAKK2luZGV4IDliMGEyZWU2NjkuLjczNjc5YzllZjEg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191bml4LmNw cAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAKK0BA IC0xMjIsNyArMTIyLDYgQEAgc3RhdGljIFFGdW5jdGlvblBvaW50ZXIgcmVzb2x2ZVN5bWJvbChR TGlicmFyeSAmbGliLCBjb25zdCBjaGFyICpzeW0pCisgCisgTGliUmVzb2x2OjpMaWJSZXNvbHYo KQorIHsKKy0gICAgUUxpYnJhcnkgbGliOworICNpZmRlZiBMSUJSRVNPTFZfU08KKyAgICAgbGli LnNldEZpbGVOYW1lKFFTdHJpbmdMaXRlcmFsKExJQlJFU09MVl9TTykpOworICAgICBpZiAoIWxp Yi5sb2FkKCkpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29ja3M1 c29ja2V0ZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tl dGVuZ2luZS5jcHAKK2luZGV4IDNhMDQ2ZmQxMTYuLjk3ZmFkY2EwYjMgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3BwCisrKysgYi9x dGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3BwCitAQCAtMTI5 Niw3ICsxMjk2LDcgQEAgdm9pZCBRU29ja3M1U29ja2V0RW5naW5lUHJpdmF0ZTo6X3FfdWRwU29j a2V0UmVhZE5vdGlmaWNhdGlvbigpCisgICAgICAgICBpbnQgcG9zID0gMDsKKyAgICAgICAgIGNv bnN0IGNoYXIgKmJ1ZiA9IGluQnVmLmNvbnN0RGF0YSgpOworICAgICAgICAgaWYgKGluQnVmLnNp emUoKSA8IDQpIHsKKy0gICAgICAgICAgICBRU09DS1M1X0RfREVCVUcgPDwgImJ1Z3VzIHVkcCBk YXRhLCBkaXNjYXJkaW5nIjsKKysgICAgICAgICAgICBRU09DS1M1X0RfREVCVUcgPDwgImJvZ3Vz IHVkcCBkYXRhLCBkaXNjYXJkaW5nIjsKKyAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICB9 CisgICAgICAgICBRU29ja3M1UmV2aXZlZERhdGFncmFtIGRhdGFncmFtOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAgYi9xdGJhc2Uv c3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwCitpbmRleCBjOWYyMDJmNTcz Li5jOTkyZGE5ZDhlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsY29u dGV4dF9vcGVuc3NsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsY29udGV4 dF9vcGVuc3NsLmNwcAorQEAgLTQwOSw3ICs0MDksNyBAQCBpbml0X2NvbnRleHQ6CisgICAgICAg ICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpEdGxzVjFfME9yTGF0ZXI6CisgICAgICAgICBtaW5W ZXJzaW9uID0gRFRMUzFfVkVSU0lPTjsKKy0gICAgICAgIG1heFZlcnNpb24gPSBEVExTX01BWF9W RVJTSU9OOworKyAgICAgICAgbWF4VmVyc2lvbiA9IDA7CisgICAgICAgICBicmVhazsKKyAgICAg Y2FzZSBRU3NsOjpEdGxzVjFfMjoKKyAgICAgICAgIG1pblZlcnNpb24gPSBEVExTMV8yX1ZFUlNJ T047CitAQCAtNDE3LDcgKzQxNyw3IEBAIGluaXRfY29udGV4dDoKKyAgICAgICAgIGJyZWFrOwor ICAgICBjYXNlIFFTc2w6OkR0bHNWMV8yT3JMYXRlcjoKKyAgICAgICAgIG1pblZlcnNpb24gPSBE VExTMV8yX1ZFUlNJT047CistICAgICAgICBtYXhWZXJzaW9uID0gRFRMU19NQVhfVkVSU0lPTjsK KysgICAgICAgIG1heFZlcnNpb24gPSAwOworICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUVNz bDo6VGxzVjFfM09yTGF0ZXI6CisgI2lmZGVmIFRMUzFfM19WRVJTSU9OCitAQCAtNDU1LDcgKzQ1 NSw3IEBAIGluaXRfY29udGV4dDoKKyAgICAgfQorIAorICAgICAvLyBFbmFibGUgYnVnIHdvcmth cm91bmRzLgorLSAgICBsb25nIG9wdGlvbnMgPSBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OnNl dHVwT3BlblNzbE9wdGlvbnMoY29uZmlndXJhdGlvbi5wcm90b2NvbCgpLCBjb25maWd1cmF0aW9u LmQtPnNzbE9wdGlvbnMpOworKyAgICBxc3Nsb3B0aW9ucyBvcHRpb25zID0gUVNzbFNvY2tldEJh Y2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKGNvbmZpZ3VyYXRpb24ucHJvdG9jb2wo KSwgY29uZmlndXJhdGlvbi5kLT5zc2xPcHRpb25zKTsKKyAgICAgcV9TU0xfQ1RYX3NldF9vcHRp b25zKHNzbENvbnRleHQtPmN0eCwgb3B0aW9ucyk7CisgCisgICAgIC8vIFRlbGwgT3BlblNTTCB0 byByZWxlYXNlIG1lbW9yeSBlYXJseQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9z c2wvcXNzbGRpZmZpZWhlbGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwIGIvcXRiYXNlL3NyYy9u ZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5jcHAKK2luZGV4 IGFhZjg3NDExMzAuLmI1ODkzNTM3MmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsv c3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAorKysrIGIvcXRiYXNl L3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5jcHAK K0BAIC01OSw1NyArNTksNiBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorLSNpZmRlZiBP UEVOU1NMX05PX0RFUFJFQ0FURURfM18wCistCistc3RhdGljIGludCBxX0RIX2NoZWNrKERIICpk aCwgaW50ICpzdGF0dXMpCisteworLSAgICAvLyBESF9jaGVjayB3YXMgZmlyc3QgZGVwcmVjYXRl ZCBpbiBPcGVuU1NMIDMuMC4wLCBhcyBsb3ctbGV2ZWwKKy0gICAgLy8gQVBJOyB0aGUgRVZQX1BL RVkgZmFtaWx5IG9mIGZ1bmN0aW9ucyB3YXMgYWR2aXNlZCBhcyBhbiBhbHRlcm5hdGl2ZS4KKy0g ICAgLy8gQXMgb2Ygbm93IEVWUF9QS0VZX3BhcmFtc19jaGVjayBlbmRzIHVwIGNhbGxpbmcgLi4u IERIX2NoZWNrLAorLSAgICAvLyB3aGljaCBpcyBnb29kIGVub3VnaC4KKy0KKy0gICAgUV9BU1NF UlQoZGgpOworLSAgICBRX0FTU0VSVChzdGF0dXMpOworLQorLSAgICBFVlBfUEtFWSAqa2V5ID0g cV9FVlBfUEtFWV9uZXcoKTsKKy0gICAgaWYgKCFrZXkpIHsKKy0gICAgICAgIHFDV2FybmluZyhs Y1NzbCwgIkVWUF9QS0VZX25ldyBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xTb2NrZXRCYWNrZW5k UHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgICAgICByZXR1cm4gMDsKKy0g ICAgfQorLSAgICBjb25zdCBhdXRvIGtleURlbGV0ZXIgPSBxU2NvcGVHdWFyZChba2V5XSgpewor LSAgICAgICAgcV9FVlBfUEtFWV9mcmVlKGtleSk7CistICAgIH0pOworLSAgICBpZiAoIXFfRVZQ X1BLRVlfc2V0MV9ESChrZXksIGRoKSkgeworLSAgICAgICAgcUNXYXJuaW5nKGxjU3NsLCAiRVZQ X1BLRVlfc2V0MV9ESCBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0 ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgICAgICByZXR1cm4gMDsKKy0gICAgfQor LQorLSAgICBFVlBfUEtFWV9DVFggKmtleUN0eCA9IHFfRVZQX1BLRVlfQ1RYX25ldyhrZXksIG51 bGxwdHIpOworLSAgICBpZiAoIWtleUN0eCkgeworLSAgICAgICAgcUNXYXJuaW5nKGxjU3NsLCAi RVZQX1BLRVlfQ1RYX25ldyBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xTb2NrZXRCYWNrZW5kUHJp dmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgICAgICByZXR1cm4gMDsKKy0gICAg fQorLSAgICBjb25zdCBhdXRvIGN0eERlbGV0ZXIgPSBxU2NvcGVHdWFyZChba2V5Q3R4XXsKKy0g ICAgICAgIHFfRVZQX1BLRVlfQ1RYX2ZyZWUoa2V5Q3R4KTsKKy0gICAgfSk7CistCistICAgIGNv bnN0IGludCByZXN1bHQgPSBxX0VWUF9QS0VZX3BhcmFtX2NoZWNrKGtleUN0eCk7CistICAgIFFT c2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgIC8v IE5vdGU6IHVubGlrZSBESF9jaGVjaywgd2UgY2Fubm90IG9idGFpbiB0aGUgJ3N0YXR1cycsCist ICAgIC8vIGlmIHRoZSAncmVzdWx0JyBpcyAwIChhY3R1YWxseSB0aGUgcmVzdWx0IGlzIDEgb25s eQorLSAgICAvLyBpZiB0aGlzICdzdGF0dXMnIHdhcyAwKS4gV2UgY291bGQgcHJvYmFibHkgY2hl Y2sgdGhlCistICAgIC8vIGVycm9ycyBmcm9tIHRoZSBlcnJvciBxdWV1ZSwgYnV0IGl0J3Mgbm90 IG5lZWRlZCBhbnl3YXkKKy0gICAgLy8gLSBzZWUgdGhlICdpc1NhZmVESCcgYmVsb3csIGhvdyBp dCByZXR1cm5zIGltbWVkaWF0ZWx5CistICAgIC8vIG9uIDAuCistICAgIFFfVU5VU0VEKHN0YXR1 cykKKy0KKy0gICAgcmV0dXJuIHJlc3VsdDsKKy19CistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQ UkVDQVRFRF8zXzAKKy0KKyBzdGF0aWMgYm9vbCBpc1NhZmVESChESCAqZGgpCisgeworICAgICBp bnQgc3RhdHVzID0gMDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xz b2NrZXRfb3BlbnNzbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3Bl bnNzbC5jcHAKK2luZGV4IDM3ZmFkMmE2OGYuLjhmNjg1OGM4NjcgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbC5jcHAKKysrKyBiL3F0YmFzZS9z cmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcAorQEAgLTU1MCw5ICs1NTAsOSBA QCBzdGF0aWMgdm9pZCBxX2xvYWRDaXBoZXJzRm9yQ29ubmVjdGlvbihTU0wgKmNvbm5lY3Rpb24s IFFMaXN0PFFTc2xDaXBoZXI+ICZjaXBoZQorIC8vIERlZmluZWQgaW4gcXNzbHNvY2tldC5jcHAK KyB2b2lkIHFfc2V0RGVmYXVsdER0bHNDaXBoZXJzKGNvbnN0IFFMaXN0PFFTc2xDaXBoZXI+ICZj aXBoZXJzKTsKKyAKKy1sb25nIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVuU3Ns T3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBzc2xP cHRpb25zKQorK3Fzc2xvcHRpb25zIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVu U3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBz c2xPcHRpb25zKQorIHsKKy0gICAgbG9uZyBvcHRpb25zOworKyAgICBxc3Nsb3B0aW9ucyBvcHRp b25zOworICAgICBpZiAocHJvdG9jb2wgPT0gUVNzbDo6VGxzVjFTc2xWMykKKyAgICAgICAgIG9w dGlvbnMgPSBTU0xfT1BfQUxMfFNTTF9PUF9OT19TU0x2MnxTU0xfT1BfTk9fU1NMdjM7CisgICAg IGVsc2UgaWYgKHByb3RvY29sID09IFFTc2w6OlNlY3VyZVByb3RvY29scykKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmggYi9xdGJhc2Uv c3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmgKK2luZGV4IDQxMDNkZTIzZTgu LjU1NDc1ODkyNTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2Nr ZXRfb3BlbnNzbF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9v cGVuc3NsX3AuaAorQEAgLTEwNyw2ICsxMDcsMTIgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UK KyAKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9QRU5TU0xfVkVSU0lP Tl9NQUpPUiA+PSAzCisrdHlwZWRlZiB1aW50NjRfdCBxc3Nsb3B0aW9uczsKKysjZWxzZQorK3R5 cGVkZWYgdW5zaWduZWQgbG9uZyBxc3Nsb3B0aW9uczsKKysjZW5kaWYKKysKKyBzdHJ1Y3QgUVNz bEVycm9yRW50cnkgeworICAgICBpbnQgY29kZTsKKyAgICAgaW50IGRlcHRoOworQEAgLTE3MSw3 ICsxNzcsNyBAQCBwdWJsaWM6CisgICAgIFFWZWN0b3I8UVNzbEVycm9yPiBvY3NwRXJyb3JzOwor ICAgICBRQnl0ZUFycmF5IG9jc3BSZXNwb25zZURlcjsKKyAKKy0gICAgUV9BVVRPVEVTVF9FWFBP UlQgc3RhdGljIGxvbmcgc2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90 b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBzc2xPcHRpb25zKTsKKysgICAgUV9BVVRPVEVTVF9FWFBP UlQgc3RhdGljIHFzc2xvcHRpb25zIHNldHVwT3BlblNzbE9wdGlvbnMoUVNzbDo6U3NsUHJvdG9j b2wgcHJvdG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucyk7CisgICAgIHN0YXRpYyBR U3NsQ2lwaGVyIFFTc2xDaXBoZXJfZnJvbV9TU0xfQ0lQSEVSKGNvbnN0IFNTTF9DSVBIRVIgKmNp cGhlcik7CisgICAgIHN0YXRpYyBRTGlzdDxRU3NsQ2VydGlmaWNhdGU+IFNUQUNLT0ZYNTA5X3Rv X1FTc2xDZXJ0aWZpY2F0ZXMoU1RBQ0tfT0YoWDUwOSkgKng1MDkpOworICAgICBzdGF0aWMgUUxp c3Q8UVNzbEVycm9yPiB2ZXJpZnkoY29uc3QgUUxpc3Q8UVNzbENlcnRpZmljYXRlPiAmY2VydGlm aWNhdGVDaGFpbiwgY29uc3QgUVN0cmluZyAmaG9zdE5hbWUpOworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHMuY3BwIGIvcXRiYXNl L3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAKK2luZGV4IGU1 M2ZiMjc5ZjAuLjQ1OWNjZDBiMTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3Ns L3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3Jr L3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAKK0BAIC0xNDgsNyArMTQ4LDYgQEAg REVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX3VwX3JlZiwgRVZQX1BLRVkgKmEsIGEsIHJldHVybiAw LCByZXR1cm4pCisgREVGSU5FRlVOQzIoRVZQX1BLRVlfQ1RYICosIEVWUF9QS0VZX0NUWF9uZXcs IEVWUF9QS0VZICpwa2V5LCBwa2V5LCBFTkdJTkUgKmUsIGUsIHJldHVybiBudWxscHRyLCByZXR1 cm4pCisgREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX3BhcmFtX2NoZWNrLCBFVlBfUEtFWV9DVFgg KmN0eCwgY3R4LCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkModm9pZCwgRVZQX1BLRVlf Q1RYX2ZyZWUsIEVWUF9QS0VZX0NUWCAqY3R4LCBjdHgsIHJldHVybiwgcmV0dXJuKQorLURFRklO RUZVTkMoaW50LCBFVlBfUEtFWV9iYXNlX2lkLCBFVlBfUEtFWSAqYSwgYSwgcmV0dXJuIE5JRF91 bmRlZiwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBSU0FfYml0cywgUlNBICphLCBhLCByZXR1 cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBEU0FfYml0cywgRFNBICphLCBhLCByZXR1 cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBPUEVOU1NMX3NrX251bSwgT1BFTlNTTF9T VEFDSyAqYSwgYSwgcmV0dXJuIC0xLCByZXR1cm4pCitAQCAtMTU4LDcgKzE1Nyw3IEBAIERFRklO RUZVTkMyKHZvaWQsIE9QRU5TU0xfc2tfcHVzaCwgT1BFTlNTTF9TVEFDSyAqYSwgYSwgdm9pZCAq YiwgYiwgcmV0dXJuLCBEVU1NCisgREVGSU5FRlVOQyh2b2lkLCBPUEVOU1NMX3NrX2ZyZWUsIE9Q RU5TU0xfU1RBQ0sgKmEsIGEsIHJldHVybiwgRFVNTVlBUkcpCisgREVGSU5FRlVOQzIodm9pZCAq LCBPUEVOU1NMX3NrX3ZhbHVlLCBPUEVOU1NMX1NUQUNLICphLCBhLCBpbnQgYiwgYiwgcmV0dXJu IG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwgU1NMX3Nlc3Npb25fcmV1c2VkLCBT U0wgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCistREVGSU5FRlVOQzIodW5zaWduZWQgbG9uZywg U1NMX0NUWF9zZXRfb3B0aW9ucywgU1NMX0NUWCAqY3R4LCBjdHgsIHVuc2lnbmVkIGxvbmcgb3As IG9wLCByZXR1cm4gMCwgcmV0dXJuKQorK0RFRklORUZVTkMyKHFzc2xvcHRpb25zLCBTU0xfQ1RY X3NldF9vcHRpb25zLCBTU0xfQ1RYICpjdHgsIGN0eCwgcXNzbG9wdGlvbnMgb3AsIG9wLCByZXR1 cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBTU0xfQ1RYX2dldF9zZWN1cml0eV9sZXZl bCwgY29uc3QgU1NMX0NUWCAqY3R4LCBjdHgsIHJldHVybiAtMSwgcmV0dXJuKQorIERFRklORUZV TkMyKHZvaWQsIFNTTF9DVFhfc2V0X3NlY3VyaXR5X2xldmVsLCBTU0xfQ1RYICpjdHgsIGN0eCwg aW50IGxldmVsLCBsZXZlbCwgcmV0dXJuLCByZXR1cm4pCisgI2lmZGVmIFRMUzFfM19WRVJTSU9O CitAQCAtMzcxLDcgKzM3MCwxNSBAQCBERUZJTkVGVU5DKGNvbnN0IFNTTF9DSVBIRVIgKiwgU1NM X2dldF9jdXJyZW50X2NpcGhlciwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0cgorIERFRklORUZV TkMoaW50LCBTU0xfdmVyc2lvbiwgY29uc3QgU1NMICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQor IERFRklORUZVTkMyKGludCwgU1NMX2dldF9lcnJvciwgU1NMICphLCBhLCBpbnQgYiwgYiwgcmV0 dXJuIC0xLCByZXR1cm4pCisgREVGSU5FRlVOQyhTVEFDS19PRihYNTA5KSAqLCBTU0xfZ2V0X3Bl ZXJfY2VydF9jaGFpbiwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorKworKyNp ZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9OX01BSk9S ID49IDMKKytERUZJTkVGVU5DKFg1MDkgKiwgU1NMX2dldDFfcGVlcl9jZXJ0aWZpY2F0ZSwgU1NM ICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorK0RFRklORUZVTkMoaW50LCBFVlBfUEtF WV9nZXRfYmFzZV9pZCwgY29uc3QgRVZQX1BLRVkgKnBrZXksIHBrZXksIHJldHVybiAtMSwgcmV0 dXJuKQorKyNlbHNlCisgREVGSU5FRlVOQyhYNTA5ICosIFNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0 ZSwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorK0RFRklORUZVTkMoaW50LCBF VlBfUEtFWV9iYXNlX2lkLCBFVlBfUEtFWSAqYSwgYSwgcmV0dXJuIE5JRF91bmRlZiwgcmV0dXJu KQorKyNlbmRpZiAvLyBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworKworIERFRklORUZVTkMo bG9uZywgU1NMX2dldF92ZXJpZnlfcmVzdWx0LCBjb25zdCBTU0wgKmEsIGEsIHJldHVybiAtMSwg cmV0dXJuKQorIERFRklORUZVTkMoU1NMICosIFNTTF9uZXcsIFNTTF9DVFggKmEsIGEsIHJldHVy biBudWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVOQyhTU0xfQ1RYICosIFNTTF9nZXRfU1NMX0NU WCwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorQEAgLTQ5Miw5ICs0OTksNyBA QCBERUZJTkVGVU5DKERIICosIERIX25ldywgRFVNTVlBUkcsIERVTU1ZQVJHLCByZXR1cm4gbnVs bHB0ciwgcmV0dXJuKQorIERFRklORUZVTkModm9pZCwgREhfZnJlZSwgREggKmRoLCBkaCwgcmV0 dXJuLCBEVU1NWUFSRykKKyBERUZJTkVGVU5DMyhESCAqLCBkMmlfREhwYXJhbXMsIERIKiphLCBh LCBjb25zdCB1bnNpZ25lZCBjaGFyICoqcHAsIHBwLCBsb25nIGxlbmd0aCwgbGVuZ3RoLCByZXR1 cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkMyKGludCwgaTJkX0RIcGFyYW1zLCBESCAq YSwgYSwgdW5zaWduZWQgY2hhciAqKnAsIHAsIHJldHVybiAtMSwgcmV0dXJuKQorLSNpZm5kZWYg T1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIERFRklORUZVTkMyKGludCwgREhfY2hlY2ssIERI ICpkaCwgZGgsIGludCAqY29kZXMsIGNvZGVzLCByZXR1cm4gMCwgcmV0dXJuKQorLSNlbmRpZiAv LyBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisgREVGSU5FRlVOQzMoQklHTlVNICosIEJOX2Jp bjJibiwgY29uc3QgdW5zaWduZWQgY2hhciAqcywgcywgaW50IGxlbiwgbGVuLCBCSUdOVU0gKnJl dCwgcmV0LCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIAorICNpZm5kZWYgT1BFTlNTTF9OT19F QworQEAgLTg2OCw3ICs4NzMsNiBAQCBib29sIHFfcmVzb2x2ZU9wZW5Tc2xTeW1ib2xzKCkKKyAg ICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfQ1RYX25ldykKKyAgICAgUkVTT0xWRUZVTkMoRVZQX1BL RVlfcGFyYW1fY2hlY2spCisgICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX0NUWF9mcmVlKQorLSAg ICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9iYXNlX2lkKQorICAgICBSRVNPTFZFRlVOQyhSU0FfYml0 cykKKyAgICAgUkVTT0xWRUZVTkMoT1BFTlNTTF9za19uZXdfbnVsbCkKKyAgICAgUkVTT0xWRUZV TkMoT1BFTlNTTF9za19wdXNoKQorQEAgLTExMDcsNyArMTExMSwxNSBAQCBib29sIHFfcmVzb2x2 ZU9wZW5Tc2xTeW1ib2xzKCkKKyAgICAgUkVTT0xWRUZVTkMoU1NMX3ZlcnNpb24pCisgICAgIFJF U09MVkVGVU5DKFNTTF9nZXRfZXJyb3IpCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfcGVlcl9j ZXJ0X2NoYWluKQorKworKyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BF TlNTTF9WRVJTSU9OX01BSk9SID49IDMKKysgICAgUkVTT0xWRUZVTkMoU1NMX2dldDFfcGVlcl9j ZXJ0aWZpY2F0ZSkKKysgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfZ2V0X2Jhc2VfaWQpCisrI2Vs c2UKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKQorKyAgICBSRVNP TFZFRlVOQyhFVlBfUEtFWV9iYXNlX2lkKQorKyNlbmRpZiAvLyBPUEVOU1NMX1ZFUlNJT05fTUFK T1IgPj0gMworKworICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQpCisgICAg IFJFU09MVkVGVU5DKFNTTF9uZXcpCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfU1NMX0NUWCkK K0BAIC0xMjA2LDkgKzEyMTgsNyBAQCBib29sIHFfcmVzb2x2ZU9wZW5Tc2xTeW1ib2xzKCkKKyAg ICAgUkVTT0xWRUZVTkMoREhfZnJlZSkKKyAgICAgUkVTT0xWRUZVTkMoZDJpX0RIcGFyYW1zKQor ICAgICBSRVNPTFZFRlVOQyhpMmRfREhwYXJhbXMpCistI2lmbmRlZiBPUEVOU1NMX05PX0RFUFJF Q0FURURfM18wCisgICAgIFJFU09MVkVGVU5DKERIX2NoZWNrKQorLSNlbmRpZiAvLyBPUEVOU1NM X05PX0RFUFJFQ0FURURfM18wCisgICAgIFJFU09MVkVGVU5DKEJOX2JpbjJibikKKyAKKyAjaWZu ZGVmIE9QRU5TU0xfTk9fRUMKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fz c2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNz bHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oCitpbmRleCA5NWU4ODk3YTNiLi4yN2FlZmZhMThh IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xf c3ltYm9sc19wLmgKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVu c3NsX3N5bWJvbHNfcC5oCitAQCAtMjM3LDcgKzIzNyw2IEBAIFFfQVVUT1RFU1RfRVhQT1JUIGlu dCBxX0VWUF9QS0VZX3VwX3JlZihFVlBfUEtFWSAqYSk7CisgRVZQX1BLRVlfQ1RYICpxX0VWUF9Q S0VZX0NUWF9uZXcoRVZQX1BLRVkgKnBrZXksIEVOR0lORSAqZSk7Cisgdm9pZCBxX0VWUF9QS0VZ X0NUWF9mcmVlKEVWUF9QS0VZX0NUWCAqY3R4KTsKKyBpbnQgcV9FVlBfUEtFWV9wYXJhbV9jaGVj ayhFVlBfUEtFWV9DVFggKmN0eCk7CistaW50IHFfRVZQX1BLRVlfYmFzZV9pZChFVlBfUEtFWSAq YSk7CisgaW50IHFfUlNBX2JpdHMoUlNBICphKTsKKyBRX0FVVE9URVNUX0VYUE9SVCBpbnQgcV9P UEVOU1NMX3NrX251bShPUEVOU1NMX1NUQUNLICphKTsKKyBRX0FVVE9URVNUX0VYUE9SVCB2b2lk IHFfT1BFTlNTTF9za19wb3BfZnJlZShPUEVOU1NMX1NUQUNLICphLCB2b2lkICgqYikodm9pZCAq KSk7CitAQCAtMjQ2LDcgKzI0NSw3IEBAIFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQgcV9PUEVOU1NM X3NrX3B1c2goT1BFTlNTTF9TVEFDSyAqc3QsIHZvaWQgKmRhdGEpOworIFFfQVVUT1RFU1RfRVhQ T1JUIHZvaWQgcV9PUEVOU1NMX3NrX2ZyZWUoT1BFTlNTTF9TVEFDSyAqYSk7CisgUV9BVVRPVEVT VF9FWFBPUlQgdm9pZCAqIHFfT1BFTlNTTF9za192YWx1ZShPUEVOU1NMX1NUQUNLICphLCBpbnQg Yik7CisgaW50IHFfU1NMX3Nlc3Npb25fcmV1c2VkKFNTTCAqYSk7CistdW5zaWduZWQgbG9uZyBx X1NTTF9DVFhfc2V0X29wdGlvbnMoU1NMX0NUWCAqY3R4LCB1bnNpZ25lZCBsb25nIG9wKTsKKytx c3Nsb3B0aW9ucyBxX1NTTF9DVFhfc2V0X29wdGlvbnMoU1NMX0NUWCAqY3R4LCBxc3Nsb3B0aW9u cyBvcCk7CisgaW50IHFfT1BFTlNTTF9pbml0X3NzbCh1aW50NjRfdCBvcHRzLCBjb25zdCBPUEVO U1NMX0lOSVRfU0VUVElOR1MgKnNldHRpbmdzKTsKKyBzaXplX3QgcV9TU0xfZ2V0X2NsaWVudF9y YW5kb20oU1NMICphLCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4pOworIHNpemVf dCBxX1NTTF9TRVNTSU9OX2dldF9tYXN0ZXJfa2V5KGNvbnN0IFNTTF9TRVNTSU9OICpzZXNzaW9u LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4pOworQEAgLTUxMCw3ICs1MDksNiBA QCBjb25zdCBTU0xfQ0lQSEVSICpxX1NTTF9nZXRfY3VycmVudF9jaXBoZXIoU1NMICphKTsKKyBp bnQgcV9TU0xfdmVyc2lvbihjb25zdCBTU0wgKmEpOworIGludCBxX1NTTF9nZXRfZXJyb3IoU1NM ICphLCBpbnQgYik7CisgU1RBQ0tfT0YoWDUwOSkgKnFfU1NMX2dldF9wZWVyX2NlcnRfY2hhaW4o U1NMICphKTsKKy1YNTA5ICpxX1NTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShTU0wgKmEpOworIGxv bmcgcV9TU0xfZ2V0X3ZlcmlmeV9yZXN1bHQoY29uc3QgU1NMICphKTsKKyBTU0wgKnFfU1NMX25l dyhTU0xfQ1RYICphKTsKKyBTU0xfQ1RYICpxX1NTTF9nZXRfU1NMX0NUWChTU0wgKmEpOworQEAg LTU4MiwxMCArNTgwLDcgQEAgREggKnFfREhfbmV3KCk7Cisgdm9pZCBxX0RIX2ZyZWUoREggKmRo KTsKKyBESCAqcV9kMmlfREhwYXJhbXMoREggKiphLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqcHAs IGxvbmcgbGVuZ3RoKTsKKyBpbnQgcV9pMmRfREhwYXJhbXMoREggKmEsIHVuc2lnbmVkIGNoYXIg KipwKTsKKy0KKy0jaWZuZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyBpbnQgcV9ESF9j aGVjayhESCAqZGgsIGludCAqY29kZXMpOworLSNlbmRpZiAvLyBPUEVOU1NMX05PX0RFUFJFQ0FU RURfM18wCisgCisgQklHTlVNICpxX0JOX2JpbjJibihjb25zdCB1bnNpZ25lZCBjaGFyICpzLCBp bnQgbGVuLCBCSUdOVU0gKnJldCk7CisgI2RlZmluZSBxX1NTTF9DVFhfc2V0X3RtcF9kaChjdHgs IGRoKSBxX1NTTF9DVFhfY3RybCgoY3R4KSwgU1NMX0NUUkxfU0VUX1RNUF9ESCwgMCwgKGNoYXIg KilkaCkKK0BAIC03NTQsNiArNzQ5LDE3IEBAIHZvaWQgcV9DUllQVE9fZnJlZSh2b2lkICpzdHIs IGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lKTsKKyBpbnQgcV9TU0xfQ1RYX2dldF9zZWN1cml0 eV9sZXZlbChjb25zdCBTU0xfQ1RYICpjdHgpOworIHZvaWQgcV9TU0xfQ1RYX3NldF9zZWN1cml0 eV9sZXZlbChTU0xfQ1RYICpjdHgsIGludCBsZXZlbCk7CisgCisrLy8gSGVyZSB3ZSBoYXZlIHRo ZSBvbmVzIHRoYXQgbWFrZSBkaWZmZXJlbmNlIGJldHdlZW4gT3BlblNTTCBwcmUvcG9zdCB2MzoK KysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9QRU5TU0xfVkVSU0lPTl9N QUpPUiA+PSAzCisrWDUwOSAqcV9TU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlKFNTTCAqYSk7Cisr I2RlZmluZSBxX1NTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZSBxX1NTTF9nZXQxX3BlZXJfY2VydGlm aWNhdGUKKytpbnQgcV9FVlBfUEtFWV9nZXRfYmFzZV9pZChjb25zdCBFVlBfUEtFWSAqcGtleSk7 CisrI2RlZmluZSBxX0VWUF9QS0VZX2Jhc2VfaWQgcV9FVlBfUEtFWV9nZXRfYmFzZV9pZAorKyNl bHNlCisrWDUwOSAqcV9TU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUoU1NMICphKTsKKytpbnQgcV9F VlBfUEtFWV9iYXNlX2lkKEVWUF9QS0VZICphKTsKKysjZW5kaWYgLy8gT1BFTlNTTF9WRVJTSU9O X01BSk9SID49IDMKKysKKyBRVF9FTkRfTkFNRVNQQUNFCisgCisgI2VuZGlmCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRfZWdsX3AuaCBi L3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmgKK2lu ZGV4IGJmMzdkMDdmZDguLmRiZDQyZmI3OTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oCitAQCAtNjEsNyArNjEsMTEg QEAKKyAjIGlmICFkZWZpbmVkKFFfT1NfSU5URUdSSVRZKQorICMgIGRlZmluZSBXSU5fSU5URVJG QUNFX0NVU1RPTSAgIC8vIE5WCisgIyBlbmRpZiAvLyBRX09TX0lOVEVHUklUWQorLSNlbmRpZiAg Ly8gUVRfRUdMX05PX1gxMQorKyNlbHNlIC8vIFFUX0VHTF9OT19YMTEKKysvLyBJZiBvbmUgaGFz IGFuIGVnbHBsYXRmb3JtLmggd2l0aCBodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL0VH TC1SZWdpc3RyeS9wdWxsLzEzMAorKy8vIHRoYXQgbmVlZHMgVVNFX1gxMSB0byBiZSBkZWZpbmVk LgorKyMgZGVmaW5lIFVTRV9YMTEKKysjZW5kaWYKKyAKKyAjaWZkZWYgUVRfRUdMX1dBWUxBTkQK KyAjIGRlZmluZSBXQVlMQU5EIC8vIE5WCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9y bXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29uZmlnL3Fmb250Y29uZmlnZGF0YWJhc2UuY3Bw IGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29uZmlnL3Fm b250Y29uZmlnZGF0YWJhc2UuY3BwCitpbmRleCAxNTliNDkwY2UwLi4wMGFhODBjZDU4IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29u ZmlnL3Fmb250Y29uZmlnZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFzZS5jcHAKK0BA IC01NjcsNiArNTY3LDggQEAgdm9pZCBRRm9udGNvbmZpZ0RhdGFiYXNlOjpwb3B1bGF0ZUZvbnRE YXRhYmFzZSgpCisgICAgICAgICBmb250cyA9IEZjRm9udExpc3QobnVsbHB0ciwgcGF0dGVybiwg b3MpOworICAgICAgICAgRmNPYmplY3RTZXREZXN0cm95KG9zKTsKKyAgICAgICAgIEZjUGF0dGVy bkRlc3Ryb3kocGF0dGVybik7CisrICAgICAgICBpZiAoIWZvbnRzKQorKyAgICAgICAgICAgIHJl dHVybjsKKyAgICAgfQorIAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvbnRzLT5uZm9udDsg aSsrKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNv bW1vbi9xeGtiY29tbW9uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hr YmNvbW1vbi9xeGtiY29tbW9uLmNwcAoraW5kZXggYjcxM2MxOTQ0Ny4uN2NiOWE4Yzc5YSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGti Y29tbW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29t bW9uL3F4a2Jjb21tb24uY3BwCitAQCAtOTUsNiArOTUsNyBAQCBzdGF0aWMgY29uc3RleHByIGNv bnN0IGF1dG8gS2V5VGJsID0gcU1ha2VBcnJheSgKKyAgICAgICAgIFhrYjJRdDxYS0JfS0VZX0Ns ZWFyLCAgICAgICAgICAgICAgICAgICBRdDo6S2V5X0RlbGV0ZT4sCisgICAgICAgICBYa2IyUXQ8 WEtCX0tFWV9QYXVzZSwgICAgICAgICAgICAgICAgICAgUXQ6OktleV9QYXVzZT4sCisgICAgICAg ICBYa2IyUXQ8WEtCX0tFWV9QcmludCwgICAgICAgICAgICAgICAgICAgUXQ6OktleV9QcmludD4s CisrICAgICAgICBYa2IyUXQ8WEtCX0tFWV9TeXNfUmVxLCAgICAgICAgICAgICAgICAgUXQ6Oktl eV9TeXNSZXE+LAorICAgICAgICAgWGtiMlF0PDB4MTAwNUZGNjAsICAgICAgICAgICAgICAgICAg ICAgIFF0OjpLZXlfU3lzUmVxPiwgICAgICAgICAvLyBoYXJkY29kZWQgU3VuIFN5c1JlcQorICAg ICAgICAgWGtiMlF0PDB4MTAwN2ZmMDAsICAgICAgICAgICAgICAgICAgICAgIFF0OjpLZXlfU3lz UmVxPiwgICAgICAgICAvLyBoYXJkY29kZWQgWDM4NiBTeXNSZXEKKyAKK0BAIC00NzEsNyArNDcy LDcgQEAgUVZlY3Rvcjx4a2Jfa2V5c3ltX3Q+IFFYa2JDb21tb246OnRvS2V5c3ltKFFLZXlFdmVu dCAqZXZlbnQpCisgICAgIH0gZWxzZSBpZiAoZXZlbnQtPm1vZGlmaWVycygpICYgUXQ6OktleXBh ZE1vZGlmaWVyKSB7CisgICAgICAgICBpZiAocXRLZXkgPj0gUXQ6OktleV8wICYmIHF0S2V5IDw9 IFF0OjpLZXlfOSkKKyAgICAgICAgICAgICBrZXlzeW1zLmFwcGVuZChYS0JfS0VZX0tQXzAgKyAo cXRLZXkgLSBRdDo6S2V5XzApKTsKKy0gICAgfSBlbHNlIGlmIChpc0xhdGluKHF0S2V5KSAmJiBl dmVudC0+dGV4dCgpLmlzVXBwZXIoKSkgeworKyAgICB9IGVsc2UgaWYgKGlzTGF0aW4xKHF0S2V5 KSAmJiBldmVudC0+dGV4dCgpLmlzVXBwZXIoKSkgeworICAgICAgICAga2V5c3ltcy5hcHBlbmQo cXRLZXkpOworICAgICB9CisgCitAQCAtNTIzLDcgKzUyNCw3IEBAIGludCBRWGtiQ29tbW9uOjpr ZXlzeW1Ub1F0S2V5KHhrYl9rZXlzeW1fdCBrZXlzeW0sIFF0OjpLZXlib2FyZE1vZGlmaWVycyBt b2RpZmllCisgICAgICAgICAvLyBXaXRoIHN0YW5kYXJkIHNob3J0Y3V0cyB3ZSBzaG91bGQgcHJl ZmVyIGEgbGF0aW4gY2hhcmFjdGVyLCB0aGlzIGlzCisgICAgICAgICAvLyBmb3IgY2hlY2tzIGxp a2UgInNvbWUgcWtleWV2ZW50ID09IFFLZXlTZXF1ZW5jZTo6Q29weSIgdG8gd29yayBldmVuCisg ICAgICAgICAvLyB3aGVuIHVzaW5nIGZvciBleGFtcGxlICdydXNzaWFuJyBrZXlib2FyZCBsYXlv dXQuCistICAgICAgICBpZiAoIVFYa2JDb21tb246OmlzTGF0aW4oa2V5c3ltKSkgeworKyAgICAg ICAgaWYgKCFRWGtiQ29tbW9uOjppc0xhdGluMShrZXlzeW0pKSB7CisgICAgICAgICAgICAgeGti X2tleXN5bV90IGxhdGluS2V5c3ltID0gUVhrYkNvbW1vbjo6bG9va3VwTGF0aW5LZXlzeW0oc3Rh dGUsIGNvZGUpOworICAgICAgICAgICAgIGlmIChsYXRpbktleXN5bSAhPSBYS0JfS0VZX05vU3lt Ym9sKQorICAgICAgICAgICAgICAgICBrZXlzeW0gPSBsYXRpbktleXN5bTsKK0BAIC01NDYsNyAr NTQ3LDcgQEAgc3RhdGljIGludCBrZXlzeW1Ub1F0S2V5X2ludGVybmFsKHhrYl9rZXlzeW1fdCBr ZXlzeW0sIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2QKKyAgICAgfSBlbHNlIGlmIChrZXlzeW0g Pj0gWEtCX0tFWV9LUF8wICYmIGtleXN5bSA8PSBYS0JfS0VZX0tQXzkpIHsKKyAgICAgICAgIC8v IG51bWVyaWMga2V5cGFkIGtleXMKKyAgICAgICAgIHF0S2V5ID0gUXQ6OktleV8wICsgKGtleXN5 bSAtIFhLQl9LRVlfS1BfMCk7CistICAgIH0gZWxzZSBpZiAoUVhrYkNvbW1vbjo6aXNMYXRpbihr ZXlzeW0pKSB7CisrICAgIH0gZWxzZSBpZiAoUVhrYkNvbW1vbjo6aXNMYXRpbjEoa2V5c3ltKSkg eworICAgICAgICAgcXRLZXkgPSBRWGtiQ29tbW9uOjpxeGtiY29tbW9uX3hrYl9rZXlzeW1fdG9f dXBwZXIoa2V5c3ltKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIC8vIGNoZWNrIGlmIHdlIGhh dmUgYSBkaXJlY3QgbWFwcGluZworQEAgLTY3OCw3ICs2NzksNyBAQCBRTGlzdDxpbnQ+IFFYa2JD b21tb246OnBvc3NpYmxlS2V5cyh4a2Jfc3RhdGUgKnN0YXRlLCBjb25zdCBRS2V5RXZlbnQgKmV2 ZW50LAorICAgICAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG5lZWRlZE1vZHMgPSBNb2RzVGJs W2ldOworICAgICAgICAgaWYgKChtb2RpZmllcnMgJiBuZWVkZWRNb2RzKSA9PSBuZWVkZWRNb2Rz KSB7CisgICAgICAgICAgICAgaWYgKGkgPT0gOCkgeworLSAgICAgICAgICAgICAgICBpZiAoaXNM YXRpbihiYXNlUXRLZXkpKQorKyAgICAgICAgICAgICAgICBpZiAoaXNMYXRpbjEoYmFzZVF0S2V5 KSkKKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAvLyBh ZGQgYSBsYXRpbiBrZXkgYXMgYSBmYWxsIGJhY2sga2V5CisgICAgICAgICAgICAgICAgIHN5bSA9 IGxvb2t1cExhdGluS2V5c3ltKHN0YXRlLCBrZXljb2RlKTsKK0BAIC03MzMsNyArNzM0LDcgQEAg dm9pZCBRWGtiQ29tbW9uOjp2ZXJpZnlIYXNMYXRpbkxheW91dCh4a2Jfa2V5bWFwICprZXltYXAp CisgICAgIGZvciAoeGtiX2xheW91dF9pbmRleF90IGxheW91dCA9IDA7IGxheW91dCA8IGxheW91 dENvdW50OyArK2xheW91dCkgeworICAgICAgICAgZm9yICh4a2Jfa2V5Y29kZV90IGNvZGUgPSBt aW5LZXljb2RlOyBjb2RlIDwgbWF4S2V5Y29kZTsgKytjb2RlKSB7CisgICAgICAgICAgICAgeGti X2tleW1hcF9rZXlfZ2V0X3N5bXNfYnlfbGV2ZWwoa2V5bWFwLCBjb2RlLCBsYXlvdXQsIDAsICZr ZXlzeW1zKTsKKy0gICAgICAgICAgICBpZiAoa2V5c3ltcyAmJiBpc0xhdGluKGtleXN5bXNbMF0p KQorKyAgICAgICAgICAgIGlmIChrZXlzeW1zICYmIGlzTGF0aW4xKGtleXN5bXNbMF0pKQorICAg ICAgICAgICAgICAgICBuckxhdGluS2V5cysrOworICAgICAgICAgICAgIGlmIChuckxhdGluS2V5 cyA+IDEwKSAvLyBhcmJpdHJhcmlseSBjaG9zZW4gdGhyZXNob2xkCisgICAgICAgICAgICAgICAg IHJldHVybjsKK0BAIC03NjYsNyArNzY3LDcgQEAgeGtiX2tleXN5bV90IFFYa2JDb21tb246Omxv b2t1cExhdGluS2V5c3ltKHhrYl9zdGF0ZSAqc3RhdGUsIHhrYl9rZXljb2RlX3Qga2V5Y28KKyAg ICAgICAgIHhrYl9sZXZlbF9pbmRleF90IGxldmVsID0geGtiX3N0YXRlX2tleV9nZXRfbGV2ZWwo c3RhdGUsIGtleWNvZGUsIGxheW91dCk7CisgICAgICAgICBpZiAoeGtiX2tleW1hcF9rZXlfZ2V0 X3N5bXNfYnlfbGV2ZWwoa2V5bWFwLCBrZXljb2RlLCBsYXlvdXQsIGxldmVsLCAmc3ltcykgIT0g MSkKKyAgICAgICAgICAgICBjb250aW51ZTsKKy0gICAgICAgIGlmIChpc0xhdGluKHN5bXNbMF0p KSB7CisrICAgICAgICBpZiAoaXNMYXRpbjEoc3ltc1swXSkpIHsKKyAgICAgICAgICAgICBzeW0g PSBzeW1zWzBdOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uX3Au aCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9u X3AuaAoraW5kZXggNTYxZWFlMDNkYi4uODM4OWJkOGY1YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uX3AuaAorKysrIGIv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5o CitAQCAtOTQsOCArOTQsOCBAQCBwdWJsaWM6CisgICAgIHN0YXRpYyB2b2lkIHZlcmlmeUhhc0xh dGluTGF5b3V0KHhrYl9rZXltYXAgKmtleW1hcCk7CisgICAgIHN0YXRpYyB4a2Jfa2V5c3ltX3Qg bG9va3VwTGF0aW5LZXlzeW0oeGtiX3N0YXRlICpzdGF0ZSwgeGtiX2tleWNvZGVfdCBrZXljb2Rl KTsKKyAKKy0gICAgc3RhdGljIGJvb2wgaXNMYXRpbih4a2Jfa2V5c3ltX3Qgc3ltKSB7CistICAg ICAgICByZXR1cm4gKChzeW0gPj0gJ2EnICYmIHN5bSA8PSAneicpIHx8IChzeW0gPj0gJ0EnICYm IHN5bSA8PSAnWicpKTsKKysgICAgc3RhdGljIGJvb2wgaXNMYXRpbjEoeGtiX2tleXN5bV90IHN5 bSkgeworKyAgICAgICAgcmV0dXJuIHN5bSA8PSAweGZmOworICAgICB9CisgICAgIHN0YXRpYyBi b29sIGlzS2V5cGFkKHhrYl9rZXlzeW1fdCBzeW0pIHsKKyAgICAgICAgIHJldHVybiBzeW0gPj0g WEtCX0tFWV9LUF9TcGFjZSAmJiBzeW0gPD0gWEtCX0tFWV9LUF85OworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2NvbnZlbmllbmNlL3FrbXNkZXZpY2UuY3BwIGIv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2RldmljZS5jcHAK K2luZGV4IDhjZDdmOWIzNjguLjQwNmY4NDY2M2YgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAorKysrIGIvcXRiYXNl L3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2RldmljZS5jcHAKK0BAIC0z MTgsNyArMzE4LDcgQEAgUVBsYXRmb3JtU2NyZWVuICpRS21zRGV2aWNlOjpjcmVhdGVTY3JlZW5G b3JDb25uZWN0b3IoZHJtTW9kZVJlc1B0ciByZXNvdXJjZXMsCisgCisgICAgIGlmIChjdXJyZW50 IDwgMCAmJiBjcnRjX21vZGUuY2xvY2sgIT0gMCkgeworICAgICAgICAgbW9kZXMgPDwgY3J0Y19t b2RlOworLSAgICAgICAgY3VycmVudCA9IG1vZGUuc2l6ZSgpIC0gMTsKKysgICAgICAgIGN1cnJl bnQgPSBtb2Rlcy5zaXplKCkgLSAxOworICAgICB9CisgCisgICAgIGlmIChjb25maWd1cmF0aW9u ID09IE91dHB1dENvbmZpZ0N1cnJlbnQpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9y bXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAgYi9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9yLmNwcAoraW5k ZXggOTE1M2ZkMjBiYi4uMjU1ZWE1ZTMzZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwCisrKysgYi9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9yLmNw cAorQEAgLTE5NCw2ICsxOTQsOSBAQCBRU3RyaW5nIEF0U3BpQWRhcHRvcjo6aW50cm9zcGVjdChj b25zdCBRU3RyaW5nICZwYXRoKSBjb25zdAorICAgICAgICAgICAgICAgICAiICAgICAgPGFyZyBk aXJlY3Rpb249XCJvdXRcIiB0eXBlPVwiKHNvKVwiLz5cbiIKKyAgICAgICAgICAgICAgICAgIiAg ICAgIDxhbm5vdGF0aW9uIHZhbHVlPVwiUVNwaU9iamVjdFJlZmVyZW5jZVwiIG5hbWU9XCJvcmcu cXRwcm9qZWN0LlF0REJ1cy5RdFR5cGVOYW1lLk91dDBcIi8+XG4iCisgICAgICAgICAgICAgICAg ICIgICAgPC9tZXRob2Q+XG4iCisrICAgICAgICAgICAgICAgICIgICAgPG1ldGhvZCBuYW1lPVwi R2V0QWNjZXNzaWJsZUlkXCI+XG4iCisrICAgICAgICAgICAgICAgICIgICAgICA8YXJnIGRpcmVj dGlvbj1cIm91dFwiIHR5cGU9XCJzXCIvPlxuIgorKyAgICAgICAgICAgICAgICAiICAgIDwvbWV0 aG9kPlxuIgorICAgICAgICAgICAgICAgICAiICA8L2ludGVyZmFjZT5cbiIKKyAgICAgICAgICAg ICAgICAgKTsKKyAKK0BAIC05MTMsOCArOTE2LDE3IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpub3Rp ZnkoUUFjY2Vzc2libGVFdmVudCAqZXZlbnQpCisgICAgIH0KKyAgICAgY2FzZSBRQWNjZXNzaWJs ZTo6TmFtZUNoYW5nZWQ6IHsKKyAgICAgICAgIGlmIChzZW5kT2JqZWN0IHx8IHNlbmRPYmplY3Rf cHJvcGVydHlfY2hhbmdlIHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hhbmdlX2FjY2Vzc2libGVf bmFtZSkgeworLSAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoZXZl bnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKSk7CistICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFy Z3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLW5h bWUiKSwgMCwgMCwgdmFyaWFudEZvclBhdGgocGF0aCkpOworKyAgICAgICAgICAgIFFBY2Nlc3Np YmxlSW50ZXJmYWNlICppZmFjZSA9IGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCk7CisrICAg ICAgICAgICAgaWYgKCFpZmFjZSkgeworKyAgICAgICAgICAgICAgICBxQ0RlYnVnKGxjQWNjZXNz aWJpbGl0eUF0c3BpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJOYW1lQ2hhbmdlZCBldmVu dCBmcm9tIGludmFsaWQgYWNjZXNzaWJsZS4iKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuOwor KyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50 ZXJmYWNlKGlmYWNlKTsKKysgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tEQnVz U2lnbmFsQXJndW1lbnRzKAorKyAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJhY2Nlc3Np YmxlLW5hbWUiKSwgMCwgMCwKKysgICAgICAgICAgICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1ZShR REJ1c1ZhcmlhbnQoaWZhY2UtPnRleHQoUUFjY2Vzc2libGU6Ok5hbWUpKSkpOworICAgICAgICAg ICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRpbjFTdHJpbmcoQVRTUElfREJVU19JTlRFUkZB Q0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3Ry aW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzKTsKKyAgICAgICAgIH0KK0BAIC05MjIsOCArOTM0 LDE3IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpub3RpZnkoUUFjY2Vzc2libGVFdmVudCAqZXZlbnQp CisgICAgIH0KKyAgICAgY2FzZSBRQWNjZXNzaWJsZTo6RGVzY3JpcHRpb25DaGFuZ2VkOiB7Cisg ICAgICAgICBpZiAoc2VuZE9iamVjdCB8fCBzZW5kT2JqZWN0X3Byb3BlcnR5X2NoYW5nZSB8fCBz ZW5kT2JqZWN0X3Byb3BlcnR5X2NoYW5nZV9hY2Nlc3NpYmxlX2Rlc2NyaXB0aW9uKSB7CistICAg ICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShldmVudC0+YWNjZXNzaWJs ZUludGVyZmFjZSgpKTsKKy0gICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tEQnVz U2lnbmFsQXJndW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtZGVzY3JpcHRpb24iKSwg MCwgMCwgdmFyaWFudEZvclBhdGgocGF0aCkpOworKyAgICAgICAgICAgIFFBY2Nlc3NpYmxlSW50 ZXJmYWNlICppZmFjZSA9IGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCk7CisrICAgICAgICAg ICAgaWYgKCFpZmFjZSkgeworKyAgICAgICAgICAgICAgICBxQ0RlYnVnKGxjQWNjZXNzaWJpbGl0 eUF0c3BpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJEZXNjcmlwdGlvbkNoYW5nZWQgZXZl bnQgZnJvbSBpbnZhbGlkIGFjY2Vzc2libGUuIik7CisrICAgICAgICAgICAgICAgIHJldHVybjsK KysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvcklu dGVyZmFjZShpZmFjZSk7CisrICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MgPSBwYWNrREJ1 c1NpZ25hbEFyZ3VtZW50cygKKysgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiYWNjZXNz aWJsZS1kZXNjcmlwdGlvbiIpLCAwLCAwLAorKyAgICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJv bVZhbHVlKFFEQnVzVmFyaWFudChpZmFjZS0+dGV4dChRQWNjZXNzaWJsZTo6RGVzY3JpcHRpb24p KSkpOworICAgICAgICAgICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRpbjFTdHJpbmcoQVRT UElfREJVU19JTlRFUkZBQ0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRTGF0aW4xU3RyaW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzKTsKKyAgICAgICAgIH0K K0BAIC0xMDM4LDcgKzEwNTksOSBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6bm90aWZ5KFFBY2Nlc3Np YmxlRXZlbnQgKmV2ZW50KQorICAgICAgICAgICAgICAgICAvLyBDb21ibyBCb3ggd2l0aCBBVC1T UEkgbGlrZXMgdG8gYmUgc3BlY2lhbAorICAgICAgICAgICAgICAgICAvLyBJdCByZXF1aXJlcyBh IG5hbWUtY2hhbmdlIHRvIHVwZGF0ZSBjYWNoZXMgYW5kIHRoZW4gc2VsZWN0aW9uLWNoYW5nZWQK KyAgICAgICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShpZmFjZSk7 CistICAgICAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzMSA9IHBhY2tEQnVzU2lnbmFsQXJn dW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLCB2YXJpYW50Rm9y UGF0aChwYXRoKSk7CisrICAgICAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzMSA9IHBhY2tE QnVzU2lnbmFsQXJndW1lbnRzKAorKyAgICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygi YWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsCisrICAgICAgICAgICAgICAgICAgICBRVmFyaWFudDo6 ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChpZmFjZS0+dGV4dChRQWNjZXNzaWJsZTo6TmFtZSkpKSk7 CisgICAgICAgICAgICAgICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRpbjFTdHJpbmcoQVRT UElfREJVU19JTlRFUkZBQ0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUUxhdGluMVN0cmluZygiUHJvcGVydHlDaGFuZ2UiKSwgYXJnczEpOworICAgICAg ICAgICAgICAgICBRVmFyaWFudExpc3QgYXJnczIgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhR U3RyaW5nKCksIDAsIDAsIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50KFFWYXJpYW50 KDApKSkpOworQEAgLTEzNTgsNiArMTM4MSwyNiBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6cmVnaXN0 ZXJBcHBsaWNhdGlvbigpCisgICAgIGRlbGV0ZSByZWdpc3RyeTsKKyB9CisgCisrbmFtZXNwYWNl IHsKKytRU3RyaW5nIGFjY2Vzc2libGVJZEZvckFjY2Vzc2libGUoUUFjY2Vzc2libGVJbnRlcmZh Y2UgKmFjY2Vzc2libGUpCisreworKyAgICBRU3RyaW5nIHJlc3VsdDsKKysgICAgd2hpbGUgKGFj Y2Vzc2libGUpIHsKKysgICAgICAgIGlmICghcmVzdWx0LmlzRW1wdHkoKSkKKysgICAgICAgICAg ICByZXN1bHQucHJlcGVuZChRTGF0aW4xQ2hhcignLicpKTsKKysgICAgICAgIGlmIChhdXRvIG9i aiA9IGFjY2Vzc2libGUtPm9iamVjdCgpKSB7CisrICAgICAgICAgICAgY29uc3QgUVN0cmluZyBu YW1lID0gb2JqLT5vYmplY3ROYW1lKCk7CisrICAgICAgICAgICAgaWYgKCFuYW1lLmlzRW1wdHko KSkKKysgICAgICAgICAgICAgICAgcmVzdWx0LnByZXBlbmQobmFtZSk7CisrICAgICAgICAgICAg ZWxzZQorKyAgICAgICAgICAgICAgICByZXN1bHQucHJlcGVuZChRU3RyaW5nOjpmcm9tVXRmOChv YmotPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkpKTsKKysgICAgICAgIH0KKysgICAgICAgIGFj Y2Vzc2libGUgPSBhY2Nlc3NpYmxlLT5wYXJlbnQoKTsKKysgICAgfQorKyAgICByZXR1cm4gcmVz dWx0OworK30KKyt9IC8vIG5hbWVzcGFjZQorKworIC8vIEFjY2Vzc2libGUKKyBib29sIEF0U3Bp QWRhcHRvcjo6YWNjZXNzaWJsZUludGVyZmFjZShRQWNjZXNzaWJsZUludGVyZmFjZSAqaW50ZXJm YWNlLCBjb25zdCBRU3RyaW5nICZmdW5jdGlvbiwgY29uc3QgUURCdXNNZXNzYWdlICZtZXNzYWdl LCBjb25zdCBRREJ1c0Nvbm5lY3Rpb24gJmNvbm5lY3Rpb24pCisgeworQEAgLTE0NDEsNiArMTQ4 NCw5IEBAIGJvb2wgQXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxlSW50ZXJmYWNlKFFBY2Nlc3NpYmxl SW50ZXJmYWNlICppbnRlcmZhY2UsIGNvbnN0IFFTCisgICAgICAgICAgICAgY2hpbGRyZW4gPDwg cmVmOworICAgICAgICAgfQorICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1lc3NhZ2UuY3JlYXRl UmVwbHkoUVZhcmlhbnQ6OmZyb21WYWx1ZShjaGlsZHJlbikpKTsKKysgICAgfSBlbHNlIGlmIChm dW5jdGlvbiA9PSBRTGF0aW4xU3RyaW5nKCJHZXRBY2Nlc3NpYmxlSWQiKSkgeworKyAgICAgICAg c2VuZFJlcGx5KGNvbm5lY3Rpb24sIG1lc3NhZ2UsCisrICAgICAgICAgICAgICAgICAgUVZhcmlh bnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoYWNjZXNzaWJsZUlkRm9yQWNjZXNzaWJsZShpbnRl cmZhY2UpKSkpOworICAgICB9IGVsc2UgeworICAgICAgICAgcUNEZWJ1ZyhsY0FjY2Vzc2liaWxp dHlBdHNwaSkgPDwgIldBUk5JTkc6IEF0U3BpQWRhcHRvcjo6YWNjZXNzaWJsZUludGVyZmFjZSBk b2VzIG5vdCBpbXBsZW1lbnQgIiA8PCBmdW5jdGlvbiA8PCBtZXNzYWdlLnBhdGgoKTsKKyAgICAg ICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9y dC9saW51eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwIGIvcXRiYXNlL3NyYy9wbGF0 Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcAoraW5kZXgg NDVkZGM4ZTQ5Ni4uY2M3MzRhYmM2MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlvbi5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlvbi5j cHAKK0BAIC02OSw2ICs2OSwyMSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyBEQnVzQ29ubmVjdGlv bjo6REJ1c0Nvbm5lY3Rpb24oUU9iamVjdCAqcGFyZW50KQorICAgICA6IFFPYmplY3QocGFyZW50 KSwgbV9hMTF5Q29ubmVjdGlvbihRU3RyaW5nKCkpLCBtX2VuYWJsZWQoZmFsc2UpCisgeworKyAg ICAvLyBJZiB0aGUgYnVzIGlzIGV4cGxpY2l0bHkgc2V0IHZpYSBlbnYgdmFyIGl0IG92ZXJyaWRl cyBldmVyeXRoaW5nIGVsc2UuCisrICAgIFFCeXRlQXJyYXkgYWRkcmVzc0VudiA9IHFnZXRlbnYo IkFUX1NQSV9CVVNfQUREUkVTUyIpOworKyAgICBpZiAoIWFkZHJlc3NFbnYuaXNFbXB0eSgpKSB7 CisrICAgICAgICAvLyBPbmx5IGNvbm5lY3Qgb24gbmV4dCBsb29wIHJ1biwgY29ubmVjdGlvbnMg dG8gb3VyIGVuYWJsZWQgc2lnbmFsIGFyZQorKyAgICAgICAgLy8gb25seSBlc3RhYmxpc2hlZCBh ZnRlciB0aGUgY3RvciByZXR1cm5zLgorKyAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhv ZCgKKysgICAgICAgICAgICAgICAgdGhpcywKKysgICAgICAgICAgICAgICAgW3RoaXMsIGFkZHJl c3NFbnZdIHsKKysgICAgICAgICAgICAgICAgICAgIG1fZW5hYmxlZCA9IHRydWU7CisrICAgICAg ICAgICAgICAgICAgICBjb25uZWN0QTExeUJ1cyhRU3RyaW5nOjpmcm9tTG9jYWw4Qml0KGFkZHJl c3NFbnYpKTsKKysgICAgICAgICAgICAgICAgfSwKKysgICAgICAgICAgICAgICAgUXQ6OlF1ZXVl ZENvbm5lY3Rpb24pOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisgICAgIC8vIFN0YXJ0 IG1vbml0b3JpbmcgaWYgIm9yZy5hMTF5LkJ1cyIgaXMgcmVnaXN0ZXJlZCBhcyBEQnVzIHNlcnZp Y2UuCisgICAgIFFEQnVzQ29ubmVjdGlvbiBjID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVz KCk7CisgICAgIGlmICghYy5pc0Nvbm5lY3RlZCgpKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2Vydmlj ZXMuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgv cWdlbmVyaWN1bml4c2VydmljZXMuY3BwCitpbmRleCAxYTNjYWIyNzVkLi4yYWJlMDM5MTI2IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3Vu aXgvcWdlbmVyaWN1bml4c2VydmljZXMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlcy5jcHAKK0BAIC01 MSw2ICs1MSw5IEBACisgI2luY2x1ZGUgPFF0Q29yZS9RU3RhbmRhcmRQYXRocz4KKyAjaW5jbHVk ZSA8UXRDb3JlL1FVcmw+CisgCisrI2luY2x1ZGUgPFF0R3VpL1FHdWlBcHBsaWNhdGlvbj4KKysj aW5jbHVkZSA8UXRHdWkvUVdpbmRvdz4KKysKKyAjaWYgUVRfQ09ORklHKGRidXMpCisgLy8gVGhl c2UgUXRDb3JlIGluY2x1ZGVzIGFyZSBuZWVkZWQgZm9yIHhkZy1kZXNrdG9wLXBvcnRhbCBzdXBw b3J0CisgI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3Fjb3JlX3VuaXhfcC5oPgorQEAgLTU4LDYg KzYxLDggQEAKKyAjaW5jbHVkZSA8UXRDb3JlL1FGaWxlSW5mbz4KKyAjaW5jbHVkZSA8UXRDb3Jl L1FVcmxRdWVyeT4KKyAKKysjaW5jbHVkZSA8UXRHdWkvUUNvbG9yPgorKworICNpbmNsdWRlIDxR dERCdXMvUURCdXNDb25uZWN0aW9uPgorICNpbmNsdWRlIDxRdERCdXMvUURCdXNNZXNzYWdlPgor ICNpbmNsdWRlIDxRdERCdXMvUURCdXNQZW5kaW5nQ2FsbD4KK0BAIC0xNDIsNiArMTQ3LDggQEAg c3RhdGljIGlubGluZSBib29sIGRldGVjdFdlYkJyb3dzZXIoY29uc3QgUUJ5dGVBcnJheSAmZGVz a3RvcCwKKyAgICAgfQorIAorICAgICBpZiAoZGVza3RvcCA9PSBRQnl0ZUFycmF5KCJLREUiKSkg eworKyAgICAgICAgaWYgKGNoZWNrRXhlY3V0YWJsZShRU3RyaW5nTGl0ZXJhbCgia2RlLW9wZW41 IiksIGJyb3dzZXIpKQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgLy8gS29u cXVlcm9yIGxhdW5jaGVyCisgICAgICAgICBpZiAoY2hlY2tFeGVjdXRhYmxlKFFTdHJpbmdMaXRl cmFsKCJrZm1jbGllbnQiKSwgYnJvd3NlcikpIHsKKyAgICAgICAgICAgICBicm93c2VyLT5hcHBl bmQoUUxhdGluMVN0cmluZygiIGV4ZWMiKSk7CitAQCAtMjk2LDggKzMwMywxMzUgQEAgc3RhdGlj IGlubGluZSBRREJ1c01lc3NhZ2UgeGRnRGVza3RvcFBvcnRhbFNlbmRFbWFpbChjb25zdCBRVXJs ICZ1cmwpCisgCisgICAgIHJldHVybiBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5jYWxs KG1lc3NhZ2UpOworIH0KKysKKytuYW1lc3BhY2UgeworK3N0cnVjdCBYREdEZXNrdG9wQ29sb3IK Kyt7CisrICAgIGRvdWJsZSByID0gMDsKKysgICAgZG91YmxlIGcgPSAwOworKyAgICBkb3VibGUg YiA9IDA7CisrCisrICAgIFFDb2xvciB0b1FDb2xvcigpIGNvbnN0CisrICAgIHsKKysgICAgICAg IGNvbnN0ZXhwciBhdXRvIHJnYk1heCA9IDI1NTsKKysgICAgICAgIHJldHVybiB7IHN0YXRpY19j YXN0PGludD4ociAqIHJnYk1heCksIHN0YXRpY19jYXN0PGludD4oZyAqIHJnYk1heCksCisrICAg ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGIgKiByZ2JNYXgpIH07CisrICAgIH0KKyt9 OworKworK2NvbnN0IFFEQnVzQXJndW1lbnQgJm9wZXJhdG9yPj4oY29uc3QgUURCdXNBcmd1bWVu dCAmYXJndW1lbnQsIFhER0Rlc2t0b3BDb2xvciAmbXlTdHJ1Y3QpCisreworKyAgICBhcmd1bWVu dC5iZWdpblN0cnVjdHVyZSgpOworKyAgICBhcmd1bWVudCA+PiBteVN0cnVjdC5yID4+IG15U3Ry dWN0LmcgPj4gbXlTdHJ1Y3QuYjsKKysgICAgYXJndW1lbnQuZW5kU3RydWN0dXJlKCk7CisrICAg IHJldHVybiBhcmd1bWVudDsKKyt9CisrCisrY2xhc3MgWGRnRGVza3RvcFBvcnRhbENvbG9yUGlj a2VyIDogcHVibGljIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlcgorK3sKKysgICAgUV9PQkpF Q1QKKytwdWJsaWM6CisrICAgIFhkZ0Rlc2t0b3BQb3J0YWxDb2xvclBpY2tlcihjb25zdCBRU3Ry aW5nICZwYXJlbnRXaW5kb3dJZCwgUVdpbmRvdyAqcGFyZW50KQorKyAgICAgICAgOiBRUGxhdGZv cm1TZXJ2aWNlQ29sb3JQaWNrZXIocGFyZW50KSwgbV9wYXJlbnRXaW5kb3dJZChwYXJlbnRXaW5k b3dJZCkKKysgICAgeworKyAgICB9CisrCisrICAgIHZvaWQgcGlja0NvbG9yKCkgb3ZlcnJpZGUK KysgICAgeworKyAgICAgICAgLy8gREJ1cyBzaWduYXR1cmU6CisrICAgICAgICAvLyBQaWNrQ29s b3IgKElOICAgcyAgICAgIHBhcmVudF93aW5kb3csCisrICAgICAgICAvLyAgICAgICAgICAgIElO ICAgYXtzdn0gIG9wdGlvbnMKKysgICAgICAgIC8vICAgICAgICAgICAgT1VUICBvICAgICAgaGFu ZGxlKQorKyAgICAgICAgLy8gT3B0aW9uczoKKysgICAgICAgIC8vIGhhbmRsZV90b2tlbiAocykg LSAgQSBzdHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUg QGhhbmRsZS4KKysKKysgICAgICAgIFFEQnVzTWVzc2FnZSBtZXNzYWdlID0gUURCdXNNZXNzYWdl OjpjcmVhdGVNZXRob2RDYWxsKAorKyAgICAgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3Jn LmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIiksIFFTdHJpbmdMaXRlcmFsKCIvb3JnL2ZyZWVk ZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiksCisrICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFs KCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLlNjcmVlbnNob3QiKSwgUVN0cmluZ0xpdGVyYWwoIlBp Y2tDb2xvciIpKTsKKysgICAgICAgIG1lc3NhZ2UgPDwgbV9wYXJlbnRXaW5kb3dJZCA8PCBRVmFy aWFudE1hcCgpOworKworKyAgICAgICAgUURCdXNQZW5kaW5nQ2FsbCBwZW5kaW5nQ2FsbCA9IFFE QnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmFzeW5jQ2FsbChtZXNzYWdlKTsKKysgICAgICAg IGF1dG8gd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcihwZW5kaW5nQ2FsbCwg dGhpcyk7CisrICAgICAgICBjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRpbmdDYWxsV2F0Y2hl cjo6ZmluaXNoZWQsIHRoaXMsCisrICAgICAgICAgICAgICAgIFt0aGlzXShRREJ1c1BlbmRpbmdD YWxsV2F0Y2hlciAqd2F0Y2hlcikgeworKyAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci0+ZGVs ZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAgICAgICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFEQnVz T2JqZWN0UGF0aD4gcmVwbHkgPSAqd2F0Y2hlcjsKKysgICAgICAgICAgICAgICAgICAgIGlmIChy ZXBseS5pc0Vycm9yKCkpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBxV2FybmluZygiREJ1 cyBjYWxsIHRvIHBpY2sgY29sb3IgZmFpbGVkOiAlcyIsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcVByaW50YWJsZShyZXBseS5lcnJvcigpLm1lc3NhZ2UoKSkpOworKyAgICAg ICAgICAgICAgICAgICAgICAgIFFfRU1JVCBjb2xvclBpY2tlZCh7fSk7CisrICAgICAgICAgICAg ICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAgICAgIFFEQnVzQ29ubmVjdGlv bjo6c2Vzc2lvbkJ1cygpLmNvbm5lY3QoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIiksIHJlcGx5 LnZhbHVlKCkucGF0aCgpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmlu Z0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuUmVxdWVzdCIpLCBRU3RyaW5nTGl0ZXJh bCgiUmVzcG9uc2UiKSwgdGhpcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IGNsYW5nLWZvcm1hdCBvZmYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNMT1Qo Z290Q29sb3JSZXNwb25zZSh1aW50LFFWYXJpYW50TWFwKSkKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorKyAgICAgICAgICAgICAgICAgICAgICAg ICk7CisrICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIH0pOworKyAgICB9 CisrCisrcHJpdmF0ZSBRX1NMT1RTOgorKyAgICB2b2lkIGdvdENvbG9yUmVzcG9uc2UodWludCBy ZXN1bHQsIGNvbnN0IFFWYXJpYW50TWFwICZtYXApCisrICAgIHsKKysgICAgICAgIGlmIChyZXN1 bHQgIT0gMCkKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICBYREdEZXNrdG9wQ29sb3Ig Y29sb3J7fTsKKysgICAgICAgIG1hcC52YWx1ZShRU3RyaW5nTGl0ZXJhbCgiY29sb3IiKSkudmFs dWU8UURCdXNBcmd1bWVudD4oKSA+PiBjb2xvcjsKKysgICAgICAgIFFfRU1JVCBjb2xvclBpY2tl ZChjb2xvci50b1FDb2xvcigpKTsKKysgICAgICAgIGRlbGV0ZUxhdGVyKCk7CisrICAgIH0KKysK Kytwcml2YXRlOgorKyAgICBjb25zdCBRU3RyaW5nIG1fcGFyZW50V2luZG93SWQ7CisrfTsKKyt9 IC8vIG5hbWVzcGFjZQorKworICNlbmRpZiAvLyBRVF9DT05GSUcoZGJ1cykKKyAKKytRR2VuZXJp Y1VuaXhTZXJ2aWNlczo6UUdlbmVyaWNVbml4U2VydmljZXMoKQorK3sKKysjaWYgUVRfQ09ORklH KGRidXMpCisrICAgIGlmIChxRW52aXJvbm1lbnRWYXJpYWJsZUludFZhbHVlKCJRVF9OT19YREdf REVTS1RPUF9QT1JUQUwiKSA+IDApIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKyAgICBR REJ1c01lc3NhZ2UgbWVzc2FnZSA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9kQ2FsbCgKKysg ICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9w IiksIFFTdHJpbmdMaXRlcmFsKCIvb3JnL2ZyZWVkZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiksCisr ICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5EQnVzLlByb3BlcnRp ZXMiKSwgUVN0cmluZ0xpdGVyYWwoIkdldCIpKTsKKysgICAgbWVzc2FnZSA8PCBRU3RyaW5nTGl0 ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TY3JlZW5zaG90IikKKysgICAgICAgICAgICA8 PCBRU3RyaW5nTGl0ZXJhbCgidmVyc2lvbiIpOworKworKyAgICBRREJ1c1BlbmRpbmdDYWxsIHBl bmRpbmdDYWxsID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1lc3Nh Z2UpOworKyAgICBhdXRvIHdhdGNoZXIgPSBuZXcgUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIocGVu ZGluZ0NhbGwpOworKyAgICBRT2JqZWN0Ojpjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRpbmdD YWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHdhdGNoZXIsCisrICAgICAgICAgICAgICAgICAgICAgW3Ro aXNdKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7CisrICAgICAgICAgICAgICAg ICAgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxhdGVyKCk7CisrICAgICAgICAgICAgICAgICAgICAg ICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFWYXJpYW50PiByZXBseSA9ICp3YXRjaGVyOworKyAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcGx5LmlzRXJyb3IoKSAmJiByZXBseS52YWx1ZSgp LnRvVUludCgpID49IDIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2hhc1NjcmVl bnNob3RQb3J0YWxXaXRoQ29sb3JQaWNraW5nID0gdHJ1ZTsKKysgICAgICAgICAgICAgICAgICAg ICB9KTsKKysKKysjZW5kaWYKKyt9CisrCisrUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpR R2VuZXJpY1VuaXhTZXJ2aWNlczo6Y29sb3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50KQorK3sKKysj aWYgUVRfQ09ORklHKGRidXMpCisrICAgIC8vIE1ha2UgZG91YmxlIHN1cmUgdGhhdCB3ZSBhcmUg aW4gYSB3YXlsYW5kIGVudmlyb25tZW50LiBJbiBwYXJ0aWN1bGFyIGNoZWNrCisrICAgIC8vIFdB WUxBTkRfRElTUExBWSBzbyBhbHNvIFhXYXlsYW5kIGFwcHMgYmVuZWZpdCBmcm9tIHBvcnRhbC1i YXNlZCBjb2xvciBwaWNraW5nLgorKyAgICAvLyBPdXRzaWRlIHdheWxhbmQgd2UnbGwgcmF0aGVy IHJlbHkgb24gb3RoZXIgbWVhbnMgdGhhbiB0aGUgWERHIGRlc2t0b3AgcG9ydGFsLgorKyAgICBp ZiAoIXFFbnZpcm9ubWVudFZhcmlhYmxlSXNFbXB0eSgiV0FZTEFORF9ESVNQTEFZIikKKysgICAg ICAgIHx8IFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1OYW1lKCkuc3RhcnRzV2l0aChRTGF0aW4x U3RyaW5nKCJ3YXlsYW5kIikpKSB7CisrICAgICAgICByZXR1cm4gbmV3IFhkZ0Rlc2t0b3BQb3J0 YWxDb2xvclBpY2tlcihwb3J0YWxXaW5kb3dJZGVudGlmaWVyKHBhcmVudCksIHBhcmVudCk7Cisr ICAgIH0KKysgICAgcmV0dXJuIG51bGxwdHI7CisrI2Vsc2UKKysgICAgUV9VTlVTRUQocGFyZW50 KTsKKysgICAgcmV0dXJuIG51bGxwdHI7CisrI2VuZGlmCisrfQorKworIFFCeXRlQXJyYXkgUUdl bmVyaWNVbml4U2VydmljZXM6OmRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0CisgeworICAgICBz dGF0aWMgY29uc3QgUUJ5dGVBcnJheSByZXN1bHQgPSBkZXRlY3REZXNrdG9wRW52aXJvbm1lbnQo KTsKK0BAIC0zNTIsNiArNDg2LDggQEAgYm9vbCBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6b3BlbkRv Y3VtZW50KGNvbnN0IFFVcmwgJnVybCkKKyB9CisgCisgI2Vsc2UKKytRR2VuZXJpY1VuaXhTZXJ2 aWNlczo6UUdlbmVyaWNVbml4U2VydmljZXMoKSA9IGRlZmF1bHQ7CisrCisgUUJ5dGVBcnJheSBR R2VuZXJpY1VuaXhTZXJ2aWNlczo6ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3QKKyB7CisgICAg IHJldHVybiBRQnl0ZUFycmF5TGl0ZXJhbCgiVU5LTk9XTiIpOworQEAgLTM3MSw2ICs1MDcsMzAg QEAgYm9vbCBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6b3BlbkRvY3VtZW50KGNvbnN0IFFVcmwgJnVy bCkKKyAgICAgcmV0dXJuIGZhbHNlOworIH0KKyAKKytRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNr ZXIgKlFHZW5lcmljVW5peFNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQpCisr eworKyAgICBRX1VOVVNFRChwYXJlbnQpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisg I2VuZGlmIC8vIFFUX05PX01VTFRJUFJPQ0VTUworIAorK1FTdHJpbmcgUUdlbmVyaWNVbml4U2Vy dmljZXM6OnBvcnRhbFdpbmRvd0lkZW50aWZpZXIoUVdpbmRvdyAqd2luZG93KQorK3sKKysgICAg aWYgKFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1OYW1lKCkgPT0gUUxhdGluMVN0cmluZygieGNi IikpCisrICAgICAgICByZXR1cm4gUVN0cmluZ0xpdGVyYWwoIngxMToiKSArIFFTdHJpbmc6Om51 bWJlcih3aW5kb3ctPndpbklkKCksIDE2KTsKKysgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyt9Cisr CisrYm9vbCBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6aGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNh cGFiaWxpdHkpIGNvbnN0CisreworKyAgICBzd2l0Y2ggKGNhcGFiaWxpdHkpIHsKKysgICAgY2Fz ZSBDYXBhYmlsaXR5OjpDb2xvclBpY2tpbmc6CisrICAgICAgICByZXR1cm4gbV9oYXNTY3JlZW5z aG90UG9ydGFsV2l0aENvbG9yUGlja2luZzsKKysgICAgfQorKyAgICByZXR1cm4gZmFsc2U7Cisr fQorKworIFFUX0VORF9OQU1FU1BBQ0UKKysKKysjaW5jbHVkZSAicWdlbmVyaWN1bml4c2Vydmlj ZXMubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2Vz L2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzX3AuaCBiL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzX3AuaAor aW5kZXggOGFjM2RlNmYwMy4uMzA5MjRlNjRiZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzX3Au aAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgv cWdlbmVyaWN1bml4c2VydmljZXNfcC5oCitAQCAtNTksMTYgKzU5LDIxIEBAIFFUX0JFR0lOX05B TUVTUEFDRQorIGNsYXNzIFFHZW5lcmljVW5peFNlcnZpY2VzIDogcHVibGljIFFQbGF0Zm9ybVNl cnZpY2VzCisgeworIHB1YmxpYzoKKy0gICAgUUdlbmVyaWNVbml4U2VydmljZXMoKSB7fQorKyAg ICBRR2VuZXJpY1VuaXhTZXJ2aWNlcygpOworIAorICAgICBRQnl0ZUFycmF5IGRlc2t0b3BFbnZp cm9ubWVudCgpIGNvbnN0IG92ZXJyaWRlOworIAorKyAgICBib29sIGhhc0NhcGFiaWxpdHkoQ2Fw YWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdCBvdmVycmlkZTsKKyAgICAgYm9vbCBvcGVuVXJsKGNv bnN0IFFVcmwgJnVybCkgb3ZlcnJpZGU7CisgICAgIGJvb2wgb3BlbkRvY3VtZW50KGNvbnN0IFFV cmwgJnVybCkgb3ZlcnJpZGU7CisrICAgIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqY29s b3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50ID0gbnVsbHB0cikgb3ZlcnJpZGU7CisrCisrICAgIHZp cnR1YWwgUVN0cmluZyBwb3J0YWxXaW5kb3dJZGVudGlmaWVyKFFXaW5kb3cgKndpbmRvdyk7Cisg CisgcHJpdmF0ZToKKyAgICAgUVN0cmluZyBtX3dlYkJyb3dzZXI7CisgICAgIFFTdHJpbmcgbV9k b2N1bWVudExhdW5jaGVyOworKyAgICBib29sIG1faGFzU2NyZWVuc2hvdFBvcnRhbFdpdGhDb2xv clBpY2tpbmcgPSBmYWxzZTsKKyB9OworIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUv cWRidXNtZW51Y29ubmVjdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVt ZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5jcHAKK2luZGV4IDA5 NDcwYmNjYzYuLmNjN2M3ZDRkOGEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5jcHAK KysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVz bWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAorQEAgLTY5LDYgKzY5LDcgQEAgY29uc3QgUVN0 cmluZyBNZW51QmFyUGF0aCA9IFFMYXRpbjFTdHJpbmcoIi9NZW51QmFyIik7CisgKi8KKyBRREJ1 c01lbnVDb25uZWN0aW9uOjpRREJ1c01lbnVDb25uZWN0aW9uKFFPYmplY3QgKnBhcmVudCwgY29u c3QgUVN0cmluZyAmc2VydmljZU5hbWUpCisgICAgIDogUU9iamVjdChwYXJlbnQpCisrICAgICwg bV9zZXJ2aWNlTmFtZShzZXJ2aWNlTmFtZSkKKyAgICAgLCBtX2Nvbm5lY3Rpb24oc2VydmljZU5h bWUuaXNOdWxsKCkgPyBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFFEQnVzQ29ubmVjdGlvbjo6Y29ubmVjdFRv QnVzKFFEQnVzQ29ubmVjdGlvbjo6U2Vzc2lvbkJ1cywgc2VydmljZU5hbWUpKQorICAgICAsIG1f ZGJ1c1dhdGNoZXIobmV3IFFEQnVzU2VydmljZVdhdGNoZXIoU3RhdHVzTm90aWZpZXJXYXRjaGVy U2VydmljZSwgbV9jb25uZWN0aW9uLCBRREJ1c1NlcnZpY2VXYXRjaGVyOjpXYXRjaEZvclJlZ2lz dHJhdGlvbiwgdGhpcykpCitAQCAtODMsNiArODQsMTIgQEAgUURCdXNNZW51Q29ubmVjdGlvbjo6 UURCdXNNZW51Q29ubmVjdGlvbihRT2JqZWN0ICpwYXJlbnQsIGNvbnN0IFFTdHJpbmcgJnNlcnZp Y2UKKyAjZW5kaWYKKyB9CisgCisrUURCdXNNZW51Q29ubmVjdGlvbjo6flFEQnVzTWVudUNvbm5l Y3Rpb24oKQorK3sKKysgIGlmICghbV9zZXJ2aWNlTmFtZS5pc0VtcHR5KCkgJiYgbV9jb25uZWN0 aW9uLmlzQ29ubmVjdGVkKCkpCisrICAgICAgUURCdXNDb25uZWN0aW9uOjpkaXNjb25uZWN0RnJv bUJ1cyhtX3NlcnZpY2VOYW1lKTsKKyt9CisrCisgdm9pZCBRREJ1c01lbnVDb25uZWN0aW9uOjpk YnVzRXJyb3IoY29uc3QgUURCdXNFcnJvciAmZXJyb3IpCisgeworICAgICBxV2FybmluZygpIDw8 ICJRREJ1c1RyYXlJY29uIGVuY291bnRlcmVkIGEgRC1CdXMgZXJyb3I6IiA8PCBlcnJvcjsKK0BA IC0xMDUsMTMgKzExMiw3IEBAIHZvaWQgUURCdXNNZW51Q29ubmVjdGlvbjo6dW5yZWdpc3RlclRy YXlJY29uTWVudShRREJ1c1RyYXlJY29uICppdGVtKQorIAorIGJvb2wgUURCdXNNZW51Q29ubmVj dGlvbjo6cmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQorIHsKKy0gICAgYm9v bCBzdWNjZXNzID0gY29ubmVjdGlvbigpLnJlZ2lzdGVyU2VydmljZShpdGVtLT5pbnN0YW5jZUlk KCkpOworLSAgICBpZiAoIXN1Y2Nlc3MpIHsKKy0gICAgICAgIHFXYXJuaW5nKCkgPDwgImZhaWxl ZCB0byByZWdpc3RlciBzZXJ2aWNlIiA8PCBpdGVtLT5pbnN0YW5jZUlkKCk7CistICAgICAgICBy ZXR1cm4gZmFsc2U7CistICAgIH0KKy0KKy0gICAgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS5yZWdp c3Rlck9iamVjdChTdGF0dXNOb3RpZmllckl0ZW1QYXRoLCBpdGVtKTsKKysgICAgYm9vbCBzdWNj ZXNzID0gY29ubmVjdGlvbigpLnJlZ2lzdGVyT2JqZWN0KFN0YXR1c05vdGlmaWVySXRlbVBhdGgs IGl0ZW0pOworICAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgIHVucmVnaXN0ZXJUcmF5SWNv bihpdGVtKTsKKyAgICAgICAgIHFXYXJuaW5nKCkgPDwgImZhaWxlZCB0byByZWdpc3RlciIgPDwg aXRlbS0+aW5zdGFuY2VJZCgpIDw8IFN0YXR1c05vdGlmaWVySXRlbVBhdGg7CitAQCAtMTI2LDIx ICsxMjcsMTggQEAgYm9vbCBRREJ1c01lbnVDb25uZWN0aW9uOjpyZWdpc3RlclRyYXlJY29uKFFE QnVzVHJheUljb24gKml0ZW0pCisgCisgYm9vbCBRREJ1c01lbnVDb25uZWN0aW9uOjpyZWdpc3Rl clRyYXlJY29uV2l0aFdhdGNoZXIoUURCdXNUcmF5SWNvbiAqaXRlbSkKKyB7CisrICAgIFFfVU5V U0VEKGl0ZW0pOworICAgICBRREJ1c01lc3NhZ2UgcmVnaXN0ZXJNZXRob2QgPSBRREJ1c01lc3Nh Z2U6OmNyZWF0ZU1ldGhvZENhbGwoCisgICAgICAgICAgICAgICAgIFN0YXR1c05vdGlmaWVyV2F0 Y2hlclNlcnZpY2UsIFN0YXR1c05vdGlmaWVyV2F0Y2hlclBhdGgsIFN0YXR1c05vdGlmaWVyV2F0 Y2hlclNlcnZpY2UsCisgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlJlZ2lzdGVyU3Rh dHVzTm90aWZpZXJJdGVtIikpOworLSAgICByZWdpc3Rlck1ldGhvZC5zZXRBcmd1bWVudHMoUVZh cmlhbnRMaXN0KCkgPDwgaXRlbS0+aW5zdGFuY2VJZCgpKTsKKysgICAgcmVnaXN0ZXJNZXRob2Qu c2V0QXJndW1lbnRzKFFWYXJpYW50TGlzdCgpIDw8IG1fY29ubmVjdGlvbi5iYXNlU2VydmljZSgp KTsKKyAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5jYWxsV2l0aENhbGxiYWNrKHJlZ2lzdGVyTWV0 aG9kLCB0aGlzLCBTSUdOQUwodHJheUljb25SZWdpc3RlcmVkKCkpLCBTTE9UKGRidXNFcnJvcihR REJ1c0Vycm9yKSkpOworIH0KKyAKKy1ib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnVucmVnaXN0 ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQorK3ZvaWQgUURCdXNNZW51Q29ubmVjdGlv bjo6dW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisgeworICAgICB1bnJl Z2lzdGVyVHJheUljb25NZW51KGl0ZW0pOworICAgICBjb25uZWN0aW9uKCkudW5yZWdpc3Rlck9i amVjdChTdGF0dXNOb3RpZmllckl0ZW1QYXRoKTsKKy0gICAgYm9vbCBzdWNjZXNzID0gY29ubmVj dGlvbigpLnVucmVnaXN0ZXJTZXJ2aWNlKGl0ZW0tPmluc3RhbmNlSWQoKSk7CistICAgIGlmICgh c3VjY2VzcykKKy0gICAgICAgIHFXYXJuaW5nKCkgPDwgImZhaWxlZCB0byB1bnJlZ2lzdGVyIHNl cnZpY2UiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKTsKKy0gICAgcmV0dXJuIHN1Y2Nlc3M7CisgfQor ICNlbmRpZiAvLyBRVF9OT19TWVNURU1UUkFZSUNPTgorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVj b25uZWN0aW9uX3AuaCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmlj dW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaAoraW5kZXggZjQ4NDc5NWZiYi4u OTdiZGZhYmI4NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1l cy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaAorKysrIGIvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVz bWVudWNvbm5lY3Rpb25fcC5oCitAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBRREJ1c01lbnVDb25u ZWN0aW9uIDogcHVibGljIFFPYmplY3QKKyAKKyBwdWJsaWM6CisgICAgIFFEQnVzTWVudUNvbm5l Y3Rpb24oUU9iamVjdCAqcGFyZW50ID0gbnVsbHB0ciwgY29uc3QgUVN0cmluZyAmc2VydmljZU5h bWUgPSBRU3RyaW5nKCkpOworKyAgICB+UURCdXNNZW51Q29ubmVjdGlvbigpOworICAgICBRREJ1 c0Nvbm5lY3Rpb24gY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQor ICAgICBRREJ1c1NlcnZpY2VXYXRjaGVyICpkYnVzV2F0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1f ZGJ1c1dhdGNoZXI7IH0KKyAgICAgYm9vbCBpc1N0YXR1c05vdGlmaWVySG9zdFJlZ2lzdGVyZWQo KSBjb25zdCB7IHJldHVybiBtX3N0YXR1c05vdGlmaWVySG9zdFJlZ2lzdGVyZWQ7IH0KK0BAIC03 OCw3ICs3OSw3IEBAIHB1YmxpYzoKKyAgICAgdm9pZCB1bnJlZ2lzdGVyVHJheUljb25NZW51KFFE QnVzVHJheUljb24gKml0ZW0pOworICAgICBib29sIHJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5 SWNvbiAqaXRlbSk7CisgICAgIGJvb2wgcmVnaXN0ZXJUcmF5SWNvbldpdGhXYXRjaGVyKFFEQnVz VHJheUljb24gKml0ZW0pOworLSAgICBib29sIHVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJ Y29uICppdGVtKTsKKysgICAgdm9pZCB1bnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAq aXRlbSk7CisgI2VuZGlmIC8vIFFUX05PX1NZU1RFTVRSQVlJQ09OCisgCisgUV9TSUdOQUxTOgor QEAgLTkwLDYgKzkxLDcgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIGRidXNFcnJvcihj b25zdCBRREJ1c0Vycm9yICZlcnJvcik7CisgCisgcHJpdmF0ZToKKysgICAgUVN0cmluZyBtX3Nl cnZpY2VOYW1lOworICAgICBRREJ1c0Nvbm5lY3Rpb24gbV9jb25uZWN0aW9uOworICAgICBRREJ1 c1NlcnZpY2VXYXRjaGVyICptX2RidXNXYXRjaGVyOworICAgICBib29sIG1fc3RhdHVzTm90aWZp ZXJIb3N0UmVnaXN0ZXJlZDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9y dC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0cmF5aWNvbi5jcHAgYi9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0cmF5 aWNvbi5jcHAKK2luZGV4IGJlZGU3MDk3NWEuLjc2YmZlYzVlNWEgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0 cmF5aWNvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5l cmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcAorQEAgLTcxLDggKzcxLDEyIEBAIFFf TE9HR0lOR19DQVRFR09SWShxTGNUcmF5LCAicXQucXBhLnRyYXkiKQorIHN0YXRpYyBRU3RyaW5n IGljb25UZW1wUGF0aCgpCisgeworICAgICBRU3RyaW5nIHRlbXBQYXRoID0gUVN0YW5kYXJkUGF0 aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJkUGF0aHM6OlJ1bnRpbWVMb2NhdGlvbik7Cist ICAgIGlmICghdGVtcFBhdGguaXNFbXB0eSgpKQorKyAgICBpZiAoIXRlbXBQYXRoLmlzRW1wdHko KSkgeworKyAgICAgICAgUVN0cmluZyBmbGF0cGFrSWQgPSBxRW52aXJvbm1lbnRWYXJpYWJsZSgi RkxBVFBBS19JRCIpOworKyAgICAgICAgaWYgKCFmbGF0cGFrSWQuaXNFbXB0eSgpICYmIFFGaWxl SW5mbzo6ZXhpc3RzKFFMYXRpbjFTdHJpbmcoIi8uZmxhdHBhay1pbmZvIikpKQorKyAgICAgICAg ICAgIHRlbXBQYXRoICs9IFFMYXRpbjFTdHJpbmcoIi9hcHAvIikgKyBmbGF0cGFrSWQ7CisgICAg ICAgICByZXR1cm4gdGVtcFBhdGg7CisrICAgIH0KKyAKKyAgICAgdGVtcFBhdGggPSBRU3RhbmRh cmRQYXRoczo6d3JpdGFibGVMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6R2VuZXJpY0NhY2hlTG9j YXRpb24pOworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1l cy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9y bXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHRoZW1lcy5jcHAKK2luZGV4 IGNiMWIzOWRiNjQuLjZlMDFhZjA1MmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNwcAorKysrIGIv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5p eHRoZW1lcy5jcHAKK0BAIC03NTUsNiArNzU1LDkgQEAgUVZhcmlhbnQgUUdub21lVGhlbWU6OnRo ZW1lSGludChRUGxhdGZvcm1UaGVtZTo6VGhlbWVIaW50IGhpbnQpIGNvbnN0CisgICAgICAgICBy ZXR1cm4gUVZhcmlhbnQoUUNoYXIoMHgyMDIyKSk7CisgICAgIGNhc2UgUVBsYXRmb3JtVGhlbWU6 OlVpRWZmZWN0czoKKyAgICAgICAgIHJldHVybiBRVmFyaWFudChpbnQoSG92ZXJFZmZlY3QpKTsK KysgICAgY2FzZSBRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzOgorKyAgICAgICAgcmV0 dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWUoCisrICAgICAgICAgICAgICAgIFFMaXN0PFF0OjpLZXk+ KHsgUXQ6OktleV9TcGFjZSwgUXQ6OktleV9SZXR1cm4sIFF0OjpLZXlfRW50ZXIsIFF0OjpLZXlf U2VsZWN0IH0pKTsKKyAgICAgZGVmYXVsdDoKKyAgICAgICAgIGJyZWFrOworICAgICB9CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkvcWVnbGZzY3Vy c29yLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1 cnNvci5jcHAKK2luZGV4IDk4ZTA1MTk1ZWUuLjFlOTJmNDNkZWMgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3IuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3IuY3Bw CitAQCAtMzQzLDggKzM0Myw3IEBAIHZvaWQgUUVnbEZTQ3Vyc29yOjpwYWludE9uU2NyZWVuKCkK KyAgICAgLy8gc2NyZWVucyBhcmUgc2libGluZ3Mgb2YgZWFjaCBvdGhlci4gV2hlbiBub3QgZW5h YmxlZCwgdGhlIHNpYmxpbmcgbGlzdAorICAgICAvLyBvbmx5IGNvbnRhaW5zIG1fc2NyZWVuIGl0 c2VsZi4KKyAgICAgZm9yIChRUGxhdGZvcm1TY3JlZW4gKnNjcmVlbiA6IG1fc2NyZWVuLT52aXJ0 dWFsU2libGluZ3MoKSkgeworLSAgICAgICAgaWYgKHNjcmVlbi0+Z2VvbWV0cnkoKS5jb250YWlu cyhjci50b3BMZWZ0KCkudG9Qb2ludCgpICsgbV9jdXJzb3IuaG90U3BvdCkKKy0gICAgICAgICAg ICAmJiBRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRleHQoKS0+c2NyZWVuKCkgPT0gc2NyZWVu LT5zY3JlZW4oKSkKKysgICAgICAgIGlmIChzY3JlZW4tPmdlb21ldHJ5KCkuY29udGFpbnMoY3Iu dG9wTGVmdCgpLnRvUG9pbnQoKSArIG1fY3Vyc29yLmhvdFNwb3QpKQorICAgICAgICAgeworICAg ICAgICAgICAgIGNyLnRyYW5zbGF0ZSgtc2NyZWVuLT5nZW9tZXRyeSgpLnRvcExlZnQoKSk7Cisg ICAgICAgICAgICAgY29uc3QgUVNpemUgc2NyZWVuU2l6ZSA9IHNjcmVlbi0+Z2VvbWV0cnkoKS5z aXplKCk7CitAQCAtNDY4LDExICs0NjcsMTIgQEAgdm9pZCBRRWdsRlNDdXJzb3I6OmRyYXcoY29u c3QgUVJlY3RGICZyKQorIHsKKyAgICAgU3RhdGVTYXZlciBzdGF0ZVNhdmVyOworIAorLSAgICBR RWdsRlNDdXJzb3JEYXRhICZnZnggPSBzdGF0aWNfY2FzdDxRRWdsRlNDb250ZXh0Kj4oUU9wZW5H TENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCktPmhhbmRsZSgpKS0+Y3Vyc29yRGF0YTsKKy0gICAg aWYgKCFnZngucHJvZ3JhbSkgeworLSAgICAgICAgLy8gb25lIHRpbWUgaW5pdGlhbGl6YXRpb24K KysgICAgLy8gb25lIHRpbWUgaW5pdGlhbGl6YXRpb24KKysgICAgaWYgKCFRT3BlbkdMRnVuY3Rp b25zOjpkX3B0cikKKyAgICAgICAgIGluaXRpYWxpemVPcGVuR0xGdW5jdGlvbnMoKTsKKyAKKysg ICAgUUVnbEZTQ3Vyc29yRGF0YSAmZ2Z4ID0gc3RhdGljX2Nhc3Q8UUVnbEZTQ29udGV4dCo+KFFP cGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5oYW5kbGUoKSktPmN1cnNvckRhdGE7Cisr ICAgIGlmICghZ2Z4LnByb2dyYW0pIHsKKyAgICAgICAgIGNyZWF0ZVNoYWRlclByb2dyYW1zKCk7 CisgCisgICAgICAgICBpZiAoIWdmeC5hdGxhc1RleHR1cmUpIHsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0aW9uL2VnbGZzX2tt c19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21zX3N1cHBvcnQvcWVnbGZz a21zZXZlbnRyZWFkZXIuY3BwCitpbmRleCA2NDVhMGFlMmU5Li4zZTBlNDA2ZjFhIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlv bi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVudHJlYWRlci5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21z X3N1cHBvcnQvcWVnbGZza21zZXZlbnRyZWFkZXIuY3BwCitAQCAtMTc5LDcgKzE3OSw3IEBAIHZv aWQgUUVnbEZTS21zRXZlbnRSZWFkZXI6OmNyZWF0ZShRRWdsRlNLbXNEZXZpY2UgKmRldmljZSkK KyAKKyAgICAgbV9kZXZpY2UgPSBkZXZpY2U7CisgCistICAgIHFDRGVidWcocUxjRWdsZnNLbXNE ZWJ1ZywgIkluaXRhbGl6aW5nIGV2ZW50IHJlYWRlciBmb3IgZGV2aWNlICVwIGZkICVkIiwKKysg ICAgcUNEZWJ1ZyhxTGNFZ2xmc0ttc0RlYnVnLCAiSW5pdGlhbGl6aW5nIGV2ZW50IHJlYWRlciBm b3IgZGV2aWNlICVwIGZkICVkIiwKKyAgICAgICAgICAgICBtX2RldmljZSwgbV9kZXZpY2UtPmZk KCkpOworIAorICAgICBtX3RocmVhZCA9IG5ldyBRRWdsRlNLbXNFdmVudFJlYWRlclRocmVhZCht X2RldmljZS0+ZmQoKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAKK2luZGV4IDE0 MWZiNjhhMjMuLmQ0Mjk0ZDQyNWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uY3BwCisrKysgYi9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uY3Bw CitAQCAtMTIyLDExICsxMjIsMTMgQEAgUU9mZnNjcmVlbkludGVncmF0aW9uOjpRT2Zmc2NyZWVu SW50ZWdyYXRpb24oKQorICNlbmRpZgorICAgICBtX3NlcnZpY2VzLnJlc2V0KG5ldyBRUGxhdGZv cm1TZXJ2aWNlcyk7CisgCistICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVNjcmVl bkFkZGVkKG5ldyBRT2Zmc2NyZWVuU2NyZWVuKTsKKysgICAgbV9zY3JlZW4gPSBuZXcgUU9mZnNj cmVlblNjcmVlbjsKKysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlU2NyZWVuQWRk ZWQobV9zY3JlZW4pOworIH0KKyAKKyBRT2Zmc2NyZWVuSW50ZWdyYXRpb246On5RT2Zmc2NyZWVu SW50ZWdyYXRpb24oKQorIHsKKysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlU2Ny ZWVuUmVtb3ZlZChtX3NjcmVlbik7CisgfQorIAorIHZvaWQgUU9mZnNjcmVlbkludGVncmF0aW9u Ojppbml0aWFsaXplKCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5oCitpbmRleCAwZWE5MGY2 YzJmLi5mZTAwZmRlMDdjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5oCitAQCAtODQs NiArODQsNyBAQCBwcm90ZWN0ZWQ6CisgI2VuZGlmCisgICAgIFFTY29wZWRQb2ludGVyPFFQbGF0 Zm9ybUlucHV0Q29udGV4dD4gbV9pbnB1dENvbnRleHQ7CisgICAgIFFTY29wZWRQb2ludGVyPFFQ bGF0Zm9ybVNlcnZpY2VzPiBtX3NlcnZpY2VzOworKyAgICBRUGxhdGZvcm1TY3JlZW4gKm1fc2Ny ZWVuOworICAgICBtdXRhYmxlIFFTY29wZWRQb2ludGVyPFFQbGF0Zm9ybU5hdGl2ZUludGVyZmFj ZT4gbV9uYXRpdmVJbnRlcmZhY2U7CisgfTsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3BwIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcAoraW5kZXgg NmZhNWE4YTJiMy4uMWY0OWYwYWVmZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAKKysrKyBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAKK0BAIC00OCw2 ICs0OCw3IEBACisgI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1uYXRpdmVpbnRlcmZhY2UuaD4KKyAj aW5jbHVkZSA8UXRQbGF0Zm9ybUhlYWRlcnMvcXdnbG5hdGl2ZWNvbnRleHQuaD4KKyAKKysjaW5j bHVkZSA8cHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmg+CisgI2luY2x1ZGUgPGFsZ29yaXRobT4K KyAKKyAjaW5jbHVkZSA8d2luZ2RpLmg+CitAQCAtMTYyLDE5ICsxNjMsMjUgQEAgUUZ1bmN0aW9u UG9pbnRlciBRV2luZG93c09wZW5nbDMyRExMOjpyZXNvbHZlKGNvbnN0IGNoYXIgKm5hbWUpCisg CisgYm9vbCBRV2luZG93c09wZW5nbDMyRExMOjppbml0KGJvb2wgc29mdHdhcmVSZW5kZXJpbmcp CisgeworLSAgICBjb25zdCBRQnl0ZUFycmF5IG9wZW5nbDMyID0gUUJ5dGVBcnJheUxpdGVyYWwo Im9wZW5nbDMyLmRsbCIpOworLSAgICBjb25zdCBRQnl0ZUFycmF5IHN3b3BlbmdsID0gUUJ5dGVB cnJheUxpdGVyYWwoIm9wZW5nbDMyc3cuZGxsIik7CisrICAgIGNvbnN0IFFCeXRlQXJyYXkgb3Bl bmdsMzIgPSBRQnl0ZUFycmF5TGl0ZXJhbCgib3BlbmdsMzIiKTsKKysgICAgY29uc3QgUUJ5dGVB cnJheSBzd29wZW5nbCA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMnN3Iik7CisrICAgIGJv b2wgdXNlU3lzdGVtTGliID0gZmFsc2U7CisgCisgICAgIFFCeXRlQXJyYXkgb3BlbmdsRGxsID0g cWdldGVudigiUVRfT1BFTkdMX0RMTCIpOworLSAgICBpZiAob3BlbmdsRGxsLmlzRW1wdHkoKSkK KysgICAgaWYgKG9wZW5nbERsbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgIG9wZW5nbERsbCA9IHNv ZnR3YXJlUmVuZGVyaW5nID8gc3dvcGVuZ2wgOiBvcGVuZ2wzMjsKKysgICAgICAgIHVzZVN5c3Rl bUxpYiA9ICFzb2Z0d2FyZVJlbmRlcmluZzsKKysgICAgfQorIAorICAgICBvcGVuZ2xEbGwgPSBv cGVuZ2xEbGwudG9Mb3dlcigpOworICAgICBtX25vbk9wZW5nbDMyID0gb3BlbmdsRGxsICE9IG9w ZW5nbDMyOworIAorICAgICBxQ0RlYnVnKGxjUXBhR2wpIDw8ICJRdDogVXNpbmcgV0dMIGFuZCBP cGVuR0wgZnJvbSIgPDwgb3BlbmdsRGxsOworIAorLSAgICBtX2xpYiA9IDo6TG9hZExpYnJhcnlB KG9wZW5nbERsbC5jb25zdERhdGEoKSk7CisrICAgIGlmICh1c2VTeXN0ZW1MaWIpCisrICAgICAg ICBtX2xpYiA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKCh3Y2hhcl90KikoUVN0cmluZzo6ZnJvbUxh dGluMShvcGVuZ2xEbGwpLnV0ZjE2KCkpKTsKKysgICAgZWxzZQorKyAgICAgICAgbV9saWIgPSBM b2FkTGlicmFyeUEob3BlbmdsRGxsLmNvbnN0RGF0YSgpKTsKKyAgICAgaWYgKCFtX2xpYikgewor ICAgICAgICAgcUVycm5vV2FybmluZyg6OkdldExhc3RFcnJvcigpLCAiRmFpbGVkIHRvIGxvYWQg JXMiLCBvcGVuZ2xEbGwuY29uc3REYXRhKCkpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAg LTE4NCw3ICsxOTEsNyBAQCBib29sIFFXaW5kb3dzT3BlbmdsMzJETEw6OmluaXQoYm9vbCBzb2Z0 d2FyZVJlbmRlcmluZykKKyAgICAgICAgIC8vIExvYWQgb3BlbmdsMzIuZGxsIGFsd2F5cy4gR0RJ IGZ1bmN0aW9ucyBsaWtlIENob29zZVBpeGVsRm9ybWF0IGRvCisgICAgICAgICAvLyBHZXRNb2R1 bGVIYW5kbGUgZm9yIG9wZW5nbDMyLmRsbCBhbmQgYmVoYXZlIGRpZmZlcmVudGx5IChhbmQgY2Fs bCBiYWNrIGludG8KKyAgICAgICAgIC8vIG9wZW5nbDMyKSB3aGVuIHRoZSBtb2R1bGUgaXMgcHJl c2VudC4gVGhpcyBpcyBmaW5lIGZvciBkdW1teSBjb250ZXh0cyBhbmQgd2luZG93cy4KKy0gICAg ICAgIDo6TG9hZExpYnJhcnlBKCJvcGVuZ2wzMi5kbGwiKTsKKysgICAgICAgIFFTeXN0ZW1MaWJy YXJ5Ojpsb2FkKEwib3BlbmdsMzIiKTsKKyAgICAgfQorIAorICAgICB3Z2xDcmVhdGVDb250ZXh0 ID0gcmVpbnRlcnByZXRfY2FzdDxIR0xSQyAoV0lOQVBJICopKEhEQyk+KHJlc29sdmUoIndnbENy ZWF0ZUNvbnRleHQiKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy93aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVyLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAKK2luZGV4IGQ3ZDE4NmU4 MDQuLjllYjQwMTFiZjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwCitAQCAtNDksNiAr NDksNyBAQAorICNpbmNsdWRlIDxRdENvcmUvcXN0YW5kYXJkcGF0aHMuaD4KKyAjaW5jbHVkZSA8 UXRDb3JlL3FsaWJyYXJ5aW5mby5oPgorICNpbmNsdWRlIDxRdENvcmUvcWhhc2guaD4KKysjaW5j bHVkZSA8cHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmg+CisgCisgI2lmbmRlZiBRVF9OT19PUEVO R0wKKyAjaW5jbHVkZSA8cHJpdmF0ZS9xb3BlbmdsX3AuaD4KK0BAIC0zOTYsNyArMzk3LDcgQEAg Ym9vbCBRV2luZG93c09wZW5HTFRlc3Rlcjo6dGVzdERlc2t0b3BHTCgpCisgCisgICAgIC8vIFRl c3QgIzE6IExvYWQgb3BlbmdsMzIuZGxsIGFuZCB0cnkgdG8gcmVzb2x2ZSBhbiBPcGVuR0wgMiBm dW5jdGlvbi4KKyAgICAgLy8gVGhpcyB3aWxsIHR5cGljYWxseSBmYWlsIG9uIHN5c3RlbXMgdGhh dCBkbyBub3QgaGF2ZSBhIHJlYWwgT3BlbkdMIGRyaXZlci4KKy0gICAgbGliID0gTG9hZExpYnJh cnlBKCJvcGVuZ2wzMi5kbGwiKTsKKysgICAgbGliID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJv cGVuZ2wzMiIpOworICAgICBpZiAobGliKSB7CisgICAgICAgICBDcmVhdGVDb250ZXh0ID0gcmVp bnRlcnByZXRfY2FzdDxDcmVhdGVDb250ZXh0VHlwZT4oCisgICAgICAgICAgICAgcmVpbnRlcnBy ZXRfY2FzdDxRRnVuY3Rpb25Qb2ludGVyPig6OkdldFByb2NBZGRyZXNzKGxpYiwgIndnbENyZWF0 ZUNvbnRleHQiKSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv eGNiL25hdGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwCitpbmRleCAxYWZh MDBjZmM5Li4xMThhZjZjZTczIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNwcAor QEAgLTQxLDYgKzQxLDcgQEAKKyAKKyAjaW5jbHVkZSA8UVJlY3Q+CisgI2luY2x1ZGUgPFFMaXN0 PgorKyNpbmNsdWRlIDxRTWFwPgorICNpbmNsdWRlIDxRRGVidWc+CisgCisgI2luY2x1ZGUgPHFt YXRoLmg+CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhj YmNvbm5lY3Rpb24uY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmNv bm5lY3Rpb24uY3BwCitpbmRleCA5ZTJhMzdhNmExLi5lNmUxNzVhMTE4IDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmNvbm5lY3Rpb24uY3BwCisrKysg Yi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5jcHAKK0BA IC00ODgsMTIgKzQ4OCwxMiBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpwcmludFhjYkVycm9yKGNv bnN0IGNoYXIgKm1lc3NhZ2UsIHhjYl9nZW5lcmljX2Vycm9yX3QgKmVycgorICAgICB1aW50IGNs YW1wZWRfZXJyb3JfY29kZSA9IHFNaW48dWludD4oZXJyb3ItPmVycm9yX2NvZGUsIChzaXplb2Yo eGNiX2Vycm9ycykgLyBzaXplb2YoeGNiX2Vycm9yc1swXSkpIC0gMSk7CisgICAgIHVpbnQgY2xh bXBlZF9tYWpvcl9jb2RlID0gcU1pbjx1aW50PihlcnJvci0+bWFqb3JfY29kZSwgKHNpemVvZih4 Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2RlcykgLyBzaXplb2YoeGNiX3Byb3RvY29sX3JlcXVlc3Rf Y29kZXNbMF0pKSAtIDEpOworIAorLSAgICBxQ1dhcm5pbmcobGNRcGFYY2IsICIlczogJWQgKCVz KSwgc2VxdWVuY2U6ICVkLCByZXNvdXJjZSBpZDogJWQsIG1ham9yIGNvZGU6ICVkICglcyksIG1p bm9yIGNvZGU6ICVkIiwKKy0gICAgICAgICAgICAgbWVzc2FnZSwKKy0gICAgICAgICAgICAgaW50 KGVycm9yLT5lcnJvcl9jb2RlKSwgeGNiX2Vycm9yc1tjbGFtcGVkX2Vycm9yX2NvZGVdLAorLSAg ICAgICAgICAgICBpbnQoZXJyb3ItPnNlcXVlbmNlKSwgaW50KGVycm9yLT5yZXNvdXJjZV9pZCks CistICAgICAgICAgICAgIGludChlcnJvci0+bWFqb3JfY29kZSksIHhjYl9wcm90b2NvbF9yZXF1 ZXN0X2NvZGVzW2NsYW1wZWRfbWFqb3JfY29kZV0sCistICAgICAgICAgICAgIGludChlcnJvci0+ bWlub3JfY29kZSkpOworKyAgICBxQ0RlYnVnKGxjUXBhWGNiLCAiJXM6ICVkICglcyksIHNlcXVl bmNlOiAlZCwgcmVzb3VyY2UgaWQ6ICVkLCBtYWpvciBjb2RlOiAlZCAoJXMpLCBtaW5vciBjb2Rl OiAlZCIsCisrICAgICAgICAgICAgbWVzc2FnZSwKKysgICAgICAgICAgICBpbnQoZXJyb3ItPmVy cm9yX2NvZGUpLCB4Y2JfZXJyb3JzW2NsYW1wZWRfZXJyb3JfY29kZV0sCisrICAgICAgICAgICAg aW50KGVycm9yLT5zZXF1ZW5jZSksIGludChlcnJvci0+cmVzb3VyY2VfaWQpLAorKyAgICAgICAg ICAgIGludChlcnJvci0+bWFqb3JfY29kZSksIHhjYl9wcm90b2NvbF9yZXF1ZXN0X2NvZGVzW2Ns YW1wZWRfbWFqb3JfY29kZV0sCisrICAgICAgICAgICAgaW50KGVycm9yLT5taW5vcl9jb2RlKSk7 CisgfQorIAorIHN0YXRpYyBRdDo6TW91c2VCdXR0b25zIHRyYW5zbGF0ZU1vdXNlQnV0dG9ucyhp bnQgcykKK0BAIC03MDIsNiArNzAyLDggQEAgdm9pZCBRWGNiQ29ubmVjdGlvbjo6aGFuZGxlWGNi RXZlbnQoeGNiX2dlbmVyaWNfZXZlbnRfdCAqZXZlbnQpCisgICAgICAgICAgICAgUVhjYlZpcnR1 YWxEZXNrdG9wICp2aXJ0dWFsRGVza3RvcCA9IHZpcnR1YWxEZXNrdG9wRm9yUm9vdFdpbmRvdyhw cm9wZXJ0eU5vdGlmeS0+d2luZG93KTsKKyAgICAgICAgICAgICBpZiAodmlydHVhbERlc2t0b3Ap CisgICAgICAgICAgICAgICAgIHZpcnR1YWxEZXNrdG9wLT51cGRhdGVXb3JrQXJlYSgpOworKyAg ICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eU5vdGlmeS0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpf TkVUX1NVUFBPUlRFRCkpIHsKKysgICAgICAgICAgICBtX3dtU3VwcG9ydC0+dXBkYXRlTmV0V01B dG9tcygpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBIQU5ETEVfUExBVEZPUk1f V0lORE9XX0VWRU5UKHhjYl9wcm9wZXJ0eV9ub3RpZnlfZXZlbnRfdCwgd2luZG93LCBoYW5kbGVQ cm9wZXJ0eU5vdGlmeUV2ZW50KTsKKyAgICAgICAgIH0KK0BAIC03NTAsNyArNzUyLDcgQEAgdm9p ZCBRWGNiQ29ubmVjdGlvbjo6aGFuZGxlWGNiRXZlbnQoeGNiX2dlbmVyaWNfZXZlbnRfdCAqZXZl bnQpCisgICAgICAgICAgICAgICAgIGNhc2UgWENCX1hLQl9ORVdfS0VZQk9BUkRfTk9USUZZOiB7 CisgICAgICAgICAgICAgICAgICAgICB4Y2JfeGtiX25ld19rZXlib2FyZF9ub3RpZnlfZXZlbnRf dCAqZXYgPSAmeGtiX2V2ZW50LT5uZXdfa2V5Ym9hcmRfbm90aWZ5OworICAgICAgICAgICAgICAg ICAgICAgaWYgKGV2LT5jaGFuZ2VkICYgWENCX1hLQl9OS05fREVUQUlMX0tFWUNPREVTKQorLSAg ICAgICAgICAgICAgICAgICAgICAgIG1fa2V5Ym9hcmQtPnVwZGF0ZUtleW1hcChldik7CisrICAg ICAgICAgICAgICAgICAgICAgICAgbV9rZXlib2FyZC0+dXBkYXRlS2V5bWFwKCk7CisgICAgICAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICBkZWZhdWx0OgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNi L3F4Y2JpbnRlZ3JhdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9x eGNiaW50ZWdyYXRpb24uY3BwCitpbmRleCA3Njg2OWNlZDYwLi4wMmQyZWViYjU2IDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVncmF0aW9uLmNw cAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVncmF0aW9u LmNwcAorQEAgLTI3NCw4ICsyNzQsNyBAQCBRUGxhdGZvcm1XaW5kb3cgKlFYY2JJbnRlZ3JhdGlv bjo6Y3JlYXRlRm9yZWlnbldpbmRvdyhRV2luZG93ICp3aW5kb3csIFdJZCBuYXRpdgorICNpZm5k ZWYgUVRfTk9fT1BFTkdMCisgUVBsYXRmb3JtT3BlbkdMQ29udGV4dCAqUVhjYkludGVncmF0aW9u OjpjcmVhdGVQbGF0Zm9ybU9wZW5HTENvbnRleHQoUU9wZW5HTENvbnRleHQgKmNvbnRleHQpIGNv bnN0CisgeworLSAgICBRWGNiU2NyZWVuICpzY3JlZW4gPSBzdGF0aWNfY2FzdDxRWGNiU2NyZWVu ICo+KGNvbnRleHQtPnNjcmVlbigpLT5oYW5kbGUoKSk7CistICAgIFFYY2JHbEludGVncmF0aW9u ICpnbEludGVncmF0aW9uID0gc2NyZWVuLT5jb25uZWN0aW9uKCktPmdsSW50ZWdyYXRpb24oKTsK KysgICAgUVhjYkdsSW50ZWdyYXRpb24gKmdsSW50ZWdyYXRpb24gPSBkZWZhdWx0Q29ubmVjdGlv bigpLT5nbEludGVncmF0aW9uKCk7CisgICAgIGlmICghZ2xJbnRlZ3JhdGlvbikgeworICAgICAg ICAgcVdhcm5pbmcoIlFYY2JJbnRlZ3JhdGlvbjogQ2Fubm90IGNyZWF0ZSBwbGF0Zm9ybSBPcGVu R0wgY29udGV4dCwgbmVpdGhlciBHTFggbm9yIEVHTCBhcmUgZW5hYmxlZCIpOworICAgICAgICAg cmV0dXJuIG51bGxwdHI7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy94Y2IvcXhjYmtleWJvYXJkLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNi L3F4Y2JrZXlib2FyZC5jcHAKK2luZGV4IGVmZWNkN2UyZDEuLmU4Mjg2MzgxYTIgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuY3BwCisr KysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuY3BwCitA QCAtMzY1LDE3ICszNjUsNiBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKHhjYl9t YXBwaW5nX25vdGlmeV9ldmVudF90ICpldmVudCkKKyAgICAgdXBkYXRlS2V5bWFwKCk7CisgfQor IAorLXZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoeGNiX3hrYl9uZXdfa2V5Ym9hcmRf bm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorLXsKKy0gICAgaWYgKCFldmVudCkKKy0gICAgICAgIHJl dHVybjsKKy0KKy0gICAgaWYgKGV2ZW50LT5kZXZpY2VJRCAhPSBldmVudC0+b2xkRGV2aWNlSUQp CistICAgICAgICBtX2NvbmZpZyA9IGZhbHNlOworLQorLSAgICB1cGRhdGVLZXltYXAoKTsKKy19 CistCisgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCgpCisgeworICAgICBLZXlzeW1N b2RpZmllck1hcCBrZXlzeW1Nb2RzOworQEAgLTM4Myw2ICszNzIsOCBAQCB2b2lkIFFYY2JLZXli b2FyZDo6dXBkYXRlS2V5bWFwKCkKKyAgICAgICAgIGtleXN5bU1vZHMgPSBrZXlzeW1zVG9Nb2Rp ZmllcnMoKTsKKyAgICAgdXBkYXRlTW9kaWZpZXJzKGtleXN5bU1vZHMpOworIAorKyAgICBtX2Nv bmZpZyA9IHRydWU7CisrCisgICAgIGlmICghbV94a2JDb250ZXh0KSB7CisgICAgICAgICBtX3hr YkNvbnRleHQucmVzZXQoeGtiX2NvbnRleHRfbmV3KFhLQl9DT05URVhUX05PX0RFRkFVTFRfSU5D TFVERVMpKTsKKyAgICAgICAgIGlmICghbV94a2JDb250ZXh0KSB7CitAQCAtMzk4LDEzICszODks OCBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyAgICAgaWYgKGNvbm5lY3Rp b24oKS0+aGFzWEtCKCkpIHsKKyAgICAgICAgIG1feGtiS2V5bWFwLnJlc2V0KHhrYl94MTFfa2V5 bWFwX25ld19mcm9tX2RldmljZShtX3hrYkNvbnRleHQuZ2V0KCksIHhjYl9jb25uZWN0aW9uKCks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29yZV9kZXZpY2VfaWQsIFhLQl9LRVlNQVBfQ09NUElMRV9OT19GTEFHUykpOworLSAgICAg ICAgaWYgKG1feGtiS2V5bWFwKSB7CistICAgICAgICAgICAgaWYgKG1fY29uZmlnKQorLSAgICAg ICAgICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhrYl9zdGF0ZV9uZXcobV94a2JLZXltYXAuZ2V0 KCkpKTsKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIG1feGtiU3RhdGUucmVz ZXQoeGtiX3gxMV9zdGF0ZV9uZXdfZnJvbV9kZXZpY2UobV94a2JLZXltYXAuZ2V0KCksIHhjYl9j b25uZWN0aW9uKCksIGNvcmVfZGV2aWNlX2lkKSk7CistCistICAgICAgICB9CisrICAgICAgICBp ZiAobV94a2JLZXltYXApCisrICAgICAgICAgICAgbV94a2JTdGF0ZS5yZXNldCh4a2JfeDExX3N0 YXRlX25ld19mcm9tX2RldmljZShtX3hrYktleW1hcC5nZXQoKSwgeGNiX2Nvbm5lY3Rpb24oKSwg Y29yZV9kZXZpY2VfaWQpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIG1feGtiS2V5bWFwLnJl c2V0KGtleW1hcEZyb21Db3JlKGtleXN5bU1vZHMpKTsKKyAgICAgICAgIGlmIChtX3hrYktleW1h cCkKK0BAIC00MjUsOCArNDExLDYgQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCgp CisgICAgIHVwZGF0ZVhLQk1vZHMoKTsKKyAKKyAgICAgUVhrYkNvbW1vbjo6dmVyaWZ5SGFzTGF0 aW5MYXlvdXQobV94a2JLZXltYXAuZ2V0KCkpOworLQorLSAgICBtX2NvbmZpZyA9IHRydWU7Cisg fQorIAorIFFMaXN0PGludD4gUVhjYktleWJvYXJkOjpwb3NzaWJsZUtleXMoY29uc3QgUUtleUV2 ZW50ICpldmVudCkgY29uc3QKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL3hjYi9xeGNia2V5Ym9hcmQuaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNi L3F4Y2JrZXlib2FyZC5oCitpbmRleCBiNjUyYzg1ZmUzLi4wZWUwOGFlZmYyIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmgKKysrKyBi L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5oCitAQCAtNjks NyArNjksNiBAQCBwdWJsaWM6CisgCisgICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyB0cmFuc2xh dGVNb2RpZmllcnMoaW50IHMpIGNvbnN0OworICAgICB2b2lkIHVwZGF0ZUtleW1hcCh4Y2JfbWFw cGluZ19ub3RpZnlfZXZlbnRfdCAqZXZlbnQpOworLSAgICB2b2lkIHVwZGF0ZUtleW1hcCh4Y2Jf eGtiX25ld19rZXlib2FyZF9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpOworICAgICB2b2lkIHVwZGF0 ZUtleW1hcCgpOworICAgICBRTGlzdDxpbnQ+IHBvc3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQg KmV2ZW50KSBjb25zdDsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL3hjYi9xeGNid2luZG93LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNi L3F4Y2J3aW5kb3cuY3BwCitpbmRleCBmZmRhN2I2YTU3Li44NjNlOTYxZjRjIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAKKysrKyBi L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuY3BwCitAQCAtNTY0 LDExICs1NjQsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldEdlb21ldHJ5KGNvbnN0IFFSZWN0ICZy ZWN0KQorIHsKKyAgICAgUVBsYXRmb3JtV2luZG93OjpzZXRHZW9tZXRyeShyZWN0KTsKKyAKKy0g ICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpTZXRHZW9tZXRyeSkpIHsKKy0gICAgICAgIG1f ZGVmZXJyZWRHZW9tZXRyeSA9IHJlY3Q7CistICAgICAgICByZXR1cm47CistICAgIH0KKy0KKyAg ICAgcHJvcGFnYXRlU2l6ZUhpbnRzKCk7CisgCisgICAgIFFYY2JTY3JlZW4gKmN1cnJlbnRTY3Jl ZW4gPSB4Y2JTY3JlZW4oKTsKK0BAIC02OTMsOSArNjg4LDYgQEAgdm9pZCBRWGNiV2luZG93Ojpz ZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKKyAKKyB2b2lkIFFYY2JXaW5kb3c6OnNob3coKQorIHsK Ky0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpNYXApKQorLSAgICAgICAgcmV0dXJuOwor LQorICAgICBpZiAod2luZG93KCktPmlzVG9wTGV2ZWwoKSkgeworIAorICAgICAgICAgLy8gdXBk YXRlIFdNX05PUk1BTF9ISU5UUworQEAgLTcwNiw3ICs2OTgsNyBAQCB2b2lkIFFYY2JXaW5kb3c6 OnNob3coKQorICAgICAgICAgaWYgKGlzVHJhbnNpZW50KHdpbmRvdygpKSkgeworICAgICAgICAg ICAgIGNvbnN0IFFXaW5kb3cgKnRwID0gd2luZG93KCktPnRyYW5zaWVudFBhcmVudCgpOworICAg ICAgICAgICAgIGlmICh0cCAmJiB0cC0+aGFuZGxlKCkpCistICAgICAgICAgICAgICAgIHRyYW5z aWVudFhjYlBhcmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFFYY2JXaW5kb3cgKj4odHAtPmhhbmRs ZSgpKS0+d2luSWQoKTsKKysgICAgICAgICAgICAgICAgdHJhbnNpZW50WGNiUGFyZW50ID0gdHAt PmhhbmRsZSgpLT53aW5JZCgpOworICAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gY2xpZW50IGxl YWRlciBpZiB0aGVyZSBpcyBubyB0cmFuc2llbnQgcGFyZW50LCBlbHNlIG1vZGFsIGRpYWxvZ3Mg Y2FuCisgICAgICAgICAgICAgLy8gYmUgaGlkZGVuIGJ5IHRoZWlyIHBhcmVudHMuCisgICAgICAg ICAgICAgaWYgKCF0cmFuc2llbnRYY2JQYXJlbnQpCitAQCAtNzQ2LDEwICs3MzgsNiBAQCB2b2lk IFFYY2JXaW5kb3c6OnNob3coKQorIAorIHZvaWQgUVhjYldpbmRvdzo6aGlkZSgpCisgeworLSAg ICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6OlVubWFwKSkKKy0gICAgICAgIHJldHVybjsKKy0K Ky0gICAgbV93bVN0YXRlVmFsaWQgPSBmYWxzZTsKKyAgICAgeGNiX3VubWFwX3dpbmRvdyh4Y2Jf Y29ubmVjdGlvbigpLCBtX3dpbmRvdyk7CisgCisgICAgIC8vIHNlbmQgc3ludGhldGljIFVubWFw Tm90aWZ5IGV2ZW50IGFjY29yZGluZyB0byBpY2NjbSA0LjEuNAorQEAgLTkwOSw5ICs4OTcsNiBA QCBRWGNiV2luZG93OjpOZXRXbVN0YXRlcyBRWGNiV2luZG93OjpuZXRXbVN0YXRlcygpCisgCisg dm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dGbGFncyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpCisg eworLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6OlNldFdpbmRvd0ZsYWdzKSkKKy0gICAg ICAgIHJldHVybjsKKy0KKyAgICAgUXQ6OldpbmRvd1R5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFF0 OjpXaW5kb3dUeXBlPihpbnQoZmxhZ3MgJiBRdDo6V2luZG93VHlwZV9NYXNrKSk7CisgCisgICAg IGlmICh0eXBlID09IFF0OjpUb29sVGlwKQorQEAgLTk0MSw4ICs5MjYsNiBAQCB2b2lkIFFYY2JX aW5kb3c6OnNldFdpbmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFncyBmbGFncykKKyAKKyAgICAgc2V0 VHJhbnNwYXJlbnRGb3JNb3VzZUV2ZW50cyhmbGFncyAmIFF0OjpXaW5kb3dUcmFuc3BhcmVudEZv cklucHV0KTsKKyAgICAgdXBkYXRlRG9lc05vdEFjY2VwdEZvY3VzKGZsYWdzICYgUXQ6OldpbmRv d0RvZXNOb3RBY2NlcHRGb2N1cyk7CistCistICAgIG1faXNXbU1hbmFnZWRXaW5kb3cgPSAhKGZs YWdzICYgUXQ6OlgxMUJ5cGFzc1dpbmRvd01hbmFnZXJIaW50KTsKKyB9CisgCisgdm9pZCBRWGNi V2luZG93OjpzZXRNb3RpZldtSGludHMoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKQorQEAgLTExNDIs OSArMTEyNSw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93U3RhdGUoUXQ6OldpbmRvd1N0 YXRlcyBzdGF0ZSkKKyAgICAgaWYgKHN0YXRlID09IG1fd2luZG93U3RhdGUpCisgICAgICAgICBy ZXR1cm47CisgCistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6U2V0V2luZG93U3RhdGUp KQorLSAgICAgICAgcmV0dXJuOworLQorICAgICAvLyB1bnNldCBvbGQgc3RhdGUKKyAgICAgaWYg KG1fd2luZG93U3RhdGUgJiBRdDo6V2luZG93TWluaW1pemVkKQorICAgICAgICAgeGNiX21hcF93 aW5kb3coeGNiX2Nvbm5lY3Rpb24oKSwgbV93aW5kb3cpOworQEAgLTEzNTAsNiArMTMzMCwxMiBA QCB2b2lkIFFYY2JXaW5kb3c6OnNldFdpbmRvd0ljb24oY29uc3QgUUljb24gJmljb24pCisgICAg IH0KKyAKKyAgICAgaWYgKCFpY29uX2RhdGEuaXNFbXB0eSgpKSB7CisrICAgICAgICAvLyBJZ25v cmUgaWNvbiBleGNlZWRpbmcgbWF4aW11bSB4Y2IgcmVxdWVzdCBsZW5ndGgKKysgICAgICAgIGlm IChpY29uX2RhdGEuc2l6ZSgpID4geGNiX2dldF9tYXhpbXVtX3JlcXVlc3RfbGVuZ3RoKHhjYl9j b25uZWN0aW9uKCkpKSB7CisrICAgICAgICAgICAgcVdhcm5pbmcoIklnbm9yaW5nIHdpbmRvdyBp Y29uOiBTaXplICVsbHUgZXhjZWVkcyBtYXhpbXVtIHhjYiByZXF1ZXN0IGxlbmd0aCAldS4iLAor KyAgICAgICAgICAgICAgICAgICAgIGljb25fZGF0YS5zaXplKCksIHhjYl9nZXRfbWF4aW11bV9y ZXF1ZXN0X2xlbmd0aCh4Y2JfY29ubmVjdGlvbigpKSk7CisrICAgICAgICAgICAgcmV0dXJuOwor KyAgICAgICAgfQorICAgICAgICAgeGNiX2NoYW5nZV9wcm9wZXJ0eSh4Y2JfY29ubmVjdGlvbigp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYQ0JfUFJPUF9NT0RFX1JFUExBQ0UsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fd2luZG93LAorQEAgLTE2MzksNyArMTYyNSw3 IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0V21XaW5kb3dUeXBlKFFYY2JXaW5kb3dGdW5jdGlvbnM6 OldtV2luZG93VHlwZXMgdHlwZXMsIFF0OjpXCisgICAgICAgICBicmVhazsKKyAgICAgfQorIAor LSAgICBpZiAoKGZsYWdzICYgUXQ6OkZyYW1lbGVzc1dpbmRvd0hpbnQpICYmICEodHlwZSAmIFFY Y2JXaW5kb3dGdW5jdGlvbnM6OktkZU92ZXJyaWRlKSkgeworKyAgICBpZiAoKGZsYWdzICYgUXQ6 OkZyYW1lbGVzc1dpbmRvd0hpbnQpICYmICEodHlwZXMgJiBRWGNiV2luZG93RnVuY3Rpb25zOjpL ZGVPdmVycmlkZSkpIHsKKyAgICAgICAgIC8vIG92ZXJyaWRlIG5ldHdtIHR5cGUgLSBxdWljayBh bmQgZWFzeSBmb3IgS0RFIG5vYm9yZGVyCisgICAgICAgICBhdG9tcy5hcHBlbmQoYXRvbShRWGNi QXRvbTo6X0tERV9ORVRfV01fV0lORE9XX1RZUEVfT1ZFUlJJREUpKTsKKyAgICAgfQorQEAgLTE4 OTQsMTAgKzE4ODAsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZVVubWFwTm90aWZ5RXZlbnQo Y29uc3QgeGNiX3VubWFwX25vdGlmeV9ldmVudF90ICpldmVudCkKKyAgICAgaWYgKGV2ZW50LT53 aW5kb3cgPT0gbV93aW5kb3cpIHsKKyAgICAgICAgIG1fbWFwcGVkID0gZmFsc2U7CisgICAgICAg ICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVFeHBvc2VFdmVudCh3aW5kb3coKSwgUVJl Z2lvbigpKTsKKy0gICAgICAgIGlmICghbV9pc1dtTWFuYWdlZFdpbmRvdyB8fCBwYXJlbnQoKSkg eworLSAgICAgICAgICAgIG1fd21TdGF0ZVZhbGlkID0gdHJ1ZTsKKy0gICAgICAgICAgICBoYW5k bGVEZWZlcnJlZFRhc2tzKCk7CistICAgICAgICB9CisgICAgIH0KKyB9CisgCitAQCAtMjIxMiw5 OCArMjE5NCwzMCBAQCB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZUxlYXZlTm90aWZ5RXZlbnQoY29u c3QgeGNiX2xlYXZlX25vdGlmeV9ldmVudF90ICpldmVudCkKKyAgICAgaGFuZGxlTGVhdmVOb3Rp ZnlFdmVudChldmVudC0+cm9vdF94LCBldmVudC0+cm9vdF95LCBldmVudC0+bW9kZSwgZXZlbnQt PmRldGFpbCwgZXZlbnQtPnRpbWUpOworIH0KKyAKKy1ib29sIFFYY2JXaW5kb3c6OnNob3VsZERl ZmVyVGFzayhUYXNrIHRhc2spCisteworLSAgICBpZiAobV93bVN0YXRlVmFsaWQpCistICAgICAg ICByZXR1cm4gZmFsc2U7CistCistICAgIG1fZGVmZXJyZWRUYXNrcy5hcHBlbmQodGFzayk7Cist ICAgIHJldHVybiB0cnVlOworLX0KKy0KKy12b2lkIFFYY2JXaW5kb3c6OmhhbmRsZURlZmVycmVk VGFza3MoKQorLXsKKy0gICAgUV9BU1NFUlQobV93bVN0YXRlVmFsaWQgPT0gdHJ1ZSk7CistICAg IGlmIChtX2RlZmVycmVkVGFza3MuaXNFbXB0eSgpKQorLSAgICAgICAgcmV0dXJuOworLQorLSAg ICBib29sIG1hcCA9IGZhbHNlOworLSAgICBib29sIHVubWFwID0gZmFsc2U7CistCistICAgIFFW ZWN0b3I8VGFzaz4gdGFza3M7CistICAgIGZvciAoYXV0byB0YXNrSXQgPSBtX2RlZmVycmVkVGFz a3MucmJlZ2luKCk7IHRhc2tJdCAhPSBtX2RlZmVycmVkVGFza3MucmVuZCgpOyArK3Rhc2tJdCkg eworLSAgICAgICAgaWYgKCF0YXNrcy5jb250YWlucygqdGFza0l0KSkKKy0gICAgICAgICAgICB0 YXNrcy5wcmVwZW5kKCp0YXNrSXQpOworLSAgICB9CistCistICAgIGZvciAoVGFzayB0YXNrIDog dGFza3MpIHsKKy0gICAgICAgIHN3aXRjaCAodGFzaykgeworLSAgICAgICAgY2FzZSBUYXNrOjpN YXA6CistICAgICAgICAgICAgbWFwID0gdHJ1ZTsKKy0gICAgICAgICAgICB1bm1hcCA9IGZhbHNl OworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBUYXNrOjpVbm1hcDoKKy0gICAg ICAgICAgICB1bm1hcCA9IHRydWU7CistICAgICAgICAgICAgbWFwID0gZmFsc2U7CistICAgICAg ICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlNldEdlb21ldHJ5OgorLSAgICAgICAg ICAgIHNldEdlb21ldHJ5KG1fZGVmZXJyZWRHZW9tZXRyeSk7CistICAgICAgICAgICAgYnJlYWs7 CistICAgICAgICBjYXNlIFRhc2s6OlNldFdpbmRvd0ZsYWdzOgorLSAgICAgICAgICAgIHNldFdp bmRvd0ZsYWdzKHdpbmRvdygpLT5mbGFncygpKTsKKy0gICAgICAgICAgICBicmVhazsKKy0gICAg ICAgIGNhc2UgVGFzazo6U2V0V2luZG93U3RhdGU6CistICAgICAgICAgICAgc2V0V2luZG93U3Rh dGUod2luZG93KCktPndpbmRvd1N0YXRlKCkpOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAg ICAgfQorLSAgICB9CistICAgIG1fZGVmZXJyZWRUYXNrcy5jbGVhcigpOworLQorLSAgICBpZiAo bWFwKSB7CistICAgICAgICBRX0FTU0VSVCh1bm1hcCA9PSBmYWxzZSk7CistICAgICAgICBzaG93 KCk7CistICAgIH0KKy0gICAgaWYgKHVubWFwKSB7CistICAgICAgICBRX0FTU0VSVChtYXAgPT0g ZmFsc2UpOworLSAgICAgICAgaGlkZSgpOworLSAgICB9CistfQorLQorIHZvaWQgUVhjYldpbmRv dzo6aGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudChjb25zdCB4Y2JfcHJvcGVydHlfbm90aWZ5X2V2 ZW50X3QgKmV2ZW50KQorIHsKKyAgICAgY29ubmVjdGlvbigpLT5zZXRUaW1lKGV2ZW50LT50aW1l KTsKKyAKKy0gICAgY29uc3QgYm9vbCB3bVN0YXRlQ2hhbmdlZCA9IGV2ZW50LT5hdG9tID09IGF0 b20oUVhjYkF0b206OldNX1NUQVRFKTsKKy0gICAgY29uc3QgYm9vbCBuZXRXbVN0YXRlQ2hhbmdl ZCA9IGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfV01fU1RBVEUpOworLSAgICBp ZiAobmV0V21TdGF0ZUNoYW5nZWQgfHwgd21TdGF0ZUNoYW5nZWQpIHsKKy0gICAgICAgIGlmICh3 bVN0YXRlQ2hhbmdlZCAmJiAhbV93bVN0YXRlVmFsaWQgJiYgbV9pc1dtTWFuYWdlZFdpbmRvdykg eworLSAgICAgICAgICAgIC8vIElDQ0NNIDQuMS40CistICAgICAgICAgICAgLy8gQ2xpZW50cyB0 aGF0IHdhbnQgdG8gcmUtdXNlIGEgY2xpZW50IHdpbmRvdyAoZS5nLiBieSBtYXBwaW5nIGl0IGFn YWluKQorLSAgICAgICAgICAgIC8vIGFmdGVyIHdpdGhkcmF3aW5nIGl0IG11c3Qgd2FpdCBmb3Ig dGhlIHdpdGhkcmF3YWwgdG8gYmUgY29tcGxldGUgYmVmb3JlCistICAgICAgICAgICAgLy8gcHJv Y2VlZGluZy4gVGhlIHByZWZlcnJlZCBtZXRob2QgZm9yIGRvaW5nIHRoaXMgaXMgZm9yIGNsaWVu dHMgdG8gd2FpdCBmb3IKKy0gICAgICAgICAgICAvLyBhIHdpbmRvdyBtYW5hZ2VyIHRvIHVwZGF0 ZSBvciByZW1vdmUgdGhlIFdNX1NUQVRFIHByb3BlcnR5LgorLSAgICAgICAgICAgIG1fd21TdGF0 ZVZhbGlkID0gdHJ1ZTsKKy0gICAgICAgICAgICBoYW5kbGVEZWZlcnJlZFRhc2tzKCk7CistICAg ICAgICB9CistICAgICAgICBpZiAoZXZlbnQtPnN0YXRlID09IFhDQl9QUk9QRVJUWV9ERUxFVEUp CisrICAgIGNvbnN0IGJvb2wgcHJvcGVydHlEZWxldGVkID0gZXZlbnQtPnN0YXRlID09IFhDQl9Q Uk9QRVJUWV9ERUxFVEU7CisrCisrICAgIGlmIChldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9t OjpfTkVUX1dNX1NUQVRFKSB8fCBldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFU RSkpIHsKKysgICAgICAgIGlmIChwcm9wZXJ0eURlbGV0ZWQpCisgICAgICAgICAgICAgcmV0dXJu OworIAorLSAgICAgICAgaWYgKHdtU3RhdGVDaGFuZ2VkKSB7CisrICAgICAgICBRdDo6V2luZG93 U3RhdGVzIG5ld1N0YXRlID0gUXQ6OldpbmRvd05vU3RhdGU7CisrCisrICAgICAgICBpZiAoZXZl bnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpKSB7IC8vIFdNX1NUQVRFOiBRdWlj ayBjaGVjayBmb3IgJ01pbmltaXplJy4KKyAgICAgICAgICAgICBhdXRvIHJlcGx5ID0gUV9YQ0Jf UkVQTFkoeGNiX2dldF9wcm9wZXJ0eSwgeGNiX2Nvbm5lY3Rpb24oKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwgbV93aW5kb3csIGF0b20oUVhjYkF0b206OldNX1NU QVRFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWENCX0FUT01fQU5Z LCAwLCAxMDI0KTsKKyAgICAgICAgICAgICBpZiAocmVwbHkgJiYgcmVwbHktPmZvcm1hdCA9PSAz MiAmJiByZXBseS0+dHlwZSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSkpIHsKKy0gICAgICAg ICAgICAgICAgYXV0byBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgcXVpbnQzMiAqPih4Y2JfZ2V0 X3Byb3BlcnR5X3ZhbHVlKHJlcGx5LmdldCgpKSk7CistICAgICAgICAgICAgICAgIGlmIChyZXBs eS0+bGVuZ3RoICE9IDApIHsKKy0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgY2hhbmdl ZFRvV2l0aGRyYXduID0gZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfV0lUSERSQVdOOwor LSAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBjaGFuZ2VkVG9JY29uaWMgPSBkYXRhWzBd ID09IFhDQl9JQ0NDTV9XTV9TVEFURV9JQ09OSUM7CistICAgICAgICAgICAgICAgICAgICBtX21p bmltaXplZCA9IGNoYW5nZWRUb0ljb25pYyB8fCAoY2hhbmdlZFRvV2l0aGRyYXduICYmIG1fbWlu aW1pemVkKTsKKy0gICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBjb25zdCBxdWlu dDMyICpkYXRhID0gKGNvbnN0IHF1aW50MzIgKil4Y2JfZ2V0X3Byb3BlcnR5X3ZhbHVlKHJlcGx5 LmdldCgpKTsKKysgICAgICAgICAgICAgICAgaWYgKHJlcGx5LT5sZW5ndGggIT0gMCkKKysgICAg ICAgICAgICAgICAgICAgIG1fbWluaW1pemVkID0gKGRhdGFbMF0gPT0gWENCX0lDQ0NNX1dNX1NU QVRFX0lDT05JQworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGRhdGFb MF0gPT0gWENCX0lDQ0NNX1dNX1NUQVRFX1dJVEhEUkFXTiAmJiBtX21pbmltaXplZCkpOworICAg ICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKKy0gICAgICAgIC8vIF9ORVRfV01fU1RBVEUgaGFu ZGxpbmcKKy0gICAgICAgIFF0OjpXaW5kb3dTdGF0ZXMgbmV3U3RhdGUgPSBRdDo6V2luZG93Tm9T dGF0ZTsKKyAgICAgICAgIGNvbnN0IE5ldFdtU3RhdGVzIHN0YXRlcyA9IG5ldFdtU3RhdGVzKCk7 CisgICAgICAgICAvLyBfTkVUX1dNX1NUQVRFX0hJRERFTiBzaG91bGQgYmUgc2V0IGJ5IHRoZSBX aW5kb3cgTWFuYWdlciB0byBpbmRpY2F0ZSB0aGF0IGEgd2luZG93IHdvdWxkCisgICAgICAgICAv LyBub3QgYmUgdmlzaWJsZSBvbiB0aGUgc2NyZWVuIGlmIGl0cyBkZXNrdG9wL3ZpZXdwb3J0IHdl cmUgYWN0aXZlIGFuZCBpdHMgY29vcmRpbmF0ZXMgd2VyZQorQEAgLTIzMjUsNiArMjIzOSw3IEBA IHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudChjb25zdCB4Y2JfcHJv cGVydHlfbm90aWZ5X2V2ZW50X3QgKmV2CisgICAgICAgICAgICAgaWYgKChtX3dpbmRvd1N0YXRl ICYgUXQ6OldpbmRvd01pbmltaXplZCkgJiYgY29ubmVjdGlvbigpLT5tb3VzZUdyYWJiZXIoKSA9 PSB0aGlzKQorICAgICAgICAgICAgICAgICBjb25uZWN0aW9uKCktPnNldE1vdXNlR3JhYmJlcihu dWxscHRyKTsKKyAgICAgICAgIH0KKysgICAgICAgIHJldHVybjsKKyAgICAgfSBlbHNlIGlmIChl dmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpfTkVUX0ZSQU1FX0VYVEVOVFMpKSB7CisgICAg ICAgICBtX2RpcnR5RnJhbWVNYXJnaW5zID0gdHJ1ZTsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaCBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaAoraW5kZXggNTVhZjkyNzliMS4uNmY1 YzFmNWVkOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4 Y2J3aW5kb3cuaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndp bmRvdy5oCitAQCAtNzQsMTQgKzc0LDYgQEAgcHVibGljOgorIAorICAgICBRX0RFQ0xBUkVfRkxB R1MoTmV0V21TdGF0ZXMsIE5ldFdtU3RhdGUpCisgCistICAgIGVudW0gVGFzayB7CistICAgICAg ICBNYXAsCistICAgICAgICBVbm1hcCwKKy0gICAgICAgIFNldEdlb21ldHJ5LAorLSAgICAgICAg U2V0V2luZG93RmxhZ3MsCistICAgICAgICBTZXRXaW5kb3dTdGF0ZQorLSAgICB9OworLQorICAg ICBRWGNiV2luZG93KFFXaW5kb3cgKndpbmRvdyk7CisgICAgIH5RWGNiV2luZG93KCk7CisgCitA QCAtMTUxLDkgKzE0Myw2IEBAIHB1YmxpYzoKKyAKKyAgICAgUVhjYldpbmRvdyAqdG9XaW5kb3co KSBvdmVycmlkZTsKKyAKKy0gICAgYm9vbCBzaG91bGREZWZlclRhc2soVGFzayB0YXNrKTsKKy0g ICAgdm9pZCBoYW5kbGVEZWZlcnJlZFRhc2tzKCk7CistCisgICAgIHZvaWQgaGFuZGxlTW91c2VF dmVudCh4Y2JfdGltZXN0YW1wX3QgdGltZSwgY29uc3QgUVBvaW50ICZsb2NhbCwgY29uc3QgUVBv aW50ICZnbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBRdDo6S2V5Ym9hcmRNb2Rp ZmllcnMgbW9kaWZpZXJzLCBRRXZlbnQ6OlR5cGUgdHlwZSwgUXQ6Ok1vdXNlRXZlbnRTb3VyY2Ug c291cmNlKTsKKyAKK0BAIC0yOTIsMTEgKzI4MSw2IEBAIHByb3RlY3RlZDoKKyAgICAgaW50IG1f c3dhcEludGVydmFsID0gLTE7CisgCisgICAgIHFyZWFsIG1fc2l6ZUhpbnRzU2NhbGVGYWN0b3Ig PSAxLjA7CistCistICAgIGJvb2wgbV93bVN0YXRlVmFsaWQgPSB0cnVlOworLSAgICBRVmVjdG9y PFRhc2s+IG1fZGVmZXJyZWRUYXNrczsKKy0gICAgYm9vbCBtX2lzV21NYW5hZ2VkV2luZG93ID0g dHJ1ZTsKKy0gICAgUVJlY3QgbV9kZWZlcnJlZEdlb21ldHJ5OworIH07CisgCisgY2xhc3MgUVhj YkZvcmVpZ25XaW5kb3cgOiBwdWJsaWMgUVhjYldpbmRvdworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3RrM21lbnUuY3BwCitpbmRleCBkOWQxMTdm YWViLi42NDBiNDlkYWEwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt dGhlbWVzL2d0azMvcWd0azNtZW51LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcAorQEAgLTg1LDYgKzg1LDcgQEAgUUd0azNNZW51 SXRlbTo6UUd0azNNZW51SXRlbSgpCisgICAgICAgbV9jaGVja2FibGUoZmFsc2UpLAorICAgICAg IG1fY2hlY2tlZChmYWxzZSksCisgICAgICAgbV9lbmFibGVkKHRydWUpLAorKyAgICAgIG1fZXhj bHVzaXZlKGZhbHNlKSwKKyAgICAgICBtX3VuZGVybGluZShmYWxzZSksCisgICAgICAgbV9pbnZh bGlkKHRydWUpLAorICAgICAgIG1fbWVudShudWxscHRyKSwKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBv cnRhbGZpbGVkaWFsb2cuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hk Z2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcAoraW5kZXggMDA0 OGJiYzFlNi4uMzk2ZTdmNmQxYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZy5j cHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9y dGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZy5jcHAKK0BAIC0xMDIsMTUgKzEwMiwxMiBA QCBjb25zdCBRREJ1c0FyZ3VtZW50ICZvcGVyYXRvciA+Pihjb25zdCBRREJ1c0FyZ3VtZW50ICZh cmcsIFFYZGdEZXNrdG9wUG9ydGFsRmlsZQorIGNsYXNzIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURp YWxvZ1ByaXZhdGUKKyB7CisgcHVibGljOgorLSAgICBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFs b2dQcml2YXRlKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cpCisr ICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUoUVBsYXRmb3JtRmlsZURpYWxv Z0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZywgdWludCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24p CisgICAgICAgICA6IG5hdGl2ZUZpbGVEaWFsb2cobmF0aXZlRmlsZURpYWxvZykKKysgICAgICAg ICwgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikKKyAg ICAgeyB9CisgCistICAgIFdJZCB3aW5JZCA9IDA7CistICAgIGJvb2wgZGlyZWN0b3J5TW9kZSA9 IGZhbHNlOworLSAgICBib29sIG1vZGFsID0gZmFsc2U7CistICAgIGJvb2wgbXVsdGlwbGVGaWxl cyA9IGZhbHNlOworLSAgICBib29sIHNhdmVGaWxlID0gZmFsc2U7CisrICAgIFFFdmVudExvb3Ag bG9vcDsKKyAgICAgUVN0cmluZyBhY2NlcHRMYWJlbDsKKyAgICAgUVN0cmluZyBkaXJlY3Rvcnk7 CisgICAgIFFTdHJpbmcgdGl0bGU7CitAQCAtMTIxLDE5ICsxMTgsMjcgQEAgcHVibGljOgorICAg ICBRU3RyaW5nIHNlbGVjdGVkTWltZVR5cGVGaWx0ZXI7CisgICAgIFFTdHJpbmcgc2VsZWN0ZWRO YW1lRmlsdGVyOworICAgICBRU3RyaW5nTGlzdCBzZWxlY3RlZEZpbGVzOworLSAgICBRUGxhdGZv cm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nID0gbnVsbHB0cjsKKysgICAgc3Rk Ojp1bmlxdWVfcHRyPFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXI+IG5hdGl2ZUZpbGVEaWFsb2c7 CisrICAgIHVpbnQgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uID0gMDsKKysgICAgYm9vbCBmYWls ZWRUb09wZW4gPSBmYWxzZTsKKysgICAgYm9vbCBkaXJlY3RvcnlNb2RlID0gZmFsc2U7CisrICAg IGJvb2wgbXVsdGlwbGVGaWxlcyA9IGZhbHNlOworKyAgICBib29sIHNhdmVGaWxlID0gZmFsc2U7 CisgfTsKKyAKKy1RWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OlFYZGdEZXNrdG9wUG9ydGFs RmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nKQor K1FYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n KFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2csIHVpbnQgZmlsZUNo b29zZXJQb3J0YWxWZXJzaW9uKQorICAgICA6IFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIoKQor LSAgICAsIGRfcHRyKG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlKG5hdGl2 ZUZpbGVEaWFsb2cpKQorKyAgICAsIGRfcHRyKG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFs b2dQcml2YXRlKG5hdGl2ZUZpbGVEaWFsb2csIGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikpCisg eworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKyAgICAgaWYgKGQt Pm5hdGl2ZUZpbGVEaWFsb2cpIHsKKy0gICAgICAgIGNvbm5lY3QoZC0+bmF0aXZlRmlsZURpYWxv ZywgU0lHTkFMKGFjY2VwdCgpKSwgdGhpcywgU0lHTkFMKGFjY2VwdCgpKSk7CistICAgICAgICBj b25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2csIFNJR05BTChyZWplY3QoKSksIHRoaXMsIFNJR05B TChyZWplY3QoKSkpOworKyAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlhbG9nLmdldCgp LCBTSUdOQUwoYWNjZXB0KCkpLCB0aGlzLCBTSUdOQUwoYWNjZXB0KCkpKTsKKysgICAgICAgIGNv bm5lY3QoZC0+bmF0aXZlRmlsZURpYWxvZy5nZXQoKSwgU0lHTkFMKHJlamVjdCgpKSwgdGhpcywg U0lHTkFMKHJlamVjdCgpKSk7CisgICAgIH0KKysKKysgICAgZC0+bG9vcC5jb25uZWN0KHRoaXMs IFNJR05BTChhY2NlcHQoKSksIFNMT1QocXVpdCgpKSk7CisrICAgIGQtPmxvb3AuY29ubmVjdCh0 aGlzLCBTSUdOQUwocmVqZWN0KCkpLCBTTE9UKHF1aXQoKSkpOworIH0KKyAKKyBRWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2c6On5RWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coKQorQEAgLTE3 Nyw3ICsxODIsNyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6aW5pdGlhbGl6 ZURpYWxvZygpCisgICAgIHNldERpcmVjdG9yeShvcHRpb25zKCktPmluaXRpYWxEaXJlY3Rvcnko KSk7CisgfQorIAorLXZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFs KCkKKyt2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbChRdDo6V2lu ZG93RmxhZ3Mgd2luZG93RmxhZ3MsIFF0OjpXaW5kb3dNb2RhbGl0eSB3aW5kb3dNb2RhbGl0eSwg UVdpbmRvdyAqcGFyZW50KQorIHsKKyAgICAgUV9EKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv Zyk7CisgCitAQCAtMTg1LDEzICsxOTAsMTMgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVE aWFsb2c6Om9wZW5Qb3J0YWwoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCIvb3JnL2ZyZWVkZXNrdG9wL3Bv cnRhbC9kZXNrdG9wIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwu RmlsZUNob29zZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZC0+c2F2ZUZpbGUgPyBRTGF0aW4xU3RyaW5nKCJTYXZlRmlsZSIp IDogUUxhdGluMVN0cmluZygiT3BlbkZpbGUiKSk7CistICAgIFFTdHJpbmcgcGFyZW50V2luZG93 SWQgPSBRTGF0aW4xU3RyaW5nKCJ4MTE6IikgKyBRU3RyaW5nOjpudW1iZXIoZC0+d2luSWQsIDE2 KTsKKysgICAgUVN0cmluZyBwYXJlbnRXaW5kb3dJZCA9IFFMYXRpbjFTdHJpbmcoIngxMToiKSAr IFFTdHJpbmc6Om51bWJlcihwYXJlbnQgPyBwYXJlbnQtPndpbklkKCkgOiAwLCAxNik7CisgCisg ICAgIFFWYXJpYW50TWFwIG9wdGlvbnM7CisgICAgIGlmICghZC0+YWNjZXB0TGFiZWwuaXNFbXB0 eSgpKQorICAgICAgICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygiYWNjZXB0X2xhYmVs IiksIGQtPmFjY2VwdExhYmVsKTsKKyAKKy0gICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmlu ZygibW9kYWwiKSwgZC0+bW9kYWwpOworKyAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5n KCJtb2RhbCIpLCB3aW5kb3dNb2RhbGl0eSAhPSBRdDo6Tm9uTW9kYWwpOworICAgICBvcHRpb25z Lmluc2VydChRTGF0aW4xU3RyaW5nKCJtdWx0aXBsZSIpLCBkLT5tdWx0aXBsZUZpbGVzKTsKKyAg ICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygiZGlyZWN0b3J5IiksIGQtPmRpcmVjdG9y eU1vZGUpOworIAorQEAgLTI5MCwxMCArMjk1LDE4IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkKKyAKKyAgICAgUURCdXNQZW5kaW5nQ2FsbCBwZW5kaW5n Q2FsbCA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmFzeW5jQ2FsbChtZXNzYWdlKTsK KyAgICAgUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIgPSBuZXcgUURCdXNQZW5kaW5n Q2FsbFdhdGNoZXIocGVuZGluZ0NhbGwpOworLSAgICBjb25uZWN0KHdhdGNoZXIsICZRREJ1c1Bl bmRpbmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHRoaXMsIFt0aGlzXSAoUURCdXNQZW5kaW5nQ2Fs bFdhdGNoZXIgKndhdGNoZXIpIHsKKysgICAgY29ubmVjdCh3YXRjaGVyLCAmUURCdXNQZW5kaW5n Q2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB0aGlzLCBbPV0gKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVy ICp3YXRjaGVyKSB7CisgICAgICAgICBRREJ1c1BlbmRpbmdSZXBseTxRREJ1c09iamVjdFBhdGg+ IHJlcGx5ID0gKndhdGNoZXI7CistICAgICAgICBpZiAocmVwbHkuaXNFcnJvcigpKSB7CistICAg ICAgICAgICAgUV9FTUlUIHJlamVjdCgpOworKyAgICAgICAgLy8gQW55IGVycm9yIG1lYW5zIHRo ZSBkaWFsb2cgaXMgbm90IHNob3duIGFuZCB3ZSBuZWVkIHRvIGZhbGxiYWNrCisrICAgICAgICBk LT5mYWlsZWRUb09wZW4gPSByZXBseS5pc0Vycm9yKCk7CisrICAgICAgICBpZiAoZC0+ZmFpbGVk VG9PcGVuKSB7CisrICAgICAgICAgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cpIHsKKysgICAg ICAgICAgICAgICAgZC0+bmF0aXZlRmlsZURpYWxvZy0+c2hvdyh3aW5kb3dGbGFncywgd2luZG93 TW9kYWxpdHksIHBhcmVudCk7CisrICAgICAgICAgICAgICAgIGlmIChkLT5sb29wLmlzUnVubmlu ZygpKQorKyAgICAgICAgICAgICAgICAgICAgZC0+bmF0aXZlRmlsZURpYWxvZy0+ZXhlYygpOwor KyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIFFfRU1JVCByZWplY3QoKTsK KysgICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIFFEQnVzQ29u bmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmNvbm5lY3QobnVsbHB0ciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5LnZhbHVlKCkucGF0aCgpLAor QEAgLTMwMiw2ICszMTUsNyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3Bl blBvcnRhbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU0xPVChnb3RSZXNwb25zZSh1aW50LFFWYXJpYW50TWFwKSkpOworICAgICAgICAgfQor KyAgICAgICAgd2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKyAgICAgfSk7CisgfQorIAorQEAgLTMy Niw3ICszNDAsNyBAQCBRVXJsIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6ZGlyZWN0b3J5 KCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cp OworIAorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygpLT5maWxlTW9k ZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMoKS0+ZmlsZU1v ZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKQorKyAgICBpZiAoZC0+ bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKCkpCisgICAgICAgICByZXR1 cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+ZGlyZWN0b3J5KCk7CisgCisgICAgIHJldHVybiBkLT5k aXJlY3Rvcnk7CitAQCAtMzQ4LDcgKzM2Miw3IEBAIFFMaXN0PFFVcmw+IFFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZzo6c2VsZWN0ZWRGaWxlcygpIGNvbnN0CisgeworICAgICBRX0QoY29uc3Qg UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQtPm5hdGl2ZUZpbGVE aWFsb2cgJiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRp cmVjdG9yeSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpE aXJlY3RvcnlPbmx5KSkKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0aXZl RmlsZURpYWxvZygpKQorICAgICAgICAgcmV0dXJuIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPnNlbGVj dGVkRmlsZXMoKTsKKyAKKyAgICAgUUxpc3Q8UVVybD4gZmlsZXM7CitAQCAtNDAzLDE2ICs0MTcs MTMgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OmV4ZWMoKQorIHsKKyAgICAg UV9EKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCistICAgIGlmIChkLT5uYXRpdmVG aWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25z OjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9u czo6RGlyZWN0b3J5T25seSkpIHsKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNl TmF0aXZlRmlsZURpYWxvZygpKSB7CisgICAgICAgICBkLT5uYXRpdmVGaWxlRGlhbG9nLT5leGVj KCk7CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKyAgICAgLy8gSEFDSyB3ZSBoYXZlIHRv IGF2b2lkIHJldHVybmluZyB1bnRpbCB3ZSBlbWl0IHRoYXQgdGhlIGRpYWxvZyB3YXMgYWNjZXB0 ZWQgb3IgcmVqZWN0ZWQKKy0gICAgUUV2ZW50TG9vcCBsb29wOworLSAgICBsb29wLmNvbm5lY3Qo dGhpcywgU0lHTkFMKGFjY2VwdCgpKSwgU0xPVChxdWl0KCkpKTsKKy0gICAgbG9vcC5jb25uZWN0 KHRoaXMsIFNJR05BTChyZWplY3QoKSksIFNMT1QocXVpdCgpKSk7CistICAgIGxvb3AuZXhlYygp OworKyAgICBkLT5sb29wLmV4ZWMoKTsKKyB9CisgCisgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZp bGVEaWFsb2c6OmhpZGUoKQorQEAgLTQyOSwxMyArNDQwLDEwIEBAIGJvb2wgUVhkZ0Rlc2t0b3BQ b3J0YWxGaWxlRGlhbG9nOjpzaG93KFF0OjpXaW5kb3dGbGFncyB3aW5kb3dGbGFncywgUXQ6Oldp bmRvd01vCisgCisgICAgIGluaXRpYWxpemVEaWFsb2coKTsKKyAKKy0gICAgZC0+bW9kYWwgPSB3 aW5kb3dNb2RhbGl0eSAhPSBRdDo6Tm9uTW9kYWw7CistICAgIGQtPndpbklkID0gcGFyZW50ID8g cGFyZW50LT53aW5JZCgpIDogMDsKKy0KKy0gICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYg KG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeSB8 fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnlP bmx5KSkKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0aXZlRmlsZURpYWxv ZyhPcGVuRmFsbGJhY2spKQorICAgICAgICAgcmV0dXJuIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPnNo b3cod2luZG93RmxhZ3MsIHdpbmRvd01vZGFsaXR5LCBwYXJlbnQpOworIAorLSAgICBvcGVuUG9y dGFsKCk7CisrICAgIG9wZW5Qb3J0YWwod2luZG93RmxhZ3MsIHdpbmRvd01vZGFsaXR5LCBwYXJl bnQpOworIAorICAgICByZXR1cm4gdHJ1ZTsKKyB9CitAQCAtNDY1LDQgKzQ3MywyMSBAQCB2b2lk IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6Z290UmVzcG9uc2UodWludCByZXNwb25zZSwg Y29uc3QgUVZhcmlhbnRNYXAgJgorICAgICB9CisgfQorIAorK2Jvb2wgUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nOjp1c2VOYXRpdmVGaWxlRGlhbG9nKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURp YWxvZzo6RmFsbGJhY2tUeXBlIGZhbGxiYWNrVHlwZSkgY29uc3QKKyt7CisrICAgIFFfRChjb25z dCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworKworKyAgICBpZiAoZC0+ZmFpbGVkVG9P cGVuICYmIGZhbGxiYWNrVHlwZSAhPSBPcGVuRmFsbGJhY2spCisrICAgICAgICByZXR1cm4gdHJ1 ZTsKKysKKysgICAgaWYgKGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA8IDMpIHsKKysgICAg ICAgIGlmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJl Y3RvcnkpCisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgICAgICBlbHNlIGlmIChvcHRp b25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5KQor KyAgICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICB9CisrCisrICAgIHJldHVybiBmYWxzZTsK Kyt9CisrCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRp YWxvZ19wLmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBv cnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oCitpbmRleCA0ZjRkZTk2ZWNmLi42 NWUyMmE1Y2YyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVz L3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3AuaAorKysrIGIv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rl c2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3AuaAorQEAgLTUxLDYgKzUxLDExIEBAIGNsYXNzIFFYZGdE ZXNrdG9wUG9ydGFsRmlsZURpYWxvZyA6IHB1YmxpYyBRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVy CisgICAgIFFfT0JKRUNUCisgICAgIFFfREVDTEFSRV9QUklWQVRFKFFYZGdEZXNrdG9wUG9ydGFs RmlsZURpYWxvZykKKyBwdWJsaWM6CisrICAgIGVudW0gRmFsbGJhY2tUeXBlIHsKKysgICAgICAg IEdlbmVyaWNGYWxsYmFjaywKKysgICAgICAgIE9wZW5GYWxsYmFjaworKyAgICB9OworKworICAg ICBlbnVtIENvbmRpdGlvblR5cGUgOiB1aW50IHsKKyAgICAgICAgIEdsb2JhbFBhdHRlcm4gPSAw LAorICAgICAgICAgTWltZVR5cGUgPSAxCitAQCAtNjksNyArNzQsNyBAQCBwdWJsaWM6CisgICAg IH07CisgICAgIHR5cGVkZWYgUVZlY3RvcjxGaWx0ZXI+IEZpbHRlckxpc3Q7CisgCistICAgIFFY ZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRp dmVGaWxlRGlhbG9nID0gbnVsbHB0cik7CisrICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv ZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nID0gbnVsbHB0ciwg dWludCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPSAwKTsKKyAgICAgflFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZygpOworIAorICAgICBib29sIGRlZmF1bHROYW1lRmlsdGVyRGlzYWJsZXMo KSBjb25zdCBvdmVycmlkZTsKK0BAIC05Miw3ICs5Nyw4IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAK KyBwcml2YXRlOgorICAgICB2b2lkIGluaXRpYWxpemVEaWFsb2coKTsKKy0gICAgdm9pZCBvcGVu UG9ydGFsKCk7CisrICAgIHZvaWQgb3BlblBvcnRhbChRdDo6V2luZG93RmxhZ3Mgd2luZG93Rmxh Z3MsIFF0OjpXaW5kb3dNb2RhbGl0eSB3aW5kb3dNb2RhbGl0eSwgUVdpbmRvdyAqcGFyZW50KTsK KysgICAgYm9vbCB1c2VOYXRpdmVGaWxlRGlhbG9nKEZhbGxiYWNrVHlwZSBmYWxsYmFja1R5cGUg PSBHZW5lcmljRmFsbGJhY2spIGNvbnN0OworIAorICAgICBRU2NvcGVkUG9pbnRlcjxRWGRnRGVz a3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlPiBkX3B0cjsKKyB9OworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNr dG9wcG9ydGFsdGhlbWUuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hk Z2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAKK2luZGV4IGZiMzI0YWZi ZDguLmI4MDk1MDMxMjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10 aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcAorKysrIGIv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rl c2t0b3Bwb3J0YWx0aGVtZS5jcHAKK0BAIC0xMTEsNiArMTExLDcgQEAgUVhkZ0Rlc2t0b3BQb3J0 YWxUaGVtZTo6UVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZSgpCisgICAgICAgICBpZiAocmVwbHkuaXNW YWxpZCgpKSB7CisgICAgICAgICAgICAgZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uID0gcmVw bHkudmFsdWUoKS50b1VJbnQoKTsKKyAgICAgICAgIH0KKysgICAgICAgIHdhdGNoZXItPmRlbGV0 ZUxhdGVyKCk7CisgICAgIH0pOworIH0KKyAKK0BAIC0xNTIsMTEgKzE1MywxMiBAQCBRUGxhdGZv cm1EaWFsb2dIZWxwZXIqIFFYZGdEZXNrdG9wUG9ydGFsVGhlbWU6OmNyZWF0ZVBsYXRmb3JtRGlh bG9nSGVscGVyKERpYWxvZworIHsKKyAgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsVGhl bWUpOworIAorLSAgICBpZiAodHlwZSA9PSBGaWxlRGlhbG9nKSB7CisrICAgIGlmICh0eXBlID09 IEZpbGVEaWFsb2cgJiYgZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKSB7CisgICAgICAgICAv LyBPbGRlciB2ZXJzaW9ucyBvZiBGaWxlQ2hvb3NlciBwb3J0YWwgZG9uJ3Qgc3VwcG9ydCBvcGVu aW5nIGRpcmVjdG9yaWVzLCB0aGVyZWZvcmUgd2UgZmFsbGJhY2sKKyAgICAgICAgIC8vIHRvIG5h dGl2ZSBmaWxlIGRpYWxvZyBvcGVuZWQgaW5zaWRlIHRoZSBzYW5kYm94IHRvIG9wZW4gYSBkaXJl Y3RvcnkuCistICAgICAgICBpZiAoZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uIDwgMyAmJiBk LT5iYXNlVGhlbWUtPnVzZVBsYXRmb3JtTmF0aXZlRGlhbG9nKHR5cGUpKQorLSAgICAgICAgICAg IHJldHVybiBuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKHN0YXRpY19jYXN0PFFQbGF0 Zm9ybUZpbGVEaWFsb2dIZWxwZXIqPihkLT5iYXNlVGhlbWUtPmNyZWF0ZVBsYXRmb3JtRGlhbG9n SGVscGVyKHR5cGUpKSk7CisrICAgICAgICBpZiAoZC0+YmFzZVRoZW1lLT51c2VQbGF0Zm9ybU5h dGl2ZURpYWxvZyh0eXBlKSkKKysgICAgICAgICAgICByZXR1cm4gbmV3IFFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZyhzdGF0aWNfY2FzdDxRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyKj4oZC0+ YmFzZVRoZW1lLT5jcmVhdGVQbGF0Zm9ybURpYWxvZ0hlbHBlcih0eXBlKSksCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+ZmlsZUNob29zZXJQ b3J0YWxWZXJzaW9uKTsKKyAKKyAgICAgICAgIHJldHVybiBuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50 c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3By aW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwCitpbmRleCA0M2Q1ZTExOWFkLi4x ZjljYmM0NTY1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9j dXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRz dXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZS5jcHAKK0BAIC04OSw4ICs4OSwxMCBAQCB2b2lk IFFDdXBzUHJpbnRFbmdpbmU6OnNldFByb3BlcnR5KFByaW50RW5naW5lUHJvcGVydHlLZXkga2V5 LCBjb25zdCBRVmFyaWFudCAmdgorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUFBLX0R1cGxl eDogeworICAgICAgICAgUVByaW50OjpEdXBsZXhNb2RlIG1vZGUgPSBRUHJpbnQ6OkR1cGxleE1v ZGUodmFsdWUudG9JbnQoKSk7CistICAgICAgICBpZiAobW9kZSAhPSBkLT5kdXBsZXggJiYgZC0+ bV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKG1vZGUpKQorKyAg ICAgICAgaWYgKGQtPm1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVwbGV4TW9kZXMoKS5jb250YWlu cyhtb2RlKSkgeworICAgICAgICAgICAgIGQtPmR1cGxleCA9IG1vZGU7CisrICAgICAgICAgICAg ZC0+ZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSA9IHRydWU7CisrICAgICAgICB9CisgICAgICAg ICBicmVhazsKKyAgICAgfQorICAgICBjYXNlIFBQS19QcmludGVyTmFtZToKK0BAIC0yNzcsOSAr Mjc5LDEyIEBAIHZvaWQgUUN1cHNQcmludEVuZ2luZVByaXZhdGU6OmNoYW5nZVByaW50ZXIoY29u c3QgUVN0cmluZyAmbmV3UHJpbnRlcikKKyAgICAgbV9wcmludERldmljZS5zd2FwKHByaW50RGV2 aWNlKTsKKyAgICAgcHJpbnRlck5hbWUgPSBtX3ByaW50RGV2aWNlLmlkKCk7CisgCistICAgIC8v IENoZWNrIGlmIG5ldyBwcmludGVyIHN1cHBvcnRzIGN1cnJlbnQgc2V0dGluZ3MsIG90aGVyd2lz ZSB1cyBkZWZhdWx0cworLSAgICBpZiAoZHVwbGV4ICE9IFFQcmludDo6RHVwbGV4QXV0byAmJiAh bV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKGR1cGxleCkpCisr ICAgIC8vIGluIGNhc2UgYSBkdXBsZXggdmFsdWUgd2FzIGV4cGxpY2l0bHkgc2V0LCBjaGVjayBp ZiBuZXcgcHJpbnRlciBzdXBwb3J0cyBjdXJyZW50IHZhbHVlLAorKyAgICAvLyBvdGhlcndpc2Ug dXNlIGRldmljZSBkZWZhdWx0CisrICAgIGlmICghZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSB8 fCAhbV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKGR1cGxleCkp IHsKKyAgICAgICAgIGR1cGxleCA9IG1fcHJpbnREZXZpY2UuZGVmYXVsdER1cGxleE1vZGUoKTsK KysgICAgICAgIGR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgPSBmYWxzZTsKKysgICAgfQorICAg ICBRUHJpbnQ6OkNvbG9yTW9kZSBjb2xvck1vZGUgPSBncmF5c2NhbGUgPyBRUHJpbnQ6OkdyYXlT Y2FsZSA6IFFQcmludDo6Q29sb3I7CisgICAgIGlmICghbV9wcmludERldmljZS5zdXBwb3J0ZWRD b2xvck1vZGVzKCkuY29udGFpbnMoY29sb3JNb2RlKSkKKyAgICAgICAgIGdyYXlzY2FsZSA9IG1f cHJpbnREZXZpY2UuZGVmYXVsdENvbG9yTW9kZSgpID09IFFQcmludDo6R3JheVNjYWxlOworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50 ZW5naW5lX3AuaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3By aW50ZW5naW5lX3AuaAoraW5kZXggYzAyMWIwYzY0My4uOGY4MWZlNDc4ZCAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lX3Au aAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRl bmdpbmVfcC5oCitAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGU6CisgICAgIFFTdHJpbmdMaXN0 IGN1cHNPcHRpb25zOworICAgICBRU3RyaW5nIGN1cHNUZW1wRmlsZTsKKyAgICAgUVByaW50OjpE dXBsZXhNb2RlIGR1cGxleDsKKysgICAgYm9vbCBkdXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5ID0g ZmFsc2U7CisgfTsKKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAgYi9xdGJhc2Uvc3JjL3Bs dWdpbnMvc3FsZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcAoraW5kZXggNjdlNzE1NGZhNi4u NDA4NzYxNTJlNSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2li YXNlL3FzcWxfaWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9p YmFzZS9xc3FsX2liYXNlLmNwcAorQEAgLTgxNyw3ICs4MTcsNyBAQCBib29sIFFJQmFzZVJlc3Vs dFByaXZhdGU6OndyaXRlQXJyYXkoaW50IGNvbHVtbiwgY29uc3QgUUxpc3Q8UVZhcmlhbnQ+ICZs aXN0KQorICAgICBiYS5yZXNpemUoaW50KGJ1ZkxlbikpOworIAorICAgICBpZiAobGlzdC5zaXpl KCkgPiBhcnJheVNpemUpIHsKKy0gICAgICAgIGVycm9yID0gUUxhdGluMVN0cmluZygiQXJyYXkg c2l6ZSBtaXNzbWF0Y2g6IHNpemUgb2YgJTEgaXMgJTIsIHNpemUgb2YgcHJvdmlkZWQgbGlzdCBp cyAlMyIpOworKyAgICAgICAgZXJyb3IgPSBRTGF0aW4xU3RyaW5nKCJBcnJheSBzaXplIG1pc21h dGNoOiBzaXplIG9mICUxIGlzICUyLCBzaXplIG9mIHByb3ZpZGVkIGxpc3QgaXMgJTMiKTsKKyAg ICAgICAgIGVycm9yID0gZXJyb3IuYXJnKFFMYXRpbjFTdHJpbmcoc3FsbmFtZSkpLmFyZyhhcnJh eVNpemUpLmFyZyhsaXN0LnNpemUoKSk7CisgICAgICAgICBxLT5zZXRMYXN0RXJyb3IoUVNxbEVy cm9yKGVycm9yLCBRTGF0aW4xU3RyaW5nKCIiKSwgUVNxbEVycm9yOjpTdGF0ZW1lbnRFcnJvcikp OworICAgICAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Nx bGRyaXZlcnMvbXlzcWwvcXNxbF9teXNxbC5jcHAKK2luZGV4IDdjYTA1NWVlYTIuLjZiYzlkNDY3 NTUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3Fs X215c3FsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvbXlzcWwvcXNx bF9teXNxbC5jcHAKK0BAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgorICAgICBzdHJ1Y3QgUU15 RmllbGQKKyAgICAgeworICAgICAgICAgY2hhciAqb3V0RmllbGQgPSBudWxscHRyOworLSAgICAg ICAgTVlTUUxfRklFTEQgKm15RmllbGQgPSBudWxscHRyOworKyAgICAgICAgY29uc3QgTVlTUUxf RklFTEQgKm15RmllbGQgPSBudWxscHRyOworICAgICAgICAgUU1ldGFUeXBlOjpUeXBlIHR5cGUg PSBRTWV0YVR5cGU6OlVua25vd25UeXBlOworICAgICAgICAgbXlfYm9vbCBudWxsSW5kaWNhdG9y ID0gZmFsc2U7CisgICAgICAgICB1bG9uZyBidWZMZW5ndGggPSAwdWw7CitAQCAtMzYxLDcgKzM2 MSw3IEBAIHN0YXRpYyBib29sIHFJc0ludGVnZXIoaW50IHQpCisgdm9pZCBRTVlTUUxSZXN1bHRQ cml2YXRlOjpiaW5kQmxvYnMoKQorIHsKKyAgICAgaW50IGk7CistICAgIE1ZU1FMX0ZJRUxEICpm aWVsZEluZm87CisrICAgIGNvbnN0IE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87CisgICAgIE1ZU1FM X0JJTkQgKmJpbmQ7CisgCisgICAgIGZvcihpID0gMDsgaSA8IGZpZWxkcy5jb3VudCgpOyArK2kp IHsKK0BAIC0zNzksNyArMzc5LDYgQEAgdm9pZCBRTVlTUUxSZXN1bHRQcml2YXRlOjpiaW5kQmxv YnMoKQorIGJvb2wgUU1ZU1FMUmVzdWx0UHJpdmF0ZTo6YmluZEluVmFsdWVzKCkKKyB7CisgICAg IE1ZU1FMX0JJTkQgKmJpbmQ7CistICAgIGNoYXIgKmZpZWxkOworICAgICBpbnQgaSA9IDA7Cisg CisgICAgIGlmICghbWV0YSkKK0BAIC0zOTIsMzUgKzM5MSwzNCBAQCBib29sIFFNWVNRTFJlc3Vs dFByaXZhdGU6OmJpbmRJblZhbHVlcygpCisgICAgIGluQmluZHMgPSBuZXcgTVlTUUxfQklORFtm aWVsZHMuc2l6ZSgpXTsKKyAgICAgbWVtc2V0KGluQmluZHMsIDAsIGZpZWxkcy5zaXplKCkgKiBz aXplb2YoTVlTUUxfQklORCkpOworIAorLSAgICBNWVNRTF9GSUVMRCAqZmllbGRJbmZvOworKyAg ICBjb25zdCBNWVNRTF9GSUVMRCAqZmllbGRJbmZvOworIAorICAgICB3aGlsZSgoZmllbGRJbmZv ID0gbXlzcWxfZmV0Y2hfZmllbGQobWV0YSkpKSB7CisrICAgICAgICBiaW5kID0gJmluQmluZHNb aV07CisrCisgICAgICAgICBRTXlGaWVsZCAmZiA9IGZpZWxkc1tpXTsKKyAgICAgICAgIGYubXlG aWVsZCA9IGZpZWxkSW5mbzsKKy0KKysgICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1 Zkxlbmd0aCA9IGZpZWxkSW5mby0+bGVuZ3RoICsgMTsKKysgICAgICAgIGJpbmQtPmJ1ZmZlcl90 eXBlID0gZmllbGRJbmZvLT50eXBlOworICAgICAgICAgZi50eXBlID0gcURlY29kZU1ZU1FMVHlw ZShmaWVsZEluZm8tPnR5cGUsIGZpZWxkSW5mby0+ZmxhZ3MpOworICAgICAgICAgaWYgKHFJc0Js b2IoZmllbGRJbmZvLT50eXBlKSkgeworICAgICAgICAgICAgIC8vIHRoZSBzaXplIG9mIGEgYmxv Yi1maWVsZCBpcyBhdmFpbGFibGUgYXMgc29vbiBhcyB3ZSBjYWxsCisgICAgICAgICAgICAgLy8g bXlzcWxfc3RtdF9zdG9yZV9yZXN1bHQoKQorICAgICAgICAgICAgIC8vIGFmdGVyIG15c3FsX3N0 bXRfZXhlYygpIGluIFFNWVNRTFJlc3VsdDo6ZXhlYygpCistICAgICAgICAgICAgZmllbGRJbmZv LT5sZW5ndGggPSAwOworKyAgICAgICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1Zkxl bmd0aCA9IDA7CisgICAgICAgICAgICAgaGFzQmxvYnMgPSB0cnVlOworICAgICAgICAgfSBlbHNl IGlmIChxSXNJbnRlZ2VyKGYudHlwZSkpIHsKKy0gICAgICAgICAgICBmaWVsZEluZm8tPmxlbmd0 aCA9IDg7CisrICAgICAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3RoID0g ODsKKyAgICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAgZmllbGRJbmZvLT50eXBlID0gTVlT UUxfVFlQRV9TVFJJTkc7CisrICAgICAgICAgICAgYmluZC0+YnVmZmVyX3R5cGUgPSBNWVNRTF9U WVBFX1NUUklORzsKKyAgICAgICAgIH0KKy0gICAgICAgIGJpbmQgPSAmaW5CaW5kc1tpXTsKKy0g ICAgICAgIGZpZWxkID0gbmV3IGNoYXJbZmllbGRJbmZvLT5sZW5ndGggKyAxXTsKKy0gICAgICAg IG1lbXNldChmaWVsZCwgMCwgZmllbGRJbmZvLT5sZW5ndGggKyAxKTsKKyAKKy0gICAgICAgIGJp bmQtPmJ1ZmZlcl90eXBlID0gZmllbGRJbmZvLT50eXBlOworLSAgICAgICAgYmluZC0+YnVmZmVy ID0gZmllbGQ7CistICAgICAgICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSBm aWVsZEluZm8tPmxlbmd0aCArIDE7CisgICAgICAgICBiaW5kLT5pc19udWxsID0gJmYubnVsbElu ZGljYXRvcjsKKyAgICAgICAgIGJpbmQtPmxlbmd0aCA9ICZmLmJ1Zkxlbmd0aDsKKyAgICAgICAg IGJpbmQtPmlzX3Vuc2lnbmVkID0gZmllbGRJbmZvLT5mbGFncyAmIFVOU0lHTkVEX0ZMQUcgPyAx IDogMDsKKy0gICAgICAgIGYub3V0RmllbGQ9ZmllbGQ7CisrCisrICAgICAgICBjaGFyICpmaWVs ZCA9IG5ldyBjaGFyW2JpbmQtPmJ1ZmZlcl9sZW5ndGggKyAxXXt9OworKyAgICAgICAgYmluZC0+ YnVmZmVyID0gZi5vdXRGaWVsZCA9IGZpZWxkOworIAorICAgICAgICAgKytpOworICAgICB9CitA QCAtMTM2OSwyMCArMTM2NywyMCBAQCBib29sIFFNWVNRTERyaXZlcjo6b3Blbihjb25zdCBRU3Ry aW5nJiBkYiwKKyAgICAgfQorIAorICNpZiBNWVNRTF9WRVJTSU9OX0lEID49IDUwMDA3CistICAg IGlmIChteXNxbF9nZXRfY2xpZW50X3ZlcnNpb24oKSA+PSA1MDUwMyAmJiBteXNxbF9nZXRfc2Vy dmVyX3ZlcnNpb24oZC0+bXlzcWwpID49IDUwNTAzKSB7CistICAgICAgICAvLyBmb3JjZSB0aGUg Y29tbXVuaWNhdGlvbiB0byBiZSB1dGY4bWI0IChvbmx5IHV0ZjhtYjQgc3VwcG9ydHMgNC1ieXRl IGNoYXJhY3RlcnMpCistICAgICAgICBteXNxbF9zZXRfY2hhcmFjdGVyX3NldChkLT5teXNxbCwg InV0ZjhtYjQiKTsKKysgICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRpb24gdG8gYmUgdXRmOG1i NCAob25seSB1dGY4bWI0IHN1cHBvcnRzIDQtYnl0ZSBjaGFyYWN0ZXJzKQorKyAgICBpZiAobXlz cWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4bWI0IikpIHsKKysgICAgICAgIC8v IHRoaXMgZmFpbGVkLCB0cnkgZm9yY2luZyBpdCB0byB1dGYgKEJNUCBvbmx5KQorKyAgICAgICAg aWYgKG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAidXRmOCIpKQorKyAgICAgICAg ICAgIHFXYXJuaW5nKCkgPDwgIk15U1FMOiBVbmFibGUgdG8gc2V0IHRoZSBjbGllbnQgY2hhcmFj dGVyIHNldCB0byB1dGY4LiI7CisgI2lmIFFUX0NPTkZJRyh0ZXh0Y29kZWMpCistICAgICAgICBk LT50YyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZSgiVVRGLTgiKTsKKysgICAgICAgIGVsc2UK KysgICAgICAgICAgICBkLT50YyA9IGNvZGVjKGQtPm15c3FsKTsKKyAjZW5kaWYKKy0gICAgfSBl bHNlCistICAgIHsKKy0gICAgICAgIC8vIGZvcmNlIHRoZSBjb21tdW5pY2F0aW9uIHRvIGJlIHV0 ZjgKKy0gICAgICAgIG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAidXRmOCIpOwor KyAgICB9CisgI2lmIFFUX0NPTkZJRyh0ZXh0Y29kZWMpCistICAgICAgICBkLT50YyA9IGNvZGVj KGQtPm15c3FsKTsKKysgICAgZWxzZQorKyAgICAgICAgZC0+dGMgPSBRVGV4dENvZGVjOjpjb2Rl Y0Zvck5hbWUoIlVURi04Iik7CisgI2VuZGlmCistICAgIH0KKyAjZW5kaWYgIC8vIE1ZU1FMX1ZF UlNJT05fSUQgPj0gNTAwMDcKKyAKKyAgICAgZC0+cHJlcGFyZWRRdWVyeXNFbmFibGVkID0gY2hl Y2tQcmVwYXJlZFF1ZXJpZXMoZC0+bXlzcWwpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50LTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXItMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEw MCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQtMjQu cG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVyLTI0 LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2Vz L3ByaW50LTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3By aW50ZXItMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQtMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVyLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0yNC5wbmcg Yi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2lu Zy0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMjQucG5nCityZW5hbWUgdG8gc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0yNC5wbmcKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBh Z2Utc2lkZWQtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv dmlldy1wYWdlcy1mYWNpbmctMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBm cm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTMyLnBu ZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1m YWNpbmctMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvdmlldy1wYWdlLW11bHRpLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMjQucG5nCitzaW1pbGFyaXR5IGlu ZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmll dy1wYWdlLW11bHRpLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVsdGktMzIucG5nIGIvcXRi YXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0z Mi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9y dC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVsdGktMzIucG5nCityZW5hbWUgdG8gc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTMyLnBuZworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFn ZS1vbmUtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmll dy1wYWdlcy1zaW5nbGUtMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9t IHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9uZS0yNC5wbmcKK3Jl bmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xl LTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3ZpZXctcGFnZS1vbmUtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUK K3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9u ZS0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXct cGFnZXMtc2luZ2xlLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEw MCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXBhZ2Ut MjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZp dC1wYWdlLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL2ZpdC1wYWdlLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3Jl bmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXBhZ2UtMzIucG5n CityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC1wYWdl LTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL2ZpdC13aWR0aC0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy96b29tLWZpdC13aWR0aC0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1l IGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMjQucG5nCity ZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0y NC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdl cy9maXQtd2lkdGgtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvem9vbS1maXQtd2lkdGgtMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBm cm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRoLTMyLnBuZworcmVu YW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtd2lkdGgtMzIu cG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcGFnZXNl dHVwZGlhbG9nX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcGFn ZXNldHVwZGlhbG9nX3VuaXguY3BwCitpbmRleCA3OGU1YjhkMWVmLi4yYTI4NTE2NzE5IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcGFnZXNldHVwZGlhbG9n X3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0 dXBkaWFsb2dfdW5peC5jcHAKK0BAIC01MzIsNiArNTMyLDcgQEAgdm9pZCBRUGFnZVNldHVwV2lk Z2V0Ojp1cGRhdGVXaWRnZXQoKQorIHZvaWQgUVBhZ2VTZXR1cFdpZGdldDo6c2V0dXBQcmludGVy KCkgY29uc3QKKyB7CisgICAgIG1fcHJpbnRlci0+c2V0UGFnZUxheW91dChtX3BhZ2VMYXlvdXQp OworKyAgICBtX3ByaW50ZXItPnNldFBhZ2VPcmllbnRhdGlvbihtX3BhZ2VMYXlvdXQub3JpZW50 YXRpb24oKSk7CisgI2lmIFFUX0NPTkZJRyhjdXBzKQorICAgICBRQ1VQU1N1cHBvcnQ6OlBhZ2Vz UGVyU2hlZXQgcGFnZXNQZXJTaGVldCA9IHF2YXJpYW50X2Nhc3Q8UUNVUFNTdXBwb3J0OjpQYWdl c1BlclNoZWV0PihtX3VpLnBhZ2VzUGVyU2hlZXRDb21iby0+Y3VycmVudERhdGEoKQorICk7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2cu cXJjIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2cucXJjCitp bmRleCA1YTU3OWJhYTU1Li4xMGI4ZTFkMzQxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2cucXJjCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMKK0BAIC0xLDkgKzEsOSBAQAorIDwhRE9D VFlQRSBSQ0M+PFJDQyB2ZXJzaW9uPSIxLjAiPgorIDxxcmVzb3VyY2UgcHJlZml4PSIvcXQtcHJv amVjdC5vcmcvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nIj4KKy08ZmlsZT5pbWFnZXMvZml0 LXBhZ2UtMjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy9maXQtcGFnZS0zMi5wbmc8L2ZpbGU+ CistPGZpbGU+aW1hZ2VzL2ZpdC13aWR0aC0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL2Zp dC13aWR0aC0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXBhZ2UtMjQucG5n PC9maWxlPgorKzxmaWxlPmltYWdlcy96b29tLWZpdC1wYWdlLTMyLnBuZzwvZmlsZT4KKys8Zmls ZT5pbWFnZXMvem9vbS1maXQtd2lkdGgtMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy96b29t LWZpdC13aWR0aC0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL2dvLWZpcnN0LTI0LnBuZzwv ZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tZmlyc3QtMzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdl cy9nby1sYXN0LTI0LnBuZzwvZmlsZT4KK0BAIC0xOCwxNCArMTgsMTQgQEAKKyA8ZmlsZT5pbWFn ZXMvbGF5b3V0LXBvcnRyYWl0LTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvcGFnZS1zZXR1 cC0yNC5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3BhZ2Utc2V0dXAtMzIucG5nPC9maWxlPgor LTxmaWxlPmltYWdlcy9wcmludC0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ByaW50LTMy LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW11bHRpLTI0LnBuZzwvZmlsZT4K Ky08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW11bHRpLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFn ZXMvdmlldy1wYWdlLW9uZS0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1v bmUtMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMjQucG5nPC9m aWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMzIucG5nPC9maWxlPgorKzxmaWxl PmltYWdlcy9wcmludGVyLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvcHJpbnRlci0zMi5w bmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMjQucG5nPC9maWxl PgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTMyLnBuZzwvZmlsZT4KKys8Zmls ZT5pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92 aWV3LXBhZ2VzLXNpbmdsZS0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMt ZmFjaW5nLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMzIu cG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy96b29tLWluLTI0LnBuZzwvZmlsZT4KKyA8ZmlsZT5p bWFnZXMvem9vbS1pbi0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3pvb20tb3V0LTI0LnBu ZzwvZmlsZT4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3Fw cmludGRpYWxvZ191bml4LmNwcCBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBy aW50ZGlhbG9nX3VuaXguY3BwCitpbmRleCBjNWI4NDVmNGVjLi41YTViYTFkMGE4IDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5peC5j cHAKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nX3Vu aXguY3BwCitAQCAtNzAyLDEzICs3MDIsMTQgQEAgdm9pZCBRUHJpbnREaWFsb2dQcml2YXRlOjpz ZWxlY3RQcmludGVyKGNvbnN0IFFQcmludGVyOjpPdXRwdXRGb3JtYXQgb3V0cHV0Rm9ybWEKKyAg ICAgICAgIGVsc2UKKyAgICAgICAgICAgICBvcHRpb25zLmdyYXlzY2FsZS0+c2V0Q2hlY2tlZCh0 cnVlKTsKKyAKKy0gICAgICAgIC8vIGtlZXAgZHVwbGV4IHZhbHVlIGV4cGxpY2l0bHkgc2V0IGJ5 IHVzZXIsIGlmIGFueSwgYW5kIHNlbGVjdGVkIHByaW50ZXIgc3VwcG9ydHMgaXQ7CistICAgICAg ICAvLyB1c2UgZGV2aWNlIGRlZmF1bHQgb3RoZXJ3aXNlCisrICAgICAgICAvLyBkdXBsZXggcHJp b3JpdGllcyB0byBiZSBhcyBmb2xsb3dzOgorKyAgICAgICAgLy8gMSkgYSB1c2VyLXNlbGVjdGVk IGR1cGxleCB2YWx1ZSBpbiB0aGUgZGlhbG9nIGhhcyBoaWdoZXN0IHByb3JpdHkKKysgICAgICAg IC8vIDIpIGR1cGxleCB2YWx1ZSBzZXQgaW4gdGhlIFFQcmludGVyCisgICAgICAgICBRUHJpbnQ6 OkR1cGxleE1vZGUgZHVwbGV4OworICAgICAgICAgaWYgKGV4cGxpY2l0RHVwbGV4TW9kZSAhPSBR UHJpbnQ6OkR1cGxleEF1dG8gJiYgc3VwcG9ydGVkRHVwbGV4TW9kZS5jb250YWlucyhleHBsaWNp dER1cGxleE1vZGUpKQorICAgICAgICAgICAgIGR1cGxleCA9IGV4cGxpY2l0RHVwbGV4TW9kZTsK KyAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICBkdXBsZXggPSB0b3AtPmQtPm1fY3VycmVudFBy aW50RGV2aWNlLmRlZmF1bHREdXBsZXhNb2RlKCk7CisrICAgICAgICAgICAgZHVwbGV4ID0gc3Rh dGljX2Nhc3Q8UVByaW50OjpEdXBsZXhNb2RlPihwLT5kdXBsZXgoKSk7CisgICAgICAgICBzd2l0 Y2ggKGR1cGxleCkgeworICAgICAgICAgY2FzZSBRUHJpbnQ6OkR1cGxleE5vbmU6CisgICAgICAg ICAgICAgb3B0aW9ucy5ub0R1cGxleC0+c2V0Q2hlY2tlZCh0cnVlKTsgYnJlYWs7CitAQCAtMTI0 MiwxMCArMTI0MywxMCBAQCB2b2lkIFFVbml4UHJpbnRXaWRnZXRQcml2YXRlOjpfcV9wcmludGVy Q2hhbmdlZChpbnQgaW5kZXgpCisgICAgICAgICAgICAgUVN0cmluZyBmaWxlbmFtZSA9IHdpZGdl dC5maWxlbmFtZS0+dGV4dCgpOworICAgICAgICAgICAgIHdpZGdldC5maWxlbmFtZS0+c2V0VGV4 dChmaWxlbmFtZSk7CisgICAgICAgICAgICAgd2lkZ2V0LmxPdXRwdXQtPnNldEVuYWJsZWQodHJ1 ZSk7CistICAgICAgICAgICAgaWYgKG9wdGlvbnNQYW5lKQorLSAgICAgICAgICAgICAgICBvcHRp b25zUGFuZS0+c2VsZWN0UHJpbnRlcihRUHJpbnRlcjo6UGRmRm9ybWF0KTsKKyAgICAgICAgICAg ICBwcmludGVyLT5zZXRPdXRwdXRGb3JtYXQoUVByaW50ZXI6OlBkZkZvcm1hdCk7CisgICAgICAg ICAgICAgbV9jdXJyZW50UHJpbnREZXZpY2UgPSBRUHJpbnREZXZpY2UoKTsKKysgICAgICAgICAg ICBpZiAob3B0aW9uc1BhbmUpCisrICAgICAgICAgICAgICAgIG9wdGlvbnNQYW5lLT5zZWxlY3RQ cmludGVyKFFQcmludGVyOjpQZGZGb3JtYXQpOworICAgICAgICAgICAgIHJldHVybjsKKyAgICAg ICAgIH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3BwCitpbmRleCAzOTU3NWQ1ZjU3Li4yM2I3ZTg5NTM4 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRwcmV2 aWV3ZGlhbG9nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJp bnRwcmV2aWV3ZGlhbG9nLmNwcAorQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lkIFFQcmludFByZXZp ZXdEaWFsb2dQcml2YXRlOjppbml0KFFQcmludGVyICpfcHJpbnRlcikKKyBzdGF0aWMgaW5saW5l IHZvaWQgcXRfc2V0dXBBY3Rpb25JY29uKFFBY3Rpb24gKmFjdGlvbiwgUUxhdGluMVN0cmluZyBu YW1lKQorIHsKKyAgICAgUUxhdGluMVN0cmluZyBpbWFnZVByZWZpeCgiOi9xdC1wcm9qZWN0Lm9y Zy9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cvaW1hZ2VzLyIpOworLSAgICBRSWNvbiBpY29u OworKyAgICBRSWNvbiBpY29uID0gUUljb246OmZyb21UaGVtZShuYW1lKTsKKyAgICAgaWNvbi5h ZGRGaWxlKGltYWdlUHJlZml4ICsgbmFtZSArIFFMYXRpbjFTdHJpbmcoIi0yNC5wbmciKSwgUVNp emUoMjQsIDI0KSk7CisgICAgIGljb24uYWRkRmlsZShpbWFnZVByZWZpeCArIG5hbWUgKyBRTGF0 aW4xU3RyaW5nKCItMzIucG5nIiksIFFTaXplKDMyLCAzMikpOworICAgICBhY3Rpb24tPnNldElj b24oaWNvbik7CitAQCAtMzgzLDggKzM4Myw4IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1By aXZhdGU6OnNldHVwQWN0aW9ucygpCisgICAgIGZpdFBhZ2VBY3Rpb24tPnNldE9iamVjdE5hbWUo UUxhdGluMVN0cmluZygiZml0UGFnZUFjdGlvbiIpKTsKKyAgICAgZml0V2lkdGhBY3Rpb24tPnNl dENoZWNrYWJsZSh0cnVlKTsKKyAgICAgZml0UGFnZUFjdGlvbi0+c2V0Q2hlY2thYmxlKHRydWUp OworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0V2lkdGhBY3Rpb24sIFFMYXRpbjFTdHJpbmco ImZpdC13aWR0aCIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKGZpdFBhZ2VBY3Rpb24sIFFM YXRpbjFTdHJpbmcoImZpdC1wYWdlIikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0V2lk dGhBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInpvb20tZml0LXdpZHRoIikpOworKyAgICBxdF9zZXR1 cEFjdGlvbkljb24oZml0UGFnZUFjdGlvbiwgUUxhdGluMVN0cmluZygiem9vbS1maXQtcGFnZSIp KTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChmaXRHcm91cCwgU0lHTkFMKHRyaWdnZXJlZChRQWN0 aW9uKikpLCBxLCBTTE9UKF9xX2ZpdChRQWN0aW9uKikpKTsKKyAKKyAgICAgLy8gWm9vbQorQEAg LTQxMCw5ICs0MTAsOSBAQCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQcml2YXRlOjpzZXR1cEFj dGlvbnMoKQorICAgICBzaW5nbGVNb2RlQWN0aW9uID0gbW9kZUdyb3VwLT5hZGRBY3Rpb24oUUNv cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlNob3cgc2lu Z2xlIHBhZ2UiKSk7CisgICAgIGZhY2luZ01vZGVBY3Rpb24gPSBtb2RlR3JvdXAtPmFkZEFjdGlv bihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiU2hv dyBmYWNpbmcgcGFnZXMiKSk7CisgICAgIG92ZXJ2aWV3TW9kZUFjdGlvbiA9IG1vZGVHcm91cC0+ YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxv ZyIsICJTaG93IG92ZXJ2aWV3IG9mIGFsbCBwYWdlcyIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25J Y29uKHNpbmdsZU1vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZS1vbmUiKSk7Cist ICAgIHF0X3NldHVwQWN0aW9uSWNvbihmYWNpbmdNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2 aWV3LXBhZ2Utc2lkZWQiKSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihvdmVydmlld01vZGVB Y3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZS1tdWx0aSIpKTsKKysgICAgcXRfc2V0dXBB Y3Rpb25JY29uKHNpbmdsZU1vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZXMtc2lu Z2xlIikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24oZmFjaW5nTW9kZUFjdGlvbiwgUUxhdGlu MVN0cmluZygidmlldy1wYWdlcy1mYWNpbmciKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihv dmVydmlld01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZXMtb3ZlcnZpZXciKSk7 CisgICAgIHNpbmdsZU1vZGVBY3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0cmluZygic2lu Z2xlTW9kZUFjdGlvbiIpKTsKKyAgICAgZmFjaW5nTW9kZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShR TGF0aW4xU3RyaW5nKCJmYWNpbmdNb2RlQWN0aW9uIikpOworICAgICBvdmVydmlld01vZGVBY3Rp b24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0cmluZygib3ZlcnZpZXdNb2RlQWN0aW9uIikpOwor QEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQcml2YXRlOjpzZXR1 cEFjdGlvbnMoKQorICAgICBwcmludGVyR3JvdXAgPSBuZXcgUUFjdGlvbkdyb3VwKHEpOworICAg ICBwcmludEFjdGlvbiA9IHByaW50ZXJHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246 OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIsICJQcmludCIpKTsKKyAgICAgcGFnZVNl dHVwQWN0aW9uID0gcHJpbnRlckdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJh bnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlBhZ2Ugc2V0dXAiKSk7CistICAgIHF0X3Nl dHVwQWN0aW9uSWNvbihwcmludEFjdGlvbiwgUUxhdGluMVN0cmluZygicHJpbnQiKSk7CisrICAg IHF0X3NldHVwQWN0aW9uSWNvbihwcmludEFjdGlvbiwgUUxhdGluMVN0cmluZygicHJpbnRlciIp KTsKKyAgICAgcXRfc2V0dXBBY3Rpb25JY29uKHBhZ2VTZXR1cEFjdGlvbiwgUUxhdGluMVN0cmlu ZygicGFnZS1zZXR1cCIpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChwcmludEFjdGlvbiwgU0lH TkFMKHRyaWdnZXJlZChib29sKSksIHEsIFNMT1QoX3FfcHJpbnQoKSkpOworICAgICBRT2JqZWN0 Ojpjb25uZWN0KHBhZ2VTZXR1cEFjdGlvbiwgU0lHTkFMKHRyaWdnZXJlZChib29sKSksIHEsIFNM T1QoX3FfcGFnZVNldHVwKCkpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3NxbC9rZXJuZWwv cXNxbHF1ZXJ5LmNwcCBiL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVlcnkuY3BwCitpbmRl eCAzMmM2MTY2Yzc5Li42MGFmZWYxMGMzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9zcWwva2Vy bmVsL3FzcWxxdWVyeS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVlcnku Y3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqCistKiogQ29w eXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIw MjIgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xp Y2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFNxbCBtb2R1bGUg b2YgdGhlIFF0IFRvb2xraXQuCitAQCAtMzc3LDYgKzM3NywxMCBAQCBib29sIFFTcWxRdWVyeTo6 ZXhlYyhjb25zdCBRU3RyaW5nJiBxdWVyeSkKKyAgICAgUUVsYXBzZWRUaW1lciB0OworICAgICB0 LnN0YXJ0KCk7CisgI2VuZGlmCisrICAgIGlmICghZHJpdmVyKCkpIHsKKysgICAgICAgIHFXYXJu aW5nKCJRU3FsUXVlcnk6OmV4ZWM6IGNhbGxlZCBiZWZvcmUgZHJpdmVyIGhhcyBiZWVuIHNldCB1 cCIpOworKyAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisgICAgIGlmIChkLT5yZWYubG9h ZFJlbGF4ZWQoKSAhPSAxKSB7CisgICAgICAgICBib29sIGZvID0gaXNGb3J3YXJkT25seSgpOwor ICAgICAgICAgKnRoaXMgPSBRU3FsUXVlcnkoZHJpdmVyKCktPmNyZWF0ZVJlc3VsdCgpKTsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNw cCBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCitpbmRl eCA4ZWZiOWM1M2Q0Li5jZTA2MmY2NmQ3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy90ZXN0bGli L3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvdGVzdGxpYi9x YWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCitAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgUUFi c3RyYWN0SXRlbU1vZGVsVGVzdGVyUHJpdmF0ZTo6cGFyZW50KCkKKyAKKyAgICAgLy8gQ29tbW9u IGVycm9yIHRlc3QgIzIsIG1ha2Ugc3VyZSB0aGF0IGEgc2Vjb25kIGxldmVsIGluZGV4IGhhcyBh IHBhcmVudAorICAgICAvLyB0aGF0IGlzIHRoZSBmaXJzdCBsZXZlbCBpbmRleC4KKy0gICAgaWYg KG1vZGVsLT5yb3dDb3VudCh0b3BJbmRleCkgPiAwKSB7CisrICAgIGlmIChtb2RlbC0+cm93Q291 bnQodG9wSW5kZXgpID4gMCAmJiBtb2RlbC0+Y29sdW1uQ291bnQodG9wSW5kZXgpID4gMCkgewor ICAgICAgICAgUU1vZGVsSW5kZXggY2hpbGRJbmRleCA9IG1vZGVsLT5pbmRleCgwLCAwLCB0b3BJ bmRleCk7CisgICAgICAgICBNT0RFTFRFU1RFUl9WRVJJRlkoY2hpbGRJbmRleC5pc1ZhbGlkKCkp OworICAgICAgICAgTU9ERUxURVNURVJfQ09NUEFSRShtb2RlbC0+cGFyZW50KGNoaWxkSW5kZXgp LCB0b3BJbmRleCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy90ZXN0bGliL3Fhc2NpaWtleS5j cHAgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcAoraW5kZXggOWEzMDhkYTJiYy4u OTM0OThiMjU2ZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcAorQEAgLTQ5OCw2ICs0OTgs MTEgQEAgY2hhciBRVGVzdDo6a2V5VG9Bc2NpaShRdDo6S2V5IGtleSkKKyAgICAgY2FzZSBRdDo6 S2V5X0xhdW5jaEUgOiByZXR1cm4gMDsgLy8gPSAweDEwYjAsCisgICAgIGNhc2UgUXQ6OktleV9M YXVuY2hGIDogcmV0dXJuIDA7IC8vID0gMHgxMGIxLAorIAorKyAgICAvLyBLZXlwYWQgbmF2aWdh dGlvbiBrZXlzCisrICAgIGNhc2UgUXQ6OktleV9TZWxlY3QgOiByZXR1cm4gMDsgLy8gPSAweDAx MDEwMDAwCisrICAgIGNhc2UgUXQ6OktleV9ZZXMgOiByZXR1cm4gMDsgLy8gPSAweDAxMDEwMDAx CisrICAgIGNhc2UgUXQ6OktleV9ObyA6IHJldHVybiAwOyAvLyA9IDB4MDEwMTAwMDIKKysKKyAg ICAgZGVmYXVsdDogUVRFU1RfQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7CisgICAgIH0KKyB9Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVzdWx0LmNwcCBiL3F0YmFzZS9z cmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAKK2luZGV4IDg4MDI4YWFjNmUuLjJlODk5MzA3NzYg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwCitAQCAtMjUxLDcgKzI1MSw4IEBAIGJv b2wgUVRlc3RSZXN1bHQ6OnZlcmlmeShib29sIHN0YXRlbWVudCwgY29uc3QgY2hhciAqc3RhdGVt ZW50U3RyLAorIHsKKyAgICAgUVRFU1RfQVNTRVJUKHN0YXRlbWVudFN0cik7CisgCistICAgIGNo YXIgbXNnWzEwMjRdID0geydcMCd9OworKyAgICBjaGFyIG1zZ1sxMDI0XTsKKysgICAgbXNnWzBd ID0gJ1wwJzsKKyAKKyAgICAgaWYgKFFUZXN0TG9nOjp2ZXJib3NlTGV2ZWwoKSA+PSAyKSB7Cisg ICAgICAgICBxc25wcmludGYobXNnLCAxMDI0LCAiUVZFUklGWSglcykiLCBzdGF0ZW1lbnRTdHIp OworQEAgLTMwOSw3ICszMTAsOCBAQCBzdGF0aWMgYm9vbCBjb21wYXJlSGVscGVyKGJvb2wgc3Vj Y2VzcywgY29uc3QgY2hhciAqZmFpbHVyZU1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGJvb2wgaGFzVmFsdWVzID0gdHJ1ZSkKKyB7CisgICAgIGNvbnN0IHNpemVfdCBtYXhNc2dMZW4g PSAxMDI0OworLSAgICBjaGFyIG1zZ1ttYXhNc2dMZW5dID0geydcMCd9OworKyAgICBjaGFyIG1z Z1ttYXhNc2dMZW5dOworKyAgICBtc2dbMF0gPSAnXDAnOworIAorICAgICBRVEVTVF9BU1NFUlQo ZXhwZWN0ZWQpOworICAgICBRVEVTVF9BU1NFUlQoYWN0dWFsKTsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3dpZGdldHMvZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwIGIvcXRiYXNlL3NyYy93aWRn ZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcAoraW5kZXggNDI0NzczMTI3NS4uY2IzMjViZTg1 YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5j cHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5jcHAKK0BA IC03OCw3ICs3OCwxMCBAQAorICNpbmNsdWRlICJxd2luZG93LmgiCisgCisgI2luY2x1ZGUgInBy aXZhdGUvcWRpYWxvZ19wLmgiCisrI2luY2x1ZGUgInByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3Au aCIKKyAKKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXNlcnZpY2VzLmg+CisrI2luY2x1ZGUgPHFw YS9xcGxhdGZvcm1pbnRlZ3JhdGlvbi5oPgorICNpbmNsdWRlIDxhbGdvcml0aG0+CisgCisgUVRf QkVHSU5fTkFNRVNQQUNFCitAQCAtMTYxMSw2ICsxNjE0LDIwIEBAIHZvaWQgUUNvbG9yRGlhbG9n UHJpdmF0ZTo6X3FfbmV3U3RhbmRhcmQoaW50IHIsIGludCBjKQorIHZvaWQgUUNvbG9yRGlhbG9n UHJpdmF0ZTo6X3FfcGlja1NjcmVlbkNvbG9yKCkKKyB7CisgICAgIFFfUShRQ29sb3JEaWFsb2cp OworKworKyAgICBhdXRvICpwbGF0Zm9ybVNlcnZpY2VzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0 ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5zZXJ2aWNlcygpOworKyAgICBpZiAocGxhdGZvcm1T ZXJ2aWNlcy0+aGFzQ2FwYWJpbGl0eShRUGxhdGZvcm1TZXJ2aWNlczo6Q2FwYWJpbGl0eTo6Q29s b3JQaWNraW5nKSkgeworKyAgICAgICAgaWYgKGF1dG8gKmNvbG9yUGlja2VyID0gcGxhdGZvcm1T ZXJ2aWNlcy0+Y29sb3JQaWNrZXIocS0+d2luZG93SGFuZGxlKCkpKSB7CisrICAgICAgICAgICAg cS0+Y29ubmVjdChjb2xvclBpY2tlciwgJlFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlcjo6Y29s b3JQaWNrZWQsIHEsCisrICAgICAgICAgICAgICAgICAgICAgICBbcSwgY29sb3JQaWNrZXJdKGNv bnN0IFFDb2xvciAmY29sb3IpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclBp Y2tlci0+ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBxLT5zZXRD dXJyZW50Q29sb3IoY29sb3IpOworKyAgICAgICAgICAgICAgICAgICAgICAgfSk7CisrICAgICAg ICAgICAgY29sb3JQaWNrZXItPnBpY2tDb2xvcigpOworKyAgICAgICAgICAgIHJldHVybjsKKysg ICAgICAgIH0KKysgICAgfQorKworICAgICBpZiAoIWNvbG9yUGlja2luZ0V2ZW50RmlsdGVyKQor ICAgICAgICAgY29sb3JQaWNraW5nRXZlbnRGaWx0ZXIgPSBuZXcgUUNvbG9yUGlja2luZ0V2ZW50 RmlsdGVyKHRoaXMsIHEpOworICAgICBxLT5pbnN0YWxsRXZlbnRGaWx0ZXIoY29sb3JQaWNraW5n RXZlbnRGaWx0ZXIpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3Mv cWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3Mv cWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcAoraW5kZXggZTEyMDgxN2VkYy4uOGVhMzZiNTQyNyAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWFic3RyYWN0aXRlbWRl bGVnYXRlLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3Rp dGVtZGVsZWdhdGUuY3BwCitAQCAtNDAwLDEyICs0MDAsNyBAQCBib29sIFFBYnN0cmFjdEl0ZW1E ZWxlZ2F0ZTo6aGVscEV2ZW50KFFIZWxwRXZlbnQgKmV2ZW50LAorICAgICAgICAgY29uc3QgUVN0 cmluZyB0b29sdGlwID0gaW5kZXguaXNWYWxpZCgpID8KKyAgICAgICAgICAgICAgIGQtPnRleHRG b3JSb2xlKFF0OjpUb29sVGlwUm9sZSwgaW5kZXguZGF0YShRdDo6VG9vbFRpcFJvbGUpLCBvcHRp b24ubG9jYWxlLCBwcmVjaXNpb24pIDoKKyAgICAgICAgICAgICAgIFFTdHJpbmcoKTsKKy0gICAg ICAgIFFSZWN0IHJlY3Q7CistICAgICAgICBpZiAoaW5kZXguaXNWYWxpZCgpKSB7CistICAgICAg ICAgICAgY29uc3QgUVJlY3QgciA9IHZpZXctPnZpc3VhbFJlY3QoaW5kZXgpOworLSAgICAgICAg ICAgIHJlY3QgPSBRUmVjdCh2aWV3LT5tYXBUb0dsb2JhbChyLnRvcExlZnQoKSksIHIuc2l6ZSgp KTsKKy0gICAgICAgIH0KKy0gICAgICAgIFFUb29sVGlwOjpzaG93VGV4dChoZS0+Z2xvYmFsUG9z KCksIHRvb2x0aXAsIHZpZXcsIHJlY3QpOworKyAgICAgICAgUVRvb2xUaXA6OnNob3dUZXh0KGhl LT5nbG9iYWxQb3MoKSwgdG9vbHRpcCwgdmlldy0+dmlld3BvcnQoKSwgb3B0aW9uLnJlY3QpOwor ICAgICAgICAgZXZlbnQtPnNldEFjY2VwdGVkKCF0b29sdGlwLmlzRW1wdHkoKSk7CisgICAgICAg ICBicmVhazsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRl bXZpZXdzL3FsaXN0dmlldy5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0 dmlldy5jcHAKK2luZGV4IDJiMzQ0NzY2NDIuLmVlYmZhYTAzMGUgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0dmlldy5jcHAKKysrKyBiL3F0YmFzZS9zcmMv d2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcAorQEAgLTMzODYsNiArMzM4Niw3IEBAIHZv aWQgUUljb25Nb2RlVmlld0Jhc2U6OnVwZGF0ZUNvbnRlbnRzU2l6ZSgpCisgKi8KKyB2b2lkIFFM aXN0Vmlldzo6Y3VycmVudENoYW5nZWQoY29uc3QgUU1vZGVsSW5kZXggJmN1cnJlbnQsIGNvbnN0 IFFNb2RlbEluZGV4ICZwcmV2aW91cykKKyB7CisrICAgIFFBYnN0cmFjdEl0ZW1WaWV3OjpjdXJy ZW50Q2hhbmdlZChjdXJyZW50LCBwcmV2aW91cyk7CisgI2lmbmRlZiBRVF9OT19BQ0NFU1NJQklM SVRZCisgICAgIGlmIChRQWNjZXNzaWJsZTo6aXNBY3RpdmUoKSkgeworICAgICAgICAgaWYgKGN1 cnJlbnQuaXNWYWxpZCgpKSB7CitAQCAtMzM5Niw3ICszMzk3LDYgQEAgdm9pZCBRTGlzdFZpZXc6 OmN1cnJlbnRDaGFuZ2VkKGNvbnN0IFFNb2RlbEluZGV4ICZjdXJyZW50LCBjb25zdCBRTW9kZWxJ bmRleCAmcHIKKyAgICAgICAgIH0KKyAgICAgfQorICNlbmRpZgorLSAgICBRQWJzdHJhY3RJdGVt Vmlldzo6Y3VycmVudENoYW5nZWQoY3VycmVudCwgcHJldmlvdXMpOworIH0KKyAKKyAvKiEKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwIGIv cXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcAoraW5kZXggOTM0YWM1 ODFiMi4uZjc5YmIyNDI0OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmll d3MvcXRhYmxldmlldy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcXRh Ymxldmlldy5jcHAKK0BAIC0xMDEzLDYgKzEwMTMsNyBAQCB2b2lkIFFUYWJsZVZpZXdQcml2YXRl OjpkcmF3Q2VsbChRUGFpbnRlciAqcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uVmlld0l0ZW0g JgorIGludCBRVGFibGVWaWV3UHJpdmF0ZTo6d2lkdGhIaW50Rm9ySW5kZXgoY29uc3QgUU1vZGVs SW5kZXggJmluZGV4LCBpbnQgaGludCwgY29uc3QgUVN0eWxlT3B0aW9uVmlld0l0ZW0gJm9wdGlv bikgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRVGFibGVWaWV3KTsKKysgICAgY29uc3QgaW50 IG9sZEhpbnQgPSBoaW50OworICAgICBRV2lkZ2V0ICplZGl0b3IgPSBlZGl0b3JGb3JJbmRleChp bmRleCkud2lkZ2V0LmRhdGEoKTsKKyAgICAgaWYgKGVkaXRvciAmJiBwZXJzaXN0ZW50LmNvbnRh aW5zKGVkaXRvcikpIHsKKyAgICAgICAgIGhpbnQgPSBxTWF4KGhpbnQsIGVkaXRvci0+c2l6ZUhp bnQoKS53aWR0aCgpKTsKK0BAIC0xMDIxLDYgKzEwMjIsMTcgQEAgaW50IFFUYWJsZVZpZXdQcml2 YXRlOjp3aWR0aEhpbnRGb3JJbmRleChjb25zdCBRTW9kZWxJbmRleCAmaW5kZXgsIGludCBoaW50 LCBjb24KKyAgICAgICAgIGhpbnQgPSBxQm91bmQobWluLCBoaW50LCBtYXgpOworICAgICB9Cisg ICAgIGhpbnQgPSBxTWF4KGhpbnQsIHEtPml0ZW1EZWxlZ2F0ZShpbmRleCktPnNpemVIaW50KG9w dGlvbiwgaW5kZXgpLndpZHRoKCkpOworKworKyAgICBpZiAoaGFzU3BhbnMoKSkgeworKyAgICAg ICAgYXV0byBzcGFuID0gc3BhbnMuc3BhbkF0KGluZGV4LmNvbHVtbigpLCBpbmRleC5yb3coKSk7 CisrICAgICAgICBpZiAoc3BhbiAmJiBzcGFuLT5tX2xlZnQgPT0gaW5kZXguY29sdW1uKCkgJiYg c3Bhbi0+bV90b3AgPT0gaW5kZXgucm93KCkpIHsKKysgICAgICAgICAgICAvLyBzcGFucyBhcmUg c2NyZXdlZCB1cCB3aGVuIHNlY3Rpb25zIGFyZSBtb3ZlZAorKyAgICAgICAgICAgIGNvbnN0IGF1 dG8gbGVmdCA9IGxvZ2ljYWxDb2x1bW4oc3Bhbi0+bV9sZWZ0KTsKKysgICAgICAgICAgICBmb3Ig KGludCBpID0gMTsgaSA8PSBzcGFuLT53aWR0aCgpOyArK2kpCisrICAgICAgICAgICAgICAgaGlu dCAtPSBxLT5jb2x1bW5XaWR0aCh2aXN1YWxDb2x1bW4obGVmdCArIGkpKTsKKysgICAgICAgIH0K KysgICAgICAgIGhpbnQgPSBzdGQ6Om1heChoaW50LCBvbGRIaW50KTsKKysgICAgfQorICAgICBy ZXR1cm4gaGludDsKKyB9CisgCitAQCAtMTA1Myw2ICsxMDY1LDExIEBAIGludCBRVGFibGVWaWV3 UHJpdmF0ZTo6aGVpZ2h0SGludEZvckluZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRleCwgaW50 IGhpbnQsIFFTCisgICAgICAgICBvcHRpb24ucmVjdC5zZXRIZWlnaHQoaGVpZ2h0KTsKKyAgICAg ICAgIG9wdGlvbi5yZWN0LnNldFgocS0+Y29sdW1uVmlld3BvcnRQb3NpdGlvbihpbmRleC5jb2x1 bW4oKSkpOworICAgICAgICAgb3B0aW9uLnJlY3Quc2V0V2lkdGgocS0+Y29sdW1uV2lkdGgoaW5k ZXguY29sdW1uKCkpKTsKKysgICAgICAgIGlmIChoYXNTcGFucygpKSB7CisrICAgICAgICAgICAg YXV0byBzcGFuID0gc3BhbnMuc3BhbkF0KGluZGV4LmNvbHVtbigpLCBpbmRleC5yb3coKSk7Cisr ICAgICAgICAgICAgaWYgKHNwYW4gJiYgc3Bhbi0+bV9sZWZ0ID09IGluZGV4LmNvbHVtbigpICYm IHNwYW4tPm1fdG9wID09IGluZGV4LnJvdygpKQorKyAgICAgICAgICAgICAgICBvcHRpb24ucmVj dC5zZXRXaWR0aChzdGQ6Om1heChvcHRpb24ucmVjdC53aWR0aCgpLCB2aXN1YWxTcGFuUmVjdCgq c3Bhbikud2lkdGgoKSkpOworKyAgICAgICAgfQorICAgICAgICAgLy8gMXB4IGxlc3Mgc3BhY2Ug d2hlbiBncmlkIGlzIHNob3duIChzZWUgZHJhd0NlbGwpCisgICAgICAgICBpZiAoc2hvd0dyaWQp CisgICAgICAgICAgICAgb3B0aW9uLnJlY3Quc2V0V2lkdGgob3B0aW9uLnJlY3Qud2lkdGgoKSAt IDEpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcWFjdGlvbi5oIGIv cXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmgKK2luZGV4IDI1OGExZWEwYTAuLjcz N2MxZTgyODUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3FhY3Rpb24u aAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmgKK0BAIC04MSw3ICs4 MSw3IEBAIGNsYXNzIFFfV0lER0VUU19FWFBPUlQgUUFjdGlvbiA6IHB1YmxpYyBRT2JqZWN0Cisg ICAgIFFfUFJPUEVSVFkoTWVudVJvbGUgbWVudVJvbGUgUkVBRCBtZW51Um9sZSBXUklURSBzZXRN ZW51Um9sZSBOT1RJRlkgY2hhbmdlZCkKKyAgICAgUV9QUk9QRVJUWShib29sIGljb25WaXNpYmxl SW5NZW51IFJFQUQgaXNJY29uVmlzaWJsZUluTWVudSBXUklURSBzZXRJY29uVmlzaWJsZUluTWVu dSBOT1RJRlkgY2hhbmdlZCkKKyAgICAgUV9QUk9QRVJUWShib29sIHNob3J0Y3V0VmlzaWJsZUlu Q29udGV4dE1lbnUgUkVBRCBpc1Nob3J0Y3V0VmlzaWJsZUluQ29udGV4dE1lbnUgV1JJVEUgc2V0 U2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVudSBOT1RJRlkgY2hhbmdlZCkKKy0gICAgUV9QUk9Q RVJUWShQcmlvcml0eSBwcmlvcml0eSBSRUFEIHByaW9yaXR5IFdSSVRFIHNldFByaW9yaXR5KQor KyAgICBRX1BST1BFUlRZKFByaW9yaXR5IHByaW9yaXR5IFJFQUQgcHJpb3JpdHkgV1JJVEUgc2V0 UHJpb3JpdHkgTk9USUZZIGNoYW5nZWQpCisgCisgcHVibGljOgorICAgICAvLyBub3RlIHRoaXMg aXMgY29waWVkIGludG8gcXBsYXRmb3JtbWVudS5oLCB3aGljaCBtdXN0IHN0YXkgaW4gc3luYwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldC5jcHAgYi9xdGJh c2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3BwCitpbmRleCA5ZWJhMWUwMDFlLi4yNmY2 ZDI3ZTE4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNw cAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNwcAorQEAgLTUyOTYs NyArNTI5Niw3IEBAIHZvaWQgUVdpZGdldFByaXZhdGU6OmRyYXdXaWRnZXQoUVBhaW50RGV2aWNl ICpwZGV2LCBjb25zdCBRUmVnaW9uICZyZ24sIGNvbnN0IFFQCisgICAgICAgICBRV2lkZ2V0RWZm ZWN0U291cmNlUHJpdmF0ZSAqc291cmNlZCA9IHN0YXRpY19jYXN0PFFXaWRnZXRFZmZlY3RTb3Vy Y2VQcml2YXRlICo+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNvdXJjZS0+ZF9mdW5jKCkpOworICAgICAgICAgaWYgKCFzb3VyY2Vk LT5jb250ZXh0KSB7CistICAgICAgICAgICAgY29uc3QgUVJlZ2lvbiBlZmZlY3RSZ24ocmduLmJv dW5kaW5nUmVjdCgpKTsKKysgICAgICAgICAgICBjb25zdCBRUmVnaW9uIGVmZmVjdFJnbigoZmxh Z3MgJiBVc2VFZmZlY3RSZWdpb25Cb3VuZHMpID8gcmduLmJvdW5kaW5nUmVjdCgpIDogcmduKTsK KyAgICAgICAgICAgICBRV2lkZ2V0UGFpbnRDb250ZXh0IGNvbnRleHQocGRldiwgZWZmZWN0Umdu LCBvZmZzZXQsIGZsYWdzLCBzaGFyZWRQYWludGVyLCByZXBhaW50TWFuYWdlcik7CisgICAgICAg ICAgICAgc291cmNlZC0+Y29udGV4dCA9ICZjb250ZXh0OworICAgICAgICAgICAgIGlmICghc2hh cmVkUGFpbnRlcikgeworQEAgLTUzMjgsNiArNTMyOCw3IEBAIHZvaWQgUVdpZGdldFByaXZhdGU6 OmRyYXdXaWRnZXQoUVBhaW50RGV2aWNlICpwZGV2LCBjb25zdCBRUmVnaW9uICZyZ24sIGNvbnN0 IFFQCisgICAgICAgICB9CisgICAgIH0KKyAjZW5kaWYgLy8gUVRfQ09ORklHKGdyYXBoaWNzZWZm ZWN0KQorKyAgICBmbGFncyA9IGZsYWdzICYgflVzZUVmZmVjdFJlZ2lvbkJvdW5kczsKKyAKKyAg ICAgY29uc3QgYm9vbCBhbHNvT25TY3JlZW4gPSBmbGFncyAmIERyYXdQYWludE9uU2NyZWVuOwor ICAgICBjb25zdCBib29sIHJlY3Vyc2l2ZSA9IGZsYWdzICYgRHJhd1JlY3Vyc2l2ZTsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRfcC5oIGIvcXRiYXNlL3Ny Yy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAoraW5kZXggZWVmNmI4ZmEyYy4uYzQzMmY0YjVk NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmgKKysr KyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmgKK0BAIC0yMjksNyArMjI5 LDggQEAgcHVibGljOgorICAgICAgICAgRG9udFN1YnRyYWN0T3BhcXVlQ2hpbGRyZW4gPSAweDEw LAorICAgICAgICAgRG9udERyYXdPcGFxdWVDaGlsZHJlbiA9IDB4MjAsCisgICAgICAgICBEb250 RHJhd05hdGl2ZUNoaWxkcmVuID0gMHg0MCwKKy0gICAgICAgIERvbnRTZXRDb21wb3NpdGlvbk1v ZGUgPSAweDgwCisrICAgICAgICBEb250U2V0Q29tcG9zaXRpb25Nb2RlID0gMHg4MCwKKysgICAg ICAgIFVzZUVmZmVjdFJlZ2lvbkJvdW5kcyA9IDB4MTAwCisgICAgIH07CisgICAgIFFfREVDTEFS RV9GTEFHUyhEcmF3V2lkZ2V0RmxhZ3MsIERyYXdXaWRnZXRGbGFnKQorICAgICBRX0ZMQUcoRHJh d1dpZGdldEZsYWdzKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdp ZGdldHJlcGFpbnRtYW5hZ2VyLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdl dHJlcGFpbnRtYW5hZ2VyLmNwcAoraW5kZXggMDI4ODBiMzRkYS4uMGQ0NGUxMzI2ZCAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldHJlcGFpbnRtYW5hZ2VyLmNw cAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIu Y3BwCitAQCAtMTAxOCw3ICsxMDE4LDggQEAgdm9pZCBRV2lkZ2V0UmVwYWludE1hbmFnZXI6OnBh aW50QW5kRmx1c2goKQorIAorICAgICAvLyBQYWludCB0aGUgcmVzdCB3aXRoIGNvbXBvc2l0aW9u LgorICAgICBpZiAocmVwYWludEFsbFdpZGdldHMgfHwgIWRpcnR5Q29weS5pc0VtcHR5KCkpIHsK Ky0gICAgICAgIFFXaWRnZXRQcml2YXRlOjpEcmF3V2lkZ2V0RmxhZ3MgZmxhZ3MgPSBRV2lkZ2V0 UHJpdmF0ZTo6RHJhd0FzUm9vdCB8IFFXaWRnZXRQcml2YXRlOjpEcmF3UmVjdXJzaXZlOworKyAg ICAgICAgUVdpZGdldFByaXZhdGU6OkRyYXdXaWRnZXRGbGFncyBmbGFncyA9IFFXaWRnZXRQcml2 YXRlOjpEcmF3QXNSb290IHwgUVdpZGdldFByaXZhdGU6OkRyYXdSZWN1cnNpdmUKKysgICAgICAg ICAgICAgICAgfCBRV2lkZ2V0UHJpdmF0ZTo6VXNlRWZmZWN0UmVnaW9uQm91bmRzOworICAgICAg ICAgdGx3LT5kX2Z1bmMoKS0+ZHJhd1dpZGdldChzdG9yZS0+cGFpbnREZXZpY2UoKSwgZGlydHlD b3B5LCBRUG9pbnQoKSwgZmxhZ3MsIG51bGxwdHIsIHRoaXMpOworICAgICB9CisgCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5bGUuY3BwIGIvcXRiYXNl L3NyYy93aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5bGUuY3BwCitpbmRleCBmNDM0NWQ5N2M0Li45 NjI5MTJjODM4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3N0eWxlcy9xZnVzaW9u c3R5bGUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5j cHAKK0BAIC0xNzcyLDE0ICsxNzcyLDYgQEAgdm9pZCBRRnVzaW9uU3R5bGU6OmRyYXdDb250cm9s KENvbnRyb2xFbGVtZW50IGVsZW1lbnQsIGNvbnN0IFFTdHlsZU9wdGlvbiAqb3B0aW8KKyAgICAg ICAgICAgICBwcm94eSgpLT5kcmF3Q29udHJvbChDRV9QdXNoQnV0dG9uTGFiZWwsICZzdWJvcHQs IHBhaW50ZXIsIHdpZGdldCk7CisgICAgICAgICB9CisgICAgICAgICBicmVhazsKKy0gICAgY2Fz ZSBDRV9QdXNoQnV0dG9uTGFiZWw6CistICAgICAgICBpZiAoY29uc3QgUVN0eWxlT3B0aW9uQnV0 dG9uICpidXR0b24gPSBxc3R5bGVvcHRpb25fY2FzdDxjb25zdCBRU3R5bGVPcHRpb25CdXR0b24g Kj4ob3B0aW9uKSkgeworLSAgICAgICAgICAgIFFTdHlsZU9wdGlvbkJ1dHRvbiBiKCpidXR0b24p OworLSAgICAgICAgICAgIC8vIG5vIFBNX0J1dHRvblNoaWZ0SG9yaXpvbnRhbCBhbmQgUE1fQnV0 dG9uU2hpZnRWZXJ0aWNhbCBmb3IgZnVzaW9uIHN0eWxlCistICAgICAgICAgICAgYi5zdGF0ZSAm PSB+KFN0YXRlX09uIHwgU3RhdGVfU3Vua2VuKTsKKy0gICAgICAgICAgICBRQ29tbW9uU3R5bGU6 OmRyYXdDb250cm9sKGVsZW1lbnQsICZiLCBwYWludGVyLCB3aWRnZXQpOworLSAgICAgICAgfQor LSAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgQ0VfTWVudUJhckVtcHR5QXJlYToKKyAgICAgICAg IHBhaW50ZXItPnNhdmUoKTsKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0 cy91dGlsL3Fjb21wbGV0ZXIuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3V0aWwvcWNvbXBsZXRl ci5jcHAKK2luZGV4IDE4YjI0MDYzZDguLmVmNzIwN2E4YTMgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRz L3V0aWwvcWNvbXBsZXRlci5jcHAKK0BAIC0xMTIwLDYgKzExMjAsOCBAQCB2b2lkIFFDb21wbGV0 ZXI6OnNldE1vZGVsKFFBYnN0cmFjdEl0ZW1Nb2RlbCAqbW9kZWwpCisgeworICAgICBRX0QoUUNv bXBsZXRlcik7CisgICAgIFFBYnN0cmFjdEl0ZW1Nb2RlbCAqb2xkTW9kZWwgPSBkLT5wcm94eS0+ c291cmNlTW9kZWwoKTsKKysgICAgaWYgKG9sZE1vZGVsID09IG1vZGVsKQorKyAgICAgICAgcmV0 dXJuOworICNpZiBRVF9DT05GSUcoZmlsZXN5c3RlbW1vZGVsKQorICAgICBpZiAocW9iamVjdF9j YXN0PGNvbnN0IFFGaWxlU3lzdGVtTW9kZWwgKj4ob2xkTW9kZWwpKQorICAgICAgICAgc2V0Q29t cGxldGlvblJvbGUoUXQ6OkVkaXRSb2xlKTsgLy8gUVRCVUctNTQ2NDIsIGNsZWFyIEZpbGVOYW1l Um9sZSBzZXQgYnkgUUZpbGVTeXN0ZW1Nb2RlbAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lk Z2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lk Z2V0cy9xYWJzdHJhY3RidXR0b24uY3BwCitpbmRleCBhMTI4YjIzOTUwLi5kYzQwYmY2MmZiIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uLmNw cAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uLmNwcAor QEAgLTU2LDYgKzU2LDcgQEAKKyAjaWZuZGVmIFFUX05PX0FDQ0VTU0lCSUxJVFkKKyAjaW5jbHVk ZSAicWFjY2Vzc2libGUuaCIKKyAjZW5kaWYKKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1l Lmg+CisgCisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAKK0BAIC0xMDc2LDE5ICsxMDc3LDE5IEBA IHZvaWQgUUFic3RyYWN0QnV0dG9uOjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCAqZSkKKyB7Cisg ICAgIFFfRChRQWJzdHJhY3RCdXR0b24pOworICAgICBib29sIG5leHQgPSB0cnVlOworLSAgICBz d2l0Y2ggKGUtPmtleSgpKSB7CistICAgIGNhc2UgUXQ6OktleV9FbnRlcjoKKy0gICAgY2FzZSBR dDo6S2V5X1JldHVybjoKKy0gICAgICAgIGUtPmlnbm9yZSgpOworLSAgICAgICAgYnJlYWs7Cist ICAgIGNhc2UgUXQ6OktleV9TZWxlY3Q6CistICAgIGNhc2UgUXQ6OktleV9TcGFjZToKKy0gICAg ICAgIGlmICghZS0+aXNBdXRvUmVwZWF0KCkpIHsKKy0gICAgICAgICAgICBzZXREb3duKHRydWUp OworLSAgICAgICAgICAgIHJlcGFpbnQoKTsKKy0gICAgICAgICAgICBkLT5lbWl0UHJlc3NlZCgp OworLSAgICAgICAgfQorLSAgICAgICAgYnJlYWs7CisrCisrICAgIGNvbnN0IGF1dG8ga2V5ID0g c3RhdGljX2Nhc3Q8UXQ6OktleT4oZS0+a2V5KCkpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblBy ZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3Jt VGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNz S2V5cy5jb250YWlucyhrZXkpICYmICFlLT5pc0F1dG9SZXBlYXQoKSkgeworKyAgICAgICAgc2V0 RG93bih0cnVlKTsKKysgICAgICAgIHJlcGFpbnQoKTsKKysgICAgICAgIGQtPmVtaXRQcmVzc2Vk KCk7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgc3dpdGNoIChrZXkpIHsKKyAg ICAgY2FzZSBRdDo6S2V5X1VwOgorICAgICAgICAgbmV4dCA9IGZhbHNlOworICAgICAgICAgUV9G QUxMVEhST1VHSCgpOworQEAgLTExNTMsMTUgKzExNTQsMTUgQEAgdm9pZCBRQWJzdHJhY3RCdXR0 b246OmtleVJlbGVhc2VFdmVudChRS2V5RXZlbnQgKmUpCisgICAgIGlmICghZS0+aXNBdXRvUmVw ZWF0KCkpCisgICAgICAgICBkLT5yZXBlYXRUaW1lci5zdG9wKCk7CisgCistICAgIHN3aXRjaCAo ZS0+a2V5KCkpIHsKKy0gICAgY2FzZSBRdDo6S2V5X1NlbGVjdDoKKy0gICAgY2FzZSBRdDo6S2V5 X1NwYWNlOgorLSAgICAgICAgaWYgKCFlLT5pc0F1dG9SZXBlYXQoKSAmJiBkLT5kb3duKQorLSAg ICAgICAgICAgIGQtPmNsaWNrKCk7CistICAgICAgICBicmVhazsKKy0gICAgZGVmYXVsdDoKKy0g ICAgICAgIGUtPmlnbm9yZSgpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFH dWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRv blByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52 YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlu cyhzdGF0aWNfY2FzdDxRdDo6S2V5PihlLT5rZXkoKSkpICYmICFlLT5pc0F1dG9SZXBlYXQoKSAm JiBkLT5kb3duKSB7CisrICAgICAgICBkLT5jbGljaygpOworKyAgICAgICAgcmV0dXJuOworICAg ICB9CisrCisrICAgIGUtPmlnbm9yZSgpOworIH0KKyAKKyAvKiFccmVpbXAKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3guY3BwIGIvcXRiYXNlL3NyYy93 aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAoraW5kZXggN2E0OTZjMjdlMC4uMGEzZDk2NjQ3 YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAK KysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAKK0BAIC0zMzUy LDcgKzMzNTIsMjMgQEAgdm9pZCBRQ29tYm9Cb3g6OmtleVByZXNzRXZlbnQoUUtleUV2ZW50ICpl KQorIAorICAgICBNb3ZlIG1vdmUgPSBOb01vdmU7CisgICAgIGludCBuZXdJbmRleCA9IGN1cnJl bnRJbmRleCgpOworLSAgICBzd2l0Y2ggKGUtPmtleSgpKSB7CisrCisrICAgIGJvb2wgcHJlc3NM aWtlQnV0dG9uID0gIWQtPmxpbmVFZGl0OworKyNpZmRlZiBRVF9LRVlQQURfTkFWSUdBVElPTgor KyAgICBwcmVzc0xpa2VCdXR0b24gfD0gUUFwcGxpY2F0aW9uUHJpdmF0ZTo6a2V5cGFkTmF2aWdh dGlvbkVuYWJsZWQoKSAmJiAhaGFzRWRpdEZvY3VzKCk7CisrI2VuZGlmCisrICAgIGF1dG8ga2V5 ID0gc3RhdGljX2Nhc3Q8UXQ6OktleT4oZS0+a2V5KCkpOworKyAgICBpZiAocHJlc3NMaWtlQnV0 dG9uKSB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNh dGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVz c0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZh bHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250 YWlucyhrZXkpKSB7CisrICAgICAgICAgICAgc2hvd1BvcHVwKCk7CisrICAgICAgICAgICAgcmV0 dXJuOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHN3aXRjaCAoa2V5KSB7CisgICAgIGNh c2UgUXQ6OktleV9VcDoKKyAgICAgICAgIGlmIChlLT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9s TW9kaWZpZXIpCisgICAgICAgICAgICAgYnJlYWs7IC8vIHBhc3MgdG8gbGluZSBlZGl0IGZvciBh dXRvIGNvbXBsZXRpb24KK0BAIC0zMzk0LDI2ICszNDEwLDExIEBAIHZvaWQgUUNvbWJvQm94Ojpr ZXlQcmVzc0V2ZW50KFFLZXlFdmVudCAqZSkKKyAgICAgICAgICAgICByZXR1cm47CisgICAgICAg ICB9CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSBRdDo6S2V5X1NwYWNlOgorLSAgICAgICAg aWYgKCFkLT5saW5lRWRpdCkgeworLSAgICAgICAgICAgIHNob3dQb3B1cCgpOworLSAgICAgICAg ICAgIHJldHVybjsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworLSAgICBjYXNlIFF0OjpL ZXlfRW50ZXI6CistICAgIGNhc2UgUXQ6OktleV9SZXR1cm46CisgICAgIGNhc2UgUXQ6OktleV9F c2NhcGU6CisgICAgICAgICBpZiAoIWQtPmxpbmVFZGl0KQorICAgICAgICAgICAgIGUtPmlnbm9y ZSgpOworICAgICAgICAgYnJlYWs7CisgI2lmZGVmIFFUX0tFWVBBRF9OQVZJR0FUSU9OCistICAg IGNhc2UgUXQ6OktleV9TZWxlY3Q6CistICAgICAgICBpZiAoUUFwcGxpY2F0aW9uUHJpdmF0ZTo6 a2V5cGFkTmF2aWdhdGlvbkVuYWJsZWQoKQorLSAgICAgICAgICAgICAgICAmJiAoIWhhc0VkaXRG b2N1cygpIHx8ICFkLT5saW5lRWRpdCkpIHsKKy0gICAgICAgICAgICBzaG93UG9wdXAoKTsKKy0g ICAgICAgICAgICByZXR1cm47CistICAgICAgICB9CistICAgICAgICBicmVhazsKKyAgICAgY2Fz ZSBRdDo6S2V5X0xlZnQ6CisgICAgIGNhc2UgUXQ6OktleV9SaWdodDoKKyAgICAgICAgIGlmIChR QXBwbGljYXRpb25Qcml2YXRlOjprZXlwYWROYXZpZ2F0aW9uRW5hYmxlZCgpICYmICFoYXNFZGl0 Rm9jdXMoKSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZGF0ZXRp bWVlZGl0X3AuaCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGltZWVkaXRfcC5o CitpbmRleCBkMzZiNmY4ZjlhLi5lMGRmNWI1MTU4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93 aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0 cy93aWRnZXRzL3FkYXRldGltZWVkaXRfcC5oCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE4IFRoZSBRdCBDb21wYW55IEx0 ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRh Y3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBRdFdpZGdldHMgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC5jcHAgYi9xdGJhc2Uvc3Jj L3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwCitpbmRleCAwMmEwYmVkMzI1Li4zZjNlY2Nj MzcwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNw cAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNwcAorQEAgLTU0 LDYgKzU0LDggQEAKKyAjaW5jbHVkZSAicWFjY2Vzc2libGUuaCIKKyAjZW5kaWYKKyAjaW5jbHVk ZSA8cHJpdmF0ZS9xd2lkZ2V0X3AuaD4KKysjaW5jbHVkZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRp b25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAKKyAjaW5jbHVkZSAi cWRlYnVnLmgiCisgCitAQCAtMzYwLDcgKzM2MiwxMCBAQCBib29sIFFHcm91cEJveDo6ZXZlbnQo UUV2ZW50ICplKQorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2UgUUV2ZW50OjpLZXlQ cmVzczogeworICAgICAgICAgUUtleUV2ZW50ICprID0gc3RhdGljX2Nhc3Q8UUtleUV2ZW50Kj4o ZSk7CistICAgICAgICBpZiAoIWstPmlzQXV0b1JlcGVhdCgpICYmIChrLT5rZXkoKSA9PSBRdDo6 S2V5X1NlbGVjdCB8fCBrLT5rZXkoKSA9PSBRdDo6S2V5X1NwYWNlKSkgeworKyAgICAgICAgY29u c3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9y bVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4o KTsKKysgICAgICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgYnV0dG9uUHJlc3NLZXlzLmNv bnRhaW5zKHN0YXRpY19jYXN0PFF0OjpLZXk+KGstPmtleSgpKSkpIHsKKyAgICAgICAgICAgICBk LT5wcmVzc2VkQ29udHJvbCA9IFFTdHlsZTo6U0NfR3JvdXBCb3hDaGVja0JveDsKKyAgICAgICAg ICAgICB1cGRhdGUoc3R5bGUoKS0+c3ViQ29udHJvbFJlY3QoUVN0eWxlOjpDQ19Hcm91cEJveCwg JmJveCwgUVN0eWxlOjpTQ19Hcm91cEJveENoZWNrQm94LCB0aGlzKSk7CisgICAgICAgICAgICAg cmV0dXJuIHRydWU7CitAQCAtMzY5LDcgKzM3NCwxMCBAQCBib29sIFFHcm91cEJveDo6ZXZlbnQo UUV2ZW50ICplKQorICAgICB9CisgICAgIGNhc2UgUUV2ZW50OjpLZXlSZWxlYXNlOiB7CisgICAg ICAgICBRS2V5RXZlbnQgKmsgPSBzdGF0aWNfY2FzdDxRS2V5RXZlbnQqPihlKTsKKy0gICAgICAg IGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgKGstPmtleSgpID09IFF0OjpLZXlfU2VsZWN0IHx8 IGstPmtleSgpID09IFF0OjpLZXlfU3BhY2UpKSB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRv blByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQ bGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAg aWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiBidXR0b25QcmVzc0tleXMuY29udGFpbnMoc3RhdGlj X2Nhc3Q8UXQ6OktleT4oay0+a2V5KCkpKSkgeworICAgICAgICAgICAgIGJvb2wgdG9nZ2xlID0g KGQtPnByZXNzZWRDb250cm9sID09IFFTdHlsZTo6U0NfR3JvdXBCb3hMYWJlbAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHx8IGQtPnByZXNzZWRDb250cm9sID09IFFTdHlsZTo6U0NfR3Jv dXBCb3hDaGVja0JveCk7CisgICAgICAgICAgICAgZC0+cHJlc3NlZENvbnRyb2wgPSBRU3R5bGU6 OlNDX05vbmU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWxhYmVs LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAKK2luZGV4IDMwZmY4 MGNiYjAuLmNmMjYwNWMxN2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0 cy9xbGFiZWwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xbGFiZWwuY3Bw CitAQCAtNDIxLDkgKzQyMSw2IEBAIHZvaWQgUUxhYmVsOjpzZXRQaXhtYXAoY29uc3QgUVBpeG1h cCAmcGl4bWFwKQorICAgICAgICAgZC0+cGl4bWFwID0gbmV3IFFQaXhtYXAocGl4bWFwKTsKKyAg ICAgfQorIAorLSAgICBpZiAoZC0+cGl4bWFwLT5kZXB0aCgpID09IDEgJiYgIWQtPnBpeG1hcC0+ bWFzaygpKQorLSAgICAgICAgZC0+cGl4bWFwLT5zZXRNYXNrKCooKFFCaXRtYXAgKilkLT5waXht YXApKTsKKy0KKyAgICAgZC0+dXBkYXRlTGFiZWwoKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcCBiL3F0YmFzZS9z cmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5jcHAKK2luZGV4IDQ5M2MwOTRj YzEuLmQ1ZjRiNTkwMTcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9x dG9vbGJhcmFyZWFsYXlvdXQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9x dG9vbGJhcmFyZWFsYXlvdXQuY3BwCitAQCAtMTM2Nyw3ICsxMzY3LDcgQEAgYm9vbCBRVG9vbEJh ckFyZWFMYXlvdXQ6OnJlc3RvcmVTdGF0ZShRRGF0YVN0cmVhbSAmc3RyZWFtLCBjb25zdCBRTGlz dDxRVG9vbEJhcioKKyAgICAgICAgICAgICAgICAgaXRlbS53aWRnZXRJdGVtID0gbmV3IFFXaWRn ZXRJdGVtVjIodG9vbEJhcik7CisgICAgICAgICAgICAgICAgIHRvb2xCYXItPnNldE9yaWVudGF0 aW9uKGZsb2F0aW5nID8gKChzaG93biAmIDIpID8gUXQ6OlZlcnRpY2FsIDogUXQ6Okhvcml6b250 YWwpIDogZG9jay5vKTsKKyAgICAgICAgICAgICAgICAgdG9vbEJhci0+c2V0VmlzaWJsZShzaG93 biAmIDEpOworLSAgICAgICAgICAgICAgICB0b29sQmFyLT5kX2Z1bmMoKS0+c2V0V2luZG93U3Rh dGUoZmxvYXRpbmcsIHRydWUsIHJlY3QpOworKyAgICAgICAgICAgICAgICB0b29sQmFyLT5kX2Z1 bmMoKS0+c2V0V2luZG93U3RhdGUoZmxvYXRpbmcsIGZhbHNlLCByZWN0KTsKKyAKKyAgICAgICAg ICAgICAgICAgaXRlbS5wcmVmZXJyZWRTaXplID0gaXRlbS5zaXplOworICAgICAgICAgICAgICAg ICBsaW5lLnRvb2xCYXJJdGVtcy5hcHBlbmQoaXRlbSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsL3RzdF9xdGNvbmN1 cnJlbnRpdGVyYXRla2VybmVsLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRj b25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAK K2luZGV4IDIxMmMwYTJlMTMuLjNjNzdiMWJhMGIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMv YXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3VycmVu dGl0ZXJhdGVrZXJuZWwuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0 Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwuY3Bw CitAQCAtMTI2LDggKzEyNiw3IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRJ dGVyYXRlS2VybmVsOjppbnN0YW50aWF0ZSgpCisgeworLSAgICBhdXRvIGZ1dHVyZSA9IHN0YXJ0 VGhyZWFkRW5naW5lKG5ldyBQcmludEZvcigwLCA0MCkpLnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsK Ky0gICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICBzdGFydFRocmVhZEVuZ2luZShu ZXcgUHJpbnRGb3IoMCwgNDApKS5zdGFydEJsb2NraW5nKCk7CisgICAgIFFDT01QQVJFKGl0ZXJh dGlvbnMubG9hZFJlbGF4ZWQoKSwgNDApOworIH0KKyAKK0BAIC0xNjYsMTAgKzE2NSw4IEBAIHZv aWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6OnN0cmVzc3Rlc3QoKQorICAgICBjb25z dCBpbnQgdGltZXMgPSA1MDsKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aW1lczsgKytpKSB7 CisgICAgICAgICBjb3VudGVyLnN0b3JlUmVsYXhlZCgwKTsKKy0gICAgICAgIC8vIFRocmVhZEVu Z2luZSB3aWxsIGRlbGV0ZSBmIHdoZW4gaXQgZmluaXNoZXMKKy0gICAgICAgIGF1dG8gZiA9IG5l dyBDb3VudEZvcigwLCBpdGVyYXRpb25zKTsKKy0gICAgICAgIGF1dG8gZnV0dXJlID0gZi0+c3Rh cnRBc3luY2hyb25vdXNseSgpOworLSAgICAgICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOwor KyAgICAgICAgQ291bnRGb3IgZigwLCBpdGVyYXRpb25zKTsKKysgICAgICAgIGYuc3RhcnRCbG9j a2luZygpOworICAgICAgICAgUUNPTVBBUkUoY291bnRlci5sb2FkUmVsYXhlZCgpLCBpdGVyYXRp b25zKTsKKyAgICAgfQorIH0KK0BAIC0xNzcsMTEgKzE3NCw4IEBAIHZvaWQgdHN0X1F0Q29uY3Vy cmVudEl0ZXJhdGVLZXJuZWw6OnN0cmVzc3Rlc3QoKQorIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0 ZXJhdGVLZXJuZWw6Om5vSXRlcmF0aW9ucygpCisgeworICAgICBjb25zdCBpbnQgdGltZXMgPSAy MDAwMDsKKy0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aW1lczsgKytpKSB7CistICAgICAgICBh dXRvIGZ1dHVyZSA9IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBJdGVyYXRlS2VybmVsPFRlc3RJdGVy YXRvciwgdm9pZD4oMCwgMCkpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN0YXJ0 QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgICAgIGZ1dHVyZS53YWl0Rm9yRmluaXNoZWQoKTsKKy0g ICAgfQorKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpCisrICAgICAgICBzdGFy dFRocmVhZEVuZ2luZShuZXcgSXRlcmF0ZUtlcm5lbDxUZXN0SXRlcmF0b3IsIHZvaWQ+KDAsIDAp KS5zdGFydEJsb2NraW5nKCk7CisgfQorIAorIFFNdXRleCB0aHJlYWRzTXV0ZXg7CitAQCAtMjM2 LDEwICsyMzAsOCBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVsOjp0aHJvdHRs aW5nKCkKKyAKKyAgICAgdGhyZWFkcy5jbGVhcigpOworIAorLSAgICAvLyBUaHJlYWRFbmdpbmUg d2lsbCBkZWxldGUgZiB3aGVuIGl0IGZpbmlzaGVzCistICAgIGF1dG8gZiA9IG5ldyBUaHJvdHRs ZUZvcigwLCB0b3RhbEl0ZXJhdGlvbnMpOworLSAgICBhdXRvIGZ1dHVyZSA9IGYtPnN0YXJ0QXN5 bmNocm9ub3VzbHkoKTsKKy0gICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICBUaHJv dHRsZUZvciBmKDAsIHRvdGFsSXRlcmF0aW9ucyk7CisrICAgIGYuc3RhcnRCbG9ja2luZygpOwor IAorICAgICBRQ09NUEFSRShpdGVyYXRpb25zLmxvYWRSZWxheGVkKCksIHRvdGFsSXRlcmF0aW9u cyk7CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1 cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAgYi9xdGJh c2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90c3RfcXRj b25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAoraW5kZXggYWM3YmU3YWNkZC4uODFiYzY0YzhkOSAx MDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhy ZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90c3RfcXRjb25j dXJyZW50dGhyZWFkZW5naW5lLmNwcAorQEAgLTY1LDkgKzY1LDE2IEBAIHB1YmxpYzoKKyAKKyB2 b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJ1bkRpcmVjdGx5KCkKKyB7CistICAg IFByaW50VXNlciAqZW5naW5lID0gbmV3IFByaW50VXNlcigpOworLSAgICBRRnV0dXJlPHZvaWQ+ IGYgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgZi53YWl0Rm9yRmluaXNo ZWQoKTsKKysgICAgeworKyAgICAgICAgUHJpbnRVc2VyIGVuZ2luZTsKKysgICAgICAgIGVuZ2lu ZS5zdGFydFNpbmdsZVRocmVhZGVkKCk7CisrICAgICAgICBlbmdpbmUuc3RhcnRCbG9ja2luZygp OworKyAgICB9CisrICAgIHsKKysgICAgICAgIFByaW50VXNlciAqZW5naW5lID0gbmV3IFByaW50 VXNlcigpOworKyAgICAgICAgUUZ1dHVyZTx2b2lkPiBmID0gZW5naW5lLT5zdGFydEFzeW5jaHJv bm91c2x5KCk7CisrICAgICAgICBmLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICB9CisgfQorIAor IGNsYXNzIFN0cmluZ1Jlc3VsdFVzZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5lPFFTdHJpbmc+CitA QCAtOTksMTAgKzEwNiw4IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJl YWRFbmdpbmU6OnJlc3VsdCgpCisgeworLSAgICAvLyBUaHJlYWRFbmdpbmUgd2lsbCBkZWxldGUg J2VuZ2luZScgd2hlbiBpdCBmaW5pc2hlcworLSAgICBhdXRvIGVuZ2luZSA9IG5ldyBTdHJpbmdS ZXN1bHRVc2VyKCk7CistICAgIGF1dG8gZnV0dXJlID0gZW5naW5lLT5zdGFydEFzeW5jaHJvbm91 c2x5KCk7CistICAgIFFDT01QQVJFKGZ1dHVyZS5yZXN1bHQoKSwgUVN0cmluZygiRm9vIikpOwor KyAgICBTdHJpbmdSZXN1bHRVc2VyIGVuZ2luZTsKKysgICAgUUNPTVBBUkUoKmVuZ2luZS5zdGFy dEJsb2NraW5nKCksIFFTdHJpbmcoIkZvbyIpKTsKKyB9CisgCisgY2xhc3MgVm9pZFJlc3VsdFVz ZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5lPHZvaWQ+CitAQCAtMTI4LDkgKzEzMywxNyBAQCBwdWJs aWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpydW5UaHJvdWdoU3Rh cnRlcigpCisgeworLSAgICBUaHJlYWRFbmdpbmVTdGFydGVyPFFTdHJpbmc+IHN0YXJ0ZXIgPSBz dGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5nUmVzdWx0VXNlcigpKTsKKy0gICAgUUZ1dHVyZTxR U3RyaW5nPiBmID0gc3RhcnRlci5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgIFFDT01QQVJF KGYucmVzdWx0KCksIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgeworKyAgICAgICAgVGhyZWFkRW5n aW5lU3RhcnRlcjxRU3RyaW5nPiBzdGFydGVyID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFN0cmlu Z1Jlc3VsdFVzZXIoKSk7CisrICAgICAgICBRRnV0dXJlPFFTdHJpbmc+ICBmID0gc3RhcnRlci5z dGFydEFzeW5jaHJvbm91c2x5KCk7CisrICAgICAgICBRQ09NUEFSRShmLnJlc3VsdCgpLCBRU3Ry aW5nKCJGb28iKSk7CisrICAgIH0KKysKKysgICAgeworKyAgICAgICAgVGhyZWFkRW5naW5lU3Rh cnRlcjxRU3RyaW5nPiBzdGFydGVyID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFN0cmluZ1Jlc3Vs dFVzZXIoKSk7CisrICAgICAgICBRU3RyaW5nIHN0ciA9IHN0YXJ0ZXIuc3RhcnRCbG9ja2luZygp OworKyAgICAgICAgUUNPTVBBUkUoc3RyLCBRU3RyaW5nKCJGb28iKSk7CisrICAgIH0KKyB9Cisg CisgY2xhc3MgQ2FuY2VsVXNlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8dm9pZD4KK0BAIC0yMTMs NiArMjI2LDEyIEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6dGhyb3R0bGUo KQorICAgICAgICAgZi53YWl0Rm9yRmluaXNoZWQoKTsKKyAgICAgICAgIFFDT01QQVJFKGNvdW50 LmxvYWRSZWxheGVkKCksIDApOworICAgICB9CisrCisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwg cmVwZWF0czsgKytpKSB7CisrICAgICAgICBUaHJvdHRsZUFsd2F5c1VzZXIgdDsKKysgICAgICAg IHQuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQubG9hZFJlbGF4ZWQo KSwgMCk7CisrICAgIH0KKyB9CisgCisgUVNldDxRVGhyZWFkICo+IHRocmVhZHM7CitAQCAtMjQ5 LDE3ICsyNjgsMzUgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjp0aHJlYWRD b3VudCgpCisgeworICAgICBjb25zdCBpbnQgcmVwZWF0cyA9IDEwOworICAgICBmb3IgKGludCBp ID0gMDsgaSA8IHJlcGVhdHM7ICsraSkgeworKyAgICAgICAgVGhyZWFkQ291bnRVc2VyIHQ7Cisr ICAgICAgICB0LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGludCBjb3VudCA9IHRocmVhZHMu Y291bnQoKTsKKysgICAgICAgIGludCBjb3VudF9leHBlY3RlZCA9IFFUaHJlYWRQb29sOjpnbG9i YWxJbnN0YW5jZSgpLT5tYXhUaHJlYWRDb3VudCgpICsgMTsgLy8gKzEgZm9yIHRoZSBtYWluIHRo cmVhZC4KKysgICAgICAgIGlmIChjb3VudCAhPSBjb3VudF9leHBlY3RlZCkKKysgICAgICAgICAg ICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKysgICAgICAgIFFDT01Q QVJFKGNvdW50LCBjb3VudF9leHBlY3RlZCk7CisrCisgICAgICAgICAobmV3IFRocmVhZENvdW50 VXNlcigpKS0+c3RhcnRBc3luY2hyb25vdXNseSgpLndhaXRGb3JGaW5pc2hlZCgpOworLSAgICAg ICAgY29uc3QgYXV0byBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKy0gICAgICAgIGNvbnN0IGF1 dG8gbWF4VGhyZWFkQ291bnQgPSBRVGhyZWFkUG9vbDo6Z2xvYmFsSW5zdGFuY2UoKS0+bWF4VGhy ZWFkQ291bnQoKTsKKy0gICAgICAgIFFWRVJJRlkoY291bnQgPD0gbWF4VGhyZWFkQ291bnQpOwor LSAgICAgICAgUVZFUklGWSghdGhyZWFkcy5jb250YWlucyhRVGhyZWFkOjpjdXJyZW50VGhyZWFk KCkpKTsKKysgICAgICAgIGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgY291bnRf ZXhwZWN0ZWQgPSBRVGhyZWFkUG9vbDo6Z2xvYmFsSW5zdGFuY2UoKS0+bWF4VGhyZWFkQ291bnQo KTsKKysgICAgICAgIGlmIChjb3VudCAhPSBjb3VudF9leHBlY3RlZCkKKysgICAgICAgICAgICBR RVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKysgICAgICAgIFFDT01QQVJF KGNvdW50LCBjb3VudF9leHBlY3RlZCk7CisgICAgIH0KKyAKKyAgICAgLy8gU2V0IHRoZSBmaW5p c2ggZmxhZyBpbW1lZGlhdGVseSwgdGhpcyBzaG91bGQgZ2l2ZSB1cyBvbmUgdGhyZWFkIG9ubHku CisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0czsgKytpKSB7CisrICAgICAgICBUaHJl YWRDb3VudFVzZXIgdCh0cnVlIC8qZmluaXNoSW1tZWRpYXRlbHkqLyk7CisrICAgICAgICB0LnN0 YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGludCBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKysg ICAgICAgIGlmIChjb3VudCAhPSAxKQorKyAgICAgICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwgIlFU QlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQsIDEpOworKworICAg ICAgICAgKG5ldyBUaHJlYWRDb3VudFVzZXIodHJ1ZSAvKmZpbmlzaEltbWVkaWF0ZWx5Ki8pKS0+ c3RhcnRBc3luY2hyb25vdXNseSgpLndhaXRGb3JGaW5pc2hlZCgpOworLSAgICAgICAgY29uc3Qg YXV0byBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGNvdW50ID0gdGhyZWFkcy5j b3VudCgpOworKyAgICAgICAgaWYgKGNvdW50ICE9IDEpCisrICAgICAgICAgICAgUUVYUEVDVF9G QUlMKCIiLCAiUVRCVUctMjMzMzMiLCBBYm9ydCk7CisgICAgICAgICBRQ09NUEFSRShjb3VudCwg MSk7CisgICAgICAgICBRVkVSSUZZKCF0aHJlYWRzLmNvbnRhaW5zKFFUaHJlYWQ6OmN1cnJlbnRU aHJlYWQoKSkpOworICAgICB9CitAQCAtNDAwLDYgKzQzNyw3IEBAIHB1YmxpYzoKKyAKKyB2b2lk IHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OmV4Y2VwdGlvbnMoKQorIHsKKysgICAgLy8g QXN5bmNocm9ub3VzIG1vZGU6CisgICAgIHsKKyAgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7 CisgICAgICAgICB0cnkgIHsKK0BAIC00MTIsNiArNDUwLDMyIEBAIHZvaWQgdHN0X1F0Q29uY3Vy cmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgICAgICAgICBRVkVSSUZZMihjYXVnaHQs ICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKyAgICAgfQorIAorKyAgICAvLyBCbG9ja2luZyBt b2RlOgorKyAgICAvLyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24gZnJvbSBhIHdvcmtlciB0 aHJlYWQuCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisrICAgICAgICB0 cnkgIHsKKysgICAgICAgICAgICBRdENvbmN1cnJlbnRFeGNlcHRpb25UaHJvd2VyIGUoUVRocmVh ZDo6Y3VycmVudFRocmVhZCgpKTsKKysgICAgICAgICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsKKysg ICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFFeGNlcHRpb24gJikgeworKyAgICAgICAgICAgIGNhdWdo dCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90 IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorKworKyAgICAvLyB0ZXN0IHRocm93aW5nIHRoZSBl eGNlcHRpb24gZnJvbSB0aGUgbWFpbiB0aHJlYWQgKGRpZmZlcmVudCBjb2RlIHBhdGgpCisrICAg IHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisrICAgICAgICB0cnkgIHsKKysgICAg ICAgICAgICBRdENvbmN1cnJlbnRFeGNlcHRpb25UaHJvd2VyIGUoMCk7CisrICAgICAgICAgICAg ZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNhdGNoIChjb25zdCBRRXhjZXB0aW9uICYp IHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0cnVlOworKyAgICAgICAgfQorKyAgICAgICAgUVZF UklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisrICAgIH0KKysKKysgICAg Ly8gQXN5bmNocm9ub3VzIG1vZGU6CisgICAgIHsKKyAgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFs c2U7CisgICAgICAgICB0cnkgIHsKK0BAIC00MjMsNiArNDg3LDMxIEBAIHZvaWQgdHN0X1F0Q29u Y3VycmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgICAgICAgICB9CisgICAgICAgICBR VkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKyAgICAgfQorKworKyAg ICAvLyBCbG9ja2luZyBtb2RlOgorKyAgICAvLyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24g ZnJvbSBhIHdvcmtlciB0aHJlYWQuCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFs c2U7CisrICAgICAgICB0cnkgIHsKKysgICAgICAgICAgICBVbnJlbGF0ZWRFeGNlcHRpb25UaHJv d2VyIGUoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKTsKKysgICAgICAgICAgICBlLnN0YXJ0Qmxv Y2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFVbmhhbmRsZWRFeGNlcHRpb24gJikg eworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBRVkVS SUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorKworKyAgICAv LyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24gZnJvbSB0aGUgbWFpbiB0aHJlYWQgKGRpZmZl cmVudCBjb2RlIHBhdGgpCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7Cisr ICAgICAgICB0cnkgIHsKKysgICAgICAgICAgICBVbnJlbGF0ZWRFeGNlcHRpb25UaHJvd2VyIGUo MCk7CisrICAgICAgICAgICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNhdGNoIChj b25zdCBRVW5oYW5kbGVkRXhjZXB0aW9uICYpIHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0cnVl OworKyAgICAgICAgfQorKyAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhj ZXB0aW9uIik7CisrICAgIH0KKyB9CisgCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcCBiL3F0YmFzZS90ZXN0 cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1ZmZlci5jcHAKK2luZGV4IDQ5Njg3NDIx MTAuLmY0YzNmYjcxMWQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lv L3FidWZmZXIvdHN0X3FidWZmZXIuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGli L2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwCitAQCAtNDIsNiArNDIsNyBAQCBwcml2YXRlIHNs b3RzOgorICAgICB2b2lkIHdyaXRlQmxvY2tfZGF0YSgpOworICAgICB2b2lkIHdyaXRlQmxvY2so KTsKKyAgICAgdm9pZCBzZWVrKCk7CisrICAgIHZvaWQgaW52YWxpZFNlZWtzKCk7CisgICAgIHZv aWQgc2Vla1Rlc3RfZGF0YSgpOworICAgICB2b2lkIHNlZWtUZXN0KCk7CisgICAgIHZvaWQgcmVh ZF9yYXdkYXRhKCk7CitAQCAtMjg2LDYgKzI4NywyOSBAQCB2b2lkIHRzdF9RQnVmZmVyOjpzZWVr KCkKKyAgICAgUUNPTVBBUkUoYnVmZmVyLnNpemUoKSwgcG9zKTsKKyB9CisgCisrdm9pZCB0c3Rf UUJ1ZmZlcjo6aW52YWxpZFNlZWtzKCkKKyt7CisrICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKHFz aXpldHlwZSkgPT0gc2l6ZW9mKHFpbnQ2NCkpIHsKKysgICAgICAgIC8vIHNpemVvZihxc2l6ZXR5 cGUpID09IHNpemVvZihxaW50NjQpLCBzbyArMSB3b3VsZCBvdmVyZmxvdworKyAgICAgICAgUVNL SVAoIlRoaXMgaXMgYSAzMi1iaXQtb25seSB0ZXN0LiIpOworKyAgICB9IGVsc2UgeworKyAgICAg ICAgUUJ1ZmZlciBidWZmZXI7CisrICAgICAgICBidWZmZXIub3BlbihRSU9EZXZpY2U6OldyaXRl T25seSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIuYnVmZmVyKCkuc2l6ZSgpLCBxc2l6ZXR5 cGUoMCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLnBvcygpLCBxaW50NjQoMCkpOworKyAg ICAgICAgY29uc3RleHByIHFpbnQ2NCBNYXhRQnl0ZUFycmF5Q2FwYWNpdHkgPSAoc3RkOjpudW1l cmljX2xpbWl0czxxc2l6ZXR5cGU+OjptYXgpKCk7CisrICAgICAgICAvLyB0aGlzIHNob3VsZCBm YWlsIGZhc3QsIG5vdCBhZnRlciB0cnlpbmcgdG8gYWxsb2NhdGUgbmVhcmx5IDIgR2lCIG9mIGRh dGEsCisrICAgICAgICAvLyBwb3RlbnRpYWxseSBjcmFzaGluZyBpbiB0aGUgcHJvY2VzczoKKysg ICAgICAgIFFWRVJJRlkoIWJ1ZmZlci5zZWVrKDIgKiBNYXhRQnl0ZUFycmF5Q2FwYWNpdHkgLSAx KSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIuYnVmZmVyKCkuc2l6ZSgpLCBxc2l6ZXR5cGUo MCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLnBvcygpLCBxaW50NjQoMCkpOworKyAgICAg ICAgLy8gZGl0dG86CisrICAgICAgICBRVkVSSUZZKCFidWZmZXIuc2VlayhNYXhRQnl0ZUFycmF5 Q2FwYWNpdHkgKyAxKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIuYnVmZmVyKCkuc2l6ZSgp LCBxc2l6ZXR5cGUoMCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLnBvcygpLCBxaW50NjQo MCkpOworKyAgICB9CisrfQorKworIHZvaWQgdHN0X1FCdWZmZXI6OnNlZWtUZXN0X2RhdGEoKQor IHsKKyAgICAgd3JpdGVCbG9ja19kYXRhKCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1 dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fpb2RldmljZS5jcHAgYi9xdGJhc2UvdGVzdHMv YXV0by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcAoraW5kZXggZGE1MzI3 NTk0Yy4uNGEwNGUwZjdjNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIv aW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9j b3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcAorQEAgLTU2MSw3ICs1NjEsOCBA QCBwcm90ZWN0ZWQ6CisgICAgIHFpbnQ2NCByZWFkRGF0YShjaGFyICpkYXRhLCBxaW50NjQgbWF4 U2l6ZSkgb3ZlcnJpZGUKKyAgICAgeworICAgICAgICAgbWF4U2l6ZSA9IHFNaW4obWF4U2l6ZSwg cWludDY0KGJ1Zi0+c2l6ZSgpIC0gb2Zmc2V0KSk7CistICAgICAgICBtZW1jcHkoZGF0YSwgYnVm LT5jb25zdERhdGEoKSArIG9mZnNldCwgbWF4U2l6ZSk7CisrICAgICAgICBpZiAobWF4U2l6ZSA+ IDApCisrICAgICAgICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi0+Y29uc3REYXRhKCkgKyBvZmZzZXQs IG1heFNpemUpOworICAgICAgICAgb2Zmc2V0ICs9IG1heFNpemU7CisgICAgICAgICByZXR1cm4g bWF4U2l6ZTsKKyAgICAgfQorQEAgLTYwNCwxMyArNjA1LDE1IEBAIHByb3RlY3RlZDoKKyAgICAg cWludDY0IHJlYWREYXRhKGNoYXIgKmRhdGEsIHFpbnQ2NCBtYXhTaXplKSBvdmVycmlkZQorICAg ICB7CisgICAgICAgICBtYXhTaXplID0gcU1pbihtYXhTaXplLCBxaW50NjQoYnVmLnNpemUoKSAt IHBvcygpKSk7CistICAgICAgICBtZW1jcHkoZGF0YSwgYnVmLmNvbnN0RGF0YSgpICsgcG9zKCks IG1heFNpemUpOworKyAgICAgICAgaWYgKG1heFNpemUgPiAwKQorKyAgICAgICAgICAgIG1lbWNw eShkYXRhLCBidWYuY29uc3REYXRhKCkgKyBwb3MoKSwgbWF4U2l6ZSk7CisgICAgICAgICByZXR1 cm4gbWF4U2l6ZTsKKyAgICAgfQorICAgICBxaW50NjQgd3JpdGVEYXRhKGNvbnN0IGNoYXIgKmRh dGEsIHFpbnQ2NCBtYXhTaXplKSBvdmVycmlkZQorICAgICB7CisgICAgICAgICBtYXhTaXplID0g cU1pbihtYXhTaXplLCBxaW50NjQoYnVmLnNpemUoKSAtIHBvcygpKSk7CistICAgICAgICBtZW1j cHkoYnVmLmRhdGEoKSArIHBvcygpLCBkYXRhLCBtYXhTaXplKTsKKysgICAgICAgIGlmIChtYXhT aXplID4gMCkKKysgICAgICAgICAgICBtZW1jcHkoYnVmLmRhdGEoKSArIHBvcygpLCBkYXRhLCBt YXhTaXplKTsKKyAgICAgICAgIHJldHVybiBtYXhTaXplOworICAgICB9CisgCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3RfcXByb2Nlc3MuY3Bw IGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3RfcXByb2Nlc3MuY3Bw CitpbmRleCBkYjYwYmVhZDY0Li5mMzQ1YTQ0NDE0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3Rz L2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3RfcXByb2Nlc3MuY3BwCisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAKK0BAIC0xLDcg KzEsOCBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKyAqKiBDb3B5cmlnaHQgKEMpIDIw MjEgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoqIENvcHlyaWdodCAoQykgMjAyMCBJbnRlbCBDb3Jw b3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjAgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoq IENvcHlyaWdodCAoQykgMjAyMiBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqKiBDb250YWN0OiBodHRw czovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC0xNTAsNiArMTUxLDggQEAgcHJp dmF0ZSBzbG90czoKKyAgICAgdm9pZCBzdGFydFN0b3BTdGFydFN0b3BCdWZmZXJzKCk7CisgICAg IHZvaWQgcHJvY2Vzc0V2ZW50c0luQVJlYWR5UmVhZFNsb3RfZGF0YSgpOworICAgICB2b2lkIHBy b2Nlc3NFdmVudHNJbkFSZWFkeVJlYWRTbG90KCk7CisrICAgIHZvaWQgc3RhcnRGcm9tQ3VycmVu dFdvcmtpbmdEaXJfZGF0YSgpOworKyAgICB2b2lkIHN0YXJ0RnJvbUN1cnJlbnRXb3JraW5nRGly KCk7CisgCisgICAgIC8vIGtlZXAgdGhlc2UgYXQgdGhlIGVuZCwgc2luY2UgdGhleSB1c2UgbG90 cyBvZiBwcm9jZXNzZXMgYW5kIHNvbWV0aW1lcworICAgICAvLyBjYXVzZWQgb2JzY3VyZSBmYWls dXJlcyB0byBvY2N1ciBpbiB0ZXN0cyB0aGF0IGZvbGxvd2VkIHRoZW0gKGVzcC4gb24gdGhlIE1h YykKK0BAIC0yNzMxLDUgKzI3MzQsOTQgQEAgdm9pZCB0c3RfUVByb2Nlc3M6OmZpbmlzaFByb2Nl c3NCZWZvcmVSZWFkaW5nRG9uZV9kZXByZWNhdGVkKCkKKyAKKyAjZW5kaWYKKyAKKytlbnVtIGNs YXNzIENoZGlyTW9kZSB7CisrICAgIE5vbmUgPSAwLAorKyAgICBJblBhcmVudCwKKysgICAgSW5D aGlsZAorK307CisrUV9ERUNMQVJFX01FVEFUWVBFKENoZGlyTW9kZSkKKysKKyt2b2lkIHRzdF9R UHJvY2Vzczo6c3RhcnRGcm9tQ3VycmVudFdvcmtpbmdEaXJfZGF0YSgpCisreworKyAgICBxUmVn aXN0ZXJNZXRhVHlwZTxDaGRpck1vZGU+KCk7CisrICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmlu Zz4oInByb2dyYW1QcmVmaXgiKTsKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxDaGRpck1vZGU+KCJj aGRpck1vZGUiKTsKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxib29sPigic3VjY2VzcyIpOworKwor KyAgICBjb25zdGV4cHIgYm9vbCBJc1dpbmRvd3MgPSB0cnVlCisrI2lmZGVmIFFfT1NfVU5JWAor KyAgICAgICAgICAgICYmIGZhbHNlCisrI2VuZGlmCisrICAgICAgICAgICAgOworKworKyAgICAv LyBiYXNlbGluZTogdHJ5aW5nIHRvIGV4ZWN1dGUgdGhlIGRpcmVjdG9yeSwgdGhpcyBjYW4ndCBw b3NzaWJseSBzdWNjZWVkIQorKyAgICBRVGVzdDo6bmV3Um93KCJwbGFpbi1zYW1lLWN3ZCIpIDw8 IFFTdHJpbmcoKSA8PCBDaGRpck1vZGU6Ok5vbmUgPDwgZmFsc2U7CisrCisrICAgIC8vIGNyb3Nz LXBsYXRmb3JtIGJlaGF2aW9yOiBuZWl0aGVyIE9TIHNlYXJjaGVzIHRoZSBzZXRXb3JraW5nRGly ZWN0b3J5KCkKKysgICAgLy8gZGlyIHdpdGhvdXQgIi4vIgorKyAgICBRVGVzdDo6bmV3Um93KCJw bGFpbi1jaGlsZC1jaGRpciIpIDw8IFFTdHJpbmcoKSA8PCBDaGRpck1vZGU6OkluQ2hpbGQgPDwg ZmFsc2U7CisrCisrICAgIC8vIGNyb3NzLXBsYXRmb3JtIGJlaGF2aW9yOiBib3RoIE9TZXMgc2Vh cmNoIHRoZSBwYXJlbnQncyBDV0Qgd2l0aCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3coInByZWZp eGVkLXBhcmVudC1jaGRpciIpIDw8ICIuLyIgPDwgQ2hkaXJNb2RlOjpJblBhcmVudCA8PCB0cnVl OworKworKyAgICAvLyBvcHBvc2l0ZSBiZWhhdmlvcnM6IFdpbmRvd3Mgc2VhcmNoZXMgdGhlIHBh cmVudCdzIENXRCBhbmQgVW5peCBzZWFyY2hlcworKyAgICAvLyB0aGUgY2hpbGQncyB3aXRoICIu LyIKKysgICAgUVRlc3Q6Om5ld1JvdygicHJlZml4ZWQtY2hpbGQtY2hkaXIiKSA8PCAiLi8iIDw8 IENoZGlyTW9kZTo6SW5DaGlsZCA8PCAhSXNXaW5kb3dzOworKworKyAgICAvLyBXaW5kb3dzIHNl YXJjaGVzIHRoZSBwYXJlbnQncyBDV0Qgd2l0aG91dCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3co InBsYWluLXBhcmVudC1jaGRpciIpIDw8IFFTdHJpbmcoKSA8PCBDaGRpck1vZGU6OkluUGFyZW50 IDw8IElzV2luZG93czsKKyt9CisrCisrdm9pZCB0c3RfUVByb2Nlc3M6OnN0YXJ0RnJvbUN1cnJl bnRXb3JraW5nRGlyKCkKKyt7CisrICAgIFFGRVRDSChRU3RyaW5nLCBwcm9ncmFtUHJlZml4KTsK KysgICAgUUZFVENIKENoZGlyTW9kZSwgY2hkaXJNb2RlKTsKKysgICAgUUZFVENIKGJvb2wsIHN1 Y2Nlc3MpOworKworKyAgICBRUHJvY2VzcyBwcm9jZXNzOworKyAgICBxUmVnaXN0ZXJNZXRhVHlw ZTxRUHJvY2Vzczo6UHJvY2Vzc0Vycm9yPigpOworKyAgICBRU2lnbmFsU3B5IGVycm9yU3B5KCZw cm9jZXNzLCAmUVByb2Nlc3M6OmVycm9yT2NjdXJyZWQpOworKyAgICBRVkVSSUZZKGVycm9yU3B5 LmlzVmFsaWQoKSk7CisrCisrICAgIC8vIGJvdGggdGhlIGRpciBuYW1lIGFuZCB0aGUgZXhlY3V0 YWJsZSBuYW1lCisrICAgIGNvbnN0IFFTdHJpbmcgdGFyZ2V0ID0gUVN0cmluZ0xpdGVyYWwoInRl c3RQcm9jZXNzTm9ybWFsIik7CisrICAgIHByb2Nlc3Muc2V0UHJvZ3JhbShwcm9ncmFtUHJlZml4 ICsgdGFyZ2V0KTsKKysKKysjaWZkZWYgUV9PU19VTklYCisrICAgIC8vIFJlc2V0IFBBVEgsIHRv IGJlIHN1cmUgaXQgZG9lc24ndCBjb250YWluIC4gb3IgdGhlIGVtcHR5IHBhdGguCisrICAgIC8v IFdlIGNhbid0IGRvIHRoaXMgb24gV2luZG93cyBiZWNhdXNlIERMTHMgYXJlIHNlYXJjaGVkIGlu IFBBVEgKKysgICAgLy8gYW5kIFdpbmRvd3MgYWx3YXlzIHNlYXJjaGVzICIuIiBhbnl3YXkuCisr ICAgIGF1dG8gcmVzdG9yZUVudiA9IHFTY29wZUd1YXJkKFtvbGQgPSBxZ2V0ZW52KCJQQVRIIild IHsKKysgICAgICAgIHFwdXRlbnYoIlBBVEgiLCBvbGQpOworKyAgICB9KTsKKysgICAgcXB1dGVu digiUEFUSCIsICIvIik7CisrI2VuZGlmCisrCisrICAgIHN3aXRjaCAoY2hkaXJNb2RlKSB7Cisr ICAgIGNhc2UgQ2hkaXJNb2RlOjpJblBhcmVudDogeworKyAgICAgICAgYXV0byByZXN0b3JlQ3dk ID0gcVNjb3BlR3VhcmQoW29sZCA9IFFEaXI6OmN1cnJlbnRQYXRoKCldIHsKKysgICAgICAgICAg ICBRRGlyOjpzZXRDdXJyZW50KG9sZCk7CisrICAgICAgICB9KTsKKysgICAgICAgIFFWRVJJRlko UURpcjo6c2V0Q3VycmVudCh0YXJnZXQpKTsKKysgICAgICAgIHByb2Nlc3Muc3RhcnQoKTsKKysg ICAgICAgIGJyZWFrOworKyAgICB9CisrICAgIGNhc2UgQ2hkaXJNb2RlOjpJbkNoaWxkOgorKyAg ICAgICAgcHJvY2Vzcy5zZXRXb3JraW5nRGlyZWN0b3J5KHRhcmdldCk7CisrICAgICAgICBRX0ZB TExUSFJPVUdIKCk7CisrICAgIGNhc2UgQ2hkaXJNb2RlOjpOb25lOgorKyAgICAgICAgcHJvY2Vz cy5zdGFydCgpOworKyAgICAgICAgYnJlYWs7CisrICAgIH0KKysKKysgICAgUUNPTVBBUkUocHJv Y2Vzcy53YWl0Rm9yU3RhcnRlZCgpLCBzdWNjZXNzKTsKKysgICAgUUNPTVBBUkUoZXJyb3JTcHku Y291bnQoKSwgaW50KCFzdWNjZXNzKSk7CisrICAgIGlmIChzdWNjZXNzKSB7CisrICAgICAgICBR VkVSSUZZKHByb2Nlc3Mud2FpdEZvckZpbmlzaGVkKCkpOworKyAgICB9IGVsc2UgeworKyAgICAg ICAgUUNPTVBBUkUocHJvY2Vzcy5lcnJvcigpLCBRUHJvY2Vzczo6RmFpbGVkVG9TdGFydCk7Cisr ICAgIH0KKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUVByb2Nlc3MpCisgI2luY2x1ZGUgInRzdF9x cHJvY2Vzcy5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVt bW9kZWxzL3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxl c3Byb3h5bW9kZWwuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVtbW9kZWxzL3Fj b25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9k ZWwuY3BwCitpbmRleCBlMWVhN2E0NTUyLi45MDk3MmNhYTU3IDEwMDY0NAorLS0tIGEvcXRiYXNl L3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVtbW9kZWxzL3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9k ZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwuY3BwCisrKysgYi9xdGJhc2UvdGVz dHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC90 c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAKK0BAIC0xMTcsNiArMTE3LDcgQEAg cHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIHNob3VsZFByb3BhZ2F0ZURyb3BBZnRlckxhc3RS b3dfZGF0YSgpOworICAgICB2b2lkIHNob3VsZFByb3BhZ2F0ZURyb3BBZnRlckxhc3RSb3coKTsK KyAgICAgdm9pZCBxdGJ1ZzkxNzg4KCk7CisrICAgIHZvaWQgcXRidWc5MTg3OCgpOworIAorIHBy aXZhdGU6CisgICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCBtb2Q7CitAQCAtODQzLDYgKzg0NCwyMiBA QCB2b2lkIHRzdF9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsOjpxdGJ1ZzkxNzg4KCkKKyAg ICAgUUNPTVBBUkUocHJveHlDb25jYXQuY29sdW1uQ291bnQoKSwgMCk7CisgfQorIAorK3ZvaWQg dHN0X1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWw6OnF0YnVnOTE4NzgoKQorK3sKKysgICAg UVN0YW5kYXJkSXRlbU1vZGVsIG07CisrICAgIG0uc2V0Um93Q291bnQoNCk7CisrICAgIG0uc2V0 Q29sdW1uQ291bnQoNCk7CisrCisrICAgIFFDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWwgcG07 CisrICAgIFFTb3J0RmlsdGVyUHJveHlNb2RlbCBwcm94eUZpbHRlcjsKKysgICAgcHJveHlGaWx0 ZXIuc2V0U291cmNlTW9kZWwoJnBtKTsKKysgICAgcHJveHlGaWx0ZXIuc2V0RmlsdGVyRml4ZWRT dHJpbmcoInNvbWV0aGluZyIpOworKyAgICBwbS5hZGRTb3VyY2VNb2RlbCgmbSk7ICAvLyBUaGlz IHNob3VsZCBub3QgYXNzZXJ0CisrCisrICAgIFFDT01QQVJFKHBtLmNvbHVtbkNvdW50KCksIDQp OworKyAgICBRQ09NUEFSRShwbS5yb3dDb3VudCgpLCA0KTsKKyt9CisrCisgUVRFU1RfR1VJTEVT U19NQUlOKHRzdF9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsKQorIAorICNpbmNsdWRlICJ0 c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9iamVjdC90c3RfcW9iamVjdC5jcHAgYi9xdGJh c2UvdGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNwcAoraW5k ZXggOWJkNjZjMDgzNS4uZWQ0YTBiYWU1ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCisrKysgYi9xdGJhc2UvdGVz dHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNwcAorQEAgLTE1OCw2 ICsxNTgsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIG51bGxSZWNlaXZlcigpOworICAg ICB2b2lkIGZ1bmN0b3JSZWZlcmVuY2VzQ29ubmVjdGlvbigpOworICAgICB2b2lkIGRpc2Nvbm5l Y3REaXNjb25uZWN0cygpOworKyAgICB2b2lkIGRlY2xhcmF0aXZlRGF0YSgpOworIH07CisgCisg c3RydWN0IFFPYmplY3RDcmVhdGVkT25TaHV0ZG93bgorQEAgLTc2NzksNSArNzY4MCw4MSBAQCB2 b2lkIHRzdF9RT2JqZWN0OjpkaXNjb25uZWN0RGlzY29ubmVjdHMoKQorIFFfU1RBVElDX0FTU0VS VChRdFByaXZhdGU6Okhhc1FfT0JKRUNUX01hY3JvPHRzdF9RT2JqZWN0Pjo6VmFsdWUpOworIFFf U1RBVElDX0FTU0VSVCghUXRQcml2YXRlOjpIYXNRX09CSkVDVF9NYWNybzxTaWJsaW5nRGVsZXRl cj46OlZhbHVlKTsKKyAKKysjaWZkZWYgUVRfQlVJTERfSU5URVJOQUwKKysvKgorKyAgICBTaW5j ZSBRT2JqZWN0UHJpdmF0ZSBzdG9yZXMgdGhlIGRlY2xhcmF0aXZlRGF0YSBwb2ludGVyIGluIGEg dW5pb24gd2l0aCB0aGUgcG9pbnRlcgorKyAgICB0byB0aGUgY3VycmVudGx5IGRlc3Ryb3llZCBj aGlsZCwgY2FsbHMgdG8gdGhlIFF0RGVjbGFyYXRpdmUgaGFuZGxlcnMgbmVlZCB0byBiZQorKyAg ICBjb3JyZWN0bHkgZ3VhcmRlZC4gUVRCVUctMTA1Mjg2CisrKi8KKytuYW1lc3BhY2UgUXREZWNs YXJhdGl2ZSB7Cisrc3RhdGljIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqdGhlRGF0YTsKKysK KytzdGF0aWMgdm9pZCBkZXN0cm95ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBR T2JqZWN0ICopCisreworKyAgICBRQ09NUEFSRShkYXRhLCB0aGVEYXRhKTsKKyt9Cisrc3RhdGlj IHZvaWQgc2lnbmFsRW1pdHRlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRhdGEsIFFPYmpl Y3QgKiwgaW50LCB2b2lkICoqKQorK3sKKysgICAgUUNPTVBBUkUoZGF0YSwgdGhlRGF0YSk7Cisr fQorKy8vIHdlIGNhbid0IHVzZSBRQ09NUEFSRSBpbiB0aGUgbmV4dCB0d28gZnVuY3Rpb25zLCBh cyB0aGV5IGRvbid0IHJldHVybiB2b2lkCisrc3RhdGljIGludCByZWNlaXZlcnMoUUFic3RyYWN0 RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBjb25zdCBRT2JqZWN0ICosIGludCkKKyt7CisrICAgIFFU ZXN0OjpxQ29tcGFyZShkYXRhLCB0aGVEYXRhLCAiZGF0YSIsICJ0aGVEYXRhIiwgX19GSUxFX18s IF9fTElORV9fKTsKKysgICAgcmV0dXJuIDA7CisrfQorK3N0YXRpYyBib29sIGlzU2lnbmFsQ29u bmVjdGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgY29uc3QgUU9iamVjdCAqLCBp bnQpCisreworKyAgICBRVGVzdDo6cUNvbXBhcmUoZGF0YSwgdGhlRGF0YSwgImRhdGEiLCAidGhl RGF0YSIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisrICAgIHJldHVybiB0cnVlOworK30KKysKKytj bGFzcyBPYmplY3QgOiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9PQkpFQ1QKKytwdWJsaWM6 CisrICAgIHVzaW5nIFFPYmplY3Q6OlFPYmplY3Q7CisrICAgIH5PYmplY3QoKQorKyAgICB7Cisr ICAgICAgICBpZiAoT2JqZWN0ICpwID0gc3RhdGljX2Nhc3Q8T2JqZWN0ICo+KHBhcmVudCgpKSkK KysgICAgICAgICAgICBwLT5lbWl0U2lnbmFsKCk7CisrICAgIH0KKysKKysgICAgdm9pZCBlbWl0 U2lnbmFsKCkKKysgICAgeworKyAgICAgICAgZW1pdCB0aGVTaWduYWwoKTsKKysgICAgfQorKwor K3NpZ25hbHM6CisrICAgIHZvaWQgdGhlU2lnbmFsKCk7CisrfTsKKysKKyt9CisrI2VuZGlmCisr Cisrdm9pZCB0c3RfUU9iamVjdDo6ZGVjbGFyYXRpdmVEYXRhKCkKKyt7CisrI2lmZGVmIFFUX0JV SUxEX0lOVEVSTkFMCisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIGRlc3Ryb3llZChRQWJzdHJh Y3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ryb3llZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFF0RGVjbGFyYXRpdmU6OmRlc3Ryb3llZCk7CisrICAgIFFTY29wZWRWYWx1ZVJv bGxiYWNrIHNpZ25hbEVtaXR0ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpzaWduYWxFbWl0 dGVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0RGVjbGFyYXRp dmU6OnNpZ25hbEVtaXR0ZWQpOworKyAgICBRU2NvcGVkVmFsdWVSb2xsYmFjayByZWNlaXZlcnMo UUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZlOjpyZWNlaXZlcnMpOworKyAgICBRU2NvcGVk VmFsdWVSb2xsYmFjayBpc1NpZ25hbENvbm5lY3RlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6 OmlzU2lnbmFsQ29ubmVjdGVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRdERlY2xhcmF0aXZlOjppc1NpZ25hbENvbm5lY3RlZCk7CisrCisrICAgIFF0RGVj bGFyYXRpdmU6Ok9iamVjdCBwOworKyAgICBRT2JqZWN0UHJpdmF0ZSAqcHJpdiA9IFFPYmplY3RQ cml2YXRlOjpnZXQoJnApOworKyAgICBwcml2LT5kZWNsYXJhdGl2ZURhdGEgPSBRdERlY2xhcmF0 aXZlOjp0aGVEYXRhID0gbmV3IFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTsKKysKKysgICAgY29u bmVjdCgmcCwgJlF0RGVjbGFyYXRpdmU6Ok9iamVjdDo6dGhlU2lnbmFsLCAmcCwgW117CisrICAg IH0pOworKworKyAgICBRdERlY2xhcmF0aXZlOjpPYmplY3QgKmNoaWxkID0gbmV3IFF0RGVjbGFy YXRpdmU6Ok9iamVjdDsKKysgICAgY2hpbGQtPnNldFBhcmVudCgmcCk7CisrI2VuZGlmCisrfQor KworIFFURVNUX01BSU4odHN0X1FPYmplY3QpCisgI2luY2x1ZGUgInRzdF9xb2JqZWN0Lm1vYyIK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRh dGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIv bWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3FtaW1lZGF0YWJhc2UuY3BwCitpbmRleCAwZWE0 MjJlY2JjLi4xYTMyNTY1MzRiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxp Yi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAKKysrKyBiL3F0 YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3FtaW1l ZGF0YWJhc2UuY3BwCitAQCAtNzAsMTUgKzcwLDE1IEBAIHN0YXRpYyBpbmxpbmUgUVN0cmluZyB0 ZXN0U3VpdGVXYXJuaW5nKCkKKyAKKyAgICAgUVN0cmluZyByZXN1bHQ7CisgICAgIFFUZXh0U3Ry ZWFtIHN0cigmcmVzdWx0KTsKKy0gICAgc3RyIDw8ICJcbkNhbm5vdCBmaW5kIHRoZSBzaGFyZWQt bWltZS1pbmZvIHRlc3Qgc3VpdGVcbnN0YXJ0aW5nIGZyb206ICIKKysgICAgc3RyIDw8ICJcbkNh bm5vdCBmaW5kIHRoZSBzaGFyZWQtbWltZS1pbmZvIHRlc3Qgc3VpdGVcbmluIHRoZSBwYXJlbnQg b2Y6ICIKKyAgICAgICAgIDw8IFFEaXI6OnRvTmF0aXZlU2VwYXJhdG9ycyhRRGlyOjpjdXJyZW50 UGF0aCgpKSA8PCAiXG4iCisgICAgICAgICAgICAiY2QgIiA8PCBRRGlyOjp0b05hdGl2ZVNlcGFy YXRvcnMoUVN0cmluZ0xpdGVyYWwoInRlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVk YXRhYmFzZSIpKSA8PCAiXG4iCistICAgICAgICAgICAid2dldCBodHRwOi8vY2dpdC5mcmVlZGVz a3RvcC5vcmcveGRnL3NoYXJlZC1taW1lLWluZm8vc25hcHNob3QvUmVsZWFzZS0xLTEwLnppcFxu IgorLSAgICAgICAgICAgInVuemlwIFJlbGVhc2UtMS0xMC56aXBcbiI7CisrICAgICAgICAgICAi d2dldCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcveGRnL3NoYXJlZC1taW1lLWluZm8v LS9hcmNoaXZlLzIuMS9zaGFyZWQtbWltZS1pbmZvLTIuMS56aXBcbiIKKysgICAgICAgICAgICJ1 bnppcCBzaGFyZWQtbWltZS1pbmZvLTIuMS56aXBcbiI7CisgI2lmZGVmIFFfT1NfV0lOCistICAg IHN0ciA8PCAibWtkaXIgdGVzdGZpbGVzXG54Y29weSAvcyBSZWxlYXNlLTEtMTAgcy1tLWlcbiI7 CisrICAgIHN0ciA8PCAibWtkaXIgdGVzdGZpbGVzXG54Y29weSAvcyBzaGFyZWQtbWltZS1pbmZv LTIuMSBzLW0taVxuIjsKKyAjZWxzZQorLSAgICBzdHIgPDwgImxuIC1zIFJlbGVhc2UtMS0xMCBz LW0taVxuIjsKKysgICAgc3RyIDw8ICJsbiAtcyBzaGFyZWQtbWltZS1pbmZvLTIuMSBzLW0taVxu IjsKKyAjZW5kaWYKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtMTU0LDcgKzE1NCw3IEBA IHZvaWQgdHN0X1FNaW1lRGF0YWJhc2U6OmluaXRUZXN0Q2FzZSgpCisgICAgIFFWRVJJRlkyKGNv cHlSZXNvdXJjZUZpbGUoeG1sRmlsZU5hbWUsIHhtbFRhcmdldEZpbGVOYW1lLCAmZXJyb3JNZXNz YWdlKSwgcVByaW50YWJsZShlcnJvck1lc3NhZ2UpKTsKKyAjZW5kaWYKKyAKKy0gICAgbV90ZXN0 U3VpdGUgPSBRRklORFRFU1REQVRBKCJzLW0taS90ZXN0cyIpOworKyAgICBtX3Rlc3RTdWl0ZSA9 IFFGSU5EVEVTVERBVEEoInMtbS1pL3Rlc3RzL21pbWUtZGV0ZWN0aW9uIik7CisgICAgIGlmICht X3Rlc3RTdWl0ZS5pc0VtcHR5KCkpCisgICAgICAgICBxV2FybmluZygiJXMiLCBxUHJpbnRhYmxl KHRlc3RTdWl0ZVdhcm5pbmcoKSkpOworIAorQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIHRzdF9R TWltZURhdGFiYXNlOjphbGxNaW1lVHlwZXMoKQorICAgICBRVkVSSUZZKCFsc3QuaXNFbXB0eSgp KTsKKyAKKyAgICAgLy8gSGFyZGNvZGluZyB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBjaGVjayBi b3RoIHByb3ZpZGVycyBmaW5kIHRoZSBzYW1lIG51bWJlciBvZiBtaW1ldHlwZXMuCistICAgIFFD T01QQVJFKGxzdC5jb3VudCgpLCA3NzkpOworKyAgICBRQ09NUEFSRShsc3QuY291bnQoKSwgODEx KTsKKyAKKyAgICAgZm9yZWFjaCAoY29uc3QgUU1pbWVUeXBlICZtaW1lLCBsc3QpIHsKKyAgICAg ICAgIGNvbnN0IFFTdHJpbmcgbmFtZSA9IG1pbWUubmFtZSgpOworQEAgLTYzMSwxMCArNjMxLDkg QEAgdm9pZCB0c3RfUU1pbWVEYXRhYmFzZTo6c3VmZml4ZXNfZGF0YSgpCisgCisgICAgIFFUZXN0 OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggYSBzaW5nbGUgcGF0dGVybiIpIDw8ICJhcHBsaWNhdGlv bi9wZGYiIDw8ICIqLnBkZiIgPDwgInBkZiI7CisgICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBl IHdpdGggbXVsdGlwbGUgcGF0dGVybnMiKSA8PCAiYXBwbGljYXRpb24veC1rcHJlc2VudGVyIiA8 PCAiKi5rcHI7Ki5rcHQiIDw8ICJrcHIiOworLSAgICBRVGVzdDo6bmV3Um93KCJqcGVnIikgPDwg ImltYWdlL2pwZWciIDw8ICIqLmpwZTsqLmpwZzsqLmpwZWciIDw8ICJqcGVnIjsKKy0gICAgLy9p ZiAoS01pbWVUeXBlOjpzaGFyZWRNaW1lSW5mb1ZlcnNpb24oKSA+IEtERV9NQUtFX1ZFUlNJT04o MCwgNjAsIDApKSB7CistICAgICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG1hbnkg cGF0dGVybnMiKSA8PCAiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0IiA8PCAiKi53cDsqLndw NDsqLndwNTsqLndwNjsqLndwZDsqLndwcCIgPDwgIndwIjsKKy0gICAgLy99CisrICAgIC8vIFRo ZSBwcmVmZXJyZWQgc3VmZml4IGZvciBpbWFnZS9qcGVnIGlzICouanBnLCBhcyBwZXIgaHR0cHM6 Ly9idWdzLmtkZS5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjczNworKyAgICBRVGVzdDo6bmV3Um93 KCJqcGVnIikgPDwgImltYWdlL2pwZWciIDw8ICIqLmpwZTsqLmpwZzsqLmpwZWciIDw8ICJqcGci OworKyAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG1hbnkgcGF0dGVybnMiKSA8PCAi YXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0IiA8PCAiKi53cDsqLndwNDsqLndwNTsqLndwNjsq LndwZDsqLndwcCIgPDwgIndwIjsKKyAgICAgUVRlc3Q6Om5ld1Jvdygib2FzaXMgdGV4dCBtaW1l dHlwZSIpIDw8ICJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQiIDw8ICIq Lm9kdCIgPDwgIm9kdCI7CisgICAgIFFUZXN0OjpuZXdSb3coIm9hc2lzIHByZXNlbnRhdGlvbiBt aW1ldHlwZSIpIDw8ICJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRh dGlvbiIgPDwgIioub2RwIiA8PCAib2RwIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUg d2l0aCBtdWx0aXBsZSBwYXR0ZXJucyIpIDw8ICJ0ZXh0L3BsYWluIiA8PCAiKi5hc2M7Ki50eHQ7 Kix2IiA8PCAidHh0IjsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3Nl cmlhbGl6YXRpb24vanNvbi90c3RfcXRqc29uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVs aWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3BwCitpbmRleCAzZTU4ZGQwM2NjLi5j OGY4MmVmNWQ1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxp emF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVs aWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3BwCitAQCAtMTc2LDYgKzE3Niw4IEBA IHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBmcm9tVG9WYXJpYW50Q29udmVyc2lvbnNfZGF0 YSgpOworICAgICB2b2lkIGZyb21Ub1ZhcmlhbnRDb252ZXJzaW9ucygpOworIAorKyAgICB2b2lk IG5vTGVha09uTmFtZUNsYXNoKCk7CisrCisgcHJpdmF0ZToKKyAgICAgUVN0cmluZyB0ZXN0RGF0 YURpcjsKKyB9OworQEAgLTM2ODUsNSArMzY4NywyMyBAQCB2b2lkIHRzdF9RdEpzb246OmZyb21U b1ZhcmlhbnRDb252ZXJzaW9ucygpCisgICAgIH0KKyB9CisgCisrdm9pZCB0c3RfUXRKc29uOjpu b0xlYWtPbk5hbWVDbGFzaCgpCisreworKyAgICBRSnNvbkRvY3VtZW50IGRvYyA9IFFKc29uRG9j dW1lbnQ6OmZyb21Kc29uKCJ7XCJcIjp7XCJcIjowfSxcIlwiOjB9Iik7CisrICAgIFFWRVJJRlko IWRvYy5pc051bGwoKSk7CisrICAgIGNvbnN0IFFKc29uT2JqZWN0IG9iaiA9IGRvYy5vYmplY3Qo KTsKKysKKysgICAgLy8gUmVtb3ZlZCB0aGUgZHVwbGljYXRlIGtleS4KKysgICAgUUNPTVBBUkUo b2JqLmxlbmd0aCgpLCAxKTsKKysKKysgICAgLy8gUmV0YWluZWQgdGhlIGxhc3Qgb2YgdGhlIGR1 cGxpY2F0ZXMuCisrICAgIGNvbnN0IFFKc29uVmFsdWUgdmFsID0gb2JqLmJlZ2luKCkudmFsdWUo KTsKKysgICAgUVZFUklGWSh2YWwuaXNEb3VibGUoKSk7CisrICAgIFFDT01QQVJFKHZhbC50b0Rv dWJsZSgpLCAwLjApOworKworKyAgICAvLyBJdCBzaG91bGQgbm90IGxlYWsuCisrICAgIC8vIElu IHBhcnRpY3VsYXIgaXQgc2hvdWxkIG5vdCBmb3JnZXQgdG8gZGVyZWYgdGhlIGNvbnRhaW5lciBm b3IgdGhlIGlubmVyIG9iamVjdC4KKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUXRKc29uKQorICNp bmNsdWRlICJ0c3RfcXRqc29uLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9j b3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9xdGltZXpvbmUuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vY29yZWxpYi90aW1lL3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcAoraW5kZXggYTU5YjU4 ZDU3Zi4uMjQxYzNlODRhYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIv dGltZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRv L2NvcmVsaWIvdGltZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAKK0BAIC02Myw2ICs2Myw3 IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgaXNWYWxpZElkX2RhdGEoKTsKKyAgICAgdm9p ZCBpc1ZhbGlkSWQoKTsKKyAgICAgdm9pZCBtYWxmb3JtZWQoKTsKKysgICAgdm9pZCBzZXJpYWxp emUoKTsKKyAgICAgLy8gQmFja2VuZCB0ZXN0cworICAgICB2b2lkIHV0Y1Rlc3QoKTsKKyAgICAg dm9pZCBpY3VUZXN0KCk7CitAQCAtOTQ3LDYgKzk0OCwzMyBAQCB2b2lkIHRzdF9RVGltZVpvbmU6 Om1hbGZvcm1lZCgpCisgICAgICAgICBiYXJmLm9mZnNldEZyb21VdGMobm93KTsKKyB9CisgCisr dm9pZCB0c3RfUVRpbWVab25lOjpzZXJpYWxpemUoKQorK3sKKysgICAgaW50IHBhcnRzID0gMDsK KysjaWZuZGVmIFFUX05PX0RFQlVHX1NUUkVBTQorKyAgICBxRGVidWcoKSA8PCBRVGltZVpvbmUo KTsgLy8gdG8gdmVyaWZ5IG5vIGNyYXNoCisrICAgIHBhcnRzKys7CisrI2VuZGlmCisrI2lmbmRl ZiBRVF9OT19EQVRBU1RSRUFNCisrICAgIFFCeXRlQXJyYXkgYmxvYjsKKysgICAgeworKyAgICAg ICAgUURhdGFTdHJlYW0gc3RyZWFtKCZibG9iLCBRSU9EZXZpY2U6OldyaXRlT25seSk7CisrICAg ICAgICBzdHJlYW0gPDwgUVRpbWVab25lKCJFdXJvcGUvT3NsbyIpIDw8IFFUaW1lWm9uZSg0MjAp IDw8IFFUaW1lWm9uZSgpIDw8IHFpbnQ2NCgtMSk7CisrICAgIH0KKysgICAgUURhdGFTdHJlYW0g c3RyZWFtKCZibG9iLCBRSU9EZXZpY2U6OlJlYWRPbmx5KTsKKysgICAgUVRpbWVab25lIGludmFs aWQsIG9mZnNldCwgb3NsbzsKKysgICAgcWludDY0IG1pbnVzb25lOworKyAgICBzdHJlYW0gPj4g b3NsbyA+PiBvZmZzZXQgPj4gaW52YWxpZCA+PiBtaW51c29uZTsKKysgICAgUUNPTVBBUkUob3Ns bywgUVRpbWVab25lKCJFdXJvcGUvT3NsbyIpKTsKKysgICAgUUNPTVBBUkUob2Zmc2V0LCBRVGlt ZVpvbmUoNDIwKSk7CisrICAgIFFWRVJJRlkoIWludmFsaWQuaXNWYWxpZCgpKTsKKysgICAgUUNP TVBBUkUobWludXNvbmUsIHFpbnQ2NCgtMSkpOworKyAgICBwYXJ0cysrOworKyNlbmRpZgorKyAg ICBpZiAoIXBhcnRzKQorKyAgICAgICAgUVNLSVAoIk5vIHNlcmlhbGl6YXRpb24gZW5hYmxlZCIp OworK30KKysKKyB2b2lkIHRzdF9RVGltZVpvbmU6OnV0Y1Rlc3QoKQorIHsKKyAjaWZkZWYgUVRf QlVJTERfSU5URVJOQUwKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9kYnVzL3FkYnVz aW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9kYnVz L3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAKK2luZGV4IDA1NDgwYzZkZDIu LjcwZjRjNzU3NTYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9kYnVzL3FkYnVzaW50 ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2Ri dXMvcWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcAorQEAgLTMyNCw2ICszMjQs MTMgQEAgdm9pZCB0c3RfUURCdXNJbnRlcmZhY2U6Om5vdFZhbGlkKCkKKyAKKyAgICAgUVZFUklG WSghaW50ZXJmYWNlLmlzVmFsaWQoKSk7CisgICAgIFFWRVJJRlkoIVFNZXRhT2JqZWN0OjppbnZv a2VNZXRob2QoJmludGVyZmFjZSwgIkxpc3ROYW1lcyIsIFF0OjpEaXJlY3RDb25uZWN0aW9uKSk7 CisrCisrICAgIC8vIFdpdGggYSBjb25uZWN0aW9uLCBidXQgZW1wdHkvbnVsbCBzZXJ2aWNlIGFu ZCBwYXRoIHNwZWNpZmllZAorKyAgICBRREJ1c0Nvbm5lY3Rpb24gY29uID0gUURCdXNDb25uZWN0 aW9uOjpzZXNzaW9uQnVzKCk7CisrICAgIFFWRVJJRlkoY29uLmlzQ29ubmVjdGVkKCkpOworKyAg ICBRREJ1c0ludGVyZmFjZSBpZmFjZSh7fSwge30sIHt9LCBjb24pOworKyAgICBRVkVSSUZZKCFp ZmFjZS5pc1ZhbGlkKCkpOworKyAgICBRVkVSSUZZKCFRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9k KCZpbnRlcmZhY2UsICJMaXN0TmFtZXMiLCBRdDo6RGlyZWN0Q29ubmVjdGlvbikpOworIH0KKyAK KyB2b2lkIHRzdF9RREJ1c0ludGVyZmFjZTo6bm90VmFsaWREZXJpdmVkKCkKK2RpZmYgLS1naXQg YS9xdGJhc2UvdGVzdHMvYXV0by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVl bmNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlL3RzdF9x a2V5c2VxdWVuY2UuY3BwCitpbmRleCA4NzQ0NjhjOTU0Li4wNGNlYjRhYjY1IDEwMDY0NAorLS0t IGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlzZXF1 ZW5jZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNl L3RzdF9xa2V5c2VxdWVuY2UuY3BwCitAQCAtNTA3LDYgKzUwNywxMCBAQCB2b2lkIHRzdF9RS2V5 U2VxdWVuY2U6OnRvU3RyaW5nRnJvbUtleWNvZGVfZGF0YSgpCisgICAgIFFUZXN0OjpuZXdSb3co IkN0cmwrQWx0K051bStEZWwiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OkNvbnRyb2xNb2RpZmllciB8 IFF0OjpBbHRNb2RpZmllciB8IFF0OjpLZXlwYWRNb2RpZmllciB8IFF0OjpLZXlfRGVsZXRlKSA8 PCAiQ3RybCtBbHQrTnVtK0RlbCI7CisgICAgIFFUZXN0OjpuZXdSb3coIkN0cmwrSW5zIikgPDwg UUtleVNlcXVlbmNlKFF0OjpDb250cm9sTW9kaWZpZXIgfCBRdDo6S2V5X0luc2VydCkgPDwgIkN0 cmwrSW5zIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtOdW0rSW5zKDEpIikgPDwgUUtleVNl cXVlbmNlKFF0OjpLZXlfSW5zZXJ0IHwgUXQ6OktleXBhZE1vZGlmaWVyIHwgUXQ6OkNvbnRyb2xN b2RpZmllcikgPDwgIkN0cmwrTnVtK0lucyI7CisrICAgIFFUZXN0OjpuZXdSb3coIkN0cmwiKSA8 PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9Db250cm9sKSA8PCAiQ29udHJvbCI7CisrICAgIFFUZXN0 OjpuZXdSb3coIkFsdCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X0FsdCkgPDwgIkFsdCI7Cisr ICAgIFFUZXN0OjpuZXdSb3coIlNoaWZ0IikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfU2hpZnQp IDw8ICJTaGlmdCI7CisrICAgIFFUZXN0OjpuZXdSb3coIk1ldGEiKSA8PCBRS2V5U2VxdWVuY2Uo UXQ6OktleV9NZXRhKSA8PCAiTWV0YSI7CisgfQorIAorIHZvaWQgdHN0X1FLZXlTZXF1ZW5jZTo6 dG9TdHJpbmdGcm9tS2V5Y29kZSgpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3Vp L3RleHQvcWZvbnRkYXRhYmFzZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAgYi9xdGJhc2UvdGVzdHMv YXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRhdGFiYXNlLmNwcAoraW5kZXgg MTVlMGVjYWRhYS4uYjRlY2E3NDI4MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2d1 aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRhdGFiYXNlLmNwcAor QEAgLTgxLDYgKzgxLDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCByZWdpc3Rlck9wZW5U eXBlUHJlZmVycmVkTmFtZXNTeXN0ZW0oKTsKKyAgICAgdm9pZCByZWdpc3Rlck9wZW5UeXBlUHJl ZmVycmVkTmFtZXNBcHBsaWNhdGlvbigpOworIAorKyAgICB2b2lkIHN0cmV0Y2hSZXNwZWN0ZWQo KTsKKysKKyBwcml2YXRlOgorICAgICBRU3RyaW5nIG1fbGVkRm9udDsKKyAgICAgUVN0cmluZyBt X3Rlc3RGb250OworQEAgLTM1NSw2ICszNTcsMjggQEAgc3RhdGljIFFTdHJpbmcgdGVzdFN0cmlu ZygpCisgICAgIHJldHVybiBRU3RyaW5nTGl0ZXJhbCgiZm9vIGJhciIpOworIH0KKyAKKyt2b2lk IHRzdF9RRm9udERhdGFiYXNlOjpzdHJldGNoUmVzcGVjdGVkKCkKKyt7CisrICAgIGludCBpdGFs aWNJZCA9IFFGb250RGF0YWJhc2U6OmFkZEFwcGxpY2F0aW9uRm9udChtX3Rlc3RGb250SXRhbGlj KTsKKysgICAgUVZFUklGWShpdGFsaWNJZCAhPSAtMSk7CisrCisrICAgIFFWRVJJRlkoIVFGb250 RGF0YWJhc2U6OmFwcGxpY2F0aW9uRm9udEZhbWlsaWVzKGl0YWxpY0lkKS5pc0VtcHR5KCkpOwor KworKyAgICBRU3RyaW5nIGl0YWxpY0ZvbnROYW1lID0gUUZvbnREYXRhYmFzZTo6YXBwbGljYXRp b25Gb250RmFtaWxpZXMoaXRhbGljSWQpLmZpcnN0KCk7CisrCisrICAgIFFGb250IGl0YWxpY0Zv bnQgPSBRRm9udERhdGFiYXNlKCkuZm9udChpdGFsaWNGb250TmFtZSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmc6OmZyb21MYXRpbjEoIkl0YWxp YyIpLCAxNCk7CisrICAgIFFWRVJJRlkoaXRhbGljRm9udC5pdGFsaWMoKSk7CisrCisrICAgIFFG b250IGl0YWxpY1N0cmV0Y2hlZEZvbnQgPSBpdGFsaWNGb250OworKyAgICBpdGFsaWNTdHJldGNo ZWRGb250LnNldFN0cmV0Y2goIDQwMCApOworKworKyAgICBRVkVSSUZZKFFGb250TWV0cmljc0Yo aXRhbGljRm9udCkuaG9yaXpvbnRhbEFkdmFuY2UoUVN0cmluZ0xpdGVyYWwoImZvb2JhciIpKSA8 CisrICAgICAgICAgICAgUUZvbnRNZXRyaWNzRihpdGFsaWNTdHJldGNoZWRGb250KS5ob3Jpem9u dGFsQWR2YW5jZShRU3RyaW5nTGl0ZXJhbCgiZm9vYmFyIikpKTsKKysKKysgICAgUUZvbnREYXRh YmFzZTo6cmVtb3ZlQXBwbGljYXRpb25Gb250KGl0YWxpY0lkKTsKKyt9CisrCisgdm9pZCB0c3Rf UUZvbnREYXRhYmFzZTo6Y29uZGVuc2VkRm9udFdpZHRoTm9Gb250TWVyZ2luZygpCisgeworICAg ICBpbnQgcmVndWxhckZvbnRJZCA9IFFGb250RGF0YWJhc2U6OmFkZEFwcGxpY2F0aW9uRm9udCht X3Rlc3RGb250KTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL2FjY2Vz cy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRv L25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3FuZXR3b3JrcmVwbHkuY3BwCitpbmRl eCAzZDRhMDk0YzQzLi5iNDIzZTExYTk5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8v bmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5jcHAKKysrKyBi L3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3FuZXR3 b3JrcmVwbHkuY3BwCitAQCAtMjgxLDYgKzI4MSw3IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAg dm9pZCBpb0dldEZyb21GaWxlU3BlY2lhbCgpOworICAgICB2b2lkIGlvR2V0RnJvbUZpbGVfZGF0 YSgpOworICAgICB2b2lkIGlvR2V0RnJvbUZpbGUoKTsKKysgICAgdm9pZCBpb0dldEZyb21GaWxl VXJsKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRnRwX2RhdGEoKTsKKyAgICAgdm9pZCBpb0dldEZy b21GdHAoKTsKKyAgICAgdm9pZCBpb0dldEZyb21GdHBXaXRoUmV1c2UoKTsKK0BAIC0zMzAwLDYg KzMzMDEsMTggQEAgdm9pZCB0c3RfUU5ldHdvcmtSZXBseTo6aW9HZXRGcm9tRmlsZSgpCisgICAg IFFDT01QQVJFKHJlYWRlci5kYXRhLCBkYXRhKTsKKyB9CisgCisrdm9pZCB0c3RfUU5ldHdvcmtS ZXBseTo6aW9HZXRGcm9tRmlsZVVybCgpCisreworKyAgICAvLyBUaGlzIGltbWVkaWF0ZWx5IGZh aWxzIG9uIG5vbi13aW5kb3dzIHBsYXRmb3JtczoKKysgICAgUU5ldHdvcmtSZXF1ZXN0IHJlcXVl c3QoUVVybCgiZmlsZTovL3VuYy1zZXJ2ZXIvc29tZS9wYXRoIikpOworKyAgICBRTmV0d29ya1Jl cGx5UHRyIHJlcGx5KG1hbmFnZXIuZ2V0KHJlcXVlc3QpKTsKKysgICAgUVNpZ25hbFNweSBmaW5p c2hlZFNweShyZXBseS5nZXQoKSwgJlFOZXR3b3JrUmVwbHk6OmZpbmlzaGVkKTsKKysgICAgLy8g UVRCVUctMTA1NjE4OiBUaGlzIHdvdWxkLCBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMsIG5ldmVy IGhhcHBlbiBiZWNhdXNlIHRoZSBzaWduYWwKKysgICAgLy8gd2FzIGVtaXR0ZWQgYmVmb3JlIHRo ZSBjb25zdHJ1Y3RvciBmaW5pc2hlZCwgbGVhdmluZyBubyBjaGFuY2UgYXQgYWxsIHRvIGNvbm5l Y3QgdG8gdGhlCisrICAgIC8vIHNpZ25hbAorKyAgICBRVkVSSUZZKGZpbmlzaGVkU3B5LndhaXQo KSk7CisrfQorKworIHZvaWQgdHN0X1FOZXR3b3JrUmVwbHk6OmlvR2V0RnJvbUZ0cF9kYXRhKCkK KyB7CisgICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmluZz4oImZpbGVOYW1lIik7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVr ZS5jZXJ0IGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9m bHVrZS5jZXJ0CitpbmRleCAwNjlmYTZiMzQxLi40Y2M0ZDlhNWVhIDEwMDY0NAorLS0tIGEvcXRi YXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5jZXJ0Cisr KysgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtl LmNlcnQKK0BAIC0xLDc1ICsxLDM0IEBACistQ2VydGlmaWNhdGU6CistICAgIERhdGE6CistICAg ICAgICBWZXJzaW9uOiAzICgweDIpCistICAgICAgICBTZXJpYWwgTnVtYmVyOiAwICgweDApCist ICAgICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KKy0gICAg ICAgIElzc3VlcjogQz1OTywgU1Q9T3NsbywgTD1OeWRhbGVuLCBPPU5va2lhIENvcnBvcmF0aW9u IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKSwgT1U9RGV2ZWxvcG1lbnQsIENOPWZsdWtlLnRy b2xsLm5vL2VtYWlsQWRkcmVzcz1haGFuc3NlbkB0cm9sbHRlY2guY29tCistICAgICAgICBWYWxp ZGl0eQorLSAgICAgICAgICAgIE5vdCBCZWZvcmU6IERlYyAgNCAwMToxMDozMiAyMDA3IEdNVAor LSAgICAgICAgICAgIE5vdCBBZnRlciA6IEFwciAyMSAwMToxMDozMiAyMDM1IEdNVAorLSAgICAg ICAgU3ViamVjdDogQz1OTywgU1Q9T3NsbywgTz1Ob2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz IHN1YnNpZGlhcnkoLWllcyksIE9VPURldmVsb3BtZW50LCBDTj1mbHVrZS50cm9sbC5ubworLSAg ICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86CistICAgICAgICAgICAgUHVibGljIEtleSBB bGdvcml0aG06IHJzYUVuY3J5cHRpb24KKy0gICAgICAgICAgICBSU0EgUHVibGljIEtleTogKDEw MjQgYml0KQorLSAgICAgICAgICAgICAgICBNb2R1bHVzICgxMDI0IGJpdCk6CistICAgICAgICAg ICAgICAgICAgICAwMDphNzpjODphMDo0YTpjNDoxOTowNToxYjo2NjpiYTozMjplMjpkMjpmMToK Ky0gICAgICAgICAgICAgICAgICAgIDFjOjZmOjE3OjgyOmU0OjM5OjJlOjAxOjUxOjkwOmRiOjA0 OjM0OjMyOjExOgorLSAgICAgICAgICAgICAgICAgICAgMjE6YzI6MGQ6NmY6NTk6ZDg6NTM6OTA6 NTQ6M2Y6ODM6OGY6YTk6ZDM6YjM6CistICAgICAgICAgICAgICAgICAgICBkNTplZToxYTo5Yjo4 MDphZTpjMzoyNTpjOTo1ZTphNTphZjo0Yjo2MDowNToKKy0gICAgICAgICAgICAgICAgICAgIGFh OmEwOmQxOjkxOjAxOjFmOmNhOjA0OjgzOmUzOjU4OjFjOjk5OjMyOjQ1OgorLSAgICAgICAgICAg ICAgICAgICAgODQ6NzA6NzI6NTg6MDM6OTg6NGE6NjM6OGI6NDE6ZjU6MDg6NDk6ZDI6OTE6Cist ICAgICAgICAgICAgICAgICAgICAwMjo2MDo2YjplNDo2NDpmZTpkZDphMDphYTo3NDowODplOToz NDo0Yzo5MToKKy0gICAgICAgICAgICAgICAgICAgIDVmOjEyOjNkOjM3OjRkOjU0OjJjOmFkOjdm OjViOjk4OjYwOjM2OjAyOjhjOgorLSAgICAgICAgICAgICAgICAgICAgM2I6ZjY6NDU6ZjM6Mjc6 NmE6OWI6OTQ6OWQKKy0gICAgICAgICAgICAgICAgRXhwb25lbnQ6IDY1NTM3ICgweDEwMDAxKQor LSAgICAgICAgWDUwOXYzIGV4dGVuc2lvbnM6CistICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENv bnN0cmFpbnRzOiAKKy0gICAgICAgICAgICAgICAgQ0E6RkFMU0UKKy0gICAgICAgICAgICBOZXRz Y2FwZSBDb21tZW50OiAKKy0gICAgICAgICAgICAgICAgT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlm aWNhdGUKKy0gICAgICAgICAgICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcjogCistICAg ICAgICAgICAgICAgIDIxOjg1OjA0OjNEOjIzOjAxOjY2OkU1OkY3OjlGOjFBOjg0OjI0OjhBOkFG OjBBOjc5OkY0OkU1OkFDCistICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRp ZmllcjogCistICAgICAgICAgICAgICAgIERpck5hbWU6L0M9Tk8vU1Q9T3Nsby9MPU55ZGFsZW4v Tz1Ob2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykvT1U9RGV2ZWxv cG1lbnQvQ049Zmx1a2UudHJvbGwubm8vZW1haWxBZGRyZXNzPWFoYW5zc2VuQHRyb2xsdGVjaC5j b20KKy0gICAgICAgICAgICAgICAgc2VyaWFsOjhFOkE4OkI0OkU4OjkxOkI3OjU0OjJFCistCist ICAgIFNpZ25hdHVyZSBBbGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlwdGlvbgorLSAgICAgICAg NmQ6NTc6NWY6ZDE6MDU6NDM6ZjA6NjI6MDU6ZWM6MmE6NzE6YTU6ZGM6MTk6MDg6ZjI6YzQ6Cist ICAgICAgICBhNjpiZDpiYjoyNTpkOTpjYTo4OTowMTowZTplNDpjZjoxZjpjMTo4YzpjODoyNDox ODozNToKKy0gICAgICAgIDUzOjU5OjdiOmMwOjQzOmI0OjMyOmU2Ojk4OmIyOmE2OmVmOjE1OjA1 OjBiOjQ4OjVmOmUxOgorLSAgICAgICAgYTA6MGM6OTc6YTk6YTE6Nzc6ZDg6MzU6MTg6MzA6YmM6 YTk6OGY6ZDM6Yjc6NTQ6Yzc6ZjE6CistICAgICAgICBhOTo5ZTo1ZDplNjoxOTpiZjpmNjozYzo1 YjoyYjpkODplNDozZTo2MjoxODo4ODo4YjpkMzoKKy0gICAgICAgIDI0OmUxOjQwOjliOjBjOmU2 OjI5OjE2OjYyOmFiOmVhOjA1OjI0OjcwOjM2OmFhOjU1OjkzOgorLSAgICAgICAgZWY6MDI6ODE6 MWI6MjM6MTA6YTI6MDQ6ZWI6NTY6OTU6NzU6ZmM6Zjg6OTQ6YjE6NWQ6NDI6CistICAgICAgICBj NTozZjozNjo0NDo4NTo1ZDozYToyZTo5MDo0Njo4YTphMjpiOTo2Zjo4NzphZTowYzoxNToKKy0g ICAgICAgIDQwOjE5OjMxOjkwOmZjOjNiOjI1OmJiOmFlOmYxOjY2OjEzOjBkOjg1OjkwOmQ5OjQ5 OjM0OgorLSAgICAgICAgOGY6ZjI6NWQ6Zjk6N2E6ZGI6NGQ6NWQ6Mjc6ZjY6NzY6OWQ6MzU6OGM6 MDY6YTY6NGM6YTM6CistICAgICAgICBiMTpiMjpiNjo2ZjoxZDpkNzphMzowMDpmZDo3MjplYjo5 ZTplYTo0NDphMTphZjoyMTozNDoKKy0gICAgICAgIDdkOmM3OjQyOmUyOjQ5OjkxOjE5OjhiOmMw OmFkOmJhOjgyOjgwOmE4OjcxOjcwOmY0OjM1OgorLSAgICAgICAgMzE6OTE6NjM6ODQ6MjA6OTU6 ZTk6NjA6YWY6NjQ6OGI6Y2M6ZmY6M2Q6OGE6NzY6NzQ6M2Q6CistICAgICAgICBjODo1NTo2ZDpl NDo4ZTpjMzoyYjoxYzplODo0MjoxODphZTo5ZjplNjo2Yjo5YzozNDowNjoKKy0gICAgICAgIGVj OjZhOmYyOmMzCisgLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCistTUlJRUV6Q0NBdnVnQXdJ QkFnSUJBREFOQmdrcWhraUc5dzBCQVFVRkFEQ0JuREVMTUFrR0ExVUVCaE1DVGs4eAorLURUQUxC Z05WQkFnVEJFOXpiRzh4RURBT0JnTlZCQWNUQjA1NVpHRnNaVzR4RmpBVUJnTlZCQW9URFZSeWIy eHMKKy1kR1ZqYUNCQlUwRXhGREFTQmdOVkJBc1RDMFJsZG1Wc2IzQnRaVzUwTVJjd0ZRWURWUVFE RXc1bWJIVnJaUzUwCistY205c2JDNXViekVsTUNNR0NTcUdTSWIzRFFFSkFSWVdZV2hoYm5OelpX NUFkSEp2Ykd4MFpXTm9MbU52YlRBZQorLUZ3MHdOekV5TURRd01URXdNekphRncwek5UQTBNakV3 TVRFd016SmFNR014Q3pBSkJnTlZCQVlUQWs1UE1RMHcKKy1Dd1lEVlFRSUV3UlBjMnh2TVJZd0ZB WURWUVFLRXcxVWNtOXNiSFJsWTJnZ1FWTkJNUlF3RWdZRFZRUUxFd3RFCistWlhabGJHOXdiV1Z1 ZERFWE1CVUdBMVVFQXhNT1pteDFhMlV1ZEhKdmJHd3VibTh3Z1o4d0RRWUpLb1pJaHZjTgorLUFR RUJCUUFEZ1kwQU1JR0pBb0dCQUtmSW9FckVHUVViWnJveTR0THhIRzhYZ3VRNUxnRlJrTnNFTkRJ UkljSU4KKy1iMW5ZVTVCVVA0T1BxZE96MWU0YW00Q3V3eVhKWHFXdlMyQUZxcURSa1FFZnlnU0Q0 MWdjbVRKRmhIQnlXQU9ZCistU21PTFFmVUlTZEtSQW1CcjVHVCszYUNxZEFqcE5FeVJYeEk5TjAx VUxLMS9XNWhnTmdLTU8vWkY4eWRxbTVTZAorLUFnTUJBQUdqZ2dFYU1JSUJGakFKQmdOVkhSTUVB akFBTUN3R0NXQ0dTQUdHK0VJQkRRUWZGaDFQY0dWdVUxTk0KKy1JRWRsYm1WeVlYUmxaQ0JEWlhK MGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdRVUlZVUVQU01CWnVYM254cUVKSXF2CistQ25uMDVhd3dn YnNHQTFVZEl3U0JzekNCc0tHQm9xU0JuekNCbkRFTE1Ba0dBMVVFQmhNQ1RrOHhEVEFMQmdOVgor LUJBZ1RCRTl6Ykc4eEVEQU9CZ05WQkFjVEIwNTVaR0ZzWlc0eEZqQVVCZ05WQkFvVERWUnliMnhz ZEdWamFDQkIKKy1VMEV4RkRBU0JnTlZCQXNUQzBSbGRtVnNiM0J0Wlc1ME1SY3dGUVlEVlFRREV3 NW1iSFZyWlM1MGNtOXNiQzV1CistYnpFbE1DTUdDU3FHU0liM0RRRUpBUllXWVdoaGJuTnpaVzVB ZEhKdmJHeDBaV05vTG1OdmJZSUpBSTZvdE9pUgorLXQxUXVNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0 SUJBUUJ0VjEvUkJVUHdZZ1hzS25HbDNCa0k4c1NtdmJzbDJjcUoKKy1BUTdrengvQmpNZ2tHRFZU V1h2QVE3UXk1cGl5cHU4VkJRdElYK0dnREplcG9YZllOUmd3dkttUDA3ZFV4L0dwCistbmwzbUdi LzJQRnNyMk9RK1loaUlpOU1rNFVDYkRPWXBGbUtyNmdVa2NEYXFWWlB2QW9FYkl4Q2lCT3RXbFhY OAorLStKU3hYVUxGUHpaRWhWMDZMcEJHaXFLNWI0ZXVEQlZBR1RHUS9Ec2x1Njd4WmhNTmhaRFpT VFNQOGwzNWV0dE4KKy1YU2YyZHAwMWpBYW1US094c3JadkhkZWpBUDF5NjU3cVJLR3ZJVFI5eDBM aVNaRVppOEN0dW9LQXFIRnc5RFV4Cista1dPRUlKWHBZSzlraTh6L1BZcDJkRDNJVlcza2pzTXJI T2hDR0s2ZjVtdWNOQWJzYXZMRAorK01JSUY2ekNDQTlPZ0F3SUJBZ0lVZm85YW1KdEpHV3FXRTZm K1NrQU84NXprR3I0d0RRWUpLb1pJaHZjTkFRRUwKKytCUUF3Z1lNeEN6QUpCZ05WQkFZVEFrNVBN UTB3Q3dZRFZRUUlEQVJQYzJ4dk1RMHdDd1lEVlFRSERBUlBjMnh2CisrTVJjd0ZRWURWUVFLREE1 VWFHVWdVWFFnUTI5dGNHRnVlVEVNTUFvR0ExVUVDd3dEVWlaRU1SSXdFQVlEVlFRRAorK0RBbElN aUJVWlhOMFpYSXhHekFaQmdrcWhraUc5dzBCQ1FFV0RHMXBibWx0YVVCeGRDNXBiekFnRncweU1E RXcKKytNall4TWpBeE16RmFHQTh5TVRJd01UQXdNakV5TURFek1Wb3dnWU14Q3pBSkJnTlZCQVlU QWs1UE1RMHdDd1lECisrVlFRSURBUlBjMnh2TVEwd0N3WURWUVFIREFSUGMyeHZNUmN3RlFZRFZR UUtEQTVVYUdVZ1VYUWdRMjl0Y0dGdQorK2VURU1NQW9HQTFVRUN3d0RVaVpFTVJJd0VBWURWUVFE REFsSU1pQlVaWE4wWlhJeEd6QVpCZ2txaGtpRzl3MEIKKytDUUVXREcxcGJtbHRhVUJ4ZEM1cGJ6 Q0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCCisrQU9pVXA1K0U0Ymxv dUtIN3ErclZOUjhOb1lYMlhrQlcrcStycHkxenU1c3NSU3picXhBakR4OWRraHQ3UWxuZgorK1Zs RFQwMEp2cE9XZGV1UG9uNTkxNWVkUVJzWTRVbmw2bUtIMjlyYTNPdFVhMS95Q0pYc0dWSlRLQ2o3 azRCeGIKKys1bVp6Yi9mVGxabnRNTGRUSUJNZlVidzYyRktpcjFXaktJY0o5ZkNvRzhKYUdlS1ZP NFJoNXAwZXpkNFVVVUlkCisrcjFCWGw1TnFkcXkydlRNc0VEbmpPc0QzZWdrdjhJMlNLTjRPNm4v QzN3V1lwTU9XWVprR29aaUt6N3JKcy9pLworK2V6N2JzVjdKbHdkelRsaHBKemtjT1NWRkJQNkps RU94VE5OeFoxd3RLeTdQdFpHbXNTU0FUcTJlNitidzM4QWUKKytPcDBYbnp6cWNHanRERG9mQm1U N09GelpXalM5VlpTNitET09lMlFIV2xlMW5DSGNIeUg0a3U2SVJsc3I5eGtSCisrTkFJbE9mbnZI SHhxSlVlbm9lYVo0b1FEakNCS1MxS1h5Z0pPL3RMN0JMVFFWbi94SzFFbVB2S05uanpXazR0Ugor K1BuaWJVaGhzNTYzNXFwT1UvWVBxRkJoMUpqVnJ1WmJzV2NEQWhSY2V3MHV4T05YT2E5RSs0bHR0 UTl5U1lhMUEKKytMdldxSnVBWDdndTJCc0JNTHlxZm04MTFZbkE3Q0lGTXlPK0hscW1rTEZmdjVM L3hJUkFYUjdsMjZZR08wVndYCisrQ0dqTWZ6NE5WUE1Na2U0bkI3cWE5TmtwWFFCUUtNbXMzUXpk NUpXMEh5OVJ1ajVPOEdQY0ZabVYwdHdqZDF1SgorK1BEL2NBamtXTGFYamROc0oxNlFXYzJuZ2hR UlM2SFlxS1JYNmorQ1hPeHVwQWdNQkFBR2pVekJSTUIwR0ExVWQKKytEZ1FXQkJSU0NPVTU4ajlO SlprTWFtdDYyM3F5Q3JoTjNUQWZCZ05WSFNNRUdEQVdnQlJTQ09VNThqOU5KWmtNCisrYW10NjIz cXlDcmhOM1RBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElDQVFD cQorK3E0anhzV2VORHY1TnExNGhKdEY5SEIrWkw2NHpjWnRSakpQMVlnTnMwUXBwS0lDbWpQT0wy bklNR21JL2pLcnMKKyswZUdBTC85WFhOVkhQeG0xT1BPbmN2aW1NTW1VNmVtWmZwTWRFdFRmS1A0 MytQZzlIZ0tSakxvUXA0MDZ2R2VRCisrOGtpL21iQmhySXRWUGdFbTN0dTJBRkEwMlhUWWkrWXhD STlrUlpMR2tNM0ZiZ3RPdVRMUGwwWjl5K2tpUGM5RgorK3VDU0MwM2FuQkVxdit2RFNJOCt3T0R5 bVEvSUozSnl6MWx4SVJEZnA0cUFla215MGpVMmM5MVZPSEhFbU9tcXEKKytrcXlnR0ZSZHdiZTk5 bTl5UDYzcjZxMGI1SzNYMlVuSjZibnMwaG1Ud1RoWXdwVlBYTFU4amRhVGRkYk11a04yCisrL0Vm OTZUc3c4bldPRU9QTXlTSE9USVBnd3laUnAyNmIwa0E5RW1oTHdPUDQwMVN4WFZRQ21TUm10d05h Z210ZworK2pKS21ab1lCTisvL0Q0NWliSzh6NlEwb09tOVArV2hmL3VVWGVoY1J4Qnh5VjN4ejdr MHdLR1FiSGovZGR3Y3kKKytJVW9JTjRsckFsaWIrbEsxNzBrVEtOMzUyUERtcnBvMmdtSXpQRXNm dXJLQUlNU2VsRGw2SCtraWgxNkJ0Wjh5CisrTno2Zmg5U29xcmczT1NBd2FyZThweFY3azUxY3JC TW9QTE43OEtvUlY4TUZDSzRLN0ZkZHE0clJJU3E2aGlYcQorK3IxbnNqb0VQdUtNOWh1cHJtWlZa ZTl0NVljRGEySSt3YjNJaUUzdXdwWmJBZGFMRHlRNW42Ri9xcHNpSWtaWG4KKytndGNGN29xcEc1 b1lyd0NjWjUzeS9lelVnVWc3UGxTejJYd0FHdlF0Z2c9PQorIC0tLS0tRU5EIENFUlRJRklDQVRF LS0tLS0KK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29j a2V0L2NlcnRzL2ZsdWtlLmtleSBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xz b2NrZXQvY2VydHMvZmx1a2Uua2V5CitpbmRleCA5ZDE2NjRkNjA5Li4zMzdjZTU0MWE2IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9m bHVrZS5rZXkKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQv Y2VydHMvZmx1a2Uua2V5CitAQCAtMSwxNSArMSw1MiBAQAorLS0tLS0tQkVHSU4gUlNBIFBSSVZB VEUgS0VZLS0tLS0KKy1NSUlDWEFJQkFBS0JnUUNueUtCS3hCa0ZHMmE2TXVMUzhSeHZGNExrT1M0 QlVaRGJCRFF5RVNIQ0RXOVoyRk9RCistVkQrRGo2blRzOVh1R3B1QXJzTWx5VjZscjB0Z0JhcWcw WkVCSDhvRWcrTllISmt5UllSd2NsZ0RtRXBqaTBIMQorLUNFblNrUUpnYStSay90MmdxblFJNlRS TWtWOFNQVGROVkN5dGYxdVlZRFlDakR2MlJmTW5hcHVVblFJREFRQUIKKy1Bb0dBTkZ6TGthblRl U0dORk0wdXR0QmlwRlQ5RjRhMDBkcUh6NkpuTzd6WEFUMjZJNXI4c1UxcHFRQmI2dUx6CistLytR ejVad2s4UlVBUWNzTVJnSmV0dVBRVWIwSlpqRjZEdXYyNGhOYXpxWEJDdTdBWnpVZW5qYWZ3bUtD LzhyaQorLUtwWDNmVHdxemZ6aS8vRktHZ2JYUTgweXlrU1NsaURMM2tuL2RyQVR4c0xDZ1FFQ1FR RFhoRUZXTEowdlZaMXMKKy0xRWtmKzNOSVRFK0RSMTZYK0xRNFc2dnlFSEFqVGJhTld0Y1RLZEFX TEEybDZONFdBQVBZU2k2YXdtK3pNeHg0CistVm9tVlRzamRBa0VBeDB6K2U3bmF0TGVGY3JycThw YlUrd2E2U0FQMVZmaFFXS2l0eEwxZTd1L1FPOTBOQ3B4RQorLW9RWUt6TWttbXBPT0ZqUXdFTUF5 MWR2Rk1ibTRMSGxld1FKQUMva3NEQmFVY1FISHFqa3RDdHJVYjhyVmpBeVcKKy1BOGxzY2NrZUIy ZkVZeUc1SjZkSlZhWTRDbE5PT3M1eU1EUzJBZmsxRjZIL3hLdnRRLzVDekluQS9RSkFURHViCist SytCUFU4ak85cStncHVJaTNWSVpkdXBzc1ZHbUNnT2JWQ0hMYWtHNHVPMDR5OUl5UGhWOWxBOXRB THRvSWY0YworLVZJdnY1ZldHWEJyWjQ4a1pBUUpCQUptVkNkelF4ZDlMWkk1dnhpalVDajVFSTRl K3g1RFJxVlV2eVA4S0NackMKKy1BaU55b0RQODVUK2hCWmFTWEszYVlHcFZ3ZWx5ajNidm8xR3JU TndOV0x3PQorLS0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCisrLS0tLS1CRUdJTiBQUklW QVRFIEtFWS0tLS0tCisrTUlJSlFnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NDU3d3Z2drb0Fn RUFBb0lDQVFEb2xLZWZoT0c1YUxpaAorKys2dnExVFVmRGFHRjlsNUFWdnF2cTZjdGM3dWJMRVVz MjZzUUl3OGZYWkliZTBKWjMxWlEwOU5DYjZUbG5YcmoKKys2SitmZGVYblVFYkdPRko1ZXBpaDl2 YTJ0enJWR3RmOGdpVjdCbFNVeWdvKzVPQWNXK1ptYzIvMzA1V1o3VEMzCisrVXlBVEgxRzhPdGhT b3E5Vm95aUhDZlh3cUJ2Q1dobmlsVHVFWWVhZEhzM2VGRkZDSGE5UVY1ZVRhbmFzdHIwegorK0xC QTU0enJBOTNvSkwvQ05raWplRHVwL3d0OEZtS1REbG1HWkJxR1lpcys2eWJQNHYzcysyN0ZleVpj SGMwNVkKKythU2M1SERrbFJRVCtpWlJEc1V6VGNXZGNMU3N1ejdXUnByRWtnRTZ0bnV2bThOL0FI anFkRjU4ODZuQm83UXc2CisrSHdaayt6aGMyVm8wdlZXVXV2Z3pqbnRrQjFwWHRad2gzQjhoK0pM dWlFWmJLL2NaRVRRQ0pUbjU3eHg4YWlWSAorK3A2SG1tZUtFQTR3Z1NrdFNsOG9DVHY3Uyt3UzAw RlovOFN0UkpqN3lqWjQ4MXBPTFVUNTRtMUlZYk9ldCthcVQKKytsUDJENmhRWWRTWTFhN21XN0Zu QXdJVVhIc05Mc1RqVnptdlJQdUpiYlVQY2ttR3RRQzcxcWliZ0YrNEx0Z2JBCisrVEM4cW41dk5k V0p3T3dpQlRNanZoNWFwcEN4WDcrUy84U0VRRjBlNWR1bUJqdEZjRndob3pIOCtEVlR6REpIdQor K0p3ZTZtdlRaS1YwQVVDakpyTjBNM2VTVnRCOHZVYm8rVHZCajNCV1psZExjSTNkYmlUdy8zQUk1 RmkybDQzVGIKKytDZGVrRm5OcDRJVUVVdWgyS2lrVitvL2dsenNicVFJREFRQUJBb0lDQUZ3MXE2 dHI1STQ4dlk3REYrclhzdUxuCisrNVpVV0UxSVE2ZnpCNGxyNzJuSnYvOUVFR25NZ1l6dDlQcE1V c0Q2dmRDcEJnUzJDMCs2UkhBckZ6SnROQStSTQorK2lITElHN0s3NzAydmV5ci94QngvTXdpU2xN ZU12L1hwa0Z4Vkk2RTZza01HRzJzM0FNWHhLdkpUeTVDcFJ4K0kKKytlUUZ5TEcrWWExWDJsZ0pl cy9xKy9DcEFIa09qQ09wY0x5U1FDNU5aNzRxNzM0VjduU2RtbitaczN0WUVoK08vCisrZWl1d1RQ L2o1YjM4VGU1dlZUcUR4VGNpSlBtbGptWExDd2EwTjEwMGxXbGJjcHZ3OHFicWlUSTJKbTNYQ2JV RQorK0F6SGpXOXZtckYzY1JTMWZYeEtGR1NodzNTUnFsa2J4amZlV29pOHFEUFVCUzRtOExPcjhx RzlXbzVOZm9uMHoKKyt6TFA0YmNpM3pIRHZWY2FhWnJyc1VCcy95WmJnK0Rna2ExRG1YN2VrbWVj Y3IyeVRkS0RGZ1B1cFlVeXhWYlRsCisrYTlaTEp5c2pGRDdyZ0J2MVpjbEhvbkxwNlZibStab1Rx dnRlbzRpa0F5Nkw5UnRCV0oyM1hFSzM0UGtQLytjNQorKzJ2V1phT3JualNlQkhiRmNlOGNkSlN4 cVdwUCtlU0NJNUk5WGJEcllGSXNRL2dxS2d0ekRLeTJpaEoyWThTVEwKKyt5TzRoeUZQRmp4YytH ZzQvUDJQcG1UNUNZMnR5NDRNMEJXcytKR1c5NkNKUHJycGxmMmxtUVVRSmo1TFpZNjZYCisrWi80 QzlMN1pZdEtaK2JzNVN2VTQ2eVd1Z0F2UVpYMjJYbTl4TFhXeVZYUmR4M2JqKzNNM2ZEbkY5ZGkv emRiaAorK0NnTHg3b1dQTnJYYzdGQ2Fqbm45QW9JQkFRRDVGTVl3UnB3OU5XVDlXRHhRd3grY1NJ NEljYmQ4OEJ5VFc2M1MKKytMemVSd1pBMEo5L1Nmd08rYUJSdXB6YzlHa0dYQ2laY0dNdzNBR3ND dGlnOHlGbHc4RTVLbnpON0tsZnRETW5NCisrOU5VeHh6bFI4VndLeUxuWmZHN3NEVGwwNTdabFV1 am5xaG10L0Y4RjdkSXk3RlZPMWRFLzhubmdBK0ZZVENPRworK1VaZEdqd3lCRGxETTBKSmRVV0dZ M3hzbHV0Y3BDRE41bXpTVEtqeTlkck12SW1Bc2hSYXd4UkY2V0Jwbjd2cjIKKytuQzZ2Y2lxZngx TXp4MXZ5azBKbTBpbGF5ZERkTE1BRGp0L2lMNE5rcjBCRXM0aytVelFpS0R3cDhndTdhYlExCisr ZUJmeGQ5SWFyNGh0UWEySTFFd2w2UDAxRy9xK1pZd2dIaEo5UlZuNEF4UVhlZklMQW9JQkFRRHZD b3VPUmRRWAorK0M4d3N5cDdNd1hsRi8zTlFlTk41LytCMm1oYnhyQk9mN1BtTUNYTG5rUldjandK dHp5cFdGcUowc3FhaS8yKzAKKyticWJNY2pYNW1hVDhzdFQyc2hsM3pYZS9FanQyZTNUQllwYzF0 eXVzZXM4S2I1Qk1VOGh1NnRUZDNHMkNNWHBECisrZFQ2RFZlbUpaQ1R0d2o5YUJOSXhTaXp2bGdN b2xKbkNwemhQbmxmSFNJNkUrZzNtL0xUVG8zSHdiak1Tdy9VcQorK2lyZ2pPcEkyd1NCQjZMWlBT Z2p2ZmNZUFJ5V1VrMTZMNEE1dVNYMGNBRG5vdkRGTGE1L2gwd0p2Ti9Pb0NTUWcKKytyTENYRzVF MThFeUw1V2M1OEJDWTFadnhtakczbFF0Z1B4WXUySndjMzZSL3kvSktseFc1c3VFUjVaTnBiYkQ0 CisrdU95VHQyVnhNUTJiQW9JQkFRQzUrTXpSRnFkby9BamZMNVk1SnJiZlZUelhDVERhMDl4Q0dk MTZaVTYwUVRXTgorKys0ZWQvcitvMXNVS3FVY1JGQjJNekVNLzJEUUJqUXBaQi9DYkVXdldhMVhK V1h4eXBYYm93dmVaVStRcU9ubU4KKyt1UXZqOFdMeUEzbytQTkY5ZTlRdmF1d0NySHBuOFZweGJ0 UFd1YVlvS25VRnJlRlpaUXhIaFBHeFJCSVMySk9aCisrZURyVDhaYVdua0NraDFBWnA1c21RNzFM T3ByU2xtS3JnNGpkMUdqQ1ZNeFFSNU41S1hidHl2ME9UQ1ovVUZxSworKzJhUkJzTVB5SmdrYUJD aGtaUExSY0t3Yysvd2xRUngxZkhRYjE0RE5UQXBNeG9YRk83ZU93cW1Pa3BBdDlpeWwKKytTQkl3 b1MwVVVJNWFiODgrYkJtWE52S2N1RmROdVE0bm93VEpVbjlwQW9JQkFETU5rSUxCWFN2UzVEZUl5 dU8yCisrU3AxdGtvWlVWKzVOZlBZM3NNREszS0lpYmFXLyt0K0VPQlpvNEw3dEtRQ2I4dlJ6bDIx bW1zZnhmZ1JhUERiagorKzNyM3R2OWcwYjRZTHh4Qnk1MnBGc2NqL3NvWFJhaTE3U1M3VVp3QTJR SytYemdEWWJEY0xOQzZtSXNUUUc0R3gKKytkc1drMy96czNLdVVTUWFlaG13cldLK2ZJVUszOGMx cExLOHY3TG94ckxrcXhsSHdaMDRSdGhIdzhLVHRoSDdYCisrUG5sMUowTEY4Q1NlT3lmV0xTdVBV ZmtUMEdFenB0bk5IcEViYUhmUU02UjZlYUdoVkpQRjZBWm1lNHk2WVlnZworK20yaWhoU3QxbjBY VkVXcEhZV2p4RnkzbUsybXo3NXVuRkM0TE0rTkVZMnAyenVVUW9DdzdOam5ZM1FZcmZDbngKKyty Uk1DZ2dFQVhlWHNNU0xGamp5dW9MN2lLYkF4bzUySEQvUDBmQm95NThMeVJjd2ZOVnIwbHZZYW40 cFlFeCtvCisrS2lqSWg5SzE2UHFYWlhLTUE5djAwM0IrdWxtRjhiSjdTZGRDWjVOR3ZuRmhVVERl NERkVEtncDJSdXdRM0JzYworKzNza1BJRGJoVkVUeU9MQ3R5czM0VVNIcnE4VS8wRGxHWTNlTFJm eHc5R25iS3hTQkdhL0tFdS9xUUxQTlVvNTAKKys3eEhaRGc3R0tlQzNrcU5KZXFLTTlya3AwVnpJ R2tFbmFEOTEyN0xlTkRtRVJEZmZ0eEp6Rm9DL1RIdlVCTGZVCisrNlN1czJaWXdSRThWRnZLQzMw UTQ1dC9jNTRYM0l1aFl2QXVpQ3VUbXlmRTRydXl6eU93S3poVWtlZUxxMUFQWAorK2cwdmVGYnlm emxKMHE4cXpEL2lmZnFxSWEyWlNtUT09CisrLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQorZGlm ZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmlsaXR5bGludXgvdHN0 X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vz c2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2liaWxpdHlsaW51eC5jcHAKK2luZGV4IDdiYTM3MTVl MTMuLjc1MmFhMTIyZjYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9vdGhlci9xYWNj ZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcAorKysrIGIvcXRiYXNl L3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2liaWxpdHls aW51eC5jcHAKK0BAIC0xNzksNiArMTc5LDcgQEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51 eDo6aW5pdFRlc3RDYXNlKCkKKyAgICAgUVZFUklGWSghYWRkcmVzcy5pc0VtcHR5KCkpOworIAor ICAgICBtX3dpbmRvdyA9IG5ldyBBY2Nlc3NpYmxlVGVzdFdpbmRvdygpOworKyAgICBtX3dpbmRv dy0+c2V0T2JqZWN0TmFtZSgibWFpbldpbmRvdyJfTDEpOworICAgICBtX3dpbmRvdy0+c2hvdygp OworIAorICAgICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQobV93aW5kb3cp KTsKK0BAIC0yMzYsOCArMjM3LDExIEBAIGJvb2wgaGFzU3RhdGUoUURCdXNJbnRlcmZhY2UgKmlu dGVyZmFjZSwgQXRzcGlTdGF0ZVR5cGUgc3RhdGUpCisgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlM aW51eDo6dGVzdExhYmVsKCkKKyB7CisgICAgIFFMYWJlbCAqbCA9IG5ldyBRTGFiZWwobV93aW5k b3cpOworKyAgICBsLT5zZXRPYmplY3ROYW1lKCJ0aGVPYmplY3ROYW1lIl9MMSk7CisgICAgIGwt PnNldFRleHQoIkhlbGxvIEExMXkiKTsKKyAgICAgbV93aW5kb3ctPmFkZFdpZGdldChsKTsKKysg ICAgYXV0byBhMTF5RW1wdHkgPSBuZXcgUUxhYmVsKG1fd2luZG93KTsKKysgICAgbV93aW5kb3ct PmFkZFdpZGdldChsKTsKKyAKKyAgICAgLy8gQXBwbGljYXRpb24KKyAgICAgUUNPTVBBUkUoZ2V0 UGFyZW50KG1haW5XaW5kb3cpLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNfUEFUSF9ST09UKSk7 CitAQCAtMjQ5LDYgKzI1Myw4IEBAIHZvaWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGludXg6OnRlc3RM YWJlbCgpCisgICAgIFFDT01QQVJFKGdldENoaWxkcmVuKGxhYmVsSW50ZXJmYWNlKS5jb3VudCgp LCAwKTsKKyAgICAgUUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAi R2V0Um9sZU5hbWUiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvU3RyaW5nKCksIFFMYXRpbjFTdHJp bmcoImxhYmVsIikpOworICAgICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+Y2FsbChRREJ1czo6 QmxvY2ssICJHZXRSb2xlIikuYXJndW1lbnRzKCkuZmlyc3QoKS50b1VJbnQoKSwgMjl1KTsKKysg ICAgUUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAiR2V0QWNjZXNz aWJsZUlkIikuYXJndW1lbnRzKCkuZmlyc3QoKS50b1N0cmluZygpLAorKyAgICAgICAgICAgICBR TGF0aW4xU3RyaW5nKCJtYWluV2luZG93LnRoZU9iamVjdE5hbWUiKSk7CisgICAgIFFDT01QQVJF KGdldFBhcmVudChsYWJlbEludGVyZmFjZSksIG1haW5XaW5kb3ctPnBhdGgoKSk7CisgICAgIFFW RVJJRlkoIWhhc1N0YXRlKGxhYmVsSW50ZXJmYWNlLCBBVFNQSV9TVEFURV9FRElUQUJMRSkpOwor ICAgICBRVkVSSUZZKGhhc1N0YXRlKGxhYmVsSW50ZXJmYWNlLCBBVFNQSV9TVEFURV9SRUFEX09O TFkpKTsKK0BAIC0yNTYsNyArMjYyLDEyIEBAIHZvaWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGludXg6 OnRlc3RMYWJlbCgpCisgICAgIGwtPnNldFRleHQoIk5ldyB0ZXh0Iik7CisgICAgIFFDT01QQVJF KGxhYmVsSW50ZXJmYWNlLT5wcm9wZXJ0eSgiTmFtZSIpLnRvU3RyaW5nKCksIGwtPnRleHQoKSk7 CisgCisrICAgIGF1dG8gKmExMXlFbXB0eUludGVyZmFjZSA9IGdldEludGVyZmFjZShjaGlsZHJl bi5hdCgxKSwgIm9yZy5hMTF5LmF0c3BpLkFjY2Vzc2libGUiKTsKKysgICAgUUNPTVBBUkUoYTEx eUVtcHR5SW50ZXJmYWNlLT5jYWxsKFFEQnVzOjpCbG9jaywgIkdldEFjY2Vzc2libGVJZCIpLmFy Z3VtZW50cygpLmZpcnN0KCkudG9TdHJpbmcoKSwKKysgICAgICAgICAgICAgUUxhdGluMVN0cmlu ZygibWFpbldpbmRvdy5RTGFiZWwiKSk7CisrCisgICAgIG1fd2luZG93LT5jbGVhckNoaWxkcmVu KCk7CisrICAgIGRlbGV0ZSBhMTF5RW1wdHlJbnRlcmZhY2U7CisgICAgIGRlbGV0ZSBsYWJlbElu dGVyZmFjZTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5l bC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9zcWwva2Vy bmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcAoraW5kZXggNzZkZjYxYzg5Mi4uNmQ2ZDY1 Yjc5MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5 L3RzdF9xc3FscXVlcnkuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9zcWwva2VybmVsL3Fz cWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQu CisrKiogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBRdCBDb21wYW55IEx0ZC4KKyAqKiBDb250YWN0 OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC02OCw2ICs2OCw4IEBA IHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgcXVlcnlfZXhlYygpOworICAgICB2b2lkIGV4ZWNF cnJvclJlY292ZXJ5X2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CisgICAgIHZvaWQgZXhlY0Vy cm9yUmVjb3ZlcnkoKTsKKysgICAgdm9pZCBwcmVtYXR1cmVFeGVjX2RhdGEoKSB7IGdlbmVyaWNf ZGF0YSgpOyB9CisrICAgIHZvaWQgcHJlbWF0dXJlRXhlYygpOworICAgICB2b2lkIGZpcnN0X2Rh dGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CisgICAgIHZvaWQgZmlyc3QoKTsKKyAgICAgdm9pZCBu ZXh0X2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CitAQCAtMjc3MCw2ICsyNzcyLDM1IEBAIHZv aWQgdHN0X1FTcWxRdWVyeTo6ZXhlY0Vycm9yUmVjb3ZlcnkoKQorICAgICBRVkVSSUZZX1NRTCgg cSwgZXhlYygpICk7CisgfQorIAorK3ZvaWQgdHN0X1FTcWxRdWVyeTo6cHJlbWF0dXJlRXhlYygp CisreworKyAgICBRRkVUQ0goUVN0cmluZywgZGJOYW1lKTsKKysgICAgLy8gV2Ugb25seSB3YW50 IHRoZSBlbmdpbmUgbmFtZSwgZm9yIGFkZERhdGFiYXNlKCk6CisrICAgIGludCBjdXQgPSBkYk5h bWUuaW5kZXhPZihRQ2hhcignQCcpKTsKKysgICAgaWYgKGN1dCA8IDApCisrICAgICAgICBRU0tJ UCgiRmFpbGVkIHRvIHBhcnNlIGRhdGFiYXNlIHR5cGUgb3V0IG9mIG5hbWUiKTsKKysgICAgZGJO YW1lLnRydW5jYXRlKGN1dCk7CisrICAgIGN1dCA9IGRiTmFtZS5pbmRleE9mKFFDaGFyKCdfJykp OworKyAgICBpZiAoY3V0ID49IDApCisrICAgICAgICBkYk5hbWUgPSBkYk5hbWUubWlkKGN1dCAr IDEpOworKworKyAgICBhdXRvIGRiID0gUVNxbERhdGFiYXNlOjphZGREYXRhYmFzZShkYk5hbWUp OworKyAgICBRU3FsUXVlcnkgcShkYik7CisrCisrICAgIFFUZXN0OjppZ25vcmVNZXNzYWdlKFF0 V2FybmluZ01zZywKKysgICAgICAgICAgICAgICAgICAgICAgICAgIlFTcWxEYXRhYmFzZVByaXZh dGU6OnJlbW92ZURhdGFiYXNlOiBjb25uZWN0aW9uICIKKysgICAgICAgICAgICAgICAgICAgICAg ICAgIidxdF9zcWxfZGVmYXVsdF9jb25uZWN0aW9uJyBpcyBzdGlsbCBpbiB1c2UsIGFsbCAiCisr ICAgICAgICAgICAgICAgICAgICAgICAgICJxdWVyaWVzIHdpbGwgY2Vhc2UgdG8gd29yay4iKTsK KysgICAgUVRlc3Q6Omlnbm9yZU1lc3NhZ2UoUXRXYXJuaW5nTXNnLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAiUVNxbERhdGFiYXNlUHJpdmF0ZTo6YWRkRGF0YWJhc2U6IGR1cGxpY2F0ZSBj b25uZWN0aW9uIG5hbWUgIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAiJ3F0X3NxbF9kZWZh dWx0X2Nvbm5lY3Rpb24nLCBvbGQgY29ubmVjdGlvbiByZW1vdmVkLiIpOworKyAgICBhdXRvIG90 aGVyRGIgPSBRU3FsRGF0YWJhc2U6OmFkZERhdGFiYXNlKGRiTmFtZSk7CisrCisrICAgIFFUZXN0 OjppZ25vcmVNZXNzYWdlKFF0V2FybmluZ01zZywgIlFTcWxRdWVyeTo6ZXhlYzogY2FsbGVkIGJl Zm9yZSBkcml2ZXIgaGFzIGJlZW4gc2V0IHVwIik7CisrICAgIC8vIFFUQlVHLTEwMDAzNzogc2hv dWxkbid0IGNyYXNoICEKKysgICAgUVZFUklGWSghcS5leGVjKCJzZWxlY3Qgc3R1ZmYgZnJvbSBU aGVWb2lkIikpOworK30KKysKKyB2b2lkIHRzdF9RU3FsUXVlcnk6Omxhc3RJbnNlcnRJZCgpCisg eworICAgICBRRkVUQ0goIFFTdHJpbmcsIGRiTmFtZSApOworZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3Rp dGVtbW9kZWx0ZXN0ZXIuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJhY3Rp dGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK2luZGV4IDRh YTNmOGQ2MGIuLmQyMDUwYTYxYWEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by90ZXN0 bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVy LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0 ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK0BAIC0xMTUsNiArMTE1LDEw IEBAIHZvaWQgdHN0X1FBYnN0cmFjdEl0ZW1Nb2RlbFRlc3Rlcjo6c3RhbmRhcmRJdGVtTW9kZWxa ZXJvQ29sdW1ucygpCisgICAgIC8vIFFUQlVHLTkyODg2CisgICAgIG1vZGVsLmluc2VydFJvd3Mo MCwgNSk7CisgICAgIG1vZGVsLnJlbW92ZVJvd3MoMSwgMik7CisrCisrICAgIGNvbnN0IFFNb2Rl bEluZGV4IHBhcmVudEluZGV4ID0gbW9kZWwuaW5kZXgoMCwgMCk7CisrICAgIG1vZGVsLmluc2Vy dFJvd3MoMCwgNSwgcGFyZW50SW5kZXgpOworKyAgICBtb2RlbC5yZW1vdmVSb3dzKDEsIDIsIHBh cmVudEluZGV4KTsKKyB9CisgCisgdm9pZCB0c3RfUUFic3RyYWN0SXRlbU1vZGVsVGVzdGVyOjp0 ZXN0SW5zZXJ0VGhyb3VnaFByb3h5KCkKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90 b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5qc29uIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9v bHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4uanNvbgoraW5kZXggMTJhNGEyMmExOS4uY2U1MThl NzhmYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2NzX2Jh c2VsaW5lX2luLmpzb24KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2Nz X2Jhc2VsaW5lX2luLmpzb24KK0BAIC02NjgsNTAgKzY2OCw2IEBACisgICAgICAgICAiaW5wdXRG aWxlIjogInRhc2sxOTI1NTIuaCIsCisgICAgICAgICAib3V0cHV0UmV2aXNpb24iOiA2NworICAg ICB9LAorLSAgICB7CistICAgICAgICAiY2xhc3NlcyI6IFsKKy0gICAgICAgICAgICB7CistICAg ICAgICAgICAgICAgICJjbGFzc05hbWUiOiAiSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlv biIsCistICAgICAgICAgICAgICAgICJvYmplY3QiOiB0cnVlLAorLSAgICAgICAgICAgICAgICAi cXVhbGlmaWVkQ2xhc3NOYW1lIjogIklubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24iLAor LSAgICAgICAgICAgICAgICAic2xvdHMiOiBbCistICAgICAgICAgICAgICAgICAgICB7CistICAg ICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICJuYW1lIjogImEiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5U eXBlIjogInZvaWQiCistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAg ICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJiIiwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfSwKKy0gICAgICAg ICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1Ymxp YyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYyIsCistICAgICAgICAgICAg ICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0s CistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2Vz cyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImQiLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAg ICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAg ICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6 ICJlIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAg ICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAg ICAic3VwZXJDbGFzc2VzIjogWworLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAg ICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAibmFtZSI6ICJRT2JqZWN0IgorLSAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAg ICAgICBdCistICAgICAgICAgICAgfQorLSAgICAgICAgXSwKKy0gICAgICAgICJpbnB1dEZpbGUi OiAidGFzazE4OTk5Ni5oIiwKKy0gICAgICAgICJvdXRwdXRSZXZpc2lvbiI6IDY3CistICAgIH0s CisgICAgIHsKKyAgICAgICAgICJjbGFzc2VzIjogWworICAgICAgICAgICAgIHsKK2RpZmYgLS1n aXQgYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybyBiL3F0YmFzZS90ZXN0cy9h dXRvL3Rvb2xzL21vYy9tb2MucHJvCitpbmRleCBjMzI0YjNhOGNkLi40YWNlYjc4ZGMwIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21vYy5wcm8KKysrKyBiL3F0YmFz ZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvCitAQCAtMTUsNyArMTUsNyBAQCBjcm9zc19j b21waWxlOiBERUZJTkVTICs9IE1PQ19DUk9TU19DT01QSUxFRAorIEhFQURFUlMgKz0gdXNpbmct bmFtZXNwYWNlcy5oIG5vLWtleXdvcmRzLmggdGFzazg3ODgzLmggYy1jb21tZW50cy5oIGJhY2tz bGFzaC1uZXdsaW5lcy5oIG9sZHN0eWxlLWNhc3RzLmggXAorICAgICAgICAgICAgc2xvdHMtd2l0 aC12b2lkLXRlbXBsYXRlLmggcWludm9rYWJsZS5oIG5hbWVzcGFjZWQtZmxhZ3MuaCB0cmlncmFw aHMuaCBcCisgICAgICAgICAgICBlc2NhcGVzLWluLXN0cmluZy1saXRlcmFscy5oIGNzdHlsZS1l bnVtcy5oIHFwcml2YXRlc2xvdHMuaCBnYWRnZXR3aXRobm9lbnVtcy5oIFwKKy0gICAgICAgICAg IGRpci1pbi1pbmNsdWRlLXBhdGguaCBzaW5nbGVfZnVuY3Rpb25fa2V5d29yZC5oIHRhc2sxOTI1 NTIuaCB0YXNrMTg5OTk2LmggXAorKyAgICAgICAgICAgZGlyLWluLWluY2x1ZGUtcGF0aC5oIHNp bmdsZV9mdW5jdGlvbl9rZXl3b3JkLmggdGFzazE5MjU1Mi5oIFwKKyAgICAgICAgICAgIHRhc2sy MzQ5MDkuaCB0YXNrMjQwMzY4LmggcHVyZS12aXJ0dWFsLXNpZ25hbHMuaCBjeHgxMS1lbnVtcy5o IFwKKyAgICAgICAgICAgIGN4eDExLWZpbmFsLWNsYXNzZXMuaCBcCisgICAgICAgICAgICBjeHgx MS1leHBsaWNpdC1vdmVycmlkZS1jb250cm9sLmggXAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0 cy9hdXRvL3Rvb2xzL21vYy90YXNrMTg5OTk2LmggYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9t b2MvdGFzazE4OTk5Ni5oCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IGY5NGEwNTFi M2EuLjAwMDAwMDAwMDAKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90YXNrMTg5 OTk2LmgKKysrKyAvZGV2L251bGwKK0BAIC0xLDQ3ICswLDAgQEAKKy0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorLSoqCistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKy0q KiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCistKioKKy0qKiBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KKy0qKgorLSoq ICRRVF9CRUdJTl9MSUNFTlNFOkdQTC1FWENFUFQkCistKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVz YWdlCistKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBt YXkgdXNlIHRoaXMgZmlsZSBpbgorLSoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBs aWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorLSoqIFNvZnR3YXJlIG9yLCBhbHRl cm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorLSoq IGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3Ig bGljZW5zaW5nIHRlcm1zCistKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0Lmlv L3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCistKiogaW5mb3JtYXRpb24gdXNlIHRoZSBj b250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKy0qKgorLSoqIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCistKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBm aWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCistKiogR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl CistKiogRm91bmRhdGlvbiB3aXRoIGV4Y2VwdGlvbnMgYXMgYXBwZWFyaW5nIGluIHRoZSBmaWxl IExJQ0VOU0UuR1BMMy1FWENFUFQKKy0qKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRo aXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCistKiogaW5mb3JtYXRpb24gdG8g ZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAor LSoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCist KioKKy0qKiAkUVRfRU5EX0xJQ0VOU0UkCistKioKKy0qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLS8v IGlubGluZSBmdW5jdGlvbnMgY2FuIGhhdmUgdGhyb3cgZGVjbGFyYXRpb25zCistCistI2lmbmRl ZiBUQVNLMTg5OTk2X0gKKy0jZGVmaW5lIFRBU0sxODk5OTZfSAorLQorLSNpbmNsdWRlIDxRT2Jq ZWN0PgorLQorLWNsYXNzIElubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24gOiBwdWJsaWMg UU9iamVjdAorLXsKKy0gICAgUV9PQkpFQ1QKKy0KKy1wdWJsaWMgc2xvdHM6CistICAgIHZvaWQg YSgpIHRocm93KCkgeyB9CistICAgIHZvaWQgYigpIGNvbnN0IHRocm93KCkgeyB9CistICAgIHZv aWQgYygpIHRocm93KCk7CistICAgIHZvaWQgZCgpIHRocm93KGludCkgeyB9CistICAgIHZvaWQg ZSgpIGNvbnN0IHRocm93KGludCxkb3VibGUpIHsgfQorLX07CistCistI2VuZGlmCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3BwIGIvcXRiYXNlL3Rl c3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3BwCitpbmRleCBjNzE2YWVhZDIxLi4xNWRkOWU0 MWU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3Bw CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAKK0BAIC02MzEs NyArNjMxLDYgQEAgcHVibGljOgorIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgaW5pdFRlc3RD YXNlKCk7CisgCistICAgIHZvaWQgc2xvdFdpdGhFeGNlcHRpb24oKSB0aHJvdyhNeVN0cnVjdCk7 CisgICAgIHZvaWQgZG9udFN0cmlwTmFtZXNwYWNlcygpOworICAgICB2b2lkIG9sZFN0eWxlQ2Fz dHMoKTsKKyAgICAgdm9pZCB3YXJuT25FeHRyYVNpZ25hbFNsb3RRdWFsaWZpYWN0aW9uKCk7CitA QCAtNjczLDcgKzY3Miw2IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgdGVtcGxhdGVHdEd0 KCk7CisgICAgIHZvaWQgcXByaXZhdGVzbG90cygpOworICAgICB2b2lkIHFwcml2YXRlcHJvcGVy dGllcygpOworLSAgICB2b2lkIGlubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24oKTsKKyAg ICAgdm9pZCB3YXJuT25Qcm9wZXJ0eVdpdGhvdXRSRUFEKCk7CisgICAgIHZvaWQgY29uc3RydWN0 b3JzKCk7CisgICAgIHZvaWQgdHlwZW5hbWVXaXRoVW5zaWduZWQoKTsKK0BAIC03ODQsMTIgKzc4 Miw2IEBAIHZvaWQgdHN0X01vYzo6aW5pdFRlc3RDYXNlKCkKKyAjZW5kaWYKKyB9CisgCistdm9p ZCB0c3RfTW9jOjpzbG90V2l0aEV4Y2VwdGlvbigpIHRocm93KE15U3RydWN0KQorLXsKKy0gICAg Ly8gYmUgaGFwcHkKKy0gICAgUVZFUklGWSh0cnVlKTsKKy19CistCisgdm9pZCB0c3RfTW9jOjpk b250U3RyaXBOYW1lc3BhY2VzKCkKKyB7CisgICAgIFNlbmRlciBzZW5kZXI7CitAQCAtODI0LDcg KzgxNiw3IEBAIHZvaWQgdHN0X01vYzo6b2xkU3R5bGVDYXN0cygpCisgCisgICAgIFFTdHJpbmdM aXN0IGFyZ3M7CisgICAgIGFyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysiIDw8ICItV29sZC1z dHlsZS1jYXN0IiA8PCAiLUkiIDw8ICIuIgorLSAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRl UGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8 ICItIjsKKysgICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rl di9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAgIHByb2Muc3Rh cnQoImdjYyIsIGFyZ3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7Cisg ICAgIHByb2Mud3JpdGUobW9jT3V0KTsKK0BAIC04OTQsNyArODg2LDcgQEAgdm9pZCB0c3RfTW9j OjppbnB1dEZpbGVOYW1lV2l0aERvdHNCdXROb0V4dGVuc2lvbigpCisgCisgICAgIFFTdHJpbmdM aXN0IGFyZ3M7CisgICAgIGFyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysiIDw8ICItSSIgPDwg Ii4uIgorLSAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2 L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICItIjsKKysgICAgICAgICA8PCAi LUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8 ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAgIHByb2Muc3RhcnQoImdjYyIsIGFyZ3MpOworICAg ICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7CisgICAgIHByb2Mud3JpdGUobW9jT3V0 KTsKK0BAIC0xMTc0LDcgKzExNjYsNyBAQCB2b2lkIHRzdF9Nb2M6Omlnbm9yZU9wdGlvbkNsYXNo ZXMoKQorICAgICBRU3RyaW5nTGlzdCBnY2NBcmdzOworICAgICBnY2NBcmdzIDw8ICItYyIgPDwg Ii14IiA8PCAiYysrIiA8PCAiLUkiIDw8ICIuLiIKKyAgICAgICAgICA8PCAiLUkiIDw8IHF0SW5j bHVkZVBhdGggPDwgIi1JIiA8PCBpbmNsdWRlRGlyIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIKKy0g ICAgICAgICA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzExIiA8PCAgIi0iOworKyAgICAgICAgIDw8 ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICAiLSI7CisgICAgIHByb2Muc3RhcnQoImdjYyIs IGdjY0FyZ3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7CisgICAgIHBy b2Mud3JpdGUobW9jT3V0KTsKK0BAIC0xNTkzLDIxICsxNTg1LDYgQEAgdm9pZCB0c3RfTW9jOjpx cHJpdmF0ZXByb3BlcnRpZXMoKQorIAorIH0KKyAKKy0jaW5jbHVkZSAidGFzazE4OTk5Ni5oIgor LQorLXZvaWQgSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbjo6YygpIHRocm93KCkge30K Ky0KKy12b2lkIHRzdF9Nb2M6OmlubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24oKQorLXsK Ky0gICAgSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiB0c3Q7CistICAgIGNvbnN0IFFN ZXRhT2JqZWN0ICptb2JqID0gdHN0Lm1ldGFPYmplY3QoKTsKKy0gICAgUVZFUklGWShtb2JqLT5p bmRleE9mU2xvdCgiYSgpIikgIT0gLTEpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90 KCJiKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImMoKSIpICE9 IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiZCgpIikgIT0gLTEpOworLSAg ICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJlKCkiKSAhPSAtMSk7CistfQorLQorIHZvaWQg dHN0X01vYzo6d2Fybk9uUHJvcGVydHlXaXRob3V0UkVBRCgpCisgeworICNpZmRlZiBNT0NfQ1JP U1NfQ09NUElMRUQKK0BAIC0xODY5LDcgKzE4NDYsNyBAQCB2b2lkIHRzdF9Nb2M6Om5vdGlmeUVy cm9yKCkKKyAKKyAgICAgUVN0cmluZ0xpc3QgYXJnczsKKyAgICAgYXJncyA8PCAiLWMiIDw8ICIt eCIgPDwgImMrKyIgPDwgIi1JIiA8PCAiLiIKKy0gICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVk ZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzExIiA8 PCAiLSI7CisrICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9k ZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxeiIgPDwgIi0iOworICAgICBwcm9jLnN0 YXJ0KCJnY2MiLCBhcmdzKTsKKyAgICAgUVZFUklGWShwcm9jLndhaXRGb3JTdGFydGVkKCkpOwor ICAgICBwcm9jLndyaXRlKG1vY091dCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcCBiL3F0YmFz ZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVydmll dy5jcHAKK2luZGV4IGMzNTVlZTk2NjUuLjg4YzA5ZGU4ZTAgMTAwNjQ0CistLS0gYS9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xaGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcu Y3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xaGVhZGVydmll dy90c3RfcWhlYWRlcnZpZXcuY3BwCitAQCAtMjUxLDYgKzI1MSw3IEBAIHByaXZhdGUgc2xvdHM6 CisgICAgIHZvaWQgdGVzdFJlc2V0Q2FjaGVkU2l6ZUhpbnQoKTsKKyAgICAgdm9pZCBzdGF0dXNU aXBzKCk7CisgICAgIHZvaWQgdGVzdFJlbW92aW5nQ29sdW1uc1ZpYUxheW91dENoYW5nZWQoKTsK KysgICAgdm9pZCB0ZXN0TW9kZWxNb3ZpbmdDb2x1bW5zKCk7CisgCisgcHJvdGVjdGVkOgorICAg ICB2b2lkIHNldHVwVGVzdERhdGEoYm9vbCB1c2VfcmVzZXRfbW9kZWwgPSBmYWxzZSk7CitAQCAt MzYwLDYgKzM2MSwxMiBAQCBwdWJsaWM6CisgICAgICAgICBlbmRSZW1vdmVDb2x1bW5zKCk7Cisg ICAgIH0KKyAKKysgICAgdm9pZCBtb3ZlQ29sdW1uKGludCBmcm9tLCBpbnQgdG8pCisrICAgIHsK KysgICAgICAgIGJlZ2luTW92ZUNvbHVtbnMoUU1vZGVsSW5kZXgoKSwgZnJvbSwgZnJvbSwgUU1v ZGVsSW5kZXgoKSwgdG8pOworKyAgICAgICAgZW5kTW92ZUNvbHVtbnMoKTsKKysgICAgfQorKwor ICAgICB2b2lkIGNsZWFudXAoKQorICAgICB7CisgICAgICAgICBlbWl0IGxheW91dEFib3V0VG9C ZUNoYW5nZWQoKTsKK0BAIC0zNjI3LDUgKzM2MzQsMTggQEAgdm9pZCB0c3RfUUhlYWRlclZpZXc6 OnRlc3RSZW1vdmluZ0NvbHVtbnNWaWFMYXlvdXRDaGFuZ2VkKCkKKyAgICAgLy8gVGhlIG1haW4g cG9pbnQgb2YgdGhpcyB0ZXN0IGlzIHRoYXQgdGhlIHNlY3Rpb24tc2l6ZSByZXN0b3JpbmcgY29k ZSBkaWRuJ3QgZ28gb3V0IG9mIGJvdW5kcy4KKyB9CisgCisrdm9pZCB0c3RfUUhlYWRlclZpZXc6 OnRlc3RNb2RlbE1vdmluZ0NvbHVtbnMoKQorK3sKKysgICAgUXRUZXN0TW9kZWwgbW9kZWwoMTAs IDEwKTsKKysgICAgUUhlYWRlclZpZXcgaHYoUXQ6Okhvcml6b250YWwpOworKyAgICBodi5zZXRN b2RlbCgmbW9kZWwpOworKyAgICBodi5yZXNpemVTZWN0aW9ucyhRSGVhZGVyVmlldzo6UmVzaXpl VG9Db250ZW50cyk7CisrICAgIGh2LnNob3coKTsKKysKKysgICAgUVBlcnNpc3RlbnRNb2RlbElu ZGV4IGluZGV4MyA9IG1vZGVsLmluZGV4KDAsIDMpOworKyAgICBtb2RlbC5tb3ZlQ29sdW1uKDMs IDEpOworKyAgICBRQ09NUEFSRShpbmRleDMuY29sdW1uKCksIDEpOworK30KKysKKyBRVEVTVF9N QUlOKHRzdF9RSGVhZGVyVmlldykKKyAjaW5jbHVkZSAidHN0X3FoZWFkZXJ2aWV3Lm1vYyIKK2Rp ZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3 L3RzdF9xdGFibGV2aWV3LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdz L3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwCitpbmRleCA3NjEzNTdiMjUyLi4wNmJiNzA2 MDc0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcXRh Ymxldmlldy90c3RfcXRhYmxldmlldy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdl dHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwCitAQCAtMzk3LDYgKzM5 Nyw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgY2hlY2tIZWFkZXJNaW5TaXplKCk7Cisg CisgICAgIHZvaWQgcmVzaXplVG9Db250ZW50cygpOworKyAgICB2b2lkIHJlc2l6ZVRvQ29udGVu dHNTcGFucygpOworIAorICAgICB2b2lkIHRhYkZvY3VzKCk7CisgICAgIHZvaWQgYmlnTW9kZWwo KTsKK0BAIC0zNzIxLDYgKzM3MjIsNzAgQEAgdm9pZCB0c3RfUVRhYmxlVmlldzo6cmVzaXplVG9D b250ZW50cygpCisgCisgfQorIAorKworK2NsYXNzIFNwYW5Nb2RlbCA6IHB1YmxpYyBRQWJzdHJh Y3RUYWJsZU1vZGVsCisreworK3B1YmxpYzoKKysgICAgU3Bhbk1vZGVsKGJvb2wgc2VjdGlvbnNN b3ZlZCkKKysgICAgICAgIDogX3NlY3Rpb25zTW92ZWQoc2VjdGlvbnNNb3ZlZCkKKysgICAge30K KysgICAgaW50IGNvbHVtbkNvdW50KGNvbnN0IFFNb2RlbEluZGV4ICYgPSB7fSkgY29uc3Qgb3Zl cnJpZGUgeyByZXR1cm4gMjsgfQorKyAgICBpbnQgcm93Q291bnQoY29uc3QgUU1vZGVsSW5kZXgg JiA9IHt9KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAxOyB9CisrICAgIFFWYXJpYW50IGRhdGEo Y29uc3QgUU1vZGVsSW5kZXggJmlkeCwgaW50IHJvbGUgPSBRdDo6RGlzcGxheVJvbGUpIGNvbnN0 IG92ZXJyaWRlCisrICAgIHsKKysgICAgICAgIGlmIChyb2xlICE9IFF0OjpEaXNwbGF5Um9sZSkK KysgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKysgICAgICAgIGNvbnN0IGludCBjb2wg PSBfc2VjdGlvbnNNb3ZlZCA/IDEgLSBpZHguY29sdW1uKCkgOiBpZHguY29sdW1uKCk7CisrICAg ICAgICBpZiAoY29sID09IDApCisrICAgICAgICAgICAgcmV0dXJuICJMb3JlbSBpcHN1bSBkb2xv ciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0 ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4iOworKyAg ICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisrICAgIH0KKytwcml2YXRlOgorKyAgICBib29sIF9z ZWN0aW9uc01vdmVkOworK307CisrCisrCisrdm9pZCB0c3RfUVRhYmxlVmlldzo6cmVzaXplVG9D b250ZW50c1NwYW5zKCkKKyt7CisrICAgIFNwYW5Nb2RlbCBtb2RlbDEoZmFsc2UpOworKyAgICBT cGFuTW9kZWwgbW9kZWwyKHRydWUpOworKyAgICBRVGFibGVWaWV3IHZpZXcxLCB2aWV3Miwgdmll dzM7CisrICAgIHZpZXcxLnNldE1vZGVsKCZtb2RlbDEpOworKyAgICB2aWV3Mi5zZXRNb2RlbCgm bW9kZWwyKTsKKysgICAgdmlldzIuaG9yaXpvbnRhbEhlYWRlcigpLT5tb3ZlU2VjdGlvbigwLCAx KTsKKysgICAgdmlldzMuc2V0TW9kZWwoJm1vZGVsMSk7CisrCisrICAgIHZpZXcxLnNldFNwYW4o MCwgMCwgMSwgMik7CisrICAgIHZpZXcyLnNldFNwYW4oMCwgMSwgMSwgMik7CisrICAgIHZpZXcx LnNob3coKTsKKysgICAgdmlldzIuc2hvdygpOworKyAgICB2aWV3My5zaG93KCk7CisrICAgIFFW RVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCgmdmlldzEpKTsKKysgICAgUVZFUklG WShRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3MikpOworKyAgICBRVkVSSUZZKFFU ZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXczKSk7CisrICAgIHZpZXcxLnNldENvbHVt bldpZHRoKDAsIDEwMCk7CisrICAgIHZpZXcxLnNldENvbHVtbldpZHRoKDEsIDEwMCk7CisrICAg IHZpZXcyLnNldENvbHVtbldpZHRoKDAsIDEwMCk7CisrICAgIHZpZXcyLnNldENvbHVtbldpZHRo KDEsIDEwMCk7CisrICAgIHZpZXczLnNldENvbHVtbldpZHRoKDAsIDIwMCk7CisrCisrICAgIHZp ZXcxLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7CisrICAgIHZpZXcyLnJlc2l6ZVJvd1RvQ29udGVu dHMoMCk7CisrICAgIHZpZXczLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7CisrICAgIFFDT01QQVJF KHZpZXcxLnJvd0hlaWdodCgwKSwgdmlldzMucm93SGVpZ2h0KDApKTsKKysgICAgUUNPTVBBUkUo dmlldzIucm93SGVpZ2h0KDApLCB2aWV3My5yb3dIZWlnaHQoMCkpOworKworKyAgICB2aWV3My5y ZXNpemVDb2x1bW5Ub0NvbnRlbnRzKDApOworKyAgICB2aWV3My5yZXNpemVSb3dUb0NvbnRlbnRz KDApOworKyAgICAvLyBoZWlnaHQgc2hvdWxkIGJlIG9ubHkgMSB0ZXh0IGxpbmUgZm9yIGVhc3kg dGVzdGluZworKyAgICB2aWV3MS5zZXRSb3dIZWlnaHQoMCwgdmlldzMudmVydGljYWxIZWFkZXIo KS0+c2VjdGlvblNpemUoMCkpOworKyAgICB2aWV3Mi5zZXRSb3dIZWlnaHQoMCwgdmlldzMudmVy dGljYWxIZWFkZXIoKS0+c2VjdGlvblNpemUoMCkpOworKyAgICB2aWV3MS5yZXNpemVDb2x1bW5U b0NvbnRlbnRzKDApOworKyAgICB2aWV3Mi5yZXNpemVDb2x1bW5Ub0NvbnRlbnRzKDEpOworKyAg ICBRQ09NUEFSRSh2aWV3MS5jb2x1bW5XaWR0aCgwKSwgdmlldzMuY29sdW1uV2lkdGgoMCkgLSB2 aWV3MS5jb2x1bW5XaWR0aCgxKSk7CisrICAgIFFDT01QQVJFKHZpZXcyLmNvbHVtbldpZHRoKDAp LCB2aWV3My5jb2x1bW5XaWR0aCgwKSAtIHZpZXcyLmNvbHVtbldpZHRoKDEpKTsKKyt9CisrCisg UVRfQkVHSU5fTkFNRVNQQUNFCisgZXh0ZXJuIGJvb2wgUV9XSURHRVRTX0VYUE9SVCBxdF90YWJf YWxsX3dpZGdldHMoKTsgLy8gcWFwcGxpY2F0aW9uLmNwcAorIFFUX0VORF9OQU1FU1BBQ0UKK2Rp ZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5lbC9xYXBwbGljYXRpb24v dHN0X3FhcHBsaWNhdGlvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5lbC9x YXBwbGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5jcHAKK2luZGV4IGEzYjhlZjc4ZDguLjQ5NTVj ZWJkNWQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5lbC9xYXBw bGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNwcAorQEAgLTE0OTgs NyArMTQ5OCw3IEBAIHZvaWQgdHN0X1FBcHBsaWNhdGlvbjo6ZGVza3RvcFNldHRpbmdzQXdhcmUo KQorICAgICBlbnZpcm9ubWVudCArPSBRTGF0aW4xU3RyaW5nKCJRVF9NQUNfRElTQUJMRV9GT1JF R1JPVU5EX0FQUExJQ0FUSU9OX1RSQU5TRk9STT0xIik7CisgICAgIHRlc3RQcm9jZXNzLnNldEVu dmlyb25tZW50KGVudmlyb25tZW50KTsKKyAjZW5kaWYKKy0gICAgdGVzdFByb2Nlc3Muc3RhcnQo ImRlc2t0b3BzZXR0aW5nc2F3YXJlX2hlbHBlciIpOworKyAgICB0ZXN0UHJvY2Vzcy5zdGFydCgi Li9kZXNrdG9wc2V0dGluZ3Nhd2FyZV9oZWxwZXIiKTsKKyAgICAgUVZFUklGWTIodGVzdFByb2Nl c3Mud2FpdEZvclN0YXJ0ZWQoKSwKKyAgICAgICAgICAgICAgcVByaW50YWJsZShRU3RyaW5nOjpm cm9tTGF0aW4xKCJDYW5ub3Qgc3RhcnQgJ2Rlc2t0b3BzZXR0aW5nc2F3YXJlX2hlbHBlcic6ICUx IikuYXJnKHRlc3RQcm9jZXNzLmVycm9yU3RyaW5nKCkpKSk7CisgICAgIFFWRVJJRlkodGVzdFBy b2Nlc3Mud2FpdEZvckZpbmlzaGVkKDEwMDAwKSk7CitAQCAtMjQ1Miw3ICsyNDUyLDcgQEAgdm9p ZCB0c3RfUUFwcGxpY2F0aW9uOjpxdGJ1Z18xMjY3MygpCisgI2lmIFFUX0NPTkZJRyhwcm9jZXNz KQorICAgICBRUHJvY2VzcyB0ZXN0UHJvY2VzczsKKyAgICAgUVN0cmluZ0xpc3QgYXJndW1lbnRz OworLSAgICB0ZXN0UHJvY2Vzcy5zdGFydCgibW9kYWxfaGVscGVyIiwgYXJndW1lbnRzKTsKKysg ICAgdGVzdFByb2Nlc3Muc3RhcnQoIi4vbW9kYWxfaGVscGVyIiwgYXJndW1lbnRzKTsKKyAgICAg UVZFUklGWTIodGVzdFByb2Nlc3Mud2FpdEZvclN0YXJ0ZWQoKSwKKyAgICAgICAgICAgICAgcVBy aW50YWJsZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJDYW5ub3Qgc3RhcnQgJ21vZGFsX2hlbHBlcic6 ICUxIikuYXJnKHRlc3RQcm9jZXNzLmVycm9yU3RyaW5nKCkpKSk7CisgICAgIFFWRVJJRlkodGVz dFByb2Nlc3Mud2FpdEZvckZpbmlzaGVkKDIwMDAwKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3RfcWFic3RyYWN0YnV0 dG9uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0 b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAKK2luZGV4IGViMTA4YTQwZGUuLmRjYTU1MjhjMWIg MTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0 YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3BwCitA QCAtNDEsNiArNDEsNyBAQAorIAorICNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9w Lmg+CisgI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1pbnRlZ3JhdGlvbi5oPgorKyNpbmNsdWRlIDxx cGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAKKyBjbGFzcyB0c3RfUUFic3RyYWN0QnV0dG9uIDogcHVi bGljIFFPYmplY3QKKyB7CitAQCAtNzYsNiArNzcsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2 b2lkIGtleU5hdmlnYXRpb24oKTsKKyAjZW5kaWYKKyAKKysgICAgdm9pZCBidXR0b25QcmVzc0tl eXMoKTsKKysKKyBwcm90ZWN0ZWQgc2xvdHM6CisgICAgIHZvaWQgb25DbGlja2VkKCk7CisgICAg IHZvaWQgb25Ub2dnbGVkKCBib29sIG9uICk7CitAQCAtMjY5LDcgKzI3MiwxMyBAQCB2b2lkIHRz dF9RQWJzdHJhY3RCdXR0b246OnNldEF1dG9SZXBlYXQoKQorICAgICAgICAgUUNPTVBBUkUocHJl c3NfY291bnQsIGNsaWNrX2NvdW50KTsKKyAgICAgICAgIFFWRVJJRlkoY2xpY2tfY291bnQgPiAx KTsKKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIDQ6CisrICAgIGNhc2UgNDogeworKyAgICAg ICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpw bGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6 S2V5Pj4oKTsKKysgICAgICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9F bnRlcikpIHsKKysgICAgICAgICAgICBRU0tJUCgicGxhdGZvcm0gdGhlbWUgaGFzIEtleV9FbnRl ciBpbiBCdXR0b25QcmVzc0tleXMiKTsKKysgICAgICAgIH0KKyAgICAgICAgIC8vIGNoZWNrIHRo YXQgcHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVjdCB3aGVuIGF1dG9yZXBlYXQgaXMgZmFsc2UK KyAgICAgICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7CisgICAgICAgICB0ZXN0V2lk Z2V0LT5zZXRBdXRvUmVwZWF0KCBmYWxzZSApOworQEAgLTI4Niw3ICsyOTUsMTQgQEAgdm9pZCB0 c3RfUUFic3RyYWN0QnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkKKyAKKyAgICAgICAgIFFWRVJJRlko IGNsaWNrX2NvdW50ID09IDAgKTsKKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIDU6CisrICAg IH0KKysgICAgY2FzZSA1OiB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9 IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1l OjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYgKGJ1dHRvblBy ZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgICAgIFFTS0lQKCJw bGF0Zm9ybSB0aGVtZSBoYXMgS2V5X0VudGVyIGluIEJ1dHRvblByZXNzS2V5cyIpOworKyAgICAg ICAgfQorICAgICAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBoYXMgbm8gZWZmZWN0 IHdoZW4gYXV0b3JlcGVhdCBpcyB0cnVlCisgICAgICAgICB0ZXN0V2lkZ2V0LT5zZXREb3duKCBm YWxzZSApOworICAgICAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggdHJ1ZSApOworQEAg LTMwNCw2ICszMjAsNyBAQCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OnNldEF1dG9SZXBlYXQo KQorIAorICAgICAgICAgUVZFUklGWSggY2xpY2tfY291bnQgPT0gMCApOworICAgICAgICAgYnJl YWs7CisrICAgIH0KKyAgICAgY2FzZSA2OgorICAgICAgICAgLy8gdmVyaWZ5IGF1dG9yZXBlYXQg aXMgb2ZmIGJ5IGRlZmF1bHQuCisgICAgICAgICBNeUJ1dHRvbiB0bXAoIDApOworQEAgLTY1MSw1 ICs2NjgsMTYgQEAgdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjprZXlOYXZpZ2F0aW9uKCkKKyB9 CisgI2VuZGlmCisgCisrdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpidXR0b25QcmVzc0tleXMo KQorK3sKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Q cml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6 OktleT4+KCk7CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnV0dG9uUHJlc3NLZXlzLmxlbmd0 aCgpOyArK2kpIHsKKysgICAgICAgIFFUZXN0OjprZXlDbGljayh0ZXN0V2lkZ2V0LCBidXR0b25Q cmVzc0tleXNbaV0pOworKyAgICAgICAgUUNPTVBBUkUoY2xpY2tfY291bnQsIGkgKyAxKTsKKysg ICAgfQorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RQWJzdHJhY3RCdXR0b24pCisgI2luY2x1ZGUg InRzdF9xYWJzdHJhY3RidXR0b24ubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRv L3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAgYi9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwCitpbmRl eCAzMjQzNzA1MGY1Li40NmI1YWY2ZDYzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94LmNwcAorKysrIGIvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94LmNwcAor QEAgLTE2OCw2ICsxNjgsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGNoZWNrTWVudUl0 ZW1Qb3NXaGVuU3R5bGVTaGVldElzU2V0KCk7CisgICAgIHZvaWQgY2hlY2tFbWJlZGRlZExpbmVF ZGl0V2hlblN0eWxlU2hlZXRJc1NldCgpOworICAgICB2b2lkIHByb3BhZ2F0ZVN0eWxlQ2hhbmdl cygpOworKyAgICB2b2lkIGJ1dHRvblByZXNzS2V5cygpOworIAorIHByaXZhdGU6CisgICAgIFBs YXRmb3JtSW5wdXRDb250ZXh0IG1fcGxhdGZvcm1JbnB1dENvbnRleHQ7CitAQCAtMTY4Miw2ICsx NjgzLDE2IEBAIHZvaWQgdHN0X1FDb21ib0JveDo6c2V0TW9kZWwoKQorICAgICBRQ09NUEFSRShi b3gucm9vdE1vZGVsSW5kZXgoKSwgcm9vdE1vZGVsSW5kZXgpOworICAgICBib3guc2V0TW9kZWwo Ym94Lm1vZGVsKCkpOworICAgICBRQ09NUEFSRShib3gucm9vdE1vZGVsSW5kZXgoKSwgcm9vdE1v ZGVsSW5kZXgpOworKworKyAgICAvLyBjaGVjayB0aGF0IHNldHRpbmcgdGhlIHNhbWUgbW9kZWwg YXMgdGhlIGNvbXBsZXRlcidzIGRvZXNuJ3QgY3Jhc2gKKysgICAgUUNvbXBsZXRlciAqY29tcGxl dGVyID0gbmV3IFFDb21wbGV0ZXIoJmJveCk7CisrICAgIGJveC5zZXRFZGl0YWJsZSh0cnVlKTsK KysgICAgYm94LnNldENvbXBsZXRlcihjb21wbGV0ZXIpOworKyAgICBhdXRvICpsaXN0TW9kZWwg PSBuZXcgUVN0cmluZ0xpc3RNb2RlbCh7ICJvbmUiLCAidHdvIiB9LCBjb21wbGV0ZXIpOworKyAg ICBjb21wbGV0ZXItPnNldE1vZGVsKGxpc3RNb2RlbCk7CisrICAgIFFDT01QQVJFKGxpc3RNb2Rl bC0+cm93Q291bnQoKSwgMik7IC8vIG1ha2Ugc3VyZSBpdCB3YXNuJ3QgZGVsZXRlZAorKyAgICBi b3guc2V0TW9kZWwobGlzdE1vZGVsKTsKKysgICAgUUNPTVBBUkUobGlzdE1vZGVsLT5yb3dDb3Vu dCgpLCAyKTsgLy8gbWFrZSBzdXJlIGl0IHdhc24ndCBkZWxldGVkCisgfQorIAorIHZvaWQgdHN0 X1FDb21ib0JveDo6c2V0Q3VzdG9tTW9kZWxBbmRWaWV3KCkKK0BAIC0zNjMyLDUgKzM2NDMsMjQg QEAgdm9pZCB0c3RfUUNvbWJvQm94Ojpwcm9wYWdhdGVTdHlsZUNoYW5nZXMoKQorICAgICBRVkVS SUZZKGZyYW1lU3R5bGUuaW5xdWlyZWQpOworIH0KKyAKKyt2b2lkIHRzdF9RQ29tYm9Cb3g6OmJ1 dHRvblByZXNzS2V5cygpCisreworKyAgICBRQ29tYm9Cb3ggY29tYm9Cb3g7CisrICAgIGNvbWJv Qm94LnNldEVkaXRhYmxlKGZhbHNlKTsKKysgICAgY29tYm9Cb3guYWRkSXRlbShRU3RyaW5nOjpu dW1iZXIoMSkpOworKyAgICBjb21ib0JveC5hZGRJdGVtKFFTdHJpbmc6Om51bWJlcigyKSk7Cisr ICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6 cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+Pigp OworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ1dHRvblByZXNzS2V5cy5sZW5ndGgoKTsgKytp KSB7CisrICAgICAgICBRVGVzdDo6a2V5Q2xpY2soJmNvbWJvQm94LCBidXR0b25QcmVzc0tleXNb aV0pOworKyAgICAgICAgLy8gT24gc29tZSBwbGF0Zm9ybXMsIGEgd2luZG93IHdpbGwgbm90IGJl IGltbWVkaWF0ZWx5IHZpc2libGUsCisrICAgICAgICAvLyBidXQgdGFrZSBzb21lIGV2ZW50LWxv b3AgaXRlcmF0aW9ucyB0byBjb21wbGV0ZS4KKysgICAgICAgIC8vIFVzaW5nIFFUUllfVkVSSUZZ IHRvIGRlYWwgd2l0aCB0aGF0LgorKyAgICAgICAgUVRSWV9WRVJJRlkoY29tYm9Cb3gudmlldygp LT5pc1Zpc2libGUoKSk7CisrICAgICAgICBjb21ib0JveC5oaWRlUG9wdXAoKTsKKysgICAgfQor K30KKysKKyBRVEVTVF9NQUlOKHRzdF9RQ29tYm9Cb3gpCisgI2luY2x1ZGUgInRzdF9xY29tYm9i b3gubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9x Y29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5rYnV0dG9uLnBybyBiL3F0YmFzZS90ZXN0cy9h dXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5rYnV0dG9u LnBybworaW5kZXggYmUzY2ZjZDEwNC4uYzIyOGZkZmNjYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5r YnV0dG9uLnBybworKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21t YW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvCitAQCAtMSw2ICsxLDYgQEAKKyBD T05GSUcgKz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0c3RfcWNvbW1hbmRsaW5rYnV0dG9uCistUVQg Kz0gd2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lkZ2V0cyB0ZXN0bGliIGd1aS1wcml2YXRlCisg U09VUkNFUyAgKz0gdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAKKyAKKyAKK2RpZmYgLS1naXQg YS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3Rz dF9xY29tbWFuZGxpbmtidXR0b24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRn ZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAoraW5kZXgg MDA0NGQzM2M2Ni4uNGNmMDYyOTZlNCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5j cHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmti dXR0b24vdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAKK0BAIC00MCw2ICs0MCw5IEBACisgI2lu Y2x1ZGUgPFFHcmlkTGF5b3V0PgorICNpbmNsdWRlIDxRUGFpbnRlcj4KKyAKKysjaW5jbHVkZSA8 cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhl bWUuaD4KKysKKyBjbGFzcyB0c3RfUUNvbW1hbmRMaW5rQnV0dG9uIDogcHVibGljIFFPYmplY3QK KyB7CisgICAgIFFfT0JKRUNUCitAQCAtMjIzLDYgKzIyNiwxMyBAQCB2b2lkIHRzdF9RQ29tbWFu ZExpbmtCdXR0b246OnNldEF1dG9SZXBlYXQoKQorICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5n IEVOVEVSIGhhcyBubyBlZmZlY3QKKyAgICAgcmVzZXRDb3VudGVycygpOworICAgICB0ZXN0V2lk Z2V0LT5zZXREb3duKCBmYWxzZSApOworKyAgICAvLyBTa2lwIGFmdGVyIHJlc2V0IGlmIEJ1dHRv blByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlz ID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6 QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNv bnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKyAgICAg dGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggZmFsc2UgKTsKKyAgICAgUVRlc3Q6OmtleVByZXNz KCB0ZXN0V2lkZ2V0LCBRdDo6S2V5X0VudGVyICk7CisgCitAQCAtMjU1LDYgKzI2NSwxNCBAQCB2 b2lkIHRzdF9RQ29tbWFuZExpbmtCdXR0b246OnByZXNzZWQoKQorICAgICBRQ09NUEFSRSggcHJl c3NfY291bnQsICh1aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291bnQsICh1aW50 KTEgKTsKKyAKKysgICAgLy8gU2tpcCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtleV9FbnRlcgor KyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6 OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4o KTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgewor KyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVzdFdp ZGdldCxRdDo6S2V5X0VudGVyICk7CisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQp MSApOworICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworZGlmZiAtLWdp dCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3VwYm94 LnBybyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3Vw Ym94LnBybworaW5kZXggNGE1ZTc2ZmY2NS4uYTIzNWZhMWZhYyAxMDA2NDQKKy0tLSBhL3F0YmFz ZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3VwYm94LnBybworKysr IGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gu cHJvCitAQCAtMSw2ICsxLDYgQEAKKyBDT05GSUcgKz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0c3Rf cWdyb3VwYm94CistUVQgKz0gd2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lkZ2V0cyB0ZXN0bGli IGd1aS1wcml2YXRlCisgU09VUkNFUyAgKz0gdHN0X3Fncm91cGJveC5jcHAKKyAKKyAKK2RpZmYg LS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3RzdF9x Z3JvdXBib3guY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJv eC90c3RfcWdyb3VwYm94LmNwcAoraW5kZXggNGZiNWQyNjJjYS4uZDhkNzU2MmI3MyAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fn cm91cGJveC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3Jv dXBib3gvdHN0X3Fncm91cGJveC5jcHAKK0BAIC0zNSw2ICszNSw5IEBACisgI2luY2x1ZGUgPFFS YWRpb0J1dHRvbj4KKyAjaW5jbHVkZSA8UURpYWxvZz4KKyAKKysjaW5jbHVkZSA8cHJpdmF0ZS9x Z3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKysK KyAjaW5jbHVkZSAicWdyb3VwYm94LmgiCisgCisgY2xhc3MgdHN0X1FHcm91cEJveCA6IHB1Ymxp YyBRT2JqZWN0CitAQCAtNjksNiArNzIsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHBy b3BhZ2F0ZUZvY3VzKCk7CisgICAgIHZvaWQgdGFza19RVEJVR18xOTE3MF9pZ25vcmVNb3VzZVJl bGVhc2VFdmVudCgpOworICAgICB2b2lkIHRhc2tfUVRCVUdfMTU1MTlfcHJvcGFnYXRlTW91c2VF dmVudHMoKTsKKysgICAgdm9pZCBidXR0b25QcmVzc0tleXMoKTsKKyAKKyBwcml2YXRlOgorICAg ICBib29sIGNoZWNrZWQ7CitAQCAtNjEwLDYgKzYxNCwyMCBAQCB2b2lkIHRzdF9RR3JvdXBCb3g6 OnRhc2tfUVRCVUdfMTU1MTlfcHJvcGFnYXRlTW91c2VFdmVudHMoKQorICAgICBRQ09NUEFSRShw YXJlbnQubW91c2VNb3ZlZCwgdHJ1ZSk7CisgfQorIAorK3ZvaWQgdHN0X1FHcm91cEJveDo6YnV0 dG9uUHJlc3NLZXlzKCkKKyt7CisrICAgIFFHcm91cEJveCBncm91cEJveDsKKysgICAgZ3JvdXBC b3guc2V0Q2hlY2thYmxlKHRydWUpOworKyAgICBRU2lnbmFsU3B5IGNsaWNrZWRTcHkoJmdyb3Vw Qm94LCAmUUdyb3VwQm94OjpjbGlja2VkKTsKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tl eXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1l OjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwg YnV0dG9uUHJlc3NLZXlzLmxlbmd0aCgpOyArK2kpIHsKKysgICAgICAgIFFUZXN0OjprZXlDbGlj aygmZ3JvdXBCb3gsIGJ1dHRvblByZXNzS2V5c1tpXSk7CisrICAgICAgICBRQ09NUEFSRShjbGlj a2VkU3B5Lmxlbmd0aCgpLCBpICsgMSk7CisrICAgIH0KKyt9CisrCisgdm9pZCB0c3RfUUdyb3Vw Qm94OjpzZW5kTW91c2VNb3ZlRXZlbnQoUVdpZGdldCAqd2lkZ2V0LCBjb25zdCBRUG9pbnQgJmxv Y2FsUG9zKQorIHsKKyAgICAgLy8gU2VuZCBhIE1vdXNlTW92ZSBldmVudCB3aXRob3V0IGFjdHVh bGx5IG1vdmluZyB0aGUgcG9pbnRlcgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8gYi9xdGJhc2UvdGVzdHMv YXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvCitpbmRleCAz NTNhZDA2Y2EyLi5lNTVmNjE0OGYyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lk Z2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBybworKysrIGIvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBybworQEAg LTEsNiArMSw2IEBACisgQ09ORklHICs9IHRlc3RjYXNlCisgVEFSR0VUID0gdHN0X3FwdXNoYnV0 dG9uCistUVQgKz0gd2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lkZ2V0cyB0ZXN0bGliIGd1aS1w cml2YXRlCisgU09VUkNFUyAgKz0gdHN0X3FwdXNoYnV0dG9uLmNwcAorIAorIAorZGlmZiAtLWdp dCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1 c2hidXR0b24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0 dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAKK2luZGV4IGU4MTg1MTRhNzkuLjQwNDNlOTMyNmEgMTAw NjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24v dHN0X3FwdXNoYnV0dG9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRn ZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAKK0BAIC00MSw2ICs0MSw5IEBACisg I2luY2x1ZGUgPFFTdHlsZUZhY3Rvcnk+CisgI2luY2x1ZGUgPFFUYWJXaWRnZXQ+CisgCisrI2lu Y2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0 Zm9ybXRoZW1lLmg+CisrCisgY2xhc3MgdHN0X1FQdXNoQnV0dG9uIDogcHVibGljIFFPYmplY3QK KyB7CisgUV9PQkpFQ1QKK0BAIC0yMTIsNiArMjE1LDEzIEBAIHZvaWQgdHN0X1FQdXNoQnV0dG9u OjphdXRvUmVwZWF0KCkKKyAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBoYXMgbm8g ZWZmZWN0CisgICAgIHJlc2V0Q291bnRlcnMoKTsKKyAgICAgdGVzdFdpZGdldC0+c2V0RG93bigg ZmFsc2UgKTsKKysgICAgLy8gU2tpcCBhZnRlciByZXNldCBpZiBCdXR0b25QcmVzc0tleXMgaGFz IEtleV9FbnRlcgorKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNh dGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5 cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlz dDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5 X0VudGVyKSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisgICAgIHRlc3RXaWRnZXQtPnNl dEF1dG9SZXBlYXQoIGZhbHNlICk7CisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVzdFdpZGdldCwg UXQ6OktleV9FbnRlciApOworIAorQEAgLTI0Nyw2ICsyNTcsMTQgQEAgdm9pZCB0c3RfUVB1c2hC dXR0b246OnByZXNzZWQoKQorICAgICBRQ09NUEFSRSggcHJlc3NfY291bnQsICh1aW50KTEgKTsK KyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291bnQsICh1aW50KTEgKTsKKyAKKysgICAgLy8gU2tp cCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtleV9FbnRlcgorKyAgICBjb25zdCBhdXRvIGJ1dHRv blByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRm b3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblBy ZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgcmV0dXJuOworKyAg ICB9CisrCisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVzdFdpZGdldCxRdDo6S2V5X0VudGVyICk7 CisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOworICAgICBRQ09NUEFSRSgg cmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9tYW51 YWwvcmhpL2N1YmVtYXBfcmVuZGVyL2J1aWxkc2hhZGVyLmJhdCBiL3F0YmFzZS90ZXN0cy9tYW51 YWwvcmhpL2N1YmVtYXBfcmVuZGVyL2J1aWxkc2hhZGVyLmJhdAorb2xkIG1vZGUgMTAwNzU1Citu ZXcgbW9kZSAxMDA2NDQKK1N1Ym1vZHVsZSBxdGNvbm5lY3Rpdml0eSBlOTU3ZDQ4MS4uMDU2Mjk0 YzA6CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVlei9oY2lt YW5hZ2VyLmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdl ci5jcHAKK2luZGV4IGUyNjM1ZmFlLi5hOGI4ZTNiOSAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2 aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAKKysrKyBiL3F0Y29ubmVjdGl2 aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAKK0BAIC01NjMsOSArNTYzLDEx IEBAIHZvaWQgSGNpTWFuYWdlcjo6aGFuZGxlSGNpQWNsUGFja2V0KGNvbnN0IHF1aW50OCAqZGF0 YSwgaW50IHNpemUpCisgCisgdm9pZCBIY2lNYW5hZ2VyOjpoYW5kbGVMZU1ldGFFdmVudChjb25z dCBxdWludDggKmRhdGEpCisgeworLSAgICAvLyBTcGVjIHY0LjIsIFZvbCAyLCBwYXJ0IEUsIDcu Ny42NWZmCisrICAgIC8vIFNwZWMgdjUuMywgVm9sIDQsIHBhcnQgRSwgNy43LjY1LioKKyAgICAg c3dpdGNoICgqZGF0YSkgeworLSAgICBjYXNlIDB4MTogeworKyAgICBjYXNlIDB4MTogLy8gSENJ X0xFX0Nvbm5lY3Rpb25fQ29tcGxldGUKKysgICAgY2FzZSAweEE6IC8vIEhDSV9MRV9FbmhhbmNl ZF9Db25uZWN0aW9uX0NvbXBsZXRlCisrICAgIHsKKyAgICAgICAgIGNvbnN0IHF1aW50MTYgaGFu ZGxlID0gYnRfZ2V0X2xlMTYoZGF0YSArIDIpOworICAgICAgICAgZW1pdCBjb25uZWN0aW9uQ29t cGxldGUoaGFuZGxlKTsKKyAgICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2 aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5j cHAgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzZXJ2aWNlZGlzY292 ZXJ5YWdlbnRfYmx1ZXouY3BwCitpbmRleCA2YTkzMTQzYi4uNGExOGNmYzcgMTAwNjQ0CistLS0g YS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzZXJ2aWNlZGlzY292ZXJ5 YWdlbnRfYmx1ZXouY3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVl dG9vdGhzZXJ2aWNlZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwCitAQCAtMzIwLDcgKzMyMCwxMCBA QCB2b2lkIFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnRQcml2YXRlOjpfcV9maW5pc2hT ZHBTY2FuKFFCbHVldG9vdGhTZXJ2aWNlRAorICAgICAgICAgICAgIGZvciAoY29uc3QgUUJsdWV0 b290aFV1aWQgJmlkIDogc2VydmljZUNsYXNzVXVpZHMpIHsKKyAgICAgICAgICAgICAgICAgaWYg KGlkLm1pbmltdW1TaXplKCkgPT0gMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJ bmZvLnNldFNlcnZpY2VVdWlkKGlkKTsKKy0gICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJbmZv LnNldFNlcnZpY2VOYW1lKFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6OnRyKCJDdXN0 b20gU2VydmljZSIpKTsKKysgICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlSW5mby5zZXJ2 aWNlTmFtZSgpLmlzRW1wdHkoKSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJ bmZvLnNldFNlcnZpY2VOYW1lKAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6OnRyKCJDdXN0b20gU2VydmljZSIpKTsK KysgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIFFCbHVldG9vdGhT ZXJ2aWNlSW5mbzo6U2VxdWVuY2UgbW9kU2VxID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VydmljZUluZm8uYXR0cmlidXRlKFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6U2VydmljZUNs YXNzSWRzKS52YWx1ZTxRQmx1ZXRvb3RoU2VydmljZUluZm86OlNlcXVlbmNlPigpOworICAgICAg ICAgICAgICAgICAgICAgbW9kU2VxLnJlbW92ZU9uZShRVmFyaWFudDo6ZnJvbVZhbHVlKGlkKSk7 CitAQCAtMzM0LDggKzMzNywxMCBAQCB2b2lkIFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdl bnRQcml2YXRlOjpfcV9maW5pc2hTZHBTY2FuKFFCbHVldG9vdGhTZXJ2aWNlRAorICAgICAgICAg ICAgICAgICBxQ0RlYnVnKFFUX0JUX0JMVUVaKSA8PCAiRGlzY292ZXJlZCBzZXJ2aWNlcyIgPDwg ZGlzY292ZXJlZERldmljZXMuYXQoMCkuYWRkcmVzcygpLnRvU3RyaW5nKCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgc2VydmljZUluZm8uc2VydmljZU5hbWUoKSA8 PCBzZXJ2aWNlSW5mby5zZXJ2aWNlVXVpZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDw8ICI+Pj4iIDw8IHNlcnZpY2VJbmZvLnNlcnZpY2VDbGFzc1V1aWRzKCk7Cist CistICAgICAgICAgICAgICAgIGVtaXQgcS0+c2VydmljZURpc2NvdmVyZWQoc2VydmljZUluZm8p OworKyAgICAgICAgICAgICAgICAvLyBVc2UgcXVldWVkIGNvbm5lY3Rpb24gdG8gYWxsb3cgdXMg ZmluaXNoIHRoZSBzZXJ2aWNlIGxvb3Bpbmc7IHRoZSBhcHBsaWNhdGlvbgorKyAgICAgICAgICAg ICAgICAvLyBtaWdodCBjYWxsIHN0b3AoKSB3aGVuIGl0IGhhcyBkZXRlY3RlZCB0aGUgc2Vydmlj ZS1vZi1pbnRlcmVzdC4KKysgICAgICAgICAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhv ZChxLCAic2VydmljZURpc2NvdmVyZWQiLCBRdDo6UXVldWVkQ29ubmVjdGlvbiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRX0FSRyhRQmx1ZXRvb3RoU2Vydmlj ZUluZm8sIHNlcnZpY2VJbmZvKSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9 CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29j a2V0LmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5j cHAKK2luZGV4IGU0ZDg1NDQ3Li5hYWRkNDc1NSAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5 L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5 L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5jcHAKK0BAIC01OTMsNyArNTkzLDcgQEAg dm9pZCBRQmx1ZXRvb3RoU29ja2V0OjpzZXRTb2NrZXRTdGF0ZShRQmx1ZXRvb3RoU29ja2V0OjpT b2NrZXRTdGF0ZSBzdGF0ZSkKKyBib29sIFFCbHVldG9vdGhTb2NrZXQ6OmNhblJlYWRMaW5lKCkg Y29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRQmx1ZXRvb3RoU29ja2V0QmFzZSk7CistICAgIHJl dHVybiBkLT5jYW5SZWFkTGluZSgpOworKyAgICByZXR1cm4gZC0+Y2FuUmVhZExpbmUoKSB8fCBR SU9EZXZpY2U6OmNhblJlYWRMaW5lKCk7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0Y29u bmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3BwIGIv cXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5j cHAKK2luZGV4IDA4NGFhOTU4Li5kNmFhMTdhNyAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5 L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3BwCisrKysgYi9xdGNv bm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1ZXpkYnVzLmNwcAor QEAgLTI4NCw2ICsyODQsMTAgQEAgdm9pZCBRQmx1ZXRvb3RoU29ja2V0UHJpdmF0ZUJsdWV6REJ1 czo6Y29ubmVjdFRvU2VydmljZSgKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorKyAgICBp ZiAoc2VydmljZS5zb2NrZXRQcm90b2NvbCgpICE9IFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6UHJv dG9jb2w6OlVua25vd25Qcm90b2NvbCkKKysgICAgICAgIHNvY2tldFR5cGUgPSBzZXJ2aWNlLnNv Y2tldFByb3RvY29sKCk7CisrICAgIHFDRGVidWcoUVRfQlRfQkxVRVopIDw8ICJTb2NrZXQgcHJv dG9jb2wgdXNlZDoiIDw8IHNvY2tldFR5cGU7CisrCisgICAgIGNvbm5lY3RUb1NlcnZpY2Uoc2Vy dmljZS5kZXZpY2UoKS5hZGRyZXNzKCksIHRhcmdldFNlcnZpY2UsIG9wZW5Nb2RlKTsKKyB9Cisg CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Roc29ja2V0 L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcCBiL3F0Y29ubmVjdGl2aXR5L3Rlc3RzL2F1dG8vcWJs dWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAKK2luZGV4IDA1YmMxYTBmLi5h N2I1ZWYxZiAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3Rlc3RzL2F1dG8vcWJsdWV0b290 aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3Rl c3RzL2F1dG8vcWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAKK0BAIC0x NDIsNyArMTQyLDcgQEAgdm9pZCB0c3RfUUJsdWV0b290aFNvY2tldDo6aW5pdFRlc3RDYXNlKCkK KyAgICAgcURlYnVnKCkgPDwgIlN0YXJ0aW5nIGRpc2NvdmVyeSI7CisgCisgICAgIHNkYS0+c2V0 VXVpZEZpbHRlcihRQmx1ZXRvb3RoVXVpZChRU3RyaW5nKFRFU1RfU0VSVklDRV9VVUlEKSkpOwor LSAgICBzZGEtPnN0YXJ0KFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6Ok1pbmltYWxE aXNjb3ZlcnkpOworKyAgICBzZGEtPnN0YXJ0KFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdl bnQ6OkZ1bGxEaXNjb3ZlcnkpOworIAorICAgICBmb3IgKGludCBjb25uZWN0VGltZSA9IE1heENv bm5lY3RUaW1lOyAhZG9uZV9kaXNjb3ZlcnkgJiYgY29ubmVjdFRpbWUgPiAwOyBjb25uZWN0VGlt ZSAtPSAxMDAwKQorICAgICAgICAgUVRlc3Q6OnFXYWl0KDEwMDApOworU3VibW9kdWxlIHF0ZGVj bGFyYXRpdmUgZjU3MDFmMGQuLjhkZWZlN2JmOgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUv c3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29sYXJyYXlfcC5oIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcW1sL2NvbW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmgKK2luZGV4IGI2NWI5OTRkNmMu LjE1YThjZDY4NzggMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29tbW9uL3Fx bWxqc2ZpeGVkcG9vbGFycmF5X3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2NvbW1v bi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmgKK0BAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKKyAg ICAgICAgIGlmIChRVHlwZUluZm88VD46OmlzQ29tcGxleCkgeworICAgICAgICAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgICAgICAgbmV3IChkYXRhICsg aSkgVCh2ZWN0b3IuYXQoaSkpOworLSAgICAgICAgfSBlbHNlIHsKKysgICAgICAgIH0gZWxzZSBp ZiAoY291bnQpIHsKKyAgICAgICAgICAgICBtZW1jcHkoZGF0YSwgc3RhdGljX2Nhc3Q8Y29uc3Qg dm9pZCo+KHZlY3Rvci5jb25zdERhdGEoKSksIGNvdW50ICogc2l6ZW9mKFQpKTsKKyAgICAgICAg IH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9qc3J1bnRpbWUv cXY0cW9iamVjdHdyYXBwZXIuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9x djRxb2JqZWN0d3JhcHBlci5jcHAKK2luZGV4IGU1N2NkZDgyNzguLjk0NjEzNTk4YWYgMTAwNjQ0 CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3cmFwcGVy LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9xdjRxb2JqZWN0d3Jh cHBlci5jcHAKK0BAIC0xMTQ1LDggKzExNDUsNyBAQCB2b2lkIEhlYXA6OlFPYmplY3RXcmFwcGVy OjptYXJrT2JqZWN0cyhIZWFwOjpCYXNlICp0aGF0LCBRVjQ6Ok1hcmtTdGFjayAqbWFya1N0YQor IHZvaWQgUU9iamVjdFdyYXBwZXI6OmRlc3Ryb3lPYmplY3QoYm9vbCBsYXN0Q2FsbCkKKyB7Cisg ICAgIEhlYXA6OlFPYmplY3RXcmFwcGVyICpoID0gZCgpOworLSAgICBpZiAoIWgtPmludGVybmFs Q2xhc3MpCistICAgICAgICByZXR1cm47IC8vIGRlc3Ryb3lPYmplY3QgYWxyZWFkeSBnb3QgY2Fs bGVkCisrICAgIFFfQVNTRVJUKGgtPmludGVybmFsQ2xhc3MpOworIAorICAgICBpZiAoaC0+b2Jq ZWN0KCkpIHsKKyAgICAgICAgIFFRbWxEYXRhICpkZGF0YSA9IFFRbWxEYXRhOjpnZXQoaC0+b2Jq ZWN0KCksIGZhbHNlKTsKK0BAIC0xMTc2LDcgKzExNzUsNyBAQCB2b2lkIFFPYmplY3RXcmFwcGVy OjpkZXN0cm95T2JqZWN0KGJvb2wgbGFzdENhbGwpCisgICAgICAgICB9CisgICAgIH0KKyAKKy0g ICAgaC0+fkRhdGEoKTsKKysgICAgaC0+ZGVzdHJveSgpOworIH0KKyAKKyAKK2RpZmYgLS1naXQg YS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcCBiL3F0ZGVjbGFyYXRpdmUv c3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwCitpbmRleCAwNmNhZjA0ZTVhLi5kYTE0OWE2N2M0IDEw MDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRtbS5jcHAKKysrKyBi L3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwCitAQCAtOTgxLDcgKzk4MSw3 IEBAIHZvaWQgTWVtb3J5TWFuYWdlcjo6c3dlZXAoYm9vbCBsYXN0U3dlZXAsIENsYXNzRGVzdHJv eVN0YXRzQ2FsbGJhY2sgY2xhc3NDb3VudFB0CisgCisgICAgIGlmIChNdWx0aXBseVdyYXBwZWRR T2JqZWN0TWFwICptdWx0aXBseVdyYXBwZWRRT2JqZWN0cyA9IGVuZ2luZS0+bV9tdWx0aXBseVdy YXBwZWRRT2JqZWN0cykgeworICAgICAgICAgZm9yIChNdWx0aXBseVdyYXBwZWRRT2JqZWN0TWFw OjpJdGVyYXRvciBpdCA9IG11bHRpcGx5V3JhcHBlZFFPYmplY3RzLT5iZWdpbigpOyBpdCAhPSBt dWx0aXBseVdyYXBwZWRRT2JqZWN0cy0+ZW5kKCk7KSB7CistICAgICAgICAgICAgaWYgKCFpdC52 YWx1ZSgpLmlzTnVsbE9yVW5kZWZpbmVkKCkpCisrICAgICAgICAgICAgaWYgKGl0LnZhbHVlKCku aXNOdWxsT3JVbmRlZmluZWQoKSkKKyAgICAgICAgICAgICAgICAgaXQgPSBtdWx0aXBseVdyYXBw ZWRRT2JqZWN0cy0+ZXJhc2UoaXQpOworICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg ICAgKytpdDsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRl bGVnYXRlbW9kZWwuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0 ZW1vZGVsLmNwcAoraW5kZXggMjA3OWE4ZWQwNC4uYTU3N2NiMjM1MSAxMDA2NDQKKy0tLSBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKKysrKyBiL3F0 ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKK0BAIC0zODks NiArMzg5LDEyIEBAIHZvaWQgUVFtbERlbGVnYXRlTW9kZWxQcml2YXRlOjpjb25uZWN0VG9BYnN0 cmFjdEl0ZW1Nb2RlbCgpCisgICAgICAgICAgICAgICAgICAgICAgIHEsICBRUW1sRGVsZWdhdGVN b2RlbCwgU0xPVChfcV9yb3dzUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworICAgICBx bWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKHJvd3NBYm91 dFRvQmVSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgcSwgIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX3Jvd3NBYm91dFRvQmVSZW1vdmVkKFFN b2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3Ry YWN0SXRlbU1vZGVsLCBTSUdOQUwoY29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQp KSwKKysgICAgICAgICAgICAgICAgICAgICAgcSwgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3Ff Y29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIHFtbG9iamVjdF9j b25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoY29sdW1uc1JlbW92ZWQoUU1v ZGVsSW5kZXgsaW50LGludCkpLAorKyAgICAgICAgICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdh dGVNb2RlbCwgU0xPVChfcV9jb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOwor KyAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKGNv bHVtbnNNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLAorKyAgICAg ICAgICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9jb2x1bW5zTW92 ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSk7CisgICAgIHFtbG9iamVj dF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoZGF0YUNoYW5nZWQoUU1v ZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZlY3RvcjxpbnQ+KSksCisgICAgICAgICAgICAgICAgICAg ICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2RhdGFDaGFuZ2VkKFFNb2RlbEluZGV4 LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpKTsKKyAgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWlt LCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChyb3dzTW92ZWQoUU1vZGVsSW5kZXgsaW50LGlu dCxRTW9kZWxJbmRleCxpbnQpKSwKK0BAIC00MTMsNiArNDE5LDEyIEBAIHZvaWQgUVFtbERlbGVn YXRlTW9kZWxQcml2YXRlOjpkaXNjb25uZWN0RnJvbUFic3RyYWN0SXRlbU1vZGVsKCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICBxLCBTTE9UKF9xX3Jvd3NBYm91dFRvQmVSZW1vdmVkKFFNb2Rl bEluZGV4LGludCxpbnQpKSk7CisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwo cm93c1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorICAgICAgICAgICAgICAgICAgICAg ICAgIHEsIFNMT1QoX3Ffcm93c1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAg UU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChjb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5k ZXgsaW50LGludCkpLCBxLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QoX3FfY29sdW1u c0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIFFPYmplY3Q6OmRpc2Nvbm5l Y3QoYWltLCBTSUdOQUwoY29sdW1uc1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLCBxLAor KyAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QoX3FfY29sdW1uc1JlbW92ZWQoUU1vZGVsSW5k ZXgsaW50LGludCkpKTsKKysgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChjb2x1 bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSwgcSwKKysgICAg ICAgICAgICAgICAgICAgICAgICBTTE9UKF9xX2NvbHVtbnNNb3ZlZChRTW9kZWxJbmRleCxpbnQs aW50LFFNb2RlbEluZGV4LGludCkpKTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJ R05BTChkYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9yPGludD4pKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICBxLCBTTE9UKF9xX2RhdGFDaGFuZ2VkKFFNb2RlbElu ZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpKTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVj dChhaW0sIFNJR05BTChyb3dzTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxp bnQpKSwKK0BAIC0xOTczLDYgKzE5ODUsMzggQEAgdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3Ff cm93c01vdmVkKAorICAgICB9CisgfQorIAorK3ZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2Nv bHVtbnNJbnNlcnRlZChjb25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQgYmVnaW4sIGludCBl bmQpCisreworKyAgICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOworKyAgICBRX1VOVVNFRChlbmQp OworKyAgICBpZiAocGFyZW50ID09IGQtPm1fYWRhcHRvck1vZGVsLnJvb3RJbmRleCAmJiBiZWdp biA9PSAwKSB7CisrICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBjaGFuZ2VkCisrICAgICAg ICBfcV9pdGVtc0NoYW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3RvcjxpbnQ+KCkpOworKyAgICB9 CisrfQorKworK3ZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2NvbHVtbnNSZW1vdmVkKGNvbnN0 IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBiZWdpbiwgaW50IGVuZCkKKyt7CisrICAgIFFfRChR UW1sRGVsZWdhdGVNb2RlbCk7CisrICAgIFFfVU5VU0VEKGVuZCk7CisrICAgIGlmIChwYXJlbnQg PT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIGJlZ2luID09IDApIHsKKysgICAgICAg IC8vIG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5nZWQKKysgICAgICAgIF9xX2l0ZW1zQ2hhbmdlZCgw LCBkLT5tX2NvdW50LCBRVmVjdG9yPGludD4oKSk7CisrICAgIH0KKyt9CisrCisrdm9pZCBRUW1s RGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc01vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQs IGludCBzdGFydCwgaW50IGVuZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgUU1vZGVsSW5kZXggJmRlc3RpbmF0aW9uLCBpbnQgY29sdW1uKQorK3sKKysg ICAgUV9EKFFRbWxEZWxlZ2F0ZU1vZGVsKTsKKysgICAgUV9VTlVTRUQoZW5kKTsKKysgICAgaWYg KChwYXJlbnQgPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIHN0YXJ0ID09IDApCisr ICAgICAgICB8fCAoZGVzdGluYXRpb24gPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYm IGNvbHVtbiA9PSAwKSkgeworKyAgICAgICAgLy8gbWFyayBhbGwgaXRlbXMgYXMgY2hhbmdlZAor KyAgICAgICAgX3FfaXRlbXNDaGFuZ2VkKDAsIGQtPm1fY291bnQsIFFWZWN0b3I8aW50PigpKTsK KysgICAgfQorK30KKysKKyB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9kYXRhQ2hhbmdlZChj b25zdCBRTW9kZWxJbmRleCAmYmVnaW4sIGNvbnN0IFFNb2RlbEluZGV4ICZlbmQsIGNvbnN0IFFW ZWN0b3I8aW50PiAmcm9sZXMpCisgeworICAgICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOworZGlm ZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbF9w LmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oCitp bmRleCA4YWFiNGJhZGNhLi5kMTQwYmZiYWFmIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9z cmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaAorQEAgLTE1Miw2ICsxNTIsOSBAQCBw cml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgX3FfaXRlbXNNb3ZlZChpbnQgZnJvbSwgaW50IHRv LCBpbnQgY291bnQpOworICAgICB2b2lkIF9xX21vZGVsUmVzZXQoKTsKKyAgICAgdm9pZCBfcV9y b3dzSW5zZXJ0ZWQoY29uc3QgUU1vZGVsSW5kZXggJixpbnQsaW50KTsKKysgICAgdm9pZCBfcV9j b2x1bW5zSW5zZXJ0ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQpOworKyAgICB2b2lk IF9xX2NvbHVtbnNSZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCwgaW50KTsKKysgICAg dm9pZCBfcV9jb2x1bW5zTW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQsIGNvbnN0 IFFNb2RlbEluZGV4ICYsIGludCk7CisgICAgIHZvaWQgX3Ffcm93c0Fib3V0VG9CZVJlbW92ZWQo Y29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwgaW50IGJlZ2luLCBpbnQgZW5kKTsKKyAgICAgdm9p ZCBfcV9yb3dzUmVtb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLGludCxpbnQpOworICAgICB2b2lk IF9xX3Jvd3NNb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCwgY29uc3QgUU1vZGVs SW5kZXggJiwgaW50KTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nl c3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tpdGVtLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwCitpbmRleCA4NTcxOWZkYzgwLi43 OGUyYWIzMDJjIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJs ZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwCitAQCAtNDYsNiArNDYsNyBAQAor ICNpbmNsdWRlICJRdFF1aWNrL3ByaXZhdGUvcXF1aWNrdGV4dGlucHV0X3AuaCIKKyAjaW5jbHVk ZSAiUXRRdWljay9wcml2YXRlL3FxdWlja2FjY2Vzc2libGVhdHRhY2hlZF9wLmgiCisgI2luY2x1 ZGUgIlF0UXVpY2svcXF1aWNrdGV4dGRvY3VtZW50LmgiCisrI2luY2x1ZGUgIlF0UXVpY2svcXF1 aWNrcmVuZGVyY29udHJvbC5oIgorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorICNpZiBRVF9DT05G SUcoYWNjZXNzaWJpbGl0eSkKK0BAIC01Nyw3ICs1OCwxOSBAQCBRQWNjZXNzaWJsZVF1aWNrSXRl bTo6UUFjY2Vzc2libGVRdWlja0l0ZW0oUVF1aWNrSXRlbSAqaXRlbSkKKyAKKyBRV2luZG93ICpR QWNjZXNzaWJsZVF1aWNrSXRlbTo6d2luZG93KCkgY29uc3QKKyB7CistICAgIHJldHVybiBpdGVt KCktPndpbmRvdygpOworKyAgICBRUXVpY2tXaW5kb3cgKndpbmRvdyA9IGl0ZW0oKS0+d2luZG93 KCk7CisrCisrICAgIC8vIEZvciBRUXVpY2tXaWRnZXQgdGhlIGFib3ZlIHdpbmRvdyB3aWxsIGJl IHRoZSBvZmZzY3JlZW4gUVF1aWNrV2luZG93LAorKyAgICAvLyB3aGljaCBpcyBub3QgYSBwYXJ0 IG9mIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuIERldGVjdCB0aGlzIGNhc2UgYW5kCisrICAgIC8v IHJldHVybiB0aGUgd2luZG93IGZvciB0aGUgUVF1aWNrV2lkZ2V0IGluc3RlYWQuCisrICAgIGlm ICh3aW5kb3cgJiYgIXdpbmRvdy0+aGFuZGxlKCkpIHsKKysgICAgICAgIGlmIChRUXVpY2tSZW5k ZXJDb250cm9sICpyZW5kZXJDb250cm9sID0gUVF1aWNrV2luZG93UHJpdmF0ZTo6Z2V0KHdpbmRv dyktPnJlbmRlckNvbnRyb2wpIHsKKysgICAgICAgICAgICBpZiAoUVdpbmRvdyAqcmVuZGVyV2lu ZG93ID0gcmVuZGVyQ29udHJvbC0+cmVuZGVyV2luZG93KG51bGxwdHIpKQorKyAgICAgICAgICAg ICAgICByZXR1cm4gcmVuZGVyV2luZG93OworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHJl dHVybiB3aW5kb3c7CisgfQorIAorIGludCBRQWNjZXNzaWJsZVF1aWNrSXRlbTo6Y2hpbGRDb3Vu dCgpIGNvbnN0CitAQCAtMTEzLDE5ICsxMjYsMTUgQEAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFB Y2Nlc3NpYmxlUXVpY2tJdGVtOjpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3QKKyBRQWNjZXNz aWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja0l0ZW06OnBhcmVudCgpIGNvbnN0Cisgewor ICAgICBRUXVpY2tJdGVtICpwYXJlbnQgPSBpdGVtKCktPnBhcmVudEl0ZW0oKTsKKy0gICAgUVF1 aWNrV2luZG93ICp3aW5kb3cgPSBpdGVtKCktPndpbmRvdygpOworLSAgICBRUXVpY2tJdGVtICpj aSA9IHdpbmRvdyA/IHdpbmRvdy0+Y29udGVudEl0ZW0oKSA6IG51bGxwdHI7CisrICAgIFFRdWlj a1dpbmRvdyAqaXRlbVdpbmRvdyA9IGl0ZW0oKS0+d2luZG93KCk7CisrICAgIFFRdWlja0l0ZW0g KmNpID0gaXRlbVdpbmRvdyA/IGl0ZW1XaW5kb3ctPmNvbnRlbnRJdGVtKCkgOiBudWxscHRyOwor ICAgICB3aGlsZSAocGFyZW50ICYmICFRUXVpY2tJdGVtUHJpdmF0ZTo6Z2V0KHBhcmVudCktPmlz QWNjZXNzaWJsZSAmJiBwYXJlbnQgIT0gY2kpCisgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBh cmVudEl0ZW0oKTsKKyAKKyAgICAgaWYgKHBhcmVudCkgeworICAgICAgICAgaWYgKHBhcmVudCA9 PSBjaSkgeworLSAgICAgICAgICAgIC8vIEp1bXAgb3V0IHRvIHRoZSBzY2VuZSB3aWRnZXQgaWYg dGhlIHBhcmVudCBpcyB0aGUgcm9vdCBpdGVtLgorLSAgICAgICAgICAgIC8vIFRoZXJlIGFyZSB0 d28gcm9vdCBpdGVtcywgUVF1aWNrV2luZG93Ojpyb290SXRlbSBhbmQKKy0gICAgICAgICAgICAv LyBRUXVpY2tWaWV3OjpkZWNsYXJhdGl2ZVJvb3QuIFRoZSBmb3JtZXIgaXMgdGhlIHRydWUgcm9v dCBpdGVtLAorLSAgICAgICAgICAgIC8vIGJ1dCBpcyBub3QgYSBwYXJ0IG9mIHRoZSBhY2Nlc3Np YmlsaXR5IHRyZWUuIENoZWNrIGlmIHdlIGhpdAorLSAgICAgICAgICAgIC8vIGl0IGhlcmUgYW5k IHJldHVybiBhbiBpbnRlcmZhY2UgZm9yIHRoZSBzY2VuZSBpbnN0ZWFkLgorLSAgICAgICAgICAg IHJldHVybiBRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKHdpbmRvdyk7Cisr ICAgICAgICAgICAgLy8gSnVtcCBvdXQgdG8gdGhlIHdpbmRvdyBpZiB0aGUgcGFyZW50IGlzIHRo ZSByb290IGl0ZW0KKysgICAgICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNz aWJsZUludGVyZmFjZSh3aW5kb3coKSk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg IHdoaWxlIChwYXJlbnQgJiYgIXBhcmVudC0+ZF9mdW5jKCktPmlzQWNjZXNzaWJsZSkKKyAgICAg ICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRJdGVtKCk7CitAQCAtMTg4LDcgKzE5 Nyw3IEBAIFFBY2Nlc3NpYmxlOjpTdGF0ZSBRQWNjZXNzaWJsZVF1aWNrSXRlbTo6c3RhdGUoKSBj b25zdAorICAgICBRUmVjdCB2aWV3UmVjdF8gPSB2aWV3UmVjdCgpOworICAgICBRUmVjdCBpdGVt UmVjdCA9IHJlY3QoKTsKKyAKKy0gICAgaWYgKHZpZXdSZWN0Xy5pc051bGwoKSB8fCBpdGVtUmVj dC5pc051bGwoKSB8fCAhaXRlbSgpLT53aW5kb3coKSB8fCAhaXRlbSgpLT53aW5kb3coKS0+aXNW aXNpYmxlKCkgfHwhaXRlbSgpLT5pc1Zpc2libGUoKSB8fCBxRnV6enlJc051bGwoaXRlbSgpLT5v cGFjaXR5KCkpKQorKyAgICBpZiAodmlld1JlY3RfLmlzTnVsbCgpIHx8IGl0ZW1SZWN0LmlzTnVs bCgpIHx8ICF3aW5kb3coKSB8fCAhd2luZG93KCktPmlzVmlzaWJsZSgpIHx8IWl0ZW0oKS0+aXNW aXNpYmxlKCkgfHwgcUZ1enp5SXNOdWxsKGl0ZW0oKS0+b3BhY2l0eSgpKSkKKyAgICAgICAgIHN0 YXRlLmludmlzaWJsZSA9IHRydWU7CisgICAgIGlmICghdmlld1JlY3RfLmludGVyc2VjdHMoaXRl bVJlY3QpKQorICAgICAgICAgc3RhdGUub2Zmc2NyZWVuID0gdHJ1ZTsKK0BAIC0yMDEsNiArMjEw LDEwIEBAIFFBY2Nlc3NpYmxlOjpTdGF0ZSBRQWNjZXNzaWJsZVF1aWNrSXRlbTo6c3RhdGUoKSBj b25zdAorICAgICBpZiAocm9sZSgpID09IFFBY2Nlc3NpYmxlOjpFZGl0YWJsZVRleHQpCisgICAg ICAgICBpZiAoYXV0byB0aSA9IHFvYmplY3RfY2FzdDxRUXVpY2tUZXh0SW5wdXQgKj4oaXRlbSgp KSkKKyAgICAgICAgICAgICBzdGF0ZS5wYXNzd29yZEVkaXQgPSB0aS0+ZWNob01vZGUoKSAhPSBR UXVpY2tUZXh0SW5wdXQ6Ok5vcm1hbDsKKysgICAgaWYgKCFpdGVtKCktPmlzRW5hYmxlZCgpKSB7 CisrICAgICAgICBzdGF0ZS5mb2N1c2FibGUgPSBmYWxzZTsKKysgICAgICAgIHN0YXRlLmRpc2Fi bGVkID0gdHJ1ZTsKKysgICAgfQorICAgICByZXR1cm4gc3RhdGU7CisgfQorIAorZGlmZiAtLWdp dCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3Zp ZXdfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1 aWNrdmlld19wLmgKK2luZGV4IDM5ZmZjYWYzOWMuLjhiYWEwMTMzMGMgMTAwNjQ0CistLS0gYS9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3Au aAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1 aWNrdmlld19wLmgKK0BAIC01OCw3ICs1OCw3IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorICNp ZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKyAKKy1jbGFzcyBRQWNjZXNzaWJsZVF1aWNrV2lu ZG93IDogcHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0CisrY2xhc3MgUV9RVUlDS19FWFBPUlQgUUFj Y2Vzc2libGVRdWlja1dpbmRvdyA6IHB1YmxpYyBRQWNjZXNzaWJsZU9iamVjdAorIHsKKyBwdWJs aWM6CisgICAgIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3coUVF1aWNrV2luZG93ICpvYmplY3QpOwor ZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2RyYWcuY3Bw IGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAKK2luZGV4IDgz MjFmY2ZlZWQuLjM4MzA3OGIzYjkgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj ay9pdGVtcy9xcXVpY2tkcmFnLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRl bXMvcXF1aWNrZHJhZy5jcHAKK0BAIC00ODEsNyArNDgxLDkgQEAgdm9pZCBRUXVpY2tEcmFnQXR0 YWNoZWQ6OnNldEtleXMoY29uc3QgUVN0cmluZ0xpc3QgJmtleXMpCisgICAgIFxxbWxhdHRhY2hl ZHByb3BlcnR5IHN0cmluZ2xpc3QgUXRRdWljazo6RHJhZzo6bWltZURhdGEKKyAgICAgXHNpbmNl IDUuMgorIAorLSAgICBUaGlzIHByb3BlcnR5IGhvbGRzIGEgbWFwIG9mIG1pbWVEYXRhIHRoYXQg aXMgdXNlZCBkdXJpbmcgc3RhcnREcmFnLgorKyAgICBUaGlzIHByb3BlcnR5IGhvbGRzIGEgbWFw IGZyb20gbWltZSB0eXBlIHRvIGRhdGEgdGhhdCBpcyB1c2VkIGR1cmluZyBzdGFydERyYWcuCisr ICAgIFRoZSBtaW1lIGRhdGEgbmVlZHMgdG8gYmUgYSBcYyBzdHJpbmcsIG9yIGFuIFxjIEFycmF5 QnVmZmVyIHdpdGggdGhlIGRhdGEgZW5jb2RlZAorKyAgICBhY2NvcmRpbmcgdG8gdGhlIG1pbWUg dHlwZS4KKyAqLworIAorIFFWYXJpYW50TWFwIFFRdWlja0RyYWdBdHRhY2hlZDo6bWltZURhdGEo KSBjb25zdAorQEAgLTc2Niw4ICs3NjgsMTIgQEAgUXQ6OkRyb3BBY3Rpb24gUVF1aWNrRHJhZ0F0 dGFjaGVkUHJpdmF0ZTo6c3RhcnREcmFnKFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3QKKyAg ICAgUURyYWcgKmRyYWcgPSBuZXcgUURyYWcoc291cmNlID8gc291cmNlIDogcSk7CisgICAgIFFN aW1lRGF0YSAqbWltZURhdGEgPSBuZXcgUU1pbWVEYXRhKCk7CisgCistICAgIGZvciAoYXV0byBp dCA9IGV4dGVybmFsTWltZURhdGEuY2JlZ2luKCksIGVuZCA9IGV4dGVybmFsTWltZURhdGEuY2Vu ZCgpOyBpdCAhPSBlbmQ7ICsraXQpCistICAgICAgICBtaW1lRGF0YS0+c2V0RGF0YShpdC5rZXko KSwgaXQudmFsdWUoKS50b1N0cmluZygpLnRvVXRmOCgpKTsKKysgICAgZm9yIChhdXRvIGl0ID0g ZXh0ZXJuYWxNaW1lRGF0YS5jYmVnaW4oKSwgZW5kID0gZXh0ZXJuYWxNaW1lRGF0YS5jZW5kKCk7 IGl0ICE9IGVuZDsgKytpdCkgeworKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PFFNZXRhVHlwZTo6 VHlwZT4oaXQudmFsdWUoKS50eXBlKCkpID09IFFNZXRhVHlwZTo6UUJ5dGVBcnJheSkKKysgICAg ICAgICAgICBtaW1lRGF0YS0+c2V0RGF0YShpdC5rZXkoKSwgaXQudmFsdWUoKS50b0J5dGVBcnJh eSgpKTsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBtaW1lRGF0YS0+c2V0RGF0YShpdC5r ZXkoKSwgaXQudmFsdWUoKS50b1N0cmluZygpLnRvVXRmOCgpKTsKKysgICAgfQorIAorICAgICBk cmFnLT5zZXRNaW1lRGF0YShtaW1lRGF0YSk7CisgICAgIGlmIChwaXhtYXBMb2FkZXIuaXNSZWFk eSgpKSB7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNr aXRlbS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtLmNwcAor aW5kZXggNzVmMTQ1NzgxNi4uZGVjMGFlMTlhZSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9x dWljay9pdGVtcy9xcXVpY2tpdGVtLmNwcAorQEAgLTU5LDYgKzU5LDcgQEAKKyAjaW5jbHVkZSA8 UXRDb3JlL3ByaXZhdGUvcW51bWVyaWNfcC5oPgorICNpbmNsdWRlIDxRdEd1aS9xcGEvcXBsYXRm b3JtdGhlbWUuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3Fsb2dnaW5nY2F0ZWdvcnkuaD4KKysjaW5j bHVkZSA8UXRDb3JlL3ByaXZhdGUvcWR1cGxpY2F0ZXRyYWNrZXJfcC5oPgorIAorICNpbmNsdWRl IDxwcml2YXRlL3FxbWxnbG9iYWxfcC5oPgorICNpbmNsdWRlIDxwcml2YXRlL3FxbWxlbmdpbmVf cC5oPgorQEAgLTIzMjYsNiArMjMyNyw3IEBAIFFRdWlja0l0ZW06OlFRdWlja0l0ZW0oUVF1aWNr SXRlbVByaXZhdGUgJmRkLCBRUXVpY2tJdGVtICpwYXJlbnQpCisgUVF1aWNrSXRlbTo6flFRdWlj a0l0ZW0oKQorIHsKKyAgICAgUV9EKFFRdWlja0l0ZW0pOworKyAgICBkLT5pbkRlc3RydWN0b3Ig PSB0cnVlOworIAorICAgICBpZiAoZC0+d2luZG93UmVmQ291bnQgPiAxKQorICAgICAgICAgZC0+ d2luZG93UmVmQ291bnQgPSAxOyAvLyBNYWtlIHN1cmUgd2luZG93IGlzIHNldCB0byBudWxsIGlu IG5leHQgY2FsbCB0byBkZXJlZldpbmRvdygpLgorQEAgLTI1MjYsNiArMjUyOCw3IEBAIFFRdWlj a0l0ZW0qIFFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW4oUVF1 aWNrSXRlbSAqaXRlbSwgYm9vCisgICAgIFFRdWlja0l0ZW0gKmN1cnJlbnQgPSBpdGVtOworICAg ICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1J blRhYkZvY3VzQ2hhaW46IHN0YXJ0SXRlbToiIDw8IHN0YXJ0SXRlbTsKKyAgICAgcUNEZWJ1ZyhE QkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0No YWluOiBmaXJzdEZyb21JdGVtOiIgPDwgZmlyc3RGcm9tSXRlbTsKKysgICAgUUR1cGxpY2F0ZVRy YWNrZXI8UVF1aWNrSXRlbSAqPiBjeWNsZURldGVjdG9yOworICAgICBkbyB7CisgICAgICAgICBx Q0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRh YkZvY3VzQ2hhaW46IGN1cnJlbnQ6IiA8PCBjdXJyZW50OworICAgICAgICAgcUNEZWJ1ZyhEQkdf Rk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWlu OiBmcm9tOiIgPDwgZnJvbTsKK0BAIC0yNTkyLDcgKzI1OTUsMTAgQEAgUVF1aWNrSXRlbSogUVF1 aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbihRUXVpY2tJdGVtICpp dGVtLCBib28KKyAgICAgICAgIC8vIHRyYXZlcnNlZCBhbGwgb2YgdGhlIGNoYWluIChieSBjb21w YXJlIHRoZSBbY3VycmVudF0gaXRlbSB3aXRoIFtzdGFydEl0ZW1dKQorICAgICAgICAgLy8gU2lu Y2UgdGhlIFtzdGFydEl0ZW1dIG1pZ2h0IGJlIHByb21vdGVkIHRvIGl0cyBwYXJlbnQgaWYgaXQg aXMgaW52aXNpYmxlLAorICAgICAgICAgLy8gd2Ugc3RpbGwgaGF2ZSB0byBjaGVjayBbY3VycmVu dF0gaXRlbSB3aXRoIG9yaWdpbmFsIHN0YXJ0IGl0ZW0KKy0gICAgICAgIGlmICgoY3VycmVudCA9 PSBzdGFydEl0ZW0gfHwgY3VycmVudCA9PSBvcmlnaW5hbFN0YXJ0SXRlbSkgJiYgZnJvbSA9PSBm aXJzdEZyb21JdGVtKSB7CisrICAgICAgICAvLyBXZSBtaWdodCBhbHNvIHJ1biBpbnRvIGEgY3lj bGUgYmVmb3JlIHdlIHJlYWNoIGZpcnN0RnJvbUl0ZW0gYWdhaW4KKysgICAgICAgIC8vIGJ1dCBu b3RlIHRoYXQgd2UgaGF2ZSB0byBpZ25vcmUgY3VycmVudCBpZiB3ZSBhcmUgbWVhbnQgdG8gc2tp cCBpdAorKyAgICAgICAgaWYgKCgoY3VycmVudCA9PSBzdGFydEl0ZW0gfHwgY3VycmVudCA9PSBv cmlnaW5hbFN0YXJ0SXRlbSkgJiYgZnJvbSA9PSBmaXJzdEZyb21JdGVtKSB8fAorKyAgICAgICAg ICAgICAgICAoIXNraXAgJiYgY3ljbGVEZXRlY3Rvci5oYXNTZWVuKGN1cnJlbnQpKSkgeworICAg ICAgICAgICAgIC8vIHdyYXBwZWQgYXJvdW5kLCBhdm9pZCBlbmRsZXNzIGxvb3BzCisgICAgICAg ICAgICAgaWYgKGl0ZW0gPT0gY29udGVudEl0ZW0pIHsKKyAgICAgICAgICAgICAgICAgcUNEZWJ1 ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1 c0NoYWluOiBsb29wZWQsIHJldHVybiBjb250ZW50SXRlbSI7CitAQCAtMjY4OSw5ICsyNjk1LDgg QEAgdm9pZCBRUXVpY2tJdGVtOjpzZXRQYXJlbnRJdGVtKFFRdWlja0l0ZW0gKnBhcmVudEl0ZW0p CisgCisgICAgICAgICBjb25zdCBib29sIHdhc1Zpc2libGUgPSBpc1Zpc2libGUoKTsKKyAgICAg ICAgIG9wLT5yZW1vdmVDaGlsZCh0aGlzKTsKKy0gICAgICAgIGlmICh3YXNWaXNpYmxlKSB7Cisr ICAgICAgICBpZiAod2FzVmlzaWJsZSAmJiAhb3AtPmluRGVzdHJ1Y3RvcikKKyAgICAgICAgICAg ICBlbWl0IG9sZFBhcmVudEl0ZW0tPnZpc2libGVDaGlsZHJlbkNoYW5nZWQoKTsKKy0gICAgICAg IH0KKyAgICAgfSBlbHNlIGlmIChkLT53aW5kb3cpIHsKKyAgICAgICAgIFFRdWlja1dpbmRvd1By aXZhdGU6OmdldChkLT53aW5kb3cpLT5wYXJlbnRsZXNzSXRlbXMucmVtb3ZlKHRoaXMpOworICAg ICB9CitAQCAtMjc2OCw4ICsyNzczLDkgQEAgdm9pZCBRUXVpY2tJdGVtOjpzZXRQYXJlbnRJdGVt KFFRdWlja0l0ZW0gKnBhcmVudEl0ZW0pCisgCisgICAgIGQtPml0ZW1DaGFuZ2UoSXRlbVBhcmVu dEhhc0NoYW5nZWQsIGQtPnBhcmVudEl0ZW0pOworIAorLSAgICBlbWl0IHBhcmVudENoYW5nZWQo ZC0+cGFyZW50SXRlbSk7CistICAgIGlmIChpc1Zpc2libGUoKSAmJiBkLT5wYXJlbnRJdGVtKQor KyAgICBpZiAoIWQtPmluRGVzdHJ1Y3RvcikKKysgICAgICAgIGVtaXQgcGFyZW50Q2hhbmdlZChk LT5wYXJlbnRJdGVtKTsKKysgICAgaWYgKGlzVmlzaWJsZSgpICYmIGQtPnBhcmVudEl0ZW0gJiYg IVFRdWlja0l0ZW1Qcml2YXRlOjpnZXQoZC0+cGFyZW50SXRlbSktPmluRGVzdHJ1Y3RvcikKKyAg ICAgICAgIGVtaXQgZC0+cGFyZW50SXRlbS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworIH0K KyAKK0BAIC0yOTY1LDcgKzI5NzEsOCBAQCB2b2lkIFFRdWlja0l0ZW1Qcml2YXRlOjpyZW1vdmVD aGlsZChRUXVpY2tJdGVtICpjaGlsZCkKKyAKKyAgICAgaXRlbUNoYW5nZShRUXVpY2tJdGVtOjpJ dGVtQ2hpbGRSZW1vdmVkQ2hhbmdlLCBjaGlsZCk7CisgCistICAgIGVtaXQgcS0+Y2hpbGRyZW5D aGFuZ2VkKCk7CisrICAgIGlmICghaW5EZXN0cnVjdG9yKQorKyAgICAgICAgZW1pdCBxLT5jaGls ZHJlbkNoYW5nZWQoKTsKKyB9CisgCisgdm9pZCBRUXVpY2tJdGVtUHJpdmF0ZTo6cmVmV2luZG93 KFFRdWlja1dpbmRvdyAqYykKK0BAIC0zMTk0LDYgKzMyMDEsNyBAQCBRUXVpY2tJdGVtUHJpdmF0 ZTo6UVF1aWNrSXRlbVByaXZhdGUoKQorICAgICAsIHRvdWNoRW5hYmxlZChmYWxzZSkKKyAjZW5k aWYKKyAgICAgLCBoYXNDdXJzb3JIYW5kbGVyKGZhbHNlKQorKyAgICAsIGluRGVzdHJ1Y3Rvcihm YWxzZSkKKyAgICAgLCBkaXJ0eUF0dHJpYnV0ZXMoMCkKKyAgICAgLCBuZXh0RGlydHlJdGVtKG51 bGxwdHIpCisgICAgICwgcHJldkRpcnR5SXRlbShudWxscHRyKQorQEAgLTUxMjAsNiArNTEyOCwx MyBAQCB2b2lkIFFRdWlja0l0ZW06OmNvbXBvbmVudENvbXBsZXRlKCkKKyAgICAgICAgIGQtPmFk ZFRvRGlydHlMaXN0KCk7CisgICAgICAgICBRUXVpY2tXaW5kb3dQcml2YXRlOjpnZXQoZC0+d2lu ZG93KS0+ZGlydHlJdGVtKHRoaXMpOworICAgICB9CisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3Np YmlsaXR5KQorKyAgICBpZiAoZC0+aXNBY2Nlc3NpYmxlICYmIGQtPmVmZmVjdGl2ZVZpc2libGUp IHsKKysgICAgICAgIFFBY2Nlc3NpYmxlRXZlbnQgZXYodGhpcywgUUFjY2Vzc2libGU6Ok9iamVj dFNob3cpOworKyAgICAgICAgUUFjY2Vzc2libGU6OnVwZGF0ZUFjY2Vzc2liaWxpdHkoJmV2KTsK KysgICAgfQorKyNlbmRpZgorIH0KKyAKKyBRUXVpY2tTdGF0ZUdyb3VwICpRUXVpY2tJdGVtUHJp dmF0ZTo6X3N0YXRlcygpCitAQCAtNjEwNiw5ICs2MTIxLDExIEBAIGJvb2wgUVF1aWNrSXRlbVBy aXZhdGU6OnNldEVmZmVjdGl2ZVZpc2libGVSZWN1cihib29sIG5ld0VmZmVjdGl2ZVZpc2libGUp CisgICAgICAgICBRQWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0eSgmZXYpOworICAgICB9 CisgI2VuZGlmCistICAgIGVtaXQgcS0+dmlzaWJsZUNoYW5nZWQoKTsKKy0gICAgaWYgKGNoaWxk VmlzaWJpbGl0eUNoYW5nZWQpCistICAgICAgICBlbWl0IHEtPnZpc2libGVDaGlsZHJlbkNoYW5n ZWQoKTsKKysgICAgaWYgKCFpbkRlc3RydWN0b3IpIHsKKysgICAgICAgIGVtaXQgcS0+dmlzaWJs ZUNoYW5nZWQoKTsKKysgICAgICAgIGlmIChjaGlsZFZpc2liaWxpdHlDaGFuZ2VkKQorKyAgICAg ICAgICAgIGVtaXQgcS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworKyAgICB9CisgCisgICAg IHJldHVybiB0cnVlOyAgICAvLyBlZmZlY3RpdmUgdmlzaWJpbGl0eSBESUQgY2hhbmdlCisgfQor QEAgLTYxNTcsNiArNjE3NCwxNSBAQCB2b2lkIFFRdWlja0l0ZW1Qcml2YXRlOjpzZXRFZmZlY3Rp dmVFbmFibGVSZWN1cihRUXVpY2tJdGVtICpzY29wZSwgYm9vbCBuZXdFZmZlYworICAgICB9Cisg CisgICAgIGl0ZW1DaGFuZ2UoUVF1aWNrSXRlbTo6SXRlbUVuYWJsZWRIYXNDaGFuZ2VkLCBlZmZl Y3RpdmVFbmFibGUpOworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgaWYgKGlz QWNjZXNzaWJsZSkgeworKyAgICAgICAgUUFjY2Vzc2libGU6OlN0YXRlIGNoYW5nZWRTdGF0ZTsK KysgICAgICAgIGNoYW5nZWRTdGF0ZS5kaXNhYmxlZCA9IHRydWU7CisrICAgICAgICBjaGFuZ2Vk U3RhdGUuZm9jdXNhYmxlID0gdHJ1ZTsKKysgICAgICAgIFFBY2Nlc3NpYmxlU3RhdGVDaGFuZ2VF dmVudCBldihxLCBjaGFuZ2VkU3RhdGUpOworKyAgICAgICAgUUFjY2Vzc2libGU6OnVwZGF0ZUFj Y2Vzc2liaWxpdHkoJmV2KTsKKysgICAgfQorKyNlbmRpZgorICAgICBlbWl0IHEtPmVuYWJsZWRD aGFuZ2VkKCk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0 ZW1zL3FxdWlja2l0ZW1fcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNr aXRlbV9wLmgKK2luZGV4IDg0MWQ5MWJiNDAuLmFkZThmYjYxZjIgMTAwNjQ0CistLS0gYS9xdGRl Y2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaAorKysrIGIvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbV9wLmgKK0BAIC00NzIsNiArNDcyLDcgQEAg cHVibGljOgorICAgICBib29sIHJlcGxheWluZ1ByZXNzRXZlbnQ6MTsKKyAgICAgYm9vbCB0b3Vj aEVuYWJsZWQ6MTsKKyAgICAgYm9vbCBoYXNDdXJzb3JIYW5kbGVyOjE7CisrICAgIHF1aW50MzIg aW5EZXN0cnVjdG9yOjE7IC8vIGhhcyBlbnRlcmVkIH5RUXVpY2tJdGVtCisgCisgICAgIGVudW0g RGlydHlUeXBlIHsKKyAgICAgICAgIFRyYW5zZm9ybU9yaWdpbiAgICAgICAgID0gMHgwMDAwMDAw MSwKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVt dmlldy5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtdmlldy5j cHAKK2luZGV4IDAxMGEwMTUyZTEuLmY4YWQxNjhhMTcgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0 aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtdmlldy5jcHAKKysrKyBiL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcAorQEAgLTE3ODUsNyArMTc4NSw3 IEBAIHZvaWQgUVF1aWNrSXRlbVZpZXdQcml2YXRlOjpyZWZpbGwocXJlYWwgZnJvbSwgcXJlYWwg dG8pCisgCisgICAgIGRvIHsKKyAgICAgICAgIGJ1ZmZlclBhdXNlLnN0b3AoKTsKKy0gICAgICAg IGlmIChjdXJyZW50Q2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpIHx8IGJ1ZmZlcmVkQ2hhbmdl cy5oYXNQZW5kaW5nQ2hhbmdlcygpKSB7CisrICAgICAgICBpZiAoY3VycmVudENoYW5nZXMuaGFz UGVuZGluZ0NoYW5nZXMoKSB8fCBidWZmZXJlZENoYW5nZXMuaGFzUGVuZGluZ0NoYW5nZXMoKSB8 fCBjdXJyZW50Q2hhbmdlcy5hY3RpdmUpIHsKKyAgICAgICAgICAgICBjdXJyZW50Q2hhbmdlcy5y ZXNldCgpOworICAgICAgICAgICAgIGJ1ZmZlcmVkQ2hhbmdlcy5yZXNldCgpOworICAgICAgICAg ICAgIHJlbGVhc2VWaXNpYmxlSXRlbXMocmV1c2FibGVGbGFnKTsKK2RpZmYgLS1naXQgYS9xdGRl Y2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmggYi9xdGRlY2xh cmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmgKK2luZGV4IGZiYTM4 M2UyNjguLjBkNjM2MTg2MjIgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9p dGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaAorQEAgLTYxLDcgKzYxLDYgQEAgUVRfQkVHSU5f TkFNRVNQQUNFCisgCisgY2xhc3MgUVF1aWNrTW91c2VFdmVudDsKKyBjbGFzcyBRUXVpY2tNb3Vz ZUFyZWE7CistY2xhc3MgUVF1aWNrUG9pbnRlck1hc2s7CisgY2xhc3MgUVF1aWNrTW91c2VBcmVh UHJpdmF0ZSA6IHB1YmxpYyBRUXVpY2tJdGVtUHJpdmF0ZQorIHsKKyAgICAgUV9ERUNMQVJFX1BV QkxJQyhRUXVpY2tNb3VzZUFyZWEpCitAQCAtMTAwLDcgKzk5LDYgQEAgcHVibGljOgorICNpZiBR VF9DT05GSUcocXVpY2tfZHJhZ2FuZGRyb3ApCisgICAgIFFRdWlja0RyYWcgKmRyYWc7CisgI2Vu ZGlmCistICAgIFFQb2ludGVyPFFRdWlja1BvaW50ZXJNYXNrPiBtYXNrOworICAgICBRUG9pbnRG IHN0YXJ0U2NlbmU7CisgICAgIFFQb2ludEYgdGFyZ2V0U3RhcnRQb3M7CisgICAgIFFQb2ludEYg bGFzdFBvczsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVp Y2t0ZXh0LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja3RleHQuY3Bw CitpbmRleCA2MjMwMTg2OTMzLi5lODIzY2ExMDk1IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrL2l0ZW1zL3FxdWlja3RleHQuY3BwCitAQCAtMjE2OCw3ICsyMTY4LDcgQEAgdm9pZCBR UXVpY2tUZXh0OjpyZXNldE1heGltdW1MaW5lQ291bnQoKQorICAgICA8aW1nIHNyYz0iIiBhbGln bj0idG9wLG1pZGRsZSxib3R0b20iIHdpZHRoPSIiIGhlaWdodD0iIj4gLSBpbmxpbmUgaW1hZ2Vz CisgICAgIDxvbCB0eXBlPSIiPiwgPHVsIHR5cGU9IiI+IGFuZCA8bGk+IC0gb3JkZXJlZCBhbmQg dW5vcmRlcmVkIGxpc3RzCisgICAgIDxwcmU+PC9wcmU+IC0gcHJlZm9ybWF0dGVkCistICAgICZn dDsgJmx0OyAmYW1wOworKyAgICAmZ3Q7ICZsdDsgJmFtcDsgJnF1b3Q7ICZuYnNwOyAmYXBvczsK KyAgICAgXGVuZGNvZGUKKyAKKyAgICAgXGMgVGV4dC5TdHlsZWRUZXh0IHBhcnNlciBpcyBzdHJp Y3QsIHJlcXVpcmluZyB0YWdzIHRvIGJlIGNvcnJlY3RseSBuZXN0ZWQuCitkaWZmIC0tZ2l0IGEv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxkZ2x5 cGhjYWNoZS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9zY2VuZWdyYXBoL3FzZ3JoaWRp c3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcAoraW5kZXggZWI0ZGIwZjg1ZS4uMjMyNWEyNjY1YiAx MDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhpZGlz dGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9z Y2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcAorQEAgLTQ0Niw3ICs0 NDYsNyBAQCBib29sIFFTR1JoaURpc3RhbmNlRmllbGRHbHlwaENhY2hlOjpsb2FkUHJlZ2VuZXJh dGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQgJmZvbnQpCisgCisgICAgICAgICBjb25zdCBjaGFyICp0 ZXh0dXJlUmVjb3JkID0gYWxsb2NhdG9yRGF0YTsKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgdGV4dHVyZUNvdW50OyArK2ksIHRleHR1cmVSZWNvcmQgKz0gUXRkZjo6VGV4dHVyZVJlY29y ZFNpemUpIHsKKy0gICAgICAgICAgICBpZiAodGV4dHVyZVJlY29yZCArIFF0ZGY6OlRleHR1cmVS ZWNvcmRTaXplID4gcXRkZlRhYmxlRW5kKSB7CisrICAgICAgICAgICAgaWYgKHF0ZGZUYWJsZUVu ZCAtIHRleHR1cmVSZWNvcmQgPCBRdGRmOjpUZXh0dXJlUmVjb3JkU2l6ZSkgeworICAgICAgICAg ICAgICAgICBxV2FybmluZygicXRkZiB0YWJsZSB0b28gc21hbGwgaW4gZm9udCAnJXMnLiIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFibGUoZm9udC5mYW1pbHlOYW1lKCkpKTsK KyAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTQ2Miw3ICs0NjIsNyBAQCBib29s IFFTR1JoaURpc3RhbmNlRmllbGRHbHlwaENhY2hlOjpsb2FkUHJlZ2VuZXJhdGVkQ2FjaGUoY29u c3QgUVJhd0ZvbnQgJmZvbnQpCisgCisgICAgICAgICBjb25zdCBjaGFyICpnbHlwaFJlY29yZCA9 IHRleHR1cmVSZWNvcmQ7CisgICAgICAgICBmb3IgKHF1aW50MzIgaSA9IDA7IGkgPCBnbHlwaENv dW50OyArK2ksIGdseXBoUmVjb3JkICs9IFF0ZGY6OkdseXBoUmVjb3JkU2l6ZSkgeworLSAgICAg ICAgICAgIGlmIChnbHlwaFJlY29yZCArIFF0ZGY6OkdseXBoUmVjb3JkU2l6ZSA+IHF0ZGZUYWJs ZUVuZCkgeworKyAgICAgICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSBnbHlwaFJlY29yZCA8IFF0 ZGY6OiBHbHlwaFJlY29yZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgcVdhcm5pbmcoInF0ZGYg dGFibGUgdG9vIHNtYWxsIGluIGZvbnQgJyVzJy4iLAorICAgICAgICAgICAgICAgICAgICAgICAg ICBxUHJpbnRhYmxlKGZvbnQuZmFtaWx5TmFtZSgpKSk7CisgICAgICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKK0BAIC01MTIsOCArNTEyLDggQEAgYm9vbCBRU0dSaGlEaXN0YW5jZUZpZWxkR2x5 cGhDYWNoZTo6bG9hZFByZWdlbmVyYXRlZENhY2hlKGNvbnN0IFFSYXdGb250ICZmb250KQorIAor ICAgICAgICAgICAgIGludCB3aWR0aCA9IHRleEluZm8tPmFsbG9jYXRlZEFyZWEud2lkdGgoKTsK KyAgICAgICAgICAgICBpbnQgaGVpZ2h0ID0gdGV4SW5mby0+YWxsb2NhdGVkQXJlYS5oZWlnaHQo KTsKKy0gICAgICAgICAgICBxaW50NjQgc2l6ZSA9IHdpZHRoICogaGVpZ2h0OworLSAgICAgICAg ICAgIGlmIChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4odGV4dHVyZURhdGEgKyBzaXpl KSA+IHF0ZGZUYWJsZUVuZCkgeworKyAgICAgICAgICAgIHFpbnQ2NCBzaXplID0gcWludDY0KHdp ZHRoKSAqIGhlaWdodDsKKysgICAgICAgICAgICBpZiAocXRkZlRhYmxlRW5kIC0gcmVpbnRlcnBy ZXRfY2FzdDxjb25zdCBjaGFyICo+KHRleHR1cmVEYXRhKSA8IHNpemUpIHsKKyAgICAgICAgICAg ICAgICAgcVdhcm5pbmcoInF0ZGYgdGFibGUgdG9vIHNtYWxsIGluIGZvbnQgJyVzJy4iLAorICAg ICAgICAgICAgICAgICAgICAgICAgICBxUHJpbnRhYmxlKGZvbnQuZmFtaWx5TmFtZSgpKSk7Cisg ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNwcAoraW5kZXggZDUzMWZjOTIwNS4uYTI1YWY5 MDQxNCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNrc3R5 bGVkdGV4dC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNrc3R5 bGVkdGV4dC5jcHAKK0BAIC01NjQsNiArNTY0LDggQEAgdm9pZCBRUXVpY2tTdHlsZWRUZXh0UHJp dmF0ZTo6cGFyc2VFbnRpdHkoY29uc3QgUUNoYXIgKiZjaCwgY29uc3QgUVN0cmluZyAmdGV4dEkK KyAgICAgICAgICAgICAgICAgdGV4dE91dCArPSBRQ2hhcig2MCk7CisgICAgICAgICAgICAgZWxz ZSBpZiAoZW50aXR5ID09IFFMYXRpbjFTdHJpbmcoImFtcCIpKQorICAgICAgICAgICAgICAgICB0 ZXh0T3V0ICs9IFFDaGFyKDM4KTsKKysgICAgICAgICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxh dGluMVN0cmluZygiYXBvcyIpKQorKyAgICAgICAgICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDM5 KTsKKyAgICAgICAgICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxhdGluMVN0cmluZygicXVvdCIp KQorICAgICAgICAgICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDM0KTsKKyAgICAgICAgICAgICBl bHNlIGlmIChlbnRpdHkgPT0gUUxhdGluMVN0cmluZygibmJzcCIpKQorZGlmZiAtLWdpdCBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0LmNwcCBi L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0LmNw cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjhhMWM5MDE4ODAKKy0t LSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNz aWJsZXF1aWNrd2lkZ2V0LmNwcAorQEAgLTAsMCArMSwxMTAgQEAKKysvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysq KiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioK KysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2Fn ZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5 IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGlj ZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJu YXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBh IHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxp Y2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90 ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29u dGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0 aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisr KiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJ Q0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4g UGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50 cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4w Lmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFs dGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIg b3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3Ig YW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRh dGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK KysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFu ZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmls ZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJl IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJl IG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiog aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRf RU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpbmNsdWRlICJx YWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCIKKysKKysjaW5jbHVkZSAicXF1aWNrd2lkZ2V0X3Au aCIKKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxp dHkpCisrCisrUUFjY2Vzc2libGVRdWlja1dpZGdldDo6UUFjY2Vzc2libGVRdWlja1dpZGdldChR UXVpY2tXaWRnZXQqIHdpZGdldCkKKys6IFFBY2Nlc3NpYmxlV2lkZ2V0KHdpZGdldCkKKyssIG1f YWNjZXNzaWJsZVdpbmRvdyhRUXVpY2tXaWRnZXRQcml2YXRlOjpnZXQod2lkZ2V0KS0+b2Zmc2Ny ZWVuV2luZG93KQorK3sKKysgICAgLy8gTk9URTogbV9hY2Nlc3NpYmxlV2luZG93IGlzIGEgUUFj Y2Vzc2libGVRdWlja1dpbmRvdywgYW5kIG5vdCBhCisrICAgIC8vIFFBY2Nlc3NpYmxlUXVpY2tX aWRnZXRPZmZzY3JlZW5XaW5kb3cgKGRlZmluZWQgYmVsb3cpLiBUaGlzIG1lYW5zCisrICAgIC8v IGl0IHdpbGwgcmV0dXJuIHRoZSBRdWljayBpdGVtIGNoaWxkIGludGVyZmFjZXMsIHdoaWNoIGlz IHdoYXQncyBuZWVkZWQgaGVyZQorKyAgICAvLyAodW5saWtlIFFBY2Nlc3NpYmxlUXVpY2tXaWRn ZXRPZmZzY3JlZW5XaW5kb3csIHdoaWNoIHdpbGwgcmVwb3J0IDAgY2hpbGRyZW4pLgorK30KKysK KytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdldDo6Y2hpbGQoaW50 IGluZGV4KSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5jaGlsZChp bmRleCk7CisrfQorKworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpjaGlsZENvdW50KCkg Y29uc3QKKyt7CisrICAgIHJldHVybiBtX2FjY2Vzc2libGVXaW5kb3cuY2hpbGRDb3VudCgpOwor K30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dpZGdldDo6aW5kZXhPZkNoaWxkKGNvbnN0IFFB Y2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkgY29uc3QKKyt7CisrICAgIHJldHVybiBtX2FjY2Vz c2libGVXaW5kb3cuaW5kZXhPZkNoaWxkKGlmYWNlKTsKKyt9CisrCisrUUFjY2Vzc2libGVJbnRl cmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25z dAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5jaGlsZEF0KHgsIHkpOworK30K KysKKytRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpRQWNjZXNzaWJsZVF1 aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvdyAqd2luZG93KQorKzpRQWNjZXNz aWJsZVF1aWNrV2luZG93KHdpbmRvdykKKyt7CisrCisrfQorKworK1FBY2Nlc3NpYmxlSW50ZXJm YWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpjaGlsZChpbnQgaW5k ZXgpIGNvbnN0CisreworKyAgICBRX1VOVVNFRChpbmRleCk7CisrICAgIHJldHVybiBudWxscHRy OworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6Y2hp bGRDb3VudCgpIGNvbnN0CisreworKyAgICByZXR1cm4gMDsKKyt9CisrCisraW50IFFBY2Nlc3Np YmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNz aWJsZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0CisreworKyAgICBRX1VOVVNFRChpZmFjZSk7Cisr ICAgIHJldHVybiAtMTsKKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxl UXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3Jl ZW5XaW5kb3c6OmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdAorK3sKKysgICAgUV9VTlVTRUQo eCk7CisrICAgIFFfVU5VU0VEKHkpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisrI2Vu ZGlmIC8vIGFjY2Vzc2liaWxpdHkKKysKKytRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5o IGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRf cC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uN2MyYWI5MzBlMAor LS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nl c3NpYmxlcXVpY2t3aWRnZXRfcC5oCitAQCAtMCwwICsxLDk1IEBACisrLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisr KiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoq CisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNh Z2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1h eSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxp Y2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUgb3IsIGFsdGVy bmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCisrKiog YSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBs aWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8v dGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNv bnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoqCisrKiogR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwg dGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nlcgor KyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBM SUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUu IFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bworKyoqIGVuc3VyZSB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVu dHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMu MC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBB bHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3Vy IG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9y IGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQorKyoqIFF0IEZvdW5k YXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl CisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBh bmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZp bGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0aW9uIHRvIGVuc3Vy ZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKKysqKiBi ZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAorKyoq IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorKyoqCisrKiogJFFU X0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjaWZuZGVmIFFB Q0NFU1NJQkxFUVVJQ0tXSURHRVRfSAorKyNkZWZpbmUgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVF9I CisrCisrLy8KKysvLyAgVyBBIFIgTiBJIE4gRworKy8vICAtLS0tLS0tLS0tLS0tCisrLy8KKysv LyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgdGhlIFF0IEFQSS4gIEl0IGV4aXN0cyBwdXJlbHkg YXMgYW4KKysvLyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBUaGlzIGhlYWRlciBmaWxlIG1heSBj aGFuZ2UgZnJvbSB2ZXJzaW9uIHRvCisrLy8gdmVyc2lvbiB3aXRob3V0IG5vdGljZSwgb3IgZXZl biBiZSByZW1vdmVkLgorKy8vCisrLy8gV2UgbWVhbiBpdC4KKysvLworKworKyNpbmNsdWRlICJx cXVpY2t3aWRnZXQuaCIKKysjaW5jbHVkZSA8UXRXaWRnZXRzL3FhY2Nlc3NpYmxld2lkZ2V0Lmg+ CisrCisrI2luY2x1ZGUgPHByaXZhdGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oPgorKworK1FU X0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysKKysv LyBUaGVzZSBjbGFzc2VzIGltcGxlbWVudCB0aGUgUVF1aWNrV2lnZXQgYWNjZXNzaWJpbGl0eSBz d2l0Y2hhcm9vLAorKy8vIHdoZXJlIHRoZSBjaGlsZCBpdGVtcyBvZiB0aGUgUVF1aWNrV2lkZ2V0 T2Zmc2NyZWVuV2luZG93IGFyZSByZXBvcnRlZAorKy8vIGFzIGNoaWxkIGFjY2Vzc2libGUgaW50 ZXJmYWNlcyBvZiB0aGUgUUFjY2Vzc2libGVRdWlja1dpZGdldC4KKytjbGFzcyBRQWNjZXNzaWJs ZVF1aWNrV2lkZ2V0OiBwdWJsaWMgUUFjY2Vzc2libGVXaWRnZXQKKyt7CisrcHVibGljOgorKyAg ICBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KFFRdWlja1dpZGdldCogd2lkZ2V0KTsKKysKKysgICAg UUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkKGludCBpbmRleCkgY29uc3Qgb3ZlcnJpZGU7Cisr ICAgIGludCBjaGlsZENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBpbmRleE9mQ2hp bGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdCBvdmVycmlkZTsKKysg ICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdCBvdmVy cmlkZTsKKysKKytwcml2YXRlOgorKyAgICBRQWNjZXNzaWJsZVF1aWNrV2luZG93IG1fYWNjZXNz aWJsZVdpbmRvdzsKKysgICAgUV9ESVNBQkxFX0NPUFkoUUFjY2Vzc2libGVRdWlja1dpZGdldCkK Kyt9OworKworK2NsYXNzIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6IHB1 YmxpYyBRQWNjZXNzaWJsZVF1aWNrV2luZG93CisreworK3B1YmxpYzoKKysgICAgUUFjY2Vzc2li bGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5kb3cgKndpbmRvdyk7CisrICAg IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZChpbnQgaW5kZXgpIGNvbnN0IG92ZXJyaWRlOwor KyAgICBpbnQgY2hpbGRDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBpbnQgaW5kZXhPZkNo aWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkgY29uc3Qgb3ZlcnJpZGU7Cisr ICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3Qgb3Zl cnJpZGU7CisrfTsKKysKKysjZW5kaWYgLy8gYWNjZXNzaWJpbGl0eQorKworK1FUX0VORF9OQU1F U1BBQ0UKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dp ZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5LmNwcAorbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjdiYTg4YTE3NjkKKy0tLSAvZGV2L251 bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNr d2lkZ2V0ZmFjdG9yeS5jcHAKK0BAIC0wLDAgKzEsNjAgQEAKKysvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBD b250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUg aXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysq KiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQor KyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVz ZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5z ZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRp dmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdy aXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vu c2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJt cy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFj dCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlz IGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiog R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VO U0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxl YXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cwor KyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0 bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVy bmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0 aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55 IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlv bi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysq KiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBM SUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4g UGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1l dDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0 cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5E X0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpbmNsdWRlICJxYWNj ZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgiCisrI2luY2x1ZGUgInFhY2Nlc3NpYmxlcXVp Y2t3aWRnZXRfcC5oIgorKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUco YWNjZXNzaWJpbGl0eSkKKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqcUFjY2Vzc2libGVRdWlj a1dpZGdldEZhY3RvcnkoY29uc3QgUVN0cmluZyAmY2xhc3NuYW1lLCBRT2JqZWN0ICpvYmplY3Qp CisreworKyAgICBpZiAoY2xhc3NuYW1lID09IFFMYXRpbjFTdHJpbmcoIlFRdWlja1dpZGdldCIp KSB7CisrICAgICAgICByZXR1cm4gbmV3IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQocW9iamVjdF9j YXN0PFFRdWlja1dpZGdldCAqPihvYmplY3QpKTsKKysgICAgfSBlbHNlIGlmIChjbGFzc25hbWUg PT0gUUxhdGluMVN0cmluZygiUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93IikpIHsKKysgICAg ICAgIHJldHVybiBuZXcgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhxb2Jq ZWN0X2Nhc3Q8UVF1aWNrV2luZG93ICo+KG9iamVjdCkpOworKyAgICB9CisrICAgIHJldHVybiAw OworK30KKysKKysjZW5kaWYgLy8gYWNjZXNzaWJpbGl0eQorKworK1FUX0VORF9OQU1FU1BBQ0UK KysKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2li bGVxdWlja3dpZGdldGZhY3RvcnlfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRz L3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAwMDAuLjhjNjNiMDlmODEKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9w LmgKK0BAIC0wLDAgKzEsNjYgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoqCisrKiogQ29w eXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczov L3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg UXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElD RU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBo b2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4K KysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJv dmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3Jk YW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50 IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoq IGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBG b3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBz Oi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVz ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiog Rm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVk ZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUg Zm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdpbGwgYmUgbWV0 OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisrKioKKysqKiBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMg ZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoqIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdl bmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24g YXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2Vz IGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFu ZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKKysq KiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0 aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioK KysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworKworKyNpbmNsdWRlIDxRdEd1aS9xYWNjZXNzaWJsZS5o PgorKworKyNpZm5kZWYgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVEZBQ1RPUllfSAorKyNkZWZpbmUg UUFDQ0VTU0lCTEVRVUlDS1dJREdFVEZBQ1RPUllfSAorKworKy8vCisrLy8gIFcgQSBSIE4gSSBO IEcKKysvLyAgLS0tLS0tLS0tLS0tLQorKy8vCisrLy8gVGhpcyBmaWxlIGlzIG5vdCBwYXJ0IG9m IHRoZSBRdCBBUEkuICBJdCBleGlzdHMgcHVyZWx5IGFzIGFuCisrLy8gaW1wbGVtZW50YXRpb24g ZGV0YWlsLiAgVGhpcyBoZWFkZXIgZmlsZSBtYXkgY2hhbmdlIGZyb20gdmVyc2lvbiB0bworKy8v IHZlcnNpb24gd2l0aG91dCBub3RpY2UsIG9yIGV2ZW4gYmUgcmVtb3ZlZC4KKysvLworKy8vIFdl IG1lYW4gaXQuCisrLy8KKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysjaWYgUVRfQ09ORklH KGFjY2Vzc2liaWxpdHkpCisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKnFBY2Nlc3NpYmxlUXVp Y2tXaWRnZXRGYWN0b3J5KGNvbnN0IFFTdHJpbmcgJmNsYXNzbmFtZSwgUU9iamVjdCAqb2JqZWN0 KTsKKysKKysjZW5kaWYKKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCisrI2VuZGlmCitkaWZmIC0t Z2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldC5jcHAgYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcAoraW5kZXggMzk3 ODBmOGRlMy4uOWM5N2I0MzUxOCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr d2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dp ZGdldHMvcXF1aWNrd2lkZ2V0LmNwcAorQEAgLTM5LDYgKzM5LDcgQEAKKyAKKyAjaW5jbHVkZSAi cXF1aWNrd2lkZ2V0LmgiCisgI2luY2x1ZGUgInFxdWlja3dpZGdldF9wLmgiCisrI2luY2x1ZGUg InFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaCIKKyAKKyAjaW5jbHVkZSAicHJpdmF0 ZS9xcXVpY2t3aW5kb3dfcC5oIgorICNpbmNsdWRlICJwcml2YXRlL3FxdWlja2l0ZW1fcC5oIgor QEAgLTc1LDkgKzc2LDE2IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisrUVF1aWNrV2lk Z2V0T2Zmc2NyZWVuV2luZG93OjpRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coUVF1aWNrV2lu ZG93UHJpdmF0ZSAmZGQsIFFRdWlja1JlbmRlckNvbnRyb2wgKmNvbnRyb2wpCisrOlFRdWlja1dp bmRvdyhkZCwgY29udHJvbCkKKyt7CisrICAgIHNldFRpdGxlKFFTdHJpbmc6OmZyb21MYXRpbjEo Ik9mZnNjcmVlbiIpKTsKKysgICAgc2V0T2JqZWN0TmFtZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJR UXVpY2tPZmZTY3JlZW5XaW5kb3ciKSk7CisrfQorKworIC8vIG92ZXJyaWRlIHNldFZpc2JsZSB0 byBwcmV2ZW50IGFjY2lkZW50YWwgb2Zmc2NyZWVuIHdpbmRvdyBiZWluZyBjcmVhdGVkCisgLy8g YnkgYmFzZSBjbGFzcy4KKy1jbGFzcyBRUXVpY2tPZmZjcmVlbldpbmRvd1ByaXZhdGU6IHB1Ymxp YyBRUXVpY2tXaW5kb3dQcml2YXRlIHsKKytjbGFzcyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5k b3dQcml2YXRlOiBwdWJsaWMgUVF1aWNrV2luZG93UHJpdmF0ZSB7CisgcHVibGljOgorICAgICB2 b2lkIHNldFZpc2libGUoYm9vbCB2aXNpYmxlKSBvdmVycmlkZSB7CisgICAgICAgICBRX1EoUVdp bmRvdyk7CitAQCAtMTA1LDkgKzExMyw4IEBAIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6aW5p dChRUW1sRW5naW5lKiBlKQorICAgICBRX1EoUVF1aWNrV2lkZ2V0KTsKKyAKKyAgICAgcmVuZGVy Q29udHJvbCA9IG5ldyBRUXVpY2tXaWRnZXRSZW5kZXJDb250cm9sKHEpOworLSAgICBvZmZzY3Jl ZW5XaW5kb3cgPSBuZXcgUVF1aWNrV2luZG93KCpuZXcgUVF1aWNrT2ZmY3JlZW5XaW5kb3dQcml2 YXRlKCkscmVuZGVyQ29udHJvbCk7CistICAgIG9mZnNjcmVlbldpbmRvdy0+c2V0VGl0bGUoUVN0 cmluZzo6ZnJvbUxhdGluMSgiT2Zmc2NyZWVuIikpOworLSAgICBvZmZzY3JlZW5XaW5kb3ctPnNl dE9iamVjdE5hbWUoUVN0cmluZzo6ZnJvbUxhdGluMSgiUVF1aWNrT2ZmU2NyZWVuV2luZG93Iikp OworKyAgICBvZmZzY3JlZW5XaW5kb3cgPSBuZXcgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93 KCpuZXcgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93UHJpdmF0ZSgpLCByZW5kZXJDb250cm9s KTsKKysgICAgb2Zmc2NyZWVuV2luZG93LT5zZXRTY3JlZW4ocS0+c2NyZWVuKCkpOworICAgICAv LyBEbyBub3QgY2FsbCBjcmVhdGUoKSBvbiBvZmZzY3JlZW5XaW5kb3cuCisgCisgICAgIC8vIENo ZWNrIGlmIHRoZSBTb2Z0d2FyZSBBZGFwdGF0aW9uIGlzIGJlaW5nIHVzZWQKK0BAIC0xMzgsNiAr MTQ1LDEwIEBAIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6aW5pdChRUW1sRW5naW5lKiBlKQor ICAgICBRV2lkZ2V0Ojpjb25uZWN0KG9mZnNjcmVlbldpbmRvdywgJlFRdWlja1dpbmRvdzo6Zm9j dXNPYmplY3RDaGFuZ2VkLCBxLCAmUVF1aWNrV2lkZ2V0Ojpwcm9wYWdhdGVGb2N1c09iamVjdENo YW5nZWQpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHJlbmRlckNvbnRyb2wsIFNJR05BTChyZW5k ZXJSZXF1ZXN0ZWQoKSksIHEsIFNMT1QodHJpZ2dlclVwZGF0ZSgpKSk7CisgICAgIFFPYmplY3Q6 OmNvbm5lY3QocmVuZGVyQ29udHJvbCwgU0lHTkFMKHNjZW5lQ2hhbmdlZCgpKSwgcSwgU0xPVCh0 cmlnZ2VyVXBkYXRlKCkpKTsKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrICAg IFFBY2Nlc3NpYmxlOjppbnN0YWxsRmFjdG9yeSgmcUFjY2Vzc2libGVRdWlja1dpZGdldEZhY3Rv cnkpOworKyNlbmRpZgorIH0KKyAKKyB2b2lkIFFRdWlja1dpZGdldFByaXZhdGU6OmVuc3VyZUVu Z2luZSgpIGNvbnN0CitAQCAtOTAxLDkgKzkxMiw3IEBAIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0 ZTo6Y3JlYXRlQ29udGV4dCgpCisgCisgICAgICAgICBjb250ZXh0ID0gbmV3IFFPcGVuR0xDb250 ZXh0OworICAgICAgICAgY29udGV4dC0+c2V0Rm9ybWF0KG9mZnNjcmVlbldpbmRvdy0+cmVxdWVz dGVkRm9ybWF0KCkpOworLSAgICAgICAgY29uc3QgUVdpbmRvdyAqd2luID0gcS0+d2luZG93KCkt PndpbmRvd0hhbmRsZSgpOworLSAgICAgICAgaWYgKHdpbiAmJiB3aW4tPnNjcmVlbigpKQorLSAg ICAgICAgICAgIGNvbnRleHQtPnNldFNjcmVlbih3aW4tPnNjcmVlbigpKTsKKysgICAgICAgIGNv bnRleHQtPnNldFNjcmVlbihxLT5zY3JlZW4oKSk7CisgICAgICAgICBRT3BlbkdMQ29udGV4dCAq c2hhcmVDb250ZXh0ID0gcXRfZ2xfZ2xvYmFsX3NoYXJlX2NvbnRleHQoKTsKKyAgICAgICAgIGlm ICghc2hhcmVDb250ZXh0KQorICAgICAgICAgICAgIHNoYXJlQ29udGV4dCA9IFFXaWRnZXRQcml2 YXRlOjpnZXQocS0+d2luZG93KCkpLT5zaGFyZUNvbnRleHQoKTsKK0BAIC0xNTIwLDE5ICsxNTI5 LDE2IEBAIGJvb2wgUVF1aWNrV2lkZ2V0OjpldmVudChRRXZlbnQgKmUpCisgICAgICAgICBkLT5o YW5kbGVXaW5kb3dDaGFuZ2UoKTsKKyAgICAgICAgIGJyZWFrOworIAorLSAgICBjYXNlIFFFdmVu dDo6U2NyZWVuQ2hhbmdlSW50ZXJuYWw6CistICAgICAgICBpZiAoUVdpbmRvdyAqd2luZG93ID0g dGhpcy0+d2luZG93KCktPndpbmRvd0hhbmRsZSgpKSB7CistICAgICAgICAgICAgUVNjcmVlbiAq bmV3U2NyZWVuID0gd2luZG93LT5zY3JlZW4oKTsKKy0KKy0gICAgICAgICAgICBpZiAoZC0+b2Zm c2NyZWVuV2luZG93KQorLSAgICAgICAgICAgICAgICBkLT5vZmZzY3JlZW5XaW5kb3ctPnNldFNj cmVlbihuZXdTY3JlZW4pOworLSAgICAgICAgICAgIGlmIChkLT5vZmZzY3JlZW5TdXJmYWNlKQor LSAgICAgICAgICAgICAgICBkLT5vZmZzY3JlZW5TdXJmYWNlLT5zZXRTY3JlZW4obmV3U2NyZWVu KTsKKysgICAgY2FzZSBRRXZlbnQ6OlNjcmVlbkNoYW5nZUludGVybmFsOiB7CisrICAgICAgICBR U2NyZWVuICpuZXdTY3JlZW4gPSBzY3JlZW4oKTsKKysgICAgICAgIGlmIChkLT5vZmZzY3JlZW5X aW5kb3cpCisrICAgICAgICAgICAgZC0+b2Zmc2NyZWVuV2luZG93LT5zZXRTY3JlZW4obmV3U2Ny ZWVuKTsKKysgICAgICAgIGlmIChkLT5vZmZzY3JlZW5TdXJmYWNlKQorKyAgICAgICAgICAgIGQt Pm9mZnNjcmVlblN1cmZhY2UtPnNldFNjcmVlbihuZXdTY3JlZW4pOworICNpZiBRVF9DT05GSUco b3BlbmdsKQorLSAgICAgICAgICAgIGlmIChkLT5jb250ZXh0KQorLSAgICAgICAgICAgICAgICBk LT5jb250ZXh0LT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKysgICAgICAgIGlmIChkLT5jb250ZXh0 KQorKyAgICAgICAgICAgIGQtPmNvbnRleHQtPnNldFNjcmVlbihuZXdTY3JlZW4pOworICNlbmRp ZgorLSAgICAgICAgfQorIAorICAgICAgICAgaWYgKGQtPnVzZVNvZnR3YXJlUmVuZGVyZXIKKyAj aWYgUVRfQ09ORklHKG9wZW5nbCkKK0BAIC0xNTQ1LDcgKzE1NTEsNyBAQCBib29sIFFRdWlja1dp ZGdldDo6ZXZlbnQoUUV2ZW50ICplKQorICAgICAgICAgICAgIGQtPnJlbmRlcih0cnVlKTsKKyAg ICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLQorKyAgICB9CisgICAgIGNhc2UgUUV2ZW50OjpT aG93OgorICAgICBjYXNlIFFFdmVudDo6TW92ZToKKyAgICAgICAgIGQtPnVwZGF0ZVBvc2l0aW9u KCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dp ZGdldF9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0X3Au aAoraW5kZXggODgxZjdmOTIyMC4uMWE5NDZiY2M3MSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZl L3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0X3AuaAorQEAgLTE0OCw2ICsxNDgsMTQgQEAg cHVibGljOgorICAgICBib29sIGZvcmNlRnVsbFVwZGF0ZTsKKyB9OworIAorK2NsYXNzIFFRdWlj a1dpZGdldE9mZnNjcmVlbldpbmRvdzogcHVibGljIFFRdWlja1dpbmRvdworK3sKKysgICAgUV9P QkpFQ1QKKysKKytwdWJsaWM6CisrICAgIFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVp Y2tXaW5kb3dQcml2YXRlICZkZCwgUVF1aWNrUmVuZGVyQ29udHJvbCAqY29udHJvbCk7CisrfTsK KysKKyBRVF9FTkRfTkFNRVNQQUNFCisgCisgI2VuZGlmIC8vIFFRdWlja1dpZGdldF9QX0gKK2Rp ZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXVpY2t3aWRnZXRzLnBy byBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJvCitpbmRl eCAyNDM4ZTU3N2FlLi44NWQxNTZiOGEzIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8KKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJvCitAQCAtNyw5ICs3LDEzIEBAIERFRklORVMgICAr PSBRVF9OT19VUkxfQ0FTVF9GUk9NX1NUUklORyBRVF9OT19JTlRFR0VSX0VWRU5UX0NPT1JESU5B VEVTIFFUX05PX0ZPCisgSEVBREVSUyArPSBcCisgICAgIHFxdWlja3dpZGdldC5oIFwKKyAgICAg cXF1aWNrd2lkZ2V0X3AuaCBcCistICAgIHF0cXVpY2t3aWRnZXRzZ2xvYmFsLmgKKysgICAgcXRx dWlja3dpZGdldHNnbG9iYWwuaCBcCisrICAgIHFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oIFwK KysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oCisgCisgU09VUkNFUyArPSBc CistICAgIHFxdWlja3dpZGdldC5jcHAKKysgICAgcXF1aWNrd2lkZ2V0LmNwcCBcCisrICAgIHFh Y2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwIFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldGZh Y3RvcnkuY3BwCisgCisgbG9hZChxdF9tb2R1bGUpCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2 ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0X3Fqc2VuZ2luZS5jcHAgYi9xdGRlY2xhcmF0 aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcAoraW5kZXggM2I3 ZDc0ZGY2My4uYjc1YmY4MjBkNSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0 by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rl c3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcAorQEAgLTEwMiw2ICsxMDIs NyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHZhbHVlQ29udmVyc2lvbl9SZWd1bGFyRXhw cmVzc2lvbigpOworICAgICB2b2lkIGNhc3RXaXRoTXVsdGlwbGVJbmhlcml0YW5jZSgpOworICAg ICB2b2lkIGNvbGxlY3RHYXJiYWdlKCk7CisrICAgIHZvaWQgY29sbGVjdEdhcmJhZ2VOZXN0ZWRX cmFwcGVyc1R3b0VuZ2luZXMoKTsKKyAgICAgdm9pZCBnY1dpdGhOZXN0ZWREYXRhU3RydWN0dXJl KCk7CisgICAgIHZvaWQgc3RhY2t0cmFjZSgpOworICAgICB2b2lkIG51bWJlclBhcnNpbmdfZGF0 YSgpOworQEAgLTE4MDksNiArMTgxMCw0NCBAQCB2b2lkIHRzdF9RSlNFbmdpbmU6OmNvbGxlY3RH YXJiYWdlKCkKKyAgICAgUVZFUklGWShwdHIuaXNOdWxsKCkpOworIH0KKyAKKytjbGFzcyBUZXN0 T2JqZWN0Q29udGFpbmVyIDogcHVibGljIFFPYmplY3QKKyt7CisrICAgIFFfT0JKRUNUCisrICAg IFFfUFJPUEVSVFkoUU9iamVjdCAqZHVtbXkgTUVNQkVSIG1fZHVtbXkgQ09OU1RBTlQpCisrCisr cHVibGljOgorKyAgICBUZXN0T2JqZWN0Q29udGFpbmVyKCkgOiBtX2R1bW15KG5ldyBRT2JqZWN0 KHRoaXMpKSB7fQorKworK3ByaXZhdGU6CisrICAgIFFPYmplY3QgKm1fZHVtbXk7CisrfTsKKysK Kyt2b2lkIHRzdF9RSlNFbmdpbmU6OmNvbGxlY3RHYXJiYWdlTmVzdGVkV3JhcHBlcnNUd29Fbmdp bmVzKCkKKyt7CisrICAgIFFKU0VuZ2luZSBlbmdpbmUxOworKyAgICBRSlNFbmdpbmUgZW5naW5l MjsKKysKKysgICAgVGVzdE9iamVjdENvbnRhaW5lciBjb250YWluZXI7CisrICAgIFFRbWxFbmdp bmU6OnNldE9iamVjdE93bmVyc2hpcCgmY29udGFpbmVyLCBRUW1sRW5naW5lOjpDcHBPd25lcnNo aXApOworKworKyAgICBlbmdpbmUxLmdsb2JhbE9iamVjdCgpLnNldFByb3BlcnR5KCJmb29iYXIi LCBlbmdpbmUxLm5ld1FPYmplY3QoJmNvbnRhaW5lcikpOworKyAgICBlbmdpbmUyLmdsb2JhbE9i amVjdCgpLnNldFByb3BlcnR5KCJmb29iYXIiLCBlbmdpbmUyLm5ld1FPYmplY3QoJmNvbnRhaW5l cikpOworKworKyAgICBlbmdpbmUxLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6ID0gNDIiKTsK KysgICAgZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiA9IDQzIik7CisrCisrICAg IFFDT01QQVJFKGVuZ2luZTEuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0 Mik7CisrICAgIFFDT01QQVJFKGVuZ2luZTIuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50 b0ludCgpLCA0Myk7CisrCisrICAgIGVuZ2luZTEuY29sbGVjdEdhcmJhZ2UoKTsKKysgICAgZW5n aW5lMi5jb2xsZWN0R2FyYmFnZSgpOworKworKyAgICAvLyBUaGUgR0Mgc2hvdWxkIG5vdCBjb2xs ZWN0IGR1bW15IG9iamVjdCB3cmFwcGVycyBuZWl0aGVyIGluIGVuZ2luZTEgbm9yIGVuZ2luZTIs IHdlCisrICAgIC8vIHZlcmlmeSB0aGF0IGJ5IGNoZWNraW5nIHdoZXRoZXIgdGhlIGJheiBwcm9w ZXJ0eSBzdGlsbCBoYXMgaXRzIHByZXZpb3VzIHZhbHVlLgorKyAgICBRQ09NUEFSRShlbmdpbmUx LmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDIpOworKyAgICBRQ09NUEFS RShlbmdpbmUyLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDMpOworK30K KysKKyB2b2lkIHRzdF9RSlNFbmdpbmU6OmdjV2l0aE5lc3RlZERhdGFTdHJ1Y3R1cmUoKQorIHsK KyAgICAgLy8gVGhlIEdDIG11c3QgYmUgYWJsZSB0byB0cmF2ZXJzZSBkZWVwbHkgbmVzdGVkIG9i amVjdHMsIG90aGVyd2lzZSB0aGlzCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9h dXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC9kYXRhL3JlZHJhd1Vwb25Db2x1bW5DaGFuZ2UucW1s IGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC9kYXRhL3Jl ZHJhd1Vwb25Db2x1bW5DaGFuZ2UucW1sCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMDAwMC4uMjA2MTMzYmIzOQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS90 ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC9kYXRhL3JlZHJhd1Vwb25Db2x1bW5DaGFu Z2UucW1sCitAQCAtMCwwICsxLDExIEBACisraW1wb3J0IFF0UXVpY2sgMi44CisrCisrTGlzdFZp ZXcgeworKyAgICBpZDogcm9vdAorKyAgICB3aWR0aDogMjAwCisrICAgIGhlaWdodDogMjAwCisr CisrICAgIGRlbGVnYXRlOiBUZXh0IHsKKysgICAgICAgIHRleHQ6IGRpc3BsYXkKKysgICAgfQor K30KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0 ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1 dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKK2luZGV4 IDM1ZjFlMmM5NGQuLjE3MjI0NDc4MzAgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3Rz L2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKKysr KyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvdHN0X3Fx bWxkZWxlZ2F0ZW1vZGVsLmNwcAorQEAgLTI3LDYgKzI3LDggQEAKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworIAorICNpbmNsdWRlIDxRdFRlc3QvcXRlc3QuaD4KKysjaW5jbHVkZSA8UXRDb3JlL1FD b25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWw+CisrI2luY2x1ZGUgPFF0R3VpL1FTdGFuZGFyZEl0 ZW1Nb2RlbD4KKyAjaW5jbHVkZSA8UXRRbWwvcXFtbGNvbXBvbmVudC5oPgorICNpbmNsdWRlIDxR dFFtbE1vZGVscy9wcml2YXRlL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaD4KKyAjaW5jbHVkZSA8UXRR dWljay9xcXVpY2t2aWV3Lmg+CitAQCAtNDcsNiArNDksNyBAQCBwcml2YXRlIHNsb3RzOgorICAg ICB2b2lkIGZpbHRlck9uR3JvdXBfcmVtb3ZlV2hlbkNvbXBsZXRlZCgpOworICAgICB2b2lkIHF0 YnVnXzg2MDE3KCk7CisgICAgIHZvaWQgY29udGV4dEFjY2Vzc2VkQnlIYW5kbGVyKCk7CisrICAg IHZvaWQgcmVkcmF3VXBvbkNvbHVtbkNoYW5nZSgpOworIH07CisgCisgY2xhc3MgQWJzdHJhY3RJ dGVtTW9kZWwgOiBwdWJsaWMgUUFic3RyYWN0SXRlbU1vZGVsCitAQCAtMTg2LDYgKzE4OSwzMCBA QCB2b2lkIHRzdF9RUW1sRGVsZWdhdGVNb2RlbDo6Y29udGV4dEFjY2Vzc2VkQnlIYW5kbGVyKCkK KyAgICAgUVZFUklGWShyb290LT5wcm9wZXJ0eSgid29ya3MiKS50b0Jvb2woKSk7CisgfQorIAor K3ZvaWQgdHN0X1FRbWxEZWxlZ2F0ZU1vZGVsOjpyZWRyYXdVcG9uQ29sdW1uQ2hhbmdlKCkKKyt7 CisrICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCBtMTsKKysgICAgbTEuYXBwZW5kUm93KHsKKysgICAg ICAgICAgICBuZXcgUVN0YW5kYXJkSXRlbSgiQmFuYW5hIiksCisrICAgICAgICAgICAgbmV3IFFT dGFuZGFyZEl0ZW0oIkNvY29udXQiKSwKKysgICAgfSk7CisrCisrICAgIFFRdWlja1ZpZXcgdmll dyh0ZXN0RmlsZVVybCgicmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwiKSk7CisrICAgIFFDT01Q QVJFKHZpZXcuc3RhdHVzKCksIFFRdWlja1ZpZXc6OlJlYWR5KTsKKysgICAgdmlldy5zaG93KCk7 CisrICAgIFFRdWlja0l0ZW0gKnJvb3QgPSB2aWV3LnJvb3RPYmplY3QoKTsKKysgICAgcm9vdC0+ c2V0UHJvcGVydHkoIm1vZGVsIiwgUVZhcmlhbnQ6OmZyb21WYWx1ZTxRT2JqZWN0ICo+KCZtMSkp OworKworKyAgICBRT2JqZWN0ICppdGVtID0gcm9vdC0+cHJvcGVydHkoImN1cnJlbnRJdGVtIiku dmFsdWU8UU9iamVjdCAqPigpOworKyAgICBRVkVSSUZZKGl0ZW0pOworKyAgICBRQ09NUEFSRShp dGVtLT5wcm9wZXJ0eSgidGV4dCIpLnRvU3RyaW5nKCksICJCYW5hbmEiKTsKKysKKysgICAgUVZF UklGWShyb290KTsKKysgICAgbTEucmVtb3ZlQ29sdW1uKDApOworKworKyAgICBRQ09NUEFSRShp dGVtLT5wcm9wZXJ0eSgidGV4dCIpLnRvU3RyaW5nKCksICJDb2NvbnV0Iik7CisrfQorKworIFFU RVNUX01BSU4odHN0X1FRbWxEZWxlZ2F0ZU1vZGVsKQorIAorICNpbmNsdWRlICJ0c3RfcXFtbGRl bGVnYXRlbW9kZWwubW9jIgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9x bWwvcXY0bW0vdHN0X3F2NG1tLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXY0 bW0vdHN0X3F2NG1tLmNwcAoraW5kZXggNWQ2MzVhYTYzYi4uODI0ZmQ4OWU1YiAxMDA2NDQKKy0t LSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXY0bW0vdHN0X3F2NG1tLmNwcAorKysr IGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0uY3BwCitAQCAt NzYsMTAgKzc2LDEwIEBAIHZvaWQgdHN0X3F2NG1tOjptdWx0aVdyYXBwZWRRT2JqZWN0cygpCisg ICAgICAgICBRQ09NUEFSRShlbmdpbmUxLm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2Jq ZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMSk7CisgICAgICAgICBRQ09NUEFSRShlbmdpbmUyLm1l bW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMCk7 CisgCistICAgICAgICAvLyBNb3ZlcyB0aGUgYWRkaXRpb25hbCBXZWFrVmFsdWUgZnJvbSBtX211 bHRpcGx5V3JhcHBlZFFPYmplY3RzIHRvCistICAgICAgICAvLyBtX3BlbmRpbmdGcmVlZE9iamVj dFdyYXBwZXJWYWx1ZS4gSXQncyBzdGlsbCBhbGl2ZSBhZnRlciBhbGwuCisrICAgICAgICAvLyBU aGUgYWRkaXRpb25hbCBXZWFrVmFsdWUgZnJvbSBtX211bHRpcGx5V3JhcHBlZFFPYmplY3RzIGhh c24ndCBiZWVuIG1vdmVkCisrICAgICAgICAvLyB0byBtX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBw ZXJWYWx1ZSB5ZXQuIEl0J3Mgc3RpbGwgYWxpdmUgYWZ0ZXIgYWxsLgorICAgICAgICAgZW5naW5l MS5tZW1vcnlNYW5hZ2VyLT5ydW5HQygpOworLSAgICAgICAgUUNPTVBBUkUoZW5naW5lMS5tZW1v cnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDIpOwor KyAgICAgICAgUUNPTVBBUkUoZW5naW5lMS5tZW1vcnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVlZE9i amVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDEpOworIAorICAgICAgICAgLy8gZW5naW5lMiBkb2Vz bid0IG93biB0aGUgb2JqZWN0IGFzIGVuZ2luZTEgd2FzIHRoZSBmaXJzdCB0byB3cmFwIGl0IGFi b3ZlLgorICAgICAgICAgLy8gVGhlcmVmb3JlLCBubyBlZmZlY3QgaGVyZS4KK2RpZmYgLS1naXQg YS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvZGF0YS9hY3RpdmVG b2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1 aWNrL3FxdWlja2l0ZW0yL2RhdGEvYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbAor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjg4OWU0ODBmM2IKKy0tLSAv ZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVt Mi9kYXRhL2FjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wMy5xbWwKK0BAIC0wLDAgKzEsMTMg QEAKKytpbXBvcnQgUXRRdWljayAyLjYKKysKKytJdGVtIHsKKysgICAgdmlzaWJsZTogdHJ1ZQor KyAgICBJdGVtIHsKKysgICAgICAgIHZpc2libGU6IGZhbHNlCisrICAgICAgICBJdGVtIHsKKysg ICAgICAgICAgICBvYmplY3ROYW1lOiAiaGlkZGVuQ2hpbGQiCisrICAgICAgICAgICAgYWN0aXZl Rm9jdXNPblRhYjogdHJ1ZQorKyAgICAgICAgICAgIGZvY3VzOiB0cnVlCisrICAgICAgICB9Cisr ICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3Fx dWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9x dWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAKK2luZGV4IGM4ZjI1MWRiZTEuLmM4 ZWYzNmVlNjggMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1 aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1 dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwCitAQCAtNjcsNiArNjcsNyBA QCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGFjdGl2ZUZvY3VzT25UYWIxMCgpOworICAgICB2 b2lkIGFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wX2RhdGEoKTsKKyAgICAgdm9pZCBhY3Rp dmVGb2N1c09uVGFiX2luZmluaXRlTG9vcCgpOworKyAgICB2b2lkIGFjdGl2ZUZvY3VzT25UYWJf aW5maW5pdGVMb29wQ29udHJvbHMoKTsKKyAKKyAgICAgdm9pZCBuZXh0SXRlbUluRm9jdXNDaGFp bigpOworICAgICB2b2lkIG5leHRJdGVtSW5Gb2N1c0NoYWluMigpOworQEAgLTEwNTcsNiArMTA1 OCwxNyBAQCB2b2lkIHRzdF9RUXVpY2tJdGVtOjphY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9v cCgpCisgICAgIFFDT01QQVJFKGl0ZW0sIHdpbmRvdy0+cm9vdE9iamVjdCgpKTsKKyB9CisgCisr Cisrdm9pZCB0c3RfUVF1aWNrSXRlbTo6YWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3BDb250 cm9scygpCisreworKyAgICBhdXRvIHNvdXJjZSA9IHRlc3RGaWxlVXJsKCJhY3RpdmVGb2N1c09u VGFiX2luZmluaXRlTG9vcDMucW1sIik7CisrICAgIFFTY29wZWRQb2ludGVyPFFRdWlja1ZpZXc+ d2luZG93KG5ldyBRUXVpY2tWaWV3KCkpOworKyAgICB3aW5kb3ctPnNldFNvdXJjZShzb3VyY2Up OworKyAgICB3aW5kb3ctPnNob3coKTsKKysgICAgUVZFUklGWSh3aW5kb3ctPmVycm9ycygpLmlz RW1wdHkoKSk7CisrICAgIFFUZXN0OjprZXlDbGljayh3aW5kb3cuZ2V0KCksIFF0OjpLZXlfVGFi KTsgLy8gc2hvdWxkIG5vdCBoYW5nCisrfQorKworIHZvaWQgdHN0X1FRdWlja0l0ZW06Om5leHRJ dGVtSW5Gb2N1c0NoYWluKCkKKyB7CisgICAgIGlmICghcXRfdGFiX2FsbF93aWRnZXRzKCkpCitT dWJtb2R1bGUgcXRkb2MgYzBjN2JmMDcuLi43OWQ2ZWY2OToKK1N1Ym1vZHVsZSBxdGltYWdlZm9y bWF0cyAyZGNmMjg5OS4uYWJlNDRjMGY6CitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3Jj L3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3Jt YXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAKK2luZGV4 IGRkZTc4M2MuLjFiZjkwNzQgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lu cy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0 cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwCitAQCAtNDYy LDggKzQ2MiwxMiBAQCBzdGF0aWMgYm9vbCBwYXJzZUljb25FbnRyeUluZm8oSUNOU0VudHJ5ICZp Y29uKQorICAgICBpZiAoaXNJY29uQ29tcHJlc3NlZChpY29uKSkKKyAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAvLyBJY29uIGRlcHRoOgorLSAgICBpZiAoIWRlcHRoLmlzRW1wdHkoKSkKKy0g ICAgICAgIGljb24uZGVwdGggPSBJQ05TRW50cnk6OkRlcHRoKGRlcHRoLnRvVUludCgpKTsKKysg ICAgaWYgKCFkZXB0aC5pc0VtcHR5KCkpIHsKKysgICAgICAgIGNvbnN0IHVpbnQgZGVwdGhVSW50 ID0gZGVwdGgudG9VSW50KCk7CisrICAgICAgICBpZiAoZGVwdGhVSW50ID4gMzIpCisrICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgaWNvbi5kZXB0aCA9IElDTlNFbnRyeTo6RGVw dGgoZGVwdGhVSW50KTsKKysgICAgfQorICAgICAvLyBUcnkgbW9ubyBpZiBkZXB0aCBub3QgZm91 bmQKKyAgICAgaWYgKGljb24uZGVwdGggPT0gSUNOU0VudHJ5OjpEZXB0aFVua25vd24pCisgICAg ICAgICBpY29uLmRlcHRoID0gSUNOU0VudHJ5OjpEZXB0aE1vbm87CitAQCAtNTE1LDYgKzUxOSw5 IEBAIHN0YXRpYyBib29sIHBhcnNlSWNvbkVudHJ5SW5mbyhJQ05TRW50cnkgJmljb24pCisgICAg ICAgICB9CisgICAgICAgICBpY29uLmhlaWdodCA9IGljb24ud2lkdGg7CisgICAgIH0KKysgICAg Ly8gU2FuaXR5IGNoZWNrCisrICAgIGlmIChpY29uLndpZHRoID09IDAgfHwgaWNvbi53aWR0aCA+ IDQwOTYpCisrICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIHJldHVybiB0cnVlOworIH0KKyAK K0BAIC02ODUsNyArNjkyLDcgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OmNhblJlYWQoKSBjb25zdAor IGJvb2wgUUlDTlNIYW5kbGVyOjpyZWFkKFFJbWFnZSAqb3V0SW1hZ2UpCisgeworICAgICBRSW1h Z2UgaW1nOworLSAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSkgeworKyAgICBpZiAoIWVuc3VyZVNj YW5uZWQoKSB8fCBtX2N1cnJlbnRJY29uSW5kZXggPj0gbV9pY29ucy5zaXplKCkpIHsKKyAgICAg ICAgIHFXYXJuaW5nKCJRSUNOU0hhbmRsZXI6OnJlYWQoKTogVGhlIGRldmljZSB3YXNuJ3QgcGFy c2VkIHByb3Blcmx5ISIpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CitAQCAtODky LDcgKzg5OSw3IEBAIGJvb2wgUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCkKKyAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CisgCisgICAgICAgICBjb25zdCBxaW50NjQgYmxvY2tEYXRhT2Zmc2V0 ID0gZGV2aWNlKCktPnBvcygpOworLSAgICAgICAgaWYgKCFpc0Jsb2NrSGVhZGVyVmFsaWQoYmxv Y2tIZWFkZXIpKSB7CisrICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChibG9ja0hlYWRl ciwgSUNOU0Jsb2NrSGVhZGVyU2l6ZSArIGZpbGVsZW5ndGggLSBibG9ja0RhdGFPZmZzZXQpKSB7 CisgICAgICAgICAgICAgcVdhcm5pbmcoIlFJQ05TSGFuZGxlcjo6c2NhbkRldmljZSgpOiBGYWls ZWQsIGJhZCBoZWFkZXIgYXQgcG9zICVzLiBPU1R5cGUgXCIlc1wiLCBsZW5ndGggJXUiLAorICAg ICAgICAgICAgICAgICAgICAgIFFCeXRlQXJyYXk6Om51bWJlcihibG9ja0RhdGFPZmZzZXQpLmNv bnN0RGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgIG5hbWVGcm9tT1NUeXBlKGJsb2NrSGVh ZGVyLm9zdHlwZSkuY29uc3REYXRhKCksIGJsb2NrSGVhZGVyLmxlbmd0aCk7CitAQCAtOTI3LDEx ICs5MzQsMTQgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKQorICAgICAgICAgY2Fz ZSBJQ05TQmxvY2tIZWFkZXI6OlR5cGVPZHJwOgorICAgICAgICAgICAgIC8vIEljbnMgY29udGFp bmVyIHNlZW1zIHRvIGhhdmUgYW4gZW1iZWRkZWQgaWNvbiB2YXJpYW50IGNvbnRhaW5lcgorICAg ICAgICAgICAgIC8vIExldCdzIHN0YXJ0IGEgc2NhbiBmb3IgZW50cmllcworLSAgICAgICAgICAg IHdoaWxlIChkZXZpY2UoKS0+cG9zKCkgPCBuZXh0QmxvY2tPZmZzZXQpIHsKKysgICAgICAgICAg ICB3aGlsZSAoIXN0cmVhbS5hdEVuZCgpICYmIGRldmljZSgpLT5wb3MoKSA8IG5leHRCbG9ja09m ZnNldCkgeworICAgICAgICAgICAgICAgICBJQ05TQmxvY2tIZWFkZXIgaWNvbjsKKyAgICAgICAg ICAgICAgICAgc3RyZWFtID4+IGljb247CisrICAgICAgICAgICAgICAgIGlmIChzdHJlYW0uc3Rh dHVzKCkgIT0gUURhdGFTdHJlYW06Ok9rKQorKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgaW5jb3JyZWN0IHZhcmlhbnQgZW50 cnkgaGVhZGVyIGFuZCBzdG9wIHNjYW4KKy0gICAgICAgICAgICAgICAgaWYgKCFpc0Jsb2NrSGVh ZGVyVmFsaWQoaWNvbiwgYmxvY2tEYXRhTGVuZ3RoKSkKKysgICAgICAgICAgICAgICAgcXVpbnQ2 NCByZW1haW5pbmcgPSBibG9ja0RhdGFMZW5ndGggLSAoZGV2aWNlKCktPnBvcygpIC0gYmxvY2tE YXRhT2Zmc2V0KTsKKysgICAgICAgICAgICAgICAgaWYgKCFpc0Jsb2NrSGVhZGVyVmFsaWQoaWNv biwgSUNOU0Jsb2NrSGVhZGVyU2l6ZSArIHJlbWFpbmluZykpCisgICAgICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgICAgICAgaWYgKCFhZGRFbnRyeShpY29uLCBkZXZpY2UoKS0+ cG9zKCksIGJsb2NrSGVhZGVyLm9zdHlwZSkpCisgICAgICAgICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CitAQCAtMTAwMyw3ICsxMDEzLDcgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OnNjYW5EZXZp Y2UoKQorICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorICAgICB9CistICAgIHJldHVy biB0cnVlOworKyAgICByZXR1cm4gKG1faWNvbnMuc2l6ZSgpID4gMCk7CisgfQorIAorIGNvbnN0 IElDTlNFbnRyeSAmUUlDTlNIYW5kbGVyOjpnZXRJY29uTWFzayhjb25zdCBJQ05TRW50cnkgJmlj b24pIGNvbnN0CitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vm b3JtYXRzL2pwMi9xanAyaGFuZGxlci5jcHAgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9p bWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcAoraW5kZXggNTA4MjAyMy4uY2IzNDM3NCAx MDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIv cWpwMmhhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZv cm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcAorQEAgLTQzLDYgKzQzLDcgQEAKKyAjaW5jbHVkZSAi cWltYWdlLmgiCisgI2luY2x1ZGUgInF2YXJpYW50LmgiCisgI2luY2x1ZGUgInFjb2xvci5oIgor KyNpbmNsdWRlICJxaW1hZ2VyZWFkZXIuaCIKKyAKKyAjaW5jbHVkZSA8amFzcGVyL2phc3Blci5o PgorICNpbmNsdWRlIDxtYXRoLmg+IC8vIGZvciBwb3cKK0BAIC0zMzMsMTYgKzMzNCw0NiBAQCBw cml2YXRlOgorIEpwZWcyMDAwSmFzcGVyUmVhZGVyOjpKcGVnMjAwMEphc3BlclJlYWRlcihRSU9E ZXZpY2UgKmlvZCwgU3ViRm9ybWF0IGZvcm1hdCkKKyAgICAgOiBqYXNwZXJPayh0cnVlKSwgaW9E ZXZpY2UoaW9kKSwgZm9ybWF0KGZvcm1hdCksIGhhc0FscGhhKGZhbHNlKQorIHsKKysjaWYgSkFT X1ZFUlNJT05fTUFKT1IgPCAzCisgICAgIGlmIChqYXNfaW5pdCgpKSB7CisgICAgICAgICBqYXNw ZXJPayA9IGZhbHNlOworICAgICAgICAgcURlYnVnKCJKYXNwZXIgTGlicmFyeSBpbml0aWFsaXph dGlvbiBmYWlsZWQiKTsKKyAgICAgfQorKyNlbHNlCisrICAgIGphc19jb25mX2NsZWFyKCk7Cisr I2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg2LCAwLCAwKQorKyAgICBqYXNfY29u Zl9zZXRfbWF4X21lbV91c2FnZShRSW1hZ2VSZWFkZXI6OmFsbG9jYXRpb25MaW1pdCgpICogMTAy NCAqIDEwMjQpOworKyNlbHNlCisrICAgIC8vIDEyOE1CIHNlZW1zIHRvIGJlIGVub3VnaC4KKysg ICAgamFzX2NvbmZfc2V0X21heF9tZW1fdXNhZ2UoMTI4ICogMTAyNCAqIDEwMjQpOworKyNlbmRp ZgorKyAgICBpZiAoamFzX2luaXRfbGlicmFyeSgpKSB7CisrICAgICAgICBqYXNwZXJPayA9IGZh bHNlOworKyAgICAgICAgcURlYnVnKCJKYXNwZXIgbGlicmFyeSBpbml0aWFsaXphdGlvbiBmYWls ZWQiKTsKKysgICAgfQorKyAgICBpZiAoamFzX2luaXRfdGhyZWFkKCkpIHsKKysgICAgICAgIGph c19jbGVhbnVwX2xpYnJhcnkoKTsKKysgICAgICAgIGphc3Blck9rID0gZmFsc2U7CisrICAgICAg ICBxRGVidWcoIkphc3BlciB0aHJlYWQgaW5pdGlhbGl6YXRpb24gZmFpbGVkIik7CisrICAgIH0K KysjZW5kaWYKKyB9CisgCisgSnBlZzIwMDBKYXNwZXJSZWFkZXI6On5KcGVnMjAwMEphc3BlclJl YWRlcigpCisgeworKyNpZiBKQVNfVkVSU0lPTl9NQUpPUiA8IDMKKyAgICAgaWYgKGphc3Blck9r KQorICAgICAgICAgamFzX2NsZWFudXAoKTsKKysjZWxzZQorKyAgICBpZiAoamFzcGVyT2spIHsK KysgICAgICAgIGlmIChqYXNfY2xlYW51cF90aHJlYWQoKSkgeworKyAgICAgICAgICAgIHFEZWJ1 ZygiSmFzcGVyIHRocmVhZCBjbGVhbnVwIGZhaWxlZCIpOworKyAgICAgICAgfQorKyAgICAgICAg aWYgKGphc19jbGVhbnVwX2xpYnJhcnkoKSkgeworKyAgICAgICAgICAgIHFEZWJ1ZygiSmFzcGVy IGxpYnJhcnkgY2xlYW51cCBmYWlsZWQiKTsKKysgICAgICAgIH0KKysgICAgfQorKyNlbmRpZgor IH0KKyAKKyAvKiEgXGludGVybmFsCitAQCAtODU3LDcgKzg4OCw3IEBAIGJvb2wgSnBlZzIwMDBK YXNwZXJSZWFkZXI6OndyaXRlKGNvbnN0IFFJbWFnZSAmaW1hZ2UsIGludCBxdWFsaXR5KQorICAg ICB9CisgCisgICAgIC8vIE9wZW4gYW4gZW1wdHkgamFzcGVyIHN0cmVhbSB0aGF0IGdyb3dzIGF1 dG9tYXRpY2FsbHkKKy0gICAgamFzX3N0cmVhbV90ICogbWVtb3J5X3N0cmVhbSA9IGphc19zdHJl YW1fbWVtb3BlbigwLCAtMSk7CisrICAgIGphc19zdHJlYW1fdCAqIG1lbW9yeV9zdHJlYW0gPSBq YXNfc3RyZWFtX21lbW9wZW4oMCwgMCk7CisgCisgICAgIC8vIEphc3BlciB3YW50cyBhIG5vbi1j b25zdCBzdHJpbmcuCisgICAgIGNoYXIgKnN0ciA9IHFzdHJkdXAoamFzcGVyRm9ybWF0U3RyaW5n LnRvTGF0aW4xKCkuY29uc3REYXRhKCkpOworZGlmZiAtLWdpdCBhL3F0aW1hZ2Vmb3JtYXRzL3Ny Yy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5jcHAgYi9xdGltYWdlZm9y bWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwCitpbmRl eCAxMzg2NzUwLi5hYzg5NTZjIDEwMDY0NAorLS0tIGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdp bnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcAorKysrIGIvcXRpbWFnZWZvcm1h dHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcAorQEAgLTM2 MSw2ICszNjEsOCBAQCBib29sIFFUaWZmSGFuZGxlcjo6cmVhZChRSW1hZ2UgKmltYWdlKQorICAg ICB9CisgCisgICAgIFRJRkYgKmNvbnN0IHRpZmYgPSBkLT50aWZmOworKyAgICBpZiAoVElGRklz VGlsZWQodGlmZikgJiYgVElGRlRpbGVTaXplNjQodGlmZikgPiB1aW50NjRfdChpbWFnZS0+c2l6 ZUluQnl0ZXMoKSkpIC8vIENvcnJ1cHQgaW1hZ2UKKysgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgY29uc3QgcXVpbnQzMiB3aWR0aCA9IGQtPnNpemUud2lkdGgoKTsKKyAgICAgY29uc3QgcXVp bnQzMiBoZWlnaHQgPSBkLT5zaXplLmhlaWdodCgpOworIAorZGlmZiAtLWdpdCBhL3F0aW1hZ2Vm b3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJwaGFuZGxlci5jcHAgYi9x dGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRsZXIu Y3BwCitpbmRleCA4MmQzOGNiLi5kMDJlYjA1IDEwMDY0NAorLS0tIGEvcXRpbWFnZWZvcm1hdHMv c3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcAorKysrIGIvcXRp bWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNw cAorQEAgLTQ1LDYgKzQ1LDcgQEAKKyAjaW5jbHVkZSA8cWRlYnVnLmg+CisgI2luY2x1ZGUgPHFw YWludGVyLmg+CisgI2luY2x1ZGUgPHF2YXJpYW50Lmg+CisrI2luY2x1ZGUgPFF0RW5kaWFuPgor IAorIHN0YXRpYyBjb25zdCBpbnQgcmlmZkhlYWRlclNpemUgPSAxMjsgLy8gUklGRl9IRUFERVJf U0laRSBmcm9tIHdlYnAvZm9ybWF0X2NvbnN0YW50cy5oCisgCitAQCAtMTAyLDIxICsxMDMsMjMg QEAgYm9vbCBRV2VicEhhbmRsZXI6OmVuc3VyZVNjYW5uZWQoKSBjb25zdAorIAorICAgICBtX3Nj YW5TdGF0ZSA9IFNjYW5FcnJvcjsKKyAKKy0gICAgaWYgKGRldmljZSgpLT5pc1NlcXVlbnRpYWwo KSkgeworLSAgICAgICAgcVdhcm5pbmcoKSA8PCAiU2VxdWVudGlhbCBkZXZpY2VzIGFyZSBub3Qg c3VwcG9ydGVkIjsKKysgICAgUVdlYnBIYW5kbGVyICp0aGF0ID0gY29uc3RfY2FzdDxRV2VicEhh bmRsZXIgKj4odGhpcyk7CisrICAgIGNvbnN0IGludCBoZWFkZXJCeXRlc05lZWRlZCA9IHNpemVv ZihXZWJQQml0c3RyZWFtRmVhdHVyZXMpOworKyAgICBRQnl0ZUFycmF5IGhlYWRlciA9IGRldmlj ZSgpLT5wZWVrKGhlYWRlckJ5dGVzTmVlZGVkKTsKKysgICAgaWYgKGhlYWRlci5zaXplKCkgPCBo ZWFkZXJCeXRlc05lZWRlZCkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgfQorIAorLSAg ICBxaW50NjQgb2xkUG9zID0gZGV2aWNlKCktPnBvcygpOworLSAgICBkZXZpY2UoKS0+c2Vlaygw KTsKKy0KKy0gICAgUVdlYnBIYW5kbGVyICp0aGF0ID0gY29uc3RfY2FzdDxRV2VicEhhbmRsZXIg Kj4odGhpcyk7CistICAgIFFCeXRlQXJyYXkgaGVhZGVyID0gZGV2aWNlKCktPnBlZWsoc2l6ZW9m KFdlYlBCaXRzdHJlYW1GZWF0dXJlcykpOworKyAgICAvLyBXZSBkbyBubyByYW5kb20gYWNjZXNz IGR1cmluZyBkZWNvZGluZywganVzdCBhIHJlYWRBbGwoKSBvZiB0aGUgd2hvbGUgaW1hZ2UgZmls ZS4gU28gaWYKKysgICAgLy8gaWYgaXQgaXMgYWxsIGF2YWlsYWJsZSBhbHJlYWR5LCB3ZSBjYW4g YWNjZXB0IGEgc2VxdWVudGlhbCBkZXZpY2UuIFRoZSByaWZmIGhlYWRlciBjb250YWlucworKyAg ICAvLyB0aGUgZmlsZSBzaXplIG1pbnVzIDggYnl0ZXMgaGVhZGVyCisrICAgIHFpbnQ2NCBieXRl U2l6ZSA9IHFGcm9tTGl0dGxlRW5kaWFuPHF1aW50MzI+KGhlYWRlci5jb25zdERhdGEoKSArIDQp OworKyAgICBpZiAoZGV2aWNlKCktPmlzU2VxdWVudGlhbCgpICYmIGRldmljZSgpLT5ieXRlc0F2 YWlsYWJsZSgpIDwgYnl0ZVNpemUgKyA4KSB7CisrICAgICAgICBxV2FybmluZygpIDw8ICJRV2Vi cEhhbmRsZXI6IEluc3VmZmljaWVudCBkYXRhIGF2YWlsYWJsZSBpbiBzZXF1ZW50aWFsIGRldmlj ZSI7CisrICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKyAgICAgaWYgKFdlYlBHZXRGZWF0 dXJlcygoY29uc3QgdWludDhfdCopaGVhZGVyLmNvbnN0RGF0YSgpLCBoZWFkZXIuc2l6ZSgpLCAm KHRoYXQtPm1fZmVhdHVyZXMpKSA9PSBWUDhfU1RBVFVTX09LKSB7CisgICAgICAgICBpZiAobV9m ZWF0dXJlcy5oYXNfYW5pbWF0aW9uKSB7CisgICAgICAgICAgICAgLy8gRm9yIGFuaW1hdGlvbiwg d2UgaGF2ZSB0byByZWFkIGFuZCBzY2FuIHdob2xlIGZpbGUgdG8gZGV0ZXJtaW5lIGxvb3AgY291 bnQgYW5kIGltYWdlcyBjb3VudAorLSAgICAgICAgICAgIGRldmljZSgpLT5zZWVrKG9sZFBvcyk7 CistCisgICAgICAgICAgICAgaWYgKHRoYXQtPmVuc3VyZURlbXV4ZXIoKSkgeworICAgICAgICAg ICAgICAgICB0aGF0LT5tX2xvb3AgPSBXZWJQRGVtdXhHZXRJKG1fZGVtdXhlciwgV0VCUF9GRl9M T09QX0NPVU5UKTsKKyAgICAgICAgICAgICAgICAgdGhhdC0+bV9mcmFtZUNvdW50ID0gV2ViUERl bXV4R2V0SShtX2RlbXV4ZXIsIFdFQlBfRkZfRlJBTUVfQ09VTlQpOworQEAgLTEyNiwxNyArMTI5 LDEzIEBAIGJvb2wgUVdlYnBIYW5kbGVyOjplbnN1cmVTY2FubmVkKCkgY29uc3QKKyAgICAgICAg ICAgICAgICAgaWYgKHRoYXQtPm1fZmVhdHVyZXMuaGFzX2FscGhhKQorICAgICAgICAgICAgICAg ICAgICAgdGhhdC0+bV9jb21wb3NpdGVkLT5maWxsKFF0Ojp0cmFuc3BhcmVudCk7CisgCistICAg ICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCByZXNldCBkZXZpY2UgcG9zaXRpb24gc2luY2Ugd2Ug aGF2ZSByZWFkIGluIGFsbCBkYXRhCisgICAgICAgICAgICAgICAgIG1fc2NhblN0YXRlID0gU2Nh blN1Y2Nlc3M7CistICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgIH0K KyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgbV9zY2FuU3RhdGUgPSBTY2FuU3VjY2Vz czsKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBkZXZpY2UoKS0+c2VlayhvbGRQb3MpOwor LQorICAgICByZXR1cm4gbV9zY2FuU3RhdGUgPT0gU2NhblN1Y2Nlc3M7CisgfQorIAorQEAgLTE1 OSw3ICsxNTgsNyBAQCBib29sIFFXZWJwSGFuZGxlcjo6ZW5zdXJlRGVtdXhlcigpCisgCisgYm9v bCBRV2VicEhhbmRsZXI6OnJlYWQoUUltYWdlICppbWFnZSkKKyB7CistICAgIGlmICghZW5zdXJl U2Nhbm5lZCgpIHx8IGRldmljZSgpLT5pc1NlcXVlbnRpYWwoKSB8fCAhZW5zdXJlRGVtdXhlcigp KQorKyAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSB8fCAhZW5zdXJlRGVtdXhlcigpKQorICAgICAg ICAgcmV0dXJuIGZhbHNlOworIAorICAgICBRUmVjdCBwcmV2RnJhbWVSZWN0OworU3VibW9kdWxl IHF0bG9jYXRpb24gOThhNWM1MTEuLmY5OTFlMjhjOgorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24v c3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29uIGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vY29u ZmlndXJlLmpzb24KK2luZGV4IDZkMDFhOWEzLi5kMWU2MjNhMSAxMDA2NDQKKy0tLSBhL3F0bG9j YXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29uCisrKysgYi9xdGxvY2F0aW9uL3NyYy9s b2NhdGlvbi9jb25maWd1cmUuanNvbgorQEAgLTksNyArOSw3IEBACisgICAgICAgICAgICAgImxh YmVsIjogIlF0LmxhYnMubG9jYXRpb24gZXhwZXJpbWVudGFsIFFNTCBwbHVnaW4iLAorICAgICAg ICAgICAgICJwdXJwb3NlIjogIlByb3ZpZGVzIGV4cGVyaW1lbnRhbCBRdExvY2F0aW9uIFFNTCB0 eXBlcyIsCisgICAgICAgICAgICAgInNlY3Rpb24iOiAiTG9jYXRpb24iLAorLSAgICAgICAgICAg ICJjb25kaXRpb24iOiAiY29uZmlnLm9wZW5nbCIsCisrICAgICAgICAgICAgImNvbmRpdGlvbiI6 ICJmZWF0dXJlcy5vcGVuZ2wiLAorICAgICAgICAgICAgICJvdXRwdXQiOiBbICJwcml2YXRlRmVh dHVyZSIgXQorICAgICAgICAgfSwKKyAgICAgICAgICJnZW9zZXJ2aWNlc19vc20iOiB7CitkaWZm IC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdlb21hcG9iamVjdHFz Z3N1cHBvcnQuY3BwIGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdlb21hcG9i amVjdHFzZ3N1cHBvcnQuY3BwCitpbmRleCBhOTc4NTczZC4uMTFlMTQ2NmYgMTAwNjQ0CistLS0g YS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9y dC5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmpl Y3Rxc2dzdXBwb3J0LmNwcAorQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFFHZW9NYXBPYmplY3RR U0dTdXBwb3J0Ojp1cGRhdGVNYXBPYmplY3RzKFFTR05vZGUgKnJvb3QsIFFRdWlja1dpbmRvdyAq d2luZAorICAgICBpZiAoIXJvb3QpCisgICAgICAgICByZXR1cm47CisgCistICAgIGlmIChtX21h cE9iamVjdHNSb290Tm9kZSAmJiBtX21hcE9iamVjdHNSb290Tm9kZS0+cGFyZW50KCkpCisrICAg IGlmIChtX21hcE9iamVjdHNSb290Tm9kZSAmJiAhbV9tYXBPYmplY3RzUm9vdE5vZGUtPnBhcmVu dCgpKQorICAgICAgICAgcm9vdC0+YXBwZW5kQ2hpbGROb2RlKG1fbWFwT2JqZWN0c1Jvb3ROb2Rl LmdldCgpKTsKKyAKKyAgICAgaWYgKCFtX21hcE9iamVjdHNSb290Tm9kZSkgeworZGlmZiAtLWdp dCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9jb2RpbmdtYW5h Z2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9l c3JpL2dlb2NvZGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDVhNDA0NjdlLi5kMTIz YzZhOCAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNy aS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9w bHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAor QEAgLTU5LDggKzU5LDEwIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIHN0YXRpYyBjb25zdCBRU3Ry aW5nIGtQcmVmaXhFc3JpKFFTdHJpbmdMaXRlcmFsKCJlc3JpLiIpKTsKKyBzdGF0aWMgY29uc3Qg UVN0cmluZyBrUGFyYW1Vc2VyQWdlbnQoa1ByZWZpeEVzcmkgKyBRU3RyaW5nTGl0ZXJhbCgidXNl cmFnZW50IikpOworIAorLXN0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxHZW9jb2RlKFFTdHJpbmdM aXRlcmFsKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dv cmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIikpOworLXN0YXRpYyBjb25z dCBRU3RyaW5nIGtVcmxSZXZlcnNlR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgiaHR0cDovL2dlb2Nv ZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyL3Jl dmVyc2VHZW9jb2RlIikpOworK3N0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxHZW9jb2RlKFFTdHJp bmdMaXRlcmFsKCJodHRwczovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNl cy8iCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldv cmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIikpOworK3N0YXRpYyBjb25z dCBRU3RyaW5nIGtVcmxSZXZlcnNlR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgKKysgICAgICAgICJo dHRwczovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9j b2RlU2VydmVyL3JldmVyc2VHZW9jb2RlIikpOworIAorIHN0YXRpYyBRU3RyaW5nIGFkZHJlc3NU b1F1ZXJ5KGNvbnN0IFFHZW9BZGRyZXNzICZhZGRyZXNzKQorIHsKK2RpZmYgLS1naXQgYS9xdGxv Y2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFyc2VyX2Vz cmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRl anNvbnBhcnNlcl9lc3JpLmNwcAoraW5kZXggMTc0OTJkOTQuLjk2YzEyYjFiIDEwMDY0NAorLS0t IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlanNvbnBh cnNlcl9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9l c3JpL2dlb3JvdXRlanNvbnBhcnNlcl9lc3JpLmNwcAorQEAgLTQ2LDcgKzQ2LDggQEAKKyAKKyBR VF9CRUdJTl9OQU1FU1BBQ0UKKyAKKy0vLyBKU09OIHJlZmVyZW5jZTogaHR0cDovL3Jlc291cmNl cy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2VydmljZV93aXRo X3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisrLy8gSlNPTiByZWZl cmVuY2U6CisrLy8gaHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1y ZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRpb24vMDJyMzAw MDAwMDM2MDAwMDAwLworIAorIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtFcnJvck1lc3NhZ2UoUVN0 cmluZ0xpdGVyYWwoIkVycm9yICUxOiAlMi4iKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga0Vy cm9ySnNvbihRU3RyaW5nTGl0ZXJhbCgiRXJyb3I6IGludmFsaWRlIEpTT04gZG9jdW1lbnQuIikp OworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9n ZW9yb3V0ZXJlcGx5X2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNl cy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5jcHAKK2luZGV4IDhjYWRmYjI5Li45MmI2YmIxMyAx MDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9y b3V0ZXJlcGx5X2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZp Y2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcAorQEAgLTQ0LDcgKzQ0LDggQEAKKyAKKyBR VF9CRUdJTl9OQU1FU1BBQ0UKKyAKKy0vLyBKU09OIHJlZmVyZW5jZTogaHR0cDovL3Jlc291cmNl cy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2VydmljZV93aXRo X3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisrLy8gSlNPTiByZWZl cmVuY2U6CisrLy8gaHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1y ZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRpb24vMDJyMzAw MDAwMDM2MDAwMDAwLworIAorIEdlb1JvdXRlUmVwbHlFc3JpOjpHZW9Sb3V0ZVJlcGx5RXNyaShR TmV0d29ya1JlcGx5ICpyZXBseSwgY29uc3QgUUdlb1JvdXRlUmVxdWVzdCAmcmVxdWVzdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU9iamVjdCAqcGFyZW50KSA6Citk aWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3Jv dXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9z ZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitpbmRleCAwZTZi YzJjNy4uZWQ2MTNmNGIgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3Nl cnZpY2VzL2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0bG9j YXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5nbWFuYWdlcmVuZ2lu ZV9lc3JpLmNwcAorQEAgLTQ4LDcgKzQ4LDggQEAgc3RhdGljIGNvbnN0IFFTdHJpbmcga1ByZWZp eEVzcmkoUVN0cmluZ0xpdGVyYWwoImVzcmkuIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQ YXJhbVVzZXJBZ2VudChrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRlcmFsKCJ1c2VyYWdlbnQiKSk7 Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1BhcmFtVG9rZW4oa1ByZWZpeEVzcmkgKyBRU3RyaW5n TGl0ZXJhbCgidG9rZW4iKSk7CisgCistc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybFJvdXRpbmco UVN0cmluZ0xpdGVyYWwoImh0dHA6Ly9yb3V0ZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZp Y2VzL1dvcmxkL1JvdXRlL05BU2VydmVyL1JvdXRlX1dvcmxkL3NvbHZlIikpOworK3N0YXRpYyBj b25zdCBRU3RyaW5nIGtVcmxSb3V0aW5nKFFTdHJpbmdMaXRlcmFsKAorKyAgICAgICAgImh0dHBz Oi8vcm91dGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9Sb3V0ZS9OQVNl cnZlci9Sb3V0ZV9Xb3JsZC9zb2x2ZSIpKTsKKyAKKyBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVz cmk6Okdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaShjb25zdCBRVmFyaWFudE1hcCAmcGFyYW1l dGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRR2VvU2VydmljZVByb3ZpZGVyOjpFcnJvciAqZXJyb3IsCitAQCAtNzAsNyArNzEs OCBAQCBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6On5HZW9Sb3V0aW5nTWFuYWdlckVuZ2lu ZUVzcmkoKQorIHsKKyB9CisgCistLy8gUkVTVCByZWZlcmVuY2U6IGh0dHA6Ly9yZXNvdXJjZXMu YXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8vMDJyMzAwMDAw MDM2MDAwMDAwCisrLy8gUkVTVCByZWZlcmVuY2U6CisrLy8gaHR0cHM6Ly9yZXNvdXJjZXMuYXJj Z2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8vMDJyMzAwMDAwMDM2 MDAwMDAwCisgCisgUUdlb1JvdXRlUmVwbHkgKkdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6 Y2FsY3VsYXRlUm91dGUoY29uc3QgUUdlb1JvdXRlUmVxdWVzdCAmcmVxdWVzdCkKKyB7CitAQCAt MTI1LDcgKzEyNyw3IEBAIHZvaWQgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpyZXBseUVy cm9yKFFHZW9Sb3V0ZVJlcGx5OjpFcnJvciBlcnJvckNvZGUsIGNvCisgUVN0cmluZyBHZW9Sb3V0 aW5nTWFuYWdlckVuZ2luZUVzcmk6OnByZWZlcmVkRGlyZWN0aW9uTGFuZ2FnZSgpCisgeworICAg ICAvLyBsaXN0IG9mIHN1cHBvcnRlZCBsYW5nYWdlcyBpcyBkZWZpbmVkIGluOgorLSAgICAvLyBo dHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvaW5kZXgu aHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorKyAgICAvLyBodHRwczovL3Jlc291cmNlcy5hcmNn aXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYw MDAwMDAKKyAgICAgY29uc3QgUVN0cmluZ0xpc3Qgc3VwcG9ydGVkTGFuZ3VhZ2VzID0geworICAg ICAgICAgImFyIiwgLy8gR2VuZXJhdGUgZGlyZWN0aW9ucyBpbiBBcmFiaWMKKyAgICAgICAgICJj cyIsIC8vIEdlbmVyYXRlIGRpcmVjdGlvbnMgaW4gQ3plY2gKK2RpZmYgLS1naXQgYS9xdGxvY2F0 aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVu Z2luZV9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9n ZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitpbmRleCA1ZDE1ODM1ZC4uMjQx NDhmOTUgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vz cmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlv bi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGluZ21hbmFnZXJlbmdp bmVfZXNyaS5jcHAKK0BAIC0yMzAsNyArMjMwLDggQEAgUUdlb01hcCAqR2VvVGlsZWRNYXBwaW5n TWFuYWdlckVuZ2luZUVzcmk6OmNyZWF0ZU1hcCgpCisgLy8gJHt5fSA9IFkKKyAvLyAke3Rva2Vu fSA9IFRva2VuCisgCistLy8gdGVtcGxhdGUgPSAnaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGlu ZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVyL3RpbGUv e3t6fX0ve3t5fX0ve3t4fX0ucG5nJworKy8vIHRlbXBsYXRlID0KKysvLyAnaHR0cHM6Ly9zZXJ2 aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFw L01hcFNlcnZlci90aWxlL3t7en19L3t7eX19L3t7eH19LnBuZycKKyAKKyBib29sIEdlb1RpbGVk TWFwcGluZ01hbmFnZXJFbmdpbmVFc3JpOjppbml0aWFsaXplTWFwU291cmNlcyhRR2VvU2Vydmlj ZVByb3ZpZGVyOjpFcnJvciAqZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyAqZXJyb3JTdHJpbmcsCitkaWZm IC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMuanNv biBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24KK2lu ZGV4IDgxNjdhZTdkLi44NjJlMDg3ZCAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdp bnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24KKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdp bnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24KK0BAIC02LDggKzYsOCBAQAorICAgICAgICAg ICAgICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIFN0cmVldCBNYXAiLAorICAg ICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAor LSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJj R0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU3RyZWV0X01hcC9NYXBTZXJ2ZXIiLAorLSAgICAgICAg ICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5j b20vaG9tZS9pdGVtLmh0bWw/aWQ9M2I5MzMzNzk4M2U5NDM2ZjhkYjk1MGUzOGE4NjI5YWYnPkVz cmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2Vydmlj ZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9TdHJlZXRfTWFw L01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhy ZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9M2I5MzMzNzk4M2U5 NDM2ZjhkYjk1MGUzOGE4NjI5YWYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0s CisgCisgICAgICAgICB7CitAQCAtMTYsOCArMTYsOCBAQAorICAgICAgICAgICAgICIiOiAiQXJj R0lTIE9ubGluZSBXb3JsZCBJbWFnZXJ5IiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwK KyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6 Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9JbWFn ZXJ5L01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxh IGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0xMGRmMjI3OWY5 Njg0ZTRhOWY2YTdmMDhmZWJhYzJhOSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAg ICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9z ZXJ2aWNlcy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdo dFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVt Lmh0bWw/aWQ9MTBkZjIyNzlmOTY4NGU0YTlmNmE3ZjA4ZmViYWMyYTknPkVzcmk8L2E+IGNvbnRy aWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMjYsOCArMjYsOCBAQAor ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIFRlcnJhaW4g QmFzZSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdo dCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxp bmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RlcnJhaW5fQmFzZS9NYXBTZXJ2ZXIi LAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8v d3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YzYxYWQ4YWIwMTdkNDllMWE4MmY1ODBl ZTEyOTg5MzEnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0 dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRf VGVycmFpbl9CYXNlL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAi JmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9 YzYxYWQ4YWIwMTdkNDllMWE4MmY1ODBlZTEyOTg5MzEnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIK KyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMzYsOCArMzYsOCBAQAorICAgICAgICAg ICAgICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIFRvcG9ncmFwaHkiLAorICAg ICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAor LSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJ Uy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAg ImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9o b21lL2l0ZW0uaHRtbD9pZD0zMGU1ZmUzMTQ5YzM0ZGYxYmE5MjJlNmY1YmJmODA4Zic+RXNyaTwv YT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJj Z2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2 ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRw czovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTMwZTVmZTMxNDljMzRkZjFiYTky MmU2ZjViYmY4MDhmJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAg ICAgICAgeworQEAgLTQ2LDggKzQ2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi VGhpcyBtYXAgcHJlc2VudHMgbGFuZCBjb3ZlciBhbmQgZGV0YWlsZWQgdG9wb2dyYXBoaWMgbWFw cyBmb3IgdGhlIFVuaXRlZCBTdGF0ZXMuIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwK KyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6 Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1VTQV9Ub3Bv X01hcHMvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsg PGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTk5Y2Q1ZmJk OTg5MzQwMjg4MDJiNGY3OTdjNGIxNzMyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAg ICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jl c3Qvc2VydmljZXMvVVNBX1RvcG9fTWFwcy9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5 cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUv aXRlbS5odG1sP2lkPTk5Y2Q1ZmJkOTg5MzQwMjg4MDJiNGY3OTdjNGIxNzMyJz5Fc3JpPC9hPiBj b250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTU2LDggKzU2LDgg QEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTmF0aW9uYWwgR2VvZ3JhcGhpYyBXb3Js ZCBNYXAiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmln aHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNv bmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL05hdEdlb19Xb3JsZF9NYXAvTWFwU2VydmVy IiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDov L3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWI5YjFiNDIyMTk4OTQ0ZmJiZDUyNTBi MzI0MTY5MWI2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJo dHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvTmF0 R2VvX1dvcmxkX01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0Ijog IiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lk PWI5YjFiNDIyMTk4OTQ0ZmJiZDUyNTBiMzI0MTY5MWI2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMi CisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTY2LDggKzY2LDggQEAKKyAgICAgICAg ICAgICAiZGVzY3JpcHRpb24iOiAiVGhlbWF0aWMgY29udGVudCBwcm92aWRpbmcgYSBuZXV0cmFs IGJhY2tncm91bmQgd2l0aCBtaW5pbWFsIGNvbG9ycyIsCisgICAgICAgICAgICAgIm1vYmlsZSI6 IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6 ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9D YW52YXMvV29ybGRfTGlnaHRfR3JheV9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNv cHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21l L2l0ZW0uaHRtbD9pZD1lZDcxMmNiMWRiM2U0YmFlOWU4NTMyOTA0MGZiOWE0OSc+RXNyaTwvYT4g Y29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNn aXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9MaWdodF9HcmF5 X0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsg PGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1lZDcxMmNi MWRiM2U0YmFlOWU4NTMyOTA0MGZiOWE0OSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAg ICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC03Niw4ICs3Niw4IEBACisgICAgICAgICAgICAgImRl c2NyaXB0aW9uIjogIk5hdHVyYWwgRWFydGggcGh5c2ljYWwgbWFwIGZvciB0aGUgd29ybGQiLAor ICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxz ZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9B cmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9QaHlzaWNhbF9NYXAvTWFwU2VydmVyIiwKKy0gICAg ICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNn aXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWM0ZWM3MjJhMWNkMzRjZjBhMjM5MDRhYWRmODkyM2Ew Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3Nl cnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1BoeXNpY2Fs X01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8 YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWM0ZWM3MjJh MWNkMzRjZjBhMjM5MDRhYWRmODkyM2EwJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAg ICB9LAorIAorICAgICAgICAgeworQEAgLTg2LDggKzg2LDggQEAKKyAgICAgICAgICAgICAiZGVz Y3JpcHRpb24iOiAiUG9ydHJheXMgc3VyZmFjZSBlbGV2YXRpb24gYXMgc2hhZGVkIHJlbGllZiIs CisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZh bHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29t L0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1NoYWRlZF9SZWxpZWYvTWFwU2VydmVyIiwKKy0g ICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5h cmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTljNTM3MGQwYjU0ZjRkZTFiNDhhMzc5MmQ3Mzc3 ZmYyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczov L3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1NoYWRl ZF9SZWxpZWYvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29w eTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD05YzUz NzBkMGI1NGY0ZGUxYjQ4YTM3OTJkNzM3N2ZmMic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAg ICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC05Niw4ICs5Niw4IEBACisgICAgICAgICAgICAg ImRlc2NyaXB0aW9uIjogIlRoaXMgbWFwIGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgYXMgYSBiYXNl bWFwIGJ5IG1hcmluZSBHSVMgcHJvZmVzc2lvbmFscyBhbmQgYXMgYSByZWZlcmVuY2UgbWFwIGJ5 IGFueW9uZSBpbnRlcmVzdGVkIGluIG9jZWFuIGRhdGEiLAorICAgICAgICAgICAgICJtb2JpbGUi OiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJs IjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9P Y2Vhbi9Xb3JsZF9PY2Vhbl9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdo dFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0u aHRtbD9pZD0xZTEyNmU3NTIwZjk0NjZjOWNhMjhiOGYyOGI1ZTUwMCc+RXNyaTwvYT4gY29udHJp YnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5l LmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9PY2Vhbi9Xb3JsZF9PY2Vhbl9CYXNlL01hcFNlcnZl ciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBz Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MWUxMjZlNzUyMGY5NDY2YzljYTI4 YjhmMjhiNWU1MDAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAg ICAgICB7CitAQCAtMTA2LDggKzEwNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog IlRoZW1hdGljIGNvbnRlbnQgcHJvdmlkaW5nIGEgbmV1dHJhbCBiYWNrZ3JvdW5kIHdpdGggbWlu aW1hbCBjb2xvcnMiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAg ICAibmlnaHQiOiB0cnVlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFy Y2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0RhcmtfR3Jh eV9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7 IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1hMjg0YTli OTliMzQ0NmEzOTEwZDQxNDRhNTA5OTBmNic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAg ICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9y ZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9EYXJrX0dyYXlfQmFzZS9NYXBTZXJ2ZXIiLAorKyAg ICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5h cmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWEyODRhOWI5OWIzNDQ2YTM5MTBkNDE0NGE1MDk5 MGY2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgewor QEAgLTExNiw4ICsxMTYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZUxvcm1l 4oCZcyB0b3BvZ3JhcGhpYyBiYXNlbWFwIGlzIGEgc2VhbWxlc3MgZ2xvYmFsIGRhdGEgc2V0IHRo YXQgcG9ydHJheXMgdHJhbnNwb3J0YXRpb24sIGh5ZHJvZ3JhcGh5LCBqdXJpc2RpY3Rpb24gYm91 bmRhcmllcywgYW5kIG1ham9yIGdlb2dyYXBoaWMgZmVhdHVyZXMiLAorICAgICAgICAgICAgICJt b2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAg ICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2 aWNlcy9TcGVjaWFsdHkvRGVMb3JtZV9Xb3JsZF9CYXNlX01hcC9NYXBTZXJ2ZXIiLAorLSAgICAg ICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dp cy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjE2NWMzZGY0NTNlNGJlNmI1YWM0ZmRiMjQxZWZmYmUn PkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2Vy dmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvU3BlY2lhbHR5L0RlTG9y bWVfV29ybGRfQmFzZV9NYXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4 dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRt bD9pZD1iMTY1YzNkZjQ1M2U0YmU2YjVhYzRmZGIyNDFlZmZiZSc+RXNyaTwvYT4gY29udHJpYnV0 b3JzIgorICAgICAgICAgfQorICAgICBdCisgfQorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3Jj L3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAgYi9x dGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2VtYW5hZ2VyZW5naW5l X2VzcmkuY3BwCitpbmRleCAzODU4ZGRmNS4uYWY2NmYyOGUgMTAwNjQ0CistLS0gYS9xdGxvY2F0 aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2VtYW5hZ2VyZW5naW5lX2Vzcmku Y3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2Vt YW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtNjMsOCArNjMsMTAgQEAgc3RhdGljIGNvbnN0IFFT dHJpbmcga0NvdW50cmllc0tleShRU3RyaW5nTGl0ZXJhbCgiZGV0YWlsZWRDb3VudHJpZXMiKSk7 Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga0xvY2FsaXplZE5hbWVzS2V5KFFTdHJpbmdMaXRlcmFs KCJsb2NhbGl6ZWROYW1lcyIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrTWF4TG9jYXRpb25z S2V5KFFTdHJpbmdMaXRlcmFsKCJtYXhMb2NhdGlvbnMiKSk7CisgCistc3RhdGljIGNvbnN0IFFV cmwga1VybEdlb2NvZGVTZXJ2ZXIoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jl c3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlcj9mPXBqc29uIik7Cistc3RhdGljIGNvbnN0 IFFVcmwga1VybEZpbmRBZGRyZXNzQ2FuZGlkYXRlcygiaHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNv bS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNzQ2Fu ZGlkYXRlcyIpOworK3N0YXRpYyBjb25zdCBRVXJsIGtVcmxHZW9jb2RlU2VydmVyKAorKyAgICAg ICAgImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxk L0dlb2NvZGVTZXJ2ZXI/Zj1wanNvbiIpOworK3N0YXRpYyBjb25zdCBRVXJsIGtVcmxGaW5kQWRk cmVzc0NhbmRpZGF0ZXMoImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3Nl cnZpY2VzL1dvcmxkLyIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJHZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNzQ2FuZGlkYXRlcyIpOworIAorIFBsYWNlTWFu YWdlckVuZ2luZUVzcmk6OlBsYWNlTWFuYWdlckVuZ2luZUVzcmkoY29uc3QgUVZhcmlhbnRNYXAg JnBhcmFtZXRlcnMsIFFHZW9TZXJ2aWNlUHJvdmlkZXI6OkVycm9yICplcnJvciwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgKmVycm9yU3Ry aW5nKSA6CitTdWJtb2R1bGUgcXRtdWx0aW1lZGlhIGYwMzQ0MDc5Li4wZDdjYzMzYToKK2RpZmYg LS1naXQgYS9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1dF9w dWxzZS5jcHAgYi9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1 dF9wdWxzZS5jcHAKK2luZGV4IDJiNTMyNTEzMi4uYjY4YjRhZjFiIDEwMDY0NAorLS0tIGEvcXRt dWx0aW1lZGlhL3NyYy9wbHVnaW5zL3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3BwCisr KysgYi9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1dF9wdWxz ZS5jcHAKK0BAIC00MDIsNiArNDAyLDggQEAgaW50IFFQdWxzZUF1ZGlvSW5wdXQ6OmJ5dGVzUmVh ZHkoKSBjb25zdAorIAorIHFpbnQ2NCBRUHVsc2VBdWRpb0lucHV0OjpyZWFkKGNoYXIgKmRhdGEs IHFpbnQ2NCBsZW4pCisgeworKyAgICBRX0FTU0VSVChkYXRhICE9IG51bGxwdHIgfHwgbGVuID09 IDApOworKworICAgICBtX2J5dGVzQXZhaWxhYmxlID0gY2hlY2tCeXRlc1JlYWR5KCk7CisgCisg ICAgIHNldEVycm9yKFFBdWRpbzo6Tm9FcnJvcik7CitAQCAtNDExLDcgKzQxMyw4IEBAIHFpbnQ2 NCBRUHVsc2VBdWRpb0lucHV0OjpyZWFkKGNoYXIgKmRhdGEsIHFpbnQ2NCBsZW4pCisgCisgICAg IGlmICghbV9wdWxsTW9kZSAmJiAhbV90ZW1wQnVmZmVyLmlzRW1wdHkoKSkgeworICAgICAgICAg cmVhZEJ5dGVzID0gcU1pbihzdGF0aWNfY2FzdDxpbnQ+KGxlbiksIG1fdGVtcEJ1ZmZlci5zaXpl KCkpOworLSAgICAgICAgbWVtY3B5KGRhdGEsIG1fdGVtcEJ1ZmZlci5jb25zdERhdGEoKSwgcmVh ZEJ5dGVzKTsKKysgICAgICAgIGlmIChyZWFkQnl0ZXMpCisrICAgICAgICAgICAgbWVtY3B5KGRh dGEsIG1fdGVtcEJ1ZmZlci5jb25zdERhdGEoKSwgcmVhZEJ5dGVzKTsKKyAgICAgICAgIG1fdG90 YWxUaW1lVmFsdWUgKz0gcmVhZEJ5dGVzOworIAorICAgICAgICAgaWYgKHJlYWRCeXRlcyA8IG1f dGVtcEJ1ZmZlci5zaXplKCkpIHsKK0BAIC01MDIsOSArNTA1LDEwIEBAIHFpbnQ2NCBRUHVsc2VB dWRpb0lucHV0OjpyZWFkKGNoYXIgKmRhdGEsIHFpbnQ2NCBsZW4pCisgCisgdm9pZCBRUHVsc2VB dWRpb0lucHV0OjphcHBseVZvbHVtZShjb25zdCB2b2lkICpzcmMsIHZvaWQgKmRlc3QsIGludCBs ZW4pCisgeworKyAgICBRX0FTU0VSVCgoc3JjICYmIGRlc3QpIHx8IGxlbiA9PSAwKTsKKyAgICAg aWYgKG1fdm9sdW1lIDwgMS5mKQorICAgICAgICAgUUF1ZGlvSGVscGVySW50ZXJuYWw6OnFNdWx0 aXBseVNhbXBsZXMobV92b2x1bWUsIG1fZm9ybWF0LCBzcmMsIGRlc3QsIGxlbik7CistICAgIGVs c2UKKysgICAgZWxzZSBpZiAobGVuKQorICAgICAgICAgbWVtY3B5KGRlc3QsIHNyYywgbGVuKTsK KyB9CisgCitTdWJtb2R1bGUgcXRwaW0gMDJlZmVmNWUuLi5mOWE4ZjBmYyAoY29tbWl0cyBub3Qg cHJlc2VudCkKK1N1Ym1vZHVsZSBxdHF1aWNrM2QgYjg1Y2Y2MjIuLjQ3ZGVmYzhiOgorZGlmZiAt LWdpdCBhL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9hc3NpbXAvYXNzaW1w LnBybyBiL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9hc3NpbXAvYXNzaW1w LnBybworaW5kZXggY2E1YzQ5OWUuLjE3NGEwNzViIDEwMDY0NAorLS0tIGEvcXRxdWljazNkL3Ny Yy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJvCisrKysgYi9xdHF1aWNr M2Qvc3JjL3BsdWdpbnMvYXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8KK0BAIC0xMCw3 ICsxMCw3IEBAIFFUX0ZPUl9DT05GSUcgKz0gYXNzZXRpbXBvcnRlcnMtcHJpdmF0ZQorIGluY2x1 ZGUoJCRPVVRfUFdELy4uL3F0YXNzZXRpbXBvcnRlcnMtY29uZmlnLnByaSkKKyAKKyBxdENvbmZp ZyhzeXN0ZW0tYXNzaW1wKTohaWYoY3Jvc3NfY29tcGlsZTpob3N0X2J1aWxkKSB7CistICAgIFFN QUtFX1VTRV9QUklWQVRFICs9IGFzc2ltcAorKyAgICBRTUFLRV9VU0VfUFJJVkFURSArPSBxdWlj azNkLWFzc2ltcAorIH0gZWxzZSB7CisgICAgIGluY2x1ZGUoLi4vLi4vLi4vM3JkcGFydHkvYXNz aW1wL2Fzc2ltcC5wcmkpCisgfQorU3VibW9kdWxlIHF0cXVpY2tjb250cm9sczIgM2E2NTdkYzAu LjU2Y2U4MjMzOgorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL2ltcG9ydHMvcGxh dGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcCBiL3F0cXVpY2tjb250cm9sczIv c3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcAoraW5k ZXggZTVmZTczNGY3Li5lMzY5MjI3NzUgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3Ny Yy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdldHMvcXdpZGdldHBsYXRmb3JtbWVudS5jcHAKKysrKyBi L3F0cXVpY2tjb250cm9sczIvc3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxh dGZvcm1tZW51LmNwcAorQEAgLTM4LDYgKzM4LDcgQEAKKyAjaW5jbHVkZSAicXdpZGdldHBsYXRm b3JtbWVudWl0ZW1fcC5oIgorIAorICNpbmNsdWRlIDxRdEd1aS9xd2luZG93Lmg+CisrI2luY2x1 ZGUgPFF0R3VpL3ByaXZhdGUvcWhpZ2hkcGlzY2FsaW5nX3AuaD4KKyAjaW5jbHVkZSA8UXRXaWRn ZXRzL3FtZW51Lmg+CisgI2luY2x1ZGUgPFF0V2lkZ2V0cy9xYWN0aW9uLmg+CisgCitAQCAtMTQ1 LDcgKzE0Niw3IEBAIHZvaWQgUVdpZGdldFBsYXRmb3JtTWVudTo6c2hvd1BvcHVwKGNvbnN0IFFX aW5kb3cgKndpbmRvdywgY29uc3QgUVJlY3QgJnRhcmdldFJlCisgCisgICAgIFFQb2ludCB0YXJn ZXRQb3MgPSB0YXJnZXRSZWN0LmJvdHRvbUxlZnQoKTsKKyAgICAgaWYgKHdpbmRvdykKKy0gICAg ICAgIHRhcmdldFBvcyA9IHdpbmRvdy0+bWFwVG9HbG9iYWwodGFyZ2V0UG9zKTsKKysgICAgICAg IHRhcmdldFBvcyA9IHdpbmRvdy0+bWFwVG9HbG9iYWwoUUhpZ2hEcGk6OmZyb21OYXRpdmVMb2Nh bFBvc2l0aW9uKHRhcmdldFBvcywgd2luZG93KSk7CisgCisgICAgIGNvbnN0IFFXaWRnZXRQbGF0 Zm9ybU1lbnVJdGVtICp3aWRnZXRJdGVtID0gcW9iamVjdF9jYXN0PGNvbnN0IFFXaWRnZXRQbGF0 Zm9ybU1lbnVJdGVtICo+KGl0ZW0pOworICAgICBtX21lbnUtPnBvcHVwKHRhcmdldFBvcywgd2lk Z2V0SXRlbSA/IHdpZGdldEl0ZW0tPmFjdGlvbigpIDogbnVsbHB0cik7CitkaWZmIC0tZ2l0IGEv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9u LmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFj dGJ1dHRvbi5jcHAKK2luZGV4IDk1MGU0ZTA5OS4uYjgxZmJlYTBiIDEwMDY0NAorLS0tIGEvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uLmNw cAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3Ry YWN0YnV0dG9uLmNwcAorQEAgLTM4Nyw2ICszODcsMTcgQEAgdm9pZCBRUXVpY2tBYnN0cmFjdEJ1 dHRvblByaXZhdGU6Oml0ZW1JbXBsaWNpdEhlaWdodENoYW5nZWQoUVF1aWNrSXRlbSAqaXRlbSkK KyAgICAgICAgIGVtaXQgcS0+aW1wbGljaXRJbmRpY2F0b3JIZWlnaHRDaGFuZ2VkKCk7CisgfQor IAorK3ZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0b25Qcml2YXRlOjppdGVtRGVzdHJveWVkKFFRdWlj a0l0ZW0gKml0ZW0pCisreworKyAgICBRX1EoUVF1aWNrQWJzdHJhY3RCdXR0b24pOworKyAgICBR UXVpY2tDb250cm9sUHJpdmF0ZTo6aXRlbURlc3Ryb3llZChpdGVtKTsKKysgICAgaWYgKGl0ZW0g PT0gaW5kaWNhdG9yKSB7CisrICAgICAgICBpbmRpY2F0b3IgPSBudWxscHRyOworKyAgICAgICAg ZW1pdCBxLT5pbXBsaWNpdEluZGljYXRvcldpZHRoQ2hhbmdlZCgpOworKyAgICAgICAgZW1pdCBx LT5pbXBsaWNpdEluZGljYXRvckhlaWdodENoYW5nZWQoKTsKKysgICAgfQorK30KKysKKyBRUXVp Y2tBYnN0cmFjdEJ1dHRvbiAqUVF1aWNrQWJzdHJhY3RCdXR0b25Qcml2YXRlOjpmaW5kQ2hlY2tl ZEJ1dHRvbigpIGNvbnN0CisgeworICAgICBRX1EoY29uc3QgUVF1aWNrQWJzdHJhY3RCdXR0b24p OworQEAgLTExNzYsNiArMTE4NywxMiBAQCBRQWNjZXNzaWJsZTo6Um9sZSBRUXVpY2tBYnN0cmFj dEJ1dHRvbjo6YWNjZXNzaWJsZVJvbGUoKSBjb25zdAorICAgICB9CisgICAgIHJldHVybiBRQWNj ZXNzaWJsZTo6QnV0dG9uOworIH0KKysKKyt2b2lkIFFRdWlja0Fic3RyYWN0QnV0dG9uOjphY2Nl c3NpYmxlUHJlc3NBY3Rpb24oKQorK3sKKysgICAgUV9EKFFRdWlja0Fic3RyYWN0QnV0dG9uKTsK KysgICAgZC0+dHJpZ2dlcigpOworK30KKyAjZW5kaWYKKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitk aWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fi c3RyYWN0YnV0dG9uX3AuaCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2thYnN0cmFjdGJ1dHRvbl9wLmgKK2luZGV4IDBmYTQ4OTgwZS4uYWI2NjIyMGQwIDEwMDY0 NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3Ry YWN0YnV0dG9uX3AuaAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMy L3FxdWlja2Fic3RyYWN0YnV0dG9uX3AuaAorQEAgLTIwOSw2ICsyMDksNyBAQCBwcm90ZWN0ZWQ6 CisgI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorICAgICB2b2lkIGFjY2Vzc2liaWxpdHlB Y3RpdmVDaGFuZ2VkKGJvb2wgYWN0aXZlKSBvdmVycmlkZTsKKyAgICAgUUFjY2Vzc2libGU6OlJv bGUgYWNjZXNzaWJsZVJvbGUoKSBjb25zdCBvdmVycmlkZTsKKysgICAgUV9JTlZPS0FCTEUgdm9p ZCBhY2Nlc3NpYmxlUHJlc3NBY3Rpb24oKTsKKyAjZW5kaWYKKyAKKyBwcml2YXRlOgorZGlmZiAt LWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFj dGJ1dHRvbl9wX3AuaCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVp Y2thYnN0cmFjdGJ1dHRvbl9wX3AuaAoraW5kZXggOTI5MWMxYTg3Li5iNzI5NzIwZjIgMTAwNjQ0 CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJh Y3RidXR0b25fcF9wLmgKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVz Mi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wX3AuaAorQEAgLTEwOSw2ICsxMDksNyBAQCBwdWJsaWM6 CisgCisgICAgIHZvaWQgaXRlbUltcGxpY2l0V2lkdGhDaGFuZ2VkKFFRdWlja0l0ZW0gKml0ZW0p IG92ZXJyaWRlOworICAgICB2b2lkIGl0ZW1JbXBsaWNpdEhlaWdodENoYW5nZWQoUVF1aWNrSXRl bSAqaXRlbSkgb3ZlcnJpZGU7CisrICAgIHZvaWQgaXRlbURlc3Ryb3llZChRUXVpY2tJdGVtICpp dGVtKSBvdmVycmlkZTsKKyAKKyAgICAgLy8gY29waWVkIGZyb20gcWFic3RyYWN0YnV0dG9uLmNw cAorICAgICBzdGF0aWMgY29uc3QgaW50IEFVVE9fUkVQRUFUX0RFTEFZID0gMzAwOworZGlmZiAt LWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rpb24u Y3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5j cHAKK2luZGV4IDIwNDFlNzc0MS4uODYxMGNkZmFlIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAKKysrKyBiL3F0cXVpY2tj b250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rpb24uY3BwCitAQCAtMTQ1LDcg KzE0NSw3IEBAIGludCBRUXVpY2tBY3Rpb25Qcml2YXRlOjpTaG9ydGN1dEVudHJ5OjpzaG9ydGN1 dElkKCkgY29uc3QKKyAKKyB2b2lkIFFRdWlja0FjdGlvblByaXZhdGU6OlNob3J0Y3V0RW50cnk6 OmdyYWIoY29uc3QgUUtleVNlcXVlbmNlICZzaG9ydGN1dCwgYm9vbCBlbmFibGVkKQorIHsKKy0g ICAgaWYgKHNob3J0Y3V0LmlzRW1wdHkoKSkKKysgICAgaWYgKHNob3J0Y3V0LmlzRW1wdHkoKSB8 fCBtX3Nob3J0Y3V0SWQpCisgICAgICAgICByZXR1cm47CisgCisgICAgIFF0OjpTaG9ydGN1dENv bnRleHQgY29udGV4dCA9IFF0OjpXaW5kb3dTaG9ydGN1dDsgLy8gVE9ETworZGlmZiAtLWdpdCBh L3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250YWluZXIuY3Bw IGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5j cHAKK2luZGV4IGYzOGMyYjA5Yy4uNmVlZDJhMDI0IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAKKysrKyBiL3F0cXVp Y2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250YWluZXIuY3BwCitAQCAt MjI1LDYgKzIyNSw3IEBAIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6Y2xlYW51cCgpCisg ICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoY29udGVudE1vZGVsLCAmUVFtbE9iamVjdE1vZGVsOjpj b3VudENoYW5nZWQsIHEsICZRUXVpY2tDb250YWluZXI6OmNvdW50Q2hhbmdlZCk7CisgICAgIFFP YmplY3Q6OmRpc2Nvbm5lY3QoY29udGVudE1vZGVsLCAmUVFtbE9iamVjdE1vZGVsOjpjaGlsZHJl bkNoYW5nZWQsIHEsICZRUXVpY2tDb250YWluZXI6OmNvbnRlbnRDaGlsZHJlbkNoYW5nZWQpOwor ICAgICBkZWxldGUgY29udGVudE1vZGVsOworKyAgICBjb250ZW50TW9kZWwgPSBudWxscHRyOwor IH0KKyAKKyBRUXVpY2tJdGVtICpRUXVpY2tDb250YWluZXJQcml2YXRlOjppdGVtQXQoaW50IGlu ZGV4KSBjb25zdAorQEAgLTQzNiw3ICs0MzcsNyBAQCB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZh dGU6OmNvbnRlbnRDaGlsZHJlbl9jbGVhcihRUW1sTGlzdFByb3BlcnR5PFFRdWlja0l0ZW0+Cisg dm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjp1cGRhdGVDb250ZW50V2lkdGgoKQorIHsKKyAg ICAgUV9RKFFRdWlja0NvbnRhaW5lcik7CistICAgIGlmIChoYXNDb250ZW50V2lkdGggfHwgcUZ1 enp5Q29tcGFyZShjb250ZW50V2lkdGgsIGltcGxpY2l0Q29udGVudFdpZHRoKSkKKysgICAgaWYg KGhhc0NvbnRlbnRXaWR0aCB8fCBxRnV6enlDb21wYXJlKGNvbnRlbnRXaWR0aCwgaW1wbGljaXRD b250ZW50V2lkdGgpIHx8ICFjb250ZW50TW9kZWwpCisgICAgICAgICByZXR1cm47CisgCisgICAg IGNvbnRlbnRXaWR0aCA9IGltcGxpY2l0Q29udGVudFdpZHRoOworQEAgLTQ0Niw3ICs0NDcsNyBA QCB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRXaWR0aCgpCisgdm9p ZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjp1cGRhdGVDb250ZW50SGVpZ2h0KCkKKyB7CisgICAg IFFfUShRUXVpY2tDb250YWluZXIpOworLSAgICBpZiAoaGFzQ29udGVudEhlaWdodCB8fCBxRnV6 enlDb21wYXJlKGNvbnRlbnRIZWlnaHQsIGltcGxpY2l0Q29udGVudEhlaWdodCkpCisrICAgIGlm IChoYXNDb250ZW50SGVpZ2h0IHx8IHFGdXp6eUNvbXBhcmUoY29udGVudEhlaWdodCwgaW1wbGlj aXRDb250ZW50SGVpZ2h0KSB8fCAhY29udGVudE1vZGVsKQorICAgICAgICAgcmV0dXJuOworIAor ICAgICBjb250ZW50SGVpZ2h0ID0gaW1wbGljaXRDb250ZW50SGVpZ2h0OworZGlmZiAtLWdpdCBh L3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcCBi L3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcAor aW5kZXggYmJiZDBlNjIyLi4xZjRiNDczNDMgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMy L3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbC5jcHAKKysrKyBiL3F0cXVpY2tjb250 cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcAorQEAgLTg0NSw2ICs4 NDUsMTMgQEAgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6ZXhlY3V0ZUJhY2tncm91bmQoYm9v bCBjb21wbGV0ZSkKKyAgICAgICAgIHF1aWNrQ29tcGxldGVEZWZlcnJlZChxLCBiYWNrZ3JvdW5k TmFtZSgpLCBiYWNrZ3JvdW5kKTsKKyB9CisgCisrLyoKKysgICAgXGludGVybmFsCisrCisrICAg IEhpZGVzIGFuIGl0ZW0gdGhhdCB3YXMgcmVwbGFjZWQgYnkgYSBuZXdlciBvbmUsIHJhdGhlciB0 aGFuCisrICAgIGRlbGV0aW5nIGl0LCBhcyB0aGUgaXRlbSBpcyB0eXBpY2FsbHkgY3JlYXRlZCBp biBRTUwgYW5kIGhlbmNlCisrICAgIHdlIGRvbid0IG93biBpdC4KKysqLworIHZvaWQgUVF1aWNr Q29udHJvbFByaXZhdGU6OmhpZGVPbGRJdGVtKFFRdWlja0l0ZW0gKml0ZW0pCisgeworICAgICBp ZiAoIWl0ZW0pCitAQCAtODYzLDYgKzg3MCwyOSBAQCB2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRl OjpoaWRlT2xkSXRlbShRUXVpY2tJdGVtICppdGVtKQorICNlbmRpZgorIH0KKyAKKysvKgorKyAg ICBcaW50ZXJuYWwKKysKKysgICAgTmFtZWQgInVuaGlkZSIgYmVjYXVzZSBpdCdzIHVzZWQgZm9y IGNhc2VzIHdoZXJlIGFuIGl0ZW0KKysgICAgdGhhdCB3YXMgcHJldmlvdXNseSBoaWRkZW4gYnkg XGwgaGlkZU9sZEl0ZW0oKSB3YW50cyB0byBiZQorKyAgICBzaG93biBieSBhIGNvbnRyb2wgYWdh aW4sIHN1Y2ggYXMgYSBTY3JvbGxCYXIgaW4gU2Nyb2xsVmlldy4KKysqLworK3ZvaWQgUVF1aWNr Q29udHJvbFByaXZhdGU6OnVuaGlkZU9sZEl0ZW0oUVF1aWNrQ29udHJvbCAqY29udHJvbCwgUVF1 aWNrSXRlbSAqaXRlbSkKKyt7CisrICAgIFFfQVNTRVJUKGl0ZW0pOworKyAgICBxQ0RlYnVnKGxj SXRlbU1hbmFnZW1lbnQpIDw8ICJ1bmhpZGluZyBvbGQgaXRlbSIgPDwgaXRlbTsKKysKKysgICAg aXRlbS0+c2V0VmlzaWJsZSh0cnVlKTsKKysgICAgaXRlbS0+c2V0UGFyZW50SXRlbShjb250cm9s KTsKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrICAgIC8vIEFkZCB0aGUgaXRl bSBiYWNrIGluIHRvIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisrICAgIFFRdWlja0FjY2Vzc2li bGVBdHRhY2hlZCAqYWNjZXNzaWJsZSA9IGFjY2Vzc2libGVBdHRhY2hlZChpdGVtKTsKKysgICAg aWYgKGFjY2Vzc2libGUpCisrICAgICAgICBhY2Nlc3NpYmxlLT5zZXRJZ25vcmVkKGZhbHNlKTsK KysjZW5kaWYKKyt9CisrCisgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dXBkYXRlQmFzZWxp bmVPZmZzZXQoKQorIHsKKyAgICAgUV9RKFFRdWlja0NvbnRyb2wpOworZGlmZiAtLWdpdCBhL3F0 cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sX3BfcC5oIGIv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmgK K2luZGV4IDhlOTc5MDc5ZS4uYTZlNjI0YzkxIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xz Mi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmgKKysrKyBiL3F0cXVpY2tj b250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sX3BfcC5oCitAQCAtMTcz LDYgKzE3Myw3IEBAIHB1YmxpYzoKKyAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVCYWNrZ3JvdW5k KGJvb2wgY29tcGxldGUgPSBmYWxzZSk7CisgCisgICAgIHN0YXRpYyB2b2lkIGhpZGVPbGRJdGVt KFFRdWlja0l0ZW0gKml0ZW0pOworKyAgICBzdGF0aWMgdm9pZCB1bmhpZGVPbGRJdGVtKFFRdWlj a0NvbnRyb2wgKmNvbnRyb2wsIFFRdWlja0l0ZW0gKml0ZW0pOworIAorICAgICB2b2lkIHVwZGF0 ZUJhc2VsaW5lT2Zmc2V0KCk7CisgCitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMv cXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1dHRvbmJveC5jcHAgYi9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcAoraW5kZXgg ZTZkYjE0ZWI1Li42MTk3ZDE1NDcgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcAorKysrIGIvcXRxdWlja2Nv bnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1dHRvbmJveC5jcHAKK0BA IC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIFFSZWN0RiBhbGlnbmVkUmVjdChRdDo6TGF5b3V0RGly ZWN0aW9uIGRpcmVjdGlvbiwgUXQ6OkFsaWdubWVudCBhbGlnbm1lbnQKKyB2b2lkIFFRdWlja0Rp YWxvZ0J1dHRvbkJveFByaXZhdGU6OnJlc2l6ZUNvbnRlbnQoKQorIHsKKyAgICAgUV9RKFFRdWlj a0RpYWxvZ0J1dHRvbkJveCk7CistICAgIGlmICghY29udGVudEl0ZW0pCisrICAgIGlmICghY29u dGVudEl0ZW0gfHwgIWNvbnRlbnRNb2RlbCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgUVJl Y3RGIGdlb21ldHJ5ID0gcS0+Ym91bmRpbmdSZWN0KCkuYWRqdXN0ZWQocS0+bGVmdFBhZGRpbmco KSwgcS0+dG9wUGFkZGluZygpLCAtcS0+cmlnaHRQYWRkaW5nKCksIC1xLT5ib3R0b21QYWRkaW5n KCkpOworQEAgLTMyMiw2ICszMjIsOSBAQCB2b2lkIFFRdWlja0RpYWxvZ0J1dHRvbkJveFByaXZh dGU6OnVwZGF0ZUxheW91dCgpCisgcXJlYWwgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6 Z2V0Q29udGVudFdpZHRoKCkgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRUXVpY2tEaWFsb2dC dXR0b25Cb3gpOworKyAgICBpZiAoIWNvbnRlbnRNb2RlbCkKKysgICAgICAgIHJldHVybiAwOwor KworICAgICBjb25zdCBpbnQgY291bnQgPSBjb250ZW50TW9kZWwtPmNvdW50KCk7CisgICAgIGNv bnN0IHFyZWFsIHRvdGFsU3BhY2luZyA9IHFNYXgoMCwgY291bnQgLSAxKSAqIHNwYWNpbmc7Cisg ICAgIHFyZWFsIHRvdGFsV2lkdGggPSB0b3RhbFNwYWNpbmc7CitAQCAtMzQxLDYgKzM0NCw5IEBA IHFyZWFsIFFRdWlja0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OmdldENvbnRlbnRXaWR0aCgpIGNv bnN0CisgcXJlYWwgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6Z2V0Q29udGVudEhlaWdo dCgpIGNvbnN0CisgeworICAgICBRX1EoY29uc3QgUVF1aWNrRGlhbG9nQnV0dG9uQm94KTsKKysg ICAgaWYgKCFjb250ZW50TW9kZWwpCisrICAgICAgICByZXR1cm4gMDsKKysKKyAgICAgY29uc3Qg aW50IGNvdW50ID0gY29udGVudE1vZGVsLT5jb3VudCgpOworICAgICBxcmVhbCBtYXhIZWlnaHQg PSAwOworICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKK2RpZmYgLS1naXQg YS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAg Yi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAK K2luZGV4IDkxYmQ1OTE4NC4uMGNlNTE4Zjg0IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xz Mi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja292ZXJsYXkuY3BwCisrKysgYi9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAKK0BAIC0zOTksOCAr Mzk5LDExIEBAIHZvaWQgUVF1aWNrT3ZlcmxheTo6aXRlbUNoYW5nZShJdGVtQ2hhbmdlIGNoYW5n ZSwgY29uc3QgSXRlbUNoYW5nZURhdGEgJmRhdGEpCisgICAgIFFfRChRUXVpY2tPdmVybGF5KTsK KyAgICAgUVF1aWNrSXRlbTo6aXRlbUNoYW5nZShjaGFuZ2UsIGRhdGEpOworIAorLSAgICBpZiAo Y2hhbmdlID09IEl0ZW1DaGlsZEFkZGVkQ2hhbmdlIHx8IGNoYW5nZSA9PSBJdGVtQ2hpbGRSZW1v dmVkQ2hhbmdlKQorKyAgICBpZiAoY2hhbmdlID09IEl0ZW1DaGlsZEFkZGVkQ2hhbmdlIHx8IGNo YW5nZSA9PSBJdGVtQ2hpbGRSZW1vdmVkQ2hhbmdlKSB7CisgICAgICAgICBzZXRWaXNpYmxlKCFk LT5hbGxEcmF3ZXJzLmlzRW1wdHkoKSB8fCAhY2hpbGRJdGVtcygpLmlzRW1wdHkoKSk7CisrICAg ICAgICBpZiAoZGF0YS5pdGVtLT5wYXJlbnQoKSA9PSBkLT5tb3VzZUdyYWJiZXJQb3B1cCkKKysg ICAgICAgICAgICBkLT5zZXRNb3VzZUdyYWJiZXJQb3B1cChudWxscHRyKTsKKysgICAgfQorIH0K KyAKKyB2b2lkIFFRdWlja092ZXJsYXk6Omdlb21ldHJ5Q2hhbmdlZChjb25zdCBRUmVjdEYgJm5l d0dlb21ldHJ5LCBjb25zdCBRUmVjdEYgJm9sZEdlb21ldHJ5KQorZGlmZiAtLWdpdCBhL3F0cXVp Y2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3JvbGxiYXIuY3BwIGIvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAKK2lu ZGV4IDRlMmY1MDlkYi4uMWM0YjMwOGNkIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9z cmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAKKysrKyBiL3F0cXVpY2tjb250 cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3JvbGxiYXIuY3BwCitAQCAtNzk3LDYg Kzc5NywxNCBAQCB2b2lkIFFRdWlja1Njcm9sbEJhckF0dGFjaGVkUHJpdmF0ZTo6aW5pdEhvcml6 b250YWwoKQorICAgICBpZiAocGFyZW50ICYmIHBhcmVudCA9PSBmbGlja2FibGUtPnBhcmVudEl0 ZW0oKSkKKyAgICAgICAgIGhvcml6b250YWwtPnN0YWNrQWZ0ZXIoZmxpY2thYmxlKTsKKyAKKysg ICAgLy8gSWYgYSBzY3JvbGwgYmFyIHdhcyBwcmV2aW91c2x5IGhpZGRlbiAoZHVlIHRvIGUuZy4g c2V0dGluZyBhIG5ldyBjb250ZW50SXRlbQorKyAgICAvLyBvbiBhIFNjcm9sbFZpZXcpLCB3ZSBu ZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIHVuLWhpZGUgaXQuCisrICAgIC8vIFdlIGRvbid0IGJv dGhlciBjaGVja2luZyBpZiB0aGUgaXRlbSBpcyBhY3R1YWxseSB0aGUgb2xkIG9uZSwgYmVjYXVz ZQorKyAgICAvLyBpZiBpdCdzIG5vdCwgYWxsIG9mIHRoZSB0aGluZ3MgdGhlIGZ1bmN0aW9uIGRv ZXMgKHNldHRpbmcgcGFyZW50LCB2aXNpYmlsaXR5LCBldGMuKQorKyAgICAvLyBzaG91bGQgYmUg bm8tb3BzIGFueXdheS4KKysgICAgaWYgKGF1dG8gY29udHJvbCA9IHFvYmplY3RfY2FzdDxRUXVp Y2tDb250cm9sKj4ocV9wdHItPnBhcmVudCgpKSkKKysgICAgICAgIFFRdWlja0NvbnRyb2xQcml2 YXRlOjp1bmhpZGVPbGRJdGVtKGNvbnRyb2wsIGhvcml6b250YWwpOworKworICAgICBsYXlvdXRI b3Jpem9udGFsKCk7CisgICAgIGhvcml6b250YWwtPnNldFNpemUoYXJlYS0+cHJvcGVydHkoIndp ZHRoUmF0aW8iKS50b1JlYWwoKSk7CisgICAgIGhvcml6b250YWwtPnNldFBvc2l0aW9uKGFyZWEt PnByb3BlcnR5KCJ4UG9zaXRpb24iKS50b1JlYWwoKSk7CitAQCAtODE4LDYgKzgyNiw5IEBAIHZv aWQgUVF1aWNrU2Nyb2xsQmFyQXR0YWNoZWRQcml2YXRlOjppbml0VmVydGljYWwoKQorICAgICBp ZiAocGFyZW50ICYmIHBhcmVudCA9PSBmbGlja2FibGUtPnBhcmVudEl0ZW0oKSkKKyAgICAgICAg IHZlcnRpY2FsLT5zdGFja0FmdGVyKGZsaWNrYWJsZSk7CisgCisrICAgIGlmIChhdXRvIGNvbnRy b2wgPSBxb2JqZWN0X2Nhc3Q8UVF1aWNrQ29udHJvbCo+KHFfcHRyLT5wYXJlbnQoKSkpCisrICAg ICAgICBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dW5oaWRlT2xkSXRlbShjb250cm9sLCB2ZXJ0aWNh bCk7CisrCisgICAgIGxheW91dFZlcnRpY2FsKCk7CisgICAgIHZlcnRpY2FsLT5zZXRTaXplKGFy ZWEtPnByb3BlcnR5KCJoZWlnaHRSYXRpbyIpLnRvUmVhbCgpKTsKKyAgICAgdmVydGljYWwtPnNl dFBvc2l0aW9uKGFyZWEtPnByb3BlcnR5KCJ5UG9zaXRpb24iKS50b1JlYWwoKSk7CitkaWZmIC0t Z2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3Njcm9s bHZpZXcucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0 X3Njcm9sbHZpZXcucW1sCitpbmRleCAwZThiMDgzNTIuLmNkNDkzMTE4NCAxMDA2NDQKKy0tLSBh L3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3 LnFtbAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0 X3Njcm9sbHZpZXcucW1sCitAQCAtNTc2LDQgKzU3Niw1MSBAQCBUZXN0Q2FzZSB7CisgICAgICAg ICB2ZXJpZnkobmV3SG9yaXpvbnRhbFNjcm9sbEJhci52aXNpYmxlKQorICAgICAgICAgdmVyaWZ5 KCFvbGRIb3Jpem9udGFsU2Nyb2xsQmFyLnZpc2libGUpCisgICAgIH0KKysKKysgICAgQ29tcG9u ZW50IHsKKysgICAgICAgIGlkOiBiaW5kaW5nVG9Db250ZW50SXRlbUFuZFN0YW5kYWxvbmVGbGlj a2FibGUKKysKKysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAgIHdpZHRoOiAyMDAKKysgICAg ICAgICAgICBoZWlnaHQ6IDIwMAorKworKyAgICAgICAgICAgIHByb3BlcnR5IGFsaWFzIHNjcm9s bFZpZXc6IHNjcm9sbFZpZXcKKysKKysgICAgICAgICAgICBTY3JvbGxWaWV3IHsKKysgICAgICAg ICAgICAgICAgaWQ6IHNjcm9sbFZpZXcKKysgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBw YXJlbnQKKysgICAgICAgICAgICAgICAgY29udGVudEl0ZW06IGxpc3RWaWV3CisrCisrICAgICAg ICAgICAgICAgIHByb3BlcnR5IEl0ZW0gc29tZUJpbmRpbmc6IGNvbnRlbnRJdGVtCisrICAgICAg ICAgICAgfQorKyAgICAgICAgICAgIExpc3RWaWV3IHsKKysgICAgICAgICAgICAgICAgaWQ6IGxp c3RWaWV3CisrICAgICAgICAgICAgICAgIG1vZGVsOiAxMAorKyAgICAgICAgICAgICAgICBkZWxl Z2F0ZTogSXRlbURlbGVnYXRlIHsKKysgICAgICAgICAgICAgICAgICAgIHRleHQ6IG1vZGVsRGF0 YQorKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGxpc3RWaWV3LndpZHRoCisrICAgICAgICAg ICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgLy8g VGVzdHMgdGhhdCBzY3JvbGwgYmFycyBzaG93IHVwIGZvciBhIFNjcm9sbFZpZXcgd2hlcmUKKysg ICAgLy8gLSBpdHMgY29udGVudEl0ZW0gaXMgZGVjbGFyZWQgYXMgYSBzdGFuZGFsb25lLCBzZXBh cmF0ZSBpdGVtCisrICAgIC8vIC0gdGhlcmUgaXMgYSBiaW5kaW5nIHRvIGNvbnRlbnRJdGVtICh3 aGljaCBjYXVzZXMgYSBkZWZhdWx0IEZsaWNrYWJsZSB0byBiZSBjcmVhdGVkKQorKyAgICBmdW5j dGlvbiB0ZXN0X2JpbmRpbmdUb0NvbnRlbnRJdGVtQW5kU3RhbmRhbG9uZUZsaWNrYWJsZSgpIHsK KysgICAgICAgIGxldCByb290ID0gY3JlYXRlVGVtcG9yYXJ5T2JqZWN0KGJpbmRpbmdUb0NvbnRl bnRJdGVtQW5kU3RhbmRhbG9uZUZsaWNrYWJsZSwgdGVzdENhc2UpCisrICAgICAgICB2ZXJpZnko cm9vdCkKKysKKysgICAgICAgIGxldCBjb250cm9sID0gcm9vdC5zY3JvbGxWaWV3CisrICAgICAg ICBsZXQgdmVydGljYWxTY3JvbGxCYXIgPSBjb250cm9sLlNjcm9sbEJhci52ZXJ0aWNhbAorKyAg ICAgICAgbGV0IGhvcml6b250YWxTY3JvbGxCYXIgPSBjb250cm9sLlNjcm9sbEJhci5ob3Jpem9u dGFsCisrICAgICAgICBjb21wYXJlKHZlcnRpY2FsU2Nyb2xsQmFyLnBhcmVudCwgY29udHJvbCkK KysgICAgICAgIGNvbXBhcmUoaG9yaXpvbnRhbFNjcm9sbEJhci5wYXJlbnQsIGNvbnRyb2wpCisr ICAgICAgICB2ZXJpZnkodmVydGljYWxTY3JvbGxCYXIudmlzaWJsZSkKKysgICAgICAgIHZlcmlm eShob3Jpem9udGFsU2Nyb2xsQmFyLnZpc2libGUpCisrCisrICAgICAgICBtb3VzZURyYWcodmVy dGljYWxTY3JvbGxCYXIsIHZlcnRpY2FsU2Nyb2xsQmFyLndpZHRoIC8gMiwgdmVydGljYWxTY3Jv bGxCYXIuaGVpZ2h0IC8gMiwgMCwgNTApCisrICAgICAgICB2ZXJpZnkodmVydGljYWxTY3JvbGxC YXIuYWN0aXZlKQorKyAgICAgICAgdmVyaWZ5KGhvcml6b250YWxTY3JvbGxCYXIuYWN0aXZlKQor KyAgICB9CisgfQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250 cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2Nv bnRyb2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwKK2luZGV4IGIzZmFiNDFjYS4uMTBiNmJhYTAyIDEw MDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0 X3N3aXRjaC5xbWwKKysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9k YXRhL3RzdF9zd2l0Y2gucW1sCitAQCAtNjA4LDQgKzYwOCwyNyBAQCBUZXN0Q2FzZSB7CisgICAg ICAgICBtb3VzZUNsaWNrKGNvbnRyb2wuaW5kaWNhdG9yKQorICAgICAgICAgdmVyaWZ5KGNvbnRy b2wuYWN0aXZlRm9jdXMpCisgICAgIH0KKysKKysgICAgQ29tcG9uZW50IHsKKysgICAgICAgIGlk OiBkZWxldGlvbk9yZGVyMQorKyAgICAgICAgSXRlbSB7CisrICAgICAgICAgICAgSW1hZ2UgeyBp ZDogaW5uZXJJbWFnZSB9CisrICAgICAgICAgICAgU3dpdGNoIHsgaW5kaWNhdG9yOiBpbm5lcklt YWdlIH0KKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBDb21wb25lbnQgeworKyAgICAgICAg aWQ6IGRlbGV0aW9uT3JkZXIyCisrICAgICAgICBJdGVtIHsKKysgICAgICAgICAgICBTd2l0Y2gg eyBpbmRpY2F0b3I6IGlubmVySW1hZ2UgfQorKyAgICAgICAgICAgIEltYWdlIHsgaWQ6IGlubmVy SW1hZ2UgfQorKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIGZ1bmN0aW9uIHRlc3RfZGVsZXRp b25PcmRlcigpIHsKKysgICAgICAgIHZhciBjb250cm9sMSA9IGNyZWF0ZVRlbXBvcmFyeU9iamVj dChkZWxldGlvbk9yZGVyMSwgdGVzdENhc2UpCisrICAgICAgICB2ZXJpZnkoY29udHJvbDEpCisr ICAgICAgICB2YXIgY29udHJvbDIgPSBjcmVhdGVUZW1wb3JhcnlPYmplY3QoZGVsZXRpb25PcmRl cjIsIHRlc3RDYXNlKQorKyAgICAgICAgdmVyaWZ5KGNvbnRyb2wyKQorKyAgICB9CisgfQorZGlm ZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC9kYXRhL3Jl bGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbCBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0 by9xcXVpY2twb3B1cC9kYXRhL3JlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbAorbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMC4uOWU0NTk4YjlmCistLS0gL2Rldi9udWxs CisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvZGF0YS9yZWxl YXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbi5xbWwKK0BAIC0wLDAgKzEsNzggQEAKKysvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0 ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysq KgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkJTRCQKKysqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNh Z2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1h eSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxp Y2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUgb3IsIGFsdGVy bmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCisrKiog YSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBs aWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8v dGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNv bnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoqCisrKiogQlNE IExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBCU0QgbGljZW5zZQorKyoqIGFzIGZvbGxvd3M6CisrKioK KysqKiAiUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg d2l0aCBvciB3aXRob3V0CisrKiogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKyoqIG1ldDoKKysqKiAgICogUmVk aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln aHQKKysqKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyLgorKyoqICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyoqICAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysqKiAg ICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo IHRoZQorKyoqICAgICBkaXN0cmlidXRpb24uCisrKiogICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg VGhlIFF0IENvbXBhbnkgTHRkIG5vciB0aGUgbmFtZXMgb2YgaXRzCisrKiogICAgIGNvbnRyaWJ1 dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor KyoqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu IHBlcm1pc3Npb24uCisrKioKKysqKgorKyoqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKysqKiAiQVMgSVMiIEFORCBB TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKyoq IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO RCBGSVRORVNTIEZPUgorKyoqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisrKiogT1dORVIgT1IgQ09OVFJJQlVUT1JT IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrKiogU1BF Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU IE5PVAorKyoqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig U0VSVklDRVM7IExPU1MgT0YgVVNFLAorKyoqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKyoqIFRIRU9SWSBPRiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK KysqKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX QVkgT1VUIE9GIFRIRSBVU0UKKysqKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiIKKysqKgorKyoqICRRVF9FTkRfTElD RU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisraW1wb3J0IFF0UXVpY2sgMi4x NQorK2ltcG9ydCBRdFF1aWNrLkNvbnRyb2xzIDIuMTUKKysKKytBcHBsaWNhdGlvbldpbmRvdyB7 CisrICAgIGlkOiB3aW5kb3cKKysgICAgd2lkdGg6IDQwMAorKyAgICBoZWlnaHQ6IDQwMAorKyAg ICB0aXRsZTogInJlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uIgorKworKyAgICBwcm9wZXJ0eSBh bGlhcyBwb3B1cDogcG9wdXAKKysgICAgcHJvcGVydHkgYWxpYXMgbW9kYWxQb3B1cDogbW9kYWxQ b3B1cAorKworKyAgICBQb3B1cCB7CisrICAgICAgICBpZDogcG9wdXAKKysgICAgICAgIHk6IHBh cmVudC5oZWlnaHQgLSBoZWlnaHQKKysgICAgICAgIHdpZHRoOiA1MAorKyAgICAgICAgaGVpZ2h0 OiA1MAorKyAgICB9CisrCisrICAgIFBvcHVwIHsKKysgICAgICAgIGlkOiBtb2RhbFBvcHVwCisr ICAgICAgICBtb2RhbDogdHJ1ZQorKyAgICAgICAgeTogcGFyZW50LmhlaWdodCAtIGhlaWdodAor KyAgICAgICAgd2lkdGg6IDUwCisrICAgICAgICBoZWlnaHQ6IDUwCisrICAgICAgICBleGl0OiAg VHJhbnNpdGlvbiB7IFBhdXNlQW5pbWF0aW9uIHsgZHVyYXRpb246IDEwMCB9IH0KKysgICAgfQor K30KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAv dHN0X3FxdWlja3BvcHVwLmNwcCBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2tw b3B1cC90c3RfcXF1aWNrcG9wdXAuY3BwCitpbmRleCA1NDk1MmQxMjguLjNkNTBlMmRkNCAxMDA2 NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC90c3RfcXF1 aWNrcG9wdXAuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9w dXAvdHN0X3FxdWlja3BvcHVwLmNwcAorQEAgLTEwMCw2ICsxMDAsNyBAQCBwcml2YXRlIHNsb3Rz OgorICAgICB2b2lkIGludmlzaWJsZVRvb2xUaXBPcGVuKCk7CisgICAgIHZvaWQgY2VudGVySW5P dmVybGF5V2l0aGluU3RhY2tWaWV3SXRlbSgpOworICAgICB2b2lkIGRlc3Ryb3lEdXJpbmdFeGl0 VHJhbnNpdGlvbigpOworKyAgICB2b2lkIHJlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uKCk7Cisg fTsKKyAKKyB2b2lkIHRzdF9RUXVpY2tQb3B1cDo6aW5pdFRlc3RDYXNlKCkKK0BAIC0xNTc1LDYg KzE1NzYsMzQgQEAgdm9pZCB0c3RfUVF1aWNrUG9wdXA6OmRlc3Ryb3lEdXJpbmdFeGl0VHJhbnNp dGlvbigpCisgICAgIFFWRVJJRlkoIWJ1dHRvbi0+aXNEb3duKCkpOworIH0KKyAKKyt2b2lkIHRz dF9RUXVpY2tQb3B1cDo6cmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24oKQorK3sKKysgICAgUVF1 aWNrQXBwbGljYXRpb25IZWxwZXIgaGVscGVyKHRoaXMsICJyZWxlYXNlQWZ0ZXJFeGl0VHJhbnNp dGlvbi5xbWwiKTsKKysgICAgUVZFUklGWTIoaGVscGVyLnJlYWR5LCBoZWxwZXIuZmFpbHVyZU1l c3NhZ2UoKSk7CisrCisrICAgIFFRdWlja1dpbmRvdyAqd2luZG93ID0gaGVscGVyLndpbmRvdzsK KysgICAgd2luZG93LT5zaG93KCk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93 QWN0aXZlKHdpbmRvdykpOworKworKyAgICBRUXVpY2tPdmVybGF5ICpvdmVybGF5ID0gUVF1aWNr T3ZlcmxheTo6b3ZlcmxheSh3aW5kb3cpOworKyAgICBRUXVpY2tQb3B1cCAqbW9kYWxQb3B1cCA9 IHdpbmRvdy0+cHJvcGVydHkoIm1vZGFsUG9wdXAiKS52YWx1ZTxRUXVpY2tQb3B1cCAqPigpOwor KyAgICBRUXVpY2tQb3B1cCAqcG9wdXAgPSB3aW5kb3ctPnByb3BlcnR5KCJwb3B1cCIpLnZhbHVl PFFRdWlja1BvcHVwICo+KCk7CisrCisrICAgIG1vZGFsUG9wdXAtPm9wZW4oKTsKKysgICAgUVRS WV9WRVJJRlkobW9kYWxQb3B1cC0+aXNPcGVuZWQoKSk7CisrCisrICAgIFFUZXN0Ojptb3VzZVBy ZXNzKHdpbmRvdywgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyLCBRUG9pbnQoMSwgMSkp OworKyAgICAvLyB3YWl0IHVudGlsIHRoZSB0cmFuc2l0aW9uIGlzIGZpbmlzaGVkIGFuZCB0aGUg b3ZlcmxheSBoaWRlcyBpdHNlbGYKKysgICAgUVRSWV9WRVJJRlkoIW92ZXJsYXktPmlzVmlzaWJs ZSgpKTsKKysgICAgUVRlc3Q6Om1vdXNlUmVsZWFzZSh3aW5kb3csIFF0OjpMZWZ0QnV0dG9uLCBR dDo6Tm9Nb2RpZmllciwgUVBvaW50KDEsIDEpKTsKKysKKysgICAgcG9wdXAtPm9wZW4oKTsKKysg ICAgUVRSWV9WRVJJRlkocG9wdXAtPmlzT3BlbmVkKCkpOworKyAgICBRVGVzdDo6bW91c2VDbGlj ayh3aW5kb3csIFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9Nb2RpZmllciwgUVBvaW50KDEsIDEpKTsK KysgICAgUVRSWV9WRVJJRlkoIXBvcHVwLT5pc09wZW5lZCgpKTsKKyt9CisrCisrCisgUVRFU1Rf UVVJQ0tDT05UUk9MU19NQUlOKHRzdF9RUXVpY2tQb3B1cCkKKyAKKyAjaW5jbHVkZSAidHN0X3Fx dWlja3BvcHVwLm1vYyIKK1N1Ym1vZHVsZSBxdHNjcmlwdCA1YmU5NWY5Ni4uLjRkOGU0YmQyIChj b21taXRzIG5vdCBwcmVzZW50KQorU3VibW9kdWxlIHF0c3BlZWNoIDE3ZmM5ZmRlLi4yNTU4NDVl MjoKK2RpZmYgLS1naXQgYS9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hl ci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQuY3BwIGIvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3Nw ZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcAoraW5kZXggNmViNzRiOC4u YmNjN2RkMSAxMDA2NDQKKy0tLSBhL3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNw YXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNoZC5jcHAKKysrKyBiL3F0c3BlZWNoL3NyYy9wbHVn aW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNoZC5jcHAKK0BAIC0z NTcsNyArMzU3LDkgQEAgUVZlY3RvcjxRTG9jYWxlPiBRVGV4dFRvU3BlZWNoRW5naW5lU3BlZWNo ZDo6YXZhaWxhYmxlTG9jYWxlcygpIGNvbnN0CisgCisgUVZlY3RvcjxRVm9pY2U+IFFUZXh0VG9T cGVlY2hFbmdpbmVTcGVlY2hkOjphdmFpbGFibGVWb2ljZXMoKSBjb25zdAorIHsKKy0gICAgcmV0 dXJuIG1fdm9pY2VzLnZhbHVlcyhtX2N1cnJlbnRMb2NhbGUubmFtZSgpKS50b1ZlY3RvcigpOwor KyAgICBRTGlzdDxRVm9pY2U+IHJlc3VsdExpc3QgPSBtX3ZvaWNlcy52YWx1ZXMobV9jdXJyZW50 TG9jYWxlLm5hbWUoKSk7CisrICAgIHN0ZDo6cmV2ZXJzZShyZXN1bHRMaXN0LmJlZ2luKCksIHJl c3VsdExpc3QuZW5kKCkpOworKyAgICByZXR1cm4gcmVzdWx0TGlzdC50b1ZlY3RvcigpOworIH0K KyAKKyAvLyBXZSBoYXZlIG5vIHdheSBvZiBrbm93aW5nIG91ciBvd24gY2xpZW50X2lkIHNpbmNl IHNwZWVjaC1kaXNwYXRjaGVyIHNlZW1zIHRvIGJlIGluY29tcGxldGUKK1N1Ym1vZHVsZSBxdHN2 ZyAwYzA1NzgwZS4uYTdhMGYyNDk6CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3BsdWdpbnMvaW1h Z2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcCBiL3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdl Zm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAKK2luZGV4IDU2MWU3N2UuLjEyZTA1NzQgMTAw NjQ0CistLS0gYS9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdpb2hhbmRs ZXIuY3BwCisrKysgYi9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdpb2hh bmRsZXIuY3BwCitAQCAtMTkxLDYgKzE5MSw4IEBAIGJvb2wgUVN2Z0lPSGFuZGxlcjo6cmVhZChR SW1hZ2UgKmltYWdlKQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIGlmICgh ZmluYWxTaXplLmlzRW1wdHkoKSkgeworKyAgICAgICAgICAgIGlmIChxTWF4KGZpbmFsU2l6ZS53 aWR0aCgpLCBmaW5hbFNpemUuaGVpZ2h0KCkpID4gMHhmZmZmKQorKyAgICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7IC8vIEFzc3VtZSBjb3JydXB0ZWQgZmlsZQorICAgICAgICAgICAgIGltYWdl LT5maWxsKGQtPmJhY2tDb2xvci5yZ2JhKCkpOworICAgICAgICAgICAgIFFQYWludGVyIHAoaW1h Z2UpOworICAgICAgICAgICAgIGQtPnIucmVuZGVyKCZwLCBib3VuZHMpOworZGlmZiAtLWdpdCBh L3F0c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwIGIvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFuZGxl ci5jcHAKK2luZGV4IGE1Zjg3N2YuLjhkZGE1NjMgMTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvc3Zn L3FzdmdoYW5kbGVyLmNwcAorKysrIGIvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFuZGxlci5jcHAKK0BA IC0xMzkzLDkgKzEzOTMsMTAgQEAgc3RhdGljIHZvaWQgcGFyc2VGb250KFFTdmdOb2RlICpub2Rl LAorICAgICAgICAgY2FzZSBGb250U2l6ZU5vbmU6CisgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICBjYXNlIEZvbnRTaXplVmFsdWU6IHsKKy0gICAgICAgICAgICBRU3ZnSGFuZGxlcjo6TGVu Z3RoVHlwZSBkdW1teTsgLy8gc2hvdWxkIGFsd2F5cyBiZSBwaXhlbCBzaXplCistICAgICAgICAg ICAgZm9udFN0eWxlLT5zZXRTaXplKHFNaW4ocGFyc2VMZW5ndGgoYXR0cmlidXRlcy5mb250U2l6 ZSwgZHVtbXksIGhhbmRsZXIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHFyZWFsKDB4ZmZmZikpKTsKKysgICAgICAgICAgICBRU3ZnSGFuZGxlcjo6TGVuZ3RoVHlwZSB0 eXBlOworKyAgICAgICAgICAgIHFyZWFsIGZzID0gcGFyc2VMZW5ndGgoYXR0cmlidXRlcy5mb250 U2l6ZSwgdHlwZSwgaGFuZGxlcik7CisrICAgICAgICAgICAgZnMgPSBjb252ZXJ0VG9QaXhlbHMo ZnMsIHRydWUsIHR5cGUpOworKyAgICAgICAgICAgIGZvbnRTdHlsZS0+c2V0U2l6ZShxTWluKGZz LCBxcmVhbCgweGZmZmYpKSk7CisgICAgICAgICB9CisgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICBkZWZhdWx0OgorQEAgLTI1MTMsNiArMjUxNCw4IEBAIHN0YXRpYyBib29sIHBhcnNlQW5p bWF0ZVRyYW5zZm9ybU5vZGUoUVN2Z05vZGUgKnBhcmVudCwKKyAgICAgICAgICAgICArK3M7Cisg ICAgICAgICB9CisgICAgIH0KKysgICAgaWYgKHZhbHMuY291bnQoKSAlIDMgIT0gMCkKKysgICAg ICAgIHJldHVybiBmYWxzZTsKKyAKKyAgICAgYm9vbCBvayA9IHRydWU7CisgICAgIGludCBiZWdp biA9IHBhcnNlQ2xvY2tWYWx1ZShiZWdpblN0ciwgJm9rKTsKK0BAIC0yNTc2LDYgKzI1NzksOCBA QCBzdGF0aWMgUVN2Z05vZGUgKmNyZWF0ZUNpcmNsZU5vZGUoUVN2Z05vZGUgKnBhcmVudCwKKyAg ICAgcXJlYWwgbmN4ID0gdG9Eb3VibGUoY3gpOworICAgICBxcmVhbCBuY3kgPSB0b0RvdWJsZShj eSk7CisgICAgIHFyZWFsIG5yICA9IHRvRG91YmxlKHIpOworKyAgICBpZiAobnIgPCAwLjApCisr ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAKKyAgICAgUVJlY3RGIHJlY3QobmN4LW5yLCBuY3kt bnIsIG5yKjIsIG5yKjIpOworICAgICBRU3ZnTm9kZSAqY2lyY2xlID0gbmV3IFFTdmdDaXJjbGUo cGFyZW50LCByZWN0KTsKK0BAIC0zMDQ2LDE1ICszMDUxLDE2IEBAIHN0YXRpYyBRU3ZnU3R5bGVQ cm9wZXJ0eSAqY3JlYXRlUmFkaWFsR3JhZGllbnROb2RlKFFTdmdOb2RlICpub2RlLAorIAorICAg ICBxcmVhbCBuY3ggPSAwLjU7CisgICAgIHFyZWFsIG5jeSA9IDAuNTsKKy0gICAgcXJlYWwgbnIg ID0gMC41OworICAgICBpZiAoIWN4LmlzRW1wdHkoKSkKKyAgICAgICAgIG5jeCA9IHRvRG91Ymxl KGN4KTsKKyAgICAgaWYgKCFjeS5pc0VtcHR5KCkpCisgICAgICAgICBuY3kgPSB0b0RvdWJsZShj eSk7CisrCisrICAgIHFyZWFsIG5yID0gMC4wOworICAgICBpZiAoIXIuaXNFbXB0eSgpKQorICAg ICAgICAgbnIgPSB0b0RvdWJsZShyKTsKKy0gICAgaWYgKG5yIDwgMC41KQorLSAgICAgICAgbnIg PSAwLjU7CisrICAgIGlmIChuciA8PSAwLjApCisrICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAK KyAgICAgcXJlYWwgbmZ4ID0gbmN4OworICAgICBpZiAoIWZ4LmlzRW1wdHkoKSkKK0BAIC0zMzUw LDcgKzMzNTYsOSBAQCBzdGF0aWMgUVN2Z05vZGUgKmNyZWF0ZVRleHROb2RlKFFTdmdOb2RlICpw YXJlbnQsCisgICAgIC8vIyMjIGVkaXRhYmxlIGFuZCByb3RhdGUgbm90IGhhbmRsZWQKKyAgICAg UVN2Z0hhbmRsZXI6Okxlbmd0aFR5cGUgdHlwZTsKKyAgICAgcXJlYWwgbnggPSBwYXJzZUxlbmd0 aCh4LCB0eXBlLCBoYW5kbGVyKTsKKysgICAgbnggPSBjb252ZXJ0VG9QaXhlbHMobngsIHRydWUs IHR5cGUpOworICAgICBxcmVhbCBueSA9IHBhcnNlTGVuZ3RoKHksIHR5cGUsIGhhbmRsZXIpOwor KyAgICBueSA9IGNvbnZlcnRUb1BpeGVscyhueSwgdHJ1ZSwgdHlwZSk7CisgCisgICAgIFFTdmdO b2RlICp0ZXh0ID0gbmV3IFFTdmdUZXh0KHBhcmVudCwgUVBvaW50RihueCwgbnkpKTsKKyAgICAg cmV0dXJuIHRleHQ7CitAQCAtMzY5MSw5ICszNjk5LDcgQEAgdm9pZCBRU3ZnSGFuZGxlcjo6cGFy c2UoKQorICAgICAgICAgY2FzZSBRWG1sU3RyZWFtUmVhZGVyOjpFbmRFbGVtZW50OgorICAgICAg ICAgICAgIGVuZEVsZW1lbnQoeG1sLT5uYW1lKCkpOworICAgICAgICAgICAgICsrcmVtYWluaW5n VW5maW5pc2hlZEVsZW1lbnRzOworLSAgICAgICAgICAgIC8vIGlmIHdlIGFyZSB1c2luZyBzb21l Ym9keSBlbHNlJ3MgcXhtbHN0cmVhbXJlYWRlcgorLSAgICAgICAgICAgIC8vIHdlIHNob3VsZCBu b3QgcmVhZCB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0KKy0gICAgICAgICAgICBkb25lID0g IW1fb3duc1JlYWRlciAmJiAoeG1sLT5uYW1lKCkgPT0gUUxhdGluMVN0cmluZygic3ZnIikpOwor KyAgICAgICAgICAgIGRvbmUgPSAoeG1sLT5uYW1lKCkgPT0gUUxhdGluMVN0cmluZygic3ZnIikp OworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgY2FzZSBRWG1sU3RyZWFtUmVhZGVyOjpD aGFyYWN0ZXJzOgorICAgICAgICAgICAgIGNoYXJhY3RlcnMoeG1sLT50ZXh0KCkpOworZGlmZiAt LWdpdCBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAgYi9xdHN2Zy9zcmMvc3ZnL3Fz dmdzdHJ1Y3R1cmUuY3BwCitpbmRleCBiODk2MDhiLi44OWM5ZTRlIDEwMDY0NAorLS0tIGEvcXRz dmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcAorKysrIGIvcXRzdmcvc3JjL3N2Zy9xc3Znc3Ry dWN0dXJlLmNwcAorQEAgLTI1NSw5ICsyNTUsMTMgQEAgaW5saW5lIHN0YXRpYyBib29sIGlzU3Vw cG9ydGVkU3ZnRmVhdHVyZShjb25zdCBRU3RyaW5nICZzdHIpCisgICAgIH07CisgCisgICAgIGlm IChzdHIubGVuZ3RoKCkgPD0gTUFYX1dPUkRfTEVOR1RIICYmIHN0ci5sZW5ndGgoKSA+PSBNSU5f V09SRF9MRU5HVEgpIHsKKysgICAgICAgIGNvbnN0IGNoYXIxNl90IHVuaWNvZGU0NCA9IHN0ci5h dCg0NCkudW5pY29kZSgpOworKyAgICAgICAgY29uc3QgY2hhcjE2X3QgdW5pY29kZTQ1ID0gc3Ry LmF0KDQ1KS51bmljb2RlKCk7CisrICAgICAgICBpZiAodW5pY29kZTQ0ID49IHNpemVvZihhc3Nv X3ZhbHVlcykgfHwgdW5pY29kZTQ1ID49IHNpemVvZihhc3NvX3ZhbHVlcykpCisrICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgY29uc3QgaW50IGtleSA9IHN0ci5sZW5ndGgoKQor LSAgICAgICAgICAgICAgICAgICAgICAgICsgYXNzb192YWx1ZXNbc3RyLmF0KDQ1KS51bmljb2Rl KCldCistICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1tzdHIuYXQoNDQpLnVu aWNvZGUoKV07CisrICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1t1bmljb2Rl NDVdCisrICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1t1bmljb2RlNDRdOwor ICAgICAgICAgaWYgKGtleSA8PSBNQVhfSEFTSF9WQUxVRSAmJiBrZXkgPj0gMCkKKyAgICAgICAg ICAgICByZXR1cm4gc3RyID09IFFMYXRpbjFTdHJpbmcod29yZGxpc3Rba2V5XSk7CisgICAgIH0K K2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9jdW1lbnQuY3BwIGIvcXRzdmcv c3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcAoraW5kZXggNjNkMDc5Ny4uMTllNzE1NCAxMDA2 NDQKKy0tLSBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAKKysrKyBiL3F0c3Zn L3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAKK0BAIC00MzMsOCArNDMzLDE2IEBAIHZvaWQg UVN2Z1RpbnlEb2N1bWVudDo6ZHJhdyhRUGFpbnRlciAqcCwgUVN2Z0V4dHJhU3RhdGVzICYpCisg ICAgIGRyYXcocCk7CisgfQorIAorK3N0YXRpYyBib29sIGlzVmFsaWRNYXRyaXgoY29uc3QgUVRy YW5zZm9ybSAmdHJhbnNmb3JtKQorK3sKKysgICAgcXJlYWwgZGV0ZXJtaW5hbnQgPSB0cmFuc2Zv cm0uZGV0ZXJtaW5hbnQoKTsKKysgICAgcmV0dXJuIHFJc0Zpbml0ZShkZXRlcm1pbmFudCk7Cisr fQorKworIHZvaWQgUVN2Z1RpbnlEb2N1bWVudDo6bWFwU291cmNlVG9UYXJnZXQoUVBhaW50ZXIg KnAsIGNvbnN0IFFSZWN0RiAmdGFyZ2V0UmVjdCwgY29uc3QgUVJlY3RGICZzb3VyY2VSZWN0KQor IHsKKysgICAgUVRyYW5zZm9ybSBvbGRUcmFuc2Zvcm0gPSBwLT53b3JsZFRyYW5zZm9ybSgpOwor KworICAgICBRUmVjdEYgdGFyZ2V0ID0gdGFyZ2V0UmVjdDsKKyAgICAgaWYgKHRhcmdldC5pc0Vt cHR5KCkpIHsKKyAgICAgICAgIFFQYWludERldmljZSAqZGV2ID0gcC0+ZGV2aWNlKCk7CitAQCAt NDg3LDYgKzQ5NSw5IEBAIHZvaWQgUVN2Z1RpbnlEb2N1bWVudDo6bWFwU291cmNlVG9UYXJnZXQo UVBhaW50ZXIgKnAsIGNvbnN0IFFSZWN0RiAmdGFyZ2V0UmVjdCwKKyAgICAgICAgIH0KKyAjZW5k aWYKKyAgICAgfQorKworKyAgICBpZiAoIWlzVmFsaWRNYXRyaXgocC0+d29ybGRUcmFuc2Zvcm0o KSkpCisrICAgICAgICBwLT5zZXRXb3JsZFRyYW5zZm9ybShvbGRUcmFuc2Zvcm0pOworIH0KKyAK KyBRUmVjdEYgUVN2Z1RpbnlEb2N1bWVudDo6Ym91bmRzT25FbGVtZW50KGNvbnN0IFFTdHJpbmcg JmlkKSBjb25zdAorZGlmZiAtLWdpdCBhL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2Z3JlbmRlcmVyL3Rz dF9xc3ZncmVuZGVyZXIuY3BwIGIvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0X3Fz dmdyZW5kZXJlci5jcHAKK2luZGV4IDM2Yzc2ZWMuLmRiNzFlMDIgMTAwNjQ0CistLS0gYS9xdHN2 Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcAorKysrIGIvcXRz dmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0X3FzdmdyZW5kZXJlci5jcHAKK0BAIC04Niw2 ICs4Niw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgb3NzX2Z1enpfMjM3MzEoKTsKKyAg ICAgdm9pZCBvc3NfZnV6el8yNDEzMSgpOworICAgICB2b2lkIG9zc19mdXp6XzI0NzM4KCk7Cisr ICAgIHZvaWQgaWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm1fZGF0YSgpOworKyAgICB2b2lkIGlsbGVn YWxBbmltYXRlVHJhbnNmb3JtKCk7CisgCisgI2lmbmRlZiBRVF9OT19DT01QUkVTUworICAgICB2 b2lkIHRlc3RHekxvYWRpbmcoKTsKK0BAIC0xNjQ2LDUgKzE2NDgsMjIgQEAgdm9pZCB0c3RfUVN2 Z1JlbmRlcmVyOjpvc3NfZnV6el8yNDczOCgpCisgICAgIFFTdmdSZW5kZXJlcigpLmxvYWQoUUJ5 dGVBcnJheSgiPHN2Zz48cGF0aCBkPVwiYSAyIDFlLTIxMi4uLi4uXCI+IikpOworIH0KKyAKKyt2 b2lkIHRzdF9RU3ZnUmVuZGVyZXI6OmlsbGVnYWxBbmltYXRlVHJhbnNmb3JtX2RhdGEoKQorK3sK KysgICAgUVRlc3Q6OmFkZENvbHVtbjxRQnl0ZUFycmF5Pigic3ZnIik7CisrCisrICAgIFFUZXN0 OjpuZXdSb3coImNhc2UxIikgPDwgUUJ5dGVBcnJheSgiPHN2Zz48YW5pbWF0ZVRyYW5zZm9ybSB0 eXBlPVwicm90YXRlXCIgYmVnaW49XCIxXCIgZHVyPVwiMlwiIHZhbHVlcz1cIjgsMCw1LDBcIj4i KTsKKysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTIiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmlt YXRlVHJhbnNmb3JtIHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgdmFsdWVz PVwiMSwyXCI+Iik7CisrICAgIFFUZXN0OjpuZXdSb3coImNhc2UzIikgPDwgUUJ5dGVBcnJheSgi PHN2Zz48YW5pbWF0ZVRyYW5zZm9ybSB0eXBlPVwicm90YXRlXCIgYmVnaW49XCIxXCIgZHVyPVwi MlwiIGZyb209XCIuLiA1IDJcIiB0bz1cImZcIj4iKTsKKysgICAgUVRlc3Q6Om5ld1JvdygiY2Fz ZTQiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5cGU9XCJzY2FsZVwi IGJlZ2luPVwiMVwiIGR1cj1cIjJcIiBieT1cIi0tLC4uXCI+Iik7CisrfQorKworK3ZvaWQgdHN0 X1FTdmdSZW5kZXJlcjo6aWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm0oKQorK3sKKysgICAgUUZFVENI KFFCeXRlQXJyYXksIHN2Zyk7CisrICAgIFFTdmdSZW5kZXJlciByZW5kZXJlcjsKKysgICAgUVZF UklGWSghcmVuZGVyZXIubG9hZChzdmcpKTsgLy8gYWxzbyBzaG91bGRuJ3QgYXNzZXJ0CisrfQor KworIFFURVNUX01BSU4odHN0X1FTdmdSZW5kZXJlcikKKyAjaW5jbHVkZSAidHN0X3FzdmdyZW5k ZXJlci5tb2MiCitTdWJtb2R1bGUgcXR0b29scyA2OTE0ZjdjOC4uMDkwZTUyNmU6CitkaWZmIC0t Z2l0IGEvcXR0b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3Iu Y3BwIGIvcXR0b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3Iu Y3BwCitpbmRleCBmZWFiMWUyZDUuLmNiZmI4MjUwNyAxMDA2NDQKKy0tLSBhL3F0dG9vbHMvc3Jj L2Fzc2lzdGFudC9xaGVscGdlbmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNwcAorKysrIGIvcXR0b29s cy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3IuY3BwCitAQCAtNDQ1 LDcgKzQ0NSw5IEBAIGJvb2wgSGVscEdlbmVyYXRvclByaXZhdGU6Omluc2VydEZpbGVzKGNvbnN0 IFFTdHJpbmdMaXN0ICZmaWxlcywgY29uc3QgUVN0cmluZyAmCisgICAgIGlmIChmaWx0ZXJTZXRJ ZCA8IDApCisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICsrZmlsdGVyU2V0SWQ7CistICAg IGZvciAoaW50IGF0dElkIDogcUFzQ29uc3QoZmlsdGVyQXR0cykpIHsKKysgICAgUUxpc3Q8aW50 PiBhdHRWYWx1ZXMgPSBmaWx0ZXJBdHRzLnZhbHVlcygpOworKyAgICBzdGQ6OnNvcnQoYXR0VmFs dWVzLmJlZ2luKCksIGF0dFZhbHVlcy5lbmQoKSk7CisrICAgIGZvciAoaW50IGF0dElkIDogcUFz Q29uc3QoYXR0VmFsdWVzKSkgeworICAgICAgICAgbV9xdWVyeS0+cHJlcGFyZShRTGF0aW4xU3Ry aW5nKCJJTlNFUlQgSU5UTyBGaWxlQXR0cmlidXRlU2V0VGFibGUgIgorICAgICAgICAgICAgICJW QUxVRVMoPywgPykiKSk7CisgICAgICAgICBtX3F1ZXJ5LT5iaW5kVmFsdWUoMCwgZmlsdGVyU2V0 SWQpOworU3VibW9kdWxlIHF0d2F5bGFuZCBkZmIwMTI5Yy4uMjkwNGUxYjM6CitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24gYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9jb25maWd1cmUuanNvbgoraW5kZXggMmY0MjQ1ODAuLjI5MjIyMzU3IDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24KKysrKyBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L2NvbmZpZ3VyZS5qc29uCitAQCAtMTQ5LDggKzE0OSw3IEBACisgICAgICAgICAg ICAgICAgICAgICAiI2VuZGlmIgorICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgfSwK Ky0gICAgICAgICAgICAibGlicyI6ICItbGRybSIsCistICAgICAgICAgICAgInVzZSI6ICJlZ2wi CisrICAgICAgICAgICAgInVzZSI6ICJkcm0gZWdsIgorICAgICAgICAgfSwKKyAgICAgICAgICJ2 dWxrYW4tc2VydmVyLWJ1ZmZlciI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAiVnVsa2FuIEJ1 ZmZlciBTaGFyaW5nIiwKK0BAIC0xNjgsNyArMTY3LDggQEAKKyAgICAgICAgICAgICAgICAgICAg ICJleHBvcnRBbGxvY0luZm8uaGFuZGxlVHlwZXMgPSBWS19FWFRFUk5BTF9NRU1PUllfSEFORExF X1RZUEVfT1BBUVVFX0ZEX0JJVF9LSFI7IiwKKyAgICAgICAgICAgICAgICAgICAgICJyZXR1cm4g MDsiCisgICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAgICB9CisrICAgICAgICAgICAgfSwK KysgICAgICAgICAgICAidXNlIjogIndheWxhbmQtY2xpZW50IgorICAgICAgICAgfSwKKyAgICAg ICAgICJlZ2xfMV81LXdheWxhbmQiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIkVHTCAxLjUg d2l0aCBXYXlsYW5kIFBsYXRmb3JtIiwKK0BAIC0xODMsNyArMTgzLDcgQEAKKyAgICAgICAgICAg ICAgICAgICAgICJlZ2xHZXRQbGF0Zm9ybURpc3BsYXkoRUdMX1BMQVRGT1JNX1dBWUxBTkRfRVhU LCAoc3RydWN0IHdsX2Rpc3BsYXkgKikobnVsbHB0ciksIG51bGxwdHIpOyIKKyAgICAgICAgICAg ICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgInVzZSI6ICJlZ2wiCisrICAg ICAgICAgICAgInVzZSI6ICJlZ2wgd2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9CisgICAgIH0s CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xp ZW50ZXh0ZW5zaW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNs aWVudGV4dGVuc2lvbi5jcHAKK2luZGV4IDEyNWIxZTE5Li5lZGNjZmU2MyAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5jcHAK KysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lv bi5jcHAKK0BAIC03NCw3ICs3NCwxMCBAQCB2b2lkIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJp dmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwodm9pZCAqZGF0YSwgOjp3bF9yZWdpcworIHZvaWQg UVdheWxhbmRDbGllbnRFeHRlbnNpb246OmFkZFJlZ2lzdHJ5TGlzdGVuZXIoKQorIHsKKyAgICAg UV9EKFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKTsKKy0gICAgZC0+d2F5bGFuZEludGVncmF0aW9u LT5kaXNwbGF5KCktPmFkZFJlZ2lzdHJ5TGlzdGVuZXIoJlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9u UHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwsIHRoaXMpOworKyAgICBpZiAoIWQtPnJlZ2lz dGVyZWQpIHsKKysgICAgICAgIGQtPndheWxhbmRJbnRlZ3JhdGlvbi0+ZGlzcGxheSgpLT5hZGRS ZWdpc3RyeUxpc3RlbmVyKCZRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6OmhhbmRsZVJl Z2lzdHJ5R2xvYmFsLCB0aGlzKTsKKysgICAgICAgIGQtPnJlZ2lzdGVyZWQgPSB0cnVlOworKyAg ICB9CisgfQorIAorIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjpRV2F5bGFuZENsaWVudEV4dGVu c2lvbihjb25zdCBpbnQgdmVyKQorQEAgLTg4LDYgKzkxLDEzIEBAIFFXYXlsYW5kQ2xpZW50RXh0 ZW5zaW9uOjpRV2F5bGFuZENsaWVudEV4dGVuc2lvbihjb25zdCBpbnQgdmVyKQorICAgICBRTWV0 YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsICJhZGRSZWdpc3RyeUxpc3RlbmVyIiwgUXQ6OlF1 ZXVlZENvbm5lY3Rpb24pOworIH0KKyAKKytRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6flFXYXls YW5kQ2xpZW50RXh0ZW5zaW9uKCkKKyt7CisrICAgIFFfRChRV2F5bGFuZENsaWVudEV4dGVuc2lv bik7CisrICAgIGlmIChkLT5yZWdpc3RlcmVkICYmICFRQ29yZUFwcGxpY2F0aW9uOjpjbG9zaW5n RG93bigpKQorKyAgICAgICAgZC0+d2F5bGFuZEludGVncmF0aW9uLT5kaXNwbGF5KCktPnJlbW92 ZUxpc3RlbmVyKCZRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6OmhhbmRsZVJlZ2lzdHJ5 R2xvYmFsLCB0aGlzKTsKKyt9CisrCisgUXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZEludGVncmF0 aW9uICpRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6aW50ZWdyYXRpb24oKSBjb25zdAorIHsKKyAg ICAgUV9EKGNvbnN0IFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKTsKK2RpZmYgLS1naXQgYS9xdHdh eWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uaCBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5oCitpbmRleCA5 ODI3MmU1Ny4uNWJkMjgzOTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9i YWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQv Z2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmgKK0BAIC02Myw2ICs2Myw3IEBAIGNsYXNz IFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uIDogcHVibGlj IFFPYmplY3QKKyAgICAgUV9QUk9QRVJUWShib29sIGFjdGl2ZSBSRUFEIGlzQWN0aXZlIE5PVElG WSBhY3RpdmVDaGFuZ2VkKQorIHB1YmxpYzoKKyAgICAgUVdheWxhbmRDbGllbnRFeHRlbnNpb24o Y29uc3QgaW50IHZlcnNpb24pOworKyAgICB+UVdheWxhbmRDbGllbnRFeHRlbnNpb24oKTsKKyAK KyAgICAgUXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZEludGVncmF0aW9uICppbnRlZ3JhdGlvbigp IGNvbnN0OworICAgICBpbnQgdmVyc2lvbigpIGNvbnN0OworZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmggYi9xdHdheWxh bmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5oCitpbmRleCA2 OWNjNDZhMC4uOTA5MWVmYmUgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9i YWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5oCitAQCAtNjgsNiArNjgsNyBAQCBw dWJsaWM6CisgICAgIFF0V2F5bGFuZENsaWVudDo6UVdheWxhbmRJbnRlZ3JhdGlvbiAqd2F5bGFu ZEludGVncmF0aW9uID0gbnVsbHB0cjsKKyAgICAgaW50IHZlcnNpb24gPSAtMTsKKyAgICAgYm9v bCBhY3RpdmUgPSBmYWxzZTsKKysgICAgYm9vbCByZWdpc3RlcmVkID0gZmFsc2U7CisgfTsKKyAK KyBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZENsaWVudEV4dGVuc2lvblRl bXBsYXRlUHJpdmF0ZSA6IHB1YmxpYyBRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGUKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwIGIv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlLmNwcAoraW5kZXggN2UyZTMz MDguLmUzZTYwZWQ1IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRk YXRhZGV2aWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2 aWNlLmNwcAorQEAgLTcyLDYgKzcyLDggQEAgUVdheWxhbmREYXRhRGV2aWNlOjpRV2F5bGFuZERh dGFEZXZpY2UoUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlciAqbWFuYWdlciwgUVdheWwKKyAKKyBR V2F5bGFuZERhdGFEZXZpY2U6On5RV2F5bGFuZERhdGFEZXZpY2UoKQorIHsKKysgICAgaWYgKHds X2RhdGFfZGV2aWNlX2dldF92ZXJzaW9uKG9iamVjdCgpKSA+PSBXTF9EQVRBX0RFVklDRV9SRUxF QVNFX1NJTkNFX1ZFUlNJT04pCisrICAgICAgICByZWxlYXNlKCk7CisgfQorIAorIFFXYXlsYW5k RGF0YU9mZmVyICpRV2F5bGFuZERhdGFEZXZpY2U6OnNlbGVjdGlvbk9mZmVyKCkgY29uc3QKK0BA IC0xMTAsNyArMTEyLDcgQEAgUVdheWxhbmREYXRhT2ZmZXIgKlFXYXlsYW5kRGF0YURldmljZTo6 ZHJhZ09mZmVyKCkgY29uc3QKKyAgICAgcmV0dXJuIG1fZHJhZ09mZmVyLmRhdGEoKTsKKyB9Cisg CistYm9vbCBRV2F5bGFuZERhdGFEZXZpY2U6OnN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRh LCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKytib29sIFFXYXlsYW5kRGF0YURldmljZTo6c3RhcnRE cmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25z LCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKyB7CisgICAgIGF1dG8gKnNlYXQgPSBtX2Rpc3BsYXkt PmN1cnJlbnRJbnB1dERldmljZSgpOworICAgICBhdXRvICpvcmlnaW4gPSBzZWF0LT5wb2ludGVy Rm9jdXMoKTsKK0BAIC0xMjMsNyArMTI1LDI4IEBAIGJvb2wgUVdheWxhbmREYXRhRGV2aWNlOjpz dGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUVdheWxhbmRXaW5kb3cgKmljb24pCisgICAg IH0KKyAKKyAgICAgbV9kcmFnU291cmNlLnJlc2V0KG5ldyBRV2F5bGFuZERhdGFTb3VyY2UobV9k aXNwbGF5LT5kbmRTZWxlY3Rpb25IYW5kbGVyKCksIG1pbWVEYXRhKSk7CisrCisrICAgIGlmICh3 bF9kYXRhX2RldmljZV9nZXRfdmVyc2lvbihvYmplY3QoKSkgPj0gMykKKysgICAgICAgIG1fZHJh Z1NvdXJjZS0+c2V0X2FjdGlvbnMoZHJvcEFjdGlvbnNUb1dsKHN1cHBvcnRlZEFjdGlvbnMpKTsK KysKKyAgICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxhbmREYXRhU291cmNl OjpjYW5jZWxsZWQsIHRoaXMsICZRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdTb3VyY2VDYW5jZWxs ZWQpOworKyAgICBjb25uZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3Vy Y2U6OmRuZFJlc3BvbnNlVXBkYXRlZCwgdGhpcywgW3RoaXNdKGJvb2wgYWNjZXB0ZWQsIFF0OjpE cm9wQWN0aW9uIGFjdGlvbikgeworKyAgICAgICAgICAgIGF1dG8gZHJhZyA9IHN0YXRpY19jYXN0 PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0 aW9uKCktPmRyYWcoKSk7CisrICAgICAgICAgICAgLy8gaW4gb2xkIHZlcnNpb25zIGRyb3AgYWN0 aW9uIGlzIG5vdCBzZXQsIHNvIHdlIGd1ZXNzCisrICAgICAgICAgICAgaWYgKHdsX2RhdGFfc291 cmNlX2dldF92ZXJzaW9uKG1fZHJhZ1NvdXJjZS0+b2JqZWN0KCkpIDwgMykgeworKyAgICAgICAg ICAgICAgICBkcmFnLT5zZXRSZXNwb25zZShhY2NlcHRlZCk7CisrICAgICAgICAgICAgfSBlbHNl IHsKKysgICAgICAgICAgICAgICAgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgcmVzcG9uc2UoYWNj ZXB0ZWQsIGFjdGlvbik7CisrICAgICAgICAgICAgICAgIGRyYWctPnNldFJlc3BvbnNlKHJlc3Bv bnNlKTsKKysgICAgICAgICAgICB9CisrICAgIH0pOworKyAgICBjb25uZWN0KG1fZHJhZ1NvdXJj ZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmRuZERyb3BwZWQsIHRoaXMsIFtdKGJvb2wg YWNjZXB0ZWQsIFF0OjpEcm9wQWN0aW9uIGFjdGlvbikgeworKyAgICAgICAgUVBsYXRmb3JtRHJv cFF0UmVzcG9uc2UgcmVzcG9uc2UoYWNjZXB0ZWQsIGFjdGlvbik7CisrICAgICAgICBzdGF0aWNf Y2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRl Z3JhdGlvbigpLT5kcmFnKCkpLT5zZXREcm9wUmVzcG9uc2UocmVzcG9uc2UpOworKyAgICB9KTsK KysgICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxhbmREYXRhU291cmNlOjpm aW5pc2hlZCwgdGhpcywgW10oKSB7CisrICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcg Kj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkp LT5maW5pc2hEcmFnKCk7CisrICAgIH0pOworIAorICAgICBzdGFydF9kcmFnKG1fZHJhZ1NvdXJj ZS0+b2JqZWN0KCksIG9yaWdpbi0+d2xTdXJmYWNlKCksIGljb24tPndsU3VyZmFjZSgpLCBtX2Rp c3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5zZXJpYWwoKSk7CisgICAgIHJldHVybiB0cnVl OworQEAgLTE1Miw3ICsxNzUsNyBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZp Y2VfZHJvcCgpCisgICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gZHJhZy0+c3VwcG9ydGVkQWN0 aW9ucygpOworICAgICB9IGVsc2UgaWYgKG1fZHJhZ09mZmVyKSB7CisgICAgICAgICBkcmFnRGF0 YSA9IG1fZHJhZ09mZmVyLT5taW1lRGF0YSgpOworLSAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9 IFF0OjpDb3B5QWN0aW9uIHwgUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6TGlua0FjdGlvbjsKKysgICAg ICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBtX2RyYWdPZmZlci0+c3VwcG9ydGVkQWN0aW9ucygpOwor ICAgICB9IGVsc2UgeworICAgICAgICAgcmV0dXJuOworICAgICB9CitAQCAtMTYyLDcgKzE4NSwx MSBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZHJvcCgpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRR3VpQXBwbGljYXRpb246OmtleWJvYXJkTW9kaWZpZXJzKCkpOworIAorICAg ICBpZiAoZHJhZykgeworLSAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlB cHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+ZmluaXNo RHJhZyhyZXNwb25zZSk7CisrICAgICAgICBhdXRvIGRyYWcgPSAgc3RhdGljX2Nhc3Q8UVdheWxh bmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ ZHJhZygpKTsKKysgICAgICAgIGRyYWctPnNldERyb3BSZXNwb25zZShyZXNwb25zZSk7CisrICAg ICAgICBkcmFnLT5maW5pc2hEcmFnKCk7CisrICAgIH0gZWxzZSBpZiAobV9kcmFnT2ZmZXIpIHsK KysgICAgICAgIG1fZHJhZ09mZmVyLT5maW5pc2goKTsKKyAgICAgfQorIH0KKyAKK0BAIC0xODYs NyArMjEzLDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2VudGVyKHVp bnQzMl90IHNlcmlhbCwgd2xfc3VyZmFjZSAqc3VyZmFjZSwKKyAgICAgICAgIHN1cHBvcnRlZEFj dGlvbnMgPSBkcmFnLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxzZSBpZiAobV9kcmFn T2ZmZXIpIHsKKyAgICAgICAgIGRyYWdEYXRhID0gbV9kcmFnT2ZmZXItPm1pbWVEYXRhKCk7Cist ICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkNvcHlBY3Rpb24gfCBRdDo6TW92ZUFjdGlv biB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IG1fZHJhZ09m ZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0KKyAKKyAgICAgY29uc3QgUVBsYXRmb3Jt RHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlID0gUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxl RHJhZyhtX2RyYWdXaW5kb3csIGRyYWdEYXRhLCBtX2RyYWdQb2ludCwgc3VwcG9ydGVkQWN0aW9u cywKK0BAIC0xOTcsMTEgKzIyNCw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2Rl dmljZV9lbnRlcih1aW50MzJfdCBzZXJpYWwsIHdsX3N1cmZhY2UgKnN1cmZhY2UsCisgICAgICAg ICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxh dGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5zZXRSZXNwb25zZShyZXNwb25zZSk7CisgICAg IH0KKyAKKy0gICAgaWYgKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSkgeworLSAgICAgICAgd2xfZGF0 YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2VyaWFsLCBtX2Ry YWdPZmZlci0+Zmlyc3RGb3JtYXQoKS50b1V0ZjgoKS5jb25zdERhdGEoKSk7CistICAgIH0gZWxz ZSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2FjY2VwdChtX2RyYWdPZmZlci0+b2JqZWN0KCks IG1fZW50ZXJTZXJpYWwsIG51bGxwdHIpOworLSAgICB9CisrICAgIHNlbmRSZXNwb25zZShzdXBw b3J0ZWRBY3Rpb25zLCByZXNwb25zZSk7CisgfQorIAorIHZvaWQgUVdheWxhbmREYXRhRGV2aWNl OjpkYXRhX2RldmljZV9sZWF2ZSgpCitAQCAtMjM1LDEwICsyNTgsMTAgQEAgdm9pZCBRV2F5bGFu ZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX21vdGlvbih1aW50MzJfdCB0aW1lLCB3bF9maXhlZF90 IHgsIHdsX2ZpeGUKKyAgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBkcmFnLT5zdXBwb3J0ZWRB Y3Rpb25zKCk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICBkcmFnRGF0YSA9IG1fZHJhZ09mZmVy LT5taW1lRGF0YSgpOworLSAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IFF0OjpDb3B5QWN0aW9u IHwgUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6TGlua0FjdGlvbjsKKysgICAgICAgIHN1cHBvcnRlZEFj dGlvbnMgPSBtX2RyYWdPZmZlci0+c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9CisgCistICAg IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlIHJlc3BvbnNlID0gUVdpbmRvd1N5c3RlbUludGVyZmFj ZTo6aGFuZGxlRHJhZyhtX2RyYWdXaW5kb3csIGRyYWdEYXRhLCBtX2RyYWdQb2ludCwgc3VwcG9y dGVkQWN0aW9ucywKKysgICAgY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgcmVzcG9uc2Ug PSBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVEcmFnKG1fZHJhZ1dpbmRvdywgZHJhZ0Rh dGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0ZWRBY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUd1 aUFwcGxpY2F0aW9uOjptb3VzZUJ1dHRvbnMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHdWlBcHBs aWNhdGlvbjo6a2V5Ym9hcmRNb2RpZmllcnMoKSk7CisgCitAQCAtMjQ2LDExICsyNjksNyBAQCB2 b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfbW90aW9uKHVpbnQzMl90IHRpbWUs IHdsX2ZpeGVkX3QgeCwgd2xfZml4ZQorICAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFn ICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygp KS0+c2V0UmVzcG9uc2UocmVzcG9uc2UpOworICAgICB9CisgCistICAgIGlmIChyZXNwb25zZS5p c0FjY2VwdGVkKCkpIHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVy LT5vYmplY3QoKSwgbV9lbnRlclNlcmlhbCwgbV9kcmFnT2ZmZXItPmZpcnN0Rm9ybWF0KCkudG9V dGY4KCkuY29uc3REYXRhKCkpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgd2xfZGF0YV9vZmZl cl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2VyaWFsLCBudWxscHRyKTsK Ky0gICAgfQorKyAgICBzZW5kUmVzcG9uc2Uoc3VwcG9ydGVkQWN0aW9ucywgcmVzcG9uc2UpOwor IH0KKyAjZW5kaWYgLy8gUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorIAorQEAgLTI3NywxNCArMjk2 LDEwIEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpzZWxlY3Rpb25Tb3VyY2VDYW5jZWxsZWQo KQorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6 OmRyYWdTb3VyY2VDYW5jZWxsZWQoKQorIHsKKysgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFn ICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygp KS0+ZmluaXNoRHJhZygpOworICAgICBtX2RyYWdTb3VyY2UucmVzZXQoKTsKKyB9CisgCistdm9p ZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdTb3VyY2VUYXJnZXRDaGFuZ2VkKGNvbnN0IFFTdHJp bmcgJm1pbWVUeXBlKQorLXsKKy0gICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlB cHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+dXBkYXRl VGFyZ2V0KG1pbWVUeXBlKTsKKy19CistCisgUVBvaW50IFFXYXlsYW5kRGF0YURldmljZTo6Y2Fs Y3VsYXRlRHJhZ1Bvc2l0aW9uKGludCB4LCBpbnQgeSwgUVdpbmRvdyAqd25kKSBjb25zdAorIHsK KyAgICAgUVBvaW50IHBudCh3bF9maXhlZF90b19pbnQoeCksIHdsX2ZpeGVkX3RvX2ludCh5KSk7 CitAQCAtMjk3LDYgKzMxMiwzMyBAQCBRUG9pbnQgUVdheWxhbmREYXRhRGV2aWNlOjpjYWxjdWxh dGVEcmFnUG9zaXRpb24oaW50IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNvbgorICAgICB9Cisg ICAgIHJldHVybiBwbnQ7CisgfQorKworK3ZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpzZW5kUmVz cG9uc2UoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIGNvbnN0IFFQbGF0Zm9ybURy YWdRdFJlc3BvbnNlICZyZXNwb25zZSkKKyt7CisrICAgIGlmIChyZXNwb25zZS5pc0FjY2VwdGVk KCkpIHsKKysgICAgICAgIGlmICh3bF9kYXRhX2RldmljZV9nZXRfdmVyc2lvbihvYmplY3QoKSkg Pj0gMykKKysgICAgICAgICAgICBtX2RyYWdPZmZlci0+c2V0X2FjdGlvbnMoZHJvcEFjdGlvbnNU b1dsKHN1cHBvcnRlZEFjdGlvbnMpLCBkcm9wQWN0aW9uc1RvV2wocmVzcG9uc2UuYWNjZXB0ZWRB Y3Rpb24oKSkpOworKworKyAgICAgICAgbV9kcmFnT2ZmZXItPmFjY2VwdChtX2VudGVyU2VyaWFs LCBtX2RyYWdPZmZlci0+Zmlyc3RGb3JtYXQoKSk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBt X2RyYWdPZmZlci0+YWNjZXB0KG1fZW50ZXJTZXJpYWwsIFFTdHJpbmcoKSk7CisrICAgIH0KKyt9 CisrCisraW50IFFXYXlsYW5kRGF0YURldmljZTo6ZHJvcEFjdGlvbnNUb1dsKFF0OjpEcm9wQWN0 aW9ucyBhY3Rpb25zKQorK3sKKysKKysgICAgaW50IHdsQWN0aW9ucyA9IFdMX0RBVEFfREVWSUNF X01BTkFHRVJfRE5EX0FDVElPTl9OT05FOworKyAgICBpZiAoYWN0aW9ucyAmIFF0OjpDb3B5QWN0 aW9uKQorKyAgICAgICAgd2xBY3Rpb25zIHw9IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FD VElPTl9DT1BZOworKyAgICBpZiAoYWN0aW9ucyAmIChRdDo6TW92ZUFjdGlvbiB8IFF0OjpUYXJn ZXRNb3ZlQWN0aW9uKSkKKysgICAgICAgIHdsQWN0aW9ucyB8PSBXTF9EQVRBX0RFVklDRV9NQU5B R0VSX0RORF9BQ1RJT05fTU9WRTsKKysKKysgICAgLy8gd2F5bGFuZCBkb2VzIG5vdCBzdXBwb3J0 IExpbmtBY3Rpb24gYXQgdGhlIHRpbWUgb2Ygd3JpdGluZworKyAgICByZXR1cm4gd2xBY3Rpb25z OworK30KKysKKysKKyAjZW5kaWYgLy8gUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorIAorIH0KK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oIGIv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlX3AuaAoraW5kZXggMTZjM2Fk MjguLjgwMWRjYzJjIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRk YXRhZGV2aWNlX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2 aWNlX3AuaAorQEAgLTY0LDYgKzY0LDcgQEAgUVRfUkVRVUlSRV9DT05GSUcod2F5bGFuZF9kYXRh ZGV2aWNlKTsKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBRTWltZURhdGE7CisrY2xh c3MgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2U7CisgY2xhc3MgUVdpbmRvdzsKKyAKKyBuYW1lc3Bh Y2UgUXRXYXlsYW5kQ2xpZW50IHsKK0BAIC04OSw3ICs5MCw3IEBAIHB1YmxpYzoKKyAKKyAjaWYg UVRfQ09ORklHKGRyYWdhbmRkcm9wKQorICAgICBRV2F5bGFuZERhdGFPZmZlciAqZHJhZ09mZmVy KCkgY29uc3Q7CistICAgIGJvb2wgc3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFFXYXls YW5kV2luZG93ICppY29uKTsKKysgICAgYm9vbCBzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0 YSwgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIFFXYXlsYW5kV2luZG93ICppY29u KTsKKyAgICAgdm9pZCBjYW5jZWxEcmFnKCk7CisgI2VuZGlmCisgCitAQCAtMTA5LDEzICsxMTAs MTYgQEAgcHJpdmF0ZSBRX1NMT1RTOgorIAorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisg ICAgIHZvaWQgZHJhZ1NvdXJjZUNhbmNlbGxlZCgpOworLSAgICB2b2lkIGRyYWdTb3VyY2VUYXJn ZXRDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlKTsKKyAjZW5kaWYKKyAKKyBwcml2YXRl OgorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgICAgIFFQb2ludCBjYWxjdWxhdGVEcmFn UG9zaXRpb24oaW50IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNvbnN0OworICNlbmRpZgorKyAg ICB2b2lkIHNlbmRSZXNwb25zZShRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgY29u c3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysKKysgICAgc3RhdGljIGlu dCBkcm9wQWN0aW9uc1RvV2woUXQ6OkRyb3BBY3Rpb25zIGRyb3BBY3Rpb25zKTsKKysKKyAKKyAg ICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworICAgICBRV2F5bGFuZElu cHV0RGV2aWNlICptX2lucHV0RGV2aWNlID0gbnVsbHB0cjsKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyLmNwcCBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwCitpbmRleCAzNWQ2NzMwNy4u NmRjNGY3N2YgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFk ZXZpY2VtYW5hZ2VyLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh ZGV2aWNlbWFuYWdlci5jcHAKK0BAIC01MCw4ICs1MCw4IEBAIFFUX0JFR0lOX05BTUVTUEFDRQor IAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQgeworIAorLVFXYXlsYW5kRGF0YURldmljZU1h bmFnZXI6OlFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5 LCB1aW50MzJfdCBpZCkKKy0gICAgOiB3bF9kYXRhX2RldmljZV9tYW5hZ2VyKGRpc3BsYXktPnds X3JlZ2lzdHJ5KCksIGlkLCAxKQorK1FXYXlsYW5kRGF0YURldmljZU1hbmFnZXI6OlFXYXlsYW5k RGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCBpbnQgdmVyc2lvbiwg dWludDMyX3QgaWQpCisrICAgIDogd2xfZGF0YV9kZXZpY2VfbWFuYWdlcihkaXNwbGF5LT53bF9y ZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCAzKSkKKyAgICAgLCBtX2Rpc3BsYXkoZGlzcGxh eSkKKyB7CisgICAgIC8vIENyZWF0ZSB0cmFuc2ZlciBkZXZpY2VzIGZvciBhbGwgaW5wdXQgZGV2 aWNlcy4KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZp Y2VtYW5hZ2VyX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1h bmFnZXJfcC5oCitpbmRleCBiZDA1YzBmYi4uNTEwZDliZTQgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAorKysrIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9wLmgKK0BAIC02OCw3ICs2 OCw3IEBAIGNsYXNzIFFXYXlsYW5kSW5wdXREZXZpY2U7CisgY2xhc3MgUV9XQVlMQU5EX0NMSUVO VF9FWFBPUlQgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlciA6IHB1YmxpYyBRdFdheWxhbmQ6Onds X2RhdGFfZGV2aWNlX21hbmFnZXIKKyB7CisgcHVibGljOgorLSAgICBRV2F5bGFuZERhdGFEZXZp Y2VNYW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwgdWludDMyX3QgaWQpOworKyAgICBR V2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwgaW50IHZl cnNpb24sIHVpbnQzMl90IGlkKTsKKyAgICAgflFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIoKSBv dmVycmlkZTsKKyAKKyAgICAgUVdheWxhbmREYXRhRGV2aWNlICpnZXREYXRhRGV2aWNlKFFXYXls YW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWNlKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlci5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRhdGFvZmZlci5jcHAKK2luZGV4IDIyOTdlOGExLi5mZTBlYThjOSAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNwcAorKysrIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCitAQCAtODIsNiArODIsMTUgQEAg UU1pbWVEYXRhICpRV2F5bGFuZERhdGFPZmZlcjo6bWltZURhdGEoKQorICAgICByZXR1cm4gbV9t aW1lRGF0YS5kYXRhKCk7CisgfQorIAorK1F0OjpEcm9wQWN0aW9ucyBRV2F5bGFuZERhdGFPZmZl cjo6c3VwcG9ydGVkQWN0aW9ucygpIGNvbnN0CisreworKyAgICBpZiAod2xfZGF0YV9vZmZlcl9n ZXRfdmVyc2lvbihjb25zdF9jYXN0PDo6d2xfZGF0YV9vZmZlcio+KG9iamVjdCgpKSkgPCAzKSB7 CisrICAgICAgICByZXR1cm4gUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6Q29weUFjdGlvbjsKKysgICAg fQorKworKyAgICByZXR1cm4gbV9zdXBwb3J0ZWRBY3Rpb25zOworK30KKysKKyB2b2lkIFFXYXls YW5kRGF0YU9mZmVyOjpzdGFydFJlY2VpdmluZyhjb25zdCBRU3RyaW5nICZtaW1lVHlwZSwgaW50 IGZkKQorIHsKKyAgICAgcmVjZWl2ZShtaW1lVHlwZSwgZmQpOworQEAgLTkzLDYgKzEwMiwyMiBA QCB2b2lkIFFXYXlsYW5kRGF0YU9mZmVyOjpkYXRhX29mZmVyX29mZmVyKGNvbnN0IFFTdHJpbmcg Jm1pbWVfdHlwZSkKKyAgICAgbV9taW1lRGF0YS0+YXBwZW5kRm9ybWF0KG1pbWVfdHlwZSk7Cisg fQorIAorK3ZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OmRhdGFfb2ZmZXJfYWN0aW9uKHVpbnQzMl90 IGRuZF9hY3Rpb24pCisreworKyAgICBRX1VOVVNFRChkbmRfYWN0aW9uKTsKKysgICAgLy8gVGhp cyBpcyB0aGUgY29tcG9zaXRvciB0ZWxsaW5nIHRoZSBkcmFnIHRhcmdldCB3aGF0IGFjdGlvbiBp dCBzaG91bGQgcGVyZm9ybQorKyAgICAvLyBJdCBkb2VzIG5vdCBtYXAgbmljZWx5IGludG8gUXQg ZmluYWwgZHJvcCBzZW1hbnRpY3MsIG90aGVyIHRoYW4gcHJldGVuZGluZyB0aGVyZSBpcyBvbmx5 IG9uZSBzdXBwb3J0ZWQgYWN0aW9uPworK30KKysKKyt2b2lkIFFXYXlsYW5kRGF0YU9mZmVyOjpk YXRhX29mZmVyX3NvdXJjZV9hY3Rpb25zKHVpbnQzMl90IHNvdXJjZV9hY3Rpb25zKQorK3sKKysg ICAgbV9zdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkRyb3BBY3Rpb25zKCk7CisrICAgIGlmIChzb3Vy Y2VfYWN0aW9ucyAmIFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9NT1ZFKQorKyAg ICAgICAgbV9zdXBwb3J0ZWRBY3Rpb25zIHw9IFF0OjpNb3ZlQWN0aW9uOworKyAgICBpZiAoc291 cmNlX2FjdGlvbnMgJiBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fQ09QWSkKKysg ICAgICAgIG1fc3VwcG9ydGVkQWN0aW9ucyB8PSBRdDo6Q29weUFjdGlvbjsKKyt9CisrCisgUVdh eWxhbmRNaW1lRGF0YTo6UVdheWxhbmRNaW1lRGF0YShRV2F5bGFuZEFic3RyYWN0RGF0YU9mZmVy ICpkYXRhT2ZmZXIpCisgICAgIDogbV9kYXRhT2ZmZXIoZGF0YU9mZmVyKQorIHsKK0BAIC0xNjMs MTcgKzE4OCwxOCBAQCBRVmFyaWFudCBRV2F5bGFuZE1pbWVEYXRhOjpyZXRyaWV2ZURhdGFfc3lz KGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBRVmFyaWFudDo6VAorIAorIGludCBRV2F5bGFuZE1p bWVEYXRhOjpyZWFkRGF0YShpbnQgZmQsIFFCeXRlQXJyYXkgJmRhdGEpIGNvbnN0CisgeworLSAg ICBmZF9zZXQgcmVhZHNldDsKKy0gICAgRkRfWkVSTygmcmVhZHNldCk7CistICAgIEZEX1NFVChm ZCwgJnJlYWRzZXQpOworLSAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0OworKyAgICBzdHJ1Y3Qg cG9sbGZkIHJlYWRzZXQ7CisrICAgIHJlYWRzZXQuZmQgPSBmZDsKKysgICAgcmVhZHNldC5ldmVu dHMgPSBQT0xMSU47CisrICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0OworICAgICB0aW1lb3V0 LnR2X3NlYyA9IDE7CistICAgIHRpbWVvdXQudHZfdXNlYyA9IDA7CisrICAgIHRpbWVvdXQudHZf bnNlYyA9IDA7CisrCisgCisgICAgIFFfRk9SRVZFUiB7CistICAgICAgICBpbnQgcmVhZHkgPSBz ZWxlY3QoRkRfU0VUU0laRSwgJnJlYWRzZXQsIG51bGxwdHIsIG51bGxwdHIsICZ0aW1lb3V0KTsK KysgICAgICAgIGludCByZWFkeSA9IHF0X3NhZmVfcG9sbCgmcmVhZHNldCwgMSwgJnRpbWVvdXQp OworICAgICAgICAgaWYgKHJlYWR5IDwgMCkgeworLSAgICAgICAgICAgIHFXYXJuaW5nKCkgPDwg IlFXYXlsYW5kRGF0YU9mZmVyOiBzZWxlY3QoKSBmYWlsZWQiOworKyAgICAgICAgICAgIHFXYXJu aW5nKCkgPDwgIlFXYXlsYW5kRGF0YU9mZmVyOiBxdF9zYWZlX3BvbGwoKSBmYWlsZWQiOworICAg ICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgIH0gZWxzZSBpZiAocmVhZHkgPT0gMCkgewor ICAgICAgICAgICAgIHFXYXJuaW5nKCJRV2F5bGFuZERhdGFPZmZlcjogdGltZW91dCByZWFkaW5n IGZyb20gcGlwZSIpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k ZGF0YW9mZmVyX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyX3Au aAoraW5kZXggOWNmMTQ4M2MuLjZmNjY3Mzk4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRhdGFvZmZlcl9wLmgKK0BAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKKyAgICAgZXhw bGljaXQgUVdheWxhbmREYXRhT2ZmZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCBzdHJ1Y3Qg Ojp3bF9kYXRhX29mZmVyICpvZmZlcik7CisgICAgIH5RV2F5bGFuZERhdGFPZmZlcigpIG92ZXJy aWRlOworICAgICBRTWltZURhdGEgKm1pbWVEYXRhKCkgb3ZlcnJpZGU7CisrICAgIFF0OjpEcm9w QWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zKCkgY29uc3Q7CisgCisgICAgIFFTdHJpbmcgZmlyc3RG b3JtYXQoKSBjb25zdDsKKyAKK0BAIC04OSwxMCArOTAsMTMgQEAgcHVibGljOgorIAorIHByb3Rl Y3RlZDoKKyAgICAgdm9pZCBkYXRhX29mZmVyX29mZmVyKGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlw ZSkgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9vZmZlcl9zb3VyY2VfYWN0aW9ucyh1aW50MzJf dCBzb3VyY2VfYWN0aW9ucykgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9vZmZlcl9hY3Rpb24o dWludDMyX3QgZG5kX2FjdGlvbikgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVdheWxh bmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5 bGFuZE1pbWVEYXRhPiBtX21pbWVEYXRhOworKyAgICBRdDo6RHJvcEFjdGlvbnMgbV9zdXBwb3J0 ZWRBY3Rpb25zOworIH07CisgCisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRkYXRhc291cmNlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0 YXNvdXJjZS5jcHAKK2luZGV4IGY0NTEyMmZiLi41NTk5Y2JkNCAxMDA2NDQKKy0tLSBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAKKysrKyBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAKK0BAIC0xMDEsNyArMTAxLDMyIEBAIHZv aWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9zZW5kKGNvbnN0IFFTdHJpbmcgJm1p bWVfdHlwZSwgaW50MzJfdCBmZCkKKyAKKyB2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9z b3VyY2VfdGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSkKKyB7CistICAgIFFfRU1JVCB0 YXJnZXRDaGFuZ2VkKG1pbWVfdHlwZSk7CisrICAgIG1fYWNjZXB0ZWQgPSAhbWltZV90eXBlLmlz RW1wdHkoKTsKKysgICAgUV9FTUlUIGRuZFJlc3BvbnNlVXBkYXRlZChtX2FjY2VwdGVkLCBtX2Ry b3BBY3Rpb24pOworK30KKysKKyt2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2Vf YWN0aW9uKHVpbnQzMl90IGFjdGlvbikKKyt7CisrICAgIFF0OjpEcm9wQWN0aW9uIHF0QWN0aW9u ID0gUXQ6Oklnbm9yZUFjdGlvbjsKKysKKysgICAgaWYgKGFjdGlvbiA9PSBXTF9EQVRBX0RFVklD RV9NQU5BR0VSX0RORF9BQ1RJT05fTU9WRSkKKysgICAgICAgIHF0QWN0aW9uID0gUXQ6Ok1vdmVB Y3Rpb247CisrICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RO RF9BQ1RJT05fQ09QWSkKKysgICAgICAgIHF0QWN0aW9uID0gUXQ6OkNvcHlBY3Rpb247CisrCisr ICAgIG1fZHJvcEFjdGlvbiA9IHF0QWN0aW9uOworKyAgICBRX0VNSVQgZG5kUmVzcG9uc2VVcGRh dGVkKG1fYWNjZXB0ZWQsIG1fZHJvcEFjdGlvbik7CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRh U291cmNlOjpkYXRhX3NvdXJjZV9kbmRfZmluaXNoZWQoKQorK3sKKysgICAgUV9FTUlUIGZpbmlz aGVkKCk7CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9kbmRf ZHJvcF9wZXJmb3JtZWQoKQorK3sKKysKKysgICAgUV9FTUlUIGRuZERyb3BwZWQobV9hY2NlcHRl ZCwgbV9kcm9wQWN0aW9uKTsKKyB9CisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRhdGFzb3VyY2VfcC5oCitpbmRleCAyNWFmZmY3OS4uOTZmMDdiYzMgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5oCisrKysgYi9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5oCitAQCAtNzcsMTcgKzc3LDI1 IEBAIHB1YmxpYzoKKyAgICAgUU1pbWVEYXRhICptaW1lRGF0YSgpIGNvbnN0OworIAorIFFfU0lH TkFMUzoKKy0gICAgdm9pZCB0YXJnZXRDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSk7 CisgICAgIHZvaWQgY2FuY2VsbGVkKCk7CisrICAgIHZvaWQgZmluaXNoZWQoKTsKKysKKysgICAg dm9pZCBkbmRSZXNwb25zZVVwZGF0ZWQoYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24gYWN0 aW9uKTsKKysgICAgdm9pZCBkbmREcm9wcGVkKGJvb2wgYWNjZXB0ZWQsIFF0OjpEcm9wQWN0aW9u IGFjdGlvbik7CisgCisgcHJvdGVjdGVkOgorICAgICB2b2lkIGRhdGFfc291cmNlX2NhbmNlbGxl ZCgpIG92ZXJyaWRlOworICAgICB2b2lkIGRhdGFfc291cmNlX3NlbmQoY29uc3QgUVN0cmluZyAm bWltZV90eXBlLCBpbnQzMl90IGZkKSBvdmVycmlkZTsKKyAgICAgdm9pZCBkYXRhX3NvdXJjZV90 YXJnZXQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRh X3NvdXJjZV9kbmRfZHJvcF9wZXJmb3JtZWQoKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX3Nv dXJjZV9kbmRfZmluaXNoZWQoKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX3NvdXJjZV9hY3Rp b24odWludDMyX3QgYWN0aW9uKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFu ZERpc3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFNaW1lRGF0YSAqbV9taW1lX2Rh dGEgPSBudWxscHRyOworKyAgICBib29sIG1fYWNjZXB0ZWQgPSBmYWxzZTsKKysgICAgUXQ6OkRy b3BBY3Rpb24gbV9kcm9wQWN0aW9uID0gUXQ6Oklnbm9yZUFjdGlvbjsKKyB9OworIAorIH0KK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5LmNwcAoraW5kZXggZjEwYzFmNzkuLmMw MWUyMzhiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5 LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5LmNwcAorQEAg LTg1LDEwICs4NSwyMDMgQEAKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAKKysjaW5jbHVkZSA8 dHVwbGU+IC8vIGZvciBzdGQ6OnRpZQorKworK3N0YXRpYyB2b2lkIGNoZWNrV2F5bGFuZEVycm9y KHN0cnVjdCB3bF9kaXNwbGF5ICpkaXNwbGF5KQorK3sKKysgICAgaW50IGVjb2RlID0gd2xfZGlz cGxheV9nZXRfZXJyb3IoZGlzcGxheSk7CisrICAgIGlmICgoZWNvZGUgPT0gRVBJUEUgfHwgZWNv ZGUgPT0gRUNPTk5SRVNFVCkpIHsKKysgICAgICAgIC8vIHNwZWNpYWwgY2FzZSB0aGlzIHRvIHBy b3ZpZGUgYSBuaWNlciBlcnJvcgorKyAgICAgICAgcVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5l Y3Rpb24gYnJva2UuIERpZCB0aGUgV2F5bGFuZCBjb21wb3NpdG9yIGRpZT8iKTsKKysgICAgfSBl bHNlIHsKKysgICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9uIGV4cGVyaWVu Y2VkIGEgZmF0YWwgZXJyb3I6ICVzIiwgc3RyZXJyb3IoZWNvZGUpKTsKKysgICAgfQorKyAgICBf ZXhpdCgxKTsKKyt9CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgbmFtZXNwYWNlIFF0V2F5 bGFuZENsaWVudCB7CisgCisrY2xhc3MgRXZlbnRUaHJlYWQgOiBwdWJsaWMgUVRocmVhZAorK3sK KysgICAgUV9PQkpFQ1QKKytwdWJsaWM6CisrICAgIGVudW0gT3BlcmF0aW5nTW9kZSB7CisrICAg ICAgICBFbWl0VG9EaXNwYXRjaCwgLy8gRW1pdCB0aGUgc2lnbmFsLCBhbGxvdyBkaXNwYXRjaGlu ZyBpbiBhIGRpZmZlcm50IHRocmVhZC4KKysgICAgICAgIFNlbGZEaXNwYXRjaCwgLy8gRGlzcGF0 Y2ggdGhlIGV2ZW50cyBpbnNpZGUgdGhpcyB0aHJlYWQuCisrICAgIH07CisrCisrICAgIEV2ZW50 VGhyZWFkKHN0cnVjdCB3bF9kaXNwbGF5ICogd2wsIHN0cnVjdCB3bF9ldmVudF9xdWV1ZSAqIGV2 X3F1ZXVlLAorKyAgICAgICAgICAgICAgICBPcGVyYXRpbmdNb2RlIG1vZGUpCisrICAgICAgICA6 IG1fZmQod2xfZGlzcGxheV9nZXRfZmQod2wpKQorKyAgICAgICAgLCBtX3BpcGVmZHsgLTEsIC0x IH0KKysgICAgICAgICwgbV93bGRpc3BsYXkod2wpCisrICAgICAgICAsIG1fd2xldnF1ZXVlKGV2 X3F1ZXVlKQorKyAgICAgICAgLCBtX21vZGUobW9kZSkKKysgICAgICAgICwgbV9yZWFkaW5nKHRy dWUpCisrICAgICAgICAsIG1fcXVpdHRpbmcoZmFsc2UpCisrICAgIHsKKysgICAgICAgIHNldE9i amVjdE5hbWUoUVN0cmluZ0xpdGVyYWwoIldheWxhbmRFdmVudFRocmVhZCIpKTsKKysgICAgfQor KworKyAgICB2b2lkIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpCisrICAgIHsKKysgICAgICAgIC8q CisrICAgICAgICAgKiBEaXNwYXRjaCBwZW5kaW5nIGV2ZW50cyBhbmQgZmx1c2ggdGhlIHJlcXVl c3RzIGF0IGxlYXN0IG9uY2UuIElmIHRoZSBldmVudCB0aHJlYWQKKysgICAgICAgICAqIGlzIG5v dCByZWFkaW5nLCB0cnkgdG8gY2FsbCBfcHJlcGFyZV9yZWFkKCkgdG8gYWxsb3cgdGhlIGV2ZW50 IHRocmVhZCB0byBwb2xsKCkuCisrICAgICAgICAgKiBJZiB0aGF0IGZhaWxzLCByZS10cnkgZGlz cGF0Y2ggJiBmbHVzaCBhZ2FpbiB1bnRpbCBfcHJlcGFyZV9yZWFkKCkgaXMgc3VjY2Vzc2Z1bC4K KysgICAgICAgICAqCisrICAgICAgICAgKiBUaGlzIGFsbG93IGFueSBjYWxsIHRvIHJlYWRBbmRE aXNwYXRjaEV2ZW50cygpIHRvIHN0YXJ0IGV2ZW50IHRocmVhZCdzIHBvbGxpbmcsCisrICAgICAg ICAgKiBub3Qgb25seSB0aGUgb25lIGlzc3VlZCBmcm9tIGV2ZW50IHRocmVhZCdzIHdhaXRGb3JS ZWFkaW5nKCksIHdoaWNoIG1lYW5zIGZ1bmN0aW9ucworKyAgICAgICAgICogY2FsbGVkIGZyb20g ZGlzcGF0Y2hfcGVuZGluZygpIGNhbiBzYWZlbHkgc3BpbiBhbiBldmVudCBsb29wLgorKyAgICAg ICAgICovCisrICAgICAgICBmb3IgKDs7KSB7CisrICAgICAgICAgICAgaWYgKGRpc3BhdGNoUXVl dWVQZW5kaW5nKCkgPCAwKSB7CisrICAgICAgICAgICAgICAgIGNoZWNrV2F5bGFuZEVycm9yKG1f d2xkaXNwbGF5KTsKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAgIH0KKysK KysgICAgICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoKG1fd2xkaXNwbGF5KTsKKysKKysgICAgICAg ICAgICAvLyBXZSBoYXZlIHRvIGNoZWNrIGlmIGV2ZW50IHRocmVhZCBpcyByZWFkaW5nIGV2ZXJ5 IHRpbWUgd2UgZGlzcGF0Y2gKKysgICAgICAgICAgICAvLyBzb21ldGhpbmcsIGFzIHRoYXQgbWF5 IHJlY3Vyc2l2ZWx5IGNhbGwgdGhpcyBmdW5jdGlvbi4KKysgICAgICAgICAgICBpZiAobV9yZWFk aW5nLmxvYWRBY3F1aXJlKCkpCisrICAgICAgICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAg ICAgIGlmIChwcmVwYXJlUmVhZFF1ZXVlKCkgPT0gMCkgeworKyAgICAgICAgICAgICAgICBRTXV0 ZXhMb2NrZXIgbCgmbV9tdXRleCk7CisrICAgICAgICAgICAgICAgIG1fcmVhZGluZy5zdG9yZVJl bGVhc2UodHJ1ZSk7CisrICAgICAgICAgICAgICAgIG1fY29uZC53YWtlT25lKCk7CisrICAgICAg ICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgfQorKwor KyAgICB2b2lkIHN0b3AoKQorKyAgICB7CisrICAgICAgICAvLyBXZSBoYXZlIHRvIGJvdGggd3Jp dGUgdG8gdGhlIHBpcGUgYW5kIHNldCB0aGUgZmxhZywgYXMgdGhlIHRocmVhZCBtYXkgYmUKKysg ICAgICAgIC8vIGVpdGhlciBpbiB0aGUgcG9sbCgpIG9yIHdhaXRpbmcgZm9yIF9wcmVwYXJlX3Jl YWQoKS4KKysgICAgICAgIGlmIChtX3BpcGVmZFsxXSAhPSAtMSAmJiB3cml0ZShtX3BpcGVmZFsx XSwgIlwwIiwgMSkgPT0gLTEpCisrICAgICAgICAgICAgcVdhcm5pbmcoIkZhaWxlZCB0byB3cml0 ZSB0byB0aGUgcGlwZTogJXMuIiwgc3RyZXJyb3IoZXJybm8pKTsKKysKKysgICAgICAgIHsKKysg ICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbCgmbV9tdXRleCk7CisrICAgICAgICAgICAgbV9xdWl0 dGluZyA9IHRydWU7CisrICAgICAgICAgICAgbV9jb25kLndha2VPbmUoKTsKKysgICAgICAgIH0K KysKKysgICAgICAgIHdhaXQoKTsKKysgICAgfQorKworK1FfU0lHTkFMUzoKKysgICAgdm9pZCBu ZWVkUmVhZEFuZERpc3BhdGNoKCk7CisrCisrcHJvdGVjdGVkOgorKyAgICB2b2lkIHJ1bigpIG92 ZXJyaWRlCisrICAgIHsKKysgICAgICAgIC8vIHdlIHVzZSB0aGlzIHBpcGUgdG8gbWFrZSB0aGUg bG9vcCBleGl0IG90aGVyd2lzZSBpZiB3ZSBzaW1wbHkgdXNlZCBhIGZsYWcgb24gdGhlIGxvb3Ag Y29uZGl0aW9uLCBpZiBzdG9wKCkgZ2V0cworKyAgICAgICAgLy8gY2FsbGVkIHdoaWxlIHBvbGwo KSBpcyBibG9ja2luZyB0aGUgdGhyZWFkIHdpbGwgbmV2ZXIgcXVpdCBzaW5jZSB0aGVyZSBhcmUg bm8gd2F5bGFuZCBtZXNzYWdlcyBjb21pbmcgYW55bW9yZS4KKysgICAgICAgIHN0cnVjdCBQaXBl CisrICAgICAgICB7CisrICAgICAgICAgICAgUGlwZShpbnQgKmZkcykKKysgICAgICAgICAgICAg ICAgOiBmZHMoZmRzKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgaWYgKHF0X3Nh ZmVfcGlwZShmZHMpICE9IDApCisrICAgICAgICAgICAgICAgICAgICBxV2FybmluZygiUGlwZSBj cmVhdGlvbiBmYWlsZWQuIFF1aXR0aW5nIG1heSBoYW5nLiIpOworKyAgICAgICAgICAgIH0KKysg ICAgICAgICAgICB+UGlwZSgpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBpZiAo ZmRzWzBdICE9IC0xKSB7CisrICAgICAgICAgICAgICAgICAgICBjbG9zZShmZHNbMF0pOworKyAg ICAgICAgICAgICAgICAgICAgY2xvc2UoZmRzWzFdKTsKKysgICAgICAgICAgICAgICAgfQorKyAg ICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBpbnQgKmZkczsKKysgICAgICAgIH0gcGlwZSht X3BpcGVmZCk7CisrCisrICAgICAgICAvLyBNYWtlIHRoZSBtYWluIHRocmVhZCBjYWxsIHdsX3By ZXBhcmVfcmVhZCgpLCBkaXNwYXRjaCB0aGUgcGVuZGluZyBtZXNzYWdlcyBhbmQgZmx1c2ggdGhl CisrICAgICAgICAvLyBvdXRib3VuZCBvbmVzLiBXYWl0IHVudGlsIGl0J3MgZG9uZSBiZWZvcmUg cHJvY2VlZGluZywgdW5sZXNzIHdlJ3JlIHRvbGQgdG8gcXVpdC4KKysgICAgICAgIHdoaWxlICh3 YWl0Rm9yUmVhZGluZygpKSB7CisrICAgICAgICAgICAgcG9sbGZkIGZkc1syXSA9IHsgeyBtX2Zk LCBQT0xMSU4sIDAgfSwgeyBtX3BpcGVmZFswXSwgUE9MTElOLCAwIH0gfTsKKysgICAgICAgICAg ICBwb2xsKGZkcywgMiwgLTEpOworKworKyAgICAgICAgICAgIGlmIChmZHNbMV0ucmV2ZW50cyAm IFBPTExJTikgeworKyAgICAgICAgICAgICAgICAvLyB3ZSBkb24ndCByZWFsbHkgY2FyZSB0byBy ZWFkIHRoZSBieXRlIHRoYXQgd2FzIHdyaXR0ZW4gaGVyZSBzaW5jZSB3ZSdyZSBjbG9zaW5nIGRv d24KKysgICAgICAgICAgICAgICAgd2xfZGlzcGxheV9jYW5jZWxfcmVhZChtX3dsZGlzcGxheSk7 CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAg ICBpZiAoZmRzWzBdLnJldmVudHMgJiBQT0xMSU4pCisrICAgICAgICAgICAgICAgIHdsX2Rpc3Bs YXlfcmVhZF9ldmVudHMobV93bGRpc3BsYXkpOworKyAgICAgICAgICAgICAgICAvLyBUaGUgcG9s bGwgd2FzIHN1Y2Nlc2Z1bGwgYW5kIHRoZSBldmVudCB0aHJlYWQgZGlkIHRoZSB3bF9kaXNwbGF5 X3JlYWRfZXZlbnRzKCkuIE9uIHRoZSBuZXh0IGl0ZXJhdGlvbiBvZiB0aGUgbG9vcAorKyAgICAg ICAgICAgICAgICAvLyB0aGUgZXZlbnQgc2VudCB0byB0aGUgbWFpbiB0aHJlYWQgd2lsbCBjYXVz ZSBpdCB0byBkaXNwYXRjaCB0aGUgbWVzc2FnZXMganVzdCByZWFkLCB1bmxlc3MgdGhlIGxvb3Ag ZXhpdHMgaW4gd2hpY2gKKysgICAgICAgICAgICAgICAgLy8gY2FzZSB3ZSBkb24ndCBjYXJlIGFu eW1vcmUgYWJvdXQgdGhlbS4KKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgICAgIHds X2Rpc3BsYXlfY2FuY2VsX3JlYWQobV93bGRpc3BsYXkpOworKyAgICAgICAgfQorKyAgICB9Cisr CisrcHJpdmF0ZToKKysgICAgYm9vbCB3YWl0Rm9yUmVhZGluZygpCisrICAgIHsKKysgICAgICAg IFFfQVNTRVJUKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSA9PSB0aGlzKTsKKysKKysgICAgICAg IG1fcmVhZGluZy5zdG9yZVJlbGVhc2UoZmFsc2UpOworKworKyAgICAgICAgaWYgKG1fbW9kZSA9 PSBTZWxmRGlzcGF0Y2gpIHsKKysgICAgICAgICAgICByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKTsK KysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgUV9FTUlUIG5lZWRSZWFkQW5kRGlzcGF0 Y2goKTsKKysKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbV9tdXRleCk7CisrICAg ICAgICAgICAgLy8gbV9yZWFkaW5nIG1pZ2h0IGJlIHNldCBmcm9tIG91ciBlbWl0IG9yIHNvbWUg b3RoZXIgaW52b2NhdGlvbiBvZgorKyAgICAgICAgICAgIC8vIHJlYWRBbmREaXNwYXRjaEV2ZW50 cygpLgorKyAgICAgICAgICAgIHdoaWxlICghbV9yZWFkaW5nLmxvYWRSZWxheGVkKCkgJiYgIW1f cXVpdHRpbmcpCisrICAgICAgICAgICAgICAgIG1fY29uZC53YWl0KCZtX211dGV4KTsKKysgICAg ICAgIH0KKysKKysgICAgICAgIHJldHVybiAhbV9xdWl0dGluZzsKKysgICAgfQorKworKyAgICBp bnQgZGlzcGF0Y2hRdWV1ZVBlbmRpbmcoKQorKyAgICB7CisrICAgICAgICBpZiAobV93bGV2cXVl dWUpCisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGlu ZyhtX3dsZGlzcGxheSwgbV93bGV2cXVldWUpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAg IHJldHVybiB3bF9kaXNwbGF5X2Rpc3BhdGNoX3BlbmRpbmcobV93bGRpc3BsYXkpOworKyAgICB9 CisrCisrICAgIGludCBwcmVwYXJlUmVhZFF1ZXVlKCkKKysgICAgeworKyAgICAgICAgaWYgKG1f d2xldnF1ZXVlKQorKyAgICAgICAgICAgIHJldHVybiB3bF9kaXNwbGF5X3ByZXBhcmVfcmVhZF9x dWV1ZShtX3dsZGlzcGxheSwgbV93bGV2cXVldWUpOworKyAgICAgICAgZWxzZQorKyAgICAgICAg ICAgIHJldHVybiB3bF9kaXNwbGF5X3ByZXBhcmVfcmVhZChtX3dsZGlzcGxheSk7CisrICAgIH0K KysKKysgICAgaW50IG1fZmQ7CisrICAgIGludCBtX3BpcGVmZFsyXTsKKysgICAgd2xfZGlzcGxh eSAqbV93bGRpc3BsYXk7CisrICAgIHdsX2V2ZW50X3F1ZXVlICptX3dsZXZxdWV1ZTsKKysgICAg T3BlcmF0aW5nTW9kZSBtX21vZGU7CisrCisrICAgIC8qIENvbmN1cnJlbmN5IG5vdGUgd2hlbiBv cGVyYXRpbmcgaW4gRW1pdFRvRGlzcGF0Y2ggbW9kZToKKysgICAgICogbV9yZWFkaW5nIGlzIHNl dCB0byBmYWxzZSBpbnNpZGUgZXZlbnQgdGhyZWFkJ3Mgd2FpdEZvclJlYWRpbmcoKSwgYW5kIGlz CisrICAgICAqIHNldCB0byB0cnVlIGluc2lkZSBtYWluIHRocmVhZCdzIHJlYWRBbmREaXNwYXRj aEV2ZW50cygpLgorKyAgICAgKiBUaGUgbG9jayBpcyBub3QgdGFrZW4gd2hlbiBzZXR0aW5nIG1f cmVhZGluZyB0byBmYWxzZSwgYXMgdGhlIG1haW4gdGhyZWFkCisrICAgICAqIGlzIG5vdCBhY3Rp dmVseSB3YWl0aW5nIGZvciBpdCB0byB0dXJuIGZhbHNlLiBIb3dldmVyLCB0aGUgbG9jayBpcyB0 YWtlbgorKyAgICAgKiBpbnNpZGUgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkgYmVmb3JlIHNldHRp bmcgbV9yZWFkaW5nIHRvIHRydWUsCisrICAgICAqIGFzIHRoZSBldmVudCB0aHJlYWQgaXMgYWN0 aXZlbHkgd2FpdGluZyBmb3IgaXQgdW5kZXIgdGhlIHdhaXQgY29uZGl0aW9uLgorKyAgICAgKi8K KysKKysgICAgUUF0b21pY0ludGVnZXI8Ym9vbD4gbV9yZWFkaW5nOworKyAgICBib29sIG1fcXVp dHRpbmc7CisrICAgIFFNdXRleCBtX211dGV4OworKyAgICBRV2FpdENvbmRpdGlvbiBtX2NvbmQ7 CisrfTsKKysKKyBRX0xPR0dJTkdfQ0FURUdPUlkobGNRcGFXYXlsYW5kLCAicXQucXBhLndheWxh bmQiKTsgLy8gZm9yIGdlbmVyYWwgKHVuY2F0ZWdvcml6ZWQpIFdheWxhbmQgcGxhdGZvcm0gbG9n Z2luZworIAorIHN0cnVjdCB3bF9zdXJmYWNlICpRV2F5bGFuZERpc3BsYXk6OmNyZWF0ZVN1cmZh Y2Uodm9pZCAqaGFuZGxlKQorQEAgLTE1OCwxNyArMzUxLDE2IEBAIFFXYXlsYW5kRGlzcGxheTo6 UVdheWxhbmREaXNwbGF5KFFXYXlsYW5kSW50ZWdyYXRpb24gKndheWxhbmRJbnRlZ3JhdGlvbikK KyAgICAgaWYgKCFtWGtiQ29udGV4dCkKKyAgICAgICAgIHFDV2FybmluZyhsY1FwYVdheWxhbmQs ICJmYWlsZWQgdG8gY3JlYXRlIHhrYiBjb250ZXh0Iik7CisgI2VuZGlmCistCistICAgIGZvcmNl Um91bmRUcmlwKCk7CistCistICAgIGlmICghbVdhaXRpbmdTY3JlZW5zLmlzRW1wdHkoKSkgewor LSAgICAgICAgLy8gR2l2ZSB3bF9vdXRwdXQuZG9uZSBhbmQgenhkZ19vdXRwdXRfdjEuZG9uZSBl dmVudHMgYSBjaGFuY2UgdG8gYXJyaXZlCistICAgICAgICBmb3JjZVJvdW5kVHJpcCgpOworLSAg ICB9CisgfQorIAorIFFXYXlsYW5kRGlzcGxheTo6flFXYXlsYW5kRGlzcGxheSh2b2lkKQorIHsK KysgICAgaWYgKG1fZXZlbnRUaHJlYWQpCisrICAgICAgICBtX2V2ZW50VGhyZWFkLT5zdG9wKCk7 CisrCisrICAgIGlmIChtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZCkKKysgICAgICAgIG1fZnJhbWVF dmVudFF1ZXVlVGhyZWFkLT5zdG9wKCk7CisrCisgICAgIGlmIChtU3luY0NhbGxiYWNrKQorICAg ICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShtU3luY0NhbGxiYWNrKTsKKyAKK0BAIC0xODcsNiAr Mzc5LDIxIEBAIFFXYXlsYW5kRGlzcGxheTo6flFXYXlsYW5kRGlzcGxheSh2b2lkKQorICNlbmRp ZgorICAgICBpZiAobURpc3BsYXkpCisgICAgICAgICB3bF9kaXNwbGF5X2Rpc2Nvbm5lY3QobURp c3BsYXkpOworKworKyAgICBpZiAobV9mcmFtZUV2ZW50UXVldWUpCisrICAgICAgICB3bF9ldmVu dF9xdWV1ZV9kZXN0cm95KG1fZnJhbWVFdmVudFF1ZXVlKTsKKyt9CisrCisrLy8gU3RlcHMgd2hp Y2ggaXMgY2FsbGVkIGp1c3QgYWZ0ZXIgY29uc3RydWN0b3IuIFRoaXMgc2VwYXJhdGVzIHJlZ2lz dHJ5X2dsb2JhbCgpIG91dCBvZiB0aGUgY29uc3RydWN0b3IKKysvLyBzbyB0aGF0IGZhY3Rvcnkg ZnVuY3Rpb25zIGluIGludGVncmF0aW9uIGNhbiBiZSBvdmVycmlkZGVuLgorK3ZvaWQgUVdheWxh bmREaXNwbGF5Ojppbml0aWFsaXplKCkKKyt7CisrICAgIGZvcmNlUm91bmRUcmlwKCk7CisrCisr ICAgIGlmICghbVdhaXRpbmdTY3JlZW5zLmlzRW1wdHkoKSkgeworKyAgICAgICAgLy8gR2l2ZSB3 bF9vdXRwdXQuZG9uZSBhbmQgenhkZ19vdXRwdXRfdjEuZG9uZSBldmVudHMgYSBjaGFuY2UgdG8g YXJyaXZlCisrICAgICAgICBmb3JjZVJvdW5kVHJpcCgpOworKyAgICB9CisgfQorIAorIHZvaWQg UVdheWxhbmREaXNwbGF5OjplbnN1cmVTY3JlZW4oKQorQEAgLTIwMyw5OCArNDEwLDM3IEBAIHZv aWQgUVdheWxhbmREaXNwbGF5OjplbnN1cmVTY3JlZW4oKQorIAorIHZvaWQgUVdheWxhbmREaXNw bGF5OjpjaGVja0Vycm9yKCkgY29uc3QKKyB7CistICAgIGludCBlY29kZSA9IHdsX2Rpc3BsYXlf Z2V0X2Vycm9yKG1EaXNwbGF5KTsKKy0gICAgaWYgKChlY29kZSA9PSBFUElQRSB8fCBlY29kZSA9 PSBFQ09OTlJFU0VUKSkgeworLSAgICAgICAgLy8gc3BlY2lhbCBjYXNlIHRoaXMgdG8gcHJvdmlk ZSBhIG5pY2VyIGVycm9yCistICAgICAgICBxV2FybmluZygiVGhlIFdheWxhbmQgY29ubmVjdGlv biBicm9rZS4gRGlkIHRoZSBXYXlsYW5kIGNvbXBvc2l0b3IgZGllPyIpOworLSAgICB9IGVsc2Ug eworLSAgICAgICAgcVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gZXhwZXJpZW5jZWQg YSBmYXRhbCBlcnJvcjogJXMiLCBzdHJlcnJvcihlY29kZSkpOworLSAgICB9CistICAgIF9leGl0 KDEpOworKyAgICBjaGVja1dheWxhbmRFcnJvcihtRGlzcGxheSk7CisgfQorIAorKy8vIENhbGxl ZCBpbiBtYWluIHRocmVhZCwgZWl0aGVyIGZyb20gcXVldWVkIHNpZ25hbCBvciBkaXJlY3RseS4K KyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6Zmx1c2hSZXF1ZXN0cygpCisgeworLSAgICBpZiAod2xf ZGlzcGxheV9wcmVwYXJlX3JlYWQobURpc3BsYXkpID09IDApIHsKKy0gICAgICAgIHdsX2Rpc3Bs YXlfcmVhZF9ldmVudHMobURpc3BsYXkpOworLSAgICB9CistCistICAgIGlmICh3bF9kaXNwbGF5 X2Rpc3BhdGNoX3BlbmRpbmcobURpc3BsYXkpIDwgMCkKKy0gICAgICAgIGNoZWNrRXJyb3IoKTsK Ky0KKy0gICAgeworLSAgICAgICAgUVJlYWRMb2NrZXIgbG9ja2VyKCZtX2ZyYW1lUXVldWVMb2Nr KTsKKy0gICAgICAgIGZvciAoY29uc3QgRnJhbWVRdWV1ZSAmcSA6IG1FeHRlcm5hbFF1ZXVlcykg eworLSAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIocS5tdXRleCk7CistICAgICAgICAg ICAgd2hpbGUgKHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkX3F1ZXVlKG1EaXNwbGF5LCBxLnF1ZXVl KSAhPSAwKQorLSAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRp bmcobURpc3BsYXksIHEucXVldWUpOworLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfcmVhZF9ldmVu dHMobURpc3BsYXkpOworLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVu ZGluZyhtRGlzcGxheSwgcS5xdWV1ZSk7CistICAgICAgICB9CistICAgIH0KKy0KKy0gICAgd2xf ZGlzcGxheV9mbHVzaChtRGlzcGxheSk7CistfQorLQorLXZvaWQgUVdheWxhbmREaXNwbGF5Ojpi bG9ja2luZ1JlYWRFdmVudHMoKQorLXsKKy0gICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2gobURp c3BsYXkpIDwgMCkKKy0gICAgICAgIGNoZWNrRXJyb3IoKTsKKy19CistCistdm9pZCBRV2F5bGFu ZERpc3BsYXk6OmRlc3Ryb3lGcmFtZVF1ZXVlKGNvbnN0IFFXYXlsYW5kRGlzcGxheTo6RnJhbWVR dWV1ZSAmcSkKKy17CistICAgIFFXcml0ZUxvY2tlciBsb2NrZXIoJm1fZnJhbWVRdWV1ZUxvY2sp OworLSAgICBhdXRvIGl0ID0gc3RkOjpmaW5kX2lmKG1FeHRlcm5hbFF1ZXVlcy5iZWdpbigpLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1FeHRlcm5hbFF1ZXVlcy5lbmQoKSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICBbJnFdIChjb25zdCBRV2F5bGFuZERpc3BsYXk6OkZyYW1l UXVldWUgJm90aGVyKXsgcmV0dXJuIG90aGVyLnF1ZXVlID09IHEucXVldWU7IH0pOworLSAgICBR X0FTU0VSVChpdCAhPSBtRXh0ZXJuYWxRdWV1ZXMuZW5kKCkpOworLSAgICBtRXh0ZXJuYWxRdWV1 ZXMuZXJhc2UoaXQpOworLSAgICBpZiAocS5xdWV1ZSAhPSBudWxscHRyKQorLSAgICAgICAgd2xf ZXZlbnRfcXVldWVfZGVzdHJveShxLnF1ZXVlKTsKKy0gICAgZGVsZXRlIHEubXV0ZXg7CisrICAg IG1fZXZlbnRUaHJlYWQtPnJlYWRBbmREaXNwYXRjaEV2ZW50cygpOworIH0KKyAKKy1RV2F5bGFu ZERpc3BsYXk6OkZyYW1lUXVldWUgUVdheWxhbmREaXNwbGF5OjpjcmVhdGVGcmFtZVF1ZXVlKCkK KysvLyBXZSBoYXZlIHRvIHdhaXQgdW50aWwgd2UgaGF2ZSBhbiBldmVudERpc3BhdGNoZXIgYmVm b3JlIGNyZWF0aW5nIHRoZSBldmVudFRocmVhZCwKKysvLyBvdGhlcndpc2UgZm9yY2VSb3VuZFRy aXAoKSBtYXkgYmxvY2sgaW5zaWRlIF9ldmVudHNfcmVhZCgpIGJlY2F1c2UgZXZlbnRUaHJlYWQg aXMKKysvLyBwb2xsaW5nLgorK3ZvaWQgUVdheWxhbmREaXNwbGF5Ojppbml0RXZlbnRUaHJlYWQo KQorIHsKKy0gICAgUVdyaXRlTG9ja2VyIGxvY2tlcigmbV9mcmFtZVF1ZXVlTG9jayk7CistICAg IEZyYW1lUXVldWUgcXtjcmVhdGVFdmVudFF1ZXVlKCl9OworLSAgICBtRXh0ZXJuYWxRdWV1ZXMu YXBwZW5kKHEpOworLSAgICByZXR1cm4gcTsKKy19CisrICAgIG1fZXZlbnRUaHJlYWQucmVzZXQo CisrICAgICAgICAgICAgbmV3IEV2ZW50VGhyZWFkKG1EaXNwbGF5LCAvKiBkZWZhdWx0IHF1ZXVl ICovIG51bGxwdHIsIEV2ZW50VGhyZWFkOjpFbWl0VG9EaXNwYXRjaCkpOworKyAgICBjb25uZWN0 KG1fZXZlbnRUaHJlYWQuZ2V0KCksICZFdmVudFRocmVhZDo6bmVlZFJlYWRBbmREaXNwYXRjaCwg dGhpcywKKysgICAgICAgICAgICAmUVdheWxhbmREaXNwbGF5OjpmbHVzaFJlcXVlc3RzLCBRdDo6 UXVldWVkQ29ubmVjdGlvbik7CisrICAgIG1fZXZlbnRUaHJlYWQtPnN0YXJ0KCk7CisgCistd2xf ZXZlbnRfcXVldWUgKlFXYXlsYW5kRGlzcGxheTo6Y3JlYXRlRXZlbnRRdWV1ZSgpCisteworLSAg ICByZXR1cm4gd2xfZGlzcGxheV9jcmVhdGVfcXVldWUobURpc3BsYXkpOworKyAgICAvLyB3bF9k aXNwbGF5X2Rpc2Nvbm5lY3QoKSBmcmVlIHRoaXMuCisrICAgIG1fZnJhbWVFdmVudFF1ZXVlID0g d2xfZGlzcGxheV9jcmVhdGVfcXVldWUobURpc3BsYXkpOworKyAgICBtX2ZyYW1lRXZlbnRRdWV1 ZVRocmVhZC5yZXNldCgKKysgICAgICAgICAgICBuZXcgRXZlbnRUaHJlYWQobURpc3BsYXksIG1f ZnJhbWVFdmVudFF1ZXVlLCBFdmVudFRocmVhZDo6U2VsZkRpc3BhdGNoKSk7CisrICAgIG1fZnJh bWVFdmVudFF1ZXVlVGhyZWFkLT5zdGFydCgpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRGlzcGxh eTo6ZGlzcGF0Y2hRdWV1ZVdoaWxlKHdsX2V2ZW50X3F1ZXVlICpxdWV1ZSwgc3RkOjpmdW5jdGlv bjxib29sICgpPiBjb25kaXRpb24sIGludCB0aW1lb3V0KQorK3ZvaWQgUVdheWxhbmREaXNwbGF5 OjpibG9ja2luZ1JlYWRFdmVudHMoKQorIHsKKy0gICAgaWYgKCFjb25kaXRpb24oKSkKKy0gICAg ICAgIHJldHVybjsKKy0KKy0gICAgUUVsYXBzZWRUaW1lciB0aW1lcjsKKy0gICAgdGltZXIuc3Rh cnQoKTsKKy0gICAgc3RydWN0IHBvbGxmZCBwRmQgPSBxdF9tYWtlX3BvbGxmZCh3bF9kaXNwbGF5 X2dldF9mZChtRGlzcGxheSksIFBPTExJTik7CistICAgIHdoaWxlICh0aW1lb3V0ID09IC0xIHx8 IHRpbWVyLmVsYXBzZWQoKSA8IHRpbWVvdXQpIHsKKy0gICAgICAgIHdoaWxlICh3bF9kaXNwbGF5 X3ByZXBhcmVfcmVhZF9xdWV1ZShtRGlzcGxheSwgcXVldWUpICE9IDApCistICAgICAgICAgICAg d2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxdWV1ZSk7CistCist ICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoKG1EaXNwbGF5KTsKKy0KKy0gICAgICAgIGNvbnN0IGlu dCByZW1haW5pbmcgPSBxTWF4KHRpbWVvdXQgLSB0aW1lci5lbGFwc2VkKCksIDBsbCk7CistICAg ICAgICBjb25zdCBpbnQgcG9sbFRpbWVvdXQgPSB0aW1lb3V0ID09IC0xID8gLTEgOiByZW1haW5p bmc7CistICAgICAgICBpZiAocXRfcG9sbF9tc2VjcygmcEZkLCAxLCBwb2xsVGltZW91dCkgPiAw KQorLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMobURpc3BsYXkpOworLSAgICAg ICAgZWxzZQorLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfY2FuY2VsX3JlYWQobURpc3BsYXkpOwor LQorLSAgICAgICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGluZyhtRGlzcGxh eSwgcXVldWUpIDwgMCkKKy0gICAgICAgICAgICBjaGVja0Vycm9yKCk7CistCistICAgICAgICBp ZiAoIWNvbmRpdGlvbigpKQorLSAgICAgICAgICAgIGJyZWFrOworLSAgICB9CisrICAgIGlmICh3 bF9kaXNwbGF5X2Rpc3BhdGNoKG1EaXNwbGF5KSA8IDApCisrICAgICAgICBjaGVja1dheWxhbmRF cnJvcihtRGlzcGxheSk7CisgfQorIAorIFFXYXlsYW5kU2NyZWVuICpRV2F5bGFuZERpc3BsYXk6 OnNjcmVlbkZvck91dHB1dChzdHJ1Y3Qgd2xfb3V0cHV0ICpvdXRwdXQpIGNvbnN0CitAQCAtMzQ1 LDcgKzQ5MSw3IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZWdpc3RyeV9nbG9iYWwodWludDMy X3QgaWQsIGNvbnN0IFFTdHJpbmcgJmludGVyZmFjZSwgdWluCisgICAgIGlmIChpbnRlcmZhY2Ug PT0gUVN0cmluZ0xpdGVyYWwoIndsX291dHB1dCIpKSB7CisgICAgICAgICBtV2FpdGluZ1NjcmVl bnMgPDwgbmV3IFFXYXlsYW5kU2NyZWVuKHRoaXMsIHZlcnNpb24sIGlkKTsKKyAgICAgfSBlbHNl IGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX2NvbXBvc2l0b3IiKSkgeworLSAg ICAgICAgbUNvbXBvc2l0b3JWZXJzaW9uID0gcU1pbigoaW50KXZlcnNpb24sIDMpOworKyAgICAg ICAgbUNvbXBvc2l0b3JWZXJzaW9uID0gcU1pbigoaW50KXZlcnNpb24sIDQpOworICAgICAgICAg bUNvbXBvc2l0b3IuaW5pdChyZWdpc3RyeSwgaWQsIG1Db21wb3NpdG9yVmVyc2lvbik7CisgICAg IH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9zaG0iKSkgeworICAg ICAgICAgbVNobS5yZXNldChuZXcgUVdheWxhbmRTaG0odGhpcywgdmVyc2lvbiwgaWQpKTsKK0BA IC0zNTQsNyArNTAwLDcgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbCh1 aW50MzJfdCBpZCwgY29uc3QgUVN0cmluZyAmaW50ZXJmYWNlLCB1aW4KKyAgICAgICAgIG1JbnB1 dERldmljZXMuYXBwZW5kKGlucHV0RGV2aWNlKTsKKyAjaWYgUVRfQ09ORklHKHdheWxhbmRfZGF0 YWRldmljZSkKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInds X2RhdGFfZGV2aWNlX21hbmFnZXIiKSkgeworLSAgICAgICAgbURuZFNlbGVjdGlvbkhhbmRsZXIu cmVzZXQobmV3IFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIodGhpcywgaWQpKTsKKysgICAgICAg IG1EbmRTZWxlY3Rpb25IYW5kbGVyLnJlc2V0KG5ldyBRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2Vy KHRoaXMsIHZlcnNpb24sIGlkKSk7CisgI2VuZGlmCisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNl ID09IFFTdHJpbmdMaXRlcmFsKCJxdF9zdXJmYWNlX2V4dGVuc2lvbiIpKSB7CisgICAgICAgICBt V2luZG93RXh0ZW5zaW9uLnJlc2V0KG5ldyBRdFdheWxhbmQ6OnF0X3N1cmZhY2VfZXh0ZW5zaW9u KHJlZ2lzdHJ5LCBpZCwgMSkpOworQEAgLTM2OSw2ICs1MTUsOCBAQCB2b2lkIFFXYXlsYW5kRGlz cGxheTo6cmVnaXN0cnlfZ2xvYmFsKHVpbnQzMl90IGlkLCBjb25zdCBRU3RyaW5nICZpbnRlcmZh Y2UsIHVpbgorICNpZiBRVF9DT05GSUcod2F5bGFuZF9jbGllbnRfcHJpbWFyeV9zZWxlY3Rpb24p CisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ6d3BfcHJpbWFy eV9zZWxlY3Rpb25fZGV2aWNlX21hbmFnZXJfdjEiKSkgeworICAgICAgICAgbVByaW1hcnlTZWxl Y3Rpb25NYW5hZ2VyLnJlc2V0KG5ldyBRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5h Z2VyVjEodGhpcywgaWQsIDEpKTsKKysgICAgICAgIGZvciAoUVdheWxhbmRJbnB1dERldmljZSAq aW5wdXREZXZpY2UgOiBxQXNDb25zdChtSW5wdXREZXZpY2VzKSkKKysgICAgICAgICAgICBpbnB1 dERldmljZS0+c2V0UHJpbWFyeVNlbGVjdGlvbkRldmljZShtUHJpbWFyeVNlbGVjdGlvbk1hbmFn ZXItPmNyZWF0ZURldmljZShpbnB1dERldmljZSkpOworICNlbmRpZgorICAgICB9IGVsc2UgaWYg KGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgiendwX3RleHRfaW5wdXRfbWFuYWdlcl92MiIp ICYmICFtQ2xpZW50U2lkZUlucHV0Q29udGV4dFJlcXVlc3RlZCkgeworICAgICAgICAgbVRleHRJ bnB1dE1hbmFnZXIucmVzZXQobmV3IFF0V2F5bGFuZDo6endwX3RleHRfaW5wdXRfbWFuYWdlcl92 MihyZWdpc3RyeSwgaWQsIDEpKTsKK0BAIC00MjcsNiArNTc1LDEzIEBAIHZvaWQgUVdheWxhbmRE aXNwbGF5OjpyZWdpc3RyeV9nbG9iYWxfcmVtb3ZlKHVpbnQzMl90IGlkKQorICAgICAgICAgICAg ICAgICAgICAgaW5wdXREZXZpY2UtPnNldFRleHRJbnB1dChudWxscHRyKTsKKyAgICAgICAgICAg ICAgICAgbVdheWxhbmRJbnRlZ3JhdGlvbi0+cmVjb25maWd1cmVJbnB1dENvbnRleHQoKTsKKyAg ICAgICAgICAgICB9CisrI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVj dGlvbikKKysgICAgICAgICAgICBpZiAoZ2xvYmFsLmludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJh bCgiendwX3ByaW1hcnlfc2VsZWN0aW9uX2RldmljZV9tYW5hZ2VyX3YxIikpIHsKKysgICAgICAg ICAgICAgICAgbVByaW1hcnlTZWxlY3Rpb25NYW5hZ2VyLnJlc2V0KCk7CisrICAgICAgICAgICAg ICAgIGZvciAoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpY2UgOiBxQXNDb25zdChtSW5w dXREZXZpY2VzKSkKKysgICAgICAgICAgICAgICAgICAgIGlucHV0RGV2aWNlLT5zZXRQcmltYXJ5 U2VsZWN0aW9uRGV2aWNlKG51bGxwdHIpOworKyAgICAgICAgICAgIH0KKysjZW5kaWYKKyAgICAg ICAgICAgICBtR2xvYmFscy5yZW1vdmVBdChpKTsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgIH0KK0BAIC00NTIsOSArNjA3LDEwIEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjphZGRSZWdp c3RyeUxpc3RlbmVyKFJlZ2lzdHJ5TGlzdGVuZXIgbGlzdGVuZXIsIHZvaWQgKmRhdGEpCisgCisg dm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlbW92ZUxpc3RlbmVyKFJlZ2lzdHJ5TGlzdGVuZXIgbGlz dGVuZXIsIHZvaWQgKmRhdGEpCisgeworLSAgICBzdGQ6OnJlbW92ZV9pZihtUmVnaXN0cnlMaXN0 ZW5lcnMuYmVnaW4oKSwgbVJlZ2lzdHJ5TGlzdGVuZXJzLmVuZCgpLCBbPV0oTGlzdGVuZXIgbCl7 CisrICAgIGF1dG8gaXRlciA9IHN0ZDo6cmVtb3ZlX2lmKG1SZWdpc3RyeUxpc3RlbmVycy5iZWdp bigpLCBtUmVnaXN0cnlMaXN0ZW5lcnMuZW5kKCksIFs9XShMaXN0ZW5lciBsKXsKKyAgICAgICAg IHJldHVybiAobC5saXN0ZW5lciA9PSBsaXN0ZW5lciAmJiBsLmRhdGEgPT0gZGF0YSk7CisgICAg IH0pOworKyAgICBtUmVnaXN0cnlMaXN0ZW5lcnMuZXJhc2UoaXRlciwgbVJlZ2lzdHJ5TGlzdGVu ZXJzLmVuZCgpKTsKKyB9CisgCisgdWludDMyX3QgUVdheWxhbmREaXNwbGF5OjpjdXJyZW50VGlt ZU1pbGxpc2VjKCkKK0BAIC00NjcsNTAgKzYyMyw5IEBAIHVpbnQzMl90IFFXYXlsYW5kRGlzcGxh eTo6Y3VycmVudFRpbWVNaWxsaXNlYygpCisgICAgIHJldHVybiAwOworIH0KKyAKKy1zdGF0aWMg dm9pZAorLXN5bmNfY2FsbGJhY2sodm9pZCAqZGF0YSwgc3RydWN0IHdsX2NhbGxiYWNrICpjYWxs YmFjaywgdWludDMyX3Qgc2VyaWFsKQorLXsKKy0gICAgUV9VTlVTRUQoc2VyaWFsKQorLSAgICBi b29sICpkb25lID0gc3RhdGljX2Nhc3Q8Ym9vbCAqPihkYXRhKTsKKy0KKy0gICAgKmRvbmUgPSB0 cnVlOworLQorLSAgICAvLyBJZiB0aGUgd2xfY2FsbGJhY2sgZG9uZSBldmVudCBpcyByZWNlaXZl ZCBhZnRlciB0aGUgY29uZGl0aW9uIGNoZWNrIGluIHRoZSB3aGlsZSBsb29wIGluCistICAgIC8v IGZvcmNlUm91bmRUcmlwKCksIGJ1dCBiZWZvcmUgdGhlIGNhbGwgdG8gcHJvY2Vzc0V2ZW50cywg dGhlIGNhbGwgdG8gcHJvY2Vzc0V2ZW50cyBtYXkgYmxvY2sKKy0gICAgLy8gZm9yZXZlciBpZiBu byBtb3JlIGV2ZW50cyBhcmUgcG9zdGVkIChldmVudGhvdWdoIHRoZSBjYWxsYmFjayBpcyBoYW5k bGVkIGluIHJlc3BvbnNlIHRvIHRoZQorLSAgICAvLyBhYm91dFRvQmxvY2sgc2lnbmFsKS4gSGVu Y2UsIHdlIHdha2UgdXAgdGhlIGV2ZW50IGRpc3BhdGNoZXIgc28gZm9yY2VSb3VuZFRyaXAgbWF5 IHJldHVybi4KKy0gICAgLy8gKFFUQlVHLTY0Njk2KQorLSAgICBpZiAoYXV0byAqZGlzcGF0Y2hl ciA9IFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKS0+ZXZlbnREaXNwYXRjaGVyKCkpCistICAgICAg ICBkaXNwYXRjaGVyLT53YWtlVXAoKTsKKy0KKy0gICAgd2xfY2FsbGJhY2tfZGVzdHJveShjYWxs YmFjayk7CistfQorLQorLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIg c3luY19saXN0ZW5lciA9IHsKKy0gICAgc3luY19jYWxsYmFjaworLX07CistCisgdm9pZCBRV2F5 bGFuZERpc3BsYXk6OmZvcmNlUm91bmRUcmlwKCkKKyB7CistICAgIC8vIHdsX2Rpc3BsYXlfcm91 bmR0cmlwKCkgd29ya3Mgb24gdGhlIG1haW4gcXVldWUgb25seSwKKy0gICAgLy8gYnV0IHdlIHVz ZSBhIHNlcGFyYXRlIG9uZSwgc28gYmFzaWNhbGx5IHJlaW1wbGVtZW50IGl0IGhlcmUKKy0gICAg aW50IHJldCA9IDA7CistICAgIGJvb2wgZG9uZSA9IGZhbHNlOworLSAgICB3bF9jYWxsYmFjayAq Y2FsbGJhY2sgPSB3bF9kaXNwbGF5X3N5bmMobURpc3BsYXkpOworLSAgICB3bF9jYWxsYmFja19h ZGRfbGlzdGVuZXIoY2FsbGJhY2ssICZzeW5jX2xpc3RlbmVyLCAmZG9uZSk7CistICAgIGZsdXNo UmVxdWVzdHMoKTsKKy0gICAgaWYgKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKS0+ZXZlbnREaXNw YXRjaGVyKCkpIHsKKy0gICAgICAgIHdoaWxlICghZG9uZSAmJiByZXQgPj0gMCkgeworLSAgICAg ICAgICAgIFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKS0+ZXZlbnREaXNwYXRjaGVyKCktPnByb2Nl c3NFdmVudHMoUUV2ZW50TG9vcDo6V2FpdEZvck1vcmVFdmVudHMpOworLSAgICAgICAgICAgIHJl dCA9IHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcGVuZGluZyhtRGlzcGxheSk7CistICAgICAgICB9Cist ICAgIH0gZWxzZSB7CistICAgICAgICB3aGlsZSAoIWRvbmUgJiYgcmV0ID49IDApCistICAgICAg ICAgICAgcmV0ID0gd2xfZGlzcGxheV9kaXNwYXRjaChtRGlzcGxheSk7CistICAgIH0KKy0KKy0g ICAgaWYgKHJldCA9PSAtMSAmJiAhZG9uZSkKKy0gICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3ko Y2FsbGJhY2spOworKyAgICAgd2xfZGlzcGxheV9yb3VuZHRyaXAobURpc3BsYXkpOworIH0KKyAK KyBib29sIFFXYXlsYW5kRGlzcGxheTo6c3VwcG9ydHNXaW5kb3dEZWNvcmF0aW9uKCkgY29uc3QK K0BAIC01NzQsMTQgKzY4OSwxMCBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6aGFuZGxlS2V5Ym9h cmRGb2N1c0NoYW5nZWQoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpYworICAgICBpZiAo bUxhc3RLZXlib2FyZEZvY3VzID09IGtleWJvYXJkRm9jdXMpCisgICAgICAgICByZXR1cm47Cisg CistICAgIGlmIChtV2F5bGFuZEludGVncmF0aW9uLT5tU2hlbGxJbnRlZ3JhdGlvbikgeworLSAg ICAgICAgbVdheWxhbmRJbnRlZ3JhdGlvbi0+bVNoZWxsSW50ZWdyYXRpb24tPmhhbmRsZUtleWJv YXJkRm9jdXNDaGFuZ2VkKGtleWJvYXJkRm9jdXMsIG1MYXN0S2V5Ym9hcmRGb2N1cyk7CistICAg IH0gZWxzZSB7CistICAgICAgICBpZiAoa2V5Ym9hcmRGb2N1cykKKy0gICAgICAgICAgICBoYW5k bGVXaW5kb3dBY3RpdmF0ZWQoa2V5Ym9hcmRGb2N1cyk7CistICAgICAgICBpZiAobUxhc3RLZXli b2FyZEZvY3VzKQorLSAgICAgICAgICAgIGhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG1MYXN0S2V5 Ym9hcmRGb2N1cyk7CistICAgIH0KKysgICAgaWYgKGtleWJvYXJkRm9jdXMpCisrICAgICAgICBo YW5kbGVXaW5kb3dBY3RpdmF0ZWQoa2V5Ym9hcmRGb2N1cyk7CisrICAgIGlmIChtTGFzdEtleWJv YXJkRm9jdXMpCisrICAgICAgICBoYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChtTGFzdEtleWJvYXJk Rm9jdXMpOworIAorICAgICBtTGFzdEtleWJvYXJkRm9jdXMgPSBrZXlib2FyZEZvY3VzOworIH0K K0BAIC02MDAsNiArNzExLDE5IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpoYW5kbGVXYXlsYW5k U3luYygpCisgICAgIFFXaW5kb3cgKmFjdGl2ZVdpbmRvdyA9IG1BY3RpdmVXaW5kb3dzLmVtcHR5 KCkgPyBudWxscHRyIDogbUFjdGl2ZVdpbmRvd3MubGFzdCgpLT53aW5kb3coKTsKKyAgICAgaWYg KGFjdGl2ZVdpbmRvdyAhPSBRR3VpQXBwbGljYXRpb246OmZvY3VzV2luZG93KCkpCisgICAgICAg ICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dBY3RpdmF0ZWQoYWN0aXZlV2lu ZG93KTsKKysKKysgICAgaWYgKCFhY3RpdmVXaW5kb3cpIHsKKysgICAgICAgIGlmIChsYXN0SW5w dXREZXZpY2UoKSkgeworKyNpZiBRVF9DT05GSUcoY2xpcGJvYXJkKQorKyAgICAgICAgICAgIGlm IChhdXRvICpkYXRhRGV2aWNlID0gbGFzdElucHV0RGV2aWNlKCktPmRhdGFEZXZpY2UoKSkKKysg ICAgICAgICAgICAgICAgZGF0YURldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7Cisr I2VuZGlmCisrI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVjdGlvbikK KysgICAgICAgICAgICBpZiAoYXV0byAqZGV2aWNlID0gbGFzdElucHV0RGV2aWNlKCktPnByaW1h cnlTZWxlY3Rpb25EZXZpY2UoKSkKKysgICAgICAgICAgICAgICAgZGV2aWNlLT5pbnZhbGlkYXRl U2VsZWN0aW9uT2ZmZXIoKTsKKysjZW5kaWYKKysgICAgICAgIH0KKysgICAgfQorIH0KKyAKKyBj b25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBRV2F5bGFuZERpc3BsYXk6OnN5bmNDYWxsYmFja0xp c3RlbmVyID0geworQEAgLTYyNiw2ICs3NTAsMTMgQEAgUVdheWxhbmRJbnB1dERldmljZSAqUVdh eWxhbmREaXNwbGF5OjpkZWZhdWx0SW5wdXREZXZpY2UoKSBjb25zdAorICAgICByZXR1cm4gbUlu cHV0RGV2aWNlcy5pc0VtcHR5KCkgPyAwIDogbUlucHV0RGV2aWNlcy5maXJzdCgpOworIH0KKyAK Kytib29sIFFXYXlsYW5kRGlzcGxheTo6aXNLZXlib2FyZEF2YWlsYWJsZSgpIGNvbnN0Cisrewor KyAgICByZXR1cm4gc3RkOjphbnlfb2YoCisrICAgICAgICAgICAgbUlucHV0RGV2aWNlcy5jb25z dEJlZ2luKCksIG1JbnB1dERldmljZXMuY29uc3RFbmQoKSwKKysgICAgICAgICAgICBbdGhpc10o Y29uc3QgUVdheWxhbmRJbnB1dERldmljZSAqZGV2aWNlKSB7IHJldHVybiBkZXZpY2UtPmtleWJv YXJkKCkgIT0gbnVsbHB0cjsgfSk7CisrfQorKworICNpZiBRVF9DT05GSUcoY3Vyc29yKQorIAor IFFXYXlsYW5kQ3Vyc29yICpRV2F5bGFuZERpc3BsYXk6OndheWxhbmRDdXJzb3IoKQorQEAgLTY1 Miw0ICs3ODMsNiBAQCBRV2F5bGFuZEN1cnNvclRoZW1lICpRV2F5bGFuZERpc3BsYXk6OmxvYWRD dXJzb3JUaGVtZShjb25zdCBRU3RyaW5nICZuYW1lLCBpbnQgcAorIAorIH0gLy8gbmFtZXNwYWNl IFF0V2F5bGFuZENsaWVudAorIAorKyNpbmNsdWRlICJxd2F5bGFuZGRpc3BsYXkubW9jIgorKwor IFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRpc3BsYXlfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5X3Au aAoraW5kZXggM2IwOTJiYzguLjQyYmM2NjFkIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkaXNwbGF5X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkaXNwbGF5X3AuaAorQEAgLTEwOSw2ICsxMDksNyBAQCBjbGFzcyBRV2F5bGFuZFN1cmZh Y2U7CisgY2xhc3MgUVdheWxhbmRTaGVsbEludGVncmF0aW9uOworIGNsYXNzIFFXYXlsYW5kQ3Vy c29yOworIGNsYXNzIFFXYXlsYW5kQ3Vyc29yVGhlbWU7CisrY2xhc3MgRXZlbnRUaHJlYWQ7Cisg CisgdHlwZWRlZiB2b2lkICgqUmVnaXN0cnlMaXN0ZW5lcikodm9pZCAqZGF0YSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2xfcmVnaXN0cnkgKnJlZ2lzdHJ5LAor QEAgLTEyMCwxNSArMTIxLDExIEBAIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXls YW5kRGlzcGxheSA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgUXRXYXlsYW5kCisgICAgIFFfT0JK RUNUCisgCisgcHVibGljOgorLSAgICBzdHJ1Y3QgRnJhbWVRdWV1ZSB7CistICAgICAgICBGcmFt ZVF1ZXVlKHdsX2V2ZW50X3F1ZXVlICpxID0gbnVsbHB0cikgOiBxdWV1ZShxKSwgbXV0ZXgobmV3 IFFNdXRleCkge30KKy0gICAgICAgIHdsX2V2ZW50X3F1ZXVlICpxdWV1ZTsKKy0gICAgICAgIFFN dXRleCAqbXV0ZXg7CistICAgIH07CistCisgICAgIFFXYXlsYW5kRGlzcGxheShRV2F5bGFuZElu dGVncmF0aW9uICp3YXlsYW5kSW50ZWdyYXRpb24pOworICAgICB+UVdheWxhbmREaXNwbGF5KHZv aWQpIG92ZXJyaWRlOworIAorKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKysKKyAjaWYgUVRfQ09O RklHKHhrYmNvbW1vbikKKyAgICAgc3RydWN0IHhrYl9jb250ZXh0ICp4a2JDb250ZXh0KCkgY29u c3QgeyByZXR1cm4gbVhrYkNvbnRleHQuZ2V0KCk7IH0KKyAjZW5kaWYKK0BAIC0yMTAsMTEgKzIw NywxMSBAQCBwdWJsaWM6CisgICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdh eWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpY2UpOworICAgICB2b2lkIGhhbmRsZVdpbmRvd0Rl c3Ryb3llZChRV2F5bGFuZFdpbmRvdyAqd2luZG93KTsKKyAKKy0gICAgd2xfZXZlbnRfcXVldWUg KmNyZWF0ZUV2ZW50UXVldWUoKTsKKy0gICAgRnJhbWVRdWV1ZSBjcmVhdGVGcmFtZVF1ZXVlKCk7 CistICAgIHZvaWQgZGVzdHJveUZyYW1lUXVldWUoY29uc3QgRnJhbWVRdWV1ZSAmcSk7CistICAg IHZvaWQgZGlzcGF0Y2hRdWV1ZVdoaWxlKHdsX2V2ZW50X3F1ZXVlICpxdWV1ZSwgc3RkOjpmdW5j dGlvbjxib29sKCk+IGNvbmRpdGlvbiwgaW50IHRpbWVvdXQgPSAtMSk7CisrICAgIHdsX2V2ZW50 X3F1ZXVlICpmcmFtZUV2ZW50UXVldWUoKSB7IHJldHVybiBtX2ZyYW1lRXZlbnRRdWV1ZTsgfTsK KysKKysgICAgYm9vbCBpc0tleWJvYXJkQXZhaWxhYmxlKCkgY29uc3Q7CisgCisrICAgIHZvaWQg aW5pdEV2ZW50VGhyZWFkKCk7CisgcHVibGljIHNsb3RzOgorICAgICB2b2lkIGJsb2NraW5nUmVh ZEV2ZW50cygpOworICAgICB2b2lkIGZsdXNoUmVxdWVzdHMoKTsKK0BAIC0yMzcsNiArMjM0LDkg QEAgcHJpdmF0ZToKKyAgICAgfTsKKyAKKyAgICAgc3RydWN0IHdsX2Rpc3BsYXkgKm1EaXNwbGF5 ID0gbnVsbHB0cjsKKysgICAgUVNjb3BlZFBvaW50ZXI8RXZlbnRUaHJlYWQ+IG1fZXZlbnRUaHJl YWQ7CisrICAgIHdsX2V2ZW50X3F1ZXVlICptX2ZyYW1lRXZlbnRRdWV1ZSA9IG51bGxwdHI7Cisr ICAgIFFTY29wZWRQb2ludGVyPEV2ZW50VGhyZWFkPiBtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZDsK KyAgICAgUXRXYXlsYW5kOjp3bF9jb21wb3NpdG9yIG1Db21wb3NpdG9yOworICAgICBRU2NvcGVk UG9pbnRlcjxRV2F5bGFuZFNobT4gbVNobTsKKyAgICAgUUxpc3Q8UVdheWxhbmRTY3JlZW4gKj4g bVdhaXRpbmdTY3JlZW5zOworQEAgLTI3MywxMSArMjczLDkgQEAgcHJpdmF0ZToKKyAgICAgUVdh eWxhbmRJbnB1dERldmljZSAqbUxhc3RJbnB1dERldmljZSA9IG51bGxwdHI7CisgICAgIFFQb2lu dGVyPFFXYXlsYW5kV2luZG93PiBtTGFzdElucHV0V2luZG93OworICAgICBRUG9pbnRlcjxRV2F5 bGFuZFdpbmRvdz4gbUxhc3RLZXlib2FyZEZvY3VzOworLSAgICBRVmVjdG9yPFFXYXlsYW5kV2lu ZG93ICo+IG1BY3RpdmVXaW5kb3dzOworLSAgICBRVmVjdG9yPEZyYW1lUXVldWU+IG1FeHRlcm5h bFF1ZXVlczsKKysgICAgUUxpc3Q8UVdheWxhbmRXaW5kb3cgKj4gbUFjdGl2ZVdpbmRvd3M7Cisg ICAgIHN0cnVjdCB3bF9jYWxsYmFjayAqbVN5bmNDYWxsYmFjayA9IG51bGxwdHI7CisgICAgIHN0 YXRpYyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBzeW5jQ2FsbGJhY2tMaXN0ZW5lcjsKKy0g ICAgUVJlYWRXcml0ZUxvY2sgbV9mcmFtZVF1ZXVlTG9jazsKKyAKKyAgICAgYm9vbCBtQ2xpZW50 U2lkZUlucHV0Q29udGV4dFJlcXVlc3RlZCA9ICFRUGxhdGZvcm1JbnB1dENvbnRleHRGYWN0b3J5 OjpyZXF1ZXN0ZWQoKS5pc051bGwoKTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGRuZC5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZC5j cHAKK2luZGV4IDY1MzVhYTE2Li43YzUzZjVmYSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZG5kLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkbmQuY3BwCitAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFFXYXlsYW5kRHJhZzo6c3RhcnREcmFn KCkKKyB7CisgICAgIFFCYXNpY0RyYWc6OnN0YXJ0RHJhZygpOworICAgICBRV2F5bGFuZFdpbmRv dyAqaWNvbiA9IHN0YXRpY19jYXN0PFFXYXlsYW5kV2luZG93ICo+KHNoYXBlZFBpeG1hcFdpbmRv dygpLT5oYW5kbGUoKSk7CistICAgIGlmIChtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgp LT5kYXRhRGV2aWNlKCktPnN0YXJ0RHJhZyhkcmFnKCktPm1pbWVEYXRhKCksIGljb24pKSB7Cisr ICAgIGlmIChtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5kYXRhRGV2aWNlKCktPnN0 YXJ0RHJhZyhkcmFnKCktPm1pbWVEYXRhKCksIGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBp Y29uKSkgeworICAgICAgICAgaWNvbi0+YWRkQXR0YWNoT2Zmc2V0KC1kcmFnKCktPmhvdFNwb3Qo KSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICAvLyBDYW5jZWxsaW5nIGltbWVkaWF0ZWx5IGRv ZXMgbm90IHdvcmssIHNpbmNlIHRoZSBldmVudCBsb29wIGZvciBRRHJhZzo6ZXhlYyBpcyBzdGFy dGVkCitAQCAtODAsNiArODAsOSBAQCB2b2lkIFFXYXlsYW5kRHJhZzo6Y2FuY2VsKCkKKyAgICAg UUJhc2ljRHJhZzo6Y2FuY2VsKCk7CisgCisgICAgIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2 aWNlKCktPmRhdGFEZXZpY2UoKS0+Y2FuY2VsRHJhZygpOworKworKyAgICBpZiAoZHJhZygpKQor KyAgICAgICAgZHJhZygpLT5kZWxldGVMYXRlcigpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kRHJh Zzo6bW92ZShjb25zdCBRUG9pbnQgJmdsb2JhbFBvcywgUXQ6Ok1vdXNlQnV0dG9ucyBiLCBRdDo6 S2V5Ym9hcmRNb2RpZmllcnMgbW9kcykKK0BAIC0xMDMsMzMgKzEwNiw0MSBAQCB2b2lkIFFXYXls YW5kRHJhZzo6ZW5kRHJhZygpCisgICAgIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCkt PmhhbmRsZUVuZERyYWcoKTsKKyB9CisgCistdm9pZCBRV2F5bGFuZERyYWc6OnVwZGF0ZVRhcmdl dChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSkKKyt2b2lkIFFXYXlsYW5kRHJhZzo6c2V0UmVzcG9u c2UoYm9vbCBhY2NlcHRlZCkKKyB7CistICAgIHNldENhbkRyb3AoIW1pbWVUeXBlLmlzRW1wdHko KSk7CistCistICAgIGlmIChjYW5Ecm9wKCkpIHsKKy0gICAgICAgIHVwZGF0ZUN1cnNvcihkZWZh dWx0QWN0aW9uKGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJlbnRJ bnB1dERldmljZSgpLT5tb2RpZmllcnMoKSkpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgdXBk YXRlQ3Vyc29yKFF0OjpJZ25vcmVBY3Rpb24pOworLSAgICB9CisrICAgIC8vIFRoaXMgbWV0aG9k IGlzIHVzZWQgZm9yIG9sZCBEYXRhRGV2aWNlcyB3aGVyZSB0aGUgZHJhZyBhY3Rpb24gaXMgbm90 IGNvbW11bmljYXRlZAorKyAgICBRdDo6RHJvcEFjdGlvbiBhY3Rpb24gPSBkZWZhdWx0QWN0aW9u KGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmlj ZSgpLT5tb2RpZmllcnMoKSk7CisrICAgIHNldFJlc3BvbnNlKFFQbGF0Zm9ybURyb3BRdFJlc3Bv bnNlKGFjY2VwdGVkLCBhY3Rpb24pKTsKKyB9CisgCistdm9pZCBRV2F5bGFuZERyYWc6OnNldFJl c3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSkKKyt2b2lkIFFX YXlsYW5kRHJhZzo6c2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJl c3BvbnNlKQorIHsKKyAgICAgc2V0Q2FuRHJvcChyZXNwb25zZS5pc0FjY2VwdGVkKCkpOworIAor ICAgICBpZiAoY2FuRHJvcCgpKSB7CistICAgICAgICB1cGRhdGVDdXJzb3IoZGVmYXVsdEFjdGlv bihkcmFnKCktPnN1cHBvcnRlZEFjdGlvbnMoKSwgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZp Y2UoKS0+bW9kaWZpZXJzKCkpKTsKKysgICAgICAgIHVwZGF0ZUN1cnNvcihyZXNwb25zZS5hY2Nl cHRlZEFjdGlvbigpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHVwZGF0ZUN1cnNvcihRdDo6 SWdub3JlQWN0aW9uKTsKKyAgICAgfQorIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6ZmluaXNo RHJhZyhjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpCisrdm9pZCBRV2F5 bGFuZERyYWc6OnNldERyb3BSZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAm cmVzcG9uc2UpCisgeworICAgICBzZXRFeGVjdXRlZERyb3BBY3Rpb24ocmVzcG9uc2UuYWNjZXB0 ZWRBY3Rpb24oKSk7CisrfQorKworK3ZvaWQgUVdheWxhbmREcmFnOjpmaW5pc2hEcmFnKCkKKyt7 CisgICAgIFFLZXlFdmVudCBldmVudChRRXZlbnQ6OktleVByZXNzLCBRdDo6S2V5X0VzY2FwZSwg UXQ6Ok5vTW9kaWZpZXIpOworICAgICBldmVudEZpbHRlcihzaGFwZWRQaXhtYXBXaW5kb3coKSwg JmV2ZW50KTsKKysKKysgICAgaWYgKGRyYWcoKSkKKysgICAgICAgIGRyYWcoKS0+ZGVsZXRlTGF0 ZXIoKTsKKyt9CisrCisrYm9vbCBRV2F5bGFuZERyYWc6Om93bnNEcmFnT2JqZWN0KCkgY29uc3QK Kyt7CisrICAgIHJldHVybiB0cnVlOworIH0KKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmRkbmRfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkbmRfcC5oCitpbmRleCA0NzRmZTJhYi4uNDZmNjI5YWMgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kZG5kX3AuaAorQEAgLTcxLDkgKzcxLDEwIEBAIHB1YmxpYzoKKyAgICAgUVdheWxh bmREcmFnKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSk7CisgICAgIH5RV2F5bGFuZERyYWcoKSBv dmVycmlkZTsKKyAKKy0gICAgdm9pZCB1cGRhdGVUYXJnZXQoY29uc3QgUVN0cmluZyAmbWltZVR5 cGUpOworLSAgICB2b2lkIHNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNl ICZyZXNwb25zZSk7CistICAgIHZvaWQgZmluaXNoRHJhZyhjb25zdCBRUGxhdGZvcm1Ecm9wUXRS ZXNwb25zZSAmcmVzcG9uc2UpOworKyAgICB2b2lkIHNldFJlc3BvbnNlKGJvb2wgYWNjZXB0ZWQp OworKyAgICB2b2lkIHNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZy ZXNwb25zZSk7CisrICAgIHZvaWQgc2V0RHJvcFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BR dFJlc3BvbnNlICZyZXNwb25zZSk7CisrICAgIHZvaWQgZmluaXNoRHJhZygpOworIAorIHByb3Rl Y3RlZDoKKyAgICAgdm9pZCBzdGFydERyYWcoKSBvdmVycmlkZTsKK0BAIC04Miw2ICs4Myw3IEBA IHByb3RlY3RlZDoKKyAgICAgdm9pZCBkcm9wKGNvbnN0IFFQb2ludCAmZ2xvYmFsUG9zLCBRdDo6 TW91c2VCdXR0b25zIGIsIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RzKSBvdmVycmlkZTsKKyAg ICAgdm9pZCBlbmREcmFnKCkgb3ZlcnJpZGU7CisgCisrICAgIGJvb2wgb3duc0RyYWdPYmplY3Qo KSBjb25zdCBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFuZERpc3BsYXkgKm1f ZGlzcGxheSA9IG51bGxwdHI7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRpbnB1dGRldmljZS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlucHV0 ZGV2aWNlLmNwcAoraW5kZXggNjEzZmU4NjIuLjRiOTBkZTg0IDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAKKysrKyBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2UuY3BwCitAQCAtNjg1LDYgKzY4NSwxMSBAQCBw dWJsaWM6CisgCisgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpQb2ludGVyOjpwb2ludGVyX2xl YXZlKHVpbnQzMl90IHRpbWUsIHN0cnVjdCB3bF9zdXJmYWNlICpzdXJmYWNlKQorIHsKKysgICAg aW52YWxpZGF0ZUZvY3VzKCk7CisrICAgIG1CdXR0b25zID0gUXQ6Ok5vQnV0dG9uOworKworKyAg ICBtUGFyZW50LT5tVGltZSA9IHRpbWU7CisrCisgICAgIC8vIFRoZSBldmVudCBtYXkgYXJyaXZl IGFmdGVyIGRlc3Ryb3lpbmcgdGhlIHdpbmRvdywgaW5kaWNhdGVkIGJ5CisgICAgIC8vIGEgbnVs bCBzdXJmYWNlLgorICAgICBpZiAoIXN1cmZhY2UpCitAQCAtNjk2LDExICs3MDEsNiBAQCB2b2lk IFFXYXlsYW5kSW5wdXREZXZpY2U6OlBvaW50ZXI6OnBvaW50ZXJfbGVhdmUodWludDMyX3QgdGlt ZSwgc3RydWN0IHdsX3N1cmZhYworIAorICAgICBpZiAoIVFXYXlsYW5kV2luZG93Ojptb3VzZUdy YWIoKSkKKyAgICAgICAgIHNldEZyYW1lRXZlbnQobmV3IExlYXZlRXZlbnQod2luZG93LCBtU3Vy ZmFjZVBvcywgbUdsb2JhbFBvcykpOworLQorLSAgICBpbnZhbGlkYXRlRm9jdXMoKTsKKy0gICAg bUJ1dHRvbnMgPSBRdDo6Tm9CdXR0b247CistCistICAgIG1QYXJlbnQtPm1UaW1lID0gdGltZTsK KyB9CisgCisgY2xhc3MgTW90aW9uRXZlbnQgOiBwdWJsaWMgUVdheWxhbmRQb2ludGVyRXZlbnQK K0BAIC0xMzAwLDE0ICsxMzAwLDYgQEAgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpLZXlib2Fy ZDo6aGFuZGxlRm9jdXNEZXN0cm95ZWQoKQorIHZvaWQgUVdheWxhbmRJbnB1dERldmljZTo6S2V5 Ym9hcmQ6OmhhbmRsZUZvY3VzTG9zdCgpCisgeworICAgICBtRm9jdXMgPSBudWxscHRyOworLSNp ZiBRVF9DT05GSUcoY2xpcGJvYXJkKQorLSAgICBpZiAoYXV0byAqZGF0YURldmljZSA9IG1QYXJl bnQtPmRhdGFEZXZpY2UoKSkKKy0gICAgICAgIGRhdGFEZXZpY2UtPmludmFsaWRhdGVTZWxlY3Rp b25PZmZlcigpOworLSNlbmRpZgorLSNpZiBRVF9DT05GSUcod2F5bGFuZF9jbGllbnRfcHJpbWFy eV9zZWxlY3Rpb24pCistICAgIGlmIChhdXRvICpkZXZpY2UgPSBtUGFyZW50LT5wcmltYXJ5U2Vs ZWN0aW9uRGV2aWNlKCkpCistICAgICAgICBkZXZpY2UtPmludmFsaWRhdGVTZWxlY3Rpb25PZmZl cigpOworLSNlbmRpZgorICAgICBtUGFyZW50LT5tUURpc3BsYXktPmhhbmRsZUtleWJvYXJkRm9j dXNDaGFuZ2VkKG1QYXJlbnQpOworICAgICBtUmVwZWF0VGltZXIuc3RvcCgpOworIH0KK0BAIC0x Mzk2LDYgKzEzODgsNyBAQCB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlRvdWNoOjp0b3VjaF9j YW5jZWwoKQorICAgICBpZiAodG91Y2hFeHQpCisgICAgICAgICB0b3VjaEV4dC0+dG91Y2hDYW5j ZWxlZCgpOworIAorKyAgICBtRm9jdXMgPSBudWxscHRyOworICAgICBRV2luZG93U3lzdGVtSW50 ZXJmYWNlOjpoYW5kbGVUb3VjaENhbmNlbEV2ZW50KG51bGxwdHIsIG1QYXJlbnQtPm1Ub3VjaERl dmljZSk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k aW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlv bi5jcHAKK2luZGV4IGM1M2NjYjc4Li41NDg2MTYwMCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb24uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGludGVncmF0aW9uLmNwcAorQEAgLTEyNSw2ICsxMjUsOSBAQCBRV2F5bGFu ZEludGVncmF0aW9uOjpRV2F5bGFuZEludGVncmF0aW9uKCkKKyAjZW5kaWYKKyAKKyAgICAgcmVj b25maWd1cmVJbnB1dENvbnRleHQoKTsKKysKKysgICAgUVdheWxhbmRXaW5kb3c6OmZpeGVkVG9w bGV2ZWxQb3NpdGlvbnMgPQorKyAgICAgICAgICAgICFxRW52aXJvbm1lbnRWYXJpYWJsZUlzU2V0 KCJRVF9XQVlMQU5EX0RJU0FCTEVfRklYRURfUE9TSVRJT05TIik7CisgfQorIAorIFFXYXlsYW5k SW50ZWdyYXRpb246On5RV2F5bGFuZEludGVncmF0aW9uKCkKK0BAIC0xOTIsMTQgKzE5NSwxOCBA QCBRQWJzdHJhY3RFdmVudERpc3BhdGNoZXIgKlFXYXlsYW5kSW50ZWdyYXRpb246OmNyZWF0ZUV2 ZW50RGlzcGF0Y2hlcigpIGNvbnN0CisgCisgdm9pZCBRV2F5bGFuZEludGVncmF0aW9uOjppbml0 aWFsaXplKCkKKyB7CisrICAgIG1EaXNwbGF5LT5pbml0RXZlbnRUaHJlYWQoKTsKKysKKysgICAg Ly8gQ2FsbCBhZnRlciBldmVudERpc3BhdGNoZXIgaXMgZnVsbHkgY29ubmVjdGVkLCBmb3IgUVdh eWxhbmREaXNwbGF5Ojpmb3JjZVJvdW5kVHJpcCgpCisrICAgIG1EaXNwbGF5LT5pbml0aWFsaXpl KCk7CisrCisrICAgIC8vIEJ1dCB0aGUgYWJvdXRUb0Jsb2NrKCkgYW5kIGF3YWtlKCkgc2hvdWxk IGJlIGNvbm5lY3RlZCBhZnRlciBpbml0aWFsaXplUGxhdGZvcm0oKS4KKysgICAgLy8gT3RoZXJ3 aXNlIHRoZSBjb25uZWN0ZWQgZmx1c2hSZXF1ZXN0cygpIG1heSBjb25zdW1lcyB1cCBhbGwgZXZl bnRzIGJlZm9yZSBwcm9jZXNzRXZlbnRzIHN0YXJ0cyB0byB3YWl0LAorKyAgICAvLyBzbyB0aGF0 IHByb2Nlc3NFdmVudHMoUUV2ZW50TG9vcDo6V2FpdEZvck1vcmVFdmVudHMpIG1heSBiZSBibG9j a2VkIGluIHRoZSBmb3JjZVJvdW5kVHJpcCgpLgorICAgICBRQWJzdHJhY3RFdmVudERpc3BhdGNo ZXIgKmRpc3BhdGNoZXIgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpldmVudERpc3BhdGNoZXI7 CisgICAgIFFPYmplY3Q6OmNvbm5lY3QoZGlzcGF0Y2hlciwgU0lHTkFMKGFib3V0VG9CbG9jaygp KSwgbURpc3BsYXkuZGF0YSgpLCBTTE9UKGZsdXNoUmVxdWVzdHMoKSkpOworICAgICBRT2JqZWN0 Ojpjb25uZWN0KGRpc3BhdGNoZXIsIFNJR05BTChhd2FrZSgpKSwgbURpc3BsYXkuZGF0YSgpLCBT TE9UKGZsdXNoUmVxdWVzdHMoKSkpOworIAorLSAgICBpbnQgZmQgPSB3bF9kaXNwbGF5X2dldF9m ZChtRGlzcGxheS0+d2xfZGlzcGxheSgpKTsKKy0gICAgUVNvY2tldE5vdGlmaWVyICpzbiA9IG5l dyBRU29ja2V0Tm90aWZpZXIoZmQsIFFTb2NrZXROb3RpZmllcjo6UmVhZCwgbURpc3BsYXkuZGF0 YSgpKTsKKy0gICAgUU9iamVjdDo6Y29ubmVjdChzbiwgU0lHTkFMKGFjdGl2YXRlZChRU29ja2V0 RGVzY3JpcHRvcikpLCBtRGlzcGxheS5kYXRhKCksIFNMT1QoZmx1c2hSZXF1ZXN0cygpKSk7Cist CisgICAgIC8vIFF0IGRvZXMgbm90IHN1cHBvcnQgcnVubmluZyB3aXRoIG5vIHNjcmVlbnMKKyAg ICAgbURpc3BsYXktPmVuc3VyZVNjcmVlbigpOworIH0KK0BAIC0yNjIsNiArMjY5LDE0IEBAIFFX YXlsYW5kRGlzcGxheSAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6ZGlzcGxheSgpIGNvbnN0CisgICAg IHJldHVybiBtRGlzcGxheS5kYXRhKCk7CisgfQorIAorK1F0OjpLZXlib2FyZE1vZGlmaWVycyBR V2F5bGFuZEludGVncmF0aW9uOjpxdWVyeUtleWJvYXJkTW9kaWZpZXJzKCkgY29uc3QKKyt7Cisr ICAgIGlmIChhdXRvICpzZWF0ID0gbURpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpKSB7Cisr ICAgICAgICByZXR1cm4gc2VhdC0+bW9kaWZpZXJzKCk7CisrICAgIH0KKysgICAgcmV0dXJuIFF0 OjpOb01vZGlmaWVyOworK30KKysKKyBRTGlzdDxpbnQ+IFFXYXlsYW5kSW50ZWdyYXRpb246OnBv c3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2ZW50KSBjb25zdAorIHsKKyAgICAgaWYgKGF1 dG8gKnNlYXQgPSBtRGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCkpCitAQCAtNDc5LDcgKzQ5 NCw3IEBAIHZvaWQgUVdheWxhbmRJbnRlZ3JhdGlvbjo6cmVjb25maWd1cmVJbnB1dENvbnRleHQo KQorICAgICB9CisgI2VuZGlmCisgCistICAgIHFDRGVidWcobGNRcGFXYXlsYW5kKSA8PCAidXNp bmcgaW5wdXQgbWV0aG9kOiIgPDwgaW5wdXRDb250ZXh0KCktPm1ldGFPYmplY3QoKS0+Y2xhc3NO YW1lKCk7CisrICAgIHFDRGVidWcobGNRcGFXYXlsYW5kKSA8PCAidXNpbmcgaW5wdXQgbWV0aG9k OiIgPDwgKGlucHV0Q29udGV4dCgpID8gaW5wdXRDb250ZXh0KCktPm1ldGFPYmplY3QoKS0+Y2xh c3NOYW1lKCkgOiAiPG5vbmU+Iik7CisgfQorIAorIFFXYXlsYW5kU2hlbGxJbnRlZ3JhdGlvbiAq UVdheWxhbmRJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxJbnRlZ3JhdGlvbihjb25zdCBRU3RyaW5n ICZpbnRlZ3JhdGlvbk5hbWUpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVn cmF0aW9uX3AuaAoraW5kZXggZmY3MGFlMjUuLjczYjgwNjU4IDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25fcC5oCitAQCAtMTA3LDYgKzEwNyw4IEBAIHB1 YmxpYzoKKyAKKyAgICAgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KCkgY29uc3Q7CisgCisrICAg IFF0OjpLZXlib2FyZE1vZGlmaWVycyBxdWVyeUtleWJvYXJkTW9kaWZpZXJzKCkgY29uc3Qgb3Zl cnJpZGU7CisrCisgICAgIFFMaXN0PGludD4gcG9zc2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAq ZXZlbnQpIGNvbnN0IG92ZXJyaWRlOworIAorICAgICBRU3RyaW5nTGlzdCB0aGVtZU5hbWVzKCkg Y29uc3Qgb3ZlcnJpZGU7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRw cmltYXJ5c2VsZWN0aW9udjEuY3BwCitpbmRleCA4MzJmOTY3OC4uZWE1MDg3NzEgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlzZWxlY3Rpb252MS5jcHAK KysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNw cAorQEAgLTU0LDExICs1NCw2IEBAIFFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFn ZXJWMTo6UVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxCisgICAgIDogendw X3ByaW1hcnlfc2VsZWN0aW9uX2RldmljZV9tYW5hZ2VyX3YxKGRpc3BsYXktPndsX3JlZ2lzdHJ5 KCksIGlkLCBxTWluKHZlcnNpb24sIHVpbnQoMSkpKQorICAgICAsIG1fZGlzcGxheShkaXNwbGF5 KQorIHsKKy0gICAgLy8gQ3JlYXRlIGRldmljZXMgZm9yIGFsbCBzZWF0cy4KKy0gICAgLy8gVGhp cyBvbmx5IHdvcmtzIGlmIHdlIGdldCB0aGUgZ2xvYmFsIGJlZm9yZSBhbGwgZGV2aWNlcworLSAg ICBjb25zdCBhdXRvIHNlYXRzID0gbV9kaXNwbGF5LT5pbnB1dERldmljZXMoKTsKKy0gICAgZm9y IChhdXRvICpzZWF0IDogc2VhdHMpCistICAgICAgICBzZWF0LT5zZXRQcmltYXJ5U2VsZWN0aW9u RGV2aWNlKGNyZWF0ZURldmljZShzZWF0KSk7CisgfQorIAorIFFXYXlsYW5kUHJpbWFyeVNlbGVj dGlvbkRldmljZVYxICpRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjE6OmNy ZWF0ZURldmljZShRV2F5bGFuZElucHV0RGV2aWNlICpzZWF0KQorZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kc2NyZWVuLmNwcAoraW5kZXggNmNiMzM3ZGUuLjU1MzdkYWZkIDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW4uY3BwCisrKysgYi9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAKK0BAIC02MCw3ICs2MCw3IEBAIFFXYXls YW5kWGRnT3V0cHV0TWFuYWdlclYxOjpRV2F5bGFuZFhkZ091dHB1dE1hbmFnZXJWMShRV2F5bGFu ZERpc3BsYXkqIGRpc3BsYXksCisgfQorIAorIFFXYXlsYW5kU2NyZWVuOjpRV2F5bGFuZFNjcmVl bihRV2F5bGFuZERpc3BsYXkgKndheWxhbmREaXNwbGF5LCBpbnQgdmVyc2lvbiwgdWludDMyX3Qg aWQpCistICAgIDogUXRXYXlsYW5kOjp3bF9vdXRwdXQod2F5bGFuZERpc3BsYXktPndsX3JlZ2lz dHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIDIpKQorKyAgICA6IFF0V2F5bGFuZDo6d2xfb3V0cHV0 KHdheWxhbmREaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCAzKSkKKyAg ICAgLCBtX291dHB1dElkKGlkKQorICAgICAsIG1XYXlsYW5kRGlzcGxheSh3YXlsYW5kRGlzcGxh eSkKKyAgICAgLCBtT3V0cHV0TmFtZShRU3RyaW5nTGl0ZXJhbCgiU2NyZWVuJTEiKS5hcmcoaWQp KQorQEAgLTcyLDcgKzcyLDcgQEAgUVdheWxhbmRTY3JlZW46OlFXYXlsYW5kU2NyZWVuKFFXYXls YW5kRGlzcGxheSAqd2F5bGFuZERpc3BsYXksIGludCB2ZXJzaW9uLCB1aW4KKyAgICAgICAgIHFD V2FybmluZyhsY1FwYVdheWxhbmQpIDw8ICJ3bF9vdXRwdXQgZG9uZSBldmVudCBub3Qgc3VwcG9y dGVkIGJ5IGNvbXBvc2l0b3IsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg IlFTY3JlZW4gbWF5IG5vdCB3b3JrIGNvcnJlY3RseSI7CisgICAgICAgICBtV2F5bGFuZERpc3Bs YXktPmZvcmNlUm91bmRUcmlwKCk7IC8vIEdpdmUgdGhlIGNvbXBvc2l0b3IgYSBjaGFuY2UgdG8g c2VuZCBnZW9tZXRyeSBldGMuCistICAgICAgICBtT3V0cHV0RG9uZSA9IHRydWU7IC8vIEZha2Ug dGhlIGRvbmUgZXZlbnQKKysgICAgICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0gT3V0cHV0RG9uZUV2 ZW50OyAvLyBGYWtlIHRoZSBkb25lIGV2ZW50CisgICAgICAgICBtYXliZUluaXRpYWxpemUoKTsK KyAgICAgfQorIH0KK0BAIC04MSwxNiArODEsMjkgQEAgUVdheWxhbmRTY3JlZW46On5RV2F5bGFu ZFNjcmVlbigpCisgeworICAgICBpZiAoenhkZ19vdXRwdXRfdjE6OmlzSW5pdGlhbGl6ZWQoKSkK KyAgICAgICAgIHp4ZGdfb3V0cHV0X3YxOjpkZXN0cm95KCk7CisrICAgIGlmICh3bF9vdXRwdXQ6 OmlzSW5pdGlhbGl6ZWQoKSAmJiB3bF9vdXRwdXRfZ2V0X3ZlcnNpb24od2xfb3V0cHV0OjpvYmpl Y3QoKSkgPj0gV0xfT1VUUFVUX1JFTEVBU0VfU0lOQ0VfVkVSU0lPTikKKysgICAgICAgIHdsX291 dHB1dDo6cmVsZWFzZSgpOworK30KKysKKyt1aW50IFFXYXlsYW5kU2NyZWVuOjpyZXF1aXJlZEV2 ZW50cygpIGNvbnN0CisreworKyAgICB1aW50IHJldCA9IE91dHB1dERvbmVFdmVudDsKKysKKysg ICAgaWYgKG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpKSB7CisrICAgICAgICBy ZXQgfD0gWGRnT3V0cHV0TmFtZUV2ZW50OworKworKyAgICAgICAgaWYgKG1XYXlsYW5kRGlzcGxh eS0+eGRnT3V0cHV0TWFuYWdlcigpLT52ZXJzaW9uKCkgPCAzKQorKyAgICAgICAgICAgIHJldCB8 PSBYZGdPdXRwdXREb25lRXZlbnQ7CisrICAgIH0KKysgICAgcmV0dXJuIHJldDsKKyB9CisgCisg dm9pZCBRV2F5bGFuZFNjcmVlbjo6bWF5YmVJbml0aWFsaXplKCkKKyB7CisgICAgIFFfQVNTRVJU KCFtSW5pdGlhbGl6ZWQpOworIAorLSAgICBpZiAoIW1PdXRwdXREb25lKQorLSAgICAgICAgcmV0 dXJuOworLQorLSAgICBpZiAobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCkgJiYg IW1YZGdPdXRwdXREb25lKQorKyAgICBjb25zdCB1aW50IHJlcXVpcmVkRXZlbnRzID0gdGhpcy0+ cmVxdWlyZWRFdmVudHMoKTsKKysgICAgaWYgKChtUHJvY2Vzc2VkRXZlbnRzICYgcmVxdWlyZWRF dmVudHMpICE9IHJlcXVpcmVkRXZlbnRzKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBtSW5p dGlhbGl6ZWQgPSB0cnVlOworQEAgLTI3Niw5ICsyODksOCBAQCB2b2lkIFFXYXlsYW5kU2NyZWVu OjpvdXRwdXRfc2NhbGUoaW50MzJfdCBmYWN0b3IpCisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6 b3V0cHV0X2RvbmUoKQorIHsKKy0gICAgbU91dHB1dERvbmUgPSB0cnVlOworLSAgICBpZiAoenhk Z19vdXRwdXRfdjE6OmlzSW5pdGlhbGl6ZWQoKSAmJiBtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1 dE1hbmFnZXIoKS0+dmVyc2lvbigpID49IDMpCistICAgICAgICBtWGRnT3V0cHV0RG9uZSA9IHRy dWU7CisrICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0gT3V0cHV0RG9uZUV2ZW50OworKworICAgICBp ZiAobUluaXRpYWxpemVkKSB7CisgICAgICAgICB1cGRhdGVPdXRwdXRQcm9wZXJ0aWVzKCk7Cisg ICAgICAgICBpZiAoenhkZ19vdXRwdXRfdjE6OmlzSW5pdGlhbGl6ZWQoKSkKK0BAIC0zMzksNyAr MzUxLDcgQEAgdm9pZCBRV2F5bGFuZFNjcmVlbjo6enhkZ19vdXRwdXRfdjFfZG9uZSgpCisgICAg IGlmIChRX1VOTElLRUxZKG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpLT52ZXJz aW9uKCkgPj0gMykpCisgICAgICAgICBxV2FybmluZyhsY1FwYVdheWxhbmQpIDw8ICJ6eGRnX291 dHB1dF92MS5kb25lIHJlY2VpdmVkIG9uIHZlcnNpb24gMyBvciBuZXdlciwgdGhpcyBpcyBtb3N0 IGxpa2VseSBhIGJ1ZyBpbiB0aGUgY29tcG9zaXRvciI7CisgCistICAgIG1YZGdPdXRwdXREb25l ID0gdHJ1ZTsKKysgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBYZGdPdXRwdXREb25lRXZlbnQ7Cisg ICAgIGlmIChtSW5pdGlhbGl6ZWQpCisgICAgICAgICB1cGRhdGVYZGdPdXRwdXRQcm9wZXJ0aWVz KCk7CisgICAgIGVsc2UKK0BAIC0zNDgsNyArMzYwLDExIEBAIHZvaWQgUVdheWxhbmRTY3JlZW46 Onp4ZGdfb3V0cHV0X3YxX2RvbmUoKQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46Onp4ZGdfb3V0 cHV0X3YxX25hbWUoY29uc3QgUVN0cmluZyAmbmFtZSkKKyB7CisrICAgIGlmIChRX1VOTElLRUxZ KG1Jbml0aWFsaXplZCkpCisrICAgICAgICBxV2FybmluZyhsY1FwYVdheWxhbmQpIDw8ICJ6eGRn X291dHB1dF92MS5uYW1lIHJlY2VpdmVkIGFmdGVyIG91dHB1dCBoYXMgYmVlbiBpbml0aWFsaXpl ZCwgdGhpcyBpcyBtb3N0IGxpa2VseSBhIGJ1ZyBpbiB0aGUgY29tcG9zaXRvciI7CisrCisgICAg IG1PdXRwdXROYW1lID0gbmFtZTsKKysgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBYZGdPdXRwdXRO YW1lRXZlbnQ7CisgfQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46OnVwZGF0ZVhkZ091dHB1dFBy b3BlcnRpZXMoKQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2Ny ZWVuX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuX3AuaAoraW5kZXgg ZGYxYzk0ZjIuLjA1MGNmZGMwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRzY3JlZW5fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVl bl9wLmgKK0BAIC0xMTYsNiArMTE2LDEzIEBAIHB1YmxpYzoKKyAgICAgc3RhdGljIFFXYXlsYW5k U2NyZWVuICpmcm9tV2xPdXRwdXQoOjp3bF9vdXRwdXQgKm91dHB1dCk7CisgCisgcHJpdmF0ZToK KysgICAgZW51bSBFdmVudCA6IHVpbnQgeworKyAgICAgICAgWGRnT3V0cHV0RG9uZUV2ZW50ID0g MHgxLAorKyAgICAgICAgT3V0cHV0RG9uZUV2ZW50ID0gMHgyLAorKyAgICAgICAgWGRnT3V0cHV0 TmFtZUV2ZW50ID0gMHg0LAorKyAgICB9OworKyAgICB1aW50IHJlcXVpcmVkRXZlbnRzKCkgY29u c3Q7CisrCisgICAgIHZvaWQgb3V0cHV0X21vZGUodWludDMyX3QgZmxhZ3MsIGludCB3aWR0aCwg aW50IGhlaWdodCwgaW50IHJlZnJlc2gpIG92ZXJyaWRlOworICAgICB2b2lkIG91dHB1dF9nZW9t ZXRyeShpbnQzMl90IHgsIGludDMyX3QgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsCitAQCAtMTQ4LDggKzE1NSw3IEBAIHByaXZhdGU6 CisgICAgIFFTaXplIG1QaHlzaWNhbFNpemU7CisgICAgIFFTdHJpbmcgbU91dHB1dE5hbWU7Cisg ICAgIFF0OjpTY3JlZW5PcmllbnRhdGlvbiBtX29yaWVudGF0aW9uID0gUXQ6OlByaW1hcnlPcmll bnRhdGlvbjsKKy0gICAgYm9vbCBtT3V0cHV0RG9uZSA9IGZhbHNlOworLSAgICBib29sIG1YZGdP dXRwdXREb25lID0gZmFsc2U7CisrICAgIHVpbnQgbVByb2Nlc3NlZEV2ZW50cyA9IDA7CisgICAg IGJvb2wgbUluaXRpYWxpemVkID0gZmFsc2U7CisgCisgI2lmIFFUX0NPTkZJRyhjdXJzb3IpCitk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5nc3RvcmUu Y3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5nc3RvcmUuY3BwCitp bmRleCBkYzdmZjY3MC4uNDFjZmZkZjcgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcAorQEAgLTUyLDYgKzUyLDcgQEAKKyAKKyAjaW5j bHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvd2F5bGFuZC13YXlsYW5kLWNsaWVudC1wcm90 b2NvbC5oPgorIAorKyNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAj aW5jbHVkZSA8c3lzL21tYW4uaD4KKyAKK0BAIC02MSw2ICs2Miw5IEBACisgIyAgaWZuZGVmIE1G RF9DTE9FWEVDCisgIyAgICBkZWZpbmUgTUZEX0NMT0VYRUMgICAgIDB4MDAwMVUKKyAjICBlbmRp ZgorKyMgIGlmbmRlZiBNRkRfQUxMT1dfU0VBTElORworKyMgICAgZGVmaW5lIE1GRF9BTExPV19T RUFMSU5HIDB4MDAwMlUKKysjICBlbmRpZgorICNlbmRpZgorIAorIFFUX0JFR0lOX05BTUVTUEFD RQorQEAgLTc0LDggKzc4LDEwIEBAIFFXYXlsYW5kU2htQnVmZmVyOjpRV2F5bGFuZFNobUJ1ZmZl cihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksCisgICAgIGludCBhbGxvYyA9IHN0cmlkZSAqIHNp emUuaGVpZ2h0KCk7CisgICAgIGludCBmZCA9IC0xOworIAorLSNpZmRlZiBTWVNfbWVtZmRfY3Jl YXRlCistICAgIGZkID0gc3lzY2FsbChTWVNfbWVtZmRfY3JlYXRlLCAid2F5bGFuZC1zaG0iLCBN RkRfQ0xPRVhFQyk7CisrI2lmIGRlZmluZWQoU1lTX21lbWZkX2NyZWF0ZSkgJiYgZGVmaW5lZChG X1NFQUxfU0VBTCkKKysgICAgZmQgPSBzeXNjYWxsKFNZU19tZW1mZF9jcmVhdGUsICJ3YXlsYW5k LXNobSIsIE1GRF9DTE9FWEVDIHwgTUZEX0FMTE9XX1NFQUxJTkcpOworKyAgICBpZiAoZmQgPj0g MCkKKysgICAgICAgIGZjbnRsKGZkLCBGX0FERF9TRUFMUywgRl9TRUFMX1NIUklOSyB8IEZfU0VB TF9TRUFMKTsKKyAjZW5kaWYKKyAKKyAgICAgUVNjb3BlZFBvaW50ZXI8UUZpbGU+IGZpbGVQb2lu dGVyOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNw cCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcAoraW5kZXggY2I4Mjg1 N2EuLmZiMmM1OWRjIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3 aW5kb3cuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvdy5jcHAK K0BAIC03Niw3ICs3Niw2IEBAIFFXYXlsYW5kV2luZG93ICpRV2F5bGFuZFdpbmRvdzo6bU1vdXNl R3JhYiA9IG51bGxwdHI7CisgUVdheWxhbmRXaW5kb3c6OlFXYXlsYW5kV2luZG93KFFXaW5kb3cg KndpbmRvdywgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KQorICAgICA6IFFQbGF0Zm9ybVdpbmRv dyh3aW5kb3cpCisgICAgICwgbURpc3BsYXkoZGlzcGxheSkKKy0gICAgLCBtRnJhbWVRdWV1ZSht RGlzcGxheS0+Y3JlYXRlRnJhbWVRdWV1ZSgpKQorICAgICAsIG1SZXNpemVBZnRlclN3YXAocUVu dmlyb25tZW50VmFyaWFibGVJc1NldCgiUVRfV0FZTEFORF9SRVNJWkVfQUZURVJfU1dBUCIpKQor IHsKKyAgICAgeworQEAgLTk1LDkgKzk0LDYgQEAgUVdheWxhbmRXaW5kb3c6OlFXYXlsYW5kV2lu ZG93KFFXaW5kb3cgKndpbmRvdywgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KQorIAorIFFXYXls YW5kV2luZG93Ojp+UVdheWxhbmRXaW5kb3coKQorIHsKKy0gICAgbURpc3BsYXktPmRlc3Ryb3lG cmFtZVF1ZXVlKG1GcmFtZVF1ZXVlKTsKKy0gICAgbURpc3BsYXktPmhhbmRsZVdpbmRvd0Rlc3Ry b3llZCh0aGlzKTsKKy0KKyAgICAgZGVsZXRlIG1XaW5kb3dEZWNvcmF0aW9uOworIAorICAgICBp ZiAobVN1cmZhY2UpCitAQCAtMjQzLDYgKzIzOSw3IEBAIGJvb2wgUVdheWxhbmRXaW5kb3c6OnNo b3VsZENyZWF0ZVN1YlN1cmZhY2UoKSBjb25zdAorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJl c2V0KCkKKyB7CisrICAgIGNsb3NlQ2hpbGRQb3B1cHMoKTsKKyAgICAgZGVsZXRlIG1TaGVsbFN1 cmZhY2U7CisgICAgIG1TaGVsbFN1cmZhY2UgPSBudWxscHRyOworICAgICBkZWxldGUgbVN1YlN1 cmZhY2VXaW5kb3c7CitAQCAtMjU1LDE3ICsyNTIsMjIgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6 cmVzZXQoKQorICAgICAgICAgbVN1cmZhY2UucmVzZXQoKTsKKyAgICAgfQorIAorLSAgICBpZiAo bUZyYW1lQ2FsbGJhY2spIHsKKy0gICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobUZyYW1lQ2Fs bGJhY2spOworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworLSAgICB9CisrICAg IHsKKysgICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICAg ICAgaWYgKG1GcmFtZUNhbGxiYWNrKSB7CisrICAgICAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJv eShtRnJhbWVDYWxsYmFjayk7CisrICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRy OworKyAgICAgICAgfQorIAorLSAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlk YXRlKCk7CistICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOworKyAgICAgICAg bUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworKyAgICAgICAgbVdhaXRp bmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisrICAgIH0KKyAgICAgbUZyYW1lQ2FsbGJhY2tU aW1lZE91dCA9IGZhbHNlOworIAorICAgICBtTWFzayA9IFFSZWdpb24oKTsKKyAgICAgbVF1ZXVl ZEJ1ZmZlciA9IG51bGxwdHI7CisrCisrICAgIG1EaXNwbGF5LT5oYW5kbGVXaW5kb3dEZXN0cm95 ZWQodGhpcyk7CisgfQorIAorIFFXYXlsYW5kV2luZG93ICpRV2F5bGFuZFdpbmRvdzo6ZnJvbVds U3VyZmFjZSg6OndsX3N1cmZhY2UgKnN1cmZhY2UpCitAQCAtMzUxLDE5ICszNTMsMjUgQEAgdm9p ZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnlfaGVscGVyKGNvbnN0IFFSZWN0ICZyZWN0KQor ICAgICB9CisgfQorIAorLXZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5KGNvbnN0IFFS ZWN0ICZyZWN0KQorK3ZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5KGNvbnN0IFFSZWN0 ICZyKQorIHsKKysgICAgYXV0byByZWN0ID0gcjsKKysgICAgaWYgKGZpeGVkVG9wbGV2ZWxQb3Np dGlvbnMgJiYgIVFQbGF0Zm9ybVdpbmRvdzo6cGFyZW50KCkgJiYgd2luZG93KCktPnR5cGUoKSAh PSBRdDo6UG9wdXAKKysgICAgICAgICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlRvb2xUaXAp IHsKKysgICAgICAgIHJlY3QubW92ZVRvKHNjcmVlbigpLT5nZW9tZXRyeSgpLnRvcExlZnQoKSk7 CisrICAgIH0KKyAgICAgc2V0R2VvbWV0cnlfaGVscGVyKHJlY3QpOworIAorICAgICBpZiAod2lu ZG93KCktPmlzVmlzaWJsZSgpICYmIHJlY3QuaXNWYWxpZCgpKSB7CisgICAgICAgICBpZiAobVdp bmRvd0RlY29yYXRpb24pCisgICAgICAgICAgICAgbVdpbmRvd0RlY29yYXRpb24tPnVwZGF0ZSgp OworIAorLSAgICAgICAgaWYgKG1SZXNpemVBZnRlclN3YXAgJiYgd2luZG93VHlwZSgpID09IEVn bCAmJiBtU2VudEluaXRpYWxSZXNpemUpCisrICAgICAgICBpZiAobVJlc2l6ZUFmdGVyU3dhcCAm JiB3aW5kb3dUeXBlKCkgPT0gRWdsICYmIG1TZW50SW5pdGlhbFJlc2l6ZSkgeworKyAgICAgICAg ICAgIFFNdXRleExvY2tlciBsb2NrKCZtUmVzaXplTG9jayk7CisgICAgICAgICAgICAgbVJlc2l6 ZURpcnR5ID0gdHJ1ZTsKKy0gICAgICAgIGVsc2UKKysgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlR2VvbWV0cnlDaGFuZ2Uod2luZG93 KCksIGdlb21ldHJ5KCkpOworLQorKyAgICAgICAgfQorICAgICAgICAgbVNlbnRJbml0aWFsUmVz aXplID0gdHJ1ZTsKKyAgICAgfQorICAgICBRUmVjdCBleHBvc2VHZW9tZXRyeShRUG9pbnQoKSwg Z2VvbWV0cnkoKS5zaXplKCkpOworQEAgLTM3NCw3ICszODIsNyBAQCB2b2lkIFFXYXlsYW5kV2lu ZG93OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgICAgIG1TaGVsbFN1cmZh Y2UtPnNldFdpbmRvd0dlb21ldHJ5KHdpbmRvd0NvbnRlbnRHZW9tZXRyeSgpKTsKKyAKKyAgICAg aWYgKGlzT3BhcXVlKCkgJiYgbU1hc2suaXNFbXB0eSgpKQorLSAgICAgICAgc2V0T3BhcXVlQXJl YShyZWN0KTsKKysgICAgICAgIHNldE9wYXF1ZUFyZWEoUVJlY3QoUVBvaW50KDAsIDApLCByZWN0 LnNpemUoKSkpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXNpemVGcm9tQXBwbHlD b25maWd1cmUoY29uc3QgUVNpemUgJnNpemVXaXRoTWFyZ2lucywgY29uc3QgUVBvaW50ICZvZmZz ZXQpCitAQCAtMzk5LDIxICs0MDcsNiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZW5kRXhwb3Nl RXZlbnQoY29uc3QgUVJlY3QgJnJlY3QpCisgICAgIG1MYXN0RXhwb3NlR2VvbWV0cnkgPSByZWN0 OworIH0KKyAKKy0KKy1zdGF0aWMgUVZlY3RvcjxRUG9pbnRlcjxRV2F5bGFuZFdpbmRvdz4+IGFj dGl2ZVBvcHVwczsKKy0KKy12b2lkIFFXYXlsYW5kV2luZG93OjpjbG9zZVBvcHVwcyhRV2F5bGFu ZFdpbmRvdyAqcGFyZW50KQorLXsKKy0gICAgd2hpbGUgKCFhY3RpdmVQb3B1cHMuaXNFbXB0eSgp KSB7CistICAgICAgICBhdXRvIHBvcHVwID0gYWN0aXZlUG9wdXBzLnRha2VMYXN0KCk7CistICAg ICAgICBpZiAocG9wdXAuaXNOdWxsKCkpCistICAgICAgICAgICAgY29udGludWU7CistICAgICAg ICBpZiAocG9wdXAuZGF0YSgpID09IHBhcmVudCkKKy0gICAgICAgICAgICByZXR1cm47CistICAg ICAgICBwb3B1cC0+cmVzZXQoKTsKKy0gICAgfQorLX0KKy0KKyBRUGxhdGZvcm1TY3JlZW4gKlFX YXlsYW5kV2luZG93OjpjYWxjdWxhdGVTY3JlZW5Gcm9tU3VyZmFjZUV2ZW50cygpIGNvbnN0Cisg eworICAgICBRUmVhZExvY2tlciBsb2NrKCZtU3VyZmFjZUxvY2spOworQEAgLTQzMywxMCArNDI2 LDcgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCisgICAg IGxhc3RWaXNpYmxlID0gdmlzaWJsZTsKKyAKKyAgICAgaWYgKHZpc2libGUpIHsKKy0gICAgICAg IGlmICh3aW5kb3coKS0+dHlwZSgpID09IFF0OjpQb3B1cCB8fCB3aW5kb3coKS0+dHlwZSgpID09 IFF0OjpUb29sVGlwKQorLSAgICAgICAgICAgIGFjdGl2ZVBvcHVwcyA8PCB0aGlzOworICAgICAg ICAgaW5pdFdpbmRvdygpOworLSAgICAgICAgbURpc3BsYXktPmZsdXNoUmVxdWVzdHMoKTsKKyAK KyAgICAgICAgIHNldEdlb21ldHJ5KHdpbmRvd0dlb21ldHJ5KCkpOworICAgICAgICAgLy8gRG9u J3QgZmx1c2ggdGhlIGV2ZW50cyBoZXJlLCBvciBlbHNlIHRoZSBuZXdseSB2aXNpYmxlIHdpbmRv dyBtYXkgc3RhcnQgZHJhd2luZywgYnV0IHNpbmNlCitAQCAtNDQ0LDcgKzQzNCw2IEBAIHZvaWQg UVdheWxhbmRXaW5kb3c6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQorICAgICAgICAgLy8gUVdh eWxhbmRTaG1CYWNraW5nU3RvcmU6OmJlZ2luUGFpbnQoKS4KKyAgICAgfSBlbHNlIHsKKyAgICAg ICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdCgpKTsKKy0gICAgICAgIGNsb3NlUG9wdXBzKHRoaXMp OworICAgICAgICAgcmVzZXQoKTsKKyAgICAgfQorIH0KK0BAIC01NTYsMTIgKzU0NSwxMiBAQCB2 b2lkIFFXYXlsYW5kV2luZG93OjpzZW5kUmVjdXJzaXZlRXhwb3NlRXZlbnQoKQorIAorIHZvaWQg UVdheWxhbmRXaW5kb3c6OmF0dGFjaChRV2F5bGFuZEJ1ZmZlciAqYnVmZmVyLCBpbnQgeCwgaW50 IHkpCisgeworLSAgICBRX0FTU0VSVCghYnVmZmVyLT5jb21taXR0ZWQoKSk7CisgICAgIFFSZWFk TG9ja2VyIGxvY2tlcigmbVN1cmZhY2VMb2NrKTsKKyAgICAgaWYgKG1TdXJmYWNlID09IG51bGxw dHIpCisgICAgICAgICByZXR1cm47CisgCisgICAgIGlmIChidWZmZXIpIHsKKysgICAgICAgIFFf QVNTRVJUKCFidWZmZXItPmNvbW1pdHRlZCgpKTsKKyAgICAgICAgIGhhbmRsZVVwZGF0ZSgpOwor ICAgICAgICAgYnVmZmVyLT5zZXRCdXN5KCk7CisgCitAQCAtNTgzLDcgKzU3MiwxMSBAQCB2b2lk IFFXYXlsYW5kV2luZG93OjpkYW1hZ2UoY29uc3QgUVJlY3QgJnJlY3QpCisgICAgIGlmIChtU3Vy ZmFjZSA9PSBudWxscHRyKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBtU3VyZmFjZS0+ZGFt YWdlKHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKysg ICAgY29uc3QgaW50IHMgPSBzY2FsZSgpOworKyAgICBpZiAobURpc3BsYXktPmNvbXBvc2l0b3JW ZXJzaW9uKCkgPj0gNCkKKysgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2VfYnVmZmVyKHMgKiByZWN0 LngoKSwgcyAqIHJlY3QueSgpLCBzICogcmVjdC53aWR0aCgpLCBzICogcmVjdC5oZWlnaHQoKSk7 CisrICAgIGVsc2UKKysgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgp LCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kV2lu ZG93OjpzYWZlQ29tbWl0KFFXYXlsYW5kQnVmZmVyICpidWZmZXIsIGNvbnN0IFFSZWdpb24gJmRh bWFnZSkKK0BAIC02MTksOCArNjEyLDE0IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmNvbW1pdChR V2F5bGFuZEJ1ZmZlciAqYnVmZmVyLCBjb25zdCBRUmVnaW9uICZkYW1hZ2UpCisgICAgICAgICBy ZXR1cm47CisgCisgICAgIGF0dGFjaE9mZnNldChidWZmZXIpOworLSAgICBmb3IgKGNvbnN0IFFS ZWN0ICZyZWN0OiBkYW1hZ2UpCistICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlKHJlY3QueCgpLCBy ZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKysgICAgaWYgKG1EaXNwbGF5 LT5jb21wb3NpdG9yVmVyc2lvbigpID49IDQpIHsKKysgICAgICAgIGNvbnN0IGludCBzID0gc2Nh bGUoKTsKKysgICAgICAgIGZvciAoY29uc3QgUVJlY3QgJnJlY3Q6IGRhbWFnZSkKKysgICAgICAg ICAgICBtU3VyZmFjZS0+ZGFtYWdlX2J1ZmZlcihzICogcmVjdC54KCksIHMgKiByZWN0LnkoKSwg cyAqIHJlY3Qud2lkdGgoKSwgcyAqIHJlY3QuaGVpZ2h0KCkpOworKyAgICB9IGVsc2UgeworKyAg ICAgICAgZm9yIChjb25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQorKyAgICAgICAgICAgIG1TdXJm YWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0 KCkpOworKyAgICB9CisgICAgIFFfQVNTRVJUKCFidWZmZXItPmNvbW1pdHRlZCgpKTsKKyAgICAg YnVmZmVyLT5zZXRDb21taXR0ZWQoKTsKKyAgICAgbVN1cmZhY2UtPmNvbW1pdCgpOworQEAgLTYz NSw0MiArNjM0LDUzIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmNvbW1pdCgpCisgCisgY29uc3Qg d2xfY2FsbGJhY2tfbGlzdGVuZXIgUVdheWxhbmRXaW5kb3c6OmNhbGxiYWNrTGlzdGVuZXIgPSB7 CisgICAgIFtdKHZvaWQgKmRhdGEsIHdsX2NhbGxiYWNrICpjYWxsYmFjaywgdWludDMyX3QgdGlt ZSkgeworLSAgICAgICAgUV9VTlVTRUQoY2FsbGJhY2spOworICAgICAgICAgUV9VTlVTRUQodGlt ZSk7CisgICAgICAgICBhdXRvICp3aW5kb3cgPSBzdGF0aWNfY2FzdDxRV2F5bGFuZFdpbmRvdyo+ KGRhdGEpOworLSAgICAgICAgd2luZG93LT5oYW5kbGVGcmFtZUNhbGxiYWNrKCk7CisrICAgICAg ICB3aW5kb3ctPmhhbmRsZUZyYW1lQ2FsbGJhY2soY2FsbGJhY2spOworICAgICB9CisgfTsKKyAK Ky12b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVGcmFtZUNhbGxiYWNrKCkKKyt2b2lkIFFXYXls YW5kV2luZG93OjpoYW5kbGVGcmFtZUNhbGxiYWNrKHdsX2NhbGxiYWNrKiBjYWxsYmFjaykKKyB7 CisrICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrICAgIGlmICgh bUZyYW1lQ2FsbGJhY2spIHsKKysgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGNhbGxiYWNrIGlz IGFscmVhZHkgdW5zZXQgYnkgUVdheWxhbmRXaW5kb3c6OnJlc2V0LgorKyAgICAgICAgLy8gVGhl IHdsX2NhbGxiYWNrIG9iamVjdCB3aWxsIGJlIGRlc3Ryb3llZCB0aGVyZSB0b28uCisrICAgICAg ICByZXR1cm47CisrICAgIH0KKysgICAgUV9BU1NFUlQoY2FsbGJhY2sgPT0gbUZyYW1lQ2FsbGJh Y2spOworKyAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsKKysgICAgbUZyYW1lQ2Fs bGJhY2sgPSBudWxscHRyOworKworICAgICBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxz ZTsKKyAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworIAorICAg ICAvLyBUaGUgcmVzdCBjYW4gd2FpdCB1bnRpbCB3ZSBjYW4gcnVuIGl0IG9uIHRoZSBjb3JyZWN0 IHRocmVhZAorLSAgICBpZiAoIW1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkpIHsKKy0gICAgICAg IGF1dG8gZG9IYW5kbGVFeHBvc2UgPSBbdGhpc10oKSB7CistICAgICAgICAgICAgYm9vbCB3YXNF eHBvc2VkID0gaXNFeHBvc2VkKCk7CistICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2tUaW1lZE91 dCA9IGZhbHNlOworLSAgICAgICAgICAgIGlmICghd2FzRXhwb3NlZCAmJiBpc0V4cG9zZWQoKSkg Ly8gRGlkIHNldHRpbmcgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCBtYWtlIHRoZSB3aW5kb3cgZXhw b3NlZD8KKy0gICAgICAgICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KFFQb2ludCgpLCBn ZW9tZXRyeSgpLnNpemUoKSkpOworLSAgICAgICAgICAgIGlmICh3YXNFeHBvc2VkICYmIGhhc1Bl bmRpbmdVcGRhdGVSZXF1ZXN0KCkpCistICAgICAgICAgICAgICAgIGRlbGl2ZXJVcGRhdGVSZXF1 ZXN0KCk7CistCistICAgICAgICAgICAgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSA9IGZhbHNl OworLSAgICAgICAgfTsKKysgICAgYXV0byBkb0hhbmRsZUV4cG9zZSA9IFt0aGlzXSgpIHsKKysg ICAgICAgIG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkuc3RvcmVSZWxlYXNlKGZhbHNlKTsKKysg ICAgICAgIGJvb2wgd2FzRXhwb3NlZCA9IGlzRXhwb3NlZCgpOworKyAgICAgICAgbUZyYW1lQ2Fs bGJhY2tUaW1lZE91dCA9IGZhbHNlOworKyAgICAgICAgaWYgKCF3YXNFeHBvc2VkICYmIGlzRXhw b3NlZCgpKSAvLyBEaWQgc2V0dGluZyBtRnJhbWVDYWxsYmFja1RpbWVkT3V0IG1ha2UgdGhlIHdp bmRvdyBleHBvc2VkPworKyAgICAgICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdChRUG9pbnQo KSwgZ2VvbWV0cnkoKS5zaXplKCkpKTsKKysgICAgICAgIGlmICh3YXNFeHBvc2VkICYmIGhhc1Bl bmRpbmdVcGRhdGVSZXF1ZXN0KCkpCisrICAgICAgICAgICAgZGVsaXZlclVwZGF0ZVJlcXVlc3Qo KTsKKysgICAgfTsKKyAKKysgICAgaWYgKG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkudGVzdEFu ZFNldEFjcXVpcmUoZmFsc2UsIHRydWUpKSB7CisgICAgICAgICAvLyBRdWV1ZWQgY29ubmVjdGlv biwgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGNhbGwgaGFuZGxlVXBkYXRlKCkgZnJvbSBpbnNpZGUg d2FpdEZvckZyYW1lU3luYygpCisgICAgICAgICAvLyBpbiB0aGUgc2luZ2xlLXRocmVhZGVkIGNh c2UuCistICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gdHJ1ZTsKKyAgICAgICAg IFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgZG9IYW5kbGVFeHBvc2UsIFF0OjpRdWV1 ZWRDb25uZWN0aW9uKTsKKyAgICAgfQorKworKyAgICBtRnJhbWVTeW5jV2FpdC5ub3RpZnlfYWxs KCk7CisgfQorIAorIGJvb2wgUVdheWxhbmRXaW5kb3c6OndhaXRGb3JGcmFtZVN5bmMoaW50IHRp bWVvdXQpCisgeworLSAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKG1GcmFtZVF1ZXVlLm11dGV4KTsK Ky0gICAgbURpc3BsYXktPmRpc3BhdGNoUXVldWVXaGlsZShtRnJhbWVRdWV1ZS5xdWV1ZSwgWyZd KCkgeyByZXR1cm4gbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrOyB9LCB0aW1lb3V0KTsKKysgICAg UU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysKKysgICAgUURlYWRsaW5l VGltZXIgZGVhZGxpbmUodGltZW91dCk7CisrICAgIHdoaWxlIChtV2FpdGluZ0ZvckZyYW1lQ2Fs bGJhY2sgJiYgbUZyYW1lU3luY1dhaXQud2FpdCgmbUZyYW1lU3luY011dGV4LCBkZWFkbGluZSkp IHsgfQorIAorICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKSB7CisgICAgICAgICBx Q0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkgPDwgIkRpZG4ndCByZWNlaXZlIGZyYW1lIGNh bGxiYWNrIGluIHRpbWUsIHdpbmRvdyBzaG91bGQgbm93IGJlIGluZXhwb3NlZCI7CitAQCAtODY4 LDYgKzg3OCwxNyBAQCBib29sIFFXYXlsYW5kV2luZG93OjpjcmVhdGVEZWNvcmF0aW9uKCkKKyAg ICAgICAgICAgICBzdWJzdXJmLT5zZXRfcG9zaXRpb24ocG9zLngoKSArIG0ubGVmdCgpLCBwb3Mu eSgpICsgbS50b3AoKSk7CisgICAgICAgICB9CisgICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJl Y3QoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKSk7CisrCisrICAgICAgICAvLyBUaGlzIGlz IGEgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSBidWZmZXIgaXMgcmVjcmVhdGVkLCBidXQgc2luY2UK KysgICAgICAgIC8vIHRoZSBjb250ZW50IHJlY3QgcmVtYWlucyB0aGUgc2FtZSwgdGhlIHdpZGdl dHMgcmVtYWluIHRoZSBzYW1lCisrICAgICAgICAvLyBzaXplIGFuZCBhcmUgbm90IHJlZHJhd24s IGxlYXZpbmcgdGhlIG5ldyBidWZmZXIgZW1wdHkuIEFzIGEgc2ltcGxlCisrICAgICAgICAvLyB3 b3JrLWFyb3VuZCwgd2UgdHJpZ2dlciBhIGZ1bGwgZXh0cmEgdXBkYXRlIHdoZW5ldmVyIHRoZSBj bGllbnQtc2lkZQorKyAgICAgICAgLy8gd2luZG93IGRlY29yYXRpb25zIGFyZSB0b2dnbGVkIHdo aWxlIHRoZSB3aW5kb3cgaXMgc2hvd2luZy4KKysgICAgICAgIC8vIE5vdGU6IGNyZWF0ZURlY29y YXRpb24oKSBpcyBzb21ldGltZXMgY2FsbGVkIGZyb20gdGhlIHJlbmRlciB0aHJlYWQKKysgICAg ICAgIC8vIG9mIFF0IFF1aWNrLiBUaGlzIGlzIGVzc2VudGlhbGx5IHdyb25nIGFuZCBjb3VsZCBw b3RlbnRpYWxseSBjYXVzZSBwcm9ibGVtcywKKysgICAgICAgIC8vIGJ1dCB1bnRpbCB0aGUgdW5k ZXJseWluZyBpc3N1ZSBoYXMgYmVlbiBmaXhlZCwgd2UgaGF2ZSB0byB1c2UgaW52b2tlTWV0aG9k KCkKKysgICAgICAgIC8vIGhlcmUgdG8gYXZvaWQgYXNzZXJ0cy4KKysgICAgICAgIFFNZXRhT2Jq ZWN0OjppbnZva2VNZXRob2Qod2luZG93KCksICZRV2luZG93OjpyZXF1ZXN0VXBkYXRlKTsKKyAg ICAgfQorIAorICAgICByZXR1cm4gbVdpbmRvd0RlY29yYXRpb247CitAQCAtMTAyMyw2ICsxMDQ0 LDEzIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZVNjcmVlbnNDaGFuZ2VkKCkKKyAKKyAg ICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93U2NyZWVuQ2hhbmdlZCh3aW5k b3coKSwgbmV3U2NyZWVuLT5RUGxhdGZvcm1TY3JlZW46OnNjcmVlbigpKTsKKyAgICAgbUxhc3RS ZXBvcnRlZFNjcmVlbiA9IG5ld1NjcmVlbjsKKysgICAgaWYgKGZpeGVkVG9wbGV2ZWxQb3NpdGlv bnMgJiYgIVFQbGF0Zm9ybVdpbmRvdzo6cGFyZW50KCkgJiYgd2luZG93KCktPnR5cGUoKSAhPSBR dDo6UG9wdXAKKysgICAgICAgICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlRvb2xUaXAKKysg ICAgICAgICYmIGdlb21ldHJ5KCkudG9wTGVmdCgpICE9IG5ld1NjcmVlbi0+Z2VvbWV0cnkoKS50 b3BMZWZ0KCkpIHsKKysgICAgICAgIGF1dG8gZ2VvbWV0cnkgPSB0aGlzLT5nZW9tZXRyeSgpOwor KyAgICAgICAgZ2VvbWV0cnkubW92ZVRvKG5ld1NjcmVlbi0+Z2VvbWV0cnkoKS50b3BMZWZ0KCkp OworKyAgICAgICAgc2V0R2VvbWV0cnkoZ2VvbWV0cnkpOworKyAgICB9CisgCisgICAgIGludCBz Y2FsZSA9IG5ld1NjcmVlbi0+aXNQbGFjZWhvbGRlcigpID8gMSA6IHN0YXRpY19jYXN0PFFXYXls YW5kU2NyZWVuICo+KG5ld1NjcmVlbiktPnNjYWxlKCk7CisgICAgIGlmIChzY2FsZSAhPSBtU2Nh bGUpIHsKK0BAIC0xMDk0LDEwICsxMTIyLDE4IEBAIGJvb2wgUVdheWxhbmRXaW5kb3c6OnNldE1v dXNlR3JhYkVuYWJsZWQoYm9vbCBncmFiKQorICAgICByZXR1cm4gdHJ1ZTsKKyB9CisgCisrUXQ6 OldpbmRvd1N0YXRlcyBRV2F5bGFuZFdpbmRvdzo6d2luZG93U3RhdGVzKCkgY29uc3QKKyt7Cisr ICAgIHJldHVybiBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVzOworK30KKysKKyB2b2lkIFFXYXls YW5kV2luZG93OjpoYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKFF0OjpXaW5kb3dTdGF0ZXMgc3Rh dGVzKQorIHsKKyAgICAgY3JlYXRlRGVjb3JhdGlvbigpOworLSAgICBRV2luZG93U3lzdGVtSW50 ZXJmYWNlOjpoYW5kbGVXaW5kb3dTdGF0ZUNoYW5nZWQod2luZG93KCksIHN0YXRlcywgbUxhc3RS ZXBvcnRlZFdpbmRvd1N0YXRlcyk7CisrICAgIFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzV2l0aG91 dEFjdGl2ZSA9IHN0YXRlcyAmIH5RdDo6V2luZG93QWN0aXZlOworKyAgICBRdDo6V2luZG93U3Rh dGVzIGxhc3RTdGF0ZXNXaXRob3V0QWN0aXZlID0gbUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRlcyAm IH5RdDo6V2luZG93QWN0aXZlOworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVX aW5kb3dTdGF0ZUNoYW5nZWQod2luZG93KCksIHN0YXRlc1dpdGhvdXRBY3RpdmUsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0U3RhdGVz V2l0aG91dEFjdGl2ZSk7CisgICAgIG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXMgPSBzdGF0ZXM7 CisgfQorIAorQEAgLTExMzksMTkgKzExNzUsMjQgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6dGlt ZXJFdmVudChRVGltZXJFdmVudCAqZXZlbnQpCisgICAgIGlmIChldmVudC0+dGltZXJJZCgpICE9 IG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQpCisgICAgICAgICByZXR1cm47Cisg CistICAgIGJvb2wgY2FsbGJhY2tUaW1lckV4cGlyZWQgPSBtRnJhbWVDYWxsYmFja0VsYXBzZWRU aW1lci5oYXNFeHBpcmVkKG1GcmFtZUNhbGxiYWNrVGltZW91dCk7CistICAgIGlmICghbUZyYW1l Q2FsbGJhY2tFbGFwc2VkVGltZXIuaXNWYWxpZCgpIHx8IGNhbGxiYWNrVGltZXJFeHBpcmVkICkg eworLSAgICAgICAga2lsbFRpbWVyKG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQp OworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA9IC0xOworLSAg ICB9CistICAgIGlmIChtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pc1ZhbGlkKCkgJiYgY2Fs bGJhY2tUaW1lckV4cGlyZWQpIHsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVy LmludmFsaWRhdGUoKTsKKysgICAgeworKyAgICAgICAgUU11dGV4TG9ja2VyIGxvY2soJm1GcmFt ZVN5bmNNdXRleCk7CisgCistICAgICAgICBxQ0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkg PDwgIkRpZG4ndCByZWNlaXZlIGZyYW1lIGNhbGxiYWNrIGluIHRpbWUsIHdpbmRvdyBzaG91bGQg bm93IGJlIGluZXhwb3NlZCI7CistICAgICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gdHJ1 ZTsKKy0gICAgICAgIG1XYWl0aW5nRm9yVXBkYXRlID0gZmFsc2U7CistICAgICAgICBzZW5kRXhw b3NlRXZlbnQoUVJlY3QoKSk7CisrICAgICAgICBib29sIGNhbGxiYWNrVGltZXJFeHBpcmVkID0g bUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaGFzRXhwaXJlZChtRnJhbWVDYWxsYmFja1RpbWVv dXQpOworKyAgICAgICAgaWYgKCFtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pc1ZhbGlkKCkg fHwgY2FsbGJhY2tUaW1lckV4cGlyZWQgKSB7CisrICAgICAgICAgICAga2lsbFRpbWVyKG1GcmFt ZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQpOworKyAgICAgICAgICAgIG1GcmFtZUNhbGxi YWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQgPSAtMTsKKysgICAgICAgIH0KKysgICAgICAgIGlmICgh bUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaXNWYWxpZCgpIHx8ICFjYWxsYmFja1RpbWVyRXhw aXJlZCkgeworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAgICAgIG1GcmFt ZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKyAgICAgfQorKworKyAgICBxQ0Rl YnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkgPDwgIkRpZG4ndCByZWNlaXZlIGZyYW1lIGNhbGxi YWNrIGluIHRpbWUsIHdpbmRvdyBzaG91bGQgbm93IGJlIGluZXhwb3NlZCI7CisrICAgIG1GcmFt ZUNhbGxiYWNrVGltZWRPdXQgPSB0cnVlOworKyAgICBtV2FpdGluZ0ZvclVwZGF0ZSA9IGZhbHNl OworKyAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoKSk7CisgfQorIAorIHZvaWQgUVdheWxhbmRX aW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorQEAgLTExNjAsOCArMTIwMSwxMSBAQCB2b2lkIFFXYXls YW5kV2luZG93OjpyZXF1ZXN0VXBkYXRlKCkKKyAgICAgUV9BU1NFUlQoaGFzUGVuZGluZ1VwZGF0 ZVJlcXVlc3QoKSk7IC8vIHNob3VsZCBiZSBzZXQgYnkgUVBBCisgCisgICAgIC8vIElmIHdlIGhh dmUgYSBmcmFtZSBjYWxsYmFjayBhbGwgaXMgZ29vZCBhbmQgd2lsbCBiZSB0YWtlbiBjYXJlIG9m IHRoZXJlCistICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCistICAgICAgICByZXR1 cm47CisrICAgIHsKKysgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRl eCk7CisrICAgICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorKyAgICAgICAgICAg IHJldHVybjsKKysgICAgfQorIAorICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGNhbGxlZCBkZWxp dmVyVXBkYXRlUmVxdWVzdCgpLCBidXQgaGF2ZW4ndCBzZWVuIGFueSBhdHRhY2grY29tbWl0L3N3 YXAgeWV0CisgICAgIC8vIFRoaXMgaXMgYSBzb21ld2hhdCByZWR1bmRhbnQgYmVoYXZpb3IgYW5k IG1pZ2h0IGluZGljYXRlIGEgYnVnIGluIHRoZSBjYWxsaW5nIGNvZGUsIHNvIGxvZworQEAgLTEx NzQsNyArMTIxOCwxMiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0VXBkYXRlKCkKKyAg ICAgLy8gc28gdXNlIGludm9rZU1ldGhvZCB0byBkZWxheSB0aGUgZGVsaXZlcnkgYSBiaXQuCisg ICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgW3RoaXNdIHsKKyAgICAgICAgIC8v IFRoaW5ncyBtaWdodCBoYXZlIGNoYW5nZWQgaW4gdGhlIG1lYW50aW1lCistICAgICAgICBpZiAo aGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSAmJiAhbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQor KyAgICAgICAgeworKyAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNN dXRleCk7CisrICAgICAgICAgICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKysgICAg ICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKGhhc1BlbmRpbmdV cGRhdGVSZXF1ZXN0KCkpCisgICAgICAgICAgICAgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKTsKKyAg ICAgfSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworIH0KK0BAIC0xMTg1LDE5ICsxMjM0LDE4IEBA IHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorIHZvaWQgUVdheWxhbmRXaW5k b3c6OmhhbmRsZVVwZGF0ZSgpCisgeworICAgICBxQ0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9y ZSkgPDwgImhhbmRsZVVwZGF0ZSIgPDwgUVRocmVhZDo6Y3VycmVudFRocmVhZCgpOworKworICAg ICAvLyBUT0RPOiBTaG91bGQgc3luYyBzdWJzdXJmYWNlcyBhdm9pZCByZXF1ZXN0aW5nIGZyYW1l IGNhbGxiYWNrcz8KKyAgICAgUVJlYWRMb2NrZXIgbG9jaygmbVN1cmZhY2VMb2NrKTsKKyAgICAg aWYgKCFtU3VyZmFjZSkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKG1GcmFtZUNhbGxi YWNrKSB7CistICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KG1GcmFtZUNhbGxiYWNrKTsKKy0g ICAgICAgIG1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKy0gICAgfQorKyAgICBRTXV0ZXhMb2Nr ZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNh bGxiYWNrKQorKyAgICAgICAgcmV0dXJuOworIAorLSAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKG1G cmFtZVF1ZXVlLm11dGV4KTsKKyAgICAgc3RydWN0IDo6d2xfc3VyZmFjZSAqd3JhcHBlZFN1cmZh Y2UgPSByZWludGVycHJldF9jYXN0PHN0cnVjdCA6OndsX3N1cmZhY2UgKj4od2xfcHJveHlfY3Jl YXRlX3dyYXBwZXIobVN1cmZhY2UtPm9iamVjdCgpKSk7CistICAgIHdsX3Byb3h5X3NldF9xdWV1 ZShyZWludGVycHJldF9jYXN0PHdsX3Byb3h5ICo+KHdyYXBwZWRTdXJmYWNlKSwgbUZyYW1lUXVl dWUucXVldWUpOworKyAgICB3bF9wcm94eV9zZXRfcXVldWUocmVpbnRlcnByZXRfY2FzdDx3bF9w cm94eSAqPih3cmFwcGVkU3VyZmFjZSksIG1EaXNwbGF5LT5mcmFtZUV2ZW50UXVldWUoKSk7Cisg ICAgIG1GcmFtZUNhbGxiYWNrID0gd2xfc3VyZmFjZV9mcmFtZSh3cmFwcGVkU3VyZmFjZSk7Cisg ICAgIHdsX3Byb3h5X3dyYXBwZXJfZGVzdHJveSh3cmFwcGVkU3VyZmFjZSk7CisgICAgIHdsX2Nh bGxiYWNrX2FkZF9saXN0ZW5lcihtRnJhbWVDYWxsYmFjaywgJlFXYXlsYW5kV2luZG93OjpjYWxs YmFja0xpc3RlbmVyLCB0aGlzKTsKK0BAIC0xMjA3LDYgKzEyNTUsOCBAQCB2b2lkIFFXYXlsYW5k V2luZG93OjpoYW5kbGVVcGRhdGUoKQorICAgICAvLyBTdGFydCBhIHRpbWVyIGZvciBoYW5kbGlu ZyB0aGUgY2FzZSB3aGVuIHRoZSBjb21wb3NpdG9yIHN0b3BzIHNlbmRpbmcgZnJhbWUgY2FsbGJh Y2tzLgorICAgICBpZiAobUZyYW1lQ2FsbGJhY2tUaW1lb3V0ID4gMCkgeworICAgICAgICAgUU1l dGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBbdGhpc10geworKyAgICAgICAgICAgIFFNdXRl eExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrCisgICAgICAgICAgICAgaWYgKG1X YWl0aW5nRm9yRnJhbWVDYWxsYmFjaykgeworICAgICAgICAgICAgICAgICBpZiAobUZyYW1lQ2Fs bGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA8IDApCisgICAgICAgICAgICAgICAgICAgICBtRnJh bWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gc3RhcnRUaW1lcihtRnJhbWVDYWxsYmFj a1RpbWVvdXQpOworQEAgLTEyNjcsNiArMTMxNywyMCBAQCB2b2lkIFFXYXlsYW5kV2luZG93Ojpz ZXRPcGFxdWVBcmVhKGNvbnN0IFFSZWdpb24gJm9wYXF1ZUFyZWEpCisgICAgIHdsX3JlZ2lvbl9k ZXN0cm95KHJlZ2lvbik7CisgfQorIAorK3ZvaWQgUVdheWxhbmRXaW5kb3c6OmFkZENoaWxkUG9w dXAoUVdheWxhbmRXaW5kb3cgKnN1cmZhY2UpIHsKKysgICAgbUNoaWxkUG9wdXBzLmFwcGVuZChz dXJmYWNlKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVtb3ZlQ2hpbGRQb3B1cChR V2F5bGFuZFdpbmRvdyAqc3VyZmFjZSkgeworKyAgICBtQ2hpbGRQb3B1cHMucmVtb3ZlQWxsKHN1 cmZhY2UpOworK30KKysKKyt2b2lkIFFXYXlsYW5kV2luZG93OjpjbG9zZUNoaWxkUG9wdXBzKCkg eworKyAgICB3aGlsZSAoIW1DaGlsZFBvcHVwcy5pc0VtcHR5KCkpIHsKKysgICAgICAgIGF1dG8g cG9wdXAgPSBtQ2hpbGRQb3B1cHMudGFrZUxhc3QoKTsKKysgICAgICAgIHBvcHVwLT5yZXNldCgp OworKyAgICB9CisrfQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3dfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmR3aW5kb3dfcC5oCitpbmRleCAwMTMzN2NmZi4uMmYyMTlkOGMgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvd19wLmgKKysrKyBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3AuaAorQEAgLTk4LDYgKzk4LDkgQEAgcHVi bGljOgorICAgICBRV2F5bGFuZFdpbmRvdyhRV2luZG93ICp3aW5kb3csIFFXYXlsYW5kRGlzcGxh eSAqZGlzcGxheSk7CisgICAgIH5RV2F5bGFuZFdpbmRvdygpIG92ZXJyaWRlOworIAorKyAgICAv LyBLZWVwIFRvcGxldmVscyBwb3NpdGlvbiBvbiB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZWly IHNjcmVlbgorKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgZml4ZWRUb3BsZXZlbFBvc2l0aW9ucyA9 IHRydWU7CisrCisgICAgIHZpcnR1YWwgV2luZG93VHlwZSB3aW5kb3dUeXBlKCkgY29uc3QgPSAw OworICAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlU2l6ZSgpOworICAgICBXSWQgd2luSWQoKSBjb25z dCBvdmVycmlkZTsKK0BAIC0xNDgsNiArMTUxLDcgQEAgcHVibGljOgorICAgICB2b2lkIHNldFdp bmRvd1N0YXRlKFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzKSBvdmVycmlkZTsKKyAgICAgdm9pZCBz ZXRXaW5kb3dGbGFncyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpIG92ZXJyaWRlOworICAgICB2b2lk IGhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQoUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXMpOworKyAg ICBRdDo6V2luZG93U3RhdGVzIHdpbmRvd1N0YXRlcygpIGNvbnN0OworIAorICAgICB2b2lkIHJh aXNlKCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgbG93ZXIoKSBvdmVycmlkZTsKK0BAIC0yMDYsNiAr MjEwLDEwIEBAIHB1YmxpYzoKKyAgICAgdm9pZCBoYW5kbGVVcGRhdGUoKTsKKyAgICAgdm9pZCBk ZWxpdmVyVXBkYXRlUmVxdWVzdCgpIG92ZXJyaWRlOworIAorKyAgICB2b2lkIGFkZENoaWxkUG9w dXAoUVdheWxhbmRXaW5kb3cqIGNoaWxkKTsKKysgICAgdm9pZCByZW1vdmVDaGlsZFBvcHVwKFFX YXlsYW5kV2luZG93KiBjaGlsZCk7CisrICAgIHZvaWQgY2xvc2VDaGlsZFBvcHVwcygpOworKwor IHB1YmxpYyBzbG90czoKKyAgICAgdm9pZCBhcHBseUNvbmZpZ3VyZSgpOworIAorQEAgLTIxNSw3 ICsyMjMsMTEgQEAgc2lnbmFsczoKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIFFXYXlsYW5kRGlzcGxh eSAqbURpc3BsYXkgPSBudWxscHRyOworKworKyAgICAvLyBtU3VyZmFjZSBjYW4gYmUgd3JpdHRl biBieSB0aGUgbWFpbiB0aHJlYWQuIE90aGVyIHRocmVhZHMgc2hvdWxkIGNsYWltIGEgcmVhZCBs b2NrIGZvciBhY2Nlc3MKKysgICAgbXV0YWJsZSBRUmVhZFdyaXRlTG9jayBtU3VyZmFjZUxvY2s7 CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kU3VyZmFjZT4gbVN1cmZhY2U7CisrCisgICAg IFFXYXlsYW5kU2hlbGxTdXJmYWNlICptU2hlbGxTdXJmYWNlID0gbnVsbHB0cjsKKyAgICAgUVdh eWxhbmRTdWJTdXJmYWNlICptU3ViU3VyZmFjZVdpbmRvdyA9IG51bGxwdHI7CisgICAgIFFWZWN0 b3I8UVdheWxhbmRTdWJTdXJmYWNlICo+IG1DaGlsZHJlbjsKK0BAIC0yMjUsMTMgKzIzNywxNCBA QCBwcm90ZWN0ZWQ6CisgICAgIFF0OjpNb3VzZUJ1dHRvbnMgbU1vdXNlUHJlc3NlZEluQ29udGVu dEFyZWEgPSBRdDo6Tm9CdXR0b247CisgCisgICAgIFdJZCBtV2luZG93SWQ7CistICAgIGJvb2wg bVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisgICAgIGJvb2wgbUZyYW1lQ2FsbGJh Y2tUaW1lZE91dCA9IGZhbHNlOyAvLyBXaGV0aGVyIHRoZSBmcmFtZSBjYWxsYmFjayBoYXMgdGlt ZWQgb3V0CistICAgIGJvb2wgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSA9IGZhbHNlOworICAg ICBpbnQgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA9IC0xOworLSAgICBRRWxh cHNlZFRpbWVyIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyOworLSAgICBzdHJ1Y3QgOjp3bF9j YWxsYmFjayAqbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworLSAgICBRV2F5bGFuZERpc3BsYXk6 OkZyYW1lUXVldWUgbUZyYW1lUXVldWU7CisrICAgIFFBdG9taWNJbnQgbVdhaXRpbmdGb3JVcGRh dGVEZWxpdmVyeSA9IGZhbHNlOworKworKyAgICBib29sIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFj ayA9IGZhbHNlOyAvLyBQcm90ZWN0ZWQgYnkgbUZyYW1lU3luY011dGV4CisrICAgIFFFbGFwc2Vk VGltZXIgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXI7IC8vIFByb3RlY3RlZCBieSBtRnJhbWVT eW5jTXV0ZXgKKysgICAgc3RydWN0IDo6d2xfY2FsbGJhY2sgKm1GcmFtZUNhbGxiYWNrID0gbnVs bHB0cjsgLy8gUHJvdGVjdGVkIGJ5IG1GcmFtZVN5bmNNdXRleAorKyAgICBRTXV0ZXggbUZyYW1l U3luY011dGV4OworICAgICBRV2FpdENvbmRpdGlvbiBtRnJhbWVTeW5jV2FpdDsKKyAKKyAgICAg Ly8gVHJ1ZSB3aGVuIHdlIGhhdmUgY2FsbGVkIGRlbGl2ZXJSZXF1ZXN0VXBkYXRlLCBidXQgdGhl IGNsaWVudCBoYXMgbm90IHlldCBhdHRhY2hlZCBhIG5ldyBidWZmZXIKK0BAIC0yNjEsNiArMjc0 LDggQEAgcHJvdGVjdGVkOgorICAgICBRV2F5bGFuZEJ1ZmZlciAqbVF1ZXVlZEJ1ZmZlciA9IG51 bGxwdHI7CisgICAgIFFSZWdpb24gbVF1ZXVlZEJ1ZmZlckRhbWFnZTsKKyAKKysgICAgUUxpc3Q8 UVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+PiBtQ2hpbGRQb3B1cHM7CisrCisgcHJpdmF0ZToKKyAg ICAgdm9pZCBzZXRHZW9tZXRyeV9oZWxwZXIoY29uc3QgUVJlY3QgJnJlY3QpOworICAgICB2b2lk IGluaXRXaW5kb3coKTsKK0BAIC0yODMsMTIgKzI5OCwxMCBAQCBwcml2YXRlOgorICAgICBRUmVj dCBtTGFzdEV4cG9zZUdlb21ldHJ5OworIAorICAgICBzdGF0aWMgY29uc3Qgd2xfY2FsbGJhY2tf bGlzdGVuZXIgY2FsbGJhY2tMaXN0ZW5lcjsKKy0gICAgdm9pZCBoYW5kbGVGcmFtZUNhbGxiYWNr KCk7CisrICAgIHZvaWQgaGFuZGxlRnJhbWVDYWxsYmFjayhzdHJ1Y3QgOjp3bF9jYWxsYmFjayog Y2FsbGJhY2spOworIAorICAgICBzdGF0aWMgUVdheWxhbmRXaW5kb3cgKm1Nb3VzZUdyYWI7Cisg CistICAgIG11dGFibGUgUVJlYWRXcml0ZUxvY2sgbVN1cmZhY2VMb2NrOworLQorICAgICBmcmll bmQgY2xhc3MgUVdheWxhbmRTdWJTdXJmYWNlOworIH07CisgCitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNoZWxsaW50ZWdyYXRpb25f cC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNoZWxs aW50ZWdyYXRpb25fcC5oCitpbmRleCBjY2FkMDA0OC4uNGNjOWIzYjggMTAwNjQ0CistLS0gYS9x dHdheWxhbmQvc3JjL2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3Jh dGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50ZWdyYXRpb24vcXdh eWxhbmRzaGVsbGludGVncmF0aW9uX3AuaAorQEAgLTczLDExICs3MywxMCBAQCBwdWJsaWM6Cisg ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgfQorICAgICB2aXJ0dWFsIFFXYXlsYW5kU2hlbGxT dXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRvdykgPSAwOwor KyAgICAvLyBrZXB0IGZvciBiaW5hcnkgY29tcGF0IHdpdGggbGF5ZXItc2hlbGwtcXQKKyAgICAg dmlydHVhbCB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpu ZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSB7CistICAgICAgICBpZiAobmV3Rm9j dXMpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9j dXMpOworLSAgICAgICAgaWYgKG9sZEZvY3VzKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFu ZGxlV2luZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworKyAgICAgICAgUV9VTlVTRUQobmV3Rm9j dXMpOworKyAgICAgICAgUV9VTlVTRUQob2xkRm9jdXMpOworICAgICB9CisgICAgIHZpcnR1YWwg dm9pZCAqbmF0aXZlUmVzb3VyY2VGb3JXaW5kb3coY29uc3QgUUJ5dGVBcnJheSAmcmVzb3VyY2Us IFFXaW5kb3cgKndpbmRvdykgeworICAgICAgICAgUV9VTlVTRUQocmVzb3VyY2UpOworZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbiBiL3F0d2F5bGFu ZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbgoraW5kZXggYmNmZDUyMTUuLmRhOTVkMDdi IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jb21wb3NpdG9yL2NvbmZpZ3VyZS5qc29uCisr KysgYi9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpzb24KK0BAIC03LDYgKzcs MzEgQEAKKyAgICAgInRlc3REaXIiOiAiLi4vLi4vY29uZmlnLnRlc3RzIiwKKyAKKyAgICAgImxp YnJhcmllcyI6IHsKKysgICAgICAgICJ3YXlsYW5kLWNsaWVudCI6IHsKKysgICAgICAgICAgICAi bGFiZWwiOiAiV2F5bGFuZCBjbGllbnQgbGlicmFyeSIsCisrICAgICAgICAgICAgImhlYWRlcnMi OiAid2F5bGFuZC12ZXJzaW9uLmgiLAorKyAgICAgICAgICAgICJ0ZXN0IjogeworKyAgICAgICAg ICAgICAgICAibWFpbiI6IFsKKysgICAgICAgICAgICAgICAgICAgICIjaWYgV0FZTEFORF9WRVJT SU9OX01BSk9SIDwgMSIsCisrICAgICAgICAgICAgICAgICAgICAiIyBlcnJvciBXYXlsYW5kIDEu OC4wIG9yIGhpZ2hlciByZXF1aXJlZCIsCisrICAgICAgICAgICAgICAgICAgICAiI2VuZGlmIiwK KysgICAgICAgICAgICAgICAgICAgICIjaWYgV0FZTEFORF9WRVJTSU9OX01BSk9SID09IDEiLAor KyAgICAgICAgICAgICAgICAgICAgIiMgaWYgV0FZTEFORF9WRVJTSU9OX01JTk9SIDwgOCIsCisr ICAgICAgICAgICAgICAgICAgICAiIyAgZXJyb3IgV2F5bGFuZCAxLjguMCBvciBoaWdoZXIgcmVx dWlyZWQiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgZW5kaWYiLAorKyAgICAgICAgICAgICAg ICAgICAgIiMgaWYgV0FZTEFORF9WRVJTSU9OX01JTk9SID09IDgiLAorKyAgICAgICAgICAgICAg ICAgICAgIiMgIGlmIFdBWUxBTkRfVkVSU0lPTl9NSUNSTyA8IDAiLAorKyAgICAgICAgICAgICAg ICAgICAgIiMgICBlcnJvciBXYXlsYW5kIDEuOC4wIG9yIGhpZ2hlciByZXF1aXJlZCIsCisrICAg ICAgICAgICAgICAgICAgICAiIyAgZW5kaWYiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgZW5k aWYiLAorKyAgICAgICAgICAgICAgICAgICAgIiNlbmRpZiIKKysgICAgICAgICAgICAgICAgIF0K KysgICAgICAgICAgICB9LAorKyAgICAgICAgICAgICJzb3VyY2VzIjogWworKyAgICAgICAgICAg ICAgICB7ICJ0eXBlIjogInBrZ0NvbmZpZyIsICJhcmdzIjogIndheWxhbmQtY2xpZW50IiB9LAor KyAgICAgICAgICAgICAgICAiLWx3YXlsYW5kLWNsaWVudCIKKysgICAgICAgICAgICBdCisrICAg ICAgICB9LAorICAgICAgICAgIndheWxhbmQtc2VydmVyIjogeworICAgICAgICAgICAgICJsYWJl bCI6ICJ3YXlsYW5kLXNlcnZlciIsCisgICAgICAgICAgICAgImhlYWRlcnMiOiAid2F5bGFuZC12 ZXJzaW9uLmgiLAorQEAgLTE1MSw4ICsxNzYsNyBAQAorICAgICAgICAgICAgICAgICAgICAgIiNl bmRpZiIKKyAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAgICAg ImxpYnMiOiAiLWxkcm0iLAorLSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAgICAg ICJ1c2UiOiAiZHJtIGVnbCIKKyAgICAgICAgIH0sCisgICAgICAgICAiZG1hYnVmLWNsaWVudC1i dWZmZXIiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIkxpbnV4IENsaWVudCBkbWEtYnVmIEJ1 ZmZlciBTaGFyaW5nIiwKK0BAIC0xNzYsOCArMjAwLDcgQEAKKyAgICAgICAgICAgICAgICAgICAg ICJyZXR1cm4gMDsiCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9LAorLSAgICAg ICAgICAgICJsaWJzIjogIi1sZHJtIiwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIKKysgICAg ICAgICAgICAidXNlIjogImRybSBlZ2wiCisgICAgICAgICB9LAorICAgICAgICAgInZ1bGthbi1z ZXJ2ZXItYnVmZmVyIjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJWdWxrYW4gQnVmZmVyIFNo YXJpbmciLAorQEAgLTE5NSw3ICsyMTgsOCBAQAorICAgICAgICAgICAgICAgICAgICAgImV4cG9y dEFsbG9jSW5mby5oYW5kbGVUeXBlcyA9IFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQRV9P UEFRVUVfRkRfQklUX0tIUjsiLAorICAgICAgICAgICAgICAgICAgICAgInJldHVybiAwOyIKKyAg ICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9LAorKyAgICAg ICAgICAgICJ1c2UiOiAid2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9CisgICAgIH0sCisgCitk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXls YW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5jcHAgYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50 ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcAoraW5kZXgg Nzg4OWY1NzUuLjY0MTQwNjcyIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWlu dGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5jcHAKKysrKyBi L3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdh eWxhbmRlZ2x3aW5kb3cuY3BwCitAQCAtNDAsNiArNDAsNyBAQAorICNpbmNsdWRlICJxd2F5bGFu ZGVnbHdpbmRvdy5oIgorIAorICNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJpdmF0ZS9xd2F5 bGFuZHNjcmVlbl9wLmg+CisrI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3F3YXls YW5kc3VyZmFjZV9wLmg+CisgI2luY2x1ZGUgInF3YXlsYW5kZ2xjb250ZXh0LmgiCisgCisgI2lu Y2x1ZGUgPFF0RWdsU3VwcG9ydC9wcml2YXRlL3FlZ2xjb252ZW5pZW5jZV9wLmg+CitAQCAtMTI0 LDYgKzEyNSw3IEBAIHZvaWQgUVdheWxhbmRFZ2xXaW5kb3c6OnVwZGF0ZVN1cmZhY2UoYm9vbCBj cmVhdGUpCisgICAgICAgICB9CisgICAgICAgICBtT2Zmc2V0ID0gUVBvaW50KCk7CisgICAgIH0g ZWxzZSB7CisrICAgICAgICBRUmVhZExvY2tlciBsb2NrZXIoJm1TdXJmYWNlTG9jayk7CisgICAg ICAgICBpZiAobV93YXlsYW5kRWdsV2luZG93KSB7CisgICAgICAgICAgICAgaW50IGN1cnJlbnRf d2lkdGgsIGN1cnJlbnRfaGVpZ2h0OworICAgICAgICAgICAgIHN0YXRpYyBib29sIGRpc2FibGVS ZXNpemVDaGVjayA9IHFnZXRlbnYoIlFUX1dBWUxBTkRfRElTQUJMRV9SRVNJWkVDSEVDSyIpLnRv SW50KCk7CitAQCAtMTMxLDE0ICsxMzMsMTYgQEAgdm9pZCBRV2F5bGFuZEVnbFdpbmRvdzo6dXBk YXRlU3VyZmFjZShib29sIGNyZWF0ZSkKKyAgICAgICAgICAgICBpZiAoIWRpc2FibGVSZXNpemVD aGVjaykgeworICAgICAgICAgICAgICAgICB3bF9lZ2xfd2luZG93X2dldF9hdHRhY2hlZF9zaXpl KG1fd2F5bGFuZEVnbFdpbmRvdywgJmN1cnJlbnRfd2lkdGgsICZjdXJyZW50X2hlaWdodCk7Cisg ICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlmIChkaXNhYmxlUmVzaXplQ2hlY2sgfHwgKGN1 cnJlbnRfd2lkdGggIT0gc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCkgfHwgY3VycmVudF9oZWlnaHQg IT0gc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKSkgeworKyAgICAgICAgICAgIGlmIChkaXNhYmxl UmVzaXplQ2hlY2sgfHwgKGN1cnJlbnRfd2lkdGggIT0gc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCkg fHwgY3VycmVudF9oZWlnaHQgIT0gc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKSB8fCBtX3JlcXVl c3RlZFNpemUgIT0gc2l6ZVdpdGhNYXJnaW5zKSB7CisgICAgICAgICAgICAgICAgIHdsX2VnbF93 aW5kb3dfcmVzaXplKG1fd2F5bGFuZEVnbFdpbmRvdywgc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCks IHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSwgbU9mZnNldC54KCksIG1PZmZzZXQueSgpKTsKKysg ICAgICAgICAgICAgICAgbV9yZXF1ZXN0ZWRTaXplID0gc2l6ZVdpdGhNYXJnaW5zOworICAgICAg ICAgICAgICAgICBtT2Zmc2V0ID0gUVBvaW50KCk7CisgCisgICAgICAgICAgICAgICAgIG1fcmVz aXplID0gdHJ1ZTsKKyAgICAgICAgICAgICB9CistICAgICAgICB9IGVsc2UgaWYgKGNyZWF0ZSAm JiB3bFN1cmZhY2UoKSkgeworLSAgICAgICAgICAgIG1fd2F5bGFuZEVnbFdpbmRvdyA9IHdsX2Vn bF93aW5kb3dfY3JlYXRlKHdsU3VyZmFjZSgpLCBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSwgc2l6 ZVdpdGhNYXJnaW5zLmhlaWdodCgpKTsKKysgICAgICAgIH0gZWxzZSBpZiAoY3JlYXRlICYmIG1T dXJmYWNlKSB7CisrICAgICAgICAgICAgbV93YXlsYW5kRWdsV2luZG93ID0gd2xfZWdsX3dpbmRv d19jcmVhdGUobVN1cmZhY2UtPm9iamVjdCgpLCBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSwgc2l6 ZVdpdGhNYXJnaW5zLmhlaWdodCgpKTsKKysgICAgICAgICAgICBtX3JlcXVlc3RlZFNpemUgPSBz aXplV2l0aE1hcmdpbnM7CisgICAgICAgICB9CisgCisgICAgICAgICBpZiAoIW1fZWdsU3VyZmFj ZSAmJiBtX3dheWxhbmRFZ2xXaW5kb3cgJiYgY3JlYXRlKSB7CitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVn bHdpbmRvdy5oIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXls YW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oCitpbmRleCA1YjFmNGQ1Ni4uMDA3OWRmZWYgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxh bmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVp bnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuaAorQEAgLTg4 LDYgKzg4LDcgQEAgcHJpdmF0ZToKKyAgICAgbXV0YWJsZSBRT3BlbkdMRnJhbWVidWZmZXJPYmpl Y3QgKm1fY29udGVudEZCTyA9IG51bGxwdHI7CisgCisgICAgIFFTdXJmYWNlRm9ybWF0IG1fZm9y bWF0OworKyAgICBRU2l6ZSBtX3JlcXVlc3RlZFNpemU7CisgfTsKKyAKKyB9CitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGludXgtZG1h YnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmggYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50 ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGludXhkbWFidWYu aAoraW5kZXggNTZhNzEwYzMuLmM2YThiNmM2IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9o YXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGludXgtZG1hYnVmLXVuc3RhYmxlLXYxL2xp bnV4ZG1hYnVmLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jb21w b3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5oCitAQCAtNDEsNiAr NDEsOCBAQAorICNpbmNsdWRlIDxRdENvcmUvUVRleHRTdHJlYW0+CisgI2luY2x1ZGUgPFF0R3Vp L1FPcGVuR0xUZXh0dXJlPgorIAorKyNpbmNsdWRlIDxhcnJheT4KKysKKyAjaW5jbHVkZSA8RUdM L2VnbC5oPgorICNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisgCitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwIGIvcXR3YXlsYW5k L3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwCitpbmRleCBlNzVmZGEz Yy4uZmE4ODUxNDMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvZGVjb3JhdGlv bnMvYnJhZGllbnQvbWFpbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0 aW9ucy9icmFkaWVudC9tYWluLmNwcAorQEAgLTE2NCwxMyArMTY0LDEwIEBAIHZvaWQgUVdheWxh bmRCcmFkaWVudERlY29yYXRpb246OnBhaW50KFFQYWludERldmljZSAqZGV2aWNlKQorICAgICAv LyBXaW5kb3cgaWNvbgorICAgICBRSWNvbiBpY29uID0gd2F5bGFuZFdpbmRvdygpLT53aW5kb3dJ Y29uKCk7CisgICAgIGlmICghaWNvbi5pc051bGwoKSkgeworLSAgICAgICAgUVBpeG1hcCBwaXht YXAgPSBpY29uLnBpeG1hcChRU2l6ZSgxMjgsIDEyOCkpOworLSAgICAgICAgUVBpeG1hcCBzY2Fs ZWQgPSBwaXhtYXAuc2NhbGVkKDIyLCAyMiwgUXQ6Oklnbm9yZUFzcGVjdFJhdGlvLCBRdDo6U21v b3RoVHJhbnNmb3JtYXRpb24pOworLQorICAgICAgICAgUVJlY3RGIGljb25SZWN0KDAsIDAsIDIy LCAyMik7CistICAgICAgICBwLmRyYXdQaXhtYXAoaWNvblJlY3QuYWRqdXN0ZWQobWFyZ2lucygp LmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lORywgNCksCistICAg ICAgICAgICAgICAgICAgICAgc2NhbGVkLCBpY29uUmVjdCk7CisrICAgICAgICBpY29uUmVjdC5h ZGp1c3QobWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0LAorKyAgICAgICAgICAg ICAgICAgICAgICAgIG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lORywgNCksCisrICAg ICAgICBpY29uLnBhaW50KCZwLCBpY29uUmVjdC50b1JlY3QoKSk7CisgICAgIH0KKyAKKyAgICAg Ly8gV2luZG93IHRpdGxlCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NS5jcHAgYi9xdHdheWxh bmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdw b3B1cHY1LmNwcAoraW5kZXggODVkMjVlM2MuLjYwYmRkNDkxIDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRn cG9wdXB2NS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3BwCitAQCAtNDcsMTggKzQ3LDIxIEBA IFFUX0JFR0lOX05BTUVTUEFDRQorIAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQgeworIAor LVFXYXlsYW5kWGRnUG9wdXBWNTo6UVdheWxhbmRYZGdQb3B1cFY1KHN0cnVjdCA6OnhkZ19wb3B1 cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93ICp3aW5kb3cpCisrUVdheWxhbmRYZGdQb3B1cFY1 OjpRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpwb3B1cCwgUVdheWxh bmRXaW5kb3cqIHBhcmVudCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdykKKyAgICAgOiBRV2F5bGFu ZFNoZWxsU3VyZmFjZSh3aW5kb3cpCisgICAgICwgUXRXYXlsYW5kOjp4ZGdfcG9wdXBfdjUocG9w dXApCisrICAgICwgbV9wYXJlbnQocGFyZW50KQorICAgICAsIG1fd2luZG93KHdpbmRvdykKKyB7 CisgICAgIGlmICh3aW5kb3ctPmRpc3BsYXkoKS0+d2luZG93RXh0ZW5zaW9uKCkpCisgICAgICAg ICBtX2V4dGVuZGVkV2luZG93ID0gbmV3IFFXYXlsYW5kRXh0ZW5kZWRTdXJmYWNlKHdpbmRvdyk7 CisrICAgIG1fcGFyZW50LT5hZGRDaGlsZFBvcHVwKG1fd2luZG93KTsKKyB9CisgCisgUVdheWxh bmRYZGdQb3B1cFY1Ojp+UVdheWxhbmRYZGdQb3B1cFY1KCkKKyB7CisgICAgIHhkZ19wb3B1cF9k ZXN0cm95KG9iamVjdCgpKTsKKysgICAgbV9wYXJlbnQtPnJlbW92ZUNoaWxkUG9wdXAobV93aW5k b3cpOworICAgICBkZWxldGUgbV9leHRlbmRlZFdpbmRvdzsKKyB9CisgCitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXls YW5keGRncG9wdXB2NV9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaAoraW5kZXggNzQ5NGY2YTYuLmQ4 NWYxMzBiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NV9wLmgKKysrKyBiL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVw djVfcC5oCitAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBR V2F5bGFuZFhkZ1BvcHVwVjUgOiBwdWJsaWMgUVdheWxhbmRTaGVsbFN1cmZhY2UKKyB7CisgICAg IFFfT0JKRUNUCisgcHVibGljOgorLSAgICBRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRn X3BvcHVwX3Y1ICpwb3B1cCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdyk7CisrICAgIFFXYXlsYW5k WGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFuZFdpbmRvdyog cGFyZW50LCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KTsKKyAgICAgflFXYXlsYW5kWGRnUG9wdXBW NSgpIG92ZXJyaWRlOworIAorIHByb3RlY3RlZDoKK0BAIC03OCw2ICs3OCw3IEBAIHByb3RlY3Rl ZDoKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFuZEV4dGVuZGVkU3VyZmFjZSAqbV9leHRlbmRl ZFdpbmRvdyA9IG51bGxwdHI7CisrICAgIFFXYXlsYW5kV2luZG93ICptX3BhcmVudCA9IG51bGxw dHI7CisgICAgIFFXYXlsYW5kV2luZG93ICptX3dpbmRvdyA9IG51bGxwdHI7CisgfTsKKyAKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1LmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwCitpbmRleCA3 ZTI0MmM0YS4uZGVmODQ1MmEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hl bGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1LmNwcAorKysrIGIv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXls YW5keGRnc2hlbGx2NS5jcHAKK0BAIC04NCw3ICs4NCw3IEBAIFFXYXlsYW5kWGRnUG9wdXBWNSAq UVdheWxhbmRYZGdTaGVsbFY1OjpjcmVhdGVYZGdQb3B1cChRV2F5bGFuZFdpbmRvdyAqd2luZG93 LCBRCisgICAgIGludCB4ID0gcG9zaXRpb24ueCgpICsgcGFyZW50V2luZG93LT5mcmFtZU1hcmdp bnMoKS5sZWZ0KCk7CisgICAgIGludCB5ID0gcG9zaXRpb24ueSgpICsgcGFyZW50V2luZG93LT5m cmFtZU1hcmdpbnMoKS50b3AoKTsKKyAKKy0gICAgYXV0byBwb3B1cCA9IG5ldyBRV2F5bGFuZFhk Z1BvcHVwVjUoZ2V0X3hkZ19wb3B1cCh3aW5kb3ctPndsU3VyZmFjZSgpLCBwYXJlbnRTdXJmYWNl LCBzZWF0LCBtX3BvcHVwU2VyaWFsLCB4LCB5KSwgd2luZG93KTsKKysgICAgYXV0byBwb3B1cCA9 IG5ldyBRV2F5bGFuZFhkZ1BvcHVwVjUoZ2V0X3hkZ19wb3B1cCh3aW5kb3ctPndsU3VyZmFjZSgp LCBwYXJlbnRTdXJmYWNlLCBzZWF0LCBtX3BvcHVwU2VyaWFsLCB4LCB5KSwgcGFyZW50V2luZG93 LCB3aW5kb3cpOworICAgICBtX3BvcHVwcy5hcHBlbmQod2luZG93KTsKKyAgICAgUU9iamVjdDo6 Y29ubmVjdChwb3B1cCwgJlFXYXlsYW5kWGRnUG9wdXBWNTo6ZGVzdHJveWVkLCBbdGhpcywgd2lu ZG93XSgpeworICAgICAgICAgbV9wb3B1cHMucmVtb3ZlT25lKHdpbmRvdyk7CitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3 YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlv bi5jcHAKK2luZGV4IDRlMjU5NDlmLi5jZmM2MDkzOSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxs djVpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVn cmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbi5jcHAKK0BA IC04NSwxMyArODUsNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxhbmRYZGdTaGVsbFY1 SW50ZWdyYXRpb246OmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZAorICAgICByZXR1cm4gbV94 ZGdTaGVsbC0+Y3JlYXRlWGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAKKy12b2lkIFFXYXlsYW5k WGRnU2hlbGxWNUludGVncmF0aW9uOjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFu ZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgeworLSAgICBpZiAo bmV3Rm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnUG9wdXBWNSAqPihuZXdGb2N1cy0+ c2hlbGxTdXJmYWNlKCkpKQorLSAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0 ZWQobmV3Rm9jdXMpOworLSAgICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5k WGRnUG9wdXBWNSAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKQorLSAgICAgICAgbV9kaXNw bGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CistfQorLQorIH0KKyAKKyBR VF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uX3Au aCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9x d2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGNlNmJkYjllLi5hZWQ4ODY3 MCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hk Zy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5 bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhk Z3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmgKK0BAIC02Nyw3ICs2Nyw2IEBAIHB1YmxpYzoKKyAgICAg UVdheWxhbmRYZGdTaGVsbFY1SW50ZWdyYXRpb24oKSB7fQorICAgICBib29sIGluaXRpYWxpemUo UVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAgICAgUVdheWxhbmRTaGVsbFN1 cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSBvdmVycmlk ZTsKKy0gICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAq bmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgb3ZlcnJpZGU7CisgCisgcHJpdmF0 ZToKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRYZGdTaGVsbFY1PiBtX3hkZ1NoZWxsOwor ZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1z aGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAKK2luZGV4 IDhjMzcxNjYxLi4xNTFjNzhlMyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYuY3BwCisrKysg Yi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdh eWxhbmR4ZGdzaGVsbHY2LmNwcAorQEAgLTE3NCw2ICsxNzQsNyBAQCBRV2F5bGFuZFhkZ1N1cmZh Y2VWNjo6UG9wdXA6OlBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZVY2ICp4ZGdTdXJmYWNlLCBRV2F5 bGFuZFhkZworICAgICAsIG1feGRnU3VyZmFjZSh4ZGdTdXJmYWNlKQorICAgICAsIG1fcGFyZW50 KHBhcmVudCkKKyB7CisrICAgIG1fcGFyZW50LT53aW5kb3coKS0+YWRkQ2hpbGRQb3B1cChtX3hk Z1N1cmZhY2UtPndpbmRvdygpKTsKKyB9CisgCisgUVdheWxhbmRYZGdTdXJmYWNlVjY6OlBvcHVw Ojp+UG9wdXAoKQorQEAgLTE4MSw2ICsxODIsOCBAQCBRV2F5bGFuZFhkZ1N1cmZhY2VWNjo6UG9w dXA6On5Qb3B1cCgpCisgICAgIGlmIChpc0luaXRpYWxpemVkKCkpCisgICAgICAgICBkZXN0cm95 KCk7CisgCisrICAgIG1fcGFyZW50LT53aW5kb3coKS0+cmVtb3ZlQ2hpbGRQb3B1cChtX3hkZ1N1 cmZhY2UtPndpbmRvdygpKTsKKysKKyAgICAgaWYgKG1fZ3JhYmJpbmcpIHsKKyAgICAgICAgIGF1 dG8gKnNoZWxsID0gbV94ZGdTdXJmYWNlLT5tX3NoZWxsOworICAgICAgICAgUV9BU1NFUlQoc2hl bGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPT0gdGhpcyk7CitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRn c2hlbGx2NmludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVn cmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAKK2lu ZGV4IDAzMTY0MzE2Li5lOGRhOGJhMSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3Jh dGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hk Zy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAKK0BAIC02OCwyMCAr NjgsNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxhbmRYZGdTaGVsbFY2SW50ZWdyYXRp b246OmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZAorICAgICByZXR1cm4gbV94ZGdTaGVsbC0+ Z2V0WGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kWGRnU2hlbGxWNklu dGVncmF0aW9uOjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3 Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykKKy17CistICAgIGlmIChuZXdGb2N1cykg eworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1 cmZhY2VWNiAqPihuZXdGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAgICAgICAgaWYgKHhkZ1N1 cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAgICAgICAgICAg IG1fZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsKKy0gICAgfQorLSAg ICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZVY2ICo+KG9s ZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBx b2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlVjYgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFj ZSgpKTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNlLT5oYW5kbGVzQWN0 aXZlU3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0aXZh dGVkKG9sZEZvY3VzKTsKKy0gICAgfQorLX0KKy0KKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQor ZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1z aGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2 aW50ZWdyYXRpb25fcC5oCitpbmRleCAyNjFmOGNiYi4uYzFiY2Q1YzYgMTAwNjQ0CistLS0gYS9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxh bmR4ZGdzaGVsbHY2aW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRp b25fcC5oCitAQCAtNjUsNyArNjUsNiBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kWGRnU2hlbGxW NkludGVncmF0aW9uKCkge30KKyAgICAgYm9vbCBpbml0aWFsaXplKFFXYXlsYW5kRGlzcGxheSAq ZGlzcGxheSkgb3ZlcnJpZGU7CisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVs bFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRvdykgb3ZlcnJpZGU7CistICAgIHZvaWQgaGFu ZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFu ZFdpbmRvdyAqb2xkRm9jdXMpIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFTY29wZWRQ b2ludGVyPFFXYXlsYW5kWGRnU2hlbGxWNj4gbV94ZGdTaGVsbDsKK2RpZmYgLS1naXQgYS9xdHdh eWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdz aGVsbC5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAKK2luZGV4IGYzZTNjMzMwLi5mYTZkNTgwOCAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9x d2F5bGFuZHhkZ3NoZWxsLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwCitAQCAtNjcsMTEgKzY3LDYg QEAgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6VG9wbGV2ZWwoUVdheWxhbmRYZGdTdXJm YWNlICp4ZGdTdXJmYWNlKQorIAorIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6On5Ub3Bs ZXZlbCgpCisgeworLSAgICBpZiAobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUp IHsKKy0gICAgICAgIFFXYXlsYW5kV2luZG93ICp3aW5kb3cgPSBtX3hkZ1N1cmZhY2UtPndpbmRv dygpOworLSAgICAgICAgd2luZG93LT5kaXNwbGF5KCktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVk KHdpbmRvdyk7CistICAgIH0KKy0KKyAgICAgLy8gVGhlIHByb3RvY29sIHNwZWMgcmVxdWlyZXMg dGhhdCB0aGUgZGVjb3JhdGlvbiBvYmplY3QgaXMgZGVsZXRlZCBiZWZvcmUgeGRnX3RvcGxldmVs LgorICAgICBkZWxldGUgbV9kZWNvcmF0aW9uOworICAgICBtX2RlY29yYXRpb24gPSBudWxscHRy OworQEAgLTg1LDE2ICs4MCwxNSBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6 OmFwcGx5Q29uZmlndXJlKCkKKyAgICAgaWYgKCEobV9hcHBsaWVkLnN0YXRlcyAmIChRdDo6V2lu ZG93TWF4aW1pemVkfFF0OjpXaW5kb3dGdWxsU2NyZWVuKSkpCisgICAgICAgICBtX25vcm1hbFNp emUgPSBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT53aW5kb3dGcmFtZUdlb21ldHJ5KCkuc2l6ZSgp OworIAorLSAgICBpZiAoKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSAmJiAh KG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSkKKysgICAgaWYgKChtX3BlbmRp bmcuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgJiYgIShtX2FwcGxpZWQuc3RhdGVzICYgUXQ6 OldpbmRvd0FjdGl2ZSkKKysgICAgICAgICYmICFtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5kaXNw bGF5KCktPmlzS2V5Ym9hcmRBdmFpbGFibGUoKSkKKyAgICAgICAgIG1feGRnU3VyZmFjZS0+bV93 aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG1feGRnU3VyZmFjZS0+bV93 aW5kb3cpOworIAorLSAgICBpZiAoIShtX3BlbmRpbmcuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2 ZSkgJiYgKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSkKKysgICAgaWYgKCEo bV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmIChtX2FwcGxpZWQuc3RhdGVz ICYgUXQ6OldpbmRvd0FjdGl2ZSkKKysgICAgICAgICYmICFtX3hkZ1N1cmZhY2UtPm1fd2luZG93 LT5kaXNwbGF5KCktPmlzS2V5Ym9hcmRBdmFpbGFibGUoKSkKKyAgICAgICAgIG1feGRnU3VyZmFj ZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQobV94ZGdTdXJm YWNlLT5tX3dpbmRvdyk7CisgCistICAgIC8vIFRPRE86IG5vbmUgb2YgdGhlIG90aGVyIHBsdWdp bnMgc2VuZCBXaW5kb3dBY3RpdmUgZWl0aGVyLCBidXQgaXMgaXQgb24gcHVycG9zZT8KKy0gICAg UXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXNXaXRob3V0QWN0aXZlID0gbV9wZW5kaW5nLnN0YXRlcyAm IH5RdDo6V2luZG93QWN0aXZlOworLQorLSAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5oYW5k bGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKHN0YXRlc1dpdGhvdXRBY3RpdmUpOworKyAgICBtX3hkZ1N1 cmZhY2UtPm1fd2luZG93LT5oYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKG1fcGVuZGluZy5zdGF0 ZXMpOworIAorICAgICBpZiAobV9wZW5kaW5nLnNpemUuaXNFbXB0eSgpKSB7CisgICAgICAgICAv LyBBbiBlbXB0eSBzaXplIGluIHRoZSBjb25maWd1cmUgbWVhbnMgaXQncyB1cCB0byB0aGUgY2xp ZW50IHRvIGNob29zZSB0aGUgc2l6ZQorQEAgLTEwNSw4ICs5OSw2IEBAIHZvaWQgUVdheWxhbmRY ZGdTdXJmYWNlOjpUb3BsZXZlbDo6YXBwbHlDb25maWd1cmUoKQorICAgICAgICAgbV94ZGdTdXJm YWNlLT5tX3dpbmRvdy0+cmVzaXplRnJvbUFwcGx5Q29uZmlndXJlKG1fcGVuZGluZy5zaXplKTsK KyAgICAgfQorIAorLSAgICBtX3hkZ1N1cmZhY2UtPnNldFNpemVIaW50cygpOworLQorICAgICBt X2FwcGxpZWQgPSBtX3BlbmRpbmc7CisgICAgIHFDRGVidWcobGNRcGFXYXlsYW5kKSA8PCAiQXBw bGllZCBwZW5kaW5nIHhkZ190b3BsZXZlbCBjb25maWd1cmUgZXZlbnQ6IiA8PCBtX2FwcGxpZWQu c2l6ZSA8PCBtX2FwcGxpZWQuc3RhdGVzOworIH0KK0BAIC0yMDMsMTIgKzE5NSwxNyBAQCBRdFdh eWxhbmQ6OnhkZ190b3BsZXZlbDo6cmVzaXplX2VkZ2UgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3Bs ZXZlbDo6Y29udmVydFRvUmVzaQorICAgICAgICAgICAgICAgICB8ICgoZWRnZXMgJiBRdDo6Umln aHRFZGdlKSA/IHJlc2l6ZV9lZGdlX3JpZ2h0IDogMCkpOworIH0KKyAKKy1RV2F5bGFuZFhkZ1N1 cmZhY2U6OlBvcHVwOjpQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UsIFFXYXls YW5kWGRnU3VyZmFjZSAqcGFyZW50LAorK1FXYXlsYW5kWGRnU3VyZmFjZTo6UG9wdXA6OlBvcHVw KFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRXaW5kb3cgKnBhcmVudCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdFdheWxhbmQ6OnhkZ19wb3NpdGlv bmVyICpwb3NpdGlvbmVyKQorLSAgICA6IHhkZ19wb3B1cCh4ZGdTdXJmYWNlLT5nZXRfcG9wdXAo cGFyZW50LT5vYmplY3QoKSwgcG9zaXRpb25lci0+b2JqZWN0KCkpKQorLSAgICAsIG1feGRnU3Vy ZmFjZSh4ZGdTdXJmYWNlKQorKyAgICA6IG1feGRnU3VyZmFjZSh4ZGdTdXJmYWNlKQorKyAgICAs IG1fcGFyZW50WGRnU3VyZmFjZShxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KHBh cmVudC0+c2hlbGxTdXJmYWNlKCkpKQorICAgICAsIG1fcGFyZW50KHBhcmVudCkKKyB7CisrCisr ICAgIGluaXQoeGRnU3VyZmFjZS0+Z2V0X3BvcHVwKG1fcGFyZW50WGRnU3VyZmFjZSA/IG1fcGFy ZW50WGRnU3VyZmFjZS0+b2JqZWN0KCkgOiBudWxscHRyLCBwb3NpdGlvbmVyLT5vYmplY3QoKSkp OworKyAgICBpZiAobV9wYXJlbnQpIHsKKysgICAgICAgIG1fcGFyZW50LT5hZGRDaGlsZFBvcHVw KG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworKyAgICB9CisgfQorIAorIFFXYXlsYW5kWGRnU3Vy ZmFjZTo6UG9wdXA6On5Qb3B1cCgpCitAQCAtMjE2LDEwICsyMTMsMjQgQEAgUVdheWxhbmRYZGdT dXJmYWNlOjpQb3B1cDo6flBvcHVwKCkKKyAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAg ICAgIGRlc3Ryb3koKTsKKyAKKysgICAgaWYgKG1fcGFyZW50KSB7CisrICAgICAgICBtX3BhcmVu dC0+cmVtb3ZlQ2hpbGRQb3B1cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsKKysgICAgfQorKwor ICAgICBpZiAobV9ncmFiYmluZykgeworICAgICAgICAgYXV0byAqc2hlbGwgPSBtX3hkZ1N1cmZh Y2UtPm1fc2hlbGw7CisgICAgICAgICBRX0FTU0VSVChzaGVsbC0+bV90b3Btb3N0R3JhYmJpbmdQ b3B1cCA9PSB0aGlzKTsKKy0gICAgICAgIHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVwID0g bV9wYXJlbnQtPm1fcG9wdXA7CisrICAgICAgICBzaGVsbC0+bV90b3Btb3N0R3JhYmJpbmdQb3B1 cCA9IG1fcGFyZW50WGRnU3VyZmFjZSA/IG1fcGFyZW50WGRnU3VyZmFjZS0+bV9wb3B1cCA6IG51 bGxwdHI7CisrICAgICAgICBtX2dyYWJiaW5nID0gZmFsc2U7CisrCisrICAgICAgICAvLyBTeW50 aGVzaXplIFF0IGVudGVyL2xlYXZlIGV2ZW50cyBmb3IgcG9wdXAKKysgICAgICAgIFFXaW5kb3cg KmxlYXZlID0gbnVsbHB0cjsKKysgICAgICAgIGlmIChtX3hkZ1N1cmZhY2UgJiYgbV94ZGdTdXJm YWNlLT53aW5kb3coKSkKKysgICAgICAgICAgICBsZWF2ZSA9IG1feGRnU3VyZmFjZS0+d2luZG93 KCktPndpbmRvdygpOworKyAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlTGVh dmVFdmVudChsZWF2ZSk7CisrCisrICAgICAgICBpZiAoUVdpbmRvdyAqZW50ZXIgPSBRR3VpQXBw bGljYXRpb246OnRvcExldmVsQXQoUUN1cnNvcjo6cG9zKCkpKQorKyAgICAgICAgICAgIFFXaW5k b3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUVudGVyRXZlbnQoZW50ZXIsIGVudGVyLT5tYXBGcm9t R2xvYmFsKFFDdXJzb3I6OnBvcygpKSwgUUN1cnNvcjo6cG9zKCkpOworICAgICB9CisgfQorIAor QEAgLTI1Nyw2ICsyNjgsNyBAQCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlFXYXlsYW5kWGRnU3VyZmFj ZShRV2F5bGFuZFhkZ1NoZWxsICpzaGVsbCwgOjp4ZGdfc3VyZmFjZSAqcworICAgICAgICAgICAg ICAgICBtX3RvcGxldmVsLT5zZXRfcGFyZW50KHBhcmVudFhkZ1N1cmZhY2UtPm1fdG9wbGV2ZWwt Pm9iamVjdCgpKTsKKyAgICAgICAgIH0KKyAgICAgfQorKyAgICBzZXRTaXplSGludHMoKTsKKyB9 CisgCisgUVdheWxhbmRYZGdTdXJmYWNlOjp+UVdheWxhbmRYZGdTdXJmYWNlKCkKK0BAIC00MDAs OCArNDEyLDYgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OnNldFBvcHVwKFFXYXlsYW5kV2lu ZG93ICpwYXJlbnQpCisgeworICAgICBRX0FTU0VSVCghbV90b3BsZXZlbCAmJiAhbV9wb3B1cCk7 CisgCistICAgIGF1dG8gcGFyZW50WGRnU3VyZmFjZSA9IHN0YXRpY19jYXN0PFFXYXlsYW5kWGRn U3VyZmFjZSAqPihwYXJlbnQtPnNoZWxsU3VyZmFjZSgpKTsKKy0KKyAgICAgYXV0byBwb3NpdGlv bmVyID0gbmV3IFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIobV9zaGVsbC0+Y3JlYXRlX3Bvc2l0 aW9uZXIoKSk7CisgICAgIC8vIHNldF9wb3B1cCBleHBlY3RzIGEgcG9zaXRpb24gcmVsYXRpdmUg dG8gdGhlIHBhcmVudAorICAgICBRUG9pbnQgdHJhbnNpZW50UG9zID0gbV93aW5kb3ctPmdlb21l dHJ5KCkudG9wTGVmdCgpOyAvLyB0aGlzIGlzIGFic29sdXRlCitAQCAtNDE0LDggKzQyNCw5IEBA IHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpzZXRQb3B1cChRV2F5bGFuZFdpbmRvdyAqcGFyZW50 KQorICAgICBwb3NpdGlvbmVyLT5zZXRfYW5jaG9yKFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXI6 OmFuY2hvcl90b3BfbGVmdCk7CisgICAgIHBvc2l0aW9uZXItPnNldF9ncmF2aXR5KFF0V2F5bGFu ZDo6eGRnX3Bvc2l0aW9uZXI6OmdyYXZpdHlfYm90dG9tX3JpZ2h0KTsKKyAgICAgcG9zaXRpb25l ci0+c2V0X3NpemUobV93aW5kb3ctPmdlb21ldHJ5KCkud2lkdGgoKSwgbV93aW5kb3ctPmdlb21l dHJ5KCkuaGVpZ2h0KCkpOworLSAgICBtX3BvcHVwID0gbmV3IFBvcHVwKHRoaXMsIHBhcmVudFhk Z1N1cmZhY2UsIHBvc2l0aW9uZXIpOworKyAgICBtX3BvcHVwID0gbmV3IFBvcHVwKHRoaXMsIHBh cmVudCwgcG9zaXRpb25lcik7CisgICAgIHBvc2l0aW9uZXItPmRlc3Ryb3koKTsKKysKKyAgICAg ZGVsZXRlIHBvc2l0aW9uZXI7CisgfQorIAorQEAgLTQzNyw2ICs0NDgsMjMgQEAgdm9pZCBRV2F5 bGFuZFhkZ1N1cmZhY2U6OnNldEdyYWJQb3B1cChRV2F5bGFuZFdpbmRvdyAqcGFyZW50LCBRV2F5 bGFuZElucHV0RGV2aWMKKyAgICAgfQorICAgICBzZXRQb3B1cChwYXJlbnQpOworICAgICBtX3Bv cHVwLT5ncmFiKGRldmljZSwgc2VyaWFsKTsKKysKKysgICAgLy8gU3ludGhlc2l6ZSBRdCBlbnRl ci9sZWF2ZSBldmVudHMgZm9yIHBvcHVwCisrICAgIGlmICghcGFyZW50KQorKyAgICAgICAgcmV0 dXJuOworKyAgICBRV2luZG93ICpjdXJyZW50ID0gUUd1aUFwcGxpY2F0aW9uOjp0b3BMZXZlbEF0 KFFDdXJzb3I6OnBvcygpKTsKKysgICAgUVdpbmRvdyAqbGVhdmUgPSBwYXJlbnQtPndpbmRvdygp OworKyAgICBpZiAoY3VycmVudCAhPSBsZWF2ZSkKKysgICAgICAgIHJldHVybjsKKysKKysgICAg UVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlTGVhdmVFdmVudChsZWF2ZSk7CisrCisrICAg IFFXaW5kb3cgKmVudGVyID0gbnVsbHB0cjsKKysgICAgaWYgKG1fcG9wdXAgJiYgbV9wb3B1cC0+ bV94ZGdTdXJmYWNlICYmIG1fcG9wdXAtPm1feGRnU3VyZmFjZS0+d2luZG93KCkpCisrICAgICAg ICBlbnRlciA9IG1fcG9wdXAtPm1feGRnU3VyZmFjZS0+d2luZG93KCktPndpbmRvdygpOworKwor KyAgICBpZiAoZW50ZXIpCisrICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVF bnRlckV2ZW50KGVudGVyLCBlbnRlci0+bWFwRnJvbUdsb2JhbChRQ3Vyc29yOjpwb3MoKSksIFFD dXJzb3I6OnBvcygpKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OnhkZ19zdXJm YWNlX2NvbmZpZ3VyZSh1aW50MzJfdCBzZXJpYWwpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxfcC5o IGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXls YW5keGRnc2hlbGxfcC5oCitpbmRleCA5Njc4NTIwNS4uNGI1MThmMGEgMTAwNjQ0CistLS0gYS9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4 ZGdzaGVsbF9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3AuaAorQEAgLTEzMSwxNCArMTMxLDE1IEBAIHBy aXZhdGU6CisgCisgICAgIGNsYXNzIFBvcHVwIDogcHVibGljIFF0V2F5bGFuZDo6eGRnX3BvcHVw IHsKKyAgICAgcHVibGljOgorLSAgICAgICAgUG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlICp4ZGdT dXJmYWNlLCBRV2F5bGFuZFhkZ1N1cmZhY2UgKnBhcmVudCwgUXRXYXlsYW5kOjp4ZGdfcG9zaXRp b25lciAqcG9zaXRpb25lcik7CisrICAgICAgICBQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhk Z1N1cmZhY2UsIFFXYXlsYW5kV2luZG93ICpwYXJlbnQsIFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9u ZXIgKnBvc2l0aW9uZXIpOworICAgICAgICAgflBvcHVwKCkgb3ZlcnJpZGU7CisgCisgICAgICAg ICB2b2lkIGdyYWIoUVdheWxhbmRJbnB1dERldmljZSAqc2VhdCwgdWludCBzZXJpYWwpOworICAg ICAgICAgdm9pZCB4ZGdfcG9wdXBfcG9wdXBfZG9uZSgpIG92ZXJyaWRlOworIAorICAgICAgICAg UVdheWxhbmRYZGdTdXJmYWNlICptX3hkZ1N1cmZhY2UgPSBudWxscHRyOworLSAgICAgICAgUVdh eWxhbmRYZGdTdXJmYWNlICptX3BhcmVudCA9IG51bGxwdHI7CisrICAgICAgICBRV2F5bGFuZFhk Z1N1cmZhY2UgKm1fcGFyZW50WGRnU3VyZmFjZSA9IG51bGxwdHI7CisrICAgICAgICBRV2F5bGFu ZFdpbmRvdyAqbV9wYXJlbnQgPSBudWxscHRyOworICAgICAgICAgYm9vbCBtX2dyYWJiaW5nID0g ZmFsc2U7CisgICAgIH07CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAg Yi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxh bmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcAoraW5kZXggODc2OWQ5NzEuLmRhMGRkNmE3IDEwMDY0 NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxs L3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRp b24uY3BwCitAQCAtNjksMjAgKzY5LDYgQEAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKlFXYXlsYW5k WGRnU2hlbGxJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2kKKyAgICAg cmV0dXJuIG1feGRnU2hlbGwtPmdldFhkZ1N1cmZhY2Uod2luZG93KTsKKyB9CisgCistdm9pZCBR V2F5bGFuZFhkZ1NoZWxsSW50ZWdyYXRpb246OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFX YXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKQorLXsKKy0g ICAgaWYgKG5ld0ZvY3VzKSB7CistICAgICAgICBhdXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9j YXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihuZXdGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAg ICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgp KQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3Vz KTsKKy0gICAgfQorLSAgICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRn U3VyZmFjZSAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKSB7CistICAgICAgICBhdXRvICp4 ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihvbGRGb2N1cy0+ c2hlbGxTdXJmYWNlKCkpOworLSAgICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2Ut PmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2lu ZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworLSAgICB9CistfQorLQorIH0KKyAKKyBRVF9FTkRf TkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxh bmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVs bGludGVncmF0aW9uX3AuaAoraW5kZXggYjZjYWE2YzkuLjJmOTI5Zjk4IDEwMDY0NAorLS0tIGEv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5k eGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb25fcC5oCitA QCAtNjUsNyArNjUsNiBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kWGRnU2hlbGxJbnRlZ3JhdGlv bigpIHt9CisgICAgIGJvb2wgaW5pdGlhbGl6ZShRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpIG92 ZXJyaWRlOworICAgICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNlKFFX YXlsYW5kV2luZG93ICp3aW5kb3cpIG92ZXJyaWRlOworLSAgICB2b2lkIGhhbmRsZUtleWJvYXJk Rm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9s ZEZvY3VzKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5 bGFuZFhkZ1NoZWxsPiBtX3hkZ1NoZWxsOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvc2hh cmVkL3F3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9z aGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAKK2luZGV4IDUyNmQwZWY0 Li5mNTBjY2YzMCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kaW5w dXRtZXRob2RldmVudGJ1aWxkZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5 bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcAorQEAgLTM5LDcgKzM5LDEwIEBACisgCisg I2luY2x1ZGUgInF3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXJfcC5oIgorIAorKyNpbmNs dWRlIDxRQnJ1c2g+CisrI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKyAjaW5jbHVkZSA8UUlu cHV0TWV0aG9kPgorKyNpbmNsdWRlIDxRUGFsZXR0ZT4KKyAjaW5jbHVkZSA8UVRleHRDaGFyRm9y bWF0PgorIAorICNpZmRlZiBRVF9CVUlMRF9XQVlMQU5EQ09NUE9TSVRPUl9MSUIKK0BAIC04MSwz MiArODQsMzggQEAgdm9pZCBRV2F5bGFuZElucHV0TWV0aG9kRXZlbnRCdWlsZGVyOjphZGRQcmVl ZGl0U3R5bGluZyh1aW50MzJfdCBpbmRleCwgdWludDMyX3QKKyAgICAgUVRleHRDaGFyRm9ybWF0 IGZvcm1hdDsKKyAKKyAgICAgc3dpdGNoIChzdHlsZSkgeworLSAgICBjYXNlIDA6CistICAgIGNh c2UgMToKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX05PTkU6Cisr ICAgICAgICBicmVhazsKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxF X0RFRkFVTFQ6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9VTkRF UkxJTkU6CisgICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKyAgICAgICAg IGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVybGlu ZSk7CisgICAgICAgICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpB dHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZv cm1hdCkpOworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgMjoKKy0gICAgY2FzZSAzOgorKyAg ICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfQUNUSVZFOgorKyAgICBjYXNl IFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfSU5BQ1RJVkU6CisgICAgICAgICBmb3Jt YXQuc2V0Rm9udFdlaWdodChRRm9udDo6Qm9sZCk7CisgICAgICAgICBmb3JtYXQuc2V0Rm9udFVu ZGVybGluZSh0cnVlKTsKKyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4dENo YXJGb3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7CisgICAgICAgICBtX3ByZWVkaXRTdHlsZXMuYXBw ZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRG b3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworICAgICAgICAgYnJlYWs7CistICAgIGNh c2UgNDoKKy0gICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworLSAgICAgICAg Zm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJsaW5l KTsKKy0gICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0 dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9y bWF0KSk7CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9ISUdITElH SFQ6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9TRUxFQ1RJT046 CisrICAgICAgICB7CisrICAgICAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7 CisrICAgICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6 U2luZ2xlVW5kZXJsaW5lKTsKKysgICAgICAgICAgICBRUGFsZXR0ZSBwYWxldHRlID0gcUFwcC0+ cGFsZXR0ZSgpOworKyAgICAgICAgICAgIGZvcm1hdC5zZXRCYWNrZ3JvdW5kKFFCcnVzaChwYWxl dHRlLmNvbG9yKFFQYWxldHRlOjpBY3RpdmUsIFFQYWxldHRlOjpIaWdobGlnaHQpKSk7CisrICAg ICAgICAgICAgZm9ybWF0LnNldEZvcmVncm91bmQoUUJydXNoKHBhbGV0dGUuY29sb3IoUVBhbGV0 dGU6OkFjdGl2ZSwgUVBhbGV0dGU6OkhpZ2hsaWdodGVkVGV4dCkpKTsKKysgICAgICAgICAgICBt X3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0 TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworKyAgICAg ICAgfQorICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgNToKKysgICAgY2FzZSBaV1BfVEVYVF9J TlBVVF9WMl9QUkVFRElUX1NUWUxFX0lOQ09SUkVDVDoKKyAgICAgICAgIGZvcm1hdC5zZXRGb250 VW5kZXJsaW5lKHRydWUpOworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0 Q2hhckZvcm1hdDo6V2F2ZVVuZGVybGluZSk7CisgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5l Q29sb3IoUUNvbG9yKFF0OjpyZWQpKTsKKyAgICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQo UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1h dCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisgICAgICAgICBicmVhazsKKy0vLyAgICBjYXNl IFF0V2F5bGFuZDo6d2xfdGV4dF9pbnB1dDo6cHJlZWRpdF9zdHlsZV9zZWxlY3Rpb246CistLy8g ICAgY2FzZSBRdFdheWxhbmQ6OndsX3RleHRfaW5wdXQ6OnByZWVkaXRfc3R5bGVfbm9uZToKKyAg ICAgZGVmYXVsdDoKKyAgICAgICAgIGJyZWFrOworICAgICB9CitAQCAtMTUzLDcgKzE2Miw3IEBA IFFJbnB1dE1ldGhvZEV2ZW50IFFXYXlsYW5kSW5wdXRNZXRob2RFdmVudEJ1aWxkZXI6OmJ1aWxk UHJlZWRpdChjb25zdCBRU3RyaW5nICZ0CisgCisgICAgIGlmIChtX3ByZWVkaXRDdXJzb3IgPCAw KSB7CisgICAgICAgICBhdHRyaWJ1dGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmli dXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpDdXJzb3IsIDAsIDAsIFFWYXJpYW50KCkpKTsKKy0gICAg fSBlbHNlIGlmIChtX3ByZWVkaXRDdXJzb3IgPiAwKSB7CisrICAgIH0gZWxzZSB7CisgICAgICAg ICBhdHRyaWJ1dGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1l dGhvZEV2ZW50OjpDdXJzb3IsIGluZGV4RnJvbVdheWxhbmQodGV4dCwgbV9wcmVlZGl0Q3Vyc29y KSwgMSwgUVZhcmlhbnQoKSkpOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Ny Yy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcCBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3 YXlsYW5kbWltZWhlbHBlci5jcHAKK2luZGV4IGE1ZmRkMzRkLi5lMmZlMTkyOCAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5jcHAKKysrKyBiL3F0 d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5jcHAKK0BAIC02MCw3ICs2MCw3 IEBAIFFCeXRlQXJyYXkgUVdheWxhbmRNaW1lSGVscGVyOjpnZXRCeXRlQXJyYXkoUU1pbWVEYXRh ICptaW1lRGF0YSwgY29uc3QgUVN0cmluZyAmCisgICAgICAgICAgICAgYnVmLm9wZW4oUUlPRGV2 aWNlOjpSZWFkV3JpdGUpOworICAgICAgICAgICAgIFFCeXRlQXJyYXkgZm10ID0gIkJNUCI7Cisg ICAgICAgICAgICAgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoUUxhdGluMVN0cmluZygiaW1hZ2Uv IikpKSB7CistICAgICAgICAgICAgICAgIFFCeXRlQXJyYXkgaW1nRm10ID0gbWltZVR5cGUubWlk KDYpLnRvVXBwZXIoKS50b0xhdGluMSgpOworKyAgICAgICAgICAgICAgICBRQnl0ZUFycmF5IGlt Z0ZtdCA9IG1pbWVUeXBlLm1pZCg2KS50b0xvd2VyKCkudG9MYXRpbjEoKTsKKyAgICAgICAgICAg ICAgICAgaWYgKFFJbWFnZVdyaXRlcjo6c3VwcG9ydGVkSW1hZ2VGb3JtYXRzKCkuY29udGFpbnMo aW1nRm10KSkKKyAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGltZ0ZtdDsKKyAgICAgICAgICAg ICB9CitAQCAtNzQsNyArNzQsNyBAQCBRQnl0ZUFycmF5IFFXYXlsYW5kTWltZUhlbHBlcjo6Z2V0 Qnl0ZUFycmF5KFFNaW1lRGF0YSAqbWltZURhdGEsIGNvbnN0IFFTdHJpbmcgJgorICAgICAgICAg UUxpc3Q8UVVybD4gdXJscyA9IG1pbWVEYXRhLT51cmxzKCk7CisgICAgICAgICBmb3IgKGludCBp ID0gMDsgaSA8IHVybHMuY291bnQoKTsgKytpKSB7CisgICAgICAgICAgICAgY29udGVudC5hcHBl bmQodXJscy5hdChpKS50b0VuY29kZWQoKSk7CistICAgICAgICAgICAgY29udGVudC5hcHBlbmQo J1xuJyk7CisrICAgICAgICAgICAgY29udGVudC5hcHBlbmQoIlxyXG4iKTsKKyAgICAgICAgIH0K KyAgICAgfSBlbHNlIHsKKyAgICAgICAgIGNvbnRlbnQgPSBtaW1lRGF0YS0+ZGF0YShtaW1lVHlw ZSk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2 MS90c3RfZGF0YWRldmljZXYxLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9kYXRh ZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAKK2luZGV4IDE1NjhiM2I5Li4wNjc0MTBkMCAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9kYXRhZGV2aWNldjEvdHN0 X2RhdGFkZXZpY2V2MS5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9kYXRh ZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAKK0BAIC0zNSw3ICszNSw3IEBACisgCisgdXNp bmcgbmFtZXNwYWNlIE1vY2tDb21wb3NpdG9yOworIAorLWNvbnN0ZXhwciBpbnQgZGF0YURldmlj ZVZlcnNpb24gPSAxOworK2NvbnN0ZXhwciBpbnQgZGF0YURldmljZVZlcnNpb24gPSAzOworIAor IGNsYXNzIERhdGFEZXZpY2VDb21wb3NpdG9yIDogcHVibGljIERlZmF1bHRDb21wb3NpdG9yIHsK KyBwdWJsaWM6CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NlYXR2 NS90c3Rfc2VhdHY1LmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0 X3NlYXR2NS5jcHAKK2luZGV4IDkzMTJjMmU1Li4yZWEzODJmMSAxMDA2NDQKKy0tLSBhL3F0d2F5 bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAKKysrKyBiL3F0d2F5 bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAKK0BAIC03Myw2ICs3 Myw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgbXVsdGlUb3VjaCgpOworICAgICB2b2lk IG11bHRpVG91Y2hVcEFuZE1vdGlvbkZyYW1lKCk7CisgICAgIHZvaWQgdGFwQW5kTW92ZUluU2Ft ZUZyYW1lKCk7CisrICAgIHZvaWQgY2FuY2VsVG91Y2goKTsKKyB9OworIAorIHZvaWQgdHN0X3Nl YXR2NTo6YmluZHNUb1NlYXQoKQorQEAgLTY0Niw1ICs2NDcsMzQgQEAgdm9pZCB0c3Rfc2VhdHY1 Ojp0YXBBbmRNb3ZlSW5TYW1lRnJhbWUoKQorICAgICBRVFJZX0NPTVBBUkUod2luZG93Lm1fZXZl bnRzLmxhc3QoKS50b3VjaFBvaW50cy5maXJzdCgpLnN0YXRlKCksIFF0OjpUb3VjaFBvaW50U3Rh dGU6OlRvdWNoUG9pbnRSZWxlYXNlZCk7CisgfQorIAorK3ZvaWQgdHN0X3NlYXR2NTo6Y2FuY2Vs VG91Y2goKQorK3sKKysgICAgVG91Y2hXaW5kb3cgd2luZG93OworKyAgICBRQ09NUE9TSVRPUl9U UllfVkVSSUZZKHhkZ1N1cmZhY2UoKSAmJiB4ZGdTdXJmYWNlKCktPm1fY29tbWl0dGVkQ29uZmln dXJlU2VyaWFsKTsKKysKKysgICAgZXhlYyhbPV0geworKyAgICAgICAgYXV0byAqdCA9IHRvdWNo KCk7CisrICAgICAgICBhdXRvICpjID0gY2xpZW50KCk7CisrICAgICAgICB0LT5zZW5kRG93bih4 ZGdUb3BsZXZlbCgpLT5zdXJmYWNlKCksIHszMiwgMzJ9LCAxKTsKKysgICAgICAgIHQtPnNlbmRG cmFtZShjKTsKKysgICAgICAgIHQtPnNlbmRDYW5jZWwoYyk7CisrICAgICAgICB0LT5zZW5kRnJh bWUoYyk7CisrICAgIH0pOworKworKyAgICBRVFJZX1ZFUklGWSghd2luZG93Lm1fZXZlbnRzLmVt cHR5KCkpOworKyAgICB7CisrICAgICAgICBhdXRvIGUgPSB3aW5kb3cubV9ldmVudHMudGFrZUZp cnN0KCk7CisrICAgICAgICBRQ09NUEFSRShlLnR5cGUsIFFFdmVudDo6VG91Y2hCZWdpbik7Cisr ICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRTdGF0ZXMsIFF0OjpUb3VjaFBvaW50UHJlc3Nl ZCk7CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRzLmxlbmd0aCgpLCAxKTsKKysgICAg ICAgIFFDT01QQVJFKGUudG91Y2hQb2ludHMuZmlyc3QoKS5wb3MoKSwgUVBvaW50RigzMi13aW5k b3cuZnJhbWVNYXJnaW5zKCkubGVmdCgpLCAzMi13aW5kb3cuZnJhbWVNYXJnaW5zKCkudG9wKCkp KTsKKysgICAgfQorKyAgICB7CisrICAgICAgICBhdXRvIGUgPSB3aW5kb3cubV9ldmVudHMudGFr ZUZpcnN0KCk7CisrICAgICAgICBRQ09NUEFSRShlLnR5cGUsIFFFdmVudDo6VG91Y2hDYW5jZWwp OworKyAgICAgICAgUUNPTVBBUkUoZS50b3VjaFBvaW50cy5sZW5ndGgoKSwgMCk7CisrICAgIH0K Kyt9CisrCisgUUNPTVBPU0lUT1JfVEVTVF9NQUlOKHRzdF9zZWF0djUpCisgI2luY2x1ZGUgInRz dF9zZWF0djUubW9jIgorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9z aGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3No YXJlZC9jb3JlY29tcG9zaXRvci5jcHAKK2luZGV4IDVjNmM4M2JhLi5mYTliNzY2MiAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0b3Iu Y3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVjb21wb3Np dG9yLmNwcAorQEAgLTI3LDYgKzI3LDcgQEAKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAorICNp bmNsdWRlICJjb3JlY29tcG9zaXRvci5oIgorKyNpbmNsdWRlIDx0aHJlYWQ+CisgCisgbmFtZXNw YWNlIE1vY2tDb21wb3NpdG9yIHsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0 by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAKK2luZGV4IDBkOTg4NTIxLi5kMWEyZTdjYiAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3Rv Y29sLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJv dG9jb2wuY3BwCitAQCAtNDUxLDYgKzQ1MSwxMyBAQCB2b2lkIFRvdWNoOjpzZW5kRnJhbWUod2xf Y2xpZW50ICpjbGllbnQpCisgICAgICAgICBzZW5kX2ZyYW1lKHItPmhhbmRsZSk7CisgfQorIAor K3ZvaWQgVG91Y2g6OnNlbmRDYW5jZWwod2xfY2xpZW50ICpjbGllbnQpCisreworKyAgICBjb25z dCBhdXRvIHRvdWNoUmVzb3VyY2VzID0gcmVzb3VyY2VNYXAoKS52YWx1ZXMoY2xpZW50KTsKKysg ICAgZm9yIChhdXRvICpyIDogdG91Y2hSZXNvdXJjZXMpCisrICAgICAgICBzZW5kX2NhbmNlbChy LT5oYW5kbGUpOworK30KKysKKyB1aW50IEtleWJvYXJkOjpzZW5kRW50ZXIoU3VyZmFjZSAqc3Vy ZmFjZSkKKyB7CisgICAgIGF1dG8gc2VyaWFsID0gbV9zZWF0LT5tX2NvbXBvc2l0b3ItPm5leHRT ZXJpYWwoKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVk L2NvcmVwcm90b2NvbC5oIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3Jl cHJvdG9jb2wuaAoraW5kZXggYTFhZjEzN2EuLjIxMGQ4ZGRiIDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaAorKysrIGIvcXR3YXls YW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaAorQEAgLTE1OCw3ICsx NTgsNyBAQCBjbGFzcyBXbENvbXBvc2l0b3IgOiBwdWJsaWMgR2xvYmFsLCBwdWJsaWMgUXRXYXls YW5kU2VydmVyOjp3bF9jb21wb3NpdG9yCisgeworICAgICBRX09CSkVDVAorIHB1YmxpYzoKKy0g ICAgZXhwbGljaXQgV2xDb21wb3NpdG9yKENvcmVDb21wb3NpdG9yICpjb21wb3NpdG9yLCBpbnQg dmVyc2lvbiA9IDMpCisrICAgIGV4cGxpY2l0IFdsQ29tcG9zaXRvcihDb3JlQ29tcG9zaXRvciAq Y29tcG9zaXRvciwgaW50IHZlcnNpb24gPSA0KQorICAgICAgICAgOiBRdFdheWxhbmRTZXJ2ZXI6 OndsX2NvbXBvc2l0b3IoY29tcG9zaXRvci0+bV9kaXNwbGF5LCB2ZXJzaW9uKQorICAgICAgICAg LCBtX2NvbXBvc2l0b3IoY29tcG9zaXRvcikKKyAgICAge30KK0BAIC0zNjQsNiArMzY0LDcgQEAg cHVibGljOgorICAgICB1aW50IHNlbmRVcCh3bF9jbGllbnQgKmNsaWVudCwgaW50IGlkKTsKKyAg ICAgdm9pZCBzZW5kTW90aW9uKHdsX2NsaWVudCAqY2xpZW50LCBjb25zdCBRUG9pbnRGICZwb3Np dGlvbiwgaW50IGlkKTsKKyAgICAgdm9pZCBzZW5kRnJhbWUod2xfY2xpZW50ICpjbGllbnQpOwor KyAgICB2b2lkIHNlbmRDYW5jZWwod2xfY2xpZW50ICpjbGllbnQpOworIAorICAgICBTZWF0ICpt X3NlYXQgPSBudWxscHRyOworIH07CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8v Y2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwCitpbmRleCBhNDE1Y2JmNS4u YjFkM2QwN2QgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVk X29sZC9tb2NrY29tcG9zaXRvci5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVu dC9zaGFyZWRfb2xkL21vY2tjb21wb3NpdG9yLmNwcAorQEAgLTM0Miw3ICszNDIsNyBAQCBDb21w b3NpdG9yOjpDb21wb3NpdG9yKE1vY2tDb21wb3NpdG9yICptb2NrQ29tcG9zaXRvcikKKyAgICAg ICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgfQorIAorLSAgICB3bF9nbG9iYWxfY3JlYXRl KG1fZGlzcGxheSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCAxLCB0aGlzLCBiaW5kQ29tcG9z aXRvcik7CisrICAgIHdsX2dsb2JhbF9jcmVhdGUobV9kaXNwbGF5LCAmd2xfY29tcG9zaXRvcl9p bnRlcmZhY2UsIDQsIHRoaXMsIGJpbmRDb21wb3NpdG9yKTsKKyAKKyAgICAgbV9kYXRhX2Rldmlj ZV9tYW5hZ2VyLnJlc2V0KG5ldyBEYXRhRGV2aWNlTWFuYWdlcih0aGlzLCBtX2Rpc3BsYXkpKTsK KyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9t b2Nrc3VyZmFjZS5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9t b2Nrc3VyZmFjZS5jcHAKK2luZGV4IGU5ZGY1ZjkwLi5jMzI0NmU0YSAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmNwcAorKysr IGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuY3Bw CitAQCAtMTI1LDYgKzEyNSwxNiBAQCB2b2lkIFN1cmZhY2U6OnN1cmZhY2VfZGFtYWdlKFJlc291 cmNlICpyZXNvdXJjZSwKKyAgICAgUV9VTlVTRUQoaGVpZ2h0KTsKKyB9CisgCisrdm9pZCBTdXJm YWNlOjpzdXJmYWNlX2RhbWFnZV9idWZmZXIoUmVzb3VyY2UgKnJlc291cmNlLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90 IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyt7CisrICAgIFFfVU5VU0VEKHJlc291cmNlKTsKKysg ICAgUV9VTlVTRUQoeCk7CisrICAgIFFfVU5VU0VEKHkpOworKyAgICBRX1VOVVNFRCh3aWR0aCk7 CisrICAgIFFfVU5VU0VEKGhlaWdodCk7CisrfQorKworIHZvaWQgU3VyZmFjZTo6c3VyZmFjZV9m cmFtZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQzMl90IGNhbGxiYWNrKQorIHsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5oIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuaAoraW5kZXggOTQ5ZGMyM2QuLmQxNzY4MzdlIDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1 cmZhY2UuaAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9j a3N1cmZhY2UuaAorQEAgLTY1LDYgKzY1LDggQEAgcHJvdGVjdGVkOgorICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCB3bF9yZXNvdXJjZSAqYnVmZmVyLCBpbnQgeCwgaW50IHkpIG92ZXJy aWRlOworICAgICB2b2lkIHN1cmZhY2VfZGFtYWdlKFJlc291cmNlICpyZXNvdXJjZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg aW50MzJfdCBoZWlnaHQpIG92ZXJyaWRlOworKyAgICB2b2lkIHN1cmZhY2VfZGFtYWdlX2J1ZmZl cihSZXNvdXJjZSAqcmVzb3VyY2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkgb3ZlcnJp ZGU7CisgICAgIHZvaWQgc3VyZmFjZV9mcmFtZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCBjYWxsYmFjaykgb3ZlcnJpZGU7CisgICAgIHZvaWQg c3VyZmFjZV9jb21taXQoUmVzb3VyY2UgKnJlc291cmNlKSBvdmVycmlkZTsKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFjZS5jcHAgYi9x dHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFjZS5jcHAKK2luZGV4 IDk1ZTRlNjA5Li42MGM2NzJjZSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8v Y2xpZW50L3N1cmZhY2UvdHN0X3N1cmZhY2UuY3BwCitAQCAtMTI5LDYgKzEyOSwxMCBAQCB2b2lk IHRzdF9zdXJmYWNlOjp3YWl0Rm9yRnJhbWVDYWxsYmFja0dsKCkKKyAgICAgLy8gTWFrZSBzdXJl IHdlIGZvbGxvdyBmcmFtZSBjYWxsYmFja3MgZm9yIHNvbWUgZnJhbWVzCisgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgNTsgKytpKSB7CisgICAgICAgICB4ZGdQaW5nQW5kV2FpdEZvclBvbmcoKTsg Ly8gTWFrZSBzdXJlIHRoaW5ncyBoYXZlIGhhcHBlbmVkIG9uIHRoZSBjbGllbnQKKysgICAgICAg IGlmICghcUVudmlyb25tZW50VmFyaWFibGVJbnRWYWx1ZSgiUVRfV0FZTEFORF9ESVNBQkxFX1dJ TkRPV0RFQ09SQVRJT04iKSAmJiBpID09IDApIHsKKysgICAgICAgICAgICBRQ09NUEFSRShidWZm ZXJTcHkuY291bnQoKSwgMSk7CisrICAgICAgICAgICAgYnVmZmVyU3B5LnJlbW92ZUZpcnN0KCk7 CisrICAgICAgICB9CisgICAgICAgICBleGVjKFsmXSB7CisgICAgICAgICAgICAgUVZFUklGWShi dWZmZXJTcHkuZW1wdHkoKSk7IC8vIE1ha2Ugc3VyZSBubyBleHRyYSBidWZmZXJzIGhhdmUgYXJy aXZlZAorICAgICAgICAgICAgIFFWRVJJRlkoIXhkZ1RvcGxldmVsKCktPnN1cmZhY2UoKS0+bV93 YWl0aW5nRnJhbWVDYWxsYmFja3MuZW1wdHkoKSk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVsbC5jcHAgYi9xdHdheWxhbmQvdGVz dHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcAoraW5kZXggMjI3N2JiYjgu Ljc0Nzg3NWI0IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3No ZWxsL3RzdF94ZGdzaGVsbC5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC94 ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwCitAQCAtMzEsNiArMzEsNyBAQAorICNpbmNsdWRlIDxR dEd1aS9RT3BlbkdMV2luZG93PgorICNpbmNsdWRlIDxRdEd1aS9xcGEvcXBsYXRmb3JtbmF0aXZl aW50ZXJmYWNlLmg+CisgI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3dheWxhbmQt d2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaD4KKysjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3By aXZhdGUvcXdheWxhbmR3aW5kb3dfcC5oPgorIAorIHVzaW5nIG5hbWVzcGFjZSBNb2NrQ29tcG9z aXRvcjsKKyAKK0BAIC00NSw2ICs0Niw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgY29u ZmlndXJlU3RhdGVzKCk7CisgICAgIHZvaWQgcG9wdXAoKTsKKyAgICAgdm9pZCB0b29sdGlwT25Q b3B1cCgpOworKyAgICB2b2lkIHRvb2x0aXBBbmRTaWJsaW5nUG9wdXAoKTsKKyAgICAgdm9pZCBz d2l0Y2hQb3B1cHMoKTsKKyAgICAgdm9pZCBoaWRlUG9wdXBQYXJlbnQoKTsKKyAgICAgdm9pZCBw b25ncygpOworQEAgLTEzOCw2ICsxNDAsNyBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJl U2l6ZSgpCisgCisgdm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVN0YXRlcygpCisgeworKyAg ICBRVkVSSUZZKHFwdXRlbnYoIlFUX1dBWUxBTkRfRlJBTUVfQ0FMTEJBQ0tfVElNRU9VVCIsICIw IikpOworICAgICBRUmFzdGVyV2luZG93IHdpbmRvdzsKKyAgICAgd2luZG93LnJlc2l6ZSg2NCwg NDgpOworICAgICB3aW5kb3cuc2hvdygpOworQEAgLTE1NCw5ICsxNTcsMTIgQEAgdm9pZCB0c3Rf eGRnc2hlbGw6OmNvbmZpZ3VyZVN0YXRlcygpCisgICAgIC8vIFRvcGxldmVsIHdpbmRvd3MgZG9u J3Qga25vdyB0aGVpciBwb3NpdGlvbiBvbiB4ZGctc2hlbGwKKyAvLyAgICBRQ09NUEFSRSh3aW5k b3cuZnJhbWVHZW9tZXRyeSgpLnRvcExlZnQoKSwgUVBvaW50KCkpOyAvLyBUT0RPOiB0aGlzIGRv ZXNuJ3QgY3VycmVudGx5IHdvcmsgd2hlbiB3aW5kb3cgZGVjb3JhdGlvbnMgYXJlIGVuYWJsZWQK KyAKKy0vLyAgICBRRVhQRUNUX0ZBSUwoIiIsICJjb25maWd1cmUgaGFzIGFscmVhZHkgYmVlbiBh Y2tlZCwgd2Ugc2hvdWxkbid0IGhhdmUgdG8gd2FpdCBmb3IgaXNBY3RpdmUiLCBDb250aW51ZSk7 CistLy8gICAgUVZFUklGWSh3aW5kb3cuaXNBY3RpdmUoKSk7CistICAgIFFUUllfVkVSSUZZKHdp bmRvdy5pc0FjdGl2ZSgpKTsgLy8gSnVzdCBtYWtlIHN1cmUgaXQgZXZlbnR1YWxseSBnZXQncyBz ZXQgY29ycmVjdGx5CisrICAgIC8vIHdpbmRvdy53aW5kb3dzdGF0ZSgpIGlzIGRyaXZlbiBieSBr ZXlib2FyZCBmb2N1cywgaG93ZXZlciBmb3IgZGVjb3JhdGlvbnMgd2Ugd2FudCB0byBmb2xsb3cK KysgICAgLy8gWERHU2hlbGwgdGhpcyBpcyBpbnRlcm5hbCB0byBRdFdheWxhbmQgc28gaXQgaXMg cXVlcmllZCBkaXJlY3RseQorKyAgICBhdXRvIHdheWxhbmRXaW5kb3cgPSBzdGF0aWNfY2FzdDxR dFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kV2luZG93ICo+KHdpbmRvdy5oYW5kbGUoKSk7CisrICAg IFFfQVNTRVJUKHdheWxhbmRXaW5kb3cpOworKyAgICBRVFJZX1ZFUklGWSh3YXlsYW5kV2luZG93 LT53aW5kb3dTdGF0ZXMoKS50ZXN0RmxhZygKKysgICAgICAgICAgICBRdDo6V2luZG93QWN0aXZl KSk7IC8vIEp1c3QgbWFrZSBzdXJlIGl0IGV2ZW50dWFsbHkgZ2V0J3Mgc2V0IGNvcnJlY3RseQor IAorICAgICBjb25zdCBRU2l6ZSBzY3JlZW5TaXplKDY0MCwgNDgwKTsKKyAgICAgY29uc3QgdWlu dCBtYXhpbWl6ZWRTZXJpYWwgPSBleGVjKFs9XSB7CitAQCAtMTg2LDYgKzE5Miw3IEBAIHZvaWQg dHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTdGF0ZXMoKQorICAgICBRQ09NUEFSRSh3aW5kb3cud2lu ZG93U3RhdGVzKCksIFF0OjpXaW5kb3dOb1N0YXRlKTsKKyAgICAgUUNPTVBBUkUod2luZG93LmZy YW1lR2VvbWV0cnkoKS5zaXplKCksIHdpbmRvd2VkU2l6ZSk7CisgLy8gICAgUUNPTVBBUkUod2lu ZG93LmZyYW1lR2VvbWV0cnkoKS50b3BMZWZ0KCksIFFQb2ludCgpKTsgLy8gVE9ETzogdGhpcyBk b2Vzbid0IGN1cnJlbnRseSB3b3JrIHdoZW4gd2luZG93IGRlY29yYXRpb25zIGFyZSBlbmFibGVk CisrICAgIFFWRVJJRlkocXVuc2V0ZW52KCJRVF9XQVlMQU5EX0ZSQU1FX0NBTExCQUNLX1RJTUVP VVQiKSk7CisgfQorIAorIHZvaWQgdHN0X3hkZ3NoZWxsOjpwb3B1cCgpCitAQCAtMzQwLDYgKzM0 Nyw5MiBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6dG9vbHRpcE9uUG9wdXAoKQorICAgICBRQ09NUE9T SVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1cCgwKSwgbnVsbHB0cik7CisgfQorIAorK3ZvaWQgdHN0 X3hkZ3NoZWxsOjp0b29sdGlwQW5kU2libGluZ1BvcHVwKCkKKyt7CisrICAgIGNsYXNzIFRvb2xU aXAgOiBwdWJsaWMgUVJhc3RlcldpbmRvdyB7CisrICAgIHB1YmxpYzoKKysgICAgICAgIGV4cGxp Y2l0IFRvb2xUaXAoUVdpbmRvdyAqcGFyZW50KSB7CisrICAgICAgICAgICAgc2V0VHJhbnNpZW50 UGFyZW50KHBhcmVudCk7CisrICAgICAgICAgICAgc2V0RmxhZ3MoUXQ6OlRvb2xUaXApOworKyAg ICAgICAgICAgIHJlc2l6ZSgxMDAsIDEwMCk7CisrICAgICAgICAgICAgc2hvdygpOworKyAgICAg ICAgfQorKyAgICAgICAgdm9pZCBtb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQgKmV2ZW50KSBv dmVycmlkZSB7CisrICAgICAgICAgICAgUVJhc3RlcldpbmRvdzo6bW91c2VQcmVzc0V2ZW50KGV2 ZW50KTsKKysgICAgICAgICAgICBtX3BvcHVwID0gbmV3IFFSYXN0ZXJXaW5kb3c7CisrICAgICAg ICAgICAgbV9wb3B1cC0+c2V0VHJhbnNpZW50UGFyZW50KHRyYW5zaWVudFBhcmVudCgpKTsKKysg ICAgICAgICAgICBtX3BvcHVwLT5zZXRGbGFncyhRdDo6UG9wdXApOworKyAgICAgICAgICAgIG1f cG9wdXAtPnJlc2l6ZSgxMDAsIDEwMCk7CisrICAgICAgICAgICAgbV9wb3B1cC0+c2hvdygpOwor KyAgICAgICAgfQorKworKyAgICAgICAgUVJhc3RlcldpbmRvdyAqbV9wb3B1cCA9IG51bGxwdHI7 CisrICAgIH07CisrCisrICAgIGNsYXNzIFdpbmRvdyA6IHB1YmxpYyBRUmFzdGVyV2luZG93IHsK KysgICAgcHVibGljOgorKyAgICAgICAgdm9pZCBtb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQg KmV2ZW50KSBvdmVycmlkZSB7CisrICAgICAgICAgICAgUVJhc3RlcldpbmRvdzo6bW91c2VQcmVz c0V2ZW50KGV2ZW50KTsKKysgICAgICAgICAgICBtX3Rvb2x0aXAgPSBuZXcgVG9vbFRpcCh0aGlz KTsKKysgICAgICAgIH0KKysgICAgICAgIFRvb2xUaXAgKm1fdG9vbHRpcCA9IG51bGxwdHI7Cisr ICAgIH07CisrCisrICAgIFdpbmRvdyB3aW5kb3c7CisrICAgIHdpbmRvdy5yZXNpemUoMjAwLCAy MDApOworKyAgICB3aW5kb3cuc2hvdygpOworKworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZ KHhkZ1RvcGxldmVsKCkpOworKyAgICBleGVjKFs9XSB7IHhkZ1RvcGxldmVsKCktPnNlbmRDb21w bGV0ZUNvbmZpZ3VyZSgpOyB9KTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdUb3Bs ZXZlbCgpLT5tX3hkZ1N1cmZhY2UtPm1fY29tbWl0dGVkQ29uZmlndXJlU2VyaWFsKTsKKysKKysg ICAgZXhlYyhbPV0geworKyAgICAgICAgYXV0byAqc3VyZmFjZSA9IHhkZ1RvcGxldmVsKCktPnN1 cmZhY2UoKTsKKysgICAgICAgIGF1dG8gKnAgPSBwb2ludGVyKCk7CisrICAgICAgICBhdXRvICpj ID0gY2xpZW50KCk7CisrICAgICAgICBwLT5zZW5kRW50ZXIoc3VyZmFjZSwgezEwMCwgMTAwfSk7 CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgICAgICBwLT5zZW5kQnV0dG9uKGNsaWVu dCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3ByZXNzZWQpOworKyAgICAgICAg cC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6OmJ1dHRvbl9zdGF0ZV9y ZWxlYXNlZCk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgICAgICBwLT5zZW5kTGVh dmUoc3VyZmFjZSk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgIH0pOworKworKyAg ICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKCkpOworKyAgICBleGVjKFs9XSB7IHhk Z1BvcHVwKCktPnNlbmRDb21wbGV0ZUNvbmZpZ3VyZShRUmVjdCgxMDAsIDEwMCwgMTAwLCAxMDAp KTsgfSk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoKS0+bV94ZGdTdXJm YWNlLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9W RVJJRlkoIXhkZ1BvcHVwKCktPm1fZ3JhYmJlZCk7CisrCisrICAgIGV4ZWMoWz1dIHsKKysgICAg ICAgIGF1dG8gKnN1cmZhY2UgPSB4ZGdQb3B1cCgpLT5zdXJmYWNlKCk7CisrICAgICAgICBhdXRv ICpwID0gcG9pbnRlcigpOworKyAgICAgICAgYXV0byAqYyA9IGNsaWVudCgpOworKyAgICAgICAg cC0+c2VuZEVudGVyKHN1cmZhY2UsIHsxMDAsIDEwMH0pOworKyAgICAgICAgcC0+c2VuZEZyYW1l KGMpOworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6 OmJ1dHRvbl9zdGF0ZV9wcmVzc2VkKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24oY2xpZW50KCks IEJUTl9MRUZULCBQb2ludGVyOjpidXR0b25fc3RhdGVfcmVsZWFzZWQpOworKyAgICAgICAgcC0+ c2VuZEZyYW1lKGMpOworKyAgICB9KTsKKysKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4 ZGdQb3B1cCgxKSk7CisrICAgIGV4ZWMoWz1dIHsgeGRnUG9wdXAoMSktPnNlbmRDb21wbGV0ZUNv bmZpZ3VyZShRUmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsgfSk7CisrICAgIFFDT01QT1NJVE9S X1RSWV9WRVJJRlkoeGRnUG9wdXAoMSktPm1feGRnU3VyZmFjZS0+bV9jb21taXR0ZWRDb25maWd1 cmVTZXJpYWwpOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDEpLT5tX2dy YWJiZWQpOworKworKyAgICAvLyBDbG9zZSB0aGUgbWlkZGxlIHRvb2x0aXAgKGl0IHNob3VsZCBu b3QgY2xvc2UgdGhlIHNpYmxpbmcgcG9wdXApCisrICAgIHdpbmRvdy5tX3Rvb2x0aXAtPmNsb3Nl KCk7CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVwKDEpLCBudWxscHRy KTsKKysgICAgLy8gVmVyaWZ5IHRoZSByZW1haW5pbmcgeGRnIHN1cmZhY2UgaXMgYSBncmFiIHBv cHVwLi4KKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgwKSk7CisrICAgIFFD T01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMCktPm1fZ3JhYmJlZCk7CisrCisrICAgIHdp bmRvdy5tX3Rvb2x0aXAtPm1fcG9wdXAtPmNsb3NlKCk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9D T01QQVJFKHhkZ1BvcHVwKDEpLCBudWxscHRyKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBB UkUoeGRnUG9wdXAoMCksIG51bGxwdHIpOworK30KKysKKyAvLyBRVEJVRy02NTY4MAorIHZvaWQg dHN0X3hkZ3NoZWxsOjpzd2l0Y2hQb3B1cHMoKQorIHsKK0BAIC01MDUsNyArNTk4LDcgQEAgdm9p ZCB0c3RfeGRnc2hlbGw6Om1pbk1heFNpemUoKQorICAgICB3aW5kb3cuc2hvdygpOworICAgICBR Q09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1RvcGxldmVsKCkpOworIAorLSAgICBleGVjKFs9XSB7 IHhkZ1RvcGxldmVsKCktPnNlbmRDb21wbGV0ZUNvbmZpZ3VyZSgpOyB9KTsKKysgICAgLy8gd2Ug ZG9uJ3Qgcm91bmR0cmlwIHdpdGggb3VyIGNvbmZpZ3VyYXRpb24gdGhlIGluaXRpYWwgY29tbWl0 IHNob3VsZCBiZSBjb3JyZWN0CisgCisgICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1Rv cGxldmVsKCktPm1fY29tbWl0dGVkLm1pblNpemUsIFFTaXplKDEwMCwgMTAwKSk7CisgICAgIFFD T01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1RvcGxldmVsKCktPm1fY29tbWl0dGVkLm1heFNpemUs IFFTaXplKDEwMDAsIDEwMDApKTsKK1N1Ym1vZHVsZSBxdHdlYmNoYW5uZWwgNjE4NDIyZWUuLmY4 OTQ5NjU1OgorZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9i amVjdHB1Ymxpc2hlci5jcHAgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmpl Y3RwdWJsaXNoZXIuY3BwCitpbmRleCA1MzZlYjVjLi44OThkNzY5IDEwMDY0NAorLS0tIGEvcXR3 ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyLmNwcAorKysrIGIv cXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyLmNwcAorQEAg LTE4Niw4ICsxODYsNiBAQCBRX0RFQ0xBUkVfVFlQRUlORk8oT3ZlcmxvYWRSZXNvbHV0aW9uQ2Fu ZGlkYXRlLCBRX01PVkFCTEVfVFlQRSk7CisgUU1ldGFPYmplY3RQdWJsaXNoZXI6OlFNZXRhT2Jq ZWN0UHVibGlzaGVyKFFXZWJDaGFubmVsICp3ZWJDaGFubmVsKQorICAgICA6IFFPYmplY3Qod2Vi Q2hhbm5lbCkKKyAgICAgLCB3ZWJDaGFubmVsKHdlYkNoYW5uZWwpCistICAgICwgc2lnbmFsSGFu ZGxlcih0aGlzKQorLSAgICAsIGNsaWVudElzSWRsZShmYWxzZSkKKyAgICAgLCBibG9ja1VwZGF0 ZXMoZmFsc2UpCisgICAgICwgcHJvcGVydHlVcGRhdGVzSW5pdGlhbGl6ZWQoZmFsc2UpCisgewor QEAgLTMwMSwxNyArMjk5LDE3IEBAIFFKc29uT2JqZWN0IFFNZXRhT2JqZWN0UHVibGlzaGVyOjpj bGFzc0luZm9Gb3JPYmplY3QoY29uc3QgUU9iamVjdCAqb2JqZWN0LCBRV2ViCisgICAgIHJldHVy biBkYXRhOworIH0KKyAKKy12b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZXRDbGllbnRJc0lk bGUoYm9vbCBpc0lkbGUpCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2V0Q2xpZW50SXNJ ZGxlKGJvb2wgaXNJZGxlLCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQp CisgeworLSAgICBpZiAoY2xpZW50SXNJZGxlID09IGlzSWRsZSkgeworLSAgICAgICAgcmV0dXJu OworLSAgICB9CistICAgIGNsaWVudElzSWRsZSA9IGlzSWRsZTsKKy0gICAgaWYgKCFpc0lkbGUg JiYgdGltZXIuaXNBY3RpdmUoKSkgeworLSAgICAgICAgdGltZXIuc3RvcCgpOworLSAgICB9IGVs c2UgaWYgKGlzSWRsZSAmJiAhdGltZXIuaXNBY3RpdmUoKSkgeworLSAgICAgICAgdGltZXIuc3Rh cnQoUFJPUEVSVFlfVVBEQVRFX0lOVEVSVkFMLCB0aGlzKTsKKy0gICAgfQorKyAgICB0cmFuc3Bv cnRTdGF0ZVt0cmFuc3BvcnRdLmNsaWVudElzSWRsZSA9IGlzSWRsZTsKKysgICAgaWYgKGlzSWRs ZSkKKysgICAgICAgIHNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyh0cmFuc3BvcnQpOworK30K KysKKytib29sIFFNZXRhT2JqZWN0UHVibGlzaGVyOjppc0NsaWVudElkbGUoUVdlYkNoYW5uZWxB YnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorK3sKKysgICAgYXV0byBmb3VuZCA9IHRyYW5z cG9ydFN0YXRlLmZpbmQodHJhbnNwb3J0KTsKKysgICAgcmV0dXJuIGZvdW5kICE9IHRyYW5zcG9y dFN0YXRlLmVuZCgpICYmIGZvdW5kLnZhbHVlKCkuY2xpZW50SXNJZGxlOworIH0KKyAKKyBRSnNv bk9iamVjdCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZUNsaWVudChRV2ViQ2hhbm5l bEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCitAQCAtMzMzLDYgKzMzMSw3IEBAIFFKc29u T2JqZWN0IFFNZXRhT2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplQ2xpZW50KFFXZWJDaGFubmVs QWJzdHJhY3RUcmFuc3BvcnQKKyAKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjppbml0aWFs aXplUHJvcGVydHlVcGRhdGVzKGNvbnN0IFFPYmplY3QgKmNvbnN0IG9iamVjdCwgY29uc3QgUUpz b25PYmplY3QgJm9iamVjdEluZm8pCisgeworKyAgICBhdXRvICpzaWduYWxIYW5kbGVyID0gc2ln bmFsSGFuZGxlckZvcihvYmplY3QpOworICAgICBmb3JlYWNoIChjb25zdCBRSnNvblZhbHVlICZw cm9wZXJ0eUluZm9WYXIsIG9iamVjdEluZm9bS0VZX1BST1BFUlRJRVNdLnRvQXJyYXkoKSkgewor ICAgICAgICAgY29uc3QgUUpzb25BcnJheSAmcHJvcGVydHlJbmZvID0gcHJvcGVydHlJbmZvVmFy LnRvQXJyYXkoKTsKKyAgICAgICAgIGlmIChwcm9wZXJ0eUluZm8uc2l6ZSgpIDwgMikgeworQEAg LTM1MywxOSArMzUyLDE5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmluaXRpYWxpemVQ cm9wZXJ0eVVwZGF0ZXMoY29uc3QgUU9iamVjdCAqY29uc3Qgb2JqZWN0CisgCisgICAgICAgICAv LyBPbmx5IGNvbm5lY3QgZm9yIGEgcHJvcGVydHkgdXBkYXRlIG9uY2UKKyAgICAgICAgIGlmIChj b25uZWN0ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgeworLSAgICAgICAgICAgIHNpZ25hbEhhbmRs ZXIuY29ubmVjdFRvKG9iamVjdCwgc2lnbmFsSW5kZXgpOworKyAgICAgICAgICAgIHNpZ25hbEhh bmRsZXItPmNvbm5lY3RUbyhvYmplY3QsIHNpZ25hbEluZGV4KTsKKyAgICAgICAgIH0KKyAKKyAg ICAgICAgIGNvbm5lY3RlZFByb3BlcnRpZXMuaW5zZXJ0KHByb3BlcnR5SW5kZXgpOworICAgICB9 CisgCisgICAgIC8vIGFsc28gYWx3YXlzIGNvbm5lY3QgdG8gZGVzdHJveWVkIHNpZ25hbAorLSAg ICBzaWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmplY3QsIHNfZGVzdHJveWVkU2lnbmFsSW5kZXgp OworKyAgICBzaWduYWxIYW5kbGVyLT5jb25uZWN0VG8ob2JqZWN0LCBzX2Rlc3Ryb3llZFNpZ25h bEluZGV4KTsKKyB9CisgCisgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2VuZFBlbmRpbmdQ cm9wZXJ0eVVwZGF0ZXMoKQorIHsKKy0gICAgaWYgKGJsb2NrVXBkYXRlcyB8fCAhY2xpZW50SXNJ ZGxlIHx8IHBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMuaXNFbXB0eSgpKSB7CisrICAgIGlmIChibG9j a1VwZGF0ZXMpIHsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorQEAgLTQxNSwxOCArNDE0 LDE5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNlbmRQZW5kaW5nUHJvcGVydHlVcGRh dGVzKCkKKyAKKyAgICAgLy8gZGF0YSBkb2VzIG5vdCBjb250YWluIHNwZWNpZmljIHVwZGF0ZXMK KyAgICAgaWYgKCFkYXRhLmlzRW1wdHkoKSkgeworLSAgICAgICAgc2V0Q2xpZW50SXNJZGxlKGZh bHNlKTsKKy0KKyAgICAgICAgIG1lc3NhZ2VbS0VZX0RBVEFdID0gZGF0YTsKKy0gICAgICAgIGJy b2FkY2FzdE1lc3NhZ2UobWVzc2FnZSk7CisrICAgICAgICBlbnF1ZXVlQnJvYWRjYXN0TWVzc2Fn ZShtZXNzYWdlKTsKKyAgICAgfQorIAorICAgICAvLyBzZW5kIGV2ZXJ5IHByb3BlcnR5IHVwZGF0 ZSB3aGljaCBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgYnJvYWRjYXN0ZWQKKyAgICAgY29uc3QgUUhh c2g8UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCosIFFKc29uQXJyYXk+Ojpjb25zdF9pdGVy YXRvciBzdWVuZCA9IHNwZWNpZmljVXBkYXRlcy5jb25zdEVuZCgpOworICAgICBmb3IgKFFIYXNo PFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQqLCBRSnNvbkFycmF5Pjo6Y29uc3RfaXRlcmF0 b3IgaXQgPSBzcGVjaWZpY1VwZGF0ZXMuY29uc3RCZWdpbigpOyBpdCAhPSBzdWVuZDsgKytpdCkg eworICAgICAgICAgbWVzc2FnZVtLRVlfREFUQV0gPSBpdC52YWx1ZSgpOworLSAgICAgICAgaXQu a2V5KCktPnNlbmRNZXNzYWdlKG1lc3NhZ2UpOworKyAgICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVz c2FnZSwgaXQua2V5KCkpOworICAgICB9CisrCisrICAgIGZvciAoYXV0byBzdGF0ZSA9IHRyYW5z cG9ydFN0YXRlLmJlZ2luKCk7IHN0YXRlICE9IHRyYW5zcG9ydFN0YXRlLmVuZCgpOyArK3N0YXRl KQorKyAgICAgICAgc2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKHN0YXRlLmtleSgpKTsKKyB9 CisgCisgUVZhcmlhbnQgUU1ldGFPYmplY3RQdWJsaXNoZXI6Omludm9rZU1ldGhvZChRT2JqZWN0 ICpjb25zdCBvYmplY3QsIGNvbnN0IFFNZXRhTWV0aG9kICZtZXRob2QsCitAQCAtNTcyLDcgKzU3 Miw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNpZ25hbEVtaXR0ZWQoY29uc3QgUU9i amVjdCAqb2JqZWN0LCBjb25zdCBpbnQgc2lnbmFsCisgICAgICAgICB9CisgICAgIH0gZWxzZSB7 CisgICAgICAgICBwZW5kaW5nUHJvcGVydHlVcGRhdGVzW29iamVjdF1bc2lnbmFsSW5kZXhdID0g YXJndW1lbnRzOworLSAgICAgICAgaWYgKGNsaWVudElzSWRsZSAmJiAhYmxvY2tVcGRhdGVzICYm ICF0aW1lci5pc0FjdGl2ZSgpKSB7CisrICAgICAgICBpZiAoIWJsb2NrVXBkYXRlcyAmJiAhdGlt ZXIuaXNBY3RpdmUoKSkgeworICAgICAgICAgICAgIHRpbWVyLnN0YXJ0KFBST1BFUlRZX1VQREFU RV9JTlRFUlZBTCwgdGhpcyk7CisgICAgICAgICB9CisgICAgIH0KK0BAIC01OTAsNyArNTkwLDcg QEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6b2JqZWN0RGVzdHJveWVkKGNvbnN0IFFPYmpl Y3QgKm9iamVjdCkKKyAgICAgLy8gb25seSByZW1vdmUgZnJvbSBoYW5kbGVyIHdoZW4gd2UgaW5p dGlhbGl6ZWQgdGhlIHByb3BlcnR5IHVwZGF0ZXMKKyAgICAgLy8gY2Y6IGh0dHBzOi8vYnVncmVw b3J0cy5xdC5pby9icm93c2UvUVRCVUctNjAyNTAKKyAgICAgaWYgKHByb3BlcnR5VXBkYXRlc0lu aXRpYWxpemVkKSB7CistICAgICAgICBzaWduYWxIYW5kbGVyLnJlbW92ZShvYmplY3QpOworKyAg ICAgICAgc2lnbmFsSGFuZGxlckZvcihvYmplY3QpLT5yZW1vdmUob2JqZWN0KTsKKyAgICAgICAg IHNpZ25hbFRvUHJvcGVydHlNYXAucmVtb3ZlKG9iamVjdCk7CisgICAgIH0KKyAgICAgcGVuZGlu Z1Byb3BlcnR5VXBkYXRlcy5yZW1vdmUob2JqZWN0KTsKK0BAIC04NTIsNiArODUyLDUyIEBAIHZv aWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmpl Y3QgJm1lc3NhZ2UpIGNvbnN0CisgICAgIH0KKyB9CisgCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxp c2hlcjo6ZW5xdWV1ZUJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2Up CisreworKyAgICBpZiAod2ViQ2hhbm5lbC0+ZF9mdW5jKCktPnRyYW5zcG9ydHMuaXNFbXB0eSgp KSB7CisrICAgICAgICBxV2FybmluZygiUVdlYkNoYW5uZWwgaXMgbm90IGNvbm5lY3RlZCB0byBh bnkgdHJhbnNwb3J0cywgY2Fubm90IHNlbmQgbWVzc2FnZTogJXMiLAorKyAgICAgICAgICAgICAg ICAgUUpzb25Eb2N1bWVudChtZXNzYWdlKS50b0pzb24oKS5jb25zdERhdGEoKSk7CisrICAgICAg ICByZXR1cm47CisrICAgIH0KKysKKysgICAgZm9yIChhdXRvICp0cmFuc3BvcnQgOiB3ZWJDaGFu bmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cykgeworKyAgICAgICAgYXV0byAmc3RhdGUgPSB0cmFu c3BvcnRTdGF0ZVt0cmFuc3BvcnRdOworKyAgICAgICAgc3RhdGUucXVldWVkTWVzc2FnZXMuYXBw ZW5kKG1lc3NhZ2UpOworKyAgICB9CisrfQorKworK3ZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6 OmVucXVldWVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3Bv cnQgKnRyYW5zcG9ydCkKKyt7CisrICAgIGF1dG8gJnN0YXRlID0gdHJhbnNwb3J0U3RhdGVbdHJh bnNwb3J0XTsKKysgICAgc3RhdGUucXVldWVkTWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpOworK30K KysKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVwZGF0 ZXMoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorK3sKKysgICAgYXV0 byBmb3VuZCA9IHRyYW5zcG9ydFN0YXRlLmZpbmQodHJhbnNwb3J0KTsKKysgICAgaWYgKGZvdW5k ICE9IHRyYW5zcG9ydFN0YXRlLmVuZCgpICYmIGZvdW5kLnZhbHVlKCkuY2xpZW50SXNJZGxlCisr ICAgICAgICAmJiAhZm91bmQudmFsdWUoKS5xdWV1ZWRNZXNzYWdlcy5pc0VtcHR5KCkpIHsKKysK KysgICAgICAgIC8vIElmIHRoZSBjbGllbnQgaXMgY29ubmVjdGVkIHdpdGggYW4gaW4tcHJvY2Vz cyB0cmFuc3BvcnQsIGl0IGNhbgorKyAgICAgICAgLy8gaGFwcGVuIHRoYXQgYSBtZXNzYWdlIHRy aWdnZXJzIGEgc3Vic2VxdWVudCBwcm9wZXJ0eSBjaGFuZ2UuIEluCisrICAgICAgICAvLyB0aGF0 IGNhc2UsIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHF1ZXVlZCBtZXNzYWdlcyBoYXZlIGFs cmVhZHkKKysgICAgICAgIC8vIGJlZW4gY2xlYXJlZDsgb3RoZXJ3aXNlIHRoZSByZWN1cnNpdmUg Y2FsbCB3aWxsIHNlbmQgZXZlcnl0aGlnIGFnYWluLgorKyAgICAgICAgLy8gQ2FzZSBpbiBwb2lu dDogVGhlIHFtbHdlYmNoYW5uZWwgdGVzdHMgZmFpbCBpZiB3ZSBkb24ndCBjbGVhciB0aGUKKysg ICAgICAgIC8vIHF1ZXVlZCBtZXNzYWdlcyBiZWZvcmUgc2VuZGluZyB0aGVtIG91dC4KKysgICAg ICAgIC8vIEZvciB0aGF0IHNhbWUgcmVhc29uIHNldCB0aGUgY2xpZW50IHRvICJidXN5IiAoYWth IG5vbi1pZGxlKSBqdXN0CisrICAgICAgICAvLyByaWdodCBiZWZvcmUgc2VuZGluZyBvdXQgdGhl IG1lc3NhZ2VzOyBvdGhlcndpc2UgYSBwb3RlbnRpYWwKKysgICAgICAgIC8vICJJZGxlIiB0eXBl IG1lc3NhZ2Ugd2lsbCBub3QgY29ycmVjdGx5IHJlc3RvcmUgdGhlIElkbGUgc3RhdGUuCisrICAg ICAgICBjb25zdCBhdXRvIG1lc3NhZ2VzID0gc3RkOjptb3ZlKGZvdW5kLnZhbHVlKCkucXVldWVk TWVzc2FnZXMpOworKyAgICAgICAgUV9BU1NFUlQoZm91bmQudmFsdWUoKS5xdWV1ZWRNZXNzYWdl cy5pc0VtcHR5KCkpOworKyAgICAgICAgZm91bmQudmFsdWUoKS5jbGllbnRJc0lkbGUgPSBmYWxz ZTsKKysKKysgICAgICAgIGZvciAoY29uc3QgYXV0byAmbWVzc2FnZSA6IG1lc3NhZ2VzKSB7Cisr ICAgICAgICAgICAgdHJhbnNwb3J0LT5zZW5kTWVzc2FnZShtZXNzYWdlKTsKKysgICAgICAgIH0K KysgICAgfQorK30KKysKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpoYW5kbGVNZXNzYWdl KGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0 ICp0cmFuc3BvcnQpCisgeworICAgICBpZiAoIXdlYkNoYW5uZWwtPmRfZnVuYygpLT50cmFuc3Bv cnRzLmNvbnRhaW5zKHRyYW5zcG9ydCkpIHsKK0BAIC04NjYsNyArOTEyLDcgQEAgdm9pZCBRTWV0 YU9iamVjdFB1Ymxpc2hlcjo6aGFuZGxlTWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2Fn ZSwgUVdlYkNoYW5uZWwKKyAKKyAgICAgY29uc3QgTWVzc2FnZVR5cGUgdHlwZSA9IHRvVHlwZSht ZXNzYWdlLnZhbHVlKEtFWV9UWVBFKSk7CisgICAgIGlmICh0eXBlID09IFR5cGVJZGxlKSB7Cist ICAgICAgICBzZXRDbGllbnRJc0lkbGUodHJ1ZSk7CisrICAgICAgICBzZXRDbGllbnRJc0lkbGUo dHJ1ZSwgdHJhbnNwb3J0KTsKKyAgICAgfSBlbHNlIGlmICh0eXBlID09IFR5cGVJbml0KSB7Cisg ICAgICAgICBpZiAoIW1lc3NhZ2UuY29udGFpbnMoS0VZX0lEKSkgeworICAgICAgICAgICAgIHFX YXJuaW5nKCJKU09OIG1lc3NhZ2Ugb2JqZWN0IGlzIG1pc3NpbmcgdGhlIGlkIHByb3BlcnR5OiAl cyIsCitAQCAtOTEzLDkgKzk1OSw5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmhhbmRs ZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsCisgICAgICAg ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICB0cmFuc3BvcnQtPnNlbmRNZXNzYWdlKGNy ZWF0ZVJlc3BvbnNlKG1lc3NhZ2UudmFsdWUoS0VZX0lEKSwgd3JhcFJlc3VsdChyZXN1bHQsIHRy YW5zcG9ydCkpKTsKKyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBlQ29ubmVjdFRvU2ln bmFsKSB7CistICAgICAgICAgICAgc2lnbmFsSGFuZGxlci5jb25uZWN0VG8ob2JqZWN0LCBtZXNz YWdlLnZhbHVlKEtFWV9TSUdOQUwpLnRvSW50KC0xKSk7CisrICAgICAgICAgICAgc2lnbmFsSGFu ZGxlckZvcihvYmplY3QpLT5jb25uZWN0VG8ob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9TSUdO QUwpLnRvSW50KC0xKSk7CisgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlwZURpc2Nvbm5l Y3RGcm9tU2lnbmFsKSB7CistICAgICAgICAgICAgc2lnbmFsSGFuZGxlci5kaXNjb25uZWN0RnJv bShvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQoLTEpKTsKKysgICAgICAg ICAgICBzaWduYWxIYW5kbGVyRm9yKG9iamVjdCktPmRpc2Nvbm5lY3RGcm9tKG9iamVjdCwgbWVz c2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOworICAgICAgICAgfSBlbHNlIGlmICh0 eXBlID09IFR5cGVTZXRQcm9wZXJ0eSkgeworICAgICAgICAgICAgIHNldFByb3BlcnR5KG9iamVj dCwgbWVzc2FnZS52YWx1ZShLRVlfUFJPUEVSVFkpLnRvSW50KC0xKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICBtZXNzYWdlLnZhbHVlKEtFWV9WQUxVRSkpOworQEAgLTkzMSw2ICs5NzcsNyBA QCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZXRCbG9ja1VwZGF0ZXMoYm9vbCBibG9jaykK KyAgICAgYmxvY2tVcGRhdGVzID0gYmxvY2s7CisgCisgICAgIGlmICghYmxvY2tVcGRhdGVzKSB7 CisrICAgICAgICB0aW1lci5zdGFydChQUk9QRVJUWV9VUERBVEVfSU5URVJWQUwsIHRoaXMpOwor ICAgICAgICAgc2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKTsKKyAgICAgfSBlbHNlIGlmICh0 aW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgICB0aW1lci5zdG9wKCk7CitAQCAtOTQ4LDQgKzk5 NSwxNSBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjp0aW1lckV2ZW50KFFUaW1lckV2ZW50 ICpldmVudCkKKyAgICAgfQorIH0KKyAKKytTaWduYWxIYW5kbGVyPFFNZXRhT2JqZWN0UHVibGlz aGVyPiAqUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNpZ25hbEhhbmRsZXJGb3IoY29uc3QgUU9iamVj dCAqb2JqZWN0KQorK3sKKysgICAgYXV0byB0aHJlYWQgPSBvYmplY3QtPnRocmVhZCgpOworKyAg ICBhdXRvIGl0ID0gc2lnbmFsSGFuZGxlcnMuZmluZCh0aHJlYWQpOworKyAgICBpZiAoaXQgPT0g c2lnbmFsSGFuZGxlcnMuZW5kKCkpIHsKKysgICAgICAgIGl0ID0gc2lnbmFsSGFuZGxlcnMuZW1w bGFjZSh0aHJlYWQsIHRoaXMpLmZpcnN0OworKyAgICAgICAgaXQtPnNlY29uZC5tb3ZlVG9UaHJl YWQodGhyZWFkKTsKKysgICAgfQorKyAgICByZXR1cm4gJml0LT5zZWNvbmQ7CisrfQorKworIFFU X0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwv cW1ldGFvYmplY3RwdWJsaXNoZXJfcC5oIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3Ft ZXRhb2JqZWN0cHVibGlzaGVyX3AuaAoraW5kZXggYmJkOTg3NS4uNDcxM2VmMSAxMDA2NDQKKy0t LSBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlcl9wLmgK KysrKyBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlcl9w LmgKK0BAIC01OSw2ICs1OSw5IEBACisgI2luY2x1ZGUgPFFCYXNpY1RpbWVyPgorICNpbmNsdWRl IDxRUG9pbnRlcj4KKyAjaW5jbHVkZSA8UUpzb25PYmplY3Q+CisrI2luY2x1ZGUgPFFRdWV1ZT4K KysKKysjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyAKKyAjaW5jbHVkZSAicXdlYmNoYW5uZWxn bG9iYWwuaCIKKyAKK0BAIC0xMDksMTcgKzExMiwzNiBAQCBwdWJsaWM6CisgICAgICAqLworICAg ICB2b2lkIGJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UpIGNvbnN0 OworIAorKyAgICAvKioKKysgICAgICogRW5xdWV1ZSB0aGUgZ2l2ZW4gQHAgbWVzc2FnZSB0byBh bGwga25vd24gdHJhbnNwb3J0cy4KKysgICAgICovCisrICAgIHZvaWQgZW5xdWV1ZUJyb2FkY2Fz dE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UpOworKworKyAgICAvKioKKysgICAg ICogRW5xdWV1ZSB0aGUgZ2l2ZW4gQHAgbWVzc2FnZSB0byBAcCB0cmFuc3BvcnQuCisrICAgICAq LworKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLCBR V2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworKworKyAgICAvKioKKysg ICAgICogSWYgY2xpZW50IGZvciBnaXZlbiBAcCB0cmFuc3BvcnQgaXMgaWRsZSwgc2VuZCBxdWV1 ZWQgbWVzc2FnZWQgdG8gQHAgdHJhbnNwb3J0IGFuZCB0aGVuIG1hcmsKKysgICAgICogdGhlIGNs aWVudCBhcyBub3QgaWRsZS4KKysgICAgICovCisrICAgIHZvaWQgc2VuZEVucXVldWVkUHJvcGVy dHlVcGRhdGVzKFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisrCisg ICAgIC8qKgorICAgICAgKiBTZXJpYWxpemUgdGhlIFFNZXRhT2JqZWN0IG9mIEBwIG9iamVjdCBh bmQgcmV0dXJuIGl0IGluIEpTT04gZm9ybS4KKyAgICAgICovCisgICAgIFFKc29uT2JqZWN0IGNs YXNzSW5mb0Zvck9iamVjdChjb25zdCBRT2JqZWN0ICpvYmplY3QsIFFXZWJDaGFubmVsQWJzdHJh Y3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisgCisgICAgIC8qKgorLSAgICAgKiBTZXQgdGhlIGNs aWVudCB0byBpZGxlIG9yIGJ1c3ksIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBAcCBpc0lkbGUuCist ICAgICAqCistICAgICAqIFdoZW4gdGhlIHZhbHVlIGNoYW5nZWQsIHN0YXJ0L3N0b3AgdGhlIHBy b3BlcnR5IHVwZGF0ZSB0aW1lciBhY2NvcmRpbmdseS4KKysgICAgICogU2V0IHRoZSBjbGllbnQg dG8gaWRsZSBvciBidXN5IGZvciBhIHNpbmdsZSBAcCB0cmFuc3BvcnQsIGJhc2VkIG9uIHRoZSB2 YWx1ZSBvZiBAcCBpc0lkbGUuCisrICAgICAqLworKyAgICB2b2lkIHNldENsaWVudElzSWRsZShi b29sIGlzSWRsZSwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKysK KysgICAgLyoqCisrICAgICAqIENoZWNrIHRoYXQgY2xpZW50IGlzIGlkbGUgZm9yIEBwIHRyYW5z cG9ydC4KKyAgICAgICovCistICAgIHZvaWQgc2V0Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxlKTsK KysgICAgYm9vbCBpc0NsaWVudElkbGUoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJh bnNwb3J0KTsKKyAKKyAgICAgLyoqCisgICAgICAqIEluaXRpYWxpemUgY2xpZW50cyBieSBzZW5k aW5nIHRoZW0gdGhlIGNsYXNzIGluZm9ybWF0aW9uIG9mIHRoZSByZWdpc3RlcmVkIG9iamVjdHMu CitAQCAtMjcyLDEwICsyOTQsMTggQEAgcHJpdmF0ZToKKyAgICAgZnJpZW5kIGNsYXNzIFRlc3RX ZWJDaGFubmVsOworIAorICAgICBRV2ViQ2hhbm5lbCAqd2ViQ2hhbm5lbDsKKy0gICAgU2lnbmFs SGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4gc2lnbmFsSGFuZGxlcjsKKysgICAgc3RkOjp1 bm9yZGVyZWRfbWFwPGNvbnN0IFFUaHJlYWQqLCBTaWduYWxIYW5kbGVyPFFNZXRhT2JqZWN0UHVi bGlzaGVyPj4gc2lnbmFsSGFuZGxlcnM7CisrICAgIFNpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQ dWJsaXNoZXI+ICpzaWduYWxIYW5kbGVyRm9yKGNvbnN0IFFPYmplY3QgKm9iamVjdCk7CisgCist ICAgIC8vIHRydWUgd2hlbiB0aGUgY2xpZW50IGlzIGlkbGUsIGZhbHNlIG90aGVyd2lzZQorLSAg ICBib29sIGNsaWVudElzSWRsZTsKKysgICAgc3RydWN0IFRyYW5zcG9ydFN0YXRlCisrICAgIHsK KysgICAgICAgIFRyYW5zcG9ydFN0YXRlKCkgOiBjbGllbnRJc0lkbGUoZmFsc2UpIHsgfQorKyAg ICAgICAgLy8gdHJ1ZSB3aGVuIHRoZSBjbGllbnQgaXMgaWRsZSwgZmFsc2Ugb3RoZXJ3aXNlCisr ICAgICAgICBib29sIGNsaWVudElzSWRsZTsKKysgICAgICAgIC8vIG1lc3NhZ2VzIHRvIHNlbmQK KysgICAgICAgIFFRdWV1ZTxRSnNvbk9iamVjdD4gcXVldWVkTWVzc2FnZXM7CisrICAgIH07Cisr ICAgIFFIYXNoPFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKiwgVHJhbnNwb3J0U3RhdGU+ IHRyYW5zcG9ydFN0YXRlOworIAorICAgICAvLyB0cnVlIHdoZW4gbm8gcHJvcGVydHkgdXBkYXRl cyBzaG91bGQgYmUgc2VudCwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgIGJvb2wgYmxvY2tVcGRhdGVz OworZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWduYWxoYW5kbGVy X3AuaCBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWduYWxoYW5kbGVyX3AuaAoraW5k ZXggMjdhZmFkYi4uZDc3MzczYyAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hh bm5lbC9zaWduYWxoYW5kbGVyX3AuaAorKysrIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVs L3NpZ25hbGhhbmRsZXJfcC5oCitAQCAtNTYsNiArNTYsNyBAQAorICNpbmNsdWRlIDxRVmVjdG9y PgorICNpbmNsdWRlIDxRTWV0YU1ldGhvZD4KKyAjaW5jbHVkZSA8UURlYnVnPgorKyNpbmNsdWRl IDxRVGhyZWFkPgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTcxLDYgKzcyLDcgQEAg c3RhdGljIGNvbnN0IGludCBzX2Rlc3Ryb3llZFNpZ25hbEluZGV4ID0gUU9iamVjdDo6c3RhdGlj TWV0YU9iamVjdC5pbmRleE9mTWV0aG8KKyB0ZW1wbGF0ZTxjbGFzcyBSZWNlaXZlcj4KKyBjbGFz cyBTaWduYWxIYW5kbGVyIDogcHVibGljIFFPYmplY3QKKyB7CisrICAgIFFfRElTQUJMRV9DT1BZ KFNpZ25hbEhhbmRsZXIpCisgcHVibGljOgorICAgICBTaWduYWxIYW5kbGVyKFJlY2VpdmVyICpy ZWNlaXZlciwgUU9iamVjdCAqcGFyZW50ID0gMCk7CisgCitAQCAtMjY4LDYgKzI3MCw3IEBAIGlu dCBTaWduYWxIYW5kbGVyPFJlY2VpdmVyPjo6cXRfbWV0YWNhbGwoUU1ldGFPYmplY3Q6OkNhbGwg Y2FsbCwgaW50IG1ldGhvZElkLCB2CisgICAgIGlmIChjYWxsID09IFFNZXRhT2JqZWN0OjpJbnZv a2VNZXRhTWV0aG9kKSB7CisgICAgICAgICBjb25zdCBRT2JqZWN0ICpvYmplY3QgPSBzZW5kZXIo KTsKKyAgICAgICAgIFFfQVNTRVJUKG9iamVjdCk7CisrICAgICAgICBRX0FTU0VSVChRVGhyZWFk OjpjdXJyZW50VGhyZWFkKCkgPT0gb2JqZWN0LT50aHJlYWQoKSk7CisgICAgICAgICBRX0FTU0VS VChzZW5kZXJTaWduYWxJbmRleCgpID09IG1ldGhvZElkKTsKKyAgICAgICAgIFFfQVNTRVJUKG1f Y29ubmVjdGlvbnNDb3VudGVyLmNvbnRhaW5zKG9iamVjdCkpOworICAgICAgICAgUV9BU1NFUlQo bV9jb25uZWN0aW9uc0NvdW50ZXIudmFsdWUob2JqZWN0KS5jb250YWlucyhtZXRob2RJZCkpOwor ZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5j cHAgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdlYmNoYW5uZWwuY3BwCitpbmRl eCA5ODkxNjg3Li4zY2E4MWMyIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8v cW1sL3Rlc3R3ZWJjaGFubmVsLmNwcAorKysrIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vcW1s L3Rlc3R3ZWJjaGFubmVsLmNwcAorQEAgLTQ2LDcgKzQ2LDExIEBAIFRlc3RXZWJDaGFubmVsOjp+ VGVzdFdlYkNoYW5uZWwoKQorIAorIGJvb2wgVGVzdFdlYkNoYW5uZWw6OmNsaWVudElzSWRsZSgp IGNvbnN0CisgeworLSAgICByZXR1cm4gUVdlYkNoYW5uZWw6OmRfZnVuYygpLT5wdWJsaXNoZXIt PmNsaWVudElzSWRsZTsKKysgICAgZm9yIChhdXRvICp0cmFuc3BvcnQgOiBRV2ViQ2hhbm5lbDo6 ZF9mdW5jKCktPnRyYW5zcG9ydHMpIHsKKysgICAgICAgIGlmIChRV2ViQ2hhbm5lbDo6ZF9mdW5j KCktPnB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKHRyYW5zcG9ydCkpCisrICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisrICAgIH0KKysgICAgcmV0dXJuIGZhbHNlOworIH0KKyAKKyBRVF9FTkRfTkFN RVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90 c3Rfd2ViY2hhbm5lbC5jcHAgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3Rz dF93ZWJjaGFubmVsLmNwcAoraW5kZXggMTgxZGE5ZS4uMzdmOTg5YSAxMDA2NDQKKy0tLSBhL3F0 d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwCisrKysg Yi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmNwcAor QEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0VHJhbnNwb3J0V3Jh cE9iamVjdFByb3BlcnRpZXMoKQorICAgICBEdW1teVRyYW5zcG9ydCAqZHVtbXlUcmFuc3BvcnQg PSBuZXcgRHVtbXlUcmFuc3BvcnQodGhpcyk7CisgICAgIGNoYW5uZWwuY29ubmVjdFRvKGR1bW15 VHJhbnNwb3J0KTsKKyAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5pbml0aWFsaXpl Q2xpZW50KGR1bW15VHJhbnNwb3J0KTsKKy0gICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVy LT5zZXRDbGllbnRJc0lkbGUodHJ1ZSk7CisrICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hl ci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsIGR1bW15VHJhbnNwb3J0KTsKKyAKKyAgICAgUUNPTVBB UkUoY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT50cmFuc3BvcnRlZFdyYXBwZWRPYmplY3Rz LnNpemUoKSwgMCk7CisgCitAQCAtOTQzLDggKzk0Myw2IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6 OnRlc3RJbmZpbml0ZVJlY3Vyc2lvbigpCisgCisgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdEFz eW5jT2JqZWN0KCkKKyB7CistICAgIFFTS0lQKCJUaGlzIHRlc3QgaXMgYnJva2VuLiBTZWUgUVRC VUctODA3MjkiKTsKKy0KKyAgICAgUVdlYkNoYW5uZWwgY2hhbm5lbDsKKyAgICAgY2hhbm5lbC5j b25uZWN0VG8obV9kdW1teVRyYW5zcG9ydCk7CisgCitAQCAtOTkwLDYgKzk4OCw1MCBAQCB2b2lk IFRlc3RXZWJDaGFubmVsOjp0ZXN0QXN5bmNPYmplY3QoKQorICAgICB0aHJlYWQud2FpdCgpOwor IH0KKyAKKyt2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0UHJvcGVydHlNdWx0aXBsZVRyYW5zcG9y dHMoKQorK3sKKysgICAgRHVtbXlUcmFuc3BvcnQgdHJhbnNwb3J0MTsKKysgICAgRHVtbXlUcmFu c3BvcnQgdHJhbnNwb3J0MjsKKysKKysgICAgUVdlYkNoYW5uZWwgY2hhbm5lbDsKKysgICAgUU1l dGFPYmplY3RQdWJsaXNoZXIgKnB1Ymxpc2hlciA9IGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hl cjsKKysKKysgICAgVGVzdE9iamVjdCB0ZXN0T2JqOworKyAgICB0ZXN0T2JqLnNldE9iamVjdE5h bWUoInRlc3RPYmplY3QiKTsKKysgICAgY2hhbm5lbC5yZWdpc3Rlck9iamVjdCh0ZXN0T2JqLm9i amVjdE5hbWUoKSwgJnRlc3RPYmopOworKyAgICBjaGFubmVsLmNvbm5lY3RUbygmdHJhbnNwb3J0 MSk7CisrICAgIGNoYW5uZWwuY29ubmVjdFRvKCZ0cmFuc3BvcnQyKTsKKysKKysgICAgdGVzdE9i ai5zZXRQcm9wKCJIZWxsbyIpOworKworKyAgICBwdWJsaXNoZXItPmluaXRpYWxpemVDbGllbnQo JnRyYW5zcG9ydDEpOworKyAgICBwdWJsaXNoZXItPmluaXRpYWxpemVDbGllbnQoJnRyYW5zcG9y dDIpOworKyAgICBwdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0MSk7 CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwgdHJ1 ZSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQyKSwg ZmFsc2UpOworKyAgICBRVkVSSUZZKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50KCkuaXNFbXB0eSgp KTsKKysgICAgUVZFUklGWSh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLmlzRW1wdHkoKSk7Cisr CisrICAgIHRlc3RPYmouc2V0UHJvcCgiV29ybGQiKTsKKysgICAgUVRSWV9DT01QQVJFX1dJVEhf VElNRU9VVCh0cmFuc3BvcnQxLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMXUsIDIwMDApOworKyAg ICBRQ09NUEFSRSh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMHUpOworKyAgICBw dWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0Mik7CisrICAgIFFUUllf Q09NUEFSRV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDF1 LCAyMDAwKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9y dDEpLCBmYWxzZSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFu c3BvcnQyKSwgZmFsc2UpOworKworKyAgICB0ZXN0T2JqLnNldFByb3AoIiEhISIpOworKyAgICBw dWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0Mik7CisrICAgIFFDT01Q QVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQyKSwgdHJ1ZSk7CisrICAgIFFD T01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwgZmFsc2UpOworKyAg ICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDIubWVzc2FnZXNTZW50KCkuc2l6 ZSgpLCAydSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50KCku c2l6ZSgpLCAxdSk7CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFu c3BvcnQxKTsKKysgICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9VVCh0cmFuc3BvcnQxLm1lc3Nh Z2VzU2VudCgpLnNpemUoKSwgMnUsIDIwMDApOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlz Q2xpZW50SWRsZSgmdHJhbnNwb3J0MSksIGZhbHNlKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVy LT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCBmYWxzZSk7CisrfQorKworIGNsYXNzIEZ1bmN0 aW9uV3JhcHBlciA6IHB1YmxpYyBRT2JqZWN0CisgeworICAgICBRX09CSkVDVAorQEAgLTEwODIs NyArMTEyNCw3IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OmJlbmNoSW5pdGlhbGl6ZUNsaWVudHMo KQorIAorICAgICAgICAgcHVibGlzaGVyLT5wcm9wZXJ0eVVwZGF0ZXNJbml0aWFsaXplZCA9IGZh bHNlOworICAgICAgICAgcHVibGlzaGVyLT5zaWduYWxUb1Byb3BlcnR5TWFwLmNsZWFyKCk7Cist ICAgICAgICBwdWJsaXNoZXItPnNpZ25hbEhhbmRsZXIuY2xlYXIoKTsKKysgICAgICAgIHB1Ymxp c2hlci0+c2lnbmFsSGFuZGxlcnMuY2xlYXIoKTsKKyAgICAgfQorIH0KKyAKK0BAIC0xMTA3LDcg KzExNDksNyBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjpiZW5jaFByb3BlcnR5VXBkYXRlcygpCisg ICAgICAgICAgICAgb2JqLT5jaGFuZ2UoKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGNoYW5u ZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+Y2xpZW50SXNJZGxlID0gdHJ1ZTsKKysgICAgICAgIGNo YW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsIG1fZHVtbXlU cmFuc3BvcnQpOworICAgICAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5zZW5kUGVu ZGluZ1Byb3BlcnR5VXBkYXRlcygpOworICAgICB9CisgfQorZGlmZiAtLWdpdCBhL3F0d2ViY2hh bm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaCBiL3F0d2ViY2hhbm5l bC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaAoraW5kZXggZWFlMjFmNC4u ZGQ0ZTY5MCAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwv dHN0X3dlYmNoYW5uZWwuaAorKysrIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5l bC90c3Rfd2ViY2hhbm5lbC5oCitAQCAtMzQ4LDYgKzM0OCw3IEBAIHByaXZhdGUgc2xvdHM6Cisg ICAgIHZvaWQgdGVzdEpzb25Ub1ZhcmlhbnQoKTsKKyAgICAgdm9pZCB0ZXN0SW5maW5pdGVSZWN1 cnNpb24oKTsKKyAgICAgdm9pZCB0ZXN0QXN5bmNPYmplY3QoKTsKKysgICAgdm9pZCB0ZXN0UHJv cGVydHlNdWx0aXBsZVRyYW5zcG9ydHMoKTsKKyAgICAgdm9pZCB0ZXN0RGVsZXRpb25EdXJpbmdN ZXRob2RJbnZvY2F0aW9uX2RhdGEoKTsKKyAgICAgdm9pZCB0ZXN0RGVsZXRpb25EdXJpbmdNZXRo b2RJbnZvY2F0aW9uKCk7CisgCitTdWJtb2R1bGUgcXR3ZWJlbmdpbmUgZjMyODA1NGQuLi4zOGUw ZGY2YyAoY29tbWl0cyBub3QgcHJlc2VudCkKK1N1Ym1vZHVsZSBxdHdlYnNvY2tldHMgNjU4NTA5 NTQuLjYzZmI4ZGExOgorZGlmZiAtLWdpdCBhL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9x d2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAgYi9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMv cXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwCitpbmRleCAyYWZmZGQ1Li45NWYxMTk0IDEwMDY0 NAorLS0tIGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRkYXRhcHJvY2Vz c29yLmNwcAorKysrIGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRkYXRh cHJvY2Vzc29yLmNwcAorQEAgLTI3Myw2ICsyNzMsNyBAQCB2b2lkIFFXZWJTb2NrZXREYXRhUHJv Y2Vzc29yOjpjbGVhcigpCisgICAgIGlmICghbV9wQ29udmVydGVyU3RhdGUpCisgICAgICAgICBt X3BDb252ZXJ0ZXJTdGF0ZSA9IG5ldyBRVGV4dENvZGVjOjpDb252ZXJ0ZXJTdGF0ZShRVGV4dENv ZGVjOjpDb252ZXJ0SW52YWxpZFRvTnVsbCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVGV4dENvZGVjOjpJZ25vcmVIZWFkZXIp OworKyAgICBmcmFtZS5jbGVhcigpOworIH0KKyAKKyAvKiEKK2RpZmYgLS1naXQgYS9xdHdlYnNv Y2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29sLmNwcCBiL3F0d2Vic29ja2V0 cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwCitpbmRleCBkZjg3YTkzLi5k MDQ2NWYxIDEwMDY0NAorLS0tIGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2Nr ZXRwcm90b2NvbC5jcHAKKysrKyBiL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29j a2V0cHJvdG9jb2wuY3BwCitAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgUVdlYlNvY2tldFByb3Rv Y29sOjptYXNrKGNoYXIgKnBheWxvYWQsIHF1aW50NjQgc2l6ZSwgcXVpbnQzMiBtYXNraW5nS2V5 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWludDgoKG1hc2tpbmdLZXkgJiAweDAw MDBGRjAwdSkgPj4gOCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aW50OCgobWFz a2luZ0tleSAmIDB4MDAwMDAwRkZ1KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Cist ICAgIGludCBpID0gMDsKKysgICAgcXVpbnQ2NCBpID0gMDsKKyAgICAgd2hpbGUgKHNpemUtLSA+ IDApCisgICAgICAgICAqcGF5bG9hZCsrIF49IG1hc2tbaSsrICUgNF07CisgfQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9xdDUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQppbmRleCBhNzlk MjVlNjlkYTgxLi42ZGRkY2U3ZjNlNDY2IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQpAQCAtMiwxMSArMiwxMSBAQAogIwogIyByZXZi dW1wIGxpYnF0eGRnIGFmdGVyIGJ1bXBpbmcgcGF0Y2ggdmVyc2lvbgogcGtnbmFtZT1xdDUKLXZl cnNpb249NS4xNS43KzIwMjIxMTE5Cit2ZXJzaW9uPTUuMTUuOAorcmV2aXNpb249MQorYnVpbGRf c3R5bGU9bWV0YQogIyBjb21taXQgZjhjOWZiMzA0YmMzZTUzYjNhYTA3Zjk2MmNkNzRlOTE2MGRl Y2NjYwogIyBiYXNlIHJlcG86IGh0dHBzOi8vaW52ZW50LmtkZS5vcmcvcXQvcXQvcXQ1Ci1yZXZp c2lvbj01Ci1idWlsZF9zdHlsZT1tZXRhCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIGNsYW5nIGZs ZXggcGVybCBnbGliLWRldmVsIHBrZy1jb25maWcKICBweXRob24gcmUyYyBydWJ5IHdoaWNoIgog bWFrZWRlcGVuZHM9IlNETDItZGV2ZWwgVnVsa2FuLUhlYWRlcnMgYWxzYS1saWItZGV2ZWwgZG91 YmxlLWNvbnZlcnNpb24tZGV2ZWwKQEAgLTI5LDggKzI5LDkgQEAgaG9tZXBhZ2U9Imh0dHBzOi8v cXQuaW8vIgogIyB0YXJiYWxsIGlzIGdlbmVyYXRlZCB3aXRoIGBnaXQgYXJjaGl2ZS1hbGwgcXQ1 LSR2ZXJzaW9uLnRhci5nemAKICMgdG8ga2VlcCB0aGUgc2l6ZSBzbWFsbGVyIHF0d2ViZW5naW5l LCBxdHdlYnZpZXcsIHF0ZG9jZ2FsbGVyeSwgcXRhY3RpdmVxdCBhbmQgcXRwaW0KICMgY2FuIGJl IG1hcmtlZCB3aXRoIHRoZSBleHBvcnQtaWdub3JlIGF0dHJpYnV0ZQotZGlzdGZpbGVzPSJodHRw czovL3ZvaWQuam9obm55bmF0b3IuZGV2L2Rpc3RmaWxlcy9xdDUtJHt2ZXJzaW9ufS50YXIuZ3oi Ci1jaGVja3N1bT05ZDU3YWY0NzFjNzgwMjlhMzYyMjc2YjdjOTkxMDhlYTAwOWY1MTFiYjliYTZm ZjZjYjg4NGY2ZGRkMjU1ZTlmCisjZGlzdGZpbGVzPSJodHRwczovL3ZvaWQuam9obm55bmF0b3Iu ZGV2L2Rpc3RmaWxlcy9xdDUtJHt2ZXJzaW9ufS50YXIuZ3oiCitkaXN0ZmlsZXM9Imh0dHBzOi8v ZG93bmxvYWQucXQuaW8vYXJjaGl2ZS9xdC81LjE1LyR7dmVyc2lvbn0vc2luZ2xlL3F0LWV2ZXJ5 d2hlcmUtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufS50YXIueHoiCitjaGVja3N1bT03NzZhOTMw MmMzMzY2NzFmOTQwNmE1M2JkMzBiOGUzNmY4MjU3NDJiMmVjNDRhNTdjMDgyMTdiZmYwZmE4NmI5 CiBweXRob25fdmVyc2lvbj0yICN1bnZlcmlmaWVkCiByZXBsYWNlcz0icXQ1LWRvYzw1LjYuMCBx dDUtcXVpY2sxPDUuNi4wIHF0NS1xdWljazEtZGV2ZWw8NS42LjAgcXQ1LXdlYmtpdDw1LjYuMCBx dDUtd2Via2l0LWRldmVsPDUuNi4wCiAgcXQ1LWVuZ2luaW88NS43LjEgcXQ1LWVuZ2luaW8tZGV2 ZWw8NS43LjEgcXQ1LXBsdWdpbi1ndGs8NS43LjEgcXQ1LWNhbnZhczNkPDUuMTMuMCIKQEAgLTI1 MCw3ICsyNTEsNiBAQCBkb19jb25maWd1cmUoKSB7CiAJIyBvcHRzKz0iIC12IgogCW9wdHMrPSIg LXNraXAgcXR3ZWJlbmdpbmUiCiAJb3B0cys9IiAtc2tpcCBxdHdlYnZpZXciCi0Jb3B0cys9IiAt c2tpcCBxdGRvY2dhbGxlcnkiCiAJb3B0cys9IiAtc2tpcCBxdHBpbSIKIAlvcHRzKz0iIC1za2lw IHF0c3lzdGVtcyIKIAlvcHRzKz0iIC1za2lwIHF0c3BlZWNoIgoKRnJvbSBjMjY0Yjc4MWVjNTMx NDViMGNlNTAxMGYxMWE1Mjg0OTlkNmIwZjU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzQvMTEzXSBxdGF2OiByZXZidW1wIGZvciBmZm1w ZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvcXRhdi90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNo YW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3F0YXYvdGVtcGxhdGUgYi9zcmNwa2dzL3F0YXYvdGVtcGxhdGUKaW5kZXggMzRjMzBiMmMw Yzc4Zi4uMmQwMGFkMTA0MzU1ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdGF2L3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAncXRhdicKIHBrZ25hbWU9cXRhdgogdmVyc2lvbj0xLjEzLjAKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFrZWRlcGVuZHM9InF0NS1xbWFr ZSBxdDUtaG9zdC10b29scyIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGliYXNzLWRldmVs IGxpYm9wZW5hbC1kZXZlbAorbWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgbGliYXNzLWRldmVs IGxpYm9wZW5hbC1kZXZlbAogIGxpYnZhLWdseC1kZXZlbCBsaWJYdi1kZXZlbCBwdWxzZWF1ZGlv LWRldmVsCiAgcXQ1LWRlY2xhcmF0aXZlLWRldmVsIHF0NS1zdmctZGV2ZWwKICBxdDUtcXVpY2tj b250cm9scyIKCkZyb20gMTUzMDAxNTk0OGQxNGU5NDA0NzFmOTA2NzFlNmU3NWMxMjY0OTk1MyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc1 LzExM10gcXRveDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3F0b3gvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0b3gvdGVtcGxhdGUgYi9zcmNwa2dzL3F0b3gvdGVt cGxhdGUKaW5kZXggMTYwMTlkN2VhZWM5ZS4uNWNlYTBiMTFiNjk3MSAxMDA2NDQKLS0tIGEvc3Jj cGtncy9xdG94L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXRveC90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0b3gnCiBwa2duYW1lPXF0b3gKIHZlcnNpb249 MS4xNy42Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmln dXJlX2FyZ3M9Ii1EVVBEQVRFX0NIRUNLPU9GRgogIC1ER0lUX0RFU0NSSUJFPSR7dmVyc2lvbn0K CkZyb20gZGZmYTY1ZjVmMmE5YmE2NmI4Y2UxN2E2MWMxYjgzNTYwMzRiNzYyMiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc2LzExM10gcmV0 cm9hcmNoOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcmV0cm9hcmNoL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUgYi9zcmNwa2dzL3Jl dHJvYXJjaC90ZW1wbGF0ZQppbmRleCAyODAxNmFhMDEyOWU2Li4yMGExNDE1OTEzYmU1IDEwMDY0 NAotLS0gYS9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JldHJvYXJj aC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3JldHJvYXJj aCcKIHBrZ25hbWU9cmV0cm9hcmNoCiB2ZXJzaW9uPTEuMTUuMAotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9Y29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1wcmVmaXg9L3Vz ciAtLXN5c2NvbmZkaXI9L2V0YyAtLWVuYWJsZS1uZXR3b3JraW5nCiAgLS1lbmFibGUtdWRldiAt LWRpc2FibGUtYnVpbHRpbmZsYWMgLS1kaXNhYmxlLWJ1aWx0aW5nbHNsYW5nCgpGcm9tIDAwOGU5 ODVhYTQ5OGIxYTUwMTBiZWFkYjljZTFjYmIzMWMwNjA5ZDAgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3Ny8xMTNdIHNjcmNweTogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3NjcmNweS90ZW1wbGF0ZSB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlIGIvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUKaW5kZXgg MDYyMDhjMzg5Y2E5Ny4uYTVkZTkzNWM3ZGVmNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9zY3JjcHkv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdzY3JjcHknCiBwa2duYW1lPXNjcmNweQogdmVyc2lvbj0yLjEK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJn cz0iLURjb21waWxlX3NlcnZlcj1mYWxzZQogIC1EcHJlYnVpbHRfc2VydmVyPS91c3Ivc2hhcmUv c2NyY3B5L3NjcmNweS1zZXJ2ZXItdiR7dmVyc2lvbn0iCgpGcm9tIDI2NmUwMmRkN2E3YzlhOGE0 MWVmYTYxY2RkYzQxM2FiNDhmNjYyMWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEg LTA0MDAKU3ViamVjdDogW1BBVENIIDA3OC8xMTNdIHNwZWstYWx0ZXJuYXRpdmU6IHJldmJ1bXAg Zm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRl IHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlIGIvc3Jj cGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlCmluZGV4IGQ2NTA4NmI4ZjAwOGMuLjA1MjQ2 ZjFiOGQwYzggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NwZWstYWx0ZXJuYXRpdmUnCiBwa2duYW1lPXNwZWstYWx0 ZXJuYXRpdmUKIHZlcnNpb249MC44LjIuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBnZXR0ZXh0LWRl dmVsIGludGx0b29sIGxpYnRvb2wgcGtnLWNvbmZpZyB3eFdpZGdldHMtY29tbW9uIgotbWFrZWRl cGVuZHM9ImZmbXBlZy1kZXZlbCB3eFdpZGdldHMtZ3RrMy1kZXZlbCIKLWRlcGVuZHM9ImZmbXBl ZyIKK21ha2VkZXBlbmRzPSJmZm1wZWc0LWRldmVsIHd4V2lkZ2V0cy1ndGszLWRldmVsIgorZGVw ZW5kcz0iZmZtcGVnNCIKIHNob3J0X2Rlc2M9IkFjb3VzdGljIHNwZWN0cnVtIGFuYWx5c2VyIgog bWFpbnRhaW5lcj0iS2FydGlrIFNpbmdoIDxrYXJ0aWsueW53YUBnbWFpbC5jb20+IgogbGljZW5z ZT0iR1BMLTMuMC1vci1sYXRlciIKCkZyb20gNDRmYzY1NWQ4MGY1N2VkZTI0OWE4YzVkODJmNGEw N2NjYTM4NTY4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDc5LzExM10gc3NyOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNy Y3BrZ3Mvc3NyL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3NyL3RlbXBsYXRlIGIv c3JjcGtncy9zc3IvdGVtcGxhdGUKaW5kZXggYjA1NWI5ZWMwNzc0YS4uMzQ0OGNhMTEwZWIwYyAx MDA2NDQKLS0tIGEvc3JjcGtncy9zc3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zc3IvdGVtcGxh dGUKQEAgLTEsMTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NzcicKIHBrZ25hbWU9 c3NyCiB2ZXJzaW9uPTAuNC40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1j bWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9RVDU9T04iCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWciCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnLWRldmVsIGdsdS1k ZXZlbCBqYWNrLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKK21ha2VkZXBlbmRzPSJhbHNhLWxpYi1k ZXZlbCBmZm1wZWc0LWRldmVsIGdsdS1kZXZlbCBqYWNrLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwK ICBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXgxMWV4dHJhcy1kZXZlbCBsaWJYaW5lcmFtYS1kZXZlbCB2 NGwtdXRpbHMtZGV2ZWwiCiBkZXBlbmRzPSJkZXNrdG9wLWZpbGUtdXRpbHMgaGljb2xvci1pY29u LXRoZW1lIgogc2hvcnRfZGVzYz0iU2ltcGxlIFNjcmVlbiBSZWNvcmRlciBmb3IgcHJvZ3JhbXMg YW5kIGdhbWVzIgoKRnJvbSA4NjEyOTY0ODUwOGIwMDk4MjZlYzk0NjA2ODc5ODQ4MjNlZmY1NWFm IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw ODAvMTEzXSBzdW1vOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc3Vtby90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3Vtby90 ZW1wbGF0ZQppbmRleCAwZjliOWVjODE1ZjU2Li5hM2ZlMTM0YWE1YWNjIDEwMDY0NAotLS0gYS9z cmNwa2dzL3N1bW8vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zdW1vL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc3VtbycKIHBrZ25hbWU9c3VtbwogdmVyc2lv bj0xLjEyLjAKLXJldmlzaW9uPTUKK3JldmlzaW9uPTYKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0 bWFrZWRlcGVuZHM9ImxpYmdkYWwtdG9vbHMgcGtnLWNvbmZpZyBzd2lnIHB5dGhvbjMtc2V0dXB0 b29scyIKIG1ha2VkZXBlbmRzPSJweXRob24zLWRldmVsIGZmbXBlZy1kZXZlbCBmb3gtZGV2ZWwg Z2wycHMtZGV2ZWwgbGliZ2RhbC1kZXZlbAoKRnJvbSAxODE1NTEwZGFjMTQwNjBkNmIyMzBkMzM1 Y2JhNTQxMWIyMTBlYTgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwODEvMTEzXSBzeW5maWc6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAgYW5k IG1sdDcKCi0tLQogc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoIHwgNzEgKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9zeW5maWcvdGVtcGxhdGUgICAgICAg ICAgICAgIHwgIDYgKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDMgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1w ZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBh dGNoIGIvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjEwNzgwYjQyNzgyZjQKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL3N5bmZpZy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAgLTAsMCArMSw3MSBA QAorLS0tIGEvc3JjL21vZHVsZXMvbW9kX2xpYmF2Y29kZWMvdHJndF9hdi5jcHAJMjAyMi0xMC0y NSAwOToxNDoxMi4wMDAwMDAwMDAgLTA0MDAKKysrKyBiL3NyYy9tb2R1bGVzL21vZF9saWJhdmNv ZGVjL3RyZ3RfYXYuY3BwCTIwMjMtMDUtMDUgMjE6MzQ6MTcuODk5MTk0NTU5IC0wNDAwCitAQCAt MzgsNiArNDEsNyBAQAorIGV4dGVybiAiQyIKKyB7CisgI2lmZGVmIEhBVkVfTElCQVZGT1JNQVRf QVZGT1JNQVRfSAorKyMJaW5jbHVkZSA8bGliYXZjb2RlYy9hdmNvZGVjLmg+CisgIwlpbmNsdWRl IDxsaWJhdmZvcm1hdC9hdmZvcm1hdC5oPgorICNlbGlmIGRlZmluZWQoSEFWRV9BVkZPUk1BVF9I KQorICMJaW5jbHVkZSA8YXZmb3JtYXQuaD4KK0BAIC0xNTUsMTEgKzE1NiwxMSBAQAorICAgICB9 CisgCisgCWJvb2wgb3Blbl92aWRlb19zdHJlYW0oKSB7CistCQlpZiAoYXZjb2RlY19vcGVuMih2 aWRlb19jb250ZXh0LCBOVUxMLCBOVUxMKSA8IDApIHsKKysJCWlmIChhdmNvZGVjX29wZW4yKHZp ZGVvX2NvbnRleHQsIG51bGxwdHIsIG51bGxwdHIpIDwgMCkgeworIAkJCXN5bmZpZzo6ZXJyb3Io IlRhcmdldF9MaWJBVkNvZGVjOiBjb3VsZCBub3Qgb3BlbiB2aWRlbyBjb2RlYyIpOworIAkJCS8v IHNlZW1zIHRoZSBjYWxsaW5nIG9mIGF2Y29kZWNfZnJlZV9jb250ZXh0IGFmdGVyIGVycm9yIHdp bGwgY2F1c2UgY3Jhc2gKKyAJCQkvLyBzbyBqdXN0IGZvcmdldCBhYm91dCB0aGlzIGNvbnRleHQK Ky0JCQl2aWRlb19jb250ZXh0ID0gTlVMTDsKKysJCQl2aWRlb19jb250ZXh0ID0gbnVsbHB0cjsK KyAJCQljbG9zZSgpOworIAkJCXJldHVybiBmYWxzZTsKKyAgICAgICAgIH0KK0BAIC0yMzQsMTUg KzIzNSwyMSBAQAorIAkJY2xvc2UoKTsKKyAKKyAJCWlmICghYXZfcmVnaXN0ZXJlZCkgeworKyNp ZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1OCAvLyBGRk1QRUcgPCA0LjAKKyAJCQlhdl9y ZWdpc3Rlcl9hbGwoKTsKKysjZW5kaWYKKyAJCQlhdl9yZWdpc3RlcmVkID0gdHJ1ZTsKKyAJCX0K KyAKKyAJCS8vIGd1ZXNzIGZvcm1hdAorLQkJQVZPdXRwdXRGb3JtYXQgKmZvcm1hdCA9IGF2X2d1 ZXNzX2Zvcm1hdChOVUxMLCBmaWxlbmFtZS5jX3N0cigpLCBOVUxMKTsKKysjaWYgTElCQVZDT0RF Q19WRVJTSU9OX01BSk9SIDwgNTkgLy8gRkZNUEVHIDwgNS4wCisrCQlBVk91dHB1dEZvcm1hdCog Zm9ybWF0ID0gYXZfZ3Vlc3NfZm9ybWF0KG51bGxwdHIsIGZpbGVuYW1lLmNfc3RyKCksIG51bGxw dHIpOworKyNlbHNlCisrCQljb25zdCBBVk91dHB1dEZvcm1hdCogZm9ybWF0ID0gYXZfZ3Vlc3Nf Zm9ybWF0KG51bGxwdHIsIGZpbGVuYW1lLmNfc3RyKCksIG51bGxwdHIpOworKyNlbmRpZgorIAkJ aWYgKCFmb3JtYXQpIHsKKyAJCQlzeW5maWc6Ondhcm5pbmcoIlRhcmdldF9MaWJBVkNvZGVjOiB1 bmFibGUgdG8gZ3Vlc3MgdGhlIG91dHB1dCBmb3JtYXQsIGRlZmF1bHRpbmcgdG8gTVBFRyIpOwor LQkJCWZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdCgibXBlZyIsIE5VTEwsIE5VTEwpOworKwkJCWZv cm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdCgibXBlZyIsIG51bGxwdHIsIG51bGxwdHIpOworIAkJfQor IAkJaWYgKCFmb3JtYXQpIHsKKyAJCQlzeW5maWc6OmVycm9yKCJUYXJnZXRfTGliQVZDb2RlYzog dW5hYmxlIHRvIGZpbmQgJ21wZWcnIG91dHB1dCBmb3JtYXQiKTsKK0BAIC0yNTQsNiArMjYxLDcg QEAKKyAJCWNvbnRleHQgPSBhdmZvcm1hdF9hbGxvY19jb250ZXh0KCk7CisgCQlhc3NlcnQoY29u dGV4dCk7CisgCQljb250ZXh0LT5vZm9ybWF0ID0gZm9ybWF0OworKyNpZiBMSUJBVkNPREVDX1ZF UlNJT05fTUFKT1IgPCA1OCAvLyBGRk1QRUcgPCA0LjAKKyAJCWlmIChmaWxlbmFtZS5zaXplKCkg KyAxID4gc2l6ZW9mKGNvbnRleHQtPmZpbGVuYW1lKSkgeworIAkJCXN5bmZpZzo6ZXJyb3IoCisg CQkJCSJUYXJnZXRfTGliQVZDb2RlYzogZmlsZW5hbWUgdG9vIGxvbmcsIG1heCBsZW5ndGggaXMg JWQsIGZpbGVuYW1lIGlzICclcyciLAorQEAgLTI2Myw2ICsyNzEsMTQgQEAKKyAJCQlyZXR1cm4g ZmFsc2U7CisgCQl9CisgCQltZW1jcHkoY29udGV4dC0+ZmlsZW5hbWUsIGZpbGVuYW1lLmNfc3Ry KCksIGZpbGVuYW1lLnNpemUoKSArIDEpOworKyNlbHNlCisrCQljb250ZXh0LT51cmwgPSBhdl9z dHJuZHVwKGZpbGVuYW1lLmNfc3RyKCksIGZpbGVuYW1lLnNpemUoKSk7CisrCQlpZiAoIWNvbnRl eHQtPnVybCkgeworKwkJCXN5bmZpZzo6ZXJyb3IoIlRhcmdldF9MaWJBVkNvZGVjOiBjYW5ub3Qg YWxsb2NhdGUgc3BhY2UgZm9yIGZpbGVuYW1lIik7CisrCQkJY2xvc2UoKTsKKysJCQlyZXR1cm4g ZmFsc2U7CisrCQl9CisrI2VuZGlmCisgCisgCQlwYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsK KyAJCWFzc2VydChwYWNrZXQpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zeW5maWcvdGVtcGxhdGUg Yi9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQppbmRleCAzMDEwOTU0MWVjNGZjLi43MDNjZmQ3ZWJh Yzg0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3N5 bmZpZy90ZW1wbGF0ZQpAQCAtMiwxMSArMiwxMSBAQAogIyBTaG91bGQgYmUga2VwdCBpbiBzeW5j IHdpdGggJ3N5bmZpZ3N0dWRpbycgYW5kICdFVEwnCiBwa2duYW1lPXN5bmZpZwogdmVyc2lvbj0x LjQuNAotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQog Y29uZmlndXJlX2FyZ3M9Ii0td2l0aC1ib29zdC1saWJkaXI9JHtYQlBTX0NST1NTX0JBU0V9L3Vz ci9saWIiCiBob3N0bWFrZWRlcGVuZHM9ImJvb3N0LWJ1aWxkIEltYWdlTWFnaWNrIHBrZy1jb25m aWcgaW50bHRvb2wiCi1tYWtlZGVwZW5kcz0iRVRMIGdldHRleHQtZGV2ZWwgbGlieG1sKystZGV2 ZWwgbWx0LWRldmVsIGxpYm1hZ2ljay1kZXZlbAorbWFrZWRlcGVuZHM9IkVUTCBnZXR0ZXh0LWRl dmVsIGxpYnhtbCsrLWRldmVsIG1sdDctZGV2ZWwgbGlibWFnaWNrLWRldmVsCiAgbGlibW5nLWRl dmVsIGJvb3N0LWJ1aWxkIGJvb3N0LWRldmVsIGxpYm9wZW5leHItZGV2ZWwgZmZtcGVnLWRldmVs IgogZGVwZW5kcz0iSW1hZ2VNYWdpY2siCiBzaG9ydF9kZXNjPSJDTEkgMkQgdmVjdG9yIGFuZCB0 aW1lbGluZS1iYXNlZCBhbmltYXRpb24gc29mdHdhcmUiCkBAIC0yMCw3ICsyMCw3IEBAIENYWEZM QUdTPSItc3RkPWMrKzExIC1ESEFWRV9MT0NBTEVfSD0xIgogCiBzeW5maWctZGV2ZWxfcGFja2Fn ZSgpIHsKIAlkZXBlbmRzPSIke3NvdXJjZXBrZ30+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KLQkg bGlib3BlbmV4ci1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQtZGV2ZWwiCisJIGxpYm9wZW5leHIt ZGV2ZWwgbGlieG1sKystZGV2ZWwgbWx0Ny1kZXZlbCIKIAlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxv cG1lbnQgZmlsZXMiCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9iaW4vc3luZmlnLWNv bmZpZwoKRnJvbSBiODNkZjkxMDY1NTg2MjYwMTAzNDEzOTM1ODJhMDY2OTU4ZGMwMTJiIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODIvMTEz XSB0Z19vd3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90Z19vd3QvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3RnX293dC90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGdfb3d0 L3RlbXBsYXRlCmluZGV4IDk3ZDE5NWRkYjM0YTMuLjU1MTYxNGIyNDk1NmMgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndGdfb3d0JwogcGtnbmFtZT10Z19v d3QKIHZlcnNpb249MC4wLjAuMjAyMzAxMDcKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9jb21t aXQ9NTA5ODczMGI5ZWI2MTczZjBiNTIwNjhmZTI1NTViN2MxMDE1MTIzYQogX2xpYnl1dl9jb21t aXQ9MDA5NTA4NDBkMWM5YmNiYjNlYjZlYmM1YWFjNTc5M2U3MTE2NmM4YgogX2Fic2VpbF9jb21t aXQ9OGMwYjk0ZTc5M2E2NjQ5NWUwYjFmMzRhNWViMjZiZDdkYzY3MmRiMAoKRnJvbSBlMWFlOTcx ZDg5YTNmY2EzOTFkNDBmNjkyYjA3ZWQ1ZjcxZjM3ZTA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODMvMTEzXSB0aW1nOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdGltZy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvdGltZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZQppbmRleCAyYTJhYjc2M2Qy ZmRkLi44ZmI0MzI3NTM1ZWY5IDEwMDY0NAotLS0gYS9zcmNwa2dzL3RpbWcvdGVtcGxhdGUKKysr IGIvc3JjcGtncy90aW1nL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAndGltZycKIHBrZ25hbWU9dGltZwogdmVyc2lvbj0xLjQuNQotcmV2aXNpb249MQorcmV2 aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfT1BFTlNM SURFX1NVUFBPUlQ9b2ZmIC1Xbm8tZGV2IgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGdp dCIKCkZyb20gZjg1OTk5ZDhjZmFkYWQxNzBjMjM4YTBlZTUyNGQxMGFhYTdkMGU2YSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg0LzExM10g dHZoZWFkZW5kOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvdHZoZWFk ZW5kL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlIGIv c3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUKaW5kZXggZTZiMTZkN2NjZjNiZC4uNDZiNTJiNmZi N2Y5NCAxMDA2NDQKLS0tIGEvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy90dmhlYWRlbmQvdGVtcGxhdGUKQEAgLTEsMTQgKzEsMTQgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ3R2aGVhZGVuZCcKIHBrZ25hbWU9dHZoZWFkZW5kCiB2ZXJzaW9uPTQuMi44Ci1yZXZpc2lv bj02CityZXZpc2lvbj03CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJn cz0iLS1lbmFibGUtZHZic2NhbiAtLWRpc2FibGUtZmZtcGVnX3N0YXRpYwogLS1kaXNhYmxlLWhk aG9tZXJ1bl9zdGF0aWMgLS1kaXNhYmxlLWJpbnRyYXlfY2FjaGUgLS1kaXNhYmxlLWxpYngyNjRf c3RhdGljCiAtLWRpc2FibGUtbGlieDI2NV9zdGF0aWMgLS1kaXNhYmxlLWxpYnZweF9zdGF0aWMg LS1kaXNhYmxlLWxpYnRoZW9yYV9zdGF0aWMKIC0tZGlzYWJsZS1saWJ2b3JiaXNfc3RhdGljIC0t ZGlzYWJsZS1saWJmZGthYWNfc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJnZXR0ZXh0IHBrZy1j b25maWcgcHl0aG9uIGdpdCB3aGljaCIKLW1ha2VkZXBlbmRzPSJhdmFoaS1saWJzLWRldmVsIG9w ZW5zc2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZy1kZXZlbCIKK21ha2Vk ZXBlbmRzPSJhdmFoaS1saWJzLWRldmVsIG9wZW5zc2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJjdXJs LWRldmVsIGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJUViBzdHJlYW1pbmcgc2VydmVyIgog bWFpbnRhaW5lcj0ibGVtbWkgPGxlbW1pQG5lcmQybmVyZC5vcmc+IgogbGljZW5zZT0iR1BMLTMu MC1vbmx5IgoKRnJvbSBhNTQ3MmUwMDAwYzI4MmE1OTVmMjNiNjg1Yjc2NjFkODgyZDY2ZTNiIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODUv MTEzXSB1bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAuCgotLS0KIHNyY3BrZ3MvdW5wYXBlci90ZW1w bGF0ZSB8IDE2ICsrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMo KyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRl IGIvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlCmluZGV4IDM4ZWQ0N2E1ODQwMTYuLjFmZjkxMGU3 MjJhZmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3VucGFwZXIvdGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J3VucGFwZXInCiBwa2duYW1lPXVucGFwZXIKLXZlcnNpb249Ni4xCi1yZXZpc2lvbj0zCi1idWls ZF9zdHlsZT1nbnUtY29uZmlndXJlCit2ZXJzaW9uPTcuMC4wCityZXZpc2lvbj0xCitidWlsZF9z dHlsZT1tZXNvbgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIG1lc29uIGxpYnhzbHQiCitt YWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHB5dGhvbjMtU3BoaW54Igorc2hvcnRfZGVzYz0iUG9z dC1wcm9jZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogbWFpbnRhaW5l cj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKLWhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyBsaWJ4c2x0IgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCIKLWxpY2Vuc2U9IkdQ TC0yIgorbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3d3dy5m bGFtZWV5ZXMuZXUvcHJvamVjdHMvdW5wYXBlciIKLXNob3J0X2Rlc2M9IkEgcG9zdC1wcm9jZXNz aW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogZGlzdGZpbGVzPSJodHRwczov L3d3dy5mbGFtZWV5ZXMuZXUvZmlsZXMvJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci54eiIKLWNo ZWNrc3VtPTIzN2M4NGY1ZGE1NDRiM2Y3NzA5ODI3ZjlmMTJjMzdjMzQ2Y2RmMDI5YjExMjhmYjQ2 MzNmOWJhZmE1Y2I5MzAKK2NoZWNrc3VtPTI1NzVmYmJmMjZjMjI3MTlkMWNiODgyYjU5NjAyYzk5 MDBjN2Y3NDcxMThhYzEzMDg4M2Y2MzQxOWJlNDZhODAKCkZyb20gYzgxZmFiOWYwYjkzMTc1ZGUz ZTUzMTg4NjZkMjRmZDQ4NzZhNWJhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg2LzExM10gdmJhLW06IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy92YmEtbS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmJhLW0v dGVtcGxhdGUgYi9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRlCmluZGV4IGJhMTUzZTBiNThjYTQuLmFh NjA5MzY0NWU5NzQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUKKysrIGIvc3Jj cGtncy92YmEtbS90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9dmJhLW0KIHJldmVy dHM9MTI5Ml8yCiB2ZXJzaW9uPTIuMS41Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9z dHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ERU5BQkxFX0dUSz1UUlVFIC1ERU5BQkxFX0ZG TVBFRz1UUlVFIC1ERU5BQkxFX0xJTks9VFJVRSAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSIK IGhvc3RtYWtlZGVwZW5kcz0iZ2V0dGV4dCBwa2ctY29uZmlnIHVuemlwIHppcCB5YXNtIHd4V2lk Z2V0cy1ndGszLWRldmVsIgoKRnJvbSA0ODJjMGFlY2I2MWI2ZThmYjRkNDdhZGU2YzAwYTAxMTE0 YTgzZDM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwODcvMTEzXSB2aWNlOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3Br Z3MvdmljZS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUgYi9z cmNwa2dzL3ZpY2UvdGVtcGxhdGUKaW5kZXggZmU5ZDMzYTgxMTk0Ny4uNGJlYWIyYzVmOWViZCAx MDA2NDQKLS0tIGEvc3JjcGtncy92aWNlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdmljZS90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3ZpY2UnCiBwa2duYW1l PXZpY2UKIHZlcnNpb249My43LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIKIAkkKHZvcHRfZW5hYmxlIHNkbDIgc2Rs dWkyKQpAQCAtMjYsNyArMjYsNyBAQCBtYWtlZGVwZW5kcz0iCiAJJCh2b3B0X2lmIGd0azMgZ3Rr KzMtZGV2ZWwpCiAJJCh2b3B0X2lmIGd0azMgcHVsc2VhdWRpby1kZXZlbCkKIAkkKHZvcHRfaWYg Z3RrMyBwYW5nby1kZXZlbCkKLQkkKHZvcHRfaWYgZmZtcGVnIGZmbXBlZy1kZXZlbCkiCisJJCh2 b3B0X2lmIGZmbXBlZyBmZm1wZWc0LWRldmVsKSIKIHNob3J0X2Rlc2M9IkVtdWxhdG9yIGZvciBD NjQsIEMxMjgsIENCTS1JSSwgUEVULCBWSUMyMCwgUGx1czQgYW5kIEMxNiIKIG1haW50YWluZXI9 Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxh dGVyIgoKRnJvbSA0MDJiMWU5OGI2ZDQ4M2EyYmI5YjAxMmUxZjYyZDJlYWY4YmFhMzY1IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODgvMTEz XSB3YXlwaXBlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvd2F5cGlwZS90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvd2F5 cGlwZS90ZW1wbGF0ZQppbmRleCA1YzQxNjE5MDAwNjBhLi4xYTQ2ZmUyN2Y3ZDgzIDEwMDY0NAot LS0gYS9zcmNwa2dzL3dheXBpcGUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93YXlwaXBlL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnd2F5cGlwZScKIHBrZ25h bWU9d2F5cGlwZQogdmVyc2lvbj0wLjguNAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9bWVzb24KICMgbHRvIGlzIG9mZiBiZWNhdXNlIGl0IGNhdXNlcyBsaW5raW5nIGVycm9y cyBpbiBhcm12NmwgYW5kIGFybXY3bCAoZHVlIHRvIE5FT04pCiBjb25maWd1cmVfYXJncz0iLUR3 ZXJyb3I9ZmFsc2UgLUR3aXRoX2RtYWJ1Zj1lbmFibGVkIC1Ed2l0aF9sejQ9ZW5hYmxlZAoKRnJv bSA4MWNkYTUzMmY3MGM4YzA3MGQzMDUwMTllMzgwOGY2Y2I1M2FlNTE0IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODkvMTEzXSB3Zi1yZWNv cmRlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3dmLXJlY29yZGVyL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZSBiL3NyY3BrZ3Mv d2YtcmVjb3JkZXIvdGVtcGxhdGUKaW5kZXggZTI3OGViMDAxNjAwZi4uNWQwMTRhNWYyOGFmYiAx MDA2NDQKLS0tIGEvc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3dm LXJlY29yZGVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn d2YtcmVjb3JkZXInCiBwa2duYW1lPXdmLXJlY29yZGVyCiB2ZXJzaW9uPTAuMy4wCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIHNjZG9jIHdheWxhbmQtZGV2ZWwiCiBtYWtlZGVwZW5kcz0id2F5bGFuZC1wcm90b2Nv bHMgd2F5bGFuZC1kZXZlbCBmZm1wZWctZGV2ZWwgeDI2NC1kZXZlbAoKRnJvbSBjZmQ4YmUwMDJi YTI3ODdkZjgxNzJjY2I1N2Q3ZDQzNDEyNjZmMmYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTAvMTEzXSB4cHJhOiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MveHByYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv eHByYS90ZW1wbGF0ZSBiL3NyY3BrZ3MveHByYS90ZW1wbGF0ZQppbmRleCAwYTYzZmRiNmM3NDM3 Li5kNWFjYzE5ODFjNWY2IDEwMDY0NAotLS0gYS9zcmNwa2dzL3hwcmEvdGVtcGxhdGUKKysrIGIv c3JjcGtncy94cHJhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAneHByYScKIHBrZ25hbWU9eHByYQogdmVyc2lvbj00LjQuNgotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUKIG1ha2VfYnVpbGRfYXJncz0iLS13aXRo b3V0LWN1ZGFfa2VybmVscyAtLXdpdGhvdXQtY3VkYV9yZWJ1aWxkIgogbWFrZV9pbnN0YWxsX2Fy Z3M9IiQodm9wdF93aXRoIGRvY3MpICR7bWFrZV9idWlsZF9hcmdzfSIKCkZyb20gODEwNGUwNzkw M2E2NDhmZmY2ZTlmOTNhMzcxMGQ2ZGY0MzdmNTk0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAzMSBNYXIgMjAyMyAw OTowNzo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkxLzExM10gbnYtY29kZWMtaGVhZGVyczog dXBkYXRlIHRvIDEyLjAuMTYuMAoKLS0tCiBzcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxh dGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlIGIvc3Jj cGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCmluZGV4IDNkNDIyYTYxZTQ4OTEuLjI1MWUw NTdmODI2ZmIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbnYtY29kZWMtaGVhZGVycy90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdudi1jb2RlYy1oZWFkZXJzJwogcGtnbmFtZT1udi1jb2RlYy1o ZWFkZXJzCi12ZXJzaW9uPTExLjEuNS4xCit2ZXJzaW9uPTEyLjAuMTYuMAogcmV2aXNpb249MQog YnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBzaG9ydF9kZXNjPSJGRm1wZWcgdmVyc2lvbiBvZiBo ZWFkZXJzIHJlcXVpcmVkIHRvIGludGVyZmFjZSB3aXRoIE52aWRpYXMgY29kZWMgQVBJcyIKQEAg LTgsNyArOCw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4i CiBsaWNlbnNlPSJNSVQiCiBob21lcGFnZT0iaHR0cDovL2dpdC52aWRlb2xhbi5vcmcvP3A9ZmZt cGVnL252LWNvZGVjLWhlYWRlcnMuZ2l0IgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20v RkZtcGVnL252LWNvZGVjLWhlYWRlcnMvYXJjaGl2ZS9uJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVj a3N1bT1kMDk1ZmJkNTZhYTkzNzcyNDcxYTMyM2JlMGViZTY1NTA0YTBmNDNmMDZjNzZhMzBiNmQy NWRhNzdiMDZhZTljCitjaGVja3N1bT0yYTE1MzNiNjVmNTVmOWRhNTI5NTZmYWYwNjI3ZWQzYjc0 ODY4YWMwYzdmMjY5OTkwZWRkMjEzNjkxMTNiNDhmCiAKIHBvc3RfaW5zdGFsbCgpIHsKIAlzZWQg LW4gJzQsMjVwJyBpbmNsdWRlL2ZmbnZjb2RlYy9udkVuY29kZUFQSS5oID4gTElDRU5TRQoKRnJv bSAyODg4ZjAyNDg2OTNhN2FlZDU1ZDdiNjJlYmQxYjA0YzVmNDE0ZGQwIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDMx IE1hciAyMDIzIDA5OjA4OjQwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTIvMTEzXSBvcGVuaW1h Z2VkZW5vaXNlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvb3BlbmltYWdl ZGVub2lzZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1w bGF0ZSBiL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZQppbmRleCBkYjVjY2RiMDU1 Y2M5Li5jYjkwMDQ1YWZiNjM0IDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2Uv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbmltYWdlZGVub2lzZScKIHBrZ25hbWU9 b3BlbmltYWdlZGVub2lzZQogdmVyc2lvbj0xLjQuMwotcmV2aXNpb249MQorcmV2aXNpb249Mgog YXJjaHM9Ing4Nl82NCoiCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJpc3Bj IHB5dGhvbjMiCgpGcm9tIGI0OGEyNzc2YWU2NzA0M2ViYmQ3OGUwMTczMWZkZmNiZjMwOTlhMDgg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMyBBcHIgMjAyMyAyMzozMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkz LzExM10gc2hvdGN1dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3Nob3Rj dXQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUgYi9zcmNwa2dz L3Nob3RjdXQvdGVtcGxhdGUKaW5kZXggN2QyYWY3YjA0NzBiNS4uYzQxNmM5MDZmZjczNCAxMDA2 NDQKLS0tIGEvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2hvdGN1dC90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Nob3RjdXQnCiBw a2duYW1lPXNob3RjdXQKIHZlcnNpb249MjMuMDUuMTQKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURTSE9UQ1VUX1ZFUlNJT049JHt2 ZXJzaW9ufSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDYtdG9vbHMtZGV2ZWwiCgpG cm9tIDJlODNhNjg0YjFmNzc2NjljOWYxNTllMDMwZTFmYTI1ZDJhODk0YjYgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwg MyBBcHIgMjAyMyAyMzozMzozMCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk0LzExM10gc2hpYm9r ZW4yOiByZXZidW1wIGZvciBxdDUtNS4xNS44CgotLS0KIHNyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNo ZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggfCAxICsKIHNyY3BrZ3Mvc2hpYm9r ZW4yL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCiAyIGZp bGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUg MTIwMDAwIHNyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBh c3MucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2ltcG9ydGxp Yi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoIGIvc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBv cnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAw MDAwMDAwMDAwMDAwLi5lZmNmMzI0OWJkODg1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9z aGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApAQCAtMCww ICsxIEBACisuLi8uLi9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5 LWJ5cGFzcy5wYXRjaApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKaW5k ZXggMDg0ZWNjM2JhMWUxYy4uMmEyMTk5ODk5N2ViMSAxMDA2NDQKLS0tIGEvc3JjcGtncy9zaGli b2tlbjIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaGlib2tlbjInCiBwa2duYW1lPXNoaWJva2Vu MgogdmVyc2lvbj01LjE1LjcKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9wa2duYW1lPSJweXNp ZGUtc2V0dXAtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIGJ1aWxkX3dya3NyYz0ic291cmNl cy9zaGlib2tlbjIiCiBidWlsZF9zdHlsZT1jbWFrZQoKRnJvbSA3Y2FjZGIzOTIyMzFjNmFhOWM0 ZThkOGM1MDJmNjVhYmJjYWJjMzc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMjM6MzM6NTMgLTA0 MDAKU3ViamVjdDogW1BBVENIIDA5NS8xMTNdIHB5dGhvbjMtcHlzaWRlMjogdXBkYXRlIHRvIDUu MTUuOAoKLS0tCiAuLi4vcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaCAg ICAgIHwgMTUgKysrKysrKysrKysrKysrCiBzcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0 ZSAgICAgICAgICAgICAgICAgIHwgIDkgKysrKystLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDIwIGlu c2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9w eXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaAoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1h Y2hpbmVyeS1ieXBhc3MucGF0Y2ggYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2lt cG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAuLjY0YzQyOTU4NDc3NmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNo CkBAIC0wLDAgKzEsMTUgQEAKK1VzaW5nIHRoaXMgcHJldmVudHMgYW4gZXJyb3IgYXJvdW5kIGxp bmUgMjIwIGJlbG93IGl0LgorIkF0dHJpYnV0ZUVycm9yOiBtb2R1bGUgJ2ltcG9ydGxpYicgaGFz IG5vIGF0dHJpYnV0ZSAnbWFjaGluZXJ5JyIKK1RoZSBvbGQgYmFja3VwIGxvZ2ljIGlzIGluIHBs YWNlIGFuZCBjb21waWxlcyB3aXRob3V0IGlzc3Vlcy4KKy0tLSBhL3NvdXJjZXMvc2hpYm9rZW4y L2xpYnNoaWJva2VuL2VtYmVkL3NpZ25hdHVyZV9ib290c3RyYXAucHkJMjAyMy0wNC0wMiAyMzow OTozNC42ODg5MTI0MDIgLTA0MDAKKysrKyBiL3NvdXJjZXMvc2hpYm9rZW4yL2xpYnNoaWJva2Vu L2VtYmVkL3NpZ25hdHVyZV9ib290c3RyYXAucHkJMjAyMy0wNC0wMiAyMzoxMDowMy4zOTU1Mjk1 ODIgLTA0MDAKK0BAIC0xNzAsOSArMTcwLDYgQEAKKworICAgICAjICd6aXBzdHJpbmdfc2VxdWVu Y2UnIGNvbWVzIGZyb20gc2lnbmF0dXJlLmNwcAorICAgICB6aXBieXRlcyA9IGJhc2U2NC5iNjRk ZWNvZGUoJycuam9pbih6aXBzdHJpbmdfc2VxdWVuY2UpKQorLSAgICBpZiBzeXMudmVyc2lvbl9p bmZvWzBdID49IDM6CistICAgICAgICB2emlwID0gemlwZmlsZS5aaXBGaWxlKGlvLkJ5dGVzSU8o emlwYnl0ZXMpKQorLSAgICAgICAgcmV0dXJuIHN5cy5tZXRhX3BhdGgsIEVtYmVkZGFibGVaaXBJ bXBvcnRlcih2emlwKQorCisgICAgICMgT2xkIHZlcnNpb24gZm9yIFB5dGhvbiAyLjcsIG9ubHku CisgICAgIGltcG9ydCBvcwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVt cGxhdGUgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQppbmRleCA1MGU2ZmYyNjBk M2I1Li5iNTBlNjJiZDIxNWQ0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQpAQCAtMSwxMSAr MSwxMiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHl0aG9uMy1weXNpZGUyJwogcGtnbmFtZT1w eXRob24zLXB5c2lkZTIKLXZlcnNpb249NS4xNS41Ci1yZXZpc2lvbj0yCit2ZXJzaW9uPTUuMTUu OAorcmV2aXNpb249MQogX3BrZ25hbWU9InB5c2lkZS1zZXR1cC1vcGVuc291cmNlLXNyYy0ke3Zl cnNpb259IgogYnVpbGRfd3Jrc3JjPSJzb3VyY2VzL3B5c2lkZTIiCiBidWlsZF9zdHlsZT1jbWFr ZQotY29uZmlndXJlX2FyZ3M9Ii1EUFlUSE9OX0VYRUNVVEFCTEU9L3Vzci9iaW4vcHl0aG9uIgor Y29uZmlndXJlX2FyZ3M9Ii1EUFlUSE9OX0VYRUNVVEFCTEU9L3Vzci9iaW4vcHl0aG9uIC1EQ01B S0VfQlVJTERfVFlQRT1Ob25lCisgLURCVUlMRF9URVNUUz1PRkYiCiBob3N0bWFrZWRlcGVuZHM9 ImNtYWtlIHB5dGhvbjMgc2hpYm9rZW4yIgogbWFrZWRlcGVuZHM9InB5dGhvbjMtZGV2ZWwgbGli c2hpYm9rZW4yLWRldmVsIHF0NS1kZXZlbAogIHF0NS1tdWx0aW1lZGlhLWRldmVsIHF0NS10b29s cy1kZXZlbCBxdDUtcGx1Z2luLW15c3FsIHF0NS1wbHVnaW4tb2RiYwpAQCAtMjMsNyArMjQsNyBA QCBtYWludGFpbmVyPSJ5b3BpdG8gPHBpZXJyZS5ib3VyZ2luQGZyZWUuZnI+IgogbGljZW5zZT0i TEdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93aWtpLnF0LmlvL1F0X2Zvcl9Q eXRob24iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQucXQuaW8vb2ZmaWNpYWxfcmVsZWFz ZXMvUXRGb3JQeXRob24vcHlzaWRlMi9QeVNpZGUyLSR7dmVyc2lvbn0tc3JjLyR7X3BrZ25hbWV9 LnRhci54eiIKLWNoZWNrc3VtPTM5MjBhNGZiMzUzMzAwMjYwYzliYzQ2ZmY3MGYxZmI5NzVjNWU3 ZWZhMjJlOWQ1MTIyMjU4ODkyOGNlMTliMzMKK2NoZWNrc3VtPTIzNDM2MzAyYzhkZWI1YjRjYmM3 NjliMjA1ZDA5NjA0ZTM4YmE4M2I0MDcwOGVmY2NiN2JkOGM5YWY2ZjZiNWQKIAogYnVpbGRfb3B0 aW9ucz0id2ViZW5naW5lIgogZGVzY19vcHRpb25fd2ViZW5naW5lPSJCdWlsZCBRdDUgV2ViRW5n aW5lIGJpbmRpbmdzIgoKRnJvbSAwNTdkZGJhMDE4NDU1YWI4MWVmYWIyNzE5ZDM2YjNiZTBiNGRh ZGQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTE6MTQ6MzUgLTA0MDAKU3ViamVjdDogW1BBVENI IDA5Ni8xMTNdIGtvbnF1ZXJvcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2tvbnF1ZXJvci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tvbnF1ZXJvci90ZW1w bGF0ZSBiL3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlCmluZGV4IGQ4ZDBlNzNhNzhhYjIuLmM1 YmRiYTYwMWQzYzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdrb25xdWVyb3InCiBwa2duYW1lPWtvbnF1ZXJvcgogdmVyc2lvbj0yMy4wNC4w Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2Fy Z3M9Ii1EREVTS1RPUFRPSlNPTl9FWEVDVVRBQkxFPS91c3IvYmluL2Rlc2t0b3B0b2pzb24iCiBo b3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgcHl0aG9uMyBxdDUtaG9zdC10b29s cyBxdDUtcW1ha2Uga2RvY3Rvb2xzCi1rY29yZWFkZG9ucyBrY29uZmlnIGdldHRleHQiCisga2Nv cmVhZGRvbnMga2NvbmZpZyBnZXR0ZXh0IgogbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUtd2Vi ZW5naW5lLWRldmVsIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbAogIHF0NS13ZWJjaGFubmVsLWRldmVs IHF0NS1sb2NhdGlvbi1kZXZlbCBrY211dGlscy1kZXZlbCBrZGVsaWJzNHN1cHBvcnQtZGV2ZWwK ICBrYXJjaGl2ZS1kZXZlbCBraHRtbC1kZXZlbCBrZGVzdS1kZXZlbCBrYWN0aXZpdGllczUtZGV2 ZWwiCgpGcm9tIGJiMGZlZmVmOWMxODIzM2QzYjhjYjdkYjM5MjFiOGZhMmZjZDEyN2QgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgNCBBcHIgMjAyMyAxMToxNDo1OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk3LzExM10g cXQ1LXNwZWVjaDogcmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0tCiBzcmNwa2dzL3F0NS1zcGVl Y2gvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUgYi9zcmNw a2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUKaW5kZXggM2VjZDEwZDUwNjUwYy4uMmQ3ZDRkNGQyNDUz NSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv cXQ1LXNwZWVjaC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J3F0NS1zcGVlY2gnCiBwa2duYW1lPXF0NS1zcGVlY2gKIHZlcnNpb249NS4xNS43Ci1yZXZpc2lv bj0yCityZXZpc2lvbj0zCiBfY29tbWl0PWQzMmY0YTQ3OWQzOGExMWY1NDc1OTgwMDRiOTc1ZjQz NTY0MjRhMTYKIGJ1aWxkX3N0eWxlPXFtYWtlCiBjb25maWd1cmVfYXJncz0iLS0gLWZsaXRlIC1m bGl0ZS1hbHNhIC1zcGVlY2hkIgoKRnJvbSBjNjMxMDg5YzI4MTk3MThhNzJiMTg1Y2I2MTU2Nzk1 ZjZhMjM0MzMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTg6Mzg6NTAgLTA0MDAKU3ViamVjdDog W1BBVENIIDA5OC8xMTNdIHF0NS1zdHlsZXBsdWdpbnM6IHJldmJ1bXAgZm9yIHF0NS01LjE1LjgK Ci0tLQogc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3Rl bXBsYXRlCmluZGV4IDk2ZWQ5N2QxMmNkMjQuLjMwZDkzNjYwYTJhNGUgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS1zdHlsZXBs dWdpbnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUt c3R5bGVwbHVnaW5zJwogcGtnbmFtZT1xdDUtc3R5bGVwbHVnaW5zCiB2ZXJzaW9uPTUuMC4wCi1y ZXZpc2lvbj0yMAorcmV2aXNpb249MjEKIF9naXRyZXY9MzM1ZGJlY2UxMDNlMmNiZjZjN2NmODE5 YWI2NjcyYzI5NTZiMTdiMwogYnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UiCgpGcm9tIGEzYmQxNTAyZjczNmMyM2Jl MWEyOTdjYzExYjhkNDM2ZTZkZTEwYzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNyBNYXkgMjAyMyAyMDoxNDoxNCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk5LzExM10gbWx0NzogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZSB8IDIgKy0KIHNyY3BrZ3MvbWx0Ny90 ZW1wbGF0ZSAgICAgIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgYi9z cmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQppbmRleCAwNGMzOWJmZjE0ODk2Li44YzcyZmMzZTk3 ZWVlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2dzdC1saWJhdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2dzdC1saWJhdicKIHBrZ25hbWU9Z3N0LWxpYmF2CiB2ZXJzaW9uPTEuMjIuMgotcmV2aXNpb249 MgorcmV2aXNpb249MQogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyB5YXNtIgogbWFrZWRlcGVuZHM9Im9yYy1kZXZlbCBnc3QtcGx1Z2lucy1iYXNlMS1kZXZl bCBmZm1wZWctZGV2ZWwiCmRpZmYgLS1naXQgYS9zcmNwa2dzL21sdDcvdGVtcGxhdGUgYi9zcmNw a2dzL21sdDcvdGVtcGxhdGUKaW5kZXggOWZiN2Y2MGQ2OTJlMS4uY2NhMGViNjhjZmMzMSAxMDA2 NDQKLS0tIGEvc3JjcGtncy9tbHQ3L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21sdDcnCiBwa2duYW1lPW1s dDcKIHZlcnNpb249Ny4xNC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1j bWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EU1dJR19QWVRIT049T04iCiBob3N0bWFrZWRlcGVuZHM9 ImRveHlnZW4gcGtnLWNvbmZpZyBsYWRzcGEtc2RrIHN3aWcgcHl0aG9uMyB3aGljaAoKRnJvbSBk YTZmY2JkMWI1NGUwMWU2MWJjOGMyYjYzYWFlMDA2ZDgzOWRmNjZjIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDcgTWF5 IDIwMjMgMjA6MTU6MDMgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMC8xMTNdIHF0Ni13ZWJlbmdp bmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9xdDYtd2ViZW5naW5lL3Rl bXBsYXRlIHwgMyArKy0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUgYi9zcmNw a2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUKaW5kZXggNGUyMmNiNmU4ODYzOC4uNDM3NzhiNTY4 ZDNmMCAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ3F0Ni13ZWJlbmdpbmUnCiBwa2duYW1lPXF0Ni13ZWJlbmdpbmUKIHZlcnNpb249 Ni41LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1 cmVfYXJncz0iCiAgLURRVF9GRUFUVVJFX3dlYmVuZ2luZV9zeXN0ZW1fZmZtcGVnPU9OCkBAIC0x NDUsNiArMTQ1LDcgQEAgcHJlX2luc3RhbGwoKSB7CiB9CiAKIHBvc3RfaW5zdGFsbCgpIHsKKwl2 bGljZW5zZSBMSUNFTlNFUy9CU0QtMy1DbGF1c2UudHh0CiAJbG9jYWwgX2ZpbGUKIAlmaW5kICIk e0RFU1RESVJ9Ii91c3IvbGliL3F0Ni9leGFtcGxlcyBcCiAJCS1wYXRoICcqL2xpYi9xdDYvKiov bGliL3F0Ni8qJyAtdHlwZSBmIHwKCkZyb20gZTE5YjIzYWY0YzcwMDExM2NmYTlmMWY4YWMzZmU3 MGMzZjczNjBjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA3IE1heSAyMDIzIDIwOjE1OjI5IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAxMDEvMTEzXSB0cmFja2VyLW1pbmVyczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL3RyYWNrZXItbWluZXJzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90 cmFja2VyLW1pbmVycy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUK aW5kZXggOGMwMDVkNjk3ZmE0Mi4uYTZlNWFhNTc3NzAyNCAxMDA2NDQKLS0tIGEvc3JjcGtncy90 cmFja2VyLW1pbmVycy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3RyYWNrZXItbWluZXJzL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndHJhY2tlci1taW5lcnMn CiBwa2duYW1lPXRyYWNrZXItbWluZXJzCiB2ZXJzaW9uPTMuNS4wCi1yZXZpc2lvbj0zCityZXZp c2lvbj00CiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVyPXFlbXUKICMgbWlzc2luZyBs aWJncnNzIGZvciBtaW5lcl9yc3MKCkZyb20gZWM4MjEyY2U1ODlhYzBjNmY1YjhkYzM3M2Q1NWZl ZmZmNGIyOGU2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA3IE1heSAyMDIzIDIwOjIwOjU4IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAxMDIvMTEzXSBtcGQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9tcGQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21wZC90ZW1wbGF0ZSBiL3NyY3BrZ3Mv bXBkL3RlbXBsYXRlCmluZGV4IDlkYmQ0YzkzNWFjYzUuLjlmMDU4YjYyZGYyZjMgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvbXBkL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbXBkL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbXBkJwogcGtnbmFtZT1tcGQKIHZlcnNp b249MC4yMy4xMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGNv bmZpZ3VyZV9hcmdzPSItRG9wdXM9ZW5hYmxlZCAtRG1pa21vZD1lbmFibGVkIC1EbmVpZ2hib3I9 dHJ1ZQogIC1Ec291bmRjbG91ZD1lbmFibGVkIC1EcGlwZT10cnVlIC1EdHdvbGFtZT1lbmFibGVk IC1EYnppcDI9ZW5hYmxlZAoKRnJvbSA1MzVjMmM1ZDZlZmFlNTExZGUzNDJlOThjZTU5ZjM2ODJi ZDc5MmUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBUaHUsIDExIE1heSAyMDIzIDE0OjA1OjE0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAxMDMvMTEzXSBvcGVubXc6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9vcGVubXcvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5tdy90ZW1wbGF0ZSBiL3Ny Y3BrZ3Mvb3Blbm13L3RlbXBsYXRlCmluZGV4IGUzNzcxYzdhYWYxYTMuLjNjYmYyMGIwNjU3NzAg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3Blbm13 L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3Blbm13Jwog cGtnbmFtZT1vcGVubXcKIHZlcnNpb249MC40Ny4wCi1yZXZpc2lvbj01CityZXZpc2lvbj02CiBi dWlsZF9zdHlsZT1jbWFrZQogX3JlY2FzdF9jb21taXQ9ZTc1YWRmODZmOTFlYjMwODIyMjAwODVl NDJkZGE2MjY3OWY5YTNlYQogX2J1bGxldF90YWc9My4xNwoKRnJvbSA4NGRmNDA4N2Q0MjIzN2Vk YTU3OGE5MDcyZjY5Y2JmYzQwNGU0OGFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDIxIE1heSAyMDIzIDEyOjQ0OjEx IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDQvMTEzXSBlbGVjdHJvbjI0OiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0ZQpp bmRleCBiZGFhNTZhZGM4YTY1Li5mZjNkNWUzZWYzODE5IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Vs ZWN0cm9uMjQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZWxlY3Ryb24yNCcKIHBrZ25hbWU9ZWxl Y3Ryb24yNAogdmVyc2lvbj0yNC4zLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9ub2RldmVy PTE4LjE0LjAKIF9jaHJvbWl1bXZlcj0xMTIuMC41NjE1LjE2NQogYXJjaHM9Ing4Nl82NCogYWFy Y2g2NCoiCgpGcm9tIDhlYzM0Y2RkNjBiYThmN2U0YWY2NDdiNTgzMThjYzViYmJiY2U3YzQgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFNhdCwgMyBKdW4gMjAyMyAwODoyMDoyMiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTA1LzEx M10gZ3RrNDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2d0azQvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2d0azQvdGVtcGxhdGUgYi9zcmNwa2dzL2d0azQvdGVtcGxh dGUKaW5kZXggYjMxOGI3YmFlMWRkOS4uZTNiZGU0YTUwZTU0NyAxMDA2NDQKLS0tIGEvc3JjcGtn cy9ndGs0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2d0azQnCiBwa2duYW1lPWd0azQKIHZlcnNpb249NC4x MC40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVs cGVyPSJnaXIiCiBjb25maWd1cmVfYXJncz0iLURtYW4tcGFnZXM9dHJ1ZSAtRGd0a19kb2M9dHJ1 ZSAtRGJ1aWxkLXRlc3RzPWZhbHNlCgpGcm9tIDVmY2Q1OWVlZTZjOTYxNjRlNmJkMjc0MTRlZjg0 OGFiNThiNmZjMDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNCBKdW4gMjAyMyAxMToyNTo1MCAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMTA2LzExM10gZWxlY3Ryb24xOTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9u MTkvdGVtcGxhdGUgYi9zcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUKaW5kZXggMzJjZTMwMWU3 MzBjZi4uYWI3ZjMwOGY1ZThhNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjE5L3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ2VsZWN0cm9uMTknCiBwa2duYW1lPWVsZWN0cm9uMTkKIHZlcnNp b249MTkuMC44Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBfbm9kZXZlcj0xNi4xNC4yCiBfY2hy b21pdW12ZXI9MTAyLjAuNTAwNS4xMjUKIGFyY2hzPSJ4ODZfNjQqIGFhcmNoNjQqIHBwYzY0bGUq IgoKRnJvbSBiYTcyOTNkZDFhN2NhMDIzYmI2Nzg4MmY1MmFiOTAxYTFlMzk0YjA3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBT dW4sIDQgSnVuIDIwMjMgMTE6Mjg6MjYgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwNy8xMTNdIHNp cmlsOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlIGIvc3JjcGtncy9zaXJpbC90ZW1wbGF0 ZQppbmRleCA4NDMzMmY3OWQwNjBkLi42Mjc1MGRkMjQ3NTQ4IDEwMDY0NAotLS0gYS9zcmNwa2dz L3NpcmlsL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaXJpbCcKIHBrZ25hbWU9c2lyaWwKIHZlcnNpb249 MC45LjEyCi1yZXZpc2lvbj0xMAorcmV2aXNpb249MTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1 cmUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBpbnRsdG9vbCBhdXRvY29uZiBhdXRvbWFr ZSBnZXR0ZXh0LWRldmVsIgogbWFrZWRlcGVuZHM9ImZmdHctZGV2ZWwgbGliY29uZmlnLWRldmVs IGxpYm9wZW5jdi1kZXZlbCBsaWJmZm1zMi1kZXZlbAoKRnJvbSA1YzFjZjhiZWY3Mjk5NWQ5ODEx MmNkNTUwNDUwNTI2NmY1MzcyZDZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDQgSnVuIDIwMjMgMTE6Mjk6MDggLTA0 MDAKU3ViamVjdDogW1BBVENIIDEwOC8xMTNdIHRlbGVncmFtLWRlc2t0b3A6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlIGIvc3JjcGtncy90ZWxlZ3Jh bS1kZXNrdG9wL3RlbXBsYXRlCmluZGV4IGYxMTRiMjM0MWRjNWQuLjlkYjlmODBjMWE1M2YgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICd0ZWxlZ3JhbS1kZXNrdG9wJwogcGtnbmFtZT10ZWxlZ3JhbS1kZXNrdG9wCiB2ZXJz aW9uPTQuOC4xCi1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1jbWFrZQogYnVp bGRfaGVscGVyPSJxZW11IgogY29uZmlndXJlX2FyZ3M9Ii1EVERFU0tUT1BfQVBJX0lEPTIwOTIz NQoKRnJvbSAyZTcwNDQyNzlhMTczMGM2OTIxY2I1OGRlMzIwYzgwNjllZjUwODM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBT YXQsIDEwIEp1biAyMDIzIDAwOjQwOjM5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDkvMTEzXSBm cmVlY2FkOiByZXZidW1wIGZvciBxdDUtd2ViZW5naW5lLTUuMTUuMTMKCi0tLQogc3JjcGtncy9m cmVlY2FkL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlIGIvc3Jj cGtncy9mcmVlY2FkL3RlbXBsYXRlCmluZGV4IGE0YTNmNWY3NmIyOWEuLjg2MDhkMTY3MGM4N2Yg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZnJlZWNhZC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZyZWVj YWQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmcmVlY2Fk JwogcGtnbmFtZT1mcmVlY2FkCiB2ZXJzaW9uPTAuMjAuMgotcmV2aXNpb249NQorcmV2aXNpb249 NgogYnVpbGRfc3R5bGU9Y21ha2UKIAogX2luc3RfcHJlZml4PS91c3IvbGliLyR7cGtnbmFtZX0K CkZyb20gODIyODIzY2U5MWI1ODVjOTdjZjA3YTEwM2YwZTAyMGZmZDUyZWRhZSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU2F0 LCAxMCBKdW4gMjAyMyAwMDo1NzowOSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTEwLzExM10gcXQ2 LW11bHRpbWVkaWE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9xdDYtbXVs dGltZWRpYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxh dGUgYi9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlCmluZGV4IGE2ODMyZmRkNjliZmUu LmM5ZmZhYzkxNGFiOGYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0Ni1tdWx0aW1lZGlhJwogcGtnbmFtZT1xdDYtbXVsdGlt ZWRpYQogdmVyc2lvbj02LjUuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9 Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFFUX0ZFQVRVUkVfZ3N0cmVhbWVyPU9OIgogaG9zdG1h a2VkZXBlbmRzPSJwZXJsIHF0Ni1kZWNsYXJhdGl2ZS1ob3N0LXRvb2xzIHBrZy1jb25maWcgcXQ2 LXNoYWRlcnRvb2xzIgoKRnJvbSBmNjMyYzgzYmZjMGQ2ZWFlODY3YjdhNDRiODliNzYzNGEyNjFj OTVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBUaHUsIDIyIEp1biAyMDIzIDEwOjI1OjAyIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAxMTEvMTEzXSBrZGVubGl2ZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2tkZW5saXZlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9rZGVubGl2ZS90ZW1wbGF0ZSBi L3NyY3BrZ3Mva2RlbmxpdmUvdGVtcGxhdGUKaW5kZXggODljMGRjZmI4NTc3Zi4uNzU0OTViM2Ez NTg2OSAxMDA2NDQKLS0tIGEvc3JjcGtncy9rZGVubGl2ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2tkZW5saXZlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn a2RlbmxpdmUnCiBwa2duYW1lPWtkZW5saXZlCiB2ZXJzaW9uPTIzLjA0LjIKLXJldmlzaW9uPTIK K3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9IgogIGV4dHJh LWNtYWtlLW1vZHVsZXMga2NvbmZpZyBrY29yZWFkZG9ucyBrZG9jdG9vbHMgcGtnLWNvbmZpZyBw eXRob24zCgpGcm9tIDE4YmZkMzY5YmMyNmE1OGI1Nzk2YTY0ZGU3ZjA4NzBmMjZjYzQ4MmIgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFR1ZSwgNCBKdWwgMjAyMyAwOToxODoyMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTEyLzEx M10gZ21pYzogcmV2YnVtcCBmb3Igb3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3MvZ21pYy90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ21pYy90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ21pYy90ZW1w bGF0ZQppbmRleCAwYmI0MDM0ZDVjYzg2Li44MDg5NTNlOWI1NDNjIDEwMDY0NAotLS0gYS9zcmNw a2dzL2dtaWMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nbWljL3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ21pYycKIHBrZ25hbWU9Z21pYwogdmVyc2lvbj0z LjEuNgotcmV2aXNpb249NAorcmV2aXNpb249NQogX3phcnRfaGFzaD0zNGViZjZjY2UwYmFmYjk4 YWJlNTdjZWM4M2M0YTAyY2QxYWJlY2EwCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jrc3Jj PSJzcmMiCgpGcm9tIDhiNzUwMWRkZDZkNzNlMmI1ZDA0MjY5MTNkMjliMWE4NmVmMzM2YTkgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFR1ZSwgNCBKdWwgMjAyMyAwOToyOTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTEzLzEx M10gc3luZmlnc3R1ZGlvOiByZXZidW1wIGZvciBzeW5maWcgbWx0NwoKLS0tCiBzcmNwa2dzL3N5 bmZpZ3N0dWRpby90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBs YXRlIGIvc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUKaW5kZXggYWYxYzVhMjk2ZWYwZi4u MDllNDQyZGE5YTY4MCAxMDA2NDQKLS0tIGEvc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUK KysrIGIvc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiAjIFNo b3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCAnc3luZmlnJyBhbmQgJ0VUTCcKIHBrZ25hbWU9c3lu Zmlnc3R1ZGlvCiB2ZXJzaW9uPTEuNC40Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9z dHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXVwZGF0ZS1taW1l ZGIiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgaW50bHRvb2wgZ2V0dGV4dCBzeW5maWci Cg== --===============7232513806979916305==--