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: Delete upstreamed patches Date: Sun, 31 May 2026 02:08:24 GMT Message-ID: <178019330435.1.5100749538154378660.rpms-ibus-17419044c733@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: 17419044c733f313f4e90e7200d6d0c8a56ccbc2 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiAxNzQxOTA0NGM3MzNmMzEzZjRlOTBlNzIwMGQ2ZDBjOGE1NmNj YmMyCkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDI0LTAyLTEzVDIxOjI0OjQ2KzA5OjAwClN0YXRzICA6ICswLy0xNjk1IGluIDEgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy8xNzQx OTA0NGM3MzNmMzEzZjRlOTBlNzIwMGQ2ZDBjOGE1NmNjYmMyP2JyYW5jaD1hdXRvdG9vbAoKTG9n OgpEZWxldGUgdXBzdHJlYW1lZCBwYXRjaGVzCgotLS0KZGlmZiAtLWdpdCBhL2lidXMtSEVBRC5w YXRjaCBiL2lidXMtSEVBRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhl NGE1NC4uMDAwMDAwMAotLS0gYS9pYnVzLUhFQUQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwx Njk1ICswLDAgQEAKLUZyb20gNTk5NDRkZGJmZTkxNWYxOTVlNzU3YzUwOTI0NmI1OTcwNDgxMTZj ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdh cmExQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjUgTm92IDIwMjMgMTM6NDI6MzEgKzA5MDAKLVN1 YmplY3Q6IFtQQVRDSF0gY2xpZW50L3dheWxhbmQ6IEltcGxlbWVudCBwcmVlZGl0IGNvbG9yIGlu IFBsYXNtYSBXYXlsYW5kCi0KLVdheWxhbmQgaW5wdXQtbWV0aG9kIHByb3RvY29sIHZlcnNpb24g MSBzdXBwb3J0cyB0aGUgcHJlZWRpdCBzdHlsZQotd2l0aCB0ZXh0LWlucHV0IHByb3RvY29sIHZl cnNpb24gMSBpbiBQbGFzbWEgV2F5bGFuZC4KLUdOT01FIFdheWxhbmQgdXNlcyB0ZXh0LWlucHV0 IHZlcnNpb24gMyB3aGljaCBkZWxldGVzIHRoZSBwcmVlZGl0IHN0eWxlLgotCi1Ob3cgSUJ1cyBz dXBwb3J0cyB0aGUgcHJlZWRpdCBjb2xvciBmb3IgYW50aHksIGhhbmd1bCwgdGFibGUsCi10eXBp bmctYm9vc3Rlci4KLQotVGhpcyBjaGFuZ2Ugbm93IGFsc28gc3VwcG9ydHMKLWlidXNfZW5naW5l X3VwZGF0ZV9wcmVlZGl0X3RleHRfd2l0aF9tb2RlKCkKLQotUmYuIGh0dHBzOi8vZ2l0aHViLmNv bS9pYnVzL2lidXMvd2lraS9XYXlsYW5kLUNvbG9ycwotCi1CVUc9cmhieiMyMjM3NDg2Ci0tLS0K LSBjbGllbnQvd2F5bGFuZC9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwot IGNsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYyAgICAgICAgICAgICAgICB8IDIwNCArKysr LQotIC4uLi90ZXh0LWlucHV0LXVuc3RhYmxlLXYxLWNsaWVudC1wcm90b2NvbC5oICB8IDg0NyAr KysrKysrKysrKysrKysrKysKLSBzcmMvaWJ1c2F0dHJpYnV0ZS5oICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNTIgKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDExMDEgaW5zZXJ0aW9ucygrKSwg MyBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgY2xpZW50L3dheWxhbmQvdGV4dC1p bnB1dC11bnN0YWJsZS12MS1jbGllbnQtcHJvdG9jb2wuaAotCi1kaWZmIC0tZ2l0IGEvY2xpZW50 L3dheWxhbmQvTWFrZWZpbGUuYW0gYi9jbGllbnQvd2F5bGFuZC9NYWtlZmlsZS5hbQotaW5kZXgg N2U4ZDE4YWYuLjk0ZTM1N2I0IDEwMDY0NAotLS0tIGEvY2xpZW50L3dheWxhbmQvTWFrZWZpbGUu YW0KLSsrKyBiL2NsaWVudC93YXlsYW5kL01ha2VmaWxlLmFtCi1AQCAtMzEsNiArMzEsNyBAQCBE SVNUQ0xFQU5GSUxFUyA9Ci0gcHJvdG9jb2xfc291cmNlcyA9IFwKLSAgICAgaW5wdXQtbWV0aG9k LXVuc3RhYmxlLXYxLWNsaWVudC1wcm90b2NvbC5oIFwKLSAgICAgaW5wdXQtbWV0aG9kLXVuc3Rh YmxlLXYxLXByb3RvY29sLmMgXAotKyAgICB0ZXh0LWlucHV0LXVuc3RhYmxlLXYxLWNsaWVudC1w cm90b2NvbC5oIFwKLSAgICAgJChOVUxMKQotIAotIGlidXNfd2F5bGFuZF9TT1VSQ0VTID0gXAot ZGlmZiAtLWdpdCBhL2NsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYyBiL2NsaWVudC93YXls YW5kL2lidXN3YXlsYW5kaW0uYwotaW5kZXggOGY5MzgyODguLjllOGY2NTFlIDEwMDY0NAotLS0t IGEvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jCi0rKysgYi9jbGllbnQvd2F5bGFuZC9p YnVzd2F5bGFuZGltLmMKLUBAIC0zMiw2ICszMiw3IEBACi0gI2luY2x1ZGUgPHhrYmNvbW1vbi94 a2Jjb21tb24uaD4KLSAKLSAjaW5jbHVkZSAiaW5wdXQtbWV0aG9kLXVuc3RhYmxlLXYxLWNsaWVu dC1wcm90b2NvbC5oIgotKyNpbmNsdWRlICJ0ZXh0LWlucHV0LXVuc3RhYmxlLXYxLWNsaWVudC1w cm90b2NvbC5oIgotICNpbmNsdWRlICJpYnVzd2F5bGFuZGltLmgiCi0gCi0gZW51bSB7Ci1AQCAt NTgsNiArNTksNyBAQCBzdHJ1Y3QgX0lCdXNXYXlsYW5kSU1Qcml2YXRlCi0gICAgIElCdXNJbnB1 dENvbnRleHQgKmlidXNjb250ZXh0OwotICAgICBJQnVzVGV4dCAqcHJlZWRpdF90ZXh0OwotICAg ICBndWludCBwcmVlZGl0X2N1cnNvcl9wb3M7Ci0rICAgIGd1aW50IHByZWVkaXRfbW9kZTsKLSAg ICAgSUJ1c01vZGlmaWVyVHlwZSBtb2RpZmllcnM7Ci0gCi0gICAgIHN0cnVjdCB4a2JfY29udGV4 dCAqeGtiX2NvbnRleHQ7Ci1AQCAtMjY2LDEyICsyNjgsMjA0IEBAIF9jb250ZXh0X2ZvcndhcmRf a2V5X2V2ZW50X2NiIChJQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAotIH0KLSAKLSAKLSsvKioK LSsgKiBpYnVzX3dheWxhbmRfaW1fdXBkYXRlX3ByZWVkaXRfc3R5bGU6Ci0rICogQHdsaW06IEFu ICNJQnVzV2F5bGFuZElNCi0rICoKLSsgKiBDb252ZXJ0IFJHQiB2YWx1ZXMgdG8gSUJ1c0F0dHJQ cmVlZGl0IGF0IGZpcnN0LgotKyAqIENvbnZlcnQgSUJ1c0F0dHJQcmVlZGl0IHRvIHp3cF90ZXh0 X2lucHV0X3YxX3ByZWVkaXRfc3R5bGUgYXQgc2Vjb25kLgotKyAqCi0rICogUkYuIGh0dHBzOi8v Z2l0aHViLmNvbS9pYnVzL2lidXMvd2lraS9XYXlsYW5kLUNvbG9ycwotKyAqLwotK3N0YXRpYyB2 b2lkCi0raWJ1c193YXlsYW5kX2ltX3VwZGF0ZV9wcmVlZGl0X3N0eWxlIChJQnVzV2F5bGFuZElN ICp3bGltKQotK3sKLSsgICAgSUJ1c1dheWxhbmRJTVByaXZhdGUgKnByaXY7Ci0rICAgIElCdXNB dHRyTGlzdCAqYXR0cnM7Ci0rICAgIGd1aW50IGk7Ci0rICAgIGNvbnN0IGNoYXIgKnN0cjsKLSsg ICAgdWludDMyX3Qgd2hvbGVfd3N0eWxlID0gWldQX1RFWFRfSU5QVVRfVjFfUFJFRURJVF9TVFlM RV9ERUZBVUxUOwotKyAgICB1aW50MzJfdCBwcmV2X3N0YXJ0ID0gMDsKLSsgICAgdWludDMyX3Qg cHJldl9lbmQgPSAwOwotKwotKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX1dBWUxBTkRf SU0gKHdsaW0pKTsKLSsgICAgcHJpdiA9IGlidXNfd2F5bGFuZF9pbV9nZXRfaW5zdGFuY2VfcHJp dmF0ZSAod2xpbSk7Ci0rICAgIGlmICghcHJpdi0+cHJlZWRpdF90ZXh0KQotKyAgICAgICAgcmV0 dXJuOwotKyAgICBhdHRycyA9IHByaXYtPnByZWVkaXRfdGV4dC0+YXR0cnM7Ci0rICAgIGlmICgh YXR0cnMpCi0rICAgICAgICByZXR1cm47Ci0rICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7Ci0rICAg ICAgICBJQnVzQXR0cmlidXRlICphdHRyID0gaWJ1c19hdHRyX2xpc3RfZ2V0IChhdHRycywgaSk7 Ci0rICAgICAgICBJQnVzQXR0clByZWVkaXQgaXN0eWxlID0gSUJVU19BVFRSX1BSRUVESVRfREVG QVVMVDsKLSsgICAgICAgIHVpbnQzMl90IHdzdHlsZSA9IFpXUF9URVhUX0lOUFVUX1YxX1BSRUVE SVRfU1RZTEVfREVGQVVMVDsKLSsgICAgICAgIHVpbnQzMl90IHN0YXJ0LCBlbmQ7Ci0rICAgICAg ICBpZiAoYXR0ciA9PSBOVUxMKQotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIHN3 aXRjaCAoYXR0ci0+dHlwZSkgewotKyAgICAgICAgY2FzZSBJQlVTX0FUVFJfVFlQRV9VTkRFUkxJ TkU6Ci0rICAgICAgICAgICAgaXN0eWxlID0gSUJVU19BVFRSX1BSRUVESVRfV0hPTEU7Ci0rICAg ICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIElCVVNfQVRUUl9UWVBFX0ZPUkVHUk9VTkQ6 Ci0rICAgICAgICAgICAgc3dpdGNoIChhdHRyLT52YWx1ZSkgewotKyAgICAgICAgICAgIGNhc2Ug MHg3RjdGN0Y6IC8qIHR5cGluZy1ib29zdGVyICovCi0rICAgICAgICAgICAgICAgIGlzdHlsZSA9 IElCVVNfQVRUUl9QUkVFRElUX1BSRURJQ1RJT047Ci0rICAgICAgICAgICAgICAgIGJyZWFrOwot KyAgICAgICAgICAgIGNhc2UgMHhGOTBGMEY6IC8qIHRhYmxlICovCi0rICAgICAgICAgICAgICAg IGlzdHlsZSA9IElCVVNfQVRUUl9QUkVFRElUX1BSRUZJWDsKLSsgICAgICAgICAgICAgICAgYnJl YWs7Ci0rICAgICAgICAgICAgY2FzZSAweDFFREMxQTogLyogdGFibGUgKi8KLSsgICAgICAgICAg ICAgICAgaXN0eWxlID0gSUJVU19BVFRSX1BSRUVESVRfU1VGRklYOwotKyAgICAgICAgICAgICAg ICBicmVhazsKLSsgICAgICAgICAgICBjYXNlIDB4QTQwMDAwOiAvKiB0eXBpbmctYm9vc3Rlciwg dGFibGUgKi8KLSsgICAgICAgICAgICAgICAgaXN0eWxlID0gSUJVU19BVFRSX1BSRUVESVRfRVJS T1JfU1BFTExJTkc7Ci0rICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIGNhc2Ug MHhGRjAwRkY6IC8qIHR5cGluZy1ib29zdGVyICovCi0rICAgICAgICAgICAgICAgIGlzdHlsZSA9 IElCVVNfQVRUUl9QUkVFRElUX0VSUk9SX0NPTVBPU0U7Ci0rICAgICAgICAgICAgICAgIGJyZWFr OwotKyAgICAgICAgICAgIGNhc2UgMHgwOiAvKiBKYXBhbmVzZSAqLwotKyAgICAgICAgICAgIGNh c2UgMHhGRjAwMDAwMDoKLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgY2Fz ZSAweEZGRkZGRjogLyogaGFuZ3VsICovCi0rICAgICAgICAgICAgY2FzZSAweEZGRkZGRkZGOgot KyAgICAgICAgICAgICAgICBpc3R5bGUgPSBJQlVTX0FUVFJfUFJFRURJVF9TRUxFQ1RJT047Ci0r ICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIGRlZmF1bHQ6IC8qIEN1c3RvbSAq LwotKyAgICAgICAgICAgICAgICBpc3R5bGUgPSBJQlVTX0FUVFJfUFJFRURJVF9OT05FOwotKyAg ICAgICAgICAgIH0KLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgSUJVU19BVFRS X1RZUEVfQkFDS0dST1VORDoKLSsgICAgICAgICAgICBzd2l0Y2ggKGF0dHItPnZhbHVlKSB7Ci0r ICAgICAgICAgICAgY2FzZSAweEM4QzhGMDogLyogSmFwYW5lc2UgKi8KLSsgICAgICAgICAgICBj YXNlIDB4RkZDOEM4RjA6Ci0rICAgICAgICAgICAgICAgIGlzdHlsZSA9IElCVVNfQVRUUl9QUkVF RElUX1NFTEVDVElPTjsKLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgZGVm YXVsdDo7IC8qIEN1c3RvbSAqLwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBicmVhazsK LSsgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgICAgaXN0eWxlID0gSUJVU19BVFRSX1BSRUVE SVRfTk9ORTsKLSsgICAgICAgIH0KLSsgICAgICAgIHN3aXRjaCAoaXN0eWxlKSB7Ci0rICAgICAg ICBjYXNlIElCVVNfQVRUUl9QUkVFRElUX05PTkU6Ci0rICAgICAgICAgICAgd3N0eWxlID0gWldQ X1RFWFRfSU5QVVRfVjFfUFJFRURJVF9TVFlMRV9OT05FOwotKyAgICAgICAgICAgIGJyZWFrOwot KyAgICAgICAgY2FzZSBJQlVTX0FUVFJfUFJFRURJVF9XSE9MRToKLSsgICAgICAgICAgICB3c3R5 bGUgPSBaV1BfVEVYVF9JTlBVVF9WMV9QUkVFRElUX1NUWUxFX1VOREVSTElORTsKLSsgICAgICAg ICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgSUJVU19BVFRSX1BSRUVESVRfU0VMRUNUSU9OOgot KyAgICAgICAgICAgIHdzdHlsZSA9IFpXUF9URVhUX0lOUFVUX1YxX1BSRUVESVRfU1RZTEVfU0VM RUNUSU9OOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBJQlVTX0FUVFJfUFJF RURJVF9QUkVESUNUSU9OOgotKyAgICAgICAgICAgIHdzdHlsZSA9IFpXUF9URVhUX0lOUFVUX1Yx X1BSRUVESVRfU1RZTEVfSU5BQ1RJVkU7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBj YXNlIElCVVNfQVRUUl9QUkVFRElUX1BSRUZJWDoKLSsgICAgICAgICAgICB3c3R5bGUgPSBaV1Bf VEVYVF9JTlBVVF9WMV9QUkVFRElUX1NUWUxFX0hJR0hMSUdIVDsKLSsgICAgICAgICAgICBicmVh azsKLSsgICAgICAgIGNhc2UgSUJVU19BVFRSX1BSRUVESVRfU1VGRklYOgotKyAgICAgICAgICAg IHdzdHlsZSA9IFpXUF9URVhUX0lOUFVUX1YxX1BSRUVESVRfU1RZTEVfSU5BQ1RJVkU7Ci0rICAg ICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIElCVVNfQVRUUl9QUkVFRElUX0VSUk9SX1NQ RUxMSU5HOgotKyAgICAgICAgICAgIHdzdHlsZSA9IFpXUF9URVhUX0lOUFVUX1YxX1BSRUVESVRf U1RZTEVfSU5DT1JSRUNUOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBJQlVT X0FUVFJfUFJFRURJVF9FUlJPUl9DT01QT1NFOgotKyAgICAgICAgICAgIHdzdHlsZSA9IFpXUF9U RVhUX0lOUFVUX1YxX1BSRUVESVRfU1RZTEVfSU5DT1JSRUNUOwotKyAgICAgICAgICAgIGJyZWFr OwotKyAgICAgICAgZGVmYXVsdDo7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAod3N0eWxlID09 IFpXUF9URVhUX0lOUFVUX1YxX1BSRUVESVRfU1RZTEVfREVGQVVMVCkKLSsgICAgICAgICAgICBj b250aW51ZTsKLSsgICAgICAgIHN0ciA9IHByaXYtPnByZWVkaXRfdGV4dC0+dGV4dDsKLSsgICAg ICAgIHN0YXJ0ID0gZ191dGY4X29mZnNldF90b19wb2ludGVyIChzdHIsIGF0dHItPnN0YXJ0X2lu ZGV4KSAtIHN0cjsKLSsgICAgICAgIGVuZCA9IGdfdXRmOF9vZmZzZXRfdG9fcG9pbnRlciAoc3Ry LCBhdHRyLT5lbmRfaW5kZXgpIC0gc3RyOwotKyAgICAgICAgLyogRG91YmxlIHN0eWxlcyBjYW5u b3QgYmUgYXBwbGllZCBsaWtlcyB0aGUgdW5kZXJsaW5lIGFuZAotKyAgICAgICAgICogcHJlZWRp dCBjb2xvci4gKi8KLSsgICAgICAgIGlmIChzdGFydCA9PSAwICYmIHN0cmxlbiAoc3RyKSA9PSBl bmQgJiYKLSsgICAgICAgICAgICAoaSA+IDAgfHwgaWJ1c19hdHRyX2xpc3RfZ2V0IChhdHRycywg aSArIDEpKSkgewotKyAgICAgICAgICAgIHdob2xlX3dzdHlsZSA9IHdzdHlsZTsKLSsgICAgICAg ICAgICBjb250aW51ZTsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmIChlbmQgPCBwcmV2X3N0YXJ0 KSB7Ci0rICAgICAgICAgICAgaWYgKHByaXYtPmxvZykgewotKyAgICAgICAgICAgICAgICBmcHJp bnRmIChwcml2LT5sb2csCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJSZXZlcnNlIG9yZGVy IGlzIG5vdCBzdXBwb3J0ZWQgaW4gZW5kICVkIGZvciAlcyAiCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICJhZ2FpbnN0IHN0YXJ0ICVkLlxuIiwgZW5kLCBzdHIsIHByZXZfc3RhcnQpOwotKyAg ICAgICAgICAgICAgICBmZmx1c2ggKHByaXYtPmxvZyk7Ci0rICAgICAgICAgICAgfQotKyAgICAg ICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKHByZXZfZW5kID4gZW5k KSB7Ci0rICAgICAgICAgICAgaWYgKHByaXYtPmxvZykgewotKyAgICAgICAgICAgICAgICBmcHJp bnRmIChwcml2LT5sb2csCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJOZXN0ZWQgc3R5bGVz IGFyZSBub3Qgc3VwcG9ydGVkIGluIGVuZCAlZCBmb3IgJXMgIgotKyAgICAgICAgICAgICAgICAg ICAgICAgICAiYWdhaW5zdCBlbmQgJWQuXG4iLCBlbmQsIHN0ciwgcHJldl9lbmQpOwotKyAgICAg ICAgICAgICAgICBmZmx1c2ggKHByaXYtPmxvZyk7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAg ICAgIGNvbnRpbnVlOwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKHByZXZfZW5kID4gc3RhcnQg JiYgcHJldl9zdGFydCA+PSBzdGFydCkKLSsgICAgICAgICAgICBzdGFydCA9IHByZXZfZW5kOwot KyAgICAgICAgaWYgKHN0YXJ0ID49IGVuZCkgewotKyAgICAgICAgICAgIGlmIChwcml2LT5sb2cp IHsKLSsgICAgICAgICAgICAgICAgZnByaW50ZiAocHJpdi0+bG9nLCAiV3Jvbmcgc3RhcnQgJWQg YW5kIGVuZCAlZCBmb3IgJXMuXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwg ZW5kLCBzdHIpOwotKyAgICAgICAgICAgICAgICBmZmx1c2ggKHByaXYtPmxvZyk7Ci0rICAgICAg ICAgICAgfQotKyAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIH0KLSsgICAgICAgIHp3cF9p bnB1dF9tZXRob2RfY29udGV4dF92MV9wcmVlZGl0X3N0eWxpbmcgKHByaXYtPmNvbnRleHQsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFy dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVuZCAtIHN0YXJ0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgd3N0eWxlKTsKLSsgICAgICAgIHByZXZfc3RhcnQgPSBzdGFydDsKLSsgICAg ICAgIHByZXZfZW5kID0gZW5kOwotKyAgICB9Ci0rICAgIGlmICh3aG9sZV93c3R5bGUgIT0gWldQ X1RFWFRfSU5QVVRfVjFfUFJFRURJVF9TVFlMRV9ERUZBVUxUKSB7Ci0rICAgICAgICB1aW50MzJf dCB3aG9sZV9zdGFydCA9IDA7Ci0rICAgICAgICB1aW50MzJfdCB3aG9sZV9lbmQgPSBzdHJsZW4g KHN0cik7Ci0rICAgICAgICB1aW50MzJfdCBzdGFydCwgZW5kOwotKyAgICAgICAgZm9yIChpID0g MDsgOyBpKyspIHsKLSsgICAgICAgICAgICBJQnVzQXR0cmlidXRlICphdHRyID0gaWJ1c19hdHRy X2xpc3RfZ2V0IChhdHRycywgaSk7Ci0rICAgICAgICAgICAgaWYgKCFhdHRyKQotKyAgICAgICAg ICAgICAgICBicmVhazsKLSsgICAgICAgICAgICBzdGFydCA9IGdfdXRmOF9vZmZzZXRfdG9fcG9p bnRlciAoc3RyLCBhdHRyLT5zdGFydF9pbmRleCkgLSBzdHI7Ci0rICAgICAgICAgICAgZW5kID0g Z191dGY4X29mZnNldF90b19wb2ludGVyIChzdHIsIGF0dHItPmVuZF9pbmRleCkgLSBzdHI7Ci0r ICAgICAgICAgICAgaWYgKHN0YXJ0ID09IDAgJiYgc3RybGVuIChzdHIpID09IGVuZCkKLSsgICAg ICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgaWYgKHN0YXJ0ID09IDApIHsKLSsg ICAgICAgICAgICAgICAgd2hvbGVfc3RhcnQgPSBlbmQ7Ci0rICAgICAgICAgICAgfSBlbHNlIGlm IChzdHJsZW4gKHN0cikgPT0gZW5kKSB7Ci0rICAgICAgICAgICAgICAgIHdob2xlX2VuZCA9IHN0 YXJ0OwotKyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIHdob2xlX2VuZCA9 IHN0YXJ0OwotKyAgICAgICAgICAgICAgICBpZiAod2hvbGVfc3RhcnQgPCB3aG9sZV9lbmQpIHsK LSsgICAgICAgICAgICAgICAgICAgIHp3cF9pbnB1dF9tZXRob2RfY29udGV4dF92MV9wcmVlZGl0 X3N0eWxpbmcgKAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5jb250ZXh0LAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aG9sZV9zdGFydCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgd2hvbGVfZW5kIC0gd2hvbGVfc3RhcnQsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHdob2xlX3dzdHlsZSk7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAg ICAgICAgICAgd2hvbGVfc3RhcnQgPSBlbmQ7Ci0rICAgICAgICAgICAgICAgIHdob2xlX2VuZCA9 IHN0cmxlbiAoc3RyKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAo d2hvbGVfc3RhcnQgPCB3aG9sZV9lbmQpIHsKLSsgICAgICAgICAgICB6d3BfaW5wdXRfbWV0aG9k X2NvbnRleHRfdjFfcHJlZWRpdF9zdHlsaW5nICgKLSsgICAgICAgICAgICAgICAgcHJpdi0+Y29u dGV4dCwKLSsgICAgICAgICAgICAgICAgd2hvbGVfc3RhcnQsCi0rICAgICAgICAgICAgICAgIHdo b2xlX2VuZCAtIHdob2xlX3N0YXJ0LAotKyAgICAgICAgICAgICAgICB3aG9sZV93c3R5bGUpOwot KyAgICAgICAgfQotKyAgICB9Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gX2NvbnRleHRfc2hvd19w cmVlZGl0X3RleHRfY2IgKElCdXNJbnB1dENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElCdXNXYXlsYW5kSU0gICAgKndsaW0pCi0gewotICAgICBJQnVz V2F5bGFuZElNUHJpdmF0ZSAqcHJpdjsKLSAgICAgdWludDMyX3QgY3Vyc29yOwotKyAgICBjb25z dCBjaGFyICpjb21taXQgPSAiIjsKLSAgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19XQVlM QU5EX0lNICh3bGltKSk7Ci0gICAgIHByaXYgPSBpYnVzX3dheWxhbmRfaW1fZ2V0X2luc3RhbmNl X3ByaXZhdGUgKHdsaW0pOwotICAgICAvKiBDVVJTT1IgaXMgYnl0ZSBvZmZzZXQuICAqLwotQEAg LTI4MiwxMCArNDc2LDEzIEBAIF9jb250ZXh0X3Nob3dfcHJlZWRpdF90ZXh0X2NiIChJQnVzSW5w dXRDb250ZXh0ICpjb250ZXh0LAotIAotICAgICB6d3BfaW5wdXRfbWV0aG9kX2NvbnRleHRfdjFf cHJlZWRpdF9jdXJzb3IgKHByaXYtPmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yKTsKLSsgICAgaWJ1c193YXlsYW5kX2ltX3Vw ZGF0ZV9wcmVlZGl0X3N0eWxlICh3bGltKTsKLSsgICAgaWYgKHByaXYtPnByZWVkaXRfbW9kZSA9 PSBJQlVTX0VOR0lORV9QUkVFRElUX0NPTU1JVCkKLSsgICAgICAgIGNvbW1pdCA9IHByaXYtPnBy ZWVkaXRfdGV4dC0+dGV4dDsKLSAgICAgendwX2lucHV0X21ldGhvZF9jb250ZXh0X3YxX3ByZWVk aXRfc3RyaW5nIChwcml2LT5jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHByaXYtPnNlcmlhbCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5wcmVlZGl0X3RleHQtPnRleHQsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+cHJlZWRp dF90ZXh0LT50ZXh0KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb21taXQpOwotIH0KLSAKLSAKLUBAIC0zMDgsNiArNTA1LDcgQEAgX2NvbnRleHRf dXBkYXRlX3ByZWVkaXRfdGV4dF9jYiAoSUJ1c0lucHV0Q29udGV4dCAqY29udGV4dCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzVGV4dCAgICAgICAgICp0ZXh0LAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgIGN1cnNvcl9w b3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAg dmlzaWJsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAg ICAgICBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNXYXlsYW5k SU0gICAgKndsaW0pCi0gewotICAgICBJQnVzV2F5bGFuZElNUHJpdmF0ZSAqcHJpdjsKLUBAIC0z MTcsNiArNTE1LDcgQEAgX2NvbnRleHRfdXBkYXRlX3ByZWVkaXRfdGV4dF9jYiAoSUJ1c0lucHV0 Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgIGdfb2JqZWN0X3VucmVmIChwcml2LT5wcmVlZGl0 X3RleHQpOwotICAgICBwcml2LT5wcmVlZGl0X3RleHQgPSBnX29iamVjdF9yZWZfc2luayAodGV4 dCk7Ci0gICAgIHByaXYtPnByZWVkaXRfY3Vyc29yX3BvcyA9IGN1cnNvcl9wb3M7Ci0rICAgIHBy aXYtPnByZWVkaXRfbW9kZSA9IG1vZGU7Ci0gCi0gICAgIGlmICh2aXNpYmxlKQotICAgICAgICAg X2NvbnRleHRfc2hvd19wcmVlZGl0X3RleHRfY2IgKGNvbnRleHQsIHdsaW0pOwotQEAgLTk3MSw3 ICsxMTcwLDcgQEAgX2NyZWF0ZV9pbnB1dF9jb250ZXh0X2RvbmUgKEdPYmplY3QgICAgICAqb2Jq ZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoX2NvbnRleHRfZm9y d2FyZF9rZXlfZXZlbnRfY2IpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgd2xpbSk7Ci0g Ci0tICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChwcml2LT5pYnVzY29udGV4dCwgInVwZGF0ZS1w cmVlZGl0LXRleHQiLAotKyAgICAgICAgZ19zaWduYWxfY29ubmVjdCAocHJpdi0+aWJ1c2NvbnRl eHQsICJ1cGRhdGUtcHJlZWRpdC10ZXh0LXdpdGgtbW9kZSIsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICBHX0NBTExCQUNLIChfY29udGV4dF91cGRhdGVfcHJlZWRpdF90ZXh0X2NiKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHdsaW0pOwotICAgICAgICAgZ19zaWduYWxfY29ubmVj dCAocHJpdi0+aWJ1c2NvbnRleHQsICJzaG93LXByZWVkaXQtdGV4dCIsCi1AQCAtOTg4LDYgKzEx ODcsNyBAQCBfY3JlYXRlX2lucHV0X2NvbnRleHRfZG9uZSAoR09iamVjdCAgICAgICpvYmplY3Qs Ci0gICAgICAgICAgICAgY2FwYWJpbGl0aWVzIHw9IElCVVNfQ0FQX1NZTkNfUFJPQ0VTU19LRVlf VjI7Ci0gICAgICAgICBpYnVzX2lucHV0X2NvbnRleHRfc2V0X2NhcGFiaWxpdGllcyAocHJpdi0+ aWJ1c2NvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2FwYWJpbGl0aWVzKTsKLSsgICAgICAgIGlidXNfaW5wdXRfY29udGV4dF9zZXRfY2xpZW50 X2NvbW1pdF9wcmVlZGl0IChwcml2LT5pYnVzY29udGV4dCwgVFJVRSk7Ci0gICAgICAgICBpZiAo X3VzZV9zeW5jX21vZGUgPT0gMSkgewotICAgICAgICAgICAgIGlidXNfaW5wdXRfY29udGV4dF9z ZXRfcG9zdF9wcm9jZXNzX2tleV9ldmVudCAocHJpdi0+aWJ1c2NvbnRleHQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsK LWRpZmYgLS1naXQgYS9jbGllbnQvd2F5bGFuZC90ZXh0LWlucHV0LXVuc3RhYmxlLXYxLWNsaWVu dC1wcm90b2NvbC5oIGIvY2xpZW50L3dheWxhbmQvdGV4dC1pbnB1dC11bnN0YWJsZS12MS1jbGll bnQtcHJvdG9jb2wuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi43MTA2 OWVjNwotLS0tIC9kZXYvbnVsbAotKysrIGIvY2xpZW50L3dheWxhbmQvdGV4dC1pbnB1dC11bnN0 YWJsZS12MS1jbGllbnQtcHJvdG9jb2wuaAotQEAgLTAsMCArMSw4NDcgQEAKLSsvKiBHZW5lcmF0 ZWQgYnkgd2F5bGFuZC1zY2FubmVyIDEuMjIuMCAqLwotKwotKyNpZm5kZWYgVEVYVF9JTlBVVF9V TlNUQUJMRV9WMV9DTElFTlRfUFJPVE9DT0xfSAotKyNkZWZpbmUgVEVYVF9JTlBVVF9VTlNUQUJM RV9WMV9DTElFTlRfUFJPVE9DT0xfSAotKwotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjaW5jbHVk ZSA8c3RkZGVmLmg+Ci0rI2luY2x1ZGUgIndheWxhbmQtY2xpZW50LmgiCi0rCi0rI2lmZGVmICBf X2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotKwotKy8qKgotKyAqIEBwYWdlIHBh Z2VfdGV4dF9pbnB1dF91bnN0YWJsZV92MSBUaGUgdGV4dF9pbnB1dF91bnN0YWJsZV92MSBwcm90 b2NvbAotKyAqIEBzZWN0aW9uIHBhZ2VfaWZhY2VzX3RleHRfaW5wdXRfdW5zdGFibGVfdjEgSW50 ZXJmYWNlcwotKyAqIC0gQHN1YnBhZ2UgcGFnZV9pZmFjZV96d3BfdGV4dF9pbnB1dF92MSAtIHRl eHQgaW5wdXQKLSsgKiAtIEBzdWJwYWdlIHBhZ2VfaWZhY2VfendwX3RleHRfaW5wdXRfbWFuYWdl cl92MSAtIHRleHQgaW5wdXQgbWFuYWdlcgotKyAqIEBzZWN0aW9uIHBhZ2VfY29weXJpZ2h0X3Rl eHRfaW5wdXRfdW5zdGFibGVfdjEgQ29weXJpZ2h0Ci0rICogPHByZT4KLSsgKgotKyAqIENvcHly aWdodCDCqSAyMDEyLCAyMDEzIEludGVsIENvcnBvcmF0aW9uCi0rICoKLSsgKiBQZXJtaXNzaW9u IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p bmcgYQotKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCi0rICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgotKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAotKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQotKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0rICoKLSsg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIHRoZSBuZXh0Ci0rICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQotKyAqIFNvZnR3YXJlLgot KyAqCi0rICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSsgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8g RVZFTlQgU0hBTEwKLSsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotKyAqIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0r ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUgotKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSsgKiA8L3ByZT4K LSsgKi8KLStzdHJ1Y3Qgd2xfc2VhdDsKLStzdHJ1Y3Qgd2xfc3VyZmFjZTsKLStzdHJ1Y3Qgendw X3RleHRfaW5wdXRfbWFuYWdlcl92MTsKLStzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjE7Ci0rCi0r I2lmbmRlZiBaV1BfVEVYVF9JTlBVVF9WMV9JTlRFUkZBQ0UKLSsjZGVmaW5lIFpXUF9URVhUX0lO UFVUX1YxX0lOVEVSRkFDRQotKy8qKgotKyAqIEBwYWdlIHBhZ2VfaWZhY2VfendwX3RleHRfaW5w dXRfdjEgendwX3RleHRfaW5wdXRfdjEKLSsgKiBAc2VjdGlvbiBwYWdlX2lmYWNlX3p3cF90ZXh0 X2lucHV0X3YxX2Rlc2MgRGVzY3JpcHRpb24KLSsgKgotKyAqIEFuIG9iamVjdCB1c2VkIGZvciB0 ZXh0IGlucHV0LiBBZGRzIHN1cHBvcnQgZm9yIHRleHQgaW5wdXQgYW5kIGlucHV0Ci0rICogbWV0 aG9kcyB0byBhcHBsaWNhdGlvbnMuIEEgdGV4dF9pbnB1dCBvYmplY3QgaXMgY3JlYXRlZCBmcm9t IGEKLSsgKiB3bF90ZXh0X2lucHV0X21hbmFnZXIgYW5kIGNvcnJlc3BvbmRzIHR5cGljYWxseSB0 byBhIHRleHQgZW50cnkgaW4gYW4KLSsgKiBhcHBsaWNhdGlvbi4KLSsgKgotKyAqIFJlcXVlc3Rz IGFyZSB1c2VkIHRvIGFjdGl2YXRlL2RlYWN0aXZhdGUgdGhlIHRleHRfaW5wdXQgb2JqZWN0IGFu ZCBzZXQKLSsgKiBzdGF0ZSBpbmZvcm1hdGlvbiBsaWtlIHN1cnJvdW5kaW5nIGFuZCBzZWxlY3Rl ZCB0ZXh0IG9yIHRoZSBjb250ZW50IHR5cGUuCi0rICogVGhlIGluZm9ybWF0aW9uIGFib3V0IGVu dGVyZWQgdGV4dCBpcyBzZW50IHRvIHRoZSB0ZXh0X2lucHV0IG9iamVjdCB2aWEKLSsgKiB0aGUg cHJlLWVkaXQgYW5kIGNvbW1pdCBldmVudHMuIFVzaW5nIHRoaXMgaW50ZXJmYWNlIHJlbW92ZXMg dGhlIG5lZWQKLSsgKiBmb3IgYXBwbGljYXRpb25zIHRvIGRpcmVjdGx5IHByb2Nlc3MgaGFyZHdh cmUga2V5IGV2ZW50cyBhbmQgY29tcG9zZSB0ZXh0Ci0rICogb3V0IG9mIHRoZW0uCi0rICoKLSsg KiBUZXh0IGlzIGdlbmVyYWxseSBVVEYtOCBlbmNvZGVkLCBpbmRpY2VzIGFuZCBsZW5ndGhzIGFy ZSBpbiBieXRlcy4KLSsgKgotKyAqIFNlcmlhbHMgYXJlIHVzZWQgdG8gc3luY2hyb25pemUgdGhl IHN0YXRlIGJldHdlZW4gdGhlIHRleHQgaW5wdXQgYW5kCi0rICogYW4gaW5wdXQgbWV0aG9kLiBO ZXcgc2VyaWFscyBhcmUgc2VudCBieSB0aGUgdGV4dCBpbnB1dCBpbiB0aGUKLSsgKiBjb21taXRf c3RhdGUgcmVxdWVzdCBhbmQgYXJlIHVzZWQgYnkgdGhlIGlucHV0IG1ldGhvZCB0byBpbmRpY2F0 ZQotKyAqIHRoZSBrbm93biB0ZXh0IGlucHV0IHN0YXRlIGluIGV2ZW50cyBsaWtlIHByZWVkaXRf c3RyaW5nLCBjb21taXRfc3RyaW5nLAotKyAqIGFuZCBrZXlzeW0uIFRoZSB0ZXh0IGlucHV0IGNh biB0aGVuIGlnbm9yZSBldmVudHMgZnJvbSB0aGUgaW5wdXQgbWV0aG9kCi0rICogd2hpY2ggYXJl IGJhc2VkIG9uIGFuIG91dGRhdGVkIHN0YXRlIChmb3IgZXhhbXBsZSBhZnRlciBhIHJlc2V0KS4K LSsgKgotKyAqIFdhcm5pbmchIFRoZSBwcm90b2NvbCBkZXNjcmliZWQgaW4gdGhpcyBmaWxlIGlz IGV4cGVyaW1lbnRhbCBhbmQKLSsgKiBiYWNrd2FyZCBpbmNvbXBhdGlibGUgY2hhbmdlcyBtYXkg YmUgbWFkZS4gQmFja3dhcmQgY29tcGF0aWJsZSBjaGFuZ2VzCi0rICogbWF5IGJlIGFkZGVkIHRv Z2V0aGVyIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIHZlcnNpb24gYnVtcC4KLSsg KiBCYWNrd2FyZCBpbmNvbXBhdGlibGUgY2hhbmdlcyBhcmUgZG9uZSBieSBidW1waW5nIHRoZSB2 ZXJzaW9uIG51bWJlciBpbgotKyAqIHRoZSBwcm90b2NvbCBhbmQgaW50ZXJmYWNlIG5hbWVzIGFu ZCByZXNldHRpbmcgdGhlIGludGVyZmFjZSB2ZXJzaW9uLgotKyAqIE9uY2UgdGhlIHByb3RvY29s IGlzIHRvIGJlIGRlY2xhcmVkIHN0YWJsZSwgdGhlICd6JyBwcmVmaXggYW5kIHRoZQotKyAqIHZl cnNpb24gbnVtYmVyIGluIHRoZSBwcm90b2NvbCBhbmQgaW50ZXJmYWNlIG5hbWVzIGFyZSByZW1v dmVkIGFuZCB0aGUKLSsgKiBpbnRlcmZhY2UgdmVyc2lvbiBudW1iZXIgaXMgcmVzZXQuCi0rICog QHNlY3Rpb24gcGFnZV9pZmFjZV96d3BfdGV4dF9pbnB1dF92MV9hcGkgQVBJCi0rICogU2VlIEBy ZWYgaWZhY2VfendwX3RleHRfaW5wdXRfdjEuCi0rICovCi0rLyoqCi0rICogQGRlZmdyb3VwIGlm YWNlX3p3cF90ZXh0X2lucHV0X3YxIFRoZSB6d3BfdGV4dF9pbnB1dF92MSBpbnRlcmZhY2UKLSsg KgotKyAqIEFuIG9iamVjdCB1c2VkIGZvciB0ZXh0IGlucHV0LiBBZGRzIHN1cHBvcnQgZm9yIHRl eHQgaW5wdXQgYW5kIGlucHV0Ci0rICogbWV0aG9kcyB0byBhcHBsaWNhdGlvbnMuIEEgdGV4dF9p bnB1dCBvYmplY3QgaXMgY3JlYXRlZCBmcm9tIGEKLSsgKiB3bF90ZXh0X2lucHV0X21hbmFnZXIg YW5kIGNvcnJlc3BvbmRzIHR5cGljYWxseSB0byBhIHRleHQgZW50cnkgaW4gYW4KLSsgKiBhcHBs aWNhdGlvbi4KLSsgKgotKyAqIFJlcXVlc3RzIGFyZSB1c2VkIHRvIGFjdGl2YXRlL2RlYWN0aXZh dGUgdGhlIHRleHRfaW5wdXQgb2JqZWN0IGFuZCBzZXQKLSsgKiBzdGF0ZSBpbmZvcm1hdGlvbiBs aWtlIHN1cnJvdW5kaW5nIGFuZCBzZWxlY3RlZCB0ZXh0IG9yIHRoZSBjb250ZW50IHR5cGUuCi0r ICogVGhlIGluZm9ybWF0aW9uIGFib3V0IGVudGVyZWQgdGV4dCBpcyBzZW50IHRvIHRoZSB0ZXh0 X2lucHV0IG9iamVjdCB2aWEKLSsgKiB0aGUgcHJlLWVkaXQgYW5kIGNvbW1pdCBldmVudHMuIFVz aW5nIHRoaXMgaW50ZXJmYWNlIHJlbW92ZXMgdGhlIG5lZWQKLSsgKiBmb3IgYXBwbGljYXRpb25z IHRvIGRpcmVjdGx5IHByb2Nlc3MgaGFyZHdhcmUga2V5IGV2ZW50cyBhbmQgY29tcG9zZSB0ZXh0 Ci0rICogb3V0IG9mIHRoZW0uCi0rICoKLSsgKiBUZXh0IGlzIGdlbmVyYWxseSBVVEYtOCBlbmNv ZGVkLCBpbmRpY2VzIGFuZCBsZW5ndGhzIGFyZSBpbiBieXRlcy4KLSsgKgotKyAqIFNlcmlhbHMg YXJlIHVzZWQgdG8gc3luY2hyb25pemUgdGhlIHN0YXRlIGJldHdlZW4gdGhlIHRleHQgaW5wdXQg YW5kCi0rICogYW4gaW5wdXQgbWV0aG9kLiBOZXcgc2VyaWFscyBhcmUgc2VudCBieSB0aGUgdGV4 dCBpbnB1dCBpbiB0aGUKLSsgKiBjb21taXRfc3RhdGUgcmVxdWVzdCBhbmQgYXJlIHVzZWQgYnkg dGhlIGlucHV0IG1ldGhvZCB0byBpbmRpY2F0ZQotKyAqIHRoZSBrbm93biB0ZXh0IGlucHV0IHN0 YXRlIGluIGV2ZW50cyBsaWtlIHByZWVkaXRfc3RyaW5nLCBjb21taXRfc3RyaW5nLAotKyAqIGFu ZCBrZXlzeW0uIFRoZSB0ZXh0IGlucHV0IGNhbiB0aGVuIGlnbm9yZSBldmVudHMgZnJvbSB0aGUg aW5wdXQgbWV0aG9kCi0rICogd2hpY2ggYXJlIGJhc2VkIG9uIGFuIG91dGRhdGVkIHN0YXRlIChm b3IgZXhhbXBsZSBhZnRlciBhIHJlc2V0KS4KLSsgKgotKyAqIFdhcm5pbmchIFRoZSBwcm90b2Nv bCBkZXNjcmliZWQgaW4gdGhpcyBmaWxlIGlzIGV4cGVyaW1lbnRhbCBhbmQKLSsgKiBiYWNrd2Fy ZCBpbmNvbXBhdGlibGUgY2hhbmdlcyBtYXkgYmUgbWFkZS4gQmFja3dhcmQgY29tcGF0aWJsZSBj aGFuZ2VzCi0rICogbWF5IGJlIGFkZGVkIHRvZ2V0aGVyIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcg aW50ZXJmYWNlIHZlcnNpb24gYnVtcC4KLSsgKiBCYWNrd2FyZCBpbmNvbXBhdGlibGUgY2hhbmdl cyBhcmUgZG9uZSBieSBidW1waW5nIHRoZSB2ZXJzaW9uIG51bWJlciBpbgotKyAqIHRoZSBwcm90 b2NvbCBhbmQgaW50ZXJmYWNlIG5hbWVzIGFuZCByZXNldHRpbmcgdGhlIGludGVyZmFjZSB2ZXJz aW9uLgotKyAqIE9uY2UgdGhlIHByb3RvY29sIGlzIHRvIGJlIGRlY2xhcmVkIHN0YWJsZSwgdGhl ICd6JyBwcmVmaXggYW5kIHRoZQotKyAqIHZlcnNpb24gbnVtYmVyIGluIHRoZSBwcm90b2NvbCBh bmQgaW50ZXJmYWNlIG5hbWVzIGFyZSByZW1vdmVkIGFuZCB0aGUKLSsgKiBpbnRlcmZhY2UgdmVy c2lvbiBudW1iZXIgaXMgcmVzZXQuCi0rICovCi0rZXh0ZXJuIGNvbnN0IHN0cnVjdCB3bF9pbnRl cmZhY2UgendwX3RleHRfaW5wdXRfdjFfaW50ZXJmYWNlOwotKyNlbmRpZgotKyNpZm5kZWYgWldQ X1RFWFRfSU5QVVRfTUFOQUdFUl9WMV9JTlRFUkZBQ0UKLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVU X01BTkFHRVJfVjFfSU5URVJGQUNFCi0rLyoqCi0rICogQHBhZ2UgcGFnZV9pZmFjZV96d3BfdGV4 dF9pbnB1dF9tYW5hZ2VyX3YxIHp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjEKLSsgKiBAc2VjdGlv biBwYWdlX2lmYWNlX3p3cF90ZXh0X2lucHV0X21hbmFnZXJfdjFfZGVzYyBEZXNjcmlwdGlvbgot KyAqCi0rICogQSBmYWN0b3J5IGZvciB0ZXh0X2lucHV0IG9iamVjdHMuIFRoaXMgb2JqZWN0IGlz IGEgZ2xvYmFsIHNpbmdsZXRvbi4KLSsgKiBAc2VjdGlvbiBwYWdlX2lmYWNlX3p3cF90ZXh0X2lu cHV0X21hbmFnZXJfdjFfYXBpIEFQSQotKyAqIFNlZSBAcmVmIGlmYWNlX3p3cF90ZXh0X2lucHV0 X21hbmFnZXJfdjEuCi0rICovCi0rLyoqCi0rICogQGRlZmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lu cHV0X21hbmFnZXJfdjEgVGhlIHp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjEgaW50ZXJmYWNlCi0r ICoKLSsgKiBBIGZhY3RvcnkgZm9yIHRleHRfaW5wdXQgb2JqZWN0cy4gVGhpcyBvYmplY3QgaXMg YSBnbG9iYWwgc2luZ2xldG9uLgotKyAqLwotK2V4dGVybiBjb25zdCBzdHJ1Y3Qgd2xfaW50ZXJm YWNlIHp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjFfaW50ZXJmYWNlOwotKyNlbmRpZgotKwotKyNp Zm5kZWYgWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5UX0VOVU0KLSsjZGVmaW5lIFpXUF9U RVhUX0lOUFVUX1YxX0NPTlRFTlRfSElOVF9FTlVNCi0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2Vf endwX3RleHRfaW5wdXRfdjEKLSsgKiBjb250ZW50IGhpbnQKLSsgKgotKyAqIENvbnRlbnQgaGlu dCBpcyBhIGJpdG1hc2sgdG8gYWxsb3cgdG8gbW9kaWZ5IHRoZSBiZWhhdmlvciBvZiB0aGUgdGV4 dAotKyAqIGlucHV0LgotKyAqLwotK2VudW0gendwX3RleHRfaW5wdXRfdjFfY29udGVudF9oaW50 IHsKLSsJLyoqCi0rCSAqIG5vIHNwZWNpYWwgYmVoYXZpb3VyCi0rCSAqLwotKwlaV1BfVEVYVF9J TlBVVF9WMV9DT05URU5UX0hJTlRfTk9ORSA9IDB4MCwKLSsJLyoqCi0rCSAqIGF1dG8gY29tcGxl dGlvbiwgY29ycmVjdGlvbiBhbmQgY2FwaXRhbGl6YXRpb24KLSsJICovCi0rCVpXUF9URVhUX0lO UFVUX1YxX0NPTlRFTlRfSElOVF9ERUZBVUxUID0gMHg3LAotKwkvKioKLSsJICogaGlkZGVuIGFu ZCBzZW5zaXRpdmUgdGV4dAotKwkgKi8KLSsJWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5U X1BBU1NXT1JEID0gMHhjMCwKLSsJLyoqCi0rCSAqIHN1Z2dlc3Qgd29yZCBjb21wbGV0aW9ucwot KwkgKi8KLSsJWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5UX0FVVE9fQ09NUExFVElPTiA9 IDB4MSwKLSsJLyoqCi0rCSAqIHN1Z2dlc3Qgd29yZCBjb3JyZWN0aW9ucwotKwkgKi8KLSsJWldQ X1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5UX0FVVE9fQ09SUkVDVElPTiA9IDB4MiwKLSsJLyoq Ci0rCSAqIHN3aXRjaCB0byB1cHBlcmNhc2UgbGV0dGVycyBhdCB0aGUgc3RhcnQgb2YgYSBzZW50 ZW5jZQotKwkgKi8KLSsJWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5UX0FVVE9fQ0FQSVRB TElaQVRJT04gPSAweDQsCi0rCS8qKgotKwkgKiBwcmVmZXIgbG93ZXJjYXNlIGxldHRlcnMKLSsJ ICovCi0rCVpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfSElOVF9MT1dFUkNBU0UgPSAweDgsCi0r CS8qKgotKwkgKiBwcmVmZXIgdXBwZXJjYXNlIGxldHRlcnMKLSsJICovCi0rCVpXUF9URVhUX0lO UFVUX1YxX0NPTlRFTlRfSElOVF9VUFBFUkNBU0UgPSAweDEwLAotKwkvKioKLSsJICogcHJlZmVy IGNhc2luZyBmb3IgdGl0bGVzIGFuZCBoZWFkaW5ncyAoY2FuIGJlIGxhbmd1YWdlIGRlcGVuZGVu dCkKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfSElOVF9USVRMRUNBU0UgPSAw eDIwLAotKwkvKioKLSsJICogY2hhcmFjdGVycyBzaG91bGQgYmUgaGlkZGVuCi0rCSAqLwotKwla V1BfVEVYVF9JTlBVVF9WMV9DT05URU5UX0hJTlRfSElEREVOX1RFWFQgPSAweDQwLAotKwkvKioK LSsJICogdHlwZWQgdGV4dCBzaG91bGQgbm90IGJlIHN0b3JlZAotKwkgKi8KLSsJWldQX1RFWFRf SU5QVVRfVjFfQ09OVEVOVF9ISU5UX1NFTlNJVElWRV9EQVRBID0gMHg4MCwKLSsJLyoqCi0rCSAq IGp1c3QgbGF0aW4gY2hhcmFjdGVycyBzaG91bGQgYmUgZW50ZXJlZAotKwkgKi8KLSsJWldQX1RF WFRfSU5QVVRfVjFfQ09OVEVOVF9ISU5UX0xBVElOID0gMHgxMDAsCi0rCS8qKgotKwkgKiB0aGUg dGV4dCBpbnB1dCBpcyBtdWx0aWxpbmUKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1YxX0NPTlRF TlRfSElOVF9NVUxUSUxJTkUgPSAweDIwMCwKLSt9OwotKyNlbmRpZiAvKiBaV1BfVEVYVF9JTlBV VF9WMV9DT05URU5UX0hJTlRfRU5VTSAqLwotKwotKyNpZm5kZWYgWldQX1RFWFRfSU5QVVRfVjFf Q09OVEVOVF9QVVJQT1NFX0VOVU0KLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRf UFVSUE9TRV9FTlVNCi0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEK LSsgKiBjb250ZW50IHB1cnBvc2UKLSsgKgotKyAqIFRoZSBjb250ZW50IHB1cnBvc2UgYWxsb3dz IHRvIHNwZWNpZnkgdGhlIHByaW1hcnkgcHVycG9zZSBvZiBhIHRleHQKLSsgKiBpbnB1dC4KLSsg KgotKyAqIFRoaXMgYWxsb3dzIGFuIGlucHV0IG1ldGhvZCB0byBzaG93IHNwZWNpYWwgcHVycG9z ZSBpbnB1dCBwYW5lbHMgd2l0aAotKyAqIGV4dHJhIGNoYXJhY3RlcnMgb3IgdG8gZGlzYWxsb3cg c29tZSBjaGFyYWN0ZXJzLgotKyAqLwotK2VudW0gendwX3RleHRfaW5wdXRfdjFfY29udGVudF9w dXJwb3NlIHsKLSsJLyoqCi0rCSAqIGRlZmF1bHQgaW5wdXQsIGFsbG93aW5nIGFsbCBjaGFyYWN0 ZXJzCi0rCSAqLwotKwlaV1BfVEVYVF9JTlBVVF9WMV9DT05URU5UX1BVUlBPU0VfTk9STUFMID0g MCwKLSsJLyoqCi0rCSAqIGFsbG93IG9ubHkgYWxwaGFiZXRpYyBjaGFyYWN0ZXJzCi0rCSAqLwot KwlaV1BfVEVYVF9JTlBVVF9WMV9DT05URU5UX1BVUlBPU0VfQUxQSEEgPSAxLAotKwkvKioKLSsJ ICogYWxsb3cgb25seSBkaWdpdHMKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRf UFVSUE9TRV9ESUdJVFMgPSAyLAotKwkvKioKLSsJICogaW5wdXQgYSBudW1iZXIgKGluY2x1ZGlu ZyBkZWNpbWFsIHNlcGFyYXRvciBhbmQgc2lnbikKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1Yx X0NPTlRFTlRfUFVSUE9TRV9OVU1CRVIgPSAzLAotKwkvKioKLSsJICogaW5wdXQgYSBwaG9uZSBu dW1iZXIKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfUFVSUE9TRV9QSE9ORSA9 IDQsCi0rCS8qKgotKwkgKiBpbnB1dCBhbiBVUkwKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1Yx X0NPTlRFTlRfUFVSUE9TRV9VUkwgPSA1LAotKwkvKioKLSsJICogaW5wdXQgYW4gZW1haWwgYWRk cmVzcwotKwkgKi8KLSsJWldQX1RFWFRfSU5QVVRfVjFfQ09OVEVOVF9QVVJQT1NFX0VNQUlMID0g NiwKLSsJLyoqCi0rCSAqIGlucHV0IGEgbmFtZSBvZiBhIHBlcnNvbgotKwkgKi8KLSsJWldQX1RF WFRfSU5QVVRfVjFfQ09OVEVOVF9QVVJQT1NFX05BTUUgPSA3LAotKwkvKioKLSsJICogaW5wdXQg YSBwYXNzd29yZCAoY29tYmluZSB3aXRoIHBhc3N3b3JkIG9yIHNlbnNpdGl2ZV9kYXRhIGhpbnQp Ci0rCSAqLwotKwlaV1BfVEVYVF9JTlBVVF9WMV9DT05URU5UX1BVUlBPU0VfUEFTU1dPUkQgPSA4 LAotKwkvKioKLSsJICogaW5wdXQgYSBkYXRlCi0rCSAqLwotKwlaV1BfVEVYVF9JTlBVVF9WMV9D T05URU5UX1BVUlBPU0VfREFURSA9IDksCi0rCS8qKgotKwkgKiBpbnB1dCBhIHRpbWUKLSsJICov Ci0rCVpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfUFVSUE9TRV9USU1FID0gMTAsCi0rCS8qKgot KwkgKiBpbnB1dCBhIGRhdGUgYW5kIHRpbWUKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1YxX0NP TlRFTlRfUFVSUE9TRV9EQVRFVElNRSA9IDExLAotKwkvKioKLSsJICogaW5wdXQgZm9yIGEgdGVy bWluYWwKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfUFVSUE9TRV9URVJNSU5B TCA9IDEyLAotK307Ci0rI2VuZGlmIC8qIFpXUF9URVhUX0lOUFVUX1YxX0NPTlRFTlRfUFVSUE9T RV9FTlVNICovCi0rCi0rI2lmbmRlZiBaV1BfVEVYVF9JTlBVVF9WMV9QUkVFRElUX1NUWUxFX0VO VU0KLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX1BSRUVESVRfU1RZTEVfRU5VTQotK2VudW0g endwX3RleHRfaW5wdXRfdjFfcHJlZWRpdF9zdHlsZSB7Ci0rCS8qKgotKwkgKiBkZWZhdWx0IHN0 eWxlIGZvciBjb21wb3NpbmcgdGV4dAotKwkgKi8KLSsJWldQX1RFWFRfSU5QVVRfVjFfUFJFRURJ VF9TVFlMRV9ERUZBVUxUID0gMCwKLSsJLyoqCi0rCSAqIHN0eWxlIHNob3VsZCBiZSB0aGUgc2Ft ZSBhcyBpbiBub24tY29tcG9zaW5nIHRleHQKLSsJICovCi0rCVpXUF9URVhUX0lOUFVUX1YxX1BS RUVESVRfU1RZTEVfTk9ORSA9IDEsCi0rCVpXUF9URVhUX0lOUFVUX1YxX1BSRUVESVRfU1RZTEVf QUNUSVZFID0gMiwKLSsJWldQX1RFWFRfSU5QVVRfVjFfUFJFRURJVF9TVFlMRV9JTkFDVElWRSA9 IDMsCi0rCVpXUF9URVhUX0lOUFVUX1YxX1BSRUVESVRfU1RZTEVfSElHSExJR0hUID0gNCwKLSsJ WldQX1RFWFRfSU5QVVRfVjFfUFJFRURJVF9TVFlMRV9VTkRFUkxJTkUgPSA1LAotKwlaV1BfVEVY VF9JTlBVVF9WMV9QUkVFRElUX1NUWUxFX1NFTEVDVElPTiA9IDYsCi0rCVpXUF9URVhUX0lOUFVU X1YxX1BSRUVESVRfU1RZTEVfSU5DT1JSRUNUID0gNywKLSt9OwotKyNlbmRpZiAvKiBaV1BfVEVY VF9JTlBVVF9WMV9QUkVFRElUX1NUWUxFX0VOVU0gKi8KLSsKLSsjaWZuZGVmIFpXUF9URVhUX0lO UFVUX1YxX1RFWFRfRElSRUNUSU9OX0VOVU0KLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX1RF WFRfRElSRUNUSU9OX0VOVU0KLStlbnVtIHp3cF90ZXh0X2lucHV0X3YxX3RleHRfZGlyZWN0aW9u IHsKLSsJLyoqCi0rCSAqIGF1dG9tYXRpYyB0ZXh0IGRpcmVjdGlvbiBiYXNlZCBvbiB0ZXh0IGFu ZCBsYW5ndWFnZQotKwkgKi8KLSsJWldQX1RFWFRfSU5QVVRfVjFfVEVYVF9ESVJFQ1RJT05fQVVU TyA9IDAsCi0rCS8qKgotKwkgKiBsZWZ0LXRvLXJpZ2h0Ci0rCSAqLwotKwlaV1BfVEVYVF9JTlBV VF9WMV9URVhUX0RJUkVDVElPTl9MVFIgPSAxLAotKwkvKioKLSsJICogcmlnaHQtdG8tbGVmdAot KwkgKi8KLSsJWldQX1RFWFRfSU5QVVRfVjFfVEVYVF9ESVJFQ1RJT05fUlRMID0gMiwKLSt9Owot KyNlbmRpZiAvKiBaV1BfVEVYVF9JTlBVVF9WMV9URVhUX0RJUkVDVElPTl9FTlVNICovCi0rCi0r LyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEKLSsgKiBAc3RydWN0IHp3 cF90ZXh0X2lucHV0X3YxX2xpc3RlbmVyCi0rICovCi0rc3RydWN0IHp3cF90ZXh0X2lucHV0X3Yx X2xpc3RlbmVyIHsKLSsJLyoqCi0rCSAqIGVudGVyIGV2ZW50Ci0rCSAqCi0rCSAqIE5vdGlmeSB0 aGUgdGV4dF9pbnB1dCBvYmplY3Qgd2hlbiBpdCByZWNlaXZlZCBmb2N1cy4gVHlwaWNhbGx5Ci0r CSAqIGluIHJlc3BvbnNlIHRvIGFuIGFjdGl2YXRlIHJlcXVlc3QuCi0rCSAqLwotKwl2b2lkICgq ZW50ZXIpKHZvaWQgKmRhdGEsCi0rCQkgICAgICBzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjEgKnp3 cF90ZXh0X2lucHV0X3YxLAotKwkJICAgICAgc3RydWN0IHdsX3N1cmZhY2UgKnN1cmZhY2UpOwot KwkvKioKLSsJICogbGVhdmUgZXZlbnQKLSsJICoKLSsJICogTm90aWZ5IHRoZSB0ZXh0X2lucHV0 IG9iamVjdCB3aGVuIGl0IGxvc3QgZm9jdXMuIEVpdGhlciBpbgotKwkgKiByZXNwb25zZSB0byBh IGRlYWN0aXZhdGUgcmVxdWVzdCBvciB3aGVuIHRoZSBhc3NpZ25lZCBzdXJmYWNlCi0rCSAqIGxv c3QgZm9jdXMgb3Igd2FzIGRlc3Ryb3llZC4KLSsJICovCi0rCXZvaWQgKCpsZWF2ZSkodm9pZCAq ZGF0YSwKLSsJCSAgICAgIHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAqendwX3RleHRfaW5wdXRf djEpOwotKwkvKioKLSsJICogbW9kaWZpZXJzIG1hcAotKwkgKgotKwkgKiBUcmFuc2ZlciBhbiBh cnJheSBvZiAwLXRlcm1pbmF0ZWQgbW9kaWZpZXIgbmFtZXMuIFRoZSBwb3NpdGlvbgotKwkgKiBp biB0aGUgYXJyYXkgaXMgdGhlIGluZGV4IG9mIHRoZSBtb2RpZmllciBhcyB1c2VkIGluIHRoZQot KwkgKiBtb2RpZmllcnMgYml0bWFzayBpbiB0aGUga2V5c3ltIGV2ZW50LgotKwkgKi8KLSsJdm9p ZCAoKm1vZGlmaWVyc19tYXApKHZvaWQgKmRhdGEsCi0rCQkJICAgICAgc3RydWN0IHp3cF90ZXh0 X2lucHV0X3YxICp6d3BfdGV4dF9pbnB1dF92MSwKLSsJCQkgICAgICBzdHJ1Y3Qgd2xfYXJyYXkg Km1hcCk7Ci0rCS8qKgotKwkgKiBzdGF0ZSBvZiB0aGUgaW5wdXQgcGFuZWwKLSsJICoKLSsJICog Tm90aWZ5IHdoZW4gdGhlIHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIGlucHV0IHBhbmVsIGNoYW5n ZWQuCi0rCSAqLwotKwl2b2lkICgqaW5wdXRfcGFuZWxfc3RhdGUpKHZvaWQgKmRhdGEsCi0rCQkJ CSAgc3RydWN0IHp3cF90ZXh0X2lucHV0X3YxICp6d3BfdGV4dF9pbnB1dF92MSwKLSsJCQkJICB1 aW50MzJfdCBzdGF0ZSk7Ci0rCS8qKgotKwkgKiBwcmUtZWRpdAotKwkgKgotKwkgKiBOb3RpZnkg d2hlbiBhIG5ldyBjb21wb3NpbmcgdGV4dCAocHJlLWVkaXQpIHNob3VsZCBiZSBzZXQKLSsJICog YXJvdW5kIHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbi4gQW55IHByZXZpb3VzbHkgc2V0IGNv bXBvc2luZwotKwkgKiB0ZXh0IHNob3VsZCBiZSByZW1vdmVkLgotKwkgKgotKwkgKiBUaGUgY29t bWl0IHRleHQgY2FuIGJlIHVzZWQgdG8gcmVwbGFjZSB0aGUgcHJlZWRpdCB0ZXh0IG9uIHJlc2V0 Ci0rCSAqIChmb3IgZXhhbXBsZSBvbiB1bmZvY3VzKS4KLSsJICoKLSsJICogVGhlIHRleHQgaW5w dXQgc2hvdWxkIGFsc28gaGFuZGxlIGFsbCBwcmVlZGl0X3N0eWxlIGFuZAotKwkgKiBwcmVlZGl0 X2N1cnNvciBldmVudHMgb2NjdXJyaW5nIGRpcmVjdGx5IGJlZm9yZSBwcmVlZGl0X3N0cmluZy4K LSsJICogQHBhcmFtIHNlcmlhbCBzZXJpYWwgb2YgdGhlIGxhdGVzdCBrbm93biB0ZXh0IGlucHV0 IHN0YXRlCi0rCSAqLwotKwl2b2lkICgqcHJlZWRpdF9zdHJpbmcpKHZvaWQgKmRhdGEsCi0rCQkJ ICAgICAgIHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAqendwX3RleHRfaW5wdXRfdjEsCi0rCQkJ ICAgICAgIHVpbnQzMl90IHNlcmlhbCwKLSsJCQkgICAgICAgY29uc3QgY2hhciAqdGV4dCwKLSsJ CQkgICAgICAgY29uc3QgY2hhciAqY29tbWl0KTsKLSsJLyoqCi0rCSAqIHByZS1lZGl0IHN0eWxp bmcKLSsJICoKLSsJICogU2V0cyBzdHlsaW5nIGluZm9ybWF0aW9uIG9uIGNvbXBvc2luZyB0ZXh0 LiBUaGUgc3R5bGUgaXMKLSsJICogYXBwbGllZCBmb3IgbGVuZ3RoIGJ5dGVzIGZyb20gaW5kZXgg cmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZyBvZgotKwkgKiB0aGUgY29tcG9zaW5nIHRleHQgKGFz IGJ5dGUgb2Zmc2V0KS4gTXVsdGlwbGUgc3R5bGVzIGNhbiBiZQotKwkgKiBhcHBsaWVkIHRvIGEg Y29tcG9zaW5nIHRleHQgYnkgc2VuZGluZyBtdWx0aXBsZSBwcmVlZGl0X3N0eWxpbmcKLSsJICog ZXZlbnRzLgotKwkgKgotKwkgKiBUaGlzIGV2ZW50IGlzIGhhbmRsZWQgYXMgcGFydCBvZiBhIGZv bGxvd2luZyBwcmVlZGl0X3N0cmluZwotKwkgKiBldmVudC4KLSsJICovCi0rCXZvaWQgKCpwcmVl ZGl0X3N0eWxpbmcpKHZvaWQgKmRhdGEsCi0rCQkJCXN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAq endwX3RleHRfaW5wdXRfdjEsCi0rCQkJCXVpbnQzMl90IGluZGV4LAotKwkJCQl1aW50MzJfdCBs ZW5ndGgsCi0rCQkJCXVpbnQzMl90IHN0eWxlKTsKLSsJLyoqCi0rCSAqIHByZS1lZGl0IGN1cnNv cgotKwkgKgotKwkgKiBTZXRzIHRoZSBjdXJzb3IgcG9zaXRpb24gaW5zaWRlIHRoZSBjb21wb3Np bmcgdGV4dCAoYXMgYnl0ZQotKwkgKiBvZmZzZXQpIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0 aGUgY29tcG9zaW5nIHRleHQuIFdoZW4gaW5kZXgKLSsJICogaXMgYSBuZWdhdGl2ZSBudW1iZXIg bm8gY3Vyc29yIGlzIHNob3duLgotKwkgKgotKwkgKiBUaGlzIGV2ZW50IGlzIGhhbmRsZWQgYXMg cGFydCBvZiBhIGZvbGxvd2luZyBwcmVlZGl0X3N0cmluZwotKwkgKiBldmVudC4KLSsJICovCi0r CXZvaWQgKCpwcmVlZGl0X2N1cnNvcikodm9pZCAqZGF0YSwKLSsJCQkgICAgICAgc3RydWN0IHp3 cF90ZXh0X2lucHV0X3YxICp6d3BfdGV4dF9pbnB1dF92MSwKLSsJCQkgICAgICAgaW50MzJfdCBp bmRleCk7Ci0rCS8qKgotKwkgKiBjb21taXQKLSsJICoKLSsJICogTm90aWZ5IHdoZW4gdGV4dCBz aG91bGQgYmUgaW5zZXJ0ZWQgaW50byB0aGUgZWRpdG9yIHdpZGdldC4KLSsJICogVGhlIHRleHQg dG8gY29tbWl0IGNvdWxkIGJlIGVpdGhlciBqdXN0IGEgc2luZ2xlIGNoYXJhY3RlciBhZnRlcgot KwkgKiBhIGtleSBwcmVzcyBvciB0aGUgcmVzdWx0IG9mIHNvbWUgY29tcG9zaW5nIChwcmUtZWRp dCkuIEl0IGNvdWxkCi0rCSAqIGFsc28gYmUgYW4gZW1wdHkgdGV4dCB3aGVuIHNvbWUgdGV4dCBz aG91bGQgYmUgcmVtb3ZlZCAoc2VlCi0rCSAqIGRlbGV0ZV9zdXJyb3VuZGluZ190ZXh0KSBvciB3 aGVuIHRoZSBpbnB1dCBjdXJzb3Igc2hvdWxkIGJlCi0rCSAqIG1vdmVkIChzZWUgY3Vyc29yX3Bv c2l0aW9uKS4KLSsJICoKLSsJICogQW55IHByZXZpb3VzbHkgc2V0IGNvbXBvc2luZyB0ZXh0IHNo b3VsZCBiZSByZW1vdmVkLgotKwkgKiBAcGFyYW0gc2VyaWFsIHNlcmlhbCBvZiB0aGUgbGF0ZXN0 IGtub3duIHRleHQgaW5wdXQgc3RhdGUKLSsJICovCi0rCXZvaWQgKCpjb21taXRfc3RyaW5nKSh2 b2lkICpkYXRhLAotKwkJCSAgICAgIHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAqendwX3RleHRf aW5wdXRfdjEsCi0rCQkJICAgICAgdWludDMyX3Qgc2VyaWFsLAotKwkJCSAgICAgIGNvbnN0IGNo YXIgKnRleHQpOwotKwkvKioKLSsJICogc2V0IGN1cnNvciB0byBuZXcgcG9zaXRpb24KLSsJICoK LSsJICogTm90aWZ5IHdoZW4gdGhlIGN1cnNvciBvciBhbmNob3IgcG9zaXRpb24gc2hvdWxkIGJl IG1vZGlmaWVkLgotKwkgKgotKwkgKiBUaGlzIGV2ZW50IHNob3VsZCBiZSBoYW5kbGVkIGFzIHBh cnQgb2YgYSBmb2xsb3dpbmcKLSsJICogY29tbWl0X3N0cmluZyBldmVudC4KLSsJICovCi0rCXZv aWQgKCpjdXJzb3JfcG9zaXRpb24pKHZvaWQgKmRhdGEsCi0rCQkJCXN0cnVjdCB6d3BfdGV4dF9p bnB1dF92MSAqendwX3RleHRfaW5wdXRfdjEsCi0rCQkJCWludDMyX3QgaW5kZXgsCi0rCQkJCWlu dDMyX3QgYW5jaG9yKTsKLSsJLyoqCi0rCSAqIGRlbGV0ZSBzdXJyb3VuZGluZyB0ZXh0Ci0rCSAq Ci0rCSAqIE5vdGlmeSB3aGVuIHRoZSB0ZXh0IGFyb3VuZCB0aGUgY3VycmVudCBjdXJzb3IgcG9z aXRpb24gc2hvdWxkCi0rCSAqIGJlIGRlbGV0ZWQuCi0rCSAqCi0rCSAqIEluZGV4IGlzIHJlbGF0 aXZlIHRvIHRoZSBjdXJyZW50IGN1cnNvciAoaW4gYnl0ZXMpLiBMZW5ndGggaXMKLSsJICogdGhl IGxlbmd0aCBvZiBkZWxldGVkIHRleHQgKGluIGJ5dGVzKS4KLSsJICoKLSsJICogVGhpcyBldmVu dCBzaG91bGQgYmUgaGFuZGxlZCBhcyBwYXJ0IG9mIGEgZm9sbG93aW5nCi0rCSAqIGNvbW1pdF9z dHJpbmcgZXZlbnQuCi0rCSAqLwotKwl2b2lkICgqZGVsZXRlX3N1cnJvdW5kaW5nX3RleHQpKHZv aWQgKmRhdGEsCi0rCQkJCQlzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjEgKnp3cF90ZXh0X2lucHV0 X3YxLAotKwkJCQkJaW50MzJfdCBpbmRleCwKLSsJCQkJCXVpbnQzMl90IGxlbmd0aCk7Ci0rCS8q KgotKwkgKiBrZXlzeW0KLSsJICoKLSsJICogTm90aWZ5IHdoZW4gYSBrZXkgZXZlbnQgd2FzIHNl bnQuIEtleSBldmVudHMgc2hvdWxkIG5vdCBiZQotKwkgKiB1c2VkIGZvciBub3JtYWwgdGV4dCBp bnB1dCBvcGVyYXRpb25zLCB3aGljaCBzaG91bGQgYmUgZG9uZSB3aXRoCi0rCSAqIGNvbW1pdF9z dHJpbmcsIGRlbGV0ZV9zdXJyb3VuZGluZ190ZXh0LCBldGMuIFRoZSBrZXkgZXZlbnQKLSsJICog Zm9sbG93cyB0aGUgd2xfa2V5Ym9hcmQga2V5IGV2ZW50IGNvbnZlbnRpb24uIFN5bSBpcyBhbiBY S0IKLSsJICoga2V5c3ltLCBzdGF0ZSBhIHdsX2tleWJvYXJkIGtleV9zdGF0ZS4gTW9kaWZpZXJz IGFyZSBhIG1hc2sgZm9yCi0rCSAqIGVmZmVjdGl2ZSBtb2RpZmllcnMgKHdoZXJlIHRoZSBtb2Rp ZmllciBpbmRpY2VzIGFyZSBzZXQgYnkgdGhlCi0rCSAqIG1vZGlmaWVyc19tYXAgZXZlbnQpCi0r CSAqIEBwYXJhbSBzZXJpYWwgc2VyaWFsIG9mIHRoZSBsYXRlc3Qga25vd24gdGV4dCBpbnB1dCBz dGF0ZQotKwkgKi8KLSsJdm9pZCAoKmtleXN5bSkodm9pZCAqZGF0YSwKLSsJCSAgICAgICBzdHJ1 Y3QgendwX3RleHRfaW5wdXRfdjEgKnp3cF90ZXh0X2lucHV0X3YxLAotKwkJICAgICAgIHVpbnQz Ml90IHNlcmlhbCwKLSsJCSAgICAgICB1aW50MzJfdCB0aW1lLAotKwkJICAgICAgIHVpbnQzMl90 IHN5bSwKLSsJCSAgICAgICB1aW50MzJfdCBzdGF0ZSwKLSsJCSAgICAgICB1aW50MzJfdCBtb2Rp ZmllcnMpOwotKwkvKioKLSsJICogbGFuZ3VhZ2UKLSsJICoKLSsJICogU2V0cyB0aGUgbGFuZ3Vh Z2Ugb2YgdGhlIGlucHV0IHRleHQuIFRoZSAibGFuZ3VhZ2UiIGFyZ3VtZW50Ci0rCSAqIGlzIGFu IFJGQy0zMDY2IGZvcm1hdCBsYW5ndWFnZSB0YWcuCi0rCSAqIEBwYXJhbSBzZXJpYWwgc2VyaWFs IG9mIHRoZSBsYXRlc3Qga25vd24gdGV4dCBpbnB1dCBzdGF0ZQotKwkgKi8KLSsJdm9pZCAoKmxh bmd1YWdlKSh2b2lkICpkYXRhLAotKwkJCSBzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjEgKnp3cF90 ZXh0X2lucHV0X3YxLAotKwkJCSB1aW50MzJfdCBzZXJpYWwsCi0rCQkJIGNvbnN0IGNoYXIgKmxh bmd1YWdlKTsKLSsJLyoqCi0rCSAqIHRleHQgZGlyZWN0aW9uCi0rCSAqCi0rCSAqIFNldHMgdGhl IHRleHQgZGlyZWN0aW9uIG9mIGlucHV0IHRleHQuCi0rCSAqCi0rCSAqIEl0IGlzIG1haW5seSBu ZWVkZWQgZm9yIHNob3dpbmcgYW4gaW5wdXQgY3Vyc29yIG9uIHRoZSBjb3JyZWN0Ci0rCSAqIHNp ZGUgb2YgdGhlIGVkaXRvciB3aGVuIHRoZXJlIGlzIG5vIGlucHV0IGRvbmUgeWV0IGFuZCBtYWtp bmcKLSsJICogc3VyZSBuZXV0cmFsIGRpcmVjdGlvbiB0ZXh0IGlzIGxhaWQgb3V0IHByb3Blcmx5 LgotKwkgKiBAcGFyYW0gc2VyaWFsIHNlcmlhbCBvZiB0aGUgbGF0ZXN0IGtub3duIHRleHQgaW5w dXQgc3RhdGUKLSsJICovCi0rCXZvaWQgKCp0ZXh0X2RpcmVjdGlvbikodm9pZCAqZGF0YSwKLSsJ CQkgICAgICAgc3RydWN0IHp3cF90ZXh0X2lucHV0X3YxICp6d3BfdGV4dF9pbnB1dF92MSwKLSsJ CQkgICAgICAgdWludDMyX3Qgc2VyaWFsLAotKwkJCSAgICAgICB1aW50MzJfdCBkaXJlY3Rpb24p OwotK307Ci0rCi0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEKLSsg Ki8KLStzdGF0aWMgaW5saW5lIGludAotK3p3cF90ZXh0X2lucHV0X3YxX2FkZF9saXN0ZW5lcihz dHJ1Y3QgendwX3RleHRfaW5wdXRfdjEgKnp3cF90ZXh0X2lucHV0X3YxLAotKwkJCSAgICAgICBj b25zdCBzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjFfbGlzdGVuZXIgKmxpc3RlbmVyLCB2b2lkICpk YXRhKQotK3sKLSsJcmV0dXJuIHdsX3Byb3h5X2FkZF9saXN0ZW5lcigoc3RydWN0IHdsX3Byb3h5 ICopIHp3cF90ZXh0X2lucHV0X3YxLAotKwkJCQkgICAgICh2b2lkICgqKikodm9pZCkpIGxpc3Rl bmVyLCBkYXRhKTsKLSt9Ci0rCi0rI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9BQ1RJVkFURSAw Ci0rI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9ERUFDVElWQVRFIDEKLSsjZGVmaW5lIFpXUF9U RVhUX0lOUFVUX1YxX1NIT1dfSU5QVVRfUEFORUwgMgotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRf VjFfSElERV9JTlBVVF9QQU5FTCAzCi0rI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9SRVNFVCA0 Ci0rI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9TRVRfU1VSUk9VTkRJTkdfVEVYVCA1Ci0rI2Rl ZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9TRVRfQ09OVEVOVF9UWVBFIDYKLSsjZGVmaW5lIFpXUF9U RVhUX0lOUFVUX1YxX1NFVF9DVVJTT1JfUkVDVEFOR0xFIDcKLSsjZGVmaW5lIFpXUF9URVhUX0lO UFVUX1YxX1NFVF9QUkVGRVJSRURfTEFOR1VBR0UgOAotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRf VjFfQ09NTUlUX1NUQVRFIDkKLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX0lOVk9LRV9BQ1RJ T04gMTAKLSsKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MQotKyAq LwotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfRU5URVJfU0lOQ0VfVkVSU0lPTiAxCi0rLyoq Ci0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEKLSsgKi8KLSsjZGVmaW5lIFpX UF9URVhUX0lOUFVUX1YxX0xFQVZFX1NJTkNFX1ZFUlNJT04gMQotKy8qKgotKyAqIEBpbmdyb3Vw IGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCi0rICovCi0rI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9W MV9NT0RJRklFUlNfTUFQX1NJTkNFX1ZFUlNJT04gMQotKy8qKgotKyAqIEBpbmdyb3VwIGlmYWNl X3p3cF90ZXh0X2lucHV0X3YxCi0rICovCi0rI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9JTlBV VF9QQU5FTF9TVEFURV9TSU5DRV9WRVJTSU9OIDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96 d3BfdGV4dF9pbnB1dF92MQotKyAqLwotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfUFJFRURJ VF9TVFJJTkdfU0lOQ0VfVkVSU0lPTiAxCi0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3Rl eHRfaW5wdXRfdjEKLSsgKi8KLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX1BSRUVESVRfU1RZ TElOR19TSU5DRV9WRVJTSU9OIDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9p bnB1dF92MQotKyAqLwotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfUFJFRURJVF9DVVJTT1Jf U0lOQ0VfVkVSU0lPTiAxCi0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRf djEKLSsgKi8KLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX0NPTU1JVF9TVFJJTkdfU0lOQ0Vf VkVSU0lPTiAxCi0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEKLSsg Ki8KLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX0NVUlNPUl9QT1NJVElPTl9TSU5DRV9WRVJT SU9OIDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MQotKyAqLwot KyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfREVMRVRFX1NVUlJPVU5ESU5HX1RFWFRfU0lOQ0Vf VkVSU0lPTiAxCi0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEKLSsg Ki8KLSsjZGVmaW5lIFpXUF9URVhUX0lOUFVUX1YxX0tFWVNZTV9TSU5DRV9WRVJTSU9OIDEKLSsv KioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MQotKyAqLwotKyNkZWZpbmUg WldQX1RFWFRfSU5QVVRfVjFfTEFOR1VBR0VfU0lOQ0VfVkVSU0lPTiAxCi0rLyoqCi0rICogQGlu Z3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEKLSsgKi8KLSsjZGVmaW5lIFpXUF9URVhUX0lO UFVUX1YxX1RFWFRfRElSRUNUSU9OX1NJTkNFX1ZFUlNJT04gMQotKwotKy8qKgotKyAqIEBpbmdy b3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCi0rICovCi0rI2RlZmluZSBaV1BfVEVYVF9JTlBV VF9WMV9BQ1RJVkFURV9TSU5DRV9WRVJTSU9OIDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96 d3BfdGV4dF9pbnB1dF92MQotKyAqLwotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfREVBQ1RJ VkFURV9TSU5DRV9WRVJTSU9OIDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9p bnB1dF92MQotKyAqLwotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfU0hPV19JTlBVVF9QQU5F TF9TSU5DRV9WRVJTSU9OIDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1 dF92MQotKyAqLwotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfSElERV9JTlBVVF9QQU5FTF9T SU5DRV9WRVJTSU9OIDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92 MQotKyAqLwotKyNkZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfUkVTRVRfU0lOQ0VfVkVSU0lPTiAx Ci0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEKLSsgKi8KLSsjZGVm aW5lIFpXUF9URVhUX0lOUFVUX1YxX1NFVF9TVVJST1VORElOR19URVhUX1NJTkNFX1ZFUlNJT04g MQotKy8qKgotKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCi0rICovCi0rI2Rl ZmluZSBaV1BfVEVYVF9JTlBVVF9WMV9TRVRfQ09OVEVOVF9UWVBFX1NJTkNFX1ZFUlNJT04gMQot Ky8qKgotKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCi0rICovCi0rI2RlZmlu ZSBaV1BfVEVYVF9JTlBVVF9WMV9TRVRfQ1VSU09SX1JFQ1RBTkdMRV9TSU5DRV9WRVJTSU9OIDEK LSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MQotKyAqLwotKyNkZWZp bmUgWldQX1RFWFRfSU5QVVRfVjFfU0VUX1BSRUZFUlJFRF9MQU5HVUFHRV9TSU5DRV9WRVJTSU9O IDEKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MQotKyAqLwotKyNk ZWZpbmUgWldQX1RFWFRfSU5QVVRfVjFfQ09NTUlUX1NUQVRFX1NJTkNFX1ZFUlNJT04gMQotKy8q KgotKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCi0rICovCi0rI2RlZmluZSBa V1BfVEVYVF9JTlBVVF9WMV9JTlZPS0VfQUNUSU9OX1NJTkNFX1ZFUlNJT04gMQotKwotKy8qKiBA aW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92MSAqLwotK3N0YXRpYyBpbmxpbmUgdm9pZAot K3p3cF90ZXh0X2lucHV0X3YxX3NldF91c2VyX2RhdGEoc3RydWN0IHp3cF90ZXh0X2lucHV0X3Yx ICp6d3BfdGV4dF9pbnB1dF92MSwgdm9pZCAqdXNlcl9kYXRhKQotK3sKLSsJd2xfcHJveHlfc2V0 X3VzZXJfZGF0YSgoc3RydWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YxLCB1c2VyX2Rh dGEpOwotK30KLSsKLSsvKiogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEgKi8KLStz dGF0aWMgaW5saW5lIHZvaWQgKgotK3p3cF90ZXh0X2lucHV0X3YxX2dldF91c2VyX2RhdGEoc3Ry dWN0IHp3cF90ZXh0X2lucHV0X3YxICp6d3BfdGV4dF9pbnB1dF92MSkKLSt7Ci0rCXJldHVybiB3 bF9wcm94eV9nZXRfdXNlcl9kYXRhKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRf djEpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIHVpbnQzMl90Ci0rendwX3RleHRfaW5wdXRfdjFf Z2V0X3ZlcnNpb24oc3RydWN0IHp3cF90ZXh0X2lucHV0X3YxICp6d3BfdGV4dF9pbnB1dF92MSkK LSt7Ci0rCXJldHVybiB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3Byb3h5ICopIHp3 cF90ZXh0X2lucHV0X3YxKTsKLSt9Ci0rCi0rLyoqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lu cHV0X3YxICovCi0rc3RhdGljIGlubGluZSB2b2lkCi0rendwX3RleHRfaW5wdXRfdjFfZGVzdHJv eShzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjEgKnp3cF90ZXh0X2lucHV0X3YxKQotK3sKLSsJd2xf cHJveHlfZGVzdHJveSgoc3RydWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YxKTsKLSt9 Ci0rCi0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRfaW5wdXRfdjEKLSsgKgotKyAq IFJlcXVlc3RzIHRoZSB0ZXh0X2lucHV0IG9iamVjdCB0byBiZSBhY3RpdmF0ZWQgKHR5cGljYWxs eSB3aGVuIHRoZQotKyAqIHRleHQgZW50cnkgZ2V0cyBmb2N1cykuCi0rICoKLSsgKiBUaGUgc2Vh dCBhcmd1bWVudCBpcyBhIHdsX3NlYXQgd2hpY2ggbWFpbnRhaW5zIHRoZSBmb2N1cyBmb3IgdGhp cwotKyAqIGFjdGl2YXRpb24uIFRoZSBzdXJmYWNlIGFyZ3VtZW50IGlzIGEgd2xfc3VyZmFjZSBh c3NpZ25lZCB0byB0aGUKLSsgKiB0ZXh0X2lucHV0IG9iamVjdCBhbmQgdHJhY2tlZCBmb3IgZm9j dXMgbG9zdC4gVGhlIGVudGVyIGV2ZW50Ci0rICogaXMgZW1pdHRlZCBvbiBzdWNjZXNzZnVsIGFj dGl2YXRpb24uCi0rICovCi0rc3RhdGljIGlubGluZSB2b2lkCi0rendwX3RleHRfaW5wdXRfdjFf YWN0aXZhdGUoc3RydWN0IHp3cF90ZXh0X2lucHV0X3YxICp6d3BfdGV4dF9pbnB1dF92MSwgc3Ry dWN0IHdsX3NlYXQgKnNlYXQsIHN0cnVjdCB3bF9zdXJmYWNlICpzdXJmYWNlKQotK3sKLSsJd2xf cHJveHlfbWFyc2hhbF9mbGFncygoc3RydWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3Yx LAotKwkJCSBaV1BfVEVYVF9JTlBVVF9WMV9BQ1RJVkFURSwgTlVMTCwgd2xfcHJveHlfZ2V0X3Zl cnNpb24oKHN0cnVjdCB3bF9wcm94eSAqKSB6d3BfdGV4dF9pbnB1dF92MSksIDAsIHNlYXQsIHN1 cmZhY2UpOwotK30KLSsKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF92 MQotKyAqCi0rICogUmVxdWVzdHMgdGhlIHRleHRfaW5wdXQgb2JqZWN0IHRvIGJlIGRlYWN0aXZh dGVkICh0eXBpY2FsbHkgd2hlbiB0aGUKLSsgKiB0ZXh0IGVudHJ5IGxvc3QgZm9jdXMpLiBUaGUg c2VhdCBhcmd1bWVudCBpcyBhIHdsX3NlYXQgd2hpY2ggd2FzIHVzZWQKLSsgKiBmb3IgYWN0aXZh dGlvbi4KLSsgKi8KLStzdGF0aWMgaW5saW5lIHZvaWQKLSt6d3BfdGV4dF9pbnB1dF92MV9kZWFj dGl2YXRlKHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAqendwX3RleHRfaW5wdXRfdjEsIHN0cnVj dCB3bF9zZWF0ICpzZWF0KQotK3sKLSsJd2xfcHJveHlfbWFyc2hhbF9mbGFncygoc3RydWN0IHds X3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YxLAotKwkJCSBaV1BfVEVYVF9JTlBVVF9WMV9ERUFD VElWQVRFLCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3Byb3h5ICopIHp3 cF90ZXh0X2lucHV0X3YxKSwgMCwgc2VhdCk7Ci0rfQotKwotKy8qKgotKyAqIEBpbmdyb3VwIGlm YWNlX3p3cF90ZXh0X2lucHV0X3YxCi0rICoKLSsgKiBSZXF1ZXN0cyBpbnB1dCBwYW5lbHMgKHZp cnR1YWwga2V5Ym9hcmQpIHRvIHNob3cuCi0rICovCi0rc3RhdGljIGlubGluZSB2b2lkCi0rendw X3RleHRfaW5wdXRfdjFfc2hvd19pbnB1dF9wYW5lbChzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjEg Knp3cF90ZXh0X2lucHV0X3YxKQotK3sKLSsJd2xfcHJveHlfbWFyc2hhbF9mbGFncygoc3RydWN0 IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YxLAotKwkJCSBaV1BfVEVYVF9JTlBVVF9WMV9T SE9XX0lOUFVUX1BBTkVMLCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3By b3h5ICopIHp3cF90ZXh0X2lucHV0X3YxKSwgMCk7Ci0rfQotKwotKy8qKgotKyAqIEBpbmdyb3Vw IGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCi0rICoKLSsgKiBSZXF1ZXN0cyBpbnB1dCBwYW5lbHMg KHZpcnR1YWwga2V5Ym9hcmQpIHRvIGhpZGUuCi0rICovCi0rc3RhdGljIGlubGluZSB2b2lkCi0r endwX3RleHRfaW5wdXRfdjFfaGlkZV9pbnB1dF9wYW5lbChzdHJ1Y3QgendwX3RleHRfaW5wdXRf djEgKnp3cF90ZXh0X2lucHV0X3YxKQotK3sKLSsJd2xfcHJveHlfbWFyc2hhbF9mbGFncygoc3Ry dWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YxLAotKwkJCSBaV1BfVEVYVF9JTlBVVF9W MV9ISURFX0lOUFVUX1BBTkVMLCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHds X3Byb3h5ICopIHp3cF90ZXh0X2lucHV0X3YxKSwgMCk7Ci0rfQotKwotKy8qKgotKyAqIEBpbmdy b3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCi0rICoKLSsgKiBTaG91bGQgYmUgY2FsbGVkIGJ5 IGFuIGVkaXRvciB3aWRnZXQgd2hlbiB0aGUgaW5wdXQgc3RhdGUgc2hvdWxkIGJlCi0rICogcmVz ZXQsIGZvciBleGFtcGxlIGFmdGVyIHRoZSB0ZXh0IHdhcyBjaGFuZ2VkIG91dHNpZGUgb2YgdGhl IG5vcm1hbAotKyAqIGlucHV0IG1ldGhvZCBmbG93LgotKyAqLwotK3N0YXRpYyBpbmxpbmUgdm9p ZAotK3p3cF90ZXh0X2lucHV0X3YxX3Jlc2V0KHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAqendw X3RleHRfaW5wdXRfdjEpCi0rewotKwl3bF9wcm94eV9tYXJzaGFsX2ZsYWdzKChzdHJ1Y3Qgd2xf cHJveHkgKikgendwX3RleHRfaW5wdXRfdjEsCi0rCQkJIFpXUF9URVhUX0lOUFVUX1YxX1JFU0VU LCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3Byb3h5ICopIHp3cF90ZXh0 X2lucHV0X3YxKSwgMCk7Ci0rfQotKwotKy8qKgotKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0 X2lucHV0X3YxCi0rICoKLSsgKiBTZXRzIHRoZSBwbGFpbiBzdXJyb3VuZGluZyB0ZXh0IGFyb3Vu ZCB0aGUgaW5wdXQgcG9zaXRpb24uIFRleHQgaXMKLSsgKiBVVEYtOCBlbmNvZGVkLiBDdXJzb3Ig aXMgdGhlIGJ5dGUgb2Zmc2V0IHdpdGhpbiB0aGUKLSsgKiBzdXJyb3VuZGluZyB0ZXh0LiBBbmNo b3IgaXMgdGhlIGJ5dGUgb2Zmc2V0IG9mIHRoZQotKyAqIHNlbGVjdGlvbiBhbmNob3Igd2l0aGlu IHRoZSBzdXJyb3VuZGluZyB0ZXh0LiBJZiB0aGVyZSBpcyBubyBzZWxlY3RlZAotKyAqIHRleHQg YW5jaG9yLCB0aGVuIGl0IGlzIHRoZSBzYW1lIGFzIGN1cnNvci4KLSsgKi8KLStzdGF0aWMgaW5s aW5lIHZvaWQKLSt6d3BfdGV4dF9pbnB1dF92MV9zZXRfc3Vycm91bmRpbmdfdGV4dChzdHJ1Y3Qg endwX3RleHRfaW5wdXRfdjEgKnp3cF90ZXh0X2lucHV0X3YxLCBjb25zdCBjaGFyICp0ZXh0LCB1 aW50MzJfdCBjdXJzb3IsIHVpbnQzMl90IGFuY2hvcikKLSt7Ci0rCXdsX3Byb3h5X21hcnNoYWxf ZmxhZ3MoKHN0cnVjdCB3bF9wcm94eSAqKSB6d3BfdGV4dF9pbnB1dF92MSwKLSsJCQkgWldQX1RF WFRfSU5QVVRfVjFfU0VUX1NVUlJPVU5ESU5HX1RFWFQsIE5VTEwsIHdsX3Byb3h5X2dldF92ZXJz aW9uKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfdjEpLCAwLCB0ZXh0LCBjdXJz b3IsIGFuY2hvcik7Ci0rfQotKwotKy8qKgotKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lu cHV0X3YxCi0rICoKLSsgKiBTZXRzIHRoZSBjb250ZW50IHB1cnBvc2UgYW5kIGNvbnRlbnQgaGlu dC4gV2hpbGUgdGhlIHB1cnBvc2UgaXMgdGhlCi0rICogYmFzaWMgcHVycG9zZSBvZiBhbiBpbnB1 dCBmaWVsZCwgdGhlIGhpbnQgZmxhZ3MgYWxsb3cgdG8gbW9kaWZ5IHNvbWUKLSsgKiBvZiB0aGUg YmVoYXZpb3IuCi0rICoKLSsgKiBXaGVuIG5vIGNvbnRlbnQgdHlwZSBpcyBleHBsaWNpdGx5IHNl dCwgYSBub3JtYWwgY29udGVudCBwdXJwb3NlIHdpdGgKLSsgKiBkZWZhdWx0IGhpbnRzIChhdXRv IGNvbXBsZXRpb24sIGF1dG8gY29ycmVjdGlvbiwgYXV0byBjYXBpdGFsaXphdGlvbikKLSsgKiBz aG91bGQgYmUgYXNzdW1lZC4KLSsgKi8KLStzdGF0aWMgaW5saW5lIHZvaWQKLSt6d3BfdGV4dF9p bnB1dF92MV9zZXRfY29udGVudF90eXBlKHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAqendwX3Rl eHRfaW5wdXRfdjEsIHVpbnQzMl90IGhpbnQsIHVpbnQzMl90IHB1cnBvc2UpCi0rewotKwl3bF9w cm94eV9tYXJzaGFsX2ZsYWdzKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfdjEs Ci0rCQkJIFpXUF9URVhUX0lOUFVUX1YxX1NFVF9DT05URU5UX1RZUEUsIE5VTEwsIHdsX3Byb3h5 X2dldF92ZXJzaW9uKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfdjEpLCAwLCBo aW50LCBwdXJwb3NlKTsKLSt9Ci0rCi0rLyoqCi0rICogQGluZ3JvdXAgaWZhY2VfendwX3RleHRf aW5wdXRfdjEKLSsgKi8KLStzdGF0aWMgaW5saW5lIHZvaWQKLSt6d3BfdGV4dF9pbnB1dF92MV9z ZXRfY3Vyc29yX3JlY3RhbmdsZShzdHJ1Y3QgendwX3RleHRfaW5wdXRfdjEgKnp3cF90ZXh0X2lu cHV0X3YxLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln aHQpCi0rewotKwl3bF9wcm94eV9tYXJzaGFsX2ZsYWdzKChzdHJ1Y3Qgd2xfcHJveHkgKikgendw X3RleHRfaW5wdXRfdjEsCi0rCQkJIFpXUF9URVhUX0lOUFVUX1YxX1NFVF9DVVJTT1JfUkVDVEFO R0xFLCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3Byb3h5ICopIHp3cF90 ZXh0X2lucHV0X3YxKSwgMCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0rfQotKwotKy8qKgotKyAq IEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X3YxCi0rICoKLSsgKiBTZXRzIGEgc3BlY2lm aWMgbGFuZ3VhZ2UuIFRoaXMgYWxsb3dzIGZvciBleGFtcGxlIGEgdmlydHVhbCBrZXlib2FyZCB0 bwotKyAqIHNob3cgYSBsYW5ndWFnZSBzcGVjaWZpYyBsYXlvdXQuIFRoZSAibGFuZ3VhZ2UiIGFy Z3VtZW50IGlzIGFuIFJGQy0zMDY2Ci0rICogZm9ybWF0IGxhbmd1YWdlIHRhZy4KLSsgKgotKyAq IEl0IGNvdWxkIGJlIHVzZWQgZm9yIGV4YW1wbGUgaW4gYSB3b3JkIHByb2Nlc3NvciB0byBpbmRp Y2F0ZSB0aGUKLSsgKiBsYW5ndWFnZSBvZiB0aGUgY3VycmVudGx5IGVkaXRlZCBkb2N1bWVudCBv ciBpbiBhbiBpbnN0YW50IG1lc3NhZ2UKLSsgKiBhcHBsaWNhdGlvbiB3aGljaCB0cmFja3MgbGFu Z3VhZ2VzIG9mIGNvbnRhY3RzLgotKyAqLwotK3N0YXRpYyBpbmxpbmUgdm9pZAotK3p3cF90ZXh0 X2lucHV0X3YxX3NldF9wcmVmZXJyZWRfbGFuZ3VhZ2Uoc3RydWN0IHp3cF90ZXh0X2lucHV0X3Yx ICp6d3BfdGV4dF9pbnB1dF92MSwgY29uc3QgY2hhciAqbGFuZ3VhZ2UpCi0rewotKwl3bF9wcm94 eV9tYXJzaGFsX2ZsYWdzKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfdjEsCi0r CQkJIFpXUF9URVhUX0lOUFVUX1YxX1NFVF9QUkVGRVJSRURfTEFOR1VBR0UsIE5VTEwsIHdsX3By b3h5X2dldF92ZXJzaW9uKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfdjEpLCAw LCBsYW5ndWFnZSk7Ci0rfQotKwotKy8qKgotKyAqIEBpbmdyb3VwIGlmYWNlX3p3cF90ZXh0X2lu cHV0X3YxCi0rICovCi0rc3RhdGljIGlubGluZSB2b2lkCi0rendwX3RleHRfaW5wdXRfdjFfY29t bWl0X3N0YXRlKHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAqendwX3RleHRfaW5wdXRfdjEsIHVp bnQzMl90IHNlcmlhbCkKLSt7Ci0rCXdsX3Byb3h5X21hcnNoYWxfZmxhZ3MoKHN0cnVjdCB3bF9w cm94eSAqKSB6d3BfdGV4dF9pbnB1dF92MSwKLSsJCQkgWldQX1RFWFRfSU5QVVRfVjFfQ09NTUlU X1NUQVRFLCBOVUxMLCB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3Byb3h5ICopIHp3 cF90ZXh0X2lucHV0X3YxKSwgMCwgc2VyaWFsKTsKLSt9Ci0rCi0rLyoqCi0rICogQGluZ3JvdXAg aWZhY2VfendwX3RleHRfaW5wdXRfdjEKLSsgKi8KLStzdGF0aWMgaW5saW5lIHZvaWQKLSt6d3Bf dGV4dF9pbnB1dF92MV9pbnZva2VfYWN0aW9uKHN0cnVjdCB6d3BfdGV4dF9pbnB1dF92MSAqendw X3RleHRfaW5wdXRfdjEsIHVpbnQzMl90IGJ1dHRvbiwgdWludDMyX3QgaW5kZXgpCi0rewotKwl3 bF9wcm94eV9tYXJzaGFsX2ZsYWdzKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRf djEsCi0rCQkJIFpXUF9URVhUX0lOUFVUX1YxX0lOVk9LRV9BQ1RJT04sIE5VTEwsIHdsX3Byb3h5 X2dldF92ZXJzaW9uKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfdjEpLCAwLCBi dXR0b24sIGluZGV4KTsKLSt9Ci0rCi0rI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9NQU5BR0VSX1Yx X0NSRUFURV9URVhUX0lOUFVUIDAKLSsKLSsKLSsvKioKLSsgKiBAaW5ncm91cCBpZmFjZV96d3Bf dGV4dF9pbnB1dF9tYW5hZ2VyX3YxCi0rICovCi0rI2RlZmluZSBaV1BfVEVYVF9JTlBVVF9NQU5B R0VSX1YxX0NSRUFURV9URVhUX0lOUFVUX1NJTkNFX1ZFUlNJT04gMQotKwotKy8qKiBAaW5ncm91 cCBpZmFjZV96d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxICovCi0rc3RhdGljIGlubGluZSB2b2lk Ci0rendwX3RleHRfaW5wdXRfbWFuYWdlcl92MV9zZXRfdXNlcl9kYXRhKHN0cnVjdCB6d3BfdGV4 dF9pbnB1dF9tYW5hZ2VyX3YxICp6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxLCB2b2lkICp1c2Vy X2RhdGEpCi0rewotKwl3bF9wcm94eV9zZXRfdXNlcl9kYXRhKChzdHJ1Y3Qgd2xfcHJveHkgKikg endwX3RleHRfaW5wdXRfbWFuYWdlcl92MSwgdXNlcl9kYXRhKTsKLSt9Ci0rCi0rLyoqIEBpbmdy b3VwIGlmYWNlX3p3cF90ZXh0X2lucHV0X21hbmFnZXJfdjEgKi8KLStzdGF0aWMgaW5saW5lIHZv aWQgKgotK3p3cF90ZXh0X2lucHV0X21hbmFnZXJfdjFfZ2V0X3VzZXJfZGF0YShzdHJ1Y3Qgendw X3RleHRfaW5wdXRfbWFuYWdlcl92MSAqendwX3RleHRfaW5wdXRfbWFuYWdlcl92MSkKLSt7Ci0r CXJldHVybiB3bF9wcm94eV9nZXRfdXNlcl9kYXRhKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3Rl eHRfaW5wdXRfbWFuYWdlcl92MSk7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdWludDMyX3QKLSt6 d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxX2dldF92ZXJzaW9uKHN0cnVjdCB6d3BfdGV4dF9pbnB1 dF9tYW5hZ2VyX3YxICp6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxKQotK3sKLSsJcmV0dXJuIHds X3Byb3h5X2dldF92ZXJzaW9uKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfbWFu YWdlcl92MSk7Ci0rfQotKwotKy8qKiBAaW5ncm91cCBpZmFjZV96d3BfdGV4dF9pbnB1dF9tYW5h Z2VyX3YxICovCi0rc3RhdGljIGlubGluZSB2b2lkCi0rendwX3RleHRfaW5wdXRfbWFuYWdlcl92 MV9kZXN0cm95KHN0cnVjdCB6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxICp6d3BfdGV4dF9pbnB1 dF9tYW5hZ2VyX3YxKQotK3sKLSsJd2xfcHJveHlfZGVzdHJveSgoc3RydWN0IHdsX3Byb3h5ICop IHp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjEpOwotK30KLSsKLSsvKioKLSsgKiBAaW5ncm91cCBp ZmFjZV96d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxCi0rICoKLSsgKiBDcmVhdGVzIGEgbmV3IHRl eHRfaW5wdXQgb2JqZWN0LgotKyAqLwotK3N0YXRpYyBpbmxpbmUgc3RydWN0IHp3cF90ZXh0X2lu cHV0X3YxICoKLSt6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxX2NyZWF0ZV90ZXh0X2lucHV0KHN0 cnVjdCB6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxICp6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3Yx KQotK3sKLSsJc3RydWN0IHdsX3Byb3h5ICppZDsKLSsKLSsJaWQgPSB3bF9wcm94eV9tYXJzaGFs X2ZsYWdzKChzdHJ1Y3Qgd2xfcHJveHkgKikgendwX3RleHRfaW5wdXRfbWFuYWdlcl92MSwKLSsJ CQkgWldQX1RFWFRfSU5QVVRfTUFOQUdFUl9WMV9DUkVBVEVfVEVYVF9JTlBVVCwgJnp3cF90ZXh0 X2lucHV0X3YxX2ludGVyZmFjZSwgd2xfcHJveHlfZ2V0X3ZlcnNpb24oKHN0cnVjdCB3bF9wcm94 eSAqKSB6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YxKSwgMCwgTlVMTCk7Ci0rCi0rCXJldHVybiAo c3RydWN0IHp3cF90ZXh0X2lucHV0X3YxICopIGlkOwotK30KLSsKLSsjaWZkZWYgIF9fY3BsdXNw bHVzCi0rfQotKyNlbmRpZgotKwotKyNlbmRpZgotZGlmZiAtLWdpdCBhL3NyYy9pYnVzYXR0cmli dXRlLmggYi9zcmMvaWJ1c2F0dHJpYnV0ZS5oCi1pbmRleCBmZTRjYWI0NS4uMTAxOTA5MjEgMTAw NjQ0Ci0tLS0gYS9zcmMvaWJ1c2F0dHJpYnV0ZS5oCi0rKysgYi9zcmMvaWJ1c2F0dHJpYnV0ZS5o Ci1AQCAtMiw3ICsyLDggQEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIElCdXMgLSBU aGUgSW5wdXQgQnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUGVuZyBIdWFuZyA8c2hh d24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUmVkIEhh dCwgSW5jLgotKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIzIFRha2FvIEZ1aml3YXJhIDx0YWth by5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIzIFJlZCBI YXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtOTEsNiArOTIsNTUgQEAgdHlwZWRl ZiBlbnVtIHsKLSAgICAgSUJVU19BVFRSX1VOREVSTElORV9FUlJPUiAgID0gNCwKLSB9IElCdXNB dHRyVW5kZXJsaW5lOwotIAotKwotKy8qKgotKyAqIElCdXNBdHRyUHJlZWRpdDoKLSsgKiBASUJV U19BVFRSX1BSRUVESVRfREVGQVVMVDogRGVmYXVsdCBzdHlsZSBmb3IgY29tcG9zaW5nIHRleHQu Ci0rICogQElCVVNfQVRUUl9QUkVFRElUX05PTkU6IFN0eWxlIHNob3VsZCBiZSB0aGUgc2FtZSBh cyBpbiBub24tY29tcG9zaW5nIHRleHQuCi0rICogQElCVVNfQVRUUl9QUkVFRElUX1dIT0xFOiBN b3N0IGxhbmd1YWdlIGVuZ2luZXMgd2lzaCB0byBkcmF3IHVuZGVybGluZSBpbgotKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGhlIHR5cGVkIHdob2xlIHByZWVkaXQgc3RyaW5nIGV4Y2Vw dCBmb3IgdGhlCi0rICogICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uIHN0cmlu Zy4gKENoaW5lc2UsIEphcGFuZXNlLAotKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlw aW5nLWJvb3N0ZXIpCi0rICogQElCVVNfQVRUUl9QUkVFRElUX1NFTEVDVElPTjogTW9kaWZ5aW5n IGFuIGFjdGl2ZSBzZWdtZW50IGlzIGRpc3Rpbmd1aXNoZWQKLSsgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhZ2FpbnN0IHdob2xlIHRoZSBwcmVlZGl0IHRleHQuIChIYW5ndWwsCi0r ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSmFwYW5lc2UpCi0rICogQElCVVNfQVRU Ul9QUkVFRElUX1BSRURJQ1RJT046IEEgcHJlZGljdGlvbiBzdHJpbmcgY2FuIGJlIGFwcGVuZGVk IGFmdGVyIHRoZQotKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlZCBzdHJp bmcuIChUeXBpbmctYm9vc3RlcikKLSsgKiBASUJVU19BVFRSX1BSRUVESVRfUFJFRklYOiBBIHBy ZWZpeCBzdHJpbmcgY2FuIGJlIGFuIGluZm9ybWF0aXZlIGNvbG9yLgotKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChUYWJsZSkKLSsgKiBASUJVU19BVFRSX1BSRUVESVRfU1VGRklYOiBB IHN1ZmZpeCBzdHJpbmcgY2FuIGJlIGFuIGluZm9ybWF0aXZlIGNvbG9yLgotKyAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChUYWJsZSkKLSsgKiBASUJVU19BVFRSX1BSRUVESVRfRVJST1Jf U1BFTExJTkc6IEFuIGRldGVjdGVkIHR5cG8gY291bGQgYmUgYW4gZXJyb3IgY29sb3IKLSsgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggYSBzcGVsbGluZyBjaGVjayBv ciB0aGUgd29yZCBjb3VsZAotKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bm90IGJlIGZvdW5kIGluIGEgZGljdGlvbmFyeS4gVGhlCi0rICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bmRlcmxpbmUgY29sb3IgYWxzbyBtaWdodCBiZSBtb3JlCi0rICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlLiAoVHlwaW5nLWJvb3N0 ZXIsIFRhYmxlKQotKyAqIEBJQlVTX0FUVFJfUFJFRURJVF9FUlJPUl9DT01QT1NFOiBBIHdyb25n IGNvbXBvc2Uga2V5IGNvdWxkIGJlIGFuIGVycm9yCi0rICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbG9yLiAoVHlwaW5nLWJvb3N0ZXIpCi0rICoKLSsgKiBUeXBlIG9mIFBy ZS1lZGl0IHN0eWxlIGFzIHRoZSBzZW1hbnRpYyBuYW1lLgotKyAqIFRoZSBXYXlsYW5kIHNwZWNz IHByZWZlcnMgdG8gZXhwcmVzcyB0aGUgc2VtYW50aWMgdmFsdWVzIHJhdGhlciB0aGFuIFJHQgot KyAqIHZhbHVlcyBhbmQgdGV4dC1pbnB1dCBwcm90b2NvbCB2ZXJzaW9uIDEgZGVmaW5lcyBzb21l IHZhbHVlczoKLSsgKiBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvd2F5bGFuZC93YXls YW5kLXByb3RvY29scy8tL2Jsb2IvbWFpbi91bnN0YWJsZS90ZXh0LWlucHV0L3RleHQtaW5wdXQt dW5zdGFibGUtdjEueG1sP3JlZl90eXBlPWhlYWRzI0wyNTEKLSsgKgotKyAqIElCdXMgY29tcGls ZWQgdGhlIHZhbHVlcyBmb3IgbWFqb3IgaW5wdXQgbWV0aG9kIGVuZ2luZXM6Ci0rICogaHR0cHM6 Ly9naXRodWIuY29tL2lidXMvaWJ1cy93aWtpL1dheWxhbmQtQ29sb3JzCi0rICoKLSsgKiBTaW5j ZTogMS41LjI5Ci0rICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKyAqLwotK3R5cGVkZWYgZW51bSB7 Ci0rICAgIElCVVNfQVRUUl9QUkVFRElUX0RFRkFVTFQgPSAwLAotKyAgICBJQlVTX0FUVFJfUFJF RURJVF9OT05FLAotKyAgICBJQlVTX0FUVFJfUFJFRURJVF9XSE9MRSwKLSsgICAgSUJVU19BVFRS X1BSRUVESVRfU0VMRUNUSU9OLAotKyAgICBJQlVTX0FUVFJfUFJFRURJVF9QUkVESUNUSU9OLAot KyAgICBJQlVTX0FUVFJfUFJFRURJVF9QUkVGSVgsCi0rICAgIElCVVNfQVRUUl9QUkVFRElUX1NV RkZJWCwKLSsgICAgSUJVU19BVFRSX1BSRUVESVRfRVJST1JfU1BFTExJTkcsCi0rICAgIElCVVNf QVRUUl9QUkVFRElUX0VSUk9SX0NPTVBPU0UsCi0rfSBJQnVzQXR0clByZWVkaXQ7Ci0rCi0gdHlw ZWRlZiBzdHJ1Y3QgX0lCdXNBdHRyaWJ1dGUgSUJ1c0F0dHJpYnV0ZTsKLSB0eXBlZGVmIHN0cnVj dCBfSUJ1c0F0dHJpYnV0ZUNsYXNzIElCdXNBdHRyaWJ1dGVDbGFzczsKLSAKLS0tIAotMi40MS4w Ci0KLUZyb20gMWJlM2UyZjc5YjM4NGEzNzRiMmE2OWEzMWM4OGE0ZjM2ZTFkZDg2OCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWls LmNvbT4KLURhdGU6IFdlZCwgMTUgTm92IDIwMjMgMTc6MTk6MDIgKzA5MDAKLVN1YmplY3Q6IFtQ QVRDSF0gY2xpZW50L2d0azI6IENhbGwgc3RyZHVwKCkgYWZ0ZXIgZ19yZXR1cm5faWZfZmFpbCgp Ci0KLS0tLQotIGNsaWVudC9ndGsyL2lidXNpbWNvbnRleHQuYyB8IDMgKystCi0gMSBmaWxlIGNo YW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY2xp ZW50L2d0azIvaWJ1c2ltY29udGV4dC5jIGIvY2xpZW50L2d0azIvaWJ1c2ltY29udGV4dC5jCi1p bmRleCBiNWE0NGRhMC4uY2ZjMDhjMjAgMTAwNjQ0Ci0tLS0gYS9jbGllbnQvZ3RrMi9pYnVzaW1j b250ZXh0LmMKLSsrKyBiL2NsaWVudC9ndGsyL2lidXNpbWNvbnRleHQuYwotQEAgLTI0MTcsNyAr MjQxNyw3IEBAIF9jcmVhdGVfaW5wdXRfY29udGV4dF9kb25lIChJQnVzQnVzICAgICAgICpidXMs Ci0gc3RhdGljIHZvaWQKLSBfY3JlYXRlX2lucHV0X2NvbnRleHQgKElCdXNJTUNvbnRleHQgKmli dXNpbWNvbnRleHQpCi0gewotLSAgICBnY2hhciAqcHJnbmFtZSA9IGdfc3RyZHVwIChnX2dldF9w cmduYW1lKCkpOwotKyAgICBnY2hhciAqcHJnbmFtZTsKLSAgICAgZ2NoYXIgKmNsaWVudF9uYW1l OwotICAgICBJREVCVUcgKCIlcyIsIF9fRlVOQ1RJT05fXyk7Ci0gCi1AQCAtMjQyNSw2ICsyNDI1 LDcgQEAgX2NyZWF0ZV9pbnB1dF9jb250ZXh0IChJQnVzSU1Db250ZXh0ICppYnVzaW1jb250ZXh0 KQotIAotICAgICBnX3JldHVybl9pZl9mYWlsIChpYnVzaW1jb250ZXh0LT5jYW5jZWxsYWJsZSA9 PSBOVUxMKTsKLSAKLSsgICAgcHJnbmFtZSA9IGdfc3RyZHVwIChnX2dldF9wcmduYW1lKCkpOwot ICAgICBpYnVzaW1jb250ZXh0LT5jYW5jZWxsYWJsZSA9IGdfY2FuY2VsbGFibGVfbmV3ICgpOwot IAotICAgICBpZiAoIXByZ25hbWUpCi0tLSAKLTIuNDEuMAotCi1Gcm9tIDBhN2E0ZDFkZmE1ODBk ZmNjNjVkNzZhNjk3ZjQwMDk0MDg1ZTU1YTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDI1IE5v diAyMDIzIDEzOjQyOjA3ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVpL2d0azM6IEVycm9yIGhh bmRsaW5nIHdpdGggZGlzcGxheSA9PSBudWxsCi0KLUJVRz1yaGJ6IzIxODg4MDAKLS0tLQotIHVp L2d0azMvYmluZGluZ2NvbW1vbi52YWxhIHwgIDYgKysrKystCi0gdWkvZ3RrMy9wYW5lbC52YWxh ICAgICAgICAgfCAxNCArKysrKysrKysrLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0 aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3VpL2d0azMvYmluZGluZ2Nv bW1vbi52YWxhIGIvdWkvZ3RrMy9iaW5kaW5nY29tbW9uLnZhbGEKLWluZGV4IGRhMzI0ZjcwLi41 ODhiZTE3YSAxMDA2NDQKLS0tLSBhL3VpL2d0azMvYmluZGluZ2NvbW1vbi52YWxhCi0rKysgYi91 aS9ndGszL2JpbmRpbmdjb21tb24udmFsYQotQEAgLTI2MywxMCArMjYzLDE0IEBAIGNsYXNzIEJp bmRpbmdDb21tb24gewotICAgICAgICAgcmV0dXJuIG1fZGVmYXVsdF9pc194ZGlzcGxheTsKLSAg ICAgfQotIAotLSAgICBwdWJsaWMgc3RhdGljIEdkay5YMTEuRGlzcGxheSBnZXRfeGRpc3BsYXko KSB7Ci0rICAgIHB1YmxpYyBzdGF0aWMgR2RrLlgxMS5EaXNwbGF5PyBnZXRfeGRpc3BsYXkoKSB7 Ci0gICAgICAgICBpZiAobV94ZGlzcGxheSAhPSBudWxsKQotICAgICAgICAgICAgIHJldHVybiBt X3hkaXNwbGF5OwotICAgICAgICAgdmFyIGRpc3BsYXkgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVs dCgpOwotKyAgICAgICAgaWYgKGRpc3BsYXkgPT0gbnVsbCkgewotKyAgICAgICAgICAgIGVycm9y KCJZb3Ugc2hvdWxkIG9wZW4gYSBkaXNwbGF5IGZvciBJQnVzIHBhbmVsLiIpOwotKyAgICAgICAg ICAgIHJldHVybiBudWxsOwotKyAgICAgICAgfQotICAgICAgICAgVHlwZSBpbnN0YW5jZV90eXBl ID0gZGlzcGxheS5nZXRfdHlwZSgpOwotICAgICAgICAgVHlwZSB4MTFfdHlwZSA9IHR5cGVvZihH ZGsuWDExLkRpc3BsYXkpOwotICAgICAgICAgaWYgKGluc3RhbmNlX3R5cGUuaXNfYSh4MTFfdHlw ZSkpIHsKLWRpZmYgLS1naXQgYS91aS9ndGszL3BhbmVsLnZhbGEgYi91aS9ndGszL3BhbmVsLnZh bGEKLWluZGV4IGYxYmJkNzIwLi43ODNlYzg0MiAxMDA2NDQKLS0tLSBhL3VpL2d0azMvcGFuZWwu dmFsYQotKysrIGIvdWkvZ3RrMy9wYW5lbC52YWxhCi1AQCAtMTQyMiw5ICsxNDIyLDEyIEBAIGNs YXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotIAotICAgICAgICAgR2RrLkRpc3BsYXkg ZGlzcGxheV9iYWNrdXAgPSBudWxsOwotICAgICAgICAgaWYgKHVzZV94MTEgJiYgIUJpbmRpbmdD b21tb24uZGVmYXVsdF9pc194ZGlzcGxheSgpKSB7Ci0rICAgICAgICAgICAgdmFyIGRpc3BsYXkg PSBCaW5kaW5nQ29tbW9uLmdldF94ZGlzcGxheSgpOwotICAgICAgICAgICAgIGRpc3BsYXlfYmFj a3VwID0gR2RrLkRpc3BsYXkuZ2V0X2RlZmF1bHQoKTsKLS0gICAgICAgICAgICBHZGsuRGlzcGxh eU1hbmFnZXIuZ2V0KCkuc2V0X2RlZmF1bHRfZGlzcGxheSgKLS0gICAgICAgICAgICAgICAgICAg IChHZGsuRGlzcGxheSlCaW5kaW5nQ29tbW9uLmdldF94ZGlzcGxheSgpKTsKLSsgICAgICAgICAg ICBpZiAoZGlzcGxheSAhPSBudWxsKSB7Ci0rICAgICAgICAgICAgICAgIEdkay5EaXNwbGF5TWFu YWdlci5nZXQoKS5zZXRfZGVmYXVsdF9kaXNwbGF5KAotKyAgICAgICAgICAgICAgICAgICAgICAg IChHZGsuRGlzcGxheSlkaXNwbGF5KTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gCi0g ICAgICAgICAvLyBTaG93IHN5c3RlbSBtZW51Ci1AQCAtMTQ3Niw5ICsxNDc5LDEyIEBAIGNsYXNz IFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICBwcml2YXRlIEd0ay5NZW51IGNyZWF0 ZV9hY3RpdmF0ZV9tZW51KGJvb2wgdXNlX3gxMSA9IGZhbHNlKSB7Ci0gICAgICAgICBHZGsuRGlz cGxheSBkaXNwbGF5X2JhY2t1cCA9IG51bGw7Ci0gICAgICAgICBpZiAodXNlX3gxMSAmJiAhQmlu ZGluZ0NvbW1vbi5kZWZhdWx0X2lzX3hkaXNwbGF5KCkpIHsKLSsgICAgICAgICAgICB2YXIgZGlz cGxheSA9IEJpbmRpbmdDb21tb24uZ2V0X3hkaXNwbGF5KCk7Ci0gICAgICAgICAgICAgZGlzcGxh eV9iYWNrdXAgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgpOwotLSAgICAgICAgICAgIEdkay5E aXNwbGF5TWFuYWdlci5nZXQoKS5zZXRfZGVmYXVsdF9kaXNwbGF5KAotLSAgICAgICAgICAgICAg ICAgICAgKEdkay5EaXNwbGF5KUJpbmRpbmdDb21tb24uZ2V0X3hkaXNwbGF5KCkpOwotKyAgICAg ICAgICAgIGlmIChkaXNwbGF5ICE9IG51bGwpIHsKLSsgICAgICAgICAgICAgICAgR2RrLkRpc3Bs YXlNYW5hZ2VyLmdldCgpLnNldF9kZWZhdWx0X2Rpc3BsYXkoCi0rICAgICAgICAgICAgICAgICAg ICAgICAgKEdkay5EaXNwbGF5KWRpc3BsYXkpOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgIH0K LSAgICAgICAgIG1faW1lX21lbnUgPSBuZXcgR3RrLk1lbnUoKTsKLSAKLS0tIAotMi40MS4wCi0K LUZyb20gNzE5NzkyZDMwMDU3OWMxYmZkZjQzMjUxYTgzYzZlZDRlNTU5NGMwNyBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNv bT4KLURhdGU6IFR1ZSwgNSBEZWMgMjAyMyAyMzoxMzoyNSArMDkwMAotU3ViamVjdDogW1BBVENI XSBzcmM6IENvbXBsZXRlIHByZWVkaXQgc2lnbmFscyBmb3IgUG9zdFByb2Nlc3NLZXlFdmVudAot Ci1JIGZvcmdvdCB0byBpbXBsZW1lbnQgc2hvdy1wcmVlZGl0LXRleHQgYW5kIGhpZGUtcHJlZWRp dC10ZXh0IHNpZ25hbHMKLXdpdGggUG9zdFByb2Nlc3NLZXlFdmVudCBELUJ1cyBzaWduYWwgaW4g dGhlIGNsaWVudCBzaWRlLgotCi1GaXhlczogaHR0cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9j b21taXQvZTA1OTUzNgotCi1CVUc9aHR0cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9pc3N1ZXMv MjU4NQotLS0tCi0gc3JjL2lidXNpbnB1dGNvbnRleHQuYyB8IDMzICsrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCA3IGRl bGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2lidXNpbnB1dGNvbnRleHQuYyBiL3NyYy9p YnVzaW5wdXRjb250ZXh0LmMKLWluZGV4IDFiNjJmNjU2Li42MDA1MjZlNSAxMDA2NDQKLS0tLSBh L3NyYy9pYnVzaW5wdXRjb250ZXh0LmMKLSsrKyBiL3NyYy9pYnVzaW5wdXRjb250ZXh0LmMKLUBA IC0xNDYzLDYgKzE0NjMsMjIgQEAgaWJ1c19pbnB1dF9jb250ZXh0X2Z3ZF90ZXh0X3RvX2RlbGV0 ZV9zdXJyb3VuZGluZyAoSUJ1c0lucHV0Q29udGV4dCAqY29udGV4dCwKLSB9Ci0gCi0gCi0rc3Rh dGljIHZvaWQKLStpYnVzX2lucHV0X2NvbnRleHRfZndkX3RleHRfdG9faGlkZV9wcmVlZGl0IChJ QnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElCdXNUZXh0ICAgICAgICAgKnRleHQpCi0rewotKyAgICBnX3NpZ25h bF9lbWl0IChjb250ZXh0LCBjb250ZXh0X3NpZ25hbHNbSElERV9QUkVFRElUX1RFWFRdLCAwLCB0 ZXh0KTsKLSt9Ci0rCi0rCi0rc3RhdGljIHZvaWQKLStpYnVzX2lucHV0X2NvbnRleHRfZndkX3Rl eHRfdG9fc2hvd19wcmVlZGl0IChJQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNUZXh0ICAgICAgICAgKnRl eHQpCi0rewotKyAgICBnX3NpZ25hbF9lbWl0IChjb250ZXh0LCBjb250ZXh0X3NpZ25hbHNbU0hP V19QUkVFRElUX1RFWFRdLCAwLCB0ZXh0KTsKLSt9Ci0rCi0rCi0gc3RhdGljIHZvaWQKLSBpYnVz X2lucHV0X2NvbnRleHRfZndkX3RleHRfdG9fdXBkYXRlX3ByZWVkaXQgKElCdXNJbnB1dENvbnRl eHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJQnVzVGV4dCAgICAgICAgICp0ZXh0LAotQEAgLTE1NTgsMTggKzE1NzQsMjEgQEAgaWJ1 c19pbnB1dF9jb250ZXh0X3Bvc3RfcHJvY2Vzc19rZXlfZXZlbnQgKElCdXNJbnB1dENvbnRleHQg KmNvbnRleHQpCi0gICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgICAgICBpYnVzX2lucHV0X2Nv bnRleHRfZndkX3RleHRfdG9fY29tbWl0IChjb250ZXh0LCB0ZXh0KTsKLSAgICAgICAgICAgICBi cmVhazsKLS0gICAgICAgIGNhc2UgJ2YnOiB7Ci0rICAgICAgICBjYXNlICdkJzoKLSsgICAgICAg ICAgICBpYnVzX2lucHV0X2NvbnRleHRfZndkX3RleHRfdG9fZGVsZXRlX3N1cnJvdW5kaW5nIChj b250ZXh0LCB0ZXh0KTsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgJ2YnOgot ICAgICAgICAgICAgIGlidXNfaW5wdXRfY29udGV4dF9md2RfdGV4dF90b19mb3J3YXJkX2tleV9l dmVudCAoY29udGV4dCwgdGV4dCk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICB9Ci0t ICAgICAgICBjYXNlICdyJzogewotKyAgICAgICAgY2FzZSAnaCc6Ci0rICAgICAgICAgICAgaWJ1 c19pbnB1dF9jb250ZXh0X2Z3ZF90ZXh0X3RvX2hpZGVfcHJlZWRpdCAoY29udGV4dCwgdGV4dCk7 Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlICdyJzoKLSAgICAgICAgICAgICBp YnVzX2lucHV0X2NvbnRleHRfZndkX3RleHRfdG9fcmVxdWlyZV9zdXJyb3VuZGluZyAoY29udGV4 dCwgdGV4dCk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICB9Ci0tICAgICAgICBjYXNl ICdkJzogewotLSAgICAgICAgICAgIGlidXNfaW5wdXRfY29udGV4dF9md2RfdGV4dF90b19kZWxl dGVfc3Vycm91bmRpbmcgKGNvbnRleHQsIHRleHQpOwotKyAgICAgICAgY2FzZSAncyc6Ci0rICAg ICAgICAgICAgaWJ1c19pbnB1dF9jb250ZXh0X2Z3ZF90ZXh0X3RvX3Nob3dfcHJlZWRpdCAoY29u dGV4dCwgdGV4dCk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICB9Ci0gICAgICAgICBj YXNlICd1JzoKLSAgICAgICAgIGNhc2UgJ20nOiB7Ci0gICAgICAgICAgICAgSUJ1c1RleHQgKnBv c2l0aW9uOwotLS0gCi0yLjQxLjAKLQotRnJvbSBhYzQ2ZDE1NGU3MmZkYzkxNGU2ZDM0ZmYxYjI1 MWM4ZmNiNzBjZTIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0 YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogVGh1LCA3IERlYyAyMDIzIDIwOjM0OjQ5 ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlZmFjdG9yIG9iamVjdCBpbml0aWFsaXphdGlvbgot Ci0tIGNsaWVudC93YXlsYW5kOiBNYWtlIHN1cmUgSUJ1c1dheWxhbmRJTS0+aWJ1c2NvbnRleHQg aXMgTlVMTAotICB3aGVuIElCdXNXYXlsYW5kSU0tPmNvbnRleHQgaXMgTlVMTC4KLQotLSBjb25m aWd1cmU6IFNldCBzb21lIGRlZmF1bHQgaGVscCBtZXNzYWdlcy4KLQotLSB1aS9ndGszOiBNYWtl IHN1cmUgdG8gY2FsbCBhbiBlcnJvciBtZXNzYWdlIGlmIGRpc3BsYXkgaXMgTlVMTC4KLS0tLQot IGNsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYyB8IDEwICsrKysrKy0tLS0KLSBjb25maWd1 cmUuYWMgICAgICAgICAgICAgICAgICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KLSB1aS9ndGsz L3BhbmVsLnZhbGEgICAgICAgICAgICAgfCAgNSArLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMTYg aW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQvd2F5 bGFuZC9pYnVzd2F5bGFuZGltLmMgYi9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMKLWlu ZGV4IDllOGY2NTFlLi4wNDMwNTM4ZiAxMDA2NDQKLS0tLSBhL2NsaWVudC93YXlsYW5kL2lidXN3 YXlsYW5kaW0uYwotKysrIGIvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jCi1AQCAtMTE1 LDYgKzExNSwxMCBAQCBzdHJ1Y3Qgd2xfcmVnaXN0cnkgKl9yZWdpc3RyeSA9IE5VTEw7Ci0gCi0g c3RhdGljIGdib29sZWFuIF91c2Vfc3luY19tb2RlID0gMTsKLSAKLStzdGF0aWMgdm9pZCAgICAg ICAgIGlucHV0X21ldGhvZF9kZWFjdGl2YXRlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB6d3BfaW5wdXRfbWV0aG9kX3YxICAgICAgICAg KmlucHV0X21ldGhvZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHp3 cF9pbnB1dF9tZXRob2RfY29udGV4dF92MSAqY29udGV4dCk7Ci0gc3RhdGljIEdPYmplY3QgICAg ICppYnVzX3dheWxhbmRfaW1fY29uc3RydWN0b3IgICAgICAgIChHVHlwZSAgICAgICAgICB0eXBl LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3VpbnQgICAgICAgICAgbl9wYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHT2JqZWN0Q29uc3RydWN0UGFyYW0KLUBAIC0x MjA3LDEwICsxMjExLDggQEAgaW5wdXRfbWV0aG9kX2FjdGl2YXRlICh2b2lkICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICpkYXRhLAotIAotICAgICBnX3JldHVybl9pZl9mYWlsIChJQlVT X0lTX1dBWUxBTkRfSU0gKHdsaW0pKTsKLSAgICAgcHJpdiA9IGlidXNfd2F5bGFuZF9pbV9nZXRf aW5zdGFuY2VfcHJpdmF0ZSAod2xpbSk7Ci0tICAgIGlmIChwcml2LT5jb250ZXh0KSB7Ci0tICAg ICAgICB6d3BfaW5wdXRfbWV0aG9kX2NvbnRleHRfdjFfZGVzdHJveSAocHJpdi0+Y29udGV4dCk7 Ci0tICAgICAgICBwcml2LT5jb250ZXh0ID0gTlVMTDsKLS0gICAgfQotKyAgICBpZiAocHJpdi0+ Y29udGV4dCkKLSsgICAgICAgIGlucHV0X21ldGhvZF9kZWFjdGl2YXRlIChkYXRhLCBpbnB1dF9t ZXRob2QsIGNvbnRleHQpOwotIAotICAgICBwcml2LT5zZXJpYWwgPSAwOwotICAgICBwcml2LT5j b250ZXh0ID0gY29udGV4dDsKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUu YWMKLWluZGV4IDUwYjRhODIwLi5kYzE0MTBjYyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwot KysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjMzLDcgKzIzMyw3IEBAIEFDX0FSR19FTkFCTEUoZ3Rr NCwKLSAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWd0azRdLAotICAgICAgICAgICAgICAg ICAgICBbQnVpbGQgZ3RrNCBpbSBtb2R1bGVdKSwKLSAgICAgW2VuYWJsZV9ndGs0PSRlbmFibGV2 YWxdLAotLSAgICBbZW5hYmxlX2d0azQ9bm9dCi0rICAgIFtlbmFibGVfZ3RrND15ZXNdCi0gKQot IEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfR1RLNF0sIFt0ZXN0IHgiJGVuYWJsZV9ndGs0IiA9IHgi eWVzIl0pCi0gCi1AQCAtMjc2LDggKzI3Niw3IEBAIGlmIHRlc3QgeCIkZW5hYmxlX2d0azIiID0g eCJ5ZXMiOyB0aGVuCi0gCi0gICAgIGd0azJfYmluYXJ5X3ZlcnNpb249YCRQS0dfQ09ORklHIC0t dmFyaWFibGU9Z3RrX2JpbmFyeV92ZXJzaW9uIGd0aystMi4wYAotICAgICBHVEsyX0lNX01PRFVM RURJUj0iJGxpYmRpciIvZ3RrLTIuMC8kZ3RrMl9iaW5hcnlfdmVyc2lvbi9pbW1vZHVsZXMKLS1l bHNlCi0tICAgIGVuYWJsZV9ndGsyPSJubyAoZGlzYWJsZWQsIHVzZSAtLWVuYWJsZS1ndGsyIHRv IGVuYWJsZSkiCi0rICAgIGVuYWJsZV9ndGsyPSJ5ZXMgKGVuYWJsZWQsIHVzZSAtLWRpc2FibGUt Z3RrMiB0byBkaXNhYmxlKSIKLSBmaQotIAotIGlmIHRlc3QgeCIkZW5hYmxlX2d0azMiID0geCJ5 ZXMiOyB0aGVuCi1AQCAtMjk3LDcgKzI5Niw2IEBAIGlmIHRlc3QgeCIkZW5hYmxlX2d0azMiID0g eCJ5ZXMiOyB0aGVuCi0gICAgIGd0azNfYmluYXJ5X3ZlcnNpb249YCRQS0dfQ09ORklHIC0tdmFy aWFibGU9Z3RrX2JpbmFyeV92ZXJzaW9uIGd0aystMy4wYAotICAgICBHVEszX0lNX01PRFVMRURJ Uj0iJGxpYmRpciIvZ3RrLTMuMC8kZ3RrM19iaW5hcnlfdmVyc2lvbi9pbW1vZHVsZXMKLSBlbHNl Ci0tICAgIGVuYWJsZV9ndGszPSJubyAoZGlzYWJsZWQsIHVzZSAtLWVuYWJsZS1ndGszIHRvIGVu YWJsZSkiCi0gICAgIGVuYWJsZV9nZGszX3dheWxhbmQ9bm8KLSBmaQotIGlmIHRlc3QgeCIkZW5h YmxlX2dkazNfd2F5bGFuZCIgIT0geCJ5ZXMiOyB0aGVuCi1AQCAtMzEzLDggKzMxMSw3IEBAIGlm IHRlc3QgeCIkZW5hYmxlX2d0azQiID0geCJ5ZXMiOyB0aGVuCi0gCi0gICAgIGd0azRfYmluYXJ5 X3ZlcnNpb249YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z3RrX2JpbmFyeV92ZXJzaW9uIGd0azRg Ci0gICAgIEdUSzRfSU1fTU9EVUxFRElSPSIkbGliZGlyIi9ndGstNC4wLyRndGs0X2JpbmFyeV92 ZXJzaW9uL2ltbW9kdWxlcwotLWVsc2UKLS0gICAgZW5hYmxlX2d0azQ9Im5vIChkaXNhYmxlZCwg dXNlIC0tZW5hYmxlLWd0azQgdG8gZW5hYmxlKSIKLSsgICAgZW5hYmxlX2d0azQ9InllcyAoZW5h YmxlZCwgdXNlIC0tZGlzYWJsZS1ndGs0IHRvIGRpc2FibGUpIgotIGZpCi0gCi0gaWYgdGVzdCB4 IiRlbmFibGVfeGltIiA9IHgieWVzIjsgdGhlbgotQEAgLTMzMSw4ICszMjgsMTAgQEAgaWYgdGVz dCB4IiRlbmFibGVfeGltIiA9IHgieWVzIjsgdGhlbgotICAgICAgICAgICAgIGd0aystMi4wCi0g ICAgICAgICBdKQotICAgICBmaQotLWVsc2UKLS0gICAgZW5hYmxlX3hpbT0ibm8gKGRpc2FibGVk LCB1c2UgLS1lbmFibGUteGltIHRvIGVuYWJsZSkiCi0rICAgIGVuYWJsZV94aW09InllcyAoZW5h YmxlZCwgdXNlIC0tZGlzYWJsZS14aW0gdG8gZGlzYWJsZSkiCi0rZmkKLStpZiB0ZXN0IHgiJGVu YWJsZV9ndGszIiA9IHgieWVzIjsgdGhlbgotKyAgICBlbmFibGVfZ3RrMz0ieWVzIChlbmFibGVk LCB1c2UgLS1kaXNhYmxlLWd0azMgdG8gZGlzYWJsZSkiCi0gZmkKLSAKLSBpZiAkUEtHX0NPTkZJ RyAtLWV4aXN0cyB4MTE7IHRoZW4KLUBAIC0zNjMsOCArMzYyLDkgQEAgaWYgdGVzdCB4IiRlbmFi bGVfd2F5bGFuZCIgPSB4InllcyI7IHRoZW4KLSAgICAgICAgICAgICAgIEFDX1NVQlNUKFdBWUxB TkRfUFJUQ0xTX1NVQkRJUikKLSAgICAgICAgICAgICAgIFdBWUxBTkRfU0NBTk5FUl9SVUxFUyhb JyQoZGF0YWRpcikvJChXQVlMQU5EX1BSVENMU19TVUJESVIpJ10pXSwKLSAgICAgICAgICAgICAg W0FDX1NVQlNUKHdheWxhbmRfc2Nhbm5lcl9ydWxlcyldKQotKyAgICBlbmFibGVfd2F5bGFuZD0i eWVzIChlbmFibGVkLCB1c2UgLS1kaXNhYmxlLXdheWxhbmQgdG8gZGlzYWJsZSkiCi0gZWxzZQot LSAgICBlbmFibGVfd2F5bGFuZD0ibm8gKGRpc2FibGVkLCB1c2UgLS1lbmFibGUtd2F5bGFuZCB0 byBlbmFibGUpIgotKyAgICB3YXlsYW5kX3NjYW5uZXJfcnVsZXM9Ii4vd2F5bGFuZC1zY2FubmVy Lm1rIgotICAgICBBQ19TVUJTVCh3YXlsYW5kX3NjYW5uZXJfcnVsZXMpCi0gZmkKLSAKLWRpZmYg LS1naXQgYS91aS9ndGszL3BhbmVsLnZhbGEgYi91aS9ndGszL3BhbmVsLnZhbGEKLWluZGV4IDc4 M2VjODQyLi4yMzNkZDI5YyAxMDA2NDQKLS0tLSBhL3VpL2d0azMvcGFuZWwudmFsYQotKysrIGIv dWkvZ3RrMy9wYW5lbC52YWxhCi1AQCAtMTExLDEwICsxMTEsNyBAQCBjbGFzcyBQYW5lbCA6IElC dXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgICAgIG1faXNfd2F5bGFuZF9pbSA9IGlzX3dheWxhbmRf aW07Ci0gCi0gI2lmIFVTRV9HREtfV0FZTEFORAotLSAgICAgICAgdmFyIGRpc3BsYXkgPSBHZGsu RGlzcGxheS5nZXRfZGVmYXVsdCgpOwotLSAgICAgICAgVHlwZSBpbnN0YW5jZV90eXBlID0gZGlz cGxheS5nZXRfdHlwZSgpOwotLSAgICAgICAgVHlwZSB3YXlsYW5kX3R5cGUgPSB0eXBlb2YoR2Rr V2F5bGFuZC5EaXNwbGF5KTsKLS0gICAgICAgIG1faXNfd2F5bGFuZCA9IGluc3RhbmNlX3R5cGUu aXNfYSh3YXlsYW5kX3R5cGUpOwotKyAgICAgICAgbV9pc193YXlsYW5kID0gIUJpbmRpbmdDb21t b24uZGVmYXVsdF9pc194ZGlzcGxheSgpOwotICNlbHNlCi0gICAgICAgICBtX2lzX3dheWxhbmQg PSBmYWxzZTsKLSAgICAgICAgIHdhcm5pbmcoIkNoZWNraW5nIFdheWxhbmQgaXMgZGlzYWJsZWQi KTsKLS0tIAotMi40MS4wCi0KLUZyb20gODQ3MDg3Mzk3OWUzNDM1YzI5ZDk4NzA0ZjFhYzdlMWU0 N2U5ZGMyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8u ZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTQgRGVjIDIwMjMgMjM6NTU6NDIgKzA5 MDAKLVN1YmplY3Q6IFtQQVRDSF0gdWkvZ3RrMzogRml4IHNvbWUgd2FybmluZ3MKLQotLSBUcnkg dG8gZGlzYWJsZSBWYWxhIHdhcm5pbmdzIHdpdGggZ3RrX21lbnVfc2hlbGxfaW5zZXJ0KCkgd29y a2Fyb3VuZC4KLS0gU3RvcCBzdHJpbmdfc2xpY2UoKSB3YXJuaW5nIHdpdGggZGlmZmVyZW50IGxh bmd1YWdlIGxlbmd0aHMuCi0tLS0KLSB1aS9ndGszL3BhbmVsLnZhbGEgICAgfCAxNyArKysrKysr KysrLS0tLS0tLQotIHVpL2d0azMvc3dpdGNoZXIudmFsYSB8ICA0ICsrKy0KLSAyIGZpbGVzIGNo YW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS91 aS9ndGszL3BhbmVsLnZhbGEgYi91aS9ndGszL3BhbmVsLnZhbGEKLWluZGV4IDIzM2RkMjljLi5h YTllODY2NCAxMDA2NDQKLS0tLSBhL3VpL2d0azMvcGFuZWwudmFsYQotKysrIGIvdWkvZ3RrMy9w YW5lbC52YWxhCi1AQCAtMTQzMyw3ICsxNDMzLDggQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVs U2VydmljZSB7Ci0gCi0gICAgICAgICBpdGVtID0gbmV3IEd0ay5NZW51SXRlbS53aXRoX2xhYmVs KF8oIlByZWZlcmVuY2VzIikpOwotICAgICAgICAgaXRlbS5hY3RpdmF0ZS5jb25uZWN0KChpKSA9 PiBzaG93X3NldHVwX2RpYWxvZygpKTsKLS0gICAgICAgIG1fc3lzX21lbnUuYXBwZW5kKGl0ZW0p OwotKyAgICAgICAgLy8gaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2d0ay8tL2lzc3Vl cy81ODcwCi0rICAgICAgICBtX3N5c19tZW51Lmluc2VydChpdGVtLCAtMSk7Ci0gCi0gI2lmIEVN T0pJX0RJQ1QKLSAgICAgICAgIGl0ZW0gPSBuZXcgR3RrLk1lbnVJdGVtLndpdGhfbGFiZWwoXygi RW1vamkgQ2hvaWNlIikpOwotQEAgLTE0NDgsMjIgKzE0NDksMjMgQEAgY2xhc3MgUGFuZWwgOiBJ QnVzLlBhbmVsU2VydmljZSB7Ci0gICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAg ICBwYW5lbF9leHRlbnNpb24oZXZlbnQpOwotICAgICAgICAgfSk7Ci0tICAgICAgICBtX3N5c19t ZW51LmFwcGVuZChpdGVtKTsKLSsgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9H Tk9NRS9ndGsvLS9pc3N1ZXMvNTg3MAotKyAgICAgICAgbV9zeXNfbWVudS5pbnNlcnQoaXRlbSwg LTEpOwotICNlbmRpZgotIAotICAgICAgICAgaXRlbSA9IG5ldyBHdGsuTWVudUl0ZW0ud2l0aF9s YWJlbChfKCJBYm91dCIpKTsKLSAgICAgICAgIGl0ZW0uYWN0aXZhdGUuY29ubmVjdCgoaSkgPT4g c2hvd19hYm91dF9kaWFsb2coKSk7Ci0tICAgICAgICBtX3N5c19tZW51LmFwcGVuZChpdGVtKTsK LSsgICAgICAgIG1fc3lzX21lbnUuaW5zZXJ0KGl0ZW0sIC0xKTsKLSAKLS0gICAgICAgIG1fc3lz X21lbnUuYXBwZW5kKG5ldyBHdGsuU2VwYXJhdG9yTWVudUl0ZW0oKSk7Ci0rICAgICAgICBtX3N5 c19tZW51Lmluc2VydChuZXcgR3RrLlNlcGFyYXRvck1lbnVJdGVtKCksIC0xKTsKLSAKLSAgICAg ICAgIGl0ZW0gPSBuZXcgR3RrLk1lbnVJdGVtLndpdGhfbGFiZWwoXygiUmVzdGFydCIpKTsKLSAg ICAgICAgIGl0ZW0uYWN0aXZhdGUuY29ubmVjdCgoaSkgPT4gbV9idXMuZXhpdCh0cnVlKSk7Ci0t ICAgICAgICBtX3N5c19tZW51LmFwcGVuZChpdGVtKTsKLSsgICAgICAgIG1fc3lzX21lbnUuaW5z ZXJ0KGl0ZW0sIC0xKTsKLSAKLSAgICAgICAgIGl0ZW0gPSBuZXcgR3RrLk1lbnVJdGVtLndpdGhf bGFiZWwoXygiUXVpdCIpKTsKLSAgICAgICAgIGl0ZW0uYWN0aXZhdGUuY29ubmVjdCgoaSkgPT4g bV9idXMuZXhpdChmYWxzZSkpOwotLSAgICAgICAgbV9zeXNfbWVudS5hcHBlbmQoaXRlbSk7Ci0r ICAgICAgICBtX3N5c19tZW51Lmluc2VydChpdGVtLCAtMSk7Ci0gCi0gICAgICAgICBtX3N5c19t ZW51LnNob3dfYWxsKCk7Ci0gCi1AQCAtMTQ4OCw3ICsxNDkwLDggQEAgY2xhc3MgUGFuZWwgOiBJ QnVzLlBhbmVsU2VydmljZSB7Ci0gICAgICAgICAvLyBTaG93IHByb3BlcnRpZXMgYW5kIElNRSBz d2l0Y2hpbmcgbWVudQotICAgICAgICAgbV9wcm9wZXJ0eV9tYW5hZ2VyLmNyZWF0ZV9tZW51X2l0 ZW1zKG1faW1lX21lbnUpOwotIAotLSAgICAgICAgbV9pbWVfbWVudS5hcHBlbmQobmV3IEd0ay5T ZXBhcmF0b3JNZW51SXRlbSgpKTsKLSsgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9y Zy9HTk9NRS9ndGsvLS9pc3N1ZXMvNTg3MAotKyAgICAgICAgbV9pbWVfbWVudS5pbnNlcnQobmV3 IEd0ay5TZXBhcmF0b3JNZW51SXRlbSgpLCAtMSk7Ci0gCi0gICAgICAgICAvLyBBcHBlbmQgSU1F cwotICAgICAgICAgZm9yZWFjaCAodmFyIGVuZ2luZSBpbiBtX2VuZ2luZXMpIHsKLWRpZmYgLS1n aXQgYS91aS9ndGszL3N3aXRjaGVyLnZhbGEgYi91aS9ndGszL3N3aXRjaGVyLnZhbGEKLWluZGV4 IGUzZmFiOGQ5Li4yNmJkZWQ5OSAxMDA2NDQKLS0tLSBhL3VpL2d0azMvc3dpdGNoZXIudmFsYQot KysrIGIvdWkvZ3RrMy9zd2l0Y2hlci52YWxhCi1AQCAtNTkyLDcgKzU5Miw5IEBAIGNsYXNzIFN3 aXRjaGVyIDogR3RrLldpbmRvdyB7Ci0gICAgICAgICBpbnQgaW5kZXggPSAwOwotIAotICAgICAg ICAgZm9yZWFjaCAodmFyIHNhdmVkX2xhbmd1YWdlIGluIG1feGtiX2xhbmd1YWdlcy5nZXRfdmFs dWVzKCkpIHsKLS0gICAgICAgICAgICBpZiAobGFuZ3VhZ2UgPT0gc2F2ZWRfbGFuZ3VhZ2VbMDps ZW5ndGhdKQotKyAgICAgICAgICAgIC8vIER1cGxpY2F0ZWQgbGFuZ2F1Z2UgaXMgRU4sIEVOXzIg Zm9yIEUuRy4KLSsgICAgICAgICAgICBpZiAobGVuZ3RoIDw9IHNhdmVkX2xhbmd1YWdlLmxlbmd0 aCAmJgotKyAgICAgICAgICAgICAgICBsYW5ndWFnZSA9PSBzYXZlZF9sYW5ndWFnZVswOmxlbmd0 aF0pCi0gICAgICAgICAgICAgICAgIGluZGV4Kys7Ci0gICAgICAgICB9Ci0gCi0tLSAKLTIuNDEu MAotCi1Gcm9tIDQ4NzJjMWZjZGM4YmJlMTQ2ZTk2N2QwMDRlZGY2M2Y1OTk0YjIxZjggTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci1EYXRlOiBUaHUsIDIxIERlYyAyMDIzIDA4OjI2OjQ4ICswOTAwCi1TdWJqZWN0OiBb UEFUQ0hdIHNyYy9pYnVzZW5naW5lc2ltcGxlLmM6IERvbid0IGNvbW1pdCBhbnkgY2hhcmFjdGVy cwotCi1SZXZlcnQgYSBwYXJ0IG9mIHRoZSBwcmV2aW91cyBwYXRjaCBvZiAjMjQ5NSBiZWNhdXNl IGl0IGV4cGxhaW5zCi0iU3VwZXItc3BhY2UgYW5kIHNwYWNlIGtleSBjYW4gbGF1bmNoIElCdXMg RW1vamllci4iIGJ1dCBJIGNhbm5vdAotcmVtZW1iZXIgd2hhdCBJIHRyaWVkIHRvIGZpeC4KLQot SUJ1cyBYS0IgZW5naW5lcyBzaG91bGQgbm90IGNvbW1pdCBhbnkga2V5c3ltcyBiZWZvcmUgdGhl IGtleSBldmVudCBpcwotc2VudCB0byB0aGUgYXBwbGljYXRpb24gd2l0aCBJQlVTX0lHTk9SRURf TUFTSyBmbGFnIGV2ZW4gaWYgdGhlIGtleQotaXMgbm90IGFuIEFTQ0lJIGJlY2F1c2UgYW55IGNo YXJhY3RlcnMgY2FuIGJlIGNvbnRyb2wgY2hhcmFjdGVycwotYnkgYXBwbGljYXRpb24uCi1FLmcu IFZJTSBjdXJzb3IgbW9kZSAiaGprbCIga2V5cyBvciBnYW1lIGN1cnNvciBrZXlzIHdpdGggbGFu Z3VhZ2UKLWxheW91dHMuCi0KLUZpeGVzOiBodHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2Nv bW1pdC9hZDg4M2RjCi0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3Vlcy8y NTg4Ci0tLS0KLSBjbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMgfCAgNiArKysrKysKLSBzcmMv aWJ1c2VuZ2luZXNpbXBsZS5jICAgICAgfCAxNSArKysrKysrKysrLS0tLS0KLSAyIGZpbGVzIGNo YW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9j bGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMgYi9jbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMK LWluZGV4IGNmYzA4YzIwLi5lYmM4ZDg2OSAxMDA2NDQKLS0tLSBhL2NsaWVudC9ndGsyL2lidXNp bWNvbnRleHQuYwotKysrIGIvY2xpZW50L2d0azIvaWJ1c2ltY29udGV4dC5jCi1AQCAtMzYxLDYg KzM2MSwxMiBAQCBpYnVzX2ltX2NvbnRleHRfY29tbWl0X2V2ZW50IChJQnVzSU1Db250ZXh0ICpp YnVzaW1jb250ZXh0LAotICAgICAgICAga2V5dmFsID09IEdES19LRVlfS1BfRW50ZXIpIHsKLSAg ICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgfQotKyAgICAvKiAjMjU4OCBJZiBJQnVzIHRyaWVz IHRvIGNvbW1pdCBhIGNoYXJhY3RlciwgaXQgc2hvdWxkIGJlIGZvcndhcmRlZCB0bwotKyAgICAg KiB0aGUgYXBwbGljYXRpb24gYXQgb25jZSB3aXRoIElCVVNfSUdOT1JFRF9NQVNLIGJlZm9yZSB0 aGUgYWN0dWFsCi0rICAgICAqIGNvbW1pdCBiZWNhdXNlIGFueSBjaGFyYWN0ZXJzIGNhbiBiZSBj b250cm9sIGNoYXJhY3RlcnMgZXZlbiBpZgotKyAgICAgKiB0aGV5IGFyZSBub3QgQVNDSUkgY2hh cmFjdGVycywgZS5nLiBnYW1lIGN1cnNvciBrZXlzIHdpdGggYQotKyAgICAgKiBsYW5ndWFnZSBr ZXlib2FyZCBsYXlvdXQgbGlrZXMgVklNIGN1cnNvciBtb2RlICAiaGprbCIga2V5cy4KLSsgICAg ICovCi0gICAgIGNoID0gaWJ1c19rZXl2YWxfdG9fdW5pY29kZSAoa2V5dmFsKTsKLSAgICAgaWYg KGNoICE9IDAgJiYgIWdfdW5pY2hhcl9pc2NudHJsIChjaCkpIHsKLSAgICAgICAgIElCdXNUZXh0 ICp0ZXh0ID0gaWJ1c190ZXh0X25ld19mcm9tX3VuaWNoYXIgKGNoKTsKLWRpZmYgLS1naXQgYS9z cmMvaWJ1c2VuZ2luZXNpbXBsZS5jIGIvc3JjL2lidXNlbmdpbmVzaW1wbGUuYwotaW5kZXggMzFj YjQxNmMuLjRiZWU4Y2IzIDEwMDY0NAotLS0tIGEvc3JjL2lidXNlbmdpbmVzaW1wbGUuYwotKysr IGIvc3JjL2lidXNlbmdpbmVzaW1wbGUuYwotQEAgLTY0NywxMiArNjQ3LDE3IEBAIG5vX3NlcXVl bmNlX21hdGNoZXMgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKLSAKLSAgICAgICAgIGlidXNf ZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUpOwotICAgICAgICAgY2gg PSBpYnVzX2tleXZhbF90b191bmljb2RlIChrZXl2YWwpOwotLSAgICAgICAgLyogSUJVU19DSEFO R0U6IFJIIzc2OTEzMwotLSAgICAgICAgICogU2luY2Ugd2UgdXNlIGlidXMgeGtiIGVuZ2luZXMg YXMgdGhlIGRpc2FibGUgc3RhdGUsCi0tICAgICAgICAgKiBTdXBlci1zcGFjZSBhbmQgc3BhY2Ug a2V5IGNhbiBsYXVuY2ggSUJ1cyBFbW9qaWVyLgotKyAgICAgICAgLyogSUJVU19DSEFOR0U6IFJI Izc2OTEzMywgIzI1ODgKLSsgICAgICAgICAqIFNpbmNlIHdlIHVzZSBpYnVzIHhrYiBlbmdpbmVz IGFzIHRoZSBkaXNhYmxlIElNIG1vZGUsCi0rICAgICAgICAgKiBkbyBub3QgY29tbWl0IHRoZSBj aGFyYWN0ZXJzIGxvY2FsbHkgd2l0aG91dCBpbl9oZXhfc2VxdWVuY2UuCi0rICAgICAgICAgKiBJ ZiBJQnVzIHRyaWVzIHRvIGNvbW1pdCBhIGNoYXJhY3RlciwgaXQgc2hvdWxkIGJlIGZvcndhcmRl ZCB0bwotKyAgICAgICAgICogdGhlIGFwcGxpY2F0aW9uIGF0IG9uY2Ugd2l0aCBJQlVTX0lHTk9S RURfTUFTSyBiZWZvcmUgdGhlIGFjdHVhbAotKyAgICAgICAgICogY29tbWl0IGJlY2F1c2UgYW55 IGNoYXJhY3RlcnMgY2FuIGJlIGNvbnRyb2wgY2hhcmFjdGVycyBldmVuIGlmCi0rICAgICAgICAg KiB0aGV5IGFyZSBub3QgQVNDSUkgY2hhcmFjdGVycywgZS5nLiBnYW1lIGN1cnNvciBrZXlzIHdp dGggYQotKyAgICAgICAgICogbGFuZ3VhZ2Uga2V5Ym9hcmQgbGF5b3V0IGxpa2VzIFZJTSBjdXJz b3IgbW9kZSAgImhqa2wiIGtleXMuCi0gICAgICAgICAgKi8KLS0gICAgICAgIGlmIChjaCAhPSAw ICYmICFnX3VuaWNoYXJfaXNjbnRybCAoY2gpICYmIGNoID4gMHg3RikgewotLSAgICAgICAgICAg IGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfY2hhciAoc2ltcGxlLCBjaCk7Ci0rICAgICAgICBp ZiAoY2ggIT0gMCAmJiAhZ191bmljaGFyX2lzY250cmwgKGNoKSAmJgotKyAgICAgICAgICAgIHBy aXYtPmluX2hleF9zZXF1ZW5jZSkgewotICAgICAgICAgICAgIHJldHVybiBUUlVFOwotICAgICAg ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0tLSAKLTIuNDMuMAotCg==