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.94.2) (envelope-from ) id 1rBXRo-00BG2w-0n for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Dec 2023 09:47:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rBXRm-006CYo-Gd for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Dec 2023 09:47:02 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rBXRm-006CXu-0Y for pgsql-hackers@lists.postgresql.org; Fri, 08 Dec 2023 09:47:02 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rBXRg-00AhrW-7X for pgsql-hackers@lists.postgresql.org; Fri, 08 Dec 2023 09:47:01 +0000 Received: from mail.postgrespro.ru (webmail.mstn.postgrespro.ru [192.168.2.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: i.kartyshov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 1C850E21010; Fri, 8 Dec 2023 12:46:55 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1702028815; bh=fp2DdlLTlvS0msaU46r1KSD41jr2uLiL/lXbSQ4FILE=; h=Date:From:To:Cc:Subject:In-Reply-To:References:User-Agent: Message-ID:From; b=m814sFI7Mch00i1/DgmETUarkXeG4NkFp7puCRD/S8Go1lfTPPAicFS8rlgurBGq7 Fkk1IGIUN17ttu57rbIuRH36uKHetyYJIMRaxiF3Lp5sxNXSHRicxtitVb5sokgWaC D2Fl3u9CDQscvOBFL3w+YNGV91/AyJ6j4OghLRztj/sIm0QJ/o5GHwe1sEmAvjA8A1 t3OiJZMnVujxP8faLoVgXMW1RjCEljbiqgXnBNFrliXLARmPL8Bnnr1G90MAaqbsjk 6Q9o5BbO8fY21WvC7MIOphCJQSCAtkwro5kA/9XVl4KU8d2REAt9rW+/lcTQNoz9WJ PZne4TiHySJFg== MIME-Version: 1.0 Date: Fri, 08 Dec 2023 12:46:55 +0300 From: Kartyshov Ivan To: Alexander Korotkov Cc: pgsql-hackers@lists.postgresql.org Subject: Re: [HACKERS] make async slave to wait for lsn to be replayed In-Reply-To: References: <22f122-655b3e80-3-688b3700@97587957> User-Agent: Roundcube Webmail/1.6.5 Message-ID: X-Sender: i.kartyshov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_4fbdf0ad13d72211dff1e46d32ad8140" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_4fbdf0ad13d72211dff1e46d32ad8140 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Should rise disscusion on separate utility statement or find case where procedure version is failed. 1) Classic (wait_classic_v3.patch) https://www.postgresql.org/message-id/3cc883048264c2e9af022033925ff8db%40postgrespro.ru ========== advantages: multiple wait events, separate WAIT FOR statement disadvantages: new words in grammar WAIT FOR [ANY | ALL] event [, ...] BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ] [ WAIT FOR [ANY | ALL] event [, ...]] event: LSN value TIMEOUT number_of_milliseconds timestamp 2) After style: Kyotaro and Freund (wait_after_within_v2.patch) https://www.postgresql.org/message-id/d3ff2e363af60b345f82396992595a03%40postgrespro.ru ========== advantages: no new words in grammar disadvantages: a little harder to understand AFTER lsn_event [ WITHIN delay_milliseconds ] [, ...] BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ] [ AFTER lsn_event [ WITHIN delay_milliseconds ]] START [ WORK | TRANSACTION ] [ transaction_mode [, ...] ] [ AFTER lsn_event [ WITHIN delay_milliseconds ]] 3) Procedure style: Tom Lane and Kyotaro (wait_proc_v7.patch) https://www.postgresql.org/message-id/27171.1586439221%40sss.pgh.pa.us https://www.postgresql.org/message-id/20210121.173009.235021120161403875.horikyota.ntt%40gmail.com ========== advantages: no new words in grammar,like it made in pg_last_wal_replay_lsn disadvantages: use snapshot xmin trick SELECT pg_waitlsn(‘LSN’, timeout); SELECT pg_waitlsn_infinite(‘LSN’); SELECT pg_waitlsn_no_wait(‘LSN’); Regards -- Ivan Kartyshov Postgres Professional: www.postgrespro.com --=_4fbdf0ad13d72211dff1e46d32ad8140 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=wait_after_within_v2.patch Content-Disposition: attachment; filename=wait_after_within_v2.patch; size=29443 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWxsZmlsZXMuc2dtbAppbmRleCA1NGI1ZjIyZDZlLi4xODY5NWUwMTNlIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbGxmaWxlcy5zZ21sCkBAIC0xODgsNiArMTg4LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2Fi bGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSB1cGRhdGUg ICAgICAgICAgICAgU1lTVEVNICJ1cGRhdGUuc2dtbCI+CiA8IUVOVElUWSB2YWN1dW0gICAgICAg ICAgICAgU1lTVEVNICJ2YWN1dW0uc2dtbCI+CiA8IUVOVElUWSB2YWx1ZXMgICAgICAgICAgICAg U1lTVEVNICJ2YWx1ZXMuc2dtbCI+Cis8IUVOVElUWSB3YWl0ICAgICAgICAgICAgICAgU1lTVEVN ICJ3YWl0LnNnbWwiPgogCiA8IS0tIGFwcGxpY2F0aW9ucyBhbmQgdXRpbGl0aWVzIC0tPgogPCFF TlRJVFkgY2x1c3RlcmRiICAgICAgICAgIFNZU1RFTSAiY2x1c3RlcmRiLnNnbWwiPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9iZWdpbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9iZWdp bi5zZ21sCmluZGV4IDAxNmIwMjE0ODcuLmEyNzk0NzYzYjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvYmVnaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2JlZ2luLnNnbWwKQEAg LTIxLDEzICsyMSwxNiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNp c2Rpdj4KIDxzeW5vcHNpcz4KLUJFR0lOIFsgV09SSyB8IFRSQU5TQUNUSU9OIF0gWyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gXQorQkVHSU4gWyBXT1JLIHwgVFJBTlNBQ1RJT04gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2V2ZW50PC9yZXBsYWNlYWJsZT4KIAog PHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25f bW9kZTwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAogICAgIElTT0xBVElPTiBM RVZFTCB7IFNFUklBTElaQUJMRSB8IFJFUEVBVEFCTEUgUkVBRCB8IFJFQUQgQ09NTUlUVEVEIHwg UkVBRCBVTkNPTU1JVFRFRCB9CiAgICAgUkVBRCBXUklURSB8IFJFQUQgT05MWQogICAgIFsgTk9U IF0gREVGRVJSQUJMRQorCis8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj53YWl0X2V2ZW50PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisgICAgQUZURVIgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl92YWx1ZTwvcmVwbGFjZWFibGU+IFsgV0lU SElOIG51bWJlcl9vZl9taWxsaXNlY29uZHMgXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lz ZGl2PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNnbWwKaW5kZXggNzRjY2Q3 ZTM0NS4uNDZhM2JjZjFhOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9zdGFydF90cmFu c2FjdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvc3RhcnRfdHJhbnNhY3Rpb24uc2dt bApAQCAtMjEsMTMgKzIxLDE2IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAgPHJlZnN5 bm9wc2lzZGl2PgogPHN5bm9wc2lzPgotU1RBUlQgVFJBTlNBQ1RJT04gWyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFssIC4uLl0g XQorU1RBUlQgVFJBTlNBQ1RJT04gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJh bnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+d2FpdF9ldmVudDwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2VhYmxl PiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBJU09MQVRJT04gTEVWRUwgeyBTRVJJQUxJWkFC TEUgfCBSRVBFQVRBQkxFIFJFQUQgfCBSRUFEIENPTU1JVFRFRCB8IFJFQUQgVU5DT01NSVRURUQg fQogICAgIFJFQUQgV1JJVEUgfCBSRUFEIE9OTFkKICAgICBbIE5PVCBdIERFRkVSUkFCTEUKKwor PHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF9ldmVudDwv cmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorICAgIEFGVEVSIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5sc25fdmFsdWU8L3JlcGxhY2VhYmxlPiBbIFdJVEhJTiBudW1iZXJfb2ZfbWls bGlzZWNvbmRzIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5z Z21sCmluZGV4IGUxMWI0YjYxMzAuLmE4M2ZmNDU1MWUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWZlcmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTIx Niw2ICsyMTYsNyBAQAogICAgJnVwZGF0ZTsKICAgICZ2YWN1dW07CiAgICAmdmFsdWVzOworICAg JndhaXQ7CiAKICA8L3JlZmVyZW5jZT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n cmVjb3ZlcnkuYwppbmRleCBjNjE1NjY2NjZhLi4wODM5OTQ1MmNlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUg ImJhY2t1cC9iYXNlYmFja3VwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQu aCIKICNpbmNsdWRlICJjb21tb24vZmlsZV91dGlscy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgInBnc3RhdC5oIgpAQCAtMTc4MCw2ICsxNzgxLDE1IEBAIFBlcmZvcm1XYWxS ZWNvdmVyeSh2b2lkKQogCQkJCWJyZWFrOwogCQkJfQogCisJCQkvKgorCQkJKiBJZiB3ZSByZXBs YXllZCBhbiBMU04gdGhhdCBzb21lb25lIHdhcyB3YWl0aW5nIGZvciwKKwkJCSogc2V0IGxhdGNo ZXMgaW4gc2hhcmVkIG1lbW9yeSBhcnJheSB0byBub3RpZnkgdGhlIHdhaXRlci4KKwkJCSovCisJ CQlpZiAoWExvZ1JlY292ZXJ5Q3RsLT5sYXN0UmVwbGF5ZWRFbmRSZWNQdHIgPj0gR2V0TWluV2Fp dCgpKQorCQkJeworCQkJCSBXYWl0U2V0TGF0Y2goWExvZ1JlY292ZXJ5Q3RsLT5sYXN0UmVwbGF5 ZWRFbmRSZWNQdHIpOworCQkJfQorCiAJCQkvKiBFbHNlLCB0cnkgdG8gZmV0Y2ggdGhlIG5leHQg V0FMIHJlY29yZCAqLwogCQkJcmVjb3JkID0gUmVhZFJlY29yZCh4bG9ncHJlZmV0Y2hlciwgTE9H LCBmYWxzZSwgcmVwbGF5VExJKTsKIAkJfSB3aGlsZSAocmVjb3JkICE9IE5VTEwpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9NYWtlZmlsZQppbmRleCA0OGY3MzQ4ZjkxLi5kOGY2OTY1ZDhjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtl ZmlsZQpAQCAtNjEsNiArNjEsNyBAQCBPQkpTID0gXAogCXZhY3V1bS5vIFwKIAl2YWN1dW1wYXJh bGxlbC5vIFwKIAl2YXJpYWJsZS5vIFwKLQl2aWV3Lm8KKwl2aWV3Lm8gXAorCXdhaXQubwogCiBp bmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21l c29uLmJ1aWxkCmluZGV4IDQyY2NlZDllYmUuLmVjNmFiNzcyMmEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21l c29uLmJ1aWxkCkBAIC01MCw0ICs1MCw1IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAg J3ZhY3V1bXBhcmFsbGVsLmMnLAogICAndmFyaWFibGUuYycsCiAgICd2aWV3LmMnLAorICAnd2Fp dC5jJywKICkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3dhaXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi41YmFhNmUyZWUzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv d2FpdC5jCkBAIC0wLDAgKzEsMzM4IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB3YWl0 LmMKKyAqCSAgSW1wbGVtZW50cyBXQUlUIEZPUiwgd2hpY2ggYWxsb3dzIHdhaXRpbmcgZm9yIGV2 ZW50cyBzdWNoIGFzCisgKgkgIHRpbWUgcGFzc2luZyBvciBMU04gaGF2aW5nIGJlZW4gcmVwbGF5 ZWQgb24gcmVwbGljYS4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMCwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMjAyMCwgUmVnZW50cyBvZiBQb3N0Z3Jlc1BybworICoKKyAqIElERU5USUZJQ0FUSU9O CisgKgkgIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYworICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCisKKyNpbmNsdWRlIDxmbG9hdC5oPgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNp bmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgorI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5j bHVkZSAiYWNjZXNzL3hsb2cuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNs dWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNs dWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2JhY2tlbmRpZC5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcG1zaWduYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9zaW52YWxhZHQuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1 ZGUgInV0aWxzL3BnX2xzbi5oIgorI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1 ZGUgImV4ZWN1dG9yL3NwaS5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKworLyog QWRkIHRvIC8gZGVsZXRlIGZyb20gc2hhcmVkIG1lbW9yeSBhcnJheSAqLworc3RhdGljIHZvaWQg QWRkRXZlbnQoWExvZ1JlY1B0ciBsc25fdG9fd2FpdCk7CitzdGF0aWMgdm9pZCBEZWxldGVFdmVu dCh2b2lkKTsKKworLyogU2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgKi8KK3R5cGVkZWYgc3RydWN0 Cit7CisJaW50CQkJYmFja2VuZF9tYXhpZDsKKwlwZ19hdG9taWNfdWludDY0CW1pbl9sc247CisJ c2xvY2tfdAkJbXV0ZXg7CisJWExvZ1JlY1B0cgl3YWl0ZWRfbHNuW0ZMRVhJQkxFX0FSUkFZX01F TUJFUl07Cit9IFdhaXRTdGF0ZTsKKworc3RhdGljIHZvbGF0aWxlIFdhaXRTdGF0ZSAqc3RhdGU7 CisKKy8qIEFkZCB0aGUgZXZlbnQgb2YgdGhlIGN1cnJlbnQgYmFja2VuZCB0byB0aGUgc2hhcmVk IG1lbW9yeSBhcnJheSAqLworc3RhdGljIHZvaWQKK0FkZEV2ZW50KFhMb2dSZWNQdHIgbHNuX3Rv X3dhaXQpCit7CisJU3BpbkxvY2tBY3F1aXJlKCZzdGF0ZS0+bXV0ZXgpOworCWlmIChzdGF0ZS0+ YmFja2VuZF9tYXhpZCA8IE15QmFja2VuZElkKQorCQlzdGF0ZS0+YmFja2VuZF9tYXhpZCA9IE15 QmFja2VuZElkOworCisJc3RhdGUtPndhaXRlZF9sc25bTXlCYWNrZW5kSWRdID0gbHNuX3RvX3dh aXQ7CisKKwlpZiAobHNuX3RvX3dhaXQgPCBzdGF0ZS0+bWluX2xzbi52YWx1ZSkKKwkJc3RhdGUt Pm1pbl9sc24udmFsdWUgPSBsc25fdG9fd2FpdDsKKwlTcGluTG9ja1JlbGVhc2UoJnN0YXRlLT5t dXRleCk7Cit9CisKKy8qCisgKiBEZWxldGUgZXZlbnQgb2YgdGhlIGN1cnJlbnQgYmFja2VuZCBm cm9tIHRoZSBzaGFyZWQgbWVtb3J5IGFycmF5LgorICoKKyAqIFRPRE86IENvbnNpZGVyIHN0YXRl IGNsZWFudXAgb24gYmFja2VuZCBmYWlsdXJlLgorICogQ2hlY2s6CisgKiAxKSBub21hbHxzbWFy dHxmYXN0fGltbWVkaWF0ZSBzdG9wCisgKiAyKSBTSUdLSUxMIGFuZCBTSUdURVJNCisgKi8KK3N0 YXRpYyB2b2lkCitEZWxldGVFdmVudCh2b2lkKQoreworCWludAkJCWk7CisJWExvZ1JlY1B0cgls c25fdG9fZGVsZXRlID0gc3RhdGUtPndhaXRlZF9sc25bTXlCYWNrZW5kSWRdOworCisJc3RhdGUt PndhaXRlZF9sc25bTXlCYWNrZW5kSWRdID0gSW52YWxpZFhMb2dSZWNQdHI7CisKKwlTcGluTG9j a0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisKKwkvKiBJZiB3ZSBuZWVkIHRvIGNob29zZSB0aGUg bmV4dCBtaW5fbHNuLCB1cGRhdGUgc3RhdGUtPm1pbl9sc24gKi8KKwlpZiAoc3RhdGUtPm1pbl9s c24udmFsdWUgPT0gbHNuX3RvX2RlbGV0ZSkKKwl7CisJCXN0YXRlLT5taW5fbHNuLnZhbHVlID0g UEdfVUlOVDY0X01BWDsKKwkJZm9yIChpID0gMjsgaSA8PSBzdGF0ZS0+YmFja2VuZF9tYXhpZDsg aSsrKQorCQkJaWYgKHN0YXRlLT53YWl0ZWRfbHNuW2ldICE9IEludmFsaWRYTG9nUmVjUHRyICYm CisJCQkJc3RhdGUtPndhaXRlZF9sc25baV0gPCBzdGF0ZS0+bWluX2xzbi52YWx1ZSkKKwkJCQlz dGF0ZS0+bWluX2xzbi52YWx1ZSA9IHN0YXRlLT53YWl0ZWRfbHNuW2ldOworCX0KKworCWlmIChz dGF0ZS0+YmFja2VuZF9tYXhpZCA9PSBNeUJhY2tlbmRJZCkKKwkJZm9yIChpID0gKE15QmFja2Vu ZElkKTsgaSA+PSAyOyBpLS0pCisJCQlpZiAoc3RhdGUtPndhaXRlZF9sc25baV0gIT0gSW52YWxp ZFhMb2dSZWNQdHIpCisJCQl7CisJCQkJc3RhdGUtPmJhY2tlbmRfbWF4aWQgPSBpOworCQkJCWJy ZWFrOworCQkJfQorCisJU3BpbkxvY2tSZWxlYXNlKCZzdGF0ZS0+bXV0ZXgpOworfQorCisvKgor ICogUmVwb3J0IGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBmb3IgV2FpdFN0 YXRlCisgKi8KK1NpemUKK1dhaXRTaG1lbVNpemUodm9pZCkKK3sKKwlTaXplCQlzaXplOworCisJ c2l6ZSA9IG9mZnNldG9mKFdhaXRTdGF0ZSwgd2FpdGVkX2xzbik7CisJc2l6ZSA9IGFkZF9zaXpl KHNpemUsIG11bF9zaXplKE1heEJhY2tlbmRzICsgMSwgc2l6ZW9mKFhMb2dSZWNQdHIpKSk7CisJ cmV0dXJuIHNpemU7Cit9CisKKy8qIEluaXQgYXJyYXkgb2YgZXZlbnRzIGluIHNoYXJlZCBtZW1v cnkgKi8KK3ZvaWQKK1dhaXRTaG1lbUluaXQodm9pZCkKK3sKKwlib29sCQlmb3VuZDsKKwl1aW50 MzIJCWk7CisKKwlzdGF0ZSA9IChXYWl0U3RhdGUgKikgU2htZW1Jbml0U3RydWN0KCJwZ193YWl0 X2xzbiIsCisJCQkJCQkJCQkJICBXYWl0U2htZW1TaXplKCksCisJCQkJCQkJCQkJICAmZm91bmQp OworCWlmICghZm91bmQpCisJeworCQlTcGluTG9ja0luaXQoJnN0YXRlLT5tdXRleCk7CisKKwkJ Zm9yIChpID0gMDsgaSA8IChNYXhCYWNrZW5kcyArIDEpOyBpKyspCisJCQlzdGF0ZS0+d2FpdGVk X2xzbltpXSA9IEludmFsaWRYTG9nUmVjUHRyOworCisJCXN0YXRlLT5iYWNrZW5kX21heGlkID0g MDsKKwkJc3RhdGUtPm1pbl9sc24udmFsdWUgPSBQR19VSU5UNjRfTUFYOworCX0KK30KKworLyog U2V0IGFsbCBsYXRjaGVzIGluIHNoYXJlZCBtZW1vcnkgdG8gc2lnbmFsIHRoYXQgbmV3IExTTiBo YXMgYmVlbiByZXBsYXllZCAqLwordm9pZAorV2FpdFNldExhdGNoKFhMb2dSZWNQdHIgY3VyX2xz bikKK3sKKwl1aW50MzIJCWk7CisJaW50IAkJYmFja2VuZF9tYXhpZDsKKwlQR1BST0MJICAgKmJh Y2tlbmQ7CisKKwlTcGluTG9ja0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisJYmFja2VuZF9tYXhp ZCA9IHN0YXRlLT5iYWNrZW5kX21heGlkOworCVNwaW5Mb2NrUmVsZWFzZSgmc3RhdGUtPm11dGV4 KTsKKworCWZvciAoaSA9IDI7IGkgPD0gYmFja2VuZF9tYXhpZDsgaSsrKQorCXsKKwkJYmFja2Vu ZCA9IEJhY2tlbmRJZEdldFByb2MoaSk7CisJCWlmIChzdGF0ZS0+d2FpdGVkX2xzbltpXSAhPSAw KQorCQl7CisJCQlpZiAoYmFja2VuZCAmJiBzdGF0ZS0+d2FpdGVkX2xzbltpXSA8PSBjdXJfbHNu KQorCQkJCVNldExhdGNoKCZiYWNrZW5kLT5wcm9jTGF0Y2gpOworCQl9CisJfQorfQorCisvKiBH ZXQgbWluaW1hbCBMU04gdGhhdCB3aWxsIGJlIG5leHQgKi8KK1hMb2dSZWNQdHIKK0dldE1pbldh aXQodm9pZCkKK3sKKwlyZXR1cm4gcGdfYXRvbWljX3JlYWRfdTY0KCZzdGF0ZS0+bWluX2xzbik7 Cit9CisKKy8qCisgKiBPbiBXQUlUIHVzZSBNeUxhdGNoIHRvIHdhaXQgdGlsbCBMU04gaXMgcmVw bGF5ZWQsCisgKiBwb3N0bWFzdGVyIGRpZXMgb3IgdGltZW91dCBoYXBwZW5zLgorICovCitpbnQK K1dhaXRVdGlsaXR5KFhMb2dSZWNQdHIgbHNuLCBjb25zdCBmbG9hdDggc2VjcykKK3sKKwlYTG9n UmVjUHRyCWN1cl9sc24gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCWludAkJCWxhdGNo X2V2ZW50czsKKwlmbG9hdDgJCWVuZHRpbWU7CisJdWludAkJcmVzID0gMDsKKworCWlmICghUmVj b3ZlcnlJblByb2dyZXNzKCkpCisJeworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCWVycm1zZygiV29y ayBvbmx5IGluIHN0YW5kYnkgbW9kZSIpKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKyNkZWZp bmUgR2V0Tm93RmxvYXQoKQkoKGZsb2F0OCkgR2V0Q3VycmVudFRpbWVzdGFtcCgpIC8gMTAwMDAw MC4wKQorCWVuZHRpbWUgPSBHZXROb3dGbG9hdCgpICsgc2VjczsKKworCWxhdGNoX2V2ZW50cyA9 IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRIOworCisJaWYgKGxzbiAhPSBJbnZhbGlk WExvZ1JlY1B0cikKKwl7CisJCS8qIEp1c3QgY2hlY2sgaWYgd2UgcmVhY2hlZCAqLworCQlpZiAo bHNuIDwgY3VyX2xzbiB8fCBzZWNzIDwgMCkKKwkJCXJldHVybiAobHNuIDwgY3VyX2xzbik7CisK KwkJbGF0Y2hfZXZlbnRzIHw9IFdMX0xBVENIX1NFVDsKKwkJQWRkRXZlbnQobHNuKTsKKwl9CisJ ZWxzZSBpZiAoIXNlY3MpCisJCXJldHVybiAxOworCisJZm9yICg7OykKKwl7CisJCWludAkJCXJj OworCQlmbG9hdDgJCWRlbGF5ID0gMDsKKwkJbG9uZwkJZGVsYXlfbXM7CisKKwkJLyogSWYgTFNO IGhhcyBiZWVuIHJlcGxheWVkICovCisJCWlmIChsc24gJiYgbHNuIDw9IGN1cl9sc24pCisJCQli cmVhazsKKworCQlpZiAoc2VjcyA+IDApCisJCQlkZWxheSA9IGVuZHRpbWUgLSBHZXROb3dGbG9h dCgpOworCQllbHNlIGlmIChzZWNzID09IDApCisJCQkvKgorCQkJKiBJZiB3ZSB3YWl0IGZvcmV2 ZXIsIHRoZW4gMSBtaW51dGUgdGltZW91dCB0byBjaGVjaworCQkJKiBmb3IgSW50ZXJ1cHRzLgor CQkJKi8KKwkJCWRlbGF5ID0gNjA7CisKKwkJaWYgKGRlbGF5ID4gMC4wKQorCQkJZGVsYXlfbXMg PSAobG9uZykgY2VpbChkZWxheSAqIDEwMDAuMCk7CisJCWVsc2UKKwkJCWJyZWFrOworCisJCS8q CisJCSAqIElmIHJlY2VpdmVkIGFuIGludGVycnVwdGlvbiBmcm9tIENIRUNLX0ZPUl9JTlRFUlJV UFRTLAorCQkgKiB0aGVuIGRlbGV0ZSB0aGUgY3VycmVudCBldmVudCBmcm9tIGFycmF5LgorCQkg Ki8KKwkJaWYgKEludGVycnVwdFBlbmRpbmcpCisJCXsKKwkJCWlmIChsc24gIT0gSW52YWxpZFhM b2dSZWNQdHIpCisJCQkJRGVsZXRlRXZlbnQoKTsKKwkJCVByb2Nlc3NJbnRlcnJ1cHRzKCk7CisJ CX0KKworCQkvKiBJZiBwb3N0bWFzdGVyIGRpZXMsIGZpbmlzaCBpbW1lZGlhdGVseSAqLworCQlp ZiAoIVBvc3RtYXN0ZXJJc0FsaXZlKCkpCisJCQlicmVhazsKKworCQlyYyA9IFdhaXRMYXRjaChN eUxhdGNoLCBsYXRjaF9ldmVudHMsIGRlbGF5X21zLAorCQkJCQkgICBXQUlUX0VWRU5UX0NMSUVO VF9SRUFEKTsKKworCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCisJCWlmIChsc24gJiYgcmMgJiBXTF9MQVRDSF9TRVQpCisJCQljdXJfbHNuID0gR2V0 WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwl9CisKKwlpZiAobHNuICE9IEludmFsaWRYTG9nUmVj UHRyKQorCQlEZWxldGVFdmVudCgpOworCisJaWYgKGxzbiAhPSBJbnZhbGlkWExvZ1JlY1B0ciAm JiBsc24gPiBjdXJfbHNuKQorCQllbG9nKE5PVElDRSwiTFNOIGlzIG5vdCByZWFjaGVkLiBUcnkg dG8gaW5jcmVhc2Ugd2FpdCB0aW1lLiIpOworCWVsc2UKKwkJcmVzID0gMTsKKworCXJldHVybiBy ZXM7Cit9CisKKy8qCisgKiBHZXQgdGhlIGFtb3VudCBvZiBzZWNvbmRzIGxlZnQgdGlsbCB0aGUg c3BlY2lmaWVkIHRpbWUuCisgKi8KK2Zsb2F0OAorV2FpdFRpbWVSZXNvbHZlKENvbnN0ICp0aW1l KQoreworCWludAkJCXJldDsKKwlmbG9hdDgJCXZhbDsKKwlPaWQJCQl0eXBlc1tdID0geyB0aW1l LT5jb25zdHR5cGUgfTsKKwlEYXR1bQkJdmFsdWVzW10gPSB7IHRpbWUtPmNvbnN0dmFsdWUgfTsK KwljaGFyCQludWxsc1tdID0geyAiICIgfTsKKwlEYXR1bQkJcmVzdWx0OworCWJvb2wJCWlzbnVs bDsKKworCVNQSV9jb25uZWN0KCk7CisKKwlpZiAodGltZS0+Y29uc3R0eXBlID09IDEwODMpCisJ CXJldCA9IFNQSV9leGVjdXRlX3dpdGhfYXJncygic2VsZWN0IGV4dHJhY3QgKGVwb2NoIGZyb20g KCQxIC0gbm93KCk6OnRpbWUpKSIsCisJCQkJCQkJCQkxLCB0eXBlcywgdmFsdWVzLCBudWxscywg dHJ1ZSwgMCk7CisJZWxzZSBpZiAodGltZS0+Y29uc3R0eXBlID09IDEyNjYpCisJCXJldCA9IFNQ SV9leGVjdXRlX3dpdGhfYXJncygic2VsZWN0IGV4dHJhY3QgKGVwb2NoIGZyb20gKHRpbWV6b25l KCdVVEMnLCQxKTo6dGltZSAtIHRpbWV6b25lKCdVVEMnLCBub3coKTo6dGltZXR6KTo6dGltZSkp IiwKKwkJCQkJCQkJCTEsIHR5cGVzLCB2YWx1ZXMsIG51bGxzLCB0cnVlLCAwKTsKKwllbHNlCisJ CXJldCA9IFNQSV9leGVjdXRlX3dpdGhfYXJncygic2VsZWN0IGV4dHJhY3QgKGVwb2NoIGZyb20g KCQxIC0gbm93KCkpKSIsCisJCQkJCQkJCQkxLCB0eXBlcywgdmFsdWVzLCBudWxscywgdHJ1ZSwg MCk7CisKKwlBc3NlcnQocmV0ID49IDApOworCXJlc3VsdCA9IFNQSV9nZXRiaW52YWwoU1BJX3R1 cHRhYmxlLT52YWxzWzBdLAorCQkJCQkJICAgU1BJX3R1cHRhYmxlLT50dXBkZXNjLAorCQkJCQkJ ICAgMSwgJmlzbnVsbCk7CisKKwlBc3NlcnQoIWlzbnVsbCk7CisJdmFsID0gRGF0dW1HZXRGbG9h dDgocmVzdWx0KTsKKworCWVsb2coSU5GTywgInRpbWU6ICVmIiwgdmFsKTsKKworCVNQSV9maW5p c2goKTsKKwlyZXR1cm4gdmFsOworfQorCisvKiBJbXBsZW1lbnRhdGlvbiBvZiBXQUlUIEZPUiAq LworaW50CitXYWl0TWFpbihXYWl0U3RtdCAqc3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KQorewor CVR1cGxlRGVzYwl0dXBkZXNjOworCVR1cE91dHB1dFN0YXRlICp0c3RhdGU7CisJWExvZ1JlY1B0 cglsc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlpbnQJCXJlcyA9IDA7CisKKwlsc24gPSBEYXR1 bUdldExTTihEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2xzbl9pbiwKKwkJCQkJCQkJCQkJCSBDU3Ry aW5nR2V0RGF0dW0oc3RtdC0+bHNuKSkpOworCXJlcyA9IFdhaXRVdGlsaXR5KGxzbiwgc3RtdC0+ ZGVsYXkpOworCisJLyogTmVlZCBhIHR1cGxlIGRlc2NyaXB0b3IgcmVwcmVzZW50aW5nIGEgc2lu Z2xlIFRFWFQgY29sdW1uICovCisJdHVwZGVzYyA9IENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKDEp OworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgIkxTTiByZWFj aGVkIiwgVEVYVE9JRCwgLTEsIDApOworCS8qIFByZXBhcmUgZm9yIHByb2plY3Rpb24gb2YgdHVw bGVzICovCisJdHN0YXRlID0gYmVnaW5fdHVwX291dHB1dF90dXBkZXNjKGRlc3QsIHR1cGRlc2Ms ICZUVFNPcHNNaW5pbWFsVHVwbGUpOworCisJLyogU2VuZCBpdCAqLworCWRvX3RleHRfb3V0cHV0 X29uZWxpbmUodHN0YXRlLCByZXM/InQiOiJmIik7CisJZW5kX3R1cF9vdXRwdXQodHN0YXRlKTsK KwlyZXR1cm4gcmVzOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUu YyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggN2ExZGZiNjM2NC4uNWYzYTdl ZGY2YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC00MDUsNyArNDA1LDYgQEAgdHJhbnNmb3JtU3Rt dChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSkKIAkJCXJlc3VsdCA9IHRyYW5z Zm9ybUNhbGxTdG10KHBzdGF0ZSwKIAkJCQkJCQkJCSAgIChDYWxsU3RtdCAqKSBwYXJzZVRyZWUp OwogCQkJYnJlYWs7Ci0KIAkJZGVmYXVsdDoKIAogCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGQ2MzFh Yzg5YTkuLjIxNWRhYmZkYjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRp YyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlh c2VzLCBOb2RlICpxdWVyeSk7CiAJCVNlY0xhYmVsU3RtdCBTZWxlY3RTdG10IFRyYW5zYWN0aW9u U3RtdCBUcmFuc2FjdGlvblN0bXRMZWdhY3kgVHJ1bmNhdGVTdG10CiAJCVVubGlzdGVuU3RtdCBV cGRhdGVTdG10IFZhY3V1bVN0bXQKIAkJVmFyaWFibGVSZXNldFN0bXQgVmFyaWFibGVTZXRTdG10 IFZhcmlhYmxlU2hvd1N0bXQKLQkJVmlld1N0bXQgQ2hlY2tQb2ludFN0bXQgQ3JlYXRlQ29udmVy c2lvblN0bXQKKwkJVmlld1N0bXQgV2FpdFN0bXQgQ2hlY2tQb2ludFN0bXQgQ3JlYXRlQ29udmVy c2lvblN0bXQKIAkJRGVhbGxvY2F0ZVN0bXQgUHJlcGFyZVN0bXQgRXhlY3V0ZVN0bXQKIAkJRHJv cE93bmVkU3RtdCBSZWFzc2lnbk93bmVkU3RtdAogCQlBbHRlclRTQ29uZmlndXJhdGlvblN0bXQg QWx0ZXJUU0RpY3Rpb25hcnlTdG10CkBAIC02NDQsNiArNjQ0LDggQEAgc3RhdGljIE5vZGUgKm1h a2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKICV0eXBlIDxwYXJ0Ym91bmRzcGVjPiBQYXJ0aXRpb25Cb3VuZFNwZWMKICV0eXBl IDxsaXN0PgkJaGFzaF9wYXJ0Ym91bmQKICV0eXBlIDxkZWZlbHQ+CQloYXNoX3BhcnRib3VuZF9l bGVtCisldHlwZSA8aXZhbD4JCXdhaXRfdGltZQorJXR5cGUgPG5vZGU+CQl3YWl0X2ZvcgogCiAl dHlwZSA8bm9kZT4JanNvbl9mb3JtYXRfY2xhdXNlX29wdAogCQkJCWpzb25fdmFsdWVfZXhwcgpA QCAtMTEwMiw2ICsxMTA0LDcgQEAgc3RtdDoKIAkJCXwgVmFyaWFibGVTZXRTdG10CiAJCQl8IFZh cmlhYmxlU2hvd1N0bXQKIAkJCXwgVmlld1N0bXQKKwkJCXwgV2FpdFN0bXQKIAkJCXwgLypFTVBU WSovCiAJCQkJeyAkJCA9IE5VTEw7IH0KIAkJOwpAQCAtMTA5MTEsMTIgKzEwOTE0LDEzIEBAIFRy YW5zYWN0aW9uU3RtdDoKIAkJCQkJbi0+bG9jYXRpb24gPSAtMTsKIAkJCQkJJCQgPSAoTm9kZSAq KSBuOwogCQkJCX0KLQkJCXwgU1RBUlQgVFJBTlNBQ1RJT04gdHJhbnNhY3Rpb25fbW9kZV9saXN0 X29yX2VtcHR5CisJCQl8IFNUQVJUIFRSQU5TQUNUSU9OIHRyYW5zYWN0aW9uX21vZGVfbGlzdF9v cl9lbXB0eSB3YWl0X2ZvcgogCQkJCXsKIAkJCQkJVHJhbnNhY3Rpb25TdG10ICpuID0gbWFrZU5v ZGUoVHJhbnNhY3Rpb25TdG10KTsKIAogCQkJCQluLT5raW5kID0gVFJBTlNfU1RNVF9TVEFSVDsK IAkJCQkJbi0+b3B0aW9ucyA9ICQzOworCQkJCQluLT53YWl0ID0gJDQ7CiAJCQkJCW4tPmxvY2F0 aW9uID0gLTE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xMTAxNSwxMiArMTEw MTksMTMgQEAgVHJhbnNhY3Rpb25TdG10OgogCQk7CiAKIFRyYW5zYWN0aW9uU3RtdExlZ2FjeToK LQkJCUJFR0lOX1Agb3B0X3RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uX21vZGVfbGlzdF9vcl9lbXB0 eQorCQkJQkVHSU5fUCBvcHRfdHJhbnNhY3Rpb24gdHJhbnNhY3Rpb25fbW9kZV9saXN0X29yX2Vt cHR5IHdhaXRfZm9yCiAJCQkJewogCQkJCQlUcmFuc2FjdGlvblN0bXQgKm4gPSBtYWtlTm9kZShU cmFuc2FjdGlvblN0bXQpOwogCiAJCQkJCW4tPmtpbmQgPSBUUkFOU19TVE1UX0JFR0lOOwogCQkJ CQluLT5vcHRpb25zID0gJDM7CisJCQkJCW4tPndhaXQgPSAkNDsKIAkJCQkJbi0+bG9jYXRpb24g PSAtMTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KQEAgLTE1ODU0LDYgKzE1ODU5LDM3 IEBAIHhtbF9wYXNzaW5nX21lY2g6CiAJCQl8IEJZIFZBTFVFX1AKIAkJOwogCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqCisgKgkJUVVFUlk6CisgKgkJCQlBRlRFUiBMU05fdmFsdWUgW1dJVEhJ TiBkZWxheSB0aW1lc3RhbXBdCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV2FpdFN0bXQ6 CisJCQlBRlRFUiBTY29uc3Qgd2FpdF90aW1lCisJCQkJeworCQkJCQlXYWl0U3RtdCAqbiA9IG1h a2VOb2RlKFdhaXRTdG10KTsKKwkJCQkJbi0+bHNuID0gJDI7CisJCQkJCW4tPmRlbGF5ID0gJDM7 CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJOword2FpdF9mb3I6CisJCQlBRlRFUiBT Y29uc3Qgd2FpdF90aW1lCisJCQkJeworCQkJCQlXYWl0U3RtdCAqbiA9IG1ha2VOb2RlKFdhaXRT dG10KTsKKwkJCQkJbi0+bHNuID0gJDI7CisJCQkJCW4tPmRlbGF5ID0gJDM7CisJCQkJCSQkID0g KE5vZGUgKiluOworCQkJCX0KKwkJCXwgLyogRU1QVFkgKi8JCXsgJCQgPSBOVUxMOyB9CisJCTsK Kword2FpdF90aW1lOgorCQkJV0lUSElOIEljb25zdAkJeyAkJCA9ICQyOyB9CisJCQl8IC8qIEVN UFRZICovICAgICAgICAgICB7ICQkID0gMDsgfQorCQk7CisKIAogLyoKICAqIEFnZ3JlZ2F0ZSBk ZWNvcmF0aW9uIGNsYXVzZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lw Y2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwppbmRleCAyMjI1YTRhNmU2Li4w MzY0ZjVkMTk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dwcmVmZXRjaGVyLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNv dmVyeS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCisjaW5jbHVkZSAiY29tbWFuZHMv d2FpdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2lu Y2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgpAQCAtMTQ1LDYgKzE0Niw3IEBAIENhbGN1 bGF0ZVNobWVtU2l6ZShpbnQgKm51bV9zZW1hcGhvcmVzKQogCXNpemUgPSBhZGRfc2l6ZShzaXpl LCBBc3luY1NobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU3RhdHNTaG1lbVNp emUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRFdmVudEV4dGVuc2lvblNobWVtU2l6 ZSgpKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgV2FpdFNobWVtU2l6ZSgpKTsKICNpZmRlZiBF WEVDX0JBQ0tFTkQKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2htZW1CYWNrZW5kQXJyYXlTaXpl KCkpOwogI2VuZGlmCkBAIC0yMzcsNiArMjM5LDExIEBAIENyZWF0ZVNoYXJlZE1lbW9yeUFuZFNl bWFwaG9yZXModm9pZCkKIAkvKiBJbml0aWFsaXplIHN1YnN5c3RlbXMgKi8KIAlDcmVhdGVPckF0 dGFjaFNobWVtU3RydWN0cygpOwogCisJLyoKKwkgKiBJbml0IGFycmF5IG9mIExhdGNoZXMgaW4g c2hhcmVkIG1lbW9yeSBmb3Igd2FpdCBsc24KKwkgKi8KKwlXYWl0U2htZW1Jbml0KCk7CisKICNp ZmRlZiBFWEVDX0JBQ0tFTkQKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0 aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4IDM2NmEyN2FlOGUuLjJh YmUzOTRmYWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC0xNSw2ICsxNSw3IEBACiAgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgiCisjaW5jbHVkZSA8ZmxvYXQuaD4KIAog I2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVsb3B0 aW9ucy5oIgpAQCAtNTksNiArNjAsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3VzZXIuaCIKICNp bmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy92aWV3LmgiCisj aW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgInBhcnNlci9wYXJzZV91dGlsY21kLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dyaXRl ci5oIgpAQCAtNzIsNiArNzQsOSBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVk ZSAiZXhlY3V0b3Ivc3BpLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1 ZGUgInV0aWxzL3BnX2xzbi5oIgogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9s IGluIFByb2Nlc3NVdGlsaXR5KCkgKi8KIFByb2Nlc3NVdGlsaXR5X2hvb2tfdHlwZSBQcm9jZXNz VXRpbGl0eV9ob29rID0gTlVMTDsKQEAgLTI3Miw2ICsyNzcsNyBAQCBDbGFzc2lmeVV0aWxpdHlD b21tYW5kQXNSZWFkT25seShOb2RlICpwYXJzZXRyZWUpCiAJCWNhc2UgVF9Mb2FkU3RtdDoKIAkJ Y2FzZSBUX1ByZXBhcmVTdG10OgogCQljYXNlIFRfVW5saXN0ZW5TdG10OgorCQljYXNlIFRfV2Fp dFN0bXQ6CiAJCWNhc2UgVF9WYXJpYWJsZVNldFN0bXQ6CiAJCQl7CiAJCQkJLyoKQEAgLTYxMiw2 ICs2MTgsMTEgQEAgc3RhbmRhcmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAog CQkJCQljYXNlIFRSQU5TX1NUTVRfU1RBUlQ6CiAJCQkJCQl7CiAJCQkJCQkJTGlzdENlbGwgICAq bGM7CisJCQkJCQkJV2FpdFN0bXQgICAqd2FpdHN0bXQgPSAoV2FpdFN0bXQgKikgc3RtdC0+d2Fp dDsKKworCQkJCQkJCS8qIElmIG5lZWRlZCB0byBXQUlUIEZPUiBzb21ldGhpbmcgYnV0IGZhaWxl ZCAqLworCQkJCQkJCWlmIChzdG10LT53YWl0ICYmIFdhaXRNYWluKHdhaXRzdG10LCBkZXN0KSA9 PSAwKQorCQkJCQkJCQlicmVhazsKIAogCQkJCQkJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOwog CQkJCQkJCWZvcmVhY2gobGMsIHN0bXQtPm9wdGlvbnMpCkBAIC0xMDY5LDYgKzEwODAsMTMgQEAg c3RhbmRhcmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJCWJyZWFrOwog CQkJfQogCisJCWNhc2UgVF9XYWl0U3RtdDoKKwkJCXsKKwkJCQlXYWl0U3RtdCAgICpzdG10ID0g KFdhaXRTdG10ICopIHBhcnNldHJlZTsKKwkJCQlXYWl0TWFpbihzdG10LCBkZXN0KTsKKwkJCQli cmVhazsKKwkJCX0KKwogCQlkZWZhdWx0OgogCQkJLyogQWxsIG90aGVyIHN0YXRlbWVudCB0eXBl cyBoYXZlIGV2ZW50IHRyaWdnZXIgc3VwcG9ydCAqLwogCQkJUHJvY2Vzc1V0aWxpdHlTbG93KHBz dGF0ZSwgcHN0bXQsIHF1ZXJ5U3RyaW5nLApAQCAtMjg0Nyw2ICsyODY1LDEwIEBAIENyZWF0ZUNv bW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJdGFnID0gQ01EVEFHX05PVElGWTsKIAkJCWJy ZWFrOwogCisJCWNhc2UgVF9XYWl0U3RtdDoKKwkJCXRhZyA9IENNRFRBR19XQUlUOworCQkJYnJl YWs7CisKIAkJY2FzZSBUX0xpc3RlblN0bXQ6CiAJCQl0YWcgPSBDTURUQUdfTElTVEVOOwogCQkJ YnJlYWs7CkBAIC0zNDk1LDYgKzM1MTcsMTAgQEAgR2V0Q29tbWFuZExvZ0xldmVsKE5vZGUgKnBh cnNldHJlZSkKIAkJCWxldiA9IExPR1NUTVRfQUxMOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX1dh aXRTdG10OgorCQkJbGV2ID0gTE9HU1RNVF9BTEw7CisJCQlicmVhazsKKwogCQljYXNlIFRfTGlz dGVuU3RtdDoKIAkJCWxldiA9IExPR1NUTVRfQUxMOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDI3MDE2MGQ0NAotLS0gL2Rl di9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXQuaApAQCAtMCwwICsxLDI2IEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB3YWl0LmgKKyAqCSAgcHJvdG90eXBlcyBmb3Ig Y29tbWFuZHMvd2FpdC5jCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMTYs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDIwMTYsIFJlZ2VudHMgb2YgUG9zdGdyZXNQUk8KKyAqCisgKiBzcmMvaW5jbHVkZS9j b21tYW5kcy93YWl0LmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBXQUlU X0gKKyNkZWZpbmUgV0FJVF9ICisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJ0Y29w L2Rlc3QuaCIKKworZXh0ZXJuIGludCBXYWl0VXRpbGl0eShYTG9nUmVjUHRyIGxzbiwgY29uc3Qg ZmxvYXQ4IGRlbGF5KTsKK2V4dGVybiBTaXplIFdhaXRTaG1lbVNpemUodm9pZCk7CitleHRlcm4g dm9pZCBXYWl0U2htZW1Jbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgV2FpdFNldExhdGNoKFhMb2dS ZWNQdHIgY3VyX2xzbik7CitleHRlcm4gWExvZ1JlY1B0ciBHZXRNaW5XYWl0KHZvaWQpOworZXh0 ZXJuIGZsb2F0OCBXYWl0VGltZVJlc29sdmUoQ29uc3QgKnRpbWUpOworZXh0ZXJuIGludCBXYWl0 TWFpbihXYWl0U3RtdCAqc3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KTsKKworI2VuZGlmICAgLyog V0FJVF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggZTQ5NDMwOWRhOC4uY2M2YWIzYjcz ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMzUyNCw2ICszNTI0LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgVHJhbnNhY3Rpb25TdG10CiAJLyogZm9yIHR3by1waGFzZS1jb21taXQgcmVsYXRlZCBj b21tYW5kcyAqLwogCWNoYXIJICAgKmdpZCBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9y ZSk7CiAJYm9vbAkJY2hhaW47CQkJLyogQU5EIENIQUlOIG9wdGlvbiAqLworCU5vZGUJCSp3YWl0 OwkJCS8qIHdhaXQgbHNuIGNsYXVzZSAqLwogCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1 bmtub3duICovCiAJaW50CQkJbG9jYXRpb24gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9sb2Nh dGlvbik7CiB9IFRyYW5zYWN0aW9uU3RtdDsKQEAgLTQwNzUsNCArNDA3NiwxNiBAQCB0eXBlZGVm IHN0cnVjdCBEcm9wU3Vic2NyaXB0aW9uU3RtdAogCURyb3BCZWhhdmlvciBiZWhhdmlvcjsJCS8q IFJFU1RSSUNUIG9yIENBU0NBREUgYmVoYXZpb3IgKi8KIH0gRHJvcFN1YnNjcmlwdGlvblN0bXQ7 CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlBRlRFUiBTdGF0ZW1lbnQgKyBBRlRF UiBjbGF1c2Ugb2YgQkVHSU4gc3RhdGVtZW50CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KKwordHlwZWRlZiBzdHJ1Y3QgV2FpdFN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCWNoYXIJ ICAgKmxzbjsJCS8qIExTTiAqLworCWludAkJCWRlbGF5OwkJLyogVElNRU9VVCAqLworfSBXYWl0 U3RtdDsKKwogI2VuZGlmCQkJCQkJCS8qIFBBUlNFTk9ERVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmggYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3Qu aAppbmRleCAzMjBlZTkxNTEyLi43ZmQ2OWUxYzdlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90 Y29wL2NtZHRhZ2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaApAQCAt MjE3LDMgKzIxNyw0IEBAIFBHX0NNRFRBRyhDTURUQUdfVFJVTkNBVEVfVEFCTEUsICJUUlVOQ0FU RSBUQUJMRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX1VOTElTVEVO LCAiVU5MSVNURU4iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19VUERB VEUsICJVUERBVEUiLCBmYWxzZSwgZmFsc2UsIHRydWUpCiBQR19DTURUQUcoQ01EVEFHX1ZBQ1VV TSwgIlZBQ1VVTSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1dBSVQs ICJBRlRFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNv dmVyeS90LzA0MF9iZWdpbl9hZnRlci5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX2JlZ2lu X2FmdGVyLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmIyMmU2MzYw M2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MF9iZWdpbl9hZnRl ci5wbApAQCAtMCwwICsxLDg2IEBACisjIENoZWNrcyB3YWl0aW5nIGZvciBsc24gb24gc3RhbmRi eSBBRlRFUgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9y ZTsKKworIyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQorbXkgJG5vZGVfcHJpbWFyeSA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworJG5vZGVfcHJpbWFyeS0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyMgQW5k IHNvbWUgY29udGVudCBhbmQgdGFrZSBhIGJhY2t1cAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB3YWl0X3Rlc3QgQVMgU0VMRUNUIGdlbmVyYXRl X3NlcmllcygxLDEwKSBBUyBhIik7CitteSAkYmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKyRu b2RlX3ByaW1hcnktPmJhY2t1cCgkYmFja3VwX25hbWUpOworCisjIENyZWF0ZSBhIHN0cmVhbWlu ZyBzdGFuZGJ5IHdpdGggYSAxIHNlY29uZCBkZWxheSBmcm9tIHRoZSBiYWNrdXAKK215ICRub2Rl X3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnknKTsKK215 ICRkZWxheSAgICAgICAgPSAxOworJG5vZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgkbm9k ZV9wcmltYXJ5LCAkYmFja3VwX25hbWUsCisJaGFzX3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3N0 YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcVsKKwlyZWNvdmVyeV9taW5f YXBwbHlfZGVsYXkgPSAnJHtkZWxheX1zJworXSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKwor CisKKyMgTWFrZSBzdXJlIHRoYXQgQUZURVIgd29ya3M6IGFkZCBuZXcgY29udGVudCB0byBwcmlt YXJ5IGFuZCBtZW1vcml6ZQorIyBwcmltYXJ5J3MgbmV3IExTTiwgdGhlbiB3YWl0IGZvciBwcmlt YXJ5J3MgTFNOIG9uIHN0YW5kYnkuIFByb3ZlIHRoYXQgQUZURVIgaXMKKyMgYWJsZSB0byBzZXR1 cCBhbiBpbmZpbml0ZSB3YWl0aW5nIGxvb3AgYW5kIGV4aXQgaXQgaWYgZ2l2ZW4gbm8gd2FpdCB0 aW1lb3V0LgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJ TlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygxMSwgMjApKSIpOworbXkgJGxz bjEgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJy ZW50X3dhbF9sc24oKSIpOworJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJC RUdJTiBBRlRFUiAnJGxzbjEnIik7CisKKyMgR2V0IHRoZSBjdXJyZW50IExTTiBvbiBzdGFuZGJ5 IGFuZCBtYWtlIHN1cmUgaXQncyB0aGUgc2FtZSBhcyBwcmltYXJ5J3MgTFNOCitteSAkbHNuX3N0 YW5kYnkgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBn X2xhc3Rfd2FsX3JlcGxheV9sc24oKSIpOworbXkgJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5k YnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9zdGFu ZGJ5Jzo6cGdfbHNuLCAnJGxzbjEnOjpwZ19sc24pIik7CitvaygkY29tcGFyZV9sc25zIGVxIDAs ICJzdGFuZGJ5IHJlYWNoZWQgdGhlIHNhbWUgTFNOIGFzIHByaW1hcnkgQUZURVIiKTsKKworCisK KyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisjIFRPRE86IHJlbW92ZSB0aGlzIHRlc3QgaWYgd2Ug cmVtb3ZlIHRoZSBzdGFuZGFsb25lICJBRlRFUiIgY29tbWFuZAorIz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKyMgV2UgbmVlZCB0byBjaGVjayB0aGF0IEFGVEVSIHdvcmtzIGZpbmUgaW5zaWRlIHRy YW5zYWN0aW9ucy4gRm9yIHRoYXQsIGxldCdzCisjIGdldCB0d28gTFNOcyB0aGF0IHdpbGwgY29y cmVzcG9uZCB0byB0d28gZGlmZmVyZW50IG1heCB2YWx1ZXMgaW4gb3VyIHRhYmxlLgorJG5vZGVf cHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBW QUxVRVMgKGdlbmVyYXRlX3NlcmllcygzMSwgNDApKSIpOworbXkgJGxzbjMgPSAkbm9kZV9wcmlt YXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIp OworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdh aXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcyg0MSwgNTApKSIpOworbXkgJGxzbjQgPSAk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dh bF9sc24oKSIpOworCisjIEJlZm9yZSBzdGFydGluZyB0cmFuc2FjdGlvbiwgQUZURVIgd2hpY2gg ZW5zdXJlcyBhIG1heCB2YWx1ZSBvZiA0MC4KKyMgSW5zaWRlIHRoZSB0cmFuc2FjdGlvbiwgQUZU RVIgdGhhdCBlbnN1cmVzIGEgbWF4IHZhbHVlIG9mIDUwLgorIyBEdWUgdG8gSVNPTEFUSU9OIExF VkVMIFJFUEVBVEFCTEUgUkVBRCwgd2Ugc2hvdWxkIE5PVCBzZWUgdGhlIG5ldyBtYXggdmFsdWUu CitteSAkc3RhbmRieV9yZXN1bHRzID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxWworCUJFR0lOIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxF IFJFQUQgQUZURVIgJyRsc24zJzsKKwlTRUxFQ1QgbWF4KGEpIEZST00gd2FpdF90ZXN0OworCUJF R0lOIEFGVEVSICckbHNuNCc7CisJU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKTsKKwlT RUxFQ1QgbWF4KGEpIEZST00gd2FpdF90ZXN0OworCUNPTU1JVDsKK10pOworCisjIE1ha2Ugc3Vy ZSB0aGF0IHdlIGluZGVlZCByZWFjaCBwcmltYXJ5J3MgbGFzdCBMU04gaW5zaWRlIHRoZSB0cmFu c2FjdGlvbi4KKyMgRm9yIHRoYXQsIGNoZWNrIHRoYXQgY2FsbGluZyBwZ19sYXN0X3dhbF9yZXBs YXlfbHNuIHJldHVybmVkIHRoYXQgTFNOLgorbXkgJGxhc3RfbHNuX3JlYWNoZWQgPSAkc3RhbmRi eV9yZXN1bHRzID1+IC8kbHNuNC87CitvaygkbGFzdF9sc25fcmVhY2hlZCwgIkFGVEVSIHdvcmtz IGluc2lkZSBhIHRyYW5zYWN0aW9uIik7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBkb2Vz bid0IGJyZWFrIGFuZCBzaG93IHVzIHRoZSBuZXcgbWF4IHZhbHVlIGFmdGVyIEFGVEVSLgorIyBG b3IgdGhhdCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9sZGVyIG1heCB2YWx1ZSBpcyByZXBlYXRlZCB0 d2ljZSBpbiB0aGUgcmVzdWx0cy4KK215ICRjb3VudCA9ICgpID0gJHN0YW5kYnlfcmVzdWx0cyA9 fiAvNDAvZzsKK29rKCRjb3VudCBlcSAyLCAidHJhbnNhY3Rpb24gaXNvbGF0aW9uIGxldmVsIGRv ZXNuJ3QgZ2V0IGJyb2tlbiBkdWUgdG8gQUZURVIiKTsKKworJG5vZGVfc3RhbmRieS0+c3RvcDsK KyRub2RlX3ByaW1hcnktPnN0b3A7Citkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDQxX2FmdGVyLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDFfYWZ0 ZXIucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDgwYmE2YjMzYgot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQxX2FmdGVyLnBsCkBAIC0w LDAgKzEsOTkgQEAKKyMgQ2hlY2tzIHdhaXRpbmcgZm9yIGxzbiBvbiBzdGFuZGJ5IEFGVEVSCit1 c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl cjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjIElu aXRpYWxpemUgcHJpbWFyeSBub2RlCitteSAkbm9kZV9wcmltYXJ5ID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5Jyk7Ciskbm9kZV9wcmltYXJ5LT5pbml0KGFsbG93c19z dHJlYW1pbmcgPT4gMSk7Ciskbm9kZV9wcmltYXJ5LT5zdGFydDsKKworIyBBbmQgc29tZSBjb250 ZW50IGFuZCB0YWtlIGEgYmFja3VwCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFRBQkxFIHdhaXRfdGVzdCBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEs MTApIEFTIGEiKTsKK215ICRiYWNrdXBfbmFtZSA9ICdteV9iYWNrdXAnOworJG5vZGVfcHJpbWFy eS0+YmFja3VwKCRiYWNrdXBfbmFtZSk7CisKKyMgQ3JlYXRlIGEgc3RyZWFtaW5nIHN0YW5kYnkg d2l0aCBhIDEgc2Vjb25kIGRlbGF5IGZyb20gdGhlIGJhY2t1cAorbXkgJG5vZGVfc3RhbmRieSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieScpOworbXkgJGRlbGF5ICAg ICAgICA9IDI7Ciskbm9kZV9zdGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKCRub2RlX3ByaW1hcnks ICRiYWNrdXBfbmFtZSwKKwloYXNfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfc3RhbmRieS0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHFxWworCXJlY292ZXJ5X21pbl9hcHBseV9kZWxh eSA9ICcke2RlbGF5fXMnCitdKTsKKyRub2RlX3N0YW5kYnktPnN0YXJ0OworCisKKworIyBNYWtl IHN1cmUgdGhhdCBBRlRFUiB3b3JrczogYWRkIG5ldyBjb250ZW50IHRvIHByaW1hcnkgYW5kIG1l bW9yaXplCisjIHByaW1hcnkncyBuZXcgTFNOLCB0aGVuIHdhaXQgZm9yIHByaW1hcnkncyBMU04g b24gc3RhbmRieS4gUHJvdmUgdGhhdCBBRlRFUiBpcworIyBhYmxlIHRvIHNldHVwIGFuIGluZmlu aXRlIHdhaXRpbmcgbG9vcCBhbmQgZXhpdCBpdCBpZiBnaXZlbiBubyB3YWl0IHRpbWVvdXQuCisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90 ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDExLCAyMCkpIik7CitteSAkbHNuMSA9ICRub2Rl X3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xz bigpIik7Ciskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFGVEVSICckbHNu MSciKTsKKworIyBHZXQgdGhlIGN1cnJlbnQgTFNOIG9uIHN0YW5kYnkgYW5kIG1ha2Ugc3VyZSBp dCdzIHRoZSBzYW1lIGFzIHByaW1hcnkncyBMU04KK215ICRsc25fc3RhbmRieSA9ICRub2RlX3N0 YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbGFzdF93YWxfcmVwbGF5 X2xzbigpIik7CitteSAkY29tcGFyZV9sc25zID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sc25fY21wKCckbHNuX3N0YW5kYnknOjpwZ19sc24sICck bHNuMSc6OnBnX2xzbikiKTsKK29rKCRjb21wYXJlX2xzbnMgZXEgMCwgInN0YW5kYnkgcmVhY2hl ZCB0aGUgc2FtZSBMU04gYXMgcHJpbWFyeSBBRlRFUiIpOworCisKKworIyBDaGVjayB0aGF0IHRp bWVvdXRzIHdvcmsgb24gdGhlaXIgb3duIGFuZCBsZXQgdXMgd2FpdCBmb3Igc3BlY2lmaWVkIHRp bWUgKDFzKQorbXkgJGN1cnJlbnRfdGltZSA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIG5vdygpIik7CitteSAkb25lX3NlY29uZCA9IDEwMDA7ICMgaW4gbWls bGlzZWNvbmRzCitteSAkc3RhcnRfdGltZSA9IHRpbWUoKTsKKworIyBOb3csIGNoZWNrIHRoYXQg dGltZW91dHMgd29yayBhcyBleHBlY3RlZCB3aGVuIHdhaXRpbmcgZm9yIExTTgorJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxV RVMgKGdlbmVyYXRlX3NlcmllcygyMSwgMzApKSIpOworbXkgJGxzbjIgPSAkbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOwor bXkgJHJlYWNoZWRfbHNuID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkFGVEVSICckbHNuMicgV0lUSElOIDEiKTsKK29rKCRyZWFjaGVkX2xzbiBlcSAiZiIsICJBRlRF UiBkb2Vzbid0IHJlYWNoIExTTiBpZiBnaXZlbiB0b28gbGl0dGxlIHdhaXQgdGltZSIpOworCisK KworIyBXZSBuZWVkIHRvIGNoZWNrIHRoYXQgV0FJVCB3b3JrcyBmaW5lIGluc2lkZSB0cmFuc2Fj dGlvbnMuIEZvciB0aGF0LCBsZXQncworIyBnZXQgdHdvIExTTnMgdGhhdCB3aWxsIGNvcnJlc3Bv bmQgdG8gdHdvIGRpZmZlcmVudCBtYXggdmFsdWVzIGluIG91ciB0YWJsZS4KKyRub2RlX3ByaW1h cnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVT IChnZW5lcmF0ZV9zZXJpZXMoMzEsIDQwKSkiKTsKK215ICRsc24zID0gJG5vZGVfcHJpbWFyeS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKKyRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rl c3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNDEsIDUwKSkiKTsKK215ICRsc240ID0gJG5vZGVf cHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNu KCkiKTsKKworIyBCZWZvcmUgc3RhcnRpbmcgdHJhbnNhY3Rpb24sIEFGVEVSIHdoaWNoIGVuc3Vy ZXMgYSBtYXggdmFsdWUgb2YgNDAuCisjIEluc2lkZSB0aGUgdHJhbnNhY3Rpb24sIEFGVEVSIHRo YXQgZW5zdXJlcyBhIG1heCB2YWx1ZSBvZiA1MC4KKyMgRHVlIHRvIElTT0xBVElPTiBMRVZFTCBS RVBFQVRBQkxFIFJFQUQsIHdlIHNob3VsZCBOT1Qgc2VlIHRoZSBuZXcgbWF4IHZhbHVlLgorbXkg JHN0YW5kYnlfcmVzdWx0cyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcVsKKwlBRlRFUiAnJGxzbjMnOworCUJFR0lOIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZF TCBSRVBFQVRBQkxFIFJFQUQ7CisJU0VMRUNUIG1heChhKSBGUk9NIHdhaXRfdGVzdDsKKwlBRlRF UiAnJGxzbjQnOworCVNFTEVDVCBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKCk7CisJU0VMRUNUIG1h eChhKSBGUk9NIHdhaXRfdGVzdDsKKwlDT01NSVQ7CitdKTsKKworIyBNYWtlIHN1cmUgdGhhdCB3 ZSBpbmRlZWQgcmVhY2ggcHJpbWFyeSdzIGxhc3QgTFNOIGluc2lkZSB0aGUgdHJhbnNhY3Rpb24u CisjIEZvciB0aGF0LCBjaGVjayB0aGF0IGNhbGxpbmcgcGdfbGFzdF93YWxfcmVwbGF5X2xzbiBy ZXR1cm5lZCB0aGF0IExTTi4KK215ICRsYXN0X2xzbl9yZWFjaGVkID0gJHN0YW5kYnlfcmVzdWx0 cyA9fiAvJGxzbjQvOworb2soJGxhc3RfbHNuX3JlYWNoZWQsICJBRlRFUiB3b3JrcyBpbnNpZGUg YSB0cmFuc2FjdGlvbiIpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gZG9lc24ndCBicmVh ayBhbmQgc2hvdyB1cyB0aGUgbmV3IG1heCB2YWx1ZSBhZnRlciBBRlRFUi4KKyMgRm9yIHRoYXQs IG1ha2Ugc3VyZSB0aGF0IHRoZSBvbGRlciBtYXggdmFsdWUgaXMgcmVwZWF0ZWQgdHdpY2UgaW4g dGhlIHJlc3VsdHMuCitteSAkY291bnQgPSAoKSA9ICRzdGFuZGJ5X3Jlc3VsdHMgPX4gLzQwL2c7 CitvaygkY291bnQgZXEgMiwgInRyYW5zYWN0aW9uIGlzb2xhdGlvbiBsZXZlbCBkb2Vzbid0IGdl dCBicm9rZW4gZHVlIHRvIEFGVEVSIik7CisKKyRub2RlX3N0YW5kYnktPnN0b3A7Ciskbm9kZV9w cmltYXJ5LT5zdG9wOworZG9uZV90ZXN0aW5nKCk7Cg== --=_4fbdf0ad13d72211dff1e46d32ad8140 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=wait_classic_v3.patch Content-Disposition: attachment; filename=wait_classic_v3.patch; size=48105 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWxsZmlsZXMuc2dtbAppbmRleCA1NGI1ZjIyZDZlLi4xODY5NWUwMTNlIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbGxmaWxlcy5zZ21sCkBAIC0xODgsNiArMTg4LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2Fi bGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSB1cGRhdGUg ICAgICAgICAgICAgU1lTVEVNICJ1cGRhdGUuc2dtbCI+CiA8IUVOVElUWSB2YWN1dW0gICAgICAg ICAgICAgU1lTVEVNICJ2YWN1dW0uc2dtbCI+CiA8IUVOVElUWSB2YWx1ZXMgICAgICAgICAgICAg U1lTVEVNICJ2YWx1ZXMuc2dtbCI+Cis8IUVOVElUWSB3YWl0ICAgICAgICAgICAgICAgU1lTVEVN ICJ3YWl0LnNnbWwiPgogCiA8IS0tIGFwcGxpY2F0aW9ucyBhbmQgdXRpbGl0aWVzIC0tPgogPCFF TlRJVFkgY2x1c3RlcmRiICAgICAgICAgIFNZU1RFTSAiY2x1c3RlcmRiLnNnbWwiPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9iZWdpbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9iZWdp bi5zZ21sCmluZGV4IDAxNmIwMjE0ODcuLmIzYWYxNmMwOWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvYmVnaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2JlZ2luLnNnbWwKQEAg LTIxLDEzICsyMSwyMSBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNp c2Rpdj4KIDxzeW5vcHNpcz4KLUJFR0lOIFsgV09SSyB8IFRSQU5TQUNUSU9OIF0gWyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gXQorQkVHSU4gWyBXT1JLIHwgVFJBTlNBQ1RJT04gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2Zvcl9ldmVudDwvcmVwbGFjZWFibGU+ CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0 aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBJU09MQVRJ T04gTEVWRUwgeyBTRVJJQUxJWkFCTEUgfCBSRVBFQVRBQkxFIFJFQUQgfCBSRUFEIENPTU1JVFRF RCB8IFJFQUQgVU5DT01NSVRURUQgfQogICAgIFJFQUQgV1JJVEUgfCBSRUFEIE9OTFkKICAgICBb IE5PVCBdIERFRkVSUkFCTEUKKworPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+d2FpdF9mb3JfZXZlbnQ8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKyAgICBX QUlUIEZPUiBbQU5ZIHwgQUxMXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXZlbnQ8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisKKzxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KKyAgICBM U04gbHNuX3ZhbHVlCisgICAgVElNRU9VVCBudW1iZXJfb2ZfbWlsbGlzZWNvbmRzCisgICAgdGlt ZXN0YW1wCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvc3RhcnRfdHJhbnNhY3Rpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv c3RhcnRfdHJhbnNhY3Rpb24uc2dtbAppbmRleCA3NGNjZDdlMzQ1Li4xYjU0ZWQyMDg0IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3JlZi9zdGFydF90cmFuc2FjdGlvbi5zZ21sCkBAIC0yMSwxMyArMjEsMjEgQEAg UG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+ Ci1TVEFSVCBUUkFOU0FDVElPTiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFu c2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCitTVEFSVCBUUkFOU0FDVElPTiBb IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNl YWJsZT4gWywgLi4uXSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2Zvcl9l dmVudDwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJh c2U+CiAKICAgICBJU09MQVRJT04gTEVWRUwgeyBTRVJJQUxJWkFCTEUgfCBSRVBFQVRBQkxFIFJF QUQgfCBSRUFEIENPTU1JVFRFRCB8IFJFQUQgVU5DT01NSVRURUQgfQogICAgIFJFQUQgV1JJVEUg fCBSRUFEIE9OTFkKICAgICBbIE5PVCBdIERFRkVSUkFCTEUKKworPHBocmFzZT53aGVyZSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF9mb3JfZXZlbnQ8L3JlcGxhY2VhYmxlPiBp czo8L3BocmFzZT4KKyAgICBXQUlUIEZPUiBbQU5ZIHwgQUxMXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+ZXZlbnQ8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisKKzxwaHJhc2U+YW5kIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IGlzIG9uZSBv Zjo8L3BocmFzZT4KKyAgICBMU04gbHNuX3ZhbHVlCisgICAgVElNRU9VVCBudW1iZXJfb2ZfbWls bGlzZWNvbmRzCisgICAgdGltZXN0YW1wCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+ CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvd2FpdC5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi93YWl0LnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjZj YWUzYWQ4NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvd2FpdC5zZ21sCkBA IC0wLDAgKzEsMTQ2IEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL3dhaXQuc2dtbAorUG9zdGdy ZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5IGlkPSJzcWwtd2FpdCI+CisgPGlu ZGV4dGVybSB6b25lPSJzcWwtd2FpdCI+CisgIDxwcmltYXJ5PldBSVQgRk9SPC9wcmltYXJ5Pgor IDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPldBSVQgRk9SPC9y ZWZlbnRyeXRpdGxlPgorICA8bWFudm9sbnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZv PlNRTCAtIExhbmd1YWdlIFN0YXRlbWVudHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKwor IDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5XQUlUIEZPUjwvcmVmbmFtZT4KKyAgPHJlZnB1cnBv c2U+d2FpdCBmb3IgdGhlIHRhcmdldCA8YWNyb255bT5MU048L2Fjcm9ueW0+IHRvIGJlIHJlcGxh eWVkIG9yIGZvciBzcGVjaWZpZWQgdGltZSB0byBwYXNzPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFt ZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK1dBSVQgRk9SIFtBTlkgfCBB TExdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IFss IC4uLl0KKworPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXZl bnQ8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CisgICAgTFNOIHZhbHVlCisgICAg VElNRU9VVCBudW1iZXJfb2ZfbWlsbGlzZWNvbmRzCisgICAgdGltZXN0YW1wCisKK1dBSVQgRk9S IExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9udW1iZXI8L3JlcGxhY2Vh YmxlPicKK1dBSVQgRk9SIExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9u dW1iZXI8L3JlcGxhY2VhYmxlPicgVElNRU9VVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+d2FpdF90aW1lb3V0PC9yZXBsYWNlYWJsZT4KK1dBSVQgRk9SIExTTiAnPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9udW1iZXI8L3JlcGxhY2VhYmxlPicsIFRJTUVTVEFNUCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF90aW1lPC9yZXBsYWNlYWJsZT4KK1dB SVQgRk9SIFRJTUVTVEFNUCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF90aW1l PC9yZXBsYWNlYWJsZT4KK1dBSVQgRk9SIEFMTCBMU04gJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5sc25fbnVtYmVyPC9yZXBsYWNlYWJsZT4nIFRJTUVPVVQgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPndhaXRfdGltZW91dDwvcmVwbGFjZWFibGU+LCBUSU1FU1RBTVAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndhaXRfdGltZTwvcmVwbGFjZWFibGU+CitXQUlU IEZPUiBBTlkgTFNOICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bHNuX251bWJlcjwv cmVwbGFjZWFibGU+JywgVElNRVNUQU1QIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53 YWl0X3RpbWU8L3JlcGxhY2VhYmxlPgorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2Pgor CisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgor ICAgPGNvbW1hbmQ+V0FJVCBGT1I8L2NvbW1hbmQ+IHByb3ZpZGVzIGEgc2ltcGxlIGludGVycHJv Y2VzcyBjb21tdW5pY2F0aW9uCisgICBtZWNoYW5pc20gdG8gd2FpdCBmb3IgdGltZXN0YW1wLCB0 aW1lb3V0IG9yIHRoZSB0YXJnZXQgbG9nIHNlcXVlbmNlIG51bWJlcgorICAgKDxhY3JvbnltPkxT TjwvYWNyb255bT4pIG9uIHN0YW5kYnkgaW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1 Y3RuYW1lPgorICAgZGF0YWJhc2VzIHdpdGggbWFzdGVyLXN0YW5kYnkgYXN5bmNocm9ub3VzIHJl cGxpY2F0aW9uLiBXaGVuIHJ1biB3aXRoIHRoZQorICAgPHJlcGxhY2VhYmxlPkxTTjwvcmVwbGFj ZWFibGU+IG9wdGlvbiwgdGhlIDxjb21tYW5kPldBSVQgRk9SPC9jb21tYW5kPgorICAgY29tbWFu ZCB3YWl0cyBmb3IgdGhlIHNwZWNpZmllZCA8YWNyb255bT5MU048L2Fjcm9ueW0+IHRvIGJlIHJl cGxheWVkLgorICAgSWYgbm8gdGltZXN0YW1wIG9yIHRpbWVvdXQgd2FzIHNwZWNpZmllZCwgd2Fp dCB0aW1lIGlzIHVubGltaXRlZC4KKyAgIFdhaXRpbmcgY2FuIGJlIGludGVycnVwdGVkIHVzaW5n IDxsaXRlcmFsPkN0cmwrQzwvbGl0ZXJhbD4sIG9yCisgICBieSBzaHV0dGluZyBkb3duIHRoZSA8 bGl0ZXJhbD5wb3N0Z3JlczwvbGl0ZXJhbD4gc2VydmVyLgorICA8L3BhcmE+CisKKyA8L3JlZnNl Y3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CisKKyAgPHZh cmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPkxTTjwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICBTcGVjaWZ5IHRoZSB0YXJnZXQgbG9nIHNlcXVlbmNlIG51bWJl ciB0byB3YWl0IGZvci4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT5USU1FT1VUIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X3RpbWVvdXQ8L3JlcGxhY2VhYmxlPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgTGltaXQgdGhlIHRpbWUgaW50ZXJ2 YWwgdG8gd2FpdCBmb3IgdGhlIExTTiB0byBiZSByZXBsYXllZC4KKyAgICAgIFRoZSBzcGVjaWZp ZWQgPHJlcGxhY2VhYmxlPndhaXRfdGltZW91dDwvcmVwbGFjZWFibGU+IG11c3QgYmUgYW4gaW50 ZWdlcgorICAgICAgYW5kIGlzIG1lYXN1cmVkIGluIG1pbGxpc2Vjb25kcy4KKyAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT5VTlRJTCBUSU1FU1RBTVAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPndhaXRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBMaW1pdCB0aGUgdGltZSB0byB3YWl0IGZvciB0aGUgTFNOIHRvIGJlIHJl cGxheWVkLgorICAgICAgVGhlIHNwZWNpZmllZCA8cmVwbGFjZWFibGU+d2FpdF90aW1lPC9yZXBs YWNlYWJsZT4gbXVzdCBiZSB0aW1lc3RhbXAuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9yZWZzZWN0MT4K KworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAg IFJ1biA8bGl0ZXJhbD5XQUlUIEZPUjwvbGl0ZXJhbD4gZnJvbSA8YXBwbGljYXRpb24+cHNxbDwv YXBwbGljYXRpb24+LAorICAgbGltaXRpbmcgd2FpdCB0aW1lIHRvIDEwMDAwIG1pbGxpc2Vjb25k czoKKworPHNjcmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjA3QTZCMScgVElNRU9VVCAxMDAwMDsK K05PVElDRTogIExTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3JlYXNlIHdhaXQgdGltZS4K K0xTTiByZWFjaGVkCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorPC9zY3JlZW4+CisgIDwv cGFyYT4KKworICA8cGFyYT4KKyAgIFdhaXQgdW50aWwgdGhlIHNwZWNpZmllZCA8YWNyb255bT5M U048L2Fjcm9ueW0+IGlzIHJlcGxheWVkOgorPHNjcmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjA3 QTYxMSc7CitMU04gcmVhY2hlZAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKzwvc2NyZWVu PgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBMaW1pdCA8YWNyb255bT5MU048L2Fjcm9ueW0+ IHdhaXQgdGltZSB0byA1MDAwMDAgbWlsbGlzZWNvbmRzLAorICAgYW5kIHRoZW4gY2FuY2VsIHRo ZSBjb21tYW5kIGlmIDxhY3JvbnltPkxTTjwvYWNyb255bT4gd2FzIG5vdCByZWFjaGVkOgorPHNj cmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjBGRjc5MScgVElNRU9VVCA1MDAwMDA7CiteQ0NhbmNl bCByZXF1ZXN0IHNlbnQKK05PVElDRTogIExTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3Jl YXNlIHdhaXQgdGltZS4KK0VSUk9SOiAgY2FuY2VsaW5nIHN0YXRlbWVudCBkdWUgdG8gdXNlciBy ZXF1ZXN0CisgTFNOIHJlYWNoZWQKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCis8L3NjcmVl bj4KKzwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0 aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGVyZSBpcyBubyA8Y29tbWFuZD5XQUlU IEZPUjwvY29tbWFuZD4gc3RhdGVtZW50IGluIHRoZSBTUUwKKyAgIHN0YW5kYXJkLgorICA8L3Bh cmE+CisgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmZXJlbmNlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKaW5kZXggZTExYjRi NjEzMC4uYTgzZmY0NTUxZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbApAQCAtMjE2LDYgKzIxNiw3IEBACiAg ICAmdXBkYXRlOwogICAgJnZhY3V1bTsKICAgICZ2YWx1ZXM7CisgICAmd2FpdDsKIAogIDwvcmVm ZXJlbmNlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVj b3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4 IGM2MTU2NjY2NmEuLjVjYzIxOTY5MjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2dyZWNvdmVyeS5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiYmFja3VwL2Jhc2ViYWNr dXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRlICJjb21tYW5k cy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgogI2luY2x1ZGUgImNv bW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCkBAIC0xNzgwLDYgKzE3ODEsMTMgQEAgUGVyZm9ybVdhbFJlY292ZXJ5KHZvaWQpCiAJ CQkJYnJlYWs7CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBJZiB3ZSByZXBsYXllZCBhbiBMU04gdGhh dCBzb21lb25lIHdhcyB3YWl0aW5nIGZvciwKKwkJCSAqIHNldCBsYXRjaGVzIGluIHNoYXJlZCBt ZW1vcnkgYXJyYXkgdG8gbm90aWZ5IHRoZSB3YWl0ZXIuCisJCQkgKi8KKwkJCWlmIChYTG9nUmVj b3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ciA+PSBHZXRNaW5XYWl0KCkpCisJCQkJV2Fp dFNldExhdGNoKFhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyKTsKKwogCQkJ LyogRWxzZSwgdHJ5IHRvIGZldGNoIHRoZSBuZXh0IFdBTCByZWNvcmQgKi8KIAkJCXJlY29yZCA9 IFJlYWRSZWNvcmQoeGxvZ3ByZWZldGNoZXIsIExPRywgZmFsc2UsIHJlcGxheVRMSSk7CiAJCX0g d2hpbGUgKHJlY29yZCAhPSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKaW5kZXggNDhmNzM0OGY5 MS4uZDhmNjk2NWQ4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKQEAgLTYxLDYgKzYxLDcgQEAgT0JK UyA9IFwKIAl2YWN1dW0ubyBcCiAJdmFjdXVtcGFyYWxsZWwubyBcCiAJdmFyaWFibGUubyBcCi0J dmlldy5vCisJdmlldy5vIFwKKwl3YWl0Lm8KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9i YWNrZW5kL2NvbW1vbi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24u YnVpbGQgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZAppbmRleCA0MmNjZWQ5ZWJl Li5lYzZhYjc3MjJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWls ZAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZApAQCAtNTAsNCArNTAsNSBA QCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICd2YWN1dW1wYXJhbGxlbC5jJywKICAgJ3Zh cmlhYmxlLmMnLAogICAndmlldy5jJywKKyAgJ3dhaXQuYycsCiApCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy93YWl0LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOTk0ZjAyM2Y2NAotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYwpAQCAtMCwwICsxLDQwMyBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogd2FpdC5jCisgKgkgIEltcGxlbWVudHMgV0FJVCBG T1IsIHdoaWNoIGFsbG93cyB3YWl0aW5nIGZvciBldmVudHMgc3VjaCBhcworICoJICB0aW1lIHBh c3Npbmcgb3IgTFNOIGhhdmluZyBiZWVuIHJlcGxheWVkIG9uIHJlcGxpY2EuCisgKgorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjAsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjAsIFJlZ2VudHMgb2YgUG9z dGdyZXNQcm8KKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9jb21tYW5k cy93YWl0LmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSA8ZmxvYXQu aD4KKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJw Z3N0YXQuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIK KyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCisjaW5j bHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQu aCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9iYWNrZW5kaWQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCisjaW5j bHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1 ZGUgInN0b3JhZ2Uvc3Bpbi5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0LmgiCisjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19sc24uaCIKKyNpbmNs dWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJleGVjdXRvci9zcGkuaCIKKyNpbmNs dWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisKKy8qIEFkZCB0byAvIGRlbGV0ZSBmcm9tIHNoYXJl ZCBtZW1vcnkgYXJyYXkgKi8KK3N0YXRpYyB2b2lkIEFkZEV2ZW50KFhMb2dSZWNQdHIgbHNuX3Rv X3dhaXQpOworc3RhdGljIHZvaWQgRGVsZXRlRXZlbnQodm9pZCk7CisKKy8qIFNoYXJlZCBtZW1v cnkgc3RydWN0dXJlICovCit0eXBlZGVmIHN0cnVjdAoreworCWludAkJCWJhY2tlbmRfbWF4aWQ7 CisJcGdfYXRvbWljX3VpbnQ2NAltaW5fbHNuOworCXNsb2NrX3QJCW11dGV4OworCVhMb2dSZWNQ dHIJd2FpdGVkX2xzbltGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBXYWl0U3RhdGU7CisKK3N0 YXRpYyB2b2xhdGlsZSBXYWl0U3RhdGUgKnN0YXRlOworCisvKiBBZGQgdGhlIGV2ZW50IG9mIHRo ZSBjdXJyZW50IGJhY2tlbmQgdG8gdGhlIHNoYXJlZCBtZW1vcnkgYXJyYXkgKi8KK3N0YXRpYyB2 b2lkCitBZGRFdmVudChYTG9nUmVjUHRyIGxzbl90b193YWl0KQoreworCVNwaW5Mb2NrQWNxdWly ZSgmc3RhdGUtPm11dGV4KTsKKwlpZiAoc3RhdGUtPmJhY2tlbmRfbWF4aWQgPCBNeUJhY2tlbmRJ ZCkKKwkJc3RhdGUtPmJhY2tlbmRfbWF4aWQgPSBNeUJhY2tlbmRJZDsKKworCXN0YXRlLT53YWl0 ZWRfbHNuW015QmFja2VuZElkXSA9IGxzbl90b193YWl0OworCisJaWYgKGxzbl90b193YWl0IDwg c3RhdGUtPm1pbl9sc24udmFsdWUpCisJCXN0YXRlLT5taW5fbHNuLnZhbHVlID0gbHNuX3RvX3dh aXQ7CisJU3BpbkxvY2tSZWxlYXNlKCZzdGF0ZS0+bXV0ZXgpOworfQorCisvKgorICogRGVsZXRl IGV2ZW50IG9mIHRoZSBjdXJyZW50IGJhY2tlbmQgZnJvbSB0aGUgc2hhcmVkIG1lbW9yeSBhcnJh eS4KKyAqCisgKiBUT0RPOiBDb25zaWRlciBzdGF0ZSBjbGVhbnVwIG9uIGJhY2tlbmQgZmFpbHVy ZS4KKyAqIENoZWNrOgorICogMSkgbm9tYWx8c21hcnR8ZmFzdHxpbW1lZGlhdGUgc3RvcAorICog MikgU0lHS0lMTCBhbmQgU0lHVEVSTQorICovCitzdGF0aWMgdm9pZAorRGVsZXRlRXZlbnQodm9p ZCkKK3sKKwlpbnQJCQlpOworCVhMb2dSZWNQdHIJbHNuX3RvX2RlbGV0ZSA9IHN0YXRlLT53YWl0 ZWRfbHNuW015QmFja2VuZElkXTsKKworCXN0YXRlLT53YWl0ZWRfbHNuW015QmFja2VuZElkXSA9 IEludmFsaWRYTG9nUmVjUHRyOworCisJU3BpbkxvY2tBY3F1aXJlKCZzdGF0ZS0+bXV0ZXgpOwor CisJLyogSWYgd2UgbmVlZCB0byBjaG9vc2UgdGhlIG5leHQgbWluX2xzbiwgdXBkYXRlIHN0YXRl LT5taW5fbHNuICovCisJaWYgKHN0YXRlLT5taW5fbHNuLnZhbHVlID09IGxzbl90b19kZWxldGUp CisJeworCQlzdGF0ZS0+bWluX2xzbi52YWx1ZSA9IFBHX1VJTlQ2NF9NQVg7CisJCWZvciAoaSA9 IDI7IGkgPD0gc3RhdGUtPmJhY2tlbmRfbWF4aWQ7IGkrKykKKwkJCWlmIChzdGF0ZS0+d2FpdGVk X2xzbltpXSAhPSBJbnZhbGlkWExvZ1JlY1B0ciAmJgorCQkJCXN0YXRlLT53YWl0ZWRfbHNuW2ld IDwgc3RhdGUtPm1pbl9sc24udmFsdWUpCisJCQkJc3RhdGUtPm1pbl9sc24udmFsdWUgPSBzdGF0 ZS0+d2FpdGVkX2xzbltpXTsKKwl9CisKKwlpZiAoc3RhdGUtPmJhY2tlbmRfbWF4aWQgPT0gTXlC YWNrZW5kSWQpCisJCWZvciAoaSA9IChNeUJhY2tlbmRJZCk7IGkgPj0gMjsgaS0tKQorCQkJaWYg KHN0YXRlLT53YWl0ZWRfbHNuW2ldICE9IEludmFsaWRYTG9nUmVjUHRyKQorCQkJeworCQkJCXN0 YXRlLT5iYWNrZW5kX21heGlkID0gaTsKKwkJCQlicmVhazsKKwkJCX0KKworCVNwaW5Mb2NrUmVs ZWFzZSgmc3RhdGUtPm11dGV4KTsKK30KKworLyoKKyAqIFJlcG9ydCBhbW91bnQgb2Ygc2hhcmVk IG1lbW9yeSBzcGFjZSBuZWVkZWQgZm9yIFdhaXRTdGF0ZQorICovCitTaXplCitXYWl0U2htZW1T aXplKHZvaWQpCit7CisJU2l6ZQkJc2l6ZTsKKworCXNpemUgPSBvZmZzZXRvZihXYWl0U3RhdGUs IHdhaXRlZF9sc24pOworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShNYXhCYWNrZW5k cyArIDEsIHNpemVvZihYTG9nUmVjUHRyKSkpOworCXJldHVybiBzaXplOworfQorCisvKiBJbml0 IGFycmF5IG9mIGV2ZW50cyBpbiBzaGFyZWQgbWVtb3J5ICovCit2b2lkCitXYWl0U2htZW1Jbml0 KHZvaWQpCit7CisJYm9vbAkJZm91bmQ7CisJdWludDMyCQlpOworCisJc3RhdGUgPSAoV2FpdFN0 YXRlICopIFNobWVtSW5pdFN0cnVjdCgicGdfd2FpdF9sc24iLAorCQkJCQkJCQkJCSAgV2FpdFNo bWVtU2l6ZSgpLAorCQkJCQkJCQkJCSAgJmZvdW5kKTsKKwlpZiAoIWZvdW5kKQorCXsKKwkJU3Bp bkxvY2tJbml0KCZzdGF0ZS0+bXV0ZXgpOworCisJCWZvciAoaSA9IDA7IGkgPCAoTWF4QmFja2Vu ZHMgKyAxKTsgaSsrKQorCQkJc3RhdGUtPndhaXRlZF9sc25baV0gPSBJbnZhbGlkWExvZ1JlY1B0 cjsKKworCQlzdGF0ZS0+YmFja2VuZF9tYXhpZCA9IDA7CisJCXN0YXRlLT5taW5fbHNuLnZhbHVl ID0gUEdfVUlOVDY0X01BWDsKKwl9Cit9CisKKy8qIFNldCBhbGwgbGF0Y2hlcyBpbiBzaGFyZWQg bWVtb3J5IHRvIHNpZ25hbCB0aGF0IG5ldyBMU04gaGFzIGJlZW4gcmVwbGF5ZWQgKi8KK3ZvaWQK K1dhaXRTZXRMYXRjaChYTG9nUmVjUHRyIGN1cl9sc24pCit7CisJdWludDMyCQlpOworCWludCAJ CWJhY2tlbmRfbWF4aWQ7CisJUEdQUk9DCSAgICpiYWNrZW5kOworCisJU3BpbkxvY2tBY3F1aXJl KCZzdGF0ZS0+bXV0ZXgpOworCWJhY2tlbmRfbWF4aWQgPSBzdGF0ZS0+YmFja2VuZF9tYXhpZDsK KwlTcGluTG9ja1JlbGVhc2UoJnN0YXRlLT5tdXRleCk7CisKKwlmb3IgKGkgPSAyOyBpIDw9IGJh Y2tlbmRfbWF4aWQ7IGkrKykKKwl7CisJCWJhY2tlbmQgPSBCYWNrZW5kSWRHZXRQcm9jKGkpOwor CQlpZiAoc3RhdGUtPndhaXRlZF9sc25baV0gIT0gMCkKKwkJeworCQkJaWYgKGJhY2tlbmQgJiYg c3RhdGUtPndhaXRlZF9sc25baV0gPD0gY3VyX2xzbikKKwkJCQlTZXRMYXRjaCgmYmFja2VuZC0+ cHJvY0xhdGNoKTsKKwkJfQorCX0KK30KKworLyogR2V0IG1pbmltYWwgTFNOIHRoYXQgd2lsbCBi ZSBuZXh0ICovCitYTG9nUmVjUHRyCitHZXRNaW5XYWl0KHZvaWQpCit7CisJcmV0dXJuIHBnX2F0 b21pY19yZWFkX3U2NCgmc3RhdGUtPm1pbl9sc24pOworfQorCisvKgorICogT24gV0FJVCB1c2Ug TXlMYXRjaCB0byB3YWl0IHRpbGwgTFNOIGlzIHJlcGxheWVkLAorICogcG9zdG1hc3RlciBkaWVz IG9yIHRpbWVvdXQgaGFwcGVucy4KKyAqLworaW50CitXYWl0VXRpbGl0eShYTG9nUmVjUHRyIGxz biwgY29uc3QgZmxvYXQ4IHNlY3MpCit7CisJWExvZ1JlY1B0cgljdXJfbHNuID0gR2V0WExvZ1Jl cGxheVJlY1B0cihOVUxMKTsKKwlpbnQJCQlsYXRjaF9ldmVudHM7CisJZmxvYXQ4CQllbmR0aW1l OworCXVpbnQJCXJlcyA9IDA7CisKKwlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCXsKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVR VUlTSVRFX1NUQVRFKSwKKwkJCQllcnJtc2coIldvcmsgb25seSBpbiBzdGFuZGJ5IG1vZGUiKSkp OworCQlyZXR1cm4gZmFsc2U7CisJfQorCisjZGVmaW5lIEdldE5vd0Zsb2F0KCkJKChmbG9hdDgp IEdldEN1cnJlbnRUaW1lc3RhbXAoKSAvIDEwMDAwMDAuMCkKKwllbmR0aW1lID0gR2V0Tm93Rmxv YXQoKSArIHNlY3M7CisKKwlsYXRjaF9ldmVudHMgPSBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSDsKKworCWlmIChsc24gIT0gSW52YWxpZFhMb2dSZWNQdHIpCisJeworCQkvKiBKdXN0 IGNoZWNrIGlmIHdlIHJlYWNoZWQgKi8KKwkJaWYgKGxzbiA8IGN1cl9sc24gfHwgc2VjcyA8IDAp CisJCQlyZXR1cm4gKGxzbiA8IGN1cl9sc24pOworCisJCWxhdGNoX2V2ZW50cyB8PSBXTF9MQVRD SF9TRVQ7CisJCUFkZEV2ZW50KGxzbik7CisJfQorCWVsc2UgaWYgKCFzZWNzKQorCQlyZXR1cm4g MTsKKworCWZvciAoOzspCisJeworCQlpbnQJCQlyYzsKKwkJZmxvYXQ4CQlkZWxheSA9IDA7CisJ CWxvbmcJCWRlbGF5X21zOworCisJCS8qIElmIExTTiBoYXMgYmVlbiByZXBsYXllZCAqLworCQlp ZiAobHNuICYmIGxzbiA8PSBjdXJfbHNuKQorCQkJYnJlYWs7CisKKwkJaWYgKHNlY3MgPiAwKQor CQkJZGVsYXkgPSBlbmR0aW1lIC0gR2V0Tm93RmxvYXQoKTsKKwkJZWxzZSBpZiAoc2VjcyA9PSAw KQorCQkJLyoKKwkJCSogSWYgd2Ugd2FpdCBmb3JldmVyLCB0aGVuIDEgbWludXRlIHRpbWVvdXQg dG8gY2hlY2sKKwkJCSogZm9yIEludGVydXB0cy4KKwkJCSovCisJCQlkZWxheSA9IDYwOworCisJ CWlmIChkZWxheSA+IDAuMCkKKwkJCWRlbGF5X21zID0gKGxvbmcpIGNlaWwoZGVsYXkgKiAxMDAw LjApOworCQllbHNlCisJCQlicmVhazsKKworCQkvKgorCQkgKiBJZiByZWNlaXZlZCBhbiBpbnRl cnJ1cHRpb24gZnJvbSBDSEVDS19GT1JfSU5URVJSVVBUUywKKwkJICogdGhlbiBkZWxldGUgdGhl IGN1cnJlbnQgZXZlbnQgZnJvbSBhcnJheS4KKwkJICovCisJCWlmIChJbnRlcnJ1cHRQZW5kaW5n KQorCQl7CisJCQlpZiAobHNuICE9IEludmFsaWRYTG9nUmVjUHRyKQorCQkJCURlbGV0ZUV2ZW50 KCk7CisJCQlQcm9jZXNzSW50ZXJydXB0cygpOworCQl9CisKKwkJLyogSWYgcG9zdG1hc3RlciBk aWVzLCBmaW5pc2ggaW1tZWRpYXRlbHkgKi8KKwkJaWYgKCFQb3N0bWFzdGVySXNBbGl2ZSgpKQor CQkJYnJlYWs7CisKKwkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwgbGF0Y2hfZXZlbnRzLCBkZWxh eV9tcywKKwkJCQkJICAgV0FJVF9FVkVOVF9DTElFTlRfUkVBRCk7CisKKwkJaWYgKHJjICYgV0xf TEFUQ0hfU0VUKQorCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKworCQlpZiAobHNuICYmIHJjICYg V0xfTEFUQ0hfU0VUKQorCQkJY3VyX2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJ fQorCisJaWYgKGxzbiAhPSBJbnZhbGlkWExvZ1JlY1B0cikKKwkJRGVsZXRlRXZlbnQoKTsKKwor CWlmIChsc24gIT0gSW52YWxpZFhMb2dSZWNQdHIgJiYgbHNuID4gY3VyX2xzbikKKwkJZWxvZyhO T1RJQ0UsIkxTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3JlYXNlIHdhaXQgdGltZS4iKTsK KwllbHNlCisJCXJlcyA9IDE7CisKKwlyZXR1cm4gcmVzOworfQorCisvKgorICogR2V0IHRoZSBh bW91bnQgb2Ygc2Vjb25kcyBsZWZ0IHRpbGwgdGhlIHNwZWNpZmllZCB0aW1lLgorICovCitmbG9h dDgKK1dhaXRUaW1lUmVzb2x2ZShDb25zdCAqdGltZSkKK3sKKwlpbnQJCQlyZXQ7CisJZmxvYXQ4 CQl2YWw7CisJT2lkCQkJdHlwZXNbXSA9IHsgdGltZS0+Y29uc3R0eXBlIH07CisJRGF0dW0JCXZh bHVlc1tdID0geyB0aW1lLT5jb25zdHZhbHVlIH07CisJY2hhcgkJbnVsbHNbXSA9IHsgIiAiIH07 CisJRGF0dW0JCXJlc3VsdDsKKwlib29sCQlpc251bGw7CisKKwlTUElfY29ubmVjdCgpOworCisJ aWYgKHRpbWUtPmNvbnN0dHlwZSA9PSAxMDgzKQorCQlyZXQgPSBTUElfZXhlY3V0ZV93aXRoX2Fy Z3MoInNlbGVjdCBleHRyYWN0IChlcG9jaCBmcm9tICgkMSAtIG5vdygpOjp0aW1lKSkiLAorCQkJ CQkJCQkJMSwgdHlwZXMsIHZhbHVlcywgbnVsbHMsIHRydWUsIDApOworCWVsc2UgaWYgKHRpbWUt PmNvbnN0dHlwZSA9PSAxMjY2KQorCQlyZXQgPSBTUElfZXhlY3V0ZV93aXRoX2FyZ3MoInNlbGVj dCBleHRyYWN0IChlcG9jaCBmcm9tICh0aW1lem9uZSgnVVRDJywkMSk6OnRpbWUgLSB0aW1lem9u ZSgnVVRDJywgbm93KCk6OnRpbWV0eik6OnRpbWUpKSIsCisJCQkJCQkJCQkxLCB0eXBlcywgdmFs dWVzLCBudWxscywgdHJ1ZSwgMCk7CisJZWxzZQorCQlyZXQgPSBTUElfZXhlY3V0ZV93aXRoX2Fy Z3MoInNlbGVjdCBleHRyYWN0IChlcG9jaCBmcm9tICgkMSAtIG5vdygpKSkiLAorCQkJCQkJCQkJ MSwgdHlwZXMsIHZhbHVlcywgbnVsbHMsIHRydWUsIDApOworCisJQXNzZXJ0KHJldCA+PSAwKTsK KwlyZXN1bHQgPSBTUElfZ2V0YmludmFsKFNQSV90dXB0YWJsZS0+dmFsc1swXSwKKwkJCQkJCSAg IFNQSV90dXB0YWJsZS0+dHVwZGVzYywKKwkJCQkJCSAgIDEsICZpc251bGwpOworCisJQXNzZXJ0 KCFpc251bGwpOworCXZhbCA9IERhdHVtR2V0RmxvYXQ4KHJlc3VsdCk7CisKKwllbG9nKElORk8s ICJ0aW1lOiAlZiIsIHZhbCk7CisKKwlTUElfZmluaXNoKCk7CisJcmV0dXJuIHZhbDsKK30KKwor LyogSW1wbGVtZW50YXRpb24gb2YgV0FJVCBGT1IgKi8KK2ludAorV2FpdE1haW4oV2FpdFN0bXQg KnN0bXQsIERlc3RSZWNlaXZlciAqZGVzdCkKK3sKKwlMaXN0Q2VsbCAgICpldmVudHM7CisJVHVw bGVEZXNjCXR1cGRlc2M7CisJVHVwT3V0cHV0U3RhdGUgKnRzdGF0ZTsKKwlmbG9hdDgJCWRlbGF5 ID0gMDsKKwlmbG9hdDgJCWZpbmFsX2RlbGF5ID0gMDsKKwlYTG9nUmVjUHRyCWxzbiA9IEludmFs aWRYTG9nUmVjUHRyOworCVhMb2dSZWNQdHIJZmluYWxfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7 CisJYm9vbAkJaGFzX2xzbiA9IGZhbHNlOworCWJvb2wJCXdhaXRfZm9yZXZlciA9IHRydWU7CisJ aW50CQkJcmVzID0gMDsKKworCWlmIChzdG10LT5zdHJhdGVneSA9PSBXQUlUX0ZPUl9BTlkpCisJ eworCQkvKiBQcmVwYXJlIHRvIGZpbmQgbWluaW11bSBMU04gYW5kIGRlbGF5ICovCisJCWZpbmFs X2RlbGF5ID0gREJMX01BWDsKKwkJZmluYWxfbHNuID0gUEdfVUlOVDY0X01BWDsKKwl9CisKKwkv KiBFeHRyYWN0IG9wdGlvbnMgZnJvbSB0aGUgc3RhdGVtZW50IG5vZGUgdHJlZSAqLworCWZvcmVh Y2goZXZlbnRzLCBzdG10LT5ldmVudHMpCisJeworCQlXYWl0U3RtdCAgICpldmVudCA9IChXYWl0 U3RtdCAqKSBsZmlyc3QoZXZlbnRzKTsKKworCQkvKiBMU04gdG8gd2FpdCBmb3IgKi8KKwkJaWYg KGV2ZW50LT5sc24pCisJCXsKKwkJCWhhc19sc24gPSB0cnVlOworCQkJbHNuID0gRGF0dW1HZXRM U04oCisJCQkJCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2xzbl9pbiwKKwkJCQkJCQlDU3RyaW5n R2V0RGF0dW0oZXZlbnQtPmxzbikpKTsKKworCQkJLyoKKwkJCSAqIFdoZW4gd2FpdGluZyBmb3Ig QUxMLCBzZWxlY3QgbWF4IExTTiB0byB3YWl0IGZvci4KKwkJCSAqIFdoZW4gd2FpdGluZyBmb3Ig QU5ZLCBzZWxlY3QgbWluIExTTiB0byB3YWl0IGZvci4KKwkJCSAqLworCQkJaWYgKChzdG10LT5z dHJhdGVneSA9PSBXQUlUX0ZPUl9BTEwgJiYgZmluYWxfbHNuIDw9IGxzbikgfHwKKwkJCQkoc3Rt dC0+c3RyYXRlZ3kgPT0gV0FJVF9GT1JfQU5ZICYmIGZpbmFsX2xzbiA+IGxzbikpCisJCQl7CisJ CQkJZmluYWxfbHNuID0gbHNuOworCQkJfQorCQl9CisKKwkJLyogVGltZSBkZWxheSB0byB3YWl0 IGZvciAqLworCQlpZiAoZXZlbnQtPnRpbWUgfHwgZXZlbnQtPmRlbGF5KQorCQl7CisJCQl3YWl0 X2ZvcmV2ZXIgPSBmYWxzZTsKKworCQkJaWYgKGV2ZW50LT5kZWxheSkKKwkJCQlkZWxheSA9IGV2 ZW50LT5kZWxheSAvIDEwMDAuMDsKKworCQkJaWYgKGV2ZW50LT50aW1lKQorCQkJeworCQkJCUNv bnN0ICp0aW1lID0gKENvbnN0ICopIGV2ZW50LT50aW1lOworCQkJCWRlbGF5ID0gV2FpdFRpbWVS ZXNvbHZlKHRpbWUpOworCQkJfQorCisJCQkvKgorCQkJICogV2hlbiB3YWl0aW5nIGZvciBBTEws IHNlbGVjdCBtYXggZGVsYXkgdG8gd2FpdCBmb3IuCisJCQkgKiBXaGVuIHdhaXRpbmcgZm9yIEFO WSwgc2VsZWN0IG1pbiBkZWxheSB0byB3YWl0IGZvci4KKwkJCSAqLworCQkJaWYgKChzdG10LT5z dHJhdGVneSA9PSBXQUlUX0ZPUl9BTEwgJiYgZmluYWxfZGVsYXkgPD0gZGVsYXkpIHx8CisJCQkJ KHN0bXQtPnN0cmF0ZWd5ID09IFdBSVRfRk9SX0FOWSAmJiBmaW5hbF9kZWxheSA+IGRlbGF5KSkK KwkJCXsKKwkJCQlmaW5hbF9kZWxheSA9IGRlbGF5OworCQkJfQorCQl9CisJfQorCWlmICh3YWl0 X2ZvcmV2ZXIpCisJCWZpbmFsX2RlbGF5ID0gMDsKKwlpZiAoIWhhc19sc24pCisJCWZpbmFsX2xz biA9IEludmFsaWRYTG9nUmVjUHRyOworCisJcmVzID0gV2FpdFV0aWxpdHkoZmluYWxfbHNuLCBm aW5hbF9kZWxheSk7CisKKwkvKiBOZWVkIGEgdHVwbGUgZGVzY3JpcHRvciByZXByZXNlbnRpbmcg YSBzaW5nbGUgVEVYVCBjb2x1bW4gKi8KKwl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURl c2MoMSk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxLCAiTFNO IHJlYWNoZWQiLCBURVhUT0lELCAtMSwgMCk7CisJLyogUHJlcGFyZSBmb3IgcHJvamVjdGlvbiBv ZiB0dXBsZXMgKi8KKwl0c3RhdGUgPSBiZWdpbl90dXBfb3V0cHV0X3R1cGRlc2MoZGVzdCwgdHVw ZGVzYywgJlRUU09wc01pbmltYWxUdXBsZSk7CisKKwkvKiBTZW5kIGl0ICovCisJZG9fdGV4dF9v dXRwdXRfb25lbGluZSh0c3RhdGUsIHJlcz8idCI6ImYiKTsKKwllbmRfdHVwX291dHB1dCh0c3Rh dGUpOworCXJldHVybiByZXM7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5h bHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRleCA3YTFkZmI2MzY0Li5m MWZlMzM1YmVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTg1LDYgKzg1LDcgQEAgc3RhdGljIFF1 ZXJ5ICp0cmFuc2Zvcm1DcmVhdGVUYWJsZUFzU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJ CQkJCQkJIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10KTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3Jt Q2FsbFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQlDYWxsU3RtdCAqc3RtdCk7Citz dGF0aWMgdm9pZCB0cmFuc2Zvcm1XYWl0Rm9yU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFdhaXRT dG10ICpzdG10KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUxvY2tpbmdDbGF1c2UoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBRdWVyeSAqcXJ5LAogCQkJCQkJCQkgICBMb2NraW5nQ2xhdXNlICpsYywgYm9v bCBwdXNoZWREb3duKTsKICNpZmRlZiBSQVdfRVhQUkVTU0lPTl9DT1ZFUkFHRV9URVNUCkBAIC00 MDUsNyArNDA2LDIwIEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpw YXJzZVRyZWUpCiAJCQlyZXN1bHQgPSB0cmFuc2Zvcm1DYWxsU3RtdChwc3RhdGUsCiAJCQkJCQkJ CQkgICAoQ2FsbFN0bXQgKikgcGFyc2VUcmVlKTsKIAkJCWJyZWFrOwotCisJCWNhc2UgVF9XYWl0 U3RtdDoKKwkJCXRyYW5zZm9ybVdhaXRGb3JTdG10KHBzdGF0ZSwgKFdhaXRTdG10ICopIHBhcnNl VHJlZSk7CisJCQlyZXN1bHQgPSBtYWtlTm9kZShRdWVyeSk7CisJCQlyZXN1bHQtPmNvbW1hbmRU eXBlID0gQ01EX1VUSUxJVFk7CisJCQlyZXN1bHQtPnV0aWxpdHlTdG10ID0gKE5vZGUgKikgcGFy c2VUcmVlOworCQkJYnJlYWs7CisJCWNhc2UgVF9UcmFuc2FjdGlvblN0bXQ6CisJCQl7CisJCQkJ VHJhbnNhY3Rpb25TdG10ICpzdG10ID0gKFRyYW5zYWN0aW9uU3RtdCAqKSBwYXJzZVRyZWU7CisJ CQkJaWYgKChzdG10LT5raW5kID09IFRSQU5TX1NUTVRfQkVHSU4gfHwKKwkJCQkJCXN0bXQtPmtp bmQgPT0gVFJBTlNfU1RNVF9TVEFSVCkgJiYgc3RtdC0+d2FpdCkKKwkJCQkJdHJhbnNmb3JtV2Fp dEZvclN0bXQocHN0YXRlLCAoV2FpdFN0bXQgKikgc3RtdC0+d2FpdCk7CisJCQl9CisJCQkvKiBu byBicmVhayBoZXJlIC0gd2Ugd2FudCB0byBmYWxsIHRocm91Z2ggdG8gdGhlIGRlZmF1bHQgKi8K IAkJZGVmYXVsdDoKIAogCQkJLyoKQEAgLTM1NTksNiArMzU3MywyMyBAQCBhcHBseUxvY2tpbmdD bGF1c2UoUXVlcnkgKnFyeSwgSW5kZXggcnRpbmRleCwKIAlxcnktPnJvd01hcmtzID0gbGFwcGVu ZChxcnktPnJvd01hcmtzLCByYyk7CiB9CiAKKy8qCisgKiB0cmFuc2Zvcm1XYWl0Rm9yU3RtdCAt CisgKgl0cmFuc2Zvcm0gdGhlIFdBSVQgRk9SIGNsYXVzZSBvZiB0aGUgQkVHSU4gc3RhdGVtZW50 CisgKgl0cmFuc2Zvcm0gdGhlIFdBSVQgRk9SIHN0YXRlbWVudCAoVE9ETzogcmVtb3ZlIHRoaXMg bGluZSBpZiB3ZSBkb24ndCBrZWVwIGl0KQorICovCitzdGF0aWMgdm9pZAordHJhbnNmb3JtV2Fp dEZvclN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXYWl0U3RtdCAqc3RtdCkKK3sKKwlMaXN0Q2Vs bCAgICpldmVudHM7CisKKwlmb3JlYWNoKGV2ZW50cywgc3RtdC0+ZXZlbnRzKQorCXsKKwkJV2Fp dFN0bXQgICAqZXZlbnQgPSAoV2FpdFN0bXQgKikgbGZpcnN0KGV2ZW50cyk7CisJCWV2ZW50LT50 aW1lID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGV2ZW50LT50aW1lLCBFWFBSX0tJTkRfT1RIRVIp OworCX0KK30KKwogLyoKICAqIENvdmVyYWdlIHRlc3RpbmcgZm9yIHJhd19leHByZXNzaW9uX3Ry ZWVfd2Fsa2VyKCkuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBi L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggZDYzMWFjODlhOS4uYjVkODZmZjMyYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNp dmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsK IAkJU2VjTGFiZWxTdG10IFNlbGVjdFN0bXQgVHJhbnNhY3Rpb25TdG10IFRyYW5zYWN0aW9uU3Rt dExlZ2FjeSBUcnVuY2F0ZVN0bXQKIAkJVW5saXN0ZW5TdG10IFVwZGF0ZVN0bXQgVmFjdXVtU3Rt dAogCQlWYXJpYWJsZVJlc2V0U3RtdCBWYXJpYWJsZVNldFN0bXQgVmFyaWFibGVTaG93U3RtdAot CQlWaWV3U3RtdCBDaGVja1BvaW50U3RtdCBDcmVhdGVDb252ZXJzaW9uU3RtdAorCQlWaWV3U3Rt dCBXYWl0U3RtdCBDaGVja1BvaW50U3RtdCBDcmVhdGVDb252ZXJzaW9uU3RtdAogCQlEZWFsbG9j YXRlU3RtdCBQcmVwYXJlU3RtdCBFeGVjdXRlU3RtdAogCQlEcm9wT3duZWRTdG10IFJlYXNzaWdu T3duZWRTdG10CiAJCUFsdGVyVFNDb25maWd1cmF0aW9uU3RtdCBBbHRlclRTRGljdGlvbmFyeVN0 bXQKQEAgLTUzNiw3ICs1MzYsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxl Y3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPG5v ZGU+CWNhc2VfZXhwciBjYXNlX2FyZyB3aGVuX2NsYXVzZSBjYXNlX2RlZmF1bHQKICV0eXBlIDxs aXN0Pgl3aGVuX2NsYXVzZV9saXN0CiAldHlwZSA8bm9kZT4Jb3B0X3NlYXJjaF9jbGF1c2Ugb3B0 X2N5Y2xlX2NsYXVzZQotJXR5cGUgPGl2YWw+CXN1Yl90eXBlIG9wdF9tYXRlcmlhbGl6ZWQKKyV0 eXBlIDxpdmFsPglzdWJfdHlwZSB3YWl0X3N0cmF0ZWd5IG9wdF9tYXRlcmlhbGl6ZWQKICV0eXBl IDxub2RlPglOdW1lcmljT25seQogJXR5cGUgPGxpc3Q+CU51bWVyaWNPbmx5X2xpc3QKICV0eXBl IDxhbGlhcz4JYWxpYXNfY2xhdXNlIG9wdF9hbGlhc19jbGF1c2Ugb3B0X2FsaWFzX2NsYXVzZV9m b3Jfam9pbl91c2luZwpAQCAtNjQ0LDYgKzY0NCw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAldHlwZSA8cGFydGJvdW5kc3BlYz4gUGFydGl0aW9uQm91bmRTcGVjCiAldHlwZSA8bGlzdD4J CWhhc2hfcGFydGJvdW5kCiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQorJXR5 cGUgPGxpc3Q+CQl3YWl0X2xpc3QKKyV0eXBlIDxub2RlPgkJV2FpdEV2ZW50IHdhaXRfZm9yCiAK ICV0eXBlIDxub2RlPglqc29uX2Zvcm1hdF9jbGF1c2Vfb3B0CiAJCQkJanNvbl92YWx1ZV9leHBy CkBAIC03MjksNyArNzMxLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAogCUxBQkVMIExB TkdVQUdFIExBUkdFX1AgTEFTVF9QIExBVEVSQUxfUAogCUxFQURJTkcgTEVBS1BST09GIExFQVNU IExFRlQgTEVWRUwgTElLRSBMSU1JVCBMSVNURU4gTE9BRCBMT0NBTAotCUxPQ0FMVElNRSBMT0NB TFRJTUVTVEFNUCBMT0NBVElPTiBMT0NLX1AgTE9DS0VEIExPR0dFRAorCUxPQ0FMVElNRSBMT0NB TFRJTUVTVEFNUCBMT0NBVElPTiBMT0NLX1AgTE9DS0VEIExPR0dFRCBMU04KIAogCU1BUFBJTkcg TUFUQ0ggTUFUQ0hFRCBNQVRFUklBTElaRUQgTUFYVkFMVUUgTUVSR0UgTUVUSE9ECiAJTUlOVVRF X1AgTUlOVkFMVUUgTU9ERSBNT05USF9QIE1PVkUKQEAgLTc2Myw3ICs3NjUsNyBAQCBzdGF0aWMg Tm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNl cywgTm9kZSAqcXVlcnkpOwogCVNVQlNDUklQVElPTiBTVUJTVFJJTkcgU1VQUE9SVCBTWU1NRVRS SUMgU1lTSUQgU1lTVEVNX1AgU1lTVEVNX1VTRVIKIAogCVRBQkxFIFRBQkxFUyBUQUJMRVNBTVBM RSBUQUJMRVNQQUNFIFRFTVAgVEVNUExBVEUgVEVNUE9SQVJZIFRFWFRfUCBUSEVOCi0JVElFUyBU SU1FIFRJTUVTVEFNUCBUTyBUUkFJTElORyBUUkFOU0FDVElPTiBUUkFOU0ZPUk0KKwlUSUVTIFRJ TUUgVElNRU9VVCBUSU1FU1RBTVAgVE8gVFJBSUxJTkcgVFJBTlNBQ1RJT04gVFJBTlNGT1JNCiAJ VFJFQVQgVFJJR0dFUiBUUklNIFRSVUVfUAogCVRSVU5DQVRFIFRSVVNURUQgVFlQRV9QIFRZUEVT X1AKIApAQCAtNzczLDcgKzc3NSw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1Nl bGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJVkFDVVVN IFZBTElEIFZBTElEQVRFIFZBTElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBRElD IFZBUllJTkcKIAlWRVJCT1NFIFZFUlNJT05fUCBWSUVXIFZJRVdTIFZPTEFUSUxFCiAKLQlXSEVO IFdIRVJFIFdISVRFU1BBQ0VfUCBXSU5ET1cgV0lUSCBXSVRISU4gV0lUSE9VVCBXT1JLIFdSQVBQ RVIgV1JJVEUKKwlXQUlUIFdIRU4gV0hFUkUgV0hJVEVTUEFDRV9QIFdJTkRPVworCVdJVEggV0lU SElOIFdJVEhPVVQgV09SSyBXUkFQUEVSIFdSSVRFCiAKIAlYTUxfUCBYTUxBVFRSSUJVVEVTIFhN TENPTkNBVCBYTUxFTEVNRU5UIFhNTEVYSVNUUyBYTUxGT1JFU1QgWE1MTkFNRVNQQUNFUwogCVhN TFBBUlNFIFhNTFBJIFhNTFJPT1QgWE1MU0VSSUFMSVpFIFhNTFRBQkxFCkBAIC0xMTAyLDYgKzEx MDUsNyBAQCBzdG10OgogCQkJfCBWYXJpYWJsZVNldFN0bXQKIAkJCXwgVmFyaWFibGVTaG93U3Rt dAogCQkJfCBWaWV3U3RtdAorCQkJfCBXYWl0U3RtdAogCQkJfCAvKkVNUFRZKi8KIAkJCQl7ICQk ID0gTlVMTDsgfQogCQk7CkBAIC0xMDkxMSwxMiArMTA5MTUsMTMgQEAgVHJhbnNhY3Rpb25TdG10 OgogCQkJCQluLT5sb2NhdGlvbiA9IC0xOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQot CQkJfCBTVEFSVCBUUkFOU0FDVElPTiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkKKwkJ CXwgU1RBUlQgVFJBTlNBQ1RJT04gdHJhbnNhY3Rpb25fbW9kZV9saXN0X29yX2VtcHR5IHdhaXRf Zm9yCiAJCQkJewogCQkJCQlUcmFuc2FjdGlvblN0bXQgKm4gPSBtYWtlTm9kZShUcmFuc2FjdGlv blN0bXQpOwogCiAJCQkJCW4tPmtpbmQgPSBUUkFOU19TVE1UX1NUQVJUOwogCQkJCQluLT5vcHRp b25zID0gJDM7CisJCQkJCW4tPndhaXQgPSAkNDsKIAkJCQkJbi0+bG9jYXRpb24gPSAtMTsKIAkJ CQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KQEAgLTExMDE1LDEyICsxMTAyMCwxMyBAQCBUcmFu c2FjdGlvblN0bXQ6CiAJCTsKIAogVHJhbnNhY3Rpb25TdG10TGVnYWN5OgotCQkJQkVHSU5fUCBv cHRfdHJhbnNhY3Rpb24gdHJhbnNhY3Rpb25fbW9kZV9saXN0X29yX2VtcHR5CisJCQlCRUdJTl9Q IG9wdF90cmFuc2FjdGlvbiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkgd2FpdF9mb3IK IAkJCQl7CiAJCQkJCVRyYW5zYWN0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKFRyYW5zYWN0aW9uU3Rt dCk7CiAKIAkJCQkJbi0+a2luZCA9IFRSQU5TX1NUTVRfQkVHSU47CiAJCQkJCW4tPm9wdGlvbnMg PSAkMzsKKwkJCQkJbi0+d2FpdCA9ICQ0OwogCQkJCQluLT5sb2NhdGlvbiA9IC0xOwogCQkJCQkk JCA9IChOb2RlICopIG47CiAJCQkJfQpAQCAtMTU4NTQsNiArMTU4NjAsNzQgQEAgeG1sX3Bhc3Np bmdfbWVjaDoKIAkJCXwgQlkgVkFMVUVfUAogCQk7CiAKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoKKyAqCQlRVUVSWToKKyAqCQkJCVdBSVQgRk9SIDxldmVudD4gWywgPGV2ZW50PiAuLi5dCisg KgkJCQlldmVudCBpcyBvbmUgb2Y6CisgKgkJCQkJTFNOIHZhbHVlCisgKgkJCQkJVElNRU9VVCBk ZWxheQorICoJCQkJCXRpbWVzdGFtcAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dhaXRT dG10OgorCQkJV0FJVCBGT1Igd2FpdF9zdHJhdGVneSB3YWl0X2xpc3QKKwkJCQl7CisJCQkJCVdh aXRTdG10ICpuID0gbWFrZU5vZGUoV2FpdFN0bXQpOworCQkJCQluLT5zdHJhdGVneSA9ICQzOwor CQkJCQluLT5ldmVudHMgPSAkNDsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJOwor d2FpdF9mb3I6CisJCQlXQUlUIEZPUiB3YWl0X3N0cmF0ZWd5IHdhaXRfbGlzdAorCQkJCXsKKwkJ CQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0U3RtdCk7CisJCQkJCW4tPnN0cmF0ZWd5ID0g JDM7CisJCQkJCW4tPmV2ZW50cyA9ICQ0OworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJ CQl8IC8qIEVNUFRZICovCQl7ICQkID0gTlVMTDsgfTsKKword2FpdF9zdHJhdGVneToKKwkJCUFM TAkJCQkJeyAkJCA9IFdBSVRfRk9SX0FMTDsgfQorCQkJfCBBTlkJCQkJeyAkJCA9IFdBSVRfRk9S X0FOWTsgfQorCQkJfCAvKiBFTVBUWSAqLwkJeyAkJCA9IFdBSVRfRk9SX0FMTDsgfQorCQk7CisK K3dhaXRfbGlzdDoKKwkJCVdhaXRFdmVudAkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJ CQl8IHdhaXRfbGlzdCAnLCcgV2FpdEV2ZW50CXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJ CXwgd2FpdF9saXN0IFdhaXRFdmVudAkJeyAkJCA9IGxhcHBlbmQoJDEsICQyKTsgfQorCQk7CisK K1dhaXRFdmVudDoKKwkJCUxTTiBTY29uc3QKKwkJCQl7CisJCQkJCVdhaXRTdG10ICpuID0gbWFr ZU5vZGUoV2FpdFN0bXQpOworCQkJCQluLT5sc24gPSAkMjsKKwkJCQkJbi0+ZGVsYXkgPSAwOwor CQkJCQluLT50aW1lID0gTlVMTDsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBU SU1FT1VUIEljb25zdAorCQkJCXsKKwkJCQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0U3Rt dCk7CisJCQkJCW4tPmxzbiA9IE5VTEw7CisJCQkJCW4tPmRlbGF5ID0gJDI7CisJCQkJCW4tPnRp bWUgPSBOVUxMOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCQl8IENvbnN0RGF0ZXRp bWUgU2NvbnN0CisJCQkJeworCQkJCQlXYWl0U3RtdCAqbiA9IG1ha2VOb2RlKFdhaXRTdG10KTsK KwkJCQkJbi0+bHNuID0gTlVMTDsKKwkJCQkJbi0+ZGVsYXkgPSAwOworCQkJCQluLT50aW1lID0g bWFrZVN0cmluZ0NvbnN0Q2FzdCgkMiwgQDIsICQxKTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJ CQkJfQorCQkJOworCiAKIC8qCiAgKiBBZ2dyZWdhdGUgZGVjb3JhdGlvbiBjbGF1c2VzCkBAIC0x NzIzOSw2ICsxNzMxMyw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgTE9DS19QCiAJCQl8 IExPQ0tFRAogCQkJfCBMT0dHRUQKKwkJCXwgTFNOCiAJCQl8IE1BUFBJTkcKIAkJCXwgTUFUQ0gK IAkJCXwgTUFUQ0hFRApAQCAtMTczNzEsNiArMTc0NDYsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6 CiAJCQl8IFRFTVBPUkFSWQogCQkJfCBURVhUX1AKIAkJCXwgVElFUworCQkJfCBUSU1FT1VUCiAJ CQl8IFRSQU5TQUNUSU9OCiAJCQl8IFRSQU5TRk9STQogCQkJfCBUUklHR0VSCkBAIC0xNzM5Nyw2 ICsxNzQ3Myw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgVklFVwogCQkJfCBWSUVXUwog CQkJfCBWT0xBVElMRQorCQkJfCBXQUlUCiAJCQl8IFdISVRFU1BBQ0VfUAogCQkJfCBXSVRISU4K IAkJCXwgV0lUSE9VVApAQCAtMTc4MjksNiArMTc5MDYsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6 CiAJCQl8IExPQ0tfUAogCQkJfCBMT0NLRUQKIAkJCXwgTE9HR0VECisJCQl8IExTTgogCQkJfCBN QVBQSU5HCiAJCQl8IE1BVENICiAJCQl8IE1BVENIRUQKQEAgLTE3OTkxLDYgKzE4MDY5LDcgQEAg YmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBUSEVOCiAJCQl8IFRJRVMKIAkJCXwgVElNRQorCQkJ fCBUSU1FT1VUCiAJCQl8IFRJTUVTVEFNUAogCQkJfCBUUkFJTElORwogCQkJfCBUUkFOU0FDVElP TgpAQCAtMTgwMjgsNiArMTgxMDcsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFZJRVcK IAkJCXwgVklFV1MKIAkJCXwgVk9MQVRJTEUKKwkJCXwgV0FJVAogCQkJfCBXSEVOCiAJCQl8IFdI SVRFU1BBQ0VfUAogCQkJfCBXT1JLCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXggMjIyNWE0YTZl Ni4uYWFhMmRjMzM4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwpAQCAtMjUsNiArMjUsNyBAQAog I2luY2x1ZGUgImFjY2Vzcy94bG9ncHJlZmV0Y2hlci5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9n cmVjb3ZlcnkuaCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1ZGUgImNvbW1h bmRzL3dhaXQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK ICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKQEAgLTE0NSw2ICsxNDYsNyBAQCBD YWxjdWxhdGVTaG1lbVNpemUoaW50ICpudW1fc2VtYXBob3JlcykKIAlzaXplID0gYWRkX3NpemUo c2l6ZSwgQXN5bmNTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFN0YXRzU2ht ZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBXYWl0RXZlbnRFeHRlbnNpb25TaG1l bVNpemUoKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRTaG1lbVNpemUoKSk7CiAjaWZk ZWYgRVhFQ19CQUNLRU5ECiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNobWVtQmFja2VuZEFycmF5 U2l6ZSgpKTsKICNlbmRpZgpAQCAtMzQ1LDYgKzM0NywxMSBAQCBDcmVhdGVPckF0dGFjaFNobWVt U3RydWN0cyh2b2lkKQogCUFzeW5jU2htZW1Jbml0KCk7CiAJU3RhdHNTaG1lbUluaXQoKTsKIAlX YWl0RXZlbnRFeHRlbnNpb25TaG1lbUluaXQoKTsKKworCS8qCisJICogSW5pdCBhcnJheSBvZiBM YXRjaGVzIGluIHNoYXJlZCBtZW1vcnkgZm9yIFdBSVQKKwkgKi8KKwlXYWl0U2htZW1Jbml0KCk7 CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4IDM2NmEyN2FlOGUuLjJhYmUzOTRmYWQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3Av dXRpbGl0eS5jCkBAIC0xNSw2ICsxNSw3IEBACiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogI2lu Y2x1ZGUgInBvc3RncmVzLmgiCisjaW5jbHVkZSA8ZmxvYXQuaD4KIAogI2luY2x1ZGUgImFjY2Vz cy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVsb3B0aW9ucy5oIgpAQCAtNTks NiArNjAsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3VzZXIuaCIKICNpbmNsdWRlICJjb21tYW5k cy92YWN1dW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy92aWV3LmgiCisjaW5jbHVkZSAiY29tbWFu ZHMvd2FpdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJz ZV91dGlsY21kLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dyaXRlci5oIgpAQCAtNzIsNiAr NzQsOSBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3Jl bC5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Ivc3Bp LmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0aWxzL3BnX2xz bi5oIgogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9sIGluIFByb2Nlc3NVdGls aXR5KCkgKi8KIFByb2Nlc3NVdGlsaXR5X2hvb2tfdHlwZSBQcm9jZXNzVXRpbGl0eV9ob29rID0g TlVMTDsKQEAgLTI3Miw2ICsyNzcsNyBAQCBDbGFzc2lmeVV0aWxpdHlDb21tYW5kQXNSZWFkT25s eShOb2RlICpwYXJzZXRyZWUpCiAJCWNhc2UgVF9Mb2FkU3RtdDoKIAkJY2FzZSBUX1ByZXBhcmVT dG10OgogCQljYXNlIFRfVW5saXN0ZW5TdG10OgorCQljYXNlIFRfV2FpdFN0bXQ6CiAJCWNhc2Ug VF9WYXJpYWJsZVNldFN0bXQ6CiAJCQl7CiAJCQkJLyoKQEAgLTYxMiw2ICs2MTgsMTEgQEAgc3Rh bmRhcmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJCQljYXNlIFRSQU5T X1NUTVRfU1RBUlQ6CiAJCQkJCQl7CiAJCQkJCQkJTGlzdENlbGwgICAqbGM7CisJCQkJCQkJV2Fp dFN0bXQgICAqd2FpdHN0bXQgPSAoV2FpdFN0bXQgKikgc3RtdC0+d2FpdDsKKworCQkJCQkJCS8q IElmIG5lZWRlZCB0byBXQUlUIEZPUiBzb21ldGhpbmcgYnV0IGZhaWxlZCAqLworCQkJCQkJCWlm IChzdG10LT53YWl0ICYmIFdhaXRNYWluKHdhaXRzdG10LCBkZXN0KSA9PSAwKQorCQkJCQkJCQli cmVhazsKIAogCQkJCQkJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOwogCQkJCQkJCWZvcmVhY2go bGMsIHN0bXQtPm9wdGlvbnMpCkBAIC0xMDY5LDYgKzEwODAsMTMgQEAgc3RhbmRhcmRfUHJvY2Vz c1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2Ug VF9XYWl0U3RtdDoKKwkJCXsKKwkJCQlXYWl0U3RtdCAgICpzdG10ID0gKFdhaXRTdG10ICopIHBh cnNldHJlZTsKKwkJCQlXYWl0TWFpbihzdG10LCBkZXN0KTsKKwkJCQlicmVhazsKKwkJCX0KKwog CQlkZWZhdWx0OgogCQkJLyogQWxsIG90aGVyIHN0YXRlbWVudCB0eXBlcyBoYXZlIGV2ZW50IHRy aWdnZXIgc3VwcG9ydCAqLwogCQkJUHJvY2Vzc1V0aWxpdHlTbG93KHBzdGF0ZSwgcHN0bXQsIHF1 ZXJ5U3RyaW5nLApAQCAtMjg0Nyw2ICsyODY1LDEwIEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAq cGFyc2V0cmVlKQogCQkJdGFnID0gQ01EVEFHX05PVElGWTsKIAkJCWJyZWFrOwogCisJCWNhc2Ug VF9XYWl0U3RtdDoKKwkJCXRhZyA9IENNRFRBR19XQUlUOworCQkJYnJlYWs7CisKIAkJY2FzZSBU X0xpc3RlblN0bXQ6CiAJCQl0YWcgPSBDTURUQUdfTElTVEVOOwogCQkJYnJlYWs7CkBAIC0zNDk1 LDYgKzM1MTcsMTAgQEAgR2V0Q29tbWFuZExvZ0xldmVsKE5vZGUgKnBhcnNldHJlZSkKIAkJCWxl diA9IExPR1NUTVRfQUxMOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX1dhaXRTdG10OgorCQkJbGV2 ID0gTE9HU1RNVF9BTEw7CisJCQlicmVhazsKKwogCQljYXNlIFRfTGlzdGVuU3RtdDoKIAkJCWxl diA9IExPR1NUTVRfQUxMOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21t YW5kcy93YWl0LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDI3MDE2MGQ0NAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL3dhaXQuaApAQCAtMCwwICsxLDI2IEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiB3YWl0LmgKKyAqCSAgcHJvdG90eXBlcyBmb3IgY29tbWFuZHMvd2FpdC5j CisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMTYsIFBvc3RncmVTUUwgR2xv YmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTYsIFJl Z2VudHMgb2YgUG9zdGdyZXNQUk8KKyAqCisgKiBzcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmgK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBXQUlUX0gKKyNkZWZpbmUgV0FJ VF9ICisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJ0Y29wL2Rlc3QuaCIKKworZXh0 ZXJuIGludCBXYWl0VXRpbGl0eShYTG9nUmVjUHRyIGxzbiwgY29uc3QgZmxvYXQ4IGRlbGF5KTsK K2V4dGVybiBTaXplIFdhaXRTaG1lbVNpemUodm9pZCk7CitleHRlcm4gdm9pZCBXYWl0U2htZW1J bml0KHZvaWQpOworZXh0ZXJuIHZvaWQgV2FpdFNldExhdGNoKFhMb2dSZWNQdHIgY3VyX2xzbik7 CitleHRlcm4gWExvZ1JlY1B0ciBHZXRNaW5XYWl0KHZvaWQpOworZXh0ZXJuIGZsb2F0OCBXYWl0 VGltZVJlc29sdmUoQ29uc3QgKnRpbWUpOworZXh0ZXJuIGludCBXYWl0TWFpbihXYWl0U3RtdCAq c3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KTsKKworI2VuZGlmICAgLyogV0FJVF9IICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKaW5kZXggZTQ5NDMwOWRhOC4uNThlOGIxNGExYiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaApAQCAtMzUyNCw2ICszNTI0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJhbnNhY3Rp b25TdG10CiAJLyogZm9yIHR3by1waGFzZS1jb21taXQgcmVsYXRlZCBjb21tYW5kcyAqLwogCWNo YXIJICAgKmdpZCBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAJYm9vbAkJY2hh aW47CQkJLyogQU5EIENIQUlOIG9wdGlvbiAqLworCU5vZGUJICAgKndhaXQ7CQkJLyogV0FJVCBj bGF1c2U6IGxpc3Qgb2YgZXZlbnRzIHRvIHdhaXQgZm9yICovCiAJLyogdG9rZW4gbG9jYXRpb24s IG9yIC0xIGlmIHVua25vd24gKi8KIAlpbnQJCQlsb2NhdGlvbiBwZ19ub2RlX2F0dHIocXVlcnlf anVtYmxlX2xvY2F0aW9uKTsKIH0gVHJhbnNhY3Rpb25TdG10OwpAQCAtNDA3NSw0ICs0MDc2LDI2 IEBAIHR5cGVkZWYgc3RydWN0IERyb3BTdWJzY3JpcHRpb25TdG10CiAJRHJvcEJlaGF2aW9yIGJl aGF2aW9yOwkJLyogUkVTVFJJQ1Qgb3IgQ0FTQ0FERSBiZWhhdmlvciAqLwogfSBEcm9wU3Vic2Ny aXB0aW9uU3RtdDsKIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCVdBSVQgRk9SIFN0 YXRlbWVudCArIFdBSVQgRk9SIGNsYXVzZSBvZiBCRUdJTiBzdGF0ZW1lbnQKKyAqCQlUT0RPOiBp ZiB3ZSBvbmx5IHBpY2sgb25lLCByZW1vdmUgdGhlIG90aGVyCisgKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKwordHlwZWRlZiBlbnVtIFdhaXRGb3JTdHJhdGVneQoreworCVdBSVRfRk9S X0FOWSA9IDAsCisJV0FJVF9GT1JfQUxMCit9IFdhaXRGb3JTdHJhdGVneTsKKwordHlwZWRlZiBz dHJ1Y3QgV2FpdFN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCVdhaXRGb3JTdHJhdGVneSBzdHJh dGVneTsKKwlMaXN0CSAgICpldmVudHM7CQkvKiB1c2VkIGFzIGEgcG9pbnRlciB0byB0aGUgbmV4 dCBXQUlUIGV2ZW50ICovCisJY2hhcgkgICAqbHNuOwkJLyogV0FJVCBGT1IgTFNOICovCisJaW50 CQkJZGVsYXk7CQkvKiBXQUlUIEZPUiBUSU1FT1VUICovCisJTm9kZQkgICAqdGltZTsJCS8qIFdB SVQgRk9SIFRJTUVTVEFNUCBvciBUSU1FICovCit9IFdhaXRTdG10OworCiAjZW5kaWYJCQkJCQkJ LyogUEFSU0VOT0RFU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggNTk4NGRjZmE0Yi4uZGFkY2Qz YjI2NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9p bmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMjYwLDYgKzI2MCw3IEBAIFBHX0tFWVdPUkQoImxv Y2F0aW9uIiwgTE9DQVRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoImxvY2siLCBMT0NLX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImxvY2tlZCIsIExPQ0tFRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgibG9nZ2VkIiwgTE9HR0VELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCitQR19LRVlXT1JEKCJsc24iLCBMU04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoIm1hcHBpbmciLCBNQVBQSU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJtYXRjaCIsIE1BVENILCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJtYXRjaGVkIiwgTUFUQ0hFRCwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtNDMzLDYgKzQzNCw3IEBAIFBHX0tFWVdPUkQoInRl eHQiLCBURVhUX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InRoZW4iLCBUSEVOLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi dGllcyIsIFRJRVMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InRpbWUiLCBUSU1FLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgi dGltZW91dCIsIFRJTUVPVVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoInRpbWVzdGFtcCIsIFRJTUVTVEFNUCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInRvIiwgVE8sIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdf S0VZV09SRCgidHJhaWxpbmciLCBUUkFJTElORywgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKQEAgLTQ3Myw2ICs0NzUsNyBAQCBQR19LRVlXT1JEKCJ2ZXJzaW9uIiwgVkVSU0lPTl9QLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ2aWV3IiwgVklFVywg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidmlld3MiLCBWSUVX UywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidm9sYXRpbGUi LCBWT0xBVElMRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgi d2FpdCIsIFdBSVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo IndoZW4iLCBXSEVOLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi d2hlcmUiLCBXSEVSRSwgUkVTRVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCiBQR19LRVlXT1JEKCJ3 aGl0ZXNwYWNlIiwgV0hJVEVTUEFDRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaCBiL3NyYy9pbmNsdWRl L3Rjb3AvY21kdGFnbGlzdC5oCmluZGV4IDMyMGVlOTE1MTIuLjdiY2ZlYmRlMzggMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3Av Y21kdGFnbGlzdC5oCkBAIC0yMTcsMyArMjE3LDQgQEAgUEdfQ01EVEFHKENNRFRBR19UUlVOQ0FU RV9UQUJMRSwgIlRSVU5DQVRFIFRBQkxFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRB RyhDTURUQUdfVU5MSVNURU4sICJVTkxJU1RFTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19D TURUQUcoQ01EVEFHX1VQREFURSwgIlVQREFURSIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKIFBHX0NN RFRBRyhDTURUQUdfVkFDVVVNLCAiVkFDVVVNIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfV0FJVCwgIldBSVQgRk9SIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX2JlZ2luX3dhaXQucGwgYi9zcmMvdGVzdC9y ZWNvdmVyeS90LzA0MF9iZWdpbl93YWl0LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLmYxZTViNWIyM2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVy eS90LzA0MF9iZWdpbl93YWl0LnBsCkBAIC0wLDAgKzEsMTQ2IEBACisjIENoZWNrcyBXQUlUIEZP UgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKwor IyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQorbXkgJG5vZGVfcHJpbWFyeSA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworJG5vZGVfcHJpbWFyeS0+aW5pdChhbGxv d3Nfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyMgQW5kIHNvbWUg Y29udGVudCBhbmQgdGFrZSBhIGJhY2t1cAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBUQUJMRSB3YWl0X3Rlc3QgQVMgU0VMRUNUIGdlbmVyYXRlX3Nlcmll cygxLDEwKSBBUyBhIik7CitteSAkYmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKyRub2RlX3By aW1hcnktPmJhY2t1cCgkYmFja3VwX25hbWUpOworCisjIENyZWF0ZSBhIHN0cmVhbWluZyBzdGFu ZGJ5IHdpdGggYSAxIHNlY29uZCBkZWxheSBmcm9tIHRoZSBiYWNrdXAKK215ICRub2RlX3N0YW5k YnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnknKTsKK215ICRkZWxh eSAgICAgICAgPSAxOworJG5vZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgkbm9kZV9wcmlt YXJ5LCAkYmFja3VwX25hbWUsCisJaGFzX3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3N0YW5kYnkt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcVsKKwlyZWNvdmVyeV9taW5fYXBwbHlf ZGVsYXkgPSAnJHtkZWxheX1zJworXSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKworCisKKyMg TWFrZSBzdXJlIHRoYXQgV0FJVCBGT1IgTFNOIHdvcmtzOiBhZGQgbmV3IGNvbnRlbnQgdG8gcHJp bWFyeSBhbmQgbWVtb3JpemUKKyMgcHJpbWFyeSdzIG5ldyBMU04sIHRoZW4gd2FpdCBmb3IgcHJp bWFyeSdzIExTTiBvbiBzdGFuZGJ5LiBQcm92ZSB0aGF0IFdBSVQgaXMKKyMgYWJsZSB0byBzZXR1 cCBhbiBpbmZpbml0ZSB3YWl0aW5nIGxvb3AgYW5kIGV4aXQgaXQgaWYgZ2l2ZW4gbm8gd2FpdCB0 aW1lb3V0LgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJ TlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygxMSwgMjApKSIpOworbXkgJGxz bjEgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJy ZW50X3dhbF9sc24oKSIpOworJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJC RUdJTiBXQUlUIEZPUiBMU04gJyRsc24xJyIpOworCisjIEdldCB0aGUgY3VycmVudCBMU04gb24g c3RhbmRieSBhbmQgbWFrZSBzdXJlIGl0J3MgdGhlIHNhbWUgYXMgcHJpbWFyeSdzIExTTgorbXkg JGxzbl9zdGFuZGJ5ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKCkiKTsKK215ICRjb21wYXJlX2xzbnMgPSAkbm9k ZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xzbl9jbXAoJyRs c25fc3RhbmRieSc6OnBnX2xzbiwgJyRsc24xJzo6cGdfbHNuKSIpOworb2soJGNvbXBhcmVfbHNu cyBlcSAwLCAic3RhbmRieSByZWFjaGVkIHRoZSBzYW1lIExTTiBhcyBwcmltYXJ5IGFmdGVyIFdB SVQiKTsKKworCisKKyMgQ2hlY2sgdGhhdCB0aW1lb3V0cyB3b3JrIG9uIHRoZWlyIG93biBhbmQg bGV0IHVzIHdhaXQgZm9yIHNwZWNpZmllZCB0aW1lICgxcykKK215ICRjdXJyZW50X3RpbWUgPSAk bm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBub3coKSIpOworbXkg JG9uZV9zZWNvbmQgPSAxMDAwOyAjIGluIG1pbGxpc2Vjb25kcworbXkgJHN0YXJ0X3RpbWUgPSB0 aW1lKCk7CisjIFdoaWxlIHdlJ3JlIGF0IGl0LCBhbHNvIG1ha2Ugc3VyZSB0aGF0IHRoZSBzeW50 YXggd2l0aCBjb21tYXMgd29ya3MgZmluZSBhbmQKKyMgdGhhdCBieSBkZWZhdWx0IHdlIHVzZSBX QUlUIEZPUiBBTEwgc3RyYXRlZ3ksIHdoaWNoIG1lYW5zIHdhaXRpbmcgZm9yIG1heCB0aW1lCisk bm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiV0FJVCBGT1IgVElNRU9VVCAk b25lX3NlY29uZCwgVElNRVNUQU1QICckY3VycmVudF90aW1lJyIpOworbXkgJHRpbWVfd2FpdGVk ID0gKHRpbWUoKSAtICRzdGFydF90aW1lKSAqIDEwMDA7ICMgY29udmVydCB0byBtaWxsaXNlY29u ZHMKK29rKCR0aW1lX3dhaXRlZCA+PSAkb25lX3NlY29uZCwgIldBSVQgRk9SIFRJTUVPVVQgd2Fp dHMgZm9yIGVub3VnaCB0aW1lIik7CisKKyMgTm93LCBjaGVjayB0aGF0IHRpbWVvdXRzIHdvcmsg YXMgZXhwZWN0ZWQgd2hlbiB3YWl0aW5nIGZvciBMU04KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9z ZXJpZXMoMjEsIDMwKSkiKTsKK215ICRsc24yID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKK215ICRyZWFjaGVkX2xz biA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJCRUdJTiBXQUlUIEZP UiBMU04gJyRsc24yJyBUSU1FT1VUIDEiKTsKK29rKCRyZWFjaGVkX2xzbiBlcSAiZiIsICJXQUlU IGRvZXNuJ3QgcmVhY2ggTFNOIGlmIGdpdmVuIHRvbyBsaXR0bGUgd2FpdCB0aW1lIik7CisKKwor Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVE9ETzogcmVtb3ZlIHRoaXMgdGVzdCBpZiB3ZSBy ZW1vdmUgdGhlIHN0YW5kYWxvbmUgIldBSVQgRk9SIiBjb21tYW5kCisjPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorIyBXZSBuZWVkIHRvIGNoZWNrIHRoYXQgV0FJVCB3b3JrcyBmaW5lIGluc2lkZSB0 cmFuc2FjdGlvbnMuIEZvciB0aGF0LCBsZXQncworIyBnZXQgdHdvIExTTnMgdGhhdCB3aWxsIGNv cnJlc3BvbmQgdG8gdHdvIGRpZmZlcmVudCBtYXggdmFsdWVzIGluIG91ciB0YWJsZS4KKyRub2Rl X3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3Qg VkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMzEsIDQwKSkiKTsKK215ICRsc24zID0gJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCki KTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3 YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNDEsIDUwKSkiKTsKK215ICRsc240ID0g JG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93 YWxfbHNuKCkiKTsKKworIyBCZWZvcmUgc3RhcnRpbmcgdHJhbnNhY3Rpb24sIHdhaXQgZm9yIExT TiB3aGljaCBlbnN1cmVzIGEgbWF4IHZhbHVlIG9mIDQwLgorIyBJbnNpZGUgdGhlIHRyYW5zYWN0 aW9uLCB3YWl0IGZvciBMU04gdGhhdCBlbnN1cmVzIGEgbWF4IHZhbHVlIG9mIDUwLgorIyBEdWUg dG8gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRCwgd2Ugc2hvdWxkIE5PVCBzZWUgdGhl IG5ldyBtYXggdmFsdWUuCitteSAkc3RhbmRieV9yZXN1bHRzID0gJG5vZGVfc3RhbmRieS0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworCUJFR0lOIFRSQU5TQUNUSU9OIElTT0xBVElPTiBM RVZFTCBSRVBFQVRBQkxFIFJFQUQgV0FJVCBGT1IgTFNOICckbHNuMyc7CisJU0VMRUNUIG1heChh KSBGUk9NIHdhaXRfdGVzdDsKKwlCRUdJTiBXQUlUIEZPUiBMU04gJyRsc240JzsKKwlTRUxFQ1Qg cGdfbGFzdF93YWxfcmVwbGF5X2xzbigpOworCVNFTEVDVCBtYXgoYSkgRlJPTSB3YWl0X3Rlc3Q7 CisJQ09NTUlUOworXSk7CisKKyMgTWFrZSBzdXJlIHRoYXQgd2UgaW5kZWVkIHJlYWNoIHByaW1h cnkncyBsYXN0IExTTiBpbnNpZGUgdGhlIHRyYW5zYWN0aW9uLgorIyBGb3IgdGhhdCwgY2hlY2sg dGhhdCBjYWxsaW5nIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24gcmV0dXJuZWQgdGhhdCBMU04uCitt eSAkbGFzdF9sc25fcmVhY2hlZCA9ICRzdGFuZGJ5X3Jlc3VsdHMgPX4gLyRsc240LzsKK29rKCRs YXN0X2xzbl9yZWFjaGVkLCAiV0FJVCBGT1IgTFNOIHdvcmtzIGluc2lkZSBhIHRyYW5zYWN0aW9u Iik7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBkb2Vzbid0IGJyZWFrIGFuZCBzaG93IHVz IHRoZSBuZXcgbWF4IHZhbHVlIGFmdGVyIFdBSVQuCisjIEZvciB0aGF0LCBtYWtlIHN1cmUgdGhh dCB0aGUgb2xkZXIgbWF4IHZhbHVlIGlzIHJlcGVhdGVkIHR3aWNlIGluIHRoZSByZXN1bHRzLgor bXkgJGNvdW50ID0gKCkgPSAkc3RhbmRieV9yZXN1bHRzID1+IC80MC9nOworb2soJGNvdW50IGVx IDIsICJ0cmFuc2FjdGlvbiBpc29sYXRpb24gbGV2ZWwgZG9lc24ndCBnZXQgYnJva2VuIGR1ZSB0 byBXQUlUIik7CisKKworCisjIEdldCBtdWx0aXBsZSBMU05zIGZvciB0ZXN0aW5nIFdBSVQgRk9S IEFOWSAvIFdBSVQgRk9SIEFMTAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcyg1MSwgNjAp KSIpOworbXkgJGxzbjUgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmll cyg2MSwgNzAwMDApKSIpOworbXkgJGxzbjYgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworJG5vZGVfcHJpbWFyeS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdl bmVyYXRlX3Nlcmllcyg2MSwgODAwMDAwKSkiKTsKK215ICRsc243ID0gJG5vZGVfcHJpbWFyeS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKKwor IyBDaGVjayB0aGF0IFdBSVQgRk9SIEFOWSB3b3JrcyBmaW5lCiskbm9kZV9zdGFuZGJ5LT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQkVHSU4gV0FJVCBGT1IgQU5ZIExTTiAnJGxzbjUnIExTTiAn JGxzbjYnIExTTiAnJGxzbjcnIik7CiskbHNuX3N0YW5kYnkgPSAkbm9kZV9zdGFuZGJ5LT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKSIpOwor JGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJT RUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxzbjUnOjpwZ19sc24p Iik7CitvaygkY29tcGFyZV9sc25zIGdlIDAsCisJIldBSVQgRk9SIEFOWSBtYWtlcyB1cyByZWFj aCBhdCBsZWFzdCB0aGUgbWluaW11bSBMU04gZnJvbSB0aGUgbGlzdCIpOworJGNvbXBhcmVfbHNu cyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNu X2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxzbjcnOjpwZ19sc24pIik7CisjIFRPRE86 IENvdWxkIHRoaXMgc29tZWhvdyBmYWlsIGR1ZSB0byB0aGUgbWFjaGluZSBiZWluZyB2ZXJ5IGZh c3QgYXQgYXBwbHlpbmcgTFNOPworb2soJGNvbXBhcmVfbHNucyBsdCAwLAorCSJXQUlUIEZPUiBB TlkgZGlkbid0IG1ha2UgdXMgcmVhY2ggdGhlIG1heGltdW0gTFNOIGZyb20gdGhlIGxpc3QiKTsK KworIyBDaGVjayB0aGF0IFdBSVQgRk9SIEFMTCB3b3JrcyBmaW5lCiskbm9kZV9zdGFuZGJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQkVHSU4gV0FJVCBGT1IgQUxMIExTTiAnJGxzbjUnLCBM U04gJyRsc242JywgTFNOICckbHNuNyciKTsKKyRsc25fc3RhbmRieSA9ICRub2RlX3N0YW5kYnkt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbGFzdF93YWxfcmVwbGF5X2xzbigp Iik7CiskY29tcGFyZV9sc25zID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwZ19sc25fY21wKCckbHNuX3N0YW5kYnknOjpwZ19sc24sICckbHNuNyc6OnBn X2xzbikiKTsKK29rKCRjb21wYXJlX2xzbnMgZXEgMCwKKwkiV0FJVCBGT1IgQUxMIG1ha2VzIHVz IHJlYWNoIHRoZSBtYXhpbXVtIExTTiBmcm9tIHRoZSBsaXN0Iik7CisKKworCiskbm9kZV9zdGFu ZGJ5LT5zdG9wOworJG5vZGVfcHJpbWFyeS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDFfd2FpdC5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDQxX3dhaXQucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNmY5 ZDU0OTQxNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQxX3dhaXQu cGwKQEAgLTAsMCArMSwxNDUgQEAKKyMgQ2hlY2tzIFdBSVQgRk9SCit1c2Ugc3RyaWN0OwordXNl IHdhcm5pbmdzOworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjIEluaXRpYWxpemUgcHJpbWFy eSBub2RlCitteSAkbm9kZV9wcmltYXJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3 KCdwcmltYXJ5Jyk7Ciskbm9kZV9wcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSk7 Ciskbm9kZV9wcmltYXJ5LT5zdGFydDsKKworIyBBbmQgc29tZSBjb250ZW50IGFuZCB0YWtlIGEg YmFja3VwCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRB QkxFIHdhaXRfdGVzdCBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIGEiKTsKK215 ICRiYWNrdXBfbmFtZSA9ICdteV9iYWNrdXAnOworJG5vZGVfcHJpbWFyeS0+YmFja3VwKCRiYWNr dXBfbmFtZSk7CisKKyMgQ3JlYXRlIGEgc3RyZWFtaW5nIHN0YW5kYnkgd2l0aCBhIDEgc2Vjb25k IGRlbGF5IGZyb20gdGhlIGJhY2t1cAorbXkgJG5vZGVfc3RhbmRieSA9IFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieScpOworbXkgJGRlbGF5ICAgICAgICA9IDE7Ciskbm9k ZV9zdGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKCRub2RlX3ByaW1hcnksICRiYWNrdXBfbmFtZSwK KwloYXNfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsIHFxWworCXJlY292ZXJ5X21pbl9hcHBseV9kZWxheSA9ICcke2RlbGF5fXMn CitdKTsKKyRub2RlX3N0YW5kYnktPnN0YXJ0OworCisKKworIyBNYWtlIHN1cmUgdGhhdCBXQUlU IEZPUiBMU04gd29ya3M6IGFkZCBuZXcgY29udGVudCB0byBwcmltYXJ5IGFuZCBtZW1vcml6ZQor IyBwcmltYXJ5J3MgbmV3IExTTiwgdGhlbiB3YWl0IGZvciBwcmltYXJ5J3MgTFNOIG9uIHN0YW5k YnkuIFByb3ZlIHRoYXQgV0FJVCBpcworIyBhYmxlIHRvIHNldHVwIGFuIGluZmluaXRlIHdhaXRp bmcgbG9vcCBhbmQgZXhpdCBpdCBpZiBnaXZlbiBubyB3YWl0IHRpbWVvdXQuCiskbm9kZV9wcmlt YXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVF UyAoZ2VuZXJhdGVfc2VyaWVzKDExLCAyMCkpIik7CitteSAkbHNuMSA9ICRub2RlX3ByaW1hcnkt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7Cisk bm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIldBSVQgRk9SIExTTiAnJGxzbjEn Iik7CisKKyMgR2V0IHRoZSBjdXJyZW50IExTTiBvbiBzdGFuZGJ5IGFuZCBtYWtlIHN1cmUgaXQn cyB0aGUgc2FtZSBhcyBwcmltYXJ5J3MgTFNOCitteSAkbHNuX3N0YW5kYnkgPSAkbm9kZV9zdGFu ZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9s c24oKSIpOworbXkgJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxz bjEnOjpwZ19sc24pIik7CitvaygkY29tcGFyZV9sc25zIGVxIDAsICJzdGFuZGJ5IHJlYWNoZWQg dGhlIHNhbWUgTFNOIGFzIHByaW1hcnkgYWZ0ZXIgV0FJVCIpOworCisKKworIyBDaGVjayB0aGF0 IHRpbWVvdXRzIHdvcmsgb24gdGhlaXIgb3duIGFuZCBsZXQgdXMgd2FpdCBmb3Igc3BlY2lmaWVk IHRpbWUgKDFzKQorbXkgJGN1cnJlbnRfdGltZSA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIG5vdygpIik7CitteSAkb25lX3NlY29uZCA9IDEwMDA7ICMgaW4g bWlsbGlzZWNvbmRzCitteSAkc3RhcnRfdGltZSA9IHRpbWUoKTsKKyMgV2hpbGUgd2UncmUgYXQg aXQsIGFsc28gbWFrZSBzdXJlIHRoYXQgdGhlIHN5bnRheCB3aXRoIGNvbW1hcyB3b3JrcyBmaW5l IGFuZAorIyB0aGF0IGJ5IGRlZmF1bHQgd2UgdXNlIFdBSVQgRk9SIEFMTCBzdHJhdGVneSwgd2hp Y2ggbWVhbnMgd2FpdGluZyBmb3IgbWF4IHRpbWUKKyRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJXQUlUIEZPUiBUSU1FT1VUICRvbmVfc2Vjb25kLCBUSU1FU1RBTVAgJyRj dXJyZW50X3RpbWUnIik7CitteSAkdGltZV93YWl0ZWQgPSAodGltZSgpIC0gJHN0YXJ0X3RpbWUp ICogMTAwMDsgIyBjb252ZXJ0IHRvIG1pbGxpc2Vjb25kcworb2soJHRpbWVfd2FpdGVkID49ICRv bmVfc2Vjb25kLCAiV0FJVCBGT1IgVElNRU9VVCB3YWl0cyBmb3IgZW5vdWdoIHRpbWUiKTsKKwor IyBOb3csIGNoZWNrIHRoYXQgdGltZW91dHMgd29yayBhcyBleHBlY3RlZCB3aGVuIHdhaXRpbmcg Zm9yIExTTgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJ TlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygyMSwgMzApKSIpOworbXkgJGxz bjIgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJy ZW50X3dhbF9sc24oKSIpOworbXkgJHJlYWNoZWRfbHNuID0gJG5vZGVfc3RhbmRieS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIldBSVQgRk9SIExTTiAnJGxzbjInIFRJTUVPVVQgMSIpOworb2so JHJlYWNoZWRfbHNuIGVxICJmIiwgIldBSVQgZG9lc24ndCByZWFjaCBMU04gaWYgZ2l2ZW4gdG9v IGxpdHRsZSB3YWl0IHRpbWUiKTsKKworCisKKyMgV2UgbmVlZCB0byBjaGVjayB0aGF0IFdBSVQg d29ya3MgZmluZSBpbnNpZGUgdHJhbnNhY3Rpb25zLiBGb3IgdGhhdCwgbGV0J3MKKyMgZ2V0IHR3 byBMU05zIHRoYXQgd2lsbCBjb3JyZXNwb25kIHRvIHR3byBkaWZmZXJlbnQgbWF4IHZhbHVlcyBp biBvdXIgdGFibGUuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5T RVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDMxLCA0MCkpIik7Citt eSAkbHNuMyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBn X2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDQxLCA1 MCkpIik7CitteSAkbHNuNCA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CisKKyMgQmVmb3JlIHN0YXJ0aW5nIHRyYW5z YWN0aW9uLCB3YWl0IGZvciBMU04gd2hpY2ggZW5zdXJlcyBhIG1heCB2YWx1ZSBvZiA0MC4KKyMg SW5zaWRlIHRoZSB0cmFuc2FjdGlvbiwgd2FpdCBmb3IgTFNOIHRoYXQgZW5zdXJlcyBhIG1heCB2 YWx1ZSBvZiA1MC4KKyMgRHVlIHRvIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQsIHdl IHNob3VsZCBOT1Qgc2VlIHRoZSBuZXcgbWF4IHZhbHVlLgorbXkgJHN0YW5kYnlfcmVzdWx0cyA9 ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlXQUlUIEZPUiBM U04gJyRsc24zJzsKKwlCRUdJTiBUUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJM RSBSRUFEOworCVNFTEVDVCBtYXgoYSkgRlJPTSB3YWl0X3Rlc3Q7CisJV0FJVCBGT1IgTFNOICck bHNuNCc7CisJU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKTsKKwlTRUxFQ1QgbWF4KGEp IEZST00gd2FpdF90ZXN0OworCUNPTU1JVDsKK10pOworCisjIE1ha2Ugc3VyZSB0aGF0IHdlIGlu ZGVlZCByZWFjaCBwcmltYXJ5J3MgbGFzdCBMU04gaW5zaWRlIHRoZSB0cmFuc2FjdGlvbi4KKyMg Rm9yIHRoYXQsIGNoZWNrIHRoYXQgY2FsbGluZyBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuIHJldHVy bmVkIHRoYXQgTFNOLgorbXkgJGxhc3RfbHNuX3JlYWNoZWQgPSAkc3RhbmRieV9yZXN1bHRzID1+ IC8kbHNuNC87CitvaygkbGFzdF9sc25fcmVhY2hlZCwgIldBSVQgRk9SIExTTiB3b3JrcyBpbnNp ZGUgYSB0cmFuc2FjdGlvbiIpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gZG9lc24ndCBi cmVhayBhbmQgc2hvdyB1cyB0aGUgbmV3IG1heCB2YWx1ZSBhZnRlciBXQUlULgorIyBGb3IgdGhh dCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9sZGVyIG1heCB2YWx1ZSBpcyByZXBlYXRlZCB0d2ljZSBp biB0aGUgcmVzdWx0cy4KK215ICRjb3VudCA9ICgpID0gJHN0YW5kYnlfcmVzdWx0cyA9fiAvNDAv ZzsKK29rKCRjb3VudCBlcSAyLCAidHJhbnNhY3Rpb24gaXNvbGF0aW9uIGxldmVsIGRvZXNuJ3Qg Z2V0IGJyb2tlbiBkdWUgdG8gV0FJVCIpOworCisKKworIyBHZXQgbXVsdGlwbGUgTFNOcyBmb3Ig dGVzdGluZyBXQUlUIEZPUiBBTlkgLyBXQUlUIEZPUiBBTEwKKyRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0 ZV9zZXJpZXMoNTEsIDYwKSkiKTsKK215ICRsc241ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKKyRub2RlX3ByaW1h cnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVT IChnZW5lcmF0ZV9zZXJpZXMoNjEsIDcwMDAwKSkiKTsKK215ICRsc242ID0gJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsK KyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0 X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNjEsIDgwMDAwMCkpIik7CitteSAkbHNuNyA9 ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRf d2FsX2xzbigpIik7CisKKyMgQ2hlY2sgdGhhdCBXQUlUIEZPUiBBTlkgd29ya3MgZmluZQorJG5v ZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIldBSVQgRk9SIEFOWSBMU04gJyRs c241JyBMU04gJyRsc242JyBMU04gJyRsc243JyIpOworJGxzbl9zdGFuZGJ5ID0gJG5vZGVfc3Rh bmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sYXN0X3dhbF9yZXBsYXlf bHNuKCkiKTsKKyRjb21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHBnX2xzbl9jbXAoJyRsc25fc3RhbmRieSc6OnBnX2xzbiwgJyRsc241 Jzo6cGdfbHNuKSIpOworb2soJGNvbXBhcmVfbHNucyBnZSAwLAorCSJXQUlUIEZPUiBBTlkgbWFr ZXMgdXMgcmVhY2ggYXQgbGVhc3QgdGhlIG1pbmltdW0gTFNOIGZyb20gdGhlIGxpc3QiKTsKKyRj b21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBnX2xzbl9jbXAoJyRsc25fc3RhbmRieSc6OnBnX2xzbiwgJyRsc243Jzo6cGdfbHNuKSIp OworIyBUT0RPOiBDb3VsZCB0aGlzIHNvbWVob3cgZmFpbCBkdWUgdG8gdGhlIG1hY2hpbmUgYmVp bmcgdmVyeSBmYXN0IGF0IGFwcGx5aW5nIExTTj8KK29rKCRjb21wYXJlX2xzbnMgbHQgMCwKKwki V0FJVCBGT1IgQU5ZIGRpZG4ndCBtYWtlIHVzIHJlYWNoIHRoZSBtYXhpbXVtIExTTiBmcm9tIHRo ZSBsaXN0Iik7CisKKyMgQ2hlY2sgdGhhdCBXQUlUIEZPUiBBTEwgd29ya3MgZmluZQorJG5vZGVf c3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIldBSVQgRk9SIEFMTCBMU04gJyRsc241 JywgTFNOICckbHNuNicsIExTTiAnJGxzbjcnIik7CiskbHNuX3N0YW5kYnkgPSAkbm9kZV9zdGFu ZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9s c24oKSIpOworJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxzbjcn OjpwZ19sc24pIik7CitvaygkY29tcGFyZV9sc25zIGVxIDAsCisJIldBSVQgRk9SIEFMTCBtYWtl cyB1cyByZWFjaCB0aGUgbWF4aW11bSBMU04gZnJvbSB0aGUgbGlzdCIpOworCisKKworJG5vZGVf c3RhbmRieS0+c3RvcDsKKyRub2RlX3ByaW1hcnktPnN0b3A7Citkb25lX3Rlc3RpbmcoKTsK --=_4fbdf0ad13d72211dff1e46d32ad8140 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=wait_proc_v7.patch Content-Disposition: attachment; filename=wait_proc_v7.patch; size=16423 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggYzYxNTY2NjY2 YS4uZWRiYmUyMDhjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Z3JlY292ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5 LmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJiYWNrdXAvYmFzZWJhY2t1cC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfY29udHJvbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3Bh Y2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy93YWl0LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVf dXRpbHMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKQEAg LTE3ODAsNiArMTc4MSwxNSBAQCBQZXJmb3JtV2FsUmVjb3Zlcnkodm9pZCkKIAkJCQlicmVhazsK IAkJCX0KIAorCQkJLyoKKwkJCSAqIElmIHdlIHJlcGxheWVkIGFuIExTTiB0aGF0IHNvbWVvbmUg d2FzIHdhaXRpbmcgZm9yLAorCQkJICogc2V0IGxhdGNoZXMgaW4gc2hhcmVkIG1lbW9yeSBhcnJh eSB0byBub3RpZnkgdGhlIHdhaXRlci4KKwkJCSAqLworCQkJaWYgKFhMb2dSZWNvdmVyeUN0bC0+ bGFzdFJlcGxheWVkRW5kUmVjUHRyID49IEdldE1pbldhaXRlZExTTigpKQorCQkJeworCQkJCVdh aXRTZXRMYXRjaChYTG9nUmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0cik7CisJCQl9 CisKIAkJCS8qIEVsc2UsIHRyeSB0byBmZXRjaCB0aGUgbmV4dCBXQUwgcmVjb3JkICovCiAJCQly ZWNvcmQgPSBSZWFkUmVjb3JkKHhsb2dwcmVmZXRjaGVyLCBMT0csIGZhbHNlLCByZXBsYXlUTEkp OwogCQl9IHdoaWxlIChyZWNvcmQgIT0gTlVMTCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCmluZGV4IDQ4 ZjczNDhmOTEuLmQ4ZjY5NjVkOGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01h a2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCkBAIC02MSw2ICs2MSw3 IEBAIE9CSlMgPSBcCiAJdmFjdXVtLm8gXAogCXZhY3V1bXBhcmFsbGVsLm8gXAogCXZhcmlhYmxl Lm8gXAotCXZpZXcubworCXZpZXcubyBcCisJd2FpdC5vCiAKIGluY2x1ZGUgJCh0b3Bfc3JjZGly KS9zcmMvYmFja2VuZC9jb21tb24ubWsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKaW5kZXggNDJj Y2VkOWViZS4uZWM2YWI3NzIyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVz b24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKQEAgLTUwLDQg KzUwLDUgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAndmFjdXVtcGFyYWxsZWwuYycs CiAgICd2YXJpYWJsZS5jJywKICAgJ3ZpZXcuYycsCisgICd3YWl0LmMnLAogKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2Fp dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ5OTRlNWY0YzMKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMKQEAgLTAsMCArMSwy ODYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHdhaXQuYworICoJICBJbXBsZW1lbnRz IHdhaXQgbHNuLCB3aGljaCBhbGxvd3Mgd2FpdGluZyBmb3IgZXZlbnRzIHN1Y2ggYXMKKyAqCSAg TFNOIGhhdmluZyBiZWVuIHJlcGxheWVkIG9uIHJlcGxpY2EuCisgKgorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk2LTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjMsIFJlZ2VudHMgb2YgUG9zdGdyZXNQcm8K KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlIDxtYXRoLmg+CisKKyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImFj Y2Vzcy94bG9nLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgorI2luY2x1ZGUg ImFjY2Vzcy94bG9nZGVmcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQuaCIKKyNpbmNsdWRl ICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicGdzdGF0Lmgi CisjaW5jbHVkZSAic3RvcmFnZS9iYWNrZW5kaWQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Btc2ln bmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1l bS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9z cGluLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19s c24uaCIKKyNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKworLyogQWRkIHRvIHNoYXJlZCBt ZW1vcnkgYXJyYXkgKi8KK3N0YXRpYyB2b2lkIEFkZFdhaXRlZExTTihYTG9nUmVjUHRyIGxzbl90 b193YWl0KTsKKworLyogU2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgKi8KK3R5cGVkZWYgc3RydWN0 Cit7CisJaW50CQkJYmFja2VuZF9tYXhpZDsKKwlwZ19hdG9taWNfdWludDY0IG1pbl9sc247IC8q IFhMb2dSZWNQdHIgb2YgbWluaW1hbCB3YWl0ZWQgZm9yIExTTiAqLworCXNsb2NrX3QJCW11dGV4 OworCS8qIExTTnMgdGhhdCBkaWZmZXJlbnQgYmFja2VuZHMgYXJlIHdhaXRpbmcgKi8KKwlYTG9n UmVjUHRyCWxzbltGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBXYWl0U3RhdGU7CisKK3N0YXRp YyBXYWl0U3RhdGUgKnN0YXRlOworCisvKgorICogQWRkIHRoZSB3YWl0IGV2ZW50IG9mIHRoZSBj dXJyZW50IGJhY2tlbmQgdG8gc2hhcmVkIG1lbW9yeSBhcnJheQorICovCitzdGF0aWMgdm9pZAor QWRkV2FpdGVkTFNOKFhMb2dSZWNQdHIgbHNuX3RvX3dhaXQpCit7CisJU3BpbkxvY2tBY3F1aXJl KCZzdGF0ZS0+bXV0ZXgpOworCWlmIChzdGF0ZS0+YmFja2VuZF9tYXhpZCA8IE15QmFja2VuZElk KQorCQlzdGF0ZS0+YmFja2VuZF9tYXhpZCA9IE15QmFja2VuZElkOworCisJc3RhdGUtPmxzbltN eUJhY2tlbmRJZF0gPSBsc25fdG9fd2FpdDsKKworCWlmIChsc25fdG9fd2FpdCA8IHN0YXRlLT5t aW5fbHNuLnZhbHVlKQorCQlzdGF0ZS0+bWluX2xzbi52YWx1ZSA9IGxzbl90b193YWl0OworCVNw aW5Mb2NrUmVsZWFzZSgmc3RhdGUtPm11dGV4KTsKK30KKworLyoKKyAqIERlbGV0ZSB3YWl0IGV2 ZW50IG9mIHRoZSBjdXJyZW50IGJhY2tlbmQgZnJvbSB0aGUgc2hhcmVkIG1lbW9yeSBhcnJheS4K KyAqLwordm9pZAorRGVsZXRlV2FpdGVkTFNOKHZvaWQpCit7CisJaW50CQkJaTsKKwlYTG9nUmVj UHRyCWxzbl90b19kZWxldGU7CisKKwlTcGluTG9ja0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisK Kwlsc25fdG9fZGVsZXRlID0gc3RhdGUtPmxzbltNeUJhY2tlbmRJZF07CisJc3RhdGUtPmxzbltN eUJhY2tlbmRJZF0gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKworCS8qIElmIHdlIGFyZSBkZWxldGlu ZyB0aGUgbWluaW1hbCBMU04sIHRoZW4gY2hvb3NlIHRoZSBuZXh0IG1pbl9sc24gKi8KKwlpZiAo bHNuX3RvX2RlbGV0ZSAhPSBJbnZhbGlkWExvZ1JlY1B0ciAmJgorCQlsc25fdG9fZGVsZXRlID09 IHN0YXRlLT5taW5fbHNuLnZhbHVlKQorCXsKKwkJc3RhdGUtPm1pbl9sc24udmFsdWUgPSBQR19V SU5UNjRfTUFYOworCQlmb3IgKGkgPSAyOyBpIDw9IHN0YXRlLT5iYWNrZW5kX21heGlkOyBpKysp CisJCQlpZiAoc3RhdGUtPmxzbltpXSAhPSBJbnZhbGlkWExvZ1JlY1B0ciAmJgorCQkJCXN0YXRl LT5sc25baV0gPCBzdGF0ZS0+bWluX2xzbi52YWx1ZSkKKwkJCQlzdGF0ZS0+bWluX2xzbi52YWx1 ZSA9IHN0YXRlLT5sc25baV07CisJfQorCisJLyogSWYgZGVsZXRpbmcgZnJvbSB0aGUgZW5kIG9m IHRoZSBhcnJheSwgc2hvcnRlbiB0aGUgYXJyYXkncyB1c2VkIHBhcnQgKi8KKwlpZiAoc3RhdGUt PmJhY2tlbmRfbWF4aWQgPT0gTXlCYWNrZW5kSWQpCisJCWZvciAoaSA9IChNeUJhY2tlbmRJZCk7 IGkgPj0gMjsgaS0tKQorCQkJaWYgKHN0YXRlLT5sc25baV0gIT0gSW52YWxpZFhMb2dSZWNQdHIp CisJCQl7CisJCQkJc3RhdGUtPmJhY2tlbmRfbWF4aWQgPSBpOworCQkJCWJyZWFrOworCQkJfQor CisJU3BpbkxvY2tSZWxlYXNlKCZzdGF0ZS0+bXV0ZXgpOworfQorCisvKgorICogUmVwb3J0IGFt b3VudCBvZiBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBmb3IgV2FpdFN0YXRlCisgKi8KK1Np emUKK1dhaXRTaG1lbVNpemUodm9pZCkKK3sKKwlTaXplCQlzaXplOworCisJc2l6ZSA9IG9mZnNl dG9mKFdhaXRTdGF0ZSwgbHNuKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoTWF4 QmFja2VuZHMgKyAxLCBzaXplb2YoWExvZ1JlY1B0cikpKTsKKwlyZXR1cm4gc2l6ZTsKK30KKwor LyoKKyAqIEluaXRpYWxpemUgYW4gYXJyYXkgb2YgZXZlbnRzIHRvIHdhaXQgZm9yIGluIHNoYXJl ZCBtZW1vcnkKKyAqLwordm9pZAorV2FpdFNobWVtSW5pdCh2b2lkKQoreworCWJvb2wJCWZvdW5k OworCXVpbnQzMgkJaTsKKworCXN0YXRlID0gKFdhaXRTdGF0ZSAqKSBTaG1lbUluaXRTdHJ1Y3Qo InBnX3dhaXRfbHNuIiwKKwkJCQkJCQkJCQkgIFdhaXRTaG1lbVNpemUoKSwKKwkJCQkJCQkJCQkg ICZmb3VuZCk7CisJaWYgKCFmb3VuZCkKKwl7CisJCVNwaW5Mb2NrSW5pdCgmc3RhdGUtPm11dGV4 KTsKKworCQlmb3IgKGkgPSAwOyBpIDwgKE1heEJhY2tlbmRzICsgMSk7IGkrKykKKwkJCXN0YXRl LT5sc25baV0gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKworCQlzdGF0ZS0+YmFja2VuZF9tYXhpZCA9 IDA7CisJCXN0YXRlLT5taW5fbHNuLnZhbHVlID0gUEdfVUlOVDY0X01BWDsKKwl9Cit9CisKKy8q CisgKiBTZXQgbGF0Y2hlcyBpbiBzaGFyZWQgbWVtb3J5IHRvIHNpZ25hbCB0aGF0IG5ldyBMU04g aGFzIGJlZW4gcmVwbGF5ZWQKKyAqLwordm9pZAorV2FpdFNldExhdGNoKFhMb2dSZWNQdHIgY3Vy X2xzbikKK3sKKwl1aW50MzIJCWk7CisJaW50CQkJYmFja2VuZF9tYXhpZDsKKwlQR1BST0MJICAg KmJhY2tlbmQ7CisKKwlTcGluTG9ja0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisJYmFja2VuZF9t YXhpZCA9IHN0YXRlLT5iYWNrZW5kX21heGlkOworCisJZm9yIChpID0gMjsgaSA8PSBiYWNrZW5k X21heGlkOyBpKyspCisJeworCQliYWNrZW5kID0gQmFja2VuZElkR2V0UHJvYyhpKTsKKworCQlp ZiAoYmFja2VuZCAmJiBzdGF0ZS0+bHNuW2ldICE9IDAgJiYKKwkJCXN0YXRlLT5sc25baV0gPD0g Y3VyX2xzbikKKwkJeworCQkJU2V0TGF0Y2goJmJhY2tlbmQtPnByb2NMYXRjaCk7CisJCX0KKwl9 CisJU3BpbkxvY2tSZWxlYXNlKCZzdGF0ZS0+bXV0ZXgpOworfQorCisvKgorICogR2V0IG1pbmlt YWwgTFNOIHRoYXQgc29tZW9uZSB3YWl0cyBmb3IKKyAqLworWExvZ1JlY1B0cgorR2V0TWluV2Fp dGVkTFNOKHZvaWQpCit7CisJcmV0dXJuIHBnX2F0b21pY19yZWFkX3U2NCgmc3RhdGUtPm1pbl9s c24pOworfQorCisvKgorICogT24gV0FJVCB1c2UgYSBsYXRjaCB0byB3YWl0IHRpbGwgTFNOIGlz IHJlcGxheWVkLAorICogcG9zdG1hc3RlciBkaWVzIG9yIHRpbWVvdXQgaGFwcGVucy4gVGltZW91 dCBpcyBzcGVjaWZpZWQgaW4gbWlsbGlzZWNvbmRzLgorICogUmV0dXJucyB0cnVlIGlmIExTTiB3 YXMgcmVhY2hlZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitib29sCitXYWl0VXRpbGl0eShY TG9nUmVjUHRyIHRhcmdldF9sc24sIGNvbnN0IGludCB0aW1lb3V0X21zKQoreworCVhMb2dSZWNQ dHIJY3VyX2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJVHJhbnNhY3Rpb25JZAl4 bWluID0gTXlQcm9jLT54bWluOworCWludAkJCWxhdGNoX2V2ZW50czsKKwlmbG9hdDgJCWVuZHRp bWU7CisJYm9vbAkJcmVzID0gZmFsc2U7CisJYm9vbAkJd2FpdF9mb3JldmVyID0gKHRpbWVvdXRf bXMgPD0gMCk7CisKKwlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAorCQkJCSBlcnJtc2coIldvcmsgb25seSBpbiBzdGFuZGJ5IG1vZGUiKSkpOworCisJLyoKKwkg KiBJbiB0cmFuc2FjdGlvbnMsIHRoYXQgaGF2ZSBpc29sYXRpb24gbGV2ZWwgcmVwZWF0YWJsZSBy ZWFkIG9yIGhpZ2hlcgorCSAqIHdhaXQgbHNuIGNyZWF0ZXMgYSBzbmFwc2hvdCBpZiBjYWxsZWQg Zmlyc3QgaW4gYSBibG9jaywgd2hpY2ggY2FuCisJICogbGVhZCB0aGUgdHJhbnNhY3Rpb24gdG8g d29ya2luZyBpbmNvcnJlY3RseQorCSAqLworCisJaWYgKElzVHJhbnNhY3Rpb25CbG9jaygpICYm IFhhY3RJc29MZXZlbCAhPSBYQUNUX1JFQURfQ09NTUlUVEVEKSB7CisJCWVyZXBvcnQoV0FSTklO RywKKwkJCQllcnJtc2coIldhaXRsc24gbWF5IHdvcmsgaW5jb3JyZWN0bHkgaW4gdGhpcyBpc29s YXRpb24gbGV2ZWwiKSwKKwkJCQllcnJoaW50KCJDYWxsIHdhaXQgbHNuIGJlZm9yZSBzdGFydGlu ZyB0aGUgdHJhbnNhY3Rpb24iKSk7CisJfQorCisJZW5kdGltZSA9IEdldE5vd0Zsb2F0KCkgKyB0 aW1lb3V0X21zIC8gMTAwMC4wOworCisJbGF0Y2hfZXZlbnRzID0gV0xfTEFUQ0hfU0VUIHwgV0xf VElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEg7CisKKwkvKiBDaGVjayBpZiB3ZSBhbHJlYWR5 IHJlYWNoZWQgdGhlIG5lZWRlZCBMU04gKi8KKwlpZiAoY3VyX2xzbiA+PSB0YXJnZXRfbHNuKQor CQlyZXR1cm4gdHJ1ZTsKKworCS8qIEEgbGl0dGxlIGhhY2sgc2ltaWxhciB0byBTbmFwc2hvdFJl c2V0WG1pbiB0byB3b3JrIG91dCBvZiBzbmFwc2hvdCAqLworCU15UHJvYy0+eG1pbiA9IEludmFs aWRUcmFuc2FjdGlvbklkOworCisJQWRkV2FpdGVkTFNOKHRhcmdldF9sc24pOworCisJZm9yICg7 OykKKwl7CisJCWludAkJCXJjOworCQlmbG9hdDgJCXRpbWVfbGVmdCA9IDA7CisJCWxvbmcJCXRp bWVfbGVmdF9tcyA9IDA7CisKKwkJLyogSWYgTFNOIGhhcyBiZWVuIHJlcGxheWVkICovCisJCWlm ICh0YXJnZXRfbHNuIDw9IGN1cl9sc24pCisJCQlicmVhazsKKworCQl0aW1lX2xlZnQgPSBlbmR0 aW1lIC0gR2V0Tm93RmxvYXQoKTsKKworCQkvKiBVc2UgMTAwIG1zIGFzIHRoZSBkZWZhdWx0IHRp bWVvdXQgdG8gY2hlY2sgZm9yIGludGVycnVwdHMgKi8KKwkJaWYgKHdhaXRfZm9yZXZlciB8fCB0 aW1lX2xlZnQgPCAwIHx8IHRpbWVfbGVmdCA+IDAuMSkKKwkJCXRpbWVfbGVmdF9tcyA9IDEwMDsK KwkJZWxzZQorCQkJdGltZV9sZWZ0X21zID0gKGxvbmcpIGNlaWwodGltZV9sZWZ0ICogMTAwMC4w KTsKKworCQkvKiBJZiBpbnRlcnJ1cHQsIExvY2tFcnJvckNsZWFudXAoKSB3aWxsIGRvIERlbGV0 ZVdhaXRlZExTTigpIGZvciB1cyAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8q IElmIHBvc3RtYXN0ZXIgZGllcywgZmluaXNoIGltbWVkaWF0ZWx5ICovCisJCWlmICghUG9zdG1h c3RlcklzQWxpdmUoKSkKKwkJCWJyZWFrOworCisJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsIGxh dGNoX2V2ZW50cywgdGltZV9sZWZ0X21zLAorCQkJCQkgICBXQUlUX0VWRU5UX0NMSUVOVF9SRUFE KTsKKworCQlSZXNldExhdGNoKE15TGF0Y2gpOworCisJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkK KwkJCWN1cl9sc24gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCisJCWlmIChyYyAmIFdM X1RJTUVPVVQpCisJCXsKKwkJCWN1cl9sc24gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOwor CQkJLyogSWYgdGhlIHRpbWUgc3BlY2lmaWVkIGJ5IHVzZXIgaGFzIHBhc3NlZCwgc3RvcCB3YWl0 aW5nICovCisJCQl0aW1lX2xlZnQgPSBlbmR0aW1lIC0gR2V0Tm93RmxvYXQoKTsKKwkJCWlmICgh d2FpdF9mb3JldmVyICYmIHRpbWVfbGVmdCA8PSAwLjApCisJCQkJYnJlYWs7CisJCX0KKwl9CisK KwlNeVByb2MtPnhtaW4gPSB4bWluOworCURlbGV0ZVdhaXRlZExTTigpOworCisJaWYgKGN1cl9s c24gPCB0YXJnZXRfbHNuKQorCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJIGVycm1zZygiTFNOIHdh cyBub3QgcmVhY2hlZCIpLAorCQkJCSBlcnJoaW50KCJUcnkgdG8gaW5jcmVhc2Ugd2FpdCB0aW1l LiIpKTsKKwllbHNlCisJCXJlcyA9IHRydWU7CisKKwlyZXR1cm4gcmVzOworfQorCitEYXR1bQor cGdfd2FpdF9sc24oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlYTG9nUmVjUHRyCQl0cmdfbHNuID0g UEdfR0VUQVJHX0xTTigwKTsKKwl1aW50NjRfdAkJZGVsYXkgPSBQR19HRVRBUkdfSU5UMzIoMSk7 CisKKwlQR19SRVRVUk5fQk9PTChXYWl0VXRpbGl0eSh0cmdfbHNuLCBkZWxheSkpOworfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvaXBjaS5jCmluZGV4IDIyMjVhNGE2ZTYuLmY2ZDJlNWJhMjEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9pcGNpLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3ByZWZl dGNoZXIuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvYXN5bmMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy93YWl0LmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRv dmFjdXVtLmgiCkBAIC0xNDQsNiArMTQ1LDcgQEAgQ2FsY3VsYXRlU2htZW1TaXplKGludCAqbnVt X3NlbWFwaG9yZXMpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFN5bmNTY2FuU2htZW1TaXplKCkp OwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBBc3luY1NobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRk X3NpemUoc2l6ZSwgU3RhdHNTaG1lbVNpemUoKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdh aXRTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRFdmVudEV4dGVuc2lv blNobWVtU2l6ZSgpKTsKICNpZmRlZiBFWEVDX0JBQ0tFTkQKIAlzaXplID0gYWRkX3NpemUoc2l6 ZSwgU2htZW1CYWNrZW5kQXJyYXlTaXplKCkpOwpAQCAtMjM3LDYgKzIzOSwxMSBAQCBDcmVhdGVT aGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzKHZvaWQpCiAJLyogSW5pdGlhbGl6ZSBzdWJzeXN0ZW1z ICovCiAJQ3JlYXRlT3JBdHRhY2hTaG1lbVN0cnVjdHMoKTsKIAorCS8qCisJICogSW5pdCBhcnJh eSBvZiBldmVudHMgZm9yIHRoZSB3YWl0IGNsYXVzZSBpbiBzaGFyZWQgbWVtb3J5CisJICovCisJ V2FpdFNobWVtSW5pdCgpOworCiAjaWZkZWYgRVhFQ19CQUNLRU5ECiAKIAkvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9wcm9jLmMKaW5kZXggYjY0NTFkOWQwOC4uZDQ1MjFlMDc5ZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvcHJvYy5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIK ICNpbmNsdWRlICJhY2Nlc3MvdHdvcGhhc2UuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxz LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgog I2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgpA QCAtNzMxLDYgKzczMiw5IEBAIExvY2tFcnJvckNsZWFudXAodm9pZCkKIAogCUFib3J0U3Ryb25n TG9ja0FjcXVpcmUoKTsKIAorCS8qIElmIHdhaXQgbHNuIHdhcyBpbnRlcnJ1cHRlZCwgdGhlbiBz dG9wIHdhaXRpbmcgZm9yIHRoYXQgTFNOICovCisJRGVsZXRlV2FpdGVkTFNOKCk7CisKIAkvKiBO b3RoaW5nIHRvIGRvIGlmIHdlIHdlcmVuJ3Qgd2FpdGluZyBmb3IgYSBsb2NrICovCiAJaWYgKGxv Y2tBd2FpdGVkID09IE5VTEwpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L21pc2MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9taXNjLmMKaW5kZXggNWQ3OGQ2ZGMwNi4u ZmJjOTZkYjE5OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jCkBAIC0zODQsOCArMzg0LDYgQEAgcGdfc2xl ZXAoUEdfRlVOQ1RJT05fQVJHUykKIAkgKiBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCB0aW1lIHdo ZW4gV2FpdExhdGNoIGlzIHRlcm1pbmF0ZWQgZWFybHkgYnkgYQogCSAqIG5vbi1xdWVyeS1jYW5j ZWxpbmcgc2lnbmFsIHN1Y2ggYXMgU0lHSFVQLgogCSAqLwotI2RlZmluZSBHZXROb3dGbG9hdCgp CSgoZmxvYXQ4KSBHZXRDdXJyZW50VGltZXN0YW1wKCkgLyAxMDAwMDAwLjApCi0KIAllbmR0aW1l ID0gR2V0Tm93RmxvYXQoKSArIHNlY3M7CiAKIAlmb3IgKDs7KQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKaW5kZXggZmI1OGRlZTNiYy4uMDg1OWVjNjY4MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CkBAIC0xMjA5Miw2ICsxMjA5MiwxMSBAQAogICBwcm9yZXR0eXBlID0+ICdieXRlYScsIHByb2Fy Z3R5cGVzID0+ICdwZ19icmluX21pbm1heF9tdWx0aV9zdW1tYXJ5JywKICAgcHJvc3JjID0+ICdi cmluX21pbm1heF9tdWx0aV9zdW1tYXJ5X3NlbmQnIH0sCiAKK3sgb2lkID0+ICcxNjM4NycsIGRl c2NyID0+ICd3YWl0IGZvciBMU04gdW50aWwgdGltZW91dCcsCisgIHByb25hbWUgPT4gJ3BnX3dh aXRfbHNuJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsIHByb2FyZ3R5cGVzID0+ICdwZ19sc24gaW50 OCcsCisgIHByb2FyZ25hbWVzID0+ICd7dHJnX2xzbixkZWxheX0nLAorICBwcm9zcmMgPT4gJ3Bn X3dhaXRfbHNuJyB9LAorCiB7IG9pZCA9PiAnNjI5MScsIGRlc2NyID0+ICdhcmJpdHJhcnkgdmFs dWUgZnJvbSBhbW9uZyBpbnB1dCB2YWx1ZXMnLAogICBwcm9uYW1lID0+ICdhbnlfdmFsdWUnLCBw cm9raW5kID0+ICdhJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBwcm9yZXR0eXBlID0+ICdhbnll bGVtZW50JywgcHJvYXJndHlwZXMgPT4gJ2FueWVsZW1lbnQnLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvd2FpdC5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdC5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmJkNTI2NjRkZTkKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmgKQEAgLTAsMCArMSwyNiBAQAorLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKgorICogd2FpdC5oCisgKgkgIHByb3RvdHlwZXMgZm9yIGNvbW1h bmRzL3dhaXQuYworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIzLCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAyMDIzLCBSZWdlbnRzIG9mIFBvc3RncmVzUHJvCisgKgorICogc3JjL2luY2x1ZGUvY29tbWFu ZHMvd2FpdC5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgV0FJVF9ICisj ZGVmaW5lIFdBSVRfSAorI2luY2x1ZGUgInBvc3RncmVzLmgiCisjaW5jbHVkZSAidGNvcC9kZXN0 LmgiCisjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgorCitleHRlcm4gYm9vbCBXYWl0VXRp bGl0eShYTG9nUmVjUHRyIGxzbiwgY29uc3QgaW50IHRpbWVvdXRfbXMpOworZXh0ZXJuIFNpemUg V2FpdFNobWVtU2l6ZSh2b2lkKTsKK2V4dGVybiB2b2lkIFdhaXRTaG1lbUluaXQodm9pZCk7Citl eHRlcm4gdm9pZCBXYWl0U2V0TGF0Y2goWExvZ1JlY1B0ciBjdXJfbHNuKTsKK2V4dGVybiBYTG9n UmVjUHRyIEdldE1pbldhaXRlZExTTih2b2lkKTsKK2V4dGVybiB2b2lkIERlbGV0ZVdhaXRlZExT Tih2b2lkKTsKKworI2VuZGlmCQkJCQkJCS8qIFdBSVRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdXRpbHMvdGltZXN0YW1wLmggYi9zcmMvaW5jbHVkZS91dGlscy90aW1lc3RhbXAuaApp bmRleCBjNGRkOTZjOGM5Li42ZDc2M2QxMTc1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy90aW1lc3RhbXAuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90aW1lc3RhbXAuaApAQCAtMTQ0 LDQgKzE0NCw2IEBAIGV4dGVybiBpbnQJZGF0ZTJpc295ZWFyZGF5KGludCB5ZWFyLCBpbnQgbW9u LCBpbnQgbWRheSk7CiAKIGV4dGVybiBib29sIFRpbWVzdGFtcFRpbWVzdGFtcFR6UmVxdWlyZXNS ZXdyaXRlKHZvaWQpOwogCisjZGVmaW5lIEdldE5vd0Zsb2F0KCkgKChmbG9hdDgpIEdldEN1cnJl bnRUaW1lc3RhbXAoKSAvIDEwMDAwMDAuMCkKKwogI2VuZGlmCQkJCQkJCS8qIFRJTUVTVEFNUF9I ICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MF93YWl0bHNuLnBsIGIvc3Jj L3Rlc3QvcmVjb3ZlcnkvdC8wNDBfd2FpdGxzbi5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi5kYzllODk5NjcxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wNDBfd2FpdGxzbi5wbApAQCAtMCwwICsxLDc2IEBACisjIENoZWNrcyB3YWl0IGxz bgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKwor IyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQorbXkgJG5vZGVfcHJpbWFyeSA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworJG5vZGVfcHJpbWFyeS0+aW5pdChhbGxv d3Nfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyMgQW5kIHNvbWUg Y29udGVudCBhbmQgdGFrZSBhIGJhY2t1cAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBUQUJMRSB3YWl0X3Rlc3QgQVMgU0VMRUNUIGdlbmVyYXRlX3Nlcmll cygxLDEwKSBBUyBhIik7CitteSAkYmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKyRub2RlX3By aW1hcnktPmJhY2t1cCgkYmFja3VwX25hbWUpOworCisjIFVzaW5nIHRoZSBiYWNrdXAsIGNyZWF0 ZSBhIHN0cmVhbWluZyBzdGFuZGJ5IHdpdGggYSAxIHNlY29uZCBkZWxheQorbXkgJG5vZGVfc3Rh bmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieScpOworbXkgJGRl bGF5ICAgICAgICA9IDE7Ciskbm9kZV9zdGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKCRub2RlX3By aW1hcnksICRiYWNrdXBfbmFtZSwKKwloYXNfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfc3RhbmRi eS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHFxWworCXJlY292ZXJ5X21pbl9hcHBs eV9kZWxheSA9ICcke2RlbGF5fXMnCitdKTsKKyRub2RlX3N0YW5kYnktPnN0YXJ0OworCisjIENo ZWNrIHRoYXQgdGltZW91dHMgbWFrZSB1cyB3YWl0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUgKDFz IGhlcmUpCitteSAkY3VycmVudF90aW1lID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1Qgbm93KCkiKTsKK215ICR0d29fc2Vjb25kcyA9IDIwMDA7ICMgaW4gbWls bGlzZWNvbmRzCitteSAkc3RhcnRfdGltZSA9IHRpbWUoKTsKKyRub2RlX3N0YW5kYnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfd2FpdF9sc24oJzAvRkZGRkZGRkYnLCAkdHdv X3NlY29uZHMpIik7CitteSAkdGltZV93YWl0ZWQgPSAodGltZSgpIC0gJHN0YXJ0X3RpbWUpICog MTAwMDsgIyBjb252ZXJ0IHRvIG1pbGxpc2Vjb25kcworb2soJHRpbWVfd2FpdGVkID49ICR0d29f c2Vjb25kcywgIndhaXQgbHNuIHdhaXRzIGZvciBlbm91Z2ggdGltZSIpOworCisjIENoZWNrIHRo YXQgdGltZW91dHMgbGV0IHVzIHN0b3Agd2FpdGluZyByaWdodCBhd2F5LCBiZWZvcmUgcmVhY2hp bmcgdGFyZ2V0IExTTgorIyBXYWl0IGZvciBubyB3YWl0Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVf c2VyaWVzKDExLCAyMCkpIik7CitteSAkbHNuMSA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CitteSAoJHJldCwgJG91 dCwgJGVycikgPSAkbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ193 YWl0X2xzbignJGxzbjEnLCAxKSIpOworCitvaygkcmV0ID09IDAsICJ6ZXJvIHJldHVybiB2YWx1 ZSB3aGVuIGZhaWxlZCB0byB3YWl0IGxzbiBvbiBzdGFuZGJ5Iik7CitvaygkZXJyID1+IC9XQVJO SU5HOiAgTFNOIHdhcyBub3QgcmVhY2hlZC8sCisJImNvcnJlY3QgZXJyb3IgbWVzc2FnZSB3aGVu IGZhaWxlZCB0byB3YWl0IGxzbiBvbiBzdGFuZGJ5Iik7Citvaygkb3V0IGVxICJmIiwgImlmIGdp dmVuIHRvbyBsaXR0bGUgd2FpdCB0aW1lLCBXQUlUIGRvZXNuJ3QgcmVhY2ggdGFyZ2V0IExTTiIp OworCisKKyMgQ2hlY2sgdGhhdCB3YWl0IGxzbiB3b3JrcyBmaW5lIGFuZCByZWFjaGVzIHRhcmdl dCBMU04gaWYgZ2l2ZW4gbm8gdGltZW91dAorIyBXYWl0IGZvciBpbmZpbml0ZQorCisjIEFkZCBk YXRhIG9uIHByaW1hcnksIG1lbW9yaXplIHByaW1hcnkncyBsYXN0IExTTgorJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMg KGdlbmVyYXRlX3NlcmllcygyMSwgMzApKSIpOworbXkgJGxzbjIgPSAkbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworCisj IFdhaXQgZm9yIGl0IHRvIGFwcGVhciBvbiByZXBsaWNhLCBtZW1vcml6ZSByZXBsaWNhJ3MgbGFz dCBMU04KKyRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdf d2FpdF9sc24oJyRsc24yJywgMCkiKTsKK215ICRyZWFjaGVkX2xzbiA9ICRub2RlX3N0YW5kYnkt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbGFzdF93YWxfcmVwbGF5X2xzbigp Iik7CisKKyMgTWFrZSBzdXJlIHRoYXQgcHJpbWFyeSdzIGFuZCByZXBsaWNhJ3MgTFNOcyBhcmUg dGhlIHNhbWUgYWZ0ZXIgV0FJVAorbXkgJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2NtcCgnJHJlYWNoZWRfbHNuJzo6 cGdfbHNuLCAnJGxzbjInOjpwZ19sc24pIik7CitvaygkY29tcGFyZV9sc25zIGVxIDAsCisJInN0 YW5kYnkgcmVhY2hlZCB0aGUgc2FtZSBMU04gYXMgcHJpbWFyeSBiZWZvcmUgc3RhcnRpbmcgdHJh bnNhY3Rpb24iKTsKKworJG5vZGVfc3RhbmRieS0+c3RvcDsKKyRub2RlX3ByaW1hcnktPnN0b3A7 CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBkNjU5YWRi ZmQ2Li45Y2RjZWJjZTNjIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMzAxNSw2ICsz MDE1LDcgQEAgV2FpdEV2ZW50SVBDCiBXYWl0RXZlbnRTZXQKIFdhaXRFdmVudFRpbWVvdXQKIFdh aXRQTVJlc3VsdAorV2FpdFN0YXRlCiBXYWxDbG9zZU1ldGhvZAogV2FsQ29tcHJlc3Npb24KIFdh bExldmVsCg== --=_4fbdf0ad13d72211dff1e46d32ad8140--