From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-112.freemail.mail.aliyun.com (out30-112.freemail.mail.aliyun.com [115.124.30.112]) by sourceware.org (Postfix) with ESMTPS id 1FC053858414 for ; Fri, 12 Jan 2024 00:50:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1FC053858414 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.alibaba.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1FC053858414 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=115.124.30.112 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705020617; cv=none; b=vPeEO1VkQ5orOwaRfGgKqbsSt5Iqf4QrOF4YCPDhynTcDL/d0gqy7fbAyCwubCnTTSZTG7brKr0XvoCIRMSS7C6OAmSEIco9JurZkzJo2Offa3uxHngHcpjQXEmCrs0ArEDeteIULTsL8pCU2q2YbJs6HbpF8unXXFWkwQtXE6g= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705020617; c=relaxed/simple; bh=APYiov4Z0A0y53JhDsa9N1MSg+CTn/dzaNh4Ys4pRm4=; h=Date:From:To:Message-ID:Subject:MIME-Version; b=t+4/STX3ww/oqnqPPBqcBHprX4j/Tcc722zhaAR/9MXvVadpGh4bEjnUR0Qlf6qgKX0jEF4RkzVlio2D/7LXvyRlicTiuk3HppvUHhEzl50opXd+X7mXn+m0gQQ3SRKeLocUwWLoa21YECkIVTMDiklYWw47/ZIkN1rjmj6Zo1A= ARC-Authentication-Results: i=1; server2.sourceware.org X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R141e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045176;MF=cooper.joshua@linux.alibaba.com;NM=1;PH=DW;RN=10;SR=0;TI=W4_0.2.3_v5ForWebDing_21443577_1705020054489_o7001c89q; Received: from WS-web (cooper.joshua@linux.alibaba.com[W4_0.2.3_v5ForWebDing_21443577_1705020054489_o7001c89q]) at Fri, 12 Jan 2024 08:49:58 +0800 Date: Fri, 12 Jan 2024 08:49:58 +0800 From: "joshua" To: "=?UTF-8?B?6ZKf5bGF5ZOy?=" , "gcc-patches" Cc: "jim.wilson.gcc" , "palmer" , "andrew" , "philipp.tomsich" , "Jeff Law" , "=?UTF-8?B?Q2hyaXN0b3BoIE3DvGxsbmVy?=" , "jinma" , "Cooper Qu" Reply-To: "joshua" Message-ID: <98151345-52d3-4349-9cdb-f3562cd9ec76.cooper.joshua@linux.alibaba.com> Subject: =?UTF-8?B?5Zue5aSN77yaUmXvvJpbUEFUQ0ggdjVdIFJJU0MtVjogQWRkIHN1cHBvcnQgZm9yIHh0aGVh?= =?UTF-8?B?ZHZlY3Rvci1zcGVjaWZpYyBpbnRyaW5zaWNzLg==?= X-Mailer: [Alimail-Mailagent revision 79][W4_0.2.3][v5ForWebDing][Unknown] MIME-Version: 1.0 x-aliyun-im-through: {"mailThroughImNew":true} References: x-aliyun-mail-creator: W4_0.2.3_v5ForWebDing_A1LTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxN18xXzIgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzE3LjEuMiBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMQ==vN In-Reply-To: Content-Type: multipart/alternative; boundary="----=ALIBOUNDARY_55234_7f884895a700_65a08cb6_10c37" X-Spam-Status: No, score=-19.2 required=5.0 tests=BAYES_00,BODY_8BITS,ENV_AND_HDR_SPF_MATCH,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: ------=ALIBOUNDARY_55234_7f884895a700_65a08cb6_10c37 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 VGhlIGNoYW5nZXMgdG8gbG11bCBhbmQgc2V3IGFyZSBvbmx5IGRvbmUgZm9y IHZib29sLAp3aGljaCBpcyBSVlZNRjY0QkkvUlZWTUYzMkJJL1JWVk1GMTZC SSwgaW4gdGhlCmludHJpbnNpY3Mgd2l0aCBtYXNrLiBUaGF0IGlzIGJlY2F1 c2UgdGhlYWR2ZWN0b3IgaGFzIG5vCmxvYWQvc3RvcmUgbWFzayBpbnN0cnVj dGlvbnMuCmxtdWwgYW5kIHNldyBpbiBvdGhlciBub24tYm9vbCB0eXBlcyBk byBub3QgbmVlZAp0byBiZSBtb2RpZmllZC4gSSBkb27igJl0IHRoaW5rIGRp cmVjdGx5IGNoYW5nZSBnZXRfc2V3CmFuZCBnZXRfdmxtdWwgaXMgcmVhc29u YWJsZS4KKyAoYW5kIChlcV9hdHRyICJ0eXBlIiAidmxkZSx2c3RlLHZsc2Vn ZGUsdnNzZWd0ZSx2bHNlZ2RzLHZzc2VndHMsXCArIHZsc2VnZGZmLHZzc2Vn dHV4LHZsc2VnZG94LHZsc2VnZHV4IikgKyAobWF0Y2hfdGVzdCAiVEFSR0VU X1hUSEVBRFZFQ1RPUiIpKSArIChjb25zdF9pbnQgSU5WQUxJRF9BVFRSSUJV VEUpV2h5IGRvIHlvdSBhZGQgdGhpcyA/CnRoZWFkdmVjdG9yIGRvZXMgbm90 IGhhdmUgc2V3IGluIGxvYWQvc3RvcmVpbnN0cnVjdGlvbnMuIEluIE8yLCB2 ZWN0b3Igd2lsbCByZW1vdmUgb25ldnNldHZsIGZvciB0d28gY29uc2VjdXRp dmUgdmxlIHdpdGggZGlmZmVyZW50c2V3LiBIb3dldmVyLCB0aGluZ3Mgd2ls bCBnbyB3cm9uZyB1bmRlciB0aGlzb3B0aW1pemF0aW9uIGZvciB0aGVhZHZl Y3Rvci4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCuWPkeS7tuS6uu+8mumSn+Wx heWTsiA8anV6aGUuemhvbmdAcml2YWkuYWk+CuWPkemAgeaXtumXtO+8mjIw MjTlubQx5pyIMTLml6Uo5pif5pyf5LqUKSAwNzoyMgrmlLbku7bkurrvvJoi Y29vcGVyLmpvc2h1YSI8Y29vcGVyLmpvc2h1YUBsaW51eC5hbGliYWJhLmNv bT47ICJnY2MtcGF0Y2hlcyI8Z2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc+CuaK hOOAgOmAge+8miJqaW0ud2lsc29uLmdjYyI8amltLndpbHNvbi5nY2NAZ21h aWwuY29tPjsgcGFsbWVyPHBhbG1lckBkYWJiZWx0LmNvbT47IGFuZHJldzxh bmRyZXdAc2lmaXZlLmNvbT47ICJwaGlsaXBwLnRvbXNpY2giPHBoaWxpcHAu dG9tc2ljaEB2cnVsbC5ldT47IEplZmYgTGF3PGplZmZyZXlhbGF3QGdtYWls LmNvbT47ICJDaHJpc3RvcGggTcO8bGxuZXIiPGNocmlzdG9waC5tdWVsbG5l ckB2cnVsbC5ldT47IGppbm1hPGppbm1hQGxpbnV4LmFsaWJhYmEuY29tPjsg Q29vcGVyIFF1PGNvb3Blci5xdUBsaW51eC5hbGliYWJhLmNvbT4K5Li744CA 6aKY77yaUmU6IFJl77yaW1BBVENIIHY1XSBSSVNDLVY6IEFkZCBzdXBwb3J0 IGZvciB4dGhlYWR2ZWN0b3Itc3BlY2lmaWMgaW50cmluc2ljcy4KQWxzbywg eW91IGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZXNlOgotRU5UUlkgKFJWVk1G NjRCSSwgVEFSR0VUX01JTl9WTEVOID4gMzIsIExNVUxfRjgsIDY0KSAtRU5U UlkgKFJWVk1GMzJCSSwgdHJ1ZSwgTE1VTF9GNCwgMzIpIC1FTlRSWSAoUlZW TUYxNkJJLCB0cnVlLCBMTVVMX0YyLCAxNikgK0VOVFJZIChSVlZNRjY0Qkks IFRBUkdFVF9NSU5fVkxFTiA+IDMyLCBUQVJHRVRfWFRIRUFEVkVDVE9SID8g TE1VTF8xIDpMTVVMX0Y4LCA2NCkgK0VOVFJZIChSVlZNRjMyQkksIHRydWUs IFRBUkdFVF9YVEhFQURWRUNUT1IgPyBMTVVMXzEgOkxNVUxfRjQsIDMyKSAr RU5UUlkgKFJWVk1GMTZCSSwgdHJ1ZSwgVEFSR0VUX1hUSEVBRFZFQ1RPUiA/ IExNVUxfMSA6IExNVUxfRjIgLCAxNikKWW91IHNob3VsZCBzcGVjaWZ5IHRo ZXNlIGNhc2VzIGluIAplbnVtIHZsbXVsX3R5cGUKZ2V0X3ZsbXVsIChtYWNo aW5lX21vZGUgbW9kZSkKQW5kIGRvbid0IGNoYW5nZToKIChkZWZpbmVfYXR0 ciAic2V3IiAiIiAtIChjb25kIFsoZXFfYXR0ciAibW9kZSIgIlJWVk1GNjRC SSxSVlZNRjMyQkksUlZWTUYxNkJJLFJWVk1GOEJJLFJWVk1GNEJJLFJWVk1G MkJJLFJWVk0xQkksXCArIChjb25kIFsoZXFfYXR0ciAibW9kZSIgIlJWVk1G OEJJLFJWVk1GNEJJLFJWVk1GMkJJLFJWVk0xQkksXCBSVlZNOFFJLFJWVk00 UUksUlZWTTJRSSxSVlZNMVFJLFJWVk1GMlFJLFJWVk1GNFFJLFJWVk1GOFFJ LFwgUlZWTTF4OFFJLFJWVk1GMng4UUksUlZWTUY0eDhRSSxSVlZNRjh4OFFJ LFwgUlZWTTF4N1FJLFJWVk1GMng3UUksUlZWTUY0eDdRSSxSVlZNRjh4N1FJ LFwgQEAgLTk5LDYgKzk5LDE4IEBAIFYxUUksVjJRSSxWNFFJLFY4UUksVjE2 UUksVjMyUUksVjY0UUksVjEyOFFJLFYyNTZRSSxWNTEyUUksVjEwMjRRSSxW MjA0OFFJLFY0MDk2UUksXCBWMUJJLFYyQkksVjRCSSxWOEJJLFYxNkJJLFYz MkJJLFY2NEJJLFYxMjhCSSxWMjU2QkksVjUxMkJJLFYxMDI0QkksVjIwNDhC SSxWNDA5NkJJIikgKGNvbnN0X2ludCA4KSArIChlcV9hdHRyICJtb2RlIiAi UlZWTUYxNkJJIikgKyAoaWZfdGhlbl9lbHNlIChtYXRjaF90ZXN0ICJUQVJH RVRfWFRIRUFEVkVDVE9SIikgKyAoY29uc3RfaW50IDE2KSArIChjb25zdF9p bnQgOCkpICsgKGVxX2F0dHIgIm1vZGUiICJSVlZNRjMyQkkiKSArIChpZl90 aGVuX2Vsc2UgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YVEhFQURWRUNUT1IiKSAr IChjb25zdF9pbnQgMzIpICsgKGNvbnN0X2ludCA4KSkgKyAoZXFfYXR0ciAi bW9kZSIgIlJWVk1GNjRCSSIpICsgKGlmX3RoZW5fZWxzZSAobWF0Y2hfdGVz dCAiVEFSR0VUX1hUSEVBRFZFQ1RPUiIpICsgKGNvbnN0X2ludCA2NCkgKyAo Y29uc3RfaW50IDgpKSAoZXFfYXR0ciAibW9kZSIgIlJWVk04SEksUlZWTTRI SSxSVlZNMkhJLFJWVk0xSEksUlZWTUYySEksUlZWTUY0SEksXCBSVlZNMXg4 SEksUlZWTUYyeDhISSxSVlZNRjR4OEhJLFwgUlZWTTF4N0hJLFJWVk1GMng3 SEksUlZWTUY0eDdISSxcIEBAIC0xNTksOSArMTcxLDkgQEAgKGVxX2F0dHIg Im1vZGUiICJSVlZNNFFJLFJWVk1GMkJJIikgKHN5bWJvbF9yZWYgInJpc2N2 X3ZlY3Rvcjo6TE1VTF80IikgKGVxX2F0dHIgIm1vZGUiICJSVlZNMlFJLFJW Vk1GNEJJIikgKHN5bWJvbF9yZWYgInJpc2N2X3ZlY3Rvcjo6TE1VTF8yIikg KGVxX2F0dHIgIm1vZGUiICJSVlZNMVFJLFJWVk1GOEJJIikgKHN5bWJvbF9y ZWYgInJpc2N2X3ZlY3Rvcjo6TE1VTF8xIikgLSAoZXFfYXR0ciAibW9kZSIg IlJWVk1GMlFJLFJWVk1GMTZCSSIpIChzeW1ib2xfcmVmICJyaXNjdl92ZWN0 b3I6OkxNVUxfRjIiKSAtIChlcV9hdHRyICJtb2RlIiAiUlZWTUY0UUksUlZW TUYzMkJJIikgKHN5bWJvbF9yZWYgInJpc2N2X3ZlY3Rvcjo6TE1VTF9GNCIp IC0gKGVxX2F0dHIgIm1vZGUiICJSVlZNRjhRSSxSVlZNRjY0QkkiKSAoc3lt Ym9sX3JlZiAicmlzY3ZfdmVjdG9yOjpMTVVMX0Y4IikgKyAoZXFfYXR0ciAi bW9kZSIgIlJWVk1GMlFJLFJWVk1GMTZCSSIpIChzeW1ib2xfcmVmICJUQVJH RVRfWFRIRUFEVkVDVE9SID8gcmlzY3ZfdmVjdG9yOjpMTVVMXzEgOiByaXNj dl92ZWN0b3I6OkxNVUxfRjIiKSArIChlcV9hdHRyICJtb2RlIiAiUlZWTUY0 UUksUlZWTUYzMkJJIikgKHN5bWJvbF9yZWYgIlRBUkdFVF9YVEhFQURWRUNU T1IgPyByaXNjdl92ZWN0b3I6OkxNVUxfMSA6IHJpc2N2X3ZlY3Rvcjo6TE1V TF9GNCIpICsgKGVxX2F0dHIgIm1vZGUiICJSVlZNRjhRSSxSVlZNRjY0Qkki KSAoc3ltYm9sX3JlZiAiVEFSR0VUX1hUSEVBRFZFQ1RPUiA/IHJpc2N2X3Zl Y3Rvcjo6TE1VTF8xIDogcmlzY3ZfdmVjdG9yOjpMTVVMX0Y4IilZb3Ugc2hv dWxkIGNoYW5nZSAKLyogSGVscGVyIGZ1bmN0aW9uIHRvIGdldCBTRVcgb3Bl cmFuZC4gV2UgYWx3YXlzIGhhdmUgU0VXIHZhbHVlIGZvcgogYWxsIFJWViBp bnN0cnVjdGlvbnMgdGhhdCBoYXZlIFZUWVBFIE9QLiAqLwp1aW50OF90Cmdl dF9zZXcgKHJ0eF9pbnNuICpyaW5zbikKewpyZXR1cm4gZ2V0X2F0dHJfc2V3 IChyaW5zbik7Cn0KLyogSGVscGVyIGZ1bmN0aW9uIHRvIGdldCBWTE1VTCBv cGVyYW5kLiBXZSBhbHdheXMgaGF2ZSBWTE1VTCB2YWx1ZSBmb3IKIGFsbCBS VlYgaW5zdHJ1Y3Rpb25zIHRoYXQgaGF2ZSBWVFlQRSBPUC4gKi8KZW51bSB2 bG11bF90eXBlCmdldF92bG11bCAocnR4X2luc24gKnJpbnNuKQp7CiByZXR1 cm4gKGVudW0gdmxtdWxfdHlwZSkgZ2V0X2F0dHJfdmxtdWwgKHJpbnNuKTsK fQorIChhbmQgKGVxX2F0dHIgInR5cGUiICJ2bGRlLHZzdGUsdmxzZWdkZSx2 c3NlZ3RlLHZsc2VnZHMsdnNzZWd0cyxcICsgdmxzZWdkZmYsdnNzZWd0dXgs dmxzZWdkb3gsdmxzZWdkdXgiKSArIChtYXRjaF90ZXN0ICJUQVJHRVRfWFRI RUFEVkVDVE9SIikpICsgKGNvbnN0X2ludCBJTlZBTElEX0FUVFJJQlVURSlX aHkgZG8geW91IGFkZCB0aGlzID8KanV6aGUuemhvbmdAcml2YWkuYWkK5Y+R 5Lu25Lq677yaIGpvc2h1YSA8bWFpbHRvOmNvb3Blci5qb3NodWFAbGludXgu YWxpYmFiYS5jb20gPgrlj5HpgIHml7bpl7TvvJogMjAyNC0wMS0xMSAyMjox MQrmlLbku7bkurrvvJoganV6aGUuemhvbmdAcml2YWkuYWkgPG1haWx0bzpq dXpoZS56aG9uZ0ByaXZhaS5haSA+OyBnY2MtcGF0Y2hlcyA8bWFpbHRvOmdj Yy1wYXRjaGVzQGdjYy5nbnUub3JnID4K5oqE6YCB77yaIEppbSBXaWxzb24g PG1haWx0bzpqaW0ud2lsc29uLmdjY0BnbWFpbC5jb20gPjsgcGFsbWVyIDxt YWlsdG86cGFsbWVyQGRhYmJlbHQuY29tID47IGFuZHJldyA8bWFpbHRvOmFu ZHJld0BzaWZpdmUuY29tID47IHBoaWxpcHAudG9tc2ljaCA8bWFpbHRvOnBo aWxpcHAudG9tc2ljaEB2cnVsbC5ldSA+OyBqZWZmcmV5YWxhdyA8bWFpbHRv OmplZmZyZXlhbGF3QGdtYWlsLmNvbSA+OyBjaHJpc3RvcGgubXVlbGxuZXIg PG1haWx0bzpjaHJpc3RvcGgubXVlbGxuZXJAdnJ1bGwuZXUgPjsgamlubWEg PG1haWx0bzpqaW5tYUBsaW51eC5hbGliYWJhLmNvbSA+OyBjb29wZXIucXUg PG1haWx0bzpjb29wZXIucXVAbGludXguYWxpYmFiYS5jb20gPgrkuLvpopjv vJogUmXvvJpSZe+8mltQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBm b3IgeHRoZWFkdmVjdG9yLXNwZWNpZmljIGludHJpbnNpY3MuCklzIHRoZSBw YXRjaCB3aXRoICFUQVJHRVRfWFRIRUFEVkVDVE9SIGZvciBzZXh0L3pleHQK cGF0dGVybnMgcmVtb3ZlZCBPSyB0byBjb21taXQ/Cmh0dHBzOi8vZ2NjLmdu dS5vcmcvcGlwZXJtYWlsL2djYy1wYXRjaGVzLzIwMjQtSmFudWFyeS82NDI2 NTcuaHRtbCA8aHR0cHM6Ly9nY2MuZ251Lm9yZy9waXBlcm1haWwvZ2NjLXBh dGNoZXMvMjAyNC1KYW51YXJ5LzY0MjY1Ny5odG1sID4KLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCuWPkeS7tuS6uu+8mmp1emhlLnpob25nQHJpdmFpLmFpIDxq dXpoZS56aG9uZ0ByaXZhaS5haT4K5Y+R6YCB5pe26Ze077yaMjAyNOW5tDHm nIgxMeaXpSjmmJ/mnJ/lm5spIDE4OjU2CuaUtuS7tuS6uu+8miJjb29wZXIu am9zaHVhIjxjb29wZXIuam9zaHVhQGxpbnV4LmFsaWJhYmEuY29tPjsgImdj Yy1wYXRjaGVzIjxnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZz4K5oqE44CA6YCB 77yaSmltIFdpbHNvbjxqaW0ud2lsc29uLmdjY0BnbWFpbC5jb20+OyBwYWxt ZXI8cGFsbWVyQGRhYmJlbHQuY29tPjsgYW5kcmV3PGFuZHJld0BzaWZpdmUu Y29tPjsgInBoaWxpcHAudG9tc2ljaCI8cGhpbGlwcC50b21zaWNoQHZydWxs LmV1PjsgamVmZnJleWFsYXc8amVmZnJleWFsYXdAZ21haWwuY29tPjsgImNo cmlzdG9waC5tdWVsbG5lciI8Y2hyaXN0b3BoLm11ZWxsbmVyQHZydWxsLmV1 PjsgamlubWE8amlubWFAbGludXguYWxpYmFiYS5jb20+OyAiY29vcGVyLnF1 Ijxjb29wZXIucXVAbGludXguYWxpYmFiYS5jb20+CuS4u+OAgOmimO+8mlJl OiBSZe+8mltQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRo ZWFkdmVjdG9yLXNwZWNpZmljIGludHJpbnNpY3MuClllcy4KanV6aGUuemhv bmdAcml2YWkuYWkK5Y+R5Lu25Lq677yaIGpvc2h1YQrlj5HpgIHml7bpl7Tv vJogMjAyNC0wMS0xMSAxODo1NArmlLbku7bkurrvvJoganV6aGUuemhvbmdA cml2YWkuYWk7IGdjYy1wYXRjaGVzCuaKhOmAge+8miBKaW0gV2lsc29uOyBw YWxtZXI7IGFuZHJldzsgcGhpbGlwcC50b21zaWNoOyBqZWZmcmV5YWxhdzsg Y2hyaXN0b3BoLm11ZWxsbmVyOyBqaW5tYTsgY29vcGVyLnF1CuS4u+mimO+8 miBSZe+8mltQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRo ZWFkdmVjdG9yLXNwZWNpZmljIGludHJpbnNpY3MuCkRvIHlvdSBtZWFuIHJl bW92aW5nIFRBUkdFVF9YVEhFQURWRUNUT1IgZm9yIHNleHQvemV4dCBwYXR0 ZXJucwphbmQgdGhlbiByZXNlbmRpbmcgdGhlICJSSVNDLVY6IEhhbmRsZSBk aWZmZXJlbmNlcyBiZXR3ZWVuIFhUaGVhZHZlY3RvcgphbmQgVmVjdG9yIiBw YXRjaD8KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCuWPkeS7tuS6uu+8mmp1emhl Lnpob25nQHJpdmFpLmFpIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4K5Y+R6YCB 5pe26Ze077yaMjAyNOW5tDHmnIgxMeaXpSjmmJ/mnJ/lm5spIDE3OjU3CuaU tuS7tuS6uu+8miJjb29wZXIuam9zaHVhIjxjb29wZXIuam9zaHVhQGxpbnV4 LmFsaWJhYmEuY29tPjsgImdjYy1wYXRjaGVzIjxnY2MtcGF0Y2hlc0BnY2Mu Z251Lm9yZz4K5oqE44CA6YCB77yaSmltIFdpbHNvbjxqaW0ud2lsc29uLmdj Y0BnbWFpbC5jb20+OyBwYWxtZXI8cGFsbWVyQGRhYmJlbHQuY29tPjsgYW5k cmV3PGFuZHJld0BzaWZpdmUuY29tPjsgInBoaWxpcHAudG9tc2ljaCI8cGhp bGlwcC50b21zaWNoQHZydWxsLmV1PjsgamVmZnJleWFsYXc8amVmZnJleWFs YXdAZ21haWwuY29tPjsgImNocmlzdG9waC5tdWVsbG5lciI8Y2hyaXN0b3Bo Lm11ZWxsbmVyQHZydWxsLmV1PjsgImNvb3Blci5qb3NodWEiPGNvb3Blci5q b3NodWFAbGludXguYWxpYmFiYS5jb20+OyBqaW5tYTxqaW5tYUBsaW51eC5h bGliYWJhLmNvbT47ICJjb29wZXIucXUiPGNvb3Blci5xdUBsaW51eC5hbGli YWJhLmNvbT4K5Li744CA6aKY77yaUmU6IFtQQVRDSCB2NV0gUklTQy1WOiBB ZGQgc3VwcG9ydCBmb3IgeHRoZWFkdmVjdG9yLXNwZWNpZmljIGludHJpbnNp Y3MuCkxHVE0uIENvdWxkIHlvdSByZXNlbmQgdGhlIHBhdGNoICJSSVNDLVY6 IEhhbmRsZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFhUaGVhZHZlY3RvciBhbmQg VmVjdG9yClRoYW5rcy4KanV6aGUuemhvbmdAcml2YWkuYWkKRnJvbTogSnVu IFNoYSAoSm9zaHVhKQpEYXRlOiAyMDI0LTAxLTExIDE3OjUyClRvOiBnY2Mt cGF0Y2hlcwpDQzogamltLndpbHNvbi5nY2M7IHBhbG1lcjsgYW5kcmV3OyBw aGlsaXBwLnRvbXNpY2g7IGplZmZyZXlhbGF3OyBjaHJpc3RvcGgubXVlbGxu ZXI7IGp1emhlLnpob25nOyBKdW4gU2hhIChKb3NodWEpOyBKaW4gTWE7IFhp YW5taWFvIFF1ClN1YmplY3Q6IFtQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3Vw cG9ydCBmb3IgeHRoZWFkdmVjdG9yLXNwZWNpZmljIGludHJpbnNpY3MuClRo aXMgcGF0Y2ggb25seSBpbnZvbHZlcyB0aGUgZ2VuZXJhdGlvbiBvZiB4dGhl YWR2ZWN0b3IKc3BlY2lhbCBsb2FkL3N0b3JlIGluc3RydWN0aW9ucyBhbmQg dmV4dCBpbnN0cnVjdGlvbnMuCmdjYy9DaGFuZ2VMb2c6CiAqIGNvbmZpZy9y aXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMuY2MKIChjbGFzcyB0 aF9sb2Fkc3RvcmVfd2lkdGgpOiBEZWZpbmUgbmV3IGJ1aWx0aW4gYmFzZXMu CiAoY2xhc3MgdGhfZXh0cmFjdCk6IERlZmluZSBuZXcgYnVpbHRpbiBiYXNl cy4KIChCQVNFKTogRGVmaW5lIG5ldyBidWlsdGluIGJhc2VzLgogKiBjb25m aWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmg6CiBEZWZp bmUgbmV3IGJ1aWx0aW4gY2xhc3MuCiAqIGNvbmZpZy9yaXNjdi9yaXNjdi12 ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmNjCiAoc3RydWN0IHRoX2xvYWRzdG9y ZV93aWR0aF9kZWYpOiBEZWZpbmUgbmV3IGJ1aWx0aW4gc2hhcGVzLgogKHN0 cnVjdCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aF9kZWYpOgogRGVmaW5l IG5ldyBidWlsdGluIHNoYXBlcy4KIChzdHJ1Y3QgdGhfZXh0cmFjdF9kZWYp OiBEZWZpbmUgbmV3IGJ1aWx0aW4gc2hhcGVzLgogKFNIQVBFKTogRGVmaW5l IG5ldyBidWlsdGluIHNoYXBlcy4KICogY29uZmlnL3Jpc2N2L3Jpc2N2LXZl Y3Rvci1idWlsdGlucy1zaGFwZXMuaDoKIERlZmluZSBuZXcgYnVpbHRpbiBz aGFwZXMuCiAqIGNvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMu Y2MgKERFRl9SVlZfRlVOQ1RJT04pOgogKiBjb25maWcvcmlzY3YvcmlzY3Yt dmVjdG9yLWJ1aWx0aW5zLmggKGVudW0gcmVxdWlyZWRfZXh0KToKIChzdHJ1 Y3QgZnVuY3Rpb25fZ3JvdXBfaW5mbyk6CiAqIGNvbmZpZy9yaXNjdi90LXJp c2N2OiBBZGQgdGhlYWQtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYK ICogY29uZmlnL3Jpc2N2L3RoZWFkLXZlY3Rvci5tZAogKEBwcmVkX21vdl93 aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPik6IEFkZCBuZXcgcGF0dGVybnMu CiAoKnByZWRfbW92X3dpZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+KTogTGlr ZXdpc2UuCiAoQHByZWRfc3RvcmVfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9k ZT4pOiBMaWtld2lzZS4KIChAcHJlZF9zdHJpZGVkX2xvYWRfd2lkdGg8dmxt ZW1fb3BfYXR0cj48bW9kZT4pOiBMaWtld2lzZS4KIChAcHJlZF9zdHJpZGVk X3N0b3JlX3dpZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+KTogTGlrZXdpc2Uu CiAoQHByZWRfaW5kZXhlZF9sb2FkX3dpZHRoPHZsbWVtX29wX2F0dHI+PG1v ZGU+KTogTGlrZXdpc2UuCiAoQHByZWRfaW5kZXhlZF88dmxtZW1fb3JkZXJf YXR0cj5zdG9yZV93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPik6CiAoQHBy ZWRfdGhfZXh0cmFjdDxtb2RlPik6IExpa2V3aXNlLgogKCpwcmVkX3RoX2V4 dHJhY3Q8bW9kZT4pOiBMaWtld2lzZS4KICogY29uZmlnL3Jpc2N2L3RoZWFk LXZlY3Rvci1idWlsdGlucy1mdW5jdGlvbnMuZGVmOiBOZXcgZmlsZS4KZ2Nj L3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CiAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2 L3h0aGVhZHZlY3Rvci92bGItdnNiLmM6IE5ldyB0ZXN0LgogKiBnY2MudGFy Z2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxidS12c2IuYzogTmV3IHRl c3QuCiAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGgt dnNoLmM6IE5ldyB0ZXN0LgogKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhl YWR2ZWN0b3IvdmxodS12c2guYzogTmV3IHRlc3QuCiAqIGdjYy50YXJnZXQv cmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3LmM6IE5ldyB0ZXN0Lgog KiBnY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3dS12c3cu YzogTmV3IHRlc3QuCkNvLWF1dGhvcmVkLWJ5OiBKaW4gTWEgPGppbm1hQGxp bnV4LmFsaWJhYmEuY29tPgpDby1hdXRob3JlZC1ieTogWGlhbm1pYW8gUXUg PGNvb3Blci5xdUBsaW51eC5hbGliYWJhLmNvbT4KQ28tYXV0aG9yZWQtYnk6 IENocmlzdG9waCBNw7xsbG5lciA8Y2hyaXN0b3BoLm11ZWxsbmVyQHZydWxs LmV1PgotLS0KIC4uLi9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFz ZXMuY2MgfCAxMzkgKysrKysrKysrKwogLi4uL3Jpc2N2L3Jpc2N2LXZlY3Rv ci1idWlsdGlucy1iYXNlcy5oIHwgMzEgKysrCiAuLi4vcmlzY3YvcmlzY3Yt dmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5jYyB8IDE2MCArKysrKysrKysrKwog Li4uL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1zaGFwZXMuaCB8IDMg KwogZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMuY2Mg fCA3MCArKysrKwogZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVp bHRpbnMuaCB8IDMgKwogZ2NjL2NvbmZpZy9yaXNjdi90LXJpc2N2IHwgMSAr CiAuLi4vcmlzY3YvdGhlYWQtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5k ZWYgfCAzOSArKysKIGdjYy9jb25maWcvcmlzY3YvdGhlYWQtdmVjdG9yLm1k IHwgMjUwICsrKysrKysrKysrKysrKysrKwogLi4uL3Jpc2N2L3J2di94dGhl YWR2ZWN0b3IvdmxiLXZzYi5jIHwgNjggKysrKysKIC4uLi9yaXNjdi9ydnYv eHRoZWFkdmVjdG9yL3ZsYnUtdnNiLmMgfCA2OCArKysrKwogLi4uL3Jpc2N2 L3J2di94dGhlYWR2ZWN0b3IvdmxoLXZzaC5jIHwgNjggKysrKysKIC4uLi9y aXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaHUtdnNoLmMgfCA2OCArKysrKwog Li4uL3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3LXZzdy5jIHwgNjggKysr KysKIC4uLi9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zsd3UtdnN3LmMgfCA2 OCArKysrKwogMTUgZmlsZXMgY2hhbmdlZCwgMTEwNCBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12 ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZgogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFk dmVjdG9yL3ZsYi12c2IuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsYnUt dnNiLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGgtdnNoLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L3h0aGVhZHZlY3Rvci92bGh1LXZzaC5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2 ZWN0b3Ivdmx3LXZzdy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3dS12 c3cuYwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0 b3ItYnVpbHRpbnMtYmFzZXMuY2MgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2 LXZlY3Rvci1idWlsdGlucy1iYXNlcy5jYwppbmRleCAxYWE2ZTNjNjY2NS4u YjZmNmU0ZmYzN2UgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvcmlzY3Yvcmlz Y3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmNjCisrKyBiL2djYy9jb25maWcv cmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmNjCkBAIC0yMTQx LDYgKzIxNDEsODMgQEAgcHVibGljOgogfQogfTsKKy8qIEltcGxlbWVudHMK KyAqIHRoLnZsKGIvaC93KVt1XS52L3RoLnZzKGIvaC93KVt1XS52L3RoLnZs cyhiL2gvdylbdV0udi90aC52c3MoYi9oL3cpW3VdLnYvCisgKiB0aC52bHgo Yi9oL3cpW3VdLnYvdGgudnNbdV14KGIvaC93KS52CisgKiBjb2RlZ2VuLiAq LwordGVtcGxhdGU8Ym9vbCBTVE9SRV9QLCBsc3RfdHlwZSBMU1RfVFlQRSwg aW50IFVOU1BFQz4KK2NsYXNzIHRoX2xvYWRzdG9yZV93aWR0aCA6IHB1Ymxp YyBmdW5jdGlvbl9iYXNlCit7CitwdWJsaWM6CisgYm9vbCBhcHBseV90YWls X3BvbGljeV9wICgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFTVE9SRV9Q OyB9CisgYm9vbCBhcHBseV9tYXNrX3BvbGljeV9wICgpIGNvbnN0IG92ZXJy aWRlIHsgcmV0dXJuICFTVE9SRV9QOyB9CisKKyB1bnNpZ25lZCBpbnQgY2Fs bF9wcm9wZXJ0aWVzIChjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmKSBjb25z dCBvdmVycmlkZQorIHsKKyBpZiAoU1RPUkVfUCkKKyByZXR1cm4gQ1BfV1JJ VEVfTUVNT1JZOworIGVsc2UKKyByZXR1cm4gQ1BfUkVBRF9NRU1PUlk7Cisg fQorCisgYm9vbCBjYW5fYmVfb3ZlcmxvYWRlZF9wIChlbnVtIHByZWRpY2F0 aW9uX3R5cGVfaW5kZXggcHJlZCkgY29uc3Qgb3ZlcnJpZGUKKyB7CisgaWYg KFNUT1JFX1AgfHwgTFNUX1RZUEUgPT0gTFNUX0lOREVYRUQpCisgcmV0dXJu IHRydWU7CisgcmV0dXJuIHByZWQgIT0gUFJFRF9UWVBFX25vbmU7CisgfQor CisgcnR4IGV4cGFuZCAoZnVuY3Rpb25fZXhwYW5kZXIgJmUpIGNvbnN0IG92 ZXJyaWRlCisgeworIGdjY19hc3NlcnQgKFRBUkdFVF9YVEhFQURWRUNUT1Ip OworIGlmIChMU1RfVFlQRSA9PSBMU1RfSU5ERVhFRCkKKyB7CisgaWYgKFNU T1JFX1ApCisgcmV0dXJuIGUudXNlX2V4YWN0X2luc24gKAorIGNvZGVfZm9y X3ByZWRfaW5kZXhlZF9zdG9yZV93aWR0aCAoVU5TUEVDLCBVTlNQRUMsCisg ZS52ZWN0b3JfbW9kZSAoKSkpOworIGVsc2UKKyByZXR1cm4gZS51c2VfZXhh Y3RfaW5zbiAoCisgY29kZV9mb3JfcHJlZF9pbmRleGVkX2xvYWRfd2lkdGgg KFVOU1BFQywgZS52ZWN0b3JfbW9kZSAoKSkpOworIH0KKyBlbHNlIGlmIChM U1RfVFlQRSA9PSBMU1RfU1RSSURFRCkKKyB7CisgaWYgKFNUT1JFX1ApCisg cmV0dXJuIGUudXNlX2NvbnRpZ3VvdXNfc3RvcmVfaW5zbiAoCisgY29kZV9m b3JfcHJlZF9zdHJpZGVkX3N0b3JlX3dpZHRoIChVTlNQRUMsIGUudmVjdG9y X21vZGUgKCkpKTsKKyBlbHNlCisgcmV0dXJuIGUudXNlX2NvbnRpZ3VvdXNf bG9hZF9pbnNuICgKKyBjb2RlX2Zvcl9wcmVkX3N0cmlkZWRfbG9hZF93aWR0 aCAoVU5TUEVDLCBlLnZlY3Rvcl9tb2RlICgpKSk7CisgfQorIGVsc2UKKyB7 CisgaWYgKFNUT1JFX1ApCisgcmV0dXJuIGUudXNlX2NvbnRpZ3VvdXNfc3Rv cmVfaW5zbiAoCisgY29kZV9mb3JfcHJlZF9zdG9yZV93aWR0aCAoVU5TUEVD LCBlLnZlY3Rvcl9tb2RlICgpKSk7CisgZWxzZQorIHJldHVybiBlLnVzZV9j b250aWd1b3VzX2xvYWRfaW5zbiAoCisgY29kZV9mb3JfcHJlZF9tb3Zfd2lk dGggKFVOU1BFQywgZS52ZWN0b3JfbW9kZSAoKSkpOworIH0KKyB9Cit9Owor CisvKiBJbXBsZW1lbnRzIHZleHQueC52LiAqLworY2xhc3MgdGhfZXh0cmFj dCA6IHB1YmxpYyBmdW5jdGlvbl9iYXNlCit7CitwdWJsaWM6CisgYm9vbCBh cHBseV92bF9wICgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9 CisgYm9vbCBhcHBseV90YWlsX3BvbGljeV9wICgpIGNvbnN0IG92ZXJyaWRl IHsgcmV0dXJuIGZhbHNlOyB9CisgYm9vbCBhcHBseV9tYXNrX3BvbGljeV9w ICgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgYm9vbCB1 c2VfbWFza19wcmVkaWNhdGlvbl9wICgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0 dXJuIGZhbHNlOyB9CisgYm9vbCBoYXNfbWVyZ2Vfb3BlcmFuZF9wICgpIGNv bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyBydHggZXhwYW5k IChmdW5jdGlvbl9leHBhbmRlciAmZSkgY29uc3Qgb3ZlcnJpZGUKKyB7Cisg Z2NjX2Fzc2VydCAoVEFSR0VUX1hUSEVBRFZFQ1RPUik7CisgcmV0dXJuIGUu dXNlX2V4YWN0X2luc24gKGNvZGVfZm9yX3ByZWRfdGhfZXh0cmFjdCAoZS52 ZWN0b3JfbW9kZSAoKSkpOworIH0KK307CisKIC8qIEJlbG93IGltcGxlbWVu dHMgYXJlIHZlY3RvciBjcnlwdG8gKi8KIC8qIEltcGxlbWVudHMgdmFuZG4u W3Z2LHZ4XSAqLwogY2xhc3MgdmFuZG4gOiBwdWJsaWMgZnVuY3Rpb25fYmFz ZQpAQCAtMjYwMyw2ICsyNjgwLDM3IEBAIHN0YXRpYyBDT05TVEVYUFIgY29u c3Qgc2VnX2luZGV4ZWRfbG9hZDxVTlNQRUNfT1JERVJFRD4gdmxveHNlZ19v Ymo7CiBzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHNlZ19pbmRleGVkX3N0b3Jl PFVOU1BFQ19VTk9SREVSRUQ+IHZzdXhzZWdfb2JqOwogc3RhdGljIENPTlNU RVhQUiBjb25zdCBzZWdfaW5kZXhlZF9zdG9yZTxVTlNQRUNfT1JERVJFRD4g dnNveHNlZ19vYmo7CiBzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHZsc2VnZmYg dmxzZWdmZl9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRz dG9yZV93aWR0aDxmYWxzZSwgTFNUX1VOSVRfU1RSSURFLCBVTlNQRUNfVEhf VkxCPiB2bGJfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fk c3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RI X1ZMQlU+IHZsYnVfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9s b2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9VTklUX1NUUklERSwgVU5TUEVD X1RIX1ZMSD4gdmxoX29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhf bG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfVU5JVF9TVFJJREUsIFVOU1BF Q19USF9WTEhVPiB2bGh1X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3Qg dGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfVU5JVF9TVFJJREUsIFVO U1BFQ19USF9WTFc+IHZsd19vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0 IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX1VOSVRfU1RSSURFLCBV TlNQRUNfVEhfVkxXVT4gdmx3dV9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNv bnN0IHRoX2xvYWRzdG9yZV93aWR0aDx0cnVlLCBMU1RfVU5JVF9TVFJJREUs IFVOU1BFQ19USF9WTEI+IHZzYl9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNv bnN0IHRoX2xvYWRzdG9yZV93aWR0aDx0cnVlLCBMU1RfVU5JVF9TVFJJREUs IFVOU1BFQ19USF9WTEg+IHZzaF9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNv bnN0IHRoX2xvYWRzdG9yZV93aWR0aDx0cnVlLCBMU1RfVU5JVF9TVFJJREUs IFVOU1BFQ19USF9WTFc+IHZzd19vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNv bnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX1NUUklERUQsIFVO U1BFQ19USF9WTFNCPiB2bHNiX29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29u c3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfU1RSSURFRCwgVU5T UEVDX1RIX1ZMU0JVPiB2bHNidV9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNv bnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX1NUUklERUQsIFVO U1BFQ19USF9WTFNIPiB2bHNoX29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29u c3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfU1RSSURFRCwgVU5T UEVDX1RIX1ZMU0hVPiB2bHNodV9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNv bnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX1NUUklERUQsIFVO U1BFQ19USF9WTFNXPiB2bHN3X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29u c3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfU1RSSURFRCwgVU5T UEVDX1RIX1ZMU1dVPiB2bHN3dV9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNv bnN0IHRoX2xvYWRzdG9yZV93aWR0aDx0cnVlLCBMU1RfU1RSSURFRCwgVU5T UEVDX1RIX1ZMU0I+IHZzc2Jfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25z dCB0aF9sb2Fkc3RvcmVfd2lkdGg8dHJ1ZSwgTFNUX1NUUklERUQsIFVOU1BF Q19USF9WTFNIPiB2c3NoX29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3Qg dGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9TVFJJREVELCBVTlNQRUNf VEhfVkxTVz4gdnNzd19vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRo X2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19U SF9WTFhCPiB2bHhiX29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhf bG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RI X1ZMWEJVPiB2bHhidV9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRo X2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19U SF9WTFhIPiB2bHhoX29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhf bG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RI X1ZMWEhVPiB2bHhodV9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRo X2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19U SF9WTFhXPiB2bHh3X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhf bG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RI X1ZMWFdVPiB2bHh3dV9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRo X2xvYWRzdG9yZV93aWR0aDx0cnVlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RI X1ZMWEI+IHZzeGJfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9s b2Fkc3RvcmVfd2lkdGg8dHJ1ZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9W TFhIPiB2c3hoX29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9h ZHN0b3JlX3dpZHRoPHRydWUsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxY Vz4gdnN4d19vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRz dG9yZV93aWR0aDx0cnVlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZTVVhC PiB2c3V4Yl9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRz dG9yZV93aWR0aDx0cnVlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZTVVhI PiB2c3V4aF9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRz dG9yZV93aWR0aDx0cnVlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZTVVhX PiB2c3V4d19vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2V4dHJh Y3QgdmV4dF94X3Zfb2JqOwogLyogQ3J5cHRvIFZlY3RvciAqLwogc3RhdGlj IENPTlNURVhQUiBjb25zdCB2YW5kbiB2YW5kbl9vYmo7CkBAIC0yODk0LDYg KzMwMDIsMzcgQEAgQkFTRSAodmxveHNlZykKIEJBU0UgKHZzdXhzZWcpCiBC QVNFICh2c294c2VnKQogQkFTRSAodmxzZWdmZikKK0JBU0UgKHZsYikKK0JB U0UgKHZsaCkKK0JBU0UgKHZsdykKK0JBU0UgKHZsYnUpCitCQVNFICh2bGh1 KQorQkFTRSAodmx3dSkKK0JBU0UgKHZzYikKK0JBU0UgKHZzaCkKK0JBU0Ug KHZzdykKK0JBU0UgKHZsc2IpCitCQVNFICh2bHNoKQorQkFTRSAodmxzdykK K0JBU0UgKHZsc2J1KQorQkFTRSAodmxzaHUpCitCQVNFICh2bHN3dSkKK0JB U0UgKHZzc2IpCitCQVNFICh2c3NoKQorQkFTRSAodnNzdykKK0JBU0UgKHZs eGIpCitCQVNFICh2bHhoKQorQkFTRSAodmx4dykKK0JBU0UgKHZseGJ1KQor QkFTRSAodmx4aHUpCitCQVNFICh2bHh3dSkKK0JBU0UgKHZzeGIpCitCQVNF ICh2c3hoKQorQkFTRSAodnN4dykKK0JBU0UgKHZzdXhiKQorQkFTRSAodnN1 eGgpCitCQVNFICh2c3V4dykKK0JBU0UgKHZleHRfeF92KQogLyogQ3J5cHRv IHZlY3RvciAqLwogQkFTRSAodmFuZG4pCiBCQVNFICh2YnJldikKZGlmZiAt LWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5z LWJhc2VzLmggYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWls dGlucy1iYXNlcy5oCmluZGV4IDg3YzdmNDNhNDIzLi4xZjJjOTRkMzU0MSAx MDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVp bHRpbnMtYmFzZXMuaAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZl Y3Rvci1idWlsdGlucy1iYXNlcy5oCkBAIC0yODAsNiArMjgwLDM3IEBAIGV4 dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bG94c2VnOwogZXh0 ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzdXhzZWc7CiBleHRl cm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdnNveHNlZzsKIGV4dGVy biBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHNlZ2ZmOworZXh0ZXJu IGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZsYjsKK2V4dGVybiBjb25z dCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bGg7CitleHRlcm4gY29uc3QgZnVu Y3Rpb25fYmFzZSAqY29uc3Qgdmx3OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9u X2Jhc2UgKmNvbnN0IHZsYnU7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFz ZSAqY29uc3QgdmxodTsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpj b25zdCB2bHd1OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0 IHZzYjsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c2g7 CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdnN3OworZXh0 ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZsc2I7CitleHRlcm4g Y29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdmxzaDsKK2V4dGVybiBjb25z dCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHN3OworZXh0ZXJuIGNvbnN0IGZ1 bmN0aW9uX2Jhc2UgKmNvbnN0IHZsc2J1OworZXh0ZXJuIGNvbnN0IGZ1bmN0 aW9uX2Jhc2UgKmNvbnN0IHZsc2h1OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9u X2Jhc2UgKmNvbnN0IHZsc3d1OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jh c2UgKmNvbnN0IHZzc2I7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAq Y29uc3QgdnNzaDsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25z dCB2c3N3OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZs eGI7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qgdmx4aDsK K2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHh3OworZXh0 ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZseGJ1OworZXh0ZXJu IGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZseGh1OworZXh0ZXJuIGNv bnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZseHd1OworZXh0ZXJuIGNvbnN0 IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzeGI7CitleHRlcm4gY29uc3QgZnVu Y3Rpb25fYmFzZSAqY29uc3QgdnN4aDsKK2V4dGVybiBjb25zdCBmdW5jdGlv bl9iYXNlICpjb25zdCB2c3h3OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jh c2UgKmNvbnN0IHZzdXhiOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2Ug KmNvbnN0IHZzdXhoOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNv bnN0IHZzdXh3OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0 IHZleHRfeF92OwogLyogQmVsb3cgZnVuY3Rpb25fYmFzZSBhcmUgVmVjdHJv IENyeXB0byovCiBleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qg dmFuZG47CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdmJy ZXY7CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rv ci1idWlsdGlucy1zaGFwZXMuY2MgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2 LXZlY3Rvci1idWlsdGlucy1zaGFwZXMuY2MKaW5kZXggMWU0ZjRkNTNkZTYu LjhlOTBiMTdhOTRiIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jp c2N2LXZlY3Rvci1idWlsdGlucy1zaGFwZXMuY2MKKysrIGIvZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmNjCkBAIC0y MTEsNiArMjExLDE0NiBAQCBzdHJ1Y3QgaW5kZXhlZF9sb2Fkc3RvcmVfZGVm IDogcHVibGljIGZ1bmN0aW9uX3NoYXBlCiB9CiB9OworLyogQWRkIG9uZSBm dW5jdGlvbiBpbnN0YW5jZSBmb3IgR1JPVVAsIHVzaW5nIG9wZXJhbmQgc3Vm Zml4IGF0IGluZGV4IE9JLAorIG1vZGUgc3VmZml4IGF0IGluZGV4IFBBSVIg JiYgYmkgYW5kIHByZWRpY2F0aW9uIHN1ZmZpeCBhdCBpbmRleCBwcmVkX2lk eC4gKi8KK3N0YXRpYyB2b2lkCitidWlsZF90aF9sb2Fkc3RvcmUgKGZ1bmN0 aW9uX2J1aWxkZXIgJmIsIGNvbnN0IGZ1bmN0aW9uX2dyb3VwX2luZm8gJmdy b3VwLAorIHVuc2lnbmVkIGludCBwcmVkX2lkeCwgdW5zaWduZWQgaW50IHZl Y190eXBlX2lkeCkKK3sKKyBhdXRvX3ZlYzx0cmVlLCA1PiBhcmd1bWVudF90 eXBlczsKKyBmdW5jdGlvbl9pbnN0YW5jZSBmdW5jdGlvbl9pbnN0YW5jZSAo Z3JvdXAuYmFzZV9uYW1lLCAqZ3JvdXAuYmFzZSwKKyAqZ3JvdXAuc2hhcGUs CisgZ3JvdXAub3BzX2luZm9zLnR5cGVzW3ZlY190eXBlX2lkeF0sCisgZ3Jv dXAucHJlZHNbcHJlZF9pZHhdLCAmZ3JvdXAub3BzX2luZm9zKTsKKyB0cmVl IHJldHVybl90eXBlID0gZ3JvdXAub3BzX2luZm9zLnJldC5nZXRfdHJlZV90 eXBlICgKKyBncm91cC5vcHNfaW5mb3MudHlwZXNbdmVjX3R5cGVfaWR4XS5p bmRleCk7CisgYi5hbGxvY2F0ZV9hcmd1bWVudF90eXBlcyAoZnVuY3Rpb25f aW5zdGFuY2UsIGFyZ3VtZW50X3R5cGVzKTsKKyBiLmFwcGx5X3ByZWRpY2F0 aW9uIChmdW5jdGlvbl9pbnN0YW5jZSwgcmV0dXJuX3R5cGUsIGFyZ3VtZW50 X3R5cGVzKTsKKworIGlmIChUQVJHRVRfWFRIRUFEVkVDVE9SICYmICFjaGVj a190eXBlIChyZXR1cm5fdHlwZSwgYXJndW1lbnRfdHlwZXMpKQorIHJldHVy bjsKKworIHRyZWUgdHlwZSA9IGJ1aWx0aW5fdHlwZXNbZ3JvdXAub3BzX2lu Zm9zLnR5cGVzW3ZlY190eXBlX2lkeF0uaW5kZXhdLnZlY3RvcjsKKyBpZiAo c3Ryc3RyIChncm91cC5iYXNlX25hbWUsICJsIikKKyAmJiBzdHJzdHIgKGdy b3VwLmJhc2VfbmFtZSwgInUiKQorICYmICFUWVBFX1VOU0lHTkVEIChUUkVF X1RZUEUgKHR5cGUpKSkKKyByZXR1cm47CisKKyBpZiAoc3Ryc3RyIChncm91 cC5iYXNlX25hbWUsICJsIikKKyAmJiAhc3Ryc3RyIChncm91cC5iYXNlX25h bWUsICJ1IikKKyAmJiBUWVBFX1VOU0lHTkVEIChUUkVFX1RZUEUgKHR5cGUp KSkKKyByZXR1cm47CisKKyBtYWNoaW5lX21vZGUgbW9kZSA9IFRZUEVfTU9E RSAodHlwZSk7CisgaW50IHNldyA9IEdFVF9NT0RFX0JJVFNJWkUgKEdFVF9N T0RFX0lOTkVSIChtb2RlKSk7CisgaWYgKHN0cnN0ciAoZ3JvdXAuYmFzZV9u YW1lLCAiaCIpICYmIHNldyA9PSA4KQorIHJldHVybjsKKworIGlmIChzdHJz dHIgKGdyb3VwLmJhc2VfbmFtZSwgInciKSAmJiAoc2V3ID09IDggfHwgc2V3 ID09MTYpKQorIHJldHVybjsKKworIGIuYWRkX292ZXJsb2FkZWRfZnVuY3Rp b24gKGZ1bmN0aW9uX2luc3RhbmNlLCAqZ3JvdXAuc2hhcGUpOworIGIuYWRk X3VuaXF1ZV9mdW5jdGlvbiAoZnVuY3Rpb25faW5zdGFuY2UsICgqZ3JvdXAu c2hhcGUpLCByZXR1cm5fdHlwZSwKKyBhcmd1bWVudF90eXBlcyk7Cit9CisK Ky8qIHRoX2xvYWRzdG9yZV93aWR0aF9kZWYgY2xhc3MuICovCitzdHJ1Y3Qg dGhfbG9hZHN0b3JlX3dpZHRoX2RlZiA6IHB1YmxpYyBidWlsZF9iYXNlCit7 Cisgdm9pZCBidWlsZCAoZnVuY3Rpb25fYnVpbGRlciAmYiwKKyBjb25zdCBm dW5jdGlvbl9ncm91cF9pbmZvICZncm91cCkgY29uc3Qgb3ZlcnJpZGUKKyB7 CisgZm9yICh1bnNpZ25lZCBpbnQgcHJlZF9pZHggPSAwOyBncm91cC5wcmVk c1twcmVkX2lkeF0gIT0gTlVNX1BSRURfVFlQRVM7CisgKytwcmVkX2lkeCkK KyB7CisgZm9yICh1bnNpZ25lZCBpbnQgdmVjX3R5cGVfaWR4ID0gMDsKKyBn cm91cC5vcHNfaW5mb3MudHlwZXNbdmVjX3R5cGVfaWR4XS5pbmRleCAhPSBO VU1fVkVDVE9SX1RZUEVTOworICsrdmVjX3R5cGVfaWR4KQorIHsKKyBidWls ZF90aF9sb2Fkc3RvcmUgKGIsIGdyb3VwLCBwcmVkX2lkeCwgdmVjX3R5cGVf aWR4KTsKKyB9CisgfQorIH0KKworIGNoYXIgKmdldF9uYW1lIChmdW5jdGlv bl9idWlsZGVyICZiLCBjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmaW5zdGFu Y2UsCisgYm9vbCBvdmVybG9hZGVkX3ApIGNvbnN0IG92ZXJyaWRlCisgewor IC8qIFJldHVybiBudWxscHRyIGlmIGl0IGNhbiBub3QgYmUgb3ZlcmxvYWRl ZC4gKi8KKyBpZiAob3ZlcmxvYWRlZF9wICYmICFpbnN0YW5jZS5iYXNlLT5j YW5fYmVfb3ZlcmxvYWRlZF9wIChpbnN0YW5jZS5wcmVkKSkKKyByZXR1cm4g bnVsbHB0cjsKKworIGIuYXBwZW5kX25hbWUgKCJfX3Jpc2N2X3RoXyIpOwor IGIuYXBwZW5kX25hbWUgKGluc3RhbmNlLmJhc2VfbmFtZSk7CisKKyAvKiB2 b3BfdiAtLT4gdm9wX3ZfPHR5cGU+LiAqLworIGlmICghb3ZlcmxvYWRlZF9w KQorIHsKKyAvKiB2b3AgLS0+IHZvcF92LiAqLworIGIuYXBwZW5kX25hbWUg KG9wZXJhbmRfc3VmZml4ZXNbaW5zdGFuY2Uub3BfaW5mby0+b3BdKTsKKyAv KiB2b3BfdiAtLT4gdm9wX3ZfPHR5cGU+LiAqLworIGIuYXBwZW5kX25hbWUg KHR5cGVfc3VmZml4ZXNbaW5zdGFuY2UudHlwZS5pbmRleF0udmVjdG9yKTsK KyB9CisKKyAvKiBBY2NvcmRpbmcgdG8gcnZ2LWludHJpbnNpYy1kb2MsIGl0 IGRvZXMgbm90IGFkZCAiX20iIHN1ZmZpeAorIGZvciB2b3BfbSBDKysgb3Zl cmxvYWRlZCBBUEkuICovCisgaWYgKG92ZXJsb2FkZWRfcCAmJiBpbnN0YW5j ZS5wcmVkID09IFBSRURfVFlQRV9tKQorIHJldHVybiBiLmZpbmlzaF9uYW1l ICgpOworIGIuYXBwZW5kX25hbWUgKHByZWRpY2F0aW9uX3N1ZmZpeGVzW2lu c3RhbmNlLnByZWRdKTsKKyByZXR1cm4gYi5maW5pc2hfbmFtZSAoKTsKKyB9 Cit9OworCisKKy8qIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoX2RlZiBj bGFzcy4gKi8KK3N0cnVjdCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aF9k ZWYgOiBwdWJsaWMgZnVuY3Rpb25fc2hhcGUKK3sKKyB2b2lkIGJ1aWxkIChm dW5jdGlvbl9idWlsZGVyICZiLAorIGNvbnN0IGZ1bmN0aW9uX2dyb3VwX2lu Zm8gJmdyb3VwKSBjb25zdCBvdmVycmlkZQorIHsKKyBmb3IgKHVuc2lnbmVk IGludCBwcmVkX2lkeCA9IDA7IGdyb3VwLnByZWRzW3ByZWRfaWR4XSAhPSBO VU1fUFJFRF9UWVBFUzsKKyArK3ByZWRfaWR4KQorIHsKKyBmb3IgKHVuc2ln bmVkIGludCB2ZWNfdHlwZV9pZHggPSAwOworIGdyb3VwLm9wc19pbmZvcy50 eXBlc1t2ZWNfdHlwZV9pZHhdLmluZGV4ICE9IE5VTV9WRUNUT1JfVFlQRVM7 CisgKyt2ZWNfdHlwZV9pZHgpCisgeworIHRyZWUgaW5kZXhfdHlwZSA9IGdy b3VwLm9wc19pbmZvcy5hcmdzWzFdLmdldF90cmVlX3R5cGUgKAorIGdyb3Vw Lm9wc19pbmZvcy50eXBlc1t2ZWNfdHlwZV9pZHhdLmluZGV4KTsKKyBpZiAo IWluZGV4X3R5cGUpCisgY29udGludWU7CisgYnVpbGRfdGhfbG9hZHN0b3Jl IChiLCBncm91cCwgcHJlZF9pZHgsIHZlY190eXBlX2lkeCk7CisgfQorIH0K KyB9CisKKyBjaGFyICpnZXRfbmFtZSAoZnVuY3Rpb25fYnVpbGRlciAmYiwg Y29uc3QgZnVuY3Rpb25faW5zdGFuY2UgJmluc3RhbmNlLAorIGJvb2wgb3Zl cmxvYWRlZF9wKSBjb25zdCBvdmVycmlkZQorIHsKKworIC8qIFJldHVybiBu dWxscHRyIGlmIGl0IGNhbiBub3QgYmUgb3ZlcmxvYWRlZC4gKi8KKyBpZiAo b3ZlcmxvYWRlZF9wICYmICFpbnN0YW5jZS5iYXNlLT5jYW5fYmVfb3Zlcmxv YWRlZF9wIChpbnN0YW5jZS5wcmVkKSkKKyByZXR1cm4gbnVsbHB0cjsKKwor IGIuYXBwZW5kX25hbWUgKCJfX3Jpc2N2X3RoXyIpOworIGIuYXBwZW5kX25h bWUgKGluc3RhbmNlLmJhc2VfbmFtZSk7CisgLyogdm9wX3YgLS0+IHZvcF92 Xzx0eXBlPi4gKi8KKyBpZiAoIW92ZXJsb2FkZWRfcCkKKyB7CisgLyogdm9w IC0tPiB2b3Bfdi4gKi8KKyBiLmFwcGVuZF9uYW1lIChvcGVyYW5kX3N1ZmZp eGVzW2luc3RhbmNlLm9wX2luZm8tPm9wXSk7CisgLyogdm9wX3YgLS0+IHZv cF92Xzx0eXBlPi4gKi8KKyBiLmFwcGVuZF9uYW1lICh0eXBlX3N1ZmZpeGVz W2luc3RhbmNlLnR5cGUuaW5kZXhdLnZlY3Rvcik7CisgfQorCisgLyogQWNj b3JkaW5nIHRvIHJ2di1pbnRyaW5zaWMtZG9jLCBpdCBkb2VzIG5vdCBhZGQg Il9tIiBzdWZmaXgKKyBmb3Igdm9wX20gQysrIG92ZXJsb2FkZWQgQVBJLiAq LworIGlmIChvdmVybG9hZGVkX3AgJiYgaW5zdGFuY2UucHJlZCA9PSBQUkVE X1RZUEVfbSkKKyByZXR1cm4gYi5maW5pc2hfbmFtZSAoKTsKKyBiLmFwcGVu ZF9uYW1lIChwcmVkaWNhdGlvbl9zdWZmaXhlc1tpbnN0YW5jZS5wcmVkXSk7 CisgcmV0dXJuIGIuZmluaXNoX25hbWUgKCk7CisgfQorfTsKKwogLyogYWx1 X2RlZiBjbGFzcy4gKi8KIHN0cnVjdCBhbHVfZGVmIDogcHVibGljIGJ1aWxk X2Jhc2UKIHsKQEAgLTYzMiw2ICs3NzIsMjMgQEAgc3RydWN0IHJlZHVjX2Fs dV9kZWYgOiBwdWJsaWMgYnVpbGRfYmFzZQogfQogfTsKKy8qIHRoX2V4dHJh Y3RfZGVmIGNsYXNzLiAqLworc3RydWN0IHRoX2V4dHJhY3RfZGVmIDogcHVi bGljIGJ1aWxkX2Jhc2UKK3sKKyBjaGFyICpnZXRfbmFtZSAoZnVuY3Rpb25f YnVpbGRlciAmYiwgY29uc3QgZnVuY3Rpb25faW5zdGFuY2UgJmluc3RhbmNl LAorIGJvb2wgb3ZlcmxvYWRlZF9wKSBjb25zdCBvdmVycmlkZQorIHsKKyBi LmFwcGVuZF9uYW1lICgiX19yaXNjdl90aF8iKTsKKyBiLmFwcGVuZF9uYW1l IChpbnN0YW5jZS5iYXNlX25hbWUpOworCisgaWYgKG92ZXJsb2FkZWRfcCkK KyByZXR1cm4gYi5maW5pc2hfbmFtZSAoKTsKKyBiLmFwcGVuZF9uYW1lICh0 eXBlX3N1ZmZpeGVzW2luc3RhbmNlLnR5cGUuaW5kZXhdLnZlY3Rvcik7Cisg Yi5hcHBlbmRfbmFtZSAodHlwZV9zdWZmaXhlc1tpbnN0YW5jZS50eXBlLmlu ZGV4XS5zY2FsYXIpOworIHJldHVybiBiLmZpbmlzaF9uYW1lICgpOworIH0K K307CisKIC8qIHNjYWxhcl9tb3ZlX2RlZiBjbGFzcy4gKi8KIHN0cnVjdCBz Y2FsYXJfbW92ZV9kZWYgOiBwdWJsaWMgYnVpbGRfYmFzZQogewpAQCAtMTA5 NCw2ICsxMjUxLDggQEAgU0hBUEUodnNldHZsLCB2c2V0dmwpCiBTSEFQRSh2 c2V0dmwsIHZzZXR2bG1heCkKIFNIQVBFKGxvYWRzdG9yZSwgbG9hZHN0b3Jl KQogU0hBUEUoaW5kZXhlZF9sb2Fkc3RvcmUsIGluZGV4ZWRfbG9hZHN0b3Jl KQorU0hBUEUodGhfbG9hZHN0b3JlX3dpZHRoLCB0aF9sb2Fkc3RvcmVfd2lk dGgpCitTSEFQRSh0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgdGhfaW5k ZXhlZF9sb2Fkc3RvcmVfd2lkdGgpCiBTSEFQRShhbHUsIGFsdSkKIFNIQVBF KGFsdV9mcm0sIGFsdV9mcm0pCiBTSEFQRSh3aWRlbl9hbHUsIHdpZGVuX2Fs dSkKQEAgLTExMDYsNiArMTI2NSw3IEBAIFNIQVBFKG1vdmUsIG1vdmUpCiBT SEFQRShtYXNrX2FsdSwgbWFza19hbHUpCiBTSEFQRShyZWR1Y19hbHUsIHJl ZHVjX2FsdSkKIFNIQVBFKHJlZHVjX2FsdV9mcm0sIHJlZHVjX2FsdV9mcm0p CitTSEFQRSh0aF9leHRyYWN0LCB0aF9leHRyYWN0KQogU0hBUEUoc2NhbGFy X21vdmUsIHNjYWxhcl9tb3ZlKQogU0hBUEUodnVuZGVmaW5lZCwgdnVuZGVm aW5lZCkKIFNIQVBFKG1pc2MsIG1pc2MpCmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1zaGFwZXMuaCBiL2dj Yy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5o CmluZGV4IGFjMmEyOGNlMDE3Li5hNzYyNGQwZmFiZCAxMDA2NDQKLS0tIGEv Z2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVz LmgKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRp bnMtc2hhcGVzLmgKQEAgLTI4LDYgKzI4LDggQEAgZXh0ZXJuIGNvbnN0IGZ1 bmN0aW9uX3NoYXBlICpjb25zdCB2c2V0dmw7CiBleHRlcm4gY29uc3QgZnVu Y3Rpb25fc2hhcGUgKmNvbnN0IHZzZXR2bG1heDsKIGV4dGVybiBjb25zdCBm dW5jdGlvbl9zaGFwZSAqY29uc3QgbG9hZHN0b3JlOwogZXh0ZXJuIGNvbnN0 IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBpbmRleGVkX2xvYWRzdG9yZTsKK2V4 dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgdGhfbG9hZHN0b3Jl X3dpZHRoOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCB0 aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aDsKIGV4dGVybiBjb25zdCBmdW5j dGlvbl9zaGFwZSAqY29uc3QgYWx1OwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9u X3NoYXBlICpjb25zdCBhbHVfZnJtOwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9u X3NoYXBlICpjb25zdCB3aWRlbl9hbHU7CkBAIC00MSw2ICs0Myw3IEBAIGV4 dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgbWFza19hbHU7CiBl eHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHJlZHVjX2FsdTsK IGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgcmVkdWNfYWx1 X2ZybTsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3Qgc2Nh bGFyX21vdmU7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0 IHRoX2V4dHJhY3Q7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNv bnN0IHZ1bmRlZmluZWQ7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUg KmNvbnN0IG1pc2M7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNv bnN0IHZzZXQ7CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2 LXZlY3Rvci1idWlsdGlucy5jYyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3Yt dmVjdG9yLWJ1aWx0aW5zLmNjCmluZGV4IDI1ZTBiNmU1NmRlLi40NGI5ZmVj MTg5OCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0 b3ItYnVpbHRpbnMuY2MKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12 ZWN0b3ItYnVpbHRpbnMuY2MKQEAgLTkzNCw2ICs5MzQsMzIgQEAgc3RhdGlj IENPTlNURVhQUiBjb25zdCBydnZfYXJnX3R5cGVfaW5mbyBleHRfdmNyZWF0 ZV9hcmdzW10KID0ge3J2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV92ZWN0 b3IpLAogcnZ2X2FyZ190eXBlX2luZm9fZW5kfTsKKy8qIEEgbGlzdCBvZiBh cmdzIGZvciB2ZWN0b3JfdHlwZSBmdW5jIChjb25zdCBzY2FsYXJfdHlwZSAq LCBzaXplX3QpCisgKiBmdW5jdGlvbi4gKi8KK3N0YXRpYyBDT05TVEVYUFIg Y29uc3QgcnZ2X2FyZ190eXBlX2luZm8gc2NhbGFyX2NvbnN0X3B0cl9zaXpl X2FyZ3NbXQorID0ge3J2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV9zY2Fs YXJfY29uc3RfcHRyKSwKKyBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0Vf c2l6ZSksIHJ2dl9hcmdfdHlwZV9pbmZvX2VuZH07CisKKy8qIEEgbGlzdCBv ZiBhcmdzIGZvciB2ZWN0b3JfdHlwZSBmdW5jIChjb25zdCBzY2FsYXJfdHlw ZSAqLCBlZXc4X2luZGV4X3R5cGUpCisgKiBmdW5jdGlvbi4gKi8KK3N0YXRp YyBDT05TVEVYUFIgY29uc3QgcnZ2X2FyZ190eXBlX2luZm8gc2NhbGFyX2Nv bnN0X3B0cl9pbmRleF9hcmdzW10KKyA9IHtydnZfYXJnX3R5cGVfaW5mbyAo UlZWX0JBU0Vfc2NhbGFyX2NvbnN0X3B0ciksCisgcnZ2X2FyZ190eXBlX2lu Zm8gKFJWVl9CQVNFX3Vuc2lnbmVkX3ZlY3RvciksIHJ2dl9hcmdfdHlwZV9p bmZvX2VuZH07CisKKy8qIEEgbGlzdCBvZiBhcmdzIGZvciB2b2lkIGZ1bmMg KHNjYWxhcl90eXBlICosIGVldzhfaW5kZXhfdHlwZSwgdmVjdG9yX3R5cGUp CisgKiBmdW5jdGlvbi4gKi8KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2 X2FyZ190eXBlX2luZm8gc2NhbGFyX3B0cl9pbmRleF9hcmdzW10KKyA9IHty dnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0Vfc2NhbGFyX3B0ciksCisgcnZ2 X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3Vuc2lnbmVkX3ZlY3RvciksCisg cnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3ZlY3RvciksIHJ2dl9hcmdf dHlwZV9pbmZvX2VuZH07CisKKy8qIEEgbGlzdCBvZiBhcmdzIGZvciB2b2lk IGZ1bmMgKHNjYWxhcl90eXBlICosIHNpemVfdCwgdmVjdG9yX3R5cGUpCisg KiBmdW5jdGlvbi4gKi8KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2X2Fy Z190eXBlX2luZm8gc2NhbGFyX3B0cl9zaXplX2FyZ3NbXQorID0ge3J2dl9h cmdfdHlwZV9pbmZvIChSVlZfQkFTRV9zY2FsYXJfcHRyKSwKKyBydnZfYXJn X3R5cGVfaW5mbyAoUlZWX0JBU0Vfc2l6ZSksIHJ2dl9hcmdfdHlwZV9pbmZv IChSVlZfQkFTRV92ZWN0b3IpLAorIHJ2dl9hcmdfdHlwZV9pbmZvX2VuZH07 CisKIC8qIEEgbGlzdCBvZiBub25lIHByZWRzIHRoYXQgd2lsbCBiZSByZWdp c3RlcmVkIGZvciBpbnRyaW5zaWMgZnVuY3Rpb25zLiAqLwogc3RhdGljIENP TlNURVhQUiBjb25zdCBwcmVkaWNhdGlvbl90eXBlX2luZGV4IG5vbmVfcHJl ZHNbXQogPSB7UFJFRF9UWVBFX25vbmUsIE5VTV9QUkVEX1RZUEVTfTsKQEAg LTE0NTUsNiArMTQ4MSwxNCBAQCBzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHJ2 dl9vcF9pbmZvIGl1X3NoaWZ0X3Z2dl9vcHMKIHJ2dl9hcmdfdHlwZV9pbmZv IChSVlZfQkFTRV92ZWN0b3IpLCAvKiBSZXR1cm4gdHlwZSAqLwogc2hpZnRf dnZfYXJncyAvKiBBcmdzICovfTsKKy8qIEEgc3RhdGljIG9wZXJhbmQgaW5m b3JtYXRpb24gZm9yIHNjYWxhcl90eXBlIGZ1bmMgKHZlY3Rvcl90eXBlLCBz aXplX3QpCisgKiBmdW5jdGlvbiByZWdpc3RyYXRpb24uICovCitzdGF0aWMg Q09OU1RFWFBSIGNvbnN0IHJ2dl9vcF9pbmZvIGl1X3hfc191X29wcworID0g e2l1X29wcywgLyogVHlwZXMgKi8KKyBPUF9UWVBFX3Z4LCAvKiBTdWZmaXgg Ki8KKyBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0Vfc2NhbGFyKSwgLyog UmV0dXJuIHR5cGUgKi8KKyB2X3NpemVfYXJncyAvKiBBcmdzICovfTsKKwog LyogQSBzdGF0aWMgb3BlcmFuZCBpbmZvcm1hdGlvbiBmb3IgdmVjdG9yX3R5 cGUgZnVuYyAodmVjdG9yX3R5cGUsIHNpemVfdCkKICogZnVuY3Rpb24gcmVn aXN0cmF0aW9uLiAqLwogc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfb3Bf aW5mbyBpdV9zaGlmdF92dnhfb3BzCkBAIC0yNjM4LDYgKzI2NzIsMzggQEAg c3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfb3BfaW5mbyBhbGxfdl92Y3Jl YXRlX2xtdWw0X3gyX29wcwogcnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNF X3ZsbXVsX2V4dF94MiksIC8qIFJldHVybiB0eXBlICovCiBleHRfdmNyZWF0 ZV9hcmdzIC8qIEFyZ3MgKi99OworLyogQSBzdGF0aWMgb3BlcmFuZCBpbmZv cm1hdGlvbiBmb3IgdmVjdG9yX3R5cGUgZnVuYyAoY29uc3Qgc2NhbGFyX3R5 cGUgKiwKKyAqIHNpemVfdCkgZnVuY3Rpb24gcmVnaXN0cmF0aW9uLiAqLwor c3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfb3BfaW5mbyBhbGxfdl9zY2Fs YXJfY29uc3RfcHRyX3NpemVfb3BzCisgPSB7YWxsX29wcywgLyogVHlwZXMg Ki8KKyBPUF9UWVBFX3YsIC8qIFN1ZmZpeCAqLworIHJ2dl9hcmdfdHlwZV9p bmZvIChSVlZfQkFTRV92ZWN0b3IpLCAvKiBSZXR1cm4gdHlwZSAqLworIHNj YWxhcl9jb25zdF9wdHJfc2l6ZV9hcmdzIC8qIEFyZ3MgKi99OworCisvKiBB IHN0YXRpYyBvcGVyYW5kIGluZm9ybWF0aW9uIGZvciB2b2lkIGZ1bmMgKHNj YWxhcl90eXBlICosIHNpemVfdCwKKyAqIHZlY3Rvcl90eXBlKSBmdW5jdGlv biByZWdpc3RyYXRpb24uICovCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHJ2 dl9vcF9pbmZvIGFsbF92X3NjYWxhcl9wdHJfc2l6ZV9vcHMKKyA9IHthbGxf b3BzLCAvKiBUeXBlcyAqLworIE9QX1RZUEVfdiwgLyogU3VmZml4ICovCisg cnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3ZvaWQpLCAvKiBSZXR1cm4g dHlwZSAqLworIHNjYWxhcl9wdHJfc2l6ZV9hcmdzIC8qIEFyZ3MgKi99Owor CisvKiBBIHN0YXRpYyBvcGVyYW5kIGluZm9ybWF0aW9uIGZvciB2ZWN0b3Jf dHlwZSBmdW5jIChjb25zdCBzY2FsYXJfdHlwZSAqLAorICogaW5kZXhfdHlw ZSkgZnVuY3Rpb24gcmVnaXN0cmF0aW9uLiAqLworc3RhdGljIENPTlNURVhQ UiBjb25zdCBydnZfb3BfaW5mbyBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX2lu ZGV4X29wcworID0ge2FsbF9vcHMsIC8qIFR5cGVzICovCisgT1BfVFlQRV92 LCAvKiBTdWZmaXggKi8KKyBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0Vf dmVjdG9yKSwgLyogUmV0dXJuIHR5cGUgKi8KKyBzY2FsYXJfY29uc3RfcHRy X2luZGV4X2FyZ3MgLyogQXJncyAqL307CisKKy8qIEEgc3RhdGljIG9wZXJh bmQgaW5mb3JtYXRpb24gZm9yIHZvaWQgZnVuYyAoc2NhbGFyX3R5cGUgKiwg aW5kZXhfdHlwZSwKKyAqIHZlY3Rvcl90eXBlKSBmdW5jdGlvbiByZWdpc3Ry YXRpb24uICovCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHJ2dl9vcF9pbmZv IGFsbF92X3NjYWxhcl9wdHJfaW5kZXhfb3BzCisgPSB7YWxsX29wcywgLyog VHlwZXMgKi8KKyBPUF9UWVBFX3YsIC8qIFN1ZmZpeCAqLworIHJ2dl9hcmdf dHlwZV9pbmZvIChSVlZfQkFTRV92b2lkKSwgLyogUmV0dXJuIHR5cGUgKi8K KyBzY2FsYXJfcHRyX2luZGV4X2FyZ3MgLyogQXJncyAqL307CisKIC8qIEEg c3RhdGljIG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZlY3Rvcl90eXBlIGZ1 bmMgKHZlY3Rvcl90eXBlKS4KIFNvbWUgaW5zIGp1c3Qgc3VwcG9ydHMgU0VX PTMyLCBzdWNoIGFzIGNyeXB0byB2ZWN0b2wgWnZrZyBleHRlbnNpb24uCiAq IGZ1bmN0aW9uIHJlZ2lzdHJhdGlvbi4gKi8KQEAgLTI4MTYsNiArMjg4Miwx MCBAQCBzdGF0aWMgZnVuY3Rpb25fZ3JvdXBfaW5mbyBmdW5jdGlvbl9ncm91 cHNbXSA9IHsKICNkZWZpbmUgREVGX1JWVl9GVU5DVElPTihOQU1FLCBTSEFQ RSwgUFJFRFMsIE9QU19JTkZPKSBcCiB7I05BTUUsICZiYXNlczo6TkFNRSwg JnNoYXBlczo6U0hBUEUsIFBSRURTLCBPUFNfSU5GTywgUkVRVUlSRURfRVhU RU5TSU9OU30sCiAjaW5jbHVkZSAicmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWZ1 bmN0aW9ucy5kZWYiCisjdW5kZWYgREVGX1JWVl9GVU5DVElPTgorI2RlZmlu ZSBERUZfUlZWX0ZVTkNUSU9OKE5BTUUsIFNIQVBFLCBQUkVEUywgT1BTX0lO Rk8pIFwKKyB7I05BTUUsICZiYXNlczo6TkFNRSwgJnNoYXBlczo6U0hBUEUs IFBSRURTLCBPUFNfSU5GTywgUkVRVUlSRURfRVhURU5TSU9OU30sCisjaW5j bHVkZSAidGhlYWQtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYiCiB9 OwogLyogVGhlIFJWViB0eXBlcywgd2l0aCB0aGVpciBidWlsdC1pbgpkaWZm IC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRp bnMuaCBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5z LmgKaW5kZXggNTRjODgyNGZmOTIuLjIyZmVkNjBiNGMzIDEwMDY0NAotLS0g YS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5oCisr KyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmgK QEAgLTEyMyw2ICsxMjMsNyBAQCBlbnVtIHJlcXVpcmVkX2V4dAogWlZLTkhC X0VYVCwgLyogQ3J5cHRvIHZlY3RvciBadmtuaGIgc3ViLWV4dCAqLwogWlZL U0VEX0VYVCwgLyogQ3J5cHRvIHZlY3RvciBadmtzZWQgc3ViLWV4dCAqLwog WlZLU0hfRVhULCAvKiBDcnlwdG8gdmVjdG9yIFp2a3NoIHN1Yi1leHQgKi8K KyBYVEhFQURWRUNUT1JfRVhULCAvKiBYVGhlYWRWZWN0b3IgZXh0ZW5zaW9u ICovCiB9OwogLyogRW51bWVyYXRlcyB0aGUgUlZWIG9wZXJhbmQgdHlwZXMu ICovCkBAIC0yNTIsNiArMjUzLDggQEAgc3RydWN0IGZ1bmN0aW9uX2dyb3Vw X2luZm8KIHJldHVybiBUQVJHRVRfWlZLU0VEOwogY2FzZSBaVktTSF9FWFQ6 CiByZXR1cm4gVEFSR0VUX1pWS1NIOworIGNhc2UgWFRIRUFEVkVDVE9SX0VY VDoKKyByZXR1cm4gVEFSR0VUX1hUSEVBRFZFQ1RPUjsKIGRlZmF1bHQ6CiBn Y2NfdW5yZWFjaGFibGUgKCk7CiB9CmRpZmYgLS1naXQgYS9nY2MvY29uZmln L3Jpc2N2L3QtcmlzY3YgYi9nY2MvY29uZmlnL3Jpc2N2L3QtcmlzY3YKaW5k ZXggMzJkZTZiODUxYzEuLjM4NDk0MzIwZDhiIDEwMDY0NAotLS0gYS9nY2Mv Y29uZmlnL3Jpc2N2L3QtcmlzY3YKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi90 LXJpc2N2CkBAIC0xLDYgKzEsNyBAQAogUklTQ1ZfQlVJTFRJTlNfSCA9ICQo c3JjZGlyKS9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmgg XAogJChzcmNkaXIpL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRp bnMuZGVmIFwKICQoc3JjZGlyKS9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9y LWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYgXAorICQoc3JjZGlyKS9jb25maWcv cmlzY3YvdGhlYWQtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYgXAog cmlzY3YtdmVjdG9yLXR5cGUtaW5kZXhlci5nZW4uZGVmCiByaXNjdi1idWls dGlucy5vOiAkKHNyY2RpcikvY29uZmlnL3Jpc2N2L3Jpc2N2LWJ1aWx0aW5z LmNjICQoQ09ORklHX0gpIFwKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlz Y3YvdGhlYWQtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYgYi9nY2Mv Y29uZmlnL3Jpc2N2L3RoZWFkLXZlY3Rvci1idWlsdGlucy1mdW5jdGlvbnMu ZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5m ZDNiYTI5YmFlOQotLS0gL2Rldi9udWxsCisrKyBiL2djYy9jb25maWcvcmlz Y3YvdGhlYWQtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYKQEAgLTAs MCArMSwzOSBAQAorI2lmbmRlZiBERUZfUlZWX0ZVTkNUSU9OCisjZGVmaW5l IERFRl9SVlZfRlVOQ1RJT04oTkFNRSwgU0hBUEUsIFBSRURTLCBPUFNfSU5G TykKKyNlbmRpZgorCisjZGVmaW5lIFJFUVVJUkVEX0VYVEVOU0lPTlMgWFRI RUFEVkVDVE9SX0VYVAorREVGX1JWVl9GVU5DVElPTiAodmxiLCB0aF9sb2Fk c3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9w dHJfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmxoLCB0aF9sb2Fkc3RvcmVf d2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfb3Bz KQorREVGX1JWVl9GVU5DVElPTiAodmx3LCB0aF9sb2Fkc3RvcmVfd2lkdGgs IGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfb3BzKQorREVG X1JWVl9GVU5DVElPTiAodmxidSwgdGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxs X3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX29wcykKK0RFRl9SVlZf RlVOQ1RJT04gKHZsaHUsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVk cywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9vcHMpCitERUZfUlZWX0ZVTkNU SU9OICh2bHd1LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFs bF92X3NjYWxhcl9jb25zdF9wdHJfb3BzKQorREVGX1JWVl9GVU5DVElPTiAo dnNiLCB0aF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zf c2NhbGFyX3B0cl9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c2gsIHRoX2xv YWRzdG9yZV93aWR0aCwgbm9uZV9tX3ByZWRzLCBhbGxfdl9zY2FsYXJfcHRy X29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZzdywgdGhfbG9hZHN0b3JlX3dp ZHRoLCBub25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfb3BzKQorREVG X1JWVl9GVU5DVElPTiAodmxzYiwgdGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxs X3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX3NpemVfb3BzKQorREVG X1JWVl9GVU5DVElPTiAodmxzaCwgdGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxs X3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX3NpemVfb3BzKQorREVG X1JWVl9GVU5DVElPTiAodmxzdywgdGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxs X3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX3NpemVfb3BzKQorREVG X1JWVl9GVU5DVElPTiAodmxzYnUsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVs bF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9zaXplX29wcykKK0RF Rl9SVlZfRlVOQ1RJT04gKHZsc2h1LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1 bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfc2l6ZV9vcHMpCitE RUZfUlZWX0ZVTkNUSU9OICh2bHN3dSwgdGhfbG9hZHN0b3JlX3dpZHRoLCBm dWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX3NpemVfb3BzKQor REVGX1JWVl9GVU5DVElPTiAodnNzYiwgdGhfbG9hZHN0b3JlX3dpZHRoLCBu b25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfc2l6ZV9vcHMpCitERUZf UlZWX0ZVTkNUSU9OICh2c3NoLCB0aF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVf bV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9zaXplX29wcykKK0RFRl9SVlZf RlVOQ1RJT04gKHZzc3csIHRoX2xvYWRzdG9yZV93aWR0aCwgbm9uZV9tX3By ZWRzLCBhbGxfdl9zY2FsYXJfcHRyX3NpemVfb3BzKQorREVGX1JWVl9GVU5D VElPTiAodmx4YiwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxf cHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfaW5kZXhfb3BzKQorREVG X1JWVl9GVU5DVElPTiAodmx4aCwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lk dGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfaW5kZXhf b3BzKQorREVGX1JWVl9GVU5DVElPTiAodmx4dywgdGhfaW5kZXhlZF9sb2Fk c3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9w dHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmx4YnUsIHRoX2lu ZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2Fs YXJfY29uc3RfcHRyX2luZGV4X29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZs eGh1LCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywg YWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZV TkNUSU9OICh2bHh3dSwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIGZ1 bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfaW5kZXhfb3BzKQor REVGX1JWVl9GVU5DVElPTiAodnN4YiwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVf d2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9pbmRleF9v cHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c3hoLCB0aF9pbmRleGVkX2xvYWRz dG9yZV93aWR0aCwgbm9uZV9tX3ByZWRzLCBhbGxfdl9zY2FsYXJfcHRyX2lu ZGV4X29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZzeHcsIHRoX2luZGV4ZWRf bG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9w dHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnN1eGIsIHRoX2lu ZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJlZHMsIGFsbF92X3Nj YWxhcl9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnN1eGgs IHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJlZHMsIGFs bF92X3NjYWxhcl9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAo dnN1eHcsIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJl ZHMsIGFsbF92X3NjYWxhcl9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5D VElPTiAodmV4dF94X3YsIHRoX2V4dHJhY3QsIG5vbmVfcHJlZHMsIGl1X3hf c191X29wcykKKyN1bmRlZiBSRVFVSVJFRF9FWFRFTlNJT05TCisKKyN1bmRl ZiBERUZfUlZWX0ZVTkNUSU9OCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jp c2N2L3RoZWFkLXZlY3Rvci5tZCBiL2djYy9jb25maWcvcmlzY3YvdGhlYWQt dmVjdG9yLm1kCmluZGV4IDY5NmI4MTUyNTJkLi41ZmU5YmEwOGM0ZSAxMDA2 NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3IubWQKKysr IGIvZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3IubWQKQEAgLTEsNyAr MSw5NSBAQAogKGRlZmluZV9jX2VudW0gInVuc3BlYyIgWworIFVOU1BFQ19U SF9WTEIKKyBVTlNQRUNfVEhfVkxCVQorIFVOU1BFQ19USF9WTEgKKyBVTlNQ RUNfVEhfVkxIVQorIFVOU1BFQ19USF9WTFcKKyBVTlNQRUNfVEhfVkxXVQor CisgVU5TUEVDX1RIX1ZMU0IKKyBVTlNQRUNfVEhfVkxTQlUKKyBVTlNQRUNf VEhfVkxTSAorIFVOU1BFQ19USF9WTFNIVQorIFVOU1BFQ19USF9WTFNXCisg VU5TUEVDX1RIX1ZMU1dVCisKKyBVTlNQRUNfVEhfVkxYQgorIFVOU1BFQ19U SF9WTFhCVQorIFVOU1BFQ19USF9WTFhICisgVU5TUEVDX1RIX1ZMWEhVCisg VU5TUEVDX1RIX1ZMWFcKKyBVTlNQRUNfVEhfVkxYV1UKKworIFVOU1BFQ19U SF9WU1VYQgorIFVOU1BFQ19USF9WU1VYSAorIFVOU1BFQ19USF9WU1VYVwor CiBVTlNQRUNfVEhfVldMRFNUCiBdKQorKGRlZmluZV9pbnRfaXRlcmF0b3Ig VU5TUEVDX1RIX1ZMTUVNX09QIFsKKyBVTlNQRUNfVEhfVkxCIFVOU1BFQ19U SF9WTEJVCisgVU5TUEVDX1RIX1ZMSCBVTlNQRUNfVEhfVkxIVQorIFVOU1BF Q19USF9WTFcgVU5TUEVDX1RIX1ZMV1UKK10pCisKKyhkZWZpbmVfaW50X2l0 ZXJhdG9yIFVOU1BFQ19USF9WTFNNRU1fT1AgWworIFVOU1BFQ19USF9WTFNC IFVOU1BFQ19USF9WTFNCVQorIFVOU1BFQ19USF9WTFNIIFVOU1BFQ19USF9W TFNIVQorIFVOU1BFQ19USF9WTFNXIFVOU1BFQ19USF9WTFNXVQorXSkKKwor KGRlZmluZV9pbnRfaXRlcmF0b3IgVU5TUEVDX1RIX1ZMWE1FTV9PUCBbCisg VU5TUEVDX1RIX1ZMWEIgVU5TUEVDX1RIX1ZMWEJVCisgVU5TUEVDX1RIX1ZM WEggVU5TUEVDX1RIX1ZMWEhVCisgVU5TUEVDX1RIX1ZMWFcgVU5TUEVDX1RI X1ZMWFdVCitdKQorCisoZGVmaW5lX2ludF9hdHRyIHZsbWVtX29wX2F0dHIg WworIChVTlNQRUNfVEhfVkxCICJiIikgKFVOU1BFQ19USF9WTEJVICJidSIp CisgKFVOU1BFQ19USF9WTEggImgiKSAoVU5TUEVDX1RIX1ZMSFUgImh1IikK KyAoVU5TUEVDX1RIX1ZMVyAidyIpIChVTlNQRUNfVEhfVkxXVSAid3UiKQor IChVTlNQRUNfVEhfVkxTQiAiYiIpIChVTlNQRUNfVEhfVkxTQlUgImJ1IikK KyAoVU5TUEVDX1RIX1ZMU0ggImgiKSAoVU5TUEVDX1RIX1ZMU0hVICJodSIp CisgKFVOU1BFQ19USF9WTFNXICJ3IikgKFVOU1BFQ19USF9WTFNXVSAid3Ui KQorIChVTlNQRUNfVEhfVkxYQiAiYiIpIChVTlNQRUNfVEhfVkxYQlUgImJ1 IikKKyAoVU5TUEVDX1RIX1ZMWEggImgiKSAoVU5TUEVDX1RIX1ZMWEhVICJo dSIpCisgKFVOU1BFQ19USF9WTFhXICJ3IikgKFVOU1BFQ19USF9WTFhXVSAi d3UiKQorIChVTlNQRUNfVEhfVlNVWEIgImIiKQorIChVTlNQRUNfVEhfVlNV WEggImgiKQorIChVTlNQRUNfVEhfVlNVWFcgInciKQorXSkKKworKGRlZmlu ZV9pbnRfYXR0ciB2bG1lbV9vcmRlcl9hdHRyIFsKKyAoVU5TUEVDX1RIX1ZM WEIgIiIpCisgKFVOU1BFQ19USF9WTFhIICIiKQorIChVTlNQRUNfVEhfVkxY VyAiIikKKyAoVU5TUEVDX1RIX1ZTVVhCICJ1IikKKyAoVU5TUEVDX1RIX1ZT VVhIICJ1IikKKyAoVU5TUEVDX1RIX1ZTVVhXICJ1IikKK10pCisKKyhkZWZp bmVfaW50X2l0ZXJhdG9yIFVOU1BFQ19USF9WU01FTV9PUCBbCisgVU5TUEVD X1RIX1ZMQgorIFVOU1BFQ19USF9WTEgKKyBVTlNQRUNfVEhfVkxXCitdKQor CisoZGVmaW5lX2ludF9pdGVyYXRvciBVTlNQRUNfVEhfVlNTTUVNX09QIFsK KyBVTlNQRUNfVEhfVkxTQgorIFVOU1BFQ19USF9WTFNICisgVU5TUEVDX1RI X1ZMU1cKK10pCisKKyhkZWZpbmVfaW50X2l0ZXJhdG9yIFVOU1BFQ19USF9W U1hNRU1fT1AgWworIFVOU1BFQ19USF9WTFhCCisgVU5TUEVDX1RIX1ZMWEgK KyBVTlNQRUNfVEhfVkxYVworIFVOU1BFQ19USF9WU1VYQgorIFVOU1BFQ19U SF9WU1VYSAorIFVOU1BFQ19USF9WU1VYVworXSkKKwogKGRlZmluZV9tb2Rl X2l0ZXJhdG9yIFZfVkxTX1ZUIFtWIFZMUyBWVF0pCiAoZGVmaW5lX21vZGVf aXRlcmF0b3IgVl9WQl9WTFNfVlQgW1YgVkIgVkxTIFZUXSkKQEAgLTEwMCwz ICsxODgsMTY1IEBACiB9CiBbKHNldF9hdHRyICJ0eXBlIiAidmxkbSx2c3Rt LHZtYWx1LHZtYWx1LHZtYWx1IikKIChzZXRfYXR0ciAibW9kZSIgIjxNT0RF PiIpXSkKKworKGRlZmluZV9leHBhbmQgIkBwcmVkX21vdl93aWR0aDx2bG1l bV9vcF9hdHRyPjxtb2RlPiIKKyBbKHNldCAobWF0Y2hfb3BlcmFuZDpWX1ZM UyAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIpCisgKGlmX3RoZW5fZWxzZTpW X1ZMUworICh1bnNwZWM6PFZNPgorIFsobWF0Y2hfb3BlcmFuZDo8Vk0+IDEg InZlY3Rvcl9tYXNrX29wZXJhbmQiKQorIChtYXRjaF9vcGVyYW5kIDQgInZl Y3Rvcl9sZW5ndGhfb3BlcmFuZCIpCisgKG1hdGNoX29wZXJhbmQgNSAiY29u c3RfaW50X29wZXJhbmQiKQorIChtYXRjaF9vcGVyYW5kIDYgImNvbnN0X2lu dF9vcGVyYW5kIikKKyAobWF0Y2hfb3BlcmFuZCA3ICJjb25zdF9pbnRfb3Bl cmFuZCIpCisgKHJlZzpTSSBWTF9SRUdOVU0pCisgKHJlZzpTSSBWVFlQRV9S RUdOVU0pXSBVTlNQRUNfVEhfVkxNRU1fT1ApCisgKG1hdGNoX29wZXJhbmQ6 Vl9WTFMgMyAidmVjdG9yX21vdmVfb3BlcmFuZCIpCisgKG1hdGNoX29wZXJh bmQ6Vl9WTFMgMiAidmVjdG9yX21lcmdlX29wZXJhbmQiKSkpXQorICJUQVJH RVRfWFRIRUFEVkVDVE9SIgorIHt9KQorCisoZGVmaW5lX2luc25fYW5kX3Nw bGl0ICIqcHJlZF9tb3Zfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCisg WyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9WTFMgMCAibm9uaW1tZWRpYXRlX29w ZXJhbmQiICI9dnIsIHZyLCB2ZCwgbSwgdnIsIHZyIikKKyAoaWZfdGhlbl9l bHNlOlZfVkxTCisgKHVuc3BlYzo8Vk0+CisgWyhtYXRjaF9vcGVyYW5kOjxW TT4gMSAidmVjdG9yX21hc2tfb3BlcmFuZCIgInZtV2MxLCBXYzEsIHZtLCB2 bVdjMSwgV2MxLCBXYzEiKQorIChtYXRjaF9vcGVyYW5kIDQgInZlY3Rvcl9s ZW5ndGhfb3BlcmFuZCIgIiBySywgckssIHJLLCBySywgckssIHJLIikKKyAo bWF0Y2hfb3BlcmFuZCA1ICJjb25zdF9pbnRfb3BlcmFuZCIgIiBpLCBpLCBp LCBpLCBpLCBpIikKKyAobWF0Y2hfb3BlcmFuZCA2ICJjb25zdF9pbnRfb3Bl cmFuZCIgIiBpLCBpLCBpLCBpLCBpLCBpIikKKyAobWF0Y2hfb3BlcmFuZCA3 ICJjb25zdF9pbnRfb3BlcmFuZCIgIiBpLCBpLCBpLCBpLCBpLCBpIikKKyAo cmVnOlNJIFZMX1JFR05VTSkKKyAocmVnOlNJIFZUWVBFX1JFR05VTSldIFVO U1BFQ19USF9WTE1FTV9PUCkKKyAobWF0Y2hfb3BlcmFuZDpWX1ZMUyAzICJy ZWdfb3JfbWVtX29wZXJhbmQiICIgbSwgbSwgbSwgdnIsIHZyLCB2ciIpCisg KG1hdGNoX29wZXJhbmQ6Vl9WTFMgMiAidmVjdG9yX21lcmdlX29wZXJhbmQi ICIgMCwgdnUsIHZ1LCB2dSwgdnUsIDAiKSkpXQorICIoVEFSR0VUX1hUSEVB RFZFQ1RPUgorICYmIChyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1swXSwg PE1PREU+bW9kZSkKKyB8fCByZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1sz XSwgPE1PREU+bW9kZSkpKSIKKyAiQAorIHZsPHZsbWVtX29wX2F0dHI+LnZc dCUwLCUzJXAxCisgdmw8dmxtZW1fb3BfYXR0cj4udlx0JTAsJTMKKyB2bDx2 bG1lbV9vcF9hdHRyPi52XHQlMCwlMywlMS50CisgdnM8dmxtZW1fb3BfYXR0 cj4udlx0JTMsJTAlcDEKKyB2bXYudi52XHQlMCwlMworIHZtdi52LnZcdCUw LCUzIgorICImJiByaXNjdl92ZWN0b3I6Ondob2xlX3JlZ190b19yZWdfbW92 ZV9wIChvcGVyYW5kcywgPE1PREU+bW9kZSwgNykiCisgWyhzZXQgKG1hdGNo X2R1cCAwKSAobWF0Y2hfZHVwIDMpKV0KKyAiIgorIFsoc2V0X2F0dHIgInR5 cGUiICJ2bGRlLHZsZGUsdmxkZSx2c3RlLHZpbW92LHZpbW92IikKKyAoc2V0 X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCisKKyhkZWZpbmVfaW5zbiAiQHBy ZWRfc3RvcmVfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCisgWyhzZXQg KG1hdGNoX29wZXJhbmQ6VkkgMCAibWVtb3J5X29wZXJhbmQiICIrbSIpCisg KGlmX3RoZW5fZWxzZTpWSQorICh1bnNwZWM6PFZNPgorIFsobWF0Y2hfb3Bl cmFuZDo8Vk0+IDEgInZlY3Rvcl9tYXNrX29wZXJhbmQiICJ2bVdjMSIpCisg KG1hdGNoX29wZXJhbmQgMyAidmVjdG9yX2xlbmd0aF9vcGVyYW5kIiAiIHJL IikKKyAobWF0Y2hfb3BlcmFuZCA0ICJjb25zdF9pbnRfb3BlcmFuZCIgIiBp IikKKyAocmVnOlNJIFZMX1JFR05VTSkKKyAocmVnOlNJIFZUWVBFX1JFR05V TSldIFVOU1BFQ19USF9WU01FTV9PUCkKKyAobWF0Y2hfb3BlcmFuZDpWSSAy ICJyZWdpc3Rlcl9vcGVyYW5kIiAiIHZyIikKKyAobWF0Y2hfZHVwIDApKSld CisgIlRBUkdFVF9YVEhFQURWRUNUT1IiCisgInZzPHZsbWVtX29wX2F0dHI+ LnZcdCUyLCUwJXAxIgorIFsoc2V0X2F0dHIgInR5cGUiICJ2c3RlIikKKyAo c2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKQorIChzZXQgKGF0dHIgImF2bF90 eXBlX2lkeCIpIChjb25zdF9pbnQgNCkpCisgKHNldF9hdHRyICJ2bF9vcF9p ZHgiICIzIildKQorCisoZGVmaW5lX2luc24gIkBwcmVkX3N0cmlkZWRfbG9h ZF93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPiIKKyBbKHNldCAobWF0Y2hf b3BlcmFuZDpWSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXZyLCB2ciwgdmQi KQorIChpZl90aGVuX2Vsc2U6VkkKKyAodW5zcGVjOjxWTT4KKyBbKG1hdGNo X29wZXJhbmQ6PFZNPiAxICJ2ZWN0b3JfbWFza19vcGVyYW5kIiAidm1XYzEs IFdjMSwgdm0iKQorIChtYXRjaF9vcGVyYW5kIDUgInZlY3Rvcl9sZW5ndGhf b3BlcmFuZCIgIiBySywgckssIHJLIikKKyAobWF0Y2hfb3BlcmFuZCA2ICJj b25zdF9pbnRfb3BlcmFuZCIgIiBpLCBpLCBpIikKKyAobWF0Y2hfb3BlcmFu ZCA3ICJjb25zdF9pbnRfb3BlcmFuZCIgIiBpLCBpLCBpIikKKyAobWF0Y2hf b3BlcmFuZCA4ICJjb25zdF9pbnRfb3BlcmFuZCIgIiBpLCBpLCBpIikKKyAo cmVnOlNJIFZMX1JFR05VTSkKKyAocmVnOlNJIFZUWVBFX1JFR05VTSldIFVO U1BFQ19USF9WTFNNRU1fT1ApCisgKHVuc3BlYzpWSQorIFsobWF0Y2hfb3Bl cmFuZDpWSSAzICJtZW1vcnlfb3BlcmFuZCIgIiBtLCBtLCBtIikKKyAobWF0 Y2hfb3BlcmFuZCA0ICJwbW9kZV9yZWdfb3JfMF9vcGVyYW5kIiAiIHJKLCBy SiwgckoiKV0gVU5TUEVDX1RIX1ZMU01FTV9PUCkKKyAobWF0Y2hfb3BlcmFu ZDpWSSAyICJ2ZWN0b3JfbWVyZ2Vfb3BlcmFuZCIgIiAwLCB2dSwgdnUiKSkp XQorICJUQVJHRVRfWFRIRUFEVkVDVE9SIgorICJ2bHM8dmxtZW1fb3BfYXR0 cj4udlx0JTAsJTMsJXo0JXAxIgorIFsoc2V0X2F0dHIgInR5cGUiICJ2bGRz IikKKyAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCisKKyhkZWZpbmVf aW5zbiAiQHByZWRfc3RyaWRlZF9zdG9yZV93aWR0aDx2bG1lbV9vcF9hdHRy Pjxtb2RlPiIKKyBbKHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJtZW1vcnlf b3BlcmFuZCIgIittIikKKyAoaWZfdGhlbl9lbHNlOlZJCisgKHVuc3BlYzo8 Vk0+CisgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21hc2tfb3Bl cmFuZCIgInZtV2MxIikKKyAobWF0Y2hfb3BlcmFuZCA0ICJ2ZWN0b3JfbGVu Z3RoX29wZXJhbmQiICIgcksiKQorIChtYXRjaF9vcGVyYW5kIDUgImNvbnN0 X2ludF9vcGVyYW5kIiAiIGkiKQorIChyZWc6U0kgVkxfUkVHTlVNKQorIChy ZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZTU01FTV9PUCkKKyAo dW5zcGVjOlZJCisgWyhtYXRjaF9vcGVyYW5kIDIgInBtb2RlX3JlZ19vcl8w X29wZXJhbmQiICIgckoiKQorIChtYXRjaF9vcGVyYW5kOlZJIDMgInJlZ2lz dGVyX29wZXJhbmQiICIgdnIiKV0gVU5TUEVDX1RIX1ZTU01FTV9PUCkKKyAo bWF0Y2hfZHVwIDApKSldCisgIlRBUkdFVF9YVEhFQURWRUNUT1IiCisgInZz czx2bG1lbV9vcF9hdHRyPi52XHQlMywlMCwlejIlcDEiCisgWyhzZXRfYXR0 ciAidHlwZSIgInZzdHMiKQorIChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIp CisgKHNldCAoYXR0ciAiYXZsX3R5cGVfaWR4IikgKGNvbnN0X2ludCA1KSld KQorCisoZGVmaW5lX2luc24gIkBwcmVkX2luZGV4ZWRfbG9hZF93aWR0aDx2 bG1lbV9vcF9hdHRyPjxtb2RlPiIKKyBbKHNldCAobWF0Y2hfb3BlcmFuZDpW SSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXZkLCB2cix2ZCwgdnIiKQorIChp Zl90aGVuX2Vsc2U6VkkKKyAodW5zcGVjOjxWTT4KKyBbKG1hdGNoX29wZXJh bmQ6PFZNPiAxICJ2ZWN0b3JfbWFza19vcGVyYW5kIiAiIHZtLFdjMSx2bSxX YzEiKQorIChtYXRjaF9vcGVyYW5kIDUgInZlY3Rvcl9sZW5ndGhfb3BlcmFu ZCIgIiBySywgckssckssIHJLIikKKyAobWF0Y2hfb3BlcmFuZCA2ICJjb25z dF9pbnRfb3BlcmFuZCIgIiBpLCBpLCBpLCBpIikKKyAobWF0Y2hfb3BlcmFu ZCA3ICJjb25zdF9pbnRfb3BlcmFuZCIgIiBpLCBpLCBpLCBpIikKKyAobWF0 Y2hfb3BlcmFuZCA4ICJjb25zdF9pbnRfb3BlcmFuZCIgIiBpLCBpLCBpLCBp IikKKyAocmVnOlNJIFZMX1JFR05VTSkKKyAocmVnOlNJIFZUWVBFX1JFR05V TSldIFVOU1BFQ19USF9WTFhNRU1fT1ApCisgKHVuc3BlYzpWSQorIFsobWF0 Y2hfb3BlcmFuZCAzICJwbW9kZV9yZWdfb3JfMF9vcGVyYW5kIiAiIHJKLCBy SixySiwgckoiKQorIChtZW06QkxLIChzY3JhdGNoKSkKKyAobWF0Y2hfb3Bl cmFuZDpWSSA0ICJyZWdpc3Rlcl9vcGVyYW5kIiAiIHZyLCB2cix2ciwgdnIi KV0gVU5TUEVDX1RIX1ZMWE1FTV9PUCkKKyAobWF0Y2hfb3BlcmFuZDpWSSAy ICJ2ZWN0b3JfbWVyZ2Vfb3BlcmFuZCIgIiB2dSwgdnUsIDAsIDAiKSkpXQor ICJUQVJHRVRfWFRIRUFEVkVDVE9SIgorICJ2bHg8dmxtZW1fb3BfYXR0cj4u dlx0JTAsKCV6MyksJTQlcDEiCisgWyhzZXRfYXR0ciAidHlwZSIgInZsZHV4 IikKKyAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCisKKyhkZWZpbmVf aW5zbiAiQHByZWRfaW5kZXhlZF88dmxtZW1fb3JkZXJfYXR0cj5zdG9yZV93 aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPiIKKyBbKHNldCAobWVtOkJMSyAo c2NyYXRjaCkpCisgKHVuc3BlYzpCTEsKKyBbKHVuc3BlYzo8Vk0+CisgWyht YXRjaF9vcGVyYW5kOjxWTT4gMCAidmVjdG9yX21hc2tfb3BlcmFuZCIgInZt V2MxIikKKyAobWF0Y2hfb3BlcmFuZCA0ICJ2ZWN0b3JfbGVuZ3RoX29wZXJh bmQiICIgcksiKQorIChtYXRjaF9vcGVyYW5kIDUgImNvbnN0X2ludF9vcGVy YW5kIiAiIGkiKQorIChyZWc6U0kgVkxfUkVHTlVNKQorIChyZWc6U0kgVlRZ UEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZTWE1FTV9PUCkKKyAobWF0Y2hfb3Bl cmFuZCAxICJwbW9kZV9yZWdfb3JfMF9vcGVyYW5kIiAiIHJKIikKKyAobWF0 Y2hfb3BlcmFuZDpWSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiIHZyIikKKyAo bWF0Y2hfb3BlcmFuZDpWSSAzICJyZWdpc3Rlcl9vcGVyYW5kIiAiIHZyIild IFVOU1BFQ19USF9WU1hNRU1fT1ApKV0KKyAiVEFSR0VUX1hUSEVBRFZFQ1RP UiIKKyAidnM8dmxtZW1fb3JkZXJfYXR0cj54PHZsbWVtX29wX2F0dHI+LnZc dCUzLCglejEpLCUyJXAwIgorIFsoc2V0X2F0dHIgInR5cGUiICJ2c3R1eCIp CisgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+IildKQorCisoZGVmaW5lX2V4 cGFuZCAiQHByZWRfdGhfZXh0cmFjdDxtb2RlPiIKKyBbKHNldCAobWF0Y2hf b3BlcmFuZDo8VkVMPiAwICJyZWdpc3Rlcl9vcGVyYW5kIikKKyAodW5zcGVj OjxWRUw+CisgWyh2ZWNfc2VsZWN0OjxWRUw+CisgKG1hdGNoX29wZXJhbmQ6 Vl9WTFNJIDEgInJlZ2lzdGVyX29wZXJhbmQiKQorIChwYXJhbGxlbCBbKG1h dGNoX29wZXJhbmQ6REkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInIiKV0pKQor IChyZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1ZQUkVESUNBVEUpKV0K KyAiVEFSR0VUX1hUSEVBRFZFQ1RPUiIKK3t9KQorCisoZGVmaW5lX2luc24g IipwcmVkX3RoX2V4dHJhY3Q8bW9kZT4iCisgWyhzZXQgKG1hdGNoX29wZXJh bmQ6PFZFTD4gMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKKyAodW5zcGVj OjxWRUw+CisgWyh2ZWNfc2VsZWN0OjxWRUw+CisgKG1hdGNoX29wZXJhbmQ6 Vl9WTFNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2ciIpCisgKHBhcmFsbGVs IFsobWF0Y2hfb3BlcmFuZDpESSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIp XSkpCisgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVlBSRURJQ0FU RSkpXQorICJUQVJHRVRfWFRIRUFEVkVDVE9SIgorICJ2ZXh0Lngudlx0JTAs JTEsJTIiCisgWyhzZXRfYXR0ciAidHlwZSIgInZpbW92dngiKQorIChzZXRf YXR0ciAibW9kZSIgIjxNT0RFPiIpXSkKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsYi12 c2IuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRo ZWFkdmVjdG9yL3ZsYi12c2IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uM2MxMmMxMjQ1OTcKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZl Y3Rvci92bGItdnNiLmMKQEAgLTAsMCArMSw2OCBAQAorLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY3h0 aGVhZHZlY3RvciAtbWFiaT1pbHAzMmQgLU8zIiB9ICovCisvKiB7IGRnLWZp bmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgfSB9ICovCisj aW5jbHVkZSAicmlzY3ZfdGhfdmVjdG9yLmgiCisKKy8qCisqKiBmMToKKyoq IHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG1hCisqKiB0aC52bGJc LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZsYlwudlx0dlsw LTldKywwXChbYS14MC05XStcKQorKiogdGgudmFkZFwudnZcdHZbMC05XSss XHMqdlswLTldKyxccyp2WzAtOV0rCisqKiB0aC52YWRkXC52dlx0dlswLTld Kyxccyp2WzAtOV0rLFxzKnZbMC05XSsKKyoqIHRoLnZzYlwudlx0dlswLTld KywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBmMSAodm9pZCAq IGluLCB2b2lkICpvdXQpCit7CisgdmludDMybTFfdCB2ID0gX19yaXNjdl90 aF92bGJfdl9pMzJtMSAoaW4sIDQpOworIHZpbnQzMm0xX3QgdjIgPSBfX3Jp c2N2X3RoX3ZsYl92X2kzMm0xX3R1ICh2LCBpbiwgNCk7CisgdmludDMybTFf dCB2MyA9IF9fcmlzY3ZfdmFkZF92dl9pMzJtMSAodjIsIHYyLCA0KTsKKyB2 aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z2X2kzMm0xX3R1ICh2Mywg djIsIHYyLCA0KTsKKyBfX3Jpc2N2X3RoX3ZzYl92X2kzMm0xIChvdXQsIHY0 LCA0KTsKK30KKworLyoKKyoqIGYyOgorKiogdGgudnNldHZsaVx0W2EteDAt OV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTldKyww XChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEs dGEsbWEKKyoqIHRoLnZsYi52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpLHYw LnQKKyoqIHRoLnZhZGRcLnZ2XHR2WzAtOV0rLFxzKnZbMC05XSssXHMqdlsw LTldKworKiogdGgudmFkZFwudnZcdHZbMS05XVswLTldPyxccyp2WzAtOV0r LFxzKnZbMC05XSssXHMqdjAudAorKiogdGgudnNiLnZcdHZbMC05XSssMFwo W2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjIgKHZvaWQgKiBpbiwg dm9pZCAqb3V0KQoreworIHZib29sMzJfdCBtYXNrID0gKih2Ym9vbDMyX3Qq KWluOworIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CisgdmludDMy bTFfdCB2ID0gX19yaXNjdl90aF92bGJfdl9pMzJtMSAoaW4sIDQpOworIHZp bnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3ZsYl92X2kzMm0xX20gKG1hc2ss IGluLCA0KTsKKyB2aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z2X2kz Mm0xICh2MiwgdjIsIDQpOworIHZpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3Zh ZGRfdnZfaTMybTFfbSAobWFzaywgdjMsIHYzLCA0KTsKKyBfX3Jpc2N2X3Ro X3ZzYl92X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYzOgor KiogdGgudnNldHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisq KiB0aC52bG0udlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogdGgudnNl dGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbXUKKyoqIHRoLnZsYlwudlx0dlsw LTldKywwXChbYS14MC05XStcKQorKiogdGgudmxiLnZcdHZbMC05XSssMFwo W2EteDAtOV0rXCksdjAudAorKiogdGgudmFkZFwudnZcdHZbMC05XSssXHMq dlswLTldKyxccyp2WzAtOV0rCisqKiB0aC52YWRkXC52dlx0dlsxLTldWzAt OV0/LFxzKnZbMC05XSssXHMqdlswLTldKyxccyp2MC50CisqKiB0aC52c2Iu dlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBm MyAodm9pZCAqIGluLCB2b2lkICpvdXQpCit7CisgdmJvb2wzMl90IG1hc2sg PSAqKHZib29sMzJfdCopaW47CisgYXNtIHZvbGF0aWxlICgiIjo6OiJtZW1v cnkiKTsKKyB2aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsYl92X2kzMm0x IChpbiwgNCk7CisgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxiX3Zf aTMybTFfdHVtdSAobWFzaywgdiwgaW4sIDQpOworIHZpbnQzMm0xX3QgdjMg PSBfX3Jpc2N2X3ZhZGRfdnZfaTMybTEgKHYyLCB2MiwgNCk7CisgdmludDMy bTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92dl9pMzJtMV90dW11IChtYXNrLCB2 MywgdjIsIHYyLCA0KTsKKyBfX3Jpc2N2X3RoX3ZzYl92X2kzMm0xIChvdXQs IHY0LCA0KTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsYnUtdnNiLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92 bGJ1LXZzYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi4zMGJlZjM2OTM3NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsYnUt dnNiLmMKQEAgLTAsMCArMSw2OCBAQAorLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY3h0aGVhZHZlY3Rv ciAtbWFiaT1pbHAzMmQgLU8zIiB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2hl Y2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgfSB9ICovCisjaW5jbHVkZSAi cmlzY3ZfdGhfdmVjdG9yLmgiCisKKy8qCisqKiBmMToKKyoqIHRoLnZzZXRp dmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG1hCisqKiB0aC52bGJ1XC52XHR2WzAt OV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52bGJ1XC52XHR2WzAtOV0rLDBc KFthLXgwLTldK1wpCisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAt OV0rLFxzKi0xNgorKiogdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTld KyxccyotMTYKKyoqIHRoLnZzYlwudlx0dlswLTldKywwXChbYS14MC05XStc KQorKiogcmV0CisqLwordm9pZCBmMSAodm9pZCAqIGluLCB2b2lkICpvdXQs IHVpbnQzMl90IHgpCit7CisgdnVpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhf dmxidV92X3UzMm0xIChpbiwgNCk7CisgdnVpbnQzMm0xX3QgdjIgPSBfX3Jp c2N2X3RoX3ZsYnVfdl91MzJtMV90dSAodiwgaW4sIDQpOworIHZ1aW50MzJt MV90IHYzID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xICh2MiwgLTE2LCA0KTsK KyB2dWludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMV90dSAo djMsIHYyLCAtMTYsIDQpOworIF9fcmlzY3ZfdGhfdnNiX3ZfdTMybTEgKG91 dCwgdjQsIDQpOworfQorCisvKgorKiogZjI6CisqKiB0aC52c2V0dmxpXHRb YS14MC05XSssemVybyxlOCxtZjQsdGEsbWEKKyoqIHRoLnZsbS52XHR2WzAt OV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52c2V0aXZsaVx0emVybyw0LGUz MixtMSx0YSxtYQorKiogdGgudmxidS52XHR2WzAtOV0rLDBcKFthLXgwLTld K1wpLHYwLnQKKyoqIHRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZbMC05XSss XHMqLTE2CisqKiB0aC52YWRkXC52aVx0dlsxLTldWzAtOV0/LFxzKnZbMC05 XSssXHMqLTE2LFxzKnYwLnQKKyoqIHRoLnZzYi52XHR2WzAtOV0rLDBcKFth LXgwLTldK1wpCisqKiByZXQKKyovCit2b2lkIGYyICh2b2lkICogaW4sIHZv aWQgKm91dCwgdWludDMyX3QgeCkKK3sKKyB2Ym9vbDMyX3QgbWFzayA9ICoo dmJvb2wzMl90KilpbjsKKyBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIp OworIHZ1aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsYnVfdl91MzJtMSAo aW4sIDQpOworIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGJ1X3Zf dTMybTFfbSAobWFzaywgaW4sIDQpOworIHZ1aW50MzJtMV90IHYzID0gX19y aXNjdl92YWRkX3Z4X3UzMm0xICh2MiwgLTE2LCA0KTsKKyB2dWludDMybTFf dCB2NCA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMV9tIChtYXNrLCB2MywgLTE2 LCA0KTsKKyBfX3Jpc2N2X3RoX3ZzYl92X3UzMm0xIChvdXQsIHY0LCA0KTsK K30KKworLyoKKyoqIGYzOgorKiogdGgudnNldHZsaVx0W2EteDAtOV0rLHpl cm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTldKywwXChbYS14 MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbXUK KyoqIHRoLnZsYnVcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRo LnZsYnUudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50CisqKiB0aC52 YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKiogdGgudmFk ZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixccyp2MC50 CisqKiB0aC52c2Iudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0 CisqLwordm9pZCBmMyAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90 IHgpCit7CisgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47Cisg YXNtIHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKKyB2dWludDMybTFfdCB2 ID0gX19yaXNjdl90aF92bGJ1X3ZfdTMybTEgKGluLCA0KTsKKyB2dWludDMy bTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxidV92X3UzMm0xX3R1bXUgKG1hc2ss IHYsIGluLCA0KTsKKyB2dWludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92 eF91MzJtMSAodjIsIC0xNiwgNCk7CisgdnVpbnQzMm0xX3QgdjQgPSBfX3Jp c2N2X3ZhZGRfdnhfdTMybTFfdHVtdSAobWFzaywgdjMsIHYyLCAtMTYsIDQp OworIF9fcmlzY3ZfdGhfdnNiX3ZfdTMybTEgKG91dCwgdjQsIDQpOworfQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 di94dGhlYWR2ZWN0b3IvdmxoLXZzaC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxoLXZzaC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zYzhiNWNjYzE2 YgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaC12c2guYwpAQCAtMCwwICsx LDY4IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItbWFyY2g9cnYzMmdjeHRoZWFkdmVjdG9yIC1tYWJpPWlscDMyZCAt TzMiIH0gKi8KKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2Rp ZXMgIioqIiAiIiB9IH0gKi8KKyNpbmNsdWRlICJyaXNjdl90aF92ZWN0b3Iu aCIKKworLyoKKyoqIGYxOgorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIs bTEsdHUsbWEKKyoqIHRoLnZsaFwudlx0dlswLTldKywwXChbYS14MC05XStc KQorKiogdGgudmxoXC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0 aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKiogdGgu dmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRoLnZz aFwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9p ZCBmMSAodm9pZCAqIGluLCB2b2lkICpvdXQsIGludDMyX3QgeCkKK3sKKyB2 aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsaF92X2kzMm0xIChpbiwgNCk7 CisgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxoX3ZfaTMybTFfdHUg KHYsIGluLCA0KTsKKyB2aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4 X2kzMm0xICh2MiwgLTE2LCA0KTsKKyB2aW50MzJtMV90IHY0ID0gX19yaXNj dl92YWRkX3Z4X2kzMm0xX3R1ICh2MywgdjIsIC0xNiwgNCk7CisgX19yaXNj dl90aF92c2hfdl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBm MjoKKyoqIHRoLnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxt YQorKiogdGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRo LnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHRhLG1hCisqKiB0aC52bGgudlx0 dlswLTldKywwXChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0 dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKiogdGgudmFkZFwudmlcdHZb MS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixccyp2MC50CisqKiB0aC52 c2gudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9p ZCBmMiAodm9pZCAqIGluLCB2b2lkICpvdXQsIGludDMyX3QgeCkKK3sKKyB2 Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKKyBhc20gdm9sYXRp bGUgKCIiOjo6Im1lbW9yeSIpOworIHZpbnQzMm0xX3QgdiA9IF9fcmlzY3Zf dGhfdmxoX3ZfaTMybTEgKGluLCA0KTsKKyB2aW50MzJtMV90IHYyID0gX19y aXNjdl90aF92bGhfdl9pMzJtMV9tIChtYXNrLCBpbiwgNCk7CisgdmludDMy bTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMSAodjIsIC0xNiwgNCk7 CisgdmludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMV9tICht YXNrLCB2MywgLTE2LCA0KTsKKyBfX3Jpc2N2X3RoX3ZzaF92X2kzMm0xIChv dXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYzOgorKiogdGgudnNldHZsaVx0 W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlsw LTldKywwXChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8sNCxl MzIsbTEsdHUsbXUKKyoqIHRoLnZsaFwudlx0dlswLTldKywwXChbYS14MC05 XStcKQorKiogdGgudmxoLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAu dAorKiogdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYK KyoqIHRoLnZhZGRcLnZpXHR2WzEtOV1bMC05XT8sXHMqdlswLTldKyxccyot MTYsXHMqdjAudAorKiogdGgudnNoLnZcdHZbMC05XSssMFwoW2EteDAtOV0r XCkKKyoqIHJldAorKi8KK3ZvaWQgZjMgKHZvaWQgKiBpbiwgdm9pZCAqb3V0 LCBpbnQzMl90IHgpCit7CisgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJf dCopaW47CisgYXNtIHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKKyB2aW50 MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsaF92X2kzMm0xIChpbiwgNCk7Cisg dmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxoX3ZfaTMybTFfdHVtdSAo bWFzaywgdiwgaW4sIDQpOworIHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3Zh ZGRfdnhfaTMybTEgKHYyLCAtMTYsIDQpOworIHZpbnQzMm0xX3QgdjQgPSBf X3Jpc2N2X3ZhZGRfdnhfaTMybTFfdHVtdSAobWFzaywgdjMsIHYyLCAtMTYs IDQpOworIF9fcmlzY3ZfdGhfdnNoX3ZfaTMybTEgKG91dCwgdjQsIDQpOwor fQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L3J2di94dGhlYWR2ZWN0b3IvdmxodS12c2guYyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaHUtdnNoLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI3YzAw NDA0ZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxodS12c2guYwpAQCAt MCwwICsxLDY4IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItbWFyY2g9cnYzMmdjeHRoZWFkdmVjdG9yIC1tYWJpPWls cDMyZCAtTzMiIH0gKi8KKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlv bi1ib2RpZXMgIioqIiAiIiB9IH0gKi8KKyNpbmNsdWRlICJyaXNjdl90aF92 ZWN0b3IuaCIKKworLyoKKyoqIGYxOgorKiogdGgudnNldGl2bGlcdHplcm8s NCxlMzIsbTEsdHUsbWEKKyoqIHRoLnZsaHVcLnZcdHZbMC05XSssMFwoW2Et eDAtOV0rXCkKKyoqIHRoLnZsaHVcLnZcdHZbMC05XSssMFwoW2EteDAtOV0r XCkKKyoqIHRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2 CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgor KiogdGgudnNoXC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiByZXQK KyovCit2b2lkIGYxICh2b2lkICogaW4sIHZvaWQgKm91dCwgdWludDMyX3Qg eCkKK3sKKyB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGh1X3ZfdTMy bTEgKGluLCA0KTsKKyB2dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxo dV92X3UzMm0xX3R1ICh2LCBpbiwgNCk7CisgdnVpbnQzMm0xX3QgdjMgPSBf X3Jpc2N2X3ZhZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOworIHZ1aW50MzJt MV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xX3R1ICh2MywgdjIsIC0x NiwgNCk7CisgX19yaXNjdl90aF92c2hfdl91MzJtMSAob3V0LCB2NCwgNCk7 Cit9CisKKy8qCisqKiBmMjoKKyoqIHRoLnZzZXR2bGlcdFthLXgwLTldKyx6 ZXJvLGU4LG1mNCx0YSxtYQorKiogdGgudmxtLnZcdHZbMC05XSssMFwoW2Et eDAtOV0rXCkKKyoqIHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHRhLG1h CisqKiB0aC52bGh1LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAudAor KiogdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoq IHRoLnZhZGRcLnZpXHR2WzEtOV1bMC05XT8sXHMqdlswLTldKyxccyotMTYs XHMqdjAudAorKiogdGgudnNoLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkK KyoqIHJldAorKi8KK3ZvaWQgZjIgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCB1 aW50MzJfdCB4KQoreworIHZib29sMzJfdCBtYXNrID0gKih2Ym9vbDMyX3Qq KWluOworIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CisgdnVpbnQz Mm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmxodV92X3UzMm0xIChpbiwgNCk7Cisg dnVpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3ZsaHVfdl91MzJtMV9tICht YXNrLCBpbiwgNCk7CisgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRf dnhfdTMybTEgKHYyLCAtMTYsIDQpOworIHZ1aW50MzJtMV90IHY0ID0gX19y aXNjdl92YWRkX3Z4X3UzMm0xX20gKG1hc2ssIHYzLCAtMTYsIDQpOworIF9f cmlzY3ZfdGhfdnNoX3ZfdTMybTEgKG91dCwgdjQsIDQpOworfQorCisvKgor KiogZjM6CisqKiB0aC52c2V0dmxpXHRbYS14MC05XSssemVybyxlOCxtZjQs dGEsbWEKKyoqIHRoLnZsbS52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisq KiB0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0dSxtdQorKiogdGgudmxo dVwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogdGgudmxodS52XHR2 WzAtOV0rLDBcKFthLXgwLTldK1wpLHYwLnQKKyoqIHRoLnZhZGRcLnZpXHR2 WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2CisqKiB0aC52YWRkXC52aVx0dlsx LTldWzAtOV0/LFxzKnZbMC05XSssXHMqLTE2LFxzKnYwLnQKKyoqIHRoLnZz aC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiByZXQKKyovCit2b2lk IGYzICh2b2lkICogaW4sIHZvaWQgKm91dCwgdWludDMyX3QgeCkKK3sKKyB2 Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKKyBhc20gdm9sYXRp bGUgKCIiOjo6Im1lbW9yeSIpOworIHZ1aW50MzJtMV90IHYgPSBfX3Jpc2N2 X3RoX3ZsaHVfdl91MzJtMSAoaW4sIDQpOworIHZ1aW50MzJtMV90IHYyID0g X19yaXNjdl90aF92bGh1X3ZfdTMybTFfdHVtdSAobWFzaywgdiwgaW4sIDQp OworIHZ1aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xICh2 MiwgLTE2LCA0KTsKKyB2dWludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92 eF91MzJtMV90dW11IChtYXNrLCB2MywgdjIsIC0xNiwgNCk7CisgX19yaXNj dl90aF92c2hfdl91MzJtMSAob3V0LCB2NCwgNCk7Cit9CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZl Y3Rvci92bHctdnN3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE3YTUzMDEyYWNmCi0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 di94dGhlYWR2ZWN0b3Ivdmx3LXZzdy5jCkBAIC0wLDAgKzEsNjggQEAKKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJj aD1ydjMyZ2N4dGhlYWR2ZWN0b3IgLW1hYmk9aWxwMzJkIC1PMyIgfSAqLwor LyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIi IH0gfSAqLworI2luY2x1ZGUgInJpc2N2X3RoX3ZlY3Rvci5oIgorCisvKgor KiogZjE6CisqKiB0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0dSxtYQor KiogdGgudmx3XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52 bHdcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZhZGRcLnZ4 XHR2WzAtOV0rLFxzKnZbMC05XSssXHMqW2EteDAtOV0rCisqKiB0aC52YWRk XC52eFx0dlswLTldKyxccyp2WzAtOV0rLFxzKlthLXgwLTldKworKiogdGgu dnN3XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiByZXQKKyovCit2 b2lkIGYxICh2b2lkICogaW4sIHZvaWQgKm91dCwgaW50MzJfdCB4KQorewor IHZpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmx3X3ZfaTMybTEgKGluLCA0 KTsKKyB2aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bHdfdl9pMzJtMV90 dSAodiwgaW4sIDQpOworIHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRf dnhfaTMybTEgKHYyLCB4LCA0KTsKKyB2aW50MzJtMV90IHY0ID0gX19yaXNj dl92YWRkX3Z4X2kzMm0xX3R1ICh2MywgdjIsIHgsIDQpOworIF9fcmlzY3Zf dGhfdnN3X3ZfaTMybTEgKG91dCwgdjQsIDQpOworfQorCisvKgorKiogZjI6 CisqKiB0aC52c2V0dmxpXHRbYS14MC05XSssemVybyxlOCxtZjQsdGEsbWEK KyoqIHRoLnZsbS52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52 c2V0aXZsaVx0emVybyw0LGUzMixtMSx0YSxtYQorKiogdGgudmx3LnZcdHZb MC05XSssMFwoW2EteDAtOV0rXCksdjAudAorKiogdGgudmFkZFwudnhcdHZb MC05XSssXHMqdlswLTldKyxccypbYS14MC05XSsKKyoqIHRoLnZhZGRcLnZ4 XHR2WzEtOV1bMC05XT8sXHMqdlswLTldKyxccypbYS14MC05XSssXHMqdjAu dAorKiogdGgudnN3LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHJl dAorKi8KK3ZvaWQgZjIgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCBpbnQzMl90 IHgpCit7CisgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47Cisg YXNtIHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKKyB2aW50MzJtMV90IHYg PSBfX3Jpc2N2X3RoX3Zsd192X2kzMm0xIChpbiwgNCk7CisgdmludDMybTFf dCB2MiA9IF9fcmlzY3ZfdGhfdmx3X3ZfaTMybTFfbSAobWFzaywgaW4sIDQp OworIHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTEgKHYy LCB4LCA0KTsKKyB2aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X2kz Mm0xX20gKG1hc2ssIHYzLCB4LCA0KTsKKyBfX3Jpc2N2X3RoX3Zzd192X2kz Mm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYzOgorKiogdGgudnNl dHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0u dlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHpl cm8sNCxlMzIsbTEsdHUsbXUKKyoqIHRoLnZsd1wudlx0dlswLTldKywwXChb YS14MC05XStcKQorKiogdGgudmx3LnZcdHZbMC05XSssMFwoW2EteDAtOV0r XCksdjAudAorKiogdGgudmFkZFwudnhcdHZbMC05XSssXHMqdlswLTldKyxc cypbYS14MC05XSsKKyoqIHRoLnZhZGRcLnZ4XHR2WzEtOV1bMC05XT8sXHMq dlswLTldKyxccypbYS14MC05XSssXHMqdjAudAorKiogdGgudnN3LnZcdHZb MC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjMgKHZv aWQgKiBpbiwgdm9pZCAqb3V0LCBpbnQzMl90IHgpCit7CisgdmJvb2wzMl90 IG1hc2sgPSAqKHZib29sMzJfdCopaW47CisgYXNtIHZvbGF0aWxlICgiIjo6 OiJtZW1vcnkiKTsKKyB2aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3Zsd192 X2kzMm0xIChpbiwgNCk7CisgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhf dmx3X3ZfaTMybTFfdHVtdSAobWFzaywgdiwgaW4sIDQpOworIHZpbnQzMm0x X3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTEgKHYyLCB4LCA0KTsKKyB2 aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xX3R1bXUgKG1h c2ssIHYzLCB2MiwgeCwgNCk7CisgX19yaXNjdl90aF92c3dfdl9pMzJtMSAo b3V0LCB2NCwgNCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHd1LXZzdy5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0 b3Ivdmx3dS12c3cuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uYjE4N2NmYzg1MmIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92 bHd1LXZzdy5jCkBAIC0wLDAgKzEsNjggQEAKKy8qIHsgZGctZG8gY29tcGls ZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N4dGhlYWR2 ZWN0b3IgLW1hYmk9aWxwMzJkIC1PMyIgfSAqLworLyogeyBkZy1maW5hbCB7 IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiIH0gfSAqLworI2luY2x1 ZGUgInJpc2N2X3RoX3ZlY3Rvci5oIgorCisvKgorKiogZjE6CisqKiB0aC52 c2V0aXZsaVx0emVybyw0LGUzMixtMSx0dSxtYQorKiogdGgudmx3dVwudlx0 dlswLTldKywwXChbYS14MC05XStcKQorKiogdGgudmx3dVwudlx0dlswLTld KywwXChbYS14MC05XStcKQorKiogdGgudmFkZFwudmlcdHZbMC05XSssXHMq dlswLTldKyxccyotMTYKKyoqIHRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZb MC05XSssXHMqLTE2CisqKiB0aC52c3dcLnZcdHZbMC05XSssMFwoW2EteDAt OV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjEgKHZvaWQgKiBpbiwgdm9pZCAq b3V0LCB1aW50MzJfdCB4KQoreworIHZ1aW50MzJtMV90IHYgPSBfX3Jpc2N2 X3RoX3Zsd3Vfdl91MzJtMSAoaW4sIDQpOworIHZ1aW50MzJtMV90IHYyID0g X19yaXNjdl90aF92bHd1X3ZfdTMybTFfdHUgKHYsIGluLCA0KTsKKyB2dWlu dDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMSAodjIsIC0xNiwg NCk7CisgdnVpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnhfdTMybTFf dHUgKHYzLCB2MiwgLTE2LCA0KTsKKyBfX3Jpc2N2X3RoX3Zzd192X3UzMm0x IChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYyOgorKiogdGgudnNldHZs aVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0 dlswLTldKywwXChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8s NCxlMzIsbTEsdGEsbWEKKyoqIHRoLnZsd3Uudlx0dlswLTldKywwXChbYS14 MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAt OV0rLFxzKi0xNgorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2 WzAtOV0rLFxzKi0xNixccyp2MC50CisqKiB0aC52c3cudlx0dlswLTldKyww XChbYS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBmMiAodm9pZCAqIGlu LCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CisgdmJvb2wzMl90IG1hc2sg PSAqKHZib29sMzJfdCopaW47CisgYXNtIHZvbGF0aWxlICgiIjo6OiJtZW1v cnkiKTsKKyB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bHd1X3ZfdTMy bTEgKGluLCA0KTsKKyB2dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmx3 dV92X3UzMm0xX20gKG1hc2ssIGluLCA0KTsKKyB2dWludDMybTFfdCB2MyA9 IF9fcmlzY3ZfdmFkZF92eF91MzJtMSAodjIsIC0xNiwgNCk7CisgdnVpbnQz Mm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnhfdTMybTFfbSAobWFzaywgdjMs IC0xNiwgNCk7CisgX19yaXNjdl90aF92c3dfdl91MzJtMSAob3V0LCB2NCwg NCk7Cit9CisKKy8qCisqKiBmMzoKKyoqIHRoLnZzZXR2bGlcdFthLXgwLTld Kyx6ZXJvLGU4LG1mNCx0YSxtYQorKiogdGgudmxtLnZcdHZbMC05XSssMFwo W2EteDAtOV0rXCkKKyoqIHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1 LG11CisqKiB0aC52bHd1XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisq KiB0aC52bHd1LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAudAorKiog dGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRo LnZhZGRcLnZpXHR2WzEtOV1bMC05XT8sXHMqdlswLTldKyxccyotMTYsXHMq djAudAorKiogdGgudnN3LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoq IHJldAorKi8KK3ZvaWQgZjMgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50 MzJfdCB4KQoreworIHZib29sMzJfdCBtYXNrID0gKih2Ym9vbDMyX3QqKWlu OworIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CisgdnVpbnQzMm0x X3QgdiA9IF9fcmlzY3ZfdGhfdmx3dV92X3UzMm0xIChpbiwgNCk7CisgdnVp bnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3Zsd3Vfdl91MzJtMV90dW11ICht YXNrLCB2LCBpbiwgNCk7CisgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3Zh ZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOworIHZ1aW50MzJtMV90IHY0ID0g X19yaXNjdl92YWRkX3Z4X3UzMm0xX3R1bXUgKG1hc2ssIHYzLCB2MiwgLTE2 LCA0KTsKKyBfX3Jpc2N2X3RoX3Zzd192X3UzMm0xIChvdXQsIHY0LCA0KTsK K30KLS0gCjIuMTcuMQo= ------=ALIBOUNDARY_55234_7f884895a700_65a08cb6_10c37--