From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S261252AbVFYPJ1 (ORCPT ); Sat, 25 Jun 2005 11:09:27 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S261260AbVFYPJ1 (ORCPT ); Sat, 25 Jun 2005 11:09:27 -0400 Received: from wproxy.gmail.com ([64.233.184.200]:13853 "EHLO wproxy.gmail.com") by vger.kernel.org with ESMTP id S261252AbVFYPIy (ORCPT ); Sat, 25 Jun 2005 11:08:54 -0400 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:mime-version:content-type; b=PJEhWeDpi2BUOyJRzIBgq+XHK58FA0jRN4lFlSRyR2ou+OT0ExyQzHhp/HKzWP5K+4KAwfNcjbTucXuejpw0Lj4wQM33gkxJ3mkQ6PTv/Hdlsbs5ecLnsMgTC66GDqsorUxfc2CYGYllkA7cZn1qEzA8lSiZPpAczaM99ZfOmGo= Message-ID: Date: Sat, 25 Jun 2005 17:08:53 +0200 From: Paolo Marchetti Reply-To: Paolo Marchetti To: Dave Jones , Alexey Dobriyan , kernel Subject: [PATCH] cpufreq: ondemand+conservative=condemand Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_19940_32121382.1119712133470" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org ------=_Part_19940_32121382.1119712133470 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hello world! Dave, please consider this patch. I'm a newbie so I'm sure I've done a lot of mistakes starting with the ugly name :) Sorry in advance. 'condemand' - This driver adds a dynamic cpufreq policy governor. The governor does a periodic polling and=20 changes frequency based on the CPU utilization. The support for this governor depends on CPU capability to do fast frequency switching (i.e, very low latency frequency transitions).=20 This driver takes inspiration (and code) from the ondemand and conservative governors, it does fast scale down like ondemand and gradual scale up like conservative. By making a contribution to this project, I certify that: The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file. Signed-off-by: Paolo Marchetti --- Patch attached (second mistake) ------=_Part_19940_32121382.1119712133470 Content-Type: application/octet-stream; name="condemand.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="condemand.patch" ZGlmZiAtdXByTiAtWCBkb250ZGlmZiBsaW51eC0yLjYuMTIvZHJpdmVycy9jcHVmcmVxL2NwdWZy ZXFfY29uZGVtYW5kLmMgbXktbGludXgtMi42LjEyL2RyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxX2Nv bmRlbWFuZC5jCi0tLSBsaW51eC0yLjYuMTIvZHJpdmVycy9jcHVmcmVxL2NwdWZyZXFfY29uZGVt YW5kLmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIG15LWxpbnV4LTIu Ni4xMi9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcV9jb25kZW1hbmQuYwkyMDA1LTA2LTI1IDE2OjMw OjQ2LjAwMDAwMDAwMCArMDIwMApAQCAtMCwwICsxLDUzMiBAQAorLyoKKyAqICBkcml2ZXJzL2Nw dWZyZXEvY3B1ZnJlcV9jb25kZW1hbmQuYworICoKKyAqICBDb3B5cmlnaHQgKEMpICAyMDA1IFBh b2xvIE1hcmNoZXR0aSA8bmF0cnl1bUBnbWFpbC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAq IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVy c2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4K KyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+CisjaW5jbHVkZSA8bGludXgvc21wLmg+CisjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KKyNp bmNsdWRlIDxsaW51eC9jcHVmcmVxLmg+CisjaW5jbHVkZSA8bGludXgvc3lzY3RsLmg+CisjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9mcy5oPgorI2luY2x1ZGUgPGxp bnV4L3N5c2ZzLmg+CisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9r bW9kLmg+CisjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CisjaW5jbHVkZSA8bGludXgvamlm Zmllcy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbF9zdGF0Lmg+CisjaW5jbHVkZSA8bGludXgv cGVyY3B1Lmg+CisKKy8qCisgKiBkYnMgaXMgdXNlZCBpbiB0aGlzIGZpbGUgYXMgYSBzaG9ydGZv cm0gZm9yIGRlbWFuZGJhc2VkIHN3aXRjaGluZworICogSXQgaGVscHMgdG8ga2VlcCB2YXJpYWJs ZSBuYW1lcyBzbWFsbGVyLCBzaW1wbGVyCisgKi8KKworI2RlZmluZSBERUZfRlJFUVVFTkNZX1VQ X1RIUkVTSE9MRAkJKDgwKQorI2RlZmluZSBNSU5fRlJFUVVFTkNZX1VQX1RIUkVTSE9MRAkJKDEx KQorI2RlZmluZSBNQVhfRlJFUVVFTkNZX1VQX1RIUkVTSE9MRAkJKDEwMCkKKworLyogCisgKiBU aGUgcG9sbGluZyBmcmVxdWVuY3kgb2YgdGhpcyBnb3Zlcm5vciBkZXBlbmRzIG9uIHRoZSBjYXBh YmlsaXR5IG9mIAorICogdGhlIHByb2Nlc3Nvci4gRGVmYXVsdCBwb2xsaW5nIGZyZXF1ZW5jeSBp cyAxMDAwIHRpbWVzIHRoZSB0cmFuc2l0aW9uCisgKiBsYXRlbmN5IG9mIHRoZSBwcm9jZXNzb3Iu IFRoZSBnb3Zlcm5vciB3aWxsIHdvcmsgb24gYW55IHByb2Nlc3NvciB3aXRoIAorICogdHJhbnNp dGlvbiBsYXRlbmN5IDw9IDEwbVMsIHVzaW5nIGFwcHJvcHJpYXRlIHNhbXBsaW5nIAorICogcmF0 ZS4KKyAqIEZvciBDUFVzIHdpdGggdHJhbnNpdGlvbiBsYXRlbmN5ID4gMTBtUyAobW9zdGx5IGRy aXZlcnMgd2l0aCBDUFVGUkVRX0VURVJOQUwpCisgKiB0aGlzIGdvdmVybm9yIHdpbGwgbm90IHdv cmsuCisgKiBBbGwgdGltZXMgaGVyZSBhcmUgaW4gdVMuCisgKi8KK3N0YXRpYyB1bnNpZ25lZCBp bnQgCQkJCWRlZl9zYW1wbGluZ19yYXRlOworI2RlZmluZSBNSU5fU0FNUExJTkdfUkFURQkJCShk ZWZfc2FtcGxpbmdfcmF0ZSAvIDIpCisjZGVmaW5lIE1BWF9TQU1QTElOR19SQVRFCQkJKDUwMCAq IGRlZl9zYW1wbGluZ19yYXRlKQorI2RlZmluZSBERUZfU0FNUExJTkdfUkFURV9MQVRFTkNZX01V TFRJUExJRVIJKDEwMDApCisjZGVmaW5lIERFRl9TQU1QTElOR19ET1dOX0ZBQ1RPUgkJKDEpCisj ZGVmaW5lIE1BWF9TQU1QTElOR19ET1dOX0ZBQ1RPUgkJKDEwKQorI2RlZmluZSBUUkFOU0lUSU9O X0xBVEVOQ1lfTElNSVQJCSgxMCAqIDEwMDApCisKK3N0YXRpYyB2b2lkIGRvX2Ric190aW1lcih2 b2lkICpkYXRhKTsKKworc3RydWN0IGNwdV9kYnNfaW5mb19zIHsKKwlzdHJ1Y3QgY3B1ZnJlcV9w b2xpY3kgCSpjdXJfcG9saWN5OworCXVuc2lnbmVkIGludCAJCXByZXZfY3B1X2lkbGVfdXA7CisJ dW5zaWduZWQgaW50IAkJcHJldl9jcHVfaWRsZV9kb3duOworCXVuc2lnbmVkIGludCAJCWVuYWJs ZTsKK307CitzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGNwdV9kYnNfaW5mb19zLCBjcHVf ZGJzX2luZm8pOworCitzdGF0aWMgdW5zaWduZWQgaW50IGRic19lbmFibGU7CS8qIG51bWJlciBv ZiBDUFVzIHVzaW5nIHRoaXMgcG9saWN5ICovCisKK3N0YXRpYyBERUNMQVJFX01VVEVYIAkoZGJz X3NlbSk7CitzdGF0aWMgREVDTEFSRV9XT1JLCShkYnNfd29yaywgZG9fZGJzX3RpbWVyLCBOVUxM KTsKKworc3RydWN0IGRic190dW5lcnMgeworCXVuc2lnbmVkIGludCAJCXNhbXBsaW5nX3JhdGU7 CisJdW5zaWduZWQgaW50CQlzYW1wbGluZ19kb3duX2ZhY3RvcjsKKwl1bnNpZ25lZCBpbnQJCXVw X3RocmVzaG9sZDsKKwl1bnNpZ25lZCBpbnQJCWlnbm9yZV9uaWNlOworCXVuc2lnbmVkIGludAkJ ZnJlcV9zdGVwOworfTsKKworc3RhdGljIHN0cnVjdCBkYnNfdHVuZXJzIGRic190dW5lcnNfaW5z ID0geworCS51cF90aHJlc2hvbGQgCQk9IERFRl9GUkVRVUVOQ1lfVVBfVEhSRVNIT0xELAorCS5z YW1wbGluZ19kb3duX2ZhY3RvciAJPSBERUZfU0FNUExJTkdfRE9XTl9GQUNUT1IsCit9OworCitz dGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRfY3B1X2lkbGVfdGltZSh1bnNpZ25lZCBpbnQg Y3B1KQoreworCXJldHVybglrc3RhdF9jcHUoY3B1KS5jcHVzdGF0LmlkbGUgKworCQlrc3RhdF9j cHUoY3B1KS5jcHVzdGF0Lmlvd2FpdCArCisJCSggIWRic190dW5lcnNfaW5zLmlnbm9yZV9uaWNl ID8gCisJCSAga3N0YXRfY3B1KGNwdSkuY3B1c3RhdC5uaWNlIDoKKwkJICAwKTsKK30KKworLyoq KioqKioqKioqKioqKioqKioqKioqKioqIHN5c2ZzIGludGVyZmFjZSAqKioqKioqKioqKioqKioq KioqKioqKiovCitzdGF0aWMgc3NpemVfdCBzaG93X3NhbXBsaW5nX3JhdGVfbWF4KHN0cnVjdCBj cHVmcmVxX3BvbGljeSAqcG9saWN5LCBjaGFyICpidWYpCit7CisJcmV0dXJuIHNwcmludGYgKGJ1 ZiwgIiV1XG4iLCBNQVhfU0FNUExJTkdfUkFURSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHNob3df c2FtcGxpbmdfcmF0ZV9taW4oc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3ksIGNoYXIgKmJ1 ZikKK3sKKwlyZXR1cm4gc3ByaW50ZiAoYnVmLCAiJXVcbiIsIE1JTl9TQU1QTElOR19SQVRFKTsK K30KKworI2RlZmluZSBkZWZpbmVfb25lX3JvKF9uYW1lKSAJCQkJCVwKK3N0YXRpYyBzdHJ1Y3Qg ZnJlcV9hdHRyIF9uYW1lID0gIAkJCQlcCitfX0FUVFIoX25hbWUsIDA0NDQsIHNob3dfIyNfbmFt ZSwgTlVMTCkKKworZGVmaW5lX29uZV9ybyhzYW1wbGluZ19yYXRlX21heCk7CitkZWZpbmVfb25l X3JvKHNhbXBsaW5nX3JhdGVfbWluKTsKKworLyogY3B1ZnJlcV9jb25kZW1hbmQgR292ZXJub3Ig VHVuYWJsZXMgKi8KKyNkZWZpbmUgc2hvd19vbmUoZmlsZV9uYW1lLCBvYmplY3QpCQkJCQlcCitz dGF0aWMgc3NpemVfdCBzaG93XyMjZmlsZV9uYW1lCQkJCQkJXAorKHN0cnVjdCBjcHVmcmVxX3Bv bGljeSAqdW51c2VkLCBjaGFyICpidWYpCQkJCVwKK3sJCQkJCQkJCQlcCisJcmV0dXJuIHNwcmlu dGYoYnVmLCAiJXVcbiIsIGRic190dW5lcnNfaW5zLm9iamVjdCk7CQlcCit9CitzaG93X29uZShz YW1wbGluZ19yYXRlLCBzYW1wbGluZ19yYXRlKTsKK3Nob3dfb25lKHNhbXBsaW5nX2Rvd25fZmFj dG9yLCBzYW1wbGluZ19kb3duX2ZhY3Rvcik7CitzaG93X29uZSh1cF90aHJlc2hvbGQsIHVwX3Ro cmVzaG9sZCk7CitzaG93X29uZShpZ25vcmVfbmljZSwgaWdub3JlX25pY2UpOworc2hvd19vbmUo ZnJlcV9zdGVwLCBmcmVxX3N0ZXApOworCitzdGF0aWMgc3NpemVfdCBzdG9yZV9zYW1wbGluZ19k b3duX2ZhY3RvcihzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnVudXNlZCwgCisJCWNvbnN0IGNoYXIg KmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXVuc2lnbmVkIGludCBpbnB1dDsKKwlpbnQgcmV0Owor CXJldCA9IHNzY2FuZiAoYnVmLCAiJXUiLCAmaW5wdXQpOworCWlmIChyZXQgIT0gMSApCisJCXJl dHVybiAtRUlOVkFMOworCisJaWYgKGlucHV0ID4gTUFYX1NBTVBMSU5HX0RPV05fRkFDVE9SIHx8 IGlucHV0IDwgMSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlkb3duKCZkYnNfc2VtKTsKKwlkYnNf dHVuZXJzX2lucy5zYW1wbGluZ19kb3duX2ZhY3RvciA9IGlucHV0OworCXVwKCZkYnNfc2VtKTsK KworCXJldHVybiBjb3VudDsKK30KKworc3RhdGljIHNzaXplX3Qgc3RvcmVfc2FtcGxpbmdfcmF0 ZShzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnVudXNlZCwgCisJCWNvbnN0IGNoYXIgKmJ1Ziwgc2l6 ZV90IGNvdW50KQoreworCXVuc2lnbmVkIGludCBpbnB1dDsKKwlpbnQgcmV0OworCXJldCA9IHNz Y2FuZiAoYnVmLCAiJXUiLCAmaW5wdXQpOworCisJZG93bigmZGJzX3NlbSk7CisJaWYgKHJldCAh PSAxIHx8IGlucHV0ID4gTUFYX1NBTVBMSU5HX1JBVEUgfHwgaW5wdXQgPCBNSU5fU0FNUExJTkdf UkFURSkgeworCQl1cCgmZGJzX3NlbSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWRic190 dW5lcnNfaW5zLnNhbXBsaW5nX3JhdGUgPSBpbnB1dDsKKwl1cCgmZGJzX3NlbSk7CisKKwlyZXR1 cm4gY291bnQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHN0b3JlX3VwX3RocmVzaG9sZChzdHJ1Y3Qg Y3B1ZnJlcV9wb2xpY3kgKnVudXNlZCwgCisJCWNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50 KQoreworCXVuc2lnbmVkIGludCBpbnB1dDsKKwlpbnQgcmV0OworCXJldCA9IHNzY2FuZiAoYnVm LCAiJXUiLCAmaW5wdXQpOworCisJZG93bigmZGJzX3NlbSk7CisJaWYgKHJldCAhPSAxIHx8IGlu cHV0ID4gTUFYX0ZSRVFVRU5DWV9VUF9USFJFU0hPTEQgfHwgCisJCQlpbnB1dCA8IE1JTl9GUkVR VUVOQ1lfVVBfVEhSRVNIT0xEKSB7CisJCXVwKCZkYnNfc2VtKTsKKwkJcmV0dXJuIC1FSU5WQUw7 CisJfQorCisJZGJzX3R1bmVyc19pbnMudXBfdGhyZXNob2xkID0gaW5wdXQ7CisJdXAoJmRic19z ZW0pOworCisJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgc3NpemVfdCBzdG9yZV9pZ25vcmVf bmljZShzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBvbGljeSwKKwkJY29uc3QgY2hhciAqYnVmLCBz aXplX3QgY291bnQpCit7CisJdW5zaWduZWQgaW50IGlucHV0OworCWludCByZXQ7CisKKwl1bnNp Z25lZCBpbnQgajsKKwkKKwlyZXQgPSBzc2NhbmYgKGJ1ZiwgIiV1IiwgJmlucHV0KTsKKwlpZiAo IHJldCAhPSAxICkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoIGlucHV0ID4gMSApCisJCWlu cHV0ID0gMTsKKwkKKwlkb3duKCZkYnNfc2VtKTsKKwlpZiAoIGlucHV0ID09IGRic190dW5lcnNf aW5zLmlnbm9yZV9uaWNlICkgeyAvKiBub3RoaW5nIHRvIGRvICovCisJCXVwKCZkYnNfc2VtKTsK KwkJcmV0dXJuIGNvdW50OworCX0KKwlkYnNfdHVuZXJzX2lucy5pZ25vcmVfbmljZSA9IGlucHV0 OworCisJLyogd2UgbmVlZCB0byByZS1ldmFsdWF0ZSBwcmV2X2NwdV9pZGxlX3VwIGFuZCBwcmV2 X2NwdV9pZGxlX2Rvd24gKi8KKwlmb3JfZWFjaF9vbmxpbmVfY3B1KGopIHsKKwkJc3RydWN0IGNw dV9kYnNfaW5mb19zICpqX2Ric19pbmZvOworCQlqX2Ric19pbmZvID0gJnBlcl9jcHUoY3B1X2Ri c19pbmZvLCBqKTsKKwkJal9kYnNfaW5mby0+cHJldl9jcHVfaWRsZV91cCA9IGdldF9jcHVfaWRs ZV90aW1lKGopOworCQlqX2Ric19pbmZvLT5wcmV2X2NwdV9pZGxlX2Rvd24gPSBqX2Ric19pbmZv LT5wcmV2X2NwdV9pZGxlX3VwOworCX0KKwl1cCgmZGJzX3NlbSk7CisKKwlyZXR1cm4gY291bnQ7 Cit9CisKK3N0YXRpYyBzc2l6ZV90IHN0b3JlX2ZyZXFfc3RlcChzdHJ1Y3QgY3B1ZnJlcV9wb2xp Y3kgKnBvbGljeSwKKwkJY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJdW5zaWdu ZWQgaW50IGlucHV0OworCWludCByZXQ7CisKKwlyZXQgPSBzc2NhbmYgKGJ1ZiwgIiV1IiwgJmlu cHV0KTsKKworCWlmICggcmV0ICE9IDEgKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICggaW5w dXQgPiAxMDAgKQorCQlpbnB1dCA9IDEwMDsKKwkKKwkvKiBubyBuZWVkIHRvIHRlc3QgaGVyZSBp ZiBmcmVxX3N0ZXAgaXMgemVybyBhcyB0aGUgdXNlciBtaWdodCBhY3R1YWxseQorCSAqIHdhbnQg dGhpcywgdGhleSB3b3VsZCBiZSBjcmF6eSB0aG91Z2ggOikgKi8KKwlkb3duKCZkYnNfc2VtKTsK KwlkYnNfdHVuZXJzX2lucy5mcmVxX3N0ZXAgPSBpbnB1dDsKKwl1cCgmZGJzX3NlbSk7CisKKwly ZXR1cm4gY291bnQ7Cit9CisKKworCisjZGVmaW5lIGRlZmluZV9vbmVfcncoX25hbWUpIFwKK3N0 YXRpYyBzdHJ1Y3QgZnJlcV9hdHRyIF9uYW1lID0gXAorX19BVFRSKF9uYW1lLCAwNjQ0LCBzaG93 XyMjX25hbWUsIHN0b3JlXyMjX25hbWUpCisKK2RlZmluZV9vbmVfcncoc2FtcGxpbmdfcmF0ZSk7 CitkZWZpbmVfb25lX3J3KHNhbXBsaW5nX2Rvd25fZmFjdG9yKTsKK2RlZmluZV9vbmVfcncodXBf dGhyZXNob2xkKTsKK2RlZmluZV9vbmVfcncoaWdub3JlX25pY2UpOworZGVmaW5lX29uZV9ydyhm cmVxX3N0ZXApOworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqIGRic19hdHRyaWJ1dGVzW10g PSB7CisJJnNhbXBsaW5nX3JhdGVfbWF4LmF0dHIsCisJJnNhbXBsaW5nX3JhdGVfbWluLmF0dHIs CisJJnNhbXBsaW5nX3JhdGUuYXR0ciwKKwkmc2FtcGxpbmdfZG93bl9mYWN0b3IuYXR0ciwKKwkm dXBfdGhyZXNob2xkLmF0dHIsCisJJmlnbm9yZV9uaWNlLmF0dHIsCisJJmZyZXFfc3RlcC5hdHRy LAorCU5VTEwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGRic19hdHRyX2dy b3VwID0geworCS5hdHRycyA9IGRic19hdHRyaWJ1dGVzLAorCS5uYW1lID0gImNvbmRlbWFuZCIs Cit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKiogc3lzZnMgZW5kICoqKioqKioqKioq KioqKioqKioqKioqKi8KKworc3RhdGljIHZvaWQgZGJzX2NoZWNrX2NwdShpbnQgY3B1KQorewor CXVuc2lnbmVkIGludCBpZGxlX3RpY2tzLCB1cF9pZGxlX3RpY2tzLCB0b3RhbF90aWNrczsKKwl1 bnNpZ25lZCBpbnQgZnJlcV9uZXh0OworCXVuc2lnbmVkIGludCBmcmVxX3N0ZXA7CisJdW5zaWdu ZWQgaW50IGZyZXFfZG93bl9zYW1wbGluZ19yYXRlOworCXN0YXRpYyBpbnQgZG93bl9za2lwW05S X0NQVVNdOworCXN0cnVjdCBjcHVfZGJzX2luZm9fcyAqdGhpc19kYnNfaW5mbzsKKworCXN0cnVj dCBjcHVmcmVxX3BvbGljeSAqcG9saWN5OworCXVuc2lnbmVkIGludCBqOworCisJdGhpc19kYnNf aW5mbyA9ICZwZXJfY3B1KGNwdV9kYnNfaW5mbywgY3B1KTsKKwlpZiAoIXRoaXNfZGJzX2luZm8t PmVuYWJsZSkKKwkJcmV0dXJuOworCisJcG9saWN5ID0gdGhpc19kYnNfaW5mby0+Y3VyX3BvbGlj eTsKKwkvKiAKKwkgKiBFdmVyeSBzYW1wbGluZ19yYXRlLCB3ZSBjaGVjaywgaWYgY3VycmVudCBp ZGxlIHRpbWUgaXMgbGVzcworCSAqIHRoYW4gMjAlIChkZWZhdWx0KSwgdGhlbiB3ZSB0cnkgdG8g aW5jcmVhc2UgZnJlcXVlbmN5CisJICogRXZlcnkgc2FtcGxpbmdfcmF0ZSpzYW1wbGluZ19kb3du X2ZhY3Rvciwgd2UgbG9vayBmb3IgYSB0aGUgbG93ZXN0CisJICogZnJlcXVlbmN5IHdoaWNoIGNh biBzdXN0YWluIHRoZSBsb2FkIHdoaWxlIGtlZXBpbmcgaWRsZSB0aW1lIG92ZXIKKwkgKiAzMCUu IElmIHN1Y2ggYSBmcmVxdWVuY3kgZXhpc3QsIHdlIHRyeSB0byBkZWNyZWFzZSB0byB0aGlzIGZy ZXF1ZW5jeS4KKwkgKgorCSAqIEFueSBmcmVxdWVuY3kgaW5jcmVhc2UgdGFrZXMgaXQgdG8gdGhl IG1heGltdW0gZnJlcXVlbmN5LiAKKwkgKiBGcmVxdWVuY3kgcmVkdWN0aW9uIGhhcHBlbnMgYXQg bWluaW11bSBzdGVwcyBvZiAKKwkgKiA1JSAoZGVmYXVsdCkgb2YgY3VycmVudCBmcmVxdWVuY3kg CisJICovCisKKwkvKiBDaGVjayBmb3IgZnJlcXVlbmN5IGluY3JlYXNlICovCisJaWRsZV90aWNr cyA9IFVJTlRfTUFYOworCWZvcl9lYWNoX2NwdV9tYXNrKGosIHBvbGljeS0+Y3B1cykgeworCQl1 bnNpZ25lZCBpbnQgdG1wX2lkbGVfdGlja3MsIHRvdGFsX2lkbGVfdGlja3M7CisJCXN0cnVjdCBj cHVfZGJzX2luZm9fcyAqal9kYnNfaW5mbzsKKworCQlqX2Ric19pbmZvID0gJnBlcl9jcHUoY3B1 X2Ric19pbmZvLCBqKTsKKwkJdG90YWxfaWRsZV90aWNrcyA9IGdldF9jcHVfaWRsZV90aW1lKGop OworCQl0bXBfaWRsZV90aWNrcyA9IHRvdGFsX2lkbGVfdGlja3MgLQorCQkJal9kYnNfaW5mby0+ cHJldl9jcHVfaWRsZV91cDsKKwkJal9kYnNfaW5mby0+cHJldl9jcHVfaWRsZV91cCA9IHRvdGFs X2lkbGVfdGlja3M7CisKKwkJaWYgKHRtcF9pZGxlX3RpY2tzIDwgaWRsZV90aWNrcykKKwkJCWlk bGVfdGlja3MgPSB0bXBfaWRsZV90aWNrczsKKwl9CisKKwkvKiBTY2FsZSBpZGxlIHRpY2tzIGJ5 IDEwMCBhbmQgY29tcGFyZSB3aXRoIHVwIGFuZCBkb3duIHRpY2tzICovCisJaWRsZV90aWNrcyAq PSAxMDA7CisJdXBfaWRsZV90aWNrcyA9ICgxMDAgLSBkYnNfdHVuZXJzX2lucy51cF90aHJlc2hv bGQpICoKKwkJCXVzZWNzX3RvX2ppZmZpZXMoZGJzX3R1bmVyc19pbnMuc2FtcGxpbmdfcmF0ZSk7 CisKKwlpZiAoaWRsZV90aWNrcyA8IHVwX2lkbGVfdGlja3MpIHsKKwkJZG93bl9za2lwW2NwdV0g PSAwOworCQlmb3JfZWFjaF9jcHVfbWFzayhqLCBwb2xpY3ktPmNwdXMpIHsKKwkJCXN0cnVjdCBj cHVfZGJzX2luZm9fcyAqal9kYnNfaW5mbzsKKworCQkJal9kYnNfaW5mbyA9ICZwZXJfY3B1KGNw dV9kYnNfaW5mbywgaik7CisJCQlqX2Ric19pbmZvLT5wcmV2X2NwdV9pZGxlX2Rvd24gPSAKKwkJ CQkJal9kYnNfaW5mby0+cHJldl9jcHVfaWRsZV91cDsKKwkJfQorCQkvKiBpZiB3ZSBhcmUgYWxy ZWFkeSBhdCBmdWxsIHNwZWVkIHRoZW4gYnJlYWsgb3V0IGVhcmx5ICovCisJCWlmIChwb2xpY3kt PmN1ciA9PSBwb2xpY3ktPm1heCkKKwkJCXJldHVybjsKKwkJCisgICAgICAgICAgICAgICAgZnJl cV9zdGVwID0gKGRic190dW5lcnNfaW5zLmZyZXFfc3RlcCAqIHBvbGljeS0+bWF4KSAvIDEwMDsK KworICAgICAgICAgICAgICAgIC8qIG1heCBmcmVxIGNhbm5vdCBiZSBsZXNzIHRoYW4gMTAwLiBQ YXJhbm9pZCEKKyAgICAgICAgICAgICAgICBpZiAodW5saWtlbHkoZnJlcV9zdGVwID09IDApKQor CSAgICAgICAgICAgICAgICAgICAgICAgIGZyZXFfc3RlcCA9IDU7CisJCSovCisKKyAgICAgICAg ICAgICAgICBwb2xpY3ktPmN1ciArPSBmcmVxX3N0ZXA7CisgICAgICAgICAgICAgICAgaWYgKHBv bGljeS0+Y3VyID4gcG9saWN5LT5tYXgpCisJICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5 LT5jdXIgPSBwb2xpY3ktPm1heDsKKworICAgICAgICAgICAgICAgIF9fY3B1ZnJlcV9kcml2ZXJf dGFyZ2V0KHBvbGljeSwgcG9saWN5LT5jdXIsCisJCSAgICAgICAgICAgICAgICAgICAgICAgIENQ VUZSRVFfUkVMQVRJT05fSCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK KwkvKiBDaGVjayBmb3IgZnJlcXVlbmN5IGRlY3JlYXNlICovCisJZG93bl9za2lwW2NwdV0rKzsK KwlpZiAoZG93bl9za2lwW2NwdV0gPCBkYnNfdHVuZXJzX2lucy5zYW1wbGluZ19kb3duX2ZhY3Rv cikKKwkJcmV0dXJuOworCisJaWRsZV90aWNrcyA9IFVJTlRfTUFYOworCWZvcl9lYWNoX2NwdV9t YXNrKGosIHBvbGljeS0+Y3B1cykgeworCQl1bnNpZ25lZCBpbnQgdG1wX2lkbGVfdGlja3MsIHRv dGFsX2lkbGVfdGlja3M7CisJCXN0cnVjdCBjcHVfZGJzX2luZm9fcyAqal9kYnNfaW5mbzsKKwor CQlqX2Ric19pbmZvID0gJnBlcl9jcHUoY3B1X2Ric19pbmZvLCBqKTsKKwkJLyogQ2hlY2sgZm9y IGZyZXF1ZW5jeSBkZWNyZWFzZSAqLworCQl0b3RhbF9pZGxlX3RpY2tzID0gal9kYnNfaW5mby0+ cHJldl9jcHVfaWRsZV91cDsKKwkJdG1wX2lkbGVfdGlja3MgPSB0b3RhbF9pZGxlX3RpY2tzIC0K KwkJCWpfZGJzX2luZm8tPnByZXZfY3B1X2lkbGVfZG93bjsKKwkJal9kYnNfaW5mby0+cHJldl9j cHVfaWRsZV9kb3duID0gdG90YWxfaWRsZV90aWNrczsKKworCQlpZiAodG1wX2lkbGVfdGlja3Mg PCBpZGxlX3RpY2tzKQorCQkJaWRsZV90aWNrcyA9IHRtcF9pZGxlX3RpY2tzOworCX0KKworCWRv d25fc2tpcFtjcHVdID0gMDsKKwkvKiBpZiB3ZSBjYW5ub3QgcmVkdWNlIHRoZSBmcmVxdWVuY3kg YW55bW9yZSwgYnJlYWsgb3V0IGVhcmx5ICovCisJaWYgKHBvbGljeS0+Y3VyID09IHBvbGljeS0+ bWluKQorCQlyZXR1cm47CisKKwkvKiBDb21wdXRlIGhvdyBtYW55IHRpY2tzIHRoZXJlIGFyZSBi ZXR3ZWVuIHR3byBtZWFzdXJlbWVudHMgKi8KKwlmcmVxX2Rvd25fc2FtcGxpbmdfcmF0ZSA9IGRi c190dW5lcnNfaW5zLnNhbXBsaW5nX3JhdGUgKgorCQlkYnNfdHVuZXJzX2lucy5zYW1wbGluZ19k b3duX2ZhY3RvcjsKKwl0b3RhbF90aWNrcyA9IHVzZWNzX3RvX2ppZmZpZXMoZnJlcV9kb3duX3Nh bXBsaW5nX3JhdGUpOworCisJLyoKKwkgKiBUaGUgb3B0aW1hbCBmcmVxdWVuY3kgaXMgdGhlIGZy ZXF1ZW5jeSB0aGF0IGlzIHRoZSBsb3dlc3QgdGhhdAorCSAqIGNhbiBzdXBwb3J0IHRoZSBjdXJy ZW50IENQVSB1c2FnZSB3aXRob3V0IHRyaWdnZXJpbmcgdGhlIHVwCisJICogcG9saWN5LiBUbyBi ZSBzYWZlLCB3ZSBmb2N1cyAxMCBwb2ludHMgdW5kZXIgdGhlIHRocmVzaG9sZC4KKwkgKi8KKwlm cmVxX25leHQgPSAoKHRvdGFsX3RpY2tzIC0gaWRsZV90aWNrcykgKiAxMDApIC8gdG90YWxfdGlj a3M7CisJZnJlcV9uZXh0ID0gKGZyZXFfbmV4dCAqIHBvbGljeS0+Y3VyKSAvIAorCQkJKGRic190 dW5lcnNfaW5zLnVwX3RocmVzaG9sZCAtIDEwKTsKKworCWlmIChmcmVxX25leHQgPD0gKChwb2xp Y3ktPmN1ciAqIDk1KSAvIDEwMCkpCisJCV9fY3B1ZnJlcV9kcml2ZXJfdGFyZ2V0KHBvbGljeSwg ZnJlcV9uZXh0LCBDUFVGUkVRX1JFTEFUSU9OX0wpOworfQorCitzdGF0aWMgdm9pZCBkb19kYnNf dGltZXIodm9pZCAqZGF0YSkKK3sgCisJaW50IGk7CisJZG93bigmZGJzX3NlbSk7CisJZm9yX2Vh Y2hfb25saW5lX2NwdShpKQorCQlkYnNfY2hlY2tfY3B1KGkpOworCXNjaGVkdWxlX2RlbGF5ZWRf d29yaygmZGJzX3dvcmssIAorCQkJdXNlY3NfdG9famlmZmllcyhkYnNfdHVuZXJzX2lucy5zYW1w bGluZ19yYXRlKSk7CisJdXAoJmRic19zZW0pOworfSAKKworc3RhdGljIGlubGluZSB2b2lkIGRi c190aW1lcl9pbml0KHZvaWQpCit7CisJSU5JVF9XT1JLKCZkYnNfd29yaywgZG9fZGJzX3RpbWVy LCBOVUxMKTsKKwlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmRic193b3JrLAorCQkJdXNlY3NfdG9f amlmZmllcyhkYnNfdHVuZXJzX2lucy5zYW1wbGluZ19yYXRlKSk7CisJcmV0dXJuOworfQorCitz dGF0aWMgaW5saW5lIHZvaWQgZGJzX3RpbWVyX2V4aXQodm9pZCkKK3sKKwljYW5jZWxfZGVsYXll ZF93b3JrKCZkYnNfd29yayk7CisJcmV0dXJuOworfQorCitzdGF0aWMgaW50IGNwdWZyZXFfZ292 ZXJub3JfZGJzKHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5LAorCQkJCSAgIHVuc2lnbmVk IGludCBldmVudCkKK3sKKwl1bnNpZ25lZCBpbnQgY3B1ID0gcG9saWN5LT5jcHU7CisJc3RydWN0 IGNwdV9kYnNfaW5mb19zICp0aGlzX2Ric19pbmZvOworCXVuc2lnbmVkIGludCBqOworCisJdGhp c19kYnNfaW5mbyA9ICZwZXJfY3B1KGNwdV9kYnNfaW5mbywgY3B1KTsKKworCXN3aXRjaCAoZXZl bnQpIHsKKwljYXNlIENQVUZSRVFfR09WX1NUQVJUOgorCQlpZiAoKCFjcHVfb25saW5lKGNwdSkp IHx8IAorCQkgICAgKCFwb2xpY3ktPmN1cikpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQlpZiAo cG9saWN5LT5jcHVpbmZvLnRyYW5zaXRpb25fbGF0ZW5jeSA+CisJCQkJKFRSQU5TSVRJT05fTEFU RU5DWV9MSU1JVCAqIDEwMDApKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJCWlmICh0aGlzX2Ric19p bmZvLT5lbmFibGUpIC8qIEFscmVhZHkgZW5hYmxlZCAqLworCQkJYnJlYWs7CisJCSAKKwkJZG93 bigmZGJzX3NlbSk7CisJCWZvcl9lYWNoX2NwdV9tYXNrKGosIHBvbGljeS0+Y3B1cykgeworCQkJ c3RydWN0IGNwdV9kYnNfaW5mb19zICpqX2Ric19pbmZvOworCQkJal9kYnNfaW5mbyA9ICZwZXJf Y3B1KGNwdV9kYnNfaW5mbywgaik7CisJCQlqX2Ric19pbmZvLT5jdXJfcG9saWN5ID0gcG9saWN5 OworCQkKKwkJCWpfZGJzX2luZm8tPnByZXZfY3B1X2lkbGVfdXAgPSBnZXRfY3B1X2lkbGVfdGlt ZShqKTsKKwkJCWpfZGJzX2luZm8tPnByZXZfY3B1X2lkbGVfZG93bgorCQkJCT0gal9kYnNfaW5m by0+cHJldl9jcHVfaWRsZV91cDsKKwkJfQorCQl0aGlzX2Ric19pbmZvLT5lbmFibGUgPSAxOwor CQlzeXNmc19jcmVhdGVfZ3JvdXAoJnBvbGljeS0+a29iaiwgJmRic19hdHRyX2dyb3VwKTsKKwkJ ZGJzX2VuYWJsZSsrOworCQkvKgorCQkgKiBTdGFydCB0aGUgdGltZXJzY2hlZHVsZSB3b3JrLCB3 aGVuIHRoaXMgZ292ZXJub3IKKwkJICogaXMgdXNlZCBmb3IgZmlyc3QgdGltZQorCQkgKi8KKwkJ aWYgKGRic19lbmFibGUgPT0gMSkgeworCQkJdW5zaWduZWQgaW50IGxhdGVuY3k7CisJCQkvKiBw b2xpY3kgbGF0ZW5jeSBpcyBpbiBuUy4gQ29udmVydCBpdCB0byB1UyBmaXJzdCAqLworCisJCQls YXRlbmN5ID0gcG9saWN5LT5jcHVpbmZvLnRyYW5zaXRpb25fbGF0ZW5jeTsKKwkJCWlmIChsYXRl bmN5IDwgMTAwMCkKKwkJCQlsYXRlbmN5ID0gMTAwMDsKKworCQkJZGVmX3NhbXBsaW5nX3JhdGUg PSAobGF0ZW5jeSAvIDEwMDApICoKKwkJCQkJREVGX1NBTVBMSU5HX1JBVEVfTEFURU5DWV9NVUxU SVBMSUVSOworCQkJZGJzX3R1bmVyc19pbnMuc2FtcGxpbmdfcmF0ZSA9IGRlZl9zYW1wbGluZ19y YXRlOworCQkJZGJzX3R1bmVyc19pbnMuaWdub3JlX25pY2UgPSAwOworCQkJZGJzX3R1bmVyc19p bnMuZnJlcV9zdGVwID0gNTsKKworCQkJZGJzX3RpbWVyX2luaXQoKTsKKwkJfQorCQkKKwkJdXAo JmRic19zZW0pOworCQlicmVhazsKKworCWNhc2UgQ1BVRlJFUV9HT1ZfU1RPUDoKKwkJZG93bigm ZGJzX3NlbSk7CisJCXRoaXNfZGJzX2luZm8tPmVuYWJsZSA9IDA7CisJCXN5c2ZzX3JlbW92ZV9n cm91cCgmcG9saWN5LT5rb2JqLCAmZGJzX2F0dHJfZ3JvdXApOworCQlkYnNfZW5hYmxlLS07CisJ CS8qCisJCSAqIFN0b3AgdGhlIHRpbWVyc2NoZWR1bGUgd29yaywgd2hlbiB0aGlzIGdvdmVybm9y CisJCSAqIGlzIHVzZWQgZm9yIGZpcnN0IHRpbWUKKwkJICovCisJCWlmIChkYnNfZW5hYmxlID09 IDApIAorCQkJZGJzX3RpbWVyX2V4aXQoKTsKKwkJCisJCXVwKCZkYnNfc2VtKTsKKworCQlicmVh azsKKworCWNhc2UgQ1BVRlJFUV9HT1ZfTElNSVRTOgorCQlkb3duKCZkYnNfc2VtKTsKKwkJaWYg KHBvbGljeS0+bWF4IDwgdGhpc19kYnNfaW5mby0+Y3VyX3BvbGljeS0+Y3VyKQorCQkJX19jcHVm cmVxX2RyaXZlcl90YXJnZXQoCisJCQkJCXRoaXNfZGJzX2luZm8tPmN1cl9wb2xpY3ksCisJCQkJ ICAgICAgIAlwb2xpY3ktPm1heCwgQ1BVRlJFUV9SRUxBVElPTl9IKTsKKwkJZWxzZSBpZiAocG9s aWN5LT5taW4gPiB0aGlzX2Ric19pbmZvLT5jdXJfcG9saWN5LT5jdXIpCisJCQlfX2NwdWZyZXFf ZHJpdmVyX3RhcmdldCgKKwkJCQkJdGhpc19kYnNfaW5mby0+Y3VyX3BvbGljeSwKKwkJCQkgICAg ICAgCXBvbGljeS0+bWluLCBDUFVGUkVRX1JFTEFUSU9OX0wpOworCQl1cCgmZGJzX3NlbSk7CisJ CWJyZWFrOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBjcHVmcmVxX2dvdmVy bm9yIGNwdWZyZXFfZ292X2RicyA9IHsKKwkubmFtZQkJPSAiY29uZGVtYW5kIiwKKwkuZ292ZXJu b3IJPSBjcHVmcmVxX2dvdmVybm9yX2RicywKKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCit9Owor CitzdGF0aWMgaW50IF9faW5pdCBjcHVmcmVxX2dvdl9kYnNfaW5pdCh2b2lkKQoreworCXJldHVy biBjcHVmcmVxX3JlZ2lzdGVyX2dvdmVybm9yKCZjcHVmcmVxX2dvdl9kYnMpOworfQorCitzdGF0 aWMgdm9pZCBfX2V4aXQgY3B1ZnJlcV9nb3ZfZGJzX2V4aXQodm9pZCkKK3sKKwkvKiBNYWtlIHN1 cmUgdGhhdCB0aGUgc2NoZWR1bGVkIHdvcmsgaXMgaW5kZWVkIG5vdCBydW5uaW5nICovCisJZmx1 c2hfc2NoZWR1bGVkX3dvcmsoKTsKKworCWNwdWZyZXFfdW5yZWdpc3Rlcl9nb3Zlcm5vcigmY3B1 ZnJlcV9nb3ZfZGJzKTsKK30KKworCitNT0RVTEVfQVVUSE9SICgiUGFvbG8gTWFyY2hldHRpIDxu YXRyeXVtQGdtYWlsLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQVElPTiAoIidjcHVmcmVxX2NvbmRl bWFuZCcgLSBBIGR5bmFtaWMgY3B1ZnJlcSBnb3Zlcm5vciBmb3IgIgorCQkiTG93IExhdGVuY3kg RnJlcXVlbmN5IFRyYW5zaXRpb24gY2FwYWJsZSBwcm9jZXNzb3JzICIKKwkJImZhc3Qgc2NhbGUg ZG93biwgZ3JhZHVhbCBzY2FsZSB1cCIpOworTU9EVUxFX0xJQ0VOU0UgKCJHUEwiKTsKKworbW9k dWxlX2luaXQoY3B1ZnJlcV9nb3ZfZGJzX2luaXQpOworbW9kdWxlX2V4aXQoY3B1ZnJlcV9nb3Zf ZGJzX2V4aXQpOwpkaWZmIC11cHJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNi4xMi9kcml2ZXJzL2Nw dWZyZXEvS2NvbmZpZyBteS1saW51eC0yLjYuMTIvZHJpdmVycy9jcHVmcmVxL0tjb25maWcKLS0t IGxpbnV4LTIuNi4xMi9kcml2ZXJzL2NwdWZyZXEvS2NvbmZpZwkyMDA1LTA2LTE3IDIxOjQ4OjI5 LjAwMDAwMDAwMCArMDIwMAorKysgbXktbGludXgtMi42LjEyL2RyaXZlcnMvY3B1ZnJlcS9LY29u ZmlnCTIwMDUtMDYtMjUgMTY6Mjc6MjMuMDAwMDAwMDAwICswMjAwCkBAIC0xMzksNCArMTM5LDIw IEBAIGNvbmZpZyBDUFVfRlJFUV9HT1ZfQ09OU0VSVkFUSVZFCiAKIAkgIElmIGluIGRvdWJ0LCBz YXkgTi4KIAorY29uZmlnIENQVV9GUkVRX0dPVl9DT05ERU1BTkQKKwl0cmlzdGF0ZSAiJ2NvbmRl bWFuZCcgY3B1ZnJlcSBwb2xpY3kgZ292ZXJub3IiCisJaGVscAorCSAgJ2NvbmRlbWFuZCcgLSBU aGlzIGRyaXZlciBhZGRzIGEgZHluYW1pYyBjcHVmcmVxIHBvbGljeSBnb3Zlcm5vci4KKwkgIFRo ZSBnb3Zlcm5vciBkb2VzIGEgcGVyaW9kaWMgcG9sbGluZyBhbmQgCisJICBjaGFuZ2VzIGZyZXF1 ZW5jeSBiYXNlZCBvbiB0aGUgQ1BVIHV0aWxpemF0aW9uLgorCSAgVGhlIHN1cHBvcnQgZm9yIHRo aXMgZ292ZXJub3IgZGVwZW5kcyBvbiBDUFUgY2FwYWJpbGl0eSB0bworCSAgZG8gZmFzdCBmcmVx dWVuY3kgc3dpdGNoaW5nIChpLmUsIHZlcnkgbG93IGxhdGVuY3kgZnJlcXVlbmN5CisJICB0cmFu c2l0aW9ucykuIAorCisJICBUaGlzIGRyaXZlciB0YWtlcyBpbnNwaXJhdGlvbiAoYW5kIGNvZGUp IGZyb20gdGhlIG9uZGVtYW5kIGFuZAorCSAgY29uc2VydmF0aXZlIGdvdmVybm9ycywgaXQgZG9l cyBmYXN0IHNjYWxlIGRvd24gbGlrZSBvbmRlbWFuZAorCSAgYW5kIGdyYWR1YWwgc2NhbGUgdXAg bGlrZSBjb25zZXJ2YXRpdmUuCisKKwkgIElmIGluIGRvdWJ0LCBzYXkgTi4KKwogZW5kaWYJIyBD UFVfRlJFUQpkaWZmIC11cHJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNi4xMi9kcml2ZXJzL2NwdWZy ZXEvTWFrZWZpbGUgbXktbGludXgtMi42LjEyL2RyaXZlcnMvY3B1ZnJlcS9NYWtlZmlsZQotLS0g bGludXgtMi42LjEyL2RyaXZlcnMvY3B1ZnJlcS9NYWtlZmlsZQkyMDA1LTA2LTE3IDIxOjQ4OjI5 LjAwMDAwMDAwMCArMDIwMAorKysgbXktbGludXgtMi42LjEyL2RyaXZlcnMvY3B1ZnJlcS9NYWtl ZmlsZQkyMDA1LTA2LTI1IDE2OjA3OjU2LjAwMDAwMDAwMCArMDIwMApAQCAtOSw2ICs5LDcgQEAg b2JqLSQoQ09ORklHX0NQVV9GUkVRX0dPVl9QT1dFUlNBVkUpCSs9IAogb2JqLSQoQ09ORklHX0NQ VV9GUkVRX0dPVl9VU0VSU1BBQ0UpCSs9IGNwdWZyZXFfdXNlcnNwYWNlLm8KIG9iai0kKENPTkZJ R19DUFVfRlJFUV9HT1ZfT05ERU1BTkQpCSs9IGNwdWZyZXFfb25kZW1hbmQubwogb2JqLSQoQ09O RklHX0NQVV9GUkVRX0dPVl9DT05TRVJWQVRJVkUpCSs9IGNwdWZyZXFfY29uc2VydmF0aXZlLm8K K29iai0kKENPTkZJR19DUFVfRlJFUV9HT1ZfQ09OREVNQU5EKQkrPSBjcHVmcmVxX2NvbmRlbWFu ZC5vCiAKICMgQ1BVZnJlcSBjcm9zcy1hcmNoIGhlbHBlcnMKIG9iai0kKENPTkZJR19DUFVfRlJF UV9UQUJMRSkJCSs9IGZyZXFfdGFibGUubwpkaWZmIC11cHJOIC1YIGRvbnRkaWZmIGxpbnV4LTIu Ni4xMi9NYWtlZmlsZSBteS1saW51eC0yLjYuMTIvTWFrZWZpbGUKLS0tIGxpbnV4LTIuNi4xMi9N YWtlZmlsZQkyMDA1LTA2LTE3IDIxOjQ4OjI5LjAwMDAwMDAwMCArMDIwMAorKysgbXktbGludXgt Mi42LjEyL01ha2VmaWxlCTIwMDUtMDYtMjUgMTY6MzM6MDYuMDAwMDAwMDAwICswMjAwCkBAIC0x LDcgKzEsNyBAQAogVkVSU0lPTiA9IDIKIFBBVENITEVWRUwgPSA2CiBTVUJMRVZFTCA9IDEyCi1F WFRSQVZFUlNJT04gPQorRVhUUkFWRVJTSU9OID0gLXNlY29uZAogTkFNRT1Xb296eSBOdW1iYXQK IAogIyAqRE9DVU1FTlRBVElPTioK ------=_Part_19940_32121382.1119712133470--