Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w54Za-002rgG-2I for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 16:25:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w54ZY-007plf-38 for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 16:25:41 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w54ZX-007plX-3A for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 16:25:41 +0000 Received: from forward100d.mail.yandex.net ([178.154.239.211]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w54ZN-00000000oks-0fnO for pgsql-hackers@postgresql.org; Tue, 24 Mar 2026 16:25:39 +0000 Received: from mail-nwsmtp-smtp-production-main-72.klg.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-72.klg.yp-c.yandex.net [IPv6:2a02:6b8:c42:27a5:0:640:93ca:0]) by forward100d.mail.yandex.net (Yandex) with ESMTPS id 29A65C0076; Tue, 24 Mar 2026 19:25:25 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-72.klg.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id KPWCPuJGnCg0-bLYlqM7B; Tue, 24 Mar 2026 19:25:23 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1774369524; bh=uj8/H4bRRjYNC4/qfez3PVJ4CodbXK2tIXffkLy5N74=; h=In-Reply-To:References:To:Subject:Message-ID:Date:From; b=E2Z08e/7SZ+e+y02llcRw0e4zk+QowG+2MCEkkwlprgzD95gcwRRduJ3eGD/5b8hF uGIX1tyUoSWM9hFYvTJbj3tHYGtmrQqQoug5OfjqO8PfsrVnD6Hyk3f1XbBi2nnz+i NAUoaOad66kLAhjRZPskGYKOFXpdH4sUmzPvWXSI= Authentication-Results: mail-nwsmtp-smtp-production-main-72.klg.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------WPZdujZzC0BCYuxPBGMyEtBX" Message-ID: <861a92f9-f36c-4fae-be9d-db5547fde937@tantorlabs.com> Date: Wed, 25 Mar 2026 00:25:18 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Compress prune/freeze records with Delta Frame of Reference algorithm From: Evgeny Voropaev To: PostgreSQL Hackers , Andrey Borodin , Andres Freund References: Content-Language: en-US In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------WPZdujZzC0BCYuxPBGMyEtBX Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Rebase onto 2102ebb1953. Fix warnings about gnu_printf in tap.c. Fix wrong destination pointer in memcpy in vect_init. Fix intl library linking problem for the dfor tests under FreBSD. --------------WPZdujZzC0BCYuxPBGMyEtBX Content-Type: text/x-patch; charset=UTF-8; name="v04-0001-Implement-vect-and-uniqsortvect-containers-and-b.patch" Content-Disposition: attachment; filename*0="v04-0001-Implement-vect-and-uniqsortvect-containers-and-b.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzOGYxNDFhODM2N2Y4YjRlYmE3ZDVjODczMjYxZTQ0NmUwNGRlYTlkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTc6MzA6MjIgKzA4MDAKU3ViamVjdDogW1BB VENIIHYwNCAxLzNdIEltcGxlbWVudCB2ZWN0IGFuZCB1bmlxc29ydHZlY3QgY29udGFpbmVy cyBhbmQKIGJpdHBhY2sgYWxnb3JpdGhtcy4KClRoZSB2ZWN0IGNvbnRhaW5lciBzdG9yZXMg YXJyYXlzIG9mIGludGVnZXJzIGFuZCBwcm92aWRlcyBhIHNldCBvZgphbGdvcml0aG1zIGlt cGxlbWVudGluZyBlc3NlbnRpYWwgb3BlcmF0aW9ucyBvbiB0aGUgY29udGFpbmVkIGFycmF5 LApzdWNoIGFzIGluaXRpYWxpemF0aW9uLCBhcHBlbmRpbmcsIGluc2VydGluZywgYW5kIGNs ZWFyaW5nLgoKVGhlIHVuaXFzb3J0dmVjdCBjb250YWluZXIgaXMgYmFzZWQgb24gdGhlIHZl Y3QgdHlwZSBidXQgYXNzdW1lcyB0aGF0Cml0cyBlbGVtZW50cyBhcmUgc29ydGVkIGFuZCB1 bmlxdWUuIEluIGFkZGl0aW9uIHRvIHRoZSBhbGdvcml0aG1zCnByb3ZpZGVkIGJ5IHZlY3Qs IHVuaXFzb3J0dmVjdCBpbXBsZW1lbnRzIGJpbmFyeSBzZWFyY2ggYW5kIHRoZQpzcGVjaWFs aXplZCBpbnNlcnRpb24gcm91dGluZS4KClRoZSBjb250YWluZXJzIHN1cHBvcnQgYm90aCBl eHRlcm5hbCBtZW1vcnkgcHJvdmlkZWQgYnkgYSBjYWxsZXIgYW5kCmF1dG9tYXRpY2FsbHkg bWFuYWdlZCBtZW1vcnkgdXNpbmcgbWFsbG9jLCBQb3N0Z3JlcydzIHBhbGxvYywgb3Igc2lt aWxhcgphbGxvY2F0aW9uIGZ1bmN0aW9ucy4gQSBjb250YWluZXIncyBzdHJhdGVneSByZWdh cmRpbmcgbWVtb3J5IG1hbmFnZW1lbnQKbXVzdCBiZSBzZXQgYXQgY29udGFpbmVyIGluaXRp YWxpemF0aW9uLCBhbmQgYWxsIHN1YnNlcXVlbnQgb3BlcmF0aW9ucwpob25vciB0aGlzIGNv bmZpZ3VyYXRpb24uIEZvciBleGFtcGxlLCBhIGNhbGxlciBjYW4gcGxhY2UgYSBidWZmZXIg b24KdGhlIHN0YWNrIHRvIGF2b2lkIGhlYXAgYWxsb2NhdGlvbiBhbmQgcGFzcyB0aGUgYnVm ZmVyIHRvIGEgdmVjdG9yCmluc3RhbmNlLCB3aGljaCByZXN1bHRzIGluIHRoZSB2ZWN0b3Ig cGVyZm9ybXMgbm8gZHluYW1pYyBhbGxvY2F0aW9uLgoKVGhpcyBjb21taXQgYWxzbyBpbnRy b2R1Y2VzIHRoZSBiaXRwYWNrIHVuaXQsIHdoaWNoIHByb3ZpZGVzIGFsZ29yaXRobXMKZm9y IGRlbnNlIGJpdC1sZXZlbCBwYWNraW5nIGFuZCB1bnBhY2tpbmcuIFRoZSBiaXRwYWNrIHVu aXQgZG9lcyBub3QKdXNlIGR5bmFtaWMgbWVtb3J5LgoKRWFjaCB1bml0ICh2ZWN0LCBiaXRw YWNrKSBpcyBpbXBsZW1lbnRlZCBhcyBhIHNldCBvZiB0ZW1wbGF0ZXMgdGhhdAphbGxvdyBk ZXZlbG9wZXJzIHRvIGdlbmVyYXRlIHNwZWNpYWxpemVkIHNvbHV0aW9ucyBmb3IgYW55IGlu dGVnZXIgdHlwZQoodWludDgsIGludDgsIHVpbnQxNiwgaW50MTYsIGFuZCBzbyBvbikuIFRo ZSB1bml0cyBiaXRwYWNrX3UxNiBhbmQKdmVjdF91MTYgc3VwcG9ydGluZyB0aGUgdWludDE2 X3QgdHlwZSBhcmUgYWxzbyBwcm92aWRlZCBieSB0aGlzIGNvbW1pdC4KClVuaXQgdGVzdHMg Zm9yIHRoZSBwcm92aWRlZCBpbXBsZW1lbnRhdGlvbnMgYXJlIGluY2x1ZGVkLiBVbml0IHRl c3RzIGFyZQppbXBsZW1lbnRlZCBhcyBiaW5hcnkgYXBwbGljYXRpb25zIHdyaXR0ZW4gaW4g QyBsYW5ndWFnZQooRUxGIGV4ZWN1dGFibGVzKSB0aGF0IHN1cHBvcnQgdGhlIFRBUCBwcm90 b2NvbCBhbmQgYXJlIHJ1biB1c2luZyB0aGUKUHJvdmUgdXRpbGl0eS4KClRoZSBuZXcgTWFr ZWZpbGUgdGFyZ2V0LCBjaGVjay11bml0LCBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIFBvc3Rn cmVTUUwKYnVpbGQgc3lzdGVtIGFuZCBhbGxvd3MgcnVubmluZyB0aGUgdW5pdCB0ZXN0cyB1 c2luZyB0aGUgY29tbWFuZCAnbWFrZQpjaGVjay11bml0Jy4KCkF1dGhvcjogRXZnZW55IFZv cm9wYWV2IDxldmdlbnkudm9yb3BhZXZAdGFudG9ybGFicy5jb20+IDxldm9yb3BAZ21haWwu Y29tPgpSZXZpZXdlZCBieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRleC10ZWFtLnJ1 PgotLS0KIEdOVW1ha2VmaWxlLmluICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9NYWtlZmlsZS5nbG9iYWwuaW4gICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMv YmFja2VuZC9saWIvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgNSArCiBzcmMvYmFja2Vu ZC9saWIvTWFrZWZpbGUuZGZvciAgICAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9saWIv Yml0cGFja190ZW1wbC5jICAgICAgICB8IDE1NiArKysrKysrKysKIHNyYy9iYWNrZW5kL2xp Yi9iaXRwYWNrX3UxNi5jICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL2xpYi9tZXNv bi5idWlsZCAgICAgICAgICAgIHwgICA3ICsKIHNyYy9iYWNrZW5kL2xpYi92ZWN0X3RlbXBs LmMgICAgICAgICAgIHwgMzAxICsrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvbGli L3ZlY3RfdTE2LmMgICAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvYy5oICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfc3Rh cGxlX3RlbXBsLmggfCAgNTcgKysrKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdGVtcGwu aCAgICAgICAgfCAgMTQgKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdGVtcGxfdW5kZWYu aCAgfCAgIDUgKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdTE2LmggICAgICAgICAgfCAg MTIgKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdTE2X2NvbmZpZy5oICAgfCAgIDYgKwog c3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVtcGwuaCAgICAgICAgICAgfCAgMjcgKysKIHNyYy9p bmNsdWRlL2xpYi92ZWN0X3RlbXBsX3N0YXBsZS5oICAgIHwgMTQwICsrKysrKysrKwogc3Jj L2luY2x1ZGUvbGliL3ZlY3RfdGVtcGxfdW5kZWYuaCAgICAgfCAgMjUgKysKIHNyYy9pbmNs dWRlL2xpYi92ZWN0X3UxNi5oICAgICAgICAgICAgIHwgIDM0ICsrCiBzcmMvaW5jbHVkZS9s aWIvdmVjdF91MTZfY29uZmlnLmggICAgICB8ICAxMCArCiBzcmMvdGVzdC9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9kZm9yLy5naXRpZ25vcmUg ICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9kZm9yL01ha2VmaWxlICAgICAgICAg ICAgICAgICB8ICA0OCArKysKIHNyYy90ZXN0L2Rmb3IvbWVzb24uYnVpbGQgICAgICAgICAg ICAgIHwgIDYyICsrKysKIHNyYy90ZXN0L2Rmb3IvdGVzdC5oICAgICAgICAgICAgICAgICAg IHwgIDMxICsrCiBzcmMvdGVzdC9kZm9yL3Rlc3RfYml0cGFja191MTYuYyAgICAgICB8IDM1 NyArKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L2Rmb3IvdGVzdF91bmlxc29ydHZl Y3RfdTE2LmMgIHwgMjYzICsrKysrKysrKysrKysrKysKIHNyYy90ZXN0L2Rmb3IvdGVzdF92 ZWN0X3UxNi5jICAgICAgICAgIHwgMTY4ICsrKysrKysrKysKIHNyYy90ZXN0L2xpYnRhcC8u Z2l0aWdub3JlICAgICAgICAgICAgIHwgIDEzICsKIHNyYy90ZXN0L2xpYnRhcC8udHJhdmlz LnltbCAgICAgICAgICAgIHwgIDEzICsKIHNyYy90ZXN0L2xpYnRhcC9DT1BZSU5HICAgICAg ICAgICAgICAgIHwgMTY1ICsrKysrKysrKysKIHNyYy90ZXN0L2xpYnRhcC9JTlNUQUxMICAg ICAgICAgICAgICAgIHwgIDQxICsrKwogc3JjL3Rlc3QvbGlidGFwL01ha2VmaWxlICAgICAg ICAgICAgICAgfCAgNzMgKysrKysKIHNyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZS53aW4gICAg ICAgICAgIHwgIDM3ICsrKwogc3JjL3Rlc3QvbGlidGFwL1JFQURNRS5tZCAgICAgICAgICAg ICAgfCAyNjggKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvbGlidGFwL3RhcC5jICAgICAg ICAgICAgICAgICAgfCA0MTcgKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3Qv bGlidGFwL3RhcC5oICAgICAgICAgICAgICAgICAgfCAxMTUgKysrKysrKwogc3JjL3Rlc3Qv bWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogMzggZmlsZXMgY2hhbmdl ZCwgMjkwMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL2JhY2tlbmQvbGliL01ha2VmaWxlLmRmb3IKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvYmFja2VuZC9saWIvYml0cGFja190ZW1wbC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L2JhY2tlbmQvbGliL2JpdHBhY2tfdTE2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFj a2VuZC9saWIvdmVjdF90ZW1wbC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQv bGliL3ZlY3RfdTE2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9saWIvYml0 cGFja19zdGFwbGVfdGVtcGwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xp Yi9iaXRwYWNrX3RlbXBsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9saWIv Yml0cGFja190ZW1wbF91bmRlZi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUv bGliL2JpdHBhY2tfdTE2LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9saWIv Yml0cGFja191MTZfY29uZmlnLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9s aWIvdmVjdF90ZW1wbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvbGliL3Zl Y3RfdGVtcGxfc3RhcGxlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9saWIv dmVjdF90ZW1wbF91bmRlZi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvbGli L3ZlY3RfdTE2LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9saWIvdmVjdF91 MTZfY29uZmlnLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9kZm9yLy5naXRpZ25v cmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9kZm9yL01ha2VmaWxlCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvZGZvci9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L2Rmb3IvdGVzdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv ZGZvci90ZXN0X2JpdHBhY2tfdTE2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9k Zm9yL3Rlc3RfdW5pcXNvcnR2ZWN0X3UxNi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvZGZvci90ZXN0X3ZlY3RfdTE2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9s aWJ0YXAvLmdpdGlnbm9yZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2xpYnRhcC8u dHJhdmlzLnltbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2xpYnRhcC9DT1BZSU5H CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbGlidGFwL0lOU1RBTEwKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9saWJ0YXAvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9saWJ0YXAvTWFrZWZpbGUud2luCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvbGlidGFwL1JFQURNRS5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2xp YnRhcC90YXAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2xpYnRhcC90YXAuaAoK ZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmluIGIvR05VbWFrZWZpbGUuaW4KaW5kZXggY2Y2 ZTc1OTQ4NmUuLjNkOWE0MmQ2YWQ0IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5pbgorKysg Yi9HTlVtYWtlZmlsZS5pbgpAQCAtNjksNiArNjksNyBAQCBjaGVjayBjaGVjay10ZXN0cyBp bnN0YWxsY2hlY2sgaW5zdGFsbGNoZWNrLXBhcmFsbGVsIGluc3RhbGxjaGVjay10ZXN0czog c3VibWFrZQogCSQoTUFLRSkgLUMgc3JjL3Rlc3QvcmVncmVzcyAkQAogCiAkKGNhbGwgcmVj dXJzZSxjaGVjay13b3JsZCxzcmMvdGVzdCBzcmMvcGwgc3JjL2ludGVyZmFjZXMgY29udHJp YiBzcmMvYmluIHNyYy90b29scy9wZ19ic2RfaW5kZW50LGNoZWNrKQorJChjYWxsIHJlY3Vy c2UsY2hlY2stdW5pdCxzcmMvdGVzdCxjaGVjay11bml0KQogJChjYWxsIHJlY3Vyc2UsY2hl Y2twcmVwLCAgc3JjL3Rlc3Qgc3JjL3BsIHNyYy9pbnRlcmZhY2VzIGNvbnRyaWIgc3JjL2Jp bikKIAogJChjYWxsIHJlY3Vyc2UsaW5zdGFsbGNoZWNrLXdvcmxkLHNyYy90ZXN0IHNyYy9w bCBzcmMvaW50ZXJmYWNlcyBjb250cmliIHNyYy9iaW4saW5zdGFsbGNoZWNrKQpkaWZmIC0t Z2l0IGEvc3JjL01ha2VmaWxlLmdsb2JhbC5pbiBiL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4K aW5kZXggYTc2OTliMDI2YmIuLmEzNzE0MmY4MTYwIDEwMDY0NAotLS0gYS9zcmMvTWFrZWZp bGUuZ2xvYmFsLmluCisrKyBiL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4KQEAgLTE5LDcgKzE5 LDcgQEAKICMKICMgTWV0YSBjb25maWd1cmF0aW9uCiAKLXN0YW5kYXJkX3RhcmdldHMgPSBh bGwgaW5zdGFsbCBpbnN0YWxsZGlycyB1bmluc3RhbGwgY2xlYW4gZGlzdGNsZWFuIGNvdmVy YWdlIGNoZWNrIGNoZWNrcHJlcCBpbnN0YWxsY2hlY2sgaW5pdC1wbyB1cGRhdGUtcG8KK3N0 YW5kYXJkX3RhcmdldHMgPSBhbGwgaW5zdGFsbCBpbnN0YWxsZGlycyB1bmluc3RhbGwgY2xl YW4gZGlzdGNsZWFuIGNvdmVyYWdlIGNoZWNrIGNoZWNrcHJlcCBpbnN0YWxsY2hlY2sgY2hl Y2stdW5pdCBpbml0LXBvIHVwZGF0ZS1wbwogIyB0aGVzZSB0YXJnZXRzIHNob3VsZCByZWN1 cnNlIGV2ZW4gaW50byBzdWJkaXJlY3RvcmllcyBub3QgYmVpbmcgYnVpbHQ6CiBzdGFuZGFy ZF9hbHdheXNfdGFyZ2V0cyA9IGNsZWFuIGRpc3RjbGVhbgogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9saWIvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9saWIvTWFrZWZpbGUKaW5kZXgg YjZjZWZkOWNjYTAuLjc0MTY3YmM5ZTRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWIv TWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvbGliL01ha2VmaWxlCkBAIC0xMiw2ICsxMiw4 IEBAIHN1YmRpciA9IHNyYy9iYWNrZW5kL2xpYgogdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4K IGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIAoraW5jbHVk ZSBNYWtlZmlsZS5kZm9yCisKIE9CSlMgPSBcCiAJYmlwYXJ0aXRlX21hdGNoLm8gXAogCWJs b29tZmlsdGVyLm8gXApAQCAtMjIsNSArMjQsOCBAQCBPQkpTID0gXAogCWtuYXBzYWNrLm8g XAogCXBhaXJpbmdoZWFwLm8gXAogCXJidHJlZS5vIFwKKwkkKE9CSlNfREZPUikgXAorCitD UFBGTEFHUyA6PSAtSSQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvbGliICQoQ1BQRkxBR1Mp CiAKIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9jb21tb24ubWsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2xpYi9NYWtlZmlsZS5kZm9yIGIvc3JjL2JhY2tlbmQvbGli L01ha2VmaWxlLmRmb3IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmI5M2M2ZTc4NjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvbGliL01ha2Vm aWxlLmRmb3IKQEAgLTAsMCArMSw1IEBACisjIE1ha2VmaWxlLmRmb3IKKworT0JKU19ERk9S IDo9IFwKKwliaXRwYWNrX3UxNi5vIFwKKwl2ZWN0X3UxNi5vCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9saWIvYml0cGFja190ZW1wbC5jIGIvc3JjL2JhY2tlbmQvbGliL2JpdHBhY2tf dGVtcGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjkyNDQ0 Nzc3ODcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9saWIvYml0cGFja190ZW1w bC5jCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogYml0cGFja190ZW1wbC5jCisgKgorICog VGhlIEJJVFBBQ0sgdW5pdCBpbXBsZW1lbnRzIHJvdXRpbmVzIHBlcnRhaW5pbmcgdG8gYml0 LXBhY2tpbmcuIFRoZSBiaXRwYWNrCisgKiB1bml0IGFsbG93IGhpZ2hlci1sZXZlbCBmdW5j dGlvbnMgdG8gY3JlYXRlIGhpZ2gtZGVuc2l0eSBhcnJheXMgcGFja2VkCisgKiBiaXQtYnkt Yml0LiBJbiBnZW5lcmFsLCB3aWR0aCBvZiBlYWNoIGl0ZW0gaW4gYSBiaXRwYWNrZWQgYXJy YXkgY2FuIHZhcnkgYW5kCisgKiBoYXZlIG5vdCB0byBiZSBvZiBmaXhlZCwgaXRlbXMgY2Fu IGhhdmUgZGlmZmVyZW50IGxlbmd0aC4KKyAqLworCisjaW5jbHVkZSAibGliL2JpdHBhY2tf c3RhcGxlX3RlbXBsLmgiCisKK2l0ZW1fdCB3aWR0aF9mcm9tX3ZhbChpdGVtX3QgdmFsKTsK K2l0ZW1fdCB3aWR0aF90b19tYXNrKHNpemVfdCB3aWR0aCk7CitzaXplX3QgYml0cGFja19w YWNrKHVpbnQ4X3QgKnBhY2ssIHNpemVfdCBjYXJldCwgaXRlbV90IGl0ZW0sCisJCQkJCXNp emVfdCBzekl0ZW1XaWR0aCk7CitpdGVtX3QgYml0cGFja191bnBhY2soY29uc3QgdWludDhf dCAqcGFjaywgc2l6ZV90ICpjYXJldCwgc2l6ZV90IHN6SXRlbVdpZHRoKTsKKworLyoKKyAq IFNpbmNlIHdpZHRoIG9mIGl0ZW1fdCBjYW5ub3QgYmUgbW9yZSB0aGFuIGxlbmd0aCBvZiBp dGVtX3QKKyAqIGxnKE1BWChpdGVtX3QpKSsxLCB3ZSB1c2UgdGhlIGl0ZW1fdCB0eXBlIGZv ciByZXR1cm5lZCB2YWx1ZQorICovCitpdGVtX3QKK3dpZHRoX2Zyb21fdmFsKGl0ZW1fdCB2 YWwpCit7CisJaXRlbV90IHdpZHRoID0gMDsKKworCXdoaWxlICh2YWwpIHsKKwkJd2lkdGgr KzsKKwkJdmFsID0gdmFsID4+IDE7CisJfQorCisJcmV0dXJuIHdpZHRoID09IDAgPyAxIDog d2lkdGg7Cit9CisKK2l0ZW1fdAord2lkdGhfdG9fbWFzayhzaXplX3Qgd2lkdGgpCit7CisJ c2l6ZV90IG1hc2sgPSAwOworCisJQXNzZXJ0KHdpZHRoICE9IDApOworCUFzc2VydCh3aWR0 aCA8PSBzaXplb2YoaXRlbV90KSAqIDgpOworCisJaWYgKGxpa2VseSh3aWR0aCA8IHNpemVv ZihzaXplX3QpKSkKKwkJbWFzayA9ICgxIDw8IHdpZHRoKSAtIDE7CisJZWxzZQorCQl3aGls ZSAod2lkdGgtLSkKKwkJCW1hc2sgPSAobWFzayA8PCAxKSB8IDE7CisKKwlyZXR1cm4gKGl0 ZW1fdCltYXNrOworfQorCitzaXplX3QKK2JpdHBhY2tfcGFjayh1aW50OF90ICpwYWNrLCBz aXplX3QgY2FyZXQsIGl0ZW1fdCBpdGVtLCBzaXplX3Qgc3pJdGVtV2lkdGgpCit7CisJc2l6 ZV90IHN6SXRlbVdpZHRoVG9HbyA9IHN6SXRlbVdpZHRoOworCWl0ZW1fdCBpdG1NYXNrVG9H byA9IHdpZHRoX3RvX21hc2soc3pJdGVtV2lkdGgpOworCisJd2hpbGUgKHN6SXRlbVdpZHRo VG9HbyA+IDApIHsKKwkJc2l6ZV90IGNudFNhdmVkQml0czsKKwkJc2l6ZV90IGJ5dGUgPSBj YXJldCAvIDg7CisJCXNpemVfdCBvZmYgPSBjYXJldCAlIDg7CisJCXVpbnQ4X3QgdWJDaHVu ayA9ICh1aW50OF90KWl0ZW0gPDwgb2ZmOworCQlpdGVtX3QgaXRtQ2h1bmtNYXNrID0gaXRt TWFza1RvR28gPDwgb2ZmOworCQkvKgorCQkgKiBBcHBseWluZyBjaHVuayB1c2luZyB0aGUg bWFzay4gU2V0dGluZyBiaXRzIHRvIG9uZSBhbmQgcmVzZXR0aW5nIGJpdHMKKwkJICogdG8g emVybyBpcyBvbmx5IGluIHNjb3BlcyBkZWZpbmVkIGJ5IHRoZSBtYXNrLiBaZXJvaW5nIG9m IGJpdHMKKwkJICogYWNjb3JkaW5nIHRvIGEgbWFzaywgd2UgY2FuIHVzZSBldmVuIGEgcGFj ayBub3QgYmVlbiBudWxsZWQgaW4KKwkJICogYWR2YW5jZS4KKwkJICovCisJCXBhY2tbYnl0 ZV0gfD0gKHViQ2h1bmsgJiBpdG1DaHVua01hc2spOworCQlwYWNrW2J5dGVdICY9ICh1YkNo dW5rIHwgfml0bUNodW5rTWFzayk7CisJCWNudFNhdmVkQml0cyA9ICg4IC0gb2ZmID4gc3pJ dGVtV2lkdGhUb0dvKSA/CisJCQlzekl0ZW1XaWR0aFRvR28gOgorCQkJOCAtIG9mZjsgLy8g bnVtYmVyIG9mIHNhdmVkIGJpdHMKKwkJc3pJdGVtV2lkdGhUb0dvIC09IGNudFNhdmVkQml0 czsKKwkJY2FyZXQgKz0gY250U2F2ZWRCaXRzOworCQlpdGVtID0gaXRlbSA+PiBjbnRTYXZl ZEJpdHM7CisJCWl0bU1hc2tUb0dvID0gaXRtTWFza1RvR28gPj4gY250U2F2ZWRCaXRzOwor CX0KKwlyZXR1cm4gY2FyZXQ7Cit9CisKK2l0ZW1fdAorYml0cGFja191bnBhY2soY29uc3Qg dWludDhfdCAqcGFjaywgc2l6ZV90ICpjYXJldCwgc2l6ZV90IHdpZEl0ZW0pCit7CisJc2l6 ZV90IHN6SXRlbUNhcmV0OworCXNpemVfdCBzekl0ZW1XaWR0aFRvR287CisJdWludDhfdCBp dGVtW3NpemVvZihpdGVtX3QpXTsgLyogc2l6ZSBvZiBpdGVtIGFycmF5ICovCisKKwlzaXpl X3Qgc3pQYWNrQnl0ZTsKKwlzaXplX3Qgc3pQYWNrT2ZmOworCXNpemVfdCBzekl0ZW1CeXRl OworCXNpemVfdCBzekl0ZW1PZmY7CisJdWludDhfdCB1YkNodW5rOworCisJc3pJdGVtQ2Fy ZXQgPSAwOworCXN6SXRlbVdpZHRoVG9HbyA9IHdpZEl0ZW07CisJbWVtc2V0KGl0ZW0sIDAs IHNpemVvZihpdGVtX3QpKTsKKworCXdoaWxlIChzekl0ZW1XaWR0aFRvR28gPiAwKSB7CisJ CXNpemVfdCBzekNodW5rU2l6ZTsKKwkJc2l6ZV90IHN6Q2h1bmtMb3dTaXplLCBzekNodW5r SGlnaFNpemU7CisKKwkJc3pQYWNrQnl0ZSA9ICpjYXJldCAvIDg7CisJCXN6UGFja09mZiA9 ICpjYXJldCAlIDg7CisJCXN6SXRlbUJ5dGUgPSBzekl0ZW1DYXJldCAvIDg7CisJCXN6SXRl bU9mZiA9IHN6SXRlbUNhcmV0ICUgODsKKworCQl1YkNodW5rID0gcGFja1tzelBhY2tCeXRl XSA+PiBzelBhY2tPZmY7CisKKwkJc3pDaHVua1NpemUgPSA4IC0gc3pQYWNrT2ZmOworCQlp ZiAoc3pJdGVtV2lkdGhUb0dvIDwgc3pDaHVua1NpemUpIHsKKwkJCXN6Q2h1bmtTaXplID0g c3pJdGVtV2lkdGhUb0dvOworCQkJdWJDaHVuayA9IHViQ2h1bmsgJiAodWludDhfdCl3aWR0 aF90b19tYXNrKHN6SXRlbVdpZHRoVG9Hbyk7CisJCX0KKworCQlpZiAoc3pDaHVua1NpemUg PiAoOCAtIHN6SXRlbU9mZikpIC8qIEZyZWUgc3BhY2Ugb2YgaXRlbVtzekl0ZW1CeXRlXSAq LworCQl7CisJCQlzekNodW5rTG93U2l6ZSA9IDggLSBzekl0ZW1PZmY7CisJCQlzekNodW5r SGlnaFNpemUgPSBzekNodW5rU2l6ZSAtIHN6Q2h1bmtMb3dTaXplOworCQl9IGVsc2Ugewor CQkJc3pDaHVua0xvd1NpemUgPSBzekNodW5rU2l6ZTsKKwkJCXN6Q2h1bmtIaWdoU2l6ZSA9 IDA7CisJCX0KKworCQlpdGVtW3N6SXRlbUJ5dGVdIHw9IHViQ2h1bmsgPDwgc3pJdGVtT2Zm OyAvKiBjaHVua19sb3cgKi8KKworCQlpZiAoc3pDaHVua0hpZ2hTaXplICE9IDApIHsKKwkJ CUFzc2VydCgoc3pJdGVtQnl0ZSArIDEpIDwgc2l6ZW9mKGl0ZW1fdCkpOyAvKiBzaXplIG9m IGl0ZW0gYXJyYXkgKi8KKwkJCWl0ZW1bc3pJdGVtQnl0ZSArIDFdIHw9IHViQ2h1bmsgPj4g c3pDaHVua0xvd1NpemU7IC8qIGNodW5rX2hpZ2ggKi8KKwkJfQorCisJCSpjYXJldCArPSBz ekNodW5rU2l6ZTsKKwkJc3pJdGVtQ2FyZXQgKz0gc3pDaHVua1NpemU7CisJCXN6SXRlbVdp ZHRoVG9HbyAtPSBzekNodW5rU2l6ZTsKKwl9CisKKwkvKgorCSAqIFJlb3JkZXJpbmcgYnl0 ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIGVuZGlhbm5lc3Mgb2YgdGhlIHN5c3RlbS4KKwkgKgor CSAqIEhlcmUgZm9yIGEgTGl0dGxlLWVuZGlhbiBzeXN0ZW0gd2UgY2FuIGF2b2lkIHJlb3Jk ZXJpbmcsIGJ1dCBpbiBzdWNoIGEKKwkgKiBjYXNlIHdlIG5lZWQgdG8ga2VlcCB0aGUgaXRl bSBhcnJheSBhbGlnbmVkIHdpdGggaXRlbV90IHR5cGUsIGJ1dCB3ZSBkbworCSAqIG5vdCBr ZWVwLgorCSAqLworCXsKKwkJc2l6ZV90IGogPSAxOworCQlpdGVtX3QgdmFsID0gaXRlbVtz aXplb2YoaXRlbV90KSAtIGpdOworCQl3aGlsZSAoKytqIDw9IHNpemVvZihpdGVtX3QpKSB7 CisJCQl2YWwgPSB2YWwgPDwgODsKKwkJCXZhbCB8PSBpdGVtW3NpemVvZihpdGVtX3QpIC0g al07CisJCX0KKwkJcmV0dXJuIHZhbDsKKwl9Cit9CisKKyNpbmNsdWRlICJsaWIvYml0cGFj a190ZW1wbF91bmRlZi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGliL2JpdHBhY2tf dTE2LmMgYi9zcmMvYmFja2VuZC9saWIvYml0cGFja191MTYuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWUyZWU2ZDZiYjIKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvYmFja2VuZC9saWIvYml0cGFja191MTYuYwpAQCAtMCwwICsxLDggQEAKKy8qCisg KiBGaWxlOiBiaXRwYWNrX3UxNi5jCisgKi8KKworLyogY2xhbmctZm9ybWF0IG9mZiAqLwor I2luY2x1ZGUgImxpYi9iaXRwYWNrX3UxNl9jb25maWcuaCIKKyNpbmNsdWRlICJiaXRwYWNr X3RlbXBsLmMiCisvKiBjbGFuZy1mb3JtYXQgb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2xpYi9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2xpYi9tZXNvbi5idWlsZAppbmRl eCA4ZTM4ZmIyMGYxNy4uMDk4NGJkMGUzZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xp Yi9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9saWIvbWVzb24uYnVpbGQKQEAgLTEs NSArMSwxMCBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMjItMjAyNiwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKIAorZGZvcl9zb3VyY2VzID0gZmlsZXMoCisgICdiaXRw YWNrX3UxNi5jJywKKyAgJ3ZlY3RfdTE2LmMnCispCisKIGJhY2tlbmRfc291cmNlcyArPSBm aWxlcygKICAgJ2JpcGFydGl0ZV9tYXRjaC5jJywKICAgJ2Jsb29tZmlsdGVyLmMnLApAQCAt MTEsMyArMTYsNSBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdwYWlyaW5naGVh cC5jJywKICAgJ3JidHJlZS5jJywKICkKKworYmFja2VuZF9zb3VyY2VzICs9IGRmb3Jfc291 cmNlcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGliL3ZlY3RfdGVtcGwuYyBiL3NyYy9i YWNrZW5kL2xpYi92ZWN0X3RlbXBsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjUyNzEzYzM5ZDNiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQv bGliL3ZlY3RfdGVtcGwuYwpAQCAtMCwwICsxLDMwMSBAQAorLyoKKyAqIEZpbGU6IHZlY3Rf dGVtcGwuYworICovCisKKyNpbmNsdWRlICJsaWIvdmVjdF90ZW1wbF9zdGFwbGUuaCIKKwor LyoKKyAqIFZlY3RvcidzIGZ1bmN0aW9ucworICogS2VlcCB0aGlzIHNlY3Rpb24gZXF1YWwg dG8gdGhlIHNhbWUgc2VjdGlvbiBpbiB2ZWN0X3RlbXBsLmgKKyAqLworLyoKKyAqIENhbGxl ciBoYXMgdG8gY29udHJvbCB3aGV0aGVyIHZlY3RvciB1c2Ugb3V0ZXIgbWVtb3J5IHByb3Zp ZGVkIGJ5IGNhbGxlciBvcgorICogbWFuYWdlIG1lbW9yeSBhbGxvY2F0aW9uIGF1dG9tYXRp Y2FsbHksIHdoaWNoIGRlZmluZXMgd2hldGhlciB2ZWN0X2luc2VydCwKKyAqIHZlY3RfYXBw ZW5kIGFuZCBvdGhlciBmdW5jdGlvbnMgb2YgdGhlIHZlY3RvciBjb250YWluZXIgYXV0b21h dGljYWxseSBtYW5nZQorICogZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiBvciBub3QuCisg Ki8KKworaW50IHZlY3RfaW5pdCh2ZWN0X3QgKnYsIHNpemVfdCBjYXAsIGl0ZW1fdCBvdXRl cl9tZW1bXSk7CitpbnQgdmVjdF9maWxsKHZlY3RfdCAqdiwgc2l6ZV90IGNudCwgY29uc3Qg aXRlbV90IGluW10pOworaW50IHZlY3RfcmVzZXJ2ZSh2ZWN0X3QgKnYsIHNpemVfdCBzek5l d0NhcCk7CitpbnQgdmVjdF9hcHBlbmQodmVjdF90ICp2ZWN0LCBpdGVtX3QgdmFsKTsKK3Zv aWQgdmVjdF9wcmludChjb25zdCB2ZWN0X3QgKmEpOworaW50IHZlY3RfY29tcGFyZShjb25z dCB2ZWN0X3QgKmEsIGNvbnN0IHZlY3RfdCAqYik7CitpbnQgdmVjdF9pbnNlcnQodmVjdF90 ICp2LCBzaXplX3QgcG9zLCBpdGVtX3QgdmFsKTsKK3ZvaWQgdmVjdF9jbGVhcih2ZWN0X3Qg KnYpOworCisvKgorICogVW5pcXVlIHNvcnRlZCB2ZWN0b3IncyBmdW5jdGlvbnMKKyAqIEtl ZXAgdGhpcyBzZWN0aW9uIGVxdWFsIHRvIHRoZSBzYW1lIHNlY3Rpb24gaW4gdmVjdF90ZW1w bC5oCisgKi8KK3Vzdl9pbnNfcmVzX3QgdXN2X2luc2VydCh1bmlxc29ydHZlY3RfdCAqYSwg aXRlbV90IHZhbCk7Cit1c3Zfc3JjaF9yZXNfdCB1c3Zfc2VhcmNoKGNvbnN0IHVuaXFzb3J0 dmVjdF90ICp1c3YsIGl0ZW1fdCB2YWwpOworCitpbnQKK3ZlY3RfaW5pdCh2ZWN0X3QgKnYs IHNpemVfdCBjYXAsIGl0ZW1fdCBvdXRlcl9tZW1bXSkKK3sKKwlpZiAodiA9PSBOVUxMKQor CQlnb3RvIHZlY3RfaW5pdF9lcnJvcjsKKworCXYtPmNhcCA9IGNhcDsKKwl2LT5jbnQgPSAw OworCisJaWYgKG91dGVyX21lbSAhPSBOVUxMKQorCXsKKwkJdi0+bWVtX2lzX291dGVyID0g dHJ1ZTsKKwkJdi0+bSA9IG91dGVyX21lbTsKKwl9CisJZWxzZQorCXsKKwkJdi0+bWVtX2lz X291dGVyID0gZmFsc2U7CisJCWlmIChjYXAgPT0gMCkKKwkJCXYtPm0gPSBOVUxMOworCQll bHNlCisJCXsKKwkJCXYtPm0gPSAoaXRlbV90ICopVkVDVF9NQUxMT0MoY2FwICogc2l6ZW9m KGl0ZW1fdCkpOworCQkJaWYgKHYtPm0gPT0gTlVMTCkKKwkJCQlnb3RvIHZlY3RfaW5pdF9l cnJvcjsKKwkJfQorCX0KKworCS8qIHZlY3RfaW5pdF9vazogKi8KKwlyZXR1cm4gMDsKK3Zl Y3RfaW5pdF9lcnJvcjoKKwltZW1zZXQodiwgMCwgc2l6ZW9mKHZlY3RfdCkpOworCXJldHVy biAtMTsKK30KKworaW50Cit2ZWN0X2ZpbGwodmVjdF90ICp2LCBzaXplX3QgY250LCBjb25z dCBpdGVtX3QgaW5bXSkKK3sKKwlpZiAodiA9PSBOVUxMKQorCQlyZXR1cm4gLTE7CisKKwlp ZiAoY250ID09IDApCisJeworCQl2ZWN0X2NsZWFyKHYpOworCQlyZXR1cm4gMDsKKwl9CisK Kwlmb3IgKHNpemVfdCBqID0gMDsgaiA8IGNudDsgaisrKQorCXsKKwkJaWYgKHZlY3RfYXBw ZW5kKHYsIGluW2pdKSAhPSAwKQorCQl7CisJCQl2ZWN0X2NsZWFyKHYpOworCQkJcmV0dXJu IC0xOworCQl9CisJfQorCXJldHVybiAwOworfQorCitpbnQKK3ZlY3RfcmVzZXJ2ZSh2ZWN0 X3QgKnYsIHNpemVfdCBzek5ld0NhcCkKK3sKKwlpdGVtX3QgKm1OZXc7CisKKwlpZiAodiA9 PSBOVUxMKQorCQlyZXR1cm4gLTE7CisKKwlpZiAodi0+bWVtX2lzX291dGVyKQorCQlyZXR1 cm4gLTE7CisKKwlpZiAoc3pOZXdDYXAgPD0gdi0+Y2FwKQorCQlyZXR1cm4gMDsKKworCW1O ZXcgPSAoaXRlbV90ICopIFZFQ1RfTUFMTE9DKHNpemVvZihpdGVtX3QpICogc3pOZXdDYXAp OworCisJaWYgKG1OZXcgPT0gTlVMTCkKKwkJcmV0dXJuIC0xOworCisJaWYodi0+bSA9PSBO VUxMICYmIHYtPmNudCAhPSAwKQorCQlyZXR1cm4gLTE7CisKKwlpZih2LT5tICE9IE5VTEwg JiYgdi0+Y250ICE9IDApCisJCW1lbWNweShtTmV3LCB2LT5tLCB2LT5jbnQgKiBzaXplb2Yo aXRlbV90KSk7CisKKwlWRUNUX0ZSRUUodi0+bSk7CisJdi0+bSA9IG1OZXc7CisJdi0+Y2Fw ID0gc3pOZXdDYXA7CisJcmV0dXJuIDA7Cit9CisKK2ludAordmVjdF9hcHBlbmQodmVjdF90 ICp2ZWN0LCBpdGVtX3QgdmFsKQoreworCWlmICh2ZWN0ID09IE5VTEwpCisJCXJldHVybiAt MTsKKworCWlmICh2ZWN0LT5jbnQgKyAxID4gdmVjdC0+Y2FwKQorCXsKKwkJaWYgKHZlY3Qt Pm1lbV9pc19vdXRlcikKKwkJCXJldHVybiAtMTsKKwkJZWxzZQorCQkJdmVjdF9yZXNlcnZl KHZlY3QsIHZlY3QtPmNhcCArIFZFQ1RfTUVNQUxMT0NTVEVQKTsKKwl9CisKKwl2ZWN0LT5t W3ZlY3QtPmNudF0gPSB2YWw7CisJdmVjdC0+Y250Kys7CisJcmV0dXJuIDA7Cit9CisKK3Zv aWQKK3ZlY3RfcHJpbnQoY29uc3QgdmVjdF90ICphKQoreworCWZvciAoc2l6ZV90IGogPSAw OyBqIDwgYS0+Y250OyBqKyspCisJCXByaW50ZigiJSIgVkVDVF9JVEVNX0ZPUk1BVF9TUEVD SUZJRVIgIiAiLCBhLT5tW2pdKTsKKworCXByaW50ZigiXG4iKTsKK30KKworaW50Cit2ZWN0 X2NvbXBhcmUoY29uc3QgdmVjdF90ICphLCBjb25zdCB2ZWN0X3QgKmIpCit7CisJaWYgKGEg PT0gTlVMTCB8fCBiID09IE5VTEwpCisJCXJldHVybiAtMTsKKworCWlmIChhLT5jbnQgIT0g Yi0+Y250KQorCQlyZXR1cm4gLTE7CisKKwlmb3IgKHNpemVfdCBqID0gMDsgaiA8IGEtPmNu dDsgaisrKQorCQlpZiAoYS0+bVtqXSAhPSBiLT5tW2pdKQorCQkJcmV0dXJuIC0xOworCisJ cmV0dXJuIDA7Cit9CisKK2ludAordmVjdF9pbnNlcnQodmVjdF90ICp2LCBzaXplX3QgcG9z LCBpdGVtX3QgdmFsKQoreworCWlmICh2LT5jYXAgPCB2LT5jbnQgKyAxICYmCisJCSh2LT5t ZW1faXNfb3V0ZXIgfHwgdmVjdF9yZXNlcnZlKHYsIHYtPmNhcCArIFZFQ1RfTUVNQUxMT0NT VEVQKSAhPSAwKSkKKwkJcmV0dXJuIC0xOworCisJLyoKKwkgKiBJZiBuZWVkLCBtb3ZlIHJp Z2h0IGZyb20gcG9zIGluY2x1ZGluZyBwb3MuIEJlY2F1c2UKKwkgKiBuZWl0aGVyIHN0ZGxp YidzIG5vciBQT1NJWCdzIGRvY3VtZW50YXRpb24gZGVmaW5lcyB0aGUKKwkgKiBiZWhhdmlv dXIgb2YgbWVtbW92ZSBpbiBjYXNlIG9mIGNvdW50PTAsIHdlIGNoZWNrIGl0IGJ5CisJICog b3Vyc2VsdmVzLgorCSAqLworCWlmICh2LT5jbnQgLSBwb3MgPiAwKQorCQltZW1tb3ZlKCZ2 LT5tW3BvcyArIDFdLCAmdi0+bVtwb3NdLCAodi0+Y250IC0gcG9zKSAqIHNpemVvZihpdGVt X3QpKTsKKworCXYtPm1bcG9zXSA9IHZhbDsKKwl2LT5jbnQrKzsKKwlyZXR1cm4gMDsKK30K Kwordm9pZAordmVjdF9jbGVhcih2ZWN0X3QgKnYpCit7CisJaWYgKHYgPT0gTlVMTCkKKwkJ cmV0dXJuOworCisJaWYgKCF2LT5tZW1faXNfb3V0ZXIpCisJCVZFQ1RfRlJFRSh2LT5tKTsK KworCW1lbXNldCh2LCAwLCBzaXplb2YodmVjdF90KSk7Cit9CisKK3Vzdl9zcmNoX3Jlc190 Cit1c3Zfc2VhcmNoKGNvbnN0IHVuaXFzb3J0dmVjdF90ICp1c3YsIGl0ZW1fdCB2YWwpCit7 CisJc2l6ZV90IGksIGwsIGc7CisJdXN2X3NyY2hfcmVzX3QgcmVzOworCisJaWYgKHVzdiA9 PSBOVUxMIHx8ICh1c3YtPm0gPT0gTlVMTCAmJiAoKHVzdi0+Y250ICE9IDApIHx8IHVzdi0+ Y2FwICE9IDApKSkgeworCQlyZXMuc3QgPSBVU1ZfU1JDSF9FUlJPUjsKKwkJcmV0dXJuIHJl czsKKwl9CisKKwlpZiAodXN2LT5jbnQgPT0gMCkgeworCQlyZXMucG9zID0gMDsKKwkJcmVz LnN0ID0gVVNWX1NSQ0hfRU1QVFk7CisJCXJldHVybiByZXM7CisJfQorCisJaWYgKHZhbCA8 IHVzdi0+bVswXSkgeworCQlyZXMucG9zID0gMDsKKwkJcmVzLnN0ID0gVVNWX1NSQ0hfTk9U X0ZPVU5EX1NNQUxMRVNUOworCQlyZXR1cm4gcmVzOworCX0KKworCWlmICh2YWwgPiB1c3Yt Pm1bdXN2LT5jbnQgLSAxXSkgeworCQlyZXMucG9zID0gdXN2LT5jbnQgLSAxOworCQlyZXMu c3QgPSBVU1ZfU1JDSF9OT1RfRk9VTkRfTEFSR0VTVDsKKwkJcmV0dXJuIHJlczsKKwl9CisK KwlsID0gMDsKKwlnID0gdXN2LT5jbnQgLSAxOworCisJd2hpbGUgKGcgLSBsID4gMSkgewor CQlpID0gbCArIChnIC0gbCkgLyAyOworCQlpZiAodmFsID09IHVzdi0+bVtpXSkgeworCQkJ cmVzLnBvcyA9IGk7CisJCQlyZXMuc3QgPSBVU1ZfU1JDSF9GT1VORDsKKwkJCXJldHVybiBy ZXM7CisJCX0gZWxzZSBpZiAodmFsID4gdXN2LT5tW2ldKSB7CisJCQlsID0gaTsKKwkJfSBl bHNlIC8vIHZhbCA8PSB1c3YtPm1baV0KKwkJeworCQkJZyA9IGk7CisJCX0KKwl9CisJLyoK KwkgKiBXaGVuIHNjb3BlcyBsIGFuZCBnIGFyZSBuZWlnaGJvdXJzICggIGctbCA9IDEpCisJ ICovCisJaWYgKHZhbCA9PSB1c3YtPm1bZ10pIHsKKwkJcmVzLnBvcyA9IGc7CisJCXJlcy5z dCA9IFVTVl9TUkNIX0ZPVU5EOworCQlyZXR1cm4gcmVzOworCX0gZWxzZSBpZiAodmFsID09 IHVzdi0+bVtsXSkgeworCQlyZXMucG9zID0gbDsKKwkJcmVzLnN0ID0gVVNWX1NSQ0hfRk9V TkQ7CisJCXJldHVybiByZXM7CisJfQorCisJcmVzLnBvcyA9IGc7CisJcmVzLnN0ID0gVVNW X1NSQ0hfTk9UX0ZPVU5EOworCXJldHVybiByZXM7Cit9CisKKy8qCisgKiBJTlNFUlQKKyAq IHJlY2VpdmVzIGEgdmFsdWUsIGNoZWNrcyB3aGV0aGVyIGFuIHVuaXF1ZSBzb3J0ZWQgdmFs dWVzIHZlY3RvciBjb250YWlucworICogdGhpcyB2YWx1ZS4gSWYgbm90LCBpbnNlcnRzIG5l dyB2YWx1ZSwgcmV0YWluaW5nIHNvcnRlZCBvcmRlci4KKyAqLwordXN2X2luc19yZXNfdAor dXN2X2luc2VydCh1bmlxc29ydHZlY3RfdCAqYSwgaXRlbV90IHZhbCkKK3sKKwl1c3Zfc3Jj aF9yZXNfdCBzZWFyY2g7CisJdXN2X2luc19yZXNfdCBpbnNlcnQ7CisKKwlBc3NlcnQoYSAh PSBOVUxMKTsKKworCXNlYXJjaCA9IHVzdl9zZWFyY2goYSwgdmFsKTsKKwlpZiAoc2VhcmNo LnN0ID09IFVTVl9TUkNIX0ZPVU5EKSB7CisJCWluc2VydC5zdCA9IFVTVl9JTlNfRVhJU1RT OworCQlpbnNlcnQucG9zID0gc2VhcmNoLnBvczsKKwkJcmV0dXJuIGluc2VydDsKKwl9IGVs c2UgaWYgKHNlYXJjaC5zdCA9PSBVU1ZfU1JDSF9OT1RfRk9VTkRfU01BTExFU1QgfHwKKwkJ CSAgIHNlYXJjaC5zdCA9PSBVU1ZfU1JDSF9OT1RfRk9VTkQpIHsKKwkJaW5zZXJ0LnBvcyA9 IHNlYXJjaC5wb3M7CisJfSBlbHNlIGlmIChzZWFyY2guc3QgPT0gVVNWX1NSQ0hfRU1QVFkg fHwKKwkJCSAgIHNlYXJjaC5zdCA9PSBVU1ZfU1JDSF9OT1RfRk9VTkRfTEFSR0VTVCkgewor CQkvKiBJbiBjYXNlIHdoZW4gdmFsdWUgaXMgbW9yZSB0aGFuIGxhcmdlc3Q6IHBvcyA9IGEt PmNudCA9IHNlYXJjaC5nICsgMS4KKwkJICovCisJCS8qIEluIGNhc2Ugb2YgZW1wdHkgdmVj dG9yOiBwb3MgPSBhLT5jbnQgPSAwLiAqLworCQlpbnNlcnQucG9zID0gYS0+Y250OworCX0g ZWxzZSAvKiBVU1ZfU1JDSF9FUlJPUiBvciB1bmtub3duIHJlc3VsdCAqLworCXsKKwkJaW5z ZXJ0LnN0ID0gVVNWX0lOU19FUlJPUjsKKwkJcmV0dXJuIGluc2VydDsKKwl9CisKKwlpbnNl cnQuc3QgPSB2ZWN0X2luc2VydChhLCBpbnNlcnQucG9zLCB2YWwpCisJPT0gMCA/IFVTVl9J TlNfTkVXIDogVVNWX0lOU19FUlJPUjsKKworCXJldHVybiBpbnNlcnQ7Cit9CisKKyNpbmNs dWRlICJsaWIvdmVjdF90ZW1wbF91bmRlZi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv bGliL3ZlY3RfdTE2LmMgYi9zcmMvYmFja2VuZC9saWIvdmVjdF91MTYuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGFiOGUyMjRjN2EKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvYmFja2VuZC9saWIvdmVjdF91MTYuYwpAQCAtMCwwICsxLDggQEAKKy8q CisgKiBGaWxlOiB2ZWN0X3UxNi5jCisgKi8KKworLyogY2xhbmctZm9ybWF0IG9mZiAqLwor I2luY2x1ZGUgImxpYi92ZWN0X3UxNl9jb25maWcuaCIKKyNpbmNsdWRlICJ2ZWN0X3RlbXBs LmMiCisvKiBjbGFuZy1mb3JtYXQgb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Mu aCBiL3NyYy9pbmNsdWRlL2MuaAppbmRleCBmZDZiMDkzYmIzYS4uZDIwOTEwMTA1ZmUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTQ5 OSw2ICs0OTksMTAgQEAgZXh0ZXJuICJDKysiCiAjZGVmaW5lIENwcEFzU3RyaW5nKGlkZW50 aWZpZXIpICNpZGVudGlmaWVyCiAjZGVmaW5lIENwcEFzU3RyaW5nMih4KQkJCUNwcEFzU3Ry aW5nKHgpCiAjZGVmaW5lIENwcENvbmNhdCh4LCB5KQkJCXgjI3kKKyNkZWZpbmUgQ3BwQ29u Y2F0Mih4LCB5KQkJQ3BwQ29uY2F0KHgsIHkpCisKKyNkZWZpbmUgQ3BwQ29uY2F0VHJpcGxl KHgsIHksIHopCXgjI3kjI3oKKyNkZWZpbmUgQ3BwQ29uY2F0VHJpcGxlMihhLCBiLCBjKQlD cHBDb25jYXRUcmlwbGUoYSwgYiwgYykKIAogLyoKICAqIFZBX0FSR1NfTkFSR1MKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2xpYi9iaXRwYWNrX3N0YXBsZV90ZW1wbC5oIGIvc3JjL2lu Y2x1ZGUvbGliL2JpdHBhY2tfc3RhcGxlX3RlbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjVjOTk3MmUwOGNiCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L2luY2x1ZGUvbGliL2JpdHBhY2tfc3RhcGxlX3RlbXBsLmgKQEAgLTAsMCArMSw1NyBAQAor LyoKKyAqIEZpbGU6IGJpdHBhY2tfc3RhcGxlX3RlbXBsLmguaAorICovCisKKyNpbmNsdWRl ICJjLmgiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIE5PTlJFVVNBQkxFIENP REUsIGFsbG93ZWQgdG8gYmUgaW5jbHVkZWQgb25seSBvbmNlCisgKgorICogVGhpcyBjb2Rl IHNob3VsZCBhcHBlYXIgb25seSBvbmNlIGluIGEgZmlsZSAob3IgaW4gYSBjaGFpbiBvZiBm aWxlcykKKyAqIGluY2x1ZGluZyB0aGlzIGhlYWRlciB3aXRoICNpbmNsdWRlLiBTbywgd2Ug cHJvdGVjdCBpdCBmcm9tIGR1cGxpY2F0ZXMgYnkKKyAqIG1lYW5zIG9mIG1hY3JvCisgKgor ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworI2lmbmRlZiBfQklUUEFDS19TVEFQTEVfVEVN UExfSF9VTklRVUVfQ09ERV8KKyNkZWZpbmUgX0JJVFBBQ0tfU1RBUExFX1RFTVBMX0hfVU5J UVVFX0NPREVfCisKKy8qIE5vIGNvZGUgaGVyZSB5ZXQgKi8KKworI2VuZGlmIC8qIF9CSVRQ QUNLX1NUQVBMRV9URU1QTF9IX1VOSVFVRV9DT0RFXyAqLworCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisgKiBFbmQgb2YgQ29kZSwgYWxsb3dlZCB0byBiZSBpbmNsdWRlZCBvbmx5 IG9uY2UKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorICogUkVVU0FCTEUgQ09ERQorICoKKyAqIFRoaXMgY29kZSBjYW4gYmUgcmV1 c2VkIHdpdGggI2luY2x1ZGUgZGlyZWN0aXZlIGluIGEgZmlsZSBpZiBCSVRQQUNLX01BUktF UgorICogcmVkZWZpbmVkLiBUaGlzIGFsbG93IGNyZWF0aW9uIG9mIHNldmVyYWwgdHlwZXMg b2YgdmVjdG9ycyB3aXRoIGRpZmZlcmVudAorICogdHlwZXMgb2YgbWVtYmVycy4KKyAqCisg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgQklUUEFDS19JVEVNX1RZUEUK KyNlcnJvciAiQklUUEFDS19JVEVNX1RZUEUgbWFjcm8gaXMgaW5kZWZpbmVkLiIKKyNlbmRp ZgorI2lmbmRlZiBCSVRQQUNLX01BUktFUgorI2Vycm9yICJCSVRQQUNLX01BUktFUiBtYWNy byBpcyBpbmRlZmluZWQuIgorI2VuZGlmCisKKyNkZWZpbmUgaXRlbV90CQkgICBCSVRQQUNL X0lURU1fVFlQRQorI2RlZmluZSB3aWR0aF9mcm9tX3ZhbCBDcHBDb25jYXRUcmlwbGUyKHdp ZHRoXywgQklUUEFDS19NQVJLRVIsIF9mcm9tX3ZhbCkKKyNkZWZpbmUgd2lkdGhfdG9fbWFz ayAgQ3BwQ29uY2F0VHJpcGxlMih3aWR0aF8sIEJJVFBBQ0tfTUFSS0VSLCBfdG9fbWFzaykK KyNkZWZpbmUgYml0cGFja19wYWNrICAgQ3BwQ29uY2F0VHJpcGxlMihiaXRwYWNrXywgQklU UEFDS19NQVJLRVIsIF9wYWNrKQorI2RlZmluZSBiaXRwYWNrX3VucGFjayBDcHBDb25jYXRU cmlwbGUyKGJpdHBhY2tfLCBCSVRQQUNLX01BUktFUiwgX3VucGFjaykKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorICogRW5kIG9mIFJldXNhYmxlIENvZGUKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKworLyoKKyAqIERvbid0IGZvcmdldCB0byBpbmNsdWRlIHRoaXMg Y29kZSBpbiB5b3VyIGZpbGUgdGhhdCB1c2VzIHRoaXMgaGVhZGVyCisgKgorICogI2luY2x1 ZGUgImxpYi9iaXRwYWNrX3RlbXBsX3VuZGVmLmgiCisgKgorICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9saWIvYml0cGFja190ZW1wbC5oIGIvc3JjL2luY2x1ZGUvbGliL2JpdHBh Y2tfdGVtcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjNh NmUwNmMzMjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvYml0cGFja190 ZW1wbC5oCkBAIC0wLDAgKzEsMTQgQEAKKy8qCisgKiBiaXRwYWNrX3RlbXBsLmgKKyAqCisg Ki8KKworI2luY2x1ZGUgImJpdHBhY2tfc3RhcGxlX3RlbXBsLmgiCisKK2V4dGVybiBpdGVt X3Qgd2lkdGhfZnJvbV92YWwoaXRlbV90IHZhbCk7CitleHRlcm4gaXRlbV90IHdpZHRoX3Rv X21hc2soc2l6ZV90IHdpZHRoKTsKK2V4dGVybiBzaXplX3QgYml0cGFja19wYWNrKHVpbnQ4 X3QgKnBhY2ssIHNpemVfdCBjYXJldCwgaXRlbV90IGl0ZW0sCisJCQkJCQkgICBzaXplX3Qg c3pJdGVtV2lkdGgpOworZXh0ZXJuIGl0ZW1fdCBiaXRwYWNrX3VucGFjayhjb25zdCB1aW50 OF90ICpwYWNrLCBzaXplX3QgKmNhcmV0LCBzaXplX3Qgc3pJdGVtV2lkdGgpOworCisjaW5j bHVkZSAiYml0cGFja190ZW1wbF91bmRlZi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bGliL2JpdHBhY2tfdGVtcGxfdW5kZWYuaCBiL3NyYy9pbmNsdWRlL2xpYi9iaXRwYWNrX3Rl bXBsX3VuZGVmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVi Zjg2NGZmYTE1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tf dGVtcGxfdW5kZWYuaApAQCAtMCwwICsxLDUgQEAKKyN1bmRlZiBpdGVtX3QKKyN1bmRlZiB3 aWR0aF9mcm9tX3ZhbAorI3VuZGVmIHdpZHRoX3RvX21hc2sKKyN1bmRlZiBiaXRwYWNrX3Bh Y2sKKyN1bmRlZiBiaXRwYWNrX3VucGFjawpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGli L2JpdHBhY2tfdTE2LmggYi9zcmMvaW5jbHVkZS9saWIvYml0cGFja191MTYuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDVmYjZjNGIxN2IKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvYml0cGFja191MTYuaApAQCAtMCwwICsxLDEy IEBACisvKgorICogYml0cGFjay5oCisgKi8KKyNpZm5kZWYgX0JJVFBBQ0tfVTE2X0hfCisj ZGVmaW5lIF9CSVRQQUNLX1UxNl9IXworCisvKiBjbGFuZy1mb3JtYXQgb2ZmICovCisjaW5j bHVkZSAiYml0cGFja191MTZfY29uZmlnLmgiCisjaW5jbHVkZSAiYml0cGFja190ZW1wbC5o IgorLyogY2xhbmctZm9ybWF0IG9uICovCisKKyNlbmRpZiAvKiBfQklUUEFDS19VMTZfSF8g Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi9iaXRwYWNrX3UxNl9jb25maWcuaCBi L3NyYy9pbmNsdWRlL2xpYi9iaXRwYWNrX3UxNl9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWU2YzY0ZDRmZWUKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvaW5jbHVkZS9saWIvYml0cGFja191MTZfY29uZmlnLmgKQEAgLTAsMCArMSw2IEBA CisvKgorICogRmlsZTogdmVjdF91MTZfY29uZmlnLmgKKyAqLworCisjZGVmaW5lIEJJVFBB Q0tfSVRFTV9UWVBFIHVpbnQxNl90CisjZGVmaW5lIEJJVFBBQ0tfTUFSS0VSCSAgdTE2CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIvdmVjdF90ZW1wbC5oIGIvc3JjL2luY2x1ZGUv bGliL3ZlY3RfdGVtcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uOGVlYzZmMDY0YjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvdmVj dF90ZW1wbC5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBGaWxlOiB2ZWN0X3RlbXBsLmgK KyAqLworCisjaW5jbHVkZSAidmVjdF90ZW1wbF9zdGFwbGUuaCIKKworLyoKKyAqIFZlY3Rv cidzIGZ1bmN0aW9ucworICogS2VlcCB0aGlzIHNlY3Rpb24gZXF1YWwgdG8gdGhlIHNhbWUg c2VjdGlvbiBpbiB2ZWN0X3RlbXBsLmMKKyAqLworZXh0ZXJuIGludCB2ZWN0X2luaXQodmVj dF90ICp2LCBzaXplX3QgY2FwLCBpdGVtX3QgZXh0ZXJuYWxfbWVtb3J5W10pOworZXh0ZXJu IGludCB2ZWN0X2ZpbGwodmVjdF90ICp2LCBzaXplX3QgY250LCBjb25zdCBpdGVtX3QgKmlu KTsKK2V4dGVybiBpbnQgdmVjdF9yZXNlcnZlKHZlY3RfdCAqdiwgc2l6ZV90IHN6TmV3Q2Fw KTsKK2V4dGVybiBpbnQgdmVjdF9hcHBlbmQodmVjdF90ICp2ZWN0LCBpdGVtX3QgdmFsKTsK K2V4dGVybiB2b2lkIHZlY3RfcHJpbnQoY29uc3QgdmVjdF90ICphKTsKK2V4dGVybiBpbnQg dmVjdF9jb21wYXJlKGNvbnN0IHZlY3RfdCAqYSwgY29uc3QgdmVjdF90ICpiKTsKK2V4dGVy biBpbnQgdmVjdF9pbnNlcnQodmVjdF90ICp2LCBzaXplX3QgcG9zLCBpdGVtX3QgdmFsKTsK K2V4dGVybiB2b2lkIHZlY3RfY2xlYXIodmVjdF90ICp2KTsKKworLyoKKyAqIFVuaXF1ZSBz b3J0ZWQgdmVjdG9yJ3MgZnVuY3Rpb25zCisgKiBLZWVwIHRoaXMgc2VjdGlvbiBlcXVhbCB0 byB0aGUgc2FtZSBzZWN0aW9uIGluIHZlY3RfdGVtcGwuYworICovCitleHRlcm4gdXN2X2lu c19yZXNfdCB1c3ZfaW5zZXJ0KHVuaXFzb3J0dmVjdF90ICphLCBpdGVtX3QgdmFsKTsKK2V4 dGVybiB1c3Zfc3JjaF9yZXNfdCB1c3Zfc2VhcmNoKGNvbnN0IHVuaXFzb3J0dmVjdF90ICp1 c3YsIGl0ZW1fdCB2YWwpOworCisjaW5jbHVkZSAidmVjdF90ZW1wbF91bmRlZi5oIgpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi92 ZWN0X3RlbXBsX3N0YXBsZS5oIGIvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVtcGxfc3RhcGxl LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIxOTJjNmQ4MmEz Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVtcGxfc3RhcGxl LmgKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBGaWxlOiB2ZWN0X3N0YXBsZV90ZW1wbC5o CisgKi8KKworI2luY2x1ZGUgImMuaCIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICogTk9OUkVVU0FCTEUgQ09ERSwgYWxsb3dlZCB0byBiZSBpbmNsdWRlZCBvbmx5IG9uY2UK KyAqCisgKiBUaGlzIGNvZGUgc2hvdWxkIGFwcGVhciBvbmx5IG9uY2UgaW4gYSBmaWxlIChv ciBpbiBhIGNoYWluIG9mIGZpbGVzKQorICogaW5jbHVkaW5nIHRoaXMgaGVhZGVyIHdpdGgg I2luY2x1ZGUuIFNvLCB3ZSBwcm90ZWN0IGl0IGZyb20gZHVwbGljYXRlcyBieQorICogbWVh bnMgb2YgbWFjcm8KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaWZuZGVmIF9W RUNUX1NUQVBMRV9URU1QTF9IX1VOSVFVRV9DT0RFXworI2RlZmluZSBfVkVDVF9TVEFQTEVf VEVNUExfSF9VTklRVUVfQ09ERV8KKworLyoKKyAqIFNFQVJDSCBpbiBWZWN0b3Igb2YgVW5p cXVlIFNvcnRlZCBtZW1iZXJzCisgKi8KK3R5cGVkZWYgZW51bQoreworCVVTVl9TUkNIX0VS Uk9SID0gLTEsCisJVVNWX1NSQ0hfRk9VTkQgPSAwLAorCVVTVl9TUkNIX0VNUFRZLAorCVVT Vl9TUkNIX05PVF9GT1VORCwKKwlVU1ZfU1JDSF9OT1RfRk9VTkRfU01BTExFU1QsCisJVVNW X1NSQ0hfTk9UX0ZPVU5EX0xBUkdFU1QKK30gdXN2X3NyY2hfc3RhdF90OworCit0eXBlZGVm IHN0cnVjdAoreworCXVzdl9zcmNoX3N0YXRfdCBzdDsKKwlzaXplX3QgcG9zOyAvKiBwb3Np dGlvbiAoaW5kZXgpIG9mIGEgbWVtYmVyIHRoYXQgaXMgZXF1YWwgdG8gc2VhcmNoZWQgdmFs dWUKKwkJCQkgKiBvciB0aGF0IGlzIG5lYXJlc3QgZ3JlYXRlciBtZW1iZXIgKi8KK30gdXN2 X3NyY2hfcmVzX3Q7CisKKy8qCisgKiBJTlNFUlQgIGluIFZlY3RvciBvZiBVbmlxdWUgU29y dGVkIG1lbWJlcnMKKyAqLwordHlwZWRlZiBlbnVtCit7CisJVVNWX0lOU19FUlJPUiA9IC0x LAorCVVTVl9JTlNfRVhJU1RTID0gMCwKKwlVU1ZfSU5TX05FVworfSB1c3ZfaW5zX3N0YXRf dDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKwl1c3ZfaW5zX3N0YXRfdCBzdDsKKwlzaXplX3Qg cG9zOyAvKiBwb3NpdGlvbiAoaW5kZXgpIG9mIGEgbWVtYmVyIHRoYXQgd2FzIGluc2VydGVk IG9yIHRoYXQgcHJvdmVkCisJCQkJICogdG8gYmUgZXF1YWwgdG8gaW5zZXJ0ZWQgdmFsdWUK KwkJCQkgKi8KK30gdXN2X2luc19yZXNfdDsKKworI2VuZGlmIC8qIF9WRUNUX1NUQVBMRV9U RU1QTF9IX1VOSVFVRV9DT0RFXyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg KiBFbmQgb2YgQ29kZSwgYWxsb3dlZCB0byBiZSBpbmNsdWRlZCBvbmx5IG9uY2UKKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICog UkVVU0FCTEUgQ09ERQorICoKKyAqIFRoaXMgY29kZSBjYW4gYmUgcmV1c2VkIHdpdGggI2lu Y2x1ZGUgZGlyZWN0aXZlIGluIGEgZmlsZSBpZiBWRUNUX01BUktFUgorICogcmVkZWZpbmVk LiBUaGlzIGFsbG93IGNyZWF0aW9uIG9mIHNldmVyYWwgdHlwZXMgb2YgdmVjdG9ycyB3aXRo IGRpZmZlcmVudAorICogdHlwZXMgb2YgbWVtYmVycy4KKyAqCisgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisKKyNpZm5kZWYgVkVDVF9JVEVNX1RZUEUKKyNlcnJvciAiVkVDVF9JVEVN X1RZUEUgbWFjcm8gaXMgaW5kZWZpbmVkLiIKKyNlbmRpZgorCisjaWZuZGVmIFZFQ1RfSVRF TV9GT1JNQVRfU1BFQ0lGSUVSCisjZXJyb3IgIlZFQ1RfSVRFTV9GT1JNQVRfU1BFQ0lGSUVS IG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKworI2lmbmRlZiBWRUNUX01BUktFUgor I2Vycm9yICJWRUNUX01BUktFUiBtYWNybyBpcyBpbmRlZmluZWQuIgorI2VuZGlmCisKKyNp Zm5kZWYgVkVDVF9NRU1BTExPQ1NURVAKKyNlcnJvciAiVkVDVF9NRU1BTExPQ1NURVAgbWFj cm8gaXMgaW5kZWZpbmVkLiIKKyNlbmRpZgorCisjaWZuZGVmIFZFQ1RfTUFMTE9DCisjZXJy b3IgIlZFQ1RfTUFMTE9DIG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKworI2lmbmRl ZiBWRUNUX0ZSRUUKKyNlcnJvciAiVkVDVF9GUkVFIG1hY3JvIGlzIGluZGVmaW5lZC4iCisj ZW5kaWYKKworLyoKKyAqIFRoZSBWZWN0b3IgdHlwZSBpdHNlbGYsCisgKiBUaGUgVmVjdG9y IG9mIFVuaXF1ZSBTb3J0ZWQgSXRlbXMgdHlwZQorICogYW5kIHRoZSBJdGVtIHR5cGUKKyAq CisgKiBJbiBmYWN0LCB2ZWN0b3JzJ3MgbmFtZXMgbG9va3MgbGlrZSB2ZWN0X3UxNl90IHdo ZXJlOgorICogICAgIHZlY3RfIC0gY29tbW9uIHByZWZpeCwKKyAqICAgICB1MTYgLSBtYXJr ZXIsCisgKiAgICAgX3QgLSBzdWZmaXgKKyAqLworI2RlZmluZSB2ZWN0X3QJCSAgIENwcENv bmNhdFRyaXBsZTIodmVjdF8sIFZFQ1RfTUFSS0VSLCBfdCkKKyNkZWZpbmUgdW5pcXNvcnR2 ZWN0X3QgQ3BwQ29uY2F0VHJpcGxlMih1bmlxc29ydHZlY3RfLCBWRUNUX01BUktFUiwgX3Qp CisjZGVmaW5lIGl0ZW1fdAkJICAgVkVDVF9JVEVNX1RZUEUKKwordHlwZWRlZiBzdHJ1Y3QK K3sKKwlzaXplX3QgY250OwkJICAgLyogbnVtYmVyIG9mIGl0ZW1zICovCisJc2l6ZV90IGNh cDsJCSAgIC8qIGNhcGFjaXR5ICovCisJYm9vbCBtZW1faXNfb3V0ZXI7IC8qIGZsYWcgYWJv dXQgYW4gZXh0ZXJuYWwgbWVtb3J5IGlzIHVzZWQgKi8KKwlpdGVtX3QgKm07CQkgICAvKiBp dGVtcyAobWVtYmVycykgKi8KK30gdmVjdF90OworCit0eXBlZGVmIHZlY3RfdCB1bmlxc29y dHZlY3RfdDsKKworI2RlZmluZSB2ZWN0X2luaXQJCSAgIENwcENvbmNhdFRyaXBsZTIodmVj dF8sIFZFQ1RfTUFSS0VSLCBfaW5pdCkKKyNkZWZpbmUgdmVjdF9maWxsCQkgICBDcHBDb25j YXRUcmlwbGUyKHZlY3RfLCBWRUNUX01BUktFUiwgX2ZpbGwpCisjZGVmaW5lIHZlY3RfcmVz ZXJ2ZQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBWRUNUX01BUktFUiwgX3Jlc2VydmUp CisjZGVmaW5lIHZlY3RfYXBwZW5kCQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBWRUNU X01BUktFUiwgX2FwcGVuZCkKKyNkZWZpbmUgdmVjdF9wcmludAkJICAgQ3BwQ29uY2F0VHJp cGxlMih2ZWN0XywgVkVDVF9NQVJLRVIsIF9wcmludCkKKyNkZWZpbmUgdmVjdF9jb21wYXJl CSAgIENwcENvbmNhdFRyaXBsZTIodmVjdF8sIFZFQ1RfTUFSS0VSLCBfY29tcGFyZSkKKyNk ZWZpbmUgdmVjdF9pbnNlcnQJCSAgIENwcENvbmNhdFRyaXBsZTIodmVjdF8sIFZFQ1RfTUFS S0VSLCBfaW5zZXJ0KQorI2RlZmluZSB2ZWN0X2NsZWFyCQkgICBDcHBDb25jYXRUcmlwbGUy KHZlY3RfLCBWRUNUX01BUktFUiwgX2NsZWFyKQorCisjZGVmaW5lIHVzdl9pbnNlcnQgQ3Bw Q29uY2F0VHJpcGxlMih1c3ZfLCBWRUNUX01BUktFUiwgX2luc2VydCkKKyNkZWZpbmUgdXN2 X3NlYXJjaCBDcHBDb25jYXRUcmlwbGUyKHVzdl8sIFZFQ1RfTUFSS0VSLCBfc2VhcmNoKQor CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBFbmQgb2YgUmV1c2FibGUgQ29kZQor ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogRG9uJ3QgZm9yZ2V0IHRvIGlu Y2x1ZGUKKyAqIAkJI2luY2x1ZGUgInZlY3RfdGVtcGxfdW5kZWYuaCIKKyAqIGluIHlvdXIg ZmlsZSB0aGF0IHVzZXMgdGhpcyBoZWFkZXIKKyAqCisgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2xpYi92ZWN0X3RlbXBsX3VuZGVmLmggYi9zcmMvaW5jbHVkZS9saWIvdmVjdF90 ZW1wbF91bmRlZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41 OWI2OWYxOGI5OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3Rl bXBsX3VuZGVmLmgKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqIEZpbGU6IHZlY3RfdW5kZWYu aAorICovCisKKyN1bmRlZiB2ZWN0X3QKKyN1bmRlZiB1bmlxc29ydHZlY3RfdAorI3VuZGVm IGl0ZW1fdAorCisjdW5kZWYgVkVDVF9JVEVNX1RZUEUKKyN1bmRlZiBWRUNUX01BUktFUgor I3VuZGVmIFZFQ1RfQ3BwQ29uY2F0VHJpcGxlMgorCisjdW5kZWYgdmVjdF9pbml0CisjdW5k ZWYgdmVjdF9maWxsCisjdW5kZWYgdmVjdF9yZXNlcnZlCisjdW5kZWYgdmVjdF9hcHBlbmQK KyN1bmRlZiB2ZWN0X3ByaW50CisjdW5kZWYgdmVjdF9jb21wYXJlCisjdW5kZWYgdmVjdF9p bnNlcnQKKyN1bmRlZiB2ZWN0X2NsZWFyCisKKyN1bmRlZiB1c3ZfaW5zZXJ0CisjdW5kZWYg dXN2X3NlYXJjaAorCisjdW5kZWYgVkVDVF9QUklfRk9STUFUX1NQRUNJRklFUgpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi92ZWN0 X3UxNi5oIGIvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdTE2LmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVkZjgxYTQxN2Y0Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjL2luY2x1ZGUvbGliL3ZlY3RfdTE2LmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIEZp bGU6IHZlY3RfdTE2LmgKKyAqLworCisjaWZuZGVmIF9WRUNUX1UxNl9IXworI2RlZmluZSBf VkVDVF9VMTZfSF8KKworLyogY2xhbmctZm9ybWF0IG9mZiAqLworI2luY2x1ZGUgInZlY3Rf dTE2X2NvbmZpZy5oIgorI2luY2x1ZGUgInZlY3RfdGVtcGwuaCIKKy8qIGNsYW5nLWZvcm1h dCBvbiAqLworCisvKgorICogVHlwZXMgYXJlIHN1cHBvc2VkIHRvIGJlIGNyZWF0ZWQgY3Jl YXRlZCBieSB0aGlzIGZpbGUKKyAqICAgICB2ZWN0X3UxNl90CisgKiAgICAgaXRlbV91MTZf dAorICogICAgIHVuaXFzb3J0dmVjdF91MTZfdAorICovCisvKgorICogRnVuY3Rpb25zIGFy ZSBzdXBwb3NlZCB0byBiZSBjcmVhdGVkIGJ5IHRoaXMgZmlsZQorICogICAgIHZlY3RfdTE2 X2NyZWF0ZQorICogICAgIHZlY3RfdTE2X2NyZWF0ZV9maWxsZWQKKyAqICAgICB2ZWN0X3Ux Nl9yZXNlcnZlCisgKiAgICAgdmVjdF91MTZfYXBwZW5kCisgKiAgICAgdmVjdF91MTZfZGVz dHJveQorICogICAgIHZlY3RfdTE2X3ByaW50CisgKiAgICAgdmVjdF91MTZfY29tcGFyZQor ICogICAgIHZlY3RfdTE2X2luc2VydAorICogICAgIHZlY3RfdTE2X2NsZWFyCisgKiAgICAg dXN2X3UxNl9pbnNlcnQKKyAqICAgICB1c3ZfdTE2X3NlYXJjaAorICovCisKKyNlbmRpZiAv L19WRUNUX1UxNl9IXwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdTE2X2Nv bmZpZy5oIGIvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdTE2X2NvbmZpZy5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xM2E5MzI4NGU4ZgotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3UxNl9jb25maWcuaApAQCAtMCwwICsxLDEw IEBACisvKgorICogRmlsZTogdmVjdF91MTZfY29uZmlnLmgKKyAqLworCisjZGVmaW5lIFZF Q1RfSVRFTV9UWVBFCQkJICAgdWludDE2X3QKKyNkZWZpbmUgVkVDVF9JVEVNX0ZPUk1BVF9T UEVDSUZJRVIgUFJJdTE2CisjZGVmaW5lIFZFQ1RfTUFSS0VSCQkJCSAgIHUxNgorI2RlZmlu ZSBWRUNUX01FTUFMTE9DU1RFUAkJICAgNQorI2RlZmluZSBWRUNUX01BTExPQwkJCQkgICBt YWxsb2MKKyNkZWZpbmUgVkVDVF9GUkVFCQkJCSAgIGZyZWUKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L01ha2VmaWxlIGIvc3JjL3Rlc3QvTWFrZWZpbGUKaW5kZXggM2ViMGEwNmFiYjQuLmFi YThkYjFmNDgzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9NYWtlZmlsZQorKysgYi9zcmMvdGVz dC9NYWtlZmlsZQpAQCAtMTQsNiArMTQsNyBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9z cmMvTWFrZWZpbGUuZ2xvYmFsCiAKIFNVQkRJUlMgPSBcCiAJYXV0aGVudGljYXRpb24gXAor CWRmb3IgXAogCWlzb2xhdGlvbiBcCiAJbW9kdWxlcyBcCiAJcGVybCBcCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9kZm9yLy5naXRpZ25vcmUgYi9zcmMvdGVzdC9kZm9yLy5naXRpZ25vcmUK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBkNzdhNTEyMTZiCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvZGZvci8uZ2l0aWdub3JlCkBAIC0wLDAgKzEs MyBAQAordGVzdF9iaXRwYWNrX3UxNgordGVzdF91bmlxc29ydHZlY3RfdTE2Cit0ZXN0X3Zl Y3RfdTE2CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9kZm9yL01ha2VmaWxlIGIvc3JjL3Rlc3Qv ZGZvci9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u NWVmYzFhZjBhMjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9kZm9yL01ha2VmaWxl CkBAIC0wLDAgKzEsNDggQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEZpbGU6IHNyYy90 ZXN0L2Rmb3IvTWFrZWZpbGUKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YmRpciA9IHNy Yy90ZXN0L2Rmb3IKK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uCitkZm9yX2RpciA6PSAkKHRv cF9idWlsZGRpcikvc3JjL2JhY2tlbmQvbGliCisKK2luY2x1ZGUgJChkZm9yX2RpcikvTWFr ZWZpbGUuZGZvcgorCisjIEVuc3VyZSBkZXBlbmRlbmN5IHRyYWNraW5nIHdvcmtzCitPQkpT ICs9ICQoT0JKU19ERk9SKQorCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZp bGUuZ2xvYmFsCisKKyMgT2JqZWN0IGZpbGVzIG9mIHZlY3QsIGJpdHBhY2sgYW5kIGRmb3Ig dXNlZCBieSB0aGVzZSB1bml0LXRlc3RzIGFyZSBpbiB0aGUgc2FtZQorIyBkaXJlY3Rvcnkg YXMgdGhpcyBNYWtlZmlsZS4gVGVzdHMgZG9uJ3QgdXNlIG9uZXMgZnJvbSBzcmMvYmFja2Vu ZC9saWIgYW5kIGNvbXBpbGUKKyMgZGlmZmVyZW50IG9uZXMgZm9yIHRoZW1zZWx2ZXMuCisk KGluZm8gVXNlIE9CSlNfREZPUj0kKE9CSlNfREZPUikgZnJvbSBjdXJyZW50IGRpcmVjdG9y eSAkKHN1YmRpcikuIFwKKyAgICAgICBUaGV5IGFyZSBidWlsdCBvbiBzb3VyY2VzIGZyb20g JChkZm9yX2RpcikpCisKKyQoT0JKU19ERk9SKTogJS5vOiAkKGRmb3JfZGlyKS8lLmMKKwlA aWYgdGVzdCAhIC1kICQoREVQRElSKTsgdGhlbiBta2RpciAtcCAkKERFUERJUik7IGZpCisJ JChDQykgJChDRkxBR1MpICQoQ1BQRkxBR1MpIC1ERlJPTlRFTkQgLWMgJDwgLU1NRCAtTVAg LU1GICQoREVQRElSKS8kKCpGKS5QbyAtbyAkQAorCitMSUJUQVBfT0JKUyA9ICQodG9wX2J1 aWxkZGlyKS9zcmMvdGVzdC9saWJ0YXAvdGFwLm8KKworVEVTVFM9IHRlc3RfdmVjdF91MTYg XAorICAgICAgIHRlc3RfdW5pcXNvcnR2ZWN0X3UxNiBcCisgICAgICAgdGVzdF9iaXRwYWNr X3UxNgorCiskKFRFU1RTOiU9JS5vKTogQ1BQRkxBR1MgKz0gLUkkKHRvcF9idWlsZGRpcikv c3JjL3Rlc3QgLURGUk9OVEVORAorCithbGw6ICQoVEVTVFMpCisKKyQoVEVTVFMpOiAlOiAl Lm8gJChMSUJUQVBfT0JKUykgJChPQkpTX0RGT1IpCisJJChDQykgJChDRkxBR1MpICQoQ1BQ RkxBR1MpICReICQoTERGTEFHUykgJChMSUJTKSAtbyAkQCQoWCkKKworY2hlY2stdW5pdDog JChURVNUUykKKwllY2hvICIjICsrKyBVbml0IHRlc3RzIGluICQoc3ViZGlyKSArKysiICYm IFwKKwljZCAkKHRvcF9idWlsZGRpcikvJChzdWJkaXIpICYmIFwKKwkgICAkKFBST1ZFKSAk KFBST1ZFX0ZMQUdTKSBcCisJICAgIC12ICQoYWRkcHJlZml4IC4vLCQoaWYgJChQUk9WRV9U RVNUUyksICQoUFJPVkVfVEVTVFMpLCAkKFRFU1RTKSkpCisKK2NoZWNrOiBjaGVjay11bml0 CisKK2NsZWFuIGRpc3RjbGVhbjoKKwlybSAtcmYgJChURVNUUykgKi5vCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9kZm9yL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvZGZvci9tZXNvbi5idWls ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2U3NjJjNTI0MzAK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9kZm9yL21lc29uLmJ1aWxkCkBAIC0wLDAg KzEsNjIgQEAKK2Rmb3JfZGlyID0gam9pbl9wYXRocyhtZXNvbi5wcm9qZWN0X3NvdXJjZV9y b290KCksICdzcmMvYmFja2VuZC9saWInKQorCisjIE9iamVjdCBmaWxlcyBvZiB2ZWN0LCBi aXRwYWNrIGFuZCBkZm9yIHVzZWQgYnkgdGhlc2UgdW5pdC10ZXN0cyBhcmUgaW4gdGhlIHNh bWUKKyMgZGlyZWN0b3J5IGFzIHRoaXMgbWVzb24uYnVpbGQuIFRlc3RzIGRvbid0IHVzZSBv bmVzIGZyb20gc3JjL2JhY2tlbmQvbGliIGFuZAorIyBjb21waWxlIGRpZmZlcmVudCBvbmVz IGZvciB0aGVtc2VsdmVzLiBJbiBNZXNvbi9OaW5qYSBidWlsZCBzeXN0ZW0gd2UgdW5pdGUK KyMgdGhlbSBpbnRvIGEgc3RhdGljIGxpYnJhcnkuCisKK2Rmb3Jfc291cmNlcyA9IGZpbGVz KAorICBqb2luX3BhdGhzKGRmb3JfZGlyLCAndmVjdF91MTYuYycpLAorICBqb2luX3BhdGhz KGRmb3JfZGlyLCAnYml0cGFja191MTYuYycpLAorKQorCitkZm9yX3Rlc3RfbGliID0gc3Rh dGljX2xpYnJhcnkoCisgICdkZm9yX3Rlc3RfbGliJywKKyAgZGZvcl9zb3VyY2VzLAorICBp bmNsdWRlX2RpcmVjdG9yaWVzOiBbCisgICAgaW5jbHVkZV9kaXJlY3RvcmllcygnLi4vLi4v Li4nKSwgIyB0b3BfYnVpbGRkaXIKKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCcuLi8nKSwg ICAgICAjIHNyYy90ZXN0CisgICAgcG9zdGdyZXNfaW5jLCAgICAgICAgICAgICAgICAgICAg IyBzcmMvaW5jbHVkZSBoZXJlCisgIF0sCisgIGNfYXJnczogWyctREZST05URU5EJ10sCisp CisKKyMgV2UgYWxzbyBidWlsZCBsaWJ0YXAgYXMgYSBzdGF0aWMgbGlicmFyeQorCitsaWJ0 YXAgPSBzdGF0aWNfbGlicmFyeSgKKyAgJ3RhcCcsCisgICcuLi8uLi90ZXN0L2xpYnRhcC90 YXAuYycsCisgIGluY2x1ZGVfZGlyZWN0b3JpZXM6CisgICAgaW5jbHVkZV9kaXJlY3Rvcmll cygnLi4vLi4vLi4nKSwgIyB0b3BfYnVpbGRkaXIKKykKKworIyBFYWNoIHRlc3QgaXMgYW4g RUxGIGV4ZWN1dGFibGUKKwordGVzdF9uYW1lcyA9IFsKKyAgJ3Rlc3RfdmVjdF91MTYnLAor ICAndGVzdF91bmlxc29ydHZlY3RfdTE2JywKKyAgJ3Rlc3RfYml0cGFja191MTYnLAorXQor Citmb3JlYWNoIHQgOiB0ZXN0X25hbWVzCisgIGV4ZSA9IGV4ZWN1dGFibGUoCisgICAgdCwK KyAgICB0ICsgJy5jJywKKyAgICBsaW5rX3dpdGg6IFsKKyAgICAgIGRmb3JfdGVzdF9saWIs CisgICAgICBsaWJ0YXAsCisgICAgICBjb21tb25fc3RhdGljLCAjIFByb3ZpZGVzIHBnX3By aW50ZiBhbmQgb3RoZXIgY29tbW9uIHV0aWxpdGllcworICAgICAgcGdwb3J0X3N0YXRpYywg ICAgIyBQcm92aWRlcyBPUy1wb3J0YWJpbGl0eSBmdW5jdGlvbnMKKyAgICBdLAorCWRlcGVu ZGVuY2llczogW29zX2RlcHMsIGxpYmludGxdLAorICAgIGluY2x1ZGVfZGlyZWN0b3JpZXM6 IFsKKyAgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4uLy4uLy4uJyksICMgdG9wX2J1aWxk ZGlyCisgICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCcuLi8nKSwgICAgICAjIHNyYy90ZXN0 CisgICAgICBwb3N0Z3Jlc19pbmMsICAgICAgICAgICAgICAgICAgICAjIHNyYy9pbmNsdWRl IGhlcmUKKyAgICBdLAorICAgICMgQmFja2VuZCBjb2RlIG9mdGVuIHJlcXVpcmVzIHRoZXNl IGFyZ3VtZW50cyB0byBpZGVudGlmeSBhcyBiYWNrZW5kCisgICAgY19hcmdzOiBbJy1ERlJP TlRFTkQnXSwKKyAgKQorCisgIHRlc3QodCwgZXhlLCBzdWl0ZTogJ2Rmb3InKQorZW5kZm9y ZWFjaApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvZGZvci90ZXN0LmggYi9zcmMvdGVzdC9kZm9y L3Rlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjZjNTRh YWQ5NWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9kZm9yL3Rlc3QuaApAQCAtMCww ICsxLDMxIEBACisKKy8qCisgKiB0ZXN0LmgKKyAqLworI2lmbmRlZiBfVEVTVF9IXworI2Rl ZmluZSBfVEVTVF9IXworCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxzdGRp by5oPgorCitzdGF0aWMgaW5saW5lIHZvaWQKK3Rlc3RfcHJpbnRfdThfYXJyYXkoc2l6ZV90 IGNudCwgdWludDhfdCBhcnJbXSwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlwcmludGYoIiVz KGhleCk6IHsgIiwgbmFtZSk7CisJZm9yIChzaXplX3QgaiA9IDA7IGogPCBjbnQgLSAxOyBq KyspCisJCXByaW50ZigiJTAyIiBQUkl4OCAiLCAiLCBhcnJbal0pOworCisJcHJpbnRmKCIl MDIiIFBSSXg4ICIgfVxuIiwgYXJyW2NudCAtIDFdKTsKK30KKworc3RhdGljIGlubGluZSB2 b2lkCit0ZXN0X3ByaW50X3UxNl9hcnJheShzaXplX3QgY250LCB1aW50MTZfdCBhcnJbXSwg Y29uc3QgY2hhciAqbmFtZSkKK3sKKwlwcmludGYoIiVzKGhleCk6IHsgIiwgbmFtZSk7CisJ Zm9yIChzaXplX3QgaiA9IDA7IGogPCBjbnQgLSAxOyBqKyspCisJCXByaW50ZigiJTA0IiBQ Ukl4MTYgIiwgIiwgYXJyW2pdKTsKKworCXByaW50ZigiJTA0IiBQUkl4MTYgIn1cbiIsIGFy cltjbnQgLSAxXSk7Cit9CisKKyNlbmRpZiAvKiBfVEVTVF9IXyAqLwpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2Rmb3IvdGVzdF9iaXRwYWNr X3UxNi5jIGIvc3JjL3Rlc3QvZGZvci90ZXN0X2JpdHBhY2tfdTE2LmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRhODRiYjJmMjJlCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvZGZvci90ZXN0X2JpdHBhY2tfdTE2LmMKQEAgLTAsMCArMSwzNTcg QEAKKy8qCisgKiB0ZXN0X2JpdHBhY2suYworICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgor I2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAibGliL2JpdHBhY2tfdTE2LmgiCisj aW5jbHVkZSAibGliL3ZlY3RfdTE2LmgiCisjaW5jbHVkZSAibGlidGFwL3RhcC5oIgorCitp bnQKK21haW4odm9pZCkKK3sKKwlwbGFuKDE5NSk7CisJcHJpbnRmKCI9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgTUFTSyBB TkQgV0lEVEggQ0FMQ1VMQVRJT05cbiIpOworCXsKKwkJY21wX29rKDEsICI9PSIsICh1aW50 MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHgwMCksCisJCQkgICAiV2lkdGggb2YgMDAgaXMg ZXF1YWwgdG8gMSBiaXQuIik7CisJCWNtcF9vaygyLCAiPT0iLCAodWludDE2X3Qpd2lkdGhf dTE2X2Zyb21fdmFsKDB4MDIpLAorCQkJICAgIldpZHRoIG9mIDAyIGlzIGVxdWFsIHRvIDIg Yml0cy4iKTsKKwkJY21wX29rKDIsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92 YWwoMHgwMiksCisJCQkgICAiV2lkdGggb2YgMDIgaXMgZXF1YWwgdG8gMiBiaXRzLiIpOwor CQljbXBfb2soMiwgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDAzKSwK KwkJCSAgICJXaWR0aCBvZiAwMyBpcyBlcXVhbCB0byAyIGJpdHMuIik7CisJCWNtcF9vaygz LCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFsKDB4MDQpLAorCQkJICAgIldp ZHRoIG9mIDA0IGlzIGVxdWFsIHRvIDMgYml0cy4iKTsKKwkJY21wX29rKDMsICI9PSIsICh1 aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHgwNSksCisJCQkgICAiV2lkdGggb2YgMDUg aXMgZXF1YWwgdG8gMyBiaXRzLiIpOworCQljbXBfb2soNCwgIj09IiwgKHVpbnQxNl90KXdp ZHRoX3UxNl9mcm9tX3ZhbCgweDA4KSwKKwkJCSAgICJXaWR0aCBvZiAwOCBpcyBlcXVhbCB0 byA0IGJpdHMuIik7CisJCWNtcF9vayg0LCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zy b21fdmFsKDB4MEEpLAorCQkJICAgIldpZHRoIG9mIDEwIGlzIGVxdWFsIHRvIDQgYml0cy4i KTsKKwkJY21wX29rKDQsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHgw RiksCisJCQkgICAiV2lkdGggb2YgMTUgaXMgZXF1YWwgdG8gNCBiaXRzLiIpOworCQljbXBf b2soNSwgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDEwKSwKKwkJCSAg ICJXaWR0aCBvZiAxNiBpcyBlcXVhbCB0byA1IGJpdHMuIik7CisJCWNtcF9vayg1LCAiPT0i LCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFsKDB4MUYpLAorCQkJICAgIldpZHRoIG9m IDMxIGlzIGVxdWFsIHRvIDUgYml0cy4iKTsKKwkJY21wX29rKDYsICI9PSIsICh1aW50MTZf dCl3aWR0aF91MTZfZnJvbV92YWwoMHgyMCksCisJCQkgICAiV2lkdGggb2YgMzIgaXMgZXF1 YWwgdG8gNiBiaXRzLiIpOworCQljbXBfb2soNywgIj09IiwgKHVpbnQxNl90KXdpZHRoX3Ux Nl9mcm9tX3ZhbCgweDQwKSwKKwkJCSAgICJXaWR0aCBvZiA2NCBpcyBlcXVhbCB0byA3IGJp dHMuIik7CisJCWNtcF9vayg4LCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFs KDB4ODApLAorCQkJICAgIldpZHRoIG9mIDEyOCBpcyBlcXVhbCB0byA4IGJpdHMuIik7CisJ CWNtcF9vaygxMywgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDEwMDAp LAorCQkJICAgIldpZHRoIG9mIDB4MDEwMDAgaXMgZXF1YWwgdG8gMTMgYml0cy4iKTsKKwkJ Y21wX29rKDE2LCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFsKDB4OEFCQyks CisJCQkgICAiV2lkdGggb2YgMHgwOEFCQyBpcyBlcXVhbCB0byAxNSBiaXRzLiIpOworCisJ CWNtcF9vaygweDEsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfdG9fbWFzaygxKSwKKwkJ CSAgICJNYXNrIGZyb20gd2lkdGggMSBpcyAwMDAwMDAwMShiaW4pLiIpOworCQljbXBfb2so MHgzLCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X3RvX21hc2soMiksCisJCQkgICAiTWFz ayBmcm9tIHdpZHRoIDIgaXMgMDAwMDAwMTEoYmluKS4iKTsKKwkJY21wX29rKDB4NywgIj09 IiwgKHVpbnQxNl90KXdpZHRoX3UxNl90b19tYXNrKDMpLAorCQkJICAgIk1hc2sgZnJvbSB3 aWR0aCAzIGlzIDAwMDAwMTExKGJpbikuIik7CisJCWNtcF9vaygweDNGRiwgIj09IiwgKHVp bnQxNl90KXdpZHRoX3UxNl90b19tYXNrKDEwKSwKKwkJCSAgICJNYXNrIGZyb20gd2lkdGgg MTAgaXMgMHgzRkYoYmluKS4iKTsKKwkJY21wX29rKDB4N0ZGRiwgIj09IiwgKHVpbnQxNl90 KXdpZHRoX3UxNl90b19tYXNrKDE1KSwKKwkJCSAgICJNYXNrIGZyb20gd2lkdGggMTUgaXMg MHg3RkZGKGJpbikuIik7CisJCWNtcF9vaygweEZGRkYsICI9PSIsICh1aW50MTZfdCl3aWR0 aF91MTZfdG9fbWFzaygxNiksCisJCQkgICAiTWFzayBmcm9tIHdpZHRoIDE2IGlzIDB4RkZG RihiaW4pLiIpOworCX0KKwlwcmludGYoIlRlc3QgTUFTSyBBTkQgV0lEVEggQ0FMQ1VMQVRJ T04gUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVzdCBCSVRQQUNLIFBBQ0tJTkdc biIpOworCXsKKyNkZWZpbmUgU0laRU9GUEFDSyA2MFUKKwkJdWludDhfdCBwYWNrW1NJWkVP RlBBQ0tdOworCQlzaXplX3QgY2FyZXQgPSAwOworCQltZW1zZXQocGFjaywgMCwgU0laRU9G UEFDSyk7CisJCS8qCisJCSAqIFNpbmNlIHdlIGltcGxlbWVudGVkIHRoZSBudWxpZnlpbmcg b2YgYml0cyBhY2NvcmRpbmcgdG8gYSBtYXNrIChzZWUKKwkJICogdGhlIGJpdHBhY2sgZnVu Y3Rpb24pLCB3ZSBjYW4gdXNlIGV2ZW4gYSBwYWNrIG5vdCBwcmVwYXJlZCBpbiBhZHZhbmNl CisJCSAqIGFuZCBjb21wcmlzaW5nIGdhcmJhZ2UuIEJ1dCB3ZSB3YW50IHRvIGNoZWNrIHZh bHVlIG9mIGVhY2ggYnl0ZSBvZgorCQkgKiB0aGUgcGFjayBpbiB0aGlzIHRlc3QgYW5kIHdl IHNpbXBsaWZ5IHRoaXMgdGFzayBieSB1c2luZyBhIHplcm9lZAorCQkgKiBwYWNrLgorCQkg Ki8KKworCQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykgeworCQkJY2FyZXQgPSBiaXRw YWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAxLCAxKTsKKwkJCWNhcmV0ID0gYml0cGFja191 MTZfcGFjayhwYWNrLCBjYXJldCwgMCwgMSk7CisJCX0KKwkJY21wX29rKDE2LCAiPT0iLCBj YXJldCwgIkNhcmV0ID0gMTYuIik7CisJCWNtcF9vaygweDU1LCAiPT0iLCBwYWNrWzBdLCAi U2F2ZWQgYml0LWJ5LWJpdDogZmlyc3QgYnl0ZSBpcyAweDU1LiIpOworCQljbXBfb2soMHg1 NSwgIj09IiwgcGFja1sxXSwgIlNhdmVkIGJpdC1ieS1iaXQ6IHNlY29uZCBieXRlIGlzIDB4 NTUuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqKyspIHsKKwkJCWNhcmV0ID0g Yml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHgwMiAvKiAxMChiaW4pICovLCAyKTsK KwkJfQorCisJCWNtcF9vaygzMiwgIj09IiwgY2FyZXQsICJDYXJldCA9IDMyLiIpOworCQlj bXBfb2soMHhBQSwgIj09IiwgcGFja1syXSwKKwkJCSAgICJTYXZlZCB3aXRoIHR3by1iaXQg d2lkdGg6IGZpcnN0IGJ5dGUgaXMgMHhBQS4iKTsKKwkJY21wX29rKDB4QUEsICI9PSIsIHBh Y2tbM10sCisJCQkgICAiU2F2ZWQgd2l0aCB0d28tYml0IHdpZHRoOiBzZWNvbmQgYnl0ZSBp cyAweEFBLiIpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgODsgaisrKSB7CisJCQljYXJl dCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4MDUgLyogMTAxKGJpbikgKi8s IDMpOworCQkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDAyIC8q IDAxMChiaW4pICovLCAzKTsKKwkJfQorCisJCWNtcF9vayg4MCwgIj09IiwgY2FyZXQsICJD YXJldCA9IDgwLiIpOworCQljbXBfb2soMHg1NSwgIj09IiwgcGFja1s0XSwKKwkJCSAgICJT YXZlZCB3aXRoIHRocmVlLWJpdCB3aWR0aDogZmlyc3QgYnl0ZSBpcyAweDU1LiIpOworCQlj bXBfb2soMHg1NSwgIj09IiwgcGFja1s1XSwKKwkJCSAgICJTYXZlZCB3aXRoIHRocmVlLWJp dCB3aWR0aDogc2Vjb25kIGJ5dGUgaXMgMHg1NS4iKTsKKwkJY21wX29rKDB4NTUsICI9PSIs IHBhY2tbNl0sCisJCQkgICAiU2F2ZWQgd2l0aCB0aHJlZS1iaXQgd2lkdGg6IHNlY29uZCBi eXRlIGlzIDB4NTUuIik7CisJCWNtcF9vaygweDU1LCAiPT0iLCBwYWNrWzddLAorCQkJICAg IlNhdmVkIHdpdGggdGhyZWUtYml0IHdpZHRoOiBmaXJzdCBieXRlIGlzIDB4NTUuIik7CisJ CWNtcF9vaygweDU1LCAiPT0iLCBwYWNrWzhdLAorCQkJICAgIlNhdmVkIHdpdGggdGhyZWUt Yml0IHdpZHRoOiBzZWNvbmQgYnl0ZSBpcyAweDU1LiIpOworCQljbXBfb2soMHg1NSwgIj09 IiwgcGFja1s5XSwKKwkJCSAgICJTYXZlZCB3aXRoIHRocmVlLWJpdCB3aWR0aDogc2Vjb25k IGJ5dGUgaXMgMHg1NS4iKTsKKworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywg Y2FyZXQsIDB4MEIsIDQpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2Fy ZXQsIDB4MEMsIDQpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQs IDB4MEQsIDQpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4 MEUsIDQpOworCisJCWNtcF9vayg5NiwgIj09IiwgY2FyZXQsICJDYXJldCA9IDk2LiIpOwor CQljbXBfb2soMHhDQiwgIj09IiwgcGFja1sxMF0sCisJCQkgICAiU2F2ZWQgd2l0aCBmb3Vy LWJpdCB3aWR0aDogZmlyc3QgYnl0ZSBpcyAweENCLiIpOworCQljbXBfb2soMHhFRCwgIj09 IiwgcGFja1sxMV0sCisJCQkgICAiU2F2ZWQgd2l0aCBmb3VyLWJpdCB3aWR0aDogc2Vjb25k IGJ5dGUgaXMgMHhFRC4iKTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykgewor CQkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDA3IC8qIDAwMTEx YiAqLywgNSk7CisJCX0KKworCQljbXBfb2soMTM2LCAiPT0iLCBjYXJldCwgIkNhcmV0ID0g MTM2LiIpOworCQljbXBfb2soMHhFNywgIj09IiwgcGFja1sxMl0sCisJCQkgICAiU2F2ZWQg d2l0aCBmaXZlLWJpdCB3aWR0aDogZmlyc3QgYnl0ZSBpcyAweEU3LiIpOworCQljbXBfb2so MHg5QywgIj09IiwgcGFja1sxM10sCisJCQkgICAiU2F2ZWQgd2l0aCBmaXZlLWJpdCB3aWR0 aDogc2Vjb25kIGJ5dGUgaXMgMHg5Qy4iKTsKKwkJY21wX29rKDB4NzMsICI9PSIsIHBhY2tb MTRdLAorCQkJICAgIlNhdmVkIHdpdGggZml2ZS1iaXQgd2lkdGg6IHRoaXJkIGJ5dGUgaXMg MHg3My4iKTsKKwkJY21wX29rKDB4Q0UsICI9PSIsIHBhY2tbMTVdLAorCQkJICAgIlNhdmVk IHdpdGggZml2ZS1iaXQgd2lkdGg6IGZvdXJ0aCBieXRlIGlzIDB4Q0UuIik7CisJCWNtcF9v aygweDM5LCAiPT0iLCBwYWNrWzE2XSwKKwkJCSAgICJTYXZlZCB3aXRoIGZpdmUtYml0IHdp ZHRoOiBmaWZ0aCBieXRlIGlzIDB4MzkuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA0 OyBqKyspCisJCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4MDcg LyogMDAwMTExYiAqLywgNik7CisKKwkJY21wX29rKDE2MCwgIj09IiwgY2FyZXQsICJDYXJl dCA9IDE2MC4iKTsKKwkJY21wX29rKDB4QzcsICI9PSIsIHBhY2tbMTddLAorCQkJICAgIlNh dmVkIHdpdGggc2l4LWJpdCB3aWR0aDogZmlyc3QgYnl0ZSBpcyAweEM3LiIpOworCQljbXBf b2soMHg3MSwgIj09IiwgcGFja1sxOF0sCisJCQkgICAiU2F2ZWQgd2l0aCBzaXgtYml0IHdp ZHRoOiBzZWNvbmQgYnl0ZSBpcyAweDcxLiIpOworCQljbXBfb2soMHgxQywgIj09IiwgcGFj a1sxOV0sCisJCQkgICAiU2F2ZWQgd2l0aCBzaXgtYml0IHdpZHRoOiB0aGlyZCBieXRlIGlz IDB4MUMuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqKyspCisJCQljYXJldCA9 IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4NTcgLyogMTAxMDExMWIgKi8sIDcp OworCisJCWNtcF9vaygyMTYsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAyMTYuIik7CisJCWNt cF9vaygweEQ3LCAiPT0iLCBwYWNrWzIwXSwKKwkJCSAgICJTYXZlZCB3aXRoIHNldmVuLWJp dCB3aWR0aDogYnl0ZTEgaXMgMHhENy4iKTsKKwkJY21wX29rKDB4RUIsICI9PSIsIHBhY2tb MjFdLAorCQkJICAgIlNhdmVkIHdpdGggc2V2ZW4tYml0IHdpZHRoOiBieXRlMiBpcyAweEVC LiIpOworCQljbXBfb2soMHhGNSwgIj09IiwgcGFja1syMl0sCisJCQkgICAiU2F2ZWQgd2l0 aCBzZXZlbi1iaXQgd2lkdGg6IGJ5dGUzIGlzIDB4RjUuIik7CisJCWNtcF9vaygweDdBLCAi PT0iLCBwYWNrWzIzXSwKKwkJCSAgICJTYXZlZCB3aXRoIHNldmVuLWJpdCB3aWR0aDogYnl0 ZTQgaXMgMHg3QS4iKTsKKwkJY21wX29rKDB4QkQsICI9PSIsIHBhY2tbMjRdLAorCQkJICAg IlNhdmVkIHdpdGggc2V2ZW4tYml0IHdpZHRoOiBieXRlNSBpcyAweEJELiIpOworCQljbXBf b2soMHg1RSwgIj09IiwgcGFja1syNV0sCisJCQkgICAiU2F2ZWQgd2l0aCBzZXZlbi1iaXQg d2lkdGg6IGJ5dGU2IGlzIDB4NUUuIik7CisJCWNtcF9vaygweEFGLCAiPT0iLCBwYWNrWzI2 XSwKKwkJCSAgICJTYXZlZCB3aXRoIHNldmVuLWJpdCB3aWR0aDogYnl0ZTcgaXMgMHhBRi4i KTsKKworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4QkEsIDgp OworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4REMsIDgpOwor CQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4RkUsIDgpOworCisJ CWNtcF9vaygyNDAsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAyNDAuIik7CisJCWNtcF9vaygw eEJBLCAiPT0iLCBwYWNrWzI3XSwKKwkJCSAgICJTYXZlZCB3aXRoIGVpZ2h0LWJpdCB3aWR0 aDogYnl0ZTEgaXMgMHhCQS4iKTsKKwkJY21wX29rKDB4REMsICI9PSIsIHBhY2tbMjhdLAor CQkJICAgIlNhdmVkIHdpdGggZWlnaHQtYml0IHdpZHRoOiBieXRlMiBpcyAweERDLiIpOwor CQljbXBfb2soMHhGRSwgIj09IiwgcGFja1syOV0sCisJCQkgICAiU2F2ZWQgd2l0aCBlaWdo dC1iaXQgd2lkdGg6IGJ5dGUzIGlzIDB4RkUuIik7CisKKwkJY2FyZXQgPSBiaXRwYWNrX3Ux Nl9wYWNrKAorCQkJcGFjaywgY2FyZXQsIDB4MDAsCisJCQk0KTsgLyogbW92ZSB0byA0IGJp dCBmb3IgZnVuIGFuZCBhZ2FpbiBjb250aW51ZSB3aXRoIDgtYml0IHdpZHRoICovCisJCWNh cmV0ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHgzMiwgOCk7CisJCWNhcmV0 ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHg1NCwgOCk7CisJCWNhcmV0ID0g Yml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHg3NiwgOCk7CisJCWNhcmV0ID0gYml0 cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHg5OCwgOCk7CisKKwkJY21wX29rKDI3Niwg Ij09IiwgY2FyZXQsICJDYXJldCA9IDI3Ni4iKTsKKwkJY21wX29rKDB4MjAsICI9PSIsIHBh Y2tbMzBdLAorCQkJICAgIlNhdmVkIHdpdGggZWlnaHQtYml0IHdpZHRoIGJ1dCBzaGlmdGVk IGJ5IDQ6IGlzIDB4MjAuIik7CisJCWNtcF9vaygweDQzLCAiPT0iLCBwYWNrWzMxXSwKKwkJ CSAgICJTYXZlZCB3aXRoIGVpZ2h0LWJpdCB3aWR0aCBidXQgc2hpZnRlZCBieSA0OiBpcyAw eDQzLiIpOworCQljbXBfb2soMHg2NSwgIj09IiwgcGFja1szMl0sCisJCQkgICAiU2F2ZWQg d2l0aCBlaWdodC1iaXQgd2lkdGggYnV0IHNoaWZ0ZWQgYnkgNDogaXMgMHg2NS4iKTsKKwkJ Y21wX29rKDB4ODcsICI9PSIsIHBhY2tbMzNdLAorCQkJICAgIlNhdmVkIHdpdGggZWlnaHQt Yml0IHdpZHRoIGJ1dCBzaGlmdGVkIGJ5IDQ6IGlzIDB4ODcuIik7CisJCWNtcF9vaygweDA5 LCAiPT0iLCBwYWNrWzM0XSwKKwkJCSAgICJTYXZlZCB3aXRoIGVpZ2h0LWJpdCB3aWR0aCBi dXQgc2hpZnRlZCBieSA0OiBpcyAweDA5LiIpOworCisJCWNhcmV0ID0gYml0cGFja191MTZf cGFjaygKKwkJCXBhY2ssIGNhcmV0LCAweDAwLAorCQkJNCk7IC8qIG1vdmUgdG8gNCBiaXQg Zm9yIGZ1biBhbmQgYWdhaW4gY29udGludWUgd2l0aCA4LWJpdCB3aWR0aCAqLworCQljbXBf b2soMjgwLCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMjgwLiIpOworCQljbXBfb2soMHgwOSwg Ij09IiwgcGFja1szNF0sCisJCQkgICAiQWRkZWQgcGFkZGluZyAweDAsIHdpZHRoPTQuIEJ5 dGUgaW4gcGFjayBpcyBzdGlsbCAweDA5LiIpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwg MzsgaisrKQorCQkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDE2 NzEgLyogMTAxMTAwMTExMDAwMWIgKi8sCisJCQkJCQkJCQkgMTMpOworCisJCWNtcF9vaygz MTksICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAzMTkuIik7CisJCWNtcF9vaygweDcxLCAiPT0i LCBwYWNrWzM1XSwgIlNhdmVkIHdpdGggdGhpcnRlZW4tYml0IHdpZHRoOiBpcyAweDcxLiIp OworCQljbXBfb2soMHgzNiwgIj09IiwgcGFja1szNl0sICJTYXZlZCB3aXRoIHRoaXJ0ZWVu LWJpdCB3aWR0aDogaXMgMHgzNi4iKTsKKwkJY21wX29rKDB4Q0UsICI9PSIsIHBhY2tbMzdd LCAiU2F2ZWQgd2l0aCB0aGlydGVlbi1iaXQgd2lkdGg6IGlzIDB4Q0UuIik7CisJCWNtcF9v aygweEM2LCAiPT0iLCBwYWNrWzM4XSwgIlNhdmVkIHdpdGggdGhpcnRlZW4tYml0IHdpZHRo OiBpcyAweEM2LiIpOworCQljbXBfb2soMHg1OSwgIj09IiwgcGFja1szOV0sICJTYXZlZCB3 aXRoIHRoaXJ0ZWVuLWJpdCB3aWR0aDogaXMgMHg1OS4iKTsKKworCQljYXJldCA9IGJpdHBh Y2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4MSAvKiBQQURESU5HICovLCAxKTsKKwkJY21w X29rKDMyMCwgIj09IiwgY2FyZXQsICJDYXJldCA9IDMyMC4iKTsKKwkJY21wX29rKDB4RDks ICI9PSIsIHBhY2tbMzldLAorCQkJICAgIkFmdGVyIHBhZGRpbmcgd2l0aCAweDAxLCB3PTE6 IDB4NTkgLT4gMHhEOS4iKTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDU7IGorKykKKwkJ CWNhcmV0ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHhDREVGLCAxNik7CisK KwkJY21wX29rKDQwMCwgIj09IiwgY2FyZXQsICJDYXJldCA9IDQwMC4iKTsKKwkJZm9yIChp bnQgaSA9IDQwOyBpIDwgNTA7KSB7CisJCQljbXBfb2soMHhFRiwgIj09IiwgcGFja1tpKytd LCAiUGFja2VkIHdpdGggd2lkdGg9MTYuIDB4RUYuIik7CisJCQljbXBfb2soMHhDRCwgIj09 IiwgcGFja1tpKytdLCAiUGFja2VkIHdpdGggd2lkdGg9MTYuIDB4Qy4iKTsKKwkJfQorCisJ CWNhcmV0ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwKKwkJCQkJCQkJIDB4MCAv KiBQQURESU5HIGluIG9yZGVyIHRvIHNoaWZ0IGJ5IDEgYml0Ki8sCisJCQkJCQkJCSAxKTsK KwkJY21wX29rKDQwMSwgIj09IiwgY2FyZXQsICJDYXJldCA9IDQwMS4iKTsKKworCQlmb3Ig KGludCBqID0gMDsgaiA8IDM7IGorKykKKwkJCWNhcmV0ID0gYml0cGFja191MTZfcGFjayhw YWNrLCBjYXJldCwgMHg1NTU1LCAxNik7CisKKwkJY21wX29rKDQ0OSwgIj09IiwgY2FyZXQs ICJDYXJldCA9IDQwMS4iKTsKKwkJZm9yIChpbnQgaSA9IDUwOyBpIDwgNTY7KQorCQkJY21w X29rKDB4QUEsICI9PSIsIHBhY2tbaSsrXSwKKwkJCQkgICAiMTYtYml0IHZhbHVlIHNhdmVk IHdpdGggc2hpZnQgYnkgMSBiaXQgMHg1NS0+MHhBQS4iKTsKKworCQljbXBfb2soMHgwLCAi PT0iLCBwYWNrWzU2XSwgIjEgaGlnaGVyIGJpdCBpcyBhbG9uZSAuIik7CisKKwkJcHJpbnRm KCJUZXN0IEJJVFBBQ0sgUEFDS0lORyBQQVNTRURcbiIpOworCQlwcmludGYoIj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwkJcHJpbnRmKCI9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwkJcHJpbnRm KCJUZXN0IEJJVFBBQ0sgVU5QQUNLSU5HXG4iKTsKKworCQljYXJldCA9IDA7CisKKwkJZm9y IChpbnQgaiA9IDA7IGogPCA4OyBqKyspIHsKKwkJCWNtcF9vaygweDAxLCAiPT0iLCBiaXRw YWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCAxKSk7CisJCQljbXBfb2soMHgwMCwgIj09 IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgMSkpOworCQl9CisJCWNtcF9v ayhjYXJldCwgIj09IiwgMTYpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgODsgaisrKQor CQkJY21wX29rKDB4MDIsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQs IDIpKTsKKworCQljbXBfb2soMzIsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAzMi4iKTsKKwor CQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykgeworCQkJY21wX29rKDB4MDUsICI9PSIs IGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDMpKTsKKwkJCWNtcF9vaygweDAy LCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCAzKSk7CisJCX0KKwkJ Y21wX29rKDgwLCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gODAuIik7CisKKwkJY21wX29rKDB4 MEIsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDQpKTsKKwkJY21w X29rKDB4MEMsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDQpKTsK KwkJY21wX29rKDB4MEQsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQs IDQpKTsKKwkJY21wX29rKDB4MEUsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAm Y2FyZXQsIDQpKTsKKworCQljbXBfb2soOTYsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA5Ni4i KTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykKKwkJCWNtcF9vaygweDA3LCAi PT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA1KSwKKwkJCQkgICAid2lk dGg9NSwgdmFsPTAwMTExYiIpOworCisJCWNtcF9vaygxMzYsICI9PSIsIGNhcmV0LCAiQ2Fy ZXQgPSAxMzYuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA0OyBqKyspCisJCQljbXBf b2soMHgwNywgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgNiksCisJ CQkJICAgIndpZHRoPTYsIHZhbD0wMDAxMTFiIik7CisKKwkJY21wX29rKDE2MCwgIj09Iiwg Y2FyZXQsICJDYXJldCA9IDE2MC4iKTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGor KykKKwkJCWNtcF9vaygweDU3LCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNh cmV0LCA3KSwKKwkJCQkgICAid2lkdGg9NywgdmFsPTEwMTAxMTFiICgweDU3KSIpOworCisJ CWNtcF9vaygyMTYsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAyMTYuIik7CisKKwkJY21wX29r KDB4QkEsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDgpLAorCQkJ ICAgIndpZHRoPTgsIHZhbD0weEJBIik7CisJCWNtcF9vaygweERDLCAiPT0iLCBiaXRwYWNr X3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA4KSwKKwkJCSAgICJ3aWR0aD04LCB2YWw9MHhE QyIpOworCQljbXBfb2soMHhGRSwgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZj YXJldCwgOCksCisJCQkgICAid2lkdGg9OCwgdmFsPTB4RkUiKTsKKworCQljbXBfb2soMjQw LCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMjQwLiIpOworCisJCWNtcF9vaygweDAsICI9PSIs IGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDQpLAorCQkJICAgIndpZHRoPTQs IHZhbD0weDAsIGZvciBmdW4iKTsKKworCQljbXBfb2soMHgzMiwgIj09IiwgYml0cGFja191 MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgOCksCisJCQkgICAid2lkdGg9OCwgdmFsPTB4MzIi KTsKKwkJY21wX29rKDB4NTQsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2Fy ZXQsIDgpLAorCQkJICAgIndpZHRoPTgsIHZhbD0weDU0Iik7CisJCWNtcF9vaygweDc2LCAi PT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA4KSwKKwkJCSAgICJ3aWR0 aD04LCB2YWw9MHg3NiIpOworCQljbXBfb2soMHg5OCwgIj09IiwgYml0cGFja191MTZfdW5w YWNrKHBhY2ssICZjYXJldCwgOCksCisJCQkgICAid2lkdGg9OCwgdmFsPTB4OTgiKTsKKwor CQljbXBfb2soMHgwLCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA0 KSwKKwkJCSAgICJ3aWR0aD00LCB2YWw9MHgwLCBmb3IgZnVuIHBhZGRpbmcgYWdhaW4iKTsK KworCQlmb3IgKGludCBqID0gMDsgaiA8IDM7IGorKykKKwkJCWNtcF9vaygweDE2NzEsICI9 PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDEzKSwKKwkJCQkgICAid2lk dGg9MTMsIHZhbD0weDE2NzEgKDEwMTEwMDExMTAwMDFiKSIpOworCisJCWNtcF9vaygzMTks ICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAzMTkuIik7CisKKwkJY21wX29rKDB4MSwgIj09Iiwg Yml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgMSksCisJCQkgICAid2lkdGg9MSwg dmFsPTB4MSIpOworCQljbXBfb2soMzIwLCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMzIwLiIp OworCisJCWZvciAoaW50IGogPSAwOyBqIDwgNTsgaisrKQorCQkJY21wX29rKDB4Q0RFRiwg Ij09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgMTYpLAorCQkJCSAgICIx OC1iaXQgdmFsdWUgYWxsaWduZWQgd2l0aCBieXRlcyBpbiBwYWNrLiIpOworCisJCWNtcF9v ayg0MDAsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA0MDAuIik7CisJCWNtcF9vaygweDAsICI9 PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDEpLAorCQkJICAgIjEtYml0 IHdpZHRoIHZhbHVlIChwYWRkaW5nIGZvciBzaGlmdCkuIik7CisJCWNtcF9vayg0MDEsICI9 PSIsIGNhcmV0LCAiQ2FyZXQgPSA0MDEuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCAz OyBqKyspCisJCQljbXBfb2soMHg1NTU1LCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFj aywgJmNhcmV0LCAxNiksCisJCQkJICAgIjE2LWJpdCB3aWR0aCB2YWx1ZSBzaGlmdGVkIGJ5 IDEgYml0LiIpOworCisJCWNtcF9vayg0NDksICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA0NDku Iik7CisJfQorCisJZG9uZV90ZXN0aW5nKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9k Zm9yL3Rlc3RfdW5pcXNvcnR2ZWN0X3UxNi5jIGIvc3JjL3Rlc3QvZGZvci90ZXN0X3VuaXFz b3J0dmVjdF91MTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u NGRkY2U4YjBiM2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9kZm9yL3Rlc3RfdW5p cXNvcnR2ZWN0X3UxNi5jCkBAIC0wLDAgKzEsMjYzIEBACisvKgorICogdGVzdF91bmlxc29y dHZlY3QuYworICovCisKKyNpbmNsdWRlICJsaWIvdmVjdF91MTYuaCIKKyNpbmNsdWRlICJs aWJ0YXAvdGFwLmgiCisKK2ludCB0ZXN0X3VzdihzaXplX3Qgc3JjX2NudCwgdWludDE2X3Qg KnNyY19pbiwgc2l6ZV90IGV4cGVjdGVkX2NudCwKKwkJCSB1aW50MTZfdCAqZXhwZWN0ZWRf aW4pOworCitpbnQKK3Rlc3RfdXN2KHNpemVfdCBzcmNfY250LCB1aW50MTZfdCAqc3JjX2lu LCBzaXplX3QgZXhwZWN0ZWRfY250LAorCQkgdWludDE2X3QgKmV4cGVjdGVkX2luKQorewor CWludCByZXN1bHQgPSAtMTsKKwl2ZWN0X3UxNl90IHNyYzsKKwl2ZWN0X3UxNl90IGV4cGVj dGVkOworCXVuaXFzb3J0dmVjdF91MTZfdCB4OworCisJdmVjdF91MTZfaW5pdCgmc3JjLCBz cmNfY250LCBOVUxMKTsKKwl2ZWN0X3UxNl9maWxsKCZzcmMsIHNyY19jbnQsIHNyY19pbik7 CisKKwl2ZWN0X3UxNl9pbml0KCZleHBlY3RlZCwgMCwgTlVMTCk7CisJdmVjdF91MTZfZmls bCgmZXhwZWN0ZWQsIGV4cGVjdGVkX2NudCwgZXhwZWN0ZWRfaW4pOworCisJdmVjdF91MTZf aW5pdCgmeCwgMCwgTlVMTCk7CisKKwlmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNyY19jbnQ7 IGkrKykKKwkJdXN2X3UxNl9pbnNlcnQoJngsIHNyYy5tW2ldKTsKKworCXJlc3VsdCA9IHZl Y3RfdTE2X2NvbXBhcmUoJngsICZleHBlY3RlZCk7CisKKwl2ZWN0X3UxNl9jbGVhcigmeCk7 CisJdmVjdF91MTZfY2xlYXIoJmV4cGVjdGVkKTsKKwl2ZWN0X3UxNl9jbGVhcigmc3JjKTsK KwlyZXR1cm4gcmVzdWx0OworfQorCitpbnQKK21haW4odm9pZCkKK3sKKwlwbGFuKDU2KTsK KworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxu Iik7CisJcHJpbnRmKCJUZXN0IENSRUFURSBBTkQgREVTVFJPWSBTT1JURUQgVU5JUVVFIFZF Q1RPUiAoRU1QVFkpXG4iKTsKKwl7CisJCXVuaXFzb3J0dmVjdF91MTZfdCB1c3Y7CisJCXNp emVfdCBjYXBhY2l0eSA9IDEwOworCQl2ZWN0X3UxNl9pbml0KCZ1c3YsIGNhcGFjaXR5LCBO VUxMKTsKKwkJY21wX29rKHVzdi5jYXAsICI9PSIsIGNhcGFjaXR5LAorCQkJICAgIlZlY3Rv cnMgY2FwYWNpdHkgaXMgZXF1YWwgdG8gcmVxdWVzdGVkIG9uZSIpOworCQljbXBfb2sodXN2 LmNudCwgIj09IiwgMCwgIk5vIG1lbWJlcnMgaW4gdmVjdG9yIik7CisJCW9rKHVzdi5tICE9 IE5VTEwsICJBcnJheSBmb3IgbWVtYmVycyBpcyByZXNlcnZlZCIpOworCisJCXZlY3RfdTE2 X2NsZWFyKCZ1c3YpOworCX0KKwlwcmludGYoIlRlc3QgQ1JFQVRFIEFORCBERVNUUk9ZIFNP UlRFRCBVTklRVUUgVkVDVE9SIChFTVBUWSkgUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYo Ij09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50 ZigiVGVzdCBTRUFSQ0ggSU4gVU5JUVVFIFNPUlQgVkVDVFxuIik7CisJeworCQl1bmlxc29y dHZlY3RfdTE2X3QgdXN2OworCQl1c3Zfc3JjaF9yZXNfdCBzcmNoOworCQl1aW50MTZfdCBp bnB1dFs0XSA9IHsgNSwgMTAsIDIwLCAzMCB9OworCisJCXZlY3RfdTE2X2luaXQoJnVzdiwg MCwgTlVMTCk7CisKKwkJZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyBpKyspCisJCQl1c3Zf dTE2X2luc2VydCgmdXN2LCBpbnB1dFtpXSk7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNo KCZ1c3YsIDApOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfTk9UX0ZPVU5E X1NNQUxMRVNULAorCQkJICAgIk5vdCBmb3VuZCwgc21hbGxlc3QiKTsKKwkJY21wX29rKHNy Y2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNo KCZ1c3YsIDEpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfTk9UX0ZPVU5E X1NNQUxMRVNULAorCQkJICAgIk5vdCBmb3VuZCwgc21hbGxlc3QiKTsKKwkJY21wX29rKHNy Y2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNo KCZ1c3YsIDUpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfRk9VTkQsICJG b3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3MgPTAiKTsKKworCQlz cmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNik7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0i LCBVU1ZfU1JDSF9OT1RfRk9VTkQsICJOb3QgZm91bmQiKTsKKwkJY21wX29rKHNyY2gucG9z LCAiPT0iLCAxLCAiUG9zID0xIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3Ys IDEwKTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX0ZPVU5ELCAiRm91bmQi KTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAxLCAiUG9zID0xIik7CisKKwkJc3JjaCA9 IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDE1KTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVT Vl9TUkNIX05PVF9GT1VORCwgIk5vdCBmb3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9 PSIsIDIsICJQb3MgPTIiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMjAp OworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfRk9VTkQsICJGb3VuZCIpOwor CQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDIsICJQb3MgPTIiKTsKKworCQlzcmNoID0gdXN2 X3UxNl9zZWFyY2goJnVzdiwgMjUpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NS Q0hfTk9UX0ZPVU5ELCAiTm90IGZvdW5kIik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09Iiwg MywgIlBvcyA9MyIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCAzMCk7CisJ CWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9GT1VORCwgIkZvdW5kIik7CisJCWNt cF9vayhzcmNoLnBvcywgIj09IiwgMywgIlBvcyA9MiIpOworCisJCXNyY2ggPSB1c3ZfdTE2 X3NlYXJjaCgmdXN2LCA0NSk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9O T1RfRk9VTkRfTEFSR0VTVCwgIk5vdCBmb3VuZCwgbGFyZ2VzdCIpOworCQljbXBfb2soc3Jj aC5wb3MsICI9PSIsIDMsICJQb3MgPTMiKTsKKworCQl2ZWN0X3UxNl9jbGVhcigmdXN2KTsK Kwl9CisJeworCQl1bmlxc29ydHZlY3RfdTE2X3QgdXN2OworCQl1c3Zfc3JjaF9yZXNfdCBz cmNoOworCQl1aW50MTZfdCBpbnB1dFszXSA9IHsgNSwgMTAsIDIwIH07CisJCXVpbnQxNl90 IGJ1ZlszXTsgLyogb3ZlcmluZHVsZ2UgaW4gdGVzdGluZyB0aGUgb3V0ZXIgbWVtb3J5IHZl Y3RvciAqLworCisJCXZlY3RfdTE2X2luaXQoJnVzdiwgMywgYnVmKTsKKworCQlmb3IgKHNp emVfdCBpID0gMDsgaSA8IDM7IGkrKykKKwkJCXVzdl91MTZfaW5zZXJ0KCZ1c3YsIGlucHV0 W2ldKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMCk7CisJCWNtcF9vayhz cmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9OT1RfRk9VTkRfU01BTExFU1QsCisJCQkgICAiTm90 IGZvdW5kLCBzbWFsbGVzdCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3Mg PTAiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNSk7CisJCWNtcF9vayhz cmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9GT1VORCwgIkZvdW5kIik7CisJCWNtcF9vayhzcmNo LnBvcywgIj09IiwgMCwgIlBvcyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgm dXN2LCA2KTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORCwg Ik5vdCBmb3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDEsICJQb3MgPTEiKTsK KworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMTApOworCQljbXBfb2soc3JjaC5z dCwgIj09IiwgVVNWX1NSQ0hfRk9VTkQsICJGb3VuZCIpOworCQljbXBfb2soc3JjaC5wb3Ms ICI9PSIsIDEsICJQb3MgPTEiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwg MTUpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfTk9UX0ZPVU5ELCAiTm90 IGZvdW5kIik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMiwgIlBvcyA9MiIpOworCisJ CS8qCisJCSAqIFdoZW4gc2NvcGVzIGwgYW5kIGcgYXJlIG5laWdoYm91cnMgKGctbD0xKSBi dXQKKwkJICogdmFsPT1tW2ddIGluc3RlYWQgb2YgdmFsPT1tW2xdLgorCQkgKi8KKwkJc3Jj aCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDIwKTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIs IFVTVl9TUkNIX0ZPVU5ELCAiRm91bmQiKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAy LCAiUG9zID0yIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDIxKTsKKwkJ Y21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORF9MQVJHRVNULCAiTm90 IGZvdW5kLCBsYXJnZXN0Iik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMiwgIlBvcyA9 MiIpOworCisJCXZlY3RfdTE2X2NsZWFyKCZ1c3YpOworCX0KKwl7IC8qIHNpbmdsZSBtZW1i ZXIqLworCisJCXVuaXFzb3J0dmVjdF91MTZfdCB1c3Y7CisJCXVzdl9zcmNoX3Jlc190IHNy Y2g7CisKKwkJdmVjdF91MTZfaW5pdCgmdXN2LCAzLCBOVUxMKTsKKworCQl1c3ZfdTE2X2lu c2VydCgmdXN2LCA1KTsgLyogVGhlIG9ubHkgaXRlbSBpbiBsaXN0IGlzIDUgKi8KKworCQlz cmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMCk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0i LCBVU1ZfU1JDSF9OT1RfRk9VTkRfU01BTExFU1QsCisJCQkgICAiTm90IGZvdW5kLCBzbWFs bGVzdCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3MgPTAiKTsKKworCQlz cmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNSk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0i LCBVU1ZfU1JDSF9GT1VORCwgIkZvdW5kIik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09Iiwg MCwgIlBvcyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCA2KTsKKwkJ Y21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORF9MQVJHRVNULCAiTm90 IGZvdW5kLCBsYXJnZXN0Iik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMCwgIlBvcyA9 MiIpOworCisJCXZlY3RfdTE2X2NsZWFyKCZ1c3YpOworCX0KKwl7IC8qIGVtcHR5IHZlY3Rv ciovCisKKwkJdW5pcXNvcnR2ZWN0X3UxNl90IHVzdjsKKwkJdXN2X3NyY2hfcmVzX3Qgc3Jj aDsKKworCQl2ZWN0X3UxNl9pbml0KCZ1c3YsIDEsIE5VTEwpOworCisJCXNyY2ggPSB1c3Zf dTE2X3NlYXJjaCgmdXN2LCAwKTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNI X0VNUFRZLCAiVmVjdG9yIGlzIGVtcHR5LiIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIs IDAsICJQb3MgPTAiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNCk7CisJ CWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9FTVBUWSwgIlZlY3RvciBpcyBlbXB0 eS4iKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJc3Jj aCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDUpOworCQljbXBfb2soc3JjaC5zdCwgIj09Iiwg VVNWX1NSQ0hfRU1QVFksICJWZWN0b3IgaXMgZW1wdHkuIik7CisJCWNtcF9vayhzcmNoLnBv cywgIj09IiwgMCwgIlBvcyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2 LCA2KTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX0VNUFRZLCAiVmVjdG9y IGlzIGVtcHR5LiIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3MgPTAiKTsK KworCQl2ZWN0X3UxNl9jbGVhcigmdXN2KTsKKwl9CisJcHJpbnRmKCJUZXN0IFNFQVJDSCBJ TiBVTklRVUUgU09SVCBWRUNUIFBBU1NFRC5cbiIpOworCXByaW50ZigiPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iKTsKKworCXByaW50ZigiPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisJcHJpbnRmKCJUZXN0 IEVSUk9SIE9OIE5PIFZFQ1RPUiBGT1IgU0VBUkNISU5HXG4iKTsKKwl7CisJCXVzdl9zcmNo X3Jlc190IHNyY2g7CisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaChOVUxMLCAwKTsKKwkJY21w X29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX0VSUk9SLAorCQkJICAgIkVycm9yOiBubyB2 ZWN0b3IgKGVtcHR5IHBvaW50ZXIgb24gdmVjdHJvcikuIik7CisJfQorCXsKKwkJdW5pcXNv cnR2ZWN0X3UxNl90IHVzdjsKKwkJdXN2X3NyY2hfcmVzX3Qgc3JjaDsKKwkJdmVjdF91MTZf aW5pdCgmdXN2LCAwLCBOVUxMKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwg MCk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9FTVBUWSwKKwkJCSAgICJT ZWFyY2ggaW4gZW1wdHkgdmVjdG9yIGlzIG5vdCBhbiBlcnJvci4iKTsKKworCQl2ZWN0X3Ux Nl9jbGVhcigmdXN2KTsKKwl9CisJcHJpbnRmKCJUZXN0IEVSUk9SIE9OIE5PIFZFQ1RPUiBG T1IgU0VBUkNISU5HIFBBU1NFRFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09XG5cbiIpOworCisJcHJpbnRmKCI9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgQ1JFQVRF RCBWRUNUT1JTIEFSRSBTT1JURUQgQU5EIFVOSVFVRVxuIik7CisJeworCQljbXBfb2soCisJ CQkwLCAiPT0iLAorCQkJdGVzdF91c3YoMTAsICh1aW50MTZfdFtdKSB7IDAsIDEsIDIsIDMs IDQsIDUsIDYsIDcsIDgsIDkgfSwgLy8gc3JjCisJCQkJCSAxMCwKKwkJCQkJICh1aW50MTZf dFtdKSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfSksIC8vIGV4cGVjdGVkCisJ CQkiVW5pcXVlIHNvcnRlZCB2ZWN0b3IgcmVtYWlucyB0aGUgc2FtZS4iKTsKKworCQljbXBf b2soMCwgIj09IiwKKwkJCSAgIHRlc3RfdXN2KDEwLAorCQkJCQkJKHVpbnQxNl90W10pIHsg MCwgMSwgMiwgMywgNCwgNSwgMywgNywgNSwgOSB9LCAvLyBzcmMKKwkJCQkJCTgsICh1aW50 MTZfdFtdKSB7IDAsIDEsIDIsIDMsIDQsIDUsIDcsIDkgfSksIC8vIGV4cGVjdGVkCisJCQkg ICAiRHVwbGljYXRlcyBhcmUgcmVtb3ZlZC4iKTsKKworCQljbXBfb2soCisJCQkwLCAiPT0i LAorCQkJdGVzdF91c3YoMTAsICh1aW50MTZfdFtdKSB7IDksIDgsIDcsIDYsIDUsIDQsIDMs IDIsIDEsIDAgfSwgLy8gc3JjCisJCQkJCSAxMCwKKwkJCQkJICh1aW50MTZfdFtdKSB7IDAs IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfSksIC8vIGV4cGVjdGVkCisJCQkiVW5zb3J0 ZWQgYmVjYW1lIHNvcnRlZC4iKTsKKwl9CisJcHJpbnRmKCJUZXN0IENSRUFURUQgVkVDVE9S UyBBUkUgU09SVEVEIEFORCBVTklRVUUgUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlkb25lX3Rlc3Rp bmcoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2Rmb3IvdGVzdF92ZWN0X3UxNi5jIGIv c3JjL3Rlc3QvZGZvci90ZXN0X3ZlY3RfdTE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjAwZWZlN2RjY2JlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvZGZvci90ZXN0X3ZlY3RfdTE2LmMKQEAgLTAsMCArMSwxNjggQEAKKy8qCisgKiB0ZXN0 X3ZlY3RfdTE2LmMKKyAqLworCisjaW5jbHVkZSAibGlidGFwL3RhcC5oIgorI2luY2x1ZGUg ImxpYi92ZWN0X3UxNi5oIgorCitpbnQKK21haW4odm9pZCkKK3sKKwlwbGFuKDM1KTsKKwor CXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7 CisJcHJpbnRmKCJUZXN0IElOSVQgQU5EIENMRUFSIFZFQ1RPUlxuIik7CisJeworCQl2ZWN0 X3UxNl90IHY7CisJCXNpemVfdCBjYXBhY2l0eSA9IDEwOworCQljbXBfb2soMCwgIj09Iiwg dmVjdF91MTZfaW5pdCgmdiwgY2FwYWNpdHksIE5VTEwpLAorCQkJICAgIlJlc3VsdCBvZiB2 ZWN0X2luaXQgaXMgMCIpOworCisJCWNtcF9vayh2LmNhcCwgIj09IiwgY2FwYWNpdHksCisJ CQkgICAiVmVjdG9ycyBjYXBhY2l0eSBpcyBlcXVhbCB0byByZXF1ZXN0ZWQgb25lIik7CisJ CWNtcF9vayh2LmNudCwgIj09IiwgMCwgIk5vIG1lbWJlcnMgaW4gdmVjdG9yIik7CisJCW9r KHYubSAhPSBOVUxMLCAiQXJyYXkgZm9yIG1lbWJlcnMgaXMgcmVzZXJ2ZWQiKTsKKwkJY21w X29rKHYubWVtX2lzX291dGVyLCAiPT0iLCBmYWxzZSwgIlZlY3RvciBkb2VzIG5vdCB1c2Ug b3V0ZXIgbWVtb3J5Iik7CisKKwkJdmVjdF91MTZfY2xlYXIoJnYpOworCisJCWNtcF9vayh2 LmNhcCwgIj09IiwgMCwgIlZlY3RvcnMgY2FwYWNpdHkgaXMgMCBhZnRlciBjbGVhbnVwIik7 CisJCWNtcF9vayh2LmNudCwgIj09IiwgMCwgIk5vIG1lbWJlcnMgaW4gdmVjdG9yIGFmdGVy IGNsZWFudXAiKTsKKwkJb2sodi5tID09IE5VTEwsICJBcnJheSBmb3IgbWVtYmVycyBpcyBh YnNlbnQiKTsKKwkJY21wX29rKHYubWVtX2lzX291dGVyLCAiPT0iLCBmYWxzZSwgIlZlY3Rv ciBkb2VzIG5vdCB1c2Ugb3V0ZXIgbWVtb3J5Iik7CisJfQorCXByaW50ZigiVGVzdCBJTklU IEFORCBDTEVBUiBWRUNUT1IgUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVzdCBJ TklUIEFORCBGSUxMIFZFQ1RPUlxuIik7CisJeworCQl2ZWN0X3UxNl90IHY7CisJCXNpemVf dCBjYXBhY2l0eSA9IDEwOworCQljb25zdCB1aW50MTZfdCB2YWxzW10gPSB7IDAsIDEsIDIs IDMsIDQsIDUsIDYsIDcsIDgsIDkgfTsKKworCQljbXBfb2soMCwgIj09IiwgdmVjdF91MTZf aW5pdCgmdiwgY2FwYWNpdHksIE5VTEwpLAorCQkJICAgIlJlc3VsdCBvZiB2ZWN0X2luaXQg aXMgMCIpOworCQljbXBfb2soMCwgIj09IiwgdmVjdF91MTZfZmlsbCgmdiwgY2FwYWNpdHks IHZhbHMpLAorCQkJICAgIlJlc3VsdCBvZiB2ZWN0X2ZpbGwgaXMgMCIpOworCisJCWNtcF9v ayh2LmNhcCwgIj09IiwgY2FwYWNpdHksCisJCQkgICAiVmVjdG9ycyBjYXBhY2l0eSBpcyBl cXVhbCB0byByZXF1ZXN0ZWQgb25lIik7CisJCW9rKHYubSAhPSBOVUxMLCAiQXJyYXkgZm9y IG1lbWJlcnMgaXMgcmVzZXJ2ZWQiKTsKKwkJY21wX29rKHYuY250LCAiPT0iLCBjYXBhY2l0 eSwgIk1lbWJlcnMgYXJlIGluIHZlY3Rvci4iKTsKKwkJeworCQkJaW50IGVxdWFsID0gMDsK KwkJCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FwYWNpdHk7IGkrKykgeworCQkJCWlmICh2 Lm1baV0gPT0gaSkKKwkJCQkJZXF1YWwgPSBlcXVhbCArIDE7CisJCQkJZWxzZQorCQkJCQli cmVhazsKKwkJCX0KKwkJCWNtcF9vayhlcXVhbCwgIj09IiwgMTAsICJNZW1iZXJzIGFyZSBj b3JyZWN0Iik7CisJCX0KKwkJdmVjdF91MTZfY2xlYXIoJnYpOworCX0KKwlwcmludGYoIlRl c3QgSU5JVCBBTkQgRklMTCBWRUNUT1IgUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50Zigi VGVzdCBJTklUIEFORCBGSUxMIFZFQ1RPUiB3aXRoIHplcm8gY2FwY2FpdHlcbiIpOworCXsK KwkJdmVjdF91MTZfdCB2OworCQlzaXplX3QgY2FwYWNpdHkgPSAwOworCisJCWNtcF9vaygw LCAiPT0iLCB2ZWN0X3UxNl9pbml0KCZ2LCBjYXBhY2l0eSwgTlVMTCksCisJCQkgICAiUmVz dWx0IG9mIHZlY3RfaW5pdCBpcyAwIik7CisJCWNtcF9vaygwLCAiPT0iLCB2ZWN0X3UxNl9m aWxsKCZ2LCBjYXBhY2l0eSwgTlVMTCksCisJCQkgICAiUmVzdWx0IG9mIHZlY3RfZmlsbCBp cyAwIik7CisKKwkJY21wX29rKHYuY2FwLCAiPT0iLCAwLCAiVmVjdG9yJ3MgY2FwYWNpdHkg aXMgemVybyIpOworCQlvayh2Lm0gPT0gTlVMTCwKKwkJICAgIlBvaW50ZXIgdG8gbWVtYmVy cyBpcyBOVUxMIChhcnJheSBmb3IgbWVtYmVycyBpcyBub3QgcmVzZXJ2ZWQpIik7CisJCW9r KHYuY250ID09IDAsICJDb3VudGVyIG9mIG1lbWJlcnMgaXMgemVyby4iKTsKKwkJdmVjdF91 MTZfY2xlYXIoJnYpOworCX0KKwl7CisJCXZlY3RfdTE2X3QgdjsKKwkJc2l6ZV90IGNhcGFj aXR5ID0gMTA7CisJCWNvbnN0IHVpbnQxNl90IHZhbHNbXSA9IHsgMCwgMSwgMiwgMywgNCwg NSwgNiwgNywgOCwgOSB9OworCisJCWNtcF9vaygwLCAiPT0iLCB2ZWN0X3UxNl9pbml0KCZ2 LCAwLCBOVUxMKSwgIlJlc3VsdCBvZiB2ZWN0X2luaXQgaXMgMCIpOworCQljbXBfb2soMCwg Ij09IiwgdmVjdF91MTZfZmlsbCgmdiwgY2FwYWNpdHksIHZhbHMpLAorCQkJICAgIlJlc3Vs dCBvZiB2ZWN0X2ZpbGwgaXMgMCIpOworCisJCWNtcF9vayh2LmNhcCwgIj09IiwgY2FwYWNp dHksCisJCQkgICAiVmVjdG9yJ3MgY2FwYWNpdHkgaXMgbm90IHplcm8gYWZ0ZXIgZmlsbGlu ZyIpOworCQlvayh2Lm0gIT0gTlVMTCwKKwkJICAgIlBvaW50ZXIgdG8gbWVtYmVycyBpcyBu b3QgTlVMTCBmYXRlciBmaWxsaW5nIChhcnJheSBmb3IgbWVtYmVycyBoYXMgYmVlbiByZXNl cnZlZCkiKTsKKwkJb2sodi5jbnQgPT0gY2FwYWNpdHksICJDb3VudGVyIG9mIG1lbWJlcnMg aXMgbm90IHplcm8gYWZ0ZXIgZmlsbGluZy4iKTsKKwkJdmVjdF91MTZfY2xlYXIoJnYpOwor CX0KKwlwcmludGYoIlRlc3QgSU5JVCBBTkQgRklMTCBWRUNUT1Igd2l0aCB6ZXJvIGNhcGNh aXR5IGlzIGZpbmlzaGVkXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVzdCBDT01QQVJFIFZF Q1RPUlNcbiIpOworCXsKKwkJdmVjdF91MTZfdCBhLCBiLCBjLCBkOworCisJCXVpbnQxNl90 IGF2YWxzW10gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfTsKKwkJdWludDE2 X3QgYnZhbHNbXSA9IHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSB9OworCQl1aW50 MTZfdCBjdmFsc1tdID0geyAxLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5IH07CisJCXVp bnQxNl90IGR2YWxzW10gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDggfTsKKworCQl2 ZWN0X3UxNl9pbml0KCZhLCAwLCBOVUxMKTsKKwkJdmVjdF91MTZfaW5pdCgmYiwgMCwgTlVM TCk7CisJCXZlY3RfdTE2X2luaXQoJmMsIDAsIE5VTEwpOworCQl2ZWN0X3UxNl9pbml0KCZk LCAwLCBOVUxMKTsKKworCQl2ZWN0X3UxNl9maWxsKCZhLCAxMCwgYXZhbHMpOworCQl2ZWN0 X3UxNl9maWxsKCZiLCAxMCwgYnZhbHMpOworCQl2ZWN0X3UxNl9maWxsKCZjLCAxMCwgY3Zh bHMpOworCQl2ZWN0X3UxNl9maWxsKCZkLCA5LCBkdmFscyk7CisKKwkJY21wX29rKDAsICI9 PSIsIHZlY3RfdTE2X2NvbXBhcmUoJmEsICZiKSwgIlZlY3RvcnMgYXJlIGVxdWFsIik7CisJ CWNtcF9vaygtMSwgIj09IiwgdmVjdF91MTZfY29tcGFyZSgmYSwgJmMpLAorCQkJICAgIlZl Y3RvcnMgYXJlIG5vdCBlcXVhbCBiZWNhdXNlIG9mIHZhbHVlIG9mIG1lbWJlcnMiKTsKKwkJ Y21wX29rKC0xLCAiPT0iLCB2ZWN0X3UxNl9jb21wYXJlKCZhLCAmZCksCisJCQkgICAiVmVj dG9ycyBhcmUgbm90IGVxdWFsIGJlY2F1c2Ugb2YgbnVtYmVyIG9mIG1lbWJlcnMiKTsKKwl9 CisJcHJpbnRmKCJUZXN0IENPTVBBUkUgVkVDVE9SUyBpcyBmaW5pc2hlZC4gXG4iKTsKKwlw cmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7 CisKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1c biIpOworCXByaW50ZigiVGVzdCBWRUNUT1IgV0lUSCBPVVRFUiBNRU1PUllcbiIpOworCXsK KyNkZWZpbmUgVkVDVF9DQVAgMTAwCisJCXZlY3RfdTE2X3QgdmVjdDsKKwkJdWludDE2X3Qg YnVmW1ZFQ1RfQ0FQXTsgLyogdWludDE2X3QgaXMgdGhlIGl0ZW0ncyB0eXBlICovCisJCXZl Y3RfdTE2X2luaXQoJnZlY3QsIFZFQ1RfQ0FQLCBidWYpOworCQljbXBfb2soCisJCQl2ZWN0 LmNhcCwgIj09IiwgVkVDVF9DQVAsCisJCQkiSW5pdGlhbGlzYXRpb24gb2YgdmVjdG9yIGhh dmluZyBleHRlcm5hbCBtZW1vcnkgcmVzdWx0ZWQgaW4gcHJvcGVyIGNhcGFjaXR5LiIpOwor CQljbXBfb2soCisJCQl2ZWN0LmNudCwgIj09IiwgMCwKKwkJCSJJbml0aWFsaXNhdGlvbiBv ZiB2ZWN0b3IgaGF2aW5nIGV4dGVybmFsIG1lbW9yeSByZXN1bHRlZCBpbiBwcm9wZXIgbnVt YmVyIG9mIGl0ZW1zLiIpOworCQlvaygoKHZvaWQgKil2ZWN0Lm0gPT0gKHZvaWQgKilidWYp LAorCQkgICAiSW5pdGlhbGlzYXRpb24gb2YgdmVjdG9yIGhhdmluZyBleHRlcm5hbCBtZW1v cnkgc2V0IGJ1ZiB0byB2ZWN0LT5tLiIpOworCQlvayh2ZWN0Lm1lbV9pc19vdXRlciwKKwkJ ICAgIkluaXRpYWxpc2F0aW9uIG9mIHZlY3RvciBoYXZpbmcgZXh0ZXJuYWwgbWVtb3J5IHNl dCBtZW1faXNfb3V0ZXIgZmxhZy4iKTsKKworCQlmb3IgKHNpemVfdCBpID0gMDsgaSA8IFZF Q1RfQ0FQOyBpKyspCisJCXsKKwkJCWlmICh2ZWN0X3UxNl9hcHBlbmQoJnZlY3QsIGkpICE9 IDApCisJCQkJZmFpbCgKKwkJCQkJIkVSUk9SOiBOZXcgdmFsdWUgY2FuJ3QgYmUgYXBwZW5k ZWQgaW50byB2ZWN0b3IgaGF2aW5nIGV4dGVybmFsIG1lbW9yeS4iKTsKKwkJfQorCQlwYXNz KAorCQkJIkFsbCB2YWx1ZXMgaGF2ZSBiZWVuIGFwcGVuZGVkIGludG8gdmVjdG9yIGhhdmlu ZyBleHRlcm5hbCBtZW1vcnkuIik7CisKKwkJY21wX29rKHZlY3QuY250LCAiPT0iLCBWRUNU X0NBUCwgIlZlY3RvciBpcyBmdWxsLiIpOworCQljbXBfb2sodmVjdF91MTZfYXBwZW5kKCZ2 ZWN0LCBWRUNUX0NBUCksICI9PSIsIC0xLAorCQkJICAgIk9uY2UgdmVjdG9yIGlzIGZ1bGws IGV4dHJhIGl0ZW0gY2FuJ3QgYmUgYXBwZW5kZWQuIik7CisJfQorCXByaW50ZigiVGVzdCBW RUNUT1IgV0lUSCBPVVRFUiBNRU1PUlkgaXMgZmluaXNoZWRcbiIpOworCXByaW50ZigiPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisKKwlkb25lX3Rl c3RpbmcoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC8uZ2l0aWdub3JlIGIv c3JjL3Rlc3QvbGlidGFwLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjJjOTVkMDQ2YzdkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv bGlidGFwLy5naXRpZ25vcmUKQEAgLTAsMCArMSwxMyBAQAorL3QvKgorIS90LyouKgorL3Qv Ki5leGUKKy90LyouZ290CisqLmEKKyoubG8KKyoubworKi5zbworKi5wYwordXNyLworKi5z dz8KKy8uZGVwcworLy5kaXJzdGFtcApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbGlidGFwLy50 cmF2aXMueW1sIGIvc3JjL3Rlc3QvbGlidGFwLy50cmF2aXMueW1sCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42Zjk4MDllMWI5OQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L2xpYnRhcC8udHJhdmlzLnltbApAQCAtMCwwICsxLDEzIEBACitsYW5n dWFnZTogYworCitjb21waWxlcjoKKyAgLSBnY2MKKyAgLSBjbGFuZworCitiZWZvcmVfaW5z dGFsbDogc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXkgbGlidGVzdC1kaWZmZXJlbmNlcy1wZXJs CisKK2luc3RhbGw6IG1ha2UgQ0M9JENDIGluc3RhbGwKKworc2NyaXB0OiBtYWtlIENDPSRD QyB0ZXN0CisKK2FmdGVyX3NjcmlwdDogbWFrZSB1bmluc3RhbGwKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L2xpYnRhcC9DT1BZSU5HIGIvc3JjL3Rlc3QvbGlidGFwL0NPUFlJTkcKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY1YzVjYTg4YTY3Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbGlidGFwL0NPUFlJTkcKQEAgLTAsMCArMSwxNjUgQEAK KyAgICAgICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UK KyAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDcKKworIENv cHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gPGh0dHA6 Ly9mc2Yub3JnLz4KKyBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJp YnV0ZSB2ZXJiYXRpbSBjb3BpZXMKKyBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBj aGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KKworCisgIFRoaXMgdmVyc2lvbiBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluY29ycG9yYXRlcwordGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mIHZlcnNpb24gMyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljCitMaWNlbnNlLCBzdXBwbGVtZW50ZWQgYnkgdGhlIGFkZGl0aW9uYWwgcGVybWlzc2lv bnMgbGlzdGVkIGJlbG93LgorCisgIDAuIEFkZGl0aW9uYWwgRGVmaW5pdGlvbnMuCisKKyAg QXMgdXNlZCBoZXJlaW4sICJ0aGlzIExpY2Vuc2UiIHJlZmVycyB0byB2ZXJzaW9uIDMgb2Yg dGhlIEdOVSBMZXNzZXIKK0dlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgIkdOVSBH UEwiIHJlZmVycyB0byB2ZXJzaW9uIDMgb2YgdGhlIEdOVQorR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZS4KKworICAiVGhlIExpYnJhcnkiIHJlZmVycyB0byBhIGNvdmVyZWQgd29yayBnb3Zl cm5lZCBieSB0aGlzIExpY2Vuc2UsCitvdGhlciB0aGFuIGFuIEFwcGxpY2F0aW9uIG9yIGEg Q29tYmluZWQgV29yayBhcyBkZWZpbmVkIGJlbG93LgorCisgIEFuICJBcHBsaWNhdGlvbiIg aXMgYW55IHdvcmsgdGhhdCBtYWtlcyB1c2Ugb2YgYW4gaW50ZXJmYWNlIHByb3ZpZGVkCiti eSB0aGUgTGlicmFyeSwgYnV0IHdoaWNoIGlzIG5vdCBvdGhlcndpc2UgYmFzZWQgb24gdGhl IExpYnJhcnkuCitEZWZpbmluZyBhIHN1YmNsYXNzIG9mIGEgY2xhc3MgZGVmaW5lZCBieSB0 aGUgTGlicmFyeSBpcyBkZWVtZWQgYSBtb2RlCitvZiB1c2luZyBhbiBpbnRlcmZhY2UgcHJv dmlkZWQgYnkgdGhlIExpYnJhcnkuCisKKyAgQSAiQ29tYmluZWQgV29yayIgaXMgYSB3b3Jr IHByb2R1Y2VkIGJ5IGNvbWJpbmluZyBvciBsaW5raW5nIGFuCitBcHBsaWNhdGlvbiB3aXRo IHRoZSBMaWJyYXJ5LiAgVGhlIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiB0aGUgTGlicmFyeQor d2l0aCB3aGljaCB0aGUgQ29tYmluZWQgV29yayB3YXMgbWFkZSBpcyBhbHNvIGNhbGxlZCB0 aGUgIkxpbmtlZAorVmVyc2lvbiIuCisKKyAgVGhlICJNaW5pbWFsIENvcnJlc3BvbmRpbmcg U291cmNlIiBmb3IgYSBDb21iaW5lZCBXb3JrIG1lYW5zIHRoZQorQ29ycmVzcG9uZGluZyBT b3VyY2UgZm9yIHRoZSBDb21iaW5lZCBXb3JrLCBleGNsdWRpbmcgYW55IHNvdXJjZSBjb2Rl Citmb3IgcG9ydGlvbnMgb2YgdGhlIENvbWJpbmVkIFdvcmsgdGhhdCwgY29uc2lkZXJlZCBp biBpc29sYXRpb24sIGFyZQorYmFzZWQgb24gdGhlIEFwcGxpY2F0aW9uLCBhbmQgbm90IG9u IHRoZSBMaW5rZWQgVmVyc2lvbi4KKworICBUaGUgIkNvcnJlc3BvbmRpbmcgQXBwbGljYXRp b24gQ29kZSIgZm9yIGEgQ29tYmluZWQgV29yayBtZWFucyB0aGUKK29iamVjdCBjb2RlIGFu ZC9vciBzb3VyY2UgY29kZSBmb3IgdGhlIEFwcGxpY2F0aW9uLCBpbmNsdWRpbmcgYW55IGRh dGEKK2FuZCB1dGlsaXR5IHByb2dyYW1zIG5lZWRlZCBmb3IgcmVwcm9kdWNpbmcgdGhlIENv bWJpbmVkIFdvcmsgZnJvbSB0aGUKK0FwcGxpY2F0aW9uLCBidXQgZXhjbHVkaW5nIHRoZSBT eXN0ZW0gTGlicmFyaWVzIG9mIHRoZSBDb21iaW5lZCBXb3JrLgorCisgIDEuIEV4Y2VwdGlv biB0byBTZWN0aW9uIDMgb2YgdGhlIEdOVSBHUEwuCisKKyAgWW91IG1heSBjb252ZXkgYSBj b3ZlcmVkIHdvcmsgdW5kZXIgc2VjdGlvbnMgMyBhbmQgNCBvZiB0aGlzIExpY2Vuc2UKK3dp dGhvdXQgYmVpbmcgYm91bmQgYnkgc2VjdGlvbiAzIG9mIHRoZSBHTlUgR1BMLgorCisgIDIu IENvbnZleWluZyBNb2RpZmllZCBWZXJzaW9ucy4KKworICBJZiB5b3UgbW9kaWZ5IGEgY29w eSBvZiB0aGUgTGlicmFyeSwgYW5kLCBpbiB5b3VyIG1vZGlmaWNhdGlvbnMsIGEKK2ZhY2ls aXR5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4g QXBwbGljYXRpb24KK3RoYXQgdXNlcyB0aGUgZmFjaWxpdHkgKG90aGVyIHRoYW4gYXMgYW4g YXJndW1lbnQgcGFzc2VkIHdoZW4gdGhlCitmYWNpbGl0eSBpcyBpbnZva2VkKSwgdGhlbiB5 b3UgbWF5IGNvbnZleSBhIGNvcHkgb2YgdGhlIG1vZGlmaWVkCit2ZXJzaW9uOgorCisgICBh KSB1bmRlciB0aGlzIExpY2Vuc2UsIHByb3ZpZGVkIHRoYXQgeW91IG1ha2UgYSBnb29kIGZh aXRoIGVmZm9ydCB0bworICAgZW5zdXJlIHRoYXQsIGluIHRoZSBldmVudCBhbiBBcHBsaWNh dGlvbiBkb2VzIG5vdCBzdXBwbHkgdGhlCisgICBmdW5jdGlvbiBvciBkYXRhLCB0aGUgZmFj aWxpdHkgc3RpbGwgb3BlcmF0ZXMsIGFuZCBwZXJmb3JtcworICAgd2hhdGV2ZXIgcGFydCBv ZiBpdHMgcHVycG9zZSByZW1haW5zIG1lYW5pbmdmdWwsIG9yCisKKyAgIGIpIHVuZGVyIHRo ZSBHTlUgR1BMLCB3aXRoIG5vbmUgb2YgdGhlIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgb2YK KyAgIHRoaXMgTGljZW5zZSBhcHBsaWNhYmxlIHRvIHRoYXQgY29weS4KKworICAzLiBPYmpl Y3QgQ29kZSBJbmNvcnBvcmF0aW5nIE1hdGVyaWFsIGZyb20gTGlicmFyeSBIZWFkZXIgRmls ZXMuCisKKyAgVGhlIG9iamVjdCBjb2RlIGZvcm0gb2YgYW4gQXBwbGljYXRpb24gbWF5IGlu Y29ycG9yYXRlIG1hdGVyaWFsIGZyb20KK2EgaGVhZGVyIGZpbGUgdGhhdCBpcyBwYXJ0IG9m IHRoZSBMaWJyYXJ5LiAgWW91IG1heSBjb252ZXkgc3VjaCBvYmplY3QKK2NvZGUgdW5kZXIg dGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQsIGlmIHRoZSBpbmNvcnBvcmF0 ZWQKK21hdGVyaWFsIGlzIG5vdCBsaW1pdGVkIHRvIG51bWVyaWNhbCBwYXJhbWV0ZXJzLCBk YXRhIHN0cnVjdHVyZQorbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBvciBzbWFsbCBtYWNyb3Ms IGlubGluZSBmdW5jdGlvbnMgYW5kIHRlbXBsYXRlcworKHRlbiBvciBmZXdlciBsaW5lcyBp biBsZW5ndGgpLCB5b3UgZG8gYm90aCBvZiB0aGUgZm9sbG93aW5nOgorCisgICBhKSBHaXZl IHByb21pbmVudCBub3RpY2Ugd2l0aCBlYWNoIGNvcHkgb2YgdGhlIG9iamVjdCBjb2RlIHRo YXQgdGhlCisgICBMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkg YW5kIGl0cyB1c2UgYXJlCisgICBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgYikg QWNjb21wYW55IHRoZSBvYmplY3QgY29kZSB3aXRoIGEgY29weSBvZiB0aGUgR05VIEdQTCBh bmQgdGhpcyBsaWNlbnNlCisgICBkb2N1bWVudC4KKworICA0LiBDb21iaW5lZCBXb3Jrcy4K KworICBZb3UgbWF5IGNvbnZleSBhIENvbWJpbmVkIFdvcmsgdW5kZXIgdGVybXMgb2YgeW91 ciBjaG9pY2UgdGhhdCwKK3Rha2VuIHRvZ2V0aGVyLCBlZmZlY3RpdmVseSBkbyBub3QgcmVz dHJpY3QgbW9kaWZpY2F0aW9uIG9mIHRoZQorcG9ydGlvbnMgb2YgdGhlIExpYnJhcnkgY29u dGFpbmVkIGluIHRoZSBDb21iaW5lZCBXb3JrIGFuZCByZXZlcnNlCitlbmdpbmVlcmluZyBm b3IgZGVidWdnaW5nIHN1Y2ggbW9kaWZpY2F0aW9ucywgaWYgeW91IGFsc28gZG8gZWFjaCBv ZgordGhlIGZvbGxvd2luZzoKKworICAgYSkgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGgg ZWFjaCBjb3B5IG9mIHRoZSBDb21iaW5lZCBXb3JrIHRoYXQKKyAgIHRoZSBMaWJyYXJ5IGlz IHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlCisgICBj b3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgYikgQWNjb21wYW55IHRoZSBDb21iaW5l ZCBXb3JrIHdpdGggYSBjb3B5IG9mIHRoZSBHTlUgR1BMIGFuZCB0aGlzIGxpY2Vuc2UKKyAg IGRvY3VtZW50LgorCisgICBjKSBGb3IgYSBDb21iaW5lZCBXb3JrIHRoYXQgZGlzcGxheXMg Y29weXJpZ2h0IG5vdGljZXMgZHVyaW5nCisgICBleGVjdXRpb24sIGluY2x1ZGUgdGhlIGNv cHlyaWdodCBub3RpY2UgZm9yIHRoZSBMaWJyYXJ5IGFtb25nCisgICB0aGVzZSBub3RpY2Vz LCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlIGRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUKKyAg IGNvcGllcyBvZiB0aGUgR05VIEdQTCBhbmQgdGhpcyBsaWNlbnNlIGRvY3VtZW50LgorCisg ICBkKSBEbyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworICAgICAgIDApIENvbnZleSB0aGUg TWluaW1hbCBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcwor ICAgICAgIExpY2Vuc2UsIGFuZCB0aGUgQ29ycmVzcG9uZGluZyBBcHBsaWNhdGlvbiBDb2Rl IGluIGEgZm9ybQorICAgICAgIHN1aXRhYmxlIGZvciwgYW5kIHVuZGVyIHRlcm1zIHRoYXQg cGVybWl0LCB0aGUgdXNlciB0bworICAgICAgIHJlY29tYmluZSBvciByZWxpbmsgdGhlIEFw cGxpY2F0aW9uIHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mCisgICAgICAgdGhlIExpbmtl ZCBWZXJzaW9uIHRvIHByb2R1Y2UgYSBtb2RpZmllZCBDb21iaW5lZCBXb3JrLCBpbiB0aGUK KyAgICAgICBtYW5uZXIgc3BlY2lmaWVkIGJ5IHNlY3Rpb24gNiBvZiB0aGUgR05VIEdQTCBm b3IgY29udmV5aW5nCisgICAgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuCisKKyAgICAgICAx KSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcg d2l0aCB0aGUKKyAgICAgICBMaWJyYXJ5LiAgQSBzdWl0YWJsZSBtZWNoYW5pc20gaXMgb25l IHRoYXQgKGEpIHVzZXMgYXQgcnVuIHRpbWUKKyAgICAgICBhIGNvcHkgb2YgdGhlIExpYnJh cnkgYWxyZWFkeSBwcmVzZW50IG9uIHRoZSB1c2VyJ3MgY29tcHV0ZXIKKyAgICAgICBzeXN0 ZW0sIGFuZCAoYikgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJz aW9uCisgICAgICAgb2YgdGhlIExpYnJhcnkgdGhhdCBpcyBpbnRlcmZhY2UtY29tcGF0aWJs ZSB3aXRoIHRoZSBMaW5rZWQKKyAgICAgICBWZXJzaW9uLgorCisgICBlKSBQcm92aWRlIElu c3RhbGxhdGlvbiBJbmZvcm1hdGlvbiwgYnV0IG9ubHkgaWYgeW91IHdvdWxkIG90aGVyd2lz ZQorICAgYmUgcmVxdWlyZWQgdG8gcHJvdmlkZSBzdWNoIGluZm9ybWF0aW9uIHVuZGVyIHNl Y3Rpb24gNiBvZiB0aGUKKyAgIEdOVSBHUEwsIGFuZCBvbmx5IHRvIHRoZSBleHRlbnQgdGhh dCBzdWNoIGluZm9ybWF0aW9uIGlzCisgICBuZWNlc3NhcnkgdG8gaW5zdGFsbCBhbmQgZXhl Y3V0ZSBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlCisgICBDb21iaW5lZCBXb3JrIHByb2R1 Y2VkIGJ5IHJlY29tYmluaW5nIG9yIHJlbGlua2luZyB0aGUKKyAgIEFwcGxpY2F0aW9uIHdp dGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaW5rZWQgVmVyc2lvbi4gKElmCisgICB5 b3UgdXNlIG9wdGlvbiA0ZDAsIHRoZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24gbXVzdCBh Y2NvbXBhbnkKKyAgIHRoZSBNaW5pbWFsIENvcnJlc3BvbmRpbmcgU291cmNlIGFuZCBDb3Jy ZXNwb25kaW5nIEFwcGxpY2F0aW9uCisgICBDb2RlLiBJZiB5b3UgdXNlIG9wdGlvbiA0ZDEs IHlvdSBtdXN0IHByb3ZpZGUgdGhlIEluc3RhbGxhdGlvbgorICAgSW5mb3JtYXRpb24gaW4g dGhlIG1hbm5lciBzcGVjaWZpZWQgYnkgc2VjdGlvbiA2IG9mIHRoZSBHTlUgR1BMCisgICBm b3IgY29udmV5aW5nIENvcnJlc3BvbmRpbmcgU291cmNlLikKKworICA1LiBDb21iaW5lZCBM aWJyYXJpZXMuCisKKyAgWW91IG1heSBwbGFjZSBsaWJyYXJ5IGZhY2lsaXRpZXMgdGhhdCBh cmUgYSB3b3JrIGJhc2VkIG9uIHRoZQorTGlicmFyeSBzaWRlIGJ5IHNpZGUgaW4gYSBzaW5n bGUgbGlicmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKK2ZhY2lsaXRpZXMgdGhh dCBhcmUgbm90IEFwcGxpY2F0aW9ucyBhbmQgYXJlIG5vdCBjb3ZlcmVkIGJ5IHRoaXMKK0xp Y2Vuc2UsIGFuZCBjb252ZXkgc3VjaCBhIGNvbWJpbmVkIGxpYnJhcnkgdW5kZXIgdGVybXMg b2YgeW91cgorY2hvaWNlLCBpZiB5b3UgZG8gYm90aCBvZiB0aGUgZm9sbG93aW5nOgorCisg ICBhKSBBY2NvbXBhbnkgdGhlIGNvbWJpbmVkIGxpYnJhcnkgd2l0aCBhIGNvcHkgb2YgdGhl IHNhbWUgd29yayBiYXNlZAorICAgb24gdGhlIExpYnJhcnksIHVuY29tYmluZWQgd2l0aCBh bnkgb3RoZXIgbGlicmFyeSBmYWNpbGl0aWVzLAorICAgY29udmV5ZWQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoaXMgTGljZW5zZS4KKworICAgYikgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdp dGggdGhlIGNvbWJpbmVkIGxpYnJhcnkgdGhhdCBwYXJ0IG9mIGl0CisgICBpcyBhIHdvcmsg YmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nIHdoZXJlIHRvIGZpbmQgdGhl CisgICBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCisK KyAgNi4gUmV2aXNlZCBWZXJzaW9ucyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlLgorCisgIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxp c2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zCitvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiBTdWNoIG5ldwordmVyc2lv bnMgd2lsbCBiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBi dXQgbWF5CitkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNv bmNlcm5zLgorCisgIEVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZl cnNpb24gbnVtYmVyLiBJZiB0aGUKK0xpYnJhcnkgYXMgeW91IHJlY2VpdmVkIGl0IHNwZWNp ZmllcyB0aGF0IGEgY2VydGFpbiBudW1iZXJlZCB2ZXJzaW9uCitvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIKK2FwcGxp ZXMgdG8gaXQsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBh bmQKK2NvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgcHVibGlzaGVkIHZlcnNpb24gb3Igb2Yg YW55IGxhdGVyIHZlcnNpb24KK3B1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLiBJZiB0aGUgTGlicmFyeSBhcyB5b3UKK3JlY2VpdmVkIGl0IGRvZXMgbm90IHNw ZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgR05VIExlc3NlcgorR2VuZXJhbCBQdWJs aWMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gb2YgdGhlIEdOVSBMZXNz ZXIKK0dlbmVyYWwgUHVibGljIExpY2Vuc2UgZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbi4KKworICBJZiB0aGUgTGlicmFyeSBhcyB5b3UgcmVjZWl2 ZWQgaXQgc3BlY2lmaWVzIHRoYXQgYSBwcm94eSBjYW4gZGVjaWRlCit3aGV0aGVyIGZ1dHVy ZSB2ZXJzaW9ucyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHNo YWxsCithcHBseSwgdGhhdCBwcm94eSdzIHB1YmxpYyBzdGF0ZW1lbnQgb2YgYWNjZXB0YW5j ZSBvZiBhbnkgdmVyc2lvbiBpcworcGVybWFuZW50IGF1dGhvcml6YXRpb24gZm9yIHlvdSB0 byBjaG9vc2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUKK0xpYnJhcnkuCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9saWJ0YXAvSU5TVEFMTCBiL3NyYy90ZXN0L2xpYnRhcC9JTlNUQUxMCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41YjJjNzZkZjNkNwotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L2xpYnRhcC9JTlNUQUxMCkBAIC0wLDAgKzEsNDEgQEAK K1RvIGluc3RhbGwgbGlidGFwIG9uIGEgVW5peC1saWtlIHN5c3RlbToKKworICAgICQgbWFr ZQorICAgICQgbWFrZSBjaGVjaworICAgICQgbWFrZSBpbnN0YWxsCisKK1RvIGNvbXBpbGUg d2l0aCBnY2MgLWFuc2ksIHJ1bjoKKworICAgICQgQU5TST0xIG1ha2UKKworVG8gaW5zdGFs bCB0byBhIGRpZmZlcmVudCBkaXJlY3RvcnkgdGhhbiAvdXNyL2xvY2FsLCBzdXBwbHkgdGhl CitQUkVGSVggdmFyaWFibGUgdG8gbWFrZToKKworICAgICQgUFJFRklYPS91c3IgbWFrZSBp bnN0YWxsCisKK09uIFdpbmRvd3MsIHRoZSBsaWJyYXJ5IGNhbiBiZSBjcmVhdGVkIGJ5IGZp cnN0IHNldHRpbmcgdXAgdGhlCitjb3JyZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50IHZh cmlhYmxlcy4gVXN1YWxseSB0aGlzIGlzIGRvbmUgYnkKK3J1bm5pbmcgdmN2YXJzMzIuYmF0 IGluY2x1ZGVkIGluIHRoZSBWaXN1YWwgU3R1ZGlvIGRpc3RyaWJ1dGlvbi4KK1lvdSBzaG91 bGQgYWxzbyBpbnN0YWxsIGdudSBtYWtlIHdoaWNoIGNhbiBiZSBmb3VuZCBhdAoraHR0cDov L2dudXdpbjMyLnNvdXJjZWZvcmdlLm5ldC9wYWNrYWdlcy9tYWtlLmh0bS4gT25jZSB0aGlz IGlzCitkb25lLCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcnVuIHRoZSBmb2xsb3dpbmc6CisK KyAgICA+IG1ha2UgLWYgTWFrZWZpbGUud2luCisKK0lmIHlvdSB3YW50IHRvIHVzZSBpdCBk aXJlY3RseSBpbiBhbm90aGVyIHByb2plY3QsIHlvdSBjYW4gY29weSB0YXAuYworYW5kIHRh cC5oIHRoZXJlIGFuZCBpdCBzaG91bGRuJ3QgaGF2ZSBhIHByb2JsZW0gY29tcGlsaW5nLgor CisgICAgJCBscworICAgIHRhcC5jIHRhcC5oIHRlc3QuYworICAgICQgY2F0IHRlc3QuYwor ICAgICNpbmNsdWRlICJ0YXAuaCIKKyAgICBpbnQgbWFpbiAoKSB7CisgICAgICAgIHBsYW4o MSk7CisgICAgICAgIG9rKDUwICsgNSwgImZvbyAlcyIsICJiYXIiKTsKKyAgICAgICAgZG9u ZV90ZXN0aW5nKCk7CisgICAgfQorICAgICQgZ2NjIHRlc3QuYyB0YXAuYworICAgICQgYS5v dXQKKyAgICAxLi4xCisgICAgb2sgMSAtIGZvbyBiYXIKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbGlidGFwL01ha2VmaWxlIGIvc3JjL3Rlc3QvbGlidGFwL01ha2VmaWxlCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mMDIwYzI4MzlhOAotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZQpAQCAtMCwwICsxLDczIEBACitD QyA/PSBnY2MKK0NGTEFHUyArPSAtV2FsbCAtSS4gLWZQSUMKK1BSRUZJWCA/PSAkKERFU1RE SVIpL3Vzci9sb2NhbAorVEVTVFMgPSAkKHBhdHN1YnN0ICUuYywgJSwgJCh3aWxkY2FyZCB0 LyouYykpCisKK2lmZGVmIEFOU0kKKwkjIC1EX0JTRF9TT1VSQ0UgZm9yIE1BUF9BTk9OWU1P VVMKKwlDRkxBR1MgKz0gLWFuc2kgLURfQlNEX1NPVVJDRQorCUxETElCUyArPSAtbGJzZC1j b21wYXQKK2VuZGlmCisKKyU6CisJJChDQykgJChMREZMQUdTKSAkKFRBUkdFVF9BUkNIKSAk KGZpbHRlciAlLm8gJS5hICUuc28sICReKSAkKExETElCUykgLW8gJEAKKworJS5vOgorCSQo Q0MpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkKFRBUkdFVF9BUkNIKSAtYyAkKGZpbHRlciAl LmMsICReKSAkKExETElCUykgLW8gJEAKKworJS5hOgorCSQoQVIpIHJjcyAkQCAkKGZpbHRl ciAlLm8sICReKQorCislLnNvOgorCSQoQ0MpIC1zaGFyZWQgJChMREZMQUdTKSAkKFRBUkdF VF9BUkNIKSAkKGZpbHRlciAlLm8sICReKSAkKExETElCUykgLW8gJEAKKworYWxsOiBsaWJ0 YXAuYSBsaWJ0YXAuc28gdGFwLnBjIHRlc3RzCisKK3RhcC5wYzoKKwlAZWNobyBnZW5lcmF0 aW5nIHRhcC5wYworCUBlY2hvICdwcmVmaXg9JyQoUFJFRklYKSA+IHRhcC5wYworCUBlY2hv ICdleGVjX3ByZWZpeD0kJHtwcmVmaXh9JyA+PiB0YXAucGMKKwlAZWNobyAnbGliZGlyPSQk e3ByZWZpeH0vbGliJyA+PiB0YXAucGMKKwlAZWNobyAnaW5jbHVkZWRpcj0kJHtwcmVmaXh9 L2luY2x1ZGUnID4+IHRhcC5wYworCUBlY2hvICcnID4+IHRhcC5wYworCUBlY2hvICdOYW1l OiBsaWJ0YXAnID4+IHRhcC5wYworCUBlY2hvICdEZXNjcmlwdGlvbjogV3JpdGUgdGVzdHMg aW4gQycgPj4gdGFwLnBjCisJQGVjaG8gJ1ZlcnNpb246IDAuMS4wJyA+PiB0YXAucGMKKwlA ZWNobyAnVVJMOiBodHRwczovL2dpdGh1Yi5jb20vem9yZ25heC9saWJ0YXAnID4+IHRhcC5w YworCUBlY2hvICdMaWJzOiAtTCQke2xpYmRpcn0gLWx0YXAnID4+IHRhcC5wYworCUBlY2hv ICdDZmxhZ3M6IC1JJCR7aW5jbHVkZWRpcn0nID4+IHRhcC5wYworCitsaWJ0YXAuYTogdGFw Lm8KKworbGlidGFwLnNvOiB0YXAubworCit0YXAubzogdGFwLmMgdGFwLmgKKwordGVzdHM6 ICQoVEVTVFMpCisKKyQoVEVTVFMpOiAlOiAlLm8gbGlidGFwLmEKKworJChwYXRzdWJzdCAl LCAlLm8sICQoVEVTVFMpKTogJS5vOiAlLmMgdGFwLmgKKwkkKENDKSAkKENGTEFHUykgLU8w ICQoQ1BQRkxBR1MpICQoVEFSR0VUX0FSQ0gpIC1jICQoZmlsdGVyICUuYywgJF4pICQoTERM SUJTKSAtbyAkQAorCitjbGVhbjoKKwlybSAtcmYgKi5vIHQvKi5vIHRhcC5wYyBsaWJ0YXAu YSBsaWJ0YXAuc28gJChURVNUUykKKworaW5zdGFsbDogbGlidGFwLmEgdGFwLmggbGlidGFw LnNvIHRhcC5wYworCW1rZGlyIC1wICQoUFJFRklYKS9saWIgJChQUkVGSVgpL2luY2x1ZGUg JChQUkVGSVgpL2xpYi9wa2djb25maWcKKwlpbnN0YWxsIC1jIGxpYnRhcC5hICQoUFJFRklY KS9saWIKKwlpbnN0YWxsIC1jIGxpYnRhcC5zbyAkKFBSRUZJWCkvbGliCisJaW5zdGFsbCAt YyB0YXAucGMgJChQUkVGSVgpL2xpYi9wa2djb25maWcKKwlpbnN0YWxsIC1jIHRhcC5oICQo UFJFRklYKS9pbmNsdWRlCisKK3VuaW5zdGFsbDoKKwlybSAkKFBSRUZJWCkvbGliL2xpYnRh cC5hICQoUFJFRklYKS9saWIvbGlidGFwLnNvICQoUFJFRklYKS9pbmNsdWRlL3RhcC5oCisK K2Rpc3Q6CisJcm0gbGlidGFwLnppcAorCXppcCAtciBsaWJ0YXAgKgorCitjaGVjayB0ZXN0 OiBhbGwKKwkuL3QvdGVzdAorCisuUEhPTlk6IGFsbCBjbGVhbiBpbnN0YWxsIHVuaW5zdGFs bCBkaXN0IGNoZWNrIHRlc3QgdGVzdHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC9N YWtlZmlsZS53aW4gYi9zcmMvdGVzdC9saWJ0YXAvTWFrZWZpbGUud2luCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42OTRkNjc5YTFiMQotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZS53aW4KQEAgLTAsMCArMSwzNyBAQAor Q0ZMQUdTID0gL1ppIC9XYWxsIC93ZDQyNTUgL3dkNDk5NiAvd2Q0MTI3IC93ZDQ4MjAgL3dk NDEwMCAvd2Q0NjE5IFwKKwkJIC93ZDQ1MTQgL3dkNDY2OCAvSS4KK0NDID0gY2wgL25vbG9n bworVEVTVFMgPSAkKHBhdHN1YnN0ICUuYywgJS5leGUsICQod2lsZGNhcmQgdC8qLmMpKQor CislLmV4ZToKKwkkKENDKSAkKExERkxBR1MpICQoZmlsdGVyICUub2JqICUubGliICUuZGxs LCAkXikgJChMRExJQlMpIC9GZSAkQAorCislLm86CisJJChDQykgJChDRkxBR1MpICQoQ1BQ RkxBR1MpIC9jICQoZmlsdGVyICUuYywgJF4pICQoTERMSUJTKSAvRm8gJEAKKworJS5saWI6 CisJbGliIC9ub2xvZ28gL291dDokQCAkKGZpbHRlciAlLm9iaiwgJF4pCisKKyUuZGxsOgor CWxpYiAvbm9sb2dvIC9vdXQ6JEAgJChmaWx0ZXIgJS5vYmosICReKQorCithbGw6IHRhcC5s aWIgdGVzdHMKKwordGFwLmxpYjogdGFwLm9iagorCit0YXAub2JqOiB0YXAuYyB0YXAuaAor Cit0ZXN0czogJChURVNUUykKKworJChURVNUUyk6ICUuZXhlOiAlLm9iaiB0YXAubGliCisK KyQocGF0c3Vic3QgJS5leGUsICUub2JqLCAkKFRFU1RTKSk6ICUub2JqOiAlLmMgdGFwLmgK KworY2xlYW46CisJcm0gLXJmICoub2JqIHQvKi5vYmogdGFwLmxpYiAkKFRFU1RTKQorCitj aGVjayB0ZXN0OiBhbGwKKwlwcm92ZQorCisuUEhPTlk6IGFsbCBjbGVhbiBjaGVjayB0ZXN0 IHRlc3RzCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC9SRUFETUUubWQgYi9zcmMv dGVzdC9saWJ0YXAvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi41MzMyZDUyNmMwOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2xpYnRh cC9SRUFETUUubWQKQEAgLTAsMCArMSwyNjggQEAKK05BTUUKKz09PT0KKworbGlidGFwIC0g V3JpdGUgdGVzdHMgaW4gQworCitTWU5PUFNJUworPT09PT09PT0KKworICAgICNpbmNsdWRl IDx0YXAuaD4KKworICAgIGludCBtYWluICgpIHsKKyAgICAgICAgcGxhbig1KTsKKyAgICAg ICAgaW50IGJyb256ZSA9IDEsIHNpbHZlciA9IDIsIGdvbGQgPSAzOworICAgICAgICBvayhi cm9uemUgPCBzaWx2ZXIsICJicm9uemUgaXMgbGVzcyB0aGFuIHNpbHZlciIpOworICAgICAg ICBvayhicm9uemUgPiBzaWx2ZXIsICJub3QgcXVpdGUiKTsKKyAgICAgICAgaXMoImdvbGQi LCAiZ29sZCIsICJnb2xkIGlzIGdvbGQiKTsKKyAgICAgICAgY21wX29rKHNpbHZlciwgIjwi LCBnb2xkLCAiJWQgPD0gJWQiLCBzaWx2ZXIsIGdvbGQpOworICAgICAgICBsaWtlKCJwbGF0 aW51bSIsICIuKmludW0iLCAicGxhdGludW0gbWF0Y2hlcyAuKmludW0iKTsKKyAgICAgICAg ZG9uZV90ZXN0aW5nKCk7CisgICAgfQorCityZXN1bHRzIGluOgorCisgICAgMS4uNQorICAg IG9rIDEgLSBicm9uemUgaXMgbGVzcyB0aGFuIHNpbHZlcgorICAgIG5vdCBvayAyIC0gbm90 IHF1aXRlCisgICAgIyAgIEZhaWxlZCB0ZXN0ICdub3QgcXVpdGUnCisgICAgIyAgIGF0IHQv c3lub3BzaXMuYyBsaW5lIDcuCisgICAgb2sgMyAtIGdvbGQgaXMgZ29sZAorICAgIG9rIDQg LSAyIDw9IDMKKyAgICBvayA1IC0gcGxhdGludW0gbWF0Y2hlcyAuKmludW0KKyAgICAjIExv b2tzIGxpa2UgeW91IGZhaWxlZCAxIHRlc3Qgb2YgNSBydW4uCisKK0RFU0NSSVBUSU9OCis9 PT09PT09PT09PQorCit0YXAgaXMgYW4gZWFzeSB0byByZWFkIGFuZCBlYXN5IHRvIHdyaXRl IHdheSBvZiBjcmVhdGluZyB0ZXN0cyBmb3IKK3lvdXIgc29mdHdhcmUuIFRoaXMgbGlicmFy eSBjcmVhdGVzIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvCitnZW5lcmF0ZSBpdCBm b3IgeW91ciBDIHByb2dyYW1zLiBJdCBpcyBpbXBsZW1lbnRlZCB1c2luZyBtYWNyb3MKK3Ro YXQgaW5jbHVkZSBmaWxlIGFuZCBsaW5lIGluZm8gYXV0b21hdGljYWxseSwgYW5kIG1ha2Vz IGl0IHNvIHRoYXQKK3RoZSBmb3JtYXQgbWVzc2FnZSBvZiBlYWNoIHRlc3QgaXMgb3B0aW9u YWwuIEl0IGlzIG1vc3RseSBiYXNlZCBvbgordGhlIFRlc3Q6Ok1vcmUgUGVybCBtb2R1bGUu CisKK0lOU1RBTEwKKz09PT09PT0KKworT24gKipVbml4Kiogc3lzdGVtczoKKworICAgICQg bWFrZQorICAgICQgbWFrZSBpbnN0YWxsCisKK0ZvciBtb3JlIGRldGFpbGVkIGluc3RhbGxh dGlvbiBpbnN0cnVjdGlvbnMgKGVnLCBmb3IgKipXaW5kb3dzKiopLCBzZWUgYElOU1RBTExg LgorCitGVU5DVElPTlMKKz09PT09PT09PQorCistICAgcGxhbih0ZXN0cykKKy0gICBwbGFu KE5PX1BMQU4pCistICAgcGxhbihTS0lQX0FMTCk7CistICAgcGxhbihTS0lQX0FMTCwgZm10 LCAuLi4pCisKKyAgICBVc2UgdGhpcyB0byBzdGFydCBhIHNlcmllcyBvZiB0ZXN0cy4gV2hl biB5b3Uga25vdyBob3cgbWFueSB0ZXN0cyB0aGVyZQorICAgIHdpbGwgYmUsIHlvdSBjYW4g cHV0IGEgbnVtYmVyIGFzIGEgbnVtYmVyIG9mIHRlc3RzIHlvdSBleHBlY3QgdG8gcnVuLiBJ ZgorICAgIHlvdSBkbyBub3Qga25vdyBob3cgbWFueSB0ZXN0cyB0aGVyZSB3aWxsIGJlLCB5 b3UgY2FuIHVzZSBwbGFuKE5PX1BMQU4pCisgICAgb3Igbm90IGNhbGwgdGhpcyBmdW5jdGlv bi4gV2hlbiB5b3UgcGFzcyBpdCBhIG51bWJlciBvZiB0ZXN0cyB0byBydW4sIGEKKyAgICBt ZXNzYWdlIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZyB3aWxsIGFwcGVhciBpbiB0aGUgb3V0 cHV0OgorCisgICAgICAgIDEuLjUKKworICAgIElmIHlvdSBwYXNzIGl0IFNLSVBfQUxMLCB0 aGUgd2hvbGUgdGVzdCB3aWxsIGJlIHNraXBwZWQuCisKKy0gICBvayh0ZXN0KQorLSAgIG9r KHRlc3QsIGZtdCwgLi4uKQorCisgICAgU3BlY2lmeSBhIHRlc3QuIHRoZSB0ZXN0IGNhbiBi ZSBhbnkgc3RhdGVtZW50IHJldHVybmluZyBhIHRydWUgb3IgZmFsc2UKKyAgICB2YWx1ZS4g WW91IG1heSBvcHRpb25hbGx5IHBhc3MgYSBmb3JtYXQgc3RyaW5nIGRlc2NyaWJpbmcgdGhl IHRlc3QuCisKKyAgICAgICAgb2sociA9IHJlYWRlcl9uZXcoIk9mIE1pY2UgYW5kIE1lbiIp LCAiY3JlYXRlIGEgbmV3IHJlYWRlciIpOworICAgICAgICBvayhyZWFkZXJfZ29fdG9fcGFn ZShyLCA1NSksICJjYW4gdHVybiB0aGUgcGFnZSIpOworICAgICAgICBvayhyLT5wYWdlID09 IDU1LCAicGFnZSB0dXJuZWQgdG8gdGhlIHJpZ2h0IG9uZSIpOworCisgICAgU2hvdWxkIHBy aW50IG91dDoKKworICAgICAgICBvayAxIC0gY3JlYXRlIGEgbmV3IHJlYWRlcgorICAgICAg ICBvayAyIC0gY2FuIHR1cm4gdGhlIHBhZ2UKKyAgICAgICAgb2sgMyAtIHBhZ2UgdHVybmVk IHRvIHRoZSByaWdodCBvbmUKKworICAgIE9uIGZhaWx1cmUsIGEgZGlhZ25vc3RpYyBtZXNz YWdlIHdpbGwgYmUgcHJpbnRlZCBvdXQuCisKKyAgICAgICAgbm90IG9rIDMgLSBwYWdlIHR1 cm5lZCB0byB0aGUgcmlnaHQgb25lCisgICAgICAgICMgICBGYWlsZWQgdGVzdCAncGFnZSB0 dXJuZWQgdG8gdGhlIHJpZ2h0IG9uZScKKyAgICAgICAgIyAgIGF0IHJlYWRlci5jIGxpbmUg MTMuCisKKy0gICBpcyhnb3QsIGV4cGVjdGVkKQorLSAgIGlzKGdvdCwgZXhwZWN0ZWQsIGZt dCwgLi4uKQorLSAgIGlzbnQoZ290LCB1bmV4cGVjdGVkKQorLSAgIGlzbnQoZ290LCB1bmV4 cGVjdGVkLCBmbXQsIC4uLikKKworICAgIFRlc3RzIHRoYXQgdGhlIHN0cmluZyB5b3UgZ290 IGlzIHdoYXQgeW91IGV4cGVjdGVkLiB3aXRoIGlzbnQsIGl0IGlzIHRoZQorICAgIHJldmVy c2UuCisKKyAgICAgICAgaXMoInRoaXMiLCAidGhhdCIsICJ0aGlzIGlzIHRoYXQiKTsKKwor ICAgIHByaW50czoKKworICAgICAgICBub3Qgb2sgMSAtIHRoaXMgaXMgdGhhdAorICAgICAg ICAjICAgRmFpbGVkIHRlc3QgJ3RoaXMgaXMgdGhhdCcKKyAgICAgICAgIyAgIGF0IGlzLmMg bGluZSA2LgorICAgICAgICAjICAgICAgICAgIGdvdDogJ3RoaXMnCisgICAgICAgICMgICAg IGV4cGVjdGVkOiAndGhhdCcKKworLSAgIGNtcF9vayhhLCBvcCwgYikKKy0gICBjbXBfb2so YSwgb3AsIGIsIGZtdCwgLi4uKQorCisgICAgQ29tcGFyZXMgdHdvIGludHMgd2l0aCBhbnkg YmluYXJ5IG9wZXJhdG9yIHRoYXQgZG9lc24ndCByZXF1aXJlIGFuIGx2YWx1ZS4KKyAgICBU aGlzIGlzIG5pY2UgdG8gdXNlIHNpbmNlIGl0IHByb3ZpZGVzIGEgYmV0dGVyIGVycm9yIG1l c3NhZ2UgdGhhbiBhbgorICAgIGVxdWl2YWxlbnQgb2suCisKKyAgICAgICAgY21wX29rKDQy MCwgIj4iLCA2NjYpOworCisgICAgcHJpbnRzOgorCisgICAgICAgIG5vdCBvayAxCisgICAg ICAgICMgICBGYWlsZWQgdGVzdCBhdCBjbXBvay5jIGxpbmUgNS4KKyAgICAgICAgIyAgICAg NDIwCisgICAgICAgICMgICAgICAgICA+CisgICAgICAgICMgICAgIDY2NgorCistICAgY21w X21lbShnb3QsIGV4cGVjdGVkLCBuKQorLSAgIGNtcF9tZW0oZ290LCBleHBlY3RlZCwgbiwg Zm10LCAuLi4pCisKKyAgICBUZXN0cyB0aGF0IHRoZSBmaXJzdCBuIGJ5dGVzIG9mIHRoZSBt ZW1vcnkgeW91IGdvdCBpcyB3aGF0IHlvdSBleHBlY3RlZC4KKyAgICBOVUxMIHBvaW50ZXJz IGZvciBnb3QgYW5kIGV4cGVjdGVkIGFyZSBoYW5kbGVkIChpZiBlaXRoZXIgaXMgTlVMTCwK KyAgICB0aGUgdGVzdCBmYWlscyksIGJ1dCB5b3UgbmVlZCB0byBlbnN1cmUgbiBpcyBub3Qg dG9vIGxhcmdlLgorCisgICAgICAgIGNoYXIgKmEgPSAiZm9vIjsKKyAgICAgICAgY2hhciAq YiA9ICJiYXIiOworICAgICAgICBjbXBfbWVtKGEsIGIsIDMpCisKKyAgICBwcmludHMKKwor ICAgICAgICBub3Qgb2sgMQorICAgICAgICAjICAgRmFpbGVkIHRlc3QgYXQgdC9jbXBfbWVt LmMgbGluZSA5LgorICAgICAgICAjICAgICBEaWZmZXJlbmNlIHN0YXJ0cyBhdCBvZmZzZXQg MAorICAgICAgICAjICAgICAgICAgIGdvdDogMHg2NgorICAgICAgICAjICAgICBleHBlY3Rl ZDogMHg2MgorCistICAgbGlrZShnb3QsIGV4cGVjdGVkKQorLSAgIGxpa2UoZ290LCBleHBl Y3RlZCwgZm10LCAuLi4pCistICAgdW5saWtlKGdvdCwgdW5leHBlY3RlZCkKKy0gICB1bmxp a2UoZ290LCB1bmV4cGVjdGVkLCBmbXQsIC4uLikKKworICAgIFRlc3RzIHRoYXQgdGhlIHN0 cmluZyB5b3UgZ290IG1hdGNoZXMgdGhlIGV4cGVjdGVkIGV4dGVuZGVkIFBPU0lYIHJlZ2V4 LgorICAgIHVubGlrZSBpcyB0aGUgcmV2ZXJzZS4gVGhlc2UgbWFjcm9zIGFyZSB0aGUgZXF1 aXZhbGVudCBvZiBhIHNraXAgb24KKyAgICBXaW5kb3dzLgorCisgICAgICAgIGxpa2UoInN0 cmFuZ2VyIiwgIl5zLihyKS4qXFwxJCIsICJtYXRjaGVzIHRoZSByZWdleCIpOworCisgICAg cHJpbnRzOgorCisgICAgICAgIG9rIDEgLSBtYXRjaGVzIHRoZSByZWdleAorCistICAgcGFz cygpCistICAgcGFzcyhmbXQsIC4uLikKKy0gICBmYWlsKCkKKy0gICBmYWlsKGZtdCwgLi4u KQorCisgICAgU3BlY2l5IHRoYXQgYSB0ZXN0IHN1Y2NlZWRlZCBvciBmYWlsZWQuIFVzZSB0 aGVzZSB3aGVuIHRoZSBzdGF0ZW1lbnQgaXMKKyAgICBsb25nZXIgdGhhbiB5b3UgY2FuIGZp dCBpbnRvIHRoZSBhcmd1bWVudCBnaXZlbiB0byBhbiBvaygpIHRlc3QuCisKKy0gICBkaWVz X29rKGNvZGUpCistICAgZGllc19vayhjb2RlLCBmbXQsIC4uLikKKy0gICBsaXZlc19vayhj b2RlKQorLSAgIGxpdmVzX29rKGNvZGUsIGZtdCwgLi4uKQorCisgICAgVGVzdHMgd2hldGhl ciB0aGUgZ2l2ZW4gY29kZSBjYXVzZXMgeW91ciBwcm9ncmFtIHRvIGV4aXQuIFRoZSBjb2Rl IGdldHMKKyAgICBwYXNzZWQgdG8gYSBtYWNybyB0aGF0IHdpbGwgdGVzdCBpdCBpbiBhIGZv cmtlZCBwcm9jZXNzLiBJZiB0aGUgY29kZQorICAgIHN1Y2NlZWRzIGl0IHdpbGwgYmUgZXhl Y3V0ZWQgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiBZb3UgY2FuIHRlc3QgdGhpbmdzCisgICAg bGlrZSBwYXNzaW5nIGEgZnVuY3Rpb24gYSBudWxsIHBvaW50ZXIgYW5kIG1ha2Ugc3VyZSBp dCBkb2VzbnQKKyAgICBkZXJlZmVyZW5jZSBpdCBhbmQgY3Jhc2guCisKKyAgICAgICAgZGll c19vayh7YWJvcnQoKTt9LCAiYWJvcnQgZG9lcyBjbG9zZSB5b3VyIHByb2dyYW0iKTsKKyAg ICAgICAgZGllc19vayh7aW50IHggPSAwLzA7fSwgImRpdmlkZSBieSB6ZXJvIGNyYXNoIik7 CisgICAgICAgIGxpdmVzX29rKHtwb3coMy4wLCA1LjApO30sICJub3RoaW5nIHdyb25nIHdp dGggdGFraW5nIDMqKjUiKTsKKworICAgIE9uIFdpbmRvd3MsIHRoZXNlIG1hY3JvcyBhcmUg dGhlIGVxdWl2YWxlbnQgb2YgYSBza2lwLgorCistICAgZG9uZV90ZXN0aW5nKCkKKworICAg IFN1bW1hcml6ZXMgdGhlIHRlc3RzIHRoYXQgb2NjdXJyZWQgYW5kIGV4aXRzIHRoZSBtYWlu IGZ1bmN0aW9uLiBJZgorICAgIHRoZXJlIHdhcyBubyBwbGFuLCBpdCB3aWxsIHByaW50IG91 dCB0aGUgbnVtYmVyIG9mIHRlc3RzIGFzLgorCisgICAgICAgIDEuLjUKKworICAgIEl0IHdp bGwgYWxzbyBwcmludCBhIGRpYWdub3N0aWMgbWVzc2FnZSBhYm91dCBob3cgbWFueQorICAg IGZhaWx1cmVzIHRoZXJlIHdlcmUuCisKKyAgICAgICAgIyBMb29rcyBsaWtlIHlvdSBmYWls ZWQgMiB0ZXN0cyBvZiAzIHJ1bi4KKworICAgIElmIGFsbCBwbGFubmVkIHRlc3RzIHdlcmUg c3VjY2Vzc2Z1bCwgaXQgd2lsbCByZXR1cm4gMC4gSWYgYW55CisgICAgdGVzdCBmYWlscywg aXQgd2lsbCByZXR1cm4gMS4gSWYgdGhleSBhbGwgcGFzc2VkLCBidXQgdGhlcmUKKyAgICB3 ZXJlIG1pc3NpbmcgdGVzdHMsIGl0IHdpbGwgcmV0dXJuIDIuCisKKy0gICBkaWFnKGZtdCwg Li4uKQorCisgICAgcHJpbnQgb3V0IGEgbWVzc2FnZSB0byB0aGUgdGFwIG91dHB1dCBvbiBz dGRvdXQuIEVhY2ggbGluZSBpcworICAgIHByZWNlZWRlZCBieSBhICIjICIgc28gdGhhdCB5 b3Uga25vdyBpdHMgYSBkaWFnbm9zdGljIG1lc3NhZ2UuCisKKyAgICAgICAgZGlhZygiVGhp cyBpc1xuYSBkaWFnXG50byBkZXNjcmliZVxuc29tZXRoaW5nLiIpOworCisgICAgcHJpbnRz OgorCisgICAgICAgICMgVGhpcyBpcworICAgICAgICAjIGEgZGlhZworICAgICAgICAjIHRv IGRlc2NyaWJlCisgICAgICAgICMgc29tZXRoaW5nCisKKyAgICBvaygpIGFuZCB0aGlzIGZ1 bmN0aW9uIHJldHVybiBhbiBpbnQgc28geW91IGNhbiB1c2UgaXQgbGlrZToKKworICAgICAg ICBvaygwKSB8fCBkaWFnKCJkb2ghIik7CisKKy0gICBza2lwKHRlc3QsIG4pCistICAgc2tp cCh0ZXN0LCBuLCBmbXQsIC4uLikKKy0gICBlbmRfc2tpcAorCisgICAgU2tpcCBhIHNlcmll cyBvZiBuIHRlc3RzIGlmIHRlc3QgaXMgdHJ1ZS4gWW91IG1heSBnaXZlIGEgcmVhc29uIHdo eSB5b3UgYXJlCisgICAgc2tpcHBpbmcgdGhlbSBvciBub3QuIFRoZSAocG9zc2libHkpIHNr aXBwZWQgdGVzdHMgbXVzdCBvY2N1ciBiZXR3ZWVuIHRoZQorICAgIHNraXAgYW5kIGVuZF9z a2lwIG1hY3Jvcy4KKworICAgICAgICBza2lwKFRSVUUsIDIpOworICAgICAgICBvaygxKTsK KyAgICAgICAgb2soMCk7CisgICAgICAgIGVuZF9za2lwOworCisgICAgcHJpbnRzOgorCisg ICAgICAgIG9rIDEgIyBza2lwCisgICAgICAgIG9rIDIgIyBza2lwCisKKy0gICB0b2RvKCkK Ky0gICB0b2RvKGZtdCwgLi4uKQorLSAgIGVuZF90b2RvCisKKyAgICBTcGVjaWZpZXMgYSBz ZXJpZXMgb2YgdGVzdHMgdGhhdCB5b3UgZXhwZWN0IHRvIGZhaWwgYmVjYXVzZSB0aGV5IGFy ZSBub3QKKyAgICB5ZXQgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgdG9kbygpCisgICAgICAg IG9rKDApOworICAgICAgICBlbmRfdG9kbzsKKworICAgIHByaW50czoKKworICAgICAgICBu b3Qgb2sgMSAjIFRPRE8KKyAgICAgICAgIyAgIEZhaWxlZCAoVE9ETykgdGVzdCBhdCB0b2Rv LmMgbGluZSA3CisKKy0gICBCQUlMX09VVCgpCistICAgQkFJTF9PVVQoZm10LCAuLi4pCisK KyAgICBJbW1lZGlhdGVseSBzdG9wcyBhbGwgdGVzdGluZy4KKworICAgICAgICBCQUlMX09V VCgiQ2FuJ3QgZ28gbm8gZnVydGhlciIpOworCisgICAgcHJpbnRzCisKKyAgICAgICAgQmFp bCBvdXQhICBDYW4ndCBnbyBubyBmdXJ0aGVyCisKKyAgICBhbmQgZXhpdHMgd2l0aCAyNTUu CisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC90YXAuYyBiL3NyYy90ZXN0L2xpYnRh cC90YXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTYwODky OWEyZGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9saWJ0YXAvdGFwLmMKQEAgLTAs MCArMSw0MTcgQEAKKy8qCitsaWJ0YXAgLSBXcml0ZSB0ZXN0cyBpbiBDCitDb3B5cmlnaHQg MjAxMiBKYWtlIEdlbGJtYW4gPGdlbGJtYW5AZ21haWwuY29tPgorVGhpcyBmaWxlIGlzIGxp Y2Vuc2VkIHVuZGVyIHRoZSBMR1BMCisqLworCisjZGVmaW5lIF9ERUZBVUxUX1NPVVJDRSAx CisKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUg PHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAidGFwLmgiCisK KyNpZm5kZWYgX1dJTjMyCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lz L3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKworI2luY2x1ZGUgPHJlZ2V4Lmg+ CisKKyNpZm5kZWYgTUFQX0FOT05ZTU9VUworI2lmZGVmIE1BUF9BTk9OCisjZGVmaW5lIE1B UF9BTk9OWU1PVVMgTUFQX0FOT04KKyNlbHNlCisjZXJyb3IgIlN5c3RlbSBkb2VzIG5vdCBz dXBwb3J0IG1hcHBpbmcgYW5vbnltb3VzIHBhZ2VzIgorI2VuZGlmCisjZW5kaWYKKyNlbmRp ZgorCitzdGF0aWMgaW50IGV4cGVjdGVkX3Rlc3RzID0gTk9fUExBTjsKK3N0YXRpYyBpbnQg ZmFpbGVkX3Rlc3RzOworc3RhdGljIGludCBjdXJyZW50X3Rlc3Q7CitzdGF0aWMgY2hhciAq dG9kb19tZXNnOworCitzdGF0aWMgY2hhciAqdnN0cmR1cGYoY29uc3QgY2hhciAqZm10LCB2 YV9saXN0IGFyZ3MpCisJX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwgMSwgMCkpKTsK Kwordm9pZCB0YXBfcGxhbihpbnQgdGVzdHMsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorCV9f YXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsIDIsIDMpKSk7CisKK2ludCB2b2tfYXRfbG9j KGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBpbnQgdGVzdCwgY29uc3QgY2hhciAqZm10 LAorCQkJICAgdmFfbGlzdCBhcmdzKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCA0 LCAwKSkpOworCitpbnQgb2tfYXRfbG9jKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBp bnQgdGVzdCwgY29uc3QgY2hhciAqZm10LCAuLi4pCisJX19hdHRyaWJ1dGVfXygoZm9ybWF0 KHByaW50ZiwgNCwgNSkpKTsKKworaW50IGlzX2F0X2xvYyhjb25zdCBjaGFyICpmaWxlLCBp bnQgbGluZSwgY29uc3QgY2hhciAqZ290LCBjb25zdCBjaGFyICpleHBlY3RlZCwKKwkJCSAg Y29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsIDUs IDYpKSk7CisKK2ludCBpc250X2F0X2xvYyhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwg Y29uc3QgY2hhciAqZ290LAorCQkJCWNvbnN0IGNoYXIgKmV4cGVjdGVkLCBjb25zdCBjaGFy ICpmbXQsIC4uLikKKwlfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCA1LCA2KSkpOwor CitpbnQgY21wX29rX2F0X2xvYyhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgaW50IGEs IGNvbnN0IGNoYXIgKm9wLCBpbnQgYiwKKwkJCQkgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQor CV9fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsIDYsIDcpKSk7CisKK2ludCBjbXBfbWVt X2F0X2xvYyhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3Qgdm9pZCAqZ290LAor CQkJCSAgIGNvbnN0IHZvaWQgKmV4cGVjdGVkLCBzaXplX3QgbiwgY29uc3QgY2hhciAqZm10 LCAuLi4pCisJX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwgNiwgNykpKTsKKworaW50 IGRpYWcoY29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmlu dGYsIDEsIDIpKSk7CisKK2ludCBiYWlsX291dChpbnQgaWdub3JlLCBjb25zdCBjaGFyICpm bXQsIC4uLikKKwlfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCAyLCAzKSkpOworCit2 b2lkIHRhcF9za2lwKGludCBuLCBjb25zdCBjaGFyICpmbXQsIC4uLikKKwlfX2F0dHJpYnV0 ZV9fKChmb3JtYXQocHJpbnRmLCAyLCAzKSkpOworCit2b2lkIHRhcF90b2RvKGludCBpZ25v cmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorCV9fYXR0cmlidXRlX18oKGZvcm1hdChwcmlu dGYsIDIsIDMpKSk7CisKK2ludCBsaWtlX2F0X2xvYyhpbnQgZm9yX21hdGNoLCBjb25zdCBj aGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZ290LAorCQkJCWNvbnN0IGNoYXIg KmV4cGVjdGVkLCBjb25zdCBjaGFyICpmbXQsIC4uLikKKwlfX2F0dHJpYnV0ZV9fKChmb3Jt YXQocHJpbnRmLCA2LCA3KSkpOworCitzdGF0aWMgY2hhciAqCit2c3RyZHVwZihjb25zdCBj aGFyICpmbXQsIHZhX2xpc3QgYXJncykKK3sKKwljaGFyICpzdHI7CisJaW50IHNpemU7CisJ dmFfbGlzdCBhcmdzMjsKKwl2YV9jb3B5KGFyZ3MyLCBhcmdzKTsKKwlpZiAoIWZtdCkKKwkJ Zm10ID0gIiI7CisJc2l6ZSA9IHZzbnByaW50ZihOVUxMLCAwLCBmbXQsIGFyZ3MyKSArIDI7 CisJc3RyID0gbWFsbG9jKHNpemUpOworCWlmICghc3RyKSB7CisJCXBlcnJvcigibWFsbG9j IGVycm9yIik7CisJCWV4aXQoMSk7CisJfQorCXZzcHJpbnRmKHN0ciwgZm10LCBhcmdzKTsK Kwl2YV9lbmQoYXJnczIpOworCXJldHVybiBzdHI7Cit9CisKK3ZvaWQKK3RhcF9wbGFuKGlu dCB0ZXN0cywgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJZXhwZWN0ZWRfdGVzdHMgPSB0 ZXN0czsKKwlpZiAodGVzdHMgPT0gU0tJUF9BTEwpIHsKKwkJY2hhciAqd2h5OworCQl2YV9s aXN0IGFyZ3M7CisJCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisJCXdoeSA9IHZzdHJkdXBmKGZt dCwgYXJncyk7CisJCXZhX2VuZChhcmdzKTsKKwkJcHJpbnRmKCIxLi4wICIpOworCQlkaWFn KCJTS0lQICVzXG4iLCB3aHkpOworCQlleGl0KDApOworCX0KKwlpZiAodGVzdHMgIT0gTk9f UExBTikgeworCQlwcmludGYoIjEuLiVkXG4iLCB0ZXN0cyk7CisJfQorfQorCitpbnQKK3Zv a19hdF9sb2MoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGludCB0ZXN0LCBjb25zdCBj aGFyICpmbXQsIHZhX2xpc3QgYXJncykKK3sKKwljaGFyICpuYW1lID0gdnN0cmR1cGYoZm10 LCBhcmdzKTsKKwlpZiAoIXRlc3QpIHsKKwkJcHJpbnRmKCJub3QgIik7CisJfQorCXByaW50 Zigib2sgJWQiLCArK2N1cnJlbnRfdGVzdCk7CisJaWYgKCpuYW1lKQorCQlwcmludGYoIiAt ICVzIiwgbmFtZSk7CisJaWYgKHRvZG9fbWVzZykgeworCQlwcmludGYoIiAjIFRPRE8iKTsK KwkJaWYgKCp0b2RvX21lc2cpCisJCQlwcmludGYoIiAlcyIsIHRvZG9fbWVzZyk7CisJfQor CXByaW50ZigiXG4iKTsKKwlpZiAoIXRlc3QpIHsKKwkJcHJpbnRmKCIjICAgRmFpbGVkICIp OworCQlpZiAodG9kb19tZXNnKQorCQkJcHJpbnRmKCIoVE9ETykgIik7CisJCXByaW50Zigi dGVzdCAiKTsKKwkJaWYgKCpuYW1lKQorCQkJcHJpbnRmKCInJXMnXG4jICAgIiwgbmFtZSk7 CisJCXByaW50ZigiYXQgJXMgbGluZSAlZC5cbiIsIGZpbGUsIGxpbmUpOworCQlpZiAoIXRv ZG9fbWVzZykKKwkJCWZhaWxlZF90ZXN0cysrOworCX0KKwlmcmVlKG5hbWUpOworCXJldHVy biB0ZXN0OworfQorCitpbnQKK29rX2F0X2xvYyhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGlu ZSwgaW50IHRlc3QsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCXZhX2xpc3QgYXJnczsK Kwl2YV9zdGFydChhcmdzLCBmbXQpOworCXZva19hdF9sb2MoZmlsZSwgbGluZSwgdGVzdCwg Zm10LCBhcmdzKTsKKwl2YV9lbmQoYXJncyk7CisJcmV0dXJuIHRlc3Q7Cit9CisKK3N0YXRp YyBpbnQKK215c3RyY21wKGNvbnN0IGNoYXIgKmEsIGNvbnN0IGNoYXIgKmIpCit7CisJcmV0 dXJuIGEgPT0gYiA/IDAgOiAhYSA/IC0xIDogIWIgPyAxIDogc3RyY21wKGEsIGIpOworfQor CisjZGVmaW5lIGVxKGEsIGIpICghbXlzdHJjbXAoYSwgYikpCisjZGVmaW5lIG5lKGEsIGIp IChteXN0cmNtcChhLCBiKSkKKworaW50Citpc19hdF9sb2MoY29uc3QgY2hhciAqZmlsZSwg aW50IGxpbmUsIGNvbnN0IGNoYXIgKmdvdCwgY29uc3QgY2hhciAqZXhwZWN0ZWQsCisJCSAg Y29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJaW50IHRlc3QgPSBlcShnb3QsIGV4cGVjdGVk KTsKKwl2YV9saXN0IGFyZ3M7CisJdmFfc3RhcnQoYXJncywgZm10KTsKKwl2b2tfYXRfbG9j KGZpbGUsIGxpbmUsIHRlc3QsIGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworCWlmICgh dGVzdCkgeworCQlkaWFnKCIgICAgICAgICBnb3Q6ICclcyciLCBnb3QpOworCQlkaWFnKCIg ICAgZXhwZWN0ZWQ6ICclcyciLCBleHBlY3RlZCk7CisJfQorCXJldHVybiB0ZXN0OworfQor CitpbnQKK2lzbnRfYXRfbG9jKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBj aGFyICpnb3QsIGNvbnN0IGNoYXIgKmV4cGVjdGVkLAorCQkJY29uc3QgY2hhciAqZm10LCAu Li4pCit7CisJaW50IHRlc3QgPSBuZShnb3QsIGV4cGVjdGVkKTsKKwl2YV9saXN0IGFyZ3M7 CisJdmFfc3RhcnQoYXJncywgZm10KTsKKwl2b2tfYXRfbG9jKGZpbGUsIGxpbmUsIHRlc3Qs IGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworCWlmICghdGVzdCkgeworCQlkaWFnKCIg ICAgICAgICBnb3Q6ICclcyciLCBnb3QpOworCQlkaWFnKCIgICAgZXhwZWN0ZWQ6IGFueXRo aW5nIGVsc2UiKTsKKwl9CisJcmV0dXJuIHRlc3Q7Cit9CisKK2ludAorY21wX29rX2F0X2xv Yyhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgaW50IGEsIGNvbnN0IGNoYXIgKm9wLCBp bnQgYiwKKwkJCSAgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJaW50IHRlc3QgPSBlcShv cCwgInx8IikgPyBhIHx8IGIgOgorCQllcShvcCwgIiYmIikJCT8gYSAmJiBiIDoKKwkJZXEo b3AsICJ8IikJCQk/IGEgfCBiIDoKKwkJZXEob3AsICJeIikJCQk/IGEgXiBiIDoKKwkJZXEo b3AsICImIikJCQk/IGEgJiBiIDoKKwkJZXEob3AsICI9PSIpCQk/IGEgPT0gYiA6CisJCWVx KG9wLCAiIT0iKQkJPyBhICE9IGIgOgorCQllcShvcCwgIjwiKQkJCT8gYSA8IGIgOgorCQll cShvcCwgIj4iKQkJCT8gYSA+IGIgOgorCQllcShvcCwgIjw9IikJCT8gYSA8PSBiIDoKKwkJ ZXEob3AsICI+PSIpCQk/IGEgPj0gYiA6CisJCWVxKG9wLCAiPDwiKQkJPyBhIDw8IGIgOgor CQllcShvcCwgIj4+IikJCT8gYSA+PiBiIDoKKwkJZXEob3AsICIrIikJCQk/IGEgKyBiIDoK KwkJZXEob3AsICItIikJCQk/IGEgLSBiIDoKKwkJZXEob3AsICIqIikJCQk/IGEgKiBiIDoK KwkJZXEob3AsICIvIikJCQk/IGEgLyBiIDoKKwkJZXEob3AsICIlIikJCQk/IGEgJSBiIDoK KwkJCQkJCQkgIGRpYWcoInVucmVjb2duaXplZCBvcGVyYXRvciAnJXMnIiwgb3ApOworCXZh X2xpc3QgYXJnczsKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCXZva19hdF9sb2MoZmlsZSwg bGluZSwgdGVzdCwgZm10LCBhcmdzKTsKKwl2YV9lbmQoYXJncyk7CisJaWYgKCF0ZXN0KSB7 CisJCWRpYWcoIiAgICAlZCIsIGEpOworCQlkaWFnKCIgICAgICAgICVzIiwgb3ApOworCQlk aWFnKCIgICAgJWQiLCBiKTsKKwl9CisJcmV0dXJuIHRlc3Q7Cit9CisKK3N0YXRpYyBpbnQK K2ZpbmRfbWVtX2RpZmYoY29uc3QgY2hhciAqYSwgY29uc3QgY2hhciAqYiwgc2l6ZV90IG4s IHNpemVfdCAqb2Zmc2V0KQoreworCXNpemVfdCBpOworCWlmIChhID09IGIpCisJCXJldHVy biAwOworCWlmICghYSB8fCAhYikKKwkJcmV0dXJuIDI7CisJZm9yIChpID0gMDsgaSA8IG47 IGkrKykgeworCQlpZiAoYVtpXSAhPSBiW2ldKSB7CisJCQkqb2Zmc2V0ID0gaTsKKwkJCXJl dHVybiAxOworCQl9CisJfQorCXJldHVybiAwOworfQorCitpbnQKK2NtcF9tZW1fYXRfbG9j KGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCB2b2lkICpnb3QsCisJCQkgICBj b25zdCB2b2lkICpleHBlY3RlZCwgc2l6ZV90IG4sIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQor eworCXNpemVfdCBvZmZzZXQ7CisJaW50IGRpZmYgPSBmaW5kX21lbV9kaWZmKGdvdCwgZXhw ZWN0ZWQsIG4sICZvZmZzZXQpOworCXZhX2xpc3QgYXJnczsKKwl2YV9zdGFydChhcmdzLCBm bXQpOworCXZva19hdF9sb2MoZmlsZSwgbGluZSwgIWRpZmYsIGZtdCwgYXJncyk7CisJdmFf ZW5kKGFyZ3MpOworCWlmIChkaWZmID09IDEpIHsKKwkJZGlhZygiICAgIERpZmZlcmVuY2Ug c3RhcnRzIGF0IG9mZnNldCAlbHUiLCBvZmZzZXQpOworCQlkaWFnKCIgICAgICAgICBnb3Q6 IDB4JTAyeCIsICgoY29uc3QgdW5zaWduZWQgY2hhciAqKWdvdClbb2Zmc2V0XSk7CisJCWRp YWcoIiAgICBleHBlY3RlZDogMHglMDJ4IiwgKChjb25zdCB1bnNpZ25lZCBjaGFyICopZXhw ZWN0ZWQpW29mZnNldF0pOworCX0gZWxzZSBpZiAoZGlmZiA9PSAyKSB7CisJCWRpYWcoIiAg ICAgICAgIGdvdDogJXMiLCBnb3QgPyAibm90IE5VTEwiIDogIk5VTEwiKTsKKwkJZGlhZygi ICAgIGV4cGVjdGVkOiAlcyIsIGV4cGVjdGVkID8gIm5vdCBOVUxMIiA6ICJOVUxMIik7CisJ fQorCXJldHVybiAhZGlmZjsKK30KKworaW50CitkaWFnKGNvbnN0IGNoYXIgKmZtdCwgLi4u KQoreworCXZhX2xpc3QgYXJnczsKKwljaGFyICptZXNnLCAqbGluZTsKKwlpbnQgaTsKKwl2 YV9zdGFydChhcmdzLCBmbXQpOworCWlmICghZm10KSB7CisJCXZhX2VuZChhcmdzKTsKKwkJ cmV0dXJuIDA7CisJfQorCW1lc2cgPSB2c3RyZHVwZihmbXQsIGFyZ3MpOworCWxpbmUgPSBt ZXNnOworCWZvciAoaSA9IDA7ICpsaW5lOyBpKyspIHsKKwkJY2hhciBjID0gbWVzZ1tpXTsK KwkJaWYgKCFjIHx8IGMgPT0gJ1xuJykgeworCQkJbWVzZ1tpXSA9ICdcMCc7CisJCQlwcmlu dGYoIiMgJXNcbiIsIGxpbmUpOworCQkJaWYgKCFjKQorCQkJCWJyZWFrOworCQkJbWVzZ1tp XSA9IGM7CisJCQlsaW5lID0gbWVzZyArIGkgKyAxOworCQl9CisJfQorCWZyZWUobWVzZyk7 CisJdmFfZW5kKGFyZ3MpOworCXJldHVybiAwOworfQorCitpbnQKK2V4aXRfc3RhdHVzKHZv aWQpCit7CisJaW50IHJldHZhbCA9IDA7CisJaWYgKGV4cGVjdGVkX3Rlc3RzID09IE5PX1BM QU4pIHsKKwkJcHJpbnRmKCIxLi4lZFxuIiwgY3VycmVudF90ZXN0KTsKKwl9IGVsc2UgaWYg KGN1cnJlbnRfdGVzdCAhPSBleHBlY3RlZF90ZXN0cykgeworCQlkaWFnKCJMb29rcyBsaWtl IHlvdSBwbGFubmVkICVkIHRlc3QlcyBidXQgcmFuICVkLiIsIGV4cGVjdGVkX3Rlc3RzLAor CQkJIGV4cGVjdGVkX3Rlc3RzID4gMSA/ICJzIiA6ICIiLCBjdXJyZW50X3Rlc3QpOworCQly ZXR2YWwgPSAyOworCX0KKwlpZiAoZmFpbGVkX3Rlc3RzKSB7CisJCWRpYWcoIkxvb2tzIGxp a2UgeW91IGZhaWxlZCAlZCB0ZXN0JXMgb2YgJWQgcnVuLiIsIGZhaWxlZF90ZXN0cywKKwkJ CSBmYWlsZWRfdGVzdHMgPiAxID8gInMiIDogIiIsIGN1cnJlbnRfdGVzdCk7CisJCXJldHZh bCA9IDE7CisJfQorCXJldHVybiByZXR2YWw7Cit9CisKK2ludAorYmFpbF9vdXQoaW50IGln bm9yZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBhcmdzOworCSh2b2lk KWlnbm9yZTsKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCXByaW50ZigiQmFpbCBvdXQhICAi KTsKKwl2cHJpbnRmKGZtdCwgYXJncyk7CisJcHJpbnRmKCJcbiIpOworCXZhX2VuZChhcmdz KTsKKwlleGl0KDI1NSk7CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQKK3RhcF9za2lwKGludCBu LCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwljaGFyICp3aHk7CisJdmFfbGlzdCBhcmdz OworCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisJd2h5ID0gdnN0cmR1cGYoZm10LCBhcmdzKTsK Kwl2YV9lbmQoYXJncyk7CisJd2hpbGUgKG4tLSA+IDApIHsKKwkJcHJpbnRmKCJvayAlZCAi LCArK2N1cnJlbnRfdGVzdCk7CisJCWRpYWcoInNraXAgJXNcbiIsIHdoeSk7CisJfQorCWZy ZWUod2h5KTsKK30KKwordm9pZAordGFwX3RvZG8oaW50IGlnbm9yZSwgY29uc3QgY2hhciAq Zm10LCAuLi4pCit7CisJdmFfbGlzdCBhcmdzOworCSh2b2lkKWlnbm9yZTsKKwl2YV9zdGFy dChhcmdzLCBmbXQpOworCXRvZG9fbWVzZyA9IHZzdHJkdXBmKGZtdCwgYXJncyk7CisJdmFf ZW5kKGFyZ3MpOworfQorCit2b2lkCit0YXBfZW5kX3RvZG8odm9pZCkKK3sKKwlmcmVlKHRv ZG9fbWVzZyk7CisJdG9kb19tZXNnID0gTlVMTDsKK30KKworI2lmbmRlZiBfV0lOMzIKKy8q IENyZWF0ZSBhIHNoYXJlZCBtZW1vcnkgaW50IHRvIGtlZXAgdHJhY2sgb2Ygd2hldGhlciBh IHBpZWNlIG9mIGNvZGUgZXhlY3V0ZWQKK2RpZXMuIHRvIGJlIHVzZWQgaW4gdGhlIGRpZXNf b2sgYW5kIGxpdmVzX29rIG1hY3Jvcy4gICovCitpbnQKK3RhcF90ZXN0X2RpZWQoaW50IHN0 YXR1cykKK3sKKwlzdGF0aWMgaW50ICp0ZXN0X2RpZWQgPSBOVUxMOworCWludCBwcmV2Owor CWlmICghdGVzdF9kaWVkKSB7CisJCXRlc3RfZGllZCA9IG1tYXAoMCwgc2l6ZW9mKGludCks IFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCQkJCQkgTUFQX1NIQVJFRCB8IE1BUF9BTk9O WU1PVVMsIC0xLCAwKTsKKwkJKnRlc3RfZGllZCA9IDA7CisJfQorCXByZXYgPSAqdGVzdF9k aWVkOworCSp0ZXN0X2RpZWQgPSBzdGF0dXM7CisJcmV0dXJuIHByZXY7Cit9CisKK2ludAor bGlrZV9hdF9sb2MoaW50IGZvcl9tYXRjaCwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUs IGNvbnN0IGNoYXIgKmdvdCwKKwkJCWNvbnN0IGNoYXIgKmV4cGVjdGVkLCBjb25zdCBjaGFy ICpmbXQsIC4uLikKK3sKKwlpbnQgdGVzdDsKKwlyZWdleF90IHJlOworCXZhX2xpc3QgYXJn czsKKwlpbnQgZXJyID0gcmVnY29tcCgmcmUsIGV4cGVjdGVkLCBSRUdfRVhURU5ERUQpOwor CWlmIChlcnIpIHsKKwkJY2hhciBlcnJidWZbMjU2XTsKKwkJcmVnZXJyb3IoZXJyLCAmcmUs IGVycmJ1Ziwgc2l6ZW9mIGVycmJ1Zik7CisJCWZwcmludGYoc3RkZXJyLCAiVW5hYmxlIHRv IGNvbXBpbGUgcmVnZXggJyVzJzogJXMgYXQgJXMgbGluZSAlZFxuIiwKKwkJCQlleHBlY3Rl ZCwgZXJyYnVmLCBmaWxlLCBsaW5lKTsKKwkJZXhpdCgyNTUpOworCX0KKwllcnIgPSByZWdl eGVjKCZyZSwgZ290LCAwLCBOVUxMLCAwKTsKKwlyZWdmcmVlKCZyZSk7CisJdGVzdCA9IGZv cl9tYXRjaCA/ICFlcnIgOiBlcnI7CisJdmFfc3RhcnQoYXJncywgZm10KTsKKwl2b2tfYXRf bG9jKGZpbGUsIGxpbmUsIHRlc3QsIGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworCWlm ICghdGVzdCkgeworCQlpZiAoZm9yX21hdGNoKSB7CisJCQlkaWFnKCIgICAgICAgICAgICAg ICAgICAgJyVzJyIsIGdvdCk7CisJCQlkaWFnKCIgICAgZG9lc24ndCBtYXRjaDogJyVzJyIs IGV4cGVjdGVkKTsKKwkJfSBlbHNlIHsKKwkJCWRpYWcoIiAgICAgICAgICAgICAgICAgICAn JXMnIiwgZ290KTsKKwkJCWRpYWcoIiAgICAgICAgICBtYXRjaGVzOiAnJXMnIiwgZXhwZWN0 ZWQpOworCQl9CisJfQorCXJldHVybiB0ZXN0OworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9saWJ0YXAvdGFwLmggYi9zcmMvdGVzdC9saWJ0YXAvdGFwLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmUzNjZhNmFmZmRjCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvbGlidGFwL3RhcC5oCkBAIC0wLDAgKzEsMTE1IEBACisvKgor bGlidGFwIC0gV3JpdGUgdGVzdHMgaW4gQworQ29weXJpZ2h0IDIwMTIgSmFrZSBHZWxibWFu IDxnZWxibWFuQGdtYWlsLmNvbT4KK1RoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg TEdQTAorKi8KKworI2lmbmRlZiBfX1RBUF9IX18KKyNkZWZpbmUgX19UQVBfSF9fCisKKyNp ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2lmbmRlZiB2YV9j b3B5CisjaWZkZWYgX192YV9jb3B5CisjZGVmaW5lIHZhX2NvcHkgX192YV9jb3B5CisjZWxz ZQorI2RlZmluZSB2YV9jb3B5KGQsIHMpICgoZCkgPSAocykpCisjZW5kaWYKKyNlbmRpZgor CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxz dGRhcmcuaD4KKworaW50ICAgICB2b2tfYXRfbG9jICAgICAgKGNvbnN0IGNoYXIgKmZpbGUs IGludCBsaW5lLCBpbnQgdGVzdCwgY29uc3QgY2hhciAqZm10LAorICAgICAgICAgICAgICAg ICAgICAgICAgIHZhX2xpc3QgYXJncyk7CitpbnQgICAgIG9rX2F0X2xvYyAgICAgICAoY29u c3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGludCB0ZXN0LCBjb25zdCBjaGFyICpmbXQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKK2ludCAgICAgaXNfYXRfbG9jICAgICAg IChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZ290LAorICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4cGVjdGVkLCBjb25zdCBjaGFyICpm bXQsIC4uLik7CitpbnQgICAgIGlzbnRfYXRfbG9jICAgICAoY29uc3QgY2hhciAqZmlsZSwg aW50IGxpbmUsIGNvbnN0IGNoYXIgKmdvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpleHBlY3RlZCwgY29uc3QgY2hhciAqZm10LCAuLi4pOworaW50ICAgICBj bXBfb2tfYXRfbG9jICAgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBpbnQgYSwgY29u c3QgY2hhciAqb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGIsIGNvbnN0IGNo YXIgKmZtdCwgLi4uKTsKK2ludCAgICAgY21wX21lbV9hdF9sb2MgIChjb25zdCBjaGFyICpm aWxlLCBpbnQgbGluZSwgY29uc3Qgdm9pZCAqZ290LAorICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHZvaWQgKmV4cGVjdGVkLCBzaXplX3QgbiwgY29uc3QgY2hhciAqZm10LCAu Li4pOworaW50ICAgICBiYWlsX291dCAgICAgICAgKGludCBpZ25vcmUsIGNvbnN0IGNoYXIg KmZtdCwgLi4uKTsKK3ZvaWQgICAgdGFwX3BsYW4gICAgICAgIChpbnQgdGVzdHMsIGNvbnN0 IGNoYXIgKmZtdCwgLi4uKTsKK2ludCAgICAgZGlhZyAgICAgICAgICAgIChjb25zdCBjaGFy ICpmbXQsIC4uLik7CitpbnQgICAgIGV4aXRfc3RhdHVzICAgICAodm9pZCk7Cit2b2lkICAg IHRhcF9za2lwICAgICAgICAoaW50IG4sIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK3ZvaWQg ICAgdGFwX3RvZG8gICAgICAgIChpbnQgaWdub3JlLCBjb25zdCBjaGFyICpmbXQsIC4uLik7 Cit2b2lkICAgIHRhcF9lbmRfdG9kbyAgICAodm9pZCk7CisKKyNkZWZpbmUgTk9fUExBTiAg ICAgICAgICAtMQorI2RlZmluZSBTS0lQX0FMTCAgICAgICAgIC0yCisjZGVmaW5lIG9rKC4u LikgICAgICAgICAgb2tfYXRfbG9jKF9fRklMRV9fLCBfX0xJTkVfXywgX19WQV9BUkdTX18s IE5VTEwpCisjZGVmaW5lIGlzKC4uLikgICAgICAgICAgaXNfYXRfbG9jKF9fRklMRV9fLCBf X0xJTkVfXywgX19WQV9BUkdTX18sIE5VTEwpCisjZGVmaW5lIGlzbnQoLi4uKSAgICAgICAg aXNudF9hdF9sb2MoX19GSUxFX18sIF9fTElORV9fLCBfX1ZBX0FSR1NfXywgTlVMTCkKKyNk ZWZpbmUgY21wX29rKC4uLikgICAgICBjbXBfb2tfYXRfbG9jKF9fRklMRV9fLCBfX0xJTkVf XywgX19WQV9BUkdTX18sIE5VTEwpCisjZGVmaW5lIGNtcF9tZW0oLi4uKSAgICAgY21wX21l bV9hdF9sb2MoX19GSUxFX18sIF9fTElORV9fLCBfX1ZBX0FSR1NfXywgTlVMTCkKKyNkZWZp bmUgcGxhbiguLi4pICAgICAgICB0YXBfcGxhbihfX1ZBX0FSR1NfXywgTlVMTCkKKyNkZWZp bmUgZG9uZV90ZXN0aW5nKCkgICByZXR1cm4gZXhpdF9zdGF0dXMoKQorI2RlZmluZSBCQUlM X09VVCguLi4pICAgIGJhaWxfb3V0KDAsICIiIF9fVkFfQVJHU19fLCBOVUxMKQorI2RlZmlu ZSBwYXNzKC4uLikgICAgICAgIG9rKDEsICIiIF9fVkFfQVJHU19fKQorI2RlZmluZSBmYWls KC4uLikgICAgICAgIG9rKDAsICIiIF9fVkFfQVJHU19fKQorCisjZGVmaW5lIHNraXAodGVz dCwgLi4uKSAgZG8ge2lmICh0ZXN0KSB7dGFwX3NraXAoX19WQV9BUkdTX18sIE5VTEwpOyBi cmVhazt9CisjZGVmaW5lIGVuZF9za2lwICAgICAgICAgfSB3aGlsZSAoMCkKKworI2RlZmlu ZSB0b2RvKC4uLikgICAgICAgIHRhcF90b2RvKDAsICIiIF9fVkFfQVJHU19fLCBOVUxMKQor I2RlZmluZSBlbmRfdG9kbyAgICAgICAgIHRhcF9lbmRfdG9kbygpCisKKyNkZWZpbmUgZGll c19vayguLi4pICAgICBkaWVzX29rX2NvbW1vbigxLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUg bGl2ZXNfb2soLi4uKSAgICBkaWVzX29rX2NvbW1vbigwLCBfX1ZBX0FSR1NfXykKKworI2lm ZGVmIF9XSU4zMgorI2RlZmluZSBsaWtlKC4uLikgICAgICAgIHRhcF9za2lwKDEsICJsaWtl IGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBXaW5kb3dzIikKKyNkZWZpbmUgdW5saWtlKC4uLikg ICAgICB0YXBfc2tpcCgxLCAidW5saWtlIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBXaW5kb3dz IikKKyNkZWZpbmUgZGllc19va19jb21tb24oLi4uKSBcCisgICAgICAgICAgICAgICAgICAg ICAgICAgdGFwX3NraXAoMSwgIkRlYXRoIGRldGVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkIG9u IFdpbmRvd3MiKQorI2Vsc2UKKyNkZWZpbmUgbGlrZSguLi4pICAgICAgICBsaWtlX2F0X2xv YygxLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fVkFfQVJHU19fLCBOVUxMKQorI2RlZmluZSB1 bmxpa2UoLi4uKSAgICAgIGxpa2VfYXRfbG9jKDAsIF9fRklMRV9fLCBfX0xJTkVfXywgX19W QV9BUkdTX18sIE5VTEwpCitpbnQgICAgIGxpa2VfYXRfbG9jICAgICAoaW50IGZvcl9tYXRj aCwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqZ290LCBjb25zdCBjaGFyICpleHBlY3RlZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICpmbXQsIC4uLik7CisjaW5jbHVkZSA8dW5pc3Rk Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3dhaXQuaD4KK2lu dCB0YXBfdGVzdF9kaWVkIChpbnQgc3RhdHVzKTsKKyNkZWZpbmUgZGllc19va19jb21tb24o Zm9yX2RlYXRoLCBjb2RlLCAuLi4pICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg ICAgaW50IGNwaWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICAgaW50IGl0X2RpZWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgdGFwX3Rlc3RfZGllZCgxKTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY3BpZCA9IGZvcmsoKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3dpdGNoIChjcGlkKSB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2FzZSAt MTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg ICAgICAgIHBlcnJvcigiZm9yayBlcnJvciIpOyAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICAgICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgY2FzZSAwOiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGNsb3NlKDEpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGNsb3NlKDIpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGNv ZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg ICAgICAgIHRhcF90ZXN0X2RpZWQoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICAgICAgIGV4aXQoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdhaXRwaWQoY3BpZCwgTlVMTCwg MCkgPCAwKSB7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBlcnJvcigid2Fp dHBpZCBlcnJvciIpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGV4 aXQoMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICAgaXRfZGllZCA9IHRhcF90ZXN0X2RpZWQoMCk7ICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgaWYgKCFpdF9kaWVkKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHtjb2RlfSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgb2soZm9yX2RlYXRoID8g aXRfZGllZCA6ICFpdF9kaWVkLCAiIiBfX1ZBX0FSR1NfXyk7IFwKKyAgICB9IHdoaWxlICgw KQorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tZXNvbi5idWls ZAppbmRleCBjZDQ1Y2JmNTdmYi4uNjRmYTc1MWE1YTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21lc29uLmJ1aWxkCkBAIC04LDYgKzgsNyBA QCBzdWJkaXIoJ3Bvc3RtYXN0ZXInKQogc3ViZGlyKCdyZWNvdmVyeScpCiBzdWJkaXIoJ3N1 YnNjcmlwdGlvbicpCiBzdWJkaXIoJ21vZHVsZXMnKQorc3ViZGlyKCdkZm9yJykKIAogaWYg c3NsLmZvdW5kKCkKICAgc3ViZGlyKCdzc2wnKQotLSAKMi41My4wCgo= --------------WPZdujZzC0BCYuxPBGMyEtBX Content-Type: text/x-patch; charset=UTF-8; name="v04-0002-Implement-Delta-Frame-of-Reference-compression.patch" Content-Disposition: attachment; filename*0="v04-0002-Implement-Delta-Frame-of-Reference-compression.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSBiOGI1ZTMyMzFjZmZjOTZhMDVkNDEyMTJmODU4ODliM2MwNWRmMTQ2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTc6MzA6MjIgKzA4MDAKU3ViamVjdDogW1BB VENIIHYwNCAyLzNdIEltcGxlbWVudCBEZWx0YSBGcmFtZSBvZiBSZWZlcmVuY2UgY29tcHJl c3Npb24uCgpJbXBsZW1lbnQgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSBiYXNlZCBvbiB0 aGUgRGVsdGEgRnJhbWUgb2YKUmVmZXJlbmNlIHRlY2huaXF1ZSAoREZPUikuCgpERm9SIHN1 cHBvcnRzIGJvdGggZXh0ZXJuYWwgbWVtb3J5IChvdXRlciBtZW1vcnkpIHByb3ZpZGVkIGJ5 IGEgY2FsbGVyCmFuZCBhdXRvbWF0aWNhbGx5IG1hbmFnZWQgbWVtb3J5LCBhbGxvY2F0ZWQg YnkgbWVhbnMgb2YgbWFsbG9jLCBwYWxsb2MKb3Igc2ltaWxhciBmdW5jdGlvbnMuIE1lbW9y eSBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb24gbXVzdCBiZSBkZWZpbmVkCmR1cmluZyBpbml0 aWFsaXphdGlvbi4gQWxsIHN1YnNlcXVlbnQgb3BlcmF0aW9ucyBmb2xsb3cgdGhpcwpjb25m aWd1cmF0aW9uLiBGb3IgZXhhbXBsZSwgYSBjYWxsZXIgY2FuIHBsYWNlIGEgYnVmZmVyIG9u IHRoZSBzdGFjayB0bwphdm9pZCBoZWFwIGFsbG9jYXRpb24gYW5kIHBhc3MgdGhlIGJ1ZmZl ciB0byBhIERGb1IgdW5pdC4gQXMgYSByZXN1bHQsCnRoZSBwYWNraW5nIGFuZCB1bnBhY2tp bmcgcHJvY2Vzc2VzIGV4Y2x1ZGUgZHluYW1pYyBhbGxvY2F0aW9uLgoKVGhlIERGb1IgdW5p dCBpcyBpbXBsZW1lbnRlZCBhcyBhIHNldCBvZiB0ZW1wbGF0ZXMuIERldmVsb3BlcnMgY2Fu CmdlbmVyYXRlIERGb1IgaW1wbGVtZW50YXRpb25zIGZvciBhbnkgdW5zaWduZWQgaW50ZWdl ciB0eXBlICh1aW50OF90LAp1aW50MTZfdCwgdWludDMyX3QsIHVpbnQ2NF90KS4gVGhlIGRm b3JfdTE2IHVuaXQgaXMgaW1wbGVtZW50ZWQuCgpUaGUgdW5pdCB0ZXN0IGlzIGltcGxlbWVu dGVkIGFzIGEgQyBwcm9ncmFtIChFTEYgZXhlY3V0YWJsZSkuIFRoZSB0ZXN0CmNhbiBiZSBy dW4gd2l0aCB0aGUgJ21ha2UgY2hlY2stdW5pdCcuIFRlc3RzIHN1cHBvcnQgdGhlIFRBUCBw cm90b2NvbAphbmQgYXJlIGV4ZWN1dGVkIHVzaW5nIHRoZSBQcm92ZSB1dGlsaXR5LgoKQXV0 aG9yOiBFdmdlbnkgVm9yb3BhZXYgPGV2Z2VueS52b3JvcGFldkB0YW50b3JsYWJzLmNvbT4g PGV2b3JvcEBnbWFpbC5jb20+ClJldmlld2VkIGJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1A eWFuZGV4LXRlYW0ucnU+Ci0tLQogc3JjL2JhY2tlbmQvbGliL01ha2VmaWxlLmRmb3IgICAg ICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvbGliL2Rmb3JfdGVtcGwuYyAgICAgICAgfCA2MTcg KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvbGliL2Rmb3JfdTE2 LmMgICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvbGliL21lc29uLmJ1aWxkICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGwuaCAgICAgICAgfCAgMjcg KysKIHNyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsX3N0YXBsZS5oIHwgMTI1ICsrKysrKwog c3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfdW5kZWYuaCAgfCAgMjkgKysKIHNyYy9pbmNs dWRlL2xpYi9kZm9yX3UxNi5oICAgICAgICAgIHwgIDEzICsKIHNyYy9pbmNsdWRlL2xpYi9k Zm9yX3UxNl9jb25maWcuaCAgIHwgICA0ICsKIHNyYy90ZXN0L2Rmb3IvLmdpdGlnbm9yZSAg ICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L2Rmb3IvTWFrZWZpbGUgICAgICAgICAgICAg IHwgICAzICstCiBzcmMvdGVzdC9kZm9yL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAgMiAr CiBzcmMvdGVzdC9kZm9yL3Rlc3RfZGZvcl91MTYuYyAgICAgICB8IDM3MSArKysrKysrKysr KysrKysrKwogMTMgZmlsZXMgY2hhbmdlZCwgMTIwMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvbGliL2Rmb3JfdGVtcGwu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2xpYi9kZm9yX3UxNi5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGwuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsX3N0YXBsZS5oCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfdW5kZWYuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi9kZm9yX3UxNi5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL2luY2x1ZGUvbGliL2Rmb3JfdTE2X2NvbmZpZy5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvZGZvci90ZXN0X2Rmb3JfdTE2LmMKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9saWIvTWFrZWZpbGUuZGZvciBiL3NyYy9iYWNrZW5kL2xpYi9NYWtlZmlsZS5k Zm9yCmluZGV4IGI5M2M2ZTc4NjQ0Li5iZWI3MDM1ZjE1NSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbGliL01ha2VmaWxlLmRmb3IKKysrIGIvc3JjL2JhY2tlbmQvbGliL01ha2VmaWxl LmRmb3IKQEAgLTIsNCArMiw1IEBACiAKIE9CSlNfREZPUiA6PSBcCiAJYml0cGFja191MTYu byBcCisJZGZvcl91MTYubyBcCiAJdmVjdF91MTYubwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbGliL2Rmb3JfdGVtcGwuYyBiL3NyYy9iYWNrZW5kL2xpYi9kZm9yX3RlbXBsLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIxYTMwYTIyNGM1Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvbGliL2Rmb3JfdGVtcGwuYwpAQCAtMCwwICsx LDYxNyBAQAorLyoKKyAqIGRmb3IuYworICoKKyAqIERGT1JfVEVNUEwgaW1wbGVtZW50cyB0 aGUgdmFyaWFudCBvZiBGcmFtZSBvZiBSZWZlcmVuY2Ugd2l0aCBEZWx0YQorICogY29udGFp bmVyIGFuZCBjb3JyZXNwb25kaW5nIGFsZ29yaXRobS4KKyAqCisgKiBUeXBlIG9mIG9yaWdp bmFsIGl0ZW1zIGRlZmluZWQgd2l0aCB0aGUgaXRlbV90IG1hY3JvLiBpdGVtX3QgbXVzdCBi ZQorICogYW4gdW5zaWduZWQgaW50ZWdlciAodWludDhfdCwgdWludDE2X3QsIC4uLiB1aW50 NjRfdCkKKyAqCisgKiBFYWNoIGJpdCB2ZWN0b3IsIGhhdmluZyBiZWVuIHNlcmlhbGlzZWQs IHJlcHJlc2VudHMgbmV4dCBzdHJ1Y3R1cmU6CisgKgorICogfCBkZWx0YXMgfCBleGNlcHRp b25zIHwgZXhjZXB0aW9ucyBwb3NpdGlvbnMgfAorICoKKyAqIGRlbHRhIGlzIGRpZmZlcmVu Y2UgYmV0d2VlbiB0aGUgY3VycmVudCBtZW1iZXIgYW5kIHRoZSBwcmV2aW91cyBvbmUuIFRo ZQorICogZGVsdGEgZm9yIHRoZSBmaXJzdCBtZW1iZXIgKGhhdmluZyB0aGUgemVybyBpbmRl eCkgaXMgaXRzIGFjdHVhbCB2YWx1ZToKKyAqIGRlbHRhWzBdID0gbVswXS0wID0gbVswXS4g QSBoYXZpbmcgc2VyaWFsaXNlZCBkZWx0YSBpcyBhIHNlcXVlbmNlIG9mIHVuZGVmaW5lZAor ICogYml0cyBvZiBmaXhlZCB3aWR0aC4KKyAqCisgKi8KKworI2luY2x1ZGUgImxpYi9kZm9y X3RlbXBsX3N0YXBsZS5oIgorCitpbnQgZGZvcl9jYWxjX2RlbHRhcyhzaXplX3QgY250LCBj b25zdCBpdGVtX3QgYXJyW10sIHZlY3RfdCAqdkRlbHRhcywKKwkJCQkJIHVuaXFzb3J0dmVj dF90ICp1c3ZEZWx0YVdpZHRocywKKwkJCQkJIHZlY3RfdCAqdldpZHRoQ291bnRlcnMpOwor CitpbnQgZGZvcl9jYWxjX3dpZHRoKHNpemVfdCBjbnREZWx0YSwKKwkJCQkJY29uc3QgdW5p cXNvcnR2ZWN0X3QgKnVzdkRlbHRhV2lkdGhzLAorCQkJCQljb25zdCB2ZWN0X3QgKnZXaWR0 aENvdW50ZXJzLCBzaXplX3QgKndpZHRoLAorCQkJCQlzaXplX3QgKmNudEV4Y2VwdGlvbnMp OworCitpbnQgZGZvcl9hbmFseXplKHNpemVfdCBjbnQsIGNvbnN0IGl0ZW1fdCBhcnJbXSwK KwkJCSBkZm9yX21ldGFfdCAqZGZvciwgdmVjdF90ICp2RGVsdGFzLAorCQkJIHVuaXFzb3J0 dmVjdF90ICp1c3ZFeGNQb3MpOworCitpbnQgZGZvcl9wYWNrKHNpemVfdCBjbnQsIGNvbnN0 IGl0ZW1fdCBhcnJbXSwgZXhjYWxnX3QgaXNFeGNVc2FnZSwKKwkJCSAgZGZvcl9tZXRhX3Qg KmRmb3IsIHNpemVfdCBidWZTaXplLCB1aW50OF90IGJ1ZltdKTsKKworaW50IGRmb3JfdW5w YWNrKGNvbnN0IGRmb3JfbWV0YV90ICpkZm9yLCB1bmlxc29ydHZlY3RfdCAqdlZhbHMsIHNp emVfdCBidWZTaXplLAorCQkJCXVpbnQ4X3QgYnVmW10pOworCit2b2lkIGRmb3JfY2xlYXJf bWV0YShkZm9yX21ldGFfdCAqZGZvcik7CisKK2Rmb3Jfc3RhdHNfdCBkZm9yX2NhbGNfc3Rh dHMoZGZvcl9tZXRhX3QgZGZvcik7CisKK3NpemVfdCBkZm9yX2NhbGNfbmJ5dGVzKGRmb3Jf bWV0YV90IGRmb3IpOworCisvKgorICogQ2FsY3VsYXRlIGRlbHRhcworICoKKyAqIHZXaWR0 aENvdW50ZXJzIGJlaW5nIGVxdWFsIHRvIE5VTEwgbWVhbnMgJ0Rvbid0IGNhbGN1bGF0ZSBj b3VudHMgb2Ygd2lkdGhzJy4KKyAqIEluIHRoaXMgY2FzZSB1c3ZEZWx0YVdpZHRoIGNvbXBy aXNlIG9ubHkgb25lIG1lbWJlciBtWzBdIHdoaWNoIHNhdmVzIG1heAorICogd2lkdGggb2Yg ZGVsdGEsIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IGNhbGxlci4KKyAqCisgKi8KK2ludAorZGZv cl9jYWxjX2RlbHRhcyhzaXplX3QgY250LCBjb25zdCBpdGVtX3QgYXJyW10sIHZlY3RfdCAq dkRlbHRhcywKKwkJCQkgdW5pcXNvcnR2ZWN0X3QgKnVzdkRlbHRhV2lkdGhzLCB2ZWN0X3Qg KnZXaWR0aENvdW50ZXJzKQoreworCWl0ZW1fdCBkZWx0YTsKKwlpdGVtX3QgcHJldjsgLyog dmFsdWUgb2YgcHJldmlvdXMgbnVtYmVyKi8KKwlzaXplX3Qgd2lkdGg7CisJdXN2X2luc19y ZXNfdCBpbnNXaWR0aEluc2VydDsKKworCWlmICh2RGVsdGFzID09IE5VTEwpCisJCXJldHVy biAtMTsKKworCWlmICh2V2lkdGhDb3VudGVycyA9PSBOVUxMKQorCQl1c3ZfaW5zZXJ0KHVz dkRlbHRhV2lkdGhzLCAwKTsKKworCXByZXYgPSAwOworCWZvciAoc2l6ZV90IGogPSAwOyBq IDwgY250OyBqKyspIHsKKwkJZGVsdGEgPSBhcnJbal0gLSBwcmV2OworCQl2ZWN0X2FwcGVu ZCh2RGVsdGFzLCBkZWx0YSk7CisJCXByZXYgPSBhcnJbal07CisJCXdpZHRoID0gd2lkdGhf ZnJvbV92YWwoZGVsdGEpOworCisJCWlmICh2V2lkdGhDb3VudGVycyA9PSBOVUxMKSB7CisJ CQlpZiAodXN2RGVsdGFXaWR0aHMtPm1bMF0gPCB3aWR0aCkKKwkJCQl1c3ZEZWx0YVdpZHRo cy0+bVswXSA9IHdpZHRoOworCQl9IGVsc2UgeworCQkJaW5zV2lkdGhJbnNlcnQgPSB1c3Zf aW5zZXJ0KHVzdkRlbHRhV2lkdGhzLCB3aWR0aF9mcm9tX3ZhbChkZWx0YSkpOworCisJCQlp ZiAoaW5zV2lkdGhJbnNlcnQuc3QgPT0gVVNWX0lOU19ORVcpCisJCQkJdmVjdF9pbnNlcnQo dldpZHRoQ291bnRlcnMsIGluc1dpZHRoSW5zZXJ0LnBvcywgKGl0ZW1fdCkxKTsKKwkJCWVs c2UgaWYgKGluc1dpZHRoSW5zZXJ0LnN0ID09IFVTVl9JTlNfRVhJU1RTKQorCQkJCXZXaWR0 aENvdW50ZXJzLT5tW2luc1dpZHRoSW5zZXJ0LnBvc10rKzsKKwkJCWVsc2UKKwkJCQlyZXR1 cm4gLTE7CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDYWxjdWxhdGUgd2lk dGggb2Ygc2hvcnQgZGVsdGFzLCB3aWR0aCBvZiBleGNlcHRpb25zLCBhbmQgbnVtYmVyIG9m CisgKiBleGNlcHRpb25zCisgKi8KK2ludAorZGZvcl9jYWxjX3dpZHRoKHNpemVfdCBjbnRE ZWx0YSwgY29uc3QgdW5pcXNvcnR2ZWN0X3QgKnVzdkRlbHRhV2lkdGhzLAorCQkJCWNvbnN0 IHZlY3RfdCAqdldpZHRoQ291bnRlcnMsIHNpemVfdCAqd2lkdGgsCisJCQkJc2l6ZV90ICpj bnRFeGNlcHRpb25zKQoreworI2RlZmluZSBNSU5fREVMVEFTX1FVQU5USVRZX0FMTE9XSU5H X0VYQ0VQVElPTlMgNAorCisJc2l6ZV90IGNudFNob3J0RGVsdGFzOyAvKiBudW1iZXIgb2Yg ZGVsdGFzIHByZXNlbnRlZCB3aXRob3V0IGV4Y2VwdGlvbnMgKi8KKwlzaXplX3QgaW5keFdp ZHRoOwkvKiB0aGUgd2lkdGggb2Ygc2hvcnQgZGVsdGFzIChpbmRleCBmcm9tIHZXaWR0aENv dW50ZXJzCisJCQkJCQkgKiAoYW5kIGZyb20gdkRlbHRhV2lkdGggYWNjb3JkaW5nbHkpCisJ CQkJCQkgKi8KKwlpZiAodXN2RGVsdGFXaWR0aHMgPT0gTlVMTCB8fCB2V2lkdGhDb3VudGVy cyA9PSBOVUxMIHx8IHdpZHRoID09IE5VTEwgfHwKKwkJY250RXhjZXB0aW9ucyA9PSBOVUxM KQorCQlyZXR1cm4gLTE7CisKKwljbnRTaG9ydERlbHRhcyA9IGNudERlbHRhOworCWluZHhX aWR0aCA9IHVzdkRlbHRhV2lkdGhzLT5jbnQgLSAxOyAvKiBjb3VudGVyIGludG8gaW5kZXgg Ki8KKwkqY250RXhjZXB0aW9ucyA9IDA7CisKKwkvKgorCSAqIEhlcmUgd2UgdHJ5IHRvIGRl Y3JlYXNlIHRoZSB3aWR0aCBvZiBzaG9ydCBkZWx0YXMgaW4gb3JkZXIgdG8gY29tcHJlc3MK KwkgKiB0aGUgYXJyYXkgb2YgZGVsdGFzIGluIHRoZSBtZWFudGltZSB3ZSBhcmUgZWFnZXIg dG8gY292ZXIgbm8gbGVzcyB0aGFuCisJICogOTAlIG9mIGRlbHRhcyB3ZSBoYXZlLiBJdCBp cyBhbiBoZXVyaXN0aWMgYW5hbHlzaXMgYmFzZWQgb24gdGhlCisJICogc3VnZ2VzdGlvbiAi bm8gbGVzcyB0aGFuIDkwJSBvZiBkZWx0YXMgd2UgaGF2ZSIuCisJICoKKwkgKiBUT0RPOiBh bmFseXppbmcgd2UgbWlnaHQgd2FudCBjYWx1bGF0ZSB0aGUgZnVsbCBzaXplIG9mIHRoZSBw YWNrIGZvciBlYWNoCisJICogdmFyaWFudCBvZiB0aGUgd2lkdGguCisJICovCisJaWYgKGNu dERlbHRhID49IE1JTl9ERUxUQVNfUVVBTlRJVFlfQUxMT1dJTkdfRVhDRVBUSU9OUykgewor CQlzaXplX3Qgc3pNaW5Db3ZlcmFnZTsgLyogdGhyZXNob2xkICovCisJCXNpemVfdCBqOwor CisJCWlmIChjbnREZWx0YSA+PSAxMCkKKwkJCXN6TWluQ292ZXJhZ2UgPSBjbnREZWx0YSAt IGNudERlbHRhIC8gMTA7CisJCWVsc2UKKwkJCXN6TWluQ292ZXJhZ2UgPSBjbnREZWx0YSAt IDE7CisKKwkJaiA9IGluZHhXaWR0aDsKKworCQl3aGlsZSAoaiA+IDApIHsKKwkJCWlmIChj bnRTaG9ydERlbHRhcyAtIHZXaWR0aENvdW50ZXJzLT5tW2pdIDwgc3pNaW5Db3ZlcmFnZSkK KwkJCQlicmVhazsKKworCQkJY250U2hvcnREZWx0YXMgLT0gdldpZHRoQ291bnRlcnMtPm1b al07CisJCQlqLS07CisJCQlpbmR4V2lkdGggPSBqOworCQl9CisJCSpjbnRFeGNlcHRpb25z ID0gY250RGVsdGEgLSBjbnRTaG9ydERlbHRhczsKKwl9CisKKwkqd2lkdGggPSB1c3ZEZWx0 YVdpZHRocy0+bVtpbmR4V2lkdGhdOworCXJldHVybiAwOworfQorCisvKgorICogZGZvcl9h bmFseXplCisgKiBBbmFseXplIGlucHV0IGFycmF5LCBjYWxjdWxhdGUgZGVsdGFzIGFuZCB0 aGVpciB3aWR0aCwgZGVmaW5lIGV4Y2VwdGlvbnMgYW5kCisgKiB0aGVpciBwb3NpdGlvbnMu IFJldHVybnMgdGhlbSB0aHJvdWdoIHRoZSBkZm9yLCB2RGVsdGFzLCB1c3ZFeGNQb3MuIElm CisgKiB1c3ZFeGNQb3MgPT0gTlVMTCAtIGRvbid0IGNhbGN1bGF0ZSBleGNlcHRpb25zLgor ICoKKyAqIGRmb3JfYW5hbHl6ZSBmdW5jdGlvbiBkb2VzIG5vdCB1c2UgZHluYW1pYyBtZW1v cnkgYWxsb2NhdGlvbiBmb3IgaXRzCisgKiBsb2NhbCBjb250YWluZXJzLgorICoKKyAqIEEg Y2FsbGVyIGhhcyB0byBjb250cm9sIHdoZXRoZXIgdkRlbHRhcyBhbmQgdXN2RXhjUG9zIHVz ZSBvdXRlciBtZW1vcnkKKyAqIHByb3ZpZGVkIGJ5IGNhbGxlciBvciBtYW5hZ2UgbWVtb3J5 IGFsbG9jYXRpb24gYXV0b21hdGljYWxseSwgd2hpY2ggZGVmaW5lcworICogd2hldGhlciB2 ZWN0X2luc2VydCBhbmQgdmVjdF9hcHBlbmQgZnVuY3Rpb25zLCBpbnZva2VkIGZyb20gaGVy ZSwgdXNlIGR5bmFtaWMKKyAqIG1lbW9yeSBvciBub3QuCisgKgorICogQSBjYWxsZXIgc2hv dWxkIHRha2UgaW50byBhY2NvdW50IHRoYXQgZGZvcl9tZXRhX3QgZGZvciBhcmUgZ29pbmcg dG8gYmUKKyAqIG51bGxpZmllZCBpbiB0aGlzIGZ1bmN0aW9uLCBzbyBpdCBzaG91bGQgbm90 IGhhdmUgYW55IG1lYW5pbmdmdWxsIGRhdGEgYnkKKyAqIHN0YXJ0IG9mIGRmb3JfYW5hbHl6 ZSwgZXNwZWNpYWxseSBpdHMgcGFjayBmaWVsZCBzaG91bGQgbm90IGJlIHVzZWQgYXMgYQor ICogcG9pbnRlciBvbiBkeW5hbWljIG1lbW9yeSwgb3RoZXJ3aXNlIG1lbW9yeSBsZWFrYWdl IGlzIHBvc3NpYmxlLgorICoKKyAqLworaW50CitkZm9yX2FuYWx5emUoc2l6ZV90IGNudCwg Y29uc3QgaXRlbV90IGFycltdLCAvKiBpbnB1dCAqLworCQkJIGRmb3JfbWV0YV90ICpkZm9y LCB2ZWN0X3QgKnZEZWx0YXMsCisJCQkgdW5pcXNvcnR2ZWN0X3QgKnVzdkV4Y1BvcykgLyog b3V0cHV0ICovCit7CisjZGVmaW5lIERFTFRBX1dJRFRIX01BWF9OVU1CRVIgKHNpemVvZihp dGVtX3QpICogOCkKKwl1bmlxc29ydHZlY3RfdCB1c3ZEZWx0YVdpZHRoczsKKwlpdGVtX3Qg YnVmRGVsdGFXaWR0aFtERUxUQV9XSURUSF9NQVhfTlVNQkVSXTsKKwl2ZWN0X3QgdldpZHRo Q291bnRlcnM7CisJaXRlbV90IGJ1ZldpZHRoQ291bnRlcnNbREVMVEFfV0lEVEhfTUFYX05V TUJFUl07CisJaXRlbV90IG1hc2s7CisJaW50IHJlcyA9IC0xOworCisJZXhjYWxnX3QgaXNF eGNVc2FnZSA9ICh1c3ZFeGNQb3MgPT0gTlVMTCkgPyBERk9SX0VYQ19ET05UX1VTRSA6CisJ CQkJCQkJCQkJCQlERk9SX0VYQ19VU0U7CisKKwlpZiAoZGZvciA9PSBOVUxMKQorCQlnb3Rv IGRmb3JfYW5hbHl6ZV9lcnJvcjsKKworCW1lbXNldChkZm9yLCAwLCBzaXplb2YoZGZvcl9t ZXRhX3QpKTsKKworCWlmIChjbnQgPT0gMCkKKwkJLyogZGZvci0+aXRlbV9jbnQgPSAwOyAq LyAvKiBpdCdzIGJlZW4gYWxyZWFkeSBkb25lIHdpdGggbWVtc2V0ICovCisJCWdvdG8gZGZv cl9hbmFseXplX3JldDsKKwllbHNlIGlmIChhcnIgPT0gTlVMTCkKKwkJZ290byBkZm9yX2Fu YWx5emVfZXJyb3I7CisKKwlpZiAoMCAhPSB2ZWN0X2luaXQoJnVzdkRlbHRhV2lkdGhzLCBE RUxUQV9XSURUSF9NQVhfTlVNQkVSLCBidWZEZWx0YVdpZHRoKSkKKwkJZ290byBkZm9yX2Fu YWx5emVfZXJyb3I7CisKKwlpZiAoaXNFeGNVc2FnZSA9PSBERk9SX0VYQ19VU0UpCisJewor CQlpZiAoMCAhPQorCQkJdmVjdF9pbml0KCZ2V2lkdGhDb3VudGVycywgREVMVEFfV0lEVEhf TUFYX05VTUJFUiwKKwkJCQkJICBidWZXaWR0aENvdW50ZXJzKSkKKwkJCWdvdG8gZGZvcl9h bmFseXplX2Vycm9yOworCX0KKworCWRmb3ItPml0ZW1fY250ID0gY250OworCisJaWYgKDAg IT0KKwkJZGZvcl9jYWxjX2RlbHRhcyhkZm9yLT5pdGVtX2NudCwgYXJyLCB2RGVsdGFzLCAm dXN2RGVsdGFXaWR0aHMsCisJCQkJCQkgKGlzRXhjVXNhZ2UgPT0gREZPUl9FWENfVVNFKSA/ ICZ2V2lkdGhDb3VudGVycyA6IE5VTEwpKQorCQlnb3RvIGRmb3JfYW5hbHl6ZV9lcnJvcjsK KworCUFzc2VydChjbnQgPT0gdkRlbHRhcy0+Y250KTsKKwlBc3NlcnQodXN2RGVsdGFXaWR0 aHMuY250ID4gMCk7CisKKwlpZiAoaXNFeGNVc2FnZSA9PSBERk9SX0VYQ19VU0UpCisJewor CQlpZiAoMCAhPQorCQkJZGZvcl9jYWxjX3dpZHRoKHZEZWx0YXMtPmNudCwgJnVzdkRlbHRh V2lkdGhzLCAmdldpZHRoQ291bnRlcnMsCisJCQkJCQkJJmRmb3ItPmRlbHRhX3dpZCwgJmRm b3ItPmV4Y19jbnQpKQorCQkJZ290byBkZm9yX2FuYWx5emVfZXJyb3I7CisJfQorCWVsc2UK Kwl7CisJCWRmb3ItPmRlbHRhX3dpZCA9CisJCQl1c3ZEZWx0YVdpZHRocy5tW3VzdkRlbHRh V2lkdGhzLmNudCAtIDFdOyAvKiBtYXggd2lkdGggKi8KKwkJZGZvci0+ZXhjX2NudCA9IDA7 CisJfQorCisJZGZvci0+ZXhjX3dpZCA9IHVzdkRlbHRhV2lkdGhzLm1bdXN2RGVsdGFXaWR0 aHMuY250IC0gMV0gLSBkZm9yLT5kZWx0YV93aWQ7CisKKwkvKiBBIG1hc2sgbG9va3MgbGlr ZSAwMDAxMTExLiBJdCBpcyBhbHNvIHRoZSBtYXggdmFsdWUgb2YgYSBzaG9ydCBkZWx0YSAq LworCW1hc2sgPSB3aWR0aF90b19tYXNrKGRmb3ItPmRlbHRhX3dpZCk7CisKKwlmb3IgKHNp emVfdCBpID0gMDsgaSA8IHZEZWx0YXMtPmNudDsgaSsrKQorCXsKKwkJaWYgKHZEZWx0YXMt Pm1baV0gPiBtYXNrKQorCQl7CisJCQlBc3NlcnQoaXNFeGNVc2FnZSA9PSBERk9SX0VYQ19V U0UpOworCQkJaWYgKDAgIT0gdmVjdF9hcHBlbmQodXN2RXhjUG9zLCAoaXRlbV90KWkpKQor CQkJCWdvdG8gZGZvcl9hbmFseXplX2Vycm9yOworCQl9CisJfQorCUFzc2VydChkZm9yLT5k ZWx0YV93aWQgKyBkZm9yLT5leGNfd2lkIDw9IHNpemVvZihpdGVtX3QpICogOCk7CisJcmVz ID0gMDsKK2Rmb3JfYW5hbHl6ZV9yZXQ6CisJcmV0dXJuIHJlczsKK2Rmb3JfYW5hbHl6ZV9l cnJvcjoKKwkvKiBkZm9yX2FuYWx5emUgZG9lc24ndCBhZmZlY3QgdGhlIHBhY2sgZmllbGQg KGRvZXNuJ3QgYWxsb2NhdGUsIGRlbGV0ZSBvcgorCSAqIG90aGVyd2lzZSksIHNvIHdlIGNh biBudWxsaWZ5IHRoZSB3aG9sZSBkZm9yIGFuZCBpdAorCSAqIGlzIHNhZmUsIG5vIGxlYWth Z2UgKi8KKwltZW1zZXQoZGZvciwgMCwgc2l6ZW9mKGRmb3JfbWV0YV90KSk7CisJcmVzID0g LTE7CisJZ290byBkZm9yX2FuYWx5emVfcmV0OworfQorCisvKgorICogZGZvcl9wYWNrCisg KgorICogVGhlIGlucHV0IGFycmF5IGFyciBoYXMgdG8gYmUgc29ydGVkLgorICoKKyAqIElm IGEgY2FsbGVyIG5lZWRzIHRvIGF2b2lkIHVzaW5nIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRp b24sIHRoZXkgaGF2ZSB0bworICogcHJvdmlkZSB0aGUgZXh0ZXJuYWwgbWVtb3J5IGJ1ZmZl ci4gVGhlIHNpemUgb2YgdGhpcyBidWZmZXIgc2hvdWxkIGJlIG5vdAorICogbGVzcyB0aGFu IDQgKiBjbnQgKiBzaXplb2YoaXRlbV90KS4gSXQgd2lsbCBiZSB1c2VkIGZvciBhcnJheXMg cG9pbnRlZCBieQorICogKihkZm9yLT5wYWNrKSwgKih2RGVsdGFzLT5tKSwgKih2RXhjUG9z RGVsdGFzLT5tKSwgKih1c3ZFeGNQb3MtPm0pLgorICoKKyAqIElmIGR5bmFtaWMgYWxsb2Nh dGlvbiBoYXMgYmVlbiB1c2VkIGJ5IHRoZSBkZm9yX3BhY2ssIGEgY2FsbGVyIGhhcyB0byBm cmVlCisgKiB0aGUgcGllY2Ugb2YgbWVtb3J5IHBvaW50ZWQgYnkgZGZvci0+cGFjaywgc2lu Y2UgaXQgaXMgYWxvY2F0ZWQgYnkgdGhlCisgKiBkZm9yX3BhY2sgd2l0aCBERk9SX01BTExP Qy4gRnJlZWluZyBoYXMgdG8gYmUgcGVyZm9ybWVkIGJ5IGZ1bmN0aW9uCisgKiBjb25mb3Jt aW5nIHRvIERGT1JfTUFMTE9DIChwYWlyZWQgd2l0aCBpdCkuIEZvciBpbnN0YW5jZSwgaWYg REZPUl9NQUxMT0MgaXMKKyAqIG1hbGxvYywgdGhhbiBtZW1vcnkgc2hvdWxkIGJlIGZyZWVk IGJ5IGZyZWUuCisgKi8KK2ludAorZGZvcl9wYWNrKHNpemVfdCBjbnQsIGNvbnN0IGl0ZW1f dCBhcnJbXSwgZXhjYWxnX3QgaXNFeGNVc2FnZSwKKwkJICBkZm9yX21ldGFfdCAqZGZvciwg c2l6ZV90IGJ1ZlNpemUsIHVpbnQ4X3QgYnVmW10pCit7CisJaW50IHJlczsKKwl2ZWN0X3Qg dkRlbHRhcyA9IHsgMCB9OworCXZlY3RfdCB2RXhjUG9zRGVsdGFzID0geyAwIH07CisJdW5p cXNvcnR2ZWN0X3QgdXN2RXhjUG9zID0geyAwIH07CisKKwlpZiAoZGZvciA9PSBOVUxMIHx8 CisJCShidWZTaXplICE9IDAgJiYgYnVmU2l6ZSA8IDQgKiBjbnQgKiBzaXplb2YoaXRlbV90 KSkpCisJeworCQlnb3RvIGRmb3JfcGFja19lcnJvcjsKKwl9CisKKwkvKgorCSAqIFdlIGRv bid0IG5lZWQgaXQgaGVyZToKKwkgKiAJCQltZW1zZXQoZGZvciwgMCwgc2l6ZW9mKGRmb3Jf bWV0YV90KSkuCisJICogSXQgaXMgZ29pbmcgdG8gYmUgZG9uZSBpbiBkZm9yX2FuYWx5emUu CisJICovCisKKwl7CisJCWl0ZW1fdCAqZGVsdGFCdWYgPSBOVUxMOworCQlpdGVtX3QgKmV4 Y1Bvc0RlbHRhc0J1ZiA9IE5VTEw7CisJCWl0ZW1fdCAqZXhjUG9zQnVmID0gTlVMTDsKKwor CQlpbnQgcmVzMSA9IDA7CisJCWludCByZXMyID0gMDsKKwkJaW50IHJlczMgPSAwOworCisJ CWlmIChidWZTaXplICE9IDApCisJCXsKKwkJCS8qIFN0ZXAgb3ZlciB0aGUgbWF4aW1hbCBh bGxvd2VkIERGb1IgcGFjayBzaXplICovCisJCQlkZWx0YUJ1ZiAgICAgICAgPSAoaXRlbV90 KikoYnVmICsgY250ICogc2l6ZW9mKGl0ZW1fdCkpOworCQkJZXhjUG9zRGVsdGFzQnVmID0g KGl0ZW1fdCopKGJ1ZiArIGNudCAqIHNpemVvZihpdGVtX3QpICogMik7CisJCQlleGNQb3NC dWYgICAgICAgPSAoaXRlbV90KikoYnVmICsgY250ICogc2l6ZW9mKGl0ZW1fdCkgKiAzKTsK KwkJfQorCisJCS8qIFNldHVwIGNvbnRhaW5lcnMgd2l0aCBvdXRlciBtZW1vcnkgKi8KKwkJ cmVzMSA9IHZlY3RfaW5pdCgmdkRlbHRhcywgY250LCBkZWx0YUJ1Zik7CisKKwkJaWYgKGlz RXhjVXNhZ2UpCisJCXsKKwkJCXJlczIgPSB2ZWN0X2luaXQoJnZFeGNQb3NEZWx0YXMsIGNu dCwgZXhjUG9zRGVsdGFzQnVmKTsKKwkJCXJlczMgPSB2ZWN0X2luaXQoJnVzdkV4Y1Bvcywg Y250LCBleGNQb3NCdWYpOworCQl9CisKKwkJaWYgKHJlczEgIT0gMCB8fCByZXMyICE9IDAg fHwgcmVzMyAhPSAwKQorCQkJZ290byBkZm9yX3BhY2tfZXJyb3I7CisJfQorCisJaWYgKDAg IT0KKwkJZGZvcl9hbmFseXplKGNudCwgYXJyLCBkZm9yLCAmdkRlbHRhcywKKwkJCQkJIChp c0V4Y1VzYWdlID09IERGT1JfRVhDX1VTRSkgPyAmdXN2RXhjUG9zIDogTlVMTCkpCisJCWdv dG8gZGZvcl9wYWNrX2Vycm9yOworCisJaWYgKGRmb3ItPmV4Y19jbnQgIT0gMCkKKwl7CisJ CS8qIFdlIHRyZWF0IGV4Y2VwdGlvbiBwb3NpdGlvbnMgYXMgYSBzb3J0ZWQgc2VxdWVuY2Us IGFwcGx5IHRoZQorCQkgKiBERm9SIGFsZ29yaXRobSB0byBpdCwgYW5kIHNhdmUgbm90IHRo ZWlyIGFic29sdXRlIHZhbHVlcyBidXQgdGhlaXIKKwkJICogZGVsdGFzLiAqLworCQlkZm9y X21ldGFfdCBkZm9yRXhjUG9zOworCQlBc3NlcnQoZGZvci0+ZXhjX2NudCA9PSB1c3ZFeGNQ b3MuY250KTsKKwkJaWYgKDAgIT0KKwkJCWRmb3JfYW5hbHl6ZSh1c3ZFeGNQb3MuY250LCB1 c3ZFeGNQb3MubSwgJmRmb3JFeGNQb3MsCisJCQkJCQkgJnZFeGNQb3NEZWx0YXMsIE5VTEwp KQorCQkJZ290byBkZm9yX3BhY2tfZXJyb3I7CisKKwkJQXNzZXJ0KGRmb3ItPmV4Y19jbnQg PT0gdkV4Y1Bvc0RlbHRhcy5jbnQpOworCQlBc3NlcnQoZGZvci0+ZXhjX2NudCA9PSBkZm9y RXhjUG9zLml0ZW1fY250KTsKKworCQlkZm9yLT5leGNfcG9zX3dpZCA9IGRmb3JFeGNQb3Mu ZGVsdGFfd2lkOworCX0KKwllbHNlCisJeworCQlBc3NlcnQodXN2RXhjUG9zLmNudCA9PSAw KTsgLyogdXN2RXhjUG9zIGhhcyB0byByZW1haW4gemVyb2VkLiAqLworCQlBc3NlcnQoZGZv ci0+ZXhjX3dpZCA9PSAwKTsgLyogTm8gZXhjZXB0aW9ucywgbm8gZXhjZXB0aW9ucycgd2lk dGguICovCisJCUFzc2VydChkZm9yLT5leGNfcG9zX3dpZCA9PSAwKTsgLyogTm8gZXhjZXB0 aW9ucycgcG9zaXRpb25zIHdpZHRoIHRvby4gKi8KKwl9CisKKwkvKiBkZm9yX3BhY2sgc2Vy aWFsaXNhdGlvbiBwYWNraW5nICovCisJeworCQkvKiBpbmRleCBvZiB0aGUgbmV4dCBmcmVl IGJpdCB0byBiZSB1c2VkOiAqLworCQlzaXplX3QgZDsgLyogLSBieSBhIGRlbHRhICovCisJ CXNpemVfdCBlOyAvKiAtIGJ5IGFuIGV4Y2VwdGlvbiAqLworCQlzaXplX3QgcDsgLyogLSBi eSBhbiBleGNlcHRpb24gcG9zaXRpb24gKi8KKwkJaXRlbV90IG1hc2s7CisJCWRmb3Jfc3Rh dHNfdCBzdGF0czsKKwkJc2l6ZV90IGo7CisKKwkJc3RhdHMgPSBkZm9yX2NhbGNfc3RhdHMo KmRmb3IpOworCQlkZm9yLT5uYnl0ZXMgPSBkZm9yX2NhbGNfbmJ5dGVzKCpkZm9yKTsKKwor CQlpZiAoYnVmU2l6ZSAhPSAwKQorCQl7CisJCQkvKiBNYXggc2l6ZSBvZiB0aGUgZGZvci0+ cGFjayBpcyBjbnQgKiBzaXplb2Yoc2l6ZV90KSAqLworCQkJZGZvci0+cGFjayA9IGJ1ZjsK KwkJCWRmb3ItPm91dGVyX21lbSA9IHRydWU7CisJCQlpZiAoZGZvci0+bmJ5dGVzID4gY250 ICogc2l6ZW9mKHNpemVfdCkpCisJCQkJZ290byBkZm9yX3BhY2tfZXJyb3I7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQkvKiBJZiBhIGJ1ZmZlciB3YXMgbm90IHByb3ZpZGVkIGJ5IGNhbGxl ciB3ZSBhbGxvY2F0ZSBpdCBieQorCQkJICogb3Vyc2VsdmVzCisJCQkgKi8KKwkJCWRmb3It PnBhY2sgPSAodWludDhfdCAqKURGT1JfTUFMTE9DKChkZm9yLT5uYnl0ZXMpKTsKKworCQkJ ZGZvci0+b3V0ZXJfbWVtID0gZmFsc2U7CisJCX0KKworCQlpZiAoZGZvci0+cGFjayA9PSBO VUxMKQorCQkJZ290byBkZm9yX3BhY2tfZXJyb3I7CisKKwkJbWVtc2V0KGRmb3ItPnBhY2ss IDAsIGRmb3ItPm5ieXRlcyk7CisKKwkJLyogaW5kZXggb2YgdGhlIG5leHQgZnJlZSBiaXQg dG8gYmUgdXNlZDogKi8KKwkJZCA9IDA7CQkJICAgLyogLSBieSBhIGRlbHRhICovCisJCWUg PSBzdGF0cy5kZWx0YV9wYWNrX25iaXRzOyAgIC8qIC0gYnkgYW4gZXhjZXB0aW9uICovCisJ CXAgPSBlICsgc3RhdHMuZXhjX3BhY2tfbmJpdHM7IC8qIC0gYnkgYW4gZXhjZXB0aW9uIHBv c2l0aW9uIGluZGV4ICovCisJCS8qIEEgbWFzayBsb29rcyBsaWtlIDAwMDExMTEuIEl0IGlz IGFsc28gdGhlCisJCSAqIG1heCB2YWx1ZSBvZiBhIHNob3J0IGRlbHRhICovCisJCW1hc2sg PSB3aWR0aF90b19tYXNrKGRmb3ItPmRlbHRhX3dpZCk7CisKKwkJaiA9IDA7CisJCWZvciAo c2l6ZV90IGkgPSAwOyBpIDwgdkRlbHRhcy5jbnQ7IGkrKykKKwkJeworCQkJZCA9IGJpdHBh Y2tfcGFjayhkZm9yLT5wYWNrLCBkLCB2RGVsdGFzLm1baV0gJiBtYXNrLAorCQkJCQkJCSBk Zm9yLT5kZWx0YV93aWQpOworCisJCQlpZiAodkRlbHRhcy5tW2ldID4gbWFzaykKKwkJCXsK KwkJCQlBc3NlcnQoaXNFeGNVc2FnZSA9PSBERk9SX0VYQ19VU0UpOworCQkJCUFzc2VydCh1 c3ZFeGNQb3MubVtqXSA9PSBpKTsKKwkJCQlBc3NlcnQoaiA8IHVzdkV4Y1Bvcy5jbnQpOwor CQkJCUFzc2VydChqIDwgdkV4Y1Bvc0RlbHRhcy5jbnQpOworCQkJCUFzc2VydChkZm9yLT5l eGNfd2lkICE9IDApOworCQkJCUFzc2VydChkZm9yLT5leGNfcG9zX3dpZCAhPSAwKTsKKwor CQkJCWUgPSBiaXRwYWNrX3BhY2soZGZvci0+cGFjaywgZSwgdkRlbHRhcy5tW2ldID4+IGRm b3ItPmRlbHRhX3dpZCwKKwkJCQkJCQkJIGRmb3ItPmV4Y193aWQpOworCQkJCXAgPSBiaXRw YWNrX3BhY2soZGZvci0+cGFjaywgcCwgdkV4Y1Bvc0RlbHRhcy5tW2pdLCBkZm9yLT5leGNf cG9zX3dpZCk7CisJCQkJaisrOworCQkJfQorCQl9CisKKwkJaWYgKGlzRXhjVXNhZ2UgPT0g REZPUl9FWENfVVNFKQorCQkJQXNzZXJ0KGogPT0gdXN2RXhjUG9zLmNudCk7CisJCWVsc2UK KwkJCUFzc2VydChqID09IDApOworCisJCUFzc2VydChkID09IHN0YXRzLmRlbHRhX3BhY2tf bmJpdHMpOworCQlBc3NlcnQoZSA9PSBzdGF0cy5kZWx0YV9wYWNrX25iaXRzICsgc3RhdHMu ZXhjX3BhY2tfbmJpdHMpOworCQlBc3NlcnQocCA9PQorCQkJICAgc3RhdHMuZGVsdGFfcGFj a19uYml0cyArIHN0YXRzLmV4Y19wYWNrX25iaXRzICsKKwkJCQkgICBzdGF0cy5leGNfcG9z X3BhY2tfbmJpdHMpOworCQlyZXMgPSAwOworCX0KK2Rmb3JfcGFja19yZXQ6CisJdmVjdF9j bGVhcigmdXN2RXhjUG9zKTsKKwl2ZWN0X2NsZWFyKCZ2RXhjUG9zRGVsdGFzKTsKKwl2ZWN0 X2NsZWFyKCZ2RGVsdGFzKTsKKwlyZXR1cm4gcmVzOworZGZvcl9wYWNrX2Vycm9yOgorCWlm IChkZm9yICE9IE5VTEwpCisJCWRmb3JfY2xlYXJfbWV0YShkZm9yKTsKKwlyZXMgPSAtMTsK Kwlnb3RvIGRmb3JfcGFja19yZXQ7Cit9CisKKy8qCisgKiBkZm9yX3VucGFjaworICoKKyAq IElmIGEgY2FsbGVyIG5lZWRzIHRvIGF2b2lkIHVzaW5nIGR5bmFtaWMgbWVtb3J5IGFsbG9j YXRpb24sIHRoZXkgaGF2ZSB0bzoKKyAqIDEpIHByb3ZpZGUgdGhlIGV4dGVybmFsIG1lbW9y eSBidWZmZXIuIFRoZSBzaXplIG9mIHRoaXMgYnVmZmVyIHNob3VsZCBiZSBub3QKKyAqICAg IGxlc3MgdGhhbjoKKyAqICAgICAgICAJMiAqIGRmb3IuaXRlbV9jbnQgKiBzaXplb2YoaXRl bV90KSArIDIgKiBkZm9yLmV4Y19jbnQgKiBzaXplb2YoaXRlbV90KQorICoKKyAqIDIpIHRo ZSB2VmFscyB2ZWN0b3IgaGFzIHRvIGJlIGNyZWF0ZWQgYnV0IG11c3Qgbm90IGJlIGluaXRp YWxpc2VkLiBUaGUKKyAqICAgIGRmb3JfdW5wYWNrIHNldHMgdlZhbHMgaW4gdGhlICdvdXRl ciBtZW1vcnknIHJlZ2ltZW4gYW5kIHdpbGwgc2V0IHZWYWwtPm0KKyAqICAgIHRvIGJ1Zi4K KyAqCisgKiBQcm92aWRlZCBkeW5hbWljIGFsbG9jYXRpb24gaXMgdXNlZCBieSB0aGUgZGZv cl91bnBhY2ssIGEgY2FsbGVyIHdpbGwgaGF2ZSB0bworICogZnJlZSB0aGUgcGllY2Ugb2Yg bWVtb3J5IHBvaW50ZWQgYnkgdlZhbHMtPm0sIHVzaW5nIHZlY3RfY2xlYXIoJnZWYWxzKS4K KyAqCisgKiBBcmUgdGhlIG91dGVyIG1lbW9yeSBpcyB1c2VkCisgKi8KK2ludAorZGZvcl91 bnBhY2soY29uc3QgZGZvcl9tZXRhX3QgKmRmb3IsIHVuaXFzb3J0dmVjdF90ICp2VmFscywg c2l6ZV90IGJ1ZlNpemUsCisJCQl1aW50OF90IGJ1ZltdKQoreworCWludCByZXMgPSAtMTsK KwlzaXplX3Qgc3pEZWx0YVBhY2s7CisJdmVjdF90IHZFeGNzID0geyAwIH07CisJdmVjdF90 IHZFeGNQb3NzID0geyAwIH07CisJZXhjYWxnX3QgaXNFeGNVc2FnZSA9IChkZm9yLT5leGNf Y250ID09IDApID8gREZPUl9FWENfRE9OVF9VU0UgOgorCQkJCQkJCQkJCQkJIERGT1JfRVhD X1VTRTsKKworCWlmICh2VmFscyA9PSBOVUxMKQorCQlnb3RvIGRmb3JfdW5wYWNrX2Vycm9y OworCisJaWYgKGJ1ZlNpemUgIT0gMCAmJgorCQlidWZTaXplIDwgKDIgKiBkZm9yLT5pdGVt X2NudCAqIHNpemVvZihpdGVtX3QpICsKKwkJCQkgICAyICogZGZvci0+ZXhjX2NudCAqIHNp emVvZihpdGVtX3QpKSkKKwkJZ290byBkZm9yX3VucGFja19lcnJvcjsKKworCXN6RGVsdGFQ YWNrID0gZGZvci0+ZGVsdGFfd2lkICogZGZvci0+aXRlbV9jbnQ7CisKKwl7CisJCXVpbnQ4 X3QgKnZhbHNCdWYgPSBOVUxMOworCQlpZiAoYnVmU2l6ZSAhPSAwKQorCQkJdmFsc0J1ZiA9 IGJ1ZjsKKworCQlpZiAodmVjdF9pbml0KHZWYWxzLCBkZm9yLT5pdGVtX2NudCwgKGl0ZW1f dCAqKXZhbHNCdWYpICE9IDApCisJCQlnb3RvIGRmb3JfdW5wYWNrX2Vycm9yOworCX0KKwor CS8qIENhbGN1bGF0ZSBleGNlcHRpb25zICovCisJaWYgKGlzRXhjVXNhZ2UgPT0gREZPUl9F WENfVVNFKQorCXsKKwkJc2l6ZV90IHN6RXhjUGFjazsKKwkJc2l6ZV90IGNyRXhjOyAvKiBj YXJldCAoY3Vyc29yKSAqLworCQlzaXplX3QgY3JQb3M7IC8qIGNhcmV0IChjdXJzb3IpICov CisKKwkJdWludDhfdCAqZXhjQnVmID0gTlVMTDsKKwkJdWludDhfdCAqZXhjUG9zc0J1ZiA9 IE5VTEw7CisKKwkJaW50IHJlczEgPSAwOworCQlpbnQgcmVzMiA9IDA7CisKKwkJc3pFeGNQ YWNrID0gZGZvci0+ZXhjX2NudCAqIGRmb3ItPmV4Y193aWQ7CisJCWNyRXhjID0gc3pEZWx0 YVBhY2s7CisJCWNyUG9zID0gY3JFeGMgKyBzekV4Y1BhY2s7CisKKwkJaWYgKGJ1ZlNpemUg IT0gMCkKKwkJeworCQkJLyogc3RlcCBvdmVyIHRoZSBtZW1vcnkgb2NjdXBpZWQgYnkgdlZh bHMgKi8KKwkJCWV4Y0J1ZiA9IGJ1ZiArIGRmb3ItPml0ZW1fY250ICogc2l6ZW9mKGl0ZW1f dCk7CisJCQlleGNQb3NzQnVmID0gZXhjQnVmICsgZGZvci0+ZXhjX2NudCAqIHNpemVvZihp dGVtX3QpOworCQl9CisKKwkJcmVzMSA9IHZlY3RfaW5pdCgmdkV4Y3MsIGRmb3ItPmV4Y19j bnQsIChpdGVtX3QgKilleGNCdWYpOworCQlyZXMyID0gdmVjdF9pbml0KCZ2RXhjUG9zcywg ZGZvci0+ZXhjX2NudCwgKGl0ZW1fdCAqKWV4Y1Bvc3NCdWYpOworCisJCWlmIChyZXMxICE9 IDAgfHwgcmVzMiAhPSAwKQorCQkJZ290byBkZm9yX3VucGFja19lcnJvcjsKKworCisJCWZv ciAoc2l6ZV90IHBvc0V4YyA9IDAsIGogPSAwOyBqIDwgZGZvci0+ZXhjX2NudDsgaisrKQor CQl7CisJCQlpdGVtX3QgZGVsdGFQb3M7CisJCQlyZXMxID0gdmVjdF9hcHBlbmQoJnZFeGNz LAorCQkJCQkJCSAgIGJpdHBhY2tfdW5wYWNrKGRmb3ItPnBhY2ssICZjckV4YywKKwkJCQkJ CQkJCQkJICBkZm9yLT5leGNfd2lkKSk7CisJCQkvKiBDYWxjdWxhdGUgdGhlIHBvc2l0aW9u IG9mIHRoZSBleGNlcHRpb24gZnJvbSB0aGUgZGVsdGEgb2YgdGhlCisJCQkgKiBwb3NpdGlv biBvZiB0aGUgZXhjZXB0aW9uICovCisJCQlkZWx0YVBvcyA9IGJpdHBhY2tfdW5wYWNrKGRm b3ItPnBhY2ssICZjclBvcywgZGZvci0+ZXhjX3Bvc193aWQpOworCQkJcG9zRXhjICs9IGRl bHRhUG9zOworCQkJcmVzMiA9IHZlY3RfYXBwZW5kKCZ2RXhjUG9zcywgcG9zRXhjKTsKKwkJ CWlmIChyZXMxICE9IDAgfHwgcmVzMiAhPSAwKQorCQkJCWdvdG8gZGZvcl91bnBhY2tfZXJy b3I7CisJCX0KKwkJQXNzZXJ0KGNyRXhjID09IHN6RGVsdGFQYWNrICsgc3pFeGNQYWNrKTsK KwkJQXNzZXJ0KGNyUG9zID09CisJCQkgICBzekRlbHRhUGFjayArIHN6RXhjUGFjayArIGRm b3ItPmV4Y19wb3Nfd2lkICogZGZvci0+ZXhjX2NudCk7CisJfQorCisJeyAvKiBVbnBhY2sg ZGVsdGFzIGFuZCBjYWxjdWxhdGUgdGFyZ2V0IHZhbHVlcyAqLworCQlpdGVtX3QgbURlbHRh OworCQlpdGVtX3QgbVN1bSA9IDA7CisJCXNpemVfdCBqID0gMDsgLyogaW5kZXggb2YgYW4g ZXhjZXB0aW9uIGFuZCBpdHMgcG9zaXRpb24gaW4gdmVjdG9ycyAqLworCQlzaXplX3QgY3JE ZWx0YSA9IDA7CisJCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGZvci0+aXRlbV9jbnQ7IGkr KykKKwkJeworCQkJbURlbHRhID0gYml0cGFja191bnBhY2soZGZvci0+cGFjaywgJmNyRGVs dGEsIGRmb3ItPmRlbHRhX3dpZCk7CisKKwkJCWlmIChpc0V4Y1VzYWdlID09IERGT1JfRVhD X1VTRSAmJgorCQkJCWogPCB2RXhjcy5jbnQgJiYKKwkJCQlpID09IHZFeGNQb3NzLm1bal0p CisJCQl7CisJCQkJQXNzZXJ0KGogPCBkZm9yLT5leGNfY250KTsKKwkJCQltRGVsdGEgfD0g dkV4Y3MubVtqXSA8PCBkZm9yLT5kZWx0YV93aWQ7CisJCQkJaisrOworCQkJfQorCQkJbVN1 bSArPSBtRGVsdGE7CisJCQl2ZWN0X2FwcGVuZCh2VmFscywgbVN1bSk7CisJCX0KKwkJQXNz ZXJ0KGNyRGVsdGEgPT0gc3pEZWx0YVBhY2spOworCQlyZXMgPSAwOworCX0KKworZGZvcl91 bnBhY2tfcmV0OgorCXZlY3RfY2xlYXIoJnZFeGNQb3NzKTsKKwl2ZWN0X2NsZWFyKCZ2RXhj cyk7CisJcmV0dXJuIHJlczsKK2Rmb3JfdW5wYWNrX2Vycm9yOgorCXZlY3RfY2xlYXIodlZh bHMpOworCXJlcyA9IC0xOworCWdvdG8gZGZvcl91bnBhY2tfcmV0OworfQorCit2b2lkCitk Zm9yX2NsZWFyX21ldGEoZGZvcl9tZXRhX3QgKm1ldGEpCit7CisJaWYgKG1ldGEgPT0gTlVM TCkKKwkJcmV0dXJuOworCisJaWYgKG1ldGEtPnBhY2sgIT0gTlVMTCAmJiAhbWV0YS0+b3V0 ZXJfbWVtKQorCQlERk9SX0ZSRUUobWV0YS0+cGFjayk7CisKKwltZW1zZXQobWV0YSwgMCwg c2l6ZW9mKGRmb3JfbWV0YV90KSk7Cit9CisKK2Rmb3Jfc3RhdHNfdAorZGZvcl9jYWxjX3N0 YXRzKGRmb3JfbWV0YV90IGRmb3IpCit7CisJZGZvcl9zdGF0c190IHN0YXQ7CisJc2l6ZV90 IG5ieXRlczsKKwlzdGF0LmRlbHRhX3BhY2tfbmJpdHMgPSBkZm9yLmRlbHRhX3dpZCAqIGRm b3IuaXRlbV9jbnQ7CisJc3RhdC5leGNfcGFja19uYml0cyA9IGRmb3IuZXhjX3dpZCAqIGRm b3IuZXhjX2NudDsKKwlzdGF0LmV4Y19wb3NfcGFja19uYml0cyA9IGRmb3IuZXhjX3Bvc193 aWQgKiBkZm9yLmV4Y19jbnQ7CisKKwlzdGF0Lm5iaXRzID0gc3RhdC5kZWx0YV9wYWNrX25i aXRzICsgc3RhdC5leGNfcGFja19uYml0cyArIHN0YXQuZXhjX3Bvc19wYWNrX25iaXRzOwor CisJLyogSWYgdGhlIGRpdmlzaW9uIHJlc3VsdHMgaW4gdGhlIHJlbWFpbmRlciwgd2UgdXNl IGFuIGFkZGl0aW9uYWwKKwkgKiBieXRlICovCisJbmJ5dGVzID0gKHN0YXQubmJpdHMgKyA3 KSAvIDg7CisJc3RhdC5yYXRpbyA9IChmbG9hdCkoc2l6ZW9mKGl0ZW1fdCkgKiBkZm9yLml0 ZW1fY250KSAvIChmbG9hdCluYnl0ZXM7CisKKwlyZXR1cm4gc3RhdDsKK30KKworc2l6ZV90 IGRmb3JfY2FsY19uYnl0ZXMoZGZvcl9tZXRhX3QgZGZvcikKK3sKKwlkZm9yX3N0YXRzX3Qg c3RhdDsKKwlzdGF0ID0gZGZvcl9jYWxjX3N0YXRzKGRmb3IpOworCXJldHVybiAoc3RhdC5u Yml0cyArIDcpIC8gODsKK30KKworI2luY2x1ZGUgImxpYi9kZm9yX3RlbXBsX3VuZGVmLmgi CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWIvZGZvcl91MTYuYyBiL3NyYy9iYWNrZW5k L2xpYi9kZm9yX3UxNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5mNzA1MWY1NTkyNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2xpYi9kZm9y X3UxNi5jCkBAIC0wLDAgKzEsOCBAQAorLyoKKyAqIEZpbGU6IGRmb3JfdTE2LmMKKyAqLwor CisvKiBjbGFuZy1mb3JtYXQgb2ZmICovCisjaW5jbHVkZSAibGliL2Rmb3JfdTE2X2NvbmZp Zy5oIgorI2luY2x1ZGUgImRmb3JfdGVtcGwuYyIKKy8qIGNsYW5nLWZvcm1hdCBvbiAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGliL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQv bGliL21lc29uLmJ1aWxkCmluZGV4IDA5ODRiZDBlM2Y2Li43ZjY3MzBlZmJhMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvbGliL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2xp Yi9tZXNvbi5idWlsZApAQCAtMiw2ICsyLDcgQEAKIAogZGZvcl9zb3VyY2VzID0gZmlsZXMo CiAgICdiaXRwYWNrX3UxNi5jJywKKyAgJ2Rmb3JfdTE2LmMnLAogICAndmVjdF91MTYuYycK ICkKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGwuaCBiL3NyYy9p bmNsdWRlL2xpYi9kZm9yX3RlbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmI0YzFkNDFjMWQzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUv bGliL2Rmb3JfdGVtcGwuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogRmlsZTogZGZvcl90 ZW1wbC5oCisgKi8KKyNpbmNsdWRlICJkZm9yX3RlbXBsX3N0YXBsZS5oIgorCitleHRlcm4g aW50IGRmb3JfY2FsY19kZWx0YXMoc2l6ZV90IGNudCwgY29uc3QgaXRlbV90IGFycltdLCB2 ZWN0X3QgKnZEZWx0YXMsCisJCQkJCQkJdW5pcXNvcnR2ZWN0X3QgKnVzdkRlbHRhV2lkdGhz LAorCQkJCQkJCXZlY3RfdCAqdldpZHRoQ291bnRlcnMpOworCitleHRlcm4gaW50IGRmb3Jf Y2FsY193aWR0aChzaXplX3QgY250RGVsdGEsCisJCQkJCQkgICBjb25zdCB1bmlxc29ydHZl Y3RfdCAqdXN2RGVsdGFXaWR0aHMsCisJCQkJCQkgICBjb25zdCB2ZWN0X3QgKnZXaWR0aENv dW50ZXJzLCBzaXplX3QgKndpZHRoLAorCQkJCQkJICAgc2l6ZV90ICpjbnRFeGNlcHRpb25z KTsKKworZXh0ZXJuIGludCBkZm9yX3BhY2soc2l6ZV90IGNudCwgY29uc3QgaXRlbV90IGFy cltdLCBleGNhbGdfdCBpc0V4Y1VzYWdlLAorCQkJCQkgZGZvcl9tZXRhX3QgKmRmb3IsIHNp emVfdCBidWZTaXplLCB1aW50OF90IGJ1ZltdKTsKKworZXh0ZXJuIGludCBkZm9yX3VucGFj ayhjb25zdCBkZm9yX21ldGFfdCAqZGZvciwgdW5pcXNvcnR2ZWN0X3QgKnZWYWxzLAorCQkJ CQkgICBzaXplX3QgYnVmU2l6ZSwgdWludDhfdCBidWZbXSk7CisKK2V4dGVybiB2b2lkIGRm b3JfY2xlYXJfbWV0YShkZm9yX21ldGFfdCAqZGZvcik7CisKK2V4dGVybiBkZm9yX3N0YXRz X3QgZGZvcl9jYWxjX3N0YXRzKGRmb3JfbWV0YV90IGRmb3IpOworCitleHRlcm4gc2l6ZV90 IGRmb3JfY2FsY19uYnl0ZXMoZGZvcl9tZXRhX3QgZGZvcik7CisKKyNpbmNsdWRlICJkZm9y X3RlbXBsX3VuZGVmLmgiCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIvZGZvcl90ZW1w bF9zdGFwbGUuaCBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsX3N0YXBsZS5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lOTNjNDBhYzAzNAotLS0gL2Rl di9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsX3N0YXBsZS5oCkBAIC0w LDAgKzEsMTI1IEBACisvKgorICogRmlsZTogZGZvcl9zdGFwbGVfdGVtcGwuaAorICovCisK KyNpbmNsdWRlICJjLmgiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIE5PTlJF VVNBQkxFIENPREUsIGFsbG93ZWQgdG8gYmUgaW5jbHVkZWQgb25seSBvbmNlCisgKgorICog VGhpcyBjb2RlIHNob3VsZCBhcHBlYXIgb25seSBvbmNlIGluIGEgZmlsZSAob3IgaW4gYSBj aGFpbiBvZiBmaWxlcykKKyAqIGluY2x1ZGluZyB0aGlzIGhlYWRlciB3aXRoICNpbmNsdWRl LiBTbywgd2UgcHJvdGVjdCBpdCBmcm9tIGR1cGxpY2F0ZXMgYnkKKyAqIG1lYW5zIG9mIG1h Y3JvCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2lmbmRlZiBfREZPUl9TVEFQ TEVfVEVNUExfSF9VTklRVUVfQ09ERV8KKyNkZWZpbmUgX0RGT1JfU1RBUExFX1RFTVBMX0hf VU5JUVVFX0NPREVfCisKK3R5cGVkZWYgc3RydWN0IHsKKwlzaXplX3QgaXRlbV9jbnQ7CisJ c2l6ZV90IGRlbHRhX3dpZDsKKwlzaXplX3QgZXhjX2NudDsKKwlzaXplX3QgZXhjX3dpZDsK KwlzaXplX3QgZXhjX3Bvc193aWQ7CisJc2l6ZV90IG5ieXRlczsgLyogc2l6ZSBvZiBwYWNr IGluIGJ5dGVzICovCisJdWludDhfdCAqcGFjazsKKwlib29sIG91dGVyX21lbTsKK30gZGZv cl9tZXRhX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKwlzaXplX3QgbmJpdHM7ICAvKiBzaXpl IG9mIHBhY2sgaW4gYml0cyB1c2VkIGluIGZhY3QgKi8KKwlzaXplX3QgZGVsdGFfcGFja19u Yml0czsgLyogaW4gYml0cyAqLworCXNpemVfdCBleGNfcGFja19uYml0czsgLyogaW4gYml0 cyAqLworCXNpemVfdCBleGNfcG9zX3BhY2tfbmJpdHM7IC8qIGluIGJpdHMgKi8KKwlmbG9h dCByYXRpbzsgIC8qIGNvbXByZXNzaW9uIHJhdGlvICovCit9IGRmb3Jfc3RhdHNfdDsKKwor dHlwZWRlZiBlbnVtIHsKKwlERk9SX0VYQ19ET05UX1VTRSA9IDAsCisJREZPUl9FWENfVVNF ID0gMQorfSBleGNhbGdfdDsKKworI2VuZGlmIC8qIF9ERk9SX1NUQVBMRV9URU1QTF9IX1VO SVFVRV9DT0RFXyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBFbmQgb2Yg Q29kZSwgYWxsb3dlZCB0byBiZSBpbmNsdWRlZCBvbmx5IG9uY2UKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogUkVVU0FCTEUg Q09ERQorICoKKyAqIFRoaXMgY29kZSBjYW4gYmUgcmV1c2VkIHdpdGggI2luY2x1ZGUgZGly ZWN0aXZlIGluIGEgZmlsZSBpZiBERk9SX01BUktFUiBpcworICogcmVkZWZpbmVkLiBUaGlz IGFsbG93cyBjcmVhdGlvbiBvZiBzZXZlcmFsIHR5cGVzIG9mIHZlY3RvcnMgd2l0aCBkaWZm ZXJlbnQKKyAqIHR5cGVzIG9mIG1lbWJlcnMuCisgKgorICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCisjaWZuZGVmIERGT1JfSVRFTV9UWVBFCisjZXJyb3IgIkRGT1JfSVRFTV9UWVBF IG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKworI2lmbmRlZiBERk9SX01BUktFUgor I2Vycm9yICJERk9SX01BUktFUiBtYWNybyBpcyBpbmRlZmluZWQuIgorI2VuZGlmCisKKyNp Zm5kZWYgREZPUl9NQUxMT0MKKyNlcnJvciAiREZPUl9NQUxMT0MgbWFjcm8gaXMgaW5kZWZp bmVkLiIKKyNlbmRpZgorCisjaWZuZGVmIERGT1JfRlJFRQorI2Vycm9yICJERk9SX0ZSRUUg bWFjcm8gaXMgaW5kZWZpbmVkLiIKKyNlbmRpZgorCisjZGVmaW5lIE1BS0VfSEVBREVSX05B TUUodiwgbSkgQ3BwQXNTdHJpbmcyKENwcENvbmNhdDIodiwgbSkuaCkKKworLyoKKyAqIEhl YWRlcnMgZnJvbSB2ZWN0IGFuZCBiaXRwYWNrIHVuaXRzCisgKgorICogRXhhbXBsZTogZGZv cl91MTYuYyBhbmQgZGZvcl91MTYuaCBuZWVkIHZlY3RfdTE2LmggYW5kIGJpdHBhY2tfdTE2 LmgKKyAqLworI2luY2x1ZGUgTUFLRV9IRUFERVJfTkFNRShsaWIvdmVjdF8sIERGT1JfTUFS S0VSKQorI2luY2x1ZGUgTUFLRV9IRUFERVJfTkFNRShsaWIvYml0cGFja18sIERGT1JfTUFS S0VSKQorCisvKiBUeXBlcyAqLworI2RlZmluZSBpdGVtX3QJCSAgIERGT1JfSVRFTV9UWVBF CisjZGVmaW5lIHZlY3RfdAkJICAgQ3BwQ29uY2F0VHJpcGxlMih2ZWN0XywgREZPUl9NQVJL RVIsIF90KQorI2RlZmluZSB1bmlxc29ydHZlY3RfdCBDcHBDb25jYXRUcmlwbGUyKHVuaXFz b3J0dmVjdF8sIERGT1JfTUFSS0VSLCBfdCkKKworLyogRnVuY3Rpb25zICovCisjZGVmaW5l IGRmb3JfY2FsY19kZWx0YXMgQ3BwQ29uY2F0VHJpcGxlMihkZm9yXywgREZPUl9NQVJLRVIs IF9jYWxjX2RlbHRhcykKKyNkZWZpbmUgZGZvcl9jYWxjX3dpZHRoCSBDcHBDb25jYXRUcmlw bGUyKGRmb3JfLCBERk9SX01BUktFUiwgX2NhbGNfd2lkdGgpCisjZGVmaW5lIGRmb3JfcGFj awkJIENwcENvbmNhdFRyaXBsZTIoZGZvcl8sIERGT1JfTUFSS0VSLCBfcGFjaykKKyNkZWZp bmUgZGZvcl91bnBhY2sJCSBDcHBDb25jYXRUcmlwbGUyKGRmb3JfLCBERk9SX01BUktFUiwg X3VucGFjaykKKyNkZWZpbmUgZGZvcl9hbmFseXplCSBDcHBDb25jYXRUcmlwbGUyKGRmb3Jf LCBERk9SX01BUktFUiwgX2FuYWx5emUpCisjZGVmaW5lIGRmb3JfY2xlYXJfbWV0YQkgQ3Bw Q29uY2F0VHJpcGxlMihkZm9yXywgREZPUl9NQVJLRVIsIF9jbGVhcl9tZXRhKQorI2RlZmlu ZSBkZm9yX2NhbGNfc3RhdHMJIENwcENvbmNhdFRyaXBsZTIoZGZvcl8sIERGT1JfTUFSS0VS LCBfY2FsY19zdGF0cykKKyNkZWZpbmUgZGZvcl9jYWxjX25ieXRlcyBDcHBDb25jYXRUcmlw bGUyKGRmb3JfLCBERk9SX01BUktFUiwgX2NhbGNfbmJ5dGVzKQorCisvKiBGdW5jdGlvbnMg b2YgdGhlIHZlY3QgdW5pdCAqLworI2RlZmluZSB2ZWN0X2luaXQJCSAgIENwcENvbmNhdFRy aXBsZTIodmVjdF8sIERGT1JfTUFSS0VSLCBfaW5pdCkKKyNkZWZpbmUgdmVjdF9maWxsCQkg ICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBERk9SX01BUktFUiwgX2ZpbGwpCisjZGVmaW5l IHZlY3RfcmVzZXJ2ZQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBERk9SX01BUktFUiwg X3Jlc2VydmUpCisjZGVmaW5lIHZlY3RfYXBwZW5kCQkgICBDcHBDb25jYXRUcmlwbGUyKHZl Y3RfLCBERk9SX01BUktFUiwgX2FwcGVuZCkKKyNkZWZpbmUgdmVjdF9wcmludAkJICAgQ3Bw Q29uY2F0VHJpcGxlMih2ZWN0XywgREZPUl9NQVJLRVIsIF9wcmludCkKKyNkZWZpbmUgdmVj dF9jb21wYXJlCSAgIENwcENvbmNhdFRyaXBsZTIodmVjdF8sIERGT1JfTUFSS0VSLCBfY29t cGFyZSkKKyNkZWZpbmUgdmVjdF9pbnNlcnQJCSAgIENwcENvbmNhdFRyaXBsZTIodmVjdF8s IERGT1JfTUFSS0VSLCBfaW5zZXJ0KQorI2RlZmluZSB2ZWN0X2NsZWFyCQkgICBDcHBDb25j YXRUcmlwbGUyKHZlY3RfLCBERk9SX01BUktFUiwgX2NsZWFyKQorCisjZGVmaW5lIHVzdl9p bnNlcnQJCSAgIENwcENvbmNhdFRyaXBsZTIodXN2XywgREZPUl9NQVJLRVIsIF9pbnNlcnQp CisjZGVmaW5lIHVzdl9zZWFyY2gJCSAgIENwcENvbmNhdFRyaXBsZTIodXN2XywgREZPUl9N QVJLRVIsIF9zZWFyY2gpCisKKy8qIEZ1bmN0aW9ucyBvZiB0aGUgYml0cGFjayB1bml0ICov CisjZGVmaW5lIHdpZHRoX2Zyb21fdmFsIENwcENvbmNhdFRyaXBsZTIod2lkdGhfLCBERk9S X01BUktFUiwgX2Zyb21fdmFsKQorI2RlZmluZSB3aWR0aF90b19tYXNrICBDcHBDb25jYXRU cmlwbGUyKHdpZHRoXywgREZPUl9NQVJLRVIsIF90b19tYXNrKQorI2RlZmluZSBiaXRwYWNr X3BhY2sgICBDcHBDb25jYXRUcmlwbGUyKGJpdHBhY2tfLCBERk9SX01BUktFUiwgX3BhY2sp CisjZGVmaW5lIGJpdHBhY2tfdW5wYWNrIENwcENvbmNhdFRyaXBsZTIoYml0cGFja18sIERG T1JfTUFSS0VSLCBfdW5wYWNrKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBF bmQgb2YgUmV1c2FibGUgQ29kZQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgor ICogRG9uJ3QgZm9yZ2V0IHRvIGluY2x1ZGUgdGhpcyBjb2RlIGluIHlvdXIgZmlsZSB0aGF0 IHVzZXMgdGhpcyBoZWFkZXIKKyAqICAgICAjaW5jbHVkZSAiZGZvcl90ZW1wbF91bmRlZi5o IgorICoKKyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfdW5k ZWYuaCBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsX3VuZGVmLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ2MGQzNjE5MzA4Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfdW5kZWYuaApAQCAtMCwwICsxLDI5 IEBACisjdW5kZWYgaXRlbV90CisjdW5kZWYgdmVjdF90CisjdW5kZWYgdW5pcXNvcnR2ZWN0 X3QKKworI3VuZGVmIGRmb3JfY2FsY19kZWx0YXMKKyN1bmRlZiBkZm9yX2NhbGNfd2lkdGgK KyN1bmRlZiBkZm9yX3BhY2sKKyN1bmRlZiBkZm9yX3VucGFjaworI3VuZGVmIGRmb3JfYW5h bHl6ZQorI3VuZGVmIGRmb3JfY2FsY19zdGF0cworI3VuZGVmIGRmb3JfY2FsY19uYnl0ZXMK KworI3VuZGVmIHZlY3RfY3JlYXRlCisjdW5kZWYgdmVjdF9jcmVhdGVfZmlsbGVkCisjdW5k ZWYgdmVjdF9yZXNlcnZlCisjdW5kZWYgdmVjdF9hcHBlbmQKKyN1bmRlZiB2ZWN0X2Rlc3Ry b3kKKyN1bmRlZiB2ZWN0X3ByaW50CisjdW5kZWYgdmVjdF9jb21wYXJlCisjdW5kZWYgdmVj dF9pbnNlcnQKKyN1bmRlZiB2ZWN0X2NsZWFyCisKKyN1bmRlZiB1c3ZfaW5zZXJ0CisjdW5k ZWYgdXN2X3NlYXJjaAorCisjdW5kZWYgd2lkdGhfZnJvbV92YWwKKyN1bmRlZiB3aWR0aF90 b19tYXNrCisjdW5kZWYgYml0cGFja19wYWNrCisjdW5kZWYgYml0cGFja191bnBhY2sKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3UxNi5oIGIvc3JjL2luY2x1ZGUvbGli L2Rmb3JfdTE2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcx NmM5OWRiYzU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdTE2 LmgKQEAgLTAsMCArMSwxMyBAQAorLyoKKyAqIEZpbGU6IGRmb3JfdTE2LmgKKyAqLworCisj aWZuZGVmIF9ERk9SX1UxNl9IXworI2RlZmluZSBfREZPUl9VMTZfSF8KKworLyogY2xhbmct Zm9ybWF0IG9mZiAqLworI2luY2x1ZGUgImRmb3JfdTE2X2NvbmZpZy5oIgorI2luY2x1ZGUg ImRmb3JfdGVtcGwuaCIKKy8qIGNsYW5nLWZvcm1hdCBvbiAqLworCisjZW5kaWYgLyogX0RG T1JfVTE2X0hfICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIvZGZvcl91MTZfY29u ZmlnLmggYi9zcmMvaW5jbHVkZS9saWIvZGZvcl91MTZfY29uZmlnLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc1MTkzN2FjNTEzCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdTE2X2NvbmZpZy5oCkBAIC0wLDAgKzEsNCBA QAorI2RlZmluZSBERk9SX0lURU1fVFlQRSB1aW50MTZfdAorI2RlZmluZSBERk9SX01BUktF UgkgICB1MTYKKyNkZWZpbmUgREZPUl9NQUxMT0MJICAgbWFsbG9jCisjZGVmaW5lIERGT1Jf RlJFRQkgICBmcmVlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9kZm9yLy5naXRpZ25vcmUgYi9z cmMvdGVzdC9kZm9yLy5naXRpZ25vcmUKaW5kZXggMGQ3N2E1MTIxNmIuLjQ0N2U5NWMwYzA5 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9kZm9yLy5naXRpZ25vcmUKKysrIGIvc3JjL3Rlc3Qv ZGZvci8uZ2l0aWdub3JlCkBAIC0xLDMgKzEsNCBAQAogdGVzdF9iaXRwYWNrX3UxNgordGVz dF9kZm9yX3UxNgogdGVzdF91bmlxc29ydHZlY3RfdTE2CiB0ZXN0X3ZlY3RfdTE2CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9kZm9yL01ha2VmaWxlIGIvc3JjL3Rlc3QvZGZvci9NYWtlZmls ZQppbmRleCA1ZWZjMWFmMGEyNC4uZjlmMWI3MDVjNWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L2Rmb3IvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZQpAQCAtMjcsNyAr MjcsOCBAQCBMSUJUQVBfT0JKUyA9ICQodG9wX2J1aWxkZGlyKS9zcmMvdGVzdC9saWJ0YXAv dGFwLm8KIAogVEVTVFM9IHRlc3RfdmVjdF91MTYgXAogICAgICAgIHRlc3RfdW5pcXNvcnR2 ZWN0X3UxNiBcCi0gICAgICAgdGVzdF9iaXRwYWNrX3UxNgorICAgICAgIHRlc3RfYml0cGFj a191MTYgXAorICAgICAgIHRlc3RfZGZvcl91MTYKIAogJChURVNUUzolPSUubyk6IENQUEZM QUdTICs9IC1JJCh0b3BfYnVpbGRkaXIpL3NyYy90ZXN0IC1ERlJPTlRFTkQKIApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvZGZvci9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L2Rmb3IvbWVzb24u YnVpbGQKaW5kZXggY2U3NjJjNTI0MzAuLjRhNzYwYWI2OGZhIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9kZm9yL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L2Rmb3IvbWVzb24uYnVpbGQK QEAgLTgsNiArOCw3IEBAIGRmb3JfZGlyID0gam9pbl9wYXRocyhtZXNvbi5wcm9qZWN0X3Nv dXJjZV9yb290KCksICdzcmMvYmFja2VuZC9saWInKQogZGZvcl9zb3VyY2VzID0gZmlsZXMo CiAgIGpvaW5fcGF0aHMoZGZvcl9kaXIsICd2ZWN0X3UxNi5jJyksCiAgIGpvaW5fcGF0aHMo ZGZvcl9kaXIsICdiaXRwYWNrX3UxNi5jJyksCisgIGpvaW5fcGF0aHMoZGZvcl9kaXIsICdk Zm9yX3UxNi5jJyksCiApCiAKIGRmb3JfdGVzdF9saWIgPSBzdGF0aWNfbGlicmFyeSgKQEAg LTM2LDYgKzM3LDcgQEAgdGVzdF9uYW1lcyA9IFsKICAgJ3Rlc3RfdmVjdF91MTYnLAogICAn dGVzdF91bmlxc29ydHZlY3RfdTE2JywKICAgJ3Rlc3RfYml0cGFja191MTYnLAorICAndGVz dF9kZm9yX3UxNicsCiBdCiAKIGZvcmVhY2ggdCA6IHRlc3RfbmFtZXMKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L2Rmb3IvdGVzdF9kZm9yX3UxNi5jIGIvc3JjL3Rlc3QvZGZvci90ZXN0X2Rm b3JfdTE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMyMmI3 MTRiYTM4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvZGZvci90ZXN0X2Rmb3JfdTE2 LmMKQEAgLTAsMCArMSwzNzEgQEAKKy8qCisgKiB0ZXN0X2Rmb3IuYworICovCisKKyNpbmNs dWRlICJsaWIvYml0cGFja191MTYuaCIKKyNpbmNsdWRlICJsaWIvZGZvcl91MTYuaCIKKyNp bmNsdWRlICJsaWIvdmVjdF91MTYuaCIKKyNpbmNsdWRlICJsaWJ0YXAvdGFwLmgiCisjaW5j bHVkZSAidGVzdC5oIgorCit2b2lkIHRlc3RfZGVsdGFfY2FsY3VsYXRpb24oc2l6ZV90IGNu dCwgdWludDE2X3QgaW5BcnJbXSwgc2l6ZV90IGNudERlbHRhLAorCQkJCQkJCXVpbnQxNl90 IG1hckRlbHRhc0V4cGVjdGVkW10sIHNpemVfdCBjbnRXaWR0aCwKKwkJCQkJCQl1aW50MTZf dCBtYXJXaWR0aHNFeHBlY3RlZFtdLCBzaXplX3QgY250U3RhdCwKKwkJCQkJCQl1aW50MTZf dCBtYXJXaWR0aHNTdGF0RXhwZWN0ZWRbXSk7CisKK3ZvaWQgdGVzdF9jYWxjX2V4Y2VwdGlv bnMoc2l6ZV90IG51bURlbHRhcywgc2l6ZV90IG51bVdpZHRocywKKwkJCQkJCSAgdWludDE2 X3QgbWFyV2lkdGhzW10sIHNpemVfdCBudW1Db3VudHMsCisJCQkJCQkgIHVpbnQxNl90IG1h ckNvdW50c1tdLCBzaXplX3Qgc3pBd2FpdGVkV2lkdGgsCisJCQkJCQkgIHNpemVfdCBjbnRB d2FpdGVkRXhjQ291bnQpOworCit2b2lkIHRlc3RfZGZvcihzaXplX3QgY250LCB1aW50MTZf dCBhcnJbXSwgZXhjYWxnX3QgaXNFeGNVc2FnZSwKKwkJCSAgIHNpemVfdCB3aWREZWx0YUF3 YWl0ZWQsIHNpemVfdCBjbnRFeGNDbnRBd2FpdGVkLAorCQkJICAgc2l6ZV90IHdpZEV4Y1dp ZEF3YWl0ZWQsIHNpemVfdCB3aWRFeGNQb3NXaWRBd2FpdGVkLAorCQkJICAgc2l6ZV90IGNu dEJpdHNDb3VudEF3YWl0ZWQsIHNpemVfdCBjbnRCeXRlQ291bnRBd2FpdGVkLAorCQkJICAg ZmxvYXQgZmxNaW5SYXRpb0F3YWl0ZWQsIHVpbnQ4X3QgdThhclBhY2tBd2FpdGVkW10pOwor Cit2b2lkCit0ZXN0X2RlbHRhX2NhbGN1bGF0aW9uKHNpemVfdCBjbnQsIHVpbnQxNl90IGlu QXJyW10sIHNpemVfdCBjbnREZWx0YSwKKwkJCQkJICAgdWludDE2X3QgbWFyRGVsdGFzRXhw ZWN0ZWRbXSwgc2l6ZV90IGNudFdpZHRoLAorCQkJCQkgICB1aW50MTZfdCBtYXJXaWR0aHNF eHBlY3RlZFtdLCBzaXplX3QgY250U3RhdCwKKwkJCQkJICAgdWludDE2X3QgbWFyV2lkdGhz U3RhdEV4cGVjdGVkW10pCit7CisJdmVjdF91MTZfdCB2RGVsdGFzOworCXZlY3RfdTE2X3Qg dldpZHRoQ291bnRlcnM7CisJdW5pcXNvcnR2ZWN0X3UxNl90IHVzdkRlbHRhV2lkdGhzOwor CXZlY3RfdTE2X3QgYXdhaXRlZDsKKwlpbnQgcmVzOworCisJcHJpbnRmKCItLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOworCXByaW50Zigi VGVzdFxuIik7CisJcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS1cbiIpOworCisJcHJpbnRmKCIgIGluQXJyOiIpOworCWZvciAoc2l6 ZV90IGkgPSAwOyBpIDwgY250OyBpKyspCisJCXByaW50ZigiICV1IiwgKHVpbnQzMl90KWlu QXJyW2ldKTsKKwlwcmludGYoIlxuIik7CisKKwl2ZWN0X3UxNl9pbml0KCZ2RGVsdGFzLCAw LCBOVUxMKTsKKwl2ZWN0X3UxNl9pbml0KCZ1c3ZEZWx0YVdpZHRocywgMCwgTlVMTCk7CisJ dmVjdF91MTZfaW5pdCgmdldpZHRoQ291bnRlcnMsIDAsIE5VTEwpOworCisJLyogVGVzdGVk IGZ1bmN0aW9uICovCisJcmVzID0gZGZvcl91MTZfY2FsY19kZWx0YXMoY250LCBpbkFyciwg JnZEZWx0YXMsICZ1c3ZEZWx0YVdpZHRocywKKwkJCQkJCQkgICAmdldpZHRoQ291bnRlcnMp OworCWNtcF9vayhyZXMsICI9PSIsIDApOworCisJcHJpbnRmKCIgIERlbHRhIGV4cGVjdGVk OiIpOworCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY250RGVsdGE7IGkrKykKKwkJcHJpbnRm KCIgJXUiLCAodWludDMyX3QpbWFyRGVsdGFzRXhwZWN0ZWRbaV0pOworCXByaW50ZigiXG4i KTsKKworCXByaW50ZigiICBEZWx0YSBmYWN0OiAgICAiKTsKKwl2ZWN0X3UxNl9wcmludCgm dkRlbHRhcyk7CisKKwljbXBfb2sodkRlbHRhcy5jbnQsICI9PSIsIGNudCwgIlRoZSBEZWx0 YSBjb3VudCBpcyBPSy4iKTsKKwl2ZWN0X3UxNl9pbml0KCZhd2FpdGVkLCAwLCBOVUxMKTsK Kwl2ZWN0X3UxNl9maWxsKCZhd2FpdGVkLCBjbnQsIG1hckRlbHRhc0V4cGVjdGVkKTsKKwlj bXBfb2sodmVjdF91MTZfY29tcGFyZSgmdkRlbHRhcywgJmF3YWl0ZWQpLCAiPT0iLCAwLAor CQkgICAiQWxsIGRlbHRhcyBhcmUgY2FsY3VsYXRlZCBwcm9wZXJseSIpOworCXZlY3RfdTE2 X2NsZWFyKCZhd2FpdGVkKTsKKworCXByaW50ZigiICBXaWR0aCBleHBlY3RlZDoiKTsKKwlm b3IgKHNpemVfdCBpID0gMDsgaSA8IGNudFdpZHRoOyBpKyspCisJCXByaW50ZigiICV1Iiwg KHVpbnQzMl90KW1hcldpZHRoc0V4cGVjdGVkW2ldKTsKKwlwcmludGYoIlxuIik7CisKKwlw cmludGYoIiAgV2lkdGggZmFjdDogICAgIik7CisJdmVjdF91MTZfcHJpbnQoJnVzdkRlbHRh V2lkdGhzKTsKKworCWNtcF9vayh1c3ZEZWx0YVdpZHRocy5jbnQsICI9PSIsIGNudFdpZHRo LCAiVGhlIFdpZHRoIGNvdW50IGlzIE9LLiIpOworCisJLyogZG9uJ3QgcmVhbGx5IG5lZWQg aW5pdGlhbGlzYXRpb24gYWZ0ZXIgdmVjdF9jbGVhbiBoYXZpbmcgYmVlbiBkb25lCisJICog YWJvdmUqLworCS8qIHZlY3RfdTE2X2luaXQoJmF3YWl0ZWQsIDAsIE5VTEwpOyAqLworCisJ dmVjdF91MTZfZmlsbCgmYXdhaXRlZCwgY250V2lkdGgsIG1hcldpZHRoc0V4cGVjdGVkKTsK KwljbXBfb2sodmVjdF91MTZfY29tcGFyZSgmdXN2RGVsdGFXaWR0aHMsICZhd2FpdGVkKSwg Ij09IiwgMCwKKwkJICAgIkFsbCBkZWx0YSB3aWR0aHMgaXMgT0suIik7CisJdmVjdF91MTZf Y2xlYXIoJmF3YWl0ZWQpOworCisJcHJpbnRmKCIgIFN0YXRpc3RpY3MgZXhwZWN0ZWQ6Iik7 CisJZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbnRTdGF0OyBpKyspCisJCXByaW50ZigiICV1 IiwgKHVpbnQzMl90KW1hcldpZHRoc1N0YXRFeHBlY3RlZFtpXSk7CisJcHJpbnRmKCJcbiIp OworCisJcHJpbnRmKCIgIFN0YXRpc3RpY3MgZmFjdDogICAgIik7CisJdmVjdF91MTZfcHJp bnQoJnZXaWR0aENvdW50ZXJzKTsKKworCWNtcF9vaygKKwkJdXN2RGVsdGFXaWR0aHMuY250 LCAiPT0iLCB2V2lkdGhDb3VudGVycy5jbnQsCisJCSJUaGUgY291bnQgb2Ygc3RhdGlzdGlj cyBvZiB3aWR0aHMgaXMgZXF1YWwgdG8gdGhlIGNvdW50IG9mIHdpZHRocy4iKTsKKworCS8q IGRvbid0IHJlYWxseSBuZWVkIGluaXRpYWxpc2F0aW9uIGFmdGVyIHZlY3RfY2xlYW4gaGF2 aW5nIGJlZW4gZG9uZQorCSAqIGFib3ZlKi8KKwl2ZWN0X3UxNl9maWxsKCZhd2FpdGVkLCBj bnRTdGF0LCBtYXJXaWR0aHNTdGF0RXhwZWN0ZWQpOworCWNtcF9vayh2ZWN0X3UxNl9jb21w YXJlKCZ2V2lkdGhDb3VudGVycywgJmF3YWl0ZWQpLCAiPT0iLCAwLAorCQkgICAiV2lkdGgg c3RhdGlzdGljcyBpcyBPSy4iKTsKKwl2ZWN0X3UxNl9jbGVhcigmYXdhaXRlZCk7CisKKwl2 ZWN0X3UxNl9jbGVhcigmdkRlbHRhcyk7CisJdmVjdF91MTZfY2xlYXIoJnVzdkRlbHRhV2lk dGhzKTsKKwl2ZWN0X3UxNl9jbGVhcigmdldpZHRoQ291bnRlcnMpOworfQorCit2b2lkCit0 ZXN0X2NhbGNfZXhjZXB0aW9ucyhzaXplX3QgbnVtRGVsdGFzLCBzaXplX3QgbnVtV2lkdGhz LCB1aW50MTZfdCBtYXJXaWR0aHNbXSwKKwkJCQkJIHNpemVfdCBudW1Db3VudHMsIHVpbnQx Nl90IG1hckNvdW50c1tdLAorCQkJCQkgc2l6ZV90IHN6QXdhaXRlZFdpZHRoLCBzaXplX3Qg Y250QXdhaXRlZEV4Y0NvdW50KQoreworCWludCByZXM7CisJdmVjdF91MTZfdCB2V2lkdGhD b3VudGVyczsKKwl1bmlxc29ydHZlY3RfdTE2X3QgdXN2RGVsdGFXaWR0aHM7CisJc2l6ZV90 IHdpZHRoLCBjbnRFeGNlcHRpb25zOworCisJdmVjdF91MTZfaW5pdCgmdXN2RGVsdGFXaWR0 aHMsIDAsIE5VTEwpOworCXZlY3RfdTE2X2ZpbGwoJnVzdkRlbHRhV2lkdGhzLCBudW1XaWR0 aHMsIG1hcldpZHRocyk7CisKKwl2ZWN0X3UxNl9pbml0KCZ2V2lkdGhDb3VudGVycywgMCwg TlVMTCk7CisJdmVjdF91MTZfZmlsbCgmdldpZHRoQ291bnRlcnMsIG51bUNvdW50cywgbWFy Q291bnRzKTsKKworCXJlcyA9IGRmb3JfdTE2X2NhbGNfd2lkdGgobnVtRGVsdGFzLCAmdXN2 RGVsdGFXaWR0aHMsICZ2V2lkdGhDb3VudGVycywKKwkJCQkJCQkgICZ3aWR0aCwgJmNudEV4 Y2VwdGlvbnMpOworCWNtcF9vayhyZXMsICI9PSIsIDApOworCWNtcF9vayh3aWR0aCwgIj09 Iiwgc3pBd2FpdGVkV2lkdGgsICJXaWR0aCBpcyBPSy4iKTsKKwljbXBfb2soY250RXhjZXB0 aW9ucywgIj09IiwgY250QXdhaXRlZEV4Y0NvdW50LCAiRXhjZXB0aW9ucyBudW0gaXMgT0si KTsKKworCXZlY3RfdTE2X2NsZWFyKCZ1c3ZEZWx0YVdpZHRocyk7CisJdmVjdF91MTZfY2xl YXIoJnZXaWR0aENvdW50ZXJzKTsKK30KKwordm9pZAordGVzdF9kZm9yKHNpemVfdCBjbnQs IHVpbnQxNl90IGFycltdLCBleGNhbGdfdCBpc0V4Y1VzYWdlLAorCQkgIHNpemVfdCB3aWRE ZWx0YVdpZHRoQXdhaXRlZCwgc2l6ZV90IGNudEV4Y0NudEF3YWl0ZWQsCisJCSAgc2l6ZV90 IHdpZEV4Y1dpZEF3YWl0ZWQsIHNpemVfdCB3aWRFeGNQb3NXaWRBd2FpdGVkLAorCQkgIHNp emVfdCBjbnRCaXRzQ291bnRBd2FpdGVkLCBzaXplX3QgY250Qnl0ZUNvdW50QXdhaXRlZCwK KwkJICBmbG9hdCBmbE1pblJhdGlvQXdhaXRlZCwgdWludDhfdCB1OGFyUGFja0F3YWl0ZWRb XSkKK3sKKwlpbnQgcmVzOworCWRmb3JfbWV0YV90IGRmb3I7CisJZGZvcl9zdGF0c190IHN0 YXRzOworCXVuaXFzb3J0dmVjdF91MTZfdCBleHRyYWN0ZWQ7CisKKwlyZXMgPSBkZm9yX3Ux Nl9wYWNrKGNudCwgYXJyLCBpc0V4Y1VzYWdlLCAmZGZvciwgMCwgTlVMTCk7CisJY21wX29r KHJlcywgIj09IiwgMCwgImRmb3JfcGFjayBmdW5jIGhhcyBwcm9jZXNzZWQgT0suIik7CisJ Y21wX29rKGRmb3IuaXRlbV9jbnQsICI9PSIsIGNudCwgIkNvdW50IG9mIGRlbHRhcyBpcyBP Sy4iKTsKKwljbXBfb2soZGZvci5kZWx0YV93aWQsICI9PSIsIHdpZERlbHRhV2lkdGhBd2Fp dGVkLCAiRGVsdGEgd2lkdGggaXMgT0suIik7CisJY21wX29rKGRmb3IuZXhjX2NudCwgIj09 IiwgY250RXhjQ250QXdhaXRlZCwgIkV4Y2VwdGlvbiBjb3VudCBpcyBPSy4iKTsKKwljbXBf b2soZGZvci5leGNfd2lkLCAiPT0iLCB3aWRFeGNXaWRBd2FpdGVkLCAiRXhjZXB0aW9uIHdp ZHRoIGlzIE9LLiIpOworCWNtcF9vayhkZm9yLmV4Y19wb3Nfd2lkLCAiPT0iLCB3aWRFeGNQ b3NXaWRBd2FpdGVkLAorCQkgICAiRXhjZXB0aW9uIHBvc2l0aW9uIHdpZHRoIGlzIE9LLiIp OworCW9rKGRmb3IucGFjayAhPSBOVUxMLCAiUGFjayBpcyBjcmVhdGVkIChub3QgTlVMTCku Iik7CisKKwlzdGF0cyA9IGRmb3JfdTE2X2NhbGNfc3RhdHMoZGZvcik7CisJY21wX29rKHN0 YXRzLm5iaXRzLCAiPT0iLCBjbnRCaXRzQ291bnRBd2FpdGVkLCAiQml0cyBjb3VudCBpcyBP Sy4iKTsKKwljbXBfb2soZGZvci5uYnl0ZXMsICI9PSIsIGNudEJ5dGVDb3VudEF3YWl0ZWQs ICJCeXRlcyBjb3VudCBpcyBPSy4iKTsKKwlvayhzdGF0cy5yYXRpbyA+IGZsTWluUmF0aW9B d2FpdGVkLCAiQ29tcHJlc3Npb24gcmF0aW8gaXMgT0suIik7CisKKwlpZiAodThhclBhY2tB d2FpdGVkICE9IE5VTEwpCisJCW9rKDAgPT0gbWVtY21wKGRmb3IucGFjaywgdThhclBhY2tB d2FpdGVkLCBjbnRCeXRlQ291bnRBd2FpdGVkKSwKKwkJICAgIlBhY2sgY29udGVudCBpcyBP Sy4iKTsKKwllbHNlCisJCW9rKDAgPT0gMCwgIlBhY2sgY29udGVudCBjaGVjayBpcyBza2lw cGVkLiIpOworCisJdGVzdF9wcmludF91MTZfYXJyYXkoY250LCAodWludDE2X3QgKilhcnIs ICJcblxuT3JpZ2luYWwgaW50ZWdlciBhcnJheSIpOworCXRlc3RfcHJpbnRfdThfYXJyYXko ZGZvci5uYnl0ZXMsIGRmb3IucGFjaywgIkNvbXByZXNzZWQgaW50ZWdlciBhcnJheSIpOwor CXByaW50ZigiQ29tcHJlc3Npb24gcmF0aW86JWZcblxuIiwgc3RhdHMucmF0aW8pOworCisJ dmVjdF91MTZfaW5pdCgmZXh0cmFjdGVkLCAwLCBOVUxMKTsKKworCWRmb3JfdTE2X3VucGFj aygmZGZvciwgJmV4dHJhY3RlZCwgMCwgTlVMTCk7CisJY21wX29rKGV4dHJhY3RlZC5jbnQs ICI9PSIsIGNudCwgIkV4dHJhY3RlZCBjb3VudCBpcyBPSyIpOworCWNtcF9vaygwLCAiPT0i LCBtZW1jbXAoYXJyLCBleHRyYWN0ZWQubSwgY250KSwKKwkJICAgIkV4dHJhY3RlZCBhcnJh eSBpcyBlcXVhbCB0byBvcmlnaW5hbCIpOworCisJZnJlZShkZm9yLnBhY2spOworCXZlY3Rf dTE2X2NsZWFyKCZleHRyYWN0ZWQpOworfQorCitpbnQKK21haW4odm9pZCkKK3sKKwlwbGFu KDEzMCk7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09XG4iKTsKKwlwcmludGYoIlRlc3QgREVMVEEgQ0FMQ1VMQVRJT05cbiIpOworCXsKKwkJ dGVzdF9kZWx0YV9jYWxjdWxhdGlvbigKKwkJCTEwLCAodWludDE2X3RbXSkgeyAwLCAxLCAy LCAzLCA0LCA1LCA2LCA3LCA4LCA5IH0sIC8qIGluQXJyICovCisJCQkxMCwKKwkJCSh1aW50 MTZfdFtdKSB7IDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCisJCQkJCQkgICAxIH0sCSAg IC8qIG1hckRlbHRhc0V4cGVjdGVkKi8KKwkJCTEsICh1aW50MTZfdFtdKSB7IDEgfSwgLyog bWFyV2lkdGhzRXhwZWN0ZWQgKi8KKwkJCTEsICh1aW50MTZfdFtdKSB7IDEwIH0gLyogbWFy V2lkdGhzU3RhdEV4cGVjdGVkICovKTsKKworCQl0ZXN0X2RlbHRhX2NhbGN1bGF0aW9uKAor CQkJMTAsICh1aW50MTZfdFtdKSB7IDEsIDMsIDUsIDcsIDksIDExLCAxMywgMTUsIDE3LCAx OSB9LCAvKiBpbkFyciAqLworCQkJMTAsCisJCQkodWludDE2X3RbXSkgeyAxLCAyLCAyLCAy LCAyLCAyLCAyLCAyLCAyLAorCQkJCQkJICAgMiB9LAkJICAvKiBtYXJEZWx0YXNFeHBlY3Rl ZCovCisJCQkyLCAodWludDE2X3RbXSkgeyAxLCAyIH0sIC8qIG1hcldpZHRoc0V4cGVjdGVk ICovCisJCQkyLCAodWludDE2X3RbXSkgeyAxLCA5IH0gLyogbWFyV2lkdGhzU3RhdEV4cGVj dGVkICovKTsKKworCQl0ZXN0X2RlbHRhX2NhbGN1bGF0aW9uKAorCQkJMTQsCisJCQkodWlu dDE2X3RbXSkgeyAxMDAsIDIwMCwgMzAwLCA0MDAsIDQwMSwgNDAyLCA0MDMsIDQwNCwgNDA2 LCA0MDgsCisJCQkJCQkgICA0MTAsIDQxMiwgNDE0LCA0MTYgfSwgLyogaW5BcnIgKi8KKwkJ CTE0LAorCQkJKHVpbnQxNl90W10pIHsgMTAwLCAxMDAsIDEwMCwgMTAwLCAxLCAxLCAxLCAx LCAyLCAyLCAyLCAyLCAyLAorCQkJCQkJICAgMiB9LAkJCSAvKiBtYXJEZWx0YXNFeHBlY3Rl ZCovCisJCQkzLCAodWludDE2X3RbXSkgeyAxLCAyLCA3IH0sIC8qIG1hcldpZHRoc0V4cGVj dGVkICovCisJCQkzLCAodWludDE2X3RbXSkgeyA0LCA2LCA0IH0gLyogbWFyV2lkdGhzU3Rh dEV4cGVjdGVkICovKTsKKworCQl0ZXN0X2RlbHRhX2NhbGN1bGF0aW9uKDEsICh1aW50MTZf dFtdKSB7IDEyMyB9LCAvKiBpbkFyciAqLworCQkJCQkJCSAgIDEsICh1aW50MTZfdFtdKSB7 IDEyMyB9LCAvKiBtYXJEZWx0YXNFeHBlY3RlZCovCisJCQkJCQkJICAgMSwgKHVpbnQxNl90 W10pIHsgNyB9LAkvKiBtYXJXaWR0aHNFeHBlY3RlZCAqLworCQkJCQkJCSAgIDEsCisJCQkJ CQkJICAgKHVpbnQxNl90W10pIHsgMSB9IC8qIG1hcldpZHRoc1N0YXRFeHBlY3RlZCAqLyk7 CisKKwkJdGVzdF9kZWx0YV9jYWxjdWxhdGlvbigwLCBOVUxMLCAvKiBpbkFyciAqLworCQkJ CQkJCSAgIDAsIE5VTEwsIC8qIG1hckRlbHRhc0V4cGVjdGVkKi8KKwkJCQkJCQkgICAwLCBO VUxMLCAvKiBtYXJXaWR0aHNFeHBlY3RlZCAqLworCQkJCQkJCSAgIDAsIE5VTEwgLyogbWFy V2lkdGhzU3RhdEV4cGVjdGVkICovKTsKKwl9CisJcHJpbnRmKCJUZXN0IERFTFRBIENBTENV TEFUSU9OIFBBU1NFRFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09XG5cbiIpOworCisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgRVhDRVBUSU9OUyBD QUxDVUxBVElPTlxuIik7CisJeworCQlpbnQgcmVzOworCQl2ZWN0X3UxNl90IHZXaWR0aENv dW50ZXJzOworCQl1bmlxc29ydHZlY3RfdTE2X3QgdXN2RGVsdGFXaWR0aHM7CisJCXNpemVf dCB3aWR0aCwgY250RXhjZXB0aW9uczsKKworCQl2ZWN0X3UxNl9pbml0KCZ1c3ZEZWx0YVdp ZHRocywgMCwgTlVMTCk7CisJCXZlY3RfdTE2X2ZpbGwoJnVzdkRlbHRhV2lkdGhzLCAzLCAo dWludDE2X3RbXSkgeyAxLCAyLCA3IH0pOworCisJCXZlY3RfdTE2X2luaXQoJnZXaWR0aENv dW50ZXJzLCAwLCBOVUxMKTsKKwkJdmVjdF91MTZfZmlsbCgmdldpZHRoQ291bnRlcnMsIDMs ICh1aW50MTZfdFtdKSB7IDQsIDYsIDQgfSk7IC8vIDQrNis0PTE0CisKKwkJcmVzID0gZGZv cl91MTZfY2FsY193aWR0aCgxNCwgJnVzdkRlbHRhV2lkdGhzLCAmdldpZHRoQ291bnRlcnMs ICZ3aWR0aCwKKwkJCQkJCQkJICAmY250RXhjZXB0aW9ucyk7CisJCWNtcF9vayhyZXMsICI9 PSIsIDApOworCQljbXBfb2sod2lkdGgsICI9PSIsIDcsICJXaWR0aHM9ezEsMiw3fSwgQ291 bnRlcnM9ezQsNiw0fSA9PiB3aWR0aD03Iik7CisJCWNtcF9vayhjbnRFeGNlcHRpb25zLCAi PT0iLCAwLAorCQkJICAgIldpZHRocz17MSwyLDd9LCBDb3VudGVycz17NCw2LDR9ID0+IGV4 Y3B0aW9uc19udW09MCIpOworCX0KKworCXRlc3RfY2FsY19leGNlcHRpb25zKDE0LCAzLCAo dWludDE2X3RbXSkgeyAxLCAyLCA3IH0sIC8qIHdpZHRocyBvZiBkZWx0YXMqLworCQkJCQkJ IDMsICh1aW50MTZfdFtdKSB7IDQsIDYsIDQgfSwJICAvKiBzdGF0aXN0aWNzICovCisJCQkJ CQkgNywJIC8qIHdpZHRoIG9mIHNob3J0IGRlbHRhcyAqLworCQkJCQkJIDApOyAvKiBudW1i ZXIgb2YgZXhjZXB0aW9ucyovCisKKwl0ZXN0X2NhbGNfZXhjZXB0aW9ucygxNCwgMywgKHVp bnQxNl90W10pIHsgMSwgMiwgNyB9LCAvKiB3aWR0aHMgKi8KKwkJCQkJCSAzLCAodWludDE2 X3RbXSkgeyA2LCA3LCAxIH0sCSAgLyogc3RhdCAqLworCQkJCQkJIDIsIDEpOyAvKiBzaG9y dCBkZWx0YXMgd2lkdGgsIGV4Y2VwdGlvbnMgY291bnQqLworCisJdGVzdF9jYWxjX2V4Y2Vw dGlvbnMoNDAsIDMsICh1aW50MTZfdFtdKSB7IDUsIDYsIDEyIH0sIC8qIHdpZHRocyAqLwor CQkJCQkJIDMsICh1aW50MTZfdFtdKSB7IDM2LCAyLCAyIH0sCSAgIC8qIHN0YXQgKi8KKwkJ CQkJCSA1LCA0KTsgLyogc2hvcnQgZGVsdGFzIHdpZHRoLCBleGNlcHRpb25zIGNvdW50Ki8K KworCXRlc3RfY2FsY19leGNlcHRpb25zKDQwLCA0LCAodWludDE2X3RbXSkgeyA1LCA2LCA3 LCAxMiB9LCA0LAorCQkJCQkJICh1aW50MTZfdFtdKSB7IDM2LCAxLCAxLCAyIH0sIDUsIDQp OworCisJdGVzdF9jYWxjX2V4Y2VwdGlvbnMoNDAsIDQsICh1aW50MTZfdFtdKSB7IDUsIDYs IDcsIDEyIH0sIDQsCisJCQkJCQkgKHVpbnQxNl90W10pIHsgMzUsIDEsIDIsIDIgfSwgNiwg NCk7CisKKwl0ZXN0X2NhbGNfZXhjZXB0aW9ucyg0MCwgNCwgKHVpbnQxNl90W10pIHsgNSwg NiwgNywgMTIgfSwgNCwKKwkJCQkJCSAodWludDE2X3RbXSkgeyAzNCwgMSwgMiwgMyB9LCA3 LCAzKTsKKworCXRlc3RfY2FsY19leGNlcHRpb25zKDQwLCA0LCAodWludDE2X3RbXSkgeyA1 LCA2LCA3LCAxMiB9LCA0LAorCQkJCQkJICh1aW50MTZfdFtdKSB7IDEsIDM0LCAyLCAzIH0s IDcsIDMpOworCisJdGVzdF9jYWxjX2V4Y2VwdGlvbnMoNDAsIDQsICh1aW50MTZfdFtdKSB7 IDUsIDYsIDcsIDEyIH0sIDQsCisJCQkJCQkgKHVpbnQxNl90W10pIHsgMSwgMzMsIDIsIDQg fSwgNywgNCk7CisKKwl0ZXN0X2NhbGNfZXhjZXB0aW9ucyg0MCwgNCwgKHVpbnQxNl90W10p IHsgNSwgNiwgNywgMTIgfSwgNCwKKwkJCQkJCSAodWludDE2X3RbXSkgeyAxLCAzMiwgMiwg NSB9LCAxMiwgMCk7CisKKwlwcmludGYoIlRlc3QgRVhDRVBUSU9OUyBDQUxDVUxBVElPTiBQ QVNTRURcbiIpOworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PVxuXG4iKTsKKworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PVxuIik7CisJcHJpbnRmKCJUZXN0IERFTFRBIEZSQU1FIE9GIFJFRkVS RU5DRVMgUEFDS0lOR1xuIik7CisKKwl0ZXN0X2Rmb3IoMTYsCisJCQkgICh1aW50MTZfdFtd KSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwK KwkJCQkJCQkgMTUgfSwgLyogY250LCBhcnJheSAqLworCQkJICBERk9SX0VYQ19ET05UX1VT RSwgICAvKiBmbGFnIG9uIHVzZSBvZiBleGNlcHRpb25zICovCisJCQkgIDEsCQkJCSAgIC8q IGF3YWl0ZWQgd2lkdGggb2Ygc2hvcnQgZGVsdGFzICovCisJCQkgIDAsCQkJCSAgIC8qIGF3 YWl0ZWQgY291bnQgb2YgZXhjZXB0aW9ucyAqLworCQkJICAwLAkJCQkgICAvKiBhd2FpdGVk IGV4Y2VwdGlvbiB3aWR0aCovCisJCQkgIDAsCQkJCSAgIC8qIGF3YWl0ZWQgZXhjZXB0aW9u IHBvc2l0aW9uIHdpZHRoKi8KKwkJCSAgMTYsCQkJCSAgIC8qIGF3YWl0ZWQgYml0cyBjb3Vu dCAqLworCQkJICAyLAkJCQkgICAvKiBjbnRCeXRlQ291bnRBd2FpdGVkICovCisJCQkgIDE1 Ljk5LCAvKiBhd2FpdGVkIHJhdGlvIG1pbiB2YWx1ZSAocmF0aW8gPj0gMTUuOTkpICovCisJ CQkgICh1aW50OF90W10pIHsgMHhGRSwgMHhGRiB9KTsKKworCXRlc3RfZGZvcigxNiwKKwkJ CSAgKHVpbnQxNl90W10pIHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDEx LCAxMiwgMTMsIDE0LAorCQkJCQkJCSAxNSB9LCAvKiBjbnQsIGFycmF5ICovCisJCQkgIERG T1JfRVhDX1VTRSwgLyogZmxhZyBvbiB1c2Ugb2YgZXhjZXB0aW9ucyAqLworCQkJICAxLAkJ CS8qIGF3YWl0ZWQgd2lkdGggb2Ygc2hvcnQgZGVsdGFzICovCisJCQkgIDAsCQkJLyogYXdh aXRlZCBjb3VudCBvZiBleGNlcHRpb25zICovCisJCQkgIDAsCQkJLyogYXdhaXRlZCBleGNl cHRpb24gd2lkdGgqLworCQkJICAwLAkJCS8qIGF3YWl0ZWQgZXhjZXB0aW9uIHBvc2l0aW9u IHdpZHRoKi8KKwkJCSAgMTYsCQkJLyogYXdhaXRlZCBiaXRzIGNvdW50ICovCisJCQkgIDIs CQkJLyogY250Qnl0ZUNvdW50QXdhaXRlZCAqLworCQkJICAxNS45OSwJCS8qIGF3YWl0ZWQg cmF0aW8gbWluIHZhbHVlIChyYXRpbyA+PSAxNS45OSkgKi8KKwkJCSAgKHVpbnQ4X3RbXSkg eyAweEZFLCAweEZGIH0pOworCisJdGVzdF9kZm9yKDE2LAorCQkJICAodWludDE2X3RbXSkg eyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsCisJ CQkJCQkJIDEwMjMgfSwgLyogY250LCBhcnJheSAqLworCQkJICBERk9SX0VYQ19ET05UX1VT RSwJIC8qIGZsYWcgb24gdXNlIG9mIGV4Y2VwdGlvbnMgKi8KKwkJCSAgMTAsCQkJCQkgLyog YXdhaXRlZCB3aWR0aCBvZiBzaG9ydCBkZWx0YXMgKi8KKwkJCSAgMCwJCQkJCSAvKiBhd2Fp dGVkIGNvdW50IG9mIGV4Y2VwdGlvbnMgKi8KKwkJCSAgMCwJCQkJCSAvKiBhd2FpdGVkIGV4 Y2VwdGlvbiB3aWR0aCovCisJCQkgIDAsCQkJCQkgLyogYXdhaXRlZCBleGNlcHRpb24gcG9z aXRpb24gd2lkdGgqLworCQkJICAxMCAqIDE2LAkJCQkgLyogYXdhaXRlZCBiaXRzIGNvdW50 ICovCisJCQkgIDIwLAkJCQkJIC8qIGF3YWl0ZWQgYnl0ZXMgY291bnQgKi8KKwkJCSAgMS41 LAkJCQkJIC8qIGF3YWl0ZWQgcmF0aW8gbWluIHZhbHVlICovCisJCQkgICh1aW50OF90W10p IHsgMHgwMCwgMHgwNCwgMHgxMCwgMHg0MCwgMHgwMCwgMHgwMSwgMHgwNCwKKwkJCQkJCQkw eDEwLCAweDQwLCAweDAwLCAweDAxLCAweDA0LCAweDEwLCAweDQwLAorCQkJCQkJCTB4MDAs IDB4MDEsIDB4MDQsIDB4MTAsIDB4NDAsIDB4RkMgfSk7CisKKwl0ZXN0X2Rmb3IoMTYsCisJ CQkgICh1aW50MTZfdFtdKSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAx MSwgMTIsIDEzLCAxNCwKKwkJCQkJCQkgMTAyMyB9LCAvKiBjbnQsIGFycmF5ICovCisJCQkg IERGT1JfRVhDX1VTRSwJCQkgLyogZmxhZyBvbiB1c2Ugb2YgZXhjZXB0aW9ucyAqLworCQkJ ICAxLAkJCQkJIC8qIGF3YWl0ZWQgd2lkdGggb2Ygc2hvcnQgZGVsdGFzICovCisJCQkgIDEs CQkJCQkgLyogYXdhaXRlZCBjb3VudCBvZiBleGNlcHRpb25zICovCisJCQkgIDksCQkJCQkg LyogYXdhaXRlZCBleGNlcHRpb24gd2lkdGgqLworCQkJICA0LAkJCQkJIC8qIGF3YWl0ZWQg ZXhjZXB0aW9uIHBvc2l0aW9uIHdpZHRoKi8KKwkJCSAgMTYgKiAxICsgOSArIDQsCQkgLyog YXdhaXRlZCBiaXRzIGNvdW50ICovCisJCQkgIDQsCQkJCQkgLyogYXdhaXRlZCBieXRlcyBj b3VudCAqLworCQkJICA3Ljk5LAkJCQkJIC8qIGF3YWl0ZWQgcmF0aW8gbWluIHZhbHVlICov CisJCQkgICh1aW50OF90W10pIHsgMHhGRSwgMHhGRiwgMHhGOCwgMHgxRiB9KTsKKworCXRl c3RfZGZvcigzMCwgLyogY250ICovCisJCQkJCSAgKHVpbnQxNl90W10pIHsgMCwgMSwgMiwg MywgNCwKKwkJCQkJCQkJCSA1LCA2LCA3LCA4LCA5LAorICAvKiBkZWx0YT0yLCBwb3M9MTAs IGRlbHRhcG9zPTEwICovIDExLCAxMiwgMTMsIDE0LCAxNSwKKwkJCQkJCQkJCSAxNiwgMTcs IDE4LCAxOSwgMjAsCisJCQkJCQkJCQkgMjEsIDIyLCAyMywgMjQsIDI1LAorICAvKiBkZWx0 YT0zLCBwb3M9MjUsIGRlbHRhcG9zPTE1ICovIDI4LCAyOSwgMzAsIDMxLAorICAvKiBkZWx0 YT0zLCBwb3M9MjksIGRlbHRhcG9zPTQgKi8JIDM0IH0sICAJCQkJLyogYXJyYXkgKi8KKwkJ CSAgREZPUl9FWENfVVNFLAkJCSAgLyogZmxhZyBvbiB1c2Ugb2YgZXhjZXB0aW9ucyAqLwor CQkJICAxLAkJCQkJICAvKiBhd2FpdGVkIHdpZHRoIG9mIHNob3J0IGRlbHRhcyAqLworCQkJ ICAzLAkJCQkJICAvKiBhd2FpdGVkIGNvdW50IG9mIGV4Y2VwdGlvbnMgKi8KKwkJCSAgMSwJ CQkJCSAgLyogYXdhaXRlZCBleGNlcHRpb24gd2lkdGgqLworCQkJICA0LAkJCQkJICAvKiBh d2FpdGVkIGV4Y2VwdGlvbiBwb3NpdGlvbiB3aWR0aCovCisJCQkgIDMwICogMSArIDMgKiAx ICsgMyAqIDQsIC8qIGF3YWl0ZWQgYml0cyBjb3VudCAqLworCQkJICA2LAkJCQkJICAvKiBh d2FpdGVkIGJ5dGVzIGNvdW50ICovCisJCQkgIDkuOTksCQkJCQkgIC8qIGF3YWl0ZWQgcmF0 aW8gbWluIHZhbHVlICovCisJCQkgICh1aW50OF90W10pIHsgMHhGRSwgMHhGQiwgMHhGRiwg MHhGRiwgMHhGNSwgMHgwOSB9KTsKKworCXByaW50ZigiVGVzdCBERUxUQSBGUkFNRSBPRiBS RUZFUkVOQ0VTIFBBQ0tJTkcgUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlkb25lX3Rlc3RpbmcoKTsK K30KLS0gCjIuNTMuMAoK --------------WPZdujZzC0BCYuxPBGMyEtBX Content-Type: text/x-patch; charset=UTF-8; name="v04-0003-Use-Delta-Frame-of-Reference-DFoR-to-compress-pr.patch" Content-Disposition: attachment; filename*0="v04-0003-Use-Delta-Frame-of-Reference-DFoR-to-compress-pr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2OTY5ZWI0OGQ5MTk4MmZmNmM4MDBkMWM4MGUwNjVjYjk0OTMyZmNjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTc6MzA6MjIgKzA4MDAKU3ViamVjdDogW1BB VENIIHYwNCAzLzNdIFVzZSBEZWx0YSBGcmFtZSBvZiBSZWZlcmVuY2UgKERGb1IpIHRvIGNv bXByZXNzCiBwcnVuZS9mcmVlemUgcmVjb3Jkcy4KCkEgcHJ1bmUvZnJlZXplIHJlY29yZCBj b250YWlucyBmb3VyIHNlcXVlbmNlcyBvZiBpbnRlZ2VycyByZXByZXNlbnRpbmcKZnJvemVu LCByZWRpcmVjdGVkLCB1bnVzZWQsIGFuZCBkZWFkIHR1cGxlcy4gVXNpbmcgREZvUiBhbGdv cml0aG1zLCB0aGUKYHVudXNlZGAgYW5kIGBkZWFkYCBzZXF1ZW5jZXMgYXJlIG5vdyBjb21w cmVzc2VkLiBUaGUgYGZyb3plbmAKYW5kIGByZWRpcmVjdGVkYCBzZXF1ZW5jZXMgY2Fubm90 IGJlIGNvbXByZXNzZWQgYmVjYXVzZSB0aGUgb3JkZXIgb2YKdGhlaXIgZWxlbWVudHMgaXMg c2lnbmlmaWNhbnQsIGFuZCBERm9SIGRvZXMgbm90IHN1cHBvcnQgdW5zb3J0ZWQKc2VxdWVu Y2VzIHlldC4gVGhlIHRoZW9yZXRpY2FsIGNvbXByZXNzaW9uIHJhdGlvIGZvciBkZm9yX3Ux NiBjYW4gcmVhY2gKdXAgdG8gMTYuCgpUaGUgbmV3IEdVQyB3YWxfcHJ1bmVfZGZvcl9jb21w cmVzc2lvbiBjb250cm9scyAoZW5hYmxlcyBvcgpkaXNhYmxlcykgY29tcHJlc3Npb24gZm9y IHBydW5lL2ZyZWV6ZSByZWNvcmRzLgoKQW4gaW50ZWdyYWwgVEFQIHRlc3QsIDA1Ml9wcnVu ZV9kZm9yX2NvbXByZXNzaW9uLnBsLCBoYXMgYmVlbgppbXBsZW1lbnRlZC4gSXQgZGVtb25z dHJhdGVzIGFuIGF2ZXJhZ2UgY29tcHJlc3Npb24gcmF0aW8gb2YgYXQgbGVhc3QgNQp3aGVu IGFuYWx5emluZyBwcnVuZS9mcmVlemUgcmVjb3JkcyBpbiBwcmFjdGljZS4KCkF1dGhvcjog RXZnZW55IFZvcm9wYWV2IDxldmdlbnkudm9yb3BhZXZAdGFudG9ybGFicy5jb20+IDxldm9y b3BAZ21haWwuY29tPgpSZXZpZXdlZCBieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRl eC10ZWFtLnJ1PgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMg ICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg ICAgICAgICAgIHwgMTQxICsrKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9y bWdyZGVzYy9NYWtlZmlsZSAgICAgICAgICB8ICAgMSArCiAuLi4vYWNjZXNzL3JtZ3JkZXNj L2hlYXBhbV94bG9nX2Rmb3IuYyAgICAgICAgfCAxMDkgKysrKysrKysrKysrCiBzcmMvYmFj a2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyAgICAgICAgfCAgNDkgKysrKy0tCiBz cmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQgICAgICAgfCAgIDEgKwog c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgICAgIHwgICA3ICsK IHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDIg Kwogc3JjL2Jpbi9wZ193YWxkdW1wLy5naXRpZ25vcmUgICAgICAgICAgICAgICAgIHwgICA5 ICsKIHNyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAy NiArKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCAgICAgICAgICAgICAg fCAgIDggKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZ19kZm9yLmggICAgICAg ICB8IDEzNyArKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9kZm9yL01ha2VmaWxlICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDIgKwogLi4uL3JlY292ZXJ5L3QvMDUyX3BydW5lX2Rm b3JfY29tcHJlc3Npb24ucGwgIHwgMTU1ICsrKysrKysrKysrKysrKysrKwogMTYgZmlsZXMg Y2hhbmdlZCwgNjI3IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwYW1feGxvZ19kZm9y LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2df ZGZvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTJfcHJ1 bmVfZGZvcl9jb21wcmVzc2lvbi5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f eGxvZy5jCmluZGV4IDFkYTc3NGMxNTM2Li43Zjk2YTMwZGQ3MSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRl ICJhY2Nlc3MvYnVmbWFzay5oIgogI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNpbmNs dWRlICJhY2Nlc3MvaGVhcGFtX3hsb2dfZGZvci5oIgogI2luY2x1ZGUgImFjY2Vzcy92aXNp YmlsaXR5bWFwLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nl c3MveGxvZ3V0aWxzLmgiCkBAIC0xMDUsMTEgKzEwNiwyMCBAQCBoZWFwX3hsb2dfcHJ1bmVf ZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQljaGFyCSAgICpkYXRhcHRyID0g WExvZ1JlY0dldEJsb2NrRGF0YShyZWNvcmQsIDAsICZkYXRhbGVuKTsKIAkJYm9vbAkJZG9f cHJ1bmU7CiAKKwkJLyoKKwkJICogREZvUiB1bnBhY2tpbmcgbmVlZHMgb3V0ZXIgYnVmZmVy cyBmb3Igc2F2aW5nIHJlc3VsdHMgYW5kIGZvcgorCQkgKiBhbGxvY2F0aW5nIGNvbnRhaW5l cnMgdXNlZCBkdXJpbmcgZGVjb21wcmVzc2lvbi4gMiBidWZmZXIgcGFydHMgYXJlCisJCSAq IGludGVuZGVkIGZvciBzYXZpbmcgc2VxdWVuY2VzIG9mIG9mZnNldHMgb2YgZGVhZCBhbmQg dW51c2VkIHR1cGxlcy4KKwkJICogQWRkaXRpb25hbCB0aHJlZSBjaHVua3MgYXJlIG5lZWRl ZCBmb3IgaW50ZXJuYWwgbmVlZHMgb2YgdGhlCisJCSAqIGRmb3JfdW5wYWNrIGZ1bmN0aW9u LgorCQkgKi8KKwkJdWludDggZGZvcl9idWZbNSAqIERGT1JfQlVGX1BBUlRfU0laRV07CisK IAkJaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoZGF0YXB0ciwgeGxy ZWMuZmxhZ3MsCiAJCQkJCQkJCQkJCSAgICZucGxhbnMsICZwbGFucywgJmZyel9vZmZzZXRz LAogCQkJCQkJCQkJCQkgICAmbnJlZGlyZWN0ZWQsICZyZWRpcmVjdGVkLAogCQkJCQkJCQkJ CQkgICAmbmRlYWQsICZub3dkZWFkLAotCQkJCQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3Vu dXNlZCk7CisJCQkJCQkJCQkJCSAgICZudW51c2VkLCAmbm93dW51c2VkLCBkZm9yX2J1Zik7 CiAKIAkJZG9fcHJ1bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVz ZWQgPiAwOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IGIzODNi MGZjYThiLi40MmI4NzFjNDI4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKICNp bmNsdWRlICJhY2Nlc3MvaGVhcGFtX3hsb2cuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFt X3hsb2dfZGZvci5oIgogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNs dWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIK QEAgLTIzMiw3ICsyMzMsNiBAQCBzdGF0aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMo UGFnZSBwYWdlKTsKIHN0YXRpYyBib29sIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShib29sIGRp ZF90dXBsZV9oaW50X2ZwaSwgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19oaW50X3BydW5lLAog CQkJCQkJCQkgIFBydW5lU3RhdGUgKnByc3RhdGUpOwogCi0KIC8qCiAgKiBPcHRpb25hbGx5 IHBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBpbiB0aGUgc3BlY2lmaWVkIHBhZ2Uu CiAgKgpAQCAtMjQwNiw2ICsyNDA2LDI0IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBU dXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKIAlyZXR1cm4gbnBsYW5zOwogfQog CisvKgorICogQ29tcGFyYXRvciBmb3Igb2Zmc2V0cy4KKyAqLworc3RhdGljIGludAorb2Zm c2V0X2NtcChjb25zdCB2b2lkICphcmcxLCBjb25zdCB2b2lkICphcmcyKQoreworCWNvbnN0 IE9mZnNldE51bWJlciAqb2Zmc2V0MSA9IGFyZzE7CisJY29uc3QgT2Zmc2V0TnVtYmVyICpv ZmZzZXQyID0gYXJnMjsKKwlyZXR1cm4gKCpvZmZzZXQxID4gKm9mZnNldDIpIC0gKCpvZmZz ZXQxIDwgKm9mZnNldDIpOworfQorCisjZGVmaW5lIFNUX1NPUlQgc29ydF9vZmZzZXRzCisj ZGVmaW5lIFNUX0VMRU1FTlRfVFlQRV9WT0lECisjZGVmaW5lIFNUX0NPTVBBUkUoYSwgYikg b2Zmc2V0X2NtcChhLCBiKQorI2RlZmluZSBTVF9TQ09QRSBzdGF0aWMKKyNkZWZpbmUgU1Rf REVGSU5FCisjaW5jbHVkZSAibGliL3NvcnRfdGVtcGxhdGUuaCIKKwogLyoKICAqIFdyaXRl IGFuIFhMT0dfSEVBUDJfUFJVTkUqIFdBTCByZWNvcmQKICAqCkBAIC0yNDYwLDExICsyNDc4 LDM0IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCiAJYm9vbAkJZG9fcHJ1bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwgbmRl YWQgPiAwIHx8IG51bnVzZWQgPiAwOwogCWJvb2wJCWRvX3NldF92bSA9IHZtZmxhZ3MgJiBW SVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7CiAKKwlkZm9yX21ldGFfdCBkZWFkX21ldGEgPSB7 IDAgfTsKKwlkZm9yX21ldGFfdCB1bnVzZWRfbWV0YSA9IHsgMCB9OworCisJdWludDggZGVh ZF9tZXRhX3BhY2tbTUFYX1BBQ0tFRF9NRVRBX1NJWkVdOworCXVpbnQ4IHVudXNlZF9tZXRh X3BhY2tbTUFYX1BBQ0tFRF9NRVRBX1NJWkVdOworCisJLyoKKwkgKiBTaW5jZSB0aGlzIGNv ZGUgaXMgcnVuIGluIGEgY3JpdGljYWwgc2VjdGlvbiB3ZSBjYW4ndCB1c2UgZHluYW1pYwor CSAqIGFsbG9jYXRpb24gZHVyaW5nIERGb1IgcGFja2luZywgYnV0IHdlIGNhbiB1c2UgYnVm ZmVycyBhbGxvY2F0ZWQgaW4gdGhlCisJICogc3RhY2suIFdlIG5lZWQgYXQgbWF4aW11bToK KwkgKiAxKSAyICogREZPUl9CVUZfUEFSVF9TSVpFCisJICogICAgICAgIC0gZm9yIDIgcGFj a2VkIHNlcXVlbmNlczogZGVhZCwgdW51c2VkCisJICogMikgMyAqIERGT1JfQlVGX1BBUlRf U0laRQorCSAqIAkJICAtIGZvciBpbnRlcm5hbCBuZWVkcyBvZiB0aGUgZGZvcl9wYWNrIGZ1 bmN0aW9uLgorCSAqCisJICogT3ZlcmFsbCwgNSAqIERGT1JfQlVGX1BBUlRfU0laRQorCSAq LworCXVpbnQ4IGRmb3JfYnVmWzUgKiBERk9SX0JVRl9QQVJUX1NJWkVdOworCiAJQXNzZXJ0 KCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSB2bWZsYWdzKTsKIAog CXhscmVjLmZsYWdzID0gMDsKIAlyZWdidWZfZmxhZ3NfaGVhcCA9IFJFR0JVRl9TVEFOREFS RDsKIAorCS8qIEhldXJpc3RpY2FsbHkgZXN0aW1hdGVkIHRocmVzaG9sZCBmb3IgdHVybmlu ZyBvbiBERm9SIGNvbXByZXNzaW9uICovCisJaWYgKHdhbF9wcnVuZV9kZm9yX2NvbXByZXNz aW9uICYmIChuZGVhZCA+IDkgfHwgbnVudXNlZCA+IDkpKQorCQl4bHJlYy5mbGFncyB8PSBY TEhQX0RGT1JfQ09NUFJFU1NFRDsKKwogCS8qCiAJICogV2UgY2FuIGF2b2lkIGFuIEZQSSBv ZiB0aGUgaGVhcCBwYWdlIGlmIHRoZSBvbmx5IG1vZGlmaWNhdGlvbiB3ZSBhcmUKIAkgKiBt YWtpbmcgdG8gaXQgaXMgdG8gc2V0IFBEX0FMTF9WSVNJQkxFIGFuZCBjaGVja3N1bXMvd2Fs X2xvZ19oaW50cyBhcmUKQEAgLTI0ODksNiArMjUzMCwxMCBAQCBsb2dfaGVhcF9wcnVuZV9h bmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCWlmIChkb19z ZXRfdm0pCiAJCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCB2bWJ1ZmZlciwgMCk7CiAKKwkvKgor CSAqIHhsaHBfZnJlZXplX3BsYW5zIGlzIGFycmF5IG9mIHN0cnVjdHVyZXMgYW5kIGlzIG5v dCBhIHNlcXVlbmNlCisJICogb2YgaW50ZWdlcnMsIHRoYXQgaXMgd2h5IHdlIGNhbm5vdCB1 c2UgREZvUiBjb21wcmVzc2lvbiBoZXJlLgorCSAqLwogCWlmIChuZnJvemVuID4gMCkKIAl7 CiAJCWludAkJCW5wbGFuczsKQEAgLTI1MTcsMjYgKzI1NjIsOTIgQEAgbG9nX2hlYXBfcHJ1 bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJWExv Z1JlZ2lzdGVyQnVmRGF0YSgwLCByZWRpcmVjdGVkLAogCQkJCQkJCXNpemVvZihPZmZzZXRO dW1iZXJbMl0pICogbnJlZGlyZWN0ZWQpOwogCX0KLQlpZiAobmRlYWQgPiAwKQorCWlmICgo eGxyZWMuZmxhZ3MgJiBYTEhQX0RGT1JfQ09NUFJFU1NFRCkgIT0gMCkKIAl7Ci0JCXhscmVj LmZsYWdzIHw9IFhMSFBfSEFTX0RFQURfSVRFTVM7CisJCWludCBkZWFkX3BhY2tfcmVzID0g MDsKKwkJaW50IHVudXNlZF9wYWNrX3JlcyA9IDA7CiAKLQkJZGVhZF9pdGVtcy5udGFyZ2V0 cyA9IG5kZWFkOwotCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZkZWFkX2l0ZW1zLAotCQkJ CQkJCW9mZnNldG9mKHhsaHBfcHJ1bmVfaXRlbXMsIGRhdGEpKTsKLQkJWExvZ1JlZ2lzdGVy QnVmRGF0YSgwLCBkZWFkLAotCQkJCQkJCXNpemVvZihPZmZzZXROdW1iZXIpICogbmRlYWQp OworCQkvKgorCQkgKiBEZWFkIHR1cGxlIG9mZnNldHMgYXJlIHN1YmplY3QgdG8gYmUgcGFj a2VkIHdpdGggREZvUi4KKwkJICogQWZ0ZXIgdGhhdCB3ZSBoYXZlOgorCQkgKiAJCWRlYWRf bWV0YS5wYWNrID0gZGZvcl9idWYgKyBERk9SX0JVRl9QQVJUX1NJWkU7CisJCSAqLworCQlp ZiAobmRlYWQgPiAwKQorCQl7CisJCQlzb3J0X29mZnNldHMoZGVhZCwgbmRlYWQsIHNpemVv ZihPZmZzZXROdW1iZXIpKTsKKwkJCWRlYWRfcGFja19yZXMgPSBkZm9yX3UxNl9wYWNrKG5k ZWFkLCBkZWFkLCBERk9SX0VYQ19VU0UsICZkZWFkX21ldGEsCisJCQkJCQkJCQkJICA0ICog REZPUl9CVUZfUEFSVF9TSVpFLCBkZm9yX2J1Zik7CisJCX0KKworCQkvKgorCQkgKiBVbnVz ZWQgdHVwbGUgb2Zmc2V0cyBhcmUgc3ViamVjdCB0byBiZSBwYWNrZWQgd2l0aCBERm9SLgor CQkgKiBBZnRlciB0aGF0IHdlIGhhdmU6CisJCSAqIAkJdW51c2VkX21ldGEucGFjayA9IGRm b3JfYnVmICsgMiAqIERGT1JfQlVGX1BBUlRfU0laRTsKKwkJICovCisJCWlmIChudW51c2Vk ID4gMCkKKwkJeworCQkJc29ydF9vZmZzZXRzKHVudXNlZCwgbnVudXNlZCwgc2l6ZW9mKE9m ZnNldE51bWJlcikpOworCQkJdW51c2VkX3BhY2tfcmVzID0gZGZvcl91MTZfcGFjayhudW51 c2VkLCB1bnVzZWQsIERGT1JfRVhDX1VTRSwKKwkJCQkJCQkJCQkJJnVudXNlZF9tZXRhLAor CQkJCQkJCQkJCQk0ICogREZPUl9CVUZfUEFSVF9TSVpFLAorCQkJCQkJCQkJCQlkZm9yX2J1 ZiArIERGT1JfQlVGX1BBUlRfU0laRSk7CisJCX0KKworCQlpZiAoZGVhZF9wYWNrX3JlcyA9 PSAwICYmIHVudXNlZF9wYWNrX3JlcyA9PSAwKQorCQl7CisJCQkvKiBBbGwgc3RhZ2VzIG9m IHBhY2tpbmcgaGF2ZSBzdWNjZWVkZWQuIFdlIGNhbiBzYXZlIERGb1IgcGFja2V0cworCQkJ ICogaW50byBsb2cgKi8KKwkJCXNpemVfdCBtZXRhX3BhY2tfc3o7CisJCQlpZiAobmRlYWQg PiAwKQorCQkJeworCQkJCXhscmVjLmZsYWdzIHw9IFhMSFBfSEFTX0RFQURfSVRFTVM7CisK KwkJCQltZXRhX3BhY2tfc3ogPSBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplX3BhY2tfbWV0 YSgKKwkJCQkJJmRlYWRfbWV0YSwgZGVhZF9tZXRhX3BhY2spOworCisJCQkJWExvZ1JlZ2lz dGVyQnVmRGF0YSgwLCAmZGVhZF9tZXRhX3BhY2ssIG1ldGFfcGFja19zeik7CisJCQkJWExv Z1JlZ2lzdGVyQnVmRGF0YSgwLCBkZWFkX21ldGEucGFjaywgZGVhZF9tZXRhLm5ieXRlcyk7 CisJCQl9CisJCQlpZiAobnVudXNlZCA+IDApCisJCQl7CisJCQkJeGxyZWMuZmxhZ3MgfD0g WExIUF9IQVNfTk9XX1VOVVNFRF9JVEVNUzsKKworCQkJCW1ldGFfcGFja19zeiA9IGxvZ19o ZWFwX3BydW5lX2FuZF9mcmVlemVfcGFja19tZXRhKAorCQkJCQkmdW51c2VkX21ldGEsIHVu dXNlZF9tZXRhX3BhY2spOworCisJCQkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCAmdW51c2Vk X21ldGFfcGFjaywgbWV0YV9wYWNrX3N6KTsKKwkJCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAs IHVudXNlZF9tZXRhLnBhY2ssIHVudXNlZF9tZXRhLm5ieXRlcyk7CisJCQl9CisJCX0KKwkJ ZWxzZQorCQl7CisJCQkvKiBPdGhlcndpc2UsIHdlIGNhbid0IHVzZSBERm9SIGNvbXByZXNz aW9uICovCisJCQl4bHJlYy5mbGFncyAmPSB+WExIUF9ERk9SX0NPTVBSRVNTRUQ7CisJCX0K IAl9Ci0JaWYgKG51bnVzZWQgPiAwKQorCisJaWYgKCh4bHJlYy5mbGFncyAmIFhMSFBfREZP Ul9DT01QUkVTU0VEKSA9PSAwKQogCXsKLQkJeGxyZWMuZmxhZ3MgfD0gWExIUF9IQVNfTk9X X1VOVVNFRF9JVEVNUzsKKwkJaWYgKG5kZWFkID4gMCkKKwkJeworCQkJeGxyZWMuZmxhZ3Mg fD0gWExIUF9IQVNfREVBRF9JVEVNUzsKIAotCQl1bnVzZWRfaXRlbXMubnRhcmdldHMgPSBu dW51c2VkOwotCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZ1bnVzZWRfaXRlbXMsCi0JCQkJ CQkJb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0YSkpOwotCQlYTG9nUmVnaXN0ZXJC dWZEYXRhKDAsIHVudXNlZCwKLQkJCQkJCQlzaXplb2YoT2Zmc2V0TnVtYmVyKSAqIG51bnVz ZWQpOworCQkJZGVhZF9pdGVtcy5udGFyZ2V0cyA9IG5kZWFkOworCQkJWExvZ1JlZ2lzdGVy QnVmRGF0YSgwLCAmZGVhZF9pdGVtcywKKwkJCQkJCQkJb2Zmc2V0b2YoeGxocF9wcnVuZV9p dGVtcywgZGF0YSkpOworCQkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCBkZWFkLCBzaXplb2Yo T2Zmc2V0TnVtYmVyKSAqIG5kZWFkKTsKKwkJfQorCQlpZiAobnVudXNlZCA+IDApCisJCXsK KwkJCXhscmVjLmZsYWdzIHw9IFhMSFBfSEFTX05PV19VTlVTRURfSVRFTVM7CisKKwkJCXVu dXNlZF9pdGVtcy5udGFyZ2V0cyA9IG51bnVzZWQ7CisJCQlYTG9nUmVnaXN0ZXJCdWZEYXRh KDAsICZ1bnVzZWRfaXRlbXMsCisJCQkJCQkJCW9mZnNldG9mKHhsaHBfcHJ1bmVfaXRlbXMs IGRhdGEpKTsKKwkJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgdW51c2VkLCBzaXplb2YoT2Zm c2V0TnVtYmVyKSAqIG51bnVzZWQpOworCQl9CiAJfQorCiAJaWYgKG5mcm96ZW4gPiAwKQog CQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIGZyel9vZmZzZXRzLAogCQkJCQkJCXNpemVvZihP ZmZzZXROdW1iZXIpICogbmZyb3plbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2MvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFr ZWZpbGUKaW5kZXggY2Q5NWVlYzM3ZjEuLjQ5ZTljNDYxNDVmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL01ha2VmaWxlCkBAIC0xNyw2ICsxNyw3IEBAIE9CSlMgPSBcCiAJZ2lu ZGVzYy5vIFwKIAlnaXN0ZGVzYy5vIFwKIAloYXNoZGVzYy5vIFwKKwloZWFwYW1feGxvZ19k Zm9yLm8gXAogCWhlYXBkZXNjLm8gXAogCWxvZ2ljYWxtc2dkZXNjLm8gXAogCW14YWN0ZGVz Yy5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwYW1f eGxvZ19kZm9yLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGFtX3hsb2df ZGZvci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40N2ZhMDAw ZTM2NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9o ZWFwYW1feGxvZ19kZm9yLmMKQEAgLTAsMCArMSwxMDkgQEAKKyNpbmNsdWRlICJsaWIvYml0 cGFja191MTYuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtX3hsb2dfZGZvci5oIgorCiti b29sIHdhbF9wcnVuZV9kZm9yX2NvbXByZXNzaW9uID0gdHJ1ZTsKKworc2l6ZV90Citsb2df aGVhcF9wcnVuZV9hbmRfZnJlZXplX3BhY2tfbWV0YShjb25zdCBkZm9yX21ldGFfdCAqbWV0 YSwgdWludDggYnVmW10pCit7CisJc2l6ZV90IGNhcmV0ID0gMDsKKwljYXJldCA9IGJpdHBh Y2tfdTE2X3BhY2soYnVmLCBjYXJldCwgbWV0YS0+aXRlbV9jbnQsCisJCQkJCQkJIFhMSFBG X01FVEFfSVRFTV9DT1VOVF9TWik7CisJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKGJ1Ziwg Y2FyZXQsIG1ldGEtPmRlbHRhX3dpZCwKKwkJCQkJCQkgWExIUEZfTUVUQV9ERUxUQV9XSURU SF9TWik7CisJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKGJ1ZiwgY2FyZXQsIChtZXRhLT5l eGNfY250ID09IDApID8gMCA6IDEsCisJCQkJCQkJIFhMSFBGX01FVEFfRVhDRVBUSU9OX0ZM QUdfU1opOworCWlmIChtZXRhLT5leGNfY250ICE9IDApCisJeworCQljYXJldCA9IGJpdHBh Y2tfdTE2X3BhY2soYnVmLCBjYXJldCwgbWV0YS0+ZXhjX2NudCwKKwkJCQkJCQkJIFhMSFBG X01FVEFfRVhDRVBUSU9OX0NPVU5UX1NaKTsKKwkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNr KGJ1ZiwgY2FyZXQsIG1ldGEtPmV4Y193aWQsCisJCQkJCQkJCSBYTEhQRl9NRVRBX0VYQ0VQ VElPTl9XSURUSF9TWik7CisJCWNhcmV0ID0gYml0cGFja191MTZfcGFjayhidWYsIGNhcmV0 LCBtZXRhLT5leGNfcG9zX3dpZCwKKwkJCQkJCQkJIFhMSFBGX01FVEFfRVhDRVBUSU9OX1BP U0lUSU9OX1dJRFRIX1NaKTsKKwl9CisJQXNzZXJ0KG1ldGEtPml0ZW1fY250ICE9IDApOwor CUFzc2VydChtZXRhLT5kZWx0YV93aWQgIT0gMCk7CisJQXNzZXJ0KG1ldGEtPm5ieXRlcyAh PSAwKTsKKworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwl7CisJCWRmb3JfbWV0YV90 IGNoZWNrZXI7CisJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemVfdW5wYWNrX21ldGEoJmNo ZWNrZXIsIGJ1Zik7CisJCUFzc2VydChtZXRhLT5pdGVtX2NudCA9PSBjaGVja2VyLml0ZW1f Y250KTsKKwkJQXNzZXJ0KG1ldGEtPmRlbHRhX3dpZCA9PSBjaGVja2VyLmRlbHRhX3dpZCk7 CisJCUFzc2VydChtZXRhLT5leGNfY250ID09IGNoZWNrZXIuZXhjX2NudCk7CisJCUFzc2Vy dChtZXRhLT5leGNfd2lkID09IGNoZWNrZXIuZXhjX3dpZCk7CisJCUFzc2VydChtZXRhLT5l eGNfcG9zX3dpZCA9PSBjaGVja2VyLmV4Y19wb3Nfd2lkKTsKKwl9CisjZW5kaWYKKwlyZXR1 cm4gKGNhcmV0ICsgNykgLyA4OyAvKiB0aGUgbGVuZ3RoIG9mIHBhY2tlZCBkZm9yX21ldGEs IGluIGJ5dGVzKi8KK30KKworc2l6ZV90Citsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplX3Vu cGFja19tZXRhKGRmb3JfbWV0YV90ICptZXRhLAorCQkJCQkJCQkJICBjb25zdCB1aW50OCBw YWNrZWRfbWV0YVtdKQoreworCXNpemVfdCBjYXJldCA9IDA7CisJYm9vbCBleGM7CisKKwlt ZXRhLT5pdGVtX2NudCA9IGJpdHBhY2tfdTE2X3VucGFjayhwYWNrZWRfbWV0YSwgJmNhcmV0 LAorCQkJCQkJCQkJCVhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWik7CisJbWV0YS0+ZGVsdGFf d2lkID0gYml0cGFja191MTZfdW5wYWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsCisJCQkJCQkJ CQkJIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1opOworCWV4YyA9IGJpdHBhY2tfdTE2X3Vu cGFjayhwYWNrZWRfbWV0YSwgJmNhcmV0LCBYTEhQRl9NRVRBX0VYQ0VQVElPTl9GTEFHX1Na KTsKKworCWlmIChleGMpCisJeworCQltZXRhLT5leGNfY250ID0gYml0cGFja191MTZfdW5w YWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsCisJCQkJCQkJCQkJIFhMSFBGX01FVEFfRVhDRVBU SU9OX0NPVU5UX1NaKTsKKwkJbWV0YS0+ZXhjX3dpZCA9IGJpdHBhY2tfdTE2X3VucGFjayhw YWNrZWRfbWV0YSwgJmNhcmV0LAorCQkJCQkJCQkJCSBYTEhQRl9NRVRBX0VYQ0VQVElPTl9X SURUSF9TWik7CisJCW1ldGEtPmV4Y19wb3Nfd2lkID0KKwkJCWJpdHBhY2tfdTE2X3VucGFj ayhwYWNrZWRfbWV0YSwgJmNhcmV0LAorCQkJCQkJCSAgIFhMSFBGX01FVEFfRVhDRVBUSU9O X1BPU0lUSU9OX1dJRFRIX1NaKTsKKwl9CisJZWxzZQorCXsKKwkJbWV0YS0+ZXhjX2NudCA9 IDA7CisJCW1ldGEtPmV4Y193aWQgPSAwOworCQltZXRhLT5leGNfcG9zX3dpZCA9IDA7CisJ fQorCW1ldGEtPm5ieXRlcyA9IGRmb3JfdTE2X2NhbGNfbmJ5dGVzKCptZXRhKTsKKworCUFz c2VydChtZXRhLT5pdGVtX2NudCAhPSAwKTsKKwlBc3NlcnQobWV0YS0+ZGVsdGFfd2lkICE9 IDApOworCUFzc2VydChtZXRhLT5uYnl0ZXMgIT0gMCk7CisKKwlyZXR1cm4gKGNhcmV0ICsg NykgLyA4OworfQorCit2b2lkCitoZWFwX3hsb2dfZGVzZXJpYWxpemVfZGZvcihjaGFyICoq Y3Vyc29yLCBpbnQgKm5pdGVtcywKKwkJCQkJCSAgIE9mZnNldE51bWJlciAqKml0ZW1zLAor CQkJCQkJICAgdWludDggZGZvcl9idWZbXSkKK3sKKwlkZm9yX21ldGFfdCBkZm9yID0gezB9 OworCXNpemVfdCBwYWNrZWRfbWV0YV9uYnl0ZXM7CisJdW5pcXNvcnR2ZWN0X3UxNl90IHZl Y3Q7CisKKwlwYWNrZWRfbWV0YV9uYnl0ZXMgPQorCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJl ZXplX3VucGFja19tZXRhKCZkZm9yLCAodWludDgqKSAqY3Vyc29yKTsKKworCSpjdXJzb3Ig Kz0gcGFja2VkX21ldGFfbmJ5dGVzOworCisJZGZvci5wYWNrID0gKHVpbnQ4ICopKmN1cnNv cjsKKwlkZm9yX3UxNl91bnBhY2soJmRmb3IsICZ2ZWN0LCA0ICogREZPUl9CVUZfUEFSVF9T SVpFLAorCQkJCQlkZm9yX2J1Zik7CisKKwkqY3Vyc29yICs9IGRmb3IubmJ5dGVzOworCisJ QXNzZXJ0KGRmb3IubmJ5dGVzICE9IDApOworCisJQXNzZXJ0KHZlY3QuY250ICE9IDApOwor CUFzc2VydCh2ZWN0Lm1lbV9pc19vdXRlciA9PSB0cnVlKTsKKwlBc3NlcnQoKHZvaWQqKXZl Y3QubSA9PSAodm9pZCopZGZvcl9idWYpOworCisJKm5pdGVtcyA9IHZlY3QuY250OworCSpp dGVtcyA9IHZlY3QubTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdy ZGVzYy9oZWFwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNj LmMKaW5kZXggMDJhZTkxNjUzYzEuLmU4ZTc1NjlkYTljIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgInBv c3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtX3hsb2cuaCIKKyNpbmNsdWRl ICJhY2Nlc3MvaGVhcGFtX3hsb2dfZGZvci5oIgogI2luY2x1ZGUgImFjY2Vzcy9ybWdyZGVz Y191dGlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvc3RhbmRieWRlZnMuaCIKQEAgLTEwOCw3ICsxMDksOCBAQCBoZWFw X3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQx NiBmbGFncywKIAkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqKmZyel9vZmZzZXRzLAogCQkJ CQkJCQkJICAgaW50ICpucmVkaXJlY3RlZCwgT2Zmc2V0TnVtYmVyICoqcmVkaXJlY3RlZCwK IAkJCQkJCQkJCSAgIGludCAqbmRlYWQsIE9mZnNldE51bWJlciAqKm5vd2RlYWQsCi0JCQkJ CQkJCQkgICBpbnQgKm51bnVzZWQsIE9mZnNldE51bWJlciAqKm5vd3VudXNlZCkKKwkJCQkJ CQkJCSAgIGludCAqbnVudXNlZCwgT2Zmc2V0TnVtYmVyICoqbm93dW51c2VkLAorCQkJCQkJ CQkJICAgdWludDggZGZvcl9idWZbXSkKIHsKIAlpZiAoZmxhZ3MgJiBYTEhQX0hBU19GUkVF WkVfUExBTlMpCiAJewpAQCAtMTQ2LDE0ICsxNDgsMjIgQEAgaGVhcF94bG9nX2Rlc2VyaWFs aXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAKIAlp ZiAoZmxhZ3MgJiBYTEhQX0hBU19ERUFEX0lURU1TKQogCXsKLQkJeGxocF9wcnVuZV9pdGVt cyAqc3VicmVjb3JkID0gKHhsaHBfcHJ1bmVfaXRlbXMgKikgY3Vyc29yOworCQlpZighKGZs YWdzICYgWExIUF9ERk9SX0NPTVBSRVNTRUQpKQorCQl7CisJCQl4bGhwX3BydW5lX2l0ZW1z ICpzdWJyZWNvcmQgPSAoeGxocF9wcnVuZV9pdGVtcyAqKSBjdXJzb3I7CiAKLQkJKm5kZWFk ID0gc3VicmVjb3JkLT5udGFyZ2V0czsKLQkJQXNzZXJ0KCpuZGVhZCA+IDApOwotCQkqbm93 ZGVhZCA9IHN1YnJlY29yZC0+ZGF0YTsKKwkJCSpuZGVhZCA9IHN1YnJlY29yZC0+bnRhcmdl dHM7CisJCQlBc3NlcnQoKm5kZWFkID4gMCk7CisJCQkqbm93ZGVhZCA9IHN1YnJlY29yZC0+ ZGF0YTsKIAotCQljdXJzb3IgKz0gb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0YSk7 Ci0JCWN1cnNvciArPSBzaXplb2YoT2Zmc2V0TnVtYmVyKSAqICpuZGVhZDsKKwkJCWN1cnNv ciArPSBvZmZzZXRvZih4bGhwX3BydW5lX2l0ZW1zLCBkYXRhKTsKKwkJCWN1cnNvciArPSBz aXplb2YoT2Zmc2V0TnVtYmVyKSAqICpuZGVhZDsKKwkJfQorCQllbHNlCisJCXsKKwkJCWhl YXBfeGxvZ19kZXNlcmlhbGl6ZV9kZm9yKCZjdXJzb3IsIG5kZWFkLCBub3dkZWFkLAorCQkJ CQkJCQkJICAgZGZvcl9idWYpOworCQl9CiAJfQogCWVsc2UKIAl7CkBAIC0xNjMsMTQgKzE3 MywyMiBAQCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpj dXJzb3IsIHVpbnQxNiBmbGFncywKIAogCWlmIChmbGFncyAmIFhMSFBfSEFTX05PV19VTlVT RURfSVRFTVMpCiAJewotCQl4bGhwX3BydW5lX2l0ZW1zICpzdWJyZWNvcmQgPSAoeGxocF9w cnVuZV9pdGVtcyAqKSBjdXJzb3I7CisJCWlmKCEoZmxhZ3MgJiBYTEhQX0RGT1JfQ09NUFJF U1NFRCkpCisJCXsKKwkJCXhsaHBfcHJ1bmVfaXRlbXMgKnN1YnJlY29yZCA9ICh4bGhwX3By dW5lX2l0ZW1zICopIGN1cnNvcjsKIAotCQkqbnVudXNlZCA9IHN1YnJlY29yZC0+bnRhcmdl dHM7Ci0JCUFzc2VydCgqbnVudXNlZCA+IDApOwotCQkqbm93dW51c2VkID0gc3VicmVjb3Jk LT5kYXRhOworCQkJKm51bnVzZWQgPSBzdWJyZWNvcmQtPm50YXJnZXRzOworCQkJQXNzZXJ0 KCpudW51c2VkID4gMCk7CisJCQkqbm93dW51c2VkID0gc3VicmVjb3JkLT5kYXRhOwogCi0J CWN1cnNvciArPSBvZmZzZXRvZih4bGhwX3BydW5lX2l0ZW1zLCBkYXRhKTsKLQkJY3Vyc29y ICs9IHNpemVvZihPZmZzZXROdW1iZXIpICogKm51bnVzZWQ7CisJCQljdXJzb3IgKz0gb2Zm c2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0YSk7CisJCQljdXJzb3IgKz0gc2l6ZW9mKE9m ZnNldE51bWJlcikgKiAqbnVudXNlZDsKKwkJfQorCQllbHNlCisJCXsKKwkJCWhlYXBfeGxv Z19kZXNlcmlhbGl6ZV9kZm9yKCZjdXJzb3IsIG51bnVzZWQsIG5vd3VudXNlZCwKKwkJCQkJ CQkJCSAgIGRmb3JfYnVmICsgREZPUl9CVUZfUEFSVF9TSVpFKTsKKwkJfQogCX0KIAllbHNl CiAJewpAQCAtMzA5LDEzICszMjcsMTYgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1Ziwg WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQl4bGhwX2ZyZWV6ZV9wbGFuICpwbGFuczsK IAkJCU9mZnNldE51bWJlciAqZnJ6X29mZnNldHM7CiAKKwkJCXVpbnQ4IGRmb3JfYnVmWzUg KiBERk9SX0JVRl9QQVJUX1NJWkVdOworCiAJCQljaGFyCSAgICpjdXJzb3IgPSBYTG9nUmVj R2V0QmxvY2tEYXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCiAJCQloZWFwX3hsb2dfZGVz ZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjdXJzb3IsIHhscmVjLT5mbGFncywKIAkJCQkJ CQkJCQkJCSAgICZucGxhbnMsICZwbGFucywgJmZyel9vZmZzZXRzLAogCQkJCQkJCQkJCQkJ ICAgJm5yZWRpcmVjdGVkLCAmcmVkaXJlY3RlZCwKIAkJCQkJCQkJCQkJCSAgICZuZGVhZCwg Jm5vd2RlYWQsCi0JCQkJCQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3VudXNlZCk7CisJCQkJ CQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3VudXNlZCwKKwkJCQkJCQkJCQkJCSAgIGRmb3Jf YnVmKTsKIAogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIG5wbGFuczogJXUsIG5yZWRp cmVjdGVkOiAldSwgbmRlYWQ6ICV1LCBudW51c2VkOiAldSIsCiAJCQkJCQkJIG5wbGFucywg bnJlZGlyZWN0ZWQsIG5kZWFkLCBudW51c2VkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9ybWdyZGVzYy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdy ZGVzYy9tZXNvbi5idWlsZAppbmRleCBkOTAwMGNjZDlmZC4uNmNlZWE0NTE0ZWMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9tZXNvbi5idWlsZAorKysgYi9z cmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQKQEAgLTExLDYgKzExLDcg QEAgcm1ncl9kZXNjX3NvdXJjZXMgPSBmaWxlcygKICAgJ2dpc3RkZXNjLmMnLAogICAnaGFz aGRlc2MuYycsCiAgICdoZWFwZGVzYy5jJywKKyAgJ2hlYXBhbV94bG9nX2Rmb3IuYycsCiAg ICdsb2dpY2FsbXNnZGVzYy5jJywKICAgJ214YWN0ZGVzYy5jJywKICAgJ25idGRlc2MuYycs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRh dCBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IDBj OTg1NGFkOGZjLi42OGI2NzEzYjUzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfcGFyYW1ldGVycy5kYXQKQEAgLTM0MTMsNiArMzQxMywxMyBAQAogICBib290X3ZhbCA9 PiAnZmFsc2UnLAogfSwKIAoreyBuYW1lID0+ICd3YWxfcHJ1bmVfZGZvcl9jb21wcmVzc2lv bicsIHR5cGUgPT4gJ2Jvb2wnLCBjb250ZXh0ID0+ICdQR0NfU1VTRVQnLCBncm91cCA9PiAn V0FMX1NFVFRJTkdTJywKKyAgc2hvcnRfZGVzYyA9PiAnQ29tcHJlc3MgZGVhZCBhbmQgdW51 c2VkIG9mZnNldCBhcnJheXMgYXQgUFJVTkUvRlJFRVpFIFdBTCByZWNvcmRzIHVzaW5nIERG T1IuJywKKyAgbG9uZ19kZXNjID0+ICdFbmFibGVzIGNvbXByZXNzaW9uIG9mIGRlYWQgYW5k IHVudXNlZCBPZmZzZXROdW1iZXIgYXJyYXlzIHN0b3JlZCBpbiBoZWFwIFBSVU5FL0ZSRUVa RSBXQUwgcmVjb3JkcyB1c2luZyBjdXN0b21pc2VkIGRlbHRhIGZyYW1lLW9mLXJlZmVyZW5j ZSBlbmNvZGluZy4nLAorICB2YXJpYWJsZSA9PiAnd2FsX3BydW5lX2Rmb3JfY29tcHJlc3Np b24nLAorICBib290X3ZhbCA9PiAndHJ1ZScKK30sCisKIHsgbmFtZSA9PiAnd2FsX3JlY2Vp dmVyX2NyZWF0ZV90ZW1wX3Nsb3QnLCB0eXBlID0+ICdib29sJywgY29udGV4dCA9PiAnUEdD X1NJR0hVUCcsIGdyb3VwID0+ICdSRVBMSUNBVElPTl9TVEFOREJZJywKICAgc2hvcnRfZGVz YyA9PiAnU2V0cyB3aGV0aGVyIGEgV0FMIHJlY2VpdmVyIHNob3VsZCBjcmVhdGUgYSB0ZW1w b3JhcnkgcmVwbGljYXRpb24gc2xvdCBpZiBubyBwZXJtYW5lbnQgc2xvdCBpcyBjb25maWd1 cmVkLicsCiAgIHZhcmlhYmxlID0+ICd3YWxfcmVjZWl2ZXJfY3JlYXRlX3RlbXBfc2xvdCcs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDFlMTRiN2I0YWYwLi44 NmE1MDlmYjlmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTMx LDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9jb21taXRfdHMuaCIKICNpbmNsdWRl ICJhY2Nlc3MvZ2luLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nX2Rmb3IuaCIK ICNpbmNsdWRlICJhY2Nlc3Mvc2xydS5oIgogI2luY2x1ZGUgImFjY2Vzcy90b2FzdF9jb21w cmVzc2lvbi5oIgogI2luY2x1ZGUgImFjY2Vzcy90d29waGFzZS5oIgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IGU0YWJlNmMw MDc3Li4yMDM0Y2NkNDkzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMjU1LDYgKzI1NSw4IEBACiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQp CiAjd2FsX2NvbXByZXNzaW9uID0gb2ZmICAgICAgICAgICAgICAgICAgIyBlbmFibGVzIGNv bXByZXNzaW9uIG9mIGZ1bGwtcGFnZSB3cml0ZXM7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBvZmYsIHBnbHosIGx6NCwgenN0ZCwgb3Igb24KKyN3YWxf cHJ1bmVfZGZvcl9jb21wcmVzc2lvbiA9IHRydWUgICAgICAjIENvbXByZXNzIGRlYWQgYW5k IHVudXNlZCBvZmZzZXQgYXJyYXlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBhdCBQUlVORS9GUkVFWkUgV0FMIHJlY29yZHMgdXNpbmcgREZPUi4KICN3 YWxfaW5pdF96ZXJvID0gb24gICAgICAgICAgICAgICAgICAgICAjIHplcm8tZmlsbCBuZXcg V0FMIGZpbGVzCiAjd2FsX3JlY3ljbGUgPSBvbiAgICAgICAgICAgICAgICAgICAgICAgIyBy ZWN5Y2xlIFdBTCBmaWxlcwogI3dhbF9idWZmZXJzID0gLTEgICAgICAgICAgICAgICAgICAg ICAgICMgbWluIDMya0IsIC0xIHNldHMgYmFzZWQgb24gc2hhcmVkX2J1ZmZlcnMKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC8uZ2l0aWdub3JlIGIvc3JjL2Jpbi9wZ193YWxk dW1wLy5naXRpZ25vcmUKaW5kZXggZWM1MWY0MWM3NjcuLmEzYzAyNDQ2YjlkIDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvLmdpdGlnbm9yZQorKysgYi9zcmMvYmluL3BnX3dh bGR1bXAvLmdpdGlnbm9yZQpAQCAtMTAsNiArMTAsNyBAQAogL2dpc3RkZXNjLmMKIC9oYXNo ZGVzYy5jCiAvaGVhcGRlc2MuYworL2hlYXBhbV94bG9nX2Rmb3IuYwogL2xvZ2ljYWxtc2dk ZXNjLmMKIC9teGFjdGRlc2MuYwogL25idGRlc2MuYwpAQCAtMjgsNSArMjksMTMgQEAKIC94 bG9ncmVhZGVyLmMKIC94bG9nc3RhdHMuYwogCisjIFNvdXJjZSBmaWxlcyBjb3BpZWQgZnJv bSBzcmMvYmFja2VuZC9saWIKKy9iaXRwYWNrX3RlbXBsLmMKKy9iaXRwYWNrX3UxNi5jCisv ZGZvcl90ZW1wbC5jCisvZGZvcl91MTYuYworL3ZlY3RfdGVtcGwuYworL3ZlY3RfdTE2LmMK KwogIyBHZW5lcmF0ZWQgYnkgdGVzdCBzdWl0ZQogL3RtcF9jaGVjay8KZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtl ZmlsZQppbmRleCBhYWJiODc1NjZhMi4uNWU1MjFjMWU4MjIgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfd2FsZHVtcC9NYWtlZmlsZQorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvTWFrZWZp bGUKQEAgLTgsOCArOCw5IEBAIGV4cG9ydCBUQVIKIAogc3ViZGlyID0gc3JjL2Jpbi9wZ193 YWxkdW1wCiB0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgotaW5jbHVkZSAkKHRvcF9idWlsZGRp cikvc3JjL01ha2VmaWxlLmdsb2JhbAorZGZvcl9kaXIgOj0gJCh0b3BfYnVpbGRkaXIpL3Ny Yy9iYWNrZW5kL2xpYgogCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUu Z2xvYmFsCiBPQkpTID0gXAogCSQoUk1HUkRFU0NPQkpTKSBcCiAJJChXSU4zMlJFUykgXApA QCAtMjAsMTAgKzIxLDEzIEBAIE9CSlMgPSBcCiAJeGxvZ3JlYWRlci5vIFwKIAl4bG9nc3Rh dHMubwogCitpbmNsdWRlICQoZGZvcl9kaXIpL01ha2VmaWxlLmRmb3IKK09CSlMgKz0gJChP QkpTX0RGT1IpCisKIG92ZXJyaWRlIENQUEZMQUdTIDo9IC1ERlJPTlRFTkQgLUkkKGxpYnBx X3NyY2RpcikgJChDUFBGTEFHUykKIExERkxBR1NfSU5URVJOQUwgKz0gLUwkKHRvcF9idWls ZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzCiAKLVJNR1JERVNDU09VUkNFUyA9ICQo c29ydCAkKG5vdGRpciAkKHdpbGRjYXJkICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjLypkZXNjKi5jKSkpCitSTUdSREVTQ1NPVVJDRVMgPSAkKHNvcnQgJChu b3RkaXIgJCh3aWxkY2FyZCAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdy ZGVzYy8qZGVzYyouYykpKSBoZWFwYW1feGxvZ19kZm9yLmMKIFJNR1JERVNDT0JKUyA9ICQo cGF0c3Vic3QgJS5jLCUubywkKFJNR1JERVNDU09VUkNFUykpCiAKIApAQCAtMzIsNiArMzYs MjQgQEAgYWxsOiBwZ193YWxkdW1wCiBwZ193YWxkdW1wOiAkKE9CSlMpIHwgc3VibWFrZS1s aWJwZ3BvcnQKIAkkKENDKSAkKENGTEFHUykgJF4gJChMREZMQUdTKSAkKExERkxBR1NfRVgp ICQoTElCUykgLW8gJEAkKFgpCiAKK2JpdHBhY2tfdGVtcGwuYzogJSA6ICQodG9wX3NyY2Rp cikvc3JjL2JhY2tlbmQvbGliLyUKKwlybSAtZiAkQCAmJiAkKExOX1MpICQ8IC4KKworYml0 cGFja191MTYuYzogJSA6ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvbGliLyUgYml0cGFj a190ZW1wbC5jCisJcm0gLWYgJEAgJiYgJChMTl9TKSAkPCAuCisKK2Rmb3JfdGVtcGwuYzog JSA6ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvbGliLyUKKwlybSAtZiAkQCAmJiAkKExO X1MpICQ8IC4KKworZGZvcl91MTYuYzogJSA6ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQv bGliLyUgZGZvcl90ZW1wbC5jCisJcm0gLWYgJEAgJiYgJChMTl9TKSAkPCAuCisKK3ZlY3Rf dGVtcGwuYzogJSA6ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvbGliLyUKKwlybSAtZiAk QCAmJiAkKExOX1MpICQ8IC4KKwordmVjdF91MTYuYzogJSA6ICQodG9wX3NyY2Rpcikvc3Jj L2JhY2tlbmQvbGliLyUgdmVjdF90ZW1wbC5jCisJcm0gLWYgJEAgJiYgJChMTl9TKSAkPCAu CisKIHhsb2dyZWFkZXIuYzogJSA6ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0vJQogCXJtIC1mICRAICYmICQoTE5fUykgJDwgLgogCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQgYi9zcmMvYmluL3BnX3dhbGR1bXAvbWVz b24uYnVpbGQKaW5kZXggNTI5NmYyMWI4MmMuLmMzM2JlODg3MTJjIDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1w L21lc29uLmJ1aWxkCkBAIC0xMCw2ICsxMCw3IEBAIHBnX3dhbGR1bXBfc291cmNlcyA9IGZp bGVzKAogcGdfd2FsZHVtcF9zb3VyY2VzICs9IHJtZ3JfZGVzY19zb3VyY2VzCiBwZ193YWxk dW1wX3NvdXJjZXMgKz0geGxvZ3JlYWRlcl9zb3VyY2VzCiBwZ193YWxkdW1wX3NvdXJjZXMg Kz0gZmlsZXMoJy4uLy4uL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3N0YXRzLmMnKQor cGdfd2FsZHVtcF9zb3VyY2VzICs9IGRmb3Jfc291cmNlcwogCiBpZiBob3N0X3N5c3RlbSA9 PSAnd2luZG93cycKICAgcGdfd2FsZHVtcF9zb3VyY2VzICs9IHJjX2Jpbl9nZW4ucHJvY2Vz cyh3aW4zMnZlcl9yYywgZXh0cmFfYXJnczogWwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbV94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cu aAppbmRleCBjZTM1NjZiYTk0OS4uZGQxZDA2ODYwYmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW1feGxvZy5oCkBAIC0xNSw2ICsxNSw3IEBACiAjZGVmaW5lIEhFQVBBTV9YTE9HX0gKIAog I2luY2x1ZGUgImFjY2Vzcy9odHVwLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWls cy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVhZGVyLmgiCiAjaW5jbHVkZSAibGliL3N0 cmluZ2luZm8uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zi5oIgpAQCAtMzM5LDYgKzM0MCw4 IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKICNkZWZpbmUJCVhMSFBfVk1fQUxM X1ZJU0lCTEUJCQkoMSA8PCA4KQogI2RlZmluZQkJWExIUF9WTV9BTExfRlJPWkVOCQkJKDEg PDwgOSkKIAorI2RlZmluZQkJWExIUF9ERk9SX0NPTVBSRVNTRUQJCSgxIDw8IDEwKQorCiAv KgogICogeGxocF9mcmVlemVfcGxhbiBkZXNjcmliZXMgaG93IHRvIGZyZWV6ZSBhIGdyb3Vw IG9mIG9uZSBvciBtb3JlIGhlYXAgdHVwbGVzCiAgKiAoYXBwZWFycyBpbiB4bF9oZWFwX3By dW5lJ3MgeGxocF9mcmVlemVfcGxhbnMgc3ViLXJlY29yZCkKQEAgLTUxMSw2ICs1MTQsNyBA QCBleHRlcm4gdm9pZCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShj aGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywKIAkJCQkJCQkJCQkJCSAgIE9mZnNldE51bWJl ciAqKmZyel9vZmZzZXRzLAogCQkJCQkJCQkJCQkJICAgaW50ICpucmVkaXJlY3RlZCwgT2Zm c2V0TnVtYmVyICoqcmVkaXJlY3RlZCwKIAkJCQkJCQkJCQkJCSAgIGludCAqbmRlYWQsIE9m ZnNldE51bWJlciAqKm5vd2RlYWQsCi0JCQkJCQkJCQkJCQkgICBpbnQgKm51bnVzZWQsIE9m ZnNldE51bWJlciAqKm5vd3VudXNlZCk7CisJCQkJCQkJCQkJCQkgICBpbnQgKm51bnVzZWQs IE9mZnNldE51bWJlciAqKm5vd3VudXNlZCwKKwkJCQkJCQkJCQkJCSAgIHVpbnQ4IGRmb3Jf YnVmW10pOwogCi0jZW5kaWYJCQkJCQkJLyogSEVBUEFNX1hMT0dfSCAqLworI2VuZGlmCQkJ CQkJCS8qIEhFQVBBTV9YTE9HX0ggKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2dfZGZvci5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nX2Rmb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uMjc0YjE0ZTg5MWUKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2dfZGZvci5oCkBAIC0wLDAgKzEsMTM3IEBA CisjaWZuZGVmIEhFQVBBTV9YTE9HX0RGT1JfSAorI2RlZmluZSBIRUFQQU1fWExPR19ERk9S X0gKKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9k ZXRhaWxzLmgiCisjaW5jbHVkZSAibGliL2Rmb3JfdTE2LmgiCisjaW5jbHVkZSAic3RvcmFn ZS9idWZwYWdlLmgiCisKKy8qCisgKiBERm9SJ3MgbWV0YSBibG9jayBmb3IgUFJVTkUvRlJF RVpFIHJlY29yZAorICoKKyAqIEEgbWV0YSBibG9jayBjb250YWlucyBwYXJhbWV0ZXJzIHJl cXVpcmVkIGZvciBkZWNvbXByZXNzaW9uIG9mIHRoZSBmb2xsb3dpbmcKKyAqIERGb1IgcGFj ay4gSXQgaXMgZGVuc2VseSBiaXQtcGFja2VkLiBJZiB0aGUgZXhjZXB0aW9uIGZsYWcgaXMg emVybywgZmllbGRzCisgKiBwZXJ0YWluaW5nIHRvIGV4Y2VwdGlvbnMgaXMgYWJzZW50LCB3 aGljaCBtZWFucyB0aGF0IERGb1IgcGFjayBkb2VzIG5vdAorICogY29udGFpbiBleGNlcHRp b25zLiBDYWxjdWxhdGlvbiBvZiBmaWVsZCB3aWR0aHMgdGFrZXMgaW50byBhY2NvdW50Cisg KiBuZXh0IGNvbnNpZGVyYXRpb25zOgorICoKKyAqIE1heCBJdGVtIENvdW50IHNob3VsZCBi ZSBtb3JlIG9yIGVxdWFsIHRvIE1heEhlYXBUdXBsZXNQZXJQYWdlLiBTaW5jZSB3ZQorIGNh bid0IGNhbGN1bGF0ZQorICogTWF4SGVhcFR1cGxlc1BlclBhZ2Ugb24gcHJlcHJvY2Vzc29y IHN0YWdlLCB3ZSBpbnRlbnRpb25hbGx5IG92ZXJlc3RpbWF0ZSBpdAorICogYXM6CisgKiAg ICAgICBNYXggSXRlbSBDb3VudCA+IEJMQ0tTWiAvIE1pbiBUdXBsZSBTaXplID0gQkxDS1Na IC8gMjQKKyAqIHRvIHByb3ZpZGUgYSBtYXJnaW4uIEluIGdlbmVyYWwsIGRlcGVuZGluZyBv biBCTENLU1osIGl0IHNob3VsZCBub3QgcmVzdWx0IGluCisgKiBERm9SIG1ldGEgYmxvY2sg b3ZlcmhlYWQuCisgKiBGb3IgaW5zdGFuY2UsIGZvciBhIGJsb2NrIHNpemUgb2YgMzI3Njgs IHdlIGhhdmUgTWF4IEl0ZW0gQ291bnQgPSAxMzY2LCBhbmQKKyAqIGl0IG5lZWRzIDExIGJp dHMgd2lkdGggZmllbGQuCisgKgorICogU2l6ZSBvZiBmaWVsZCBJdGVtIENvdW50OgorICog ICAgICAgSVRFTV9DT1VOVF9TWiA9IGxvZzIoTWF4SXRlbUNvdW50KS4KKyAqCisgKiBNYXhp bXVtIERlbHRhIFdpZHRoIGlzIGVxdWFsIHRvIElURU1fQ09VTlRfU1ouIFNvIERFTFRBX1dJ RFRIX1NaIGluIGEgREZvUgorICogbWV0YSBibG9jayBjYW4gYmUgY2FsY3VsYXRlZCBhczoK KyAqICAgICAgREVMVEFfV0lEVEhfU1ogPj0gbG9nMihNYXggRGVsdGEgV2lkdGgpID0gbG9n MihJVEVNX0NPVU5UX1NaKQorICoKKyAqIE1heCBFeGNlcHRpb24gQ291bnQgPSAwLjEgKiBN YXhJdGVtQ291bnQsIGFjY29yZGluZyB0byBERm9SIGFsZ29yaXRobSB3aGljaAorICogZ3Vh cmFudGVlcyB0aGF0IG5vdCBsZXNzIHRoYW4gOTAlIG9mIGl0ZW1zIHdpbGwgYmUgY292ZXJl ZCB3aXRob3V0IHVzaW5nCisgKiBleGNlcHRpb25zLiBTbzoKKyAqICAgICAgRVhDRVBUSU9O X0NPVU5UX1NaID49IGxvZzIoMC4xICogTWF4SXRlbUNvdW50KS4KKyAqCisgKiBBbiBleGNl cHRpb24gaXMgcGFydCBvZiBhIGRlbHRhLCBleGNlZWRpbmcgY2hvb3NlbiBkZWx0YSB3aWR0 aC4gRXhjZXB0aW9uIGlzCisgKiBzYXZlZCBpbiBzZXBhcmF0ZWQgcGFydCBvZiBERm9SIHBh Y2sgYW5kLCBzaW5jZSBkZWx0YSB3aWR0aCBpcyBub3QgbGVzcworICogdGhhbiAxOgorICog ICAgRVhDRVBUSU9OX1dJRFRIX1NaID49IGxvZzIoTWF4IERlbHRhIFdpZHRoIC0gMSkgPSBs b2cyKElURU1fQ09VTlRfU1ogLSAxKS4KKyAqCisgKiBBbiBleGNlcHRpb24ncyBwb3NpdGlv biBzaG93cyB0aGUgcG9zaXRpb24gb2Ygb2YgYSBkZWx0YSB0byB3aWNoIHRoZQorICogZXhj ZXB0aW9uIGhhcyB0byBiZSBhcHBsaWVkLiBWYWx1ZXMgb2YgYW4gZXhjZXB0aW9uIHBvc2l0 aW9uIG11c3QgY292ZXIgdGhlCisgKiBzYW1lIHZhbHVlIHJhbmdlIGFzIGFuIEl0ZW0gQ291 bnQsIHNvIHRoZSBNYXggV2lkdGggb2YgYW4gRXhjZXB0aW9uIFBvc2l0aW9uCisgKiBpcyBl cXVhbCB0byB3aWR0aCBvZiBEZWx0YS4gQ29uc2VxdWVudGx5LCB0aGUgc2l6ZSBvZiBFeGNl cHRpb24gUG9zaXRpb24KKyAqIFdpZHRoIGNhbGN1bGF0ZWQgYXM6CisgKiAgICAgRVhDRVBU SU9OX1BPU0lUSU9OX1dJRFRIX1NJWkUgPSBsb2cyKE1heCBEZWx0YSBXaWR0aCkgPSBERUxU QV9XSURUSF9TWgorICoKKyAqIEZvciBleGFtcGxlLCBNZXRhIGZvciBCTENLU1ogZXF1YWwg dG8gMzI3NjggaGFzIG5leHQgc2l6ZXMgb2YgZmllbGQKKyAqIHwgc2VjdC4gfCBieXRlIHwg Yml0cyAgICAgIHwgICBwYXJhbSAgICAgICAgICAgfCAgc2l6ZSAgfCByYW5nZSBvZiB2YWx1 ZXMgfAorICogfC0tLS0tLS18LS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0t LS18LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS18CisgKiB8ICBtYWluIHwgMCwgMSB8IDAt MTAgICAgICB8IGl0ZW0gY291bnQgICAgICAgIHwgMTEgYml0IHwgMS4uLjEzNjUgICAgICAg IHwKKyAqIHwgIG1haW4gfCAgICAxIHwgMTEtMTQgICAgIHwgZGVsdGEgd2lkdGggICAgICAg fCAgNCBiaXQgfCAxLi4uMTEgICAgICAgICAgfAorICogfCAgbWFpbiB8ICAgIDEgfCAxNSAg ICAgICAgfCBleHRyYSBzZWN0LiBmbGFnICB8ICAxIGJpdCB8IDAuLi4xICAgICAgICAgICB8 CisgKiB8IGV4dHJhIHwgICAgMiB8IDE2LTIzICAgICB8IGV4Y2VwdGlvbiBjb3VudCAgIHwg IDggYml0IHwgMC4uLjEzNyAgICAgICAgIHwKKyAqIHwgZXh0cmEgfCAgICAzIHwgMjQtMjcg ICAgIHwgZXhjZXB0aW9uIHdpZHRoICAgfCAgNCBiaXQgfCAwLi4uMTAgICAgICAgICAgfAor ICogfCBleHRyYSB8IDMsIDQgfCAyOC0zNSAgICAgfCBleGNlcHQgcG9zLiB3aWR0aCB8ICA0 IGJpdCB8IDEuLi4xMSAgICAgICAgICB8CisgKi8KKworLyoKKyAqIFRoZSBzaXplcyBvZiBm aWVsZHMgaW4gdGhlIGNvbXByZXNzZWQgREZvUiBNZXRhIHN0cnVjdHVyZSBvZiBhbgorICog WExPR19IRUFQMl9QUlVORSogcmVjb3JkLgorICovCisjaWYgQkxDS1NaID09IDMyNzY4Cisj ZGVmaW5lIFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiAgMTEKKyNkZWZpbmUgWExIUEZfTUVU QV9ERUxUQV9XSURUSF9TWiA0CisjZWxpZiBCTENLU1ogPT0gMTYzODQKKyNkZWZpbmUgWExI UEZfTUVUQV9JVEVNX0NPVU5UX1NaICAxMAorI2RlZmluZSBYTEhQRl9NRVRBX0RFTFRBX1dJ RFRIX1NaIDQKKyNlbGlmIEJMQ0tTWiA9PSA4MTkyCisjZGVmaW5lIFhMSFBGX01FVEFfSVRF TV9DT1VOVF9TWiAgOQorI2RlZmluZSBYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaIDQKKyNl bGlmIEJMQ0tTWiA9PSA0MDk2CisjZGVmaW5lIFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiAg OAorI2RlZmluZSBYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaIDQKKyNlbGlmIEJMQ0tTWiA9 PSAyMDQ4CisjZGVmaW5lIFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiAgNworI2RlZmluZSBY TEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaIDMKKyNlbGlmIEJMQ0tTWiA9PSAxMDI0CisjZGVm aW5lIFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiAgNgorI2RlZmluZSBYTEhQRl9NRVRBX0RF TFRBX1dJRFRIX1NaIDMKKyNlbGlmIEJMQ0tTWiA9PSA1MTIKKyNkZWZpbmUgWExIUEZfTUVU QV9JVEVNX0NPVU5UX1NaICA1CisjZGVmaW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1og MworI2VsaWYgQkxDS1NaID09IDI1NgorI2RlZmluZSBYTEhQRl9NRVRBX0lURU1fQ09VTlRf U1ogIDQKKyNkZWZpbmUgWExIUEZfTUVUQV9ERUxUQV9XSURUSF9TWiAzCisjZWxpZiBCTENL U1ogPT0gMTI4CisjZGVmaW5lIFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiAgMworI2RlZmlu ZSBYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaIDIKKyNlbGlmIEJMQ0tTWiA9PSA2NAorI2Rl ZmluZSBYTEhQRl9NRVRBX0lURU1fQ09VTlRfU1ogIDIKKyNkZWZpbmUgWExIUEZfTUVUQV9E RUxUQV9XSURUSF9TWiAyCisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBCTENLU1ogaW4g WExvZyBIZWFwIEFuZCBQcnVuZS4iCisjZW5kaWYKKworI2RlZmluZSBYTEhQRl9NRVRBX0VY Q0VQVElPTl9GTEFHX1NaIDEgLyogRmxhZyBhYm91dCBFeHRyYSBTZWN0aW9uIHByZXNlbmNl ICovCisKKy8qIFNpemUgb2YgRXhjZXB0aW9uIENvdW50IGZpZWxkICovCisjaWYgWExIUEZf TUVUQV9JVEVNX0NPVU5UX1NaID4gNgorI2RlZmluZSBYTEhQRl9NRVRBX0VYQ0VQVElPTl9D T1VOVF9TWiBYTEhQRl9NRVRBX0lURU1fQ09VTlRfU1ogLSAzCisjZWxzZQorI2RlZmluZSBY TEhQRl9NRVRBX0VYQ0VQVElPTl9DT1VOVF9TWiBYTEhQRl9NRVRBX0lURU1fQ09VTlRfU1og MworI2VuZGlmCisKKyNkZWZpbmUgWExIUEZfTUVUQV9FWENFUFRJT05fV0lEVEhfU1ogXAor CVhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1ogLyogU2l6ZSBvZiBFeGNlcHRpb24gV2lkdGgg ZmllbGQgKi8KKworI2RlZmluZSBYTEhQRl9NRVRBX0VYQ0VQVElPTl9QT1NJVElPTl9XSURU SF9TWiBcCisJWExIUEZfTUVUQV9ERUxUQV9XSURUSF9TWiAvKiBTaXplIG9mIEV4Y2VwdGlv biBQb3NpdGlvbiB3aWR0aCBmaWVsZCAqLworCisvKiBNYXhpbWFsIHNpemUgb2YgcGFja2Vk IG1ldGEgKi8KKyNkZWZpbmUgTUFYX1BBQ0tFRF9NRVRBX1NJWkUgXAorCShYTEhQRl9NRVRB X0lURU1fQ09VTlRfU1ogKyBYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaICsgICAgICAgICAg ICAgICAgICBcCisJIFhMSFBGX01FVEFfRVhDRVBUSU9OX0ZMQUdfU1ogKyBYTEhQRl9NRVRB X0VYQ0VQVElPTl9QT1NJVElPTl9XSURUSF9TWiArIFwKKwkgWExIUEZfTUVUQV9FWENFUFRJ T05fV0lEVEhfU1ogKyBYTEhQRl9NRVRBX0VYQ0VQVElPTl9DT1VOVF9TWiArIDcpIC8gOAor CisvKiBUaGUgc2l6ZSBvZiBhIHR5cGljYWwgY2h1bmsgb2YgbWVtb3J5IHVzZWQgYnkgZGZv cl9wYWNrICovCisjZGVmaW5lIERGT1JfQlVGX1BBUlRfU0laRSBNYXhIZWFwVHVwbGVzUGVy UGFnZSAqIHNpemVvZih1aW50MTYpCisKK2V4dGVybiBib29sIHdhbF9wcnVuZV9kZm9yX2Nv bXByZXNzaW9uOyAvKiBHVUMgKi8KKworZXh0ZXJuIHNpemVfdCBsb2dfaGVhcF9wcnVuZV9h bmRfZnJlZXplX3BhY2tfbWV0YShjb25zdCBkZm9yX21ldGFfdCAqbWV0YSwKKwkJCQkJCQkJ CQkJCSAgdWludDggYnVmW10pOworCitleHRlcm4gc2l6ZV90IGxvZ19oZWFwX3BydW5lX2Fu ZF9mcmVlemVfdW5wYWNrX21ldGEoZGZvcl9tZXRhX3QgKm1ldGEsCisJCQkJCQkJCQkJCQkJ Y29uc3QgdWludDggcGFja2VkX21ldGFbXSk7CisKK2V4dGVybiB2b2lkIGhlYXBfeGxvZ19k ZXNlcmlhbGl6ZV9kZm9yKGNoYXIgKipjdXJzb3IsIGludCAqbml0ZW1zLAorCQkJCQkJCQkJ ICAgT2Zmc2V0TnVtYmVyICoqaXRlbXMsIHVpbnQ4IGRmb3JfYnVmW10pOworCisjZW5kaWYJ CQkJCQkJLyogSEVBUEFNX1hMT0dfREZPUl9IICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZSBiL3NyYy90ZXN0L2Rm b3IvTWFrZWZpbGUKaW5kZXggZjlmMWI3MDVjNWIuLjcwNWY5MzZlYzExIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9kZm9yL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L2Rmb3IvTWFrZWZpbGUK QEAgLTQyLDYgKzQyLDggQEAgY2hlY2stdW5pdDogJChURVNUUykKIAljZCAkKHRvcF9idWls ZGRpcikvJChzdWJkaXIpICYmIFwKIAkgICAkKFBST1ZFKSAkKFBST1ZFX0ZMQUdTKSBcCiAJ ICAgIC12ICQoYWRkcHJlZml4IC4vLCQoaWYgJChQUk9WRV9URVNUUyksICQoUFJPVkVfVEVT VFMpLCAkKFRFU1RTKSkpCisjIFRoZSBleGFtcGxlIG9mIHVzaW5nIHRoZSBjaGVjay11bml0 IHJ1bGU6CisjCQltYWtlIGNoZWNrLXVuaXQgUFJPVkVfVEVTVFM9J3Rlc3RfZGZvcl91MTYn IFBST1ZFX0ZMQUdTPSctLXZlcmJvc2UnCiAKIGNoZWNrOiBjaGVjay11bml0CiAKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUyX3BydW5lX2Rmb3JfY29tcHJlc3Npb24u cGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1Ml9wcnVuZV9kZm9yX2NvbXByZXNzaW9uLnBs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44MTk5ODRhYTU2OAot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUyX3BydW5lX2Rmb3Jf Y29tcHJlc3Npb24ucGwKQEAgLTAsMCArMSwxNTUgQEAKK3VzZSBzdHJpY3Q7Cit1c2Ugd2Fy bmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBXb3JrbG9h ZCBnZW5lcmF0aW5nIGRlYWQgdHVwbGVzIGFuZCBQUlVORSBXQUwKKyMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWIg Z2VuZXJhdGVfcHJ1bmVfd29ya2xvYWQKK3sKKyAgICBteSAoJG5vZGUpID0gQF87CisKKyAg ICAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisgICAgICAgIENSRUFURSBUQUJM RSB0X3BydW5lICgKKyAgICAgICAgICAgIGlkIGludCwKKyAgICAgICAgICAgIHZhbCB0ZXh0 CisgICAgICAgICkgV0lUSCAoZmlsbGZhY3RvciA9IDEwMCk7CisgICAgfSk7CisKKyAgICAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisgICAgICAgIFNFVCB2YWN1dW1fZnJl ZXplX21pbl9hZ2UgPSAwOworICAgICAgICBTRVQgdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2Ug PSAwOworICAgIH0pOworCisgICAgIyBJbnNlcnQgbWFueSB0dXBsZXMKKyAgICAkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisgICAgICAgIElOU0VSVCBJTlRPIHRfcHJ1bmUK KyAgICAgICAgU0VMRUNUIGcsICd4JworICAgICAgICBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LDMwMDAwMCkgZzsKKyAgICB9KTsKKworICAgICMgRGVsZXRlIDgwJSBvZiByZWNvcmRzCisg ICAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworICAgICAgICBERUxFVEUgRlJP TSB0X3BydW5lCisJCVdIRVJFIGlkICUgNTUwIDw9IDU0MDsKKyAgICB9KTsKKworICAgICMg VkFDVVVNIGN5Y2xlcyB0byB0cmlnZ2VyIFBSVU5FCisgICAgZm9yIG15ICRpICgxLi4zKQor ICAgIHsKKyAgICAgICAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeyBWQUNVVU0g RlJFRVpFIHRfcHJ1bmU7IH0pOworICAgIH0KK30KKworIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgV0FMIGFuYWx5 emVyCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorc3ViIGNvbGxlY3RfcHJ1bmVfc3RhdHMKK3sKKyAgICBteSAoJG5v ZGUpID0gQF87CisKKwlteSAkd2FsX2RpciA9ICRub2RlLT5kYXRhX2RpciAuICIvcGdfd2Fs IjsKKworCXByaW50ICJ3YWxfZGlyPSIgLiAkd2FsX2RpciAuIlxuIjsKKworICAgICMgRmlu ZCB0aGUgZmlyc3QgV0FMIHNlZ21lbnQKKyAgICBteSBAd2FsX2ZpbGVzID0gc29ydCBnbG9i KCIkd2FsX2Rpci9bMC05QS1GXSoiKTsKKyAgICBteSAkc3RhcnRfc2VnID0gJHdhbF9maWxl c1swXTsKKworICAgIGRpZSAiTm8gV0FMIGZpbGVzIGZvdW5kIiB1bmxlc3MgZGVmaW5lZCAk c3RhcnRfc2VnOworCisJIyBSdW4gcGdfd2FsZHVtcCBvbiBhbGwgc2VnbWVudHMKKwlteSAk Y21kID0gInBnX3dhbGR1bXAgLS1ybWdyPUhlYXAyIC1wICR3YWxfZGlyICRzdGFydF9zZWcg Mj4vZGV2L251bGwiOworCisgICAgbXkgQGxpbmVzID0gYCRjbWRgOworCitwcmludCAibGlu ZXM9IiAuIEBsaW5lcyAuICJcbiI7CisKKyAgICBteSAkcmVjb3JkcyA9IDA7CisgICAgbXkg JGJ5dGVzICAgPSAwOworCisgICAgZm9yZWFjaCBteSAkbGluZSAoQGxpbmVzKQorICAgIHsK KyAgICAgICAgbmV4dCB1bmxlc3MgJGxpbmUgPX4gL1BSVU5FX1ZBQ1VVTV9TQ0FOLzsKKyAg ICAgICAgJHJlY29yZHMrKzsKKyAgICAgICAgaWYgKCRsaW5lID1+IC9sZW4gXChyZWNcL3Rv dFwpOlxzKlxkK1wvXHMqKFxkKykvKQorICAgICAgICB7CisgICAgICAgICAgICAkYnl0ZXMg Kz0gJDE7CisgICAgICAgIH0KKyAgICB9CisJcHJpbnQgInJlY29yZHM9IiAuICRyZWNvcmRz IC4gIjsgYnl0ZXM9IiAuICRieXRlcyAuIlxuIjsKKyAgICByZXR1cm4gKCRyZWNvcmRzLCAk Ynl0ZXMpOworfQorCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJ1biB0ZXN0IG9uIGEgZnJlc2ggY2x1c3Rl cgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK3N1YiBydW5fY2x1c3Rlcl90ZXN0Cit7CisgICAgbXkgKCRuYW1lLCAk Y29tcHJlc3Npb24pID0gQF87CisKKyAgICBteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygkbmFtZSk7CisKKyAgICAkbm9kZS0+aW5pdDsKKworICAgICRub2Rl LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgcXF7CisJCXdhbF9sZXZlbCA9IHJl cGxpY2EKKwkJYXV0b3ZhY3V1bSA9IG9mZgorCQl3YWxfcHJ1bmVfZGZvcl9jb21wcmVzc2lv biA9ICRjb21wcmVzc2lvbgorCX0pOworCisgICAgJG5vZGUtPnN0YXJ0OworCisgICAgZ2Vu ZXJhdGVfcHJ1bmVfd29ya2xvYWQoJG5vZGUpOworCisgICAgJG5vZGUtPnN0b3A7CisKKyAg ICByZXR1cm4gY29sbGVjdF9wcnVuZV9zdGF0cygkbm9kZSk7Cit9CisKKyMgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj IENsdXN0ZXIgMTogY29tcHJlc3Npb24gT0ZGCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbXkgKCRvZmZfY291bnQs ICRvZmZfYnl0ZXMpID0gcnVuX2NsdXN0ZXJfdGVzdCgKKyAgICAicHJ1bmVfZGZvcl9vZmYi LAorICAgICJvZmYiCispOworCitub3RlKCJDb21wcmVzc2lvbiBPRkY6ICRvZmZfY291bnQg cmVjb3JkcywgJG9mZl9ieXRlcyBieXRlcyIpOworCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDbHVzdGVyIDI6 IGNvbXByZXNzaW9uIE9OCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbXkgKCRvbl9jb3VudCwgJG9uX2J5dGVzKSA9 IHJ1bl9jbHVzdGVyX3Rlc3QoCisgICAgInBydW5lX2Rmb3Jfb24iLAorICAgICJvbiIKKyk7 CisKK25vdGUoIkNvbXByZXNzaW9uIE9OOiAkb25fY291bnQgcmVjb3JkcywgJG9uX2J5dGVz IGJ5dGVzIik7CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvbXByZXNzaW9uIHJhdGlvCisjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor bXkgJHJhdGlvID0gIk4vQSI7CisKK2lmICgkb25fYnl0ZXMgPiAwKQoreworICAgICRyYXRp byA9IHNwcmludGYoIiUuMmYiLCAkb2ZmX2J5dGVzIC8gJG9uX2J5dGVzKTsKK30KKworbm90 ZSgiQ29tcHJlc3Npb24gcmF0aW8gKHVuY29tcHJlc3NlZC9jb21wcmVzc2VkKTogJHJhdGlv Iik7Citub3RlKCJOdW1lcmF0b3IgICAodW5jb21wcmVzc2VkIGJ5dGVzKTogJG9mZl9ieXRl cyIpOworbm90ZSgiRGVub21pbmF0b3IgKGNvbXByZXNzZWQgYnl0ZXMpOiAgICRvbl9ieXRl cyIpOworCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIyBFeHBlY3QgY29tcHJlc3Npb24gYmVuZWZpdAorIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK2NtcF9vaygKKyAgICAkcmF0aW8sICc+PScsIDUsCisgICAgJ0RGT1IgY29tcHJlc3Np b24gc2hvdWxkIHJlZHVjZSB0aGUgc2l6ZSBvZiBXQUwgYnkgYXQgbGVhc3QgNSB0aW1lcy4n CispOworCitkb25lX3Rlc3RpbmcoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0t IAoyLjUzLjAKCg== --------------WPZdujZzC0BCYuxPBGMyEtBX--