From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f196.i.mail.ru (f196.i.mail.ru [128.140.171.215]) (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 5A3A744643A for ; Sat, 24 Oct 2020 00:12:31 +0300 (MSK) From: =?UTF-8?B?SWx5YSBLb3NhcmV2?= MIME-Version: 1.0 Date: Sat, 24 Oct 2020 00:12:30 +0300 Reply-To: =?UTF-8?B?SWx5YSBLb3NhcmV2?= Message-ID: <1603487550.604682360@f196.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--bA59b2Db4fFd955e46d0d81D76b84F2e1603487550" In-Reply-To: <784163c9-c68f-7e54-7884-f2a267660a5d@tarantool.org> References: <20200930000652.10603-1-i.kosarev@tarantool.org> <784163c9-c68f-7e54-7884-f2a267660a5d@tarantool.org> Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_v2=5D_core=3A_introduce_ev?= =?utf-8?q?enly_distributed_int64_random_in_range?= List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?VmxhZGlzbGF2IFNocGlsZXZveQ==?= Cc: tarantool-patches@dev.tarantool.org ----ALT--bA59b2Db4fFd955e46d0d81D76b84F2e1603487550 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpLArCoApUaGFua3MgZm9yIHlvdXIgcmV2aWV3IQrCoApTZW50IHYzIG9mIHRoZSBwYXRjaCBj b25zaWRlcmluZyB5b3VyIGNvbW1lbnRzLiAKPtCh0YPQsdCx0L7RgtCwLCAzINC+0LrRgtGP0LHR gNGPIDIwMjAsIDE6NDMgKzAzOjAwINC+0YIgVmxhZGlzbGF2IFNocGlsZXZveSA8di5zaHBpbGV2 b3lAdGFyYW50b29sLm9yZz46Cj7CoAo+SGkhIFRoYW5rcyBmb3IgdGhlIHBhdGNoIGFuZCBmb3Ig dGhlIGdvb2QgcmVzZWFyY2gsIHNlcmlvdXNseSEKPgo+U2VlIDExIGNvbW1lbnRzIGJlbG93Lgo+ Cj5PbiAzMC4wOS4yMDIwIDAyOjA2LCBJbHlhIEtvc2FyZXYgd3JvdGU6Cj4+IFRhcmFudG9vbCBj b2RlYmFzZSBoYWQgYXQgbGVhc3QgdHdvIGZ1bmN0aW9ucyB0byBnZW5lcmF0ZSByYW5kb20KPj4g aW50ZWdlciBpbiBnaXZlbiByYW5nZSBhbmQgYm90aCBvZiB0aGVtIGhhZCBwcm9ibGVtcyBhdCBs ZWFzdCB3aXRoCj4+IGludGVnZXIgb3ZlcmZsb3cuIFRoaXMgcGF0Y2ggYnJpbmdzIG5pY2UgZnVu Y3Rpb24gdG8gZ2VuZXJhdGUgcmFuZG9tCj4+IGludDY0X3QgaW4gZ2l2ZW4gcmFuZ2Ugd2l0aG91 dCBvdmVyZmxvdyB3aGlsZSBwcmVzZXJ2aW5nIHVuaWZvcm0gcmFuZG9tCj4+IGdlbmVyYXRvciBk aXN0cmlidXRpb24gdXNpbmcgdW5iaWFzZWQgYml0bWFzayB3aXRoIHJlamVjdGlvbiBtZXRob2Qu Cj4+IEl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2UgeG9zaGlybzI1NisrIFBSTkcgb3IgcmFuZG9t IGJ5dGVzIGFzIGEgYmFzaXMuCj4+IE1vc3QgcmVsZXZhbnQgcmVwbGFjZW1lbnRzIGhhdmUgYmVl biBtYWRlLgo+Pgo+PiBDbG9zZXMgIzUwNzUKPj4gLS0tCj4+IEJyYW5jaDogIGh0dHBzOi8vZ2l0 aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29sL3RyZWUvaS5rb3NhcmV2L2doLTUwNzUtZmluZS1y YW5kb20taW4tcmFuZ2UKPj4gSXNzdWU6ICBodHRwczovL2dpdGh1Yi5jb20vdGFyYW50b29sL3Rh cmFudG9vbC9pc3N1ZXMvNTA3NQo+Pgo+PiBAQ2hhbmdlTG9nOgo+PiAqIEludHJvZHVjZSBvdmVy ZmxvdyByZXNpc3RhbnQgJiBldmVubHkgZGlzdHJpYnV0ZWQgcmFuZG9tIGluIHJhbmdlIChnaC01 MDc1KS4KPgo+MS4gSSB3b3VsZG4ndCBwdXQgaXQgaW50byB0aGUgY2hhbmdlbG9nLiBJdCBpcyBu b3QgYSB2aXNpYmxlIGJ1Z2ZpeCwKPm5vciBhIHB1YmxpYyBmZWF0dXJlLiBSYXRoZXIgc29tZSBy ZWZhY3RvcmluZy4KT2ssIGkgc2VlLCByZW1vdmVkIGluIHYzIG9mIHRoZSBwYXRjaC4KPgo+PiBD aGFuZ2VzIGluIHYyOgo+PiAtIGltcGxlbWVudGVkIGZpbmUgNjQtYml0IHJhbmRvbQo+PiAtIGlt cGxlbWVudGVkIGZpbmUgcmFuZ2UgYm91bmRpbmcKPj4KPj4gc3JjL2xpYi9jb3JlL3JhbmRvbS5j IHwgNTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiBzcmMv bGliL2NvcmUvcmFuZG9tLmggfCAzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiBz cmMvbGliL3N3aW0vc3dpbS5jIHwgMjYgKysrLS0tLS0tLS0tLS0tLS0tLS0KPj4gdGVzdC91bml0 L2hpc3RvZ3JhbS5jIHwgMTIgKysrLS0tLS0tCj4KPjIuIFBsZWFzZSwgYWRkIHNvbWUgdW5pdCB0 ZXN0cyBjaGVja2luZyB0aGF0LCBmb3IgZXhhbXBsZSwKPnRoZSByYW5kb21zIHdvcmsgZmluZSBl dmVuIG9uIHRoZSBtYXhpbWFsIHJhbmdlIFtJTlQ2NF9NSU4sIElOVDY0X01BWF0sCj53aXRoIHNv bWUgZWRnZSBjYXNlcyBsaWtlIFtJTlQ2NF9NSU4sIElOVDY0X01JTl0sIFtJTlQ2NF9NQVgsIElO VDY0X01BWF0sCj5bMSwgMV0sIFswLCAwXSwgYW5kIHNvbWUgcmVndWxhciBjYXNlcy4gQWxzbyB0 aGUgdGVzdHMgc2hvdWxkIGNoZWNrIHRoZQo+Ym9yZGVycyBhcmUgcmVzcGVjdGVkLCBhbmQgQVNB TiBwYXNzZXMgKG9yaWdpbmFsbHkgdGhlIGlzc3VlIHdhcyBkaXNjb3ZlcmVkCj5ieSBBU0FOIHdo aWNoIGZvdW5kIHNpZ25lZCBpbnRlZ2VyIG92ZXJmbG93cyB1bmRlciBFTkFCTEVfVUJfU0FOSVRJ WkVSCj5vcHRpb24pLgpBbGwgcmlnaHQsIGRvbmUgaW4gdjMuCj4KPkFTQU4gY2hlY2tzIGZvciBz aWduZWQgaW50IG92ZXJmbG93IFVCIGFyZSBkaXNhYmxlZCBmb3Igbm93IGJlY2F1c2UKPm9mIFNR TCBwcm9kdWNpbmcgdGhpcyBVQiBhIGxvdC4gQnV0IHlvdSBjYW4gZW5hYmxlIGl0IGJ5IGNoYW5n aW5nCj5jb21waWxlci5jbWFrZSwgYW5kIHJ1bm5pbmcgdGhlIHVuaXQgdGVzdHMuIElmIHlvdSB3 YW50IHRvIGJlIHN1cmUKPml0IHdvbid0IGZhaWwsIHdoZW4gdGhlIG92ZXJmbG93IGNoZWNrIHdp bGwgYmUgZW5hYmxlZCBhZnRlciBTUUwgaXMKPmZpeGVkLgpZZXMsIHRoYW5rcyBmb3IgdGhlIGlu c3RydWN0aW9uLCBjaGVja2VkIGxvY2FsbHkuCj4KPj4gNCBmaWxlcyBjaGFuZ2VkLCAxMDIgaW5z ZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9zcmMvbGliL2Nv cmUvcmFuZG9tLmMgYi9zcmMvbGliL2NvcmUvcmFuZG9tLmMKPj4gaW5kZXggZjRmYTc1YjFjLi40 YjUyNDA4ZWEgMTAwNjQ0Cj4+IC0tLSBhL3NyYy9saWIvY29yZS9yYW5kb20uYwo+PiArKysgYi9z cmMvbGliL2NvcmUvcmFuZG9tLmM+IEBAIC02Myw2ICs2NSw4IEBAIHJhbmRvbV9pbml0KHZvaWQp Cj4+IHNyYW5kOgo+PiBzcmFuZG9tKHNlZWQpOwo+PiBzcmFuZChzZWVkKTsKPj4gKwo+PiArIHJh bmRvbV9ieXRlcygoY2hhciAqKXN0YXRlLCAzMik7Cj4KPjMuIE5ldmVyIGhhcmRjb2RlIGFuIGFy cmF5IHNpemUgZXhjZXB0IG1heWJlIGluIGl0cyBkZWNsYXJhdGlvbi4KPnNpemVvZihzdGF0ZSkg d2lsbCByZXR1cm4gdGhlIHNhbWUsIGJ1dCBpdCBpcyBzYWZlIGluIGNhc2UgdGhlCj5zdGF0ZSBz aXplIGV2ZXIgY2hhbmdlcy4KUmlnaHQsIGZpeGVkIGluIHYzLgo+Cj4+IH0KPj4KPj4gdm9pZAo+ PiBAQCAtOTcsMyArMTAxLDU2IEBAIHJhbmQ6Cj4+IHdoaWxlIChnZW5lcmF0ZWQgPCBzaXplKQo+ PiBidWZbZ2VuZXJhdGVkKytdID0gcmFuZCgpOwo+PiB9Cj4+ICsKPj4gK3VpbnQ2NF90Cj4+ICty ZWFsX3JhbmRvbSh2b2lkKQo+PiArewo+PiArIHVpbnQ2NF90IHJlc3VsdDsKPj4gKyByYW5kb21f Ynl0ZXMoKGNoYXIgKikoJnJlc3VsdCksIDgpOwo+PiArIHJldHVybiByZXN1bHQ7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyBpbmxpbmUKPj4gK3VpbnQ2NF90IHJvdGwoY29uc3QgdWludDY0X3QgeCwg aW50IGspCj4KPjQuIFNvcnJ5LCB3ZSBuZXZlciBwdXQgcmV0dXJuIHR5cGUgb24gdGhlIHNhbWUg bGluZSBhcyBmdW5jdGlvbgo+bmFtZS4gQWxzbyB3aHkgZGlkIHlvdSBkZWNsYXJlICd4JyBjb25z dD8gV2h5ICdrJyBpcyBub3QgY29uc3QKPnRoZW4/IEl0IHNlZW1zIHlvdSBjb3B5LXBhc3RlZCBp dCBmcm9tIHNvbWV3aGVyZSB3aXRob3V0Cj5jaGFuZ2luZy4gUGxlYXNlLCBjb252ZXJ0IGl0IHRv IG91ciBjb2RlIHN0eWxlLgpZZXMsIHJpZ2h0LCBkaWRu4oCZdCB0aGluayBhYm91dCB0aGUgZGlm ZmVyZW5jZS4gRml4ZWQgaW4gdjMuCldlbGwsIHllcywgaXQgd2FzIGJvcnJvd2VkIGZyb20gaGVy ZSBvcmlnaW5hbGx5LCBhcyBtZW50aW9uZWQ6Cmh0dHA6Ly9wcm5nLmRpLnVuaW1pLml0L3hvc2hp cm8yNTZwbHVzcGx1cy5jCj4KPjUuIFdoYXQgaXMgJ3JvdGwnPwpDb21tZW50IGlzIGFkZGVkIGlu IHYzOiDCq3JvdGF0ZSBsZWZ0wrsuCj4KPj4gK3sKPj4gKyByZXR1cm4gKHggPDwgaykgfCAoeCA+ PiAoNjQgLSBrKSk7Cj4+ICt9Cj4+ICsKPj4gK3VpbnQ2NF90Cj4+ICtwc2V1ZG9fcmFuZG9tKHZv aWQpCj4+ICt7Cj4+ICsgY29uc3QgdWludDY0X3QgcmVzdWx0ID0gcm90bChzdGF0ZVswXSArIHN0 YXRlWzNdLCAyMykgKyBzdGF0ZVswXTsKPj4gKyBjb25zdCB1aW50NjRfdCB0ID0gc3RhdGVbMV0g PDwgMTc7Cj4+ICsgc3RhdGVbMl0gXj0gc3RhdGVbMF07Cj4+ICsgc3RhdGVbM10gXj0gc3RhdGVb MV07Cj4+ICsgc3RhdGVbMV0gXj0gc3RhdGVbMl07Cj4+ICsgc3RhdGVbMF0gXj0gc3RhdGVbM107 Cj4+ICsgc3RhdGVbMl0gXj0gdDsKPj4gKyBzdGF0ZVszXSA9IHJvdGwoc3RhdGVbM10sIDQ1KTs+ ICsgcmV0dXJuIHJlc3VsdDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZSB1aW50NjRfdAo+ PiArcmFuZG9tX2luX3JhbmdlKHVpbnQ2NF90ICgqcm5kKSh2b2lkKSwgdWludDY0X3QgcmFuZ2Up Cj4+ICt7Cj4+ICsgdWludDY0X3QgbWFzayA9IFVJTlQ2NF9NQVggPj4gX19idWlsdGluX2Nsemxs KHJhbmdlIHwgMSk7Cj4KPjYuIFVzZSBiaXRfY2x6X3U2NCgpLiBZb3UgbWF5IG5vdCBoYXZlIF9f YnVpbHRpbl9jbHpsbC4KQWxsIHJpZ2h0LCBmaXhlZCBpbiB2My4KPgo+PiArIHVpbnQ2NF90IHJl c3VsdDsKPj4gKyBkbyB7Cj4+ICsgcmVzdWx0ID0gcm5kKCkgJiBtYXNrOwo+Cj43LiBJIGd1ZXNz IHdlIGNhbiBob3BlIHRoZSBjb21waWxlciB3aWxsIGlubGluZSBybmQoKSB2aXJ0dWFsCj5jYWxs IHRvIGEgbm9uLXZpcnR1YWwgY2FsbCBiZWxvdywgYnV0IEkgY2FuJ3QgYmUgMTAwJSBzdXJlLCBh bmQKPm5vYm9keSBjYW4uIEV2ZW4gaWYgbm93IHlvdSBzZWUgaXQgaW5saW5lZCBpbiB0aGUgYXNz ZW1ibHkuIEJldHRlcgo+ZHVwbGljYXRlIHRoZXNlIGZldyBsaW5lcyBvciB1c2UgYSBtYWNybywg dGhhbiByZWx5aW5nIG9uIHRoZQo+Y29tcGlsZXIuIEEgc2luZ2xlIHZpcnR1YWwgY2FsbCB3b3Vs ZCBydWluIHRoZSBwZXJmIG9mIHRoZQo+YWxnb3JpdGhtIHlvdSBjaG9zZSBvdmVyIG1lcnNlbiB0 d2lzdGVyLgpJIHdhcyBxdWl0ZSBzdXJlIGl0IGlzIHJlbGlhYmxlLCBidXTCoGNvdWxkbuKAmXQg ZmluZCB0aGUgcHJvb2YuIENoYW5nZWQgaW4gdjMuCj4KPj4gKyB9IHdoaWxlIChyZXN1bHQgPiBy YW5nZSk7Cj4+ICsgcmV0dXJuIHJlc3VsdDsKPj4gK30KPj4gKwo+PiAraW50NjRfdAo+PiArcmVh bF9yYW5kb21faW5fcmFuZ2UoaW50NjRfdCBtaW4sIGludDY0X3QgbWF4KQo+PiArewo+PiArIGFz c2VydChtYXggPj0gbWluKTsKPj4gKyByZXR1cm4gbWluICsgcmFuZG9tX2luX3JhbmdlKHJlYWxf cmFuZG9tLCAodWludDY0X3QpIChtYXggLSBtaW4pKTsKPgo+OC4gSSBndWVzcyB0aGlzIHdpbGwg ZmFpbCBVQiBjaGVja3MgZnJvbSBBU0FOLCBiZWNhdXNlIG1heC1taW4gd2lsbAo+YmUgZmlyc3Rs eSBzdG9yZWQgaW50byBpbnQ2NF90IGFuZCBvbmx5IHRoZW4gY2FzdCB0byB1aW50NjRfdC4gVGhl Cj5maXJzdCBzdGVwIGNhbiBvdmVyZmxvdyBpbnQ2NF90LiBJIHJlbWVtYmVyIHRoZXJlIHdhcyBh IHNpbXBsZSBzb2x1dGlvbiwKPmJ1dCBjYW4ndCByZW1lbWJlciB3aGF0IGl0IHdhcy4KWWVzLCBB U0FOIGlzIGZpbmUgd2l0aMKgICggdWludDY0X3QgKW1heCAtIG1pbi7CoCBGaXhlZCBpbiB2My4K Pgo+PiArfQo+PiArCj4+ICtpbnQ2NF90Cj4+ICtwc2V1ZG9fcmFuZG9tX2luX3JhbmdlKGludDY0 X3QgbWluLCBpbnQ2NF90IG1heCkKPj4gK3sKPj4gKyBhc3NlcnQobWF4ID49IG1pbik7Cj4+ICsg cmV0dXJuIG1pbiArIHJhbmRvbV9pbl9yYW5nZShwc2V1ZG9fcmFuZG9tLCAodWludDY0X3QpICht YXggLSBtaW4pKTsKPj4gK30KPj4gZGlmZiAtLWdpdCBhL3NyYy9saWIvY29yZS9yYW5kb20uaCBi L3NyYy9saWIvY29yZS9yYW5kb20uaAo+PiBpbmRleCAyNjEwOWIxNGIuLjkyMjhkZjcyZSAxMDA2 NDQKPj4gLS0tIGEvc3JjL2xpYi9jb3JlL3JhbmRvbS5oCj4+ICsrKyBiL3NyYy9saWIvY29yZS9y YW5kb20uaAo+PiBAQCAtNDUsNiArNDYsNDMgQEAgcmFuZG9tX2ZyZWUodm9pZCk7Cj4+IHZvaWQK Pj4gcmFuZG9tX2J5dGVzKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpOwo+Pgo+PiArLyoqCj4+ICsg KiBKdXN0IDggcmFuZG9tX2J5dGVzKCkuCj4+ICsgKi8KPj4gK3VpbnQ2NF90Cj4+ICtyZWFsX3Jh bmRvbSh2b2lkKTsKPj4gKwo+PiArLyoqCj4+ICsgKiB4b3NoaXJvMjU2KysgcHNldWRvIHJhbmRv bSBnZW5lcmF0b3IuCj4+ICsgKiAgaHR0cDovL3BybmcuZGkudW5pbWkuaXQvCj4+ICsgKiBTdGF0 ZSBpcyBpbml0aWFsaXplZCB3aXRoIHJhbmRvbV9ieXRlcygpLgo+PiArICovCj4+ICt1aW50NjRf dAo+PiArcHNldWRvX3JhbmRvbSh2b2lkKTsKPj4gKwo+PiArLyoqCj4+ICsgKiBSZXR1cm4gYSBy YW5kb20gaW50NjRfdCBudW1iZXIgd2l0aGluIGdpdmVuIGJvdW5kYXJpZXMuCj4+ICsgKgo+PiAr ICogSW5zdGVhZCBvZiBibGluZGx5IGNhbGN1bGF0aW5nIGEgbW9kdWxvLCB0aGlzIGZ1bmN0aW9u IHVzZXMKPj4gKyAqIHVuYmlhc2VkIGJpdG1hc2sgd2l0aCByZWplY3Rpb24gbWV0aG9kIHRvIHBy b3ZpZGUgbnVtYmVyIGluCj4+ICsgKiBnaXZlbiBib3VuZGFyaWVzIHdoaWxlIHByZXNlcnZpbmcg dW5pZm9ybSBkaXN0cmlidXRpb24gYW5kCj4+ICsgKiBhdm9pZGluZyBvdmVyZmxvdy4gSXQgdXNl cyByYW5kb20gYnl0ZXMgYXMgYSBiYXNpcy4KPgo+OS4gQXJlIHRoZSBib3VuZGFyaWVzIGluY2x1 ZGVkIG9yIG5vdD8gQm90aCBpbmNsdWRlZCwgYm90aAo+ZXhjbHVkZWQsIGZpcnN0IGluY2x1ZGVk IGFuZCBsYXN0IGV4Y2x1ZGVkPwpBZGRlZCB0byB0aGUgY29tbWVudCBpbiB2My4KPgo+PiArICov Cj4+ICtpbnQ2NF90Cj4+ICtyZWFsX3JhbmRvbV9pbl9yYW5nZShpbnQ2NF90IG1pbiwgaW50NjRf dCBtYXgpOwo+PiArCj4+ICsvKioKPj4gKyAqIFJldHVybiBhIHBzZXVkbyByYW5kb20gaW50NjRf dCBudW1iZXIgd2l0aGluIGdpdmVuIGJvdW5kYXJpZXMuCj4+ICsgKgo+PiArICogSW5zdGVhZCBv ZiBibGluZGx5IGNhbGN1bGF0aW5nIGEgbW9kdWxvLCB0aGlzIGZ1bmN0aW9uIHVzZXMKPj4gKyAq IHVuYmlhc2VkIGJpdG1hc2sgd2l0aCByZWplY3Rpb24gbWV0aG9kIHRvIHByb3ZpZGUgbnVtYmVy IGluCj4+ICsgKiBnaXZlbiBib3VuZGFyaWVzIHdoaWxlIHByZXNlcnZpbmcgdW5pZm9ybSBkaXN0 cmlidXRpb24gYW5kCj4+ICsgKiBhdm9pZGluZyBvdmVyZmxvdy4gSXQgdXNlcyB4b3NoaXJvMjU2 KysgYXMgYW4gdWludDY0IHBzZXVkbwo+PiArICogcmFuZG9tIGdlbmVyYXRvci4KPj4gKyAqLwo+ PiAraW50NjRfdAo+PiArcHNldWRvX3JhbmRvbV9pbl9yYW5nZShpbnQ2NF90IG1pbiwgaW50NjRf dCBtYXgpOwo+PiArCj4+ICNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQo+PiB9Cj4KPjEwLiBXaGVu IHlvdSBjaGFuZ2VkIFNXSU0gdG8gdXNlIHRoZSBuZXcgZ2VuZXJhdG9yLCB5b3UgbWFkZSB0aGUK PnRlc3RzIGhhcmRlciB0byByZXByb2R1Y2UgaW4gY2FzZSB0aGV5IGZhaWwuIFNXSU0gdGVzdHMg cHJpbnQgcmFuZG9tCj5zZWVkIGluIHRoZSBiZWdpbm5pbmcsIHNvIGFzIGl0IGNvdWxkIGJlIHVz ZWQgdG8gcmVwZWF0IHRoZSB0ZXN0Lgo+Tm93IHlvdSBuZWVkIHRvIHByaW50IHRoZSBzdGF0ZSBv ZiB5b3VyIHBzZXVkbyBnZW5lcmF0b3IgdG9vLCBzbyBhcwo+aXQgY291bGQgYmUgcmVzdG9yZWQg YW5kIHJlcHJvZHVjZWQuIFNlZSBzd2ltX3J1bl90ZXN0KCkuCkFsbCByaWdodCwgZG9uZSBpbiB2 My4KPgo+MTEuIFdvdWxkIGJlIG5pY2UgdG8gc2VlIG1vdGl2YXRpb24gd2h5IHRoZSBjaG9zZW4g Z2VuZXJhdG9yIHdhcwo+Y2hvc2VuIGluIHRoZSBjb21tZW50cyBpbiByYW5kb20uYy4KUmlnaHQs IGFkZGVkIHNvbWUgYXJndW1lbnRzIGluIGNvbW1lbnQuCsKgCi0tCklseWEgS29zYXJldg== ----ALT--bA59b2Db4fFd955e46d0d81D76b84F2e1603487550 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+PGRpdj5IaSw8L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+VGhh bmtzIGZvciB5b3VyIHJldmlldyE8L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+U2VudCB2MyBv ZiB0aGUgcGF0Y2ggY29uc2lkZXJpbmcgeW91ciBjb21tZW50cy48L2Rpdj48YmxvY2txdW90ZSBz dHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5n OjAgMCAwIDEwcHg7Ij7QodGD0LHQsdC+0YLQsCwgMyDQvtC60YLRj9Cx0YDRjyAyMDIwLCAxOjQz ICswMzowMCDQvtGCIFZsYWRpc2xhdiBTaHBpbGV2b3kgJmx0O3Yuc2hwaWxldm95QHRhcmFudG9v bC5vcmcmZ3Q7Ojxicj4mbmJzcDs8ZGl2IGlkPSIiPjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1y ZWFkbXNnLW1zZyI+PGRpdj48ZGl2IGlkPSJzdHlsZV8xNjAxNjc4NTgyMjA5Njg2NzYyOF9CT0RZ Ij5IaSEgVGhhbmtzIGZvciB0aGUgcGF0Y2ggYW5kIGZvciB0aGUgZ29vZCByZXNlYXJjaCwgc2Vy aW91c2x5ITxicj48YnI+U2VlIDExIGNvbW1lbnRzIGJlbG93Ljxicj48YnI+T24gMzAuMDkuMjAy MCAwMjowNiwgSWx5YSBLb3NhcmV2IHdyb3RlOjxicj4mZ3Q7IFRhcmFudG9vbCBjb2RlYmFzZSBo YWQgYXQgbGVhc3QgdHdvIGZ1bmN0aW9ucyB0byBnZW5lcmF0ZSByYW5kb208YnI+Jmd0OyBpbnRl Z2VyIGluIGdpdmVuIHJhbmdlIGFuZCBib3RoIG9mIHRoZW0gaGFkIHByb2JsZW1zIGF0IGxlYXN0 IHdpdGg8YnI+Jmd0OyBpbnRlZ2VyIG92ZXJmbG93LiBUaGlzIHBhdGNoIGJyaW5ncyBuaWNlIGZ1 bmN0aW9uIHRvIGdlbmVyYXRlIHJhbmRvbTxicj4mZ3Q7IGludDY0X3QgaW4gZ2l2ZW4gcmFuZ2Ug d2l0aG91dCBvdmVyZmxvdyB3aGlsZSBwcmVzZXJ2aW5nIHVuaWZvcm0gcmFuZG9tPGJyPiZndDsg Z2VuZXJhdG9yIGRpc3RyaWJ1dGlvbiB1c2luZyB1bmJpYXNlZCBiaXRtYXNrIHdpdGggcmVqZWN0 aW9uIG1ldGhvZC48YnI+Jmd0OyBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIHhvc2hpcm8yNTYr KyBQUk5HIG9yIHJhbmRvbSBieXRlcyBhcyBhIGJhc2lzLjxicj4mZ3Q7IE1vc3QgcmVsZXZhbnQg cmVwbGFjZW1lbnRzIGhhdmUgYmVlbiBtYWRlLjxicj4mZ3Q7PGJyPiZndDsgQ2xvc2VzICM1MDc1 PGJyPiZndDsgLS0tPGJyPiZndDsgQnJhbmNoOiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20v dGFyYW50b29sL3RhcmFudG9vbC90cmVlL2kua29zYXJldi9naC01MDc1LWZpbmUtcmFuZG9tLWlu LXJhbmdlIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC90YXJh bnRvb2wvdHJlZS9pLmtvc2FyZXYvZ2gtNTA3NS1maW5lLXJhbmRvbS1pbi1yYW5nZTwvYT48YnI+ Jmd0OyBJc3N1ZTogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC90YXJhbnRv b2wvaXNzdWVzLzUwNzUiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2dpdGh1Yi5jb20vdGFyYW50 b29sL3RhcmFudG9vbC9pc3N1ZXMvNTA3NTwvYT48YnI+Jmd0Ozxicj4mZ3Q7IEBDaGFuZ2VMb2c6 PGJyPiZndDsgKiBJbnRyb2R1Y2Ugb3ZlcmZsb3cgcmVzaXN0YW50ICZhbXA7IGV2ZW5seSBkaXN0 cmlidXRlZCByYW5kb20gaW4gcmFuZ2UgKGdoLTUwNzUpLjxicj48YnI+MS4gSSB3b3VsZG4ndCBw dXQgaXQgaW50byB0aGUgY2hhbmdlbG9nLiBJdCBpcyBub3QgYSB2aXNpYmxlIGJ1Z2ZpeCw8YnI+ bm9yIGEgcHVibGljIGZlYXR1cmUuIFJhdGhlciBzb21lIHJlZmFjdG9yaW5nLjwvZGl2PjwvZGl2 PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2Pk9rLCBpIHNlZSwgcmVtb3ZlZCBp biB2MyBvZiB0aGUgcGF0Y2guPC9kaXY+PGRpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxl ZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48 ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pjxicj4m Z3Q7IENoYW5nZXMgaW4gdjI6PGJyPiZndDsgLSBpbXBsZW1lbnRlZCBmaW5lIDY0LWJpdCByYW5k b208YnI+Jmd0OyAtIGltcGxlbWVudGVkIGZpbmUgcmFuZ2UgYm91bmRpbmc8YnI+Jmd0Ozxicj4m Z3Q7IHNyYy9saWIvY29yZS9yYW5kb20uYyB8IDU3ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKys8YnI+Jmd0OyBzcmMvbGliL2NvcmUvcmFuZG9tLmggfCAzOCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKzxicj4mZ3Q7IHNyYy9saWIvc3dpbS9zd2ltLmMgfCAy NiArKystLS0tLS0tLS0tLS0tLS0tLTxicj4mZ3Q7IHRlc3QvdW5pdC9oaXN0b2dyYW0uYyB8IDEy ICsrKy0tLS0tLTxicj48YnI+Mi4gUGxlYXNlLCBhZGQgc29tZSB1bml0IHRlc3RzIGNoZWNraW5n IHRoYXQsIGZvciBleGFtcGxlLDxicj50aGUgcmFuZG9tcyB3b3JrIGZpbmUgZXZlbiBvbiB0aGUg bWF4aW1hbCByYW5nZSBbSU5UNjRfTUlOLCBJTlQ2NF9NQVhdLDxicj53aXRoIHNvbWUgZWRnZSBj YXNlcyBsaWtlIFtJTlQ2NF9NSU4sIElOVDY0X01JTl0sIFtJTlQ2NF9NQVgsIElOVDY0X01BWF0s PGJyPlsxLCAxXSwgWzAsIDBdLCBhbmQgc29tZSByZWd1bGFyIGNhc2VzLiBBbHNvIHRoZSB0ZXN0 cyBzaG91bGQgY2hlY2sgdGhlPGJyPmJvcmRlcnMgYXJlIHJlc3BlY3RlZCwgYW5kIEFTQU4gcGFz c2VzIChvcmlnaW5hbGx5IHRoZSBpc3N1ZSB3YXMgZGlzY292ZXJlZDxicj5ieSBBU0FOIHdoaWNo IGZvdW5kIHNpZ25lZCBpbnRlZ2VyIG92ZXJmbG93cyB1bmRlciBFTkFCTEVfVUJfU0FOSVRJWkVS PGJyPm9wdGlvbikuPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2Pjxk aXY+QWxsIHJpZ2h0LCBkb25lIGluIHYzLjwvZGl2PjxkaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJv cmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAx MHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRp dj48YnI+QVNBTiBjaGVja3MgZm9yIHNpZ25lZCBpbnQgb3ZlcmZsb3cgVUIgYXJlIGRpc2FibGVk IGZvciBub3cgYmVjYXVzZTxicj5vZiBTUUwgcHJvZHVjaW5nIHRoaXMgVUIgYSBsb3QuIEJ1dCB5 b3UgY2FuIGVuYWJsZSBpdCBieSBjaGFuZ2luZzxicj5jb21waWxlci5jbWFrZSwgYW5kIHJ1bm5p bmcgdGhlIHVuaXQgdGVzdHMuIElmIHlvdSB3YW50IHRvIGJlIHN1cmU8YnI+aXQgd29uJ3QgZmFp bCwgd2hlbiB0aGUgb3ZlcmZsb3cgY2hlY2sgd2lsbCBiZSBlbmFibGVkIGFmdGVyIFNRTCBpczxi cj5maXhlZC48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdj5Z ZXMsIHRoYW5rcyBmb3IgdGhlIGluc3RydWN0aW9uLCBjaGVja2VkIGxvY2FsbHkuPC9kaXY+PGRp dj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdp bjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBq cy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pjxicj4mZ3Q7IDQgZmlsZXMgY2hhbmdlZCwgMTAyIGlu c2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKTxicj4mZ3Q7PGJyPiZndDsgZGlmZiAtLWdpdCBh L3NyYy9saWIvY29yZS9yYW5kb20uYyBiL3NyYy9saWIvY29yZS9yYW5kb20uYzxicj4mZ3Q7IGlu ZGV4IGY0ZmE3NWIxYy4uNGI1MjQwOGVhIDEwMDY0NDxicj4mZ3Q7IC0tLSBhL3NyYy9saWIvY29y ZS9yYW5kb20uYzxicj4mZ3Q7ICsrKyBiL3NyYy9saWIvY29yZS9yYW5kb20uYyZndDsgQEAgLTYz LDYgKzY1LDggQEAgcmFuZG9tX2luaXQodm9pZCk8YnI+Jmd0OyBzcmFuZDo8YnI+Jmd0OyBzcmFu ZG9tKHNlZWQpOzxicj4mZ3Q7IHNyYW5kKHNlZWQpOzxicj4mZ3Q7ICs8YnI+Jmd0OyArIHJhbmRv bV9ieXRlcygoY2hhciAqKXN0YXRlLCAzMik7PGJyPjxicj4zLiBOZXZlciBoYXJkY29kZSBhbiBh cnJheSBzaXplIGV4Y2VwdCBtYXliZSBpbiBpdHMgZGVjbGFyYXRpb24uPGJyPnNpemVvZihzdGF0 ZSkgd2lsbCByZXR1cm4gdGhlIHNhbWUsIGJ1dCBpdCBpcyBzYWZlIGluIGNhc2UgdGhlPGJyPnN0 YXRlIHNpemUgZXZlciBjaGFuZ2VzLjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90 ZT48L2Rpdj48ZGl2PlJpZ2h0LCBmaXhlZCBpbiB2My48L2Rpdj48ZGl2PjxibG9ja3F1b3RlIHN0 eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6 MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48 ZGl2PjxkaXY+PGJyPiZndDsgfTxicj4mZ3Q7PGJyPiZndDsgdm9pZDxicj4mZ3Q7IEBAIC05Nywz ICsxMDEsNTYgQEAgcmFuZDo8YnI+Jmd0OyB3aGlsZSAoZ2VuZXJhdGVkICZsdDsgc2l6ZSk8YnI+ Jmd0OyBidWZbZ2VuZXJhdGVkKytdID0gcmFuZCgpOzxicj4mZ3Q7IH08YnI+Jmd0OyArPGJyPiZn dDsgK3VpbnQ2NF90PGJyPiZndDsgK3JlYWxfcmFuZG9tKHZvaWQpPGJyPiZndDsgK3s8YnI+Jmd0 OyArIHVpbnQ2NF90IHJlc3VsdDs8YnI+Jmd0OyArIHJhbmRvbV9ieXRlcygoY2hhciAqKSgmYW1w O3Jlc3VsdCksIDgpOzxicj4mZ3Q7ICsgcmV0dXJuIHJlc3VsdDs8YnI+Jmd0OyArfTxicj4mZ3Q7 ICs8YnI+Jmd0OyArc3RhdGljIGlubGluZTxicj4mZ3Q7ICt1aW50NjRfdCByb3RsKGNvbnN0IHVp bnQ2NF90IHgsIGludCBrKTxicj48YnI+NC4gU29ycnksIHdlIG5ldmVyIHB1dCByZXR1cm4gdHlw ZSBvbiB0aGUgc2FtZSBsaW5lIGFzIGZ1bmN0aW9uPGJyPm5hbWUuIEFsc28gd2h5IGRpZCB5b3Ug ZGVjbGFyZSAneCcgY29uc3Q/IFdoeSAnaycgaXMgbm90IGNvbnN0PGJyPnRoZW4/IEl0IHNlZW1z IHlvdSBjb3B5LXBhc3RlZCBpdCBmcm9tIHNvbWV3aGVyZSB3aXRob3V0PGJyPmNoYW5naW5nLiBQ bGVhc2UsIGNvbnZlcnQgaXQgdG8gb3VyIGNvZGUgc3R5bGUuPC9kaXY+PC9kaXY+PC9kaXY+PC9k aXY+PC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+WWVzLCByaWdodCwgZGlkbuKAmXQgdGhpbmsgYWJv dXQgdGhlIGRpZmZlcmVuY2UuIEZpeGVkIGluIHYzLjwvZGl2PjxkaXY+V2VsbCwgeWVzLCBpdCB3 YXMgYm9ycm93ZWQgZnJvbSBoZXJlIG9yaWdpbmFsbHksIGFzIG1lbnRpb25lZDo8L2Rpdj48ZGl2 Pmh0dHA6Ly9wcm5nLmRpLnVuaW1pLml0L3hvc2hpcm8yNTZwbHVzcGx1cy5jPC9kaXY+PGRpdj48 YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjox MHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1y ZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pjxicj41LiBXaGF0IGlzICdyb3RsJz88L2Rpdj48L2Rpdj48 L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdj5Db21tZW50IGlzIGFkZGVkIGluIHYz OiDCq3JvdGF0ZSBsZWZ0wrsuPC9kaXY+PGRpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxl ZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48 ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pjxicj4m Z3Q7ICt7PGJyPiZndDsgKyByZXR1cm4gKHggJmx0OyZsdDsgaykgfCAoeCAmZ3Q7Jmd0OyAoNjQg LSBrKSk7PGJyPiZndDsgK308YnI+Jmd0OyArPGJyPiZndDsgK3VpbnQ2NF90PGJyPiZndDsgK3Bz ZXVkb19yYW5kb20odm9pZCk8YnI+Jmd0OyArezxicj4mZ3Q7ICsgY29uc3QgdWludDY0X3QgcmVz dWx0ID0gcm90bChzdGF0ZVswXSArIHN0YXRlWzNdLCAyMykgKyBzdGF0ZVswXTs8YnI+Jmd0OyAr IGNvbnN0IHVpbnQ2NF90IHQgPSBzdGF0ZVsxXSAmbHQ7Jmx0OyAxNzs8YnI+Jmd0OyArIHN0YXRl WzJdIF49IHN0YXRlWzBdOzxicj4mZ3Q7ICsgc3RhdGVbM10gXj0gc3RhdGVbMV07PGJyPiZndDsg KyBzdGF0ZVsxXSBePSBzdGF0ZVsyXTs8YnI+Jmd0OyArIHN0YXRlWzBdIF49IHN0YXRlWzNdOzxi cj4mZ3Q7ICsgc3RhdGVbMl0gXj0gdDs8YnI+Jmd0OyArIHN0YXRlWzNdID0gcm90bChzdGF0ZVsz XSwgNDUpOyZndDsgKyByZXR1cm4gcmVzdWx0Ozxicj4mZ3Q7ICt9PGJyPiZndDsgKzxicj4mZ3Q7 ICtzdGF0aWMgaW5saW5lIHVpbnQ2NF90PGJyPiZndDsgK3JhbmRvbV9pbl9yYW5nZSh1aW50NjRf dCAoKnJuZCkodm9pZCksIHVpbnQ2NF90IHJhbmdlKTxicj4mZ3Q7ICt7PGJyPiZndDsgKyB1aW50 NjRfdCBtYXNrID0gVUlOVDY0X01BWCAmZ3Q7Jmd0OyBfX2J1aWx0aW5fY2x6bGwocmFuZ2UgfCAx KTs8YnI+PGJyPjYuIFVzZSBiaXRfY2x6X3U2NCgpLiBZb3UgbWF5IG5vdCBoYXZlIF9fYnVpbHRp bl9jbHpsbC48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdj5B bGwgcmlnaHQsIGZpeGVkIGluIHYzLjwvZGl2PjxkaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRl ci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4 OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj48 YnI+Jmd0OyArIHVpbnQ2NF90IHJlc3VsdDs8YnI+Jmd0OyArIGRvIHs8YnI+Jmd0OyArIHJlc3Vs dCA9IHJuZCgpICZhbXA7IG1hc2s7PGJyPjxicj43LiBJIGd1ZXNzIHdlIGNhbiBob3BlIHRoZSBj b21waWxlciB3aWxsIGlubGluZSBybmQoKSB2aXJ0dWFsPGJyPmNhbGwgdG8gYSBub24tdmlydHVh bCBjYWxsIGJlbG93LCBidXQgSSBjYW4ndCBiZSAxMDAlIHN1cmUsIGFuZDxicj5ub2JvZHkgY2Fu LiBFdmVuIGlmIG5vdyB5b3Ugc2VlIGl0IGlubGluZWQgaW4gdGhlIGFzc2VtYmx5LiBCZXR0ZXI8 YnI+ZHVwbGljYXRlIHRoZXNlIGZldyBsaW5lcyBvciB1c2UgYSBtYWNybywgdGhhbiByZWx5aW5n IG9uIHRoZTxicj5jb21waWxlci4gQSBzaW5nbGUgdmlydHVhbCBjYWxsIHdvdWxkIHJ1aW4gdGhl IHBlcmYgb2YgdGhlPGJyPmFsZ29yaXRobSB5b3UgY2hvc2Ugb3ZlciBtZXJzZW4gdHdpc3Rlci48 L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdj5JIHdhcyBxdWl0 ZSBzdXJlIGl0IGlzIHJlbGlhYmxlLCBidXQmbmJzcDtjb3VsZG7igJl0IGZpbmQgdGhlIHByb29m LiBDaGFuZ2VkIGluIHYzLjwvZGl2PjxkaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0 OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRp dj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj48YnI+Jmd0 OyArIH0gd2hpbGUgKHJlc3VsdCAmZ3Q7IHJhbmdlKTs8YnI+Jmd0OyArIHJldHVybiByZXN1bHQ7 PGJyPiZndDsgK308YnI+Jmd0OyArPGJyPiZndDsgK2ludDY0X3Q8YnI+Jmd0OyArcmVhbF9yYW5k b21faW5fcmFuZ2UoaW50NjRfdCBtaW4sIGludDY0X3QgbWF4KTxicj4mZ3Q7ICt7PGJyPiZndDsg KyBhc3NlcnQobWF4ICZndDs9IG1pbik7PGJyPiZndDsgKyByZXR1cm4gbWluICsgcmFuZG9tX2lu X3JhbmdlKHJlYWxfcmFuZG9tLCAodWludDY0X3QpIChtYXggLSBtaW4pKTs8YnI+PGJyPjguIEkg Z3Vlc3MgdGhpcyB3aWxsIGZhaWwgVUIgY2hlY2tzIGZyb20gQVNBTiwgYmVjYXVzZSBtYXgtbWlu IHdpbGw8YnI+YmUgZmlyc3RseSBzdG9yZWQgaW50byBpbnQ2NF90IGFuZCBvbmx5IHRoZW4gY2Fz dCB0byB1aW50NjRfdC4gVGhlPGJyPmZpcnN0IHN0ZXAgY2FuIG92ZXJmbG93IGludDY0X3QuIEkg cmVtZW1iZXIgdGhlcmUgd2FzIGEgc2ltcGxlIHNvbHV0aW9uLDxicj5idXQgY2FuJ3QgcmVtZW1i ZXIgd2hhdCBpdCB3YXMuPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2 PjxkaXY+WWVzLCBBU0FOIGlzIGZpbmUgd2l0aCZuYnNwOzxzcGFuIHN0eWxlPSJjb2xvcjogcmdi KDgsIDgsIDgpOyBmb250LWZhbWlseTogJnF1b3Q7SmV0QnJhaW5zIE1vbm8mcXVvdDssIG1vbm9z cGFjZTsgZm9udC1zaXplOiA5LjhwdDsiPig8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5 OiAmcXVvdDtKZXRCcmFpbnMgTW9ubyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDkuOHB0 OyBjb2xvcjogcmdiKDU1LCAzMSwgMTI4KTsiPnVpbnQ2NF90PC9zcGFuPjxzcGFuIHN0eWxlPSJj b2xvcjogcmdiKDgsIDgsIDgpOyBmb250LWZhbWlseTogJnF1b3Q7SmV0QnJhaW5zIE1vbm8mcXVv dDssIG1vbm9zcGFjZTsgZm9udC1zaXplOiA5LjhwdDsiPiltYXggLSBtaW4uJm5ic3A7PC9zcGFu PkZpeGVkIGluIHYzLjwvZGl2PjxkaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFw eCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48 ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj48YnI+Jmd0OyAr fTxicj4mZ3Q7ICs8YnI+Jmd0OyAraW50NjRfdDxicj4mZ3Q7ICtwc2V1ZG9fcmFuZG9tX2luX3Jh bmdlKGludDY0X3QgbWluLCBpbnQ2NF90IG1heCk8YnI+Jmd0OyArezxicj4mZ3Q7ICsgYXNzZXJ0 KG1heCAmZ3Q7PSBtaW4pOzxicj4mZ3Q7ICsgcmV0dXJuIG1pbiArIHJhbmRvbV9pbl9yYW5nZShw c2V1ZG9fcmFuZG9tLCAodWludDY0X3QpIChtYXggLSBtaW4pKTs8YnI+Jmd0OyArfTxicj4mZ3Q7 IGRpZmYgLS1naXQgYS9zcmMvbGliL2NvcmUvcmFuZG9tLmggYi9zcmMvbGliL2NvcmUvcmFuZG9t Lmg8YnI+Jmd0OyBpbmRleCAyNjEwOWIxNGIuLjkyMjhkZjcyZSAxMDA2NDQ8YnI+Jmd0OyAtLS0g YS9zcmMvbGliL2NvcmUvcmFuZG9tLmg8YnI+Jmd0OyArKysgYi9zcmMvbGliL2NvcmUvcmFuZG9t Lmg8YnI+Jmd0OyBAQCAtNDUsNiArNDYsNDMgQEAgcmFuZG9tX2ZyZWUodm9pZCk7PGJyPiZndDsg dm9pZDxicj4mZ3Q7IHJhbmRvbV9ieXRlcyhjaGFyICpidWYsIHNpemVfdCBzaXplKTs8YnI+Jmd0 Ozxicj4mZ3Q7ICsvKio8YnI+Jmd0OyArICogSnVzdCA4IHJhbmRvbV9ieXRlcygpLjxicj4mZ3Q7 ICsgKi88YnI+Jmd0OyArdWludDY0X3Q8YnI+Jmd0OyArcmVhbF9yYW5kb20odm9pZCk7PGJyPiZn dDsgKzxicj4mZ3Q7ICsvKio8YnI+Jmd0OyArICogeG9zaGlybzI1NisrIHBzZXVkbyByYW5kb20g Z2VuZXJhdG9yLjxicj4mZ3Q7ICsgKiA8YSBocmVmPSJodHRwOi8vcHJuZy5kaS51bmltaS5pdC8i IHRhcmdldD0iX2JsYW5rIj5odHRwOi8vcHJuZy5kaS51bmltaS5pdC88L2E+PGJyPiZndDsgKyAq IFN0YXRlIGlzIGluaXRpYWxpemVkIHdpdGggcmFuZG9tX2J5dGVzKCkuPGJyPiZndDsgKyAqLzxi cj4mZ3Q7ICt1aW50NjRfdDxicj4mZ3Q7ICtwc2V1ZG9fcmFuZG9tKHZvaWQpOzxicj4mZ3Q7ICs8 YnI+Jmd0OyArLyoqPGJyPiZndDsgKyAqIFJldHVybiBhIHJhbmRvbSBpbnQ2NF90IG51bWJlciB3 aXRoaW4gZ2l2ZW4gYm91bmRhcmllcy48YnI+Jmd0OyArICo8YnI+Jmd0OyArICogSW5zdGVhZCBv ZiBibGluZGx5IGNhbGN1bGF0aW5nIGEgbW9kdWxvLCB0aGlzIGZ1bmN0aW9uIHVzZXM8YnI+Jmd0 OyArICogdW5iaWFzZWQgYml0bWFzayB3aXRoIHJlamVjdGlvbiBtZXRob2QgdG8gcHJvdmlkZSBu dW1iZXIgaW48YnI+Jmd0OyArICogZ2l2ZW4gYm91bmRhcmllcyB3aGlsZSBwcmVzZXJ2aW5nIHVu aWZvcm0gZGlzdHJpYnV0aW9uIGFuZDxicj4mZ3Q7ICsgKiBhdm9pZGluZyBvdmVyZmxvdy4gSXQg dXNlcyByYW5kb20gYnl0ZXMgYXMgYSBiYXNpcy48YnI+PGJyPjkuIEFyZSB0aGUgYm91bmRhcmll cyBpbmNsdWRlZCBvciBub3Q/IEJvdGggaW5jbHVkZWQsIGJvdGg8YnI+ZXhjbHVkZWQsIGZpcnN0 IGluY2x1ZGVkIGFuZCBsYXN0IGV4Y2x1ZGVkPzwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxv Y2txdW90ZT48L2Rpdj48ZGl2PkFkZGVkIHRvIHRoZSBjb21tZW50IGluIHYzLjwvZGl2PjxkaXY+ PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46 MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMt cmVhZG1zZy1tc2ciPjxkaXY+PGRpdj48YnI+Jmd0OyArICovPGJyPiZndDsgK2ludDY0X3Q8YnI+ Jmd0OyArcmVhbF9yYW5kb21faW5fcmFuZ2UoaW50NjRfdCBtaW4sIGludDY0X3QgbWF4KTs8YnI+ Jmd0OyArPGJyPiZndDsgKy8qKjxicj4mZ3Q7ICsgKiBSZXR1cm4gYSBwc2V1ZG8gcmFuZG9tIGlu dDY0X3QgbnVtYmVyIHdpdGhpbiBnaXZlbiBib3VuZGFyaWVzLjxicj4mZ3Q7ICsgKjxicj4mZ3Q7 ICsgKiBJbnN0ZWFkIG9mIGJsaW5kbHkgY2FsY3VsYXRpbmcgYSBtb2R1bG8sIHRoaXMgZnVuY3Rp b24gdXNlczxicj4mZ3Q7ICsgKiB1bmJpYXNlZCBiaXRtYXNrIHdpdGggcmVqZWN0aW9uIG1ldGhv ZCB0byBwcm92aWRlIG51bWJlciBpbjxicj4mZ3Q7ICsgKiBnaXZlbiBib3VuZGFyaWVzIHdoaWxl IHByZXNlcnZpbmcgdW5pZm9ybSBkaXN0cmlidXRpb24gYW5kPGJyPiZndDsgKyAqIGF2b2lkaW5n IG92ZXJmbG93LiBJdCB1c2VzIHhvc2hpcm8yNTYrKyBhcyBhbiB1aW50NjQgcHNldWRvPGJyPiZn dDsgKyAqIHJhbmRvbSBnZW5lcmF0b3IuPGJyPiZndDsgKyAqLzxicj4mZ3Q7ICtpbnQ2NF90PGJy PiZndDsgK3BzZXVkb19yYW5kb21faW5fcmFuZ2UoaW50NjRfdCBtaW4sIGludDY0X3QgbWF4KTs8 YnI+Jmd0OyArPGJyPiZndDsgI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpPGJyPiZndDsgfTxicj48 YnI+MTAuIFdoZW4geW91IGNoYW5nZWQgU1dJTSB0byB1c2UgdGhlIG5ldyBnZW5lcmF0b3IsIHlv dSBtYWRlIHRoZTxicj50ZXN0cyBoYXJkZXIgdG8gcmVwcm9kdWNlIGluIGNhc2UgdGhleSBmYWls LiBTV0lNIHRlc3RzIHByaW50IHJhbmRvbTxicj5zZWVkIGluIHRoZSBiZWdpbm5pbmcsIHNvIGFz IGl0IGNvdWxkIGJlIHVzZWQgdG8gcmVwZWF0IHRoZSB0ZXN0Ljxicj5Ob3cgeW91IG5lZWQgdG8g cHJpbnQgdGhlIHN0YXRlIG9mIHlvdXIgcHNldWRvIGdlbmVyYXRvciB0b28sIHNvIGFzPGJyPml0 IGNvdWxkIGJlIHJlc3RvcmVkIGFuZCByZXByb2R1Y2VkLiBTZWUgc3dpbV9ydW5fdGVzdCgpLjwv ZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2PkFsbCByaWdodCwg ZG9uZSBpbiB2My48L2Rpdj48ZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHgg c29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRp diBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+PGJyPjExLiBXb3Vs ZCBiZSBuaWNlIHRvIHNlZSBtb3RpdmF0aW9uIHdoeSB0aGUgY2hvc2VuIGdlbmVyYXRvciB3YXM8 YnI+Y2hvc2VuIGluIHRoZSBjb21tZW50cyBpbiByYW5kb20uYy48L2Rpdj48L2Rpdj48L2Rpdj48 L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdj5SaWdodCwgYWRkZWQgc29tZSBhcmd1bWVudHMg aW4gY29tbWVudC48L2Rpdj48ZGl2PiZuYnNwOzxkaXYgZGF0YS1zaWduYXR1cmUtd2lkZ2V0PSJj b250YWluZXIiPjxkaXYgZGF0YS1zaWduYXR1cmUtd2lkZ2V0PSJjb250ZW50Ij48ZGl2Pi0tPGJy PklseWEgS29zYXJldjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvQk9EWT48L0hUTUw+Cg== ----ALT--bA59b2Db4fFd955e46d0d81D76b84F2e1603487550--