Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mwwfi-0000Be-R7 for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Dec 2021 01:32:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mwwfg-0008RR-V3 for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Dec 2021 01:32:00 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mwwff-0008RA-F5 for pgsql-hackers@lists.postgresql.org; Tue, 14 Dec 2021 01:32:00 +0000 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1mwwfW-0001b0-4s for pgsql-hackers@lists.postgresql.org; Tue, 14 Dec 2021 01:31:57 +0000 Received: by mail-ed1-x52c.google.com with SMTP id o20so58349258eds.10 for ; Mon, 13 Dec 2021 17:31:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=message-id:date:mime-version:user-agent:subject:content-language:to :cc:references:from:in-reply-to; bh=deWsCSzgvRqx1+X0wwViEU7e367uHfabZpiVjwBjrt4=; b=CCeOvd3MFqI60jBNdcfHuCqzvZAX/UAzgObr+yefZR1pQ3Kf/3ciFjMSlHe3PwLZ3Q 0SKlx038ctDeTSrfMj0QNEcZALFozZNQSQR2xRDT2NUFJeUl1sN7fGDIudefUHmE99ak hdFq+N0v3IBFVUYBIOndClaZz6aAB5ScdDsp6N87XJaDYgCGJgwbLrtmDxNoavJU3nUI iWxr3SbC6J8Juve5WhCKdauqJOMyM/gqMV5X1zwJO0kxews2OGfKfxA5Ngif6VbVZX5r FMFHSajux3CbJ+kv3uMwt0xHR30iKhXax3PaYPkB2Iz7mDBOuJ6XE9K12jpuYtmV9HB8 cXGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:cc:references:from:in-reply-to; bh=deWsCSzgvRqx1+X0wwViEU7e367uHfabZpiVjwBjrt4=; b=4UIfrU9AWZqkVfmxyO45Z/fxHwxdYlSjHFVWcI4XUOdh6pqlBzh9ui9fxCzHudgu9K eluaRt++dN65tHl7g3Oa7I3XKda4DJKdswSlAHt6eKdAyBCidzAIX+9HitaMTio7YcFi dDUJaCvpQkVdEzoliHYjivGXSne/Ep5Ezc0aHf43oYUolukI3gsTdeXlNfcug1aYSey/ /0BB3aye0I94mQEtDuvw8pBsupgzIF0/rql72HlDvXNeY660OZVjSq27qbWsv97j/9m/ jTQkWM8dl+Ltqw2VfvQ7ZPrXYK97zjEPiLqtPajLgACIk1TIT/+s0Z3uIB0JTH2XlKGa cD/Q== X-Gm-Message-State: AOAM5315941h6vARlBzEaPtXx0mbJent4tyfQgXUijBgJtVfY8Amz/sk FSgdjRKlevDYv0jFaKYUusGJlxoIVawY5uSn12WRVWG3s/oTEfFfuOH4Avv1ZILprATlUuXFku1 A7oB3XSOJ5X0ygGyOvnHrczv8VYK4+9ptkyJlDoSptrNmXyvGLhv/S0LB2Zu14UzcaGzAEcfPTo /P/VQC3tg4a9NZ5l1xmjs8Crh6YRJve2Zdl4QMRsM3ZWz4dHZGMZ3rxAL7sb+0 X-Google-Smtp-Source: ABdhPJw4C3S+pY8vG6YUHd/KzqGGj+dWV4J1JgoC9l8Tq54UDmM3FOaC6eaXz6k1od3ELvkUBf+bXg== X-Received: by 2002:a05:6402:2210:: with SMTP id cq16mr3489989edb.32.1639445507830; Mon, 13 Dec 2021 17:31:47 -0800 (PST) Received: from [10.137.0.19] (ip-86-49-251-241.net.upcbroadband.cz. [86.49.251.241]) by smtp.gmail.com with ESMTPSA id hu7sm6209657ejc.62.2021.12.13.17.31.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 13 Dec 2021 17:31:47 -0800 (PST) Content-Type: multipart/mixed; boundary="------------G7eZZrvWqjxk09Bi4Hg0i1nm" Message-ID: Date: Tue, 14 Dec 2021 02:31:45 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Subject: Re: logical decoding and replication of sequences Content-Language: en-US To: Peter Eisentraut Cc: PostgreSQL Hackers , Petr Jelinek References: <377c6fda-c3eb-7a69-e981-c77ae459c5db@enterprisedb.com> <5105c3ad-d726-fc22-1d09-514b6852a15e@enterprisedb.com> <3005299b-267d-8e4a-68a3-abdad3e96aba@enterprisedb.com> <3d6df331-5532-6848-eb45-344b265e0238@enterprisedb.com> <482c10c1-b110-819f-b0e7-17549fa2f0dc@enterprisedb.com> <12a9ecd6-4edb-a367-33da-4e2d03b0aace@enterprisedb.com> <2cd38bab-c874-8e0b-98e7-d9abaaf9806a@enterprisedb.com> <118b249f-e4ef-2faf-8e25-dd25236dc964@enterprisedb.com> From: Tomas Vondra In-Reply-To: X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 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. --------------G7eZZrvWqjxk09Bi4Hg0i1nm Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, here's an updated version of the patches, dealing with almost all of the issues (at least in the 0001 and 0002 parts). The main changes: 1) I've removed the 'created' flag from fill_seq_with_data, as discussed. I don't think it's needed by any of the parts (not even 0003, AFAICS). We still need it in xl_seq_rec, though. 2) GetCurrentTransactionId() added to sequence.c are called only with wal_level=logical, to minimize the overhead. There's still one remaining problem, that I already explained in [1]. The problem is that with this: BEGIN; SELECT nextval('s') FROM generate_series(1,100); ROLLBACK; The root cause is that pg_current_wal_lsn() uses the LogwrtResult.Write, which is updated by XLogFlush() - but only in RecordTransactionCommit. Which makes sense, because only the committed stuff is "visible". But the non-transactional behavior of sequence decoding disagrees with this, because now some of the changes from aborted transactions may be replicated. Which means the wait_for_catchup() ends up not waiting for the sequence change to be replicated. This is an issue for tests in patch 0003, at least. My concern is this actually affects other places waiting for things getting replicated :-/ I have outlined some ideas how to deal with this in [1], but we got sidetracked by exploring the alternative approach. regards [1] https://www.postgresql.org/message-id/3d6df331-5532-6848-eb45-344b265e0238%40enterprisedb.com -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------G7eZZrvWqjxk09Bi4Hg0i1nm Content-Type: text/x-patch; charset=UTF-8; name="0003-Add-support-for-decoding-sequences-to-built-20211214.patch" Content-Disposition: attachment; filename*0="0003-Add-support-for-decoding-sequences-to-built-20211214.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyNzUyMmU2ODdiY2E3YzA2NzYxMTM0M2U0ZDIyZjU3ZGVlYjlkMDNjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogVHVlLCAxNCBEZWMgMjAyMSAwMDoyOTowOSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMy8zXSBBZGQgc3VwcG9ydCBmb3IgZGVjb2Rpbmcgc2VxdWVuY2VzIHRvIGJ1aWx0 LWluCiByZXBsaWNhdGlvbgoKLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAg ICAgICAgICAgICAgIHwgIDcxICsrKysKIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGlj YXRpb24uc2dtbCAgICAgfCAgMjQgKy0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2Ny aXB0aW9uLnNnbWwgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uYyAgICAgICAgfCAxNDkgKysrKysrKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwgICAgICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jICAgICAgfCAzNTAgKysrKysrKysrKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgICAgICAgICAgfCAgNzkgKysrKysKIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgfCAyNzIgKysrKysr KysrKysrKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyAgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICB8 ICAzMiArKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICB8 ICA1MiArKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMg fCAxMTggKysrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YyAgICB8ICA2MCArKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jIHwgIDg1ICsrKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j ICAgICAgICAgIHwgICA0ICstCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgICAgICAg ICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAg ICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24u aCAgICAgICAgfCAgMTQgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaCAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAg ICAgICAgIHwgICA2ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5o ICAgICAgfCAgMTkgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggICAg ICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAg ICAgICB8ICAgOCArCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjdfc2VxdWVuY2VzLnBs ICAgIHwgMTk2ICsrKysrKysrKysrCiAyNiBmaWxlcyBjaGFuZ2VkLCAxNTM4IGluc2VydGlv bnMoKyksIDMyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyN19zZXF1ZW5jZXMucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDAz ZTI1MzdiMDdkLi4wZGZlYjM2ZjAzZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFs b2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTk1MTQsNiAr OTUxNCwxMSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNv dW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPGVudHJ5PnBy ZXBhcmVkIHRyYW5zYWN0aW9uczwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnk+PGxpbmsgbGlua2VuZD0idmlldy1wZy1wdWJsaWNhdGlvbi1zZXF1 ZW5jZXMiPjxzdHJ1Y3RuYW1lPnBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczwvc3RydWN0bmFt ZT48L2xpbms+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5wdWJsaWNhdGlvbnMgYW5kIHRoZWly IGFzc29jaWF0ZWQgc2VxdWVuY2VzPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJv dz4KICAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJ2aWV3LXBnLXB1YmxpY2F0aW9uLXRh YmxlcyI+PHN0cnVjdG5hbWU+cGdfcHVibGljYXRpb25fdGFibGVzPC9zdHJ1Y3RuYW1lPjwv bGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5PnB1YmxpY2F0aW9ucyBhbmQgdGhlaXIgYXNz b2NpYXRlZCB0YWJsZXM8L2VudHJ5PgpAQCAtMTEzNDksNiArMTEzNTQsNzIgQEAgU0VMRUNU ICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMgcHB4CiAK ICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJ2aWV3LXBnLXB1YmxpY2F0aW9uLXNlcXVlbmNl cyI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM8L3N0 cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9InZpZXctcGctcHVibGlj YXRpb24tc2VxdWVuY2VzIj4KKyAgIDxwcmltYXJ5PnBnX3B1YmxpY2F0aW9uX3NlcXVlbmNl czwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBUaGUgdmlldyA8 c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM8L3N0cnVjdG5hbWU+IHByb3Zp ZGVzCisgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbWFwcGluZyBiZXR3ZWVuIHB1YmxpY2F0 aW9ucyBhbmQgdGhlIHNlcXVlbmNlcyB0aGV5CisgICBjb250YWluLiAgVW5saWtlIHRoZSB1 bmRlcmx5aW5nIGNhdGFsb2cKKyAgIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcHVibGlj YXRpb24tcmVsIj48c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlvbl9yZWw8L3N0cnVjdG5hbWU+ PC9saW5rPiwKKyAgIHRoaXMgdmlldyBleHBhbmRzCisgICBwdWJsaWNhdGlvbnMgZGVmaW5l ZCBhcyA8bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4sIHNvIGZvciBzdWNo CisgICBwdWJsaWNhdGlvbnMgdGhlcmUgd2lsbCBiZSBhIHJvdyBmb3IgZWFjaCBlbGlnaWJs ZSBzZXF1ZW5jZS4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0 bmFtZT5wZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3Rp dGxlPgorICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8L3BhcmE+Cisg ICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wdWJuYW1lPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGluayBs aW5rZW5kPSJjYXRhbG9nLXBnLXB1YmxpY2F0aW9uIj48c3RydWN0bmFtZT5wZ19wdWJsaWNh dGlvbjwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5wdWJuYW1lPC9zdHJ1Y3Rm aWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHB1 YmxpY2F0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnNjaGVtYW5h bWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90eXBlPgorICAgICAgIChyZWZlcmVuY2Vz IDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctbmFtZXNwYWNlIj48c3RydWN0bmFtZT5wZ19u YW1lc3BhY2U8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+bnNwbmFtZTwvc3Ry dWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBv ZiBzY2hlbWEgY29udGFpbmluZyBzZXF1ZW5jZQorICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD5zZXF1ZW5jZW5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90eXBl PgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctY2xhc3Mi PjxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxk PnJlbG5hbWU8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgIE5hbWUgb2Ygc2VxdWVuY2UKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0 MT4KKwogIDxzZWN0MSBpZD0idmlldy1wZy1wdWJsaWNhdGlvbi10YWJsZXMiPgogICA8dGl0 bGU+PHN0cnVjdG5hbWU+cGdfcHVibGljYXRpb25fdGFibGVzPC9zdHJ1Y3RuYW1lPjwvdGl0 bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24u c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAppbmRleCBi YjRlZjVlNWUyMi4uNGQxNjZhZDNmOWMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1 YmxpY2F0aW9uLnNnbWwKQEAgLTMxLDcgKzMxLDkgQEAgQUxURVIgUFVCTElDQVRJT04gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUg VE8gPHIKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1 YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAog ICAgIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJs ZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWywgLi4uIF0KKyAgICBTRVFVRU5DRSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2VxdWVuY2VfbmFtZTwvcmVwbGFjZWFibGU+ IFsgKiBdIFssIC4uLiBdCiAgICAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgeyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxlPiB8IENVUlJF TlRfU0NIRU1BIH0gWywgLi4uIF0KKyAgICBBTEwgU0VRVUVOQ0UgSU4gU0NIRU1BIHsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4g fCBDVVJSRU5UX1NDSEVNQSB9IFssIC4uLiBdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3Bz aXNkaXY+CiAKQEAgLTU2LDcgKzU4LDE4IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxy CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIFRoZSBmb3VydGggdmFyaWFudCBvZiB0aGlz IGNvbW1hbmQgbGlzdGVkIGluIHRoZSBzeW5vcHNpcyBjYW4gY2hhbmdlCisgICBUaGUgbmV4 dCB0aHJlZSB2YXJpYW50cyBjaGFuZ2Ugd2hpY2ggc2VxdWVuY2VzIGFyZSBwYXJ0IG9mIHRo ZSBwdWJsaWNhdGlvbi4KKyAgIFRoZSA8bGl0ZXJhbD5TRVQgU0VRVUVOQ0U8L2xpdGVyYWw+ IGNsYXVzZSB3aWxsIHJlcGxhY2UgdGhlIGxpc3Qgb2Ygc2VxdWVuY2VzCisgICBpbiB0aGUg cHVibGljYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIG9uZS4gIFRoZSA8bGl0ZXJhbD5BREQg U0VRVUVOQ0U8L2xpdGVyYWw+CisgICBhbmQgPGxpdGVyYWw+RFJPUCBTRVFVRU5DRTwvbGl0 ZXJhbD4gY2xhdXNlcyB3aWxsIGFkZCBhbmQgcmVtb3ZlIG9uZSBvciBtb3JlCisgICBzZXF1 ZW5jZXMgZnJvbSB0aGUgcHVibGljYXRpb24uICBOb3RlIHRoYXQgYWRkaW5nIHNlcXVlbmNl cyB0byBhIHB1YmxpY2F0aW9uCisgICB0aGF0IGlzIGFscmVhZHkgc3Vic2NyaWJlZCB0byB3 aWxsIHJlcXVpcmUgYSA8bGl0ZXJhbD5BTFRFUiBTVUJTQ1JJUFRJT04KKyAgIC4uLiBSRUZS RVNIIFBVQkxJQ0FUSU9OPC9saXRlcmFsPiBhY3Rpb24gb24gdGhlIHN1YnNjcmliaW5nIHNp ZGUgaW4gb3JkZXIKKyAgIHRvIGJlY29tZSBlZmZlY3RpdmUuCisgIDwvcGFyYT4KKworICA8 cGFyYT4KKyAgIFRoZSBzZXZlbnRoIHZhcmlhbnQgb2YgdGhpcyBjb21tYW5kIGxpc3RlZCBp biB0aGUgc3lub3BzaXMgY2FuIGNoYW5nZQogICAgYWxsIG9mIHRoZSBwdWJsaWNhdGlvbiBw cm9wZXJ0aWVzIHNwZWNpZmllZCBpbgogICAgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXB1 YmxpY2F0aW9uIi8+LiAgUHJvcGVydGllcyBub3QgbWVudGlvbmVkIGluIHRoZQogICAgY29t bWFuZCByZXRhaW4gdGhlaXIgcHJldmlvdXMgc2V0dGluZ3MuCkBAIC0xMjMsNiArMTM2LDE1 IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u YW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgICAgPC9saXN0aXRlbT4KICAgIDwv dmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXF1ZW5jZV9uYW1lPC9yZXBsYWNlYWJsZT48L3Rl cm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIE5hbWUgb2YgYW4gZXhp c3Rpbmcgc2VxdWVuY2UuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+ U0VUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3BhcmFt ZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52 YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApPC9saXRlcmFsPjwvdGVybT4KICAgICA8 bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlw dGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbApp bmRleCAwYjAyN2NjMzQ2Mi4uOGYyOGNmMDNmNDAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl9zdWJzY3JpcHRpb24uc2dtbApAQCAtMTQ3LDcgKzE0Nyw3IEBAIEFMVEVSIFNVQlND UklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+IFJFTkFNRSBUTyA8CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIEZl dGNoIG1pc3NpbmcgdGFibGUgaW5mb3JtYXRpb24gZnJvbSBwdWJsaXNoZXIuICBUaGlzIHdp bGwgc3RhcnQKLSAgICAgIHJlcGxpY2F0aW9uIG9mIHRhYmxlcyB0aGF0IHdlcmUgYWRkZWQg dG8gdGhlIHN1YnNjcmliZWQtdG8gcHVibGljYXRpb25zCisgICAgICByZXBsaWNhdGlvbiBv ZiB0YWJsZXMgYW5kIHNlcXVlbmNlcyB0aGF0IHdlcmUgYWRkZWQgdG8gdGhlIHN1YnNjcmli ZWQtdG8gcHVibGljYXRpb25zCiAgICAgICBzaW5jZSA8Y29tbWFuZD5DUkVBVEUgU1VCU0NS SVBUSU9OPC9jb21tYW5kPiBvcgogICAgICAgdGhlIGxhc3QgaW52b2NhdGlvbiBvZiA8Y29t bWFuZD5SRUZSRVNIIFBVQkxJQ0FUSU9OPC9jb21tYW5kPi4KICAgICAgPC9wYXJhPgpAQCAt MTY0LDcgKzE2NCw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8CiAgICAgICAgICAg U3BlY2lmaWVzIHdoZXRoZXIgdG8gY29weSBwcmUtZXhpc3RpbmcgZGF0YSBpbiB0aGUgcHVi bGljYXRpb25zCiAgICAgICAgICAgdGhhdCBhcmUgYmVpbmcgc3Vic2NyaWJlZCB0byB3aGVu IHRoZSByZXBsaWNhdGlvbiBzdGFydHMuCiAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxp dGVyYWw+dHJ1ZTwvbGl0ZXJhbD4uICAoUHJldmlvdXNseS1zdWJzY3JpYmVkCi0gICAgICAg ICAgdGFibGVzIGFyZSBub3QgY29waWVkLikKKyAgICAgICAgICB0YWJsZXMgYW5kIHNlcXVl bmNlcyBhcmUgbm90IGNvcGllZC4pCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlz dGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmMKaW5kZXggNjJmMTBiY2JkMjguLjY4NDRhYzYxODk3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC01NCw3ICs1NCw4IEBAIGNoZWNrX3B1 YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihSZWxhdGlvbiB0YXJnZXRyZWwpCiB7CiAJLyogTXVz dCBiZSBhIHJlZ3VsYXIgb3IgcGFydGl0aW9uZWQgdGFibGUgKi8KIAlpZiAoUmVsYXRpb25H ZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTiAmJgotCQlS ZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElP TkVEX1RBQkxFKQorCQlSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2luZCAhPSBS RUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFICYmCisJCVJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRy ZWwpLT5yZWxraW5kICE9IFJFTEtJTkRfU0VRVUVOQ0UpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVy cm1zZygiY2Fubm90IGFkZCByZWxhdGlvbiBcIiVzXCIgdG8gcHVibGljYXRpb24iLApAQCAt MTMxLDcgKzEzMiw4IEBAIHN0YXRpYyBib29sCiBpc19wdWJsaXNoYWJsZV9jbGFzcyhPaWQg cmVsaWQsIEZvcm1fcGdfY2xhc3MgcmVsdHVwbGUpCiB7CiAJcmV0dXJuIChyZWx0dXBsZS0+ cmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8Ci0JCQlyZWx0dXBsZS0+cmVsa2luZCA9 PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSAmJgorCQkJcmVsdHVwbGUtPnJlbGtpbmQg PT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSB8fAorCQkJcmVsdHVwbGUtPnJlbGtpbmQg PT0gUkVMS0lORF9TRVFVRU5DRSkgJiYKIAkJIUlzQ2F0YWxvZ1JlbGF0aW9uT2lkKHJlbGlk KSAmJgogCQlyZWx0dXBsZS0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfUEVS TUFORU5UICYmCiAJCXJlbGlkID49IEZpcnN0Tm9ybWFsT2JqZWN0SWQ7CkBAIC01MDIsNiAr NTA0LDExIEBAIEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRp b25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJy ZWw7CiAKIAkJcHVicmVsID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1Qo dHVwKTsKKworCQkvKiBza2lwIHNlcXVlbmNlcyBoZXJlICovCisJCWlmIChnZXRfcmVsX3Jl bGtpbmQocHVicmVsLT5wcnJlbGlkKSA9PSBSRUxLSU5EX1NFUVVFTkNFKQorCQkJY29udGlu dWU7CisKIAkJcmVzdWx0ID0gR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3Vs dCwgcHViX3BhcnRvcHQsCiAJCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVsaWQpOwogCX0KQEAg LTUxNiw2ICs1MjMsNDkgQEAgR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQ dWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAor LyoKKyAqIEdldHMgbGlzdCBvZiByZWxhdGlvbiBvaWRzIGZvciBhIHB1YmxpY2F0aW9uIChz ZXF1ZW5jZXMgb25seSkuCisgKgorICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGZvciBu b3JtYWwgcHVibGljYXRpb25zLCB0aGUgRk9SIEFMTCBUQUJMRVMKKyAqIHNob3VsZCB1c2Ug R2V0QWxsU2VxdWVuY2VzUHVibGljYXRpb25SZWxhdGlvbnMoKS4KKyAqLworTGlzdCAqCitH ZXRQdWJsaWNhdGlvblNlcXVlbmNlUmVsYXRpb25zKE9pZCBwdWJpZCkKK3sKKwlMaXN0CSAg ICpyZXN1bHQ7CisJUmVsYXRpb24JcHVicmVsc3JlbDsKKwlTY2FuS2V5RGF0YSBzY2Fua2V5 OworCVN5c1NjYW5EZXNjIHNjYW47CisJSGVhcFR1cGxlCXR1cDsKKworCS8qIEZpbmQgYWxs IHB1YmxpY2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbGF0aW9uLiAqLworCXB1YnJl bHNyZWwgPSB0YWJsZV9vcGVuKFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgQWNjZXNzU2hh cmVMb2NrKTsKKworCVNjYW5LZXlJbml0KCZzY2Fua2V5LAorCQkJCUFudW1fcGdfcHVibGlj YXRpb25fcmVsX3BycHViaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVR LAorCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKKworCXNjYW4gPSBzeXN0YWJsZV9i ZWdpbnNjYW4ocHVicmVsc3JlbCwgUHVibGljYXRpb25SZWxQcnJlbGlkUHJwdWJpZEluZGV4 SWQsCisJCQkJCQkJICB0cnVlLCBOVUxMLCAxLCAmc2NhbmtleSk7CisKKwlyZXN1bHQgPSBO SUw7CisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwID0gc3lzdGFibGVfZ2V0bmV4dChz Y2FuKSkpCisJeworCQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJyZWw7CisKKwkJcHVi cmVsID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKworCQlp ZiAoZ2V0X3JlbF9yZWxraW5kKHB1YnJlbC0+cHJyZWxpZCkgPT0gUkVMS0lORF9TRVFVRU5D RSkKKwkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcHVicmVsLT5wcnJlbGlkKTsK Kwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKHB1YnJlbHNy ZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgogICog R2V0cyBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgZm9yIHB1YmxpY2F0aW9ucyBtYXJrZWQg YXMgRk9SIEFMTCBUQUJMRVMuCiAgKi8KQEAgLTc2MSw2ICs4MTEsNDYgQEAgR2V0QWxsU2No ZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQg cHViX3BhcnRvcHQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIEdldHMgbGlzdCBv ZiBhbGwgcmVsYXRpb24gcHVibGlzaGVkIGJ5IEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9u KHMpLgorICoKKyAqIElmIHRoZSBwdWJsaWNhdGlvbiBwdWJsaXNoZXMgcGFydGl0aW9uIGNo YW5nZXMgdmlhIHRoZWlyIHJlc3BlY3RpdmUgcm9vdAorICogcGFydGl0aW9uZWQgdGFibGVz LCB3ZSBtdXN0IGV4Y2x1ZGUgcGFydGl0aW9ucyBpbiBmYXZvciBvZiBpbmNsdWRpbmcgdGhl CisgKiByb290IHBhcnRpdGlvbmVkIHRhYmxlcy4KKyAqLworTGlzdCAqCitHZXRBbGxTZXF1 ZW5jZXNQdWJsaWNhdGlvblJlbGF0aW9ucyh2b2lkKQoreworCVJlbGF0aW9uCWNsYXNzUmVs OworCVNjYW5LZXlEYXRhIGtleVsxXTsKKwlUYWJsZVNjYW5EZXNjIHNjYW47CisJSGVhcFR1 cGxlCXR1cGxlOworCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKKworCWNsYXNzUmVsID0gdGFi bGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2Fu S2V5SW5pdCgma2V5WzBdLAorCQkJCUFudW1fcGdfY2xhc3NfcmVsa2luZCwKKwkJCQlCVEVx dWFsU3RyYXRlZ3lOdW1iZXIsIEZfQ0hBUkVRLAorCQkJCUNoYXJHZXREYXR1bShSRUxLSU5E X1NFUVVFTkNFKSk7CisKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuX2NhdGFsb2coY2xhc3NS ZWwsIDEsIGtleSk7CisKKwl3aGlsZSAoKHR1cGxlID0gaGVhcF9nZXRuZXh0KHNjYW4sIEZv cndhcmRTY2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkKKwl7CisJCUZvcm1fcGdfY2xhc3MgcmVs Rm9ybSA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVwbGUpOworCQlPaWQJCQlyZWxp ZCA9IHJlbEZvcm0tPm9pZDsKKworCQlpZiAoaXNfcHVibGlzaGFibGVfY2xhc3MocmVsaWQs IHJlbEZvcm0pKQorCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CisJ fQorCisJdGFibGVfZW5kc2NhbihzY2FuKTsKKworCXRhYmxlX2Nsb3NlKGNsYXNzUmVsLCBB Y2Nlc3NTaGFyZUxvY2spOworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBHZXQgcHVi bGljYXRpb24gdXNpbmcgb2lkCiAgKgpAQCAtNzgzLDEwICs4NzMsMTIgQEAgR2V0UHVibGlj YXRpb24oT2lkIHB1YmlkKQogCXB1Yi0+b2lkID0gcHViaWQ7CiAJcHViLT5uYW1lID0gcHN0 cmR1cChOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKTsKIAlwdWItPmFsbHRhYmxlcyA9IHB1 YmZvcm0tPnB1YmFsbHRhYmxlczsKKwlwdWItPmFsbHNlcXVlbmNlcyA9IHB1YmZvcm0tPnB1 YmFsbHNlcXVlbmNlczsKIAlwdWItPnB1YmFjdGlvbnMucHViaW5zZXJ0ID0gcHViZm9ybS0+ cHViaW5zZXJ0OwogCXB1Yi0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPSBwdWJmb3JtLT5wdWJ1 cGRhdGU7CiAJcHViLT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IHB1YmZvcm0tPnB1YmRlbGV0 ZTsKIAlwdWItPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBwdWJmb3JtLT5wdWJ0cnVuY2F0 ZTsKKwlwdWItPnB1YmFjdGlvbnMucHVic2VxdWVuY2UgPSBwdWJmb3JtLT5wdWJzZXF1ZW5j ZTsKIAlwdWItPnB1YnZpYXJvb3QgPSBwdWJmb3JtLT5wdWJ2aWFyb290OwogCiAJUmVsZWFz ZVN5c0NhY2hlKHR1cCk7CkBAIC05MzYsMyArMTAyOCw1NiBAQCBwZ19nZXRfcHVibGljYXRp b25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0 eCk7CiB9CisKKy8qCisgKiBSZXR1cm5zIE9pZHMgb2Ygc2VxdWVuY2VzIGluIGEgcHVibGlj YXRpb24uCisgKi8KK0RhdHVtCitwZ19nZXRfcHVibGljYXRpb25fc2VxdWVuY2VzKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJRnVuY0NhbGxDb250ZXh0ICpmdW5jY3R4OworCWNoYXIJICAg KnB1Ym5hbWUgPSB0ZXh0X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCVB1 YmxpY2F0aW9uICpwdWJsaWNhdGlvbjsKKwlMaXN0CSAgICpzZXF1ZW5jZXM7CisKKwkvKiBz dHVmZiBkb25lIG9ubHkgb24gdGhlIGZpcnN0IGNhbGwgb2YgdGhlIGZ1bmN0aW9uICovCisJ aWYgKFNSRl9JU19GSVJTVENBTEwoKSkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY29udGV4 dDsKKworCQkvKiBjcmVhdGUgYSBmdW5jdGlvbiBjb250ZXh0IGZvciBjcm9zcy1jYWxsIHBl cnNpc3RlbmNlICovCisJCWZ1bmNjdHggPSBTUkZfRklSU1RDQUxMX0lOSVQoKTsKKworCQkv KiBzd2l0Y2ggdG8gbWVtb3J5IGNvbnRleHQgYXBwcm9wcmlhdGUgZm9yIG11bHRpcGxlIGZ1 bmN0aW9uIGNhbGxzICovCisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8o ZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKKworCQlwdWJsaWNhdGlvbiA9IEdl dFB1YmxpY2F0aW9uQnlOYW1lKHB1Ym5hbWUsIGZhbHNlKTsKKworCQkvKgorCQkgKiBQdWJs aWNhdGlvbnMgc3VwcG9ydCBwYXJ0aXRpb25lZCB0YWJsZXMsIGFsdGhvdWdoIGFsbCBjaGFu Z2VzIGFyZQorCQkgKiByZXBsaWNhdGVkIHVzaW5nIGxlYWYgcGFydGl0aW9uIGlkZW50aXR5 IGFuZCBzY2hlbWEsIHNvIHdlIG9ubHkKKwkJICogbmVlZCB0aG9zZS4KKwkJICovCisJCWlm IChwdWJsaWNhdGlvbi0+YWxsc2VxdWVuY2VzKQorCQkJc2VxdWVuY2VzID0gR2V0QWxsU2Vx dWVuY2VzUHVibGljYXRpb25SZWxhdGlvbnMoKTsKKwkJZWxzZQorCQkJc2VxdWVuY2VzID0g R2V0UHVibGljYXRpb25TZXF1ZW5jZVJlbGF0aW9ucyhwdWJsaWNhdGlvbi0+b2lkKTsKKwor CQlmdW5jY3R4LT51c2VyX2ZjdHggPSAodm9pZCAqKSBzZXF1ZW5jZXM7CisKKwkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCX0KKworCS8qIHN0dWZmIGRvbmUgb24g ZXZlcnkgY2FsbCBvZiB0aGUgZnVuY3Rpb24gKi8KKwlmdW5jY3R4ID0gU1JGX1BFUkNBTExf U0VUVVAoKTsKKwlzZXF1ZW5jZXMgPSAoTGlzdCAqKSBmdW5jY3R4LT51c2VyX2ZjdHg7CisK KwlpZiAoZnVuY2N0eC0+Y2FsbF9jbnRyIDwgbGlzdF9sZW5ndGgoc2VxdWVuY2VzKSkKKwl7 CisJCU9pZAkJCXJlbGlkID0gbGlzdF9udGhfb2lkKHNlcXVlbmNlcywgZnVuY2N0eC0+Y2Fs bF9jbnRyKTsKKworCQlTUkZfUkVUVVJOX05FWFQoZnVuY2N0eCwgT2JqZWN0SWRHZXREYXR1 bShyZWxpZCkpOworCX0KKworCVNSRl9SRVRVUk5fRE9ORShmdW5jY3R4KTsKK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA2MWI1MTVjZGI4NS4uMGRmOTFk N2E1YWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTM3Miw2 ICszNzIsMTYgQEAgQ1JFQVRFIFZJRVcgcGdfcHVibGljYXRpb25fdGFibGVzIEFTCiAgICAg ICAgICBwZ19jbGFzcyBDIEpPSU4gcGdfbmFtZXNwYWNlIE4gT04gKE4ub2lkID0gQy5yZWxu YW1lc3BhY2UpCiAgICAgV0hFUkUgQy5vaWQgPSBHUFQucmVsaWQ7CiAKK0NSRUFURSBWSUVX IHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlcyBBUworICAgIFNFTEVDVAorICAgICAgICBQLnB1 Ym5hbWUgQVMgcHVibmFtZSwKKyAgICAgICAgTi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCisg ICAgICAgIEMucmVsbmFtZSBBUyBzZXF1ZW5jZW5hbWUKKyAgICBGUk9NIHBnX3B1YmxpY2F0 aW9uIFAsCisgICAgICAgICBMQVRFUkFMIHBnX2dldF9wdWJsaWNhdGlvbl9zZXF1ZW5jZXMo UC5wdWJuYW1lKSBHUFQsCisgICAgICAgICBwZ19jbGFzcyBDIEpPSU4gcGdfbmFtZXNwYWNl IE4gT04gKE4ub2lkID0gQy5yZWxuYW1lc3BhY2UpCisgICAgV0hFUkUgQy5vaWQgPSBHUFQu cmVsaWQ7CisKIENSRUFURSBWSUVXIHBnX2xvY2tzIEFTCiAgICAgU0VMRUNUICogRlJPTSBw Z19sb2NrX3N0YXR1cygpIEFTIEw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRp b25jbWRzLmMKaW5kZXggNDA0YmI1ZDBjODcuLjJjMTgzZDYzZjdkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5j bHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5o IgorI2luY2x1ZGUgImFjY2Vzcy9yZWxhdGlvbi5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJs ZS5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9jYXRh bG9nLmgiCkBAIC01OSw2ICs2MCwxMiBAQCBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFNj aGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIGlmX25vdF9leGlzdHMsCiAJ CQkJCQkJCSAgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwogc3RhdGljIHZvaWQgUHVi bGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlz c2luZ19vayk7CiAKK3N0YXRpYyBMaXN0ICpPcGVuU2VxdWVuY2VMaXN0KExpc3QgKnNlcXVl bmNlcyk7CitzdGF0aWMgdm9pZCBDbG9zZVNlcXVlbmNlTGlzdChMaXN0ICpyZWxzKTsKK3N0 YXRpYyB2b2lkIFB1YmxpY2F0aW9uQWRkU2VxdWVuY2VzKE9pZCBwdWJpZCwgTGlzdCAqcmVs cywgYm9vbCBpZl9ub3RfZXhpc3RzLAorCQkJCQkJCQkgQWx0ZXJQdWJsaWNhdGlvblN0bXQg KnN0bXQpOworc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wU2VxdWVuY2VzKE9pZCBwdWJp ZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKTsKKwogc3RhdGljIHZvaWQKIHBhcnNl X3B1YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICBMaXN0 ICpvcHRpb25zLApAQCAtNzcsNiArODQsNyBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25z KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlwdWJhY3Rpb25zLT5wdWJ1cGRhdGUgPSB0cnVlOwog CXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSA9IHRydWU7CiAJcHViYWN0aW9ucy0+cHVidHJ1bmNh dGUgPSB0cnVlOworCXB1YmFjdGlvbnMtPnB1YnNlcXVlbmNlID0gdHJ1ZTsKIAkqcHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZTsKIAogCS8qIFBhcnNlIG9wdGlvbnMgKi8K QEAgLTEwMSw2ICsxMDksNyBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJCXB1YmFjdGlvbnMtPnB1YnVwZGF0ZSA9IGZhbHNlOwogCQkJcHVi YWN0aW9ucy0+cHViZGVsZXRlID0gZmFsc2U7CiAJCQlwdWJhY3Rpb25zLT5wdWJ0cnVuY2F0 ZSA9IGZhbHNlOworCQkJcHViYWN0aW9ucy0+cHVic2VxdWVuY2UgPSBmYWxzZTsKIAogCQkJ KnB1Ymxpc2hfZ2l2ZW4gPSB0cnVlOwogCQkJcHVibGlzaCA9IGRlZkdldFN0cmluZyhkZWZl bCk7CkBAIC0xMjMsNiArMTMyLDggQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSA9IHRydWU7CiAJ CQkJZWxzZSBpZiAoc3RyY21wKHB1Ymxpc2hfb3B0LCAidHJ1bmNhdGUiKSA9PSAwKQogCQkJ CQlwdWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSA9IHRydWU7CisJCQkJZWxzZSBpZiAoc3RyY21w KHB1Ymxpc2hfb3B0LCAic2VxdWVuY2UiKSA9PSAwKQorCQkJCQlwdWJhY3Rpb25zLT5wdWJz ZXF1ZW5jZSA9IHRydWU7CiAJCQkJZWxzZQogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTE0OSw3ICsxNjAsOSBAQCBw YXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKICAqLwogc3Rh dGljIHZvaWQKIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNf bGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJICAgTGlzdCAqKnJlbHMsIExpc3Qg KipzY2hlbWFzKQorCQkJCQkJICAgTGlzdCAqKnRhYmxlcywgTGlzdCAqKnNlcXVlbmNlcywK KwkJCQkJCSAgIExpc3QgKip0YWJsZXNfc2NoZW1hcywgTGlzdCAqKnNlcXVlbmNlc19zY2hl bWFzLAorCQkJCQkJICAgTGlzdCAqKnNjaGVtYXMpCiB7CiAJTGlzdENlbGwgICAqY2VsbDsK IAlQdWJsaWNhdGlvbk9ialNwZWMgKnB1Ym9iajsKQEAgLTE2NywxMiArMTgwLDIzIEBAIE9i amVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VT dGF0ZSAqcHN0YXRlLAogCQlzd2l0Y2ggKHB1Ym9iai0+cHVib2JqdHlwZSkKIAkJewogCQkJ Y2FzZSBQVUJMSUNBVElPTk9CSl9UQUJMRToKLQkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMs IHB1Ym9iai0+cHVidGFibGUpOworCQkJCSp0YWJsZXMgPSBsYXBwZW5kKCp0YWJsZXMsIHB1 Ym9iai0+cHVidGFibGUpOworCQkJCWJyZWFrOworCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9T RVFVRU5DRToKKwkJCQkqc2VxdWVuY2VzID0gbGFwcGVuZCgqc2VxdWVuY2VzLCBwdWJvYmot PnB1YnRhYmxlKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEVf SU5fU0NIRU1BOgogCQkJCXNjaGVtYWlkID0gZ2V0X25hbWVzcGFjZV9vaWQocHVib2JqLT5u YW1lLCBmYWxzZSk7CiAKIAkJCQkvKiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNlciBz cGVjaWZpZXMgInNjaDEsIHNjaDEiICovCisJCQkJKnRhYmxlc19zY2hlbWFzID0gbGlzdF9h cHBlbmRfdW5pcXVlX29pZCgqdGFibGVzX3NjaGVtYXMsIHNjaGVtYWlkKTsKKwkJCQkqc2No ZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNjaGVtYXMsIHNjaGVtYWlkKTsKKwkJ CQlicmVhazsKKwkJCWNhc2UgUFVCTElDQVRJT05PQkpfU0VRVUVOQ0VfSU5fU0NIRU1BOgor CQkJCXNjaGVtYWlkID0gZ2V0X25hbWVzcGFjZV9vaWQocHVib2JqLT5uYW1lLCBmYWxzZSk7 CisKKwkJCQkvKiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNlciBzcGVjaWZpZXMgInNj aDEsIHNjaDEiICovCisJCQkJKnNlcXVlbmNlc19zY2hlbWFzID0gbGlzdF9hcHBlbmRfdW5p cXVlX29pZCgqc2VxdWVuY2VzX3NjaGVtYXMsIHNjaGVtYWlkKTsKIAkJCQkqc2NoZW1hcyA9 IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNjaGVtYXMsIHNjaGVtYWlkKTsKIAkJCQlicmVh azsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEVfSU5fQ1VSX1NDSEVNQToKQEAgLTE4 Niw2ICsyMTAsMjEgQEAgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAqcHVib2Jq c3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJbGlzdF9mcmVlKHNlYXJjaF9w YXRoKTsKIAogCQkJCS8qIEZpbHRlciBvdXQgZHVwbGljYXRlcyBpZiB1c2VyIHNwZWNpZmll cyAic2NoMSwgc2NoMSIgKi8KKwkJCQkqdGFibGVzX3NjaGVtYXMgPSBsaXN0X2FwcGVuZF91 bmlxdWVfb2lkKCp0YWJsZXNfc2NoZW1hcywgc2NoZW1haWQpOworCQkJCSpzY2hlbWFzID0g bGlzdF9hcHBlbmRfdW5pcXVlX29pZCgqc2NoZW1hcywgc2NoZW1haWQpOworCQkJCWJyZWFr OworCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRV9JTl9DVVJfU0NIRU1BOgorCQkJ CXNlYXJjaF9wYXRoID0gZmV0Y2hfc2VhcmNoX3BhdGgoZmFsc2UpOworCQkJCWlmIChzZWFy Y2hfcGF0aCA9PSBOSUwpIC8qIG5vdGhpbmcgdmFsaWQgaW4gc2VhcmNoX3BhdGg/ICovCisJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9T Q0hFTUEpLAorCQkJCQkJCWVycm1zZygibm8gc2NoZW1hIGhhcyBiZWVuIHNlbGVjdGVkIGZv ciBDVVJSRU5UX1NDSEVNQSIpKTsKKworCQkJCXNjaGVtYWlkID0gbGluaXRpYWxfb2lkKHNl YXJjaF9wYXRoKTsKKwkJCQlsaXN0X2ZyZWUoc2VhcmNoX3BhdGgpOworCisJCQkJLyogRmls dGVyIG91dCBkdXBsaWNhdGVzIGlmIHVzZXIgc3BlY2lmaWVzICJzY2gxLCBzY2gxIiAqLwor CQkJCSpzZXF1ZW5jZXNfc2NoZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNlcXVl bmNlc19zY2hlbWFzLCBzY2hlbWFpZCk7CiAJCQkJKnNjaGVtYXMgPSBsaXN0X2FwcGVuZF91 bmlxdWVfb2lkKCpzY2hlbWFzLCBzY2hlbWFpZCk7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0 OgpAQCAtMjUxLDcgKzI5MCwxMCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpw c3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAlib29sCQlwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdF9naXZlbjsKIAlib29sCQlwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdDsKIAlBY2xSZXN1bHQJYWNscmVzdWx0OwotCUxpc3QJICAgKnJlbGF0aW9ucyA9IE5J TDsKKwlMaXN0CSAgICp0YWJsZXMgPSBOSUw7CisJTGlzdAkgICAqc2VxdWVuY2VzID0gTklM OworCUxpc3QJICAgKnRhYmxlc19zY2hlbWFpZGxpc3QgPSBOSUw7CisJTGlzdAkgICAqc2Vx dWVuY2VzX3NjaGVtYWlkbGlzdCA9IE5JTDsKIAlMaXN0CSAgICpzY2hlbWFpZGxpc3QgPSBO SUw7CiAKIAkvKiBtdXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVnZSBvbiBkYXRhYmFzZSAqLwpA QCAtMzA2LDYgKzM0OCw4IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQlCb29sR2V0RGF0dW0ocHViYWN0 aW9ucy5wdWJkZWxldGUpOwogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnRydW5j YXRlIC0gMV0gPQogCQlCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSk7CisJ dmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVic2VxdWVuY2UgLSAxXSA9CisJCUJvb2xH ZXREYXR1bShwdWJhY3Rpb25zLnB1YnNlcXVlbmNlKTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJs aWNhdGlvbl9wdWJ2aWFyb290IC0gMV0gPQogCQlCb29sR2V0RGF0dW0ocHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QpOwogCkBAIC0zMzAsMjYgKzM3NCw0MCBAQCBDcmVhdGVQdWJsaWNh dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkK IAl9CiAJZWxzZQogCXsKLQkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVi b2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAorCQlPYmplY3RzSW5QdWJsaWNhdGlvblRv T2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsCisJCQkJCQkJCSAgICZ0YWJsZXMsICZz ZXF1ZW5jZXMsCisJCQkJCQkJCSAgICZ0YWJsZXNfc2NoZW1haWRsaXN0LAorCQkJCQkJCQkg ICAmc2VxdWVuY2VzX3NjaGVtYWlkbGlzdCwKIAkJCQkJCQkJICAgJnNjaGVtYWlkbGlzdCk7 CiAKIAkJLyogRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHJlcXVpcmVzIHN1cGVydXNlciAq LwotCQlpZiAobGlzdF9sZW5ndGgoc2NoZW1haWRsaXN0KSA+IDAgJiYgIXN1cGVydXNlcigp KQorCQlpZiAobGlzdF9sZW5ndGgodGFibGVzX3NjaGVtYWlkbGlzdCkgPiAwICYmICFzdXBl cnVzZXIoKSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlNV RkZJQ0lFTlRfUFJJVklMRUdFKSwKIAkJCQkJZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0 byBjcmVhdGUgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9uIikpOwogCi0J CWlmIChsaXN0X2xlbmd0aChyZWxhdGlvbnMpID4gMCkKKwkJaWYgKGxpc3RfbGVuZ3RoKHRh YmxlcykgPiAwKQogCQl7CiAJCQlMaXN0CSAgICpyZWxzOwogCi0JCQlyZWxzID0gT3BlblRh YmxlTGlzdChyZWxhdGlvbnMpOwotCQkJQ2hlY2tPYmpTY2hlbWFOb3RBbHJlYWR5SW5QdWJs aWNhdGlvbihyZWxzLCBzY2hlbWFpZGxpc3QsCisJCQlyZWxzID0gT3BlblRhYmxlTGlzdCh0 YWJsZXMpOworCQkJQ2hlY2tPYmpTY2hlbWFOb3RBbHJlYWR5SW5QdWJsaWNhdGlvbihyZWxz LCB0YWJsZXNfc2NoZW1haWRsaXN0LAogCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTk9CSl9U QUJMRSk7CiAJCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5V TEwpOwogCQkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CiAJCX0KIAorCQlpZiAobGlzdF9sZW5n dGgoc2VxdWVuY2VzKSA+IDApCisJCXsKKwkJCUxpc3QJICAgKnJlbHM7CisKKwkJCXJlbHMg PSBPcGVuU2VxdWVuY2VMaXN0KHNlcXVlbmNlcyk7CisJCQlDaGVja09ialNjaGVtYU5vdEFs cmVhZHlJblB1YmxpY2F0aW9uKHJlbHMsIHNlcXVlbmNlc19zY2hlbWFpZGxpc3QsCisJCQkJ CQkJCQkJCQkgIFBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNFKTsKKwkJCVB1YmxpY2F0aW9uQWRk VGFibGVzKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7CisJCQlDbG9zZVNlcXVlbmNlTGlz dChyZWxzKTsKKwkJfQorCiAJCWlmIChsaXN0X2xlbmd0aChzY2hlbWFpZGxpc3QpID4gMCkK IAkJewogCQkJLyoKQEAgLTY1MSwxMiArNzA5LDEzIEBAIEFsdGVyUHVibGljYXRpb25TY2hl bWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogICovCiBzdGF0aWMgdm9pZAogQ2hl Y2tBbHRlclB1YmxpY2F0aW9uKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVw bGUgdHVwLAotCQkJCQkgIExpc3QgKnRhYmxlcywgTGlzdCAqc2NoZW1haWRsaXN0KQorCQkJ CQkgIExpc3QgKnRhYmxlcywgTGlzdCAqdGFibGVzX3NjaGVtYWlkbGlzdCwKKwkJCQkJICBM aXN0ICpzZXF1ZW5jZXMsIExpc3QgKnNlcXVlbmNlc19zY2hlbWFpZGxpc3QpCiB7CiAJRm9y bV9wZ19wdWJsaWNhdGlvbiBwdWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNU UlVDVCh0dXApOwogCiAJaWYgKChzdG10LT5hY3Rpb24gPT0gREVGRUxFTV9BREQgfHwgc3Rt dC0+YWN0aW9uID09IERFRkVMRU1fU0VUKSAmJgotCQlzY2hlbWFpZGxpc3QgJiYgIXN1cGVy dXNlcigpKQorCQkodGFibGVzX3NjaGVtYWlkbGlzdCB8fCBzZXF1ZW5jZXNfc2NoZW1haWRs aXN0KSAmJiAhc3VwZXJ1c2VyKCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKIAkJCQkgZXJybXNnKCJtdXN0IGJl IHN1cGVydXNlciB0byBhZGQgb3Igc2V0IHNjaGVtYXMiKSkpOwpAQCAtNjY1LDEzICs3MjQs MjQgQEAgQ2hlY2tBbHRlclB1YmxpY2F0aW9uKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10 LCBIZWFwVHVwbGUgdHVwLAogCSAqIENoZWNrIHRoYXQgdXNlciBpcyBhbGxvd2VkIHRvIG1h bmlwdWxhdGUgdGhlIHB1YmxpY2F0aW9uIHRhYmxlcyBpbgogCSAqIHNjaGVtYQogCSAqLwot CWlmIChzY2hlbWFpZGxpc3QgJiYgcHViZm9ybS0+cHViYWxsdGFibGVzKQorCWlmICh0YWJs ZXNfc2NoZW1haWRsaXN0ICYmIHB1YmZvcm0tPnB1YmFsbHRhYmxlcykKIAkJZXJlcG9ydChF UlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKIAkJCQkgZXJybXNnKCJwdWJsaWNhdGlvbiBcIiVzXCIgaXMgZGVmaW5lZCBh cyBGT1IgQUxMIFRBQkxFUyIsCiAJCQkJCQlOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKSwK IAkJCQkgZXJyZGV0YWlsKCJUYWJsZXMgZnJvbSBzY2hlbWEgY2Fubm90IGJlIGFkZGVkIHRv LCBkcm9wcGVkIGZyb20sIG9yIHNldCBvbiBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMu IikpKTsKIAorCS8qCisJICogQ2hlY2sgdGhhdCB1c2VyIGlzIGFsbG93ZWQgdG8gbWFuaXB1 bGF0ZSB0aGUgcHVibGljYXRpb24gc2VxdWVuY2VzIGluCisJICogc2NoZW1hCisJICovCisJ aWYgKHNlcXVlbmNlc19zY2hlbWFpZGxpc3QgJiYgcHViZm9ybS0+cHViYWxsc2VxdWVuY2Vz KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9J Tl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInB1YmxpY2F0aW9uIFwiJXNc IiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgU0VRVUVOQ0VTIiwKKwkJCQkJCU5hbWVTdHIocHVi Zm9ybS0+cHVibmFtZSkpLAorCQkJCSBlcnJkZXRhaWwoIlNlcXVlbmNlcyBmcm9tIHNjaGVt YSBjYW5ub3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIEZPUiBBTEwg U0VRVUVOQ0VTIHB1YmxpY2F0aW9ucy4iKSkpOworCiAJLyogQ2hlY2sgdGhhdCB1c2VyIGlz IGFsbG93ZWQgdG8gbWFuaXB1bGF0ZSB0aGUgcHVibGljYXRpb24gdGFibGVzLiAqLwogCWlm ICh0YWJsZXMgJiYgcHViZm9ybS0+cHViYWxsdGFibGVzKQogCQllcmVwb3J0KEVSUk9SLApA QCAtNjc5LDYgKzc0OSwxMDggQEAgQ2hlY2tBbHRlclB1YmxpY2F0aW9uKEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJCSBlcnJtc2coInB1YmxpY2F0 aW9uIFwiJXNcIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTIiwKIAkJCQkJCU5hbWVT dHIocHViZm9ybS0+cHVibmFtZSkpLAogCQkJCSBlcnJkZXRhaWwoIlRhYmxlcyBjYW5ub3Qg YmUgYWRkZWQgdG8gb3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9u cy4iKSkpOworCisJLyogQ2hlY2sgdGhhdCB1c2VyIGlzIGFsbG93ZWQgdG8gbWFuaXB1bGF0 ZSB0aGUgcHVibGljYXRpb24gdGFibGVzLiAqLworCWlmIChzZXF1ZW5jZXMgJiYgcHViZm9y bS0+cHViYWxsc2VxdWVuY2VzKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2co InB1YmxpY2F0aW9uIFwiJXNcIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgU0VRVUVOQ0VTIiwK KwkJCQkJCU5hbWVTdHIocHViZm9ybS0+cHVibmFtZSkpLAorCQkJCSBlcnJkZXRhaWwoIlNl cXVlbmNlcyBjYW5ub3QgYmUgYWRkZWQgdG8gb3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwgU0VR VUVOQ0VTIHB1YmxpY2F0aW9ucy4iKSkpOworfQorCisvKgorICogQWRkIG9yIHJlbW92ZSBz ZXF1ZW5jZSB0by9mcm9tIHB1YmxpY2F0aW9uLgorICovCitzdGF0aWMgdm9pZAorQWx0ZXJQ dWJsaWNhdGlvblNlcXVlbmNlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1 cGxlIHR1cCwKKwkJCQkJCSAgTGlzdCAqc2VxdWVuY2VzLCBMaXN0ICpzY2hlbWFpZGxpc3Qp Cit7CisJTGlzdAkgICAqcmVscyA9IE5JTDsKKwlGb3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZv cm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7CisJT2lkCQkJcHVi aWQgPSBwdWJmb3JtLT5vaWQ7CisKKwkvKgorCSAqIEl0IGlzIHF1aXRlIHBvc3NpYmxlIHRo YXQgZm9yIHRoZSBTRVQgY2FzZSB1c2VyIGhhcyBub3Qgc3BlY2lmaWVkIGFueQorCSAqIHRh YmxlcyBpbiB3aGljaCBjYXNlIHdlIG5lZWQgdG8gcmVtb3ZlIGFsbCB0aGUgZXhpc3Rpbmcg dGFibGVzLgorCSAqLworCWlmICghc2VxdWVuY2VzICYmIHN0bXQtPmFjdGlvbiAhPSBERUZF TEVNX1NFVCkKKwkJcmV0dXJuOworCisJcmVscyA9IE9wZW5TZXF1ZW5jZUxpc3Qoc2VxdWVu Y2VzKTsKKworCWlmIChzdG10LT5hY3Rpb24gPT0gREVGRUxFTV9BREQpCisJeworCQlMaXN0 CSAgICpzY2hlbWFzID0gTklMOworCisJCS8qCisJCSAqIENoZWNrIGlmIHRoZSByZWxhdGlv biBpcyBtZW1iZXIgb2YgdGhlIGV4aXN0aW5nIHNjaGVtYSBpbiB0aGUKKwkJICogcHVibGlj YXRpb24gb3IgbWVtYmVyIG9mIHRoZSBzY2hlbWEgbGlzdCBzcGVjaWZpZWQuCisJCSAqLwor CQlzY2hlbWFzID0gbGlzdF9jb25jYXRfY29weShzY2hlbWFpZGxpc3QsIEdldFB1YmxpY2F0 aW9uU2NoZW1hcyhwdWJpZCkpOworCQlDaGVja09ialNjaGVtYU5vdEFscmVhZHlJblB1Ymxp Y2F0aW9uKHJlbHMsIHNjaGVtYXMsCisJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05PQkpfU0VR VUVOQ0UpOworCQlQdWJsaWNhdGlvbkFkZFNlcXVlbmNlcyhwdWJpZCwgcmVscywgZmFsc2Us IHN0bXQpOworCX0KKwllbHNlIGlmIChzdG10LT5hY3Rpb24gPT0gREVGRUxFTV9EUk9QKQor CQlQdWJsaWNhdGlvbkRyb3BTZXF1ZW5jZXMocHViaWQsIHJlbHMsIGZhbHNlKTsKKwllbHNl CQkJCQkJLyogREVGRUxFTV9TRVQgKi8KKwl7CisJCUxpc3QJICAgKm9sZHJlbGlkcyA9IEdl dFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAorCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElP Tl9QQVJUX1JPT1QpOworCQlMaXN0CSAgICpkZWxyZWxzID0gTklMOworCQlMaXN0Q2VsbCAg ICpvbGRsYzsKKworCQlDaGVja09ialNjaGVtYU5vdEFscmVhZHlJblB1YmxpY2F0aW9uKHJl bHMsIHNjaGVtYWlkbGlzdCwKKwkJCQkJCQkJCQkJICBQVUJMSUNBVElPTk9CSl9TRVFVRU5D RSk7CisKKwkJLyogQ2FsY3VsYXRlIHdoaWNoIHJlbGF0aW9ucyB0byBkcm9wLiAqLworCQlm b3JlYWNoKG9sZGxjLCBvbGRyZWxpZHMpCisJCXsKKwkJCU9pZAkJCW9sZHJlbGlkID0gbGZp cnN0X29pZChvbGRsYyk7CisJCQlMaXN0Q2VsbCAgICpuZXdsYzsKKwkJCWJvb2wJCWZvdW5k ID0gZmFsc2U7CisKKwkJCWZvcmVhY2gobmV3bGMsIHJlbHMpCisJCQl7CisJCQkJUHVibGlj YXRpb25SZWxJbmZvICpuZXdwdWJyZWw7CisKKwkJCQluZXdwdWJyZWwgPSAoUHVibGljYXRp b25SZWxJbmZvICopIGxmaXJzdChuZXdsYyk7CisJCQkJaWYgKFJlbGF0aW9uR2V0UmVsaWQo bmV3cHVicmVsLT5yZWxhdGlvbikgPT0gb2xkcmVsaWQpCisJCQkJeworCQkJCQlmb3VuZCA9 IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCS8qIE5vdCB5ZXQgaW4gdGhl IGxpc3QsIG9wZW4gaXQgYW5kIGFkZCB0byB0aGUgbGlzdCAqLworCQkJaWYgKCFmb3VuZCkK KwkJCXsKKwkJCQlSZWxhdGlvbglvbGRyZWw7CisJCQkJUHVibGljYXRpb25SZWxJbmZvICpw dWJyZWw7CisKKwkJCQkvKiBXcmFwIHJlbGF0aW9uIGludG8gUHVibGljYXRpb25SZWxJbmZv ICovCisJCQkJb2xkcmVsID0gdGFibGVfb3BlbihvbGRyZWxpZCwgU2hhcmVVcGRhdGVFeGNs dXNpdmVMb2NrKTsKKworCQkJCXB1YnJlbCA9IHBhbGxvYyhzaXplb2YoUHVibGljYXRpb25S ZWxJbmZvKSk7CisJCQkJcHVicmVsLT5yZWxhdGlvbiA9IG9sZHJlbDsKKworCQkJCWRlbHJl bHMgPSBsYXBwZW5kKGRlbHJlbHMsIHB1YnJlbCk7CisJCQl9CisJCX0KKworCQkvKiBBbmQg ZHJvcCB0aGVtLiAqLworCQlQdWJsaWNhdGlvbkRyb3BTZXF1ZW5jZXMocHViaWQsIGRlbHJl bHMsIHRydWUpOworCisJCS8qCisJCSAqIERvbid0IGJvdGhlciBjYWxjdWxhdGluZyB0aGUg ZGlmZmVyZW5jZSBmb3IgYWRkaW5nLCB3ZSdsbCBjYXRjaCBhbmQKKwkJICogc2tpcCBleGlz dGluZyBvbmVzIHdoZW4gZG9pbmcgY2F0YWxvZyB1cGRhdGUuCisJCSAqLworCQlQdWJsaWNh dGlvbkFkZFNlcXVlbmNlcyhwdWJpZCwgcmVscywgdHJ1ZSwgc3RtdCk7CisKKwkJQ2xvc2VT ZXF1ZW5jZUxpc3QoZGVscmVscyk7CisJfQorCisJQ2xvc2VTZXF1ZW5jZUxpc3QocmVscyk7 CiB9CiAKIC8qCkBAIC03MTYsMTMgKzg4OCwyMSBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCUFsdGVyUHVi bGljYXRpb25PcHRpb25zKHBzdGF0ZSwgc3RtdCwgcmVsLCB0dXApOwogCWVsc2UKIAl7Ci0J CUxpc3QJICAgKnJlbGF0aW9ucyA9IE5JTDsKKwkJTGlzdAkgICAqdGFibGVzID0gTklMOwor CQlMaXN0CSAgICpzZXF1ZW5jZXMgPSBOSUw7CisJCUxpc3QJICAgKnRhYmxlc19zY2hlbWFp ZGxpc3QgPSBOSUw7CisJCUxpc3QJICAgKnNlcXVlbmNlc19zY2hlbWFpZGxpc3QgPSBOSUw7 CiAJCUxpc3QJICAgKnNjaGVtYWlkbGlzdCA9IE5JTDsKIAotCQlPYmplY3RzSW5QdWJsaWNh dGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCisJCU9i amVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwKKwkJ CQkJCQkJICAgJnRhYmxlcywgJnNlcXVlbmNlcywKKwkJCQkJCQkJICAgJnRhYmxlc19zY2hl bWFpZGxpc3QsCisJCQkJCQkJCSAgICZzZXF1ZW5jZXNfc2NoZW1haWRsaXN0LAogCQkJCQkJ CQkgICAmc2NoZW1haWRsaXN0KTsKIAotCQlDaGVja0FsdGVyUHVibGljYXRpb24oc3RtdCwg dHVwLCByZWxhdGlvbnMsIHNjaGVtYWlkbGlzdCk7CisJCUNoZWNrQWx0ZXJQdWJsaWNhdGlv bihzdG10LCB0dXAsCisJCQkJCQkJICB0YWJsZXMsIHRhYmxlc19zY2hlbWFpZGxpc3QsCisJ CQkJCQkJICBzZXF1ZW5jZXMsIHNlcXVlbmNlc19zY2hlbWFpZGxpc3QpOwogCiAJCS8qCiAJ CSAqIExvY2sgdGhlIHB1YmxpY2F0aW9uIHNvIG5vYm9keSBlbHNlIGNhbiBkbyBhbnl0aGlu ZyB3aXRoIGl0LiBUaGlzCkBAIC03NDcsNyArOTI3LDkgQEAgQWx0ZXJQdWJsaWNhdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJCQll cnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCiAJCQkJCQkgICBz dG10LT5wdWJuYW1lKSk7CiAKLQkJQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhzdG10LCB0dXAs IHJlbGF0aW9ucywgc2NoZW1haWRsaXN0KTsKKwkJQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhz dG10LCB0dXAsIHRhYmxlcywgdGFibGVzX3NjaGVtYWlkbGlzdCk7CisJCUFsdGVyUHVibGlj YXRpb25TZXF1ZW5jZXMoc3RtdCwgdHVwLCBzZXF1ZW5jZXMsIHNlcXVlbmNlc19zY2hlbWFp ZGxpc3QpOworCiAJCUFsdGVyUHVibGljYXRpb25TY2hlbWFzKHN0bXQsIHR1cCwgc2NoZW1h aWRsaXN0KTsKIAl9CiAKQEAgLTExNTUsNiArMTMzNywxNDQgQEAgUHVibGljYXRpb25Ecm9w U2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vaykKIAl9 CiB9CiAKKy8qCisgKiBPcGVuIHJlbGF0aW9ucyBzcGVjaWZpZWQgYnkgYSBQdWJsaWNhdGlv blRhYmxlIGxpc3QuCisgKiBJbiB0aGUgcmV0dXJuZWQgbGlzdCBvZiBQdWJsaWNhdGlvblJl bEluZm8sIHRhYmxlcyBhcmUgbG9ja2VkCisgKiBpbiBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxv Y2sgbW9kZSBpbiBvcmRlciB0byBhZGQgdGhlbSB0byBhIHB1YmxpY2F0aW9uLgorICovCitz dGF0aWMgTGlzdCAqCitPcGVuU2VxdWVuY2VMaXN0KExpc3QgKnNlcXVlbmNlcykKK3sKKwlM aXN0CSAgICpyZWxpZHMgPSBOSUw7CisJTGlzdAkgICAqcmVscyA9IE5JTDsKKwlMaXN0Q2Vs bCAgICpsYzsKKworCS8qCisJICogT3Blbiwgc2hhcmUtbG9jaywgYW5kIGNoZWNrIGFsbCB0 aGUgZXhwbGljaXRseS1zcGVjaWZpZWQgcmVsYXRpb25zCisJICovCisJZm9yZWFjaChsYywg c2VxdWVuY2VzKQorCXsKKwkJUHVibGljYXRpb25UYWJsZSAqcyA9IGxmaXJzdF9ub2RlKFB1 YmxpY2F0aW9uVGFibGUsIGxjKTsKKwkJUmVsYXRpb24JcmVsOworCQlPaWQJCQlteXJlbGlk OworCQlQdWJsaWNhdGlvblJlbEluZm8gKnB1Yl9yZWw7CisKKwkJLyogQWxsb3cgcXVlcnkg Y2FuY2VsIGluIGNhc2UgdGhpcyB0YWtlcyBhIGxvbmcgdGltZSAqLworCQlDSEVDS19GT1Jf SU5URVJSVVBUUygpOworCisJCXJlbCA9IHRhYmxlX29wZW5ydihzLT5yZWxhdGlvbiwgU2hh cmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKwkJbXlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQo cmVsKTsKKworCQkvKgorCQkgKiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNlciBzcGVj aWZpZXMgImZvbywgZm9vIi4KKwkJICoKKwkJICogTm90ZSB0aGF0IHRoaXMgYWxnb3JpdGht IGlzIGtub3duIHRvIG5vdCBiZSB2ZXJ5IGVmZmljaWVudCAoTyhOXjIpKQorCQkgKiBidXQg Z2l2ZW4gdGhhdCBpdCBvbmx5IHdvcmtzIG9uIGxpc3Qgb2YgdGFibGVzIGdpdmVuIHRvIHVz IGJ5IHVzZXIKKwkJICogaXQncyBkZWVtZWQgYWNjZXB0YWJsZS4KKwkJICovCisJCWlmIChs aXN0X21lbWJlcl9vaWQocmVsaWRzLCBteXJlbGlkKSkKKwkJeworCQkJdGFibGVfY2xvc2Uo cmVsLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQkJY29udGludWU7CisJCX0KKwor CQlwdWJfcmVsID0gcGFsbG9jKHNpemVvZihQdWJsaWNhdGlvblJlbEluZm8pKTsKKwkJcHVi X3JlbC0+cmVsYXRpb24gPSByZWw7CisJCXJlbHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwp OworCQlyZWxpZHMgPSBsYXBwZW5kX29pZChyZWxpZHMsIG15cmVsaWQpOworCX0KKworCWxp c3RfZnJlZShyZWxpZHMpOworCisJcmV0dXJuIHJlbHM7Cit9CisKKy8qCisgKiBDbG9zZSBh bGwgcmVsYXRpb25zIGluIHRoZSBsaXN0LgorICovCitzdGF0aWMgdm9pZAorQ2xvc2VTZXF1 ZW5jZUxpc3QoTGlzdCAqcmVscykKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2go bGMsIHJlbHMpCisJeworCQlQdWJsaWNhdGlvblJlbEluZm8gKnB1Yl9yZWw7CisKKwkJcHVi X3JlbCA9IChQdWJsaWNhdGlvblJlbEluZm8gKikgbGZpcnN0KGxjKTsKKwkJdGFibGVfY2xv c2UocHViX3JlbC0+cmVsYXRpb24sIE5vTG9jayk7CisJfQorfQorCisvKgorICogQWRkIGxp c3RlZCB0YWJsZXMgdG8gdGhlIHB1YmxpY2F0aW9uLgorICovCitzdGF0aWMgdm9pZAorUHVi bGljYXRpb25BZGRTZXF1ZW5jZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25v dF9leGlzdHMsCisJCQkJCQlBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKK3sKKwlMaXN0 Q2VsbCAgICpsYzsKKworCUFzc2VydCghc3RtdCB8fCAhc3RtdC0+Zm9yX2FsbF9zZXF1ZW5j ZXMpOworCisJZm9yZWFjaChsYywgcmVscykKKwl7CisJCVB1YmxpY2F0aW9uUmVsSW5mbyAq cHViX3JlbCA9IChQdWJsaWNhdGlvblJlbEluZm8gKikgbGZpcnN0KGxjKTsKKwkJUmVsYXRp b24JcmVsID0gcHViX3JlbC0+cmVsYXRpb247CisJCU9iamVjdEFkZHJlc3Mgb2JqOworCisJ CS8qIE11c3QgYmUgb3duZXIgb2YgdGhlIHNlcXVlbmNlIG9yIHN1cGVydXNlci4gKi8KKwkJ aWYgKCFwZ19jbGFzc19vd25lcmNoZWNrKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgR2V0VXNl cklkKCkpKQorCQkJYWNsY2hlY2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBnZXRfcmVs a2luZF9vYmp0eXBlKHJlbC0+cmRfcmVsLT5yZWxraW5kKSwKKwkJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpOworCisJCW9iaiA9IHB1YmxpY2F0aW9uX2FkZF9yZWxh dGlvbihwdWJpZCwgcHViX3JlbCwgaWZfbm90X2V4aXN0cyk7CisJCWlmIChzdG10KQorCQl7 CisJCQlFdmVudFRyaWdnZXJDb2xsZWN0U2ltcGxlQ29tbWFuZChvYmosIEludmFsaWRPYmpl Y3RBZGRyZXNzLAorCQkJCQkJCQkJCQkgKE5vZGUgKikgc3RtdCk7CisKKwkJCUludm9rZU9i amVjdFBvc3RDcmVhdGVIb29rKFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwKKwkJCQkJCQkJ CSAgIG9iai5vYmplY3RJZCwgMCk7CisJCX0KKwl9Cit9CisKKy8qCisgKiBSZW1vdmUgbGlz dGVkIHNlcXVlbmNlcyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KKyAqLworc3RhdGljIHZvaWQK K1B1YmxpY2F0aW9uRHJvcFNlcXVlbmNlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wg bWlzc2luZ19vaykKK3sKKwlPYmplY3RBZGRyZXNzIG9iajsKKwlMaXN0Q2VsbCAgICpsYzsK KwlPaWQJCQlwcmlkOworCisJZm9yZWFjaChsYywgcmVscykKKwl7CisJCVJlbGF0aW9uCXJl bCA9IChSZWxhdGlvbikgbGZpcnN0KGxjKTsKKwkJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdl dFJlbGlkKHJlbCk7CisKKwkJcHJpZCA9IEdldFN5c0NhY2hlT2lkMihQVUJMSUNBVElPTlJF TE1BUCwgQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfb2lkLAorCQkJCQkJCSAgIE9iamVjdElk R2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsK KwkJaWYgKCFPaWRJc1ZhbGlkKHByaWQpKQorCQl7CisJCQlpZiAobWlzc2luZ19vaykKKwkJ CQljb250aW51ZTsKKworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlc1wiIGlz IG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbiIsCisJCQkJCQkJUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsKSkpKTsKKwkJfQorCisJCU9iamVjdEFkZHJlc3NTZXQob2JqLCBQdWJs aWNhdGlvblJlbFJlbGF0aW9uSWQsIHByaWQpOworCQlwZXJmb3JtRGVsZXRpb24oJm9iaiwg RFJPUF9DQVNDQURFLCAwKTsKKwl9Cit9CisKKwogLyoKICAqIEludGVybmFsIHdvcmtob3Jz ZSBmb3IgY2hhbmdpbmcgYSBwdWJsaWNhdGlvbiBvd25lcgogICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv c2VxdWVuY2UuYwppbmRleCA2MjZiNWIyNTJmNC4uYjg4ODgyMTNmNTQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvc2VxdWVuY2UuYwpAQCAtMzM2LDYgKzMzNiw4NSBAQCBSZXNldFNlcXVlbmNlKE9p ZCBzZXFfcmVsaWQpCiAJcmVsYXRpb25fY2xvc2Uoc2VxX3JlbCwgTm9Mb2NrKTsKIH0KIAor LyoKKyAqIFJlc2V0IGEgc2VxdWVuY2UgdG8gaXRzIGluaXRpYWwgdmFsdWUuCisgKgorICog VGhlIGNoYW5nZSBpcyBtYWRlIHRyYW5zYWN0aW9uYWxseSwgc28gdGhhdCBvbiBmYWlsdXJl IG9mIHRoZSBjdXJyZW50CisgKiB0cmFuc2FjdGlvbiwgdGhlIHNlcXVlbmNlIHdpbGwgYmUg cmVzdG9yZWQgdG8gaXRzIHByZXZpb3VzIHN0YXRlLgorICogV2UgZG8gdGhhdCBieSBjcmVh dGluZyBhIHdob2xlIG5ldyByZWxmaWxlbm9kZSBmb3IgdGhlIHNlcXVlbmNlOyBzbyB0aGlz CisgKiB3b3JrcyBtdWNoIGxpa2UgdGhlIHJld3JpdGluZyBmb3JtcyBvZiBBTFRFUiBUQUJM RS4KKyAqCisgKiBDYWxsZXIgaXMgYXNzdW1lZCB0byBoYXZlIGFjcXVpcmVkIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2sgb24gdGhlIHNlcXVlbmNlLAorICogd2hpY2ggbXVzdCBub3QgYmUgcmVs ZWFzZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0aW9uLiAgQ2FsbGVyIGlzIGFsc28KKyAqIHJl c3BvbnNpYmxlIGZvciBwZXJtaXNzaW9ucyBjaGVja2luZy4KKyAqLwordm9pZAorUmVzZXRT ZXF1ZW5jZTIoT2lkIHNlcV9yZWxpZCwgaW50NjQgbGFzdF92YWx1ZSwgaW50NjQgbG9nX2Nu dCwgYm9vbCBpc19jYWxsZWQpCit7CisJUmVsYXRpb24Jc2VxX3JlbDsKKwlTZXFUYWJsZQll bG07CisJRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHNlcTsKKwlCdWZmZXIJCWJ1ZjsKKwlIZWFw VHVwbGVEYXRhIHNlcWRhdGF0dXBsZTsKKwlIZWFwVHVwbGUJdHVwbGU7CisKKwkvKgorCSAq IFJlYWQgdGhlIG9sZCBzZXF1ZW5jZS4gIFRoaXMgZG9lcyBhIGJpdCBtb3JlIHdvcmsgdGhh biByZWFsbHkKKwkgKiBuZWNlc3NhcnksIGJ1dCBpdCdzIHNpbXBsZSwgYW5kIHdlIGRvIHdh bnQgdG8gZG91YmxlLWNoZWNrIHRoYXQgaXQncworCSAqIGluZGVlZCBhIHNlcXVlbmNlLgor CSAqLworCWluaXRfc2VxdWVuY2Uoc2VxX3JlbGlkLCAmZWxtLCAmc2VxX3JlbCk7CisJKHZv aWQpIHJlYWRfc2VxX3R1cGxlKHNlcV9yZWwsICZidWYsICZzZXFkYXRhdHVwbGUpOworCisJ LyoKKwkgKiBDb3B5IHRoZSBleGlzdGluZyBzZXF1ZW5jZSB0dXBsZS4KKwkgKi8KKwl0dXBs ZSA9IGhlYXBfY29weXR1cGxlKCZzZXFkYXRhdHVwbGUpOworCisJLyogTm93IHdlJ3JlIGRv bmUgd2l0aCB0aGUgb2xkIHBhZ2UgKi8KKwlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CisK KwkvKgorCSAqIE1vZGlmeSB0aGUgY29waWVkIHR1cGxlIHRvIGV4ZWN1dGUgdGhlIHJlc3Rh cnQgKGNvbXBhcmUgdGhlIFJFU1RBUlQKKwkgKiBhY3Rpb24gaW4gQWx0ZXJTZXF1ZW5jZSkK KwkgKi8KKwlzZXEgPSAoRm9ybV9wZ19zZXF1ZW5jZV9kYXRhKSBHRVRTVFJVQ1QodHVwbGUp OworCXNlcS0+bGFzdF92YWx1ZSA9IGxhc3RfdmFsdWU7CisJc2VxLT5pc19jYWxsZWQgPSBp c19jYWxsZWQ7CisJc2VxLT5sb2dfY250ID0gbG9nX2NudDsKKworCS8qCisJICogQ3JlYXRl IGEgbmV3IHN0b3JhZ2UgZmlsZSBmb3IgdGhlIHNlcXVlbmNlLgorCSAqLworCVJlbGF0aW9u U2V0TmV3UmVsZmlsZW5vZGUoc2VxX3JlbCwgc2VxX3JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0 ZW5jZSk7CisKKwkvKgorCSAqIEVuc3VyZSBzZXF1ZW5jZSdzIHJlbGZyb3plbnhpZCBpcyBh dCAwLCBzaW5jZSBpdCB3b24ndCBjb250YWluIGFueQorCSAqIHVuZnJvemVuIFhJRHMuICBT YW1lIHdpdGggcmVsbWlubXhpZCwgc2luY2UgYSBzZXF1ZW5jZSB3aWxsIG5ldmVyCisJICog Y29udGFpbiBtdWx0aXhhY3RzLgorCSAqLworCUFzc2VydChzZXFfcmVsLT5yZF9yZWwtPnJl bGZyb3plbnhpZCA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CisJQXNzZXJ0KHNlcV9yZWwt PnJkX3JlbC0+cmVsbWlubXhpZCA9PSBJbnZhbGlkTXVsdGlYYWN0SWQpOworCisJLyoKKwkg KiBJbnNlcnQgdGhlIG1vZGlmaWVkIHR1cGxlIGludG8gdGhlIG5ldyBzdG9yYWdlIGZpbGUu CisJICoKKwkgKiBYWFggTWF5YmUgdGhpcyBzaG91bGQgYWxzbyB1c2UgY3JlYXRlZD10cnVl LCBqdXN0IGxpa2UgdGhlIG90aGVyIHBsYWNlcworCSAqIGNhbGxpbmcgZmlsbF9zZXFfd2l0 aF9kYXRhLiBUaGF0J3MgcHJvYmFibHkgbmVlZGVkIGZvciBjb3JyZWN0IGNhc2NhZGluZwor CSAqIHJlcGxpY2F0aW9uLgorCSAqCisJICogWFhYIFRoYXQnZCBtZWFuIGFsbCBmaWxsX3Nl cV93aXRoX2RhdGEgY2FsbGVycyB1c2UgY3JlYXRlZD10cnVlLCBtYWtpbmcKKwkgKiB0aGUg cGFyYW1ldGVyIHVubmVjZXNzYXJ5LgorCSAqLworCWZpbGxfc2VxX3dpdGhfZGF0YShzZXFf cmVsLCB0dXBsZSk7CisKKwkvKiBDbGVhciBsb2NhbCBjYWNoZSBzbyB0aGF0IHdlIGRvbid0 IHRoaW5rIHdlIGhhdmUgY2FjaGVkIG51bWJlcnMgKi8KKwkvKiBOb3RlIHRoYXQgd2UgZG8g bm90IGNoYW5nZSB0aGUgY3VycnZhbCgpIHN0YXRlICovCisJZWxtLT5jYWNoZWQgPSBlbG0t Pmxhc3Q7CisKKwlyZWxhdGlvbl9jbG9zZShzZXFfcmVsLCBOb0xvY2spOworfQorCiAvKgog ICogSW5pdGlhbGl6ZSBhIHNlcXVlbmNlJ3MgcmVsYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVk IHR1cGxlIGFzIGNvbnRlbnQKICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5jCmluZGV4IDJiNjU4MDgwZmVlLi5mYzYzNzRjNDQ1MCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtODUsNiArODUsNyBAQCB0eXBl ZGVmIHN0cnVjdCBTdWJPcHRzCiB9IFN1Yk9wdHM7CiAKIHN0YXRpYyBMaXN0ICpmZXRjaF90 YWJsZV9saXN0KFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBMaXN0ICpwdWJsaWNhdGlvbnMp Oworc3RhdGljIExpc3QgKmZldGNoX3NlcXVlbmNlX2xpc3QoV2FsUmVjZWl2ZXJDb25uICp3 cmNvbm4sIExpc3QgKnB1YmxpY2F0aW9ucyk7CiBzdGF0aWMgdm9pZCBjaGVja19kdXBsaWNh dGVzX2luX3B1Ymxpc3QoTGlzdCAqcHVibGlzdCwgRGF0dW0gKmRhdHVtcyk7CiBzdGF0aWMg TGlzdCAqbWVyZ2VfcHVibGljYXRpb25zKExpc3QgKm9sZHB1Ymxpc3QsIExpc3QgKm5ld3B1 Ymxpc3QsIGJvb2wgYWRkcHViLCBjb25zdCBjaGFyICpzdWJuYW1lKTsKIHN0YXRpYyB2b2lk IFJlcG9ydFNsb3RDb25uZWN0aW9uRXJyb3IoTGlzdCAqcnN0YXRlcywgT2lkIHN1YmlkLCBj aGFyICpzbG90bmFtZSwgY2hhciAqZXJyKTsKQEAgLTQ5Niw2ICs0OTcsNyBAQCBDcmVhdGVT dWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10 ICpzdG10LAogCQljaGFyCSAgICplcnI7CiAJCVdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uOwog CQlMaXN0CSAgICp0YWJsZXM7CisJCUxpc3QJICAgKnNlcXVlbmNlczsKIAkJTGlzdENlbGwg ICAqbGM7CiAJCWNoYXIJCXRhYmxlX3N0YXRlOwogCkBAIC01MzQsNiArNTM2LDI2IEBAIENy ZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlv blN0bXQgKnN0bXQsCiAJCQkJCQkJCQkJSW52YWxpZFhMb2dSZWNQdHIpOwogCQkJfQogCisJ CQkvKgorCQkJICogR2V0IHRoZSBzZXF1ZW5jZSBsaXN0IGZyb20gcHVibGlzaGVyIGFuZCBi dWlsZCBsb2NhbCBzZXF1ZW5jZQorCQkJICogc3RhdHVzIGluZm8uCisJCQkgKi8KKwkJCXNl cXVlbmNlcyA9IGZldGNoX3NlcXVlbmNlX2xpc3Qod3Jjb25uLCBwdWJsaWNhdGlvbnMpOwor CQkJZm9yZWFjaChsYywgc2VxdWVuY2VzKQorCQkJeworCQkJCVJhbmdlVmFyICAgKnJ2ID0g KFJhbmdlVmFyICopIGxmaXJzdChsYyk7CisJCQkJT2lkCQkJcmVsaWQ7CisKKwkJCQlyZWxp ZCA9IFJhbmdlVmFyR2V0UmVsaWQocnYsIEFjY2Vzc1NoYXJlTG9jaywgZmFsc2UpOworCisJ CQkJLyogQ2hlY2sgZm9yIHN1cHBvcnRlZCByZWxraW5kLiAqLworCQkJCUNoZWNrU3Vic2Ny aXB0aW9uUmVsa2luZChnZXRfcmVsX3JlbGtpbmQocmVsaWQpLAorCQkJCQkJCQkJCSBydi0+ c2NoZW1hbmFtZSwgcnYtPnJlbG5hbWUpOworCisJCQkJQWRkU3Vic2NyaXB0aW9uUmVsU3Rh dGUoc3ViaWQsIHJlbGlkLCB0YWJsZV9zdGF0ZSwKKwkJCQkJCQkJCQlJbnZhbGlkWExvZ1Jl Y1B0cik7CisJCQl9CisKIAkJCS8qCiAJCQkgKiBJZiByZXF1ZXN0ZWQsIGNyZWF0ZSBwZXJt YW5lbnQgc2xvdCBmb3IgdGhlIHN1YnNjcmlwdGlvbi4gV2UKIAkJCSAqIHdvbid0IHVzZSB0 aGUgaW5pdGlhbCBzbmFwc2hvdCBmb3IgYW55dGhpbmcsIHNvIG5vIG5lZWQgdG8KQEAgLTcw Niw2ICs3MjgsMTAgQEAgQWx0ZXJTdWJzY3JpcHRpb25fcmVmcmVzaChTdWJzY3JpcHRpb24g KnN1YiwgYm9vbCBjb3B5X2RhdGEpCiAJCXsKIAkJCU9pZAkJCXJlbGlkID0gc3VicmVsX2xv Y2FsX29pZHNbb2ZmXTsKIAorCQkJLyogWFhYIGlnbm9yZSBzZXF1ZW5jZXMgLSBtYXliZSBk byB0aGlzIGluIEdldFN1YnNjcmlwdGlvblJlbGF0aW9ucz8gKi8KKwkJCWlmIChnZXRfcmVs X3JlbGtpbmQocmVsaWQpID09IFJFTEtJTkRfU0VRVUVOQ0UpCisJCQkJY29udGludWU7CisK IAkJCWlmICghYnNlYXJjaCgmcmVsaWQsIHB1YnJlbF9sb2NhbF9vaWRzLAogCQkJCQkJIGxp c3RfbGVuZ3RoKHB1YnJlbF9uYW1lcyksIHNpemVvZihPaWQpLCBvaWRfY21wKSkKIAkJCXsK QEAgLTc5Nyw2ICs4MjMsMTgzIEBAIEFsdGVyU3Vic2NyaXB0aW9uX3JlZnJlc2goU3Vic2Ny aXB0aW9uICpzdWIsIGJvb2wgY29weV9kYXRhKQogCQkJCVJlcGxpY2F0aW9uU2xvdERyb3BB dFB1Yk5vZGUod3Jjb25uLCBzeW5jc2xvdG5hbWUsIHRydWUpOwogCQkJfQogCQl9CisKKwkJ LyoKKwkJICogWFhYIG5vdyBkbyB0aGUgc2FtZSB0aGluZyBmb3Igc2VxdWVuY2VzLCBtYXli ZSBiZWZvcmUgdGhlIHByZWNlZGluZworCQkgKiBibG9jaywgb3IgZWFybGllcj8KKwkJICov CisKKwkJLyogR2V0IHRoZSB0YWJsZSBsaXN0IGZyb20gcHVibGlzaGVyLiAqLworCQlwdWJy ZWxfbmFtZXMgPSBmZXRjaF9zZXF1ZW5jZV9saXN0KHdyY29ubiwgc3ViLT5wdWJsaWNhdGlv bnMpOworCisJCS8qIEdldCBsb2NhbCB0YWJsZSBsaXN0LiAqLworCQlzdWJyZWxfc3RhdGVz ID0gR2V0U3Vic2NyaXB0aW9uUmVsYXRpb25zKHN1Yi0+b2lkKTsKKworCQkvKgorCQkgKiBC dWlsZCBxc29ydGVkIGFycmF5IG9mIGxvY2FsIHRhYmxlIG9pZHMgZm9yIGZhc3RlciBsb29r dXAuIFRoaXMgY2FuCisJCSAqIHBvdGVudGlhbGx5IGNvbnRhaW4gYWxsIHRhYmxlcyBpbiB0 aGUgZGF0YWJhc2Ugc28gc3BlZWQgb2YgbG9va3VwCisJCSAqIGlzIGltcG9ydGFudC4KKwkJ ICovCisJCXN1YnJlbF9sb2NhbF9vaWRzID0gcGFsbG9jKGxpc3RfbGVuZ3RoKHN1YnJlbF9z dGF0ZXMpICogc2l6ZW9mKE9pZCkpOworCQlvZmYgPSAwOworCQlmb3JlYWNoKGxjLCBzdWJy ZWxfc3RhdGVzKQorCQl7CisJCQlTdWJzY3JpcHRpb25SZWxTdGF0ZSAqcmVsc3RhdGUgPSAo U3Vic2NyaXB0aW9uUmVsU3RhdGUgKikgbGZpcnN0KGxjKTsKKworCQkJc3VicmVsX2xvY2Fs X29pZHNbb2ZmKytdID0gcmVsc3RhdGUtPnJlbGlkOworCQl9CisJCXFzb3J0KHN1YnJlbF9s b2NhbF9vaWRzLCBsaXN0X2xlbmd0aChzdWJyZWxfc3RhdGVzKSwKKwkJCSAgc2l6ZW9mKE9p ZCksIG9pZF9jbXApOworCisJCS8qCisJCSAqIFJlbHMgdGhhdCB3ZSB3YW50IHRvIHJlbW92 ZSBmcm9tIHN1YnNjcmlwdGlvbiBhbmQgZHJvcCBhbnkgc2xvdHMKKwkJICogYW5kIG9yaWdp bnMgY29ycmVzcG9uZGluZyB0byB0aGVtLgorCQkgKi8KKwkJc3ViX3JlbW92ZV9yZWxzID0g cGFsbG9jKGxpc3RfbGVuZ3RoKHN1YnJlbF9zdGF0ZXMpICogc2l6ZW9mKFN1YlJlbW92ZVJl bHMpKTsKKworCQkvKgorCQkgKiBXYWxrIG92ZXIgdGhlIHJlbW90ZSB0YWJsZXMgYW5kIHRy eSB0byBtYXRjaCB0aGVtIHRvIGxvY2FsbHkga25vd24KKwkJICogdGFibGVzLiBJZiB0aGUg dGFibGUgaXMgbm90IGtub3duIGxvY2FsbHkgY3JlYXRlIGEgbmV3IHN0YXRlIGZvcgorCQkg KiBpdC4KKwkJICoKKwkJICogQWxzbyBidWlsZHMgYXJyYXkgb2YgbG9jYWwgb2lkcyBvZiBy ZW1vdGUgdGFibGVzIGZvciB0aGUgbmV4dCBzdGVwLgorCQkgKi8KKwkJb2ZmID0gMDsKKwkJ cHVicmVsX2xvY2FsX29pZHMgPSBwYWxsb2MobGlzdF9sZW5ndGgocHVicmVsX25hbWVzKSAq IHNpemVvZihPaWQpKTsKKworCQlmb3JlYWNoKGxjLCBwdWJyZWxfbmFtZXMpCisJCXsKKwkJ CVJhbmdlVmFyICAgKnJ2ID0gKFJhbmdlVmFyICopIGxmaXJzdChsYyk7CisJCQlPaWQJCQly ZWxpZDsKKworCQkJcmVsaWQgPSBSYW5nZVZhckdldFJlbGlkKHJ2LCBBY2Nlc3NTaGFyZUxv Y2ssIGZhbHNlKTsKKworCQkJLyogQ2hlY2sgZm9yIHN1cHBvcnRlZCByZWxraW5kLiAqLwor CQkJQ2hlY2tTdWJzY3JpcHRpb25SZWxraW5kKGdldF9yZWxfcmVsa2luZChyZWxpZCksCisJ CQkJCQkJCQkgcnYtPnNjaGVtYW5hbWUsIHJ2LT5yZWxuYW1lKTsKKworCQkJcHVicmVsX2xv Y2FsX29pZHNbb2ZmKytdID0gcmVsaWQ7CisKKwkJCWlmICghYnNlYXJjaCgmcmVsaWQsIHN1 YnJlbF9sb2NhbF9vaWRzLAorCQkJCQkJIGxpc3RfbGVuZ3RoKHN1YnJlbF9zdGF0ZXMpLCBz aXplb2YoT2lkKSwgb2lkX2NtcCkpCisJCQl7CisJCQkJQWRkU3Vic2NyaXB0aW9uUmVsU3Rh dGUoc3ViLT5vaWQsIHJlbGlkLAorCQkJCQkJCQkJCWNvcHlfZGF0YSA/IFNVQlJFTF9TVEFU RV9JTklUIDogU1VCUkVMX1NUQVRFX1JFQURZLAorCQkJCQkJCQkJCUludmFsaWRYTG9nUmVj UHRyKTsKKwkJCQllcmVwb3J0KERFQlVHMSwKKwkJCQkJCShlcnJtc2dfaW50ZXJuYWwoInRh YmxlIFwiJXMuJXNcIiBhZGRlZCB0byBzdWJzY3JpcHRpb24gXCIlc1wiIiwKKwkJCQkJCQkJ CQkgcnYtPnNjaGVtYW5hbWUsIHJ2LT5yZWxuYW1lLCBzdWItPm5hbWUpKSk7CisJCQl9CisJ CX0KKworCQkvKgorCQkgKiBOZXh0IHJlbW92ZSBzdGF0ZSBmb3IgdGFibGVzIHdlIHNob3Vs ZCBub3QgY2FyZSBhYm91dCBhbnltb3JlIHVzaW5nCisJCSAqIHRoZSBkYXRhIHdlIGNvbGxl Y3RlZCBhYm92ZQorCQkgKi8KKwkJcXNvcnQocHVicmVsX2xvY2FsX29pZHMsIGxpc3RfbGVu Z3RoKHB1YnJlbF9uYW1lcyksCisJCQkgIHNpemVvZihPaWQpLCBvaWRfY21wKTsKKworCQly ZW1vdmVfcmVsX2xlbiA9IDA7CisJCWZvciAob2ZmID0gMDsgb2ZmIDwgbGlzdF9sZW5ndGgo c3VicmVsX3N0YXRlcyk7IG9mZisrKQorCQl7CisJCQlPaWQJCQlyZWxpZCA9IHN1YnJlbF9s b2NhbF9vaWRzW29mZl07CisKKwkJCS8qIFhYWCBpZ25vcmUgbm9uLXNlcXVlbmNlcyAtIG1h eWJlIGRvIHRoaXMgaW4gR2V0U3Vic2NyaXB0aW9uUmVsYXRpb25zPyAqLworCQkJaWYgKGdl dF9yZWxfcmVsa2luZChyZWxpZCkgIT0gUkVMS0lORF9TRVFVRU5DRSkKKwkJCQljb250aW51 ZTsKKworCQkJaWYgKCFic2VhcmNoKCZyZWxpZCwgcHVicmVsX2xvY2FsX29pZHMsCisJCQkJ CQkgbGlzdF9sZW5ndGgocHVicmVsX25hbWVzKSwgc2l6ZW9mKE9pZCksIG9pZF9jbXApKQor CQkJeworCQkJCWNoYXIJCXN0YXRlOworCQkJCVhMb2dSZWNQdHIJc3RhdGVsc247CisKKwkJ CQkvKgorCQkJCSAqIExvY2sgcGdfc3Vic2NyaXB0aW9uX3JlbCB3aXRoIEFjY2Vzc0V4Y2x1 c2l2ZUxvY2sgdG8KKwkJCQkgKiBwcmV2ZW50IGFueSByYWNlIGNvbmRpdGlvbnMgd2l0aCB0 aGUgYXBwbHkgd29ya2VyCisJCQkJICogcmUtbGF1bmNoaW5nIHdvcmtlcnMgYXQgdGhlIHNh bWUgdGltZSB0aGlzIGNvZGUgaXMgdHJ5aW5nCisJCQkJICogdG8gcmVtb3ZlIHRob3NlIHRh Ymxlcy4KKwkJCQkgKgorCQkJCSAqIEV2ZW4gaWYgbmV3IHdvcmtlciBmb3IgdGhpcyBwYXJ0 aWN1bGFyIHJlbCBpcyByZXN0YXJ0ZWQgaXQKKwkJCQkgKiB3b24ndCBiZSBhYmxlIHRvIG1h a2UgYW55IHByb2dyZXNzIGFzIHdlIGhvbGQgZXhjbHVzaXZlCisJCQkJICogbG9jayBvbiBz dWJzY3JpcHRpb25fcmVsIHRpbGwgdGhlIHRyYW5zYWN0aW9uIGVuZC4gSXQgd2lsbAorCQkJ CSAqIHNpbXBseSBleGl0IGFzIHRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgcmVsIGVudHJ5 LgorCQkJCSAqCisJCQkJICogVGhpcyBsb2NraW5nIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBz dGF0ZSBvZiByZWxzIHdvbid0CisJCQkJICogY2hhbmdlIHRpbGwgd2UgYXJlIGRvbmUgd2l0 aCB0aGlzIHJlZnJlc2ggb3BlcmF0aW9uLgorCQkJCSAqLworCQkJCWlmICghcmVsKQorCQkJ CQlyZWwgPSB0YWJsZV9vcGVuKFN1YnNjcmlwdGlvblJlbFJlbGF0aW9uSWQsIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2spOworCisJCQkJLyogTGFzdCBrbm93biByZWwgc3RhdGUuICovCisJCQkJ c3RhdGUgPSBHZXRTdWJzY3JpcHRpb25SZWxTdGF0ZShzdWItPm9pZCwgcmVsaWQsICZzdGF0 ZWxzbik7CisKKwkJCQlzdWJfcmVtb3ZlX3JlbHNbcmVtb3ZlX3JlbF9sZW5dLnJlbGlkID0g cmVsaWQ7CisJCQkJc3ViX3JlbW92ZV9yZWxzW3JlbW92ZV9yZWxfbGVuKytdLnN0YXRlID0g c3RhdGU7CisKKwkJCQlSZW1vdmVTdWJzY3JpcHRpb25SZWwoc3ViLT5vaWQsIHJlbGlkKTsK KworCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3Aoc3ViLT5vaWQsIHJlbGlkKTsKKworCQkJ CS8qCisJCQkJICogRm9yIFJFQURZIHN0YXRlLCB3ZSB3b3VsZCBoYXZlIGFscmVhZHkgZHJv cHBlZCB0aGUKKwkJCQkgKiB0YWJsZXN5bmMgb3JpZ2luLgorCQkJCSAqLworCQkJCWlmIChz dGF0ZSAhPSBTVUJSRUxfU1RBVEVfUkVBRFkpCisJCQkJeworCQkJCQljaGFyCQlvcmlnaW5u YW1lW05BTUVEQVRBTEVOXTsKKworCQkJCQkvKgorCQkJCQkgKiBEcm9wIHRoZSB0YWJsZXN5 bmMncyBvcmlnaW4gdHJhY2tpbmcgaWYgZXhpc3RzLgorCQkJCQkgKgorCQkJCQkgKiBJdCBp cyBwb3NzaWJsZSB0aGF0IHRoZSBvcmlnaW4gaXMgbm90IHlldCBjcmVhdGVkIGZvcgorCQkJ CQkgKiB0YWJsZXN5bmMgd29ya2VyLCB0aGlzIGNhbiBoYXBwZW4gZm9yIHRoZSBzdGF0ZXMg YmVmb3JlCisJCQkJCSAqIFNVQlJFTF9TVEFURV9GSU5JU0hFRENPUFkuIFRoZSBhcHBseSB3 b3JrZXIgY2FuIGFsc28KKwkJCQkJICogY29uY3VycmVudGx5IHRyeSB0byBkcm9wIHRoZSBv cmlnaW4gYW5kIGJ5IHRoaXMgdGltZQorCQkJCQkgKiB0aGUgb3JpZ2luIG1pZ2h0IGJlIGFs cmVhZHkgcmVtb3ZlZC4gRm9yIHRoZXNlIHJlYXNvbnMsCisJCQkJCSAqIHBhc3NpbmcgbWlz c2luZ19vayA9IHRydWUuCisJCQkJCSAqLworCQkJCQlSZXBsaWNhdGlvbk9yaWdpbk5hbWVG b3JUYWJsZXN5bmMoc3ViLT5vaWQsIHJlbGlkLCBvcmlnaW5uYW1lLAorCQkJCQkJCQkJCQkJ CSAgc2l6ZW9mKG9yaWdpbm5hbWUpKTsKKwkJCQkJcmVwbG9yaWdpbl9kcm9wX2J5X25hbWUo b3JpZ2lubmFtZSwgdHJ1ZSwgZmFsc2UpOworCQkJCX0KKworCQkJCWVyZXBvcnQoREVCVUcx LAorCQkJCQkJKGVycm1zZ19pbnRlcm5hbCgidGFibGUgXCIlcy4lc1wiIHJlbW92ZWQgZnJv bSBzdWJzY3JpcHRpb24gXCIlc1wiIiwKKwkJCQkJCQkJCQkgZ2V0X25hbWVzcGFjZV9uYW1l KGdldF9yZWxfbmFtZXNwYWNlKHJlbGlkKSksCisJCQkJCQkJCQkJIGdldF9yZWxfbmFtZShy ZWxpZCksCisJCQkJCQkJCQkJIHN1Yi0+bmFtZSkpKTsKKwkJCX0KKwkJfQorCisJCS8qCisJ CSAqIERyb3AgdGhlIHRhYmxlc3luYyBzbG90cyBhc3NvY2lhdGVkIHdpdGggcmVtb3ZlZCB0 YWJsZXMuIFRoaXMgaGFzCisJCSAqIHRvIGJlIGF0IHRoZSBlbmQgYmVjYXVzZSBvdGhlcndp c2UgaWYgdGhlcmUgaXMgYW4gZXJyb3Igd2hpbGUgZG9pbmcKKwkJICogdGhlIGRhdGFiYXNl IG9wZXJhdGlvbnMgd2Ugd29uJ3QgYmUgYWJsZSB0byByb2xsYmFjayBkcm9wcGVkIHNsb3Rz LgorCQkgKi8KKwkJZm9yIChvZmYgPSAwOyBvZmYgPCByZW1vdmVfcmVsX2xlbjsgb2ZmKysp CisJCXsKKwkJCWlmIChzdWJfcmVtb3ZlX3JlbHNbb2ZmXS5zdGF0ZSAhPSBTVUJSRUxfU1RB VEVfUkVBRFkgJiYKKwkJCQlzdWJfcmVtb3ZlX3JlbHNbb2ZmXS5zdGF0ZSAhPSBTVUJSRUxf U1RBVEVfU1lOQ0RPTkUpCisJCQl7CisJCQkJY2hhcgkJc3luY3Nsb3RuYW1lW05BTUVEQVRB TEVOXSA9IHswfTsKKworCQkJCS8qCisJCQkJICogRm9yIFJFQURZL1NZTkNET05FIHN0YXRl cyB3ZSBrbm93IHRoZSB0YWJsZXN5bmMgc2xvdCBoYXMKKwkJCQkgKiBhbHJlYWR5IGJlZW4g ZHJvcHBlZCBieSB0aGUgdGFibGVzeW5jIHdvcmtlci4KKwkJCQkgKgorCQkJCSAqIEZvciBv dGhlciBzdGF0ZXMsIHRoZXJlIGlzIG5vIGNlcnRhaW50eSwgbWF5YmUgdGhlIHNsb3QKKwkJ CQkgKiBkb2VzIG5vdCBleGlzdCB5ZXQuIEFsc28sIGlmIHdlIGZhaWwgYWZ0ZXIgcmVtb3Zp bmcgc29tZSBvZgorCQkJCSAqIHRoZSBzbG90cywgbmV4dCB0aW1lLCBpdCB3aWxsIGFnYWlu IHRyeSB0byBkcm9wIGFscmVhZHkKKwkJCQkgKiBkcm9wcGVkIHNsb3RzIGFuZCBmYWlsLiBG b3IgdGhlc2UgcmVhc29ucywgd2UgYWxsb3cKKwkJCQkgKiBtaXNzaW5nX29rID0gdHJ1ZSBm b3IgdGhlIGRyb3AuCisJCQkJICovCisJCQkJUmVwbGljYXRpb25TbG90TmFtZUZvclRhYmxl c3luYyhzdWItPm9pZCwgc3ViX3JlbW92ZV9yZWxzW29mZl0ucmVsaWQsCisJCQkJCQkJCQkJ CQlzeW5jc2xvdG5hbWUsIHNpemVvZihzeW5jc2xvdG5hbWUpKTsKKwkJCQlSZXBsaWNhdGlv blNsb3REcm9wQXRQdWJOb2RlKHdyY29ubiwgc3luY3Nsb3RuYW1lLCB0cnVlKTsKKwkJCX0K KwkJfQorCiAJfQogCVBHX0ZJTkFMTFkoKTsKIAl7CkBAIC0xNjE0LDYgKzE4MTcsNzUgQEAg ZmV0Y2hfdGFibGVfbGlzdChXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgTGlzdCAqcHVibGlj YXRpb25zKQogCXJldHVybiB0YWJsZWxpc3Q7CiB9CiAKKy8qCisgKiBHZXQgdGhlIGxpc3Qg b2Ygc2VxdWVuY2VzIHdoaWNoIGJlbG9uZyB0byBzcGVjaWZpZWQgcHVibGljYXRpb25zIG9u IHRoZQorICogcHVibGlzaGVyIGNvbm5lY3Rpb24uCisgKi8KK3N0YXRpYyBMaXN0ICoKK2Zl dGNoX3NlcXVlbmNlX2xpc3QoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4sIExpc3QgKnB1Ymxp Y2F0aW9ucykKK3sKKwlXYWxSY3ZFeGVjUmVzdWx0ICpyZXM7CisJU3RyaW5nSW5mb0RhdGEg Y21kOworCVR1cGxlVGFibGVTbG90ICpzbG90OworCU9pZAkJCXRhYmxlUm93WzJdID0ge1RF WFRPSUQsIFRFWFRPSUR9OworCUxpc3RDZWxsICAgKmxjOworCWJvb2wJCWZpcnN0OworCUxp c3QJICAgKnRhYmxlbGlzdCA9IE5JTDsKKworCUFzc2VydChsaXN0X2xlbmd0aChwdWJsaWNh dGlvbnMpID4gMCk7CisKKwlpbml0U3RyaW5nSW5mbygmY21kKTsKKwlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZjbWQsICJTRUxFQ1QgRElTVElOQ1Qgcy5zY2hlbWFuYW1lLCBzLnNlcXVl bmNlbmFtZVxuIgorCQkJCQkJICAgIiAgRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9u X3NlcXVlbmNlcyBzXG4iCisJCQkJCQkgICAiIFdIRVJFIHMucHVibmFtZSBJTiAoIik7CisJ Zmlyc3QgPSB0cnVlOworCWZvcmVhY2gobGMsIHB1YmxpY2F0aW9ucykKKwl7CisJCWNoYXIJ ICAgKnB1Ym5hbWUgPSBzdHJWYWwobGZpcnN0KGxjKSk7CisKKwkJaWYgKGZpcnN0KQorCQkJ Zmlyc3QgPSBmYWxzZTsKKwkJZWxzZQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21k LCAiLCAiKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsIHF1b3RlX2xpdGVy YWxfY3N0cihwdWJuYW1lKSk7CisJfQorCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZjbWQsICcp Jyk7CisKKwlyZXMgPSB3YWxyY3ZfZXhlYyh3cmNvbm4sIGNtZC5kYXRhLCAyLCB0YWJsZVJv dyk7CisJcGZyZWUoY21kLmRhdGEpOworCisJaWYgKHJlcy0+c3RhdHVzICE9IFdBTFJDVl9P S19UVVBMRVMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1zZygiY291bGQgbm90IHJl Y2VpdmUgbGlzdCBvZiByZXBsaWNhdGVkIHRhYmxlcyBmcm9tIHRoZSBwdWJsaXNoZXI6ICVz IiwKKwkJCQkJCXJlcy0+ZXJyKSkpOworCisJLyogUHJvY2VzcyB0YWJsZXMuICovCisJc2xv dCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChyZXMtPnR1cGxlZGVzYywgJlRUU09wc01p bmltYWxUdXBsZSk7CisJd2hpbGUgKHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KHJlcy0+dHVw bGVzdG9yZSwgdHJ1ZSwgZmFsc2UsIHNsb3QpKQorCXsKKwkJY2hhcgkgICAqbnNwbmFtZTsK KwkJY2hhcgkgICAqcmVsbmFtZTsKKwkJYm9vbAkJaXNudWxsOworCQlSYW5nZVZhciAgICpy djsKKworCQluc3BuYW1lID0gVGV4dERhdHVtR2V0Q1N0cmluZyhzbG90X2dldGF0dHIoc2xv dCwgMSwgJmlzbnVsbCkpOworCQlBc3NlcnQoIWlzbnVsbCk7CisJCXJlbG5hbWUgPSBUZXh0 RGF0dW1HZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cihzbG90LCAyLCAmaXNudWxsKSk7CisJCUFz c2VydCghaXNudWxsKTsKKworCQlydiA9IG1ha2VSYW5nZVZhcihuc3BuYW1lLCByZWxuYW1l LCAtMSk7CisJCXRhYmxlbGlzdCA9IGxhcHBlbmQodGFibGVsaXN0LCBydik7CisKKwkJRXhl Y0NsZWFyVHVwbGUoc2xvdCk7CisJfQorCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo c2xvdCk7CisKKwl3YWxyY3ZfY2xlYXJfcmVzdWx0KHJlcyk7CisKKwlyZXR1cm4gdGFibGVs aXN0OworfQorCiAvKgogICogVGhpcyBpcyB0byByZXBvcnQgdGhlIGNvbm5lY3Rpb24gZmFp bHVyZSB3aGlsZSBkcm9wcGluZyByZXBsaWNhdGlvbiBzbG90cy4KICAqIEhlcmUsIHdlIHJl cG9ydCB0aGUgV0FSTklORyBmb3IgYWxsIHRhYmxlc3luYyBzbG90cyBzbyB0aGF0IHVzZXIg Y2FuIGRyb3AKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNh dGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXgg NTc0ZDdkMjdmZDkuLjZmMGQ0MmQ1NTE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUmVwbGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UmVwbGljYXRpb24uYwpAQCAtNjA4LDcgKzYwOCw3IEBAIHZvaWQKIENoZWNrU3Vic2NyaXB0 aW9uUmVsa2luZChjaGFyIHJlbGtpbmQsIGNvbnN0IGNoYXIgKm5zcG5hbWUsCiAJCQkJCQkg Y29uc3QgY2hhciAqcmVsbmFtZSkKIHsKLQlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1JFTEFU SU9OICYmIHJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwlpZiAocmVs a2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmIHJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJ T05FRF9UQUJMRSAmJiByZWxraW5kICE9IFJFTEtJTkRfU0VRVUVOQ0UpCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJ IGVycm1zZygiY2Fubm90IHVzZSByZWxhdGlvbiBcIiVzLiVzXCIgYXMgbG9naWNhbCByZXBs aWNhdGlvbiB0YXJnZXQiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1 bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCBkZjBiNzQ3ODgz OC4uNmE1NzE4NTcyZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBAIC00ODQ2LDYgKzQ4 NDYsNyBAQCBfY29weUNyZWF0ZVB1YmxpY2F0aW9uU3RtdChjb25zdCBDcmVhdGVQdWJsaWNh dGlvblN0bXQgKmZyb20pCiAJQ09QWV9OT0RFX0ZJRUxEKG9wdGlvbnMpOwogCUNPUFlfTk9E RV9GSUVMRChwdWJvYmplY3RzKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChmb3JfYWxsX3RhYmxl cyk7CisJQ09QWV9TQ0FMQVJfRklFTEQoZm9yX2FsbF9zZXF1ZW5jZXMpOwogCiAJcmV0dXJu IG5ld25vZGU7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNz LmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggY2I3ZGRkNDYzY2Iu LjVkY2NjMGQwYWRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0yMzM2LDYgKzIz MzYsNyBAQCBfZXF1YWxBbHRlclB1YmxpY2F0aW9uU3RtdChjb25zdCBBbHRlclB1YmxpY2F0 aW9uU3RtdCAqYSwKIAlDT01QQVJFX05PREVfRklFTEQob3B0aW9ucyk7CiAJQ09NUEFSRV9O T0RFX0ZJRUxEKHB1Ym9iamVjdHMpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGZvcl9hbGxf dGFibGVzKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChmb3JfYWxsX3NlcXVlbmNlcyk7CiAJ Q09NUEFSRV9TQ0FMQVJfRklFTEQoYWN0aW9uKTsKIAogCXJldHVybiB0cnVlOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKaW5kZXggM2Q0ZGQ0M2U0N2IuLmYwMzdjMTc5ODViIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK QEAgLTk3NjIsNiArOTc2MiwyNiBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJCSQkLT5w dWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfVEFCTEVfSU5fQ1VSX1NDSEVNQTsKIAkJCQkJ JCQtPmxvY2F0aW9uID0gQDU7CiAJCQkJfQorCQkJfCBTRVFVRU5DRSByZWxhdGlvbl9leHBy CisJCQkJeworCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CisJCQkJ CSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfU0VRVUVOQ0U7CisJCQkJCSQkLT5w dWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOworCQkJCQkkJC0+cHVidGFi bGUtPnJlbGF0aW9uID0gJDI7CisJCQkJfQorCQkJfCBBTEwgU0VRVUVOQ0UgSU5fUCBTQ0hF TUEgQ29sSWQKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVj KTsKKwkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRV9JTl9T Q0hFTUE7CisJCQkJCSQkLT5uYW1lID0gJDU7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEA1Owor CQkJCX0KKwkJCXwgQUxMIFNFUVVFTkNFUyBJTl9QIFNDSEVNQSBDVVJSRU5UX1NDSEVNQQor CQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkk JC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNFX0lOX0NVUl9TQ0hFTUE7 CisJCQkJCSQkLT5sb2NhdGlvbiA9IEA1OworCQkJCX0KIAkJCXwgQ29sSWQKIAkJCQl7CiAJ CQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKQEAgLTEwMDk3LDYgKzEw MTE3LDEyIEBAIFVubGlzdGVuU3RtdDoKIAkJCQl9CiAJCTsKIAorLyoKKyAqIEZJWE1FCisg KgorICogb3B0X3B1YmxpY2F0aW9uX2Zvcl9zZXF1ZW5jZXMgYW5kIHB1YmxpY2F0aW9uX2Zv cl9zZXF1ZW5jZXMgc2hvdWxkIGJlCisgKiBjb3BpZXMgZm9yIHNlcXVlbmNlcworICovCiAK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTEwMTA1LDYgKzEwMTMxLDEyIEBA IFVubGlzdGVuU3RtdDoKICAqCQlCRUdJTiAvIENPTU1JVCAvIFJPTExCQUNLCiAgKgkJKGFs c28gb2xkZXIgdmVyc2lvbnMgRU5EIC8gQUJPUlQpCiAgKgorICogQUxURVIgUFVCTElDQVRJ T04gbmFtZSBBREQgU0VRVUVOQ0Ugc2VxdWVuY2UgWywgc2VxdWVuY2UyXQorICoKKyAqIEFM VEVSIFBVQkxJQ0FUSU9OIG5hbWUgRFJPUCBTRVFVRU5DRSBzZXF1ZW5jZSBbLCBzZXF1ZW5j ZTJdCisgKgorICogQUxURVIgUFVCTElDQVRJT04gbmFtZSBTRVQgU0VRVUVOQ0Ugc2VxdWVu Y2UgWywgc2VxdWVuY2UyXQorICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogVHJh bnNhY3Rpb25TdG10OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5j CmluZGV4IDlmNWJmNGI2MzlmLi43OWM2ZjYyNjM4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtNjQ3LDYgKzY0Nyw1NiBAQCBsb2dpY2FscmVw X3dyaXRlX21lc3NhZ2UoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9n UmVjUHRyIGxzbiwKIAlwcV9zZW5kYnl0ZXMob3V0LCBtZXNzYWdlLCBzeik7CiB9CiAKKy8q CisgKiBXcml0ZSBTRVFVRU5DRSB0byBzdHJlYW0KKyAqLwordm9pZAorbG9naWNhbHJlcF93 cml0ZV9zZXF1ZW5jZShTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBUcmFuc2FjdGlv bklkIHhpZCwKKwkJCQkJCSAgWExvZ1JlY1B0ciBsc24sIGJvb2wgdHJhbnNhY3Rpb25hbCwK KwkJCQkJCSAgaW50NjQgbGFzdF92YWx1ZSwgaW50NjQgbG9nX2NudCwgYm9vbCBpc19jYWxs ZWQpCit7CisJdWludDgJCWZsYWdzID0gMDsKKwljaGFyCSAgICpyZWxuYW1lOworCisJcHFf c2VuZGJ5dGUob3V0LCBMT0dJQ0FMX1JFUF9NU0dfU0VRVUVOQ0UpOworCisJLyogdHJhbnNh Y3Rpb24gSUQgKGlmIG5vdCB2YWxpZCwgd2UncmUgbm90IHN0cmVhbWluZykgKi8KKwlpZiAo VHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJcHFfc2VuZGludDMyKG91dCwgeGlkKTsK KworCXBxX3NlbmRpbnQ4KG91dCwgZmxhZ3MpOworCXBxX3NlbmRpbnQ2NChvdXQsIGxzbik7 CisKKwlsb2dpY2FscmVwX3dyaXRlX25hbWVzcGFjZShvdXQsIFJlbGF0aW9uR2V0TmFtZXNw YWNlKHJlbCkpOworCXJlbG5hbWUgPSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpOwor CXBxX3NlbmRzdHJpbmcob3V0LCByZWxuYW1lKTsKKworCXBxX3NlbmRpbnQ4KG91dCwgdHJh bnNhY3Rpb25hbCk7CisJcHFfc2VuZGludDY0KG91dCwgbGFzdF92YWx1ZSk7CisJcHFfc2Vu ZGludDY0KG91dCwgbG9nX2NudCk7CisJcHFfc2VuZGludDgob3V0LCBpc19jYWxsZWQpOwor fQorCisvKgorICogUmVhZCBTRVFVRU5DRSBmcm9tIHRoZSBzdHJlYW0uCisgKi8KK3ZvaWQK K2xvZ2ljYWxyZXBfcmVhZF9zZXF1ZW5jZShTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwU2Vx dWVuY2UgKnNlcWRhdGEpCit7CisJLyogWFhYIHNraXBwaW5nIGZsYWdzIGFuZCBsc24gKi8K KwlwcV9nZXRtc2dpbnQoaW4sIDEpOworCXBxX2dldG1zZ2ludDY0KGluKTsKKworCS8qIFJl YWQgcmVsYXRpb24gbmFtZSBmcm9tIHN0cmVhbSAqLworCXNlcWRhdGEtPm5zcG5hbWUgPSBw c3RyZHVwKGxvZ2ljYWxyZXBfcmVhZF9uYW1lc3BhY2UoaW4pKTsKKwlzZXFkYXRhLT5zZXFu YW1lID0gcHN0cmR1cChwcV9nZXRtc2dzdHJpbmcoaW4pKTsKKworCXNlcWRhdGEtPnRyYW5z YWN0aW9uYWwgPSBwcV9nZXRtc2dpbnQoaW4sIDEpOworCXNlcWRhdGEtPmxhc3RfdmFsdWUg PSBwcV9nZXRtc2dpbnQ2NChpbik7CisJc2VxZGF0YS0+bG9nX2NudCA9IHBxX2dldG1zZ2lu dDY0KGluKTsKKwlzZXFkYXRhLT5pc19jYWxsZWQgPSBwcV9nZXRtc2dpbnQoaW4sIDEpOwor fQorCiAvKgogICogV3JpdGUgcmVsYXRpb24gZGVzY3JpcHRpb24gdG8gdGhlIG91dHB1dCBz dHJlYW0uCiAgKi8KQEAgLTEyMDMsNiArMTI1Myw4IEBAIGxvZ2ljYWxyZXBfbWVzc2FnZV90 eXBlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbikKIAkJCXJldHVybiAiU1RSRUFNIEFCT1JU IjsKIAkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1BSRVBBUkU6CiAJCQlyZXR1cm4g IlNUUkVBTSBQUkVQQVJFIjsKKwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfU0VRVUVOQ0U6CisJ CQlyZXR1cm4gIlNFUVVFTkNFIjsKIAl9CiAKIAllbG9nKEVSUk9SLCAiaW52YWxpZCBsb2dp Y2FsIHJlcGxpY2F0aW9uIG1lc3NhZ2UgdHlwZSBcIiVjXCIiLCBhY3Rpb24pOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggZjA3OTgz YTQzY2IuLjI0MzY5YTE1MjJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvdGFibGVzeW5jLmMKQEAgLTEwMCw2ICsxMDAsNyBAQAogI2luY2x1ZGUgImNhdGFs b2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5o IgogI2luY2x1ZGUgImNvbW1hbmRzL2NvcHkuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXF1 ZW5jZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJz ZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgpAQCAtMzU3LDYgKzM1OCwxMiBA QCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9zeW5jKFhMb2dSZWNQdHIgY3VycmVudF9s c24pCiAgKgogICogSWYgdGhlIHN5bmNocm9uaXphdGlvbiBwb3NpdGlvbiBpcyByZWFjaGVk IChTWU5DRE9ORSksIHRoZW4gdGhlIHRhYmxlIGNhbgogICogYmUgbWFya2VkIGFzIFJFQURZ IGFuZCBpcyBubyBsb25nZXIgdHJhY2tlZC4KKyAqCisgKiBYWFggVGhpcyBuZWVkcyB0byBo YW5kbGUgc2VxdWVuY2VzIHRvbyAtIGFmdGVyIEFsdGVyU3Vic2NyaXB0aW9uX3JlZnJlc2gK KyAqIHN0YXJ0cyBjYXJpbmcgYWJvdXQgc2VxdWVuY2VzLCBHZXRTdWJzY3JpcHRpb25Ob3RS ZWFkeVJlbGF0aW9ucyB3b24ndAorICogcmV0dXJuIGp1c3QgdGFibGVzLCBhbmQgd2UnbGwg aGF2ZSB0byBzeW5jIHRoZW0gaGVyZS4gTm90IHN1cmUgaXQncyB3b3J0aAorICogY3JlYXRp bmcgYSBuZXcgInN5bmMiIHdvcmtlciBwZXIgc2VxdWVuY2UsIG1heWJlIHdlIHNob3VsZCBq dXN0IHN5bmMgdGhlbQorICogaW4gdGhlIGN1cnJlbnQgcHJvY2VzcyAoaXQncyBwcmV0dHkg bGlnaHQtd2VpZ2h0KS4KICAqLwogc3RhdGljIHZvaWQKIHByb2Nlc3Nfc3luY2luZ190YWJs ZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCkBAIC04NzEsNiArODc4LDk5 IEBAIGNvcHlfdGFibGUoUmVsYXRpb24gcmVsKQogCWxvZ2ljYWxyZXBfcmVsX2Nsb3NlKHJl bG1hcGVudHJ5LCBOb0xvY2spOwogfQogCisKKworLyoKKyAqIEZJWE1FIGFkZCBjb21tZW50 CisgKi8KK3N0YXRpYyB2b2lkCitmZXRjaF9zZXF1ZW5jZV9kYXRhKGNoYXIgKm5zcG5hbWUs IGNoYXIgKnJlbG5hbWUsCisJCQkJCWludDY0ICpsYXN0X3ZhbHVlLCBpbnQ2NCAqbG9nX2Nu dCwgYm9vbCAqaXNfY2FsbGVkKQoreworCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKKwlTdHJp bmdJbmZvRGF0YSBjbWQ7CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJT2lkCQkJdGFibGVS b3dbM10gPSB7SU5UOE9JRCwgSU5UOE9JRCwgQk9PTE9JRH07CisKKwlpbml0U3RyaW5nSW5m bygmY21kKTsKKwlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJTRUxFQ1QgbGFzdF92YWx1ZSwg bG9nX2NudCwgaXNfY2FsbGVkXG4iCisJCQkJCSAgICIgIEZST00gJXMiLCBxdW90ZV9xdWFs aWZpZWRfaWRlbnRpZmllcihuc3BuYW1lLCByZWxuYW1lKSk7CisKKwlyZXMgPSB3YWxyY3Zf ZXhlYyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCBjbWQuZGF0YSwgMywgdGFibGVSb3cpOwor CXBmcmVlKGNtZC5kYXRhKTsKKworCWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfVFVQ TEVTKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJtc2coImNvdWxkIG5vdCByZWNlaXZl IGxpc3Qgb2YgcmVwbGljYXRlZCB0YWJsZXMgZnJvbSB0aGUgcHVibGlzaGVyOiAlcyIsCisJ CQkJCQlyZXMtPmVycikpKTsKKworCS8qIFByb2Nlc3MgdGhlIHNlcXVlbmNlLiAqLworCXNs b3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QocmVzLT50dXBsZWRlc2MsICZUVFNPcHNN aW5pbWFsVHVwbGUpOworCXdoaWxlICh0dXBsZXN0b3JlX2dldHR1cGxlc2xvdChyZXMtPnR1 cGxlc3RvcmUsIHRydWUsIGZhbHNlLCBzbG90KSkKKwl7CisJCWJvb2wJCWlzbnVsbDsKKwor CQkqbGFzdF92YWx1ZSA9IERhdHVtR2V0SW50NjQoc2xvdF9nZXRhdHRyKHNsb3QsIDEsICZp c251bGwpKTsKKwkJQXNzZXJ0KCFpc251bGwpOworCisJCSpsb2dfY250ID0gRGF0dW1HZXRJ bnQ2NChzbG90X2dldGF0dHIoc2xvdCwgMiwgJmlzbnVsbCkpOworCQlBc3NlcnQoIWlzbnVs bCk7CisKKwkJKmlzX2NhbGxlZCA9IERhdHVtR2V0Qm9vbChzbG90X2dldGF0dHIoc2xvdCwg MywgJmlzbnVsbCkpOworCQlBc3NlcnQoIWlzbnVsbCk7CisKKwkJRXhlY0NsZWFyVHVwbGUo c2xvdCk7CisJfQorCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisKKwl3 YWxyY3ZfY2xlYXJfcmVzdWx0KHJlcyk7Cit9CisKKy8qCisgKiBDb3B5IGV4aXN0aW5nIGRh dGEgb2YgYSBzZXF1ZW5jZSBmcm9tIHB1Ymxpc2hlci4KKyAqCisgKiBDYWxsZXIgaXMgcmVz cG9uc2libGUgZm9yIGxvY2tpbmcgdGhlIGxvY2FsIHJlbGF0aW9uLgorICovCitzdGF0aWMg dm9pZAorY29weV9zZXF1ZW5jZShSZWxhdGlvbiByZWwpCit7CisJTG9naWNhbFJlcFJlbE1h cEVudHJ5ICpyZWxtYXBlbnRyeTsKKwlMb2dpY2FsUmVwUmVsYXRpb24gbHJlbDsKKwlTdHJp bmdJbmZvRGF0YSBjbWQ7CisJaW50NjQJCWxhc3RfdmFsdWUgPSAwLAorCQkJCWxvZ19jbnQg PSAwOworCWJvb2wJCWlzX2NhbGxlZCA9IDA7CisKKwkvKiBHZXQgdGhlIHB1Ymxpc2hlciBy ZWxhdGlvbiBpbmZvLiAqLworCWZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGdldF9uYW1lc3Bh Y2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpKSwKKwkJCQkJCQlSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpLCAmbHJlbCk7CisKKwkvKiBQdXQgdGhlIHJlbGF0aW9uIGlu dG8gcmVsbWFwLiAqLworCWxvZ2ljYWxyZXBfcmVsbWFwX3VwZGF0ZSgmbHJlbCk7CisKKwkv KiBNYXAgdGhlIHB1Ymxpc2hlciByZWxhdGlvbiB0byBsb2NhbCBvbmUuICovCisJcmVsbWFw ZW50cnkgPSBsb2dpY2FscmVwX3JlbF9vcGVuKGxyZWwucmVtb3RlaWQsIE5vTG9jayk7CisJ QXNzZXJ0KHJlbCA9PSByZWxtYXBlbnRyeS0+bG9jYWxyZWwpOworCisJLyogU3RhcnQgY29w eSBvbiB0aGUgcHVibGlzaGVyLiAqLworCWluaXRTdHJpbmdJbmZvKCZjbWQpOworCisJQXNz ZXJ0KGxyZWwucmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKTsKKworCWZldGNoX3NlcXVl bmNlX2RhdGEobHJlbC5uc3BuYW1lLCBscmVsLnJlbG5hbWUsICZsYXN0X3ZhbHVlLCAmbG9n X2NudCwgJmlzX2NhbGxlZCk7CisKKwllbG9nKFdBUk5JTkcsICJzZXF1ZW5jZSAlcyBpbmZv IGxhc3RfdmFsdWUgJWxkIGxvZ19jbnQgJWxkIGlzX2NhbGxlZCAlZCIsCisJCSBxdW90ZV9x dWFsaWZpZWRfaWRlbnRpZmllcihscmVsLm5zcG5hbWUsIGxyZWwucmVsbmFtZSksCisJCSBs YXN0X3ZhbHVlLCBsb2dfY250LCBpc19jYWxsZWQpOworCisJUmVzZXRTZXF1ZW5jZTIoUmVs YXRpb25HZXRSZWxpZChyZWwpLCBsYXN0X3ZhbHVlLCBsb2dfY250LCBpc19jYWxsZWQpOwor CisJbG9naWNhbHJlcF9yZWxfY2xvc2UocmVsbWFwZW50cnksIE5vTG9jayk7Cit9CisKKwor CisKIC8qCiAgKiBEZXRlcm1pbmUgdGhlIHRhYmxlc3luYyBzbG90IG5hbWUuCiAgKgpAQCAt MTEwNiwxMCArMTIwNiwyMCBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0 ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkJCQkJb3JpZ2lubmFtZSkpKTsKIAl9CiAKLQkvKiBO b3cgZG8gdGhlIGluaXRpYWwgZGF0YSBjb3B5ICovCi0JUHVzaEFjdGl2ZVNuYXBzaG90KEdl dFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JY29weV90YWJsZShyZWwpOwotCVBvcEFjdGl2 ZVNuYXBzaG90KCk7CisJaWYgKGdldF9yZWxfcmVsa2luZChSZWxhdGlvbkdldFJlbGlkKHJl bCkpID09IFJFTEtJTkRfU0VRVUVOQ0UpCisJeworCQkvKiBOb3cgZG8gdGhlIGluaXRpYWwg c2VxdWVuY2UgY29weSAqLworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25T bmFwc2hvdCgpKTsKKwkJY29weV9zZXF1ZW5jZShyZWwpOworCQlQb3BBY3RpdmVTbmFwc2hv dCgpOworCX0KKwllbHNlCisJeworCQkvKiBOb3cgZG8gdGhlIGluaXRpYWwgZGF0YSBjb3B5 ICovCisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwor CQljb3B5X3RhYmxlKHJlbCk7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJfQogCiAJcmVz ID0gd2FscmN2X2V4ZWMoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgIkNPTU1JVCIsIDAsIE5V TEwpOwogCWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfQ09NTUFORCkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDJlNzkzMDJhNDhhLi4w ODlkOTg5ZGQ3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jCkBAIC0xNDQsNiArMTQ0LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RhYmxlc3Bh Y2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZWNtZHMuaCIKICNpbmNsdWRlICJjb21t YW5kcy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNp bmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0 b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgiCkBAIC0xMDkxLDYg KzEwOTIsNjEgQEAgYXBwbHlfaGFuZGxlX29yaWdpbihTdHJpbmdJbmZvIHMpCiAJCQkJIGVy cm1zZ19pbnRlcm5hbCgiT1JJR0lOIG1lc3NhZ2Ugc2VudCBvdXQgb2Ygb3JkZXIiKSkpOwog fQogCisvKgorICogSGFuZGxlIFNFUVVFTkNFIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyB2b2lk CithcHBseV9oYW5kbGVfc2VxdWVuY2UoU3RyaW5nSW5mbyBzKQoreworCUxvZ2ljYWxSZXBT ZXF1ZW5jZQlzZXE7CisJT2lkCQkJCQlyZWxpZDsKKworCWlmIChoYW5kbGVfc3RyZWFtZWRf dHJhbnNhY3Rpb24oTE9HSUNBTF9SRVBfTVNHX1NFUVVFTkNFLCBzKSkKKwkJcmV0dXJuOwor CisJbG9naWNhbHJlcF9yZWFkX3NlcXVlbmNlKHMsICZzZXEpOworCisJLyoKKwkgKiBOb24t dHJhbnNhY3Rpb25hbCBzZXF1ZW5jZSB1cGRhdGVzIHNob3VsZCBub3QgYmUgcGFydCBvZiBh IHJlbW90ZQorCSAqIHRyYW5zYWN0aW9uLiBUaGVyZSBzaG91bGQgbm90IGJlIGFueSBydW5u aW5nIHRyYW5zYWN0aW9uLgorCSAqLworCUFzc2VydCgoIXNlcS50cmFuc2FjdGlvbmFsKSB8 fCBpbl9yZW1vdGVfdHJhbnNhY3Rpb24pOworCUFzc2VydCghKCFzZXEudHJhbnNhY3Rpb25h bCAmJiBpbl9yZW1vdGVfdHJhbnNhY3Rpb24pKTsKKwlBc3NlcnQoISghc2VxLnRyYW5zYWN0 aW9uYWwgJiYgSXNUcmFuc2FjdGlvblN0YXRlKCkpKTsKKworCS8qCisJICogTWFrZSBzdXJl IHdlJ3JlIGluIGEgdHJhbnNhY3Rpb24gKG5lZWRlZCBieSBSZXNldFNlcXVlbmNlMikuIEZv cgorCSAqIG5vbi10cmFuc2FjdGlvbmFsIHVwZGF0ZXMgd2UncmUgZ3VhcmFudGVlZCB0byBz dGFydCBhIG5ldyBvbmUsCisJICogYW5kIHdlJ2xsIGNvbW1pdCBpdCBhdCB0aGUgZW5kLgor CSAqLworCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJeworCQlTdGFydFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCQltYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKCk7CisJfQorCisJ cmVsaWQgPSBSYW5nZVZhckdldFJlbGlkKG1ha2VSYW5nZVZhcihzZXEubnNwbmFtZSwKKwkJ CQkJCQkJCQkgIHNlcS5zZXFuYW1lLCAtMSksCisJCQkJCQkJIFJvd0V4Y2x1c2l2ZUxvY2ss IGZhbHNlKTsKKworCS8qIGxvY2sgdGhlIHNlcXVlbmNlIGluIEFjY2Vzc0V4Y2x1c2l2ZUxv Y2ssIGFzIGV4cGVjdGVkIGJ5IFJlc2V0U2VxdWVuY2UyICovCisJZWxvZyhXQVJOSU5HLCAi bG9ja2luZyBzZXF1ZW5jZSAlZCBpbiBleGNsdXNpdmUgbW9kZSIsIHJlbGlkKTsKKwlMb2Nr UmVsYXRpb25PaWQocmVsaWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJZWxvZyhXQVJO SU5HLCAiYXBwbHlpbmcgc2VxdWVuY2UgJXMuJXMgdHJhbnNhY3Rpb25hbCAlZCBsYXN0X3Zh bHVlICVsZCBsb2dfY250ICVsZCBpc19jYWxsZWQgJWQiLAorCQkgc2VxLm5zcG5hbWUsIHNl cS5zZXFuYW1lLCBzZXEudHJhbnNhY3Rpb25hbCwgc2VxLmxhc3RfdmFsdWUsIHNlcS5sb2df Y250LCBzZXEuaXNfY2FsbGVkKTsKKworCS8qIGFwcGx5IHRoZSBzZXF1ZW5jZSBjaGFuZ2Ug Ki8KKwlSZXNldFNlcXVlbmNlMihyZWxpZCwgc2VxLmxhc3RfdmFsdWUsIHNlcS5sb2dfY250 LCBzZXEuaXNfY2FsbGVkKTsKKworCS8qCisJICogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRy YW5zYWN0aW9uICh3ZSBvbmx5IGRvIHRoaXMgd2hlbiBub3QgaW4KKwkgKiByZW1vdGUgdHJh bnNhY3Rpb24sIGkuZS4gZm9yIG5vbi10cmFuc2FjdGlvbmFsIHNlcXVlbmNlIHVwZGF0ZXMu CisJICovCisJaWYgKCFpbl9yZW1vdGVfdHJhbnNhY3Rpb24pCisJCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworfQorCiAvKgogICogSGFuZGxlIFNUUkVBTSBTVEFSVCBtZXNzYWdl LgogICovCkBAIC0yMzc0LDYgKzI0MzAsMTAgQEAgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5m byBzKQogCQkJICovCiAJCQlicmVhazsKIAorCQljYXNlIExPR0lDQUxfUkVQX01TR19TRVFV RU5DRToKKwkJCWFwcGx5X2hhbmRsZV9zZXF1ZW5jZShzKTsKKwkJCXJldHVybjsKKwogCQlj YXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RBUlQ6CiAJCQlhcHBseV9oYW5kbGVfc3Ry ZWFtX3N0YXJ0KHMpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v cGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA2ZjZhMjAzZGVhNy4uOWFiOGIxZDRlYzQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAt NDksNiArNDksMTAgQEAgc3RhdGljIHZvaWQgcGdvdXRwdXRfbWVzc2FnZShMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExv Z1JlY1B0ciBtZXNzYWdlX2xzbiwKIAkJCQkJCQkgYm9vbCB0cmFuc2FjdGlvbmFsLCBjb25z dCBjaGFyICpwcmVmaXgsCiAJCQkJCQkJIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2Up Oworc3RhdGljIHZvaWQgcGdvdXRwdXRfc2VxdWVuY2UoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LAorCQkJCQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIHNl cXVlbmNlX2xzbiwKKwkJCQkJCQkgIFJlbGF0aW9uIHJlbCwgYm9vbCB0cmFuc2FjdGlvbmFs LAorCQkJCQkJCSAgaW50NjQgbGFzdF92YWx1ZSwgaW50NjQgbG9nX2NudCwgYm9vbCBpc19j YWxsZWQpOwogc3RhdGljIGJvb2wgcGdvdXRwdXRfb3JpZ2luX2ZpbHRlcihMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJCSAgIFJlcE9yaWdpbklkIG9yaWdpbl9pZCk7 CiBzdGF0aWMgdm9pZCBwZ291dHB1dF9iZWdpbl9wcmVwYXJlX3R4bihMb2dpY2FsRGVjb2Rp bmdDb250ZXh0ICpjdHgsCkBAIC0xNTksNiArMTYzLDcgQEAgX1BHX291dHB1dF9wbHVnaW5f aW5pdChPdXRwdXRQbHVnaW5DYWxsYmFja3MgKmNiKQogCWNiLT5jaGFuZ2VfY2IgPSBwZ291 dHB1dF9jaGFuZ2U7CiAJY2ItPnRydW5jYXRlX2NiID0gcGdvdXRwdXRfdHJ1bmNhdGU7CiAJ Y2ItPm1lc3NhZ2VfY2IgPSBwZ291dHB1dF9tZXNzYWdlOworCWNiLT5zZXF1ZW5jZV9jYiA9 IHBnb3V0cHV0X3NlcXVlbmNlOwogCWNiLT5jb21taXRfY2IgPSBwZ291dHB1dF9jb21taXRf dHhuOwogCiAJY2ItPmJlZ2luX3ByZXBhcmVfY2IgPSBwZ291dHB1dF9iZWdpbl9wcmVwYXJl X3R4bjsKQEAgLTE3NSw2ICsxODAsNyBAQCBfUEdfb3V0cHV0X3BsdWdpbl9pbml0KE91dHB1 dFBsdWdpbkNhbGxiYWNrcyAqY2IpCiAJY2ItPnN0cmVhbV9jb21taXRfY2IgPSBwZ291dHB1 dF9zdHJlYW1fY29tbWl0OwogCWNiLT5zdHJlYW1fY2hhbmdlX2NiID0gcGdvdXRwdXRfY2hh bmdlOwogCWNiLT5zdHJlYW1fbWVzc2FnZV9jYiA9IHBnb3V0cHV0X21lc3NhZ2U7CisJY2It PnN0cmVhbV9zZXF1ZW5jZV9jYiA9IHBnb3V0cHV0X3NlcXVlbmNlOwogCWNiLT5zdHJlYW1f dHJ1bmNhdGVfY2IgPSBwZ291dHB1dF90cnVuY2F0ZTsKIAkvKiB0cmFuc2FjdGlvbiBzdHJl YW1pbmcgLSB0d28tcGhhc2UgY29tbWl0ICovCiAJY2ItPnN0cmVhbV9wcmVwYXJlX2NiID0g cGdvdXRwdXRfc3RyZWFtX3ByZXBhcmVfdHhuOwpAQCAtMTg4LDYgKzE5NCw3IEBAIHBhcnNl X291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlvbnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkK IAlib29sCQlwdWJsaWNhdGlvbl9uYW1lc19naXZlbiA9IGZhbHNlOwogCWJvb2wJCWJpbmFy eV9vcHRpb25fZ2l2ZW4gPSBmYWxzZTsKIAlib29sCQltZXNzYWdlc19vcHRpb25fZ2l2ZW4g PSBmYWxzZTsKKwlib29sCQlzZXF1ZW5jZXNfb3B0aW9uX2dpdmVuID0gZmFsc2U7CiAJYm9v bAkJc3RyZWFtaW5nX2dpdmVuID0gZmFsc2U7CiAJYm9vbAkJdHdvX3BoYXNlX29wdGlvbl9n aXZlbiA9IGZhbHNlOwogCkBAIC0xOTUsNiArMjAyLDcgQEAgcGFyc2Vfb3V0cHV0X3BhcmFt ZXRlcnMoTGlzdCAqb3B0aW9ucywgUEdPdXRwdXREYXRhICpkYXRhKQogCWRhdGEtPnN0cmVh bWluZyA9IGZhbHNlOwogCWRhdGEtPm1lc3NhZ2VzID0gZmFsc2U7CiAJZGF0YS0+dHdvX3Bo YXNlID0gZmFsc2U7CisJZGF0YS0+c2VxdWVuY2VzID0gdHJ1ZTsKIAogCWZvcmVhY2gobGMs IG9wdGlvbnMpCiAJewpAQCAtMjYwLDYgKzI2OCwxNiBAQCBwYXJzZV9vdXRwdXRfcGFyYW1l dGVycyhMaXN0ICpvcHRpb25zLCBQR091dHB1dERhdGEgKmRhdGEpCiAKIAkJCWRhdGEtPm1l c3NhZ2VzID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7CiAJCX0KKwkJZWxzZSBpZiAoc3RyY21w KGRlZmVsLT5kZWZuYW1lLCAic2VxdWVuY2VzIikgPT0gMCkKKwkJeworCQkJaWYgKHNlcXVl bmNlc19vcHRpb25fZ2l2ZW4pCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9y IHJlZHVuZGFudCBvcHRpb25zIikpKTsKKwkJCXNlcXVlbmNlc19vcHRpb25fZ2l2ZW4gPSB0 cnVlOworCisJCQlkYXRhLT5zZXF1ZW5jZXMgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJ fQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJzdHJlYW1pbmciKSA9PSAw KQogCQl7CiAJCQlpZiAoc3RyZWFtaW5nX2dpdmVuKQpAQCAtODU2LDYgKzg3NCw1MSBAQCBw Z291dHB1dF9tZXNzYWdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1 ZmZlclRYTiAqdHhuLAogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiB9CiAKK3N0 YXRpYyB2b2lkCitwZ291dHB1dF9zZXF1ZW5jZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsCisJCQkJICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgc2VxdWVuY2Vf bHNuLAorCQkJCSAgUmVsYXRpb24gcmVsLCBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJICBp bnQ2NCBsYXN0X3ZhbHVlLCBpbnQ2NCBsb2dfY250LCBib29sIGlzX2NhbGxlZCkKK3sKKwlQ R091dHB1dERhdGEgKmRhdGEgPSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdp bl9wcml2YXRlOworCVRyYW5zYWN0aW9uSWQgeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7 CisJUmVsYXRpb25TeW5jRW50cnkgKnJlbGVudHJ5OworCisJaWYgKCFkYXRhLT5zZXF1ZW5j ZXMpCisJCXJldHVybjsKKworCWlmICghaXNfcHVibGlzaGFibGVfcmVsYXRpb24ocmVsKSkK KwkJcmV0dXJuOworCisJLyoKKwkgKiBSZW1lbWJlciB0aGUgeGlkIGZvciB0aGUgbWVzc2Fn ZSBpbiBzdHJlYW1pbmcgbW9kZS4gU2VlCisJICogcGdvdXRwdXRfY2hhbmdlLgorCSAqLwor CWlmIChpbl9zdHJlYW1pbmcpCisJCXhpZCA9IHR4bi0+eGlkOworCisJcmVsZW50cnkgPSBn ZXRfcmVsX3N5bmNfZW50cnkoZGF0YSwgUmVsYXRpb25HZXRSZWxpZChyZWwpKTsKKworCS8q CisJICogRmlyc3QgY2hlY2sgdGhlIHNlcXVlbmNlIGZpbHRlci4KKwkgKgorCSAqIFdlIGhh bmRsZSBqdXN0IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9TRVFVRU5DRSBoZXJlLgorCSAqLwor CWlmICghcmVsZW50cnktPnB1YmFjdGlvbnMucHVic2VxdWVuY2UpCisJCXJldHVybjsKKwor CU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOworCWxvZ2ljYWxyZXBfd3Jp dGVfc2VxdWVuY2UoY3R4LT5vdXQsCisJCQkJCQkJICByZWwsCisJCQkJCQkJICB4aWQsCisJ CQkJCQkJICBzZXF1ZW5jZV9sc24sCisJCQkJCQkJICB0cmFuc2FjdGlvbmFsLAorCQkJCQkJ CSAgbGFzdF92YWx1ZSwKKwkJCQkJCQkgIGxvZ19jbnQsCisJCQkJCQkJICBpc19jYWxsZWQp OworCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7Cit9CisKIC8qCiAgKiBDdXJyZW50 bHkgd2UgYWx3YXlzIGZvcndhcmQuCiAgKi8KQEAgLTExNDAsNyArMTIwMyw4IEBAIGdldF9y ZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIE9pZCByZWxpZCkKIAkJZW50cnkt PnN0cmVhbWVkX3R4bnMgPSBOSUw7CiAJCWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQgPSBmYWxz ZTsKIAkJZW50cnktPnB1YmFjdGlvbnMucHViaW5zZXJ0ID0gZW50cnktPnB1YmFjdGlvbnMu cHVidXBkYXRlID0KLQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IGVudHJ5LT5w dWJhY3Rpb25zLnB1YnRydW5jYXRlID0gZmFsc2U7CisJCQllbnRyeS0+cHViYWN0aW9ucy5w dWJkZWxldGUgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSA9CisJCQllbnRyeS0+ cHViYWN0aW9ucy5wdWJzZXF1ZW5jZSA9IGZhbHNlOwogCQllbnRyeS0+cHVibGlzaF9hc19y ZWxpZCA9IEludmFsaWRPaWQ7CiAJCWVudHJ5LT5tYXAgPSBOVUxMOwkJLyogd2lsbCBiZSBz ZXQgYnkgbWF5YmVfc2VuZF9zY2hlbWEoKSBpZgogCQkJCQkJCQkgKiBuZWVkZWQgKi8KQEAg LTExNjAsNiArMTIyNCw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRh dGEsIE9pZCByZWxpZCkKIAkJTGlzdAkgICAqc2NoZW1hUHViaWRzID0gR2V0U2NoZW1hUHVi bGljYXRpb25zKHNjaGVtYUlkKTsKIAkJTGlzdENlbGwgICAqbGM7CiAJCU9pZAkJCXB1Ymxp c2hfYXNfcmVsaWQgPSByZWxpZDsKKwkJYm9vbAkJaXNfc2VxdWVuY2UgPSAoZ2V0X3JlbF9y ZWxraW5kKHJlbGlkKSA9PSBSRUxLSU5EX1NFUVVFTkNFKTsKIAogCQkvKiBSZWxvYWQgcHVi bGljYXRpb25zIGlmIG5lZWRlZCBiZWZvcmUgdXNlLiAqLwogCQlpZiAoIXB1YmxpY2F0aW9u c192YWxpZCkKQEAgLTExODMsMTIgKzEyNDgsMjMgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBH T3V0cHV0RGF0YSAqZGF0YSwgT2lkIHJlbGlkKQogCQkJUHVibGljYXRpb24gKnB1YiA9IGxm aXJzdChsYyk7CiAJCQlib29sCQlwdWJsaXNoID0gZmFsc2U7CiAKLQkJCWlmIChwdWItPmFs bHRhYmxlcykKKwkJCWlmIChwdWItPmFsbHRhYmxlcyAmJiAoIWlzX3NlcXVlbmNlKSkKIAkJ CXsKIAkJCQlwdWJsaXNoID0gdHJ1ZTsKIAkJCQlpZiAocHViLT5wdWJ2aWFyb290ICYmIGFt X3BhcnRpdGlvbikKIAkJCQkJcHVibGlzaF9hc19yZWxpZCA9IGxsYXN0X29pZChnZXRfcGFy dGl0aW9uX2FuY2VzdG9ycyhyZWxpZCkpOwogCQkJfQorCQkJZWxzZSBpZiAocHViLT5hbGxz ZXF1ZW5jZXMgJiYgaXNfc2VxdWVuY2UpCisJCQl7CisJCQkJcHVibGlzaCA9IHRydWU7CisJ CQl9CisKKwkJCS8qIGlmIGEgc2VxdWVuY2UsIGp1c3QgY3Jvc3MtY2hlY2sgdGhlIGxpc3Qg b2YgcHVibGljYXRpb25zICovCisJCQlpZiAoIXB1Ymxpc2ggJiYgaXNfc2VxdWVuY2UpCisJ CQl7CisJCQkJaWYgKGxpc3RfbWVtYmVyX29pZChwdWJpZHMsIHB1Yi0+b2lkKSkKKwkJCQkJ cHVibGlzaCA9IHRydWU7CisJCQl9CiAKIAkJCWlmICghcHVibGlzaCkKIAkJCXsKQEAgLTEy NDMsMTAgKzEzMTksMTIgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0 YSwgT2lkIHJlbGlkKQogCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSB8PSBwdWIt PnB1YmFjdGlvbnMucHVidXBkYXRlOwogCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0 ZSB8PSBwdWItPnB1YmFjdGlvbnMucHViZGVsZXRlOwogCQkJCWVudHJ5LT5wdWJhY3Rpb25z LnB1YnRydW5jYXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZTsKKwkJCQllbnRy eS0+cHViYWN0aW9ucy5wdWJzZXF1ZW5jZSB8PSBwdWItPnB1YmFjdGlvbnMucHVic2VxdWVu Y2U7CiAJCQl9CiAKIAkJCWlmIChlbnRyeS0+cHViYWN0aW9ucy5wdWJpbnNlcnQgJiYgZW50 cnktPnB1YmFjdGlvbnMucHVidXBkYXRlICYmCi0JCQkJZW50cnktPnB1YmFjdGlvbnMucHVi ZGVsZXRlICYmIGVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlKQorCQkJCWVudHJ5LT5w dWJhY3Rpb25zLnB1YmRlbGV0ZSAmJiBlbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSAm JgorCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnNlcXVlbmNlKQogCQkJCWJyZWFrOwogCQl9 CiAKQEAgLTEzOTEsNiArMTQ2OSw3IEBAIHJlbF9zeW5jX2NhY2hlX3B1YmxpY2F0aW9uX2Ni KERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiAJCWVudHJ5LT5w dWJhY3Rpb25zLnB1YnVwZGF0ZSA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJk ZWxldGUgPSBmYWxzZTsKIAkJZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBmYWxz ZTsKKwkJZW50cnktPnB1YmFjdGlvbnMucHVic2VxdWVuY2UgPSBmYWxzZTsKIAl9CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IDEwNWQ4ZDQ2MDFjLi4xZjg2 MzRiNTBhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01NTg1LDYg KzU1ODUsNyBAQCBHZXRSZWxhdGlvblB1YmxpY2F0aW9uQWN0aW9ucyhSZWxhdGlvbiByZWxh dGlvbikKIAkJcHViYWN0aW9ucy0+cHVidXBkYXRlIHw9IHB1YmZvcm0tPnB1YnVwZGF0ZTsK IAkJcHViYWN0aW9ucy0+cHViZGVsZXRlIHw9IHB1YmZvcm0tPnB1YmRlbGV0ZTsKIAkJcHVi YWN0aW9ucy0+cHVidHJ1bmNhdGUgfD0gcHViZm9ybS0+cHVidHJ1bmNhdGU7CisJCXB1YmFj dGlvbnMtPnB1YnNlcXVlbmNlIHw9IHB1YmZvcm0tPnB1YnNlcXVlbmNlOwogCiAJCVJlbGVh c2VTeXNDYWNoZSh0dXApOwogCkBAIC01NTkzLDcgKzU1OTQsOCBAQCBHZXRSZWxhdGlvblB1 YmxpY2F0aW9uQWN0aW9ucyhSZWxhdGlvbiByZWxhdGlvbikKIAkJICogb3RoZXIgcHVibGlj YXRpb25zLgogCQkgKi8KIAkJaWYgKHB1YmFjdGlvbnMtPnB1Ymluc2VydCAmJiBwdWJhY3Rp b25zLT5wdWJ1cGRhdGUgJiYKLQkJCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSAmJiBwdWJhY3Rp b25zLT5wdWJ0cnVuY2F0ZSkKKwkJCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSAmJiBwdWJhY3Rp b25zLT5wdWJ0cnVuY2F0ZSAmJgorCQkJcHViYWN0aW9ucy0+cHVic2VxdWVuY2UpCiAJCQli cmVhazsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBi L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCAyZjQxMmNhM2RiMy4uZTMwYmY3 YjFiNTUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9z cmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTE2NDcsMTMgKzE2NDcsMTMgQEAgcHNx bF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJ Q09NUExFVEVfV0lUSCgiQUREIiwgIkRST1AiLCAiT1dORVIgVE8iLCAiUkVOQU1FIFRPIiwg IlNFVCIpOwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBBREQgKi8KIAllbHNlIGlm IChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIikpCi0J CUNPTVBMRVRFX1dJVEgoIkFMTCBUQUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7CisJCUNP TVBMRVRFX1dJVEgoIkFMTCBUQUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFfFNFUVVFTkNFIik7 CiAJLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IERST1AgKi8KIAllbHNlIGlmIChNYXRj aGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRFJPUCIpKQotCQlDT01Q TEVURV9XSVRIKCJBTEwgVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIpOworCQlDT01QTEVU RV9XSVRIKCJBTEwgVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRXxTRVFVRU5DRSIpOwogCS8q IEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBTRVQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJB TFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIikpCi0JCUNPTVBMRVRFX1dJ VEgoIigiLCAiQUxMIFRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKKwkJQ09NUExFVEVf V0lUSCgiKCIsICJBTEwgVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRXxTRVFVRU5DRSIpOwog CWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJB RER8RFJPUHxTRVQiLCAiQUxMIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiKSkKIAkJQ09N UExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9zY2hlbWFzCiAJCQkJCQkJIiBB TkQgbnNwbmFtZSAhPSAncGdfY2F0YWxvZycgIgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK aW5kZXggNzlkNzg3Y2QyNmEuLmNkOTI5ZjZlMGUyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKQEAgLTExNTMxLDYgKzExNTMxLDExIEBACiAgIHByb3ZvbGF0aWxlID0+ICdzJywg cHJvcmV0dHlwZSA9PiAnb2lkJywgcHJvYXJndHlwZXMgPT4gJ3RleHQnLAogICBwcm9hbGxh cmd0eXBlcyA9PiAne3RleHQsb2lkfScsIHByb2FyZ21vZGVzID0+ICd7aSxvfScsCiAgIHBy b2FyZ25hbWVzID0+ICd7cHVibmFtZSxyZWxpZH0nLCBwcm9zcmMgPT4gJ3BnX2dldF9wdWJs aWNhdGlvbl90YWJsZXMnIH0sCit7IG9pZCA9PiAnODAwMCcsIGRlc2NyID0+ICdnZXQgT0lE cyBvZiBzZXF1ZW5jZXMgaW4gYSBwdWJsaWNhdGlvbicsCisgIHByb25hbWUgPT4gJ3BnX2dl dF9wdWJsaWNhdGlvbl9zZXF1ZW5jZXMnLCBwcm9yb3dzID0+ICcxMDAwJywgcHJvcmV0c2V0 ID0+ICd0JywKKyAgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdvaWQnLCBw cm9hcmd0eXBlcyA9PiAndGV4dCcsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4dCxvaWR9 JywgcHJvYXJnbW9kZXMgPT4gJ3tpLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3twdWJuYW1l LHJlbGlkfScsIHByb3NyYyA9PiAncGdfZ2V0X3B1YmxpY2F0aW9uX3NlcXVlbmNlcycgfSwK IHsgb2lkID0+ICc2MTIxJywKICAgZGVzY3IgPT4gJ3JldHVybnMgd2hldGhlciBhIHJlbGF0 aW9uIGNhbiBiZSBwYXJ0IG9mIGEgcHVibGljYXRpb24nLAogICBwcm9uYW1lID0+ICdwZ19y ZWxhdGlvbl9pc19wdWJsaXNoYWJsZScsIHByb3ZvbGF0aWxlID0+ICdzJywKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCA5MDJmMmYyZjBkYS4uYjQ0YmIwZTVl MDYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTQwLDYgKzQw LDEyIEBAIENBVEFMT0cocGdfcHVibGljYXRpb24sNjEwNCxQdWJsaWNhdGlvblJlbGF0aW9u SWQpCiAJICovCiAJYm9vbAkJcHViYWxsdGFibGVzOwogCisJLyoKKwkgKiBpbmRpY2F0ZXMg dGhhdCB0aGlzIGlzIHNwZWNpYWwgcHVibGljYXRpb24gd2hpY2ggc2hvdWxkIGVuY29tcGFz cyBhbGwKKwkgKiBzZXF1ZW5jZXMgaW4gdGhlIGRhdGFiYXNlIChleGNlcHQgZm9yIHRoZSB1 bmxvZ2dlZCBhbmQgdGVtcCBvbmVzKQorCSAqLworCWJvb2wJCXB1YmFsbHNlcXVlbmNlczsK KwogCS8qIHRydWUgaWYgaW5zZXJ0cyBhcmUgcHVibGlzaGVkICovCiAJYm9vbAkJcHViaW5z ZXJ0OwogCkBAIC01Miw2ICs1OCw5IEBAIENBVEFMT0cocGdfcHVibGljYXRpb24sNjEwNCxQ dWJsaWNhdGlvblJlbGF0aW9uSWQpCiAJLyogdHJ1ZSBpZiB0cnVuY2F0ZXMgYXJlIHB1Ymxp c2hlZCAqLwogCWJvb2wJCXB1YnRydW5jYXRlOwogCisJLyogdHJ1ZSBpZiBzZXF1ZW5jZXMg YXJlIHB1Ymxpc2hlZCAqLworCWJvb2wJCXB1YnNlcXVlbmNlOworCiAJLyogdHJ1ZSBpZiBw YXJ0aXRpb24gY2hhbmdlcyBhcmUgcHVibGlzaGVkIHVzaW5nIHJvb3Qgc2NoZW1hICovCiAJ Ym9vbAkJcHVidmlhcm9vdDsKIH0gRm9ybURhdGFfcGdfcHVibGljYXRpb247CkBAIC03Miw2 ICs4MSw3IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uQWN0aW9ucwogCWJvb2wJCXB1 YnVwZGF0ZTsKIAlib29sCQlwdWJkZWxldGU7CiAJYm9vbAkJcHVidHJ1bmNhdGU7CisJYm9v bAkJcHVic2VxdWVuY2U7CiB9IFB1YmxpY2F0aW9uQWN0aW9uczsKIAogdHlwZWRlZiBzdHJ1 Y3QgUHVibGljYXRpb24KQEAgLTc5LDYgKzg5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGlj YXRpb24KIAlPaWQJCQlvaWQ7CiAJY2hhcgkgICAqbmFtZTsKIAlib29sCQlhbGx0YWJsZXM7 CisJYm9vbAkJYWxsc2VxdWVuY2VzOwogCWJvb2wJCXB1YnZpYXJvb3Q7CiAJUHVibGljYXRp b25BY3Rpb25zIHB1YmFjdGlvbnM7CiB9IFB1YmxpY2F0aW9uOwpAQCAtMTIxLDYgKzEzMiw5 IEBAIGV4dGVybiBMaXN0ICpHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMoTGlzdCAq cmVzdWx0LAogCQkJCQkJCQkJCQlQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCiAJ CQkJCQkJCQkJCU9pZCByZWxpZCk7CiAKK2V4dGVybiBMaXN0ICpHZXRBbGxTZXF1ZW5jZXNQ dWJsaWNhdGlvblJlbGF0aW9ucyh2b2lkKTsKK2V4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlv blNlcXVlbmNlUmVsYXRpb25zKE9pZCBwdWJpZCk7CisKIGV4dGVybiBib29sIGlzX3B1Ymxp c2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4gYm9vbCBpc19zY2hlbWFf cHVibGljYXRpb24oT2lkIHB1YmlkKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIHB1YmxpY2F0 aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqdGFyZ2V0 cmVsLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaCBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgKaW5kZXggNTkxOWZiOTBlZTEuLmMyOGU4 Njk1Y2I4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oCisr KyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgKQEAgLTYwLDYgKzYwLDcgQEAg ZXh0ZXJuIE9iamVjdEFkZHJlc3MgRGVmaW5lU2VxdWVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRl LCBDcmVhdGVTZXFTdG10ICpzdG10KTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVyU2Vx dWVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclNlcVN0bXQgKnN0bXQpOwogZXh0ZXJu IHZvaWQgRGVsZXRlU2VxdWVuY2VUdXBsZShPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgUmVz ZXRTZXF1ZW5jZShPaWQgc2VxX3JlbGlkKTsKK2V4dGVybiB2b2lkIFJlc2V0U2VxdWVuY2Uy KE9pZCBzZXFfcmVsaWQsIGludDY0IGxhc3RfdmFsdWUsIGludDY0IGxvZ19jbnQsIGJvb2wg aXNfY2FsbGVkKTsKIGV4dGVybiB2b2lkIFJlc2V0U2VxdWVuY2VDYWNoZXModm9pZCk7CiAK IGV4dGVybiB2b2lkIHNlcV9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcnB0cik7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKaW5kZXggNGM1YThhMzliZjEuLmQzMmJhNDk4YTdjIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zNjUzLDYgKzM2NTMsMTAgQEAgdHlwZWRlZiBlbnVt IFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUKIAlQVUJMSUNBVElPTk9CSl9UQUJMRV9JTl9TQ0hF TUEsIC8qIFRhYmxlcyBpbiBzY2hlbWEgdHlwZSAqLwogCVBVQkxJQ0FUSU9OT0JKX1RBQkxF X0lOX0NVUl9TQ0hFTUEsIC8qIEdldCB0aGUgZmlyc3QgZWxlbWVudCBmcm9tCiAJCQkJCQkJ CQkJICogc2VhcmNoX3BhdGggKi8KKwlQVUJMSUNBVElPTk9CSl9TRVFVRU5DRSwJCS8qIFNl cXVlbmNlIHR5cGUgKi8KKwlQVUJMSUNBVElPTk9CSl9TRVFVRU5DRV9JTl9TQ0hFTUEsIC8q IFNlcXVlbmNlcyBpbiBzY2hlbWEgdHlwZSAqLworCVBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNF X0lOX0NVUl9TQ0hFTUEsIC8qIEdldCB0aGUgZmlyc3QgZWxlbWVudCBmcm9tCisJCQkJCQkJ CQkJICogc2VhcmNoX3BhdGggKi8KIAlQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT04gLyog Q29udGludWF0aW9uIG9mIHByZXZpb3VzIHR5cGUgKi8KIH0gUHVibGljYXRpb25PYmpTcGVj VHlwZTsKIApAQCAtMzY3Miw2ICszNjc2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlUHVi bGljYXRpb25TdG10CiAJTGlzdAkgICAqb3B0aW9uczsJCS8qIExpc3Qgb2YgRGVmRWxlbSBu b2RlcyAqLwogCUxpc3QJICAgKnB1Ym9iamVjdHM7CQkvKiBPcHRpb25hbCBsaXN0IG9mIHB1 YmxpY2F0aW9uIG9iamVjdHMgKi8KIAlib29sCQlmb3JfYWxsX3RhYmxlczsgLyogU3BlY2lh bCBwdWJsaWNhdGlvbiBmb3IgYWxsIHRhYmxlcyBpbiBkYiAqLworCWJvb2wJCWZvcl9hbGxf c2VxdWVuY2VzOyAvKiBTcGVjaWFsIHB1YmxpY2F0aW9uIGZvciBhbGwgc2VxdWVuY2VzIGlu IGRiICovCiB9IENyZWF0ZVB1YmxpY2F0aW9uU3RtdDsKIAogdHlwZWRlZiBzdHJ1Y3QgQWx0 ZXJQdWJsaWNhdGlvblN0bXQKQEAgLTM2ODgsNiArMzY5Myw3IEBAIHR5cGVkZWYgc3RydWN0 IEFsdGVyUHVibGljYXRpb25TdG10CiAJICovCiAJTGlzdAkgICAqcHVib2JqZWN0czsJCS8q IE9wdGlvbmFsIGxpc3Qgb2YgcHVibGljYXRpb24gb2JqZWN0cyAqLwogCWJvb2wJCWZvcl9h bGxfdGFibGVzOyAvKiBTcGVjaWFsIHB1YmxpY2F0aW9uIGZvciBhbGwgdGFibGVzIGluIGRi ICovCisJYm9vbAkJZm9yX2FsbF9zZXF1ZW5jZXM7IC8qIFNwZWNpYWwgcHVibGljYXRpb24g Zm9yIGFsbCBzZXF1ZW5jZXMgaW4gZGIgKi8KIAlEZWZFbGVtQWN0aW9uIGFjdGlvbjsJCS8q IFdoYXQgYWN0aW9uIHRvIHBlcmZvcm0gd2l0aCB0aGUKIAkJCQkJCQkJICogdGFibGVzL3Nj aGVtYXMgKi8KIH0gQWx0ZXJQdWJsaWNhdGlvblN0bXQ7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWxwcm90by5oCmluZGV4IDgzNzQxZGNmNDI0Li5mYzE3ODJjMTI1ZiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTYwLDYgKzYwLDcg QEAgdHlwZWRlZiBlbnVtIExvZ2ljYWxSZXBNc2dUeXBlCiAJTE9HSUNBTF9SRVBfTVNHX1JF TEFUSU9OID0gJ1InLAogCUxPR0lDQUxfUkVQX01TR19UWVBFID0gJ1knLAogCUxPR0lDQUxf UkVQX01TR19NRVNTQUdFID0gJ00nLAorCUxPR0lDQUxfUkVQX01TR19TRVFVRU5DRSA9ICdY JywJLyogRklYTUUgY2hhbmdlICovCiAJTE9HSUNBTF9SRVBfTVNHX0JFR0lOX1BSRVBBUkUg PSAnYicsCiAJTE9HSUNBTF9SRVBfTVNHX1BSRVBBUkUgPSAnUCcsCiAJTE9HSUNBTF9SRVBf TVNHX0NPTU1JVF9QUkVQQVJFRCA9ICdLJywKQEAgLTExNyw2ICsxMTgsMTggQEAgdHlwZWRl ZiBzdHJ1Y3QgTG9naWNhbFJlcFR5cAogCWNoYXIJICAgKnR5cG5hbWU7CQkvKiBuYW1lIG9m IHRoZSByZW1vdGUgdHlwZSAqLwogfSBMb2dpY2FsUmVwVHlwOwogCisvKiBTZXF1ZW5jZSBp bmZvICovCit0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwU2VxdWVuY2UKK3sKKwlPaWQJCQly ZW1vdGVpZDsJCS8qIHVuaXF1ZSBpZCBvZiB0aGUgcmVtb3RlIHNlcXVlbmNlICovCisJY2hh cgkgICAqbnNwbmFtZTsJCS8qIHNjaGVtYSBuYW1lIG9mIHJlbW90ZSBzZXF1ZW5jZSAqLwor CWNoYXIJICAgKnNlcW5hbWU7CQkvKiBuYW1lIG9mIHRoZSByZW1vdGUgc2VxdWVuY2UgKi8K Kwlib29sCQl0cmFuc2FjdGlvbmFsOworCWludDY0CQlsYXN0X3ZhbHVlOworCWludDY0CQls b2dfY250OworCWJvb2wJCWlzX2NhbGxlZDsKK30gTG9naWNhbFJlcFNlcXVlbmNlOworCiAv KiBUcmFuc2FjdGlvbiBpbmZvICovCiB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwQmVnaW5E YXRhCiB7CkBAIC0yMjcsNiArMjQwLDEyIEBAIGV4dGVybiBMaXN0ICpsb2dpY2FscmVwX3Jl YWRfdHJ1bmNhdGUoU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJCSAgYm9vbCAqY2FzY2FkZSwg Ym9vbCAqcmVzdGFydF9zZXFzKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfbWVz c2FnZShTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNu LAogCQkJCQkJCQkJIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LCBT aXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBf d3JpdGVfc2VxdWVuY2UoU3RyaW5nSW5mbyBvdXQsIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJ CSAgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLCAKKwkJCQkJCQkJCSAgYm9v bCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCQkJICBpbnQ2NCBsYXN0X3ZhbHVlLCBpbnQ2NCBs b2dfY250LAorCQkJCQkJCQkJICBib29sIGlzX2NhbGxlZCk7CitleHRlcm4gdm9pZCBsb2dp Y2FscmVwX3JlYWRfc2VxdWVuY2UoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFNlcXVlbmNl ICpzZXFkYXRhKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfcmVsKFN0cmluZ0lu Zm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJIFJlbGF0aW9uIHJlbCk7CiBl eHRlcm4gTG9naWNhbFJlcFJlbGF0aW9uICpsb2dpY2FscmVwX3JlYWRfcmVsKFN0cmluZ0lu Zm8gaW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQu aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKaW5kZXggMGRjNDYwZmI3 MGEuLjk3ZWIyYTdlZjE1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9w Z291dHB1dC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKQEAg LTI4LDYgKzI4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdPdXRwdXREYXRhCiAJYm9vbAkJc3Ry ZWFtaW5nOwogCWJvb2wJCW1lc3NhZ2VzOwogCWJvb2wJCXR3b19waGFzZTsKKwlib29sCQlz ZXF1ZW5jZXM7CiB9IFBHT3V0cHV0RGF0YTsKIAogI2VuZGlmCQkJCQkJCS8qIFBHT1VUUFVU X0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggYjU4YjA2MmIx MGQuLjZlYjRmMTEwMDM4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApA QCAtMTQ1MSw2ICsxNDUxLDE0IEBAIHBnX3ByZXBhcmVkX3hhY3RzfCBTRUxFQ1QgcC50cmFu c2FjdGlvbiwKICAgIEZST00gKChwZ19wcmVwYXJlZF94YWN0KCkgcCh0cmFuc2FjdGlvbiwg Z2lkLCBwcmVwYXJlZCwgb3duZXJpZCwgZGJpZCkKICAgICAgTEVGVCBKT0lOIHBnX2F1dGhp ZCB1IE9OICgocC5vd25lcmlkID0gdS5vaWQpKSkKICAgICAgTEVGVCBKT0lOIHBnX2RhdGFi YXNlIGQgT04gKChwLmRiaWQgPSBkLm9pZCkpKTsKK3BnX3B1YmxpY2F0aW9uX3NlcXVlbmNl c3wgU0VMRUNUIHAucHVibmFtZSwKKyAgICBuLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKKyAg ICBjLnJlbG5hbWUgQVMgc2VxdWVuY2VuYW1lCisgICBGUk9NIHBnX3B1YmxpY2F0aW9uIHAs CisgICAgTEFURVJBTCBwZ19nZXRfcHVibGljYXRpb25fc2VxdWVuY2VzKChwLnB1Ym5hbWUp Ojp0ZXh0KSBncHQocmVsaWQpLAorICAgIChwZ19jbGFzcyBjCisgICAgIEpPSU4gcGdfbmFt ZXNwYWNlIG4gT04gKChuLm9pZCA9IGMucmVsbmFtZXNwYWNlKSkpCisgIFdIRVJFIChjLm9p ZCA9IGdwdC5yZWxpZCk7CiBwZ19wdWJsaWNhdGlvbl90YWJsZXN8IFNFTEVDVCBwLnB1Ym5h bWUsCiAgICAgbi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAgICAgYy5yZWxuYW1lIEFTIHRh YmxlbmFtZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI3X3NlcXVl bmNlcy5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyN19zZXF1ZW5jZXMucGwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZkOTQxNjE5MDcxCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI3X3NlcXVlbmNlcy5w bApAQCAtMCwwICsxLDE5NiBAQAorCisjIENvcHlyaWdodCAoYykgMjAyMSwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUaGlzIHRlc3RzIHRoYXQgc2VxdWVu Y2VzIGFyZSByZXBsaWNhdGVkIGNvcnJlY3RseSBieSBsb2dpY2FsIHJlcGxpY2F0aW9uCit1 c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZSB0ZXN0 cyA9PiA2OworCisjIEluaXRpYWxpemUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxp c2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Cisk bm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwor JG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2NyaWJlciBub2RlCitt eSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdz dWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcg PT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisjIENyZWF0ZSBz b21lIHByZWV4aXN0aW5nIGNvbnRlbnQgb24gcHVibGlzaGVyCitteSAkZGRsID0gcXEoCisJ Q1JFQVRFIFNFUVVFTkNFIHM7CispOworCisjIFNldHVwIHN0cnVjdHVyZSBvbiB0aGUgcHVi bGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAkZGRsKTsK KworIyBDcmVhdGUgc29tZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlciwgYW5k IGFuIGV4dHJhIHNlcXVlbmNlIHRoYXQKKyMgd2UnbGwgY3JlYXRlIG9uIHRoZSBwdWJsaXNo ZXIgbGF0ZXIKKyRkZGwgPSBxcSgKKwlDUkVBVEUgU0VRVUVOQ0UgczsKKwlDUkVBVEUgU0VR VUVOQ0UgczI7CispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgJGRkbCk7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1Ymxpc2hl cl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdy ZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFBVQkxJQ0FUSU9OIHNlcV9wdWIiKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQUxURVIgUFVCTElDQVRJT04gc2VxX3B1YiBBREQgU0VRVUVOQ0Ug cyIpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JF QVRFIFNVQlNDUklQVElPTiBzZXFfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0 cicgUFVCTElDQVRJT04gc2VxX3B1YiBXSVRIIChzbG90X25hbWUgPSBzZXFfc3ViX3Nsb3Qp IgorKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzZXFfc3ViJyk7 CisKKyMgV2FpdCBmb3IgaW5pdGlhbCBzeW5jIHRvIGZpbmlzaCBhcyB3ZWxsCitteSAkc3lu Y2VkX3F1ZXJ5ID0KKyAgIlNFTEVDVCBjb3VudCgxKSA9IDAgRlJPTSBwZ19zdWJzY3JpcHRp b25fcmVsIFdIRVJFIHNyc3Vic3RhdGUgTk9UIElOICgncycsICdyJyk7IjsKKyRub2RlX3N1 YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9xdWVyeSkK KyAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBz eW5jaHJvbml6ZSBkYXRhIjsKKworIyBJbnNlcnQgaW5pdGlhbCB0ZXN0IGRhdGEKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCS0tIGdlbmVyYXRl IGEgbnVtYmVyIG9mIHZhbHVlcyB1c2luZyB0aGUgc2VxdWVuY2UKKwlTRUxFQ1QgbmV4dHZh bCgncycpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKykpOworCiskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3NlcV9zdWInKTsKKworIyBDaGVjayB0aGUgZGF0 YSBvbiBzdWJzY3JpYmVyCitteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVNFTEVDVCAqIEZST00gczsKKykpOworCitpcygg JHJlc3VsdCwgJzEzMnwwfHQnLAorCSdjaGVjayByZXBsaWNhdGVkIHNlcXVlbmNlIHZhbHVl cyBvbiBzdWJzY3JpYmVyJyk7CisKKworIyBhZHZhbmNlIHRoZSBzZXF1ZW5jZSBpbiBhIHJv bGxlZC1iYWNrIHRyYW5zYWN0aW9uIC0gc2hvdWxkIG5vdCBiZSByZXBsaWNhdGVkCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlCRUdJTjsKKwlT RUxFQ1QgbmV4dHZhbCgncycpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKwlST0xM QkFDSzsKKykpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3NlcV9z dWInKTsKKworIyBDaGVjayB0aGUgZGF0YSBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVNFTEVDVCAq IEZST00gczsKKykpOworCitpcyggJHJlc3VsdCwgJzIzMXwwfHQnLAorCSdjaGVjayByZXBs aWNhdGVkIHNlcXVlbmNlIHZhbHVlcyBvbiBzdWJzY3JpYmVyJyk7CisKKworIyBjcmVhdGUg YSBuZXcgc2VxdWVuY2UgYW5kIHJvbGwgaXQgYmFjayAtIHNob3VsZCBub3QgYmUgcmVwbGlj YXRlZCwgZHVlIHRvCisjIHRoZSB0cmFuc2FjdGlvbmFsIGJlaGF2aW9yCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlCRUdJTjsKKwlDUkVBVEUg U0VRVUVOQ0UgczI7CisJQUxURVIgUFVCTElDQVRJT04gc2VxX3B1YiBBREQgU0VRVUVOQ0Ug czI7CisJU0VMRUNUIG5leHR2YWwoJ3MyJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAp OworCVJPTExCQUNLOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXIKKyRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJ U0VMRUNUICogRlJPTSBzMjsKKykpOworCitpcyggJHJlc3VsdCwgJzF8MHxmJywKKwknY2hl Y2sgcmVwbGljYXRlZCBzZXF1ZW5jZSB2YWx1ZXMgb24gc3Vic2NyaWJlcicpOworCisKKyMg Y3JlYXRlIGEgbmV3IHNlcXVlbmNlLCBhZHZhbmNlIGl0IGluIGEgcm9sbGVkLWJhY2sgdHJh bnNhY3Rpb24sIGJ1dCBjb21taXQKKyMgdGhlIGNyZWF0ZSAtIHRoZSBhZHZhbmNlIHNob3Vs ZCBiZSByZXBsaWNhdGVkIG5ldmVydGhlbGVzcworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQkVHSU47CisJQ1JFQVRFIFNFUVVFTkNFIHMyOwor CUFMVEVSIFBVQkxJQ0FUSU9OIHNlcV9wdWIgQUREIFNFUVVFTkNFIHMyOworCVNBVkVQT0lO VCBzcDE7CisJU0VMRUNUIG5leHR2YWwoJ3MyJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwx MDApOworCVJPTExCQUNLIFRPIHNwMTsKKwlDT01NSVQ7CispKTsKKworJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzZXFfc3ViJyk7CisKKyMgV2FpdCBmb3Igc3luYyBv ZiB0aGUgc2Vjb25kIHNlcXVlbmNlIHdlIGp1c3QgYWRkZWQgdG8gZmluaXNoCiskc3luY2Vk X3F1ZXJ5ID0KKyAgIlNFTEVDVCBjb3VudCgxKSA9IDAgRlJPTSBwZ19zdWJzY3JpcHRpb25f cmVsIFdIRVJFIHNyc3Vic3RhdGUgTk9UIElOICgncycsICdyJyk7IjsKKyRub2RlX3N1YnNj cmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9xdWVyeSkKKyAg b3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBzeW5j aHJvbml6ZSBkYXRhIjsKKworIyBDaGVjayB0aGUgZGF0YSBvbiBzdWJzY3JpYmVyCiskcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAor CVNFTEVDVCAqIEZST00gczI7CispKTsKKworaXMoICRyZXN1bHQsICcxMzJ8MHx0JywKKwkn Y2hlY2sgcmVwbGljYXRlZCBzZXF1ZW5jZSB2YWx1ZXMgb24gc3Vic2NyaWJlcicpOworCisK KyMgYWR2YW5jZSB0aGUgbmV3IHNlcXVlbmNlIGluIGEgdHJhbnNhY3Rpb24sIGFuZCByb2xs IGl0IGJhY2sgLSBpbiB0aGlzIGNhc2UKKyMgaXQgc2hvdWxkIG5vdCBiZSByZXBsaWNhdGVk IGF0IGNvbW1pdAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXEoCisJQkVHSU47CisJU0VMRUNUIG5leHR2YWwoJ3MyJykgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwxMDApOworCVJPTExCQUNLOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmli ZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcXEoCisJU0VMRUNUICogRlJPTSBzMjsKKykpOworCitpcyggJHJlc3VsdCwgJzEzMnww fHQnLAorCSdjaGVjayByZXBsaWNhdGVkIHNlcXVlbmNlIHZhbHVlcyBvbiBzdWJzY3JpYmVy Jyk7CisKKworIyBhZHZhbmNlIHRoZSBzZXF1ZW5jZSBpbiBhIHN1YnRyYW5zYWN0aW9uIC0g dGhlIHN1YnRyYW5zYWN0aW9uIGdldHMgcm9sbGVkCisjIGJhY2ssIGJ1dCBjb21taXQgdGhl IG1haW4gb25lIC0gdGhlIGNoYW5nZXMgc2hvdWxkIHN0aWxsIGJlIHJlcGxpY2F0ZWQKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUJFR0lOOwor CVNBVkVQT0lOVCBzMTsKKwlTRUxFQ1QgbmV4dHZhbCgnczInKSBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLDEwMCk7CisJUk9MTEJBQ0sgVE8gczE7CisJQ09NTUlUOworKSk7CisKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRo ZSBkYXRhIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJU0VMRUNUICogRlJPTSBzMjsKKykpOworCitp cyggJHJlc3VsdCwgJzMzMHwwfHQnLAorCSdjaGVjayByZXBsaWNhdGVkIHNlcXVlbmNlIHZh bHVlcyBvbiBzdWJzY3JpYmVyJyk7CisKKworJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnZmFz dCcpOworJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdmYXN0Jyk7Ci0tIAoyLjMxLjEKCg== --------------G7eZZrvWqjxk09Bi4Hg0i1nm Content-Type: text/x-patch; charset=UTF-8; name="0002-Add-support-for-decoding-sequences-to-test_-20211214.patch" Content-Disposition: attachment; filename*0="0002-Add-support-for-decoding-sequences-to-test_-20211214.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3MWU5NWFhN2VhNzAxZTMwNWMyYTk1NTE2YjZiMzdjMjJlMGI1ZTdiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogRnJpLCAyNCBTZXAgMjAyMSAwMDo0MjowNCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMi8zXSBBZGQgc3VwcG9ydCBmb3IgZGVjb2Rpbmcgc2VxdWVuY2VzIHRv IHRlc3RfZGVjb2RpbmcKCi0tLQogY29udHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlICAg ICAgICAgICAgICB8ICAgMyArLQogY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3Nl cXVlbmNlLm91dCB8IDMyNyArKysrKysrKysrKysrKysrKysrKwogY29udHJpYi90ZXN0X2Rl Y29kaW5nL3NxbC9zZXF1ZW5jZS5zcWwgICAgICB8IDExOSArKysrKysrCiBjb250cmliL3Rl c3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jICAgICAgIHwgIDY5ICsrKysrCiA0IGZpbGVz IGNoYW5nZWQsIDUxNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3NlcXVlbmNlLm91dAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvc2VxdWVuY2Uu c3FsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlIGIvY29u dHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlCmluZGV4IDlhMzFlMGI4Nzk1Li41NmRkYzNh YmFlYiAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlCisrKyBi L2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQpAQCAtNSw3ICs1LDggQEAgUEdGSUxF REVTQyA9ICJ0ZXN0X2RlY29kaW5nIC0gZXhhbXBsZSBvZiBhIGxvZ2ljYWwgZGVjb2Rpbmcg b3V0cHV0IHBsdWdpbiIKIAogUkVHUkVTUyA9IGRkbCB4YWN0IHJld3JpdGUgdG9hc3QgcGVy bWlzc2lvbnMgZGVjb2RpbmdfaW5feGFjdCBcCiAJZGVjb2RpbmdfaW50b19yZWwgYmluYXJ5 IHByZXBhcmVkIHJlcGxvcmlnaW4gdGltZSBtZXNzYWdlcyBcCi0Jc3BpbGwgc2xvdCB0cnVu Y2F0ZSBzdHJlYW0gc3RhdHMgdHdvcGhhc2UgdHdvcGhhc2Vfc3RyZWFtCisJc3BpbGwgc2xv dCB0cnVuY2F0ZSBzdHJlYW0gc3RhdHMgdHdvcGhhc2UgdHdvcGhhc2Vfc3RyZWFtIFwKKwlz ZXF1ZW5jZQogSVNPTEFUSU9OID0gbXhhY3QgZGVsYXllZF9zdGFydHVwIG9uZGlza19zdGFy dHVwIGNvbmN1cnJlbnRfZGRsX2RtbCBcCiAJb2xkZXN0X3htaW4gc25hcHNob3RfdHJhbnNm ZXIgc3VieGFjdF93aXRob3V0X3RvcCBjb25jdXJyZW50X3N0cmVhbSBcCiAJdHdvcGhhc2Vf c25hcHNob3QKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9z ZXF1ZW5jZS5vdXQgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvc2VxdWVuY2Uu b3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jM2MyYTE4YTM1 YgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9z ZXF1ZW5jZS5vdXQKQEAgLTAsMCArMSwzMjcgQEAKKy0tIHByZWRpY3RhYmlsaXR5CitTRVQg c3luY2hyb25vdXNfY29tbWl0ID0gb247CitTRUxFQ1QgJ2luaXQnIEZST00gcGdfY3JlYXRl X2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90JywgJ3Rlc3RfZGVj b2RpbmcnKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBpbml0CisoMSByb3cpCisKK0NS RUFURSBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlOworLS0gdGVzdCB0aGUgc2VxdWVuY2UgY2hh bmdlcyBieSBzZXZlcmFsIG5leHR2YWwoKSBjYWxscworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rf c2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgICAgMQorKDEgcm93KQor CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0t LS0KKyAgICAgICAyCisoMSByb3cpCisKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNl Jyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQorICAgICAgIDMKKygxIHJvdykKKworU0VMRUNU IG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAg ICAgNAorKDEgcm93KQorCistLSB0ZXN0IHRoZSBzZXF1ZW5jZSBjaGFuZ2VzIGJ5IHNldmVy YWwgQUxURVIgY29tbWFuZHMKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2UgSU5DUkVN RU5UIEJZIDEwOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFs IAorLS0tLS0tLS0tCisgICAgICAxNAorKDEgcm93KQorCitBTFRFUiBTRVFVRU5DRSB0ZXN0 X3NlcXVlbmNlIFNUQVJUIFdJVEggMzAwMDsKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVu Y2UgTUFYVkFMVUUgMTAwMDA7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlIFJFU1RB UlQgV0lUSCA0MDAwOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0 dmFsIAorLS0tLS0tLS0tCisgICAgNDAwMAorKDEgcm93KQorCistLSB0ZXN0IHRoZSBzZXF1 ZW5jZSBjaGFuZ2VzIGJ5IHNldmVyYWwgc2V0dmFsKCkgY2FsbHMKK1NFTEVDVCBzZXR2YWwo J3Rlc3Rfc2VxdWVuY2UnLCAzNTAwKTsKKyBzZXR2YWwgCistLS0tLS0tLQorICAgMzUwMAor KDEgcm93KQorCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwg CistLS0tLS0tLS0KKyAgICAzNTEwCisoMSByb3cpCisKK1NFTEVDVCBzZXR2YWwoJ3Rlc3Rf c2VxdWVuY2UnLCAzNTAwLCB0cnVlKTsKKyBzZXR2YWwgCistLS0tLS0tLQorICAgMzUwMAor KDEgcm93KQorCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwg CistLS0tLS0tLS0KKyAgICAzNTEwCisoMSByb3cpCisKK1NFTEVDVCBzZXR2YWwoJ3Rlc3Rf c2VxdWVuY2UnLCAzNTAwLCBmYWxzZSk7Cisgc2V0dmFsIAorLS0tLS0tLS0KKyAgIDM1MDAK KygxIHJvdykKKworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFs IAorLS0tLS0tLS0tCisgICAgMzUwMAorKDEgcm93KQorCistLSBzaG93IHJlc3VsdHMgYW5k IGRyb3Agc2VxdWVuY2UKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9j aGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywg JzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcwJywgJ3NraXAtc2VxdWVuY2VzJywgJzAnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEJFR0lOCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6 IHRyYW5zYWN0aW9uYWw6MSBsYXN0X3ZhbHVlOjEgbG9nX2NudDowIGlzX2NhbGxlZDowCisg Q09NTUlUCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6 MCBsYXN0X3ZhbHVlOjMzIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MQorIEJFR0lOCisgc2VxdWVu Y2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6MSBsYXN0X3ZhbHVlOjQg bG9nX2NudDowIGlzX2NhbGxlZDoxCisgQ09NTUlUCisgc2VxdWVuY2UgcHVibGljLnRlc3Rf c2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6MCBsYXN0X3ZhbHVlOjMzNCBsb2dfY250OjAgaXNf Y2FsbGVkOjEKKyBCRUdJTgorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFu c2FjdGlvbmFsOjEgbGFzdF92YWx1ZToxNCBsb2dfY250OjMyIGlzX2NhbGxlZDoxCisgQ09N TUlUCisgQkVHSU4KKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rp b25hbDoxIGxhc3RfdmFsdWU6MTQgbG9nX2NudDowIGlzX2NhbGxlZDoxCisgQ09NTUlUCisg QkVHSU4KKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDox IGxhc3RfdmFsdWU6NDAwMCBsb2dfY250OjAgaXNfY2FsbGVkOjAKKyBDT01NSVQKKyBzZXF1 ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDowIGxhc3RfdmFsdWU6 NDMyMCBsb2dfY250OjAgaXNfY2FsbGVkOjEKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1 ZW5jZTogdHJhbnNhY3Rpb25hbDowIGxhc3RfdmFsdWU6MzUwMCBsb2dfY250OjAgaXNfY2Fs bGVkOjEKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDow IGxhc3RfdmFsdWU6MzgzMCBsb2dfY250OjAgaXNfY2FsbGVkOjEKKyBzZXF1ZW5jZSBwdWJs aWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDowIGxhc3RfdmFsdWU6MzUwMCBsb2df Y250OjAgaXNfY2FsbGVkOjEKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJh bnNhY3Rpb25hbDowIGxhc3RfdmFsdWU6MzgzMCBsb2dfY250OjAgaXNfY2FsbGVkOjEKKyBz ZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDowIGxhc3RfdmFs dWU6MzUwMCBsb2dfY250OjAgaXNfY2FsbGVkOjAKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9z ZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDowIGxhc3RfdmFsdWU6MzgyMCBsb2dfY250OjAgaXNf Y2FsbGVkOjEKKygyNCByb3dzKQorCitEUk9QIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2U7Cist LSByb2xsYmFjayBvbiBzZXF1ZW5jZSBjcmVhdGlvbiBhbmQgdXBkYXRlCitCRUdJTjsKK0NS RUFURSBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlOworQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUg KGEgSU5UKTsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAK Ky0tLS0tLS0tLQorICAgICAgIDEKKygxIHJvdykKKworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rf c2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgICAgMgorKDEgcm93KQor CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0t LS0KKyAgICAgICAzCisoMSByb3cpCisKK1NFTEVDVCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2Un LCAzMDAwKTsKKyBzZXR2YWwgCistLS0tLS0tLQorICAgMzAwMAorKDEgcm93KQorCitTRUxF Q1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0tLS0KKyAg ICAzMDAxCisoMSByb3cpCisKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7Cisg bmV4dHZhbCAKKy0tLS0tLS0tLQorICAgIDMwMDIKKygxIHJvdykKKworU0VMRUNUIG5leHR2 YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgMzAwMwor KDEgcm93KQorCitBTFRFUiBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlIFJFU1RBUlQgV0lUSCA2 MDAwOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSBWQUxVRVMoIChTRUxFQ1QgbmV4dHZhbCgn dGVzdF9zZXF1ZW5jZScpKSApOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsK KyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgNjAwMQorKDEgcm93KQorCitST0xMQkFDSzsK K1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNz aW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0 eS14YWN0cycsICcxJywgJ3NraXAtc2VxdWVuY2VzJywgJzAnKTsKKyBkYXRhIAorLS0tLS0t CisoMCByb3dzKQorCistLSByb2xsYmFjayBvbiB0YWJsZSBjcmVhdGlvbiB3aXRoIHNlcmlh bCBjb2x1bW4KK0JFR0lOOworQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUgKGEgU0VSSUFMLCBi IElOVCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDEwMCk7CitJTlNF UlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDIwMCk7CitJTlNFUlQgSU5UTyB0ZXN0 X3RhYmxlIChiKSBWQUxVRVMgKDMwMCk7CitTRUxFQ1Qgc2V0dmFsKCd0ZXN0X3RhYmxlX2Ff c2VxJywgMzAwMCk7Cisgc2V0dmFsIAorLS0tLS0tLS0KKyAgIDMwMDAKKygxIHJvdykKKwor SU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg0MDApOworSU5TRVJUIElOVE8g dGVzdF90YWJsZSAoYikgVkFMVUVTICg1MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAo YikgVkFMVUVTICg2MDApOworQUxURVIgU0VRVUVOQ0UgdGVzdF90YWJsZV9hX3NlcSBSRVNU QVJUIFdJVEggNjAwMDsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoNzAw KTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoODAwKTsKK0lOU0VSVCBJ TlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoOTAwKTsKK1JPTExCQUNLOworU0VMRUNUIGRh dGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcs IE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywg JzEnLCAnc2tpcC1zZXF1ZW5jZXMnLCAnMCcpOworIGRhdGEgCistLS0tLS0KKygwIHJvd3Mp CisKKy0tIHJvbGxiYWNrIG9uIHRhYmxlIHdpdGggc2VyaWFsIGNvbHVtbgorQ1JFQVRFIFRB QkxFIHRlc3RfdGFibGUgKGEgU0VSSUFMLCBiIElOVCk7CitCRUdJTjsKK0lOU0VSVCBJTlRP IHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMTAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUg KGIpIFZBTFVFUyAoMjAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAo MzAwKTsKK1NFTEVDVCBzZXR2YWwoJ3Rlc3RfdGFibGVfYV9zZXEnLCAzMDAwKTsKKyBzZXR2 YWwgCistLS0tLS0tLQorICAgMzAwMAorKDEgcm93KQorCitJTlNFUlQgSU5UTyB0ZXN0X3Rh YmxlIChiKSBWQUxVRVMgKDQwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxV RVMgKDUwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDYwMCk7CitB TFRFUiBTRVFVRU5DRSB0ZXN0X3RhYmxlX2Ffc2VxIFJFU1RBUlQgV0lUSCA2MDAwOworSU5T RVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg3MDApOworSU5TRVJUIElOVE8gdGVz dF90YWJsZSAoYikgVkFMVUVTICg4MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikg VkFMVUVTICg5MDApOworUk9MTEJBQ0s7CistLSBjaGVjayB0YWJsZSBhbmQgc2VxdWVuY2Ug dmFsdWVzIGFmdGVyIHJvbGxiYWNrCitTRUxFQ1QgKiBmcm9tIHRlc3RfdGFibGVfYV9zZXE7 CisgbGFzdF92YWx1ZSB8IGxvZ19jbnQgfCBpc19jYWxsZWQgCistLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgICAgICAgMzAwMyB8ICAgICAgMzAgfCB0CisoMSByb3cp CisKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3RhYmxlX2Ffc2VxJyk7CisgbmV4dHZhbCAKKy0t LS0tLS0tLQorICAgIDMwMDQKKygxIHJvdykKKworRFJPUCBUQUJMRSB0ZXN0X3RhYmxlOwor U0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Np b25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5 LXhhY3RzJywgJzAnLCAnc2tpcC1zZXF1ZW5jZXMnLCAnMCcpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgQkVHSU4KKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF90YWJsZV9hX3NlcTogdHJhbnNh Y3Rpb25hbDoxIGxhc3RfdmFsdWU6MSBsb2dfY250OjAgaXNfY2FsbGVkOjAKKyBDT01NSVQK KyBzZXF1ZW5jZSBwdWJsaWMudGVzdF90YWJsZV9hX3NlcTogdHJhbnNhY3Rpb25hbDowIGxh c3RfdmFsdWU6MzMgbG9nX2NudDowIGlzX2NhbGxlZDoxCisgc2VxdWVuY2UgcHVibGljLnRl c3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0aW9uYWw6MCBsYXN0X3ZhbHVlOjMwMDAgbG9nX2Nu dDowIGlzX2NhbGxlZDoxCisgc2VxdWVuY2UgcHVibGljLnRlc3RfdGFibGVfYV9zZXE6IHRy YW5zYWN0aW9uYWw6MCBsYXN0X3ZhbHVlOjMwMzMgbG9nX2NudDowIGlzX2NhbGxlZDoxCisg QkVHSU4KKyBDT01NSVQKKyg4IHJvd3MpCisKKy0tIHNhdmVwb2ludCB0ZXN0IG9uIHRhYmxl IHdpdGggc2VyaWFsIGNvbHVtbgorQkVHSU47CitDUkVBVEUgVEFCTEUgdGVzdF90YWJsZSAo YSBTRVJJQUwsIGIgSU5UKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAo MTAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMjAwKTsKK1NBVkVQ T0lOVCBhOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgzMDApOworUk9M TEJBQ0sgVE8gU0FWRVBPSU5UIGE7CitEUk9QIFRBQkxFIHRlc3RfdGFibGU7CitDT01NSVQ7 CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVz c2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1w dHkteGFjdHMnLCAnMCcsICdza2lwLXNlcXVlbmNlcycsICcwJyk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEJFR0lOCisgc2VxdWVuY2UgcHVibGljLnRlc3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0 aW9uYWw6MSBsYXN0X3ZhbHVlOjEgbG9nX2NudDowIGlzX2NhbGxlZDowCisgc2VxdWVuY2Ug cHVibGljLnRlc3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0aW9uYWw6MSBsYXN0X3ZhbHVlOjMz IGxvZ19jbnQ6MCBpc19jYWxsZWQ6MQorIHRhYmxlIHB1YmxpYy50ZXN0X3RhYmxlOiBJTlNF UlQ6IGFbaW50ZWdlcl06MSBiW2ludGVnZXJdOjEwMAorIHRhYmxlIHB1YmxpYy50ZXN0X3Rh YmxlOiBJTlNFUlQ6IGFbaW50ZWdlcl06MiBiW2ludGVnZXJdOjIwMAorIENPTU1JVAorKDYg cm93cykKKworLS0gc2F2ZXBvaW50IHRlc3Qgb24gdGFibGUgd2l0aCBzZXJpYWwgY29sdW1u CitCRUdJTjsKK0NSRUFURSBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlOworU0VMRUNUIG5leHR2 YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgICAgMQor KDEgcm93KQorCitTRUxFQ1Qgc2V0dmFsKCd0ZXN0X3NlcXVlbmNlJywgMzAwMCk7Cisgc2V0 dmFsIAorLS0tLS0tLS0KKyAgIDMwMDAKKygxIHJvdykKKworU0VMRUNUIG5leHR2YWwoJ3Rl c3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgMzAwMQorKDEgcm93 KQorCitTQVZFUE9JTlQgYTsKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2UgU1RBUlQg V0lUSCA3MDAwOworU0VMRUNUIHNldHZhbCgndGVzdF9zZXF1ZW5jZScsIDUwMDApOworIHNl dHZhbCAKKy0tLS0tLS0tCisgICA1MDAwCisoMSByb3cpCisKK1JPTExCQUNLIFRPIFNBVkVQ T0lOVCBhOworU0VMRUNUICogRlJPTSB0ZXN0X3NlcXVlbmNlOworIGxhc3RfdmFsdWUgfCBs b2dfY250IHwgaXNfY2FsbGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LQorICAgICAgIDMwMDEgfCAgICAgIDMyIHwgdAorKDEgcm93KQorCitEUk9QIFNFUVVFTkNF IHRlc3Rfc2VxdWVuY2U7CitDT01NSVQ7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxf c2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1 ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMCcsICdza2lwLXNlcXVlbmNl cycsICcwJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCRUdJTgorIHNlcXVlbmNlIHB1YmxpYy50ZXN0 X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOjEgbGFzdF92YWx1ZToxIGxvZ19jbnQ6MCBpc19j YWxsZWQ6MAorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFs OjEgbGFzdF92YWx1ZTozMyBsb2dfY250OjAgaXNfY2FsbGVkOjEKKyBzZXF1ZW5jZSBwdWJs aWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDoxIGxhc3RfdmFsdWU6MzAwMCBsb2df Y250OjAgaXNfY2FsbGVkOjEKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJh bnNhY3Rpb25hbDoxIGxhc3RfdmFsdWU6MzAzMyBsb2dfY250OjAgaXNfY2FsbGVkOjEKKyBD T01NSVQKKyg2IHJvd3MpCisKK1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3Jl Z3Jlc3Npb25fc2xvdCcpOworIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL2NvbnRyaWIv dGVzdF9kZWNvZGluZy9zcWwvc2VxdWVuY2Uuc3FsIGIvY29udHJpYi90ZXN0X2RlY29kaW5n L3NxbC9zZXF1ZW5jZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjIxYzRiNzkyMjI0Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi90ZXN0X2RlY29k aW5nL3NxbC9zZXF1ZW5jZS5zcWwKQEAgLTAsMCArMSwxMTkgQEAKKy0tIHByZWRpY3RhYmls aXR5CitTRVQgc3luY2hyb25vdXNfY29tbWl0ID0gb247CitTRUxFQ1QgJ2luaXQnIEZST00g cGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90Jywg J3Rlc3RfZGVjb2RpbmcnKTsKKworQ1JFQVRFIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2U7CisK Ky0tIHRlc3QgdGhlIHNlcXVlbmNlIGNoYW5nZXMgYnkgc2V2ZXJhbCBuZXh0dmFsKCkgY2Fs bHMKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitTRUxFQ1QgbmV4dHZhbCgn dGVzdF9zZXF1ZW5jZScpOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKK1NF TEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisKKy0tIHRlc3QgdGhlIHNlcXVlbmNl IGNoYW5nZXMgYnkgc2V2ZXJhbCBBTFRFUiBjb21tYW5kcworQUxURVIgU0VRVUVOQ0UgdGVz dF9zZXF1ZW5jZSBJTkNSRU1FTlQgQlkgMTA7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1 ZW5jZScpOworCitBTFRFUiBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlIFNUQVJUIFdJVEggMzAw MDsKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2UgTUFYVkFMVUUgMTAwMDA7CitBTFRF UiBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlIFJFU1RBUlQgV0lUSCA0MDAwOworU0VMRUNUIG5l eHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKworLS0gdGVzdCB0aGUgc2VxdWVuY2UgY2hhbmdl cyBieSBzZXZlcmFsIHNldHZhbCgpIGNhbGxzCitTRUxFQ1Qgc2V0dmFsKCd0ZXN0X3NlcXVl bmNlJywgMzUwMCk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworU0VMRUNU IHNldHZhbCgndGVzdF9zZXF1ZW5jZScsIDM1MDAsIHRydWUpOworU0VMRUNUIG5leHR2YWwo J3Rlc3Rfc2VxdWVuY2UnKTsKK1NFTEVDVCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2UnLCAzNTAw LCBmYWxzZSk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworCistLSBzaG93 IHJlc3VsdHMgYW5kIGRyb3Agc2VxdWVuY2UKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNh bF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5j bHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcwJywgJ3NraXAtc2VxdWVu Y2VzJywgJzAnKTsKK0RST1AgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZTsKKworLS0gcm9sbGJh Y2sgb24gc2VxdWVuY2UgY3JlYXRpb24gYW5kIHVwZGF0ZQorQkVHSU47CitDUkVBVEUgU0VR VUVOQ0UgdGVzdF9zZXF1ZW5jZTsKK0NSRUFURSBUQUJMRSB0ZXN0X3RhYmxlIChhIElOVCk7 CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworU0VMRUNUIG5leHR2YWwoJ3Rl c3Rfc2VxdWVuY2UnKTsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitTRUxF Q1Qgc2V0dmFsKCd0ZXN0X3NlcXVlbmNlJywgMzAwMCk7CitTRUxFQ1QgbmV4dHZhbCgndGVz dF9zZXF1ZW5jZScpOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKK1NFTEVD VCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3NlcXVl bmNlIFJFU1RBUlQgV0lUSCA2MDAwOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSBWQUxVRVMo IChTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpKSApOworU0VMRUNUIG5leHR2YWwo J3Rlc3Rfc2VxdWVuY2UnKTsKK1JPTExCQUNLOworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dp Y2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdp bmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnc2tpcC1zZXF1 ZW5jZXMnLCAnMCcpOworCistLSByb2xsYmFjayBvbiB0YWJsZSBjcmVhdGlvbiB3aXRoIHNl cmlhbCBjb2x1bW4KK0JFR0lOOworQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUgKGEgU0VSSUFM LCBiIElOVCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDEwMCk7CitJ TlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDIwMCk7CitJTlNFUlQgSU5UTyB0 ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDMwMCk7CitTRUxFQ1Qgc2V0dmFsKCd0ZXN0X3RhYmxl X2Ffc2VxJywgMzAwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDQw MCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDUwMCk7CitJTlNFUlQg SU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDYwMCk7CitBTFRFUiBTRVFVRU5DRSB0ZXN0 X3RhYmxlX2Ffc2VxIFJFU1RBUlQgV0lUSCA2MDAwOworSU5TRVJUIElOVE8gdGVzdF90YWJs ZSAoYikgVkFMVUVTICg3MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVT ICg4MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg5MDApOworUk9M TEJBQ0s7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygn cmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3Nr aXAtZW1wdHkteGFjdHMnLCAnMScsICdza2lwLXNlcXVlbmNlcycsICcwJyk7CisKKy0tIHJv bGxiYWNrIG9uIHRhYmxlIHdpdGggc2VyaWFsIGNvbHVtbgorQ1JFQVRFIFRBQkxFIHRlc3Rf dGFibGUgKGEgU0VSSUFMLCBiIElOVCk7CisKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90 YWJsZSAoYikgVkFMVUVTICgxMDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFM VUVTICgyMDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgzMDApOwor U0VMRUNUIHNldHZhbCgndGVzdF90YWJsZV9hX3NlcScsIDMwMDApOworSU5TRVJUIElOVE8g dGVzdF90YWJsZSAoYikgVkFMVUVTICg0MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAo YikgVkFMVUVTICg1MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg2 MDApOworQUxURVIgU0VRVUVOQ0UgdGVzdF90YWJsZV9hX3NlcSBSRVNUQVJUIFdJVEggNjAw MDsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoNzAwKTsKK0lOU0VSVCBJ TlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoODAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFi bGUgKGIpIFZBTFVFUyAoOTAwKTsKK1JPTExCQUNLOworCistLSBjaGVjayB0YWJsZSBhbmQg c2VxdWVuY2UgdmFsdWVzIGFmdGVyIHJvbGxiYWNrCitTRUxFQ1QgKiBmcm9tIHRlc3RfdGFi bGVfYV9zZXE7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF90YWJsZV9hX3NlcScpOworCitEUk9Q IFRBQkxFIHRlc3RfdGFibGU7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9n ZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlk cycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMCcsICdza2lwLXNlcXVlbmNlcycsICcw Jyk7CisKKy0tIHNhdmVwb2ludCB0ZXN0IG9uIHRhYmxlIHdpdGggc2VyaWFsIGNvbHVtbgor QkVHSU47CitDUkVBVEUgVEFCTEUgdGVzdF90YWJsZSAoYSBTRVJJQUwsIGIgSU5UKTsKK0lO U0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMTAwKTsKK0lOU0VSVCBJTlRPIHRl c3RfdGFibGUgKGIpIFZBTFVFUyAoMjAwKTsKK1NBVkVQT0lOVCBhOworSU5TRVJUIElOVE8g dGVzdF90YWJsZSAoYikgVkFMVUVTICgzMDApOworUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIGE7 CitEUk9QIFRBQkxFIHRlc3RfdGFibGU7CitDT01NSVQ7CitTRUxFQ1QgZGF0YSBGUk9NIHBn X2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVM TCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMCcsICdza2lw LXNlcXVlbmNlcycsICcwJyk7CisKKy0tIHNhdmVwb2ludCB0ZXN0IG9uIHRhYmxlIHdpdGgg c2VyaWFsIGNvbHVtbgorQkVHSU47CitDUkVBVEUgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZTsK K1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitTRUxFQ1Qgc2V0dmFsKCd0ZXN0 X3NlcXVlbmNlJywgMzAwMCk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOwor U0FWRVBPSU5UIGE7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlIFNUQVJUIFdJVEgg NzAwMDsKK1NFTEVDVCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2UnLCA1MDAwKTsKK1JPTExCQUNL IFRPIFNBVkVQT0lOVCBhOworU0VMRUNUICogRlJPTSB0ZXN0X3NlcXVlbmNlOworRFJPUCBT RVFVRU5DRSB0ZXN0X3NlcXVlbmNlOworQ09NTUlUOworU0VMRUNUIGRhdGEgRlJPTSBwZ19s b2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEws ICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzAnLCAnc2tpcC1z ZXF1ZW5jZXMnLCAnMCcpOworCitTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdy ZWdyZXNzaW9uX3Nsb3QnKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90 ZXN0X2RlY29kaW5nLmMgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5j CmluZGV4IGU1Y2Q4NGU4NWU0Li5iYzMyNTBiOGY0YSAxMDA2NDQKLS0tIGEvY29udHJpYi90 ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYworKysgYi9jb250cmliL3Rlc3RfZGVjb2Rp bmcvdGVzdF9kZWNvZGluZy5jCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgc3RydWN0CiAJ Ym9vbAkJaW5jbHVkZV90aW1lc3RhbXA7CiAJYm9vbAkJc2tpcF9lbXB0eV94YWN0czsKIAli b29sCQlvbmx5X2xvY2FsOworCWJvb2wJCXNraXBfc2VxdWVuY2VzOwogfSBUZXN0RGVjb2Rp bmdEYXRhOwogCiAvKgpAQCAtNzYsNiArNzcsMTAgQEAgc3RhdGljIHZvaWQgcGdfZGVjb2Rl X21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCSAgUmVvcmRl ckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAogCQkJCQkJCSAgYm9v bCB0cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJCQkJICBTaXplIHN6 LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK3N0YXRpYyB2b2lkIHBnX2RlY29kZV9zZXF1ZW5j ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJCQkJICBSZW9yZGVyQnVmZmVy VFhOICp0eG4sIFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLAorCQkJCQkJCSAgUmVsYXRpb24g cmVsLCBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkJICBpbnQ2NCBsYXN0X3ZhbHVlLCBp bnQ2NCBsb2dfY250LCBib29sIGlzX2NhbGxlZCk7CiBzdGF0aWMgYm9vbCBwZ19kZWNvZGVf ZmlsdGVyX3ByZXBhcmUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkJ IFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmdpZCk7CkBAIC0x MTYsNiArMTIxLDEwIEBAIHN0YXRpYyB2b2lkIHBnX2RlY29kZV9zdHJlYW1fbWVzc2FnZShM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJCQkgUmVvcmRlckJ1ZmZlclRY TiAqdHhuLCBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAogCQkJCQkJCQkJIGJvb2wgdHJhbnNh Y3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LAogCQkJCQkJCQkJIFNpemUgc3osIGNvbnN0 IGNoYXIgKm1lc3NhZ2UpOworc3RhdGljIHZvaWQgcGdfZGVjb2RlX3N0cmVhbV9zZXF1ZW5j ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJCQkJCQkgIFJlb3JkZXJCdWZm ZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24sCisJCQkJCQkJCQkgIFJlbGF0 aW9uIHJlbCwgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCQkJICBpbnQ2NCBsYXN0X3Zh bHVlLCBpbnQ2NCBsb2dfY250LCBib29sIGlzX2NhbGxlZCk7CiBzdGF0aWMgdm9pZCBwZ19k ZWNvZGVfc3RyZWFtX3RydW5jYXRlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJ CQkJCQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJCQkJICBpbnQgbnJlbGF0 aW9ucywgUmVsYXRpb24gcmVsYXRpb25zW10sCkBAIC0xNDEsNiArMTUwLDcgQEAgX1BHX291 dHB1dF9wbHVnaW5faW5pdChPdXRwdXRQbHVnaW5DYWxsYmFja3MgKmNiKQogCWNiLT5maWx0 ZXJfYnlfb3JpZ2luX2NiID0gcGdfZGVjb2RlX2ZpbHRlcjsKIAljYi0+c2h1dGRvd25fY2Ig PSBwZ19kZWNvZGVfc2h1dGRvd247CiAJY2ItPm1lc3NhZ2VfY2IgPSBwZ19kZWNvZGVfbWVz c2FnZTsKKwljYi0+c2VxdWVuY2VfY2IgPSBwZ19kZWNvZGVfc2VxdWVuY2U7CiAJY2ItPmZp bHRlcl9wcmVwYXJlX2NiID0gcGdfZGVjb2RlX2ZpbHRlcl9wcmVwYXJlOwogCWNiLT5iZWdp bl9wcmVwYXJlX2NiID0gcGdfZGVjb2RlX2JlZ2luX3ByZXBhcmVfdHhuOwogCWNiLT5wcmVw YXJlX2NiID0gcGdfZGVjb2RlX3ByZXBhcmVfdHhuOwpAQCAtMTUzLDYgKzE2Myw3IEBAIF9Q R19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0UGx1Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+ c3RyZWFtX2NvbW1pdF9jYiA9IHBnX2RlY29kZV9zdHJlYW1fY29tbWl0OwogCWNiLT5zdHJl YW1fY2hhbmdlX2NiID0gcGdfZGVjb2RlX3N0cmVhbV9jaGFuZ2U7CiAJY2ItPnN0cmVhbV9t ZXNzYWdlX2NiID0gcGdfZGVjb2RlX3N0cmVhbV9tZXNzYWdlOworCWNiLT5zdHJlYW1fc2Vx dWVuY2VfY2IgPSBwZ19kZWNvZGVfc3RyZWFtX3NlcXVlbmNlOwogCWNiLT5zdHJlYW1fdHJ1 bmNhdGVfY2IgPSBwZ19kZWNvZGVfc3RyZWFtX3RydW5jYXRlOwogfQogCkBAIC0xNzUsNiAr MTg2LDkgQEAgcGdfZGVjb2RlX3N0YXJ0dXAoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 LCBPdXRwdXRQbHVnaW5PcHRpb25zICpvcHQsCiAJZGF0YS0+c2tpcF9lbXB0eV94YWN0cyA9 IGZhbHNlOwogCWRhdGEtPm9ubHlfbG9jYWwgPSBmYWxzZTsKIAorCS8qIHNraXAgc2VxdWVu Y2VzIGJ5IGRlZmF1bHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5ICovCisJZGF0YS0+ c2tpcF9zZXF1ZW5jZXMgPSB0cnVlOworCiAJY3R4LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGUg PSBkYXRhOwogCiAJb3B0LT5vdXRwdXRfdHlwZSA9IE9VVFBVVF9QTFVHSU5fVEVYVFVBTF9P VVRQVVQ7CkBAIC0yNjUsNiArMjc5LDE3IEBAIHBnX2RlY29kZV9zdGFydHVwKExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogCQkJCQkJ IGVycm1zZygiY291bGQgbm90IHBhcnNlIHZhbHVlIFwiJXNcIiBmb3IgcGFyYW1ldGVyIFwi JXNcIiIsCiAJCQkJCQkJCXN0clZhbChlbGVtLT5hcmcpLCBlbGVtLT5kZWZuYW1lKSkpOwog CQl9CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAic2tpcC1zZXF1ZW5jZXMi KSA9PSAwKQorCQl7CisKKwkJCWlmIChlbGVtLT5hcmcgPT0gTlVMTCkKKwkJCQljb250aW51 ZTsJLyogdHJ1ZSBieSBkZWZhdWx0ICovCisJCQllbHNlIGlmICghcGFyc2VfYm9vbChzdHJW YWwoZWxlbS0+YXJnKSwgJmRhdGEtPnNraXBfc2VxdWVuY2VzKSkKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CisJCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcGFyc2UgdmFsdWUgXCIlc1wiIGZvciBwYXJh bWV0ZXIgXCIlc1wiIiwKKwkJCQkJCQkJc3RyVmFsKGVsZW0tPmFyZyksIGVsZW0tPmRlZm5h bWUpKSk7CisJCX0KIAkJZWxzZQogCQl7CiAJCQllcmVwb3J0KEVSUk9SLApAQCAtNzQ0LDYg Kzc2OSwyOCBAQCBwZ19kZWNvZGVfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIH0KIAorc3RhdGljIHZvaWQK K3BnX2RlY29kZV9zZXF1ZW5jZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkgICBYTG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwgUmVs YXRpb24gcmVsLAorCQkJCSAgIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkgICBpbnQ2NCBs YXN0X3ZhbHVlLCBpbnQ2NCBsb2dfY250LCBib29sIGlzX2NhbGxlZCkKK3sKKwlUZXN0RGVj b2RpbmdEYXRhICpkYXRhID0gY3R4LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CisKKwkvKiBy ZXR1cm4gaWYgcmVxdWVzdGVkIHRvIHNraXBfc2VxdWVuY2VzICovCisJaWYgKGRhdGEtPnNr aXBfc2VxdWVuY2VzKQorCQlyZXR1cm47CisKKwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUo Y3R4LCB0cnVlKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGN0eC0+b3V0LCAic2VxdWVu Y2UgIik7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjdHgtPm91dCwKKwkJCQkJCSAgIHF1 b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKGdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVsX25h bWVzcGFjZShSZWxhdGlvbkdldFJlbGlkKHJlbCkpKSwKKwkJCQkJCQkJCQkJCQkgIFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKTsKKwlhcHBlbmRTdHJpbmdJbmZvKGN0eC0+b3V0 LCAJIjogdHJhbnNhY3Rpb25hbDolZCBsYXN0X3ZhbHVlOiV6dSBsb2dfY250OiV6dSBpc19j YWxsZWQ6JWQiLAorCQkJCQkgdHJhbnNhY3Rpb25hbCwgbGFzdF92YWx1ZSwgbG9nX2NudCwg aXNfY2FsbGVkKTsKKwlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOworfQorCiBzdGF0 aWMgdm9pZAogcGdfZGVjb2RlX3N0cmVhbV9zdGFydChMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsCiAJCQkJCSAgIFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKQEAgLTk0Myw2ICs5OTAs MjggQEAgcGdfZGVjb2RlX3N0cmVhbV9tZXNzYWdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogfQogCitzdGF0aWMgdm9p ZAorcGdfZGVjb2RlX3N0cmVhbV9zZXF1ZW5jZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCSAgWExvZ1JlY1B0ciBzZXF1ZW5j ZV9sc24sIFJlbGF0aW9uIHJlbCwKKwkJCQkJCSAgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJ CQkJICBpbnQ2NCBsYXN0X3ZhbHVlLCBpbnQ2NCBsb2dfY250LCBib29sIGlzX2NhbGxlZCkK K3sKKwlUZXN0RGVjb2RpbmdEYXRhICpkYXRhID0gY3R4LT5vdXRwdXRfcGx1Z2luX3ByaXZh dGU7CisKKwkvKiByZXR1cm4gaWYgcmVxdWVzdGVkIHRvIHNraXBfc2VxdWVuY2VzICovCisJ aWYgKGRhdGEtPnNraXBfc2VxdWVuY2VzKQorCQlyZXR1cm47CisKKwlPdXRwdXRQbHVnaW5Q cmVwYXJlV3JpdGUoY3R4LCB0cnVlKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGN0eC0+ b3V0LCAic3RyZWFtaW5nIHNlcXVlbmNlICIpOworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco Y3R4LT5vdXQsCisJCQkJCQkgICBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihnZXRfbmFt ZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1lc3BhY2UoUmVsYXRpb25HZXRSZWxpZChyZWwpKSks CisJCQkJCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSk7CisJYXBw ZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgCSI6IHRyYW5zYWN0aW9uYWw6JWQgbGFzdF92YWx1 ZTolenUgbG9nX2NudDolenUgaXNfY2FsbGVkOiVkIiwKKwkJCQkJIHRyYW5zYWN0aW9uYWws IGxhc3RfdmFsdWUsIGxvZ19jbnQsIGlzX2NhbGxlZCk7CisJT3V0cHV0UGx1Z2luV3JpdGUo Y3R4LCB0cnVlKTsKK30KKwogLyoKICAqIEluIHN0cmVhbWluZyBtb2RlLCB3ZSBkb24ndCBk aXNwbGF5IHRoZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvZiBUcnVuY2F0ZS4KICAqIFNlZSBw Z19kZWNvZGVfc3RyZWFtX2NoYW5nZS4KLS0gCjIuMzEuMQoK --------------G7eZZrvWqjxk09Bi4Hg0i1nm Content-Type: text/x-patch; charset=UTF-8; name="0001-Logical-decoding-of-sequences-20211214.patch" Content-Disposition: attachment; filename="0001-Logical-decoding-of-sequences-20211214.patch" Content-Transfer-Encoding: base64 RnJvbSA1OGJmMGQyYWJiNGZhNDViZGY2N2MyNzFjYmQ0M2Y2YWZiMzU0MzQyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogRnJpLCAyNCBTZXAgMjAyMSAwMDo0MTozMyArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMS8zXSBMb2dpY2FsIGRlY29kaW5nIG9mIHNlcXVlbmNlcwoKVGhpcyBh ZGRzIHRoZSBpbmZyYXN0cnVjdHVyZSBmb3IgbG9naWNhbCBkZWNvZGluZyBvZiBzZXF1ZW5j ZXMuIFN1cHBvcnQKZm9yIGJ1aWx0LWluIGxvZ2ljYWwgcmVwbGljYXRpb24gYW5kIHRlc3Rf ZGVjb2RpbmcgaXMgYWRkZWQgc2VwYXJhdGVseS4KCldoZW4gZGVjb2Rpbmcgc2VxdWVuY2Vz LCB3ZSBkaWZmZXJlbnRpYXRlIGJldHdlZW4gYSBzZXF1ZW5jZXMgY3JlYXRlZCBpbgphIChy dW5uaW5nKSB0cmFuc2FjdGlvbiwgYW5kIHNlcXVlbmNlcyBjcmVhdGVkIGluIG90aGVyIChh bHJlYWR5CmNvbW1pdHRlZCkgdHJhbnNhY3Rpb25zLiBDaGFuZ2VzIGZvciBzZXF1ZW5jZXMg Y3JlYXRlZCBpbiB0aGUgc2FtZQp0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gYXJlIHRyZWF0ZWQg YXMgInRyYW5zYWN0aW9uYWwiIGkuZS4ganVzdCBsaWtlIGFueQpvdGhlciBjaGFuZ2UgZnJv bSB0aGF0IHRyYW5zYWN0aW9uIChhbmQgZGlzY2FyZGVkIGluIGNhc2Ugb2YgYQpyb2xsYmFj aykuIENoYW5nZXMgZm9yIHNlcXVlbmNlcyBjcmVhdGVkIGVhcmxpZXIgYXJlIHRyZWF0ZWQg YXMgbm90CnRyYW5zYWN0aW9uYWwgLSBhcmUgcHJvY2Vzc2VkIGltbWVkaWF0ZWx5LCBhcyBp ZiBwZXJmb3JtZWQgb3V0c2lkZSBhbnkKdHJhbnNhY3Rpb24gKGFuZCB0aHVzIG5vdCByb2xs ZWQgYmFjaykuCgpUaGlzIG1peGVkIGJlaGF2aW9yIGlzIG5lY2Vzc2FyeSAtIHNlcXVlbmNl cyBhcmUgbm9uLXRyYW5zYWN0aW9uYWwgKGUuZy4KUk9MTEJBQ0sgZG9lcyBub3QgdW5kbyB0 aGUgc2VxdWVuY2UgaW5jcmVtZW50cykuIEJ1dCBmb3IgbmV3IHNlcXVlbmNlcywKd2UgbmVl ZCB0byBoYW5kbGUgdGhlbSBpbiBhIHRyYW5zYWN0aW9uYWwgd2F5LCBiZWNhdXNlIGlmIHdl IGV2ZXIgZ2V0CnNvbWUgRERMIHN1cHBvcnQsIHRoZSBzZXF1ZW5jZSB3b24ndCBleGlzdCB1 bnRpbCB0aGUgdHJhbnNhY3Rpb24gZ2V0cwphcHBsaWVkLiBTbyB3ZSBuZWVkIHRvIGVuc3Vy ZSB0aGUgaW5jcmVtZW50cyBkb24ndCBoYXBwZW4gdW50aWwgdGhlCnNlcXVlbmNlIGdldHMg Y3JlYXRlZC4KClRvIGRpZmZlcmVudGlhdGUgd2hpY2ggc2VxdWVuY2VzIGFyZSAib2xkIiBh bmQgd2hpY2ggd2VyZSBjcmVhdGVkIGluIGEKc3RpbGwtcnVubmluZyB0cmFuc2FjdGlvbiwg d2UgdHJhY2sgc2VxdWVuY2VzIGNyZWF0ZWQgaW4gcnVubmluZwp0cmFuc2FjdGlvbnMgaW4g YSBoYXNoIHRhYmxlLiBFYWNoIHNlcXVlbmNlIGlzIGlkZW50aWZpZWQgYnkgaXQncwpyZWxm aWxlbm9kZSwgYW5kIGF0IHRyYW5zYWN0aW9uIGNvbW1pdCB3ZSBkaXNjYXJkIGFsbCBzZXF1 ZW5jZXMgY3JlYXRlZAppbiB0aGF0IHBhcnRpY3VsYXIgdHJhbnNhY3Rpb24uIEZvciBlYWNo IHNlcXVlbmNlIHdlIHRyYWNrIHRoZSBYSUQgb2YKdGhlIChzdWIpdHJhbnNhY3Rpb24gdGhh dCBjcmVhdGVkIGl0LCBhbmQgd2UgY2xlYW51cCB0aGUgc2VxdWVuY2VzIGZvcgplYWNoIHN1 YnRyYW5zYWN0aW9uIHdoZW4gaXQgY29tcGxldGVzIChjb21taXQvcm9sbGJhY2spLgoKV2Ug ZG9uJ3QgdXNlIHRoZSBYSUQgdG8gY2hlY2sgaWYgaXQncyB0aGUgc2FtZSB0b3AtbGV2ZWwg dHJhbnNhY3Rpb24uCkl0J3MgZW5vdWdoIHRvIGtub3cgaXQgd2FzIGNyZWF0ZWQgaW4gYW4g aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24sIGFuZCB3ZQprbm93IGl0IG11c3QgYmUgdGhlIGN1 cnJlbnQgb25lIGJlY2F1c2Ugb3RoZXJ3aXNlIGl0IHdvdWxkbid0IHNlZSB0aGUKc2VxdWVu Y2Ugb2JqZWN0LgoKVGhlIG1haW4gY2hhbmdlcyBpbiB0aGlzIHBhdGNoIGFyZToKCjEpIGVu c3VyZSBXQUwtbG9nZ2luZyBvZiBhbGwgbmVjZXNzYXJ5IGluZm8gZm9yIHNlcXVlbmNlIGFk dmFuY2VzCgpXZSBuZWVkIHRvIGJlIGFibGUgdG8gYXNzb2NpYXRlIHRoZSBhZHZhbmNlIHdp dGggYSBYSUQsIGJ1dCB1bnRpbCBub3cKc2VxdWVuY2UgYWR2YW5jZSBtaWdodCBoYXZlIFhJ RCAwIGlmIGl0IHdhcyB0aGUgZmlyc3QgdGhpbmcgdGhlCnRyYW5zYWN0aW9uIGRpZC4gU28g d2UgZW5zdXJlIHRoZSB0cmFuc2FjdGlvbiBoYXMgWElELgoKTm90ZTogVGhpcyBpcyBuZWVk ZWQgYmVjYXVzZSBvZiBzdWJ4YWN0cy4gQSBYSUQgMCBtaWdodCBzdGlsbCBoYXZlIHRoZQpz ZXF1ZW5jZSBjcmVhdGVkIGluIGEgZGlmZmVyZW50IHN1YnhhY3Qgb2YgdGhlIHNhbWUgdG9w LWxldmVsIHhhY3QuCgpUaGVuIHRoZXJlJ3MgYSAiY3JlYXRlZCIgZmxhZyBhZGRlZCB0byB0 aGUgeGxfc2VxX3JlYywgd2hpY2ggaXMKbmVjZXNzYXJ5IHRvIGRpZmZlcmVudGlhdGUgV0FM IGZvciBjcmVhdGVkL3Jlc2V0IHNlcXVlbmNlcy4KCjIpIGRlY29kaW5nIC8gcXVldWVpbmcg b2Ygc2VxdWVuY2VzIGludG8gUmVvcmRlckJ1ZmZlcgoKVGhpcyBpcyBtb3N0bHkgY29weS1w YXN0ZSBvZiBleGlzdGluZyBjb2RlIGZvciBvdGhlciBkZWNvZGVkIGV2ZW50cy4KCjMpIHRy YWNraW5nIHNlcXVlbmNlcyBjcmVhdGVkIGluIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucwoK V2UgdXNlIGEgc2ltcGxlIGhhc2ggdGFibGUsIGluZGV4ZWQgYnkgcmVsZmlsZW5vZGUuCi0t LQogZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sICAgICAgICAgICAgIHwgIDYy ICsrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyAgICAgICAgICAgICAgIHwg IDMyICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICAgICAg fCAxMzEgKysrKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwu YyAgICAgfCAgODggKysrKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZl ci5jICAgICAgIHwgNDAwICsrKysrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvY29tbWFu ZHMvc2VxdWVuY2UuaCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL291dHB1dF9wbHVnaW4uaCAgICAgICB8ICAyNyArKwogc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgIHwgIDQzICstCiA4IGZpbGVzIGNoYW5n ZWQsIDc3OCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2Fs ZGVjb2Rpbmcuc2dtbAppbmRleCBiNjM1M2M3YTEyNS4uNjBhMmI3ZDFjY2IgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvbG9naWNhbGRlY29kaW5nLnNnbWwKQEAgLTQ1OCw2ICs0NTgsNyBAQCB0eXBlZGVmIHN0 cnVjdCBPdXRwdXRQbHVnaW5DYWxsYmFja3MKICAgICBMb2dpY2FsRGVjb2RlVHJ1bmNhdGVD QiB0cnVuY2F0ZV9jYjsKICAgICBMb2dpY2FsRGVjb2RlQ29tbWl0Q0IgY29tbWl0X2NiOwog ICAgIExvZ2ljYWxEZWNvZGVNZXNzYWdlQ0IgbWVzc2FnZV9jYjsKKyAgICBMb2dpY2FsRGVj b2RlU2VxdWVuY2VDQiBzZXF1ZW5jZV9jYjsKICAgICBMb2dpY2FsRGVjb2RlRmlsdGVyQnlP cmlnaW5DQiBmaWx0ZXJfYnlfb3JpZ2luX2NiOwogICAgIExvZ2ljYWxEZWNvZGVTaHV0ZG93 bkNCIHNodXRkb3duX2NiOwogICAgIExvZ2ljYWxEZWNvZGVGaWx0ZXJQcmVwYXJlQ0IgZmls dGVyX3ByZXBhcmVfY2I7CkBAIC00NzIsNiArNDczLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgT3V0 cHV0UGx1Z2luQ2FsbGJhY2tzCiAgICAgTG9naWNhbERlY29kZVN0cmVhbUNvbW1pdENCIHN0 cmVhbV9jb21taXRfY2I7CiAgICAgTG9naWNhbERlY29kZVN0cmVhbUNoYW5nZUNCIHN0cmVh bV9jaGFuZ2VfY2I7CiAgICAgTG9naWNhbERlY29kZVN0cmVhbU1lc3NhZ2VDQiBzdHJlYW1f bWVzc2FnZV9jYjsKKyAgICBMb2dpY2FsRGVjb2RlU3RyZWFtU2VxdWVuY2VDQiBzdHJlYW1f c2VxdWVuY2VfY2I7CiAgICAgTG9naWNhbERlY29kZVN0cmVhbVRydW5jYXRlQ0Igc3RyZWFt X3RydW5jYXRlX2NiOwogfSBPdXRwdXRQbHVnaW5DYWxsYmFja3M7CiAKQEAgLTQ4MSw5ICs0 ODMsMTIgQEAgdHlwZWRlZiB2b2lkICgqTG9naWNhbE91dHB1dFBsdWdpbkluaXQpIChzdHJ1 Y3QgT3V0cHV0UGx1Z2luQ2FsbGJhY2tzICpjYik7CiAgICAgIGFuZCA8ZnVuY3Rpb24+Y29t bWl0X2NiPC9mdW5jdGlvbj4gY2FsbGJhY2tzIGFyZSByZXF1aXJlZCwKICAgICAgd2hpbGUg PGZ1bmN0aW9uPnN0YXJ0dXBfY2I8L2Z1bmN0aW9uPiwKICAgICAgPGZ1bmN0aW9uPmZpbHRl cl9ieV9vcmlnaW5fY2I8L2Z1bmN0aW9uPiwgPGZ1bmN0aW9uPnRydW5jYXRlX2NiPC9mdW5j dGlvbj4sCisgICAgIDxmdW5jdGlvbj5zZXF1ZW5jZV9jYjwvZnVuY3Rpb24+LAogICAgICBh bmQgPGZ1bmN0aW9uPnNodXRkb3duX2NiPC9mdW5jdGlvbj4gYXJlIG9wdGlvbmFsLgogICAg ICBJZiA8ZnVuY3Rpb24+dHJ1bmNhdGVfY2I8L2Z1bmN0aW9uPiBpcyBub3Qgc2V0IGJ1dCBh CiAgICAgIDxjb21tYW5kPlRSVU5DQVRFPC9jb21tYW5kPiBpcyB0byBiZSBkZWNvZGVkLCB0 aGUgYWN0aW9uIHdpbGwgYmUgaWdub3JlZC4KKyAgICAgU2ltaWxhcmx5LCBpZiA8ZnVuY3Rp b24+c2VxdWVuY2VfY2I8L2Z1bmN0aW9uPiBpcyBub3Qgc2V0IGFuZCBhIHNlcXVlbmNlCisg ICAgIGNoYW5nZSBpcyB0byBiZSBkZWNvZGVkLCB0aGUgYWN0aW9uIHdpbGwgYmUgaWdub3Jl ZC4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KQEAgLTQ5Miw3ICs0OTcsOCBAQCB0eXBl ZGVmIHZvaWQgKCpMb2dpY2FsT3V0cHV0UGx1Z2luSW5pdCkgKHN0cnVjdCBPdXRwdXRQbHVn aW5DYWxsYmFja3MgKmNiKTsKICAgICAgPGZ1bmN0aW9uPnN0cmVhbV9zdG9wX2NiPC9mdW5j dGlvbj4sIDxmdW5jdGlvbj5zdHJlYW1fYWJvcnRfY2I8L2Z1bmN0aW9uPiwKICAgICAgPGZ1 bmN0aW9uPnN0cmVhbV9jb21taXRfY2I8L2Z1bmN0aW9uPiwgPGZ1bmN0aW9uPnN0cmVhbV9j aGFuZ2VfY2I8L2Z1bmN0aW9uPiwKICAgICAgYW5kIDxmdW5jdGlvbj5zdHJlYW1fcHJlcGFy ZV9jYjwvZnVuY3Rpb24+Ci0gICAgIGFyZSByZXF1aXJlZCwgd2hpbGUgPGZ1bmN0aW9uPnN0 cmVhbV9tZXNzYWdlX2NiPC9mdW5jdGlvbj4gYW5kCisgICAgIGFyZSByZXF1aXJlZCwgd2hp bGUgPGZ1bmN0aW9uPnN0cmVhbV9tZXNzYWdlX2NiPC9mdW5jdGlvbj4sCisgICAgIDxmdW5j dGlvbj5zdHJlYW1fc2VxdWVuY2VfY2I8L2Z1bmN0aW9uPiwgYW5kCiAgICAgIDxmdW5jdGlv bj5zdHJlYW1fdHJ1bmNhdGVfY2I8L2Z1bmN0aW9uPiBhcmUgb3B0aW9uYWwuCiAgICAgPC9w YXJhPgogCkBAIC04MDgsNiArODE0LDM1IEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNv ZGVNZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogICAg ICA8L3BhcmE+CiAgICAgPC9zZWN0Mz4KIAorICAgIDxzZWN0MyBpZD0ibG9naWNhbGRlY29k aW5nLW91dHB1dC1wbHVnaW4tc2VxdWVuY2UiPgorICAgICA8dGl0bGU+U2VxdWVuY2UgQ2Fs bGJhY2s8L3RpdGxlPgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIG9wdGlvbmFsIDxmdW5j dGlvbj5zZXF1ZW5jZV9jYjwvZnVuY3Rpb24+IGNhbGxiYWNrIGlzIGNhbGxlZCBmb3IKKyAg ICAgIGFjdGlvbnMgdGhhdCB1cGRhdGUgYSBzZXF1ZW5jZSB2YWx1ZS4KKzxwcm9ncmFtbGlz dGluZz4KK3R5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVTZXF1ZW5jZUNCKSAoc3RydWN0 IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb24gcmVs LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHRyYW5z YWN0aW9uYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dDY0IGxhc3RfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludDY0IGxvZ19jbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJvb2wgaXNfY2FsbGVkKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICBUaGUg PHBhcmFtZXRlcj50eG48L3BhcmFtZXRlcj4gcGFyYW1ldGVyIGNvbnRhaW5zIG1ldGEgaW5m b3JtYXRpb24gYWJvdXQKKyAgICAgIHRoZSB0cmFuc2FjdGlvbiB0aGUgc2VxdWVuY2UgY2hh bmdlIGlzIHBhcnQgb2YuIE5vdGUgaG93ZXZlciB0aGF0IGl0IGNhbgorICAgICAgYmUgTlVM TCB3aGVuIHRoZSBzZXF1ZW5jZSBjaGFuZ2UgaXMgbm9uLXRyYW5zYWN0aW9uYWwgYW5kIHRo ZSBYSUQgd2FzIG5vdAorICAgICAgYXNzaWduZWQgeWV0IGluIHRoZSB0cmFuc2FjdGlvbiB3 aGljaCB1cGRhdGVkIHRoZSBzZXF1ZW5jZSB2YWx1ZS4KKyAgICAgIFRoZSA8cGFyYW1ldGVy PnNlcXVlbmNlX2xzbjwvcGFyYW1ldGVyPiBoYXMgV0FMIGxvY2F0aW9uIG9mIHRoZSBzZXF1 ZW5jZQorICAgICAgdXBkYXRlLiBUaGUgPHBhcmFtZXRlcj50cmFuc2FjdGlvbmFsPC9wYXJh bWV0ZXI+IHNheXMgaWYgdGhlIHNlcXVlbmNlIGhhcworICAgICAgdG8gYmUgcmVwbGF5ZWQg YXMgcGFydCBvZiB0aGUgdHJhbnNhY3Rpb24gb3IgZGlyZWN0bHkuCisKKyAgICAgIFRoZSA8 cGFyYW1ldGVyPmxhc3RfdmFsdWU8L3BhcmFtZXRlcj4sIDxwYXJhbWV0ZXI+bG9nX2NudDwv cGFyYW1ldGVyPiBhbmQKKyAgICAgIDxwYXJhbWV0ZXI+aXNfY2FsbGVkPC9wYXJhbWV0ZXI+ IHBhcmFtZXRlcnMgZGVzY3JpYmUgdGhlIHNlcXVlbmNlIGNoYW5nZS4KKyAgICAgPC9wYXJh PgorICAgIDwvc2VjdDM+CisKICAgICA8c2VjdDMgaWQ9ImxvZ2ljYWxkZWNvZGluZy1vdXRw dXQtcGx1Z2luLWZpbHRlci1wcmVwYXJlIj4KICAgICAgPHRpdGxlPlByZXBhcmUgRmlsdGVy IENhbGxiYWNrPC90aXRsZT4KIApAQCAtMTAxNyw2ICsxMDUyLDI2IEBAIHR5cGVkZWYgdm9p ZCAoKkxvZ2ljYWxEZWNvZGVTdHJlYW1NZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4CiAgICAgIDwvcGFyYT4KICAgICA8L3NlY3QzPgogCisgICAgPHNl Y3QzIGlkPSJsb2dpY2FsZGVjb2Rpbmctb3V0cHV0LXBsdWdpbi1zdHJlYW0tc2VxdWVuY2Ui PgorICAgICA8dGl0bGU+U3RyZWFtIFNlcXVlbmNlIENhbGxiYWNrPC90aXRsZT4KKyAgICAg PHBhcmE+CisgICAgICBUaGUgb3B0aW9uYWwgPGZ1bmN0aW9uPnN0cmVhbV9zZXF1ZW5jZV9j YjwvZnVuY3Rpb24+IGNhbGxiYWNrIGlzIGNhbGxlZAorICAgICAgZm9yIGFjdGlvbnMgdGhh dCBjaGFuZ2UgYSBzZXF1ZW5jZSBpbiBhIGJsb2NrIG9mIHN0cmVhbWVkIGNoYW5nZXMKKyAg ICAgIChkZW1hcmNhdGVkIGJ5IDxmdW5jdGlvbj5zdHJlYW1fc3RhcnRfY2I8L2Z1bmN0aW9u PiBhbmQKKyAgICAgIDxmdW5jdGlvbj5zdHJlYW1fc3RvcF9jYjwvZnVuY3Rpb24+IGNhbGxz KS4KKzxwcm9ncmFtbGlzdGluZz4KK3R5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVTdHJl YW1TZXF1ZW5jZUNCKSAoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVvcmRlckJ1 ZmZlclRYTiAqdHhuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBYTG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb24gcmVsLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHRyYW5zYWN0aW9uYWws CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0 IGxhc3RfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludDY0IGxvZ19jbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJvb2wgaXNfY2FsbGVkKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cisg ICAgIDwvcGFyYT4KKyAgICA8L3NlY3QzPgorCiAgICAgPHNlY3QzIGlkPSJsb2dpY2FsZGVj b2Rpbmctb3V0cHV0LXBsdWdpbi1zdHJlYW0tdHJ1bmNhdGUiPgogICAgICA8dGl0bGU+U3Ry ZWFtIFRydW5jYXRlIENhbGxiYWNrPC90aXRsZT4KICAgICAgPHBhcmE+CkBAIC0xMTk3LDgg KzEyNTIsOSBAQCBPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogICAgIGluLXByb2dy ZXNzIHRyYW5zYWN0aW9ucy4gVGhlcmUgYXJlIG11bHRpcGxlIHJlcXVpcmVkIHN0cmVhbWlu ZyBjYWxsYmFja3MKICAgICAoPGZ1bmN0aW9uPnN0cmVhbV9zdGFydF9jYjwvZnVuY3Rpb24+ LCA8ZnVuY3Rpb24+c3RyZWFtX3N0b3BfY2I8L2Z1bmN0aW9uPiwKICAgICA8ZnVuY3Rpb24+ c3RyZWFtX2Fib3J0X2NiPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5zdHJlYW1fY29tbWl0X2Ni PC9mdW5jdGlvbj4KLSAgICBhbmQgPGZ1bmN0aW9uPnN0cmVhbV9jaGFuZ2VfY2I8L2Z1bmN0 aW9uPikgYW5kIHR3byBvcHRpb25hbCBjYWxsYmFja3MKLSAgICAoPGZ1bmN0aW9uPnN0cmVh bV9tZXNzYWdlX2NiPC9mdW5jdGlvbj4gYW5kIDxmdW5jdGlvbj5zdHJlYW1fdHJ1bmNhdGVf Y2I8L2Z1bmN0aW9uPikuCisgICAgYW5kIDxmdW5jdGlvbj5zdHJlYW1fY2hhbmdlX2NiPC9m dW5jdGlvbj4pIGFuZCBtdWx0aXBsZSBvcHRpb25hbCBjYWxsYmFja3MKKyAgICAoPGZ1bmN0 aW9uPnN0cmVhbV9tZXNzYWdlX2NiPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5zdHJlYW1fc2Vx dWVuY2VfY2I8L2Z1bmN0aW9uPiwKKyAgICBhbmQgPGZ1bmN0aW9uPnN0cmVhbV90cnVuY2F0 ZV9jYjwvZnVuY3Rpb24+KS4KICAgICBBbHNvLCBpZiBzdHJlYW1pbmcgb2YgdHdvLXBoYXNl IGNvbW1hbmRzIGlzIHRvIGJlIHN1cHBvcnRlZCwgdGhlbiBhZGRpdGlvbmFsCiAgICAgY2Fs bGJhY2tzIG11c3QgYmUgcHJvdmlkZWQuIChTZWUgPHhyZWYgbGlua2VuZD0ibG9naWNhbGRl Y29kaW5nLXR3by1waGFzZS1jb21taXRzIi8+CiAgICAgZm9yIGRldGFpbHMpLgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggNzJiZmRjMDdhNDkuLjYyNmI1YjI1MmY0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTM3OCw4ICszNzgsMTMgQEAgZmlsbF9zZXFf d2l0aF9kYXRhKFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxlIHR1cGxlKQogCiAJLyogY2hlY2sg dGhlIGNvbW1lbnQgYWJvdmUgbmV4dHZhbF9pbnRlcm5hbCgpJ3MgZXF1aXZhbGVudCBjYWxs LiAqLwogCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCisJewogCQlHZXRUb3BUcmFuc2Fj dGlvbklkKCk7CiAKKwkJaWYgKFhMb2dMb2dpY2FsSW5mb0FjdGl2ZSgpKQorCQkJR2V0Q3Vy cmVudFRyYW5zYWN0aW9uSWQoKTsKKwl9CisKIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAog CU1hcmtCdWZmZXJEaXJ0eShidWYpOwpAQCAtMzk5LDYgKzQwNCw3IEBAIGZpbGxfc2VxX3dp dGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXBsZSkKIAkJWExvZ1JlZ2lzdGVy QnVmZmVyKDAsIGJ1ZiwgUkVHQlVGX1dJTExfSU5JVCk7CiAKIAkJeGxyZWMubm9kZSA9IHJl bC0+cmRfbm9kZTsKKwkJeGxyZWMuY3JlYXRlZCA9IHRydWU7CiAKIAkJWExvZ1JlZ2lzdGVy RGF0YSgoY2hhciAqKSAmeGxyZWMsIHNpemVvZih4bF9zZXFfcmVjKSk7CiAJCVhMb2dSZWdp c3RlckRhdGEoKGNoYXIgKikgdHVwbGUtPnRfZGF0YSwgdHVwbGUtPnRfbGVuKTsKQEAgLTc2 NCwxMCArNzcwLDI4IEBAIG5leHR2YWxfaW50ZXJuYWwoT2lkIHJlbGlkLCBib29sIGNoZWNr X3Blcm1pc3Npb25zKQogCSAqIEl0J3Mgc3VmZmljaWVudCB0byBlbnN1cmUgdGhlIHRvcGxl dmVsIHRyYW5zYWN0aW9uIGhhcyBhbiB4aWQsIG5vIG5lZWQKIAkgKiB0byBhc3NpZ24geGlk cyBzdWJ4YWN0cywgdGhhdCdsbCBhbHJlYWR5IHRyaWdnZXIgYW4gYXBwcm9wcmlhdGUgd2Fp dC4KIAkgKiAoSGF2ZSB0byBkbyB0aGF0IGhlcmUsIHNvIHdlJ3JlIG91dHNpZGUgdGhlIGNy aXRpY2FsIHNlY3Rpb24pCisJICoKKwkgKiBXZSBoYXZlIHRvIGVuc3VyZSB3ZSBoYXZlIGEg cHJvcGVyIFhJRCwgd2hpY2ggd2lsbCBiZSBpbmNsdWRlZCBpbgorCSAqIHRoZSBYTE9HIHJl Y29yZCBieSBYTG9nUmVjb3JkQXNzZW1ibGUuIE90aGVyd2lzZSB0aGUgZmlyc3QgbmV4dHZh bCgpCisJICogaW4gYSBzdWJ4YWN0ICh3aXRob3V0IGFueSBwcmVjZWRpbmcgY2hhbmdlcykg d291bGQgZ2V0IFhJRCAwLCBhbmQgaXQKKwkgKiB3b3VsZCB0aGVuIGJlIGltcG9zc2libGUg dG8gZGVjaWRlIHdoaWNoIHRvcCB4YWN0IGl0IGJlbG9uZ3MgdG8uCisJICogSXQnZCBhbHNv IHRyaWdnZXIgYXNzZXJ0IGluIERlY29kZVNlcXVlbmNlLiBXZSBvbmx5IGRvIHRoYXQgd2l0 aAorCSAqIHdhbF9sZXZlbD1sb2dpY2FsLCB0aG91Z2guCisJICoKKwkgKiBYWFggVGhpcyBt aWdodCBzZWVtIHVubmVjZXNzYXJ5LCBiZWNhdXNlIGlmIHRoZXJlJ3Mgbm8gWElEIHRoZSB4 YWN0CisJICogY291bGRuJ3QgaGF2ZSBkb25lIGFueXRoaW5nIGltcG9ydGFudCB5ZXQsIGUu Zy4gaXQgY291bGQgbm90IGhhdmUKKwkgKiBjcmVhdGVkIGEgc2VxdWVuY2UuIEJ1dCB0aGF0 J3MgaW5jb3JyZWN0LCBhcyBpdCBpZ25vcmVzIHN1YnhhY3RzLiBUaGUKKwkgKiBjdXJyZW50 IHN1YnRyYW5zYWN0aW9uIG1pZ2h0IG5vdCBoYXZlIGRvbmUgYW55dGhpbmcgeWV0ICh0aHVz IG5vIFhJRCksCisJICogYnV0IGFuIGVhcmxpZXIgb25lIG1pZ2h0IGhhdmUgY3JlYXRlZCB0 aGUgc2VxdWVuY2UuCiAJICovCiAJaWYgKGxvZ2l0ICYmIFJlbGF0aW9uTmVlZHNXQUwoc2Vx cmVsKSkKKwl7CiAJCUdldFRvcFRyYW5zYWN0aW9uSWQoKTsKIAorCQlpZiAoWExvZ0xvZ2lj YWxJbmZvQWN0aXZlKCkpCisJCQlHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOworCX0KKwog CS8qIHJlYWR5IHRvIGNoYW5nZSB0aGUgb24tZGlzayAob3IgcmVhbGx5LCBpbi1idWZmZXIp IHR1cGxlICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKQEAgLTgwMyw2ICs4MjcsNyBA QCBuZXh0dmFsX2ludGVybmFsKE9pZCByZWxpZCwgYm9vbCBjaGVja19wZXJtaXNzaW9ucykK IAkJc2VxLT5sb2dfY250ID0gMDsKIAogCQl4bHJlYy5ub2RlID0gc2VxcmVsLT5yZF9ub2Rl OworCQl4bHJlYy5jcmVhdGVkID0gZmFsc2U7CiAKIAkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hh ciAqKSAmeGxyZWMsIHNpemVvZih4bF9zZXFfcmVjKSk7CiAJCVhMb2dSZWdpc3RlckRhdGEo KGNoYXIgKikgc2VxZGF0YXR1cGxlLnRfZGF0YSwgc2VxZGF0YXR1cGxlLnRfbGVuKTsKQEAg LTk3Nyw4ICsxMDAyLDEzIEBAIGRvX3NldHZhbChPaWQgcmVsaWQsIGludDY0IG5leHQsIGJv b2wgaXNjYWxsZWQpCiAKIAkvKiBjaGVjayB0aGUgY29tbWVudCBhYm92ZSBuZXh0dmFsX2lu dGVybmFsKCkncyBlcXVpdmFsZW50IGNhbGwuICovCiAJaWYgKFJlbGF0aW9uTmVlZHNXQUwo c2VxcmVsKSkKKwl7CiAJCUdldFRvcFRyYW5zYWN0aW9uSWQoKTsKIAorCQlpZiAoWExvZ0xv Z2ljYWxJbmZvQWN0aXZlKCkpCisJCQlHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOworCX0K KwogCS8qIHJlYWR5IHRvIGNoYW5nZSB0aGUgb24tZGlzayAob3IgcmVhbGx5LCBpbi1idWZm ZXIpIHR1cGxlICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKQEAgLTk5OSw2ICsxMDI5 LDggQEAgZG9fc2V0dmFsKE9pZCByZWxpZCwgaW50NjQgbmV4dCwgYm9vbCBpc2NhbGxlZCkK IAkJWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIGJ1ZiwgUkVHQlVGX1dJTExfSU5JVCk7CiAKIAkJ eGxyZWMubm9kZSA9IHNlcXJlbC0+cmRfbm9kZTsKKwkJeGxyZWMuY3JlYXRlZCA9IGZhbHNl OworCiAJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBzaXplb2YoeGxfc2Vx X3JlYykpOwogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopIHNlcWRhdGF0dXBsZS50X2Rh dGEsIHNlcWRhdGF0dXBsZS50X2xlbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2RlY29kZS5jCmluZGV4IDU5YWVkNmNlZTZjLi42OTY1YmU1M2NhYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC00Miw2ICs0Miw3 IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3NuYXBidWlsZC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5o IgorI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAKIHR5cGVkZWYgc3RydWN0IFhM b2dSZWNvcmRCdWZmZXIKIHsKQEAgLTc0LDEwICs3NSwxMSBAQCBzdGF0aWMgdm9pZCBEZWNv ZGVBYm9ydChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIg KmJ1ZiwKIAkJCQkJCWJvb2wgdHdvX3BoYXNlKTsKIHN0YXRpYyB2b2lkIERlY29kZVByZXBh cmUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYs CiAJCQkJCQkgIHhsX3hhY3RfcGFyc2VkX3ByZXBhcmUgKnBhcnNlZCk7Ci0KK3N0YXRpYyB2 b2lkIERlY29kZVNlcXVlbmNlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1Jl Y29yZEJ1ZmZlciAqYnVmKTsKIAogLyogY29tbW9uIGZ1bmN0aW9uIHRvIGRlY29kZSB0dXBs ZXMgKi8KIHN0YXRpYyB2b2lkIERlY29kZVhMb2dUdXBsZShjaGFyICpkYXRhLCBTaXplIGxl biwgUmVvcmRlckJ1ZmZlclR1cGxlQnVmICp0dXApOworc3RhdGljIHZvaWQgRGVjb2RlU2Vx VHVwbGUoY2hhciAqZGF0YSwgU2l6ZSBsZW4sIFJlb3JkZXJCdWZmZXJUdXBsZUJ1ZiAqdHVw bGUpOwogCiAvKiBoZWxwZXIgZnVuY3Rpb25zIGZvciBkZWNvZGluZyB0cmFuc2FjdGlvbnMg Ki8KIHN0YXRpYyBpbmxpbmUgYm9vbCBGaWx0ZXJQcmVwYXJlKExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCwKQEAgLTE1OCw2ICsxNjAsMTAgQEAgTG9naWNhbERlY29kaW5nUHJvY2Vz c1JlY29yZChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWFkZXJTdGF0ZSAq cmVjb3IKIAkJCURlY29kZUxvZ2ljYWxNc2dPcChjdHgsICZidWYpOwogCQkJYnJlYWs7CiAK KwkJY2FzZSBSTV9TRVFfSUQ6CisJCQlEZWNvZGVTZXF1ZW5jZShjdHgsICZidWYpOworCQkJ YnJlYWs7CisKIAkJCS8qCiAJCQkgKiBSbWdycyBpcnJlbGV2YW50IGZvciBsb2dpY2FsIGRl Y29kaW5nOyB0aGV5IGRlc2NyaWJlIHN0dWZmIG5vdAogCQkJICogcmVwcmVzZW50ZWQgaW4g bG9naWNhbCBkZWNvZGluZy4gQWRkIG5ldyBybWdycyBpbiBybWdybGlzdC5oJ3MKQEAgLTE3 Myw3ICsxNzksNiBAQCBMb2dpY2FsRGVjb2RpbmdQcm9jZXNzUmVjb3JkKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlYWRlclN0YXRlICpyZWNvcgogCQljYXNlIFJNX0hB U0hfSUQ6CiAJCWNhc2UgUk1fR0lOX0lEOgogCQljYXNlIFJNX0dJU1RfSUQ6Ci0JCWNhc2Ug Uk1fU0VRX0lEOgogCQljYXNlIFJNX1NQR0lTVF9JRDoKIAkJY2FzZSBSTV9CUklOX0lEOgog CQljYXNlIFJNX0NPTU1JVF9UU19JRDoKQEAgLTEzMTMsMyArMTMxOCwxMjUgQEAgRGVjb2Rl VFhOTmVlZFNraXAoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVm ZmVyICpidWYsCiAJCQkodHhuX2RiaWQgIT0gSW52YWxpZE9pZCAmJiB0eG5fZGJpZCAhPSBj dHgtPnNsb3QtPmRhdGEuZGF0YWJhc2UpIHx8CiAJCQljdHgtPmZhc3RfZm9yd2FyZCB8fCBG aWx0ZXJCeU9yaWdpbihjdHgsIG9yaWdpbl9pZCkpOwogfQorCisvKgorICogRGVjb2RlIFNl cXVlbmNlIFR1cGxlCisgKi8KK3N0YXRpYyB2b2lkCitEZWNvZGVTZXFUdXBsZShjaGFyICpk YXRhLCBTaXplIGxlbiwgUmVvcmRlckJ1ZmZlclR1cGxlQnVmICp0dXBsZSkKK3sKKwlpbnQJ CQlkYXRhbGVuID0gbGVuIC0gc2l6ZW9mKHhsX3NlcV9yZWMpIC0gU2l6ZW9mSGVhcFR1cGxl SGVhZGVyOworCisJQXNzZXJ0KGRhdGFsZW4gPj0gMCk7CisKKwl0dXBsZS0+dHVwbGUudF9s ZW4gPSBkYXRhbGVuICsgU2l6ZW9mSGVhcFR1cGxlSGVhZGVyOzsKKworCUl0ZW1Qb2ludGVy U2V0SW52YWxpZCgmdHVwbGUtPnR1cGxlLnRfc2VsZik7CisKKwl0dXBsZS0+dHVwbGUudF90 YWJsZU9pZCA9IEludmFsaWRPaWQ7CisKKwltZW1jcHkoKChjaGFyICopIHR1cGxlLT50dXBs ZS50X2RhdGEpLAorCQkgICBkYXRhICsgc2l6ZW9mKHhsX3NlcV9yZWMpLAorCQkgICBTaXpl b2ZIZWFwVHVwbGVIZWFkZXIpOworCisJbWVtY3B5KCgoY2hhciAqKSB0dXBsZS0+dHVwbGUu dF9kYXRhKSArIFNpemVvZkhlYXBUdXBsZUhlYWRlciwKKwkJICAgZGF0YSArIHNpemVvZih4 bF9zZXFfcmVjKSArIFNpemVvZkhlYXBUdXBsZUhlYWRlciwKKwkJICAgZGF0YWxlbik7Cit9 CisKKy8qCisgKiBIYW5kbGUgc2VxdWVuY2UgZGVjb2RlCisgKgorICogRGVjb2Rpbmcgc2Vx dWVuY2VzIGlzIGEgYml0IHRyaWNreSwgYmVjYXVzZSB3aGlsZSBtb3N0IHNlcXVlbmNlIGFj dGlvbnMKKyAqIGFyZSBub24tdHJhbnNhY3Rpb25hbCAobm90IHN1YmplY3QgdG8gcm9sbGJh Y2spLCBzb21lIG5lZWQgdG8gYmUgaGFuZGxlZAorICogYXMgdHJhbnNhY3Rpb25hbC4KKyAq CisgKiBCeSBkZWZhdWx0LCBhIHNlcXVlbmNlIGluY3JlbWVudCBpcyBub24tdHJhbnNhY3Rp b25hbCAtIHdlIG11c3Qgbm90IHF1ZXVlCisgKiBpdCBpbiBhIHRyYW5zYWN0aW9uIGFzIG90 aGVyIGNoYW5nZXMsIGJlY2F1c2UgdGhlIHRyYW5zYWN0aW9uIG1pZ2h0IGdldAorICogcm9s bGVkIGJhY2sgYW5kIHdlJ2QgZGlzY2FyZCB0aGUgaW5jcmVtZW50LiBUaGUgZG93bnN0cmVh bSB3b3VsZCBub3QgYmUKKyAqIG5vdGlmaWVkIGFib3V0IHRoZSBpbmNyZW1lbnQsIHdoaWNo IGlzIHdyb25nLgorICoKKyAqIE9uIHRoZSBvdGhlciBoYW5kLCB0aGUgc2VxdWVuY2UgbWF5 IGJlIGNyZWF0ZWQgaW4gYSB0cmFuc2FjdGlvbi4gSW4gdGhpcworICogY2FzZSB3ZSAqc2hv dWxkKiBxdWV1ZSB0aGUgY2hhbmdlIGFzIG90aGVyIGNoYW5nZXMgaW4gdGhlIHRyYW5zYWN0 aW9uLAorICogYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIHNlbmQgdGhlIGluY3JlbWVudHMg Zm9yIHVua25vd24gc2VxdWVuY2UgdG8gdGhlCisgKiBwbHVnaW4gLSBpdCBtaWdodCBnZXQg Y29uZnVzZWQgYWJvdXQgd2hpY2ggc2VxdWVuY2UgaXQncyByZWxhdGVkIHRvIGV0Yy4KKyAq Lworc3RhdGljIHZvaWQKK0RlY29kZVNlcXVlbmNlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQoreworCVNuYXBCdWlsZCAgKmJ1aWxkZXIg PSBjdHgtPnNuYXBzaG90X2J1aWxkZXI7CisJUmVvcmRlckJ1ZmZlclR1cGxlQnVmICp0dXBs ZWJ1ZjsKKwlSZWxGaWxlTm9kZSB0YXJnZXRfbm9kZTsKKwlYTG9nUmVhZGVyU3RhdGUgKnIg PSBidWYtPnJlY29yZDsKKwljaGFyCSAgICp0dXBsZWRhdGEgPSBOVUxMOworCVNpemUJCXR1 cGxlbGVuOworCVNpemUJCWRhdGFsZW4gPSAwOworCVRyYW5zYWN0aW9uSWQgeGlkID0gWExv Z1JlY0dldFhpZChyKTsKKwl1aW50OAkJaW5mbyA9IFhMb2dSZWNHZXRJbmZvKGJ1Zi0+cmVj b3JkKSAmIH5YTFJfSU5GT19NQVNLOworCXhsX3NlcV9yZWMgKnhscmVjOworCVNuYXBzaG90 CXNuYXBzaG90OworCVJlcE9yaWdpbklkIG9yaWdpbl9pZCA9IFhMb2dSZWNHZXRPcmlnaW4o cik7CisJYm9vbAkJdHJhbnNhY3Rpb25hbDsKKworCS8qIG9ubHkgZGVjb2RlIGNoYW5nZXMg ZmxhZ2dlZCB3aXRoIFhMT0dfU0VRX0xPRyAqLworCWlmIChpbmZvICE9IFhMT0dfU0VRX0xP RykKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgUk1fU0VRX0lEIHJlY29yZCB0eXBlOiAl dSIsIGluZm8pOworCisJLyoKKwkgKiBJZiB3ZSBkb24ndCBoYXZlIHNuYXBzaG90IG9yIHdl IGFyZSBqdXN0IGZhc3QtZm9yd2FyZGluZywgdGhlcmUgaXMgbm8KKwkgKiBwb2ludCBpbiBk ZWNvZGluZyBtZXNzYWdlcy4KKwkgKi8KKwlpZiAoU25hcEJ1aWxkQ3VycmVudFN0YXRlKGJ1 aWxkZXIpIDwgU05BUEJVSUxEX0ZVTExfU05BUFNIT1QgfHwKKwkJY3R4LT5mYXN0X2Zvcndh cmQpCisJCXJldHVybjsKKworCS8qIG9ubHkgaW50ZXJlc3RlZCBpbiBvdXIgZGF0YWJhc2Ug Ki8KKwlYTG9nUmVjR2V0QmxvY2tUYWcociwgMCwgJnRhcmdldF9ub2RlLCBOVUxMLCBOVUxM KTsKKwlpZiAodGFyZ2V0X25vZGUuZGJOb2RlICE9IGN0eC0+c2xvdC0+ZGF0YS5kYXRhYmFz ZSkKKwkJcmV0dXJuOworCisJLyogb3V0cHV0IHBsdWdpbiBkb2Vzbid0IGxvb2sgZm9yIHRo aXMgb3JpZ2luLCBubyBuZWVkIHRvIHF1ZXVlICovCisJaWYgKEZpbHRlckJ5T3JpZ2luKGN0 eCwgWExvZ1JlY0dldE9yaWdpbihyKSkpCisJCXJldHVybjsKKworCXR1cGxlZGF0YSA9IFhM b2dSZWNHZXREYXRhKHIpOworCWRhdGFsZW4gPSBYTG9nUmVjR2V0RGF0YUxlbihyKTsKKwl0 dXBsZWxlbiA9IGRhdGFsZW4gLSBTaXplT2ZIZWFwSGVhZGVyIC0gc2l6ZW9mKHhsX3NlcV9y ZWMpOworCisJLyogZXh0cmFjdCB0aGUgV0FMIHJlY29yZCwgd2l0aCAiY3JlYXRlZCIgZmxh ZyAqLworCXhscmVjID0gKHhsX3NlcV9yZWMgKikgWExvZ1JlY0dldERhdGEocik7CisKKwkv KiBYWFggaG93IGNvdWxkIHdlIGhhdmUgc2VxdWVuY2UgY2hhbmdlIHdpdGhvdXQgZGF0YT8g Ki8KKwlpZighZGF0YWxlbiB8fCAhdHVwbGVkYXRhKQorCQlyZXR1cm47CisKKwl0dXBsZWJ1 ZiA9IFJlb3JkZXJCdWZmZXJHZXRUdXBsZUJ1ZihjdHgtPnJlb3JkZXIsIHR1cGxlbGVuKTsK KwlEZWNvZGVTZXFUdXBsZSh0dXBsZWRhdGEsIGRhdGFsZW4sIHR1cGxlYnVmKTsKKworCS8q CisJICogU2hvdWxkIHdlIGhhbmRsZSB0aGUgc2VxdWVuY2UgaW5jcmVtZW50IGFzIHRyYW5z YWN0aW9uYWwgb3Igbm90PworCSAqCisJICogSWYgdGhlIHNlcXVlbmNlIHdhcyBjcmVhdGVk IGluIGEgc3RpbGwtcnVubmluZyB0cmFuc2FjdGlvbiwgdHJlYXQKKwkgKiBpdCBhcyB0cmFu c2FjdGlvbmFsIGFuZCBxdWV1ZSB0aGUgaW5jcmVtZW50cy4gT3RoZXJ3aXNlIGl0IG5lZWRz CisJICogdG8gYmUgdHJlYXRlZCBhcyBub24tdHJhbnNhY3Rpb25hbCwgaW4gd2hpY2ggY2Fz ZSB3ZSBzZW5kIGl0IHRvCisJICogdGhlIHBsdWdpbiByaWdodCBhd2F5LgorCSAqLworCXRy YW5zYWN0aW9uYWwgPSBSZW9yZGVyQnVmZmVyU2VxdWVuY2VJc1RyYW5zYWN0aW9uYWwoY3R4 LT5yZW9yZGVyLAorCQkJCQkJCQkJCQkJCQkgdGFyZ2V0X25vZGUsCisJCQkJCQkJCQkJCQkJ CSB4bHJlYy0+Y3JlYXRlZCk7CisKKwkvKiBTa2lwIHRoZSBjaGFuZ2UgaWYgYWxyZWFkeSBw cm9jZXNzZWQgKHBlciB0aGUgc25hcHNob3QpLiAqLworCWlmICh0cmFuc2FjdGlvbmFsICYm CisJCSFTbmFwQnVpbGRQcm9jZXNzQ2hhbmdlKGJ1aWxkZXIsIHhpZCwgYnVmLT5vcmlncHRy KSkKKwkJcmV0dXJuOworCWVsc2UgaWYgKCF0cmFuc2FjdGlvbmFsICYmCisJCQkgKFNuYXBC dWlsZEN1cnJlbnRTdGF0ZShidWlsZGVyKSAhPSBTTkFQQlVJTERfQ09OU0lTVEVOVCB8fAor CQkJICBTbmFwQnVpbGRYYWN0TmVlZHNTa2lwKGJ1aWxkZXIsIGJ1Zi0+b3JpZ3B0cikpKQor CQlyZXR1cm47CisKKwkvKiBRdWV1ZSB0aGUgaW5jcmVtZW50IChvciBzZW5kIGltbWVkaWF0 ZWx5IGlmIG5vdCB0cmFuc2FjdGlvbmFsKS4gKi8KKwlzbmFwc2hvdCA9IFNuYXBCdWlsZEdl dE9yQnVpbGRTbmFwc2hvdChidWlsZGVyLCB4aWQpOworCVJlb3JkZXJCdWZmZXJRdWV1ZVNl cXVlbmNlKGN0eC0+cmVvcmRlciwgeGlkLCBzbmFwc2hvdCwgYnVmLT5lbmRwdHIsCisJCQkJ CQkJICAgb3JpZ2luX2lkLCB0YXJnZXRfbm9kZSwgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkg ICB4bHJlYy0+Y3JlYXRlZCwgdHVwbGVidWYpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwppbmRleCAxMGNiZGVhMTI0Yy4uYWFiNWUxMjI2ZDQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCkBAIC03 Myw2ICs3MywxMCBAQCBzdGF0aWMgdm9pZCB0cnVuY2F0ZV9jYl93cmFwcGVyKFJlb3JkZXJC dWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiBzdGF0aWMgdm9pZCBtZXNz YWdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKIAkJCQkJCQkgICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLCBib29sIHRyYW5zYWN0 aW9uYWwsCiAJCQkJCQkJICAgY29uc3QgY2hhciAqcHJlZml4LCBTaXplIG1lc3NhZ2Vfc2l6 ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7CitzdGF0aWMgdm9pZCBzZXF1ZW5jZV9jYl93cmFw cGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJ CQkJCVhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLCBSZWxhdGlvbiByZWwsCisJCQkJCQkJCWJv b2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkJaW50NjQgbGFzdF92YWx1ZSwgaW50NjQgbG9n X2NudCwgYm9vbCBpc19jYWxsZWQpOwogCiAvKiBzdHJlYW1pbmcgY2FsbGJhY2tzICovCiBz dGF0aWMgdm9pZCBzdHJlYW1fc3RhcnRfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNo ZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLApAQCAtOTAsNiArOTQsMTAgQEAgc3RhdGljIHZv aWQgc3RyZWFtX2NoYW5nZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4KIHN0YXRpYyB2b2lkIHN0cmVhbV9tZXNzYWdlX2NiX3dyYXBw ZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJ CQkJCSAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwgYm9vbCB0cmFuc2FjdGlvbmFsLAogCQkJ CQkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUgbWVzc2FnZV9zaXplLCBjb25zdCBj aGFyICptZXNzYWdlKTsKK3N0YXRpYyB2b2lkIHN0cmVhbV9zZXF1ZW5jZV9jYl93cmFwcGVy KFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJ CQkgICBYTG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwgUmVsYXRpb24gcmVsLAorCQkJCQkJCQkJ ICAgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCQkJICAgaW50NjQgbGFzdF92YWx1ZSwg aW50NjQgbG9nX2NudCwgYm9vbCBpc19jYWxsZWQpOwogc3RhdGljIHZvaWQgc3RyZWFtX3Ry dW5jYXRlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwKIAkJCQkJCQkJCSAgIGludCBucmVsYXRpb25zLCBSZWxhdGlvbiByZWxhdGlv bnNbXSwgUmVvcmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlKTsKIApAQCAtMjE4LDYgKzIyNiw3 IEBAIFN0YXJ0dXBEZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0cHV0X3BsdWdpbl9vcHRpb25z LAogCWN0eC0+cmVvcmRlci0+YXBwbHlfdHJ1bmNhdGUgPSB0cnVuY2F0ZV9jYl93cmFwcGVy OwogCWN0eC0+cmVvcmRlci0+Y29tbWl0ID0gY29tbWl0X2NiX3dyYXBwZXI7CiAJY3R4LT5y ZW9yZGVyLT5tZXNzYWdlID0gbWVzc2FnZV9jYl93cmFwcGVyOworCWN0eC0+cmVvcmRlci0+ c2VxdWVuY2UgPSBzZXF1ZW5jZV9jYl93cmFwcGVyOwogCiAJLyoKIAkgKiBUbyBzdXBwb3J0 IHN0cmVhbWluZywgd2UgcmVxdWlyZSBzdGFydC9zdG9wL2Fib3J0L2NvbW1pdC9jaGFuZ2UK QEAgLTIzNCw2ICsyNDMsNyBAQCBTdGFydHVwRGVjb2RpbmdDb250ZXh0KExpc3QgKm91dHB1 dF9wbHVnaW5fb3B0aW9ucywKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9jb21taXRfY2Ig IT0gTlVMTCkgfHwKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9jaGFuZ2VfY2IgIT0gTlVM TCkgfHwKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9tZXNzYWdlX2NiICE9IE5VTEwpIHx8 CisJCShjdHgtPmNhbGxiYWNrcy5zdHJlYW1fc2VxdWVuY2VfY2IgIT0gTlVMTCkgfHwKIAkJ KGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV90cnVuY2F0ZV9jYiAhPSBOVUxMKTsKIAogCS8qCkBA IC0yNTEsNiArMjYxLDcgQEAgU3RhcnR1cERlY29kaW5nQ29udGV4dChMaXN0ICpvdXRwdXRf cGx1Z2luX29wdGlvbnMsCiAJY3R4LT5yZW9yZGVyLT5zdHJlYW1fY29tbWl0ID0gc3RyZWFt X2NvbW1pdF9jYl93cmFwcGVyOwogCWN0eC0+cmVvcmRlci0+c3RyZWFtX2NoYW5nZSA9IHN0 cmVhbV9jaGFuZ2VfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPnN0cmVhbV9tZXNzYWdl ID0gc3RyZWFtX21lc3NhZ2VfY2Jfd3JhcHBlcjsKKwljdHgtPnJlb3JkZXItPnN0cmVhbV9z ZXF1ZW5jZSA9IHN0cmVhbV9zZXF1ZW5jZV9jYl93cmFwcGVyOwogCWN0eC0+cmVvcmRlci0+ c3RyZWFtX3RydW5jYXRlID0gc3RyZWFtX3RydW5jYXRlX2NiX3dyYXBwZXI7CiAKIApAQCAt MTIwMyw2ICsxMjE0LDQyIEBAIG1lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpj YWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBl cnJjYWxsYmFjay5wcmV2aW91czsKIH0KIAorc3RhdGljIHZvaWQKK3NlcXVlbmNlX2NiX3dy YXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJ CQkJWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24sIFJlbGF0aW9uIHJlbCwgYm9vbCB0cmFuc2Fj dGlvbmFsLAorCQkJCQlpbnQ2NCBsYXN0X3ZhbHVlLCBpbnQ2NCBsb2dfY250LCBib29sIGlz X2NhbGxlZCkKK3sKKwlMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHggPSBjYWNoZS0+cHJp dmF0ZV9kYXRhOworCUxvZ2ljYWxFcnJvckNhbGxiYWNrU3RhdGUgc3RhdGU7CisJRXJyb3JD b250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisKKwlBc3NlcnQoIWN0eC0+ZmFzdF9mb3J3 YXJkKTsKKworCWlmIChjdHgtPmNhbGxiYWNrcy5zZXF1ZW5jZV9jYiA9PSBOVUxMKQorCQly ZXR1cm47CisKKwkvKiBQdXNoIGNhbGxiYWNrICsgaW5mbyBvbiB0aGUgZXJyb3IgY29udGV4 dCBzdGFjayAqLworCXN0YXRlLmN0eCA9IGN0eDsKKwlzdGF0ZS5jYWxsYmFja19uYW1lID0g InNlcXVlbmNlIjsKKwlzdGF0ZS5yZXBvcnRfbG9jYXRpb24gPSBzZXF1ZW5jZV9sc247CisJ ZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBvdXRwdXRfcGx1Z2luX2Vycm9yX2NhbGxiYWNrOwor CWVycmNhbGxiYWNrLmFyZyA9ICh2b2lkICopICZzdGF0ZTsKKwllcnJjYWxsYmFjay5wcmV2 aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZl cnJjYWxsYmFjazsKKworCS8qIHNldCBvdXRwdXQgc3RhdGUgKi8KKwljdHgtPmFjY2VwdF93 cml0ZXMgPSB0cnVlOworCWN0eC0+d3JpdGVfeGlkID0gdHhuICE9IE5VTEwgPyB0eG4tPnhp ZCA6IEludmFsaWRUcmFuc2FjdGlvbklkOworCWN0eC0+d3JpdGVfbG9jYXRpb24gPSBzZXF1 ZW5jZV9sc247CisKKwkvKiBkbyB0aGUgYWN0dWFsIHdvcms6IGNhbGwgY2FsbGJhY2sgKi8K KwljdHgtPmNhbGxiYWNrcy5zZXF1ZW5jZV9jYihjdHgsIHR4biwgc2VxdWVuY2VfbHNuLCBy ZWwsIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkJICAgbGFzdF92YWx1ZSwgbG9nX2NudCwgaXNf Y2FsbGVkKTsKKworCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLworCWVycm9y X2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKK30KKwogc3RhdGljIHZv aWQKIHN0cmVhbV9zdGFydF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQlYTG9nUmVjUHRyIGZpcnN0X2xzbikKQEAgLTE1 MDgsNiArMTU1NSw0NyBAQCBzdHJlYW1fbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZm ZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJZXJyb3JfY29udGV4dF9zdGFj ayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOwogfQogCitzdGF0aWMgdm9pZAorc3RyZWFtX3Nl cXVlbmNlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwKKwkJCQkJCSAgIFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLCBSZWxhdGlvbiBy ZWwsCisJCQkJCQkgICBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkgICBpbnQ2NCBsYXN0 X3ZhbHVlLCBpbnQ2NCBsb2dfY250LCBib29sIGlzX2NhbGxlZCkKK3sKKwlMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHggPSBjYWNoZS0+cHJpdmF0ZV9kYXRhOworCUxvZ2ljYWxFcnJv ckNhbGxiYWNrU3RhdGUgc3RhdGU7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJh Y2s7CisKKwlBc3NlcnQoIWN0eC0+ZmFzdF9mb3J3YXJkKTsKKworCS8qIFdlJ3JlIG9ubHkg c3VwcG9zZWQgdG8gY2FsbCB0aGlzIHdoZW4gc3RyZWFtaW5nIGlzIHN1cHBvcnRlZC4gKi8K KwlBc3NlcnQoY3R4LT5zdHJlYW1pbmcpOworCisJLyogdGhpcyBjYWxsYmFjayBpcyBvcHRp b25hbCAqLworCWlmIChjdHgtPmNhbGxiYWNrcy5zdHJlYW1fc2VxdWVuY2VfY2IgPT0gTlVM TCkKKwkJcmV0dXJuOworCisJLyogUHVzaCBjYWxsYmFjayArIGluZm8gb24gdGhlIGVycm9y IGNvbnRleHQgc3RhY2sgKi8KKwlzdGF0ZS5jdHggPSBjdHg7CisJc3RhdGUuY2FsbGJhY2tf bmFtZSA9ICJzdHJlYW1fc2VxdWVuY2UiOworCXN0YXRlLnJlcG9ydF9sb2NhdGlvbiA9IHNl cXVlbmNlX2xzbjsKKwllcnJjYWxsYmFjay5jYWxsYmFjayA9IG91dHB1dF9wbHVnaW5fZXJy b3JfY2FsbGJhY2s7CisJZXJyY2FsbGJhY2suYXJnID0gKHZvaWQgKikgJnN0YXRlOworCWVy cmNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9jb250 ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOworCisJLyogc2V0IG91dHB1dCBzdGF0ZSAqLwor CWN0eC0+YWNjZXB0X3dyaXRlcyA9IHRydWU7CisJY3R4LT53cml0ZV94aWQgPSB0eG4gIT0g TlVMTCA/IHR4bi0+eGlkIDogSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJY3R4LT53cml0ZV9s b2NhdGlvbiA9IHNlcXVlbmNlX2xzbjsKKworCS8qIGRvIHRoZSBhY3R1YWwgd29yazogY2Fs bCBjYWxsYmFjayAqLworCWN0eC0+Y2FsbGJhY2tzLnNlcXVlbmNlX2NiKGN0eCwgdHhuLCBz ZXF1ZW5jZV9sc24sIHJlbCwgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkgICBsYXN0X3ZhbHVl LCBsb2dfY250LCBpc19jYWxsZWQpOworCisJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0 YWNrICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOwor fQorCiBzdGF0aWMgdm9pZAogc3RyZWFtX3RydW5jYXRlX2NiX3dyYXBwZXIoUmVvcmRlckJ1 ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJCSAgIGludCBucmVs YXRpb25zLCBSZWxhdGlvbiByZWxhdGlvbnNbXSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggN2FhNTY0N2EyYzYuLjZi NmQwZDliOTU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3Jlb3JkZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3Jlb3JkZXJidWZmZXIuYwpAQCAtNzcsNiArNzcsMzUgQEAKICAqCSAgYSBiaXQgbW9yZSBt ZW1vcnkgdG8gdGhlIG9sZGVzdCBzdWJ0cmFuc2FjdGlvbnMsIGJlY2F1c2UgaXQncyBsaWtl bHkKICAqCSAgdGhleSBhcmUgdGhlIHNvdXJjZSBmb3IgdGhlIG5leHQgc2VxdWVuY2Ugb2Yg Y2hhbmdlcy4KICAqCisgKgkgIFdoZW4gZGVjb2Rpbmcgc2VxdWVuY2VzLCB3ZSBkaWZmZXJl bnRpYXRlIGJldHdlZW4gYSBzZXF1ZW5jZXMgY3JlYXRlZAorICoJICBpbiBhIChydW5uaW5n KSB0cmFuc2FjdGlvbiwgYW5kIHNlcXVlbmNlcyBjcmVhdGVkIGluIG90aGVyIChhbHJlYWR5 CisgKgkgIGNvbW1pdHRlZCkgdHJhbnNhY3Rpb25zLiBDaGFuZ2VzIGZvciBzZXF1ZW5jZXMg Y3JlYXRlZCBpbiB0aGUgc2FtZQorICoJICB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gYXJlIHRy ZWF0ZWQgYXMgInRyYW5zYWN0aW9uYWwiIGkuZS4ganVzdCBsaWtlCisgKgkgIGFueSBvdGhl ciBjaGFuZ2UgZnJvbSB0aGF0IHRyYW5zYWN0aW9uIChhbmQgZGlzY2FyZGVkIGluIGNhc2Ug b2YgYQorICoJICByb2xsYmFjaykuIENoYW5nZXMgZm9yIHNlcXVlbmNlcyBjcmVhdGVkIGVh cmxpZXIgYXJlIHRyZWF0ZWQgYXMgbm90CisgKgkgIHRyYW5zYWN0aW9uYWwgLSBhcmUgcHJv Y2Vzc2VkIGltbWVkaWF0ZWx5LCBhcyBpZiBwZXJmb3JtZWQgb3V0c2lkZQorICoJICBhbnkg dHJhbnNhY3Rpb24gKGFuZCB0aHVzIG5vdCByb2xsZWQgYmFjaykuCisgKgorICoJICBUaGlz IG1peGVkIGJlaGF2aW9yIGlzIG5lY2Vzc2FyeSAtIHNlcXVlbmNlcyBhcmUgbm9uLXRyYW5z YWN0aW9uYWwKKyAqCSAgKGUuZy4gUk9MTEJBQ0sgZG9lcyBub3QgdW5kbyB0aGUgc2VxdWVu Y2UgaW5jcmVtZW50cykuIEJ1dCBmb3IgbmV3CisgKgkgIHNlcXVlbmNlcywgd2UgbmVlZCB0 byBoYW5kbGUgdGhlbSBpbiBhIHRyYW5zYWN0aW9uYWwgd2F5LCBiZWNhdXNlIGlmCisgKgkg IHdlIGV2ZXIgZ2V0IHNvbWUgRERMIHN1cHBvcnQsIHRoZSBzZXF1ZW5jZSB3b24ndCBleGlz dCB1bnRpbCB0aGUKKyAqCSAgdHJhbnNhY3Rpb24gZ2V0cyBhcHBsaWVkLiBTbyB3ZSBuZWVk IHRvIGVuc3VyZSB0aGUgaW5jcmVtZW50cyBkb24ndAorICoJICBoYXBwZW4gdW50aWwgdGhl IHNlcXVlbmNlIGdldHMgY3JlYXRlZC4KKyAqCisgKgkgIFRvIGRpZmZlcmVudGlhdGUgd2hp Y2ggc2VxdWVuY2VzIGFyZSAib2xkIiBhbmQgd2hpY2ggd2VyZSBjcmVhdGVkCisgKgkgIGlu IGEgc3RpbGwtcnVubmluZyB0cmFuc2FjdGlvbiwgd2UgdHJhY2sgc2VxdWVuY2VzIGNyZWF0 ZWQgaW4gcnVubmluZworICoJICB0cmFuc2FjdGlvbnMgaW4gYSBoYXNoIHRhYmxlLiBFYWNo IHNlcXVlbmNlIGlzIGlkZW50aWZpZWQgYnkgaXQncworICoJICByZWxmaWxlbm9kZSwgYW5k IGF0IHRyYW5zYWN0aW9uIGNvbW1pdCB3ZSBkaXNjYXJkIGFsbCBzZXF1ZW5jZXMKKyAqCSAg Y3JlYXRlZCBpbiB0aGF0IHBhcnRpY3VsYXIgdHJhbnNhY3Rpb24uIEZvciBlYWNoIHNlcXVl bmNlIHdlIHRyYWNrCisgKgkgIHRoZSBYSUQgb2YgdGhlIChzdWIpdHJhbnNhY3Rpb24gdGhh dCBjcmVhdGVkIGl0LCBhbmQgd2UgY2xlYW51cCB0aGUKKyAqCSAgc2VxdWVuY2VzIGZvciBl YWNoIHN1YnRyYW5zYWN0aW9uIHdoZW4gaXQgY29tcGxldGVzIChjb21taXQvcm9sbGJhY2sp LgorICoKKyAqCSAgV2UgZG9uJ3QgdXNlIHRoZSBYSUQgdG8gY2hlY2sgaWYgaXQncyB0aGUg c2FtZSB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24uCisgKgkgIEl0J3MgZW5vdWdoIHRvIGtub3cg aXQgd2FzIGNyZWF0ZWQgaW4gYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24sCisgKgkgIGFu ZCB3ZSBrbm93IGl0IG11c3QgYmUgdGhlIGN1cnJlbnQgb25lIGJlY2F1c2Ugb3RoZXJ3aXNl IGl0IHdvdWxkbid0CisgKgkgIHNlZSB0aGUgc2VxdWVuY2Ugb2JqZWN0LgorICoKICAqIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgiCkBAIC05MSw2 ICsxMjAsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNz L3hsb2dfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKKyNpbmNs dWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgogI2luY2x1ZGUgImxpYi9iaW5hcnloZWFwLmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCkBAIC0xMTYs NiArMTQ2LDEzIEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUWE5CeUlkRW50CiAJ UmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogfSBSZW9yZGVyQnVmZmVyVFhOQnlJZEVudDsKIAor LyogZW50cnkgZm9yIGhhc2ggdGFibGUgd2UgdXNlIHRvIHRyYWNrIHNlcXVlbmNlcyBjcmVh dGVkIGluIHJ1bm5pbmcgeGFjdHMgKi8KK3R5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJT ZXF1ZW5jZUVudAoreworCVJlbEZpbGVOb2RlCQlybm9kZTsKKwlUcmFuc2FjdGlvbklkCXhp ZDsKK30gUmVvcmRlckJ1ZmZlclNlcXVlbmNlRW50OworCiAvKiBkYXRhIHN0cnVjdHVyZXMg Zm9yIChyZWxmaWxlbm9kZSwgY3RpZCkgPT4gKGNtaW4sIGNtYXgpIG1hcHBpbmcgKi8KIHR5 cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUdXBsZUNpZEtleQogewpAQCAtMzM5LDYgKzM3 NiwxNCBAQCBSZW9yZGVyQnVmZmVyQWxsb2NhdGUodm9pZCkKIAlidWZmZXItPmJ5X3R4biA9 IGhhc2hfY3JlYXRlKCJSZW9yZGVyQnVmZmVyQnlYaWQiLCAxMDAwLCAmaGFzaF9jdGwsCiAJ CQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKIAorCS8q IGhhc2ggdGFibGUgb2Ygc2VxdWVuY2VzLCBtYXBwaW5nIHJlbGZpbGVub2RlIHRvIFhJRCBv ZiB0cmFuc2FjdGlvbiAqLworCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoUmVsRmlsZU5v ZGUpOworCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZW9yZGVyQnVmZmVyU2VxdWVu Y2VFbnQpOworCWhhc2hfY3RsLmhjeHQgPSBidWZmZXItPmNvbnRleHQ7CisKKwlidWZmZXIt PnNlcXVlbmNlcyA9IGhhc2hfY3JlYXRlKCJSZW9yZGVyQnVmZmVyU2VxdWVuY2VIYXNoIiwg MTAwMCwgJmhhc2hfY3RsLAorCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhB U0hfQ09OVEVYVCk7CisKIAlidWZmZXItPmJ5X3R4bl9sYXN0X3hpZCA9IEludmFsaWRUcmFu c2FjdGlvbklkOwogCWJ1ZmZlci0+YnlfdHhuX2xhc3RfdHhuID0gTlVMTDsKIApAQCAtNTI1 LDYgKzU3MCwxMyBAQCBSZW9yZGVyQnVmZmVyUmV0dXJuQ2hhbmdlKFJlb3JkZXJCdWZmZXIg KnJiLCBSZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UsCiAJCQkJY2hhbmdlLT5kYXRhLnRy dW5jYXRlLnJlbGlkcyA9IE5VTEw7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBSRU9SREVS X0JVRkZFUl9DSEFOR0VfU0VRVUVOQ0U6CisJCQlpZiAoY2hhbmdlLT5kYXRhLnNlcXVlbmNl LnR1cGxlKQorCQkJeworCQkJCVJlb3JkZXJCdWZmZXJSZXR1cm5UdXBsZUJ1ZihyYiwgY2hh bmdlLT5kYXRhLnNlcXVlbmNlLnR1cGxlKTsKKwkJCQljaGFuZ2UtPmRhdGEuc2VxdWVuY2Uu dHVwbGUgPSBOVUxMOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJf Q0hBTkdFX0lOVEVSTkFMX1NQRUNfQ09ORklSTToKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9D SEFOR0VfSU5URVJOQUxfU1BFQ19BQk9SVDoKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFO R0VfSU5URVJOQUxfQ09NTUFORF9JRDoKQEAgLTg1OSw2ICs5MTEsMjMwIEBAIFJlb3JkZXJC dWZmZXJRdWV1ZU1lc3NhZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlk LAogCX0KIH0KIAorLyoKKyAqIFRyZWF0IHRoZSBzZXF1ZW5jZSBpbmNyZW1lbnQgYXMgdHJh bnNhY3Rpb25hbD8KKyAqCisgKiBUaGUgaGFzaCB0YWJsZSB0cmFja3MgYWxsIHNlcXVlbmNl cyBjcmVhdGVkIGluIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucywKKyAqIHNvIHdlIHNpbXBs eSBkbyBhIGxvb2t1cCAodGhlIHNlcXVlbmNlIGlzIGlkZW50aWZpZWQgYnkgcmVsZmlsZW5k ZSkuIElmCisgKiB3ZSBmaW5kIGEgbWF0Y2gsIHRoZSBpbmNyZW1lbnQgc2hvdWxkIGJlIGhh bmRsZWQgYXMgdHJhbnNhY3Rpb25hbC4KKyAqLworYm9vbAorUmVvcmRlckJ1ZmZlclNlcXVl bmNlSXNUcmFuc2FjdGlvbmFsKFJlb3JkZXJCdWZmZXIgKnJiLAorCQkJCQkJCQkJIFJlbEZp bGVOb2RlIHJub2RlLCBib29sIGNyZWF0ZWQpCit7CisJYm9vbAlmb3VuZCA9IGZhbHNlOwor CisJaWYgKGNyZWF0ZWQpCisJCXJldHVybiB0cnVlOworCisJaGFzaF9zZWFyY2gocmItPnNl cXVlbmNlcywKKwkJCQkodm9pZCAqKSAmcm5vZGUsCisJCQkJSEFTSF9GSU5ELAorCQkJCSZm b3VuZCk7CisKKwlyZXR1cm4gZm91bmQ7Cit9CisKKy8qCisgKiBDbGVhbnVwIHNlcXVlbmNl cyBjcmVhdGVkIGluIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KKyAqCisgKiBUaGVyZSdz IG5vIHdheSB0byBzZWFyY2ggYnkgWElELCBzbyB3ZSBzaW1wbHkgZG8gYSBzZXFzY2FuIG9m IGFsbAorICogdGhlIGVudHJpZXMgaW4gdGhlIGhhc2ggdGFibGUuIEhvcGVmdWxseSB0aGVy ZSBhcmUgb25seSBhIGNvdXBsZQorICogZW50cmllcyBpbiBtb3N0IGNhc2VzIC0gcGVvcGxl IGdlbmVyYWxseSBkb24ndCBjcmVhdGUgbWFueSBuZXcKKyAqIHNlcXVlbmNlcyBvdmVyIGFu ZCBvdmVyLgorICovCitzdGF0aWMgdm9pZAorUmVvcmRlckJ1ZmZlclNlcXVlbmNlQ2xlYW51 cChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJSEFTSF9TRVFf U1RBVFVTIHNjYW5fc3RhdHVzOworCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAqZW50Owor CisJaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHJiLT5zZXF1ZW5jZXMpOworCXdoaWxl ICgoZW50ID0gKFJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAqKSBoYXNoX3NlcV9zZWFyY2go JnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCS8qIHNraXAgc2VxdWVuY2VzIG5vdCBm cm9tIHRoaXMgdHJhbnNhY3Rpb24gKi8KKwkJaWYgKGVudC0+eGlkICE9IHhpZCkKKwkJCWNv bnRpbnVlOworCisJCSh2b2lkKSBoYXNoX3NlYXJjaChyYi0+c2VxdWVuY2VzLAorCQkJCQkg ICAodm9pZCAqKSAmKGVudC0+cm5vZGUpLAorCQkJCQkgICBIQVNIX1JFTU9WRSwgTlVMTCk7 CisJfQorfQorCisvKgorICogQSB0cmFuc2FjdGlvbmFsIHNlcXVlbmNlIGluY3JlbWVudCBp cyBxdWV1ZWQgdG8gYmUgcHJvY2Vzc2VkIHVwb24gY29tbWl0CisgKiBhbmQgYSBub24tdHJh bnNhY3Rpb25hbCBpbmNyZW1lbnQgZ2V0cyBwcm9jZXNzZWQgaW1tZWRpYXRlbHkuCisgKgor ICogQSBzZXF1ZW5jZSB1cGRhdGUgbWF5IGJlIGJvdGggdHJhbnNhY3Rpb25hbCBhbmQgbm9u LXRyYW5zYWN0aW9uYWwuIFdoZW4KKyAqIGNyZWF0ZWQgaW4gYSBydW5uaW5nIHRyYW5zYWN0 aW9uLCB0cmVhdCBpdCBhcyB0cmFuc2FjdGlvbmFsIGFuZCBxdWV1ZQorICogdGhlIGNoYW5n ZSBpbiBpdC4gT3RoZXJ3aXNlIHRyZWF0IGl0IGFzIG5vbi10cmFuc2FjdGlvbmFsLCBzbyB0 aGF0IHdlCisgKiBkb24ndCBmb3JnZXQgdGhlIGluY3JlbWVudCBpbiBjYXNlIG9mIGEgcm9s bGJhY2suCisgKi8KK3ZvaWQKK1Jlb3JkZXJCdWZmZXJRdWV1ZVNlcXVlbmNlKFJlb3JkZXJC dWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCSAgIFNuYXBzaG90IHNuYXBz aG90LCBYTG9nUmVjUHRyIGxzbiwgUmVwT3JpZ2luSWQgb3JpZ2luX2lkLAorCQkJCQkJICAg UmVsRmlsZU5vZGUgcm5vZGUsIGJvb2wgdHJhbnNhY3Rpb25hbCwgYm9vbCBjcmVhdGVkLAor CQkJCQkJICAgUmVvcmRlckJ1ZmZlclR1cGxlQnVmICp0dXBsZWJ1ZikKK3sKKwkvKgorCSAq IENoYW5nZSBuZWVkcyB0byBiZSBoYW5kbGVkIGFzIHRyYW5zYWN0aW9uYWwsIGJlY2F1c2Ug dGhlIHNlcXVlbmNlIHdhcworCSAqIGNyZWF0ZWQgaW4gYSB0cmFuc2FjdGlvbiB0aGF0IGlz IHN0aWxsIHJ1bm5pbmcuIEluIHRoYXQgY2FzZSBhbGwgdGhlCisJICogY2hhbmdlcyBuZWVk IHRvIGJlIHF1ZXVlZCBpbiB0aGF0IHRyYW5zYWN0aW9uLCB3ZSBtdXN0IG5vdCBzZW5kIHRo ZW0KKwkgKiB0byB0aGUgZG93bnN0cmVhbSB1bnRpbCB0aGUgdHJhbnNhY3Rpb24gY29tbWl0 cy4KKwkgKgorCSAqIFRoZXJlJ3MgYSBiaXQgb2YgYSB0cm91YmxlIHdpdGggc3VidHJhbnNh Y3Rpb25zIC0gd2UgY2FuJ3QgcXVldWUgaXQKKwkgKiBpbnRvIHRoZSBzdWJ4YWN0LCBiZWNh dXNlIGl0IG1pZ2h0IGJlIHJvbGxlZCBiYWNrIGFuZCB3ZSdkIGxvc2UgdGhlCisJICogaW5j cmVtZW50LiBXZSBuZWVkIHRvIHF1ZXVlIGl0IGludG8gdGhlIHNhbWUgKHN1Yil4YWN0IHRo YXQgY3JlYXRlZAorCSAqIHRoZSBzZXF1ZW5jZSwgd2hpY2ggaXMgd2h5IHdlIHRyYWNrIHRo ZSBYSUQgaW4gdGhlIGhhc2ggdGFibGUuCisJICovCisJaWYgKHRyYW5zYWN0aW9uYWwpCisJ eworCQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJCVJlb3JkZXJCdWZmZXJDaGFuZ2Ug KmNoYW5nZTsKKworCQkvKiBsb29rdXAgc2VxdWVuY2UgYnkgcmVsZmlsZW5vZGUgKi8KKwkJ UmVvcmRlckJ1ZmZlclNlcXVlbmNlRW50ICAgKmVudDsKKwkJYm9vbAkJCQkJCWZvdW5kOwor CisJCS8qIHRyYW5zYWN0aW9uYWwgY2hhbmdlcyByZXF1aXJlIGEgdHJhbnNhY3Rpb24gKi8K KwkJQXNzZXJ0KHhpZCAhPSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CisKKwkJLyogc2VhcmNo IHRoZSBsb29rdXAgdGFibGUgKHdlIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlLCBmb3VuZCBp cyBlbm91Z2gpICovCisJCWVudCA9IGhhc2hfc2VhcmNoKHJiLT5zZXF1ZW5jZXMsCisJCQkJ CQkgICh2b2lkICopICZybm9kZSwKKwkJCQkJCSAgY3JlYXRlZCA/IEhBU0hfRU5URVIgOiBI QVNIX0ZJTkQsCisJCQkJCQkgICZmb3VuZCk7CisKKwkJLyoKKwkJICogSWYgdGhpcyBpcyB0 aGUgImNyZWF0ZSIgaW5jcmVtZW50LCB3ZSBtdXN0IG5vdCBoYXZlIGZvdW5kIGFueQorCQkg KiBwcmUtZXhpc3RpbmcgZW50cnkgaW4gdGhlIGhhc2ggdGFibGUgKGkuZS4gdGhlcmUgbXVz dCBub3QgYmUKKwkJICogYW55IGNvbmZsaWN0aW5nIHNlcXVlbmNlKS4KKwkJICovCisJCUFz c2VydCghKGNyZWF0ZWQgJiYgZm91bmQpKTsKKworCQkvKiBCdXQgd2UgbXVzdCBoYXZlIGVp dGhlciBjcmVhdGVkIG9yIGZvdW5kIGFuIGV4aXN0aW5nIGVudHJ5LiAqLworCQlBc3NlcnQo Y3JlYXRlZCB8fCBmb3VuZCk7CisKKwkJLyoKKwkJICogV2hlbiBjcmVhdGluZyB0aGUgc2Vx dWVuY2UsIHJlbWVtYmVyIHRoZSBYSUQgb2YgdGhlIHRyYW5zYWN0aW9uCisJCSAqIHRoYXQg Y3JlYXRlZCBpZC4KKwkJICovCisJCWlmIChjcmVhdGVkKQorCQkJZW50LT54aWQgPSB4aWQ7 CisKKwkJLyogWFhYIE1heWJlIGNoZWNrIHRoYXQgd2UncmUgc3RpbGwgaW4gdGhlIHNhbWUg dG9wLWxldmVsIHhhY3Q/ICovCisKKwkJLyogT0ssIGFsbG9jYXRlIGFuZCBxdWV1ZSB0aGUg Y2hhbmdlICovCisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocmItPmNv bnRleHQpOworCisJCWNoYW5nZSA9IFJlb3JkZXJCdWZmZXJHZXRDaGFuZ2UocmIpOworCisJ CWNoYW5nZS0+YWN0aW9uID0gUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1NFUVVFTkNFOworCQlj aGFuZ2UtPm9yaWdpbl9pZCA9IG9yaWdpbl9pZDsKKworCQltZW1jcHkoJmNoYW5nZS0+ZGF0 YS5zZXF1ZW5jZS5yZWxub2RlLCAmcm5vZGUsIHNpemVvZihSZWxGaWxlTm9kZSkpOworCisJ CWNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZSA9IHR1cGxlYnVmOworCisJCS8qIGFkZCBp dCB0byB0aGUgc2FtZSBzdWJ4YWN0IHRoYXQgY3JlYXRlZCB0aGUgc2VxdWVuY2UgKi8KKwkJ UmVvcmRlckJ1ZmZlclF1ZXVlQ2hhbmdlKHJiLCBlbnQtPnhpZCwgbHNuLCBjaGFuZ2UsIGZh bHNlKTsKKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJfQorCWVs c2UKKwl7CisJCS8qCisJCSAqIFRoaXMgaW5jcmVtZW50IGlzIGZvciBhIHNlcXVlbmNlIHRo YXQgd2FzIG5vdCBjcmVhdGVkIGluIGFueQorCQkgKiBydW5uaW5nIHRyYW5zYWN0aW9uLCBz byB3ZSB0cmVhdCBpdCBhcyBub24tdHJhbnNhY3Rpb25hbCBhbmQKKwkJICoganVzdCBzZW5k IGl0IHRvIHRoZSBvdXRwdXQgcGx1Z2luIGRpcmVjdGx5LgorCQkgKi8KKwkJUmVvcmRlckJ1 ZmZlclRYTiAqdHhuID0gTlVMTDsKKwkJdm9sYXRpbGUgU25hcHNob3Qgc25hcHNob3Rfbm93 ID0gc25hcHNob3Q7CisJCWJvb2wJdXNpbmdfc3VidHhuOworCisjaWZkZWYgVVNFX0FTU0VS VF9DSEVDS0lORworCQkvKiBBbGwgImNyZWF0ZXMiIGhhdmUgdG8gYmUgaGFuZGxlZCBhcyB0 cmFuc2FjdGlvbmFsLiAqLworCQlBc3NlcnQoIWNyZWF0ZWQpOworCisJCS8qIE1ha2Ugc3Vy ZSB0aGUgc2VxdWVuY2UgaXMgbm90IGluIHRoZSBoYXNoIHRhYmxlLiAqLworCQl7CisJCQli b29sCWZvdW5kOworCQkJaGFzaF9zZWFyY2gocmItPnNlcXVlbmNlcywKKwkJCQkJCSh2b2lk ICopICZybm9kZSwKKwkJCQkJCUhBU0hfRklORCwgJmZvdW5kKTsKKwkJCUFzc2VydCghZm91 bmQpOworCQl9CisjZW5kaWYKKworCQlpZiAoeGlkICE9IEludmFsaWRUcmFuc2FjdGlvbklk KQorCQkJdHhuID0gUmVvcmRlckJ1ZmZlclRYTkJ5WGlkKHJiLCB4aWQsIHRydWUsIE5VTEws IGxzbiwgdHJ1ZSk7CisKKwkJLyogc2V0dXAgc25hcHNob3QgdG8gYWxsb3cgY2F0YWxvZyBh Y2Nlc3MgKi8KKwkJU2V0dXBIaXN0b3JpY1NuYXBzaG90KHNuYXBzaG90X25vdywgTlVMTCk7 CisKKwkJLyoKKwkJICogRGVjb2RpbmcgbmVlZHMgYWNjZXNzIHRvIHN5c2NhY2hlcyBldCBh bC4sIHdoaWNoIGluIHR1cm4gdXNlCisJCSAqIGhlYXZ5d2VpZ2h0IGxvY2tzIGFuZCBzdWNo LiBUaHVzIHdlIG5lZWQgdG8gaGF2ZSBlbm91Z2ggc3RhdGUgYXJvdW5kIHRvCisJCSAqIGtl ZXAgdHJhY2sgb2YgdGhvc2UuICBUaGUgZWFzaWVzdCB3YXkgaXMgdG8gc2ltcGx5IHVzZSBh IHRyYW5zYWN0aW9uCisJCSAqIGludGVybmFsbHkuICBUaGF0IGFsc28gYWxsb3dzIHVzIHRv IGVhc2lseSBlbmZvcmNlIHRoYXQgbm90aGluZyB3cml0ZXMKKwkJICogdG8gdGhlIGRhdGFi YXNlIGJ5IGNoZWNraW5nIGZvciB4aWQgYXNzaWdubWVudHMuCisJCSAqCisJCSAqIFdoZW4g d2UncmUgY2FsbGVkIHZpYSB0aGUgU1FMIFNSRiB0aGVyZSdzIGFscmVhZHkgYSB0cmFuc2Fj dGlvbgorCQkgKiBzdGFydGVkLCBzbyBzdGFydCBhbiBleHBsaWNpdCBzdWJ0cmFuc2FjdGlv biB0aGVyZS4KKwkJICovCisJCXVzaW5nX3N1YnR4biA9IElzVHJhbnNhY3Rpb25PclRyYW5z YWN0aW9uQmxvY2soKTsKKworCQlQR19UUlkoKTsKKwkJeworCQkJUmVsYXRpb24JcmVsYXRp b247CisJCQlIZWFwVHVwbGUJdHVwbGU7CisJCQlGb3JtX3BnX3NlcXVlbmNlX2RhdGEgc2Vx OworCQkJT2lkCQkJcmVsb2lkOworCisJCQlpZiAodXNpbmdfc3VidHhuKQorCQkJCUJlZ2lu SW50ZXJuYWxTdWJUcmFuc2FjdGlvbigic2VxdWVuY2UiKTsKKwkJCWVsc2UKKwkJCQlTdGFy dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCQlyZWxvaWQgPSBSZWxpZEJ5UmVsZmlsZW5v ZGUocm5vZGUuc3BjTm9kZSwgcm5vZGUucmVsTm9kZSk7CisKKwkJCWlmIChyZWxvaWQgPT0g SW52YWxpZE9pZCkKKwkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IG1hcCBmaWxlbm9kZSBc IiVzXCIgdG8gcmVsYXRpb24gT0lEIiwKKwkJCQkJIHJlbHBhdGhwZXJtKHJub2RlLAorCQkJ CQkJCQkgTUFJTl9GT1JLTlVNKSk7CisKKwkJCXJlbGF0aW9uID0gUmVsYXRpb25JZEdldFJl bGF0aW9uKHJlbG9pZCk7CisJCQl0dXBsZSA9ICZ0dXBsZWJ1Zi0+dHVwbGU7CisJCQlzZXEg PSAoRm9ybV9wZ19zZXF1ZW5jZV9kYXRhKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCQlyYi0+ c2VxdWVuY2UocmIsIHR4biwgbHNuLCByZWxhdGlvbiwgdHJhbnNhY3Rpb25hbCwKKwkJCQkJ CSBzZXEtPmxhc3RfdmFsdWUsIHNlcS0+bG9nX2NudCwgc2VxLT5pc19jYWxsZWQpOworCisJ CQlSZWxhdGlvbkNsb3NlKHJlbGF0aW9uKTsKKworCQkJVGVhcmRvd25IaXN0b3JpY1NuYXBz aG90KGZhbHNlKTsKKworCQkJQWJvcnRDdXJyZW50VHJhbnNhY3Rpb24oKTsKKworCQkJaWYg KHVzaW5nX3N1YnR4bikKKwkJCQlSb2xsYmFja0FuZFJlbGVhc2VDdXJyZW50U3ViVHJhbnNh Y3Rpb24oKTsKKwkJfQorCQlQR19DQVRDSCgpOworCQl7CisJCQlUZWFyZG93bkhpc3Rvcmlj U25hcHNob3QodHJ1ZSk7CisKKwkJCUFib3J0Q3VycmVudFRyYW5zYWN0aW9uKCk7CisKKwkJ CWlmICh1c2luZ19zdWJ0eG4pCisJCQkJUm9sbGJhY2tBbmRSZWxlYXNlQ3VycmVudFN1YlRy YW5zYWN0aW9uKCk7CisKKwkJCVBHX1JFX1RIUk9XKCk7CisJCX0KKwkJUEdfRU5EX1RSWSgp OworCX0KK30KKwogLyoKICAqIEFzc2VydFRYTkxzbk9yZGVyCiAgKgkJVmVyaWZ5IExTTiBv cmRlcmluZyBvZiB0cmFuc2FjdGlvbiBsaXN0cyBpbiB0aGUgcmVvcmRlcmJ1ZmZlcgpAQCAt MTUzNSw2ICsxODExLDkgQEAgUmVvcmRlckJ1ZmZlckNsZWFudXBUWE4oUmVvcmRlckJ1ZmZl ciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKIAkJCQkmZm91bmQpOwogCUFzc2VydChm b3VuZCk7CiAKKwkvKiBSZW1vdmUgc2VxdWVuY2VzIGNyZWF0ZWQgaW4gdGhpcyB0cmFuc2Fj dGlvbiAoaWYgYW55KS4gKi8KKwlSZW9yZGVyQnVmZmVyU2VxdWVuY2VDbGVhbnVwKHJiLCB0 eG4tPnhpZCk7CisKIAkvKiByZW1vdmUgZW50cmllcyBzcGlsbGVkIHRvIGRpc2sgKi8KIAlp ZiAocmJ0eG5faXNfc2VyaWFsaXplZCh0eG4pKQogCQlSZW9yZGVyQnVmZmVyUmVzdG9yZUNs ZWFudXAocmIsIHR4bik7CkBAIC0xOTUwLDYgKzIyMjksMjkgQEAgUmVvcmRlckJ1ZmZlckFw cGx5TWVzc2FnZShSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAog CQkJCQljaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2UpOwogfQogCisvKgorICogSGVscGVyIGZ1 bmN0aW9uIGZvciBSZW9yZGVyQnVmZmVyUHJvY2Vzc1RYTiBmb3IgYXBwbHlpbmcgc2VxdWVu Y2VzLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK1Jlb3JkZXJCdWZmZXJBcHBseVNlcXVl bmNlKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkg ICBSZWxhdGlvbiByZWxhdGlvbiwgUmVvcmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlLAorCQkJ CQkJICAgYm9vbCBzdHJlYW1pbmcpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCUZvcm1fcGdf c2VxdWVuY2VfZGF0YSBzZXE7CisKKwl0dXBsZSA9ICZjaGFuZ2UtPmRhdGEuc2VxdWVuY2Uu dHVwbGUtPnR1cGxlOworCXNlcSA9IChGb3JtX3BnX3NlcXVlbmNlX2RhdGEpIEdFVFNUUlVD VCh0dXBsZSk7CisKKwkvKiBPbmx5IGV2ZXIgY2FsbGVkIGZyb20gUmVvcmRlckJ1ZmZlckFw cGx5U2VxdWVuY2UsIHNvIHRyYW5zYXRpb25hbC4gKi8KKwlpZiAoc3RyZWFtaW5nKQorCQly Yi0+c3RyZWFtX3NlcXVlbmNlKHJiLCB0eG4sIGNoYW5nZS0+bHNuLCByZWxhdGlvbiwgdHJ1 ZSwKKwkJCQkJCQlzZXEtPmxhc3RfdmFsdWUsIHNlcS0+bG9nX2NudCwgc2VxLT5pc19jYWxs ZWQpOworCWVsc2UKKwkJcmItPnNlcXVlbmNlKHJiLCB0eG4sIGNoYW5nZS0+bHNuLCByZWxh dGlvbiwgdHJ1ZSwKKwkJCQkJIHNlcS0+bGFzdF92YWx1ZSwgc2VxLT5sb2dfY250LCBzZXEt PmlzX2NhbGxlZCk7Cit9CisKIC8qCiAgKiBGdW5jdGlvbiB0byBzdG9yZSB0aGUgY29tbWFu ZCBpZCBhbmQgc25hcHNob3QgYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudAogICogc3RyZWFt IHNvIHRoYXQgd2UgY2FuIHJldXNlIHRoZSBzYW1lIHdoaWxlIHNlbmRpbmcgdGhlIG5leHQg c3RyZWFtLgpAQCAtMjM5Miw2ICsyNjk0LDMxIEBAIFJlb3JkZXJCdWZmZXJQcm9jZXNzVFhO KFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJY2FzZSBS RU9SREVSX0JVRkZFUl9DSEFOR0VfSU5URVJOQUxfVFVQTEVDSUQ6CiAJCQkJCWVsb2coRVJS T1IsICJ0dXBsZWNpZCB2YWx1ZSBpbiBjaGFuZ2VxdWV1ZSIpOwogCQkJCQlicmVhazsKKwor CQkJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1NFUVVFTkNFOgorCQkJCQlBc3NlcnQo c25hcHNob3Rfbm93KTsKKworCQkJCQlyZWxvaWQgPSBSZWxpZEJ5UmVsZmlsZW5vZGUoY2hh bmdlLT5kYXRhLnNlcXVlbmNlLnJlbG5vZGUuc3BjTm9kZSwKKwkJCQkJCQkJCQkJCWNoYW5n ZS0+ZGF0YS5zZXF1ZW5jZS5yZWxub2RlLnJlbE5vZGUpOworCisJCQkJCWlmIChyZWxvaWQg PT0gSW52YWxpZE9pZCkKKwkJCQkJCWVsb2coRVJST1IsICJjb3VsZCBub3QgbWFwIGZpbGVu b2RlIFwiJXNcIiB0byByZWxhdGlvbiBPSUQiLAorCQkJCQkJCSByZWxwYXRocGVybShjaGFu Z2UtPmRhdGEuc2VxdWVuY2UucmVsbm9kZSwKKwkJCQkJCQkJCQkgTUFJTl9GT1JLTlVNKSk7 CisKKwkJCQkJcmVsYXRpb24gPSBSZWxhdGlvbklkR2V0UmVsYXRpb24ocmVsb2lkKTsKKwor CQkJCQlpZiAoIVJlbGF0aW9uSXNWYWxpZChyZWxhdGlvbikpCisJCQkJCQllbG9nKEVSUk9S LCAiY291bGQgbm90IG9wZW4gcmVsYXRpb24gd2l0aCBPSUQgJXUgKGZvciBmaWxlbm9kZSBc IiVzXCIpIiwKKwkJCQkJCQkgcmVsb2lkLAorCQkJCQkJCSByZWxwYXRocGVybShjaGFuZ2Ut PmRhdGEuc2VxdWVuY2UucmVsbm9kZSwKKwkJCQkJCQkJCQkgTUFJTl9GT1JLTlVNKSk7CisK KwkJCQkJaWYgKFJlbGF0aW9uSXNMb2dpY2FsbHlMb2dnZWQocmVsYXRpb24pKQorCQkJCQkJ UmVvcmRlckJ1ZmZlckFwcGx5U2VxdWVuY2UocmIsIHR4biwgcmVsYXRpb24sIGNoYW5nZSwg c3RyZWFtaW5nKTsKKworCQkJCQlSZWxhdGlvbkNsb3NlKHJlbGF0aW9uKTsKKwkJCQkJYnJl YWs7CiAJCQl9CiAJCX0KIApAQCAtMzc3Niw2ICs0MTAzLDM5IEBAIFJlb3JkZXJCdWZmZXJT ZXJpYWxpemVDaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4 biwKIAkJCQltZW1jcHkoZGF0YSwgY2hhbmdlLT5kYXRhLnRydW5jYXRlLnJlbGlkcywgc2l6 ZSk7CiAJCQkJZGF0YSArPSBzaXplOwogCisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2UgUkVP UkRFUl9CVUZGRVJfQ0hBTkdFX1NFUVVFTkNFOgorCQkJeworCQkJCWNoYXIJICAgKmRhdGE7 CisJCQkJUmVvcmRlckJ1ZmZlclR1cGxlQnVmICp0dXA7CisJCQkJU2l6ZQkJbGVuID0gMDsK KworCQkJCXR1cCA9IGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZTsKKworCQkJCWlmICh0 dXApCisJCQkJeworCQkJCQlzeiArPSBzaXplb2YoSGVhcFR1cGxlRGF0YSk7CisJCQkJCWxl biA9IHR1cC0+dHVwbGUudF9sZW47CisJCQkJCXN6ICs9IGxlbjsKKwkJCQl9CisKKwkJCQkv KiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggc3BhY2UgKi8KKwkJCQlSZW9yZGVyQnVmZmVy U2VyaWFsaXplUmVzZXJ2ZShyYiwgc3opOworCisJCQkJZGF0YSA9ICgoY2hhciAqKSByYi0+ b3V0YnVmKSArIHNpemVvZihSZW9yZGVyQnVmZmVyRGlza0NoYW5nZSk7CisJCQkJLyogbWln aHQgaGF2ZSBiZWVuIHJlYWxsb2NhdGVkIGFib3ZlICovCisJCQkJb25kaXNrID0gKFJlb3Jk ZXJCdWZmZXJEaXNrQ2hhbmdlICopIHJiLT5vdXRidWY7CisKKwkJCQlpZiAobGVuKQorCQkJ CXsKKwkJCQkJbWVtY3B5KGRhdGEsICZ0dXAtPnR1cGxlLCBzaXplb2YoSGVhcFR1cGxlRGF0 YSkpOworCQkJCQlkYXRhICs9IHNpemVvZihIZWFwVHVwbGVEYXRhKTsKKworCQkJCQltZW1j cHkoZGF0YSwgdHVwLT50dXBsZS50X2RhdGEsIGxlbik7CisJCQkJCWRhdGEgKz0gbGVuOwor CQkJCX0KKwogCQkJCWJyZWFrOwogCQkJfQogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5H RV9JTlRFUk5BTF9TUEVDX0NPTkZJUk06CkBAIC00MDQwLDYgKzQ0MDAsMjIgQEAgUmVvcmRl ckJ1ZmZlckNoYW5nZVNpemUoUmVvcmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlKQogCQkJewog CQkJCXN6ICs9IHNpemVvZihPaWQpICogY2hhbmdlLT5kYXRhLnRydW5jYXRlLm5yZWxpZHM7 CiAKKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfU0VR VUVOQ0U6CisJCQl7CisJCQkJUmVvcmRlckJ1ZmZlclR1cGxlQnVmICp0dXA7CisJCQkJU2l6 ZQkJbGVuID0gMDsKKworCQkJCXR1cCA9IGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZTsK KworCQkJCWlmICh0dXApCisJCQkJeworCQkJCQlzeiArPSBzaXplb2YoSGVhcFR1cGxlRGF0 YSk7CisJCQkJCWxlbiA9IHR1cC0+dHVwbGUudF9sZW47CisJCQkJCXN6ICs9IGxlbjsKKwkJ CQl9CisKIAkJCQlicmVhazsKIAkJCX0KIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0Vf SU5URVJOQUxfU1BFQ19DT05GSVJNOgpAQCAtNDM0MSw2ICs0NzE3LDMwIEBAIFJlb3JkZXJC dWZmZXJSZXN0b3JlQ2hhbmdlKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhO ICp0eG4sCiAKIAkJCQlicmVhazsKIAkJCX0KKworCQljYXNlIFJFT1JERVJfQlVGRkVSX0NI QU5HRV9TRVFVRU5DRToKKwkJCWlmIChjaGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUpCisJ CQl7CisJCQkJdWludDMyCQl0dXBsZWxlbiA9ICgoSGVhcFR1cGxlKSBkYXRhKS0+dF9sZW47 CisKKwkJCQljaGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUgPQorCQkJCQlSZW9yZGVyQnVm ZmVyR2V0VHVwbGVCdWYocmIsIHR1cGxlbGVuIC0gU2l6ZW9mSGVhcFR1cGxlSGVhZGVyKTsK KworCQkJCS8qIHJlc3RvcmUgLT50dXBsZSAqLworCQkJCW1lbWNweSgmY2hhbmdlLT5kYXRh LnNlcXVlbmNlLnR1cGxlLT50dXBsZSwgZGF0YSwKKwkJCQkJICAgc2l6ZW9mKEhlYXBUdXBs ZURhdGEpKTsKKwkJCQlkYXRhICs9IHNpemVvZihIZWFwVHVwbGVEYXRhKTsKKworCQkJCS8q IHJlc2V0IHRfZGF0YSBwb2ludGVyIGludG8gdGhlIG5ldyB0dXBsZWJ1ZiAqLworCQkJCWNo YW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZS0+dHVwbGUudF9kYXRhID0KKwkJCQkJUmVvcmRl ckJ1ZmZlclR1cGxlQnVmRGF0YShjaGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUpOworCisJ CQkJLyogcmVzdG9yZSB0dXBsZSBkYXRhIGl0c2VsZiAqLworCQkJCW1lbWNweShjaGFuZ2Ut PmRhdGEuc2VxdWVuY2UudHVwbGUtPnR1cGxlLnRfZGF0YSwgZGF0YSwgdHVwbGVsZW4pOwor CQkJCWRhdGEgKz0gdHVwbGVsZW47CisJCQl9CisJCQlicmVhazsKKwogCQljYXNlIFJFT1JE RVJfQlVGRkVSX0NIQU5HRV9JTlRFUk5BTF9TUEVDX0NPTkZJUk06CiAJCWNhc2UgUkVPUkRF Ul9CVUZGRVJfQ0hBTkdFX0lOVEVSTkFMX1NQRUNfQUJPUlQ6CiAJCWNhc2UgUkVPUkRFUl9C VUZGRVJfQ0hBTkdFX0lOVEVSTkFMX0NPTU1BTkRfSUQ6CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVu Y2UuaAppbmRleCA0MDU0NGRkNGM3MC4uNTkxOWZiOTBlZTEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv c2VxdWVuY2UuaApAQCAtNDgsNiArNDgsNyBAQCB0eXBlZGVmIEZvcm1EYXRhX3BnX3NlcXVl bmNlX2RhdGEgKkZvcm1fcGdfc2VxdWVuY2VfZGF0YTsKIHR5cGVkZWYgc3RydWN0IHhsX3Nl cV9yZWMKIHsKIAlSZWxGaWxlTm9kZSBub2RlOworCWJvb2wJCWNyZWF0ZWQ7CS8qIGlzIHRo aXMgYSBDUkVBVEUgU0VRVUVOQ0UgKi8KIAkvKiBTRVFVRU5DRSBUVVBMRSBEQVRBIEZPTExP V1MgQVQgVEhFIEVORCAqLwogfSB4bF9zZXFfcmVjOwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1Z2luLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9vdXRwdXRfcGx1Z2luLmgKaW5kZXggODEwNDk1ZWQwZTQuLjQzYjhhNjNlZTRmIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1Z2luLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oCkBAIC04OCw2ICs4 OCwxOCBAQCB0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVjb2RlTWVzc2FnZUNCKSAoc3RydWN0 IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJCQkJCQlTaXplIG1lc3NhZ2Vf c2l6ZSwKIAkJCQkJCQkJCQljb25zdCBjaGFyICptZXNzYWdlKTsKIAorLyoKKyAqIENhbGxl ZCBmb3IgdGhlIGdlbmVyaWMgbG9naWNhbCBkZWNvZGluZyBzZXF1ZW5jZXMuCisgKi8KK3R5 cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVTZXF1ZW5jZUNCKSAoc3RydWN0IExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkJCQkJCQkgUmVvcmRlckJ1ZmZlclRYTiAqdHhu LAorCQkJCQkJCQkJCSBYTG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwKKwkJCQkJCQkJCQkgUmVs YXRpb24gcmVsLAorCQkJCQkJCQkJCSBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkJCQkJ IGludDY0IGxhc3RfdmFsdWUsCisJCQkJCQkJCQkJIGludDY0IGxvZ19jbnQsCisJCQkJCQkJ CQkJIGJvb2wgaXNfY2FsbGVkKTsKKwogLyoKICAqIEZpbHRlciBjaGFuZ2VzIGJ5IG9yaWdp bi4KICAqLwpAQCAtMTk5LDYgKzIxMSwxOSBAQCB0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVj b2RlU3RyZWFtTWVzc2FnZUNCKSAoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eAogCQkJCQkJCQkJCQkgIFNpemUgbWVzc2FnZV9zaXplLAogCQkJCQkJCQkJCQkgIGNvbnN0 IGNoYXIgKm1lc3NhZ2UpOwogCisvKgorICogQ2FsbGVkIGZvciB0aGUgc3RyZWFtaW5nIGdl bmVyaWMgbG9naWNhbCBkZWNvZGluZyBzZXF1ZW5jZXMgZnJvbSBpbi1wcm9ncmVzcworICog dHJhbnNhY3Rpb25zLgorICovCit0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVjb2RlU3RyZWFt U2VxdWVuY2VDQikgKHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJ CQkJCQkJCSAgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkJICAgWExvZ1Jl Y1B0ciBzZXF1ZW5jZV9sc24sCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9uIHJlbCwKKwkJCQkJ CQkJCQkJICAgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCQkJCQkgICBpbnQ2NCBsYXN0 X3ZhbHVlLAorCQkJCQkJCQkJCQkgICBpbnQ2NCBsb2dfY250LAorCQkJCQkJCQkJCQkgICBi b29sIGlzX2NhbGxlZCk7CisKIC8qCiAgKiBDYWxsYmFjayBmb3Igc3RyZWFtaW5nIHRydW5j YXRlcyBmcm9tIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KICAqLwpAQCAtMjE5LDYgKzI0 NCw3IEBAIHR5cGVkZWYgc3RydWN0IE91dHB1dFBsdWdpbkNhbGxiYWNrcwogCUxvZ2ljYWxE ZWNvZGVUcnVuY2F0ZUNCIHRydW5jYXRlX2NiOwogCUxvZ2ljYWxEZWNvZGVDb21taXRDQiBj b21taXRfY2I7CiAJTG9naWNhbERlY29kZU1lc3NhZ2VDQiBtZXNzYWdlX2NiOworCUxvZ2lj YWxEZWNvZGVTZXF1ZW5jZUNCIHNlcXVlbmNlX2NiOwogCUxvZ2ljYWxEZWNvZGVGaWx0ZXJC eU9yaWdpbkNCIGZpbHRlcl9ieV9vcmlnaW5fY2I7CiAJTG9naWNhbERlY29kZVNodXRkb3du Q0Igc2h1dGRvd25fY2I7CiAKQEAgLTIzNyw2ICsyNjMsNyBAQCB0eXBlZGVmIHN0cnVjdCBP dXRwdXRQbHVnaW5DYWxsYmFja3MKIAlMb2dpY2FsRGVjb2RlU3RyZWFtQ29tbWl0Q0Igc3Ry ZWFtX2NvbW1pdF9jYjsKIAlMb2dpY2FsRGVjb2RlU3RyZWFtQ2hhbmdlQ0Igc3RyZWFtX2No YW5nZV9jYjsKIAlMb2dpY2FsRGVjb2RlU3RyZWFtTWVzc2FnZUNCIHN0cmVhbV9tZXNzYWdl X2NiOworCUxvZ2ljYWxEZWNvZGVTdHJlYW1TZXF1ZW5jZUNCIHN0cmVhbV9zZXF1ZW5jZV9j YjsKIAlMb2dpY2FsRGVjb2RlU3RyZWFtVHJ1bmNhdGVDQiBzdHJlYW1fdHJ1bmNhdGVfY2I7 CiB9IE91dHB1dFBsdWdpbkNhbGxiYWNrczsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v cmVvcmRlcmJ1ZmZlci5oCmluZGV4IDViNDBmZjc1Zjc5Li5hYjQ2OWZiMjEwOSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaApAQCAtNjQsNyArNjQsOCBA QCBlbnVtIFJlb3JkZXJCdWZmZXJDaGFuZ2VUeXBlCiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdF X0lOVEVSTkFMX1NQRUNfSU5TRVJULAogCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRFUk5B TF9TUEVDX0NPTkZJUk0sCiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVEVSTkFMX1NQRUNf QUJPUlQsCi0JUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1RSVU5DQVRFCisJUkVPUkRFUl9CVUZG RVJfQ0hBTkdFX1RSVU5DQVRFLAorCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9TRVFVRU5DRQog fTsKIAogLyogZm9yd2FyZCBkZWNsYXJhdGlvbiAqLwpAQCAtMTU4LDYgKzE1OSwxMyBAQCB0 eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVyQ2hhbmdlCiAJCQl1aW50MzIJCW5pbnZhbGlk YXRpb25zOyAvKiBOdW1iZXIgb2YgbWVzc2FnZXMgKi8KIAkJCVNoYXJlZEludmFsaWRhdGlv bk1lc3NhZ2UgKmludmFsaWRhdGlvbnM7CS8qIGludmFsaWRhdGlvbiBtZXNzYWdlICovCiAJ CX0JCQlpbnZhbDsKKworCQkvKiBDb250ZXh0IGRhdGEgZm9yIFNlcXVlbmNlIGNoYW5nZXMg Ki8KKwkJc3RydWN0CisJCXsKKwkJCVJlbEZpbGVOb2RlIHJlbG5vZGU7CisJCQlSZW9yZGVy QnVmZmVyVHVwbGVCdWYgKnR1cGxlOworCQl9CQkJc2VxdWVuY2U7CiAJfQkJCWRhdGE7CiAK IAkvKgpAQCAtNDMwLDYgKzQzOCwxNSBAQCB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVy TWVzc2FnZUNCKSAoUmVvcmRlckJ1ZmZlciAqcmIsCiAJCQkJCQkJCQkJY29uc3QgY2hhciAq cHJlZml4LCBTaXplIHN6LAogCQkJCQkJCQkJCWNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCisv KiBzZXF1ZW5jZSBjYWxsYmFjayBzaWduYXR1cmUgKi8KK3R5cGVkZWYgdm9pZCAoKlJlb3Jk ZXJCdWZmZXJTZXF1ZW5jZUNCKSAoUmVvcmRlckJ1ZmZlciAqcmIsCisJCQkJCQkJCQkJIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkgWExvZ1JlY1B0ciBzZXF1ZW5jZV9s c24sCisJCQkJCQkJCQkJIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJCQkgYm9vbCB0cmFuc2Fj dGlvbmFsLAorCQkJCQkJCQkJCSBpbnQ2NCBsYXN0X3ZhbHVlLCBpbnQ2NCBsb2dfY250LAor CQkJCQkJCQkJCSBib29sIGlzX2NhbGxlZCk7CisKIC8qIGJlZ2luIHByZXBhcmUgY2FsbGJh Y2sgc2lnbmF0dXJlICovCiB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyQmVnaW5QcmVw YXJlQ0IpIChSZW9yZGVyQnVmZmVyICpyYiwKIAkJCQkJCQkJCQkJIFJlb3JkZXJCdWZmZXJU WE4gKnR4bik7CkBAIC00OTYsNiArNTEzLDE1IEBAIHR5cGVkZWYgdm9pZCAoKlJlb3JkZXJC dWZmZXJTdHJlYW1NZXNzYWdlQ0IpICgKIAkJCQkJCQkJCQkJICBjb25zdCBjaGFyICpwcmVm aXgsIFNpemUgc3osCiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKKy8q IHN0cmVhbSBzZXF1ZW5jZSBjYWxsYmFjayBzaWduYXR1cmUgKi8KK3R5cGVkZWYgdm9pZCAo KlJlb3JkZXJCdWZmZXJTdHJlYW1TZXF1ZW5jZUNCKSAoUmVvcmRlckJ1ZmZlciAqcmIsCisJ CQkJCQkJCQkJCSAgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkJICAgWExv Z1JlY1B0ciBzZXF1ZW5jZV9sc24sCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9uIHJlbCwKKwkJ CQkJCQkJCQkJICAgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCQkJCQkgICBpbnQ2NCBs YXN0X3ZhbHVlLCBpbnQ2NCBsb2dfY250LAorCQkJCQkJCQkJCQkgICBib29sIGlzX2NhbGxl ZCk7CisKIC8qIHN0cmVhbSB0cnVuY2F0ZSBjYWxsYmFjayBzaWduYXR1cmUgKi8KIHR5cGVk ZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJTdHJlYW1UcnVuY2F0ZUNCKSAoCiAJCQkJCQkJCQkJ CSAgIFJlb3JkZXJCdWZmZXIgKnJiLApAQCAtNTExLDYgKzUzNywxMiBAQCBzdHJ1Y3QgUmVv cmRlckJ1ZmZlcgogCSAqLwogCUhUQUIJICAgKmJ5X3R4bjsKIAorCS8qCisJICogcmVsZmls ZW5vZGUgPT4gWElEIGxvb2t1cCB0YWJsZSBmb3Igc2VxdWVuY2VzIGNyZWF0ZWQgaW4gYSB0 cmFuc2FjdGlvbgorCSAqIChhbHNvIGluY2x1ZGVzIGFsdGVyZWQgc2VxdWVuY2VzLCB3aGlj aCBhc3NpZ25zIG5ldyByZWxmaWxlbm9kZSkKKwkgKi8KKwlIVEFCCSAgICpzZXF1ZW5jZXM7 CisKIAkvKgogCSAqIFRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGJlIGEgdG9wbGV2ZWwgeGFj dCwgb3JkZXJlZCBieSBMU04gb2YgdGhlIGZpcnN0CiAJICogcmVjb3JkIGJlYXJpbmcgdGhh dCB4aWQuCkBAIC01NDEsNiArNTczLDcgQEAgc3RydWN0IFJlb3JkZXJCdWZmZXIKIAlSZW9y ZGVyQnVmZmVyQXBwbHlUcnVuY2F0ZUNCIGFwcGx5X3RydW5jYXRlOwogCVJlb3JkZXJCdWZm ZXJDb21taXRDQiBjb21taXQ7CiAJUmVvcmRlckJ1ZmZlck1lc3NhZ2VDQiBtZXNzYWdlOwor CVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUNCIHNlcXVlbmNlOwogCiAJLyoKIAkgKiBDYWxsYmFj a3MgdG8gYmUgY2FsbGVkIHdoZW4gc3RyZWFtaW5nIGEgdHJhbnNhY3Rpb24gYXQgcHJlcGFy ZSB0aW1lLgpAQCAtNTYwLDYgKzU5Myw3IEBAIHN0cnVjdCBSZW9yZGVyQnVmZmVyCiAJUmVv cmRlckJ1ZmZlclN0cmVhbUNvbW1pdENCIHN0cmVhbV9jb21taXQ7CiAJUmVvcmRlckJ1ZmZl clN0cmVhbUNoYW5nZUNCIHN0cmVhbV9jaGFuZ2U7CiAJUmVvcmRlckJ1ZmZlclN0cmVhbU1l c3NhZ2VDQiBzdHJlYW1fbWVzc2FnZTsKKwlSZW9yZGVyQnVmZmVyU3RyZWFtU2VxdWVuY2VD QiBzdHJlYW1fc2VxdWVuY2U7CiAJUmVvcmRlckJ1ZmZlclN0cmVhbVRydW5jYXRlQ0Igc3Ry ZWFtX3RydW5jYXRlOwogCiAJLyoKQEAgLTYzNSw2ICs2NjksMTAgQEAgdm9pZAkJUmVvcmRl ckJ1ZmZlclF1ZXVlQ2hhbmdlKFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwKIHZv aWQJCVJlb3JkZXJCdWZmZXJRdWV1ZU1lc3NhZ2UoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2Fj dGlvbklkLCBTbmFwc2hvdCBzbmFwc2hvdCwgWExvZ1JlY1B0ciBsc24sCiAJCQkJCQkJCQkg IGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LAogCQkJCQkJCQkJICBT aXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7Cit2b2lkCQlSZW9yZGVy QnVmZmVyUXVldWVTZXF1ZW5jZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4 aWQsCisJCQkJCQkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCwgWExvZ1JlY1B0ciBsc24sIFJl cE9yaWdpbklkIG9yaWdpbl9pZCwKKwkJCQkJCQkJCSAgIFJlbEZpbGVOb2RlIHJub2RlLCBi b29sIHRyYW5zYWN0aW9uYWwsIGJvb2wgY3JlYXRlZCwKKwkJCQkJCQkJCSAgIFJlb3JkZXJC dWZmZXJUdXBsZUJ1ZiAqdHVwbGVidWYpOwogdm9pZAkJUmVvcmRlckJ1ZmZlckNvbW1pdChS ZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsCiAJCQkJCQkJCVhMb2dSZWNQdHIgY29t bWl0X2xzbiwgWExvZ1JlY1B0ciBlbmRfbHNuLAogCQkJCQkJCQlUaW1lc3RhbXBUeiBjb21t aXRfdGltZSwgUmVwT3JpZ2luSWQgb3JpZ2luX2lkLCBYTG9nUmVjUHRyIG9yaWdpbl9sc24p OwpAQCAtNjgyLDQgKzcyMCw3IEBAIHZvaWQJCVJlb3JkZXJCdWZmZXJTZXRSZXN0YXJ0UG9p bnQoUmVvcmRlckJ1ZmZlciAqLCBYTG9nUmVjUHRyIHB0cik7CiAKIHZvaWQJCVN0YXJ0dXBS ZW9yZGVyQnVmZmVyKHZvaWQpOwogCitib29sCQlSZW9yZGVyQnVmZmVyU2VxdWVuY2VJc1Ry YW5zYWN0aW9uYWwoUmVvcmRlckJ1ZmZlciAqcmIsCisJCQkJCQkJCQkJCQkgUmVsRmlsZU5v ZGUgcm5vZGUsIGJvb2wgY3JlYXRlZCk7CisKICNlbmRpZgotLSAKMi4zMS4xCgo= --------------G7eZZrvWqjxk09Bi4Hg0i1nm--