From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 4.3.1-1 Date: Mon, 29 Jun 2026 12:23:48 GMT Message-ID: <178273582816.1.11456471545109524175.rpms-gcc-bae61767963e@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: bae61767963efd9edc24fa9bddc185bbbf49af00 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogYmFlNjE3Njc5NjNlZmQ5ZWRjMjRmYTliZGRjMTg1YmJi ZjQ5YWYwMApBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAwOC0wNi0wOVQxMTo0Mjo1NyswMDowMApTdGF0cyAgOiArMTQ0Ly0zMjYyIGlu IDEwIGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9n Y2MvYy9iYWU2MTc2Nzk2M2VmZDllZGMyNGZhOWJkZGMxODViYmJmNDlhZjAwP2JyYW5jaD1yaGVs LWY0MS1iYXNlCgpMb2c6CjQuMy4xLTEKCi0tLQpkaWZmIC0tZ2l0IGEvLmN2c2lnbm9yZSBiLy5j dnNpZ25vcmUKaW5kZXggZDRiNDg2Ny4uMmFjY2YxNyAxMDA2NDQKLS0tIGEvLmN2c2lnbm9yZQor KysgYi8uY3ZzaWdub3JlCkBAIC0xLDIgKzEsMiBAQAotZ2NjLTQuMy4wLTIwMDgwNDI4LnRhci5i ejIKK2djYy00LjMuMS0yMDA4MDYwOS50YXIuYnoyCiBmYXN0amFyLTAuOTUudGFyLmd6CgpkaWZm IC0tZ2l0IGEvZ2NjNDMtY3BwLXByYWdtYS5wYXRjaCBiL2djYzQzLWNwcC1wcmFnbWEucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZDM3YmQuLjAwMDAwMDAKLS0tIGEvZ2Nj NDMtY3BwLXByYWdtYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4NCArMCwwIEBACi0yMDA4 LTAyLTI2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCSogYy1wcG91dHB1 dC5jIChzY2FuX3RyYW5zbGF0aW9uX3VuaXQpOiBIYW5kbGUgQ1BQX1BSQUdNQQotCWFuZCBDUFBf UFJBR01BX0VPTC4KLQkqIGMtcHJhZ21hLmMgKHByYWdtYV9uc19uYW1lKTogTmV3IHR5cGVkZWYu Ci0JKHJlZ2lzdGVyZWRfcHBfcHJhZ21hcyk6IE5ldyB2YXJpYWJsZS4KLQkoY19wcF9sb29rdXBf cHJhZ21hKTogTmV3IGZ1bmN0aW9uLgotCShjX3JlZ2lzdGVyX3ByYWdtYV8xKTogSWYgZmxhZ19w cmVwcm9jZXNzX29ubHksIGRvIG5vdGhpbmcKLQlmb3Igbm9uLWV4cGFuZGVkIHByYWdtYXMsIGZv ciBleHBhbmRlZCBvbmVzIHB1c2ggcHJhZ21hJ3MKLQluYW1lc3BhY2UgYW5kIG5hbWUgaW50byBy ZWdpc3RlcmVkX3BwX3ByYWdtYXMgdmVjdG9yLgotCShjX2ludm9rZV9wcmFnbWFfaGFuZGxlcik6 IFJlZ2lzdGVyIE9wZW5NUCBwcmFnbWFzIGV2ZW4gd2hlbgotCWZsYWdfcHJlcHJvY2Vzc19vbmx5 LCBkb24ndCByZWdpc3RlciBHQ0MgcGNoX3ByZXByb2Nlc3MKLQlwcmFnbWEgaWYgZmxhZ19wcmVw cm9jZXNzX29ubHkuCi0JKiBjLW9wdHMuYyAoY19jb21tb25faW5pdCk6IENhbGwgaW5pdF9wcmFn bWEgZXZlbiBpZgotCWZsYWdfcHJlcHJvY2Vzc19vbmx5LgotCSogYy1wcmFnbWEuYyAoY19wcF9s b29rdXBfcHJhZ21hKTogTmV3IHByb3RvdHlwZS4KLQkqIGNvbmZpZy9kYXJ3aW4uaCAoREFSV0lO X1JFR0lTVEVSX1RBUkdFVF9QUkFHTUFTKTogRG9uJ3QgY2FsbAotCWNwcF9yZWdpc3Rlcl9wcmFn bWEgaWYgZmxhZ19wcmVwcm9jZXNzX29ubHkuCi0KLQkqIGdjYy5kZy9nb21wL3ByZXByb2Nlc3Mt MS5jOiBOZXcgdGVzdC4KLQotLS0tIGdjYy9jLXBwb3V0cHV0LmMuamoJMjAwOC0wMS0yNiAxODow MToxNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnY2MvYy1wcG91dHB1dC5jCTIwMDgtMDItMjYgMjI6 NTQ6NTcuMDAwMDAwMDAwICswMTAwCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiBQcmVwcm9jZXNzIG9u bHksIHVzaW5nIGNwcGxpYi4KLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcsIDE5OTgsIDE5 OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDcKLS0gICBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcsIDE5OTgsIDE5 OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDcsCi0rICAgMjAwOCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAgICBXcml0dGVuIGJ5IFBlciBCb3RobmVyLCAxOTk0 LTk1LgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci1AQCAtMTc3LDcgKzE3NywyNCBAQCBzY2FuX3Ry YW5zbGF0aW9uX3VuaXQgKGNwcF9yZWFkZXIgKnBmaWxlCi0gICAgICAgYXZvaWRfcGFzdGUgPSBm YWxzZTsKLSAgICAgICBwcmludC5zb3VyY2UgPSBOVUxMOwotICAgICAgIHByaW50LnByZXYgPSB0 b2tlbjsKLS0gICAgICBjcHBfb3V0cHV0X3Rva2VuICh0b2tlbiwgcHJpbnQub3V0Zik7Ci0rICAg ICAgaWYgKHRva2VuLT50eXBlID09IENQUF9QUkFHTUEpCi0rCXsKLSsJICBjb25zdCBjaGFyICpz cGFjZTsKLSsJICBjb25zdCBjaGFyICpuYW1lOwotKwotKwkgIG1heWJlX3ByaW50X2xpbmUgKHRv a2VuLT5zcmNfbG9jKTsKLSsJICBmcHV0cyAoIiNwcmFnbWEgIiwgcHJpbnQub3V0Zik7Ci0rCSAg Y19wcF9sb29rdXBfcHJhZ21hICh0b2tlbi0+dmFsLnByYWdtYSwgJnNwYWNlLCAmbmFtZSk7Ci0r CSAgaWYgKHNwYWNlKQotKwkgICAgZnByaW50ZiAocHJpbnQub3V0ZiwgIiVzICVzIiwgc3BhY2Us IG5hbWUpOwotKwkgIGVsc2UKLSsJICAgIGZwcmludGYgKHByaW50Lm91dGYsICIlcyIsIG5hbWUp OwotKwkgIHByaW50LnByaW50ZWQgPSAxOwotKwl9Ci0rICAgICAgZWxzZSBpZiAodG9rZW4tPnR5 cGUgPT0gQ1BQX1BSQUdNQV9FT0wpCi0rCW1heWJlX3ByaW50X2xpbmUgKHRva2VuLT5zcmNfbG9j KTsKLSsgICAgICBlbHNlCi0rCWNwcF9vdXRwdXRfdG9rZW4gKHRva2VuLCBwcmludC5vdXRmKTsK LSAKLSAgICAgICBpZiAodG9rZW4tPnR5cGUgPT0gQ1BQX0NPTU1FTlQpCi0gCWFjY291bnRfZm9y X25ld2xpbmVzICh0b2tlbi0+dmFsLnN0ci50ZXh0LCB0b2tlbi0+dmFsLnN0ci5sZW4pOwotLS0t IGdjYy9jLXByYWdtYS5jLmpqCTIwMDgtMDItMTUgMTg6NDM6MDMuMDAwMDAwMDAwICswMTAwCi0r KysgZ2NjL2MtcHJhZ21hLmMJMjAwOC0wMi0yNiAyMjo1OTo0NC4wMDAwMDAwMDAgKzAxMDAKLUBA IC0xLDYgKzEsNiBAQAotIC8qIEhhbmRsZSAjcHJhZ21hLCBzeXN0ZW0gVi40IHN0eWxlLiAgU3Vw cG9ydHMgI3ByYWdtYSB3ZWFrIGFuZCAjcHJhZ21hIHBhY2suCi0gICAgQ29weXJpZ2h0IChDKSAx OTkyLCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1 LAotLSAgIDIwMDYsIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgMjAw NiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLSBUaGlzIGZp bGUgaXMgcGFydCBvZiBHQ0MuCi0gCi1AQCAtODcyLDYgKzg3Miw2MSBAQCBERUZfVkVDX0FMTE9D X08gKHByYWdtYV9oYW5kbGVyLCBoZWFwKTsKLSAKLSBzdGF0aWMgVkVDKHByYWdtYV9oYW5kbGVy LCBoZWFwKSAqcmVnaXN0ZXJlZF9wcmFnbWFzOwotIAotK3R5cGVkZWYgc3RydWN0Ci0rewotKyAg Y29uc3QgY2hhciAqc3BhY2U7Ci0rICBjb25zdCBjaGFyICpuYW1lOwotK30gcHJhZ21hX25zX25h bWU7Ci0rCi0rREVGX1ZFQ19PIChwcmFnbWFfbnNfbmFtZSk7Ci0rREVGX1ZFQ19BTExPQ19PIChw cmFnbWFfbnNfbmFtZSwgaGVhcCk7Ci0rCi0rc3RhdGljIFZFQyhwcmFnbWFfbnNfbmFtZSwgaGVh cCkgKnJlZ2lzdGVyZWRfcHBfcHJhZ21hczsKLSsKLStzdHJ1Y3Qgb21wX3ByYWdtYV9kZWYgeyBj b25zdCBjaGFyICpuYW1lOyB1bnNpZ25lZCBpbnQgaWQ7IH07Ci0rc3RhdGljIGNvbnN0IHN0cnVj dCBvbXBfcHJhZ21hX2RlZiBvbXBfcHJhZ21hc1tdID0gewotKyAgeyAiYXRvbWljIiwgUFJBR01B X09NUF9BVE9NSUMgfSwKLSsgIHsgImJhcnJpZXIiLCBQUkFHTUFfT01QX0JBUlJJRVIgfSwKLSsg IHsgImNyaXRpY2FsIiwgUFJBR01BX09NUF9DUklUSUNBTCB9LAotKyAgeyAiZmx1c2giLCBQUkFH TUFfT01QX0ZMVVNIIH0sCi0rICB7ICJmb3IiLCBQUkFHTUFfT01QX0ZPUiB9LAotKyAgeyAibWFz dGVyIiwgUFJBR01BX09NUF9NQVNURVIgfSwKLSsgIHsgIm9yZGVyZWQiLCBQUkFHTUFfT01QX09S REVSRUQgfSwKLSsgIHsgInBhcmFsbGVsIiwgUFJBR01BX09NUF9QQVJBTExFTCB9LAotKyAgeyAi c2VjdGlvbiIsIFBSQUdNQV9PTVBfU0VDVElPTiB9LAotKyAgeyAic2VjdGlvbnMiLCBQUkFHTUFf T01QX1NFQ1RJT05TIH0sCi0rICB7ICJzaW5nbGUiLCBQUkFHTUFfT01QX1NJTkdMRSB9LAotKyAg eyAidGhyZWFkcHJpdmF0ZSIsIFBSQUdNQV9PTVBfVEhSRUFEUFJJVkFURSB9Ci0rfTsKLSsKLSt2 b2lkCi0rY19wcF9sb29rdXBfcHJhZ21hICh1bnNpZ25lZCBpbnQgaWQsIGNvbnN0IGNoYXIgKipz cGFjZSwgY29uc3QgY2hhciAqKm5hbWUpCi0rewotKyAgY29uc3QgaW50IG5fb21wX3ByYWdtYXMg PSBzaXplb2YgKG9tcF9wcmFnbWFzKSAvIHNpemVvZiAoKm9tcF9wcmFnbWFzKTsKLSsgIGludCBp OwotKwotKyAgZm9yIChpID0gMDsgaSA8IG5fb21wX3ByYWdtYXM7ICsraSkKLSsgICAgaWYgKG9t cF9wcmFnbWFzW2ldLmlkID09IGlkKQotKyAgICAgIHsKLSsJKnNwYWNlID0gIm9tcCI7Ci0rCSpu YW1lID0gb21wX3ByYWdtYXNbaV0ubmFtZTsKLSsJcmV0dXJuOwotKyAgICAgIH0KLSsKLSsgIGlm IChpZCA+PSBQUkFHTUFfRklSU1RfRVhURVJOQUwKLSsgICAgICAmJiAoaWQgPCBQUkFHTUFfRklS U1RfRVhURVJOQUwKLSsJICArIFZFQ19sZW5ndGggKHByYWdtYV9uc19uYW1lLCByZWdpc3RlcmVk X3BwX3ByYWdtYXMpKSkKLSsgICAgewotKyAgICAgICpzcGFjZSA9IFZFQ19pbmRleCAocHJhZ21h X25zX25hbWUsIHJlZ2lzdGVyZWRfcHBfcHJhZ21hcywKLSsJCQkgIGlkIC0gUFJBR01BX0ZJUlNU X0VYVEVSTkFMKS0+c3BhY2U7Ci0rICAgICAgKm5hbWUgPSBWRUNfaW5kZXggKHByYWdtYV9uc19u YW1lLCByZWdpc3RlcmVkX3BwX3ByYWdtYXMsCi0rCQkJIGlkIC0gUFJBR01BX0ZJUlNUX0VYVEVS TkFMKS0+bmFtZTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIGdjY191bnJlYWNoYWJs ZSAoKTsKLSt9Ci0rCi0gLyogRnJvbnQtZW5kIHdyYXBwZXJzIGZvciBwcmFnbWEgcmVnaXN0cmF0 aW9uIHRvIGF2b2lkIGRyYWdnaW5nCi0gICAgY3BwbGliLmggaW4gYWxtb3N0IGV2ZXJ5d2hlcmUu ICAqLwotIAotQEAgLTg4MSwxMyArOTM2LDI5IEBAIGNfcmVnaXN0ZXJfcHJhZ21hXzEgKGNvbnN0 IGNoYXIgKnNwYWNlLCAKLSB7Ci0gICB1bnNpZ25lZCBpZDsKLSAKLS0gIFZFQ19zYWZlX3B1c2gg KHByYWdtYV9oYW5kbGVyLCBoZWFwLCByZWdpc3RlcmVkX3ByYWdtYXMsICZoYW5kbGVyKTsKLS0g IGlkID0gVkVDX2xlbmd0aCAocHJhZ21hX2hhbmRsZXIsIHJlZ2lzdGVyZWRfcHJhZ21hcyk7Ci0t ICBpZCArPSBQUkFHTUFfRklSU1RfRVhURVJOQUwgLSAxOwotLQotLSAgLyogVGhlIEMrKyBmcm9u dCBlbmQgYWxsb2NhdGVzIDYgYml0cyBpbiBjcF90b2tlbjsgdGhlIEMgZnJvbnQgZW5kCi0tICAg ICBhbGxvY2F0ZXMgNyBiaXRzIGluIGNfdG9rZW4uICBBdCBwcmVzZW50IHRoaXMgaXMgc3VmZmlj aWVudC4gICovCi0tICBnY2NfYXNzZXJ0IChpZCA8IDY0KTsKLSsgIGlmIChmbGFnX3ByZXByb2Nl c3Nfb25seSkKLSsgICAgewotKyAgICAgIHByYWdtYV9uc19uYW1lIG5zX25hbWU7Ci0rCi0rICAg ICAgaWYgKCFhbGxvd19leHBhbnNpb24pCi0rCXJldHVybjsKLSsKLSsgICAgICBuc19uYW1lLnNw YWNlID0gc3BhY2U7Ci0rICAgICAgbnNfbmFtZS5uYW1lID0gbmFtZTsKLSsgICAgICBWRUNfc2Fm ZV9wdXNoIChwcmFnbWFfbnNfbmFtZSwgaGVhcCwgcmVnaXN0ZXJlZF9wcF9wcmFnbWFzLCAmbnNf bmFtZSk7Ci0rICAgICAgaWQgPSBWRUNfbGVuZ3RoIChwcmFnbWFfbnNfbmFtZSwgcmVnaXN0ZXJl ZF9wcF9wcmFnbWFzKTsKLSsgICAgICBpZCArPSBQUkFHTUFfRklSU1RfRVhURVJOQUwgLSAxOwot KyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBWRUNfc2FmZV9wdXNoIChwcmFnbWFfaGFu ZGxlciwgaGVhcCwgcmVnaXN0ZXJlZF9wcmFnbWFzLCAmaGFuZGxlcik7Ci0rICAgICAgaWQgPSBW RUNfbGVuZ3RoIChwcmFnbWFfaGFuZGxlciwgcmVnaXN0ZXJlZF9wcmFnbWFzKTsKLSsgICAgICBp ZCArPSBQUkFHTUFfRklSU1RfRVhURVJOQUwgLSAxOwotKwotKyAgICAgIC8qIFRoZSBDKysgZnJv bnQgZW5kIGFsbG9jYXRlcyA2IGJpdHMgaW4gY3BfdG9rZW47IHRoZSBDIGZyb250IGVuZAotKwkg YWxsb2NhdGVzIDcgYml0cyBpbiBjX3Rva2VuLiAgQXQgcHJlc2VudCB0aGlzIGlzIHN1ZmZpY2ll bnQuICAqLwotKyAgICAgIGdjY19hc3NlcnQgKGlkIDwgNjQpOwotKyAgICB9Ci0gCi0gICBjcHBf cmVnaXN0ZXJfZGVmZXJyZWRfcHJhZ21hIChwYXJzZV9pbiwgc3BhY2UsIG5hbWUsIGlkLAotIAkJ CQlhbGxvd19leHBhbnNpb24sIGZhbHNlKTsKLUBAIC05MjEsMjQgKzk5Miw4IEBAIGNfaW52b2tl X3ByYWdtYV9oYW5kbGVyICh1bnNpZ25lZCBpbnQgaWQKLSB2b2lkCi0gaW5pdF9wcmFnbWEgKHZv aWQpCi0gewotLSAgaWYgKGZsYWdfb3Blbm1wICYmICFmbGFnX3ByZXByb2Nlc3Nfb25seSkKLSsg IGlmIChmbGFnX29wZW5tcCkKLSAgICAgewotLSAgICAgIHN0cnVjdCBvbXBfcHJhZ21hX2RlZiB7 IGNvbnN0IGNoYXIgKm5hbWU7IHVuc2lnbmVkIGludCBpZDsgfTsKLS0gICAgICBzdGF0aWMgY29u c3Qgc3RydWN0IG9tcF9wcmFnbWFfZGVmIG9tcF9wcmFnbWFzW10gPSB7Ci0tCXsgImF0b21pYyIs IFBSQUdNQV9PTVBfQVRPTUlDIH0sCi0tCXsgImJhcnJpZXIiLCBQUkFHTUFfT01QX0JBUlJJRVIg fSwKLS0JeyAiY3JpdGljYWwiLCBQUkFHTUFfT01QX0NSSVRJQ0FMIH0sCi0tCXsgImZsdXNoIiwg UFJBR01BX09NUF9GTFVTSCB9LAotLQl7ICJmb3IiLCBQUkFHTUFfT01QX0ZPUiB9LAotLQl7ICJt YXN0ZXIiLCBQUkFHTUFfT01QX01BU1RFUiB9LAotLQl7ICJvcmRlcmVkIiwgUFJBR01BX09NUF9P UkRFUkVEIH0sCi0tCXsgInBhcmFsbGVsIiwgUFJBR01BX09NUF9QQVJBTExFTCB9LAotLQl7ICJz ZWN0aW9uIiwgUFJBR01BX09NUF9TRUNUSU9OIH0sCi0tCXsgInNlY3Rpb25zIiwgUFJBR01BX09N UF9TRUNUSU9OUyB9LAotLQl7ICJzaW5nbGUiLCBQUkFHTUFfT01QX1NJTkdMRSB9LAotLQl7ICJ0 aHJlYWRwcml2YXRlIiwgUFJBR01BX09NUF9USFJFQURQUklWQVRFIH0KLS0gICAgICB9OwotLQot ICAgICAgIGNvbnN0IGludCBuX29tcF9wcmFnbWFzID0gc2l6ZW9mIChvbXBfcHJhZ21hcykgLyBz aXplb2YgKCpvbXBfcHJhZ21hcyk7Ci0gICAgICAgaW50IGk7Ci0gCi1AQCAtOTQ3LDggKzEwMDIs OSBAQCBpbml0X3ByYWdtYSAodm9pZCkKLSAJCQkJICAgICAgb21wX3ByYWdtYXNbaV0uaWQsIHRy dWUsIHRydWUpOwotICAgICB9Ci0gCi0tICBjcHBfcmVnaXN0ZXJfZGVmZXJyZWRfcHJhZ21hIChw YXJzZV9pbiwgIkdDQyIsICJwY2hfcHJlcHJvY2VzcyIsCi0tCQkJCVBSQUdNQV9HQ0NfUENIX1BS RVBST0NFU1MsIGZhbHNlLCBmYWxzZSk7Ci0rICBpZiAoIWZsYWdfcHJlcHJvY2Vzc19vbmx5KQot KyAgICBjcHBfcmVnaXN0ZXJfZGVmZXJyZWRfcHJhZ21hIChwYXJzZV9pbiwgIkdDQyIsICJwY2hf cHJlcHJvY2VzcyIsCi0rCQkJCSAgUFJBR01BX0dDQ19QQ0hfUFJFUFJPQ0VTUywgZmFsc2UsIGZh bHNlKTsKLSAKLSAjaWZkZWYgSEFORExFX1BSQUdNQV9QQUNLCi0gI2lmZGVmIEhBTkRMRV9QUkFH TUFfUEFDS19XSVRIX0VYUEFOU0lPTgotLS0tIGdjYy9jLW9wdHMuYy5qagkyMDA4LTAyLTI2IDIy OjUzOjIzLjAwMDAwMDAwMCArMDEwMAotKysrIGdjYy9jLW9wdHMuYwkyMDA4LTAyLTI2IDIyOjU0 OjU3LjAwMDAwMDAwMCArMDEwMAotQEAgLTEsNSArMSw1IEBACi0gLyogQy9PYmpDL0MrKyBjb21t YW5kIGxpbmUgb3B0aW9uIGhhbmRsaW5nLgotLSAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywg MjAwNCwgMjAwNSwgMjAwNiwgMjAwNwotKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAw NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOAotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotICAgIENvbnRyaWJ1dGVkIGJ5IE5laWwgQm9vdGguCi0gCi1AQCAtMTIzOSw2ICsxMjM5 LDkgQEAgY19jb21tb25faW5pdCAodm9pZCkKLSAgIGlmICh2ZXJzaW9uX2ZsYWcpCi0gICAgIGNf Y29tbW9uX3ByaW50X3BjaF9jaGVja3N1bSAoc3RkZXJyKTsKLSAKLSsgIC8qIEhhcyB0byB3YWl0 IHVudGlsIG5vdyBzbyB0aGF0IGNwcGxpYiBoYXMgaXRzIGhhc2ggdGFibGUuICAqLwotKyAgaW5p dF9wcmFnbWEgKCk7Ci0rCi0gICBpZiAoZmxhZ19wcmVwcm9jZXNzX29ubHkpCi0gICAgIHsKLSAg ICAgICBmaW5pc2hfb3B0aW9ucyAoKTsKLUBAIC0xMjQ2LDkgKzEyNDksNiBAQCBjX2NvbW1vbl9p bml0ICh2b2lkKQotICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgfQotIAotLSAgLyogSGFzIHRv IHdhaXQgdW50aWwgbm93IHNvIHRoYXQgY3BwbGliIGhhcyBpdHMgaGFzaCB0YWJsZS4gICovCi0t ICBpbml0X3ByYWdtYSAoKTsKLS0KLSAgIHJldHVybiB0cnVlOwotIH0KLSAKLS0tLSBnY2MvYy1w cmFnbWEuaC5qagkyMDA4LTAxLTI2IDE4OjAxOjE2LjAwMDAwMDAwMCArMDEwMAotKysrIGdjYy9j LXByYWdtYS5oCTIwMDgtMDItMjYgMjI6NTQ6NTcuMDAwMDAwMDAwICswMTAwCi1AQCAtMSw2ICsx LDYgQEAKLSAvKiBQcmFnbWEgcmVsYXRlZCBpbnRlcmZhY2VzLgotICAgIENvcHlyaWdodCAoQykg MTk5NSwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwKLS0g ICAyMDA3ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICAyMDA3LCAyMDA4ICBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLSBUaGlzIGZpbGUgaXMgcGFydCBvZiBH Q0MuCi0gCi1AQCAtMTI0LDQgKzEyNCw2IEBAIGV4dGVybiBlbnVtIGNwcF90dHlwZSBwcmFnbWFf bGV4ICh0cmVlICoKLSBleHRlcm4gZW51bSBjcHBfdHR5cGUgY19sZXhfd2l0aF9mbGFncyAodHJl ZSAqLCBsb2NhdGlvbl90ICosIHVuc2lnbmVkIGNoYXIgKiwKLSAJCQkJCWludCk7Ci0gCi0rZXh0 ZXJuIHZvaWQgY19wcF9sb29rdXBfcHJhZ21hICh1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKios IGNvbnN0IGNoYXIgKiopOwotKwotICNlbmRpZiAvKiBHQ0NfQ19QUkFHTUFfSCAqLwotLS0tIGdj Yy9jb25maWcvZGFyd2luLmguamoJMjAwOC0wMi0xMSAxNDo0ODoxMi4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnY2MvY29uZmlnL2Rhcndpbi5oCTIwMDgtMDItMjYgMjI6NTQ6NTcuMDAwMDAwMDAwICsw MTAwCi1AQCAtODkyLDggKzg5Miw5IEBAIGVudW0gbWFjaG9waWNfYWRkcl9jbGFzcyB7Ci0gCi0g I2RlZmluZSBEQVJXSU5fUkVHSVNURVJfVEFSR0VUX1BSQUdNQVMoKQkJCVwKLSAgIGRvIHsJCQkJ CQkJCVwKLS0gICAgY3BwX3JlZ2lzdGVyX3ByYWdtYSAocGFyc2VfaW4sIE5VTEwsICJtYXJrIiwJ CVwKLS0JCQkgZGFyd2luX3ByYWdtYV9pZ25vcmUsIGZhbHNlKTsJCVwKLSsgICAgaWYgKCFmbGFn X3ByZXByb2Nlc3Nfb25seSkJCQkJCVwKLSsgICAgICBjcHBfcmVnaXN0ZXJfcHJhZ21hIChwYXJz ZV9pbiwgTlVMTCwgIm1hcmsiLAkJXAotKwkJCSAgIGRhcndpbl9wcmFnbWFfaWdub3JlLCBmYWxz ZSk7CVwKLSAgICAgY19yZWdpc3Rlcl9wcmFnbWEgKDAsICJvcHRpb25zIiwgZGFyd2luX3ByYWdt YV9vcHRpb25zKTsJXAotICAgICBjX3JlZ2lzdGVyX3ByYWdtYSAoMCwgInNlZ21lbnQiLCBkYXJ3 aW5fcHJhZ21hX2lnbm9yZSk7CVwKLSAgICAgY19yZWdpc3Rlcl9wcmFnbWEgKDAsICJ1bnVzZWQi LCBkYXJ3aW5fcHJhZ21hX3VudXNlZCk7CVwKLS0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9nb21w L3ByZXByb2Nlc3MtMS5jLmpqCTIwMDgtMDItMjYgMjI6NTQ6NTcuMDAwMDAwMDAwICswMTAwCi0r KysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZ29tcC9wcmVwcm9jZXNzLTEuYwkyMDA4LTAyLTI2IDIy OjU0OjU3LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwxNiBAQAotKy8qIHsgZGctZG8gcHJl cHJvY2VzcyB9ICovCi0rCi0rdm9pZCBmb28gKHZvaWQpCi0rewotKyAgaW50IGkxLCBqMSwgazE7 Ci0rI2RlZmluZSBwIHBhcmFsbGVsCi0rI2RlZmluZSBQKHgpIHByaXZhdGUgKHgjIzEpCi0rI2Rl ZmluZSBTKHgpIHNoYXJlZCAoeCMjMSkKLSsjZGVmaW5lIEYoeCkgZmlyc3Rwcml2YXRlICh4IyMx KQotKyNwcmFnbWEgb21wIHAgUChpKSBcCi0rICBTKGopIFwKLSsgIEYoaykKLSsgIDsKLSt9Ci0r Ci0rLyogeyBkZy1maW5hbCB7IHNjYW4tZmlsZSBwcmVwcm9jZXNzLTEuaSAiKF58XG4pI3ByYWdt YSBvbXAgcGFyYWxsZWwgcHJpdmF0ZSBcXChpMVxcKSBzaGFyZWQgXFwoajFcXCkgZmlyc3Rwcml2 YXRlIFxcKGsxXFwpKCR8XG4pIiB9IH0gKi8KCmRpZmYgLS1naXQgYS9nY2M0My1saWJnb21wLW9t cF9oLW11bHRpbGliLnBhdGNoIGIvZ2NjNDMtbGliZ29tcC1vbXBfaC1tdWx0aWxpYi5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGU5OGQxCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjNDMtbGliZ29tcC1vbXBfaC1tdWx0aWxpYi5wYXRjaApAQCAtMCwwICsxLDE3IEBA CisyMDA4LTA2LTA5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCSogb21w LmguaW4gKG9tcF9uZXN0X2xvY2tfdCk6IEZpeCB1cCBmb3IgTGludXggbXVsdGlsaWJzLgorCist LS0gbGliZ29tcC9vbXAuaC5pbi5qagkyMDA4LTA2LTA5IDEzOjM0OjA1LjAwMDAwMDAwMCArMDIw MAorKysrIGxpYmdvbXAvb21wLmguaW4JMjAwOC0wNi0wOSAxMzozNDo0OC4wMDAwMDAwMDAgKzAy MDAKK0BAIC00Miw4ICs0Miw4IEBAIHR5cGVkZWYgc3RydWN0CisgCisgdHlwZWRlZiBzdHJ1Y3QK KyB7CistICB1bnNpZ25lZCBjaGFyIF94W0BPTVBfTkVTVF9MT0NLX1NJWkVAXSAKKy0gICAgX19h dHRyaWJ1dGVfXygoX19hbGlnbmVkX18oQE9NUF9ORVNUX0xPQ0tfQUxJR05AKSkpOworKyAgdW5z aWduZWQgY2hhciBfeFs4ICsgc2l6ZW9mICh2b2lkICopXSAKKysgICAgX19hdHRyaWJ1dGVfXygo X19hbGlnbmVkX18oc2l6ZW9mICh2b2lkICopKSkpOworIH0gb21wX25lc3RfbG9ja190OworICNl bmRpZgorIAoKZGlmZiAtLWdpdCBhL2djYzQzLWxpYmdvbXAtc3BlZWR1cC5wYXRjaCBiL2djYzQz LWxpYmdvbXAtc3BlZWR1cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE4 NWU1NS4uMDAwMDAwMAotLS0gYS9nY2M0My1saWJnb21wLXNwZWVkdXAucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSwyNzk3ICswLDAgQEAKLTIwMDgtMDMtMjggIEpha3ViIEplbGluZWsgIDxqYWt1 YkByZWRoYXQuY29tPgotCi0JKiBjb25maWcvbGludXgvc3BhcmMvZnV0ZXguaCAoYXRvbWljX3dy aXRlX2JhcnJpZXIpOiBGaXggbWVtYmFyCi0JYXJndW1lbnQuCi0KLTIwMDgtMDMtMjcgIEpha3Vi IEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JKiBsaWJnb21wLmggKHN0cnVjdCBnb21w X3RlYW1fc3RhdGUpOiBSZW1vdmUgc2luZ2xlX2NvdW50IGZpZWxkCi0JaWZuZGVmIEhBVkVfU1lO Q19CVUlMVElOUy4KLQkoc3RydWN0IGdvbXBfdGVhbSk6IExpa2V3aXNlLiAgQWRkIHdvcmtfc2hh cmVfbGlzdF9mcmVlX2xvY2sKLQlpZm5kZWYgSEFWRV9TWU5DX0JVSUxUSU5TLgotCSogdGVhbS5j IChnb21wX25ld190ZWFtKTogSWYgSEFWRV9TWU5DX0JVSUxUSU5TIGlzIG5vdCBkZWZpbmVkLAot CWRvbid0IGluaXRpYWxpemUgc2luZ2xlX2NvdW50LCBidXQgaW5zdGVhZCBpbml0aWFsaXplCi0J d29ya19zaGFyZV9saXN0X2ZyZWVfbG9jay4KLQkoZnJlZV90ZWFtKTogRGVzdHJveSB3b3JrX3No YXJlX2xpc3RfZnJlZV9sb2NrIGlmbmRlZgotCUhBVkVfU1lOQ19CVUlMVElOUy4KLQkoZ29tcF90 ZWFtX3N0YXJ0KTogRG9uJ3QgaW5pdGlhbGl6ZSB0cy5zaW5nbGVfY291bnQgaWZuZGVmCi0JSEFW RV9TWU5DX0JVSUxUSU5TLgotCSogd29yay5jIChhbGxvY193b3JrX3NoYXJlLCBmcmVlX3dvcmtf c2hhcmUpOiBVc2UKLQl3b3JrX3NoYXJlX2xpc3RfZnJlZV9sb2NrIGluc3RlYWQgb2YgYXRvbWlj IGNoYWluaW5nIGlmbmRlZgotCUhBVkVfU1lOQ19CVUlMVElOUy4KLQotMjAwOC0wMy0yNiAgSmFr dWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQkqIGxvb3AuYyAoZ29tcF9sb29wX2lu aXQpOiBGaXggR0ZTX0RZTkFNSUMgd3MtPm1vZGUgc2V0dGluZy4KLQkqIHRlc3RzdWl0ZS9saWJn b21wLmMvbG9vcC00LmM6IE5ldyB0ZXN0LgotCi0JKiBsaWJnb21wLmggKHN0cnVjdCBnb21wX3Rl YW1fc3RhdGUpOiBBZGQgc2luZ2xlX2NvdW50IGZpZWxkLgotCShzdHJ1Y3QgZ29tcF90ZWFtKTog TGlrZXdpc2UuCi0JKiB0ZWFtLmMgKGdvbXBfbmV3X3RlYW0pOiBDbGVhciBzaW5nbGVfY291bnQu Ci0JKGdvbXBfdGVhbV9zdGFydCk6IExpa2V3aXNlLgotCSogc2luZ2xlLmMgKEdPTVBfc2luZ2xl X3N0YXJ0KTogUmV3cml0dGVuIGlmIEhBVkVfU1lOQ19CVUlMVElOUy4KLQotMjAwOC0wMy0yNSAg SmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQkqIHRlYW0uYyAoZ29tcF90aHJl YWRfc3RhcnQpOiBEb24ndCBjbGVhciB0cy5zdGF0aWNfdHJpcCBoZXJlLgotCSogbG9vcC5jIChn b21wX2xvb3Bfc3RhdGljX3N0YXJ0LCBnb21wX2xvb3BfZHluYW1pY19zdGFydCk6IENsZWFyCi0J dHMuc3RhdGljX3RyaXAgaGVyZS4KLQkqIHdvcmsuYyAoZ29tcF93b3JrX3NoYXJlX3N0YXJ0KTog RG9uJ3QgY2xlYXIgdHMuc3RhdGljX3RyaXAgaGVyZS4KLQotMjAwOC0wMy0yMSAgSmFrdWIgSmVs aW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQkqIGxpYmdvbXAuaDogSW5jbHVkZSBwdHJsb2Nr LmguCi0JKHN0cnVjdCBnb21wX3dvcmtfc2hhcmUpOiBSZXNodWZmbGUgZmllbGRzLiAgQWRkIG5l eHRfYWxsb2MsCi0JbmV4dF93cywgbmV4dF9mcmVlIGFuZCBpbmxpbmVfb3JkZXJlZF90ZWFtX2lk cyBmaWVsZHMsIGNoYW5nZQotCW9yZGVyZWRfdGVhbV9pZHMgaW50byBwb2ludGVyIGZyb20gZmxl eGlibGUgYXJyYXkgbWVtYmVyLgotCShzdHJ1Y3QgZ29tcF90ZWFtX3N0YXRlKTogQWRkIGxhc3Rf d29ya19zaGFyZSBmaWVsZCwgcmVtb3ZlCi0Jd29ya19zaGFyZV9nZW5lcmF0aW9uLgotCShzdHJ1 Y3QgZ29tcF90ZWFtKTogUmVtb3ZlIHdvcmtfc2hhcmVfbG9jaywgZ2VuZXJhdGlvbl9tYXNrLAot CW9sZGVzdF9saXZlX2dlbiwgbnVtX2xpdmVfZ2VuIGFuZCBpbml0X3dvcmtfc2hhcmVzIGZpZWxk cywgYWRkCi0Jd29yayB3b3JrX3NoYXJlX2xpc3RfYWxsb2MsIHdvcmtfc2hhcmVfbGlzdF9mcmVl IGFuZCB3b3JrX3NoYXJlX2NodW5rCi0JZmllbGRzLiAgQ2hhbmdlIHdvcmtfc2hhcmVzIGZyb20g cG9pbnRlciB0byBwb2ludGVycyBpbnRvIGFuIGFycmF5LgotCShnb21wX25ld190ZWFtKTogTmV3 IHByb3RvdHlwZS4KLQkoZ29tcF90ZWFtX3N0YXJ0KTogQ2hhbmdlIHR5cGUgb2YgbGFzdCBhcmd1 bWVudC4KLQkoZ29tcF9uZXdfd29ya19zaGFyZSk6IFJlbW92ZWQuCi0JKGdvbXBfaW5pdF93b3Jr X3NoYXJlLCBnb21wX2Zpbmlfd29ya19zaGFyZSk6IE5ldyBwcm90b3R5cGVzLgotCShnb21wX3dv cmtfc2hhcmVfaW5pdF9kb25lKTogTmV3IHN0YXRpYyBpbmxpbmUuCi0JKiB0ZWFtLmMgKGdvbXBf dGhyZWFkX3N0YXJ0KTogQ2xlYXIgdHMubGFzdF93b3JrX3NoYXJlLCBkb24ndCBjbGVhcgotCXRz Lndvcmtfc2hhcmVfZ2VuZXJhdGlvbi4KLQkobmV3X3RlYW0pOiBSZW1vdmVkLgotCShnb21wX25l d190ZWFtKTogTmV3IGZ1bmN0aW9uLgotCShmcmVlX3RlYW0pOiBGcmVlIGdvbXBfd29ya19zaGFy ZSBibG9ja3MgY2hhaW5lZCB0aHJvdWdoIG5leHRfYWxsb2MsCi0JaW5zdGVhZCBvZiBmcmVlaW5n IHdvcmtfc2hhcmVzIGFuZCBkZXN0cm95aW5nIHdvcmtfc2hhcmVfbG9jay4KLQkoZ29tcF90ZWFt X3N0YXJ0KTogQ2hhbmdlIGxhc3QgYXJndW1lbnQgZnJvbSB3cyB0byB0ZWFtLCBkb24ndCBjcmVh dGUKLQluZXcgdGVhbSwgc2V0IHRzLndvcmtfc2hhcmUgdG8gJnRlYW0tPndvcmtfc2hhcmVzWzBd IGFuZCBjbGVhcgotCXRzLmxhc3Rfd29ya19zaGFyZS4gIERvbid0IGNsZWFyIHRzLndvcmtfc2hh cmVfZ2VuZXJhdGlvbi4KLQkoZ29tcF90ZWFtX2VuZCk6IENhbGwgZ29tcF9maW5pX3dvcmtfc2hh cmUuCi0JKiB3b3JrLmMgKGdvbXBfbmV3X3dvcmtfc2hhcmUpOiBSZW1vdmVkLgotCShhbGxvY193 b3JrX3NoYXJlLCBnb21wX2luaXRfd29ya19zaGFyZSwgZ29tcF9maW5pX3dvcmtfc2hhcmUpOiBO ZXcKLQlmdW5jdGlvbnMuCi0JKGZyZWVfd29ya19zaGFyZSk6IEFkZCB0ZWFtIGFyZ3VtZW50LiAg Q2FsbCBnb21wX2Zpbmlfd29ya19zaGFyZQotCWFuZCB0aGVuIGVpdGhlciBmcmVlIHdzIGlmIG9y cGhhbmVkLCBvciBwdXQgaXQgaW50bwotCXdvcmtfc2hhcmVfbGlzdF9mcmVlIGxpc3Qgb2YgdGhl IGN1cnJlbnQgdGVhbS4KLQkoZ29tcF93b3JrX3NoYXJlX3N0YXJ0LCBnb21wX3dvcmtfc2hhcmVf ZW5kLAotCWdvbXBfd29ya19zaGFyZV9lbmRfbm93YWl0KTogUmV3cml0dGVuLgotCSogc2VjdGlv bnMuYyAoR09NUF9zZWN0aW9uc19zdGFydCk6IENhbGwgZ29tcF93b3JrX3NoYXJlX2luaXRfZG9u ZQotCWFmdGVyIGdvbXBfc2VjdGlvbnNfaW5pdC4gIElmIEhBVkVfU1lOQ19CVUlMVElOUywgY2Fs bAotCWdvbXBfaXRlcl9keW5hbWljX25leHQgaW5zdGVhZCBvZiB0aGUgX2xvY2tlZCB2YXJpYW50 IGFuZCBkb24ndCB0YWtlCi0JbG9jayBhcm91bmQgaXQsIG90aGVyd2lzZSBhY3F1aXJlIGl0IGJl Zm9yZSBjYWxsaW5nCi0JZ29tcF9pdGVyX2R5bmFtaWNfbmV4dF9sb2NrZWQuCi0JKEdPTVBfc2Vj dGlvbnNfbmV4dCk6IElmIEhBVkVfU1lOQ19CVUlMVElOUywgY2FsbAotCWdvbXBfaXRlcl9keW5h bWljX25leHQgaW5zdGVhZCBvZiB0aGUgX2xvY2tlZCB2YXJpYW50IGFuZCBkb24ndCB0YWtlCi0J bG9jayBhcm91bmQgaXQuCi0JKEdPTVBfcGFyYWxsZWxfc2VjdGlvbnNfc3RhcnQpOiBDYWxsIGdv bXBfbmV3X3RlYW0gaW5zdGVhZCBvZgotCWdvbXBfbmV3X3dvcmtfc2hhcmUuICBDYWxsIGdvbXBf c2VjdGlvbnNfaW5pdCBvbiAmdGVhbS0+d29ya19zaGFyZXNbMF0uCi0JQWRqdXN0IGdvbXBfdGVh bV9zdGFydCBjYWxsZXIuCi0JKiBsb29wLmMgKGdvbXBfbG9vcF9zdGF0aWNfc3RhcnQsIGdvbXBf bG9vcF9vcmRlcmVkX3N0YXRpY19zdGFydCk6IENhbGwKLQlnb21wX3dvcmtfc2hhcmVfaW5pdF9k b25lIGFmdGVyIGdvbXBfbG9vcF9pbml0LiAgRG9uJ3QgdW5sb2NrIHdzLT5sb2NrLgotCShnb21w X2xvb3BfZHluYW1pY19zdGFydCwgZ29tcF9sb29wX2d1aWRlZF9zdGFydCk6IENhbGwKLQlnb21w X3dvcmtfc2hhcmVfaW5pdF9kb25lIGFmdGVyIGdvbXBfbG9vcF9pbml0LiAgSWYgSEFWRV9TWU5D X0JVSUxUSU5TLAotCWRvbid0IHVubG9jayB3cy0+bG9jaywgb3RoZXJ3aXNlIGxvY2sgaXQuCi0J KGdvbXBfbG9vcF9vcmRlcmVkX2R5bmFtaWNfc3RhcnQsIGdvbXBfbG9vcF9vcmRlcmVkX2d1aWRl ZF9zdGFydCk6IENhbGwKLQlnb21wX3dvcmtfc2hhcmVfaW5pdF9kb25lIGFmdGVyIGdvbXBfbG9v cF9pbml0LiAgTG9jayB3cy0+bG9jay4KLQkoZ29tcF9wYXJhbGxlbF9sb29wX3N0YXJ0KTogQ2Fs bCBnb21wX25ld190ZWFtIGluc3RlYWQgb2YKLQlnb21wX25ld193b3JrX3NoYXJlLiAgQ2FsbCBn b21wX2xvb3BfaW5pdCBvbiAmdGVhbS0+d29ya19zaGFyZXNbMF0uCi0JQWRqdXN0IGdvbXBfdGVh bV9zdGFydCBjYWxsZXIuCi0JKiBzaW5nbGUuYyAoR09NUF9zaW5nbGVfc3RhcnQsIEdPTVBfc2lu Z2xlX2NvcHlfc3RhcnQpOiBDYWxsCi0JZ29tcF93b3JrX3NoYXJlX2luaXRfZG9uZSBpZiBnb21w X3dvcmtfc2hhcmVfc3RhcnQgcmV0dXJuZWQgdHJ1ZS4KLQlEb24ndCB1bmxvY2sgd3MtPmxvY2su Ci0JKiBwYXJhbGxlbC5jIChHT01QX3BhcmFsbGVsX3N0YXJ0KTogQ2FsbCBnb21wX25ld190ZWFt IGFuZCBwYXNzIHRoYXQKLQlhcyBsYXN0IGFyZ3VtZW50IHRvIGdvbXBfdGVhbV9zdGFydC4KLQkq IGNvbmZpZy9saW51eC9wdHJsb2NrLmM6IE5ldyBmaWxlLgotCSogY29uZmlnL2xpbnV4L3B0cmxv Y2suaDogTmV3IGZpbGUuCi0JKiBjb25maWcvcG9zaXgvcHRybG9jay5jOiBOZXcgZmlsZS4KLQkq IGNvbmZpZy9wb3NpeC9wdHJsb2NrLmg6IE5ldyBmaWxlLgotCSogTWFrZWZpbGUuYW0gKGxpYmdv bXBfbGFfU09VUkNFUyk6IEFkZCBwdHJsb2NrLmMuCi0JKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0 ZWQuCi0JKiB0ZXN0c3VpdGUvTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGVkLgotCi0yMDA4LTAzLTE5 ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCSogbGliZ29tcC5oIChnb21w X2FjdGl2ZV93YWl0X3BvbGljeSk6IFJlbW92ZSBkZWNsLgotCShnb21wX3Rocm90dGxlZF9zcGlu X2NvdW50X3ZhciwgZ29tcF9hdmFpbGFibGVfY3B1cywKLQlnb21wX21hbmFnZWRfdGhyZWFkcyk6 IE5ldyBleHRlcm4gZGVjbHMuCi0JKiB0ZWFtLmMgKGdvbXBfdGVhbV9zdGFydCwgZ29tcF90ZWFt X2VuZCk6IElmIG51bWJlciBvZiB0aHJlYWRzCi0JY2hhbmdlZCwgYWRqdXN0IGF0b21pY2FsbHkg Z29tcF9tYW5hZ2VkX3RocmVhZHMuCi0JKiBlbnYuYyAoZ29tcF9hY3RpdmVfd2FpdF9wb2xpY3ks IGdvbXBfYmxvY2tfdGltZV92YXIpOiBSZW1vdmUuCi0JKGdvbXBfdGhyb3R0bGVkX3NwaW5fY291 bnRfdmFyLCBnb21wX2F2YWlsYWJsZV9jcHVzLAotCWdvbXBfbWFuYWdlZF90aHJlYWRzKTogTmV3 IHZhcmlhYmxlcy4KLQkocGFyc2VfbWlsbGlzKTogUmVtb3ZlZC4KLQkocGFyc2Vfc3BpbmNvdW50 KTogTmV3IGZ1bmN0aW9uLgotCShwYXJzZV93YWl0X3BvbGljeSk6IFJldHVybiAtMS8wLzEgaW5z dGVhZCBvZiBzZXR0aW5nCi0JZ29tcF9hY3RpdmVfd2FpdF9wb2xpY3kuCi0JKGluaXRpYWxpemVf ZW52KTogQ2FsbCBnb21wX2luaXRfbnVtX3RocmVhZHMgdW5jb25kaXRpb25hbGx5LgotCUluaXRp YWxpemUgZ29tcF9hdmFpbGFibGVfY3B1cy4gIENhbGwgcGFyc2Vfc3BpbmNvdW50IGluc3RlYWQK LQlvZiBwYXJzZV9taWxsaXMsIGluaXRpYWxpemUgZ29tcF97LHRocm90dGxlZF99c3Bpbl9jb3Vu dF92YXIKLQlkZXBlbmRpbmcgb24gcHJlc2VuY2UgYW5kIHZhbHVlIG9mIE9NUF9XQUlUX1BPTElD WSBhbmQKLQlHT01QX1NQSU5DT1VOVCBlbnYgdmFycy4KLQkqIGNvbmZpZy9saW51eC93YWl0Lmgg KGRvX3dhaXQpOiBVc2UgZ29tcF90aHJvdHRsZWRfc3Bpbl9jb3VudF92YXIKLQlpbnN0ZWFkIG9m IGdvbXBfc3Bpbl9jb3VudF92YXIgaWYgZ29tcF9tYW5hZ2VkX3RocmVhZHMgPgotCWdvbXBfYXZh aWxhYmxlX2NwdXMuCi0KLQkqIGNvbmZpZy9saW51eC93YWl0Lmg6IEluY2x1ZGUgZXJybm8uaC4K LQkoRlVURVhfV0FJVCwgRlVURVhfV0FLRSwgRlVURVhfUFJJVkFURV9GTEFHKTogRGVmaW5lLgot CShnb21wX2Z1dGV4X3dha2UsIGdvbXBfZnV0ZXhfd2FpdCk6IE5ldyBleHRlcm4gZGVjbHMuCi0J KiBjb25maWcvbGludXgvbXV0ZXguYyAoZ29tcF9mdXRleF93YWtlLCBnb21wX2Z1dGV4X3dhaXQp OiBOZXcKLQl2YXJpYWJsZXMuCi0JKiBjb25maWcvbGludXgvcG93ZXJwYy9mdXRleC5oIChGVVRF WF9XQUlULCBGVVRFWF9XQUtFKTogUmVtb3ZlLgotCShzeXNfZnV0ZXgwKTogUmV0dXJuIGVycm9y IGNvZGUuCi0JKGZ1dGV4X3dha2UsIGZ1dGV4X3dhaXQpOiBJZiBFTk9TWVMgd2FzIHJldHVybmVk LCBjbGVhcgotCUZVVEVYX1BSSVZBVEVfRkxBRyBpbiBnb21wX2Z1dGV4X3dhe2tlLGl0fSBhbmQg cmV0cnkuCi0JKiBjb25maWcvbGludXgvYWxwaGEvZnV0ZXguaCAoRlVURVhfV0FJVCwgRlVURVhf V0FLRSk6IFJlbW92ZS4KLQkoZnV0ZXhfd2FrZSwgZnV0ZXhfd2FpdCk6IElmIEVOT1NZUyB3YXMg cmV0dXJuZWQsIGNsZWFyCi0JRlVURVhfUFJJVkFURV9GTEFHIGluIGdvbXBfZnV0ZXhfd2F7a2Us aXR9IGFuZCByZXRyeS4KLQkqIGNvbmZpZy9saW51eC94ODYvZnV0ZXguaCAoRlVURVhfV0FJVCwg RlVURVhfV0FLRSk6IFJlbW92ZS4KLQkoc3lzX2Z1dGV4MCk6IFJldHVybiBlcnJvciBjb2RlLgot CShmdXRleF93YWtlLCBmdXRleF93YWl0KTogSWYgRU5PU1lTIHdhcyByZXR1cm5lZCwgY2xlYXIK LQlGVVRFWF9QUklWQVRFX0ZMQUcgaW4gZ29tcF9mdXRleF93YXtrZSxpdH0gYW5kIHJldHJ5Lgot CSogY29uZmlnL2xpbnV4L3MzOTAvZnV0ZXguaCAoRlVURVhfV0FJVCwgRlVURVhfV0FLRSk6IFJl bW92ZS4KLQkoc3lzX2Z1dGV4MCk6IFJldHVybiBlcnJvciBjb2RlLgotCShmdXRleF93YWtlLCBm dXRleF93YWl0KTogSWYgRU5PU1lTIHdhcyByZXR1cm5lZCwgY2xlYXIKLQlGVVRFWF9QUklWQVRF X0ZMQUcgaW4gZ29tcF9mdXRleF93YXtrZSxpdH0gYW5kIHJldHJ5LgotCSogY29uZmlnL2xpbnV4 L2lhNjQvZnV0ZXguaCAoRlVURVhfV0FJVCwgRlVURVhfV0FLRSk6IFJlbW92ZS4KLQkoc3lzX2Z1 dGV4MCk6IFJldHVybiBlcnJvciBjb2RlLgotCShmdXRleF93YWtlLCBmdXRleF93YWl0KTogSWYg RU5PU1lTIHdhcyByZXR1cm5lZCwgY2xlYXIKLQlGVVRFWF9QUklWQVRFX0ZMQUcgaW4gZ29tcF9m dXRleF93YXtrZSxpdH0gYW5kIHJldHJ5LgotCSogY29uZmlnL2xpbnV4L3NwYXJjL2Z1dGV4Lmgg KEZVVEVYX1dBSVQsIEZVVEVYX1dBS0UpOiBSZW1vdmUuCi0JKHN5c19mdXRleDApOiBSZXR1cm4g ZXJyb3IgY29kZS4KLQkoZnV0ZXhfd2FrZSwgZnV0ZXhfd2FpdCk6IElmIEVOT1NZUyB3YXMgcmV0 dXJuZWQsIGNsZWFyCi0JRlVURVhfUFJJVkFURV9GTEFHIGluIGdvbXBfZnV0ZXhfd2F7a2UsaXR9 IGFuZCByZXRyeS4KLQotMjAwOC0wMy0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5j b20+Ci0KLQkqIGxpYmdvbXAuaCAoc3RydWN0IGdvbXBfd29ya19zaGFyZSk6IEFkZCBtb2RlIGZp ZWxkLiAgUHV0IGxvY2sgYW5kCi0JbmV4dCBpbnRvIGEgZGlmZmVyZW50IGNhY2hlIGxpbmUgZnJv bSBtb3N0IG9mIHRoZSB3cml0ZS1vbmNlIGZpZWxkcy4KLQkqIGxvb3AuYzogSW5jbHVkZSBsaW1p dHMuaC4KLQkoZ29tcF9sb29wX2luaXQpOiBGb3IgR0ZTX0RZTkFNSUMsIG11bHRpcGx5IHdzLT5j aHVua19zaXplIGJ5IGluY3IuCi0JSWYgYWRkaW5nIHdzLT5jaHVua19zaXplIG50aHJlYWRzICsg MSB0aW1lcyBhZnRlciBlbmQgd29uJ3QKLQlvdmVyZmxvdywgc2V0IHdzLT5tb2RlIHRvIDEuCi0J KiBpdGVyLmMgKGdvbXBfaXRlcl9keW5hbWljX25leHRfbG9ja2VkKTogRG9uJ3QgbXVsdGlwbHkK LQl3cy0+Y2h1bmtfc2l6ZSBieSBpbmNyLgotCShnb21wX2l0ZXJfZHluYW1pY19uZXh0KTogTGlr ZXdpc2UuICBJZiB3cy0+bW9kZSwgdXNlIG1vcmUgZWZmaWNpZW50Ci0JY29kZS4KLQkqIHdvcmsu YzogSW5jbHVkZSBzdGRkZWYuaC4KLQkoZ29tcF9uZXdfd29ya19zaGFyZSk6IFVzZSBvZmZzZXRv ZiByYXRoZXIgdGhhbiBzaXplb2YuCi0KLTIwMDgtMDMtMTcgIEpha3ViIEplbGluZWsgIDxqYWt1 YkByZWRoYXQuY29tPgotCi0JKiBsaWJnb21wLmggKHN0cnVjdCBnb21wX3RlYW0pOiBDaGFuZ2Ug b3JkZXJlZF9yZWxlYXNlIGZpZWxkCi0JaW50byBnb21wX3NlbV90ICoqIGZyb20gZmxleGlibGUg YXJyYXkgbWVtYmVyLiAgQWRkIGltcGxpY2l0X3Rhc2sKLQlhbmQgaW5pdGlhbF93b3JrX3NoYXJl cyBmaWVsZHMuCi0JKGdvbXBfbmV3X3Rhc2spOiBSZW1vdmVkLgotCShnb21wX2luaXRfdGFzayk6 IE5ldyBwcm90b3R5cGUuCi0JKiB0ZWFtLmMgKG5ld190ZWFtKTogQWxsb2NhdGUgaW1wbGljaXRf dGFzayBmb3IgZWFjaCB0aHJlYWQKLQlhbmQgaW5pdGlhbCB3b3JrX3NoYXJlcyB0b2dldGhlciB3 aXRoIGdvbXBfdGVhbSBhbGxvY2F0aW9uLgotCShmcmVlX3RlYW0pOiBPbmx5IGZyZWUgd29ya19z aGFyZXMgaWYgaXQgaXMgbm90IGluaXRfd29ya19zaGFyZXMuCi0JKGdvbXBfdGVhbV9zdGFydCk6 IFVzZSBnb21wX2luaXRfdGFzayBpbnN0ZWFkIG9mIGdvbXBfbmV3X3Rhc2ssCi0Jc2V0IHRoci0+ dGFzayB0byB0aGUgY29ycmVzcG9uZGluZyBpbXBsaWNpdF90YXNrIGFycmF5IGVudHJ5LgotCSog dGFzay5jIChnb21wX25ld190YXNrKTogUmVtb3ZlZC4KLQkoZ29tcF9pbml0X3Rhc2spOiBOZXcg ZnVuY3Rpb24uCi0JKGdvbXBfZW5kX3Rhc2spOiBEb24ndCBmcmVlIHRoZSB0YXNrLgotCShHT01Q X3Rhc2spOiBBbGxvY2F0ZSBzdHJ1Y3QgZ29tcF90YXNrIG9uIHRoZSBzdGFjaywgY2FsbAotCWdv bXBfaW5pdF90YXNrIHJhdGhlciB0aGFuIGdvbXBfbmV3X3Rhc2suCi0JKiB3b3JrLmMgKGdvbXBf d29ya19zaGFyZV9zdGFydCk6IElmIHdvcmtfc2hhcmVzID09Ci0JaW5pdF93b3JrX3NoYXJlcywg Z29tcF9tYWxsb2MgKyBtZW1jcHkgcmF0aGVyIHRoYW4gZ29tcF9yZWFsbG9jLgotCi0yMDA4LTAz LTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQkgICAgVWxyaWNoIERyZXBw ZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+Ci0KLQkqIGNvbmZpZy9saW51eC9iYXIuaCAoZ29tcF9i YXJyaWVyX3N0YXRlX3QpOiBSZXdyaXR0ZW4uCi0JKGdvbXBfYmFycmllcl9zdGF0ZV90KTogQ2hh bmdlIHRvIHVuc2lnbmVkIGludC4KLQkoZ29tcF9iYXJyaWVyX2luaXQsIGdvbXBfYmFycmllcl9y ZWluaXQsIGdvbXBfYmFycmllcl9kZXN0cm95LAotCWdvbXBfYmFycmllcl93YWl0X3N0YXJ0LCBn b21wX2JhcnJpZXJfbGFzdF90aHJlYWQpOiBSZXdyaXR0ZW4uCi0JKGdvbXBfYmFycmllcl93YWl0 X2xhc3QpOiBQcm90b3R5cGUgcmF0aGVyIHRoYW4gaW5saW5lLgotCSogY29uZmlnL2xpbnV4L2Jh ci5jIChnb21wX2JhcnJpZXJfd2FpdF9lbmQpOiBSZXdyaXR0ZW4uCi0JKGdvbXBfYmFycmllcl93 YWl0X2xhc3QpOiBOZXcgZnVuY3Rpb24uCi0KLTIwMDgtMDMtMTUgIEpha3ViIEplbGluZWsgIDxq YWt1YkByZWRoYXQuY29tPgotCi0JKiB0ZWFtLmMgKGdvbXBfdGhyZWFkX3N0YXJ0KTogVXNlIGdv bXBfYmFycmllcl93YWl0X2xhc3QgaW5zdGVhZAotCW9mIGdvbXBfYmFycmllcl93YWl0LgotCSog ZW52LmMgKGdvbXBfYmxvY2tfdGltZV92YXIsIGdvbXBfc3Bpbl9jb3VudF92YXIpOiBOZXcgdmFy aWFibGVzLgotCShwYXJzZV9taWxsaXMpOiBOZXcgZnVuY3Rpb24uCi0JKGluaXRpYWxpemVfZW52 KTogSGFuZGxlIEdPTVBfQkxPQ0tUSU1FIGVudiB2YXIuCi0JKiBsaWJnb21wLmggKHN0cnVjdCBn b21wX3RlYW0pOiBNb3ZlIGNsb3NlIHRvIHRoZSBlbmQgb2YgdGhlIHN0cnVjdC4KLQkoZ29tcF9z cGluX2NvdW50X3Zhcik6IE5ldyBleHRlcm4gdmFyIGRlY2wuCi0JKiB3b3JrLmMgKGdvbXBfd29y a19zaGFyZV9lbmQpOiBVc2UgZ29tcF9iYXJyaWVyX3N0YXRlX3QgYnN0YXRlCi0JdmFyIGluc3Rl YWQgb2YgYm9vbCBsYXN0LCBjYWxsIGdvbXBfYmFycmllcl9sYXN0X3RocmVhZCB0byBjaGVjawot CWZvciBsYXN0IHRocmVhZCwgcGFzcyBic3RhdGUgdG8gZ29tcF9iYXJyaWVyX3dhaXRfZW5kLgot CSogY29uZmlnL2xpbnV4L3dhaXQuaDogTmV3IGZpbGUuCi0JKiBjb25maWcvbGludXgvbXV0ZXgu YzogSW5jbHVkZSB3YWl0LmggaW5zdGVhZCBvZiBsaWJnb21wLmggYW5kCi0JZnV0ZXguaC4KLQko Z29tcF9tdXRleF9sb2NrX3Nsb3cpOiBDYWxsIGRvX3dhaXQgaW5zdGVhZCBvZiBmdXRleF93YWl0 LgotCSogY29uZmlnL2xpbnV4L2Jhci5jOiBJbmNsdWRlIHdhaXQuaCBpbnN0ZWFkIG9mIGxpYmdv bXAuaCBhbmQKLQlmdXRleC5oLgotCShnb21wX2JhcnJpZXJfd2FpdF9lbmQpOiBDaGFuZ2Ugc2Vj b25kIGFyZ3VtZW50IHRvCi0JZ29tcF9iYXJyaWVyX3N0YXRlX3QuICBDYWxsIGRvX3dhaXQgaW5z dGVhZCBvZiBmdXRleF93YWl0LgotCSogY29uZmlnL2xpbnV4L3NlbS5jOiBJbmNsdWRlIHdhaXQu aCBpbnN0ZWFkIG9mIGxpYmdvbXAuaCBhbmQKLQlmdXRleC5oLgotCShnb21wX3NlbV93YWl0X3Ns b3cpOiBDYWxsIGRvX3dhaXQgaW5zdGVhZCBvZiBmdXRleF93YWl0LgotCSogY29uZmlnL2xpbnV4 L2xvY2suYzogSW5jbHVkZSB3YWl0LmggaW5zdGVhZCBvZiBsaWJnb21wLmggYW5kCi0JZnV0ZXgu aC4KLQkoZ29tcF9zZXRfbmVzdF9sb2NrXzI1KTogQ2FsbCBkb193YWl0IGluc3RlYWQgb2YgZnV0 ZXhfd2FpdC4KLQkqIGNvbmZpZy9saW51eC9hZmZpbml0eS5jOiBBc3N1bWUgSEFWRV9TWU5DX0JV SUxUSU5TLgotCSogY29uZmlnL2xpbnV4L2Jhci5oIChnb21wX2JhcnJpZXJfc3RhdGVfdCk6IE5l dyB0eXBlZGVmLgotCShnb21wX2JhcnJpZXJfd2FpdF9lbmQpOiBDaGFuZ2Ugc2Vjb25kIGFyZ3Vt ZW50IHRvCi0JZ29tcF9iYXJyaWVyX3N0YXRlX3QuCi0JKGdvbXBfYmFycmllcl93YWl0X3N0YXJ0 KTogUmV0dXJuIGdvbXBfYmFycmllcl9zdGF0ZV90LgotCShnb21wX2JhcnJpZXJfbGFzdF90aHJl YWQsIGdvbXBfYmFycmllcl93YWl0X2xhc3QpOiBOZXcgc3RhdGljCi0JaW5saW5lcy4KLQkqIGNv bmZpZy9saW51eC9wb3dlcnBjL2Z1dGV4LmggKGNwdV9yZWxheCwgYXRvbWljX3dyaXRlX2JhcnJp ZXIpOiBOZXcKLQlzdGF0aWMgaW5saW5lcy4KLQkqIGNvbmZpZy9saW51eC9hbHBoYS9mdXRleC5o IChjcHVfcmVsYXgsIGF0b21pY193cml0ZV9iYXJyaWVyKToKLQlMaWtld2lzZS4KLQkqIGNvbmZp Zy9saW51eC94ODYvZnV0ZXguaCAoY3B1X3JlbGF4LCBhdG9taWNfd3JpdGVfYmFycmllcik6Ci0J TGlrZXdpc2UuCi0JKiBjb25maWcvbGludXgvczM5MC9mdXRleC5oIChjcHVfcmVsYXgsIGF0b21p Y193cml0ZV9iYXJyaWVyKToKLQlMaWtld2lzZS4KLQkqIGNvbmZpZy9saW51eC9pYTY0L2Z1dGV4 LmggKGNwdV9yZWxheCwgYXRvbWljX3dyaXRlX2JhcnJpZXIpOgotCUxpa2V3aXNlLgotCSogY29u ZmlnL2xpbnV4L3NwYXJjL2Z1dGV4LmggKGNwdV9yZWxheCwgYXRvbWljX3dyaXRlX2JhcnJpZXIp OgotCUxpa2V3aXNlLgotCSogY29uZmlnL3Bvc2l4L2Jhci5jIChnb21wX2JhcnJpZXJfd2FpdF9l bmQpOiBDaGFuZ2Ugc2Vjb25kIGFyZ3VtZW50Ci0JdG8gZ29tcF9iYXJyaWVyX3N0YXRlX3QuCi0J KiBjb25maWcvcG9zaXgvYmFyLmggKGdvbXBfYmFycmllcl9zdGF0ZV90KTogTmV3IHR5cGVkZWYu Ci0JKGdvbXBfYmFycmllcl93YWl0X2VuZCk6IENoYW5nZSBzZWNvbmQgYXJndW1lbnQgdG8KLQln b21wX2JhcnJpZXJfc3RhdGVfdC4KLQkoZ29tcF9iYXJyaWVyX3dhaXRfc3RhcnQpOiBSZXR1cm4g Z29tcF9iYXJyaWVyX3N0YXRlX3QuCi0JKGdvbXBfYmFycmllcl9sYXN0X3RocmVhZCwgZ29tcF9i YXJyaWVyX3dhaXRfbGFzdCk6IE5ldyBzdGF0aWMKLQlpbmxpbmVzLgotCi0tLS0gbGliZ29tcC9w YXJhbGxlbC5jLmpqCTIwMDctMTItMDcgMTQ6NDE6MDEuMDAwMDAwMDAwICswMTAwCi0rKysgbGli Z29tcC9wYXJhbGxlbC5jCTIwMDgtMDMtMjYgMTU6MzI6MDYuMDAwMDAwMDAwICswMTAwCi1AQCAt NjgsNyArNjgsNyBAQCB2b2lkCi0gR09NUF9wYXJhbGxlbF9zdGFydCAodm9pZCAoKmZuKSAodm9p ZCAqKSwgdm9pZCAqZGF0YSwgdW5zaWduZWQgbnVtX3RocmVhZHMpCi0gewotICAgbnVtX3RocmVh ZHMgPSBnb21wX3Jlc29sdmVfbnVtX3RocmVhZHMgKG51bV90aHJlYWRzKTsKLS0gIGdvbXBfdGVh bV9zdGFydCAoZm4sIGRhdGEsIG51bV90aHJlYWRzLCBOVUxMKTsKLSsgIGdvbXBfdGVhbV9zdGFy dCAoZm4sIGRhdGEsIG51bV90aHJlYWRzLCBnb21wX25ld190ZWFtIChudW1fdGhyZWFkcykpOwot IH0KLSAKLSB2b2lkCi0tLS0gbGliZ29tcC9zZWN0aW9ucy5jLmpqCTIwMDctMTItMDcgMTQ6NDE6 MDEuMDAwMDAwMDAwICswMTAwCi0rKysgbGliZ29tcC9zZWN0aW9ucy5jCTIwMDgtMDMtMjYgMTU6 MzM6MDYuMDAwMDAwMDAwICswMTAwCi1AQCAtNTksMTQgKzU5LDI0IEBAIEdPTVBfc2VjdGlvbnNf c3RhcnQgKHVuc2lnbmVkIGNvdW50KQotICAgbG9uZyBzLCBlLCByZXQ7Ci0gCi0gICBpZiAoZ29t cF93b3JrX3NoYXJlX3N0YXJ0IChmYWxzZSkpCi0tICAgIGdvbXBfc2VjdGlvbnNfaW5pdCAodGhy LT50cy53b3JrX3NoYXJlLCBjb3VudCk7Ci0rICAgIHsKLSsgICAgICBnb21wX3NlY3Rpb25zX2lu aXQgKHRoci0+dHMud29ya19zaGFyZSwgY291bnQpOwotKyAgICAgIGdvbXBfd29ya19zaGFyZV9p bml0X2RvbmUgKCk7Ci0rICAgIH0KLSAKLSsjaWZkZWYgSEFWRV9TWU5DX0JVSUxUSU5TCi0rICBp ZiAoZ29tcF9pdGVyX2R5bmFtaWNfbmV4dCAoJnMsICZlKSkKLSsgICAgcmV0ID0gczsKLSsgIGVs c2UKLSsgICAgcmV0ID0gMDsKLSsjZWxzZQotKyAgZ29tcF9tdXRleF9sb2NrICgmdGhyLT50cy53 b3JrX3NoYXJlLT5sb2NrKTsKLSAgIGlmIChnb21wX2l0ZXJfZHluYW1pY19uZXh0X2xvY2tlZCAo JnMsICZlKSkKLSAgICAgcmV0ID0gczsKLSAgIGVsc2UKLSAgICAgcmV0ID0gMDsKLS0KLSAgIGdv bXBfbXV0ZXhfdW5sb2NrICgmdGhyLT50cy53b3JrX3NoYXJlLT5sb2NrKTsKLSsjZW5kaWYKLSAK LSAgIHJldHVybiByZXQ7Ci0gfQotQEAgLTgzLDE1ICs5MywyMyBAQCBHT01QX3NlY3Rpb25zX3N0 YXJ0ICh1bnNpZ25lZCBjb3VudCkKLSB1bnNpZ25lZAotIEdPTVBfc2VjdGlvbnNfbmV4dCAodm9p ZCkKLSB7Ci0tICBzdHJ1Y3QgZ29tcF90aHJlYWQgKnRociA9IGdvbXBfdGhyZWFkICgpOwotICAg bG9uZyBzLCBlLCByZXQ7Ci0gCi0rI2lmZGVmIEhBVkVfU1lOQ19CVUlMVElOUwotKyAgaWYgKGdv bXBfaXRlcl9keW5hbWljX25leHQgKCZzLCAmZSkpCi0rICAgIHJldCA9IHM7Ci0rICBlbHNlCi0r ICAgIHJldCA9IDA7Ci0rI2Vsc2UKLSsgIHN0cnVjdCBnb21wX3RocmVhZCAqdGhyID0gZ29tcF90 aHJlYWQgKCk7Ci0rCi0gICBnb21wX211dGV4X2xvY2sgKCZ0aHItPnRzLndvcmtfc2hhcmUtPmxv Y2spOwotICAgaWYgKGdvbXBfaXRlcl9keW5hbWljX25leHRfbG9ja2VkICgmcywgJmUpKQotICAg ICByZXQgPSBzOwotICAgZWxzZQotICAgICByZXQgPSAwOwotICAgZ29tcF9tdXRleF91bmxvY2sg KCZ0aHItPnRzLndvcmtfc2hhcmUtPmxvY2spOwotKyNlbmRpZgotIAotICAgcmV0dXJuIHJldDsK LSB9Ci1AQCAtMTAzLDE1ICsxMjEsMTUgQEAgdm9pZAotIEdPTVBfcGFyYWxsZWxfc2VjdGlvbnNf c3RhcnQgKHZvaWQgKCpmbikgKHZvaWQgKiksIHZvaWQgKmRhdGEsCi0gCQkJICAgICAgdW5zaWdu ZWQgbnVtX3RocmVhZHMsIHVuc2lnbmVkIGNvdW50KQotIHsKLS0gIHN0cnVjdCBnb21wX3dvcmtf c2hhcmUgKndzOwotKyAgc3RydWN0IGdvbXBfdGVhbSAqdGVhbTsKLSAKLSAgIG51bV90aHJlYWRz ID0gZ29tcF9yZXNvbHZlX251bV90aHJlYWRzIChudW1fdGhyZWFkcyk7Ci0gICBpZiAoZ29tcF9k eW5fdmFyICYmIG51bV90aHJlYWRzID4gY291bnQpCi0gICAgIG51bV90aHJlYWRzID0gY291bnQ7 Ci0gCi0tICB3cyA9IGdvbXBfbmV3X3dvcmtfc2hhcmUgKGZhbHNlLCBudW1fdGhyZWFkcyk7Ci0t ICBnb21wX3NlY3Rpb25zX2luaXQgKHdzLCBjb3VudCk7Ci0tICBnb21wX3RlYW1fc3RhcnQgKGZu LCBkYXRhLCBudW1fdGhyZWFkcywgd3MpOwotKyAgdGVhbSA9IGdvbXBfbmV3X3RlYW0gKG51bV90 aHJlYWRzKTsKLSsgIGdvbXBfc2VjdGlvbnNfaW5pdCAoJnRlYW0tPndvcmtfc2hhcmVzWzBdLCBj b3VudCk7Ci0rICBnb21wX3RlYW1fc3RhcnQgKGZuLCBkYXRhLCBudW1fdGhyZWFkcywgdGVhbSk7 Ci0gfQotIAotIC8qIFRoZSBHT01QX3NlY3Rpb25fZW5kKiByb3V0aW5lcyBhcmUgY2FsbGVkIGFm dGVyIHRoZSB0aHJlYWQgaXMgdG9sZAotLS0tIGxpYmdvbXAvZW52LmMuamoJMjAwNy0xMi0wNyAx NDo0MTowMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBsaWJnb21wL2Vudi5jCTIwMDgtMDMtMjYgMTY6 NDA6MjYuMDAwMDAwMDAwICswMTAwCi1AQCAtNDQsNiArNDQsMTEgQEAgZW51bSBnb21wX3NjaGVk dWxlX3R5cGUgZ29tcF9ydW5fc2NoZWRfdgotIHVuc2lnbmVkIGxvbmcgZ29tcF9ydW5fc2NoZWRf Y2h1bmsgPSAxOwotIHVuc2lnbmVkIHNob3J0ICpnb21wX2NwdV9hZmZpbml0eTsKLSBzaXplX3Qg Z29tcF9jcHVfYWZmaW5pdHlfbGVuOwotKyNpZm5kZWYgSEFWRV9TWU5DX0JVSUxUSU5TCi0rZ29t cF9tdXRleF90IGdvbXBfcmVtYWluaW5nX3RocmVhZHNfbG9jazsKLSsjZW5kaWYKLSt1bnNpZ25l ZCBsb25nIGdvbXBfYXZhaWxhYmxlX2NwdXMgPSAxLCBnb21wX21hbmFnZWRfdGhyZWFkcyA9IDE7 Ci0rdW5zaWduZWQgbG9uZyBsb25nIGdvbXBfc3Bpbl9jb3VudF92YXIsIGdvbXBfdGhyb3R0bGVk X3NwaW5fY291bnRfdmFyOwotIAotIC8qIFBhcnNlIHRoZSBPTVBfU0NIRURVTEUgZW52aXJvbm1l bnQgdmFyaWFibGUuICAqLwotIAotQEAgLTE0Nyw2ICsxNTIsNzkgQEAgcGFyc2VfdW5zaWduZWRf bG9uZyAoY29uc3QgY2hhciAqbmFtZSwgdQotICAgcmV0dXJuIGZhbHNlOwotIH0KLSAKLSsvKiBQ YXJzZSB0aGUgR09NUF9TUElOQ09VTlQgZW52aXJvbm1lbnQgdmFyaWJsZS4gIFJldHVybiB0cnVl IGlmIG9uZSB3YXMKLSsgICBwcmVzZW50IGFuZCBpdCB3YXMgc3VjY2Vzc2Z1bGx5IHBhcnNlZC4g ICovCi0rCi0rc3RhdGljIGJvb2wKLStwYXJzZV9zcGluY291bnQgKGNvbnN0IGNoYXIgKm5hbWUs IHVuc2lnbmVkIGxvbmcgbG9uZyAqcHZhbHVlKQotK3sKLSsgIGNoYXIgKmVudiwgKmVuZDsKLSsg IHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSwgbXVsdCA9IDE7Ci0rCi0rICBlbnYgPSBnZXRlbnYg KG5hbWUpOwotKyAgaWYgKGVudiA9PSBOVUxMKQotKyAgICByZXR1cm4gZmFsc2U7Ci0rCi0rICB3 aGlsZSAoaXNzcGFjZSAoKHVuc2lnbmVkIGNoYXIpICplbnYpKQotKyAgICArK2VudjsKLSsgIGlm ICgqZW52ID09ICdcMCcpCi0rICAgIGdvdG8gaW52YWxpZDsKLSsKLSsgIGlmIChzdHJuY2FzZWNt cCAoZW52LCAiaW5maW5pdGUiLCA4KSA9PSAwCi0rICAgICAgfHwgc3RybmNhc2VjbXAgKGVudiwg ImluZmluaXR5IiwgOCkgPT0gMCkKLSsgICAgewotKyAgICAgIHZhbHVlID0gfjBVTEw7Ci0rICAg ICAgZW5kID0gZW52ICsgODsKLSsgICAgICBnb3RvIGNoZWNrX3RhaWw7Ci0rICAgIH0KLSsKLSsg IGVycm5vID0gMDsKLSsgIHZhbHVlID0gc3RydG91bGwgKGVudiwgJmVuZCwgMTApOwotKyAgaWYg KGVycm5vKQotKyAgICBnb3RvIGludmFsaWQ7Ci0rCi0rICB3aGlsZSAoaXNzcGFjZSAoKHVuc2ln bmVkIGNoYXIpICplbmQpKQotKyAgICArK2VuZDsKLSsgIGlmICgqZW5kICE9ICdcMCcpCi0rICAg IHsKLSsgICAgICBzd2l0Y2ggKHRvbG93ZXIgKCplbmQpKQotKwl7Ci0rCWNhc2UgJ2snOgotKwkg IG11bHQgPSAxMDAwTEw7Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgJ20nOgotKwkgIG11bHQgPSAxMDAw TEwgKiAxMDAwTEw7Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgJ2cnOgotKwkgIG11bHQgPSAxMDAwTEwg KiAxMDAwTEwgKiAxMDAwTEw7Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgJ3QnOgotKwkgIG11bHQgPSAx MDAwTEwgKiAxMDAwTEwgKiAxMDAwTEwgKiAxMDAwTEw7Ci0rCSAgYnJlYWs7Ci0rCWRlZmF1bHQ6 Ci0rCSAgZ290byBpbnZhbGlkOwotKwl9Ci0rICAgICAgKytlbmQ7Ci0rICAgICBjaGVja190YWls OgotKyAgICAgIHdoaWxlIChpc3NwYWNlICgodW5zaWduZWQgY2hhcikgKmVuZCkpCi0rCSsrZW5k OwotKyAgICAgIGlmICgqZW5kICE9ICdcMCcpCi0rCWdvdG8gaW52YWxpZDsKLSsgICAgfQotKwot KyAgaWYgKHZhbHVlID4gfjBVTEwgLyBtdWx0KQotKyAgICB2YWx1ZSA9IH4wVUxMOwotKyAgZWxz ZQotKyAgICB2YWx1ZSAqPSBtdWx0OwotKwotKyAgKnB2YWx1ZSA9IHZhbHVlOwotKyAgcmV0dXJu IHRydWU7Ci0rCi0rIGludmFsaWQ6Ci0rICBnb21wX2Vycm9yICgiSW52YWxpZCB2YWx1ZSBmb3Ig ZW52aXJvbm1lbnQgdmFyaWFibGUgJXMiLCBuYW1lKTsKLSsgIHJldHVybiBmYWxzZTsKLSt9Ci0r Ci0gLyogUGFyc2UgYSBib29sZWFuIHZhbHVlIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZSBOQU1F IGFuZCBzdG9yZSB0aGUgCi0gICAgcmVzdWx0IGluIFZBTFVFLiAgKi8KLSAKLUBAIC0yODEsMTAg KzM1OSwyNSBAQCBpbml0aWFsaXplX2VudiAodm9pZCkKLSAgIHBhcnNlX3NjaGVkdWxlICgpOwot ICAgcGFyc2VfYm9vbGVhbiAoIk9NUF9EWU5BTUlDIiwgJmdvbXBfZHluX3Zhcik7Ci0gICBwYXJz ZV9ib29sZWFuICgiT01QX05FU1RFRCIsICZnb21wX25lc3RfdmFyKTsKLSsgIGdvbXBfaW5pdF9u dW1fdGhyZWFkcyAoKTsKLSsgIGdvbXBfYXZhaWxhYmxlX2NwdXMgPSBnb21wX250aHJlYWRzX3Zh cjsKLSAgIGlmICghcGFyc2VfdW5zaWduZWRfbG9uZyAoIk9NUF9OVU1fVEhSRUFEUyIsICZnb21w X250aHJlYWRzX3ZhcikpCi0tICAgIGdvbXBfaW5pdF9udW1fdGhyZWFkcyAoKTsKLSsgICAgZ29t cF9udGhyZWFkc192YXIgPSBnb21wX2F2YWlsYWJsZV9jcHVzOwotICAgaWYgKHBhcnNlX2FmZmlu aXR5ICgpKQotICAgICBnb21wX2luaXRfYWZmaW5pdHkgKCk7Ci0rICBpZiAoIXBhcnNlX3NwaW5j b3VudCAoIkdPTVBfU1BJTkNPVU5UIiwgJmdvbXBfc3Bpbl9jb3VudF92YXIpKQotKyAgICB7Ci0r ICAgICAgLyogVXNpbmcgYSByb3VnaCBlc3RpbWF0aW9uIG9mIDEwMDAwMCBzcGlucyBwZXIgbXNl YywKLSsJIHVzZSAyMDAgbXNlYyBibG9ja2luZy4KLSsJIERlcGVuZGluZyBvbiB0aGUgQ1BVIHNw ZWVkLCB0aGlzIGNhbiBiZSBlLmcuIDUgdGltZXMgbG9uZ2VyCi0rCSBvciA1IHRpbWVzIHNob3J0 ZXIuICAqLwotKyAgICAgIGdvbXBfc3Bpbl9jb3VudF92YXIgPSAyMDAwMDAwMExMOwotKyAgICB9 Ci0rICAvKiBnb21wX3Rocm90dGxlZF9zcGluX2NvdW50X3ZhciBpcyB1c2VkIHdoZW4gdGhlcmUg YXJlIG1vcmUgbGliZ29tcAotKyAgICAgbWFuYWdlZCB0aHJlYWRzIHRoYW4gYXZhaWxhYmxlIENQ VXMuICBVc2UgdmVyeSBzaG9ydCBzcGlubmluZy4gICovCi0rICBnb21wX3Rocm90dGxlZF9zcGlu X2NvdW50X3ZhciA9IDEwMExMOwotKyAgaWYgKGdvbXBfdGhyb3R0bGVkX3NwaW5fY291bnRfdmFy ID4gZ29tcF9zcGluX2NvdW50X3ZhcikKLSsgICAgZ29tcF90aHJvdHRsZWRfc3Bpbl9jb3VudF92 YXIgPSBnb21wX3NwaW5fY291bnRfdmFyOwotIAotICAgLyogTm90IHN0cmljdGx5IGVudmlyb25t ZW50IHJlbGF0ZWQsIGJ1dCBvcmRlcmluZyBjb25zdHJ1Y3RvcnMgaXMgdHJpY2t5LiAgKi8KLSAg IHB0aHJlYWRfYXR0cl9pbml0ICgmZ29tcF90aHJlYWRfYXR0cik7Ci0tLS0gbGliZ29tcC9saWJn b21wLmguamoJMjAwNy0xMi0wNyAxNDo0MTowMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBsaWJnb21w L2xpYmdvbXAuaAkyMDA4LTAzLTI3IDEyOjIxOjUxLjAwMDAwMDAwMCArMDEwMAotQEAgLTUwLDYg KzUwLDcgQEAKLSAjaW5jbHVkZSAic2VtLmgiCi0gI2luY2x1ZGUgIm11dGV4LmgiCi0gI2luY2x1 ZGUgImJhci5oIgotKyNpbmNsdWRlICJwdHJsb2NrLmgiCi0gCi0gCi0gLyogVGhpcyBzdHJ1Y3R1 cmUgY29udGFpbnMgdGhlIGRhdGEgdG8gY29udHJvbCBvbmUgd29yay1zaGFyaW5nIGNvbnN0cnVj dCwKLUBAIC03MCw2ICs3MSw4IEBAIHN0cnVjdCBnb21wX3dvcmtfc2hhcmUKLSAgICAgIElmIHRo aXMgaXMgYSBTRUNUSU9OUyBjb25zdHJ1Y3QsIHRoaXMgdmFsdWUgd2lsbCBhbHdheXMgYmUgRFlO QU1JQy4gICovCi0gICBlbnVtIGdvbXBfc2NoZWR1bGVfdHlwZSBzY2hlZDsKLSAKLSsgIGludCBt b2RlOwotKwotICAgLyogVGhpcyBpcyB0aGUgY2h1bmtfc2l6ZSBhcmd1bWVudCB0byB0aGUgU0NI RURVTEUgY2xhdXNlLiAgKi8KLSAgIGxvbmcgY2h1bmtfc2l6ZTsKLSAKLUBAIC04MSwxNyArODQs MzggQEAgc3RydWN0IGdvbXBfd29ya19zaGFyZQotICAgICAgaXMgYWx3YXlzIDEuICAqLwotICAg bG9uZyBpbmNyOwotIAotLSAgLyogVGhpcyBsb2NrIHByb3RlY3RzIHRoZSB1cGRhdGUgb2YgdGhl IGZvbGxvd2luZyBtZW1iZXJzLiAgKi8KLS0gIGdvbXBfbXV0ZXhfdCBsb2NrOwotKyAgLyogVGhp cyBpcyBhIGNpcmN1bGFyIHF1ZXVlIHRoYXQgZGV0YWlscyB3aGljaCB0aHJlYWRzIHdpbGwgYmUg YWxsb3dlZAotKyAgICAgaW50byB0aGUgb3JkZXJlZCByZWdpb24gYW5kIGluIHdoaWNoIG9yZGVy LiAgV2hlbiBhIHRocmVhZCBhbGxvY2F0ZXMKLSsgICAgIGl0ZXJhdGlvbnMgb24gd2hpY2ggaXQg aXMgZ29pbmcgdG8gd29yaywgaXQgYWxzbyByZWdpc3RlcnMgaXRzZWxmIGF0Ci0rICAgICB0aGUg ZW5kIG9mIHRoZSBhcnJheS4gIFdoZW4gYSB0aHJlYWQgcmVhY2hlcyB0aGUgb3JkZXJlZCByZWdp b24sIGl0Ci0rICAgICBjaGVja3MgdG8gc2VlIGlmIGl0IGlzIHRoZSBvbmUgYXQgdGhlIGhlYWQg b2YgdGhlIHF1ZXVlLiAgSWYgbm90LCBpdAotKyAgICAgYmxvY2tzIG9uIGl0cyBSRUxFQVNFIHNl bWFwaG9yZS4gICovCi0rICB1bnNpZ25lZCAqb3JkZXJlZF90ZWFtX2lkczsKLSAKLS0gIHVuaW9u IHsKLS0gICAgLyogVGhpcyBpcyB0aGUgbmV4dCBpdGVyYXRpb24gdmFsdWUgdG8gYmUgYWxsb2Nh dGVkLiAgSW4gdGhlIGNhc2Ugb2YKLS0gICAgICAgR0ZTX1NUQVRJQyBsb29wcywgdGhpcyB0aGUg aXRlcmF0aW9uIHN0YXJ0IHBvaW50IGFuZCBuZXZlciBjaGFuZ2VzLiAgKi8KLS0gICAgbG9uZyBu ZXh0OwotKyAgLyogVGhpcyBpcyB0aGUgbnVtYmVyIG9mIHRocmVhZHMgdGhhdCBoYXZlIHJlZ2lz dGVyZWQgdGhlbXNlbHZlcyBpbgotKyAgICAgdGhlIGNpcmN1bGFyIHF1ZXVlIG9yZGVyZWRfdGVh bV9pZHMuICAqLwotKyAgdW5zaWduZWQgb3JkZXJlZF9udW1fdXNlZDsKLSAKLS0gICAgLyogVGhp cyBpcyB0aGUgcmV0dXJuZWQgZGF0YSBzdHJ1Y3R1cmUgZm9yIFNJTkdMRSBDT1BZUFJJVkFURS4g ICovCi0tICAgIHZvaWQgKmNvcHlwcml2YXRlOwotLSAgfTsKLSsgIC8qIFRoaXMgaXMgdGhlIHRl YW1faWQgb2YgdGhlIGN1cnJlbnRseSBhY2tub3dsZWRnZWQgb3duZXIgb2YgdGhlIG9yZGVyZWQK LSsgICAgIHNlY3Rpb24sIG9yIC0xdSBpZiB0aGUgb3JkZXJlZCBzZWN0aW9uIGhhcyBub3QgYmVl biBhY2tub3dsZWRnZWQgYnkKLSsgICAgIGFueSB0aHJlYWQuICBUaGlzIGlzIGRpc3Rpbmd1aXNo ZWQgZnJvbSB0aGUgdGhyZWFkIHRoYXQgaXMgKmFsbG93ZWQqCi0rICAgICB0byB0YWtlIHRoZSBz ZWN0aW9uIG5leHQuICAqLwotKyAgdW5zaWduZWQgb3JkZXJlZF9vd25lcjsKLSsKLSsgIC8qIFRo aXMgaXMgdGhlIGluZGV4IGludG8gdGhlIGNpcmN1bGFyIHF1ZXVlIG9yZGVyZWRfdGVhbV9pZHMg b2YgdGhlCi0rICAgICBjdXJyZW50IHRocmVhZCB0aGF0J3MgYWxsb3dlZCBpbnRvIHRoZSBvcmRl cmVkIHJlYXNvbi4gICovCi0rICB1bnNpZ25lZCBvcmRlcmVkX2N1cjsKLSsKLSsgIC8qIFRoaXMg aXMgYSBjaGFpbiBvZiBhbGxvY2F0ZWQgZ29tcF93b3JrX3NoYXJlIGJsb2NrcywgdmFsaWQgb25s eQotKyAgICAgaW4gdGhlIGZpcnN0IGdvbXBfd29ya19zaGFyZSBzdHJ1Y3QgaW4gdGhlIGJsb2Nr LiAgKi8KLSsgIHN0cnVjdCBnb21wX3dvcmtfc2hhcmUgKm5leHRfYWxsb2M7Ci0rCi0rICAvKiBU aGUgYWJvdmUgZmllbGRzIGFyZSB3cml0dGVuIG9uY2UgZHVyaW5nIHdvcmtzaGFyZSBpbml0aWFs aXphdGlvbiwKLSsgICAgIG9yIHJlbGF0ZWQgdG8gb3JkZXJlZCB3b3Jrc2hhcmluZy4gIE1ha2Ug c3VyZSB0aGUgZm9sbG93aW5nIGZpZWxkcwotKyAgICAgYXJlIGluIGEgZGlmZmVyZW50IGNhY2hl IGxpbmUuICAqLwotKwotKyAgLyogVGhpcyBsb2NrIHByb3RlY3RzIHRoZSB1cGRhdGUgb2YgdGhl IGZvbGxvd2luZyBtZW1iZXJzLiAgKi8KLSsgIGdvbXBfbXV0ZXhfdCBsb2NrIF9fYXR0cmlidXRl X18oKGFsaWduZWQgKDY0KSkpOwotIAotICAgLyogVGhpcyBpcyB0aGUgY291bnQgb2YgdGhlIG51 bWJlciBvZiB0aHJlYWRzIHRoYXQgaGF2ZSBleGl0ZWQgdGhlIHdvcmsKLSAgICAgIHNoYXJlIGNv bnN0cnVjdC4gIElmIHRoZSBjb25zdHJ1Y3Qgd2FzIG1hcmtlZCBub3dhaXQsIHRoZXkgaGF2ZSBt b3ZlZCBvbgotQEAgLTk5LDI3ICsxMjMsMjggQEAgc3RydWN0IGdvbXBfd29ya19zaGFyZQotICAg ICAgb2YgdGhlIHRlYW0gdG8gZXhpdCB0aGUgd29yayBzaGFyZSBjb25zdHJ1Y3QgbXVzdCBkZWFs bG9jYXRlIGl0LiAgKi8KLSAgIHVuc2lnbmVkIHRocmVhZHNfY29tcGxldGVkOwotIAotLSAgLyog VGhpcyBpcyB0aGUgaW5kZXggaW50byB0aGUgY2lyY3VsYXIgcXVldWUgb3JkZXJlZF90ZWFtX2lk cyBvZiB0aGUgCi0tICAgICBjdXJyZW50IHRocmVhZCB0aGF0J3MgYWxsb3dlZCBpbnRvIHRoZSBv cmRlcmVkIHJlYXNvbi4gICovCi0tICB1bnNpZ25lZCBvcmRlcmVkX2N1cjsKLSsgIHVuaW9uIHsK LSsgICAgLyogVGhpcyBpcyB0aGUgbmV4dCBpdGVyYXRpb24gdmFsdWUgdG8gYmUgYWxsb2NhdGVk LiAgSW4gdGhlIGNhc2Ugb2YKLSsgICAgICAgR0ZTX1NUQVRJQyBsb29wcywgdGhpcyB0aGUgaXRl cmF0aW9uIHN0YXJ0IHBvaW50IGFuZCBuZXZlciBjaGFuZ2VzLiAgKi8KLSsgICAgbG9uZyBuZXh0 OwotIAotLSAgLyogVGhpcyBpcyB0aGUgbnVtYmVyIG9mIHRocmVhZHMgdGhhdCBoYXZlIHJlZ2lz dGVyZWQgdGhlbXNlbHZlcyBpbgotLSAgICAgdGhlIGNpcmN1bGFyIHF1ZXVlIG9yZGVyZWRfdGVh bV9pZHMuICAqLwotLSAgdW5zaWduZWQgb3JkZXJlZF9udW1fdXNlZDsKLSsgICAgLyogVGhpcyBp cyB0aGUgcmV0dXJuZWQgZGF0YSBzdHJ1Y3R1cmUgZm9yIFNJTkdMRSBDT1BZUFJJVkFURS4gICov Ci0rICAgIHZvaWQgKmNvcHlwcml2YXRlOwotKyAgfTsKLSAKLS0gIC8qIFRoaXMgaXMgdGhlIHRl YW1faWQgb2YgdGhlIGN1cnJlbnRseSBhY2tub2xlZGdlZCBvd25lciBvZiB0aGUgb3JkZXJlZAot LSAgICAgc2VjdGlvbiwgb3IgLTF1IGlmIHRoZSBvcmRlcmVkIHNlY3Rpb24gaGFzIG5vdCBiZWVu IGFja25vd2xlZGdlZCBieQotLSAgICAgYW55IHRocmVhZC4gIFRoaXMgaXMgZGlzdGluZ3Vpc2hl ZCBmcm9tIHRoZSB0aHJlYWQgdGhhdCBpcyAqYWxsb3dlZCoKLS0gICAgIHRvIHRha2UgdGhlIHNl Y3Rpb24gbmV4dC4gICovCi0tICB1bnNpZ25lZCBvcmRlcmVkX293bmVyOwotKyAgdW5pb24gewot KyAgICAvKiBMaW5rIHRvIGdvbXBfd29ya19zaGFyZSBzdHJ1Y3QgZm9yIG5leHQgd29yayBzaGFy aW5nIGNvbnN0cnVjdAotKyAgICAgICBlbmNvdW50ZXJlZCBhZnRlciB0aGlzIG9uZS4gICovCi0r ICAgIGdvbXBfcHRybG9ja190IG5leHRfd3M7Ci0rCi0rICAgIC8qIGdvbXBfd29ya19zaGFyZSBz dHJ1Y3RzIGFyZSBjaGFpbmVkIGluIHRoZSBmcmVlIHdvcmsgc2hhcmUgY2FjaGUKLSsgICAgICAg dGhyb3VnaCB0aGlzLiAgKi8KLSsgICAgc3RydWN0IGdvbXBfd29ya19zaGFyZSAqbmV4dF9mcmVl OwotKyAgfTsKLSAKLS0gIC8qIFRoaXMgaXMgYSBjaXJjdWxhciBxdWV1ZSB0aGF0IGRldGFpbHMg d2hpY2ggdGhyZWFkcyB3aWxsIGJlIGFsbG93ZWQKLS0gICAgIGludG8gdGhlIG9yZGVyZWQgcmVn aW9uIGFuZCBpbiB3aGljaCBvcmRlci4gIFdoZW4gYSB0aHJlYWQgYWxsb2NhdGVzCi0tICAgICBp dGVyYXRpb25zIG9uIHdoaWNoIGl0IGlzIGdvaW5nIHRvIHdvcmssIGl0IGFsc28gcmVnaXN0ZXJz IGl0c2VsZiBhdAotLSAgICAgdGhlIGVuZCBvZiB0aGUgYXJyYXkuICBXaGVuIGEgdGhyZWFkIHJl YWNoZXMgdGhlIG9yZGVyZWQgcmVnaW9uLCBpdAotLSAgICAgY2hlY2tzIHRvIHNlZSBpZiBpdCBp cyB0aGUgb25lIGF0IHRoZSBoZWFkIG9mIHRoZSBxdWV1ZS4gIElmIG5vdCwgaXQKLS0gICAgIGJs b2NrcyBvbiBpdHMgUkVMRUFTRSBzZW1hcGhvcmUuICAqLwotLSAgdW5zaWduZWQgb3JkZXJlZF90 ZWFtX2lkc1tdOwotKyAgLyogSWYgb25seSBmZXcgdGhyZWFkcyBhcmUgaW4gdGhlIHRlYW0sIG9y ZGVyZWRfdGVhbV9pZHMgY2FuIHBvaW50Ci0rICAgICB0byB0aGlzIGFycmF5IHdoaWNoIGZpbGxz IHRoZSBwYWRkaW5nIGF0IHRoZSBlbmQgb2YgdGhpcyBzdHJ1Y3QuICAqLwotKyAgdW5zaWduZWQg aW5saW5lX29yZGVyZWRfdGVhbV9pZHNbMF07Ci0gfTsKLSAKLSAvKiBUaGlzIHN0cnVjdHVyZSBj b250YWlucyBhbGwgb2YgdGhlIHRocmVhZC1sb2NhbCBkYXRhIGFzc29jaWF0ZWQgd2l0aCAKLUBA IC0xMzMsMjEgKzE1OCwyNCBAQCBzdHJ1Y3QgZ29tcF90ZWFtX3N0YXRlCi0gCi0gICAvKiBUaGlz IGlzIHRoZSB3b3JrIHNoYXJlIGNvbnN0cnVjdCB3aGljaCB0aGlzIHRocmVhZCBpcyBjdXJyZW50 bHkKLSAgICAgIHByb2Nlc3NpbmcuICBSZWNhbGwgdGhhdCB3aXRoIE5PV0FJVCwgbm90IGFsbCB0 aHJlYWRzIG1heSBiZSAKLS0gICAgIHByb2Nlc3NpbmcgdGhlIHNhbWUgY29uc3RydWN0LiAgVGhp cyB2YWx1ZSBpcyBOVUxMIHdoZW4gdGhlcmUKLS0gICAgIGlzIG5vIGNvbnN0cnVjdCBiZWluZyBw cm9jZXNzZWQuICAqLwotKyAgICAgcHJvY2Vzc2luZyB0aGUgc2FtZSBjb25zdHJ1Y3QuICAqLwot ICAgc3RydWN0IGdvbXBfd29ya19zaGFyZSAqd29ya19zaGFyZTsKLSAKLSsgIC8qIFRoaXMgaXMg dGhlIHByZXZpb3VzIHdvcmsgc2hhcmUgY29uc3RydWN0IG9yIE5VTEwgaWYgdGhlcmUgd2Fzbid0 IGFueS4KLSsgICAgIFdoZW4gYWxsIHRocmVhZHMgYXJlIGRvbmUgd2l0aCB0aGUgY3VycmVudCB3 b3JrIHNoYXJpbmcgY29uc3RydWN0LAotKyAgICAgdGhlIHByZXZpb3VzIG9uZSBjYW4gYmUgZnJl ZWQuICBUaGUgY3VycmVudCBvbmUgY2FuJ3QsIGFzIGl0cwotKyAgICAgbmV4dF93cyBmaWVsZCBp cyB1c2VkLiAgKi8KLSsgIHN0cnVjdCBnb21wX3dvcmtfc2hhcmUgKmxhc3Rfd29ya19zaGFyZTsK LSsKLSAgIC8qIFRoaXMgaXMgdGhlIElEIG9mIHRoaXMgdGhyZWFkIHdpdGhpbiB0aGUgdGVhbS4g IFRoaXMgdmFsdWUgaXMKLSAgICAgIGd1YXJhbnRlZWQgdG8gYmUgYmV0d2VlbiAwIGFuZCBOLTEs IHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZgotICAgICAgdGhyZWFkcyBpbiB0aGUgdGVhbS4gICov Ci0gICB1bnNpZ25lZCB0ZWFtX2lkOwotIAotLSAgLyogVGhlIHdvcmsgc2hhcmUgImdlbmVyYXRp b24iIGlzIGEgbnVtYmVyIHRoYXQgaW5jcmVhc2VzIGJ5IG9uZSBmb3IKLS0gICAgIGVhY2ggd29y ayBzaGFyZSBjb25zdHJ1Y3QgZW5jb3VudGVyZWQgaW4gdGhlIGR5bmFtaWMgZmxvdyBvZiB0aGUK LS0gICAgIHByb2dyYW0uICBJdCBpcyB1c2VkIHRvIGZpbmQgdGhlIGNvbnRyb2wgZGF0YSBmb3Ig dGhlIHdvcmsgc2hhcmUKLS0gICAgIHdoZW4gZW5jb3VudGVyaW5nIGl0IGZvciB0aGUgZmlyc3Qg dGltZS4gIFRoaXMgcGFydGljdWxhciBudW1iZXIKLS0gICAgIHJlZmxlY3RzIHRoZSBnZW5lcmF0 aW9uIG9mIHRoZSB3b3JrX3NoYXJlIG1lbWJlciBvZiB0aGlzIHN0cnVjdC4gICovCi0tICB1bnNp Z25lZCB3b3JrX3NoYXJlX2dlbmVyYXRpb247Ci0rI2lmZGVmIEhBVkVfU1lOQ19CVUlMVElOUwot KyAgLyogTnVtYmVyIG9mIHNpbmdsZSBzdG10cyBlbmNvdW50ZXJlZC4gICovCi0rICB1bnNpZ25l ZCBsb25nIHNpbmdsZV9jb3VudDsKLSsjZW5kaWYKLSAKLSAgIC8qIEZvciBHRlNfUlVOVElNRSBs b29wcyB0aGF0IHJlc29sdmVkIHRvIEdGU19TVEFUSUMsIHRoaXMgaXMgdGhlCi0gICAgICB0cmlw IG51bWJlciB0aHJvdWdoIHRoZSBsb29wLiAgU28gZmlyc3QgdGltZSBhIHBhcnRpY3VsYXIgbG9v cAotQEAgLTE2Myw0MSArMTkxLDUzIEBAIHN0cnVjdCBnb21wX3RlYW1fc3RhdGUKLSAKLSBzdHJ1 Y3QgZ29tcF90ZWFtCi0gewotLSAgLyogVGhpcyBsb2NrIHByb3RlY3RzIGFjY2VzcyB0byB0aGUg Zm9sbG93aW5nIHdvcmsgc2hhcmVzIGRhdGEgc3RydWN0dXJlcy4gICovCi0tICBnb21wX211dGV4 X3Qgd29ya19zaGFyZV9sb2NrOwotLQotLSAgLyogVGhpcyBpcyBhIGR5bmFtaWNhbGx5IHNpemVk IGFycmF5IGNvbnRhaW5pbmcgcG9pbnRlcnMgdG8gdGhlIGNvbnRyb2wKLS0gICAgIHN0cnVjdHMg Zm9yIGFsbCAibGl2ZSIgd29yayBzaGFyZSBjb25zdHJ1Y3RzLiAgSGVyZSAibGl2ZSIgbWVhbnMg dGhhdAotLSAgICAgdGhlIGNvbnN0cnVjdCBoYXMgYmVlbiBlbmNvdW50ZXJlZCBieSBhdCBsZWFz dCBvbmUgdGhyZWFkLCBhbmQgbm90Ci0tICAgICBjb21wbGV0ZWQgYnkgYWxsIHRocmVhZHMuICAq LwotLSAgc3RydWN0IGdvbXBfd29ya19zaGFyZSAqKndvcmtfc2hhcmVzOwotLQotLSAgLyogVGhl IHdvcmtfc2hhcmVzIGFycmF5IGlzIGluZGV4ZWQgYnkgImdlbmVyYXRpb24gJiBnZW5lcmF0aW9u X21hc2siLgotLSAgICAgVGhlIG1hc2sgd2lsbCBiZSAyKipOIC0gMSwgd2hlcmUgMioqTiBpcyB0 aGUgc2l6ZSBvZiB0aGUgYXJyYXkuICAqLwotLSAgdW5zaWduZWQgZ2VuZXJhdGlvbl9tYXNrOwot LQotLSAgLyogVGhlc2UgdHdvIHZhbHVlcyBkZWZpbmUgdGhlIGJvdW5kcyBvZiB0aGUgZWxlbWVu dHMgb2YgdGhlIHdvcmtfc2hhcmVzCi0tICAgICBhcnJheSB0aGF0IGFyZSBjdXJyZW50bHkgaW4g dXNlLiAgKi8KLS0gIHVuc2lnbmVkIG9sZGVzdF9saXZlX2dlbjsKLS0gIHVuc2lnbmVkIG51bV9s aXZlX2dlbjsKLS0KLSAgIC8qIFRoaXMgaXMgdGhlIG51bWJlciBvZiB0aHJlYWRzIGluIHRoZSBj dXJyZW50IHRlYW0uICAqLwotICAgdW5zaWduZWQgbnRocmVhZHM7Ci0gCi0rICAvKiBUaGlzIGlz IG51bWJlciBvZiBnb21wX3dvcmtfc2hhcmUgc3RydWN0cyB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0 ZWQKLSsgICAgIGFzIGEgYmxvY2sgbGFzdCB0aW1lLiAgKi8KLSsgIHVuc2lnbmVkIHdvcmtfc2hh cmVfY2h1bms7Ci0rCi0gICAvKiBUaGlzIGlzIHRoZSBzYXZlZCB0ZWFtIHN0YXRlIHRoYXQgYXBw bGllZCB0byBhIG1hc3RlciB0aHJlYWQgYmVmb3JlCi0gICAgICB0aGUgY3VycmVudCB0aHJlYWQg d2FzIGNyZWF0ZWQuICAqLwotICAgc3RydWN0IGdvbXBfdGVhbV9zdGF0ZSBwcmV2X3RzOwotIAot LSAgLyogVGhpcyBiYXJyaWVyIGlzIHVzZWQgZm9yIG1vc3Qgc3luY2hyb25pemF0aW9uIG9mIHRo ZSB0ZWFtLiAgKi8KLS0gIGdvbXBfYmFycmllcl90IGJhcnJpZXI7Ci0tCi0gICAvKiBUaGlzIHNl bWFwaG9yZSBzaG91bGQgYmUgdXNlZCBieSB0aGUgbWFzdGVyIHRocmVhZCBpbnN0ZWFkIG9mIGl0 cwotICAgICAgIm5hdGl2ZSIgc2VtYXBob3JlIGluIHRoZSB0aHJlYWQgc3RydWN0dXJlLiAgUmVx dWlyZWQgZm9yIG5lc3RlZAotICAgICAgcGFyYWxsZWxzLCBhcyB0aGUgbWFzdGVyIGlzIGEgbWVt YmVyIG9mIHR3byB0ZWFtcy4gICovCi0gICBnb21wX3NlbV90IG1hc3Rlcl9yZWxlYXNlOwotIAot LSAgLyogVGhpcyBhcnJheSBjb250YWlucyBwb2ludGVycyB0byB0aGUgcmVsZWFzZSBzZW1hcGhv cmUgb2YgdGhlIHRocmVhZHMKLS0gICAgIGluIHRoZSB0ZWFtLiAgKi8KLSsgIC8qIExpc3Qgb2Yg Z29tcF93b3JrX3NoYXJlIHN0cnVjdHMgY2hhaW5lZCB0aHJvdWdoIG5leHRfZnJlZSBmaWVsZHMu Ci0rICAgICBUaGlzIGlzIHBvcHVsYXRlZCBhbmQgdGFrZW4gb2ZmIG9ubHkgYnkgdGhlIGZpcnN0 IHRocmVhZCBpbiB0aGUKLSsgICAgIHRlYW0gZW5jb3VudGVyaW5nIGEgbmV3IHdvcmsgc2hhcmlu ZyBjb25zdHJ1Y3QsIGluIGEgY3JpdGljYWwKLSsgICAgIHNlY3Rpb24uICAqLwotKyAgc3RydWN0 IGdvbXBfd29ya19zaGFyZSAqd29ya19zaGFyZV9saXN0X2FsbG9jOwotKwotKyAgLyogTGlzdCBv ZiBnb21wX3dvcmtfc2hhcmUgc3RydWN0cyBmcmVlZCBieSBmcmVlX3dvcmtfc2hhcmUuICBOZXcK LSsgICAgIGVudHJpZXMgYXJlIGF0b21pY2FsbHkgYWRkZWQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBs aXN0LCBhbmQKLSsgICAgIGFsbG9jX3dvcmtfc2hhcmUgY2FuIHNhZmVseSBvbmx5IG1vdmUgYWxs IGJ1dCB0aGUgZmlyc3QgZW50cnkKLSsgICAgIHRvIHdvcmtfc2hhcmVfbGlzdCBhbGxvYywgYXMg ZnJlZV93b3JrX3NoYXJlIGNhbiBoYXBwZW4gY29uY3VycmVudGx5Ci0rICAgICB3aXRoIGFsbG9j X3dvcmtfc2hhcmUuICAqLwotKyAgc3RydWN0IGdvbXBfd29ya19zaGFyZSAqd29ya19zaGFyZV9s aXN0X2ZyZWU7Ci0rCi0rI2lmZGVmIEhBVkVfU1lOQ19CVUlMVElOUwotKyAgLyogTnVtYmVyIG9m IHNpbXBsZSBzaW5nbGUgcmVnaW9ucyBlbmNvdW50ZXJlZCBieSB0aHJlYWRzIGluIHRoaXMKLSsg ICAgIHRlYW0uICAqLwotKyAgdW5zaWduZWQgbG9uZyBzaW5nbGVfY291bnQ7Ci0rI2Vsc2UKLSsg IC8qIE11dGV4IHByb3RlY3RpbmcgYWRkaXRpb24gb2Ygd29ya3NoYXJlcyB0byB3b3JrX3NoYXJl X2xpc3RfZnJlZS4gICovCi0rICBnb21wX211dGV4X3Qgd29ya19zaGFyZV9saXN0X2ZyZWVfbG9j azsKLSsjZW5kaWYKLSsKLSsgIC8qIFRoaXMgYmFycmllciBpcyB1c2VkIGZvciBtb3N0IHN5bmNo cm9uaXphdGlvbiBvZiB0aGUgdGVhbS4gICovCi0rICBnb21wX2JhcnJpZXJfdCBiYXJyaWVyOwot KwotKyAgLyogSW5pdGlhbCB3b3JrIHNoYXJlcywgdG8gYXZvaWQgYWxsb2NhdGluZyBhbnkgZ29t cF93b3JrX3NoYXJlCi0rICAgICBzdHJ1Y3RzIGluIHRoZSBjb21tb24gY2FzZS4gICovCi0rICBz dHJ1Y3QgZ29tcF93b3JrX3NoYXJlIHdvcmtfc2hhcmVzWzhdOwotKwotKyAgLyogVGhpcyBpcyBh biBhcnJheSB3aXRoIHBvaW50ZXJzIHRvIHRoZSByZWxlYXNlIHNlbWFwaG9yZQotKyAgICAgb2Yg dGhlIHRocmVhZHMgaW4gdGhlIHRlYW0uICAqLwotICAgZ29tcF9zZW1fdCAqb3JkZXJlZF9yZWxl YXNlW107Ci0gfTsKLSAKLUBAIC0yNDIsNiArMjgyLDExIEBAIGV4dGVybiBib29sIGdvbXBfZHlu X3ZhcjsKLSBleHRlcm4gYm9vbCBnb21wX25lc3RfdmFyOwotIGV4dGVybiBlbnVtIGdvbXBfc2No ZWR1bGVfdHlwZSBnb21wX3J1bl9zY2hlZF92YXI7Ci0gZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZ29t cF9ydW5fc2NoZWRfY2h1bms7Ci0rI2lmbmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKLStleHRlcm4g Z29tcF9tdXRleF90IGdvbXBfcmVtYWluaW5nX3RocmVhZHNfbG9jazsKLSsjZW5kaWYKLStleHRl cm4gdW5zaWduZWQgbG9uZyBsb25nIGdvbXBfc3Bpbl9jb3VudF92YXIsIGdvbXBfdGhyb3R0bGVk X3NwaW5fY291bnRfdmFyOwotK2V4dGVybiB1bnNpZ25lZCBsb25nIGdvbXBfYXZhaWxhYmxlX2Nw dXMsIGdvbXBfbWFuYWdlZF90aHJlYWRzOwotIAotIC8qIFRoZSBhdHRyaWJ1dGVzIHRvIGJlIHVz ZWQgZHVyaW5nIHRocmVhZCBjcmVhdGlvbi4gICovCi0gZXh0ZXJuIHB0aHJlYWRfYXR0cl90IGdv bXBfdGhyZWFkX2F0dHI7Ci1AQCAtMzA2LDE3ICszNTEsMjcgQEAgZXh0ZXJuIHVuc2lnbmVkIGdv bXBfZHluYW1pY19tYXhfdGhyZWFkcwotIAotIC8qIHRlYW0uYyAqLwotIAotK2V4dGVybiBzdHJ1 Y3QgZ29tcF90ZWFtICpnb21wX25ld190ZWFtICh1bnNpZ25lZCk7Ci0gZXh0ZXJuIHZvaWQgZ29t cF90ZWFtX3N0YXJ0ICh2b2lkICgqKSAodm9pZCAqKSwgdm9pZCAqLCB1bnNpZ25lZCwKLS0JCQkg ICAgIHN0cnVjdCBnb21wX3dvcmtfc2hhcmUgKik7Ci0rCQkJICAgICBzdHJ1Y3QgZ29tcF90ZWFt ICopOwotIGV4dGVybiB2b2lkIGdvbXBfdGVhbV9lbmQgKHZvaWQpOwotIAotIC8qIHdvcmsuYyAq LwotIAotLWV4dGVybiBzdHJ1Y3QgZ29tcF93b3JrX3NoYXJlICogZ29tcF9uZXdfd29ya19zaGFy ZSAoYm9vbCwgdW5zaWduZWQpOwotK2V4dGVybiB2b2lkIGdvbXBfaW5pdF93b3JrX3NoYXJlIChz dHJ1Y3QgZ29tcF93b3JrX3NoYXJlICosIGJvb2wsIHVuc2lnbmVkKTsKLStleHRlcm4gdm9pZCBn b21wX2Zpbmlfd29ya19zaGFyZSAoc3RydWN0IGdvbXBfd29ya19zaGFyZSAqKTsKLSBleHRlcm4g Ym9vbCBnb21wX3dvcmtfc2hhcmVfc3RhcnQgKGJvb2wpOwotIGV4dGVybiB2b2lkIGdvbXBfd29y a19zaGFyZV9lbmQgKHZvaWQpOwotIGV4dGVybiB2b2lkIGdvbXBfd29ya19zaGFyZV9lbmRfbm93 YWl0ICh2b2lkKTsKLSAKLStzdGF0aWMgaW5saW5lIHZvaWQKLStnb21wX3dvcmtfc2hhcmVfaW5p dF9kb25lICh2b2lkKQotK3sKLSsgIHN0cnVjdCBnb21wX3RocmVhZCAqdGhyID0gZ29tcF90aHJl YWQgKCk7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAodGhyLT50cy5sYXN0X3dvcmtfc2hhcmUg IT0gTlVMTCwgMSkpCi0rICAgIGdvbXBfcHRybG9ja19zZXQgKCZ0aHItPnRzLmxhc3Rfd29ya19z aGFyZS0+bmV4dF93cywgdGhyLT50cy53b3JrX3NoYXJlKTsKLSt9Ci0rCi0gI2lmZGVmIEhBVkVf QVRUUklCVVRFX1ZJU0lCSUxJVFkKLSAjIHByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwb3AKLSAjZW5k aWYKLS0tLSBsaWJnb21wL2l0ZXIuYy5qagkyMDA4LTAzLTI2IDE0OjQ4OjM0LjAwMDAwMDAwMCAr MDEwMAotKysrIGxpYmdvbXAvaXRlci5jCTIwMDgtMDMtMjYgMTU6MTE6MjMuMDAwMDAwMDAwICsw MTAwCi1AQCAtMSw0ICsxLDQgQEAKLS0vKiBDb3B5cmlnaHQgKEMpIDIwMDUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA4IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICAgIENvbnRyaWJ1dGVkIGJ5IFJpY2hhcmQgSGVuZGVy c29uIDxydGhAcmVkaGF0LmNvbT4uCi0gCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBPcGVuTVAgTGlicmFyeSAobGliZ29tcCkuCi1AQCAtMTU0LDcgKzE1NCw3IEBAIGdvbXBfaXRl cl9keW5hbWljX25leHRfbG9ja2VkIChsb25nICpwc3QKLSAgIGlmIChzdGFydCA9PSB3cy0+ZW5k KQotICAgICByZXR1cm4gZmFsc2U7Ci0gCi0tICBjaHVuayA9IHdzLT5jaHVua19zaXplICogd3Mt PmluY3I7Ci0rICBjaHVuayA9IHdzLT5jaHVua19zaXplOwotICAgbGVmdCA9IHdzLT5lbmQgLSBz dGFydDsKLSAgIGlmICh3cy0+aW5jciA8IDApCi0gICAgIHsKLUBAIC0xODYsMTEgKzE4NiwzOCBA QCBnb21wX2l0ZXJfZHluYW1pY19uZXh0IChsb25nICpwc3RhcnQsIGxvCi0gICBzdHJ1Y3QgZ29t cF93b3JrX3NoYXJlICp3cyA9IHRoci0+dHMud29ya19zaGFyZTsKLSAgIGxvbmcgc3RhcnQsIGVu ZCwgbmVuZCwgY2h1bmssIGluY3I7Ci0gCi0tICBzdGFydCA9IHdzLT5uZXh0OwotICAgZW5kID0g d3MtPmVuZDsKLSAgIGluY3IgPSB3cy0+aW5jcjsKLS0gIGNodW5rID0gd3MtPmNodW5rX3NpemUg KiBpbmNyOwotKyAgY2h1bmsgPSB3cy0+Y2h1bmtfc2l6ZTsKLSsKLSsgIGlmIChfX2J1aWx0aW5f ZXhwZWN0ICh3cy0+bW9kZSwgMSkpCi0rICAgIHsKLSsgICAgICBsb25nIHRtcCA9IF9fc3luY19m ZXRjaF9hbmRfYWRkICgmd3MtPm5leHQsIGNodW5rKTsKLSsgICAgICBpZiAoaW5jciA+IDApCi0r CXsKLSsJICBpZiAodG1wID49IGVuZCkKLSsJICAgIHJldHVybiBmYWxzZTsKLSsJICBuZW5kID0g dG1wICsgY2h1bms7Ci0rCSAgaWYgKG5lbmQgPiBlbmQpCi0rCSAgICBuZW5kID0gZW5kOwotKwkg ICpwc3RhcnQgPSB0bXA7Ci0rCSAgKnBlbmQgPSBuZW5kOwotKwkgIHJldHVybiB0cnVlOwotKwl9 Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgaWYgKHRtcCA8PSBlbmQpCi0rCSAgICByZXR1cm4gZmFs c2U7Ci0rCSAgbmVuZCA9IHRtcCArIGNodW5rOwotKwkgIGlmIChuZW5kIDwgZW5kKQotKwkgICAg bmVuZCA9IGVuZDsKLSsJICAqcHN0YXJ0ID0gdG1wOwotKwkgICpwZW5kID0gbmVuZDsKLSsJICBy ZXR1cm4gdHJ1ZTsKLSsJfQotKyAgICB9Ci0gCi0rICBzdGFydCA9IHdzLT5uZXh0OwotICAgd2hp bGUgKDEpCi0gICAgIHsKLSAgICAgICBsb25nIGxlZnQgPSBlbmQgLSBzdGFydDsKLS0tLSBsaWJn b21wL3dvcmsuYy5qagkyMDA3LTEyLTA3IDE0OjQxOjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGxp YmdvbXAvd29yay5jCTIwMDgtMDMtMjcgMTI6MjE6NTEuMDAwMDAwMDAwICswMTAwCi1AQCAtMSw0 ICsxLDQgQEAKLS0vKiBDb3B5cmlnaHQgKEMpIDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotICAgIENvbnRyaWJ1dGVkIGJ5IFJpY2hhcmQgSGVuZGVyc29uIDxydGhAcmVk aGF0LmNvbT4uCi0gCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBPcGVuTVAgTGli cmFyeSAobGliZ29tcCkuCi1AQCAtMjksMzkgKzI5LDEzOCBAQAotICAgIG9mIHRocmVhZHMuICAq LwotIAotICNpbmNsdWRlICJsaWJnb21wLmgiCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotICNpbmNs dWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0gCi0tLyogQ3JlYXRlIGEg bmV3IHdvcmsgc2hhcmUgc3RydWN0dXJlLiAgKi8KLSsvKiBBbGxvY2F0ZSBhIG5ldyB3b3JrIHNo YXJlIHN0cnVjdHVyZSwgcHJlZmVyYWJseSBmcm9tIGN1cnJlbnQgdGVhbSdzCi0rICAgZnJlZSBn b21wX3dvcmtfc2hhcmUgY2FjaGUuICAqLwotIAotLXN0cnVjdCBnb21wX3dvcmtfc2hhcmUgKgot LWdvbXBfbmV3X3dvcmtfc2hhcmUgKGJvb2wgb3JkZXJlZCwgdW5zaWduZWQgbnRocmVhZHMpCi0r c3RhdGljIHN0cnVjdCBnb21wX3dvcmtfc2hhcmUgKgotK2FsbG9jX3dvcmtfc2hhcmUgKHN0cnVj dCBnb21wX3RlYW0gKnRlYW0pCi0gewotICAgc3RydWN0IGdvbXBfd29ya19zaGFyZSAqd3M7Ci0t ICBzaXplX3Qgc2l6ZTsKLSsgIHVuc2lnbmVkIGludCBpOwotIAotLSAgc2l6ZSA9IHNpemVvZiAo KndzKTsKLS0gIGlmIChvcmRlcmVkKQotLSAgICBzaXplICs9IG50aHJlYWRzICogc2l6ZW9mICh3 cy0+b3JkZXJlZF90ZWFtX2lkc1swXSk7Ci0rICAvKiBUaGlzIGlzIGNhbGxlZCBpbiBhIGNyaXRp Y2FsIHNlY3Rpb24uICAqLwotKyAgaWYgKHRlYW0tPndvcmtfc2hhcmVfbGlzdF9hbGxvYyAhPSBO VUxMKQotKyAgICB7Ci0rICAgICAgd3MgPSB0ZWFtLT53b3JrX3NoYXJlX2xpc3RfYWxsb2M7Ci0r ICAgICAgdGVhbS0+d29ya19zaGFyZV9saXN0X2FsbG9jID0gd3MtPm5leHRfZnJlZTsKLSsgICAg ICByZXR1cm4gd3M7Ci0rICAgIH0KLSAKLS0gIHdzID0gZ29tcF9tYWxsb2NfY2xlYXJlZCAoc2l6 ZSk7Ci0tICBnb21wX211dGV4X2luaXQgKCZ3cy0+bG9jayk7Ci0tICB3cy0+b3JkZXJlZF9vd25l ciA9IC0xOwotKyNpZmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKLSsgIHdzID0gdGVhbS0+d29ya19z aGFyZV9saXN0X2ZyZWU7Ci0rICAvKiBXZSBuZWVkIGF0b21pYyByZWFkIGZyb20gd29ya19zaGFy ZV9saXN0X2ZyZWUsCi0rICAgICBhcyBmcmVlX3dvcmtfc2hhcmUgY2FuIGJlIGNhbGxlZCBjb25j dXJyZW50bHkuICAqLwotKyAgX19hc20gKCIiIDogIityIiAod3MpKTsKLSsKLSsgIGlmICh3cyAm JiB3cy0+bmV4dF9mcmVlKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGdvbXBfd29ya19zaGFyZSAq bmV4dCA9IHdzLT5uZXh0X2ZyZWU7Ci0rICAgICAgd3MtPm5leHRfZnJlZSA9IE5VTEw7Ci0rICAg ICAgdGVhbS0+d29ya19zaGFyZV9saXN0X2FsbG9jID0gbmV4dC0+bmV4dF9mcmVlOwotKyAgICAg IHJldHVybiBuZXh0OwotKyAgICB9Ci0rI2Vsc2UKLSsgIGdvbXBfbXV0ZXhfbG9jayAoJnRlYW0t Pndvcmtfc2hhcmVfbGlzdF9mcmVlX2xvY2spOwotKyAgd3MgPSB0ZWFtLT53b3JrX3NoYXJlX2xp c3RfZnJlZTsKLSsgIGlmICh3cykKLSsgICAgewotKyAgICAgIHRlYW0tPndvcmtfc2hhcmVfbGlz dF9hbGxvYyA9IHdzLT5uZXh0X2ZyZWU7Ci0rICAgICAgdGVhbS0+d29ya19zaGFyZV9saXN0X2Zy ZWUgPSBOVUxMOwotKyAgICAgIGdvbXBfbXV0ZXhfdW5sb2NrICgmdGVhbS0+d29ya19zaGFyZV9s aXN0X2ZyZWVfbG9jayk7Ci0rICAgICAgcmV0dXJuIHdzOwotKyAgICB9Ci0rICBnb21wX211dGV4 X3VubG9jayAoJnRlYW0tPndvcmtfc2hhcmVfbGlzdF9mcmVlX2xvY2spOwotKyNlbmRpZgotIAot KyAgdGVhbS0+d29ya19zaGFyZV9jaHVuayAqPSAyOwotKyAgd3MgPSBnb21wX21hbGxvYyAodGVh bS0+d29ya19zaGFyZV9jaHVuayAqIHNpemVvZiAoc3RydWN0IGdvbXBfd29ya19zaGFyZSkpOwot KyAgd3MtPm5leHRfYWxsb2MgPSB0ZWFtLT53b3JrX3NoYXJlc1swXS5uZXh0X2FsbG9jOwotKyAg dGVhbS0+d29ya19zaGFyZXNbMF0ubmV4dF9hbGxvYyA9IHdzOwotKyAgdGVhbS0+d29ya19zaGFy ZV9saXN0X2FsbG9jID0gJndzWzFdOwotKyAgZm9yIChpID0gMTsgaSA8IHRlYW0tPndvcmtfc2hh cmVfY2h1bmsgLSAxOyBpKyspCi0rICAgIHdzW2ldLm5leHRfZnJlZSA9ICZ3c1tpICsgMV07Ci0r ICB3c1tpXS5uZXh0X2ZyZWUgPSBOVUxMOwotICAgcmV0dXJuIHdzOwotIH0KLSAKLSsvKiBJbml0 aWFsaXplIGFuIGFscmVhZHkgYWxsb2NhdGVkIHN0cnVjdCBnb21wX3dvcmtfc2hhcmUuCi0rICAg VGhpcyBzaG91bGRuJ3QgdG91Y2ggdGhlIG5leHRfYWxsb2MgZmllbGQuICAqLwotKwotK3ZvaWQK LStnb21wX2luaXRfd29ya19zaGFyZSAoc3RydWN0IGdvbXBfd29ya19zaGFyZSAqd3MsIGJvb2wg b3JkZXJlZCwKLSsJCSAgICAgIHVuc2lnbmVkIG50aHJlYWRzKQotK3sKLSsgIGdvbXBfbXV0ZXhf aW5pdCAoJndzLT5sb2NrKTsKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChvcmRlcmVkLCAwKSkK LSsgICAgewotKyNkZWZpbmUgSU5MSU5FX09SREVSRURfVEVBTV9JRFNfQ05UIFwKLSsgICgoc2l6 ZW9mIChzdHJ1Y3QgZ29tcF93b3JrX3NoYXJlKSBcCi0rICAgIC0gb2Zmc2V0b2YgKHN0cnVjdCBn b21wX3dvcmtfc2hhcmUsIGlubGluZV9vcmRlcmVkX3RlYW1faWRzKSkgXAotKyAgIC8gc2l6ZW9m ICgoKHN0cnVjdCBnb21wX3dvcmtfc2hhcmUgKikgMCktPmlubGluZV9vcmRlcmVkX3RlYW1faWRz WzBdKSkKLSsKLSsgICAgICBpZiAobnRocmVhZHMgPiBJTkxJTkVfT1JERVJFRF9URUFNX0lEU19D TlQpCi0rCXdzLT5vcmRlcmVkX3RlYW1faWRzCi0rCSAgPSBnb21wX21hbGxvYyAobnRocmVhZHMg KiBzaXplb2YgKCp3cy0+b3JkZXJlZF90ZWFtX2lkcykpOwotKyAgICAgIGVsc2UKLSsJd3MtPm9y ZGVyZWRfdGVhbV9pZHMgPSB3cy0+aW5saW5lX29yZGVyZWRfdGVhbV9pZHM7Ci0rICAgICAgbWVt c2V0ICh3cy0+b3JkZXJlZF90ZWFtX2lkcywgJ1wwJywKLSsJICAgICAgbnRocmVhZHMgKiBzaXpl b2YgKCp3cy0+b3JkZXJlZF90ZWFtX2lkcykpOwotKyAgICAgIHdzLT5vcmRlcmVkX251bV91c2Vk ID0gMDsKLSsgICAgICB3cy0+b3JkZXJlZF9vd25lciA9IC0xOwotKyAgICAgIHdzLT5vcmRlcmVk X2N1ciA9IDA7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgd3MtPm9yZGVyZWRfdGVhbV9pZHMgPSBO VUxMOwotKyAgZ29tcF9wdHJsb2NrX2luaXQgKCZ3cy0+bmV4dF93cywgTlVMTCk7Ci0rICB3cy0+ dGhyZWFkc19jb21wbGV0ZWQgPSAwOwotK30KLSAKLS0vKiBGcmVlIGEgd29yayBzaGFyZSBzdHJ1 Y3R1cmUuICAqLwotKy8qIERvIGFueSBuZWVkZWQgZGVzdHJ1Y3Rpb24gb2YgZ29tcF93b3JrX3No YXJlIGZpZWxkcyBiZWZvcmUgaXQKLSsgICBpcyBwdXQgYmFjayBpbnRvIGZyZWUgZ29tcF93b3Jr X3NoYXJlIGNhY2hlIG9yIGZyZWVkLiAgKi8KLSAKLS1zdGF0aWMgdm9pZAotLWZyZWVfd29ya19z aGFyZSAoc3RydWN0IGdvbXBfd29ya19zaGFyZSAqd3MpCi0rdm9pZAotK2dvbXBfZmluaV93b3Jr X3NoYXJlIChzdHJ1Y3QgZ29tcF93b3JrX3NoYXJlICp3cykKLSB7Ci0gICBnb21wX211dGV4X2Rl c3Ryb3kgKCZ3cy0+bG9jayk7Ci0tICBmcmVlICh3cyk7Ci0rICBpZiAod3MtPm9yZGVyZWRfdGVh bV9pZHMgIT0gd3MtPmlubGluZV9vcmRlcmVkX3RlYW1faWRzKQotKyAgICBmcmVlICh3cy0+b3Jk ZXJlZF90ZWFtX2lkcyk7Ci0rICBnb21wX3B0cmxvY2tfZGVzdHJveSAoJndzLT5uZXh0X3dzKTsK LSB9Ci0gCi0rLyogRnJlZSBhIHdvcmsgc2hhcmUgc3RydWN0LCBpZiBub3Qgb3JwaGFuZWQsIHB1 dCBpdCBpbnRvIGN1cnJlbnQKLSsgICB0ZWFtJ3MgZnJlZSBnb21wX3dvcmtfc2hhcmUgY2FjaGUu ICAqLwotKwotK3N0YXRpYyBpbmxpbmUgdm9pZAotK2ZyZWVfd29ya19zaGFyZSAoc3RydWN0IGdv bXBfdGVhbSAqdGVhbSwgc3RydWN0IGdvbXBfd29ya19zaGFyZSAqd3MpCi0rewotKyAgZ29tcF9m aW5pX3dvcmtfc2hhcmUgKHdzKTsKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICh0ZWFtID09IE5V TEwsIDApKQotKyAgICBmcmVlICh3cyk7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBzdHJ1Y3Qg Z29tcF93b3JrX3NoYXJlICpuZXh0X3dzOwotKyNpZmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKLSsg ICAgICBkbwotKwl7Ci0rCSAgbmV4dF93cyA9IHRlYW0tPndvcmtfc2hhcmVfbGlzdF9mcmVlOwot KwkgIHdzLT5uZXh0X2ZyZWUgPSBuZXh0X3dzOwotKwl9Ci0rICAgICAgd2hpbGUgKCFfX3N5bmNf Ym9vbF9jb21wYXJlX2FuZF9zd2FwICgmdGVhbS0+d29ya19zaGFyZV9saXN0X2ZyZWUsCi0rCQkJ CQkgICAgbmV4dF93cywgd3MpKTsKLSsjZWxzZQotKyAgICAgIGdvbXBfbXV0ZXhfbG9jayAoJnRl YW0tPndvcmtfc2hhcmVfbGlzdF9mcmVlX2xvY2spOwotKyAgICAgIG5leHRfd3MgPSB0ZWFtLT53 b3JrX3NoYXJlX2xpc3RfZnJlZTsKLSsgICAgICB3cy0+bmV4dF9mcmVlID0gbmV4dF93czsKLSsg ICAgICB0ZWFtLT53b3JrX3NoYXJlX2xpc3RfZnJlZSA9IHdzOwotKyAgICAgIGdvbXBfbXV0ZXhf dW5sb2NrICgmdGVhbS0+d29ya19zaGFyZV9saXN0X2ZyZWVfbG9jayk7Ci0rI2VuZGlmCi0rICAg IH0KLSt9Ci0gCi0gLyogVGhlIGN1cnJlbnQgdGhyZWFkIGlzIHJlYWR5IHRvIGJlZ2luIHRoZSBu ZXh0IHdvcmsgc2hhcmluZyBjb25zdHJ1Y3QuCi0gICAgSW4gYWxsIGNhc2VzLCB0aHItPnRzLndv cmtfc2hhcmUgaXMgdXBkYXRlZCB0byBwb2ludCB0byB0aGUgbmV3Ci1AQCAtNzQsNzEgKzE3Mywz NCBAQCBnb21wX3dvcmtfc2hhcmVfc3RhcnQgKGJvb2wgb3JkZXJlZCkKLSAgIHN0cnVjdCBnb21w X3RocmVhZCAqdGhyID0gZ29tcF90aHJlYWQgKCk7Ci0gICBzdHJ1Y3QgZ29tcF90ZWFtICp0ZWFt ID0gdGhyLT50cy50ZWFtOwotICAgc3RydWN0IGdvbXBfd29ya19zaGFyZSAqd3M7Ci0tICB1bnNp Z25lZCB3c19pbmRleCwgd3NfZ2VuOwotIAotICAgLyogV29yayBzaGFyaW5nIGNvbnN0cnVjdHMg Y2FuIGJlIG9ycGhhbmVkLiAgKi8KLSAgIGlmICh0ZWFtID09IE5VTEwpCi0gICAgIHsKLS0gICAg ICB3cyA9IGdvbXBfbmV3X3dvcmtfc2hhcmUgKG9yZGVyZWQsIDEpOwotKyAgICAgIHdzID0gZ29t cF9tYWxsb2MgKHNpemVvZiAoKndzKSk7Ci0rICAgICAgZ29tcF9pbml0X3dvcmtfc2hhcmUgKHdz LCBvcmRlcmVkLCAxKTsKLSAgICAgICB0aHItPnRzLndvcmtfc2hhcmUgPSB3czsKLS0gICAgICB0 aHItPnRzLnN0YXRpY190cmlwID0gMDsKLS0gICAgICBnb21wX211dGV4X2xvY2sgKCZ3cy0+bG9j ayk7Ci0tICAgICAgcmV0dXJuIHRydWU7Ci0rICAgICAgcmV0dXJuIHdzOwotICAgICB9Ci0gCi0t ICBnb21wX211dGV4X2xvY2sgKCZ0ZWFtLT53b3JrX3NoYXJlX2xvY2spOwotLQotLSAgLyogVGhp cyB0aHJlYWQgaXMgYmVnaW5uaW5nIGl0cyBuZXh0IGdlbmVyYXRpb24uICAqLwotLSAgd3NfZ2Vu ID0gKyt0aHItPnRzLndvcmtfc2hhcmVfZ2VuZXJhdGlvbjsKLS0KLS0gIC8qIElmIHRoaXMgbmV4 dCBnZW5lcmF0aW9uIGlzIG5vdCBuZXdlciB0aGFuIGFueSBvdGhlciBnZW5lcmF0aW9uIGluCi0t ICAgICB0aGUgdGVhbSwgdGhlbiBzaW1wbHkgcmVmZXJlbmNlIHRoZSBleGlzdGluZyBjb25zdHJ1 Y3QuICAqLwotLSAgaWYgKHdzX2dlbiAtIHRlYW0tPm9sZGVzdF9saXZlX2dlbiA8IHRlYW0tPm51 bV9saXZlX2dlbikKLSsgIHdzID0gdGhyLT50cy53b3JrX3NoYXJlOwotKyAgdGhyLT50cy5sYXN0 X3dvcmtfc2hhcmUgPSB3czsKLSsgIHdzID0gZ29tcF9wdHJsb2NrX2dldCAoJndzLT5uZXh0X3dz KTsKLSsgIGlmICh3cyA9PSBOVUxMKQotICAgICB7Ci0tICAgICAgd3NfaW5kZXggPSB3c19nZW4g JiB0ZWFtLT5nZW5lcmF0aW9uX21hc2s7Ci0tICAgICAgd3MgPSB0ZWFtLT53b3JrX3NoYXJlc1t3 c19pbmRleF07Ci0rICAgICAgLyogVGhpcyB0aHJlYWQgZW5jb3VudGVyZWQgYSBuZXcgd3MgZmly c3QuICAqLwotKyAgICAgIHN0cnVjdCBnb21wX3dvcmtfc2hhcmUgKndzID0gYWxsb2Nfd29ya19z aGFyZSAodGVhbSk7Ci0rICAgICAgZ29tcF9pbml0X3dvcmtfc2hhcmUgKHdzLCBvcmRlcmVkLCB0 ZWFtLT5udGhyZWFkcyk7Ci0gICAgICAgdGhyLT50cy53b3JrX3NoYXJlID0gd3M7Ci0tICAgICAg dGhyLT50cy5zdGF0aWNfdHJpcCA9IDA7Ci0tCi0tICAgICAgZ29tcF9tdXRleF9sb2NrICgmd3Mt PmxvY2spOwotLSAgICAgIGdvbXBfbXV0ZXhfdW5sb2NrICgmdGVhbS0+d29ya19zaGFyZV9sb2Nr KTsKLS0KLS0gICAgICByZXR1cm4gZmFsc2U7Ci0rICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIH0K LS0KLS0gIC8qIFJlc2l6ZSB0aGUgd29yayBzaGFyZXMgcXVldWUgaWYgd2UndmUgcnVuIG91dCBv ZiBzcGFjZS4gICovCi0tICBpZiAodGVhbS0+bnVtX2xpdmVfZ2VuKysgPT0gdGVhbS0+Z2VuZXJh dGlvbl9tYXNrKQotKyAgZWxzZQotICAgICB7Ci0tICAgICAgdGVhbS0+d29ya19zaGFyZXMgPSBn b21wX3JlYWxsb2MgKHRlYW0tPndvcmtfc2hhcmVzLAotLQkJCQkJMiAqIHRlYW0tPm51bV9saXZl X2dlbgotLQkJCQkJKiBzaXplb2YgKCp0ZWFtLT53b3JrX3NoYXJlcykpOwotLQotLSAgICAgIC8q IFVubGVzcyBvbGRlc3RfbGl2ZV9nZW4gaXMgemVybywgdGhlIHNlcXVlbmNlIG9mIGxpdmUgZWxl bWVudHMKLS0JIHdyYXBzIGFyb3VuZCB0aGUgZW5kIG9mIHRoZSBhcnJheS4gIElmIHdlIGRvIG5v dGhpbmcsIHdlIGJyZWFrCi0tCSBsb29rdXAgb2YgdGhlIGV4aXN0aW5nIGVsZW1lbnRzLiAgRml4 IHRoYXQgYnkgdW53cmFwcGluZyB0aGUKLS0JIGRhdGEgZnJvbSB0aGUgZnJvbnQgdG8gdGhlIGVu ZC4gICovCi0tICAgICAgaWYgKHRlYW0tPm9sZGVzdF9saXZlX2dlbiA+IDApCi0tCW1lbWNweSAo dGVhbS0+d29ya19zaGFyZXMgKyB0ZWFtLT5udW1fbGl2ZV9nZW4sCi0tCQl0ZWFtLT53b3JrX3No YXJlcywKLS0JCSh0ZWFtLT5vbGRlc3RfbGl2ZV9nZW4gJiB0ZWFtLT5nZW5lcmF0aW9uX21hc2sp Ci0tCQkqIHNpemVvZiAoKnRlYW0tPndvcmtfc2hhcmVzKSk7Ci0tCi0tICAgICAgdGVhbS0+Z2Vu ZXJhdGlvbl9tYXNrID0gdGVhbS0+Z2VuZXJhdGlvbl9tYXNrICogMiArIDE7Ci0tICAgIH0KLS0K LS0gIHdzX2luZGV4ID0gd3NfZ2VuICYgdGVhbS0+Z2VuZXJhdGlvbl9tYXNrOwotLSAgd3MgPSBn b21wX25ld193b3JrX3NoYXJlIChvcmRlcmVkLCB0ZWFtLT5udGhyZWFkcyk7Ci0tICB0aHItPnRz Lndvcmtfc2hhcmUgPSB3czsKLS0gIHRoci0+dHMuc3RhdGljX3RyaXAgPSAwOwotLSAgdGVhbS0+ d29ya19zaGFyZXNbd3NfaW5kZXhdID0gd3M7Ci0tCi0tICBnb21wX211dGV4X2xvY2sgKCZ3cy0+ bG9jayk7Ci0tICBnb21wX211dGV4X3VubG9jayAoJnRlYW0tPndvcmtfc2hhcmVfbG9jayk7Ci0t Ci0tICByZXR1cm4gdHJ1ZTsKLSsgICAgICB0aHItPnRzLndvcmtfc2hhcmUgPSB3czsKLSsgICAg ICByZXR1cm4gZmFsc2U7Ci0rICAgIH0KLSB9Ci0gCi0tCi0gLyogVGhlIGN1cnJlbnQgdGhyZWFk IGlzIGRvbmUgd2l0aCBpdHMgY3VycmVudCB3b3JrIHNoYXJpbmcgY29uc3RydWN0LgotICAgIFRo aXMgdmVyc2lvbiBkb2VzIGltcGx5IGEgYmFycmllciBhdCB0aGUgZW5kIG9mIHRoZSB3b3JrLXNo YXJlLiAgKi8KLSAKLUBAIC0xNDcsMzYgKzIwOSwyOCBAQCBnb21wX3dvcmtfc2hhcmVfZW5kICh2 b2lkKQotIHsKLSAgIHN0cnVjdCBnb21wX3RocmVhZCAqdGhyID0gZ29tcF90aHJlYWQgKCk7Ci0g ICBzdHJ1Y3QgZ29tcF90ZWFtICp0ZWFtID0gdGhyLT50cy50ZWFtOwotLSAgc3RydWN0IGdvbXBf d29ya19zaGFyZSAqd3MgPSB0aHItPnRzLndvcmtfc2hhcmU7Ci0tICBib29sIGxhc3Q7Ci0tCi0t ICB0aHItPnRzLndvcmtfc2hhcmUgPSBOVUxMOwotKyAgZ29tcF9iYXJyaWVyX3N0YXRlX3QgYnN0 YXRlOwotIAotICAgLyogV29yayBzaGFyaW5nIGNvbnN0cnVjdHMgY2FuIGJlIG9ycGhhbmVkLiAg Ki8KLSAgIGlmICh0ZWFtID09IE5VTEwpCi0gICAgIHsKLS0gICAgICBmcmVlX3dvcmtfc2hhcmUg KHdzKTsKLSsgICAgICBmcmVlX3dvcmtfc2hhcmUgKE5VTEwsIHRoci0+dHMud29ya19zaGFyZSk7 Ci0rICAgICAgdGhyLT50cy53b3JrX3NoYXJlID0gTlVMTDsKLSAgICAgICByZXR1cm47Ci0gICAg IH0KLSAKLS0gIGxhc3QgPSBnb21wX2JhcnJpZXJfd2FpdF9zdGFydCAoJnRlYW0tPmJhcnJpZXIp OwotKyAgYnN0YXRlID0gZ29tcF9iYXJyaWVyX3dhaXRfc3RhcnQgKCZ0ZWFtLT5iYXJyaWVyKTsK LSAKLS0gIGlmIChsYXN0KQotKyAgaWYgKGdvbXBfYmFycmllcl9sYXN0X3RocmVhZCAoYnN0YXRl KSkKLSAgICAgewotLSAgICAgIHVuc2lnbmVkIHdzX2luZGV4OwotLQotLSAgICAgIHdzX2luZGV4 ID0gdGhyLT50cy53b3JrX3NoYXJlX2dlbmVyYXRpb24gJiB0ZWFtLT5nZW5lcmF0aW9uX21hc2s7 Ci0tICAgICAgdGVhbS0+d29ya19zaGFyZXNbd3NfaW5kZXhdID0gTlVMTDsKLS0gICAgICB0ZWFt LT5vbGRlc3RfbGl2ZV9nZW4rKzsKLS0gICAgICB0ZWFtLT5udW1fbGl2ZV9nZW4gPSAwOwotLQot LSAgICAgIGZyZWVfd29ya19zaGFyZSAod3MpOwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0 ICh0aHItPnRzLmxhc3Rfd29ya19zaGFyZSAhPSBOVUxMLCAxKSkKLSsJZnJlZV93b3JrX3NoYXJl ICh0ZWFtLCB0aHItPnRzLmxhc3Rfd29ya19zaGFyZSk7Ci0gICAgIH0KLSAKLS0gIGdvbXBfYmFy cmllcl93YWl0X2VuZCAoJnRlYW0tPmJhcnJpZXIsIGxhc3QpOwotKyAgZ29tcF9iYXJyaWVyX3dh aXRfZW5kICgmdGVhbS0+YmFycmllciwgYnN0YXRlKTsKLSsgIHRoci0+dHMubGFzdF93b3JrX3No YXJlID0gTlVMTDsKLSB9Ci0gCi0tCi0gLyogVGhlIGN1cnJlbnQgdGhyZWFkIGlzIGRvbmUgd2l0 aCBpdHMgY3VycmVudCB3b3JrIHNoYXJpbmcgY29uc3RydWN0LgotICAgIFRoaXMgdmVyc2lvbiBk b2VzIE5PVCBpbXBseSBhIGJhcnJpZXIgYXQgdGhlIGVuZCBvZiB0aGUgd29yay1zaGFyZS4gICov Ci0gCi1AQCAtMTg4LDE1ICsyNDIsMTcgQEAgZ29tcF93b3JrX3NoYXJlX2VuZF9ub3dhaXQgKHZv aWQpCi0gICBzdHJ1Y3QgZ29tcF93b3JrX3NoYXJlICp3cyA9IHRoci0+dHMud29ya19zaGFyZTsK LSAgIHVuc2lnbmVkIGNvbXBsZXRlZDsKLSAKLS0gIHRoci0+dHMud29ya19zaGFyZSA9IE5VTEw7 Ci0tCi0gICAvKiBXb3JrIHNoYXJpbmcgY29uc3RydWN0cyBjYW4gYmUgb3JwaGFuZWQuICAqLwot ICAgaWYgKHRlYW0gPT0gTlVMTCkKLSAgICAgewotLSAgICAgIGZyZWVfd29ya19zaGFyZSAod3Mp OwotKyAgICAgIGZyZWVfd29ya19zaGFyZSAoTlVMTCwgd3MpOwotKyAgICAgIHRoci0+dHMud29y a19zaGFyZSA9IE5VTEw7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0rICBpZiAoX19idWls dGluX2V4cGVjdCAodGhyLT50cy5sYXN0X3dvcmtfc2hhcmUgPT0gTlVMTCwgMCkpCi0rICAgIHJl dHVybjsKLSsKLSAjaWZkZWYgSEFWRV9TWU5DX0JVSUxUSU5TCi0gICBjb21wbGV0ZWQgPSBfX3N5 bmNfYWRkX2FuZF9mZXRjaCAoJndzLT50aHJlYWRzX2NvbXBsZXRlZCwgMSk7Ci0gI2Vsc2UKLUBA IC0yMDYsMTggKzI2Miw2IEBAIGdvbXBfd29ya19zaGFyZV9lbmRfbm93YWl0ICh2b2lkKQotICNl bmRpZgotIAotICAgaWYgKGNvbXBsZXRlZCA9PSB0ZWFtLT5udGhyZWFkcykKLS0gICAgewotLSAg ICAgIHVuc2lnbmVkIHdzX2luZGV4OwotLQotLSAgICAgIGdvbXBfbXV0ZXhfbG9jayAoJnRlYW0t Pndvcmtfc2hhcmVfbG9jayk7Ci0tCi0tICAgICAgd3NfaW5kZXggPSB0aHItPnRzLndvcmtfc2hh cmVfZ2VuZXJhdGlvbiAmIHRlYW0tPmdlbmVyYXRpb25fbWFzazsKLS0gICAgICB0ZWFtLT53b3Jr X3NoYXJlc1t3c19pbmRleF0gPSBOVUxMOwotLSAgICAgIHRlYW0tPm9sZGVzdF9saXZlX2dlbisr OwotLSAgICAgIHRlYW0tPm51bV9saXZlX2dlbi0tOwotLQotLSAgICAgIGdvbXBfbXV0ZXhfdW5s b2NrICgmdGVhbS0+d29ya19zaGFyZV9sb2NrKTsKLS0KLS0gICAgICBmcmVlX3dvcmtfc2hhcmUg KHdzKTsKLS0gICAgfQotKyAgICBmcmVlX3dvcmtfc2hhcmUgKHRlYW0sIHRoci0+dHMubGFzdF93 b3JrX3NoYXJlKTsKLSsgIHRoci0+dHMubGFzdF93b3JrX3NoYXJlID0gTlVMTDsKLSB9Ci0tLS0g bGliZ29tcC9zaW5nbGUuYy5qagkyMDA3LTEyLTA3IDE0OjQxOjAxLjAwMDAwMDAwMCArMDEwMAot KysrIGxpYmdvbXAvc2luZ2xlLmMJMjAwOC0wMy0yNiAxNToxMTozMi4wMDAwMDAwMDAgKzAxMDAK LUBAIC0xLDQgKzEsNCBAQAotLS8qIENvcHlyaWdodCAoQykgMjAwNSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDggRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0gICAgQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBIZW5kZXJzb24g PHJ0aEByZWRoYXQuY29tPi4KLSAKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9w ZW5NUCBMaWJyYXJ5IChsaWJnb21wKS4KLUBAIC0zNywxMCArMzcsMjQgQEAKLSBib29sCi0gR09N UF9zaW5nbGVfc3RhcnQgKHZvaWQpCi0gewotKyNpZmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKLSsg IHN0cnVjdCBnb21wX3RocmVhZCAqdGhyID0gZ29tcF90aHJlYWQgKCk7Ci0rICBzdHJ1Y3QgZ29t cF90ZWFtICp0ZWFtID0gdGhyLT50cy50ZWFtOwotKyAgdW5zaWduZWQgbG9uZyBzaW5nbGVfY291 bnQ7Ci0rCi0rICBpZiAoX19idWlsdGluX2V4cGVjdCAodGVhbSA9PSBOVUxMLCAwKSkKLSsgICAg cmV0dXJuIHRydWU7Ci0rCi0rICBzaW5nbGVfY291bnQgPSB0aHItPnRzLnNpbmdsZV9jb3VudCsr OwotKyAgcmV0dXJuIF9fc3luY19ib29sX2NvbXBhcmVfYW5kX3N3YXAgKCZ0ZWFtLT5zaW5nbGVf Y291bnQsIHNpbmdsZV9jb3VudCwKLSsJCQkJICAgICAgIHNpbmdsZV9jb3VudCArIDFMKTsKLSsj ZWxzZQotICAgYm9vbCByZXQgPSBnb21wX3dvcmtfc2hhcmVfc3RhcnQgKGZhbHNlKTsKLS0gIGdv bXBfbXV0ZXhfdW5sb2NrICgmZ29tcF90aHJlYWQgKCktPnRzLndvcmtfc2hhcmUtPmxvY2spOwot KyAgaWYgKHJldCkKLSsgICAgZ29tcF93b3JrX3NoYXJlX2luaXRfZG9uZSAoKTsKLSAgIGdvbXBf d29ya19zaGFyZV9lbmRfbm93YWl0ICgpOwotICAgcmV0dXJuIHJldDsKLSsjZW5kaWYKLSB9Ci0g Ci0gLyogVGhpcyByb3V0aW5lIGlzIGNhbGxlZCB3aGVuIGZpcnN0IGVuY291bnRlcmluZyBhIFNJ TkdMRSBjb25zdHJ1Y3QgdGhhdAotQEAgLTU3LDEwICs3MSwxMiBAQCBHT01QX3NpbmdsZV9jb3B5 X3N0YXJ0ICh2b2lkKQotICAgdm9pZCAqcmV0OwotIAotICAgZmlyc3QgPSBnb21wX3dvcmtfc2hh cmVfc3RhcnQgKGZhbHNlKTsKLS0gIGdvbXBfbXV0ZXhfdW5sb2NrICgmdGhyLT50cy53b3JrX3No YXJlLT5sb2NrKTsKLSAgIAotICAgaWYgKGZpcnN0KQotLSAgICByZXQgPSBOVUxMOwotKyAgICB7 Ci0rICAgICAgZ29tcF93b3JrX3NoYXJlX2luaXRfZG9uZSAoKTsKLSsgICAgICByZXQgPSBOVUxM OwotKyAgICB9Ci0gICBlbHNlCi0gICAgIHsKLSAgICAgICBnb21wX2JhcnJpZXJfd2FpdCAoJnRo ci0+dHMudGVhbS0+YmFycmllcik7Ci0tLS0gbGliZ29tcC9sb29wLmMuamoJMjAwNy0xMi0wNyAx NDo0MTowMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBsaWJnb21wL2xvb3AuYwkyMDA4LTAzLTI2IDE4 OjQ3OjA0LjAwMDAwMDAwMCArMDEwMAotQEAgLTI3LDggKzI3LDkgQEAKLSAKLSAvKiBUaGlzIGZp bGUgaGFuZGxlcyB0aGUgTE9PUCAoRk9SL0RPKSBjb25zdHJ1Y3QuICAqLwotIAotLSNpbmNsdWRl ICJsaWJnb21wLmgiCi0rI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4K LSsjaW5jbHVkZSAibGliZ29tcC5oIgotIAotIAotIC8qIEluaXRpYWxpemUgdGhlIGdpdmVuIHdv cmsgc2hhcmUgY29uc3RydWN0IGZyb20gdGhlIGdpdmVuIGFyZ3VtZW50cy4gICovCi1AQCAtNDQs NiArNDUsMzkgQEAgZ29tcF9sb29wX2luaXQgKHN0cnVjdCBnb21wX3dvcmtfc2hhcmUgKgotIAkg ICAgPyBzdGFydCA6IGVuZDsKLSAgIHdzLT5pbmNyID0gaW5jcjsKLSAgIHdzLT5uZXh0ID0gc3Rh cnQ7Ci0rICBpZiAoc2NoZWQgPT0gR0ZTX0RZTkFNSUMpCi0rICAgIHsKLSsgICAgICB3cy0+Y2h1 bmtfc2l6ZSAqPSBpbmNyOwotKwotKyNpZmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKLSsgICAgICB7 Ci0rCS8qIEZvciBkeW5hbWljIHNjaGVkdWxpbmcgcHJlcGFyZSB0aGluZ3MgdG8gbWFrZSBlYWNo IGl0ZXJhdGlvbgotKwkgICBmYXN0ZXIuICAqLwotKwlzdHJ1Y3QgZ29tcF90aHJlYWQgKnRociA9 IGdvbXBfdGhyZWFkICgpOwotKwlzdHJ1Y3QgZ29tcF90ZWFtICp0ZWFtID0gdGhyLT50cy50ZWFt OwotKwlsb25nIG50aHJlYWRzID0gdGVhbSA/IHRlYW0tPm50aHJlYWRzIDogMTsKLSsKLSsJaWYg KF9fYnVpbHRpbl9leHBlY3QgKGluY3IgPiAwLCAxKSkKLSsJICB7Ci0rCSAgICAvKiBDaGVhcCBv dmVyZmxvdyBwcm90ZWN0aW9uLiAgKi8KLSsJICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgobnRo cmVhZHMgfCB3cy0+Y2h1bmtfc2l6ZSkKLSsJCQkJICA+PSAxVUwgPDwgKHNpemVvZiAobG9uZykK LSsJCQkJCSAgICAgKiBfX0NIQVJfQklUX18gLyAyIC0gMSksIDApKQotKwkgICAgICB3cy0+bW9k ZSA9IDA7Ci0rCSAgICBlbHNlCi0rCSAgICAgIHdzLT5tb2RlID0gd3MtPmVuZCA8IChMT05HX01B WAotKwkJCQkgICAgLSAobnRocmVhZHMgKyAxKSAqIHdzLT5jaHVua19zaXplKTsKLSsJICB9Ci0r CS8qIENoZWFwIG92ZXJmbG93IHByb3RlY3Rpb24uICAqLwotKwllbHNlIGlmIChfX2J1aWx0aW5f ZXhwZWN0ICgobnRocmVhZHMgfCAtd3MtPmNodW5rX3NpemUpCi0rCQkJCSAgID49IDFVTCA8PCAo c2l6ZW9mIChsb25nKQotKwkJCQkJICAgICAgKiBfX0NIQVJfQklUX18gLyAyIC0gMSksIDApKQot KwkgIHdzLT5tb2RlID0gMDsKLSsJZWxzZQotKwkgIHdzLT5tb2RlID0gd3MtPmVuZCA+IChudGhy ZWFkcyArIDEpICogLXdzLT5jaHVua19zaXplIC0gTE9OR19NQVg7Ci0rICAgICAgfQotKyNlbmRp ZgotKyAgICB9Ci0gfQotIAotIC8qIFRoZSAqX3N0YXJ0IHJvdXRpbmVzIGFyZSBjYWxsZWQgd2hl biBmaXJzdCBlbmNvdW50ZXJpbmcgYSBsb29wIGNvbnN0cnVjdAotQEAgLTY4LDEwICsxMDIsMTMg QEAgZ29tcF9sb29wX3N0YXRpY19zdGFydCAobG9uZyBzdGFydCwgbG9uZwotIHsKLSAgIHN0cnVj dCBnb21wX3RocmVhZCAqdGhyID0gZ29tcF90aHJlYWQgKCk7Ci0gCi0rICB0aHItPnRzLnN0YXRp Y190cmlwID0gMDsKLSAgIGlmIChnb21wX3dvcmtfc2hhcmVfc3RhcnQgKGZhbHNlKSkKLS0gICAg Z29tcF9sb29wX2luaXQgKHRoci0+dHMud29ya19zaGFyZSwgc3RhcnQsIGVuZCwgaW5jciwKLS0J CSAgICBHRlNfU1RBVElDLCBjaHVua19zaXplKTsKLS0gIGdvbXBfbXV0ZXhfdW5sb2NrICgmdGhy LT50cy53b3JrX3NoYXJlLT5sb2NrKTsKLSsgICAgewotKyAgICAgIGdvbXBfbG9vcF9pbml0ICh0 aHItPnRzLndvcmtfc2hhcmUsIHN0YXJ0LCBlbmQsIGluY3IsCi0rCQkgICAgICBHRlNfU1RBVElD LCBjaHVua19zaXplKTsKLSsgICAgICBnb21wX3dvcmtfc2hhcmVfaW5pdF9kb25lICgpOwotKyAg ICB9Ci0gCi0gICByZXR1cm4gIWdvbXBfaXRlcl9zdGF0aWNfbmV4dCAoaXN0YXJ0LCBpZW5kKTsK LSB9Ci1AQCAtODQsMTMgKzEyMSwxNiBAQCBnb21wX2xvb3BfZHluYW1pY19zdGFydCAobG9uZyBz dGFydCwgbG9uCi0gICBib29sIHJldDsKLSAKLSAgIGlmIChnb21wX3dvcmtfc2hhcmVfc3RhcnQg KGZhbHNlKSkKLS0gICAgZ29tcF9sb29wX2luaXQgKHRoci0+dHMud29ya19zaGFyZSwgc3RhcnQs IGVuZCwgaW5jciwKLS0JCSAgICBHRlNfRFlOQU1JQywgY2h1bmtfc2l6ZSk7Ci0rICAgIHsKLSsg ICAgICBnb21wX2xvb3BfaW5pdCAodGhyLT50cy53b3JrX3NoYXJlLCBzdGFydCwgZW5kLCBpbmNy LAotKwkJICAgICAgR0ZTX0RZTkFNSUMsIGNodW5rX3NpemUpOwotKyAgICAgIGdvbXBfd29ya19z aGFyZV9pbml0X2RvbmUgKCk7Ci0rICAgIH0KLSAKLSAjaWZkZWYgSEFWRV9TWU5DX0JVSUxUSU5T Ci0tICBnb21wX211dGV4X3VubG9jayAoJnRoci0+dHMud29ya19zaGFyZS0+bG9jayk7Ci0gICBy ZXQgPSBnb21wX2l0ZXJfZHluYW1pY19uZXh0IChpc3RhcnQsIGllbmQpOwotICNlbHNlCi0rICBn b21wX211dGV4X2xvY2sgKCZ0aHItPnRzLndvcmtfc2hhcmUtPmxvY2spOwotICAgcmV0ID0gZ29t cF9pdGVyX2R5bmFtaWNfbmV4dF9sb2NrZWQgKGlzdGFydCwgaWVuZCk7Ci0gICBnb21wX211dGV4 X3VubG9jayAoJnRoci0+dHMud29ya19zaGFyZS0+bG9jayk7Ci0gI2VuZGlmCi1AQCAtMTA2LDEz ICsxNDYsMTYgQEAgZ29tcF9sb29wX2d1aWRlZF9zdGFydCAobG9uZyBzdGFydCwgbG9uZwotICAg Ym9vbCByZXQ7Ci0gCi0gICBpZiAoZ29tcF93b3JrX3NoYXJlX3N0YXJ0IChmYWxzZSkpCi0tICAg IGdvbXBfbG9vcF9pbml0ICh0aHItPnRzLndvcmtfc2hhcmUsIHN0YXJ0LCBlbmQsIGluY3IsCi0t CQkgICAgR0ZTX0dVSURFRCwgY2h1bmtfc2l6ZSk7Ci0rICAgIHsKLSsgICAgICBnb21wX2xvb3Bf aW5pdCAodGhyLT50cy53b3JrX3NoYXJlLCBzdGFydCwgZW5kLCBpbmNyLAotKwkJICAgICAgR0ZT X0dVSURFRCwgY2h1bmtfc2l6ZSk7Ci0rICAgICAgZ29tcF93b3JrX3NoYXJlX2luaXRfZG9uZSAo KTsKLSsgICAgfQotIAotICNpZmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKLS0gIGdvbXBfbXV0ZXhf dW5sb2NrICgmdGhyLT50cy53b3JrX3NoYXJlLT5sb2NrKTsKLSAgIHJldCA9IGdvbXBfaXRlcl9n dWlkZWRfbmV4dCAoaXN0YXJ0LCBpZW5kKTsKLSAjZWxzZQotKyAgZ29tcF9tdXRleF9sb2NrICgm dGhyLT50cy53b3JrX3NoYXJlLT5sb2NrKTsKLSAgIHJldCA9IGdvbXBfaXRlcl9ndWlkZWRfbmV4 dF9sb2NrZWQgKGlzdGFydCwgaWVuZCk7Ci0gICBnb21wX211dGV4X3VubG9jayAoJnRoci0+dHMu d29ya19zaGFyZS0+bG9jayk7Ci0gI2VuZGlmCi1AQCAtMTQ5LDEzICsxOTIsMTQgQEAgZ29tcF9s b29wX29yZGVyZWRfc3RhdGljX3N0YXJ0IChsb25nIHN0YQotIHsKLSAgIHN0cnVjdCBnb21wX3Ro cmVhZCAqdGhyID0gZ29tcF90aHJlYWQgKCk7Ci0gCi0rICB0aHItPnRzLnN0YXRpY190cmlwID0g MDsKLSAgIGlmIChnb21wX3dvcmtfc2hhcmVfc3RhcnQgKHRydWUpKQotICAgICB7Ci0gICAgICAg Z29tcF9sb29wX2luaXQgKHRoci0+dHMud29ya19zaGFyZSwgc3RhcnQsIGVuZCwgaW5jciwKLSAJ CSAgICAgIEdGU19TVEFUSUMsIGNodW5rX3NpemUpOwotICAgICAgIGdvbXBfb3JkZXJlZF9zdGF0 aWNfaW5pdCAoKTsKLSsgICAgICBnb21wX3dvcmtfc2hhcmVfaW5pdF9kb25lICgpOwotICAgICB9 Ci0tICBnb21wX211dGV4X3VubG9jayAoJnRoci0+dHMud29ya19zaGFyZS0+bG9jayk7Ci0gCi0g ICByZXR1cm4gIWdvbXBfaXRlcl9zdGF0aWNfbmV4dCAoaXN0YXJ0LCBpZW5kKTsKLSB9Ci1AQCAt MTY4LDggKzIxMiwxNCBAQCBnb21wX2xvb3Bfb3JkZXJlZF9keW5hbWljX3N0YXJ0IChsb25nIHN0 Ci0gICBib29sIHJldDsKLSAKLSAgIGlmIChnb21wX3dvcmtfc2hhcmVfc3RhcnQgKHRydWUpKQot LSAgICBnb21wX2xvb3BfaW5pdCAodGhyLT50cy53b3JrX3NoYXJlLCBzdGFydCwgZW5kLCBpbmNy LAotLQkJICAgIEdGU19EWU5BTUlDLCBjaHVua19zaXplKTsKLSsgICAgewotKyAgICAgIGdvbXBf bG9vcF9pbml0ICh0aHItPnRzLndvcmtfc2hhcmUsIHN0YXJ0LCBlbmQsIGluY3IsCi0rCQkgICAg ICBHRlNfRFlOQU1JQywgY2h1bmtfc2l6ZSk7Ci0rICAgICAgZ29tcF9tdXRleF9sb2NrICgmdGhy LT50cy53b3JrX3NoYXJlLT5sb2NrKTsKLSsgICAgICBnb21wX3dvcmtfc2hhcmVfaW5pdF9kb25l ICgpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIGdvbXBfbXV0ZXhfbG9jayAoJnRoci0+dHMud29y a19zaGFyZS0+bG9jayk7Ci0gCi0gICByZXQgPSBnb21wX2l0ZXJfZHluYW1pY19uZXh0X2xvY2tl ZCAoaXN0YXJ0LCBpZW5kKTsKLSAgIGlmIChyZXQpCi1AQCAtMTg3LDggKzIzNywxNCBAQCBnb21w X2xvb3Bfb3JkZXJlZF9ndWlkZWRfc3RhcnQgKGxvbmcgc3RhCi0gICBib29sIHJldDsKLSAKLSAg IGlmIChnb21wX3dvcmtfc2hhcmVfc3RhcnQgKHRydWUpKQotLSAgICBnb21wX2xvb3BfaW5pdCAo dGhyLT50cy53b3JrX3NoYXJlLCBzdGFydCwgZW5kLCBpbmNyLAotLQkJICAgIEdGU19HVUlERUQs IGNodW5rX3NpemUpOwotKyAgICB7Ci0rICAgICAgZ29tcF9sb29wX2luaXQgKHRoci0+dHMud29y a19zaGFyZSwgc3RhcnQsIGVuZCwgaW5jciwKLSsJCSAgICAgIEdGU19HVUlERUQsIGNodW5rX3Np emUpOwotKyAgICAgIGdvbXBfbXV0ZXhfbG9jayAoJnRoci0+dHMud29ya19zaGFyZS0+bG9jayk7 Ci0rICAgICAgZ29tcF93b3JrX3NoYXJlX2luaXRfZG9uZSAoKTsKLSsgICAgfQotKyAgZWxzZQot KyAgICBnb21wX211dGV4X2xvY2sgKCZ0aHItPnRzLndvcmtfc2hhcmUtPmxvY2spOwotIAotICAg cmV0ID0gZ29tcF9pdGVyX2d1aWRlZF9uZXh0X2xvY2tlZCAoaXN0YXJ0LCBpZW5kKTsKLSAgIGlm IChyZXQpCi1AQCAtMzc1LDEyICs0MzEsMTIgQEAgZ29tcF9wYXJhbGxlbF9sb29wX3N0YXJ0ICh2 b2lkICgqZm4pICh2bwotIAkJCSAgbG9uZyBpbmNyLCBlbnVtIGdvbXBfc2NoZWR1bGVfdHlwZSBz Y2hlZCwKLSAJCQkgIGxvbmcgY2h1bmtfc2l6ZSkKLSB7Ci0tICBzdHJ1Y3QgZ29tcF93b3JrX3No YXJlICp3czsKLSsgIHN0cnVjdCBnb21wX3RlYW0gKnRlYW07Ci0gCi0gICBudW1fdGhyZWFkcyA9 IGdvbXBfcmVzb2x2ZV9udW1fdGhyZWFkcyAobnVtX3RocmVhZHMpOwotLSAgd3MgPSBnb21wX25l d193b3JrX3NoYXJlIChmYWxzZSwgbnVtX3RocmVhZHMpOwotLSAgZ29tcF9sb29wX2luaXQgKHdz LCBzdGFydCwgZW5kLCBpbmNyLCBzY2hlZCwgY2h1bmtfc2l6ZSk7Ci0tICBnb21wX3RlYW1fc3Rh cnQgKGZuLCBkYXRhLCBudW1fdGhyZWFkcywgd3MpOwotKyAgdGVhbSA9IGdvbXBfbmV3X3RlYW0g KG51bV90aHJlYWRzKTsKLSsgIGdvbXBfbG9vcF9pbml0ICgmdGVhbS0+d29ya19zaGFyZXNbMF0s IHN0YXJ0LCBlbmQsIGluY3IsIHNjaGVkLCBjaHVua19zaXplKTsKLSsgIGdvbXBfdGVhbV9zdGFy dCAoZm4sIGRhdGEsIG51bV90aHJlYWRzLCB0ZWFtKTsKLSB9Ci0gCi0gdm9pZAotLS0tIGxpYmdv bXAvTWFrZWZpbGUuaW4uamoJMjAwOC0wMS0xMCAyMDo1Mzo0Ny4wMDAwMDAwMDAgKzAxMDAKLSsr KyBsaWJnb21wL01ha2VmaWxlLmluCTIwMDgtMDMtMjYgMTg6NTE6MDEuMDAwMDAwMDAwICswMTAw Ci1AQCAtODMsNyArODMsNyBAQCBsaWJnb21wX2xhX0xJQkFERCA9Ci0gYW1fbGliZ29tcF9sYV9P QkpFQ1RTID0gYWxsb2MubG8gYmFycmllci5sbyBjcml0aWNhbC5sbyBlbnYubG8gXAotIAllcnJv ci5sbyBpdGVyLmxvIGxvb3AubG8gb3JkZXJlZC5sbyBwYXJhbGxlbC5sbyBzZWN0aW9ucy5sbyBc Ci0gCXNpbmdsZS5sbyB0ZWFtLmxvIHdvcmsubG8gbG9jay5sbyBtdXRleC5sbyBwcm9jLmxvIHNl bS5sbyBcCi0tCWJhci5sbyB0aW1lLmxvIGZvcnRyYW4ubG8gYWZmaW5pdHkubG8KLSsJYmFyLmxv IHB0cmxvY2subG8gdGltZS5sbyBmb3J0cmFuLmxvIGFmZmluaXR5LmxvCi0gbGliZ29tcF9sYV9P QkpFQ1RTID0gJChhbV9saWJnb21wX2xhX09CSkVDVFMpCi0gREVGQVVMVF9JTkNMVURFUyA9IC1J LiAtSSQoc3JjZGlyKSAtSS4KLSBkZXBjb21wID0gJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS8uLi9k ZXBjb21wCi1AQCAtMjkyLDcgKzI5Miw3IEBAIGxpYmdvbXBfdmVyc2lvbl9pbmZvID0gLXZlcnNp b24taW5mbyAkKGwKLSBsaWJnb21wX2xhX0xERkxBR1MgPSAkKGxpYmdvbXBfdmVyc2lvbl9pbmZv KSAkKGxpYmdvbXBfdmVyc2lvbl9zY3JpcHQpCi0gbGliZ29tcF9sYV9TT1VSQ0VTID0gYWxsb2Mu YyBiYXJyaWVyLmMgY3JpdGljYWwuYyBlbnYuYyBlcnJvci5jIGl0ZXIuYyBcCi0gCWxvb3AuYyBv cmRlcmVkLmMgcGFyYWxsZWwuYyBzZWN0aW9ucy5jIHNpbmdsZS5jIHRlYW0uYyB3b3JrLmMgXAot LQlsb2NrLmMgbXV0ZXguYyBwcm9jLmMgc2VtLmMgYmFyLmMgdGltZS5jIGZvcnRyYW4uYyBhZmZp bml0eS5jCi0rCWxvY2suYyBtdXRleC5jIHByb2MuYyBzZW0uYyBiYXIuYyBwdHJsb2NrLmMgdGlt ZS5jIGZvcnRyYW4uYyBhZmZpbml0eS5jCi0gCi0gbm9kaXN0X25vaW5zdF9IRUFERVJTID0gbGli Z29tcF9mLmgKLSBub2Rpc3RfbGlic3ViaW5jbHVkZV9IRUFERVJTID0gb21wLmgKLUBAIC00MzQs NiArNDM0LDcgQEAgZGlzdGNsZWFuLWNvbXBpbGU6Ci0gQEFNREVQX1RSVUVAQGFtX19pbmNsdWRl QCBAYW1fX3F1b3RlQC4vJChERVBESVIpL29yZGVyZWQuUGxvQGFtX19xdW90ZUAKLSBAQU1ERVBf VFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvcGFyYWxsZWwuUGxvQGFt X19xdW90ZUAKLSBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJ UikvcHJvYy5QbG9AYW1fX3F1b3RlQAotK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19x dW90ZUAuLyQoREVQRElSKS9wdHJsb2NrLlBsb0BhbV9fcXVvdGVACi0gQEFNREVQX1RSVUVAQGFt X19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL3NlY3Rpb25zLlBsb0BhbV9fcXVvdGVA Ci0gQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL3NlbS5Q bG9AYW1fX3F1b3RlQAotIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQo REVQRElSKS9zaW5nbGUuUGxvQGFtX19xdW90ZUAKLS0tLSBsaWJnb21wL3Rlc3RzdWl0ZS9saWJn b21wLmMvbG9vcC00LmMuamoJMjAwOC0wMy0yNiAxODo0NzowNC4wMDAwMDAwMDAgKzAxMDAKLSsr KyBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvbG9vcC00LmMJMjAwOC0wMy0yNiAxODo0Nzow NC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMjggQEAKLSsvKiB7IGRnLWRvIHJ1biB9ICov Ci0rCi0rZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOwotKwotK2ludAotK21haW4gKHZvaWQpCi0r ewotKyAgaW50IGUgPSAwOwotKyNwcmFnbWEgb21wIHBhcmFsbGVsIG51bV90aHJlYWRzICg0KSBy ZWR1Y3Rpb24oKzplKQotKyAgewotKyAgICBsb25nIGk7Ci0rICAgICNwcmFnbWEgb21wIGZvciBz Y2hlZHVsZShkeW5hbWljLDEpCi0rICAgIGZvciAoaSA9IF9fTE9OR19NQVhfXyAtIDMwMDAxOyBp IDw9IF9fTE9OR19NQVhfXyAtIDEwMDAxOyBpICs9IDEwMDAwKQotKyAgICAgIGlmIChpICE9IF9f TE9OR19NQVhfXyAtIDMwMDAxCi0rCSAgJiYgaSAhPSBfX0xPTkdfTUFYX18gLSAyMDAwMQotKwkg ICYmIGkgIT0gX19MT05HX01BWF9fIC0gMTAwMDEpCi0rCWUgPSAxOwotKyAgICAjcHJhZ21hIG9t cCBmb3Igc2NoZWR1bGUoZHluYW1pYywxKQotKyAgICBmb3IgKGkgPSAtX19MT05HX01BWF9fICsg MzAwMDA7IGkgPj0gLV9fTE9OR19NQVhfXyArIDEwMDAwOyBpIC09IDEwMDAwKQotKyAgICAgIGlm IChpICE9IC1fX0xPTkdfTUFYX18gKyAzMDAwMAotKwkgICYmIGkgIT0gLV9fTE9OR19NQVhfXyAr IDIwMDAwCi0rCSAgJiYgaSAhPSAtX19MT05HX01BWF9fICsgMTAwMDApCi0rCWUgPSAxOwotKyAg fQotKyAgaWYgKGUpCi0rICAgIGFib3J0ICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIGxpYmdv bXAvTWFrZWZpbGUuYW0uamoJMjAwNy0xMi0wNyAxNDo0MTowMS4wMDAwMDAwMDAgKzAxMDAKLSsr KyBsaWJnb21wL01ha2VmaWxlLmFtCTIwMDgtMDMtMjYgMTU6MTU6MTkuMDAwMDAwMDAwICswMTAw Ci1AQCAtMzEsNyArMzEsNyBAQCBsaWJnb21wX2xhX0xERkxBR1MgPSAkKGxpYmdvbXBfdmVyc2lv bl9pCi0gCi0gbGliZ29tcF9sYV9TT1VSQ0VTID0gYWxsb2MuYyBiYXJyaWVyLmMgY3JpdGljYWwu YyBlbnYuYyBlcnJvci5jIGl0ZXIuYyBcCi0gCWxvb3AuYyBvcmRlcmVkLmMgcGFyYWxsZWwuYyBz ZWN0aW9ucy5jIHNpbmdsZS5jIHRlYW0uYyB3b3JrLmMgXAotLQlsb2NrLmMgbXV0ZXguYyBwcm9j LmMgc2VtLmMgYmFyLmMgdGltZS5jIGZvcnRyYW4uYyBhZmZpbml0eS5jCi0rCWxvY2suYyBtdXRl eC5jIHByb2MuYyBzZW0uYyBiYXIuYyBwdHJsb2NrLmMgdGltZS5jIGZvcnRyYW4uYyBhZmZpbml0 eS5jCi0gCi0gbm9kaXN0X25vaW5zdF9IRUFERVJTID0gbGliZ29tcF9mLmgKLSBub2Rpc3RfbGli c3ViaW5jbHVkZV9IRUFERVJTID0gb21wLmgKLS0tLSBsaWJnb21wL3RlYW0uYy5qagkyMDA3LTEy LTA3IDE0OjQxOjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGxpYmdvbXAvdGVhbS5jCTIwMDgtMDMt MjcgMTI6MjI6MjYuMDAwMDAwMDAwICswMTAwCi1AQCAtOTQsNyArOTQsNyBAQCBnb21wX3RocmVh ZF9zdGFydCAodm9pZCAqeGRhdGEpCi0gICAgIHsKLSAgICAgICBnb21wX2JhcnJpZXJfd2FpdCAo JnRoci0+dHMudGVhbS0+YmFycmllcik7Ci0gICAgICAgbG9jYWxfZm4gKGxvY2FsX2RhdGEpOwot LSAgICAgIGdvbXBfYmFycmllcl93YWl0ICgmdGhyLT50cy50ZWFtLT5iYXJyaWVyKTsKLSsgICAg ICBnb21wX2JhcnJpZXJfd2FpdF9sYXN0ICgmdGhyLT50cy50ZWFtLT5iYXJyaWVyKTsKLSAgICAg fQotICAgZWxzZQotICAgICB7Ci1AQCAtMTE0LDExICsxMTQsMTAgQEAgZ29tcF90aHJlYWRfc3Rh cnQgKHZvaWQgKnhkYXRhKQotIAkgIHRoci0+ZGF0YSA9IE5VTEw7Ci0gCSAgdGhyLT50cy50ZWFt ID0gTlVMTDsKLSAJICB0aHItPnRzLndvcmtfc2hhcmUgPSBOVUxMOwotKwkgIHRoci0+dHMubGFz dF93b3JrX3NoYXJlID0gTlVMTDsKLSAJICB0aHItPnRzLnRlYW1faWQgPSAwOwotLQkgIHRoci0+ dHMud29ya19zaGFyZV9nZW5lcmF0aW9uID0gMDsKLS0JICB0aHItPnRzLnN0YXRpY190cmlwID0g MDsKLSAKLS0JICBnb21wX2JhcnJpZXJfd2FpdCAoJnRlYW0tPmJhcnJpZXIpOwotKwkgIGdvbXBf YmFycmllcl93YWl0X2xhc3QgKCZ0ZWFtLT5iYXJyaWVyKTsKLSAJICBnb21wX2JhcnJpZXJfd2Fp dCAoJmdvbXBfdGhyZWFkc19kb2NrKTsKLSAKLSAJICBsb2NhbF9mbiA9IHRoci0+Zm47Ci1AQCAt MTMzLDIxICsxMzIsMjkgQEAgZ29tcF90aHJlYWRfc3RhcnQgKHZvaWQgKnhkYXRhKQotIAotIC8q IENyZWF0ZSBhIG5ldyB0ZWFtIGRhdGEgc3RydWN0dXJlLiAgKi8KLSAKLS1zdGF0aWMgc3RydWN0 IGdvbXBfdGVhbSAqCi0tbmV3X3RlYW0gKHVuc2lnbmVkIG50aHJlYWRzLCBzdHJ1Y3QgZ29tcF93 b3JrX3NoYXJlICp3b3JrX3NoYXJlKQotK3N0cnVjdCBnb21wX3RlYW0gKgotK2dvbXBfbmV3X3Rl YW0gKHVuc2lnbmVkIG50aHJlYWRzKQotIHsKLSAgIHN0cnVjdCBnb21wX3RlYW0gKnRlYW07Ci0g ICBzaXplX3Qgc2l6ZTsKLSsgIGludCBpOwotIAotICAgc2l6ZSA9IHNpemVvZiAoKnRlYW0pICsg bnRocmVhZHMgKiBzaXplb2YgKHRlYW0tPm9yZGVyZWRfcmVsZWFzZVswXSk7Ci0gICB0ZWFtID0g Z29tcF9tYWxsb2MgKHNpemUpOwotLSAgZ29tcF9tdXRleF9pbml0ICgmdGVhbS0+d29ya19zaGFy ZV9sb2NrKTsKLSAKLS0gIHRlYW0tPndvcmtfc2hhcmVzID0gZ29tcF9tYWxsb2MgKDQgKiBzaXpl b2YgKHN0cnVjdCBnb21wX3dvcmtfc2hhcmUgKikpOwotLSAgdGVhbS0+Z2VuZXJhdGlvbl9tYXNr ID0gMzsKLS0gIHRlYW0tPm9sZGVzdF9saXZlX2dlbiA9IHdvcmtfc2hhcmUgPT0gTlVMTDsKLS0g IHRlYW0tPm51bV9saXZlX2dlbiA9IHdvcmtfc2hhcmUgIT0gTlVMTDsKLS0gIHRlYW0tPndvcmtf c2hhcmVzWzBdID0gd29ya19zaGFyZTsKLSsgIHRlYW0tPndvcmtfc2hhcmVfY2h1bmsgPSA4Owot KyNpZmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKLSsgIHRlYW0tPnNpbmdsZV9jb3VudCA9IDA7Ci0r I2Vsc2UKLSsgIGdvbXBfbXV0ZXhfaW5pdCAoJnRlYW0tPndvcmtfc2hhcmVfbGlzdF9mcmVlX2xv Y2spOwotKyNlbmRpZgotKyAgZ29tcF9pbml0X3dvcmtfc2hhcmUgKCZ0ZWFtLT53b3JrX3NoYXJl c1swXSwgZmFsc2UsIG50aHJlYWRzKTsKLSsgIHRlYW0tPndvcmtfc2hhcmVzWzBdLm5leHRfYWxs b2MgPSBOVUxMOwotKyAgdGVhbS0+d29ya19zaGFyZV9saXN0X2ZyZWUgPSBOVUxMOwotKyAgdGVh bS0+d29ya19zaGFyZV9saXN0X2FsbG9jID0gJnRlYW0tPndvcmtfc2hhcmVzWzFdOwotKyAgZm9y IChpID0gMTsgaSA8IDc7IGkrKykKLSsgICAgdGVhbS0+d29ya19zaGFyZXNbaV0ubmV4dF9mcmVl ID0gJnRlYW0tPndvcmtfc2hhcmVzW2kgKyAxXTsKLSsgIHRlYW0tPndvcmtfc2hhcmVzW2ldLm5l eHRfZnJlZSA9IE5VTEw7Ci0gCi0gICB0ZWFtLT5udGhyZWFkcyA9IG50aHJlYWRzOwotICAgZ29t cF9iYXJyaWVyX2luaXQgKCZ0ZWFtLT5iYXJyaWVyLCBudGhyZWFkcyk7Ci1AQCAtMTY0LDEwICsx NzEsMjIgQEAgbmV3X3RlYW0gKHVuc2lnbmVkIG50aHJlYWRzLCBzdHJ1Y3QgZ29tcAotIHN0YXRp YyB2b2lkCi0gZnJlZV90ZWFtIChzdHJ1Y3QgZ29tcF90ZWFtICp0ZWFtKQotIHsKLS0gIGZyZWUg KHRlYW0tPndvcmtfc2hhcmVzKTsKLS0gIGdvbXBfbXV0ZXhfZGVzdHJveSAoJnRlYW0tPndvcmtf c2hhcmVfbG9jayk7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAodGVhbS0+d29ya19zaGFyZXNb MF0ubmV4dF9hbGxvYyAhPSBOVUxMLCAwKSkKLSsgICAgewotKyAgICAgIHN0cnVjdCBnb21wX3dv cmtfc2hhcmUgKndzID0gdGVhbS0+d29ya19zaGFyZXNbMF0ubmV4dF9hbGxvYzsKLSsgICAgICBk bwotKwl7Ci0rCSAgc3RydWN0IGdvbXBfd29ya19zaGFyZSAqbmV4dF93cyA9IHdzLT5uZXh0X2Fs bG9jOwotKwkgIGZyZWUgKHdzKTsKLSsJICB3cyA9IG5leHRfd3M7Ci0rCX0KLSsgICAgICB3aGls ZSAod3MgIT0gTlVMTCk7Ci0rICAgIH0KLSAgIGdvbXBfYmFycmllcl9kZXN0cm95ICgmdGVhbS0+ YmFycmllcik7Ci0gICBnb21wX3NlbV9kZXN0cm95ICgmdGVhbS0+bWFzdGVyX3JlbGVhc2UpOwot KyNpZm5kZWYgSEFWRV9TWU5DX0JVSUxUSU5TCi0rICBnb21wX211dGV4X2Rlc3Ryb3kgKCZ0ZWFt LT53b3JrX3NoYXJlX2xpc3RfZnJlZV9sb2NrKTsKLSsjZW5kaWYKLSAgIGZyZWUgKHRlYW0pOwot IH0KLSAKLUBAIC0xNzYsMTEgKzE5NSwxMCBAQCBmcmVlX3RlYW0gKHN0cnVjdCBnb21wX3RlYW0g KnRlYW0pCi0gCi0gdm9pZAotIGdvbXBfdGVhbV9zdGFydCAodm9pZCAoKmZuKSAodm9pZCAqKSwg dm9pZCAqZGF0YSwgdW5zaWduZWQgbnRocmVhZHMsCi0tCQkgc3RydWN0IGdvbXBfd29ya19zaGFy ZSAqd29ya19zaGFyZSkKLSsJCSBzdHJ1Y3QgZ29tcF90ZWFtICp0ZWFtKQotIHsKLSAgIHN0cnVj dCBnb21wX3RocmVhZF9zdGFydF9kYXRhICpzdGFydF9kYXRhOwotICAgc3RydWN0IGdvbXBfdGhy ZWFkICp0aHIsICpudGhyOwotLSAgc3RydWN0IGdvbXBfdGVhbSAqdGVhbTsKLSAgIGJvb2wgbmVz dGVkOwotICAgdW5zaWduZWQgaSwgbiwgb2xkX3RocmVhZHNfdXNlZCA9IDA7Ci0gICBwdGhyZWFk X2F0dHJfdCB0aHJlYWRfYXR0ciwgKmF0dHI7Ci1AQCAtMTg4LDE3ICsyMDYsMTggQEAgZ29tcF90 ZWFtX3N0YXJ0ICh2b2lkICgqZm4pICh2b2lkICopLCB2bwotICAgdGhyID0gZ29tcF90aHJlYWQg KCk7Ci0gICBuZXN0ZWQgPSB0aHItPnRzLnRlYW0gIT0gTlVMTDsKLSAKLS0gIHRlYW0gPSBuZXdf dGVhbSAobnRocmVhZHMsIHdvcmtfc2hhcmUpOwotLQotICAgLyogQWx3YXlzIHNhdmUgdGhlIHBy ZXZpb3VzIHN0YXRlLCBldmVuIGlmIHRoaXMgaXNuJ3QgYSBuZXN0ZWQgdGVhbS4KLSAgICAgIElu IHBhcnRpY3VsYXIsIHdlIHNob3VsZCBzYXZlIGFueSB3b3JrIHNoYXJlIHN0YXRlIGZyb20gYW4g b3V0ZXIKLSAgICAgIG9ycGhhbmVkIHdvcmsgc2hhcmUgY29uc3RydWN0LiAgKi8KLSAgIHRlYW0t PnByZXZfdHMgPSB0aHItPnRzOwotIAotICAgdGhyLT50cy50ZWFtID0gdGVhbTsKLS0gIHRoci0+ dHMud29ya19zaGFyZSA9IHdvcmtfc2hhcmU7Ci0gICB0aHItPnRzLnRlYW1faWQgPSAwOwotLSAg dGhyLT50cy53b3JrX3NoYXJlX2dlbmVyYXRpb24gPSAwOwotKyAgdGhyLT50cy53b3JrX3NoYXJl ID0gJnRlYW0tPndvcmtfc2hhcmVzWzBdOwotKyAgdGhyLT50cy5sYXN0X3dvcmtfc2hhcmUgPSBO VUxMOwotKyNpZmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKLSsgIHRoci0+dHMuc2luZ2xlX2NvdW50 ID0gMDsKLSsjZW5kaWYKLSAgIHRoci0+dHMuc3RhdGljX3RyaXAgPSAwOwotIAotICAgaWYgKG50 aHJlYWRzID09IDEpCi1AQCAtMjQxLDkgKzI2MCwxMiBAQCBnb21wX3RlYW1fc3RhcnQgKHZvaWQg KCpmbikgKHZvaWQgKiksIHZvCi0gCXsKLSAJICBudGhyID0gZ29tcF90aHJlYWRzW2ldOwotIAkg IG50aHItPnRzLnRlYW0gPSB0ZWFtOwotLQkgIG50aHItPnRzLndvcmtfc2hhcmUgPSB3b3JrX3No YXJlOwotKwkgIG50aHItPnRzLndvcmtfc2hhcmUgPSAmdGVhbS0+d29ya19zaGFyZXNbMF07Ci0r CSAgbnRoci0+dHMubGFzdF93b3JrX3NoYXJlID0gTlVMTDsKLSAJICBudGhyLT50cy50ZWFtX2lk ID0gaTsKLS0JICBudGhyLT50cy53b3JrX3NoYXJlX2dlbmVyYXRpb24gPSAwOwotKyNpZmRlZiBI QVZFX1NZTkNfQlVJTFRJTlMKLSsJICBudGhyLT50cy5zaW5nbGVfY291bnQgPSAwOwotKyNlbmRp ZgotIAkgIG50aHItPnRzLnN0YXRpY190cmlwID0gMDsKLSAJICBudGhyLT5mbiA9IGZuOwotIAkg IG50aHItPmRhdGEgPSBkYXRhOwotQEAgLTI2Niw4ICsyODgsMjQgQEAgZ29tcF90ZWFtX3N0YXJ0 ICh2b2lkICgqZm4pICh2b2lkICopLCB2bwotIAl9Ci0gICAgIH0KLSAKLSsgIGlmIChfX2J1aWx0 aW5fZXhwZWN0IChudGhyZWFkcyA+IG9sZF90aHJlYWRzX3VzZWQsIDApKQotKyAgICB7Ci0rICAg ICAgbG9uZyBkaWZmID0gKGxvbmcpIG50aHJlYWRzIC0gKGxvbmcpIG9sZF90aHJlYWRzX3VzZWQ7 Ci0rCi0rICAgICAgaWYgKG9sZF90aHJlYWRzX3VzZWQgPT0gMCkKLSsJLS1kaWZmOwotKwotKyNp ZmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKLSsgICAgICBfX3N5bmNfZmV0Y2hfYW5kX2FkZCAoJmdv bXBfbWFuYWdlZF90aHJlYWRzLCBkaWZmKTsKLSsjZWxzZQotKyAgICAgIGdvbXBfbXV0ZXhfbG9j ayAoJmdvbXBfcmVtYWluaW5nX3RocmVhZHNfbG9jayk7Ci0rICAgICAgZ29tcF9tYW5hZ2VkX3Ro cmVhZHMgKz0gZGlmZjsKLSsgICAgICBnb21wX211dGV4X3VubG9jayAoJmdvbXBfcmVtYWluaW5n X3RocmVhZHNfbG9jayk7Ci0rI2VuZGlmCi0rICAgIH0KLSsKLSAgIGF0dHIgPSAmZ29tcF90aHJl YWRfYXR0cjsKLS0gIGlmIChnb21wX2NwdV9hZmZpbml0eSAhPSBOVUxMKQotKyAgaWYgKF9fYnVp bHRpbl9leHBlY3QgKGdvbXBfY3B1X2FmZmluaXR5ICE9IE5VTEwsIDApKQotICAgICB7Ci0gICAg ICAgc2l6ZV90IHN0YWNrc2l6ZTsKLSAgICAgICBwdGhyZWFkX2F0dHJfaW5pdCAoJnRocmVhZF9h dHRyKTsKLUBAIC0yODcsOSArMzI1LDEyIEBAIGdvbXBfdGVhbV9zdGFydCAodm9pZCAoKmZuKSAo dm9pZCAqKSwgdm8KLSAgICAgICBpbnQgZXJyOwotIAotICAgICAgIHN0YXJ0X2RhdGEtPnRzLnRl YW0gPSB0ZWFtOwotLSAgICAgIHN0YXJ0X2RhdGEtPnRzLndvcmtfc2hhcmUgPSB3b3JrX3NoYXJl OwotKyAgICAgIHN0YXJ0X2RhdGEtPnRzLndvcmtfc2hhcmUgPSAmdGVhbS0+d29ya19zaGFyZXNb MF07Ci0rICAgICAgc3RhcnRfZGF0YS0+dHMubGFzdF93b3JrX3NoYXJlID0gTlVMTDsKLSAgICAg ICBzdGFydF9kYXRhLT50cy50ZWFtX2lkID0gaTsKLS0gICAgICBzdGFydF9kYXRhLT50cy53b3Jr X3NoYXJlX2dlbmVyYXRpb24gPSAwOwotKyNpZmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKLSsgICAg ICBzdGFydF9kYXRhLT50cy5zaW5nbGVfY291bnQgPSAwOwotKyNlbmRpZgotICAgICAgIHN0YXJ0 X2RhdGEtPnRzLnN0YXRpY190cmlwID0gMDsKLSAgICAgICBzdGFydF9kYXRhLT5mbiA9IGZuOwot ICAgICAgIHN0YXJ0X2RhdGEtPmZuX2RhdGEgPSBkYXRhOwotQEAgLTMwMyw3ICszNDQsNyBAQCBn b21wX3RlYW1fc3RhcnQgKHZvaWQgKCpmbikgKHZvaWQgKiksIHZvCi0gCWdvbXBfZmF0YWwgKCJU aHJlYWQgY3JlYXRpb24gZmFpbGVkOiAlcyIsIHN0cmVycm9yIChlcnIpKTsKLSAgICAgfQotIAot LSAgaWYgKGdvbXBfY3B1X2FmZmluaXR5ICE9IE5VTEwpCi0rICBpZiAoX19idWlsdGluX2V4cGVj dCAoZ29tcF9jcHVfYWZmaW5pdHkgIT0gTlVMTCwgMCkpCi0gICAgIHB0aHJlYWRfYXR0cl9kZXN0 cm95ICgmdGhyZWFkX2F0dHIpOwotIAotICBkb19yZWxlYXNlOgotQEAgLTMxMyw4ICszNTQsMjAg QEAgZ29tcF90ZWFtX3N0YXJ0ICh2b2lkICgqZm4pICh2b2lkICopLCB2bwotICAgICAgdGhhdCBz aG91bGQgYXJyaXZlIGJhY2sgYXQgdGhlIGVuZCBvZiB0aGlzIHRlYW0uICBUaGUgZXh0cmEKLSAg ICAgIHRocmVhZHMgc2hvdWxkIGJlIGV4aXRpbmcuICBOb3RlIHRoYXQgd2UgYXJyYW5nZSBmb3Ig dGhpcyB0ZXN0Ci0gICAgICB0byBuZXZlciBiZSB0cnVlIGZvciBuZXN0ZWQgdGVhbXMuICAqLwot LSAgaWYgKG50aHJlYWRzIDwgb2xkX3RocmVhZHNfdXNlZCkKLS0gICAgZ29tcF9iYXJyaWVyX3Jl aW5pdCAoJmdvbXBfdGhyZWFkc19kb2NrLCBudGhyZWFkcyk7Ci0rICBpZiAoX19idWlsdGluX2V4 cGVjdCAobnRocmVhZHMgPCBvbGRfdGhyZWFkc191c2VkLCAwKSkKLSsgICAgewotKyAgICAgIGxv bmcgZGlmZiA9IChsb25nKSBudGhyZWFkcyAtIChsb25nKSBvbGRfdGhyZWFkc191c2VkOwotKwot KyAgICAgIGdvbXBfYmFycmllcl9yZWluaXQgKCZnb21wX3RocmVhZHNfZG9jaywgbnRocmVhZHMp OwotKwotKyNpZmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKLSsgICAgICBfX3N5bmNfZmV0Y2hfYW5k X2FkZCAoJmdvbXBfbWFuYWdlZF90aHJlYWRzLCBkaWZmKTsKLSsjZWxzZQotKyAgICAgIGdvbXBf bXV0ZXhfbG9jayAoJmdvbXBfcmVtYWluaW5nX3RocmVhZHNfbG9jayk7Ci0rICAgICAgZ29tcF9t YW5hZ2VkX3RocmVhZHMgKz0gZGlmZjsKLSsgICAgICBnb21wX211dGV4X3VubG9jayAoJmdvbXBf cmVtYWluaW5nX3RocmVhZHNfbG9jayk7Ci0rI2VuZGlmCi0rICAgIH0KLSB9Ci0gCi0gCi1AQCAt MzI5LDggKzM4MiwyMSBAQCBnb21wX3RlYW1fZW5kICh2b2lkKQotIAotICAgZ29tcF9iYXJyaWVy X3dhaXQgKCZ0ZWFtLT5iYXJyaWVyKTsKLSAKLSsgIGdvbXBfZmluaV93b3JrX3NoYXJlICh0aHIt PnRzLndvcmtfc2hhcmUpOwotKwotICAgdGhyLT50cyA9IHRlYW0tPnByZXZfdHM7Ci0gCi0rICBp ZiAoX19idWlsdGluX2V4cGVjdCAodGhyLT50cy50ZWFtICE9IE5VTEwsIDApKQotKyAgICB7Ci0r I2lmZGVmIEhBVkVfU1lOQ19CVUlMVElOUwotKyAgICAgIF9fc3luY19mZXRjaF9hbmRfYWRkICgm Z29tcF9tYW5hZ2VkX3RocmVhZHMsIDFMIC0gdGVhbS0+bnRocmVhZHMpOwotKyNlbHNlCi0rICAg ICAgZ29tcF9tdXRleF9sb2NrICgmZ29tcF9yZW1haW5pbmdfdGhyZWFkc19sb2NrKTsKLSsgICAg ICBnb21wX21hbmFnZWRfdGhyZWFkcyAtPSB0ZWFtLT5udGhyZWFkcyAtIDFMOwotKyAgICAgIGdv bXBfbXV0ZXhfdW5sb2NrICgmZ29tcF9yZW1haW5pbmdfdGhyZWFkc19sb2NrKTsKLSsjZW5kaWYK LSsgICAgfQotKwotICAgZnJlZV90ZWFtICh0ZWFtKTsKLSB9Ci0gCi0tLS0gbGliZ29tcC9jb25m aWcvcG9zaXgvYmFyLmguamoJMjAwNy0xMi0wNyAxNDo0MTowMS4wMDAwMDAwMDAgKzAxMDAKLSsr KyBsaWJnb21wL2NvbmZpZy9wb3NpeC9iYXIuaAkyMDA4LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAw MCArMDEwMAotQEAgLTEsNCArMSw0IEBACi0tLyogQ29weXJpZ2h0IChDKSAyMDA1IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMjAwNSwgMjAwOCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAgICBDb250cmlidXRlZCBieSBSaWNoYXJkIEhl bmRlcnNvbiA8cnRoQHJlZGhhdC5jb20+LgotIAotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgT3Blbk1QIExpYnJhcnkgKGxpYmdvbXApLgotQEAgLTQ2LDE4ICs0NiwzMiBAQCB0eXBl ZGVmIHN0cnVjdAotICAgdW5zaWduZWQgdG90YWw7Ci0gICB1bnNpZ25lZCBhcnJpdmVkOwotIH0g Z29tcF9iYXJyaWVyX3Q7Ci0rdHlwZWRlZiBib29sIGdvbXBfYmFycmllcl9zdGF0ZV90OwotIAot IGV4dGVybiB2b2lkIGdvbXBfYmFycmllcl9pbml0IChnb21wX2JhcnJpZXJfdCAqLCB1bnNpZ25l ZCk7Ci0gZXh0ZXJuIHZvaWQgZ29tcF9iYXJyaWVyX3JlaW5pdCAoZ29tcF9iYXJyaWVyX3QgKiwg dW5zaWduZWQpOwotIGV4dGVybiB2b2lkIGdvbXBfYmFycmllcl9kZXN0cm95IChnb21wX2JhcnJp ZXJfdCAqKTsKLSAKLSBleHRlcm4gdm9pZCBnb21wX2JhcnJpZXJfd2FpdCAoZ29tcF9iYXJyaWVy X3QgKik7Ci0tZXh0ZXJuIHZvaWQgZ29tcF9iYXJyaWVyX3dhaXRfZW5kIChnb21wX2JhcnJpZXJf dCAqLCBib29sKTsKLStleHRlcm4gdm9pZCBnb21wX2JhcnJpZXJfd2FpdF9lbmQgKGdvbXBfYmFy cmllcl90ICosIGdvbXBfYmFycmllcl9zdGF0ZV90KTsKLSAKLS1zdGF0aWMgaW5saW5lIGJvb2wg Z29tcF9iYXJyaWVyX3dhaXRfc3RhcnQgKGdvbXBfYmFycmllcl90ICpiYXIpCi0rc3RhdGljIGlu bGluZSBnb21wX2JhcnJpZXJfc3RhdGVfdAotK2dvbXBfYmFycmllcl93YWl0X3N0YXJ0IChnb21w X2JhcnJpZXJfdCAqYmFyKQotIHsKLSAgIGdvbXBfbXV0ZXhfbG9jayAoJmJhci0+bXV0ZXgxKTsK LSAgIHJldHVybiArK2Jhci0+YXJyaXZlZCA9PSBiYXItPnRvdGFsOwotIH0KLSAKLStzdGF0aWMg aW5saW5lIGJvb2wKLStnb21wX2JhcnJpZXJfbGFzdF90aHJlYWQgKGdvbXBfYmFycmllcl9zdGF0 ZV90IHN0YXRlKQotK3sKLSsgIHJldHVybiBzdGF0ZTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSB2 b2lkCi0rZ29tcF9iYXJyaWVyX3dhaXRfbGFzdCAoZ29tcF9iYXJyaWVyX3QgKmJhcikKLSt7Ci0r ICBnb21wX2JhcnJpZXJfd2FpdCAoYmFyKTsKLSt9Ci0rCi0gI2VuZGlmIC8qIEdPTVBfQkFSUklF Ul9IICovCi0tLS0gbGliZ29tcC9jb25maWcvcG9zaXgvcHRybG9jay5oLmpqCTIwMDgtMDMtMjYg MTU6MTE6MzIuMDAwMDAwMDAwICswMTAwCi0rKysgbGliZ29tcC9jb25maWcvcG9zaXgvcHRybG9j ay5oCTIwMDgtMDMtMjYgMTU6MTE6MzIuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDY5IEBA Ci0rLyogQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KyAgIENvbnRyaWJ1dGVkIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKwot KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT3Blbk1QIExpYnJhcnkgKGxpYmdvbXAp LgotKwotKyAgIExpYmdvbXAgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IK LSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIExpYmdvbXAg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJ VEhPVVQgQU5ZCi0rICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwotKyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgotKyAg IG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgCi0rICAgYWxvbmcgd2l0aCBs aWJnb21wOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvIHRoZQot KyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG aWZ0aCBGbG9vciwgQm9zdG9uLAotKyAgIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCi0rCi0rLyog QXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgeW91IGxpbmsgdGhpcyBsaWJyYXJ5IHdpdGggb3Ro ZXIgZmlsZXMsIHNvbWUKLSsgICBvZiB3aGljaCBhcmUgY29tcGlsZWQgd2l0aCBHQ0MsIHRvIHBy b2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcyBsaWJyYXJ5Ci0rICAgZG9lcyBub3QgYnkgaXRzZWxm IGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZQotKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93 ZXZlciBpbnZhbGlkYXRlCi0rICAgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxl IGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZS4gICovCi0rCi0rLyogVGhpcyBpcyBhIExpbnV4IHNwZWNpZmljIGltcGxlbWVudGF0aW9u IG9mIGEgbXV0ZXggc3luY2hyb25pemF0aW9uCi0rICAgbWVjaGFuaXNtIGZvciBsaWJnb21wLiAg VGhpcyB0eXBlIGlzIHByaXZhdGUgdG8gdGhlIGxpYnJhcnkuICBUaGlzCi0rICAgaW1wbGVtZW50 YXRpb24gdXNlcyBhdG9taWMgaW5zdHJ1Y3Rpb25zIGFuZCB0aGUgZnV0ZXggc3lzY2FsbC4gICov Ci0rCi0rI2lmbmRlZiBHT01QX1BUUkxPQ0tfSAotKyNkZWZpbmUgR09NUF9QVFJMT0NLX0ggMQot KwotK3R5cGVkZWYgc3RydWN0IHsgdm9pZCAqcHRyOyBnb21wX211dGV4X3QgbG9jazsgfSBnb21w X3B0cmxvY2tfdDsKLSsKLStzdGF0aWMgaW5saW5lIHZvaWQgZ29tcF9wdHJsb2NrX2luaXQgKGdv bXBfcHRybG9ja190ICpwdHJsb2NrLCB2b2lkICpwdHIpCi0rewotKyAgcHRybG9jay0+cHRyID0g cHRyOwotKyAgZ29tcF9tdXRleF9pbml0ICgmcHRybG9jay0+bG9jayk7Ci0rfQotKwotK3N0YXRp YyBpbmxpbmUgdm9pZCAqZ29tcF9wdHJsb2NrX2dldCAoZ29tcF9wdHJsb2NrX3QgKnB0cmxvY2sp Ci0rewotKyAgaWYgKHB0cmxvY2stPnB0ciAhPSBOVUxMKQotKyAgICByZXR1cm4gcHRybG9jay0+ cHRyOwotKwotKyAgZ29tcF9tdXRleF9sb2NrICgmcHRybG9jay0+bG9jayk7Ci0rICBpZiAocHRy bG9jay0+cHRyICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBnb21wX211dGV4X3VubG9jayAoJnB0 cmxvY2stPmxvY2spOwotKyAgICAgIHJldHVybiBwdHJsb2NrLT5wdHI7Ci0rICAgIH0KLSsKLSsg IHJldHVybiBOVUxMOwotK30KLSsKLStzdGF0aWMgaW5saW5lIHZvaWQgZ29tcF9wdHJsb2NrX3Nl dCAoZ29tcF9wdHJsb2NrX3QgKnB0cmxvY2ssIHZvaWQgKnB0cikKLSt7Ci0rICBwdHJsb2NrLT5w dHIgPSBwdHI7Ci0rICBnb21wX211dGV4X3VubG9jayAoJnB0cmxvY2stPmxvY2spOwotK30KLSsK LStzdGF0aWMgaW5saW5lIHZvaWQgZ29tcF9wdHJsb2NrX2Rlc3Ryb3kgKGdvbXBfcHRybG9ja190 ICpwdHJsb2NrKQotK3sKLSsgIGdvbXBfbXV0ZXhfZGVzdHJveSAoJnB0cmxvY2stPmxvY2spOwot K30KLSsKLSsjZW5kaWYgLyogR09NUF9QVFJMT0NLX0ggKi8KLS0tLSBsaWJnb21wL2NvbmZpZy9w b3NpeC9wdHJsb2NrLmMuamoJMjAwOC0wMy0yNiAxNToxMTozMi4wMDAwMDAwMDAgKzAxMDAKLSsr KyBsaWJnb21wL2NvbmZpZy9wb3NpeC9wdHJsb2NrLmMJMjAwOC0wMy0yNiAxNToxMTozMi4wMDAw MDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEgQEAKLSsvKiBFdmVyeXRoaW5nIGlzIGluIHRoZSBoZWFk ZXIuICAqLwotLS0tIGxpYmdvbXAvY29uZmlnL3Bvc2l4L2Jhci5jLmpqCTIwMDctMTItMDcgMTQ6 NDE6MDEuMDAwMDAwMDAwICswMTAwCi0rKysgbGliZ29tcC9jb25maWcvcG9zaXgvYmFyLmMJMjAw OC0wMy0yNiAxNToxMTozMi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xLDQgKzEsNCBAQAotLS8qIENv cHlyaWdodCAoQykgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5 cmlnaHQgKEMpIDIwMDUsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gICAg Q29udHJpYnV0ZWQgYnkgUmljaGFyZCBIZW5kZXJzb24gPHJ0aEByZWRoYXQuY29tPi4KLSAKLSAg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9wZW5NUCBMaWJyYXJ5IChsaWJnb21wKS4K LUBAIC03MCw3ICs3MCw3IEBAIGdvbXBfYmFycmllcl9yZWluaXQgKGdvbXBfYmFycmllcl90ICpi YXIKLSB9Ci0gCi0gdm9pZAotLWdvbXBfYmFycmllcl93YWl0X2VuZCAoZ29tcF9iYXJyaWVyX3Qg KmJhciwgYm9vbCBsYXN0KQotK2dvbXBfYmFycmllcl93YWl0X2VuZCAoZ29tcF9iYXJyaWVyX3Qg KmJhciwgZ29tcF9iYXJyaWVyX3N0YXRlX3QgbGFzdCkKLSB7Ci0gICB1bnNpZ25lZCBpbnQgbjsK LSAKLS0tLSBsaWJnb21wL2NvbmZpZy9saW51eC9hbHBoYS9mdXRleC5oLmpqCTIwMDctMTItMDcg MTQ6NDE6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgbGliZ29tcC9jb25maWcvbGludXgvYWxwaGEv ZnV0ZXguaAkyMDA4LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAotQEAgLTEsNCArMSw0 IEBACi0tLyogQ29weXJpZ2h0IChDKSAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKy8qIENvcHlyaWdodCAoQykgMjAwNSwgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSAgICBDb250cmlidXRlZCBieSBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHJlZGhhdC5j b20+LgotIAotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT3Blbk1QIExpYnJhcnkg KGxpYmdvbXApLgotQEAgLTMwLDggKzMwLDYgQEAKLSAjaWZuZGVmIFNZU19mdXRleAotICNkZWZp bmUgU1lTX2Z1dGV4ICAgICAgICAgICAgICAgMzk0Ci0gI2VuZGlmCi0tI2RlZmluZSBGVVRFWF9X QUlUICAgICAgICAgICAgICAwCi0tI2RlZmluZSBGVVRFWF9XQUtFICAgICAgICAgICAgICAxCi0g Ci0gCi0gc3RhdGljIGlubGluZSB2b2lkCi1AQCAtNDUsNyArNDMsNyBAQCBmdXRleF93YWl0IChp bnQgKmFkZHIsIGludCB2YWwpCi0gCi0gICBzY18wID0gU1lTX2Z1dGV4OwotICAgc2NfMTYgPSAo bG9uZykgYWRkcjsKLS0gIHNjXzE3ID0gRlVURVhfV0FJVDsKLSsgIHNjXzE3ID0gZ29tcF9mdXRl eF93YWl0OwotICAgc2NfMTggPSB2YWw7Ci0gICBzY18xOSA9IDA7Ci0gICBfX2FzbSB2b2xhdGls ZSAoImNhbGxzeXMiCi1AQCAtNTMsNiArNTEsMjAgQEAgZnV0ZXhfd2FpdCAoaW50ICphZGRyLCBp bnQgdmFsKQotIAkJICA6ICIwIihzY18wKSwgInIiIChzY18xNiksICJyIihzY18xNyksICJyIihz Y18xOCksICIxIihzY18xOSkKLSAJCSAgOiAiJDEiLCAiJDIiLCAiJDMiLCAiJDQiLCAiJDUiLCAi JDYiLCAiJDciLCAiJDgiLAotIAkJICAgICIkMjIiLCAiJDIzIiwgIiQyNCIsICIkMjUiLCAiJDI3 IiwgIiQyOCIsICJtZW1vcnkiKTsKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChzY18xOSwgMCkg JiYgc2NfMCA9PSBFTk9TWVMpCi0rICAgIHsKLSsgICAgICBnb21wX2Z1dGV4X3dhaXQgJj0gfkZV VEVYX1BSSVZBVEVfRkxBRzsKLSsgICAgICBnb21wX2Z1dGV4X3dha2UgJj0gfkZVVEVYX1BSSVZB VEVfRkxBRzsKLSsgICAgICBzY18wID0gU1lTX2Z1dGV4OwotKyAgICAgIHNjXzE3ICY9IH5GVVRF WF9QUklWQVRFX0ZMQUc7Ci0rICAgICAgc2NfMTkgPSAwOwotKyAgICAgIF9fYXNtIHZvbGF0aWxl ICgiY2FsbHN5cyIKLSsJCSAgICAgIDogIj1yIiAoc2NfMCksICI9ciIoc2NfMTkpCi0rCQkgICAg ICA6ICIwIihzY18wKSwgInIiIChzY18xNiksICJyIihzY18xNyksICJyIihzY18xOCksCi0rCQkJ IjEiKHNjXzE5KQotKwkJICAgICAgOiAiJDEiLCAiJDIiLCAiJDMiLCAiJDQiLCAiJDUiLCAiJDYi LCAiJDciLCAiJDgiLAotKwkJCSIkMjIiLCAiJDIzIiwgIiQyNCIsICIkMjUiLCAiJDI3IiwgIiQy OCIsICJtZW1vcnkiKTsKLSsgICAgfQotIH0KLSAKLSBzdGF0aWMgaW5saW5lIHZvaWQKLUBAIC02 NiwxMSArNzgsMzUgQEAgZnV0ZXhfd2FrZSAoaW50ICphZGRyLCBpbnQgY291bnQpCi0gCi0gICBz Y18wID0gU1lTX2Z1dGV4OwotICAgc2NfMTYgPSAobG9uZykgYWRkcjsKLS0gIHNjXzE3ID0gRlVU RVhfV0FLRTsKLSsgIHNjXzE3ID0gZ29tcF9mdXRleF93YWtlOwotICAgc2NfMTggPSBjb3VudDsK LSAgIF9fYXNtIHZvbGF0aWxlICgiY2FsbHN5cyIKLSAJCSAgOiAiPXIiIChzY18wKSwgIj1yIihz Y18xOSkKLSAJCSAgOiAiMCIoc2NfMCksICJyIiAoc2NfMTYpLCAiciIoc2NfMTcpLCAiciIoc2Nf MTgpCi0gCQkgIDogIiQxIiwgIiQyIiwgIiQzIiwgIiQ0IiwgIiQ1IiwgIiQ2IiwgIiQ3IiwgIiQ4 IiwKLSAJCSAgICAiJDIyIiwgIiQyMyIsICIkMjQiLCAiJDI1IiwgIiQyNyIsICIkMjgiLCAibWVt b3J5Iik7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoc2NfMTksIDApICYmIHNjXzAgPT0gRU5P U1lTKQotKyAgICB7Ci0rICAgICAgZ29tcF9mdXRleF93YWl0ICY9IH5GVVRFWF9QUklWQVRFX0ZM QUc7Ci0rICAgICAgZ29tcF9mdXRleF93YWtlICY9IH5GVVRFWF9QUklWQVRFX0ZMQUc7Ci0rICAg ICAgc2NfMCA9IFNZU19mdXRleDsKLSsgICAgICBzY18xNyAmPSB+RlVURVhfUFJJVkFURV9GTEFH OwotKyAgICAgIF9fYXNtIHZvbGF0aWxlICgiY2FsbHN5cyIKLSsJCSAgICAgIDogIj1yIiAoc2Nf MCksICI9ciIoc2NfMTkpCi0rCQkgICAgICA6ICIwIihzY18wKSwgInIiIChzY18xNiksICJyIihz Y18xNyksICJyIihzY18xOCkKLSsJCSAgICAgIDogIiQxIiwgIiQyIiwgIiQzIiwgIiQ0IiwgIiQ1 IiwgIiQ2IiwgIiQ3IiwgIiQ4IiwKLSsJCQkiJDIyIiwgIiQyMyIsICIkMjQiLCAiJDI1IiwgIiQy NyIsICIkMjgiLCAibWVtb3J5Iik7Ci0rICAgIH0KLSt9Ci0rCi0rc3RhdGljIGlubGluZSB2b2lk Ci0rY3B1X3JlbGF4ICh2b2lkKQotK3sKLSsgIF9fYXNtIHZvbGF0aWxlICgiIiA6IDogOiAibWVt b3J5Iik7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdm9pZAotK2F0b21pY193cml0ZV9iYXJyaWVy ICh2b2lkKQotK3sKLSsgIF9fYXNtIHZvbGF0aWxlICgid21iIiA6IDogOiAibWVtb3J5Iik7Ci0g fQotLS0tIGxpYmdvbXAvY29uZmlnL2xpbnV4L2FmZmluaXR5LmMuamoJMjAwNy0xMi0wNyAxNDo0 MTowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBsaWJnb21wL2NvbmZpZy9saW51eC9hZmZpbml0eS5j CTIwMDgtMDMtMjYgMTU6MTE6MzIuMDAwMDAwMDAwICswMTAwCi1AQCAtMSw0ICsxLDQgQEAKLS0v KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rLyogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotICAgIENvbnRyaWJ1dGVkIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhh dC5jb20+LgotIAotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT3Blbk1QIExpYnJh cnkgKGxpYmdvbXApLgotQEAgLTM4LDkgKzM4LDYgQEAKLSAjaWZkZWYgSEFWRV9QVEhSRUFEX0FG RklOSVRZX05QCi0gCi0gc3RhdGljIHVuc2lnbmVkIGludCBhZmZpbml0eV9jb3VudGVyOwotLSNp Zm5kZWYgSEFWRV9TWU5DX0JVSUxUSU5TCi0tc3RhdGljIGdvbXBfbXV0ZXhfdCBhZmZpbml0eV9s b2NrOwotLSNlbmRpZgotIAotIHZvaWQKLSBnb21wX2luaXRfYWZmaW5pdHkgKHZvaWQpCi1AQCAt NzYsOSArNzMsNiBAQCBnb21wX2luaXRfYWZmaW5pdHkgKHZvaWQpCi0gICBDUFVfU0VUIChnb21w X2NwdV9hZmZpbml0eVswXSwgJmNwdXNldCk7Ci0gICBwdGhyZWFkX3NldGFmZmluaXR5X25wIChw dGhyZWFkX3NlbGYgKCksIHNpemVvZiAoY3B1c2V0KSwgJmNwdXNldCk7Ci0gICBhZmZpbml0eV9j b3VudGVyID0gMTsKLS0jaWZuZGVmIEhBVkVfU1lOQ19CVUlMVElOUwotLSAgZ29tcF9tdXRleF9p bml0ICgmYWZmaW5pdHlfbG9jayk7Ci0tI2VuZGlmCi0gfQotIAotIHZvaWQKLUBAIC04NywxMyAr ODEsNyBAQCBnb21wX2luaXRfdGhyZWFkX2FmZmluaXR5IChwdGhyZWFkX2F0dHJfCi0gICB1bnNp Z25lZCBpbnQgY3B1OwotICAgY3B1X3NldF90IGNwdXNldDsKLSAKLS0jaWZkZWYgSEFWRV9TWU5D X0JVSUxUSU5TCi0gICBjcHUgPSBfX3N5bmNfZmV0Y2hfYW5kX2FkZCAoJmFmZmluaXR5X2NvdW50 ZXIsIDEpOwotLSNlbHNlCi0tICBnb21wX211dGV4X2xvY2sgKCZhZmZpbml0eV9sb2NrKTsKLS0g IGNwdSA9IGFmZmluaXR5X2NvdW50ZXIrKzsKLS0gIGdvbXBfbXV0ZXhfdW5sb2NrICgmYWZmaW5p dHlfbG9jayk7Ci0tI2VuZGlmCi0gICBjcHUgJT0gZ29tcF9jcHVfYWZmaW5pdHlfbGVuOwotICAg Q1BVX1pFUk8gKCZjcHVzZXQpOwotICAgQ1BVX1NFVCAoZ29tcF9jcHVfYWZmaW5pdHlbY3B1XSwg JmNwdXNldCk7Ci0tLS0gbGliZ29tcC9jb25maWcvbGludXgvYmFyLmguamoJMjAwNy0xMi0wNyAx NDo0MTowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBsaWJnb21wL2NvbmZpZy9saW51eC9iYXIuaAky MDA4LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAotQEAgLTEsNCArMSw0IEBACi0tLyog Q29weXJpZ2h0IChDKSAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENv cHlyaWdodCAoQykgMjAwNSwgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAg ICBDb250cmlidXRlZCBieSBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHJlZGhhdC5jb20+LgotIAot ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT3Blbk1QIExpYnJhcnkgKGxpYmdvbXAp LgotQEAgLTM2LDQwICszNiw0OSBAQAotIAotIHR5cGVkZWYgc3RydWN0Ci0gewotLSAgZ29tcF9t dXRleF90IG11dGV4OwotLSAgdW5zaWduZWQgdG90YWw7Ci0tICB1bnNpZ25lZCBhcnJpdmVkOwot LSAgaW50IGdlbmVyYXRpb247Ci0rICAvKiBNYWtlIHN1cmUgdG90YWwvZ2VuZXJhdGlvbiBpcyBp biBhIG1vc3RseSByZWFkIGNhY2hlbGluZSwgd2hpbGUKLSsgICAgIGF3YWl0ZWQgaW4gYSBzZXBh cmF0ZSBjYWNoZWxpbmUuICAqLwotKyAgdW5zaWduZWQgdG90YWwgX19hdHRyaWJ1dGVfXygoYWxp Z25lZCAoNjQpKSk7Ci0rICB1bnNpZ25lZCBnZW5lcmF0aW9uOwotKyAgdW5zaWduZWQgYXdhaXRl ZCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkICg2NCkpKTsKLSB9IGdvbXBfYmFycmllcl90OwotK3R5 cGVkZWYgdW5zaWduZWQgaW50IGdvbXBfYmFycmllcl9zdGF0ZV90OwotIAotIHN0YXRpYyBpbmxp bmUgdm9pZCBnb21wX2JhcnJpZXJfaW5pdCAoZ29tcF9iYXJyaWVyX3QgKmJhciwgdW5zaWduZWQg Y291bnQpCi0gewotLSAgZ29tcF9tdXRleF9pbml0ICgmYmFyLT5tdXRleCk7Ci0gICBiYXItPnRv dGFsID0gY291bnQ7Ci0tICBiYXItPmFycml2ZWQgPSAwOwotKyAgYmFyLT5hd2FpdGVkID0gY291 bnQ7Ci0gICBiYXItPmdlbmVyYXRpb24gPSAwOwotIH0KLSAKLSBzdGF0aWMgaW5saW5lIHZvaWQg Z29tcF9iYXJyaWVyX3JlaW5pdCAoZ29tcF9iYXJyaWVyX3QgKmJhciwgdW5zaWduZWQgY291bnQp Ci0gewotLSAgZ29tcF9tdXRleF9sb2NrICgmYmFyLT5tdXRleCk7Ci0rICBfX3N5bmNfZmV0Y2hf YW5kX2FkZCAoJmJhci0+YXdhaXRlZCwgY291bnQgLSBiYXItPnRvdGFsKTsKLSAgIGJhci0+dG90 YWwgPSBjb3VudDsKLS0gIGdvbXBfbXV0ZXhfdW5sb2NrICgmYmFyLT5tdXRleCk7Ci0gfQotIAot IHN0YXRpYyBpbmxpbmUgdm9pZCBnb21wX2JhcnJpZXJfZGVzdHJveSAoZ29tcF9iYXJyaWVyX3Qg KmJhcikKLSB7Ci0tICAvKiBCZWZvcmUgZGVzdHJveWluZywgbWFrZSBzdXJlIGFsbCB0aHJlYWRz IGhhdmUgbGVmdCB0aGUgYmFycmllci4gICovCi0tICBnb21wX211dGV4X2xvY2sgKCZiYXItPm11 dGV4KTsKLSB9Ci0gCi0gZXh0ZXJuIHZvaWQgZ29tcF9iYXJyaWVyX3dhaXQgKGdvbXBfYmFycmll cl90ICopOwotLWV4dGVybiB2b2lkIGdvbXBfYmFycmllcl93YWl0X2VuZCAoZ29tcF9iYXJyaWVy X3QgKiwgYm9vbCk7Ci0rZXh0ZXJuIHZvaWQgZ29tcF9iYXJyaWVyX3dhaXRfbGFzdCAoZ29tcF9i YXJyaWVyX3QgKik7Ci0rZXh0ZXJuIHZvaWQgZ29tcF9iYXJyaWVyX3dhaXRfZW5kIChnb21wX2Jh cnJpZXJfdCAqLCBnb21wX2JhcnJpZXJfc3RhdGVfdCk7Ci0gCi0tc3RhdGljIGlubGluZSBib29s IGdvbXBfYmFycmllcl93YWl0X3N0YXJ0IChnb21wX2JhcnJpZXJfdCAqYmFyKQotK3N0YXRpYyBp bmxpbmUgZ29tcF9iYXJyaWVyX3N0YXRlX3QKLStnb21wX2JhcnJpZXJfd2FpdF9zdGFydCAoZ29t cF9iYXJyaWVyX3QgKmJhcikKLSB7Ci0tICBnb21wX211dGV4X2xvY2sgKCZiYXItPm11dGV4KTsK LS0gIHJldHVybiArK2Jhci0+YXJyaXZlZCA9PSBiYXItPnRvdGFsOwotKyAgdW5zaWduZWQgaW50 IHJldCA9IGJhci0+Z2VuZXJhdGlvbjsKLSsgIC8qIERvIHdlIG5lZWQgYW55IGJhcnJpZXIgaGVy ZSBvciBpcyBfX3N5bmNfYWRkX2FuZF9mZXRjaCBhY3RpbmcKLSsgICAgIGFzIHRoZSBuZWVkZWQg TG9hZExvYWQgYmFycmllciBhbHJlYWR5PyAgKi8KLSsgIHJldCArPSBfX3N5bmNfYWRkX2FuZF9m ZXRjaCAoJmJhci0+YXdhaXRlZCwgLTEpID09IDA7Ci0rICByZXR1cm4gcmV0OwotK30KLSsKLStz dGF0aWMgaW5saW5lIGJvb2wKLStnb21wX2JhcnJpZXJfbGFzdF90aHJlYWQgKGdvbXBfYmFycmll cl9zdGF0ZV90IHN0YXRlKQotK3sKLSsgIHJldHVybiBzdGF0ZSAmIDE7Ci0gfQotIAotICNlbmRp ZiAvKiBHT01QX0JBUlJJRVJfSCAqLwotLS0tIGxpYmdvbXAvY29uZmlnL2xpbnV4L3B0cmxvY2su aC5qagkyMDA4LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAotKysrIGxpYmdvbXAvY29u ZmlnL2xpbnV4L3B0cmxvY2suaAkyMDA4LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAot QEAgLTAsMCArMSw2NSBAQAotKy8qIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSsgICBDb250cmlidXRlZCBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkBy ZWRoYXQuY29tPi4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9wZW5NUCBM aWJyYXJ5IChsaWJnb21wKS4KLSsKLSsgICBMaWJnb21wIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSsKLSsgICBMaWJnb21wIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQotKyAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKLSsgICBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IKLSsgICBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIAot KyAgIGFsb25nIHdpdGggbGliZ29tcDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90 LCB3cml0ZSB0byB0aGUKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwKLSsgICBNQSAwMjExMC0xMzAxLCBV U0EuICAqLwotKwotKy8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIHlvdSBsaW5rIHRoaXMg bGlicmFyeSB3aXRoIG90aGVyIGZpbGVzLCBzb21lCi0rICAgb2Ygd2hpY2ggYXJlIGNvbXBpbGVk IHdpdGggR0NDLCB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMgbGlicmFyeQotKyAgIGRv ZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292 ZXJlZCBieSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0 aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZQotKyAgIGFueSBvdGhlciByZWFzb25zIHdo eSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlIEdOVQotKyAgIEdl bmVyYWwgUHVibGljIExpY2Vuc2UuICAqLwotKwotKy8qIFRoaXMgaXMgYSBMaW51eCBzcGVjaWZp YyBpbXBsZW1lbnRhdGlvbiBvZiBhIG11dGV4IHN5bmNocm9uaXphdGlvbgotKyAgIG1lY2hhbmlz bSBmb3IgbGliZ29tcC4gIFRoaXMgdHlwZSBpcyBwcml2YXRlIHRvIHRoZSBsaWJyYXJ5LiAgVGhp cwotKyAgIGltcGxlbWVudGF0aW9uIHVzZXMgYXRvbWljIGluc3RydWN0aW9ucyBhbmQgdGhlIGZ1 dGV4IHN5c2NhbGwuICAqLwotKwotKyNpZm5kZWYgR09NUF9QVFJMT0NLX0gKLSsjZGVmaW5lIEdP TVBfUFRSTE9DS19IIDEKLSsKLSt0eXBlZGVmIHZvaWQgKmdvbXBfcHRybG9ja190OwotKwotK3N0 YXRpYyBpbmxpbmUgdm9pZCBnb21wX3B0cmxvY2tfaW5pdCAoZ29tcF9wdHJsb2NrX3QgKnB0cmxv Y2ssIHZvaWQgKnB0cikKLSt7Ci0rICAqcHRybG9jayA9IHB0cjsKLSt9Ci0rCi0rZXh0ZXJuIHZv aWQgKmdvbXBfcHRybG9ja19nZXRfc2xvdyAoZ29tcF9wdHJsb2NrX3QgKnB0cmxvY2spOwotK3N0 YXRpYyBpbmxpbmUgdm9pZCAqZ29tcF9wdHJsb2NrX2dldCAoZ29tcF9wdHJsb2NrX3QgKnB0cmxv Y2spCi0rewotKyAgaWYgKCh1aW50cHRyX3QpICpwdHJsb2NrID4gMikKLSsgICAgcmV0dXJuICpw dHJsb2NrOwotKwotKyAgaWYgKF9fc3luY19ib29sX2NvbXBhcmVfYW5kX3N3YXAgKHB0cmxvY2ss IE5VTEwsICh1aW50cHRyX3QpIDEpKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIHJldHVybiBn b21wX3B0cmxvY2tfZ2V0X3Nsb3cgKHB0cmxvY2spOwotK30KLSsKLStleHRlcm4gdm9pZCBnb21w X3B0cmxvY2tfc2V0X3Nsb3cgKGdvbXBfcHRybG9ja190ICpwdHJsb2NrLCB2b2lkICpwdHIpOwot K3N0YXRpYyBpbmxpbmUgdm9pZCBnb21wX3B0cmxvY2tfc2V0IChnb21wX3B0cmxvY2tfdCAqcHRy bG9jaywgdm9pZCAqcHRyKQotK3sKLSsgIGlmICghX19zeW5jX2Jvb2xfY29tcGFyZV9hbmRfc3dh cCAocHRybG9jaywgKHVpbnRwdHJfdCkgMSwgcHRyKSkKLSsgICAgZ29tcF9wdHJsb2NrX3NldF9z bG93IChwdHJsb2NrLCBwdHIpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIHZvaWQgZ29tcF9wdHJs b2NrX2Rlc3Ryb3kgKGdvbXBfcHRybG9ja190ICpwdHJsb2NrKQotK3sKLSt9Ci0rCi0rI2VuZGlm IC8qIEdPTVBfUFRSTE9DS19IICovCi0tLS0gbGliZ29tcC9jb25maWcvbGludXgvbG9jay5jLmpq CTIwMDctMTItMDcgMTQ6NDE6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgbGliZ29tcC9jb25maWcv bGludXgvbG9jay5jCTIwMDgtMDMtMjYgMTU6MTE6MzIuMDAwMDAwMDAwICswMTAwCi1AQCAtMjks MTEgKzI5LDEwIEBACi0gICAgcHJpbWl0aXZlcy4gIFRoaXMgaW1wbGVtZW50YXRpb24gdXNlcyBh dG9taWMgaW5zdHJ1Y3Rpb25zIGFuZCB0aGUgZnV0ZXgKLSAgICBzeXNjYWxsLiAgKi8KLSAKLS0j aW5jbHVkZSAibGliZ29tcC5oIgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5p c3RkLmg+Ci0gI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0tI2luY2x1ZGUgImZ1dGV4LmgiCi0r I2luY2x1ZGUgIndhaXQuaCIKLSAKLSAKLSAvKiBUaGUgaW50ZXJuYWwgZ29tcF9tdXRleF90IGFu ZCB0aGUgZXh0ZXJuYWwgbm9uLXJlY3Vyc2l2ZSBvbXBfbG9ja190Ci1AQCAtMTM3LDcgKzEzNiw3 IEBAIG9tcF9zZXRfbmVzdF9sb2NrIChvbXBfbmVzdF9sb2NrX3QgKmxvY2sKLSAJICByZXR1cm47 Ci0gCX0KLSAKLS0gICAgICBmdXRleF93YWl0ICgmbG9jay0+b3duZXIsIG90aWQpOwotKyAgICAg IGRvX3dhaXQgKCZsb2NrLT5vd25lciwgb3RpZCk7Ci0gICAgIH0KLSB9Ci0gCi0tLS0gbGliZ29t cC9jb25maWcvbGludXgvcHRybG9jay5jLmpqCTIwMDgtMDMtMjYgMTU6MTE6MzIuMDAwMDAwMDAw ICswMTAwCi0rKysgbGliZ29tcC9jb25maWcvbGludXgvcHRybG9jay5jCTIwMDgtMDMtMjYgMTU6 MTE6MzIuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDcwIEBACi0rLyogQ29weXJpZ2h0IChD KSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIENvbnRyaWJ1dGVkIGJ5 IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKwotKyAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBHTlUgT3Blbk1QIExpYnJhcnkgKGxpYmdvbXApLgotKwotKyAgIExpYmdvbXAg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBp dAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIExpYmdvbXAgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCi0rICAgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUwotKyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgotKyAgIG1vcmUgZGV0YWlscy4KLSsK LSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgCi0rICAgYWxvbmcgd2l0aCBsaWJnb21wOyBzZWUgdGhlIGZp bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvIHRoZQotKyAgIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u LAotKyAgIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCi0rCi0rLyogQXMgYSBzcGVjaWFsIGV4Y2Vw dGlvbiwgaWYgeW91IGxpbmsgdGhpcyBsaWJyYXJ5IHdpdGggb3RoZXIgZmlsZXMsIHNvbWUKLSsg ICBvZiB3aGljaCBhcmUgY29tcGlsZWQgd2l0aCBHQ0MsIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJs ZSwgdGhpcyBsaWJyYXJ5Ci0rICAgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRp bmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlCi0r ICAgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292 ZXJlZCBieSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gICovCi0rCi0rLyog VGhpcyBpcyBhIExpbnV4IHNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIGEgbXV0ZXggc3luY2hy b25pemF0aW9uCi0rICAgbWVjaGFuaXNtIGZvciBsaWJnb21wLiAgVGhpcyB0eXBlIGlzIHByaXZh dGUgdG8gdGhlIGxpYnJhcnkuICBUaGlzCi0rICAgaW1wbGVtZW50YXRpb24gdXNlcyBhdG9taWMg aW5zdHJ1Y3Rpb25zIGFuZCB0aGUgZnV0ZXggc3lzY2FsbC4gICovCi0rCi0rI2luY2x1ZGUgPGVu ZGlhbi5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaW5jbHVkZSAid2FpdC5oIgotKwotK3Zv aWQgKgotK2dvbXBfcHRybG9ja19nZXRfc2xvdyAoZ29tcF9wdHJsb2NrX3QgKnB0cmxvY2spCi0r ewotKyAgaW50ICppbnRwdHI7Ci0rICBfX3N5bmNfYm9vbF9jb21wYXJlX2FuZF9zd2FwIChwdHJs b2NrLCAxLCAyKTsKLSsKLSsgIC8qIGZ1dGV4IHdvcmtzIG9uIGludHMsIG5vdCBwb2ludGVycy4K LSsgICAgIEJ1dCBhIHZhbGlkIHdvcmsgc2hhcmUgcG9pbnRlciB3aWxsIGJlIGF0IGxlYXN0Ci0r ICAgICA4IGJ5dGUgYWxpZ25lZCwgc28gaXQgaXMgc2FmZSB0byBhc3N1bWUgdGhlIGxvdwotKyAg ICAgMzItYml0cyBvZiB0aGUgcG9pbnRlciB3b24ndCBjb250YWluIHZhbHVlcyAxIG9yIDIuICAq LwotKyAgX19hc20gdm9sYXRpbGUgKCIiIDogIj1yIiAoaW50cHRyKSA6ICIwIiAocHRybG9jaykp OwotKyNpZiBfX0JZVEVfT1JERVIgPT0gX19CSUdfRU5ESUFOCi0rICBpZiAoc2l6ZW9mICgqcHRy bG9jaykgPiBzaXplb2YgKGludCkpCi0rICAgIGludHB0ciArPSAoc2l6ZW9mICgqcHRybG9jaykg LyBzaXplb2YgKGludCkpIC0gMTsKLSsjZW5kaWYKLSsgIGRvCi0rICAgIGRvX3dhaXQgKGludHB0 ciwgMik7Ci0rICB3aGlsZSAoKmludHB0ciA9PSAyKTsKLSsgIF9fYXNtIHZvbGF0aWxlICgiIiA6 IDogOiAibWVtb3J5Iik7Ci0rICByZXR1cm4gKnB0cmxvY2s7Ci0rfQotKwotK3ZvaWQKLStnb21w X3B0cmxvY2tfc2V0X3Nsb3cgKGdvbXBfcHRybG9ja190ICpwdHJsb2NrLCB2b2lkICpwdHIpCi0r ewotKyAgaW50ICppbnRwdHI7Ci0rCi0rICAqcHRybG9jayA9IHB0cjsKLSsgIF9fYXNtIHZvbGF0 aWxlICgiIiA6ICI9ciIgKGludHB0cikgOiAiMCIgKHB0cmxvY2spKTsKLSsjaWYgX19CWVRFX09S REVSID09IF9fQklHX0VORElBTgotKyAgaWYgKHNpemVvZiAoKnB0cmxvY2spID4gc2l6ZW9mIChp bnQpKQotKyAgICBpbnRwdHIgKz0gKHNpemVvZiAoKnB0cmxvY2spIC8gc2l6ZW9mIChpbnQpKSAt IDE7Ci0rI2VuZGlmCi0rICBmdXRleF93YWtlIChpbnRwdHIsIElOVF9NQVgpOwotK30KLS0tLSBs aWJnb21wL2NvbmZpZy9saW51eC94ODYvZnV0ZXguaC5qagkyMDA3LTEyLTA3IDE0OjQxOjAwLjAw MDAwMDAwMCArMDEwMAotKysrIGxpYmdvbXAvY29uZmlnL2xpbnV4L3g4Ni9mdXRleC5oCTIwMDgt MDMtMjYgMTU6MTE6MzIuMDAwMDAwMDAwICswMTAwCi1AQCAtMSw0ICsxLDQgQEAKLS0vKiBDb3B5 cmlnaHQgKEMpIDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJp Z2h0IChDKSAyMDA1LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICAgIENv bnRyaWJ1dGVkIGJ5IFJpY2hhcmQgSGVuZGVyc29uIDxydGhAcmVkaGF0LmNvbT4uCi0gCi0gICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBPcGVuTVAgTGlicmFyeSAobGliZ29tcCkuCi1A QCAtMjcsOSArMjcsNiBAQAotIAotIC8qIFByb3ZpZGUgdGFyZ2V0LXNwZWNpZmljIGFjY2VzcyB0 byB0aGUgZnV0ZXggc3lzdGVtIGNhbGwuICAqLwotIAotLSNkZWZpbmUgRlVURVhfV0FJVAkwCi0t I2RlZmluZSBGVVRFWF9XQUtFCTEKLS0KLSAjaWZkZWYgX19MUDY0X18KLSAjIGlmbmRlZiBTWVNf ZnV0ZXgKLSAjICBkZWZpbmUgU1lTX2Z1dGV4CTIwMgotQEAgLTM4LDE0ICszNSwyNiBAQAotIHN0 YXRpYyBpbmxpbmUgdm9pZAotIGZ1dGV4X3dhaXQgKGludCAqYWRkciwgaW50IHZhbCkKLSB7Ci0t ICByZWdpc3RlciBsb25nIHIxMCBfX2FzbV9fKCIlcjEwIikgPSAwOwotKyAgcmVnaXN0ZXIgbG9u ZyByMTAgX19hc21fXygiJXIxMCIpOwotICAgbG9uZyByZXM7Ci0gCi0rICByMTAgPSAwOwotICAg X19hc20gdm9sYXRpbGUgKCJzeXNjYWxsIgotIAkJICA6ICI9YSIgKHJlcykKLS0JCSAgOiAiMCIo U1lTX2Z1dGV4KSwgIkQiIChhZGRyKSwgIlMiKEZVVEVYX1dBSVQpLAotLQkJICAgICJkIih2YWwp LCAiciIocjEwKQotKwkJICA6ICIwIiAoU1lTX2Z1dGV4KSwgIkQiIChhZGRyKSwgIlMiIChnb21w X2Z1dGV4X3dhaXQpLAotKwkJICAgICJkIiAodmFsKSwgInIiIChyMTApCi0gCQkgIDogInIxMSIs ICJyY3giLCAibWVtb3J5Iik7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAocmVzID09IC1FTk9T WVMsIDApKQotKyAgICB7Ci0rICAgICAgZ29tcF9mdXRleF93YWl0ICY9IH5GVVRFWF9QUklWQVRF X0ZMQUc7Ci0rICAgICAgZ29tcF9mdXRleF93YWtlICY9IH5GVVRFWF9QUklWQVRFX0ZMQUc7Ci0r ICAgICAgcjEwID0gMDsKLSsgICAgICBfX2FzbSB2b2xhdGlsZSAoInN5c2NhbGwiCi0rCQkgICAg ICA6ICI9YSIgKHJlcykKLSsJCSAgICAgIDogIjAiIChTWVNfZnV0ZXgpLCAiRCIgKGFkZHIpLCAi UyIgKGdvbXBfZnV0ZXhfd2FpdCksCi0rCQkJImQiICh2YWwpLCAiciIgKHIxMCkKLSsJCSAgICAg IDogInIxMSIsICJyY3giLCAibWVtb3J5Iik7Ci0rICAgIH0KLSB9Ci0gCi0gc3RhdGljIGlubGlu ZSB2b2lkCi1AQCAtNTUsOCArNjQsMTkgQEAgZnV0ZXhfd2FrZSAoaW50ICphZGRyLCBpbnQgY291 bnQpCi0gCi0gICBfX2FzbSB2b2xhdGlsZSAoInN5c2NhbGwiCi0gCQkgIDogIj1hIiAocmVzKQot LQkJICA6ICIwIihTWVNfZnV0ZXgpLCAiRCIgKGFkZHIpLCAiUyIoRlVURVhfV0FLRSksICJkIihj b3VudCkKLSsJCSAgOiAiMCIgKFNZU19mdXRleCksICJEIiAoYWRkciksICJTIiAoZ29tcF9mdXRl eF93YWtlKSwKLSsJCSAgICAiZCIgKGNvdW50KQotIAkJICA6ICJyMTEiLCAicmN4IiwgIm1lbW9y eSIpOwotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlcyA9PSAtRU5PU1lTLCAwKSkKLSsgICAg ewotKyAgICAgIGdvbXBfZnV0ZXhfd2FpdCAmPSB+RlVURVhfUFJJVkFURV9GTEFHOwotKyAgICAg IGdvbXBfZnV0ZXhfd2FrZSAmPSB+RlVURVhfUFJJVkFURV9GTEFHOwotKyAgICAgIF9fYXNtIHZv bGF0aWxlICgic3lzY2FsbCIKLSsJCSAgICAgIDogIj1hIiAocmVzKQotKwkJICAgICAgOiAiMCIg KFNZU19mdXRleCksICJEIiAoYWRkciksICJTIiAoZ29tcF9mdXRleF93YWtlKSwKLSsJCQkiZCIg KGNvdW50KQotKwkJICAgICAgOiAicjExIiwgInJjeCIsICJtZW1vcnkiKTsKLSsgICAgfQotIH0K LSAjZWxzZQotICMgaWZuZGVmIFNZU19mdXRleAotQEAgLTY1LDcgKzg1LDcgQEAgZnV0ZXhfd2Fr ZSAoaW50ICphZGRyLCBpbnQgY291bnQpCi0gCi0gIyBpZmRlZiBfX1BJQ19fCi0gCi0tc3RhdGlj IGlubGluZSB2b2lkCi0rc3RhdGljIGlubGluZSBsb25nCi0gc3lzX2Z1dGV4MCAoaW50ICphZGRy LCBpbnQgb3AsIGludCB2YWwpCi0gewotICAgbG9uZyByZXM7Ci1AQCAtNzcsMTEgKzk3LDEyIEBA IHN5c19mdXRleDAgKGludCAqYWRkciwgaW50IG9wLCBpbnQgdmFsKQotIAkJICA6ICIwIihTWVNf ZnV0ZXgpLCAiciIgKGFkZHIpLCAiYyIob3ApLAotIAkJICAgICJkIih2YWwpLCAiUyIoMCkKLSAJ CSAgOiAibWVtb3J5Iik7Ci0rICByZXR1cm4gcmVzOwotIH0KLSAKLSAjIGVsc2UKLSAKLS1zdGF0 aWMgaW5saW5lIHZvaWQKLStzdGF0aWMgaW5saW5lIGxvbmcKLSBzeXNfZnV0ZXgwIChpbnQgKmFk ZHIsIGludCBvcCwgaW50IHZhbCkKLSB7Ci0gICBsb25nIHJlczsKLUBAIC05MSw2ICsxMTIsNyBA QCBzeXNfZnV0ZXgwIChpbnQgKmFkZHIsIGludCBvcCwgaW50IHZhbCkKLSAJCSAgOiAiMCIoU1lT X2Z1dGV4KSwgImIiIChhZGRyKSwgImMiKG9wKSwKLSAJCSAgICAiZCIodmFsKSwgIlMiKDApCi0g CQkgIDogIm1lbW9yeSIpOwotKyAgcmV0dXJuIHJlczsKLSB9Ci0gCi0gIyBlbmRpZiAvKiBfX1BJ Q19fICovCi1AQCAtOTgsMTMgKzEyMCwzNyBAQCBzeXNfZnV0ZXgwIChpbnQgKmFkZHIsIGludCBv cCwgaW50IHZhbCkKLSBzdGF0aWMgaW5saW5lIHZvaWQKLSBmdXRleF93YWl0IChpbnQgKmFkZHIs IGludCB2YWwpCi0gewotLSAgc3lzX2Z1dGV4MCAoYWRkciwgRlVURVhfV0FJVCwgdmFsKTsKLSsg IGxvbmcgcmVzID0gc3lzX2Z1dGV4MCAoYWRkciwgZ29tcF9mdXRleF93YWl0LCB2YWwpOwotKyAg aWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlcyA9PSAtRU5PU1lTLCAwKSkKLSsgICAgewotKyAgICAg IGdvbXBfZnV0ZXhfd2FpdCAmPSB+RlVURVhfUFJJVkFURV9GTEFHOwotKyAgICAgIGdvbXBfZnV0 ZXhfd2FrZSAmPSB+RlVURVhfUFJJVkFURV9GTEFHOwotKyAgICAgIHN5c19mdXRleDAgKGFkZHIs IGdvbXBfZnV0ZXhfd2FpdCwgdmFsKTsKLSsgICAgfQotIH0KLSAKLSBzdGF0aWMgaW5saW5lIHZv aWQKLSBmdXRleF93YWtlIChpbnQgKmFkZHIsIGludCBjb3VudCkKLSB7Ci0tICBzeXNfZnV0ZXgw IChhZGRyLCBGVVRFWF9XQUtFLCBjb3VudCk7Ci0rICBsb25nIHJlcyA9IHN5c19mdXRleDAgKGFk ZHIsIGdvbXBfZnV0ZXhfd2FrZSwgY291bnQpOwotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJl cyA9PSAtRU5PU1lTLCAwKSkKLSsgICAgewotKyAgICAgIGdvbXBfZnV0ZXhfd2FpdCAmPSB+RlVU RVhfUFJJVkFURV9GTEFHOwotKyAgICAgIGdvbXBfZnV0ZXhfd2FrZSAmPSB+RlVURVhfUFJJVkFU RV9GTEFHOwotKyAgICAgIHN5c19mdXRleDAgKGFkZHIsIGdvbXBfZnV0ZXhfd2FrZSwgY291bnQp OwotKyAgICB9Ci0gfQotIAotICNlbmRpZiAvKiBfX0xQNjRfXyAqLwotKwotK3N0YXRpYyBpbmxp bmUgdm9pZAotK2NwdV9yZWxheCAodm9pZCkKLSt7Ci0rICBfX2FzbSB2b2xhdGlsZSAoInJlcDsg bm9wIiA6IDogOiAibWVtb3J5Iik7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdm9pZAotK2F0b21p Y193cml0ZV9iYXJyaWVyICh2b2lkKQotK3sKLSsgIF9fc3luY19zeW5jaHJvbml6ZSAoKTsKLSt9 Ci0tLS0gbGliZ29tcC9jb25maWcvbGludXgvd2FpdC5oLmpqCTIwMDgtMDMtMjYgMTU6MTE6MzIu MDAwMDAwMDAwICswMTAwCi0rKysgbGliZ29tcC9jb25maWcvbGludXgvd2FpdC5oCTIwMDgtMDMt MjYgMTU6MTE6MzIuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDY4IEBACi0rLyogQ29weXJp Z2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIENvbnRyaWJ1 dGVkIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKwotKyAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT3Blbk1QIExpYnJhcnkgKGxpYmdvbXApLgotKwotKyAgIExp YmdvbXAgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIExpYmdvbXAgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCi0r ICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUwotKyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgotKyAgIG1vcmUgZGV0YWls cy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgCi0rICAgYWxvbmcgd2l0aCBsaWJnb21wOyBzZWUg dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvIHRoZQotKyAgIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg Qm9zdG9uLAotKyAgIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCi0rCi0rLyogQXMgYSBzcGVjaWFs IGV4Y2VwdGlvbiwgaWYgeW91IGxpbmsgdGhpcyBsaWJyYXJ5IHdpdGggb3RoZXIgZmlsZXMsIHNv bWUKLSsgICBvZiB3aGljaCBhcmUgY29tcGlsZWQgd2l0aCBHQ0MsIHRvIHByb2R1Y2UgYW4gZXhl Y3V0YWJsZSwgdGhpcyBsaWJyYXJ5Ci0rICAgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSBy ZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZQotKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlk YXRlCi0rICAgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQg YmUgY292ZXJlZCBieSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gICovCi0r Ci0rLyogVGhpcyBpcyBhIExpbnV4IHNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIGEgbXV0ZXgg c3luY2hyb25pemF0aW9uCi0rICAgbWVjaGFuaXNtIGZvciBsaWJnb21wLiAgVGhpcyB0eXBlIGlz IHByaXZhdGUgdG8gdGhlIGxpYnJhcnkuICBUaGlzCi0rICAgaW1wbGVtZW50YXRpb24gdXNlcyBh dG9taWMgaW5zdHJ1Y3Rpb25zIGFuZCB0aGUgZnV0ZXggc3lzY2FsbC4gICovCi0rCi0rI2lmbmRl ZiBHT01QX1dBSVRfSAotKyNkZWZpbmUgR09NUF9XQUlUX0ggMQotKwotKyNpbmNsdWRlICJsaWJn b21wLmgiCi0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rCi0rI2RlZmluZSBGVVRFWF9XQUlUCTAKLSsj ZGVmaW5lIEZVVEVYX1dBS0UJMQotKyNkZWZpbmUgRlVURVhfUFJJVkFURV9GTEFHCTEyOEwKLSsK LSsjaWZkZWYgSEFWRV9BVFRSSUJVVEVfVklTSUJJTElUWQotKyMgcHJhZ21hIEdDQyB2aXNpYmls aXR5IHB1c2goaGlkZGVuKQotKyNlbmRpZgotKwotK2V4dGVybiBsb25nIGludCBnb21wX2Z1dGV4 X3dhaXQsIGdvbXBfZnV0ZXhfd2FrZTsKLSsKLSsjaW5jbHVkZSAiZnV0ZXguaCIKLSsKLStzdGF0 aWMgaW5saW5lIHZvaWQgZG9fd2FpdCAoaW50ICphZGRyLCBpbnQgdmFsKQotK3sKLSsgIHVuc2ln bmVkIGxvbmcgbG9uZyBpLCBjb3VudCA9IGdvbXBfc3Bpbl9jb3VudF92YXI7Ci0rCi0rICBpZiAo X19idWlsdGluX2V4cGVjdCAoZ29tcF9tYW5hZ2VkX3RocmVhZHMgPiBnb21wX2F2YWlsYWJsZV9j cHVzLCAwKSkKLSsgICAgY291bnQgPSBnb21wX3Rocm90dGxlZF9zcGluX2NvdW50X3ZhcjsKLSsg IGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotKyAgICBpZiAoX19idWlsdGluX2V4cGVjdCAo KmFkZHIgIT0gdmFsLCAwKSkKLSsgICAgICByZXR1cm47Ci0rICAgIGVsc2UKLSsgICAgICBjcHVf cmVsYXggKCk7Ci0rICBmdXRleF93YWl0IChhZGRyLCB2YWwpOwotK30KLSsKLSsjaWZkZWYgSEFW RV9BVFRSSUJVVEVfVklTSUJJTElUWQotKyMgcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHBvcAotKyNl bmRpZgotKwotKyNlbmRpZiAvKiBHT01QX1dBSVRfSCAqLwotLS0tIGxpYmdvbXAvY29uZmlnL2xp bnV4L3NwYXJjL2Z1dGV4LmguamoJMjAwNy0xMi0wNyAxNDo0MTowMC4wMDAwMDAwMDAgKzAxMDAK LSsrKyBsaWJnb21wL2NvbmZpZy9saW51eC9zcGFyYy9mdXRleC5oCTIwMDgtMDMtMjYgMTU6MTE6 MzIuMDAwMDAwMDAwICswMTAwCi1AQCAtMSw0ICsxLDQgQEAKLS0vKiBDb3B5cmlnaHQgKEMpIDIw MDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAyMDA1 LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICAgIENvbnRyaWJ1dGVkIGJ5 IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotIAotICAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBHTlUgT3Blbk1QIExpYnJhcnkgKGxpYmdvbXApLgotQEAgLTI4LDEwICsyOCw4 IEBACi0gLyogUHJvdmlkZSB0YXJnZXQtc3BlY2lmaWMgYWNjZXNzIHRvIHRoZSBmdXRleCBzeXN0 ZW0gY2FsbC4gICovCi0gCi0gI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0tI2RlZmluZSBGVVRF WF9XQUlUCTAKLS0jZGVmaW5lIEZVVEVYX1dBS0UJMQotIAotLXN0YXRpYyBpbmxpbmUgdm9pZAot K3N0YXRpYyBpbmxpbmUgbG9uZwotIHN5c19mdXRleDAgKGludCAqYWRkciwgaW50IG9wLCBpbnQg dmFsKQotIHsKLSAgIHJlZ2lzdGVyIGxvbmcgaW50IGcxICBfX2FzbV9fICgiZzEiKTsKLUBAIC00 Nyw5ICs0NSw5IEBAIHN5c19mdXRleDAgKGludCAqYWRkciwgaW50IG9wLCBpbnQgdmFsKQotICAg bzMgPSAwOwotIAotICNpZmRlZiBfX2FyY2g2NF9fCi0tIyBkZWZpbmUgU1lTQ0FMTF9TVFJJTkcg InRhXHQweDZkIgotKyMgZGVmaW5lIFNZU0NBTExfU1RSSU5HICJ0YVx0MHg2ZDsgYmNzLGEscHQg JSV4Y2MsIDFmOyBzdWIgJSVnMCwgJSVvMCwgJSVvMDsgMToiCi0gI2Vsc2UKLS0jIGRlZmluZSBT WVNDQUxMX1NUUklORyAidGFcdDB4MTAiCi0rIyBkZWZpbmUgU1lTQ0FMTF9TVFJJTkcgInRhXHQw eDEwOyBiY3MsYSAxZjsgc3ViICUlZzAsICUlbzAsICUlbzA7IDE6IgotICNlbmRpZgotIAotICAg X19hc20gdm9sYXRpbGUgKFNZU0NBTExfU1RSSU5HCi1AQCAtNjUsMTYgKzYzLDQ5IEBAIHN5c19m dXRleDAgKGludCAqYWRkciwgaW50IG9wLCBpbnQgdmFsKQotIAkJICAgICJmNDgiLCAiZjUwIiwg ImY1MiIsICJmNTQiLCAiZjU2IiwgImY1OCIsICJmNjAiLCAiZjYyIiwKLSAjZW5kaWYKLSAJCSAg ICAiY2MiLCAibWVtb3J5Iik7Ci0rICByZXR1cm4gbzA7Ci0gfQotIAotIHN0YXRpYyBpbmxpbmUg dm9pZAotIGZ1dGV4X3dhaXQgKGludCAqYWRkciwgaW50IHZhbCkKLSB7Ci0tICBzeXNfZnV0ZXgw IChhZGRyLCBGVVRFWF9XQUlULCB2YWwpOwotKyAgbG9uZyBlcnIgPSBzeXNfZnV0ZXgwIChhZGRy LCBnb21wX2Z1dGV4X3dhaXQsIHZhbCk7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoZXJyID09 IEVOT1NZUywgMCkpCi0rICAgIHsKLSsgICAgICBnb21wX2Z1dGV4X3dhaXQgJj0gfkZVVEVYX1BS SVZBVEVfRkxBRzsKLSsgICAgICBnb21wX2Z1dGV4X3dha2UgJj0gfkZVVEVYX1BSSVZBVEVfRkxB RzsKLSsgICAgICBzeXNfZnV0ZXgwIChhZGRyLCBnb21wX2Z1dGV4X3dhaXQsIHZhbCk7Ci0rICAg IH0KLSB9Ci0gCi0gc3RhdGljIGlubGluZSB2b2lkCi0gZnV0ZXhfd2FrZSAoaW50ICphZGRyLCBp bnQgY291bnQpCi0gewotLSAgc3lzX2Z1dGV4MCAoYWRkciwgRlVURVhfV0FLRSwgY291bnQpOwot KyAgbG9uZyBlcnIgPSBzeXNfZnV0ZXgwIChhZGRyLCBnb21wX2Z1dGV4X3dha2UsIGNvdW50KTsK LSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChlcnIgPT0gRU5PU1lTLCAwKSkKLSsgICAgewotKyAg ICAgIGdvbXBfZnV0ZXhfd2FpdCAmPSB+RlVURVhfUFJJVkFURV9GTEFHOwotKyAgICAgIGdvbXBf ZnV0ZXhfd2FrZSAmPSB+RlVURVhfUFJJVkFURV9GTEFHOwotKyAgICAgIHN5c19mdXRleDAgKGFk ZHIsIGdvbXBfZnV0ZXhfd2FrZSwgY291bnQpOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyBpbmxp bmUgdm9pZAotK2NwdV9yZWxheCAodm9pZCkKLSt7Ci0rI2lmIGRlZmluZWQgX19hcmNoNjRfXyB8 fCBkZWZpbmVkICBfX3NwYXJjX3Y5X18KLSsgIF9fYXNtIHZvbGF0aWxlICgibWVtYmFyICNMb2Fk TG9hZCIgOiA6IDogIm1lbW9yeSIpOwotKyNlbHNlCi0rICBfX2FzbSB2b2xhdGlsZSAoIiIgOiA6 IDogIm1lbW9yeSIpOwotKyNlbmRpZgotK30KLSsKLStzdGF0aWMgaW5saW5lIHZvaWQKLSthdG9t aWNfd3JpdGVfYmFycmllciAodm9pZCkKLSt7Ci0rI2lmIGRlZmluZWQgX19hcmNoNjRfXyB8fCBk ZWZpbmVkIF9fc3BhcmNfdjlfXwotKyAgX19hc20gdm9sYXRpbGUgKCJtZW1iYXIgI1N0b3JlU3Rv cmUiIDogOiA6ICJtZW1vcnkiKTsKLSsjZWxzZQotKyAgX19zeW5jX3N5bmNocm9uaXplICgpOwot KyNlbmRpZgotIH0KLS0tLSBsaWJnb21wL2NvbmZpZy9saW51eC9pYTY0L2Z1dGV4LmguamoJMjAw Ny0xMi0wNyAxNDo0MTowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBsaWJnb21wL2NvbmZpZy9saW51 eC9pYTY0L2Z1dGV4LmgJMjAwOC0wMy0yNiAxNToxMTozMi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0x LDQgKzEsNCBAQAotLS8qIENvcHlyaWdodCAoQykgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0gICAgQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBIZW5kZXJzb24gPHJ0aEBy ZWRoYXQuY29tPi4KLSAKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9wZW5NUCBM aWJyYXJ5IChsaWJnb21wKS4KLUBAIC0yOSwyMyArMjksMjQgQEAKLSAKLSAjaW5jbHVkZSA8c3lz L3N5c2NhbGwuaD4KLSAKLS0jZGVmaW5lIEZVVEVYX1dBSVQJMAotLSNkZWZpbmUgRlVURVhfV0FL RQkxCi0gCi0gCi0tc3RhdGljIGlubGluZSB2b2lkCi0tc3lzX2Z1dGV4MChpbnQgKmFkZHIsIGlu dCBvcCwgaW50IHZhbCkKLStzdGF0aWMgaW5saW5lIGxvbmcKLStzeXNfZnV0ZXgwKGludCAqYWRk ciwgbG9uZyBvcCwgaW50IHZhbCkKLSB7Ci0gICByZWdpc3RlciBsb25nIG91dDAgYXNtICgib3V0 MCIpID0gKGxvbmcpIGFkZHI7Ci0gICByZWdpc3RlciBsb25nIG91dDEgYXNtICgib3V0MSIpID0g b3A7Ci0gICByZWdpc3RlciBsb25nIG91dDIgYXNtICgib3V0MiIpID0gdmFsOwotICAgcmVnaXN0 ZXIgbG9uZyBvdXQzIGFzbSAoIm91dDMiKSA9IDA7Ci0rICByZWdpc3RlciBsb25nIHI4IGFzbSAo InI4Iik7Ci0rICByZWdpc3RlciBsb25nIHIxMCBhc20gKCJyMTAiKTsKLSAgIHJlZ2lzdGVyIGxv bmcgcjE1IGFzbSAoInIxNSIpID0gU1lTX2Z1dGV4OwotIAotICAgX19hc20gX192b2xhdGlsZSAo ImJyZWFrIDB4MTAwMDAwIgotLQk6ICI9ciIocjE1KSwgIj1yIihvdXQwKSwgIj1yIihvdXQxKSwg Ij1yIihvdXQyKSwgIj1yIihvdXQzKQotKwk6ICI9ciIocjE1KSwgIj1yIihvdXQwKSwgIj1yIihv dXQxKSwgIj1yIihvdXQyKSwgIj1yIihvdXQzKSwKLSsJICAiPXIiKHI4KSwgIj1yIihyMTApCi0g CTogInIiKHIxNSksICJyIihvdXQwKSwgInIiKG91dDEpLCAiciIob3V0MiksICJyIihvdXQzKQot LSAgICAgICAgOiAibWVtb3J5IiwgInI4IiwgInIxMCIsICJvdXQ0IiwgIm91dDUiLCAib3V0NiIs ICJvdXQ3IiwKLSsJOiAibWVtb3J5IiwgIm91dDQiLCAib3V0NSIsICJvdXQ2IiwgIm91dDciLAot IAkgIC8qIE5vbi1zdGFja2VkIGludGVnZXIgcmVnaXN0ZXJzLCBtaW51cyByOCwgcjEwLCByMTUu ICAqLwotIAkgICJyMiIsICJyMyIsICJyOSIsICJyMTEiLCAicjEyIiwgInIxMyIsICJyMTQiLCAi cjE2IiwgInIxNyIsICJyMTgiLAotIAkgICJyMTkiLCAicjIwIiwgInIyMSIsICJyMjIiLCAicjIz IiwgInIyNCIsICJyMjUiLCAicjI2IiwgInIyNyIsCi1AQCAtNTYsMTYgKzU3LDQxIEBAIHN5c19m dXRleDAoaW50ICphZGRyLCBpbnQgb3AsIGludCB2YWwpCi0gCSAgImY2IiwgImY3IiwgImY4Iiwg ImY5IiwgImYxMCIsICJmMTEiLCAiZjEyIiwgImYxMyIsICJmMTQiLCAiZjE1IiwKLSAJICAvKiBC cmFuY2ggcmVnaXN0ZXJzLiAgKi8KLSAJICAiYjYiKTsKLSsgIHJldHVybiByOCAmIHIxMDsKLSB9 Ci0gCi0gc3RhdGljIGlubGluZSB2b2lkCi0gZnV0ZXhfd2FpdCAoaW50ICphZGRyLCBpbnQgdmFs KQotIHsKLS0gIHN5c19mdXRleDAgKGFkZHIsIEZVVEVYX1dBSVQsIHZhbCk7Ci0rICBsb25nIGVy ciA9IHN5c19mdXRleDAgKGFkZHIsIGdvbXBfZnV0ZXhfd2FpdCwgdmFsKTsKLSsgIGlmIChfX2J1 aWx0aW5fZXhwZWN0IChlcnIgPT0gRU5PU1lTLCAwKSkKLSsgICAgewotKyAgICAgIGdvbXBfZnV0 ZXhfd2FpdCAmPSB+RlVURVhfUFJJVkFURV9GTEFHOwotKyAgICAgIGdvbXBfZnV0ZXhfd2FrZSAm PSB+RlVURVhfUFJJVkFURV9GTEFHOwotKyAgICAgIHN5c19mdXRleDAgKGFkZHIsIGdvbXBfZnV0 ZXhfd2FpdCwgdmFsKTsKLSsgICAgfQotIH0KLSAKLSBzdGF0aWMgaW5saW5lIHZvaWQKLSBmdXRl eF93YWtlIChpbnQgKmFkZHIsIGludCBjb3VudCkKLSB7Ci0tICBzeXNfZnV0ZXgwIChhZGRyLCBG VVRFWF9XQUtFLCBjb3VudCk7Ci0rICBsb25nIGVyciA9IHN5c19mdXRleDAgKGFkZHIsIGdvbXBf ZnV0ZXhfd2FrZSwgY291bnQpOwotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGVyciA9PSBFTk9T WVMsIDApKQotKyAgICB7Ci0rICAgICAgZ29tcF9mdXRleF93YWl0ICY9IH5GVVRFWF9QUklWQVRF X0ZMQUc7Ci0rICAgICAgZ29tcF9mdXRleF93YWtlICY9IH5GVVRFWF9QUklWQVRFX0ZMQUc7Ci0r ICAgICAgc3lzX2Z1dGV4MCAoYWRkciwgZ29tcF9mdXRleF93YWtlLCBjb3VudCk7Ci0rICAgIH0K LSt9Ci0rCi0rc3RhdGljIGlubGluZSB2b2lkCi0rY3B1X3JlbGF4ICh2b2lkKQotK3sKLSsgIF9f YXNtIHZvbGF0aWxlICgiaGludCBAcGF1c2UiIDogOiA6ICJtZW1vcnkiKTsKLSt9Ci0rCi0rc3Rh dGljIGlubGluZSB2b2lkCi0rYXRvbWljX3dyaXRlX2JhcnJpZXIgKHZvaWQpCi0rewotKyAgX19z eW5jX3N5bmNocm9uaXplICgpOwotIH0KLS0tLSBsaWJnb21wL2NvbmZpZy9saW51eC9zMzkwL2Z1 dGV4LmguamoJMjAwNy0xMi0wNyAxNDo0MTowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBsaWJnb21w L2NvbmZpZy9saW51eC9zMzkwL2Z1dGV4LmgJMjAwOC0wMy0yNiAxNToxMTozMi4wMDAwMDAwMDAg KzAxMDAKLUBAIC0xLDQgKzEsNCBAQAotLS8qIENvcHlyaWdodCAoQykgMjAwNSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDggRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gICAgQ29udHJpYnV0ZWQgYnkgSmFrdWIgSmVsaW5l ayA8amFrdWJAcmVkaGF0LmNvbT4uCi0gCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBPcGVuTVAgTGlicmFyeSAobGliZ29tcCkuCi1AQCAtMjgsMTAgKzI4LDggQEAKLSAvKiBQcm92 aWRlIHRhcmdldC1zcGVjaWZpYyBhY2Nlc3MgdG8gdGhlIGZ1dGV4IHN5c3RlbSBjYWxsLiAgKi8K LSAKLSAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLS0jZGVmaW5lIEZVVEVYX1dBSVQJMAotLSNk ZWZpbmUgRlVURVhfV0FLRQkxCi0gCi0tc3RhdGljIGlubGluZSB2b2lkCi0rc3RhdGljIGlubGlu ZSBsb25nCi0gc3lzX2Z1dGV4MCAoaW50ICphZGRyLCBpbnQgb3AsIGludCB2YWwpCi0gewotICAg cmVnaXN0ZXIgbG9uZyBpbnQgZ3ByMiAgX19hc21fXyAoIjIiKTsKLUBAIC00OSwxNiArNDcsNDEg QEAgc3lzX2Z1dGV4MCAoaW50ICphZGRyLCBpbnQgb3AsIGludCB2YWwpCi0gCQkgIDogImkiIChT WVNfZnV0ZXgpLAotIAkJICAgICIwIiAoZ3ByMiksICJkIiAoZ3ByMyksICJkIiAoZ3ByNCksICJk IiAoZ3ByNSkKLSAJCSAgOiAibWVtb3J5Iik7Ci0rICByZXR1cm4gZ3ByMjsKLSB9Ci0gCi0gc3Rh dGljIGlubGluZSB2b2lkCi0gZnV0ZXhfd2FpdCAoaW50ICphZGRyLCBpbnQgdmFsKQotIHsKLS0g IHN5c19mdXRleDAgKGFkZHIsIEZVVEVYX1dBSVQsIHZhbCk7Ci0rICBsb25nIGVyciA9IHN5c19m dXRleDAgKGFkZHIsIGdvbXBfZnV0ZXhfd2FpdCwgdmFsKTsKLSsgIGlmIChfX2J1aWx0aW5fZXhw ZWN0IChlcnIgPT0gLUVOT1NZUywgMCkpCi0rICAgIHsKLSsgICAgICBnb21wX2Z1dGV4X3dhaXQg Jj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsKLSsgICAgICBnb21wX2Z1dGV4X3dha2UgJj0gfkZVVEVY X1BSSVZBVEVfRkxBRzsKLSsgICAgICBzeXNfZnV0ZXgwIChhZGRyLCBnb21wX2Z1dGV4X3dhaXQs IHZhbCk7Ci0rICAgIH0KLSB9Ci0gCi0gc3RhdGljIGlubGluZSB2b2lkCi0gZnV0ZXhfd2FrZSAo aW50ICphZGRyLCBpbnQgY291bnQpCi0gewotLSAgc3lzX2Z1dGV4MCAoYWRkciwgRlVURVhfV0FL RSwgY291bnQpOwotKyAgbG9uZyBlcnIgPSBzeXNfZnV0ZXgwIChhZGRyLCBnb21wX2Z1dGV4X3dh a2UsIGNvdW50KTsKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChlcnIgPT0gLUVOT1NZUywgMCkp Ci0rICAgIHsKLSsgICAgICBnb21wX2Z1dGV4X3dhaXQgJj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsK LSsgICAgICBnb21wX2Z1dGV4X3dha2UgJj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsKLSsgICAgICBz eXNfZnV0ZXgwIChhZGRyLCBnb21wX2Z1dGV4X3dha2UsIGNvdW50KTsKLSsgICAgfQotK30KLSsK LStzdGF0aWMgaW5saW5lIHZvaWQKLStjcHVfcmVsYXggKHZvaWQpCi0rewotKyAgX19hc20gdm9s YXRpbGUgKCIiIDogOiA6ICJtZW1vcnkiKTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSB2b2lkCi0r YXRvbWljX3dyaXRlX2JhcnJpZXIgKHZvaWQpCi0rewotKyAgX19zeW5jX3N5bmNocm9uaXplICgp OwotIH0KLS0tLSBsaWJnb21wL2NvbmZpZy9saW51eC9tdXRleC5jLmpqCTIwMDctMTItMDcgMTQ6 NDE6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgbGliZ29tcC9jb25maWcvbGludXgvbXV0ZXguYwky MDA4LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAotQEAgLTEsNCArMSw0IEBACi0tLyog Q29weXJpZ2h0IChDKSAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENv cHlyaWdodCAoQykgMjAwNSwgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAg ICBDb250cmlidXRlZCBieSBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHJlZGhhdC5jb20+LgotIAot ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT3Blbk1QIExpYnJhcnkgKGxpYmdvbXAp LgotQEAgLTI5LDkgKzI5LDEwIEBACi0gICAgbWVjaGFuaXNtIGZvciBsaWJnb21wLiAgVGhpcyB0 eXBlIGlzIHByaXZhdGUgdG8gdGhlIGxpYnJhcnkuICBUaGlzCi0gICAgaW1wbGVtZW50YXRpb24g dXNlcyBhdG9taWMgaW5zdHJ1Y3Rpb25zIGFuZCB0aGUgZnV0ZXggc3lzY2FsbC4gICovCi0gCi0t I2luY2x1ZGUgImxpYmdvbXAuaCIKLS0jaW5jbHVkZSAiZnV0ZXguaCIKLSsjaW5jbHVkZSAid2Fp dC5oIgotIAotK2xvbmcgaW50IGdvbXBfZnV0ZXhfd2FrZSA9IEZVVEVYX1dBS0UgfCBGVVRFWF9Q UklWQVRFX0ZMQUc7Ci0rbG9uZyBpbnQgZ29tcF9mdXRleF93YWl0ID0gRlVURVhfV0FJVCB8IEZV VEVYX1BSSVZBVEVfRkxBRzsKLSAKLSB2b2lkCi0gZ29tcF9tdXRleF9sb2NrX3Nsb3cgKGdvbXBf bXV0ZXhfdCAqbXV0ZXgpCi1AQCAtNDAsNyArNDEsNyBAQCBnb21wX211dGV4X2xvY2tfc2xvdyAo Z29tcF9tdXRleF90ICptdXRlCi0gICAgIHsKLSAgICAgICBpbnQgb2xkdmFsID0gX19zeW5jX3Zh bF9jb21wYXJlX2FuZF9zd2FwIChtdXRleCwgMSwgMik7Ci0gICAgICAgaWYgKG9sZHZhbCAhPSAw KQotLSAgICAgICAgZnV0ZXhfd2FpdCAobXV0ZXgsIDIpOwotKwlkb193YWl0IChtdXRleCwgMik7 Ci0gICAgIH0KLSAgIHdoaWxlICghX19zeW5jX2Jvb2xfY29tcGFyZV9hbmRfc3dhcCAobXV0ZXgs IDAsIDIpKTsKLSB9Ci0tLS0gbGliZ29tcC9jb25maWcvbGludXgvc2VtLmMuamoJMjAwNy0xMi0w NyAxNDo0MTowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBsaWJnb21wL2NvbmZpZy9saW51eC9zZW0u YwkyMDA4LTAzLTI2IDE1OjExOjMyLjAwMDAwMDAwMCArMDEwMAotQEAgLTEsNCArMSw0IEBACi0t LyogQ29weXJpZ2h0IChDKSAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8q IENvcHlyaWdodCAoQykgMjAwNSwgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSAgICBDb250cmlidXRlZCBieSBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHJlZGhhdC5jb20+Lgot IAotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT3Blbk1QIExpYnJhcnkgKGxpYmdv bXApLgotQEAgLTI5LDggKzI5LDcgQEAKLSAgICBtZWNoYW5pc20gZm9yIGxpYmdvbXAuICBUaGlz IHR5cGUgaXMgcHJpdmF0ZSB0byB0aGUgbGlicmFyeS4gIFRoaXMgCi0gICAgaW1wbGVtZW50YXRp b24gdXNlcyBhdG9taWMgaW5zdHJ1Y3Rpb25zIGFuZCB0aGUgZnV0ZXggc3lzY2FsbC4gICovCi0g Ci0tI2luY2x1ZGUgImxpYmdvbXAuaCIKLS0jaW5jbHVkZSAiZnV0ZXguaCIKLSsjaW5jbHVkZSAi d2FpdC5oIgotIAotIAotIHZvaWQKLUBAIC00NCw3ICs0Myw3IEBAIGdvbXBfc2VtX3dhaXRfc2xv dyAoZ29tcF9zZW1fdCAqc2VtKQotIAkgIGlmIChfX3N5bmNfYm9vbF9jb21wYXJlX2FuZF9zd2Fw IChzZW0sIHZhbCwgdmFsIC0gMSkpCi0gCSAgICByZXR1cm47Ci0gCX0KLS0gICAgICBmdXRleF93 YWl0IChzZW0sIC0xKTsKLSsgICAgICBkb193YWl0IChzZW0sIC0xKTsKLSAgICAgfQotIH0KLSAK LS0tLSBsaWJnb21wL2NvbmZpZy9saW51eC9wb3dlcnBjL2Z1dGV4LmguamoJMjAwNy0xMi0wNyAx NDo0MTowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBsaWJnb21wL2NvbmZpZy9saW51eC9wb3dlcnBj L2Z1dGV4LmgJMjAwOC0wMy0yNiAxNToxMTozMi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xLDQgKzEs NCBAQAotLS8qIENvcHlyaWdodCAoQykgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSsvKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0gICAgQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBIZW5kZXJzb24gPHJ0aEByZWRoYXQu Y29tPi4KLSAKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9wZW5NUCBMaWJyYXJ5 IChsaWJnb21wKS4KLUBAIC0yOCwxMCArMjgsOCBAQAotIC8qIFByb3ZpZGUgdGFyZ2V0LXNwZWNp ZmljIGFjY2VzcyB0byB0aGUgZnV0ZXggc3lzdGVtIGNhbGwuICAqLwotIAotICNpbmNsdWRlIDxz eXMvc3lzY2FsbC5oPgotLSNkZWZpbmUgRlVURVhfV0FJVAkwCi0tI2RlZmluZSBGVVRFWF9XQUtF CTEKLSAKLS1zdGF0aWMgaW5saW5lIHZvaWQKLStzdGF0aWMgaW5saW5lIGxvbmcKLSBzeXNfZnV0 ZXgwIChpbnQgKmFkZHIsIGludCBvcCwgaW50IHZhbCkKLSB7Ci0gICByZWdpc3RlciBsb25nIGlu dCByMCAgX19hc21fXyAoInIwIik7Ci1AQCAtNTAsMjEgKzQ4LDQ4IEBAIHN5c19mdXRleDAgKGlu dCAqYWRkciwgaW50IG9wLCBpbnQgdmFsKQotICAgICAgZG9lc24ndC4gIEl0IGRvZXNuJ3QgbXVj aCBtYXR0ZXIgZm9yIHVzLiAgSW4gdGhlIGludGVyZXN0IG9mIHVuaXR5LAotICAgICAgZ28gYWhl YWQgYW5kIGNsb2JiZXIgaXQgYWx3YXlzLiAgKi8KLSAKLS0gIF9fYXNtIHZvbGF0aWxlICgic2Mi Ci0rICBfX2FzbSB2b2xhdGlsZSAoInNjOyBtZmNyICUwIgotIAkJICA6ICI9ciIocjApLCAiPXIi KHIzKSwgIj1yIihyNCksICI9ciIocjUpLCAiPXIiKHI2KQotIAkJICA6ICJyIihyMCksICJyIihy MyksICJyIihyNCksICJyIihyNSksICJyIihyNikKLSAJCSAgOiAicjciLCAicjgiLCAicjkiLCAi cjEwIiwgInIxMSIsICJyMTIiLAotIAkJICAgICJjcjAiLCAiY3RyIiwgIm1lbW9yeSIpOwotKyAg aWYgKF9fYnVpbHRpbl9leHBlY3QgKHIwICYgKDEgPDwgMjgpLCAwKSkKLSsgICAgcmV0dXJuIHIz OwotKyAgcmV0dXJuIDA7Ci0gfQotIAotIHN0YXRpYyBpbmxpbmUgdm9pZAotIGZ1dGV4X3dhaXQg KGludCAqYWRkciwgaW50IHZhbCkKLSB7Ci0tICBzeXNfZnV0ZXgwIChhZGRyLCBGVVRFWF9XQUlU LCB2YWwpOwotKyAgbG9uZyBlcnIgPSBzeXNfZnV0ZXgwIChhZGRyLCBnb21wX2Z1dGV4X3dhaXQs IHZhbCk7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoZXJyID09IEVOT1NZUywgMCkpCi0rICAg IHsKLSsgICAgICBnb21wX2Z1dGV4X3dhaXQgJj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsKLSsgICAg ICBnb21wX2Z1dGV4X3dha2UgJj0gfkZVVEVYX1BSSVZBVEVfRkxBRzsKLSsgICAgICBzeXNfZnV0 ZXgwIChhZGRyLCBnb21wX2Z1dGV4X3dhaXQsIHZhbCk7Ci0rICAgIH0KLSB9Ci0gCi0gc3RhdGlj IGlubGluZSB2b2lkCi0gZnV0ZXhfd2FrZSAoaW50ICphZGRyLCBpbnQgY291bnQpCi0gewotLSAg c3lzX2Z1dGV4MCAoYWRkciwgRlVURVhfV0FLRSwgY291bnQpOwotKyAgbG9uZyBlcnIgPSBzeXNf ZnV0ZXgwIChhZGRyLCBnb21wX2Z1dGV4X3dha2UsIGNvdW50KTsKLSsgIGlmIChfX2J1aWx0aW5f ZXhwZWN0IChlcnIgPT0gRU5PU1lTLCAwKSkKLSsgICAgewotKyAgICAgIGdvbXBfZnV0ZXhfd2Fp dCAmPSB+RlVURVhfUFJJVkFURV9GTEFHOwotKyAgICAgIGdvbXBfZnV0ZXhfd2FrZSAmPSB+RlVU RVhfUFJJVkFURV9GTEFHOwotKyAgICAgIHN5c19mdXRleDAgKGFkZHIsIGdvbXBfZnV0ZXhfd2Fr ZSwgY291bnQpOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdm9pZAotK2NwdV9yZWxh eCAodm9pZCkKLSt7Ci0rICBfX2FzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwotK30K LSsKLStzdGF0aWMgaW5saW5lIHZvaWQKLSthdG9taWNfd3JpdGVfYmFycmllciAodm9pZCkKLSt7 Ci0rICBfX2FzbSB2b2xhdGlsZSAoImVpZWlvIiA6IDogOiAibWVtb3J5Iik7Ci0gfQotLS0tIGxp YmdvbXAvY29uZmlnL2xpbnV4L2Jhci5jLmpqCTIwMDctMTItMDcgMTQ6NDE6MDAuMDAwMDAwMDAw ICswMTAwCi0rKysgbGliZ29tcC9jb25maWcvbGludXgvYmFyLmMJMjAwOC0wMy0yNiAxNToxMToz Mi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xLDQgKzEsNCBAQAotLS8qIENvcHlyaWdodCAoQykgMjAw NSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDIwMDUs IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gICAgQ29udHJpYnV0ZWQgYnkg UmljaGFyZCBIZW5kZXJzb24gPHJ0aEByZWRoYXQuY29tPi4KLSAKLSAgICBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgR05VIE9wZW5NUCBMaWJyYXJ5IChsaWJnb21wKS4KLUBAIC0yOSwzMiArMjks MjkgQEAKLSAgICBtZWNoYW5pc20gZm9yIGxpYmdvbXAuICBUaGlzIHR5cGUgaXMgcHJpdmF0ZSB0 byB0aGUgbGlicmFyeS4gIFRoaXMgCi0gICAgaW1wbGVtZW50YXRpb24gdXNlcyBhdG9taWMgaW5z dHJ1Y3Rpb25zIGFuZCB0aGUgZnV0ZXggc3lzY2FsbC4gICovCi0gCi0tI2luY2x1ZGUgImxpYmdv bXAuaCIKLS0jaW5jbHVkZSAiZnV0ZXguaCIKLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0rI2luY2x1 ZGUgIndhaXQuaCIKLSAKLSAKLSB2b2lkCi0tZ29tcF9iYXJyaWVyX3dhaXRfZW5kIChnb21wX2Jh cnJpZXJfdCAqYmFyLCBib29sIGxhc3QpCi0rZ29tcF9iYXJyaWVyX3dhaXRfZW5kIChnb21wX2Jh cnJpZXJfdCAqYmFyLCBnb21wX2JhcnJpZXJfc3RhdGVfdCBzdGF0ZSkKLSB7Ci0tICBpZiAobGFz dCkKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgoc3RhdGUgJiAxKSAhPSAwLCAwKSkKLSAgICAg ewotLSAgICAgIGJhci0+Z2VuZXJhdGlvbisrOwotLSAgICAgIGZ1dGV4X3dha2UgKCZiYXItPmdl bmVyYXRpb24sIElOVF9NQVgpOwotKyAgICAgIC8qIE5leHQgdGltZSB3ZSdsbCBiZSBhd2FpdGlu ZyBUT1RBTCB0aHJlYWRzIGFnYWluLiAgKi8KLSsgICAgICBiYXItPmF3YWl0ZWQgPSBiYXItPnRv dGFsOwotKyAgICAgIGF0b21pY193cml0ZV9iYXJyaWVyICgpOwotKyAgICAgIGJhci0+Z2VuZXJh dGlvbiArPSAyOwotKyAgICAgIGZ1dGV4X3dha2UgKChpbnQgKikgJmJhci0+Z2VuZXJhdGlvbiwg SU5UX01BWCk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIHVuc2lnbmVkIGludCBn ZW5lcmF0aW9uID0gYmFyLT5nZW5lcmF0aW9uOwotLQotLSAgICAgIGdvbXBfbXV0ZXhfdW5sb2Nr ICgmYmFyLT5tdXRleCk7Ci0rICAgICAgdW5zaWduZWQgaW50IGdlbmVyYXRpb24gPSBzdGF0ZTsK LSAKLSAgICAgICBkbwotLQlmdXRleF93YWl0ICgmYmFyLT5nZW5lcmF0aW9uLCBnZW5lcmF0aW9u KTsKLSsJZG9fd2FpdCAoKGludCAqKSAmYmFyLT5nZW5lcmF0aW9uLCBnZW5lcmF0aW9uKTsKLSAg ICAgICB3aGlsZSAoYmFyLT5nZW5lcmF0aW9uID09IGdlbmVyYXRpb24pOwotICAgICB9Ci0tCi0t ICBpZiAoX19zeW5jX2FkZF9hbmRfZmV0Y2ggKCZiYXItPmFycml2ZWQsIC0xKSA9PSAwKQotLSAg ICBnb21wX211dGV4X3VubG9jayAoJmJhci0+bXV0ZXgpOwotIH0KLSAKLSB2b2lkCi1AQCAtNjIs MyArNTksMTggQEAgZ29tcF9iYXJyaWVyX3dhaXQgKGdvbXBfYmFycmllcl90ICpiYXJyaQotIHsK LSAgIGdvbXBfYmFycmllcl93YWl0X2VuZCAoYmFycmllciwgZ29tcF9iYXJyaWVyX3dhaXRfc3Rh cnQgKGJhcnJpZXIpKTsKLSB9Ci0rCi0rLyogTGlrZSBnb21wX2JhcnJpZXJfd2FpdCwgZXhjZXB0 IHRoYXQgaWYgdGhlIGVuY291bnRlcmluZyB0aHJlYWQKLSsgICBpcyBub3QgdGhlIGxhc3Qgb25l IHRvIGhpdCB0aGUgYmFycmllciwgaXQgcmV0dXJucyBpbW1lZGlhdGVseS4KLSsgICBUaGUgaW50 ZW5kZWQgdXNhZ2UgaXMgdGhhdCBhIHRocmVhZCB3aGljaCBpbnRlbmRzIHRvIGdvbXBfYmFycmll cl9kZXN0cm95Ci0rICAgdGhpcyBiYXJyaWVyIGNhbGxzIGdvbXBfYmFycmllcl93YWl0LCB3aGls ZSBhbGwgb3RoZXIgdGhyZWFkcwotKyAgIGNhbGwgZ29tcF9iYXJyaWVyX3dhaXRfbGFzdC4gIFdo ZW4gZ29tcF9iYXJyaWVyX3dhaXQgcmV0dXJucywKLSsgICB0aGUgYmFycmllciBjYW4gYmUgc2Fm ZWx5IGRlc3Ryb3llZC4gICovCi0rCi0rdm9pZAotK2dvbXBfYmFycmllcl93YWl0X2xhc3QgKGdv bXBfYmFycmllcl90ICpiYXJyaWVyKQotK3sKLSsgIGdvbXBfYmFycmllcl9zdGF0ZV90IHN0YXRl ID0gZ29tcF9iYXJyaWVyX3dhaXRfc3RhcnQgKGJhcnJpZXIpOwotKyAgaWYgKHN0YXRlICYgMSkK LSsgICAgZ29tcF9iYXJyaWVyX3dhaXRfZW5kIChiYXJyaWVyLCBzdGF0ZSk7Ci0rfQoKZGlmZiAt LWdpdCBhL2djYzQzLXByMzU2NTAucGF0Y2ggYi9nY2M0My1wcjM1NjUwLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2I0Nzc1Li4wMDAwMDAwCi0tLSBhL2djYzQzLXByMzU2 NTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0yMDA4LTA0LTIxICBKYWt1 YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIGMrKy8zNTY1MAotCSogcGFyc2Vy LmMgKGNwX3BhcnNlcl9sb29rdXBfbmFtZSk6IExvb2sgdGhyb3VnaCBzaW5nbGUgZnVuY3Rpb24K LQlPVkVSTE9BRC4KLQotCSogZysrLmRnL2luaXQvcmVmMTcuQzogTmV3IHRlc3QuCi0KLS0tLSBn Y2MvY3AvcGFyc2VyLmMuamoJMjAwOC0wNC0xOCAxNzowMDo0NC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnY2MvY3AvcGFyc2VyLmMJMjAwOC0wNC0yMSAyMzo1ODowMC4wMDAwMDAwMDAgKzAyMDAKLUBA IC0xNjQwNyw2ICsxNjQwNywxMyBAQCBjcF9wYXJzZXJfbG9va3VwX25hbWUgKGNwX3BhcnNlciAq cGFyc2VyCi0gCSAgZGVjbCA9IGxvb2t1cF9xdWFsaWZpZWRfbmFtZSAocGFyc2VyLT5zY29wZSwg bmFtZSwKLSAJCQkJCXRhZ190eXBlICE9IG5vbmVfdHlwZSwKLSAJCQkJCS8qY29tcGxhaW49Ki90 cnVlKTsKLSsKLSsJICAvKiBJZiB3ZSBoYXZlIGEgc2luZ2xlIGZ1bmN0aW9uIGZyb20gYSB1c2lu ZyBkZWNsLCBwdWxsIGl0IG91dC4gICovCi0rCSAgaWYgKGRlY2wKLSsJICAgICAgJiYgVFJFRV9D T0RFIChkZWNsKSA9PSBPVkVSTE9BRAotKwkgICAgICAmJiAhcmVhbGx5X292ZXJsb2FkZWRfZm4g KGRlY2wpKQotKwkgICAgZGVjbCA9IE9WTF9GVU5DVElPTiAoZGVjbCk7Ci0rCi0gCSAgaWYgKHB1 c2hlZF9zY29wZSkKLSAJICAgIHBvcF9zY29wZSAocHVzaGVkX3Njb3BlKTsKLSAJfQotLS0tIGdj Yy90ZXN0c3VpdGUvZysrLmRnL2luaXQvcmVmMTcuQy5qagkyMDA4LTA0LTIxIDIyOjQ4OjAyLjAw MDAwMDAwMCArMDIwMAotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2luaXQvcmVmMTcuQwkyMDA4 LTA0LTIxIDIyOjQ3OjA5LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwyMyBAQAotKy8vIFBS IGMrKy8zNTY1MAotKy8vIHsgZGctZG8gY29tcGlsZSB9Ci0rCi0rdm9pZCBmMSAoKTsKLSsKLStu YW1lc3BhY2UgTgotK3sKLSsgIHVzaW5nOjpmMTsKLSsgIHZvaWQgZjIgKCk7Ci0rICB2b2lkIGYz ICgpOwotK30KLSsKLSt1c2luZyBOOjpmMzsKLSsKLSt2b2lkCi0rdGVzdCAoKQotK3sKLSsgIHZv aWQgKCZhKSAoKSA9IGYxOwotKyAgdm9pZCAoJmIpICgpID0gTjo6ZjE7Ci0rICB2b2lkICgmYykg KCkgPSBOOjpmMjsKLSsgIHZvaWQgKCZkKSAoKSA9IGYzOwotKyAgdm9pZCAoJmUpICgpID0gOjpm MzsKLSt9CgpkaWZmIC0tZ2l0IGEvZ2NjNDMtcHIzNTkwOS5wYXRjaCBiL2djYzQzLXByMzU5MDku cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4MTcxZTMuLjAwMDAwMDAKLS0t IGEvZ2NjNDMtcHIzNTkwOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLTIw MDgtMDQtMjQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgotCi0JUFIgYysr LzM1OTA5Ci0JKiBjYWxsLmMgKGNvbnZlcnRfbGlrZV9yZWFsKTogQ29udmVydCBiaXRmaWVsZCB0 byBkZXNpcmVkIHR5cGUKLQliZWZvcmUgY3JlYXRpbmcgdGVtcG9yYXJ5LgotCi0JKiBnKysuZGcv Y29udmVyc2lvbi9iaXRmaWVsZDkuQzogTmV3LgotCi0tLS0gZ2NjL2NwL2NhbGwuYy5vcmlnCTIw MDgtMDQtMjIgMDM6MjY6MjUuMDAwMDAwMDAwIC0wMzAwCi0rKysgZ2NjL2NwL2NhbGwuYwkyMDA4 LTA0LTIyIDAzOjI2OjI3LjAwMDAwMDAwMCAtMDMwMAotQEAgLTQ1ODAsNyArNDU4MCwxMCBAQCBj b252ZXJ0X2xpa2VfcmVhbCAoY29udmVyc2lvbiAqY29udnMsIHRyCi0gCQlyZXR1cm4gZXJyb3Jf bWFya19ub2RlOwotIAkgICAgICB9Ci0gCSAgICBpZiAobHZhbHVlICYgY2xrX2JpdGZpZWxkKQot LQkgICAgICBleHByID0gY29udmVydF9iaXRmaWVsZF90b19kZWNsYXJlZF90eXBlIChleHByKTsK LSsJICAgICAgewotKwkJZXhwciA9IGNvbnZlcnRfYml0ZmllbGRfdG9fZGVjbGFyZWRfdHlwZSAo ZXhwcik7Ci0rCQlleHByID0gZm9sZF9jb252ZXJ0ICh0eXBlLCBleHByKTsKLSsJICAgICAgfQot IAkgICAgZXhwciA9IGJ1aWxkX3RhcmdldF9leHByX3dpdGhfdHlwZSAoZXhwciwgdHlwZSk7Ci0g CSAgfQotIAotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2NvbnZlcnNpb24vYml0ZmllbGQ5LkMJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnY2MvdGVzdHN1aXRlL2cr Ky5kZy9jb252ZXJzaW9uL2JpdGZpZWxkOS5DCTIwMDgtMDQtMjIgMDM6MjY6MjcuMDAwMDAwMDAw IC0wMzAwCi1AQCAtMCwwICsxLDE2IEBACi0rLy8gUFIgYysrLzM1OTA5Ci0rLy8geyBkZy1kbyBj b21waWxlIH0KLSsKLStzdHJ1Y3QgTWlkaUNvbW1hbmQKLSt7Ci0rICB1bnNpZ25lZCBkYXRhMSA6 IDg7Ci0rfTsKLSsKLSt2b2lkIGcoY29uc3QgdW5zaWduZWQgY2hhciAmKTsKLSt2b2lkIGgoY29u c3QgdW5zaWduZWQgaW50ICYpOwotKwotK3ZvaWQgZihNaWRpQ29tbWFuZCBtYykKLSt7Ci0rICBn KG1jLmRhdGExKTsKLSsgIGgobWMuZGF0YTEpOwotK30KCmRpZmYgLS1naXQgYS9nY2M0My1wcjM1 OTg3LnBhdGNoIGIvZ2NjNDMtcHIzNTk4Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggNGQ5MjIzNC4uMDAwMDAwMAotLS0gYS9nY2M0My1wcjM1OTg3LnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMzcgKzAsMCBAQAotMjAwOC0wNC0yMSAgSmFrdWIgSmVsaW5layAgPGpha3Vi QHJlZGhhdC5jb20+Ci0KLQlQUiBjKysvMzU5ODcKLQkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlf ZXhwcikgPGNhc2UgUFJFSU5DUkVNRU5UX0VYUFI+OiBEb24ndCBidWlsZAotCUNPTVBPVU5EX0VY UFIgaWYgdGhlIHNlY29uZCBhcmd1bWVudCB3b3VsZCBiZSBlcnJvcl9tYXJrX25vZGUuCi0KLQkq IGcrKy5kZy9vdGhlci9lcnJvcjI4LkM6IE5ldyB0ZXN0LgotCi0tLS0gZ2NjL2NwL3R5cGVjay5j LmpqCTIwMDgtMDQtMTggMTc6MDA6NDQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL2NwL3R5cGVj ay5jCTIwMDgtMDQtMjEgMTY6MDM6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtNTY2NywxMCArNTY2 NywxMSBAQCBidWlsZF9tb2RpZnlfZXhwciAodHJlZSBsaHMsIGVudW0gdHJlZV9jCi0gCWxocyA9 IGJ1aWxkMiAoVFJFRV9DT0RFIChsaHMpLCBUUkVFX1RZUEUgKGxocyksCi0gCQkgICAgICBzdGFi aWxpemVfcmVmZXJlbmNlIChUUkVFX09QRVJBTkQgKGxocywgMCkpLAotIAkJICAgICAgVFJFRV9P UEVSQU5EIChsaHMsIDEpKTsKLS0gICAgICByZXR1cm4gYnVpbGQyIChDT01QT1VORF9FWFBSLCBs aHN0eXBlLAotLQkJICAgICBsaHMsCi0tCQkgICAgIGJ1aWxkX21vZGlmeV9leHByIChUUkVFX09Q RVJBTkQgKGxocywgMCksCi0tCQkJCQltb2RpZnljb2RlLCByaHMpKTsKLSsgICAgICBuZXdyaHMg PSBidWlsZF9tb2RpZnlfZXhwciAoVFJFRV9PUEVSQU5EIChsaHMsIDApLAotKwkJCQkgIG1vZGlm eWNvZGUsIHJocyk7Ci0rICAgICAgaWYgKG5ld3JocyA9PSBlcnJvcl9tYXJrX25vZGUpCi0rCXJl dHVybiBlcnJvcl9tYXJrX25vZGU7Ci0rICAgICAgcmV0dXJuIGJ1aWxkMiAoQ09NUE9VTkRfRVhQ UiwgbGhzdHlwZSwgbGhzLCBuZXdyaHMpOwotIAotICAgICAgIC8qIEhhbmRsZSAoYSwgYikgdXNl ZCBhcyBhbiAibHZhbHVlIi4gICovCi0gICAgIGNhc2UgQ09NUE9VTkRfRVhQUjoKLS0tLSBnY2Mv dGVzdHN1aXRlL2crKy5kZy9vdGhlci9lcnJvcjI4LkMuamoJMjAwOC0wNC0yMSAxNTo0MjowOS4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9vdGhlci9lcnJvcjI4LkMJ MjAwOC0wNC0yMSAxNTozNzowMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsOCBAQAotKy8v IFBSIGMrKy8zNTk4NwotKy8vIHsgZGctZG8gY29tcGlsZSB9Ci0rCi0rdm9pZAotK2ZvbyAoY2hh ciAqcCkKLSt7Ci0rICBpZiAoKytwID0gdHJ1ZSk7CS8vIHsgZGctZXJyb3IgImNhbm5vdCBjb252 ZXJ0IiB9Ci0rfQoKZGlmZiAtLWdpdCBhL2djYzQzLXNwYXJjLWNvbmZpZy1kZXRlY3Rpb24ucGF0 Y2ggYi9nY2M0My1zcGFyYy1jb25maWctZGV0ZWN0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjRlZTk1ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0My1zcGFy Yy1jb25maWctZGV0ZWN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKKy0tLSBnY2MvY29uZmln LmdjYy5qagkyMDA4LTA0LTI0IDE1OjQyOjQ2LjAwMDAwMDAwMCAtMDUwMAorKysrIGdjYy9jb25m aWcuZ2NjCTIwMDgtMDQtMjQgMTU6NDQ6NTEuMDAwMDAwMDAwIC0wNTAwCitAQCAtMjM0Myw3ICsy MzQzLDcgQEAgc3BhcmMtKi1lbGYqKQorIAlleHRyYV9wYXJ0cz0iY3J0aS5vIGNydG4ubyBjcnRi ZWdpbi5vIGNydGVuZC5vIgorIAl1c2VfZml4cHJvdG89eWVzCisgCTs7Cistc3BhcmMtKi1saW51 eCopCQkjIFNQQVJDJ3MgcnVubmluZyBHTlUvTGludXgsIGxpYmM2Cisrc3BhcmMtKi1saW51eCog fCBzcGFyY3Y5Ki0qLWxpbnV4KikJCSMgU1BBUkMncyBydW5uaW5nIEdOVS9MaW51eCwgbGliYzYK KyAJdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIHN2cjQuaCBzcGFyYy9zeXN2 NC5oIHNwYXJjL2xpbnV4LmgiCisgCWV4dHJhX29wdGlvbnM9IiR7ZXh0cmFfb3B0aW9uc30gc3Bh cmMvbG9uZy1kb3VibGUtc3dpdGNoLm9wdCIKKyAJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSBz cGFyYy90LWxpbnV4IHNwYXJjL3QtY3J0Zm0iCitAQCAtMjQ3Nyw3ICsyNDc3LDcgQEAgc3BhcmM2 NC0qLWZyZWVic2QqfHVsdHJhc3BhcmMtKi1mcmVlYnNkKgorIAllc2FjCisgCW5lZWRfNjRiaXRf aHdpbnQ9eWVzCisgCTs7Cistc3BhcmM2NC0qLWxpbnV4KikJCSMgNjQtYml0IFNQQVJDJ3MgcnVu bmluZyBHTlUvTGludXgKKytzcGFyYzY0Ki0qLWxpbnV4KikJCSMgNjQtYml0IFNQQVJDJ3MgcnVu bmluZyBHTlUvTGludXgKKyAJdG1fZmlsZT0ic3BhcmMvYmlhcmNoNjQuaCAke3RtX2ZpbGV9IGRi eGVsZi5oIGVsZm9zLmggc3ZyNC5oIHNwYXJjL3N5c3Y0Lmggc3BhcmMvbGludXg2NC5oIgorIAll eHRyYV9vcHRpb25zPSIke2V4dHJhX29wdGlvbnN9IHNwYXJjL2xvbmctZG91YmxlLXN3aXRjaC5v cHQiCisgCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gc3BhcmMvdC1saW51eCBzcGFyYy90LWxp bnV4NjQgc3BhcmMvdC1jcnRmbSIKKy0tLSBsaWJnY2MvY29uZmlnLmhvc3QuamoJMjAwOC0wNC0y NCAxNTo0NjoxOS4wMDAwMDAwMDAgLTA1MDAKKysrKyBsaWJnY2MvY29uZmlnLmhvc3QJMjAwOC0w NC0yNCAxNTo0Njo0OS4wMDAwMDAwMDAgLTA1MDAKK0BAIC01NzIsNyArNTcyLDcgQEAgc3BhcmM2 NC0qLW9wZW5ic2QqKQorIAk7OworIHNwYXJjLSotZWxmKikKKyAJOzsKKy1zcGFyYy0qLWxpbnV4 KikJCSMgU1BBUkMncyBydW5uaW5nIEdOVS9MaW51eCwgbGliYzYKKytzcGFyYy0qLWxpbnV4KiB8 IHNwYXJjdjkqLSotbGludXgqKQkJIyBTUEFSQydzIHJ1bm5pbmcgR05VL0xpbnV4LCBsaWJjNgor IAlleHRyYV9wYXJ0cz0iJGV4dHJhX3BhcnRzIGNydGZhc3RtYXRoLm8iCisgCXRtYWtlX2ZpbGU9 IiR7dG1ha2VfZmlsZX0gc3BhcmMvdC1jcnRmbSIKKyAJOzsKK0BAIC01OTAsNyArNTkwLDcgQEAg c3BhcmMtd3JzLXZ4d29ya3MpCisgCTs7Cisgc3BhcmM2NC0qLWZyZWVic2QqfHVsdHJhc3BhcmMt Ki1mcmVlYnNkKikKKyAJOzsKKy1zcGFyYzY0LSotbGludXgqKQkJIyA2NC1iaXQgU1BBUkMncyBy dW5uaW5nIEdOVS9MaW51eAorK3NwYXJjNjQqLSotbGludXgqKQkJIyA2NC1iaXQgU1BBUkMncyBy dW5uaW5nIEdOVS9MaW51eAorIAlleHRyYV9wYXJ0cz0iJGV4dHJhX3BhcnRzIGNydGZhc3RtYXRo Lm8iCisgCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gc3BhcmMvdC1jcnRmbSIKKyAJOzsKCmRp ZmYgLS1naXQgYS9nY2M0My5zcGVjIGIvZ2NjNDMuc3BlYwppbmRleCA5NzEyMTZiLi41NDZmNzEy IDEwMDY0NAotLS0gYS9nY2M0My5zcGVjCisrKyBiL2djYzQzLnNwZWMKQEAgLTEsNiArMSw2IEBA Ci0lZGVmaW5lIERBVEUgMjAwODA0MjgKLSVkZWZpbmUgZ2NjX3ZlcnNpb24gNC4zLjAKLSVkZWZp bmUgZ2NjX3JlbGVhc2UgOAorJWRlZmluZSBEQVRFIDIwMDgwNjA5CislZGVmaW5lIGdjY192ZXJz aW9uIDQuMy4xCislZGVmaW5lIGdjY19yZWxlYXNlIDEKICVkZWZpbmUgX3VucGFja2FnZWRfZmls ZXNfdGVybWluYXRlX2J1aWxkIDAKICVkZWZpbmUgbXVsdGlsaWJfNjRfYXJjaHMgc3BhcmM2NCBw cGM2NCBzMzkweCB4ODZfNjQKICVkZWZpbmUgaW5jbHVkZV9nYXBwbGV0dmlld2VyIDEKQEAgLTIw LDcgKzIwLDcgQEAKICVkZWZpbmUgbXVsdGlsaWJfMzJfYXJjaCBzMzkwCiAlZW5kaWYKICVpZmFy Y2ggc3BhcmM2NAotJWRlZmluZSBtdWx0aWxpYl8zMl9hcmNoIHNwYXJjCislZGVmaW5lIG11bHRp bGliXzMyX2FyY2ggc3BhcmN2OQogJWVuZGlmCiAlaWZhcmNoIHBwYzY0CiAlZGVmaW5lIG11bHRp bGliXzMyX2FyY2ggcHBjCkBAIC03MSw3ICs3MSw3IEBAIEJ1aWxkUmVxdWlyZXM6IGVsZnV0aWxz LWRldmVsID49IDAuNzIKICMgTWFrZSBzdXJlIGdsaWJjIHN1cHBvcnRzIFRGbW9kZSBsb25nIGRv dWJsZQogQnVpbGRSZXF1aXJlczogZ2xpYmMgPj0gMi4zLjkwLTM1CiAlZW5kaWYKLSVpZmFyY2gg JXttdWx0aWxpYl82NF9hcmNoc30gc3BhcmMgcHBjCislaWZhcmNoICV7bXVsdGlsaWJfNjRfYXJj aHN9IHNwYXJjdjkgcHBjCiAjIEVuc3VyZSBnbGliY3ssLWRldmVsfSBpcyBpbnN0YWxsZWQgZm9y IGJvdGggbXVsdGlsaWIgYXJjaGVzCiBCdWlsZFJlcXVpcmVzOiAvbGliL2xpYmMuc28uNiAvdXNy L2xpYi9saWJjLnNvIC9saWI2NC9saWJjLnNvLjYgL3Vzci9saWI2NC9saWJjLnNvCiAlZW5kaWYK QEAgLTEzOCwyNyArMTM4LDI0IEBAIFBhdGNoODogZ2NjNDMtcHIzMjEzOS5wYXRjaAogUGF0Y2g5 OiBnY2M0My1wcjMzNzYzLnBhdGNoCiBQYXRjaDEwOiBnY2M0My1yaDMzMDc3MS5wYXRjaAogUGF0 Y2gxMTogZ2NjNDMtcmgzNDEyMjEucGF0Y2gKLVBhdGNoMTI6IGdjYzQzLWNwcC1wcmFnbWEucGF0 Y2gKLVBhdGNoMTM6IGdjYzQzLWphdmEtZGVidWctaWZhY2UtdHlwZS5wYXRjaAotUGF0Y2gxNDog Z2NjNDMtbGliZ29tcC1zcGVlZHVwLnBhdGNoCi1QYXRjaDE1OiBnY2M0My1wcjM1OTA5LnBhdGNo Ci1QYXRjaDE2OiBnY2M0My1pMzg2LWxpYmdvbXAucGF0Y2gKLVBhdGNoMTc6IGdjYzQzLXByMzU5 ODcucGF0Y2gKLVBhdGNoMTg6IGdjYzQzLXJoMjUxNjgyLnBhdGNoCi1QYXRjaDE5OiBnY2M0My1w cjM1NjUwLnBhdGNoCitQYXRjaDEyOiBnY2M0My1qYXZhLWRlYnVnLWlmYWNlLXR5cGUucGF0Y2gK K1BhdGNoMTM6IGdjYzQzLWkzODYtbGliZ29tcC5wYXRjaAorUGF0Y2gxNDogZ2NjNDMtcmgyNTE2 ODIucGF0Y2gKK1BhdGNoMTU6IGdjYzQzLXNwYXJjLWNvbmZpZy1kZXRlY3Rpb24ucGF0Y2gKK1Bh dGNoMTY6IGdjYzQzLWxpYmdvbXAtb21wX2gtbXVsdGlsaWIucGF0Y2gKIAogIyBPbiBBUk0gRUFC SSBzeXN0ZW1zLCB3ZSBkbyB3YW50IC1nbnVlYWJpIHRvIGJlIHBhcnQgb2YgdGhlCiAjIHRhcmdl dCB0cmlwbGUuCiAlaWZuYXJjaCAle2FybX0KICVkZWZpbmUgX2dudSAle25pbH0KICVlbmRpZgot JWlmYXJjaCBzcGFyYworJWlmYXJjaCBzcGFyY3Y5CiAlZGVmaW5lIGdjY190YXJnZXRfcGxhdGZv cm0gc3BhcmM2NC0le192ZW5kb3J9LSV7X3RhcmdldF9vc30KICVlbmRpZgogJWlmYXJjaCBwcGMK ICVkZWZpbmUgZ2NjX3RhcmdldF9wbGF0Zm9ybSBwcGM2NC0le192ZW5kb3J9LSV7X3RhcmdldF9v c30KICVlbmRpZgotJWlmbmFyY2ggc3BhcmMgcHBjCislaWZuYXJjaCBzcGFyY3Y5IHBwYwogJWRl ZmluZSBnY2NfdGFyZ2V0X3BsYXRmb3JtICV7X3RhcmdldF9wbGF0Zm9ybX0KICVlbmRpZgogCkBA IC00NDEsMTQgKzQzOCwxMSBAQCB3aGljaCBhcmUgcmVxdWlyZWQgdG8gcnVuIHByb2dyYW1zIGNv bXBpbGVkIHdpdGggdGhlIEdOQVQuCiAlcGF0Y2g5IC1wMCAtYiAucHIzMzc2M34KICVwYXRjaDEw IC1wMCAtYiAucmgzMzA3NzF+CiAlcGF0Y2gxMSAtcDAgLWIgLnJoMzQxMjIxfgotJXBhdGNoMTIg LXAwIC1iIC5jcHAtcHJhZ21hfgotJXBhdGNoMTMgLXAwIC1iIC5qYXZhLWRlYnVnLWlmYWNlLXR5 cGV+Ci0lcGF0Y2gxNCAtcDAgLWIgLmxpYmdvbXAtc3BlZWR1cH4KLSVwYXRjaDE1IC1wMCAtYiAu cHIzNTkwOX4KLSVwYXRjaDE2IC1wMCAtYiAuaTM4Ni1saWJnb21wfgotJXBhdGNoMTcgLXAwIC1i IC5wcjM1OTg3fgotJXBhdGNoMTggLXAwIC1iIC5yaDI1MTY4Mn4KLSVwYXRjaDE5IC1wMCAtYiAu cHIzNTY1MH4KKyVwYXRjaDEyIC1wMCAtYiAuamF2YS1kZWJ1Zy1pZmFjZS10eXBlfgorJXBhdGNo MTMgLXAwIC1iIC5pMzg2LWxpYmdvbXB+CislcGF0Y2gxNCAtcDAgLWIgLnJoMjUxNjgyfgorJXBh dGNoMTUgLXAwIC1iIC5zcGFyYy1jb25maWctZGV0ZWN0aW9ufgorJXBhdGNoMTYgLXAwIC1iIC5s aWJnb21wLW9tcF9oLW11bHRpbGlifgogCiB0YXIgeHpmICV7U09VUkNFNH0KIApAQCAtNDU2LDcg KzQ1MCw3IEBAIHRhciB4emYgJXtTT1VSQ0U0fQogdGFyIHhqZiAle1NPVVJDRTEwfQogJWVuZGlm CiAKLXNlZCAtaSAtZSAncy80XC4zXC4xLzQuMy4wLycgZ2NjL0JBU0UtVkVSCitzZWQgLWkgLWUg J3MvNFwuM1wuMi80LjMuMS8nIGdjYy9CQVNFLVZFUgogZWNobyAnUmVkIEhhdCAle3ZlcnNpb259 LSV7Z2NjX3JlbGVhc2V9JyA+IGdjYy9ERVYtUEhBU0UKIAogY3AgLWEgbGlic3RkYysrLXYzL2Nv bmZpZy9jcHUvaXs0LDN9ODYvYXRvbWljaXR5LmgKQEAgLTU0NCw3ICs1MzgsNyBAQCBjZCAuLgog Q0M9Z2NjCiBPUFRfRkxBR1M9YGVjaG8gJFJQTV9PUFRfRkxBR1N8c2VkIC1lICdzL1woLVdwLFwp XD8tRF9GT1JUSUZZX1NPVVJDRT1bMTJdLy9nJ2AKIE9QVF9GTEFHUz1gZWNobyAkT1BUX0ZMQUdT fHNlZCAtZSAncy8tbTY0Ly9nO3MvLW0zMi8vZztzLy1tMzEvL2cnYAotJWlmYXJjaCBzcGFyYyBz cGFyYzY0CislaWZhcmNoIHNwYXJjCiBPUFRfRkxBR1M9YGVjaG8gJE9QVF9GTEFHU3xzZWQgLWUg J3MvLW1jcHU9dWx0cmFzcGFyYy8tbXR1bmU9dWx0cmFzcGFyYy9nO3MvLW1jcHU9dls3OF0vL2cn YAogJWVuZGlmCiAlaWZhcmNoICV7aXg4Nn0KQEAgLTYwMSwxMSArNTk1LDE3IEBAIENDPSIkQ0Mi IENGTEFHUz0iJE9QVF9GTEFHUyIgQ1hYRkxBR1M9ImBlY2hvICRPUFRfRkxBR1MgfCBzZWQgJ3Mv IC1XYWxsIC8gL2cnYCIgCiAlaWZhcmNoIHBwYyBwcGM2NAogCS0tZW5hYmxlLXNlY3VyZXBsdCBc CiAlZW5kaWYKLSVpZmFyY2ggc3BhcmMgcHBjIHBwYzY0IHMzOTAgczM5MHggYWxwaGEKKyVpZmFy Y2ggc3BhcmMgc3BhcmN2OSBzcGFyYzY0IHBwYyBwcGM2NCBzMzkwIHMzOTB4IGFscGhhCiAJLS13 aXRoLWxvbmctZG91YmxlLTEyOCBcCiAlZW5kaWYKICVpZmFyY2ggc3BhcmMKLQktLWJ1aWxkPSV7 Z2NjX3RhcmdldF9wbGF0Zm9ybX0gLS10YXJnZXQ9JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfSAtLXdp dGgtY3B1PXY3CisJLS1kaXNhYmxlLWxpbnV4LWZ1dGV4IFwKKyVlbmRpZgorJWlmYXJjaCBzcGFy YzY0CisJLS13aXRoLWNwdT11bHRyYXNwYXJjIFwKKyVlbmRpZgorJWlmYXJjaCBzcGFyYyBzcGFy Y3Y5CisJLS1ob3N0PSV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0gLS1idWlsZD0le2djY190YXJnZXRf cGxhdGZvcm19IC0tdGFyZ2V0PSV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0gLS13aXRoLWNwdT12Nwog JWVuZGlmCiAlaWZhcmNoIHBwYwogCS0tYnVpbGQ9JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfSAtLXRh cmdldD0le2djY190YXJnZXRfcGxhdGZvcm19IC0td2l0aC1jcHU9ZGVmYXVsdDMyCkBAIC02MTYs NyArNjE2LDcgQEAgQ0M9IiRDQyIgQ0ZMQUdTPSIkT1BUX0ZMQUdTIiBDWFhGTEFHUz0iYGVjaG8g JE9QVF9GTEFHUyB8IHNlZCAncy8gLVdhbGwgLyAvZydgIiAKICVpZmFyY2ggczM5MCBzMzkweAog CS0td2l0aC10dW5lPXo5LTEwOSBcCiAlZW5kaWYKLSVpZm5hcmNoIHNwYXJjIHBwYworJWlmbmFy Y2ggc3BhcmMgc3BhcmN2OSBwcGMKIAktLWJ1aWxkPSV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0KICVl bmRpZgogCkBAIC03ODgsNyArNzg4LDcgQEAgZG9uZQogIyBzaGlwcGluZyB0aGlzIGZvciBldmVy eWJvZHkgaXMgdW5uZWNlc3NhcnkuCiBybSAtcmYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9p bmNsdWRlL2MrKy8le2djY192ZXJzaW9ufS8le2djY190YXJnZXRfcGxhdGZvcm19L2JpdHMvc3Rk YysrLmguZ2NoCiAKLSVpZmFyY2ggc3BhcmMgc3BhcmM2NAorJWlmYXJjaCBzcGFyY3Y5IHNwYXJj NjQKIGxuIC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vYmluLyV7Z2NjX3RhcmdldF9wbGF0 Zm9ybX0tZ2NjIFwKICAgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9iaW4vc3BhcmMtJXtfdmVu ZG9yfS0le190YXJnZXRfb3N9LWdjYwogJWVuZGlmCkBAIC03OTcsNyArNzk3LDcgQEAgbG4gLWYg JFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9iaW4vJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS1nY2Mg XAogICAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2Jpbi9wcGMtJXtfdmVuZG9yfS0le190YXJn ZXRfb3N9LWdjYwogJWVuZGlmCiAKLSVpZmFyY2ggc3BhcmMgcHBjCislaWZhcmNoIHNwYXJjdjkg cHBjCiBGVUxMTFBBVEg9JEZVTExQQVRIL2xpYjMyCiAlZW5kaWYKICVpZmFyY2ggc3BhcmM2NCBw cGM2NApAQCAtODI3LDcgKzgyNyw3IEBAIG12IC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0v JXtfbGlifS9saWJnY2Nfcy5zby4xICRSUE1fQlVJTERfUk9PVC8le19saWJ9L2xpCiBjaG1vZCA3 NTUgJFJQTV9CVUlMRF9ST09ULyV7X2xpYn0vbGliZ2NjX3MtJXtnY2NfdmVyc2lvbn0tJXtEQVRF fS5zby4xCiBsbiAtc2YgbGliZ2NjX3MtJXtnY2NfdmVyc2lvbn0tJXtEQVRFfS5zby4xICRSUE1f QlVJTERfUk9PVC8le19saWJ9L2xpYmdjY19zLnNvLjEKIGxuIC1zZiAvJXtfbGlifS9saWJnY2Nf cy5zby4xICRGVUxMUEFUSC9saWJnY2Nfcy5zbwotJWlmYXJjaCBzcGFyYyBwcGMKKyVpZmFyY2gg c3BhcmN2OSBwcGMKIGxuIC1zZiAvbGliNjQvbGliZ2NjX3Muc28uMSAkRlVMTFBBVEgvNjQvbGli Z2NjX3Muc28KICVlbmRpZgogJWlmYXJjaCAle211bHRpbGliXzY0X2FyY2hzfQpAQCAtOTEzLDcg KzkxMyw3IEBAIG12IC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9saWJvYmpj LiphIC4KIG12IC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9saWJnb21wLiph IC4KIG12IC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9saWJtdWRmbGFweyx0 aH0uKmEgJEZVTExMUEFUSC8KIAotJWlmYXJjaCBzcGFyYyBwcGMKKyVpZmFyY2ggc3BhcmN2OSBw cGMKIGxuIC1zZiAuLi8uLi8uLi8uLi8uLi9saWI2NC9saWJvYmpjLnNvLjIgNjQvbGlib2JqYy5z bwogbG4gLXNmIC4uL2BlY2hvIC4uLy4uLy4uLy4uL2xpYi9saWJzdGRjKysuc28uNi4qIHwgc2Vk IHN+L2xpYi9+L2xpYjY0L35gIDY0L2xpYnN0ZGMrKy5zbwogbG4gLXNmIC4uL2BlY2hvIC4uLy4u Ly4uLy4uL2xpYi9saWJnZm9ydHJhbi5zby4zLiogfCBzZWQgc34vbGliL34vbGliNjQvfmAgNjQv bGliZ2ZvcnRyYW4uc28KQEAgLTEwNTUsNyArMTA1NSw3IEBAIHJtIC1mICRSUE1fQlVJTERfUk9P VCV7X3ByZWZpeH0vJXtfbGlifS9saWJzc3AqCiBybSAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVm aXh9L2xpYi9saWIqLnNvKgogcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9saWIvbGli Ki5hCiAlZWxzZQotJWlmYXJjaCBzcGFyYyBwcGMKKyVpZmFyY2ggc3BhcmN2OSBwcGMKIHJtIC1m ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGliNjQvbGliKi5zbyoKIHJtIC1mICRSUE1fQlVJ TERfUk9PVCV7X3ByZWZpeH0vbGliNjQvbGliKi5hCiAlZW5kaWYKQEAgLTExOTksMTAgKzExOTks MTAgQEAgZmkKICV7X3ByZWZpeH0vYmluL2djb3YKICV7X3ByZWZpeH0vYmluL3Byb3RvaXplCiAl e19wcmVmaXh9L2Jpbi91bnByb3RvaXplCi0laWZhcmNoIHNwYXJjIHBwYworJWlmYXJjaCBwcGMK ICV7X3ByZWZpeH0vYmluLyV7X3RhcmdldF9wbGF0Zm9ybX0tZ2NjCiAlZW5kaWYKLSVpZmFyY2gg c3BhcmM2NAorJWlmYXJjaCBzcGFyYzY0IHNwYXJjdjkKICV7X3ByZWZpeH0vYmluL3NwYXJjLSV7 X3ZlbmRvcn0tJXtfdGFyZ2V0X29zfS1nY2MKICVlbmRpZgogJWlmYXJjaCBwcGM2NApAQCAtMTI2 NCw3ICsxMjY0LDcgQEAgZmkKICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZv cm19LyV7Z2NjX3ZlcnNpb259L2xpYmdvbXAuc3BlYwogJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2Nj X3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliZ29tcC5hCiAle19wcmVmaXh9L2xp Yi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJnb21wLnNvCi0l aWZhcmNoIHNwYXJjIHBwYworJWlmYXJjaCBzcGFyY3Y5IHBwYwogJWRpciAle19wcmVmaXh9L2xp Yi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS82NAogJXtfcHJlZml4 fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQvY3J0Ki5v CiAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9u fS82NC9saWJnY2MuYQpAQCAtMTI5Miw3ICsxMjkyLDcgQEAgZmkKICV7X3ByZWZpeH0vbGliL2dj Yy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyL2xpYm11ZGZsYXAuc28K ICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259 LzMyL2xpYm11ZGZsYXB0aC5zbwogJWVuZGlmCi0laWZhcmNoIHNwYXJjIHNwYXJjNjQgcHBjIHBw YzY0CislaWZhcmNoIHNwYXJjdjkgc3BhcmM2NCBwcGMgcHBjNjQKICV7X3ByZWZpeH0vbGliL2dj Yy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYm11ZGZsYXAuYQogJXtf cHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGli bXVkZmxhcHRoLmEKICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7 Z2NjX3ZlcnNpb259L2xpYm11ZGZsYXAuc28KQEAgLTEzMzMsNyArMTMzMyw3IEBAIGZpCiAlZGly ICV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfQogJWRpciAle19w cmVmaXh9L2xpYmV4ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0K ICV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJz aW9ufS9jYzFwbHVzCi0laWZhcmNoIHNwYXJjIHBwYworJWlmYXJjaCBzcGFyY3Y5IHBwYwogJWRp ciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9u fS82NAogJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVy c2lvbn0vNjQvbGlic3RkYysrLnNvCiAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3Bs YXRmb3JtfS8le2djY192ZXJzaW9ufS82NC9saWJzdGRjKysuYQpAQCAtMTM0NSwxMSArMTM0NSwx MSBAQCBmaQogJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2Nf dmVyc2lvbn0vMzIvbGlic3RkYysrLmEKICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRf cGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyL2xpYnN1cGMrKy5hCiAlZW5kaWYKLSVpZmFyY2gg c3BhcmMgcHBjICV7bXVsdGlsaWJfNjRfYXJjaHN9CislaWZhcmNoIHNwYXJjdjkgcHBjICV7bXVs dGlsaWJfNjRfYXJjaHN9CiAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fS8le2djY192ZXJzaW9ufS9saWJzdGRjKysuc28KICV7X3ByZWZpeH0vbGliL2djYy8le2djY190 YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYnN1cGMrKy5hCiAlZW5kaWYKLSVpZmFy Y2ggc3BhcmMgc3BhcmM2NCBwcGMgcHBjNjQKKyVpZmFyY2ggc3BhcmN2OSBzcGFyYzY0IHBwYyBw cGM2NAogJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVy c2lvbn0vbGlic3RkYysrLmEKICVlbmRpZgogJWRvYyBycG0uZG9jL2NoYW5nZWxvZ3MvZ2NjL2Nw L0NoYW5nZUxvZyoKQEAgLTEzNjgsNyArMTM2OCw3IEBAIGZpCiAlZGlyICV7X3ByZWZpeH0vbGli L2djYwogJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfQogJWRp ciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9u fQotJWlmYXJjaCBzcGFyYyBwcGMKKyVpZmFyY2ggc3BhcmN2OSBwcGMKICVkaXIgJXtfcHJlZml4 fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliMzIKICV7 X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xp YjMyL2xpYnN0ZGMrKy5hCiAlZW5kaWYKQEAgLTEzNzYsMTAgKzEzNzYsMTAgQEAgZmkKICVkaXIg JXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0v bGliNjQKICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3Zl cnNpb259L2xpYjY0L2xpYnN0ZGMrKy5hCiAlZW5kaWYKLSVpZm5hcmNoIHNwYXJjIHNwYXJjNjQg cHBjIHBwYzY0CislaWZuYXJjaCBzcGFyY3Y5IHNwYXJjNjQgcHBjIHBwYzY0CiAle19wcmVmaXh9 L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJzdGRjKysu YQogJWVuZGlmCi0laWZuYXJjaCBzcGFyYyBwcGMgJXttdWx0aWxpYl82NF9hcmNoc30KKyVpZm5h cmNoIHNwYXJjdjkgcHBjICV7bXVsdGlsaWJfNjRfYXJjaHN9CiAle19wcmVmaXh9L2xpYi9nY2Mv JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJzdGRjKysuc28KICV7X3By ZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYnN1 cGMrKy5hCiAlZW5kaWYKQEAgLTEzOTgsNyArMTM5OCw3IEBAIGZpCiAle19wcmVmaXh9L2xpYmV4 ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vY2Mxb2JqCiAle19w cmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJv YmpjLmEKICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3Zl cnNpb259L2xpYm9iamMuc28KLSVpZmFyY2ggc3BhcmMgcHBjCislaWZhcmNoIHNwYXJjdjkgcHBj CiAlZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3Zl cnNpb259LzY0CiAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2dj Y192ZXJzaW9ufS82NC9saWJvYmpjLmEKICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRf cGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzY0L2xpYm9iamMuc28KQEAgLTE0NDMsNyArMTQ0Myw3 IEBAIGZpCiAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192 ZXJzaW9ufS9saWJnZm9ydHJhbmJlZ2luLmEKICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJn ZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYmdmb3J0cmFuLmEKICV7X3ByZWZpeH0vbGli L2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYmdmb3J0cmFuLnNv Ci0laWZhcmNoIHNwYXJjIHBwYworJWlmYXJjaCBzcGFyY3Y5IHBwYwogJWRpciAle19wcmVmaXh9 L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS82NAogJXtfcHJl Zml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQvbGli Z2ZvcnRyYW5iZWdpbi5hCiAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fS8le2djY192ZXJzaW9ufS82NC9saWJnZm9ydHJhbi5hCkBAIC0xNDg0LDExICsxNDg0LDExIEBA IGZpCiAle19wcmVmaXh9L2xpYmV4ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2Nf dmVyc2lvbn0vanZnZW5tYWluCiAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRm b3JtfS8le2djY192ZXJzaW9ufS9saWJnY2ouc28KICV7X3ByZWZpeH0vbGliL2djYy8le2djY190 YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYmdjai10b29scy5zbwotJWlmYXJjaCBz cGFyYyBzcGFyYzY0IHBwYyBwcGM2NAorJWlmYXJjaCBzcGFyY3Y5IHNwYXJjNjQgcHBjIHBwYzY0 CiAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9u fS9saWJnY2pfYmMuc28KICVlbmRpZgogJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9w bGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliZ2lqLnNvCi0laWZhcmNoIHNwYXJjIHBwYworJWlm YXJjaCBzcGFyY3Y5IHBwYwogJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3Bs YXRmb3JtfS8le2djY192ZXJzaW9ufS82NAogJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3Rhcmdl dF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQvbGliZ2NqLnNvCiAle19wcmVmaXh9L2xpYi9n Y2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS82NC9saWJnY2otdG9vbHMu c28KQEAgLTE1NzgsNyArMTU3OCw3IEBAIGZpCiAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFy Z2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlL2puaV9tZC5oCiAle19wcmVmaXh9 L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlL2p2 bXBpLmgKICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3Zl cnNpb259L2xpYmdjai5zcGVjCi0laWZhcmNoIHNwYXJjIHBwYworJWlmYXJjaCBzcGFyY3Y5IHBw YwogJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192 ZXJzaW9ufS9saWIzMgogJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0v JXtnY2NfdmVyc2lvbn0vbGliMzIvbGliZ2NqX2JjLnNvCiAlZW5kaWYKQEAgLTE1ODYsNyArMTU4 Niw3IEBAIGZpCiAlZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19 LyV7Z2NjX3ZlcnNpb259L2xpYjY0CiAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3Bs YXRmb3JtfS8le2djY192ZXJzaW9ufS9saWI2NC9saWJnY2pfYmMuc28KICVlbmRpZgotJWlmbmFy Y2ggc3BhcmMgc3BhcmM2NCBwcGMgcHBjNjQKKyVpZm5hcmNoIHNwYXJjdjkgc3BhcmM2NCBwcGMg cHBjNjQKICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3Zl cnNpb259L2xpYmdjal9iYy5zbwogJWVuZGlmCiAlZGlyICV7X3ByZWZpeH0vaW5jbHVkZS9jKysK QEAgLTE2NDUsNyArMTY0NSw3IEBAIGZpCiAlZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2djY190 YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259CiAlZGlyICV7X3ByZWZpeH0vbGliL2djYy8l e2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUKICV7X3ByZWZpeH0v bGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvbWYt cnVudGltZS5oCi0laWZhcmNoIHNwYXJjIHBwYworJWlmYXJjaCBzcGFyY3Y5IHBwYwogJWRpciAl e19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9s aWIzMgogJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVy c2lvbn0vbGliMzIvbGlibXVkZmxhcC5hCiAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWIzMi9saWJtdWRmbGFwdGguYQpAQCAtMTY1NSw3 ICsxNjU1LDcgQEAgZmkKICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19 LyV7Z2NjX3ZlcnNpb259L2xpYjY0L2xpYm11ZGZsYXAuYQogJXtfcHJlZml4fS9saWIvZ2NjLyV7 Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliNjQvbGlibXVkZmxhcHRoLmEK ICVlbmRpZgotJWlmbmFyY2ggc3BhcmMgc3BhcmM2NCBwcGMgcHBjNjQKKyVpZm5hcmNoIHNwYXJj djkgc3BhcmM2NCBwcGMgcHBjNjQKICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxh dGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYm11ZGZsYXAuYQogJXtfcHJlZml4fS9saWIvZ2NjLyV7 Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGlibXVkZmxhcHRoLmEKICV7X3By ZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYm11 ZGZsYXAuc28KQEAgLTE2NjQsNiArMTY2NCw0MCBAQCBmaQogJWRvYyBycG0uZG9jL2NoYW5nZWxv Z3MvbGlibXVkZmxhcC9DaGFuZ2VMb2cqCiAKICVjaGFuZ2Vsb2cKKyogTW9uIEp1biA5ICAyMDA4 IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMy4xLTEKKy0gdXBkYXRlIGZyb20g Z2NjLTRfMy1icmFuY2gKKyAgLSA0LjMuMSByZWxlYXNlCisgIC0gUFJzIGFkYS8yNDg4MCwgYWRh LzI2NjM1LCBib290c3RyYXAvMzUxNjksIGJvb3RzdHJhcC8zNjQ1MiwgYysrLzM1NTc4LAorCWMr Ky8zNTk4NiwgYysrLzM2MDIzLCBjKysvMzYyMzcsIGMrKy8zNjMwOCwgZm9ydHJhbi8zNTE4NCwK Kwlmb3J0cmFuLzM1NzQzLCBmb3J0cmFuLzM1NzQ1LCBmb3J0cmFuLzM1NzU2LCBmb3J0cmFuLzM1 NzU5LAorCWZvcnRyYW4vMzU3ODAsIGZvcnRyYW4vMzU4NjQsIGZvcnRyYW4vMzU5OTcsIGZvcnRy YW4vMzYxNzYsCisJZm9ydHJhbi8zNjIzMywgbGliZm9ydHJhbi8zNTk5MCwgbGliZm9ydHJhbi8z NTk5MywgbGliZm9ydHJhbi8zNTk5NSwKKwlsaWJnY2ovMzYyNTIsIGxpYnN0ZGMrKy8zNTkyMiwg bWlkZGxlLWVuZC8zNDk3MywgbWlkZGxlLWVuZC8zNjAxMywKKwltaWRkbGUtZW5kLzM2MDc3LCBt aWRkbGUtZW5kLzM2MDkzLCBtaWRkbGUtZW5kLzM2MTA2LAorCW1pZGRsZS1lbmQvMzYxMzcsIG1p ZGRsZS1lbmQvMzYxNTQsIG1pZGRsZS1lbmQvMzYxNzIsCisJbWlkZGxlLWVuZC8zNjE5NCwgbWlk ZGxlLWVuZC8zNjIyNywgbWlkZGxlLWVuZC8zNjI0NCwKKwltaWRkbGUtZW5kLzM2MzAwLCBtaWRk bGUtZW5kL1BSMjg2OTAsIHJ0bC1vcHRpbWl6YXRpb24vMzYxMTEsCisJcnRsLW9wdGltaXphdGlv bi8zNjQxOSwgdGFyZ2V0LzI3Mzg2LCB0YXJnZXQvMzAyNDMsIHRhcmdldC8zNDkzMiwKKwl0YXJn ZXQvMzU2NjEsIHRhcmdldC8zNTkyMSwgdGFyZ2V0LzM2MDc5LCB0YXJnZXQvMzYwOTAsIHRhcmdl dC8zNjA5NSwKKwl0YXJnZXQvMzYxODIsIHRhcmdldC8zNjIyNCwgdGFyZ2V0LzM2MzIxLCB0YXJn ZXQvMzYzNjIsCisJdHJlZS1vcHRpbWl6YXRpb24vMzQyNDQsIHRyZWUtb3B0aW1pemF0aW9uLzM0 MzMwLAorCXRyZWUtb3B0aW1pemF0aW9uLzM0OTc2LCB0cmVlLW9wdGltaXphdGlvbi8zNTIwNCwK Kwl0cmVlLW9wdGltaXphdGlvbi8zNjA5OCwgdHJlZS1vcHRpbWl6YXRpb24vMzYxMTksCisJdHJl ZS1vcHRpbWl6YXRpb24vMzYxMjksIHRyZWUtb3B0aW1pemF0aW9uLzM2MTgxLAorCXRyZWUtb3B0 aW1pemF0aW9uLzM2MTg3LCB0cmVlLW9wdGltaXphdGlvbi8zNjI0NSwKKwl0cmVlLW9wdGltaXph dGlvbi8zNjI2MiwgdHJlZS1vcHRpbWl6YXRpb24vMzYyOTEsCisJdHJlZS1vcHRpbWl6YXRpb24v MzYyOTMsIHRyZWUtb3B0aW1pemF0aW9uLzM2MzM5CistIE9wZW5NUCAzLjAgc3VwcG9ydAorCisq IFR1ZSBNYXkgMjAgMjAwOCBUb20gInNwb3QiIENhbGxhd2F5IDx0Y2FsbGF3YUByZWRoYXQuY29t PiA0LjMuMC0xMQorLSBmaXggbWlzc2luZyBmaWxlIHdpdGggc3BhcmN2OQorCisqIFN1biBNYXkg MTggMjAwOCBUb20gInNwb3QiIENhbGxhd2F5IDx0Y2FsbGF3YUByZWRoYXQuY29tPiA0LjMuMC0x MAorLSBtYWtlIHNwYXJjdjkgdGhlIG11bHRpbGliXzMyX2FyY2ggZm9yIHNwYXJjNjQKKworKiBT dW4gTWF5IDE4IDIwMDggVG9tICJzcG90IiBDYWxsYXdheSA8dGNhbGxhd2FAcmVkaGF0LmNvbT4g NC4zLjAtOQorLSBzcGFyY3Y5IHN1cHBvcnQgYW5kIGRldGVjdGlvbgorCiAqIE1vbiBBcHIgMjgg MjAwOCBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjMuMC04CiAtIHVwZGF0ZSBm cm9tIGdjYy00XzMtYnJhbmNoCiAgIC0gZGVjcmVhc2UgY29tcGlsZSB0aW1lIHN0YWNrIHVzYWdl IGR1cmluZyBHQyAoIzQ0MzczOSwgUFIgZGVidWcvMzYwNjApCgpkaWZmIC0tZ2l0IGEvc291cmNl cyBiL3NvdXJjZXMKaW5kZXggYmE5MTZjNS4uMDM2NDhhOCAxMDA2NDQKLS0tIGEvc291cmNlcwor KysgYi9zb3VyY2VzCkBAIC0xLDIgKzEsMiBAQAotNWRkMDVmOTdjM2Q3NjZjMjM2OWZkZjUyYzNm NzEwMTcgIGdjYy00LjMuMC0yMDA4MDQyOC50YXIuYnoyCis5MWFiYmIzY2IzOTBjYTA0NDFhY2Vj MmJiMDkwOGVhYiAgZ2NjLTQuMy4xLTIwMDgwNjA5LnRhci5iejIKIDkyYTcwZjllNTYyMjNiNjUz YmNlMGY1OGY5MGNmOTUwICBmYXN0amFyLTAuOTUudGFyLmd6Cg==