--------------Boundary-00=_NXS7KRA4BMVVUYK0T7DO Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8bit On Wednesday 31 October 2001 05:02 pm, Waldo Bastian wrote: > On Wednesday 31 October 2001 03:21 pm, Charles Samuels wrote: > > Well, I've started on the arduous task of making KConfig::group() return > > a temporary class (KConfigGroup) that has all the accessors (like > > readEntry, writeEntry, etc). > > > > I'm also breaking compatiblity big-time with older versions. As in, > > major. KConfigGroupSaver is departing, and, well, all sorts of good > > things. > > I think the same can be achieved while keeping the current class-structure. > E.g. you can make a KConfigGroup class that derives from KConfigBase but > uses the lookupData() / putData() methods of the original KConfig object. > > Cheers, > Waldo Something like this. (untested) Cheers, Waldo -- After imposing conduct restrictions on Saddam Hussein for years, the US government will now also impose conduct restrictions on Microsoft. --------------Boundary-00=_NXS7KRA4BMVVUYK0T7DO Content-Type: text/x-diff; charset="us-ascii"; name="kconfiggroup.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kconfiggroup.diff" SW5kZXg6IGtjb25maWcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL2tkZS9rZGVsaWJz L2tkZWNvcmUva2NvbmZpZy5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNjEKZGlmZiAtdSAt MyAtZCAtcCAtcjEuNjEga2NvbmZpZy5jcHAKLS0tIGtjb25maWcuY3BwCTIwMDEvMTEvMDIgMTI6 NTE6NDIJMS42MQorKysga2NvbmZpZy5jcHAJMjAwMS8xMS8wMyAwNjo0NjozMApAQCAtMTI1LDMy ICsxMjUsNiBAQCBRU3RyaW5nTGlzdCBLQ29uZmlnOjpncm91cExpc3QoKSBjb25zdAogICByZXR1 cm4gcmV0TGlzdDsKIH0KIAotYm9vbCBLQ29uZmlnOjpoYXNLZXkoY29uc3QgUVN0cmluZyAma2V5 KSBjb25zdAotewotICAgcmV0dXJuIEtDb25maWc6Omhhc0tleShrZXkudXRmOCgpLmRhdGEoKSk7 Ci19Ci0KLWJvb2wgS0NvbmZpZzo6aGFzS2V5KGNvbnN0IGNoYXIgKnBLZXkpIGNvbnN0Ci17Ci0g IEtFbnRyeUtleSBhRW50cnlLZXkobUdyb3VwLCAwKTsKLSAgYUVudHJ5S2V5LmNfa2V5ID0gcEtl eTsKLQotICBLRW50cnlNYXBDb25zdEl0ZXJhdG9yIGFJdDsKLQotICBpZiAoIWxvY2FsZSgpLmlz TnVsbCgpKSB7Ci0gICAgLy8gdHJ5IHRoZSBsb2NhbGl6ZWQga2V5IGZpcnN0Ci0gICAgYUVudHJ5 S2V5LmJMb2NhbCA9IHRydWU7Ci0gICAgYUl0ID0gYUVudHJ5TWFwLmZpbmQoYUVudHJ5S2V5KTsK LSAgICBpZiAoYUl0ICE9IGFFbnRyeU1hcC5lbmQoKSAmJiAhKCphSXQpLm1WYWx1ZS5pc051bGwo KSAmJiAhKCphSXQpLmJEZWxldGVkICkKLSAgICAgIHJldHVybiB0cnVlOwotICAgIGFFbnRyeUtl eS5iTG9jYWwgPSBmYWxzZTsKLSAgfQotCi0gIC8vIHRyeSB0aGUgbm9uLWxvY2FsaXplZCB2ZXJz aW9uCi0gIGFJdCA9IGFFbnRyeU1hcC5maW5kKGFFbnRyeUtleSk7Ci0gIHJldHVybiAgKGFJdCAh PSBhRW50cnlNYXAuZW5kKCkgJiYgISgqYUl0KS5tVmFsdWUuaXNOdWxsKCkgJiYgISgqYUl0KS5i RGVsZXRlZCApOwotfQotCiBRTWFwPFFTdHJpbmcsIFFTdHJpbmc+IEtDb25maWc6OmVudHJ5TWFw KGNvbnN0IFFTdHJpbmcgJnBHcm91cCkgY29uc3QKIHsKICAgUUNTdHJpbmcgcEdyb3VwX3V0ZiA9 IHBHcm91cC51dGY4KCk7CkBAIC0yNTYsMTcgKzIzMCw3IEBAIEtFbnRyeSBLQ29uZmlnOjpsb29r dXBEYXRhKGNvbnN0IEtFbnRyeUsKICAgfQogfQogCi1ib29sIEtDb25maWc6Omhhc0dyb3VwKGNv bnN0IFFTdHJpbmcgJmdyb3VwKSBjb25zdAotewotICByZXR1cm4gS0NvbmZpZzo6aGFzR3JvdXAo IGdyb3VwLnV0ZjgoKSk7Ci19Ci0KLWJvb2wgS0NvbmZpZzo6aGFzR3JvdXAoY29uc3QgY2hhciAq X3BHcm91cCkgY29uc3QKLXsKLSAgcmV0dXJuIEtDb25maWc6Omhhc0dyb3VwKCBRQ1N0cmluZyhf cEdyb3VwKSk7Ci19Ci0KLWJvb2wgS0NvbmZpZzo6aGFzR3JvdXAoY29uc3QgUUNTdHJpbmcgJmdy b3VwKSBjb25zdAorYm9vbCBLQ29uZmlnOjppbnRlcm5hbEhhc0dyb3VwKGNvbnN0IFFDU3RyaW5n ICZncm91cCkgY29uc3QKIHsKICAgS0VudHJ5S2V5IGdyb3VwS2V5KCBncm91cCwgMCk7CiAKSW5k ZXg6IGtjb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9rZGUva2RlbGlicy9rZGVj b3JlL2tjb25maWcuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40MQpkaWZmIC11IC0zIC1kIC1w IC1yMS40MSBrY29uZmlnLmgKLS0tIGtjb25maWcuaAkyMDAxLzExLzAyIDIyOjI3OjI3CTEuNDEK KysrIGtjb25maWcuaAkyMDAxLzExLzAzIDA2OjQ2OjMwCkBAIC04MSwyOSArODEsMTIgQEAgcHVi bGljOgogICAgKi8KICAgdmlydHVhbCB2b2lkIHJvbGxiYWNrKGJvb2wgYkRlZXAgPSB0cnVlKTsK IAotICAvKioKLSAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgZ3JvdXAgaXMga25v d24uCi0gICAqCi0gICAqIEBwYXJhbSBncm91cCBUaGUgZ3JvdXAgdG8gc2VhcmNoIGZvci4KLSAg ICogQHJldHVybnMgQHAgdHJ1ZSBpZiB0aGUgZ3JvdXAgZXhpc3RzLgotICAgKi8KLSAgdmlydHVh bCBib29sIGhhc0dyb3VwKGNvbnN0IFFTdHJpbmcgJmdyb3VwKSBjb25zdDsKIAogICAvKioKICAg ICogUmV0dXJucyBhIGxpc3Qgb2YgZ3JvdXBzIHRoYXQgYXJlIGtub3duLgogICAgKi8KICAgdmly dHVhbCBRU3RyaW5nTGlzdCBncm91cExpc3QoKSBjb25zdDsKIAotICAvKgotICAgKiBDaGVja3Mg aWYgdGhlIGtleSBoYXMgYW4gZW50cnkgaW4gdGhlIGN1cnJlbnRseSBhY3RpdmUgZ3JvdXAuIFVz ZQotICAgKiB0aGlzIHRvIGRldGVybWluZSBpZiBhIGtleSBpcyBub3Qgc3BlY2lmaWVkIGZvciB0 aGUgY3VycmVudCBncm91cAotICAgKiAoQHAgaGFzS2V5IHJldHVybnMgZmFsc2UpLiBLZXlzIHdp dGggbnVsbCBkYXRhIGFyZSBjb25zaWRlcmVkCi0gICAqIG5vbmV4aXN0ZW50LgotICAgKgotICAg KiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci4KLSAgICovCi0gIHZpcnR1YWwgYm9v bCBoYXNLZXkoY29uc3QgUVN0cmluZyAma2V5KSBjb25zdDsKLQogICAvKioKICAgICogUmV0dXJu cyBhIG1hcCAodHJlZSkgb2YgZW50cmllcyBmb3IgYWxsIGVudHJpZXMgaW4gYSBwYXJ0aWN1bGFy CiAgICAqIGdyb3VwLgpAQCAtMTI2LDYgKzEwOSwxNCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAK ICAgLyoqCisgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIGdyb3VwIGlzIGtub3du LgorICAgKgorICAgKiBAcGFyYW0gZ3JvdXAgVGhlIGdyb3VwIHRvIHNlYXJjaCBmb3IuCisgICAq IEByZXR1cm5zIEBwIHRydWUgaWYgdGhlIGdyb3VwIGV4aXN0cy4KKyAgICovCisgIHZpcnR1YWwg Ym9vbCBpbnRlcm5hbEhhc0dyb3VwKGNvbnN0IFFDU3RyaW5nICZncm91cCkgY29uc3Q7CisKKyAg LyoqCiAgICAqIFJldHVybnMgYSBtYXAgKHRyZWUpIG9mIHRoZSBlbnRyaWVzIGluIHRoZSBzcGVj aWZpZWQgZ3JvdXAuCiAgICAqCiAgICAqIERvIG5vdCB1c2UgdGhpcyBmdW5jdGlvbiwgdGhlIGlt cGxlbWVudGF0aW9uIC8gcmV0dXJuIHR5cGUgYXJlCkBAIC0xNzksMTUgKzE3MCw2IEBAIHByb3Rl Y3RlZDoKICAgICogc2V0IHRvIFFTdHJpbmc6Om51bGwuCiAgICAqLwogICBLRW50cnlNYXAgYUVu dHJ5TWFwOwotCi0KLXB1YmxpYzoKLSAgLyoqCi0gICAqIE92ZXJsb2FkZWQgcHVibGljIGZ1bmN0 aW9ucy4KLSAgICovCi0gIHZpcnR1YWwgYm9vbCBoYXNHcm91cChjb25zdCBRQ1N0cmluZyAmZ3Jv dXApIGNvbnN0OwotICB2aXJ0dWFsIGJvb2wgaGFzR3JvdXAoY29uc3QgY2hhciAqX3BHcm91cCkg Y29uc3Q7Ci0gIHZpcnR1YWwgYm9vbCBoYXNLZXkoY29uc3QgY2hhciAqcEtleSkgY29uc3Q7CiAK IHByaXZhdGU6CiAgIC8qKgpJbmRleDoga2NvbmZpZ2Jhc2UuY3BwCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9ob21lL2tkZS9rZGVsaWJzL2tkZWNvcmUva2NvbmZpZ2Jhc2UuY3BwLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjEyNQpkaWZmIC11IC0zIC1kIC1wIC1yMS4xMjUga2NvbmZpZ2Jhc2UuY3Bw Ci0tLSBrY29uZmlnYmFzZS5jcHAJMjAwMS8xMS8wMiAxMzozODo0OQkxLjEyNQorKysga2NvbmZp Z2Jhc2UuY3BwCTIwMDEvMTEvMDMgMDY6NDY6MzEKQEAgLTE1MSw3ICsxNTEsNiBAQCB2b2lkIEtD b25maWdCYXNlOjpzZXRHcm91cCggY29uc3QgUVN0cmluCiAgICAgbUdyb3VwID0gIjxkZWZhdWx0 PiI7CiAgIGVsc2UKICAgICBtR3JvdXAgPSBncm91cC51dGY4KCk7Ci0gIGJDaGVja0dyb3VwID0g dHJ1ZTsKIH0KIAogdm9pZCBLQ29uZmlnQmFzZTo6c2V0R3JvdXAoIGNvbnN0IGNoYXIgKnBHcm91 cCApCkBAIC0xNjUsNyArMTY0LDYgQEAgdm9pZCBLQ29uZmlnQmFzZTo6c2V0R3JvdXAoIGNvbnN0 IFFDU3RyaQogICAgIG1Hcm91cCA9ICI8ZGVmYXVsdD4iOwogICBlbHNlCiAgICAgbUdyb3VwID0g Z3JvdXA7Ci0gIGJDaGVja0dyb3VwID0gdHJ1ZTsKIH0KIAogUVN0cmluZyBLQ29uZmlnQmFzZTo6 Z3JvdXAoKSBjb25zdCB7CkBAIC0xNzcsNiArMTc1LDQ1IEBAIHZvaWQgS0NvbmZpZ0Jhc2U6OnNl dERlc2t0b3BHcm91cCgpCiAgIG1Hcm91cCA9ICJEZXNrdG9wIEVudHJ5IjsKIH0KIAorYm9vbCBL Q29uZmlnQmFzZTo6aGFzS2V5KGNvbnN0IFFTdHJpbmcgJmtleSkgY29uc3QKK3sKKyAgIHJldHVy biBoYXNLZXkoa2V5LnV0ZjgoKS5kYXRhKCkpOworfQorCitib29sIEtDb25maWdCYXNlOjpoYXNL ZXkoY29uc3QgY2hhciAqcEtleSkgY29uc3QKK3sKKyAgS0VudHJ5S2V5IGFFbnRyeUtleShtR3Jv dXAsIDApOworICBhRW50cnlLZXkuY19rZXkgPSBwS2V5OworCisgIGlmICghbG9jYWxlKCkuaXNO dWxsKCkpIHsKKyAgICAvLyB0cnkgdGhlIGxvY2FsaXplZCBrZXkgZmlyc3QKKyAgICBhRW50cnlL ZXkuYkxvY2FsID0gdHJ1ZTsKKyAgICBLRW50cnkgZW50cnkgPSBsb29rdXBEYXRhKGFFbnRyeUtl eSk7CisgICAgaWYgKCFlbnRyeS5tVmFsdWUuaXNOdWxsKCkpCisgICAgICAgcmV0dXJuIHRydWU7 CisgICAgYUVudHJ5S2V5LmJMb2NhbCA9IGZhbHNlOworICB9CisKKyAgLy8gdHJ5IHRoZSBub24t bG9jYWxpemVkIHZlcnNpb24KKyAgS0VudHJ5IGVudHJ5ID0gbG9va3VwRGF0YShhRW50cnlLZXkp OworICByZXR1cm4gIWVudHJ5Lm1WYWx1ZS5pc051bGwoKTsKK30KKworYm9vbCBLQ29uZmlnQmFz ZTo6aGFzR3JvdXAoY29uc3QgUVN0cmluZyAmZ3JvdXApIGNvbnN0Cit7CisgIHJldHVybiBpbnRl cm5hbEhhc0dyb3VwKCBncm91cC51dGY4KCkpOworfQorCitib29sIEtDb25maWdCYXNlOjpoYXNH cm91cChjb25zdCBjaGFyICpfcEdyb3VwKSBjb25zdAoreworICByZXR1cm4gaW50ZXJuYWxIYXNH cm91cCggUUNTdHJpbmcoX3BHcm91cCkpOworfQorCitib29sIEtDb25maWdCYXNlOjpoYXNHcm91 cChjb25zdCBRQ1N0cmluZyAmX3BHcm91cCkgY29uc3QKK3sKKyAgcmV0dXJuIGludGVybmFsSGFz R3JvdXAoIF9wR3JvdXApOworfQorCiBRU3RyaW5nIEtDb25maWdCYXNlOjpyZWFkRW50cnkoIGNv bnN0IFFTdHJpbmcmIHBLZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IFFTdHJpbmcmIGFEZWZhdWx0ICkgY29uc3QKIHsKQEAgLTkyNyw3ICs5NjQsNyBAQCB2b2lkIEtD b25maWdCYXNlOjp3cml0ZUVudHJ5KCBjb25zdCBjaGFyCiAgIC8vIGZyb20gdW5kZXIgdXMgYmVm b3JlIHdlIHJlYWQuIEEgcmFjZSBjb25kaXRpb24gaXMgc3RpbGwKICAgLy8gcG9zc2libGUgYnV0 IG1pbmltaXplZC4KICAgaWYoIGJQZXJzaXN0ZW50ICkKLSAgICBiRGlydHkgPSB0cnVlOworICAg IHNldERpcnR5KHRydWUpOwogCiAgIGlmICghYkxvY2FsZUluaXRpYWxpemVkICYmIEtHbG9iYWw6 OmxvY2FsZSgpKQogICAgIHNldExvY2FsZSgpOwpAQCAtOTQ0LDggKzk4MSw3IEBAIHZvaWQgS0Nv bmZpZ0Jhc2U6OndyaXRlRW50cnkoIGNvbnN0IGNoYXIKICAgICBhRW50cnlEYXRhLmJEaXJ0eSA9 IHRydWU7CiAKICAgLy8gcmV3cml0ZSB0aGUgbmV3IHZhbHVlCi0gIHB1dERhdGEoZW50cnlLZXks IGFFbnRyeURhdGEsIGJDaGVja0dyb3VwKTsKLSAgYkNoZWNrR3JvdXAgPSBmYWxzZTsKKyAgcHV0 RGF0YShlbnRyeUtleSwgYUVudHJ5RGF0YSwgdHJ1ZSk7CiB9CiAKIHZvaWQgS0NvbmZpZ0Jhc2U6 OndyaXRlUGF0aEVudHJ5KCBjb25zdCBRU3RyaW5nJiBwS2V5LCBjb25zdCBRU3RyaW5nICYgcGF0 aCwKQEAgLTk4Niw3ICsxMDIyLDcgQEAgdm9pZCBLQ29uZmlnQmFzZTo6ZGVsZXRlRW50cnkoIGNv bnN0IGNoYQogICAvLyBjbGFzc2VzIGRvIGNhY2hpbmcsIHRoZXkgd29uJ3QgdHJ5IGFuZCBmbHVz aCB0aGUgY2FjaGUgb3V0CiAgIC8vIGZyb20gdW5kZXIgdXMgYmVmb3JlIHdlIHJlYWQuIEEgcmFj ZSBjb25kaXRpb24gaXMgc3RpbGwKICAgLy8gcG9zc2libGUgYnV0IG1pbmltaXplZC4KLSAgYkRp cnR5ID0gdHJ1ZTsKKyAgc2V0RGlydHkodHJ1ZSk7CiAKICAgaWYgKCFiTG9jYWxlSW5pdGlhbGl6 ZWQgJiYgS0dsb2JhbDo6bG9jYWxlKCkpCiAgICAgc2V0TG9jYWxlKCk7CkBAIC0xMDAwLDggKzEw MzYsNyBAQCB2b2lkIEtDb25maWdCYXNlOjpkZWxldGVFbnRyeSggY29uc3QgY2hhCiAgIGFFbnRy eURhdGEuYkRlbGV0ZWQgPSB0cnVlOwogCiAgIC8vIHJld3JpdGUgdGhlIG5ldyB2YWx1ZQotICBw dXREYXRhKGVudHJ5S2V5LCBhRW50cnlEYXRhLCBiQ2hlY2tHcm91cCk7Ci0gIGJDaGVja0dyb3Vw ID0gZmFsc2U7CisgIHB1dERhdGEoZW50cnlLZXksIGFFbnRyeURhdGEsIHRydWUpOwogfQogCiBi b29sIEtDb25maWdCYXNlOjpkZWxldGVHcm91cCggY29uc3QgUVN0cmluZyYgZ3JvdXAsIGJvb2wg YkRlZXAgKQpAQCAtMTAxMyw2ICsxMDQ4LDggQEAgYm9vbCBLQ29uZmlnQmFzZTo6ZGVsZXRlR3Jv dXAoIGNvbnN0IFFTdAogICAgIHJldHVybiBhRW50cnlNYXAuaXNFbXB0eSgpOwogICB9CiAKKyAg Ym9vbCBkaXJ0eSA9IGZhbHNlOworICBib29sIGNoZWNrR3JvdXAgPSB0cnVlOwogICAvLyB3ZSB3 YW50IHRvIHJlbW92ZSBhbGwgZW50cmllcyBpbiB0aGUgZ3JvdXAKICAgS0VudHJ5TWFwSXRlcmF0 b3IgYUl0OwogICBmb3IgKGFJdCA9IGFFbnRyeU1hcC5iZWdpbigpOyBhSXQgIT0gYUVudHJ5TWFw LmVuZCgpOyArK2FJdCkKQEAgLTEwMjMsMTEgKzEwNjAsMTMgQEAgcVdhcm5pbmcoIkRlbGV0aW5n IGtleSA9ICVzIiwgYUl0LmtleSgpLgogICAgICAgKCphSXQpLmJEZWxldGVkID0gdHJ1ZTsKICAg ICAgICgqYUl0KS5iRGlydHkgPSB0cnVlOwogICAgICAgKCphSXQpLm1WYWx1ZSA9IDA7Ci0gICAg ICBwdXREYXRhKGFJdC5rZXkoKSwgKmFJdCwgYkNoZWNrR3JvdXApOwotICAgICAgYkNoZWNrR3Jv dXAgPSBmYWxzZTsKLSAgICAgIGJEaXJ0eSA9IHRydWU7CisgICAgICBwdXREYXRhKGFJdC5rZXko KSwgKmFJdCwgY2hlY2tHcm91cCk7CisgICAgICBjaGVja0dyb3VwID0gZmFsc2U7CisgICAgICBk aXJ0eSA9IHRydWU7CiAgICAgfQogICB9CisgIGlmIChkaXJ0eSkKKyAgICAgc2V0RGlydHkodHJ1 ZSk7CiAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNDY0LDYgKzE1MDMsMzggQEAgS0NvbmZpZ0Jh c2U6OkNvbmZpZ1N0YXRlIEtDb25maWdCYXNlOjpnZQogICAgIGlmIChiYWNrRW5kKQogICAgICAg IHJldHVybiBiYWNrRW5kLT5nZXRDb25maWdTdGF0ZSgpOwogICAgIHJldHVybiBSZWFkT25seTsK K30KKworS0NvbmZpZ0dyb3VwOjpLQ29uZmlnR3JvdXAoS0NvbmZpZ0Jhc2UgKm1hc3RlciwgY29u c3QgUUNTdHJpbmcgJmdyb3VwKQoreworICBtTWFzdGVyID0gbWFzdGVyOworICBiYWNrRW5kID0g MDsKKyAgYkxvY2FsZUluaXRpYWxpemVkID0gdHJ1ZTsKKyAgYlJlYWRPbmx5ID0gbU1hc3Rlci0+ YlJlYWRPbmx5OworICBiRXhwYW5kID0gZmFsc2U7CisgIGJEaXJ0eSA9IGZhbHNlOyAvLyBOb3Qg dXNlZAorICBtR3JvdXAgPSBncm91cDsKKyAgYUxvY2FsZVN0cmluZyA9IG1NYXN0ZXItPmFMb2Nh bGVTdHJpbmc7Cit9CisKK3ZvaWQgS0NvbmZpZ0dyb3VwOjpkZWxldGVHcm91cCgpCit7CisgIG1N YXN0ZXItPmRlbGV0ZUdyb3VwKEtDb25maWdCYXNlOjpncm91cCgpKTsKK30KKwordm9pZCBLQ29u ZmlnR3JvdXA6OnNldERpcnR5KGJvb2wgYikKK3sKKyAgbU1hc3Rlci0+c2V0RGlydHkoYik7Cit9 CisKK3ZvaWQgS0NvbmZpZ0dyb3VwOjpwdXREYXRhKGNvbnN0IEtFbnRyeUtleSAmX2tleSwgY29u c3QgS0VudHJ5ICZfZGF0YSwgYm9vbCBfY2hlY2tHcm91cCkKK3sKKyAgbU1hc3Rlci0+cHV0RGF0 YShfa2V5LCBfZGF0YSwgX2NoZWNrR3JvdXApOworfQorCitLRW50cnkgS0NvbmZpZ0dyb3VwOjps b29rdXBEYXRhKGNvbnN0IEtFbnRyeUtleSAmX2tleSkgY29uc3QKK3sKKyAgcmV0dXJuIG1NYXN0 ZXItPmxvb2t1cERhdGEoX2tleSk7CiB9CiAKICNpbmNsdWRlICJrY29uZmlnYmFzZS5tb2MiCklu ZGV4OiBrY29uZmlnYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL2tkZS9rZGVsaWJz L2tkZWNvcmUva2NvbmZpZ2Jhc2UuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42NgpkaWZmIC11 IC0zIC1kIC1wIC1yMS42NiBrY29uZmlnYmFzZS5oCi0tLSBrY29uZmlnYmFzZS5oCTIwMDEvMTEv MDIgMTM6Mzg6NDkJMS42NgorKysga2NvbmZpZ2Jhc2UuaAkyMDAxLzExLzAzIDA2OjQ2OjMxCkBA IC0zOCw2ICszOCw3IEBACiAKIGNsYXNzIEtDb25maWdCYWNrRW5kOwogY2xhc3MgS0NvbmZpZ0Jh c2VQcml2YXRlOworY2xhc3MgS0NvbmZpZ0dyb3VwOwogCiAvKioKICAqIEFic3RyYWN0IGJhc2Ug Y2xhc3MgZm9yIEtERSBjb25maWd1cmF0aW9uIGVudHJpZXMuCkBAIC02OSw2ICs3MCw3IEBAIGNs YXNzIEtDb25maWdCYXNlIDogcHVibGljIFFPYmplY3QKIAogICBmcmllbmQgY2xhc3MgS0NvbmZp Z0JhY2tFbmQ7CiAgIGZyaWVuZCBjbGFzcyBLQ29uZmlnSU5JQmFja0VuZDsKKyAgZnJpZW5kIGNs YXNzIEtDb25maWdHcm91cDsKIAogcHVibGljOgogICAvKioKQEAgLTExMyw3ICsxMTUsNyBAQCBw dWJsaWM6CiAgICAqIEBwYXJhbSBncm91cCBUaGUgZ3JvdXAgdG8gc2VhcmNoIGZvci4KICAgICog QHJldHVybnMgV2hldGhlciB0aGUgZ3JvdXAgZXhpc3RzLgogICAgKi8KLSAgdmlydHVhbCBib29s IGhhc0dyb3VwKGNvbnN0IFFTdHJpbmcgJmdyb3VwKSBjb25zdCA9IDA7CisgIGJvb2wgaGFzR3Jv dXAoY29uc3QgUVN0cmluZyAmZ3JvdXApIGNvbnN0OwogCiAgIC8qKgogICAgKiBSZXR1cm5zIGEg bGlzdCBvZiBncm91cHMgdGhhdCBhcmUga25vd24gYWJvdXQuCkBAIC05MjMsNyArOTI1LDcgQEAg cHVibGljOgogICAgKiBAcGFyYW0gcEtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuCiAgICAqIEBy ZXR1cm4gSWYgdHJ1ZSwgdGhlIGtleSBpcyBhdmFpbGFibGUuCiAgICAqLwotICB2aXJ0dWFsIGJv b2wgaGFzS2V5KCBjb25zdCBRU3RyaW5nJiBrZXkgKSBjb25zdCA9IDA7CisgIGJvb2wgaGFzS2V5 KCBjb25zdCBRU3RyaW5nJiBrZXkgKSBjb25zdDsKIAogICAvKioKICAgICogUmV0dXJucyBhIG1h cCAodHJlZSkgb2YgZW50cmllcyBmb3IgYWxsIGVudHJpZXMgaW4gYSBwYXJ0aWN1bGFyCkBAIC0x MDU3LDYgKzEwNTksOCBAQCBwcm90ZWN0ZWQ6CiAgICAqLwogICB2aXJ0dWFsIEtFbnRyeSBsb29r dXBEYXRhKGNvbnN0IEtFbnRyeUtleSAmX2tleSkgY29uc3QgPSAwOwogCisgIHZpcnR1YWwgYm9v bCBpbnRlcm5hbEhhc0dyb3VwKGNvbnN0IFFDU3RyaW5nICZncm91cCkgY29uc3QgPSAwOworCiAg IC8qKgogICAgKiBBIGJhY2sgZW5kIGZvciBsb2FkaW5nL3NhdmluZyB0byBkaXNrIGluIGEgcGFy dGljdWxhciBmb3JtYXQuCiAgICAqLwpAQCAtMTA2Nyw5ICsxMDcxLDkgQEAgcHVibGljOgogICAg Ki8KICAgdm9pZCBzZXRHcm91cCggY29uc3QgUUNTdHJpbmcgJnBHcm91cCApOwogICB2b2lkIHNl dEdyb3VwKCBjb25zdCBjaGFyICpwR3JvdXAgKTsKLSAgdmlydHVhbCBib29sIGhhc0dyb3VwKGNv bnN0IFFDU3RyaW5nICZfcEdyb3VwKSBjb25zdCA9IDA7Ci0gIHZpcnR1YWwgYm9vbCBoYXNHcm91 cChjb25zdCBjaGFyICpfcEdyb3VwKSBjb25zdCA9IDA7Ci0gIHZpcnR1YWwgYm9vbCBoYXNLZXko IGNvbnN0IGNoYXIgKnBLZXkgKSBjb25zdCA9IDA7CisgIGJvb2wgaGFzR3JvdXAoY29uc3QgUUNT dHJpbmcgJl9wR3JvdXApIGNvbnN0OworICBib29sIGhhc0dyb3VwKGNvbnN0IGNoYXIgKl9wR3Jv dXApIGNvbnN0OworICBib29sIGhhc0tleSggY29uc3QgY2hhciAqcEtleSApIGNvbnN0OwogCiBw cm90ZWN0ZWQ6CiAgIFFDU3RyaW5nIHJlYWRFbnRyeVV0ZjgoIGNvbnN0IGNoYXIgKnBLZXkpIGNv bnN0OwpAQCAtMTA5MCw3ICsxMDk0LDYgQEAgcHJvdGVjdGVkOgogICBib29sIGJMb2NhbGVJbml0 aWFsaXplZDsKICAgYm9vbCBiUmVhZE9ubHk7ICAgICAgICAgICAvLyBjdXJyZW50bHkgb25seSB1 c2VkIGJ5IEtTaW1wbGVDb25maWcKICAgbXV0YWJsZSBib29sIGJFeHBhbmQ7ICAgICAvLyB3aGV0 aGVyIGRvbGxhciBleHBhbnNpb24gaXMgdXNlZAotICBib29sIGJDaGVja0dyb3VwOyAgICAgICAg IC8vIEZsYWcgd2hldGhlciB0byBjaGVjayBncm91cCBzdGF0dXMKIAogICBLQ29uZmlnQmFzZVBy aXZhdGUgKmQ7CiB9OwpAQCAtMTE3Miw2ICsxMTc1LDQ5IEBAIHByaXZhdGU6CiAgIEtDb25maWdH cm91cFNhdmVyJiBvcGVyYXRvcj0oY29uc3QgS0NvbmZpZ0dyb3VwU2F2ZXImKTsKIAogICBLQ29u ZmlnR3JvdXBTYXZlclByaXZhdGUgKmQ7Cit9OworCitjbGFzcyBLQ29uZmlnR3JvdXA6IHB1Ymxp YyBLQ29uZmlnQmFzZQoreworcHVibGljOgorICAgS0NvbmZpZ0dyb3VwKEtDb25maWdCYXNlICpt YXN0ZXIsIGNvbnN0IFFDU3RyaW5nICZncm91cCk7CisgICAKKyAgIC8qKgorICAgICogRGVsZXRl IGFsbCBlbnRyaWVzIGluIHRoZSBlbnRpcmUgZ3JvdXAKKyAgICAqLworICAgdm9pZCBkZWxldGVH cm91cCgpOworCisgICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgcmVpbXBsZW1lbnRl ZDoKKyAgIHZpcnR1YWwgdm9pZCBzZXREaXJ0eShib29sIGIpOworICAgdmlydHVhbCB2b2lkIHB1 dERhdGEoY29uc3QgS0VudHJ5S2V5ICZfa2V5LCBjb25zdCBLRW50cnkgJl9kYXRhLCBib29sIF9j aGVja0dyb3VwID0gdHJ1ZSk7CisgICB2aXJ0dWFsIEtFbnRyeSBsb29rdXBEYXRhKGNvbnN0IEtF bnRyeUtleSAmX2tleSkgY29uc3Q7CisgICAKK3ByaXZhdGU6CisgICAvLyBIaWRlIHRoZSBmb2xs b3dpbmcgbWVtYmVyczogCisgICB2b2lkIHNldEdyb3VwKCkgeyB9CisgICB2b2lkIHNldERlc2t0 b3BHcm91cCgpIHsgfQorICAgdm9pZCBncm91cCgpIHsgfQorICAgdm9pZCBoYXNHcm91cCgpIHsg fQorICAgdm9pZCBzZXRSZWFkT25seShib29sKSB7IH0KKyAgIHZvaWQgaXNEaXJ0eSgpIHsgfQor CisgICAvLyBUaGUgZm9sbG93aW5nIG1lbWJlcnMgYXJlIG5vdCB1c2VkLgorICAgdmlydHVhbCBR U3RyaW5nTGlzdCBncm91cExpc3QoKSBjb25zdCB7IHJldHVybiBRU3RyaW5nTGlzdCgpOyB9Cisg ICB2aXJ0dWFsIHZvaWQgcm9sbGJhY2soYm9vbCkgeyB9IAorICAgdmlydHVhbCB2b2lkIHN5bmMo KSB7IH0KKyAgIHZpcnR1YWwgdm9pZCByZXBhcnNlQ29uZmlndXJhdGlvbigpIHsgfQorICAgdmly dHVhbCBRTWFwPFFTdHJpbmcsIFFTdHJpbmc+IGVudHJ5TWFwKGNvbnN0IFFTdHJpbmcgJikgY29u c3QgCisgICAgeyByZXR1cm4gUU1hcDxRU3RyaW5nLFFTdHJpbmc+KCk7IH0KKyAgIHZpcnR1YWwg S0VudHJ5TWFwIGludGVybmFsRW50cnlNYXAoIGNvbnN0IFFTdHJpbmcmKSBjb25zdCAKKyAgICB7 IHJldHVybiBLRW50cnlNYXAoKTsgfQorICAgdmlydHVhbCBLRW50cnlNYXAgaW50ZXJuYWxFbnRy eU1hcCgpIGNvbnN0IAorICAgIHsgcmV0dXJuIEtFbnRyeU1hcCgpOyB9CisgICB2aXJ0dWFsIGJv b2wgaW50ZXJuYWxIYXNHcm91cChjb25zdCBRQ1N0cmluZyAmKSBjb25zdAorICAgIHsgcmV0dXJu IGZhbHNlOyB9CisKKyAgIHZvaWQgZ2V0Q29uZmlnU3RhdGUoKSB7IH0KKyAgIAorICAgS0NvbmZp Z0Jhc2UgKm1NYXN0ZXI7CiB9OwogCiAjZW5kaWYK --------------Boundary-00=_NXS7KRA4BMVVUYK0T7DO--