From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f747.i.mail.ru (f747.i.mail.ru [128.140.172.167]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 77DFD445320 for ; Fri, 31 Jul 2020 16:13:20 +0300 (MSK) From: =?UTF-8?B?SWx5YSBLb3NhcmV2?= MIME-Version: 1.0 Date: Fri, 31 Jul 2020 16:13:18 +0300 Reply-To: =?UTF-8?B?SWx5YSBLb3NhcmV2?= Message-ID: <1596201198.417099977@f747.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--bE188fCaa2Ffe663cBc157cE216fCd6F1596201198" In-Reply-To: <20200730142620.GA25238@tarantool.org> References: <20200724200633.12122-1-i.kosarev@tarantool.org> <20200730142620.GA25238@tarantool.org> Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH=5D_tuple=3A_drop_extra_res?= =?utf-8?q?trictions_for_multikey_index?= List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?TmlraXRhIFBldHRpaw==?= Cc: tarantool-patches@dev.tarantool.org ----ALT--bE188fCaa2Ffe663cBc157cE216fCd6F1596201198 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpIQrCoApUaGFua3MgZm9yIHlvdXIgcmV2aWV3LgrCoApTZWUgbXkgYW5zd2VycyBiZWxvdy4K wqAKSSB3aWxsIHNlbmQgdjIgb2YgdGhlIHBhdGNoIGJ1dCBpIHRoaW5rIDIgcXVlc3Rpb25zIGFi b3ZlwqBzaG91bGQgYmUgY2xhcmlmaWVkLgrCoCAKPtCn0LXRgtCy0LXRgNCzLCAzMCDQuNGO0LvR jyAyMDIwLCAxNzoyNiArMDM6MDAg0L7RgiBOaWtpdGEgUGV0dGlrIDxrb3JhYmxldkB0YXJhbnRv b2wub3JnPjoKPsKgCj5PbiAyNCBKdWwgMjM6MDYsIElseWEgS29zYXJldiB3cm90ZToKPj4gTXVs dGlrZXkgaW5kZXggZGlkIG5vdCB3b3JrIHByb3Blcmx5IHdpdGggbnVsbGFibGUgcm9vdCBmaWVs ZCBpbgo+PiB0dXBsZV9yYXdfbXVsdGlrZXlfY291bnQoKS4gTm93IGl0IGlzIGZpeGVkIGFuZCBj b3JyZXNwb25kaW5nCj4+IHJlc3RyaWN0aW9ucyBhcmUgZHJvcHBlZC4gVGhpcyBhbHNvIG1lYW5z IHRoYXQgd2UgY2FuIGRyb3AgaW1wbGljaXQKPj4gbnVsbGFiaWxpdHkgdXBkYXRlIGZvciBhcnJh eS9tYXAgZmllbGRzIGFuZCBtYWtlIGFsbCBmaWVsZHMgbnVsbGFibGUKPj4gYnkgZGVmYXVsdCwg YXMgaXQgd2FzIHVudGlsIGUxZDNmZThhYjhlZWQ2NTM5NGFkMTc0MDk0MDFhOTNiNmZjZGM0MzUK Pj4gKHR1cGxlIGZvcm1hdDogZG9uJ3QgYWxsb3cgbnVsbCB3aGVyZSBhcnJheS9tYXAgaXMgZXhw ZWN0ZWQpLCBhcyBmYXIgYXMKPj4gZGVmYXVsdCBub24tbnVsbGFiaWxpdHkgaXRzZWxmIGRvZXNu J3Qgc29sdmUgYW55IHJlYWwgcHJvYmxlbXMgd2hpbGUKPj4gcHJvdmlkaW5nIGNvbmZ1c2luZyBi ZWhhdmlvciAoZ2gtNTAyNykuCj4+Cj4+IEZvbGxvdy11cCAjNTAyNwo+PiBDbG9zZXMgIzUxOTIK Pj4gLS0tCj4+IEJyYW5jaDogIGh0dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29s L3RyZWUvaS5rb3NhcmV2L2doLTUxOTItZml4LW11bHRpa2V5LWluZGV4LXJlc3RyaWN0aW9ucwo+ PiBJc3N1ZTogIGh0dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29sL2lzc3Vlcy81 MTkyCj4+Cj4KPkkgKnN0cm9uZ2x5IGRpc2xpa2UqIHRoYXQgdGhlIHBhdGNoIGlzIGluIGZhY3Qg c2hvdWxkIGJlIDEwIGxpbmVzCj5idXQgaW5zdGVhZCB3ZSBoYXZlIDI1MCBkaWZmIGxpbmVzLiBQ bGVhc2UgZWxhYm9yYXRlIG9uIHRoYXQKPihjb21tZW50cyBhYm92ZSBhcmUgbW9zdGx5IGFib3V0 IHRoYXQpLgpXZWxsLCB0aGlzIHBhdGNoIHJldmVydHMgdGhlIG1ham9yaXR5IG9mIGNoYW5nZXMg ZnJvbQo0Y2Y5NGVmOGNiOTBiODRlYTcxZjMxM2NmZjNlMDE2Zjg1ODk0ZmQ1ICh0dXBsZTogbWFr ZSBmaWVsZHMgbnVsbGFibGUKYnkgZGVmYXVsdCBleGNlcHQgYXJyYXkvbWFwKS4gVGhhdCBpcyB3 aGVyZSB0aGUgc2l6ZSBjb21lcyBmcm9tLgo+Cj4+IGRpZmYgLS1naXQgYS9zcmMvYm94L21lbXR4 X3NwYWNlLmMgYi9zcmMvYm94L21lbXR4X3NwYWNlLmMKPj4gaW5kZXggODQ1MmFiNDMwLi44NzU1 OTIwMjYgMTAwNjQ0Cj4+IC0tLSBhL3NyYy9ib3gvbWVtdHhfc3BhY2UuYwo+PiArKysgYi9zcmMv Ym94L21lbXR4X3NwYWNlLmMKPj4gQEAgLTU4OSw5ICs1ODksNyBAQCBtZW10eF9zcGFjZV9lcGhl bWVyYWxfcm93aWRfbmV4dChzdHJ1Y3Qgc3BhY2UgKnNwYWNlLCB1aW50NjRfdCAqcm93aWQpCj4+ IHN0YXRpYyBpbnQKPj4gbWVtdHhfc3BhY2VfY2hlY2tfaW5kZXhfZGVmKHN0cnVjdCBzcGFjZSAq c3BhY2UsIHN0cnVjdCBpbmRleF9kZWYgKmluZGV4X2RlZikKPj4gewo+PiAtIHN0cnVjdCBrZXlf ZGVmICprZXlfZGVmID0gaW5kZXhfZGVmLT5rZXlfZGVmOwo+PiAtCj4+IC0gaWYgKGtleV9kZWYt PmlzX251bGxhYmxlKSB7Cj4+ICsgaWYgKGluZGV4X2RlZi0+a2V5X2RlZi0+aXNfbnVsbGFibGUp IHsKPgo+QWdhaW4gSSBzZWUgdGhpcyByZWR1bmRhbnQgZGlmZi4gUGxlYXNlIGRyb3AgaXQsIGl0 IGRvZXNuJ3QgZml4Cj5yZWZhY3Rvci9maXggYW55dGhpbmcgYnV0IG1ha2VzIGRpZmYgYmlnZ2Vy IGFuZCBjb21wbGljYXRlcyBnaXQKPmhpc3RvcnkuClRoZSBwcm9ibGVtIGlzIHRoYXQgdGhpcyBp cyB0aGUgcmV2ZXJzaW9uIG9mIHRoYXQgZGlmZi4gV2VsbCwgSSBndWVzcwphcyBmYXIgYXMgdGhh dCBwYXRjaCB3YXMgcHVzaGVkIHRvIG1hc3RlciB3ZSBjYW4gbGVhdmUgdGhhdCBjaGFuZ2UKdGhl cmUgYW5kIHJldmVydCBvbmx5IHRoZSBtZWFuaW5nZnVsIHBhcnQ/Cj4KPj4gaWYgKGluZGV4X2Rl Zi0+aWlkID09IDApIHsKPj4gZGlhZ19zZXQoQ2xpZW50RXJyb3IsIEVSX05VTExBQkxFX1BSSU1B UlksCj4+IHNwYWNlX25hbWUoc3BhY2UpKTsKPj4gZGlmZiAtLWdpdCBhL3NyYy9ib3gvdHVwbGUu YyBiL3NyYy9ib3gvdHVwbGUuYwo+PiBpbmRleCA5ZjBmMjRjNjQuLjk0YTNhOTZiYSAxMDA2NDQK Pj4gLS0tIGEvc3JjL2JveC90dXBsZS5jCj4+ICsrKyBiL3NyYy9ib3gvdHVwbGUuYwo+PiBAQCAt NTU0LDcgKzU1NCwxMCBAQCB0dXBsZV9yYXdfbXVsdGlrZXlfY291bnQoc3RydWN0IHR1cGxlX2Zv cm1hdCAqZm9ybWF0LCBjb25zdCBjaGFyICpkYXRhLAo+PiBOVUxMLCBNVUxUSUtFWV9OT05FKTsK Pj4gaWYgKGFycmF5X3JhdyA9PSBOVUxMKQo+PiByZXR1cm4gMDsKPj4gLSBhc3NlcnQobXBfdHlw ZW9mKCphcnJheV9yYXcpID09IE1QX0FSUkFZKTsKPj4gKyBlbnVtIG1wX3R5cGUgdHlwZSA9IG1w X3R5cGVvZigqYXJyYXlfcmF3KTsKPj4gKyBpZiAodHlwZSA9PSBNUF9OSUwpCj4+ICsgcmV0dXJu IDA7Cj4+ICsgYXNzZXJ0KHR5cGUgPT0gTVBfQVJSQVkpOwo+PiByZXR1cm4gbXBfZGVjb2RlX2Fy cmF5KCZhcnJheV9yYXcpOwo+PiB9Cj4+Cj4+IEBAIC0zMzUsMTMgKzMxNywxMSBAQCB0dXBsZV9m b3JtYXRfYWRkX2ZpZWxkKHN0cnVjdCB0dXBsZV9mb3JtYXQgKmZvcm1hdCwgdWludDMyX3QgZmll bGRubywKPj4gcGFyZW50LT5vZmZzZXRfc2xvdCA9ICpjdXJyZW50X3Nsb3Q7Cj4+IH0KPj4gfQo+ PiAtIHR1cGxlX2ZpZWxkX3VwZGF0ZV9udWxsYWJpbGl0eShwYXJlbnQpOwo+PiBwYXJlbnQtPmlz X2tleV9wYXJ0ID0gdHJ1ZTsKPj4gbmV4dC0+aXNfbXVsdGlrZXlfcGFydCA9IGlzX211bHRpa2V5 Owo+PiBwYXJlbnQgPSBuZXh0Owo+PiB0b2tlbl9jb3VudCsrOwo+PiB9Cj4+IC0gdHVwbGVfZmll bGRfdXBkYXRlX251bGxhYmlsaXR5KHBhcmVudCk7Cj4+IC8qCj4+ICogVGhlIHBhdGggaGFzIGFs cmVhZHkgYmVlbiB2ZXJpZmllZCBieSB0aGUKPj4gKiBrZXlfZGVmX2RlY29kZV9wYXJ0cyBmdW5j dGlvbi4KPj4gZGlmZiAtLWdpdCBhL3NyYy9ib3gvdmlueWwuYyBiL3NyYy9ib3gvdmlueWwuYwo+ PiBpbmRleCAzMjMwMWQ3YmEuLmZkOWI3ZTZjMCAxMDA2NDQKPj4gLS0tIGEvc3JjL2JveC92aW55 bC5jCj4+ICsrKyBiL3NyYy9ib3gvdmlueWwuYwo+PiBAQCAtNjUxLDI0ICs2NTEsMTMgQEAgdmlu eWxfc3BhY2VfY2hlY2tfaW5kZXhfZGVmKHN0cnVjdCBzcGFjZSAqc3BhY2UsIHN0cnVjdCBpbmRl eF9kZWYgKmluZGV4X2RlZikKPj4gaW5kZXhfZGVmLT5uYW1lLCBzcGFjZV9uYW1lKHNwYWNlKSk7 Cj4+IHJldHVybiAtMTsKPj4gfQo+PiAtCj4+IC0gc3RydWN0IGtleV9kZWYgKmtleV9kZWYgPSBp bmRleF9kZWYtPmtleV9kZWY7Cj4+IC0KPj4gLSBpZiAoa2V5X2RlZi0+aXNfbnVsbGFibGUgJiYg aW5kZXhfZGVmLT5paWQgPT0gMCkgewo+PiArIGlmIChpbmRleF9kZWYtPmtleV9kZWYtPmlzX251 bGxhYmxlICYmIGluZGV4X2RlZi0+aWlkID09IDApIHsKPj4gZGlhZ19zZXQoQ2xpZW50RXJyb3Is IEVSX05VTExBQkxFX1BSSU1BUlksIHNwYWNlX25hbWUoc3BhY2UpKTsKPj4gcmV0dXJuIC0xOwo+ PiB9Cj4+IC0gaWYgKGtleV9kZWYtPmlzX211bHRpa2V5ICYmCj4+IC0ga2V5X2RlZi0+bXVsdGlr ZXlfZmllbGRubyA8IHNwYWNlLT5kZWYtPmZpZWxkX2NvdW50ICYmCj4+IC0gc3BhY2UtPmRlZi0+ ZmllbGRzW2tleV9kZWYtPm11bHRpa2V5X2ZpZWxkbm9dLmlzX251bGxhYmxlKSB7Cj4+IC0gZGlh Z19zZXQoQ2xpZW50RXJyb3IsIEVSX1VOU1VQUE9SVEVELAo+PiAtICJtdWx0aWtleSBpbmRleCIs Cj4+IC0gIm51bGxhYmxlIHJvb3QgZmllbGQiKTsKPj4gLSByZXR1cm4gLTE7Cj4+IC0gfQo+PiAv KiBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBBTlksIEFSUkFZLCBNQVAgcGFydHMgKi8KPj4gLSBm b3IgKHVpbnQzMl90IGkgPSAwOyBpIDwga2V5X2RlZi0+cGFydF9jb3VudDsgaSsrKSB7Cj4+IC0g c3RydWN0IGtleV9wYXJ0ICpwYXJ0ID0gJmtleV9kZWYtPnBhcnRzW2ldOwo+PiArIGZvciAodWlu dDMyX3QgaSA9IDA7IGkgPCBpbmRleF9kZWYtPmtleV9kZWYtPnBhcnRfY291bnQ7IGkrKykgewo+ PiArIHN0cnVjdCBrZXlfcGFydCAqcGFydCA9ICZpbmRleF9kZWYtPmtleV9kZWYtPnBhcnRzW2ld Owo+PiBpZiAocGFydC0+dHlwZSA8PSBGSUVMRF9UWVBFX0FOWSB8fAo+PiBwYXJ0LT50eXBlID49 IEZJRUxEX1RZUEVfQVJSQVkpIHsKPj4gZGlhZ19zZXQoQ2xpZW50RXJyb3IsIEVSX01PRElGWV9J TkRFWCwKPj4gQEAgLTY3OCw3ICs2NjcsNyBAQCB2aW55bF9zcGFjZV9jaGVja19pbmRleF9kZWYo c3RydWN0IHNwYWNlICpzcGFjZSwgc3RydWN0IGluZGV4X2RlZiAqaW5kZXhfZGVmKQo+PiByZXR1 cm4gLTE7Cj4+IH0KPj4gfQo+PiAtIGlmIChrZXlfZGVmLT5mb3JfZnVuY19pbmRleCkgewo+PiAr IGlmIChpbmRleF9kZWYtPmtleV9kZWYtPmZvcl9mdW5jX2luZGV4KSB7Cj4+IGRpYWdfc2V0KENs aWVudEVycm9yLCBFUl9VTlNVUFBPUlRFRCwgIlZpbnlsIiwKPj4gImZ1bmN0aW9uYWwgaW5kZXgi KTsKPj4gcmV0dXJuIC0xOwo+PiBkaWZmIC0tZ2l0IGEvdGVzdC9lbmdpbmUvZ2gtNTAyNy1maWVs ZHMtbnVsbGFiaWxpdHkucmVzdWx0IGIvdGVzdC9lbmdpbmUvZ2gtNTAyNy1leHRyYS1maWVsZHMt bnVsbGFiaWxpdHkucmVzdWx0Cj4+IHNpbWlsYXJpdHkgaW5kZXggNTMlCj4+IHJlbmFtZSBmcm9t IHRlc3QvZW5naW5lL2doLTUwMjctZmllbGRzLW51bGxhYmlsaXR5LnJlc3VsdAo+PiByZW5hbWUg dG8gdGVzdC9lbmdpbmUvZ2gtNTAyNy1leHRyYS1maWVsZHMtbnVsbGFiaWxpdHkucmVzdWx0Cj4K PlBsZWFzZSwgYXZvaWQgcmVuYW1pbmcgdGVzdC4uCkkgZ3Vlc3Mgd2XCoGNhbiBkcm9wIHRoaXMg Y2hhbmdlLCBob3dldmVyIGkgdGhvdWdodCBpdCBpcyBhIGdvb2QgaWRlYQp0byBtYWtlIHRlc3Qg bmFtZSBtb3JlIGNsZWFyLCBhcyB5b3UgcHJvcG9zZWQ6Cj4+Tml0OiBtYiBnaC01MDI3LWV4dHJh LWZpZWxkcy1udWxsYWJpbGl0eSBvciBnaC01MDI3LWNvbXBvdW5kLWZpZWxkLXR5cGUtbnVsbGFi aWxpdHk/Cj4+VGhlbiBvdGhlcnMgd291bGQgdW5kZXJzdGFuZCB3aGF0IHRoaXMgdGVzdCBpcyBh Ym91dCB3aXRoIGVhc2UuCklzIGl0IHJlYWxseSB0aGF0IGJhZCB0byByZW5hbWU/Cj4KPj4gaW5k ZXggMTEyMTcyN2Y2Li4zNzJmZTE1YjggMTAwNjQ0Cj4+IGRpZmYgLS1naXQgYS90ZXN0L2VuZ2lu ZS9tdWx0aWtleS5yZXN1bHQgYi90ZXN0L2VuZ2luZS9tdWx0aWtleS5yZXN1bHQKPj4gaW5kZXgg OTY4YmU0Y2MzLi5lOTAwNTc0M2UgMTAwNjQ0Cj4+IC0tLSBhL3Rlc3QvZW5naW5lL211bHRpa2V5 LnJlc3VsdAo+PiArKysgYi90ZXN0L2VuZ2luZS9tdWx0aWtleS5yZXN1bHQKPj4gQEAgLTc5Niw3 ICs3OTYsNyBAQCBfID0gczpjcmVhdGVfaW5kZXgoJ3NrJywge3BhcnRzID0ge3snWzJdWypdJywg J3Vuc2lnbmVkJ319fSkKPj4gLi4uCj4+IHM6aW5zZXJ0ezEsIGJveC5OVUxMfSAtLSBlcnJvcgo+ Cj5JIGd1ZXNzIHlvdSBmb3Jnb3QgdG8gZml4IHRoaXMgY29tbWVudCAoYW5kIHRoZSByZXN0IGlu IHRoaXMgdGVzdCnigKYKUmlnaHQsIHRoaXMgY29tbWVudHMgaGF2ZSB0byBiZSBmaXhlZC4KwqAK LS0KSWx5YSBLb3NhcmV2CsKg ----ALT--bE188fCaa2Ffe663cBc157cE216fCd6F1596201198 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+PGRpdj5IaSE8L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+VGhh bmtzIGZvciB5b3VyIHJldmlldy48L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+U2VlIG15IGFu c3dlcnMgYmVsb3cuPC9kaXY+PGRpdj4mbmJzcDs8L2Rpdj48ZGl2Pkkgd2lsbCBzZW5kIHYyIG9m IHRoZSBwYXRjaCBidXQgaSB0aGluayAyIHF1ZXN0aW9ucyBhYm92ZSZuYnNwO3Nob3VsZCBiZSBj bGFyaWZpZWQuPGJyPiZuYnNwOzwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDox cHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPtCn0LXR gtCy0LXRgNCzLCAzMCDQuNGO0LvRjyAyMDIwLCAxNzoyNiArMDM6MDAg0L7RgiBOaWtpdGEgUGV0 dGlrICZsdDtrb3JhYmxldkB0YXJhbnRvb2wub3JnJmd0Ozo8YnI+Jm5ic3A7PGRpdiBpZD0iIj48 ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxzdHlsZSB0eXBlPSJ0ZXh0L2Nz cyI+PC9zdHlsZT48ZGl2PjxkaXYgaWQ9InN0eWxlXzE1OTYxMTkxODExMDI0NzY4MjYyX0JPRFki Pk9uIDI0IEp1bCAyMzowNiwgSWx5YSBLb3NhcmV2IHdyb3RlOjxicj4mZ3Q7IE11bHRpa2V5IGlu ZGV4IGRpZCBub3Qgd29yayBwcm9wZXJseSB3aXRoIG51bGxhYmxlIHJvb3QgZmllbGQgaW48YnI+ Jmd0OyB0dXBsZV9yYXdfbXVsdGlrZXlfY291bnQoKS4gTm93IGl0IGlzIGZpeGVkIGFuZCBjb3Jy ZXNwb25kaW5nPGJyPiZndDsgcmVzdHJpY3Rpb25zIGFyZSBkcm9wcGVkLiBUaGlzIGFsc28gbWVh bnMgdGhhdCB3ZSBjYW4gZHJvcCBpbXBsaWNpdDxicj4mZ3Q7IG51bGxhYmlsaXR5IHVwZGF0ZSBm b3IgYXJyYXkvbWFwIGZpZWxkcyBhbmQgbWFrZSBhbGwgZmllbGRzIG51bGxhYmxlPGJyPiZndDsg YnkgZGVmYXVsdCwgYXMgaXQgd2FzIHVudGlsIGUxZDNmZThhYjhlZWQ2NTM5NGFkMTc0MDk0MDFh OTNiNmZjZGM0MzU8YnI+Jmd0OyAodHVwbGUgZm9ybWF0OiBkb24ndCBhbGxvdyBudWxsIHdoZXJl IGFycmF5L21hcCBpcyBleHBlY3RlZCksIGFzIGZhciBhczxicj4mZ3Q7IGRlZmF1bHQgbm9uLW51 bGxhYmlsaXR5IGl0c2VsZiBkb2Vzbid0IHNvbHZlIGFueSByZWFsIHByb2JsZW1zIHdoaWxlPGJy PiZndDsgcHJvdmlkaW5nIGNvbmZ1c2luZyBiZWhhdmlvciAoZ2gtNTAyNykuPGJyPiZndDs8YnI+ Jmd0OyBGb2xsb3ctdXAgIzUwMjc8YnI+Jmd0OyBDbG9zZXMgIzUxOTI8YnI+Jmd0OyAtLS08YnI+ Jmd0OyBCcmFuY2g6IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvdGFyYW50 b29sL3RyZWUvaS5rb3NhcmV2L2doLTUxOTItZml4LW11bHRpa2V5LWluZGV4LXJlc3RyaWN0aW9u cyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29s L3RyZWUvaS5rb3NhcmV2L2doLTUxOTItZml4LW11bHRpa2V5LWluZGV4LXJlc3RyaWN0aW9uczwv YT48YnI+Jmd0OyBJc3N1ZTogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC90 YXJhbnRvb2wvaXNzdWVzLzUxOTIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2dpdGh1Yi5jb20v dGFyYW50b29sL3RhcmFudG9vbC9pc3N1ZXMvNTE5MjwvYT48YnI+Jmd0Ozxicj48YnI+SSAqc3Ry b25nbHkgZGlzbGlrZSogdGhhdCB0aGUgcGF0Y2ggaXMgaW4gZmFjdCBzaG91bGQgYmUgMTAgbGlu ZXM8YnI+YnV0IGluc3RlYWQgd2UgaGF2ZSAyNTAgZGlmZiBsaW5lcy4gUGxlYXNlIGVsYWJvcmF0 ZSBvbiB0aGF0PGJyPihjb21tZW50cyBhYm92ZSBhcmUgbW9zdGx5IGFib3V0IHRoYXQpLjwvZGl2 PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2PldlbGwsIHRoaXMgcGF0 Y2ggcmV2ZXJ0cyB0aGUgbWFqb3JpdHkgb2YgY2hhbmdlcyBmcm9tPGJyPjRjZjk0ZWY4Y2I5MGI4 NGVhNzFmMzEzY2ZmM2UwMTZmODU4OTRmZDUgKHR1cGxlOiBtYWtlIGZpZWxkcyBudWxsYWJsZTxi cj5ieSBkZWZhdWx0IGV4Y2VwdCBhcnJheS9tYXApLiBUaGF0IGlzIHdoZXJlIHRoZSBzaXplIGNv bWVzIGZyb20uPC9kaXY+PGRpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNv bGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYg Y2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pjxicj4mZ3Q7IGRpZmYg LS1naXQgYS9zcmMvYm94L21lbXR4X3NwYWNlLmMgYi9zcmMvYm94L21lbXR4X3NwYWNlLmM8YnI+ Jmd0OyBpbmRleCA4NDUyYWI0MzAuLjg3NTU5MjAyNiAxMDA2NDQ8YnI+Jmd0OyAtLS0gYS9zcmMv Ym94L21lbXR4X3NwYWNlLmM8YnI+Jmd0OyArKysgYi9zcmMvYm94L21lbXR4X3NwYWNlLmM8YnI+ Jmd0OyBAQCAtNTg5LDkgKzU4OSw3IEBAIG1lbXR4X3NwYWNlX2VwaGVtZXJhbF9yb3dpZF9uZXh0 KHN0cnVjdCBzcGFjZSAqc3BhY2UsIHVpbnQ2NF90ICpyb3dpZCk8YnI+Jmd0OyBzdGF0aWMgaW50 PGJyPiZndDsgbWVtdHhfc3BhY2VfY2hlY2tfaW5kZXhfZGVmKHN0cnVjdCBzcGFjZSAqc3BhY2Us IHN0cnVjdCBpbmRleF9kZWYgKmluZGV4X2RlZik8YnI+Jmd0OyB7PGJyPiZndDsgLSBzdHJ1Y3Qg a2V5X2RlZiAqa2V5X2RlZiA9IGluZGV4X2RlZi0mZ3Q7a2V5X2RlZjs8YnI+Jmd0OyAtPGJyPiZn dDsgLSBpZiAoa2V5X2RlZi0mZ3Q7aXNfbnVsbGFibGUpIHs8YnI+Jmd0OyArIGlmIChpbmRleF9k ZWYtJmd0O2tleV9kZWYtJmd0O2lzX251bGxhYmxlKSB7PGJyPjxicj5BZ2FpbiBJIHNlZSB0aGlz IHJlZHVuZGFudCBkaWZmLiBQbGVhc2UgZHJvcCBpdCwgaXQgZG9lc24ndCBmaXg8YnI+cmVmYWN0 b3IvZml4IGFueXRoaW5nIGJ1dCBtYWtlcyBkaWZmIGJpZ2dlciBhbmQgY29tcGxpY2F0ZXMgZ2l0 PGJyPmhpc3RvcnkuPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2Pjxk aXY+VGhlIHByb2JsZW0gaXMgdGhhdCB0aGlzIGlzIHRoZSByZXZlcnNpb24gb2YgdGhhdCBkaWZm LiBXZWxsLCBJIGd1ZXNzPGJyPmFzIGZhciBhcyB0aGF0IHBhdGNoIHdhcyBwdXNoZWQgdG8gbWFz dGVyIHdlIGNhbiBsZWF2ZSB0aGF0IGNoYW5nZTxicj50aGVyZSBhbmQgcmV2ZXJ0IG9ubHkgdGhl IG1lYW5pbmdmdWwgcGFydD88L2Rpdj48ZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVm dDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxk aXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+PGJyPiZn dDsgaWYgKGluZGV4X2RlZi0mZ3Q7aWlkID09IDApIHs8YnI+Jmd0OyBkaWFnX3NldChDbGllbnRF cnJvciwgRVJfTlVMTEFCTEVfUFJJTUFSWSw8YnI+Jmd0OyBzcGFjZV9uYW1lKHNwYWNlKSk7PGJy PiZndDsgZGlmZiAtLWdpdCBhL3NyYy9ib3gvdHVwbGUuYyBiL3NyYy9ib3gvdHVwbGUuYzxicj4m Z3Q7IGluZGV4IDlmMGYyNGM2NC4uOTRhM2E5NmJhIDEwMDY0NDxicj4mZ3Q7IC0tLSBhL3NyYy9i b3gvdHVwbGUuYzxicj4mZ3Q7ICsrKyBiL3NyYy9ib3gvdHVwbGUuYzxicj4mZ3Q7IEBAIC01NTQs NyArNTU0LDEwIEBAIHR1cGxlX3Jhd19tdWx0aWtleV9jb3VudChzdHJ1Y3QgdHVwbGVfZm9ybWF0 ICpmb3JtYXQsIGNvbnN0IGNoYXIgKmRhdGEsPGJyPiZndDsgTlVMTCwgTVVMVElLRVlfTk9ORSk7 PGJyPiZndDsgaWYgKGFycmF5X3JhdyA9PSBOVUxMKTxicj4mZ3Q7IHJldHVybiAwOzxicj4mZ3Q7 IC0gYXNzZXJ0KG1wX3R5cGVvZigqYXJyYXlfcmF3KSA9PSBNUF9BUlJBWSk7PGJyPiZndDsgKyBl bnVtIG1wX3R5cGUgdHlwZSA9IG1wX3R5cGVvZigqYXJyYXlfcmF3KTs8YnI+Jmd0OyArIGlmICh0 eXBlID09IE1QX05JTCk8YnI+Jmd0OyArIHJldHVybiAwOzxicj4mZ3Q7ICsgYXNzZXJ0KHR5cGUg PT0gTVBfQVJSQVkpOzxicj4mZ3Q7IHJldHVybiBtcF9kZWNvZGVfYXJyYXkoJmFtcDthcnJheV9y YXcpOzxicj4mZ3Q7IH08YnI+Jmd0Ozxicj4mZ3Q7IEBAIC0zMzUsMTMgKzMxNywxMSBAQCB0dXBs ZV9mb3JtYXRfYWRkX2ZpZWxkKHN0cnVjdCB0dXBsZV9mb3JtYXQgKmZvcm1hdCwgdWludDMyX3Qg ZmllbGRubyw8YnI+Jmd0OyBwYXJlbnQtJmd0O29mZnNldF9zbG90ID0gKmN1cnJlbnRfc2xvdDs8 YnI+Jmd0OyB9PGJyPiZndDsgfTxicj4mZ3Q7IC0gdHVwbGVfZmllbGRfdXBkYXRlX251bGxhYmls aXR5KHBhcmVudCk7PGJyPiZndDsgcGFyZW50LSZndDtpc19rZXlfcGFydCA9IHRydWU7PGJyPiZn dDsgbmV4dC0mZ3Q7aXNfbXVsdGlrZXlfcGFydCA9IGlzX211bHRpa2V5Ozxicj4mZ3Q7IHBhcmVu dCA9IG5leHQ7PGJyPiZndDsgdG9rZW5fY291bnQrKzs8YnI+Jmd0OyB9PGJyPiZndDsgLSB0dXBs ZV9maWVsZF91cGRhdGVfbnVsbGFiaWxpdHkocGFyZW50KTs8YnI+Jmd0OyAvKjxicj4mZ3Q7ICog VGhlIHBhdGggaGFzIGFscmVhZHkgYmVlbiB2ZXJpZmllZCBieSB0aGU8YnI+Jmd0OyAqIGtleV9k ZWZfZGVjb2RlX3BhcnRzIGZ1bmN0aW9uLjxicj4mZ3Q7IGRpZmYgLS1naXQgYS9zcmMvYm94L3Zp bnlsLmMgYi9zcmMvYm94L3ZpbnlsLmM8YnI+Jmd0OyBpbmRleCAzMjMwMWQ3YmEuLmZkOWI3ZTZj MCAxMDA2NDQ8YnI+Jmd0OyAtLS0gYS9zcmMvYm94L3ZpbnlsLmM8YnI+Jmd0OyArKysgYi9zcmMv Ym94L3ZpbnlsLmM8YnI+Jmd0OyBAQCAtNjUxLDI0ICs2NTEsMTMgQEAgdmlueWxfc3BhY2VfY2hl Y2tfaW5kZXhfZGVmKHN0cnVjdCBzcGFjZSAqc3BhY2UsIHN0cnVjdCBpbmRleF9kZWYgKmluZGV4 X2RlZik8YnI+Jmd0OyBpbmRleF9kZWYtJmd0O25hbWUsIHNwYWNlX25hbWUoc3BhY2UpKTs8YnI+ Jmd0OyByZXR1cm4gLTE7PGJyPiZndDsgfTxicj4mZ3Q7IC08YnI+Jmd0OyAtIHN0cnVjdCBrZXlf ZGVmICprZXlfZGVmID0gaW5kZXhfZGVmLSZndDtrZXlfZGVmOzxicj4mZ3Q7IC08YnI+Jmd0OyAt IGlmIChrZXlfZGVmLSZndDtpc19udWxsYWJsZSAmYW1wOyZhbXA7IGluZGV4X2RlZi0mZ3Q7aWlk ID09IDApIHs8YnI+Jmd0OyArIGlmIChpbmRleF9kZWYtJmd0O2tleV9kZWYtJmd0O2lzX251bGxh YmxlICZhbXA7JmFtcDsgaW5kZXhfZGVmLSZndDtpaWQgPT0gMCkgezxicj4mZ3Q7IGRpYWdfc2V0 KENsaWVudEVycm9yLCBFUl9OVUxMQUJMRV9QUklNQVJZLCBzcGFjZV9uYW1lKHNwYWNlKSk7PGJy PiZndDsgcmV0dXJuIC0xOzxicj4mZ3Q7IH08YnI+Jmd0OyAtIGlmIChrZXlfZGVmLSZndDtpc19t dWx0aWtleSAmYW1wOyZhbXA7PGJyPiZndDsgLSBrZXlfZGVmLSZndDttdWx0aWtleV9maWVsZG5v ICZsdDsgc3BhY2UtJmd0O2RlZi0mZ3Q7ZmllbGRfY291bnQgJmFtcDsmYW1wOzxicj4mZ3Q7IC0g c3BhY2UtJmd0O2RlZi0mZ3Q7ZmllbGRzW2tleV9kZWYtJmd0O211bHRpa2V5X2ZpZWxkbm9dLmlz X251bGxhYmxlKSB7PGJyPiZndDsgLSBkaWFnX3NldChDbGllbnRFcnJvciwgRVJfVU5TVVBQT1JU RUQsPGJyPiZndDsgLSAibXVsdGlrZXkgaW5kZXgiLDxicj4mZ3Q7IC0gIm51bGxhYmxlIHJvb3Qg ZmllbGQiKTs8YnI+Jmd0OyAtIHJldHVybiAtMTs8YnI+Jmd0OyAtIH08YnI+Jmd0OyAvKiBDaGVj ayB0aGF0IHRoZXJlIGFyZSBubyBBTlksIEFSUkFZLCBNQVAgcGFydHMgKi88YnI+Jmd0OyAtIGZv ciAodWludDMyX3QgaSA9IDA7IGkgJmx0OyBrZXlfZGVmLSZndDtwYXJ0X2NvdW50OyBpKyspIHs8 YnI+Jmd0OyAtIHN0cnVjdCBrZXlfcGFydCAqcGFydCA9ICZhbXA7a2V5X2RlZi0mZ3Q7cGFydHNb aV07PGJyPiZndDsgKyBmb3IgKHVpbnQzMl90IGkgPSAwOyBpICZsdDsgaW5kZXhfZGVmLSZndDtr ZXlfZGVmLSZndDtwYXJ0X2NvdW50OyBpKyspIHs8YnI+Jmd0OyArIHN0cnVjdCBrZXlfcGFydCAq cGFydCA9ICZhbXA7aW5kZXhfZGVmLSZndDtrZXlfZGVmLSZndDtwYXJ0c1tpXTs8YnI+Jmd0OyBp ZiAocGFydC0mZ3Q7dHlwZSAmbHQ7PSBGSUVMRF9UWVBFX0FOWSB8fDxicj4mZ3Q7IHBhcnQtJmd0 O3R5cGUgJmd0Oz0gRklFTERfVFlQRV9BUlJBWSkgezxicj4mZ3Q7IGRpYWdfc2V0KENsaWVudEVy cm9yLCBFUl9NT0RJRllfSU5ERVgsPGJyPiZndDsgQEAgLTY3OCw3ICs2NjcsNyBAQCB2aW55bF9z cGFjZV9jaGVja19pbmRleF9kZWYoc3RydWN0IHNwYWNlICpzcGFjZSwgc3RydWN0IGluZGV4X2Rl ZiAqaW5kZXhfZGVmKTxicj4mZ3Q7IHJldHVybiAtMTs8YnI+Jmd0OyB9PGJyPiZndDsgfTxicj4m Z3Q7IC0gaWYgKGtleV9kZWYtJmd0O2Zvcl9mdW5jX2luZGV4KSB7PGJyPiZndDsgKyBpZiAoaW5k ZXhfZGVmLSZndDtrZXlfZGVmLSZndDtmb3JfZnVuY19pbmRleCkgezxicj4mZ3Q7IGRpYWdfc2V0 KENsaWVudEVycm9yLCBFUl9VTlNVUFBPUlRFRCwgIlZpbnlsIiw8YnI+Jmd0OyAiZnVuY3Rpb25h bCBpbmRleCIpOzxicj4mZ3Q7IHJldHVybiAtMTs8YnI+Jmd0OyBkaWZmIC0tZ2l0IGEvdGVzdC9l bmdpbmUvZ2gtNTAyNy1maWVsZHMtbnVsbGFiaWxpdHkucmVzdWx0IGIvdGVzdC9lbmdpbmUvZ2gt NTAyNy1leHRyYS1maWVsZHMtbnVsbGFiaWxpdHkucmVzdWx0PGJyPiZndDsgc2ltaWxhcml0eSBp bmRleCA1MyU8YnI+Jmd0OyByZW5hbWUgZnJvbSB0ZXN0L2VuZ2luZS9naC01MDI3LWZpZWxkcy1u dWxsYWJpbGl0eS5yZXN1bHQ8YnI+Jmd0OyByZW5hbWUgdG8gdGVzdC9lbmdpbmUvZ2gtNTAyNy1l eHRyYS1maWVsZHMtbnVsbGFiaWxpdHkucmVzdWx0PGJyPjxicj5QbGVhc2UsIGF2b2lkIHJlbmFt aW5nIHRlc3QuLjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2 PkkgZ3Vlc3Mgd2UmbmJzcDtjYW4gZHJvcCB0aGlzIGNoYW5nZSwgaG93ZXZlciBpIHRob3VnaHQg aXQgaXMgYSBnb29kIGlkZWE8L2Rpdj48ZGl2PnRvIG1ha2UgdGVzdCBuYW1lIG1vcmUgY2xlYXIs IGFzIHlvdSBwcm9wb3NlZDo8L2Rpdj48ZGl2PjxwcmU+Jmd0OyZndDtOaXQ6IG1iIGdoLTUwMjct ZXh0cmEtZmllbGRzLW51bGxhYmlsaXR5IG9yIGdoLTUwMjctY29tcG91bmQtZmllbGQtdHlwZS1u dWxsYWJpbGl0eT8KJmd0OyZndDtUaGVuIG90aGVycyB3b3VsZCB1bmRlcnN0YW5kIHdoYXQgdGhp cyB0ZXN0IGlzIGFib3V0IHdpdGggZWFzZS48L3ByZT48ZGl2PklzIGl0IHJlYWxseSB0aGF0IGJh ZCB0byByZW5hbWU/PC9kaXY+PC9kaXY+PGRpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxl ZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48 ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxicj4mZ3Q7IGluZGV4IDExMjE3 MjdmNi4uMzcyZmUxNWI4IDEwMDY0NDxicj4mZ3Q7IGRpZmYgLS1naXQgYS90ZXN0L2VuZ2luZS9t dWx0aWtleS5yZXN1bHQgYi90ZXN0L2VuZ2luZS9tdWx0aWtleS5yZXN1bHQ8YnI+Jmd0OyBpbmRl eCA5NjhiZTRjYzMuLmU5MDA1NzQzZSAxMDA2NDQ8YnI+Jmd0OyAtLS0gYS90ZXN0L2VuZ2luZS9t dWx0aWtleS5yZXN1bHQ8YnI+Jmd0OyArKysgYi90ZXN0L2VuZ2luZS9tdWx0aWtleS5yZXN1bHQ8 YnI+Jmd0OyBAQCAtNzk2LDcgKzc5Niw3IEBAIF8gPSBzOmNyZWF0ZV9pbmRleCgnc2snLCB7cGFy dHMgPSB7eydbMl1bKl0nLCAndW5zaWduZWQnfX19KTxicj4mZ3Q7IC4uLjxicj4mZ3Q7IHM6aW5z ZXJ0ezEsIGJveC5OVUxMfSAtLSBlcnJvcjxicj48YnI+SSBndWVzcyB5b3UgZm9yZ290IHRvIGZp eCB0aGlzIGNvbW1lbnQgKGFuZCB0aGUgcmVzdCBpbiB0aGlzIHRlc3Qp4oCmPC9kaXY+PC9ibG9j a3F1b3RlPjwvZGl2PjxkaXY+UmlnaHQsIHRoaXMgY29tbWVudHMgaGF2ZSB0byBiZSBmaXhlZC48 L2Rpdj48ZGl2PjxkaXY+Jm5ic3A7PC9kaXY+PGRpdiBkYXRhLXNpZ25hdHVyZS13aWRnZXQ9ImNv bnRhaW5lciI+PGRpdiBkYXRhLXNpZ25hdHVyZS13aWRnZXQ9ImNvbnRlbnQiPjxkaXY+LS08YnI+ SWx5YSBLb3NhcmV2PC9kaXY+PC9kaXY+PC9kaXY+PGRpdj4mbmJzcDs8L2Rpdj48L2Rpdj48L0JP RFk+PC9IVE1MPgo= ----ALT--bE188fCaa2Ffe663cBc157cE216fCd6F1596201198--