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: Takao Fujiwara To: git-commits@fedoraproject.org Subject: [rpms/ibus] autotool: Fixed several bugs Date: Sun, 31 May 2026 02:06:37 GMT Message-ID: <178019319757.1.10465207315218249536.rpms-ibus-3818b86c29bd@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: 3818b86c29bd09b4beecebbaf0e26ef8ae9ff36b ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvaWJ1cwogICAgICAgICAgICBCcmFuY2ggOiBhdXRvdG9vbAogICAgICAgICAg ICBDb21taXQgOiAzODE4Yjg2YzI5YmQwOWI0YmVlY2ViYmFmMGUyNmVmOGFlOWZmMzZiCiAgICAg ICAgICAgIEF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgogICAg ICAgICAgICBEYXRlICAgOiAyMDE3LTA5LTE0VDE5OjEwOjI2KzA5OjAwCiAgICAgICAgICAgIFN0 YXRzICA6ICs1MDc0Ly0xODg3IGluIDQgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRw czovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy8zODE4Yjg2YzI5YmQwOWI0YmVl Y2ViYmFmMGUyNmVmOGFlOWZmMzZiP2JyYW5jaD1hdXRvdG9vbAoKICAgICAgICAgICAgTG9nOgog ICAgICAgICAgICBGaXhlZCBzZXZlcmFsIGJ1Z3MKCi0gRml4IHNjYWxpbmcgZmFjdG9yLCBtb3Vz ZSBldmVudHMgb24gc3dpdGNoZXIsIGMtcy11IG9uIGltLWlidXMsCiAgcHJvcGVydHlwYW5lbCBw b3NpdGlvbiBhbmQgbWVudQotIEFkZCBpYnVzLXBvcnRhbAotIE1vdmUgaWJ1cy1lbW9qaS1kaWFs b2cudmFwaSBpbiB0aGUgYnVpbGQKLSBGaXhlZCBzb21lIFNFR1ZzICMxNDA2Njk5ICMxNDMyMjUy CgotLS0KZGlmZiAtLWdpdCBhL2lidXMtMTM4NTM0OS1zZWd2LWJ1cy1wcm94eS5wYXRjaCBiL2li dXMtMTM4NTM0OS1zZWd2LWJ1cy1wcm94eS5wYXRjaAppbmRleCBlYzkzOTBkLi5hOWMxYTczIDEw MDY0NAotLS0gYS9pYnVzLTEzODUzNDktc2Vndi1idXMtcHJveHkucGF0Y2gKKysrIGIvaWJ1cy0x Mzg1MzQ5LXNlZ3YtYnVzLXByb3h5LnBhdGNoCkBAIC0xLDE4ICsxLDIwIEBACi1Gcm9tIGRkYjdj YjMwZjEwYjFkMWU0MGFlNGI2YzQ2NTgzOTQxNTQ1NDEyZDggTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tIDhlYTBkM2YyNTA3OGM2MTJiNGIxNmM5NTVjMWMwYzE3ZTc2NGQ4YzUgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci1EYXRlOiBXZWQsIDI2IEp1bCAyMDE3IDIxOjQxOjEzICswOTAwCitEYXRlOiBUaHUs IDI3IEp1bCAyMDE3IDE4OjU2OjAxICswOTAwCiBTdWJqZWN0OiBbUEFUQ0hdIGJ1czogRml4IFNF R1YgaW4gYnVzX3BhbmVsX3Byb3h5X2ZvY3VzX2luKCkKIAogQlVHPXJoYnojMTM0OTE0OAogQlVH PXJoYnojMTM4NTM0OQogQlVHPXJoYnojMTM1MDI5MQorQlVHPXJoYnojMTQwNjY5OQorQlVHPXJo YnojMTQzMjI1MgogLS0tCi0gYnVzL2RidXNpbXBsLmMgfCAxNCArKysrKysrKysrKy0tLQorIGJ1 cy9kYnVzaW1wbC5jIHwgMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0K ICBidXMvaWJ1c2ltcGwuYyB8IDIyICsrKysrKysrKysrKysrKysrKystLS0KLSAyIGZpbGVzIGNo YW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisgMiBmaWxlcyBjaGFuZ2Vk LCA1MSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYnVzL2Ri dXNpbXBsLmMgYi9idXMvZGJ1c2ltcGwuYwotaW5kZXggYjU0ZWY4MS4uNGE2MDM5MSAxMDA2NDQK K2luZGV4IGI1NGVmODEuLmU0ZGQ4NjggMTAwNjQ0CiAtLS0gYS9idXMvZGJ1c2ltcGwuYwogKysr IGIvYnVzL2RidXNpbXBsLmMKIEBAIC0yLDcgKzIsOCBAQApAQCAtMjUsNyArMjcsODAgQEAgaW5k ZXggYjU0ZWY4MS4uNGE2MDM5MSAxMDA2NDQKICAgKgogICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtMTQ2 NCwxMyArMTQ2NSwyMCBAQCBidXNfZGJ1c19pbXBsX2Nvbm5lY3Rpb25fZmlsdGVyX2NiIChHREJ1 c0Nvbm5lY3Rpb24gKmRidXNfY29ubmVjdGlvbiwKK0BAIC0zNDQsNiArMzQ1LDggQEAgYnVzX25h bWVfc2VydmljZV9zZXRfcHJpbWFyeV9vd25lciAoQnVzTmFtZVNlcnZpY2UgICAgICpzZXJ2aWNl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c0Nvbm5lY3Rpb25Pd25l ciAqb3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzREJ1c0lt cGwgICAgICAgICpkYnVzKQorIHsKKysgICAgZ2Jvb2xlYW4gaGFzX29sZF9vd25lciA9IEZBTFNF OworKworICAgICBnX2Fzc2VydCAoc2VydmljZSAhPSBOVUxMKTsKKyAgICAgZ19hc3NlcnQgKG93 bmVyICE9IE5VTEwpOworICAgICBnX2Fzc2VydCAoZGJ1cyAhPSBOVUxMKTsKK0BAIC0zNTEsNiAr MzU0LDEzIEBAIGJ1c19uYW1lX3NlcnZpY2Vfc2V0X3ByaW1hcnlfb3duZXIgKEJ1c05hbWVTZXJ2 aWNlICAgICAqc2VydmljZSwKKyAgICAgQnVzQ29ubmVjdGlvbk93bmVyICpvbGQgPSBzZXJ2aWNl LT5vd25lcnMgIT0gTlVMTCA/CisgICAgICAgICAgICAgKEJ1c0Nvbm5lY3Rpb25Pd25lciAqKXNl cnZpY2UtPm93bmVycy0+ZGF0YSA6IE5VTEw7CisgCisrICAgIC8qIHJoYnojMTQzMjI1MiBJZiBi dXNfY29ubmVjdGlvbl9nZXRfdW5pcXVlX25hbWUoKSA9PSBOVUxMLAorKyAgICAgKiAiSGVsbG8i IG1ldGhvZCBpcyBub3QgcmVjZWl2ZWQgeWV0LgorKyAgICAgKi8KKysgICAgaWYgKG9sZCAhPSBO VUxMICYmIGJ1c19jb25uZWN0aW9uX2dldF91bmlxdWVfbmFtZSAob2xkLT5jb25uKSAhPSBOVUxM KSB7CisrICAgICAgICBoYXNfb2xkX293bmVyID0gVFJVRTsKKysgICAgfQorKworICAgICBpZiAo b2xkICE9IE5VTEwpIHsKKyAgICAgICAgIGdfc2lnbmFsX2VtaXQgKGRidXMsCisgICAgICAgICAg ICAgICAgICAgICAgICBkYnVzX3NpZ25hbHNbTkFNRV9MT1NUXSwKK0BAIC0zNzAsNyArMzgwLDgg QEAgYnVzX25hbWVfc2VydmljZV9zZXRfcHJpbWFyeV9vd25lciAoQnVzTmFtZVNlcnZpY2UgICAg ICpzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICBv d25lci0+Y29ubiwKKyAgICAgICAgICAgICAgICAgICAgc2VydmljZS0+bmFtZSwKKy0gICAgICAg ICAgICAgICAgICAgb2xkICE9IE5VTEwgPyBidXNfY29ubmVjdGlvbl9nZXRfdW5pcXVlX25hbWUg KG9sZC0+Y29ubikgOiAiIiwKKysgICAgICAgICAgICAgICAgICAgaGFzX29sZF9vd25lciA/IGJ1 c19jb25uZWN0aW9uX2dldF91bmlxdWVfbmFtZSAob2xkLT5jb25uKSA6CisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgIGJ1c19jb25uZWN0aW9uX2dl dF91bmlxdWVfbmFtZSAob3duZXItPmNvbm4pKTsKKyAKKyAgICAgaWYgKG9sZCAhPSBOVUxMICYm IG9sZC0+ZG9fbm90X3F1ZXVlICE9IDApIHsKK0BAIC00MjcsNiArNDM4LDcgQEAgYnVzX25hbWVf c2VydmljZV9yZW1vdmVfb3duZXIgKEJ1c05hbWVTZXJ2aWNlICAgICAqc2VydmljZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzREJ1c0ltcGwgICAgICAgICpkYnVzKQorIHsK KyAgICAgR1NMaXN0ICpvd25lcnM7CisrICAgIGdib29sZWFuIGhhc19uZXdfb3duZXIgPSBGQUxT RTsKKyAKKyAgICAgZ19hc3NlcnQgKHNlcnZpY2UgIT0gTlVMTCk7CisgICAgIGdfYXNzZXJ0IChv d25lciAhPSBOVUxMKTsKK0BAIC00MzksNiArNDUxLDEzIEBAIGJ1c19uYW1lX3NlcnZpY2VfcmVt b3ZlX293bmVyIChCdXNOYW1lU2VydmljZSAgICAgKnNlcnZpY2UsCisgICAgICAgICBCdXNDb25u ZWN0aW9uT3duZXIgKl9uZXcgPSBOVUxMOworICAgICAgICAgaWYgKG93bmVycy0+bmV4dCAhPSBO VUxMKSB7CisgICAgICAgICAgICAgX25ldyA9IChCdXNDb25uZWN0aW9uT3duZXIgKilvd25lcnMt Pm5leHQtPmRhdGE7CisrICAgICAgICAgICAgLyogcmhieiMxNDA2Njk5IElmIGJ1c19jb25uZWN0 aW9uX2dldF91bmlxdWVfbmFtZSgpID09IE5VTEwsCisrICAgICAgICAgICAgICogIkhlbGxvIiBt ZXRob2QgaXMgbm90IHJlY2VpdmVkIHlldC4KKysgICAgICAgICAgICAgKi8KKysgICAgICAgICAg ICBpZiAoX25ldyAhPSBOVUxMICYmCisrICAgICAgICAgICAgICAgIGJ1c19jb25uZWN0aW9uX2dl dF91bmlxdWVfbmFtZSAoX25ldy0+Y29ubikgIT0gTlVMTCkgeworKyAgICAgICAgICAgICAgICBo YXNfbmV3X293bmVyID0gVFJVRTsKKysgICAgICAgICAgICB9CisgICAgICAgICB9CisgCisgICAg ICAgICBpZiAoZGJ1cyAhPSBOVUxMKSB7CitAQCAtNDQ3LDcgKzQ2Niw3IEBAIGJ1c19uYW1lX3Nl cnZpY2VfcmVtb3ZlX293bmVyIChCdXNOYW1lU2VydmljZSAgICAgKnNlcnZpY2UsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25l ci0+Y29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLT5uYW1lKTsKKy0g ICAgICAgICAgICBpZiAoX25ldyAhPSBOVUxMKSB7CisrICAgICAgICAgICAgaWYgKGhhc19uZXdf b3duZXIpIHsKKyAgICAgICAgICAgICAgICAgZ19zaWduYWxfZW1pdCAoZGJ1cywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGJ1c19zaWduYWxzW05BTUVfQUNRVUlSRURdLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorQEAgLTQ2MCw3ICs0NzksNyBAQCBidXNf bmFtZV9zZXJ2aWNlX3JlbW92ZV9vd25lciAoQnVzTmFtZVNlcnZpY2UgICAgICpzZXJ2aWNlLAor ICAgICAgICAgICAgICAgICAgICAgX25ldyAhPSBOVUxMID8gX25ldy0+Y29ubiA6IE5VTEwsCisg ICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAg YnVzX2Nvbm5lY3Rpb25fZ2V0X3VuaXF1ZV9uYW1lIChvd25lci0+Y29ubiksCistICAgICAgICAg ICAgICAgICAgICBfbmV3ICE9IE5VTEwgPyBidXNfY29ubmVjdGlvbl9nZXRfdW5pcXVlX25hbWUg KF9uZXctPmNvbm4pIDogIiIpOworKyAgICAgICAgICAgICAgICAgICAgaGFzX25ld19vd25lciA/ IGJ1c19jb25uZWN0aW9uX2dldF91bmlxdWVfbmFtZSAoX25ldy0+Y29ubikgOiAiIik7CisgCisg ICAgICAgICB9CisgICAgIH0KK0BAIC0xNDY0LDEzICsxNDgzLDIwIEBAIGJ1c19kYnVzX2ltcGxf Y29ubmVjdGlvbl9maWx0ZXJfY2IgKEdEQnVzQ29ubmVjdGlvbiAqZGJ1c19jb25uZWN0aW9uLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgaW5j b21pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAg ICAgICB1c2VyX2RhdGEpCiAgewoKZGlmZiAtLWdpdCBhL2lidXMtSEVBRC5wYXRjaCBiL2lidXMt SEVBRC5wYXRjaAppbmRleCBhMDViMGE0Li40MWQ0YWQ2IDEwMDY0NAotLS0gYS9pYnVzLUhFQUQu cGF0Y2gKKysrIGIvaWJ1cy1IRUFELnBhdGNoCkBAIC03NjYsODY2ICs3NjYsNDQxIEBAIGluZGV4 IDVhZTZlODMuLmZhODAyNzIgMTAwNjQ0CiAtLSAKIDIuOS4zCiAKLUZyb20gMjY4NmI0NmIyOWUx MmI0NDA4MDMzNTY4YTg5ODk0OWE3MzFiNzkzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTkg SnVsIDIwMTcgMjE6MDI6MjAgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gSW50ZWdyYXRlIGN1c3Rv bSByZW5kZXJpbmcgdG8gdXNlIEhhcmZCdXp6IGdseXBoIGluZm8KLQotSUJ1c0ZvbnRTZXQgb2Zm ZXJzIEZjRm9udFNldCwgZ2x5cGggaW5mbyB3aXRoIEhhcmZCdXp6IGFuZCByZW5kZXJpbmcKLW9u IENhaXJvIGNvbnRleHQuCi1DdXJyZW50IFBhbmdvIGNoYW5nZXMgZm9udHMgYnkgZW1vamkgdmFy aWFudHMgYW5kIGRyYXdzIHRoZSBzZXBhcmF0ZWQKLWdseXBocyBbMV0gYnV0IGFjdHVhbGx5IHRo ZSBlbW9qaSBjaGFyYWN0ZXJzIHdpdGggdmFyaWFudHMgY2FuIGJlIGRyYXduCi1hcyBvbmUgZ2x5 cGggc28gdGhpcyBjbGFzcyAgbWFuYWdlcyBGb250Y29uZmlnIGZvbnRzZXRzIHRvIHNlbGVjdCBh IGZvbnQsCi1IYXJmQnV6eiB0byBnZXQgZ2x5cGhzIGZvciBlbW9qaSB2YXJpYW50cywgQ2Fpcm8g dG8gZHJhdyBnbHlwaHMuCi1OZWVkIGNvbmZpZ3VyZSAtLWVuYWJsZS1oYXJmYnV6ei1mb3ItZW1v amkgb3B0aW9uIHRvIGVuYWJsZSB0aGlzIGZlYXR1cmUuCi0KLVsxXTogaHR0cHM6Ly9idWd6aWxs YS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MDY2OQotICAgICBodHRwczovL2J1Z3ppbGxh Lmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgxMTIzCitGcm9tIDZhMzMwMWRiODVlNzdlMDY1 MmY3ZTAwODk0Y2NlNDkzYjZhOTQyZjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBY aWFuZyBGYW4gPHNmYW54aWFuZ0BnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEwIEF1ZyAyMDE3IDEx OjI0OjM5ICswOTAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTRdIGNsaWVudC9ndGsyOiBpbmNsdWRl IHRoZSBzY2FsaW5nIGZhY3RvcgorCitTY2FsaW5nIGZhY3Rvciwgd2hpY2ggZXhpc3RzIGZvciBI aURQSSBkaXNwbGF5cywgbmVlZHMgdG8gYmUgaW5jbHVkZWQgaW4KK3RoZSBjYWxjdWxhdGlvbiBv ZiBjdXJzb3IgbG9jYXRpb24uIFRoaXMgZG9lcyBub3QgYWZmZWN0IGRldmljZXMgd2l0aG91dAor YSBIaURQSSBkaXNwbGF5LgorCitDYW5kaWRhdGUgd2luZG93cyB3b3VsZCBiZSBtaXNwbGFjZWQg dG8gc21hbGxlciBjb29yZGluYXRlcyB3aXRob3V0IHRoaXMKK3BhdGNoLgorCitCVUc9aHR0cHM6 Ly9naXRodWIuY29tL2lidXMvaWJ1cy9pc3N1ZXMvMTgwNgorCitSZXZpZXcgVVJMOiBodHRwczov L2NvZGVyZXZpZXcuYXBwc3BvdC5jb20vMzI4MjUwMDQzCisKK1BhdGNoIGZyb20gWGlhbmcgRmFu IDxzZmFueGlhbmdAZ21haWwuY29tPi4KIC0tLQotIC4uLi92YWxhfS9JQnVzRW1vamlEaWFsb2ct MS4wLm1ldGFkYXRhICAgICAgICAgICAgIHwgICAwCi0gYmluZGluZ3MvdmFsYS9JQnVzRm9udFNl dC0xLjAubWV0YWRhdGEgICAgICAgICAgICAgfCAgIDEgKwotIGJpbmRpbmdzL3ZhbGEvTWFrZWZp bGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjQ0ICsrKysrLQotIC4uLi92YWxhfS9p YnVzLWVtb2ppLWRpYWxvZy0xLjAuZGVwcyAgICAgICAgICAgICAgIHwgICAwCi0gYmluZGluZ3Mv dmFsYS9pYnVzLWZvbnRzZXQtMS4wLmRlcHMgICAgICAgICAgICAgICAgfCAgIDEgKwotIGNvbmZp Z3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI5ICsKLSBw by9QT1RGSUxFUy5za2lwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSAr Ci0gdWkvZ3RrMy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx MzEgKystCi0gdWkvZ3RrMy9lbW9qaWVyLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAxMTkgKystCi0gdWkvZ3RrMy9pYnVzZW1vamlkaWFsb2cuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMjYgKwotIHVpL2d0azMvaWJ1c2ZvbnRzZXQuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgOTIzICsrKysrKysrKysrKysrKysrKysrKwotIHVpL2d0azMvaWJ1c2Zv bnRzZXQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzAyICsrKysrKysKLSAxMiBm aWxlcyBjaGFuZ2VkLCAxNjc1IGluc2VydGlvbnMoKyksIDEwNiBkZWxldGlvbnMoLSkKLSByZW5h bWUge3VpL2d0azMgPT4gYmluZGluZ3MvdmFsYX0vSUJ1c0Vtb2ppRGlhbG9nLTEuMC5tZXRhZGF0 YSAoMTAwJSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYmluZGluZ3MvdmFsYS9JQnVzRm9udFNldC0x LjAubWV0YWRhdGEKLSByZW5hbWUge3VpL2d0azMgPT4gYmluZGluZ3MvdmFsYX0vaWJ1cy1lbW9q aS1kaWFsb2ctMS4wLmRlcHMgKDEwMCUpCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJpbmRpbmdzL3Zh bGEvaWJ1cy1mb250c2V0LTEuMC5kZXBzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHVpL2d0azMvaWJ1 c2ZvbnRzZXQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCB1aS9ndGszL2lidXNmb250c2V0LmgKKyBj bGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMgfCAyMSArKysrKysrKysrKysrKysrKysrKysKKyAx IGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKQogCi1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9J QnVzRW1vamlEaWFsb2ctMS4wLm1ldGFkYXRhIGIvYmluZGluZ3MvdmFsYS9JQnVzRW1vamlEaWFs b2ctMS4wLm1ldGFkYXRhCi1zaW1pbGFyaXR5IGluZGV4IDEwMCUKLXJlbmFtZSBmcm9tIHVpL2d0 azMvSUJ1c0Vtb2ppRGlhbG9nLTEuMC5tZXRhZGF0YQotcmVuYW1lIHRvIGJpbmRpbmdzL3ZhbGEv SUJ1c0Vtb2ppRGlhbG9nLTEuMC5tZXRhZGF0YQotZGlmZiAtLWdpdCBhL2JpbmRpbmdzL3ZhbGEv SUJ1c0ZvbnRTZXQtMS4wLm1ldGFkYXRhIGIvYmluZGluZ3MvdmFsYS9JQnVzRm9udFNldC0xLjAu bWV0YWRhdGEKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43MzAzN2Q3Ci0t LS0gL2Rldi9udWxsCi0rKysgYi9iaW5kaW5ncy92YWxhL0lCdXNGb250U2V0LTEuMC5tZXRhZGF0 YQotQEAgLTAsMCArMSBAQAotK0lCdXNGb250U2V0IGNoZWFkZXJfZmlsZW5hbWU9ImlidXNmb250 c2V0LmgiCi1kaWZmIC0tZ2l0IGEvYmluZGluZ3MvdmFsYS9NYWtlZmlsZS5hbSBiL2JpbmRpbmdz L3ZhbGEvTWFrZWZpbGUuYW0KLWluZGV4IDRlMzRhZmMuLjI2MWUxZjMgMTAwNjQ0Ci0tLS0gYS9i aW5kaW5ncy92YWxhL01ha2VmaWxlLmFtCi0rKysgYi9iaW5kaW5ncy92YWxhL01ha2VmaWxlLmFt Ci1AQCAtMyw3ICszLDggQEAKLSAjIGlidXMgLSBUaGUgSW5wdXQgQnVzCi0gIwotICMgQ29weXJp Z2h0IChjKSAyMDA3LTIwMTYgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0t IyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNiBSZWQgSGF0LCBJbmMuCi0rIyBDb3B5cmlnaHQgKGMp IDIwMTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rIyBDb3B5 cmlnaHQgKGMpIDIwMDctMjAxNyBSZWQgSGF0LCBJbmMuCi0gIwotICMgVGhpcyBsaWJyYXJ5IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICMgbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAg LTIyLDE1ICsyMyw0NyBAQAotIAotIC1pbmNsdWRlICQoVkFQSUdFTl9NQUtFRklMRSkKK2RpZmYg LS1naXQgYS9jbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMgYi9jbGllbnQvZ3RrMi9pYnVzaW1j b250ZXh0LmMKK2luZGV4IDBkZjAwNjIwLi40MWM3YTNhZiAxMDA2NDQKKy0tLSBhL2NsaWVudC9n dGsyL2lidXNpbWNvbnRleHQuYworKysrIGIvY2xpZW50L2d0azIvaWJ1c2ltY29udGV4dC5jCitA QCAtOTk5LDYgKzk5OSwyNCBAQCBpYnVzX2ltX2NvbnRleHRfc2V0X2NsaWVudF93aW5kb3cgKEd0 a0lNQ29udGV4dCAqY29udGV4dCwgR2RrV2luZG93ICpjbGllbnQpCisgICAgICAgICBndGtfaW1f Y29udGV4dF9zZXRfY2xpZW50X3dpbmRvdyAoaWJ1c2ltY29udGV4dC0+c2xhdmUsIGNsaWVudCk7 CisgfQogIAotK2xpYmlidXMgPSAkKHRvcF9idWlsZGRpcikvc3JjL2xpYmlidXMtQElCVVNfQVBJ X1ZFUlNJT05ALmxhCisrc3RhdGljIHZvaWQKKytfc2V0X3JlY3Rfc2NhbGVfZmFjdG9yX3dpdGhf d2luZG93IChHZGtSZWN0YW5nbGUgKmFyZWEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR2RrV2luZG93ICAgICp3aW5kb3cpCisreworKyNpZiBHVEtfQ0hFQ0tfVkVSU0lP TiAoMywgMTAsIDApCisrICAgIGludCBzY2FsZV9mYWN0b3I7CiArCi0rbm9pbnN0X0xUTElCUkFS SUVTID0KLStub2luc3RfREFUQSA9Ci0rSU5UUk9TUEVDVElPTl9HSVJTID0KLStnaXJkaXIgPSAk KGRhdGFkaXIpL2dpci0xLjAKKysgICAgZ19hc3NlcnQgKGFyZWEpOworKyAgICBnX2Fzc2VydCAo R0RLX0lTX1dJTkRPVyAod2luZG93KSk7CiArCi0rQU1fQ1BQRkxBR1MgPSBcCi0rICAgIC1JJCh0 b3Bfc3JjZGlyKS9zcmMgXAotKyAgICAtSSQodG9wX2J1aWxkZGlyKS9zcmMgXAotKyAgICAtaW5j bHVkZSAkKENPTkZJR19IRUFERVIpIFwKLSsgICAgJChOVUxMKQotK0FNX0NGTEFHUyA9IFwKLSsg ICAgLURHX0xPR19ET01BSU49XCJJQlVTXCIgXAotKyAgICAtRFBLR0RBVEFESVI9XCIkKHBrZ2Rh dGFkaXIpXCIgXAotKyAgICAtRElCVVNfRElTQUJMRV9ERVBSRUNBVEVEIFwKLSsgICAgLVduby11 bnVzZWQtdmFyaWFibGUgXAotKyAgICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlIFwKLSsg ICAgLVduby11bnVzZWQtZnVuY3Rpb24gXAotKyAgICAkKE5VTEwpCi0rQU1fVkFMQUZMQUdTID0g XAotKyAgICAtLXZhcGlkaXI9JChidWlsZGRpcikgXAotKyAgICAtLXZhcGlkaXI9JChzcmNkaXIp IFwKLSsgICAgLS1wa2c9cG9zaXggXAotKyAgICAtLXBrZz1ndGsrLTMuMCBcCi0rICAgIC0tcGtn PWdkay14MTEtMy4wIFwKLSsgICAgLS1wa2c9aWJ1cy0xLjAgXAotKyAgICAtLXBrZz1jb25maWcg XAotKyAgICAtLXBrZz14aSBcCi0rICAgIC0tdGFyZ2V0LWdsaWI9IiQoVkFMQV9UQVJHRVRfR0xJ Ql9WRVJTSU9OKSIgXAotKyAgICAkKE5VTEwpCisrICAgIHNjYWxlX2ZhY3RvciA9IGdka193aW5k b3dfZ2V0X3NjYWxlX2ZhY3RvciAod2luZG93KTsKKysgICAgYXJlYS0+eCAqPSBzY2FsZV9mYWN0 b3I7CisrICAgIGFyZWEtPnkgKj0gc2NhbGVfZmFjdG9yOworKyAgICBhcmVhLT53aWR0aCAqPSBz Y2FsZV9mYWN0b3I7CisrICAgIGFyZWEtPmhlaWdodCAqPSBzY2FsZV9mYWN0b3I7CisrI2VuZGlm CisrfQogKwotIHZhcGlfZGVwcyA9IFwKLSAJSUJ1cy0xLjAubWV0YWRhdGEgXAotLQlJQnVzLTEu MC1jdXN0b20udmFsYSBcCi0gCSQodG9wX2J1aWxkZGlyKS9zcmMvSUJ1cy0xLjAuZ2lyIFwKLSAJ JChOVUxMKQotIAotIGlidXMtMS4wLnZhcGk6ICQodmFwaV9kZXBzKQotIAotLVZBUElHRU5fVkFQ SVMgPSBpYnVzLTEuMC52YXBpCi0raWJ1c192YXBpID0gaWJ1cy0xLjAudmFwaQotK1ZBUElHRU5f VkFQSVMgPSAkKGlidXNfdmFwaSkKLSAKLSBpYnVzXzFfMF92YXBpX0RFUFMgPSBnaW8tMi4wCi0g aWJ1c18xXzBfdmFwaV9NRVRBREFUQURJUlMgPSAkKHNyY2RpcikKLUBAIC00MCwxOCArNzMsMjAx IEBAIGlidXNfMV8wX3ZhcGlfRklMRVMgPSBcCi0gCSQoTlVMTCkKKyBzdGF0aWMgZ2Jvb2xlYW4K KyBfc2V0X2N1cnNvcl9sb2NhdGlvbl9pbnRlcm5hbCAoSUJ1c0lNQ29udGV4dCAqaWJ1c2ltY29u dGV4dCkKKyB7CitAQCAtMTAyNCw2ICsxMDQyLDggQEAgX3NldF9jdXJzb3JfbG9jYXRpb25faW50 ZXJuYWwgKElCdXNJTUNvbnRleHQgKmlidXNpbWNvbnRleHQpCisgICAgICAgICAgICAgd2luZG93 ID0gcGFyZW50OworICAgICAgICAgfQogIAotIHZhcGlkaXIgPSAkKGRhdGFkaXIpL3ZhbGEvdmFw aQotLXZhcGlfREFUQSA9ICQoVkFQSUdFTl9WQVBJUykgJChWQVBJR0VOX1ZBUElTOi52YXBpPS5k ZXBzKQotK3ZhcGlfREFUQSA9ICQoaWJ1c192YXBpKSAkKGlidXNfdmFwaToudmFwaT0uZGVwcykK KysgICAgICAgIF9zZXRfcmVjdF9zY2FsZV9mYWN0b3Jfd2l0aF93aW5kb3cgKCZhcmVhLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1c2ltY29udGV4dC0+ Y2xpZW50X3dpbmRvdyk7CisgICAgICAgICBpYnVzX2lucHV0X2NvbnRleHRfc2V0X2N1cnNvcl9s b2NhdGlvbl9yZWxhdGl2ZSAoCisgICAgICAgICAgICAgaWJ1c2ltY29udGV4dC0+aWJ1c2NvbnRl eHQsCisgICAgICAgICAgICAgYXJlYS54LAorQEAgLTEwNDksNiArMTA2OSw3IEBAIF9zZXRfY3Vy c29yX2xvY2F0aW9uX2ludGVybmFsIChJQnVzSU1Db250ZXh0ICppYnVzaW1jb250ZXh0KQorICAg ICBnZGtfd2luZG93X2dldF9yb290X2Nvb3JkcyAoaWJ1c2ltY29udGV4dC0+Y2xpZW50X3dpbmRv dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEueCwgYXJlYS55LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZWEueCwgJmFyZWEueSk7CisrICAgIF9z ZXRfcmVjdF9zY2FsZV9mYWN0b3Jfd2l0aF93aW5kb3cgKCZhcmVhLCBpYnVzaW1jb250ZXh0LT5j bGllbnRfd2luZG93KTsKKyAgICAgaWJ1c19pbnB1dF9jb250ZXh0X3NldF9jdXJzb3JfbG9jYXRp b24gKGlidXNpbWNvbnRleHQtPmlidXNjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXJlYS54LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXJlYS55LAorLS0gCisyLjEzLjQKKworRnJvbSBjMWI5M2Y5MzNm NWNiZDc0ZjNlMDY1NzVkMjZlZDc0MzJhNTQyMGZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogTWFyaW8gQm9kZW1hbm4gPG1hcmlvLmJvZGVtYW5uQGdtYWlsLmNvbT4KK0RhdGU6IFR1 ZSwgMTUgQXVnIDIwMTcgMTI6MTA6NTYgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSCAwMi8xNF0gVHlw byBmaXgKKworQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvcHVsbC8xOTM5CisKK1Jl dmlldyBVUkw6IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8zMjcwODAwNDMKKworUGF0 Y2ggZnJvbSBNYXJpbyBCb2RlbWFubiA8bWFyaW8uYm9kZW1hbm5AZ21haWwuY29tPi4KKy0tLQor IHVpL2d0azMvaWJ1cy1lbW9qaS43LmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9pYnVzLWVtb2pp LjcuaW4gYi91aS9ndGszL2lidXMtZW1vamkuNy5pbgoraW5kZXggNGVlODYzNjQuLmQ1ZWFlMzEw IDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9pYnVzLWVtb2ppLjcuaW4KKysrKyBiL3VpL2d0azMvaWJ1 cy1lbW9qaS43LmluCitAQCAtMTUsNyArMTUsNyBAQAorIC5TSCAiREVTQ1JJUFRJT04iCiAgCi0t TUFJTlRBSU5FUkNMRUFORklMRVMgPSAkKFZBUElHRU5fVkFQSVMpCi0tRElTVENMRUFORklMRVMg PSAkKFZBUElHRU5fVkFQSVMpCi0rTUFJTlRBSU5FUkNMRUFORklMRVMgPSAkKGlidXNfdmFwaSkK LStESVNUQ0xFQU5GSUxFUyA9ICQoaWJ1c192YXBpKQorIC5QUAorLUlCdXMgRW1vamllciBwcm92 aWRlcyBhIEdVSSB0byBzZWxlY3QgYW4gZW1vamkgYnkgdHlwaW5nIGFuIGVtb2ppIGFubm90YWlv bgorK0lCdXMgRW1vamllciBwcm92aWRlcyBhIEdVSSB0byBzZWxlY3QgYW4gZW1vamkgYnkgdHlw aW5nIGFuIGVtb2ppIGFubm90YXRpb24KKyBvciBjaG9vc2luZyBhIGNoYXJhY3RlciB3aXRoIG1v dXNlIGNsaWNrIGFuZCBpdCdzIGRlc2lnbmVkIHRvIHdvcmsgYXMKKyBhbiBleHRlbmRlZCBJQnVz IGxvb2t1cCB3aW5kb3cgdXNpbmcgU3BhY2UsIEVudGVyLCBhbmQgQXJyb3cga2V5cy4KKyBUaGUg dGV4dCBlbnRyeSBhY2NlcHRzIGFuIGVtb2ppIGFubm90YXRpb24gb3IgVW5pY29kZSBwb2ludHMu CistLSAKKzIuMTMuNAorCitGcm9tIDIwM2EzZGY1YTIzOWQ2NDRjZjQyYjdiYWMwM2EyNjhlYjVi YWJmYzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgTGFyc3NvbiA8 YWxleGxAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMzAgQXVnIDIwMTcgMTE6Mzg6MDkgKzA5MDAK K1N1YmplY3Q6IFtQQVRDSCAwMy8xNF0gSW5pdGlhbCB2ZXJzaW9uIG9mIGlidXMgcG9ydGFsCisK K1RoaXMgYWRkcyBhIGRidXMgc2VydmljZSBjYWxsZWQgb3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5J QnVzIG9uIHRoZQorc2Vzc2lvbiBidXMuIEl0IGlzIGEgdmVyeSBsaW1pdGVkIHNlcnZpY2UgdGhh dCBvbmx5IGltcGxlbWVudHMKK0NyZWF0ZUlucHV0Q29udGV4dCBhbmQgdGhlIElucHV0Q29udGV4 dCBpbnRlcmZhY2UgKGFuZCBTZXJ2aWNlLkRlc3Ryb3kKK2ZvciBsaWZldGltZSBhY2Nlc3MpLgor CitJdCB1c2VzIGdkYnVzIGNvZGUgZ2VuZXJhdGlvbiBmb3IgZGVtYXJzaGFsbGluZyB0aGUgbWV0 aG9kIGNhbGxzIHdoaWNoCittZWFucyBpdCB3aWxsIHZlcmlmeSB0aGF0IGFsbCBhcmd1bWVudHMg aGF2ZSB0aGUgcmlnaHQgdHlwZS4KKworQWRkaXRpb25hbGx5IGFsbCBtZXRob2QgY2FsbHMgdG8g dGhlIGlucHV0IGNvbnRleHQgb2JqZWN0IGhhdmUgdG8gYmUKK2Zyb20gdGhlIGNsaWVudCB0aGF0 IGNyZWF0ZWQgaXQsIHNvIGVhY2ggY2xpZW50IGlzIGlzb2xhdGVkLgorCitCVUc9aHR0cHM6Ly9n aXRodWIuY29tL2ZsYXRwYWsvZmxhdHBhay9pc3N1ZXMvNjc1CitSPVNoYXduLlAuSHVhbmdAZ21h aWwuY29tCisKK1JldmlldyBVUkw6IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8zMjYz NTAwNDMKKworUGF0Y2ggZnJvbSBBbGV4YW5kZXIgTGFyc3NvbiA8YWxleGxAcmVkaGF0LmNvbT4u CistLS0KKyBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKworIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg NSArLQorIHBvcnRhbC9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5 NSArKysrCisgcG9ydGFsL29yZy5mcmVlZGVza3RvcC5JQnVzLlBvcnRhbC54bWwgICAgICAgIHwg MTMyICsrKysrCisgcG9ydGFsL29yZy5mcmVlZGVza3RvcC5wb3J0YWwuSUJ1cy5zZXJ2aWNlLmlu IHwgICAzICsKKyBwb3J0YWwvcG9ydGFsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCA2OTggKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvaWJ1c3NoYXJlLmggICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTQgKworIDcgZmlsZXMgY2hhbmdlZCwgOTQ3IGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgcG9ydGFsL01h a2VmaWxlLmFtCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHBvcnRhbC9vcmcuZnJlZWRlc2t0b3AuSUJ1 cy5Qb3J0YWwueG1sCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHBvcnRhbC9vcmcuZnJlZWRlc2t0b3Au cG9ydGFsLklCdXMuc2VydmljZS5pbgorIGNyZWF0ZSBtb2RlIDEwMDY0NCBwb3J0YWwvcG9ydGFs LmMKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IGY3MDNk NGM2Li5jOGU4MDJkYSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5h bQorQEAgLTUxLDYgKzUxLDcgQEAgU1VCRElSUyA9IFwKKyAJdXRpbCBcCisgCWNvbmYgXAorIAlj bGllbnQgXAorKwlwb3J0YWwgXAorIAlkYXRhIFwKKyAJbTQgXAorIAlwbyBcCitkaWZmIC0tZ2l0 IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjYjQ4YWQ0Yy4uMTQ1NTZhM2Eg MTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE1Myw3 ICsxNTMsNyBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhHT0JKRUNUMiwgWworICAgICBnb2JqZWN0LTIu MCA+PSBnbGliX3JlcXVpcmVkX3ZlcnNpb24KKyBdKQorIFBLR19DSEVDS19NT0RVTEVTKEdJTzIs IFsKKy0gICAgZ2lvLTIuMCA+PSBnbGliX3JlcXVpcmVkX3ZlcnNpb24KKysgICAgZ2lvLTIuMCBn aW8tdW5peC0yLjAgPj0gZ2xpYl9yZXF1aXJlZF92ZXJzaW9uCisgXSkKKyBQS0dfQ0hFQ0tfTU9E VUxFUyhHVEhSRUFEMiwgWworICAgICBndGhyZWFkLTIuMCA+PSBnbGliX3JlcXVpcmVkX3ZlcnNp b24KK0BAIC02NjAsNiArNjYwLDggQEAgUEtHX0NIRUNLX01PRFVMRVMoSVNPQ09ERVMsIFsKKyBJ U09DT0RFU19QUkVGSVg9YCRQS0dfQ09ORklHIGlzby1jb2RlcyAtLXZhcmlhYmxlPXByZWZpeGAK KyBBQ19TVUJTVChJU09DT0RFU19QUkVGSVgpCiAgCi0tRVhUUkFfRElTVCA9IFwKLS0JJChWQVBJ R0VOX1ZBUElTKSBcCi0tCUlCdXMtMS4wLm1ldGFkYXRhIFwKLS0JSUJ1cy0xLjAtY3VzdG9tLnZh bGEgXAotLQlpYnVzLTEuMC5kZXBzIFwKLS0JY29uZmlnLnZhcGkgXAotLQl4aS52YXBpIFwKLS0J JChOVUxMKQotK0VYVFJBX0RJU1QgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgICAgJChpYnVzX3ZhcGkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICAgIElCdXMtMS4wLm1ldGFkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBJ QnVzLTEuMC1jdXN0b20udmFsYSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgSUJ1c0Vt b2ppRGlhbG9nLTEuMC5tZXRhZGF0YSAgICAgICAgICAgICAgICBcCi0rICAgIElCdXNGb250U2V0 LTEuMC5tZXRhZGF0YSAgICAgICAgICAgICAgICAgICAgXAotKyAgICBpYnVzLTEuMC5kZXBzICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgaWJ1cy1lbW9qaS1kaWFsb2ctMS4w LmRlcHMgICAgICAgICAgICAgICAgICBcCi0rICAgIGlidXMtZm9udHNldC0xLjAuZGVwcyAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgICBjb25maWcudmFwaSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgeGkudmFwaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0rICAgICQoTlVMTCkKLSsKLStpZiBFTkFCTEVfRU1PSklfRElDVAotK0FNX1ZB TEFGTEFHUyArPSAtLWRlZmluZT1FTU9KSV9ESUNUCi0rCi0rbGliaWJ1c19lbW9qaV9kaWFsb2cg PSBsaWJpYnVzLWVtb2ppLWRpYWxvZy0xLjAubGEKLStub2luc3RfTFRMSUJSQVJJRVMgKz0gJChs aWJpYnVzX2Vtb2ppX2RpYWxvZykKLSsKLStsaWJpYnVzX2Vtb2ppX2RpYWxvZ18xXzBfbGFfU09V UkNFUyA9ICAgICAgICAgICBcCi0rICAgIGNhbmRpZGF0ZWFyZWEudmFsYSAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICBlbW9qaWVyLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgaWNvbndpZGdldC52YWxhICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgIHBhbmdvLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgICBzZXBhcmF0b3IudmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAg JChOVUxMKQotK2xpYmlidXNfZW1vamlfZGlhbG9nXzFfMF9sYV9DRkxBR1MgPSAgICAgICAgICAg IFwKLSsgICAgJChBTV9DRkxBR1MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICAgIEBHTElCMl9DRkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBA R0lPMl9DRkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgQEdUSFJF QUQyX0NGTEFHU0AgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIEBHVEszX0NGTEFH U0AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBAWDExX0NGTEFHU0AgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgLURCSU5ESVI9XCIkKGJpbmRpcilc IiAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICQoTlVMTCkKLStsaWJpYnVzX2Vtb2ppX2Rp YWxvZ18xXzBfbGFfTElCQUREID0gICAgICAgICAgICBcCi0rICAgIEBHTElCMl9MSUJTQCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBAR0lPMl9MSUJTQCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgQEdUSFJFQUQyX0xJQlNAICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICAgIEBHVEszX0xJQlNAICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICBAWDExX0xJQlNAICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgLWxYaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgICQobGliaWJ1cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgICAkKE5VTEwpCi0rbGliaWJ1c19lbW9qaV9kaWFsb2dfMV8wX2xhX0xERkxBR1MgPSAgICAg ICAgICAgXAotKyAgICAtbm8tdW5kZWZpbmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgICAgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4ICJpYnVzXy4qIiAgICAgICAgICAgICBcCi0r ICAgICQoTlVMTCkKLSsKLSsjIHBlciBmaWxlIHNldHRpbmcgaXMgbmVlZGVkIHRvIGF2b2lkIGNv bmZsaWN0aW5nIExOX1MgYnkgY2FsbGluZwotKyMgZHVwbGljYXRlZCB0aW1lcyBpbiBwYXJhbGxl bCBtYWtlCi0rJS52YWxhOiAkKGlidXNfdmFwaSkKLSsJaWYgdGVzdCAhIC1mICRAIDsgdGhlbiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rCSAgICAkKExO X1MpICQodG9wX3NyY2RpcikvdWkvZ3RrMy8kQCAuOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKwlmaTsKLStpYnVzZm9udHNldC5jOiAkKGlidXNfdmFwaSkKLSsJaWYgdGVzdCAhIC1m ICRAIDsgdGhlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rCSAgICAkKExOX1MpICQodG9wX3NyY2RpcikvdWkvZ3RrMy8kQCAuOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKwlmaTsKLStpYnVzZm9udHNldC5oOiAkKGlidXNfdmFwaSkKLSsJ aWYgdGVzdCAhIC1mICRAIDsgdGhlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0rCSAgICAkKExOX1MpICQodG9wX3NyY2RpcikvdWkvZ3RrMy8kQCAuOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKwlmaTsKLSsKKytBQ19TVUJTVChbR0RCVVNf Q09ERUdFTl0sIFtgJFBLR19DT05GSUcgLS12YXJpYWJsZSBnZGJ1c19jb2RlZ2VuIGdpby0yLjBg XSkKKysKKyAjIE9VVFBVVCBmaWxlcworIEFDX0NPTkZJR19GSUxFUyhbIHBvL01ha2VmaWxlLmlu CisgTWFrZWZpbGUKK0BAIC02NzQsNiArNjc2LDcgQEAgc3JjL01ha2VmaWxlCisgc3JjL2lidXN2 ZXJzaW9uLmgKKyBzcmMvdGVzdHMvTWFrZWZpbGUKKyBidXMvTWFrZWZpbGUKKytwb3J0YWwvTWFr ZWZpbGUKKyBlbmdpbmUvTWFrZWZpbGUKKyB1dGlsL01ha2VmaWxlCisgdXRpbC9JTWRraXQvTWFr ZWZpbGUKK2RpZmYgLS1naXQgYS9wb3J0YWwvTWFrZWZpbGUuYW0gYi9wb3J0YWwvTWFrZWZpbGUu YW0KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uOTU0ZmM1OTEKKy0tLSAv ZGV2L251bGwKKysrKyBiL3BvcnRhbC9NYWtlZmlsZS5hbQorQEAgLTAsMCArMSw5NSBAQAorKyMg dmltOnNldCBub2V0IHRzPTQ6CisrIworKyMgaWJ1cyAtIFRoZSBJbnB1dCBCdXMKKysjCisrIyBD b3B5cmlnaHQgKGMpIDIwMDctMjAxMyBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNv bT4KKysjIENvcHlyaWdodCAoYykgMjAwNy0yMDEzIFJlZCBIYXQsIEluYy4KKysjCisrIyBUaGlz IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y CisrIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCisrIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIKKysjIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgbGlicmFyeSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VCisrIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7 IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysjIEZvdW5kYXRpb24sIEluYy4s IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEK KysjIFVTQQorKworK05VTEwgPQogKwotK01BSU5UQUlORVJDTEVBTkZJTEVTICs9ICQobGliaWJ1 c19lbW9qaV9kaWFsb2dfMV8wX2xhX1NPVVJDRVMpCi0rRElTVENMRUFORklMRVMgKz0gJChsaWJp YnVzX2Vtb2ppX2RpYWxvZ18xXzBfbGFfU09VUkNFUykKKytsaWJpYnVzID0gJCh0b3BfYnVpbGRk aXIpL3NyYy9saWJpYnVzLUBJQlVTX0FQSV9WRVJTSU9OQC5sYQogKwotK2lmIEhBVkVfSU5UUk9T UEVDVElPTgotKy1pbmNsdWRlICQoSU5UUk9TUEVDVElPTl9NQUtFRklMRSkKLStJTlRST1NQRUNU SU9OX1NDQU5ORVJfQVJHUyA9Ci0rSU5UUk9TUEVDVElPTl9DT01QSUxFUl9BUkdTID0gICAgICAg ICAgICAgICAgICAgXAotKyAgICAtLWluY2x1ZGVkaXI9JChzcmNkaXIpICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgLS1pbmNsdWRlZGlyPS4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgIC0taW5jbHVkZWRpcj0kKHRvcF9zcmNkaXIpL3NyYyAgICAgICAgICAgICAgXAot KyAgICAkKE5VTEwpCisrQU1fQ1BQRkxBR1MgPSBcCisrCS1JJCh0b3Bfc3JjZGlyKS9zcmMgICBc CisrCS1JJCh0b3BfYnVpbGRkaXIpL3NyYyBcCisrCSQoTlVMTCkKICsKKytBTV9DRkxBR1MgPSBc CisrCUBHTElCMl9DRkxBR1NAIFwKKysJQEdJTzJfQ0ZMQUdTQCBcCisrCUBHVEhSRUFEMl9DRkxB R1NAIFwKKysJLURHX0xPR19ET01BSU49XCJJQlVTXCIgXAorKwktRFBLR0RBVEFESVI9XCIkKHBr Z2RhdGFkaXIpXCIgXAorKwktRExJQkVYRUNESVI9XCIkKGxpYmV4ZWNkaXIpXCIgXAorKwktREJJ TkRJUj1cIkBiaW5kaXJAXCIgXAorKwktRElCVVNfRElTQUJMRV9ERVBSRUNBVEVEIFwKKysJJChO VUxMKQorK0FNX0xEQUREID0gXAorKwlAR09CSkVDVDJfTElCU0AgXAorKwlAR0xJQjJfTElCU0Ag XAorKwlAR0lPMl9MSUJTQCBcCisrCUBHVEhSRUFEMl9MSUJTQCBcCisrCSQobGliaWJ1cykgXAor KwkkKE5VTEwpCiArCi0rZW1vamlfaGVhZGVycyA9ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKyAgICAkKHRvcF9zcmNkaXIpL3VpL2d0azMvaWJ1c2Vtb2ppZGlhbG9nLmggICAg IFwKLSsgICAgJChOVUxMKQorK2lidXNfZGJ1c19idWlsdF9zb3VyY2VzID0gaWJ1cy1wb3J0YWwt ZGJ1cy5jIGlidXMtcG9ydGFsLWRidXMuaAorK0JVSUxUX1NPVVJDRVMgPSAkKGlidXNfZGJ1c19i dWlsdF9zb3VyY2VzKQogKwotK0lCdXNFbW9qaURpYWxvZy0xLjAuZ2lyOiAkKGxpYmlidXNfZW1v amlfZGlhbG9nKSBNYWtlZmlsZQotK0lCdXNFbW9qaURpYWxvZ18xXzBfZ2lyX1NDQU5ORVJGTEFH UyA9ICAgICAgICAgIFwKLSsgICAgLS1wa2ctZXhwb3J0PWlidXMtMS4wICAgICAgICAgICAgICAg ICAgICAgICBcCi0rICAgIC0tcGtnPWd0aystMy4wICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgICAkKElCVVNfR0lSX1NDQU5ORVJGTEFHUykgICAgICAgICAgICAgICAgICAgIFwK LSsgICAgJChOVUxMKQotK0lCdXNFbW9qaURpYWxvZ18xXzBfZ2lyX0lOQ0xVREVTID0gR3RrLTMu MCBHTGliLTIuMCBHT2JqZWN0LTIuMCBHaW8tMi4wCi0rSUJ1c0Vtb2ppRGlhbG9nXzFfMF9naXJf TElCUyA9ICQobGliaWJ1c19lbW9qaV9kaWFsb2cpICQobGliaWJ1cykKLStJQnVzRW1vamlEaWFs b2dfMV8wX2dpcl9GSUxFUyA9ICQoZW1vamlfaGVhZGVycykKLStJQnVzRW1vamlEaWFsb2dfMV8w X2dpcl9DRkxBR1MgPSAgICAgICAgICAgICAgICBcCi0rICAgIC1JJChzcmNkaXIpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAtSSQoYnVpbGRkaXIpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICAgLUkkKHRvcF9zcmNkaXIpL3NyYyAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICAgICQoTlVMTCkKKytsaWJleGVjX1BST0dSQU1TID0gaWJ1cy1w b3J0YWwKKytpYnVzX3BvcnRhbF9ERVBFTkRFTkNJRVMgPSBcCisrCSQobGliaWJ1cykgXAorKwkk KE5VTEwpCisraWJ1c19wb3J0YWxfU09VUkNFUyA9IFwKKysJcG9ydGFsLmMgXAorKwkkKGlidXNf ZGJ1c19idWlsdF9zb3VyY2VzKSBcCisrCSQoTlVMTCkKKytpYnVzX3BvcnRhbF9DRkxBR1MgPSBc CisrCSQoQU1fQ0ZMQUdTKSBcCisrCSQoTlVMTCkKKytpYnVzX3BvcnRhbF9MREFERCA9IFwKKysJ JChBTV9MREFERCkgXAorKwkkKE5VTEwpCiArCi0raWJ1c19lbW9qaV9kaWFsb2dfZ2lyID0gSUJ1 c0Vtb2ppRGlhbG9nLTEuMC5naXIKLStJTlRST1NQRUNUSU9OX0dJUlMgKz0gJChpYnVzX2Vtb2pp X2RpYWxvZ19naXIpCi0rbm9pbnN0X0RBVEEgKz0gJChpYnVzX2Vtb2ppX2RpYWxvZ19naXIpCi0r RVhUUkFfRElTVCArPSAkKGlidXNfZW1vamlfZGlhbG9nX2dpcikKLStNQUlOVEFJTkVSQ0xFQU5G SUxFUyArPSAkKGlidXNfZW1vamlfZGlhbG9nX2dpcikKLStESVNUQ0xFQU5GSUxFUyArPSAkKGli dXNfZW1vamlfZGlhbG9nX2dpcikKKytFWFRSQV9ESVNUID0gXAorKwkkKE5VTEwpCiArCi0raWJ1 cy1lbW9qaS1kaWFsb2ctMS4wLnZhcGk6ICQoaWJ1c19lbW9qaV9kaWFsb2dfZ2lyKSBJQnVzRW1v amlEaWFsb2ctMS4wLm1ldGFkYXRhCi0raWJ1c19lbW9qaV9kaWFsb2dfdmFwaSA9IGlidXMtZW1v amktZGlhbG9nLTEuMC52YXBpCi0raWJ1c19lbW9qaV9kaWFsb2dfMV8wX3ZhcGlfREVQUyA9IGd0 aystMy4wIGdpby0yLjAKLStpYnVzX2Vtb2ppX2RpYWxvZ18xXzBfdmFwaV9NRVRBREFUQURJUlMg PSAkKHNyY2RpcikKLStpYnVzX2Vtb2ppX2RpYWxvZ18xXzBfdmFwaV9GSUxFUyA9IElCdXNFbW9q aURpYWxvZy0xLjAuZ2lyCi0rVkFQSUdFTl9WQVBJUyArPSAkKGlidXNfZW1vamlfZGlhbG9nX3Zh cGkpCi0rbm9pbnN0X0RBVEEgKz0gJChpYnVzX2Vtb2ppX2RpYWxvZ192YXBpKQotK0VYVFJBX0RJ U1QgKz0gJChpYnVzX2Vtb2ppX2RpYWxvZ192YXBpKQotK01BSU5UQUlORVJDTEVBTkZJTEVTICs9 ICQoaWJ1c19lbW9qaV9kaWFsb2dfdmFwaSkKLStESVNUQ0xFQU5GSUxFUyArPSAkKGlidXNfZW1v amlfZGlhbG9nX3ZhcGkpCisrQ0xFQU5GSUxFUyA9IFwKKysJJChOVUxMKQogKwotK2VuZGlmCi0r I2VuZCBvZiBIQVZFX0lOVFJPU1BFQ1RJT04KKyskKGxpYmlidXMpOgorKwkkKE1BS0UpIC1DICQo dG9wX2J1aWxkZGlyKS9zcmMKICsKKytkYnVzc2VydmljZV9pbl9maWxlcyA9IG9yZy5mcmVlZGVz a3RvcC5wb3J0YWwuSUJ1cy5zZXJ2aWNlLmluCisrZGJ1c3NlcnZpY2VfREFUQSA9ICQoZGJ1c3Nl cnZpY2VfaW5fZmlsZXM6LnNlcnZpY2UuaW49LnNlcnZpY2UpCisrZGJ1c3NlcnZpY2VkaXI9JHtk YXRhZGlyfS9kYnVzLTEvc2VydmljZXMKICsKLStpZiBFTkFCTEVfSEFSRkJVWlpfRk9SX0VNT0pJ Ci0rbGliaWJ1c19mb250c2V0ID0gbGliaWJ1cy1mb250c2V0LTEuMC5sYQotK25vaW5zdF9MVExJ QlJBUklFUyArPSAkKGxpYmlidXNfZm9udHNldCkKKytvcmcuZnJlZWRlc2t0b3AucG9ydGFsLklC dXMuc2VydmljZTogb3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5JQnVzLnNlcnZpY2UuaW4KKysJJChB TV9WX0dFTikgc2VkIC1lICJzfFxAbGliZXhlY2RpclxAfCQobGliZXhlY2Rpcil8IiAgJDwgPiAk QC50bXAgJiYgbXYgJEAudG1wICRACiArCi0rbGliaWJ1c19mb250c2V0XzFfMF9sYV9TT1VSQ0VT ID0gICAgICAgICAgICAgICAgXAotKyAgICBpYnVzZm9udHNldC5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgJChOVUxMKQotK2xpYmlidXNfZm9udHNldF8xXzBfbGFfQ0ZM QUdTID0gICAgICAgICAgICAgICAgIFwKLSsgICAgJChBTV9DRkxBR1MpICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICAgIEBDQUlST19DRkxBR1NAICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICBARk9OVENPTkZJR19DRkxBR1NAICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgQEdMSUIyX0NGTEFHU0AgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgIEBIQVJGQlVaWl9DRkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgICBAUEFOR09fQ0ZMQUdTQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAg JChOVUxMKQotK2xpYmlidXNfZm9udHNldF8xXzBfbGFfTElCQUREID0gICAgICAgICAgICAgICAg IFwKLSsgICAgQENBSVJPX0xJQlNAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICAgIEBGT05UQ09ORklHX0xJQlNAICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBA R0xJQjJfTElCU0AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgQEhBUkZC VVpaX0xJQlNAICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIEBQQU5HT19MSUJT QCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAkKE5VTEwpCi0rbGliaWJ1 c19mb250c2V0XzFfMF9sYV9MREZMQUdTID0gICAgICAgICAgICAgICAgXAotKyAgICAtbm8tdW5k ZWZpbmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgLWV4cG9ydC1zeW1i b2xzLXJlZ2V4ICJpYnVzXy4qIiAgICAgICAgICAgICBcCi0rICAgICQoTlVMTCkKKyskKGlidXNf ZGJ1c19idWlsdF9zb3VyY2VzKSA6IG9yZy5mcmVlZGVza3RvcC5JQnVzLlBvcnRhbC54bWwKKysJ JChBTV9WX0dFTikgJChHREJVU19DT0RFR0VOKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisrCQktLWludGVyZmFjZS1wcmVmaXggb3JnLmZyZWVkZXNrdG9wLklCdXMuICAgICAgICBcCisr CQktLWMtbmFtZXNwYWNlIElCdXNEYnVzICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrCQkt LWdlbmVyYXRlLWMtY29kZSAkKGJ1aWxkZGlyKS9pYnVzLXBvcnRhbC1kYnVzICBcCisrCQkkXiBc CisrCQkkKE5VTEwpCiArCi0rTUFJTlRBSU5FUkNMRUFORklMRVMgKz0gaWJ1c2ZvbnRzZXQuYyBp YnVzZm9udHNldC5oCi0rRElTVENMRUFORklMRVMgKz0gaWJ1c2ZvbnRzZXQuYyBpYnVzZm9udHNl dC5oCisrRVhUUkFfRElTVCArPSAkKGRidXNzZXJ2aWNlX2luX2ZpbGVzKQorK0NMRUFORklMRVMg Kz0gJChkYnVzc2VydmljZV9EQVRBKQogKwotK2lmIEhBVkVfSU5UUk9TUEVDVElPTgotK0lCdXNG b250U2V0LTEuMC5naXI6ICQobGliaWJ1c19mb250c2V0KSBNYWtlZmlsZQotK0lCdXNGb250U2V0 XzFfMF9naXJfU0NBTk5FUkZMQUdTID0gICAgICAgICAgICAgIFwKLSsgICAgLS1wa2ctZXhwb3J0 PWlidXMtMS4wICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIC0tcGtnPWNhaXJvICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAtLXBrZz1mb250Y29uZmlnICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgLS1wa2c9aGFyZmJ1enogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICAgICQoSUJVU19HSVJfU0NBTk5FUkZMQUdTKSAgICAgICAg ICAgICAgICAgICAgXAotKyAgICAkKE5VTEwpCi0rSUJ1c0ZvbnRTZXRfMV8wX2dpcl9MSUJTID0g JChsaWJpYnVzX2ZvbnRzZXQpICQobGliaWJ1cykKLStJQnVzRm9udFNldF8xXzBfZ2lyX0lOQ0xV REVTID0gY2Fpcm8tMS4wIEdMaWItMi4wIEdPYmplY3QtMi4wCi0rSUJ1c0ZvbnRTZXRfMV8wX2dp cl9GSUxFUyA9ICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBpYnVzZm9udHNldC5oICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgJChOVUxMKQotK0lCdXNGb250U2V0XzFf MF9naXJfQ0ZMQUdTID0gICAgICAgICAgICAgICAgICAgIFwKLSsgICAgLUkkKHNyY2RpcikgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIC1JJChidWlsZGRpcikgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAtSSQodG9wX3NyY2Rpcikvc3JjICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICAgJChOVUxMKQotK2lidXNfZm9udHNldF9naXIgPSBJ QnVzRm9udFNldC0xLjAuZ2lyCi0rSU5UUk9TUEVDVElPTl9HSVJTICs9ICQoaWJ1c19mb250c2V0 X2dpcikKLStub2luc3RfREFUQSArPSAkKGlidXNfZm9udHNldF9naXIpCi0rRVhUUkFfRElTVCAr PSAkKGlidXNfZm9udHNldF9naXIpCi0rTUFJTlRBSU5FUkNMRUFORklMRVMgKz0gJChpYnVzX2Zv bnRzZXRfZ2lyKQotK0RJU1RDTEVBTkZJTEVTICs9ICQoaWJ1c19mb250c2V0X2dpcikKLSsKLStp YnVzLWZvbnRzZXQtMS4wLnZhcGk6ICQoaWJ1c19mb250c2V0X2dpcikgSUJ1c0ZvbnRTZXQtMS4w Lm1ldGFkYXRhCi0raWJ1c19mb250c2V0X3ZhcGkgPSBpYnVzLWZvbnRzZXQtMS4wLnZhcGkKLStp YnVzX2ZvbnRzZXRfMV8wX3ZhcGlfTUVUQURBVEFESVJTID0gJChzcmNkaXIpCi0raWJ1c19mb250 c2V0XzFfMF92YXBpX0ZJTEVTID0gSUJ1c0ZvbnRTZXQtMS4wLmdpcgotK1ZBUElHRU5fVkFQSVMg Kz0gJChpYnVzX2ZvbnRzZXRfdmFwaSkKLStub2luc3RfREFUQSArPSAkKGlidXNfZm9udHNldF92 YXBpKQotK0VYVFJBX0RJU1QgKz0gJChpYnVzX2ZvbnRzZXRfdmFwaSkKLStNQUlOVEFJTkVSQ0xF QU5GSUxFUyArPSAkKGlidXNfZm9udHNldF92YXBpKQotK0RJU1RDTEVBTkZJTEVTICs9ICQoaWJ1 c19mb250c2V0X3ZhcGkpCi0rCi0rZW5kaWYKLSsjIGVuZCBvZiBIQVZFX0lOVFJPU1BFQ1RJT04K LStlbmRpZgotKyMgZW5kIG9mIEVOQUJMRV9IQVJGQlVaWl9GT1JfRU1PSkkKLStlbmRpZgotKyMg ZW5kIG9mIEVOQUJMRV9FTU9KSV9ESUNUCi0gCi0gLWluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9naXQu bWsKLWRpZmYgLS1naXQgYS91aS9ndGszL2lidXMtZW1vamktZGlhbG9nLTEuMC5kZXBzIGIvYmlu ZGluZ3MvdmFsYS9pYnVzLWVtb2ppLWRpYWxvZy0xLjAuZGVwcwotc2ltaWxhcml0eSBpbmRleCAx MDAlCi1yZW5hbWUgZnJvbSB1aS9ndGszL2lidXMtZW1vamktZGlhbG9nLTEuMC5kZXBzCi1yZW5h bWUgdG8gYmluZGluZ3MvdmFsYS9pYnVzLWVtb2ppLWRpYWxvZy0xLjAuZGVwcwotZGlmZiAtLWdp dCBhL2JpbmRpbmdzL3ZhbGEvaWJ1cy1mb250c2V0LTEuMC5kZXBzIGIvYmluZGluZ3MvdmFsYS9p YnVzLWZvbnRzZXQtMS4wLmRlcHMKKystaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2dpdC5taworZGlm ZiAtLWdpdCBhL3BvcnRhbC9vcmcuZnJlZWRlc2t0b3AuSUJ1cy5Qb3J0YWwueG1sIGIvcG9ydGFs L29yZy5mcmVlZGVza3RvcC5JQnVzLlBvcnRhbC54bWwKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCAwMDAwMDAwLi4xMjlmZTE2CitpbmRleCAwMDAwMDAwMC4uYWZjZTRkYWEKIC0tLSAvZGV2 L251bGwKLSsrKyBiL2JpbmRpbmdzL3ZhbGEvaWJ1cy1mb250c2V0LTEuMC5kZXBzCi1AQCAtMCww ICsxIEBACi0rY2Fpcm8KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMK LWluZGV4IGNiNDhhZDQuLmQyYWEyMjIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBi L2NvbmZpZ3VyZS5hYwotQEAgLTY1Myw2ICs2NTMsMzQgQEAgaHR0cHM6Ly9naXRodWIuY29tL2Z1 aml3YXJhdC9jbGRyLWVtb2ppLWFubm90YXRpb24pCi0gICAgIGVuYWJsZV9lbW9qaV9kaWN0PSJ5 ZXMgKGVuYWJsZWQsIHVzZSAtLWRpc2FibGUtZW1vamktZGljdCB0byBkaXNhYmxlKSIKLSBmaQot IAotK0FDX0FSR19FTkFCTEUoaGFyZmJ1enotZm9yLWVtb2ppLAotKyAgICBBU19IRUxQX1NUUklO RyhbLS1lbmFibGUtaGFyZmJ1enotZm9yLWVtb2ppXSwKLSsgICAgICAgICAgICAgICAgICAgW0Vu YWJsZSBIYXJCdXp6IHRvIGRyYXcgZW1vamkgY2hhcmFjdGVycy4KLSsgICAgICAgICAgICAgICAg ICAgIEN1cnJlbnQgUGFuZ28gaGFzIGEgcHJvYmxlbSB0byBkcmF3IGVtb2ppIHZhcmlhbnRzIGFu ZAotKyAgICAgICAgICAgICAgICAgICAgdGhpcyB3YXkgZW5hYmxlcyB0byB1c2UgSGFyZkJ1enog ZGlyZWN0bHkgaW4gR3RrTGFiZWwuXSksCi0rICAgIFtlbmFibGVfaGFyZmJ1enpfZm9yX2Vtb2pp PSRlbmFibGV2YWxdLAotKyAgICBbZW5hYmxlX2hhcmZidXp6X2Zvcl9lbW9qaT1ub10KLSspCi0r QU1fQ09ORElUSU9OQUwoW0VOQUJMRV9IQVJGQlVaWl9GT1JfRU1PSkldLAotKyAgICAgICAgICAg ICAgIFt0ZXN0IHgiJGVuYWJsZV9oYXJmYnV6el9mb3JfZW1vamkiID0geCJ5ZXMiXSkKLSsKLStp ZiB0ZXN0IHgiJGVuYWJsZV9oYXJmYnV6el9mb3JfZW1vamkiID0geCJ5ZXMiOyB0aGVuCi0rICAg IFBLR19DSEVDS19NT0RVTEVTKENBSVJPLCBbCi0rICAgICAgICBjYWlybwotKyAgICBdKQotKyAg ICBQS0dfQ0hFQ0tfTU9EVUxFUyhGT05UQ09ORklHLCBbCi0rICAgICAgICBmb250Y29uZmlnCi0r ICAgIF0pCi0rICAgIFBLR19DSEVDS19NT0RVTEVTKEhBUkZCVVpaLCBbCi0rICAgICAgICBoYXJm YnV6egotKyAgICBdKQotKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhQQU5HTywgWwotKyAgICAgICAg cGFuZ28KLSsgICAgXSkKLStlbHNlCi0rICAgIGVuYWJsZV9oYXJmYnV6el9mb3JfZW1vamk9Im5v IChkaXNhYmxlZCwgdXNlIC0tZW5hYmxlLWhhcmZidXp6LWZvci1lbW9qaSB0byBlbmFibGUpIgot K2ZpCi0rCi0gIyBDaGVjayBpc28tY29kZXMuCi0gUEtHX0NIRUNLX01PRFVMRVMoSVNPQ09ERVMs IFsKLSAgICAgaXNvLWNvZGVzCi1AQCAtNzQwLDYgKzc2OCw3IEBAIEJ1aWxkIG9wdGlvbnM6Ci0g ICBFbmFibGUgRW1vamkgZGljdCAgICAgICAgICAgICAkZW5hYmxlX2Vtb2ppX2RpY3QKLSAgIFVu aWNvZGUgRW1vamkgZGlyZWN0b3J5ICAgICAgICRVTklDT0RFX0VNT0pJX0RJUgotICAgQ0xEUiBh bm5vdGF0aW9uIGRpcmVjdG9yeSAgICAgJEVNT0pJX0FOTk9UQVRJT05fRElSCi0rICBFbmFibGUg SGFyZkJ1enogZm9yIEVtb2ppICAgICAkZW5hYmxlX2hhcmZidXp6X2Zvcl9lbW9qaQotICAgUnVu IHRlc3QgY2FzZXMgICAgICAgICAgICAgICAgJGVuYWJsZV90ZXN0cwotIF0pCi0gCi1kaWZmIC0t Z2l0IGEvcG8vUE9URklMRVMuc2tpcCBiL3BvL1BPVEZJTEVTLnNraXAKLWluZGV4IDcxOTAyMjEu LjEwYjg4MjkgMTAwNjQ0Ci0tLS0gYS9wby9QT1RGSUxFUy5za2lwCi0rKysgYi9wby9QT1RGSUxF Uy5za2lwCi1AQCAtMiw2ICsyLDExIEBACi0gIyBQbGVhc2Uga2VlcCB0aGlzIGZpbGUgaW4gYWxw aGFiZXRpY2FsIG9yZGVyLgotICMgRmlsZXMgdW5kZXIgdWkvZ3RrMi8gYXJlIG5vdCBzaGlwcGVk IGluIHRoZSBkaXN0cmlidXRpb24sIGJ1dCBrZXB0Ci0gIyBpbiB0aGUgZ2l0IHJlcG9zaXRvcnkg Zm9yIHJlZmVyZW5jZS4KLStiaW5kaW5ncy92YWxhL2NhbmRpZGF0ZWFyZWEuYwotK2JpbmRpbmdz L3ZhbGEvZW1vamllci5jCi0rYmluZGluZ3MvdmFsYS9pY29ud2lkZ2V0LmMKLStiaW5kaW5ncy92 YWxhL3BhbmdvLmMKLStiaW5kaW5ncy92YWxhL3NlcGFyYXRvci5jCi0gaWJ1cy9fY29uZmlnLnB5 Ci0gdG9vbHMvbWFpbi5jCi0gdWkvZ3RrMi9jYW5kaWRhdGVwYW5lbC5weQotZGlmZiAtLWdpdCBh L3VpL2d0azMvTWFrZWZpbGUuYW0gYi91aS9ndGszL01ha2VmaWxlLmFtCi1pbmRleCBjNzk2NDFh Li5jZDFlOWMyIDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9NYWtlZmlsZS5hbQotKysrIGIvdWkvZ3Rr My9NYWtlZmlsZS5hbQotQEAgLTgxLDEwICs4MSw2IEBAIEFNX1ZBTEFGTEFHUyA9IFwKLSAJLS10 YXJnZXQtZ2xpYj0iJChWQUxBX1RBUkdFVF9HTElCX1ZFUlNJT04pIiBcCi0gCSQoTlVMTCkKLSAK LS1NQUlOVEFJTkVSQ0xFQU5GSUxFUyA9Ci0tRElTVENMRUFORklMRVMgPQotLW5vaW5zdF9EQVRB ID0KLS0KLSBpZiBFTkFCTEVfTElCTk9USUZZCi0gQU1fQ0ZMQUdTICs9IFwKLSAJQExJQk5PVElG WV9DRkxBR1NAIFwKLUBAIC0xNTgsOSArMTU0LDEwIEBAIG1hbl9zZXZlbl9pbl9maWxlcyA9IGli dXMtZW1vamkuNy5pbgotIEVYVFJBX0RJU1QgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICQoZW1vamlfaGVhZGVycykgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgJChtYW5f c2V2ZW5faW5fZmlsZXMpICAgICAgICAgICAgICAgXAotLSAgICBJQnVzRW1vamlEaWFsb2ctMS4w Lm1ldGFkYXRhICAgICAgICBcCi0rICAgIGVtb2ppZXJhcHAudmFsYSAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgZ3RrcGFuZWwueG1sLmluICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBp YnVzLWVtb2ppLWRpYWxvZy0xLjAuZGVwcyAgICAgICAgICBcCi0rICAgIGlidXNmb250c2V0LmMg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgaWJ1c2ZvbnRzZXQuaCAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICBub3RpZmljYXRpb24taXRlbS54bWwgICAgICAgICAgICAgICBcCi0g ICAgIG5vdGlmaWNhdGlvbi13YXRjaGVyLnhtbCAgICAgICAgICAgIFwKLSAgICAgJChOVUxMKQot QEAgLTE2OCw5OCArMTY1LDcwIEBAIEVYVFJBX0RJU1QgPSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gaWYgRU5BQkxFX0VNT0pJX0RJQ1QKLSBBTV9WQUxBRkxBR1MgKz0gLS1kZWZpbmU9 RU1PSklfRElDVAotIAotLWxpYmlidXNfZW1vamlfZGlhbG9nID0gbGliaWJ1cy1lbW9qaS1kaWFs b2ctMS4wLmxhCi0tCi0tbm9pbnN0X0xUTElCUkFSSUVTID0gJChsaWJpYnVzX2Vtb2ppX2RpYWxv ZykKLS0KLS1saWJpYnVzX2Vtb2ppX2RpYWxvZ18xXzBfbGFfQ0ZMQUdTID0gJChBTV9DRkxBR1Mp Ci0tbGliaWJ1c19lbW9qaV9kaWFsb2dfMV8wX2xhX0xERkxBR1MgPSAgIFwKLS0gICAgLW5vLXVu ZGVmaW5lZCAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAtZXhwb3J0LXN5bWJvbHMtcmVn ZXggImlidXNfLioiICAgICBcCi0tICAgIC12ZXJzaW9uLWluZm8gQExUX1ZFUlNJT05fSU5GT0Ag ICAgIFwKLS0gICAgJChOVUxMKQotLWxpYmlidXNfZW1vamlfZGlhbG9nXzFfMF9sYV9TT1VSQ0VT ID0gICBcCi0tICAgIGNhbmRpZGF0ZWFyZWEudmFsYSAgICAgICAgICAgICAgICAgIFwKLS0gICAg ZW1vamllci52YWxhICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBpY29ud2lkZ2V0LnZh bGEgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIHBhbmdvLnZhbGEgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLS0gICAgc2VwYXJhdG9yLnZhbGEgICAgICAgICAgICAgICAgICAgICAgXAot LSAgICAkKE5VTEwpCi0tCi0gbGliZXhlY19QUk9HUkFNUyArPSBpYnVzLXVpLWVtb2ppZXIKLSAK LS1pYnVzX3VpX2Vtb2ppZXJfU09VUkNFUyA9ICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAg ICQobGliaWJ1c19lbW9qaV9kaWFsb2dfMV8wX2xhX1NPVVJDRVMpICAgICAgXAotK2lidXNfdWlf ZW1vamllcl9WQUxBU09VUkNFUyA9ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgZW1vamllcmFw cC52YWxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIGNhbmRpZGF0ZWFyZWEu dmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBlbW9qaWVyLnZhbGEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgaWNvbndpZGdldC52YWxhICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICAgIHBhbmdvLnZhbGEgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgICBzZXBhcmF0b3IudmFsYSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgICAgJChOVUxMKQotK2lidXNfdWlfZW1vamllcl9TT1VSQ0VTID0gICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICAgJChpYnVzX3VpX2Vtb2ppZXJfVkFMQVNPVVJDRVM6 LnZhbGE9LmMpICAgICBcCi0gICAgICQoTlVMTCkKLSAKLSBpYnVzX3VpX2Vtb2ppZXJfTERBREQg PSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICQoQU1fTERBREQpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAkKE5VTEwpCi0gCi0tLWluY2x1ZGUgJChJTlRS T1NQRUNUSU9OX01BS0VGSUxFKQotLUlOVFJPU1BFQ1RJT05fU0NBTk5FUl9BUkdTID0KLS1JTlRS T1NQRUNUSU9OX0NPTVBJTEVSX0FSR1MgPSAgICAgIFwKLS0gICAgLS1pbmNsdWRlZGlyPSQoc3Jj ZGlyKSAgICAgICAgIFwKLS0gICAgLS1pbmNsdWRlZGlyPS4gICAgICAgICAgICAgICAgIFwKLS0g ICAgLS1pbmNsdWRlZGlyPSQodG9wX3NyY2Rpcikvc3JjIFwKLS0gICAgJChOVUxMKQotLQotLWlm IEhBVkVfSU5UUk9TUEVDVElPTgotLWludHJvc3BlY3Rpb25fc291cmNlcyA9ICAgICAgICAgICAg ICAgIFwKLS0gICAgJChlbW9qaV9oZWFkZXJzKSAgICAgICAgICAgICAgICAgICBcCi0tICAgICQo TlVMTCkKLS1JQnVzRW1vamlEaWFsb2ctMS4wLmdpcjogJChsaWJpYnVzX2Vtb2ppX2RpYWxvZykg TWFrZWZpbGUKLS1JQnVzRW1vamlEaWFsb2dfMV8wX2dpcl9TQ0FOTkVSRkxBR1MgPSBcCi0tICAg IC0tcGtnLWV4cG9ydD1pYnVzLTEuMCAgICAgICAgICAgICAgXAotLSAgICAtLXBrZz1ndGsrLTMu MCAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgJChJQlVTX0dJUl9TQ0FOTkVSRkxBR1MpICAg ICAgICAgICBcCi0raWJ1c191aV9lbW9qaWVyX1ZBTEFGTEFHUyA9ICAgICAgICAgICAgICAgICAg ICAgXAotKyAgICAkKEFNX1ZBTEFGTEFHUykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgJChOVUxMKQotLUlCdXNFbW9qaURpYWxvZy0xLjAuZ2lyOiAkKGxpYmlidXNfZW1vamlf ZGlhbG9nKSBNYWtlZmlsZQotLUlCdXNFbW9qaURpYWxvZ18xXzBfZ2lyX0lOQ0xVREVTID0gR3Rr LTMuMCBHTGliLTIuMCBHT2JqZWN0LTIuMCBHaW8tMi4wCi0tSUJ1c0Vtb2ppRGlhbG9nXzFfMF9n aXJfTElCUyA9ICQobGliaWJ1c19lbW9qaV9kaWFsb2cpICQobGliaWJ1cykKLS1JQnVzRW1vamlE aWFsb2dfMV8wX2dpcl9GSUxFUyA9ICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgJChhZGRw cmVmaXggJChzcmNkaXIpLywkKGludHJvc3BlY3Rpb25fc291cmNlcykpIFwKLS0gICAgJChOVUxM KQotLUlCdXNFbW9qaURpYWxvZ18xXzBfZ2lyX0NGTEFHUyA9ICAgICAgIFwKLS0gICAgLURJQlVT X0NPTVBJTEFUSU9OICAgICAgICAgICAgICAgICBcCi0tICAgIC1JJChzcmNkaXIpICAgICAgICAg ICAgICAgICAgICAgICAgXAotLSAgICAtSSQoYnVpbGRkaXIpICAgICAgICAgICAgICAgICAgICAg IFwKLS0gICAgLUkkKHRvcF9zcmNkaXIpL3NyYyAgICAgICAgICAgICAgICBcCi0tICAgICQoTlVM TCkKLS1JTlRST1NQRUNUSU9OX0dJUlMgPSBJQnVzRW1vamlEaWFsb2ctMS4wLmdpcgotLQotLWdp cmRpciA9ICQoZGF0YWRpcikvZ2lyLTEuMAotLW5vaW5zdF9EQVRBICs9ICQoSU5UUk9TUEVDVElP Tl9HSVJTKQotLUNMRUFORklMRVMgKz0gJChJTlRST1NQRUNUSU9OX0dJUlMpCi0gCi0tdHlwZWxp YnNkaXIgPSAkKGxpYmRpcikvZ2lyZXBvc2l0b3J5LTEuMAotLW5vaW5zdF9EQVRBICs9ICQoSU5U Uk9TUEVDVElPTl9HSVJTOi5naXI9LnR5cGVsaWIpCi0tQ0xFQU5GSUxFUyArPSAkKElOVFJPU1BF Q1RJT05fR0lSUzouZ2lyPS50eXBlbGliKQotLQotLQotLWlmIEVOQUJMRV9WQVBJR0VOCi0tLWlu Y2x1ZGUgJChWQVBJR0VOX01BS0VGSUxFKQotKyMgVGhpcyBsaW5lIGFuZCBmb29fVkFMQVNPVVJD RVMgbGluZSBjYW4gZGVsZXRlIHRoZSBkdXBsaWNhdGVkIGVudHJpZXMKLSsjIG9mIGVtb2ppZXIu YzogZW1vamllci52YWxhCi0rZW1vamllcmFwcC5jOiAkKGlidXNfdWlfZW1vamllcl9WQUxBU09V UkNFUykKLSsJJChBTV9WX1ZBTEFDKSQoYW1fX2NkKSAkKHNyY2RpcikgJiYgJChWQUxBQykgJChB TV9WQUxBRkxBR1MpIFwKLSskKFZBTEFGTEFHUykgLUMgJChpYnVzX3VpX2Vtb2ppZXJfVkFMQVNP VVJDRVMpCi0rCSQoTlVMTCkKLSsjIG1ha2UgZGlzdCBjcmVhdGVzIC5jIGZpbGVzIGluIGEgZGlm ZmVyZW50IHNyY2RpcgotK2Vtb2ppZXJhcHAubzogJChzcmNkaXIpL2Vtb2ppZXJhcHAuYwotKwkk KEFNX1ZfQ0Mpc291cmNlPSckPCcgb2JqZWN0PSckQCcgbGlidG9vbD1ubyBcCi0rCURFUERJUj0k KERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgXAotKwkkKEFNX1ZfQ0Nfbm8pJChDT01Q SUxFKSAtYyAtbyAkQCAkPAotKwkkKE5VTEwpCi0gCi0taWJ1cy1lbW9qaS1kaWFsb2ctMS4wLnZh cGk6ICQoSU5UUk9TUEVDVElPTl9HSVJTKSBJQnVzRW1vamlEaWFsb2ctMS4wLm1ldGFkYXRhCi0r aWYgRU5BQkxFX0hBUkZCVVpaX0ZPUl9FTU9KSQotK2lidXNfdWlfZ3RrM19TT1VSQ0VTICs9ICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgaWJ1c2ZvbnRzZXQuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICAgICQoTlVMTCkKLSAKLS1WQVBJR0VOX1ZBUElTID0gaWJ1 cy1lbW9qaS1kaWFsb2ctMS4wLnZhcGkKLStpYnVzX3VpX2Vtb2ppZXJfU09VUkNFUyArPSAgICAg ICAgICAgICAgICAgICAgICBcCi0rICAgIGlidXNmb250c2V0LmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICAkKE5VTEwpCi0gCi0taWJ1c19lbW9qaV9kaWFsb2dfMV8wX3Zh cGlfREVQUyA9IGd0aystMy4wIGdpby0yLjAKLS1pYnVzX2Vtb2ppX2RpYWxvZ18xXzBfdmFwaV9N RVRBREFUQURJUlMgPSAkKHNyY2RpcikKLS1pYnVzX2Vtb2ppX2RpYWxvZ18xXzBfdmFwaV9GSUxF UyA9ICQoSU5UUk9TUEVDVElPTl9HSVJTKQotK0FNX0NGTEFHUyArPSBcCi0rICAgIEBDQUlST19D RkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBARk9OVENPTkZJR19D RkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgQEhBUkZCVVpaX0NGTEFHU0Ag ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICQoTlVMTCkKLSAKLS12YXBpZGlyID0g JChkYXRhZGlyKS92YWxhL3ZhcGkKLS1ub2luc3RfREFUQSArPSAkKFZBUElHRU5fVkFQSVMpICQo VkFQSUdFTl9WQVBJUzoudmFwaT0uZGVwcykKLStBTV9MREFERCArPSBcCi0rICAgIEBDQUlST19M SUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBARk9OVENPTkZJR19M SUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgQEhBUkZCVVpaX0xJQlNAICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICQoTlVMTCkKLSAKLS1NQUlOVEFJTkVS Q0xFQU5GSUxFUyArPSAkKFZBUElHRU5fVkFQSVMpCi0tRElTVENMRUFORklMRVMgKz0gJChWQVBJ R0VOX1ZBUElTKQotLUVYVFJBX0RJU1QgKz0gJChWQVBJR0VOX1ZBUElTKQotK0FNX1ZBTEFGTEFH UyArPSBcCi0rICAgIC1EIEVOQUJMRV9IQVJGQlVaWl9GT1JfRU1PSkkgICAgICAgICAgICAgICAg XAotKyAgICAtLXBrZz1jYWlybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg ICAgLS1wa2c9aWJ1cy1mb250c2V0LTEuMCAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICQo TlVMTCkKLSAKLS0jIGVuZCBvZiBFTkFCTEVfVkFQSUdFTgotLWVuZGlmCi0tIyBlbmQgb2YgSEFW RV9JTlRST1NQRUNUSU9OCi0gZW5kaWYKLSsjIGVuZCBvZiBFTkFCTEVfSEFSRkJVWlpfRk9SX0VN T0pJCi0gCi0gbWFuX3NldmVuX2ZpbGVzID0gJChtYW5fc2V2ZW5faW5fZmlsZXM6LjcuaW49Ljcp Ci0gbWFuX3NldmVuX0RBVEEgPSQobWFuX3NldmVuX2ZpbGVzOi43PS43Lmd6KQotQEAgLTI3Niw3 ICsyNDUsNyBAQCBDTEVBTkZJTEVTICs9IFwKLSAgICAgJChtYW5fc2V2ZW5fZmlsZXMpIFwKLSAg ICAgJChOVUxMKQotIAotLSMgZW5kIG9mIEVOQUJMRV9FTU9KSV9ESUNUCi0gZW5kaWYKLSsjIGVu ZCBvZiBFTkFCTEVfRU1PSklfRElDVAotIAotIC1pbmNsdWRlICQodG9wX3NyY2RpcikvZ2l0Lm1r Ci1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEgYi91aS9ndGszL2Vtb2ppZXIudmFs YQotaW5kZXggOWRmNTlhYy4uNDkyYTQyZiAxMDA2NDQKLS0tLSBhL3VpL2d0azMvZW1vamllci52 YWxhCi0rKysgYi91aS9ndGszL2Vtb2ppZXIudmFsYQotQEAgLTgwLDYgKzgwLDkgQEAgY2xhc3Mg SUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgfQotICAgICB9 Ci0gICAgIHByaXZhdGUgY2xhc3MgRVdoaXRlTGFiZWwgOiBHdGsuTGFiZWwgewotKyNpZiBFTkFC TEVfSEFSRkJVWlpfRk9SX0VNT0pJCi0rICAgICAgICBJQnVzLlJlcXVpc2l0aW9uRXggbV9yZXF1 aXNpdGlvbjsKLSsjZW5kaWYKLSAgICAgICAgIHB1YmxpYyBFV2hpdGVMYWJlbChzdHJpbmcgdGV4 dCkgewotICAgICAgICAgICAgIEdMaWIuT2JqZWN0KAotICAgICAgICAgICAgICAgICBuYW1lIDog IklCdXNFbW9qaWVyV2hpdGVMYWJlbCIKLUBAIC04Nyw4ICs5MCw3OCBAQCBjbGFzcyBJQnVzRW1v amllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAgaWYgKHRleHQgIT0g IiIpCi0gICAgICAgICAgICAgICAgIHNldF9sYWJlbCh0ZXh0KTsKLSAgICAgICAgIH0KLSsjaWYg RU5BQkxFX0hBUkZCVVpaX0ZPUl9FTU9KSQotKyAgICAgICAgcHJpdmF0ZSB2b2lkIGdldF9wcmVm ZXJyZWRfc2l6ZV93aXRoX2hiKG91dCBpbnQgbWluaW11bV93aWR0aCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgaW50IG5hdHVyYWxfd2lkdGgs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IGlu dCBtaW5pbXVtX2hlaWdodCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvdXQgaW50IG5hdHVyYWxfaGVpZ2h0KSB7Ci0rICAgICAgICAgICAgbWluaW11 bV93aWR0aCA9IDA7Ci0rICAgICAgICAgICAgbmF0dXJhbF93aWR0aCA9IDA7Ci0rICAgICAgICAg ICAgbWluaW11bV9oZWlnaHQgPSAwOwotKyAgICAgICAgICAgIG5hdHVyYWxfaGVpZ2h0ID0gMDsK LSsgICAgICAgICAgICB2YXIgdGV4dCA9IHRoaXMuZ2V0X3RleHQoKTsKLSsgICAgICAgICAgICBp ZiAodGV4dCA9PSBudWxsIHx8IHRleHQgPT0gIiIpCi0rICAgICAgICAgICAgICAgIHJldHVybjsK LSsgICAgICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuZ2V0X3BhbmdvX2NvbnRleHQoKTsKLSsg ICAgICAgICAgICB2YXIgbGFuZ3VhZ2UgPSBjb250ZXh0LmdldF9sYW5ndWFnZSgpOwotKyAgICAg ICAgICAgIHVwZGF0ZV9mb250c2V0KGxhbmd1YWdlKTsKLSsgICAgICAgICAgICBDYWlyby5SZWN0 YW5nbGVJbnQgd2lkZXN0ID0gQ2Fpcm8uUmVjdGFuZ2xlSW50KCk7Ci0rICAgICAgICAgICAgbV9y ZXF1aXNpdGlvbiA9IG1fZm9udHNldC5nZXRfcHJlZmVycmVkX3NpemVfaGIodGV4dCwgb3V0IHdp ZGVzdCk7Ci0rICAgICAgICAgICAgbWluaW11bV93aWR0aCA9IHdpZGVzdC53aWR0aDsKLSsgICAg ICAgICAgICBuYXR1cmFsX3dpZHRoID0gd2lkZXN0LndpZHRoOwotKyAgICAgICAgICAgIG1pbmlt dW1faGVpZ2h0ID0gd2lkZXN0LmhlaWdodDsKLSsgICAgICAgICAgICBuYXR1cmFsX2hlaWdodCA9 IHdpZGVzdC5oZWlnaHQ7Ci0rICAgICAgICB9Ci0rICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgdm9p ZCBnZXRfcHJlZmVycmVkX3dpZHRoKG91dCBpbnQgbWluaW11bV93aWR0aCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IGludCBuYXR1cmFsX3dp ZHRoKSB7Ci0rICAgICAgICAgICAgZ2V0X3ByZWZlcnJlZF9zaXplX3dpdGhfaGIob3V0IG1pbmlt dW1fd2lkdGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IG5h dHVyYWxfd2lkdGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs bCwgbnVsbCk7Ci0rICAgICAgICB9Ci0rICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBnZXRf cHJlZmVycmVkX2hlaWdodChvdXQgaW50IG1pbmltdW1faGVpZ2h0LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IGludCBuYXR1cmFsX2hlaWdo dCkgewotKyAgICAgICAgICAgIGdldF9wcmVmZXJyZWRfc2l6ZV93aXRoX2hiKG51bGwsIG51bGws Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IG1pbmltdW1faGVp Z2h0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBuYXR1cmFs X2hlaWdodCk7Ci0rICAgICAgICB9Ci0rICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgYm9vbCBkcmF3 KENhaXJvLkNvbnRleHQgY3IpIHsKLSsgICAgICAgICAgICBpZiAobV9mb250c2V0ID09IG51bGwp Ci0rICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotKyAgICAgICAgICAgIGlmIChtX3JlcXVp c2l0aW9uID09IG51bGwpCi0rICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAKLSsgICAgICAg ICAgICBpZiAobV9yZXF1aXNpdGlvbi5jYWlyb19saW5lcyA9PSBudWxsKQotKyAgICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsgCi0rICAgICAgICAgICAgdmFyIHN0eWxlX2NvbnRleHQgPSBnZXRf c3R5bGVfY29udGV4dCgpOwotKyAgICAgICAgICAgIEd0ay5BbGxvY2F0aW9uIGFsbG9jYXRpb247 Ci0rICAgICAgICAgICAgZ2V0X2FsbG9jYXRpb24ob3V0IGFsbG9jYXRpb24pOwotKyAgICAgICAg ICAgIHN0eWxlX2NvbnRleHQucmVuZGVyX2JhY2tncm91bmQoY3IsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbi53aWR0aCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRpb24uaGVpZ2h0KTsKLSsgICAg ICAgICAgICBHZGsuUkdCQSAqbm9ybWFsX2ZnID0gbnVsbDsKLSsgICAgICAgICAgICBzdHlsZV9j b250ZXh0LmdldChHdGsuU3RhdGVGbGFncy5OT1JNQUwsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImNvbG9yIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgbm9y bWFsX2ZnKTsKLSsgICAgICAgICAgICBjci5zZXRfb3BlcmF0b3IoQ2Fpcm8uT3BlcmF0b3IuT1ZF Uik7Ci0rICAgICAgICAgICAgY3Iuc2V0X3NvdXJjZV9yZ2JhKG5vcm1hbF9mZy5yZWQsIG5vcm1h bF9mZy5ncmVlbiwgbm9ybWFsX2ZnLmJsdWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5vcm1hbF9mZy5hbHBoYSk7Ci0rICAgICAgICAgICAgY3Iuc2F2ZSgpOwotKyAgICAgICAg ICAgIGRvdWJsZSB4ID0gMC4wOwotKyAgICAgICAgICAgIGRvdWJsZSB5ID0gMC4wOwotKyAgICAg ICAgICAgIGlmIChhbGxvY2F0aW9uLndpZHRoID4gbV9yZXF1aXNpdGlvbi53aWR0aCkKLSsgICAg ICAgICAgICAgICAgeCA9IChhbGxvY2F0aW9uLndpZHRoIC0gbV9yZXF1aXNpdGlvbi53aWR0aCkg LyAyLjA7Ci0rICAgICAgICAgICAgaWYgKGFsbG9jYXRpb24uaGVpZ2h0ID4gbV9yZXF1aXNpdGlv bi5oZWlnaHQpCi0rICAgICAgICAgICAgICAgIHkgPSAoYWxsb2NhdGlvbi5oZWlnaHQgLSBtX3Jl cXVpc2l0aW9uLmhlaWdodCkgLyAyLjA7Ci0rICAgICAgICAgICAgY3IudHJhbnNsYXRlKHgsIHkp OwotKyAgICAgICAgICAgIG1fZm9udHNldC5kcmF3X2NhaXJvX3dpdGhfcmVxdWlzaXRpb25fZXgo Y3IsIG1fcmVxdWlzaXRpb24pOwotKyAgICAgICAgICAgIGNyLnJlc3RvcmUoKTsKLSsgICAgICAg ICAgICBub3JtYWxfZmcuZnJlZSgpOwotKyAgICAgICAgICAgIG5vcm1hbF9mZyA9IG51bGw7Ci0r ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0rICAgICAgICB9Ci0rI2VuZGlmCi0gICAgIH0KLS0g ICAgcHJpdmF0ZSBjbGFzcyBFU2VsZWN0ZWRMYWJlbCA6IEd0ay5MYWJlbCB7Ci0rICAgIHByaXZh dGUgY2xhc3MgRVNlbGVjdGVkTGFiZWwgOiBFV2hpdGVMYWJlbCB7Ci0gICAgICAgICBwdWJsaWMg RVNlbGVjdGVkTGFiZWwoc3RyaW5nIHRleHQpIHsKLSAgICAgICAgICAgICBHTGliLk9iamVjdCgK LSAgICAgICAgICAgICAgICAgbmFtZSA6ICJJQnVzRW1vamllclNlbGVjdGVkTGFiZWwiCi1AQCAt OTcsNyArMTcwLDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cg ewotICAgICAgICAgICAgICAgICBzZXRfbGFiZWwodGV4dCk7Ci0gICAgICAgICB9Ci0gICAgIH0K LS0gICAgcHJpdmF0ZSBjbGFzcyBFR29sZExhYmVsIDogR3RrLkxhYmVsIHsKLSsgICAgcHJpdmF0 ZSBjbGFzcyBFR29sZExhYmVsIDogRVdoaXRlTGFiZWwgewotICAgICAgICAgcHVibGljIEVHb2xk TGFiZWwoc3RyaW5nIHRleHQpIHsKLSAgICAgICAgICAgICBHTGliLk9iamVjdCgKLSAgICAgICAg ICAgICAgICAgbmFtZSA6ICJJQnVzRW1vamllckdvbGRMYWJlbCIKLUBAIC0yMTIsNiArMjg1LDkg QEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAg ICAgIG1fY2F0ZWdvcnlfdG9fZW1vamlzX2RpY3Q7Ci0gICAgIHByaXZhdGUgc3RhdGljIEdMaWIu SGFzaFRhYmxlPHN0cmluZywgR0xpYi5TTGlzdDxzdHJpbmc+Pj8KLSAgICAgICAgICAgICBtX2Vt b2ppX3RvX2Vtb2ppX3ZhcmlhbnRzX2RpY3Q7Ci0rI2lmIEVOQUJMRV9IQVJGQlVaWl9GT1JfRU1P SkkKLSsgICAgcHJpdmF0ZSBzdGF0aWMgSUJ1cy5Gb250U2V0IG1fZm9udHNldDsKLSsjZW5kaWYK LSAKLSAgICAgcHJpdmF0ZSBUaGVtZWRSR0JBIG1fcmdiYTsKLSAgICAgcHJpdmF0ZSBHdGsuQm94 IG1fdmJveDsKLUBAIC0xMTM5LDYgKzEyMTUsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5B cHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAgICAgICAgICBtX2NhdGVnb3J5X2FjdGl2 ZV9pbmRleCA9IChpbnQpbGlzdC5sZW5ndGgoKTsKLSAgICAgICAgIH0KLSAgICAgICAgIEd0ay5B ZGp1c3RtZW50IGFkanVzdG1lbnQgPSBtX2xpc3RfYm94LmdldF9hZGp1c3RtZW50KCk7Ci0rICAg ICAgICBtX3Njcm9sbGVkX3dpbmRvdy5zZXRfaGFkanVzdG1lbnQobmV3IEd0ay5BZGp1c3RtZW50 KDAsIDAsIDAsIDAsIDAsIDApKTsKLSAgICAgICAgIG1fc2Nyb2xsZWRfd2luZG93LnNldF92YWRq dXN0bWVudChhZGp1c3RtZW50KTsKLSAgICAgICAgIHNob3dfY2F0ZWdvcnlfbGlzdCgpOwotICAg ICB9Ci1AQCAtMTE1Niw3ICsxMjMzLDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGlj YXRpb25XaW5kb3cgewotICAgICAgICAgICAgIGVsc2UgaWYgKGtleXZhbCA9PSBHZGsuS2V5LlJp Z2h0KQotICAgICAgICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5jdXJzb3JfZG93bigpOwotICAg ICAgICAgICAgIHNob3dfY2FuZGlkYXRlX3BhbmVsKCk7Ci0tICAgICAgICB9IGVsc2UgaWYgKG1f ZW50cnkuZ2V0X3RleHQoKS5sZW4oKSA+IDApIHsKLSsgICAgICAgIH0gZWxzZSBpZiAobV9lbnRy eS5nZXRfdGV4dCgpLmxlbmd0aCA+IDApIHsKLSAgICAgICAgICAgICBpbnQgc3RlcCA9IDA7Ci0g ICAgICAgICAgICAgaWYgKGtleXZhbCA9PSBHZGsuS2V5LkxlZnQpCi0gICAgICAgICAgICAgICAg IHN0ZXAgPSAtMTsKLUBAIC0xMjExLDcgKzEyODgsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0 ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAgc2hvd19jYW5kaWRhdGVfcGFuZWwo KTsKLSAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIH0KLS0gICAgICAgIGlmICht X2VudHJ5LmdldF90ZXh0KCkubGVuKCkgPiAwKSB7Ci0rICAgICAgICBpZiAobV9lbnRyeS5nZXRf dGV4dCgpLmxlbmd0aCA+IDApIHsKLSAgICAgICAgICAgICBpbnQgc3RlcCA9IDA7Ci0gICAgICAg ICAgICAgaWYgKGtleXZhbCA9PSBHZGsuS2V5LkhvbWUpCi0gICAgICAgICAgICAgICAgIHN0ZXAg PSAtMTsKLUBAIC0xNDEwLDcgKzE0ODcsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBs aWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAga2V5X3ByZXNzX2VudGVyKCk7Ci0gICAgICAg ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICBjYXNlIEdkay5LZXkuQmFja1NwYWNlOgotLSAg ICAgICAgICAgIGlmIChtX2VudHJ5LmdldF90ZXh0KCkubGVuKCkgPiAwKSB7Ci0rICAgICAgICAg ICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICAgICAg IGlmICgobW9kaWZpZXJzICYgR2RrLk1vZGlmaWVyVHlwZS5DT05UUk9MX01BU0spICE9IDApIHsK LSAgICAgICAgICAgICAgICAgICAgIEdMaWIuU2lnbmFsLmVtaXRfYnlfbmFtZShtX2VudHJ5LCAi ZGVsZXRlLWZyb20tY3Vyc29yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHdGsuRGVsZXRlVHlwZS5XT1JEX0VORFMsIC0xKTsKLUBAIC0xNDIyLDcgKzE0 OTksNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAg ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlIEdkay5LZXkuRGVsZXRlOgotICAgICAgICAg Y2FzZSBHZGsuS2V5LktQX0RlbGV0ZToKLS0gICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4 dCgpLmxlbigpID4gMCkgewotKyAgICAgICAgICAgIGlmIChtX2VudHJ5LmdldF90ZXh0KCkubGVu Z3RoID4gMCkgewotICAgICAgICAgICAgICAgICBpZiAoKG1vZGlmaWVycyAmIEdkay5Nb2RpZmll clR5cGUuQ09OVFJPTF9NQVNLKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICBHTGliLlNp Z25hbC5lbWl0X2J5X25hbWUobV9lbnRyeSwgImRlbGV0ZS1mcm9tLWN1cnNvciIsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrLkRlbGV0ZVR5cGUuV09S RF9FTkRTLCAxKTsKLUBAIC0xNDM2LDcgKzE1MTMsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0 ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICBjYXNlIEdkay5LZXkuc3BhY2U6Ci0gICAg ICAgICBjYXNlIEdkay5LZXkuS1BfU3BhY2U6Ci0gICAgICAgICAgICAgaWYgKChtb2RpZmllcnMg JiBHZGsuTW9kaWZpZXJUeXBlLlNISUZUX01BU0spICE9IDApIHsKLS0gICAgICAgICAgICAgICAg aWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW4oKSA+IDApCi0rICAgICAgICAgICAgICAgIGlmICht X2VudHJ5LmdldF90ZXh0KCkubGVuZ3RoID4gMCkKLSAgICAgICAgICAgICAgICAgICAgIGVudHJ5 X2VudGVyX2tleXZhbChrZXl2YWwpOwotICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9jYW5kaWRh dGVfcGFuZWxfaXNfdmlzaWJsZSkgewotICAgICAgICAgICAgICAgICBlbnRlcl9ub3RpZnlfZGlz YWJsZV93aXRoX3RpbWVyKCk7Ci1AQCAtMTUxMiw3ICsxNTg5LDcgQEAgY2xhc3MgSUJ1c0Vtb2pp ZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHRydWU7Ci0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIGNhc2UgR2RrLktl eS51OgotLSAgICAgICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbigpID4gMCkg ewotKyAgICAgICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbmd0aCA+IDApIHsK LSAgICAgICAgICAgICAgICAgICAgIEdMaWIuU2lnbmFsLmVtaXRfYnlfbmFtZShtX2VudHJ5LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGUtZnJv bS1jdXJzb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEd0ay5EZWxldGVUeXBlLlBBUkFHUkFQSF9FTkRTLAotQEAgLTE1MjEsMTMgKzE1OTgsMTMgQEAg Y2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIGNhc2UgR2RrLktl eS5hOgotLSAgICAgICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbigpID4gMCkg ewotKyAgICAgICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbmd0aCA+IDApIHsK LSAgICAgICAgICAgICAgICAgICAgIG1fZW50cnkuc2VsZWN0X3JlZ2lvbigwLCAtMSk7Ci0gICAg ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICBjYXNlIEdkay5LZXkueDoKLS0gICAgICAg ICAgICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW4oKSA+IDApIHsKLSsgICAgICAgICAg ICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICAg ICAgICAgICBHTGliLlNpZ25hbC5lbWl0X2J5X25hbWUobV9lbnRyeSwgImN1dC1jbGlwYm9hcmQi KTsKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICB9 Ci1AQCAtMTU0NCw3ICsxNjIxLDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRp b25XaW5kb3cgewotICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBib2FyZC5zdG9yZSgpOwot ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAg ICAgfQotLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW4o KSA+IDApIHsKLSsgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX2VudHJ5LmdldF90ZXh0KCku bGVuZ3RoID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgR0xpYi5TaWduYWwuZW1pdF9ieV9u YW1lKG1fZW50cnksICJjb3B5LWNsaXBib2FyZCIpOwotICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgIH0KLUBAIC0xNjAwLDYgKzE2NzcsMjIgQEAgY2xh c3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICB9Ci0gCi0gCi0r I2lmIEVOQUJMRV9IQVJGQlVaWl9GT1JfRU1PSkkKLSsgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB1 cGRhdGVfZm9udHNldChQYW5nby5MYW5ndWFnZSBsYW5ndWFnZSkgewotKyAgICAgICAgaWYgKG1f Zm9udHNldCAhPSBudWxsKSB7Ci0rICAgICAgICAgICAgbV9mb250c2V0LnNldF9mYW1pbHkobV9l bW9qaV9mb250X2ZhbWlseSk7Ci0rICAgICAgICAgICAgbV9mb250c2V0LnNldF9zaXplKG1fZW1v amlfZm9udF9zaXplKTsKLSsgICAgICAgICAgICBtX2ZvbnRzZXQuc2V0X2xhbmd1YWdlKGxhbmd1 YWdlLnRvX3N0cmluZygpKTsKLSsgICAgICAgICAgICBtX2ZvbnRzZXQudXBkYXRlX2ZjZm9udHNl dCgpOwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBtX2ZvbnRzZXQgPSBuZXcgSUJ1 cy5Gb250U2V0LndpdGhfZm9udCgKLSsgICAgICAgICAgICAgICAgICAgIG1fZW1vamlfZm9udF9m YW1pbHksCi0rICAgICAgICAgICAgICAgICAgICBtX2Vtb2ppX2ZvbnRfc2l6ZSwKLSsgICAgICAg ICAgICAgICAgICAgIGxhbmd1YWdlLnRvX3N0cmluZygpKTsKLSsgICAgICAgIH0KLSsgICAgfQot KyNlbmRpZgotKwotICAgICBwdWJsaWMgc3RhdGljIGJvb2wgaGFzX2xvYWRlZF9lbW9qaV9kaWN0 KCkgewotICAgICAgICAgaWYgKG1fZW1vamlfdG9fZGF0YV9kaWN0ID09IG51bGwpCi0gICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOwotQEAgLTE2MzAsNiArMTcyMywxMCBAQCBjbGFzcyBJQnVzRW1v amllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICBpbnQgZm9udF9zaXplID0g Zm9udF9kZXNjLmdldF9zaXplKCkgLyBQYW5nby5TQ0FMRTsKLSAgICAgICAgIGlmIChmb250X3Np emUgIT0gMCkKLSAgICAgICAgICAgICBtX2Vtb2ppX2ZvbnRfc2l6ZSA9IGZvbnRfc2l6ZTsKLSsj aWYgRU5BQkxFX0hBUkZCVVpaX0ZPUl9FTU9KSQotKyAgICAgICAgdmFyIHdpZGdldCA9IG5ldyBH dGsuTGFiZWwoIiIpOwotKyAgICAgICAgdXBkYXRlX2ZvbnRzZXQod2lkZ2V0LmdldF9wYW5nb19j b250ZXh0KCkuZ2V0X2xhbmd1YWdlKCkpOwotKyNlbmRpZgotICAgICB9Ci0gCi0gCi1kaWZmIC0t Z2l0IGEvdWkvZ3RrMy9pYnVzZW1vamlkaWFsb2cuaCBiL3VpL2d0azMvaWJ1c2Vtb2ppZGlhbG9n LmgKLWluZGV4IDI0ZDE5NWMuLmVkODg4NmEgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2lidXNlbW9q aWRpYWxvZy5oCi0rKysgYi91aS9ndGszL2lidXNlbW9qaWRpYWxvZy5oCi1AQCAtMTcwLDUgKzE3 MCwzMSBAQCB2b2lkICAgICAgICAgIGlidXNfZW1vamllcl9zZXRfZmF2b3JpdGVzICAgICAgICAg IChnY2hhcioqICAgICAgZmF2b3JpdGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZhdm9yaXRlX2Fubm90YXRpb25zLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhdm9yaXRlX2Fubm90YXRp b25zX2xlbmd0aCk7Ci0rCi0rLyoqCi0rICogaWJ1c19lbW9qaWVyX3NldF9wYXJ0aWFsX21hdGNo OgotKyAqIEBoYXNfcGFydGlhbF9tYXRjaDogRW5hYmxlIHRoZSBwYXJ0aWFsIG1hdGNoIGlmICVU UlVFLiBPdGhlcndpc2UgaWYgJUZBTFNFLgotKyAqCi0rICogU2V0IHBhcnRpYWwgbWF0Y2ggZm9y IGVtb2ppIGFubm90YXRpb25zLgotKyAqLwotK3ZvaWQgICAgICAgICAgaWJ1c19lbW9qaWVyX3Nl dF9wYXJ0aWFsX21hdGNoICAgICAgKGdib29sZWFuICBoYXNfcGFydGlhbF9tYXRjaCk7Ci0rCi0r LyoqCi0rICogaWJ1c19lbW9qaWVyX3NldF9wYXJ0aWFsX21hdGNoX2xlbmd0aDoKLSsgKiBAbGVu Z3RoOiBtaW5pbXVtIGxlbmdodCB0byBtYXRjaCBwYXJ0aWFsbHkuCi0rICoKLSsgKiBTZXQgdGhl IG1pbmltdW0gbGVuZ2h0IHRvIG1hdGNoIHBhcnRpYWxseS4KLSsgKi8KLSt2b2lkICAgICAgICAg IGlidXNfZW1vamllcl9zZXRfcGFydGlhbF9tYXRjaF9sZW5ndGgKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnaW50ICAgICAgICAgbGVuZ3RoKTsK LSsKLSsvKioKLSsgKiBpYnVzX2Vtb2ppZXJfc2V0X3BhcnRpYWxfbWF0Y2hfY29uZGl0aW9uOgot KyAqIEBjb25kaXRpb246IGNvbmRpdGlvbiBpZCBiZXR3ZWVuIDAgYW5kIDIuCi0rICoKLSsgKiBT ZXQgdGhlIHBhcnRpYWwgbWF0Y2ggY29uZGl0aW9uIHdpdGggdGhlIGludGVnZXIuCi0rICovCi0r dm9pZCAgICAgICAgICBpYnVzX2Vtb2ppZXJfc2V0X3BhcnRpYWxfbWF0Y2hfY29uZGl0aW9uCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2ludCAg ICAgICAgIGNvbmRpdGlvbik7Ci0gR19FTkRfREVDTFMKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS91 aS9ndGszL2lidXNmb250c2V0LmMgYi91aS9ndGszL2lidXNmb250c2V0LmMKKysrKyBiL3BvcnRh bC9vcmcuZnJlZWRlc2t0b3AuSUJ1cy5Qb3J0YWwueG1sCitAQCAtMCwwICsxLDEzMiBAQAorKzw/ eG1sIHZlcnNpb249IjEuMCI/PgorKzwhLS0KKysgQ29weXJpZ2h0IChDKSAyMDE3IFJlZCBIYXQs IEluYy4KKysKKysgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgorKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCisrIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrIFRoaXMgbGlicmFy eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlIEdOVQorKyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKworKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh cnkuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysgQXV0 aG9yOiBBbGV4YW5kZXIgTGFyc3NvbiA8YWxleGxAcmVkaGF0LmNvbT4KKystLT4KKysKKys8bm9k ZSBuYW1lPSIvIiB4bWxuczpkb2M9Imh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL2RidXMvMS4w L2RvYy5kdGQiPgorKyAgPCEtLQorKyAgICAgIG9yZy5mcmVlZGVza3RvcC5JQnVzLlBvcnRhbDoK KysgICAgICBAc2hvcnRfZGVzY3JpcHRpb246IFBvcnRhbCBmb3IgaWJ1cyBjbGllbnQgYWNjZXNz CisrCisrICAgICAgVGhpcyBpbnRlcmZhY2UgaXMgYSBtaW5pbWFsIGludGVyZmFjZSB0byBJQnVz IHRoYXQgaXMgc2FmZSB0byBleHBvc2UgdG8KKysgICAgICBjbGllbnRzLgorKyAgLS0+CisrICA8 aW50ZXJmYWNlIG5hbWU9Im9yZy5mcmVlZGVza3RvcC5JQnVzLlBvcnRhbCI+CisrICAgIDxtZXRo b2QgbmFtZT0nQ3JlYXRlSW5wdXRDb250ZXh0Jz4KKysgICAgICA8YXJnIGRpcmVjdGlvbj0naW4n ICB0eXBlPSdzJyBuYW1lPSdjbGllbnRfbmFtZScgLz4KKysgICAgICA8YXJnIGRpcmVjdGlvbj0n b3V0JyB0eXBlPSdvJyBuYW1lPSdvYmplY3RfcGF0aCcgLz4KKysgICAgPC9tZXRob2Q+CisrICA8 L2ludGVyZmFjZT4KKysKKysgIDwhLS0gVGhpcyBpcyBhIGNvcHkgb2YgdGhlIGludGVyZmFjZSBp biBpbnB1dGNvbnRleHQuYywgdGhleSBzaG91bGQgYmUgc2hhcmVkLgorKyAgICAgICBXZSB3YW50 IHRoaXMgZm9yIHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGF0IHdlIGNhbiBiZSBzdXJlIHdlIHZl cmlmeSBhbGwKKysgICAgICAgY2FsbGVyIHR5cGVzLCBldGMuCisrICAtLT4KKysgIDxpbnRlcmZh Y2UgbmFtZT0nb3JnLmZyZWVkZXNrdG9wLklCdXMuSW5wdXRDb250ZXh0Jz4KKysgICAgPG1ldGhv ZCBuYW1lPSdQcm9jZXNzS2V5RXZlbnQnPgorKyAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgIHR5 cGU9J3UnIG5hbWU9J2tleXZhbCcgLz4KKysgICAgICA8YXJnIGRpcmVjdGlvbj0naW4nICB0eXBl PSd1JyBuYW1lPSdrZXljb2RlJyAvPgorKyAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgIHR5cGU9 J3UnIG5hbWU9J3N0YXRlJyAvPgorKyAgICAgIDxhcmcgZGlyZWN0aW9uPSdvdXQnIHR5cGU9J2In IG5hbWU9J2hhbmRsZWQnIC8+CisrICAgIDwvbWV0aG9kPgorKyAgICA8bWV0aG9kIG5hbWU9J1Nl dEN1cnNvckxvY2F0aW9uJz4KKysgICAgICA8YXJnIGRpcmVjdGlvbj0naW4nIHR5cGU9J2knIG5h bWU9J3gnIC8+CisrICAgICAgPGFyZyBkaXJlY3Rpb249J2luJyB0eXBlPSdpJyBuYW1lPSd5JyAv PgorKyAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgdHlwZT0naScgbmFtZT0ndycgLz4KKysgICAg ICA8YXJnIGRpcmVjdGlvbj0naW4nIHR5cGU9J2knIG5hbWU9J2gnIC8+CisrICAgIDwvbWV0aG9k PgorKyAgICA8bWV0aG9kIG5hbWU9J1NldEN1cnNvckxvY2F0aW9uUmVsYXRpdmUnPgorKyAgICAg IDxhcmcgZGlyZWN0aW9uPSdpbicgdHlwZT0naScgbmFtZT0neCcgLz4KKysgICAgICA8YXJnIGRp cmVjdGlvbj0naW4nIHR5cGU9J2knIG5hbWU9J3knIC8+CisrICAgICAgPGFyZyBkaXJlY3Rpb249 J2luJyB0eXBlPSdpJyBuYW1lPSd3JyAvPgorKyAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgdHlw ZT0naScgbmFtZT0naCcgLz4KKysgICAgPC9tZXRob2Q+CisrICAgIDxtZXRob2QgbmFtZT0nUHJv Y2Vzc0hhbmRXcml0aW5nRXZlbnQnPgorKyAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgdHlwZT0n YWQnIG5hbWU9J2Nvb3JkaW5hdGVzJyAvPgorKyAgICA8L21ldGhvZD4KKysgICAgPG1ldGhvZCBu YW1lPSdDYW5jZWxIYW5kV3JpdGluZyc+CisrICAgICAgPGFyZyBkaXJlY3Rpb249J2luJyB0eXBl PSd1JyBuYW1lPSduX3N0cm9rZXMnIC8+CisrICAgIDwvbWV0aG9kPgorKyAgICA8bWV0aG9kIG5h bWU9J0ZvY3VzSW4nIC8+CisrICAgIDxtZXRob2QgbmFtZT0nRm9jdXNPdXQnIC8+CisrICAgIDxt ZXRob2QgbmFtZT0nUmVzZXQnIC8+CisrICAgIDxtZXRob2QgbmFtZT0nU2V0Q2FwYWJpbGl0aWVz Jz4KKysgICAgICA8YXJnIGRpcmVjdGlvbj0naW4nIHR5cGU9J3UnIG5hbWU9J2NhcHMnIC8+Cisr ICAgIDwvbWV0aG9kPgorKyAgICA8bWV0aG9kIG5hbWU9J1Byb3BlcnR5QWN0aXZhdGUnPgorKyAg ICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgdHlwZT0ncycgbmFtZT0nbmFtZScgLz4KKysgICAgICA8 YXJnIGRpcmVjdGlvbj0naW4nIHR5cGU9J3UnIG5hbWU9J3N0YXRlJyAvPgorKyAgICA8L21ldGhv ZD4KKysgICAgPG1ldGhvZCBuYW1lPSdTZXRFbmdpbmUnPgorKyAgICAgIDxhcmcgZGlyZWN0aW9u PSdpbicgdHlwZT0ncycgbmFtZT0nbmFtZScgLz4KKysgICAgPC9tZXRob2Q+CisrICAgIDxtZXRo b2QgbmFtZT0nR2V0RW5naW5lJz4KKysgICAgICA8YXJnIGRpcmVjdGlvbj0nb3V0JyB0eXBlPSd2 JyBuYW1lPSdkZXNjJyAvPgorKyAgICA8L21ldGhvZD4KKysgICAgPG1ldGhvZCBuYW1lPSdTZXRT dXJyb3VuZGluZ1RleHQnPgorKyAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgdHlwZT0ndicgbmFt ZT0ndGV4dCcgLz4KKysgICAgICA8YXJnIGRpcmVjdGlvbj0naW4nIHR5cGU9J3UnIG5hbWU9J2N1 cnNvcl9wb3MnIC8+CisrICAgICAgPGFyZyBkaXJlY3Rpb249J2luJyB0eXBlPSd1JyBuYW1lPSdh bmNob3JfcG9zJyAvPgorKyAgICA8L21ldGhvZD4KKysKKysgICAgPHNpZ25hbCBuYW1lPSdDb21t aXRUZXh0Jz4KKysgICAgICA8YXJnIHR5cGU9J3YnIG5hbWU9J3RleHQnIC8+CisrICAgIDwvc2ln bmFsPgorKyAgICA8c2lnbmFsIG5hbWU9J0ZvcndhcmRLZXlFdmVudCc+CisrICAgICAgPGFyZyB0 eXBlPSd1JyBuYW1lPSdrZXl2YWwnIC8+CisrICAgICAgPGFyZyB0eXBlPSd1JyBuYW1lPSdrZXlj b2RlJyAvPgorKyAgICAgIDxhcmcgdHlwZT0ndScgbmFtZT0nc3RhdGUnIC8+CisrICAgIDwvc2ln bmFsPgorKyAgICA8c2lnbmFsIG5hbWU9J1VwZGF0ZVByZWVkaXRUZXh0Jz4KKysgICAgICA8YXJn IHR5cGU9J3YnIG5hbWU9J3RleHQnIC8+CisrICAgICAgPGFyZyB0eXBlPSd1JyBuYW1lPSdjdXJz b3JfcG9zJyAvPgorKyAgICAgIDxhcmcgdHlwZT0nYicgbmFtZT0ndmlzaWJsZScgLz4KKysgICAg PC9zaWduYWw+CisrICAgIDxzaWduYWwgbmFtZT0nU2hvd1ByZWVkaXRUZXh0Jy8+CisrICAgIDxz aWduYWwgbmFtZT0nSGlkZVByZWVkaXRUZXh0Jy8+CisrICAgIDxzaWduYWwgbmFtZT0nVXBkYXRl QXV4aWxpYXJ5VGV4dCc+CisrICAgICAgPGFyZyB0eXBlPSd2JyBuYW1lPSd0ZXh0JyAvPgorKyAg ICAgIDxhcmcgdHlwZT0nYicgbmFtZT0ndmlzaWJsZScgLz4KKysgICAgPC9zaWduYWw+CisrICAg IDxzaWduYWwgbmFtZT0nU2hvd0F1eGlsaWFyeVRleHQnLz4KKysgICAgPHNpZ25hbCBuYW1lPSdI aWRlQXV4aWxpYXJ5VGV4dCcvPgorKyAgICA8c2lnbmFsIG5hbWU9J1VwZGF0ZUxvb2t1cFRhYmxl Jz4KKysgICAgICA8YXJnIHR5cGU9J3YnIG5hbWU9J3RhYmxlJyAvPgorKyAgICAgIDxhcmcgdHlw ZT0nYicgbmFtZT0ndmlzaWJsZScgLz4KKysgICAgPC9zaWduYWw+CisrICAgIDxzaWduYWwgbmFt ZT0nU2hvd0xvb2t1cFRhYmxlJy8+CisrICAgIDxzaWduYWwgbmFtZT0nSGlkZUxvb2t1cFRhYmxl Jy8+CisrICAgIDxzaWduYWwgbmFtZT0nUGFnZVVwTG9va3VwVGFibGUnLz4KKysgICAgPHNpZ25h bCBuYW1lPSdQYWdlRG93bkxvb2t1cFRhYmxlJy8+CisrICAgIDxzaWduYWwgbmFtZT0nQ3Vyc29y VXBMb29rdXBUYWJsZScvPgorKyAgICA8c2lnbmFsIG5hbWU9J0N1cnNvckRvd25Mb29rdXBUYWJs ZScvPgorKyAgICA8c2lnbmFsIG5hbWU9J1JlZ2lzdGVyUHJvcGVydGllcyc+CisrICAgICAgPGFy ZyB0eXBlPSd2JyBuYW1lPSdwcm9wcycgLz4KKysgICAgPC9zaWduYWw+CisrICAgIDxzaWduYWwg bmFtZT0nVXBkYXRlUHJvcGVydHknPgorKyAgICAgIDxhcmcgdHlwZT0ndicgbmFtZT0ncHJvcCcg Lz4KKysgICAgPC9zaWduYWw+CisrCisrICAgIDxwcm9wZXJ0eSBuYW1lPSdDb250ZW50VHlwZScg dHlwZT0nKHV1KScgYWNjZXNzPSd3cml0ZScgLz4KKysgIDwvaW50ZXJmYWNlPgorKworKyAgPGlu dGVyZmFjZSBuYW1lPSdvcmcuZnJlZWRlc2t0b3AuSUJ1cy5TZXJ2aWNlJz4KKysgICAgPG1ldGhv ZCBuYW1lPSdEZXN0cm95JyAvPgorKyAgPC9pbnRlcmZhY2U+CisrCisrPC9ub2RlPgorZGlmZiAt LWdpdCBhL3BvcnRhbC9vcmcuZnJlZWRlc2t0b3AucG9ydGFsLklCdXMuc2VydmljZS5pbiBiL3Bv cnRhbC9vcmcuZnJlZWRlc2t0b3AucG9ydGFsLklCdXMuc2VydmljZS5pbgorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi40N2FlOWZmYworLS0tIC9kZXYvbnVsbAorKysrIGIv cG9ydGFsL29yZy5mcmVlZGVza3RvcC5wb3J0YWwuSUJ1cy5zZXJ2aWNlLmluCitAQCAtMCwwICsx LDMgQEAKKytbRC1CVVMgU2VydmljZV0KKytOYW1lPW9yZy5mcmVlZGVza3RvcC5wb3J0YWwuSUJ1 cworK0V4ZWM9QGxpYmV4ZWNkaXJAL2lidXMtcG9ydGFsCitkaWZmIC0tZ2l0IGEvcG9ydGFsL3Bv cnRhbC5jIGIvcG9ydGFsL3BvcnRhbC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uNzg2NGE2NAoraW5kZXggMDAwMDAwMDAuLjA0MTVmOTk2CiAtLS0gL2Rldi9udWxsCi0r KysgYi91aS9ndGszL2lidXNmb250c2V0LmMKLUBAIC0wLDAgKzEsOTIzIEBACisrKysgYi9wb3J0 YWwvcG9ydGFsLmMKK0BAIC0wLDAgKzEsNjk4IEBACiArLyogLSotIG1vZGU6IEM7IGMtYmFzaWMt b2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IC0qLSAqLwogKy8qIHZpbTpzZXQgZXQg c3RzPTQ6ICovCiArLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSsgKiBDb3B5cmlnaHQgKEMpIDIw MTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CiArICogQ29weXJp Z2h0IChDKSAyMDE3IFJlZCBIYXQsIEluYy4KICsgKgogKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTE2NDMsMTIxNiAr MTIxOCwzMDkxIEBAIGluZGV4IDAwMDAwMDAuLjc4NjRhNjQKICsgKiBGb3VuZGF0aW9uLCBJbmMu LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx CiArICogVVNBCiArICovCi0rCi0rI2luY2x1ZGUgPGNhaXJvLWZ0Lmg+Ci0rI2luY2x1ZGUgPGZv bnRjb25maWcvZm9udGNvbmZpZy5oPgotKyNpbmNsdWRlIDxmdDJidWlsZC5oPgotKyNpbmNsdWRl IEZUX0ZSRUVUWVBFX0gKKysjaW5jbHVkZSA8Y29uZmlnLmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+ CiArI2luY2x1ZGUgPGdsaWIuaD4KLSsjaW5jbHVkZSA8aGItb3QuaD4KLSsjaW5jbHVkZSA8cGFu Z28vcGFuZ28uaD4KLSsKLSsjaW5jbHVkZSAiaWJ1c2ZvbnRzZXQuaCIKLSsKLSsjZGVmaW5lIFhQ QUQgMgotKyNkZWZpbmUgWVBBRCAyCi0rI2RlZmluZSBVTktOT1dOX0ZPTlRfU0laRSA3Ci0rI2Rl ZmluZSBJQlVTX0ZPTlRTRVRfR0VUX1BSSVZBVEUobykgIFwKLSsgICAoR19UWVBFX0lOU1RBTkNF X0dFVF9QUklWQVRFICgobyksIElCVVNfVFlQRV9GT05UU0VULCBJQnVzRm9udFNldFByaXZhdGUp KQotKwotKwotK3N0YXRpYyBGVF9MaWJyYXJ5ICBtX2Z0bGlicmFyeTsKLStzdGF0aWMgRmNGb250 U2V0ICAqbV9mY2ZvbnRzZXQ7Ci0rc3RhdGljIGdjaGFyICAgICAgKm1fZmFtaWx5OwotK3N0YXRp YyBndWludCAgICAgICBtX3NpemU7Ci0rc3RhdGljIGdjaGFyICAgICAgKm1fbGFuZ3VhZ2U7Ci0r c3RhdGljIEdIYXNoVGFibGUgKm1fc2NhbGVkX2ZvbnRfdGFibGU7Ci0rc3RhdGljIEdIYXNoVGFi bGUgKm1faGJfZm9udF90YWJsZTsKLSsKLStlbnVtIHsKLSsgICAgUFJPUF8wLAotKyAgICBQUk9Q X0ZBTUlMWSwKLSsgICAgUFJPUF9TSVpFLAotKyAgICBQUk9QX0xBTkdVQUdFCisrI2luY2x1ZGUg PGdpby9naW8uaD4KKysjaW5jbHVkZSA8aWJ1cy5oPgorKyNpbmNsdWRlIDxsb2NhbGUuaD4KKysj aW5jbHVkZSA8cHdkLmg+CisrI2luY2x1ZGUgPHNpZ25hbC5oPgorKyNpbmNsdWRlIDxzdGRsaWIu aD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrI2lu Y2x1ZGUgPHVuaXN0ZC5oPgorKworKyNpbmNsdWRlICJpYnVzLXBvcnRhbC1kYnVzLmgiCisrCisr dHlwZWRlZiBzdHJ1Y3QgX0lCdXNQb3J0YWwgSUJ1c1BvcnRhbDsKKyt0eXBlZGVmIHN0cnVjdCBf SUJ1c1BvcnRhbENsYXNzIElCdXNQb3J0YWxDbGFzczsKKyt0eXBlZGVmIHN0cnVjdCBfSUJ1c1Bv cnRhbENvbnRleHQgSUJ1c1BvcnRhbENvbnRleHQ7CisrdHlwZWRlZiBzdHJ1Y3QgX0lCdXNQb3J0 YWxDb250ZXh0Q2xhc3MgSUJ1c1BvcnRhbENvbnRleHRDbGFzczsKKysKKytzdHJ1Y3QgX0lCdXNQ b3J0YWxDb250ZXh0CisreworKyAgICBJQnVzRGJ1c0lucHV0Q29udGV4dFNrZWxldG9uIHBhcmVu dF9pbnN0YW5jZTsKKysgICAgSUJ1c0lucHV0Q29udGV4dCAqY29udGV4dDsKKysgICAgZ3VpbnQg aWQ7CisrICAgIGNoYXIgKm93bmVyOworKyAgICBjaGFyICpvYmplY3RfcGF0aDsKKysgICAgSUJ1 c0RidXNTZXJ2aWNlICpzZXJ2aWNlOworK307CisrCisrc3RydWN0IF9JQnVzUG9ydGFsQ29udGV4 dENsYXNzCisreworKyAgICBJQnVzRGJ1c0lucHV0Q29udGV4dFNrZWxldG9uQ2xhc3MgcGFyZW50 X2NsYXNzOwogK307CiArCi0rdHlwZWRlZiBzdHJ1Y3QgewotKyAgICBndW5pY2hhciAgIGNoOwot KyAgICBGY1BhdHRlcm4gKmZjZm9udDsKLSt9IEZvbnRQZXJDaGFyOworK3N0cnVjdCBfSUJ1c1Bv cnRhbAorK3sKKysgICAgSUJ1c0RidXNQb3J0YWxTa2VsZXRvbiBwYXJlbnRfaW5zdGFuY2U7Cisr CisrfTsKKysKKytzdHJ1Y3QgX0lCdXNQb3J0YWxDbGFzcworK3sKKysgICAgSUJ1c0RidXNQb3J0 YWxTa2VsZXRvbkNsYXNzIHBhcmVudF9jbGFzczsKKyt9OwogKwotK3N0cnVjdCBfSUJ1c0ZvbnRT ZXRQcml2YXRlIHsKLSsgICAgZ2NoYXIgICAgICpmYW1pbHk7Ci0rICAgIGd1aW50ICAgICAgc2l6 ZTsKLSsgICAgZ2NoYXIgICAgICpsYW5ndWFnZTsKKytlbnVtCisreworKyAgICBQUk9QX0NPTlRF TlRfVFlQRSA9IDEsCisrICAgIE5fUFJPUEVSVElFUwogK307CiArCi0rc3RhdGljIEdPYmplY3Qg KiBpYnVzX2ZvbnRzZXRfY29uc3RydWN0b3IgICAoR1R5cGUgICAgICAgICAgICAgICAgICB0eXBl LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAg ICAgICAgICAgICAgICAgbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHT2JqZWN0Q29uc3RydWN0UGFyYW0gKmFyZ3MpOwotK3N0YXRpYyB2b2lkICAgICAg aWJ1c19mb250c2V0X2Rlc3Ryb3kgICAgICAgKElCdXNGb250U2V0ICAgICAgICAgICAqZm9udHNl dCk7Ci0rc3RhdGljIHZvaWQgICAgICBpYnVzX2ZvbnRzZXRfc2V0X3Byb3BlcnR5ICAoSUJ1c0Zv bnRTZXQgICAgICAgICAgICpmb250c2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgcHJvcF9pZCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVmFsdWUgICAgICAg ICAgKnZhbHVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdQYXJhbVNwZWMgICAgICAgICAgICAqcHNwZWMpOwotK3N0YXRpYyB2b2lkICAgICAgaWJ1c19m b250c2V0X2dldF9wcm9wZXJ0eSAgKElCdXNGb250U2V0ICAgICAgICAgICAqZm9udHNldCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAg ICAgICAgICAgIHByb3BfaWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR1ZhbHVlICAgICAgICAgICAgICAgICp2YWx1ZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVjICAgICAgICAgICAgKnBzcGVj KTsKLStzdGF0aWMgY2Fpcm9fc2NhbGVkX2ZvbnRfdCAqCi0rICAgICAgICAgICAgICAgICBpYnVz X2ZvbnRzZXRfY2Fpcm9fc2NhbGVkX2ZvbnRfbmV3X3dpdGhfZm9udAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGdjaGFyICAgICAgICAgICAqZmFt aWx5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50 ICAgICAgICAgICAgICAgICAgc2l6ZSk7Ci0rCi0rR19ERUZJTkVfQk9YRURfVFlQRSAoSUJ1c0Nh aXJvTGluZSwKLSsgICAgICAgICAgICAgICAgICAgICBpYnVzX2NhaXJvX2xpbmUsCi0rICAgICAg ICAgICAgICAgICAgICAgaWJ1c19jYWlyb19saW5lX2NvcHksCi0rICAgICAgICAgICAgICAgICAg ICAgaWJ1c19jYWlyb19saW5lX2ZyZWUpOwotK0dfREVGSU5FX0JPWEVEX1RZUEUgKElCdXNSZXF1 aXNpdGlvbkV4LAotKyAgICAgICAgICAgICAgICAgICAgIGlidXNfcmVxdWlzaXRpb25fZXgsCi0r ICAgICAgICAgICAgICAgICAgICAgaWJ1c19yZXF1aXNpdGlvbl9leF9jb3B5LAotKyAgICAgICAg ICAgICAgICAgICAgIGlidXNfcmVxdWlzaXRpb25fZXhfZnJlZSk7Ci0rR19ERUZJTkVfVFlQRSAo SUJ1c0ZvbnRTZXQsIGlidXNfZm9udHNldCwgSUJVU19UWVBFX09CSkVDVCkKKytzdGF0aWMgR01h aW5Mb29wICpsb29wID0gTlVMTDsKKytzdGF0aWMgSUJ1c0J1cyAqaWJ1c19idXM7Cisrc3RhdGlj IElCdXNQb3J0YWwgKmlidXNfcG9ydGFsID0gTlVMTDsKKytzdGF0aWMgZ2Jvb2xlYW4gb3B0X3Zl cmJvc2U7Cisrc3RhdGljIGdib29sZWFuIG9wdF9yZXBsYWNlOworKworK3N0YXRpYyBHTGlzdCAq YWxsX2NvbnRleHRzID0gTlVMTDsKKysKKytzdGF0aWMgZ3VpbnQgbmV4dF9jb250ZXh0X2lkOwor KworK0dUeXBlIGlidXNfcG9ydGFsX2NvbnRleHRfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19DT05T VDsKKytzdGF0aWMgdm9pZCBpYnVzX3BvcnRhbF9jb250ZXh0X2lmYWNlX2luaXQgKElCdXNEYnVz SW5wdXRDb250ZXh0SWZhY2UgKmlmYWNlKTsKKysKKytzdGF0aWMgdm9pZCBwb3J0YWxfY29udGV4 dF9nX3NpZ25hbCAoR0RCdXNQcm94eSAgICAgICAgKnByb3h5LAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAqc2VuZGVyX25hbWUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICpzaWdu YWxfbmFtZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQg ICAgICAgICAgKnBhcmFtZXRlcnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElCdXNQb3J0YWxDb250ZXh0ICpwb3J0YWxfY29udGV4dCk7CisrCisrR19ERUZJTkVfVFlQ RV9XSVRIX0NPREUgKElCdXNQb3J0YWxDb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICBpYnVzX3BvcnRhbF9jb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0RC VVNfVFlQRV9JTlBVVF9DT05URVhUX1NLRUxFVE9OLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UgKElCVVNfREJVU19UWVBFX0lOUFVUX0NPTlRFWFQsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1c19wb3J0YWxfY29udGV4dF9pZmFj ZV9pbml0KSk7CiArCiArc3RhdGljIHZvaWQKLStpYnVzX2ZvbnRzZXRfY2xhc3NfaW5pdCAoSUJ1 c0ZvbnRTZXRDbGFzcyAqY2xhc3MpCisrX2ZvcndhcmRfbWV0aG9kX2NiIChHT2JqZWN0ICpzb3Vy Y2Vfb2JqZWN0LAorKyAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICpyZXMsCisrICAg ICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpCiArewotKyAgICBHT2JqZWN0Q2xh c3MgKmdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoY2xhc3MpOwotKyAgICBJQnVzT2Jq ZWN0Q2xhc3MgKm9iamVjdF9jbGFzcyA9IElCVVNfT0JKRUNUX0NMQVNTIChjbGFzcyk7Ci0rICAg IGNhaXJvX2dseXBoX3QgZHVtbXk7Ci0rICAgIElCdXNHbHlwaCBkdW1teTI7CisrICAgIEdEQnVz TWV0aG9kSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IHVzZXJfZGF0YTsKKysgICAgSUJ1c1BvcnRh bENvbnRleHQgKnBvcnRhbF9jb250ZXh0ID0KKysgICAgICAgICAgICAoSUJ1c1BvcnRhbENvbnRl eHQgKikgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX2dldF91c2VyX2RhdGEgKAorKyAgICAgICAg ICAgICAgICAgICAgaW52b2NhdGlvbik7CisrICAgIElCdXNFbmdpbmVEZXNjICpkZXNjOworKyAg ICBHRXJyb3IgKmVycm9yID0gTlVMTDsKICsKLSsgICAgZ29iamVjdF9jbGFzcy0+Y29uc3RydWN0 b3IgPSBpYnVzX2ZvbnRzZXRfY29uc3RydWN0b3I7Ci0rICAgIGdvYmplY3RfY2xhc3MtPmdldF9w cm9wZXJ0eSA9Ci0rICAgICAgICAgICAgKEdPYmplY3RHZXRQcm9wZXJ0eUZ1bmMpIGlidXNfZm9u dHNldF9nZXRfcHJvcGVydHk7Ci0rICAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9Ci0r ICAgICAgICAgICAgKEdPYmplY3RTZXRQcm9wZXJ0eUZ1bmMpIGlidXNfZm9udHNldF9zZXRfcHJv cGVydHk7Ci0rICAgIG9iamVjdF9jbGFzcy0+ZGVzdHJveSA9IChJQnVzT2JqZWN0RGVzdHJveUZ1 bmMpIGlidXNfZm9udHNldF9kZXN0cm95OworKyAgICBHVmFyaWFudCAqdmFyaWFudCA9IGdfZGJ1 c19wcm94eV9jYWxsX2ZpbmlzaCAoKEdEQnVzUHJveHkgKikgc291cmNlX29iamVjdCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcywgJmVycm9y KTsKKysgICAgaWYgKHZhcmlhbnQgPT0gTlVMTCkgeworKyAgICAgICAgZ19kYnVzX21ldGhvZF9p bnZvY2F0aW9uX3JldHVybl9nZXJyb3IgKGludm9jYXRpb24sIGVycm9yKTsKKysgICAgICAgIGdf ZXJyb3JfZnJlZSAoZXJyb3IpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CiArCi0rICAgIC8q IGluc3RhbGwgcHJvcGVydGllcyAqLwotKyAgICAvKioKLSsgICAgICogSUJ1c0ZvbnRTZXQ6ZmFt aWx5OgotKyAgICAgKgotKyAgICAgKiBGb250IGZhbWlseSBvZiB0aGlzIElCdXNGb250U2V0Lgot KyAgICAgKi8KLSsgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9j bGFzcywKLSsgICAgICAgICAgICAgICAgICAgIFBST1BfRkFNSUxZLAotKyAgICAgICAgICAgICAg ICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoImZhbWlseSIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgImZhbWlseSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgImZhbWlseSIsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgIiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJB TV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVCkpOworKyAgICBnX2RidXNfbWV0aG9kX2lu dm9jYXRpb25fcmV0dXJuX3ZhbHVlIChpbnZvY2F0aW9uLCB2YXJpYW50KTsKKyt9CiArCi0rICAg IC8qKgotKyAgICAgKiBJQnVzRm9udFNldDpzaXplOgotKyAgICAgKgotKyAgICAgKiBGb250IHNp emUgb2YgdGhpcyBJQnVzRm9udFNldC4KLSsgICAgICovCi0rICAgIGdfb2JqZWN0X2NsYXNzX2lu c3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCi0rICAgICAgICAgICAgICAgICAgICBQUk9Q X1NJWkUsCi0rICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfdWludCAoInNpemUiLAot KyAgICAgICAgICAgICAgICAgICAgICAgICJzaXplIiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAic2l6ZSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgMCwgR19NQVhVSU5UMTYsIDAsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNU UlVDVCkpOworK3N0YXRpYyBnYm9vbGVhbgorK19mb3J3YXJkX21ldGhvZCAoSUJ1c0RidXNJbnB1 dENvbnRleHQgICpvYmplY3QsCisrICAgICAgICAgICAgICAgICBHREJ1c01ldGhvZEludm9jYXRp b24gKmludm9jYXRpb24pCisreworKyAgICBJQnVzUG9ydGFsQ29udGV4dCAqcG9ydGFsX2NvbnRl eHQgPSAoSUJ1c1BvcnRhbENvbnRleHQgKilvYmplY3Q7CisrICAgIEdEQnVzTWVzc2FnZSAqbWVz c2FnZSA9IGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9nZXRfbWVzc2FnZSAoaW52b2NhdGlvbik7 CisrCisrICAgIGdfZGJ1c19wcm94eV9jYWxsIChHX0RCVVNfUFJPWFkgKHBvcnRhbF9jb250ZXh0 LT5jb250ZXh0KSwKKysgICAgICAgICAgICAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2Nh dGlvbl9nZXRfbWV0aG9kX25hbWUgKGludm9jYXRpb24pLAorKyAgICAgICAgICAgICAgICAgICAg ICAgZ19kYnVzX21lc3NhZ2VfZ2V0X2JvZHkgKG1lc3NhZ2UpLAorKyAgICAgICAgICAgICAgICAg ICAgICAgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwKKysgICAgICAgICAgICAgICAgICAgICAgIC0x LAorKyAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgLyogY2FuY2VsbGFibGUgKi8KKysgICAg ICAgICAgICAgICAgICAgICAgIF9mb3J3YXJkX21ldGhvZF9jYiwgaW52b2NhdGlvbik7CisrICAg IHJldHVybiBUUlVFOworK30KICsKLSsgICAgLyoqCi0rICAgICAqIElCdXNGb250U2V0Omxhbmd1 YWdlOgotKyAgICAgKgotKyAgICAgKiBGb250IGxhbmd1YWdlIG9mIHRoaXMgSUJ1c0ZvbnRTZXQu Ci0rICAgICAqLwotKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0 X2NsYXNzLAotKyAgICAgICAgICAgICAgICAgICAgUFJPUF9MQU5HVUFHRSwKLSsgICAgICAgICAg ICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJsYW5ndWFnZSIsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgImxhbmd1YWdlIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAibGFuZ3Vh Z2UiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICIiLAotKyAgICAgICAgICAgICAgICAgICAg ICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1QpKTsKLSsKLSsgICAgZ190 eXBlX2NsYXNzX2FkZF9wcml2YXRlIChjbGFzcywgc2l6ZW9mIChJQnVzRm9udFNldFByaXZhdGUp KTsKLSsgICAgRlRfSW5pdF9GcmVlVHlwZSAoJm1fZnRsaWJyYXJ5KTsKLSsgICAgbV9zY2FsZWRf Zm9udF90YWJsZSA9IGdfaGFzaF90YWJsZV9uZXdfZnVsbCAoCi0rICAgICAgICAgICAgZ19zdHJf aGFzaCwgZ19zdHJfZXF1YWwsCi0rICAgICAgICAgICAgZ19mcmVlLAotKyAgICAgICAgICAgIChH RGVzdHJveU5vdGlmeSkgY2Fpcm9fc2NhbGVkX2ZvbnRfZGVzdHJveSk7Ci0rICAgIG1faGJfZm9u dF90YWJsZSA9IGdfaGFzaF90YWJsZV9uZXdfZnVsbCAoCi0rICAgICAgICAgICAgZ19zdHJfaGFz aCwgZ19zdHJfZXF1YWwsCi0rICAgICAgICAgICAgZ19mcmVlLAotKyAgICAgICAgICAgIChHRGVz dHJveU5vdGlmeSkgaGJfZm9udF9kZXN0cm95KTsKLSsKLSsgICAgLyogaGJfZ2x5cGhfdCBpcyBu b3QgYXZhaWxhYmxlIGluIFZhbGEgc28gb3ZlcnJpZGUgaXQgd2l0aCBJQnVzR2x5cGguICovCi0r ICAgIGdfYXNzZXJ0IChzaXplb2YgKGR1bW15KSA9PSBzaXplb2YgKGR1bW15MikpOwotKyAgICBn X2Fzc2VydCAoc2l6ZW9mIChkdW1teS5pbmRleCkgPT0gc2l6ZW9mIChkdW1teTIuaW5kZXgpKTsK LSsgICAgZ19hc3NlcnQgKHNpemVvZiAoZHVtbXkueCkgPT0gc2l6ZW9mIChkdW1teTIueCkpOwot KyAgICBnX2Fzc2VydCAoc2l6ZW9mIChkdW1teS55KSA9PSBzaXplb2YgKGR1bW15Mi55KSk7Cisr c3RhdGljIGdib29sZWFuCisraWJ1c19kYnVzX2NvbnRleHRfY2FuY2VsX2hhbmRfd3JpdGluZyAo SUJ1c0RidXNJbnB1dENvbnRleHQgICpvYmplY3QsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0RCdXNNZXRob2RJbnZvY2F0aW9uICppbnZvY2F0aW9uLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAg YXJnX25fc3Ryb2tlcykKKyt7CisrICAgIHJldHVybiBfZm9yd2FyZF9tZXRob2QgKG9iamVjdCwg aW52b2NhdGlvbik7CiArfQogKwotK3N0YXRpYyB2b2lkCi0raWJ1c19mb250c2V0X2luaXQgKElC dXNGb250U2V0ICpmb250c2V0KQorK3N0YXRpYyBnYm9vbGVhbgorK2lidXNfZGJ1c19jb250ZXh0 X2ZvY3VzX2luIChJQnVzRGJ1c0lucHV0Q29udGV4dCAgKm9iamVjdCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0RCdXNNZXRob2RJbnZvY2F0aW9uICppbnZvY2F0aW9uKQogK3sKLSsg ICAgZm9udHNldC0+cHJpdiA9IElCVVNfRk9OVFNFVF9HRVRfUFJJVkFURSAoZm9udHNldCk7Cisr ICAgIHJldHVybiBfZm9yd2FyZF9tZXRob2QgKG9iamVjdCwgaW52b2NhdGlvbik7CiArfQogKwor K3N0YXRpYyBnYm9vbGVhbgorK2lidXNfZGJ1c19jb250ZXh0X2ZvY3VzX291dCAoSUJ1c0RidXNJ bnB1dENvbnRleHQgICpvYmplY3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJ1 c01ldGhvZEludm9jYXRpb24gKmludm9jYXRpb24pCisreworKyAgICByZXR1cm4gX2ZvcndhcmRf bWV0aG9kIChvYmplY3QsIGludm9jYXRpb24pOworK30KICsKLStzdGF0aWMgR09iamVjdCAqCi0r aWJ1c19mb250c2V0X2NvbnN0cnVjdG9yIChHVHlwZSAgICAgICAgICAgICAgICAgICB0eXBlLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgbiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSAgKmFyZ3MpCisr c3RhdGljIGdib29sZWFuCisraWJ1c19kYnVzX2NvbnRleHRfZ2V0X2VuZ2luZSAoSUJ1c0RidXNJ bnB1dENvbnRleHQgICpvYmplY3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RC dXNNZXRob2RJbnZvY2F0aW9uICppbnZvY2F0aW9uKQorK3sKKysgICAgcmV0dXJuIF9mb3J3YXJk X21ldGhvZCAob2JqZWN0LCBpbnZvY2F0aW9uKTsKKyt9CisrCisrc3RhdGljIGdib29sZWFuCisr aWJ1c19kYnVzX2NvbnRleHRfcHJvY2Vzc19oYW5kX3dyaXRpbmdfZXZlbnQgKElCdXNEYnVzSW5w dXRDb250ZXh0ICAqb2JqZWN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHREJ1c01ldGhvZEludm9jYXRpb24gKmludm9jYXRpb24sCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFy Z19jb29yZGluYXRlcykKKyt7CisrICAgIHJldHVybiBfZm9yd2FyZF9tZXRob2QgKG9iamVjdCwg aW52b2NhdGlvbik7CisrfQorKworK3N0YXRpYyBnYm9vbGVhbgorK2lidXNfZGJ1c19jb250ZXh0 X3Byb2Nlc3Nfa2V5X2V2ZW50IChJQnVzRGJ1c0lucHV0Q29udGV4dCAgKm9iamVjdCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCdXNNZXRob2RJbnZvY2F0aW9uICpp bnZvY2F0aW9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAg ICAgICAgICAgICAgICAgIGFyZ19rZXl2YWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgYXJnX2tleWNvZGUsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgYXJnX3N0 YXRlKQorK3sKKysgICAgcmV0dXJuIF9mb3J3YXJkX21ldGhvZCAob2JqZWN0LCBpbnZvY2F0aW9u KTsKKyt9CisrCisrc3RhdGljIGdib29sZWFuCisraWJ1c19kYnVzX2NvbnRleHRfcHJvcGVydHlf YWN0aXZhdGUgKElCdXNEYnVzSW5wdXRDb250ZXh0ICAqb2JqZWN0LAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHREJ1c01ldGhvZEludm9jYXRpb24gKmludm9jYXRpb24s CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAg ICAgICAqYXJnX25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1 aW50ICAgICAgICAgICAgICAgICAgYXJnX3N0YXRlKQorK3sKKysgICAgcmV0dXJuIF9mb3J3YXJk X21ldGhvZCAob2JqZWN0LCBpbnZvY2F0aW9uKTsKKyt9CisrCisrc3RhdGljIGdib29sZWFuCisr aWJ1c19kYnVzX2NvbnRleHRfcmVzZXQgKElCdXNEYnVzSW5wdXRDb250ZXh0ICAqb2JqZWN0LAor KyAgICAgICAgICAgICAgICAgICAgICAgICBHREJ1c01ldGhvZEludm9jYXRpb24gKmludm9jYXRp b24pCisreworKyAgICByZXR1cm4gX2ZvcndhcmRfbWV0aG9kIChvYmplY3QsIGludm9jYXRpb24p OworK30KKysKKytzdGF0aWMgZ2Jvb2xlYW4KKytpYnVzX2RidXNfY29udGV4dF9zZXRfY2FwYWJp bGl0aWVzIChJQnVzRGJ1c0lucHV0Q29udGV4dCAgKm9iamVjdCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHREJ1c01ldGhvZEludm9jYXRpb24gKmludm9jYXRpb24sCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAg ICBhcmdfY2FwcykKKyt7CisrICAgIHJldHVybiBfZm9yd2FyZF9tZXRob2QgKG9iamVjdCwgaW52 b2NhdGlvbik7CisrfQorKworK3N0YXRpYyBnYm9vbGVhbgorK2lidXNfZGJ1c19jb250ZXh0X3Nl dF9jdXJzb3JfbG9jYXRpb24gKElCdXNEYnVzSW5wdXRDb250ZXh0ICAqb2JqZWN0LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVzTWV0aG9kSW52b2NhdGlvbiAq aW52b2NhdGlvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50 ICAgICAgICAgICAgICAgICAgIGFyZ194LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICAgYXJnX3ksCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAgICAgICAgICBhcmdfdywKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgICAgICAg ICAgIGFyZ19oKQorK3sKKysgICAgcmV0dXJuIF9mb3J3YXJkX21ldGhvZCAob2JqZWN0LCBpbnZv Y2F0aW9uKTsKKyt9CisrCisrc3RhdGljIGdib29sZWFuCisraWJ1c19kYnVzX2NvbnRleHRfc2V0 X2N1cnNvcl9sb2NhdGlvbl9yZWxhdGl2ZSAoSUJ1c0RidXNJbnB1dENvbnRleHQgICpvYmplY3Qs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCdXNN ZXRob2RJbnZvY2F0aW9uCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqaW52b2NhdGlvbiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgICAgICAgICAg IGFyZ194LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdpbnQgICAgICAgICAgICAgICAgICAgYXJnX3ksCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAgICAgICAgICBhcmdfdywKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAg ICAgICAgICAgICAgIGFyZ19oKQorK3sKKysgICAgcmV0dXJuIF9mb3J3YXJkX21ldGhvZCAob2Jq ZWN0LCBpbnZvY2F0aW9uKTsKKyt9CisrCisrc3RhdGljIGdib29sZWFuCisraWJ1c19kYnVzX2Nv bnRleHRfc2V0X2VuZ2luZSAoSUJ1c0RidXNJbnB1dENvbnRleHQgICpvYmplY3QsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0RCdXNNZXRob2RJbnZvY2F0aW9uICppbnZvY2F0aW9u LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAq YXJnX25hbWUpCisreworKyAgICByZXR1cm4gX2ZvcndhcmRfbWV0aG9kIChvYmplY3QsIGludm9j YXRpb24pOworK30KKysKKytzdGF0aWMgZ2Jvb2xlYW4KKytpYnVzX2RidXNfY29udGV4dF9zZXRf c3Vycm91bmRpbmdfdGV4dCAoSUJ1c0RidXNJbnB1dENvbnRleHQgICpvYmplY3QsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVzTWV0aG9kSW52b2NhdGlvbiAq aW52b2NhdGlvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Zh cmlhbnQgICAgICAgICAgICAgICphcmdfdGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICBhcmdfY3Vyc29yX3BvcywKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAg ICAgICBhcmdfYW5jaG9yX3BvcykKKyt7CisrICAgIHJldHVybiBfZm9yd2FyZF9tZXRob2QgKG9i amVjdCwgaW52b2NhdGlvbik7CisrfQorKworK3N0YXRpYyB2b2lkCisraWJ1c19wb3J0YWxfY29u dGV4dF9pZmFjZV9pbml0IChJQnVzRGJ1c0lucHV0Q29udGV4dElmYWNlICppZmFjZSkKKyt7Cisr ICAgIGlmYWNlLT5oYW5kbGVfY2FuY2VsX2hhbmRfd3JpdGluZyA9IGlidXNfZGJ1c19jb250ZXh0 X2NhbmNlbF9oYW5kX3dyaXRpbmc7CisrICAgIGlmYWNlLT5oYW5kbGVfZm9jdXNfaW4gPSBpYnVz X2RidXNfY29udGV4dF9mb2N1c19pbjsKKysgICAgaWZhY2UtPmhhbmRsZV9mb2N1c19vdXQgPSBp YnVzX2RidXNfY29udGV4dF9mb2N1c19vdXQ7CisrICAgIGlmYWNlLT5oYW5kbGVfZ2V0X2VuZ2lu ZSA9IGlidXNfZGJ1c19jb250ZXh0X2dldF9lbmdpbmU7CisrICAgIGlmYWNlLT5oYW5kbGVfcHJv Y2Vzc19oYW5kX3dyaXRpbmdfZXZlbnQgPQorKyAgICAgICAgICAgIGlidXNfZGJ1c19jb250ZXh0 X3Byb2Nlc3NfaGFuZF93cml0aW5nX2V2ZW50OworKyAgICBpZmFjZS0+aGFuZGxlX3Byb2Nlc3Nf a2V5X2V2ZW50ID0gaWJ1c19kYnVzX2NvbnRleHRfcHJvY2Vzc19rZXlfZXZlbnQ7CisrICAgIGlm YWNlLT5oYW5kbGVfcHJvcGVydHlfYWN0aXZhdGUgPSBpYnVzX2RidXNfY29udGV4dF9wcm9wZXJ0 eV9hY3RpdmF0ZTsKKysgICAgaWZhY2UtPmhhbmRsZV9yZXNldCA9IGlidXNfZGJ1c19jb250ZXh0 X3Jlc2V0OworKyAgICBpZmFjZS0+aGFuZGxlX3NldF9jYXBhYmlsaXRpZXMgPSBpYnVzX2RidXNf Y29udGV4dF9zZXRfY2FwYWJpbGl0aWVzOworKyAgICBpZmFjZS0+aGFuZGxlX3NldF9jdXJzb3Jf bG9jYXRpb24gPSBpYnVzX2RidXNfY29udGV4dF9zZXRfY3Vyc29yX2xvY2F0aW9uOworKyAgICBp ZmFjZS0+aGFuZGxlX3NldF9jdXJzb3JfbG9jYXRpb25fcmVsYXRpdmUgPQorKyAgICAgICAgICAg IGlidXNfZGJ1c19jb250ZXh0X3NldF9jdXJzb3JfbG9jYXRpb25fcmVsYXRpdmU7CisrICAgIGlm YWNlLT5oYW5kbGVfc2V0X2VuZ2luZSA9IGlidXNfZGJ1c19jb250ZXh0X3NldF9lbmdpbmU7Cisr ICAgIGlmYWNlLT5oYW5kbGVfc2V0X3N1cnJvdW5kaW5nX3RleHQgPSBpYnVzX2RidXNfY29udGV4 dF9zZXRfc3Vycm91bmRpbmdfdGV4dDsKKyt9CisrCisrc3RhdGljIHZvaWQKKytpYnVzX3BvcnRh bF9jb250ZXh0X2luaXQgKElCdXNQb3J0YWxDb250ZXh0ICpwb3J0YWxfY29udGV4dCkKICt7Ci0r ICAgIEdPYmplY3QgKm9iamVjdDsKLSsgICAgSUJ1c0ZvbnRTZXQgKmZvbnRzZXQ7Ci0rICAgIGNv bnN0IGdjaGFyICpmYW1pbHk7Ci0rICAgIGd1aW50IHNpemU7Ci0rCi0rICAgIG9iamVjdCA9IEdf T0JKRUNUX0NMQVNTIChpYnVzX2ZvbnRzZXRfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0b3IgKAot KyAgICAgICAgICAgIHR5cGUsIG4gLGFyZ3MpOwotKyAgICBmb250c2V0ID0gSUJVU19GT05UU0VU IChvYmplY3QpOwotKyAgICBmYW1pbHkgPSBpYnVzX2ZvbnRzZXRfZ2V0X2ZhbWlseSAoZm9udHNl dCk7Ci0rICAgIHNpemUgPSBpYnVzX2ZvbnRzZXRfZ2V0X3NpemUgKGZvbnRzZXQpOwotKyAgICBp YnVzX2ZvbnRzZXRfdXBkYXRlX2ZjZm9udHNldCAoZm9udHNldCk7Ci0rICAgIGlmIChmYW1pbHkg IT0gTlVMTCAmJiBzaXplID4gMCkgewotKyAgICAgICAgLyogY2FjaGUgdGhlIGZvbnQgKi8KLSsg ICAgICAgIGlidXNfZm9udHNldF9jYWlyb19zY2FsZWRfZm9udF9uZXdfd2l0aF9mb250IChmYW1p bHksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZSk7Ci0rICAgIH0KLSsgICAgcmV0dXJuIG9iamVjdDsKICt9CiArCiArc3RhdGljIHZv aWQKLStpYnVzX2ZvbnRzZXRfZGVzdHJveSAoSUJ1c0ZvbnRTZXQgKmZvbnRzZXQpCisraWJ1c19w b3J0YWxfY29udGV4dF9maW5hbGl6ZSAoR09iamVjdCAqb2JqZWN0KQogK3sKLSsgICAgZ19jbGVh cl9wb2ludGVyICgmZm9udHNldC0+cHJpdi0+ZmFtaWx5LCBnX2ZyZWUpOwotKyAgICBnX2NsZWFy X3BvaW50ZXIgKCZmb250c2V0LT5wcml2LT5sYW5ndWFnZSwgZ19mcmVlKTsKKysgICAgSUJ1c1Bv cnRhbENvbnRleHQgKnBvcnRhbF9jb250ZXh0ID0gKElCdXNQb3J0YWxDb250ZXh0ICopb2JqZWN0 OworKworKyAgICBhbGxfY29udGV4dHMgPSBnX2xpc3RfcmVtb3ZlIChhbGxfY29udGV4dHMsIHBv cnRhbF9jb250ZXh0KTsKKysKKysgICAgZ19kYnVzX2ludGVyZmFjZV9za2VsZXRvbl91bmV4cG9y dCAoCisrICAgICAgICAgICAgR19EQlVTX0lOVEVSRkFDRV9TS0VMRVRPTiAocG9ydGFsX2NvbnRl eHQtPnNlcnZpY2UpKTsKKysgICAgZ19kYnVzX2ludGVyZmFjZV9za2VsZXRvbl91bmV4cG9ydCAo CisrICAgICAgICAgICAgR19EQlVTX0lOVEVSRkFDRV9TS0VMRVRPTiAocG9ydGFsX2NvbnRleHQp KTsKKysKKysgICAgZ19mcmVlIChwb3J0YWxfY29udGV4dC0+b3duZXIpOworKyAgICBnX2ZyZWUg KHBvcnRhbF9jb250ZXh0LT5vYmplY3RfcGF0aCk7CisrICAgIGdfb2JqZWN0X3VucmVmIChwb3J0 YWxfY29udGV4dC0+c2VydmljZSk7CisrCisrICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5l Y3RfYnlfZnVuYyAoCisrICAgICAgICAgICAgcG9ydGFsX2NvbnRleHQtPmNvbnRleHQsCisrICAg ICAgICAgICAgR19DQUxMQkFDSyhwb3J0YWxfY29udGV4dF9nX3NpZ25hbCksCisrICAgICAgICAg ICAgcG9ydGFsX2NvbnRleHQpOworKyAgICBnX29iamVjdF91bnJlZiAocG9ydGFsX2NvbnRleHQt PmNvbnRleHQpOworKworKyAgICBHX09CSkVDVF9DTEFTUyAoaWJ1c19wb3J0YWxfY29udGV4dF9w YXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKICt9CiArCiArc3RhdGljIHZvaWQKLStp YnVzX2ZvbnRzZXRfc2V0X3Byb3BlcnR5IChJQnVzRm9udFNldCAgKmZvbnRzZXQsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICBwcm9wX2lkLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IEdWYWx1ZSAqdmFsdWUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgR1BhcmFtU3BlYyAgICpwc3BlYykKKytpYnVzX3BvcnRhbF9jb250ZXh0X3NldF9w cm9wZXJ0eSAoSUJ1c1BvcnRhbENvbnRleHQgKnBvcnRhbF9jb250ZXh0LAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgcHJvcF9pZCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR1ZhbHVlICAgICAgKnZhbHVlLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVjICAgICAgICAqcHNw ZWMpCiArewogKyAgICBzd2l0Y2ggKHByb3BfaWQpIHsKLSsgICAgY2FzZSBQUk9QX0ZBTUlMWToK LSsgICAgICAgIGlidXNfZm9udHNldF9zZXRfZmFtaWx5IChmb250c2V0LCBnX3ZhbHVlX2dldF9z dHJpbmcgKHZhbHVlKSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX1NJWkU6Ci0r ICAgICAgICBpYnVzX2ZvbnRzZXRfc2V0X3NpemUgKGZvbnRzZXQsIGdfdmFsdWVfZ2V0X3VpbnQg KHZhbHVlKSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX0xBTkdVQUdFOgotKyAg ICAgICAgaWJ1c19mb250c2V0X3NldF9sYW5ndWFnZSAoZm9udHNldCwgZ192YWx1ZV9nZXRfc3Ry aW5nICh2YWx1ZSkpOworKyAgICBjYXNlIFBST1BfQ09OVEVOVF9UWVBFOgorKyAgICAgICAgZ19k YnVzX3Byb3h5X2NhbGwgKEdfREJVU19QUk9YWSAocG9ydGFsX2NvbnRleHQtPmNvbnRleHQpLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AuREJ1cy5Qcm9wZXJ0 aWVzLlNldCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25ldyAoIihz c3YpIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0lO VEVSRkFDRV9JTlBVVF9DT05URVhULAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJDb250ZW50VHlwZSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ192YWx1ZV9nZXRfdmFyaWFudCAodmFsdWUpKSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0xLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIC8qIGNhbmNl bGxhYmxlICovCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgLyogY2FsbGJhY2sg Ki8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMICAvKiB1c2VyX2RhdGEgKi8KKysg ICAgICAgICAgICAgICAgICAgICAgICAgICApOwogKyAgICAgICAgYnJlYWs7CiArICAgIGRlZmF1 bHQ6Ci0rICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKGZvbnRzZXQs IHByb3BfaWQsIHBzcGVjKTsKKysgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJU WV9JRCAocG9ydGFsX2NvbnRleHQsIHByb3BfaWQsIHBzcGVjKTsKICsgICAgfQogK30KICsKICtz dGF0aWMgdm9pZAotK2lidXNfZm9udHNldF9nZXRfcHJvcGVydHkgKElCdXNGb250U2V0ICpmb250 c2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgIHByb3BfaWQs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhbHVlICAgICAgICAqdmFsdWUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAgICAqcHNwZWMpCisraWJ1c19wb3J0 YWxfY29udGV4dF9nZXRfcHJvcGVydHkgKElCdXNQb3J0YWxDb250ZXh0ICpwb3J0YWxfY29udGV4 dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAg IHByb3BfaWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYWx1ZSAgICAg ICAgICAgICp2YWx1ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFt U3BlYyAgICAgICAgKnBzcGVjKQogK3sKICsgICAgc3dpdGNoIChwcm9wX2lkKSB7Ci0rICAgIGNh c2UgUFJPUF9GQU1JTFk6Ci0rICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBpYnVz X2ZvbnRzZXRfZ2V0X2ZhbWlseSAoZm9udHNldCkpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNh c2UgUFJPUF9TSVpFOgotKyAgICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIGlidXNfZm9u dHNldF9nZXRfc2l6ZSAoZm9udHNldCkpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJP UF9MQU5HVUFHRToKLSsgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIGlidXNfZm9u dHNldF9nZXRfbGFuZ3VhZ2UgKGZvbnRzZXQpKTsKKysgICAgY2FzZSBQUk9QX0NPTlRFTlRfVFlQ RToKKysgICAgICAgIGdfd2FybmluZyAoIk5vIHN1cHBvcnQgZm9yIHNldHRpbmcgY29udGVudCB0 eXBlIik7CiArICAgICAgICBicmVhazsKICsgICAgZGVmYXVsdDoKLSsgICAgICAgIEdfT0JKRUNU X1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAoZm9udHNldCwgcHJvcF9pZCwgcHNwZWMpOworKyAg ICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChwb3J0YWxfY29udGV4dCwg cHJvcF9pZCwgcHNwZWMpOwogKyAgICB9CiArfQogKwotK3N0YXRpYyBjYWlyb19zY2FsZWRfZm9u dF90ICoKLStpYnVzX2ZvbnRzZXRfY2Fpcm9fc2NhbGVkX2ZvbnRfbmV3X3dpdGhfZm9udCAoY29u c3QgZ2NoYXIgKmZhbWlseSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3VpbnQgICAgICAgIHNpemUpCisrc3RhdGljIGdib29sZWFuCisraWJ1c19wb3J0 YWxfY29udGV4dF9nX2F1dGhvcml6ZV9tZXRob2QgKEdEQnVzSW50ZXJmYWNlU2tlbGV0b24gKmlu dGVyZmFjZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCdXNN ZXRob2RJbnZvY2F0aW9uICAqaW52b2NhdGlvbikKICt7Ci0rICAgIGdjaGFyICpmb250X25hbWU7 Ci0rICAgIGNhaXJvX3NjYWxlZF9mb250X3QgKnNjYWxlZF9mb250ID0gTlVMTDsKLSsgICAgRmNQ YXR0ZXJuICpwYXR0ZXJuLCAqcmVzb2x2ZWQ7Ci0rICAgIEZjUmVzdWx0IHJlc3VsdDsKLSsgICAg Y2Fpcm9fZm9udF9vcHRpb25zX3QgKmZvbnRfb3B0aW9uczsKLSsgICAgZG91YmxlIHBpeGVsX3Np emUgPSAwLjsKLSsgICAgRmNNYXRyaXggZmNfbWF0cml4LCAqZmNfbWF0cml4X3ZhbDsKLSsgICAg Y2Fpcm9fZm9udF9mYWNlX3QgKmNhaXJvX2ZhY2UgPSBOVUxMOwotKyAgICBjYWlyb19tYXRyaXhf dCBmb250X21hdHJpeDsKLSsgICAgY2Fpcm9fbWF0cml4X3QgY3RtOwotKyAgICBpbnQgaTsKKysg ICAgSUJ1c1BvcnRhbENvbnRleHQgKnBvcnRhbF9jb250ZXh0ID0gKElCdXNQb3J0YWxDb250ZXh0 ICopaW50ZXJmYWNlOwogKwotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoZmFtaWx5ICE9IE5V TEwsIE5VTEwpOwotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAobV9zY2FsZWRfZm9udF90YWJs ZSAhPSBOVUxMLCBOVUxMKTsKLSsKLSsgICAgZm9udF9uYW1lID0gZ19zdHJkdXBfcHJpbnRmICgi JXMgJXUiLCBmYW1pbHksIHNpemUpOwotKyAgICBzY2FsZWRfZm9udCA9IGdfaGFzaF90YWJsZV9s b29rdXAgKG1fc2NhbGVkX2ZvbnRfdGFibGUsIGZvbnRfbmFtZSk7Ci0rICAgIGlmIChzY2FsZWRf Zm9udCAhPSBOVUxMKSB7Ci0rICAgICAgICBnX2ZyZWUgKGZvbnRfbmFtZSk7Ci0rICAgICAgICBy ZXR1cm4gc2NhbGVkX2ZvbnQ7Ci0rICAgIH0KLSsgICAgcGF0dGVybiA9IEZjUGF0dGVybkNyZWF0 ZSAoKTsKLSsgICAgRmNQYXR0ZXJuQWRkU3RyaW5nIChwYXR0ZXJuLCBGQ19GQU1JTFksIChGY0No YXI4KikgZmFtaWx5KTsKLSsgICAgRmNQYXR0ZXJuQWRkRG91YmxlIChwYXR0ZXJuLCBGQ19TSVpF LCAoZG91YmxlKSBzaXplKTsKLSsgICAgRmNQYXR0ZXJuQWRkRG91YmxlIChwYXR0ZXJuLCBGQ19E UEksIDk2KTsKLSsgICAgRmNDb25maWdTdWJzdGl0dXRlKE5VTEwsIHBhdHRlcm4sIEZjTWF0Y2hQ YXR0ZXJuKTsKLSsgICAgZm9udF9vcHRpb25zID0gY2Fpcm9fZm9udF9vcHRpb25zX2NyZWF0ZSAo KTsKLSsgICAgY2Fpcm9fZnRfZm9udF9vcHRpb25zX3N1YnN0aXR1dGUgKGZvbnRfb3B0aW9ucywg cGF0dGVybik7Ci0rICAgIEZjRGVmYXVsdFN1YnN0aXR1dGUgKHBhdHRlcm4pOwotKyAgICByZXNv bHZlZCA9IEZjRm9udE1hdGNoIChOVUxMLCBwYXR0ZXJuLCAmcmVzdWx0KTsKLSsgICAgRmNQYXR0 ZXJuRGVzdHJveSAocGF0dGVybik7Ci0rICAgIEZjUGF0dGVybkdldERvdWJsZSAocmVzb2x2ZWQs IEZDX1BJWEVMX1NJWkUsIDAsICZwaXhlbF9zaXplKTsKLSsgICAgaWYgKHBpeGVsX3NpemUgPT0g MC4pCi0rICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gc2NhbGVkIHRoZSBmb250OiAlcyAl dSIsIGZhbWlseSwgc2l6ZSk7Ci0rICAgIGNhaXJvX2ZhY2UgPSBjYWlyb19mdF9mb250X2ZhY2Vf Y3JlYXRlX2Zvcl9wYXR0ZXJuIChyZXNvbHZlZCk7Ci0rICAgIEZjTWF0cml4SW5pdCAoJmZjX21h dHJpeCk7Ci0rICAgIGZvciAoaSA9IDA7Ci0rICAgICAgICAgRmNQYXR0ZXJuR2V0TWF0cml4IChy ZXNvbHZlZCwgRkNfTUFUUklYLCBpLCAmZmNfbWF0cml4X3ZhbCkKLSsgICAgICAgICAgICAgICAg ID09IEZjUmVzdWx0TWF0Y2g7Ci0rICAgICAgICAgaSsrKSB7Ci0rICAgICAgICBGY01hdHJpeE11 bHRpcGx5ICgmZmNfbWF0cml4LCAmZmNfbWF0cml4LCBmY19tYXRyaXhfdmFsKTsKKysgICAgaWYg KGdfc3RyY21wMCAoZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX2dldF9zZW5kZXIgKGludm9jYXRp b24pLAorKyAgICAgICAgICAgICAgICAgICBwb3J0YWxfY29udGV4dC0+b3duZXIpID09IDApIHsK KysgICAgICAgIHJldHVybiBUUlVFOwogKyAgICB9Ci0rICAgIEZjUGF0dGVybkRlc3Ryb3kgKHJl c29sdmVkKTsKLSsgICAgY2Fpcm9fbWF0cml4X2luaXQgKCZmb250X21hdHJpeCwKLSsgICAgICAg ICAgICAgICAgICAgICAgIGZjX21hdHJpeC54eCwgLWZjX21hdHJpeC55eCwKLSsgICAgICAgICAg ICAgICAgICAgICAgIC1mY19tYXRyaXgueHksIGZjX21hdHJpeC55eSwKLSsgICAgICAgICAgICAg ICAgICAgICAgIDAuLCAwLik7Ci0rICAgIGlmIChwaXhlbF9zaXplICE9IDAuKQotKyAgICAgICAg Y2Fpcm9fbWF0cml4X3NjYWxlICgmZm9udF9tYXRyaXgsIHBpeGVsX3NpemUsIHBpeGVsX3NpemUp OwotKyAgICBjYWlyb19tYXRyaXhfaW5pdF9pZGVudGl0eSAoJmN0bSk7Ci0rICAgIHNjYWxlZF9m b250ID0gY2Fpcm9fc2NhbGVkX2ZvbnRfY3JlYXRlIChjYWlyb19mYWNlLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvbnRfbWF0cml4LCAmY3RtLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udF9vcHRpb25zKTsK LSsgICAgY2Fpcm9fZm9udF9mYWNlX2Rlc3Ryb3kgKGNhaXJvX2ZhY2UpOwotKyAgICBpZiAoZm9u dF9uYW1lKQotKyAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydChtX3NjYWxlZF9mb250X3RhYmxl LCBmb250X25hbWUsIHNjYWxlZF9mb250KTsKLSsKLSsgICAgcmV0dXJuIHNjYWxlZF9mb250Owot K30KICsKLStzdGF0aWMgaGJfZm9udF90ICoKLStpYnVzX2ZvbnRzZXRfaGJfZm9udF9uZXdfd2l0 aF9mb250X3BhdGggKGNvbnN0IGdjaGFyICpmb250X3BhdGgpCi0rewotKyAgICBoYl9mb250X3Qg KmhiX2ZvbnQ7Ci0rICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotKyAgICBHTWFwcGVkRmlsZSAq bWY7Ci0rICAgIGNoYXIgKmZvbnRfZGF0YSA9IE5VTEw7Ci0rICAgIGdzaXplIGxlbjsKLSsgICAg aGJfYmxvYl90ICpoYl9ibG9iOwotKyAgICBoYl9mYWNlX3QgKmhiX2ZhY2U7Ci0rCi0rICAgIGdf cmV0dXJuX3ZhbF9pZl9mYWlsIChmb250X3BhdGggIT0gTlVMTCwgTlVMTCk7Ci0rICAgIGdfcmV0 dXJuX3ZhbF9pZl9mYWlsIChtX2hiX2ZvbnRfdGFibGUgIT0gTlVMTCwgTlVMTCk7Ci0rCi0rICAg IGhiX2ZvbnQgPSBnX2hhc2hfdGFibGVfbG9va3VwIChtX2hiX2ZvbnRfdGFibGUsIGZvbnRfcGF0 aCk7Ci0rICAgIGlmIChoYl9mb250ICE9IE5VTEwpCi0rICAgICAgICByZXR1cm4gaGJfZm9udDsK LSsKLSsgICAgbWYgPSBnX21hcHBlZF9maWxlX25ldyAoZm9udF9wYXRoLCBGQUxTRSwgJmVycm9y KTsKLSsgICAgaWYgKG1mID09IE5VTEwpIHsKLSsgICAgICAgIGdfd2FybmluZyAoIk5vdCBmb3Vu ZCBmb250ICVzIiwgZm9udF9wYXRoKTsKLSsgICAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0r ICAgIGZvbnRfZGF0YSA9IGdfbWFwcGVkX2ZpbGVfZ2V0X2NvbnRlbnRzIChtZik7Ci0rICAgIGxl biA9IGdfbWFwcGVkX2ZpbGVfZ2V0X2xlbmd0aCAobWYpOwotKyAgICBpZiAobGVuID09IDApIHsK LSsgICAgICAgIGdfd2FybmluZyAoInplcm8gc2l6ZSBmb250ICVzIiwgZm9udF9wYXRoKTsKLSsg ICAgICAgIGdfbWFwcGVkX2ZpbGVfdW5yZWYgKG1mKTsKLSsgICAgICAgIHJldHVybiBOVUxMOwot KyAgICB9Ci0rICAgIGhiX2Jsb2IgPSBoYl9ibG9iX2NyZWF0ZSAoZm9udF9kYXRhLCBsZW4sCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEJfTUVNT1JZX01PREVfUkVBRE9OTFlfTUFZ X01BS0VfV1JJVEFCTEUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWYsIChoYl9k ZXN0cm95X2Z1bmNfdClnX21hcHBlZF9maWxlX3VucmVmKTsKLSsgICAgaGJfZmFjZSA9IGhiX2Zh Y2VfY3JlYXRlIChoYl9ibG9iLCAwKTsKLSsgICAgaGJfYmxvYl9kZXN0cm95IChoYl9ibG9iKTsK LSsgICAgaGJfZm9udCA9IGhiX2ZvbnRfY3JlYXRlIChoYl9mYWNlKTsKLSsgICAgdW5zaWduZWQg aW50IHVwZW0gPSBoYl9mYWNlX2dldF91cGVtIChoYl9mYWNlKTsKLSsgICAgaGJfZm9udF9zZXRf c2NhbGUgKGhiX2ZvbnQsIHVwZW0sIHVwZW0pOwotKyAgICBoYl9mYWNlX2Rlc3Ryb3kgKGhiX2Zh Y2UpOwotKyAgICBoYl9vdF9mb250X3NldF9mdW5jcyAoaGJfZm9udCk7Ci0rICAgIGdfaGFzaF90 YWJsZV9pbnNlcnQgKG1faGJfZm9udF90YWJsZSwgZ19zdHJkdXAgKGZvbnRfcGF0aCksIGhiX2Zv bnQpOwotKwotKyAgICByZXR1cm4gaGJfZm9udDsKKysgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0 aW9uX3JldHVybl9lcnJvciAoaW52b2NhdGlvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR19EQlVTX0VSUk9SLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHX0RCVVNfRVJST1JfRkFJTEVELAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWNjZXNzIGRlbmllZCIpOworKyAgICByZXR1 cm4gRkFMU0U7CiArfQogKworKwogK3N0YXRpYyB2b2lkCi0rZ2V0X2ZvbnRfZXh0ZW50c193aXRo X3NjYWxlZF9mb250IChjYWlyb19zY2FsZWRfZm9udF90ICpzY2FsZWRfZm9udCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhbmdvUmVjdGFuZ2xlICAgICAgKmZvbnRfcmVj dCkKKytpYnVzX3BvcnRhbF9jb250ZXh0X2NsYXNzX2luaXQgKElCdXNQb3J0YWxDb250ZXh0Q2xh c3MgKmtsYXNzKQogK3sKLSsgICAgY2Fpcm9fZm9udF9leHRlbnRzX3QgZm9udF9leHRlbnRzOwor KyAgICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7CisrICAgIEdEQnVzSW50ZXJmYWNlU2tl bGV0b25DbGFzcyAqc2tlbGV0b25fY2xhc3M7CiArCi0rICAgIGdfYXNzZXJ0IChzY2FsZWRfZm9u dCAhPSBOVUxMICYmIGZvbnRfcmVjdCAhPSBOVUxMKTsKKysgICAgZ29iamVjdF9jbGFzcyA9IEdf T0JKRUNUX0NMQVNTIChrbGFzcyk7CisrICAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplICA9IGli dXNfcG9ydGFsX2NvbnRleHRfZmluYWxpemU7CisrICAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9w ZXJ0eSAgPQorKyAgICAgICAgICAgIChHT2JqZWN0U2V0UHJvcGVydHlGdW5jKSBpYnVzX3BvcnRh bF9jb250ZXh0X3NldF9wcm9wZXJ0eTsKKysgICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5 ICA9CisrICAgICAgICAgICAgKEdPYmplY3RHZXRQcm9wZXJ0eUZ1bmMpIGlidXNfcG9ydGFsX2Nv bnRleHRfZ2V0X3Byb3BlcnR5OwogKwotKyAgICBjYWlyb19zY2FsZWRfZm9udF9leHRlbnRzIChz Y2FsZWRfZm9udCwgJmZvbnRfZXh0ZW50cyk7Ci0rICAgIGZvbnRfcmVjdC0+eCA9IDA7Ci0rICAg IGZvbnRfcmVjdC0+eSA9IC0gcGFuZ29fdW5pdHNfZnJvbV9kb3VibGUgKGZvbnRfZXh0ZW50cy5h c2NlbnQpOwotKyAgICBmb250X3JlY3QtPndpZHRoID0gMDsKLSsgICAgZm9udF9yZWN0LT5oZWln aHQgPSBwYW5nb191bml0c19mcm9tX2RvdWJsZSAoCi0rICAgICAgICAgICAgZm9udF9leHRlbnRz LmFzY2VudCArIGZvbnRfZXh0ZW50cy5kZXNjZW50KTsKLSt9CisrICAgIHNrZWxldG9uX2NsYXNz ID0gR19EQlVTX0lOVEVSRkFDRV9TS0VMRVRPTl9DTEFTUyhrbGFzcyk7CisrICAgIHNrZWxldG9u X2NsYXNzLT5nX2F1dGhvcml6ZV9tZXRob2QgPSBpYnVzX3BvcnRhbF9jb250ZXh0X2dfYXV0aG9y aXplX21ldGhvZDsKICsKLStzdGF0aWMgdm9pZAotK2dldF9nbHlwaF9leHRlbnRzX3dpdGhfc2Nh bGVkX2hiX2ZvbnQgKGNvbnN0IGdjaGFyICAgICAgICAgICpzdHIsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCAgKnNjYWxlZF9mb250 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhiX2ZvbnRfdCAgICAg ICAgICAgICpoYl9mb250LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFBhbmdvUmVjdGFuZ2xlICAgICAgICpmb250X3JlY3QsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSUJ1c0NhaXJvTGluZSAgICAgICAqKmNhaXJvX2xpbmVzLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZjQ2hhcjggICAgICAgICAgICAg ICpmYWxsYmFja19mYW1pbHkpCi0rewotKyAgICBnYm9vbGVhbiBoYXNfdW5rbm93bl9nbHlwaCA9 IEZBTFNFOwotKyAgICBoYl9idWZmZXJfdCAqaGJfYnVmZmVyOwotKyAgICB1bnNpZ25lZCBpbnQg bGVuLCBuLCBpOwotKyAgICBoYl9nbHlwaF9pbmZvX3QgKmluZm87Ci0rICAgIGhiX2dseXBoX3Bv c2l0aW9uX3QgKnBvczsKLSsgICAgZG91YmxlIHg7Ci0rICAgIGNhaXJvX2dseXBoX3QgKmdseXBo OwotKyAgICBjYWlyb190ZXh0X2V4dGVudHNfdCB0ZXh0X2V4dGVudHMgPSB7IDAsIH07Ci0rCi0r ICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHN0ciAhPSBOVUxMKTsKLSsKLSsgICAgaGJfYnVmZmVyID0g aGJfYnVmZmVyX2NyZWF0ZSAoKTsKLSsgICAgaGJfYnVmZmVyX2FkZF91dGY4IChoYl9idWZmZXIs IHN0ciwgLTEsIDAsIC0xKTsKLSsgICAgaGJfYnVmZmVyX2d1ZXNzX3NlZ21lbnRfcHJvcGVydGll cyAoaGJfYnVmZmVyKTsKLSsgICAgZm9yIChuID0gMDsgKmNhaXJvX2xpbmVzICYmICgqY2Fpcm9f bGluZXMpW25dLnNjYWxlZF9mb250OyBuKyspOwotKyAgICBpZiAobiA9PSAwKQotKyAgICAgICAg KmNhaXJvX2xpbmVzID0gZ19uZXcwIChJQnVzQ2Fpcm9MaW5lLCAyKTsKLSsgICAgZWxzZQotKyAg ICAgICAgKmNhaXJvX2xpbmVzID0gZ19yZW5ldyAoSUJ1c0NhaXJvTGluZSwgKmNhaXJvX2xpbmVz LCBuICsgMik7Ci0rICAgICgqY2Fpcm9fbGluZXMpW24gKyAxXS5zY2FsZWRfZm9udCA9IE5VTEw7 Ci0rICAgICgqY2Fpcm9fbGluZXMpW24gKyAxXS5udW1fZ2x5cGhzID0gMDsKLSsgICAgKCpjYWly b19saW5lcylbbiArIDFdLmdseXBocyA9IE5VTEw7Ci0rICAgIGhiX3NoYXBlIChoYl9mb250LCBo Yl9idWZmZXIsIE5VTEwsIDApOwotKyAgICBsZW4gPSBoYl9idWZmZXJfZ2V0X2xlbmd0aCAoaGJf YnVmZmVyKTsKLSsgICAgaW5mbyA9IGhiX2J1ZmZlcl9nZXRfZ2x5cGhfaW5mb3MgKGhiX2J1ZmZl ciwgTlVMTCk7Ci0rICAgIHBvcyA9IGhiX2J1ZmZlcl9nZXRfZ2x5cGhfcG9zaXRpb25zIChoYl9i dWZmZXIsIE5VTEwpOwotKyAgICAoKmNhaXJvX2xpbmVzKVtuXS5zY2FsZWRfZm9udCA9IHNjYWxl ZF9mb250OwotKyAgICAoKmNhaXJvX2xpbmVzKVtuXS5udW1fZ2x5cGhzID0gbGVuOwotKyAgICAo KmNhaXJvX2xpbmVzKVtuXS5nbHlwaHMgPSAoSUJ1c0dseXBoKikgY2Fpcm9fZ2x5cGhfYWxsb2Nh dGUgKGxlbiArIDEpOwotKyAgICB4ID0gMC47Ci0rICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkr KykgewotKyAgICAgICAgaGJfY29kZXBvaW50X3QgYyA9IGluZm9baV0uY29kZXBvaW50OwotKyAg ICAgICAgaWYgKGMpIHsKLSsgICAgICAgICAgICAoKmNhaXJvX2xpbmVzKVtuXS5nbHlwaHNbaV0u aW5kZXggPSBpbmZvW2ldLmNvZGVwb2ludDsKLSsgICAgICAgICAgICAoKmNhaXJvX2xpbmVzKVtu XS5nbHlwaHNbaV0ueCA9IHg7Ci0rICAgICAgICAgICAgKCpjYWlyb19saW5lcylbbl0uZ2x5cGhz W2ldLnkgPSAtZm9udF9yZWN0LT55IC8gUEFOR09fU0NBTEU7Ci0rICAgICAgICAgICAgZ2x5cGgg PSAoY2Fpcm9fZ2x5cGhfdCAqKSAmKCgqY2Fpcm9fbGluZXMpW25dLmdseXBoc1tpXSk7Ci0rICAg ICAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfZ2x5cGhfZXh0ZW50cyAoc2NhbGVkX2ZvbnQsIGds eXBoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsICZ0 ZXh0X2V4dGVudHMpOwotKyAgICAgICAgICAgIHggKz0gdGV4dF9leHRlbnRzLndpZHRoOwotKyAg ICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBoYXNfdW5rbm93bl9nbHlwaCA9IFRSVUU7Ci0r ICAgICAgICAgICAgYyA9IGdfdXRmOF9nZXRfY2hhciAoc3RyKTsKLSsgICAgICAgICAgICAoKmNh aXJvX2xpbmVzKVtuXS5nbHlwaHNbaV0uaW5kZXggPSBQQU5HT19HRVRfVU5LTk9XTl9HTFlQSCAo Yyk7Ci0rICAgICAgICAgICAgKCpjYWlyb19saW5lcylbbl0uZ2x5cGhzW2ldLnggPSB4OwotKyAg ICAgICAgICAgICgqY2Fpcm9fbGluZXMpW25dLmdseXBoc1tpXS55ID0gLWZvbnRfcmVjdC0+eSAv IFBBTkdPX1NDQUxFOwotKyAgICAgICAgICAgIGdseXBoID0gKGNhaXJvX2dseXBoX3QgKikgJigo KmNhaXJvX2xpbmVzKVtuXS5nbHlwaHNbaV0pOwotKyAgICAgICAgICAgIGNhaXJvX3NjYWxlZF9m b250X2dseXBoX2V4dGVudHMgKHNjYWxlZF9mb250LCBnbHlwaCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAmdGV4dF9leHRlbnRzKTsKLSsgICAgICAg ICAgICB4ICs9IDEwOwotKyAgICAgICAgfQotKyAgICB9Ci0rICAgICgqY2Fpcm9fbGluZXMpW25d LmdseXBoc1tpXS5pbmRleCA9IC0xOwotKyAgICAoKmNhaXJvX2xpbmVzKVtuXS5nbHlwaHNbaV0u eCA9IDA7Ci0rICAgICgqY2Fpcm9fbGluZXMpW25dLmdseXBoc1tpXS55ID0gMDsKLSsgICAgZ2x5 cGggPSAoY2Fpcm9fZ2x5cGhfdCAqKSAoKmNhaXJvX2xpbmVzKVtuXS5nbHlwaHM7Ci0rICAgIGNh aXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMgKHNjYWxlZF9mb250LCBnbHlwaCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuLCAmdGV4dF9leHRlbnRzKTsKLSsg ICAgaWYgKHRleHRfZXh0ZW50cy53aWR0aCkgewotKyAgICAgICAgZm9udF9yZWN0LT53aWR0aCA9 IHBhbmdvX3VuaXRzX2Zyb21fZG91YmxlICh0ZXh0X2V4dGVudHMud2lkdGgpOwotKyAgICB9IGVs c2UgewotKyAgICAgICAgZm9udF9yZWN0LT53aWR0aCA9IGZvbnRfcmVjdC0+aGVpZ2h0OwotKyAg ICB9Ci0rICAgIGlmIChoYXNfdW5rbm93bl9nbHlwaCAmJiBmYWxsYmFja19mYW1pbHkgIT0gTlVM TCkgewotKyAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCAgKnVua25vd25fZm9udDsKLSsgICAg ICAgIHVua25vd25fZm9udCA9IGlidXNfZm9udHNldF9jYWlyb19zY2FsZWRfZm9udF9uZXdfd2l0 aF9mb250ICgKLSsgICAgICAgICAgICAoY29uc3QgZ2NoYXIgKikgZmFsbGJhY2tfZmFtaWx5LAot KyAgICAgICAgICAgIFVOS05PV05fRk9OVF9TSVpFKTsKLSsgICAgICAgICgqY2Fpcm9fbGluZXMp W25dLnNjYWxlZF9mb250ID0gdW5rbm93bl9mb250OwotKyAgICB9Ci0rICAgIGhiX2J1ZmZlcl9k ZXN0cm95IChoYl9idWZmZXIpOworKyAgICBpYnVzX2RidXNfaW5wdXRfY29udGV4dF9vdmVycmlk ZV9wcm9wZXJ0aWVzIChnb2JqZWN0X2NsYXNzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0NPTlRFTlRfVFlQRSk7CiArfQogKwogK3N0YXRp YyB2b2lkCi0rZ2V0X3N0cmluZ19leHRlbnRzX3dpdGhfZm9udCAoY29uc3QgZ2NoYXIgICAgICAg ICAgICAqc3RyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvbnRQZXJDaGFyICAg ICAgICAgICAgKmJ1ZmYsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9fcmVj dGFuZ2xlX2ludF90ICAqcmVjdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVz Q2Fpcm9MaW5lICAgICAgICAgKipjYWlyb19saW5lcykKKytwb3J0YWxfY29udGV4dF9nX3NpZ25h bCAoR0RCdXNQcm94eSAgICAgICAgKnByb3h5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBnY2hhciAgICAgICAqc2VuZGVyX25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGdjaGFyICAgICAgICpzaWduYWxfbmFtZSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgR1ZhcmlhbnQgICAgICAgICAgKnBhcmFtZXRlcnMsCisrICAgICAgICAgICAgICAgICAgICAg ICAgIElCdXNQb3J0YWxDb250ZXh0ICpwb3J0YWxfY29udGV4dCkKICt7Ci0rICAgIEZjQ2hhcjgg KmZhbWlseSA9IE5VTEw7Ci0rICAgIEZjQ2hhcjggKmZvbnRfcGF0aCA9IE5VTEw7Ci0rICAgIGd1 aW50IHNpemUgPSAwOwotKyAgICBjYWlyb19zY2FsZWRfZm9udF90ICpzY2FsZWRfZm9udCA9IE5V TEw7Ci0rICAgIFBhbmdvUmVjdGFuZ2xlIGZvbnRfcmVjdCA9IHsgMCwgfTsKLSsgICAgaGJfZm9u dF90ICpoYl9mb250OwotKwotKyAgICBnX3JldHVybl9pZl9mYWlsIChzdHIgIT0gTlVMTCk7Ci0r ICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGJ1ZmYgIT0gTlVMTCAmJiBidWZmLT5mY2ZvbnQgIT0gTlVM TCk7Ci0rCi0rICAgIEZjUGF0dGVybkdldFN0cmluZyAoYnVmZi0+ZmNmb250LCBGQ19GQU1JTFks IDAsICZmYW1pbHkpOwotKyAgICBnX3JldHVybl9pZl9mYWlsIChmYW1pbHkgIT0gTlVMTCk7Ci0r ICAgIHNpemUgPSBtX3NpemU7Ci0rICAgIGlmIChzaXplID09IDApIHsKLSsgICAgICAgIGdfd2Fy bmluZyAoIkZvbnQgc2l6ZSBpcyBub3QgcmlnaHQgZm9yIGZvbnQgJXMuIiwgZmFtaWx5KTsKLSsg ICAgICAgIHNpemUgPSAxNDsKLSsgICAgfQotKyAgICBzY2FsZWRfZm9udCA9IGlidXNfZm9udHNl dF9jYWlyb19zY2FsZWRfZm9udF9uZXdfd2l0aF9mb250ICgKLSsgICAgICAgICAgICAoY29uc3Qg Z2NoYXIgKikgZmFtaWx5LAotKyAgICAgICAgICAgIHNpemUpOwotKyAgICBnX3JldHVybl9pZl9m YWlsIChzY2FsZWRfZm9udCAhPSBOVUxMKTsKLSsgICAgZ2V0X2ZvbnRfZXh0ZW50c193aXRoX3Nj YWxlZF9mb250IChzY2FsZWRfZm9udCwgJmZvbnRfcmVjdCk7Ci0rCi0rICAgIEZjUGF0dGVybkdl dFN0cmluZyAoYnVmZi0+ZmNmb250LCBGQ19GSUxFLCAwLCAmZm9udF9wYXRoKTsKLSsgICAgZ19y ZXR1cm5faWZfZmFpbCAoZm9udF9wYXRoICE9IE5VTEwpOwotKyAgICBoYl9mb250ID0gaWJ1c19m b250c2V0X2hiX2ZvbnRfbmV3X3dpdGhfZm9udF9wYXRoICgKLSsgICAgICAgICAgICAoY29uc3Qg Z2NoYXIgKikgZm9udF9wYXRoKTsKLSsgICAgaWYgKGhiX2ZvbnQgPT0gTlVMTCkKKysgICAgR0Vy cm9yICplcnJvciA9IE5VTEw7CisrICAgIEdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbjsKKysK KysgICAgaWYgKGdfc3RyY21wMCAoc2VuZGVyX25hbWUsIElCVVNfU0VSVklDRV9JQlVTKSAhPSAw KQogKyAgICAgICAgcmV0dXJuOwotKyAgICBnZXRfZ2x5cGhfZXh0ZW50c193aXRoX3NjYWxlZF9o Yl9mb250IChzdHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNjYWxlZF9mb250LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBoYl9mb250LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm Zm9udF9yZWN0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj YWlyb19saW5lcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmFtaWx5KTsKLSsgICAgcmVjdC0+d2lkdGggKz0gZm9udF9yZWN0LndpZHRoIC8gUEFOR09fU0NB TEU7Ci0rICAgIHJlY3QtPmhlaWdodCArPSBmb250X3JlY3QuaGVpZ2h0IC8gUEFOR09fU0NBTEU7 CisrCisrICAgIGNvbm5lY3Rpb24gPSBnX2RidXNfaW50ZXJmYWNlX3NrZWxldG9uX2dldF9jb25u ZWN0aW9uICgKKysgICAgICAgICAgICBHX0RCVVNfSU5URVJGQUNFX1NLRUxFVE9OIChwb3J0YWxf Y29udGV4dCkpOworKyAgICBpZiAoIWdfZGJ1c19jb25uZWN0aW9uX2VtaXRfc2lnbmFsIChjb25u ZWN0aW9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0YWxf Y29udGV4dC0+b3duZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBvcnRhbF9jb250ZXh0LT5vYmplY3RfcGF0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSUJVU19JTlRFUkZBQ0VfSU5QVVRfQ09OVEVYVCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsX25hbWUsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcikpIHsKKysgICAgICAgIGdfd2FybmluZyAo IlVuYWJsZSB0byBlbWl0IHNpZ25hbCAlczogJXMiLCBzaWduYWxfbmFtZSwgZXJyb3ItPm1lc3Nh Z2UpOworKyAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7CisrICAgIH0KKysKKysgICAgZ19z aWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lIChwcm94eSwgImctc2lnbmFsIik7CiArfQogKwot K3N0YXRpYyBGVF9GYWNlCi0raWJ1c19mb250c2V0X2dldF9mdGZhY2VfZnJvbV9mY2ZvbnQgKElC dXNGb250U2V0ICpmb250c2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBGY1BhdHRlcm4gICAqZmNmb250KQorK3N0YXRpYyBnYm9vbGVhbgorK2lidXNfcG9ydGFsX2Nv bnRleHRfaGFuZGxlX2Rlc3Ryb3kgKElCdXNEYnVzU2VydmljZSAgICAgICAqb2JqZWN0LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVzTWV0aG9kSW52b2NhdGlvbiAq aW52b2NhdGlvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzUG9y dGFsQ29udGV4dCAgICAgKnBvcnRhbF9jb250ZXh0KQogK3sKLSsgICAgRmNDaGFyOCAqZm9udF9m aWxlID0gTlVMTDsKLSsgICAgRlRfRmFjZSBmdF9mYWNlOwotKyAgICBndWludCBzaXplID0gaWJ1 c19mb250c2V0X2dldF9zaXplIChmb250c2V0KTsKLSsKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2Zh aWwgKElCVVNfSVNfRk9OVFNFVCAoZm9udHNldCksIE5VTEwpOwotKyAgICBnX3JldHVybl92YWxf aWZfZmFpbCAoZmNmb250ICE9IE5VTEwsIE5VTEwpOwotKwotKyAgICBzaXplID0gaWJ1c19mb250 c2V0X2dldF9zaXplIChmb250c2V0KTsKLSsgICAgRmNQYXR0ZXJuR2V0U3RyaW5nIChmY2ZvbnQs IEZDX0ZJTEUsIDAsICZmb250X2ZpbGUpOwotKyAgICBGVF9OZXdfRmFjZSAobV9mdGxpYnJhcnks IChjb25zdCBnY2hhciAqKSBmb250X2ZpbGUsIDAsICZmdF9mYWNlKTsKLSsgICAgRlRfU2V0X1Bp eGVsX1NpemVzIChmdF9mYWNlLCBzaXplLCBzaXplKTsKLSsgICAgcmV0dXJuIGZ0X2ZhY2U7Cisr ICAgIGdfb2JqZWN0X3VucmVmIChwb3J0YWxfY29udGV4dCk7CiArfQogKwotK3ZvaWQKLStfY2Fp cm9fc2hvd191bmtub3duX2dseXBocyAoY2Fpcm9fdCAgICAgICAgICAgICAqY3IsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhaXJvX2dseXBoX3QgKmdseXBocywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgbnVtX2dseXBocywK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgd2lkdGgs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgIGhlaWdo dCkKKytzdGF0aWMgSUJ1c1BvcnRhbENvbnRleHQgKgorK2lidXNfcG9ydGFsX2NvbnRleHRfbmV3 IChJQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICBH REJ1c0Nvbm5lY3Rpb24gICpjb25uZWN0aW9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICAgICAgICpvd25lciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9y ICAgICAgICAgICoqZXJyb3IpCiArewotKyAgICBndW5pY2hhciBjaDsKLSsgICAgZ2Jvb2xlYW4g aW52YWxpZF9pbnB1dDsKLSsgICAgaW50IHJvd3MgPSAyOwotKyAgICBpbnQgY29sczsKLSsgICAg aW50IHJvdywgY29sOwotKyAgICBjaGFyIGJ1Zls3XTsKLSsgICAgZG91YmxlIGN4ID0gMC47Ci0r ICAgIGRvdWJsZSBjeTsKLSsgICAgY29uc3QgZG91YmxlIGJveF9kZXNjZW50ID0gMy47Ci0rICAg IGRvdWJsZSB4MDsKLSsgICAgZG91YmxlIHkwOwotKyAgICBjb25zdCBkb3VibGUgZGlnaXRfd2lk dGggPSA1LjsKLSsgICAgY29uc3QgZG91YmxlIGRpZ2l0X2hlaWdodD0gNi47Ci0rICAgIGNoYXIg aGV4Ym94X3N0cmluZ1syXSA9IHswLCAwfTsKLSsKLSsgICAgZ19hc3NlcnQgKGdseXBocyAhPSBO VUxMKTsKLSsgICAgZ19hc3NlcnQgKG51bV9nbHlwaHMgPiAwKTsKLSsKLSsgICAgY2ggPSBnbHlw aHNbMF0uaW5kZXggJiB+UEFOR09fR0xZUEhfVU5LTk9XTl9GTEFHOwotKyAgICBpbnZhbGlkX2lu cHV0ID0gR19VTkxJS0VMWSAoZ2x5cGhzWzBdLmluZGV4ID09IFBBTkdPX0dMWVBIX0lOVkFMSURf SU5QVVQgfHwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoID4gMHgxMEZGRkYp OwotKyAgICBpZiAoR19VTkxJS0VMWSAoaW52YWxpZF9pbnB1dCkpIHsKLSsgICAgICBnX3dhcm5p bmcgKCJVbnN1cHBvcnRlZCBVKyUwNlgiLCAgY2gpOwotKyAgICAgIHJldHVybjsKKysgICAgSUJ1 c1BvcnRhbENvbnRleHQgKnBvcnRhbF9jb250ZXh0ID0KKysgICAgICAgICAgICBnX29iamVjdF9u ZXcgKGlidXNfcG9ydGFsX2NvbnRleHRfZ2V0X3R5cGUgKCksIE5VTEwpOworKworKyAgICBnX3Np Z25hbF9jb25uZWN0IChjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAiZy1zaWduYWwi LAorKyAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKHBvcnRhbF9jb250ZXh0X2dfc2ln bmFsKSwKKysgICAgICAgICAgICAgICAgICAgICAgcG9ydGFsX2NvbnRleHQpOworKworKyAgICBw b3J0YWxfY29udGV4dC0+aWQgPSArK25leHRfY29udGV4dF9pZDsKKysgICAgcG9ydGFsX2NvbnRl eHQtPmNvbnRleHQgPSBnX29iamVjdF9yZWYgKGNvbnRleHQpOworKyAgICBwb3J0YWxfY29udGV4 dC0+b3duZXIgPSBnX3N0cmR1cCAob3duZXIpOworKyAgICBwb3J0YWxfY29udGV4dC0+b2JqZWN0 X3BhdGggPQorKyAgICAgICAgICAgIGdfc3RyZHVwX3ByaW50ZiAoSUJVU19QQVRIX0lOUFVUX0NP TlRFWFQsIHBvcnRhbF9jb250ZXh0LT5pZCk7CisrICAgIHBvcnRhbF9jb250ZXh0LT5zZXJ2aWNl ID0gaWJ1c19kYnVzX3NlcnZpY2Vfc2tlbGV0b25fbmV3ICgpOworKworKyAgICBnX3NpZ25hbF9j b25uZWN0IChwb3J0YWxfY29udGV4dC0+c2VydmljZSwKKysgICAgICAgICAgICAgICAgICAgICAg ImhhbmRsZS1kZXN0cm95IiwKKysgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoaWJ1 c19wb3J0YWxfY29udGV4dF9oYW5kbGVfZGVzdHJveSksCisrICAgICAgICAgICAgICAgICAgICAg IHBvcnRhbF9jb250ZXh0KTsKKysKKysgICAgaWYgKCFnX2RidXNfaW50ZXJmYWNlX3NrZWxldG9u X2V4cG9ydCAoCisrICAgICAgICAgICAgICAgIEdfREJVU19JTlRFUkZBQ0VfU0tFTEVUT04gKHBv cnRhbF9jb250ZXh0LT5zZXJ2aWNlKSwKKysgICAgICAgICAgICAgICAgY29ubmVjdGlvbiwgcG9y dGFsX2NvbnRleHQtPm9iamVjdF9wYXRoLAorKyAgICAgICAgICAgICAgICBlcnJvcikgfHwKKysg ICAgICAgICFnX2RidXNfaW50ZXJmYWNlX3NrZWxldG9uX2V4cG9ydCAoCisrICAgICAgICAgICAg ICAgIEdfREJVU19JTlRFUkZBQ0VfU0tFTEVUT04gKHBvcnRhbF9jb250ZXh0KSwKKysgICAgICAg ICAgICAgICAgY29ubmVjdGlvbiwgcG9ydGFsX2NvbnRleHQtPm9iamVjdF9wYXRoLAorKyAgICAg ICAgICAgICAgICBlcnJvcikpIHsKKysgICAgICAgIGdfb2JqZWN0X3VucmVmIChwb3J0YWxfY29u dGV4dCk7CisrICAgICAgICByZXR1cm4gTlVMTDsKICsgICAgfQogKwotKyAgICBjYWlyb19zYXZl IChjcik7Ci0rCi0rICAgIGNvbHMgPSAoY2ggPiAweGZmZmYgPyA2IDogNCkgLyByb3dzOwotKyAg ICBnX3NucHJpbnRmIChidWYsIHNpemVvZihidWYpLCAoY2ggPiAweGZmZmYpID8gIiUwNlgiIDog IiUwNFgiLCBjaCk7Ci0rICAgIGN5ID0gKGRvdWJsZSkgaGVpZ2h0OwotKyAgICB4MCA9IGN4ICsg Ym94X2Rlc2NlbnQgKyBYUEFEIC8gMjsKLSsgICAgeTAgPSBjeSAtIGJveF9kZXNjZW50IC0gWVBB RCAvIDI7Ci0rCi0rICAgIGZvciAocm93ID0gMDsgcm93IDwgcm93czsgcm93KyspIHsKLSsgICAg ICAgIGRvdWJsZSB5ID0geTAgLSAocm93cyAtIDEgLSByb3cpICogKGRpZ2l0X2hlaWdodCArIFlQ QUQpOwotKyAgICAgICAgZm9yIChjb2wgPSAwOyBjb2wgPCBjb2xzOyBjb2wrKykgewotKyAgICAg ICAgICAgIGRvdWJsZSB4ID0geDAgKyBjb2wgKiAoZGlnaXRfd2lkdGggKyBYUEFEKTsKLSsgICAg ICAgICAgICBjYWlyb19tb3ZlX3RvIChjciwgeCwgeSk7Ci0rICAgICAgICAgICAgaGV4Ym94X3N0 cmluZ1swXSA9IGJ1Zltyb3cgKiBjb2xzICsgY29sXTsKLSsgICAgICAgICAgICBjYWlyb19zaG93 X3RleHQgKGNyLCBoZXhib3hfc3RyaW5nKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICBjYWly b19tb3ZlX3RvIChjciwgWFBBRCwgWVBBRCk7Ci0rICAgIGNhaXJvX2xpbmVfdG8gKGNyLCB3aWR0 aCAtIFhQQUQsIFlQQUQpOwotKyAgICBjYWlyb19saW5lX3RvIChjciwgd2lkdGggLSBYUEFELAot KyAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0IC0gWVBBRCk7Ci0rICAgIGNhaXJvX2xpbmVf dG8gKGNyLCBYUEFELCBoZWlnaHQgLSBZUEFEKTsKLSsgICAgY2Fpcm9fbGluZV90byAoY3IsIFhQ QUQsIFlQQUQpOwotKyAgICBjYWlyb19zZXRfbGluZV93aWR0aCAoY3IsIDEuKTsKLSsgICAgY2Fp cm9fc3Ryb2tlIChjcik7Ci0rCi0rICAgIGNhaXJvX3Jlc3RvcmUgKGNyKTsKKysgICAgYWxsX2Nv bnRleHRzID0gZ19saXN0X3ByZXBlbmQgKGFsbF9jb250ZXh0cywgcG9ydGFsX2NvbnRleHQpOwor KworKyAgICByZXR1cm4gcG9ydGFsX2NvbnRleHQ7CiArfQogKwotK0lCdXNDYWlyb0xpbmUgKgot K2lidXNfY2Fpcm9fbGluZV9jb3B5IChJQnVzQ2Fpcm9MaW5lICpjYWlyb19saW5lcykKLSt7Ci0r ICAgIElCdXNDYWlyb0xpbmUgKnJldDsKLSsgICAgZ3VpbnQgbiwgaSwgaiwgbnVtX2dseXBoczsK LSsgICAgaWYgKCFjYWlyb19saW5lcykKLSsgICAgICAgIHJldHVybiBOVUxMOworK0dUeXBlIGli dXNfcG9ydGFsX2dldF90eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7Cisrc3RhdGljIHZvaWQgaWJ1 c19wb3J0YWxfaWZhY2VfaW5pdCAoSUJ1c0RidXNQb3J0YWxJZmFjZSAqaWZhY2UpOwogKwotKyAg ICBmb3IgKG4gPSAwOyBjYWlyb19saW5lc1tuXS5zY2FsZWRfZm9udDsgbisrKTsKLSsgICAgcmV0 ID0gZ19uZXcwIChJQnVzQ2Fpcm9MaW5lLCBuICsgMSk7Ci0rICAgIGZvciAoaSA9IDA7IGkgPCBu OyBpKyspIHsKLSsgICAgICAgIHJldFtpXS5zY2FsZWRfZm9udCA9IGNhaXJvX2xpbmVzW2ldLnNj YWxlZF9mb250OwotKyAgICAgICAgbnVtX2dseXBocyA9IGNhaXJvX2xpbmVzW2ldLm51bV9nbHlw aHM7Ci0rICAgICAgICByZXRbaV0ubnVtX2dseXBocyA9IG51bV9nbHlwaHM7Ci0rICAgICAgICBy ZXRbaV0uZ2x5cGhzID0gKElCdXNHbHlwaCAqKSBjYWlyb19nbHlwaF9hbGxvY2F0ZSAobnVtX2ds eXBocyArIDEpOwotKyAgICAgICAgZm9yIChqID0gMDsgaiA8IG51bV9nbHlwaHM7IGorKykgewot KyAgICAgICAgICAgIHJldFtpXS5nbHlwaHNbal0gPSBjYWlyb19saW5lc1tpXS5nbHlwaHNbal07 Ci0rICAgICAgICB9Ci0rICAgICAgICByZXRbaV0uZ2x5cGhzW2pdLmluZGV4ID0gLTE7Ci0rICAg ICAgICByZXRbaV0uZ2x5cGhzW2pdLnggPSAwOwotKyAgICAgICAgcmV0W2ldLmdseXBoc1tqXS55 ID0gMDsKLSsgICAgfQotKyAgICByZXRbaV0uc2NhbGVkX2ZvbnQgPSBOVUxMOwotKyAgICByZXRb aV0ubnVtX2dseXBocyA9IDA7Ci0rICAgIHJldFtpXS5nbHlwaHMgPSBOVUxMOwotKyAgICByZXR1 cm4gcmV0OwotK30KKytHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoSUJ1c1BvcnRhbCwgaWJ1c19w b3J0YWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfREJVU19UWVBFX1BPUlRBTF9T S0VMRVRPTiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgR19JTVBMRU1FTlRfSU5URVJGQUNF IChJQlVTX0RCVVNfVFlQRV9QT1JUQUwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWJ1c19wb3J0YWxfaWZhY2VfaW5pdCkpOwogKwotK3ZvaWQKLStp YnVzX2NhaXJvX2xpbmVfZnJlZSAoSUJ1c0NhaXJvTGluZSAqY2Fpcm9fbGluZXMpCisrCisrc3Rh dGljIHZvaWQKKytjcmVhdGVfaW5wdXRfY29udGV4dF9kb25lIChJQnVzQnVzICAgICAgICAgICAg ICAgKmJ1cywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAg ICAgKnJlcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJ1c01ldGhvZEludm9jYXRp b24gKmludm9jYXRpb24pCiArewotKyAgICBndWludCBpOwotKyAgICBpZiAoIWNhaXJvX2xpbmVz KQorKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKysgICAgSUJ1c0lucHV0Q29udGV4dCAqY29u dGV4dDsKKysgICAgSUJ1c1BvcnRhbENvbnRleHQgKnBvcnRhbF9jb250ZXh0OworKyAgICBjaGFy ICpvYmplY3RfcGF0aDsKKysKKysgICAgY29udGV4dCA9IGlidXNfYnVzX2NyZWF0ZV9pbnB1dF9j b250ZXh0X2FzeW5jX2ZpbmlzaCAoaWJ1c19idXMsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcywKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yKTsKKysgICAg aWYgKGNvbnRleHQgPT0gTlVMTCkgeworKyAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9u X3JldHVybl9nZXJyb3IgKGludm9jYXRpb24sIGVycm9yKTsKKysgICAgICAgIGdfZXJyb3JfZnJl ZSAoZXJyb3IpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAgIHBvcnRhbF9jb250 ZXh0ID0gaWJ1c19wb3J0YWxfY29udGV4dF9uZXcgKAorKyAgICAgICAgICAgIGNvbnRleHQsCisr ICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX2dldF9jb25uZWN0aW9uIChpbnZv Y2F0aW9uKSwKKysgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fZ2V0X3NlbmRl ciAoaW52b2NhdGlvbiksCisrICAgICAgICAgICAgJmVycm9yKTsKKysgICAgZ19vYmplY3RfdW5y ZWYgKGNvbnRleHQpOworKworKyAgICBpZiAocG9ydGFsX2NvbnRleHQgPT0gTlVMTCkgeworKyAg ICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl9nZXJyb3IgKGludm9jYXRpb24s IGVycm9yKTsKKysgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOworKyAgICAgICAgZ19vYmpl Y3RfdW5yZWYgKHBvcnRhbF9jb250ZXh0KTsKICsgICAgICAgIHJldHVybjsKLSsgICAgZm9yIChp ID0gMDsgY2Fpcm9fbGluZXNbaV0uc2NhbGVkX2ZvbnQ7IGkrKykgewotKyAgICAgICAgZ19mcmVl IChjYWlyb19saW5lc1tpXS5nbHlwaHMpOwogKyAgICB9Ci0rICAgIGdfZnJlZSAoY2Fpcm9fbGlu ZXMpOworKworKyAgICBpYnVzX2RidXNfcG9ydGFsX2NvbXBsZXRlX2NyZWF0ZV9pbnB1dF9jb250 ZXh0ICgKKysgICAgICAgICAgICBJQlVTX0RCVVNfUE9SVEFMKGlidXNfcG9ydGFsKSwKKysgICAg ICAgICAgICBpbnZvY2F0aW9uLCBwb3J0YWxfY29udGV4dC0+b2JqZWN0X3BhdGgpOwogK30KICsK LStJQnVzUmVxdWlzaXRpb25FeCAqCi0raWJ1c19yZXF1aXNpdGlvbl9leF9jb3B5IChJQnVzUmVx dWlzaXRpb25FeCAqcmVxKQorK3N0YXRpYyBnYm9vbGVhbgorK2lidXNfcG9ydGFsX2hhbmRsZV9j cmVhdGVfaW5wdXRfY29udGV4dCAoSUJ1c0RidXNQb3J0YWwgICAgICAgICpvYmplY3QsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJ1c01ldGhvZEludm9jYXRp b24gKmludm9jYXRpb24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBnY2hhciAgICAgICAgICAgKmFyZ19jbGllbnRfbmFtZSkKICt7Ci0rICAgIElCdXNS ZXF1aXNpdGlvbkV4ICpyZXQ7Ci0rICAgIGlmICghcmVxKQotKyAgICAgICAgcmV0dXJuIE5VTEw7 Ci0rICAgIHJldCA9IGdfbmV3MCAoSUJ1c1JlcXVpc2l0aW9uRXgsIDEpOwotKyAgICByZXQtPndp ZHRoID0gcmVxLT53aWR0aDsKLSsgICAgcmV0LT5oZWlnaHQgPSByZXEtPmhlaWdodDsKLSsgICAg cmV0LT5jYWlyb19saW5lcyA9IGlidXNfY2Fpcm9fbGluZV9jb3B5IChyZXEtPmNhaXJvX2xpbmVz KTsKLSsgICAgcmV0dXJuIHJldDsKKysgICAgaWJ1c19idXNfY3JlYXRlX2lucHV0X2NvbnRleHRf YXN5bmMgKAorKyAgICAgICAgICAgIGlidXNfYnVzLAorKyAgICAgICAgICAgIGFyZ19jbGllbnRf bmFtZSwgLTEsCisrICAgICAgICAgICAgTlVMTCwKKysgICAgICAgICAgICAoR0FzeW5jUmVhZHlD YWxsYmFjayljcmVhdGVfaW5wdXRfY29udGV4dF9kb25lLAorKyAgICAgICAgICAgIGludm9jYXRp b24pOworKyAgICByZXR1cm4gVFJVRTsKICt9CiArCi0rdm9pZAotK2lidXNfcmVxdWlzaXRpb25f ZXhfZnJlZSAoSUJ1c1JlcXVpc2l0aW9uRXggKnJlcSkKKytzdGF0aWMgdm9pZAorK2lidXNfcG9y dGFsX2lmYWNlX2luaXQgKElCdXNEYnVzUG9ydGFsSWZhY2UgKmlmYWNlKQogK3sKLSsgICAgaWYg KCFyZXEpCi0rICAgICAgICByZXR1cm47Ci0rICAgIGdfY2xlYXJfcG9pbnRlciAoJnJlcS0+Y2Fp cm9fbGluZXMsIGlidXNfY2Fpcm9fbGluZV9mcmVlKTsKLSsgICAgZ19mcmVlIChyZXEpOworKyAg ICBpZmFjZS0+aGFuZGxlX2NyZWF0ZV9pbnB1dF9jb250ZXh0ID0KKysgICAgICAgICAgICBpYnVz X3BvcnRhbF9oYW5kbGVfY3JlYXRlX2lucHV0X2NvbnRleHQ7CiArfQogKwotK0lCdXNGb250U2V0 ICoKLStpYnVzX2ZvbnRzZXRfbmV3IChjb25zdCBnY2hhciAqZmlyc3RfcHJvcGVydHlfbmFtZSwg Li4uKQorK3N0YXRpYyB2b2lkCisraWJ1c19wb3J0YWxfaW5pdCAoSUJ1c1BvcnRhbCAqcG9ydGFs KQogK3sKLSsgICAgdmFfbGlzdCB2YXJfYXJnczsKLSsgICAgSUJ1c0ZvbnRTZXQgKmZvbnRzZXQ7 Ci0rCi0rICAgIGdfYXNzZXJ0IChmaXJzdF9wcm9wZXJ0eV9uYW1lKTsKLSsKLSsgICAgdmFfc3Rh cnQgKHZhcl9hcmdzLCBmaXJzdF9wcm9wZXJ0eV9uYW1lKTsKLSsgICAgZm9udHNldCA9IChJQnVz Rm9udFNldCAqKWdfb2JqZWN0X25ld192YWxpc3QgKElCVVNfVFlQRV9GT05UU0VULAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfcHJvcGVy dHlfbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZhcl9hcmdzKTsKLSsgICAgdmFfZW5kICh2YXJfYXJncyk7Ci0rICAgIGdfYXNzZXJ0IChm b250c2V0LT5wcml2LT5mYW1pbHkpOwotKyAgICBnX2Fzc2VydCAoZm9udHNldC0+cHJpdi0+bGFu Z3VhZ2UpOwotKyAgICByZXR1cm4gZm9udHNldDsKICt9CiArCi0rSUJ1c0ZvbnRTZXQgKgotK2li dXNfZm9udHNldF9uZXdfd2l0aF9mb250IChjb25zdCBnY2hhciAqZmFtaWx5LAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgc2l6ZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgZ2NoYXIgKmxhbmd1YWdlKQorK3N0YXRpYyB2b2lkCisraWJ1c19w b3J0YWxfY2xhc3NfaW5pdCAoSUJ1c1BvcnRhbENsYXNzICprbGFzcykKICt7Ci0rICAgIHJldHVy biBpYnVzX2ZvbnRzZXRfbmV3ICgiZmFtaWx5IiwgZmFtaWx5LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgInNpemUiLCBzaXplLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Imxhbmd1YWdlIiwgbGFuZ3VhZ2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM KTsKICt9CiArCi0rdm9pZAotK2lidXNfZm9udHNldF9leGl0ICgpCisrCisrc3RhdGljIHZvaWQK KytzaG93X3ZlcnNpb25fYW5kX3F1aXQgKHZvaWQpCiArewotKyAgICBnX2NsZWFyX3BvaW50ZXIg KCZtX2Z0bGlicmFyeSwgRlRfRG9uZV9GcmVlVHlwZSk7CisrICAgIGdfcHJpbnQgKCIlcyAtIFZl cnNpb24gJXNcbiIsIGdfZ2V0X2FwcGxpY2F0aW9uX25hbWUgKCksIFZFUlNJT04pOworKyAgICBl eGl0IChFWElUX1NVQ0NFU1MpOwogK30KICsKLStjb25zdCBnY2hhciAqCi0raWJ1c19mb250c2V0 X2dldF9mYW1pbHkgKElCdXNGb250U2V0ICpmb250c2V0KQorK3N0YXRpYyBjb25zdCBHT3B0aW9u RW50cnkgZW50cmllc1tdID0KICt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lT X0ZPTlRTRVQgKGZvbnRzZXQpLCBOVUxMKTsKLSsgICAgcmV0dXJuIGZvbnRzZXQtPnByaXYtPmZh bWlseTsKLSt9CisrICAgIHsgInZlcnNpb24iLCAgICdWJywgR19PUFRJT05fRkxBR19OT19BUkcs IEdfT1BUSU9OX0FSR19DQUxMQkFDSywKKysgICAgICBzaG93X3ZlcnNpb25fYW5kX3F1aXQsICJT aG93IHRoZSBhcHBsaWNhdGlvbidzIHZlcnNpb24uIiwgTlVMTCB9LAorKyAgICB7ICJ2ZXJib3Nl IiwgICAndicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAKKysgICAgICAmb3B0X3ZlcmJvc2UsICAg InZlcmJvc2UuIiwgTlVMTCB9LAorKyAgICB7ICJyZXBsYWNlIiwgICAncicsIDAsIEdfT1BUSU9O X0FSR19OT05FLAorKyAgICAgICZvcHRfcmVwbGFjZSwgICAiUmVwbGFjZS4iLCBOVUxMIH0sCisr ICAgIHsgTlVMTCB9LAorK307CiArCi0rdm9pZAotK2lidXNfZm9udHNldF9zZXRfZmFtaWx5IChJ QnVzRm9udFNldCAqZm9udHNldCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No YXIgICAqZmFtaWx5KQorK3N0YXRpYyB2b2lkCisrb25fYnVzX2FjcXVpcmVkIChHREJ1c0Nvbm5l Y3Rpb24gKmNvbm5lY3Rpb24sCisrICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgKm5h bWUsCisrICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgIHVzZXJfZGF0YSkKICt7Ci0r ICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfRk9OVFNFVCAoZm9udHNldCkpOwotKyAgICBn X2ZyZWUgKGZvbnRzZXQtPnByaXYtPmZhbWlseSk7Ci0rICAgIGZvbnRzZXQtPnByaXYtPmZhbWls eSA9IGdfc3RyZHVwIChmYW1pbHkpOworKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKysKKysg ICAgaWJ1c19wb3J0YWwgPSBnX29iamVjdF9uZXcgKGlidXNfcG9ydGFsX2dldF90eXBlICgpLCBO VUxMKTsKKysKKysgICAgaWYgKCFnX2RidXNfaW50ZXJmYWNlX3NrZWxldG9uX2V4cG9ydCAoCisr ICAgICAgICAgICAgICAgIEdfREJVU19JTlRFUkZBQ0VfU0tFTEVUT04gKGlidXNfcG9ydGFsKSwK KysgICAgICAgICAgICAgICAgY29ubmVjdGlvbiwKKysgICAgICAgICAgICAgICAgSUJVU19QQVRI X0lCVVMsCisrICAgICAgICAgICAgICAgICZlcnJvcikpIHsKKysgICAgICAgIGdfd2FybmluZyAo IkVycm9yIGV4cG9ydGluZyBwb3J0YWw6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworKyAgICAgICAg Z19lcnJvcl9mcmVlIChlcnJvcik7CisrICAgICAgICByZXR1cm47CisrICAgIH0KICt9CiArCi0r Z3VpbnQKLStpYnVzX2ZvbnRzZXRfZ2V0X3NpemUgKElCdXNGb250U2V0ICpmb250c2V0KQorK3N0 YXRpYyB2b2lkCisrb25fbmFtZV9hY3F1aXJlZCAoR0RCdXNDb25uZWN0aW9uICpjb25uZWN0aW9u LAorKyAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAqbmFtZSwKKysgICAgICAgICAg ICAgICAgICBncG9pbnRlciAgICAgICAgIHVzZXJfZGF0YSkKICt7Ci0rICAgIGdfcmV0dXJuX3Zh bF9pZl9mYWlsIChJQlVTX0lTX0ZPTlRTRVQgKGZvbnRzZXQpLCAwKTsKLSsgICAgcmV0dXJuIGZv bnRzZXQtPnByaXYtPnNpemU7CiArfQogKwotK3ZvaWQKLStpYnVzX2ZvbnRzZXRfc2V0X3NpemUg KElCdXNGb250U2V0ICpmb250c2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAg ICAgICAgc2l6ZSkKKytzdGF0aWMgdm9pZAorK29uX25hbWVfbG9zdCAoR0RCdXNDb25uZWN0aW9u ICpjb25uZWN0aW9uLAorKyAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICpuYW1lLAorKyAg ICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICB1c2VyX2RhdGEpCiArewotKyAgICBnX3JldHVy bl9pZl9mYWlsIChJQlVTX0lTX0ZPTlRTRVQgKGZvbnRzZXQpKTsKLSsgICAgZm9udHNldC0+cHJp di0+c2l6ZSA9IHNpemU7CisrICAgIGdfbWFpbl9sb29wX3F1aXQgKGxvb3ApOwogK30KICsKLStj b25zdCBnY2hhciAqCi0raWJ1c19mb250c2V0X2dldF9sYW5ndWFnZSAoSUJ1c0ZvbnRTZXQgKmZv bnRzZXQpCisrc3RhdGljIHZvaWQKKytuYW1lX293bmVyX2NoYW5nZWQgKEdEQnVzQ29ubmVjdGlv biAqY29ubmVjdGlvbiwKKysgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAqc2Vu ZGVyX25hbWUsCisrICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgKm9iamVjdF9w YXRoLAorKyAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICppbnRlcmZhY2VfbmFt ZSwKKysgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAqc2lnbmFsX25hbWUsCisr ICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgKnBhcmFtZXRlcnMsCisrICAgICAg ICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgIHVzZXJfZGF0YSkKICt7Ci0rICAgIGdfcmV0 dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX0ZPTlRTRVQgKGZvbnRzZXQpLCBOVUxMKTsKLSsgICAg cmV0dXJuIGZvbnRzZXQtPnByaXYtPmxhbmd1YWdlOworKyAgY29uc3QgY2hhciAqbmFtZSwgKmZy b20sICp0bzsKKysKKysgIGdfdmFyaWFudF9nZXQgKHBhcmFtZXRlcnMsICIoc3NzKSIsICZuYW1l LCAmZnJvbSwgJnRvKTsKKysKKysgIGlmIChuYW1lWzBdID09ICc6JyAmJgorKyAgICAgIGdfc3Ry Y21wMCAobmFtZSwgZnJvbSkgPT0gMCAmJgorKyAgICAgIGdfc3RyY21wMCAodG8sICIiKSA9PSAw KQorKyAgICB7CisrICAgICAgICBHTGlzdCAqbCwgKm5leHQ7CisrICAgICAgICAvKiBDbGllbnQg ZGlzY29ubmVjdGVkLCBmcmVlIGFueSBpbnB1dCBjb250ZXh0cyBpdCBtYXkgaGF2ZSAqLworKyAg ICAgICAgZm9yIChsID0gYWxsX2NvbnRleHRzOyBsICE9IE5VTEw7IGwgPSBuZXh0KSB7CisrICAg ICAgICAgICAgSUJ1c1BvcnRhbENvbnRleHQgKnBvcnRhbF9jb250ZXh0ID0gbC0+ZGF0YTsKKysg ICAgICAgICAgICBuZXh0ID0gbC0+bmV4dDsKKysKKysgICAgICAgICAgICBpZiAoZ19zdHJjbXAw IChwb3J0YWxfY29udGV4dC0+b3duZXIsIG5hbWUpID09IDApIHsKKysgICAgICAgICAgICAgICAg Z19vYmplY3RfdW5yZWYgKHBvcnRhbF9jb250ZXh0KTsKKysgICAgICAgICAgICB9CisrICAgICAg ICB9CisrICAgIH0KICt9CiArCi0rdm9pZAotK2lidXNfZm9udHNldF9zZXRfbGFuZ3VhZ2UgKElC dXNGb250U2V0ICpmb250c2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj aGFyICpsYW5ndWFnZSkKKytzdGF0aWMgdm9pZAorK19idXNfZGlzY29ubmVjdGVkX2NiIChJQnVz QnVzICAgICAgICAgICAgKmlidXNidXMpCiArewotKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVT X0lTX0ZPTlRTRVQgKGZvbnRzZXQpKTsKLSsgICAgZ19mcmVlIChmb250c2V0LT5wcml2LT5sYW5n dWFnZSk7Ci0rICAgIGZvbnRzZXQtPnByaXYtPmxhbmd1YWdlID0gZ19zdHJkdXAgKGxhbmd1YWdl KTsKKysgICAgZ19tYWluX2xvb3BfcXVpdCAobG9vcCk7CiArfQogKwotK2dib29sZWFuCi0raWJ1 c19mb250c2V0X3VwZGF0ZV9mY2ZvbnRzZXQgKElCdXNGb250U2V0ICpmb250c2V0KQorK2dpbnQK KyttYWluIChnaW50IGFyZ2MsIGdjaGFyICoqYXJndikKICt7Ci0rICAgIEZjUGF0dGVybiAqcGF0 dGVybjsKLSsgICAgY29uc3QgZ2NoYXIgKmZhbWlseTsKLSsgICAgZ3VpbnQgc2l6ZTsKLSsgICAg Y29uc3QgZ2NoYXIgKmxhbmd1YWdlOwotKyAgICBnYm9vbGVhbiB1cGRhdGVfZm9udHNldCA9IEZB TFNFOwotKyAgICBGY1Jlc3VsdCByZXN1bHQ7Ci0rCi0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls IChJQlVTX0lTX0ZPTlRTRVQgKGZvbnRzZXQpLCBGQUxTRSk7Ci0rCi0rICAgIHBhdHRlcm4gPSBG Y1BhdHRlcm5DcmVhdGUgKCk7Ci0rICAgIGZhbWlseSA9IGZvbnRzZXQtPnByaXYtPmZhbWlseTsK LSsgICAgc2l6ZSA9IGZvbnRzZXQtPnByaXYtPnNpemU7Ci0rICAgIGxhbmd1YWdlID0gZm9udHNl dC0+cHJpdi0+bGFuZ3VhZ2U7Ci0rCi0rICAgIGlmIChnX3N0cmNtcDAgKG1fZmFtaWx5LCBmYW1p bHkpKSB7Ci0rICAgICAgICBnX2ZyZWUgKG1fZmFtaWx5KTsKLSsgICAgICAgIG1fZmFtaWx5ID0g Z19zdHJkdXAgKGZhbWlseSk7Ci0rICAgICAgICB1cGRhdGVfZm9udHNldCA9IFRSVUU7Ci0rICAg IH0KLSsgICAgaWYgKG1fc2l6ZSAhPSBzaXplKSB7Ci0rICAgICAgICBtX3NpemUgPSBzaXplOwot KyAgICAgICAgdXBkYXRlX2ZvbnRzZXQgPSBUUlVFOwotKyAgICB9Ci0rICAgIGlmIChnX3N0cmNt cDAgKG1fbGFuZ3VhZ2UsIGxhbmd1YWdlKSkgewotKyAgICAgICAgZ19mcmVlIChtX2xhbmd1YWdl KTsKLSsgICAgICAgIG1fbGFuZ3VhZ2UgPSBnX3N0cmR1cCAobGFuZ3VhZ2UpOwotKyAgICAgICAg dXBkYXRlX2ZvbnRzZXQgPSBUUlVFOwotKyAgICB9Ci0rICAgIGlmICghdXBkYXRlX2ZvbnRzZXQg JiYgbV9mY2ZvbnRzZXQgIT0gTlVMTCkKLSsgICAgICAgIHJldHVybiBGQUxTRTsKKysgICAgR0RC dXNDb25uZWN0aW9uICpzZXNzaW9uX2J1cyA9IE5VTEw7CisrICAgIGd1aW50IG93bmVyX2lkOwog KwotKyAgICBpZiAobV9mY2ZvbnRzZXQpCi0rICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZtX2Zj Zm9udHNldCwgRmNGb250U2V0RGVzdHJveSk7Ci0rCi0rICAgIGlmIChnX3N0cmNtcDAgKGZhbWls eSwgIiIpKQotKyAgICAgICAgRmNQYXR0ZXJuQWRkU3RyaW5nIChwYXR0ZXJuLCBGQ19GQU1JTFks IChjb25zdCBGY0NoYXI4KikgZmFtaWx5KTsKLSsgICAgaWYgKHNpemUgPiAwKQotKyAgICAgICAg RmNQYXR0ZXJuQWRkRG91YmxlIChwYXR0ZXJuLCBGQ19TSVpFLCAoZG91YmxlKSBzaXplKTsKLSsg ICAgaWYgKGdfc3RyY21wMCAobGFuZ3VhZ2UsICIiKSkKLSsgICAgICAgIEZjUGF0dGVybkFkZFN0 cmluZyAocGF0dGVybiwgRkNfTEFORywgKGNvbnN0IEZjQ2hhcjgqKSBsYW5ndWFnZSk7Ci0rICAg IEZjUGF0dGVybkFkZEludGVnZXIgKHBhdHRlcm4sIEZDX1dFSUdIVCwgRkNfV0VJR0hUX05PUk1B TCk7Ci0rICAgIEZjUGF0dGVybkFkZEludGVnZXIgKHBhdHRlcm4sIEZDX1dJRFRILCBGQ19XSURU SF9OT1JNQUwpOwotKyAgICBGY1BhdHRlcm5BZGRJbnRlZ2VyIChwYXR0ZXJuLCBGQ19EUEksIDk2 KTsKLSsgICAgRmNDb25maWdTdWJzdGl0dXRlIChOVUxMLCBwYXR0ZXJuLCBGY01hdGNoUGF0dGVy bik7Ci0rICAgIEZjQ29uZmlnU3Vic3RpdHV0ZSAoTlVMTCwgcGF0dGVybiwgRmNNYXRjaEZvbnQp OwotKyAgICBGY0RlZmF1bHRTdWJzdGl0dXRlIChwYXR0ZXJuKTsKLSsgICAgbV9mY2ZvbnRzZXQg PSBGY0ZvbnRTb3J0IChOVUxMLCBwYXR0ZXJuLCBGY1RydWUsIE5VTEwsICZyZXN1bHQpOwotKyAg ICBGY1BhdHRlcm5EZXN0cm95IChwYXR0ZXJuKTsKLSsgICAgaWYgKHJlc3VsdCA9PSBGY1Jlc3Vs dE5vTWF0Y2ggfHwgbV9mY2ZvbnRzZXQtPm5mb250ID09IDApIHsKLSsgICAgICAgIGdfd2Fybmlu ZyAoIk5vIEZjRm9udFNldCBmb3IgJXMiLCBmYW1pbHkgPyBmYW1pbHkgOiAiKG51bGwpIik7Ci0r ICAgICAgICByZXR1cm4gRkFMU0U7CisrICAgIHNldGxvY2FsZSAoTENfQUxMLCAiIik7CisrCisr ICAgIEdPcHRpb25Db250ZXh0ICpjb250ZXh0ID0gZ19vcHRpb25fY29udGV4dF9uZXcgKCItIGli dXMgZGFlbW9uIik7CisrICAgIGdfb3B0aW9uX2NvbnRleHRfYWRkX21haW5fZW50cmllcyAoY29u dGV4dCwgZW50cmllcywgImlidXMtZGFlbW9uIik7CisrCisrICAgIEdFcnJvciAqZXJyb3IgPSBO VUxMOworKyAgICBpZiAoIWdfb3B0aW9uX2NvbnRleHRfcGFyc2UgKGNvbnRleHQsICZhcmdjLCAm YXJndiwgJmVycm9yKSkgeworKyAgICAgICAgZ19wcmludGVyciAoIk9wdGlvbiBwYXJzaW5nIGZh aWxlZDogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKKysgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJy b3IpOworKyAgICAgICAgZXhpdCAoLTEpOwogKyAgICB9Ci0rICAgIHJldHVybiBUUlVFOworKwor KyAgICAvKiBBdm9pZCBldmVuIGxvYWRpbmcgZ3ZmcyB0byBhdm9pZCBhY2NpZGVudGFsIGNvbmZ1 c2lvbiAqLworKyAgICBnX3NldGVudiAoIkdJT19VU0VfVkZTIiwgImxvY2FsIiwgVFJVRSk7Cisr CisrICAgIGlidXNfaW5pdCAoKTsKKysKKysgICAgaWJ1c19zZXRfbG9nX2hhbmRsZXIgKG9wdF92 ZXJib3NlKTsKKysKKysgICAgaWJ1c19idXMgPSBpYnVzX2J1c19uZXcgKCk7CisrICAgIGlmICgh aWJ1c19idXNfaXNfY29ubmVjdGVkIChpYnVzX2J1cykpIHsKKysgICAgICAgIGdfcHJpbnRlcnIg KCJOb3QgY29ubmVjdGVkIHRvIHRoZSBpYnVzIGJ1c1xuIik7CisrICAgICAgICBleGl0ICgxKTsK KysgICAgfQorKworKyAgICBnX3NpZ25hbF9jb25uZWN0IChpYnVzX2J1cywgImRpc2Nvbm5lY3Rl ZCIsCisrICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKF9idXNfZGlzY29ubmVjdGVk X2NiKSwgTlVMTCk7CisrCisrICAgIGxvb3AgPSBnX21haW5fbG9vcF9uZXcgKE5VTEwsIEZBTFNF KTsKKysKKysgICAgc2Vzc2lvbl9idXMgPSBnX2J1c19nZXRfc3luYyAoR19CVVNfVFlQRV9TRVNT SU9OLCBOVUxMLCAmZXJyb3IpOworKyAgICBpZiAoc2Vzc2lvbl9idXMgPT0gTlVMTCkgeworKyAg ICAgICAgZ19wcmludGVyciAoIk5vIHNlc3Npb24gYnVzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsK KysgICAgICAgIGV4aXQgKC0xKTsKKysgICAgfQorKworKyAgICBnX2RidXNfY29ubmVjdGlvbl9z aWduYWxfc3Vic2NyaWJlIChzZXNzaW9uX2J1cywKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5EQnVzIiwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5EQnVzIiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5hbWVPd25lckNoYW5nZWQiLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL29yZy9mcmVlZGVza3RvcC9E QnVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19EQlVTX1NJR05BTF9GTEFH U19OT05FLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX293 bmVyX2NoYW5nZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsIE5VTEwpOworKworKyAgICBvd25lcl9pZCA9IGdfYnVzX293bl9uYW1lIChHX0JVU19UWVBF X1NFU1NJT04sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfU0VSVklDRV9Q T1JUQUwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfQlVTX05BTUVfT1dORVJf RkxBR1NfQUxMT1dfUkVQTEFDRU1FTlQgfAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAob3B0X3JlcGxhY2UgPyBHX0JVU19OQU1FX09XTkVSX0ZMQUdTX1JFUExBQ0UKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMCksCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9uX2J1c19hY3F1aXJlZCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb25fbmFtZV9hY3F1aXJlZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb25fbmFtZV9sb3N0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKysKKysgICAgZ19tYWlu X2xvb3BfcnVuIChsb29wKTsKKysKKysgICAgZ19idXNfdW5vd25fbmFtZSAob3duZXJfaWQpOwor KyAgICBnX21haW5fbG9vcF91bnJlZiAobG9vcCk7CisrCisrICAgIHJldHVybiAwOwogK30KK2Rp ZmYgLS1naXQgYS9zcmMvaWJ1c3NoYXJlLmggYi9zcmMvaWJ1c3NoYXJlLmgKK2luZGV4IGJjYTQ3 N2MwLi5mM2UyMDExZSAxMDA2NDQKKy0tLSBhL3NyYy9pYnVzc2hhcmUuaAorKysrIGIvc3JjL2li dXNzaGFyZS5oCitAQCAtNTIsNiArNTIsMTMgQEAKKyAjZGVmaW5lIElCVVNfU0VSVklDRV9JQlVT ICAgICAgICJvcmcuZnJlZWRlc2t0b3AuSUJ1cyIKKyAKKyAvKioKKysgKiBJQlVTX1NFUlZJQ0Vf UE9SVEFMOgorKyAqCisrICogQWRkcmVzcyBvZiBJQnVzIHBvcnRhbHNlcnZpY2UuCisrICovCisr I2RlZmluZSBJQlVTX1NFUlZJQ0VfUE9SVEFMICAgICAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5J QnVzIgorKworKy8qKgorICAqIElCVVNfU0VSVklDRV9QQU5FTDoKKyAgKgorICAqIEFkZHJlc3Mg b2YgSUJ1cyBwYW5lbCBzZXJ2aWNlLgorQEAgLTEyMiw2ICsxMjksMTMgQEAKKyAjZGVmaW5lIElC VVNfSU5URVJGQUNFX0lCVVMgICAgICJvcmcuZnJlZWRlc2t0b3AuSUJ1cyIKKyAKKyAvKioKKysg KiBJQlVTX0lOVEVSRkFDRV9QT1JUQUw6CisrICoKKysgKiBELUJ1cyBpbnRlcmZhY2UgZm9yIElC dXMgcG9ydGFsLgorKyAqLworKyNkZWZpbmUgSUJVU19JTlRFUkZBQ0VfUE9SVEFMICAgIm9yZy5m cmVlZGVza3RvcC5JQnVzLlBvcnRhbCIKKysKKysvKioKKyAgKiBJQlVTX0lOVEVSRkFDRV9JTlBV VF9DT05URVhUOgorICAqCisgICogRC1CdXMgaW50ZXJmYWNlIGZvciBJQnVzIGlucHV0IGNvbnRl eHQuCistLSAKKzIuMTMuNAorCitGcm9tIDM1Y2U2MjQ3NGZhOTdhNTQ2MGQ3MmMzNjA5NDM3MDBh NDEzYTA3YWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgTGFyc3Nv biA8YWxleGxAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgMzEgQXVnIDIwMTcgMTI6MDM6MzcgKzA5 MDAKK1N1YmplY3Q6IFtQQVRDSCAwNC8xNF0gU3VwcG9ydCB0aGUgcG9ydGFsIGluIHRoZSBndGsg aW0gbW9kdWxlcworCitUaGlzIGFkZHMgYSBuZXcgd2F5IHRvIGNyZWF0ZSBhbiBJYnVzQnVzLCBp YnVzX2J1c19uZXdfYXN5bmNfY2xpZW50KCkuCitUaGlzIHJldHVybnMgYW4gb2JqZWN0IHRoYXQg aXMgbm90IGd1YXJhbnRlZSB0byBoYW5kbGUgYW55IGNhbGxzCit0aGF0IGFyZSBub3QgbmVlZGVk IGJ5IGEgY2xpZW50LCBtZWFuaW5nIENyZWF0ZUlucHV0Q29udGV4dCBhbmQKK2hhbmRsaW5nIHRo ZSBpbnB1dCBjb250ZXh0LgorCitJZiB5b3UgYXJlIHJ1bm5pbmcgaW4gYSBmbGF0cGFrLCBvciBp ZiBJQlVTX1VTRV9QT1JUQUwgaXMgc2V0LCB0aGVuCitpbnN0ZWFkIG9mIHRhbGtpbmcgdG8gdGhl IHJlZ3VsYXIgaWJ1cyBidXMgd2UgY29ubmVjdCB0bworb3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5J QnVzIG9uIHRoZSBzZXNzaW9uIGJ1cyBhbmQgdXNlIHRoZQorbGltaXRlZCBvcmcuZnJlZWRlc2t0 b3AuSUJ1cy5Qb3J0YWwgaW50ZXJmYWNlIGluc3RlYWQgb2YgdGhlCitvcmcuZnJlZWRlc2t0b3Au SUJ1cyBpbnRlcmZhY2UuCisKK1RoaXMgYWxsb3dzIGZsYXRwYWtzIChvciBvdGhlciBzYW5kYm94 IHN5c3RlbXMpIHRvIHNhZmVseSB1c2UKK2RidXMgY2xpZW50cyAoYXBwcykuCisKK0JVRz1odHRw czovL2dpdGh1Yi5jb20vZmxhdHBhay9mbGF0cGFrL2lzc3Vlcy82NzUKKworUmV2aWV3IFVSTDog aHR0cHM6Ly9jb2RlcmV2aWV3LmFwcHNwb3QuY29tLzMyODQxMDA0MworCitQYXRjaCBmcm9tIEFs ZXhhbmRlciBMYXJzc29uIDxhbGV4bEByZWRoYXQuY29tPi4KKy0tLQorIGNsaWVudC9ndGsyL2li dXNpbWNvbnRleHQuYyB8ICAgNCArLQorIHNyYy9pYnVzYnVzLmMgICAgICAgICAgICAgICB8IDI0 OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQorIHNyYy9pYnVz YnVzLmggICAgICAgICAgICAgICB8ICAyMyArKysrCisgc3JjL2lidXNpbnB1dGNvbnRleHQuYyAg ICAgIHwgIDEyICsrLQorIDQgZmlsZXMgY2hhbmdlZCwgMjU2IGluc2VydGlvbnMoKyksIDMxIGRl bGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2xpZW50L2d0azIvaWJ1c2ltY29udGV4dC5jIGIv Y2xpZW50L2d0azIvaWJ1c2ltY29udGV4dC5jCitpbmRleCA0MWM3YTNhZi4uYjRjYTg4MjggMTAw NjQ0CistLS0gYS9jbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMKKysrKyBiL2NsaWVudC9ndGsy L2lidXNpbWNvbnRleHQuYworQEAgLTU4Myw3ICs1ODMsNyBAQCBpYnVzX2ltX2NvbnRleHRfY2xh c3NfaW5pdCAoSUJ1c0lNQ29udGV4dENsYXNzICpjbGFzcykKKyAKKyAgICAgLyogaW5pdCBidXMg b2JqZWN0ICovCisgICAgIGlmIChfYnVzID09IE5VTEwpIHsKKy0gICAgICAgIF9idXMgPSBpYnVz X2J1c19uZXdfYXN5bmMgKCk7CisrICAgICAgICBfYnVzID0gaWJ1c19idXNfbmV3X2FzeW5jX2Ns aWVudCAoKTsKKyAKKyAgICAgICAgIC8qIGluaXQgdGhlIGdsb2JhbCBmYWtlIGNvbnRleHQgKi8K KyAgICAgICAgIGlmIChpYnVzX2J1c19pc19jb25uZWN0ZWQgKF9idXMpKSB7CitAQCAtNjAzLDcg KzYwMyw3IEBAIGlidXNfaW1fY29udGV4dF9jbGFzc19pbml0IChJQnVzSU1Db250ZXh0Q2xhc3Mg KmNsYXNzKQorICAgICB9CisgCisgICAgIF9kYWVtb25fbmFtZV93YXRjaF9pZCA9IGdfYnVzX3dh dGNoX25hbWUgKEdfQlVTX1RZUEVfU0VTU0lPTiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSUJVU19TRVJWSUNFX0lCVVMsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidXNfYnVzX2dldF9zZXJ2aWNlX25hbWUg KF9idXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH X0JVU19OQU1FX1dBVENIRVJfRkxBR1NfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGFlbW9uX25hbWVfYXBwZWFyZWQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhZW1vbl9uYW1lX3ZhbmlzaGVkLAor ZGlmZiAtLWdpdCBhL3NyYy9pYnVzYnVzLmMgYi9zcmMvaWJ1c2J1cy5jCitpbmRleCA3NTQwNmEz Ny4uZmMwYzkwMzMgMTAwNjQ0CistLS0gYS9zcmMvaWJ1c2J1cy5jCisrKysgYi9zcmMvaWJ1c2J1 cy5jCitAQCAtNDgsMTIgKzQ4LDE0IEBAIGVudW0geworIGVudW0geworICAgICBQUk9QXzAgPSAw LAorICAgICBQUk9QX0NPTk5FQ1RfQVNZTkMsCisrICAgIFBST1BfQ0xJRU5UX09OTFksCisgfTsK KyAKKyAvKiBJQnVzQnVzUHJpdiAqLworIHN0cnVjdCBfSUJ1c0J1c1ByaXZhdGUgeworICAgICBH RmlsZU1vbml0b3IgKm1vbml0b3I7CisgICAgIEdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbjsK KysgICAgZ2Jvb2xlYW4gY29ubmVjdGVkOworICAgICBnYm9vbGVhbiB3YXRjaF9kYnVzX3NpZ25h bDsKKyAgICAgZ3VpbnQgd2F0Y2hfZGJ1c19zaWduYWxfaWQ7CisgICAgIGdib29sZWFuIHdhdGNo X2lidXNfc2lnbmFsOworQEAgLTYyLDcgKzY0LDEwIEBAIHN0cnVjdCBfSUJ1c0J1c1ByaXZhdGUg eworICAgICBnY2hhciAqdW5pcXVlX25hbWU7CisgICAgIGdib29sZWFuIGNvbm5lY3RfYXN5bmM7 CisgICAgIGdjaGFyICpidXNfYWRkcmVzczsKKysgICAgZ2Jvb2xlYW4gdXNlX3BvcnRhbDsKKysg ICAgZ2Jvb2xlYW4gY2xpZW50X29ubHk7CisgICAgIEdDYW5jZWxsYWJsZSAqY2FuY2VsbGFibGU7 CisrICAgIGd1aW50IHBvcnRhbF9uYW1lX3dhdGNoX2lkOworIH07CisgCisgc3RhdGljIGd1aW50 ICAgIGJ1c19zaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCB9OworQEAgLTc0LDYgKzc5LDcgQEAg c3RhdGljIEdPYmplY3QgICppYnVzX2J1c19jb25zdHJ1Y3RvciAgICAgICAgICAgKEdUeXBlICAg ICAgICAgICAgICAgICAgIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgIG5fcGFyYW1zLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHT2JqZWN0Q29uc3Ry dWN0UGFyYW0gICpwYXJhbXMpOworIHN0YXRpYyB2b2lkICAgICAgaWJ1c19idXNfZGVzdHJveSAg ICAgICAgICAgICAgIChJQnVzT2JqZWN0ICAgICAgICAgICAgICpvYmplY3QpOworK3N0YXRpYyB2 b2lkICAgICAgaWJ1c19idXNfY29ubmVjdF9hc3luYyAgICAgICAgIChJQnVzQnVzICAgICAgICAg ICAgICAgICpidXMpOworIHN0YXRpYyB2b2lkICAgICAgaWJ1c19idXNfd2F0Y2hfZGJ1c19zaWdu YWwgICAgIChJQnVzQnVzICAgICAgICAgICAgICAgICpidXMpOworIHN0YXRpYyB2b2lkICAgICAg aWJ1c19idXNfdW53YXRjaF9kYnVzX3NpZ25hbCAgIChJQnVzQnVzICAgICAgICAgICAgICAgICpi dXMpOworIHN0YXRpYyB2b2lkICAgICAgaWJ1c19idXNfd2F0Y2hfaWJ1c19zaWduYWwgICAgIChJ QnVzQnVzICAgICAgICAgICAgICAgICpidXMpOworQEAgLTExNyw4ICsxMjMsMTAgQEAgaWJ1c19i dXNfY2xhc3NfaW5pdCAoSUJ1c0J1c0NsYXNzICpjbGFzcykKKyAgICAgSUJ1c09iamVjdENsYXNz ICppYnVzX29iamVjdF9jbGFzcyA9IElCVVNfT0JKRUNUX0NMQVNTIChjbGFzcyk7CisgCisgICAg IGdvYmplY3RfY2xhc3MtPmNvbnN0cnVjdG9yID0gaWJ1c19idXNfY29uc3RydWN0b3I7CistICAg IGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IChHT2JqZWN0U2V0UHJvcGVydHlGdW5jKSBp YnVzX2J1c19zZXRfcHJvcGVydHk7CistICAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9 IChHT2JqZWN0R2V0UHJvcGVydHlGdW5jKSBpYnVzX2J1c19nZXRfcHJvcGVydHk7CisrICAgIGdv YmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9CisrICAgICAgICAgICAgKEdPYmplY3RTZXRQcm9w ZXJ0eUZ1bmMpIGlidXNfYnVzX3NldF9wcm9wZXJ0eTsKKysgICAgZ29iamVjdF9jbGFzcy0+Z2V0 X3Byb3BlcnR5ID0KKysgICAgICAgICAgICAoR09iamVjdEdldFByb3BlcnR5RnVuYykgaWJ1c19i dXNfZ2V0X3Byb3BlcnR5OworICAgICBpYnVzX29iamVjdF9jbGFzcy0+ZGVzdHJveSA9IGlidXNf YnVzX2Rlc3Ryb3k7CisgCisgICAgIC8qIGluc3RhbGwgcHJvcGVydGllcyAqLworQEAgLTEyOCwx MyArMTM2LDI4IEBAIGlidXNfYnVzX2NsYXNzX2luaXQgKElCdXNCdXNDbGFzcyAqY2xhc3MpCisg ICAgICAqIFdoZXRoZXIgdGhlICNJQnVzQnVzIG9iamVjdCBzaG91bGQgY29ubmVjdCBhc3luY2hy b25vdXNseSB0byB0aGUgYnVzLgorICAgICAgKgorICAgICAgKi8KKy0gICAgZ19vYmplY3RfY2xh c3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUFJPUF9DT05ORUNUX0FTWU5DLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImNvbm5lY3QtYXN5bmMi LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIkNvbm5lY3QgQXN5bmMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3QgYXN5bmNocm9ub3VzbHkgdG8gdGhl IGJ1cyIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBGQUxTRSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJV Q1RfT05MWSkpOworKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5ICgKKysgICAg ICAgICAgICBnb2JqZWN0X2NsYXNzLAorKyAgICAgICAgICAgIFBST1BfQ09OTkVDVF9BU1lOQywK KysgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImNvbm5lY3QtYXN5bmMiLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdCBBc3luYyIsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0IGFzeW5jaHJvbm91c2x5IHRvIHRo ZSBidXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFN X0NPTlNUUlVDVF9PTkxZKSk7CisrICAgIC8qKgorKyAgICAgKiBJQnVzQnVzOmNsaWVudC1vbmx5 OgorKyAgICAgKgorKyAgICAgKiBXaGV0aGVyIHRoZSAjSUJ1c0J1cyBvYmplY3QgaXMgZm9yIGNs aWVudCB1c2Ugb25seS4KKysgICAgICoKKysgICAgICovCisrICAgIGdfb2JqZWN0X2NsYXNzX2lu c3RhbGxfcHJvcGVydHkgKAorKyAgICAgICAgICAgIGdvYmplY3RfY2xhc3MsCisrICAgICAgICAg ICAgUFJPUF9DTElFTlRfT05MWSwKKysgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAo ImNsaWVudC1vbmx5IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNsaWVu dE9ubHkiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xpZW50IHVzZSBv bmx5IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9D T05TVFJVQ1RfT05MWSkpOworIAorICAgICAvKiBpbnN0YWxsIHNpZ25hbHMgKi8KKyAgICAgLyoq CitAQCAtMjk0LDYgKzMxNyw4IEBAIGlidXNfYnVzX2Nsb3NlX2Nvbm5lY3Rpb24gKElCdXNCdXMg KmJ1cykKKyAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwgKGJ1cy0+cHJpdi0+Y2FuY2VsbGFibGUp OworICAgICBnX2NhbmNlbGxhYmxlX3Jlc2V0IChidXMtPnByaXYtPmNhbmNlbGxhYmxlKTsKKyAK KysgICAgYnVzLT5wcml2LT5jb25uZWN0ZWQgPSBGQUxTRTsKKysKKyAgICAgLyogdW5yZWYgdGhl IG9sZCBjb25uZWN0aW9uIGF0IGZpcnN0ICovCisgICAgIGlmIChidXMtPnByaXYtPmNvbm5lY3Rp b24gIT0gTlVMTCkgeworICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9m dW5jIChidXMtPnByaXYtPmNvbm5lY3Rpb24sCitAQCAtMzExLDYgKzMzNiw4IEBAIHN0YXRpYyB2 b2lkCisgaWJ1c19idXNfY29ubmVjdF9jb21wbGV0ZWQgKElCdXNCdXMgKmJ1cykKKyB7CisgICAg IGdfYXNzZXJ0IChidXMtPnByaXYtPmNvbm5lY3Rpb24pOwogKwotK3ZvaWQKLStpYnVzX2ZvbnRz ZXRfdW5yZWYgKElCdXNGb250U2V0ICpmb250c2V0KQorKyAgICBidXMtPnByaXYtPmNvbm5lY3Rl ZCA9IFRSVUU7CisgICAgIC8qIEZJWE1FICovCisgICAgIGlidXNfYnVzX2hlbGxvIChidXMpOwor IAorQEAgLTMyOSw5ICszNTYsMzggQEAgaWJ1c19idXNfY29ubmVjdF9jb21wbGV0ZWQgKElCdXNC dXMgKmJ1cykKKyB9CisgCisgc3RhdGljIHZvaWQKKytfYnVzX2Nvbm5lY3Rfc3RhcnRfcG9ydGFs X2NiIChHT2JqZWN0ICAgICAgKnNvdXJjZV9vYmplY3QsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0FzeW5jUmVzdWx0ICpyZXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3BvaW50ZXIgICAgICB1c2VyX2RhdGEpCiArewotKyAgICBnX29iamVjdF91bnJlZiAoZm9u dHNldCk7CisrICAgIElCdXNCdXMgKmJ1cyA9IElCVVNfQlVTICh1c2VyX2RhdGEpOworKyAgICBH VmFyaWFudCAqcmVzdWx0OworKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKysKKysgICAgcmVz dWx0ID0gZ19kYnVzX2Nvbm5lY3Rpb25fY2FsbF9maW5pc2ggKEdfREJVU19DT05ORUNUSU9OIChz b3VyY2Vfb2JqZWN0KSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZl cnJvcik7CisrICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgeworKyAgICAgICAgaWJ1c19idXNfY29u bmVjdF9jb21wbGV0ZWQgKGJ1cyk7CisrICAgICAgICBnX3ZhcmlhbnRfdW5yZWYgKHJlc3VsdCk7 CisrICAgIH0gZWxzZSB7CisrICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKKysKKysgICAg ICAgIGdfZGJ1c19jb25uZWN0aW9uX2Nsb3NlIChidXMtPnByaXYtPmNvbm5lY3Rpb24sIE5VTEws IE5VTEwsIE5VTEwpOworKyAgICAgICAgZ19vYmplY3RfdW5yZWYgKGJ1cy0+cHJpdi0+Y29ubmVj dGlvbik7CisrICAgICAgICBidXMtPnByaXYtPmNvbm5lY3Rpb24gPSBOVUxMOworKworKyAgICAg ICAgZ19mcmVlIChidXMtPnByaXYtPmJ1c19hZGRyZXNzKTsKKysgICAgICAgIGJ1cy0+cHJpdi0+ YnVzX2FkZHJlc3MgPSBOVUxMOworKyAgICB9CisrCisrICAgIGdfb2JqZWN0X3VucmVmIChidXMp OwogK30KICsKLStJQnVzUmVxdWlzaXRpb25FeCAqCi0raWJ1c19mb250c2V0X2dldF9wcmVmZXJy ZWRfc2l6ZV9oYiAoSUJ1c0ZvbnRTZXQgICAgICAgICAgKmZvbnRzZXQsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICp0ZXh0LAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX3JlY3RhbmdsZV9pbnRfdCAq d2lkZXN0KQotK3sKLSsgICAgZ2NoYXIgKmNvcGllZF90ZXh0OwotKyAgICBnY2hhciAqcDsKLSsg ICAgRm9udFBlckNoYXIgKmJ1ZmY7Ci0rICAgIElCdXNDYWlyb0xpbmUgKmNhaXJvX2xpbmVzID0g TlVMTDsKLSsgICAgSUJ1c1JlcXVpc2l0aW9uRXggKnJlcSA9IE5VTEw7Ci0rICAgIEdTdHJpbmcg KnN0ciA9IE5VTEw7Ci0rICAgIGludCB0ZXh0X2xlbmd0aDsKLSsgICAgaW50IGksIG4gPSAwOwot KwotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19GT05UU0VUIChmb250c2V0KSwg TlVMTCk7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChtX2ZjZm9udHNldCAhPSBOVUxMLCBO VUxMKTsKLSsKLSsgICAgY29waWVkX3RleHQgPSBnX3N0cmR1cCAodGV4dCk7Ci0rICAgIHRleHRf bGVuZ3RoID0gIGdfdXRmOF9zdHJsZW4gKHRleHQsIC0xKTsKLSsgICAgYnVmZiA9IGdfc2xpY2Vf YWxsb2MwIChzaXplb2YgKEZvbnRQZXJDaGFyKSAqIHRleHRfbGVuZ3RoKTsKLSsgICAgc3RyID0g Z19zdHJpbmdfbmV3IChOVUxMKTsKLSsKLSsgICAgZm9yIChwID0gY29waWVkX3RleHQ7ICpwICE9 ICdcMCc7IHAgPSBnX3V0ZjhfbmV4dF9jaGFyIChwKSkgewotKyAgICAgICAgZ3VuaWNoYXIgYyA9 IGdfdXRmOF9nZXRfY2hhciAocCk7Ci0rICAgICAgICBnYm9vbGVhbiBoYXNfZ2x5cGhzID0gRkFM U0U7Ci0rICAgICAgICBidWZmW25dLmNoID0gYzsKLSsgICAgICAgIGlmICgoYyA9PSAweGZlMGV1 IHx8IGMgPT0gMHhmZTBmdSkgJiYgbiA+IDApIHsKLSsgICAgICAgICAgICBidWZmW25dLmZjZm9u dCA9IGJ1ZmZbbi0xXS5mY2ZvbnQ7Ci0rICAgICAgICAgICAgKytuOwotKyAgICAgICAgICAgIGNv bnRpbnVlOwotKyAgICAgICAgfQotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG1fZmNmb250c2V0 LT5uZm9udDsgaSsrKSB7Ci0rICAgICAgICAgICAgaWYgKGdfdW5pY2hhcl9pc2NudHJsIChjKSAm JiAhZ191bmljaGFyX2lzc3BhY2UgKGMpKQotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAg ICAgICAgICBGVF9GYWNlIGZ0X2ZhY2UgPSBpYnVzX2ZvbnRzZXRfZ2V0X2Z0ZmFjZV9mcm9tX2Zj Zm9udCAoCi0rICAgICAgICAgICAgICAgICAgICBmb250c2V0LAotKyAgICAgICAgICAgICAgICAg ICAgbV9mY2ZvbnRzZXQtPmZvbnRzW2ldKTsKLSsgICAgICAgICAgICBpZiAoRlRfR2V0X0NoYXJf SW5kZXggKGZ0X2ZhY2UsIGMpICE9IDApIHsKLSsgICAgICAgICAgICAgICAgYnVmZltuXS5mY2Zv bnQgPSBtX2ZjZm9udHNldC0+Zm9udHNbaV07Ci0rICAgICAgICAgICAgICAgIGlmIChuID4gMCAm JiBidWZmW24gLSAxXS5mY2ZvbnQgIT0gYnVmZltuXS5mY2ZvbnQpIHsKLSsgICAgICAgICAgICAg ICAgICAgIGdldF9zdHJpbmdfZXh0ZW50c193aXRoX2ZvbnQgKHN0ci0+c3RyLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZbbiAtIDFdLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkZXN0 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNh aXJvX2xpbmVzKTsKLSsgICAgICAgICAgICAgICAgICAgIGdfc3RyaW5nX2ZyZWUgKHN0ciwgVFJV RSk7Ci0rICAgICAgICAgICAgICAgICAgICBzdHIgPSBnX3N0cmluZ19uZXcgKE5VTEwpOwotKyAg ICAgICAgICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3VuaWNoYXIgKHN0ciwgYyk7Ci0rICAg ICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBl bmRfdW5pY2hhciAoc3RyLCBjKTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAg ICArK247Ci0rICAgICAgICAgICAgICAgIGhhc19nbHlwaHMgPSBUUlVFOwotKyAgICAgICAgICAg ICAgICBGVF9Eb25lX0ZhY2UgKGZ0X2ZhY2UpOwotKyAgICAgICAgICAgICAgICBicmVhazsKLSsg ICAgICAgICAgICB9Ci0rICAgICAgICAgICAgRlRfRG9uZV9GYWNlIChmdF9mYWNlKTsKLSsgICAg ICAgIH0KLSsgICAgICAgIGlmICghaGFzX2dseXBocykgewotKyAgICAgICAgICAgIGlmIChuID4g MCkgewotKyAgICAgICAgICAgICAgICBidWZmW25dLmZjZm9udCA9IGJ1ZmZbbiAtIDFdLmZjZm9u dDsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICAvKiBTZWFyY2ggYSBm b250IGZvciBub24tZ2x5cGggY2hhciB0byBkcmF3IHRoZSBjb2RlIHBvaW50cwotKyAgICAgICAg ICAgICAgICAgKiBsaWtlcyBQYW5nby4KLSsgICAgICAgICAgICAgICAgICovCi0rICAgICAgICAg ICAgICAgIGZvciAoaSA9IDA7IGkgPCBtX2ZjZm9udHNldC0+bmZvbnQ7IGkrKykgewotKyAgICAg ICAgICAgICAgICAgICAgRlRfRmFjZSBmdF9mYWNlID0gaWJ1c19mb250c2V0X2dldF9mdGZhY2Vf ZnJvbV9mY2ZvbnQgKAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250c2V0LAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZjZm9udHNldC0+Zm9udHNbaV0pOwotKyAgICAg ICAgICAgICAgICAgICAgLyogQ2hlY2sgYWxwaGFiZXRzIGluc3RlYWQgb2Ygc3BhY2Ugb3IgZGln aXRzCi0rICAgICAgICAgICAgICAgICAgICAgKiBiZWNhdXNlICdOb3RvIEVtb2ppIENvbG9yJyBm b250J3MgZGlnaXRzIGFyZQotKyAgICAgICAgICAgICAgICAgICAgICogd2hpdGUgY29sb3IgYW5k IGNhbm5vdCBjaGFuZ2UgdGhlIGZvbnQgY29sb3IuCi0rICAgICAgICAgICAgICAgICAgICAgKiB0 aGUgZm9udCBkb2VzIG5vdCBoYXZlIGFscGhhYmV0cy4KLSsgICAgICAgICAgICAgICAgICAgICAq LwotKyAgICAgICAgICAgICAgICAgICAgaWYgKEZUX0dldF9DaGFyX0luZGV4IChmdF9mYWNlLCAn QScpICE9IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBidWZmW25dLmZjZm9udCA9IG1f ZmNmb250c2V0LT5mb250c1tpXTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBGVF9Eb25lX0Zh Y2UgKGZ0X2ZhY2UpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc19nbHlwaHMgPSBUUlVF OwotKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgICAgICAgICAg fQotKyAgICAgICAgICAgICAgICAgICAgRlRfRG9uZV9GYWNlIChmdF9mYWNlKTsKLSsgICAgICAg ICAgICAgICAgfQotKyAgICAgICAgICAgICAgICBpZiAoIWhhc19nbHlwaHMpIHsKLSsgICAgICAg ICAgICAgICAgICAgIGJ1ZmZbbl0uZmNmb250ID0gbV9mY2ZvbnRzZXQtPmZvbnRzWzBdOwotKyAg ICAgICAgICAgICAgICAgICAgZ193YXJuaW5nICgiTm90IGZvdW5kIGZvbnRzIGZvciB1bmljb2Rl ICUwNFggYXQgJWQgaW4gJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLCBu LCB0ZXh0KTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAg ICBuKys7Ci0rICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3VuaWNoYXIgKHN0ciwgYyk7Cisr c3RhdGljIHZvaWQKKyBfYnVzX2Nvbm5lY3RfYXN5bmNfY2IgKEdPYmplY3QgICAgICAqc291cmNl X29iamVjdCwKKy0gICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgKnJlcywKKy0g ICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgIHVzZXJfZGF0YSkKKysgICAgICAg ICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAqcmVzLAorKyAgICAgICAgICAgICAgICAgICAg ICAgZ3BvaW50ZXIgICAgICB1c2VyX2RhdGEpCisgeworICAgICBnX3JldHVybl9pZl9mYWlsICh1 c2VyX2RhdGEgIT0gTlVMTCk7CisgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfQlVTICh1 c2VyX2RhdGEpKTsKK0BAIC0zNDksNyArNDA1LDI2IEBAIF9idXNfY29ubmVjdF9hc3luY19jYiAo R09iamVjdCAgICAgICpzb3VyY2Vfb2JqZWN0LAorICAgICB9CisgCisgICAgIGlmIChidXMtPnBy aXYtPmNvbm5lY3Rpb24gIT0gTlVMTCkgeworLSAgICAgICAgaWJ1c19idXNfY29ubmVjdF9jb21w bGV0ZWQgKGJ1cyk7CisrICAgICAgICBpZiAoYnVzLT5wcml2LT51c2VfcG9ydGFsKSB7CisrICAg ICAgICAgICAgZ19vYmplY3Rfc2V0X2RhdGEgKEdfT0JKRUNUIChidXMtPnByaXYtPmNvbm5lY3Rp b24pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWJ1cy1wb3J0YWwtY29ubmVj dGlvbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAo VFJVRSkpOworKyAgICAgICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwgKAorKyAgICAgICAg ICAgICAgICAgICAgYnVzLT5wcml2LT5jb25uZWN0aW9uLAorKyAgICAgICAgICAgICAgICAgICAg SUJVU19TRVJWSUNFX1BPUlRBTCwKKysgICAgICAgICAgICAgICAgICAgIElCVVNfUEFUSF9JQlVT LAorKyAgICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5EQnVzLlBlZXIiLAorKyAg ICAgICAgICAgICAgICAgICAgIlBpbmciLAorKyAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50 X25ldyAoIigpIiksCisrICAgICAgICAgICAgICAgICAgICBHX1ZBUklBTlRfVFlQRSAoIigpIiks CisrICAgICAgICAgICAgICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLAorKyAgICAgICAg ICAgICAgICAgICAgLTEsCisrICAgICAgICAgICAgICAgICAgICBidXMtPnByaXYtPmNhbmNlbGxh YmxlLAorKyAgICAgICAgICAgICAgICAgICAgKEdBc3luY1JlYWR5Q2FsbGJhY2spIF9idXNfY29u bmVjdF9zdGFydF9wb3J0YWxfY2IsCisrICAgICAgICAgICAgICAgICAgICBnX29iamVjdF9yZWYg KGJ1cykpOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBpYnVzX2J1c19jb25uZWN0 X2NvbXBsZXRlZCAoYnVzKTsKICsgICAgICAgIH0KKyAgICAgfQorICAgICBlbHNlIHsKKyAgICAg ICAgIGdfZnJlZSAoYnVzLT5wcml2LT5idXNfYWRkcmVzcyk7CitAQCAtMzYwLDIxICs0MzUsMzIg QEAgX2J1c19jb25uZWN0X2FzeW5jX2NiIChHT2JqZWN0ICAgICAgKnNvdXJjZV9vYmplY3QsCisg ICAgIGdfb2JqZWN0X3VucmVmIChidXMpOworIH0KKyAKKytzdGF0aWMgZ2NoYXIgKgorK2lidXNf YnVzX2dldF9idXNfYWRkcmVzcyAoSUJ1c0J1cyAqYnVzKQorK3sKKysgICAgaWYgKF9idXMtPnBy aXYtPnVzZV9wb3J0YWwpCisrICAgICAgICByZXR1cm4gZ19kYnVzX2FkZHJlc3NfZ2V0X2Zvcl9i dXNfc3luYyAoR19CVVNfVFlQRV9TRVNTSU9OLCBOVUxMLCBOVUxMKTsKKysgICAgZWxzZQorKyAg ICAgICAgcmV0dXJuIGdfc3RyZHVwIChpYnVzX2dldF9hZGRyZXNzICgpKTsKKyt9CisrCisgc3Rh dGljIHZvaWQKKyBpYnVzX2J1c19jb25uZWN0X2FzeW5jIChJQnVzQnVzICpidXMpCisgeworLSAg ICBjb25zdCBnY2hhciAqYnVzX2FkZHJlc3MgPSBpYnVzX2dldF9hZGRyZXNzICgpOworKyAgICBn Y2hhciAqYnVzX2FkZHJlc3MgPSBpYnVzX2J1c19nZXRfYnVzX2FkZHJlc3MgKGJ1cyk7CisgCisg ICAgIGlmIChidXNfYWRkcmVzcyA9PSBOVUxMKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBp ZiAoZ19zdHJjbXAwIChidXMtPnByaXYtPmJ1c19hZGRyZXNzLCBidXNfYWRkcmVzcykgPT0gMCkK KysgICAgaWYgKGdfc3RyY21wMCAoYnVzLT5wcml2LT5idXNfYWRkcmVzcywgYnVzX2FkZHJlc3Mp ID09IDApIHsKKysgICAgICAgIGdfZnJlZSAoYnVzX2FkZHJlc3MpOworICAgICAgICAgcmV0dXJu OwogKyAgICB9Ci0rICAgIGlmIChzdHItPnN0cikgewotKyAgICAgICAgZ2V0X3N0cmluZ19leHRl bnRzX3dpdGhfZm9udCAoc3RyLT5zdHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmYnVmZltuIC0gMV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3aWRlc3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2Fp cm9fbGluZXMpOwotKyAgICAgICAgZ19zdHJpbmdfZnJlZSAoc3RyLCBUUlVFKTsKLSsgICAgfQot KyAgICBnX3NsaWNlX2ZyZWUxIChzaXplb2YgKEZvbnRQZXJDaGFyKSAqIHRleHRfbGVuZ3RoLCBi dWZmKTsKLSsgICAgZ19mcmVlIChjb3BpZWRfdGV4dCk7Ci0rICAgIHdpZGVzdC0+d2lkdGggKz0g WFBBRCAqIDI7Ci0rICAgIHdpZGVzdC0+aGVpZ2h0ICs9IFlQQUQgKiAyOwotKyAgICByZXEgPSBn X25ldzAgKElCdXNSZXF1aXNpdGlvbkV4LCAxKTsKLSsgICAgcmVxLT53aWR0aCA9IHdpZGVzdC0+ d2lkdGg7Ci0rICAgIHJlcS0+aGVpZ2h0ID0gd2lkZXN0LT5oZWlnaHQ7Ci0rICAgIHJlcS0+Y2Fp cm9fbGluZXMgPSBjYWlyb19saW5lczsKLSsgICAgcmV0dXJuIHJlcTsKKyAKKyAgICAgLyogQ2xv c2UgY3VycmVudCBjb25uZWN0aW9uIGFuZCBjYW5jZWwgb25nb2luZyBjb25uZWN0IHJlcXVlc3Qu ICovCisgICAgIGlidXNfYnVzX2Nsb3NlX2Nvbm5lY3Rpb24gKGJ1cyk7CisgCistICAgIGJ1cy0+ cHJpdi0+YnVzX2FkZHJlc3MgPSBnX3N0cmR1cCAoYnVzX2FkZHJlc3MpOworKyAgICBidXMtPnBy aXYtPmJ1c19hZGRyZXNzID0gYnVzX2FkZHJlc3M7CisgICAgIGdfb2JqZWN0X3JlZiAoYnVzKTsK KyAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fbmV3X2Zvcl9hZGRyZXNzICgKKyAgICAgICAgICAgICBi dXNfYWRkcmVzcywKK0BAIC0zODUsNiArNDcxLDI4IEBAIGlidXNfYnVzX2Nvbm5lY3RfYXN5bmMg KElCdXNCdXMgKmJ1cykKKyAgICAgICAgICAgICBfYnVzX2Nvbm5lY3RfYXN5bmNfY2IsIGJ1cyk7 CisgfQorIAorK3N0YXRpYyBnYm9vbGVhbgorK2lzX2luX2ZsYXRwYWsgKHZvaWQpCisreworKyAg ICBzdGF0aWMgZ2Jvb2xlYW4gZmxhdHBha19pbmZvX3JlYWQ7CisrICAgIHN0YXRpYyBnYm9vbGVh biBpbl9mbGF0cGFrOworKworKyAgICBpZiAoZmxhdHBha19pbmZvX3JlYWQpCisrICAgICAgICBy ZXR1cm4gaW5fZmxhdHBhazsKKysKKysgICAgZmxhdHBha19pbmZvX3JlYWQgPSBUUlVFOworKyAg ICBpZiAoZ19maWxlX3Rlc3QgKCIvLmZsYXRwYWstaW5mbyIsIEdfRklMRV9URVNUX0VYSVNUUykp CisrICAgICAgICBpbl9mbGF0cGFrID0gVFJVRTsKKysgICAgcmV0dXJuIGluX2ZsYXRwYWs7CiAr fQogKwotK3ZvaWQKLStpYnVzX2ZvbnRzZXRfZHJhd19jYWlyb193aXRoX3JlcXVpc2l0aW9uX2V4 IChJQnVzRm9udFNldCAgICAgICAqZm9udHNldCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjYWlyb190ICAgICAgICAgICAqY3IsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1JlcXVpc2l0aW9uRXggKmV4KQor K3N0YXRpYyBnYm9vbGVhbgorK2lidXNfYnVzX3Nob3VsZF9jb25uZWN0X3BvcnRhbCAoSUJ1c0J1 cyAqYnVzKQogK3sKLSsgICAgSUJ1c0NhaXJvTGluZSAqY2Fpcm9fbGluZXM7Ci0rICAgIGludCBp OworKyAgICByZXR1cm4gYnVzLT5wcml2LT5jbGllbnRfb25seSAmJgorKyAgICAgICAgKGlzX2lu X2ZsYXRwYWsgKCkgfHwgZ19nZXRlbnYgKCJJQlVTX1VTRV9QT1JUQUwiKSAhPSBOVUxMKTsKKyt9 CisrCisgc3RhdGljIHZvaWQKKyBpYnVzX2J1c19jb25uZWN0IChJQnVzQnVzICpidXMpCisgewor QEAgLTQzMSw3ICs1MzksNiBAQCBpYnVzX2J1c19pbml0IChJQnVzQnVzICpidXMpCisgeworICAg ICBzdHJ1Y3Qgc3RhdCBidWY7CisgICAgIGdjaGFyICpwYXRoOworLSAgICBHRmlsZSAqZmlsZTsK KyAKKyAgICAgYnVzLT5wcml2ID0gSUJVU19CVVNfR0VUX1BSSVZBVEUgKGJ1cyk7CisgCitAQCAt NDQzLDYgKzU1MCw3IEBAIGlidXNfYnVzX2luaXQgKElCdXNCdXMgKmJ1cykKKyAgICAgYnVzLT5w cml2LT53YXRjaF9pYnVzX3NpZ25hbF9pZCA9IDA7CisgICAgIGJ1cy0+cHJpdi0+dW5pcXVlX25h bWUgPSBOVUxMOworICAgICBidXMtPnByaXYtPmNvbm5lY3RfYXN5bmMgPSBGQUxTRTsKKysgICAg YnVzLT5wcml2LT5jbGllbnRfb25seSA9IEZBTFNFOworICAgICBidXMtPnByaXYtPmJ1c19hZGRy ZXNzID0gTlVMTDsKKyAgICAgYnVzLT5wcml2LT5jYW5jZWxsYWJsZSA9IGdfY2FuY2VsbGFibGVf bmV3ICgpOworIAorQEAgLTQ1MywxNyArNTYxLDEyIEBAIGlidXNfYnVzX2luaXQgKElCdXNCdXMg KmJ1cykKKyAKKyAgICAgaWYgKHN0YXQgKHBhdGgsICZidWYpID09IDApIHsKKyAgICAgICAgIGlm IChidWYuc3RfdWlkICE9IGdldHVpZCAoKSkgeworLSAgICAgICAgICAgIGdfd2FybmluZyAoIlRo ZSBvd25lciBvZiAlcyBpcyBub3QgJXMhIiwgcGF0aCwgaWJ1c19nZXRfdXNlcl9uYW1lICgpKTsK KysgICAgICAgICAgICBnX3dhcm5pbmcgKCJUaGUgb3duZXIgb2YgJXMgaXMgbm90ICVzISIsCisr ICAgICAgICAgICAgICAgICAgICAgICBwYXRoLCBpYnVzX2dldF91c2VyX25hbWUgKCkpOworICAg ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBmaWxlID0gZ19m aWxlX25ld19mb3JfcGF0aCAoaWJ1c19nZXRfc29ja2V0X3BhdGggKCkpOworLSAgICBidXMtPnBy aXYtPm1vbml0b3IgPSBnX2ZpbGVfbW9uaXRvcl9maWxlIChmaWxlLCAwLCBOVUxMLCBOVUxMKTsK Ky0KKy0gICAgZ19zaWduYWxfY29ubmVjdCAoYnVzLT5wcml2LT5tb25pdG9yLCAiY2hhbmdlZCIs IChHQ2FsbGJhY2spIF9jaGFuZ2VkX2NiLCBidXMpOworLQorLSAgICBnX29iamVjdF91bnJlZiAo ZmlsZSk7CisgICAgIGdfZnJlZSAocGF0aCk7CisgfQorIAorQEAgLTQ3Nyw2ICs1ODAsOSBAQCBp YnVzX2J1c19zZXRfcHJvcGVydHkgKElCdXNCdXMgICAgICAqYnVzLAorICAgICBjYXNlIFBST1Bf Q09OTkVDVF9BU1lOQzoKKyAgICAgICAgIGJ1cy0+cHJpdi0+Y29ubmVjdF9hc3luYyA9IGdfdmFs dWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKKyAgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1Bf Q0xJRU5UX09OTFk6CisrICAgICAgICBidXMtPnByaXYtPmNsaWVudF9vbmx5ID0gZ192YWx1ZV9n ZXRfYm9vbGVhbiAodmFsdWUpOworKyAgICAgICAgYnJlYWs7CisgICAgIGRlZmF1bHQ6CisgICAg ICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKGJ1cywgcHJvcF9pZCwgcHNw ZWMpOworICAgICB9CitAQCAtNDkyLDI1ICs1OTgsNzMgQEAgaWJ1c19idXNfZ2V0X3Byb3BlcnR5 IChJQnVzQnVzICAgICpidXMsCisgICAgIGNhc2UgUFJPUF9DT05ORUNUX0FTWU5DOgorICAgICAg ICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIGJ1cy0+cHJpdi0+Y29ubmVjdF9hc3luYyk7 CisgICAgICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX0NMSUVOVF9PTkxZOgorKyAgICAgICAg Z192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIGJ1cy0+cHJpdi0+Y2xpZW50X29ubHkpOworKyAg ICAgICAgYnJlYWs7CisgICAgIGRlZmF1bHQ6CisgICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFM SURfUFJPUEVSVFlfSUQgKGJ1cywgcHJvcF9pZCwgcHNwZWMpOworICAgICB9CisgfQorIAorK3N0 YXRpYyB2b2lkCisrcG9ydGFsX25hbWVfYXBwZWFyZWQgKEdEQnVzQ29ubmVjdGlvbiAqY29ubmVj dGlvbiwKKysgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICpuYW1lLAorKyAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgKm93bmVyLAorKyAgICAgICAgICAg ICAgICAgICAgICBncG9pbnRlciAgICAgICAgIHVzZXJfZGF0YSkKKyt7CisrICAgIElCdXNCdXMg KmJ1cyA9IElCVVNfQlVTICh1c2VyX2RhdGEpOworKworKyAgICBpZiAoYnVzLT5wcml2LT5jb25u ZWN0aW9uID09IE5VTEwpCisrICAgICAgICBpYnVzX2J1c19jb25uZWN0X2FzeW5jIChidXMpOwor K30KICsKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19GT05UU0VUIChmb250c2V0KSk7 Ci0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGNyICE9IE5VTEwpOwotKyAgICBnX3JldHVybl9pZl9m YWlsIChleCAhPSBOVUxMKTsKKytzdGF0aWMgdm9pZAorK3BvcnRhbF9uYW1lX3ZhbmlzaGVkIChH REJ1c0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sCisrICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGdjaGFyICAgICAqbmFtZSwKKysgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAg ICB1c2VyX2RhdGEpCisreworKyAgICBJQnVzQnVzICpidXMgPSBJQlVTX0JVUyAodXNlcl9kYXRh KTsKICsKLSsgICAgY2Fpcm9fbGluZXMgPSBleC0+Y2Fpcm9fbGluZXM7Ci0rICAgIGdfcmV0dXJu X2lmX2ZhaWwgKGNhaXJvX2xpbmVzICE9IE5VTEwpOworKyAgICBpZiAoYnVzLT5wcml2LT5jb25u ZWN0aW9uKQorKyAgICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fY2xvc2UgKGJ1cy0+cHJpdi0+Y29u bmVjdGlvbiwgTlVMTCwgTlVMTCwgTlVMTCk7CisrfQogKwotKyAgICBmb3IgKGkgPSAwOyBjYWly b19saW5lc1tpXS5zY2FsZWRfZm9udDsgaSsrKSB7Ci0rICAgICAgICBjb25zdCBjYWlyb19nbHlw aF90ICpnbHlwaHMgPSAoY2Fpcm9fZ2x5cGhfdCAqKSBjYWlyb19saW5lc1tpXS5nbHlwaHM7Ci0r ICAgICAgICBndWludCBudW1fZ2x5cGhzID0gY2Fpcm9fbGluZXNbaV0ubnVtX2dseXBoczsKICsK LSsgICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X2xvY2tfZmFjZSAoY2Fpcm9fbGluZXNbaV0u c2NhbGVkX2ZvbnQpOwotKyAgICAgICAgY2Fpcm9fc2V0X3NjYWxlZF9mb250IChjciwgY2Fpcm9f bGluZXNbaV0uc2NhbGVkX2ZvbnQpOwotKyAgICAgICAgaWYgKG51bV9nbHlwaHMgPiAwICYmIGds eXBoc1swXS5pbmRleCAmIFBBTkdPX0dMWVBIX1VOS05PV05fRkxBRykgewotKyAgICAgICAgICAg IF9jYWlyb19zaG93X3Vua25vd25fZ2x5cGhzIChjciwgZ2x5cGhzLCBudW1fZ2x5cGhzLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleC0+d2lkdGgsIGV4LT5oZWln aHQpOworIHN0YXRpYyBHT2JqZWN0KgorIGlidXNfYnVzX2NvbnN0cnVjdG9yIChHVHlwZSAgICAg ICAgICAgICAgICAgIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAg ICAgICAgICAgbl9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgIEdPYmplY3RDb25zdHJ1 Y3RQYXJhbSAqcGFyYW1zKQorIHsKKyAgICAgR09iamVjdCAqb2JqZWN0OworKyAgICBHRmlsZSAq ZmlsZTsKKyAKKyAgICAgLyogc2hhcmUgb25lIElCdXNCdXMgaW5zdGFuY2UgaW4gd2hvbGUgYXBw bGljYXRpb24gKi8KKyAgICAgaWYgKF9idXMgPT0gTlVMTCkgeworLSAgICAgICAgb2JqZWN0ID0g R19PQkpFQ1RfQ0xBU1MgKGlidXNfYnVzX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yICh0eXBl LCBuX3BhcmFtcywgcGFyYW1zKTsKKysgICAgICAgIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTIChp YnVzX2J1c19wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RvciAoCisrICAgICAgICAgICAgICAgIHR5 cGUsIG5fcGFyYW1zLCBwYXJhbXMpOworICAgICAgICAgLyogbWFrZSBidXMgb2JqZWN0IHNpbmsg Ki8KKyAgICAgICAgIGdfb2JqZWN0X3JlZl9zaW5rIChvYmplY3QpOworICAgICAgICAgX2J1cyA9 IElCVVNfQlVTIChvYmplY3QpOworIAorKyAgICAgICAgX2J1cy0+cHJpdi0+dXNlX3BvcnRhbCA9 IGlidXNfYnVzX3Nob3VsZF9jb25uZWN0X3BvcnRhbCAoX2J1cyk7CisrCisrICAgICAgICBpZiAo IV9idXMtPnByaXYtPnVzZV9wb3J0YWwpIHsKKysgICAgICAgICAgICBmaWxlID0gZ19maWxlX25l d19mb3JfcGF0aCAoaWJ1c19nZXRfc29ja2V0X3BhdGggKCkpOworKyAgICAgICAgICAgIF9idXMt PnByaXYtPm1vbml0b3IgPSBnX2ZpbGVfbW9uaXRvcl9maWxlIChmaWxlLCAwLCBOVUxMLCBOVUxM KTsKKysgICAgICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChfYnVzLT5wcml2LT5tb25pdG9yLCAi Y2hhbmdlZCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdDYWxsYmFjaykgX2No YW5nZWRfY2IsIF9idXMpOworKyAgICAgICAgICAgIGdfb2JqZWN0X3VucmVmIChmaWxlKTsKICsg ICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgY2Fpcm9fc2hvd19nbHlwaHMgKGNyLCBnbHlw aHMsIG51bV9nbHlwaHMpOworKyAgICAgICAgICAgIF9idXMtPnByaXYtPnBvcnRhbF9uYW1lX3dh dGNoX2lkID0KKysgICAgICAgICAgICAgICAgZ19idXNfd2F0Y2hfbmFtZSAoR19CVVNfVFlQRV9T RVNTSU9OLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX1NFUlZJQ0Vf UE9SVEFMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0JVU19OQU1FX1dB VENIRVJfRkxBR1NfTk9ORSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9y dGFsX25hbWVfYXBwZWFyZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBv cnRhbF9uYW1lX3ZhbmlzaGVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf YnVzLCBOVUxMKTsKICsgICAgICAgIH0KLSsgICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X3Vu bG9ja19mYWNlIChjYWlyb19saW5lc1tpXS5zY2FsZWRfZm9udCk7CisrCisrCisgICAgICAgICBp ZiAoX2J1cy0+cHJpdi0+Y29ubmVjdF9hc3luYykKKyAgICAgICAgICAgICBpYnVzX2J1c19jb25u ZWN0X2FzeW5jIChfYnVzKTsKKyAgICAgICAgIGVsc2UKK0BAIC01NjEsNiArNzE1LDExIEBAIGli dXNfYnVzX2Rlc3Ryb3kgKElCdXNPYmplY3QgKm9iamVjdCkKKyAgICAgZ19vYmplY3RfdW5yZWYg KGJ1cy0+cHJpdi0+Y2FuY2VsbGFibGUpOworICAgICBidXMtPnByaXYtPmNhbmNlbGxhYmxlID0g TlVMTDsKKyAKKysgICAgaWYgKGJ1cy0+cHJpdi0+cG9ydGFsX25hbWVfd2F0Y2hfaWQpIHsKKysg ICAgICAgIGdfYnVzX3Vud2F0Y2hfbmFtZSAoYnVzLT5wcml2LT5wb3J0YWxfbmFtZV93YXRjaF9p ZCk7CisrICAgICAgICBidXMtPnByaXYtPnBvcnRhbF9uYW1lX3dhdGNoX2lkID0gMDsKICsgICAg fQorKworICAgICBJQlVTX09CSkVDVF9DTEFTUyAoaWJ1c19idXNfcGFyZW50X2NsYXNzKS0+ZGVz dHJveSAob2JqZWN0KTsKKyB9CisgCitAQCAtNjU2LDYgKzgxNSw3IEBAIGlidXNfYnVzX25ldyAo dm9pZCkKKyB7CisgICAgIElCdXNCdXMgKmJ1cyA9IElCVVNfQlVTIChnX29iamVjdF9uZXcgKElC VVNfVFlQRV9CVVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJjb25uZWN0LWFzeW5jIiwgRkFMU0UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJjbGllbnQtb25seSIsIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSk7CisgCisgICAgIHJldHVybiBidXM7CitAQCAt NjY2LDYgKzgyNiwxOCBAQCBpYnVzX2J1c19uZXdfYXN5bmMgKHZvaWQpCisgeworICAgICBJQnVz QnVzICpidXMgPSBJQlVTX0JVUyAoZ19vYmplY3RfbmV3IChJQlVTX1RZUEVfQlVTLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29ubmVjdC1hc3luYyIsIFRS VUUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGllbnQt b25seSIsIEZBTFNFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMKSk7CisrCisrICAgIHJldHVybiBidXM7CiArfQotZGlmZiAtLWdpdCBhL3VpL2d0azMv aWJ1c2ZvbnRzZXQuaCBiL3VpL2d0azMvaWJ1c2ZvbnRzZXQuaAotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAuLmVmY2FhMjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3VpL2d0azMv aWJ1c2ZvbnRzZXQuaAotQEAgLTAsMCArMSwzMDIgQEAKLSsvKiAtKi0gbW9kZTogQzsgYy1iYXNp Yy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgLSotICovCi0rLyogdmltOnNldCBl dCBzdHM9NDogKi8KLSsvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotKyAqIENvcHlyaWdodCAoQykg MjAxNyBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5 cmlnaHQgKEMpIDIwMTcgUmVkIEhhdCwgSW5jLgorKworK0lCdXNCdXMgKgorK2lidXNfYnVzX25l d19hc3luY19jbGllbnQgKHZvaWQpCisreworKyAgICBJQnVzQnVzICpidXMgPSBJQlVTX0JVUyAo Z19vYmplY3RfbmV3IChJQlVTX1RZUEVfQlVTLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiY29ubmVjdC1hc3luYyIsIFRSVUUsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGllbnQtb25seSIsIFRSVUUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKTsKKyAKKyAgICAgcmV0 dXJuIGJ1czsKK0BAIC02NzksNyArODUxLDcgQEAgaWJ1c19idXNfaXNfY29ubmVjdGVkIChJQnVz QnVzICpidXMpCisgICAgIGlmIChidXMtPnByaXYtPmNvbm5lY3Rpb24gPT0gTlVMTCB8fCBnX2Ri dXNfY29ubmVjdGlvbl9pc19jbG9zZWQgKGJ1cy0+cHJpdi0+Y29ubmVjdGlvbikpCisgICAgICAg ICByZXR1cm4gRkFMU0U7CisgCistICAgIHJldHVybiBUUlVFOworKyAgICByZXR1cm4gYnVzLT5w cml2LT5jb25uZWN0ZWQ7CisgfQorIAorIElCdXNJbnB1dENvbnRleHQgKgorQEAgLTc5NSw5ICs5 NjcsOSBAQCBpYnVzX2J1c19jcmVhdGVfaW5wdXRfY29udGV4dF9hc3luYyAoSUJ1c0J1cyAgICAg ICAgICAgICpidXMsCisgICAgICAqIDIuIE5ldyBsb2NhbCBJQnVzSW5wdXRDb250ZXh0IHByb3h5 IG9mIHRoZSByZW1vdGUgSUMKKyAgICAgICovCisgICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwg KGJ1cy0+cHJpdi0+Y29ubmVjdGlvbiwKKy0gICAgICAgICAgICBJQlVTX1NFUlZJQ0VfSUJVUywK KysgICAgICAgICAgICBpYnVzX2J1c19nZXRfc2VydmljZV9uYW1lIChidXMpLAorICAgICAgICAg ICAgIElCVVNfUEFUSF9JQlVTLAorLSAgICAgICAgICAgIElCVVNfSU5URVJGQUNFX0lCVVMsCisr ICAgICAgICAgICAgYnVzLT5wcml2LT51c2VfcG9ydGFsID8gSUJVU19JTlRFUkZBQ0VfUE9SVEFM IDogSUJVU19JTlRFUkZBQ0VfSUJVUywKKyAgICAgICAgICAgICAiQ3JlYXRlSW5wdXRDb250ZXh0 IiwKKyAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3ICgiKHMpIiwgY2xpZW50X25hbWUpLAorICAg ICAgICAgICAgIEdfVkFSSUFOVF9UWVBFKCIobykiKSwKK0BAIC0xNDU0LDYgKzE2MjYsMTQgQEAg aWJ1c19idXNfZ2V0X2Nvbm5lY3Rpb24gKElCdXNCdXMgKmJ1cykKKyAgICAgcmV0dXJuIGJ1cy0+ cHJpdi0+Y29ubmVjdGlvbjsKKyB9CisgCisrY29uc3QgZ2NoYXIgKgorK2lidXNfYnVzX2dldF9z ZXJ2aWNlX25hbWUgKElCdXNCdXMgKmJ1cykKKyt7CisrICAgIGlmIChidXMtPnByaXYtPnVzZV9w b3J0YWwpCisrICAgICAgICByZXR1cm4gSUJVU19TRVJWSUNFX1BPUlRBTDsKKysgICAgcmV0dXJu IElCVVNfU0VSVklDRV9JQlVTOworK30KKysKKyBnYm9vbGVhbgorIGlidXNfYnVzX2V4aXQgKElC dXNCdXMgKmJ1cywKKyAgICAgICAgICAgICAgICBnYm9vbGVhbiByZXN0YXJ0KQorQEAgLTIzNjks NiArMjU0OSwxMyBAQCBpYnVzX2J1c19jYWxsX3N5bmMgKElCdXNCdXMgICAgICAgICAgICAqYnVz LAorICAgICBnX2Fzc2VydCAobWVtYmVyICE9IE5VTEwpOworICAgICBnX3JldHVybl92YWxfaWZf ZmFpbCAoaWJ1c19idXNfaXNfY29ubmVjdGVkIChidXMpLCBOVUxMKTsKKyAKKysgICAgaWYgKGJ1 cy0+cHJpdi0+dXNlX3BvcnRhbCAmJgorKyAgICAgICAgZ19zdHJjbXAwIChidXNfbmFtZSwgSUJV U19TRVJWSUNFX0lCVVMpID09IDApICB7CisrICAgICAgICBidXNfbmFtZSA9IElCVVNfU0VSVklD RV9QT1JUQUw7CisrICAgICAgICBpZiAoZ19zdHJjbXAwIChpbnRlcmZhY2UsIElCVVNfSU5URVJG QUNFX0lCVVMpID09IDApCisrICAgICAgICAgICAgaW50ZXJmYWNlID0gSUJVU19JTlRFUkZBQ0Vf UE9SVEFMOworKyAgICB9CisrCisgICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworICAgICBHVmFy aWFudCAqcmVzdWx0OworICAgICByZXN1bHQgPSBnX2RidXNfY29ubmVjdGlvbl9jYWxsX3N5bmMg KGJ1cy0+cHJpdi0+Y29ubmVjdGlvbiwKK0BAIC0yNDM2LDYgKzI2MjMsMTMgQEAgaWJ1c19idXNf Y2FsbF9hc3luYyAoSUJ1c0J1cyAgICAgICAgICAgICpidXMsCisgICAgIHRhc2sgPSBnX3Rhc2tf bmV3IChidXMsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlcl9kYXRhKTsKKyAgICAgZ190YXNr X3NldF9zb3VyY2VfdGFnICh0YXNrLCBzb3VyY2VfdGFnKTsKKyAKKysgICAgaWYgKGJ1cy0+cHJp di0+dXNlX3BvcnRhbCAmJgorKyAgICAgICAgZ19zdHJjbXAwIChidXNfbmFtZSwgSUJVU19TRVJW SUNFX0lCVVMpID09IDApICB7CisrICAgICAgICBidXNfbmFtZSA9IElCVVNfU0VSVklDRV9QT1JU QUw7CisrICAgICAgICBpZiAoZ19zdHJjbXAwIChpbnRlcmZhY2UsIElCVVNfSU5URVJGQUNFX0lC VVMpID09IDApCisrICAgICAgICAgICAgaW50ZXJmYWNlID0gSUJVU19JTlRFUkZBQ0VfUE9SVEFM OworKyAgICB9CisrCisgICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwgKGJ1cy0+cHJpdi0+Y29u bmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVzX25hbWUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBhdGgsCitkaWZmIC0tZ2l0IGEvc3JjL2lidXNidXMuaCBi L3NyYy9pYnVzYnVzLmgKK2luZGV4IDlmNjVkMzZhLi5kZmYzZGZiNyAxMDA2NDQKKy0tLSBhL3Ny Yy9pYnVzYnVzLmgKKysrKyBiL3NyYy9pYnVzYnVzLmgKK0BAIC0xMDUsNiArMTA1LDE5IEBAIElC dXNCdXMgICAgICppYnVzX2J1c19uZXcgICAgICAgICAgICAgICAodm9pZCk7CisgICovCisgSUJ1 c0J1cyAgICAgKmlidXNfYnVzX25ld19hc3luYyAgICAgICAgICh2b2lkKTsKKyAKKysvKioKKysg KiBpYnVzX2J1c19uZXdfYXN5bmNfY2xpZW50OgogKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIKLSsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKysgKiBDcmVhdGVzIGEgbmV3ICNJQnVzQnVzIGluc3RhbmNlIGZv ciBjbGllbnQgdXNlIG9ubHkuIEl0IHdpbGwgcG9zc2libHkKKysgKiBiZSBsaW1pdGVkIGluIHdo YXQgaXQgY2FuIGRvLgogKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICog VGhlIGluc3RhbmNlIHdpbGwgYXN5bmNocm9ub3VzbHkgY29ubmVjdCB0byB0aGUgSUJ1cyBkYWVt b24uCiArICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAqIEZvdW5kYXRpb24sIElu Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz MDEKLSsgKiBVU0EKKysgKiBSZXR1cm5zOiBBIG5ld2x5IGFsbG9jYXRlZCAjSUJ1c0J1cyBpbnN0 YW5jZSwgYW5kIHRoZSBpbnN0YW5jZSBpcyBub3QKKysgKiBmbG9hdGluZy4KICsgKi8KKytJQnVz QnVzICAgICAqaWJ1c19idXNfbmV3X2FzeW5jX2NsaWVudCAgKHZvaWQpOwogKwotKyNpZm5kZWYg X19JQlVTX0hBUkZCVVpaX0hfCi0rI2RlZmluZSBfX0lCVVNfSEFSRkJVWlpfSF8KLSsKLSsvKioK LSsgKiBTRUNUSU9OOiBpYnVzZm9udHNldAotKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogT2JqZWN0 IGZvciBIYXJmQnV6eiBhbmQgRm9udGNvbmZpZy4KLSsgKiBAdGl0bGU6IElCdXNGb250U2V0Ci0r ICogQHN0YWJpbGl0eTogVW5zdGFibGUKKyAKKyAvKioKKyAgKiBpYnVzX2J1c19pc19jb25uZWN0 ZWQ6CitAQCAtMTI4LDYgKzE0MSwxNiBAQCBHREJ1c0Nvbm5lY3Rpb24gKgorICAgICAgICAgICAg ICBpYnVzX2J1c19nZXRfY29ubmVjdGlvbiAgICAoSUJ1c0J1cyAgICAgICAgKmJ1cyk7CisgCisg LyoqCisrICogaWJ1c19idXNfZ2V0X3NlcnZpY2VfbmFtZToKKysgKiBAYnVzOiBBbiAjSUJ1c0J1 cy4KICsgKgotKyAqIElCdXNGb250U2V0IG9mZmVycyBGY0ZvbnRTZXQsIGdseXBoIGluZm8gd2l0 aCBIYXJmQnV6eiBhbmQgcmVuZGVyaW5nCi0rICogb24gQ2Fpcm8gY29udGV4dC4KLSsgKiBDdXJy ZW50IFBhbmdvIGNoYW5nZXMgZm9udHMgYnkgZW1vamkgdmFyaWFudHMgYW5kIGRyYXdzIHRoZSBz ZXBhcmF0ZWQKLSsgKiBnbHlwaHMgWzFdIGJ1dCBhY3R1YWxseSB0aGUgZW1vamkgY2hhcmFjdGVy cyB3aXRoIHZhcmlhbnRzIGNhbiBiZSBkcmF3bgotKyAqIGFzIG9uZSBnbHlwaCBzbyB0aGlzIGNs YXNzICBtYW5hZ2VzIEZvbnRjb25maWcgZm9udHNldHMgdG8gc2VsZWN0IGEgZm9udCwKLSsgKiBI YXJmQnV6eiB0byBnZXQgZ2x5cGhzIGZvciBlbW9qaSB2YXJpYW50cywgQ2Fpcm8gdG8gZHJhdyBn bHlwaHMuCisrICogUmV0dXJuIHRoZSBtYWluIHNlcnZpY2UgbmFtZSB0byB1c2UgZm9yIGNhbGxz IG9uIHRoZSBpYnVzIGNvbm5lY3Rpb24uCiArICoKLSsgKiBbMV06IGh0dHBzOi8vYnVnemlsbGEu Z25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODA2NjkKLSsgKiAgICAgIGh0dHBzOi8vYnVnemls bGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODExMjMKKysgKiBSZXR1cm5zOiBhdCBkYnVz IG5hbWUuCiArICovCisrY29uc3QgZ2NoYXIgKiBpYnVzX2J1c19nZXRfc2VydmljZV9uYW1lIChJ QnVzQnVzICAgICAgICAqYnVzKTsKICsKLSsjaW5jbHVkZSA8aWJ1cy5oPgotKyNpbmNsdWRlIDxj YWlyby5oPgotKwotKyNkZWZpbmUgSUJVU19UWVBFX0NBSVJPX0xJTkUgKGlidXNfY2Fpcm9fbGlu ZV9nZXRfdHlwZSAoKSkKLSsjZGVmaW5lIElCVVNfVFlQRV9SRVFVSVNJVElPTl9FWCAoaWJ1c19y ZXF1aXNpdGlvbl9leF9nZXRfdHlwZSAoKSkKLSsjZGVmaW5lIElCVVNfVFlQRV9GT05UU0VUIChp YnVzX2ZvbnRzZXRfZ2V0X3R5cGUgKCkpCi0rI2RlZmluZSBJQlVTX0ZPTlRTRVQob2JqKSAoR19U WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKFwKLSsgICAgICAgIChvYmopLCBcCi0rICAgICAgICBJ QlVTX1RZUEVfRk9OVFNFVCwgXAotKyAgICAgICAgSUJ1c0ZvbnRTZXQpKQotKyNkZWZpbmUgSUJV U19GT05UU0VUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKFwKLSsgICAg ICAgIChrbGFzcyksIFwKLSsgICAgICAgIElCVVNfVFlQRV9GT05UU0VULCBcCi0rICAgICAgICBJ QnVzRm9udFNldENsYXNzKSkKLSsjZGVmaW5lIElCVVNfSVNfRk9OVFNFVChvYmopIChHX1RZUEVf Q0hFQ0tfSU5TVEFOQ0VfVFlQRSAoXAotKyAgICAgICAgKG9iaiksIFwKLSsgICAgICAgIElCVVNf VFlQRV9GT05UU0VUKSkKLSsjZGVmaW5lIElCVVNfSVNfRk9OVFNFVF9DTEFTUyhrbGFzcykgKEdf VFlQRV9DSEVDS19DTEFTU19UWVBFIChcCi0rICAgICAgICAoa2xhc3MpLCBcCi0rICAgICAgICBJ QlVTX1RZUEVfRk9OVFNFVCkpCi0rI2RlZmluZSBJQlVTX0ZPTlRTRVRfR0VUX0NMQVNTKG9iaikg KEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKFwKLSsgICAgICAgIChvYmopLCBcCi0rICAgICAg ICBJQlVTX1RZUEVfRk9OVFNFVCwgXAotKyAgICAgICAgSUJ1c0ZvbnRTZXRDbGFzcykpCi0rCi0r R19CRUdJTl9ERUNMUwotKwotK3R5cGVkZWYgc3RydWN0IF9JQnVzR2x5cGggSUJ1c0dseXBoOwot K3R5cGVkZWYgc3RydWN0IF9JQnVzQ2Fpcm9MaW5lIElCdXNDYWlyb0xpbmU7Ci0rdHlwZWRlZiBz dHJ1Y3QgX0lCdXNSZXF1aXNpdGlvbkV4IElCdXNSZXF1aXNpdGlvbkV4OwotK3R5cGVkZWYgc3Ry dWN0IF9JQnVzRm9udFNldCBJQnVzRm9udFNldDsKLSt0eXBlZGVmIHN0cnVjdCBfSUJ1c0ZvbnRT ZXRQcml2YXRlIElCdXNGb250U2V0UHJpdmF0ZTsKLSt0eXBlZGVmIHN0cnVjdCBfSUJ1c0ZvbnRT ZXRDbGFzcyBJQnVzRm9udFNldENsYXNzOwotKwotK3N0cnVjdCBfSUJ1c0dseXBoIHsKLSsgICAg dW5zaWduZWQgbG9uZyBpbmRleDsKLSsgICAgZG91YmxlICAgICAgICAgICAgICAgeDsKLSsgICAg ZG91YmxlICAgICAgICAgICAgICAgeTsKLSt9OwotKwotK3N0cnVjdCBfSUJ1c0NhaXJvTGluZSB7 Ci0rICAgIElCdXNHbHlwaCAgICAgICAgICAgKmdseXBoczsKLSsgICAgZ3VpbnQgICAgICAgICAg ICAgICAgbnVtX2dseXBoczsKLSsgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCAqc2NhbGVkX2ZvbnQ7 Ci0rICAgIGdwb2ludGVyICAgICAgICAgICAgIHBkdW1teVs1XTsKLSt9OwotKwotK3N0cnVjdCBf SUJ1c1JlcXVpc2l0aW9uRXggewotKyAgICBndWludCAgICAgICAgICAgICAgICB3aWR0aDsKLSsg ICAgZ3VpbnQgICAgICAgICAgICAgICAgaGVpZ2h0OwotKyAgICBJQnVzQ2Fpcm9MaW5lICAgICAg ICpjYWlyb19saW5lczsKLSsgICAgZ3BvaW50ZXIgICAgICAgICAgICAgcGR1bW15WzVdOwotK307 Ci0rCi0rc3RydWN0IF9JQnVzRm9udFNldCB7Ci0rICAgIElCdXNPYmplY3QgICAgICAgICAgIHBh cmVudF9pbnN0YW5jZTsKLSsgICAgSUJ1c0ZvbnRTZXRQcml2YXRlICAqcHJpdjsKLSt9OworKy8q KgorICAqIGlidXNfYnVzX2hlbGxvOgorICAqIEBidXM6IEFuICNJQnVzQnVzLgorICAqCitkaWZm IC0tZ2l0IGEvc3JjL2lidXNpbnB1dGNvbnRleHQuYyBiL3NyYy9pYnVzaW5wdXRjb250ZXh0LmMK K2luZGV4IDlhNTBhY2MwLi5hZTcwNDhhZCAxMDA2NDQKKy0tLSBhL3NyYy9pYnVzaW5wdXRjb250 ZXh0LmMKKysrKyBiL3NyYy9pYnVzaW5wdXRjb250ZXh0LmMKK0BAIC02ODQsMTYgKzY4NCwyMCBA QCBpYnVzX2lucHV0X2NvbnRleHRfbmV3IChjb25zdCBnY2hhciAgICAgKnBhdGgsCisgeworICAg ICBnX2Fzc2VydCAocGF0aCAhPSBOVUxMKTsKKyAgICAgZ19hc3NlcnQgKEdfSVNfREJVU19DT05O RUNUSU9OIChjb25uZWN0aW9uKSk7CisrICAgIGNvbnN0IGdjaGFyICpzZXJ2aWNlX25hbWUgPSBJ QlVTX1NFUlZJQ0VfSUJVUzsKKyAKKyAgICAgR0luaXRhYmxlICppbml0YWJsZTsKKyAKKyAgICAg R0RCdXNQcm94eUZsYWdzIGZsYWdzID0gR19EQlVTX1BST1hZX0ZMQUdTX0RPX05PVF9BVVRPX1NU QVJUOworIAorKyAgICBpZiAoZ19vYmplY3RfZ2V0X2RhdGEgKEdfT0JKRUNUIChjb25uZWN0aW9u KSwgImlidXMtcG9ydGFsLWNvbm5lY3Rpb24iKSkKKysgICAgICAgIHNlcnZpY2VfbmFtZSA9IElC VVNfU0VSVklDRV9QT1JUQUw7CisrCisgICAgIGluaXRhYmxlID0gZ19pbml0YWJsZV9uZXcgKElC VVNfVFlQRV9JTlBVVF9DT05URVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj YW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnLWNvbm5lY3Rpb24iLCAgICAgIGNvbm5lY3Rp b24sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnLW5hbWUiLCAgICAgICAgICAg IElCVVNfU0VSVklDRV9JQlVTLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZy1u YW1lIiwgICAgICAgICAgICBzZXJ2aWNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJnLWZsYWdzIiwgICAgICAgICAgIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiZy1pbnRlcmZhY2UtbmFtZSIsICBJQlVTX0lOVEVSRkFDRV9JTlBVVF9DT05U RVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZy1vYmplY3QtcGF0aCIsICAg ICBwYXRoLAorQEAgLTcxNCwxNiArNzE4LDIwIEBAIGlidXNfaW5wdXRfY29udGV4dF9uZXdfYXN5 bmMgKGNvbnN0IGdjaGFyICAgICAgICAgKnBhdGgsCisgICAgIGdfYXNzZXJ0IChwYXRoICE9IE5V TEwpOworICAgICBnX2Fzc2VydCAoR19JU19EQlVTX0NPTk5FQ1RJT04gKGNvbm5lY3Rpb24pKTsK KyAgICAgZ19hc3NlcnQgKGNhbGxiYWNrICE9IE5VTEwpOworKyAgICBjb25zdCBnY2hhciAqc2Vy dmljZV9uYW1lID0gSUJVU19TRVJWSUNFX0lCVVM7CisgCisgICAgIEdEQnVzUHJveHlGbGFncyBm bGFncyA9IEdfREJVU19QUk9YWV9GTEFHU19ET19OT1RfQVVUT19TVEFSVDsKKyAKKysgICAgaWYg KGdfb2JqZWN0X2dldF9kYXRhIChHX09CSkVDVCAoY29ubmVjdGlvbiksICJpYnVzLXBvcnRhbC1j b25uZWN0aW9uIikpCisrICAgICAgICBzZXJ2aWNlX25hbWUgPSBJQlVTX1NFUlZJQ0VfUE9SVEFM OworKworICAgICBnX2FzeW5jX2luaXRhYmxlX25ld19hc3luYyAoSUJVU19UWVBFX0lOUFVUX0NP TlRFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1BSSU9SSVRZX0RFRkFV TFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxsYWJsZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImctY29ubmVjdGlvbiIsICAgICAgY29ubmVjdGlvbiwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJnLW5hbWUiLCAgICAgICAgICAgIElCVVNfU0VSVklDRV9JQlVTLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImctbmFtZSIsICAgICAgICAgICAgc2Vydmlj ZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImctZmxhZ3MiLCAgICAg ICAgICAgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZy1pbnRlcmZh Y2UtbmFtZSIsICBJQlVTX0lOVEVSRkFDRV9JTlBVVF9DT05URVhULAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImctb2JqZWN0LXBhdGgiLCAgICAgcGF0aCwKKy0tIAorMi4xMy40 CisKK0Zyb20gOTc3MmU4MDBmM2U2OTM3NTEwZjI2MDljNWNlOWE2ODYwYzU5Y2I4MSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBMYXJzc29uIDxhbGV4bEByZWRoYXQu Y29tPgorRGF0ZTogTW9uLCA0IFNlcCAyMDE3IDEyOjAyOjE3ICswOTAwCitTdWJqZWN0OiBbUEFU Q0ggMDUvMTRdIHRlc3Q6IFRlc3RpbmcgaW4gZmxhdHBhaworCitUZXN0IHdpdGg6CitmbGF0cGFr LWJ1aWxkZXIgLS1mb3JjZS1jbGVhbiBhcHAgb3JnLnRlc3QuSUJ1cy5qc29uCitmbGF0cGFrLWJ1 aWxkZXIgLS1ydW4gLS1ub2ZpbGVzeXN0ZW09aG9zdCBhcHAgb3JnLnRlc3QuSUJ1cy5qc29uIHpl bml0eSAtLWVudHJ5CisKK0JVRz1odHRwczovL2dpdGh1Yi5jb20vZmxhdHBhay9mbGF0cGFrL2lz c3Vlcy82NzUKK1I9U2hhd24uUC5IdWFuZ0BnbWFpbC5jb20KKworUmV2aWV3IFVSTDogaHR0cHM6 Ly9jb2RlcmV2aWV3LmFwcHNwb3QuY29tLzMyOTA5MDA0MworCitQYXRjaCBmcm9tIEFsZXhhbmRl ciBMYXJzc29uIDxhbGV4bEByZWRoYXQuY29tPi4KKy0tLQorIHRlc3Qvb3JnLnRlc3QuSUJ1cy5q c29uIHwgNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDEg ZmlsZSBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3Qv b3JnLnRlc3QuSUJ1cy5qc29uCisKK2RpZmYgLS1naXQgYS90ZXN0L29yZy50ZXN0LklCdXMuanNv biBiL3Rlc3Qvb3JnLnRlc3QuSUJ1cy5qc29uCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMDAuLmRjM2NhYTYyCistLS0gL2Rldi9udWxsCisrKysgYi90ZXN0L29yZy50ZXN0LklC dXMuanNvbgorQEAgLTAsMCArMSw0MyBAQAorK3sKKysgICAgImFwcC1pZCI6ICJvcmcudGVzdC5J QnVzIiwKKysgICAgInJ1bnRpbWUiOiAib3JnLmdub21lLlBsYXRmb3JtIiwKKysgICAgInJ1bnRp bWUtdmVyc2lvbiI6ICIzLjI0IiwKKysgICAgInNkayI6ICJvcmcuZ25vbWUuU2RrIiwKKysgICAg ImNvbW1hbmQiOiAiL3Vzci9iaW4vemVuaXR5IiwKKysgICAgImZpbmlzaC1hcmdzIjogWworKyAg ICAgICAgLyogWDExICsgWFNobSBhY2Nlc3MgKi8KKysgICAgICAgICItLXNoYXJlPWlwYyIsICIt LXNvY2tldD14MTEiLAorKyAgICAgICAgLyogV2F5bGFuZCBhY2Nlc3MgKi8KKysgICAgICAgICIt LXNvY2tldD13YXlsYW5kIiwKKysgICAgICAgIC8qIE5lZWRlZCBmb3IgZGNvbmYgdG8gd29yayAq LworKyAgICAgICAgIi0tZmlsZXN5c3RlbT14ZGctcnVuL2Rjb25mIiwgIi0tZmlsZXN5c3RlbT1+ Ly5jb25maWcvZGNvbmY6cm8iLAorKyAgICAgICAgIi0tdGFsay1uYW1lPWNhLmRlc3J0LmRjb25m IiwgIi0tZW52PURDT05GX1VTRVJfQ09ORklHX0RJUj0uY29uZmlnL2Rjb25mIiwKKysgICAgICAg ICItLWVudj1HVEtfSU1fTU9EVUxFX0ZJTEU9L2FwcC9saWIvZ3RrLTMuMC8zLjAuMC9pbW1vZHVs ZXMuY2FjaGUiCisrICAgIF0sCisrICAgICJidWlsZC1vcHRpb25zIiA6IHsKKysgICAgICAgICJj ZmxhZ3MiOiAiLU8yIC1nIiwKKysgICAgICAgICJjeHhmbGFncyI6ICItTzIgLWciLAorKyAgICAg ICAgImVudiI6IHsKKysgICAgICAgICAgICAiViI6ICIxIgorKyAgICAgICAgfQorKyAgICB9LAor KyAgICAiY2xlYW51cCI6IFsiL2luY2x1ZGUiLCAiL2xpYi9wa2djb25maWciLAorKyAgICAgICAg ICAgICAgICAiL3NoYXJlL3BrZ2NvbmZpZyIsICIvc2hhcmUvYWNsb2NhbCIsCisrICAgICAgICAg ICAgICAgICIvbWFuIiwgIi9zaGFyZS9tYW4iLCAiL3NoYXJlL2d0ay1kb2MiLAorKyAgICAgICAg ICAgICAgICAiL3NoYXJlL3ZhbGEiLAorKyAgICAgICAgICAgICAgICAiKi5sYSIsICIqLmEiXSwK KysgICAgIm1vZHVsZXMiOiBbCisrICAgICAgICB7CisrICAgICAgICAgICAgIm5hbWUiOiAiaWJ1 cyIsCisrICAgICAgICAgICAgInNvdXJjZXMiOiBbCisrICAgICAgICAgICAgICAgIHsKKysgICAg ICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCisrICAgICAgICAgICAgICAgICAgICAidXJs IjogImh0dHBzOi8vZ2l0aHViLmNvbS9hbGV4bGFyc3Nvbi9pYnVzIiwKKysgICAgICAgICAgICAg ICAgICAgICJicmFuY2giOiAiaWJ1cy1wb3J0YWwiCisrICAgICAgICAgICAgICAgIH0KKysgICAg ICAgICAgICBdLAorKyAgICAgICAgICAgICJjb25maWctb3B0cyI6IFsiLS1kaXNhYmxlLWVtb2pp LWRpY3QiLCAiLS1kaXNhYmxlLWRjb25mIl0sCisrICAgICAgICAgICAgInBvc3QtaW5zdGFsbCI6 IFsiZ3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjAgL2FwcC9saWIvZ3RrLTMuMC8zLjAuMC9pbW1vZHVs ZXMvaW0taWJ1cy5zbyA+IC9hcHAvbGliL2d0ay0zLjAvMy4wLjAvaW1tb2R1bGVzLmNhY2hlIl0K KysgICAgICAgIH0KKysgICAgXQorK30KKy0tIAorMi4xMy40CisKK0Zyb20gOTkzN2EwZTQ1MDFj Y2YwY2ZkMjM4Y2U3Yzk3NzMzYzMwOTlkYjNmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNCBT ZXAgMjAxNyAxMjoxOTowNyArMDkwMAorU3ViamVjdDogW1BBVENIIDA2LzE0XSBidXM6IGlidXMt ZGFlbW9uIGFjdGl2YXRlcyBpYnVzLXBvcnRhbAorCitXaGVuIGlidXMtZGFlbW9uIHJlc3RhcnRz LCBpYnVzLXBvcnRhbCBleGl0cyB3aXRoIG9uX25hbWVfbG9zdCgpIGFuZAordGhlIGNsaWVudHMg d2FpdCBmb3IgcG9ydGFsX25hbWVfYXBwZWFyZWQoKSB1bnRpbCBpYnVzLXBvcmFsIHJlc3RhcnRz LgorTm93IHRoZSBjbGllbnRzIGNhbiBjb25uZWN0IHRvIGlidXMtZGFlbW9uIHdpdGggdGhpcyB3 YXkgYW5kIGFsc28KK3RoZXkgZG9uJ3QgaGF2ZSB0byBhY3RpdmF0ZSBpYnVzLXBvcnRhbC4KKwor QlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9mbGF0cGFrL2ZsYXRwYWsvaXNzdWVzLzY3NQorUj1TaGF3 bi5QLkh1YW5nQGdtYWlsLmNvbQorCitSZXZpZXcgVVJMOiBodHRwczovL2NvZGVyZXZpZXcuYXBw c3BvdC5jb20vMzIxNTMwMDQzCistLS0KKyBidXMvc2VydmVyLmMgICAgfCA0NSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBwb3J0YWwvcG9ydGFsLmMgfCAg NiArLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25z KC0pCisKK2RpZmYgLS1naXQgYS9idXMvc2VydmVyLmMgYi9idXMvc2VydmVyLmMKK2luZGV4IGZm M2VhMDkzLi5lMjg5ODI3NCAxMDA2NDQKKy0tLSBhL2J1cy9zZXJ2ZXIuYworKysrIGIvYnVzL3Nl cnZlci5jCitAQCAtOTMsNiArOTMsNDUgQEAgYnVzX25ld19jb25uZWN0aW9uX2NiIChHREJ1c1Nl cnZlciAgICAgKnNlcnZlciwKKyAgICAgcmV0dXJuIFRSVUU7CisgfQorIAorK3N0YXRpYyB2b2lk CisrX3NlcnZlcl9jb25uZWN0X3N0YXJ0X3BvcnRhbF9jYiAoR09iamVjdCAgICAgICpzb3VyY2Vf b2JqZWN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAq cmVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgdXNl cl9kYXRhKQorK3sKKysgICAgR1ZhcmlhbnQgKnJlc3VsdDsKKysgICAgR0Vycm9yICplcnJvciA9 IE5VTEw7CiArCi0rc3RydWN0IF9JQnVzRm9udFNldENsYXNzIHsKLSsgICAgSUJ1c09iamVjdENs YXNzIHBhcmVudF9jbGFzczsKLSsgICAgLyogc2lnbmFscyAqLwotKyAgICAvKjwgcHJpdmF0ZSA+ Ki8KLSsgICAgLyogcGFkZGluZyAqLwotKyAgICBncG9pbnRlciAgICAgICAgcGR1bW15WzEwXTsK LSt9OworKyAgICByZXN1bHQgPSBnX2RidXNfY29ubmVjdGlvbl9jYWxsX2ZpbmlzaCAoR19EQlVT X0NPTk5FQ1RJT04gKHNvdXJjZV9vYmplY3QpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmVycm9yKTsKKysgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7CisrICAgICAg ICBnX3ZhcmlhbnRfdW5yZWYgKHJlc3VsdCk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBnX3By aW50ICgicG9ydGFsIGlzIG5vdCBydW5uaW5nOiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOworKyAg ICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7CisrICAgIH0KKyt9CiArCi0rR1R5cGUgICAgICAg ICAgIGlidXNfY2Fpcm9fbGluZV9nZXRfdHlwZSAgICAgICAgKHZvaWQpIEdfR05VQ19DT05TVDsK KytzdGF0aWMgdm9pZAorK2J1c19hY3F1aXJlZF9oYW5kbGVyIChHREJ1c0Nvbm5lY3Rpb24gKmNv bm5lY3Rpb24sCisrICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAqbmFtZSwK KysgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICB1c2VyX2RhdGEpCisrewor KyAgICBnX2RidXNfY29ubmVjdGlvbl9jYWxsIChjb25uZWN0aW9uLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJQlVTX1NFUlZJQ0VfUE9SVEFMLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJQlVTX1BBVEhfSUJVUywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9y Zy5mcmVlZGVza3RvcC5EQnVzLlBlZXIiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAi UGluZyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcgKCIoKSIp LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1ZBUklBTlRfVFlQRSAoIigpIiksCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMIC8qIGNhbmNlbGxhYmxlICovLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo R0FzeW5jUmVhZHlDYWxsYmFjaykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfc2VydmVyX2Nvbm5lY3Rfc3RhcnRfcG9ydGFsX2NiLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOVUxMKTsKKyt9CiArCi0rLyoqCi0rICogaWJ1c19jYWlyb19saW5lX2NvcHk6Ci0r ICogQGNhaXJvX2xpbmVzOiAjSUJ1c0NhaXJvTGluZQotKyAqCi0rICogQ3JlYXRlcyBhIGNvcHkg b2YgQGNhaXJvX2xpZW5zLCB3aGljaCBzaG91bGQgYmUgZnJlZWQgd2l0aAotKyAqIGlidXNfY2Fp cm9fbGluZV9mcmVlKCkuIFByaW1hcmlseSB1c2VkIGJ5IGxhbmd1YWdlIGJpbmRpbmdzLAotKyAq IG5vdCB0aGF0IHVzZWZ1bCBvdGhlcndpc2UgKHNpbmNlIEByZXEgY2FuIGp1c3QgYmUgY29waWVk Ci0rICogYnkgYXNzaWdubWVudCBpbiBDKS4KLSsgKgotKyAqIFJldHVybnM6IHRoZSBuZXdseSBh bGxvY2F0ZWQgI0lCdXNDYWlyb0xpbmUsIHdoaWNoIHNob3VsZAotKyAqICAgICAgICAgIGJlIGZy ZWVkIHdpdGggaWJ1c19jYWlyb19saW5lX2ZyZWUoKSwgb3IgJU5VTEwKLSsgKiAgICAgICAgICBp ZiBAY2Fpcm9fbGluZXMgd2FzICVOVUxMLgotKyAqKi8KLStJQnVzQ2Fpcm9MaW5lICogaWJ1c19j YWlyb19saW5lX2NvcHkgICAgICAgICAgICAoSUJ1c0NhaXJvTGluZSAqY2Fpcm9fbGluZXMpOwor IHZvaWQKKyBidXNfc2VydmVyX2luaXQgKHZvaWQpCisgeworQEAgLTEzNCw4ICsxNzMsMTAgQEAg YnVzX3NlcnZlcl9pbml0ICh2b2lkKQorICAgICBpYnVzX3dyaXRlX2FkZHJlc3MgKGFkZHJlc3Mp OworIAorICAgICAvKiBvd24gYSBzZXNzaW9uIGJ1cyBuYW1lIHNvIHRoYXQgdGhpcmQgcGFydGll cyBjYW4gZWFzaWx5IHRyYWNrIG91ciBsaWZlLWN5Y2xlICovCistICAgIGdfYnVzX293bl9uYW1l IChHX0JVU19UWVBFX1NFU1NJT04sIElCVVNfU0VSVklDRV9JQlVTLCBHX0JVU19OQU1FX09XTkVS X0ZMQUdTX05PTkUsCistICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMKTsKKysgICAgZ19idXNfb3duX25hbWUgKEdfQlVTX1RZUEVfU0VTU0lPTiwgSUJVU19T RVJWSUNFX0lCVVMsCisrICAgICAgICAgICAgICAgICAgICBHX0JVU19OQU1FX09XTkVSX0ZMQUdT X05PTkUsCisrICAgICAgICAgICAgICAgICAgICBidXNfYWNxdWlyZWRfaGFuZGxlciwKKysgICAg ICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOworIH0KKyAKKyBjb25zdCBn Y2hhciAqCitkaWZmIC0tZ2l0IGEvcG9ydGFsL3BvcnRhbC5jIGIvcG9ydGFsL3BvcnRhbC5jCitp bmRleCAwNDE1Zjk5Ni4uY2IyNGQyNTcgMTAwNjQ0CistLS0gYS9wb3J0YWwvcG9ydGFsLmMKKysr KyBiL3BvcnRhbC9wb3J0YWwuYworQEAgLTEwMSwxMCArMTAxLDYgQEAgX2ZvcndhcmRfbWV0aG9k X2NiIChHT2JqZWN0ICpzb3VyY2Vfb2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgZ3BvaW50 ZXIgdXNlcl9kYXRhKQorIHsKKyAgICAgR0RCdXNNZXRob2RJbnZvY2F0aW9uICppbnZvY2F0aW9u ID0gdXNlcl9kYXRhOworLSAgICBJQnVzUG9ydGFsQ29udGV4dCAqcG9ydGFsX2NvbnRleHQgPQor LSAgICAgICAgICAgIChJQnVzUG9ydGFsQ29udGV4dCAqKSBnX2RidXNfbWV0aG9kX2ludm9jYXRp b25fZ2V0X3VzZXJfZGF0YSAoCistICAgICAgICAgICAgICAgICAgICBpbnZvY2F0aW9uKTsKKy0g ICAgSUJ1c0VuZ2luZURlc2MgKmRlc2M7CisgICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworIAor ICAgICBHVmFyaWFudCAqdmFyaWFudCA9IGdfZGJ1c19wcm94eV9jYWxsX2ZpbmlzaCAoKEdEQnVz UHJveHkgKikgc291cmNlX29iamVjdCwKK0BAIC00MTMsNiArNDA5LDcgQEAgaWJ1c19wb3J0YWxf Y29udGV4dF9oYW5kbGVfZGVzdHJveSAoSUJ1c0RidXNTZXJ2aWNlICAgICAgICpvYmplY3QsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1BvcnRhbENvbnRleHQgICAg ICpwb3J0YWxfY29udGV4dCkKKyB7CisgICAgIGdfb2JqZWN0X3VucmVmIChwb3J0YWxfY29udGV4 dCk7CisrICAgIHJldHVybiBGQUxTRTsKKyB9CisgCisgc3RhdGljIElCdXNQb3J0YWxDb250ZXh0 ICoKK0BAIC00NzUsNyArNDcyLDYgQEAgY3JlYXRlX2lucHV0X2NvbnRleHRfZG9uZSAoSUJ1c0J1 cyAgICAgICAgICAgICAgICpidXMsCisgICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworICAgICBJ QnVzSW5wdXRDb250ZXh0ICpjb250ZXh0OworICAgICBJQnVzUG9ydGFsQ29udGV4dCAqcG9ydGFs X2NvbnRleHQ7CistICAgIGNoYXIgKm9iamVjdF9wYXRoOworIAorICAgICBjb250ZXh0ID0gaWJ1 c19idXNfY3JlYXRlX2lucHV0X2NvbnRleHRfYXN5bmNfZmluaXNoIChpYnVzX2J1cywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz LAorLS0gCisyLjEzLjQKKworRnJvbSAzZTAxYmFiOTcyYWQxMmI5MmM1NWE5ZGRlNTU0YTAzNTlj MjE3MjkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogZnVqaXdhcmF0IDx0YWthby5m dWppd2FyYTFAZ21haWwuY29tPgorRGF0ZTogV2VkLCA2IFNlcCAyMDE3IDEyOjA0OjUyICswOTAw CitTdWJqZWN0OiBbUEFUQ0ggMDcvMTRdIHBvcnRhbDogQWRkIG9yZy5mcmVlZGVza3RvcC5JQnVz LlBvcnRhbC54bWwgaW4KKyBFWFRSQV9ESVNUCisKK1JldmlldyBVUkw6IGh0dHBzOi8vY29kZXJl dmlldy5hcHBzcG90LmNvbS8zMjUzNzAwNDMKKy0tLQorIHBvcnRhbC9NYWtlZmlsZS5hbSB8IDE3 ICsrKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgOCBk ZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BvcnRhbC9NYWtlZmlsZS5hbSBiL3BvcnRhbC9N YWtlZmlsZS5hbQoraW5kZXggOTU0ZmM1OTEuLmQxZTIwNTFhIDEwMDY0NAorLS0tIGEvcG9ydGFs L01ha2VmaWxlLmFtCisrKysgYi9wb3J0YWwvTWFrZWZpbGUuYW0KK0BAIC02NSwxMiArNjUsNiBA QCBpYnVzX3BvcnRhbF9MREFERCA9IFwKKyAJJChBTV9MREFERCkgXAorIAkkKE5VTEwpCisgCist RVhUUkFfRElTVCA9IFwKKy0JJChOVUxMKQorLQorLUNMRUFORklMRVMgPSBcCistCSQoTlVMTCkK Ky0KKyAkKGxpYmlidXMpOgorIAkkKE1BS0UpIC1DICQodG9wX2J1aWxkZGlyKS9zcmMKKyAKK0BA IC04OSw3ICs4MywxNCBAQCAkKGlidXNfZGJ1c19idWlsdF9zb3VyY2VzKSA6IG9yZy5mcmVlZGVz a3RvcC5JQnVzLlBvcnRhbC54bWwKKyAJCSReIFwKKyAJCSQoTlVMTCkKKyAKKy1FWFRSQV9ESVNU ICs9ICQoZGJ1c3NlcnZpY2VfaW5fZmlsZXMpCistQ0xFQU5GSUxFUyArPSAkKGRidXNzZXJ2aWNl X0RBVEEpCisrRVhUUkFfRElTVCA9IFwKKysgICAgJChkYnVzc2VydmljZV9pbl9maWxlcykgXAor KyAgICBvcmcuZnJlZWRlc2t0b3AuSUJ1cy5Qb3J0YWwueG1sIFwKKysgICAgJChOVUxMKQorKwor K0NMRUFORklMRVMgPSBcCisrICAgICQoZGJ1c3NlcnZpY2VfREFUQSkgXAorKyAgICAkKE5VTEwp CisrCisgCisgLWluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9naXQubWsKKy0tIAorMi4xMy40CisKK0Zy b20gMjFiYWM0NzMzNjg0Y2E2YTc0ZGRiMDJmNDU3YzBmZTE5ZWI5MTgwZCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKK0Zyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4K K0RhdGU6IFdlZCwgNiBTZXAgMjAxNyAxMjoxMTowMSArMDkwMAorU3ViamVjdDogW1BBVENIIDA4 LzE0XSB1aS9ndGszOiBNb3ZlIGlidXMtZW1vamktZGlhbG9nLnZhcGkgZnJvbSB1aS9ndGszIHRv CisgYmluZGluZ3MvdmFsYQorCitSPVNoYXduLlAuSHVhbmdAZ21haWwuY29tCisKK1JldmlldyBV Ukw6IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8zMjI1OTAwNDMKKy0tLQorIC4uLi92 YWxhfS9JQnVzRW1vamlEaWFsb2ctMS4wLm1ldGFkYXRhICAgICAgICAgICAgIHwgICAwCisgYmlu ZGluZ3MvdmFsYS9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNjEgKysr KysrKysrKysrKysrKysrKy0tCisgLi4uL3ZhbGF9L2lidXMtZW1vamktZGlhbG9nLTEuMC5kZXBz ICAgICAgICAgICAgICAgfCAgIDAKKyBwby9QT1RGSUxFUy5za2lwICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNSArCisgdWkvZ3RrMy9NYWtlZmlsZS5hbSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAxMTMgKysrKy0tLS0tLS0tLS0tCisgdWkvZ3RrMy9lbW9q aWVyLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTkgKy0tCisgdWkvZ3Rr My9pYnVzZW1vamlkaWFsb2cuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjYgKysrKwor IDcgZmlsZXMgY2hhbmdlZCwgMjEzIGluc2VydGlvbnMoKyksIDExMSBkZWxldGlvbnMoLSkKKyBy ZW5hbWUge3VpL2d0azMgPT4gYmluZGluZ3MvdmFsYX0vSUJ1c0Vtb2ppRGlhbG9nLTEuMC5tZXRh ZGF0YSAoMTAwJSkKKyByZW5hbWUge3VpL2d0azMgPT4gYmluZGluZ3MvdmFsYX0vaWJ1cy1lbW9q aS1kaWFsb2ctMS4wLmRlcHMgKDEwMCUpCisKK2RpZmYgLS1naXQgYS91aS9ndGszL0lCdXNFbW9q aURpYWxvZy0xLjAubWV0YWRhdGEgYi9iaW5kaW5ncy92YWxhL0lCdXNFbW9qaURpYWxvZy0xLjAu bWV0YWRhdGEKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gdWkvZ3RrMy9JQnVz RW1vamlEaWFsb2ctMS4wLm1ldGFkYXRhCityZW5hbWUgdG8gYmluZGluZ3MvdmFsYS9JQnVzRW1v amlEaWFsb2ctMS4wLm1ldGFkYXRhCitkaWZmIC0tZ2l0IGEvYmluZGluZ3MvdmFsYS9NYWtlZmls ZS5hbSBiL2JpbmRpbmdzL3ZhbGEvTWFrZWZpbGUuYW0KK2luZGV4IDRlMzRhZmM3Li5mYzhlMmYw MSAxMDA2NDQKKy0tLSBhL2JpbmRpbmdzL3ZhbGEvTWFrZWZpbGUuYW0KKysrKyBiL2JpbmRpbmdz L3ZhbGEvTWFrZWZpbGUuYW0KK0BAIC0zLDcgKzMsOCBAQAorICMgaWJ1cyAtIFRoZSBJbnB1dCBC dXMKKyAjCisgIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNiBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1 YW5nQGdtYWlsLmNvbT4KKy0jIENvcHlyaWdodCAoYykgMjAwNy0yMDE2IFJlZCBIYXQsIEluYy4K KysjIENvcHlyaWdodCAoYykgMjAxNyBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdt YWlsLmNvbT4KKysjIENvcHlyaWdodCAoYykgMjAwNy0yMDE3IFJlZCBIYXQsIEluYy4KKyAjCisg IyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yCisgIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCitAQCAtMjIsMTUgKzIzLDQ3IEBACisgCisgLWluY2x1ZGUgJChWQVBJR0VO X01BS0VGSUxFKQorIAorK2xpYmlidXMgPSAkKHRvcF9idWlsZGRpcikvc3JjL2xpYmlidXMtQElC VVNfQVBJX1ZFUlNJT05ALmxhCisrCisrbm9pbnN0X0xUTElCUkFSSUVTID0KKytub2luc3RfREFU QSA9CisrSU5UUk9TUEVDVElPTl9HSVJTID0KKytnaXJkaXIgPSAkKGRhdGFkaXIpL2dpci0xLjAK KysKKytBTV9DUFBGTEFHUyA9IFwKKysgICAgLUkkKHRvcF9zcmNkaXIpL3NyYyBcCisrICAgIC1J JCh0b3BfYnVpbGRkaXIpL3NyYyBcCisrICAgIC1pbmNsdWRlICQoQ09ORklHX0hFQURFUikgXAor KyAgICAkKE5VTEwpCisrQU1fQ0ZMQUdTID0gXAorKyAgICAtREdfTE9HX0RPTUFJTj1cIklCVVNc IiBcCisrICAgIC1EUEtHREFUQURJUj1cIiQocGtnZGF0YWRpcilcIiBcCisrICAgIC1ESUJVU19E SVNBQkxFX0RFUFJFQ0FURUQgXAorKyAgICAtV25vLXVudXNlZC12YXJpYWJsZSBcCisrICAgIC1X bm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUgXAorKyAgICAtV25vLXVudXNlZC1mdW5jdGlvbiBc CisrICAgICQoTlVMTCkKKytBTV9WQUxBRkxBR1MgPSBcCisrICAgIC0tdmFwaWRpcj0kKGJ1aWxk ZGlyKSBcCisrICAgIC0tdmFwaWRpcj0kKHNyY2RpcikgXAorKyAgICAtLXBrZz1wb3NpeCBcCisr ICAgIC0tcGtnPWd0aystMy4wIFwKKysgICAgLS1wa2c9Z2RrLXgxMS0zLjAgXAorKyAgICAtLXBr Zz1pYnVzLTEuMCBcCisrICAgIC0tcGtnPWNvbmZpZyBcCisrICAgIC0tcGtnPXhpIFwKKysgICAg LS10YXJnZXQtZ2xpYj0iJChWQUxBX1RBUkdFVF9HTElCX1ZFUlNJT04pIiBcCisrICAgICQoTlVM TCkKKysKKyB2YXBpX2RlcHMgPSBcCisgCUlCdXMtMS4wLm1ldGFkYXRhIFwKKy0JSUJ1cy0xLjAt Y3VzdG9tLnZhbGEgXAorIAkkKHRvcF9idWlsZGRpcikvc3JjL0lCdXMtMS4wLmdpciBcCisgCSQo TlVMTCkKKyAKKyBpYnVzLTEuMC52YXBpOiAkKHZhcGlfZGVwcykKKyAKKy1WQVBJR0VOX1ZBUElT ID0gaWJ1cy0xLjAudmFwaQorK2lidXNfdmFwaSA9IGlidXMtMS4wLnZhcGkKKytWQVBJR0VOX1ZB UElTID0gJChpYnVzX3ZhcGkpCisgCisgaWJ1c18xXzBfdmFwaV9ERVBTID0gZ2lvLTIuMAorIGli dXNfMV8wX3ZhcGlfTUVUQURBVEFESVJTID0gJChzcmNkaXIpCitAQCAtNDAsMTggKzczLDExOCBA QCBpYnVzXzFfMF92YXBpX0ZJTEVTID0gXAorIAkkKE5VTEwpCisgCisgdmFwaWRpciA9ICQoZGF0 YWRpcikvdmFsYS92YXBpCistdmFwaV9EQVRBID0gJChWQVBJR0VOX1ZBUElTKSAkKFZBUElHRU5f VkFQSVM6LnZhcGk9LmRlcHMpCisrdmFwaV9EQVRBID0gJChpYnVzX3ZhcGkpICQoaWJ1c192YXBp Oi52YXBpPS5kZXBzKQorIAorLU1BSU5UQUlORVJDTEVBTkZJTEVTID0gJChWQVBJR0VOX1ZBUElT KQorLURJU1RDTEVBTkZJTEVTID0gJChWQVBJR0VOX1ZBUElTKQorK01BSU5UQUlORVJDTEVBTkZJ TEVTID0gJChpYnVzX3ZhcGkpCisrRElTVENMRUFORklMRVMgPSAkKGlidXNfdmFwaSkKKyAKKy1F WFRSQV9ESVNUID0gXAorLQkkKFZBUElHRU5fVkFQSVMpIFwKKy0JSUJ1cy0xLjAubWV0YWRhdGEg XAorLQlJQnVzLTEuMC1jdXN0b20udmFsYSBcCistCWlidXMtMS4wLmRlcHMgXAorLQljb25maWcu dmFwaSBcCistCXhpLnZhcGkgXAorLQkkKE5VTEwpCisrRVhUUkFfRElTVCA9ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAkKGlidXNfdmFwaSkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKysgICAgSUJ1cy0xLjAubWV0YWRhdGEgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisrICAgIElCdXMtMS4wLWN1c3RvbS52YWxhICAgICAgICAgICAgICAg ICAgICAgICAgXAorKyAgICBJQnVzRW1vamlEaWFsb2ctMS4wLm1ldGFkYXRhICAgICAgICAgICAg ICAgIFwKKysgICAgaWJ1cy0xLjAuZGVwcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisrICAgIGlidXMtZW1vamktZGlhbG9nLTEuMC5kZXBzICAgICAgICAgICAgICAgICAgXAorKyAg ICBjb25maWcudmFwaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgeGku dmFwaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICQoTlVMTCkK KysKKytpZiBFTkFCTEVfRU1PSklfRElDVAorK0FNX1ZBTEFGTEFHUyArPSAtLWRlZmluZT1FTU9K SV9ESUNUCisrCisrbGliaWJ1c19lbW9qaV9kaWFsb2cgPSBsaWJpYnVzLWVtb2ppLWRpYWxvZy0x LjAubGEKKytub2luc3RfTFRMSUJSQVJJRVMgKz0gJChsaWJpYnVzX2Vtb2ppX2RpYWxvZykKKysK KytsaWJpYnVzX2Vtb2ppX2RpYWxvZ18xXzBfbGFfU09VUkNFUyA9ICAgICAgICAgICBcCisrICAg IGNhbmRpZGF0ZWFyZWEudmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBlbW9q aWVyLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgaWNvbndpZGdl dC52YWxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHBhbmdvLnZhbGEgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBzZXBhcmF0b3IudmFsYSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgJChOVUxMKQorK2xpYmlidXNfZW1vamlf ZGlhbG9nXzFfMF9sYV9DRkxBR1MgPSAgICAgICAgICAgIFwKKysgICAgJChBTV9DRkxBR1MpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIEBHTElCMl9DRkxBR1NAICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBAR0lPMl9DRkxBR1NAICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKysgICAgQEdUSFJFQUQyX0NGTEFHU0AgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisrICAgIEBHVEszX0NGTEFHU0AgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorKyAgICBAWDExX0NGTEFHU0AgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKysgICAgLURCSU5ESVI9XCIkKGJpbmRpcilcIiAgICAgICAgICAgICAgICAgICAgICBc CisrICAgICQoTlVMTCkKKytsaWJpYnVzX2Vtb2ppX2RpYWxvZ18xXzBfbGFfTElCQUREID0gICAg ICAgICAgICBcCisrICAgIEBHTElCMl9MSUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorKyAgICBAR0lPMl9MSUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgQEdUSFJFQUQyX0xJQlNAICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg IEBHVEszX0xJQlNAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBAWDEx X0xJQlNAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgLWxYaSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICQobGliaWJ1cykgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAkKE5VTEwpCisrbGliaWJ1c19l bW9qaV9kaWFsb2dfMV8wX2xhX0xERkxBR1MgPSAgICAgICAgICAgXAorKyAgICAtbm8tdW5kZWZp bmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgLWV4cG9ydC1zeW1ib2xz LXJlZ2V4ICJpYnVzXy4qIiAgICAgICAgICAgICBcCisrICAgICQoTlVMTCkKKysKKysjIHBlciBm aWxlIHNldHRpbmcgaXMgbmVlZGVkIHRvIGF2b2lkIGNvbmZsaWN0aW5nIExOX1MgYnkgY2FsbGlu ZworKyMgZHVwbGljYXRlZCB0aW1lcyBpbiBwYXJhbGxlbCBtYWtlCisrJS52YWxhOiAkKGlidXNf dmFwaSkKKysJaWYgdGVzdCAhIC1mICRAIDsgdGhlbiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisrCSAgICAkKExOX1MpICQodG9wX3NyY2RpcikvdWkvZ3Rr My8kQCAuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKwlmaTsKKysKKytNQUlOVEFJ TkVSQ0xFQU5GSUxFUyArPSAkKGxpYmlidXNfZW1vamlfZGlhbG9nXzFfMF9sYV9TT1VSQ0VTKQor K0RJU1RDTEVBTkZJTEVTICs9ICQobGliaWJ1c19lbW9qaV9kaWFsb2dfMV8wX2xhX1NPVVJDRVMp CisrCisraWYgSEFWRV9JTlRST1NQRUNUSU9OCisrLWluY2x1ZGUgJChJTlRST1NQRUNUSU9OX01B S0VGSUxFKQorK0lOVFJPU1BFQ1RJT05fU0NBTk5FUl9BUkdTID0KKytJTlRST1NQRUNUSU9OX0NP TVBJTEVSX0FSR1MgPSAgICAgICAgICAgICAgICAgICBcCisrICAgIC0taW5jbHVkZWRpcj0kKHNy Y2RpcikgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAtLWluY2x1ZGVkaXI9LiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgLS1pbmNsdWRlZGlyPSQodG9wX3NyY2Rpcikv c3JjICAgICAgICAgICAgICBcCisrICAgICQoTlVMTCkKKysKKysKKytlbW9qaV9oZWFkZXJzID0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICQodG9wX3NyY2RpcikvdWkv Z3RrMy9pYnVzZW1vamlkaWFsb2cuaCAgICAgXAorKyAgICAkKE5VTEwpCisrCisrSUJ1c0Vtb2pp RGlhbG9nLTEuMC5naXI6ICQobGliaWJ1c19lbW9qaV9kaWFsb2cpIE1ha2VmaWxlCisrSUJ1c0Vt b2ppRGlhbG9nXzFfMF9naXJfU0NBTk5FUkZMQUdTID0gICAgICAgICAgXAorKyAgICAtLXBrZy1l eHBvcnQ9aWJ1cy0xLjAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgLS1wa2c9Z3RrKy0z LjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICQoSUJVU19HSVJfU0NBTk5F UkZMQUdTKSAgICAgICAgICAgICAgICAgICAgXAorKyAgICAkKE5VTEwpCisrSUJ1c0Vtb2ppRGlh bG9nXzFfMF9naXJfSU5DTFVERVMgPSBHdGstMy4wIEdMaWItMi4wIEdPYmplY3QtMi4wIEdpby0y LjAKKytJQnVzRW1vamlEaWFsb2dfMV8wX2dpcl9MSUJTID0gJChsaWJpYnVzX2Vtb2ppX2RpYWxv ZykgJChsaWJpYnVzKQorK0lCdXNFbW9qaURpYWxvZ18xXzBfZ2lyX0ZJTEVTID0gJChlbW9qaV9o ZWFkZXJzKQorK0lCdXNFbW9qaURpYWxvZ18xXzBfZ2lyX0NGTEFHUyA9ICAgICAgICAgICAgICAg IFwKKysgICAgLUkkKHNyY2RpcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr ICAgIC1JJChidWlsZGRpcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAt SSQodG9wX3NyY2Rpcikvc3JjICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgJChOVUxM KQorKworK2lidXNfZW1vamlfZGlhbG9nX2dpciA9IElCdXNFbW9qaURpYWxvZy0xLjAuZ2lyCisr SU5UUk9TUEVDVElPTl9HSVJTICs9ICQoaWJ1c19lbW9qaV9kaWFsb2dfZ2lyKQorK25vaW5zdF9E QVRBICs9ICQoaWJ1c19lbW9qaV9kaWFsb2dfZ2lyKQorK0VYVFJBX0RJU1QgKz0gJChpYnVzX2Vt b2ppX2RpYWxvZ19naXIpCisrTUFJTlRBSU5FUkNMRUFORklMRVMgKz0gJChpYnVzX2Vtb2ppX2Rp YWxvZ19naXIpCisrRElTVENMRUFORklMRVMgKz0gJChpYnVzX2Vtb2ppX2RpYWxvZ19naXIpCisr CisraWJ1cy1lbW9qaS1kaWFsb2ctMS4wLnZhcGk6ICQoaWJ1c19lbW9qaV9kaWFsb2dfZ2lyKSBJ QnVzRW1vamlEaWFsb2ctMS4wLm1ldGFkYXRhCisraWJ1c19lbW9qaV9kaWFsb2dfdmFwaSA9IGli dXMtZW1vamktZGlhbG9nLTEuMC52YXBpCisraWJ1c19lbW9qaV9kaWFsb2dfMV8wX3ZhcGlfREVQ UyA9IGd0aystMy4wIGdpby0yLjAKKytpYnVzX2Vtb2ppX2RpYWxvZ18xXzBfdmFwaV9NRVRBREFU QURJUlMgPSAkKHNyY2RpcikKKytpYnVzX2Vtb2ppX2RpYWxvZ18xXzBfdmFwaV9GSUxFUyA9IElC dXNFbW9qaURpYWxvZy0xLjAuZ2lyCisrVkFQSUdFTl9WQVBJUyArPSAkKGlidXNfZW1vamlfZGlh bG9nX3ZhcGkpCisrbm9pbnN0X0RBVEEgKz0gJChpYnVzX2Vtb2ppX2RpYWxvZ192YXBpKQorK0VY VFJBX0RJU1QgKz0gJChpYnVzX2Vtb2ppX2RpYWxvZ192YXBpKQorK01BSU5UQUlORVJDTEVBTkZJ TEVTICs9ICQoaWJ1c19lbW9qaV9kaWFsb2dfdmFwaSkKKytESVNUQ0xFQU5GSUxFUyArPSAkKGli dXNfZW1vamlfZGlhbG9nX3ZhcGkpCisrCisrZW5kaWYKKysjZW5kIG9mIEhBVkVfSU5UUk9TUEVD VElPTgorK2VuZGlmCisrIyBlbmQgb2YgRU5BQkxFX0VNT0pJX0RJQ1QKKyAKKyAtaW5jbHVkZSAk KHRvcF9zcmNkaXIpL2dpdC5taworZGlmZiAtLWdpdCBhL3VpL2d0azMvaWJ1cy1lbW9qaS1kaWFs b2ctMS4wLmRlcHMgYi9iaW5kaW5ncy92YWxhL2lidXMtZW1vamktZGlhbG9nLTEuMC5kZXBzCitz aW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHVpL2d0azMvaWJ1cy1lbW9qaS1kaWFs b2ctMS4wLmRlcHMKK3JlbmFtZSB0byBiaW5kaW5ncy92YWxhL2lidXMtZW1vamktZGlhbG9nLTEu MC5kZXBzCitkaWZmIC0tZ2l0IGEvcG8vUE9URklMRVMuc2tpcCBiL3BvL1BPVEZJTEVTLnNraXAK K2luZGV4IDcxOTAyMjFkLi4xMGI4ODI5OCAxMDA2NDQKKy0tLSBhL3BvL1BPVEZJTEVTLnNraXAK KysrKyBiL3BvL1BPVEZJTEVTLnNraXAKK0BAIC0yLDYgKzIsMTEgQEAKKyAjIFBsZWFzZSBrZWVw IHRoaXMgZmlsZSBpbiBhbHBoYWJldGljYWwgb3JkZXIuCisgIyBGaWxlcyB1bmRlciB1aS9ndGsy LyBhcmUgbm90IHNoaXBwZWQgaW4gdGhlIGRpc3RyaWJ1dGlvbiwgYnV0IGtlcHQKKyAjIGluIHRo ZSBnaXQgcmVwb3NpdG9yeSBmb3IgcmVmZXJlbmNlLgorK2JpbmRpbmdzL3ZhbGEvY2FuZGlkYXRl YXJlYS5jCisrYmluZGluZ3MvdmFsYS9lbW9qaWVyLmMKKytiaW5kaW5ncy92YWxhL2ljb253aWRn ZXQuYworK2JpbmRpbmdzL3ZhbGEvcGFuZ28uYworK2JpbmRpbmdzL3ZhbGEvc2VwYXJhdG9yLmMK KyBpYnVzL19jb25maWcucHkKKyB0b29scy9tYWluLmMKKyB1aS9ndGsyL2NhbmRpZGF0ZXBhbmVs LnB5CitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9NYWtlZmlsZS5hbSBiL3VpL2d0azMvTWFrZWZpbGUu YW0KK2luZGV4IGM3OTY0MWE1Li43ODZiODBlNiAxMDA2NDQKKy0tLSBhL3VpL2d0azMvTWFrZWZp bGUuYW0KKysrKyBiL3VpL2d0azMvTWFrZWZpbGUuYW0KK0BAIC04MSwxMCArODEsNiBAQCBBTV9W QUxBRkxBR1MgPSBcCisgCS0tdGFyZ2V0LWdsaWI9IiQoVkFMQV9UQVJHRVRfR0xJQl9WRVJTSU9O KSIgXAorIAkkKE5VTEwpCisgCistTUFJTlRBSU5FUkNMRUFORklMRVMgPQorLURJU1RDTEVBTkZJ TEVTID0KKy1ub2luc3RfREFUQSA9CistCisgaWYgRU5BQkxFX0xJQk5PVElGWQorIEFNX0NGTEFH UyArPSBcCisgCUBMSUJOT1RJRllfQ0ZMQUdTQCBcCitAQCAtMTU4LDkgKzE1NCw4IEBAIG1hbl9z ZXZlbl9pbl9maWxlcyA9IGlidXMtZW1vamkuNy5pbgorIEVYVFJBX0RJU1QgPSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICQoZW1vamlfaGVhZGVycykgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgJChtYW5fc2V2ZW5faW5fZmlsZXMpICAgICAgICAgICAgICAgXAorLSAgICBJ QnVzRW1vamlEaWFsb2ctMS4wLm1ldGFkYXRhICAgICAgICBcCisrICAgIGVtb2ppZXJhcHAudmFs YSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgZ3RrcGFuZWwueG1sLmluICAgICAgICAgICAg ICAgICAgICAgXAorLSAgICBpYnVzLWVtb2ppLWRpYWxvZy0xLjAuZGVwcyAgICAgICAgICBcCisg ICAgIG5vdGlmaWNhdGlvbi1pdGVtLnhtbCAgICAgICAgICAgICAgIFwKKyAgICAgbm90aWZpY2F0 aW9uLXdhdGNoZXIueG1sICAgICAgICAgICAgXAorICAgICAkKE5VTEwpCitAQCAtMTY4LDk4ICsx NjMsNDAgQEAgRVhUUkFfRElTVCA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyBpZiBF TkFCTEVfRU1PSklfRElDVAorIEFNX1ZBTEFGTEFHUyArPSAtLWRlZmluZT1FTU9KSV9ESUNUCisg CistbGliaWJ1c19lbW9qaV9kaWFsb2cgPSBsaWJpYnVzLWVtb2ppLWRpYWxvZy0xLjAubGEKKy0K Ky1ub2luc3RfTFRMSUJSQVJJRVMgPSAkKGxpYmlidXNfZW1vamlfZGlhbG9nKQorLQorLWxpYmli dXNfZW1vamlfZGlhbG9nXzFfMF9sYV9DRkxBR1MgPSAkKEFNX0NGTEFHUykKKy1saWJpYnVzX2Vt b2ppX2RpYWxvZ18xXzBfbGFfTERGTEFHUyA9ICAgXAorLSAgICAtbm8tdW5kZWZpbmVkICAgICAg ICAgICAgICAgICAgICAgICBcCistICAgIC1leHBvcnQtc3ltYm9scy1yZWdleCAiaWJ1c18uKiIg ICAgIFwKKy0gICAgLXZlcnNpb24taW5mbyBATFRfVkVSU0lPTl9JTkZPQCAgICAgXAorLSAgICAk KE5VTEwpCistbGliaWJ1c19lbW9qaV9kaWFsb2dfMV8wX2xhX1NPVVJDRVMgPSAgIFwKKy0gICAg Y2FuZGlkYXRlYXJlYS52YWxhICAgICAgICAgICAgICAgICAgXAorLSAgICBlbW9qaWVyLnZhbGEg ICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGljb253aWRnZXQudmFsYSAgICAgICAgICAg ICAgICAgICAgIFwKKy0gICAgcGFuZ28udmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgXAor LSAgICBzZXBhcmF0b3IudmFsYSAgICAgICAgICAgICAgICAgICAgICBcCistICAgICQoTlVMTCkK Ky0KKyBsaWJleGVjX1BST0dSQU1TICs9IGlidXMtdWktZW1vamllcgorIAorLWlidXNfdWlfZW1v amllcl9TT1VSQ0VTID0gICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgJChsaWJpYnVzX2Vt b2ppX2RpYWxvZ18xXzBfbGFfU09VUkNFUykgICAgICBcCisraWJ1c191aV9lbW9qaWVyX1ZBTEFT T1VSQ0VTID0gICAgICAgICAgICAgICAgICAgXAorICAgICBlbW9qaWVyYXBwLnZhbGEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgY2FuZGlkYXRlYXJlYS52YWxhICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisrICAgIGVtb2ppZXIudmFsYSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorKyAgICBpY29ud2lkZ2V0LnZhbGEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgcGFuZ28udmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisrICAgIHNlcGFyYXRvci52YWxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor KyAgICAkKE5VTEwpCisraWJ1c191aV9lbW9qaWVyX1NPVVJDRVMgPSAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAkKGlidXNfdWlfZW1vamllcl9WQUxBU09VUkNFUzoudmFsYT0uYykgICAg IFwKKyAgICAgJChOVUxMKQorIAorIGlidXNfdWlfZW1vamllcl9MREFERCA9ICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgJChBTV9MREFERCkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisgICAgICQoTlVMTCkKKyAKKy0taW5jbHVkZSAkKElOVFJPU1BFQ1RJT05fTUFL RUZJTEUpCistSU5UUk9TUEVDVElPTl9TQ0FOTkVSX0FSR1MgPQorLUlOVFJPU1BFQ1RJT05fQ09N UElMRVJfQVJHUyA9ICAgICAgXAorLSAgICAtLWluY2x1ZGVkaXI9JChzcmNkaXIpICAgICAgICAg XAorLSAgICAtLWluY2x1ZGVkaXI9LiAgICAgICAgICAgICAgICAgXAorLSAgICAtLWluY2x1ZGVk aXI9JCh0b3Bfc3JjZGlyKS9zcmMgXAorLSAgICAkKE5VTEwpCistCistaWYgSEFWRV9JTlRST1NQ RUNUSU9OCistaW50cm9zcGVjdGlvbl9zb3VyY2VzID0gICAgICAgICAgICAgICAgXAorLSAgICAk KGVtb2ppX2hlYWRlcnMpICAgICAgICAgICAgICAgICAgIFwKKy0gICAgJChOVUxMKQorLUlCdXNF bW9qaURpYWxvZy0xLjAuZ2lyOiAkKGxpYmlidXNfZW1vamlfZGlhbG9nKSBNYWtlZmlsZQorLUlC dXNFbW9qaURpYWxvZ18xXzBfZ2lyX1NDQU5ORVJGTEFHUyA9IFwKKy0gICAgLS1wa2ctZXhwb3J0 PWlidXMtMS4wICAgICAgICAgICAgICBcCistICAgIC0tcGtnPWd0aystMy4wICAgICAgICAgICAg ICAgICAgICAgXAorLSAgICAkKElCVVNfR0lSX1NDQU5ORVJGTEFHUykgICAgICAgICAgIFwKKytp YnVzX3VpX2Vtb2ppZXJfVkFMQUZMQUdTID0gICAgICAgICAgICAgICAgICAgICBcCisrICAgICQo QU1fVkFMQUZMQUdTKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAkKE5VTEwp CistSUJ1c0Vtb2ppRGlhbG9nLTEuMC5naXI6ICQobGliaWJ1c19lbW9qaV9kaWFsb2cpIE1ha2Vm aWxlCistSUJ1c0Vtb2ppRGlhbG9nXzFfMF9naXJfSU5DTFVERVMgPSBHdGstMy4wIEdMaWItMi4w IEdPYmplY3QtMi4wIEdpby0yLjAKKy1JQnVzRW1vamlEaWFsb2dfMV8wX2dpcl9MSUJTID0gJChs aWJpYnVzX2Vtb2ppX2RpYWxvZykgJChsaWJpYnVzKQorLUlCdXNFbW9qaURpYWxvZ18xXzBfZ2ly X0ZJTEVTID0gICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAkKGFkZHByZWZpeCAkKHNyY2Rp cikvLCQoaW50cm9zcGVjdGlvbl9zb3VyY2VzKSkgXAorLSAgICAkKE5VTEwpCistSUJ1c0Vtb2pp RGlhbG9nXzFfMF9naXJfQ0ZMQUdTID0gICAgICAgXAorLSAgICAtRElCVVNfQ09NUElMQVRJT04g ICAgICAgICAgICAgICAgIFwKKy0gICAgLUkkKHNyY2RpcikgICAgICAgICAgICAgICAgICAgICAg ICBcCistICAgIC1JJChidWlsZGRpcikgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAtSSQo dG9wX3NyY2Rpcikvc3JjICAgICAgICAgICAgICAgIFwKKy0gICAgJChOVUxMKQorLUlOVFJPU1BF Q1RJT05fR0lSUyA9IElCdXNFbW9qaURpYWxvZy0xLjAuZ2lyCistCistZ2lyZGlyID0gJChkYXRh ZGlyKS9naXItMS4wCistbm9pbnN0X0RBVEEgKz0gJChJTlRST1NQRUNUSU9OX0dJUlMpCistQ0xF QU5GSUxFUyArPSAkKElOVFJPU1BFQ1RJT05fR0lSUykKKyAKKy10eXBlbGlic2RpciA9ICQobGli ZGlyKS9naXJlcG9zaXRvcnktMS4wCistbm9pbnN0X0RBVEEgKz0gJChJTlRST1NQRUNUSU9OX0dJ UlM6Lmdpcj0udHlwZWxpYikKKy1DTEVBTkZJTEVTICs9ICQoSU5UUk9TUEVDVElPTl9HSVJTOi5n aXI9LnR5cGVsaWIpCistCistCistaWYgRU5BQkxFX1ZBUElHRU4KKy0taW5jbHVkZSAkKFZBUElH RU5fTUFLRUZJTEUpCistCistaWJ1cy1lbW9qaS1kaWFsb2ctMS4wLnZhcGk6ICQoSU5UUk9TUEVD VElPTl9HSVJTKSBJQnVzRW1vamlEaWFsb2ctMS4wLm1ldGFkYXRhCistCistVkFQSUdFTl9WQVBJ UyA9IGlidXMtZW1vamktZGlhbG9nLTEuMC52YXBpCistCistaWJ1c19lbW9qaV9kaWFsb2dfMV8w X3ZhcGlfREVQUyA9IGd0aystMy4wIGdpby0yLjAKKy1pYnVzX2Vtb2ppX2RpYWxvZ18xXzBfdmFw aV9NRVRBREFUQURJUlMgPSAkKHNyY2RpcikKKy1pYnVzX2Vtb2ppX2RpYWxvZ18xXzBfdmFwaV9G SUxFUyA9ICQoSU5UUk9TUEVDVElPTl9HSVJTKQorLQorLXZhcGlkaXIgPSAkKGRhdGFkaXIpL3Zh bGEvdmFwaQorLW5vaW5zdF9EQVRBICs9ICQoVkFQSUdFTl9WQVBJUykgJChWQVBJR0VOX1ZBUElT Oi52YXBpPS5kZXBzKQorLQorLU1BSU5UQUlORVJDTEVBTkZJTEVTICs9ICQoVkFQSUdFTl9WQVBJ UykKKy1ESVNUQ0xFQU5GSUxFUyArPSAkKFZBUElHRU5fVkFQSVMpCistRVhUUkFfRElTVCArPSAk KFZBUElHRU5fVkFQSVMpCistCistIyBlbmQgb2YgRU5BQkxFX1ZBUElHRU4KKy1lbmRpZgorLSMg ZW5kIG9mIEhBVkVfSU5UUk9TUEVDVElPTgorLWVuZGlmCisrIyBUaGlzIGxpbmUgYW5kIGZvb19W QUxBU09VUkNFUyBsaW5lIGNhbiBkZWxldGUgdGhlIGR1cGxpY2F0ZWQgZW50cmllcworKyMgb2Yg ZW1vamllci5jOiBlbW9qaWVyLnZhbGEKKytlbW9qaWVyYXBwLmM6ICQoaWJ1c191aV9lbW9qaWVy X1ZBTEFTT1VSQ0VTKQorKwkkKEFNX1ZfVkFMQUMpJChhbV9fY2QpICQoc3JjZGlyKSAmJiAkKFZB TEFDKSAkKEFNX1ZBTEFGTEFHUykgXAorKyQoVkFMQUZMQUdTKSAtQyAkKGlidXNfdWlfZW1vamll cl9WQUxBU09VUkNFUykKKysJJChOVUxMKQorKyMgbWFrZSBkaXN0IGNyZWF0ZXMgLmMgZmlsZXMg aW4gYSBkaWZmZXJlbnQgc3JjZGlyCisrZW1vamllcmFwcC5vOiAkKHNyY2RpcikvZW1vamllcmFw cC5jCisrCSQoQU1fVl9DQylzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29sPW5vIFwKKysJ REVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBcCisrCSQoQU1fVl9DQ19u bykkKENPTVBJTEUpIC1jIC1vICRAICQ8CisrCSQoTlVMTCkKKyAKKyBtYW5fc2V2ZW5fZmlsZXMg PSAkKG1hbl9zZXZlbl9pbl9maWxlczouNy5pbj0uNykKKyBtYW5fc2V2ZW5fREFUQSA9JChtYW5f c2V2ZW5fZmlsZXM6Ljc9LjcuZ3opCitAQCAtMjc2LDcgKzIxMyw3IEBAIENMRUFORklMRVMgKz0g XAorICAgICAkKG1hbl9zZXZlbl9maWxlcykgXAorICAgICAkKE5VTEwpCisgCistIyBlbmQgb2Yg RU5BQkxFX0VNT0pJX0RJQ1QKKyBlbmRpZgorKyMgZW5kIG9mIEVOQUJMRV9FTU9KSV9ESUNUCisg CisgLWluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9naXQubWsKK2RpZmYgLS1naXQgYS91aS9ndGszL2Vt b2ppZXIudmFsYSBiL3VpL2d0azMvZW1vamllci52YWxhCitpbmRleCA5ZGY1OWFjNC4uMzZhYjRi YWIgMTAwNjQ0CistLS0gYS91aS9ndGszL2Vtb2ppZXIudmFsYQorKysrIGIvdWkvZ3RrMy9lbW9q aWVyLnZhbGEKK0BAIC0xMTM5LDYgKzExMzksNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5B cHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICAgICAgICAgICAgICBtX2NhdGVnb3J5X2FjdGl2 ZV9pbmRleCA9IChpbnQpbGlzdC5sZW5ndGgoKTsKKyAgICAgICAgIH0KKyAgICAgICAgIEd0ay5B ZGp1c3RtZW50IGFkanVzdG1lbnQgPSBtX2xpc3RfYm94LmdldF9hZGp1c3RtZW50KCk7CisrICAg ICAgICBtX3Njcm9sbGVkX3dpbmRvdy5zZXRfaGFkanVzdG1lbnQobmV3IEd0ay5BZGp1c3RtZW50 KDAsIDAsIDAsIDAsIDAsIDApKTsKKyAgICAgICAgIG1fc2Nyb2xsZWRfd2luZG93LnNldF92YWRq dXN0bWVudChhZGp1c3RtZW50KTsKKyAgICAgICAgIHNob3dfY2F0ZWdvcnlfbGlzdCgpOworICAg ICB9CitAQCAtMTE1Niw3ICsxMTU3LDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGlj YXRpb25XaW5kb3cgeworICAgICAgICAgICAgIGVsc2UgaWYgKGtleXZhbCA9PSBHZGsuS2V5LlJp Z2h0KQorICAgICAgICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5jdXJzb3JfZG93bigpOworICAg ICAgICAgICAgIHNob3dfY2FuZGlkYXRlX3BhbmVsKCk7CistICAgICAgICB9IGVsc2UgaWYgKG1f ZW50cnkuZ2V0X3RleHQoKS5sZW4oKSA+IDApIHsKKysgICAgICAgIH0gZWxzZSBpZiAobV9lbnRy eS5nZXRfdGV4dCgpLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICBpbnQgc3RlcCA9IDA7Cisg ICAgICAgICAgICAgaWYgKGtleXZhbCA9PSBHZGsuS2V5LkxlZnQpCisgICAgICAgICAgICAgICAg IHN0ZXAgPSAtMTsKK0BAIC0xMjExLDcgKzEyMTIsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0 ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICAgICAgc2hvd19jYW5kaWRhdGVfcGFuZWwo KTsKKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIH0KKy0gICAgICAgIGlmICht X2VudHJ5LmdldF90ZXh0KCkubGVuKCkgPiAwKSB7CisrICAgICAgICBpZiAobV9lbnRyeS5nZXRf dGV4dCgpLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICBpbnQgc3RlcCA9IDA7CisgICAgICAg ICAgICAgaWYgKGtleXZhbCA9PSBHZGsuS2V5LkhvbWUpCisgICAgICAgICAgICAgICAgIHN0ZXAg PSAtMTsKK0BAIC0xNDEwLDcgKzE0MTEsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBs aWNhdGlvbldpbmRvdyB7CisgICAgICAgICAgICAga2V5X3ByZXNzX2VudGVyKCk7CisgICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICBjYXNlIEdkay5LZXkuQmFja1NwYWNlOgorLSAg ICAgICAgICAgIGlmIChtX2VudHJ5LmdldF90ZXh0KCkubGVuKCkgPiAwKSB7CisrICAgICAgICAg ICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAg IGlmICgobW9kaWZpZXJzICYgR2RrLk1vZGlmaWVyVHlwZS5DT05UUk9MX01BU0spICE9IDApIHsK KyAgICAgICAgICAgICAgICAgICAgIEdMaWIuU2lnbmFsLmVtaXRfYnlfbmFtZShtX2VudHJ5LCAi ZGVsZXRlLWZyb20tY3Vyc29yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHdGsuRGVsZXRlVHlwZS5XT1JEX0VORFMsIC0xKTsKK0BAIC0xNDIyLDcgKzE0 MjMsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlIEdkay5LZXkuRGVsZXRlOgorICAgICAgICAg Y2FzZSBHZGsuS2V5LktQX0RlbGV0ZToKKy0gICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4 dCgpLmxlbigpID4gMCkgeworKyAgICAgICAgICAgIGlmIChtX2VudHJ5LmdldF90ZXh0KCkubGVu Z3RoID4gMCkgeworICAgICAgICAgICAgICAgICBpZiAoKG1vZGlmaWVycyAmIEdkay5Nb2RpZmll clR5cGUuQ09OVFJPTF9NQVNLKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICBHTGliLlNp Z25hbC5lbWl0X2J5X25hbWUobV9lbnRyeSwgImRlbGV0ZS1mcm9tLWN1cnNvciIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrLkRlbGV0ZVR5cGUuV09S RF9FTkRTLCAxKTsKK0BAIC0xNDM2LDcgKzE0MzcsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0 ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICBjYXNlIEdkay5LZXkuc3BhY2U6CisgICAg ICAgICBjYXNlIEdkay5LZXkuS1BfU3BhY2U6CisgICAgICAgICAgICAgaWYgKChtb2RpZmllcnMg JiBHZGsuTW9kaWZpZXJUeXBlLlNISUZUX01BU0spICE9IDApIHsKKy0gICAgICAgICAgICAgICAg aWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW4oKSA+IDApCisrICAgICAgICAgICAgICAgIGlmICht X2VudHJ5LmdldF90ZXh0KCkubGVuZ3RoID4gMCkKKyAgICAgICAgICAgICAgICAgICAgIGVudHJ5 X2VudGVyX2tleXZhbChrZXl2YWwpOworICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9jYW5kaWRh dGVfcGFuZWxfaXNfdmlzaWJsZSkgeworICAgICAgICAgICAgICAgICBlbnRlcl9ub3RpZnlfZGlz YWJsZV93aXRoX3RpbWVyKCk7CitAQCAtMTUxMiw3ICsxNTEzLDcgQEAgY2xhc3MgSUJ1c0Vtb2pp ZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgIGNhc2UgR2RrLktl eS51OgorLSAgICAgICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbigpID4gMCkg eworKyAgICAgICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbmd0aCA+IDApIHsK KyAgICAgICAgICAgICAgICAgICAgIEdMaWIuU2lnbmFsLmVtaXRfYnlfbmFtZShtX2VudHJ5LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGUtZnJv bS1jdXJzb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEd0ay5EZWxldGVUeXBlLlBBUkFHUkFQSF9FTkRTLAorQEAgLTE1MjEsMTMgKzE1MjIsMTMgQEAg Y2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgIGNhc2UgR2RrLktl eS5hOgorLSAgICAgICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbigpID4gMCkg eworKyAgICAgICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbmd0aCA+IDApIHsK KyAgICAgICAgICAgICAgICAgICAgIG1fZW50cnkuc2VsZWN0X3JlZ2lvbigwLCAtMSk7CisgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICBjYXNlIEdkay5LZXkueDoKKy0gICAgICAg ICAgICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW4oKSA+IDApIHsKKysgICAgICAgICAg ICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAg ICAgICAgICBHTGliLlNpZ25hbC5lbWl0X2J5X25hbWUobV9lbnRyeSwgImN1dC1jbGlwYm9hcmQi KTsKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICB9 CitAQCAtMTU0NCw3ICsxNTQ1LDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRp b25XaW5kb3cgeworICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBib2FyZC5zdG9yZSgpOwor ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAg ICAgfQorLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW4o KSA+IDApIHsKKysgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX2VudHJ5LmdldF90ZXh0KCku bGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgR0xpYi5TaWduYWwuZW1pdF9ieV9u YW1lKG1fZW50cnksICJjb3B5LWNsaXBib2FyZCIpOworICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgICAgICAgIH0KK2RpZmYgLS1naXQgYS91aS9ndGszL2lidXNl bW9qaWRpYWxvZy5oIGIvdWkvZ3RrMy9pYnVzZW1vamlkaWFsb2cuaAoraW5kZXggMjRkMTk1Yzgu LmVkODg4NmE4IDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9pYnVzZW1vamlkaWFsb2cuaAorKysrIGIv dWkvZ3RrMy9pYnVzZW1vamlkaWFsb2cuaAorQEAgLTE3MCw1ICsxNzAsMzEgQEAgdm9pZCAgICAg ICAgICBpYnVzX2Vtb2ppZXJfc2V0X2Zhdm9yaXRlcyAgICAgICAgICAoZ2NoYXIqKiAgICAgIGZh dm9yaXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmYXZvcml0ZV9hbm5vdGF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmYXZvcml0ZV9hbm5vdGF0aW9uc19sZW5ndGgpOwogKwog Ky8qKgotKyAqIGlidXNfY2Fpcm9fbGluZV9mcmVlOgotKyAqIEBjYWlyb19saW5lczogI0lCdXND YWlyb0xpbmUKKysgKiBpYnVzX2Vtb2ppZXJfc2V0X3BhcnRpYWxfbWF0Y2g6CisrICogQGhhc19w YXJ0aWFsX21hdGNoOiBFbmFibGUgdGhlIHBhcnRpYWwgbWF0Y2ggaWYgJVRSVUUuIE90aGVyd2lz ZSBpZiAlRkFMU0UuCiArICoKLSsgKiBGcmVlIGFuICNJQnVzQ2Fpcm9MaW5lLgorKyAqIFNldCBw YXJ0aWFsIG1hdGNoIGZvciBlbW9qaSBhbm5vdGF0aW9ucy4KICsgKi8KLSt2b2lkICAgICAgICAg ICAgaWJ1c19jYWlyb19saW5lX2ZyZWUgICAgICAgICAgICAoSUJ1c0NhaXJvTGluZSAqY2Fpcm9f bGluZXMpOwotKwotKwotK0dUeXBlICAgICAgICAgICBpYnVzX3JlcXVpc2l0aW9uX2V4X2dldF90 eXBlICAgICh2b2lkKSBHX0dOVUNfQ09OU1Q7Cisrdm9pZCAgICAgICAgICBpYnVzX2Vtb2ppZXJf c2V0X3BhcnRpYWxfbWF0Y2ggICAgICAoZ2Jvb2xlYW4gIGhhc19wYXJ0aWFsX21hdGNoKTsKICsK ICsvKioKLSsgKiBpYnVzX3JlcXVpc2l0aW9uX2V4X2NvcHk6Ci0rICogQHJlcTogI0lCdXNSZXF1 aXNpdGlvbkV4Ci0rICoKLSsgKiBDcmVhdGVzIGEgY29weSBvZiBAcmVxLCB3aGljaCBzaG91bGQg YmUgZnJlZWQgd2l0aAotKyAqIGlidXNfcmVxdWlzaXRpb25fZXhfZnJlZSgpLiBQcmltYXJpbHkg dXNlZCBieSBsYW5ndWFnZSBiaW5kaW5ncywKLSsgKiBub3QgdGhhdCB1c2VmdWwgb3RoZXJ3aXNl IChzaW5jZSBAcmVxIGNhbiBqdXN0IGJlIGNvcGllZAotKyAqIGJ5IGFzc2lnbm1lbnQgaW4gQyku CisrICogaWJ1c19lbW9qaWVyX3NldF9wYXJ0aWFsX21hdGNoX2xlbmd0aDoKKysgKiBAbGVuZ3Ro OiBtaW5pbXVtIGxlbmdodCB0byBtYXRjaCBwYXJ0aWFsbHkuCiArICoKLSsgKiBSZXR1cm5zOiB0 aGUgbmV3bHkgYWxsb2NhdGVkICNJQnVzUmVxdWlzaXRpb25FeCwgd2hpY2ggc2hvdWxkCi0rICog ICAgICAgICAgYmUgZnJlZWQgd2l0aCBpYnVzX3JlcXVpc2l0aW9uX2V4X2ZyZWUoKSwgb3IgJU5V TEwKLSsgKiAgICAgICAgICBpZiBAcmVxIHdhcyAlTlVMTC4KLSsgKiovCi0rSUJ1c1JlcXVpc2l0 aW9uRXggKgotKyAgICAgICAgICAgICAgICBpYnVzX3JlcXVpc2l0aW9uX2V4X2NvcHkgICAgICAg IChJQnVzUmVxdWlzaXRpb25FeCAqcmVxKTsKKysgKiBTZXQgdGhlIG1pbmltdW0gbGVuZ2h0IHRv IG1hdGNoIHBhcnRpYWxseS4KKysgKi8KKyt2b2lkICAgICAgICAgIGlidXNfZW1vamllcl9zZXRf cGFydGlhbF9tYXRjaF9sZW5ndGgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChnaW50ICAgICAgICAgbGVuZ3RoKTsKICsKICsvKioKLSsgKiBpYnVz X3JlcXVpc2l0aW9uX2V4X2ZyZWU6Ci0rICogQHJlcTogI0lCdXNSZXF1aXNpdGlvbkV4CisrICog aWJ1c19lbW9qaWVyX3NldF9wYXJ0aWFsX21hdGNoX2NvbmRpdGlvbjoKKysgKiBAY29uZGl0aW9u OiBjb25kaXRpb24gaWQgYmV0d2VlbiAwIGFuZCAyLgogKyAqCi0rICogRnJlZSBhbiAjSUJ1c1Jl cXVpc2l0aW9uRXguCisrICogU2V0IHRoZSBwYXJ0aWFsIG1hdGNoIGNvbmRpdGlvbiB3aXRoIHRo ZSBpbnRlZ2VyLgogKyAqLwotK3ZvaWQgICAgICAgICAgICBpYnVzX3JlcXVpc2l0aW9uX2V4X2Zy ZWUgICAgICAgIChJQnVzUmVxdWlzaXRpb25FeCAqcmVxKTsKKyt2b2lkICAgICAgICAgIGlidXNf ZW1vamllcl9zZXRfcGFydGlhbF9tYXRjaF9jb25kaXRpb24KKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnaW50ICAgICAgICAgY29uZGl0aW9uKTsK KyBHX0VORF9ERUNMUworICNlbmRpZgorLS0gCisyLjEzLjQKKworRnJvbSBkNzg4OTE4YjYzNTI3 NWQwMjQ3ZTY4ZjI2ZjljODQwMTAwYmNhMzY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJv bTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorRGF0ZTogV2VkLCA2IFNl cCAyMDE3IDEyOjE3OjMwICswOTAwCitTdWJqZWN0OiBbUEFUQ0ggMDkvMTRdIHVpL2d0azM6IFN3 aXRjaGVyIHNob3VsZCBpZ25vcmUgbW91c2UgdW50aWwgaXQgbW92ZXMKKworQlVHPWh0dHBzOi8v Z2l0aHViLmNvbS9pYnVzL2lidXMvaXNzdWVzLzE5MjkKKworUmV2aWV3IFVSTDogaHR0cHM6Ly9j b2RlcmV2aWV3LmFwcHNwb3QuY29tLzMyOTEwMDA0MworLS0tCisgdWkvZ3RrMy9zd2l0Y2hlci52 YWxhIHwgMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAy NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS91aS9ndGszL3N3 aXRjaGVyLnZhbGEgYi91aS9ndGszL3N3aXRjaGVyLnZhbGEKK2luZGV4IGNmMTg3NTU1Li4yNjlh NjhkNCAxMDA2NDQKKy0tLSBhL3VpL2d0azMvc3dpdGNoZXIudmFsYQorKysrIGIvdWkvZ3RrMy9z d2l0Y2hlci52YWxhCitAQCAtOTEsNiArOTEsOSBAQCBjbGFzcyBTd2l0Y2hlciA6IEd0ay5XaW5k b3cgeworICAgICBwcml2YXRlIHVpbnQgbV9wb3B1cF9kZWxheV90aW1lX2lkID0gMDsKKyAgICAg cHJpdmF0ZSBpbnQgbV9yb290X3g7CisgICAgIHByaXZhdGUgaW50IG1fcm9vdF95OworKyAgICBw cml2YXRlIGRvdWJsZSBtX21vdXNlX2luaXRfeDsKKysgICAgcHJpdmF0ZSBkb3VibGUgbV9tb3Vz ZV9pbml0X3k7CisrICAgIHByaXZhdGUgYm9vbCAgIG1fbW91c2VfbW92ZWQ7CisgICAgIHByaXZh dGUgR0xpYi5IYXNoVGFibGU8c3RyaW5nLCBzdHJpbmc+IG1feGtiX2xhbmd1YWdlcyA9CisgICAg ICAgICAgICAgbmV3IEdMaWIuSGFzaFRhYmxlPHN0cmluZywgc3RyaW5nPihHTGliLnN0cl9oYXNo LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpYi5z dHJfZXF1YWwpOworQEAgLTIyMSw2ICsyMjQsMTEgQEAgY2xhc3MgU3dpdGNoZXIgOiBHdGsuV2lu ZG93IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGsuQ1VSUkVOVF9USU1FKTsK KyAgICAgICAgIGlmIChzdGF0dXMgIT0gR2RrLkdyYWJTdGF0dXMuU1VDQ0VTUykKKyAgICAgICAg ICAgICB3YXJuaW5nKCJHcmFiIHBvaW50ZXIgZmFpbGVkISBzdGF0dXMgPSAlZCIsIHN0YXR1cyk7 CisrICAgICAgICAvLyBQcm9iYWJseSB3ZSBjYW4gZGVsZXRlIG1fcG9wdXBfZGVsYXlfdGltZSBp biAxLjYKKysgICAgICAgIHBvaW50ZXIuZ2V0X3Bvc2l0aW9uX2RvdWJsZShudWxsLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBtX21vdXNlX2luaXRfeCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgbV9tb3VzZV9pbml0X3kpOworKyAg ICAgICAgbV9tb3VzZV9tb3ZlZCA9IGZhbHNlOworIAorIAorICAgICAgICAgbV9sb29wID0gbmV3 IEdMaWIuTWFpbkxvb3AoKTsKK0BAIC0yNjMsMTIgKzI3MSwzMCBAQCBjbGFzcyBTd2l0Y2hlciA6 IEd0ay5XaW5kb3cgeworICAgICAgICAgICAgIHZhciBidXR0b24gPSBuZXcgSUJ1c0VuZ2luZUJ1 dHRvbihlbmdpbmUsIHRoaXMpOworICAgICAgICAgICAgIHZhciBsb25nbmFtZSA9IGVuZ2luZS5n ZXRfbG9uZ25hbWUoKTsKKyAgICAgICAgICAgICBidXR0b24uc2V0X3JlbGllZihHdGsuUmVsaWVm U3R5bGUuTk9ORSk7CisrICAgICAgICAgICAgYnV0dG9uLmFkZF9ldmVudHMoR2RrLkV2ZW50TWFz ay5QT0lOVEVSX01PVElPTl9NQVNLKTsKKyAgICAgICAgICAgICBidXR0b24uc2hvdygpOworIAor ICAgICAgICAgICAgIGJ1dHRvbi5lbnRlcl9ub3RpZnlfZXZlbnQuY29ubmVjdCgoZSkgPT4gewor KyAgICAgICAgICAgICAgICAvLyBhdm9pZCBndGtfYnV0dG9uX3VwZGF0ZV9zdGF0ZSgpCisrICAg ICAgICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICAgICAgICAgIH0pOworKyAgICAgICAgICAg IGJ1dHRvbi5tb3Rpb25fbm90aWZ5X2V2ZW50LmNvbm5lY3QoKGUpID0+IHsKKysjaWYgVkFMQV8w XzI0CisrICAgICAgICAgICAgICAgIEdkay5FdmVudE1vdGlvbiBwZSA9IGU7CisrI2Vsc2UKKysg ICAgICAgICAgICAgICAgR2RrLkV2ZW50TW90aW9uICpwZSA9ICZlOworKyNlbmRpZgorKyAgICAg ICAgICAgICAgICBpZiAobV9zZWxlY3RlZF9lbmdpbmUgPT0gaW5kZXgpCisrICAgICAgICAgICAg ICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICAgICAgICAgIGlmICghbV9tb3VzZV9tb3Zl ZCAmJgorKyAgICAgICAgICAgICAgICAgICAgbV9tb3VzZV9pbml0X3ggPT0gcGUueF9yb290ICYm CisrICAgICAgICAgICAgICAgICAgICBtX21vdXNlX2luaXRfeSA9PSBwZS55X3Jvb3QpIHsKKysg ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgICAgICAgICAgfQorKyAg ICAgICAgICAgICAgICBtX21vdXNlX21vdmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgYnV0 dG9uLmdyYWJfZm9jdXMoKTsKKyAgICAgICAgICAgICAgICAgbV9zZWxlY3RlZF9lbmdpbmUgPSBp bmRleDsKKy0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICAgICB9KTsKKyAKKyAgICAgICAgICAgICBidXR0b24uYnV0 dG9uX3ByZXNzX2V2ZW50LmNvbm5lY3QoKGUpID0+IHsKKy0tIAorMi4xMy40CisKK0Zyb20gYmJm YjNkNzM4YjlkNjFkMWViMDY1OGE5Y2U1NmUzY2Q4YzExMWFjNCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKK0Zyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KK0RhdGU6 IFdlZCwgNiBTZXAgMjAxNyAxNDowODo0MCArMDkwMAorU3ViamVjdDogW1BBVENIIDEwLzE0XSBj bGllbnQvZ3RrMjogRG8gbm90IHNlbmQga2V5IGV2ZW50cyB0bworIEd0a0lNQ29udGV4dFNpbXBs ZQorCitHdGtJTUNvbnRleHRTaW1wbGUgYmluZHMgQ3RybC1TaGlmdC11IGJ1dCBJQnVzIGNsaWVu dHMgZG8gbm90IG5vdy4KKworQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvaXNzdWVz LzE4ODkKK1I9U2hhd24uUC5IdWFuZ0BnbWFpbC5jb20KKworUmV2aWV3IFVSTDogaHR0cHM6Ly9j b2RlcmV2aWV3LmFwcHNwb3QuY29tLzMyNzI5MDA0MworLS0tCisgY2xpZW50L2d0azIvaWJ1c2lt Y29udGV4dC5jIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0K KyBzcmMvaWJ1c2VuZ2luZXNpbXBsZS5jICAgICAgfCAyMyArKy0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHNyYy9pYnVzZW5naW5lc2ltcGxlLmggICAgICB8IDI0ICsrKysrKysrKysrKysrKysrKysr KystLQorIDMgZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0p CisKK2RpZmYgLS1naXQgYS9jbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMgYi9jbGllbnQvZ3Rr Mi9pYnVzaW1jb250ZXh0LmMKK2luZGV4IGI0Y2E4ODI4Li4zZWE0Njk1MSAxMDA2NDQKKy0tLSBh L2NsaWVudC9ndGsyL2lidXNpbWNvbnRleHQuYworKysrIGIvY2xpZW50L2d0azIvaWJ1c2ltY29u dGV4dC5jCitAQCAtMiw3ICsyLDggQEAKKyAvKiB2aW06c2V0IGV0IHN0cz00OiAqLworIC8qIGli dXMgLSBUaGUgSW5wdXQgQnVzCisgICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUGVuZyBIdWFu ZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+CistICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMg UmVkIEhhdCwgSW5jLgorKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IFRha2FvIEZ1aml3YXJh IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3 IFJlZCBIYXQsIEluYy4KKyAgKgorICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCitAQCAtMjQ3LDYgKzI0OCwzOSBA QCBfZm9jdXNfb3V0X2NiIChHdGtXaWRnZXQgICAgICp3aWRnZXQsCisgICAgIHJldHVybiBGQUxT RTsKKyB9CisgCisrc3RhdGljIGdib29sZWFuCisraWJ1c19pbV9jb250ZXh0X2NvbW1pdF9ldmVu dCAoSUJ1c0lNQ29udGV4dCAqaWJ1c2ltY29udGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHZGtFdmVudEtleSAgICpldmVudCkKKyt7CisrICAgIGludCBpOworKyAgICBHZGtN b2RpZmllclR5cGUgbm9fdGV4dF9pbnB1dF9tYXNrOworKyAgICBndW5pY2hhciBjaDsKICsKKysg ICAgaWYgKGV2ZW50LT50eXBlID09IEdES19LRVlfUkVMRUFTRSkKKysgICAgICAgIHJldHVybiBG QUxTRTsKKysgICAgLyogSWdub3JlIG1vZGlmaWVyIGtleSBwcmVzc2VzICovCisrICAgIGZvciAo aSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKElCVVNfQ09NUE9TRV9JR05PUkVfS0VZTElTVCk7IGkr KykKKysgICAgICAgIGlmIChldmVudC0+a2V5dmFsID09IElCVVNfQ09NUE9TRV9JR05PUkVfS0VZ TElTVFtpXSkKKysgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisrICAgIG5vX3RleHRfaW5wdXRf bWFzayA9IGdka19rZXltYXBfZ2V0X21vZGlmaWVyX21hc2sgKAorKyAgICAgICAgICAgIGdka19r ZXltYXBfZ2V0X2Zvcl9kaXNwbGF5IChnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCAoKSksCisrICAg ICAgICAgICAgR0RLX01PRElGSUVSX0lOVEVOVF9OT19URVhUX0lOUFVUKTsKKysgICAgaWYgKGV2 ZW50LT5zdGF0ZSAmIG5vX3RleHRfaW5wdXRfbWFzayB8fAorKyAgICAgICAgZXZlbnQtPmtleXZh bCA9PSBHREtfS0VZX1JldHVybiB8fAorKyAgICAgICAgZXZlbnQtPmtleXZhbCA9PSBHREtfS0VZ X0lTT19FbnRlciB8fAorKyAgICAgICAgZXZlbnQtPmtleXZhbCA9PSBHREtfS0VZX0tQX0VudGVy KSB7CisrICAgICAgICByZXR1cm4gRkFMU0U7CisrICAgIH0KKysgICAgY2ggPSBpYnVzX2tleXZh bF90b191bmljb2RlIChldmVudC0+a2V5dmFsKTsKKysgICAgaWYgKGNoICE9IDAgJiYgIWdfdW5p Y2hhcl9pc2NudHJsIChjaCkpIHsKKysgICAgICAgIElCdXNUZXh0ICp0ZXh0ID0gaWJ1c190ZXh0 X25ld19mcm9tX3VuaWNoYXIgKGNoKTsKKysgICAgICAgIGdfc2lnbmFsX2VtaXQgKGlidXNpbWNv bnRleHQsIF9zaWduYWxfY29tbWl0X2lkLCAwLCB0ZXh0LT50ZXh0KTsKKysgICAgICAgIGdfb2Jq ZWN0X3VucmVmICh0ZXh0KTsKKysgICAgICAgIHJldHVybiBUUlVFOworKyAgICB9CisrICAgcmV0 dXJuIEZBTFNFOworK30KICsKLStHVHlwZSAgICAgICAgICAgaWJ1c19mb250c2V0X2dldF90eXBl ICAgICAgICAgICAodm9pZCk7Cisgc3RhdGljIHZvaWQKKyBfcHJvY2Vzc19rZXlfZXZlbnRfZG9u ZSAoR09iamVjdCAgICAgICpvYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3lu Y1Jlc3VsdCAqcmVzLAorQEAgLTc5Nyw4ICs4MzEsMTEgQEAgaWJ1c19pbV9jb250ZXh0X2ZpbHRl cl9rZXlwcmVzcyAoR3RrSU1Db250ZXh0ICpjb250ZXh0LAorICAgICBpZiAoZXZlbnQtPnN0YXRl ICYgSUJVU19IQU5ETEVEX01BU0spCisgICAgICAgICByZXR1cm4gVFJVRTsKKyAKKysgICAgLyog RG8gbm90IGNhbGwgZ3RrX2ltX2NvbnRleHRfZmlsdGVyX2tleXByZXNzKCkgYmVjYXVzZQorKyAg ICAgKiBndGtfaW1fY29udGV4dF9zaW1wbGVfZmlsdGVyX2tleXByZXNzKCkgYmluZHMgQ3RybC1T aGlmdC11CisrICAgICAqLworICAgICBpZiAoZXZlbnQtPnN0YXRlICYgSUJVU19JR05PUkVEX01B U0spCistICAgICAgICByZXR1cm4gZ3RrX2ltX2NvbnRleHRfZmlsdGVyX2tleXByZXNzIChpYnVz aW1jb250ZXh0LT5zbGF2ZSwgZXZlbnQpOworKyAgICAgICAgcmV0dXJuIGlidXNfaW1fY29udGV4 dF9jb21taXRfZXZlbnQgKGlidXNpbWNvbnRleHQsIGV2ZW50KTsKKyAKKyAgICAgLyogWFhYIGl0 IGlzIGEgd29ya2Fyb3VuZCBmb3Igc29tZSBhcHBsaWNhdGlvbnMgZG8gbm90IHNldCBjbGllbnQK KyAgICAgICogd2luZG93LiAqLworZGlmZiAtLWdpdCBhL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMg Yi9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCitpbmRleCBjZGRkOTMyYy4uNjM3ODUyMjMgMTAwNjQ0 CistLS0gYS9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCisrKysgYi9zcmMvaWJ1c2VuZ2luZXNpbXBs ZS5jCitAQCAtODEsMjUgKzgxLDYgQEAgY29uc3QgSUJ1c0NvbXBvc2VUYWJsZUNvbXBhY3QgaWJ1 c19jb21wb3NlX3RhYmxlX2NvbXBhY3QgPSB7CisgCisgc3RhdGljIEdTTGlzdCAqZ2xvYmFsX3Rh YmxlczsKKyAKKy1zdGF0aWMgY29uc3QgZ3VpbnQxNiBpYnVzX2NvbXBvc2VfaWdub3JlW10gPSB7 CistICAgIElCVVNfS0VZX1NoaWZ0X0wsCistICAgIElCVVNfS0VZX1NoaWZ0X1IsCistICAgIElC VVNfS0VZX0NvbnRyb2xfTCwKKy0gICAgSUJVU19LRVlfQ29udHJvbF9SLAorLSAgICBJQlVTX0tF WV9DYXBzX0xvY2ssCistICAgIElCVVNfS0VZX1NoaWZ0X0xvY2ssCistICAgIElCVVNfS0VZX01l dGFfTCwKKy0gICAgSUJVU19LRVlfTWV0YV9SLAorLSAgICBJQlVTX0tFWV9BbHRfTCwKKy0gICAg SUJVU19LRVlfQWx0X1IsCistICAgIElCVVNfS0VZX1N1cGVyX0wsCistICAgIElCVVNfS0VZX1N1 cGVyX1IsCistICAgIElCVVNfS0VZX0h5cGVyX0wsCistICAgIElCVVNfS0VZX0h5cGVyX1IsCist ICAgIElCVVNfS0VZX01vZGVfc3dpdGNoLAorLSAgICBJQlVTX0tFWV9JU09fTGV2ZWwzX1NoaWZ0 CistfTsKKy0KKyAvKiBmdW5jdGlvbnMgcHJvdG90eXBlICovCisgc3RhdGljIHZvaWQgICAgIGli dXNfZW5naW5lX3NpbXBsZV9kZXN0cm95ICAgICAgKElCdXNFbmdpbmVTaW1wbGUgICAqc2ltcGxl KTsKKyBzdGF0aWMgdm9pZCAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3Jlc2V0ICAgICAgICAoSUJ1 c0VuZ2luZSAgICAgICAgICplbmdpbmUpOworQEAgLTEwNDUsOCArMTAyNiw4IEBAIGlidXNfZW5n aW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5lLAorICAgICB9 CisgCisgICAgIC8qIElnbm9yZSBtb2RpZmllciBrZXkgcHJlc3NlcyAqLworLSAgICBmb3IgKGkg PSAwOyBpIDwgR19OX0VMRU1FTlRTIChpYnVzX2NvbXBvc2VfaWdub3JlKTsgaSsrKQorLSAgICAg ICAgaWYgKGtleXZhbCA9PSBpYnVzX2NvbXBvc2VfaWdub3JlW2ldKQorKyAgICBmb3IgKGkgPSAw OyBpIDwgR19OX0VMRU1FTlRTIChJQlVTX0NPTVBPU0VfSUdOT1JFX0tFWUxJU1QpOyBpKyspCisr ICAgICAgICBpZiAoa2V5dmFsID09IElCVVNfQ09NUE9TRV9JR05PUkVfS0VZTElTVFtpXSkKKyAg ICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgCisgICAgIGlmICgocHJpdi0+aW5faGV4X3NlcXVl bmNlIHx8IHByaXYtPmluX2Vtb2ppX3NlcXVlbmNlKQorZGlmZiAtLWdpdCBhL3NyYy9pYnVzZW5n aW5lc2ltcGxlLmggYi9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5oCitpbmRleCA4NzEyNjU5Yy4uYTVl ZjM0ZmIgMTAwNjQ0CistLS0gYS9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5oCisrKysgYi9zcmMvaWJ1 c2VuZ2luZXNpbXBsZS5oCitAQCAtMiw4ICsyLDggQEAKKyAvKiB2aW06c2V0IGV0IHN0cz00OiAq LworIC8qIGlidXMgLSBUaGUgSW5wdXQgQnVzCisgICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTUg UGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+CistICogQ29weXJpZ2h0IChDKSAy MDE1LTIwMTYgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CistICog Q29weXJpZ2h0IChDKSAyMDA4LTIwMTYgUmVkIEhhdCwgSW5jLgorKyAqIENvcHlyaWdodCAoQykg MjAxNS0yMDE3IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorKyAq IENvcHlyaWdodCAoQykgMjAwOC0yMDE3IFJlZCBIYXQsIEluYy4KKyAgKgorICAqIFRoaXMgbGli cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCitAQCAtNDAsNiArNDAsNyBAQAorICAqLworIAorICNpbmNsdWRlICJpYnVzZW5naW5lLmgi CisrI2luY2x1ZGUgImlidXNrZXlzeW1zLmgiCisgCisgR19CRUdJTl9ERUNMUworIAorQEAgLTk0 LDYgKzk1LDI1IEBAIHN0cnVjdCBfSUJ1c0VuZ2luZVNpbXBsZUNsYXNzIHsKKyAgICAgZ3BvaW50 ZXIgcGR1bW15WzhdOworIH07CisgCisrc3RhdGljIGNvbnN0IGd1aW50MTYgSUJVU19DT01QT1NF X0lHTk9SRV9LRVlMSVNUW10gPSB7CisrICAgIElCVVNfS0VZX1NoaWZ0X0wsCisrICAgIElCVVNf S0VZX1NoaWZ0X1IsCisrICAgIElCVVNfS0VZX0NvbnRyb2xfTCwKKysgICAgSUJVU19LRVlfQ29u dHJvbF9SLAorKyAgICBJQlVTX0tFWV9DYXBzX0xvY2ssCisrICAgIElCVVNfS0VZX1NoaWZ0X0xv Y2ssCisrICAgIElCVVNfS0VZX01ldGFfTCwKKysgICAgSUJVU19LRVlfTWV0YV9SLAorKyAgICBJ QlVTX0tFWV9BbHRfTCwKKysgICAgSUJVU19LRVlfQWx0X1IsCisrICAgIElCVVNfS0VZX1N1cGVy X0wsCisrICAgIElCVVNfS0VZX1N1cGVyX1IsCisrICAgIElCVVNfS0VZX0h5cGVyX0wsCisrICAg IElCVVNfS0VZX0h5cGVyX1IsCisrICAgIElCVVNfS0VZX01vZGVfc3dpdGNoLAorKyAgICBJQlVT X0tFWV9JU09fTGV2ZWwzX1NoaWZ0CisrfTsKICsKLSsvKioKLSsgKiBpYnVzX2ZvbnRzZXRfbmV3 OgotKyAqIEBmaXJzdF9wcm9wZXJ0eV9uYW1lOiAKLSsgKgotKyAqIENyZWF0ZXMgYSBuZXcgI0lC dXNGY0ZvbnRTZXQuCi0rICoKLSsgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgbmV3bHkg YWxsb2NhdGVkICNJQnVzRm9udFNldCBhbmQgaW5jbHVkZXMKLSsgKiAjRmNGb250U2V0IGludGVy bmFsbHkuIEUuZy4gaWJ1c19mb250c2V0X25ldyAoImZhbWlseSIsCi0rICogIk5vdG8gRW1vamkg Q29sb3IiLCAic2l6ZSIsIDE2LCAibGFuZ3VhZ2UiLCAiamEtanAiKTsKLSsgKi8KLStJQnVzRm9u dFNldCAqICAgaWJ1c19mb250c2V0X25ldyAgICAgICAgICAgICAgICAoY29uc3QgZ2NoYXIKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICpmaXJzdF9wcm9wZXJ0eV9uYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKyBHVHlwZSAgIGlidXNfZW5n aW5lX3NpbXBsZV9nZXRfdHlwZSAgICAgICAodm9pZCk7CisgCisgLyoqCistLSAKKzIuMTMuNAor CitGcm9tIGQ3ODRlMDRjMzhlZWIwNjlmOWE4ZGE4YjMwNzQzZjQ0NjNmYTM0YzMgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCitGcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5j b20+CitEYXRlOiBUaHUsIDcgU2VwIDIwMTcgMTA6NTc6MTQgKzA5MDAKK1N1YmplY3Q6IFtQQVRD SCAxMS8xNF0gY2xpZW50L2d0azI6IEZpeCBhIGJ1aWxkIGZhaWx1cmUgd2l0aAorIEdES19NT0RJ RklFUl9JTlRFTlRfTk9fVEVYVF9JTlBVVAorCitCVUc9aHR0cHM6Ly9naXRodWIuY29tL2lidXMv aWJ1cy9pc3N1ZXMvMTk0MgorCitSZXZpZXcgVVJMOiBodHRwczovL2NvZGVyZXZpZXcuYXBwc3Bv dC5jb20vMzI3MzAwMDQzCistLS0KKyBjbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMgfCAxMiAr KysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0t Z2l0IGEvY2xpZW50L2d0azIvaWJ1c2ltY29udGV4dC5jIGIvY2xpZW50L2d0azIvaWJ1c2ltY29u dGV4dC5jCitpbmRleCAzZWE0Njk1MS4uYTgwNjM4MmQgMTAwNjQ0CistLS0gYS9jbGllbnQvZ3Rr Mi9pYnVzaW1jb250ZXh0LmMKKysrKyBiL2NsaWVudC9ndGsyL2lidXNpbWNvbnRleHQuYworQEAg LTI2Miw5ICsyNjIsMjEgQEAgaWJ1c19pbV9jb250ZXh0X2NvbW1pdF9ldmVudCAoSUJ1c0lNQ29u dGV4dCAqaWJ1c2ltY29udGV4dCwKKyAgICAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAo SUJVU19DT01QT1NFX0lHTk9SRV9LRVlMSVNUKTsgaSsrKQorICAgICAgICAgaWYgKGV2ZW50LT5r ZXl2YWwgPT0gSUJVU19DT01QT1NFX0lHTk9SRV9LRVlMSVNUW2ldKQorICAgICAgICAgICAgIHJl dHVybiBGQUxTRTsKKysjaWYgR1RLX0NIRUNLX1ZFUlNJT04gKDMsIDQsIDApCisgICAgIG5vX3Rl eHRfaW5wdXRfbWFzayA9IGdka19rZXltYXBfZ2V0X21vZGlmaWVyX21hc2sgKAorICAgICAgICAg ICAgIGdka19rZXltYXBfZ2V0X2Zvcl9kaXNwbGF5IChnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCAo KSksCisgICAgICAgICAgICAgR0RLX01PRElGSUVSX0lOVEVOVF9OT19URVhUX0lOUFVUKTsKKysj ZWxzZQorKyMgIGlmbmRlZiBHREtfV0lORE9XSU5HX1FVQVJUWgorKyMgICAgZGVmaW5lIF9JQlVT X05PX1RFWFRfSU5QVVRfTU9EX01BU0sgKEdES19NT0QxX01BU0sgfCBHREtfQ09OVFJPTF9NQVNL KQorKyMgIGVsc2UKKysjICAgIGRlZmluZSBfSUJVU19OT19URVhUX0lOUFVUX01PRF9NQVNLIChH REtfTU9EMl9NQVNLIHwgR0RLX0NPTlRST0xfTUFTSykKKysjICBlbmRpZgorKworKyAgICBub190 ZXh0X2lucHV0X21hc2sgPSBfSUJVU19OT19URVhUX0lOUFVUX01PRF9NQVNLOworKworKyMgIHVu ZGVmIF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0sKKysjZW5kaWYKKyAgICAgaWYgKGV2ZW50 LT5zdGF0ZSAmIG5vX3RleHRfaW5wdXRfbWFzayB8fAorICAgICAgICAgZXZlbnQtPmtleXZhbCA9 PSBHREtfS0VZX1JldHVybiB8fAorICAgICAgICAgZXZlbnQtPmtleXZhbCA9PSBHREtfS0VZX0lT T19FbnRlciB8fAorLS0gCisyLjEzLjQKKworRnJvbSAwNjMyY2JiYmI1NzM3NDliYmNhOTZhNDE2 ZmRlMTQ5MDgxMGU1MmQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogZnVqaXdhcmF0 IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMyBTZXAgMjAxNyAxODox NTowNiArMDkwMAorU3ViamVjdDogW1BBVENIIDEzLzE0XSB1aS9ndGszOiBGaXggUHJvcGVydHlQ YW5lbCBwb3NpdGlvbiBpbiB3b3JrYXJlYQorCitnZGtfc2NyZWVuX2dldF9tb25pdG9yX3dvcmth cmVhKCkgbm8gbG9uZ2VyIHJldHVybiB0aGUgY29ycmVjdCBhcmVhCitmcm9tICJfTkVUX1dPUktB UkVBIiBhdG9tIGluIEdUSyAzLjIyIGFuZCBub3cgdXNlCitnZGtfbW9uaXRvcl9nZXRfd29ya2Fy ZWEoKSBpbnN0ZWFkLgorCitVc2UgZ2RrX3NlYXRfZ3JhYigpIGluc3RlYWQgb2YgZGVwcmVjYXRl ZCBnZGtfZGV2aWNlX2dyYWIoKS4KKworVXNlIGd0a19tZW51X3BvcHVwX2F0X3JlY3QoKSBpbnN0 ZWFkIG9mIGRlcHJlY2F0ZWQgZ3RrX21lbnVfcG9wdXAoKSBhbmQKK2dlbmVyYXRlIGEgbmV3IGZv cmVpZ24gR2RrV2luZG93IHdpdGggbW91c2UgY3Vyc29yIGZvciB0aGUgUXQgV2luZG93LgorCitB bHNvIGZpeGVkIHNvbWUgZGVwcmVjYXRlZCBBUElzLgorCitSPVNoYXduLlAuSHVhbmdAZ21haWwu Y29tCisKK1JldmlldyBVUkw6IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8zMzAxOTAw NDMKKy0tLQorIHVpL2d0azMvY2FuZGlkYXRlcGFuZWwudmFsYSAgICB8ICA0MCArKysrKysrKy0t LS0tLS0KKyB1aS9ndGszL2Vtb2ppZXIudmFsYSAgICAgICAgICAgfCAgMjQgKysrKysrLS0tCisg dWkvZ3RrMy9oYW5kbGUudmFsYSAgICAgICAgICAgIHwgICA3ICstLQorIHVpL2d0azMvaW5kaWNh dG9yLnZhbGEgICAgICAgICB8ICA2OCArKysrKysrKysrKysrKysrKysrKysrKystLQorIHVpL2d0 azMva2V5YmluZGluZ21hbmFnZXIudmFsYSB8ICAgMiArLQorIHVpL2d0azMvcGFuZWwudmFsYSAg ICAgICAgICAgICB8IDEwOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LQorIHVpL2d0azMvcHJvcGVydHlwYW5lbC52YWxhICAgICB8ICAyMSArKysrKysrLQorIHVpL2d0 azMvc3dpdGNoZXIudmFsYSAgICAgICAgICB8ICA4NCArKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLQorIDggZmlsZXMgY2hhbmdlZCwgMjcwIGluc2VydGlvbnMoKyksIDg0IGRlbGV0aW9u cygtKQorCitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9jYW5kaWRhdGVwYW5lbC52YWxhIGIvdWkvZ3Rr My9jYW5kaWRhdGVwYW5lbC52YWxhCitpbmRleCAwZTVlM2JjMi4uZWMyZDNkYjQgMTAwNjQ0Cist LS0gYS91aS9ndGszL2NhbmRpZGF0ZXBhbmVsLnZhbGEKKysrKyBiL3VpL2d0azMvY2FuZGlkYXRl cGFuZWwudmFsYQorQEAgLTMsNyArMyw3IEBACisgICogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKKyAg KgorICAqIENvcHlyaWdodChjKSAyMDExLTIwMTUgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0Bn bWFpbC5jb20+CistICogQ29weXJpZ2h0KGMpIDIwMTUtMjAxNiBUYWthbyBGdWppd2FyYSA8dGFr YW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKysgKiBDb3B5cmlnaHQoYykgMjAxNS0yMDE3IFRha2Fv IEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorICAqCisgICogVGhpcyBsaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAq IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKK0BAIC0yOTIsNiArMjkyLDI2IEBAIHB1YmxpYyBjbGFzcyBDYW5kaWRhdGVQYW5lbCA6IEd0 ay5Cb3h7CisgICAgICAgICAgICAgYWRqdXN0X3dpbmRvd19wb3NpdGlvbl92ZXJ0aWNhbCgpOwor ICAgICB9CisgCisrICAgIHByaXZhdGUgR2RrLlJlY3RhbmdsZSBnZXRfbW9uaXRvcl9nZW9tZXRy eSgpIHsKKysgICAgICAgIEdkay5SZWN0YW5nbGUgbW9uaXRvcl9hcmVhID0geyAwLCB9OworKwor KyAgICAgICAgLy8gVXNlIGdldF9tb25pdG9yX2dlb21ldHJ5KCkgaW5zdGVhZCBvZiBnZXRfbW9u aXRvcl9hcmVhKCkuCisrICAgICAgICAvLyBnZXRfbW9uaXRvcl9hcmVhKCkgZXhjbHVkZXMgZG9j a3MsIGJ1dCB0aGUgbG9va3VwIHdpbmRvdyBzaG91bGQgYmUKKysgICAgICAgIC8vIHNob3duIG92 ZXIgdGhlbS4KKysjaWYgVkFMQV8wXzM0CisrICAgICAgICBHZGsuTW9uaXRvciBtb25pdG9yID0g R2RrLkRpc3BsYXkuZ2V0X2RlZmF1bHQoKS5nZXRfbW9uaXRvcl9hdF9wb2ludCgKKysgICAgICAg ICAgICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueCwKKysgICAgICAgICAgICAgICAgbV9jdXJzb3Jf bG9jYXRpb24ueSk7CisrICAgICAgICBtb25pdG9yX2FyZWEgPSBtb25pdG9yLmdldF9nZW9tZXRy eSgpOworKyNlbHNlCisrICAgICAgICBHZGsuU2NyZWVuIHNjcmVlbiA9IEdkay5TY3JlZW4uZ2V0 X2RlZmF1bHQoKTsKKysgICAgICAgIGludCBtb25pdG9yX251bSA9IHNjcmVlbi5nZXRfbW9uaXRv cl9hdF9wb2ludChtX2N1cnNvcl9sb2NhdGlvbi54LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY3Vyc29yX2xvY2F0aW9uLnkpOworKyAg ICAgICAgc2NyZWVuLmdldF9tb25pdG9yX2dlb21ldHJ5KG1vbml0b3JfbnVtLCBvdXQgbW9uaXRv cl9hcmVhKTsKKysjZW5kaWYKKysgICAgICAgIHJldHVybiBtb25pdG9yX2FyZWE7CisrICAgIH0K ICsKLSsvKioKLSsgKiBpYnVzX2ZvbnRzZXRfbmV3X3dpdGhfZm9udDoKLSsgKiBAZmFtaWx5OiBm b250IGZhbWlseQotKyAqIEBzaXplOiBmb250IHNpemUKLSsgKiBAbGFuZ3VhZ2U6IGZvbnQgbGFu Z3VhZ2UKLSsgKgotKyAqIENyZWF0ZXMgIGEgbmV3ICNJQnVzRmNGb250U2V0LgotKyAqCi0rICog UmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIG5ld2x5IGFsbG9jYXRlZCAjSUJ1c0ZjRm9udFNl dCBhbmQgaW5jbHVkZXMKLSsgKiAjRmNGb250U2V0IGludGVybmFsbHkuCi0rICovCi0rSUJ1c0Zv bnRTZXQgKiAgIGlidXNfZm9udHNldF9uZXdfd2l0aF9mb250ICAgICAgKGNvbnN0IGdjaGFyICAg ICpmYW1pbHksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGd1aW50ICAgICAgICAgICBzaXplLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAqbGFuZ3VhZ2UpOwotKy8qKgotKyAq IGlidXNfZm9udHNldF9nZXRfZmFtaWx5OgotKyAqIEBmb250c2V0OiAjSUJ1c0ZjRm9udFNldAot KyAqCi0rICogUmV0dXJuIHRoZSBiYXNlIGZvbnQgZmFtaWx5IG9mICNGY0ZvbnRTZXQKLSsgKgot KyAqIFJldHVybnM6IEJhc2UgZm9udCBmYW1pbHkgb2YgI0ZjRm9udFNldAotKyAqLwotK2NvbnN0 IGdjaGFyICogICBpYnVzX2ZvbnRzZXRfZ2V0X2ZhbWlseSAgICAgICAgIChJQnVzRm9udFNldCAg ICAqZm9udHNldCk7CisgICAgIHByaXZhdGUgdm9pZCBhZGp1c3Rfd2luZG93X3Bvc2l0aW9uX2hv cml6b250YWwoKSB7CisgICAgICAgICBHZGsuUG9pbnQgY3Vyc29yX3JpZ2h0X2JvdHRvbSA9IHsK KyAgICAgICAgICAgICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueCArIG1fY3Vyc29yX2xvY2F0aW9u LndpZHRoLAorQEAgLTMwNSwxNCArMzI1LDcgQEAgcHVibGljIGNsYXNzIENhbmRpZGF0ZVBhbmVs IDogR3RrLkJveHsKKyAgICAgICAgICAgICBjdXJzb3JfcmlnaHRfYm90dG9tLnkgKyBhbGxvY2F0 aW9uLmhlaWdodAorICAgICAgICAgfTsKKyAKKy0gICAgICAgIEdkay5TY3JlZW4gc2NyZWVuID0g R2RrLlNjcmVlbi5nZXRfZGVmYXVsdCgpOworLSAgICAgICAgaW50IG1vbml0b3JfbnVtID0gc2Ny ZWVuLmdldF9tb25pdG9yX2F0X3BvaW50KG1fY3Vyc29yX2xvY2F0aW9uLngsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJzb3JfbG9j YXRpb24ueSk7CistICAgICAgICAvLyBVc2UgZ2V0X21vbml0b3JfZ2VvbWV0cnkoKSBpbnN0ZWFk IG9mIGdldF9tb25pdG9yX2FyZWEoKS4KKy0gICAgICAgIC8vIGdldF9tb25pdG9yX2FyZWEoKSBl eGNsdWRlcyBkb2NrcywgYnV0IHRoZSBsb29rdXAgd2luZG93IHNob3VsZCBiZQorLSAgICAgICAg Ly8gc2hvd24gb3ZlciB0aGVtLgorLSAgICAgICAgR2RrLlJlY3RhbmdsZSBtb25pdG9yX2FyZWE7 CistICAgICAgICBzY3JlZW4uZ2V0X21vbml0b3JfZ2VvbWV0cnkobW9uaXRvcl9udW0sIG91dCBt b25pdG9yX2FyZWEpOworKyAgICAgICAgR2RrLlJlY3RhbmdsZSBtb25pdG9yX2FyZWEgPSBnZXRf bW9uaXRvcl9nZW9tZXRyeSgpOworICAgICAgICAgaW50IG1vbml0b3JfcmlnaHQgPSBtb25pdG9y X2FyZWEueCArIG1vbml0b3JfYXJlYS53aWR0aDsKKyAgICAgICAgIGludCBtb25pdG9yX2JvdHRv bSA9IG1vbml0b3JfYXJlYS55ICsgbW9uaXRvcl9hcmVhLmhlaWdodDsKKyAKK0BAIC0zNTgsMTQg KzM3MSw3IEBAIHB1YmxpYyBjbGFzcyBDYW5kaWRhdGVQYW5lbCA6IEd0ay5Cb3h7CisgICAgICAg ICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueSArIGFsbG9jYXRpb24uaGVpZ2h0CisgICAgICAgICB9 OworIAorLSAgICAgICAgR2RrLlNjcmVlbiBzY3JlZW4gPSBHZGsuU2NyZWVuLmdldF9kZWZhdWx0 KCk7CistICAgICAgICBpbnQgbW9uaXRvcl9udW0gPSBzY3JlZW4uZ2V0X21vbml0b3JfYXRfcG9p bnQobV9jdXJzb3JfbG9jYXRpb24ueCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnNvcl9sb2NhdGlvbi55KTsKKy0gICAgICAgIC8v IFVzZSBnZXRfbW9uaXRvcl9nZW9tZXRyeSgpIGluc3RlYWQgb2YgZ2V0X21vbml0b3JfYXJlYSgp LgorLSAgICAgICAgLy8gZ2V0X21vbml0b3JfYXJlYSgpIGV4Y2x1ZGVzIGRvY2tzLCBidXQgdGhl IGxvb2t1cCB3aW5kb3cgc2hvdWxkIGJlCistICAgICAgICAvLyBzaG93biBvdmVyIHRoZW0uCist ICAgICAgICBHZGsuUmVjdGFuZ2xlIG1vbml0b3JfYXJlYTsKKy0gICAgICAgIHNjcmVlbi5nZXRf bW9uaXRvcl9nZW9tZXRyeShtb25pdG9yX251bSwgb3V0IG1vbml0b3JfYXJlYSk7CisrICAgICAg ICBHZGsuUmVjdGFuZ2xlIG1vbml0b3JfYXJlYSA9IGdldF9tb25pdG9yX2dlb21ldHJ5KCk7Cisg ICAgICAgICBpbnQgbW9uaXRvcl9yaWdodCA9IG1vbml0b3JfYXJlYS54ICsgbW9uaXRvcl9hcmVh LndpZHRoOworICAgICAgICAgaW50IG1vbml0b3JfYm90dG9tID0gbW9uaXRvcl9hcmVhLnkgKyBt b25pdG9yX2FyZWEuaGVpZ2h0OworIAorZGlmZiAtLWdpdCBhL3VpL2d0azMvZW1vamllci52YWxh IGIvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKK2luZGV4IDM2YWI0YmFiLi45Y2Q5ODE0MCAxMDA2NDQK Ky0tLSBhL3VpL2d0azMvZW1vamllci52YWxhCisrKysgYi91aS9ndGszL2Vtb2ppZXIudmFsYQor QEAgLTU3NSw3ICs1NzUsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldp bmRvdyB7CisgICAgICAgICBpZiAobGFuZyA9PSAiZW4iKSB7CisgICAgICAgICAgICAgYm9vbCBo YXNfdmFyaWFudCA9IGZhbHNlOworICAgICAgICAgICAgIGZvcmVhY2ggKHVuaWNoYXIgY2ggaW4g RU1PSklfVkFSSUFOVF9MSVNUKSB7CistICAgICAgICAgICAgICAgIGlmIChlbW9qaS5jaHIoLTEs IGNoKSAhPSBudWxsKSB7CisrICAgICAgICAgICAgICAgIGlmIChlbW9qaS5pbmRleF9vZl9jaGFy KGNoKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICBoYXNfdmFyaWFudCA9IHRydWU7Cisg ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorQEAgLTc4Miwx NSArNzgyLDE3IEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsK KyAgICAgcHJpdmF0ZSBib29sIGNoZWNrX3VuaWNvZGVfcG9pbnQoKSB7CisgICAgICAgICBzdHJp bmcgYW5ub3RhdGlvbiA9IG1fZW50cnkuZ2V0X3RleHQoKTsKKyAgICAgICAgIG1fdW5pY29kZV9w b2ludCA9IG51bGw7CistICAgICAgICB2YXIgYnVmZiA9IG5ldyBHTGliLlN0cmluZ0J1aWxkZXIo KTsKKysgICAgICAgIC8vIEFkZCAiMHgiIGJlY2F1c2UgdWludDY0LmFzY2lpX3N0cnRvdWxsKCkg aXMgbm90IGFjY2Vzc2libGUKKysgICAgICAgIC8vIGFuZCBuZWVkIHRvIHVzZSB1aW50NjQucGFy c2UoKQorKyAgICAgICAgdmFyIGJ1ZmYgPSBuZXcgR0xpYi5TdHJpbmdCdWlsZGVyKCIweCIpOwor ICAgICAgICAgdmFyIHJldHZhbCA9IG5ldyBHTGliLlN0cmluZ0J1aWxkZXIoKTsKKyAgICAgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgYW5ub3RhdGlvbi5jaGFyX2NvdW50KCk7IGkrKykgeworICAg ICAgICAgICAgIHVuaWNoYXIgY2ggPSBhbm5vdGF0aW9uLmdldF9jaGFyKGkpOworICAgICAgICAg ICAgIGlmIChjaCA9PSAwKQorICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg ICAgICAgaWYgKGNoLmlzc3BhY2UoKSkgeworLSAgICAgICAgICAgICAgICB1bmljaGFyIGNvZGUg PSAodW5pY2hhcilidWZmLnN0ci50b191bG9uZyhudWxsLCAxNik7CistICAgICAgICAgICAgICAg IGJ1ZmYuZXJhc2UoKTsKKysgICAgICAgICAgICAgICAgdW5pY2hhciBjb2RlID0gKHVuaWNoYXIp dWludDY0LnBhcnNlKGJ1ZmYuc3RyKTsKKysgICAgICAgICAgICAgICAgYnVmZi5hc3NpZ24oIjB4 Iik7CisgICAgICAgICAgICAgICAgIGlmICghY29kZS52YWxpZGF0ZSgpKQorICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICByZXR2YWwuYXBwZW5kKGNv ZGUudG9fc3RyaW5nKCkpOworQEAgLTgwMCw3ICs4MDIsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6 IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgICAgICAgICBidWZmLmFwcGVuZF91bmljaGFyKGNoKTsKKyAgICAgICAgIH0KKy0gICAg ICAgIHVuaWNoYXIgY29kZSA9ICh1bmljaGFyKWJ1ZmYuc3RyLnRvX3Vsb25nKG51bGwsIDE2KTsK KysgICAgICAgIHVuaWNoYXIgY29kZSA9ICh1bmljaGFyKXVpbnQ2NC5wYXJzZShidWZmLnN0cik7 CisgICAgICAgICBpZiAoIWNvZGUudmFsaWRhdGUoKSkKKyAgICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICByZXR2YWwuYXBwZW5kKGNvZGUudG9fc3RyaW5nKCkpOworQEAgLTgzNCw3 ICs4MzYsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IHRydWU7CisgICAgICAgICAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgY2FzZSAyOgorLSAgICAgICAgICAgICAgICAg ICAgaWYgKGtleS5zdHIoYW5ub3RhdGlvbikgIT0gbnVsbCkKKysgICAgICAgICAgICAgICAgICAg IGlmIChrZXkuaW5kZXhfb2YoYW5ub3RhdGlvbikgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICBtYXRjaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgICAgICAgICBkZWZhdWx0OgorQEAgLTE1ODYsMTAgKzE1ODgsMTYgQEAgY2xhc3MgSUJ1c0Vt b2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICBwdWJsaWMgdm9pZCBwcmVzZW50 X2NlbnRyYWxpemUoR2RrLkV2ZW50IGV2ZW50KSB7CisgICAgICAgICBHdGsuQWxsb2NhdGlvbiBh bGxvY2F0aW9uOworICAgICAgICAgZ2V0X2FsbG9jYXRpb24ob3V0IGFsbG9jYXRpb24pOworLSAg ICAgICAgR2RrLlNjcmVlbiBzY3JlZW4gPSBHZGsuU2NyZWVuLmdldF9kZWZhdWx0KCk7CistICAg ICAgICBpbnQgbW9uaXRvcl9udW0gPSBzY3JlZW4uZ2V0X21vbml0b3JfYXRfd2luZG93KGdldF93 aW5kb3coKSk7CisgICAgICAgICBHZGsuUmVjdGFuZ2xlIG1vbml0b3JfYXJlYTsKKysjaWYgVkFM QV8wXzM0CisrICAgICAgICBHZGsuRGlzcGxheSBkaXNwbGF5ID0gR2RrLkRpc3BsYXkuZ2V0X2Rl ZmF1bHQoKTsKKysgICAgICAgIEdkay5Nb25pdG9yIG1vbml0b3IgPSBkaXNwbGF5LmdldF9tb25p dG9yX2F0X3dpbmRvdyh0aGlzLmdldF93aW5kb3coKSk7CisrICAgICAgICBtb25pdG9yX2FyZWEg PSBtb25pdG9yLmdldF9nZW9tZXRyeSgpOworKyNlbHNlCisrICAgICAgICBHZGsuU2NyZWVuIHNj cmVlbiA9IEdkay5TY3JlZW4uZ2V0X2RlZmF1bHQoKTsKKysgICAgICAgIGludCBtb25pdG9yX251 bSA9IHNjcmVlbi5nZXRfbW9uaXRvcl9hdF93aW5kb3codGhpcy5nZXRfd2luZG93KCkpOworICAg ICAgICAgc2NyZWVuLmdldF9tb25pdG9yX2dlb21ldHJ5KG1vbml0b3JfbnVtLCBvdXQgbW9uaXRv cl9hcmVhKTsKKysjZW5kaWYKKyAgICAgICAgIGludCB4ID0gKG1vbml0b3JfYXJlYS54ICsgbW9u aXRvcl9hcmVhLndpZHRoIC0gYWxsb2NhdGlvbi53aWR0aCkvMjsKKyAgICAgICAgIGludCB5ID0g KG1vbml0b3JfYXJlYS55ICsgbW9uaXRvcl9hcmVhLmhlaWdodAorICAgICAgICAgICAgICAgICAg LSBhbGxvY2F0aW9uLmhlaWdodCkvMjsKK2RpZmYgLS1naXQgYS91aS9ndGszL2hhbmRsZS52YWxh IGIvdWkvZ3RrMy9oYW5kbGUudmFsYQoraW5kZXggYmVmNWU4YmEuLmZjOTE2NGEwIDEwMDY0NAor LS0tIGEvdWkvZ3RrMy9oYW5kbGUudmFsYQorKysrIGIvdWkvZ3RrMy9oYW5kbGUudmFsYQorQEAg LTMsNyArMyw3IEBACisgICogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKKyAgKgorICAqIENvcHlyaWdo dChjKSAyMDExLTIwMTYgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+CistICog Q29weXJpZ2h0KGMpIDIwMTYgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5j b20+CisrICogQ29weXJpZ2h0KGMpIDIwMTYtMjAxNyBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVq aXdhcmExQGdtYWlsLmNvbT4KKyAgKgorICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCitAQCAtNTksNyArNTksNiBA QCBjbGFzcyBIYW5kbGUgOiBHdGsuRXZlbnRCb3ggeworIAorICAgICBwdWJsaWMgb3ZlcnJpZGUg dm9pZCByZWFsaXplKCkgeworICAgICAgICAgYmFzZS5yZWFsaXplKCk7CistICAgICAgICAvLyBn ZXRfd2luZG93KCkuc2V0X2N1cnNvcihuZXcgR2RrLkN1cnNvcihHZGsuQ3Vyc29yVHlwZS5GTEVV UikpOworICAgICB9CisgCisgICAgIHB1YmxpYyBvdmVycmlkZSBib29sIGJ1dHRvbl9wcmVzc19l dmVudChHZGsuRXZlbnRCdXR0b24gZXZlbnQpIHsKK0BAIC0xMzgsNyArMTM3LDkgQEAgY2xhc3Mg SGFuZGxlIDogR3RrLkV2ZW50Qm94IHsKKyAgICAgICAgIG1fbW92ZV9iZWdpbmVkID0gZmFsc2U7 CisgICAgICAgICBtX3ByZXNzX3Bvcy54ID0gMDsKKyAgICAgICAgIG1fcHJlc3NfcG9zLnkgPSAw OworLSAgICAgICAgZ2V0X3dpbmRvdygpLnNldF9jdXJzb3IobmV3IEdkay5DdXJzb3IoR2RrLkN1 cnNvclR5cGUuTEVGVF9QVFIpKTsKKysgICAgICAgIGdldF93aW5kb3coKS5zZXRfY3Vyc29yKG5l dyBHZGsuQ3Vyc29yLmZvcl9kaXNwbGF5KAorKyAgICAgICAgICAgICAgICAgICBHZGsuRGlzcGxh eS5nZXRfZGVmYXVsdCgpLAorKyAgICAgICAgICAgICAgICAgICBHZGsuQ3Vyc29yVHlwZS5GTEVV UikpOworICAgICAgICAgbW92ZV9lbmQoKTsKKyAgICAgICAgIHJldHVybiB0cnVlOworICAgICB9 CitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9pbmRpY2F0b3IudmFsYSBiL3VpL2d0azMvaW5kaWNhdG9y LnZhbGEKK2luZGV4IGRhYzcyYjQ5Li40ZDExMWE2NCAxMDA2NDQKKy0tLSBhL3VpL2d0azMvaW5k aWNhdG9yLnZhbGEKKysrKyBiL3VpL2d0azMvaW5kaWNhdG9yLnZhbGEKK0BAIC0yLDcgKzIsNyBA QAorICAqCisgICogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKKyAgKgorLSAqIENvcHlyaWdodChjKSAy MDE1IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorKyAqIENvcHly aWdodChjKSAyMDE1LTIwMTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5j b20+CisgICogQ29weXJpZ2h0KGMpIDIwMTUgUmVkIEhhdCwgSW5jLgorICAqCisgICogVGhpcyBs aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor QEAgLTk3LDYgKzk3LDcgQEAgY2xhc3MgSW5kaWNhdG9yIDogSUJ1cy5TZXJ2aWNlCisgICAgIHBy aXZhdGUgaW50IG1fY29udGV4dF9tZW51X3k7CisgICAgIHByaXZhdGUgaW50IG1fYWN0aXZhdGVf bWVudV94OworICAgICBwcml2YXRlIGludCBtX2FjdGl2YXRlX21lbnVfeTsKKysgICAgcHJpdmF0 ZSBHZGsuV2luZG93IG1faW5kaWNhdG9yX3dpbmRvdzsKKyAKKyAgICAgcHVibGljIEluZGljYXRv cihzdHJpbmcgaWQsCisgICAgICAgICAgICAgICAgICAgICAgR0xpYi5EQnVzQ29ubmVjdGlvbiBj b25uZWN0aW9uLAorQEAgLTIwNiw3ICsyMDcsOCBAQCBjbGFzcyBJbmRpY2F0b3IgOiBJQnVzLlNl cnZpY2UKKyAgICAgICAgIEdMaWIuVmFyaWFudCB2YXJfeSA9IHBhcmFtZXRlcnMuZ2V0X2NoaWxk X3ZhbHVlKDEpOworICAgICAgICAgbV9jb250ZXh0X21lbnVfeCA9IHZhcl94LmdldF9pbnQzMigp OworICAgICAgICAgbV9jb250ZXh0X21lbnVfeSA9IHZhcl95LmdldF9pbnQzMigpOworLSAgICAg ICAgY29udGV4dF9tZW51KDIsIDApOworKyAgICAgICAgR2RrLldpbmRvdyB3aW5kb3cgPSBxdWVy eV9nZGtfd2luZG93KCk7CisrICAgICAgICBjb250ZXh0X21lbnUobV9jb250ZXh0X21lbnVfeCwg bV9jb250ZXh0X21lbnVfeSwgd2luZG93LCAyLCAwKTsKKyAgICAgfQorIAorICAgICBwcml2YXRl IHZvaWQgX2FjdGl2YXRlX21lbnVfY2IoR0xpYi5EQnVzQ29ubmVjdGlvbiAgICAgICBjb25uZWN0 aW9uLAorQEAgLTIxNiw3ICsyMTgsNTcgQEAgY2xhc3MgSW5kaWNhdG9yIDogSUJ1cy5TZXJ2aWNl CisgICAgICAgICBHTGliLlZhcmlhbnQgdmFyX3kgPSBwYXJhbWV0ZXJzLmdldF9jaGlsZF92YWx1 ZSgxKTsKKyAgICAgICAgIG1fYWN0aXZhdGVfbWVudV94ID0gdmFyX3guZ2V0X2ludDMyKCk7Cisg ICAgICAgICBtX2FjdGl2YXRlX21lbnVfeSA9IHZhcl95LmdldF9pbnQzMigpOworLSAgICAgICAg YWN0aXZhdGUoKTsKKysgICAgICAgIEdkay5XaW5kb3cgd2luZG93ID0gcXVlcnlfZ2RrX3dpbmRv dygpOworKyAgICAgICAgYWN0aXZhdGUobV9hY3RpdmF0ZV9tZW51X3gsIG1fYWN0aXZhdGVfbWVu dV95LCB3aW5kb3cpOworKyAgICB9CiArCi0rLyoqCi0rICogaWJ1c19mb250c2V0X3NldF9mYW1p bHk6Ci0rICogQGZvbnRzZXQ6ICNJQnVzRmNGb250U2V0Ci0rICogQGZhbWlseTogYmFzZSBmb250 IGZhbWlseSBmb3IgI0ZjRm9udFNldAotKyAqCi0rICogU2V0IHRoZSBiYXNlIGZvbnQgZmFtaWx5 IGZvciAjRmNGb250U2V0Ci0rICovCi0rdm9pZCAgICAgICAgICAgIGlidXNfZm9udHNldF9zZXRf ZmFtaWx5ICAgICAgICAgKElCdXNGb250U2V0ICAgICpmb250c2V0LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAqZmFtaWx5 KTsKLSsvKioKLSsgKiBpYnVzX2ZvbnRzZXRfZ2V0X3NpemU6Ci0rICogQGZvbnRzZXQ6ICNJQnVz RmNGb250U2V0Ci0rICoKLSsgKiBSZXR1cm4gdGhlIGZvbnQgc2l6ZSBvZiAjRmNGb250U2V0Ci0r ICoKLSsgKiBSZXR1cm5zOiBGb250IHNpemUgb2YgI0ZjRm9udFNldAotKyAqLwotK2d1aW50ICAg ICAgICAgICBpYnVzX2ZvbnRzZXRfZ2V0X3NpemUgICAgICAgICAgIChJQnVzRm9udFNldCAgICAq Zm9udHNldCk7CisrICAgIHByaXZhdGUgR2RrLldpbmRvdz8gcXVlcnlfZ2RrX3dpbmRvdygpIHsK KysgICAgICAgIGlmIChtX2luZGljYXRvcl93aW5kb3cgIT0gbnVsbCkKKysgICAgICAgICAgICBy ZXR1cm4gbV9pbmRpY2F0b3Jfd2luZG93OworKworKyAgICAgICAgR2RrLkRpc3BsYXkgZGlzcGxh eSA9IEdkay5EaXNwbGF5LmdldF9kZWZhdWx0KCk7CisrICAgICAgICB1bm93bmVkIFguRGlzcGxh eSB4ZGlzcGxheSA9CisrICAgICAgICAgICAgICAgIChkaXNwbGF5IGFzIEdkay5YMTEuRGlzcGxh eSkuZ2V0X3hkaXNwbGF5KCk7CisrICAgICAgICBYLldpbmRvdyBjdXJyZW50ID0geGRpc3BsYXku ZGVmYXVsdF9yb290X3dpbmRvdygpOworKyAgICAgICAgWC5XaW5kb3cgcGFyZW50ID0gMDsKKysg ICAgICAgIFguV2luZG93IGNoaWxkID0gMDsKKysgICAgICAgIGludCByb290X3gsIHJvb3RfeSwg d2luX3gsIHdpbl95OworKyAgICAgICAgdWludCBtYXNrID0gMDsKKysgICAgICAgIHJvb3RfeCA9 IHJvb3RfeSA9IHdpbl94ID0gd2luX3kgPSAwOworKyAgICAgICAgYm9vbCByZXR2YWw7CisrICAg ICAgICAvLyBOZWVkIFhTZXRFcnJvckhhbmRsZXIgZm9yIEJhZFdpbmRvdz8KKysgICAgICAgIHdo aWxlICgocmV0dmFsID0geGRpc3BsYXkucXVlcnlfcG9pbnRlcihjdXJyZW50LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IHBhcmVudCwgb3V0IGNoaWxkLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IHJvb3RfeCwgb3V0IHJvb3Rf eSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCB3aW5feCwgb3V0 IHdpbl95LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IG1hc2sp KSkgeworKyAgICAgICAgICAgIGlmIChjaGlsZCA9PSAwKQorKyAgICAgICAgICAgICAgICBicmVh azsKKysgICAgICAgICAgICBjdXJyZW50ID0gY2hpbGQ7CisrICAgICAgICB9CisrICAgICAgICBp ZiAoIXJldHZhbCkgeworKyAgICAgICAgICAgIHN0cmluZyBmb3JtYXQgPQorKyAgICAgICAgICAg ICAgICAgICAgIlhRdWVyeVBvaW50ZXIgaXMgZmFpbGVkOiBjdXJyZW50OiAleCByb290OiAleCAi ICsKKysgICAgICAgICAgICAgICAgICAgICJjaGlsZDogJXggKCVkLCAlZCksICglZCwgJWQpLCAl dSI7CisrICAgICAgICAgICAgc3RyaW5nIG1lc3NhZ2UgPSBmb3JtYXQucHJpbnRmKCh1aW50KWN1 cnJlbnQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50 KXhkaXNwbGF5LmRlZmF1bHRfcm9vdF93aW5kb3coKSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHVpbnQpY2hpbGQsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJvb3RfeCwgcm9vdF95LCB3aW5feCwgd2luX3ksCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2spOworKyAgICAgICAg ICAgIHdhcm5pbmcoIlhRdWVyeVBvaW50ZXIgaXMgZmFpbGVkOiAlcyIsIG1lc3NhZ2UpOworKyAg ICAgICAgICAgIHJldHVybiBudWxsOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKGN1cnJlbnQg PT0geGRpc3BsYXkuZGVmYXVsdF9yb290X3dpbmRvdygpKQorKyAgICAgICAgICAgIHdhcm5pbmco IlRoZSBxdWVyeSB3aW5kb3cgaXMgcm9vdCB3aW5kb3ciKTsKKysgICAgICAgIG1faW5kaWNhdG9y X3dpbmRvdyA9IEdkay5YMTEuV2luZG93Lmxvb2t1cF9mb3JfZGlzcGxheSgKKysgICAgICAgICAg ICAgICAgZGlzcGxheSBhcyBHZGsuWDExLkRpc3BsYXksCisrICAgICAgICAgICAgICAgIGN1cnJl bnQpOworKyAgICAgICAgaWYgKG1faW5kaWNhdG9yX3dpbmRvdyAhPSBudWxsKQorKyAgICAgICAg ICAgIHJldHVybiBtX2luZGljYXRvcl93aW5kb3c7CisrICAgICAgICBtX2luZGljYXRvcl93aW5k b3cgPSBuZXcgR2RrLlgxMS5XaW5kb3cuZm9yZWlnbl9mb3JfZGlzcGxheSgKKysgICAgICAgICAg ICAgICAgZGlzcGxheSBhcyBHZGsuWDExLkRpc3BsYXksCisrICAgICAgICAgICAgICAgIGN1cnJl bnQpOworKyAgICAgICAgcmV0dXJuIG1faW5kaWNhdG9yX3dpbmRvdzsKKyAgICAgfQorIAorICAg ICBwcml2YXRlIEdMaWIuVmFyaWFudD8gX2dldF9pZChHTGliLkRCdXNDb25uZWN0aW9uIGNvbm5l Y3Rpb24pIHsKK0BAIC00NzksNyArNTMxLDEzIEBAIGNsYXNzIEluZGljYXRvciA6IElCdXMuU2Vy dmljZQorICAgICAgICAgcHVzaF9pbiA9IGZhbHNlOworICAgICB9CisgCistICAgIHB1YmxpYyBz aWduYWwgdm9pZCBjb250ZXh0X21lbnUodWludCBidXR0b24sIHVpbnQgYWN0aXZhdGVfdGltZSk7 CistICAgIHB1YmxpYyBzaWduYWwgdm9pZCBhY3RpdmF0ZSgpOworKyAgICBwdWJsaWMgc2lnbmFs IHZvaWQgY29udGV4dF9tZW51KGludCAgICAgICAgeCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgICAgICAgIHksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR2RrLldpbmRvdyB3aW5kb3csCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludCAgICAgICBidXR0b24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludCAgICAgICBhY3RpdmF0ZV90aW1lKTsKKysgICAgcHVibGljIHNpZ25hbCB2 b2lkIGFjdGl2YXRlKGludCAgICAgICAgeCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCAgICAgICAgeSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkay5X aW5kb3cgd2luZG93KTsKKyAgICAgcHVibGljIHNpZ25hbCB2b2lkIHJlZ2lzdGVyZWRfc3RhdHVz X25vdGlmaWVyX2l0ZW0oKTsKKyB9CitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9rZXliaW5kaW5nbWFu YWdlci52YWxhIGIvdWkvZ3RrMy9rZXliaW5kaW5nbWFuYWdlci52YWxhCitpbmRleCA0OTAxM2I4 ZC4uYzhiMWU3ZjYgMTAwNjQ0CistLS0gYS91aS9ndGszL2tleWJpbmRpbmdtYW5hZ2VyLnZhbGEK KysrKyBiL3VpL2d0azMva2V5YmluZGluZ21hbmFnZXIudmFsYQorQEAgLTE4LDcgKzE4LDcgQEAg cHVibGljIGNsYXNzIEtleWJpbmRpbmdNYW5hZ2VyIDogR0xpYi5PYmplY3QgeworIAorICAgICBw cml2YXRlIHN0YXRpYyBLZXliaW5kaW5nTWFuYWdlciBtX2luc3RhbmNlID0gbnVsbDsKKyAKKy0g ICAgcHVibGljIHN0YXRpYyBjb25zdCB1aW50IE1PRElGSUVSX0ZJTFRFUiA9CisrICAgIHB1Ymxp YyBjb25zdCB1aW50IE1PRElGSUVSX0ZJTFRFUiA9CisgICAgICAgICBHZGsuTW9kaWZpZXJUeXBl Lk1PRElGSUVSX01BU0sgJiB+KAorICAgICAgICAgR2RrLk1vZGlmaWVyVHlwZS5MT0NLX01BU0sg fCAgLy8gQ2FwcyBMb2NrCisgICAgICAgICAvLyBHZGsuTW9kaWZpZXJUeXBlLk1PRDFfTUFTSyB8 ICAvLyBBbHQKK2RpZmYgLS1naXQgYS91aS9ndGszL3BhbmVsLnZhbGEgYi91aS9ndGszL3BhbmVs LnZhbGEKK2luZGV4IGJmNDNjYmY5Li42MjlkYWRjZSAxMDA2NDQKKy0tLSBhL3VpL2d0azMvcGFu ZWwudmFsYQorKysrIGIvdWkvZ3RrMy9wYW5lbC52YWxhCitAQCAtMjY3LDYgKzI2NywyNyBAQCBj bGFzcyBQYW5lbCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAgICAgIH0pOworICAgICB9Cisg CisrICAgIHByaXZhdGUgdm9pZCBwb3B1cF9tZW51X2F0X2FyZWFfd2luZG93KEd0ay5NZW51ICAg ICAgICAgICAgICBtZW51LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHZGsuUmVjdGFuZ2xlICAgICAgICAgYXJlYSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR2RrLldpbmRvdz8gICAgICAgICAgIHdpbmRvdywKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrLk1lbnVQb3NpdGlvbkZ1 bmM/IGZ1bmMpIHsKKysjaWYgVkFMQV8wXzM0CisrICAgICAgICBHZGsuR3Jhdml0eSByZWN0X2Fu Y2hvciA9IEdkay5HcmF2aXR5LlNPVVRIX1dFU1Q7CisrICAgICAgICBHZGsuR3Jhdml0eSBtZW51 X2FuY2hvciA9IEdkay5HcmF2aXR5Lk5PUlRIX1dFU1Q7CisrCisrICAgICAgICAvLyBHdGsuTWVu dS5wb3B1cCgpIGlzIG5vdyBkZXByZWNhdGVkIGJ1dAorKyAgICAgICAgLy8gR3RrLk1lbnUucG9w dXBfYXRfcmVjdCgpIHJlcXVpcmVzIGEgR2RrLldpbmRvdyBhbmQKKysgICAgICAgIC8vIEd0ay5N ZW51LnBvcHVwX2F0X3JlY3QoKSBvdXRwdXRzIGEgd2FybmluZyBvZgorKyAgICAgICAgLy8gIm5v IHRyaWdnZXIgZXZlbnQgZm9yIG1lbnUgcG9wdXAiCisrICAgICAgICAvLyBmb3IgdGhlIGZvcmVp Z25lciBRVCB3aW5kb3cgd2hpY2ggaXMgZ2VuZXJhdGVkIGJ5CisrICAgICAgICAvLyBHZGsuWDEx LldpbmRvdy5mb3JlaWduX2Zvcl9kaXNwbGF5LgorKyAgICAgICAgLy8gaHR0cHM6Ly9naXQuZ25v bWUub3JnL2Jyb3dzZS9ndGsrL3RyZWUvZ3RrL2d0a21lbnUuYz9oPWd0ay0zLTIyI24yMjUxCisr ICAgICAgICBtZW51LnBvcHVwX2F0X3JlY3Qod2luZG93LCBhcmVhLCByZWN0X2FuY2hvciwgbWVu dV9hbmNob3IsIG51bGwpOworKyNlbHNlCisrICAgICAgICBtZW51LnBvcHVwKG51bGwsIG51bGws IGZ1bmMsIDAsIEd0ay5nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOworKyNlbmRpZgorKyAgICB9 CiArCi0rLyoqCi0rICogaWJ1c19mb250c2V0X3NldF9zaXplOgotKyAqIEBmb250c2V0OiAjSUJ1 c0ZjRm9udFNldAotKyAqIEBzaXplOiBmb250IHNpemUgZm9yICNGY0ZvbnRTZXQKLSsgKgotKyAq IFNldCB0aGUgZm9udCBzaXplIGZvciAjRmNGb250U2V0Ci0rICovCi0rdm9pZCAgICAgICAgICAg IGlidXNfZm9udHNldF9zZXRfc2l6ZSAgICAgICAgICAgKElCdXNGb250U2V0ICAgICpmb250c2V0 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu dCAgICAgICAgICAgc2l6ZSk7Ci0rLyoqCi0rICogaWJ1c19mb250c2V0X2dldF9sYW5ndWFnZToK LSsgKiBAZm9udHNldDogI0lCdXNGY0ZvbnRTZXQKLSsgKgotKyAqIFJldHVybiB0aGUgZm9udCBs YW5ndWFnZSBvZiAjRmNGb250U2V0Ci0rICoKLSsgKiBSZXR1cm5zOiBGb250IGxhbmd1YWdlIG9m ICNGY0ZvbnRTZXQKLSsgKi8KLStjb25zdCBnY2hhciAqICAgaWJ1c19mb250c2V0X2dldF9sYW5n dWFnZSAgICAgICAoSUJ1c0ZvbnRTZXQgICAgKmZvbnRzZXQpOworICNpZiBJTkRJQ0FUT1IKKyAg ICAgcHJpdmF0ZSBib29sIGlzX2tkZSgpIHsKKyAgICAgICAgIGlmIChFbnZpcm9ubWVudC5nZXRf dmFyaWFibGUoIlhER19DVVJSRU5UX0RFU0tUT1AiKSA9PSAiS0RFIikKK0BAIC0yNzYsNiArMjk3 LDE5IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgeworICAgICAgICAgcmV0dXJu IGZhbHNlOworICAgICB9CisgCisrICAgIHByaXZhdGUgdm9pZCBwb3B1cF9tZW51X2F0X3BvaW50 ZXJfd2luZG93KEd0ay5NZW51ICAgICAgICAgICAgICBtZW51LAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgeCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAg ICAgICAgICAgIHksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdkay5XaW5kb3c/ICAgICAgICAgICB3aW5kb3csCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5NZW51UG9zaXRpb25GdW5jPyBmdW5jKSB7Cisr ICAgICAgICBpbnQgd2luX3ggPSAwOworKyAgICAgICAgaW50IHdpbl95ID0gMDsKKysgICAgICAg IHdpbmRvdy5nZXRfb3JpZ2luKG91dCB3aW5feCwgb3V0IHdpbl95KTsKKysgICAgICAgIEdkay5S ZWN0YW5nbGUgYXJlYSA9IHsgeCAtIHdpbl94LCB5IC0gd2luX3ksIDEsIDEgfTsKKysgICAgICAg IC8vIHdpbmRvdyBpcyBhIGJvdHRvbSB3aWRlIHBhbmVsIGluc3RlYWQgb2Ygc3RhdHVzIGljb24K KysgICAgICAgIHBvcHVwX21lbnVfYXRfYXJlYV93aW5kb3cobWVudSwgYXJlYSwgd2luZG93LCBm dW5jKTsKKysgICAgfQogKwotKy8qKgotKyAqIGlidXNfZm9udHNldF9zZXRfbGFuZ3VhZ2U6Ci0r ICogQGZvbnRzZXQ6ICNJQnVzRmNGb250U2V0Ci0rICogQGxhbmd1YWdlOiBmb250IGxhbmdhdWdl IGZvciAjRmNGb250U2V0Ci0rICoKLSsgKiBTZXQgdGhlIGZvbnQgbGFuZ3VhZ2UgZm9yICNGY0Zv bnRTZXQKLSsgKi8KLSt2b2lkICAgICAgICAgICAgaWJ1c19mb250c2V0X3NldF9sYW5ndWFnZSAg ICAgICAoSUJ1c0ZvbnRTZXQgICAgKmZvbnRzZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICpsYW5ndWFnZSk7CisgICAg IHByaXZhdGUgdm9pZCBpbml0X2luZGljYXRvcigpIHsKKyAgICAgICAgIG1faWNvbl90eXBlID0g SWNvblR5cGUuSU5ESUNBVE9SOworICAgICAgICAgR0xpYi5CdXMuZ2V0LmJlZ2luKEdMaWIuQnVz VHlwZS5TRVNTSU9OLCBudWxsLCAob2JqLCByZXMpID0+IHsKK0BAIC0yOTAsMjEgKzMyNCwxNyBA QCBjbGFzcyBQYW5lbCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAgICAgICAgICAgICAgICAg IG1faW5kaWNhdG9yLnNldF9zdGF0dXMoSW5kaWNhdG9yLlN0YXR1cy5BQ1RJVkUpOworICAgICAg ICAgICAgICAgICAgICAgc3RhdGVfY2hhbmdlZCgpOworICAgICAgICAgICAgICAgICB9KTsKKy0g ICAgICAgICAgICAgICAgbV9pbmRpY2F0b3IuY29udGV4dF9tZW51LmNvbm5lY3QoKGIsIHQpID0+ IHsKKy0gICAgICAgICAgICAgICAgICAgIEd0ay5NZW51IG1lbnUgPSBjcmVhdGVfY29udGV4dF9t ZW51KCk7CistICAgICAgICAgICAgICAgICAgICBtZW51LnBvcHVwKG51bGwsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG51bGwsCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1faW5kaWNhdG9yLnBvc2l0aW9uX2NvbnRleHRfbWVudSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrLmdl dF9jdXJyZW50X2V2ZW50X3RpbWUoKSk7CisrICAgICAgICAgICAgICAgIG1faW5kaWNhdG9yLmNv bnRleHRfbWVudS5jb25uZWN0KCh4LCB5LCB3LCBiLCB0KSA9PiB7CisrICAgICAgICAgICAgICAg ICAgICBwb3B1cF9tZW51X2F0X3BvaW50ZXJfd2luZG93KAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjcmVhdGVfY29udGV4dF9tZW51KCksCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHgsIHksIHcsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kaWNhdG9yLnBv c2l0aW9uX2NvbnRleHRfbWVudSk7CisgICAgICAgICAgICAgICAgIH0pOworLSAgICAgICAgICAg ICAgICBtX2luZGljYXRvci5hY3RpdmF0ZS5jb25uZWN0KCgpID0+IHsKKy0gICAgICAgICAgICAg ICAgICAgIEd0ay5NZW51IG1lbnUgPSBjcmVhdGVfYWN0aXZhdGVfbWVudSgpOworLSAgICAgICAg ICAgICAgICAgICAgbWVudS5wb3B1cChudWxsLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBudWxsLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGljYXRvci5w b3NpdGlvbl9hY3RpdmF0ZV9tZW51LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGsuZ2V0X2N1cnJlbnRfZXZlbnRf dGltZSgpKTsKKysgICAgICAgICAgICAgICAgbV9pbmRpY2F0b3IuYWN0aXZhdGUuY29ubmVjdCgo eCwgeSwgdykgPT4geworKyAgICAgICAgICAgICAgICAgICAgcG9wdXBfbWVudV9hdF9wb2ludGVy X3dpbmRvdygKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2FjdGl2YXRlX21l bnUoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwgeSwgdywKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbV9pbmRpY2F0b3IucG9zaXRpb25fYWN0aXZhdGVfbWVudSk7Cisg ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgIH0gY2F0Y2ggKEdMaWIuSU9FcnJvciBl KSB7CisgICAgICAgICAgICAgICAgIHdhcm5pbmcoIkZhaWxlZCB0byBnZXQgdGhlIHNlc3Npb24g YnVzOiAlcyIsIGUubWVzc2FnZSk7CitAQCAtMzE3LDIxICszNDcsNDcgQEAgY2xhc3MgUGFuZWwg OiBJQnVzLlBhbmVsU2VydmljZSB7CisgICAgICAgICBtX3N0YXR1c19pY29uID0gbmV3IEd0ay5T dGF0dXNJY29uKCk7CisgICAgICAgICBtX3N0YXR1c19pY29uLnNldF9uYW1lKCJpYnVzLXVpLWd0 ayIpOworICAgICAgICAgbV9zdGF0dXNfaWNvbi5zZXRfdGl0bGUoXygiSUJ1cyBQYW5lbCIpKTsK KysKKysgICAgICAgIC8vIEdkay5XaW5kb3cuZ2V0X3dpZHRoKCkgaXMgbmVlZGVkIGZvciB0aGUg bWVudSBwb3NpdGlvbgorKyAgICAgICAgaWYgKG1fc3RhdHVzX2ljb24uZ2V0X3NpemUoKSA+IDAp CisrICAgICAgICAgICAgaW5pdF9zdGF0dXNfaWNvbl9tZW51KCk7CisrICAgICAgICBlbHNlCisr ICAgICAgICAgICAgbV9zdGF0dXNfaWNvbi5ub3RpZnlbInNpemUiXS5jb25uZWN0KGluaXRfc3Rh dHVzX2ljb25fbWVudSk7CisrICAgIH0KICsKLSsvKioKLSsgKiBpYnVzX2ZvbnRzZXRfdXBkYXRl X2ZjZm9udHNldDoKLSsgKiBAZm9udHNldDogI0lCdXNGY0ZvbnRTZXQKLSsgKgotKyAqIFVwZGF0 ZSAjRmNGb250U2V0IGZyb20gZm9udCBmYW1pbHksIHNpemUgYW5kIGxhbmdhdWdlIG9mIEBmb250 c2V0LgotKyAqIFJldHVybnM6ICVUUlVFIGlmICNGY0ZvbnRTZXQgaXMgdXBkYXRlZC4gJUZBTFNF IG90aGVyd2lzZS4KLSsgKi8KLStnYm9vbGVhbiAgICAgICAgaWJ1c19mb250c2V0X3VwZGF0ZV9m Y2ZvbnRzZXQgICAoSUJ1c0ZvbnRTZXQgICAgKmZvbnRzZXQpOworKyAgICBwcml2YXRlIHZvaWQg aW5pdF9zdGF0dXNfaWNvbl9tZW51KCkgeworKyAgICAgICAgR2RrLlJlY3RhbmdsZSBhcmVhID0g eyAwLCAwLCAwLCAwIH07CisrICAgICAgICBHZGsuV2luZG93PyB3aW5kb3cgPSBudWxsOworKyAg ICAgICAgR3RrLk1lbnVQb3NpdGlvbkZ1bmM/IGZ1bmMgPSBudWxsOworKyNpZiBWQUxBXzBfMzQK KysgICAgICAgIHdpbmRvdyA9IEdkay5YMTEuV2luZG93Lmxvb2t1cF9mb3JfZGlzcGxheSgKKysg ICAgICAgICAgICAgICAgR2RrLkRpc3BsYXkuZ2V0X2RlZmF1bHQoKSBhcyBHZGsuWDExLkRpc3Bs YXksCisrICAgICAgICAgICAgICAgIG1fc3RhdHVzX2ljb24uZ2V0X3gxMV93aW5kb3dfaWQoKSkg YXMgR2RrLldpbmRvdzsKKysgICAgICAgIGlmICh3aW5kb3cgPT0gbnVsbCkgeworKyAgICAgICAg ICAgIHdhcm5pbmcoIlN0YXR1c0ljb24gZG9lcyBub3QgaGF2ZSBHZGtXaW5kb3ciKTsKKysgICAg ICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrICAgICAgICBHdGsuT3JpZW50YXRpb24gb3Jp ZW50OworKyAgICAgICAgbV9zdGF0dXNfaWNvbi5nZXRfZ2VvbWV0cnkobnVsbCwgb3V0IGFyZWEs IG91dCBvcmllbnQpOworKyAgICAgICAgaW50IHdpbl94ID0gMDsKKysgICAgICAgIGludCB3aW5f eSA9IDA7CisrICAgICAgICB3aW5kb3cuZ2V0X29yaWdpbihvdXQgd2luX3gsIG91dCB3aW5feSk7 CisrICAgICAgICAvLyBUaGUgKHgsIHkpIGlzIGNvbnZlcnRlZCBieSBnZGtfd2luZG93X2dldF9y b290X2Nvb3JkcygpCisrICAgICAgICAvLyBpbiBnZGtfd2luZG93X2ltcGxfbW92ZV90b19yZWN0 KCkKKysgICAgICAgIGFyZWEueCAtPSB3aW5feDsKKysgICAgICAgIGFyZWEueSAtPSB3aW5feTsK KysjZWxzZQorKyAgICAgICAgZnVuYyA9IG1fc3RhdHVzX2ljb24ucG9zaXRpb25fbWVudTsKKysj ZW5kaWYKKyAgICAgICAgIG1fc3RhdHVzX2ljb24ucG9wdXBfbWVudS5jb25uZWN0KChiLCB0KSA9 PiB7CistICAgICAgICAgICAgICAgIEd0ay5NZW51IG1lbnUgPSBjcmVhdGVfY29udGV4dF9tZW51 KCk7CistICAgICAgICAgICAgICAgIG1lbnUucG9wdXAobnVsbCwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICBudWxsLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdHVzX2lj b24ucG9zaXRpb25fbWVudSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIEd0ay5nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOworKyAg ICAgICAgICAgICAgICBwb3B1cF9tZW51X2F0X2FyZWFfd2luZG93KAorKyAgICAgICAgICAgICAg ICAgICAgICAgIGNyZWF0ZV9jb250ZXh0X21lbnUoKSwKKysgICAgICAgICAgICAgICAgICAgICAg ICBhcmVhLCB3aW5kb3csIGZ1bmMpOworICAgICAgICAgfSk7CisgICAgICAgICBtX3N0YXR1c19p Y29uLmFjdGl2YXRlLmNvbm5lY3QoKCkgPT4geworLSAgICAgICAgICAgICAgICBHdGsuTWVudSBt ZW51ID0gY3JlYXRlX2FjdGl2YXRlX21lbnUoKTsKKy0gICAgICAgICAgICAgICAgbWVudS5wb3B1 cChudWxsLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgbV9zdGF0dXNfaWNvbi5wb3NpdGlvbl9tZW51LAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIDAsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrLmdldF9j dXJyZW50X2V2ZW50X3RpbWUoKSk7CisrICAgICAgICAgICAgICAgIHBvcHVwX21lbnVfYXRfYXJl YV93aW5kb3coCisrICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2FjdGl2YXRlX21lbnUo KSwKKysgICAgICAgICAgICAgICAgICAgICAgICBhcmVhLCB3aW5kb3csIGZ1bmMpOworICAgICAg ICAgfSk7CisgICAgICAgICBtX3N0YXR1c19pY29uLnNldF9mcm9tX2ljb25fbmFtZSgiaWJ1cy1r ZXlib2FyZCIpOworICAgICB9CitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9wcm9wZXJ0eXBhbmVsLnZh bGEgYi91aS9ndGszL3Byb3BlcnR5cGFuZWwudmFsYQoraW5kZXggZGQ0MzQyZWMuLjg1N2Y4ZTIw IDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9wcm9wZXJ0eXBhbmVsLnZhbGEKKysrKyBiL3VpL2d0azMv cHJvcGVydHlwYW5lbC52YWxhCitAQCAtNCw3ICs0LDcgQEAKKyAgKgorICAqIENvcHlyaWdodChj KSAyMDEzLTIwMTYgUmVkIEhhdCwgSW5jLgorICAqIENvcHlyaWdodChjKSAyMDEzLTIwMTUgUGVu ZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+CistICogQ29weXJpZ2h0KGMpIDIwMTMt MjAxNiBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKysgKiBDb3B5 cmlnaHQoYykgMjAxMy0yMDE3IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwu Y29tPgorICAqCisgICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vcgorICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKK0BAIC0zMzAsOCArMzMwLDE2IEBAIHB1YmxpYyBj bGFzcyBQcm9wZXJ0eVBhbmVsIDogR3RrLkJveCB7CisgICAgICAgICBHdGsuQWxsb2NhdGlvbiBh bGxvY2F0aW9uOworICAgICAgICAgbV90b3BsZXZlbC5nZXRfYWxsb2NhdGlvbihvdXQgYWxsb2Nh dGlvbik7CisgCisrICAgICAgICBHZGsuUmVjdGFuZ2xlIG1vbml0b3JfYXJlYTsKKysjaWYgVkFM QV8wXzM0CisrICAgICAgICAvLyBnZGtfc2NyZWVuX2dldF9tb25pdG9yX3dvcmthcmVhKCkgbm8g bG9uZ2VyIHJldHVybiB0aGUgY29ycmVjdAorKyAgICAgICAgLy8gYXJlYSBmcm9tICJfTkVUX1dP UktBUkVBIiBhdG9tIGluIEdUSyAzLjIyCisrICAgICAgICBHZGsuTW9uaXRvciBtb25pdG9yID0g R2RrLkRpc3BsYXkuZ2V0X2RlZmF1bHQoKS5nZXRfbW9uaXRvcigwKTsKKysgICAgICAgIG1vbml0 b3JfYXJlYSA9IG1vbml0b3IuZ2V0X3dvcmthcmVhKCk7CisrI2Vsc2UKKyAgICAgICAgIEdkay5T Y3JlZW4gc2NyZWVuID0gR2RrLlNjcmVlbi5nZXRfZGVmYXVsdCgpOworLSAgICAgICAgR2RrLlJl Y3RhbmdsZSBtb25pdG9yX2FyZWEgPSBzY3JlZW4uZ2V0X21vbml0b3Jfd29ya2FyZWEoMCk7Cisr ICAgICAgICBtb25pdG9yX2FyZWEgPSBzY3JlZW4uZ2V0X21vbml0b3Jfd29ya2FyZWEoMCk7Cisr I2VuZGlmCisgICAgICAgICBpbnQgbW9uaXRvcl9yaWdodCA9IG1vbml0b3JfYXJlYS54ICsgbW9u aXRvcl9hcmVhLndpZHRoOworICAgICAgICAgaW50IG1vbml0b3JfYm90dG9tID0gbW9uaXRvcl9h cmVhLnkgKyBtb25pdG9yX2FyZWEuaGVpZ2h0OworICAgICAgICAgaW50IHgsIHk7CitAQCAtNDcy LDggKzQ4MCwxNSBAQCBwdWJsaWMgY2xhc3MgUHJvcE1lbnUgOiBHdGsuTWVudSwgSVByb3BUb29s SXRlbSB7CisgICAgIHB1YmxpYyBuZXcgdm9pZCBwb3B1cCh1aW50ICAgICAgIGJ1dHRvbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMiAgICAgYWN0aXZhdGVfdGltZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIEd0ay5XaWRnZXQgd2lkZ2V0KSB7CisrI2lmIFZBTEFfMF8z NAorKyAgICAgICAgYmFzZS5wb3B1cF9hdF93aWRnZXQod2lkZ2V0LAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR2RrLkdyYXZpdHkuU09VVEhfV0VTVCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdkay5HcmF2aXR5Lk5PUlRIX1dFU1QsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBudWxsKTsKKysjZWxzZQorICAgICAgICAgbV9wYXJlbnRfYnV0dG9uID0gd2lk Z2V0OworICAgICAgICAgYmFzZS5wb3B1cChudWxsLCBudWxsLCBtZW51X3Bvc2l0aW9uLCBidXR0 b24sIGFjdGl2YXRlX3RpbWUpOworKyNlbmRpZgorICAgICB9CisgCisgICAgIHB1YmxpYyBvdmVy cmlkZSB2b2lkIGRlc3Ryb3koKSB7CitAQCAtNTMyLDYgKzU0Nyw3IEBAIHB1YmxpYyBjbGFzcyBQ cm9wTWVudSA6IEd0ay5NZW51LCBJUHJvcFRvb2xJdGVtIHsKKyAgICAgICAgIH0KKyAgICAgfQor IAorKyNpZiAhVkFMQV8wXzM0CisgICAgIHByaXZhdGUgdm9pZCBtZW51X3Bvc2l0aW9uKEd0ay5N ZW51IG1lbnUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBpbnQgIHgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBpbnQgIHksCitAQCAtNTgwLDYgKzU5 Niw3IEBAIHB1YmxpYyBjbGFzcyBQcm9wTWVudSA6IEd0ay5NZW51LCBJUHJvcFRvb2xJdGVtIHsK KyAKKyAgICAgICAgIHB1c2hfaW4gPSBmYWxzZTsKKyAgICAgfQorKyNlbmRpZgorIH0KKyAKKyBw dWJsaWMgY2xhc3MgUHJvcFRvb2xCdXR0b24gOiBHdGsuVG9vbEJ1dHRvbiwgSVByb3BUb29sSXRl bSB7CitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9zd2l0Y2hlci52YWxhIGIvdWkvZ3RrMy9zd2l0Y2hl ci52YWxhCitpbmRleCAyNjlhNjhkNC4uMGNlNzQyYTEgMTAwNjQ0CistLS0gYS91aS9ndGszL3N3 aXRjaGVyLnZhbGEKKysrKyBiL3VpL2d0azMvc3dpdGNoZXIudmFsYQorQEAgLTE1Nyw2ICsxNTcs NTUgQEAgY2xhc3MgU3dpdGNoZXIgOiBHdGsuV2luZG93IHsKKyAgICAgICAgIG1fbGFiZWwuc2V0 X3RleHQobV9idXR0b25zW2luZGV4XS5sb25nbmFtZSk7CisgICAgICAgICBtX2J1dHRvbnNbaW5k ZXhdLmdyYWJfZm9jdXMoKTsKKyAKKysgICAgICAgIC8vIEF2b2lkIHJlZ3Jlc3Npb25zLgorKyAg ICAgICAgaWYgKG1fcG9wdXBfZGVsYXlfdGltZSA+IDApIHsKKysgICAgICAgICAgICBnZXRfcG9z aXRpb24ob3V0IG1fcm9vdF94LCBvdXQgbV9yb290X3kpOworKyAgICAgICAgICAgIC8vIFB1bGwg dGhlIHdpbmRvdyBmcm9tIHRoZSBzY3JlZW4gc28gdGhhdCB0aGUgd2luZG93IGdldHMKKysgICAg ICAgICAgICAvLyB0aGUga2V5IHByZXNzIGFuZCByZWxlYXNlIGV2ZW50cyBidXQgbW91c2UgZG9l cyBub3Qgc2VsZWN0CisrICAgICAgICAgICAgLy8gYW4gSU1FIHVuZXhwZWN0ZWRseS4KKysgICAg ICAgICAgICBtb3ZlKC0xMDAwLCAtMTAwMCk7CisrICAgICAgICB9CiArCi0rLyoqCi0rICogaWJ1 c19mb250c2V0X2dldF9wcmVmZXJyZWRfc2l6ZV9oYjoKLSsgKiBAZm9udHNldDogI0lCdXNGY0Zv bnRTZXQKLSsgKiBAdGV4dDogYSBzdHJpbmcgdG8gYmUgY2FsY3VsYXRlIHRoZSBwcmVmZXJyZWQg cmVjdGFuZ2xlIHNpemUuCi0rICogQHdpZGVzdDogKG91dCk6ICNjYWlyb19yZWN0YW5nbGVfaW50 X3QgaXMgdXBkYXRlZC4KLSsgKgotKyAqIENhbGN1bGF0ZSBAd2lkZXN0IGZvciBAdGV4dC4KLSsg KgotKyAqIFJldHVybnM6ICNJQnVzUmVxdWlzaXRpb25FeCB3aGljaCBpbmNsdWRlcyB0aGUgZ2x5 cGhzIGFuZCBjb29yZGluYXRlcy4KLSsgKi8KLStJQnVzUmVxdWlzaXRpb25FeCAqCi0rICAgICAg ICAgICAgICAgIGlidXNfZm9udHNldF9nZXRfcHJlZmVycmVkX3NpemVfaGIKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1c0ZvbnRTZXQgICAgKmZv bnRzZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGdjaGFyICAgICp0ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjYWlyb19yZWN0YW5nbGVfaW50X3QKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKndpZGVzdCk7 CisrICAgICAgICBzaG93X2FsbCgpOwogKwotKy8qKgotKyAqIGlidXNfZm9udHNldF9kcmF3X2Nh aXJvX2xpbmVzOgotKyAqIEBmb250c2V0OiAjSUJ1c0ZjRm9udFNldAotKyAqIEBjcjogI2NhaXJv X3QgaW4gI0d0a1dpZGdldC5kcmF3KCkuCi0rICogQGV4OiAjSUJ1c1JlcXVpc2l0aW9uRXggd2hp Y2ggaW5jbHVkZXMgZ2x5cGgsIHgsIHkgdmFsdWVzLCBjaGFyIHdpZHRoCi0rICogICAgICBhbmQg aGVpZ2h0LgotKyAqCi0rICogRHJhdyBnbHlwaHMgaW4gQGV4IHVzaW5nIGNhaXJvIEBjci4KLSsg Ki8KLSt2b2lkICAgICAgICAgICAgaWJ1c19mb250c2V0X2RyYXdfY2Fpcm9fd2l0aF9yZXF1aXNp dGlvbl9leAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChJQnVzRm9udFNldCAgICAqZm9udHNldCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2Fpcm9fdCAgICAgICAgKmNyLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzUmVxdWlzaXRpb25FeAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqZXgpOworKyAgICAgICAgaWYgKG1fcG9wdXBfZGVsYXlfdGltZSA+IDApIHsKKysgICAg ICAgICAgICAvLyBSZXN0b3JlIHRoZSB3aW5kb3cgcG9zaXRpb24gYWZ0ZXIgbV9wb3B1cF9kZWxh eV90aW1lCisrICAgICAgICAgICAgbV9wb3B1cF9kZWxheV90aW1lX2lkID0gR0xpYi5UaW1lb3V0 LmFkZChtX3BvcHVwX2RlbGF5X3RpbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7CisrICAgICAgICAgICAgICAgIHJlc3RvcmVf d2luZG93X3Bvc2l0aW9uKCJ0aW1lb3V0Iik7CisrICAgICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKKysgICAgICAgICAgICB9KTsKKysgICAgICAgIH0KICsKLSsvKioKLSsgKiBpYnVzX2ZvbnRz ZXRfdW5yZWY6Ci0rICogQGZvbnRzZXQ6ICNJQnVzRmNGb250U2V0Ci0rICoKLSsgKiBDYWxsIGdf b2JqZWN0X3VucmVmKCkuCi0rICogRklYTUU6IFNlZW1zIFZhbGEgbmVlZHMgdGhpcyBBUEkuCi0r ICovCi0rdm9pZCAgICAgICAgICAgIGlidXNfZm9udHNldF91bnJlZiAgICAgICAgICAgICAgKElC dXNGb250U2V0ICAgICpmb250c2V0KTsKKysgICAgICAgIEdkay5EZXZpY2UgcG9pbnRlcjsKKysj aWYgVkFMQV8wXzM0CisrICAgICAgICBHZGsuU2VhdCBzZWF0ID0gZXZlbnQuZ2V0X3NlYXQoKTsK KysgICAgICAgIGlmIChzZWF0ID09IG51bGwpIHsKKysgICAgICAgICAgICB2YXIgZGlzcGxheSA9 IGdldF9kaXNwbGF5KCk7CisrICAgICAgICAgICAgc2VhdCA9IGRpc3BsYXkuZ2V0X2RlZmF1bHRf c2VhdCgpOworKyAgICAgICAgfQorKyAgICAgICAgLy9rZXlib2FyZCA9IHNlYXQuZ2V0X2tleWJv YXJkKCk7CisrICAgICAgICBwb2ludGVyID0gc2VhdC5nZXRfcG9pbnRlcigpOworKworKyAgICAg ICAgR2RrLkdyYWJTdGF0dXMgc3RhdHVzOworKyAgICAgICAgLy8gR3JhYiBhbGwga2V5Ym9hcmQg ZXZlbnRzCisrICAgICAgICBzdGF0dXMgPSBzZWF0LmdyYWIoZ2V0X3dpbmRvdygpLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdkay5TZWF0Q2FwYWJpbGl0aWVzLktFWUJPQVJELAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgbnVsbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICBudWxsKTsKKysgICAgICAgIGlmIChzdGF0dXMgIT0gR2RrLkdyYWJT dGF0dXMuU1VDQ0VTUykKKysgICAgICAgICAgICB3YXJuaW5nKCJHcmFiIGtleWJvYXJkIGZhaWxl ZCEgc3RhdHVzID0gJWQiLCBzdGF0dXMpOworKyAgICAgICAgc3RhdHVzID0gc2VhdC5ncmFiKGdl dF93aW5kb3coKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGsuU2VhdENhcGFiaWxp dGllcy5QT0lOVEVSLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgbnVsbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBl dmVudCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsKTsKKysgICAgICAgIGlmIChz dGF0dXMgIT0gR2RrLkdyYWJTdGF0dXMuU1VDQ0VTUykKKysgICAgICAgICAgICB3YXJuaW5nKCJH cmFiIHBvaW50ZXIgZmFpbGVkISBzdGF0dXMgPSAlZCIsIHN0YXR1cyk7CisrI2Vsc2UKKyAgICAg ICAgIEdkay5EZXZpY2UgZGV2aWNlID0gZXZlbnQuZ2V0X2RldmljZSgpOworICAgICAgICAgaWYg KGRldmljZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgdmFyIGRpc3BsYXkgPSBnZXRfZGlzcGxh eSgpOworQEAgLTE3NCw3ICsyMjMsNiBAQCBjbGFzcyBTd2l0Y2hlciA6IEd0ay5XaW5kb3cgewor ICAgICAgICAgfQorIAorICAgICAgICAgR2RrLkRldmljZSBrZXlib2FyZDsKKy0gICAgICAgIEdk ay5EZXZpY2UgcG9pbnRlcjsKKyAgICAgICAgIGlmIChkZXZpY2UuZ2V0X3NvdXJjZSgpID09IEdk ay5JbnB1dFNvdXJjZS5LRVlCT0FSRCkgeworICAgICAgICAgICAgIGtleWJvYXJkID0gZGV2aWNl OworICAgICAgICAgICAgIHBvaW50ZXIgPSBkZXZpY2UuZ2V0X2Fzc29jaWF0ZWRfZGV2aWNlKCk7 CitAQCAtMTgzLDI2ICsyMzEsNiBAQCBjbGFzcyBTd2l0Y2hlciA6IEd0ay5XaW5kb3cgeworICAg ICAgICAgICAgIGtleWJvYXJkID0gZGV2aWNlLmdldF9hc3NvY2lhdGVkX2RldmljZSgpOworICAg ICAgICAgfQorIAorLSAgICAgICAgLy8gQXZvaWQgcmVncmVzc2lvbnMuCistICAgICAgICBpZiAo bV9wb3B1cF9kZWxheV90aW1lID4gMCkgeworLSAgICAgICAgICAgIGdldF9wb3NpdGlvbihvdXQg bV9yb290X3gsIG91dCBtX3Jvb3RfeSk7CistICAgICAgICAgICAgLy8gUHVsbCB0aGUgd2luZG93 IGZyb20gdGhlIHNjcmVlbiBzbyB0aGF0IHRoZSB3aW5kb3cgZ2V0cworLSAgICAgICAgICAgIC8v IHRoZSBrZXkgcHJlc3MgYW5kIHJlbGVhc2UgZXZlbnRzIGJ1dCBtb3VzZSBkb2VzIG5vdCBzZWxl Y3QKKy0gICAgICAgICAgICAvLyBhbiBJTUUgdW5leHBlY3RlZGx5LgorLSAgICAgICAgICAgIG1v dmUoLTEwMDAsIC0xMDAwKTsKKy0gICAgICAgIH0KKy0KKy0gICAgICAgIHNob3dfYWxsKCk7Cist CistICAgICAgICBpZiAobV9wb3B1cF9kZWxheV90aW1lID4gMCkgeworLSAgICAgICAgICAgIC8v IFJlc3RvcmUgdGhlIHdpbmRvdyBwb3NpdGlvbiBhZnRlciBtX3BvcHVwX2RlbGF5X3RpbWUKKy0g ICAgICAgICAgICBtX3BvcHVwX2RlbGF5X3RpbWVfaWQgPSBHTGliLlRpbWVvdXQuYWRkKG1fcG9w dXBfZGVsYXlfdGltZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgpID0+IHsKKy0gICAgICAgICAgICAgICAgcmVzdG9yZV93aW5kb3dfcG9z aXRpb24oInRpbWVvdXQiKTsKKy0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAg ICAgICAgIH0pOworLSAgICAgICAgfQorLQorICAgICAgICAgR2RrLkdyYWJTdGF0dXMgc3RhdHVz OworICAgICAgICAgLy8gR3JhYiBhbGwga2V5Ym9hcmQgZXZlbnRzCisgICAgICAgICBzdGF0dXMg PSBrZXlib2FyZC5ncmFiKGdldF93aW5kb3coKSwKK0BAIC0yMjQsNiArMjUyLDggQEAgY2xhc3Mg U3dpdGNoZXIgOiBHdGsuV2luZG93IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH ZGsuQ1VSUkVOVF9USU1FKTsKKyAgICAgICAgIGlmIChzdGF0dXMgIT0gR2RrLkdyYWJTdGF0dXMu U1VDQ0VTUykKKyAgICAgICAgICAgICB3YXJuaW5nKCJHcmFiIHBvaW50ZXIgZmFpbGVkISBzdGF0 dXMgPSAlZCIsIHN0YXR1cyk7CisrI2VuZGlmCiArCi0rR19FTkRfREVDTFMKKyAgICAgICAgIC8v IFByb2JhYmx5IHdlIGNhbiBkZWxldGUgbV9wb3B1cF9kZWxheV90aW1lIGluIDEuNgorICAgICAg ICAgcG9pbnRlci5nZXRfcG9zaXRpb25fZG91YmxlKG51bGwsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb3V0IG1fbW91c2VfaW5pdF94LAorQEAgLTIzNSw4ICsyNjUsMTIg QEAgY2xhc3MgU3dpdGNoZXIgOiBHdGsuV2luZG93IHsKKyAgICAgICAgIG1fbG9vcC5ydW4oKTsK KyAgICAgICAgIG1fbG9vcCA9IG51bGw7CisgCisrI2lmIFZBTEFfMF8zNAorKyAgICAgICAgc2Vh dC51bmdyYWIoKTsKKysjZWxzZQorICAgICAgICAga2V5Ym9hcmQudW5ncmFiKEdkay5DVVJSRU5U X1RJTUUpOworICAgICAgICAgcG9pbnRlci51bmdyYWIoR2RrLkNVUlJFTlRfVElNRSk7CisrI2Vu ZGlmCisgCisgICAgICAgICBoaWRlKCk7CisgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHN3aXRj aGVyIGlzIGhpZGRlbiBiZWZvcmUgcmV0dXJuaW5nIGZyb20gdGhpcyBmdW5jdGlvbi4KK0BAIC0z MTksMTMgKzM1MywxOSBAQCBjbGFzcyBTd2l0Y2hlciA6IEd0ay5XaW5kb3cgeworICAgICAgICAg bV9sYWJlbC5zZXRfZWxsaXBzaXplKFBhbmdvLkVsbGlwc2l6ZU1vZGUuRU5EKTsKKyAKKyAgICAg ICAgIEdkay5EaXNwbGF5IGRpc3BsYXkgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgpOworKyAg ICAgICAgaW50IHNjcmVlbl93aWR0aCA9IDA7CisrI2lmIFZBTEFfMF8zNAorKyAgICAgICAgR2Rr Lk1vbml0b3IgbW9uaXRvciA9IGRpc3BsYXkuZ2V0X21vbml0b3JfYXRfd2luZG93KHRoaXMuZ2V0 X3dpbmRvdygpKTsKKysgICAgICAgIEdkay5SZWN0YW5nbGUgYXJlYSA9IG1vbml0b3IuZ2V0X2dl b21ldHJ5KCk7CisrICAgICAgICBzY3JlZW5fd2lkdGggPSBhcmVhLndpZHRoOworKyNlbHNlCisg ICAgICAgICBHZGsuU2NyZWVuIHNjcmVlbiA9IChkaXNwbGF5ICE9IG51bGwpID8KKyAgICAgICAg ICAgICAgICAgZGlzcGxheS5nZXRfZGVmYXVsdF9zY3JlZW4oKSA6IG51bGw7CistICAgICAgICBp bnQgc2NyZWVuX3dpZHRoID0gMDsKKyAKKyAgICAgICAgIGlmIChzY3JlZW4gIT0gbnVsbCkgewor ICAgICAgICAgICAgIHNjcmVlbl93aWR0aCA9IHNjcmVlbi5nZXRfd2lkdGgoKTsKKyAgICAgICAg IH0KICsjZW5kaWYKKyAKKyAgICAgICAgIGlmIChzY3JlZW5fd2lkdGggPiAwICYmIG1heF9sYWJl bF93aWR0aCA+IChzY3JlZW5fd2lkdGggLyA0KSkgeworICAgICAgICAgICAgIG1heF9sYWJlbF93 aWR0aCA9IHNjcmVlbl93aWR0aCAvIDQ7CiAtLSAKLTIuOS4zCisyLjEzLjQKKworRnJvbSBhN2U3 ODAyMmI5NTMyOWNhNTc4MjUxMjg3MjM5OGEzNjU1MDNjNDEwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorRGF0ZTog VGh1LCAxNCBTZXAgMjAxNyAxODowNzo0MiArMDkwMAorU3ViamVjdDogW1BBVENIIDE0LzE0XSB1 aS9ndGszOiBGaXggdG8gZW5hYmxlIG1lbnUgYnV0dG9uIG9uIFByb3BlcnR5UGFuZWwKKworLS0t CisgdWkvZ3RrMy9wcm9wZXJ0eXBhbmVsLnZhbGEgfCAxNyArKysrKysrKysrKysrKysrKworIDEg ZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS91aS9ndGszL3By b3BlcnR5cGFuZWwudmFsYSBiL3VpL2d0azMvcHJvcGVydHlwYW5lbC52YWxhCitpbmRleCA4NTdm OGUyMC4uZjVkOWNmZjcgMTAwNjQ0CistLS0gYS91aS9ndGszL3Byb3BlcnR5cGFuZWwudmFsYQor KysrIGIvdWkvZ3RrMy9wcm9wZXJ0eXBhbmVsLnZhbGEKK0BAIC04NCw2ICs4NCwyMyBAQCBwdWJs aWMgY2xhc3MgUHJvcGVydHlQYW5lbCA6IEd0ay5Cb3ggeworICAgICBwdWJsaWMgdm9pZCBzZXRf cHJvcGVydGllcyhJQnVzLlByb3BMaXN0IHByb3BzKSB7CisgICAgICAgICBkZWJ1Zygic2V0X3By b3BlcnRpZXMoKVxuIik7CisgCisrICAgICAgICAvLyBXaGVuIGNsaWNrIFByb3BNZW51VG9vbEJ1 dHRvbiwgdGhlIGZvY3VzIGlzIGNoYW5nZWQgYW5kCisrICAgICAgICAvLyBzZXRfcHJvcGVydGll cygpIGlzIGNhbGxlZCBoZXJlIHdoaWxlIHRoZSBtZW51IGJ1dHRvbiBpcyBhY3RpdmUuCisrICAg ICAgICAvLyBJZ25vcmUgdGhhdCBjYXNlIGhlcmUgbm90IHRvIHJlbW92ZSBpdGVtcy4KKysgICAg ICAgIGJvb2wgaGFzX2FjdGl2ZSA9IGZhbHNlOworKyAgICAgICAgZm9yZWFjaCAodmFyIGl0ZW0g aW4gbV9pdGVtcykgeworKyAgICAgICAgICAgIFR5cGUgdHlwZSA9IGl0ZW0uZ2V0X3R5cGUoKTsK KysgICAgICAgICAgICBpZiAodHlwZSA9PSB0eXBlb2YoUHJvcE1lbnVUb29sQnV0dG9uKSB8fAor KyAgICAgICAgICAgICAgICB0eXBlID09IHR5cGVvZihQcm9wVG9nZ2xlVG9vbEJ1dHRvbikpIHsK KysgICAgICAgICAgICAgICAgaWYgKChpdGVtIGFzIEd0ay5Ub2dnbGVUb29sQnV0dG9uKS5nZXRf YWN0aXZlKCkpIHsKKysgICAgICAgICAgICAgICAgICAgIGhhc19hY3RpdmUgPSB0cnVlOworKyAg ICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAg ICB9CisrICAgICAgICB9CisrICAgICAgICBpZiAoaGFzX2FjdGl2ZSkKKysgICAgICAgICAgICBy ZXR1cm47CisrCisgICAgICAgICBmb3JlYWNoICh2YXIgaXRlbSBpbiBtX2l0ZW1zKQorICAgICAg ICAgICAgIHJlbW92ZSgoaXRlbSBhcyBHdGsuV2lkZ2V0KSk7CisgICAgICAgICBtX2l0ZW1zID0g e307CistLSAKKzIuMTMuNAogCgpkaWZmIC0tZ2l0IGEvaWJ1cy14eC1lbW9qaS1oYXJmYnV6ei5w YXRjaCBiL2lidXMteHgtZW1vamktaGFyZmJ1enoucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZmJmZThkYwotLS0gL2Rldi9udWxsCisrKyBiL2lidXMteHgtZW1vamkt aGFyZmJ1enoucGF0Y2gKQEAgLTAsMCArMSwxNjQ3IEBACitGcm9tIGM1ZTNhNzZkYzkyZWE5Njdi MTM4ZDQzZGM5ZWQ3ZWNkYjJlM2ZjN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBm dWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE0IFNlcCAy MDE3IDE1OjU1OjIxICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIEludGVncmF0ZSBjdXN0b20gcmVu ZGVyaW5nIHRvIHVzZSBIYXJmQnV6eiBnbHlwaCBpbmZvCisKK0lCdXNGb250U2V0IG9mZmVycyBG Y0ZvbnRTZXQsIGdseXBoIGluZm8gd2l0aCBIYXJmQnV6eiBhbmQgcmVuZGVyaW5nCitvbiBDYWly byBjb250ZXh0LgorQ3VycmVudCBQYW5nbyBjaGFuZ2VzIGZvbnRzIGJ5IGVtb2ppIHZhcmlhbnRz IGFuZCBkcmF3cyB0aGUgc2VwYXJhdGVkCitnbHlwaHMgWzFdIGJ1dCBhY3R1YWxseSB0aGUgZW1v amkgY2hhcmFjdGVycyB3aXRoIHZhcmlhbnRzIGNhbiBiZSBkcmF3bgorYXMgb25lIGdseXBoIHNv IHRoaXMgY2xhc3MgIG1hbmFnZXMgRm9udGNvbmZpZyBmb250c2V0cyB0byBzZWxlY3QgYSBmb250 LAorSGFyZkJ1enogdG8gZ2V0IGdseXBocyBmb3IgZW1vamkgdmFyaWFudHMsIENhaXJvIHRvIGRy YXcgZ2x5cGhzLgorTmVlZCBjb25maWd1cmUgLS1lbmFibGUtaGFyZmJ1enotZm9yLWVtb2ppIG9w dGlvbiB0byBlbmFibGUgdGhpcyBmZWF0dXJlLgorCitbMV06IGh0dHBzOi8vYnVnemlsbGEuZ25v bWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODA2NjkKKyAgICAgaHR0cHM6Ly9idWd6aWxsYS5nbm9t ZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MTEyMworLS0tCisgYmluZGluZ3MvdmFsYS9JQnVzRm9u dFNldC0xLjAubWV0YWRhdGEgfCAgIDEgKworIGJpbmRpbmdzL3ZhbGEvTWFrZWZpbGUuYW0gICAg ICAgICAgICAgIHwgIDgzICsrKworIGJpbmRpbmdzL3ZhbGEvaWJ1cy1mb250c2V0LTEuMC5kZXBz ICAgIHwgICAxICsKKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAy OSArCisgdWkvZ3RrMy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgfCAgMzIgKysKKyB1 aS9ndGszL2Vtb2ppZXIudmFsYSAgICAgICAgICAgICAgICAgICB8IDEwMCArKystCisgdWkvZ3Rr My9pYnVzZm9udHNldC5jICAgICAgICAgICAgICAgICAgfCA5MzIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCisgdWkvZ3RrMy9pYnVzZm9udHNldC5oICAgICAgICAgICAgICAgICAg fCAzMDIgKysrKysrKysrKysKKyA4IGZpbGVzIGNoYW5nZWQsIDE0NzggaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYmluZGluZ3MvdmFsYS9JQnVzRm9u dFNldC0xLjAubWV0YWRhdGEKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYmluZGluZ3MvdmFsYS9pYnVz LWZvbnRzZXQtMS4wLmRlcHMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdWkvZ3RrMy9pYnVzZm9udHNl dC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHVpL2d0azMvaWJ1c2ZvbnRzZXQuaAorCitkaWZmIC0t Z2l0IGEvYmluZGluZ3MvdmFsYS9JQnVzRm9udFNldC0xLjAubWV0YWRhdGEgYi9iaW5kaW5ncy92 YWxhL0lCdXNGb250U2V0LTEuMC5tZXRhZGF0YQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAwLi43MzAzN2Q3ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvYmluZGluZ3MvdmFsYS9J QnVzRm9udFNldC0xLjAubWV0YWRhdGEKK0BAIC0wLDAgKzEgQEAKKytJQnVzRm9udFNldCBjaGVh ZGVyX2ZpbGVuYW1lPSJpYnVzZm9udHNldC5oIgorZGlmZiAtLWdpdCBhL2JpbmRpbmdzL3ZhbGEv TWFrZWZpbGUuYW0gYi9iaW5kaW5ncy92YWxhL01ha2VmaWxlLmFtCitpbmRleCBmYzhlMmYwMS4u ZjdiOWU5N2EgMTAwNjQ0CistLS0gYS9iaW5kaW5ncy92YWxhL01ha2VmaWxlLmFtCisrKysgYi9i aW5kaW5ncy92YWxhL01ha2VmaWxlLmFtCitAQCAtODMsOCArODMsMTAgQEAgRVhUUkFfRElTVCA9 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBJQnVzLTEuMC5tZXRh ZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgSUJ1cy0xLjAtY3VzdG9tLnZh bGEgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIElCdXNFbW9qaURpYWxvZy0xLjAubWV0 YWRhdGEgICAgICAgICAgICAgICAgXAorKyAgICBJQnVzRm9udFNldC0xLjAubWV0YWRhdGEgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgaWJ1cy0xLjAuZGVwcyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgIGlidXMtZW1vamktZGlhbG9nLTEuMC5kZXBzICAgICAgICAgICAg ICAgICAgXAorKyAgICBpYnVzLWZvbnRzZXQtMS4wLmRlcHMgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgY29uZmlnLnZhcGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgIHhpLnZhcGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAk KE5VTEwpCitAQCAtMTMxLDYgKzEzMywxNSBAQCBsaWJpYnVzX2Vtb2ppX2RpYWxvZ18xXzBfbGFf TERGTEFHUyA9ICAgICAgICAgICBcCisgCWlmIHRlc3QgISAtZiAkQCA7IHRoZW4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIAkgICAgJChMTl9TKSAkKHRv cF9zcmNkaXIpL3VpL2d0azMvJEAgLjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAJ Zmk7CisraWJ1c2ZvbnRzZXQuYzogJChpYnVzX3ZhcGkpIGlidXNmb250c2V0LmgKKysJaWYgdGVz dCAhIC1mICRAIDsgdGhlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisrCSAgICAkKExOX1MpICQodG9wX3NyY2RpcikvdWkvZ3RrMy8kQCAuOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorKwlmaTsKKytpYnVzZm9udHNldC5oOiAkKGlidXNfdmFw aSkKKysJaWYgdGVzdCAhIC1mICRAIDsgdGhlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisrCSAgICAkKExOX1MpICQodG9wX3NyY2RpcikvdWkvZ3RrMy8k QCAuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKwlmaTsKKysKKyAKKyBNQUlOVEFJ TkVSQ0xFQU5GSUxFUyArPSAkKGxpYmlidXNfZW1vamlfZGlhbG9nXzFfMF9sYV9TT1VSQ0VTKQor IERJU1RDTEVBTkZJTEVTICs9ICQobGliaWJ1c19lbW9qaV9kaWFsb2dfMV8wX2xhX1NPVVJDRVMp CitAQCAtMTg0LDYgKzE5NSw3OCBAQCBESVNUQ0xFQU5GSUxFUyArPSAkKGlidXNfZW1vamlfZGlh bG9nX3ZhcGkpCisgCisgZW5kaWYKKyAjZW5kIG9mIEhBVkVfSU5UUk9TUEVDVElPTgorKworKwor K2lmIEVOQUJMRV9IQVJGQlVaWl9GT1JfRU1PSkkKKytsaWJpYnVzX2ZvbnRzZXQgPSBsaWJpYnVz LWZvbnRzZXQtMS4wLmxhCisrbm9pbnN0X0xUTElCUkFSSUVTICs9ICQobGliaWJ1c19mb250c2V0 KQorKworK2xpYmlidXNfZm9udHNldF8xXzBfbGFfU09VUkNFUyA9ICAgICAgICAgICAgICAgIFwK KysgICAgaWJ1c2ZvbnRzZXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg ICQoTlVMTCkKKytsaWJpYnVzX2ZvbnRzZXRfMV8wX2xhX0NGTEFHUyA9ICAgICAgICAgICAgICAg ICBcCisrICAgICQoQU1fQ0ZMQUdTKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor KyAgICBAQ0FJUk9fQ0ZMQUdTQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAg QEZPTlRDT05GSUdfQ0ZMQUdTQCAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIEBHTElC Ml9DRkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBASEFSRkJVWlpf Q0ZMQUdTQCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgQFBBTkdPX0NGTEFHU0Ag ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICQoTlVMTCkKKytsaWJpYnVzX2Zv bnRzZXRfMV8wX2xhX0xJQkFERCA9ICAgICAgICAgICAgICAgICBcCisrICAgIEBDQUlST19MSUJT QCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBARk9OVENPTkZJR19MSUJT QCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgQEdMSUIyX0xJQlNAICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIEBIQVJGQlVaWl9MSUJTQCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorKyAgICBAUEFOR09fTElCU0AgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKysgICAgJChOVUxMKQorK2xpYmlidXNfZm9udHNldF8xXzBfbGFfTERG TEFHUyA9ICAgICAgICAgICAgICAgIFwKKysgICAgLW5vLXVuZGVmaW5lZCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisrICAgIC1leHBvcnQtc3ltYm9scy1yZWdleCAiaWJ1c18uKiIg ICAgICAgICAgICAgXAorKyAgICAkKE5VTEwpCisrCisrTUFJTlRBSU5FUkNMRUFORklMRVMgKz0g aWJ1c2ZvbnRzZXQuYyBpYnVzZm9udHNldC5oCisrRElTVENMRUFORklMRVMgKz0gaWJ1c2ZvbnRz ZXQuYyBpYnVzZm9udHNldC5oCisrCisraWYgSEFWRV9JTlRST1NQRUNUSU9OCisrSUJ1c0ZvbnRT ZXQtMS4wLmdpcjogJChsaWJpYnVzX2ZvbnRzZXQpIE1ha2VmaWxlCisrSUJ1c0ZvbnRTZXRfMV8w X2dpcl9TQ0FOTkVSRkxBR1MgPSAgICAgICAgICAgICAgXAorKyAgICAtLXBrZy1leHBvcnQ9aWJ1 cy0xLjAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgLS1wa2c9Y2Fpcm8gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIC0tcGtnPWZvbnRjb25maWcgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorKyAgICAtLXBrZz1oYXJmYnV6eiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKysgICAgJChJQlVTX0dJUl9TQ0FOTkVSRkxBR1MpICAgICAgICAgICAg ICAgICAgICBcCisrICAgICQoTlVMTCkKKytJQnVzRm9udFNldF8xXzBfZ2lyX0xJQlMgPSAkKGxp YmlidXNfZm9udHNldCkgJChsaWJpYnVzKQorK0lCdXNGb250U2V0XzFfMF9naXJfSU5DTFVERVMg PSBjYWlyby0xLjAgR0xpYi0yLjAgR09iamVjdC0yLjAKKytJQnVzRm9udFNldF8xXzBfZ2lyX0ZJ TEVTID0gICAgICAgICAgICAgICAgICAgICBcCisrICAgIGlidXNmb250c2V0LmggICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAkKE5VTEwpCisrSUJ1c0ZvbnRTZXRfMV8wX2dp cl9DRkxBR1MgPSAgICAgICAgICAgICAgICAgICAgXAorKyAgICAtSSQoc3JjZGlyKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgLUkkKGJ1aWxkZGlyKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisrICAgIC1JJCh0b3Bfc3JjZGlyKS9zcmMgICAgICAgICAg ICAgICAgICAgICAgICAgXAorKyAgICAkKE5VTEwpCisraWJ1c19mb250c2V0X2dpciA9IElCdXNG b250U2V0LTEuMC5naXIKKytJTlRST1NQRUNUSU9OX0dJUlMgKz0gJChpYnVzX2ZvbnRzZXRfZ2ly KQorK25vaW5zdF9EQVRBICs9ICQoaWJ1c19mb250c2V0X2dpcikKKytFWFRSQV9ESVNUICs9ICQo aWJ1c19mb250c2V0X2dpcikKKytNQUlOVEFJTkVSQ0xFQU5GSUxFUyArPSAkKGlidXNfZm9udHNl dF9naXIpCisrRElTVENMRUFORklMRVMgKz0gJChpYnVzX2ZvbnRzZXRfZ2lyKQorKworK2lidXMt Zm9udHNldC0xLjAudmFwaTogJChpYnVzX2ZvbnRzZXRfZ2lyKSBJQnVzRm9udFNldC0xLjAubWV0 YWRhdGEKKytpYnVzX2ZvbnRzZXRfdmFwaSA9IGlidXMtZm9udHNldC0xLjAudmFwaQorK2lidXNf Zm9udHNldF8xXzBfdmFwaV9NRVRBREFUQURJUlMgPSAkKHNyY2RpcikKKytpYnVzX2ZvbnRzZXRf MV8wX3ZhcGlfRklMRVMgPSBJQnVzRm9udFNldC0xLjAuZ2lyCisrVkFQSUdFTl9WQVBJUyArPSAk KGlidXNfZm9udHNldF92YXBpKQorK25vaW5zdF9EQVRBICs9ICQoaWJ1c19mb250c2V0X3ZhcGkp CisrRVhUUkFfRElTVCArPSAkKGlidXNfZm9udHNldF92YXBpKQorK01BSU5UQUlORVJDTEVBTkZJ TEVTICs9ICQoaWJ1c19mb250c2V0X3ZhcGkpCisrRElTVENMRUFORklMRVMgKz0gJChpYnVzX2Zv bnRzZXRfdmFwaSkKKysKKytlbmRpZgorKyMgZW5kIG9mIEhBVkVfSU5UUk9TUEVDVElPTgorK2Vu ZGlmCisrIyBlbmQgb2YgRU5BQkxFX0hBUkZCVVpaX0ZPUl9FTU9KSQorIGVuZGlmCisgIyBlbmQg b2YgRU5BQkxFX0VNT0pJX0RJQ1QKKyAKK2RpZmYgLS1naXQgYS9iaW5kaW5ncy92YWxhL2lidXMt Zm9udHNldC0xLjAuZGVwcyBiL2JpbmRpbmdzL3ZhbGEvaWJ1cy1mb250c2V0LTEuMC5kZXBzCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLjEyOWZlMTY2CistLS0gL2Rldi9u dWxsCisrKysgYi9iaW5kaW5ncy92YWxhL2lidXMtZm9udHNldC0xLjAuZGVwcworQEAgLTAsMCAr MSBAQAorK2NhaXJvCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitp bmRleCAxNDU1NmEzYS4uNmZmOGY0YTkgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBi L2NvbmZpZ3VyZS5hYworQEAgLTY1Myw2ICs2NTMsMzQgQEAgaHR0cHM6Ly9naXRodWIuY29tL2Z1 aml3YXJhdC9jbGRyLWVtb2ppLWFubm90YXRpb24pCisgICAgIGVuYWJsZV9lbW9qaV9kaWN0PSJ5 ZXMgKGVuYWJsZWQsIHVzZSAtLWRpc2FibGUtZW1vamktZGljdCB0byBkaXNhYmxlKSIKKyBmaQor IAorK0FDX0FSR19FTkFCTEUoaGFyZmJ1enotZm9yLWVtb2ppLAorKyAgICBBU19IRUxQX1NUUklO RyhbLS1lbmFibGUtaGFyZmJ1enotZm9yLWVtb2ppXSwKKysgICAgICAgICAgICAgICAgICAgW0Vu YWJsZSBIYXJCdXp6IHRvIGRyYXcgZW1vamkgY2hhcmFjdGVycy4KKysgICAgICAgICAgICAgICAg ICAgIEN1cnJlbnQgUGFuZ28gaGFzIGEgcHJvYmxlbSB0byBkcmF3IGVtb2ppIHZhcmlhbnRzIGFu ZAorKyAgICAgICAgICAgICAgICAgICAgdGhpcyB3YXkgZW5hYmxlcyB0byB1c2UgSGFyZkJ1enog ZGlyZWN0bHkgaW4gR3RrTGFiZWwuXSksCisrICAgIFtlbmFibGVfaGFyZmJ1enpfZm9yX2Vtb2pp PSRlbmFibGV2YWxdLAorKyAgICBbZW5hYmxlX2hhcmZidXp6X2Zvcl9lbW9qaT1ub10KKyspCisr QU1fQ09ORElUSU9OQUwoW0VOQUJMRV9IQVJGQlVaWl9GT1JfRU1PSkldLAorKyAgICAgICAgICAg ICAgIFt0ZXN0IHgiJGVuYWJsZV9oYXJmYnV6el9mb3JfZW1vamkiID0geCJ5ZXMiXSkKKysKKytp ZiB0ZXN0IHgiJGVuYWJsZV9oYXJmYnV6el9mb3JfZW1vamkiID0geCJ5ZXMiOyB0aGVuCisrICAg IFBLR19DSEVDS19NT0RVTEVTKENBSVJPLCBbCisrICAgICAgICBjYWlybworKyAgICBdKQorKyAg ICBQS0dfQ0hFQ0tfTU9EVUxFUyhGT05UQ09ORklHLCBbCisrICAgICAgICBmb250Y29uZmlnCisr ICAgIF0pCisrICAgIFBLR19DSEVDS19NT0RVTEVTKEhBUkZCVVpaLCBbCisrICAgICAgICBoYXJm YnV6egorKyAgICBdKQorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhQQU5HTywgWworKyAgICAgICAg cGFuZ28KKysgICAgXSkKKytlbHNlCisrICAgIGVuYWJsZV9oYXJmYnV6el9mb3JfZW1vamk9Im5v IChkaXNhYmxlZCwgdXNlIC0tZW5hYmxlLWhhcmZidXp6LWZvci1lbW9qaSB0byBlbmFibGUpIgor K2ZpCisrCisgIyBDaGVjayBpc28tY29kZXMuCisgUEtHX0NIRUNLX01PRFVMRVMoSVNPQ09ERVMs IFsKKyAgICAgaXNvLWNvZGVzCitAQCAtNzQzLDYgKzc3MSw3IEBAIEJ1aWxkIG9wdGlvbnM6Cisg ICBFbmFibGUgRW1vamkgZGljdCAgICAgICAgICAgICAkZW5hYmxlX2Vtb2ppX2RpY3QKKyAgIFVu aWNvZGUgRW1vamkgZGlyZWN0b3J5ICAgICAgICRVTklDT0RFX0VNT0pJX0RJUgorICAgQ0xEUiBh bm5vdGF0aW9uIGRpcmVjdG9yeSAgICAgJEVNT0pJX0FOTk9UQVRJT05fRElSCisrICBFbmFibGUg SGFyZkJ1enogZm9yIEVtb2ppICAgICAkZW5hYmxlX2hhcmZidXp6X2Zvcl9lbW9qaQorICAgUnVu IHRlc3QgY2FzZXMgICAgICAgICAgICAgICAgJGVuYWJsZV90ZXN0cworIF0pCisgCitkaWZmIC0t Z2l0IGEvdWkvZ3RrMy9NYWtlZmlsZS5hbSBiL3VpL2d0azMvTWFrZWZpbGUuYW0KK2luZGV4IDc4 NmI4MGU2Li5jZDFlOWMyYyAxMDA2NDQKKy0tLSBhL3VpL2d0azMvTWFrZWZpbGUuYW0KKysrKyBi L3VpL2d0azMvTWFrZWZpbGUuYW0KK0BAIC0xNTYsNiArMTU2LDggQEAgRVhUUkFfRElTVCA9ICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgJChtYW5fc2V2ZW5faW5fZmlsZXMpICAg ICAgICAgICAgICAgXAorICAgICBlbW9qaWVyYXBwLnZhbGEgICAgICAgICAgICAgICAgICAgICBc CisgICAgIGd0a3BhbmVsLnhtbC5pbiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgaWJ1c2Zv bnRzZXQuYyAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBpYnVzZm9udHNldC5oICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgIG5vdGlmaWNhdGlvbi1pdGVtLnhtbCAgICAgICAgICAg ICAgIFwKKyAgICAgbm90aWZpY2F0aW9uLXdhdGNoZXIueG1sICAgICAgICAgICAgXAorICAgICAk KE5VTEwpCitAQCAtMTk4LDYgKzIwMCwzNiBAQCBlbW9qaWVyYXBwLm86ICQoc3JjZGlyKS9lbW9q aWVyYXBwLmMKKyAJJChBTV9WX0NDX25vKSQoQ09NUElMRSkgLWMgLW8gJEAgJDwKKyAJJChOVUxM KQorIAorK2lmIEVOQUJMRV9IQVJGQlVaWl9GT1JfRU1PSkkKKytpYnVzX3VpX2d0azNfU09VUkNF UyArPSAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGlidXNmb250c2V0LmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAkKE5VTEwpCisrCisraWJ1c191aV9lbW9q aWVyX1NPVVJDRVMgKz0gICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBpYnVzZm9udHNldC5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgJChOVUxMKQorKworK0FNX0NG TEFHUyArPSBcCisrICAgIEBDQUlST19DRkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorKyAgICBARk9OVENPTkZJR19DRkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgQEhBUkZCVVpaX0NGTEFHU0AgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg ICQoTlVMTCkKKysKKytBTV9MREFERCArPSBcCisrICAgIEBDQUlST19MSUJTQCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBARk9OVENPTkZJR19MSUJTQCAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKysgICAgQEhBUkZCVVpaX0xJQlNAICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisrICAgICQoTlVMTCkKKysKKytBTV9WQUxBRkxBR1MgKz0gXAorKyAgICAt RCBFTkFCTEVfSEFSRkJVWlpfRk9SX0VNT0pJICAgICAgICAgICAgICAgIFwKKysgICAgLS1wa2c9 Y2Fpcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIC0tcGtnPWlidXMt Zm9udHNldC0xLjAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAkKE5VTEwpCisrCisrZW5k aWYKKysjIGVuZCBvZiBFTkFCTEVfSEFSRkJVWlpfRk9SX0VNT0pJCisrCisgbWFuX3NldmVuX2Zp bGVzID0gJChtYW5fc2V2ZW5faW5fZmlsZXM6LjcuaW49LjcpCisgbWFuX3NldmVuX0RBVEEgPSQo bWFuX3NldmVuX2ZpbGVzOi43PS43Lmd6KQorIG1hbl9zZXZlbmRpciA9ICQobWFuZGlyKS9tYW43 CitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEgYi91aS9ndGszL2Vtb2ppZXIudmFs YQoraW5kZXggMzZhYjRiYWIuLjdkNTExNmZlIDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9lbW9qaWVy LnZhbGEKKysrKyBiL3VpL2d0azMvZW1vamllci52YWxhCitAQCAtODAsNiArODAsOSBAQCBjbGFz cyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICB9CisgICAg IH0KKyAgICAgcHJpdmF0ZSBjbGFzcyBFV2hpdGVMYWJlbCA6IEd0ay5MYWJlbCB7CisrI2lmIEVO QUJMRV9IQVJGQlVaWl9GT1JfRU1PSkkKKysgICAgICAgIElCdXMuUmVxdWlzaXRpb25FeCBtX3Jl cXVpc2l0aW9uOworKyNlbmRpZgorICAgICAgICAgcHVibGljIEVXaGl0ZUxhYmVsKHN0cmluZyB0 ZXh0KSB7CisgICAgICAgICAgICAgR0xpYi5PYmplY3QoCisgICAgICAgICAgICAgICAgIG5hbWUg OiAiSUJ1c0Vtb2ppZXJXaGl0ZUxhYmVsIgorQEAgLTg3LDggKzkwLDc4IEBAIGNsYXNzIElCdXNF bW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKKyAgICAgICAgICAgICBpZiAodGV4dCAh PSAiIikKKyAgICAgICAgICAgICAgICAgc2V0X2xhYmVsKHRleHQpOworICAgICAgICAgfQorKyNp ZiBFTkFCTEVfSEFSRkJVWlpfRk9SX0VNT0pJCisrICAgICAgICBwcml2YXRlIHZvaWQgZ2V0X3By ZWZlcnJlZF9zaXplX3dpdGhfaGIob3V0IGludCBtaW5pbXVtX3dpZHRoLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBpbnQgbmF0dXJhbF93aWR0 aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQg aW50IG1pbmltdW1faGVpZ2h0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG91dCBpbnQgbmF0dXJhbF9oZWlnaHQpIHsKKysgICAgICAgICAgICBtaW5p bXVtX3dpZHRoID0gMDsKKysgICAgICAgICAgICBuYXR1cmFsX3dpZHRoID0gMDsKKysgICAgICAg ICAgICBtaW5pbXVtX2hlaWdodCA9IDA7CisrICAgICAgICAgICAgbmF0dXJhbF9oZWlnaHQgPSAw OworKyAgICAgICAgICAgIHZhciB0ZXh0ID0gdGhpcy5nZXRfdGV4dCgpOworKyAgICAgICAgICAg IGlmICh0ZXh0ID09IG51bGwgfHwgdGV4dCA9PSAiIikKKysgICAgICAgICAgICAgICAgcmV0dXJu OworKyAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5nZXRfcGFuZ29fY29udGV4dCgpOwor KyAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9IGNvbnRleHQuZ2V0X2xhbmd1YWdlKCk7CisrICAg ICAgICAgICAgdXBkYXRlX2ZvbnRzZXQobGFuZ3VhZ2UpOworKyAgICAgICAgICAgIENhaXJvLlJl Y3RhbmdsZUludCB3aWRlc3QgPSBDYWlyby5SZWN0YW5nbGVJbnQoKTsKKysgICAgICAgICAgICBt X3JlcXVpc2l0aW9uID0gbV9mb250c2V0LmdldF9wcmVmZXJyZWRfc2l6ZV9oYih0ZXh0LCBvdXQg d2lkZXN0KTsKKysgICAgICAgICAgICBtaW5pbXVtX3dpZHRoID0gd2lkZXN0LndpZHRoOworKyAg ICAgICAgICAgIG5hdHVyYWxfd2lkdGggPSB3aWRlc3Qud2lkdGg7CisrICAgICAgICAgICAgbWlu aW11bV9oZWlnaHQgPSB3aWRlc3QuaGVpZ2h0OworKyAgICAgICAgICAgIG5hdHVyYWxfaGVpZ2h0 ID0gd2lkZXN0LmhlaWdodDsKKysgICAgICAgIH0KKysgICAgICAgIHB1YmxpYyBvdmVycmlkZSB2 b2lkIGdldF9wcmVmZXJyZWRfd2lkdGgob3V0IGludCBtaW5pbXVtX3dpZHRoLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgaW50IG5hdHVyYWxf d2lkdGgpIHsKKysgICAgICAgICAgICBnZXRfcHJlZmVycmVkX3NpemVfd2l0aF9oYihvdXQgbWlu aW11bV93aWR0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQg bmF0dXJhbF93aWR0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu dWxsLCBudWxsKTsKKysgICAgICAgIH0KKysgICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIGdl dF9wcmVmZXJyZWRfaGVpZ2h0KG91dCBpbnQgbWluaW11bV9oZWlnaHQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgaW50IG5hdHVyYWxfaGVp Z2h0KSB7CisrICAgICAgICAgICAgZ2V0X3ByZWZlcnJlZF9zaXplX3dpdGhfaGIobnVsbCwgbnVs bCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgbWluaW11bV9o ZWlnaHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IG5hdHVy YWxfaGVpZ2h0KTsKKysgICAgICAgIH0KKysgICAgICAgIHB1YmxpYyBvdmVycmlkZSBib29sIGRy YXcoQ2Fpcm8uQ29udGV4dCBjcikgeworKyAgICAgICAgICAgIGlmIChtX2ZvbnRzZXQgPT0gbnVs bCkKKysgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgICAgICAgICAgaWYgKG1fcmVx dWlzaXRpb24gPT0gbnVsbCkKKysgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgICAg ICAgICAgaWYgKG1fcmVxdWlzaXRpb24uY2Fpcm9fbGluZXMgPT0gbnVsbCkKKysgICAgICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisrICAgICAgICAgICAgdmFyIHN0eWxlX2NvbnRleHQgPSBnZXRf c3R5bGVfY29udGV4dCgpOworKyAgICAgICAgICAgIEd0ay5BbGxvY2F0aW9uIGFsbG9jYXRpb247 CisrICAgICAgICAgICAgZ2V0X2FsbG9jYXRpb24ob3V0IGFsbG9jYXRpb24pOworKyAgICAgICAg ICAgIHN0eWxlX2NvbnRleHQucmVuZGVyX2JhY2tncm91bmQoY3IsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbi53aWR0aCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRpb24uaGVpZ2h0KTsKKysgICAg ICAgICAgICBHZGsuUkdCQSAqbm9ybWFsX2ZnID0gbnVsbDsKKysgICAgICAgICAgICBzdHlsZV9j b250ZXh0LmdldChHdGsuU3RhdGVGbGFncy5OT1JNQUwsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImNvbG9yIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgbm9y bWFsX2ZnKTsKKysgICAgICAgICAgICBjci5zZXRfb3BlcmF0b3IoQ2Fpcm8uT3BlcmF0b3IuT1ZF Uik7CisrICAgICAgICAgICAgY3Iuc2V0X3NvdXJjZV9yZ2JhKG5vcm1hbF9mZy5yZWQsIG5vcm1h bF9mZy5ncmVlbiwgbm9ybWFsX2ZnLmJsdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5vcm1hbF9mZy5hbHBoYSk7CisrICAgICAgICAgICAgY3Iuc2F2ZSgpOworKyAgICAgICAg ICAgIGRvdWJsZSB4ID0gMC4wOworKyAgICAgICAgICAgIGRvdWJsZSB5ID0gMC4wOworKyAgICAg ICAgICAgIGlmIChhbGxvY2F0aW9uLndpZHRoID4gbV9yZXF1aXNpdGlvbi53aWR0aCkKKysgICAg ICAgICAgICAgICAgeCA9IChhbGxvY2F0aW9uLndpZHRoIC0gbV9yZXF1aXNpdGlvbi53aWR0aCkg LyAyLjA7CisrICAgICAgICAgICAgaWYgKGFsbG9jYXRpb24uaGVpZ2h0ID4gbV9yZXF1aXNpdGlv bi5oZWlnaHQpCisrICAgICAgICAgICAgICAgIHkgPSAoYWxsb2NhdGlvbi5oZWlnaHQgLSBtX3Jl cXVpc2l0aW9uLmhlaWdodCkgLyAyLjA7CisrICAgICAgICAgICAgY3IudHJhbnNsYXRlKHgsIHkp OworKyAgICAgICAgICAgIG1fZm9udHNldC5kcmF3X2NhaXJvX3dpdGhfcmVxdWlzaXRpb25fZXgo Y3IsIG1fcmVxdWlzaXRpb24pOworKyAgICAgICAgICAgIGNyLnJlc3RvcmUoKTsKKysgICAgICAg ICAgICBub3JtYWxfZmcuZnJlZSgpOworKyAgICAgICAgICAgIG5vcm1hbF9mZyA9IG51bGw7Cisr ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgICAgICB9CisrI2VuZGlmCisgICAgIH0KKy0g ICAgcHJpdmF0ZSBjbGFzcyBFU2VsZWN0ZWRMYWJlbCA6IEd0ay5MYWJlbCB7CisrICAgIHByaXZh dGUgY2xhc3MgRVNlbGVjdGVkTGFiZWwgOiBFV2hpdGVMYWJlbCB7CisgICAgICAgICBwdWJsaWMg RVNlbGVjdGVkTGFiZWwoc3RyaW5nIHRleHQpIHsKKyAgICAgICAgICAgICBHTGliLk9iamVjdCgK KyAgICAgICAgICAgICAgICAgbmFtZSA6ICJJQnVzRW1vamllclNlbGVjdGVkTGFiZWwiCitAQCAt OTcsNyArMTcwLDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cg eworICAgICAgICAgICAgICAgICBzZXRfbGFiZWwodGV4dCk7CisgICAgICAgICB9CisgICAgIH0K Ky0gICAgcHJpdmF0ZSBjbGFzcyBFR29sZExhYmVsIDogR3RrLkxhYmVsIHsKKysgICAgcHJpdmF0 ZSBjbGFzcyBFR29sZExhYmVsIDogRVdoaXRlTGFiZWwgeworICAgICAgICAgcHVibGljIEVHb2xk TGFiZWwoc3RyaW5nIHRleHQpIHsKKyAgICAgICAgICAgICBHTGliLk9iamVjdCgKKyAgICAgICAg ICAgICAgICAgbmFtZSA6ICJJQnVzRW1vamllckdvbGRMYWJlbCIKK0BAIC0yMTIsNiArMjg1LDkg QEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICAgICAg ICAgIG1fY2F0ZWdvcnlfdG9fZW1vamlzX2RpY3Q7CisgICAgIHByaXZhdGUgc3RhdGljIEdMaWIu SGFzaFRhYmxlPHN0cmluZywgR0xpYi5TTGlzdDxzdHJpbmc+Pj8KKyAgICAgICAgICAgICBtX2Vt b2ppX3RvX2Vtb2ppX3ZhcmlhbnRzX2RpY3Q7CisrI2lmIEVOQUJMRV9IQVJGQlVaWl9GT1JfRU1P SkkKKysgICAgcHJpdmF0ZSBzdGF0aWMgSUJ1cy5Gb250U2V0IG1fZm9udHNldDsKKysjZW5kaWYK KyAKKyAgICAgcHJpdmF0ZSBUaGVtZWRSR0JBIG1fcmdiYTsKKyAgICAgcHJpdmF0ZSBHdGsuQm94 IG1fdmJveDsKK0BAIC0xNjAxLDYgKzE2NzcsMjIgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsu QXBwbGljYXRpb25XaW5kb3cgeworICAgICB9CisgCisgCisrI2lmIEVOQUJMRV9IQVJGQlVaWl9G T1JfRU1PSkkKKysgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB1cGRhdGVfZm9udHNldChQYW5nby5M YW5ndWFnZSBsYW5ndWFnZSkgeworKyAgICAgICAgaWYgKG1fZm9udHNldCAhPSBudWxsKSB7Cisr ICAgICAgICAgICAgbV9mb250c2V0LnNldF9mYW1pbHkobV9lbW9qaV9mb250X2ZhbWlseSk7Cisr ICAgICAgICAgICAgbV9mb250c2V0LnNldF9zaXplKG1fZW1vamlfZm9udF9zaXplKTsKKysgICAg ICAgICAgICBtX2ZvbnRzZXQuc2V0X2xhbmd1YWdlKGxhbmd1YWdlLnRvX3N0cmluZygpKTsKKysg ICAgICAgICAgICBtX2ZvbnRzZXQudXBkYXRlX2ZjZm9udHNldCgpOworKyAgICAgICAgfSBlbHNl IHsKKysgICAgICAgICAgICBtX2ZvbnRzZXQgPSBuZXcgSUJ1cy5Gb250U2V0LndpdGhfZm9udCgK KysgICAgICAgICAgICAgICAgICAgIG1fZW1vamlfZm9udF9mYW1pbHksCisrICAgICAgICAgICAg ICAgICAgICBtX2Vtb2ppX2ZvbnRfc2l6ZSwKKysgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdl LnRvX3N0cmluZygpKTsKKysgICAgICAgIH0KKysgICAgfQorKyNlbmRpZgorKworICAgICBwdWJs aWMgc3RhdGljIGJvb2wgaGFzX2xvYWRlZF9lbW9qaV9kaWN0KCkgeworICAgICAgICAgaWYgKG1f ZW1vamlfdG9fZGF0YV9kaWN0ID09IG51bGwpCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor QEAgLTE2MzEsNiArMTcyMywxMCBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlv bldpbmRvdyB7CisgICAgICAgICBpbnQgZm9udF9zaXplID0gZm9udF9kZXNjLmdldF9zaXplKCkg LyBQYW5nby5TQ0FMRTsKKyAgICAgICAgIGlmIChmb250X3NpemUgIT0gMCkKKyAgICAgICAgICAg ICBtX2Vtb2ppX2ZvbnRfc2l6ZSA9IGZvbnRfc2l6ZTsKKysjaWYgRU5BQkxFX0hBUkZCVVpaX0ZP Ul9FTU9KSQorKyAgICAgICAgdmFyIHdpZGdldCA9IG5ldyBHdGsuTGFiZWwoIiIpOworKyAgICAg ICAgdXBkYXRlX2ZvbnRzZXQod2lkZ2V0LmdldF9wYW5nb19jb250ZXh0KCkuZ2V0X2xhbmd1YWdl KCkpOworKyNlbmRpZgorICAgICB9CisgCisgCitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9pYnVzZm9u dHNldC5jIGIvdWkvZ3RrMy9pYnVzZm9udHNldC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggMDAwMDAwMDAuLjY2MDkwZWNkCistLS0gL2Rldi9udWxsCisrKysgYi91aS9ndGszL2lidXNm b250c2V0LmMKK0BAIC0wLDAgKzEsOTMyIEBACisrLyogLSotIG1vZGU6IEM7IGMtYmFzaWMtb2Zm c2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IC0qLSAqLworKy8qIHZpbTpzZXQgZXQgc3Rz PTQ6ICovCisrLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTcg VGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisrICogQ29weXJpZ2h0 IChDKSAyMDE3IFJlZCBIYXQsIEluYy4KKysgKgorKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisr ICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisr ICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgor KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMQorKyAqIFVT QQorKyAqLworKworKyNpbmNsdWRlIDxjYWlyby1mdC5oPgorKyNpbmNsdWRlIDxmb250Y29uZmln L2ZvbnRjb25maWcuaD4KKysjaW5jbHVkZSA8ZnQyYnVpbGQuaD4KKysjaW5jbHVkZSBGVF9GUkVF VFlQRV9ICisrI2luY2x1ZGUgPGdsaWIuaD4KKysjaW5jbHVkZSA8aGItb3QuaD4KKysjaW5jbHVk ZSA8cGFuZ28vcGFuZ28uaD4KKysKKysjaW5jbHVkZSAiaWJ1c2ZvbnRzZXQuaCIKKysKKysjZGVm aW5lIFhQQUQgMgorKyNkZWZpbmUgWVBBRCAyCisrI2RlZmluZSBVTktOT1dOX0ZPTlRfU0laRSA3 CisrI2RlZmluZSBJQlVTX0ZPTlRTRVRfR0VUX1BSSVZBVEUobykgIFwKKysgICAoR19UWVBFX0lO U1RBTkNFX0dFVF9QUklWQVRFICgobyksIElCVVNfVFlQRV9GT05UU0VULCBJQnVzRm9udFNldFBy aXZhdGUpKQorKyNkZWZpbmUgTU9OT1NQQUNFICJtb25vc3BhY2UiCisrI2RlZmluZSBTRVJJRiAg ICAgInNlcmlmIgorKyNkZWZpbmUgU0FOUyAgICAgICJzYW5zIgorKworKworK3N0YXRpYyBGVF9M aWJyYXJ5ICBtX2Z0bGlicmFyeTsKKytzdGF0aWMgRmNGb250U2V0ICAqbV9mY2ZvbnRzZXQ7Cisr c3RhdGljIGdjaGFyICAgICAgKm1fZmFtaWx5OworK3N0YXRpYyBndWludCAgICAgICBtX3NpemU7 Cisrc3RhdGljIGdjaGFyICAgICAgKm1fbGFuZ3VhZ2U7Cisrc3RhdGljIEdIYXNoVGFibGUgKm1f c2NhbGVkX2ZvbnRfdGFibGU7Cisrc3RhdGljIEdIYXNoVGFibGUgKm1faGJfZm9udF90YWJsZTsK KysKKytlbnVtIHsKKysgICAgUFJPUF8wLAorKyAgICBQUk9QX0ZBTUlMWSwKKysgICAgUFJPUF9T SVpFLAorKyAgICBQUk9QX0xBTkdVQUdFCisrfTsKKysKKyt0eXBlZGVmIHN0cnVjdCB7CisrICAg IGd1bmljaGFyICAgY2g7CisrICAgIEZjUGF0dGVybiAqZmNmb250OworK30gRm9udFBlckNoYXI7 CisrCisrc3RydWN0IF9JQnVzRm9udFNldFByaXZhdGUgeworKyAgICBnY2hhciAgICAgKmZhbWls eTsKKysgICAgZ3VpbnQgICAgICBzaXplOworKyAgICBnY2hhciAgICAgKmxhbmd1YWdlOworK307 CisrCisrc3RhdGljIEdPYmplY3QgKiBpYnVzX2ZvbnRzZXRfY29uc3RydWN0b3IgICAoR1R5cGUg ICAgICAgICAgICAgICAgICB0eXBlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgbiwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHT2JqZWN0Q29uc3RydWN0UGFyYW0gKmFyZ3Mp OworK3N0YXRpYyB2b2lkICAgICAgaWJ1c19mb250c2V0X2Rlc3Ryb3kgICAgICAgKElCdXNGb250 U2V0ICAgICAgICAgICAqZm9udHNldCk7Cisrc3RhdGljIHZvaWQgICAgICBpYnVzX2ZvbnRzZXRf c2V0X3Byb3BlcnR5ICAoSUJ1c0ZvbnRTZXQgICAgICAgICAgICpmb250c2V0LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAg ICAgcHJvcF9pZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBHVmFsdWUgICAgICAgICAgKnZhbHVlLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdQYXJhbVNwZWMgICAgICAgICAgICAqcHNwZWMpOworK3N0 YXRpYyB2b2lkICAgICAgaWJ1c19mb250c2V0X2dldF9wcm9wZXJ0eSAgKElCdXNGb250U2V0ICAg ICAgICAgICAqZm9udHNldCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBndWludCAgICAgICAgICAgICAgICAgIHByb3BfaWQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhbHVlICAgICAgICAgICAgICAgICp2YWx1 ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1T cGVjICAgICAgICAgICAgKnBzcGVjKTsKKytzdGF0aWMgY2Fpcm9fc2NhbGVkX2ZvbnRfdCAqCisr ICAgICAgICAgICAgICAgICBpYnVzX2ZvbnRzZXRfY2Fpcm9fc2NhbGVkX2ZvbnRfbmV3X3dpdGhf Zm9udAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0 IGdjaGFyICAgICAgICAgICAqZmFtaWx5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgc2l6ZSk7CisrCisrR19ERUZJ TkVfQk9YRURfVFlQRSAoSUJ1c0NhaXJvTGluZSwKKysgICAgICAgICAgICAgICAgICAgICBpYnVz X2NhaXJvX2xpbmUsCisrICAgICAgICAgICAgICAgICAgICAgaWJ1c19jYWlyb19saW5lX2NvcHks CisrICAgICAgICAgICAgICAgICAgICAgaWJ1c19jYWlyb19saW5lX2ZyZWUpOworK0dfREVGSU5F X0JPWEVEX1RZUEUgKElCdXNSZXF1aXNpdGlvbkV4LAorKyAgICAgICAgICAgICAgICAgICAgIGli dXNfcmVxdWlzaXRpb25fZXgsCisrICAgICAgICAgICAgICAgICAgICAgaWJ1c19yZXF1aXNpdGlv bl9leF9jb3B5LAorKyAgICAgICAgICAgICAgICAgICAgIGlidXNfcmVxdWlzaXRpb25fZXhfZnJl ZSk7CisrR19ERUZJTkVfVFlQRSAoSUJ1c0ZvbnRTZXQsIGlidXNfZm9udHNldCwgSUJVU19UWVBF X09CSkVDVCkKKysKKytzdGF0aWMgdm9pZAorK2lidXNfZm9udHNldF9jbGFzc19pbml0IChJQnVz Rm9udFNldENsYXNzICpjbGFzcykKKyt7CisrICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFz cyA9IEdfT0JKRUNUX0NMQVNTIChjbGFzcyk7CisrICAgIElCdXNPYmplY3RDbGFzcyAqb2JqZWN0 X2NsYXNzID0gSUJVU19PQkpFQ1RfQ0xBU1MgKGNsYXNzKTsKKysgICAgY2Fpcm9fZ2x5cGhfdCBk dW1teTsKKysgICAgSUJ1c0dseXBoIGR1bW15MjsKKysKKysgICAgZ29iamVjdF9jbGFzcy0+Y29u c3RydWN0b3IgPSBpYnVzX2ZvbnRzZXRfY29uc3RydWN0b3I7CisrICAgIGdvYmplY3RfY2xhc3Mt PmdldF9wcm9wZXJ0eSA9CisrICAgICAgICAgICAgKEdPYmplY3RHZXRQcm9wZXJ0eUZ1bmMpIGli dXNfZm9udHNldF9nZXRfcHJvcGVydHk7CisrICAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0 eSA9CisrICAgICAgICAgICAgKEdPYmplY3RTZXRQcm9wZXJ0eUZ1bmMpIGlidXNfZm9udHNldF9z ZXRfcHJvcGVydHk7CisrICAgIG9iamVjdF9jbGFzcy0+ZGVzdHJveSA9IChJQnVzT2JqZWN0RGVz dHJveUZ1bmMpIGlidXNfZm9udHNldF9kZXN0cm95OworKworKyAgICAvKiBpbnN0YWxsIHByb3Bl cnRpZXMgKi8KKysgICAgLyoqCisrICAgICAqIElCdXNGb250U2V0OmZhbWlseToKKysgICAgICoK KysgICAgICogRm9udCBmYW1pbHkgb2YgdGhpcyBJQnVzRm9udFNldC4KKysgICAgICovCisrICAg IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisrICAgICAg ICAgICAgICAgICAgICBQUk9QX0ZBTUlMWSwKKysgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1f c3BlY19zdHJpbmcgKCJmYW1pbHkiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJmYW1pbHki LAorKyAgICAgICAgICAgICAgICAgICAgICAgICJmYW1pbHkiLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICIiLAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwg R19QQVJBTV9DT05TVFJVQ1QpKTsKKysKKysgICAgLyoqCisrICAgICAqIElCdXNGb250U2V0OnNp emU6CisrICAgICAqCisrICAgICAqIEZvbnQgc2l6ZSBvZiB0aGlzIElCdXNGb250U2V0LgorKyAg ICAgKi8KKysgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFz cywKKysgICAgICAgICAgICAgICAgICAgIFBST1BfU0laRSwKKysgICAgICAgICAgICAgICAgICAg IGdfcGFyYW1fc3BlY191aW50ICgic2l6ZSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgInNp emUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJzaXplIiwKKysgICAgICAgICAgICAgICAg ICAgICAgICAwLCBHX01BWFVJTlQxNiwgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX1BB UkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKSk7CisrCisrICAgIC8qKgorKyAgICAg KiBJQnVzRm9udFNldDpsYW5ndWFnZToKKysgICAgICoKKysgICAgICogRm9udCBsYW5ndWFnZSBv ZiB0aGlzIElCdXNGb250U2V0LgorKyAgICAgKi8KKysgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs bF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysgICAgICAgICAgICAgICAgICAgIFBST1BfTEFO R1VBR0UsCisrICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgibGFuZ3Vh Z2UiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSIsCisrICAgICAgICAgICAg ICAgICAgICAgICAgImxhbmd1YWdlIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAiIiwKKysg ICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RS VUNUKSk7CisrCisrICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSAoY2xhc3MsIHNpemVvZiAo SUJ1c0ZvbnRTZXRQcml2YXRlKSk7CisrICAgIEZUX0luaXRfRnJlZVR5cGUgKCZtX2Z0bGlicmFy eSk7CisrICAgIG1fc2NhbGVkX2ZvbnRfdGFibGUgPSBnX2hhc2hfdGFibGVfbmV3X2Z1bGwgKAor KyAgICAgICAgICAgIGdfc3RyX2hhc2gsIGdfc3RyX2VxdWFsLAorKyAgICAgICAgICAgIGdfZnJl ZSwKKysgICAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGNhaXJvX3NjYWxlZF9mb250X2Rlc3Ry b3kpOworKyAgICBtX2hiX2ZvbnRfdGFibGUgPSBnX2hhc2hfdGFibGVfbmV3X2Z1bGwgKAorKyAg ICAgICAgICAgIGdfc3RyX2hhc2gsIGdfc3RyX2VxdWFsLAorKyAgICAgICAgICAgIGdfZnJlZSwK KysgICAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGhiX2ZvbnRfZGVzdHJveSk7CisrCisrICAg IC8qIGhiX2dseXBoX3QgaXMgbm90IGF2YWlsYWJsZSBpbiBWYWxhIHNvIG92ZXJyaWRlIGl0IHdp dGggSUJ1c0dseXBoLiAqLworKyAgICBnX2Fzc2VydCAoc2l6ZW9mIChkdW1teSkgPT0gc2l6ZW9m IChkdW1teTIpKTsKKysgICAgZ19hc3NlcnQgKHNpemVvZiAoZHVtbXkuaW5kZXgpID09IHNpemVv ZiAoZHVtbXkyLmluZGV4KSk7CisrICAgIGdfYXNzZXJ0IChzaXplb2YgKGR1bW15LngpID09IHNp emVvZiAoZHVtbXkyLngpKTsKKysgICAgZ19hc3NlcnQgKHNpemVvZiAoZHVtbXkueSkgPT0gc2l6 ZW9mIChkdW1teTIueSkpOworK30KKysKKytzdGF0aWMgdm9pZAorK2lidXNfZm9udHNldF9pbml0 IChJQnVzRm9udFNldCAqZm9udHNldCkKKyt7CisrICAgIGZvbnRzZXQtPnByaXYgPSBJQlVTX0ZP TlRTRVRfR0VUX1BSSVZBVEUgKGZvbnRzZXQpOworK30KKysKKysKKytzdGF0aWMgR09iamVjdCAq CisraWJ1c19mb250c2V0X2NvbnN0cnVjdG9yIChHVHlwZSAgICAgICAgICAgICAgICAgICB0eXBl LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgbiwK KysgICAgICAgICAgICAgICAgICAgICAgICAgIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSAgKmFyZ3Mp CisreworKyAgICBHT2JqZWN0ICpvYmplY3Q7CisrICAgIElCdXNGb250U2V0ICpmb250c2V0Owor KyAgICBjb25zdCBnY2hhciAqZmFtaWx5OworKyAgICBndWludCBzaXplOworKworKyAgICBvYmpl Y3QgPSBHX09CSkVDVF9DTEFTUyAoaWJ1c19mb250c2V0X3BhcmVudF9jbGFzcyktPmNvbnN0cnVj dG9yICgKKysgICAgICAgICAgICB0eXBlLCBuICxhcmdzKTsKKysgICAgZm9udHNldCA9IElCVVNf Rk9OVFNFVCAob2JqZWN0KTsKKysgICAgZmFtaWx5ID0gaWJ1c19mb250c2V0X2dldF9mYW1pbHkg KGZvbnRzZXQpOworKyAgICBzaXplID0gaWJ1c19mb250c2V0X2dldF9zaXplIChmb250c2V0KTsK KysgICAgaWJ1c19mb250c2V0X3VwZGF0ZV9mY2ZvbnRzZXQgKGZvbnRzZXQpOworKyAgICBpZiAo ZmFtaWx5ICE9IE5VTEwgJiYgc2l6ZSA+IDApIHsKKysgICAgICAgIC8qIGNhY2hlIHRoZSBmb250 ICovCisrICAgICAgICBpYnVzX2ZvbnRzZXRfY2Fpcm9fc2NhbGVkX2ZvbnRfbmV3X3dpdGhfZm9u dCAoZmFtaWx5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemUpOworKyAgICB9CisrICAgIHJldHVybiBvYmplY3Q7CisrfQorKworK3N0 YXRpYyB2b2lkCisraWJ1c19mb250c2V0X2Rlc3Ryb3kgKElCdXNGb250U2V0ICpmb250c2V0KQor K3sKKysgICAgZ19jbGVhcl9wb2ludGVyICgmZm9udHNldC0+cHJpdi0+ZmFtaWx5LCBnX2ZyZWUp OworKyAgICBnX2NsZWFyX3BvaW50ZXIgKCZmb250c2V0LT5wcml2LT5sYW5ndWFnZSwgZ19mcmVl KTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytpYnVzX2ZvbnRzZXRfc2V0X3Byb3BlcnR5IChJQnVz Rm9udFNldCAgKmZvbnRzZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAg ICAgICBwcm9wX2lkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdWYWx1ZSAq dmFsdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAgICpwc3BlYykK Kyt7CisrICAgIHN3aXRjaCAocHJvcF9pZCkgeworKyAgICBjYXNlIFBST1BfRkFNSUxZOgorKyAg ICAgICAgaWJ1c19mb250c2V0X3NldF9mYW1pbHkgKGZvbnRzZXQsIGdfdmFsdWVfZ2V0X3N0cmlu ZyAodmFsdWUpKTsKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfU0laRToKKysgICAg ICAgIGlidXNfZm9udHNldF9zZXRfc2l6ZSAoZm9udHNldCwgZ192YWx1ZV9nZXRfdWludCAodmFs dWUpKTsKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfTEFOR1VBR0U6CisrICAgICAg ICBpYnVzX2ZvbnRzZXRfc2V0X2xhbmd1YWdlIChmb250c2V0LCBnX3ZhbHVlX2dldF9zdHJpbmcg KHZhbHVlKSk7CisrICAgICAgICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAgICAgIEdfT0JK RUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAoZm9udHNldCwgcHJvcF9pZCwgcHNwZWMpOwor KyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkCisraWJ1c19mb250c2V0X2dldF9wcm9wZXJ0eSAo SUJ1c0ZvbnRTZXQgKmZvbnRzZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQg ICAgICAgICAgcHJvcF9pZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFsdWUgICAg ICAgICp2YWx1ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVjICAgICpw c3BlYykKKyt7CisrICAgIHN3aXRjaCAocHJvcF9pZCkgeworKyAgICBjYXNlIFBST1BfRkFNSUxZ OgorKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgaWJ1c19mb250c2V0X2dldF9m YW1pbHkgKGZvbnRzZXQpKTsKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfU0laRToK KysgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBpYnVzX2ZvbnRzZXRfZ2V0X3NpemUg KGZvbnRzZXQpKTsKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfTEFOR1VBR0U6Cisr ICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBpYnVzX2ZvbnRzZXRfZ2V0X2xhbmd1 YWdlIChmb250c2V0KSk7CisrICAgICAgICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAgICAg IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAoZm9udHNldCwgcHJvcF9pZCwgcHNw ZWMpOworKyAgICB9CisrfQorKworK3N0YXRpYyBjYWlyb19zY2FsZWRfZm9udF90ICoKKytpYnVz X2ZvbnRzZXRfY2Fpcm9fc2NhbGVkX2ZvbnRfbmV3X3dpdGhfZm9udCAoY29uc3QgZ2NoYXIgKmZh bWlseSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vp bnQgICAgICAgIHNpemUpCisreworKyAgICBnY2hhciAqZm9udF9uYW1lOworKyAgICBjYWlyb19z Y2FsZWRfZm9udF90ICpzY2FsZWRfZm9udCA9IE5VTEw7CisrICAgIEZjUGF0dGVybiAqcGF0dGVy biwgKnJlc29sdmVkOworKyAgICBGY1Jlc3VsdCByZXN1bHQ7CisrICAgIGNhaXJvX2ZvbnRfb3B0 aW9uc190ICpmb250X29wdGlvbnM7CisrICAgIGRvdWJsZSBwaXhlbF9zaXplID0gMC47CisrICAg IEZjTWF0cml4IGZjX21hdHJpeCwgKmZjX21hdHJpeF92YWw7CisrICAgIGNhaXJvX2ZvbnRfZmFj ZV90ICpjYWlyb19mYWNlID0gTlVMTDsKKysgICAgY2Fpcm9fbWF0cml4X3QgZm9udF9tYXRyaXg7 CisrICAgIGNhaXJvX21hdHJpeF90IGN0bTsKKysgICAgaW50IGk7CisrCisrICAgIGdfcmV0dXJu X3ZhbF9pZl9mYWlsIChmYW1pbHkgIT0gTlVMTCwgTlVMTCk7CisrICAgIGdfcmV0dXJuX3ZhbF9p Zl9mYWlsIChtX3NjYWxlZF9mb250X3RhYmxlICE9IE5VTEwsIE5VTEwpOworKworKyAgICBmb250 X25hbWUgPSBnX3N0cmR1cF9wcmludGYgKCIlcyAldSIsIGZhbWlseSwgc2l6ZSk7CisrICAgIHNj YWxlZF9mb250ID0gZ19oYXNoX3RhYmxlX2xvb2t1cCAobV9zY2FsZWRfZm9udF90YWJsZSwgZm9u dF9uYW1lKTsKKysgICAgaWYgKHNjYWxlZF9mb250ICE9IE5VTEwpIHsKKysgICAgICAgIGdfZnJl ZSAoZm9udF9uYW1lKTsKKysgICAgICAgIHJldHVybiBzY2FsZWRfZm9udDsKKysgICAgfQorKyAg ICBwYXR0ZXJuID0gRmNQYXR0ZXJuQ3JlYXRlICgpOworKyAgICBGY1BhdHRlcm5BZGRTdHJpbmcg KHBhdHRlcm4sIEZDX0ZBTUlMWSwgKEZjQ2hhcjgqKSBmYW1pbHkpOworKyAgICBGY1BhdHRlcm5B ZGREb3VibGUgKHBhdHRlcm4sIEZDX1NJWkUsIChkb3VibGUpIHNpemUpOworKyAgICBGY1BhdHRl cm5BZGREb3VibGUgKHBhdHRlcm4sIEZDX0RQSSwgOTYpOworKyAgICBGY0NvbmZpZ1N1YnN0aXR1 dGUoTlVMTCwgcGF0dGVybiwgRmNNYXRjaFBhdHRlcm4pOworKyAgICBmb250X29wdGlvbnMgPSBj YWlyb19mb250X29wdGlvbnNfY3JlYXRlICgpOworKyAgICBjYWlyb19mdF9mb250X29wdGlvbnNf c3Vic3RpdHV0ZSAoZm9udF9vcHRpb25zLCBwYXR0ZXJuKTsKKysgICAgRmNEZWZhdWx0U3Vic3Rp dHV0ZSAocGF0dGVybik7CisrICAgIHJlc29sdmVkID0gRmNGb250TWF0Y2ggKE5VTEwsIHBhdHRl cm4sICZyZXN1bHQpOworKyAgICBGY1BhdHRlcm5EZXN0cm95IChwYXR0ZXJuKTsKKysgICAgRmNQ YXR0ZXJuR2V0RG91YmxlIChyZXNvbHZlZCwgRkNfUElYRUxfU0laRSwgMCwgJnBpeGVsX3NpemUp OworKyAgICBpZiAocGl4ZWxfc2l6ZSA9PSAwLikKKysgICAgICAgIGdfd2FybmluZyAoIkZhaWxl ZCB0byBzY2FsZWQgdGhlIGZvbnQ6ICVzICV1IiwgZmFtaWx5LCBzaXplKTsKKysgICAgY2Fpcm9f ZmFjZSA9IGNhaXJvX2Z0X2ZvbnRfZmFjZV9jcmVhdGVfZm9yX3BhdHRlcm4gKHJlc29sdmVkKTsK KysgICAgRmNNYXRyaXhJbml0ICgmZmNfbWF0cml4KTsKKysgICAgZm9yIChpID0gMDsKKysgICAg ICAgICBGY1BhdHRlcm5HZXRNYXRyaXggKHJlc29sdmVkLCBGQ19NQVRSSVgsIGksICZmY19tYXRy aXhfdmFsKQorKyAgICAgICAgICAgICAgICAgPT0gRmNSZXN1bHRNYXRjaDsKKysgICAgICAgICBp KyspIHsKKysgICAgICAgIEZjTWF0cml4TXVsdGlwbHkgKCZmY19tYXRyaXgsICZmY19tYXRyaXgs IGZjX21hdHJpeF92YWwpOworKyAgICB9CisrICAgIEZjUGF0dGVybkRlc3Ryb3kgKHJlc29sdmVk KTsKKysgICAgY2Fpcm9fbWF0cml4X2luaXQgKCZmb250X21hdHJpeCwKKysgICAgICAgICAgICAg ICAgICAgICAgIGZjX21hdHJpeC54eCwgLWZjX21hdHJpeC55eCwKKysgICAgICAgICAgICAgICAg ICAgICAgIC1mY19tYXRyaXgueHksIGZjX21hdHJpeC55eSwKKysgICAgICAgICAgICAgICAgICAg ICAgIDAuLCAwLik7CisrICAgIGlmIChwaXhlbF9zaXplICE9IDAuKQorKyAgICAgICAgY2Fpcm9f bWF0cml4X3NjYWxlICgmZm9udF9tYXRyaXgsIHBpeGVsX3NpemUsIHBpeGVsX3NpemUpOworKyAg ICBjYWlyb19tYXRyaXhfaW5pdF9pZGVudGl0eSAoJmN0bSk7CisrICAgIHNjYWxlZF9mb250ID0g Y2Fpcm9fc2NhbGVkX2ZvbnRfY3JlYXRlIChjYWlyb19mYWNlLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvbnRfbWF0cml4LCAmY3RtLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udF9vcHRpb25zKTsKKysgICAg Y2Fpcm9fZm9udF9mYWNlX2Rlc3Ryb3kgKGNhaXJvX2ZhY2UpOworKyAgICBpZiAoZm9udF9uYW1l KQorKyAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydChtX3NjYWxlZF9mb250X3RhYmxlLCBmb250 X25hbWUsIHNjYWxlZF9mb250KTsKKysKKysgICAgcmV0dXJuIHNjYWxlZF9mb250OworK30KKysK KytzdGF0aWMgaGJfZm9udF90ICoKKytpYnVzX2ZvbnRzZXRfaGJfZm9udF9uZXdfd2l0aF9mb250 X3BhdGggKGNvbnN0IGdjaGFyICpmb250X3BhdGgpCisreworKyAgICBoYl9mb250X3QgKmhiX2Zv bnQ7CisrICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworKyAgICBHTWFwcGVkRmlsZSAqbWY7Cisr ICAgIGNoYXIgKmZvbnRfZGF0YSA9IE5VTEw7CisrICAgIGdzaXplIGxlbjsKKysgICAgaGJfYmxv Yl90ICpoYl9ibG9iOworKyAgICBoYl9mYWNlX3QgKmhiX2ZhY2U7CisrCisrICAgIGdfcmV0dXJu X3ZhbF9pZl9mYWlsIChmb250X3BhdGggIT0gTlVMTCwgTlVMTCk7CisrICAgIGdfcmV0dXJuX3Zh bF9pZl9mYWlsIChtX2hiX2ZvbnRfdGFibGUgIT0gTlVMTCwgTlVMTCk7CisrCisrICAgIGhiX2Zv bnQgPSBnX2hhc2hfdGFibGVfbG9va3VwIChtX2hiX2ZvbnRfdGFibGUsIGZvbnRfcGF0aCk7Cisr ICAgIGlmIChoYl9mb250ICE9IE5VTEwpCisrICAgICAgICByZXR1cm4gaGJfZm9udDsKKysKKysg ICAgbWYgPSBnX21hcHBlZF9maWxlX25ldyAoZm9udF9wYXRoLCBGQUxTRSwgJmVycm9yKTsKKysg ICAgaWYgKG1mID09IE5VTEwpIHsKKysgICAgICAgIGdfd2FybmluZyAoIk5vdCBmb3VuZCBmb250 ICVzIiwgZm9udF9wYXRoKTsKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9CisrICAgIGZv bnRfZGF0YSA9IGdfbWFwcGVkX2ZpbGVfZ2V0X2NvbnRlbnRzIChtZik7CisrICAgIGxlbiA9IGdf bWFwcGVkX2ZpbGVfZ2V0X2xlbmd0aCAobWYpOworKyAgICBpZiAobGVuID09IDApIHsKKysgICAg ICAgIGdfd2FybmluZyAoInplcm8gc2l6ZSBmb250ICVzIiwgZm9udF9wYXRoKTsKKysgICAgICAg IGdfbWFwcGVkX2ZpbGVfdW5yZWYgKG1mKTsKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9 CisrICAgIGhiX2Jsb2IgPSBoYl9ibG9iX2NyZWF0ZSAoZm9udF9kYXRhLCBsZW4sCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSEJfTUVNT1JZX01PREVfUkVBRE9OTFlfTUFZX01BS0Vf V1JJVEFCTEUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWYsIChoYl9kZXN0cm95 X2Z1bmNfdClnX21hcHBlZF9maWxlX3VucmVmKTsKKysgICAgaGJfZmFjZSA9IGhiX2ZhY2VfY3Jl YXRlIChoYl9ibG9iLCAwKTsKKysgICAgaGJfYmxvYl9kZXN0cm95IChoYl9ibG9iKTsKKysgICAg aGJfZm9udCA9IGhiX2ZvbnRfY3JlYXRlIChoYl9mYWNlKTsKKysgICAgdW5zaWduZWQgaW50IHVw ZW0gPSBoYl9mYWNlX2dldF91cGVtIChoYl9mYWNlKTsKKysgICAgaGJfZm9udF9zZXRfc2NhbGUg KGhiX2ZvbnQsIHVwZW0sIHVwZW0pOworKyAgICBoYl9mYWNlX2Rlc3Ryb3kgKGhiX2ZhY2UpOwor KyAgICBoYl9vdF9mb250X3NldF9mdW5jcyAoaGJfZm9udCk7CisrICAgIGdfaGFzaF90YWJsZV9p bnNlcnQgKG1faGJfZm9udF90YWJsZSwgZ19zdHJkdXAgKGZvbnRfcGF0aCksIGhiX2ZvbnQpOwor KworKyAgICByZXR1cm4gaGJfZm9udDsKKyt9CisrCisrc3RhdGljIHZvaWQKKytnZXRfZm9udF9l eHRlbnRzX3dpdGhfc2NhbGVkX2ZvbnQgKGNhaXJvX3NjYWxlZF9mb250X3QgKnNjYWxlZF9mb250 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFuZ29SZWN0YW5nbGUgICAg ICAqZm9udF9yZWN0KQorK3sKKysgICAgY2Fpcm9fZm9udF9leHRlbnRzX3QgZm9udF9leHRlbnRz OworKworKyAgICBnX2Fzc2VydCAoc2NhbGVkX2ZvbnQgIT0gTlVMTCAmJiBmb250X3JlY3QgIT0g TlVMTCk7CisrCisrICAgIGNhaXJvX3NjYWxlZF9mb250X2V4dGVudHMgKHNjYWxlZF9mb250LCAm Zm9udF9leHRlbnRzKTsKKysgICAgZm9udF9yZWN0LT54ID0gMDsKKysgICAgZm9udF9yZWN0LT55 ID0gLSBwYW5nb191bml0c19mcm9tX2RvdWJsZSAoZm9udF9leHRlbnRzLmFzY2VudCk7CisrICAg IGZvbnRfcmVjdC0+d2lkdGggPSAwOworKyAgICBmb250X3JlY3QtPmhlaWdodCA9IHBhbmdvX3Vu aXRzX2Zyb21fZG91YmxlICgKKysgICAgICAgICAgICBmb250X2V4dGVudHMuYXNjZW50ICsgZm9u dF9leHRlbnRzLmRlc2NlbnQpOworK30KKysKKytzdGF0aWMgdm9pZAorK2dldF9nbHlwaF9leHRl bnRzX3dpdGhfc2NhbGVkX2hiX2ZvbnQgKGNvbnN0IGdjaGFyICAgICAgICAgICpzdHIsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCAg KnNjYWxlZF9mb250LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhi X2ZvbnRfdCAgICAgICAgICAgICpoYl9mb250LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBhbmdvUmVjdGFuZ2xlICAgICAgICpmb250X3JlY3QsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c0NhaXJvTGluZSAgICAgICAqKmNhaXJv X2xpbmVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZjQ2hhcjgg ICAgICAgICAgICAgICpmYWxsYmFja19mYW1pbHkpCisreworKyAgICBnYm9vbGVhbiBoYXNfdW5r bm93bl9nbHlwaCA9IEZBTFNFOworKyAgICBoYl9idWZmZXJfdCAqaGJfYnVmZmVyOworKyAgICB1 bnNpZ25lZCBpbnQgbGVuLCBuLCBpOworKyAgICBoYl9nbHlwaF9pbmZvX3QgKmluZm87CisrICAg IGhiX2dseXBoX3Bvc2l0aW9uX3QgKnBvczsKKysgICAgZG91YmxlIHg7CisrICAgIGNhaXJvX2ds eXBoX3QgKmdseXBoOworKyAgICBjYWlyb190ZXh0X2V4dGVudHNfdCB0ZXh0X2V4dGVudHMgPSB7 IDAsIH07CisrCisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHN0ciAhPSBOVUxMKTsKKysKKysgICAg aGJfYnVmZmVyID0gaGJfYnVmZmVyX2NyZWF0ZSAoKTsKKysgICAgaGJfYnVmZmVyX2FkZF91dGY4 IChoYl9idWZmZXIsIHN0ciwgLTEsIDAsIC0xKTsKKysgICAgaGJfYnVmZmVyX2d1ZXNzX3NlZ21l bnRfcHJvcGVydGllcyAoaGJfYnVmZmVyKTsKKysgICAgZm9yIChuID0gMDsgKmNhaXJvX2xpbmVz ICYmICgqY2Fpcm9fbGluZXMpW25dLnNjYWxlZF9mb250OyBuKyspOworKyAgICBpZiAobiA9PSAw KQorKyAgICAgICAgKmNhaXJvX2xpbmVzID0gZ19uZXcwIChJQnVzQ2Fpcm9MaW5lLCAyKTsKKysg ICAgZWxzZQorKyAgICAgICAgKmNhaXJvX2xpbmVzID0gZ19yZW5ldyAoSUJ1c0NhaXJvTGluZSwg KmNhaXJvX2xpbmVzLCBuICsgMik7CisrICAgICgqY2Fpcm9fbGluZXMpW24gKyAxXS5zY2FsZWRf Zm9udCA9IE5VTEw7CisrICAgICgqY2Fpcm9fbGluZXMpW24gKyAxXS5udW1fZ2x5cGhzID0gMDsK KysgICAgKCpjYWlyb19saW5lcylbbiArIDFdLmdseXBocyA9IE5VTEw7CisrICAgIGhiX3NoYXBl IChoYl9mb250LCBoYl9idWZmZXIsIE5VTEwsIDApOworKyAgICBsZW4gPSBoYl9idWZmZXJfZ2V0 X2xlbmd0aCAoaGJfYnVmZmVyKTsKKysgICAgaW5mbyA9IGhiX2J1ZmZlcl9nZXRfZ2x5cGhfaW5m b3MgKGhiX2J1ZmZlciwgTlVMTCk7CisrICAgIHBvcyA9IGhiX2J1ZmZlcl9nZXRfZ2x5cGhfcG9z aXRpb25zIChoYl9idWZmZXIsIE5VTEwpOworKyAgICAoKmNhaXJvX2xpbmVzKVtuXS5zY2FsZWRf Zm9udCA9IHNjYWxlZF9mb250OworKyAgICAoKmNhaXJvX2xpbmVzKVtuXS5udW1fZ2x5cGhzID0g bGVuOworKyAgICAoKmNhaXJvX2xpbmVzKVtuXS5nbHlwaHMgPSAoSUJ1c0dseXBoKikgY2Fpcm9f Z2x5cGhfYWxsb2NhdGUgKGxlbiArIDEpOworKyAgICB4ID0gMC47CisrICAgIGZvciAoaSA9IDA7 IGkgPCBsZW47IGkrKykgeworKyAgICAgICAgaGJfY29kZXBvaW50X3QgYyA9IGluZm9baV0uY29k ZXBvaW50OworKyAgICAgICAgaWYgKGMpIHsKKysgICAgICAgICAgICAoKmNhaXJvX2xpbmVzKVtu XS5nbHlwaHNbaV0uaW5kZXggPSBpbmZvW2ldLmNvZGVwb2ludDsKKysgICAgICAgICAgICAoKmNh aXJvX2xpbmVzKVtuXS5nbHlwaHNbaV0ueCA9IHg7CisrICAgICAgICAgICAgKCpjYWlyb19saW5l cylbbl0uZ2x5cGhzW2ldLnkgPSAtZm9udF9yZWN0LT55IC8gUEFOR09fU0NBTEU7CisrICAgICAg ICAgICAgZ2x5cGggPSAoY2Fpcm9fZ2x5cGhfdCAqKSAmKCgqY2Fpcm9fbGluZXMpW25dLmdseXBo c1tpXSk7CisrICAgICAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfZ2x5cGhfZXh0ZW50cyAoc2Nh bGVkX2ZvbnQsIGdseXBoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDEsICZ0ZXh0X2V4dGVudHMpOworKyAgICAgICAgICAgIHggKz0gdGV4dF9leHRlbnRz LndpZHRoOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBoYXNfdW5rbm93bl9nbHlw aCA9IFRSVUU7CisrICAgICAgICAgICAgYyA9IGdfdXRmOF9nZXRfY2hhciAoc3RyKTsKKysgICAg ICAgICAgICAoKmNhaXJvX2xpbmVzKVtuXS5nbHlwaHNbaV0uaW5kZXggPSBQQU5HT19HRVRfVU5L Tk9XTl9HTFlQSCAoYyk7CisrICAgICAgICAgICAgKCpjYWlyb19saW5lcylbbl0uZ2x5cGhzW2ld LnggPSB4OworKyAgICAgICAgICAgICgqY2Fpcm9fbGluZXMpW25dLmdseXBoc1tpXS55ID0gLWZv bnRfcmVjdC0+eSAvIFBBTkdPX1NDQUxFOworKyAgICAgICAgICAgIGdseXBoID0gKGNhaXJvX2ds eXBoX3QgKikgJigoKmNhaXJvX2xpbmVzKVtuXS5nbHlwaHNbaV0pOworKyAgICAgICAgICAgIGNh aXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMgKHNjYWxlZF9mb250LCBnbHlwaCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAmdGV4dF9leHRlbnRz KTsKKysgICAgICAgICAgICB4ICs9IDEwOworKyAgICAgICAgfQorKyAgICB9CisrICAgICgqY2Fp cm9fbGluZXMpW25dLmdseXBoc1tpXS5pbmRleCA9IC0xOworKyAgICAoKmNhaXJvX2xpbmVzKVtu XS5nbHlwaHNbaV0ueCA9IDA7CisrICAgICgqY2Fpcm9fbGluZXMpW25dLmdseXBoc1tpXS55ID0g MDsKKysgICAgZ2x5cGggPSAoY2Fpcm9fZ2x5cGhfdCAqKSAoKmNhaXJvX2xpbmVzKVtuXS5nbHlw aHM7CisrICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMgKHNjYWxlZF9mb250LCBn bHlwaCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuLCAmdGV4dF9l eHRlbnRzKTsKKysgICAgaWYgKHRleHRfZXh0ZW50cy53aWR0aCkgeworKyAgICAgICAgZm9udF9y ZWN0LT53aWR0aCA9IHBhbmdvX3VuaXRzX2Zyb21fZG91YmxlICh0ZXh0X2V4dGVudHMud2lkdGgp OworKyAgICB9IGVsc2UgeworKyAgICAgICAgZm9udF9yZWN0LT53aWR0aCA9IGZvbnRfcmVjdC0+ aGVpZ2h0OworKyAgICB9CisrICAgIGlmIChoYXNfdW5rbm93bl9nbHlwaCAmJiBmYWxsYmFja19m YW1pbHkgIT0gTlVMTCkgeworKyAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCAgKnVua25vd25f Zm9udDsKKysgICAgICAgIHVua25vd25fZm9udCA9IGlidXNfZm9udHNldF9jYWlyb19zY2FsZWRf Zm9udF9uZXdfd2l0aF9mb250ICgKKysgICAgICAgICAgICAoY29uc3QgZ2NoYXIgKikgZmFsbGJh Y2tfZmFtaWx5LAorKyAgICAgICAgICAgIFVOS05PV05fRk9OVF9TSVpFKTsKKysgICAgICAgICgq Y2Fpcm9fbGluZXMpW25dLnNjYWxlZF9mb250ID0gdW5rbm93bl9mb250OworKyAgICB9CisrICAg IGhiX2J1ZmZlcl9kZXN0cm95IChoYl9idWZmZXIpOworK30KKysKKytzdGF0aWMgdm9pZAorK2dl dF9zdHJpbmdfZXh0ZW50c193aXRoX2ZvbnQgKGNvbnN0IGdjaGFyICAgICAgICAgICAgKnN0ciwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb250UGVyQ2hhciAgICAgICAgICAgICpi dWZmLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX3JlY3RhbmdsZV9pbnRf dCAgKnJlY3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c0NhaXJvTGluZSAg ICAgICAgICoqY2Fpcm9fbGluZXMpCisreworKyAgICBGY0NoYXI4ICpmYW1pbHkgPSBOVUxMOwor KyAgICBGY0NoYXI4ICpmb250X3BhdGggPSBOVUxMOworKyAgICBndWludCBzaXplID0gMDsKKysg ICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCAqc2NhbGVkX2ZvbnQgPSBOVUxMOworKyAgICBQYW5nb1Jl Y3RhbmdsZSBmb250X3JlY3QgPSB7IDAsIH07CisrICAgIGhiX2ZvbnRfdCAqaGJfZm9udDsKKysK KysgICAgZ19yZXR1cm5faWZfZmFpbCAoc3RyICE9IE5VTEwpOworKyAgICBnX3JldHVybl9pZl9m YWlsIChidWZmICE9IE5VTEwgJiYgYnVmZi0+ZmNmb250ICE9IE5VTEwpOworKworKyAgICBGY1Bh dHRlcm5HZXRTdHJpbmcgKGJ1ZmYtPmZjZm9udCwgRkNfRkFNSUxZLCAwLCAmZmFtaWx5KTsKKysg ICAgZ19yZXR1cm5faWZfZmFpbCAoZmFtaWx5ICE9IE5VTEwpOworKyAgICBzaXplID0gbV9zaXpl OworKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisrICAgICAgICBnX3dhcm5pbmcgKCJGb250IHNpemUg aXMgbm90IHJpZ2h0IGZvciBmb250ICVzLiIsIGZhbWlseSk7CisrICAgICAgICBzaXplID0gMTQ7 CisrICAgIH0KKysgICAgc2NhbGVkX2ZvbnQgPSBpYnVzX2ZvbnRzZXRfY2Fpcm9fc2NhbGVkX2Zv bnRfbmV3X3dpdGhfZm9udCAoCisrICAgICAgICAgICAgKGNvbnN0IGdjaGFyICopIGZhbWlseSwK KysgICAgICAgICAgICBzaXplKTsKKysgICAgZ19yZXR1cm5faWZfZmFpbCAoc2NhbGVkX2ZvbnQg IT0gTlVMTCk7CisrICAgIGdldF9mb250X2V4dGVudHNfd2l0aF9zY2FsZWRfZm9udCAoc2NhbGVk X2ZvbnQsICZmb250X3JlY3QpOworKworKyAgICBGY1BhdHRlcm5HZXRTdHJpbmcgKGJ1ZmYtPmZj Zm9udCwgRkNfRklMRSwgMCwgJmZvbnRfcGF0aCk7CisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGZv bnRfcGF0aCAhPSBOVUxMKTsKKysgICAgaGJfZm9udCA9IGlidXNfZm9udHNldF9oYl9mb250X25l d193aXRoX2ZvbnRfcGF0aCAoCisrICAgICAgICAgICAgKGNvbnN0IGdjaGFyICopIGZvbnRfcGF0 aCk7CisrICAgIGlmIChoYl9mb250ID09IE5VTEwpCisrICAgICAgICByZXR1cm47CisrICAgIGdl dF9nbHlwaF9leHRlbnRzX3dpdGhfc2NhbGVkX2hiX2ZvbnQgKHN0ciwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVkX2ZvbnQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhiX2ZvbnQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb250X3JlY3QsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2xpbmVzLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkpOworKyAgICByZWN0LT53aWR0aCAr PSBmb250X3JlY3Qud2lkdGggLyBQQU5HT19TQ0FMRTsKKysgICAgcmVjdC0+aGVpZ2h0ICs9IGZv bnRfcmVjdC5oZWlnaHQgLyBQQU5HT19TQ0FMRTsKKyt9CisrCisrc3RhdGljIEZUX0ZhY2UKKytp YnVzX2ZvbnRzZXRfZ2V0X2Z0ZmFjZV9mcm9tX2ZjZm9udCAoSUJ1c0ZvbnRTZXQgKmZvbnRzZXQs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZjUGF0dGVybiAgICpmY2Zv bnQpCisreworKyAgICBGY0NoYXI4ICpmb250X2ZpbGUgPSBOVUxMOworKyAgICBGVF9GYWNlIGZ0 X2ZhY2U7CisrICAgIGd1aW50IHNpemUgPSBpYnVzX2ZvbnRzZXRfZ2V0X3NpemUgKGZvbnRzZXQp OworKworKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19GT05UU0VUIChmb250c2V0 KSwgTlVMTCk7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChmY2ZvbnQgIT0gTlVMTCwgTlVM TCk7CisrCisrICAgIHNpemUgPSBpYnVzX2ZvbnRzZXRfZ2V0X3NpemUgKGZvbnRzZXQpOworKyAg ICBGY1BhdHRlcm5HZXRTdHJpbmcgKGZjZm9udCwgRkNfRklMRSwgMCwgJmZvbnRfZmlsZSk7Cisr ICAgIEZUX05ld19GYWNlIChtX2Z0bGlicmFyeSwgKGNvbnN0IGdjaGFyICopIGZvbnRfZmlsZSwg MCwgJmZ0X2ZhY2UpOworKyAgICBGVF9TZXRfUGl4ZWxfU2l6ZXMgKGZ0X2ZhY2UsIHNpemUsIHNp emUpOworKyAgICByZXR1cm4gZnRfZmFjZTsKKyt9CisrCisrdm9pZAorK19jYWlyb19zaG93X3Vu a25vd25fZ2x5cGhzIChjYWlyb190ICAgICAgICAgICAgICpjciwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2Fpcm9fZ2x5cGhfdCAqZ2x5cGhzLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICBudW1fZ2x5cGhzLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICB3aWR0aCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgaGVpZ2h0KQorK3sKKysg ICAgZ3VuaWNoYXIgY2g7CisrICAgIGdib29sZWFuIGludmFsaWRfaW5wdXQ7CisrICAgIGludCBy b3dzID0gMjsKKysgICAgaW50IGNvbHM7CisrICAgIGludCByb3csIGNvbDsKKysgICAgY2hhciBi dWZbN107CisrICAgIGRvdWJsZSBjeCA9IDAuOworKyAgICBkb3VibGUgY3k7CisrICAgIGNvbnN0 IGRvdWJsZSBib3hfZGVzY2VudCA9IDMuOworKyAgICBkb3VibGUgeDA7CisrICAgIGRvdWJsZSB5 MDsKKysgICAgY29uc3QgZG91YmxlIGRpZ2l0X3dpZHRoID0gNS47CisrICAgIGNvbnN0IGRvdWJs ZSBkaWdpdF9oZWlnaHQ9IDYuOworKyAgICBjaGFyIGhleGJveF9zdHJpbmdbMl0gPSB7MCwgMH07 CisrCisrICAgIGdfYXNzZXJ0IChnbHlwaHMgIT0gTlVMTCk7CisrICAgIGdfYXNzZXJ0IChudW1f Z2x5cGhzID4gMCk7CisrCisrICAgIGNoID0gZ2x5cGhzWzBdLmluZGV4ICYgflBBTkdPX0dMWVBI X1VOS05PV05fRkxBRzsKKysgICAgaW52YWxpZF9pbnB1dCA9IEdfVU5MSUtFTFkgKGdseXBoc1sw XS5pbmRleCA9PSBQQU5HT19HTFlQSF9JTlZBTElEX0lOUFVUIHx8CisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjaCA+IDB4MTBGRkZGKTsKKysgICAgaWYgKEdfVU5MSUtFTFkgKGlu dmFsaWRfaW5wdXQpKSB7CisrICAgICAgZ193YXJuaW5nICgiVW5zdXBwb3J0ZWQgVSslMDZYIiwg IGNoKTsKKysgICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgY2Fpcm9fc2F2ZSAoY3IpOwor KworKyAgICBjb2xzID0gKGNoID4gMHhmZmZmID8gNiA6IDQpIC8gcm93czsKKysgICAgZ19zbnBy aW50ZiAoYnVmLCBzaXplb2YoYnVmKSwgKGNoID4gMHhmZmZmKSA/ICIlMDZYIiA6ICIlMDRYIiwg Y2gpOworKyAgICBjeSA9IChkb3VibGUpIGhlaWdodDsKKysgICAgeDAgPSBjeCArIGJveF9kZXNj ZW50ICsgWFBBRCAvIDI7CisrICAgIHkwID0gY3kgLSBib3hfZGVzY2VudCAtIFlQQUQgLyAyOwor KworKyAgICBmb3IgKHJvdyA9IDA7IHJvdyA8IHJvd3M7IHJvdysrKSB7CisrICAgICAgICBkb3Vi bGUgeSA9IHkwIC0gKHJvd3MgLSAxIC0gcm93KSAqIChkaWdpdF9oZWlnaHQgKyBZUEFEKTsKKysg ICAgICAgIGZvciAoY29sID0gMDsgY29sIDwgY29sczsgY29sKyspIHsKKysgICAgICAgICAgICBk b3VibGUgeCA9IHgwICsgY29sICogKGRpZ2l0X3dpZHRoICsgWFBBRCk7CisrICAgICAgICAgICAg Y2Fpcm9fbW92ZV90byAoY3IsIHgsIHkpOworKyAgICAgICAgICAgIGhleGJveF9zdHJpbmdbMF0g PSBidWZbcm93ICogY29scyArIGNvbF07CisrICAgICAgICAgICAgY2Fpcm9fc2hvd190ZXh0IChj ciwgaGV4Ym94X3N0cmluZyk7CisrICAgICAgICB9CisrICAgIH0KKysgICAgY2Fpcm9fbW92ZV90 byAoY3IsIFhQQUQsIFlQQUQpOworKyAgICBjYWlyb19saW5lX3RvIChjciwgd2lkdGggLSBYUEFE LCBZUEFEKTsKKysgICAgY2Fpcm9fbGluZV90byAoY3IsIHdpZHRoIC0gWFBBRCwKKysgICAgICAg ICAgICAgICAgICAgICAgIGhlaWdodCAtIFlQQUQpOworKyAgICBjYWlyb19saW5lX3RvIChjciwg WFBBRCwgaGVpZ2h0IC0gWVBBRCk7CisrICAgIGNhaXJvX2xpbmVfdG8gKGNyLCBYUEFELCBZUEFE KTsKKysgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGggKGNyLCAxLik7CisrICAgIGNhaXJvX3N0cm9r ZSAoY3IpOworKworKyAgICBjYWlyb19yZXN0b3JlIChjcik7CisrfQorKworK0lCdXNDYWlyb0xp bmUgKgorK2lidXNfY2Fpcm9fbGluZV9jb3B5IChJQnVzQ2Fpcm9MaW5lICpjYWlyb19saW5lcykK Kyt7CisrICAgIElCdXNDYWlyb0xpbmUgKnJldDsKKysgICAgZ3VpbnQgbiwgaSwgaiwgbnVtX2ds eXBoczsKKysgICAgaWYgKCFjYWlyb19saW5lcykKKysgICAgICAgIHJldHVybiBOVUxMOworKwor KyAgICBmb3IgKG4gPSAwOyBjYWlyb19saW5lc1tuXS5zY2FsZWRfZm9udDsgbisrKTsKKysgICAg cmV0ID0gZ19uZXcwIChJQnVzQ2Fpcm9MaW5lLCBuICsgMSk7CisrICAgIGZvciAoaSA9IDA7IGkg PCBuOyBpKyspIHsKKysgICAgICAgIHJldFtpXS5zY2FsZWRfZm9udCA9IGNhaXJvX2xpbmVzW2ld LnNjYWxlZF9mb250OworKyAgICAgICAgbnVtX2dseXBocyA9IGNhaXJvX2xpbmVzW2ldLm51bV9n bHlwaHM7CisrICAgICAgICByZXRbaV0ubnVtX2dseXBocyA9IG51bV9nbHlwaHM7CisrICAgICAg ICByZXRbaV0uZ2x5cGhzID0gKElCdXNHbHlwaCAqKSBjYWlyb19nbHlwaF9hbGxvY2F0ZSAobnVt X2dseXBocyArIDEpOworKyAgICAgICAgZm9yIChqID0gMDsgaiA8IG51bV9nbHlwaHM7IGorKykg eworKyAgICAgICAgICAgIHJldFtpXS5nbHlwaHNbal0gPSBjYWlyb19saW5lc1tpXS5nbHlwaHNb al07CisrICAgICAgICB9CisrICAgICAgICByZXRbaV0uZ2x5cGhzW2pdLmluZGV4ID0gLTE7Cisr ICAgICAgICByZXRbaV0uZ2x5cGhzW2pdLnggPSAwOworKyAgICAgICAgcmV0W2ldLmdseXBoc1tq XS55ID0gMDsKKysgICAgfQorKyAgICByZXRbaV0uc2NhbGVkX2ZvbnQgPSBOVUxMOworKyAgICBy ZXRbaV0ubnVtX2dseXBocyA9IDA7CisrICAgIHJldFtpXS5nbHlwaHMgPSBOVUxMOworKyAgICBy ZXR1cm4gcmV0OworK30KKysKKyt2b2lkCisraWJ1c19jYWlyb19saW5lX2ZyZWUgKElCdXNDYWly b0xpbmUgKmNhaXJvX2xpbmVzKQorK3sKKysgICAgZ3VpbnQgaTsKKysgICAgaWYgKCFjYWlyb19s aW5lcykKKysgICAgICAgIHJldHVybjsKKysgICAgZm9yIChpID0gMDsgY2Fpcm9fbGluZXNbaV0u c2NhbGVkX2ZvbnQ7IGkrKykgeworKyAgICAgICAgZ19mcmVlIChjYWlyb19saW5lc1tpXS5nbHlw aHMpOworKyAgICB9CisrICAgIGdfZnJlZSAoY2Fpcm9fbGluZXMpOworK30KKysKKytJQnVzUmVx dWlzaXRpb25FeCAqCisraWJ1c19yZXF1aXNpdGlvbl9leF9jb3B5IChJQnVzUmVxdWlzaXRpb25F eCAqcmVxKQorK3sKKysgICAgSUJ1c1JlcXVpc2l0aW9uRXggKnJldDsKKysgICAgaWYgKCFyZXEp CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgcmV0ID0gZ19uZXcwIChJQnVzUmVxdWlzaXRp b25FeCwgMSk7CisrICAgIHJldC0+d2lkdGggPSByZXEtPndpZHRoOworKyAgICByZXQtPmhlaWdo dCA9IHJlcS0+aGVpZ2h0OworKyAgICByZXQtPmNhaXJvX2xpbmVzID0gaWJ1c19jYWlyb19saW5l X2NvcHkgKHJlcS0+Y2Fpcm9fbGluZXMpOworKyAgICByZXR1cm4gcmV0OworK30KKysKKyt2b2lk CisraWJ1c19yZXF1aXNpdGlvbl9leF9mcmVlIChJQnVzUmVxdWlzaXRpb25FeCAqcmVxKQorK3sK KysgICAgaWYgKCFyZXEpCisrICAgICAgICByZXR1cm47CisrICAgIGdfY2xlYXJfcG9pbnRlciAo JnJlcS0+Y2Fpcm9fbGluZXMsIGlidXNfY2Fpcm9fbGluZV9mcmVlKTsKKysgICAgZ19mcmVlIChy ZXEpOworK30KKysKKytJQnVzRm9udFNldCAqCisraWJ1c19mb250c2V0X25ldyAoY29uc3QgZ2No YXIgKmZpcnN0X3Byb3BlcnR5X25hbWUsIC4uLikKKyt7CisrICAgIHZhX2xpc3QgdmFyX2FyZ3M7 CisrICAgIElCdXNGb250U2V0ICpmb250c2V0OworKworKyAgICBnX2Fzc2VydCAoZmlyc3RfcHJv cGVydHlfbmFtZSk7CisrCisrICAgIHZhX3N0YXJ0ICh2YXJfYXJncywgZmlyc3RfcHJvcGVydHlf bmFtZSk7CisrICAgIGZvbnRzZXQgPSAoSUJ1c0ZvbnRTZXQgKilnX29iamVjdF9uZXdfdmFsaXN0 IChJQlVTX1RZUEVfRk9OVFNFVCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZpcnN0X3Byb3BlcnR5X25hbWUsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfYXJncyk7CisrICAgIHZhX2VuZCAo dmFyX2FyZ3MpOworKyAgICBnX2Fzc2VydCAoZm9udHNldC0+cHJpdi0+ZmFtaWx5KTsKKysgICAg Z19hc3NlcnQgKGZvbnRzZXQtPnByaXYtPmxhbmd1YWdlKTsKKysgICAgcmV0dXJuIGZvbnRzZXQ7 CisrfQorKworK0lCdXNGb250U2V0ICoKKytpYnVzX2ZvbnRzZXRfbmV3X3dpdGhfZm9udCAoY29u c3QgZ2NoYXIgKmZhbWlseSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAg ICAgIHNpemUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICpsYW5n dWFnZSkKKyt7CisrICAgIHJldHVybiBpYnVzX2ZvbnRzZXRfbmV3ICgiZmFtaWx5IiwgZmFtaWx5 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpemUiLCBzaXplLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImxhbmd1YWdlIiwgbGFuZ3VhZ2UsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOVUxMKTsKKyt9CisrCisrdm9pZAorK2lidXNfZm9udHNldF9leGl0 ICgpCisreworKyAgICBnX2NsZWFyX3BvaW50ZXIgKCZtX2Z0bGlicmFyeSwgRlRfRG9uZV9GcmVl VHlwZSk7CisrfQorKworK2NvbnN0IGdjaGFyICoKKytpYnVzX2ZvbnRzZXRfZ2V0X2ZhbWlseSAo SUJ1c0ZvbnRTZXQgKmZvbnRzZXQpCisreworKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJV U19JU19GT05UU0VUIChmb250c2V0KSwgTlVMTCk7CisrICAgIHJldHVybiBmb250c2V0LT5wcml2 LT5mYW1pbHk7CisrfQorKworK3ZvaWQKKytpYnVzX2ZvbnRzZXRfc2V0X2ZhbWlseSAoSUJ1c0Zv bnRTZXQgKmZvbnRzZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAg KmZhbWlseSkKKyt7CisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfRk9OVFNFVCAoZm9u dHNldCkpOworKyAgICBnX2ZyZWUgKGZvbnRzZXQtPnByaXYtPmZhbWlseSk7CisrICAgIGZvbnRz ZXQtPnByaXYtPmZhbWlseSA9IGdfc3RyZHVwIChmYW1pbHkpOworK30KKysKKytndWludAorK2li dXNfZm9udHNldF9nZXRfc2l6ZSAoSUJ1c0ZvbnRTZXQgKmZvbnRzZXQpCisreworKyAgICBnX3Jl dHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19GT05UU0VUIChmb250c2V0KSwgMCk7CisrICAgIHJl dHVybiBmb250c2V0LT5wcml2LT5zaXplOworK30KKysKKyt2b2lkCisraWJ1c19mb250c2V0X3Nl dF9zaXplIChJQnVzRm9udFNldCAqZm9udHNldCwKKysgICAgICAgICAgICAgICAgICAgICAgIGd1 aW50ICAgICAgICAgIHNpemUpCisreworKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX0ZP TlRTRVQgKGZvbnRzZXQpKTsKKysgICAgZm9udHNldC0+cHJpdi0+c2l6ZSA9IHNpemU7CisrfQor KworK2NvbnN0IGdjaGFyICoKKytpYnVzX2ZvbnRzZXRfZ2V0X2xhbmd1YWdlIChJQnVzRm9udFNl dCAqZm9udHNldCkKKyt7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX0ZPTlRT RVQgKGZvbnRzZXQpLCBOVUxMKTsKKysgICAgcmV0dXJuIGZvbnRzZXQtPnByaXYtPmxhbmd1YWdl OworK30KKysKKyt2b2lkCisraWJ1c19mb250c2V0X3NldF9sYW5ndWFnZSAoSUJ1c0ZvbnRTZXQg KmZvbnRzZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKmxhbmd1 YWdlKQorK3sKKysgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19GT05UU0VUIChmb250c2V0 KSk7CisrICAgIGdfZnJlZSAoZm9udHNldC0+cHJpdi0+bGFuZ3VhZ2UpOworKyAgICBmb250c2V0 LT5wcml2LT5sYW5ndWFnZSA9IGdfc3RyZHVwIChsYW5ndWFnZSk7CisrfQorKworK2dib29sZWFu CisraWJ1c19mb250c2V0X3VwZGF0ZV9mY2ZvbnRzZXQgKElCdXNGb250U2V0ICpmb250c2V0KQor K3sKKysgICAgRmNQYXR0ZXJuICpwYXR0ZXJuOworKyAgICBjb25zdCBnY2hhciAqZmFtaWx5Owor KyAgICBndWludCBzaXplOworKyAgICBjb25zdCBnY2hhciAqbGFuZ3VhZ2U7CisrICAgIGdib29s ZWFuIHVwZGF0ZV9mb250c2V0ID0gRkFMU0U7CisrICAgIEZjUmVzdWx0IHJlc3VsdDsKKysKKysg ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfRk9OVFNFVCAoZm9udHNldCksIEZBTFNF KTsKKysKKysgICAgcGF0dGVybiA9IEZjUGF0dGVybkNyZWF0ZSAoKTsKKysgICAgZmFtaWx5ID0g Zm9udHNldC0+cHJpdi0+ZmFtaWx5OworKyAgICBzaXplID0gZm9udHNldC0+cHJpdi0+c2l6ZTsK KysgICAgbGFuZ3VhZ2UgPSBmb250c2V0LT5wcml2LT5sYW5ndWFnZTsKKysKKysgICAgaWYgKGdf c3RyY21wMCAobV9mYW1pbHksIGZhbWlseSkpIHsKKysgICAgICAgIGdfZnJlZSAobV9mYW1pbHkp OworKyAgICAgICAgbV9mYW1pbHkgPSBnX3N0cmR1cCAoZmFtaWx5KTsKKysgICAgICAgIHVwZGF0 ZV9mb250c2V0ID0gVFJVRTsKKysgICAgfQorKyAgICBpZiAobV9zaXplICE9IHNpemUpIHsKKysg ICAgICAgIG1fc2l6ZSA9IHNpemU7CisrICAgICAgICB1cGRhdGVfZm9udHNldCA9IFRSVUU7Cisr ICAgIH0KKysgICAgaWYgKGdfc3RyY21wMCAobV9sYW5ndWFnZSwgbGFuZ3VhZ2UpKSB7CisrICAg ICAgICBnX2ZyZWUgKG1fbGFuZ3VhZ2UpOworKyAgICAgICAgbV9sYW5ndWFnZSA9IGdfc3RyZHVw IChsYW5ndWFnZSk7CisrICAgICAgICB1cGRhdGVfZm9udHNldCA9IFRSVUU7CisrICAgIH0KKysg ICAgaWYgKCF1cGRhdGVfZm9udHNldCAmJiBtX2ZjZm9udHNldCAhPSBOVUxMKQorKyAgICAgICAg cmV0dXJuIEZBTFNFOworKworKyAgICBpZiAobV9mY2ZvbnRzZXQpCisrICAgICAgICBnX2NsZWFy X3BvaW50ZXIgKCZtX2ZjZm9udHNldCwgRmNGb250U2V0RGVzdHJveSk7CisrCisrICAgIGlmIChn X3N0cmNtcDAgKGZhbWlseSwgIiIpKQorKyAgICAgICAgRmNQYXR0ZXJuQWRkU3RyaW5nIChwYXR0 ZXJuLCBGQ19GQU1JTFksIChjb25zdCBGY0NoYXI4KikgZmFtaWx5KTsKKysgICAgaWYgKHNpemUg PiAwKQorKyAgICAgICAgRmNQYXR0ZXJuQWRkRG91YmxlIChwYXR0ZXJuLCBGQ19TSVpFLCAoZG91 YmxlKSBzaXplKTsKKysgICAgaWYgKGdfc3RyY21wMCAobGFuZ3VhZ2UsICIiKSkKKysgICAgICAg IEZjUGF0dGVybkFkZFN0cmluZyAocGF0dGVybiwgRkNfTEFORywgKGNvbnN0IEZjQ2hhcjgqKSBs YW5ndWFnZSk7CisrICAgIEZjUGF0dGVybkFkZEludGVnZXIgKHBhdHRlcm4sIEZDX1dFSUdIVCwg RkNfV0VJR0hUX05PUk1BTCk7CisrICAgIEZjUGF0dGVybkFkZEludGVnZXIgKHBhdHRlcm4sIEZD X1dJRFRILCBGQ19XSURUSF9OT1JNQUwpOworKyAgICBGY1BhdHRlcm5BZGRJbnRlZ2VyIChwYXR0 ZXJuLCBGQ19EUEksIDk2KTsKKysgICAgaWYgKEZDX1ZFUlNJT04gPj0gMjEyMDUgJiYKKysgICAg ICAgICghZ19hc2NpaV9zdHJuY2FzZWNtcCAoZmFtaWx5LCBNT05PU1BBQ0UsIHN0cmxlbiAoTU9O T1NQQUNFKSkgfHwKKysgICAgICAgICAhZ19hc2NpaV9zdHJuY2FzZWNtcCAoZmFtaWx5LCBTRVJJ Riwgc3RybGVuIChTRVJJRikpIHx8CisrICAgICAgICAgIWdfYXNjaWlfc3RybmNhc2VjbXAgKGZh bWlseSwgU0FOUywgc3RybGVuIChTQU5TKSkpKSB7CisrICAgICAgICBGY1BhdHRlcm5BZGRCb29s IChwYXR0ZXJuLCBGQ19DT0xPUiwgVFJVRSk7CisrICAgIH0KKysgICAgRmNDb25maWdTdWJzdGl0 dXRlIChOVUxMLCBwYXR0ZXJuLCBGY01hdGNoUGF0dGVybik7CisrICAgIEZjQ29uZmlnU3Vic3Rp dHV0ZSAoTlVMTCwgcGF0dGVybiwgRmNNYXRjaEZvbnQpOworKyAgICBGY0RlZmF1bHRTdWJzdGl0 dXRlIChwYXR0ZXJuKTsKKysgICAgbV9mY2ZvbnRzZXQgPSBGY0ZvbnRTb3J0IChOVUxMLCBwYXR0 ZXJuLCBGY1RydWUsIE5VTEwsICZyZXN1bHQpOworKyAgICBGY1BhdHRlcm5EZXN0cm95IChwYXR0 ZXJuKTsKKysgICAgaWYgKHJlc3VsdCA9PSBGY1Jlc3VsdE5vTWF0Y2ggfHwgbV9mY2ZvbnRzZXQt Pm5mb250ID09IDApIHsKKysgICAgICAgIGdfd2FybmluZyAoIk5vIEZjRm9udFNldCBmb3IgJXMi LCBmYW1pbHkgPyBmYW1pbHkgOiAiKG51bGwpIik7CisrICAgICAgICByZXR1cm4gRkFMU0U7Cisr ICAgIH0KKysgICAgcmV0dXJuIFRSVUU7CisrfQorKworK3ZvaWQKKytpYnVzX2ZvbnRzZXRfdW5y ZWYgKElCdXNGb250U2V0ICpmb250c2V0KQorK3sKKysgICAgZ19vYmplY3RfdW5yZWYgKGZvbnRz ZXQpOworK30KKysKKytJQnVzUmVxdWlzaXRpb25FeCAqCisraWJ1c19mb250c2V0X2dldF9wcmVm ZXJyZWRfc2l6ZV9oYiAoSUJ1c0ZvbnRTZXQgICAgICAgICAgKmZvbnRzZXQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICp0ZXh0LAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX3JlY3RhbmdsZV9pbnRf dCAqd2lkZXN0KQorK3sKKysgICAgZ2NoYXIgKmNvcGllZF90ZXh0OworKyAgICBnY2hhciAqcDsK KysgICAgRm9udFBlckNoYXIgKmJ1ZmY7CisrICAgIElCdXNDYWlyb0xpbmUgKmNhaXJvX2xpbmVz ID0gTlVMTDsKKysgICAgSUJ1c1JlcXVpc2l0aW9uRXggKnJlcSA9IE5VTEw7CisrICAgIEdTdHJp bmcgKnN0ciA9IE5VTEw7CisrICAgIGludCB0ZXh0X2xlbmd0aDsKKysgICAgaW50IGksIG4gPSAw OworKworKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19GT05UU0VUIChmb250c2V0 KSwgTlVMTCk7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChtX2ZjZm9udHNldCAhPSBOVUxM LCBOVUxMKTsKKysKKysgICAgY29waWVkX3RleHQgPSBnX3N0cmR1cCAodGV4dCk7CisrICAgIHRl eHRfbGVuZ3RoID0gIGdfdXRmOF9zdHJsZW4gKHRleHQsIC0xKTsKKysgICAgYnVmZiA9IGdfc2xp Y2VfYWxsb2MwIChzaXplb2YgKEZvbnRQZXJDaGFyKSAqIHRleHRfbGVuZ3RoKTsKKysgICAgc3Ry ID0gZ19zdHJpbmdfbmV3IChOVUxMKTsKKysKKysgICAgZm9yIChwID0gY29waWVkX3RleHQ7ICpw ICE9ICdcMCc7IHAgPSBnX3V0ZjhfbmV4dF9jaGFyIChwKSkgeworKyAgICAgICAgZ3VuaWNoYXIg YyA9IGdfdXRmOF9nZXRfY2hhciAocCk7CisrICAgICAgICBnYm9vbGVhbiBoYXNfZ2x5cGhzID0g RkFMU0U7CisrICAgICAgICBidWZmW25dLmNoID0gYzsKKysgICAgICAgIGlmICgoYyA9PSAweGZl MGV1IHx8IGMgPT0gMHhmZTBmdSkgJiYgbiA+IDApIHsKKysgICAgICAgICAgICBidWZmW25dLmZj Zm9udCA9IGJ1ZmZbbi0xXS5mY2ZvbnQ7CisrICAgICAgICAgICAgKytuOworKyAgICAgICAgICAg IGNvbnRpbnVlOworKyAgICAgICAgfQorKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG1fZmNmb250 c2V0LT5uZm9udDsgaSsrKSB7CisrICAgICAgICAgICAgaWYgKGdfdW5pY2hhcl9pc2NudHJsIChj KSAmJiAhZ191bmljaGFyX2lzc3BhY2UgKGMpKQorKyAgICAgICAgICAgICAgICBicmVhazsKKysg ICAgICAgICAgICBGVF9GYWNlIGZ0X2ZhY2UgPSBpYnVzX2ZvbnRzZXRfZ2V0X2Z0ZmFjZV9mcm9t X2ZjZm9udCAoCisrICAgICAgICAgICAgICAgICAgICBmb250c2V0LAorKyAgICAgICAgICAgICAg ICAgICAgbV9mY2ZvbnRzZXQtPmZvbnRzW2ldKTsKKysgICAgICAgICAgICBpZiAoRlRfR2V0X0No YXJfSW5kZXggKGZ0X2ZhY2UsIGMpICE9IDApIHsKKysgICAgICAgICAgICAgICAgYnVmZltuXS5m Y2ZvbnQgPSBtX2ZjZm9udHNldC0+Zm9udHNbaV07CisrICAgICAgICAgICAgICAgIGlmIChuID4g MCAmJiBidWZmW24gLSAxXS5mY2ZvbnQgIT0gYnVmZltuXS5mY2ZvbnQpIHsKKysgICAgICAgICAg ICAgICAgICAgIGdldF9zdHJpbmdfZXh0ZW50c193aXRoX2ZvbnQgKHN0ci0+c3RyLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZbbiAtIDFd LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lk ZXN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JmNhaXJvX2xpbmVzKTsKKysgICAgICAgICAgICAgICAgICAgIGdfc3RyaW5nX2ZyZWUgKHN0ciwg VFJVRSk7CisrICAgICAgICAgICAgICAgICAgICBzdHIgPSBnX3N0cmluZ19uZXcgKE5VTEwpOwor KyAgICAgICAgICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3VuaWNoYXIgKHN0ciwgYyk7Cisr ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgICAgICBnX3N0cmluZ19h cHBlbmRfdW5pY2hhciAoc3RyLCBjKTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAg ICAgICArK247CisrICAgICAgICAgICAgICAgIGhhc19nbHlwaHMgPSBUUlVFOworKyAgICAgICAg ICAgICAgICBGVF9Eb25lX0ZhY2UgKGZ0X2ZhY2UpOworKyAgICAgICAgICAgICAgICBicmVhazsK KysgICAgICAgICAgICB9CisrICAgICAgICAgICAgRlRfRG9uZV9GYWNlIChmdF9mYWNlKTsKKysg ICAgICAgIH0KKysgICAgICAgIGlmICghaGFzX2dseXBocykgeworKyAgICAgICAgICAgIGlmIChu ID4gMCkgeworKyAgICAgICAgICAgICAgICBidWZmW25dLmZjZm9udCA9IGJ1ZmZbbiAtIDFdLmZj Zm9udDsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAvKiBTZWFyY2gg YSBmb250IGZvciBub24tZ2x5cGggY2hhciB0byBkcmF3IHRoZSBjb2RlIHBvaW50cworKyAgICAg ICAgICAgICAgICAgKiBsaWtlcyBQYW5nby4KKysgICAgICAgICAgICAgICAgICovCisrICAgICAg ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtX2ZjZm9udHNldC0+bmZvbnQ7IGkrKykgeworKyAg ICAgICAgICAgICAgICAgICAgRlRfRmFjZSBmdF9mYWNlID0gaWJ1c19mb250c2V0X2dldF9mdGZh Y2VfZnJvbV9mY2ZvbnQgKAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250c2V0LAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZjZm9udHNldC0+Zm9udHNbaV0pOworKyAg ICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgYWxwaGFiZXRzIGluc3RlYWQgb2Ygc3BhY2Ugb3Ig ZGlnaXRzCisrICAgICAgICAgICAgICAgICAgICAgKiBiZWNhdXNlICdOb3RvIEVtb2ppIENvbG9y JyBmb250J3MgZGlnaXRzIGFyZQorKyAgICAgICAgICAgICAgICAgICAgICogd2hpdGUgY29sb3Ig YW5kIGNhbm5vdCBjaGFuZ2UgdGhlIGZvbnQgY29sb3IuCisrICAgICAgICAgICAgICAgICAgICAg KiB0aGUgZm9udCBkb2VzIG5vdCBoYXZlIGFscGhhYmV0cy4KKysgICAgICAgICAgICAgICAgICAg ICAqLworKyAgICAgICAgICAgICAgICAgICAgaWYgKEZUX0dldF9DaGFyX0luZGV4IChmdF9mYWNl LCAnQScpICE9IDApIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBidWZmW25dLmZjZm9udCA9 IG1fZmNmb250c2V0LT5mb250c1tpXTsKKysgICAgICAgICAgICAgICAgICAgICAgICBGVF9Eb25l X0ZhY2UgKGZ0X2ZhY2UpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc19nbHlwaHMgPSBU UlVFOworKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICAg ICAgfQorKyAgICAgICAgICAgICAgICAgICAgRlRfRG9uZV9GYWNlIChmdF9mYWNlKTsKKysgICAg ICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBpZiAoIWhhc19nbHlwaHMpIHsKKysgICAg ICAgICAgICAgICAgICAgIGJ1ZmZbbl0uZmNmb250ID0gbV9mY2ZvbnRzZXQtPmZvbnRzWzBdOwor KyAgICAgICAgICAgICAgICAgICAgZ193YXJuaW5nICgiTm90IGZvdW5kIGZvbnRzIGZvciB1bmlj b2RlICUwNFggYXQgJWQgaW4gJXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj LCBuLCB0ZXh0KTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAg ICAgICBuKys7CisrICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3VuaWNoYXIgKHN0ciwgYyk7 CisrICAgICAgICB9CisrICAgIH0KKysgICAgaWYgKHN0ci0+c3RyKSB7CisrICAgICAgICBnZXRf c3RyaW5nX2V4dGVudHNfd2l0aF9mb250IChzdHItPnN0ciwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZidWZmW24gLSAxXSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHdpZGVzdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZjYWlyb19saW5lcyk7CisrICAgICAgICBnX3N0cmluZ19mcmVlIChzdHIsIFRSVUUp OworKyAgICB9CisrICAgIGdfc2xpY2VfZnJlZTEgKHNpemVvZiAoRm9udFBlckNoYXIpICogdGV4 dF9sZW5ndGgsIGJ1ZmYpOworKyAgICBnX2ZyZWUgKGNvcGllZF90ZXh0KTsKKysgICAgd2lkZXN0 LT53aWR0aCArPSBYUEFEICogMjsKKysgICAgd2lkZXN0LT5oZWlnaHQgKz0gWVBBRCAqIDI7Cisr ICAgIHJlcSA9IGdfbmV3MCAoSUJ1c1JlcXVpc2l0aW9uRXgsIDEpOworKyAgICByZXEtPndpZHRo ID0gd2lkZXN0LT53aWR0aDsKKysgICAgcmVxLT5oZWlnaHQgPSB3aWRlc3QtPmhlaWdodDsKKysg ICAgcmVxLT5jYWlyb19saW5lcyA9IGNhaXJvX2xpbmVzOworKyAgICByZXR1cm4gcmVxOworK30K KysKKyt2b2lkCisraWJ1c19mb250c2V0X2RyYXdfY2Fpcm9fd2l0aF9yZXF1aXNpdGlvbl9leCAo SUJ1c0ZvbnRTZXQgICAgICAgKmZvbnRzZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2Fpcm9fdCAgICAgICAgICAgKmNyLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNSZXF1aXNpdGlvbkV4ICpleCkKKyt7 CisrICAgIElCdXNDYWlyb0xpbmUgKmNhaXJvX2xpbmVzOworKyAgICBpbnQgaTsKKysKKysgICAg Z19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19GT05UU0VUIChmb250c2V0KSk7CisrICAgIGdfcmV0 dXJuX2lmX2ZhaWwgKGNyICE9IE5VTEwpOworKyAgICBnX3JldHVybl9pZl9mYWlsIChleCAhPSBO VUxMKTsKKysKKysgICAgY2Fpcm9fbGluZXMgPSBleC0+Y2Fpcm9fbGluZXM7CisrICAgIGdfcmV0 dXJuX2lmX2ZhaWwgKGNhaXJvX2xpbmVzICE9IE5VTEwpOworKworKyAgICBmb3IgKGkgPSAwOyBj YWlyb19saW5lc1tpXS5zY2FsZWRfZm9udDsgaSsrKSB7CisrICAgICAgICBjb25zdCBjYWlyb19n bHlwaF90ICpnbHlwaHMgPSAoY2Fpcm9fZ2x5cGhfdCAqKSBjYWlyb19saW5lc1tpXS5nbHlwaHM7 CisrICAgICAgICBndWludCBudW1fZ2x5cGhzID0gY2Fpcm9fbGluZXNbaV0ubnVtX2dseXBoczsK KysKKysgICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X2xvY2tfZmFjZSAoY2Fpcm9fbGluZXNb aV0uc2NhbGVkX2ZvbnQpOworKyAgICAgICAgY2Fpcm9fc2V0X3NjYWxlZF9mb250IChjciwgY2Fp cm9fbGluZXNbaV0uc2NhbGVkX2ZvbnQpOworKyAgICAgICAgaWYgKG51bV9nbHlwaHMgPiAwICYm IGdseXBoc1swXS5pbmRleCAmIFBBTkdPX0dMWVBIX1VOS05PV05fRkxBRykgeworKyAgICAgICAg ICAgIF9jYWlyb19zaG93X3Vua25vd25fZ2x5cGhzIChjciwgZ2x5cGhzLCBudW1fZ2x5cGhzLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleC0+d2lkdGgsIGV4LT5o ZWlnaHQpOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBjYWlyb19zaG93X2dseXBo cyAoY3IsIGdseXBocywgbnVtX2dseXBocyk7CisrICAgICAgICB9CisrICAgICAgICBjYWlyb19m dF9zY2FsZWRfZm9udF91bmxvY2tfZmFjZSAoY2Fpcm9fbGluZXNbaV0uc2NhbGVkX2ZvbnQpOwor KyAgICB9CisrfQorZGlmZiAtLWdpdCBhL3VpL2d0azMvaWJ1c2ZvbnRzZXQuaCBiL3VpL2d0azMv aWJ1c2ZvbnRzZXQuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi5lZmNh YTI4NgorLS0tIC9kZXYvbnVsbAorKysrIGIvdWkvZ3RrMy9pYnVzZm9udHNldC5oCitAQCAtMCww ICsxLDMwMiBAQAorKy8qIC0qLSBtb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRh YnMtbW9kZTogbmlsOyAtKi0gKi8KKysvKiB2aW06c2V0IGV0IHN0cz00OiAqLworKy8qIGlidXMg LSBUaGUgSW5wdXQgQnVzCisrICogQ29weXJpZ2h0IChDKSAyMDE3IFRha2FvIEZ1aml3YXJhIDx0 YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorKyAqIENvcHlyaWdodCAoQykgMjAxNyBSZWQgSGF0 LCBJbmMuCisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAq CisrICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICog TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEKKysgKiBVU0EKKysgKi8KKysKKysjaWZu ZGVmIF9fSUJVU19IQVJGQlVaWl9IXworKyNkZWZpbmUgX19JQlVTX0hBUkZCVVpaX0hfCisrCisr LyoqCisrICogU0VDVElPTjogaWJ1c2ZvbnRzZXQKKysgKiBAc2hvcnRfZGVzY3JpcHRpb246IE9i amVjdCBmb3IgSGFyZkJ1enogYW5kIEZvbnRjb25maWcuCisrICogQHRpdGxlOiBJQnVzRm9udFNl dAorKyAqIEBzdGFiaWxpdHk6IFVuc3RhYmxlCisrICoKKysgKiBJQnVzRm9udFNldCBvZmZlcnMg RmNGb250U2V0LCBnbHlwaCBpbmZvIHdpdGggSGFyZkJ1enogYW5kIHJlbmRlcmluZworKyAqIG9u IENhaXJvIGNvbnRleHQuCisrICogQ3VycmVudCBQYW5nbyBjaGFuZ2VzIGZvbnRzIGJ5IGVtb2pp IHZhcmlhbnRzIGFuZCBkcmF3cyB0aGUgc2VwYXJhdGVkCisrICogZ2x5cGhzIFsxXSBidXQgYWN0 dWFsbHkgdGhlIGVtb2ppIGNoYXJhY3RlcnMgd2l0aCB2YXJpYW50cyBjYW4gYmUgZHJhd24KKysg KiBhcyBvbmUgZ2x5cGggc28gdGhpcyBjbGFzcyAgbWFuYWdlcyBGb250Y29uZmlnIGZvbnRzZXRz IHRvIHNlbGVjdCBhIGZvbnQsCisrICogSGFyZkJ1enogdG8gZ2V0IGdseXBocyBmb3IgZW1vamkg dmFyaWFudHMsIENhaXJvIHRvIGRyYXcgZ2x5cGhzLgorKyAqCisrICogWzFdOiBodHRwczovL2J1 Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwNjY5CisrICogICAgICBodHRwczov L2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgxMTIzCisrICovCisrCisrI2lu Y2x1ZGUgPGlidXMuaD4KKysjaW5jbHVkZSA8Y2Fpcm8uaD4KKysKKysjZGVmaW5lIElCVVNfVFlQ RV9DQUlST19MSU5FIChpYnVzX2NhaXJvX2xpbmVfZ2V0X3R5cGUgKCkpCisrI2RlZmluZSBJQlVT X1RZUEVfUkVRVUlTSVRJT05fRVggKGlidXNfcmVxdWlzaXRpb25fZXhfZ2V0X3R5cGUgKCkpCisr I2RlZmluZSBJQlVTX1RZUEVfRk9OVFNFVCAoaWJ1c19mb250c2V0X2dldF90eXBlICgpKQorKyNk ZWZpbmUgSUJVU19GT05UU0VUKG9iaikgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUIChcCisr ICAgICAgICAob2JqKSwgXAorKyAgICAgICAgSUJVU19UWVBFX0ZPTlRTRVQsIFwKKysgICAgICAg IElCdXNGb250U2V0KSkKKysjZGVmaW5lIElCVVNfRk9OVFNFVF9DTEFTUyhrbGFzcykgKEdfVFlQ RV9DSEVDS19DTEFTU19DQVNUIChcCisrICAgICAgICAoa2xhc3MpLCBcCisrICAgICAgICBJQlVT X1RZUEVfRk9OVFNFVCwgXAorKyAgICAgICAgSUJ1c0ZvbnRTZXRDbGFzcykpCisrI2RlZmluZSBJ QlVTX0lTX0ZPTlRTRVQob2JqKSAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKFwKKysgICAg ICAgIChvYmopLCBcCisrICAgICAgICBJQlVTX1RZUEVfRk9OVFNFVCkpCisrI2RlZmluZSBJQlVT X0lTX0ZPTlRTRVRfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoXAorKyAg ICAgICAgKGtsYXNzKSwgXAorKyAgICAgICAgSUJVU19UWVBFX0ZPTlRTRVQpKQorKyNkZWZpbmUg SUJVU19GT05UU0VUX0dFVF9DTEFTUyhvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTIChc CisrICAgICAgICAob2JqKSwgXAorKyAgICAgICAgSUJVU19UWVBFX0ZPTlRTRVQsIFwKKysgICAg ICAgIElCdXNGb250U2V0Q2xhc3MpKQorKworK0dfQkVHSU5fREVDTFMKKysKKyt0eXBlZGVmIHN0 cnVjdCBfSUJ1c0dseXBoIElCdXNHbHlwaDsKKyt0eXBlZGVmIHN0cnVjdCBfSUJ1c0NhaXJvTGlu ZSBJQnVzQ2Fpcm9MaW5lOworK3R5cGVkZWYgc3RydWN0IF9JQnVzUmVxdWlzaXRpb25FeCBJQnVz UmVxdWlzaXRpb25FeDsKKyt0eXBlZGVmIHN0cnVjdCBfSUJ1c0ZvbnRTZXQgSUJ1c0ZvbnRTZXQ7 CisrdHlwZWRlZiBzdHJ1Y3QgX0lCdXNGb250U2V0UHJpdmF0ZSBJQnVzRm9udFNldFByaXZhdGU7 CisrdHlwZWRlZiBzdHJ1Y3QgX0lCdXNGb250U2V0Q2xhc3MgSUJ1c0ZvbnRTZXRDbGFzczsKKysK KytzdHJ1Y3QgX0lCdXNHbHlwaCB7CisrICAgIHVuc2lnbmVkIGxvbmcgaW5kZXg7CisrICAgIGRv dWJsZSAgICAgICAgICAgICAgIHg7CisrICAgIGRvdWJsZSAgICAgICAgICAgICAgIHk7CisrfTsK KysKKytzdHJ1Y3QgX0lCdXNDYWlyb0xpbmUgeworKyAgICBJQnVzR2x5cGggICAgICAgICAgICpn bHlwaHM7CisrICAgIGd1aW50ICAgICAgICAgICAgICAgIG51bV9nbHlwaHM7CisrICAgIGNhaXJv X3NjYWxlZF9mb250X3QgKnNjYWxlZF9mb250OworKyAgICBncG9pbnRlciAgICAgICAgICAgICBw ZHVtbXlbNV07CisrfTsKKysKKytzdHJ1Y3QgX0lCdXNSZXF1aXNpdGlvbkV4IHsKKysgICAgZ3Vp bnQgICAgICAgICAgICAgICAgd2lkdGg7CisrICAgIGd1aW50ICAgICAgICAgICAgICAgIGhlaWdo dDsKKysgICAgSUJ1c0NhaXJvTGluZSAgICAgICAqY2Fpcm9fbGluZXM7CisrICAgIGdwb2ludGVy ICAgICAgICAgICAgIHBkdW1teVs1XTsKKyt9OworKworK3N0cnVjdCBfSUJ1c0ZvbnRTZXQgewor KyAgICBJQnVzT2JqZWN0ICAgICAgICAgICBwYXJlbnRfaW5zdGFuY2U7CisrICAgIElCdXNGb250 U2V0UHJpdmF0ZSAgKnByaXY7CisrfTsKKysKKytzdHJ1Y3QgX0lCdXNGb250U2V0Q2xhc3Mgewor KyAgICBJQnVzT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworKyAgICAvKiBzaWduYWxzICovCisr ICAgIC8qPCBwcml2YXRlID4qLworKyAgICAvKiBwYWRkaW5nICovCisrICAgIGdwb2ludGVyICAg ICAgICBwZHVtbXlbMTBdOworK307CisrCisrR1R5cGUgICAgICAgICAgIGlidXNfY2Fpcm9fbGlu ZV9nZXRfdHlwZSAgICAgICAgKHZvaWQpIEdfR05VQ19DT05TVDsKKysKKysvKioKKysgKiBpYnVz X2NhaXJvX2xpbmVfY29weToKKysgKiBAY2Fpcm9fbGluZXM6ICNJQnVzQ2Fpcm9MaW5lCisrICoK KysgKiBDcmVhdGVzIGEgY29weSBvZiBAY2Fpcm9fbGllbnMsIHdoaWNoIHNob3VsZCBiZSBmcmVl ZCB3aXRoCisrICogaWJ1c19jYWlyb19saW5lX2ZyZWUoKS4gUHJpbWFyaWx5IHVzZWQgYnkgbGFu Z3VhZ2UgYmluZGluZ3MsCisrICogbm90IHRoYXQgdXNlZnVsIG90aGVyd2lzZSAoc2luY2UgQHJl cSBjYW4ganVzdCBiZSBjb3BpZWQKKysgKiBieSBhc3NpZ25tZW50IGluIEMpLgorKyAqCisrICog UmV0dXJuczogdGhlIG5ld2x5IGFsbG9jYXRlZCAjSUJ1c0NhaXJvTGluZSwgd2hpY2ggc2hvdWxk CisrICogICAgICAgICAgYmUgZnJlZWQgd2l0aCBpYnVzX2NhaXJvX2xpbmVfZnJlZSgpLCBvciAl TlVMTAorKyAqICAgICAgICAgIGlmIEBjYWlyb19saW5lcyB3YXMgJU5VTEwuCisrICoqLworK0lC dXNDYWlyb0xpbmUgKiBpYnVzX2NhaXJvX2xpbmVfY29weSAgICAgICAgICAgIChJQnVzQ2Fpcm9M aW5lICpjYWlyb19saW5lcyk7CisrCisrLyoqCisrICogaWJ1c19jYWlyb19saW5lX2ZyZWU6Cisr ICogQGNhaXJvX2xpbmVzOiAjSUJ1c0NhaXJvTGluZQorKyAqCisrICogRnJlZSBhbiAjSUJ1c0Nh aXJvTGluZS4KKysgKi8KKyt2b2lkICAgICAgICAgICAgaWJ1c19jYWlyb19saW5lX2ZyZWUgICAg ICAgICAgICAoSUJ1c0NhaXJvTGluZSAqY2Fpcm9fbGluZXMpOworKworKworK0dUeXBlICAgICAg ICAgICBpYnVzX3JlcXVpc2l0aW9uX2V4X2dldF90eXBlICAgICh2b2lkKSBHX0dOVUNfQ09OU1Q7 CisrCisrLyoqCisrICogaWJ1c19yZXF1aXNpdGlvbl9leF9jb3B5OgorKyAqIEByZXE6ICNJQnVz UmVxdWlzaXRpb25FeAorKyAqCisrICogQ3JlYXRlcyBhIGNvcHkgb2YgQHJlcSwgd2hpY2ggc2hv dWxkIGJlIGZyZWVkIHdpdGgKKysgKiBpYnVzX3JlcXVpc2l0aW9uX2V4X2ZyZWUoKS4gUHJpbWFy aWx5IHVzZWQgYnkgbGFuZ3VhZ2UgYmluZGluZ3MsCisrICogbm90IHRoYXQgdXNlZnVsIG90aGVy d2lzZSAoc2luY2UgQHJlcSBjYW4ganVzdCBiZSBjb3BpZWQKKysgKiBieSBhc3NpZ25tZW50IGlu IEMpLgorKyAqCisrICogUmV0dXJuczogdGhlIG5ld2x5IGFsbG9jYXRlZCAjSUJ1c1JlcXVpc2l0 aW9uRXgsIHdoaWNoIHNob3VsZAorKyAqICAgICAgICAgIGJlIGZyZWVkIHdpdGggaWJ1c19yZXF1 aXNpdGlvbl9leF9mcmVlKCksIG9yICVOVUxMCisrICogICAgICAgICAgaWYgQHJlcSB3YXMgJU5V TEwuCisrICoqLworK0lCdXNSZXF1aXNpdGlvbkV4ICoKKysgICAgICAgICAgICAgICAgaWJ1c19y ZXF1aXNpdGlvbl9leF9jb3B5ICAgICAgICAoSUJ1c1JlcXVpc2l0aW9uRXggKnJlcSk7CisrCisr LyoqCisrICogaWJ1c19yZXF1aXNpdGlvbl9leF9mcmVlOgorKyAqIEByZXE6ICNJQnVzUmVxdWlz aXRpb25FeAorKyAqCisrICogRnJlZSBhbiAjSUJ1c1JlcXVpc2l0aW9uRXguCisrICovCisrdm9p ZCAgICAgICAgICAgIGlidXNfcmVxdWlzaXRpb25fZXhfZnJlZSAgICAgICAgKElCdXNSZXF1aXNp dGlvbkV4ICpyZXEpOworKworKworK0dUeXBlICAgICAgICAgICBpYnVzX2ZvbnRzZXRfZ2V0X3R5 cGUgICAgICAgICAgICh2b2lkKTsKKysKKysvKioKKysgKiBpYnVzX2ZvbnRzZXRfbmV3OgorKyAq IEBmaXJzdF9wcm9wZXJ0eV9uYW1lOiAKKysgKgorKyAqIENyZWF0ZXMgYSBuZXcgI0lCdXNGY0Zv bnRTZXQuCisrICoKKysgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgbmV3bHkgYWxsb2Nh dGVkICNJQnVzRm9udFNldCBhbmQgaW5jbHVkZXMKKysgKiAjRmNGb250U2V0IGludGVybmFsbHku IEUuZy4gaWJ1c19mb250c2V0X25ldyAoImZhbWlseSIsCisrICogIk5vdG8gRW1vamkgQ29sb3Ii LCAic2l6ZSIsIDE2LCAibGFuZ3VhZ2UiLCAiamEtanAiKTsKKysgKi8KKytJQnVzRm9udFNldCAq ICAgaWJ1c19mb250c2V0X25ldyAgICAgICAgICAgICAgICAoY29uc3QgZ2NoYXIKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpmaXJz dF9wcm9wZXJ0eV9uYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKysKKysvKioKKysgKiBpYnVzX2ZvbnRz ZXRfbmV3X3dpdGhfZm9udDoKKysgKiBAZmFtaWx5OiBmb250IGZhbWlseQorKyAqIEBzaXplOiBm b250IHNpemUKKysgKiBAbGFuZ3VhZ2U6IGZvbnQgbGFuZ3VhZ2UKKysgKgorKyAqIENyZWF0ZXMg IGEgbmV3ICNJQnVzRmNGb250U2V0LgorKyAqCisrICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwp OiBBIG5ld2x5IGFsbG9jYXRlZCAjSUJ1c0ZjRm9udFNldCBhbmQgaW5jbHVkZXMKKysgKiAjRmNG b250U2V0IGludGVybmFsbHkuCisrICovCisrSUJ1c0ZvbnRTZXQgKiAgIGlidXNfZm9udHNldF9u ZXdfd2l0aF9mb250ICAgICAgKGNvbnN0IGdjaGFyICAgICpmYW1pbHksCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICBzaXpl LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBnY2hhciAgICAqbGFuZ3VhZ2UpOworKy8qKgorKyAqIGlidXNfZm9udHNldF9nZXRfZmFtaWx5 OgorKyAqIEBmb250c2V0OiAjSUJ1c0ZjRm9udFNldAorKyAqCisrICogUmV0dXJuIHRoZSBiYXNl IGZvbnQgZmFtaWx5IG9mICNGY0ZvbnRTZXQKKysgKgorKyAqIFJldHVybnM6IEJhc2UgZm9udCBm YW1pbHkgb2YgI0ZjRm9udFNldAorKyAqLworK2NvbnN0IGdjaGFyICogICBpYnVzX2ZvbnRzZXRf Z2V0X2ZhbWlseSAgICAgICAgIChJQnVzRm9udFNldCAgICAqZm9udHNldCk7CisrCisrLyoqCisr ICogaWJ1c19mb250c2V0X3NldF9mYW1pbHk6CisrICogQGZvbnRzZXQ6ICNJQnVzRmNGb250U2V0 CisrICogQGZhbWlseTogYmFzZSBmb250IGZhbWlseSBmb3IgI0ZjRm9udFNldAorKyAqCisrICog U2V0IHRoZSBiYXNlIGZvbnQgZmFtaWx5IGZvciAjRmNGb250U2V0CisrICovCisrdm9pZCAgICAg ICAgICAgIGlidXNfZm9udHNldF9zZXRfZmFtaWx5ICAgICAgICAgKElCdXNGb250U2V0ICAgICpm b250c2V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBnY2hhciAgICAqZmFtaWx5KTsKKysvKioKKysgKiBpYnVzX2ZvbnRzZXRfZ2V0X3Np emU6CisrICogQGZvbnRzZXQ6ICNJQnVzRmNGb250U2V0CisrICoKKysgKiBSZXR1cm4gdGhlIGZv bnQgc2l6ZSBvZiAjRmNGb250U2V0CisrICoKKysgKiBSZXR1cm5zOiBGb250IHNpemUgb2YgI0Zj Rm9udFNldAorKyAqLworK2d1aW50ICAgICAgICAgICBpYnVzX2ZvbnRzZXRfZ2V0X3NpemUgICAg ICAgICAgIChJQnVzRm9udFNldCAgICAqZm9udHNldCk7CisrCisrLyoqCisrICogaWJ1c19mb250 c2V0X3NldF9zaXplOgorKyAqIEBmb250c2V0OiAjSUJ1c0ZjRm9udFNldAorKyAqIEBzaXplOiBm b250IHNpemUgZm9yICNGY0ZvbnRTZXQKKysgKgorKyAqIFNldCB0aGUgZm9udCBzaXplIGZvciAj RmNGb250U2V0CisrICovCisrdm9pZCAgICAgICAgICAgIGlidXNfZm9udHNldF9zZXRfc2l6ZSAg ICAgICAgICAgKElCdXNGb250U2V0ICAgICpmb250c2V0LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgc2l6ZSk7CisrLyoq CisrICogaWJ1c19mb250c2V0X2dldF9sYW5ndWFnZToKKysgKiBAZm9udHNldDogI0lCdXNGY0Zv bnRTZXQKKysgKgorKyAqIFJldHVybiB0aGUgZm9udCBsYW5ndWFnZSBvZiAjRmNGb250U2V0Cisr ICoKKysgKiBSZXR1cm5zOiBGb250IGxhbmd1YWdlIG9mICNGY0ZvbnRTZXQKKysgKi8KKytjb25z dCBnY2hhciAqICAgaWJ1c19mb250c2V0X2dldF9sYW5ndWFnZSAgICAgICAoSUJ1c0ZvbnRTZXQg ICAgKmZvbnRzZXQpOworKworKy8qKgorKyAqIGlidXNfZm9udHNldF9zZXRfbGFuZ3VhZ2U6Cisr ICogQGZvbnRzZXQ6ICNJQnVzRmNGb250U2V0CisrICogQGxhbmd1YWdlOiBmb250IGxhbmdhdWdl IGZvciAjRmNGb250U2V0CisrICoKKysgKiBTZXQgdGhlIGZvbnQgbGFuZ3VhZ2UgZm9yICNGY0Zv bnRTZXQKKysgKi8KKyt2b2lkICAgICAgICAgICAgaWJ1c19mb250c2V0X3NldF9sYW5ndWFnZSAg ICAgICAoSUJ1c0ZvbnRTZXQgICAgKmZvbnRzZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICpsYW5ndWFnZSk7CisrCisr LyoqCisrICogaWJ1c19mb250c2V0X3VwZGF0ZV9mY2ZvbnRzZXQ6CisrICogQGZvbnRzZXQ6ICNJ QnVzRmNGb250U2V0CisrICoKKysgKiBVcGRhdGUgI0ZjRm9udFNldCBmcm9tIGZvbnQgZmFtaWx5 LCBzaXplIGFuZCBsYW5nYXVnZSBvZiBAZm9udHNldC4KKysgKiBSZXR1cm5zOiAlVFJVRSBpZiAj RmNGb250U2V0IGlzIHVwZGF0ZWQuICVGQUxTRSBvdGhlcndpc2UuCisrICovCisrZ2Jvb2xlYW4g ICAgICAgIGlidXNfZm9udHNldF91cGRhdGVfZmNmb250c2V0ICAgKElCdXNGb250U2V0ICAgICpm b250c2V0KTsKKysKKysvKioKKysgKiBpYnVzX2ZvbnRzZXRfZ2V0X3ByZWZlcnJlZF9zaXplX2hi OgorKyAqIEBmb250c2V0OiAjSUJ1c0ZjRm9udFNldAorKyAqIEB0ZXh0OiBhIHN0cmluZyB0byBi ZSBjYWxjdWxhdGUgdGhlIHByZWZlcnJlZCByZWN0YW5nbGUgc2l6ZS4KKysgKiBAd2lkZXN0OiAo b3V0KTogI2NhaXJvX3JlY3RhbmdsZV9pbnRfdCBpcyB1cGRhdGVkLgorKyAqCisrICogQ2FsY3Vs YXRlIEB3aWRlc3QgZm9yIEB0ZXh0LgorKyAqCisrICogUmV0dXJuczogI0lCdXNSZXF1aXNpdGlv bkV4IHdoaWNoIGluY2x1ZGVzIHRoZSBnbHlwaHMgYW5kIGNvb3JkaW5hdGVzLgorKyAqLworK0lC dXNSZXF1aXNpdGlvbkV4ICoKKysgICAgICAgICAgICAgICAgaWJ1c19mb250c2V0X2dldF9wcmVm ZXJyZWRfc2l6ZV9oYgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChJQnVzRm9udFNldCAgICAqZm9udHNldCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgKnRleHQsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX3JlY3Rhbmds ZV9pbnRfdAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqd2lkZXN0KTsKKysKKysvKioKKysgKiBpYnVzX2ZvbnRzZXRfZHJh d19jYWlyb19saW5lczoKKysgKiBAZm9udHNldDogI0lCdXNGY0ZvbnRTZXQKKysgKiBAY3I6ICNj YWlyb190IGluICNHdGtXaWRnZXQuZHJhdygpLgorKyAqIEBleDogI0lCdXNSZXF1aXNpdGlvbkV4 IHdoaWNoIGluY2x1ZGVzIGdseXBoLCB4LCB5IHZhbHVlcywgY2hhciB3aWR0aAorKyAqICAgICAg YW5kIGhlaWdodC4KKysgKgorKyAqIERyYXcgZ2x5cGhzIGluIEBleCB1c2luZyBjYWlybyBAY3Iu CisrICovCisrdm9pZCAgICAgICAgICAgIGlidXNfZm9udHNldF9kcmF3X2NhaXJvX3dpdGhfcmVx dWlzaXRpb25fZXgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoSUJ1c0ZvbnRTZXQgICAgKmZvbnRzZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX3QgICAgICAgICpjciwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1JlcXVpc2l0aW9uRXgK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKmV4KTsKKysKKysvKioKKysgKiBpYnVzX2ZvbnRzZXRfdW5yZWY6CisrICogQGZv bnRzZXQ6ICNJQnVzRmNGb250U2V0CisrICoKKysgKiBDYWxsIGdfb2JqZWN0X3VucmVmKCkuCisr ICogRklYTUU6IFNlZW1zIFZhbGEgbmVlZHMgdGhpcyBBUEkuCisrICovCisrdm9pZCAgICAgICAg ICAgIGlidXNfZm9udHNldF91bnJlZiAgICAgICAgICAgICAgKElCdXNGb250U2V0ICAgICpmb250 c2V0KTsKKysKKytHX0VORF9ERUNMUworKyNlbmRpZgorLS0gCisyLjEzLjQKKwoKZGlmZiAtLWdp dCBhL2lidXMuc3BlYyBiL2lidXMuc3BlYwppbmRleCA1ZGQxNjE2Li5mYzQ3MTY3IDEwMDY0NAot LS0gYS9pYnVzLnNwZWMKKysrIGIvaWJ1cy5zcGVjCkBAIC0zMCw3ICszMCw3IEBACiAKIE5hbWU6 ICAgICAgICAgICBpYnVzCiBWZXJzaW9uOiAgICAgICAgMS41LjE2Ci1SZWxlYXNlOiAgICAgICAg OCV7P2Rpc3R9CitSZWxlYXNlOiAgICAgICAgOSV7P2Rpc3R9CiBTdW1tYXJ5OiAgICAgICAgSW50 ZWxsaWdlbnQgSW5wdXQgQnVzIGZvciBMaW51eCBPUwogTGljZW5zZTogICAgICAgIExHUEx2MisK IEdyb3VwOiAgICAgICAgICBTeXN0ZW0gRW52aXJvbm1lbnQvTGlicmFyaWVzCkBAIC00Miw4ICs0 MiwxMiBAQCBTb3VyY2UyOiAgICAgICAgJXtuYW1lfS5jb25mLjUKICMgVXBzdHJlYW1lZCBwYXRj aGVzLgogIyBQYXRjaDA6ICAgICAgICAgJSV7bmFtZX0tSEVBRC5wYXRjaAogUGF0Y2gwOiAgICAg ICAgICV7bmFtZX0tSEVBRC5wYXRjaAotIyBVbmRlciB0ZXN0aW5nICMxMzQ5MTQ4ICMxMzg1MzQ5 ICMxMzUwMjkxCisjIFVuZGVyIHRlc3RpbmcgIzEzNDkxNDggIzEzODUzNDkgIzEzNTAyOTEgIzE0 MDY2OTkgIzE0MzIyNTIKIFBhdGNoMTogICAgICAgICAle25hbWV9LTEzODUzNDktc2Vndi1idXMt cHJveHkucGF0Y2gKKyVpZiAld2l0aF9lbW9qaV9oYXJmYnV6egorIyBVbmRlciB0ZXN0aW5nIHNl bGYgcmVuZGVyaW5nIHVudGlsIFBhbmdvLCBGb250Y29uZmlnLCBDYWlybyBhcmUgc3RhYmxlCitQ YXRjaDI6ICAgICAgICAgJXtuYW1lfS14eC1lbW9qaS1oYXJmYnV6ei5wYXRjaAorJWVuZGlmCiAK IEJ1aWxkUmVxdWlyZXM6ICBnZXR0ZXh0LWRldmVsCiBCdWlsZFJlcXVpcmVzOiAgbGlidG9vbApA QCAtMjM4LDcgKzI0MiwxMCBAQCBUaGUgaWJ1cy1kZXZlbC1kb2NzIHBhY2thZ2UgY29udGFpbnMg ZGV2ZWxvcGVyIGRvY3VtZW50YXRpb24gZm9yIElCdXMKICMgJSVwYXRjaDAgLXAxCiAjIGNwIGNs aWVudC9ndGsyL2lidXNpbWNvbnRleHQuYyBjbGllbnQvZ3RrMy9pYnVzaW1jb250ZXh0LmMgfHwK ICVwYXRjaDAgLXAxCi0lcGF0Y2gxIC1wMQorJXBhdGNoMSAtcDEgLXogLnNlZ3YKKyVpZiAld2l0 aF9lbW9qaV9oYXJmYnV6egorJXBhdGNoMiAtcDEgLXogLmhiCislZW5kaWYKIAogJWJ1aWxkCiAj YXV0b3JlY29uZiAtZiAtaSAtdgpAQCAtMzc1LDYgKzM4Miw3IEBAIGd0ay1xdWVyeS1pbW1vZHVs ZXMtMy4wLSV7X19pc2FfYml0c30gLS11cGRhdGUtY2FjaGUgJj4gL2Rldi9udWxsIHx8IDoKICV7 X2RhdGFkaXJ9L21hbi9tYW43L2lidXMtZW1vamkuNy5negogJXtfbGliZXhlY2Rpcn0vaWJ1cy1l bmdpbmUtc2ltcGxlCiAle19saWJleGVjZGlyfS9pYnVzLWRjb25mCisle19saWJleGVjZGlyfS9p YnVzLXBvcnRhbAogJXtfbGliZXhlY2Rpcn0vaWJ1cy11aS1lbW9qaWVyCiAle19saWJleGVjZGly fS9pYnVzLXVpLWd0azMKICV7X2xpYmV4ZWNkaXJ9L2lidXMteDExCkBAIC00MzMsNiArNDQxLDEz IEBAIGd0ay1xdWVyeS1pbW1vZHVsZXMtMy4wLSV7X19pc2FfYml0c30gLS11cGRhdGUtY2FjaGUg Jj4gL2Rldi9udWxsIHx8IDoKICV7X2RhdGFkaXJ9L2d0ay1kb2MvaHRtbC8qCiAKICVjaGFuZ2Vs b2cKKyogVGh1IFNlcCAxNCAyMDE3IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29t PiAtIDEuNS4xNi05CistIEZpeCBzY2FsaW5nIGZhY3RvciwgbW91c2UgZXZlbnRzIG9uIHN3aXRj aGVyLCBjLXMtdSBvbiBpbS1pYnVzLCAKKyAgcHJvcGVydHlwYW5lbCBwb3NpdGlvbiBhbmQgbWVu dSAKKy0gQWRkIGlidXMtcG9ydGFsCistIE1vdmUgaWJ1cy1lbW9qaS1kaWFsb2cudmFwaSBpbiB0 aGUgYnVpbGQKKy0gRml4ZWQgc29tZSBTRUdWcyAjMTQwNjY5OSAjMTQzMjI1MgorCiAqIFdlZCBB dWcgMDIgMjAxNyBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2pl Y3Qub3JnPiAtIDEuNS4xNi04CiAtIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5v cmcvd2lraS9GZWRvcmFfMjdfQmludXRpbHNfTWFzc19SZWJ1aWxkCiAK