From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v4 10/16] xen/mm: Switch map_pages_to_xen to use MFN typesafe Date: Wed, 21 Feb 2018 14:02:53 +0000 Message-ID: <20180221140259.29360-11-julien.grall@arm.com> References: <20180221140259.29360-1-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180221140259.29360-1-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Kevin Tian , Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich , Shane Wang , Gang Wei List-Id: xen-devel@lists.xenproject.org VGhlIGN1cnJlbnQgcHJvdG90eXBlIGlzIHNsaWdodGx5IGNvbmZ1c2luZyBiZWNhdXNlIGl0IHRh a2VzIGEgdmlydHVhbAphZGRyZXNzIGFuZCBhIHBoeXNpY2FsIGZyYW1lIChub3QgYWRkcmVzcyEp LiBTd2l0Y2hpbmcgdG8gTUZOIHdpbGwgaW1wcm92ZQpzYWZldHkgYW5kIHJlZHVjZSB0aGUgY2hh bmNlIHRvIG1pc3Rha2VubHkgaW52ZXJ0IHRoZSAyIHBhcmFtZXRlcnMuCgpTaWduZWQtb2ZmLWJ5 OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgoKLS0tCgpDYzogU3RlZmFubyBT dGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogSnVsaWVuIEdyYWxsIDxqdWxp ZW4uZ3JhbGxAYXJtLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJp eC5jb20+CkNjOiBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNj OiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNo IDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndp bGtAb3JhY2xlLmNvbT4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogV2VpIExpdSA8 d2VpLmxpdTJAY2l0cml4LmNvbT4KQ2M6IEdhbmcgV2VpIDxnYW5nLndlaUBpbnRlbC5jb20+CkNj OiBTaGFuZSBXYW5nIDxzaGFuZS53YW5nQGludGVsLmNvbT4KQ2M6IEtldmluIFRpYW4gPGtldmlu LnRpYW5AaW50ZWwuY29tPgoKICAgIENoYW5nZXMgaW4gdjQ6CiAgICAgICAgLSBQYXRjaCBhZGRl ZAotLS0KIHhlbi9hcmNoL2FybS9tbS5jICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCiB4ZW4v YXJjaC94ODYvbW0uYyAgICAgICAgICAgICAgICAgIHwgNDggKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9zZXR1cC5jICAgICAgICAgICAgICAgfCAx NCArKysrKy0tLS0tLQogeGVuL2FyY2gveDg2L3NtcGJvb3QuYyAgICAgICAgICAgICB8ICAyICst CiB4ZW4vYXJjaC94ODYvdGJvb3QuYyAgICAgICAgICAgICAgIHwgMTEgKysrKystLS0tCiB4ZW4v YXJjaC94ODYveDg2XzY0L21tLmMgICAgICAgICAgIHwgMjcgKysrKysrKysrKysrLS0tLS0tLS0t CiB4ZW4vYXJjaC94ODYveDg2XzY0L21tY29uZmlnXzY0LmMgIHwgIDQgKystLQogeGVuL2NvbW1v bi9lZmkvYm9vdC5jICAgICAgICAgICAgICB8ICAyICstCiB4ZW4vY29tbW9uL3ZtYXAuYyAgICAg ICAgICAgICAgICAgIHwgMTAgKysrKystLS0KIHhlbi9kcml2ZXJzL2FjcGkvYXBlaS9lcnN0LmMg ICAgICAgfCAgMiArLQogeGVuL2RyaXZlcnMvYWNwaS9hcGVpL2hlc3QuYyAgICAgICB8ICAyICst CiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvZG1hci5jIHwgIDIgKy0KIHhlbi9pbmNsdWRl L2FzbS1hcm0vbW0uaCAgICAgICAgICAgfCAgMiArLQogeGVuL2luY2x1ZGUveGVuL21tLmggICAg ICAgICAgICAgICB8ICAyICstCiAxNCBmaWxlcyBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCA2 MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vbW0uYyBiL3hlbi9hcmNo L2FybS9tbS5jCmluZGV4IDk3ZGNkZDVkNTAuLmYxNzkwN2FjZTggMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL2FybS9tbS5jCisrKyBiL3hlbi9hcmNoL2FybS9tbS5jCkBAIC0xMDY1LDExICsxMDY1LDEx IEBAIG91dDoKIH0KIAogaW50IG1hcF9wYWdlc190b194ZW4odW5zaWduZWQgbG9uZyB2aXJ0LAot ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sCisgICAgICAgICAgICAgICAg ICAgICBtZm5fdCBtZm4sCiAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5yX21m bnMsCiAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0gICAgcmV0 dXJuIGNyZWF0ZV94ZW5fZW50cmllcyhJTlNFUlQsIHZpcnQsIF9tZm4obWZuKSwgbnJfbWZucywg ZmxhZ3MpOworICAgIHJldHVybiBjcmVhdGVfeGVuX2VudHJpZXMoSU5TRVJULCB2aXJ0LCBtZm4s IG5yX21mbnMsIGZsYWdzKTsKIH0KIAogaW50IHBvcHVsYXRlX3B0X3JhbmdlKHVuc2lnbmVkIGxv bmcgdmlydCwgdW5zaWduZWQgbG9uZyBucl9tZm5zKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwppbmRleCBlY2JmYzk1YWUyLi5kMzNiNmJmYTlkIDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0uYworKysgYi94ZW4vYXJjaC94ODYvbW0uYwpAQCAt MjEzLDcgKzIxMyw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBpbml0X2ZyYW1ldGFibGVfY2h1bmso dm9pZCAqc3RhcnQsIHZvaWQgKmVuZCkKICAgICAgICAgd2hpbGUgKCBzdGVwICYmIHMgKyAoc3Rl cCA8PCBQQUdFX1NISUZUKSA+IGUgKyAoNCA8PCBQQUdFX1NISUZUKSApCiAgICAgICAgICAgICBz dGVwID4+PSBQQUdFVEFCTEVfT1JERVI7CiAgICAgICAgIG1mbiA9IGFsbG9jX2Jvb3RfcGFnZXMo c3RlcCwgc3RlcCk7Ci0gICAgICAgIG1hcF9wYWdlc190b194ZW4ocywgbWZuX3gobWZuKSwgc3Rl cCwgUEFHRV9IWVBFUlZJU09SKTsKKyAgICAgICAgbWFwX3BhZ2VzX3RvX3hlbihzLCBtZm4sIHN0 ZXAsIFBBR0VfSFlQRVJWSVNPUik7CiAgICAgfQogCiAgICAgbWVtc2V0KHN0YXJ0LCAwLCBlbmQg LSBzdGFydCk7CkBAIC03OTMsMTIgKzc5MywxMiBAQCBzdGF0aWMgaW50IHVwZGF0ZV94ZW5fbWFw cGluZ3ModW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGludCBjYWNoZWF0dHIpCiAgICAgICAg IFhFTl9WSVJUX1NUQVJUICsgKChtZm4gLSBQRk5fRE9XTih4ZW5fcGh5c19zdGFydCkpIDw8IFBB R0VfU0hJRlQpOwogCiAgICAgaWYgKCB1bmxpa2VseShhbGlhcykgJiYgY2FjaGVhdHRyICkKLSAg ICAgICAgZXJyID0gbWFwX3BhZ2VzX3RvX3hlbih4ZW5fdmEsIG1mbiwgMSwgMCk7CisgICAgICAg IGVyciA9IG1hcF9wYWdlc190b194ZW4oeGVuX3ZhLCBfbWZuKG1mbiksIDEsIDApOwogICAgIGlm ICggIWVyciApCi0gICAgICAgIGVyciA9IG1hcF9wYWdlc190b194ZW4oKHVuc2lnbmVkIGxvbmcp bWZuX3RvX3ZpcnQobWZuKSwgbWZuLCAxLAorICAgICAgICBlcnIgPSBtYXBfcGFnZXNfdG9feGVu KCh1bnNpZ25lZCBsb25nKW1mbl90b192aXJ0KG1mbiksIF9tZm4obWZuKSwgMSwKICAgICAgICAg ICAgICAgICAgICAgIFBBR0VfSFlQRVJWSVNPUiB8IGNhY2hlYXR0cl90b19wdGVfZmxhZ3MoY2Fj aGVhdHRyKSk7CiAgICAgaWYgKCB1bmxpa2VseShhbGlhcykgJiYgIWNhY2hlYXR0ciAmJiAhZXJy ICkKLSAgICAgICAgZXJyID0gbWFwX3BhZ2VzX3RvX3hlbih4ZW5fdmEsIG1mbiwgMSwgUEFHRV9I WVBFUlZJU09SKTsKKyAgICAgICAgZXJyID0gbWFwX3BhZ2VzX3RvX3hlbih4ZW5fdmEsIF9tZm4o bWZuKSwgMSwgUEFHRV9IWVBFUlZJU09SKTsKICAgICByZXR1cm4gZXJyOwogfQogCkBAIC00NjU1 LDcgKzQ2NTUsNyBAQCBsMV9wZ2VudHJ5X3QgKnZpcnRfdG9feGVuX2wxZSh1bnNpZ25lZCBsb25n IHYpCiAKIGludCBtYXBfcGFnZXNfdG9feGVuKAogICAgIHVuc2lnbmVkIGxvbmcgdmlydCwKLSAg ICB1bnNpZ25lZCBsb25nIG1mbiwKKyAgICBtZm5fdCBtZm4sCiAgICAgdW5zaWduZWQgbG9uZyBu cl9tZm5zLAogICAgIHVuc2lnbmVkIGludCBmbGFncykKIHsKQEAgLTQ2ODcsMTMgKzQ2ODcsMTMg QEAgaW50IG1hcF9wYWdlc190b194ZW4oCiAgICAgICAgIG9sM2UgPSAqcGwzZTsKIAogICAgICAg ICBpZiAoIGNwdV9oYXNfcGFnZTFnYiAmJgotICAgICAgICAgICAgICEoKCh2aXJ0ID4+IFBBR0Vf U0hJRlQpIHwgbWZuKSAmCisgICAgICAgICAgICAgISgoKHZpcnQgPj4gUEFHRV9TSElGVCkgfCBt Zm5feChtZm4pKSAmCiAgICAgICAgICAgICAgICAoKDFVTCA8PCAoTDNfUEFHRVRBQkxFX1NISUZU IC0gUEFHRV9TSElGVCkpIC0gMSkpICYmCiAgICAgICAgICAgICAgbnJfbWZucyA+PSAoMVVMIDw8 IChMM19QQUdFVEFCTEVfU0hJRlQgLSBQQUdFX1NISUZUKSkgJiYKICAgICAgICAgICAgICAhKGZs YWdzICYgKF9QQUdFX1BBVCB8IE1BUF9TTUFMTF9QQUdFUykpICkKICAgICAgICAgewogICAgICAg ICAgICAgLyogMUdCLXBhZ2UgbWFwcGluZy4gKi8KLSAgICAgICAgICAgIGwzZV93cml0ZV9hdG9t aWMocGwzZSwgbDNlX2Zyb21fcGZuKG1mbiwgbDFmX3RvX2xOZihmbGFncykpKTsKKyAgICAgICAg ICAgIGwzZV93cml0ZV9hdG9taWMocGwzZSwgbDNlX2Zyb21fbWZuKG1mbiwgbDFmX3RvX2xOZihm bGFncykpKTsKIAogICAgICAgICAgICAgaWYgKCAobDNlX2dldF9mbGFncyhvbDNlKSAmIF9QQUdF X1BSRVNFTlQpICkKICAgICAgICAgICAgIHsKQEAgLTQ3MzcsNyArNDczNyw3IEBAIGludCBtYXBf cGFnZXNfdG9feGVuKAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2aXJ0ICAgICs9IDFV TCA8PCBMM19QQUdFVEFCTEVfU0hJRlQ7Ci0gICAgICAgICAgICBtZm4gICAgICs9IDFVTCA8PCAo TDNfUEFHRVRBQkxFX1NISUZUIC0gUEFHRV9TSElGVCk7CisgICAgICAgICAgICBtZm4gICAgID0g bWZuX2FkZChtZm4sIDFVTCA8PCAoTDNfUEFHRVRBQkxFX1NISUZUIC0gUEFHRV9TSElGVCkpOwog ICAgICAgICAgICAgbnJfbWZucyAtPSAxVUwgPDwgKEwzX1BBR0VUQUJMRV9TSElGVCAtIFBBR0Vf U0hJRlQpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTQ3NTIsMTcgKzQ3 NTIsMTcgQEAgaW50IG1hcF9wYWdlc190b194ZW4oCiAgICAgICAgICAgICBpZiAoICgobDNlX2dl dF9wZm4ob2wzZSkgJiB+KEwyX1BBR0VUQUJMRV9FTlRSSUVTICoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTDFfUEFHRVRBQkxFX0VOVFJJRVMgLSAxKSkgKwogICAg ICAgICAgICAgICAgICAgKGwyX3RhYmxlX29mZnNldCh2aXJ0KSA8PCBQQUdFVEFCTEVfT1JERVIp ICsKLSAgICAgICAgICAgICAgICAgIGwxX3RhYmxlX29mZnNldCh2aXJ0KSA9PSBtZm4pICYmCisg ICAgICAgICAgICAgICAgICBsMV90YWJsZV9vZmZzZXQodmlydCkgPT0gbWZuX3gobWZuKSkgJiYK ICAgICAgICAgICAgICAgICAgKChsTmZfdG9fbDFmKGwzZV9nZXRfZmxhZ3Mob2wzZSkpIF4gZmxh Z3MpICYKICAgICAgICAgICAgICAgICAgIH4oX1BBR0VfQUNDRVNTRUR8X1BBR0VfRElSVFkpKSA9 PSAwICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvKiBXZSBjYW4gc2tpcCB0byBl bmQgb2YgTDMgc3VwZXJwYWdlIGlmIHdlIGdvdCBhIG1hdGNoLiAqLwogICAgICAgICAgICAgICAg IGkgPSAoMXUgPDwgKEwzX1BBR0VUQUJMRV9TSElGVCAtIFBBR0VfU0hJRlQpKSAtCi0gICAgICAg ICAgICAgICAgICAgIChtZm4gJiAoKDEgPDwgKEwzX1BBR0VUQUJMRV9TSElGVCAtIFBBR0VfU0hJ RlQpKSAtIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgKG1mbl94KG1mbikgJiAoKDEgPDwgKEwz X1BBR0VUQUJMRV9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpKTsKICAgICAgICAgICAgICAgICBp ZiAoIGkgPiBucl9tZm5zICkKICAgICAgICAgICAgICAgICAgICAgaSA9IG5yX21mbnM7CiAgICAg ICAgICAgICAgICAgdmlydCAgICArPSBpIDw8IFBBR0VfU0hJRlQ7Ci0gICAgICAgICAgICAgICAg bWZuICAgICArPSBpOworICAgICAgICAgICAgICAgIG1mbiAgICAgPSBtZm5fYWRkKG1mbiwgaSk7 CiAgICAgICAgICAgICAgICAgbnJfbWZucyAtPSBpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVl OwogICAgICAgICAgICAgfQpAQCAtNDgwMCwxNCArNDgwMCwxNCBAQCBpbnQgbWFwX3BhZ2VzX3Rv X3hlbigKICAgICAgICAgaWYgKCAhcGwyZSApCiAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsK IAotICAgICAgICBpZiAoICgoKCh2aXJ0ID4+IFBBR0VfU0hJRlQpIHwgbWZuKSAmCisgICAgICAg IGlmICggKCgoKHZpcnQgPj4gUEFHRV9TSElGVCkgfCBtZm5feChtZm4pKSAmCiAgICAgICAgICAg ICAgICAoKDF1IDw8IFBBR0VUQUJMRV9PUkRFUikgLSAxKSkgPT0gMCkgJiYKICAgICAgICAgICAg ICAobnJfbWZucyA+PSAoMXUgPDwgUEFHRVRBQkxFX09SREVSKSkgJiYKICAgICAgICAgICAgICAh KGZsYWdzICYgKF9QQUdFX1BBVHxNQVBfU01BTExfUEFHRVMpKSApCiAgICAgICAgIHsKICAgICAg ICAgICAgIC8qIFN1cGVyLXBhZ2UgbWFwcGluZy4gKi8KICAgICAgICAgICAgIG9sMmUgPSAqcGwy ZTsKLSAgICAgICAgICAgIGwyZV93cml0ZV9hdG9taWMocGwyZSwgbDJlX2Zyb21fcGZuKG1mbiwg bDFmX3RvX2xOZihmbGFncykpKTsKKyAgICAgICAgICAgIGwyZV93cml0ZV9hdG9taWMocGwyZSwg bDJlX2Zyb21fbWZuKG1mbiwgbDFmX3RvX2xOZihmbGFncykpKTsKIAogICAgICAgICAgICAgaWYg KCAobDJlX2dldF9mbGFncyhvbDJlKSAmIF9QQUdFX1BSRVNFTlQpICkKICAgICAgICAgICAgIHsK QEAgLTQ4MzAsNyArNDgzMCw3IEBAIGludCBtYXBfcGFnZXNfdG9feGVuKAogICAgICAgICAgICAg fQogCiAgICAgICAgICAgICB2aXJ0ICAgICs9IDFVTCA8PCBMMl9QQUdFVEFCTEVfU0hJRlQ7Ci0g ICAgICAgICAgICBtZm4gICAgICs9IDFVTCA8PCBQQUdFVEFCTEVfT1JERVI7CisgICAgICAgICAg ICBtZm4gICAgID0gbWZuX2FkZChtZm4sIDFVTCA8PCBQQUdFVEFCTEVfT1JERVIpOwogICAgICAg ICAgICAgbnJfbWZucyAtPSAxVUwgPDwgUEFHRVRBQkxFX09SREVSOwogICAgICAgICB9CiAgICAg ICAgIGVsc2UKQEAgLTQ4NDksMTcgKzQ4NDksMTcgQEAgaW50IG1hcF9wYWdlc190b194ZW4oCiAK ICAgICAgICAgICAgICAgICAvKiBTa2lwIHRoaXMgUFRFIGlmIHRoZXJlIGlzIG5vIGNoYW5nZS4g Ki8KICAgICAgICAgICAgICAgICBpZiAoICgoKGwyZV9nZXRfcGZuKCpwbDJlKSAmIH4oTDFfUEFH RVRBQkxFX0VOVFJJRVMgLSAxKSkgKwotICAgICAgICAgICAgICAgICAgICAgICBsMV90YWJsZV9v ZmZzZXQodmlydCkpID09IG1mbikgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgbDFfdGFibGVf b2Zmc2V0KHZpcnQpKSA9PSBtZm5feChtZm4pKSAmJgogICAgICAgICAgICAgICAgICAgICAgKCgo bE5mX3RvX2wxZihsMmVfZ2V0X2ZsYWdzKCpwbDJlKSkgXiBmbGFncykgJgogICAgICAgICAgICAg ICAgICAgICAgICB+KF9QQUdFX0FDQ0VTU0VEfF9QQUdFX0RJUlRZKSkgPT0gMCkgKQogICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgLyogV2UgY2FuIHNraXAgdG8gZW5kIG9m IEwyIHN1cGVycGFnZSBpZiB3ZSBnb3QgYSBtYXRjaC4gKi8KICAgICAgICAgICAgICAgICAgICAg aSA9ICgxdSA8PCAoTDJfUEFHRVRBQkxFX1NISUZUIC0gUEFHRV9TSElGVCkpIC0KLSAgICAgICAg ICAgICAgICAgICAgICAgIChtZm4gJiAoKDF1IDw8IChMMl9QQUdFVEFCTEVfU0hJRlQgLSBQQUdF X1NISUZUKSkgLSAxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAobWZuX3gobWZuKSAmICgo MXUgPDwgKEwyX1BBR0VUQUJMRV9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpKTsKICAgICAgICAg ICAgICAgICAgICAgaWYgKCBpID4gbnJfbWZucyApCiAgICAgICAgICAgICAgICAgICAgICAgICBp ID0gbnJfbWZuczsKICAgICAgICAgICAgICAgICAgICAgdmlydCAgICArPSBpIDw8IEwxX1BBR0VU QUJMRV9TSElGVDsKLSAgICAgICAgICAgICAgICAgICAgbWZuICAgICArPSBpOworICAgICAgICAg ICAgICAgICAgICBtZm4gICAgID0gbWZuX2FkZChtZm4sIGkpOwogICAgICAgICAgICAgICAgICAg ICBucl9tZm5zIC09IGk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gY2hlY2tfbDM7CiAgICAg ICAgICAgICAgICAgfQpAQCAtNDg5NCw3ICs0ODk0LDcgQEAgaW50IG1hcF9wYWdlc190b194ZW4o CiAKICAgICAgICAgICAgIHBsMWUgID0gbDJlX3RvX2wxZSgqcGwyZSkgKyBsMV90YWJsZV9vZmZz ZXQodmlydCk7CiAgICAgICAgICAgICBvbDFlICA9ICpwbDFlOwotICAgICAgICAgICAgbDFlX3dy aXRlX2F0b21pYyhwbDFlLCBsMWVfZnJvbV9wZm4obWZuLCBmbGFncykpOworICAgICAgICAgICAg bDFlX3dyaXRlX2F0b21pYyhwbDFlLCBsMWVfZnJvbV9tZm4obWZuLCBmbGFncykpOwogICAgICAg ICAgICAgaWYgKCAobDFlX2dldF9mbGFncyhvbDFlKSAmIF9QQUdFX1BSRVNFTlQpICkKICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmx1c2hfZmxhZ3MgPSBGTFVT SF9UTEIgfCBGTFVTSF9PUkRFUigwKTsKQEAgLTQ5MDQsMTIgKzQ5MDQsMTIgQEAgaW50IG1hcF9w YWdlc190b194ZW4oCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZpcnQgICAgKz0gMVVM IDw8IEwxX1BBR0VUQUJMRV9TSElGVDsKLSAgICAgICAgICAgIG1mbiAgICAgKz0gMVVMOworICAg ICAgICAgICAgbWZuICAgICA9IG1mbl9hZGQobWZuLCAxVUwpOwogICAgICAgICAgICAgbnJfbWZu cyAtPSAxVUw7CiAKICAgICAgICAgICAgIGlmICggKGZsYWdzID09IFBBR0VfSFlQRVJWSVNPUikg JiYKICAgICAgICAgICAgICAgICAgKChucl9tZm5zID09IDApIHx8Ci0gICAgICAgICAgICAgICAg ICAoKCgodmlydCA+PiBQQUdFX1NISUZUKSB8IG1mbikgJgorICAgICAgICAgICAgICAgICAgKCgo KHZpcnQgPj4gUEFHRV9TSElGVCkgfCBtZm5feChtZm4pKSAmCiAgICAgICAgICAgICAgICAgICAg ICgoMXUgPDwgUEFHRVRBQkxFX09SREVSKSAtIDEpKSA9PSAwKSkgKQogICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmFzZV9tZm47CkBAIC00OTYyLDcgKzQ5NjIs NyBAQCBpbnQgbWFwX3BhZ2VzX3RvX3hlbigKICAgICAgICAgaWYgKCBjcHVfaGFzX3BhZ2UxZ2Ig JiYKICAgICAgICAgICAgICAoZmxhZ3MgPT0gUEFHRV9IWVBFUlZJU09SKSAmJgogICAgICAgICAg ICAgICgobnJfbWZucyA9PSAwKSB8fAotICAgICAgICAgICAgICAhKCgodmlydCA+PiBQQUdFX1NI SUZUKSB8IG1mbikgJgorICAgICAgICAgICAgICAhKCgodmlydCA+PiBQQUdFX1NISUZUKSB8IG1m bl94KG1mbikpICYKICAgICAgICAgICAgICAgICAoKDFVTCA8PCAoTDNfUEFHRVRBQkxFX1NISUZU IC0gUEFHRV9TSElGVCkpIC0gMSkpKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgYmFzZV9tZm47CkBAIC01MDE0LDcgKzUwMTQsNyBAQCBpbnQgbWFwX3BhZ2VzX3RvX3hl bigKIAogaW50IHBvcHVsYXRlX3B0X3JhbmdlKHVuc2lnbmVkIGxvbmcgdmlydCwgdW5zaWduZWQg bG9uZyBucl9tZm5zKQogewotICAgIHJldHVybiBtYXBfcGFnZXNfdG9feGVuKHZpcnQsIG1mbl94 KElOVkFMSURfTUZOKSwgbnJfbWZucywgTUFQX1NNQUxMX1BBR0VTKTsKKyAgICByZXR1cm4gbWFw X3BhZ2VzX3RvX3hlbih2aXJ0LCBJTlZBTElEX01GTiwgbnJfbWZucywgTUFQX1NNQUxMX1BBR0VT KTsKIH0KIAogLyoKQEAgLTUyNzUsNyArNTI3NSw3IEBAIHZvaWQgX19zZXRfZml4bWFwKAogICAg IGVudW0gZml4ZWRfYWRkcmVzc2VzIGlkeCwgdW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGxv bmcgZmxhZ3MpCiB7CiAgICAgQlVHX09OKGlkeCA+PSBfX2VuZF9vZl9maXhlZF9hZGRyZXNzZXMp OwotICAgIG1hcF9wYWdlc190b194ZW4oX19maXhfdG9fdmlydChpZHgpLCBtZm4sIDEsIGZsYWdz KTsKKyAgICBtYXBfcGFnZXNfdG9feGVuKF9fZml4X3RvX3ZpcnQoaWR4KSwgX21mbihtZm4pLCAx LCBmbGFncyk7CiB9CiAKIHZvaWQgKl9faW5pdCBhcmNoX3ZtYXBfdmlydF9lbmQodm9pZCkKQEAg LTU1NDYsNyArNTU0Niw3IEBAIHN0YXRpYyB2b2lkIF9fbWVtZ3VhcmRfY2hhbmdlX3JhbmdlKHZv aWQgKnAsIHVuc2lnbmVkIGxvbmcgbCwgaW50IGd1YXJkKQogICAgIGlmICggZ3VhcmQgKQogICAg ICAgICBmbGFncyAmPSB+X1BBR0VfUFJFU0VOVDsKIAotICAgIG1hcF9wYWdlc190b194ZW4oX3As IG1mbl94KHZpcnRfdG9fbWZuKHApKSwgX2wgPj4gUEFHRV9TSElGVCwgZmxhZ3MpOworICAgIG1h cF9wYWdlc190b194ZW4oX3AsIHZpcnRfdG9fbWZuKHApLCBfbCA+PiBQQUdFX1NISUZULCBmbGFn cyk7CiB9CiAKIHZvaWQgbWVtZ3VhcmRfZ3VhcmRfcmFuZ2Uodm9pZCAqcCwgdW5zaWduZWQgbG9u ZyBsKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NldHVwLmMgYi94ZW4vYXJjaC94ODYvc2V0 dXAuYwppbmRleCBhYzUzMGVjZTJjLi5mYWJkNjg5ZjZlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvc2V0dXAuYworKysgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwpAQCAtMzU0LDcgKzM1NCw3IEBA IHZvaWQgKl9faW5pdCBib290c3RyYXBfbWFwKGNvbnN0IG1vZHVsZV90ICptb2QpCiAgICAgaWYg KCBlbmQgLSBzdGFydCA+IEJPT1RTVFJBUF9NQVBfTElNSVQgLSBtYXBfY3VyICkKICAgICAgICAg cmV0dXJuIE5VTEw7CiAKLSAgICBtYXBfcGFnZXNfdG9feGVuKG1hcF9jdXIsIHN0YXJ0ID4+IFBB R0VfU0hJRlQsCisgICAgbWFwX3BhZ2VzX3RvX3hlbihtYXBfY3VyLCBtYWRkcl90b19tZm4oc3Rh cnQpLAogICAgICAgICAgICAgICAgICAgICAgKGVuZCAtIHN0YXJ0KSA+PiBQQUdFX1NISUZULCBQ QUdFX0hZUEVSVklTT1IpOwogICAgIG1hcF9jdXIgKz0gZW5kIC0gc3RhcnQ7CiAgICAgcmV0dXJu IHJldDsKQEAgLTk3Nyw3ICs5NzcsNyBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hl bih1bnNpZ25lZCBsb25nIG1iaV9wKQogICAgICAgICB7CiAgICAgICAgICAgICBlbmQgPSBtaW4o ZSwgbGltaXQpOwogICAgICAgICAgICAgc2V0X3BkeF9yYW5nZShzID4+IFBBR0VfU0hJRlQsIGVu ZCA+PiBQQUdFX1NISUZUKTsKLSAgICAgICAgICAgIG1hcF9wYWdlc190b194ZW4oKHVuc2lnbmVk IGxvbmcpX192YShzKSwgcyA+PiBQQUdFX1NISUZULAorICAgICAgICAgICAgbWFwX3BhZ2VzX3Rv X3hlbigodW5zaWduZWQgbG9uZylfX3ZhKHMpLCBtYWRkcl90b19tZm4ocyksCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChlbmQgLSBzKSA+PiBQQUdFX1NISUZULCBQQUdFX0hZUEVSVklT T1IpOwogICAgICAgICB9CiAKQEAgLTEyOTIsNyArMTI5Miw3IEBAIHZvaWQgX19pbml0IG5vcmV0 dXJuIF9fc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcgbWJpX3ApCiAKICAgICAgICAgICAgIGlmICgg bWFwX2UgPCBlbmQgKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1hcF9wYWdlc190 b194ZW4oKHVuc2lnbmVkIGxvbmcpX192YShtYXBfZSksIFBGTl9ET1dOKG1hcF9lKSwKKyAgICAg ICAgICAgICAgICBtYXBfcGFnZXNfdG9feGVuKCh1bnNpZ25lZCBsb25nKV9fdmEobWFwX2UpLCBt YWRkcl90b19tZm4obWFwX2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEZO X0RPV04oZW5kIC0gbWFwX2UpLCBQQUdFX0hZUEVSVklTT1IpOwogICAgICAgICAgICAgICAgIGlu aXRfYm9vdF9wYWdlcyhtYXBfZSwgZW5kKTsKICAgICAgICAgICAgICAgICBtYXBfZSA9IGVuZDsK QEAgLTEzMDIsMTIgKzEzMDIsMTIgQEAgdm9pZCBfX2luaXQgbm9yZXR1cm4gX19zdGFydF94ZW4o dW5zaWduZWQgbG9uZyBtYmlfcCkKICAgICAgICAgewogICAgICAgICAgICAgLyogVGhpcyByYW5n ZSBtdXN0IG5vdCBiZSBwYXNzZWQgdG8gdGhlIGJvb3QgYWxsb2NhdG9yIGFuZAogICAgICAgICAg ICAgICogbXVzdCBhbHNvIG5vdCBiZSBtYXBwZWQgd2l0aCBfUEFHRV9HTE9CQUwuICovCi0gICAg ICAgICAgICBtYXBfcGFnZXNfdG9feGVuKCh1bnNpZ25lZCBsb25nKV9fdmEobWFwX2UpLCBQRk5f RE9XTihtYXBfZSksCisgICAgICAgICAgICBtYXBfcGFnZXNfdG9feGVuKCh1bnNpZ25lZCBsb25n KV9fdmEobWFwX2UpLCBtYWRkcl90b19tZm4obWFwX2UpLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQRk5fRE9XTihlIC0gbWFwX2UpLCBfX1BBR0VfSFlQRVJWSVNPUl9SVyk7CiAgICAg ICAgIH0KICAgICAgICAgaWYgKCBzIDwgbWFwX3MgKQogICAgICAgICB7Ci0gICAgICAgICAgICBt YXBfcGFnZXNfdG9feGVuKCh1bnNpZ25lZCBsb25nKV9fdmEocyksIHMgPj4gUEFHRV9TSElGVCwK KyAgICAgICAgICAgIG1hcF9wYWdlc190b194ZW4oKHVuc2lnbmVkIGxvbmcpX192YShzKSwgbWFk ZHJfdG9fbWZuKHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwX3MgLSBzKSA+ PiBQQUdFX1NISUZULCBQQUdFX0hZUEVSVklTT1IpOwogICAgICAgICAgICAgaW5pdF9ib290X3Bh Z2VzKHMsIG1hcF9zKTsKICAgICAgICAgfQpAQCAtMTMxOCw3ICsxMzE4LDcgQEAgdm9pZCBfX2lu aXQgbm9yZXR1cm4gX19zdGFydF94ZW4odW5zaWduZWQgbG9uZyBtYmlfcCkKICAgICAgICAgc2V0 X3BkeF9yYW5nZShtb2RbaV0ubW9kX3N0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgIG1vZFtp XS5tb2Rfc3RhcnQgKyBQRk5fVVAobW9kW2ldLm1vZF9lbmQpKTsKICAgICAgICAgbWFwX3BhZ2Vz X3RvX3hlbigodW5zaWduZWQgbG9uZyltZm5fdG9fdmlydChtb2RbaV0ubW9kX3N0YXJ0KSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICBtb2RbaV0ubW9kX3N0YXJ0LAorICAgICAgICAgICAgICAg ICAgICAgICAgIF9tZm4obW9kW2ldLm1vZF9zdGFydCksCiAgICAgICAgICAgICAgICAgICAgICAg ICAgUEZOX1VQKG1vZFtpXS5tb2RfZW5kKSwgUEFHRV9IWVBFUlZJU09SKTsKICAgICB9CiAKQEAg LTEzMzEsNyArMTMzMSw3IEBAIHZvaWQgX19pbml0IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHVuc2ln bmVkIGxvbmcgbWJpX3ApCiAKICAgICAgICAgaWYgKCBlID4gcyApIAogICAgICAgICAgICAgbWFw X3BhZ2VzX3RvX3hlbigodW5zaWduZWQgbG9uZylfX3ZhKGtleGVjX2NyYXNoX2FyZWEuc3RhcnQp LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBlIC0gcywgUEFHRV9IWVBFUlZJU09S KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21mbihzKSwgZSAtIHMsIFBBR0VfSFlQ RVJWSVNPUik7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zbXBi b290LmMgYi94ZW4vYXJjaC94ODYvc21wYm9vdC5jCmluZGV4IGRiMjY0YmQ3YmYuLjUyYWQ0M2Uw ZWQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9zbXBib290LmMKKysrIGIveGVuL2FyY2gveDg2 L3NtcGJvb3QuYwpAQCAtNjI2LDcgKzYyNiw3IEBAIHVuc2lnbmVkIGxvbmcgYWxsb2Nfc3R1Yl9w YWdlKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGxvbmcgKm1mbikKICAgICBCVUlMRF9CVUdf T04oTlJfQ1BVUyAqIFBBR0VfU0laRSA+ICgxdSA8PCBMM19QQUdFVEFCTEVfU0hJRlQpKTsKIAog ICAgIHN0dWJfdmEgPSBYRU5fVklSVF9FTkQgLSAoY3B1ICsgMSkgKiBQQUdFX1NJWkU7Ci0gICAg aWYgKCBtYXBfcGFnZXNfdG9feGVuKHN0dWJfdmEsIG1mbl94KHBhZ2VfdG9fbWZuKHBnKSksIDEs CisgICAgaWYgKCBtYXBfcGFnZXNfdG9feGVuKHN0dWJfdmEsIHBhZ2VfdG9fbWZuKHBnKSwgMSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFHRV9IWVBFUlZJU09SX1JYIHwgTUFQX1NNQUxM X1BBR0VTKSApCiAgICAgewogICAgICAgICBpZiAoICEqbWZuICkKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni90Ym9vdC5jIGIveGVuL2FyY2gveDg2L3Rib290LmMKaW5kZXggZDM2YmYzMzQwNy4u NzFlNzU3YzU1MyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Rib290LmMKKysrIGIveGVuL2Fy Y2gveDg2L3Rib290LmMKQEAgLTMzNiwyMiArMzM2LDIzIEBAIHN0YXRpYyB2b2lkIHRib290X2dl bl9mcmFtZXRhYmxlX2ludGVncml0eShjb25zdCB1aW50OF90IGtleVtUQl9LRVlfU0laRV0sCiAK IHZvaWQgdGJvb3Rfc2h1dGRvd24odWludDMyX3Qgc2h1dGRvd25fdHlwZSkKIHsKLSAgICB1aW50 MzJfdCBtYXBfYmFzZSwgbWFwX3NpemU7CisgICAgbWZuX3QgbWFwX2Jhc2U7CisgICAgdWludDMy X3QgbWFwX3NpemU7CiAgICAgaW50IGVycjsKIAogICAgIGdfdGJvb3Rfc2hhcmVkLT5zaHV0ZG93 bl90eXBlID0gc2h1dGRvd25fdHlwZTsKIAogICAgIC8qIENyZWF0ZSBpZGVudGl0eSBtYXAgZm9y IHRib290IHNodXRkb3duIGNvZGUuICovCiAgICAgLyogZG8gYmVmb3JlIFMzIGludGVncml0eSBi ZWNhdXNlIG1hcHBpbmcgdGJvb3QgbWF5IGNoYW5nZSB4ZW5oZWFwICovCi0gICAgbWFwX2Jhc2Ug PSBQRk5fRE9XTihnX3Rib290X3NoYXJlZC0+dGJvb3RfYmFzZSk7CisgICAgbWFwX2Jhc2UgPSBt YWRkcl90b19tZm4oZ190Ym9vdF9zaGFyZWQtPnRib290X2Jhc2UpOwogICAgIG1hcF9zaXplID0g UEZOX1VQKGdfdGJvb3Rfc2hhcmVkLT50Ym9vdF9zaXplKTsKIAotICAgIGVyciA9IG1hcF9wYWdl c190b194ZW4obWFwX2Jhc2UgPDwgUEFHRV9TSElGVCwgbWFwX2Jhc2UsIG1hcF9zaXplLAorICAg IGVyciA9IG1hcF9wYWdlc190b194ZW4obWZuX3RvX21hZGRyKG1hcF9iYXNlKSwgbWFwX2Jhc2Us IG1hcF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19QQUdFX0hZUEVSVklTT1Ip OwogICAgIGlmICggZXJyICE9IDAgKQogICAgIHsKLSAgICAgICAgcHJpbnRrKCJlcnJvciAoJSN4 KSBtYXBwaW5nIHRib290IHBhZ2VzIChtZm5zKSBAICUjeCwgJSN4XG4iLCBlcnIsCi0gICAgICAg ICAgICAgICBtYXBfYmFzZSwgbWFwX3NpemUpOworICAgICAgICBwcmludGsoImVycm9yICglI3gp IG1hcHBpbmcgdGJvb3QgcGFnZXMgKG1mbnMpIEAgJSJQUklfbWZuIiwgJSN4XG4iLAorICAgICAg ICAgICAgICAgZXJyLCBtZm5feChtYXBfYmFzZSksIG1hcF9zaXplKTsKICAgICAgICAgcmV0dXJu OwogICAgIH0KIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jIGIveGVuL2Fy Y2gveDg2L3g4Nl82NC9tbS5jCmluZGV4IDliMzdkYTY2OTguLmNmYmM4ZWNmMTYgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYworKysgYi94ZW4vYXJjaC94ODYveDg2XzY0L21t LmMKQEAgLTQwLDYgKzQwLDEwIEBAIGFzbSgiLmZpbGUgXCIiIF9fRklMRV9fICJcIiIpOwogI2lu Y2x1ZGUgPGFzbS9tZW1fc2hhcmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9tZW1vcnkuaD4KIAor LyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRo IG1mbl90ICovCisjdW5kZWYgcGFnZV90b19tZm4KKyNkZWZpbmUgcGFnZV90b19tZm4ocGcpIF9t Zm4oX19wYWdlX3RvX21mbihwZykpCisKIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IG0ycF9j b21wYXRfdnN0YXJ0ID0gX19IWVBFUlZJU09SX0NPTVBBVF9WSVJUX1NUQVJUOwogCiBsMl9wZ2Vu dHJ5X3QgKmNvbXBhdF9pZGxlX3BnX3RhYmxlX2wyOwpAQCAtMTExLDE0ICsxMTUsMTQgQEAgc3Rh dGljIGludCBob3RhZGRfbWVtX3ZhbGlkKHVuc2lnbmVkIGxvbmcgcGZuLCBzdHJ1Y3QgbWVtX2hv dGFkZF9pbmZvICppbmZvKQogICAgIHJldHVybiAocGZuIDwgaW5mby0+ZXBmbiAmJiBwZm4gPj0g aW5mby0+c3Bmbik7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBsb25nIGFsbG9jX2hvdGFkZF9tZm4o c3RydWN0IG1lbV9ob3RhZGRfaW5mbyAqaW5mbykKK3N0YXRpYyBtZm5fdCBhbGxvY19ob3RhZGRf bWZuKHN0cnVjdCBtZW1faG90YWRkX2luZm8gKmluZm8pCiB7Ci0gICAgdW5zaWduZWQgbWZuOwor ICAgIG1mbl90IG1mbjsKIAogICAgIEFTU0VSVCgoaW5mby0+Y3VyICsgKCAxVUwgPDwgUEFHRVRB QkxFX09SREVSKSA8IGluZm8tPmVwZm4pICYmCiAgICAgICAgICAgICBpbmZvLT5jdXIgPj0gaW5m by0+c3Bmbik7CiAKLSAgICBtZm4gPSBpbmZvLT5jdXI7CisgICAgbWZuID0gX21mbihpbmZvLT5j dXIpOwogICAgIGluZm8tPmN1ciArPSAoMVVMIDw8IFBBR0VUQUJMRV9PUkRFUik7CiAgICAgcmV0 dXJuIG1mbjsKIH0KQEAgLTMxNyw3ICszMjEsOCBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X20ycF9t YXBwaW5nKHN0cnVjdCBtZW1faG90YWRkX2luZm8gKmluZm8pCiAgKi8KIHN0YXRpYyBpbnQgc2V0 dXBfY29tcGF0X20ycF90YWJsZShzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZvICppbmZvKQogewotICAg IHVuc2lnbmVkIGxvbmcgaSwgdmEsIHNtYXAsIGVtYXAsIHJ3dmEsIGVwZm4gPSBpbmZvLT5lcGZu LCBtZm47CisgICAgdW5zaWduZWQgbG9uZyBpLCB2YSwgc21hcCwgZW1hcCwgcnd2YSwgZXBmbiA9 IGluZm8tPmVwZm47CisgICAgbWZuX3QgbWZuOwogICAgIHVuc2lnbmVkIGludCBuOwogICAgIGwz X3BnZW50cnlfdCAqbDNfcm9fbXB0ID0gTlVMTDsKICAgICBsMl9wZ2VudHJ5X3QgKmwyX3JvX21w dCA9IE5VTEw7CkBAIC0zNzgsNyArMzgzLDcgQEAgc3RhdGljIGludCBzZXR1cF9jb21wYXRfbTJw X3RhYmxlKHN0cnVjdCBtZW1faG90YWRkX2luZm8gKmluZm8pCiAgICAgICAgIG1lbXNldCgodm9p ZCAqKXJ3dmEsIDB4RkYsIDFVTCA8PCBMMl9QQUdFVEFCTEVfU0hJRlQpOwogICAgICAgICAvKiBO Qi4gQ2Fubm90IGJlIEdMT0JBTCBhcyB0aGUgcHRlcyBnZXQgY29waWVkIGludG8gcGVyLVZNIHNw YWNlLiAqLwogICAgICAgICBsMmVfd3JpdGUoJmwyX3JvX21wdFtsMl90YWJsZV9vZmZzZXQodmEp XSwKLSAgICAgICAgICAgICAgICAgIGwyZV9mcm9tX3BmbihtZm4sIF9QQUdFX1BTRXxfUEFHRV9Q UkVTRU5UKSk7CisgICAgICAgICAgICAgICAgICBsMmVfZnJvbV9tZm4obWZuLCBfUEFHRV9QU0V8 X1BBR0VfUFJFU0VOVCkpOwogICAgIH0KICN1bmRlZiBDTlQKICN1bmRlZiBNRk4KQEAgLTQzOCw3 ICs0NDMsNyBAQCBzdGF0aWMgaW50IHNldHVwX20ycF90YWJsZShzdHJ1Y3QgbWVtX2hvdGFkZF9p bmZvICppbmZvKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoIG4gPCBDTlQg KQogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiA9IGFsbG9jX2hvdGFk ZF9tZm4oaW5mbyk7CisgICAgICAgICAgICBtZm5fdCBtZm4gPSBhbGxvY19ob3RhZGRfbWZuKGlu Zm8pOwogCiAgICAgICAgICAgICByZXQgPSBtYXBfcGFnZXNfdG9feGVuKAogICAgICAgICAgICAg ICAgICAgICAgICAgUkRXUl9NUFRfVklSVF9TVEFSVCArIGkgKiBzaXplb2YodW5zaWduZWQgbG9u ZyksCkBAIC00NzMsNyArNDc4LDcgQEAgc3RhdGljIGludCBzZXR1cF9tMnBfdGFibGUoc3RydWN0 IG1lbV9ob3RhZGRfaW5mbyAqaW5mbykKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyog TkIuIENhbm5vdCBiZSBHTE9CQUw6IGd1ZXN0IHVzZXIgbW9kZSBzaG91bGQgbm90IHNlZSBpdC4g Ki8KLSAgICAgICAgICAgIGwyZV93cml0ZShsMl9yb19tcHQsIGwyZV9mcm9tX3BmbihtZm4sCisg ICAgICAgICAgICBsMmVfd3JpdGUobDJfcm9fbXB0LCBsMmVfZnJvbV9tZm4obWZuLAogICAgICAg ICAgICAgICAgICAgIC8qX1BBR0VfR0xPQkFMfCovX1BBR0VfUFNFfF9QQUdFX1VTRVJ8X1BBR0Vf UFJFU0VOVCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICggISgodW5zaWduZWQgbG9uZylsMl9y b19tcHQgJiB+UEFHRV9NQVNLKSApCkBAIC02OTIsNyArNjk3LDcgQEAgdm9pZCBfX2luaXQgemFw X2xvd19tYXBwaW5ncyh2b2lkKQogICAgIGZsdXNoX2xvY2FsKEZMVVNIX1RMQl9HTE9CQUwpOwog CiAgICAgLyogUmVwbGFjZSB3aXRoIG1hcHBpbmcgb2YgdGhlIGJvb3QgdHJhbXBvbGluZSBvbmx5 LiAqLwotICAgIG1hcF9wYWdlc190b194ZW4odHJhbXBvbGluZV9waHlzLCB0cmFtcG9saW5lX3Bo eXMgPj4gUEFHRV9TSElGVCwKKyAgICBtYXBfcGFnZXNfdG9feGVuKHRyYW1wb2xpbmVfcGh5cywg bWFkZHJfdG9fbWZuKHRyYW1wb2xpbmVfcGh5cyksCiAgICAgICAgICAgICAgICAgICAgICBQRk5f VVAodHJhbXBvbGluZV9lbmQgLSB0cmFtcG9saW5lX3N0YXJ0KSwKICAgICAgICAgICAgICAgICAg ICAgIF9fUEFHRV9IWVBFUlZJU09SKTsKIH0KQEAgLTc2OSw3ICs3NzQsNyBAQCBzdGF0aWMgaW50 IHNldHVwX2ZyYW1ldGFibGVfY2h1bmsodm9pZCAqc3RhcnQsIHZvaWQgKmVuZCwKIHsKICAgICB1 bnNpZ25lZCBsb25nIHMgPSAodW5zaWduZWQgbG9uZylzdGFydDsKICAgICB1bnNpZ25lZCBsb25n IGUgPSAodW5zaWduZWQgbG9uZyllbmQ7Ci0gICAgdW5zaWduZWQgbG9uZyBtZm47CisgICAgbWZu X3QgbWZuOwogICAgIGludCBlcnI7CiAKICAgICBBU1NFUlQoIShzICYgKCgxIDw8IEwyX1BBR0VU QUJMRV9TSElGVCkgLSAxKSkpOwpAQCAtMTM2OCw3ICsxMzczLDcgQEAgaW50IG1lbW9yeV9hZGQo dW5zaWduZWQgbG9uZyBzcGZuLCB1bnNpZ25lZCBsb25nIGVwZm4sIHVuc2lnbmVkIGludCBweG0p CiAgICAgaSA9IHZpcnRfdG9fbWZuKEhZUEVSVklTT1JfVklSVF9FTkQgLSAxKSArIDE7CiAgICAg aWYgKCBzcGZuIDwgaSApCiAgICAgewotICAgICAgICByZXQgPSBtYXBfcGFnZXNfdG9feGVuKCh1 bnNpZ25lZCBsb25nKW1mbl90b192aXJ0KHNwZm4pLCBzcGZuLAorICAgICAgICByZXQgPSBtYXBf cGFnZXNfdG9feGVuKCh1bnNpZ25lZCBsb25nKW1mbl90b192aXJ0KHNwZm4pLCBfbWZuKHNwZm4p LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbihlcGZuLCBpKSAtIHNwZm4sIFBB R0VfSFlQRVJWSVNPUik7CiAgICAgICAgIGlmICggcmV0ICkKICAgICAgICAgICAgIGdvdG8gZGVz dHJveV9kaXJlY3RtYXA7CkBAIC0xMzc3LDcgKzEzODIsNyBAQCBpbnQgbWVtb3J5X2FkZCh1bnNp Z25lZCBsb25nIHNwZm4sIHVuc2lnbmVkIGxvbmcgZXBmbiwgdW5zaWduZWQgaW50IHB4bSkKICAg ICB7CiAgICAgICAgIGlmICggaSA8IHNwZm4gKQogICAgICAgICAgICAgaSA9IHNwZm47Ci0gICAg ICAgIHJldCA9IG1hcF9wYWdlc190b194ZW4oKHVuc2lnbmVkIGxvbmcpbWZuX3RvX3ZpcnQoaSks IGksCisgICAgICAgIHJldCA9IG1hcF9wYWdlc190b194ZW4oKHVuc2lnbmVkIGxvbmcpbWZuX3Rv X3ZpcnQoaSksIF9tZm4oaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXBmbiAt IGksIF9fUEFHRV9IWVBFUlZJU09SX1JXKTsKICAgICAgICAgaWYgKCByZXQgKQogICAgICAgICAg ICAgZ290byBkZXN0cm95X2RpcmVjdG1hcDsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZf NjQvbW1jb25maWdfNjQuYyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW1jb25maWdfNjQuYwppbmRl eCA5NThiNmNmMmY0Li5jNjgwMDRmYzRkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0 L21tY29uZmlnXzY0LmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9tbWNvbmZpZ182NC5jCkBA IC0xMjUsOCArMTI1LDggQEAgc3RhdGljIHZvaWQgX19pb21lbSAqbWNmZ19pb3JlbWFwKGNvbnN0 IHN0cnVjdCBhY3BpX21jZmdfYWxsb2NhdGlvbiAqY2ZnLAogICAgICAgICByZXR1cm4gTlVMTDsK IAogICAgIGlmIChtYXBfcGFnZXNfdG9feGVuKHZpcnQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgKGNmZy0+YWRkcmVzcyA+PiBQQUdFX1NISUZUKSArCi0gICAgICAgICAgICAgICAgICAgICAg ICAgKGNmZy0+c3RhcnRfYnVzX251bWJlciA8PCAoMjAgLSBQQUdFX1NISUZUKSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgbWZuX2FkZChtYWRkcl90b19tZm4oY2ZnLT5hZGRyZXNzKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZmctPnN0YXJ0X2J1c19udW1iZXIgPDwg KDIwIC0gUEFHRV9TSElGVCkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID4+IFBB R0VfU0hJRlQsIHByb3QpKQogICAgICAgICByZXR1cm4gTlVMTDsKIApkaWZmIC0tZ2l0IGEveGVu L2NvbW1vbi9lZmkvYm9vdC5jIGIveGVuL2NvbW1vbi9lZmkvYm9vdC5jCmluZGV4IDQ2OWJmOTgw Y2MuLjY0ZDEyNjg1ZDMgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vZWZpL2Jvb3QuYworKysgYi94 ZW4vY29tbW9uL2VmaS9ib290LmMKQEAgLTE0NjQsNyArMTQ2NCw3IEBAIHZvaWQgX19pbml0IGVm aV9pbml0X21lbW9yeSh2b2lkKQogICAgICAgICAgICAgaWYgKCAodW5zaWduZWQgbG9uZyltZm5f dG9fdmlydChlbWZuIC0gMSkgPj0gSFlQRVJWSVNPUl9WSVJUX0VORCApCiAgICAgICAgICAgICAg ICAgcHJvdCAmPSB+X1BBR0VfR0xPQkFMOwogICAgICAgICAgICAgaWYgKCBtYXBfcGFnZXNfdG9f eGVuKCh1bnNpZ25lZCBsb25nKW1mbl90b192aXJ0KHNtZm4pLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNtZm4sIGVtZm4gLSBzbWZuLCBwcm90KSA9PSAwICkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfbWZuKHNtZm4pLCBlbWZuIC0gc21mbiwgcHJvdCkg PT0gMCApCiAgICAgICAgICAgICAgICAgZGVzYy0+VmlydHVhbFN0YXJ0ID0KICAgICAgICAgICAg ICAgICAgICAgKHVuc2lnbmVkIGxvbmcpbWFkZHJfdG9fdmlydChkZXNjLT5QaHlzaWNhbFN0YXJ0 KTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vdm1hcC5jIGIveGVu L2NvbW1vbi92bWFwLmMKaW5kZXggMTE3ODVmZmIwYS4uMWY1MGM5MTc4OSAxMDA2NDQKLS0tIGEv eGVuL2NvbW1vbi92bWFwLmMKKysrIGIveGVuL2NvbW1vbi92bWFwLmMKQEAgLTksNiArOSwxMCBA QAogI2luY2x1ZGUgPHhlbi92bWFwLmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KIAorLyogT3Zl cnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90 ICovCisjdW5kZWYgcGFnZV90b19tZm4KKyNkZWZpbmUgcGFnZV90b19tZm4ocGcpIF9tZm4oX19w YWdlX3RvX21mbihwZykpCisKIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0sodm1fbG9jayk7CiBzdGF0 aWMgdm9pZCAqX19yZWFkX21vc3RseSB2bV9iYXNlW1ZNQVBfUkVHSU9OX05SXTsKICNkZWZpbmUg dm1fYml0bWFwKHgpICgodW5zaWduZWQgbG9uZyAqKXZtX2Jhc2VbeF0pCkBAIC0yMDgsNyArMjEy LDcgQEAgdm9pZCAqX192bWFwKGNvbnN0IG1mbl90ICptZm4sIHVuc2lnbmVkIGludCBncmFudWxh cml0eSwKIAogICAgIGZvciAoIDsgdmEgJiYgbnItLTsgKyttZm4sIGN1ciArPSBQQUdFX1NJWkUg KiBncmFudWxhcml0eSApCiAgICAgewotICAgICAgICBpZiAoIG1hcF9wYWdlc190b194ZW4oY3Vy LCBtZm5feCgqbWZuKSwgZ3JhbnVsYXJpdHksIGZsYWdzKSApCisgICAgICAgIGlmICggbWFwX3Bh Z2VzX3RvX3hlbihjdXIsICptZm4sIGdyYW51bGFyaXR5LCBmbGFncykgKQogICAgICAgICB7CiAg ICAgICAgICAgICB2dW5tYXAodmEpOwogICAgICAgICAgICAgdmEgPSBOVUxMOwpAQCAtMjM0LDcg KzIzOCw3IEBAIHZvaWQgdnVubWFwKGNvbnN0IHZvaWQgKnZhKQogI2lmbmRlZiBfUEFHRV9OT05F CiAgICAgZGVzdHJveV94ZW5fbWFwcGluZ3MoYWRkciwgYWRkciArIFBBR0VfU0laRSAqIHBhZ2Vz KTsKICNlbHNlIC8qIEF2b2lkIHRlYXJpbmcgZG93biBpbnRlcm1lZGlhdGUgcGFnZSB0YWJsZXMu ICovCi0gICAgbWFwX3BhZ2VzX3RvX3hlbihhZGRyLCAwLCBwYWdlcywgX1BBR0VfTk9ORSk7Cisg ICAgbWFwX3BhZ2VzX3RvX3hlbihhZGRyLCBfbWZuKDApLCBwYWdlcywgX1BBR0VfTk9ORSk7CiAj ZW5kaWYKICAgICB2bV9mcmVlKHZhKTsKIH0KQEAgLTI1OCw3ICsyNjIsNyBAQCBzdGF0aWMgdm9p ZCAqdm1hbGxvY190eXBlKHNpemVfdCBzaXplLCBlbnVtIHZtYXBfcmVnaW9uIHR5cGUpCiAgICAg ICAgIHBnID0gYWxsb2NfZG9taGVhcF9wYWdlKE5VTEwsIDApOwogICAgICAgICBpZiAoIHBnID09 IE5VTEwgKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgbWZuW2ldID0gX21mbihw YWdlX3RvX21mbihwZykpOworICAgICAgICBtZm5baV0gPSBwYWdlX3RvX21mbihwZyk7CiAgICAg fQogCiAgICAgdmEgPSBfX3ZtYXAobWZuLCAxLCBwYWdlcywgMSwgUEFHRV9IWVBFUlZJU09SLCB0 eXBlKTsKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL2FjcGkvYXBlaS9lcnN0LmMgYi94ZW4vZHJp dmVycy9hY3BpL2FwZWkvZXJzdC5jCmluZGV4IDE0YWNmNWQ3NzMuLjdmYzRkZTVkZTkgMTAwNjQ0 Ci0tLSBhL3hlbi9kcml2ZXJzL2FjcGkvYXBlaS9lcnN0LmMKKysrIGIveGVuL2RyaXZlcnMvYWNw aS9hcGVpL2Vyc3QuYwpAQCAtNzk5LDcgKzc5OSw3IEBAIGludCBfX2luaXQgZXJzdF9pbml0KHZv aWQpCiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIkZhaWxlZCB0byBnZXQgRVJTVCB0YWJsZTogJXNc biIsIG1zZyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KLQltYXBfcGFnZXNfdG9feGVuKCh1bnNp Z25lZCBsb25nKV9fdmEoZXJzdF9hZGRyKSwgUEZOX0RPV04oZXJzdF9hZGRyKSwKKwltYXBfcGFn ZXNfdG9feGVuKCh1bnNpZ25lZCBsb25nKV9fdmEoZXJzdF9hZGRyKSwgbWFkZHJfdG9fbWZuKGVy c3RfYWRkciksCiAJCQkgUEZOX1VQKGVyc3RfYWRkciArIGVyc3RfbGVuKSAtIFBGTl9ET1dOKGVy c3RfYWRkciksCiAJCQkgUEFHRV9IWVBFUlZJU09SKTsKIAllcnN0X3RhYiA9IF9fdmEoZXJzdF9h ZGRyKTsKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL2FjcGkvYXBlaS9oZXN0LmMgYi94ZW4vZHJp dmVycy9hY3BpL2FwZWkvaGVzdC5jCmluZGV4IGY3NGU3YzJhMDYuLjcwNzM0YWIwZTIgMTAwNjQ0 Ci0tLSBhL3hlbi9kcml2ZXJzL2FjcGkvYXBlaS9oZXN0LmMKKysrIGIveGVuL2RyaXZlcnMvYWNw aS9hcGVpL2hlc3QuYwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgX19pbml0IGFjcGlfaGVzdF9p bml0KHZvaWQpCiAJCSAgICAgICBhY3BpX2Zvcm1hdF9leGNlcHRpb24oc3RhdHVzKSk7CiAJCWdv dG8gZXJyOwogCX0KLQltYXBfcGFnZXNfdG9feGVuKCh1bnNpZ25lZCBsb25nKV9fdmEoaGVzdF9h ZGRyKSwgUEZOX0RPV04oaGVzdF9hZGRyKSwKKwltYXBfcGFnZXNfdG9feGVuKCh1bnNpZ25lZCBs b25nKV9fdmEoaGVzdF9hZGRyKSwgbWFkZHJfdG9fbWZuKGhlc3RfYWRkciksCiAJCQkgUEZOX1VQ KGhlc3RfYWRkciArIGhlc3RfbGVuKSAtIFBGTl9ET1dOKGhlc3RfYWRkciksCiAJCQkgUEFHRV9I WVBFUlZJU09SKTsKIAloZXN0X3RhYiA9IF9fdmEoaGVzdF9hZGRyKTsKZGlmZiAtLWdpdCBhL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9kbWFyLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC92dGQvZG1hci5jCmluZGV4IGQ3MTNhOGNhNWQuLjQ2ZGVjZDRlYjEgMTAwNjQ0Ci0tLSBhL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9kbWFyLmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvdnRkL2RtYXIuYwpAQCAtMTAwOCw3ICsxMDA4LDcgQEAgaW50IF9faW5pdCBhY3BpX2Rt YXJfaW5pdCh2b2lkKQogICAgIGlmICggQUNQSV9TVUNDRVNTKGFjcGlfZ2V0X3RhYmxlX3BoeXMo QUNQSV9TSUdfRE1BUiwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZkbWFyX2FkZHIsICZkbWFyX2xlbikpICkKICAgICB7Ci0gICAgICAgIG1hcF9wYWdlc190 b194ZW4oKHVuc2lnbmVkIGxvbmcpX192YShkbWFyX2FkZHIpLCBQRk5fRE9XTihkbWFyX2FkZHIp LAorICAgICAgICBtYXBfcGFnZXNfdG9feGVuKCh1bnNpZ25lZCBsb25nKV9fdmEoZG1hcl9hZGRy KSwgbWFkZHJfdG9fbWZuKGRtYXJfYWRkciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgUEZO X1VQKGRtYXJfYWRkciArIGRtYXJfbGVuKSAtIFBGTl9ET1dOKGRtYXJfYWRkciksCiAgICAgICAg ICAgICAgICAgICAgICAgICAgUEFHRV9IWVBFUlZJU09SKTsKICAgICAgICAgZG1hcl90YWJsZSA9 IF9fdmEoZG1hcl9hZGRyKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaCBi L3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaAppbmRleCA3Njc4ZTI5YzE1Li4wMjNlMmViMjEzIDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgKKysrIGIveGVuL2luY2x1ZGUvYXNt LWFybS9tbS5oCkBAIC0xMzgsNyArMTM4LDcgQEAgZXh0ZXJuIHZhZGRyX3QgeGVuaGVhcF92aXJ0 X3N0YXJ0OwogI2VuZGlmCiAKICNpZmRlZiBDT05GSUdfQVJNXzMyCi0jZGVmaW5lIGlzX3hlbl9o ZWFwX3BhZ2UocGFnZSkgaXNfeGVuX2hlYXBfbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpKQorI2RlZmlu ZSBpc194ZW5faGVhcF9wYWdlKHBhZ2UpIGlzX3hlbl9oZWFwX21mbihfX3BhZ2VfdG9fbWZuKHBh Z2UpKQogI2RlZmluZSBpc194ZW5faGVhcF9tZm4obWZuKSAoeyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKICAgICB1bnNpZ25lZCBsb25nIG1mbl8gPSAobWZuKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgKG1mbl8gPj0gbWZuX3goeGVuaGVhcF9tZm5f c3RhcnQpICYmICAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUveGVuL21tLmggYi94ZW4vaW5jbHVkZS94ZW4vbW0uaAppbmRleCBmMmM2NzM4YWQyLi5jYWFk MDZlNzUzIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vbW0uaAorKysgYi94ZW4vaW5jbHVk ZS94ZW4vbW0uaApAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgc2NydWJfZnJlZV9wYWdlcyh2b2lk KTsKIC8qIE1hcCBtYWNoaW5lIHBhZ2UgcmFuZ2UgaW4gWGVuIHZpcnR1YWwgYWRkcmVzcyBzcGFj ZS4gKi8KIGludCBtYXBfcGFnZXNfdG9feGVuKAogICAgIHVuc2lnbmVkIGxvbmcgdmlydCwKLSAg ICB1bnNpZ25lZCBsb25nIG1mbiwKKyAgICBtZm5fdCBtZm4sCiAgICAgdW5zaWduZWQgbG9uZyBu cl9tZm5zLAogICAgIHVuc2lnbmVkIGludCBmbGFncyk7CiAvKiBBbHRlciB0aGUgcGVybWlzc2lv bnMgb2YgYSByYW5nZSBvZiBYZW4gdmlydHVhbCBhZGRyZXNzIHNwYWNlLiAqLwotLSAKMi4xMS4w CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==