From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Li Subject: [PATCH 1/4] inspect: add custom ast treeview model Date: Fri, 2 Apr 2010 11:40:06 -0700 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=000e0cd6316ce90d070483454e8a Return-path: Received: from mail-yx0-f173.google.com ([209.85.210.173]:63982 "EHLO mail-yx0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752766Ab0DBSqV (ORCPT ); Fri, 2 Apr 2010 14:46:21 -0400 Received: by yxe3 with SMTP id 3so911778yxe.1 for ; Fri, 02 Apr 2010 11:46:20 -0700 (PDT) Sender: linux-sparse-owner@vger.kernel.org List-Id: linux-sparse@vger.kernel.org To: Linux-Sparse Cc: Kamil Dudka , Josh Triplett --000e0cd6316ce90d070483454e8a Content-Type: text/plain; charset=ISO-8859-1 It is custom gtk treeview model to wrap the C data structure use by sparse. The ast model does not have any sparse specific stuff in it. Instead, it provide a simplier call back based API to allow user construct tree view object very easily. Chris --000e0cd6316ce90d070483454e8a Content-Type: application/octet-stream; name="0001-inspect-add-custom-ast-treeview-model.patch" Content-Disposition: attachment; filename="0001-inspect-add-custom-ast-treeview-model.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g7jedcdg0 RnJvbSAzMGRkNzNiNTZmN2YwMThlMDU5MDg4Yjc5MzdiMTYyOWQ1NzgyNzU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGhlciBMaSA8c3BhcnNlQGNocmlzbGkub3JnPgpE YXRlOiBUdWUsIDMwIE1hciAyMDEwIDE1OjQ4OjM4IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAxLzRd IGluc3BlY3Q6IGFkZCBjdXN0b20gYXN0IHRyZWV2aWV3IG1vZGVsCgpJdCBpcyBjdXN0b20gZ3Rr IHRyZWV2aWV3IG1vZGVsIHRvIHdyYXAgdGhlIEMgZGF0YSBzdHJ1Y3R1cmUKdXNlIGJ5IHNwYXJz ZS4gVGhlIGFzdCBtb2RlbCBkb2VzIG5vdCBoYXZlIGFueSBzcGFyc2Ugc3BlY2lmaWMKc3R1ZmYg aW4gaXQuIEluc3RlYWQsIGl0IHByb3ZpZGUgYSBzaW1wbGllciBjYWxsIGJhY2sgYmFzZWQKQVBJ IHRvIGFsbG93IHVzZXIgY29uc3RydWN0IHRyZWUgdmlldyBvYmplY3QgdmVyeSBlYXNpbHkuCi0t LQogYXN0LW1vZGVsLmMgfCAgNDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiBhc3QtbW9kZWwuaCB8ICAgODggKysrKysrKysrKysK IGFzdC12aWV3LmMgIHwgICA0OCArKysrKysKIGFzdC12aWV3LmggIHwgICAgNyArCiA0IGZpbGVz IGNoYW5nZWQsIDYxMSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGFzdC1tb2RlbC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXN0LW1vZGVsLmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBhc3Qtdmlldy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXN0LXZpZXcuaAoK ZGlmZiAtLWdpdCBhL2FzdC1tb2RlbC5jIGIvYXN0LW1vZGVsLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZjUxNjM0MAotLS0gL2Rldi9udWxsCisrKyBiL2FzdC1tb2RlbC5j CkBAIC0wLDAgKzEsNDY4IEBACisvKgorICogICBhc3QtbW9kZWwuYyAKKyAqCisgKiAgIEEgY3Vz dG9tIHRyZWUgbW9kZWwgdG8gc2ltcGxpZnkgdmlld2luZyBvZiBBU1Qgb2JqZWN0cy4KKyAqICAg TW9kaWZ5IGZyb20gdGhlIEd0aysgdHJlZSB2aWV3IHR1dG9yaWFsLCBjdXN0b20tbGlzdC5jCisg KiAgIGJ5IFRpbS1QaGlsaXBwIE11ZWxsZXIgPCB0aW0gYXQgY2VudHJpY3VsYXIgZG90IG5ldCA+ CisgKgorICogICBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXN0b3BoZXIgTGkKKyAqLworCisKKyNp bmNsdWRlICJhc3QtbW9kZWwuaCIKKyNpbmNsdWRlICJzdGRpbnQuaCIKKworLyogYm9yaW5nIGRl Y2xhcmF0aW9ucyBvZiBsb2NhbCBmdW5jdGlvbnMgKi8KKworc3RhdGljIHZvaWQgYXN0X2luaXQo QXN0Tm9kZSAqcGtnX3RyZWUpOworc3RhdGljIHZvaWQgYXN0X2NsYXNzX2luaXQoQXN0Tm9kZUNs YXNzICprbGFzcyk7CitzdGF0aWMgdm9pZCBhc3RfdHJlZV9tb2RlbF9pbml0KEd0a1RyZWVNb2Rl bElmYWNlICppZmFjZSk7CitzdGF0aWMgdm9pZCBhc3RfZmluYWxpemUoR09iamVjdCAqb2JqZWN0 KTsKK3N0YXRpYyBHdGtUcmVlTW9kZWxGbGFncyBhc3RfZ2V0X2ZsYWdzKEd0a1RyZWVNb2RlbCAq dHJlZV9tb2RlbCk7CitzdGF0aWMgZ2ludCBhc3RfZ2V0X25fY29sdW1ucyhHdGtUcmVlTW9kZWwg KnRyZWVfbW9kZWwpOworc3RhdGljIEdUeXBlIGFzdF9nZXRfY29sdW1uX3R5cGUoR3RrVHJlZU1v ZGVsICp0cmVlX21vZGVsLCBnaW50IGluZGV4KTsKK3N0YXRpYyBnYm9vbGVhbiBhc3RfZ2V0X2l0 ZXIoR3RrVHJlZU1vZGVsICp0cmVlX21vZGVsLCBHdGtUcmVlSXRlciAqaXRlciwKKwkJCQkgIEd0 a1RyZWVQYXRoICpwYXRoKTsKK3N0YXRpYyBHdGtUcmVlUGF0aCAqYXN0X2dldF9wYXRoKEd0a1Ry ZWVNb2RlbCAqdHJlZV9tb2RlbCwgR3RrVHJlZUl0ZXIgKml0ZXIpOyAKK3N0YXRpYyB2b2lkIGFz dF9nZXRfdmFsdWUoR3RrVHJlZU1vZGVsICp0cmVlX21vZGVsLCBHdGtUcmVlSXRlciAqaXRlciwK KwkJCSAgICAgICBnaW50IGNvbHVtbiwgR1ZhbHVlICp2YWx1ZSk7CitzdGF0aWMgZ2Jvb2xlYW4g YXN0X2l0ZXJfbmV4dChHdGtUcmVlTW9kZWwgKnRyZWVfbW9kZWwsIEd0a1RyZWVJdGVyICppdGVy KTsKK3N0YXRpYyBnYm9vbGVhbiBhc3RfaXRlcl9jaGlsZHJlbihHdGtUcmVlTW9kZWwgKnRyZWVf bW9kZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGtUcmVlSXRl ciAqaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0a1RyZWVJ dGVyICpwYXJlbnQpOworc3RhdGljIGdib29sZWFuIGFzdF9pdGVyX2hhc19jaGlsZChHdGtUcmVl TW9kZWwgKnRyZWVfbW9kZWwsIEd0a1RyZWVJdGVyICppdGVyKTsKK3N0YXRpYyBnaW50IGFzdF9p dGVyX25fY2hpbGRyZW4gKEd0a1RyZWVNb2RlbCAqdHJlZV9tb2RlbCwgR3RrVHJlZUl0ZXIgKml0 ZXIpOworc3RhdGljIGdib29sZWFuIGFzdF9pdGVyX250aF9jaGlsZChHdGtUcmVlTW9kZWwgKnRy ZWVfbW9kZWwsIEd0a1RyZWVJdGVyICppdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEd0a1RyZWVJdGVyICpwYXJlbnQsIGdpbnQgbik7CitzdGF0aWMgZ2Jvb2xl YW4gYXN0X2l0ZXJfcGFyZW50KEd0a1RyZWVNb2RlbCAqdHJlZV9tb2RlbCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHdGtUcmVlSXRlciAqaXRlciwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHdGtUcmVlSXRlciAqY2hpbGQpOworCitzdGF0aWMg R09iamVjdENsYXNzICpwYXJlbnRfY2xhc3MgPSBOVUxMOyAgLyogR09iamVjdCBzdHVmZiAtIG5v dGhpbmcgdG8gd29ycnkgYWJvdXQgKi8KKworc3RhdGljIGlubGluZQordm9pZCBpbnNwZWN0X2No aWxkX25vZGUoQXN0Tm9kZSAqbm9kZSkKK3sKKwlpZiAobm9kZS0+aW5zcGVjdCkgeworCQlub2Rl LT5pbnNwZWN0KG5vZGUpOworCQlub2RlLT5pbnNwZWN0ID0gTlVMTDsKKwl9Cit9CisKKworc3Rh dGljIGlubGluZQorQXN0Tm9kZSogYXN0X250aF9jaGlsZChBc3ROb2RlICpub2RlLCBpbnQgbikK K3sKKwlpZiAoIW5vZGUpCisJCXJldHVybiBOVUxMOworCisJaW5zcGVjdF9jaGlsZF9ub2RlKG5v ZGUpOworCisJaWYgKG4gPj0gbm9kZS0+Y2hpbGRub2Rlcy0+bGVuKQorCQlyZXR1cm4gRkFMU0U7 CisJcmV0dXJuIGdfYXJyYXlfaW5kZXgobm9kZS0+Y2hpbGRub2RlcywgQXN0Tm9kZSAqLCBuKTsK K30KKworCitzdGF0aWMgaW5saW5lCitnYm9vbGVhbiBhc3Rfc2V0X2l0ZXIoR3RrVHJlZUl0ZXIg Kml0ZXIsIEFzdE5vZGUgKm5vZGUpCit7CisJaXRlci0+dXNlcl9kYXRhID0gbm9kZTsKKwlpdGVy LT51c2VyX2RhdGEyID0gaXRlci0+dXNlcl9kYXRhMyA9IE5VTEw7CisJcmV0dXJuIG5vZGUgIT0g TlVMTDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgYXN0X2dldF90eXBl OiBoZXJlIHdlIHJlZ2lzdGVyIG91ciBuZXcgdHlwZSBhbmQgaXRzIGludGVyZmFjZXMKKyAqICAg ICAgICAgICAgICAgIHdpdGggdGhlIHR5cGUgc3lzdGVtLiBJZiB5b3Ugd2FudCB0byBpbXBsZW1l bnQKKyAqICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwgaW50ZXJmYWNlcyBsaWtlIEd0a1RyZWVT b3J0YWJsZSwgeW91CisgKiAgICAgICAgICAgICAgICB3aWxsIG5lZWQgdG8gZG8gaXQgaGVyZS4K KyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0dUeXBlCithc3RfZ2V0X3R5cGUgKHZvaWQp Cit7CisJc3RhdGljIEdUeXBlIGFzdF90eXBlID0gMDsKKwlzdGF0aWMgY29uc3QgR1R5cGVJbmZv IGFzdF9pbmZvID0geworCQlzaXplb2YgKEFzdE5vZGVDbGFzcyksCisJCU5VTEwsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBiYXNlX2luaXQgKi8KKwkJTlVMTCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJhc2VfZmluYWxpemUg Ki8KKwkJKEdDbGFzc0luaXRGdW5jKSBhc3RfY2xhc3NfaW5pdCwKKwkJTlVMTCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNsYXNzIGZpbmFsaXplICovCisJCU5V TEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjbGFzc19kYXRh ICovCisJCXNpemVvZiAoQXN0Tm9kZSksCisJCTAsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIG5fcHJlYWxsb2NzICovCisJCShHSW5zdGFuY2VJbml0RnVuYykg YXN0X2luaXQKKwl9OworCXN0YXRpYyBjb25zdCBHSW50ZXJmYWNlSW5mbyB0cmVlX21vZGVsX2lu Zm8gPSB7CisJCShHSW50ZXJmYWNlSW5pdEZ1bmMpIGFzdF90cmVlX21vZGVsX2luaXQsCisJCU5V TEwsCisJCU5VTEwKKwl9OworCisKKworCWlmIChhc3RfdHlwZSkKKwkJcmV0dXJuIGFzdF90eXBl OworCisJLyogU29tZSBib2lsZXJwbGF0ZSB0eXBlIHJlZ2lzdHJhdGlvbiBzdHVmZiAqLworCWFz dF90eXBlID0gZ190eXBlX3JlZ2lzdGVyX3N0YXRpYyhHX1RZUEVfT0JKRUNULCAiQXN0Tm9kZSIs CisJCQkJCQkmYXN0X2luZm8sIChHVHlwZUZsYWdzKTApOworCisJLyogSGVyZSB3ZSByZWdpc3Rl ciBvdXIgR3RrVHJlZU1vZGVsIGludGVyZmFjZSB3aXRoIHRoZSB0eXBlIHN5c3RlbSAqLworCWdf dHlwZV9hZGRfaW50ZXJmYWNlX3N0YXRpYyhhc3RfdHlwZSwgR1RLX1RZUEVfVFJFRV9NT0RFTCwg JnRyZWVfbW9kZWxfaW5mbyk7CisKKwlyZXR1cm4gYXN0X3R5cGU7Cit9CisKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisgKgorICogIGFzdF9jbGFzc19pbml0OiBtb3JlIGJvaWxlcnBsYXRlIEdP YmplY3QvR1R5cGUgc3R1ZmYuCisgKiAgICAgICAgICAgICAgICAgIEluaXQgY2FsbGJhY2sgZm9y IHRoZSB0eXBlIHN5c3RlbSwKKyAqICAgICAgICAgICAgICAgICAgY2FsbGVkIG9uY2Ugd2hlbiBv dXIgbmV3IGNsYXNzIGlzIGNyZWF0ZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitz dGF0aWMgdm9pZAorYXN0X2NsYXNzX2luaXQgKEFzdE5vZGVDbGFzcyAqa2xhc3MpCit7CisJR09i amVjdENsYXNzICpvYmplY3RfY2xhc3M7CisKKwlwYXJlbnRfY2xhc3MgPSAoR09iamVjdENsYXNz KikgZ190eXBlX2NsYXNzX3BlZWtfcGFyZW50IChrbGFzcyk7CisJb2JqZWN0X2NsYXNzID0gKEdP YmplY3RDbGFzcyopIGtsYXNzOworCisJb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGFzdF9maW5h bGl6ZTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogIGFzdF90cmVlX21vZGVs X2luaXQ6IGluaXQgY2FsbGJhY2sgZm9yIHRoZSBpbnRlcmZhY2UgcmVnaXN0cmF0aW9uCisgKiAg ICAgICAgICAgICAgICAgICAgICAgaW4gYXN0X2dldF90eXBlLiBIZXJlIHdlIG92ZXJyaWRlCisg KiAgICAgICAgICAgICAgICAgICAgICAgdGhlIEd0a1RyZWVNb2RlbCBpbnRlcmZhY2UgZnVuY3Rp b25zIHRoYXQKKyAqICAgICAgICAgICAgICAgICAgICAgICB3ZSBpbXBsZW1lbnQuCisgKgorICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgdm9pZAorYXN0X3RyZWVfbW9kZWxfaW5pdCAo R3RrVHJlZU1vZGVsSWZhY2UgKmlmYWNlKQoreworCWlmYWNlLT5nZXRfZmxhZ3MgICAgICAgPSBh c3RfZ2V0X2ZsYWdzOworCWlmYWNlLT5nZXRfbl9jb2x1bW5zICAgPSBhc3RfZ2V0X25fY29sdW1u czsKKwlpZmFjZS0+Z2V0X2NvbHVtbl90eXBlID0gYXN0X2dldF9jb2x1bW5fdHlwZTsKKwlpZmFj ZS0+Z2V0X2l0ZXIgICAgICAgID0gYXN0X2dldF9pdGVyOworCWlmYWNlLT5nZXRfcGF0aCAgICAg ICAgPSBhc3RfZ2V0X3BhdGg7CisJaWZhY2UtPmdldF92YWx1ZSAgICAgICA9IGFzdF9nZXRfdmFs dWU7CisJaWZhY2UtPml0ZXJfbmV4dCAgICAgICA9IGFzdF9pdGVyX25leHQ7CisJaWZhY2UtPml0 ZXJfY2hpbGRyZW4gICA9IGFzdF9pdGVyX2NoaWxkcmVuOworCWlmYWNlLT5pdGVyX2hhc19jaGls ZCAgPSBhc3RfaXRlcl9oYXNfY2hpbGQ7CisJaWZhY2UtPml0ZXJfbl9jaGlsZHJlbiA9IGFzdF9p dGVyX25fY2hpbGRyZW47CisJaWZhY2UtPml0ZXJfbnRoX2NoaWxkICA9IGFzdF9pdGVyX250aF9j aGlsZDsKKwlpZmFjZS0+aXRlcl9wYXJlbnQgICAgID0gYXN0X2l0ZXJfcGFyZW50OworfQorCisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICBhc3RfaW5pdDogdGhpcyBpcyBjYWxsZWQg ZXZlcnl0aW1lIGEgbmV3IGFzdCBub2RlIG9iamVjdAorICogICAgICAgICAgICBpbnN0YW5jZSBp cyBjcmVhdGVkICh3ZSBkbyB0aGF0IGluIGFzdF9uZXcpLgorICogICAgICAgICAgICBJbml0aWFs aXNlIHRoZSBsaXN0IHN0cnVjdHVyZSdzIGZpZWxkcyBoZXJlLgorICoKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKworc3RhdGljIHZvaWQKK2FzdF9pbml0IChBc3ROb2RlICpub2RlKQoreworCW5v ZGUtPmNoaWxkbm9kZXMgPSBnX2FycmF5X25ldyhGQUxTRSwgVFJVRSwgc2l6ZW9mKEFzdE5vZGUg KikpOworCW5vZGUtPnN0YW1wICAgID0gZ19yYW5kb21faW50KCk7IC8qIFJhbmRvbSBpbnQgdG8g Y2hlY2sgd2hldGhlciBpdGVycyBiZWxvbmcgdG8gb3V0IG1vZGVsICovCit9CisKKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgKgorICogIGFzdF9maW5hbGl6ZTogdGhpcyBpcyBjYWxsZWQganVz dCBiZWZvcmUgYW4gYXN0IG5vZGUgaXMKKyAqICAgICAgICAgICAgICAgIGRlc3Ryb3llZC4gRnJl ZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgbWVtb3J5IGhlcmUuCisgKgorICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCitzdGF0aWMgdm9pZAorYXN0X2ZpbmFsaXplIChHT2JqZWN0ICpvYmplY3QpCit7 CisJLyogIEFzdE5vZGUgKm5vZGUgPSBBU1RfTk9ERShvYmplY3QpOyAqLworCisJLyogRklYTUU6 IGZyZWUgYWxsIG5vZGUgbWVtb3J5ICovCisKKwkvKiBtdXN0IGNoYWluIHVwIC0gZmluYWxpemUg cGFyZW50ICovCisJKCogcGFyZW50X2NsYXNzLT5maW5hbGl6ZSkgKG9iamVjdCk7Cit9CisKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisgKgorICogIGFzdF9nZXRfZmxhZ3M6IHRlbGxzIHRoZSBy ZXN0IG9mIHRoZSB3b3JsZCB3aGV0aGVyIG91ciB0cmVlIG1vZGVsCisgKiAgICAgICAgICAgICAg ICAgaGFzIGFueSBzcGVjaWFsIGNoYXJhY3RlcmlzdGljcy4gSW4gb3VyIGNhc2UsCisgKiAgICAg ICAgICAgICAgICAgd2UgaGF2ZSBhIGxpc3QgbW9kZWwgKGluc3RlYWQgb2YgYSB0cmVlKSwgYW5k IGVhY2gKKyAqICAgICAgICAgICAgICAgICB0cmVlIGl0ZXIgaXMgdmFsaWQgYXMgbG9uZyBhcyB0 aGUgcm93IGluIHF1ZXN0aW9uCisgKiAgICAgICAgICAgICAgICAgZXhpc3RzLCBhcyBpdCBvbmx5 IGNvbnRhaW5zIGEgcG9pbnRlciB0byBvdXIgc3RydWN0LgorICoKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKworc3RhdGljIEd0a1RyZWVNb2RlbEZsYWdzCithc3RfZ2V0X2ZsYWdzKEd0a1RyZWVN b2RlbCAqdHJlZV9tb2RlbCkKK3sKKwlyZXR1cm4gKEdUS19UUkVFX01PREVMX0lURVJTX1BFUlNJ U1QpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICBhc3RfZ2V0X25fY29s dW1uczogdGVsbHMgdGhlIHJlc3Qgb2YgdGhlIHdvcmxkIGhvdyBtYW55IGRhdGEKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICBjb2x1bW5zIHdlIGV4cG9ydCB2aWEgdGhlIHRyZWUgbW9kZWwg aW50ZXJmYWNlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgZ2ludAorYXN0 X2dldF9uX2NvbHVtbnMoR3RrVHJlZU1vZGVsICp0cmVlX21vZGVsKQoreworCXJldHVybiAxOwor fQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICBhc3RfZ2V0X2NvbHVtbl90eXBl OiB0ZWxscyB0aGUgcmVzdCBvZiB0aGUgd29ybGQgd2hpY2ggdHlwZSBvZgorICogICAgICAgICAg ICAgICAgICAgICAgIGRhdGEgYW4gZXhwb3J0ZWQgbW9kZWwgY29sdW1uIGNvbnRhaW5zCisgKgor ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgR1R5cGUKK2FzdF9nZXRfY29sdW1uX3R5 cGUoR3RrVHJlZU1vZGVsICp0cmVlX21vZGVsLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdp bnQgaW5kZXgpCit7CisJcmV0dXJuIEdfVFlQRV9TVFJJTkc7Cit9CisKKworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisgKgorICogIGFzdF9nZXRfaXRlcjogY29udmVydHMgYSB0cmVlIHBhdGggKHBo eXNpY2FsIHBvc2l0aW9uKSBpbnRvIGEKKyAqICAgICAgICAgICAgICAgIHRyZWUgaXRlciBzdHJ1 Y3R1cmUgKHRoZSBjb250ZW50IG9mIHRoZSBpdGVyCisgKiAgICAgICAgICAgICAgICBmaWVsZHMg d2lsbCBvbmx5IGJlIHVzZWQgaW50ZXJuYWxseSBieSBvdXIgbW9kZWwpLgorICogICAgICAgICAg ICAgICAgV2Ugc2ltcGx5IHN0b3JlIGEgcG9pbnRlciB0byBvdXIgQXN0Tm9kZUl0ZW0KKyAqICAg ICAgICAgICAgICAgIHN0cnVjdHVyZSB0aGF0IHJlcHJlc2VudHMgdGhhdCByb3cgaW4gdGhlIHRy ZWUgaXRlci4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBnYm9vbGVhbgor YXN0X2dldF9pdGVyKEd0a1RyZWVNb2RlbCAqdHJlZV9tb2RlbCwKKyAgICAgICAgICAgICAgICAg IEd0a1RyZWVJdGVyICAqaXRlciwKKyAgICAgICAgICAgICAgICAgIEd0a1RyZWVQYXRoICAqcGF0 aCkKK3sKKwlBc3ROb2RlICAgICpub2RlOworCWdpbnQgICAgICAgICAgKmluZGljZXMsIGRlcHRo OworCWludCBpOworCisJbm9kZSA9IEFTVF9OT0RFKHRyZWVfbW9kZWwpOworCWluZGljZXMgPSBn dGtfdHJlZV9wYXRoX2dldF9pbmRpY2VzKHBhdGgpOworCWRlcHRoICAgPSBndGtfdHJlZV9wYXRo X2dldF9kZXB0aChwYXRoKTsKKworCWZvciAoaSA9IDA7IGkgPCBkZXB0aDsgaSsrKQorCQlub2Rl ID0gYXN0X250aF9jaGlsZChub2RlLCBpbmRpY2VzW2ldKTsKKworCXJldHVybiBhc3Rfc2V0X2l0 ZXIoaXRlciwgbm9kZSk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogIGFz dF9nZXRfcGF0aDogY29udmVydHMgYSB0cmVlIGl0ZXIgaW50byBhIHRyZWUgcGF0aCAoaWUuIHRo ZQorICogICAgICAgICAgICAgICAgcGh5c2ljYWwgcG9zaXRpb24gb2YgdGhhdCByb3cgaW4gdGhl IGxpc3QpLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIEd0a1RyZWVQYXRo ICoKK2FzdF9nZXRfcGF0aChHdGtUcmVlTW9kZWwgKnRyZWVfbW9kZWwsCisgICAgICAgICAgICAg ICAgICBHdGtUcmVlSXRlciAgKml0ZXIpCit7CisJR3RrVHJlZVBhdGggICpwYXRoOworCUFzdE5v ZGUgICAqcm9vdCA9IEFTVF9OT0RFKHRyZWVfbW9kZWwpOworCUFzdE5vZGUgICAqbm9kZSA9IEFT VF9OT0RFKGl0ZXItPnVzZXJfZGF0YSk7CisKKwlwYXRoID0gZ3RrX3RyZWVfcGF0aF9uZXcoKTsK Kwl3aGlsZSAobm9kZSAhPSByb290KSB7CisJCWd0a190cmVlX3BhdGhfcHJlcGVuZF9pbmRleChw YXRoLCBub2RlLT5pbmRleCk7CisJCW5vZGUgPSBub2RlLT5wYXJlbnQ7CisJfQorCXJldHVybiBw YXRoOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICBhc3RfZ2V0X3ZhbHVl OiBSZXR1cm5zIGEgcm93J3MgZXhwb3J0ZWQgZGF0YSBjb2x1bW5zCisgKiAgICAgICAgICAgICAg ICAgKF9nZXRfdmFsdWUgaXMgd2hhdCBndGtfdHJlZV9tb2RlbF9nZXQgdXNlcykKKyAqCisgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyB2b2lkCithc3RfZ2V0X3ZhbHVlKEd0a1RyZWVN b2RlbCAqdHJlZV9tb2RlbCwKKyAgICAgICAgICAgICAgICAgICBHdGtUcmVlSXRlciAgKml0ZXIs CisgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICBjb2x1bW4sCisgICAgICAgICAgICAg ICAgICAgR1ZhbHVlICAgICAgICp2YWx1ZSkKK3sKKwlBc3ROb2RlICAgICpub2RlID0gaXRlci0+ dXNlcl9kYXRhOworCisJZ19hc3NlcnQoQVNUX0lTX05PREUodHJlZV9tb2RlbCkpOworCWlmIChj b2x1bW4gIT0gMSkKKwkJcmV0dXJuOworCisJaW5zcGVjdF9jaGlsZF9ub2RlKG5vZGUpOworCisJ Z192YWx1ZV9pbml0KHZhbHVlLCBHX1RZUEVfU1RSSU5HKTsKKwlnX3ZhbHVlX3NldF9zdHJpbmco dmFsdWUsIG5vZGUtPnRleHQpOworCXJldHVybjsKK30KKworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKyAqCisgKiAgYXN0X2l0ZXJfbmV4dDogVGFrZXMgYW4gaXRlciBzdHJ1Y3R1cmUgYW5kIHNl dHMgaXQgdG8gcG9pbnQKKyAqICAgICAgICAgICAgICAgICB0byB0aGUgbmV4dCByb3cuCisgKgor ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgZ2Jvb2xlYW4KK2FzdF9pdGVyX25leHQo R3RrVHJlZU1vZGVsICAqdHJlZV9tb2RlbCwKKyAgICAgICAgICAgICAgICAgICBHdGtUcmVlSXRl ciAgICppdGVyKQoreworCUFzdE5vZGUgICAgKm5vZGUgPSBpdGVyLT51c2VyX2RhdGE7CisJCisJ Z19hc3NlcnQoQVNUX0lTX05PREUgKHRyZWVfbW9kZWwpKTsKKworCW5vZGUgPSBhc3RfbnRoX2No aWxkKG5vZGUtPnBhcmVudCwgbm9kZS0+aW5kZXggKyAxKTsKKwlyZXR1cm4gYXN0X3NldF9pdGVy KGl0ZXIsIG5vZGUpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICBhc3Rf aXRlcl9jaGlsZHJlbjogUmV0dXJucyBUUlVFIG9yIEZBTFNFIGRlcGVuZGluZyBvbiB3aGV0aGVy CisgKiAgICAgICAgICAgICAgICAgICAgIHRoZSByb3cgc3BlY2lmaWVkIGJ5ICdwYXJlbnQnIGhh cyBhbnkgY2hpbGRyZW4uCisgKiAgICAgICAgICAgICAgICAgICAgIElmIGl0IGhhcyBjaGlsZHJl biwgdGhlbiAnaXRlcicgaXMgc2V0IHRvCisgKiAgICAgICAgICAgICAgICAgICAgIHBvaW50IHRv IHRoZSBmaXJzdCBjaGlsZC4gU3BlY2lhbCBjYXNlOiBpZgorICogICAgICAgICAgICAgICAgICAg ICAncGFyZW50JyBpcyBOVUxMLCB0aGVuIHRoZSBmaXJzdCB0b3AtbGV2ZWwKKyAqICAgICAgICAg ICAgICAgICAgICAgcm93IHNob3VsZCBiZSByZXR1cm5lZCBpZiBpdCBleGlzdHMuCisgKgorICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgZ2Jvb2xlYW4KK2FzdF9pdGVyX2NoaWxkcmVu KEd0a1RyZWVNb2RlbCAqdHJlZV9tb2RlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgR3RrVHJl ZUl0ZXIgICppdGVyLAorICAgICAgICAgICAgICAgICAgICAgICBHdGtUcmVlSXRlciAgKnBhcmVu dCkKK3sKKwlyZXR1cm4gYXN0X2l0ZXJfbnRoX2NoaWxkKHRyZWVfbW9kZWwsIGl0ZXIsIHBhcmVu dCwgMCk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogIGFzdF9pdGVyX2hh c19jaGlsZDogUmV0dXJucyBUUlVFIG9yIEZBTFNFIGRlcGVuZGluZyBvbiB3aGV0aGVyCisgKiAg ICAgICAgICAgICAgICAgICAgICB0aGUgcm93IHNwZWNpZmllZCBieSAnaXRlcicgaGFzIGFueSBj aGlsZHJlbi4KKyAqICAgICAgICAgICAgICAgICAgICAgIFdlIG9ubHkgaGF2ZSBhIGxpc3QgYW5k IHRodXMgbm8gY2hpbGRyZW4uCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMg Z2Jvb2xlYW4KK2FzdF9pdGVyX2hhc19jaGlsZCAoR3RrVHJlZU1vZGVsICp0cmVlX21vZGVsLAor ICAgICAgICAgICAgICAgICAgICAgICAgIEd0a1RyZWVJdGVyICAqaXRlcikKK3sKKwlBc3ROb2Rl ICAgICpub2RlID0gaXRlci0+dXNlcl9kYXRhOworCWluc3BlY3RfY2hpbGRfbm9kZShub2RlKTsK KwlyZXR1cm4gbm9kZS0+Y2hpbGRub2Rlcy0+bGVuID4gMDsKK30KKworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqCisgKiAgYXN0X2l0ZXJfbl9jaGlsZHJlbjogUmV0dXJucyB0aGUgbnVtYmVy IG9mIGNoaWxkcmVuIHRoZSByb3cKKyAqICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQg YnkgJ2l0ZXInIGhhcy4gVGhpcyBpcyB1c3VhbGx5IDAsCisgKiAgICAgICAgICAgICAgICAgICAg ICAgYXMgd2Ugb25seSBoYXZlIGEgbGlzdCBhbmQgdGh1cyBkbyBub3QgaGF2ZQorICogICAgICAg ICAgICAgICAgICAgICAgIGFueSBjaGlsZHJlbiB0byBhbnkgcm93cy4gQSBzcGVjaWFsIGNhc2Ug aXMKKyAqICAgICAgICAgICAgICAgICAgICAgICB3aGVuICdpdGVyJyBpcyBOVUxMLCBpbiB3aGlj aCBjYXNlIHdlIG5lZWQKKyAqICAgICAgICAgICAgICAgICAgICAgICB0byByZXR1cm4gdGhlIG51 bWJlciBvZiB0b3AtbGV2ZWwgbm9kZSwKKyAqICAgICAgICAgICAgICAgICAgICAgICBpZS4gdGhl IG51bWJlciBvZiByb3dzIGluIG91ciBsaXN0LgorICoKKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K Kworc3RhdGljIGdpbnQKK2FzdF9pdGVyX25fY2hpbGRyZW4gKEd0a1RyZWVNb2RlbCAqdHJlZV9t b2RlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrVHJlZUl0ZXIgICppdGVyKQorewor CUFzdE5vZGUgICpub2RlID0gaXRlci0+dXNlcl9kYXRhOworCisJaW5zcGVjdF9jaGlsZF9ub2Rl KG5vZGUpOworCXJldHVybiBub2RlLT5jaGlsZG5vZGVzLT5sZW47Cit9CisKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisgKgorICogIGFzdF9pdGVyX250aF9jaGlsZDogSWYgdGhlIHJvdyBzcGVj aWZpZWQgYnkgJ3BhcmVudCcgaGFzIGFueQorICogICAgICAgICAgICAgICAgICAgICAgY2hpbGRy ZW4sIHNldCAnaXRlcicgdG8gdGhlIG4tdGggY2hpbGQgYW5kCisgKiAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gVFJVRSBpZiBpdCBleGlzdHMsIG90aGVyd2lzZSBGQUxTRS4KKyAqICAgICAg ICAgICAgICAgICAgICAgIEEgc3BlY2lhbCBjYXNlIGlzIHdoZW4gJ3BhcmVudCcgaXMgTlVMTCwg aW4KKyAqICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGNhc2Ugd2UgbmVlZCB0byBzZXQgJ2l0 ZXInIHRvIHRoZSBuLXRoCisgKiAgICAgICAgICAgICAgICAgICAgICByb3cgaWYgaXQgZXhpc3Rz LgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGdib29sZWFuCithc3RfaXRl cl9udGhfY2hpbGQoR3RrVHJlZU1vZGVsICp0cmVlX21vZGVsLAorICAgICAgICAgICAgICAgICAg ICAgICAgR3RrVHJlZUl0ZXIgICppdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgR3RrVHJl ZUl0ZXIgICpwYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgIG4p Cit7CisJQXN0Tm9kZSAgICAqbm9kZSA9IHBhcmVudCA/IHBhcmVudC0+dXNlcl9kYXRhIDogKEFz dE5vZGUqKSB0cmVlX21vZGVsOworCUdBcnJheSAqYXJyYXkgPSBub2RlLT5jaGlsZG5vZGVzOwor CWlmIChuID49IGFycmF5LT5sZW4pCisJCXJldHVybiBGQUxTRTsKKwlpdGVyLT51c2VyX2RhdGEg PSBnX2FycmF5X2luZGV4KGFycmF5LCBBc3ROb2RlICosIG4pOworCXJldHVybiBUUlVFOworfQor CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICBhc3RfaXRlcl9wYXJlbnQ6IFBvaW50 ICdpdGVyJyB0byB0aGUgcGFyZW50IG5vZGUgb2YgJ2NoaWxkJy4gQXMKKyAqICAgICAgICAgICAg ICAgICAgIHdlIGhhdmUgYSBsaXN0IGFuZCB0aHVzIG5vIGNoaWxkcmVuIGFuZCBubworICogICAg ICAgICAgICAgICAgICAgcGFyZW50cyBvZiBjaGlsZHJlbiwgd2UgY2FuIGp1c3QgcmV0dXJuIEZB TFNFLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGdib29sZWFuCithc3Rf aXRlcl9wYXJlbnQgKEd0a1RyZWVNb2RlbCAqdHJlZV9tb2RlbCwKKyAgICAgICAgICAgICAgICAg ICAgICBHdGtUcmVlSXRlciAgKml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgR3RrVHJlZUl0 ZXIgICpjaGlsZCkKK3sKKwlBc3ROb2RlICpub2RlID0gKEFzdE5vZGUgKikgY2hpbGQtPnVzZXJf ZGF0YTsKKwlpdGVyLT51c2VyX2RhdGEgPSBub2RlLT5wYXJlbnQ7CisJcmV0dXJuIG5vZGUtPnBh cmVudCAhPSBOVUxMOworfQorCisKK0FzdE5vZGUgKgorYXN0X25ldyAoQXN0Tm9kZSAqcGFyZW50 LCBpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKnRleHQsIHZvaWQgKnB0ciwgdm9pZCAoKmluc3BlY3Qp KEFzdE5vZGUqKSkKK3sKKwlBc3ROb2RlICpub2RlID0gKEFzdE5vZGUqKSBnX29iamVjdF9uZXcg KEFTVF9UWVBFX05PREUsIE5VTEwpOworCWdfYXNzZXJ0KG5vZGUgIT0gTlVMTCk7CisJbm9kZS0+ cGFyZW50ID0gcGFyZW50OworCW5vZGUtPmluZGV4ID0gaW5kZXg7CisJbm9kZS0+dGV4dCA9IHRl eHQ7CisJbm9kZS0+aW5zcGVjdCA9IGluc3BlY3Q7CisJbm9kZS0+cHRyID0gcHRyOworCXJldHVy biBub2RlOworfQorCmRpZmYgLS1naXQgYS9hc3QtbW9kZWwuaCBiL2FzdC1tb2RlbC5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZWEwNTYKLS0tIC9kZXYvbnVsbAorKysg Yi9hc3QtbW9kZWwuaApAQCAtMCwwICsxLDg4IEBACisKKy8qCisgKiBhc3QtbW9kZWwuaAorICoK KyAqIENvcHlyaWdodCAoQykgMjAxMCBDaHJpc3RvcGhlciBMaS4KKyAqCisgKi8KKworI2lmbmRl ZiBfYXN0X21vZGVsX2hfCisjZGVmaW5lIF9hc3RfbW9kZWxfaF8KKworI2luY2x1ZGUgPHN0ZGlu dC5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlICJsaWIuaCIKKworI2RlZmluZSBB U1RfVFlQRV9OT0RFICAgICAgICAgICAgICAgICAgKGFzdF9nZXRfdHlwZSAoKSkKKyNkZWZpbmUg QVNUX05PREUob2JqKSAgICAgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FT VCAoKG9iaiksIEFTVF9UWVBFX05PREUsIEFzdE5vZGUpKQorI2RlZmluZSBBU1RfTk9ERV9DTEFT UyhrbGFzcykgICAgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCAgQVNU X1RZUEVfTk9ERSwgQXN0Tm9kZUNsYXNzKSkKKyNkZWZpbmUgQVNUX0lTX05PREUob2JqKSAgICAg ICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEFTVF9UWVBFX05P REUpKQorI2RlZmluZSBBU1RfSVNfTk9ERV9DTEFTUyhrbGFzcykgICAgICAgKEdfVFlQRV9DSEVD S19DTEFTU19UWVBFICgoa2xhc3MpLCAgQVNUX1RZUEVfTk9ERSkpCisjZGVmaW5lIEFTVF9OT0RF X0dFVF9DTEFTUyhvYmopICAgICAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiks ICBBU1RfVFlQRV9OT0RFLCBBc3ROb2RlQ2xhc3MpKQorCitlbnVtCit7CisJQVNUX0NPTF9SRUNP UkQgPSAwLAorCUFTVF9DT0xfTkFNRSwKKwlBU1RfTl9DT0xVTU5TLAorfSA7CisKKwordHlwZWRl ZiBzdHJ1Y3QgQXN0Tm9kZSBBc3ROb2RlOwordHlwZWRlZiBzdHJ1Y3QgQXN0Tm9kZUNsYXNzIEFz dE5vZGVDbGFzczsKKworCisKKy8qIEFzdE5vZGU6IHRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGV2 ZXJ5dGhpbmcgd2UgbmVlZCBmb3Igb3VyCisgKiAgICAgICAgICAgICBtb2RlbCBpbXBsZW1lbnRh dGlvbi4gWW91IGNhbiBhZGQgZXh0cmEgZmllbGRzIHRvCisgKiAgICAgICAgICAgICB0aGlzIHN0 cnVjdHVyZSwgZS5nLiBoYXNodGFibGVzIHRvIHF1aWNrbHkgbG9va3VwCisgKiAgICAgICAgICAg ICByb3dzIG9yIHdoYXRldmVyIGVsc2UgeW91IG1pZ2h0IG5lZWQsIGJ1dCBpdCBpcworICogICAg ICAgICAgICAgY3J1Y2lhbCB0aGF0ICdwYXJlbnQnIGlzIHRoZSBmaXJzdCBtZW1iZXIgb2YgdGhl CisgKiAgICAgICAgICAgICBzdHJ1Y3R1cmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKi8KKworc3RydWN0IEFzdE5vZGUKK3sKKwlHT2JqZWN0ICAgICAgICAgYmFz ZTsgICAgICAvKiB0aGlzIE1VU1QgYmUgdGhlIGZpcnN0IG1lbWJlciAqLworCisJQXN0Tm9kZQkq cGFyZW50OworCWludCBpbmRleDsKKwljb25zdCBnY2hhciAqdGV4dDsKKwl2b2lkICgqaW5zcGVj dCkoc3RydWN0IEFzdE5vZGUqIG5vZGUpOworCXZvaWQgKnB0cjsKKwlHQXJyYXkgKmNoaWxkbm9k ZXM7CisJZ2ludCBzdGFtcDsKK307CisKKworCisvKiBBc3ROb2RlQ2xhc3M6IG1vcmUgYm9pbGVy cGxhdGUgR09iamVjdCBzdHVmZiAqLworCitzdHJ1Y3QgQXN0Tm9kZUNsYXNzCit7CisJR09iamVj dENsYXNzIGJhc2VfY2xhc3M7Cit9OworCisKK0dUeXBlIGFzdF9nZXRfdHlwZSh2b2lkKTsKK0Fz dE5vZGUqIGFzdF9uZXcoQXN0Tm9kZSAqcGFyZW50LCBpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKnBy ZWZpeCwgdm9pZCAqcHRyLCB2b2lkICgqZXhwYW5kKShBc3ROb2RlKikpOworCisKK3N0YXRpYyBp bmxpbmUKK3ZvaWQgYXN0X2FwcGVuZF9jaGlsZChBc3ROb2RlICpwYXJlbnQsIGNvbnN0IGNoYXIg KnRleHQsCisJCQkgICB2b2lkICpwdHIsIHZvaWQgKCppbnNwZWN0KShBc3ROb2RlKikpCit7CisJ aWYgKHB0cikgeworCQlBc3ROb2RlICpjaGlsZCA9IGFzdF9uZXcocGFyZW50LCBwYXJlbnQtPmNo aWxkbm9kZXMtPmxlbiwKKwkJCQkJCXRleHQsIHB0ciwgaW5zcGVjdCk7CisJCWdfYXJyYXlfYXBw ZW5kX3ZhbChwYXJlbnQtPmNoaWxkbm9kZXMsIGNoaWxkKTsKKwl9Cit9CisKK3N0YXRpYyBpbmxp bmUKK3ZvaWQgYXN0X2FwcGVuZF9hdHRyaWJ1dGUoQXN0Tm9kZSAqcGFyZW50LCBjb25zdCBjaGFy ICp0ZXh0KQoreworCUFzdE5vZGUgKmNoaWxkID0gYXN0X25ldyhwYXJlbnQsIHBhcmVudC0+Y2hp bGRub2Rlcy0+bGVuLCB0ZXh0LCBOVUxMLCBOVUxMKTsKKwlnX2FycmF5X2FwcGVuZF92YWwocGFy ZW50LT5jaGlsZG5vZGVzLCBjaGlsZCk7Cit9CisKKyNlbmRpZiAvKiBfYXN0X2hfKi8KZGlmZiAt LWdpdCBhL2FzdC12aWV3LmMgYi9hc3Qtdmlldy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjQwYmYwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9hc3Qtdmlldy5jCkBAIC0wLDAg KzEsNDggQEAKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgImFzdC1tb2RlbC5oIgor I2luY2x1ZGUgImFzdC1pbnNwZWN0LmgiCisKK0d0a1dpZGdldCAqCitjcmVhdGVfdmlld19hbmRf bW9kZWwgKHZvaWQgKnB0cikKK3sKKwlHdGtUcmVlVmlld0NvbHVtbiAgICp0ZXh0OworCUd0a0Nl bGxSZW5kZXJlciAqcmVuZGVyZXI7CisJQXN0Tm9kZSAqcm9vdDsKKwlHdGtXaWRnZXQgKnZpZXc7 CisKKwlyb290ID0gYXN0X25ldyhOVUxMLCAwLCAiIiwgcHRyLCBpbnNwZWN0X3N5bWJvbF9saXN0 KTsKKworCXZpZXcgPSBndGtfdHJlZV92aWV3X25ld193aXRoX21vZGVsKEdUS19UUkVFX01PREVM KHJvb3QpKTsKKworCWdfb2JqZWN0X3VucmVmKHJvb3QpOyAvKiBkZXN0cm95IHN0b3JlIGF1dG9t YXRpY2FsbHkgd2l0aCB2aWV3ICovCisKKwlyZW5kZXJlciA9IGd0a19jZWxsX3JlbmRlcmVyX3Rl eHRfbmV3KCk7CisJdGV4dCA9IGd0a190cmVlX3ZpZXdfY29sdW1uX25ld193aXRoX2F0dHJpYnV0 ZXMoIk5vZGUiLCByZW5kZXJlciwKKwkJCQkJCSAgICAgICAidGV4dCIsIEFTVF9DT0xfTkFNRSwK KwkJCQkJCSAgICAgICBOVUxMKTsKKwlndGtfdHJlZV92aWV3X2FwcGVuZF9jb2x1bW4oR1RLX1RS RUVfVklFVyh2aWV3KSwgdGV4dCk7CisKKwlyZXR1cm4gdmlldzsKK30KKwordm9pZAordHJlZXZp ZXdfbWFpbiAoc3RydWN0IHN5bWJvbF9saXN0ICpzeW1zKQoreworCUd0a1dpZGdldCAqd2luZG93 LCAqdmlldywgKnNjcm9sbHdpbjsKKworCXdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5E T1dfVE9QTEVWRUwpOworCWd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZSAoR1RLX1dJTkRPVyh3 aW5kb3cpLCA0MDAsIDYwMCk7CisJZ19zaWduYWxfY29ubmVjdCh3aW5kb3csICJkZWxldGVfZXZl bnQiLCBndGtfbWFpbl9xdWl0LCBOVUxMKTsKKworCXNjcm9sbHdpbiA9IGd0a19zY3JvbGxlZF93 aW5kb3dfbmV3KE5VTEwsTlVMTCk7CisKKwl2aWV3ID0gY3JlYXRlX3ZpZXdfYW5kX21vZGVsKHN5 bXMpOworCisJZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihzY3JvbGx3aW4pLCB2aWV3 KTsKKwlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHNjcm9sbHdpbik7 CisKKwlndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRvdyk7CisKKwlndGtfbWFpbigpOworfQpkaWZm IC0tZ2l0IGEvYXN0LXZpZXcuaCBiL2FzdC12aWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZGE4ZjVmNQotLS0gL2Rldi9udWxsCisrKyBiL2FzdC12aWV3LmgKQEAgLTAs MCArMSw3IEBACisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSAibGliLmgiCisKK2V4 dGVybiB2b2lkIHRyZWV2aWV3X21haW4oc3RydWN0IHN5bWJvbF9saXN0ICpzeW1zKTsKKworCi0t IAoxLjYuNi4xCgo= --000e0cd6316ce90d070483454e8a--