ZGlmZiAtLWdpdCBhL2ZzL2Fmcy92bGNsaWVudC5oIGIvZnMvYWZzL3ZsY2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNkNjAxMQotLS0gL2Rldi9udWxsCisrKyBiL2ZzL2Fmcy92bGNsaWVudC5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qIHZsY2xpZW50Lmg6IFZvbHVtZSBMb2NhdGlvbiBTZXJ2aWNlIGNsaWVudCBpbnRlcmZhY2UKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIgUmVkIEhhdCwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogV3JpdHRlbiBieSBEYXZpZCBIb3dlbGxzIChkaG93ZWxsc0ByZWRoYXQuY29tKQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24KKyAqIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2lmbmRlZiBfTElOVVhfQUZTX1ZMQ0xJRU5UX0gKKyNkZWZpbmUgX0xJTlVYX0FGU19WTENMSUVOVF9ICisKKyNpbmNsdWRlICJ0eXBlcy5oIgorCitlbnVtIEFGU1ZMX0Vycm9ycyB7CisJQUZTVkxfSURFWElTVCAJCT0gMzYzNTIwLAkvKiBWb2x1bWUgSWQgZW50cnkgZXhpc3RzIGluIHZsIGRhdGFiYXNlICovCisJQUZTVkxfSU8gCQk9IDM2MzUyMSwJLyogSS9PIHJlbGF0ZWQgZXJyb3IgKi8KKwlBRlNWTF9OQU1FRVhJU1QgCT0gMzYzNTIyLAkvKiBWb2x1bWUgbmFtZSBlbnRyeSBleGlzdHMgaW4gdmwgZGF0YWJhc2UgKi8KKwlBRlNWTF9DUkVBVEVGQUlMIAk9IDM2MzUyMywJLyogSW50ZXJuYWwgY3JlYXRpb24gZmFpbHVyZSAqLworCUFGU1ZMX05PRU5UIAkJPSAzNjM1MjQsCS8qIE5vIHN1Y2ggZW50cnkgKi8KKwlBRlNWTF9FTVBUWSAJCT0gMzYzNTI1LAkvKiBWbCBkYXRhYmFzZSBpcyBlbXB0eSAqLworCUFGU1ZMX0VOVERFTEVURUQgCT0gMzYzNTI2LAkvKiBFbnRyeSBpcyBkZWxldGVkIChzb2Z0IGRlbGV0ZSkgKi8KKwlBRlNWTF9CQUROQU1FIAkJPSAzNjM1MjcsCS8qIFZvbHVtZSBuYW1lIGlzIGlsbGVnYWwgKi8KKwlBRlNWTF9CQURJTkRFWCAJCT0gMzYzNTI4LAkvKiBJbmRleCBpcyBvdXQgb2YgcmFuZ2UgKi8KKwlBRlNWTF9CQURWT0xUWVBFIAk9IDM2MzUyOSwJLyogQmFkIHZvbHVtZSB0eXBlICovCisJQUZTVkxfQkFEU0VSVkVSIAk9IDM2MzUzMCwJLyogSWxsZWdhbCBzZXJ2ZXIgbnVtYmVyIChvdXQgb2YgcmFuZ2UpICovCisJQUZTVkxfQkFEUEFSVElUSU9OIAk9IDM2MzUzMSwJLyogQmFkIHBhcnRpdGlvbiBudW1iZXIgKi8KKwlBRlNWTF9SRVBTRlVMTCAJCT0gMzYzNTMyLAkvKiBSdW4gb3V0IG9mIHNwYWNlIGZvciBSZXBsaWNhdGlvbiBzaXRlcyAqLworCUFGU1ZMX05PUkVQU0VSVkVSIAk9IDM2MzUzMywJLyogTm8gc3VjaCBSZXBsaWNhdGlvbiBzZXJ2ZXIgc2l0ZSBleGlzdHMgKi8KKwlBRlNWTF9EVVBSRVBTRVJWRVIgCT0gMzYzNTM0LAkvKiBSZXBsaWNhdGlvbiBzaXRlIGFscmVhZHkgZXhpc3RzICovCisJQUZTVkxfUldOT1RGT1VORCAJPSAzNjM1MzUsCS8qIFBhcmVudCBSL1cgZW50cnkgbm90IGZvdW5kICovCisJQUZTVkxfQkFEUkVGQ09VTlQgCT0gMzYzNTM2LAkvKiBJbGxlZ2FsIFJlZmVyZW5jZSBDb3VudCBudW1iZXIgKi8KKwlBRlNWTF9TSVpFRVhDRUVERUQgCT0gMzYzNTM3LAkvKiBWbCBzaXplIGZvciBhdHRyaWJ1dGVzIGV4Y2VlZGVkICovCisJQUZTVkxfQkFERU5UUlkgCQk9IDM2MzUzOCwJLyogQmFkIGluY29taW5nIHZsIGVudHJ5ICovCisJQUZTVkxfQkFEVk9MSURCVU1QIAk9IDM2MzUzOSwJLyogSWxsZWdhbCBtYXggdm9saWQgaW5jcmVtZW50ICovCisJQUZTVkxfSURBTFJFQURZSEFTSEVEIAk9IDM2MzU0MCwJLyogUk8vQkFDSyBpZCBhbHJlYWR5IGhhc2hlZCAqLworCUFGU1ZMX0VOVFJZTE9DS0VEIAk9IDM2MzU0MSwJLyogVmwgZW50cnkgaXMgYWxyZWFkeSBsb2NrZWQgKi8KKwlBRlNWTF9CQURWT0xPUEVSIAk9IDM2MzU0MiwJLyogQmFkIHZvbHVtZSBvcGVyYXRpb24gY29kZSAqLworCUFGU1ZMX0JBRFJFTExPQ0tUWVBFIAk9IDM2MzU0MywJLyogQmFkIHJlbGVhc2UgbG9jayB0eXBlICovCisJQUZTVkxfUkVSRUxFQVNFIAk9IDM2MzU0NCwJLyogU3RhdHVzIHJlcG9ydDogbGFzdCByZWxlYXNlIHdhcyBhYm9ydGVkICovCisJQUZTVkxfQkFEU0VSVkVSRkxBRyAJPSAzNjM1NDUsCS8qIEludmFsaWQgcmVwbGljYXRpb24gc2l0ZSBzZXJ2ZXIgsGFnICovCisJQUZTVkxfUEVSTSAJCT0gMzYzNTQ2LAkvKiBObyBwZXJtaXNzaW9uIGFjY2VzcyAqLworCUFGU1ZMX05PTUVNIAkJPSAzNjM1NDcsCS8qIG1hbGxvYy9yZWFsbG9jIGZhaWxlZCB0byBhbGxvYyBlbm91Z2ggbWVtb3J5ICovCit9OworCisvKiBtYXBzIHRvICJzdHJ1Y3QgdmxkYmVudHJ5IiBpbiB2dmwtc3BlYy5wZGYgKi8KK3N0cnVjdCBhZnNfdmxkYmVudHJ5IHsKKwljaGFyCQluYW1lWzY1XTsJCS8qIG5hbWUgb2Ygdm9sdW1lIChpbmNsdWRpbmcgTlVMIGNoYXIpICovCisJYWZzX3ZvbHR5cGVfdAl0eXBlOwkJCS8qIHZvbHVtZSB0eXBlICovCisJdW5zaWduZWQJbnVtX3NlcnZlcnM7CQkvKiBudW0gc2VydmVycyB0aGF0IGhvbGQgaW5zdGFuY2VzIG9mIHRoaXMgdm9sICovCisJdW5zaWduZWQJY2xvbmVfaWQ7CQkvKiBjbG9uaW5nIElEICovCisKKwl1bnNpZ25lZAlmbGFnczsKKyNkZWZpbmUgQUZTX1ZMRl9SV0VYSVNUUwkweDEwMDAJCS8qIFIvVyB2b2x1bWUgZXhpc3RzICovCisjZGVmaW5lIEFGU19WTEZfUk9FWElTVFMJMHgyMDAwCQkvKiBSL08gdm9sdW1lIGV4aXN0cyAqLworI2RlZmluZSBBRlNfVkxGX0JBQ0tFWElTVFMJMHg0MDAwCQkvKiBiYWNrdXAgdm9sdW1lIGV4aXN0cyAqLworCisJYWZzX3ZvbGlkX3QJdm9sdW1lX2lkc1szXTsJCS8qIHZvbHVtZSBJRHMgKi8KKworCXN0cnVjdCB7CisJCXN0cnVjdCBpbl9hZGRyCWFkZHI7CQkvKiBzZXJ2ZXIgYWRkcmVzcyAqLworCQl1bnNpZ25lZAlwYXJ0aXRpb247CS8qIHBhcnRpdGlvbiBJRCBvbiB0aGlzIHNlcnZlciAqLworCQl1bnNpZ25lZAlmbGFnczsJCS8qIHNlcnZlciBzcGVjaWZpYyBmbGFncyAqLworI2RlZmluZSBBRlNfVkxTRl9ORVdSRVBTSVRFCTB4MDAwMQkvKiB1bnVzZWQgKi8KKyNkZWZpbmUgQUZTX1ZMU0ZfUk9WT0wJCTB4MDAwMgkvKiB0aGlzIHNlcnZlciBob2xkcyBhIFIvTyBpbnN0YW5jZSBvZiB0aGUgdm9sdW1lICovCisjZGVmaW5lIEFGU19WTFNGX1JXVk9MCQkweDAwMDQJLyogdGhpcyBzZXJ2ZXIgaG9sZHMgYSBSL1cgaW5zdGFuY2Ugb2YgdGhlIHZvbHVtZSAqLworI2RlZmluZSBBRlNfVkxTRl9CQUNLVk9MCTB4MDAwOAkvKiB0aGlzIHNlcnZlciBob2xkcyBhIGJhY2t1cCBpbnN0YW5jZSBvZiB0aGUgdm9sdW1lICovCisJfSBzZXJ2ZXJzWzhdOworCit9OworCisvKiBsb29rIHVwIGEgdm9sdW1lIGxvY2F0aW9uIGRhdGFiYXNlIGVudHJ5IGJ5IG5hbWUgKi8KK2V4dGVybiBpbnQgYWZzX3J4dmxfZ2V0X2VudHJ5X2J5X25hbWUoc3RydWN0IGFmc19zZXJ2ZXIgKnNlcnZlciwKKwkJCQkgICAgICBjb25zdCBjaGFyICp2b2xuYW1lLAorCQkJCSAgICAgIHVuc2lnbmVkIHZvbG5hbWVzeiwKKwkJCQkgICAgICBzdHJ1Y3QgYWZzX2NhY2hlX3Zsb2NhdGlvbiAqZW50cnkpOworCisvKiBsb29rIHVwIGEgdm9sdW1lIGxvY2F0aW9uIGRhdGFiYXNlIGVudHJ5IGJ5IElEICovCitleHRlcm4gaW50IGFmc19yeHZsX2dldF9lbnRyeV9ieV9pZChzdHJ1Y3QgYWZzX3NlcnZlciAqc2VydmVyLAorCQkJCSAgICBhZnNfdm9saWRfdAl2b2xpZCwKKwkJCQkgICAgYWZzX3ZvbHR5cGVfdCB2b2x0eXBlLAorCQkJCSAgICBzdHJ1Y3QgYWZzX2NhY2hlX3Zsb2NhdGlvbiAqZW50cnkpOworCitleHRlcm4gaW50IGFmc19yeHZsX2dldF9lbnRyeV9ieV9pZF9hc3luYyhzdHJ1Y3QgYWZzX2FzeW5jX29wICpvcCwKKwkJCQkJICBhZnNfdm9saWRfdCB2b2xpZCwKKwkJCQkJICBhZnNfdm9sdHlwZV90IHZvbHR5cGUpOworCitleHRlcm4gaW50IGFmc19yeHZsX2dldF9lbnRyeV9ieV9pZF9hc3luYzIoc3RydWN0IGFmc19hc3luY19vcCAqb3AsCisJCQkJCSAgIHN0cnVjdCBhZnNfY2FjaGVfdmxvY2F0aW9uICplbnRyeSk7CisKKyNlbmRpZiAvKiBfTElOVVhfQUZTX1ZMQ0xJRU5UX0ggKi8K