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: Resolves #2237486 Implement preedit color in Plasma Wayland Date: Sun, 31 May 2026 02:08:18 GMT Message-ID: <178019329867.1.7809283083348930856.rpms-ibus-52531c070db5@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: 52531c070db5da1bee1ab0e6645102df8c6aa1f8 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiA1MjUzMWMwNzBkYjVkYTFiZWUxYWIwZTY2NDUxMDJkZjhjNmFh MWY4CkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDIzLTA5LTA3VDE0OjQxOjMyKzA5OjAwClN0YXRzICA6ICsxMjE2Ly0xIGluIDMgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy81MjUz MWMwNzBkYjVkYTFiZWUxYWIwZTY2NDUxMDJkZjhjNmFhMWY4P2JyYW5jaD1hdXRvdG9vbAoKTG9n OgpSZXNvbHZlcyAjMjIzNzQ4NiBJbXBsZW1lbnQgcHJlZWRpdCBjb2xvciBpbiBQbGFzbWEgV2F5 bGFuZAoKLS0tCmRpZmYgLS1naXQgYS9pYnVzLUhFQUQucGF0Y2ggYi9pYnVzLUhFQUQucGF0Y2gK aW5kZXggZTY5ZGUyOS4uZDk4NmNiNCAxMDA2NDQKLS0tIGEvaWJ1cy1IRUFELnBhdGNoCisrKyBi L2lidXMtSEVBRC5wYXRjaApAQCAtMCwwICsxLDEyMDggQEAKK0Zyb20gYWY1NDcxYmViNzg0ZGRh NjI2ZWIyNzJmODUyZjI3OWYxYTYxZWJiOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgNyBTZXAg MjAyMyAxMzo0NjoyOSArMDkwMAorU3ViamVjdDogW1BBVENIXSBjbGllbnQvd2F5bGFuZDogSW1w bGVtZW50IHByZWVkaXQgY29sb3IgaW4gUGxhc21hIFdheWxhbmQKKworV2F5bGFuZCBpbnB1dC1t ZXRob2QgcHJvdG9jb2wgdmVyc2lvbiAxIHN1cHBvcnRzIHRoZSBwcmVlZGl0IHN0eWxlCit3aXRo IHRleHQtaW5wdXQgcHJvdG9jb2wgdmVyc2lvbiAxIGluIFBsYXNtYSBXYXlsYW5kLgorR05PTUUg V2F5bGFuZCB1c2VzIHRleHQtaW5wdXQgdmVyc2lvbiAzIHdoaWNoIGRlbGV0ZXMgdGhlIHByZWVk aXQgc3R5bGUuCisKK05vdyBJQnVzIHN1cHBvcnRzIHRoZSBwcmVlZGl0IGNvbG9yIGZvciBhbnRo eSwgaGFuZ3VsLCB0YWJsZSwKK3R5cGluZy1ib29zdGVyLgorCitUaGlzIGNoYW5nZSBub3cgYWxz byBzdXBwb3J0cworaWJ1c19lbmdpbmVfdXBkYXRlX3ByZWVkaXRfdGV4dF93aXRoX21vZGUoKQor CitSZi4gaHR0cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy93aWtpL1dheWxhbmQtQ29sb3JzCisK K0JVRz1yaGJ6IzIyMzc0ODYKKy0tLQorIGNsaWVudC93YXlsYW5kL01ha2VmaWxlLmFtICAgICAg ICAgICAgICAgICAgICB8ICAgMSArCisgY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jICAg ICAgICAgICAgICAgIHwgMTc1ICsrKy0KKyAuLi4vdGV4dC1pbnB1dC11bnN0YWJsZS12MS1jbGll bnQtcHJvdG9jb2wuaCAgfCA4NDcgKysrKysrKysrKysrKysrKysrCisgc3JjL2lidXNhdHRyaWJ1 dGUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUyICstCisgNCBmaWxlcyBjaGFuZ2Vk LCAxMDcyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0 IGNsaWVudC93YXlsYW5kL3RleHQtaW5wdXQtdW5zdGFibGUtdjEtY2xpZW50LXByb3RvY29sLmgK KworZGlmZiAtLWdpdCBhL2NsaWVudC93YXlsYW5kL01ha2VmaWxlLmFtIGIvY2xpZW50L3dheWxh bmQvTWFrZWZpbGUuYW0KK2luZGV4IDdlOGQxOGFmLi45NGUzNTdiNCAxMDA2NDQKKy0tLSBhL2Ns aWVudC93YXlsYW5kL01ha2VmaWxlLmFtCisrKysgYi9jbGllbnQvd2F5bGFuZC9NYWtlZmlsZS5h bQorQEAgLTMxLDYgKzMxLDcgQEAgRElTVENMRUFORklMRVMgPQorIHByb3RvY29sX3NvdXJjZXMg PSBcCisgICAgIGlucHV0LW1ldGhvZC11bnN0YWJsZS12MS1jbGllbnQtcHJvdG9jb2wuaCBcCisg ICAgIGlucHV0LW1ldGhvZC11bnN0YWJsZS12MS1wcm90b2NvbC5jIFwKKysgICAgdGV4dC1pbnB1 dC11bnN0YWJsZS12MS1jbGllbnQtcHJvdG9jb2wuaCBcCisgICAgICQoTlVMTCkKKyAKKyBpYnVz X3dheWxhbmRfU09VUkNFUyA9IFwKK2RpZmYgLS1naXQgYS9jbGllbnQvd2F5bGFuZC9pYnVzd2F5 bGFuZGltLmMgYi9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMKK2luZGV4IGZmYzIwZGUx Li5iZjMyMWE3MSAxMDA2NDQKKy0tLSBhL2NsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYwor KysrIGIvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jCitAQCAtMzIsNiArMzIsNyBAQAor ICNpbmNsdWRlIDx4a2Jjb21tb24veGtiY29tbW9uLmg+CisgCisgI2luY2x1ZGUgImlucHV0LW1l dGhvZC11bnN0YWJsZS12MS1jbGllbnQtcHJvdG9jb2wuaCIKKysjaW5jbHVkZSAidGV4dC1pbnB1 dC11bnN0YWJsZS12MS1jbGllbnQtcHJvdG9jb2wuaCIKKyAjaW5jbHVkZSAiaWJ1c3dheWxhbmRp bS5oIgorIAorIGVudW0geworQEAgLTU4LDYgKzU5LDcgQEAgc3RydWN0IF9JQnVzV2F5bGFuZElN UHJpdmF0ZQorICAgICBJQnVzSW5wdXRDb250ZXh0ICppYnVzY29udGV4dDsKKyAgICAgSUJ1c1Rl eHQgKnByZWVkaXRfdGV4dDsKKyAgICAgZ3VpbnQgcHJlZWRpdF9jdXJzb3JfcG9zOworKyAgICBn dWludCBwcmVlZGl0X21vZGU7CisgICAgIElCdXNNb2RpZmllclR5cGUgbW9kaWZpZXJzOworIAor ICAgICBzdHJ1Y3QgeGtiX2NvbnRleHQgKnhrYl9jb250ZXh0OworQEAgLTI2NiwxMiArMjY4LDE3 NSBAQCBfY29udGV4dF9mb3J3YXJkX2tleV9ldmVudF9jYiAoSUJ1c0lucHV0Q29udGV4dCAqY29u dGV4dCwKKyB9CisgCisgCisrLyoqCisrICogaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV9wcmVlZGl0 X3N0eWxlOgorKyAqIEB3bGltOiBBbiAjSUJ1c1dheWxhbmRJTQorKyAqCisrICogQ29udmVydCBS R0IgdmFsdWVzIHRvIElCdXNBdHRyUHJlZWRpdCBhdCBmaXJzdC4KKysgKiBDb252ZXJ0IElCdXNB dHRyUHJlZWRpdCB0byB6d3BfdGV4dF9pbnB1dF92MV9wcmVlZGl0X3N0eWxlIGF0IHNlY29uZC4K KysgKgorKyAqIFJGLiBodHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL3dpa2kvV2F5bGFuZC1D b2xvcnMKKysgKi8KKytzdGF0aWMgdm9pZAorK2lidXNfd2F5bGFuZF9pbV91cGRhdGVfcHJlZWRp dF9zdHlsZSAoSUJ1c1dheWxhbmRJTSAqd2xpbSkKKyt7CisrICAgIElCdXNXYXlsYW5kSU1Qcml2 YXRlICpwcml2OworKyAgICBJQnVzQXR0ckxpc3QgKmF0dHJzOworKyAgICBndWludCBpOworKyAg ICBjb25zdCBjaGFyICpzdHI7CisrICAgIHVpbnQzMl90IHdob2xlX3dzdHlsZSA9IFpXUF9URVhU X0lOUFVUX1YxX1BSRUVESVRfU1RZTEVfREVGQVVMVDsKKysKKysgICAgZ19yZXR1cm5faWZfZmFp bCAoSUJVU19JU19XQVlMQU5EX0lNICh3bGltKSk7CisrICAgIHByaXYgPSBpYnVzX3dheWxhbmRf aW1fZ2V0X2luc3RhbmNlX3ByaXZhdGUgKHdsaW0pOworKyAgICBpZiAoIXByaXYtPnByZWVkaXRf dGV4dCkKKysgICAgICAgIHJldHVybjsKKysgICAgYXR0cnMgPSBwcml2LT5wcmVlZGl0X3RleHQt PmF0dHJzOworKyAgICBpZiAoIWF0dHJzKQorKyAgICAgICAgcmV0dXJuOworKyAgICBmb3IgKGkg PSAwOyA7IGkrKykgeworKyAgICAgICAgSUJ1c0F0dHJpYnV0ZSAqYXR0ciA9IGlidXNfYXR0cl9s aXN0X2dldCAoYXR0cnMsIGkpOworKyAgICAgICAgSUJ1c0F0dHJQcmVlZGl0IGlzdHlsZSA9IElC VVNfQVRUUl9QUkVFRElUX0RFRkFVTFQ7CisrICAgICAgICB1aW50MzJfdCB3c3R5bGUgPSBaV1Bf VEVYVF9JTlBVVF9WMV9QUkVFRElUX1NUWUxFX0RFRkFVTFQ7CisrICAgICAgICB1aW50MzJfdCBz dGFydCwgZW5kOworKyAgICAgICAgaWYgKGF0dHIgPT0gTlVMTCkKKysgICAgICAgICAgICAgICAg YnJlYWs7CisrICAgICAgICBzd2l0Y2ggKGF0dHItPnR5cGUpIHsKKysgICAgICAgIGNhc2UgSUJV U19BVFRSX1RZUEVfVU5ERVJMSU5FOgorKyAgICAgICAgICAgIGlzdHlsZSA9IElCVVNfQVRUUl9Q UkVFRElUX1dIT0xFOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBJQlVTX0FU VFJfVFlQRV9GT1JFR1JPVU5EOgorKyAgICAgICAgICAgIHN3aXRjaCAoYXR0ci0+dmFsdWUpIHsK KysgICAgICAgICAgICBjYXNlIDB4N0Y3RjdGOiAvKiB0eXBpbmctYm9vc3RlciAqLworKyAgICAg ICAgICAgICAgICBpc3R5bGUgPSBJQlVTX0FUVFJfUFJFRURJVF9QUkVESUNUSU9OOworKyAgICAg ICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICBjYXNlIDB4RjkwRjBGOiAvKiB0YWJsZSAq LworKyAgICAgICAgICAgICAgICBpc3R5bGUgPSBJQlVTX0FUVFJfUFJFRURJVF9QUkVGSVg7Cisr ICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIGNhc2UgMHgxRURDMUE6IC8qIHRh YmxlICovCisrICAgICAgICAgICAgICAgIGlzdHlsZSA9IElCVVNfQVRUUl9QUkVFRElUX1NVRkZJ WDsKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgY2FzZSAweEE0MDAwMDog LyogdHlwaW5nLWJvb3N0ZXIsIHRhYmxlICovCisrICAgICAgICAgICAgICAgIGlzdHlsZSA9IElC VVNfQVRUUl9QUkVFRElUX0VSUk9SX1NQRUxMSU5HOworKyAgICAgICAgICAgICAgICBicmVhazsK KysgICAgICAgICAgICBjYXNlIDB4RkYwMEZGOiAvKiB0eXBpbmctYm9vc3RlciAqLworKyAgICAg ICAgICAgICAgICBpc3R5bGUgPSBJQlVTX0FUVFJfUFJFRURJVF9FUlJPUl9DT01QT1NFOworKyAg ICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICBjYXNlIDB4MDogLyogSmFwYW5lc2Ug Ki8KKysgICAgICAgICAgICBjYXNlIDB4RkYwMDAwMDA6CisrICAgICAgICAgICAgICAgIGJyZWFr OworKyAgICAgICAgICAgIGNhc2UgMHhGRkZGRkY6IC8qIGhhbmd1bCAqLworKyAgICAgICAgICAg IGNhc2UgMHhGRkZGRkZGRjoKKysgICAgICAgICAgICAgICAgaXN0eWxlID0gSUJVU19BVFRSX1BS RUVESVRfU0VMRUNUSU9OOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICBk ZWZhdWx0OiAvKiBDdXN0b20gKi8KKysgICAgICAgICAgICAgICAgaXN0eWxlID0gSUJVU19BVFRS X1BSRUVESVRfTk9ORTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgYnJlYWs7CisrICAg ICAgICBjYXNlIElCVVNfQVRUUl9UWVBFX0JBQ0tHUk9VTkQ6CisrICAgICAgICAgICAgc3dpdGNo IChhdHRyLT52YWx1ZSkgeworKyAgICAgICAgICAgIGNhc2UgMHhDOEM4RjA6IC8qIEphcGFuZXNl ICovCisrICAgICAgICAgICAgY2FzZSAweEZGQzhDOEYwOgorKyAgICAgICAgICAgICAgICBpc3R5 bGUgPSBJQlVTX0FUVFJfUFJFRURJVF9TRUxFQ1RJT047CisrICAgICAgICAgICAgICAgIGJyZWFr OworKyAgICAgICAgICAgIGRlZmF1bHQ6OyAvKiBDdXN0b20gKi8KKysgICAgICAgICAgICB9Cisr ICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBkZWZhdWx0OgorKyAgICAgICAgICAgIGlzdHls ZSA9IElCVVNfQVRUUl9QUkVFRElUX05PTkU7CisrICAgICAgICB9CisrICAgICAgICBzd2l0Y2gg KGlzdHlsZSkgeworKyAgICAgICAgY2FzZSBJQlVTX0FUVFJfUFJFRURJVF9OT05FOgorKyAgICAg ICAgICAgIHdzdHlsZSA9IFpXUF9URVhUX0lOUFVUX1YxX1BSRUVESVRfU1RZTEVfTk9ORTsKKysg ICAgICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgSUJVU19BVFRSX1BSRUVESVRfV0hPTEU6 CisrICAgICAgICAgICAgd3N0eWxlID0gWldQX1RFWFRfSU5QVVRfVjFfUFJFRURJVF9TVFlMRV9V TkRFUkxJTkU7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlIElCVVNfQVRUUl9Q UkVFRElUX1NFTEVDVElPTjoKKysgICAgICAgICAgICB3c3R5bGUgPSBaV1BfVEVYVF9JTlBVVF9W MV9QUkVFRElUX1NUWUxFX1NFTEVDVElPTjsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAg IGNhc2UgSUJVU19BVFRSX1BSRUVESVRfUFJFRElDVElPTjoKKysgICAgICAgICAgICB3c3R5bGUg PSBaV1BfVEVYVF9JTlBVVF9WMV9QUkVFRElUX1NUWUxFX0lOQUNUSVZFOworKyAgICAgICAgICAg IGJyZWFrOworKyAgICAgICAgY2FzZSBJQlVTX0FUVFJfUFJFRURJVF9QUkVGSVg6CisrICAgICAg ICAgICAgd3N0eWxlID0gWldQX1RFWFRfSU5QVVRfVjFfUFJFRURJVF9TVFlMRV9ISUdITElHSFQ7 CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlIElCVVNfQVRUUl9QUkVFRElUX1NV RkZJWDoKKysgICAgICAgICAgICB3c3R5bGUgPSBaV1BfVEVYVF9JTlBVVF9WMV9QUkVFRElUX1NU WUxFX0lOQUNUSVZFOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBJQlVTX0FU VFJfUFJFRURJVF9FUlJPUl9TUEVMTElORzoKKysgICAgICAgICAgICB3c3R5bGUgPSBaV1BfVEVY VF9JTlBVVF9WMV9QUkVFRElUX1NUWUxFX0lOQ09SUkVDVDsKKysgICAgICAgICAgICBicmVhazsK KysgICAgICAgIGNhc2UgSUJVU19BVFRSX1BSRUVESVRfRVJST1JfQ09NUE9TRToKKysgICAgICAg ICAgICB3c3R5bGUgPSBaV1BfVEVYVF9JTlBVVF9WMV9QUkVFRElUX1NUWUxFX0lOQ09SUkVDVDsK KysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIGRlZmF1bHQ6OworKyAgICAgICAgfQorKyAg ICAgICAgaWYgKHdzdHlsZSA9PSBaV1BfVEVYVF9JTlBVVF9WMV9QUkVFRElUX1NUWUxFX0RFRkFV TFQpCisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICBzdHIgPSBwcml2LT5wcmVlZGl0 X3RleHQtPnRleHQ7CisrICAgICAgICBzdGFydCA9IGdfdXRmOF9vZmZzZXRfdG9fcG9pbnRlciAo c3RyLCBhdHRyLT5zdGFydF9pbmRleCkgLSBzdHI7CisrICAgICAgICBlbmQgPSBnX3V0Zjhfb2Zm c2V0X3RvX3BvaW50ZXIgKHN0ciwgYXR0ci0+ZW5kX2luZGV4KSAtIHN0cjsKKysgICAgICAgIC8q IERvdWJsZSBzdHlsZXMgY2Fubm90IGJlIGFwcGxpZWQgbGlrZXMgdGhlIHVuZGVybGluZSBhbmQK KysgICAgICAgICAqIHByZWVkaXQgY29sb3IuICovCisrICAgICAgICBpZiAoc3RhcnQgPT0gMCAm JiBzdHJsZW4gKHN0cikgPT0gZW5kICYmCisrICAgICAgICAgICAgKGkgPiAwIHx8IGlidXNfYXR0 cl9saXN0X2dldCAoYXR0cnMsIGkgKyAxKSkpIHsKKysgICAgICAgICAgICB3aG9sZV93c3R5bGUg PSB3c3R5bGU7CisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICB9CisrICAgICAgICBp ZiAoc3RhcnQgPiBlbmQpIHsKKysgICAgICAgICAgICBnX3dhcm5pbmcgKCJXcm9uZyBzdGFydCAl ZCBhbmQgZW5kICVkIGZvciAlcyIsIHN0YXJ0LCBlbmQsIHN0cik7CisrICAgICAgICAgICAgcmV0 dXJuOworKyAgICAgICAgfQorKyAgICAgICAgendwX2lucHV0X21ldGhvZF9jb250ZXh0X3YxX3By ZWVkaXRfc3R5bGluZyAocHJpdi0+Y29udGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIC0gc3RhcnQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3c3R5bGUpOworKyAg ICB9CisrICAgIGlmICh3aG9sZV93c3R5bGUgIT0gWldQX1RFWFRfSU5QVVRfVjFfUFJFRURJVF9T VFlMRV9ERUZBVUxUKSB7CisrICAgICAgICB1aW50MzJfdCB3aG9sZV9zdGFydCA9IDA7CisrICAg ICAgICB1aW50MzJfdCB3aG9sZV9lbmQgPSBzdHJsZW4gKHN0cik7CisrICAgICAgICB1aW50MzJf dCBzdGFydCwgZW5kOworKyAgICAgICAgZ2Jvb2xlYW4gZHJhd24gPSBGQUxTRTsKKysgICAgICAg IGZvciAoaSA9IDA7IDsgaSsrKSB7CisrICAgICAgICAgICAgSUJ1c0F0dHJpYnV0ZSAqYXR0ciA9 IGlidXNfYXR0cl9saXN0X2dldCAoYXR0cnMsIGkpOworKyAgICAgICAgICAgIGlmICghYXR0cikK KysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgc3RhcnQgPSBnX3V0Zjhfb2Zm c2V0X3RvX3BvaW50ZXIgKHN0ciwgYXR0ci0+c3RhcnRfaW5kZXgpIC0gc3RyOworKyAgICAgICAg ICAgIGVuZCA9IGdfdXRmOF9vZmZzZXRfdG9fcG9pbnRlciAoc3RyLCBhdHRyLT5lbmRfaW5kZXgp IC0gc3RyOworKyAgICAgICAgICAgIGlmIChzdGFydCA9PSAwICYmIHN0cmxlbiAoc3RyKSA9PSBl bmQpCisrICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgIGlmIChzdGFydCA9 PSAwKSB7CisrICAgICAgICAgICAgICAgIHdob2xlX3N0YXJ0ID0gZW5kOworKyAgICAgICAgICAg IH0gZWxzZSBpZiAoc3RybGVuIChzdHIpID09IGVuZCkgeworKyAgICAgICAgICAgICAgICB3aG9s ZV9lbmQgPSBzdGFydDsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICB3 aG9sZV9zdGFydCA9IHN0YXJ0OworKyAgICAgICAgICAgICAgICB3aG9sZV9lbmQgPSBlbmQ7Cisr ICAgICAgICAgICAgICAgIHp3cF9pbnB1dF9tZXRob2RfY29udGV4dF92MV9wcmVlZGl0X3N0eWxp bmcgKAorKyAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmNvbnRleHQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgd2hvbGVfc3RhcnQsCisrICAgICAgICAgICAgICAgICAgICAgICAgd2hv bGVfZW5kIC0gd2hvbGVfc3RhcnQsCisrICAgICAgICAgICAgICAgICAgICAgICAgd2hvbGVfd3N0 eWxlKTsKKysgICAgICAgICAgICAgICAgZHJhd24gPSBUUlVFOworKyAgICAgICAgICAgIH0KKysg ICAgICAgIH0KKysgICAgICAgIGlmICghZHJhd24pIHsKKysgICAgICAgICAgICB6d3BfaW5wdXRf bWV0aG9kX2NvbnRleHRfdjFfcHJlZWRpdF9zdHlsaW5nICgKKysgICAgICAgICAgICAgICAgcHJp di0+Y29udGV4dCwKKysgICAgICAgICAgICAgICAgd2hvbGVfc3RhcnQsCisrICAgICAgICAgICAg ICAgIHdob2xlX2VuZCAtIHdob2xlX3N0YXJ0LAorKyAgICAgICAgICAgICAgICB3aG9sZV93c3R5 bGUpOworKyAgICAgICAgfQorKyAgICB9CisrfQorKworIHN0YXRpYyB2b2lkCisgX2NvbnRleHRf c2hvd19wcmVlZGl0X3RleHRfY2IgKElCdXNJbnB1dENvbnRleHQgKmNvbnRleHQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNXYXlsYW5kSU0gICAgKndsaW0pCisgeworICAg ICBJQnVzV2F5bGFuZElNUHJpdmF0ZSAqcHJpdjsKKyAgICAgdWludDMyX3QgY3Vyc29yOworKyAg ICBjb25zdCBjaGFyICpjb21taXQgPSAiIjsKKyAgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19J U19XQVlMQU5EX0lNICh3bGltKSk7CisgICAgIHByaXYgPSBpYnVzX3dheWxhbmRfaW1fZ2V0X2lu c3RhbmNlX3ByaXZhdGUgKHdsaW0pOworICAgICAvKiBDVVJTT1IgaXMgYnl0ZSBvZmZzZXQuICAq LworQEAgLTI4MiwxMCArNDQ3LDEzIEBAIF9jb250ZXh0X3Nob3dfcHJlZWRpdF90ZXh0X2NiIChJ QnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAorIAorICAgICB6d3BfaW5wdXRfbWV0aG9kX2NvbnRl eHRfdjFfcHJlZWRpdF9jdXJzb3IgKHByaXYtPmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yKTsKKysgICAgaWJ1c193YXlsYW5k X2ltX3VwZGF0ZV9wcmVlZGl0X3N0eWxlICh3bGltKTsKKysgICAgaWYgKHByaXYtPnByZWVkaXRf bW9kZSA9PSBJQlVTX0VOR0lORV9QUkVFRElUX0NPTU1JVCkKKysgICAgICAgIGNvbW1pdCA9IHBy aXYtPnByZWVkaXRfdGV4dC0+dGV4dDsKKyAgICAgendwX2lucHV0X21ldGhvZF9jb250ZXh0X3Yx X3ByZWVkaXRfc3RyaW5nIChwcml2LT5jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPnNlcmlhbCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5wcmVlZGl0X3RleHQtPnRleHQs CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+ cHJlZWRpdF90ZXh0LT50ZXh0KTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb21taXQpOworIH0KKyAKKyAKK0BAIC0zMDgsNiArNDc2LDcgQEAgX2Nv bnRleHRfdXBkYXRlX3ByZWVkaXRfdGV4dF9jYiAoSUJ1c0lucHV0Q29udGV4dCAqY29udGV4dCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzVGV4dCAgICAgICAgICp0ZXh0 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgIGN1 cnNvcl9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAg ICAgICAgdmlzaWJsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAg ICAgICAgICAgICBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNX YXlsYW5kSU0gICAgKndsaW0pCisgeworICAgICBJQnVzV2F5bGFuZElNUHJpdmF0ZSAqcHJpdjsK K0BAIC0zMTcsNiArNDg2LDcgQEAgX2NvbnRleHRfdXBkYXRlX3ByZWVkaXRfdGV4dF9jYiAoSUJ1 c0lucHV0Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgIGdfb2JqZWN0X3VucmVmIChwcml2LT5w cmVlZGl0X3RleHQpOworICAgICBwcml2LT5wcmVlZGl0X3RleHQgPSBnX29iamVjdF9yZWZfc2lu ayAodGV4dCk7CisgICAgIHByaXYtPnByZWVkaXRfY3Vyc29yX3BvcyA9IGN1cnNvcl9wb3M7Cisr ICAgIHByaXYtPnByZWVkaXRfbW9kZSA9IG1vZGU7CisgCisgICAgIGlmICh2aXNpYmxlKQorICAg ICAgICAgX2NvbnRleHRfc2hvd19wcmVlZGl0X3RleHRfY2IgKGNvbnRleHQsIHdsaW0pOworQEAg LTk3Nyw3ICsxMTQ3LDcgQEAgX2NyZWF0ZV9pbnB1dF9jb250ZXh0X2RvbmUgKEdPYmplY3QgICAg ICAqb2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoX2NvbnRl eHRfZm9yd2FyZF9rZXlfZXZlbnRfY2IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2xp bSk7CisgCistICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChwcml2LT5pYnVzY29udGV4dCwgInVw ZGF0ZS1wcmVlZGl0LXRleHQiLAorKyAgICAgICAgZ19zaWduYWxfY29ubmVjdCAocHJpdi0+aWJ1 c2NvbnRleHQsICJ1cGRhdGUtcHJlZWRpdC10ZXh0LXdpdGgtbW9kZSIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBHX0NBTExCQUNLIChfY29udGV4dF91cGRhdGVfcHJlZWRpdF90ZXh0X2Ni KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdsaW0pOworICAgICAgICAgZ19zaWduYWxf Y29ubmVjdCAocHJpdi0+aWJ1c2NvbnRleHQsICJzaG93LXByZWVkaXQtdGV4dCIsCitAQCAtOTk0 LDYgKzExNjQsNyBAQCBfY3JlYXRlX2lucHV0X2NvbnRleHRfZG9uZSAoR09iamVjdCAgICAgICpv YmplY3QsCisgICAgICAgICAgICAgY2FwYWJpbGl0aWVzIHw9IElCVVNfQ0FQX1NZTkNfUFJPQ0VT U19LRVlfVjI7CisgICAgICAgICBpYnVzX2lucHV0X2NvbnRleHRfc2V0X2NhcGFiaWxpdGllcyAo cHJpdi0+aWJ1c2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2FwYWJpbGl0aWVzKTsKKysgICAgICAgIGlidXNfaW5wdXRfY29udGV4dF9zZXRf Y2xpZW50X2NvbW1pdF9wcmVlZGl0IChwcml2LT5pYnVzY29udGV4dCwgVFJVRSk7CisgICAgICAg ICBpZiAoX3VzZV9zeW5jX21vZGUgPT0gMSkgeworICAgICAgICAgICAgIGlidXNfaW5wdXRfY29u dGV4dF9zZXRfcG9zdF9wcm9jZXNzX2tleV9ldmVudCAocHJpdi0+aWJ1c2NvbnRleHQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU UlVFKTsKK2RpZmYgLS1naXQgYS9jbGllbnQvd2F5bGFuZC90ZXh0LWlucHV0LXVuc3RhYmxlLXYx LWNsaWVudC1wcm90b2NvbC5oIGIvY2xpZW50L3dheWxhbmQvdGV4dC1pbnB1dC11bnN0YWJsZS12 MS1jbGllbnQtcHJvdG9jb2wuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAw Li43MTA2OWVjNworLS0tIC9kZXYvbnVsbAorKysrIGIvY2xpZW50L3dheWxhbmQvdGV4dC1pbnB1 dC11bnN0YWJsZS12MS1jbGllbnQtcHJvdG9jb2wuaAorQEAgLTAsMCArMSw4NDcgQEAKKysvKiBH ZW5lcmF0ZWQgYnkgd2F5bGFuZC1zY2FubmVyIDEuMjIuMCAqLworKworKyNpZm5kZWYgVEVYVF9J TlBVVF9VTlNUQUJMRV9WMV9DTElFTlRfUFJPVE9DT0xfSAorKyNkZWZpbmUgVEVYVF9JTlBVVF9V TlNUQUJMRV9WMV9DTElFTlRfUFJPVE9DT0xfSAorKworKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysj aW5jbHVkZSA8c3RkZGVmLmg+CisrI2luY2x1ZGUgIndheWxhbmQtY2xpZW50LmgiCisrCisrI2lm ZGVmICBfX2NwbHVzcGx1cworK2V4dGVybiAiQyIgeworKyNlbmRpZgorKworKy8qKgorKyAqIEBw YWdlIHBhZ2VfdGV4dF9pbnB1dF91bnN0YWJsZV92MSBUaGUgdGV4dF9pbnB1dF91bnN0YWJsZV92 MSBwcm90b2NvbAorKyAqIEBzZWN0aW9uIHBhZ2VfaWZhY2VzX3RleHRfaW5wdXRfdW5zdGFibGVf djEgSW50ZXJmYWNlcworKyAqIC0gQHN1YnBhZ2UgcGFnZV9pZmFjZV96d3BfdGV4dF9pbnB1dF92 MSAtIHRleHQgaW5wdXQKKysgKiAtIEBzdWJwYWdlIHBhZ2VfaWZhY2VfendwX3RleHRfaW5wdXRf bWFuYWdlcl92MSAtIHRleHQgaW5wdXQgbWFuYWdlcgorKyAqIEBzZWN0aW9uIHBhZ2VfY29weXJp Z2h0X3RleHRfaW5wdXRfdW5zdGFibGVfdjEgQ29weXJpZ2h0CisrICogPHByZT4KKysgKgorKyAq IENvcHlyaWdodCDCqSAyMDEyLCAyMDEzIEludGVsIENvcnBvcmF0aW9uCisrICoKKysgKiBQZXJt aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv YnRhaW5pbmcgYQorKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisrICogdG8gZGVhbCBpbiB0aGUgU29m dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgor KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLAorKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorKyAqIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cisr ICoKKysgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisrICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorKyAqIFNvZnR3 YXJlLgorKyAqCisrICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKysgKiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKysg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAg SU4gTk8gRVZFTlQgU0hBTEwKKysgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HCisrICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUiBPVEhFUgorKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKysgKiA8 L3ByZT4KKysgKi8KKytzdHJ1Y3Qgd2xfc2VhdDsKKytzdHJ1Y3Qgd2xfc3VyZmFjZTsKKytzdHJ1 Y3QgendwX3RleHRfaW5wdXRfbWFuYWdlcl92MTsKKytzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjE7 CisrCisrI2lmbmRlZiBaV1BfVEVYVF9JTlBVVF9WMV9JTlRFUkZBQ0UKKysjZGVmaW5lIFpXUF9U RVhUX0lOUFVUX1YxX0lOVEVSRkFDRQorKy8qKgorKyAqIEBwYWdlIHBhZ2VfaWZhY2VfendwX3Rl eHRfaW5wdXRfdjEgendwX3RleHRfaW5wdXRfdjEKKysgKiBAc2VjdGlvbiBwYWdlX2lmYWNlX3p3 cF90ZXh0X2lucHV0X3YxX2Rlc2MgRGVzY3JpcHRpb24KKysgKgorKyAqIEFuIG9iamVjdCB1c2Vk IGZvciB0ZXh0IGlucHV0LiBBZGRzIHN1cHBvcnQgZm9yIHRleHQgaW5wdXQgYW5kIGlucHV0Cisr ICogbWV0aG9kcyB0byBhcHBsaWNhdGlvbnMuIEEgdGV4dF9pbnB1dCBvYmplY3QgaXMgY3JlYXRl ZCBmcm9tIGEKKysgKiB3bF90ZXh0X2lucHV0X21hbmFnZXIgYW5kIGNvcnJlc3BvbmRzIHR5cGlj YWxseSB0byBhIHRleHQgZW50cnkgaW4gYW4KKysgKiBhcHBsaWNhdGlvbi4KKysgKgorKyAqIFJl cXVlc3RzIGFyZSB1c2VkIHRvIGFjdGl2YXRlL2RlYWN0aXZhdGUgdGhlIHRleHRfaW5wdXQgb2Jq ZWN0IGFuZCBzZXQKKysgKiBzdGF0ZSBpbmZvcm1hdGlvbiBsaWtlIHN1cnJvdW5kaW5nIGFuZCBz ZWxlY3RlZCB0ZXh0IG9yIHRoZSBjb250ZW50IHR5cGUuCisrICogVGhlIGluZm9ybWF0aW9uIGFi b3V0IGVudGVyZWQgdGV4dCBpcyBzZW50IHRvIHRoZSB0ZXh0X2lucHV0IG9iamVjdCB2aWEKKysg KiB0aGUgcHJlLWVkaXQgYW5kIGNvbW1pdCBldmVudHMuIFVzaW5nIHRoaXMgaW50ZXJmYWNlIHJl bW92ZXMgdGhlIG5lZWQKKysgKiBmb3IgYXBwbGljYXRpb25zIHRvIGRpcmVjdGx5IHByb2Nlc3Mg aGFyZHdhcmUga2V5IGV2ZW50cyBhbmQgY29tcG9zZSB0ZXh0CisrICogb3V0IG9mIHRoZW0uCisr ICoKKysgKiBUZXh0IGlzIGdlbmVyYWxseSBVVEYtOCBlbmNvZGVkLCBpbmRpY2VzIGFuZCBsZW5n dGhzIGFyZSBpbiBieXRlcy4KKysgKgorKyAqIFNlcmlhbHMgYXJlIHVzZWQgdG8gc3luY2hyb25p emUgdGhlIHN0YXRlIGJldHdlZW4gdGhlIHRleHQgaW5wdXQgYW5kCisrICogYW4gaW5wdXQgbWV0 aG9kLiBOZXcgc2VyaWFscyBhcmUgc2VudCBieSB0aGUgdGV4dCBpbnB1dCBpbiB0aGUKKysgKiBj b21taXRfc3RhdGUgcmVxdWVzdCBhbmQgYXJlIHVzZWQgYnkgdGhlIGlucHV0IG1ldGhvZCB0byBp bmRpY2F0ZQorKyAqIHRoZSBrbm93biB0ZXh0IGlucHV0IHN0YXRlIGluIGV2ZW50cyBsaWtlIHBy ZWVkaXRfc3RyaW5nLCBjb21taXRfc3RyaW5nLAorKyAqIGFuZCBrZXlzeW0uIFRoZSB0ZXh0IGlu cHV0IGNhbiB0aGVuIGlnbm9yZSBldmVudHMgZnJvbSB0aGUgaW5wdXQgbWV0aG9kCisrICogd2hp Y2ggYXJlIGJhc2VkIG9uIGFuIG91dGRhdGVkIHN0YXRlIChmb3IgZXhhbXBsZSBhZnRlciBhIHJl c2V0KS4KKysgKgorKyAqIFdhcm5pbmchIFRoZSBwcm90b2NvbCBkZXNjcmliZWQgaW4gdGhpcyBm aWxlIGlzIGV4cGVyaW1lbnRhbCBhbmQKKysgKiBiYWNrd2FyZCBpbmNvbXBhdGlibGUgY2hhbmdl cyBtYXkgYmUgbWFkZS4gQmFja3dhcmQgY29tcGF0aWJsZSBjaGFuZ2VzCisrICogbWF5IGJlIGFk ZGVkIHRvZ2V0aGVyIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIHZlcnNpb24gYnVt cC4KKysgKiBCYWNrd2FyZCBpbmNvbXBhdGlibGUgY2hhbmdlcyBhcmUgZG9uZSBieSBidW1waW5n IHRoZSB2ZXJzaW9uIG51bWJlciBpbgorKyAqIHRoZSBwcm90b2NvbCBhbmQgaW50ZXJmYWNlIG5h bWVzIGFuZCByZXNldHRpbmcgdGhlIGludGVyZmFjZSB2ZXJzaW9uLgorKyAqIE9uY2UgdGhlIHBy b3RvY29sIGlzIHRvIGJlIGRlY2xhcmVkIHN0YWJsZSwgdGhlICd6JyBwcmVmaXggYW5kIHRoZQor KyAqIHZlcnNpb24gbnVtYmVyIGluIHRoZSBwcm90b2NvbCBhbmQgaW50ZXJmYWNlIG5hbWVzIGFy ZSByZW1vdmVkIGFuZCB0aGUKKysgKiBpbnRlcmZhY2UgdmVyc2lvbiBudW1iZXIgaXMgcmVzZXQu CisrICogQHNlY3Rpb24gcGFnZV9pZmFjZV96d3BfdGV4dF9pbnB1dF92MV9hcGkgQVBJCisrICog U2VlIEByZWYgaWZhY2VfendwX3RleHRfaW5wdXRfdjEuCisrICovCisrLyoqCisrICogQGRlZmdy b3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxIFRoZSB6d3BfdGV4dF9pbnB1dF92MSBpbnRlcmZh Y2UKKysgKgorKyAqIEFuIG9iamVjdCB1c2VkIGZvciB0ZXh0IGlucHV0LiBBZGRzIHN1cHBvcnQg Zm9yIHRleHQgaW5wdXQgYW5kIGlucHV0CisrICogbWV0aG9kcyB0byBhcHBsaWNhdGlvbnMuIEEg dGV4dF9pbnB1dCBvYmplY3QgaXMgY3JlYXRlZCBmcm9tIGEKKysgKiB3bF90ZXh0X2lucHV0X21h bmFnZXIgYW5kIGNvcnJlc3BvbmRzIHR5cGljYWxseSB0byBhIHRleHQgZW50cnkgaW4gYW4KKysg KiBhcHBsaWNhdGlvbi4KKysgKgorKyAqIFJlcXVlc3RzIGFyZSB1c2VkIHRvIGFjdGl2YXRlL2Rl YWN0aXZhdGUgdGhlIHRleHRfaW5wdXQgb2JqZWN0IGFuZCBzZXQKKysgKiBzdGF0ZSBpbmZvcm1h dGlvbiBsaWtlIHN1cnJvdW5kaW5nIGFuZCBzZWxlY3RlZCB0ZXh0IG9yIHRoZSBjb250ZW50IHR5 cGUuCisrICogVGhlIGluZm9ybWF0aW9uIGFib3V0IGVudGVyZWQgdGV4dCBpcyBzZW50IHRvIHRo ZSB0ZXh0X2lucHV0IG9iamVjdCB2aWEKKysgKiB0aGUgcHJlLWVkaXQgYW5kIGNvbW1pdCBldmVu dHMuIFVzaW5nIHRoaXMgaW50ZXJmYWNlIHJlbW92ZXMgdGhlIG5lZWQKKysgKiBmb3IgYXBwbGlj YXRpb25zIHRvIGRpcmVjdGx5IHByb2Nlc3MgaGFyZHdhcmUga2V5IGV2ZW50cyBhbmQgY29tcG9z ZSB0ZXh0CisrICogb3V0IG9mIHRoZW0uCisrICoKKysgKiBUZXh0IGlzIGdlbmVyYWxseSBVVEYt OCBlbmNvZGVkLCBpbmRpY2VzIGFuZCBsZW5ndGhzIGFyZSBpbiBieXRlcy4KKysgKgorKyAqIFNl cmlhbHMgYXJlIHVzZWQgdG8gc3luY2hyb25pemUgdGhlIHN0YXRlIGJldHdlZW4gdGhlIHRleHQg aW5wdXQgYW5kCisrICogYW4gaW5wdXQgbWV0aG9kLiBOZXcgc2VyaWFscyBhcmUgc2VudCBieSB0 aGUgdGV4dCBpbnB1dCBpbiB0aGUKKysgKiBjb21taXRfc3RhdGUgcmVxdWVzdCBhbmQgYXJlIHVz ZWQgYnkgdGhlIGlucHV0IG1ldGhvZCB0byBpbmRpY2F0ZQorKyAqIHRoZSBrbm93biB0ZXh0IGlu cHV0IHN0YXRlIGluIGV2ZW50cyBsaWtlIHByZWVkaXRfc3RyaW5nLCBjb21taXRfc3RyaW5nLAor KyAqIGFuZCBrZXlzeW0uIFRoZSB0ZXh0IGlucHV0IGNhbiB0aGVuIGlnbm9yZSBldmVudHMgZnJv bSB0aGUgaW5wdXQgbWV0aG9kCisrICogd2hpY2ggYXJlIGJhc2VkIG9uIGFuIG91dGRhdGVkIHN0 YXRlIChmb3IgZXhhbXBsZSBhZnRlciBhIHJlc2V0KS4KKysgKgorKyAqIFdhcm5pbmchIFRoZSBw cm90b2NvbCBkZXNjcmliZWQgaW4gdGhpcyBmaWxlIGlzIGV4cGVyaW1lbnRhbCBhbmQKKysgKiBi YWNrd2FyZCBpbmNvbXBhdGlibGUgY2hhbmdlcyBtYXkgYmUgbWFkZS4gQmFja3dhcmQgY29tcGF0 aWJsZSBjaGFuZ2VzCisrICogbWF5IGJlIGFkZGVkIHRvZ2V0aGVyIHdpdGggdGhlIGNvcnJlc3Bv bmRpbmcgaW50ZXJmYWNlIHZlcnNpb24gYnVtcC4KKysgKiBCYWNrd2FyZCBpbmNvbXBhdGlibGUg Y2hhbmdlcyBhcmUgZG9uZSBieSBidW1waW5nIHRoZSB2ZXJzaW9uIG51bWJlciBpbgorKyAqIHRo ZSBwcm90b2NvbCBhbmQgaW50ZXJmYWNlIG5hbWVzIGFuZCByZXNldHRpbmcgdGhlIGludGVyZmFj ZSB2ZXJzaW9uLgorKyAqIE9uY2UgdGhlIHByb3RvY29sIGlzIHRvIGJlIGRlY2xhcmVkIHN0YWJs ZSwgdGhlICd6JyBwcmVmaXggYW5kIHRoZQorKyAqIHZlcnNpb24gbnVtYmVyIGluIHRoZSBwcm90 b2NvbCBhbmQgaW50ZXJmYWNlIG5hbWVzIGFyZSByZW1vdmVkIGFuZCB0aGUKKysgKiBpbnRlcmZh Y2UgdmVyc2lvbiBudW1iZXIgaXMgcmVzZXQuCisrICovCisrZXh0ZXJuIGNvbnN0IHN0cnVjdCB3 bF9pbnRlcmZhY2UgendwX3RleHRfaW5wdXRfdjFfaW50ZXJmYWNlOworKyNlbmRpZgorKyNpZm5k ZWYgWldQX1RFWFRfSU5QVVRfTUFOQUdFUl9WMV9JTlRFUkZBQ0UKKysjZGVmaW5lIFpXUF9URVhU X0lOUFVUX01BTkFHRVJfVjFfSU5URVJGQUNFCisrLyoqCisrICogQHBhZ2UgcGFnZV9pZmFjZV96 d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxIHp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjEKKysgKiBA c2VjdGlvbiBwYWdlX2lmYWNlX3p3cF90ZXh0X2lucHV0X21hbmFnZXJfdjFfZGVzYyBEZXNjcmlw dGlvbgorKyAqCisrICogQSBmYWN0b3J5IGZvciB0ZXh0X2lucHV0IG9iamVjdHMuIFRoaXMgb2Jq ZWN0IGlzIGEgZ2xvYmFsIHNpbmdsZXRvbi4KKysgKiBAc2VjdGlvbiBwYWdlX2lmYWNlX3p3cF90 ZXh0X2lucHV0X21hbmFnZXJfdjFfYXBpIEFQSQorKyAqIFNlZSBAcmVmIGlmYWNlX3p3cF90ZXh0 X2lucHV0X21hbmFnZXJfdjEuCisrICovCisrLyoqCisrICogQGRlZmdyb3VwIGlmYWNlX3p3cF90 ZXh0X2lucHV0X21hbmFnZXJfdjEgVGhlIHp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjEgaW50ZXJm YWNlCisrICoKKysgKiBBIGZhY3RvcnkgZm9yIHRleHRfaW5wdXQgb2JqZWN0cy4gVGhpcyBvYmpl Y3QgaXMgYSBnbG9iYWwgc2luZ2xldG9uLgorKyAqLworK2V4dGVybiBjb25zdCBzdHJ1Y3Qgd2xf aW50ZXJmYWNlIHp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjFfaW50ZXJmYWNlOworKyNlbmRpZgor KworKyNpZm5kZWYgWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5UX0VOVU0KKysjZGVmaW5l IFpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfSElOVF9FTlVNCisrLyoqCisrICogQGluZ3JvdXAg aWZhY2VfendwX3RleHRfaW5wdXRfdjEKKysgKiBjb250ZW50IGhpbnQKKysgKgorKyAqIENvbnRl bnQgaGludCBpcyBhIGJpdG1hc2sgdG8gYWxsb3cgdG8gbW9kaWZ5IHRoZSBiZWhhdmlvciBvZiB0 aGUgdGV4dAorKyAqIGlucHV0LgorKyAqLworK2VudW0gendwX3RleHRfaW5wdXRfdjFfY29udGVu dF9oaW50IHsKKysJLyoqCisrCSAqIG5vIHNwZWNpYWwgYmVoYXZpb3VyCisrCSAqLworKwlaV1Bf VEVYVF9JTlBVVF9WMV9DT05URU5UX0hJTlRfTk9ORSA9IDB4MCwKKysJLyoqCisrCSAqIGF1dG8g Y29tcGxldGlvbiwgY29ycmVjdGlvbiBhbmQgY2FwaXRhbGl6YXRpb24KKysJICovCisrCVpXUF9U RVhUX0lOUFVUX1YxX0NPTlRFTlRfSElOVF9ERUZBVUxUID0gMHg3LAorKwkvKioKKysJICogaGlk ZGVuIGFuZCBzZW5zaXRpdmUgdGV4dAorKwkgKi8KKysJWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVO VF9ISU5UX1BBU1NXT1JEID0gMHhjMCwKKysJLyoqCisrCSAqIHN1Z2dlc3Qgd29yZCBjb21wbGV0 aW9ucworKwkgKi8KKysJWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5UX0FVVE9fQ09NUExF VElPTiA9IDB4MSwKKysJLyoqCisrCSAqIHN1Z2dlc3Qgd29yZCBjb3JyZWN0aW9ucworKwkgKi8K KysJWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5UX0FVVE9fQ09SUkVDVElPTiA9IDB4MiwK KysJLyoqCisrCSAqIHN3aXRjaCB0byB1cHBlcmNhc2UgbGV0dGVycyBhdCB0aGUgc3RhcnQgb2Yg YSBzZW50ZW5jZQorKwkgKi8KKysJWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5UX0FVVE9f Q0FQSVRBTElaQVRJT04gPSAweDQsCisrCS8qKgorKwkgKiBwcmVmZXIgbG93ZXJjYXNlIGxldHRl cnMKKysJICovCisrCVpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfSElOVF9MT1dFUkNBU0UgPSAw eDgsCisrCS8qKgorKwkgKiBwcmVmZXIgdXBwZXJjYXNlIGxldHRlcnMKKysJICovCisrCVpXUF9U RVhUX0lOUFVUX1YxX0NPTlRFTlRfSElOVF9VUFBFUkNBU0UgPSAweDEwLAorKwkvKioKKysJICog cHJlZmVyIGNhc2luZyBmb3IgdGl0bGVzIGFuZCBoZWFkaW5ncyAoY2FuIGJlIGxhbmd1YWdlIGRl cGVuZGVudCkKKysJICovCisrCVpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfSElOVF9USVRMRUNB U0UgPSAweDIwLAorKwkvKioKKysJICogY2hhcmFjdGVycyBzaG91bGQgYmUgaGlkZGVuCisrCSAq LworKwlaV1BfVEVYVF9JTlBVVF9WMV9DT05URU5UX0hJTlRfSElEREVOX1RFWFQgPSAweDQwLAor KwkvKioKKysJICogdHlwZWQgdGV4dCBzaG91bGQgbm90IGJlIHN0b3JlZAorKwkgKi8KKysJWldQ X1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5UX1NFTlNJVElWRV9EQVRBID0gMHg4MCwKKysJLyoq CisrCSAqIGp1c3QgbGF0aW4gY2hhcmFjdGVycyBzaG91bGQgYmUgZW50ZXJlZAorKwkgKi8KKysJ WldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5UX0xBVElOID0gMHgxMDAsCisrCS8qKgorKwkg KiB0aGUgdGV4dCBpbnB1dCBpcyBtdWx0aWxpbmUKKysJICovCisrCVpXUF9URVhUX0lOUFVUX1Yx X0NPTlRFTlRfSElOVF9NVUxUSUxJTkUgPSAweDIwMCwKKyt9OworKyNlbmRpZiAvKiBaV1BfVEVY VF9JTlBVVF9WMV9DT05URU5UX0hJTlRfRU5VTSAqLworKworKyNpZm5kZWYgWldQX1RFWFRfSU5Q VVRfVjFfQ09OVEVOVF9QVVJQT1NFX0VOVU0KKysjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX0NP TlRFTlRfUFVSUE9TRV9FTlVNCisrLyoqCisrICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5w dXRfdjEKKysgKiBjb250ZW50IHB1cnBvc2UKKysgKgorKyAqIFRoZSBjb250ZW50IHB1cnBvc2Ug YWxsb3dzIHRvIHNwZWNpZnkgdGhlIHByaW1hcnkgcHVycG9zZSBvZiBhIHRleHQKKysgKiBpbnB1 dC4KKysgKgorKyAqIFRoaXMgYWxsb3dzIGFuIGlucHV0IG1ldGhvZCB0byBzaG93IHNwZWNpYWwg cHVycG9zZSBpbnB1dCBwYW5lbHMgd2l0aAorKyAqIGV4dHJhIGNoYXJhY3RlcnMgb3IgdG8gZGlz YWxsb3cgc29tZSBjaGFyYWN0ZXJzLgorKyAqLworK2VudW0gendwX3RleHRfaW5wdXRfdjFfY29u dGVudF9wdXJwb3NlIHsKKysJLyoqCisrCSAqIGRlZmF1bHQgaW5wdXQsIGFsbG93aW5nIGFsbCBj aGFyYWN0ZXJzCisrCSAqLworKwlaV1BfVEVYVF9JTlBVVF9WMV9DT05URU5UX1BVUlBPU0VfTk9S TUFMID0gMCwKKysJLyoqCisrCSAqIGFsbG93IG9ubHkgYWxwaGFiZXRpYyBjaGFyYWN0ZXJzCisr CSAqLworKwlaV1BfVEVYVF9JTlBVVF9WMV9DT05URU5UX1BVUlBPU0VfQUxQSEEgPSAxLAorKwkv KioKKysJICogYWxsb3cgb25seSBkaWdpdHMKKysJICovCisrCVpXUF9URVhUX0lOUFVUX1YxX0NP TlRFTlRfUFVSUE9TRV9ESUdJVFMgPSAyLAorKwkvKioKKysJICogaW5wdXQgYSBudW1iZXIgKGlu Y2x1ZGluZyBkZWNpbWFsIHNlcGFyYXRvciBhbmQgc2lnbikKKysJICovCisrCVpXUF9URVhUX0lO UFVUX1YxX0NPTlRFTlRfUFVSUE9TRV9OVU1CRVIgPSAzLAorKwkvKioKKysJICogaW5wdXQgYSBw aG9uZSBudW1iZXIKKysJICovCisrCVpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfUFVSUE9TRV9Q SE9ORSA9IDQsCisrCS8qKgorKwkgKiBpbnB1dCBhbiBVUkwKKysJICovCisrCVpXUF9URVhUX0lO UFVUX1YxX0NPTlRFTlRfUFVSUE9TRV9VUkwgPSA1LAorKwkvKioKKysJICogaW5wdXQgYW4gZW1h aWwgYWRkcmVzcworKwkgKi8KKysJWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9QVVJQT1NFX0VN QUlMID0gNiwKKysJLyoqCisrCSAqIGlucHV0IGEgbmFtZSBvZiBhIHBlcnNvbgorKwkgKi8KKysJ WldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9QVVJQT1NFX05BTUUgPSA3LAorKwkvKioKKysJICog aW5wdXQgYSBwYXNzd29yZCAoY29tYmluZSB3aXRoIHBhc3N3b3JkIG9yIHNlbnNpdGl2ZV9kYXRh IGhpbnQpCisrCSAqLworKwlaV1BfVEVYVF9JTlBVVF9WMV9DT05URU5UX1BVUlBPU0VfUEFTU1dP UkQgPSA4LAorKwkvKioKKysJICogaW5wdXQgYSBkYXRlCisrCSAqLworKwlaV1BfVEVYVF9JTlBV VF9WMV9DT05URU5UX1BVUlBPU0VfREFURSA9IDksCisrCS8qKgorKwkgKiBpbnB1dCBhIHRpbWUK KysJICovCisrCVpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfUFVSUE9TRV9USU1FID0gMTAsCisr CS8qKgorKwkgKiBpbnB1dCBhIGRhdGUgYW5kIHRpbWUKKysJICovCisrCVpXUF9URVhUX0lOUFVU X1YxX0NPTlRFTlRfUFVSUE9TRV9EQVRFVElNRSA9IDExLAorKwkvKioKKysJICogaW5wdXQgZm9y IGEgdGVybWluYWwKKysJICovCisrCVpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfUFVSUE9TRV9U RVJNSU5BTCA9IDEyLAorK307CisrI2VuZGlmIC8qIFpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRf UFVSUE9TRV9FTlVNICovCisrCisrI2lmbmRlZiBaV1BfVEVYVF9JTlBVVF9WMV9QUkVFRElUX1NU WUxFX0VOVU0KKysjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX1BSRUVESVRfU1RZTEVfRU5VTQor K2VudW0gendwX3RleHRfaW5wdXRfdjFfcHJlZWRpdF9zdHlsZSB7CisrCS8qKgorKwkgKiBkZWZh dWx0IHN0eWxlIGZvciBjb21wb3NpbmcgdGV4dAorKwkgKi8KKysJWldQX1RFWFRfSU5QVVRfVjFf UFJFRURJVF9TVFlMRV9ERUZBVUxUID0gMCwKKysJLyoqCisrCSAqIHN0eWxlIHNob3VsZCBiZSB0 aGUgc2FtZSBhcyBpbiBub24tY29tcG9zaW5nIHRleHQKKysJICovCisrCVpXUF9URVhUX0lOUFVU X1YxX1BSRUVESVRfU1RZTEVfTk9ORSA9IDEsCisrCVpXUF9URVhUX0lOUFVUX1YxX1BSRUVESVRf U1RZTEVfQUNUSVZFID0gMiwKKysJWldQX1RFWFRfSU5QVVRfVjFfUFJFRURJVF9TVFlMRV9JTkFD VElWRSA9IDMsCisrCVpXUF9URVhUX0lOUFVUX1YxX1BSRUVESVRfU1RZTEVfSElHSExJR0hUID0g NCwKKysJWldQX1RFWFRfSU5QVVRfVjFfUFJFRURJVF9TVFlMRV9VTkRFUkxJTkUgPSA1LAorKwla V1BfVEVYVF9JTlBVVF9WMV9QUkVFRElUX1NUWUxFX1NFTEVDVElPTiA9IDYsCisrCVpXUF9URVhU X0lOUFVUX1YxX1BSRUVESVRfU1RZTEVfSU5DT1JSRUNUID0gNywKKyt9OworKyNlbmRpZiAvKiBa V1BfVEVYVF9JTlBVVF9WMV9QUkVFRElUX1NUWUxFX0VOVU0gKi8KKysKKysjaWZuZGVmIFpXUF9U RVhUX0lOUFVUX1YxX1RFWFRfRElSRUNUSU9OX0VOVU0KKysjZGVmaW5lIFpXUF9URVhUX0lOUFVU X1YxX1RFWFRfRElSRUNUSU9OX0VOVU0KKytlbnVtIHp3cF90ZXh0X2lucHV0X3YxX3RleHRfZGly ZWN0aW9uIHsKKysJLyoqCisrCSAqIGF1dG9tYXRpYyB0ZXh0IGRpcmVjdGlvbiBiYXNlZCBvbiB0 ZXh0IGFuZCBsYW5ndWFnZQorKwkgKi8KKysJWldQX1RFWFRfSU5QVVRfVjFfVEVYVF9ESVJFQ1RJ T05fQVVUTyA9IDAsCisrCS8qKgorKwkgKiBsZWZ0LXRvLXJpZ2h0CisrCSAqLworKwlaV1BfVEVY VF9JTlBVVF9WMV9URVhUX0RJUkVDVElPTl9MVFIgPSAxLAorKwkvKioKKysJICogcmlnaHQtdG8t bGVmdAorKwkgKi8KKysJWldQX1RFWFRfSU5QVVRfVjFfVEVYVF9ESVJFQ1RJT05fUlRMID0gMiwK Kyt9OworKyNlbmRpZiAvKiBaV1BfVEVYVF9JTlBVVF9WMV9URVhUX0RJUkVDVElPTl9FTlVNICov CisrCisrLyoqCisrICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEKKysgKiBAc3Ry dWN0IHp3cF90ZXh0X2lucHV0X3YxX2xpc3RlbmVyCisrICovCisrc3RydWN0IHp3cF90ZXh0X2lu cHV0X3YxX2xpc3RlbmVyIHsKKysJLyoqCisrCSAqIGVudGVyIGV2ZW50CisrCSAqCisrCSAqIE5v dGlmeSB0aGUgdGV4dF9pbnB1dCBvYmplY3Qgd2hlbiBpdCByZWNlaXZlZCBmb2N1cy4gVHlwaWNh bGx5CisrCSAqIGluIHJlc3BvbnNlIHRvIGFuIGFjdGl2YXRlIHJlcXVlc3QuCisrCSAqLworKwl2 b2lkICgqZW50ZXIpKHZvaWQgKmRhdGEsCisrCQkgICAgICBzdHJ1Y3QgendwX3RleHRfaW5wdXRf djEgKnp3cF90ZXh0X2lucHV0X3YxLAorKwkJICAgICAgc3RydWN0IHdsX3N1cmZhY2UgKnN1cmZh Y2UpOworKwkvKioKKysJICogbGVhdmUgZXZlbnQKKysJICoKKysJICogTm90aWZ5IHRoZSB0ZXh0 X2lucHV0IG9iamVjdCB3aGVuIGl0IGxvc3QgZm9jdXMuIEVpdGhlciBpbgorKwkgKiByZXNwb25z ZSB0byBhIGRlYWN0aXZhdGUgcmVxdWVzdCBvciB3aGVuIHRoZSBhc3NpZ25lZCBzdXJmYWNlCisr CSAqIGxvc3QgZm9jdXMgb3Igd2FzIGRlc3Ryb3llZC4KKysJICovCisrCXZvaWQgKCpsZWF2ZSko dm9pZCAqZGF0YSwKKysJCSAgICAgIHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAqendwX3RleHRf aW5wdXRfdjEpOworKwkvKioKKysJICogbW9kaWZpZXJzIG1hcAorKwkgKgorKwkgKiBUcmFuc2Zl ciBhbiBhcnJheSBvZiAwLXRlcm1pbmF0ZWQgbW9kaWZpZXIgbmFtZXMuIFRoZSBwb3NpdGlvbgor KwkgKiBpbiB0aGUgYXJyYXkgaXMgdGhlIGluZGV4IG9mIHRoZSBtb2RpZmllciBhcyB1c2VkIGlu IHRoZQorKwkgKiBtb2RpZmllcnMgYml0bWFzayBpbiB0aGUga2V5c3ltIGV2ZW50LgorKwkgKi8K KysJdm9pZCAoKm1vZGlmaWVyc19tYXApKHZvaWQgKmRhdGEsCisrCQkJICAgICAgc3RydWN0IHp3 cF90ZXh0X2lucHV0X3YxICp6d3BfdGV4dF9pbnB1dF92MSwKKysJCQkgICAgICBzdHJ1Y3Qgd2xf YXJyYXkgKm1hcCk7CisrCS8qKgorKwkgKiBzdGF0ZSBvZiB0aGUgaW5wdXQgcGFuZWwKKysJICoK KysJICogTm90aWZ5IHdoZW4gdGhlIHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIGlucHV0IHBhbmVs IGNoYW5nZWQuCisrCSAqLworKwl2b2lkICgqaW5wdXRfcGFuZWxfc3RhdGUpKHZvaWQgKmRhdGEs CisrCQkJCSAgc3RydWN0IHp3cF90ZXh0X2lucHV0X3YxICp6d3BfdGV4dF9pbnB1dF92MSwKKysJ CQkJICB1aW50MzJfdCBzdGF0ZSk7CisrCS8qKgorKwkgKiBwcmUtZWRpdAorKwkgKgorKwkgKiBO b3RpZnkgd2hlbiBhIG5ldyBjb21wb3NpbmcgdGV4dCAocHJlLWVkaXQpIHNob3VsZCBiZSBzZXQK KysJICogYXJvdW5kIHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbi4gQW55IHByZXZpb3VzbHkg c2V0IGNvbXBvc2luZworKwkgKiB0ZXh0IHNob3VsZCBiZSByZW1vdmVkLgorKwkgKgorKwkgKiBU aGUgY29tbWl0IHRleHQgY2FuIGJlIHVzZWQgdG8gcmVwbGFjZSB0aGUgcHJlZWRpdCB0ZXh0IG9u IHJlc2V0CisrCSAqIChmb3IgZXhhbXBsZSBvbiB1bmZvY3VzKS4KKysJICoKKysJICogVGhlIHRl eHQgaW5wdXQgc2hvdWxkIGFsc28gaGFuZGxlIGFsbCBwcmVlZGl0X3N0eWxlIGFuZAorKwkgKiBw cmVlZGl0X2N1cnNvciBldmVudHMgb2NjdXJyaW5nIGRpcmVjdGx5IGJlZm9yZSBwcmVlZGl0X3N0 cmluZy4KKysJICogQHBhcmFtIHNlcmlhbCBzZXJpYWwgb2YgdGhlIGxhdGVzdCBrbm93biB0ZXh0 IGlucHV0IHN0YXRlCisrCSAqLworKwl2b2lkICgqcHJlZWRpdF9zdHJpbmcpKHZvaWQgKmRhdGEs CisrCQkJICAgICAgIHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAqendwX3RleHRfaW5wdXRfdjEs CisrCQkJICAgICAgIHVpbnQzMl90IHNlcmlhbCwKKysJCQkgICAgICAgY29uc3QgY2hhciAqdGV4 dCwKKysJCQkgICAgICAgY29uc3QgY2hhciAqY29tbWl0KTsKKysJLyoqCisrCSAqIHByZS1lZGl0 IHN0eWxpbmcKKysJICoKKysJICogU2V0cyBzdHlsaW5nIGluZm9ybWF0aW9uIG9uIGNvbXBvc2lu ZyB0ZXh0LiBUaGUgc3R5bGUgaXMKKysJICogYXBwbGllZCBmb3IgbGVuZ3RoIGJ5dGVzIGZyb20g aW5kZXggcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZyBvZgorKwkgKiB0aGUgY29tcG9zaW5nIHRl eHQgKGFzIGJ5dGUgb2Zmc2V0KS4gTXVsdGlwbGUgc3R5bGVzIGNhbiBiZQorKwkgKiBhcHBsaWVk IHRvIGEgY29tcG9zaW5nIHRleHQgYnkgc2VuZGluZyBtdWx0aXBsZSBwcmVlZGl0X3N0eWxpbmcK KysJICogZXZlbnRzLgorKwkgKgorKwkgKiBUaGlzIGV2ZW50IGlzIGhhbmRsZWQgYXMgcGFydCBv ZiBhIGZvbGxvd2luZyBwcmVlZGl0X3N0cmluZworKwkgKiBldmVudC4KKysJICovCisrCXZvaWQg KCpwcmVlZGl0X3N0eWxpbmcpKHZvaWQgKmRhdGEsCisrCQkJCXN0cnVjdCB6d3BfdGV4dF9pbnB1 dF92MSAqendwX3RleHRfaW5wdXRfdjEsCisrCQkJCXVpbnQzMl90IGluZGV4LAorKwkJCQl1aW50 MzJfdCBsZW5ndGgsCisrCQkJCXVpbnQzMl90IHN0eWxlKTsKKysJLyoqCisrCSAqIHByZS1lZGl0 IGN1cnNvcgorKwkgKgorKwkgKiBTZXRzIHRoZSBjdXJzb3IgcG9zaXRpb24gaW5zaWRlIHRoZSBj b21wb3NpbmcgdGV4dCAoYXMgYnl0ZQorKwkgKiBvZmZzZXQpIHJlbGF0aXZlIHRvIHRoZSBzdGFy dCBvZiB0aGUgY29tcG9zaW5nIHRleHQuIFdoZW4gaW5kZXgKKysJICogaXMgYSBuZWdhdGl2ZSBu dW1iZXIgbm8gY3Vyc29yIGlzIHNob3duLgorKwkgKgorKwkgKiBUaGlzIGV2ZW50IGlzIGhhbmRs ZWQgYXMgcGFydCBvZiBhIGZvbGxvd2luZyBwcmVlZGl0X3N0cmluZworKwkgKiBldmVudC4KKysJ ICovCisrCXZvaWQgKCpwcmVlZGl0X2N1cnNvcikodm9pZCAqZGF0YSwKKysJCQkgICAgICAgc3Ry dWN0IHp3cF90ZXh0X2lucHV0X3YxICp6d3BfdGV4dF9pbnB1dF92MSwKKysJCQkgICAgICAgaW50 MzJfdCBpbmRleCk7CisrCS8qKgorKwkgKiBjb21taXQKKysJICoKKysJICogTm90aWZ5IHdoZW4g dGV4dCBzaG91bGQgYmUgaW5zZXJ0ZWQgaW50byB0aGUgZWRpdG9yIHdpZGdldC4KKysJICogVGhl IHRleHQgdG8gY29tbWl0IGNvdWxkIGJlIGVpdGhlciBqdXN0IGEgc2luZ2xlIGNoYXJhY3RlciBh ZnRlcgorKwkgKiBhIGtleSBwcmVzcyBvciB0aGUgcmVzdWx0IG9mIHNvbWUgY29tcG9zaW5nIChw cmUtZWRpdCkuIEl0IGNvdWxkCisrCSAqIGFsc28gYmUgYW4gZW1wdHkgdGV4dCB3aGVuIHNvbWUg dGV4dCBzaG91bGQgYmUgcmVtb3ZlZCAoc2VlCisrCSAqIGRlbGV0ZV9zdXJyb3VuZGluZ190ZXh0 KSBvciB3aGVuIHRoZSBpbnB1dCBjdXJzb3Igc2hvdWxkIGJlCisrCSAqIG1vdmVkIChzZWUgY3Vy c29yX3Bvc2l0aW9uKS4KKysJICoKKysJICogQW55IHByZXZpb3VzbHkgc2V0IGNvbXBvc2luZyB0 ZXh0IHNob3VsZCBiZSByZW1vdmVkLgorKwkgKiBAcGFyYW0gc2VyaWFsIHNlcmlhbCBvZiB0aGUg bGF0ZXN0IGtub3duIHRleHQgaW5wdXQgc3RhdGUKKysJICovCisrCXZvaWQgKCpjb21taXRfc3Ry aW5nKSh2b2lkICpkYXRhLAorKwkJCSAgICAgIHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAqendw X3RleHRfaW5wdXRfdjEsCisrCQkJICAgICAgdWludDMyX3Qgc2VyaWFsLAorKwkJCSAgICAgIGNv bnN0IGNoYXIgKnRleHQpOworKwkvKioKKysJICogc2V0IGN1cnNvciB0byBuZXcgcG9zaXRpb24K KysJICoKKysJICogTm90aWZ5IHdoZW4gdGhlIGN1cnNvciBvciBhbmNob3IgcG9zaXRpb24gc2hv dWxkIGJlIG1vZGlmaWVkLgorKwkgKgorKwkgKiBUaGlzIGV2ZW50IHNob3VsZCBiZSBoYW5kbGVk IGFzIHBhcnQgb2YgYSBmb2xsb3dpbmcKKysJICogY29tbWl0X3N0cmluZyBldmVudC4KKysJICov CisrCXZvaWQgKCpjdXJzb3JfcG9zaXRpb24pKHZvaWQgKmRhdGEsCisrCQkJCXN0cnVjdCB6d3Bf dGV4dF9pbnB1dF92MSAqendwX3RleHRfaW5wdXRfdjEsCisrCQkJCWludDMyX3QgaW5kZXgsCisr CQkJCWludDMyX3QgYW5jaG9yKTsKKysJLyoqCisrCSAqIGRlbGV0ZSBzdXJyb3VuZGluZyB0ZXh0 CisrCSAqCisrCSAqIE5vdGlmeSB3aGVuIHRoZSB0ZXh0IGFyb3VuZCB0aGUgY3VycmVudCBjdXJz b3IgcG9zaXRpb24gc2hvdWxkCisrCSAqIGJlIGRlbGV0ZWQuCisrCSAqCisrCSAqIEluZGV4IGlz IHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGN1cnNvciAoaW4gYnl0ZXMpLiBMZW5ndGggaXMKKysJ ICogdGhlIGxlbmd0aCBvZiBkZWxldGVkIHRleHQgKGluIGJ5dGVzKS4KKysJICoKKysJICogVGhp cyBldmVudCBzaG91bGQgYmUgaGFuZGxlZCBhcyBwYXJ0IG9mIGEgZm9sbG93aW5nCisrCSAqIGNv bW1pdF9zdHJpbmcgZXZlbnQuCisrCSAqLworKwl2b2lkICgqZGVsZXRlX3N1cnJvdW5kaW5nX3Rl eHQpKHZvaWQgKmRhdGEsCisrCQkJCQlzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjEgKnp3cF90ZXh0 X2lucHV0X3YxLAorKwkJCQkJaW50MzJfdCBpbmRleCwKKysJCQkJCXVpbnQzMl90IGxlbmd0aCk7 CisrCS8qKgorKwkgKiBrZXlzeW0KKysJICoKKysJICogTm90aWZ5IHdoZW4gYSBrZXkgZXZlbnQg d2FzIHNlbnQuIEtleSBldmVudHMgc2hvdWxkIG5vdCBiZQorKwkgKiB1c2VkIGZvciBub3JtYWwg dGV4dCBpbnB1dCBvcGVyYXRpb25zLCB3aGljaCBzaG91bGQgYmUgZG9uZSB3aXRoCisrCSAqIGNv bW1pdF9zdHJpbmcsIGRlbGV0ZV9zdXJyb3VuZGluZ190ZXh0LCBldGMuIFRoZSBrZXkgZXZlbnQK KysJICogZm9sbG93cyB0aGUgd2xfa2V5Ym9hcmQga2V5IGV2ZW50IGNvbnZlbnRpb24uIFN5bSBp cyBhbiBYS0IKKysJICoga2V5c3ltLCBzdGF0ZSBhIHdsX2tleWJvYXJkIGtleV9zdGF0ZS4gTW9k aWZpZXJzIGFyZSBhIG1hc2sgZm9yCisrCSAqIGVmZmVjdGl2ZSBtb2RpZmllcnMgKHdoZXJlIHRo ZSBtb2RpZmllciBpbmRpY2VzIGFyZSBzZXQgYnkgdGhlCisrCSAqIG1vZGlmaWVyc19tYXAgZXZl bnQpCisrCSAqIEBwYXJhbSBzZXJpYWwgc2VyaWFsIG9mIHRoZSBsYXRlc3Qga25vd24gdGV4dCBp bnB1dCBzdGF0ZQorKwkgKi8KKysJdm9pZCAoKmtleXN5bSkodm9pZCAqZGF0YSwKKysJCSAgICAg ICBzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjEgKnp3cF90ZXh0X2lucHV0X3YxLAorKwkJICAgICAg IHVpbnQzMl90IHNlcmlhbCwKKysJCSAgICAgICB1aW50MzJfdCB0aW1lLAorKwkJICAgICAgIHVp bnQzMl90IHN5bSwKKysJCSAgICAgICB1aW50MzJfdCBzdGF0ZSwKKysJCSAgICAgICB1aW50MzJf dCBtb2RpZmllcnMpOworKwkvKioKKysJICogbGFuZ3VhZ2UKKysJICoKKysJICogU2V0cyB0aGUg bGFuZ3VhZ2Ugb2YgdGhlIGlucHV0IHRleHQuIFRoZSAibGFuZ3VhZ2UiIGFyZ3VtZW50CisrCSAq IGlzIGFuIFJGQy0zMDY2IGZvcm1hdCBsYW5ndWFnZSB0YWcuCisrCSAqIEBwYXJhbSBzZXJpYWwg c2VyaWFsIG9mIHRoZSBsYXRlc3Qga25vd24gdGV4dCBpbnB1dCBzdGF0ZQorKwkgKi8KKysJdm9p ZCAoKmxhbmd1YWdlKSh2b2lkICpkYXRhLAorKwkJCSBzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjEg Knp3cF90ZXh0X2lucHV0X3YxLAorKwkJCSB1aW50MzJfdCBzZXJpYWwsCisrCQkJIGNvbnN0IGNo YXIgKmxhbmd1YWdlKTsKKysJLyoqCisrCSAqIHRleHQgZGlyZWN0aW9uCisrCSAqCisrCSAqIFNl dHMgdGhlIHRleHQgZGlyZWN0aW9uIG9mIGlucHV0IHRleHQuCisrCSAqCisrCSAqIEl0IGlzIG1h aW5seSBuZWVkZWQgZm9yIHNob3dpbmcgYW4gaW5wdXQgY3Vyc29yIG9uIHRoZSBjb3JyZWN0Cisr CSAqIHNpZGUgb2YgdGhlIGVkaXRvciB3aGVuIHRoZXJlIGlzIG5vIGlucHV0IGRvbmUgeWV0IGFu ZCBtYWtpbmcKKysJICogc3VyZSBuZXV0cmFsIGRpcmVjdGlvbiB0ZXh0IGlzIGxhaWQgb3V0IHBy b3Blcmx5LgorKwkgKiBAcGFyYW0gc2VyaWFsIHNlcmlhbCBvZiB0aGUgbGF0ZXN0IGtub3duIHRl eHQgaW5wdXQgc3RhdGUKKysJICovCisrCXZvaWQgKCp0ZXh0X2RpcmVjdGlvbikodm9pZCAqZGF0 YSwKKysJCQkgICAgICAgc3RydWN0IHp3cF90ZXh0X2lucHV0X3YxICp6d3BfdGV4dF9pbnB1dF92 MSwKKysJCQkgICAgICAgdWludDMyX3Qgc2VyaWFsLAorKwkJCSAgICAgICB1aW50MzJfdCBkaXJl Y3Rpb24pOworK307CisrCisrLyoqCisrICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRf djEKKysgKi8KKytzdGF0aWMgaW5saW5lIGludAorK3p3cF90ZXh0X2lucHV0X3YxX2FkZF9saXN0 ZW5lcihzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjEgKnp3cF90ZXh0X2lucHV0X3YxLAorKwkJCSAg ICAgICBjb25zdCBzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjFfbGlzdGVuZXIgKmxpc3RlbmVyLCB2 b2lkICpkYXRhKQorK3sKKysJcmV0dXJuIHdsX3Byb3h5X2FkZF9saXN0ZW5lcigoc3RydWN0IHds X3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YxLAorKwkJCQkgICAgICh2b2lkICgqKikodm9pZCkp IGxpc3RlbmVyLCBkYXRhKTsKKyt9CisrCisrI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9BQ1RJ VkFURSAwCisrI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9ERUFDVElWQVRFIDEKKysjZGVmaW5l IFpXUF9URVhUX0lOUFVUX1YxX1NIT1dfSU5QVVRfUEFORUwgMgorKyNkZWZpbmUgWldQX1RFWFRf SU5QVVRfVjFfSElERV9JTlBVVF9QQU5FTCAzCisrI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9S RVNFVCA0CisrI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9TRVRfU1VSUk9VTkRJTkdfVEVYVCA1 CisrI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9TRVRfQ09OVEVOVF9UWVBFIDYKKysjZGVmaW5l IFpXUF9URVhUX0lOUFVUX1YxX1NFVF9DVVJTT1JfUkVDVEFOR0xFIDcKKysjZGVmaW5lIFpXUF9U RVhUX0lOUFVUX1YxX1NFVF9QUkVGRVJSRURfTEFOR1VBR0UgOAorKyNkZWZpbmUgWldQX1RFWFRf SU5QVVRfVjFfQ09NTUlUX1NUQVRFIDkKKysjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX0lOVk9L RV9BQ1RJT04gMTAKKysKKysvKioKKysgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92 MQorKyAqLworKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfRU5URVJfU0lOQ0VfVkVSU0lPTiAx CisrLyoqCisrICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEKKysgKi8KKysjZGVm aW5lIFpXUF9URVhUX0lOUFVUX1YxX0xFQVZFX1NJTkNFX1ZFUlNJT04gMQorKy8qKgorKyAqIEBp bmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCisrICovCisrI2RlZmluZSBaV1BfVEVYVF9J TlBVVF9WMV9NT0RJRklFUlNfTUFQX1NJTkNFX1ZFUlNJT04gMQorKy8qKgorKyAqIEBpbmdyb3Vw IGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCisrICovCisrI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9W MV9JTlBVVF9QQU5FTF9TVEFURV9TSU5DRV9WRVJTSU9OIDEKKysvKioKKysgKiBAaW5ncm91cCBp ZmFjZV96d3BfdGV4dF9pbnB1dF92MQorKyAqLworKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFf UFJFRURJVF9TVFJJTkdfU0lOQ0VfVkVSU0lPTiAxCisrLyoqCisrICogQGluZ3JvdXAgaWZhY2Vf endwX3RleHRfaW5wdXRfdjEKKysgKi8KKysjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX1BSRUVE SVRfU1RZTElOR19TSU5DRV9WRVJTSU9OIDEKKysvKioKKysgKiBAaW5ncm91cCBpZmFjZV96d3Bf dGV4dF9pbnB1dF92MQorKyAqLworKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfUFJFRURJVF9D VVJTT1JfU0lOQ0VfVkVSU0lPTiAxCisrLyoqCisrICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRf aW5wdXRfdjEKKysgKi8KKysjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX0NPTU1JVF9TVFJJTkdf U0lOQ0VfVkVSU0lPTiAxCisrLyoqCisrICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRf djEKKysgKi8KKysjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX0NVUlNPUl9QT1NJVElPTl9TSU5D RV9WRVJTSU9OIDEKKysvKioKKysgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MQor KyAqLworKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfREVMRVRFX1NVUlJPVU5ESU5HX1RFWFRf U0lOQ0VfVkVSU0lPTiAxCisrLyoqCisrICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRf djEKKysgKi8KKysjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX0tFWVNZTV9TSU5DRV9WRVJTSU9O IDEKKysvKioKKysgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MQorKyAqLworKyNk ZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfTEFOR1VBR0VfU0lOQ0VfVkVSU0lPTiAxCisrLyoqCisr ICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEKKysgKi8KKysjZGVmaW5lIFpXUF9U RVhUX0lOUFVUX1YxX1RFWFRfRElSRUNUSU9OX1NJTkNFX1ZFUlNJT04gMQorKworKy8qKgorKyAq IEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCisrICovCisrI2RlZmluZSBaV1BfVEVY VF9JTlBVVF9WMV9BQ1RJVkFURV9TSU5DRV9WRVJTSU9OIDEKKysvKioKKysgKiBAaW5ncm91cCBp ZmFjZV96d3BfdGV4dF9pbnB1dF92MQorKyAqLworKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFf REVBQ1RJVkFURV9TSU5DRV9WRVJTSU9OIDEKKysvKioKKysgKiBAaW5ncm91cCBpZmFjZV96d3Bf dGV4dF9pbnB1dF92MQorKyAqLworKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfU0hPV19JTlBV VF9QQU5FTF9TSU5DRV9WRVJTSU9OIDEKKysvKioKKysgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4 dF9pbnB1dF92MQorKyAqLworKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfSElERV9JTlBVVF9Q QU5FTF9TSU5DRV9WRVJTSU9OIDEKKysvKioKKysgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9p bnB1dF92MQorKyAqLworKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfUkVTRVRfU0lOQ0VfVkVS U0lPTiAxCisrLyoqCisrICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEKKysgKi8K KysjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX1NFVF9TVVJST1VORElOR19URVhUX1NJTkNFX1ZF UlNJT04gMQorKy8qKgorKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCisrICov CisrI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9TRVRfQ09OVEVOVF9UWVBFX1NJTkNFX1ZFUlNJ T04gMQorKy8qKgorKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCisrICovCisr I2RlZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9TRVRfQ1VSU09SX1JFQ1RBTkdMRV9TSU5DRV9WRVJT SU9OIDEKKysvKioKKysgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MQorKyAqLwor KyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfU0VUX1BSRUZFUlJFRF9MQU5HVUFHRV9TSU5DRV9W RVJTSU9OIDEKKysvKioKKysgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MQorKyAq LworKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfQ09NTUlUX1NUQVRFX1NJTkNFX1ZFUlNJT04g MQorKy8qKgorKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCisrICovCisrI2Rl ZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9JTlZPS0VfQUNUSU9OX1NJTkNFX1ZFUlNJT04gMQorKwor Ky8qKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MSAqLworK3N0YXRpYyBpbmxpbmUg dm9pZAorK3p3cF90ZXh0X2lucHV0X3YxX3NldF91c2VyX2RhdGEoc3RydWN0IHp3cF90ZXh0X2lu cHV0X3YxICp6d3BfdGV4dF9pbnB1dF92MSwgdm9pZCAqdXNlcl9kYXRhKQorK3sKKysJd2xfcHJv eHlfc2V0X3VzZXJfZGF0YSgoc3RydWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YxLCB1 c2VyX2RhdGEpOworK30KKysKKysvKiogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEg Ki8KKytzdGF0aWMgaW5saW5lIHZvaWQgKgorK3p3cF90ZXh0X2lucHV0X3YxX2dldF91c2VyX2Rh dGEoc3RydWN0IHp3cF90ZXh0X2lucHV0X3YxICp6d3BfdGV4dF9pbnB1dF92MSkKKyt7CisrCXJl dHVybiB3bF9wcm94eV9nZXRfdXNlcl9kYXRhKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRf aW5wdXRfdjEpOworK30KKysKKytzdGF0aWMgaW5saW5lIHVpbnQzMl90CisrendwX3RleHRfaW5w dXRfdjFfZ2V0X3ZlcnNpb24oc3RydWN0IHp3cF90ZXh0X2lucHV0X3YxICp6d3BfdGV4dF9pbnB1 dF92MSkKKyt7CisrCXJldHVybiB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3Byb3h5 ICopIHp3cF90ZXh0X2lucHV0X3YxKTsKKyt9CisrCisrLyoqIEBpbmdyb3VwIGlmYWNlX3p3cF90 ZXh0X2lucHV0X3YxICovCisrc3RhdGljIGlubGluZSB2b2lkCisrendwX3RleHRfaW5wdXRfdjFf ZGVzdHJveShzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjEgKnp3cF90ZXh0X2lucHV0X3YxKQorK3sK KysJd2xfcHJveHlfZGVzdHJveSgoc3RydWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3Yx KTsKKyt9CisrCisrLyoqCisrICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEKKysg KgorKyAqIFJlcXVlc3RzIHRoZSB0ZXh0X2lucHV0IG9iamVjdCB0byBiZSBhY3RpdmF0ZWQgKHR5 cGljYWxseSB3aGVuIHRoZQorKyAqIHRleHQgZW50cnkgZ2V0cyBmb2N1cykuCisrICoKKysgKiBU aGUgc2VhdCBhcmd1bWVudCBpcyBhIHdsX3NlYXQgd2hpY2ggbWFpbnRhaW5zIHRoZSBmb2N1cyBm b3IgdGhpcworKyAqIGFjdGl2YXRpb24uIFRoZSBzdXJmYWNlIGFyZ3VtZW50IGlzIGEgd2xfc3Vy ZmFjZSBhc3NpZ25lZCB0byB0aGUKKysgKiB0ZXh0X2lucHV0IG9iamVjdCBhbmQgdHJhY2tlZCBm b3IgZm9jdXMgbG9zdC4gVGhlIGVudGVyIGV2ZW50CisrICogaXMgZW1pdHRlZCBvbiBzdWNjZXNz ZnVsIGFjdGl2YXRpb24uCisrICovCisrc3RhdGljIGlubGluZSB2b2lkCisrendwX3RleHRfaW5w dXRfdjFfYWN0aXZhdGUoc3RydWN0IHp3cF90ZXh0X2lucHV0X3YxICp6d3BfdGV4dF9pbnB1dF92 MSwgc3RydWN0IHdsX3NlYXQgKnNlYXQsIHN0cnVjdCB3bF9zdXJmYWNlICpzdXJmYWNlKQorK3sK KysJd2xfcHJveHlfbWFyc2hhbF9mbGFncygoc3RydWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lu cHV0X3YxLAorKwkJCSBaV1BfVEVYVF9JTlBVVF9WMV9BQ1RJVkFURSwgTlVMTCwgd2xfcHJveHlf Z2V0X3ZlcnNpb24oKHN0cnVjdCB3bF9wcm94eSAqKSB6d3BfdGV4dF9pbnB1dF92MSksIDAsIHNl YXQsIHN1cmZhY2UpOworK30KKysKKysvKioKKysgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9p bnB1dF92MQorKyAqCisrICogUmVxdWVzdHMgdGhlIHRleHRfaW5wdXQgb2JqZWN0IHRvIGJlIGRl YWN0aXZhdGVkICh0eXBpY2FsbHkgd2hlbiB0aGUKKysgKiB0ZXh0IGVudHJ5IGxvc3QgZm9jdXMp LiBUaGUgc2VhdCBhcmd1bWVudCBpcyBhIHdsX3NlYXQgd2hpY2ggd2FzIHVzZWQKKysgKiBmb3Ig YWN0aXZhdGlvbi4KKysgKi8KKytzdGF0aWMgaW5saW5lIHZvaWQKKyt6d3BfdGV4dF9pbnB1dF92 MV9kZWFjdGl2YXRlKHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAqendwX3RleHRfaW5wdXRfdjEs IHN0cnVjdCB3bF9zZWF0ICpzZWF0KQorK3sKKysJd2xfcHJveHlfbWFyc2hhbF9mbGFncygoc3Ry dWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YxLAorKwkJCSBaV1BfVEVYVF9JTlBVVF9W MV9ERUFDVElWQVRFLCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3Byb3h5 ICopIHp3cF90ZXh0X2lucHV0X3YxKSwgMCwgc2VhdCk7CisrfQorKworKy8qKgorKyAqIEBpbmdy b3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCisrICoKKysgKiBSZXF1ZXN0cyBpbnB1dCBwYW5l bHMgKHZpcnR1YWwga2V5Ym9hcmQpIHRvIHNob3cuCisrICovCisrc3RhdGljIGlubGluZSB2b2lk CisrendwX3RleHRfaW5wdXRfdjFfc2hvd19pbnB1dF9wYW5lbChzdHJ1Y3QgendwX3RleHRfaW5w dXRfdjEgKnp3cF90ZXh0X2lucHV0X3YxKQorK3sKKysJd2xfcHJveHlfbWFyc2hhbF9mbGFncygo c3RydWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YxLAorKwkJCSBaV1BfVEVYVF9JTlBV VF9WMV9TSE9XX0lOUFVUX1BBTkVMLCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0 IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YxKSwgMCk7CisrfQorKworKy8qKgorKyAqIEBp bmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCisrICoKKysgKiBSZXF1ZXN0cyBpbnB1dCBw YW5lbHMgKHZpcnR1YWwga2V5Ym9hcmQpIHRvIGhpZGUuCisrICovCisrc3RhdGljIGlubGluZSB2 b2lkCisrendwX3RleHRfaW5wdXRfdjFfaGlkZV9pbnB1dF9wYW5lbChzdHJ1Y3QgendwX3RleHRf aW5wdXRfdjEgKnp3cF90ZXh0X2lucHV0X3YxKQorK3sKKysJd2xfcHJveHlfbWFyc2hhbF9mbGFn cygoc3RydWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YxLAorKwkJCSBaV1BfVEVYVF9J TlBVVF9WMV9ISURFX0lOUFVUX1BBTkVMLCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3Ry dWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YxKSwgMCk7CisrfQorKworKy8qKgorKyAq IEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCisrICoKKysgKiBTaG91bGQgYmUgY2Fs bGVkIGJ5IGFuIGVkaXRvciB3aWRnZXQgd2hlbiB0aGUgaW5wdXQgc3RhdGUgc2hvdWxkIGJlCisr ICogcmVzZXQsIGZvciBleGFtcGxlIGFmdGVyIHRoZSB0ZXh0IHdhcyBjaGFuZ2VkIG91dHNpZGUg b2YgdGhlIG5vcm1hbAorKyAqIGlucHV0IG1ldGhvZCBmbG93LgorKyAqLworK3N0YXRpYyBpbmxp bmUgdm9pZAorK3p3cF90ZXh0X2lucHV0X3YxX3Jlc2V0KHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92 MSAqendwX3RleHRfaW5wdXRfdjEpCisreworKwl3bF9wcm94eV9tYXJzaGFsX2ZsYWdzKChzdHJ1 Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfdjEsCisrCQkJIFpXUF9URVhUX0lOUFVUX1Yx X1JFU0VULCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3Byb3h5ICopIHp3 cF90ZXh0X2lucHV0X3YxKSwgMCk7CisrfQorKworKy8qKgorKyAqIEBpbmdyb3VwIGlmYWNlX3p3 cF90ZXh0X2lucHV0X3YxCisrICoKKysgKiBTZXRzIHRoZSBwbGFpbiBzdXJyb3VuZGluZyB0ZXh0 IGFyb3VuZCB0aGUgaW5wdXQgcG9zaXRpb24uIFRleHQgaXMKKysgKiBVVEYtOCBlbmNvZGVkLiBD dXJzb3IgaXMgdGhlIGJ5dGUgb2Zmc2V0IHdpdGhpbiB0aGUKKysgKiBzdXJyb3VuZGluZyB0ZXh0 LiBBbmNob3IgaXMgdGhlIGJ5dGUgb2Zmc2V0IG9mIHRoZQorKyAqIHNlbGVjdGlvbiBhbmNob3Ig d2l0aGluIHRoZSBzdXJyb3VuZGluZyB0ZXh0LiBJZiB0aGVyZSBpcyBubyBzZWxlY3RlZAorKyAq IHRleHQgYW5jaG9yLCB0aGVuIGl0IGlzIHRoZSBzYW1lIGFzIGN1cnNvci4KKysgKi8KKytzdGF0 aWMgaW5saW5lIHZvaWQKKyt6d3BfdGV4dF9pbnB1dF92MV9zZXRfc3Vycm91bmRpbmdfdGV4dChz dHJ1Y3QgendwX3RleHRfaW5wdXRfdjEgKnp3cF90ZXh0X2lucHV0X3YxLCBjb25zdCBjaGFyICp0 ZXh0LCB1aW50MzJfdCBjdXJzb3IsIHVpbnQzMl90IGFuY2hvcikKKyt7CisrCXdsX3Byb3h5X21h cnNoYWxfZmxhZ3MoKHN0cnVjdCB3bF9wcm94eSAqKSB6d3BfdGV4dF9pbnB1dF92MSwKKysJCQkg WldQX1RFWFRfSU5QVVRfVjFfU0VUX1NVUlJPVU5ESU5HX1RFWFQsIE5VTEwsIHdsX3Byb3h5X2dl dF92ZXJzaW9uKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfdjEpLCAwLCB0ZXh0 LCBjdXJzb3IsIGFuY2hvcik7CisrfQorKworKy8qKgorKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90 ZXh0X2lucHV0X3YxCisrICoKKysgKiBTZXRzIHRoZSBjb250ZW50IHB1cnBvc2UgYW5kIGNvbnRl bnQgaGludC4gV2hpbGUgdGhlIHB1cnBvc2UgaXMgdGhlCisrICogYmFzaWMgcHVycG9zZSBvZiBh biBpbnB1dCBmaWVsZCwgdGhlIGhpbnQgZmxhZ3MgYWxsb3cgdG8gbW9kaWZ5IHNvbWUKKysgKiBv ZiB0aGUgYmVoYXZpb3IuCisrICoKKysgKiBXaGVuIG5vIGNvbnRlbnQgdHlwZSBpcyBleHBsaWNp dGx5IHNldCwgYSBub3JtYWwgY29udGVudCBwdXJwb3NlIHdpdGgKKysgKiBkZWZhdWx0IGhpbnRz IChhdXRvIGNvbXBsZXRpb24sIGF1dG8gY29ycmVjdGlvbiwgYXV0byBjYXBpdGFsaXphdGlvbikK KysgKiBzaG91bGQgYmUgYXNzdW1lZC4KKysgKi8KKytzdGF0aWMgaW5saW5lIHZvaWQKKyt6d3Bf dGV4dF9pbnB1dF92MV9zZXRfY29udGVudF90eXBlKHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAq endwX3RleHRfaW5wdXRfdjEsIHVpbnQzMl90IGhpbnQsIHVpbnQzMl90IHB1cnBvc2UpCisrewor Kwl3bF9wcm94eV9tYXJzaGFsX2ZsYWdzKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5w dXRfdjEsCisrCQkJIFpXUF9URVhUX0lOUFVUX1YxX1NFVF9DT05URU5UX1RZUEUsIE5VTEwsIHds X3Byb3h5X2dldF92ZXJzaW9uKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfdjEp LCAwLCBoaW50LCBwdXJwb3NlKTsKKyt9CisrCisrLyoqCisrICogQGluZ3JvdXAgaWZhY2Vfendw X3RleHRfaW5wdXRfdjEKKysgKi8KKytzdGF0aWMgaW5saW5lIHZvaWQKKyt6d3BfdGV4dF9pbnB1 dF92MV9zZXRfY3Vyc29yX3JlY3RhbmdsZShzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjEgKnp3cF90 ZXh0X2lucHV0X3YxLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf dCBoZWlnaHQpCisreworKwl3bF9wcm94eV9tYXJzaGFsX2ZsYWdzKChzdHJ1Y3Qgd2xfcHJveHkg KikgendwX3RleHRfaW5wdXRfdjEsCisrCQkJIFpXUF9URVhUX0lOUFVUX1YxX1NFVF9DVVJTT1Jf UkVDVEFOR0xFLCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3Byb3h5ICop IHp3cF90ZXh0X2lucHV0X3YxKSwgMCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisrfQorKworKy8q KgorKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCisrICoKKysgKiBTZXRzIGEg c3BlY2lmaWMgbGFuZ3VhZ2UuIFRoaXMgYWxsb3dzIGZvciBleGFtcGxlIGEgdmlydHVhbCBrZXli b2FyZCB0bworKyAqIHNob3cgYSBsYW5ndWFnZSBzcGVjaWZpYyBsYXlvdXQuIFRoZSAibGFuZ3Vh Z2UiIGFyZ3VtZW50IGlzIGFuIFJGQy0zMDY2CisrICogZm9ybWF0IGxhbmd1YWdlIHRhZy4KKysg KgorKyAqIEl0IGNvdWxkIGJlIHVzZWQgZm9yIGV4YW1wbGUgaW4gYSB3b3JkIHByb2Nlc3NvciB0 byBpbmRpY2F0ZSB0aGUKKysgKiBsYW5ndWFnZSBvZiB0aGUgY3VycmVudGx5IGVkaXRlZCBkb2N1 bWVudCBvciBpbiBhbiBpbnN0YW50IG1lc3NhZ2UKKysgKiBhcHBsaWNhdGlvbiB3aGljaCB0cmFj a3MgbGFuZ3VhZ2VzIG9mIGNvbnRhY3RzLgorKyAqLworK3N0YXRpYyBpbmxpbmUgdm9pZAorK3p3 cF90ZXh0X2lucHV0X3YxX3NldF9wcmVmZXJyZWRfbGFuZ3VhZ2Uoc3RydWN0IHp3cF90ZXh0X2lu cHV0X3YxICp6d3BfdGV4dF9pbnB1dF92MSwgY29uc3QgY2hhciAqbGFuZ3VhZ2UpCisreworKwl3 bF9wcm94eV9tYXJzaGFsX2ZsYWdzKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRf djEsCisrCQkJIFpXUF9URVhUX0lOUFVUX1YxX1NFVF9QUkVGRVJSRURfTEFOR1VBR0UsIE5VTEws IHdsX3Byb3h5X2dldF92ZXJzaW9uKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRf djEpLCAwLCBsYW5ndWFnZSk7CisrfQorKworKy8qKgorKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90 ZXh0X2lucHV0X3YxCisrICovCisrc3RhdGljIGlubGluZSB2b2lkCisrendwX3RleHRfaW5wdXRf djFfY29tbWl0X3N0YXRlKHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAqendwX3RleHRfaW5wdXRf djEsIHVpbnQzMl90IHNlcmlhbCkKKyt7CisrCXdsX3Byb3h5X21hcnNoYWxfZmxhZ3MoKHN0cnVj dCB3bF9wcm94eSAqKSB6d3BfdGV4dF9pbnB1dF92MSwKKysJCQkgWldQX1RFWFRfSU5QVVRfVjFf Q09NTUlUX1NUQVRFLCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3Byb3h5 ICopIHp3cF90ZXh0X2lucHV0X3YxKSwgMCwgc2VyaWFsKTsKKyt9CisrCisrLyoqCisrICogQGlu Z3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEKKysgKi8KKytzdGF0aWMgaW5saW5lIHZvaWQK Kyt6d3BfdGV4dF9pbnB1dF92MV9pbnZva2VfYWN0aW9uKHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92 MSAqendwX3RleHRfaW5wdXRfdjEsIHVpbnQzMl90IGJ1dHRvbiwgdWludDMyX3QgaW5kZXgpCisr eworKwl3bF9wcm94eV9tYXJzaGFsX2ZsYWdzKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRf aW5wdXRfdjEsCisrCQkJIFpXUF9URVhUX0lOUFVUX1YxX0lOVk9LRV9BQ1RJT04sIE5VTEwsIHds X3Byb3h5X2dldF92ZXJzaW9uKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfdjEp LCAwLCBidXR0b24sIGluZGV4KTsKKyt9CisrCisrI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9NQU5B R0VSX1YxX0NSRUFURV9URVhUX0lOUFVUIDAKKysKKysKKysvKioKKysgKiBAaW5ncm91cCBpZmFj ZV96d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxCisrICovCisrI2RlZmluZSBaV1BfVEVYVF9JTlBV VF9NQU5BR0VSX1YxX0NSRUFURV9URVhUX0lOUFVUX1NJTkNFX1ZFUlNJT04gMQorKworKy8qKiBA aW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxICovCisrc3RhdGljIGlubGlu ZSB2b2lkCisrendwX3RleHRfaW5wdXRfbWFuYWdlcl92MV9zZXRfdXNlcl9kYXRhKHN0cnVjdCB6 d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxICp6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxLCB2b2lk ICp1c2VyX2RhdGEpCisreworKwl3bF9wcm94eV9zZXRfdXNlcl9kYXRhKChzdHJ1Y3Qgd2xfcHJv eHkgKikgendwX3RleHRfaW5wdXRfbWFuYWdlcl92MSwgdXNlcl9kYXRhKTsKKyt9CisrCisrLyoq IEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X21hbmFnZXJfdjEgKi8KKytzdGF0aWMgaW5s aW5lIHZvaWQgKgorK3p3cF90ZXh0X2lucHV0X21hbmFnZXJfdjFfZ2V0X3VzZXJfZGF0YShzdHJ1 Y3QgendwX3RleHRfaW5wdXRfbWFuYWdlcl92MSAqendwX3RleHRfaW5wdXRfbWFuYWdlcl92MSkK Kyt7CisrCXJldHVybiB3bF9wcm94eV9nZXRfdXNlcl9kYXRhKChzdHJ1Y3Qgd2xfcHJveHkgKikg endwX3RleHRfaW5wdXRfbWFuYWdlcl92MSk7CisrfQorKworK3N0YXRpYyBpbmxpbmUgdWludDMy X3QKKyt6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxX2dldF92ZXJzaW9uKHN0cnVjdCB6d3BfdGV4 dF9pbnB1dF9tYW5hZ2VyX3YxICp6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxKQorK3sKKysJcmV0 dXJuIHdsX3Byb3h5X2dldF92ZXJzaW9uKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5w dXRfbWFuYWdlcl92MSk7CisrfQorKworKy8qKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1 dF9tYW5hZ2VyX3YxICovCisrc3RhdGljIGlubGluZSB2b2lkCisrendwX3RleHRfaW5wdXRfbWFu YWdlcl92MV9kZXN0cm95KHN0cnVjdCB6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxICp6d3BfdGV4 dF9pbnB1dF9tYW5hZ2VyX3YxKQorK3sKKysJd2xfcHJveHlfZGVzdHJveSgoc3RydWN0IHdsX3By b3h5ICopIHp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjEpOworK30KKysKKysvKioKKysgKiBAaW5n cm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxCisrICoKKysgKiBDcmVhdGVzIGEg bmV3IHRleHRfaW5wdXQgb2JqZWN0LgorKyAqLworK3N0YXRpYyBpbmxpbmUgc3RydWN0IHp3cF90 ZXh0X2lucHV0X3YxICoKKyt6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxX2NyZWF0ZV90ZXh0X2lu cHV0KHN0cnVjdCB6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxICp6d3BfdGV4dF9pbnB1dF9tYW5h Z2VyX3YxKQorK3sKKysJc3RydWN0IHdsX3Byb3h5ICppZDsKKysKKysJaWQgPSB3bF9wcm94eV9t YXJzaGFsX2ZsYWdzKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfbWFuYWdlcl92 MSwKKysJCQkgWldQX1RFWFRfSU5QVVRfTUFOQUdFUl9WMV9DUkVBVEVfVEVYVF9JTlBVVCwgJnp3 cF90ZXh0X2lucHV0X3YxX2ludGVyZmFjZSwgd2xfcHJveHlfZ2V0X3ZlcnNpb24oKHN0cnVjdCB3 bF9wcm94eSAqKSB6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxKSwgMCwgTlVMTCk7CisrCisrCXJl dHVybiAoc3RydWN0IHp3cF90ZXh0X2lucHV0X3YxICopIGlkOworK30KKysKKysjaWZkZWYgIF9f Y3BsdXNwbHVzCisrfQorKyNlbmRpZgorKworKyNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9pYnVz YXR0cmlidXRlLmggYi9zcmMvaWJ1c2F0dHJpYnV0ZS5oCitpbmRleCBmZTRjYWI0NS4uNWNmYzM2 ZjcgMTAwNjQ0CistLS0gYS9zcmMvaWJ1c2F0dHJpYnV0ZS5oCisrKysgYi9zcmMvaWJ1c2F0dHJp YnV0ZS5oCitAQCAtMiw3ICsyLDggQEAKKyAvKiB2aW06c2V0IGV0IHN0cz00OiAqLworIC8qIElC dXMgLSBUaGUgSW5wdXQgQnVzCisgICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUGVuZyBIdWFu ZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+CistICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMg UmVkIEhhdCwgSW5jLgorKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIzIFRha2FvIEZ1aml3YXJh IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIz IFJlZCBIYXQsIEluYy4KKyAgKgorICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCitAQCAtOTEsNiArOTIsNTUgQEAg dHlwZWRlZiBlbnVtIHsKKyAgICAgSUJVU19BVFRSX1VOREVSTElORV9FUlJPUiAgID0gNCwKKyB9 IElCdXNBdHRyVW5kZXJsaW5lOworIAorKworKy8qKgorKyAqIElCdXNBdHRyUHJlZWRpdDoKKysg KiBASUJVU19BVFRSX1BSRUVESVRfREVGQVVMVDogRGVmYXVsdCBzdHlsZSBmb3IgY29tcG9zaW5n IHRleHQuCisrICogQElCVVNfQVRUUl9QUkVFRElUX05PTkU6IFN0eWxlIHNob3VsZCBiZSB0aGUg c2FtZSBhcyBpbiBub24tY29tcG9zaW5nIHRleHQuCisrICogQElCVVNfQVRUUl9QUkVFRElUX1dI T0xFOiBNb3N0IGxhbmd1YWdlIGVuZ2luZXMgd2lzaCB0byBkcmF3IHVuZGVybGluZSBpbgorKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHR5cGVkIHdob2xlIHByZWVkaXQgc3RyaW5n IGV4Y2VwdCBmb3IgdGhlCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9u IHN0cmluZy4gKENoaW5lc2UsIEphcGFuZXNlLAorKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgVHlwaW5nLWJvb3N0ZXIpCisrICogQElCVVNfQVRUUl9QUkVFRElUX1NFTEVDVElPTjogTW9k aWZ5aW5nIGFuIGFjdGl2ZSBzZWdtZW50IGlzIGRpc3Rpbmd1aXNoZWQKKysgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhZ2FpbnN0IHdob2xlIHRoZSBwcmVlZGl0IHRleHQuIChIYW5n dWwsCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSmFwYW5lc2UpCisrICogQElC VVNfQVRUUl9QUkVFRElUX1BSRURJQ1RJT046IEEgcHJlZGljdGlvbiBzdHJpbmcgY2FuIGJlIGFw cGVuZGVkIGFmdGVyIHRoZQorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl ZCBzdHJpbmcuIChUeXBpbmctYm9vc3RlcikKKysgKiBASUJVU19BVFRSX1BSRUVESVRfUFJFRklY OiBBIHByZWZpeCBzdHJpbmcgY2FuIGJlIGFuIGluZm9ybWF0aXZlIGNvbG9yLgorKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChUYWJsZSkKKysgKiBASUJVU19BVFRSX1BSRUVESVRfU1VG RklYOiBBIHN1ZmZpeCBzdHJpbmcgY2FuIGJlIGFuIGluZm9ybWF0aXZlIGNvbG9yLgorKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChUYWJsZSkKKysgKiBASUJVU19BVFRSX1BSRUVESVRf RVJST1JfU1BFTExJTkc6IEFuIGRldGVjdGVkIHR5cG8gY291bGQgYmUgYW4gZXJyb3IgY29sb3IK KysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggYSBzcGVsbGluZyBj aGVjayBvciB0aGUgd29yZCBjb3VsZAorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbm90IGJlIGZvdW5kIGluIGEgZGljdGlvbmFyeS4gVGhlCisrICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bmRlcmxpbmUgY29sb3IgYWxzbyBtaWdodCBiZSBtb3Jl CisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlLiAoVHlwaW5n LWJvb3N0ZXIsIFRhYmxlKQorKyAqIEBJQlVTX0FUVFJfUFJFRURJVF9FUlJPUl9DT01QT1NFOiBB IHdyb25nIGNvbXBvc2Uga2V5IGNvdWxkIGJlIGFuIGVycm9yCisrICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbG9yLiAoVHlwaW5nLWJvb3N0ZXIpCisrICoKKysgKiBUeXBl IG9mIFByZS1lZGl0IHN0eWxlIGFzIHRoZSBzZW1hdGljIG5hbWUuCisrICogVGhlIFdheWxhbmQg c3BlY3MgcHJlZmVycyB0byBleHByZXNzIHRoZSBzZW1hbnRpYyB2YWx1ZXMgcmF0aGVyIHRoYW4g UkdCCisrICogdmFsdWVzIGFuZCB0ZXh0LWlucHV0IHByb3RvY29sIHZlcnNpb24gMSBkZWZpbmVz IHNvbWUgdmFsdWVzOgorKyAqIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy93YXlsYW5k L3dheWxhbmQtcHJvdG9jb2xzLy0vYmxvYi9tYWluL3Vuc3RhYmxlL3RleHQtaW5wdXQvdGV4dC1p bnB1dC11bnN0YWJsZS12MS54bWw/cmVmX3R5cGU9aGVhZHMjTDI1MQorKyAqCisrICogSUJ1cyBj b21waWxlZCB0aGUgdmFsdWVzIGZvciBtYWpvciBpbnB1dCBtZXRob2QgZW5naW5lczoKKysgKiBo dHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL3dpa2kvV2F5bGFuZC1Db2xvcnMKKysgKgorKyAq IFNpbmNlOiAxLjUuMjkKKysgKiBTdGFiaWxpdHk6IFVuc3RhYmxlCisrICovCisrdHlwZWRlZiBl bnVtIHsKKysgICAgSUJVU19BVFRSX1BSRUVESVRfREVGQVVMVCA9IDAsCisrICAgIElCVVNfQVRU Ul9QUkVFRElUX05PTkUsCisrICAgIElCVVNfQVRUUl9QUkVFRElUX1dIT0xFLAorKyAgICBJQlVT X0FUVFJfUFJFRURJVF9TRUxFQ1RJT04sCisrICAgIElCVVNfQVRUUl9QUkVFRElUX1BSRURJQ1RJ T04sCisrICAgIElCVVNfQVRUUl9QUkVFRElUX1BSRUZJWCwKKysgICAgSUJVU19BVFRSX1BSRUVE SVRfU1VGRklYLAorKyAgICBJQlVTX0FUVFJfUFJFRURJVF9FUlJPUl9TUEVMTElORywKKysgICAg SUJVU19BVFRSX1BSRUVESVRfRVJST1JfQ09NUE9TRSwKKyt9IElCdXNBdHRyUHJlZWRpdDsKKysK KyB0eXBlZGVmIHN0cnVjdCBfSUJ1c0F0dHJpYnV0ZSBJQnVzQXR0cmlidXRlOworIHR5cGVkZWYg c3RydWN0IF9JQnVzQXR0cmlidXRlQ2xhc3MgSUJ1c0F0dHJpYnV0ZUNsYXNzOworIAorLS0gCisy LjQxLjAKKwoKZGlmZiAtLWdpdCBhL2lidXMteGlucHV0IGIvaWJ1cy14aW5wdXQKaW5kZXggMjVi YjRhYi4uM2JmOTk3NCAxMDA2NDQKLS0tIGEvaWJ1cy14aW5wdXQKKysrIGIvaWJ1cy14aW5wdXQK QEAgLTYsNiArNiw5IEBAIFBSRUZFUkVOQ0VfUFJPR1JBTT0vdXNyL2Jpbi9pYnVzLXNldHVwCiBT SE9SVF9ERVNDPSJJQnVzIgogR1RLX0lNX01PRFVMRT1pYnVzCiBOT1RfUlVOPWdub21lMworIyBJ TVNFVFRJTkdTX0lHTk9SRV9TRVNTSU9OIGNvbmNhdGVuYXRlIHRoZSBjdXJyZW50IHNlc3Npb24g bmFtZSBhbmQgdHlwZSB4MTEgb3IKKyMgd2F5bGFuZC4gVGhlIGN1cnJlbnQgc2Vzc2lvbiBuYW1l IGlzIGNhbGN1bGF0ZWQgYnkgZ2V0X2Rlc3RvcCgpCisjIGluIC91c3IvbGliZXhlYy9pbXNldHRp bmdzLWZ1bmN0aW9ucyBhbmQgdGhlIHZhbHVlIGlzIGNhc2Utc2Vuc2l0aXZlLgogSU1TRVRUSU5H U19JR05PUkVfU0VTU0lPTj1LREUtd2F5bGFuZAogCiBpZiB0ZXN0IC1mIC91c3IvbGliNjQvcXQ1 L3BsdWdpbnMvcGxhdGZvcm1pbnB1dGNvbnRleHRzL2xpYmlidXNwbGF0Zm9ybWlucHV0Y29udGV4 dHBsdWdpbi5zbyB8fCBcCgpkaWZmIC0tZ2l0IGEvaWJ1cy5zcGVjIGIvaWJ1cy5zcGVjCmluZGV4 IDFiMDQ1ZmQuLjZkZThkODQgMTAwNjQ0Ci0tLSBhL2lidXMuc3BlYworKysgYi9pYnVzLnNwZWMK QEAgLTU4LDcgKzU4LDcgQEAKIAogTmFtZTogICAgICAgICAgIGlidXMKIFZlcnNpb246ICAgICAg ICAxLjUuMjl+cmMxCi1SZWxlYXNlOiAgICAgICAgMiV7P2Rpc3R9CitSZWxlYXNlOiAgICAgICAg MyV7P2Rpc3R9CiBTdW1tYXJ5OiAgICAgICAgSW50ZWxsaWdlbnQgSW5wdXQgQnVzIGZvciBMaW51 eCBPUwogTGljZW5zZTogICAgICAgIExHUEwtMi4xLW9yLWxhdGVyCiBVUkw6ICAgICAgICAgICAg aHR0cHM6Ly9naXRodWIuY29tL2lidXMvJW5hbWUvd2lraQpAQCAtNjYsNiArNjYsNyBAQCBTb3Vy Y2UwOiAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2lidXMvJW5hbWUvcmVsZWFzZXMvZG93bmxv YWQvJXtzb3VyY2VfdmVyc2lvbgogU291cmNlMTogICAgICAgICV7bmFtZX0teGlucHV0CiBTb3Vy Y2UyOiAgICAgICAgJXtuYW1lfS5jb25mLjUKICMgUGF0Y2gwOiAgICAgICAgICUle25hbWV9LUhF QUQucGF0Y2gKK1BhdGNoMDogICAgICAgICAle25hbWV9LUhFQUQucGF0Y2gKICMgVW5kZXIgdGVz dGluZyAjMTM0OTE0OCAjMTM4NTM0OSAjMTM1MDI5MSAjMTQwNjY5OSAjMTQzMjI1MiAjMTYwMTU3 NwogUGF0Y2gxOiAgICAgICAgICV7bmFtZX0tMTM4NTM0OS1zZWd2LWJ1cy1wcm94eS5wYXRjaAog JWlmIDAlez9mZWRvcmE6MH0lez9yaGVsOjF9CkBAIC01NzgsNiArNTc5LDkgQEAgZGNvbmYgdXBk YXRlIHx8IDoKICV7X2RhdGFkaXJ9L2luc3RhbGxlZC10ZXN0cy9pYnVzCiAKICVjaGFuZ2Vsb2cK KyogVGh1IFNlcCAwNyAyMDIzIFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPiAt IDEuNS4yOX5yYzEtMworLSBSZXNvbHZlcyAjMjIzNzQ4NiBJbXBsZW1lbnQgcHJlZWRpdCBjb2xv ciBpbiBQbGFzbWEgV2F5bGFuZAorCiAqIFR1ZSBBdWcgMjIgMjAyMyBUYWthbyBGdWppd2FyYSA8 dGZ1aml3YXJAcmVkaGF0LmNvbT4gLSAxLjUuMjl+cmMxLTIKIC0gUmVzb2x2ZXMgIzIyMzM1Mjcg QWRkIElNU0VUVElOR1NfSUdOT1JFX1NFU1NJT049S0RFLXdheWxhbmQgaW4gaWJ1cy5jb25mCiAK