This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---559023410-630072926-1015518994=:21480 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi, On Thu, 7 Mar 2002, Carsten Pfeiffer wrote: > oups, I thought you had already committed that. I'm fine with the > patch (only the friendships of KCompTreeNode are a thorn in my eye -- > can you add a public accessor for "next", maybe?). Ok, I made it a public member. It's a private class, and I would have to write an accessor _and_ a setter which is really stupid, if it only accesses one member by assignment and return. I.e. I check the patch in as attached to this mail. Ciao, Michael. ---559023410-630072926-1015518994=:21480 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="allocation3.diff" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="allocation3.diff" PyBNYWtlZmlsZS5pbi5yZWFsDQo/IGtjaGFyc2V0cy5jcHBfbW0NCj8ga2No YXJzZXRzLmRpZmYNCj8ga2RlY29yZS5kaWZmDQo/IGtsaWJsb2FkZXIuZGlm Zg0KSW5kZXg6IGthbGxvY2F0b3IuY3BwDQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQpSQ1MgZmlsZTogL2hvbWUva2RlL2tkZWxpYnMva2RlY29yZS9rYWxs b2NhdG9yLmNwcCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNA0KZGlmZiAt dSAtcCAtcjEuNCBrYWxsb2NhdG9yLmNwcA0KLS0tIGthbGxvY2F0b3IuY3Bw CTIwMDAvMTAvMDkgMjE6Mjk6MDAJMS40DQorKysga2FsbG9jYXRvci5jcHAJ MjAwMi8wMy8wNyAxNjoyNjoyNw0KQEAgLTIsNiArMiw3IEBADQogICAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQogDQogICAg IENvcHlyaWdodCAoQykgMTk5OSBXYWxkbyBCYXN0aWFuIChiYXN0aWFuQGtk ZS5vcmcpDQorICAgIENvcHlyaWdodCAoQykgMjAwMiBNaWNoYWVsIE1hdHog KG1hdHpAa2RlLm9yZykNCiANCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KICAg ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy eSBHZW5lcmFsIFB1YmxpYw0KQEAgLTE4LDQ2ICsxOSwyMjcgQEANCiAgICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl IFBsYWNlIC0gU3VpdGUgMzMwLA0KICAgICBCb3N0b24sIE1BIDAyMTExLTEz MDcsIFVTQS4NCiAqLw0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KLS8vDQotLy8gS0RFIEhUTUwgV2lkZ2V0IC0tIE9iamVjdHMNCisN CisvKiBGYXN0IHpvbmUgbWVtb3J5IGFsbG9jYXRvciB3aXRoIGRlYWxsb2Nh dGlvbiBzdXBwb3J0LCBmb3IgdXNlIGFzIG9ic3RhY2sNCisgICBvciBhcyBn ZW5lcmFsIHB1cnBvc2UgYWxsb2NhdG9yLiAgSXQgZG9lcyBubyBjb21wYWN0 aW9uLiAgSWYgdGhlIHVzYWdlDQorICAgcGF0dGVybiBpcyBub24tb3B0aW1h bCBpdCBtaWdodCB3YXN0ZSBzb21lIG1lbW9yeSB3aGlsZSBydW5uaW5nLiAg RS5nLg0KKyAgIGFsbG9jYXRpbmcgbWFueSBzbWFsbCB0aGluZ3MgYXQgb25j ZSwgYW5kIHRoZW4gZGVhbGxvY2F0aW5nIG9ubHkgZXZlcnkNCisgICBzZWNv bmQgb25lLCB0aGVyZSBpcyBhIGhpZ2ggY2hhbmNlLCB0aGF0IGFjdHVhbGx5 IG5vIG1lbW9yeSBpcyBmcmVlZC4gICovDQogLy8gJElkOiBrYWxsb2NhdG9y LmNwcCx2IDEuNCAyMDAwLzEwLzA5IDIxOjI5OjAwIHphbmRlciBFeHAgJA0K IA0KICNpbmNsdWRlICJrYWxsb2NhdG9yLmgiDQogI2luY2x1ZGUgPGtkZWJ1 Zy5oPg0KIA0KLUtab25lQWxsb2NhdG9yOjpLWm9uZUFsbG9jYXRvcihsb25n IF9ibG9ja1NpemUpDQotOiBibG9ja1NpemUoX2Jsb2NrU2l6ZSksIGJsb2Nr T2Zmc2V0KDApDQorY2xhc3MgS1pvbmVBbGxvY2F0b3I6Ok1lbUJsb2NrDQor ew0KKyAgcHVibGljOg0KKyAgICBNZW1CbG9jayhzaXplX3QgcykgOiBzaXpl KHMpLCByZWYoMCksIG9sZGVyKDApLCBuZXdlcigwKQ0KKyAgICAgIHsgYmVn aW4gPSBuZXcgY2hhcltzXTsgfQ0KKyAgICB+TWVtQmxvY2soKSB7IGRlbGV0 ZSBbXSBiZWdpbjsgfQ0KKyAgICBib29sIGlzX2luKHZvaWQgKnB0cikgY29u c3Qge3JldHVybiAhKGJlZ2luID4gKGNoYXIgKilwdHINCisgICAgCQkJCSAg ICAgICAgICB8fCAoYmVnaW4gKyBzaXplKSA8PSAoY2hhciAqKXB0cik7IH0N CisgICAgc2l6ZV90IHNpemU7DQorICAgIHVuc2lnbmVkIGludCByZWY7DQor ICAgIGNoYXIgKmJlZ2luOw0KKyAgICBNZW1CbG9jayAqb2xkZXI7DQorICAg IE1lbUJsb2NrICpuZXdlcjsNCit9Ow0KKw0KK0tab25lQWxsb2NhdG9yOjpL Wm9uZUFsbG9jYXRvcih1bnNpZ25lZCBsb25nIF9ibG9ja1NpemUpDQorOiBj dXJyZW50QmxvY2soMCksIGJsb2NrU2l6ZSgxKSwgYmxvY2tPZmZzZXQoMCks IGxvZzIoMCksIG51bV9ibG9ja3MoMCksIA0KKyAgaGFzaExpc3QoMCksIGhh c2hTaXplKDApLCBoYXNoRGlydHkodHJ1ZSkNCiB7DQotICAgIGN1cnJlbnRC bG9jayA9IG5ldyBjaGFyW19ibG9ja1NpemVdOw0KLSAgICBtZW1vcnlCbG9j a3MuYXBwZW5kKGN1cnJlbnRCbG9jayk7DQorICB3aGlsZSAoYmxvY2tTaXpl IDwgX2Jsb2NrU2l6ZSkNCisgICAgYmxvY2tTaXplIDw8PSAxLCBsb2cyKys7 DQorICBibG9ja09mZnNldCA9IGJsb2NrU2l6ZTsNCiB9DQogDQogS1pvbmVB bGxvY2F0b3I6On5LWm9uZUFsbG9jYXRvcigpDQogew0KLSAgICB3aGlsZSAo IW1lbW9yeUJsb2Nrcy5pc0VtcHR5KCkpDQotICAgIHsNCi0gICAgICAgIGNo YXIgKm9sZEJ1ZmZlciA9IChjaGFyICopIG1lbW9yeUJsb2Nrcy50YWtlKDAp Ow0KLSAgICAgICAgZGVsZXRlIFtdIG9sZEJ1ZmZlcjsNCisgIHVuc2lnbmVk IGludCBjb3VudCA9IDA7DQorICBpZiAoaGFzaExpc3QpIHsNCisgICAgLyog Tm8gbmVlZCB0byBtYWludGFpbiB0aGUgZGlmZmVyZW50IGxpc3RzIGluIGhh c2hMaXN0W10gYW55bW9yZS4NCisgICAgICAgSS5lLiBubyBuZWVkIHRvIHVz ZSBkZWxCbG9jaygpLiAgKi8NCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBo YXNoU2l6ZTsgaSsrKQ0KKyAgICAgIGRlbGV0ZSBoYXNoTGlzdFtpXTsNCisg ICAgZGVsZXRlIFtdIGhhc2hMaXN0Ow0KKyAgICBoYXNoTGlzdCA9IDA7DQor ICB9DQorICBNZW1CbG9jayAqbmV4dDsNCisgIGZvciAoOyBjdXJyZW50Qmxv Y2s7IGN1cnJlbnRCbG9jayA9IG5leHQpIHsNCisgICAgbmV4dCA9IGN1cnJl bnRCbG9jay0+b2xkZXI7DQorICAgIGRlbGV0ZSBjdXJyZW50QmxvY2s7DQor ICAgIGNvdW50Kys7DQorICB9DQorICBpZiAoY291bnQgPiAxKQ0KKyAgICBx RGVidWcoInpvbmUgc3RpbGwgY29udGFpbmVkICVkIGJsb2NrcyIsIGNvdW50 KTsNCit9DQorDQordm9pZCBLWm9uZUFsbG9jYXRvcjo6aW5zZXJ0SGFzaChN ZW1CbG9jayAqYikNCit7DQorICB1bnNpZ25lZCBpbnQgYWRyID0gKCh1bnNp Z25lZCBpbnQpYi0+YmVnaW4pICYgKH4oYmxvY2tTaXplIC0gMSkpOw0KKyAg dW5zaWduZWQgaW50IGVuZCA9ICgodW5zaWduZWQgaW50KWItPmJlZ2luKSAr IGJsb2NrU2l6ZTsNCisgIHdoaWxlIChhZHIgPCBlbmQpIHsNCisgICAgdW5z aWduZWQgaW50IGtleSA9IGFkciA+PiBsb2cyOw0KKyAgICBrZXkgPSBrZXkg JiAoaGFzaFNpemUgLSAxKTsNCisgICAgaWYgKCFoYXNoTGlzdFtrZXldKQ0K KyAgICAgIGhhc2hMaXN0W2tleV0gPSBuZXcgUVZhbHVlTGlzdDxNZW1CbG9j ayAqPjsNCisgICAgaGFzaExpc3Rba2V5XS0+YXBwZW5kKGIpOw0KKyAgICBh ZHIgKz0gYmxvY2tTaXplOw0KKyAgfQ0KK30NCisNCit2b2lkIEtab25lQWxs b2NhdG9yOjphZGRCbG9jayhNZW1CbG9jayAqYikNCit7DQorICBiLT5uZXdl ciA9IDA7DQorICBiLT5vbGRlciA9IGN1cnJlbnRCbG9jazsNCisgIGlmIChj dXJyZW50QmxvY2spDQorICAgIGItPm9sZGVyLT5uZXdlciA9IGI7DQorICBj dXJyZW50QmxvY2sgPSBiOw0KKyAgbnVtX2Jsb2NrcysrOw0KKyAgLyogSWYg d2UgZWl0aGVyIGhhdmUgbm8gaGFzaExpc3QgYXQgYWxsLCBvciBzaW5jZSBp dCdzIGxhc3QgY29uc3RydWN0aW9uDQorICAgICB0aGVyZSBhcmUgbm93IG1h bnkgbW9yZSBibG9ja3Mgd2UgcmVjb25zdHJ1Y3QgdGhlIGxpc3QuICBCdXQg ZG9uJ3QNCisgICAgIG1ha2UgaXQgbGFyZ2VyIHRoYW4gYSBjZXJ0YWluIG1h eGltdW0uICAqLw0KKyAgaWYgKGhhc2hMaXN0ICYmICgobnVtX2Jsb2NrcyAv IDQpID4gaGFzaFNpemUgJiYgaGFzaFNpemUgPCA2NCoxMDI0KSkNCisgICAg aGFzaERpcnR5ID0gdHJ1ZTsNCisgIC8qIE9ubHkgaW5zZXJ0IHRoaXMgYmxv Y2sgaW50byB0aGUgaGFzaGxpc3RzLCBpZiB3ZSBhcmVuJ3QgZ29pbmcgdG8N CisgICAgIHJlY29uc3RydWN0IHRoZW0gYW55d2F5LiAgKi8NCisgIGlmICho YXNoTGlzdCAmJiAhaGFzaERpcnR5KQ0KKyAgICBpbnNlcnRIYXNoIChiKTsN Cit9DQorDQordm9pZCBLWm9uZUFsbG9jYXRvcjo6aW5pdEhhc2goKQ0KK3sN CisgIGlmIChoYXNoTGlzdCkgew0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8 IGhhc2hTaXplOyBpKyspDQorICAgICAgZGVsZXRlIGhhc2hMaXN0W2ldOw0K KyAgICBkZWxldGUgW10gaGFzaExpc3Q7DQorICAgIGhhc2hMaXN0ID0gMDsN CisgIH0NCisgIGhhc2hTaXplID0gMTsNCisgIHdoaWxlIChoYXNoU2l6ZSA8 IG51bV9ibG9ja3MpDQorICAgIGhhc2hTaXplIDw8PSAxOw0KKyAgaWYgKGhh c2hTaXplIDwgMTAyNCkNCisgICAgaGFzaFNpemUgPSAxMDI0Ow0KKyAgaWYg KGhhc2hTaXplID4gNjQqMTAyNCkNCisgICAgaGFzaFNpemUgPSA2NCoxMDI0 Ow0KKyAgaGFzaExpc3QgPSBuZXcgUVZhbHVlTGlzdDxNZW1CbG9jayAqPiAq W2hhc2hTaXplXTsNCisgIG1lbXNldCAoaGFzaExpc3QsIDAsIHNpemVvZihR VmFsdWVMaXN0PE1lbUJsb2NrKj4gKikgKiBoYXNoU2l6ZSk7DQorICBoYXNo RGlydHkgPSBmYWxzZTsNCisgIGZvciAoTWVtQmxvY2sgKmIgPSBjdXJyZW50 QmxvY2s7IGI7IGIgPSBiLT5vbGRlcikNCisgICAgaW5zZXJ0SGFzaChiKTsN Cit9DQorDQordm9pZCBLWm9uZUFsbG9jYXRvcjo6ZGVsQmxvY2soTWVtQmxv Y2sgKmIpDQorew0KKyAgLyogVXBkYXRlIGFsc28gdGhlIGhhc2hsaXN0cyBp ZiB3ZSBhcmVuJ3QgZ29pbmcgdG8gcmVjb25zdHJ1Y3QgdGhlbQ0KKyAgICAg c29vbi4gICovDQorICBpZiAoaGFzaExpc3QgJiYgIWhhc2hEaXJ0eSkgew0K KyAgICB1bnNpZ25lZCBpbnQgYWRyID0gKCh1bnNpZ25lZCBpbnQpYi0+YmVn aW4pICYgKH4oYmxvY2tTaXplIC0gMSkpOw0KKyAgICB1bnNpZ25lZCBpbnQg ZW5kID0gKCh1bnNpZ25lZCBpbnQpYi0+YmVnaW4pICsgYmxvY2tTaXplOw0K KyAgICB3aGlsZSAoYWRyIDwgZW5kKSB7DQorICAgICAgdW5zaWduZWQgaW50 IGtleSA9IGFkciA+PiBsb2cyOw0KKyAgICAgIGtleSA9IGtleSAmIChoYXNo U2l6ZSAtIDEpOw0KKyAgICAgIGlmIChoYXNoTGlzdFtrZXldKSB7DQorCVFW YWx1ZUxpc3Q8TWVtQmxvY2sgKj4gKmxpc3QgPSBoYXNoTGlzdFtrZXldOw0K KwlRVmFsdWVMaXN0PE1lbUJsb2NrICo+OjpJdGVyYXRvciBpdCA9IGxpc3Qt PmJlZ2luKCk7DQorCVFWYWx1ZUxpc3Q8TWVtQmxvY2sgKj46Okl0ZXJhdG9y IGVuZGl0ID0gbGlzdC0+ZW5kKCk7DQorCWZvciAoOyBpdCAhPSBlbmRpdDsg KytpdCkNCisJICBpZiAoKml0ID09IGIpIHsNCisJICAgIGxpc3QtPnJlbW92 ZShpdCk7DQorCSAgICBicmVhazsNCisJICB9DQorICAgICAgfQ0KKyAgICAg IGFkciArPSBibG9ja1NpemU7DQogICAgIH0NCisgIH0NCisgIGlmIChiLT5v bGRlcikNCisgICAgYi0+b2xkZXItPm5ld2VyID0gYi0+bmV3ZXI7DQorICBp ZiAoYi0+bmV3ZXIpDQorICAgIGItPm5ld2VyLT5vbGRlciA9IGItPm9sZGVy Ow0KKyAgaWYgKGIgPT0gY3VycmVudEJsb2NrKSB7DQorICAgIGN1cnJlbnRC bG9jayA9IDA7DQorICAgIGJsb2NrT2Zmc2V0ID0gYmxvY2tTaXplOw0KKyAg fQ0KKyAgZGVsZXRlIGI7DQorICBudW1fYmxvY2tzLS07DQogfQ0KIA0KIHZv aWQgKg0KIEtab25lQWxsb2NhdG9yOjphbGxvY2F0ZShzaXplX3QgX3NpemUp DQogew0KICAgIC8vIFVzZSB0aGUgc2l6ZSBvZiAodm9pZCAqKSBhcyBhbGln bm1lbnQNCi0gICBjb25zdCBzaXplX3QgYWxpZ25tZW50ID0gc2l6ZW9mKHZv aWQgKik7DQotICAgX3NpemUgPSAoX3NpemUgKyBhbGlnbm1lbnQgLSAxKSAm IH4oYWxpZ25tZW50IC0gMSk7ICAgDQorICAgY29uc3Qgc2l6ZV90IGFsaWdu bWVudCA9IHNpemVvZih2b2lkICopIC0gMTsNCisgICBfc2l6ZSA9IChfc2l6 ZSArIGFsaWdubWVudCkgJiB+YWxpZ25tZW50OyAgIA0KIA0KLSAgIGlmICgo bG9uZykgX3NpemUgKyBibG9ja09mZnNldCA+IGJsb2NrU2l6ZSkNCisgICBp ZiAoKHVuc2lnbmVkIGxvbmcpIF9zaXplICsgYmxvY2tPZmZzZXQgPiBibG9j a1NpemUpDQogICAgew0KLSAgICAgIGN1cnJlbnRCbG9jayA9IG5ldyBjaGFy W2Jsb2NrU2l6ZV07DQotICAgICAgbWVtb3J5QmxvY2tzLmFwcGVuZChjdXJy ZW50QmxvY2spOw0KKyAgICAgIGlmIChfc2l6ZSA+IGJsb2NrU2l6ZSkgew0K KwlxRGVidWcoIktab25lQWxsb2NhdG9yOiBhbGxvY2F0aW5nIG1vcmUgdGhh biAldSBieXRlcyIsIGJsb2NrU2l6ZSk7DQorCXJldHVybiAwOw0KKyAgICAg IH0NCisgICAgICBhZGRCbG9jayhuZXcgTWVtQmxvY2soYmxvY2tTaXplKSk7 DQogICAgICAgYmxvY2tPZmZzZXQgPSAwOw0KLSAgICAgIGtkRGVidWcgKCkg PDwgIkFsbG9jYXRpbmcgYmxvY2sgIyIgPDwgIG1lbW9yeUJsb2Nrcy5jb3Vu dCgpIDw8IGVuZGw7DQotICAgfSANCi0gICB2b2lkICpyZXN1bHQgPSAodm9p ZCAqKShjdXJyZW50QmxvY2srYmxvY2tPZmZzZXQpOw0KKyAgICAgIC8vcURl YnVnICgiQWxsb2NhdGluZyBibG9jayAjJWQgKCV4KVxuIiwgbnVtX2Jsb2Nr cywgY3VycmVudEJsb2NrLT5iZWdpbik7DQorICAgfQ0KKyAgIHZvaWQgKnJl c3VsdCA9ICh2b2lkICopKGN1cnJlbnRCbG9jay0+YmVnaW4rYmxvY2tPZmZz ZXQpOw0KKyAgIGN1cnJlbnRCbG9jay0+cmVmKys7DQogICAgYmxvY2tPZmZz ZXQgKz0gX3NpemU7DQogICAgcmV0dXJuIHJlc3VsdDsNCiB9DQogDQordm9p ZA0KK0tab25lQWxsb2NhdG9yOjpkZWFsbG9jYXRlKHZvaWQgKnB0cikNCit7 DQorICBpZiAoaGFzaERpcnR5KQ0KKyAgICBpbml0SGFzaCgpOw0KKw0KKyAg dW5zaWduZWQgaW50IGtleSA9ICgoKHVuc2lnbmVkIGludClwdHIpID4+IGxv ZzIpICYgKGhhc2hTaXplIC0gMSk7DQorICBRVmFsdWVMaXN0PE1lbUJsb2Nr ICo+ICpsaXN0ID0gaGFzaExpc3Rba2V5XTsNCisgIGlmICghbGlzdCkgew0K KyAgICAvKiBDYW4gaGFwcGVuIHdpdGggY2VydGFpbiB1c2FnZSBwYXR0ZXJu IG9mIGludGVybWl4ZWQgZnJlZV9zaW5jZSgpDQorICAgICAgIGFuZCBkZWFs bG9jYXRlKCkuICAqLw0KKyAgICAvL3FEZWJ1ZygiVWhvaCIpOw0KKyAgICBy ZXR1cm47DQorICB9DQorICBRVmFsdWVMaXN0PE1lbUJsb2NrKj46OkNvbnN0 SXRlcmF0b3IgaXQgPSBsaXN0LT5iZWdpbigpOw0KKyAgUVZhbHVlTGlzdDxN ZW1CbG9jayo+OjpDb25zdEl0ZXJhdG9yIGVuZGl0ID0gbGlzdC0+ZW5kKCk7 DQorICBmb3IgKDsgaXQgIT0gZW5kaXQ7ICsraXQpIHsNCisgICAgTWVtQmxv Y2sgKmN1ciA9ICppdDsNCisgICAgaWYgKGN1ci0+aXNfaW4ocHRyKSkgew0K KyAgICAgIGlmICghLS1jdXItPnJlZikgew0KKwlpZiAoY3VyICE9IGN1cnJl bnRCbG9jaykNCisJICBkZWxCbG9jayAoY3VyKTsNCisJZWxzZQ0KKwkgIGJs b2NrT2Zmc2V0ID0gMDsNCisgICAgICB9DQorICAgICAgcmV0dXJuOw0KKyAg ICB9DQorICB9DQorICAvKiBDYW4gaGFwcGVuIHdpdGggY2VydGFpbiB1c2Fn ZSBwYXR0ZXJuIG9mIGludGVybWl4ZWQgZnJlZV9zaW5jZSgpDQorICAgICBh bmQgZGVhbGxvY2F0ZSgpLiAgKi8NCisgIC8vcURlYnVnKCJVaG9oMiIpOw0K K30NCisNCit2b2lkDQorS1pvbmVBbGxvY2F0b3I6OmZyZWVfc2luY2Uodm9p ZCAqcHRyKQ0KK3sNCisgIC8qIElmIHdlIGhhdmUgYSBoYXNoTGlzdCBhbmQg aXQncyBub3QgeWV0IGRpcnR5LCBzZWUsIGlmIHdlIHdpbGwgZGlydHkNCisg ICAgIGl0IGJ5IHJlbW92aW5nIHRvbyBtYW55IGJsb2Nrcy4gIFRoaXMgd2ls bCBtYWtlIHRoZSBiZWxvdyBkZWxCbG9jaygpcw0KKyAgICAgZmFzdGVyLiAg Ki8NCisgIGlmIChoYXNoTGlzdCAmJiAhaGFzaERpcnR5KQ0KKyAgICB7DQor ICAgICAgY29uc3QgTWVtQmxvY2sgKmI7DQorICAgICAgdW5zaWduZWQgaW50 IHJlbW92ZWQgPSAwOw0KKyAgICAgIGZvciAoYiA9IGN1cnJlbnRCbG9jazsg YjsgYiA9IGItPm9sZGVyLCByZW1vdmVkKyspDQorCWlmIChiLT5pc19pbiAo cHRyKSkNCisJICBicmVhazsNCisgICAgICBpZiAoaGFzaFNpemUgPj0gNCAq IChudW1fYmxvY2tzIC0gcmVtb3ZlZCkpDQorICAgICAgICBoYXNoRGlydHkg PSB0cnVlOw0KKyAgICB9DQorICB3aGlsZSAoY3VycmVudEJsb2NrICYmICFj dXJyZW50QmxvY2stPmlzX2luKHB0cikpIHsNCisgICAgY3VycmVudEJsb2Nr ID0gY3VycmVudEJsb2NrLT5vbGRlcjsNCisgICAgZGVsQmxvY2sgKGN1cnJl bnRCbG9jay0+bmV3ZXIpOw0KKyAgfQ0KKyAgYmxvY2tPZmZzZXQgPSAoKGNo YXIqKXB0cikgLSBjdXJyZW50QmxvY2stPmJlZ2luOw0KK30NCkluZGV4OiBr YWxsb2NhdG9yLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl OiAvaG9tZS9rZGUva2RlbGlicy9rZGVjb3JlL2thbGxvY2F0b3IuaCx2DQpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuNg0KZGlmZiAtdSAtcCAtcjEuNiBrYWxs b2NhdG9yLmgNCi0tLSBrYWxsb2NhdG9yLmgJMjAwMS8xMi8wNiAxMzowMzo1 NwkxLjYNCisrKyBrYWxsb2NhdG9yLmgJMjAwMi8wMy8wNyAxNjoyNjoyNw0K QEAgLTIsNiArMiw3IEBADQogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBLREUgbGlicmFyaWVzDQogDQogICAgIENvcHlyaWdodCAoQykgMTk5OSBX YWxkbyBCYXN0aWFuIChiYXN0aWFuQGtkZS5vcmcpDQorICAgIENvcHlyaWdo dCAoQykgMjAwMiBNaWNoYWVsIE1hdHogKG1hdHpAa2RlLm9yZykNCiAgICAg ICAgICAgICAgIA0KICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQogICAgIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy YWwgUHVibGljDQpAQCAtMjYsMTcgKzI3LDIxIEBADQogI2lmbmRlZiBLQUxM T0NBVE9SX0gNCiAjZGVmaW5lIEtBTExPQ0FUT1JfSA0KIA0KLSNpbmNsdWRl IDxzdGRpby5oPg0KLSNpbmNsdWRlIDxxcHRybGlzdC5oPg0KKyNpbmNsdWRl IDxxdmFsdWVsaXN0Lmg+DQogDQogY2xhc3MgS1pvbmVBbGxvY2F0b3JQcml2 YXRlOw0KIA0KKw0KIC8qKg0KICAqIE1lbW9yeSBhbGxvY2F0b3IgZm9yIGxh cmdlIGdyb3VwcyBvZiBzbWFsbCBvYmplY3RzLg0KICAqIFRoaXMgc2hvdWxk IGJlIHVzZWQgZm9yIGxhcmdlIGdyb3VwcyBvZiBvYmplY3RzIHRoYXQgYXJl IGNyZWF0ZWQgYW5kDQogICogZGVzdHJveWVkIHRvZ2V0aGVyLiBXaGVuIHVz ZWQgY2FyZWZ1bGx5IGZvciB0aGlzIHB1cnBvc2UgaXQgaXMgZmFzdGVyDQot ICogYW5kIG1vcmUgbWVtb3J5IGVmZmljaWVudCB0aGFuIG1hbGxvYy4NCi0g KiBAYXV0aG9yIFdhbGRvIEJhc3RpYW4gPGJhc3RpYW5Aa2RlLm9yZz4NCisg KiBhbmQgbW9yZSBtZW1vcnkgZWZmaWNpZW50IHRoYW4gbWFsbG9jLiAgQWRk aXRpb25hbGx5IHRvIGEgdXN1YWwgb2JzdGFjaw0KKyAqIGxpa2UgYWxsb2Nh dG9yIHlvdSBjYW4gYWxzbyBmcmVlIHRoZSBvYmplY3RzIGluZGl2aWR1YWxs eS4gIEJlY2F1c2UgaXQNCisgKiBkb2VzIG5vIGNvbXBhY3Rpb24gaXQgc3Rp bGwgaXMgZmFzdGVyIHRoZW4gbWFsbG9jKCkvZnJlZSgpLiAgRGVwZW5kaW5n DQorICogb24gdGhlIGV4YWN0IHVzYWdlIHBhdHRlcm4gdGhhdCBtaWdodCBj b21lIGF0IHRoZSBleHBlbnNlIG9mIHNvbWUNCisgKiBtZW1vcnkgdGhvdWdo Lg0KKyAqIEBhdXRob3IgV2FsZG8gQmFzdGlhbiA8YmFzdGlhbkBrZGUub3Jn PiwgTWljaGFlbCBNYXR6IDxtYXR6QGtkZS5vcmc+DQogICogQHZlcnNpb24g JElkOiBrYWxsb2NhdG9yLmgsdiAxLjYgMjAwMS8xMi8wNiAxMzowMzo1NyBm YXVyZSBFeHAgJA0KICAqLw0KIGNsYXNzIEtab25lQWxsb2NhdG9yDQpAQCAt NDYsNyArNTEsNyBAQCBwdWJsaWM6DQogICAgICAqIENyZWF0ZXMgYSBLWm9u ZUFsbG9jYXRvciBvYmplY3QuDQogICAgICAqIEBwYXJhbSBfYmxvY2tTaXpl IFNpemUgaW4gYnl0ZXMgb2YgdGhlIGJsb2NrcyByZXF1ZXN0ZWQgZnJvbSBt YWxsb2MuDQogICAgICAqLw0KLSAgICBLWm9uZUFsbG9jYXRvcihsb25nIF9i bG9ja1NpemUgPSAxMjgqMTAyNCk7DQorICAgIEtab25lQWxsb2NhdG9yKHVu c2lnbmVkIGxvbmcgX2Jsb2NrU2l6ZSA9IDgqMTAyNCk7DQogDQogICAgIC8q Kg0KICAgICAgKiBEZXN0cnVjdHMgdGhlIFpvbmVBbGxvY2F0b3IgYW5kIGZy ZWUgYWxsIG1lbW9yeSBhbGxvY2F0ZWQgYnkgaXQuDQpAQCAtNTUsMTUgKzYw LDcwIEBAIHB1YmxpYzoNCiANCiAgICAgLyoqDQogICAgICAqIEFsbG9jYXRl cyBhIG1lbW9yeSBibG9jay4NCi0gICAgICogQHBhcmFtIF9zaXplIFNpemUg aW4gYnl0ZXMgb2YgdGhlIG1lbW9yeSBibG9jay4gTWVtb3J5IGlzIG5vdCBh bGlnbmVkIQ0KKyAgICAgKiBAcGFyYW0gX3NpemUgU2l6ZSBpbiBieXRlcyBv ZiB0aGUgbWVtb3J5IGJsb2NrLiBNZW1vcnkgaXMgYWxpZ25lZCB0bw0KKyAg ICAgKiB0aGUgc2l6ZSBvZiBhIHBvaW50ZXIuDQogICAgICAqLw0KICAgICB2 b2lkKiBhbGxvY2F0ZShzaXplX3QgX3NpemUpOw0KIA0KKyAgICAvKioNCisg ICAgICogR2l2ZXMgYmFjayBhIGJsb2NrIHJldHVybmVkIGJ5IEByZWYgYWxs b2NhdGUoKSB0byB0aGUgem9uZQ0KKyAgICAgKiBhbGxvY2F0b3IsIGFuZCBw b3NzaWJseSBkZWFsbG9jYXRlcyB0aGUgYmxvY2sgaG9sZGluZyBpdCAod2hl biBpdCdzDQorICAgICAqIGVtcHR5KS4gIFRoZSBmaXJzdCBAcmVmIGRlYWxs b2NhdGUoKSBhZnRlciBtYW55IEByZWYgYWxsb2NhdGUoKSBjYWxscw0KKyAg ICAgKiAob3IgdGhlIGZpcnN0IGF0IGFsbCkgYnVpbGRzIGFuIGludGVybmFs IGRhdGEgc3RydWN0dXJlIGZvciBzcGVlZGluZw0KKyAgICAgKiB1cCBkZWFs bG9jYXRpb24uICBUaGUgY29uc2lzdGVuY3kgb2YgdGhhdCBzdHJ1Y3R1cmUg aXMgbWFpbnRhaW5lZA0KKyAgICAgKiBmcm9tIHRoZW4gb24gKGJ5IEByZWYg YWxsb2NhdGUoKSBhbmQgQHJlZiBkZWFsbG9jYXRlKCkpIHVubGVzcyBtYW55 DQorICAgICAqIG1vcmUgb2JqZWN0cyBhcmUgYWxsb2NhdGVkIHdpdGhvdXQg YW55IGludGVydmVuaW5nIGRlYWxsb2NhdGlvbiwgaW4NCisgICAgICogd2hp Y2ggY2FzZSBpdCdzIHRocm93biBhd2F5IGFuZCByZWJ1aWx0IGF0IHRoZSBu ZXh0IEByZWYgZGVhbGxvY2F0ZSgpLg0KKyAgICAgKg0KKyAgICAgKiBUaGUg ZWZmZWN0IG9mIHRoaXMgaXMsIHRoYXQgc3VjaCBpbml0aWFsIEByZWYgZGVh bGxvY2F0ZSgpIGNhbGxzIHRha2UNCisgICAgICogbW9yZSB0aW1lIHRoZW4g dGhlIG5vcm1hbCBjYWxscywgYW5kIHRoYXQgYWZ0ZXIgdGhpcyBsaXN0IGlz IGJ1aWx0LCBpLmUuDQorICAgICAqIGdlbmVyYWxseSBpZiBAcmVmIGRlYWxs b2NhdGUoKSBpcyB1c2VkIGF0IGFsbCwgYWxzbyBhbGxvY2F0ZSgpIGlzIGEN CisgICAgICogbGl0dGxlIGJpdCBzbG93ZXIuICBUaGlzIG1lYW5zLCB0aGF0 IGlmIHlvdSB3YW50IHRvIHNxdWVlemUgb3V0IHRoZSBsYXN0DQorICAgICAq IGJpdCBwZXJmb3JtYW5jZSB5b3Ugd291bGQgd2FudCB0byB1c2UgS1pvbmVB bGxvY2F0b3IgYXMgYW4gb2JzdGFjaywgaS5lLg0KKyAgICAgKiBqdXN0IHVz ZSB0aGUgZnVuY3Rpb25zIEByZWYgYWxsb2NhdGUoKSBhbmQgQHJlZiBmcmVl X3NpbmNlKCkuICBBbGwgdGhlDQorICAgICAqIHJlbWFpbmluZyBtZW1vcnkg aXMgcmV0dXJuZWQgdG8gdGhlIHN5c3RlbSBpZiB0aGUgem9uZSBhbGxvY2F0 b3INCisgICAgICogaXMgZGVzdHJveWVkLg0KKyAgICAgKiBAcGFyYW0gcHRy IFBvaW50ZXIgYXMgcmV0dXJuZWQgYnkgQHJlZiBhbGxvY2F0ZSgpLg0KKyAg ICAgKi8NCisgICAgdm9pZCBkZWFsbG9jYXRlKHZvaWQgKnB0cik7DQorDQor ICAgIC8qKg0KKyAgICAgKiBEZWFsbG9jYXRlIG1hbnkgb2JqZWN0cyBhdCBv bmNlLg0KKyAgICAgKiBAcmVmIGZyZWVfc2luY2UoKSBkZWFsbG9jYXRlcyBh bGwgb2JqZWN0cyBhbGxvY2F0ZWQgYWZ0ZXIgQHAgcHRyLCANCisgICAgICog QGVtIGluY2x1ZGluZyBAcCBwdHIgaXRzZWxmLg0KKyAgICAgKiBAcGFyYW0g cHRyIFBvaW50ZXIgYXMgcmV0dXJuZWQgYnkgQHJlZiBhbGxvY2F0ZSgpLiAg SXQgYWN0cyBsaWtlDQorICAgICAqIGEga2luZCBvZiBtYXJrIG9mIGEgY2Vy dGFpbiBwb3NpdGlvbiBpbiB0aGUgc3RhY2sgb2YgYWxsIG9iamVjdHMsDQor ICAgICAqIG9mZiB3aGljaCB5b3UgY2FuIHRocm93IGF3YXkgZXZlcnl0aGlu ZyBhYm92ZSB0aGF0IG1hcmsuDQorICAgICAqDQorICAgICAqIFRoZSBpbnRl bmRlZCB1c2UgaXMgc29tZXRoaW5nIGFsb25nIHRoZSBsaW5lcyBvZjoNCisg ICAgICogPHByZT4NCisgICAgICogS1pvbmVBbGxvY2F0b3IgYWxsb2MoODE5 Mik7DQorICAgICAqIHZvaWQgKnJlbWVtYmVyX21lID0gYWxsb2MuYWxsb2Nh dGUoMCk7DQorICAgICAqIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDsgaSsr KQ0KKyAgICAgKiAgIGRvX3NvbWV0aGluZ193aXRoIChhbGxvYy5hbGxvY2F0 ZSgxMikpOw0KKyAgICAgKiBhbGxvYy5mcmVlX3NpbmNlIChyZW1lbWJlcl9t ZSk7DQorICAgICAqIDwvcHJlPg0KKyAgICAgKiBOb3RlLCB0aGF0IHdlIGRv bid0IG5lZWQgdG8gcmVtZW1iZXIgYWxsIHRoZSBwb2ludGVycyB0byB0aGUg MTItYnl0ZQ0KKyAgICAgKiBvYmplY3RzIGZvciBmcmVlaW5nIHRoZW0uICBU aGUgQHJlZiBmcmVlX3NpbmNlKCkgZG9lcyBkZWFsbG9jYXRlIHRoZW0NCisg ICAgICogYWxsIGF0IG9uY2UuDQorICAgICAqLw0KKyAgICB2b2lkIGZyZWVf c2luY2Uodm9pZCAqcHRyKTsNCisNCiBwcm90ZWN0ZWQ6DQotICAgIGxvbmcg YmxvY2tTaXplOw0KLSAgICBRUHRyTGlzdDxjaGFyPiBtZW1vcnlCbG9ja3M7 DQotICAgIGNoYXIgKmN1cnJlbnRCbG9jazsNCi0gICAgbG9uZyBibG9ja09m ZnNldDsNCisgICAgY2xhc3MgTWVtQmxvY2s7DQorICAgIHR5cGVkZWYgUVZh bHVlTGlzdDxNZW1CbG9jayAqPiBNZW1MaXN0Ow0KKyAgICB2b2lkIGFkZEJs b2NrKE1lbUJsb2NrICpiKTsNCisgICAgdm9pZCBkZWxCbG9jayhNZW1CbG9j ayAqYik7DQorICAgIHZvaWQgaW5zZXJ0SGFzaChNZW1CbG9jayAqYik7DQor ICAgIHZvaWQgaW5pdEhhc2goKTsNCisgICAgTWVtQmxvY2sgKmN1cnJlbnRC bG9jazsNCisgICAgdW5zaWduZWQgbG9uZyBibG9ja1NpemU7DQorICAgIHVu c2lnbmVkIGxvbmcgYmxvY2tPZmZzZXQ7DQorICAgIHVuc2lnbmVkIGludCBs b2cyOw0KKyAgICB1bnNpZ25lZCBpbnQgbnVtX2Jsb2NrczsNCisgICAgTWVt TGlzdCAqKmhhc2hMaXN0Ow0KKyAgICB1bnNpZ25lZCBpbnQgaGFzaFNpemU7 DQorICAgIGJvb2wgaGFzaERpcnR5Ow0KIHByaXZhdGU6DQogICAgIEtab25l QWxsb2NhdG9yUHJpdmF0ZSAqZDsNCiB9Ow0KSW5kZXg6IGtjb21wbGV0aW9u LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9ob21l L2tkZS9rZGVsaWJzL2tkZWNvcmUva2NvbXBsZXRpb24uY3BwLHYNCnJldHJp ZXZpbmcgcmV2aXNpb24gMS40OQ0KZGlmZiAtdSAtcCAtcjEuNDkga2NvbXBs ZXRpb24uY3BwDQotLS0ga2NvbXBsZXRpb24uY3BwCTIwMDIvMDMvMDMgMjE6 MjA6MjUJMS40OQ0KKysrIGtjb21wbGV0aW9uLmNwcAkyMDAyLzAzLzA3IDE2 OjI2OjI3DQpAQCAtNTQ2LDE1ICs1NDYsMTQgQEAgdm9pZCBLQ29tcGxldGlv bjo6ZXh0cmFjdFN0cmluZ3NGcm9tTm9kZQ0KICAgICAgICAgcmV0dXJuOw0K IA0KICAgICAvLyBrRGVidWcoKSA8PCAiQmVnaW5uaW5nOiAiIDw8IGJlZ2lu bmluZyA8PCBlbmRsOw0KLSAgICBLQ29tcFRyZWVDaGlsZHJlbjo6Q29uc3RJ dGVyYXRvciBpdDsNCiAgICAgY29uc3QgS0NvbXBUcmVlQ2hpbGRyZW4gKmxp c3QgPSBub2RlLT5jaGlsZHJlbigpOw0KICAgICBRU3RyaW5nIHN0cmluZzsN CiAgICAgUVN0cmluZyB3Ow0KIA0KICAgICAvLyBsb29wIHRocnUgYWxsIGNo aWxkcmVuDQotICAgIGZvciAoIGl0ID0gbGlzdC0+YmVnaW4oKTsgaXQgIT0g bGlzdC0+ZW5kKCk7ICsraXQgKSB7DQorICAgIGZvciAoIEtDb21wVHJlZU5v ZGUgKmN1ciA9IGxpc3QtPmJlZ2luKCk7IGN1ciA7IGN1ciA9IGN1ci0+bmV4 dCkgew0KICAgICAgICAgc3RyaW5nID0gYmVnaW5uaW5nOw0KLSAgICAgICAg bm9kZSA9ICppdDsNCisJbm9kZSA9IGN1cjsNCiAJaWYgKCAhbm9kZS0+aXNO dWxsKCkgKQ0KIAkgICAgc3RyaW5nICs9ICpub2RlOw0KIA0KQEAgLTY2MCw5 ICs2NTksMTIgQEAgdm9pZCBLQ29tcGxldGlvbjo6ZG9CZWVwKCBCZWVwTW9k ZSBtb2RlIA0KIEtDb21wVHJlZU5vZGU6On5LQ29tcFRyZWVOb2RlKCkNCiB7 DQogICAgIC8vIGRlbGV0ZSBhbGwgY2hpbGRyZW4NCi0gICAgS0NvbXBUcmVl Q2hpbGRyZW46Okl0ZXJhdG9yIGl0Ow0KLSAgICBmb3IgKCBpdCA9IG15Q2hp bGRyZW4uYmVnaW4oKTsgaXQgIT0gbXlDaGlsZHJlbi5lbmQoKTsgKytpdCAp DQotICAgICAgICBkZWxldGUgKml0Ow0KKyAgICBLQ29tcFRyZWVOb2RlICpj dXIgPSBteUNoaWxkcmVuLmJlZ2luKCk7DQorICAgIHdoaWxlIChjdXIpIHsN CisgICAgICAgIEtDb21wVHJlZU5vZGUgKiBuZXh0ID0gY3VyLT5uZXh0Ow0K KyAgICAgICAgZGVsZXRlIG15Q2hpbGRyZW4ucmVtb3ZlKGN1cik7DQorICAg ICAgICBjdXIgPSBuZXh0Ow0KKyAgICB9DQogfQ0KIA0KIA0KQEAgLTY3Niwx NCArNjc4LDE5IEBAIEtDb21wVHJlZU5vZGUgKiBLQ29tcFRyZWVOb2RlOjpp bnNlcnQoIGMNCiANCiAJLy8gRklYTUUsIGZpcnN0IChzbG93KSBzb3J0ZWQg aW5zZXJ0aW9uIGltcGxlbWVudGF0aW9uDQogCWlmICggc29ydGVkICkgew0K LQkgICAgS0NvbXBUcmVlQ2hpbGRyZW46Okl0ZXJhdG9yIGl0ID0gbXlDaGls ZHJlbi5iZWdpbigpOw0KLQkgICAgd2hpbGUgKCBpdCAhPSBteUNoaWxkcmVu LmVuZCgpICkgew0KLQkgICAgICAgIGlmICggY2ggPiAqKCppdCkgKQ0KLQkJ ICAgICsraXQ7DQotCQllbHNlDQorCSAgICBLQ29tcFRyZWVOb2RlICogcHJl diA9IDA7DQorCSAgICBLQ29tcFRyZWVOb2RlICogY3VyID0gbXlDaGlsZHJl bi5iZWdpbigpOw0KKwkgICAgd2hpbGUgKCBjdXIgKSB7DQorCSAgICAgICAg aWYgKCBjaCA+ICpjdXIgKSB7DQorCQkgICAgcHJldiA9IGN1cjsNCisJCSAg ICBjdXIgPSBjdXItPm5leHQ7DQorCQl9IGVsc2UNCiAJCSAgICBicmVhazsN CiAJICAgIH0NCi0JICAgIG15Q2hpbGRyZW4uaW5zZXJ0KCBpdCwgY2hpbGQg KTsNCisJICAgIGlmIChwcmV2KQ0KKwkgICAgICAgIG15Q2hpbGRyZW4uaW5z ZXJ0KCBwcmV2LCBjaGlsZCApOw0KKwkgICAgZWxzZQ0KKwkgICAgICAgIG15 Q2hpbGRyZW4ucHJlcGVuZChjaGlsZCk7DQogCX0NCiANCiAJZWxzZQ0KQEAg LTcwNSw4ICs3MTIsNyBAQCB2b2lkIEtDb21wVHJlZU5vZGU6OnJlbW92ZSgg Y29uc3QgUVN0cmluDQogDQogICAgIGlmICggc3RyaW5nLmlzRW1wdHkoKSAp IHsNCiAgICAgICAgIGNoaWxkID0gZmluZCggMHgwICk7DQotICAgICAgICBk ZWxldGUgY2hpbGQ7DQotICAgICAgICBteUNoaWxkcmVuLnJlbW92ZSggY2hp bGQgKTsNCisgICAgICAgIGRlbGV0ZSBteUNoaWxkcmVuLnJlbW92ZSggY2hp bGQgKTsNCiAgICAgICAgIHJldHVybjsNCiAgICAgfQ0KIA0KQEAgLTcxNSw4 ICs3MjEsNyBAQCB2b2lkIEtDb21wVHJlZU5vZGU6OnJlbW92ZSggY29uc3Qg UVN0cmluDQogICAgIGlmICggY2hpbGQgKSB7DQogICAgICAgICBjaGlsZC0+ cmVtb3ZlKCBzdHJpbmcucmlnaHQoIHN0cmluZy5sZW5ndGgoKSAtMSApICk7 DQogICAgICAgICBpZiAoIGNoaWxkLT5teUNoaWxkcmVuLmNvdW50KCkgPT0g MCApIHsNCi0gICAgICAgICAgICBkZWxldGUgY2hpbGQ7DQotICAgICAgICAg ICAgbXlDaGlsZHJlbi5yZW1vdmUoIGNoaWxkICk7DQorICAgICAgICAgICAg ZGVsZXRlIG15Q2hpbGRyZW4ucmVtb3ZlKCBjaGlsZCApOw0KICAgICAgICAg fQ0KICAgICB9DQogfQ0KQEAgLTc4Niw2ICs3OTEsNzkgQEAgdm9pZCBLQ29t cGxldGlvbk1hdGNoZXM6OnJlbW92ZUR1cGxpY2F0ZQ0KICAgICAgICAgfQ0K ICAgICB9DQogfQ0KKw0KK3ZvaWQgS0NvbXBUcmVlTm9kZUxpc3Q6OmFwcGVu ZChLQ29tcFRyZWVOb2RlICppdGVtKQ0KK3sNCisgICAgbV9jb3VudCsrOw0K KyAgICBpZiAoIWxhc3QpIHsNCisJbGFzdCA9IGl0ZW07DQorCWxhc3QtPm5l eHQgPSAwOw0KKwlmaXJzdCA9IGl0ZW07DQorCXJldHVybjsNCisgICAgfQ0K KyAgICBsYXN0LT5uZXh0ID0gaXRlbTsNCisgICAgaXRlbS0+bmV4dCA9IDA7 DQorICAgIGxhc3QgPSBpdGVtOw0KK30NCisNCit2b2lkIEtDb21wVHJlZU5v ZGVMaXN0OjpwcmVwZW5kKEtDb21wVHJlZU5vZGUgKml0ZW0pDQorew0KKyAg ICBtX2NvdW50Kys7DQorICAgIGlmICghbGFzdCkgew0KKwlsYXN0ID0gaXRl bTsNCisJbGFzdC0+bmV4dCA9IDA7DQorCWZpcnN0ID0gaXRlbTsNCisJcmV0 dXJuOw0KKyAgICB9DQorICAgIGl0ZW0tPm5leHQgPSBmaXJzdDsNCisgICAg Zmlyc3QgPSBpdGVtOw0KK30NCisNCit2b2lkIEtDb21wVHJlZU5vZGVMaXN0 OjppbnNlcnQoS0NvbXBUcmVlTm9kZSAqYWZ0ZXIsIEtDb21wVHJlZU5vZGUg Kml0ZW0pDQorew0KKyAgICBpZiAoIWFmdGVyKSB7DQorCWFwcGVuZChpdGVt KTsNCisJcmV0dXJuOw0KKyAgICB9DQorDQorICAgIG1fY291bnQrKzsNCisN CisgICAgaXRlbS0+bmV4dCA9IGFmdGVyLT5uZXh0Ow0KKyAgICBhZnRlci0+ bmV4dCA9IGl0ZW07DQorDQorICAgIGlmIChhZnRlciA9PSBsYXN0KQ0KKwls YXN0ID0gaXRlbTsNCit9DQorDQorS0NvbXBUcmVlTm9kZSAqS0NvbXBUcmVl Tm9kZUxpc3Q6OnJlbW92ZShLQ29tcFRyZWVOb2RlICppdGVtKQ0KK3sNCisg ICAgaWYgKCFmaXJzdCB8fCAhaXRlbSkNCisJcmV0dXJuIDA7DQorICAgIEtD b21wVHJlZU5vZGUgKmN1ciA9IDA7DQorDQorICAgIGlmIChpdGVtID09IGZp cnN0KQ0KKwlmaXJzdCA9IGZpcnN0LT5uZXh0Ow0KKyAgICBlbHNlIHsNCisJ Y3VyID0gZmlyc3Q7DQorCXdoaWxlIChjdXIgJiYgY3VyLT5uZXh0ICE9IGl0 ZW0pIGN1ciA9IGN1ci0+bmV4dDsNCisJaWYgKCFjdXIpDQorCSAgICByZXR1 cm4gMDsNCisJY3VyLT5uZXh0ID0gaXRlbS0+bmV4dDsNCisgICAgfQ0KKyAg ICBpZiAoaXRlbSA9PSBsYXN0KQ0KKwlsYXN0ID0gY3VyOw0KKyAgICBtX2Nv dW50LS07DQorICAgIHJldHVybiBpdGVtOw0KK30NCisNCitLQ29tcFRyZWVO b2RlICpLQ29tcFRyZWVOb2RlTGlzdDo6YXQodWludCBpbmRleCkgY29uc3QN Cit7DQorICAgIEtDb21wVHJlZU5vZGUgKmN1ciA9IGZpcnN0Ow0KKyAgICB3 aGlsZSAoaW5kZXgtLSAmJiBjdXIpIGN1ciA9IGN1ci0+bmV4dDsNCisgICAg cmV0dXJuIGN1cjsNCit9DQorDQorS1pvbmVBbGxvY2F0b3IgS0NvbXBUcmVl Tm9kZTo6YWxsb2MoODE5Mik7DQogDQogdm9pZCBLQ29tcGxldGlvbjo6dmly dHVhbF9ob29rKCBpbnQsIHZvaWQqICkNCiB7IC8qQkFTRTo6dmlydHVhbF9o b29rKCBpZCwgZGF0YSApOyovIH0NCkluZGV4OiBrY29tcGxldGlvbl9wcml2 YXRlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvaG9t ZS9rZGUva2RlbGlicy9rZGVjb3JlL2tjb21wbGV0aW9uX3ByaXZhdGUuaCx2 DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTINCmRpZmYgLXUgLXAgLXIxLjEy IGtjb21wbGV0aW9uX3ByaXZhdGUuaA0KLS0tIGtjb21wbGV0aW9uX3ByaXZh dGUuaAkyMDAyLzAxLzExIDE2OjEyOjQyCTEuMTINCisrKyBrY29tcGxldGlv bl9wcml2YXRlLmgJMjAwMi8wMy8wNyAxNjoyNjoyNw0KQEAgLTI1LDggKzI1 LDMwIEBADQogI2luY2x1ZGUgPGtzb3J0YWJsZXZhbHVlbGlzdC5oPg0KIA0K IGNsYXNzIEtDb21wVHJlZU5vZGU7DQotdHlwZWRlZiBRVmFsdWVMaXN0PEtD b21wVHJlZU5vZGUgKj4gS0NvbXBUcmVlQ2hpbGRyZW47DQogDQorI2luY2x1 ZGUgPGthbGxvY2F0b3IuaD4NCisNCitjbGFzcyBLQ29tcFRyZWVOb2RlTGlz dA0KK3sNCitwdWJsaWM6DQorICAgIEtDb21wVHJlZU5vZGVMaXN0KCkgOiBm aXJzdCgwKSwgbGFzdCgwKSwgbV9jb3VudCgwKSB7fQ0KKyAgICBLQ29tcFRy ZWVOb2RlICpiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGZpcnN0OyB9DQorICAg IEtDb21wVHJlZU5vZGUgKmVuZCgpIGNvbnN0IHsgcmV0dXJuIGxhc3Q7IH0N CisNCisgICAgS0NvbXBUcmVlTm9kZSAqYXQodWludCBpbmRleCkgY29uc3Q7 DQorICAgIHZvaWQgYXBwZW5kKEtDb21wVHJlZU5vZGUgKml0ZW0pOyANCisg ICAgdm9pZCBwcmVwZW5kKEtDb21wVHJlZU5vZGUgKml0ZW0pOyANCisgICAg dm9pZCBpbnNlcnQoS0NvbXBUcmVlTm9kZSAqYWZ0ZXIsIEtDb21wVHJlZU5v ZGUgKml0ZW0pOw0KKyAgICBLQ29tcFRyZWVOb2RlICpyZW1vdmUoS0NvbXBU cmVlTm9kZSAqaXRlbSk7DQorICAgIHVpbnQgY291bnQoKSBjb25zdCB7IHJl dHVybiBtX2NvdW50OyB9DQorDQorcHJpdmF0ZToNCisgICAgS0NvbXBUcmVl Tm9kZSAqZmlyc3QsICpsYXN0Ow0KKyAgICB1aW50IG1fY291bnQ7DQorfTsN CisNCit0eXBlZGVmIEtDb21wVHJlZU5vZGVMaXN0IEtDb21wVHJlZUNoaWxk cmVuOw0KKw0KIC8qKg0KICAqIEEgaGVscGVyIGNsYXNzIGZvciBLQ29tcGxl dGlvbi4gSW1wbGVtZW50cyBhIHRyZWUgb2YgUUNoYXIuDQogICoNCkBAIC02 NSwxNSArODcsMTkgQEAgcHVibGljOg0KICAgICAgICAgICBteVdlaWdodCgg d2VpZ2h0ICkge30NCiAgICAgfktDb21wVHJlZU5vZGUoKTsNCiANCisgICAg dm9pZCAqIG9wZXJhdG9yIG5ldyggc2l6ZV90IHMgKSB7DQorICAgICAgcmV0 dXJuIGFsbG9jLmFsbG9jYXRlKCBzICk7DQorICAgIH0NCisgICAgdm9pZCBv cGVyYXRvciBkZWxldGUoIHZvaWQgKiBzICkgew0KKyAgICAgIGFsbG9jLmRl YWxsb2NhdGUoIHMgKTsNCisgICAgfQ0KKw0KICAgICAvLyBSZXR1cm5zIGEg Y2hpbGQgb2YgdGhpcyBub2RlIG1hdGNoaW5nIGNoLCBpZiBhdmFpbGFibGUu DQogICAgIC8vIE90aGVyd2lzZSwgcmV0dXJucyAwTA0KICAgICBpbmxpbmUg S0NvbXBUcmVlTm9kZSAqIGZpbmQoIGNvbnN0IFFDaGFyJiBjaCApIGNvbnN0 IHsNCi0JS0NvbXBUcmVlQ2hpbGRyZW46OkNvbnN0SXRlcmF0b3IgaXQ7DQot CWZvciAoIGl0ID0gbXlDaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBteUNoaWxk cmVuLmVuZCgpOyArK2l0ICkNCi0JICAgIGlmICggKigqaXQpID09IGNoICkN Ci0JCXJldHVybiAqaXQ7DQotDQotCXJldHVybiAwTDsNCisgICAgICBLQ29t cFRyZWVOb2RlICogY3VyID0gbXlDaGlsZHJlbi5iZWdpbigpOw0KKyAgICAg IHdoaWxlIChjdXIgJiYgKCpjdXIgIT0gY2gpKSBjdXIgPSBjdXItPm5leHQ7 DQorICAgICAgcmV0dXJuIGN1cjsNCiAgICAgfQ0KICAgICBLQ29tcFRyZWVO b2RlICoJaW5zZXJ0KCBjb25zdCBRQ2hhciYsIGJvb2wgc29ydGVkICk7DQog ICAgIHZvaWQgCQlyZW1vdmUoIGNvbnN0IFFTdHJpbmcmICk7DQpAQCAtOTAs MjAgKzExNiwyNSBAQCBwdWJsaWM6DQogCXJldHVybiAmbXlDaGlsZHJlbjsN CiAgICAgfQ0KICAgICBpbmxpbmUgY29uc3QgS0NvbXBUcmVlTm9kZSAqIGNo aWxkQXQoaW50IGluZGV4KSBjb25zdCB7DQotCXJldHVybiBteUNoaWxkcmVu W2luZGV4XTsNCisJcmV0dXJuIG15Q2hpbGRyZW4uYXQoaW5kZXgpOw0KICAg ICB9DQogICAgIGlubGluZSBjb25zdCBLQ29tcFRyZWVOb2RlICogZmlyc3RD aGlsZCgpIGNvbnN0IHsNCi0JcmV0dXJuIG15Q2hpbGRyZW4uZmlyc3QoKTsN CisJcmV0dXJuIG15Q2hpbGRyZW4uYmVnaW4oKTsNCiAgICAgfQ0KICAgICBp bmxpbmUgY29uc3QgS0NvbXBUcmVlTm9kZSAqIGxhc3RDaGlsZCgpICBjb25z dCB7DQotCXJldHVybiBteUNoaWxkcmVuLmxhc3QoKTsNCisJcmV0dXJuIG15 Q2hpbGRyZW4uZW5kKCk7DQogICAgIH0NCiANCisgICAgLyogV2Ugd2FudCB0 byBoYW5kbGUgYSBsaXN0IG9mIEtDb21wVHJlZU5vZGVzIG9uIG91ciBvd24s IHRvIG5vdA0KKyAgICAgICBuZWVkIHRvIHVzZSBRVmFsdWVMaXN0PD4uICBB bmQgdG8gbWFrZSBpdCBldmVuIG1vcmUgZmFzdCB3ZSBkb24ndA0KKyAgICAg ICB1c2UgYW4gYWNjZXNzb3IsIGJ1dCBqdXN0IGEgcHVibGljIG1lbWJlci4g ICovDQorICAgIEtDb21wVHJlZU5vZGUgKm5leHQ7DQogcHJpdmF0ZToNCiAg ICAgdWludCBteVdlaWdodDsNCi0gICAgS0NvbXBUcmVlQ2hpbGRyZW4JbXlD aGlsZHJlbjsNCi0NCisgICAgS0NvbXBUcmVlTm9kZUxpc3QJbXlDaGlsZHJl bjsNCisgICAgc3RhdGljIEtab25lQWxsb2NhdG9yIGFsbG9jOw0KIH07DQor DQogDQogDQogLy8gc29tZSBtb3JlIGhlbHBlciBzdHVmZg0K ---559023410-630072926-1015518994=:21480--