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 1rNXoU-00DASA-LJ for pgsql-hackers@arkaria.postgresql.org; Wed, 10 Jan 2024 12:36:07 +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 1rNXoT-003Mx7-4R for pgsql-hackers@arkaria.postgresql.org; Wed, 10 Jan 2024 12:36:05 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rNXoS-003Mwz-AT for pgsql-hackers@lists.postgresql.org; Wed, 10 Jan 2024 12:36:04 +0000 Received: from lahtoruutu.iki.fi ([2a0b:5c81:1c1::37]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rNXoM-000pkW-K6 for pgsql-hackers@postgresql.org; Wed, 10 Jan 2024 12:36:03 +0000 Received: from [192.168.1.115] (dsl-hkibng22-54f8db-125.dhcp.inet.fi [84.248.219.125]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4T96j51syjz49Q1g; Wed, 10 Jan 2024 14:35:53 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1704890153; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=7GvM5kIVZn/K/C8HIYKLCfj/pzQmH9QFxoAREtPisRM=; b=DqhPyhmHxbP+m1dRmR+xEtM962yjNO1f3eB9RbAOkoQEsWFTFF+BCOSfPFPseX1m6Ct9Yt lgd9c5zDJX3RpnxiJg23//NFv+/VKdLb0k6EFY1X2OgP2StmPcMvKmFPSXEF790AZFcgKv I54Q6kp74OgfbGPS/bQ84iu6gHtUQsCcXS5iWye6TlKiMhUVLTsJdgIOej553p2heSk/nh CLrtednKDX+e/012upoc5lr24YeC+l8AhFODNsr210ZZLWn3lI/DNTWosy5ptcdDZ3AeXz MXCdjXHr1nmWrbgtYBt3dd7hLTgIicOwvP5e+go+hQqiGauYsZB5BpBo522t7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1704890153; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=7GvM5kIVZn/K/C8HIYKLCfj/pzQmH9QFxoAREtPisRM=; b=GwOzz/CEnFrNutcwcgE+u1/O1K/2X8z9U1plo0WHdEAOGKcsJyQ8x4nAGNhnIhaS+T1X4A w1dndIVPeARDtaGB+0vsuEbD6YiMxQZWvIdGU59NB6FCuIiv640f0PUrTRkbNDuDbN3OFO xsLTv85eCv5dMCwQvLwcrwl5jxxgoqtB8J/Fu9/7BvrEVT2r3A/8jDE5lh0McMaCLvReAv WWIjJuqhcnPloeiw+u20VvJuPc+l1NCS5vkYTcN+ZEqG5QIAF/VWlhODD2tWXk1C4LoHAL saZNDIN+jdl7qAhDOWIxqSOZq+2v8na8F3z9kdWw8E318q9zse7sDT5EfyMANQ== ARC-Seal: i=1; s=lahtoruutu; d=iki.fi; t=1704890153; a=rsa-sha256; cv=none; b=gtFHUobWY43mBpAxqomRpJGj5s+P9fIWtScipLAGsHU742a2+zdPMcBIF1S5+bSzUzqqj1 xZCf7tQSblyI3rqq2c+Hupjr39IP1aNIjMsDWH9I1/FChhx2Tg95PiCUvi5XqOgBGhCY2k FgE0uS2W7xtB+kcIYyUa5xeGKCgZ1zWkDxfCnvo752FCsyFpGsqXDz5HQZ8m3KeH+ukZbp DVqx2i2HqqD2mWVprp91xMVxZ+I8EkmUV/taNj9YjWU84yY4LH8c7Ul4HhuX2dXdXOmWBB nARHr+cp2s5Le7QfT9LI34GdMXBAN15bbUYPLZ4EXgXT2hi0Lc+mMlj19Jn0DA== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi Content-Type: multipart/mixed; boundary="------------DQuOZZJflgkCC0VYNn04mSi3" Message-ID: Date: Wed, 10 Jan 2024 14:35:52 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Refactoring backend fork+exec code Content-Language: en-US From: Heikki Linnakangas To: Andres Freund , Tristan Partin Cc: pgsql-hackers , Thomas Munro References: <7a59b073-5b5b-151e-7ed3-8b01ff7ce9ef@iki.fi> <20230710225043.svl7fqxecwshwc7a@awork3.anarazel.de> <119551e6-60f6-49b2-ae04-a382a89f900c@iki.fi> <20231130202648.7k6agmuizdilufnv@awork3.anarazel.de> <59527c9b-c3f7-4d0c-a3f1-00d0ed5cc186@iki.fi> In-Reply-To: <59527c9b-c3f7-4d0c-a3f1-00d0ed5cc186@iki.fi> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------DQuOZZJflgkCC0VYNn04mSi3 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 08/12/2023 14:33, Heikki Linnakangas wrote: >>> + [PMC_AV_LAUNCHER] = {"autovacuum launcher", AutoVacLauncherMain, true}, >>> + [PMC_AV_WORKER] = {"autovacuum worker", AutoVacWorkerMain, true}, >>> + [PMC_BGWORKER] = {"bgworker", BackgroundWorkerMain, true}, >>> + [PMC_SYSLOGGER] = {"syslogger", SysLoggerMain, false}, >>> + >>> + [PMC_STARTUP] = {"startup", StartupProcessMain, true}, >>> + [PMC_BGWRITER] = {"bgwriter", BackgroundWriterMain, true}, >>> + [PMC_ARCHIVER] = {"archiver", PgArchiverMain, true}, >>> + [PMC_CHECKPOINTER] = {"checkpointer", CheckpointerMain, true}, >>> + [PMC_WAL_WRITER] = {"wal_writer", WalWriterMain, true}, >>> + [PMC_WAL_RECEIVER] = {"wal_receiver", WalReceiverMain, true}, >>> +}; >> >> It feels like we have too many different ways of documenting the type of a >> process. This new PMC_ stuff, enum AuxProcType, enum BackendType. > Agreed. And "am_walsender" and such variables. Here's a patch that gets rid of AuxProcType. It's independent of the other patches in this thread; if this is committed, I'll rebase the rest of the patches over this and get rid of the new PMC_* enum. Three patches, actually. The first one fixes an existing comment that I noticed to be incorrect while working on this. I'll push that soon, barring objections. The second one gets rid of AuxProcType, and the third one replaces IsBackgroundWorker, IsAutoVacuumLauncherProcess() and IsAutoVacuumWorkerProcess() with checks on MyBackendType. So MyBackendType is now the primary way to check what kind of a process the current process is. 'am_walsender' would also be fairly straightforward to remove and replace with AmWalSenderProcess(). I didn't do that because we also have am_db_walsender and am_cascading_walsender which cannot be directly replaced with MyBackendType. Given that, it might be best to keep am_walsender for symmetry. -- Heikki Linnakangas Neon (https://neon.tech) --------------DQuOZZJflgkCC0VYNn04mSi3 Content-Type: text/x-patch; charset=UTF-8; name="v6-0001-Fix-incorrect-comment-on-how-BackendStatusArray-i.patch" Content-Disposition: attachment; filename*0="v6-0001-Fix-incorrect-comment-on-how-BackendStatusArray-i.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhMGVjYzU0NzYzMjUyZGU3NDkwN2ZkMGU0YWVkMzBmZGI3NTNmZjg2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTAgSmFuIDIwMjQgMTM6NDY6MjMgKzAyMDAK U3ViamVjdDogW1BBVENIIHY2IDEvM10gRml4IGluY29ycmVjdCBjb21tZW50IG9uIGhvdyBC YWNrZW5kU3RhdHVzQXJyYXkgaXMKIGluZGV4ZWQKClRoZSBjb21tZW50IHdhcyBjb3B5LXBh c3RlZCBmcm9tIHRoZSBjYWxsIHRvIFByb2NTaWduYWxJbml0KCkgaW4KQXV4aWxpYXJ5UHJv Y2Vzc01haW4oKSwgd2hpY2ggdXNlcyBhIHNpbWlsYXIgc2NoZW1lIG9mIGhhdmluZyByZXNl cnZlZApzbG90cyBmb3IgYXV4IHByb2Nlc3NlcyBhZnRlciBNYXhCYWNrZW5kcyBzbG90cyBm b3IgYmFja2VuZHMuIEhvd2V2ZXIsClByb2NTaWduYWxJbml0KCkgaW5kZXhpbmcgc3RhcnRz IGZyb20gMSwgd2hlcmVhcyBCYWNrZW5kU3RhdHVzQXJyYXkKc3RhcnRzIGZyb20gMC4gVGhl IGNvZGUgaXMgY29ycmVjdCwgYnV0IHRoZSBjb21tZW50IHdhcyB3cm9uZy4KClJldmlld2Vk LWJ5OiBYWFgKRGlzY3Vzc2lvbjogWFhYCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvYmFja2VuZF9zdGF0dXMuYyB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNl cnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9iYWNrZW5kX3N0YXR1cy5jCmluZGV4IDNkYWM3OWMzMGViLi4xYTEwNTBjOGRhMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jCkBA IC0yNjMsOSArMjYzLDkgQEAgcGdzdGF0X2JlaW5pdCh2b2lkKQogCQkgKiBBc3NpZ24gdGhl IE15QkVFbnRyeSBmb3IgYW4gYXV4aWxpYXJ5IHByb2Nlc3MuICBTaW5jZSBpdCBkb2Vzbid0 CiAJCSAqIGhhdmUgYSBCYWNrZW5kSWQsIHRoZSBzbG90IGlzIHN0YXRpY2FsbHkgYWxsb2Nh dGVkIGJhc2VkIG9uIHRoZQogCQkgKiBhdXhpbGlhcnkgcHJvY2VzcyB0eXBlIChNeUF1eFBy b2NUeXBlKS4gIEJhY2tlbmRzIHVzZSBzbG90cyBpbmRleGVkCi0JCSAqIGluIHRoZSByYW5n ZSBmcm9tIDEgdG8gTWF4QmFja2VuZHMgKGluY2x1c2l2ZSksIHNvIHdlIHVzZQotCQkgKiBN YXhCYWNrZW5kcyArIEF1eEJhY2tlbmRUeXBlICsgMSBhcyB0aGUgaW5kZXggb2YgdGhlIHNs b3QgZm9yIGFuCi0JCSAqIGF1eGlsaWFyeSBwcm9jZXNzLgorCQkgKiBpbiB0aGUgcmFuZ2Ug ZnJvbSAwIHRvIE1heEJhY2tlbmRzIChleGNsdXNpdmUpLCBzbyB3ZSB1c2UKKwkJICogTWF4 QmFja2VuZHMgKyBBdXhQcm9jVHlwZSBhcyB0aGUgaW5kZXggb2YgdGhlIHNsb3QgZm9yIGFu IGF1eGlsaWFyeQorCQkgKiBwcm9jZXNzLgogCQkgKi8KIAkJTXlCRUVudHJ5ID0gJkJhY2tl bmRTdGF0dXNBcnJheVtNYXhCYWNrZW5kcyArIE15QXV4UHJvY1R5cGVdOwogCX0KLS0gCjIu MzkuMgoK --------------DQuOZZJflgkCC0VYNn04mSi3 Content-Type: text/x-patch; charset=UTF-8; name="v6-0002-Remove-MyAuxProcType-use-MyBackendType-instead.patch" Content-Disposition: attachment; filename*0="v6-0002-Remove-MyAuxProcType-use-MyBackendType-instead.patch" Content-Transfer-Encoding: base64 RnJvbSA2OGI4YzY2MmFmMjI5ZjkzMjQ0YjQ1MjgyZjMxMTJkOWE1ZDgwOWI5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTAgSmFuIDIwMjQgMTQ6MDA6MDkgKzAyMDAK U3ViamVjdDogW1BBVENIIHY2IDIvM10gUmVtb3ZlIE15QXV4UHJvY1R5cGUsIHVzZSBNeUJh Y2tlbmRUeXBlIGluc3RlYWQKCk15QXV4UHJvY1R5cGUgd2FzIHJlZHVuZGFudCB3aXRoIE15 QmFja2VuZFR5cGUuCgpSZXZpZXdlZC1ieTogWFhYCkRpc2N1c3Npb246IFhYWAotLS0KIHNy Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jICAgICAgICAgfCA2OCArKysrKy0t LS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgICAg ICAgICB8IDM2ICsrKysrLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNr ZW5kX3N0YXR1cy5jIHwgMTEgKystLQogc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAgICAg ICAgICAgICAgICAgICB8IDcxICsrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUv cG9zdG1hc3Rlci9hdXhwcm9jZXNzLmggICAgICAgICB8ICAyICstCiBzcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgIHwgIDEgLQogNiBmaWxlcyBjaGFuZ2Vk LCA3NCBpbnNlcnRpb25zKCspLCAxMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1eHByb2Nlc3MuYwppbmRleCBhYjg2ZTgwMmYyMS4uYmQzODE1YjYzZDAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jCisrKyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jCkBAIC0zOCwxNCArMzgsNiBAQAogc3Rh dGljIHZvaWQgU2h1dGRvd25BdXhpbGlhcnlQcm9jZXNzKGludCBjb2RlLCBEYXR1bSBhcmcp OwogCiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0KLSAqCQlnbG9iYWwgdmFyaWFibGVzCi0gKiAt LS0tLS0tLS0tLS0tLS0tCi0gKi8KLQotQXV4UHJvY1R5cGUgTXlBdXhQcm9jVHlwZSA9IE5v dEFuQXV4UHJvY2VzczsJLyogZGVjbGFyZWQgaW4gbWlzY2FkbWluLmggKi8KLQotCiAvKgog ICoJIEF1eGlsaWFyeVByb2Nlc3NNYWluCiAgKgpAQCAtNTUsMzkgKzQ3LDEzIEBAIEF1eFBy b2NUeXBlIE15QXV4UHJvY1R5cGUgPSBOb3RBbkF1eFByb2Nlc3M7CS8qIGRlY2xhcmVkIGlu IG1pc2NhZG1pbi5oICovCiAgKgkgVGhpcyBjb2RlIGlzIGhlcmUganVzdCBiZWNhdXNlIG9m IGhpc3RvcmljYWwgcmVhc29ucy4KICAqLwogdm9pZAotQXV4aWxpYXJ5UHJvY2Vzc01haW4o QXV4UHJvY1R5cGUgYXV4dHlwZSkKK0F1eGlsaWFyeVByb2Nlc3NNYWluKEJhY2tlbmRUeXBl IGF1eHR5cGUpCiB7CiAJQXNzZXJ0KElzVW5kZXJQb3N0bWFzdGVyKTsKIAotCU15QXV4UHJv Y1R5cGUgPSBhdXh0eXBlOwotCi0Jc3dpdGNoIChNeUF1eFByb2NUeXBlKQotCXsKLQkJY2Fz ZSBTdGFydHVwUHJvY2VzczoKLQkJCU15QmFja2VuZFR5cGUgPSBCX1NUQVJUVVA7Ci0JCQli cmVhazsKLQkJY2FzZSBBcmNoaXZlclByb2Nlc3M6Ci0JCQlNeUJhY2tlbmRUeXBlID0gQl9B UkNISVZFUjsKLQkJCWJyZWFrOwotCQljYXNlIEJnV3JpdGVyUHJvY2VzczoKLQkJCU15QmFj a2VuZFR5cGUgPSBCX0JHX1dSSVRFUjsKLQkJCWJyZWFrOwotCQljYXNlIENoZWNrcG9pbnRl clByb2Nlc3M6Ci0JCQlNeUJhY2tlbmRUeXBlID0gQl9DSEVDS1BPSU5URVI7Ci0JCQlicmVh azsKLQkJY2FzZSBXYWxXcml0ZXJQcm9jZXNzOgotCQkJTXlCYWNrZW5kVHlwZSA9IEJfV0FM X1dSSVRFUjsKLQkJCWJyZWFrOwotCQljYXNlIFdhbFJlY2VpdmVyUHJvY2VzczoKLQkJCU15 QmFja2VuZFR5cGUgPSBCX1dBTF9SRUNFSVZFUjsKLQkJCWJyZWFrOwotCQljYXNlIFdhbFN1 bW1hcml6ZXJQcm9jZXNzOgotCQkJTXlCYWNrZW5kVHlwZSA9IEJfV0FMX1NVTU1BUklaRVI7 Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWVsb2coUEFOSUMsICJ1bnJlY29nbml6ZWQg cHJvY2VzcyB0eXBlOiAlZCIsIChpbnQpIE15QXV4UHJvY1R5cGUpOwotCQkJTXlCYWNrZW5k VHlwZSA9IEJfSU5WQUxJRDsKLQl9CisJTXlCYWNrZW5kVHlwZSA9IGF1eHR5cGU7CisJaWYg KCFJc0F1eFByb2Nlc3MoTXlCYWNrZW5kVHlwZSkpCisJCWVsb2coUEFOSUMsICJ1bnJlY29n bml6ZWQgcHJvY2VzcyB0eXBlOiAlZCIsIChpbnQpIE15QmFja2VuZFR5cGUpOwogCiAJaW5p dF9wc19kaXNwbGF5KE5VTEwpOwogCkBAIC0xMTAsMTQgKzc2LDE0IEBAIEF1eGlsaWFyeVBy b2Nlc3NNYWluKEF1eFByb2NUeXBlIGF1eHR5cGUpCiAJLyoKIAkgKiBBc3NpZ24gdGhlIFBy b2NTaWduYWxTbG90IGZvciBhbiBhdXhpbGlhcnkgcHJvY2Vzcy4gIFNpbmNlIGl0IGRvZXNu J3QKIAkgKiBoYXZlIGEgQmFja2VuZElkLCB0aGUgc2xvdCBpcyBzdGF0aWNhbGx5IGFsbG9j YXRlZCBiYXNlZCBvbiB0aGUKLQkgKiBhdXhpbGlhcnkgcHJvY2VzcyB0eXBlIChNeUF1eFBy b2NUeXBlKS4gIEJhY2tlbmRzIHVzZSBzbG90cyBpbmRleGVkIGluCi0JICogdGhlIHJhbmdl IGZyb20gMSB0byBNYXhCYWNrZW5kcyAoaW5jbHVzaXZlKSwgc28gd2UgdXNlIE1heEJhY2tl bmRzICsKLQkgKiBBdXhQcm9jVHlwZSArIDEgYXMgdGhlIGluZGV4IG9mIHRoZSBzbG90IGZv ciBhbiBhdXhpbGlhcnkgcHJvY2Vzcy4KKwkgKiBhdXhpbGlhcnkgcHJvY2VzcyB0eXBlLiAg QmFja2VuZHMgdXNlIHNsb3RzIGluZGV4ZWQgaW4gdGhlIHJhbmdlIGZyb20gMQorCSAqIHRv IE1heEJhY2tlbmRzIChpbmNsdXNpdmUpLCBhbmQgYXV4IHByb2Nlc3NlcyB1c2UgdGhlIHNs b3RzIGFmdGVyIHRoYXQsCisJICogb25lIHJlc2VydmVkIHNsb3QgZm9yIGVhY2ggZGlmZmVy ZW50IGtpbmQgb2YgYXV4IHByb2Nlc3MuCiAJICoKIAkgKiBUaGlzIHdpbGwgbmVlZCByZXRo aW5raW5nIGlmIHdlIGV2ZXIgd2FudCBtb3JlIHRoYW4gb25lIG9mIGEgcGFydGljdWxhcgog CSAqIGF1eGlsaWFyeSBwcm9jZXNzIHR5cGUuCiAJICovCi0JUHJvY1NpZ25hbEluaXQoTWF4 QmFja2VuZHMgKyBNeUF1eFByb2NUeXBlICsgMSk7CisJUHJvY1NpZ25hbEluaXQoTWF4QmFj a2VuZHMgKyBNeUJhY2tlbmRUeXBlIC0gRklSU1RfQVVYX1BST0MgKyAxKTsKIAogCS8qCiAJ ICogQXV4aWxpYXJ5IHByb2Nlc3NlcyBkb24ndCBydW4gdHJhbnNhY3Rpb25zLCBidXQgdGhl eSBtYXkgbmVlZCBhCkBAIC0xMzYsMzggKzEwMiwzOCBAQCBBdXhpbGlhcnlQcm9jZXNzTWFp bihBdXhQcm9jVHlwZSBhdXh0eXBlKQogCiAJU2V0UHJvY2Vzc2luZ01vZGUoTm9ybWFsUHJv Y2Vzc2luZyk7CiAKLQlzd2l0Y2ggKE15QXV4UHJvY1R5cGUpCisJc3dpdGNoIChNeUJhY2tl bmRUeXBlKQogCXsKLQkJY2FzZSBTdGFydHVwUHJvY2VzczoKKwkJY2FzZSBCX1NUQVJUVVA6 CiAJCQlTdGFydHVwUHJvY2Vzc01haW4oKTsKIAkJCXByb2NfZXhpdCgxKTsKIAotCQljYXNl IEFyY2hpdmVyUHJvY2VzczoKKwkJY2FzZSBCX0FSQ0hJVkVSOgogCQkJUGdBcmNoaXZlck1h aW4oKTsKIAkJCXByb2NfZXhpdCgxKTsKIAotCQljYXNlIEJnV3JpdGVyUHJvY2VzczoKKwkJ Y2FzZSBCX0JHX1dSSVRFUjoKIAkJCUJhY2tncm91bmRXcml0ZXJNYWluKCk7CiAJCQlwcm9j X2V4aXQoMSk7CiAKLQkJY2FzZSBDaGVja3BvaW50ZXJQcm9jZXNzOgorCQljYXNlIEJfQ0hF Q0tQT0lOVEVSOgogCQkJQ2hlY2twb2ludGVyTWFpbigpOwogCQkJcHJvY19leGl0KDEpOwog Ci0JCWNhc2UgV2FsV3JpdGVyUHJvY2VzczoKKwkJY2FzZSBCX1dBTF9XUklURVI6CiAJCQlX YWxXcml0ZXJNYWluKCk7CiAJCQlwcm9jX2V4aXQoMSk7CiAKLQkJY2FzZSBXYWxSZWNlaXZl clByb2Nlc3M6CisJCWNhc2UgQl9XQUxfUkVDRUlWRVI6CiAJCQlXYWxSZWNlaXZlck1haW4o KTsKIAkJCXByb2NfZXhpdCgxKTsKIAotCQljYXNlIFdhbFN1bW1hcml6ZXJQcm9jZXNzOgor CQljYXNlIEJfV0FMX1NVTU1BUklaRVI6CiAJCQlXYWxTdW1tYXJpemVyTWFpbigpOwogCQkJ cHJvY19leGl0KDEpOwogCiAJCWRlZmF1bHQ6Ci0JCQllbG9nKFBBTklDLCAidW5yZWNvZ25p emVkIHByb2Nlc3MgdHlwZTogJWQiLCAoaW50KSBNeUF1eFByb2NUeXBlKTsKKwkJCWVsb2co UEFOSUMsICJ1bnJlY29nbml6ZWQgcHJvY2VzcyB0eXBlOiAlZCIsIChpbnQpIE15QmFja2Vu ZFR5cGUpOwogCQkJcHJvY19leGl0KDEpOwogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9w b3N0bWFzdGVyLmMKaW5kZXggZmViNDcxZGQxZGYuLmM1MWI2YTEzNzZhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtNDQwLDcgKzQ0MCw3IEBAIHN0YXRpYyBp bnQJQ291bnRDaGlsZHJlbihpbnQgdGFyZ2V0KTsKIHN0YXRpYyBib29sIGFzc2lnbl9iYWNr ZW5kbGlzdF9lbnRyeShSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3KTsKIHN0YXRpYyB2b2lkIG1h eWJlX3N0YXJ0X2Jnd29ya2Vycyh2b2lkKTsKIHN0YXRpYyBib29sIENyZWF0ZU9wdHNGaWxl KGludCBhcmdjLCBjaGFyICphcmd2W10sIGNoYXIgKmZ1bGxwcm9nbmFtZSk7Ci1zdGF0aWMg cGlkX3QgU3RhcnRDaGlsZFByb2Nlc3MoQXV4UHJvY1R5cGUgdHlwZSk7CitzdGF0aWMgcGlk X3QgU3RhcnRDaGlsZFByb2Nlc3MoQmFja2VuZFR5cGUgdHlwZSk7CiBzdGF0aWMgdm9pZCBT dGFydEF1dG92YWN1dW1Xb3JrZXIodm9pZCk7CiBzdGF0aWMgdm9pZCBNYXliZVN0YXJ0V2Fs UmVjZWl2ZXIodm9pZCk7CiBzdGF0aWMgdm9pZCBNYXliZVN0YXJ0V2FsU3VtbWFyaXplcih2 b2lkKTsKQEAgLTU2MSwxMyArNTYxLDEzIEBAIHN0YXRpYyB2b2lkIFNobWVtQmFja2VuZEFy cmF5QWRkKEJhY2tlbmQgKmJuKTsKIHN0YXRpYyB2b2lkIFNobWVtQmFja2VuZEFycmF5UmVt b3ZlKEJhY2tlbmQgKmJuKTsKICNlbmRpZgkJCQkJCQkvKiBFWEVDX0JBQ0tFTkQgKi8KIAot I2RlZmluZSBTdGFydHVwRGF0YUJhc2UoKQkJU3RhcnRDaGlsZFByb2Nlc3MoU3RhcnR1cFBy b2Nlc3MpCi0jZGVmaW5lIFN0YXJ0QXJjaGl2ZXIoKQkJCVN0YXJ0Q2hpbGRQcm9jZXNzKEFy Y2hpdmVyUHJvY2VzcykKLSNkZWZpbmUgU3RhcnRCYWNrZ3JvdW5kV3JpdGVyKCkgU3RhcnRD aGlsZFByb2Nlc3MoQmdXcml0ZXJQcm9jZXNzKQotI2RlZmluZSBTdGFydENoZWNrcG9pbnRl cigpCQlTdGFydENoaWxkUHJvY2VzcyhDaGVja3BvaW50ZXJQcm9jZXNzKQotI2RlZmluZSBT dGFydFdhbFdyaXRlcigpCQlTdGFydENoaWxkUHJvY2VzcyhXYWxXcml0ZXJQcm9jZXNzKQot I2RlZmluZSBTdGFydFdhbFJlY2VpdmVyKCkJCVN0YXJ0Q2hpbGRQcm9jZXNzKFdhbFJlY2Vp dmVyUHJvY2VzcykKLSNkZWZpbmUgU3RhcnRXYWxTdW1tYXJpemVyKCkJU3RhcnRDaGlsZFBy b2Nlc3MoV2FsU3VtbWFyaXplclByb2Nlc3MpCisjZGVmaW5lIFN0YXJ0dXBEYXRhQmFzZSgp CQlTdGFydENoaWxkUHJvY2VzcyhCX1NUQVJUVVApCisjZGVmaW5lIFN0YXJ0QXJjaGl2ZXIo KQkJCVN0YXJ0Q2hpbGRQcm9jZXNzKEJfQVJDSElWRVIpCisjZGVmaW5lIFN0YXJ0QmFja2dy b3VuZFdyaXRlcigpIFN0YXJ0Q2hpbGRQcm9jZXNzKEJfQkdfV1JJVEVSKQorI2RlZmluZSBT dGFydENoZWNrcG9pbnRlcigpCQlTdGFydENoaWxkUHJvY2VzcyhCX0NIRUNLUE9JTlRFUikK KyNkZWZpbmUgU3RhcnRXYWxXcml0ZXIoKQkJU3RhcnRDaGlsZFByb2Nlc3MoQl9XQUxfV1JJ VEVSKQorI2RlZmluZSBTdGFydFdhbFJlY2VpdmVyKCkJCVN0YXJ0Q2hpbGRQcm9jZXNzKEJf V0FMX1JFQ0VJVkVSKQorI2RlZmluZSBTdGFydFdhbFN1bW1hcml6ZXIoKQlTdGFydENoaWxk UHJvY2VzcyhCX1dBTF9TVU1NQVJJWkVSKQogCiAvKiBNYWNyb3MgdG8gY2hlY2sgZXhpdCBz dGF0dXMgb2YgYSBjaGlsZCBwcm9jZXNzICovCiAjZGVmaW5lIEVYSVRfU1RBVFVTXzAoc3Qp ICAoKHN0KSA9PSAwKQpAQCAtNDk1Myw3ICs0OTUzLDcgQEAgU3ViUG9zdG1hc3Rlck1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAJaWYgKHN0cmNtcChhcmd2WzFdLCAiLS1m b3JrYXV4IikgPT0gMCkKIAl7Ci0JCUF1eFByb2NUeXBlIGF1eHR5cGU7CisJCUJhY2tlbmRU eXBlIGF1eHR5cGU7CiAKIAkJQXNzZXJ0KGFyZ2MgPT0gNCk7CiAKQEAgLTUyOTIsNyArNTI5 Miw3IEBAIENvdW50Q2hpbGRyZW4oaW50IHRhcmdldCkKICAqIHRvIHN0YXJ0IHN1YnByb2Nl c3MuCiAgKi8KIHN0YXRpYyBwaWRfdAotU3RhcnRDaGlsZFByb2Nlc3MoQXV4UHJvY1R5cGUg dHlwZSkKK1N0YXJ0Q2hpbGRQcm9jZXNzKEJhY2tlbmRUeXBlIHR5cGUpCiB7CiAJcGlkX3QJ CXBpZDsKIApAQCAtNTM0NCwzMSArNTM0NCwzMSBAQCBTdGFydENoaWxkUHJvY2VzcyhBdXhQ cm9jVHlwZSB0eXBlKQogCQllcnJubyA9IHNhdmVfZXJybm87CiAJCXN3aXRjaCAodHlwZSkK IAkJewotCQkJY2FzZSBTdGFydHVwUHJvY2VzczoKKwkJCWNhc2UgQl9TVEFSVFVQOgogCQkJ CWVyZXBvcnQoTE9HLAogCQkJCQkJKGVycm1zZygiY291bGQgbm90IGZvcmsgc3RhcnR1cCBw cm9jZXNzOiAlbSIpKSk7CiAJCQkJYnJlYWs7Ci0JCQljYXNlIEFyY2hpdmVyUHJvY2VzczoK KwkJCWNhc2UgQl9BUkNISVZFUjoKIAkJCQllcmVwb3J0KExPRywKIAkJCQkJCShlcnJtc2co ImNvdWxkIG5vdCBmb3JrIGFyY2hpdmVyIHByb2Nlc3M6ICVtIikpKTsKIAkJCQlicmVhazsK LQkJCWNhc2UgQmdXcml0ZXJQcm9jZXNzOgorCQkJY2FzZSBCX0JHX1dSSVRFUjoKIAkJCQll cmVwb3J0KExPRywKIAkJCQkJCShlcnJtc2coImNvdWxkIG5vdCBmb3JrIGJhY2tncm91bmQg d3JpdGVyIHByb2Nlc3M6ICVtIikpKTsKIAkJCQlicmVhazsKLQkJCWNhc2UgQ2hlY2twb2lu dGVyUHJvY2VzczoKKwkJCWNhc2UgQl9DSEVDS1BPSU5URVI6CiAJCQkJZXJlcG9ydChMT0cs CiAJCQkJCQkoZXJybXNnKCJjb3VsZCBub3QgZm9yayBjaGVja3BvaW50ZXIgcHJvY2Vzczog JW0iKSkpOwogCQkJCWJyZWFrOwotCQkJY2FzZSBXYWxXcml0ZXJQcm9jZXNzOgorCQkJY2Fz ZSBCX1dBTF9XUklURVI6CiAJCQkJZXJlcG9ydChMT0csCiAJCQkJCQkoZXJybXNnKCJjb3Vs ZCBub3QgZm9yayBXQUwgd3JpdGVyIHByb2Nlc3M6ICVtIikpKTsKIAkJCQlicmVhazsKLQkJ CWNhc2UgV2FsUmVjZWl2ZXJQcm9jZXNzOgorCQkJY2FzZSBCX1dBTF9SRUNFSVZFUjoKIAkJ CQllcmVwb3J0KExPRywKIAkJCQkJCShlcnJtc2coImNvdWxkIG5vdCBmb3JrIFdBTCByZWNl aXZlciBwcm9jZXNzOiAlbSIpKSk7CiAJCQkJYnJlYWs7Ci0JCQljYXNlIFdhbFN1bW1hcml6 ZXJQcm9jZXNzOgorCQkJY2FzZSBCX1dBTF9TVU1NQVJJWkVSOgogCQkJCWVyZXBvcnQoTE9H LAogCQkJCQkJKGVycm1zZygiY291bGQgbm90IGZvcmsgV0FMIHN1bW1hcml6ZXIgcHJvY2Vz czogJW0iKSkpOwogCQkJCWJyZWFrOwpAQCAtNTM4Miw3ICs1MzgyLDcgQEAgU3RhcnRDaGls ZFByb2Nlc3MoQXV4UHJvY1R5cGUgdHlwZSkKIAkJICogZm9yayBmYWlsdXJlIGlzIGZhdGFs IGR1cmluZyBzdGFydHVwLCBidXQgdGhlcmUncyBubyBuZWVkIHRvIGNob2tlCiAJCSAqIGlt bWVkaWF0ZWx5IGlmIHN0YXJ0aW5nIG90aGVyIGNoaWxkIHR5cGVzIGZhaWxzLgogCQkgKi8K LQkJaWYgKHR5cGUgPT0gU3RhcnR1cFByb2Nlc3MpCisJCWlmICh0eXBlID09IEJfU1RBUlRV UCkKIAkJCUV4aXRQb3N0bWFzdGVyKDEpOwogCQlyZXR1cm4gMDsKIAl9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYwppbmRleCAxYTEwNTBjOGRh MS4uOTJmMjRkYjRlMTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L2JhY2tlbmRfc3RhdHVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFj a2VuZF9zdGF0dXMuYwpAQCAtMjU3LDE3ICsyNTcsMTYgQEAgcGdzdGF0X2JlaW5pdCh2b2lk KQogCWVsc2UKIAl7CiAJCS8qIE11c3QgYmUgYW4gYXV4aWxpYXJ5IHByb2Nlc3MgKi8KLQkJ QXNzZXJ0KE15QXV4UHJvY1R5cGUgIT0gTm90QW5BdXhQcm9jZXNzKTsKKwkJQXNzZXJ0KElz QXV4UHJvY2VzcyhNeUJhY2tlbmRUeXBlKSk7CiAKIAkJLyoKIAkJICogQXNzaWduIHRoZSBN eUJFRW50cnkgZm9yIGFuIGF1eGlsaWFyeSBwcm9jZXNzLiAgU2luY2UgaXQgZG9lc24ndAog CQkgKiBoYXZlIGEgQmFja2VuZElkLCB0aGUgc2xvdCBpcyBzdGF0aWNhbGx5IGFsbG9jYXRl ZCBiYXNlZCBvbiB0aGUKLQkJICogYXV4aWxpYXJ5IHByb2Nlc3MgdHlwZSAoTXlBdXhQcm9j VHlwZSkuICBCYWNrZW5kcyB1c2Ugc2xvdHMgaW5kZXhlZAotCQkgKiBpbiB0aGUgcmFuZ2Ug ZnJvbSAwIHRvIE1heEJhY2tlbmRzIChleGNsdXNpdmUpLCBzbyB3ZSB1c2UKLQkJICogTWF4 QmFja2VuZHMgKyBBdXhQcm9jVHlwZSBhcyB0aGUgaW5kZXggb2YgdGhlIHNsb3QgZm9yIGFu IGF1eGlsaWFyeQotCQkgKiBwcm9jZXNzLgorCQkgKiBhdXhpbGlhcnkgcHJvY2VzcyB0eXBl LiAgQmFja2VuZHMgdXNlIHNsb3RzIGluZGV4ZWQgaW4gdGhlIHJhbmdlCisJCSAqIGZyb20g MCB0byBNYXhCYWNrZW5kcyAoZXhjbHVzaXZlKSwgYW5kIGF1eCBwcm9jZXNzZXMgdXNlIHRo ZSBzbG90cworCQkgKiBhZnRlciB0aGF0LgogCQkgKi8KLQkJTXlCRUVudHJ5ID0gJkJhY2tl bmRTdGF0dXNBcnJheVtNYXhCYWNrZW5kcyArIE15QXV4UHJvY1R5cGVdOworCQlNeUJFRW50 cnkgPSAmQmFja2VuZFN0YXR1c0FycmF5W01heEJhY2tlbmRzICsgTXlCYWNrZW5kVHlwZSAt IEZJUlNUX0FVWF9QUk9DXTsKIAl9CiAKIAkvKiBTZXQgdXAgYSBwcm9jZXNzLWV4aXQgaG9v ayB0byBjbGVhbiB1cCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgg Yi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCAwYjAxYzFmMDkzNS4uNzBkYTUyYTc4 NzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNs dWRlL21pc2NhZG1pbi5oCkBAIC0zMjEsMjEgKzMyMSwzNiBAQCBleHRlcm4gdm9pZCBJbml0 UHJvY2Vzc0xvY2FsTGF0Y2godm9pZCk7CiBleHRlcm4gdm9pZCBTd2l0Y2hUb1NoYXJlZExh dGNoKHZvaWQpOwogZXh0ZXJuIHZvaWQgU3dpdGNoQmFja1RvTG9jYWxMYXRjaCh2b2lkKTsK IAorLyoKKyAqIE15QmFja2VuZFR5cGUgaW5kaWNhdGVzIHdoYXQga2luZCBvZiBhIGJhY2tl bmQgdGhpcyBpcy4KKyAqLwogdHlwZWRlZiBlbnVtIEJhY2tlbmRUeXBlCiB7CiAJQl9JTlZB TElEID0gMCwKLQlCX0FSQ0hJVkVSLAorCisJLyogQmFja2VuZHMgYW5kIG90aGVyIGJhY2tl bmQtbGlrZSBwcm9jZXNzZXMgKi8KKwlCX0JBQ0tFTkQsCiAJQl9BVVRPVkFDX0xBVU5DSEVS LAogCUJfQVVUT1ZBQ19XT1JLRVIsCi0JQl9CQUNLRU5ELAogCUJfQkdfV09SS0VSLAorCUJf V0FMX1NFTkRFUiwKKworCUJfU1RBTkRBTE9ORV9CQUNLRU5ELAorCUJfTE9HR0VSLAorCisJ LyoKKwkgKiBBdXhpbGlhcnkgcHJvY2Vzc2VzLiBUaGVzZSBoYXZlIFBHUFJPQyBlbnRyaWVz LCBidXQgdGhleSBhcmUgbm90CisJICogYXR0YWNoZWQgdG8gYW55IHBhcnRpY3VsYXIgZGF0 YWJhc2UuIFRoZXJlIGNhbiBiZSBvbmx5IG9uZSBvZiBlYWNoIG9mCisJICogdGhlc2UgcnVu bmluZyBhdCBhIHRpbWUuCisJICoKKwkgKiBJZiB5b3UgbW9kaWZ5IHRoZXNlLCBtYWtlIHN1 cmUgdG8gdXBkYXRlIE5VTV9BVVhJTElBUllfUFJPQ1MgYW5kIHRoZQorCSAqIGdsb3NzYXJ5 IGluIHRoZSBkb2NzLgorCSAqLworCUJfQVJDSElWRVIsCiAJQl9CR19XUklURVIsCiAJQl9D SEVDS1BPSU5URVIsCi0JQl9MT0dHRVIsCi0JQl9TVEFOREFMT05FX0JBQ0tFTkQsCiAJQl9T VEFSVFVQLAogCUJfV0FMX1JFQ0VJVkVSLAotCUJfV0FMX1NFTkRFUiwKIAlCX1dBTF9TVU1N QVJJWkVSLAogCUJfV0FMX1dSSVRFUiwKIH0gQmFja2VuZFR5cGU7CkBAIC0zNDQsNiArMzU5 LDE5IEBAIHR5cGVkZWYgZW51bSBCYWNrZW5kVHlwZQogCiBleHRlcm4gUEdETExJTVBPUlQg QmFja2VuZFR5cGUgTXlCYWNrZW5kVHlwZTsKIAorI2RlZmluZSBGSVJTVF9BVVhfUFJPQyBC X0FSQ0hJVkVSCisjZGVmaW5lIE5VTV9BVVhQUk9DVFlQRVMgKEJBQ0tFTkRfTlVNX1RZUEVT IC0gRklSU1RfQVVYX1BST0MpCisKKyNkZWZpbmUgQW1TdGFydHVwUHJvY2VzcygpCQkJKE15 QmFja2VuZFR5cGUgPT0gQl9TVEFSVFVQKQorI2RlZmluZSBBbUJhY2tncm91bmRXcml0ZXJQ cm9jZXNzKCkgKE15QmFja2VuZFR5cGUgPT0gQl9CR19XUklURVIpCisjZGVmaW5lIEFtQXJj aGl2ZXJQcm9jZXNzKCkJCQkoTXlCYWNrZW5kVHlwZSA9PSBCX0FSQ0hJVkVSKQorI2RlZmlu ZSBBbUNoZWNrcG9pbnRlclByb2Nlc3MoKQkJKE15QmFja2VuZFR5cGUgPT0gQl9DSEVDS1BP SU5URVIpCisjZGVmaW5lIEFtV2FsV3JpdGVyUHJvY2VzcygpCQkoTXlCYWNrZW5kVHlwZSA9 PSBCX1dBTF9XUklURVIpCisjZGVmaW5lIEFtV2FsUmVjZWl2ZXJQcm9jZXNzKCkJCShNeUJh Y2tlbmRUeXBlID09IEJfV0FMX1JFQ0VJVkVSKQorI2RlZmluZSBBbVdhbFN1bW1hcml6ZXJQ cm9jZXNzKCkJKE15QmFja2VuZFR5cGUgPT0gQl9XQUxfU1VNTUFSSVpFUikKKworI2RlZmlu ZSBJc0F1eFByb2Nlc3ModHlwZSkJCQkoTXlCYWNrZW5kVHlwZSA+PSBGSVJTVF9BVVhfUFJP QykKKwogZXh0ZXJuIGNvbnN0IGNoYXIgKkdldEJhY2tlbmRUeXBlRGVzYyhCYWNrZW5kVHlw ZSBiYWNrZW5kVHlwZSk7CiAKIGV4dGVybiB2b2lkIFNldERhdGFiYXNlUGF0aChjb25zdCBj aGFyICpwYXRoKTsKQEAgLTQyNiwzOSArNDU0LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFBy b2Nlc3NpbmdNb2RlIE1vZGU7CiAJfSB3aGlsZSgwKQogCiAKLS8qCi0gKiBBdXhpbGlhcnkt cHJvY2VzcyB0eXBlIGlkZW50aWZpZXJzLiAgVGhlc2UgdXNlZCB0byBiZSBpbiBib290c3Ry YXAuaAotICogYnV0IGl0IHNlZW1zIHNhbmVyIHRvIGhhdmUgdGhlbSBoZXJlLCB3aXRoIHRo ZSBQcm9jZXNzaW5nTW9kZSBzdHVmZi4KLSAqIFRoZSBNeUF1eFByb2NUeXBlIGdsb2JhbCBp cyBkZWZpbmVkIGFuZCBzZXQgaW4gYXV4cHJvY2Vzcy5jLgotICoKLSAqIE1ha2Ugc3VyZSB0 byBsaXN0IGluIHRoZSBnbG9zc2FyeSBhbnkgaXRlbXMgeW91IGFkZCBoZXJlLgotICovCi0K LXR5cGVkZWYgZW51bQotewotCU5vdEFuQXV4UHJvY2VzcyA9IC0xLAotCVN0YXJ0dXBQcm9j ZXNzID0gMCwKLQlCZ1dyaXRlclByb2Nlc3MsCi0JQXJjaGl2ZXJQcm9jZXNzLAotCUNoZWNr cG9pbnRlclByb2Nlc3MsCi0JV2FsV3JpdGVyUHJvY2VzcywKLQlXYWxSZWNlaXZlclByb2Nl c3MsCi0JV2FsU3VtbWFyaXplclByb2Nlc3MsCi0KLQlOVU1fQVVYUFJPQ1RZUEVTCQkJLyog TXVzdCBiZSBsYXN0ISAqLwotfSBBdXhQcm9jVHlwZTsKLQotZXh0ZXJuIFBHRExMSU1QT1JU IEF1eFByb2NUeXBlIE15QXV4UHJvY1R5cGU7Ci0KLSNkZWZpbmUgQW1TdGFydHVwUHJvY2Vz cygpCQkJKE15QXV4UHJvY1R5cGUgPT0gU3RhcnR1cFByb2Nlc3MpCi0jZGVmaW5lIEFtQmFj a2dyb3VuZFdyaXRlclByb2Nlc3MoKSAoTXlBdXhQcm9jVHlwZSA9PSBCZ1dyaXRlclByb2Nl c3MpCi0jZGVmaW5lIEFtQXJjaGl2ZXJQcm9jZXNzKCkJCQkoTXlBdXhQcm9jVHlwZSA9PSBB cmNoaXZlclByb2Nlc3MpCi0jZGVmaW5lIEFtQ2hlY2twb2ludGVyUHJvY2VzcygpCQkoTXlB dXhQcm9jVHlwZSA9PSBDaGVja3BvaW50ZXJQcm9jZXNzKQotI2RlZmluZSBBbVdhbFdyaXRl clByb2Nlc3MoKQkJKE15QXV4UHJvY1R5cGUgPT0gV2FsV3JpdGVyUHJvY2VzcykKLSNkZWZp bmUgQW1XYWxSZWNlaXZlclByb2Nlc3MoKQkJKE15QXV4UHJvY1R5cGUgPT0gV2FsUmVjZWl2 ZXJQcm9jZXNzKQotI2RlZmluZSBBbVdhbFN1bW1hcml6ZXJQcm9jZXNzKCkJKE15QXV4UHJv Y1R5cGUgPT0gV2FsU3VtbWFyaXplclByb2Nlc3MpCi0KLQogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCiAgKgkgIHBpbml0LmggLS0JCQkJCQkJCQkJCQkJCQkgKgogICoJCQlQT1NUR1JF UyBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCBkZWZpbml0aW9ucy4gICAgICAgICAgICAg ICAgICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5o IGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmgKaW5kZXggMWZkZGUzYmI3 N2IuLjNlNDQzZWRkZTcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1 eHByb2Nlc3MuaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuaApA QCAtMTUsNiArMTUsNiBAQAogCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAKLWV4dGVybiB2 b2lkIEF1eGlsaWFyeVByb2Nlc3NNYWluKEF1eFByb2NUeXBlIGF1eHR5cGUpIHBnX2F0dHJp YnV0ZV9ub3JldHVybigpOworZXh0ZXJuIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc01haW4oQmFj a2VuZFR5cGUgYXV4dHlwZSkgcGdfYXR0cmlidXRlX25vcmV0dXJuKCk7CiAKICNlbmRpZgkJ CQkJCQkvKiBBVVhQUk9DRVNTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5k ZXggNWZkNDZiN2JkMWYuLjJhYmU0M2M1N2Y2IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdApAQCAtMTcyLDcgKzE3Miw2IEBAIEF1dG9WYWNPcHRzCiBBdXRvVmFjdXVtU2htZW1T dHJ1Y3QKIEF1dG9WYWN1dW1Xb3JrSXRlbQogQXV0b1ZhY3V1bVdvcmtJdGVtVHlwZQotQXV4 UHJvY1R5cGUKIEJGX2N0eAogQkZfa2V5CiBCRl93b3JkCi0tIAoyLjM5LjIKCg== --------------DQuOZZJflgkCC0VYNn04mSi3 Content-Type: text/x-patch; charset=UTF-8; name="v6-0003-Use-MyBackendType-in-more-places-to-check-what-pr.patch" Content-Disposition: attachment; filename*0="v6-0003-Use-MyBackendType-in-more-places-to-check-what-pr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3OTU5MjlhNWY1YTVkNmVhNGZhOGE0NmJiMTVjNjhkMmZmNDZhZDNkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTAgSmFuIDIwMjQgMTI6NTk6NDggKzAyMDAK U3ViamVjdDogW1BBVENIIHY2IDMvM10gVXNlIE15QmFja2VuZFR5cGUgaW4gbW9yZSBwbGFj ZXMgdG8gY2hlY2sgd2hhdCBwcm9jZXNzCiB0aGlzIGlzCgpSZW1vdmUgSXNCYWNrZ3JvdW5k V29ya2VyLCBJc0F1dG9WYWN1dW1MYXVuY2hlclByb2Nlc3MoKSBhbmQKSXNBdXRvVmFjdXVt V29ya2VyUHJvY2VzcygpIGluIGZhdm9yIG9mIG5ldyBBbSpQcm9jZXNzKCkgbWFjcm9zIHRo YXQKdXNlIE15QmFja2VuZFR5cGUuIEZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZSBleGlzdGlu ZyBBbSpQcm9jZXNzKCkKbWFjcm9zLgoKUmV2aWV3ZWQtYnk6IFhYWApEaXNjdXNzaW9uOiBY WFgKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3QuYyAgICAgICAgICAgICB8 ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jICAgICAgICAgICB8 ICA2ICsrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAg ICB8ICA0ICstLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICAg ICAgfCAgNCArLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAgICAg ICAgIHwgIDggKysrLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAg ICAgICAgICB8IDI2IC0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2Jnd29ya2VyLmMgICAgICAgICAgICB8ICAyIC0tCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL3Bvc3RtYXN0ZXIuYyAgICAgICAgICB8ICAzIC0tLQogc3JjL2JhY2tlbmQvc3RhdGlz dGljcy9leHRlbmRlZF9zdGF0cy5jICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvaXBjLmMgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL3Byb2MuYyAgICAgICAgICAgICAgfCAxOSArKysrKysrLS0tLS0tLQogc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgfCAgNiArKy0tLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMgfCAgNCArLS0KIHNy Yy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAgICAgICAgIHwgIDEgLQogc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jICAgICAgICAgICAgfCAgMiArLQogc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jICAgICAgICAgICAgfCAgOCArKystLS0K IHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAgIHwgIDggKysr LS0tCiBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaCAgICAgICAgICB8ICA1 IC0tLS0KIDE4IGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZmFzdC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5mYXN0LmMKaW5kZXggY2ZmNjg1MGVmODYuLmUx MThjZWNiOWE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3Qu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3QuYwpAQCAtODEyLDcgKzgx Miw3IEBAIGdpbkluc2VydENsZWFudXAoR2luU3RhdGUgKmdpbnN0YXRlLCBib29sIGZ1bGxf Y2xlYW4sCiAJCSAqLwogCQlMb2NrUGFnZShpbmRleCwgR0lOX01FVEFQQUdFX0JMS05PLCBF eGNsdXNpdmVMb2NrKTsKIAkJd29ya01lbW9yeSA9Ci0JCQkoSXNBdXRvVmFjdXVtV29ya2Vy UHJvY2VzcygpICYmIGF1dG92YWN1dW1fd29ya19tZW0gIT0gLTEpID8KKwkJCShBbUF1dG9W YWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgYXV0b3ZhY3V1bV93b3JrX21lbSAhPSAtMSkgPwog CQkJYXV0b3ZhY3V1bV93b3JrX21lbSA6IG1haW50ZW5hbmNlX3dvcmtfbWVtOwogCX0KIAll bHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYwppbmRleCBhZWU2YWFiNDRhZS4u YjNmNDE1ZTI4NDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFj dXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYwpAQCAtNTkw LDcgKzU5MCw3IEBAIGdpbmJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCQkvKgogCQkgKiBhbmQgY2xlYW51cCBhbnkg cGVuZGluZyBpbnNlcnRzCiAJCSAqLwotCQlnaW5JbnNlcnRDbGVhbnVwKCZndnMuZ2luc3Rh dGUsICFJc0F1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCksCisJCWdpbkluc2VydENsZWFudXAo Jmd2cy5naW5zdGF0ZSwgIUFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSwKIAkJCQkJCSBm YWxzZSwgdHJ1ZSwgc3RhdHMpOwogCX0KIApAQCAtNzAxLDcgKzcwMSw3IEBAIGdpbnZhY3V1 bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0YXRzKQogCSAqLwogCWlmIChpbmZvLT5hbmFseXplX29ubHkpCiAJewotCQlpZiAoSXNB dXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQorCQlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJv Y2VzcygpKQogCQl7CiAJCQlpbml0R2luU3RhdGUoJmdpbnN0YXRlLCBpbmRleCk7CiAJCQln aW5JbnNlcnRDbGVhbnVwKCZnaW5zdGF0ZSwgZmFsc2UsIHRydWUsIHRydWUsIHN0YXRzKTsK QEAgLTcxNyw3ICs3MTcsNyBAQCBnaW52YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVtSW5mbyAq aW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKIAl7CiAJCXN0YXRzID0gKElu ZGV4QnVsa0RlbGV0ZVJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1bGtEZWxldGVS ZXN1bHQpKTsKIAkJaW5pdEdpblN0YXRlKCZnaW5zdGF0ZSwgaW5kZXgpOwotCQlnaW5JbnNl cnRDbGVhbnVwKCZnaW5zdGF0ZSwgIUlzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSwKKwkJ Z2luSW5zZXJ0Q2xlYW51cCgmZ2luc3RhdGUsICFBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNz KCksCiAJCQkJCQkgZmFsc2UsIHRydWUsIHN0YXRzKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBhYmJiYTg5NDdmYS4uMjE5NGQ0ZmNlZDMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTMyNCw3ICszMjQsNyBA QCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywK IAljaGFyCSAgKippbmRuYW1lcyA9IE5VTEw7CiAKIAl2ZXJib3NlID0gKHBhcmFtcy0+b3B0 aW9ucyAmIFZBQ09QVF9WRVJCT1NFKSAhPSAwOwotCWluc3RydW1lbnQgPSAodmVyYm9zZSB8 fCAoSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmCisJaW5zdHJ1bWVudCA9ICh2ZXJi b3NlIHx8IChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYKIAkJCQkJCQkgIHBhcmFt cy0+bG9nX21pbl9kdXJhdGlvbiA+PSAwKSk7CiAJaWYgKGluc3RydW1lbnQpCiAJewpAQCAt MzE0OCw3ICszMTQ4LDcgQEAgc3RhdGljIGludAogZGVhZF9pdGVtc19tYXhfaXRlbXMoTFZS ZWxTdGF0ZSAqdmFjcmVsKQogewogCWludDY0CQltYXhfaXRlbXM7Ci0JaW50CQkJdmFjX3dv cmtfbWVtID0gSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmCisJaW50CQkJdmFjX3dv cmtfbWVtID0gQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmCiAJCWF1dG92YWN1dW1f d29ya19tZW0gIT0gLTEgPwogCQlhdXRvdmFjdXVtX3dvcmtfbWVtIDogbWFpbnRlbmFuY2Vf d29ya19tZW07CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCBkZWVmODY1Y2U2ZC4u NjU1ZGMwOTQ0NGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAgLTM1MSw3ICszNTEs NyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFy YW1zLAogCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CiAKIAkvKiBtZWFz dXJlIGVsYXBzZWQgdGltZSBpZmYgYXV0b3ZhY3V1bSBsb2dnaW5nIHJlcXVpcmVzIGl0ICov Ci0JaWYgKElzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiBwYXJhbXMtPmxvZ19taW5f ZHVyYXRpb24gPj0gMCkKKwlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmIHBh cmFtcy0+bG9nX21pbl9kdXJhdGlvbiA+PSAwKQogCXsKIAkJaWYgKHRyYWNrX2lvX3RpbWlu ZykKIAkJewpAQCAtNzI5LDcgKzcyOSw3IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9u ZXJlbCwgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJdmFjX2Nsb3NlX2luZGV4ZXMobmluZGV4 ZXMsIElyZWwsIE5vTG9jayk7CiAKIAkvKiBMb2cgdGhlIGFjdGlvbiBpZiBhcHByb3ByaWF0 ZSAqLwotCWlmIChJc0F1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgcGFyYW1zLT5sb2df bWluX2R1cmF0aW9uID49IDApCisJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAm JiBwYXJhbXMtPmxvZ19taW5fZHVyYXRpb24gPj0gMCkKIAl7CiAJCVRpbWVzdGFtcFR6IGVu ZHRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMK aW5kZXggNjRkYTg0ODYyNzYuLmU0MGNlZjY1NjZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0u YwpAQCAtNTY0LDcgKzU2NCw3IEBAIHZhY3V1bShMaXN0ICpyZWxhdGlvbnMsIFZhY3V1bVBh cmFtcyAqcGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3ksCiAJZWxzZQog CXsKIAkJQXNzZXJ0KHBhcmFtcy0+b3B0aW9ucyAmIFZBQ09QVF9BTkFMWVpFKTsKLQkJaWYg KElzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKKwkJaWYgKEFtQXV0b1ZhY3V1bVdvcmtl clByb2Nlc3MoKSkKIAkJCXVzZV9vd25feGFjdHMgPSB0cnVlOwogCQllbHNlIGlmIChpbl9v dXRlcl94YWN0KQogCQkJdXNlX293bl94YWN0cyA9IGZhbHNlOwpAQCAtODA5LDcgKzgwOSw3 IEBAIHZhY3V1bV9vcGVuX3JlbGF0aW9uKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9u LCBiaXRzMzIgb3B0aW9ucywKIAkgKiBzdGF0ZW1lbnRzIGluIHRoZSBwZXJtaXNzaW9uIGNo ZWNrczsgb3RoZXJ3aXNlLCBvbmx5IGxvZyBpZiB0aGUgY2FsbGVyCiAJICogc28gcmVxdWVz dGVkLgogCSAqLwotCWlmICghSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQorCWlmICgh QW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQogCQllbGV2ZWwgPSBXQVJOSU5HOwogCWVs c2UgaWYgKHZlcmJvc2UpCiAJCWVsZXZlbCA9IExPRzsKQEAgLTg5Niw3ICs4OTYsNyBAQCBl eHBhbmRfdmFjdXVtX3JlbChWYWN1dW1SZWxhdGlvbiAqdnJlbCwgTWVtb3J5Q29udGV4dCB2 YWNfY29udGV4dCwKIAkJICogU2luY2UgYXV0b3ZhY3V1bSB3b3JrZXJzIHN1cHBseSBPSURz IHdoZW4gY2FsbGluZyB2YWN1dW0oKSwgbm8KIAkJICogYXV0b3ZhY3V1bSB3b3JrZXIgc2hv dWxkIHJlYWNoIHRoaXMgY29kZS4KIAkJICovCi0JCUFzc2VydCghSXNBdXRvVmFjdXVtV29y a2VyUHJvY2VzcygpKTsKKwkJQXNzZXJ0KCFBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkp OwogCiAJCS8qCiAJCSAqIFdlIHRyYW5zaWVudGx5IHRha2UgQWNjZXNzU2hhcmVMb2NrIHRv IHByb3RlY3QgdGhlIHN5c2NhY2hlIGxvb2t1cApAQCAtMjMzNiw3ICsyMzM2LDcgQEAgdmFj dXVtX2RlbGF5X3BvaW50KHZvaWQpCiAJICogW2F1dG92YWN1dW1fXXZhY3V1bV9jb3N0X2Rl bGF5IHRvIHRha2UgZWZmZWN0IHdoaWxlIGEgdGFibGUgaXMgYmVpbmcKIAkgKiB2YWN1dW1l ZCBvciBhbmFseXplZC4KIAkgKi8KLQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZyAmJiBJc0F1 dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCisJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcgJiYg QW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQogCXsKIAkJQ29uZmlnUmVsb2FkUGVuZGlu ZyA9IGZhbHNlOwogCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggMmMzMDk5Zjc2ZjEuLmNlY2JhYWE1Yjkx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMTM1LDEwICsxMzUs NiBAQCBpbnQJCQlMb2dfYXV0b3ZhY3V1bV9taW5fZHVyYXRpb24gPSA2MDAwMDA7CiAjZGVm aW5lIE1JTl9BVVRPVkFDX1NMRUVQVElNRSAxMDAuMCAvKiBtaWxsaXNlY29uZHMgKi8KICNk ZWZpbmUgTUFYX0FVVE9WQUNfU0xFRVBUSU1FIDMwMAkvKiBzZWNvbmRzICovCiAKLS8qIEZs YWdzIHRvIHRlbGwgaWYgd2UgYXJlIGluIGFuIGF1dG92YWN1dW0gcHJvY2VzcyAqLwotc3Rh dGljIGJvb2wgYW1fYXV0b3ZhY3V1bV9sYXVuY2hlciA9IGZhbHNlOwotc3RhdGljIGJvb2wg YW1fYXV0b3ZhY3V1bV93b3JrZXIgPSBmYWxzZTsKLQogLyoKICAqIFZhcmlhYmxlcyB0byBz YXZlIHRoZSBjb3N0LXJlbGF0ZWQgc3RvcmFnZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3VycmVu dAogICogcmVsYXRpb24gYmVpbmcgdmFjdXVtZWQgYnkgdGhpcyBhdXRvdmFjdXVtIHdvcmtl ci4gVXNpbmcgdGhlc2UsIHdlIGNhbgpAQCAtNDM1LDggKzQzMSw2IEBAIEF1dG9WYWNMYXVu Y2hlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAlzaWdqbXBfYnVmCWxvY2Fs X3NpZ2ptcF9idWY7CiAKLQlhbV9hdXRvdmFjdXVtX2xhdW5jaGVyID0gdHJ1ZTsKLQogCU15 QmFja2VuZFR5cGUgPSBCX0FVVE9WQUNfTEFVTkNIRVI7CiAJaW5pdF9wc19kaXNwbGF5KE5V TEwpOwogCkBAIC0xNDk1LDggKzE0ODksNiBAQCBBdXRvVmFjV29ya2VyTWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCXNpZ2ptcF9idWYJbG9jYWxfc2lnam1wX2J1ZjsKIAlPaWQJ CQlkYmlkOwogCi0JYW1fYXV0b3ZhY3V1bV93b3JrZXIgPSB0cnVlOwotCiAJTXlCYWNrZW5k VHlwZSA9IEJfQVVUT1ZBQ19XT1JLRVI7CiAJaW5pdF9wc19kaXNwbGF5KE5VTEwpOwogCkBA IC0zMzU1LDI0ICszMzQ3LDYgQEAgYXV0b3ZhY19pbml0KHZvaWQpCiAJCQkJIGVycmhpbnQo IkVuYWJsZSB0aGUgXCJ0cmFja19jb3VudHNcIiBvcHRpb24uIikpKTsKIH0KIAotLyoKLSAq IElzQXV0b1ZhY3V1bSBmdW5jdGlvbnMKLSAqCQlSZXR1cm4gd2hldGhlciB0aGlzIGlzIGVp dGhlciBhIGxhdW5jaGVyIGF1dG92YWN1dW0gcHJvY2VzcyBvciBhIHdvcmtlcgotICoJCXBy b2Nlc3MuCi0gKi8KLWJvb2wKLUlzQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2Vzcyh2b2lkKQot ewotCXJldHVybiBhbV9hdXRvdmFjdXVtX2xhdW5jaGVyOwotfQotCi1ib29sCi1Jc0F1dG9W YWN1dW1Xb3JrZXJQcm9jZXNzKHZvaWQpCi17Ci0JcmV0dXJuIGFtX2F1dG92YWN1dW1fd29y a2VyOwotfQotCi0KIC8qCiAgKiBBdXRvVmFjdXVtU2htZW1TaXplCiAgKgkJQ29tcHV0ZSBz cGFjZSBuZWVkZWQgZm9yIGF1dG92YWN1dW0tcmVsYXRlZCBzaGFyZWQgbWVtb3J5CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggNjdmOTJjMjRkYjEuLmQ4ZTg5ZGU3NDk0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCkBAIC03MzEsOCArNzMxLDYgQEAg QmFja2dyb3VuZFdvcmtlck1haW4odm9pZCkKIAlpZiAod29ya2VyID09IE5VTEwpCiAJCWVs b2coRkFUQUwsICJ1bmFibGUgdG8gZmluZCBiZ3dvcmtlciBlbnRyeSIpOwogCi0JSXNCYWNr Z3JvdW5kV29ya2VyID0gdHJ1ZTsKLQogCU15QmFja2VuZFR5cGUgPSBCX0JHX1dPUktFUjsK IAlpbml0X3BzX2Rpc3BsYXkod29ya2VyLT5iZ3dfbmFtZSk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9wb3N0bWFzdGVyLmMKaW5kZXggYzUxYjZhMTM3NmEuLjhhYTJkZGYwYzQ2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtNDk3OSw5ICs0OTc5LDYgQEAg U3ViUG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAJaWYgKHN0 cmNtcChhcmd2WzFdLCAiLS1mb3JrYmd3b3JrZXIiKSA9PSAwKQogCXsKLQkJLyogZG8gdGhp cyBhcyBlYXJseSBhcyBwb3NzaWJsZTsgaW4gcGFydGljdWxhciwgYmVmb3JlIEluaXRQcm9j ZXNzKCkgKi8KLQkJSXNCYWNrZ3JvdW5kV29ya2VyID0gdHJ1ZTsKLQogCQkvKiBSZXN0b3Jl IGJhc2ljIHNoYXJlZCBtZW1vcnkgcG9pbnRlcnMgKi8KIAkJSW5pdFNobWVtQWNjZXNzKFVz ZWRTaG1lbVNlZ0FkZHIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNz L2V4dGVuZGVkX3N0YXRzLmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0 YXRzLmMKaW5kZXggYzU0NjE1MTRkOGYuLjEzNTE1MWEyNzIzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCkBAIC0xNzMsNyArMTczLDcgQEAgQnVpbGRS ZWxhdGlvbkV4dFN0YXRpc3RpY3MoUmVsYXRpb24gb25lcmVsLCBib29sIGluaCwgZG91Ymxl IHRvdGFscm93cywKIAkJCQkJCQkJCSAgbmF0dHMsIHZhY2F0dHJzdGF0cyk7CiAJCWlmICgh c3RhdHMpCiAJCXsKLQkJCWlmICghSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQorCQkJ aWYgKCFBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCiAJCQkJZXJlcG9ydChXQVJOSU5H LAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwK IAkJCQkJCSBlcnJtc2coInN0YXRpc3RpY3Mgb2JqZWN0IFwiJXMuJXNcIiBjb3VsZCBub3Qg YmUgY29tcHV0ZWQgZm9yIHJlbGF0aW9uIFwiJXMuJXNcIiIsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9pcGMuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lw Yy5jCmluZGV4IDI2ODFlNGNkZmY1Li5iMDZlNGI4NDUyOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvaXBjLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv aXBjLmMKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcm9jX2V4aXQoaW50IGNvZGUpCiAJCSAqLwog CQljaGFyCQlncHJvZkRpck5hbWVbMzJdOwogCi0JCWlmIChJc0F1dG9WYWN1dW1Xb3JrZXJQ cm9jZXNzKCkpCisJCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCiAJCQlzbnBy aW50ZihncHJvZkRpck5hbWUsIDMyLCAiZ3Byb2YvYXZ3b3JrZXIiKTsKIAkJZWxzZQogCQkJ c25wcmludGYoZ3Byb2ZEaXJOYW1lLCAzMiwgImdwcm9mLyVkIiwgKGludCkgZ2V0cGlkKCkp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggNGFkOTZiZWI4N2EuLmI5MDRmYWI1 ZGU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTQxLDcgKzQxLDYgQEAKICNp bmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlv bi9zbG90LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc3luY3JlcC5oIgotI2luY2x1ZGUg InJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9u X3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9y YWdlL2xtZ3IuaCIKQEAgLTMwOSwxMSArMzA4LDExIEBAIEluaXRQcm9jZXNzKHZvaWQpCiAJ CWVsb2coRVJST1IsICJ5b3UgYWxyZWFkeSBleGlzdCIpOwogCiAJLyogRGVjaWRlIHdoaWNo IGxpc3Qgc2hvdWxkIHN1cHBseSBvdXIgUEdQUk9DLiAqLwotCWlmIChJc0FueUF1dG9WYWN1 dW1Qcm9jZXNzKCkpCisJaWYgKEFtQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2VzcygpIHx8IEFt QXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKIAkJcHJvY2dsb2JhbGxpc3QgPSAmUHJvY0ds b2JhbC0+YXV0b3ZhY0ZyZWVQcm9jczsKLQllbHNlIGlmIChJc0JhY2tncm91bmRXb3JrZXIp CisJZWxzZSBpZiAoQW1CYWNrZ3JvdW5kV29ya2VyUHJvY2VzcygpKQogCQlwcm9jZ2xvYmFs bGlzdCA9ICZQcm9jR2xvYmFsLT5iZ3dvcmtlckZyZWVQcm9jczsKLQllbHNlIGlmIChhbV93 YWxzZW5kZXIpCisJZWxzZSBpZiAoQW1XYWxTZW5kZXJQcm9jZXNzKCkpCiAJCXByb2NnbG9i YWxsaXN0ID0gJlByb2NHbG9iYWwtPndhbHNlbmRlckZyZWVQcm9jczsKIAllbHNlCiAJCXBy b2NnbG9iYWxsaXN0ID0gJlByb2NHbG9iYWwtPmZyZWVQcm9jczsKQEAgLTM0Myw3ICszNDIs NyBAQCBJbml0UHJvY2Vzcyh2b2lkKQogCQkgKiBpbiB0aGUgYXV0b3ZhY3V1bSBjYXNlPwog CQkgKi8KIAkJU3BpbkxvY2tSZWxlYXNlKFByb2NTdHJ1Y3RMb2NrKTsKLQkJaWYgKGFtX3dh bHNlbmRlcikKKwkJaWYgKEFtV2FsU2VuZGVyUHJvY2VzcygpKQogCQkJZXJlcG9ydChGQVRB TCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9UT09fTUFOWV9DT05ORUNUSU9OUyksCiAJCQkJ CSBlcnJtc2coIm51bWJlciBvZiByZXF1ZXN0ZWQgc3RhbmRieSBjb25uZWN0aW9ucyBleGNl ZWRzIG1heF93YWxfc2VuZGVycyAoY3VycmVudGx5ICVkKSIsCkBAIC0zNjUsNyArMzY0LDcg QEAgSW5pdFByb2Nlc3Modm9pZCkKIAkgKiBjbGVhbmluZyB1cC4gIChYWFggYXV0b3ZhYyBs YXVuY2hlciBjdXJyZW50bHkgZG9lc24ndCBwYXJ0aWNpcGF0ZSBpbgogCSAqIHRoaXM7IGl0 IHByb2JhYmx5IHNob3VsZC4pCiAJICovCi0JaWYgKElzVW5kZXJQb3N0bWFzdGVyICYmICFJ c0F1dG9WYWN1dW1MYXVuY2hlclByb2Nlc3MoKSkKKwlpZiAoSXNVbmRlclBvc3RtYXN0ZXIg JiYgIUFtQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2VzcygpKQogCQlNYXJrUG9zdG1hc3RlckNo aWxkQWN0aXZlKCk7CiAKIAkvKgpAQCAtMzg1LDExICszODQsMTEgQEAgSW5pdFByb2Nlc3Mo dm9pZCkKIAlNeVByb2MtPmRhdGFiYXNlSWQgPSBJbnZhbGlkT2lkOwogCU15UHJvYy0+cm9s ZUlkID0gSW52YWxpZE9pZDsKIAlNeVByb2MtPnRlbXBOYW1lc3BhY2VJZCA9IEludmFsaWRP aWQ7Ci0JTXlQcm9jLT5pc0JhY2tncm91bmRXb3JrZXIgPSBJc0JhY2tncm91bmRXb3JrZXI7 CisJTXlQcm9jLT5pc0JhY2tncm91bmRXb3JrZXIgPSBBbUJhY2tncm91bmRXb3JrZXJQcm9j ZXNzKCk7CiAJTXlQcm9jLT5kZWxheUNoa3B0RmxhZ3MgPSAwOwogCU15UHJvYy0+c3RhdHVz RmxhZ3MgPSAwOwogCS8qIE5CIC0tIGF1dG92YWMgbGF1bmNoZXIgaW50ZW50aW9uYWxseSBk b2VzIG5vdCBzZXQgSVNfQVVUT1ZBQ1VVTSAqLwotCWlmIChJc0F1dG9WYWN1dW1Xb3JrZXJQ cm9jZXNzKCkpCisJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKIAkJTXlQcm9j LT5zdGF0dXNGbGFncyB8PSBQUk9DX0lTX0FVVE9WQUNVVU07CiAJTXlQcm9jLT5sd1dhaXRp bmcgPSBMV19XU19OT1RfV0FJVElORzsKIAlNeVByb2MtPmx3V2FpdE1vZGUgPSAwOwpAQCAt NTgwLDcgKzU3OSw3IEBAIEluaXRBdXhpbGlhcnlQcm9jZXNzKHZvaWQpCiAJTXlQcm9jLT5k YXRhYmFzZUlkID0gSW52YWxpZE9pZDsKIAlNeVByb2MtPnJvbGVJZCA9IEludmFsaWRPaWQ7 CiAJTXlQcm9jLT50ZW1wTmFtZXNwYWNlSWQgPSBJbnZhbGlkT2lkOwotCU15UHJvYy0+aXNC YWNrZ3JvdW5kV29ya2VyID0gSXNCYWNrZ3JvdW5kV29ya2VyOworCU15UHJvYy0+aXNCYWNr Z3JvdW5kV29ya2VyID0gQW1CYWNrZ3JvdW5kV29ya2VyUHJvY2VzcygpOwogCU15UHJvYy0+ ZGVsYXlDaGtwdEZsYWdzID0gMDsKIAlNeVByb2MtPnN0YXR1c0ZsYWdzID0gMDsKIAlNeVBy b2MtPmx3V2FpdGluZyA9IExXX1dTX05PVF9XQUlUSU5HOwpAQCAtOTM1LDcgKzkzNCw3IEBA IFByb2NLaWxsKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJICogd2F5LCBzbyB0ZWxsIHRoZSBw b3N0bWFzdGVyIHdlJ3ZlIGNsZWFuZWQgdXAgYWNjZXB0YWJseSB3ZWxsLiAoWFhYCiAJICog YXV0b3ZhYyBsYXVuY2hlciBzaG91bGQgYmUgaW5jbHVkZWQgaGVyZSBzb21lZGF5KQogCSAq LwotCWlmIChJc1VuZGVyUG9zdG1hc3RlciAmJiAhSXNBdXRvVmFjdXVtTGF1bmNoZXJQcm9j ZXNzKCkpCisJaWYgKElzVW5kZXJQb3N0bWFzdGVyICYmICFBbUF1dG9WYWN1dW1MYXVuY2hl clByb2Nlc3MoKSkKIAkJTWFya1Bvc3RtYXN0ZXJDaGlsZEluYWN0aXZlKCk7CiAKIAkvKiB3 YWtlIGF1dG92YWMgbGF1bmNoZXIgaWYgbmVlZGVkIC0tIHNlZSBjb21tZW50cyBpbiBGcmVl V29ya2VySW5mbyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j IGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDFlYWFmM2M2YzU4Li4xZjc0 ZGUxN2VkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBi L3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMzI2Nyw3ICszMjY3LDcgQEAgUHJv Y2Vzc0ludGVycnVwdHModm9pZCkKIAkJCWVyZXBvcnQoRkFUQUwsCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfUVVFUllfQ0FOQ0VMRUQpLAogCQkJCQkgZXJybXNnKCJjYW5jZWxpbmcgYXV0 aGVudGljYXRpb24gZHVlIHRvIHRpbWVvdXQiKSkpOwotCQllbHNlIGlmIChJc0F1dG9WYWN1 dW1Xb3JrZXJQcm9jZXNzKCkpCisJCWVsc2UgaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nl c3MoKSkKIAkJCWVyZXBvcnQoRkFUQUwsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfQURNSU5f U0hVVERPV04pLAogCQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBhdXRvdmFjdXVtIHByb2Nl c3MgZHVlIHRvIGFkbWluaXN0cmF0b3IgY29tbWFuZCIpKSk7CkBAIC0zMjg2LDcgKzMyODYs NyBAQCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCQkJICovCiAJCQlwcm9jX2V4aXQoMSk7 CiAJCX0KLQkJZWxzZSBpZiAoSXNCYWNrZ3JvdW5kV29ya2VyKQorCQllbHNlIGlmIChBbUJh Y2tncm91bmRXb3JrZXJQcm9jZXNzKCkpCiAJCQllcmVwb3J0KEZBVEFMLAogCQkJCQkoZXJy Y29kZShFUlJDT0RFX0FETUlOX1NIVVRET1dOKSwKIAkJCQkJIGVycm1zZygidGVybWluYXRp bmcgYmFja2dyb3VuZCB3b3JrZXIgXCIlc1wiIGR1ZSB0byBhZG1pbmlzdHJhdG9yIGNvbW1h bmQiLApAQCAtMzM4Niw3ICszMzg2LDcgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9RVUVSWV9DQU5DRUxFRCksCiAJCQkJCSBlcnJtc2coImNh bmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRlbWVudCB0aW1lb3V0IikpKTsKIAkJfQot CQlpZiAoSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQorCQlpZiAoQW1BdXRvVmFjdXVt V29ya2VyUHJvY2VzcygpKQogCQl7CiAJCQlMb2NrRXJyb3JDbGVhbnVwKCk7CiAJCQllcmVw b3J0KEVSUk9SLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVs YXRpb24uYwppbmRleCAxMTEwNTA3MjVhNi4uYjIwYTYwYjVhODcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCkBAIC0yNDYsNyArMjQ2 LDcgQEAgcGdzdGF0X3JlcG9ydF92YWN1dW0oT2lkIHRhYmxlb2lkLCBib29sIHNoYXJlZCwK IAkgKi8KIAl0YWJlbnRyeS0+aW5zX3NpbmNlX3ZhY3V1bSA9IDA7CiAKLQlpZiAoSXNBdXRv VmFjdXVtV29ya2VyUHJvY2VzcygpKQorCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNz KCkpCiAJewogCQl0YWJlbnRyeS0+bGFzdF9hdXRvdmFjdXVtX3RpbWUgPSB0czsKIAkJdGFi ZW50cnktPmF1dG92YWN1dW1fY291bnQrKzsKQEAgLTMzNyw3ICszMzcsNyBAQCBwZ3N0YXRf cmVwb3J0X2FuYWx5emUoUmVsYXRpb24gcmVsLAogCWlmIChyZXNldGNvdW50ZXIpCiAJCXRh YmVudHJ5LT5tb2Rfc2luY2VfYW5hbHl6ZSA9IDA7CiAKLQlpZiAoSXNBdXRvVmFjdXVtV29y a2VyUHJvY2VzcygpKQorCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCiAJewog CQl0YWJlbnRyeS0+bGFzdF9hdXRvYW5hbHl6ZV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFt cCgpOwogCQl0YWJlbnRyeS0+YXV0b2FuYWx5emVfY291bnQrKzsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5p dC9nbG9iYWxzLmMKaW5kZXggODhiMDNlOGZhM2MuLmNlMWZhMTA5MmYyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9pbml0L2dsb2JhbHMuYwpAQCAtMTE0LDcgKzExNCw2IEBAIHBpZF90CQlQb3N0bWFz dGVyUGlkID0gMDsKIGJvb2wJCUlzUG9zdG1hc3RlckVudmlyb25tZW50ID0gZmFsc2U7CiBi b29sCQlJc1VuZGVyUG9zdG1hc3RlciA9IGZhbHNlOwogYm9vbAkJSXNCaW5hcnlVcGdyYWRl ID0gZmFsc2U7Ci1ib29sCQlJc0JhY2tncm91bmRXb3JrZXIgPSBmYWxzZTsKIAogYm9vbAkJ RXhpdE9uQW55RXJyb3IgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvaW5pdC9taXNjaW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5j CmluZGV4IDIzZjc3YTU5ZTU4Li45YzkxZTlhMTMyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQv bWlzY2luaXQuYwpAQCAtODM3LDcgKzgzNyw3IEBAIEluaXRpYWxpemVTZXNzaW9uVXNlcklk U3RhbmRhbG9uZSh2b2lkKQogCSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2Fs bGVkIGluIHNpbmdsZS11c2VyIG1vZGUsIGluIGF1dG92YWN1dW0KIAkgKiB3b3JrZXJzLCBh bmQgaW4gYmFja2dyb3VuZCB3b3JrZXJzLgogCSAqLwotCUFzc2VydCghSXNVbmRlclBvc3Rt YXN0ZXIgfHwgSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpIHx8IElzQmFja2dyb3VuZFdv cmtlcik7CisJQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3RlciB8fCBBbUF1dG9WYWN1dW1Xb3Jr ZXJQcm9jZXNzKCkgfHwgQW1CYWNrZ3JvdW5kV29ya2VyUHJvY2VzcygpKTsKIAogCS8qIGNh bGwgb25seSBvbmNlICovCiAJQXNzZXJ0KCFPaWRJc1ZhbGlkKEF1dGhlbnRpY2F0ZWRVc2Vy SWQpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwppbmRleCAxYWQzMzY3MTU5OC4u ODMyM2MwMmFjZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGlu aXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKQEAgLTM0NCw3 ICszNDQsNyBAQCBDaGVja015RGF0YWJhc2UoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBhbV9z dXBlcnVzZXIsIGJvb2wgb3ZlcnJpZGVfYWxsb3dfY29ubmVjdAogCSAqCiAJICogV2UgZG8g bm90IGVuZm9yY2UgdGhlbSBmb3IgYXV0b3ZhY3V1bSB3b3JrZXIgcHJvY2Vzc2VzIGVpdGhl ci4KIAkgKi8KLQlpZiAoSXNVbmRlclBvc3RtYXN0ZXIgJiYgIUlzQXV0b1ZhY3V1bVdvcmtl clByb2Nlc3MoKSkKKwlpZiAoSXNVbmRlclBvc3RtYXN0ZXIgJiYgIUFtQXV0b1ZhY3V1bVdv cmtlclByb2Nlc3MoKSkKIAl7CiAJCS8qCiAJCSAqIENoZWNrIHRoYXQgdGhlIGRhdGFiYXNl IGlzIGN1cnJlbnRseSBhbGxvd2luZyBjb25uZWN0aW9ucy4KQEAgLTgzMyw3ICs4MzMsNyBA QCBJbml0UG9zdGdyZXMoY29uc3QgY2hhciAqaW5fZGJuYW1lLCBPaWQgZGJvaWQsCiAJYmVm b3JlX3NobWVtX2V4aXQoU2h1dGRvd25Qb3N0Z3JlcywgMCk7CiAKIAkvKiBUaGUgYXV0b3Zh Y3V1bSBsYXVuY2hlciBpcyBkb25lIGhlcmUgKi8KLQlpZiAoSXNBdXRvVmFjdXVtTGF1bmNo ZXJQcm9jZXNzKCkpCisJaWYgKEFtQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2VzcygpKQogCXsK IAkJLyogcmVwb3J0IHRoaXMgYmFja2VuZCBpbiB0aGUgUGdCYWNrZW5kU3RhdHVzIGFycmF5 ICovCiAJCXBnc3RhdF9iZXN0YXJ0KCk7CkBAIC04NzcsNyArODc3LDcgQEAgSW5pdFBvc3Rn cmVzKGNvbnN0IGNoYXIgKmluX2RibmFtZSwgT2lkIGRib2lkLAogCSAqIEluIHN0YW5kYWxv bmUgbW9kZSBhbmQgaW4gYXV0b3ZhY3V1bSB3b3JrZXIgcHJvY2Vzc2VzLCB3ZSB1c2UgYSBm aXhlZAogCSAqIElELCBvdGhlcndpc2Ugd2UgZmlndXJlIGl0IG91dCBmcm9tIHRoZSBhdXRo ZW50aWNhdGVkIHVzZXIgbmFtZS4KIAkgKi8KLQlpZiAoYm9vdHN0cmFwIHx8IElzQXV0b1Zh Y3V1bVdvcmtlclByb2Nlc3MoKSkKKwlpZiAoYm9vdHN0cmFwIHx8IEFtQXV0b1ZhY3V1bVdv cmtlclByb2Nlc3MoKSkKIAl7CiAJCUluaXRpYWxpemVTZXNzaW9uVXNlcklkU3RhbmRhbG9u ZSgpOwogCQlhbV9zdXBlcnVzZXIgPSB0cnVlOwpAQCAtODkzLDcgKzg5Myw3IEBAIEluaXRQ b3N0Z3Jlcyhjb25zdCBjaGFyICppbl9kYm5hbWUsIE9pZCBkYm9pZCwKIAkJCQkJIGVycmhp bnQoIllvdSBzaG91bGQgaW1tZWRpYXRlbHkgcnVuIENSRUFURSBVU0VSIFwiJXNcIiBTVVBF UlVTRVI7LiIsCiAJCQkJCQkJIHVzZXJuYW1lICE9IE5VTEwgPyB1c2VybmFtZSA6ICJwb3N0 Z3JlcyIpKSk7CiAJfQotCWVsc2UgaWYgKElzQmFja2dyb3VuZFdvcmtlcikKKwllbHNlIGlm IChBbUJhY2tncm91bmRXb3JrZXJQcm9jZXNzKCkpCiAJewogCQlpZiAodXNlcm5hbWUgPT0g TlVMTCAmJiAhT2lkSXNWYWxpZCh1c2Vyb2lkKSkKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCA3MGRh NTJhNzg3Ni4uZjdkMDhiMWRhZmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1p bi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC0xNjQsNyArMTY0LDYgQEAg ZG8geyBcCiBleHRlcm4gUEdETExJTVBPUlQgcGlkX3QgUG9zdG1hc3RlclBpZDsKIGV4dGVy biBQR0RMTElNUE9SVCBib29sIElzUG9zdG1hc3RlckVudmlyb25tZW50OwogZXh0ZXJuIFBH RExMSU1QT1JUIGJvb2wgSXNVbmRlclBvc3RtYXN0ZXI7Ci1leHRlcm4gUEdETExJTVBPUlQg Ym9vbCBJc0JhY2tncm91bmRXb3JrZXI7CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBJc0Jp bmFyeVVwZ3JhZGU7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIEV4aXRPbkFueUVycm9y OwpAQCAtMzYxLDcgKzM2MCwxMiBAQCBleHRlcm4gUEdETExJTVBPUlQgQmFja2VuZFR5cGUg TXlCYWNrZW5kVHlwZTsKIAogI2RlZmluZSBGSVJTVF9BVVhfUFJPQyBCX0FSQ0hJVkVSCiAj ZGVmaW5lIE5VTV9BVVhQUk9DVFlQRVMgKEJBQ0tFTkRfTlVNX1RZUEVTIC0gRklSU1RfQVVY X1BST0MpCisjZGVmaW5lIElzQXV4UHJvY2Vzcyh0eXBlKQkJCShNeUJhY2tlbmRUeXBlID49 IEZJUlNUX0FVWF9QUk9DKQogCisjZGVmaW5lIEFtQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2Vz cygpIChNeUJhY2tlbmRUeXBlID09IEJfQVVUT1ZBQ19MQVVOQ0hFUikKKyNkZWZpbmUgQW1B dXRvVmFjdXVtV29ya2VyUHJvY2VzcygpCShNeUJhY2tlbmRUeXBlID09IEJfQVVUT1ZBQ19X T1JLRVIpCisjZGVmaW5lIEFtQmFja2dyb3VuZFdvcmtlclByb2Nlc3MoKSAoTXlCYWNrZW5k VHlwZSA9PSBCX0JHX1dPUktFUikKKyNkZWZpbmUgQW1XYWxTZW5kZXJQcm9jZXNzKCkgICAg ICAgIChNeUJhY2tlbmRUeXBlID09IEJfV0FMX1NFTkRFUikKICNkZWZpbmUgQW1TdGFydHVw UHJvY2VzcygpCQkJKE15QmFja2VuZFR5cGUgPT0gQl9TVEFSVFVQKQogI2RlZmluZSBBbUJh Y2tncm91bmRXcml0ZXJQcm9jZXNzKCkgKE15QmFja2VuZFR5cGUgPT0gQl9CR19XUklURVIp CiAjZGVmaW5lIEFtQXJjaGl2ZXJQcm9jZXNzKCkJCQkoTXlCYWNrZW5kVHlwZSA9PSBCX0FS Q0hJVkVSKQpAQCAtMzcwLDggKzM3NCw2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBCYWNrZW5k VHlwZSBNeUJhY2tlbmRUeXBlOwogI2RlZmluZSBBbVdhbFJlY2VpdmVyUHJvY2VzcygpCQko TXlCYWNrZW5kVHlwZSA9PSBCX1dBTF9SRUNFSVZFUikKICNkZWZpbmUgQW1XYWxTdW1tYXJp emVyUHJvY2VzcygpCShNeUJhY2tlbmRUeXBlID09IEJfV0FMX1NVTU1BUklaRVIpCiAKLSNk ZWZpbmUgSXNBdXhQcm9jZXNzKHR5cGUpCQkJKE15QmFja2VuZFR5cGUgPj0gRklSU1RfQVVY X1BST0MpCi0KIGV4dGVybiBjb25zdCBjaGFyICpHZXRCYWNrZW5kVHlwZURlc2MoQmFja2Vu ZFR5cGUgYmFja2VuZFR5cGUpOwogCiBleHRlcm4gdm9pZCBTZXREYXRhYmFzZVBhdGgoY29u c3QgY2hhciAqcGF0aCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oCmluZGV4 IDE5OTRhZWRlZjAzLi44MGNmNGNkZDk2OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRv dmFjdXVtLmgKQEAgLTQ5LDExICs0OSw2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgTG9n X2F1dG92YWN1dW1fbWluX2R1cmF0aW9uOwogCiAvKiBTdGF0dXMgaW5xdWlyeSBmdW5jdGlv bnMgKi8KIGV4dGVybiBib29sIEF1dG9WYWN1dW1pbmdBY3RpdmUodm9pZCk7Ci1leHRlcm4g Ym9vbCBJc0F1dG9WYWN1dW1MYXVuY2hlclByb2Nlc3Modm9pZCk7Ci1leHRlcm4gYm9vbCBJ c0F1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKHZvaWQpOwotCi0jZGVmaW5lIElzQW55QXV0b1Zh Y3V1bVByb2Nlc3MoKSBcCi0JKElzQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2VzcygpIHx8IElz QXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKIAogLyogRnVuY3Rpb25zIHRvIHN0YXJ0IGF1 dG92YWN1dW0gcHJvY2VzcywgY2FsbGVkIGZyb20gcG9zdG1hc3RlciAqLwogZXh0ZXJuIHZv aWQgYXV0b3ZhY19pbml0KHZvaWQpOwotLSAKMi4zOS4yCgo= --------------DQuOZZJflgkCC0VYNn04mSi3--