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.1.2-12 Date: Mon, 29 Jun 2026 12:23:17 GMT Message-ID: <178273579745.1.15413308066389713283.rpms-gcc-a1271c140203@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: a1271c1402033a306e9919d3930da1f738ff0410 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogYTEyNzFjMTQwMjAzM2EzMDZlOTkxOWQzOTMwZGExZjcz OGZmMDQxMApBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAwNy0wNS0wM1QyMjoxNTowOCswMDowMApTdGF0cyAgOiArMzgyLy04MTEgaW4g MTEgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dj Yy9jL2ExMjcxYzE0MDIwMzNhMzA2ZTk5MTlkMzkzMGRhMWY3MzhmZjA0MTA/YnJhbmNoPXJoZWwt ZjQxLWJhc2UKCkxvZzoKNC4xLjItMTIKCi0tLQpkaWZmIC0tZ2l0IGEvLmN2c2lnbm9yZSBiLy5j dnNpZ25vcmUKaW5kZXggMmM0OTBiYi4uZjkyMmM0YyAxMDA2NDQKLS0tIGEvLmN2c2lnbm9yZQor KysgYi8uY3ZzaWdub3JlCkBAIC0xICsxIEBACi1nY2MtNC4xLjItMjAwNzA0MjQudGFyLmJ6Mgor Z2NjLTQuMS4yLTIwMDcwNTAzLnRhci5iejIKCmRpZmYgLS1naXQgYS9nY2M0MS1kdG9yLXJlbHJv LnBhdGNoIGIvZ2NjNDEtZHRvci1yZWxyby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4xMTgxMjhjCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjNDEtZHRvci1yZWxyby5w YXRjaApAQCAtMCwwICsxLDg5IEBACisyMDA3LTA1LTAzICBVbHJpY2ggRHJlcHBlciAgPGRyZXBw ZXJAcmVkaGF0LmNvbT4KKwkgICAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisK KwkqIGNydHN0dWZmLmMgKEhJRERFTl9EVE9SX0xJU1RfRU5EKTogTmV3IG1hY3JvLgorCShfX2Rv X2dsb2JhbF9kdG9yc19hdXgpOiBVc2UgbW9yZSBwYXJhbm9pZCBsb29wIHRvIHJ1bgorCWRlc3Ry dWN0b3JzIGlmIEhJRERFTl9EVE9SX0xJU1RfRU5ELgorCShfX0RUT1JfRU5EX18pOiBFeHBvcnQg YXMgYSBoaWRkZW4gc3ltYm9sIHdoZW4gSElEREVOX0RUT1JfTElTVF9FTkQuCisKKy0tLSBnY2Mv Y3J0c3R1ZmYuYy5qagkyMDA3LTAxLTI0IDIyOjI0OjIxLjAwMDAwMDAwMCArMDEwMAorKysrIGdj Yy9jcnRzdHVmZi5jCTIwMDctMDUtMDMgMTA6NDA6MjkuMDAwMDAwMDAwICswMjAwCitAQCAtMTA2 LDYgKzEwNywxMSBAQCBjYWxsXyAjIyBGVU5DICh2b2lkKQkJCQkJXAorICMgZGVmaW5lIEVIX0ZS QU1FX1NFQ1RJT05fQ09OU1QKKyAjZW5kaWYKKyAKKysjaWYgIWRlZmluZWQoRFRPUl9MSVNUX0VO RCkgJiYgZGVmaW5lZChPQkpFQ1RfRk9STUFUX0VMRikgXAorKyAgICAmJiBkZWZpbmVkKEhBVkVf R0FTX0hJRERFTikgJiYgIWRlZmluZWQoRklOSV9BUlJBWV9TRUNUSU9OX0FTTV9PUCkKKysjIGRl ZmluZSBISURERU5fRFRPUl9MSVNUX0VORAorKyNlbmRpZgorKworIC8qIFdlIGRvIG5vdCB3YW50 IHRvIGFkZCB0aGUgd2VhayBhdHRyaWJ1dGUgdG8gdGhlIGRlY2xhcmF0aW9ucyBvZiB0aGVzZQor ICAgIHJvdXRpbmVzIGluIHVud2luZC1kdzItZmRlLmggYmVjYXVzZSB0aGF0IHdpbGwgY2F1c2Ug dGhlIGRlZmluaXRpb24gb2YKKyAgICB0aGVzZSBzeW1ib2xzIHRvIGJlIHdlYWsgYXMgd2VsbC4K K0BAIC0yNjUsMTAgKzI3MSw2IEBAIGV4dGVybiB2b2lkIF9fY3hhX2ZpbmFsaXplICh2b2lkICop IFRBUkcKKyBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKCh1c2VkKSkKKyBfX2RvX2dsb2JhbF9k dG9yc19hdXggKHZvaWQpCisgeworLSNpZm5kZWYgRklOSV9BUlJBWV9TRUNUSU9OX0FTTV9PUAor LSAgc3RhdGljIGZ1bmNfcHRyICpwID0gX19EVE9SX0xJU1RfXyArIDE7CistICBmdW5jX3B0ciBm OworLSNlbmRpZiAvKiAhZGVmaW5lZChGSU5JX0FSUkFZX1NFQ1RJT05fQVNNX09QKSAgKi8KKyAg IHN0YXRpYyBfQm9vbCBjb21wbGV0ZWQ7CisgCisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoY29t cGxldGVkLCAwKSkKK0BAIC0yODIsMTIgKzI4NCwzMiBAQCBfX2RvX2dsb2JhbF9kdG9yc19hdXgg KHZvaWQpCisgI2lmZGVmIEZJTklfQVJSQVlfU0VDVElPTl9BU01fT1AKKyAgIC8qIElmIHdlIGFy ZSB1c2luZyAuZmluaV9hcnJheSB0aGVuIGRlc3RydWN0b3JzIHdpbGwgYmUgcnVuIHZpYSB0aGF0 CisgICAgICBtZWNoYW5pc20uICAqLworKyNlbGlmIGRlZmluZWQoSElEREVOX0RUT1JfTElTVF9F TkQpCisrICB7CisrICAgIC8qIFNhZmVyIHZlcnNpb24gdGhhdCBtYWtlcyBzdXJlIG9ubHkgLmR0 b3JzIGZ1bmN0aW9uIHBvaW50ZXJzIGFyZQorKyAgICAgICBjYWxsZWQgZXZlbiBpZiB0aGUgc3Rh dGljIHZhcmlhYmxlIGlzIG1hbGljaW91c2x5IGNoYW5nZWQuICAqLworKyAgICBleHRlcm4gZnVu Y19wdHIgX19EVE9SX0VORF9fW10gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImhpZGRlbiIp KSk7CisrICAgIHN0YXRpYyBzaXplX3QgZHRvcl9pZHg7CisrICAgIGNvbnN0IHNpemVfdCBtYXhf aWR4ID0gX19EVE9SX0VORF9fIC0gX19EVE9SX0xJU1RfXyAtIDE7CisrICAgIGZ1bmNfcHRyIGY7 CisrCisrICAgIHdoaWxlIChkdG9yX2lkeCA8IG1heF9pZHgpCisrICAgICAgeworKwlmID0gX19E VE9SX0xJU1RfX1srK2R0b3JfaWR4XTsKKysJZiAoKTsKKysgICAgICB9CisrICB9CisgI2Vsc2Ug LyogIWRlZmluZWQgKEZJTklfQVJSQVlfU0VDVElPTl9BU01fT1ApICovCistICB3aGlsZSAoKGYg PSAqcCkpCistICAgIHsKKy0gICAgICBwKys7CistICAgICAgZiAoKTsKKy0gICAgfQorKyAgewor KyAgICBzdGF0aWMgZnVuY19wdHIgKnAgPSBfX0RUT1JfTElTVF9fICsgMTsKKysgICAgZnVuY19w dHIgZjsKKysKKysgICAgd2hpbGUgKChmID0gKnApKQorKyAgICAgIHsKKysJcCsrOworKwlmICgp OworKyAgICAgIH0KKysgIH0KKyAjZW5kaWYgLyogIWRlZmluZWQoRklOSV9BUlJBWV9TRUNUSU9O X0FTTV9PUCkgKi8KKyAKKyAjaWZkZWYgVVNFX0VIX0ZSQU1FX1JFR0lTVFJZCitAQCAtNDcxLDYg KzQ5MywxNyBAQCBTVEFUSUMgZnVuY19wdHIgX19DVE9SX0VORF9fWzFdCisgCisgI2lmZGVmIERU T1JfTElTVF9FTkQKKyBEVE9SX0xJU1RfRU5EOworKyNlbGlmIGRlZmluZWQoSElEREVOX0RUT1Jf TElTVF9FTkQpCisrI2lmZGVmIERUT1JTX1NFQ1RJT05fQVNNX09QCisrYXNtIChEVE9SU19TRUNU SU9OX0FTTV9PUCk7CisrI2VuZGlmCisrZnVuY19wdHIgX19EVE9SX0VORF9fWzFdCisrICBfX2F0 dHJpYnV0ZV9fICgodW51c2VkLAorKyNpZm5kZWYgRFRPUlNfU0VDVElPTl9BU01fT1AKKysJCSAg c2VjdGlvbigiLmR0b3JzIiksCisrI2VuZGlmCisrCQkgIGFsaWduZWQoc2l6ZW9mKGZ1bmNfcHRy KSksIHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpCisrICA9IHsgKGZ1bmNfcHRyKSAwIH07CisgI2Vs aWYgZGVmaW5lZChEVE9SU19TRUNUSU9OX0FTTV9PUCkKKyBhc20gKERUT1JTX1NFQ1RJT05fQVNN X09QKTsKKyBTVEFUSUMgZnVuY19wdHIgX19EVE9SX0VORF9fWzFdCgpkaWZmIC0tZ2l0IGEvZ2Nj NDEtbGliZ29tcC1uY3B1cy5wYXRjaCBiL2djYzQxLWxpYmdvbXAtbmNwdXMucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NiNjIzOAotLS0gL2Rldi9udWxsCisrKyBi L2djYzQxLWxpYmdvbXAtbmNwdXMucGF0Y2gKQEAgLTAsMCArMSwxODYgQEAKKzIwMDctMDUtMDIg IEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJKiBjb25maWcvbGludXgvcHJv Yy5jOiBOZXcgZmlsZS4KKworLS0tIGxpYmdvbXAvY29uZmlnL2xpbnV4L3Byb2MuYy5qagkyMDA3 LTA1LTAyIDEzOjUwOjM3LjAwMDAwMDAwMCArMDIwMAorKysrIGxpYmdvbXAvY29uZmlnL2xpbnV4 L3Byb2MuYwkyMDA3LTA1LTAyIDE2OjAwOjQ3LjAwMDAwMDAwMCArMDIwMAorQEAgLTAsMCArMSwx NzkgQEAKKysvKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrICAgQ29udHJpYnV0ZWQgYnkgSmFrdWIgSmVsaW5layA8amFrdWJA cmVkaGF0LmNvbT4uCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBPcGVuTVAg TGlicmFyeSAobGliZ29tcCkuCisrCisrICAgTGliZ29tcCBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisrICAgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrCisrICAgTGliZ29tcCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkKKysgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCisrICAgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yCisrICAgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAK KysgICBhbG9uZyB3aXRoIGxpYmdvbXA7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v dCwgd3JpdGUgdG8gdGhlCisrICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sCisrICAgTUEgMDIxMTAtMTMwMSwg VVNBLiAgKi8KKysKKysvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiB5b3UgbGluayB0aGlz IGxpYnJhcnkgd2l0aCBvdGhlciBmaWxlcywgc29tZQorKyAgIG9mIHdoaWNoIGFyZSBjb21waWxl ZCB3aXRoIEdDQywgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzIGxpYnJhcnkKKysgICBk b2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNv dmVyZWQgYnkgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2Vw dGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUKKysgICBhbnkgb3RoZXIgcmVhc29ucyB3 aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUKKysgICBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgKi8KKysKKysvKiBUaGlzIGZpbGUgY29udGFpbnMgc3lz dGVtIHNwZWNpZmljIHJvdXRpbmVzIHJlbGF0ZWQgdG8gY291bnRpbmcKKysgICBvbmxpbmUgcHJv Y2Vzc29ycyBhbmQgZHluYW1pYyBsb2FkIGJhbGFuY2luZy4gICovCisrCisrI2lmbmRlZiBfR05V X1NPVVJDRQorKyNkZWZpbmUgX0dOVV9TT1VSQ0UgMQorKyNlbmRpZgorKyNpbmNsdWRlICJsaWJn b21wLmgiCisrI2luY2x1ZGUgPHNjaGVkLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNs dWRlIDx1bmlzdGQuaD4KKysjaWZkZWYgSEFWRV9HRVRMT0FEQVZHCisrIyBpZmRlZiBIQVZFX1NZ U19MT0FEQVZHX0gKKysjICBpbmNsdWRlIDxzeXMvbG9hZGF2Zy5oPgorKyMgZW5kaWYKKysjZW5k aWYKKysKKysjaWZkZWYgSEFWRV9QVEhSRUFEX0FGRklOSVRZX05QCisrc3RhdGljIHVuc2lnbmVk IGxvbmcKKytjcHVzZXRfcG9wY291bnQgKGNwdV9zZXRfdCAqY3B1c2V0cCkKKyt7CisrI2lmZGVm IENQVV9DT1VOVAorKyAgLyogZ2xpYmMgMi42IGFuZCBhYm92ZSBwcm92aWRlIGEgbWFjcm8gZm9y IHRoaXMuICAqLworKyAgcmV0dXJuIENQVV9DT1VOVCAoY3B1c2V0cCk7CisrI2Vsc2UKKysgIHNp emVfdCBpOworKyAgdW5zaWduZWQgbG9uZyByZXQgPSAwOworKyAgZXh0ZXJuIGludCBjaGVja1tz aXplb2YgKGNwdXNldHAtPl9fYml0c1swXSkgPT0gc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCld OworKworKyAgKHZvaWQpIGNoZWNrOworKyAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAoKmNwdXNl dHApIC8gc2l6ZW9mIChjcHVzZXRwLT5fX2JpdHNbMF0pOyBpKyspCisrICAgIHsKKysgICAgICB1 bnNpZ25lZCBsb25nIGludCBtYXNrID0gY3B1c2V0cC0+X19iaXRzW2ldOworKyAgICAgIGlmICht YXNrID09IDApCisrCWNvbnRpbnVlOworKyAgICAgIHJldCArPSBfX2J1aWx0aW5fcG9wY291bnRs IChtYXNrKTsKKysgICAgfQorKyAgcmV0dXJuIHJldDsKKysjZW5kaWYKKyt9CisrI2VuZGlmCisr CisrLyogQXQgc3RhcnR1cCwgZGV0ZXJtaW5lIHRoZSBkZWZhdWx0IG51bWJlciBvZiB0aHJlYWRz LiAgSXQgd291bGQgc2VlbQorKyAgIHRoaXMgc2hvdWxkIGJlIHJlbGF0ZWQgdG8gdGhlIG51bWJl ciBvZiBjcHVzIG9ubGluZS4gICovCisrCisrdm9pZAorK2dvbXBfaW5pdF9udW1fdGhyZWFkcyAo dm9pZCkKKyt7CisrI2lmZGVmIEhBVkVfUFRIUkVBRF9BRkZJTklUWV9OUAorKyAgY3B1X3NldF90 IGNwdXNldDsKKysKKysgIGlmIChwdGhyZWFkX2dldGFmZmluaXR5X25wIChwdGhyZWFkX3NlbGYg KCksIHNpemVvZiAoY3B1c2V0KSwgJmNwdXNldCkgPT0gMCkKKysgICAgeworKyAgICAgIC8qIENv dW50IG9ubHkgdGhlIENQVXMgdGhpcyBwcm9jZXNzIGNhbiB1c2UuICAqLworKyAgICAgIGdvbXBf bnRocmVhZHNfdmFyID0gY3B1c2V0X3BvcGNvdW50ICgmY3B1c2V0KTsKKysgICAgICBpZiAoZ29t cF9udGhyZWFkc192YXIgPT0gMCkKKysJZ29tcF9udGhyZWFkc192YXIgPSAxOworKyAgICAgIHJl dHVybjsKKysgICAgfQorKyNlbmRpZgorKyNpZmRlZiBfU0NfTlBST0NFU1NPUlNfT05MTgorKyAg Z29tcF9udGhyZWFkc192YXIgPSBzeXNjb25mIChfU0NfTlBST0NFU1NPUlNfT05MTik7CisrI2Vu ZGlmCisrfQorKworK3N0YXRpYyBpbnQKKytnZXRfbnVtX3Byb2NzICh2b2lkKQorK3sKKysjaWZk ZWYgSEFWRV9QVEhSRUFEX0FGRklOSVRZX05QCisrICBjcHVfc2V0X3QgY3B1c2V0OworKworKyAg aWYgKGdvbXBfY3B1X2FmZmluaXR5ID09IE5VTEwpCisrICAgIHsKKysgICAgICAvKiBDb3VudCBv bmx5IHRoZSBDUFVzIHRoaXMgcHJvY2VzcyBjYW4gdXNlLiAgKi8KKysgICAgICBpZiAocHRocmVh ZF9nZXRhZmZpbml0eV9ucCAocHRocmVhZF9zZWxmICgpLCBzaXplb2YgKGNwdXNldCksCisrCQkJ CSAgJmNwdXNldCkgPT0gMCkKKysJeworKwkgIGludCByZXQgPSBjcHVzZXRfcG9wY291bnQgKCZj cHVzZXQpOworKwkgIHJldHVybiByZXQgIT0gMCA/IHJldCA6IDE7CisrCX0KKysgICAgfQorKyAg ZWxzZQorKyAgICB7CisrICAgICAgc2l6ZV90IGlkeDsKKysgICAgICBzdGF0aWMgaW50IGFmZmlu aXR5X2NwdXM7CisrCisrICAgICAgLyogV2UgY2FuJ3QgdXNlIHB0aHJlYWRfZ2V0YWZmaW5pdHlf bnAgaW4gdGhpcyBjYXNlCisrCSAod2UgaGF2ZSBjaGFuZ2VkIGl0IG91cnNlbHZlcywgaXQgYmlu ZHMgdG8ganVzdCBvbmUgQ1BVKS4KKysJIENvdW50IGluc3RlYWQgdGhlIG51bWJlciBvZiBkaWZm ZXJlbnQgQ1BVcyB3ZSBhcmUKKysJIHVzaW5nLiAgKi8KKysgICAgICBDUFVfWkVSTyAoJmNwdXNl dCk7CisrICAgICAgaWYgKGFmZmluaXR5X2NwdXMgPT0gMCkKKysJeworKwkgIGludCBjcHVzID0g MDsKKysJICBmb3IgKGlkeCA9IDA7IGlkeCA8IGdvbXBfY3B1X2FmZmluaXR5X2xlbjsgaWR4Kysp CisrCSAgICBpZiAoISBDUFVfSVNTRVQgKGdvbXBfY3B1X2FmZmluaXR5W2lkeF0sICZjcHVzZXQp KQorKwkgICAgICB7CisrCQljcHVzKys7CisrCQlDUFVfU0VUIChnb21wX2NwdV9hZmZpbml0eVtp ZHhdLCAmY3B1c2V0KTsKKysJICAgICAgfQorKwkgIGFmZmluaXR5X2NwdXMgPSBjcHVzOworKwl9 CisrICAgICAgcmV0dXJuIGFmZmluaXR5X2NwdXM7CisrICAgIH0KKysjZW5kaWYKKysjaWZkZWYg X1NDX05QUk9DRVNTT1JTX09OTE4KKysgIHJldHVybiBzeXNjb25mIChfU0NfTlBST0NFU1NPUlNf T05MTik7CisrI2Vsc2UKKysgIHJldHVybiBnb21wX250aHJlYWRzX3ZhcjsKKysjZW5kaWYKKyt9 CisrCisrLyogV2hlbiBPTVBfRFlOQU1JQyBpcyBzZXQsIGF0IHRocmVhZCBsYXVuY2ggZGV0ZXJt aW5lIHRoZSBudW1iZXIgb2YKKysgICB0aHJlYWRzIHdlIHNob3VsZCBzcGF3biBmb3IgdGhpcyB0 ZWFtLiAgKi8KKysvKiA/Pz8gSSBoYXZlIG5vIGlkZWEgd2hhdCBiZXN0IHByYWN0aWNlIGZvciB0 aGlzIGlzLiAgU3VyZWx5IHNvbWUKKysgICBmdW5jdGlvbiBvZiB0aGUgbnVtYmVyIG9mIHByb2Nl c3NvcnMgdGhhdCBhcmUgKnN0aWxsKiBvbmxpbmUgYW5kCisrICAgdGhlIGxvYWQgYXZlcmFnZS4g IEhlcmUgSSB1c2UgdGhlIG51bWJlciBvZiBwcm9jZXNzb3JzIG9ubGluZQorKyAgIG1pbnVzIHRo ZSAxNSBtaW51dGUgbG9hZCBhdmVyYWdlLiAgKi8KKysKKyt1bnNpZ25lZAorK2dvbXBfZHluYW1p Y19tYXhfdGhyZWFkcyAodm9pZCkKKyt7CisrICB1bnNpZ25lZCBuX29ubG4sIGxvYWRhdmc7Cisr CisrICBuX29ubG4gPSBnZXRfbnVtX3Byb2NzICgpOworKyAgaWYgKG5fb25sbiA+IGdvbXBfbnRo cmVhZHNfdmFyKQorKyAgICBuX29ubG4gPSBnb21wX250aHJlYWRzX3ZhcjsKKysKKysgIGxvYWRh dmcgPSAwOworKyNpZmRlZiBIQVZFX0dFVExPQURBVkcKKysgIHsKKysgICAgZG91YmxlIGRsb2Fk YXZnWzNdOworKyAgICBpZiAoZ2V0bG9hZGF2ZyAoZGxvYWRhdmcsIDMpID09IDMpCisrICAgICAg eworKwkvKiBBZGQgMC4xIHRvIGdldCBhIGtpbmQgb2YgYmlhc2VkIHJvdW5kaW5nLiAgKi8KKysJ bG9hZGF2ZyA9IGRsb2FkYXZnWzJdICsgMC4xOworKyAgICAgIH0KKysgIH0KKysjZW5kaWYKKysK KysgIGlmIChsb2FkYXZnID49IG5fb25sbikKKysgICAgcmV0dXJuIDE7CisrICBlbHNlCisrICAg IHJldHVybiBuX29ubG4gLSBsb2FkYXZnOworK30KKysKKytpbnQKKytvbXBfZ2V0X251bV9wcm9j cyAodm9pZCkKKyt7CisrICByZXR1cm4gZ2V0X251bV9wcm9jcyAoKTsKKyt9CisrCisraWFsaWFz IChvbXBfZ2V0X251bV9wcm9jcykKCmRpZmYgLS1naXQgYS9nY2M0MS1wcjI4NDgyLnBhdGNoIGIv Z2NjNDEtcHIyODQ4Mi5wYXRjaAppbmRleCAzY2ZmNzkzLi4yY2IzNjM4IDEwMDY0NAotLS0gYS9n Y2M0MS1wcjI4NDgyLnBhdGNoCisrKyBiL2djYzQxLXByMjg0ODIucGF0Y2gKQEAgLTUsMTggKzUs MTUgQEAKIAogLS0tIGxpYmdvbXAvY29uZmlndXJlLnRndC5qagkyMDA3LTA0LTIwIDEyOjU1OjQw LjAwMDAwMDAwMCArMDIwMAogKysrIGxpYmdvbXAvY29uZmlndXJlLnRndAkyMDA3LTA1LTAyIDE3 OjMyOjE1LjAwMDAwMDAwMCArMDIwMAotQEAgLTExLDE0ICsxMSwxMSBAQAorQEAgLTExLDExICsx MSw4IEBACiAgIyAgWExERkxBR1MJCUFkZCBleHRyYSBsaW5rIGZsYWdzIHRvIHVzZS4KICAKICAj IE9wdGltaXplIFRMUyB1c2FnZSBieSBhdm9pZGluZyB0aGUgb3ZlcmhlYWQgb2YgZHluYW1pYyBh bGxvY2F0aW9uLgogLSMgVGhpcyBkb2VzIHJlcXVpcmUgdGhhdCB0aGUgbGlicmFyeSBiZSBwcmVz ZW50IGR1cmluZyBwcm9jZXNzIAogLSMgc3RhcnR1cCwgc28gbWFyayB0aGUgbGlicmFyeSBhcyBu b3QgdG8gYmUgZGxvcGVuZWQuCi0gaWYgdGVzdCAkaGF2ZV90bHMgPSB5ZXMgOyB0aGVuCi0gICBj YXNlICIke3RhcmdldH0iIGluCi0gCi0gICAgICotKi1saW51eCopCisgaWYgdGVzdCAkaGF2ZV90 bHMgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9ICJ5ZXMiOyB0aGVuCiAgCVhDRkxBR1M9 IiR7WENGTEFHU30gLWZ0bHMtbW9kZWw9aW5pdGlhbC1leGVjIgogLQlYTERGTEFHUz0iJHtYTERG TEFHU30gLVdsLC16LG5vZGxvcGVuIgotIAk7OwotICAgZXNhYwogIGZpCisgCisgIyBTaW5jZSB3 ZSByZXF1aXJlIFBPU0lYIHRocmVhZHMsIGFzc3VtZSBhIFBPU0lYIHN5c3RlbSBieSBkZWZhdWx0 LgoKZGlmZiAtLWdpdCBhL2djYzQxLXByMzA1NTgucGF0Y2ggYi9nY2M0MS1wcjMwNTU4LnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDU4MWI0Li4wMDAwMDAwCi0tLSBhL2dj YzQxLXByMzA1NTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0yMDA3LTA0 LTI0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIHRyZWUtb3B0aW1p emF0aW9uLzMwNTU4Ci0JKiB0cmVlLWVoLmMgKGxvd2VyX2VoX2ZpbHRlcik6IElmIEVIX0ZJTFRF Ul9NVVNUX05PVF9USFJPVwotCWNsZWFyIHRoaXNfc3RhdGUucHJldl90cnkuCi0KLQkqIGcrKy5k Zy9nb21wL3ByMzA1NTguQzogTmV3IHRlc3QuCi0KLS0tLSBnY2MvdHJlZS1laC5jLmpqCTIwMDct MDMtMTIgMTc6MTg6MTcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2NjL3RyZWUtZWguYwkyMDA3LTA0 LTI0IDE3OjMyOjE2LjAwMDAwMDAwMCArMDIwMAotQEAgLTE0OTcsNiArMTQ5NywxMCBAQCBsb3dl cl9laF9maWx0ZXIgKHN0cnVjdCBsZWhfc3RhdGUgKnN0YXRlCi0gCQkJCQkgRUhfRklMVEVSX1RZ UEVTIChpbm5lcikpOwotICAgdGhpc19zdGF0ZSA9ICpzdGF0ZTsKLSAgIHRoaXNfc3RhdGUuY3Vy X3JlZ2lvbiA9IHRoaXNfcmVnaW9uOwotKyAgLyogRm9yIG11c3Qgbm90IHRocm93IHJlZ2lvbnMg YW55IGNsZWFudXAgcmVnaW9ucyBpbnNpZGUgaXQKLSsgICAgIGNhbid0IHJlYWNoIG91dGVyIGNh dGNoIHJlZ2lvbnMuICAqLwotKyAgaWYgKEVIX0ZJTFRFUl9NVVNUX05PVF9USFJPVyAoaW5uZXIp KQotKyAgICB0aGlzX3N0YXRlLnByZXZfdHJ5ID0gTlVMTDsKLSAKLSAgIGxvd2VyX2VoX2NvbnN0 cnVjdHNfMSAoJnRoaXNfc3RhdGUsICZUUkVFX09QRVJBTkQgKCp0cCwgMCkpOwotIAotLS0tIGdj Yy90ZXN0c3VpdGUvZysrLmRnL2dvbXAvcHIzMDU1OC5DLmpqCTIwMDctMDQtMjQgMTc6NDE6NDcu MDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC9wcjMwNTU4LkMJ MjAwNy0wNC0yNCAxNzo0MjoyNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNDEgQEAKLSsv LyBQUiB0cmVlLW9wdGltaXphdGlvbi8zMDU1OAotKy8vIHsgZGctZG8gY29tcGlsZSB9Ci0rLy8g eyBkZy1vcHRpb25zICItZm9wZW5tcCIgfQotKwotK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1 Y3QgRgotK3sKLSsgIH5GICgpOwotKyAgRiAoVCk7Ci0rICBjb25zdCBUICZvcGVyYXRvcltdICh1 bnNpZ25lZCBpKSBjb25zdDsKLSt9OwotKwotK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBGPFQ+IGZv byAoY29uc3QgRjxUPiAmeCkKLSt7Ci0rICByZXR1cm4gRjxUPiAoeFsxXSk7Ci0rfQotKwotK3N0 cnVjdCBHCi0rewotKyAgRyAoKSB7IGJhciAoMik7IH0KLSsgIEY8aW50PiAmb3BlcmF0b3IgKCkg KEY8aW50PiB4KTsKLSsgIHZvaWQgYmFyIChpbnQpOwotK307Ci0rCi0raW50Ci0rbWFpbiAoKQot K3sKLSsgIHRyeQotKyAgewotKyAgICBHIGc7Ci0rI3ByYWdtYSBvbXAgcGFyYWxsZWwgZm9yCi0r ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkKLSsgICAgICB7Ci0rCUY8aW50PiBqIChp KTsKLSsJRjxpbnQ+IGYgPSBnIChqKTsKLSsJRjxpbnQ+IGggPSBmb28gKGYpOwotKyAgICAgIH0K LSsgIH0KLSsgIGNhdGNoIChpbnQgJmUpCi0rICB7Ci0rICB9Ci0rfQoKZGlmZiAtLWdpdCBhL2dj YzQxLXByMzE1OTgucGF0Y2ggYi9nY2M0MS1wcjMxNTk4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAzMDIzMmE5Li4wMDAwMDAwCi0tLSBhL2djYzQxLXByMzE1OTgucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0yMDA3LTA0LTI0ICBKYWt1YiBKZWxpbmVr ICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIGMrKy8zMTU5OAotCSogdHJlZS1pbmxpbmUuYyAo Y29weV9ib2R5X3IpOiBEb24ndCB0b3VjaCBUUkVFX1RZUEUgb2YgT01QX0NMQVVTRS4KLQotCSog c2VtYW50aWNzLmMgKGZpbmlzaF9vbXBfY2xhdXNlcyk6IERvbid0IGNyZWF0ZSBDUF9PTVBfQ0xB VVNFX0lORk8KLQlmb3IgdHlwZSBkZXBlbmRlbnQgT01QX0NMQVVTRV9ERUNMcy4KLQotCSogZysr LmRnL2dvbXAvcHIzMTU5OC5DOiBOZXcgdGVzdC4KLQotLS0tIGdjYy90cmVlLWlubGluZS5jLmpq CTIwMDctMDQtMTQgMTQ6NTU6MjUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL3RyZWUtaW5saW5l LmMJMjAwNy0wNC0yNCAxMTozMzoxOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC02NTAsNyArNjUwLDgg QEAgY29weV9ib2R5X3IgKHRyZWUgKnRwLCBpbnQgKndhbGtfc3VidHJlZQotIAkgICAgKE5VTExf VFJFRSwKLSAJICAgICBpZC0+ZWhfcmVnaW9uX29mZnNldCArIFRSRUVfSU5UX0NTVF9MT1cgKFRS RUVfT1BFUkFORCAoKnRwLCAwKSkpOwotIAotLSAgICAgIFRSRUVfVFlQRSAoKnRwKSA9IHJlbWFw X3R5cGUgKFRSRUVfVFlQRSAoKnRwKSwgaWQpOwotKyAgICAgIGlmIChUUkVFX0NPREUgKCp0cCkg IT0gT01QX0NMQVVTRSkKLSsJVFJFRV9UWVBFICgqdHApID0gcmVtYXBfdHlwZSAoVFJFRV9UWVBF ICgqdHApLCBpZCk7Ci0gCi0gICAgICAgLyogVGhlIGNvcGllZCBUQVJHRVRfRVhQUiBoYXMgbmV2 ZXIgYmVlbiBleHBhbmRlZCwgZXZlbiBpZiB0aGUKLSAJIG9yaWdpbmFsIG5vZGUgd2FzIGV4cGFu ZGVkIGFscmVhZHkuICAqLwotLS0tIGdjYy9jcC9zZW1hbnRpY3MuYy5qagkyMDA3LTA0LTAxIDIw OjE2OjUxLjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy9jcC9zZW1hbnRpY3MuYwkyMDA3LTA0LTI0 IDEwOjQ1OjM1LjAwMDAwMDAwMCArMDIwMAotQEAgLTM2MjcsNyArMzYyNyw4IEBAIGZpbmlzaF9v bXBfY2xhdXNlcyAodHJlZSBjbGF1c2VzKQotIAkgU2F2ZSB0aGUgcmVzdWx0cywgYmVjYXVzZSBs YXRlciB3ZSB3b24ndCBiZSBpbiB0aGUgcmlnaHQgY29udGV4dAotIAkgZm9yIG1ha2luZyB0aGVz ZSBxdWVyaWVzLiAgKi8KLSAgICAgICBpZiAoQ0xBU1NfVFlQRV9QIChpbm5lcl90eXBlKQotLQkg ICYmIChuZWVkX2RlZmF1bHRfY3RvciB8fCBuZWVkX2NvcHlfY3RvciB8fCBuZWVkX2NvcHlfYXNz aWdubWVudCkpCi0rCSAgJiYgKG5lZWRfZGVmYXVsdF9jdG9yIHx8IG5lZWRfY29weV9jdG9yIHx8 IG5lZWRfY29weV9hc3NpZ25tZW50KQotKwkgICYmICF0eXBlX2RlcGVuZGVudF9leHByZXNzaW9u X3AgKHQpKQotIAl7Ci0gCSAgaW50IHNhdmVfZXJyb3Jjb3VudCA9IGVycm9yY291bnQ7Ci0gCSAg dHJlZSBpbmZvOwotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2dvbXAvcHIzMTU5OC5DLmpqCTIw MDctMDQtMjQgMTA6NDc6NTAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvZ29tcC9wcjMxNTk4LkMJMjAwNy0wNC0yNCAxMTo0OTozNS4wMDAwMDAwMDAgKzAyMDAKLUBA IC0wLDAgKzEsNTkgQEAKLSsvLyBQUiBjKysvMzE1OTgKLSsvLyB7IGRnLWRvIGNvbXBpbGUgfQot Ky8vCi0rLy8gQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKy8vIENvbnRyaWJ1dGVkIGJ5IFRoZW9kb3JlLlBhcGFkb3BvdWxvCi0rLy8gICAxNiBBcHIg MjAwNyA8VGhlb2RvcmUuUGFwYWRvcG91bG9Ac29waGlhLmlucmlhLmZyPgotKwotK2ludCBpOwot K3RlbXBsYXRlIDx0eXBlbmFtZT4gc3RydWN0IEEgeyBBKCkge30gfTsKLSt0ZW1wbGF0ZSA8dHlw ZW5hbWU+IHN0cnVjdCBDIHsgQygpIHsgaSsrOyB9IEMoY29uc3QgQyAmKSB7IGkgKz0gMjsgfSB9 OwotK3N0cnVjdCBEIHsgRCgpIHt9IH07Ci0rCi0rc3RydWN0IE0geyB0eXBlZGVmIGRvdWJsZSBF OyB9OwotKwotK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgotK3N0cnVjdCBSCi0rewotKyAgUigpCi0r ICB7Ci0rICAgIHR5cGVkZWYgQTx0eXBlbmFtZSBUOjpFPiBCOwotKyAgICBCIGI7Ci0rICAgICNw cmFnbWEgb21wIHBhcmFsbGVsIGZvciBmaXJzdHByaXZhdGUoYikgc2NoZWR1bGUoZ3VpZGVkKQot KyAgICAgIGZvciAoaW50IHQgPSAwOyB0IDwgMTA7ICsrdCkKLSsJOwotKyAgfQotK307Ci0rCi0r dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0rc3RydWN0IFMKLSt7Ci0rICBTKCkKLSsgIHsKLSsgICAg dHlwZWRlZiBDPHR5cGVuYW1lIFQ6OkU+IEI7Ci0rICAgIEIgYjsKLSsgICAgI3ByYWdtYSBvbXAg cGFyYWxsZWwgZm9yIGZpcnN0cHJpdmF0ZShiKQotKyAgICAgIGZvciAoaW50IHQgPSAwOyB0IDwg MTA7ICsrdCkKLSsJOwotKyAgfQotK307Ci0rCi0rc3RydWN0IFUKLSt7Ci0rICBVKCkKLSsgIHsK LSsgICAgRCBiOwotKyAgICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBmb3IgZmlyc3Rwcml2YXRlKGIp Ci0rICAgICAgZm9yIChpbnQgdCA9IDA7IHQgPCAxMDsgKyt0KQotKwk7Ci0rICB9Ci0rfTsKLSsK LStpbnQKLSttYWluICgpCi0rewotKyAgUjxNPiByOwotKyAgUzxNPiBzOwotKyAgVSB1OwotKyAg cmV0dXJuIDA7Ci0rfQoKZGlmZiAtLWdpdCBhL2djYzQxLXByMzE3NDgucGF0Y2ggYi9nY2M0MS1w cjMxNzQ4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMjlkNDQK LS0tIC9kZXYvbnVsbAorKysgYi9nY2M0MS1wcjMxNzQ4LnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAK KzIwMDctMDUtMDEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJUFIgYysr LzMxNzQ4CisJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29tcF9jbGF1c2VzKTogVXNlICVxRCBpbnN0 ZWFkIG9mICVxRSBmb3IKKwlERUNMX1AgaW4gbm90IGEgdmFyaWFibGUgYW5kIGFwcGVhcnMgbW9y ZSB0aGFuIG9uY2UgZXJyb3IgbWVzc2FnZXMuCisKKwkqIGcrKy5kZy9nb21wL3ByMzE3NDguQzog TmV3IHRlc3QuCisKKy0tLSBnY2MvY3Avc2VtYW50aWNzLmMuamoJMjAwNy0wNC0yNiAwOTozMDo1 OC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnY2MvY3Avc2VtYW50aWNzLmMJMjAwNy0wNS0wMSAxNDoy Mjo1OC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zMzc2LDE0ICszMzc2LDE3IEBAIGZpbmlzaF9vbXBf Y2xhdXNlcyAodHJlZSBjbGF1c2VzKQorIAkgICAgeworIAkgICAgICBpZiAocHJvY2Vzc2luZ190 ZW1wbGF0ZV9kZWNsKQorIAkJYnJlYWs7CistCSAgICAgIGVycm9yICgiJXFFIGlzIG5vdCBhIHZh cmlhYmxlIGluIGNsYXVzZSAlcXMiLCB0LCBuYW1lKTsKKysJICAgICAgaWYgKERFQ0xfUCAodCkp CisrCQllcnJvciAoIiVxRCBpcyBub3QgYSB2YXJpYWJsZSBpbiBjbGF1c2UgJXFzIiwgdCwgbmFt ZSk7CisrCSAgICAgIGVsc2UKKysJCWVycm9yICgiJXFFIGlzIG5vdCBhIHZhcmlhYmxlIGluIGNs YXVzZSAlcXMiLCB0LCBuYW1lKTsKKyAJICAgICAgcmVtb3ZlID0gdHJ1ZTsKKyAJICAgIH0KKyAJ ICBlbHNlIGlmIChiaXRtYXBfYml0X3AgKCZnZW5lcmljX2hlYWQsIERFQ0xfVUlEICh0KSkKKyAJ CSAgIHx8IGJpdG1hcF9iaXRfcCAoJmZpcnN0cHJpdmF0ZV9oZWFkLCBERUNMX1VJRCAodCkpCisg CQkgICB8fCBiaXRtYXBfYml0X3AgKCZsYXN0cHJpdmF0ZV9oZWFkLCBERUNMX1VJRCAodCkpKQor IAkgICAgeworLQkgICAgICBlcnJvciAoIiVxRSBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlIGluIGRh dGEgY2xhdXNlcyIsIHQpOworKwkgICAgICBlcnJvciAoIiVxRCBhcHBlYXJzIG1vcmUgdGhhbiBv bmNlIGluIGRhdGEgY2xhdXNlcyIsIHQpOworIAkgICAgICByZW1vdmUgPSB0cnVlOworIAkgICAg fQorIAkgIGVsc2UKKy0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy9nb21wL3ByMzE3NDguQy5qagky MDA3LTA1LTAxIDE0OjI2OjEzLjAwMDAwMDAwMCArMDIwMAorKysrIGdjYy90ZXN0c3VpdGUvZysr LmRnL2dvbXAvcHIzMTc0OC5DCTIwMDctMDUtMDEgMTQ6MjY6MDcuMDAwMDAwMDAwICswMjAwCitA QCAtMCwwICsxLDEwIEBACisrLy8gUFIgYysrLzMxNzQ4CisrCisrc3RydWN0IEE7CisrCisrdm9p ZAorK2ZvbyAoKQorK3sKKysjcHJhZ21hIG9tcCBwYXJhbGxlbCBwcml2YXRlKEEpCS8vIHsgZGct ZXJyb3IgInN0cnVjdCBBLippcyBub3QgYSB2YXJpYWJsZSIgfQorKyAgOworK30KCmRpZmYgLS1n aXQgYS9nY2M0MS1yaDIzMTgxOC5wYXRjaCBiL2djYzQxLXJoMjMxODE4LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2I0MjI2Li4wMDAwMDAwCi0tLSBhL2djYzQxLXJoMjMx ODE4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMzICswLDAgQEAKLTIwMDctMDQtMDIgIEZy YW5jaXMgS3VuZyAgPGZrdW5nQHJlZGhhdC5jb20+Ci0KLQkqIGdudS9qYXZhL2F3dC9wZWVyL2d0 ay9GcmVldHlwZUdseXBoVmVjdG9yLmphdmEKLQkoZm9udFNldCk6IEluaXRpYWxpemUgdG8gbnVs bC4KLQkoRnJlZXR5cGVHbHlwaFZlY3RvcihGb250LCBpbnRbXSwgRm9udFJlbmRlckNvbnRleHQp KTogUG9wdWxhdGUgZm9udFNldAotCWFycmF5IHdpdGggZGVmYXVsdCBmb250IGlmIG5lZWRlZC4K LQkoRnJlZXR5cGVHbHlwaFZlY3RvcihGcmVldHlwZUdseXBoVmVjdG9yKSk6IENsb25lIGFsbCBm aWVsZHMuCi0JKGdldE5hdGl2ZUZvbnRQb2ludGVyKTogTmV3IG5hdGl2ZSBtZXRob2QuCi0JKiBp bmNsdWRlL2dudV9qYXZhX2F3dF9wZWVyX2d0a19GcmVldHlwZUdseXBoVmVjdG9yLmg6IFJlZ2Vu ZXJhdGVkLgotCSogbmF0aXZlL2puaS9ndGstcGVlci9nbnVfamF2YV9hd3RfcGVlcl9ndGtfRnJl ZXR5cGVHbHlwaFZlY3Rvci5jCi0JKEphdmFfZ251X2phdmFfYXd0X3BlZXJfZ3RrX0ZyZWV0eXBl R2x5cGhWZWN0b3JfZ2V0TmF0aXZlRm9udFBvaW50ZXIpOgotCU5ldyBmdW5jdGlvbi4KLQotMjAw Ny0wNC0wMiAgRnJhbmNpcyBLdW5nICA8Zmt1bmdAcmVkaGF0LmNvbT4KLQotCSogZ251L2phdmEv YXd0L3BlZXIvZ3RrL0NhaXJvR3JhcGhpY3MyRC5qYXZhCi0JKGNhaXJvRHJhd0dseXBoVmVjdG9y KTogQWRkZWQgcGFyYW1ldGVyLgotCShkcmF3R2x5cGhWZWN0b3IpOiBSZXRyaWV2ZSBhbmQgcGFz cyBmb250c2V0IHBhcmFtZXRlci4KLQkqIGdudS9qYXZhL2F3dC9wZWVyL2d0ay9Db21wb25lbnRH cmFwaGljcy5qYXZhCi0JKGNhaXJvRHJhd0dseXBoVmVjdG9yKTogQWRkZWQgcGFyYW1ldGVyLgot CShsb2NrKTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjYXN0LgotCSh1bmxvY2spOiBSZW1vdmVkIHVu bmVjZXNzYXJ5IGNhc3QgYW5kIGV4cGxpY2l0bHkgc2V0IHRvIE9ORSB2YXJpYWJsZS4KLQkqIGdu dS9qYXZhL2F3dC9wZWVyL2d0ay9GcmVldHlwZUdseXBoVmVjdG9yLmphdmEKLQkoZm9udFNldCk6 IE5ldyBmaWVsZC4KLQkoZGlzcG9zZSk6IE5ldyBuYXRpdmUgbWV0aG9kLgotCShmaW5hbGl6ZSk6 IE5ldyBtZXRob2QuCi0JKGdldEdseXBoRm9udHMpOiBOZXcgbWV0aG9kLgotCShnZXRHbHlwaE91 dGxpbmUpOiBQYXNzIGZvbnRTZXQgcGFyYW1ldGVyIHRvIG5hdGl2ZSBtZXRob2QuCi0JKGdldEds eXBoT3V0bGluZU5hdGl2ZSk6IEFkZGVkIHBhcmFtZXRlci4KLQkoZ2V0R2x5cGhzKTogUGFzcyBl eHRyYSBwYXJhbWV0ZXJzIHRvIG5hdGl2ZSBtZXRob2QuCi0JKGdldEdseXBoc05hdGl2ZSk6IEFk ZGVkIHBhcmFtZXRlcnMuCi0JKGdldEtlcm5pbmcpOiBBZGRlZCBmb250U2V0IHBhcmFtZXRlci4K LQkoZ2V0TWV0cmljc05hdGl2ZSk6IEFkZGVkIGZvbnRTZXQgcGFyYW1ldGVyLgotCShwZXJmb3Jt RGVmYXVsdExheW91dCk6IE9ubHkgY2hlY2sga2VybmluZyBpZiBnbHlwaHMgdXNlIHRoZSBzYW1l IGZvbnQuCi0JKHNldHVwR2x5cGhNZXRyaWNzKTogUGFzcyBleHRyYSBwYXJhbWV0ZXJzIHRvIG5h dGl2ZSBtZXRob2RzLgotCSogaW5jbHVkZS9nbnVfamF2YV9hd3RfcGVlcl9ndGtfQ2Fpcm9HcmFw aGljczJELmgsCi0JKiBpbmNsdWRlL2dudV9qYXZhX2F3dF9wZWVyX2d0a19GcmVldHlwR2x5cGhW ZWN0b3IuaDogUmVnZW5lcmF0ZWQuCi0JKiBuYXRpdmUvam5pL2d0ay1wZWVyL2dka2ZvbnQuaDog RW5hYmxlIHBhbmdvIGVuZ2luZS4KLQkocGVlcmZvbnQpOiBBZGQgdmFyaWFibGUgZm9yIGZvbnRz ZXQuCi0JKiBuYXRpdmUvam5pL2d0ay1wZWVyL2dudV9qYXZhX2F3dF9wZWVyX2d0a19DYWlyb0dy YXBoaWNzMkQuYwotCShKYXZhX2dudV9qYXZhX2F3dF9wZWVyX2d0a19DYWlyb0dyYXBoaWNzMkRf Y2Fpcm9EcmF3R2x5cGhWZWN0b3IpOiBBY2NlcHQKLQlhcnJheSBvZiBmb250IHBvaW50ZXJzIHRv IHVzZSB3aGVuIGRyYXdpbmcgZ2x5cGhzLgotCSogbmF0aXZlL2puaS9ndGstcGVlci9nbnVfamF2 YV9hd3RfcGVlcl9ndGtfRnJlZXR5cGVHbHlwaFZlY3Rvci5jCi0JKGdldEZvbnRTZXQpOiBOZXcg ZnVuY3Rpb24uCi0JKEphdmFfZ251X2phdmFfYXd0X3BlZXJfZ3RrX0ZyZWV0eXBlR2x5cGhWZWN0 b3JfZGlzcG9zZSk6IE5ldyBmdW5jdGlvbi4KLQkoSmF2YV9nbnVfamF2YV9hd3RfcGVlcl9ndGtf RnJlZXR5cGVHbHlwaFZlY3Rvcl9nZXRHbHlwaE91dGxpbmVOYXRpdmUpOgotCUFkZGVkIGFuZCB1 c2UgbmV3IGZvbnRTZXQgcGFyYW1ldGVyLgotCShKYXZhX2dudV9qYXZhX2F3dF9wZWVyX2d0a19G cmVldHlwZUdseXBoVmVjdG9yX2dldEdseXBocyk6IFVzZSBwYW5nbwotCXRvIHJldHJpZXZlIGds eXBocyBhbmQgZXN0aW1hdGUgZm9udCwgaWYgdGhlIGN1cnJlbnQgZm9udCBkb2VzIG5vdCBjb250 YWluCi0JYSByZXF1ZXN0ZWQgZ2x5cGguCi0JKEphdmFfZ251X2phdmFfYXd0X3BlZXJfZ3RrX0Zy ZWV0eXBlR2x5cGhWZWN0b3JfZ2V0S2VybmluZyk6IEFkZGVkIGFuZCB1c2UKLQluZXcgZm9udFNl dCBwYXJhbWV0ZXIuCi0JKEphdmFfZ251X2phdmFfYXd0X3BlZXJfZ3RrX0ZyZWV0eXBlR2x5cGhW ZWN0b3JfZ2V0TWV0cmljc05hdGl2ZSk6IEFkZGVkCi0JYW5kIHVzZSBuZXcgZm9udFNldCBwYXJh bWV0ZXIuCi0JKiBuYXRpdmUvam5pL2d0ay1wZWVyL2dudV9qYXZhX2F3dF9wZWVyX2d0a19HZGtG b250UGVlci5jCi0JKEphdmFfZ251X2phdmFfYXd0X3BlZXJfZ3RrX0dka0ZvbnRQZWVyX2Rpc3Bv c2UpOiBGcmVlIGZvbnRzZXQuCi0JKEphdmFfZ251X2phdmFfYXd0X3BlZXJfZ3RrX0dka0ZvbnRQ ZWVyX3NldEZvbnQpOiBMb2FkIGZvbnRzZXQuCi0KLS0tLSBsaWJqYXZhL2NsYXNzcGF0aC9nbnUv amF2YS9hd3QvcGVlci9ndGsvQ2Fpcm9HcmFwaGljczJELmphdmEJMTYgTWFyIDIwMDcgMTU6MTQ6 NTMgLTAwMDAJMS42NwotKysrIGxpYmphdmEvY2xhc3NwYXRoL2dudS9qYXZhL2F3dC9wZWVyL2d0 ay9DYWlyb0dyYXBoaWNzMkQuamF2YQkyIEFwciAyMDA3IDE5OjM5OjI2IC0wMDAwCTEuNjgKLUBA IC0zOTIsNyArMzkyLDcgQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIENhaXJvR3JhcGhpY3MyRCBl eAotICAgICovCi0gICBuYXRpdmUgdm9pZCBjYWlyb0RyYXdHbHlwaFZlY3Rvcihsb25nIHBvaW50 ZXIsIEdka0ZvbnRQZWVyIGZvbnQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmxvYXQgeCwgZmxvYXQgeSwgaW50IG4sIAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50W10gY29kZXMsIGZsb2F0W10gcG9zaXRpb25zKTsKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludFtdIGNvZGVzLCBmbG9hdFtdIHBvc2l0aW9ucywgbG9u Z1tdIGZvbnRzZXQpOwotIAotICAgLyoqCi0gICAgKiBTZXQgdGhlIGZvbnQgaW4gY2Fpcm8uCi1A QCAtMTY3Niw2ICsxNjc2LDcgQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIENhaXJvR3JhcGhpY3My RCBleAotICAgICAgIHsKLSAgICAgICAgIGludCBuID0gZ3YuZ2V0TnVtR2x5cGhzICgpOwotICAg ICAgICAgaW50W10gY29kZXMgPSBndi5nZXRHbHlwaENvZGVzICgwLCBuLCBudWxsKTsKLSsgICAg ICAgIGxvbmdbXSBmb250c2V0ID0gKChGcmVldHlwZUdseXBoVmVjdG9yKWd2KS5nZXRHbHlwaEZv bnRzICgwLCBuLCBudWxsKTsKLSAgICAgICAgIGZsb2F0W10gcG9zaXRpb25zID0gZ3YuZ2V0R2x5 cGhQb3NpdGlvbnMgKDAsIG4sIG51bGwpOwotIAotICAgICAgICAgc2V0Rm9udCAoZ3YuZ2V0Rm9u dCAoKSk7Ci1AQCAtMTY4Myw3ICsxNjg0LDcgQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIENhaXJv R3JhcGhpY3MyRCBleAotIAlzeW5jaHJvbml6ZWQgKGZvbnRQZWVyKSAKLSAJICB7IAotIAkgICAg Y2Fpcm9EcmF3R2x5cGhWZWN0b3IobmF0aXZlUG9pbnRlciwgZm9udFBlZXIsCi0tCQkJCSB4LCB5 LCBuLCBjb2RlcywgcG9zaXRpb25zKTsKLSsJCQkJIHgsIHksIG4sIGNvZGVzLCBwb3NpdGlvbnMs IGZvbnRzZXQpOwotIAkgIH0KLSAgICAgICB9Ci0gICAgIGVsc2UKLS0tLSBsaWJqYXZhL2NsYXNz cGF0aC9nbnUvamF2YS9hd3QvcGVlci9ndGsvQ29tcG9uZW50R3JhcGhpY3MuamF2YQkxNiBNYXIg MjAwNyAxNToxNDo1MyAtMDAwMAkxLjI1Ci0rKysgbGliamF2YS9jbGFzc3BhdGgvZ251L2phdmEv YXd0L3BlZXIvZ3RrL0NvbXBvbmVudEdyYXBoaWNzLmphdmEJMiBBcHIgMjAwNyAxOTozOToyNiAt MDAwMAkxLjI2Ci1AQCAtMTM0LDYgKzEzNCw4IEBAIHB1YmxpYyBjbGFzcyBDb21wb25lbnRHcmFw aGljcyBleHRlbmRzIEMKLSAJaGFzTG9jay5zZXQobnVsbCk7Ci0gCWVuZF9nZGtfZHJhd2luZygp OwotICAgICAgIH0KLSsgICAgZWxzZSBpZiAoaS5pbnRWYWx1ZSgpID09IDIpCi0rICAgICAgaGFz TG9jay5zZXQoT05FKTsKLSAgICAgZWxzZQotICAgICAgIGhhc0xvY2suc2V0KEludGVnZXIudmFs dWVPZihpLmludFZhbHVlKCkgLSAxKSk7Ci0gICB9Ci0tLS0gbGliamF2YS9jbGFzc3BhdGgvZ251 L2phdmEvYXd0L3BlZXIvZ3RrL0ZyZWV0eXBlR2x5cGhWZWN0b3IuamF2YQk2IE1hciAyMDA3IDE5 OjM4OjMxIC0wMDAwCTEuMTYKLSsrKyBsaWJqYXZhL2NsYXNzcGF0aC9nbnUvamF2YS9hd3QvcGVl ci9ndGsvRnJlZXR5cGVHbHlwaFZlY3Rvci5qYXZhCTIgQXByIDIwMDcgMjE6Mjg6NTggLTAwMDAJ MS4xOAotQEAgLTc5LDYgKzc5LDExIEBAIHB1YmxpYyBjbGFzcyBGcmVldHlwZUdseXBoVmVjdG9y IGV4dGVuZHMKLSAgICAqIFRoZSBnbHlwaCBjb2RlcwotICAgICovCi0gICBwcml2YXRlIGludFtd IGdseXBoQ29kZXM7Ci0rICAKLSsgIC8qKgotKyAgICogVGhlIHNldCBvZiBmb250cyB1c2VkIGlu IHRoaXMgZ2x5cGggdmVjdG9yLgotKyAgICovCi0rICBwcml2YXRlIGxvbmdbXSBmb250U2V0ID0g bnVsbDsKLSAKLSAgIC8qKgotICAgICogR2x5cGggdHJhbnNmb3Jtcy4gKGRlIGZhY3RvIG9ubHkg dGhlIHRyYW5zbGF0aW9uIGlzIHVzZWQpCi1AQCAtODYsNiArOTEsMTkgQEAgcHVibGljIGNsYXNz IEZyZWV0eXBlR2x5cGhWZWN0b3IgZXh0ZW5kcwotICAgcHJpdmF0ZSBBZmZpbmVUcmFuc2Zvcm1b XSBnbHlwaFRyYW5zZm9ybXM7Ci0gCi0gICBwcml2YXRlIEdseXBoTWV0cmljc1tdIG1ldHJpY3ND YWNoZTsKLSsgIAotKyAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBkaXNwb3NlKGxvbmdbXSBmb250cyk7 Ci0rICAKLSsgIC8qKgotKyAgICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG5hdGl2ZSBQYW5n b0ZjRm9udCBvYmplY3QuCi0rICAgKiAKLSsgICAqIFRoZSBvYmplY3Qgd2lsbCBiZSByZWZlcmVu Y2VkIHdpdGggZ19vYmplY3RfcmVmIG4gdGltZXMgYmVmb3JlIGJlaW5nCi0rICAgKiByZXR1cm5l ZCwgYW5kIG11c3QgYmUgdW5yZWZlcmVuY2VkIGEgY29ycmVzcG9uZGluZyBudW1iZXIgb2YgdGlt ZXMuCi0rICAgKiAKLSsgICAqIEBwYXJhbSBuIE51bWJlciBvZiB0aW1lcyB0byByZWZlcmVuY2Ug dGhlIG9iamVjdC4KLSsgICAqIEByZXR1cm4gUG9pbnRlciB0byB0aGUgbmF0aXZlIGRlZmF1bHQg Zm9udC4KLSsgICAqLwotKyAgcHJpdmF0ZSBuYXRpdmUgbG9uZyBnZXROYXRpdmVGb250UG9pbnRl cihpbnQgbik7Ci0gCi0gICAvKioKLSAgICAqIENyZWF0ZSBhIGdseXBodmVjdG9yIGZyb20gYSBn aXZlbiAoRnJlZXR5cGUpIGZvbnQgYW5kIGEgU3RyaW5nLgotQEAgLTEzNSw2ICsxNTMsMTMgQEAg cHVibGljIGNsYXNzIEZyZWV0eXBlR2x5cGhWZWN0b3IgZXh0ZW5kcwotICAgICBnbHlwaENvZGVz ID0gbmV3IGludFsgY29kZXMubGVuZ3RoIF07Ci0gICAgIFN5c3RlbS5hcnJheWNvcHkoY29kZXMs IDAsIGdseXBoQ29kZXMsIDAsIGNvZGVzLmxlbmd0aCk7Ci0gICAgIG5HbHlwaHMgPSBnbHlwaENv ZGVzLmxlbmd0aDsKLSsgICAgCi0rICAgIGlmIChmb250U2V0ID09IG51bGwpCi0rICAgICAgewot KyAgICAgICAgZm9udFNldCA9IG5ldyBsb25nW25HbHlwaHNdOwotKyAgICAgICAgQXJyYXlzLmZp bGwoZm9udFNldCwgZ2V0TmF0aXZlRm9udFBvaW50ZXIobkdseXBocykpOwotKyAgICAgIH0KLSsg ICAgCi0gICAgIHBlcmZvcm1EZWZhdWx0TGF5b3V0KCk7Ci0gICB9Ci0gCi1AQCAtMTU3LDYgKzE4 Miw3IEBAIHB1YmxpYyBjbGFzcyBGcmVldHlwZUdseXBoVmVjdG9yIGV4dGVuZHMKLSAgICAgICB9 Ci0gCi0gICAgIGdseXBoQ29kZXMgPSBuZXcgaW50WyBuR2x5cGhzIF07Ci0rICAgIGZvbnRTZXQg PSBuZXcgbG9uZ1tuR2x5cGhzXTsKLSAgICAgZ2x5cGhQb3NpdGlvbnMgPSBuZXcgZmxvYXRbKG5H bHlwaHMgKyAxKSAqIDJdOwotICAgICBnbHlwaFRyYW5zZm9ybXMgPSBuZXcgQWZmaW5lVHJhbnNm b3JtWyBuR2x5cGhzIF07Ci0gICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuR2x5cGhzOyBpKysgKQot QEAgLTE2Niw2ICsxOTIsMTMgQEAgcHVibGljIGNsYXNzIEZyZWV0eXBlR2x5cGhWZWN0b3IgZXh0 ZW5kcwotICAgICAgIH0KLSAgICAgU3lzdGVtLmFycmF5Y29weShndi5nbHlwaFBvc2l0aW9ucywg MCwgZ2x5cGhQb3NpdGlvbnMsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgZ2x5cGhQb3NpdGlv bnMubGVuZ3RoKTsKLSsgICAgU3lzdGVtLmFycmF5Y29weShndi5nbHlwaENvZGVzLCAwLCBnbHlw aENvZGVzLCAwLCBuR2x5cGhzKTsKLSsgICAgU3lzdGVtLmFycmF5Y29weShndi5mb250U2V0LCAw LCBmb250U2V0LCAwLCBuR2x5cGhzKTsKLSsgIH0KLSsgIAotKyAgcHVibGljIHZvaWQgZmluYWxp emUoKQotKyAgewotKyAgICBkaXNwb3NlKGZvbnRTZXQpOwotICAgfQotIAotICAgLyoqCi1AQCAt MTc1LDYgKzIwOCw3IEBAIHB1YmxpYyBjbGFzcyBGcmVldHlwZUdseXBoVmVjdG9yIGV4dGVuZHMK LSAgIHsKLSAgICAgbkdseXBocyA9IHMuY29kZVBvaW50Q291bnQoIDAsIHMubGVuZ3RoKCkgKTsK LSAgICAgZ2x5cGhDb2RlcyA9IG5ldyBpbnRbIG5HbHlwaHMgXTsKLSsgICAgZm9udFNldCA9IG5l dyBsb25nWyBuR2x5cGhzIF07Ci0gICAgIGludFtdIGNvZGVQb2ludHMgPSBuZXcgaW50WyBuR2x5 cGhzIF07Ci0gICAgIGludCBzdHJpbmdJbmRleCA9IDA7Ci0gCi1AQCAtMTk0LDIyICsyMjgsMjIg QEAgcHVibGljIGNsYXNzIEZyZWV0eXBlR2x5cGhWZWN0b3IgZXh0ZW5kcwotICAgICAgICAgICB9 Ci0gICAgICAgfQotIAotLSAgIGdseXBoQ29kZXMgPSBnZXRHbHlwaHMoIGNvZGVQb2ludHMgKTsK LSsgICAgZ2V0R2x5cGhzKCBjb2RlUG9pbnRzLCBnbHlwaENvZGVzLCBmb250U2V0ICk7Ci0gICB9 Ci0gCi0gICAvKioKLSAgICAqIFJldHVybnMgdGhlIGdseXBoIGNvZGUgd2l0aGluIHRoZSBmb250 IGZvciBhIGdpdmVuIGNoYXJhY3RlcgotICAgICovCi0tICBwdWJsaWMgbmF0aXZlIGludFtdIGdl dEdseXBocyhpbnRbXSBjb2RlcG9pbnRzKTsKLSsgIHB1YmxpYyBuYXRpdmUgaW50W10gZ2V0R2x5 cGhzKGludFtdIGNvZGVwb2ludHMsIGludFtdIGdseXBocywgbG9uZ1tdIGZvbnRzKTsKLSAKLSAg IC8qKgotICAgICogUmV0dXJucyB0aGUga2VybmluZyBvZiBhIGdseXBoIHBhaXIKLSAgICAqLwot LSAgcHJpdmF0ZSBuYXRpdmUgUG9pbnQyRCBnZXRLZXJuaW5nKGludCBsZWZ0R2x5cGgsIGludCBy aWdodEdseXBoKTsKLSsgIHByaXZhdGUgbmF0aXZlIFBvaW50MkQgZ2V0S2VybmluZyhpbnQgbGVm dEdseXBoLCBpbnQgcmlnaHRHbHlwaCwgbG9uZyBmb250KTsKLSAKLS0gIHByaXZhdGUgbmF0aXZl IGRvdWJsZVtdIGdldE1ldHJpY3NOYXRpdmUoIGludCBnbHlwaENvZGUgKTsKLSsgIHByaXZhdGUg bmF0aXZlIGRvdWJsZVtdIGdldE1ldHJpY3NOYXRpdmUoaW50IGdseXBoQ29kZSwgbG9uZyBmb250 KTsKLSAKLS0gIHByaXZhdGUgbmF0aXZlIEdlbmVyYWxQYXRoIGdldEdseXBoT3V0bGluZU5hdGl2 ZShpbnQgZ2x5cGhJbmRleCk7Ci0rICBwcml2YXRlIG5hdGl2ZSBHZW5lcmFsUGF0aCBnZXRHbHlw aE91dGxpbmVOYXRpdmUoaW50IGdseXBoSW5kZXgsIGxvbmcgZm9udCk7Ci0gCi0gCi0gICBwdWJs aWMgT2JqZWN0IGNsb25lKCkKLUBAIC0yNjcsMTAgKzMwMSwxMiBAQCBwdWJsaWMgY2xhc3MgRnJl ZXR5cGVHbHlwaFZlY3RvciBleHRlbmRzCi0gCi0gICAgICAgICB4ICs9IGdtLmdldEFkdmFuY2VY KCk7Ci0gICAgICAgICB5ICs9IGdtLmdldEFkdmFuY2VZKCk7Ci0tICAgICAgICAKLS0gICAgICAg IGlmIChpICE9IG5HbHlwaHMtMSkKLSsKLSsgICAgICAgIC8vIEdldCB0aGUga2VybmluZyBvbmx5 IGlmIGl0J3Mgbm90IHRoZSBsYXN0IGdseXBoLCBhbmQgdGhlIHR3byBnbHlwaHMgYXJlCi0rICAg ICAgICAvLyB1c2luZyB0aGUgc2FtZSBmb250Ci0rICAgICAgICBpZiAoaSAhPSBuR2x5cGhzLTEg JiYgZm9udFNldFtpXSA9PSBmb250U2V0W2krMV0pCi0gICAgICAgICAgIHsKLS0gICAgICAgICAg ICBQb2ludDJEIHAgPSBnZXRLZXJuaW5nKGdseXBoQ29kZXNbaV0sIGdseXBoQ29kZXNbaSArIDFd KTsKLSsgICAgICAgICAgICBQb2ludDJEIHAgPSBnZXRLZXJuaW5nKGdseXBoQ29kZXNbaV0sIGds eXBoQ29kZXNbaSArIDFdLCBmb250U2V0W2ldKTsKLSAgICAgICAgICAgICB4ICs9IHAuZ2V0WCgp OwotICAgICAgICAgICAgIHkgKz0gcC5nZXRZKCk7Ci0gICAgICAgICAgIH0KLUBAIC0zMDUsNiAr MzQxLDI2IEBAIHB1YmxpYyBjbGFzcyBGcmVldHlwZUdseXBoVmVjdG9yIGV4dGVuZHMKLSAgICAg cmV0dXJuIHJ2YWw7Ci0gICB9Ci0gCi0rICAvKioKLSsgICAqIFJldHVybnMgcG9pbnRlcnMgdG8g dGhlIGZvbnRzIHVzZWQgaW4gdGhpcyBnbHlwaCB2ZWN0b3IuCi0rICAgKiAKLSsgICAqIFRoZSBh cnJheSBpbmRleCBtYXRjaGVzIHRoYXQgb2YgdGhlIGdseXBoIHZlY3RvciBpdHNlbGYuCi0rICAg Ki8KLSsgIHByb3RlY3RlZCBsb25nW10gZ2V0R2x5cGhGb250cyhpbnQgYmVnaW5HbHlwaEluZGV4 LCBpbnQgbnVtRW50cmllcywgCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9u Z1tdIGNvZGVSZXR1cm4pCi0rICB7Ci0rICAgIGxvbmdbXSBydmFsOwotKwotKyAgICBpZiggY29k ZVJldHVybiA9PSBudWxsIHx8IGNvZGVSZXR1cm4ubGVuZ3RoIDwgbnVtRW50cmllcykKLSsgICAg ICBydmFsID0gbmV3IGxvbmdbIG51bUVudHJpZXMgXTsKLSsgICAgZWxzZQotKyAgICAgIHJ2YWwg PSBjb2RlUmV0dXJuOwotKyAgICAKLSsgICAgU3lzdGVtLmFycmF5Y29weShmb250U2V0LCBiZWdp bkdseXBoSW5kZXgsIHJ2YWwsIDAsIG51bUVudHJpZXMpOwotKwotKyAgICByZXR1cm4gcnZhbDsK LSsgIH0KLSsKLSAgIHB1YmxpYyBTaGFwZSBnZXRHbHlwaExvZ2ljYWxCb3VuZHMoaW50IGdseXBo SW5kZXgpCi0gICB7Ci0gICAgIEdseXBoTWV0cmljcyBnbSA9IGdldEdseXBoTWV0cmljcyggZ2x5 cGhJbmRleCApOwotQEAgLTMzNSwxMSArMzkxLDEwIEBAIHB1YmxpYyBjbGFzcyBGcmVldHlwZUds eXBoVmVjdG9yIGV4dGVuZHMKLSAKLSAgICAgZm9yKGludCBpID0gMDsgaSA8IG5HbHlwaHM7IGkr KykKLSAgICAgICB7Ci0tCUdseXBoTWV0cmljcyBnbSA9IChHbHlwaE1ldHJpY3MpCi0tCSAgcGVl ci5nZXRHbHlwaE1ldHJpY3MoIGdseXBoQ29kZXNbIGkgXSApOwotKwlHbHlwaE1ldHJpY3MgZ20g PSAoR2x5cGhNZXRyaWNzKXBlZXIuZ2V0R2x5cGhNZXRyaWNzKGdseXBoQ29kZXNbaV0pOwotIAlp ZiggZ20gPT0gbnVsbCApCi0gCSAgewotLQkgICAgZG91YmxlW10gdmFsID0gZ2V0TWV0cmljc05h dGl2ZSggZ2x5cGhDb2Rlc1sgaSBdICk7Ci0rCSAgICBkb3VibGVbXSB2YWwgPSBnZXRNZXRyaWNz TmF0aXZlKGdseXBoQ29kZXNbaV0sIGZvbnRTZXRbaV0pOwotIAkgICAgaWYoIHZhbCA9PSBudWxs ICkKLSAJICAgICAgZ20gPSBudWxsOwotIAkgICAgZWxzZQotQEAgLTM3NCw3ICs0MjksOCBAQCBw dWJsaWMgY2xhc3MgRnJlZXR5cGVHbHlwaFZlY3RvciBleHRlbmRzCi0gICAgKi8KLSAgIHB1Ymxp YyBTaGFwZSBnZXRHbHlwaE91dGxpbmUoaW50IGdseXBoSW5kZXgpCi0gICB7Ci0tICAgIEdlbmVy YWxQYXRoIGdwID0gZ2V0R2x5cGhPdXRsaW5lTmF0aXZlKCBnbHlwaENvZGVzWyBnbHlwaEluZGV4 IF0gKTsKLSsgICAgR2VuZXJhbFBhdGggZ3AgPSBnZXRHbHlwaE91dGxpbmVOYXRpdmUoZ2x5cGhD b2Rlc1tnbHlwaEluZGV4XSwKLSsJCQkJCSAgIGZvbnRTZXRbZ2x5cGhJbmRleF0pOwotICAgICBp ZiAoZ2x5cGhUcmFuc2Zvcm1zW2dseXBoSW5kZXhdICE9IG51bGwpCi0gICAgICAgZ3AudHJhbnNm b3JtKCBnbHlwaFRyYW5zZm9ybXNbZ2x5cGhJbmRleF0pOwotICAgICAKLS0tLSBsaWJqYXZhL2Ns YXNzcGF0aC9pbmNsdWRlL2dudV9qYXZhX2F3dF9wZWVyX2d0a19DYWlyb0dyYXBoaWNzMkQuaAkx NiBNYXIgMjAwNyAxNToxNDo1MyAtMDAwMAkxLjE3Ci0rKysgbGliamF2YS9jbGFzc3BhdGgvaW5j bHVkZS9nbnVfamF2YV9hd3RfcGVlcl9ndGtfQ2Fpcm9HcmFwaGljczJELmgJMiBBcHIgMjAwNyAx OTozOToyNiAtMDAwMAkxLjE4Ci1AQCAtMjIsNyArMjIsNyBAQCBKTklFWFBPUlQgdm9pZCBKTklD QUxMIEphdmFfZ251X2phdmFfYXd0Ci0gSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKYXZhX2dudV9q YXZhX2F3dF9wZWVyX2d0a19DYWlyb0dyYXBoaWNzMkRfY2Fpcm9TZXRGaWxsUnVsZSAoSk5JRW52 ICplbnYsIGpvYmplY3QsIGpsb25nLCBqaW50KTsKLSBKTklFWFBPUlQgdm9pZCBKTklDQUxMIEph dmFfZ251X2phdmFfYXd0X3BlZXJfZ3RrX0NhaXJvR3JhcGhpY3MyRF9jYWlyb1NldExpbmUgKEpO SUVudiAqZW52LCBqb2JqZWN0LCBqbG9uZywgamRvdWJsZSwgamludCwgamludCwgamRvdWJsZSk7 Ci0gSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKYXZhX2dudV9qYXZhX2F3dF9wZWVyX2d0a19DYWly b0dyYXBoaWNzMkRfY2Fpcm9TZXREYXNoIChKTklFbnYgKmVudiwgam9iamVjdCwgamxvbmcsIGpk b3VibGVBcnJheSwgamludCwgamRvdWJsZSk7Ci0tSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKYXZh X2dudV9qYXZhX2F3dF9wZWVyX2d0a19DYWlyb0dyYXBoaWNzMkRfY2Fpcm9EcmF3R2x5cGhWZWN0 b3IgKEpOSUVudiAqZW52LCBqb2JqZWN0LCBqbG9uZywgam9iamVjdCwgamZsb2F0LCBqZmxvYXQs IGppbnQsIGppbnRBcnJheSwgamZsb2F0QXJyYXkpOwotK0pOSUVYUE9SVCB2b2lkIEpOSUNBTEwg SmF2YV9nbnVfamF2YV9hd3RfcGVlcl9ndGtfQ2Fpcm9HcmFwaGljczJEX2NhaXJvRHJhd0dseXBo VmVjdG9yIChKTklFbnYgKmVudiwgam9iamVjdCwgamxvbmcsIGpvYmplY3QsIGpmbG9hdCwgamZs b2F0LCBqaW50LCBqaW50QXJyYXksIGpmbG9hdEFycmF5LCBqbG9uZ0FycmF5KTsKLSBKTklFWFBP UlQgdm9pZCBKTklDQUxMIEphdmFfZ251X2phdmFfYXd0X3BlZXJfZ3RrX0NhaXJvR3JhcGhpY3My RF9jYWlyb1NldEZvbnQgKEpOSUVudiAqZW52LCBqb2JqZWN0LCBqbG9uZywgam9iamVjdCk7Ci0g Sk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKYXZhX2dudV9qYXZhX2F3dF9wZWVyX2d0a19DYWlyb0dy YXBoaWNzMkRfY2Fpcm9SZWN0YW5nbGUgKEpOSUVudiAqZW52LCBqb2JqZWN0LCBqbG9uZywgamRv dWJsZSwgamRvdWJsZSwgamRvdWJsZSwgamRvdWJsZSk7Ci0gSk5JRVhQT1JUIHZvaWQgSk5JQ0FM TCBKYXZhX2dudV9qYXZhX2F3dF9wZWVyX2d0a19DYWlyb0dyYXBoaWNzMkRfY2Fpcm9BcmMgKEpO SUVudiAqZW52LCBqb2JqZWN0LCBqbG9uZywgamRvdWJsZSwgamRvdWJsZSwgamRvdWJsZSwgamRv dWJsZSwgamRvdWJsZSk7Ci0tLS0gbGliamF2YS9jbGFzc3BhdGgvaW5jbHVkZS9nbnVfamF2YV9h d3RfcGVlcl9ndGtfRnJlZXR5cGVHbHlwaFZlY3Rvci5oCTExIEp1biAyMDA2IDA4OjI5OjU3IC0w MDAwCTEuMgotKysrIGxpYmphdmEvY2xhc3NwYXRoL2luY2x1ZGUvZ251X2phdmFfYXd0X3BlZXJf Z3RrX0ZyZWV0eXBlR2x5cGhWZWN0b3IuaAkyIEFwciAyMDA3IDIxOjI4OjU4IC0wMDAwCTEuNAot QEAgLTEwLDEwICsxMCwxMiBAQCBleHRlcm4gIkMiCi0gewotICNlbmRpZgotIAotLUpOSUVYUE9S VCBqaW50QXJyYXkgSk5JQ0FMTCBKYXZhX2dudV9qYXZhX2F3dF9wZWVyX2d0a19GcmVldHlwZUds eXBoVmVjdG9yX2dldEdseXBocyAoSk5JRW52ICplbnYsIGpvYmplY3QsIGppbnRBcnJheSk7Ci0t Sk5JRVhQT1JUIGpvYmplY3QgSk5JQ0FMTCBKYXZhX2dudV9qYXZhX2F3dF9wZWVyX2d0a19GcmVl dHlwZUdseXBoVmVjdG9yX2dldEtlcm5pbmcgKEpOSUVudiAqZW52LCBqb2JqZWN0LCBqaW50LCBq aW50KTsKLS1KTklFWFBPUlQgamRvdWJsZUFycmF5IEpOSUNBTEwgSmF2YV9nbnVfamF2YV9hd3Rf cGVlcl9ndGtfRnJlZXR5cGVHbHlwaFZlY3Rvcl9nZXRNZXRyaWNzTmF0aXZlIChKTklFbnYgKmVu diwgam9iamVjdCwgamludCk7Ci0tSk5JRVhQT1JUIGpvYmplY3QgSk5JQ0FMTCBKYXZhX2dudV9q YXZhX2F3dF9wZWVyX2d0a19GcmVldHlwZUdseXBoVmVjdG9yX2dldEdseXBoT3V0bGluZU5hdGl2 ZSAoSk5JRW52ICplbnYsIGpvYmplY3QsIGppbnQpOwotK0pOSUVYUE9SVCB2b2lkIEpOSUNBTEwg SmF2YV9nbnVfamF2YV9hd3RfcGVlcl9ndGtfRnJlZXR5cGVHbHlwaFZlY3Rvcl9nZXRHbHlwaHMg KEpOSUVudiAqZW52LCBqb2JqZWN0LCBqaW50QXJyYXksIGppbnRBcnJheSwgamxvbmdBcnJheSk7 Ci0rSk5JRVhQT1JUIGpvYmplY3QgSk5JQ0FMTCBKYXZhX2dudV9qYXZhX2F3dF9wZWVyX2d0a19G cmVldHlwZUdseXBoVmVjdG9yX2dldEtlcm5pbmcgKEpOSUVudiAqZW52LCBqb2JqZWN0LCBqaW50 LCBqaW50LCBqbG9uZyk7Ci0rSk5JRVhQT1JUIGpkb3VibGVBcnJheSBKTklDQUxMIEphdmFfZ251 X2phdmFfYXd0X3BlZXJfZ3RrX0ZyZWV0eXBlR2x5cGhWZWN0b3JfZ2V0TWV0cmljc05hdGl2ZSAo Sk5JRW52ICplbnYsIGpvYmplY3QsIGppbnQsIGpsb25nKTsKLStKTklFWFBPUlQgam9iamVjdCBK TklDQUxMIEphdmFfZ251X2phdmFfYXd0X3BlZXJfZ3RrX0ZyZWV0eXBlR2x5cGhWZWN0b3JfZ2V0 R2x5cGhPdXRsaW5lTmF0aXZlIChKTklFbnYgKmVudiwgam9iamVjdCwgamludCwgamxvbmcpOwot K0pOSUVYUE9SVCB2b2lkIEpOSUNBTEwgSmF2YV9nbnVfamF2YV9hd3RfcGVlcl9ndGtfRnJlZXR5 cGVHbHlwaFZlY3Rvcl9kaXNwb3NlIChKTklFbnYgKmVudiwgam9iamVjdCwgamxvbmdBcnJheSk7 Ci0rSk5JRVhQT1JUIGpsb25nIEpOSUNBTEwgSmF2YV9nbnVfamF2YV9hd3RfcGVlcl9ndGtfRnJl ZXR5cGVHbHlwaFZlY3Rvcl9nZXROYXRpdmVGb250UG9pbnRlciAoSk5JRW52ICplbnYsIGpvYmpl Y3QsIGppbnQpOwotIAotICNpZmRlZiBfX2NwbHVzcGx1cwotIH0KLS0tLSBsaWJqYXZhL2NsYXNz cGF0aC9uYXRpdmUvam5pL2d0ay1wZWVyL2dka2ZvbnQuaAkyMSBOb3YgMjAwNiAxNDoxNDoyNSAt MDAwMAkxLjEwCi0rKysgbGliamF2YS9jbGFzc3BhdGgvbmF0aXZlL2puaS9ndGstcGVlci9nZGtm b250LmgJMiBBcHIgMjAwNyAxOTozOToyNiAtMDAwMAkxLjExCi1AQCAtNDAsNiArNDAsNyBAQAot IAotICNpbmNsdWRlICJndGtwZWVyLmgiCi0gCi0rI2RlZmluZSBQQU5HT19FTkFCTEVfRU5HSU5F Ci0gI2luY2x1ZGUgPHBhbmdvL3BhbmdvLmg+Ci0gI2luY2x1ZGUgPHBhbmdvL3BhbmdvLWNvbnRl eHQuaD4KLSAjaW5jbHVkZSA8cGFuZ28vcGFuZ28tZm9udG1hcC5oPgotQEAgLTEyMyw2ICsxMjQs NyBAQCBleHRlcm4gc3RydWN0IHN0YXRlX3RhYmxlICpjcF9ndGtfbmF0aXZlCi0gc3RydWN0IHBl ZXJmb250Ci0gewotICAgUGFuZ29Gb250ICpmb250OwotKyAgUGFuZ29Gb250c2V0ICpzZXQ7Ci0g ICBQYW5nb0ZvbnREZXNjcmlwdGlvbiAqZGVzYzsKLSAgIFBhbmdvQ29udGV4dCAqY3R4OwotICAg UGFuZ29MYXlvdXQgKmxheW91dDsKLS0tLSBsaWJqYXZhL2NsYXNzcGF0aC9uYXRpdmUvam5pL2d0 ay1wZWVyL2dudV9qYXZhX2F3dF9wZWVyX2d0a19DYWlyb0dyYXBoaWNzMkQuYwkxNiBNYXIgMjAw NyAxNToxNDo1NSAtMDAwMAkxLjIxCi0rKysgbGliamF2YS9jbGFzc3BhdGgvbmF0aXZlL2puaS9n dGstcGVlci9nbnVfamF2YV9hd3RfcGVlcl9ndGtfQ2Fpcm9HcmFwaGljczJELmMJMiBBcHIgMjAw NyAxOTozOToyNiAtMDAwMAkxLjIyCi1AQCAtMzA4LDkgKzMwOCw4IEBAIEphdmFfZ251X2phdmFf YXd0X3BlZXJfZ3RrX0NhaXJvR3JhcGhpY3MKLSAgam9iamVjdCBmb250LAotICBqZmxvYXQgeCwg amZsb2F0IHksIGppbnQgbiwKLSAgamludEFycmF5IGphdmFfY29kZXMsCi0tIGpmbG9hdEFycmF5 IGphdmFfcG9zaXRpb25zKQotKyBqZmxvYXRBcnJheSBqYXZhX3Bvc2l0aW9ucywgamxvbmdBcnJh eSBqYXZhX2ZvbnRzZXQpCi0gewotLSAgCi0gICBzdHJ1Y3QgY2Fpcm9ncmFwaGljczJkICpnciA9 IE5VTEw7Ci0gICBzdHJ1Y3QgcGVlcmZvbnQgKnBmb250ID0gTlVMTDsKLSAgIGNhaXJvX2dseXBo X3QgKmdseXBocyA9IE5VTEw7Ci1AQCAtMzMzLDYgKzMzMiw3IEBAIEphdmFfZ251X2phdmFfYXd0 X3BlZXJfZ3RrX0NhaXJvR3JhcGhpY3MKLSAgIG5hdGl2ZV9jb2RlcyA9ICgqZW52KS0+R2V0SW50 QXJyYXlFbGVtZW50cyAoZW52LCBqYXZhX2NvZGVzLCBOVUxMKTsKLSAgIG5hdGl2ZV9wb3NpdGlv bnMgPSAoKmVudiktPkdldEZsb2F0QXJyYXlFbGVtZW50cyAoZW52LCBqYXZhX3Bvc2l0aW9ucywg TlVMTCk7Ci0gICAKLSsgIC8qIFNldCB1cCBnbHlwaHMgYW5kIGxheW91dCAqLwotICAgZm9yIChp ID0gMDsgaSA8IG47ICsraSkKLSAgICAgewotICAgICAgIGdseXBoc1tpXS5pbmRleCA9IG5hdGl2 ZV9jb2Rlc1tpXTsKLUBAIC0zNDMsMTAgKzM0MywzMSBAQCBKYXZhX2dudV9qYXZhX2F3dF9wZWVy X2d0a19DYWlyb0dyYXBoaWNzCi0gICAoKmVudiktPlJlbGVhc2VGbG9hdEFycmF5RWxlbWVudHMg KGVudiwgamF2YV9wb3NpdGlvbnMsIG5hdGl2ZV9wb3NpdGlvbnMsIDApOwotICAgKCplbnYpLT5S ZWxlYXNlSW50QXJyYXlFbGVtZW50cyAoZW52LCBqYXZhX2NvZGVzLCBuYXRpdmVfY29kZXMsIDAp OwotIAotLSAgcGFuZ29fZmNfZm9udF9sb2NrX2ZhY2UoIChQYW5nb0ZjRm9udCAqKXBmb250LT5m b250ICk7Ci0tICBjYWlyb19zaG93X2dseXBocyAoZ3ItPmNyLCBnbHlwaHMsIG4pOwotLSAgcGFu Z29fZmNfZm9udF91bmxvY2tfZmFjZSggKFBhbmdvRmNGb250ICopcGZvbnQtPmZvbnQgKTsKLSsg IC8qIEl0ZXJhdGUgdGhyb3VnaCBnbHlwaHMgYW5kIGRyYXcgKi8KLSsgIGpsb25nKiBmb250cyA9 ICgqZW52KS0+R2V0TG9uZ0FycmF5RWxlbWVudHMgKGVudiwgamF2YV9mb250c2V0LCBOVUxMKTsK LSsgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCi0rICAgIHsKLSsgICAgICBQYW5nb0ZjRm9udCAq Zm9udCA9IEpMT05HX1RPX1BUUihQYW5nb0ZjRm9udCwgZm9udHNbaV0pOwotKwotKyAgICAgIC8q IERyYXcgYXMgbWFueSBnbHlwaHMgYXMgcG9zc2libGUgd2l0aCB0aGUgY3VycmVudCBmb250ICov Ci0rICAgICAgaW50IGxlbmd0aCA9IDA7Ci0rICAgICAgd2hpbGUgKGkgPCBuLTEgJiYgZm9udHNb aV0gPT0gZm9udHNbaSsxXSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgbGVuZ3RoKys7Ci0rICAg ICAgICAgIGkrKzsKLSsgICAgICAgIH0KLSsgICAgCi0rICAgICAgRlRfRmFjZSBmYWNlID0gcGFu Z29fZmNfZm9udF9sb2NrX2ZhY2UoIGZvbnQgKTsKLSsgICAgICBjYWlyb19mb250X2ZhY2VfdCAq ZnQgPSBjYWlyb19mdF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9mdF9mYWNlIChmYWNlLCAwKTsKLSsg ICAgICBnX2Fzc2VydCAoZnQgIT0gTlVMTCk7Ci0gCi0rICAgICAgY2Fpcm9fc2V0X2ZvbnRfZmFj ZSAoZ3ItPmNyLCBmdCk7Ci0rICAgICAgY2Fpcm9fc2hvd19nbHlwaHMgKGdyLT5jciwgJmdseXBo c1tpLWxlbmd0aF0sIGxlbmd0aCsxKTsKLSsgICAgICAgICAgICAgICAgICAgICAgIAotKyAgICAg IGNhaXJvX2ZvbnRfZmFjZV9kZXN0cm95IChmdCk7Ci0rICAgICAgcGFuZ29fZmNfZm9udF91bmxv Y2tfZmFjZShmb250KTsKLSsgICAgfQotKyAgICAKLSAgIGdfZnJlZShnbHlwaHMpOwotIH0KLSAK LS0tLSBsaWJqYXZhL2NsYXNzcGF0aC9uYXRpdmUvam5pL2d0ay1wZWVyL2dudV9qYXZhX2F3dF9w ZWVyX2d0a19GcmVldHlwZUdseXBoVmVjdG9yLmMJMTEgSnVuIDIwMDYgMTE6MzE6MDMgLTAwMDAJ MS40Ci0rKysgbGliamF2YS9jbGFzc3BhdGgvbmF0aXZlL2puaS9ndGstcGVlci9nbnVfamF2YV9h d3RfcGVlcl9ndGtfRnJlZXR5cGVHbHlwaFZlY3Rvci5jCTIgQXByIDIwMDcgMjE6Mjg6NTkgLTAw MDAJMS42Ci1AQCAtMzUsNiArMzUsNyBAQCB0aGlzIGV4Y2VwdGlvbiB0byB5b3VyIHZlcnNpb24g b2YgdGhlIGxpCi0gb2JsaWdhdGVkIHRvIGRvIHNvLiAgSWYgeW91IGRvIG5vdCB3aXNoIHRvIGRv IHNvLCBkZWxldGUgdGhpcwotIGV4Y2VwdGlvbiBzdGF0ZW1lbnQgZnJvbSB5b3VyIHZlcnNpb24u ICovCi0gCi0rI2RlZmluZSBQQU5HT19FTkFCTEVfRU5HSU5FCi0gI2luY2x1ZGUgPGpuaS5oPgot ICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotQEAgLTQzLDYgKzQ0 LDcgQEAgZXhjZXB0aW9uIHN0YXRlbWVudCBmcm9tIHlvdXIgdmVyc2lvbi4gKgotICNpbmNsdWRl IDxwYW5nby9wYW5nb2ZjLWZvbnQuaD4KLSAjaW5jbHVkZSA8ZnJlZXR5cGUvZnRnbHlwaC5oPgot ICNpbmNsdWRlIDxmcmVldHlwZS9mdG91dGxuLmg+Ci0rI2luY2x1ZGUgImpjbC5oIgotICNpbmNs dWRlICJuYXRpdmVfc3RhdGUuaCIKLSAjaW5jbHVkZSAiZ2RrZm9udC5oIgotICNpbmNsdWRlICJn bnVfamF2YV9hd3RfcGVlcl9ndGtfRnJlZXR5cGVHbHlwaFZlY3Rvci5oIgotQEAgLTgxLDQyICs4 Myw5MiBAQCBnZXRGb250KEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaikKLSAgIHJldHVybiAoUGFu Z29GY0ZvbnQgKilwZm9udC0+Zm9udDsKLSB9Ci0gCi0tSk5JRVhQT1JUIGppbnRBcnJheSBKTklD QUxMIAotK3N0YXRpYyBQYW5nb0ZvbnRzZXQgKgotK2dldEZvbnRTZXQoSk5JRW52ICplbnYsIGpv YmplY3Qgb2JqKQotK3sKLSsgIGpmaWVsZElEIGZpZDsKLSsgIGpvYmplY3QgZGF0YTsKLSsgIGpj bGFzcyBjbHM7Ci0rICBzdHJ1Y3QgcGVlcmZvbnQgKnBmb250OwotKwotKyAgY2xzID0gKCplbnYp LT5HZXRPYmplY3RDbGFzcyAoZW52LCBvYmopOwotKyAgZmlkID0gKCplbnYpLT5HZXRGaWVsZElE IChlbnYsIGNscywgInBlZXIiLCAKLSsJCQkJICJMZ251L2phdmEvYXd0L3BlZXIvZ3RrL0dka0Zv bnRQZWVyOyIpOwotKyAgZ19hc3NlcnQgKGZpZCAhPSAwKTsKLSsKLSsgIGRhdGEgPSAoKmVudikt PkdldE9iamVjdEZpZWxkIChlbnYsIG9iaiwgZmlkKTsKLSsgIGdfYXNzZXJ0IChkYXRhICE9IE5V TEwpOwotKwotKyAgcGZvbnQgPSAoc3RydWN0IHBlZXJmb250ICopTlNBX0dFVF9GT05UX1BUUiAo ZW52LCBkYXRhKTsKLSsgIGdfYXNzZXJ0IChwZm9udCAhPSBOVUxMKTsKLSsgIGdfYXNzZXJ0IChw Zm9udC0+Zm9udCAhPSBOVUxMKTsKLSsKLSsgIHJldHVybiAoUGFuZ29Gb250c2V0ICopcGZvbnQt PnNldDsKLSt9Ci0rCi0rSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCAKLSBKYXZhX2dudV9qYXZhX2F3 dF9wZWVyX2d0a19GcmVldHlwZUdseXBoVmVjdG9yX2dldEdseXBocwotLSAgKEpOSUVudiAqZW52 LCBqb2JqZWN0IG9iaiwgamludEFycmF5IGNvZGVwb2ludHMpCi0rICAoSk5JRW52ICplbnYsIGpv YmplY3Qgb2JqLCBqaW50QXJyYXkgY29kZXBvaW50cywgamludEFycmF5IGdseXBocywKLSsgICBq bG9uZ0FycmF5IGZvbnRzKQotIHsKLS0gIEZUX0ZhY2UgZnRfZmFjZTsKLS0gIGppbnRBcnJheSBy ZXRBcnJheTsKLS0gIFBhbmdvRmNGb250ICpmb250OwotLSAgamludCAqdmFsdWVzLCAqY3B2YWxz OwotKyAgUGFuZ29GY0ZvbnQgKmRlZmF1bHRfZm9udCwgKmN1cnJlbnRfZm9udDsKLSsgIFBhbmdv Rm9udHNldCAqcGZzOwotKyAgamludCAqY3B2YWxzOwotICAgamludCBsZW5ndGg7Ci0gICBpbnQg aTsKLSAKLS0gIGZvbnQgPSBnZXRGb250KGVudiwgb2JqKTsKLS0KLS0gIGZ0X2ZhY2UgPSBwYW5n b19mY19mb250X2xvY2tfZmFjZSggZm9udCApOwotLSAgZ19hc3NlcnQgKGZ0X2ZhY2UgIT0gTlVM TCk7Ci0rICAvKiBTZXQgdXAgZGVmYXVsdCBmb250IGFuZCBmb250c2V0ICovCi0rICBkZWZhdWx0 X2ZvbnQgPSBnZXRGb250KGVudiwgb2JqKTsKLSsgIGN1cnJlbnRfZm9udCA9IGRlZmF1bHRfZm9u dDsKLSsgIHBmcyA9IGdldEZvbnRTZXQoZW52LCBvYmopOwotIAotKyAgLyogUmV0cmlldmUgc3Ry aW5nIGluZm9ybWF0aW9uICovCi0gICBsZW5ndGggPSAoKmVudiktPkdldEFycmF5TGVuZ3RoIChl bnYsIGNvZGVwb2ludHMpOwotICAgY3B2YWxzID0gKCplbnYpLT5HZXRJbnRBcnJheUVsZW1lbnRz IChlbnYsIGNvZGVwb2ludHMsIE5VTEwpOwotKyAgCi0rICBqaW50ICpnbHlwaEFycmF5ID0gKCpl bnYpLT5HZXRJbnRBcnJheUVsZW1lbnRzIChlbnYsIGdseXBocywgTlVMTCk7Ci0rICBqbG9uZyAq Zm9udEFycmF5ID0gKCplbnYpLT5HZXRMb25nQXJyYXlFbGVtZW50cyAoZW52LCBmb250cywgTlVM TCk7Ci0gCi0tICByZXRBcnJheSA9ICgqZW52KS0+TmV3SW50QXJyYXkgKGVudiwgbGVuZ3RoKTsK LS0gIHZhbHVlcyA9ICgqZW52KS0+R2V0SW50QXJyYXlFbGVtZW50cyAoZW52LCByZXRBcnJheSwg TlVMTCk7Ci0rICAvKiBBIGRlc2lnbiBnb2FsIG9mIFBhbmdvIGlzIHRvIGJlIHRocmVhZHNhZmUs IGJ1dCBpdCdzIGFkbWl0dGVkIHRoYXQgaXQgaXMKLSsgICAqIG5vdCBhY3R1YWxseSB0aHJlYWRz YWZlIGF0IHRoZSBtb21lbnQuICBVc2luZyBnZGsgbG9ja2luZyBoZXJlIHRvIGJlIHNhZmUsCi0r ICAgKiBidXQgSSBkb24ndCBrbm93IGlmIGlmIGFjdHVhbGx5IGhlbHBzIGF0IGFsbC4uLiAqLyAK LSsgIGdka190aHJlYWRzX2VudGVyKCk7Ci0gCi0gICBmb3IoIGkgPSAwOyBpIDwgbGVuZ3RoOyBp KysgKQotLSAgICB2YWx1ZXNbaV0gPSBGVF9HZXRfQ2hhcl9JbmRleCggZnRfZmFjZSwgY3B2YWxz W2ldICk7Ci0rICB7Ci0rICAJLyogRW5zdXJlIHRoZSBjdXJyZW50IGZvbnQgaGFzIHRoZSByZXF1 ZXN0ZWQgY2hhcmFjdGVyOyBpZiBpdCBkb2Vzbid0LAotKyAgCSAqIHRyeSB0aGUgZGVmYXVsdCBm b250IGJlZm9yZSBwdWxsaW5nIGEgbmV3IGZvbnQgb3V0IG9mIHRoZSBmb250c2V0LgotKyAgCSAq IE9uY2UgY2hvc2VuLCBhIGZvbnQgd2lsbCBiZSB1c2VkIHVudGlsIGEgY2hhcmFjdGVyIG5vdCBp biB0aGUgZm9udCBpcwotKyAgCSAqIGVuY291bnRlcmVkLiAqLyAKLSsgIAlpZiAoIXBhbmdvX2Zj X2ZvbnRfaGFzX2NoYXIoY3VycmVudF9mb250LCBjcHZhbHNbaV0pKQotKyAgCSAgewotKyAgCSAg ICBpZiAocGFuZ29fZmNfZm9udF9oYXNfY2hhcihkZWZhdWx0X2ZvbnQsIGNwdmFsc1tpXSkpCi0r ICAJICAgICAgewotKyAgCSAgICAgICAgY3VycmVudF9mb250ID0gZGVmYXVsdF9mb250OwotKyAg CSAgICAgIH0KLSsgIAkgICAgZWxzZQotKyAgCSAgICAgIHsKLSsgIAkgICAgICAgIGN1cnJlbnRf Zm9udCA9IChQYW5nb0ZjRm9udCopcGFuZ29fZm9udHNldF9nZXRfZm9udChwZnMsIGNwdmFsc1tp XSk7Ci0rICAJICAgICAgfQotKyAgCSAgfQotKyAgCQotKyAgCS8qIEdldCBnbHlwaCwgYW5kIHN0 b3JlIGJvdGggZ2x5cGggYW5kIHBvaW50ZXIgdG8gZm9udCAqLwotKyAgICBnbHlwaEFycmF5W2ld ID0gKGludClwYW5nb19mY19mb250X2dldF9nbHlwaChjdXJyZW50X2ZvbnQsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChndW5pY2hhciljcHZhbHNb aV0pOwotKyAgICBnX29iamVjdF9yZWYoY3VycmVudF9mb250KTsKLSsgICAgZm9udEFycmF5W2ld ID0gUFRSX1RPX0pMT05HKGN1cnJlbnRfZm9udCk7Ci0rICB9Ci0rICAKLSsgIGdka190aHJlYWRz X2xlYXZlKCk7Ci0gCi0tICAoKmVudiktPlJlbGVhc2VJbnRBcnJheUVsZW1lbnRzIChlbnYsIHJl dEFycmF5LCB2YWx1ZXMsIDApOwotKyAgKCplbnYpLT5SZWxlYXNlSW50QXJyYXlFbGVtZW50cyAo ZW52LCBnbHlwaHMsIGdseXBoQXJyYXksIDApOwotICAgKCplbnYpLT5SZWxlYXNlSW50QXJyYXlF bGVtZW50cyAoZW52LCBjb2RlcG9pbnRzLCBjcHZhbHMsIDApOwotLQotLSAgcGFuZ29fZmNfZm9u dF91bmxvY2tfZmFjZSAoZm9udCk7Ci0tCi0tICByZXR1cm4gcmV0QXJyYXk7Ci0rICAoKmVudikt PlJlbGVhc2VMb25nQXJyYXlFbGVtZW50cyAoZW52LCBmb250cywgZm9udEFycmF5LCAwKTsKLSB9 Ci0gCi0gSk5JRVhQT1JUIGpvYmplY3QgSk5JQ0FMTCAKLSBKYXZhX2dudV9qYXZhX2F3dF9wZWVy X2d0a19GcmVldHlwZUdseXBoVmVjdG9yX2dldEtlcm5pbmcKLS0oSk5JRW52ICplbnYsIGpvYmpl Y3Qgb2JqLCBqaW50IHJpZ2h0R2x5cGgsIGppbnQgbGVmdEdseXBoKQotKyhKTklFbnYgKmVudiwg am9iamVjdCBvYmogX19hdHRyaWJ1dGVfXygodW51c2VkKSksIGppbnQgcmlnaHRHbHlwaCwgamlu dCBsZWZ0R2x5cGgsIGpsb25nIGZudCkKLSB7Ci0gICBGVF9GYWNlIGZ0X2ZhY2U7Ci0gICBGVF9W ZWN0b3Iga2VybjsKLUBAIC0xMjUsNyArMTc3LDcgQEAgSmF2YV9nbnVfamF2YV9hd3RfcGVlcl9n dGtfRnJlZXR5cGVHbHlwaAotICAganZhbHVlIHZhbHVlc1syXTsKLSAgIFBhbmdvRmNGb250ICpm b250OwotIAotLSAgZm9udCA9IGdldEZvbnQoZW52LCBvYmopOwotKyAgZm9udCA9IEpMT05HX1RP X1BUUihQYW5nb0ZjRm9udCwgZm50KTsKLSAgIGZ0X2ZhY2UgPSBwYW5nb19mY19mb250X2xvY2tf ZmFjZSggZm9udCApOwotICAgZ19hc3NlcnQgKGZ0X2ZhY2UgIT0gTlVMTCk7Ci0gICBGVF9HZXRf S2VybmluZyggZnRfZmFjZSwgcmlnaHRHbHlwaCwgbGVmdEdseXBoLCBGVF9LRVJOSU5HX0RFRkFV TFQsICZrZXJuICk7Ci1AQCAtMTQyLDE0ICsxOTQsMTQgQEAgSmF2YV9nbnVfamF2YV9hd3RfcGVl cl9ndGtfRnJlZXR5cGVHbHlwaAotIAotIEpOSUVYUE9SVCBqZG91YmxlQXJyYXkgSk5JQ0FMTCAK LSBKYXZhX2dudV9qYXZhX2F3dF9wZWVyX2d0a19GcmVldHlwZUdseXBoVmVjdG9yX2dldE1ldHJp Y3NOYXRpdmUKLS0oSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqaW50IGdseXBoSW5kZXggKQot KyhKTklFbnYgKmVudiwgam9iamVjdCBvYmogX19hdHRyaWJ1dGVfXygodW51c2VkKSksIGppbnQg Z2x5cGhJbmRleCwgamxvbmcgZm50KQotIHsKLSAgIEZUX0ZhY2UgZnRfZmFjZTsKLSAgIGpkb3Vi bGUgKnZhbHVlczsKLSAgIGpkb3VibGVBcnJheSByZXRBcnJheSA9IE5VTEw7Ci0gICBQYW5nb0Zj Rm9udCAqZm9udDsKLSAKLS0gIGZvbnQgPSBnZXRGb250KGVudiwgb2JqKTsKLSsgIGZvbnQgPSBK TE9OR19UT19QVFIoUGFuZ29GY0ZvbnQsIGZudCk7Ci0gICBmdF9mYWNlID0gcGFuZ29fZmNfZm9u dF9sb2NrX2ZhY2UoIGZvbnQgKTsKLSAKLSAgIGdfYXNzZXJ0IChmdF9mYWNlICE9IE5VTEwpOwot QEAgLTI4NSw3ICszMzcsNyBAQCBzdGF0aWMgaW50IF9jdXJ2ZVRvKCBjb25zdCBGVF9WZWN0b3Iq ICBjCi0gCi0gSk5JRVhQT1JUIGpvYmplY3QgSk5JQ0FMTCAKLSBKYXZhX2dudV9qYXZhX2F3dF9w ZWVyX2d0a19GcmVldHlwZUdseXBoVmVjdG9yX2dldEdseXBoT3V0bGluZU5hdGl2ZQotLSAoSk5J RW52ICplbnYsIGpvYmplY3Qgb2JqLCBqaW50IGdseXBoSW5kZXgpCi0rIChKTklFbnYgKmVudiwg am9iamVjdCBvYmogX19hdHRyaWJ1dGVfXygodW51c2VkKSksIGppbnQgZ2x5cGhJbmRleCwgamxv bmcgZm50KQotIHsKLSAgIGdlbmVyYWxwYXRoICpwYXRoOwotICAgam9iamVjdCBncDsKLUBAIC0z MDIsNyArMzU0LDcgQEAgSmF2YV9nbnVfamF2YV9hd3RfcGVlcl9ndGtfRnJlZXR5cGVHbHlwaAot ICAgRlRfRmFjZSBmdF9mYWNlOwotICAgRlRfR2x5cGggZ2x5cGg7Ci0gCi0tICBmb250ID0gZ2V0 Rm9udChlbnYsIG9iaik7Ci0rICBmb250ID0gSkxPTkdfVE9fUFRSKFBhbmdvRmNGb250LCBmbnQp OwotICAgZnRfZmFjZSA9IHBhbmdvX2ZjX2ZvbnRfbG9ja19mYWNlKCBmb250ICk7Ci0gCi0gICBn X2Fzc2VydCAoZnRfZmFjZSAhPSBOVUxMKTsKLUBAIC0zNDUsNCArMzk3LDM5IEBAIEphdmFfZ251 X2phdmFfYXd0X3BlZXJfZ3RrX0ZyZWV0eXBlR2x5cGgKLSAgIHJldHVybiBncDsgCi0gfQotIAot K0pOSUVYUE9SVCB2b2lkIEpOSUNBTEwgCi0rSmF2YV9nbnVfamF2YV9hd3RfcGVlcl9ndGtfRnJl ZXR5cGVHbHlwaFZlY3Rvcl9kaXNwb3NlCi0rIChKTklFbnYgKmVudiwgam9iamVjdCBvYmogX19h dHRyaWJ1dGVfXygodW51c2VkKSksIGpsb25nQXJyYXkgZm9udHNldCkKLSt7Ci0rICBQYW5nb0Zj Rm9udCAqZm9udDsKLSsgIGpsb25nICpmb250QXJyYXk7IAotKyAgaW50IGksIGxlbmd0aDsKLSAK LSsgIGxlbmd0aCA9ICgqZW52KS0+R2V0QXJyYXlMZW5ndGggKGVudiwgZm9udHNldCk7Ci0rICBm b250QXJyYXkgPSAoKmVudiktPkdldExvbmdBcnJheUVsZW1lbnRzIChlbnYsIGZvbnRzZXQsIE5V TEwpOwotKyAgCi0rICBnZGtfdGhyZWFkc19lbnRlcigpOwotKyAgCi0rICBmb3IoIGkgPSAwOyBp IDwgbGVuZ3RoOyBpKysgKQotKyAgewotKyAgICBmb250ID0gSkxPTkdfVE9fUFRSKFBhbmdvRmNG b250LCBmb250QXJyYXlbaV0pOwotKyAgICBnX29iamVjdF91bnJlZihmb250KTsKLSsgIH0KLSsg IAotKyAgZ2RrX3RocmVhZHNfbGVhdmUoKTsKLSsKLSsgICgqZW52KS0+UmVsZWFzZUxvbmdBcnJh eUVsZW1lbnRzIChlbnYsIGZvbnRzZXQsIGZvbnRBcnJheSwgMCk7Ci0rfQotKwotK0pOSUVYUE9S VCBqbG9uZyBKTklDQUxMIAotK0phdmFfZ251X2phdmFfYXd0X3BlZXJfZ3RrX0ZyZWV0eXBlR2x5 cGhWZWN0b3JfZ2V0TmF0aXZlRm9udFBvaW50ZXIKLSsgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9i aiwgamludCBuKQotK3sKLSsgIGludCBpOwotKyAgUGFuZ29GY0ZvbnQgKmZvbnQgPSBnZXRGb250 KGVudiwgb2JqKTsKLSsgIAotKyAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKLSsgICAgZ19vYmpl Y3RfcmVmKGZvbnQpOwotKyAgCi0rICByZXR1cm4gUFRSX1RPX0pMT05HKGZvbnQpOwotK30KLS0t LSBsaWJqYXZhL2NsYXNzcGF0aC9uYXRpdmUvam5pL2d0ay1wZWVyL2dudV9qYXZhX2F3dF9wZWVy X2d0a19HZGtGb250UGVlci5jCTI2IEZlYiAyMDA3IDIyOjExOjM4IC0wMDAwCTEuMjIKLSsrKyBs aWJqYXZhL2NsYXNzcGF0aC9uYXRpdmUvam5pL2d0ay1wZWVyL2dudV9qYXZhX2F3dF9wZWVyX2d0 a19HZGtGb250UGVlci5jCTIgQXByIDIwMDcgMTk6Mzk6MjYgLTAwMDAJMS4yMwotQEAgLTM1LDYg KzM1LDcgQEAKLSAgICBvYmxpZ2F0ZWQgdG8gZG8gc28uICBJZiB5b3UgZG8gbm90IHdpc2ggdG8g ZG8gc28sIGRlbGV0ZSB0aGlzCi0gICAgZXhjZXB0aW9uIHN0YXRlbWVudCBmcm9tIHlvdXIgdmVy c2lvbi4gKi8KLSAKLSsjZGVmaW5lIFBBTkdPX0VOQUJMRV9FTkdJTkUKLSAjaW5jbHVkZSA8cGFu Z28vcGFuZ28uaD4KLSAjaW5jbHVkZSA8cGFuZ28vcGFuZ29mdDIuaD4KLSAjaW5jbHVkZSA8cGFu Z28vcGFuZ29mYy1mb250Lmg+Ci1AQCAtOTcsNiArOTgsOCBAQCBKYXZhX2dudV9qYXZhX2F3dF9w ZWVyX2d0a19HZGtGb250UGVlcl9kCi0gICAgIGdfb2JqZWN0X3VucmVmIChwZm9udC0+bGF5b3V0 KTsKLSAgIGlmIChwZm9udC0+Zm9udCAhPSBOVUxMKQotICAgICBnX29iamVjdF91bnJlZiAocGZv bnQtPmZvbnQpOwotKyAgaWYgKHBmb250LT5zZXQgIT0gTlVMTCkKLSsgICAgZ19vYmplY3RfdW5y ZWYgKHBmb250LT5zZXQpOwotICAgaWYgKHBmb250LT5jdHggIT0gTlVMTCkKLSAgICAgZ19vYmpl Y3RfdW5yZWYgKHBmb250LT5jdHgpOwotICAgaWYgKHBmb250LT5kZXNjICE9IE5VTEwpCi1AQCAt MjU3LDYgKzI2MCw4IEBAIEphdmFfZ251X2phdmFfYXd0X3BlZXJfZ3RrX0dka0ZvbnRQZWVyX3MK LSAgICAgZ19vYmplY3RfdW5yZWYgKHBmb250LT5jdHgpOwotICAgaWYgKHBmb250LT5mb250ICE9 IE5VTEwpCi0gICAgIGdfb2JqZWN0X3VucmVmIChwZm9udC0+Zm9udCk7Ci0rICBpZiAocGZvbnQt PnNldCAhPSBOVUxMKQotKyAgICBnX29iamVjdF91bnJlZiAocGZvbnQtPnNldCk7Ci0gICBpZiAo cGZvbnQtPmRlc2MgIT0gTlVMTCkKLSAgICAgcGFuZ29fZm9udF9kZXNjcmlwdGlvbl9mcmVlIChw Zm9udC0+ZGVzYyk7Ci0gCi1AQCAtMjY4LDcgKzI3Myw2IEBAIEphdmFfZ251X2phdmFfYXd0X3Bl ZXJfZ3RrX0dka0ZvbnRQZWVyX3MKLSAgIHBhbmdvX2ZvbnRfZGVzY3JpcHRpb25fc2V0X2ZhbWls eSAocGZvbnQtPmRlc2MsIGZhbWlseV9uYW1lKTsKLSAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VU RkNoYXJzKGVudiwgZmFtaWx5X25hbWVfc3RyLCBmYW1pbHlfbmFtZSk7Ci0gCi0tCi0gICBpZiAo c3R5bGUgJiBqYXZhX2F3dF9mb250X0JPTEQpCi0gICAgIHBhbmdvX2ZvbnRfZGVzY3JpcHRpb25f c2V0X3dlaWdodCAocGZvbnQtPmRlc2MsIFBBTkdPX1dFSUdIVF9CT0xEKTsKLSAKLUBAIC0yOTMs NiArMjk3LDggQEAgSmF2YV9nbnVfamF2YV9hd3RfcGVlcl9ndGtfR2RrRm9udFBlZXJfcwotICAg Ci0gICBwYW5nb19jb250ZXh0X3NldF9mb250X2Rlc2NyaXB0aW9uIChwZm9udC0+Y3R4LCBwZm9u dC0+ZGVzYyk7Ci0gICBwYW5nb19jb250ZXh0X3NldF9sYW5ndWFnZSAocGZvbnQtPmN0eCwgZ3Rr X2dldF9kZWZhdWx0X2xhbmd1YWdlKCkpOwotKyAgcGZvbnQtPnNldCA9IHBhbmdvX2NvbnRleHRf bG9hZF9mb250c2V0KHBmb250LT5jdHgsIHBmb250LT5kZXNjLAotKyAgCQkJCQkJCQkJCSAgZ3Rr X2dldF9kZWZhdWx0X2xhbmd1YWdlKCkpOwotICAgcGZvbnQtPmZvbnQgPSBwYW5nb19jb250ZXh0 X2xvYWRfZm9udCAocGZvbnQtPmN0eCwgcGZvbnQtPmRlc2MpOwotICAgZ19hc3NlcnQgKHBmb250 LT5mb250ICE9IE5VTEwpOwotIAoKZGlmZiAtLWdpdCBhL2djYzQxLXRscy1kYXRhLWFsaWdubWVu dC5wYXRjaCBiL2djYzQxLXRscy1kYXRhLWFsaWdubWVudC5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4xYWQyNmM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjNDEtdGxz LWRhdGEtYWxpZ25tZW50LnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKKzIwMDctMDUtMDMgIEpha3Vi IEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJKiB2YXJhc20uYyAoYWxpZ25fdmFyaWFi bGUpOiBEb24ndCBpbmNyZWFzZSBhbGlnbm1lbnQgZm9yCisJREVDTF9USFJFQURfTE9DQUxfUCB2 YXJpYWJsZXMgYWJvdmUgQklUU19QRVJfV09SRCB0aHJvdWdoCisJREFUQV9BTElHTk1FTlQgb3Ig Q09OU1RBTlRfQUxJR05NRU5ULgorCistLS0gZ2NjL3ZhcmFzbS5jLmpqCTIwMDctMDQtMTQgMTQ6 NTU6MjUuMDAwMDAwMDAwICswMjAwCisrKysgZ2NjL3ZhcmFzbS5jCTIwMDctMDUtMDMgMTE6MjM6 NTYuMDAwMDAwMDAwICswMjAwCitAQCAtMTA5NywxMSArMTA5NywyMiBAQCBhbGlnbl92YXJpYWJs ZSAodHJlZSBkZWNsLCBib29sIGRvbnRfb3V0CisgICBpZiAoISBERUNMX1VTRVJfQUxJR04gKGRl Y2wpKQorICAgICB7CisgI2lmZGVmIERBVEFfQUxJR05NRU5UCistICAgICAgYWxpZ24gPSBEQVRB X0FMSUdOTUVOVCAoVFJFRV9UWVBFIChkZWNsKSwgYWxpZ24pOworKyAgICAgIHVuc2lnbmVkIGlu dCBkYXRhX2FsaWduID0gREFUQV9BTElHTk1FTlQgKFRSRUVfVFlQRSAoZGVjbCksIGFsaWduKTsK KysgICAgICAvKiBEb24ndCBpbmNyZWFzZSBhbGlnbm1lbnQgdG9vIG11Y2ggZm9yIFRMUyB2YXJp YWJsZXMgLSBUTFMgc3BhY2UKKysJIGlzIHRvbyBwcmVjaW91cy4gICovCisrICAgICAgaWYgKCEg REVDTF9USFJFQURfTE9DQUxfUCAoZGVjbCkgfHwgZGF0YV9hbGlnbiA8PSBCSVRTX1BFUl9XT1JE KQorKwlhbGlnbiA9IGRhdGFfYWxpZ247CisgI2VuZGlmCisgI2lmZGVmIENPTlNUQU5UX0FMSUdO TUVOVAorICAgICAgIGlmIChERUNMX0lOSVRJQUwgKGRlY2wpICE9IDAgJiYgREVDTF9JTklUSUFM IChkZWNsKSAhPSBlcnJvcl9tYXJrX25vZGUpCistCWFsaWduID0gQ09OU1RBTlRfQUxJR05NRU5U IChERUNMX0lOSVRJQUwgKGRlY2wpLCBhbGlnbik7CisrCXsKKysJICB1bnNpZ25lZCBpbnQgY29u c3RfYWxpZ24gPSBDT05TVEFOVF9BTElHTk1FTlQgKERFQ0xfSU5JVElBTCAoZGVjbCksCisrCQkJ CQkJCSBhbGlnbik7CisrCSAgLyogRG9uJ3QgaW5jcmVhc2UgYWxpZ25tZW50IHRvbyBtdWNoIGZv ciBUTFMgdmFyaWFibGVzIC0gVExTIHNwYWNlCisrCSAgICAgaXMgdG9vIHByZWNpb3VzLiAgKi8K KysJICBpZiAoISBERUNMX1RIUkVBRF9MT0NBTF9QIChkZWNsKSB8fCBjb25zdF9hbGlnbiA8PSBC SVRTX1BFUl9XT1JEKQorKwkgICAgYWxpZ24gPSBjb25zdF9hbGlnbjsKKysJfQorICNlbmRpZgor ICAgICB9CisgCgpkaWZmIC0tZ2l0IGEvZ2NjNDEuc3BlYyBiL2djYzQxLnNwZWMKaW5kZXggMzhh NDcyYi4uMWUxNTZmNiAxMDA2NDQKLS0tIGEvZ2NjNDEuc3BlYworKysgYi9nY2M0MS5zcGVjCkBA IC0xLDYgKzEsNiBAQAotJWRlZmluZSBEQVRFIDIwMDcwNDI0CislZGVmaW5lIERBVEUgMjAwNzA1 MDMKICVkZWZpbmUgZ2NjX3ZlcnNpb24gNC4xLjIKLSVkZWZpbmUgZ2NjX3JlbGVhc2UgMTEKKyVk ZWZpbmUgZ2NjX3JlbGVhc2UgMTIKICVkZWZpbmUgX3VucGFja2FnZWRfZmlsZXNfdGVybWluYXRl X2J1aWxkIDAKICVkZWZpbmUgbXVsdGlsaWJfNjRfYXJjaHMgc3BhcmM2NCBwcGM2NCBzMzkweCB4 ODZfNjQKICVkZWZpbmUgaW5jbHVkZV9nYXBwbGV0dmlld2VyIDEKQEAgLTEzNywxMiArMTM3LDE0 IEBAIFBhdGNoMjU6IGdjYzQxLXByMjkyOTkucGF0Y2gKIFBhdGNoMjY6IGdjYzQxLWphdmEtYm9n dXMtZGVidWdsaW5lLnBhdGNoCiBQYXRjaDI3OiBnY2M0MS1saWJqYXZhLXZpc2liaWxpdHkucGF0 Y2gKIFBhdGNoMjg6IGdjYzQxLXByMzExODcucGF0Y2gKLVBhdGNoMjk6IGdjYzQxLXJoMjMxODE4 LnBhdGNoCitQYXRjaDI5OiBnY2M0MS1kdG9yLXJlbHJvLnBhdGNoCiBQYXRjaDMwOiBnY2M0MS1y aDIzNDUxNS5wYXRjaAotUGF0Y2gzMTogZ2NjNDEtcHIzMDU1OC5wYXRjaAorUGF0Y2gzMTogZ2Nj NDEtbGliZ29tcC1uY3B1cy5wYXRjaAogUGF0Y2gzMjogZ2NjNDEtcmgyMzY4OTUucGF0Y2gKLVBh dGNoMzM6IGdjYzQxLXByMzE1OTgucGF0Y2gKK1BhdGNoMzM6IGdjYzQxLXByMjg0ODIucGF0Y2gK IFBhdGNoMzQ6IGdjYzQxLXJoMjM1MDA4LnBhdGNoCitQYXRjaDM1OiBnY2M0MS1wcjMxNzQ4LnBh dGNoCitQYXRjaDM2OiBnY2M0MS10bHMtZGF0YS1hbGlnbm1lbnQucGF0Y2gKIAogJWRlZmluZSBf Z251ICV7bmlsfQogJWlmYXJjaCBzcGFyYwpAQCAtNDUwLDEyICs0NTIsMTQgQEAgd2hpY2ggYXJl IHJlcXVpcmVkIHRvIHJ1biBwcm9ncmFtcyBjb21waWxlZCB3aXRoIHRoZSBHTkFULgogJXBhdGNo MjYgLXAwIC1iIC5qYXZhLWJvZ3VzLWRlYnVnbGluZX4KICVwYXRjaDI3IC1wMCAtYiAubGliamF2 YS12aXNpYmlsaXR5fgogJXBhdGNoMjggLXAwIC1iIC5wcjMxMTg3fgotJXBhdGNoMjkgLXAwIC1i IC5yaDIzMTgxOH4KKyVwYXRjaDI5IC1wMCAtYiAuZHRvci1yZWxyb34KICVwYXRjaDMwIC1wMCAt YiAucmgyMzQ1MTV+Ci0lcGF0Y2gzMSAtcDAgLWIgLnByMzA1NTh+CislcGF0Y2gzMSAtcDAgLWIg LmxpYmdvbXAtbmNwdXN+CiAlcGF0Y2gzMiAtcDAgLWIgLnJoMjM2ODk1fgotJXBhdGNoMzMgLXAw IC1iIC5wcjMxNTk4fgorJXBhdGNoMzMgLXAwIC1iIC5wcjI4NDgyfgogJXBhdGNoMzQgLXAwIC1i IC5yaDIzNTAwOH4KKyVwYXRjaDM1IC1wMCAtYiAucHIzMTc0OH4KKyVwYXRjaDM2IC1wMCAtYiAu dGxzLWRhdGEtYWxpZ25tZW50fgogCiBzZWQgLWkgLWUgJ3MvNFwuMVwuMy80LjEuMi8nIGdjYy9C QVNFLVZFUiBnY2MvdmVyc2lvbi5jCiBzZWQgLWkgLWUgJ3MvIiAoUmVkIEhhdFteKV0qKSIvIiAo UmVkIEhhdCAle3ZlcnNpb259LSV7Z2NjX3JlbGVhc2V9KSIvJyBnY2MvdmVyc2lvbi5jCkBAIC0x NTc5LDYgKzE1ODMsMTkgQEAgZmkKICVkb2MgcnBtLmRvYy9jaGFuZ2Vsb2dzL2xpYm11ZGZsYXAv Q2hhbmdlTG9nKgogCiAlY2hhbmdlbG9nCisqIFRodSBNYXkgIDMgMjAwNyBKYWt1YiBKZWxpbmVr IDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMi0xMgorLSB1cGRhdGUgZnJvbSBnY2MtNF8xLWJyYW5j aCAoLXIxMjQxMDA6MTI0MzY1KQorICAtIFBScyBjKysvMzAwMTYsIGMrKy8zMDIyMSwgbWlkZGxl LWVuZC8zMDc2MSwgdGFyZ2V0LzE4OTg5LAorCXRhcmdldC8yODY3NSwgdHJlZS1vcHRpbWl6YXRp b24vMjk0NDYsIHRyZWUtb3B0aW1pemF0aW9uLzMxNjk4CistIGFkZCBkZWZhdWx0LmNzcyBKYXZh IHJlc291cmNlIChUb20gRml0enNpbW1vbnMsICMyMzczMDQpCistIGRvbid0IGluY3JlYXNlIGFs aWdubWVudCBvZiBUTFMgdmFyaWFibGVzIHRvbyBtdWNoCistIF9fZG9fZ2xvYmFsX2R0b3JzX2F1 eCBoYXJkZW5pbmcKKy0gYWxsb3cgbGliZ29tcCB0byBiZSBkbG9wZW5lZCAoUFIgbGliZ29tcC8y ODQ4MikKKy0gc3BlZWQgdXAgYW5kIGltcHJvdmUgbGliZ29tcCBvbXBfZ2V0X251bV9wcm9jcyBh bmQgZHluYW1pYworICB0aHJlYWQgY291bnQgY29tcHV0YXRpb24KKy0gR09NUF9DUFVfQUZGSU5J VFkgc3VwcG9ydAorLSBmaXggSUNFIG9uIEMrKyB0eXBlIHBhc3NlZCBhcyBPcGVuTVAgY2xhdXNl IHZhcmlhYmxlIChQUiBjKysvMzE3NDgpCisKICogV2VkIEFwciAyNSAyMDA3IEpha3ViIEplbGlu ZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4yLTExCiAtIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJh bmNoICgtcjEyMzk1MToxMjQxMDApCiAgIC0gUFJzIG1pZGRsZS1lbmQvMzE0NDgsIHByZXByb2Nl c3Nvci8zMDQ2OCwgdGFyZ2V0LzI4NjIzLCB0YXJnZXQvMzE2NDEKCmRpZmYgLS1naXQgYS9zb3Vy Y2VzIGIvc291cmNlcwppbmRleCAyNDlkMmNiLi42M2I1MmMyIDEwMDY0NAotLS0gYS9zb3VyY2Vz CisrKyBiL3NvdXJjZXMKQEAgLTEgKzEgQEAKLTBhMmMyYWFmMThjMzIyN2NmYjRhNmY4NWVjNjg4 NDdkICBnY2MtNC4xLjItMjAwNzA0MjQudGFyLmJ6MgorZjU5MmYyZTRkNTc3OWI5NzBhNzA1MGE4 NjQxMzFlNjkgIGdjYy00LjEuMi0yMDA3MDUwMy50YXIuYnoyCg==