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 1qIsWi-0005pv-2k for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Jul 2023 15:10:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qIsWg-0002Ej-OQ for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Jul 2023 15:10:10 +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 1qIsWf-0002EZ-6V for pgsql-hackers@lists.postgresql.org; Mon, 10 Jul 2023 15:10:10 +0000 Received: from mail-lj1-x232.google.com ([2a00:1450:4864:20::232]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qIsWN-0035mD-44 for pgsql-hackers@lists.postgresql.org; Mon, 10 Jul 2023 15:10:07 +0000 Received: by mail-lj1-x232.google.com with SMTP id 38308e7fff4ca-2b703c900e3so70615941fa.1 for ; Mon, 10 Jul 2023 08:09:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1689001789; x=1691593789; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=jCPEsye+DzM7wshyPLui5AR67YtNKE0Q9D+lbeytJ50=; b=hNgumHKE7KtSEPGhqEl2Fd/g2DHuR2rdafZ3rf0hoGNM3qfZEBY98bWlXG+fmYb/xU p78kPYy9XhtbB5MAJdWrF/a3WSrO3tRDxaZY6g0naFqtyp7eDfeCMShfK2zmHvhAIkra c/F8H2wEyxPha/vjnYGWcG/ym+gfmqSF6GBEC6ORZ3LULRAxcZL394EeIni1n6ocjXMc RpFaOmX0tWdlbYKqaMh8s/19NLt4h0pAb5RwvKjZLSwbD44iPZsgET9e5TMl5y3uQlNL eaGWm7cLsdmbGuAZ3HQrjG9AuzKx6+FH9eNHEbug3VPL4I93lHc81/LOTZs6AFN2AleI 18tQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689001789; x=1691593789; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=jCPEsye+DzM7wshyPLui5AR67YtNKE0Q9D+lbeytJ50=; b=GA5hZwaubjn6mUpAvcpoOEK6dv1BmtpIgawEchEcWzMsMcVIOV3YO8y3yRjl3vSz1A lyxw3sNdlwia/U0XmOX8L6Bce94fNCX+V3oJ0K1COlCMb0IH4Zo/rwu7K8LZ+VfvVBNp sDRjX8lmFh1CCcpnsh/+qXL5lQSFSobUfh2KhOB2jbv3erD3R9eS3wJs57ldn4+9fAy+ P1dxOlM22hZyzN8CE0I3r+pCA9OS6UMyt8o+EXy5yfkPPNuWsaNMknFRZcrZd/iut7SX D3gCNwWmUVazjs6aRPbeyXnqu4NHcLCt9eTmGivQny6ie0zkzihywyBbSIayODbZbsmV mlfg== X-Gm-Message-State: ABy/qLZF5U1c6gjjeuctFUaqfJNLvIxRsdd7CAHHuC373i457tK9H3DR pImde6BbeelpUUKuvVOA4biWlQ== X-Google-Smtp-Source: APBJJlHHUKHrqwR0/EXYkgBON91EHMLPda2xcCdyTSjZoNpnrA8TtEskAE6pu1Pcaa9KiPWEVqKlQg== X-Received: by 2002:a2e:b781:0:b0:2b7:7b9:4767 with SMTP id n1-20020a2eb781000000b002b707b94767mr9636675ljo.41.1689001787914; Mon, 10 Jul 2023 08:09:47 -0700 (PDT) Received: from [10.137.0.17] (ip-86-49-228-220.bb.vodafone.cz. [86.49.228.220]) by smtp.gmail.com with ESMTPSA id c25-20020a170906341900b0098d2f703408sm6253819ejb.118.2023.07.10.08.09.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Jul 2023 08:09:46 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------CooOQ6LlXwcsddypE9zFAJMn" Message-ID: <1992ff4f-bf0e-3ad0-a859-cf054f6abc74@enterprisedb.com> Date: Mon, 10 Jul 2023 17:09:44 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: PATCH: Using BRIN indexes for sorted output Content-Language: en-US To: Matthias van de Meent Cc: Justin Pryzby , Andres Freund , Greg Stark , PostgreSQL Hackers References: <1607e037-8c5b-1626-9f98-496f067b9eb5@enterprisedb.com> <14568731-ac91-ce2d-1477-0e2504c72775@enterprisedb.com> <20221206185143.ivy3afwmkhloksgv@awork3.anarazel.de> <4e679562-fd9a-33a3-ce71-cd7a27525f8e@enterprisedb.com> <20230216161016.GV1653@telsasoft.com> <9f73f798-1dac-c75d-d834-aa012ba13b65@enterprisedb.com> <8f1374d1-6f4b-ce99-84eb-ffa852c0dadb@enterprisedb.com> <30f37aae-57fa-e7ab-9444-7b82969ed68f@enterprisedb.com> <825f648f-2a31-1870-942f-03fba2b6b3cf@enterprisedb.com> <0c331bf8-0cd3-e9fe-ae81-9e3d68f1f95c@enterprisedb.com> From: Tomas Vondra In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------CooOQ6LlXwcsddypE9zFAJMn Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 7/10/23 14:38, Matthias van de Meent wrote: > On Mon, 10 Jul 2023 at 13:43, Tomas Vondra > wrote: >> On 7/10/23 12:22, Matthias van de Meent wrote: >>> On Fri, 7 Jul 2023 at 20:26, Tomas Vondra wrote: >>>> However, it's not quite clear to me is what you mean by the weight- and >>>> compare-operators? That is, what are >>>> >>>> - brin_minmax_minorder(PG_FUNCTION_ARGS=brintuple) -> range.min >>>> - brin_minmax_maxorder(PG_FUNCTION_ARGS=brintuple) -> range.max >>>> - brin_minmax_compare(order, order) -> int >>>> >>>> supposed to do? Or what does "PG_FUNCTION_ARGS=brintuple" mean? >>> >>> _minorder/_maxorder is for extracting the minimum/maximum relative >>> order of each range, used for ASC/DESC sorting of operator results >>> (e.g. to support ORDER BY <->(box_column, '(1,2)'::point) DESC). >>> PG_FUNCTION_ARGS is mentioned because of PG calling conventions; >>> though I did forget to describe the second operator argument for the >>> distance function. We might also want to use only one such "order >>> extraction function" with DESC/ASC indicated by an argument. >>> >> >> I'm still not sure I understand what "minimum/maximum relative order" >> is. Isn't it the same as returning min/max value that can appear in the >> range? Although, that wouldn't work for points/boxes. > > Kind of. For single-dimensional opclasses (minmax, minmax_multi) we > only need to extract the normal min/max values for ASC/DESC sorts, > which are readily available in the summary. But for multi-dimensional > and distance searches (nearest neighbour) we need to calculate the > distance between the indexed value(s) and the origin value to compare > the summary against, and the order would thus be asc/desc on distance > - a distance which may not be precisely represented by float types - > thus 'relative order' with its own order operation. > Can you give some examples of such data / queries, and how would it leverage the BRIN sort stuff? For distance searches, I imagine this as data indexed by BRIN inclusion opclass, which creates a bounding box. We could return closest/furthest point on the bounding box (from the point used in the query). Which seems a bit like a R-tree ... But I have no idea what would this do for multi-dimensional searches, or what would those searches do? How would you sort such data other than lexicographically? Which I think is covered by the current BRIN Sort, because the data is either stored as multiple columns, in which case we use the BRIN on the first column. Or it's indexed using BRIN minmax as a tuple of values, but then it's sorted lexicographically. >>>> In principle we just need a procedure that tells us min/max for a given >>>> page range - I guess that's what the minorder/maxorder functions do? But >>>> why would we need the compare one? We're comparing by the known data >>>> type, so we can just delegate the comparison to that, no? >>> >>> Is there a comparison function for any custom orderable type that we >>> can just use? GIST distance ordering uses floats, and I don't quite >>> like that from a user perspective, as it makes ordering operations >>> imprecise. I'd rather allow (but discourage) any type with its own >>> compare function. >>> >> >> I haven't really thought about geometric types, just about minmax and >> minmax-multi. It's not clear to me what the benefit for these types be. >> I mean, we can probably sort points lexicographically, but is anyone >> doing that in queries? It seems useless for order by distance. > > Yes, that's why you would sort them by distance, where the distance is > generated by the opclass as min/max distance between the summary and > the distance's origin, and then inserted into the tuplesort. > OK, so the query says "order by distance from point X" and we calculate the min/max distance of values in a given page range. > (previously) >>>> I finally had time to look at this patch again. There's a bit of bitrot, >>>> so here's a rebased version (no other changes). > > It seems like you forgot to attach the rebased patch, so unless you're > actively working on updating the patchset right now, could you send > the rebase to make CFBot happy? > Yeah, I forgot about the attachment. So here it is. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------CooOQ6LlXwcsddypE9zFAJMn Content-Type: text/x-patch; charset=UTF-8; name="0001-Allow-index-AMs-to-build-and-use-custom-sta-20230710.patch" Content-Disposition: attachment; filename*0="0001-Allow-index-AMs-to-build-and-use-custom-sta-20230710.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwYjk5ZWVjMDM4ODViOTVkNWM3NDhkMDcwOWRiNDg5ZjgyZDAyODU2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCAxNyBPY3QgMjAyMiAxODozOToyOCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDEvMTFdIEFsbG93IGluZGV4IEFNcyB0byBidWlsZCBhbmQgdXNlIGN1 c3RvbSBzdGF0aXN0aWNzCgpTb21lIGluZGV4aW5nIEFNcyB3b3JrIHZlcnkgZGlmZmVyZW50 bHkgYW5kIGVzdGltYXRpbmcgdGhlbSB1c2luZwpleGlzdGluZyBzdGF0aXN0aWNzIGlzIHBy b2JsZW1hdGljLCBwcm9kdWNpbmcgdW5yZWxpYWJsZSBjb3N0aW5nLiBUaGlzCmFwcGxpZXMg ZS5nLiB0byBCUklOLCB3aGljaCByZWxpZXMgb24gcGFnZSByYW5nZXMsIG5vdCB0dXBsZSBw b2ludGVycy4KClRoaXMgYWRkcyBhbiBvcHRpb25hbCBBTSBwcm9jZWR1cmUsIGFsbG93aW5n IHRoZSBvcGZhbWlseSB0byBidWlsZApjdXN0b20gc3RhdGlzdGljcywgc3RvcmUgdGhlbSBp biBwZ19zdGF0aXN0aWMgYW5kIHRoZW4gdXNlIHRoZW0gZHVyaW5nCnBsYW5uaW5nLiBCeSBk ZWZhdWx0IHRoaXMgaXMgZGlzYWJsZWQsIGJ1dCBtYXkgYmUgZW5hYmxlZCBieSBzZXR0aW5n CgogICBTRVQgZW5hYmxlX2luZGV4YW1fc3RhdHMgPSB0cnVlOwoKVGhlbiBBTkFMWVpFIHdp bGwgY2FsbCB0aGUgb3B0aW9uYWwgcHJvY2VkdXJlIGZvciBhbGwgaW5kZXhlcy4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyAgICAgICAgIHwgOTAyICsr KysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAg ICAgICAgICAgIHwgMTQ5ICsrLQogc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9z dGF0cy5jICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5j ICAgICAgICAgICAgICB8ICA1OSArKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMgICAgICAgICAgIHwgIDQxICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3Rn cmVzcWwuY29uZi5zYW1wbGUgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBpLmgg ICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9icmluLmgg ICAgICAgICAgICAgICAgICAgICB8ICA2MyArKwogc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5f aW50ZXJuYWwuaCAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf YW1wcm9jLmRhdCAgICAgICAgICAgICB8ICA2NCArKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cv cGdfc3RhdGlzdGljLmggICAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9jb21tYW5k cy92YWN1dW0uaCAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvdXRpbHMv bHN5c2NhY2hlLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgMyArLQogMTcgZmlsZXMgY2hhbmdl ZCwgMTMwNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW4uYwppbmRleCAzYzZhOTU2ZWFhLi41NzU4YWZkZDgzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2Jy aW4vYnJpbi5jCkBAIC05NSw2ICs5NSw3IEBAIGJyaW5oYW5kbGVyKFBHX0ZVTkNUSU9OX0FS R1MpCiAJYW1yb3V0aW5lLT5hbXN0cmF0ZWdpZXMgPSAwOwogCWFtcm91dGluZS0+YW1zdXBw b3J0ID0gQlJJTl9MQVNUX09QVElPTkFMX1BST0NOVU07CiAJYW1yb3V0aW5lLT5hbW9wdHNw cm9jbnVtID0gQlJJTl9QUk9DTlVNX09QVElPTlM7CisJYW1yb3V0aW5lLT5hbXN0YXRzcHJv Y251bSA9IEJSSU5fUFJPQ05VTV9TVEFUSVNUSUNTOwogCWFtcm91dGluZS0+YW1jYW5vcmRl ciA9IGZhbHNlOwogCWFtcm91dGluZS0+YW1jYW5vcmRlcmJ5b3AgPSBmYWxzZTsKIAlhbXJv dXRpbmUtPmFtY2FuYmFja3dhcmQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluX21pbm1heC5jCmluZGV4IDgyMjk0OTNjODQuLjY0MTUwMjA0ZmMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYwpAQCAtMTAsMTcgKzEwLDIzIEBACiAgKi8K ICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiYWNjZXNzL2JyaW4uaCIKICNp bmNsdWRlICJhY2Nlc3MvYnJpbl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgImFjY2Vzcy9icmlu X3Jldm1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy9icmluX3R1cGxlLmgiCiAjaW5jbHVkZSAi YWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVtLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19hbW9wLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisj aW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIK KyNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2Fj aGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNo ZS5oIgorI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogCiB0eXBlZGVmIHN0cnVjdCBN aW5tYXhPcGFxdWUKIHsKQEAgLTI1Myw2ICsyNTksOTAyIEBAIGJyaW5fbWlubWF4X3VuaW9u KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX1ZPSUQoKTsKIH0KIAorLyogRklYTUUg Y29weSBvZiBhIHByaXZhdGUgc3RydWN0IGZyb20gYnJpbi5jICovCit0eXBlZGVmIHN0cnVj dCBCcmluT3BhcXVlCit7CisJQmxvY2tOdW1iZXIgYm9fcGFnZXNQZXJSYW5nZTsKKwlCcmlu UmV2bWFwICpib19ybUFjY2VzczsKKwlCcmluRGVzYyAgICpib19iZGVzYzsKK30gQnJpbk9w YXF1ZTsKKworLyoKKyAqIENvbXBhcmUgcmFuZ2VzIGJ5IG1pbnZhbCAoY29sbGF0aW9uIGFu ZCBvcGVyYXRvciBhcmUgdGFrZW4gZnJvbSB0aGUgZXh0cmEKKyAqIGFyZ3VtZW50LCB3aGlj aCBpcyBleHBlY3RlZCB0byBiZSBUeXBlQ2FjaGVFbnRyeSkuCisgKi8KK3N0YXRpYyBpbnQK K3JhbmdlX21pbnZhbF9jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAq YXJnKQoreworCUJyaW5SYW5nZSAqcmEgPSAqKEJyaW5SYW5nZSAqKikgYTsKKwlCcmluUmFu Z2UgKnJiID0gKihCcmluUmFuZ2UgKiopIGI7CisJVHlwZUNhY2hlRW50cnkgKnR5cGVudHJ5 ID0gKFR5cGVDYWNoZUVudHJ5ICopIGFyZzsKKwlGbWdySW5mbyAgICpjbXBmdW5jID0gJnR5 cGVudHJ5LT5jbXBfcHJvY19maW5mbzsKKwlEYXR1bQljOworCWludAkJcjsKKworCWMgPSBG dW5jdGlvbkNhbGwyQ29sbChjbXBmdW5jLCB0eXBlbnRyeS0+dHlwY29sbGF0aW9uLAorCQkJ CQkJICByYS0+bWluX3ZhbHVlLCByYi0+bWluX3ZhbHVlKTsKKwlyID0gRGF0dW1HZXRJbnQz MihjKTsKKworCWlmIChyICE9IDApCisJCXJldHVybiByOworCisJaWYgKHJhLT5ibGtub19z dGFydCA8IHJiLT5ibGtub19zdGFydCkKKwkJcmV0dXJuIC0xOworCWVsc2UKKwkJcmV0dXJu IDE7Cit9CisKKy8qCisgKiBDb21wYXJlIHJhbmdlcyBieSBtYXh2YWwgKGNvbGxhdGlvbiBh bmQgb3BlcmF0b3IgYXJlIHRha2VuIGZyb20gdGhlIGV4dHJhCisgKiBhcmd1bWVudCwgd2hp Y2ggaXMgZXhwZWN0ZWQgdG8gYmUgVHlwZUNhY2hlRW50cnkpLgorICovCitzdGF0aWMgaW50 CityYW5nZV9tYXh2YWxfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQg KmFyZykKK3sKKwlCcmluUmFuZ2UgKnJhID0gKihCcmluUmFuZ2UgKiopIGE7CisJQnJpblJh bmdlICpyYiA9ICooQnJpblJhbmdlICoqKSBiOworCVR5cGVDYWNoZUVudHJ5ICp0eXBlbnRy eSA9IChUeXBlQ2FjaGVFbnRyeSAqKSBhcmc7CisJRm1nckluZm8gICAqY21wZnVuYyA9ICZ0 eXBlbnRyeS0+Y21wX3Byb2NfZmluZm87CisJRGF0dW0JYzsKKwlpbnQJCXI7CisKKwljID0g RnVuY3Rpb25DYWxsMkNvbGwoY21wZnVuYywgdHlwZW50cnktPnR5cGNvbGxhdGlvbiwKKwkJ CQkJCSAgcmEtPm1heF92YWx1ZSwgcmItPm1heF92YWx1ZSk7CisJciA9IERhdHVtR2V0SW50 MzIoYyk7CisKKwlpZiAociAhPSAwKQorCQlyZXR1cm4gcjsKKworCWlmIChyYS0+Ymxrbm9f c3RhcnQgPCByYi0+Ymxrbm9fc3RhcnQpCisJCXJldHVybiAtMTsKKwllbHNlCisJCXJldHVy biAxOworfQorCisvKiBjb21wYXJlIHZhbHVlcyB1c2luZyBhbiBvcGVyYXRvciBmcm9tIHR5 cGNhY2hlICovCitzdGF0aWMgaW50CityYW5nZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKmEs IGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFyZykKK3sKKwlEYXR1bQlkYSA9ICogKERhdHVtICop IGE7CisJRGF0dW0JZGIgPSAqIChEYXR1bSAqKSBiOworCVR5cGVDYWNoZUVudHJ5ICp0eXBl bnRyeSA9IChUeXBlQ2FjaGVFbnRyeSAqKSBhcmc7CisJRm1nckluZm8gICAqY21wZnVuYyA9 ICZ0eXBlbnRyeS0+Y21wX3Byb2NfZmluZm87CisJRGF0dW0JYzsKKworCWMgPSBGdW5jdGlv bkNhbGwyQ29sbChjbXBmdW5jLCB0eXBlbnRyeS0+dHlwY29sbGF0aW9uLAorCQkJCQkJICBk YSwgZGIpOworCXJldHVybiBEYXR1bUdldEludDMyKGMpOworfQorCisvKgorICogbWludmFs X2VuZAorICoJCURldGVybWluZSBmaXJzdCBpbmRleCBzbyB0aGF0IChtaW52YWwgPiB2YWx1 ZSkuCisgKgorICogVGhlIGFycmF5IG9mIHJhbmdlcyBpcyBleHBlY3RlZCB0byBiZSBzb3J0 ZWQgYnkgbWludmFsdWUsIHNvIHRoaXMgaXMgdGhlIGZpcnN0CisgKiByYW5nZSB0aGF0IGNh bid0IHBvc3NpYmx5IGludGVyc2VjdCB3aXRoIGEgcmFuZ2UgaGF2aW5nICJ2YWx1ZSIgYXMg bWF4dmFsLgorICovCitzdGF0aWMgaW50CittaW52YWxfZW5kKEJyaW5SYW5nZSAqKnJhbmdl cywgaW50IG5yYW5nZXMsIERhdHVtIHZhbHVlLCBUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUp Cit7CisJaW50CQlzdGFydCA9IDAsCisJCQllbmQgPSAobnJhbmdlcyAtIDEpOworCisJLy8g ZXZlcnl0aGluZyBtYXRjaGVzCisJaWYgKHJhbmdlX3ZhbHVlc19jbXAoJnZhbHVlLCAmcmFu Z2VzW2VuZF0tPm1pbl92YWx1ZSwgdHlwY2FjaGUpID49IDApCisJCXJldHVybiBucmFuZ2Vz OworCisJLy8gbm8gbWF0Y2hlcworCWlmIChyYW5nZV92YWx1ZXNfY21wKCZ2YWx1ZSwgJnJh bmdlc1tzdGFydF0tPm1pbl92YWx1ZSwgdHlwY2FjaGUpIDwgMCkKKwkJcmV0dXJuIDA7CisK Kwl3aGlsZSAoKGVuZCAtIHN0YXJ0KSA+IDApCisJeworCQlpbnQgbWlkcG9pbnQ7CisJCWlu dCByOworCisJCW1pZHBvaW50ID0gc3RhcnQgKyAoZW5kIC0gc3RhcnQpIC8gMjsKKworCQly ID0gcmFuZ2VfdmFsdWVzX2NtcCgmdmFsdWUsICZyYW5nZXNbbWlkcG9pbnRdLT5taW5fdmFs dWUsIHR5cGNhY2hlKTsKKworCQlpZiAociA+PSAwKQorCQkJc3RhcnQgPSBtaWRwb2ludCAr IDE7CisJCWVsc2UKKwkJCWVuZCA9IG1pZHBvaW50OworCX0KKworCUFzc2VydChyYW5nZV92 YWx1ZXNfY21wKCZyYW5nZXNbc3RhcnRdLT5taW5fdmFsdWUsICZ2YWx1ZSwgdHlwY2FjaGUp ID4gMCk7CisJQXNzZXJ0KHJhbmdlX3ZhbHVlc19jbXAoJnJhbmdlc1tzdGFydC0xXS0+bWlu X3ZhbHVlLCAmdmFsdWUsIHR5cGNhY2hlKSA8PSAwKTsKKworCXJldHVybiBzdGFydDsKK30K KworCisvKgorICogbG93ZXJfYm91bmQKKyAqCQlEZXRlcm1pbmUgZmlyc3QgaW5kZXggc28g dGhhdCAodmFsdWVzW2luZGV4XSA+PSB2YWx1ZSkuCisgKgorICogVGhlIGFycmF5IG9mIHZh bHVlcyBpcyBzb3J0ZWQsIGFuZCB0aGlzIHJldHVybnMgdGhlIGZpcnN0IHZhbHVlIHRoYXQK KyAqIGV4Y2VlZHMgKG9yIGlzIGVxdWFsKSB0byB0aGUgbWludmFsdWUuCisgKi8KK3N0YXRp YyBpbnQKK2xvd2VyX2JvdW5kKERhdHVtICp2YWx1ZXMsIGludCBudmFsdWVzLCBEYXR1bSBt aW52YWx1ZSwgVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlKQoreworCWludAkJc3RhcnQgPSAw LAorCQkJZW5kID0gKG52YWx1ZXMgLSAxKTsKKworCS8qIGFsbCB2YWx1ZXMgZXhjZWVkIG1p bnZhbHVlIC0gcmV0dXJuIHRoZSBmaXJzdCBlbGVtZW50ICovCisJaWYgKHJhbmdlX3ZhbHVl c19jbXAoJm1pbnZhbHVlLCAmdmFsdWVzW3N0YXJ0XSwgdHlwY2FjaGUpIDw9IDApCisJCXJl dHVybiAwOworCisJLyogbm90aGluZyBtYXRjaGVzIC0gcmV0dXJuIHRoZSBlbGVtZW50IGFm dGVyIHRoZSBsYXN0IG9uZSAqLworCWlmIChyYW5nZV92YWx1ZXNfY21wKCZtaW52YWx1ZSwg JnZhbHVlc1tlbmRdLCB0eXBjYWNoZSkgPiAwKQorCQlyZXR1cm4gbnZhbHVlczsKKworCS8q CisJICogTm93IHdlIGtub3cgdGhlIGxvd2VyIGJvdW5kYXJ5IGlzIHNvbWV3aGVyZSBpbiB0 aGUgYXJyYXkgKGFuZCB3ZSBrbm93CisJICogaXQncyBub3QgdGhlIGZpcnN0IGVsZW1lbnQs IGJlY2F1c2UgdGhhdCdzIGNvdmVyZWQgYnkgdGhlIGZpcnN0IGNoZWNrCisJICogYWJvdmUp LiBTbyBkbyBhIGJpbmFyeSBzZWFyY2guCisJICovCisJd2hpbGUgKChlbmQgLSBzdGFydCkg PiAwKQorCXsKKwkJaW50CW1pZHBvaW50OworCQlpbnQJcjsKKworCQltaWRwb2ludCA9IHN0 YXJ0ICsgKGVuZCAtIHN0YXJ0KSAvIDI7CisKKwkJciA9IHJhbmdlX3ZhbHVlc19jbXAoJm1p bnZhbHVlLCAmdmFsdWVzW21pZHBvaW50XSwgdHlwY2FjaGUpOworCisJCWlmIChyIDw9IDAp CS8qIG1pbnZhbHVlID49IG1pZHBvaW50ICovCisJCQllbmQgPSBtaWRwb2ludDsKKwkJZWxz ZQkJLyogbWlkcG9pbnQgPCBtaW52YWx1ZSAqLworCQkJc3RhcnQgPSAobWlkcG9pbnQgKyAx KTsKKwl9CisKKwlBc3NlcnQocmFuZ2VfdmFsdWVzX2NtcCgmbWludmFsdWUsICZ2YWx1ZXNb c3RhcnRdLCB0eXBjYWNoZSkgPD0gMCk7CisJQXNzZXJ0KHJhbmdlX3ZhbHVlc19jbXAoJm1p bnZhbHVlLCAmdmFsdWVzW3N0YXJ0LTFdLCB0eXBjYWNoZSkgPiAwKTsKKworCXJldHVybiBz dGFydDsKK30KKworLyoKKyAqIHVwcGVyX2JvdW5kCisgKgkJRGV0ZXJtaW5lIGxhc3QgaW5k ZXggc28gdGhhdCAodmFsdWVzW2luZGV4XSA8PSBtYXh2YWx1ZSkuCisgKgorICogVGhlIGFy cmF5IG9mIHZhbHVlcyBpcyBzb3J0ZWQsIGFuZCB0aGlzIHJldHVybnMgdGhlIGxhc3QgdmFs dWUgdGhhdAorICogZG9lcyBub3QgZXhjZWVkIChvciBpcyBlcXVhbCkgdG8gdGhlIG1heHZh bHVlLgorICovCitzdGF0aWMgaW50Cit1cHBlcl9ib3VuZChEYXR1bSAqdmFsdWVzLCBpbnQg bnZhbHVlcywgRGF0dW0gbWF4dmFsdWUsIFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSkKK3sK KwlpbnQJCXN0YXJ0ID0gMCwKKwkJCWVuZCA9IChudmFsdWVzIC0gMSk7CisKKwkvKiBldmVy eXRoaW5nIG1hdGNoZXMsIHJldHVybiB0aGUgbGFzdCBlbGVtZW50ICovCisJaWYgKHJhbmdl X3ZhbHVlc19jbXAoJnZhbHVlc1tlbmRdLCAmbWF4dmFsdWUsIHR5cGNhY2hlKSA8PSAwKQor CQlyZXR1cm4gKG52YWx1ZXMgLSAxKTsKKworCS8qIG5vdGhpbmcgbWF0Y2hlcywgcmV0dXJu IHRoZSBlbGVtZW50IGJlZm9yZSB0aGUgZmlyc3Qgb25lICovCisJaWYgKHJhbmdlX3ZhbHVl c19jbXAoJnZhbHVlc1tzdGFydF0sICZtYXh2YWx1ZSwgdHlwY2FjaGUpID4gMCkKKwkJcmV0 dXJuIC0xOworCisJLyoKKwkgKiBOb3cgd2Uga25vdyB0aGUgbG93ZXIgYm91bmRhcnkgaXMg c29tZXdoZXJlIGluIHRoZSBhcnJheSAoYW5kIHdlIGtub3cKKwkgKiBpdCdzIG5vdCB0aGUg bGFzdCBlbGVtZW50LCBiZWNhdXNlIHRoYXQncyBjb3ZlcmVkIGJ5IHRoZSBmaXJzdCBjaGVj aworCSAqIGFib3ZlKS4gU28gZG8gYSBiaW5hcnkgc2VhcmNoLgorCSAqLworCXdoaWxlICgo ZW5kIC0gc3RhcnQpID4gMCkKKwl7CisJCWludCBtaWRwb2ludDsKKwkJaW50IHI7CisKKwkJ bWlkcG9pbnQgPSBzdGFydCArIChlbmQgLSBzdGFydCkgLyAyOworCisJCS8qIEVuc3VyZSB3 ZSBhbHdheXMgbW92ZSAoaXQgbWlnaHQgYmUgZXF1YWwgdG8gc3RhcnQgZHVlIHRvIHJvdW5k aW5nKS4gKi8KKwkJbWlkcG9pbnQgPSBNYXgoc3RhcnQrMSwgbWlkcG9pbnQpOworCisJCXIg PSByYW5nZV92YWx1ZXNfY21wKCZ2YWx1ZXNbbWlkcG9pbnRdLCAmbWF4dmFsdWUsIHR5cGNh Y2hlKTsKKworCQlpZiAociA8PSAwKQkJCS8qIHZhbHVlIDw9IG1heHZhbHVlICovCisJCQlz dGFydCA9IG1pZHBvaW50OworCQllbHNlCQkJCS8qIHZhbHVlID4gbWF4dmFsdWUgKi8KKwkJ CWVuZCA9IG1pZHBvaW50IC0gMTsKKwl9CisKKwlBc3NlcnQocmFuZ2VfdmFsdWVzX2NtcCgm dmFsdWVzW3N0YXJ0XSwgJm1heHZhbHVlLCB0eXBjYWNoZSkgPD0gMCk7CisJQXNzZXJ0KHJh bmdlX3ZhbHVlc19jbXAoJnZhbHVlc1tzdGFydCsxXSwgJm1heHZhbHVlLCB0eXBjYWNoZSkg PiAwKTsKKworCXJldHVybiBzdGFydDsKK30KKworLyoKKyAqIGJyaW5fbWlubWF4X2NvdW50 X292ZXJsYXBzCisgKgkJQ2FsY3VsYXRlIG51bWJlciBvZiBvdmVybGFwcy4KKyAqCisgKiBU aGlzIHVzZXMgdGhlIG1pbnJhbmdlcyB0byBxdWlja2x5IGVsaW1pbmF0ZSByYW5nZXMgdGhh dCBjYW4ndCBwb3NzaWJseQorICogaW50ZXJzZWN0LiBXZSBzaW1wbHkgd2FsayBtaW5yYW5n ZXMgdW50aWwgbWludmFsID4gY3VycmVudCBtYXh2YWwsIGFuZAorICogd2UncmUgZG9uZS4K KyAqCisgKiBVbmxpa2UgYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMyLCB0aGlzIGRvZXMg bm90IGhhdmUgaXNzdWVzIHdpdGggd2lkZQorICogcmFuZ2VzLCBzbyB0aGlzIGlzIHdoYXQg d2Ugc2hvdWxkIHVzZS4KKyAqLworc3RhdGljIHZvaWQKK2JyaW5fbWlubWF4X2NvdW50X292 ZXJsYXBzKEJyaW5SYW5nZSAqKm1pbnJhbmdlcywgaW50IG5yYW5nZXMsCisJCQkJCQkgICBU eXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIEJyaW5NaW5tYXhTdGF0cyAqc3RhdHMpCit7CisJ aW50NjQJbm92ZXJsYXBzOworCisJbm92ZXJsYXBzID0gMDsKKwlmb3IgKGludCBpID0gMDsg aSA8IG5yYW5nZXM7IGkrKykKKwl7CisJCURhdHVtCW1heHZhbCA9IG1pbnJhbmdlc1tpXS0+ bWF4X3ZhbHVlOworCisJCS8qCisJCSAqIERldGVybWluZSBpbmRleCBvZiB0aGUgZmlyc3Qg cmFuZ2Ugd2l0aCAobWludmFsID4gY3VycmVudCBtYXh2YWwpCisJCSAqIGJ5IGJpbmFyeSBz ZWFyY2guIFdlIGtub3cgYWxsIG90aGVyIHJhbmdlcyBjYW4ndCBvdmVybGFwIHRoZQorCQkg KiBjdXJyZW50IG9uZS4gV2Ugc2ltcGx5IHN1YnRyYWN0IGluZGV4ZXMgdG8gY291bnQgcmFu Z2VzLgorCQkgKi8KKwkJaW50CQlpZHggPSBtaW52YWxfZW5kKG1pbnJhbmdlcywgbnJhbmdl cywgbWF4dmFsLCB0eXBjYWNoZSk7CisKKwkJLyogLTEgYmVjYXVzZSB3ZSBkb24ndCBjb3Vu dCB0aGUgcmFuZ2UgYXMgaW50ZXJzZWN0aW5nIHdpdGggaXRzZWxmICovCisJCW5vdmVybGFw cyArPSAoaWR4IC0gaSAtIDEpOworCX0KKworCS8qCisJICogV2Ugb25seSBjb3VudCAxLzIg dGhlIHJhbmdlcyAobWludmFsID4gY3VycmVudCBtaW52YWwpLCBzbyB0aGUgdG90YWwKKwkg KiBudW1iZXIgb2Ygb3ZlcmxhcHMgaXMgdHdpY2Ugd2hhdCB3ZSBjb3VudGVkLgorCSAqLwor CW5vdmVybGFwcyAqPSAyOworCisJc3RhdHMtPmF2Z19vdmVybGFwcyA9IChkb3VibGUpIG5v dmVybGFwcyAvIG5yYW5nZXM7Cit9CisKKy8qCisgKiBicmluX21pbm1heF9tYXRjaF90dXBs ZXNfdG9fcmFuZ2VzCisgKgkJTWF0Y2ggdHVwbGVzIHRvIHJhbmdlcywgY291bnQgYXZlcmFn ZSBudW1iZXIgb2YgcmFuZ2VzIHBlciB0dXBsZS4KKyAqCisgKiBBbHRlcm5hdGl2ZSB0byBi cmluX21pbm1heF9tYXRjaF90dXBsZXNfdG9fcmFuZ2VzMiwgbGV2ZXJhZ2luZyBvcmRlcmlu ZworICogb2YgdmFsdWVzLCBub3QgcmFuZ2VzLgorICoKKyAqIFhYWCBUaGlzIHNlZW1zIGxp a2UgdGhlIG9wdGltYWwgd2F5IHRvIGRvIHRoaXMuCisgKi8KK3N0YXRpYyB2b2lkCiticmlu X21pbm1heF9tYXRjaF90dXBsZXNfdG9fcmFuZ2VzKEJyaW5SYW5nZXMgKnJhbmdlcywKKwkJ CQkJCQkJICAgaW50IG51bXJvd3MsIEhlYXBUdXBsZSAqcm93cywKKwkJCQkJCQkJICAgaW50 IG52YWx1ZXMsIERhdHVtICp2YWx1ZXMsCisJCQkJCQkJCSAgIFR5cGVDYWNoZUVudHJ5ICp0 eXBjYWNoZSwKKwkJCQkJCQkJICAgQnJpbk1pbm1heFN0YXRzICpzdGF0cykKK3sKKwlpbnQ2 NAlubWF0Y2hlcyA9IDA7CisJaW50NjQJbm1hdGNoZXNfdW5pcXVlID0gMDsKKwlpbnQ2NAlu dmFsdWVzX3VuaXF1ZSA9IDA7CisKKwlpbnQ2NCAgKnVuaXF1ZSA9IChpbnQ2NCAqKSBwYWxs b2MwKHNpemVvZihpbnQ2NCkgKiBudmFsdWVzKTsKKworCS8qCisJICogQnVpbGQgcnVubmlu ZyBjb3VudCBvZiB1bmlxdWUgdmFsdWVzLiBXZSBrbm93IHRoZXJlIGFyZSB1bmlxdWVbaV0K KwkgKiB1bmlxdWUgdmFsdWVzIGluIHZhbHVlcyBhcnJheSB1cCB0byBpbmRleCAiaSIuCisJ ICovCisJdW5pcXVlWzBdID0gMTsKKwlmb3IgKGludCBpID0gMTsgaSA8IG52YWx1ZXM7IGkr KykKKwl7CisJCWlmIChyYW5nZV92YWx1ZXNfY21wKCZ2YWx1ZXNbaS0xXSwgJnZhbHVlc1tp XSwgdHlwY2FjaGUpID09IDApCisJCQl1bmlxdWVbaV0gPSB1bmlxdWVbaS0xXTsKKwkJZWxz ZQorCQkJdW5pcXVlW2ldID0gdW5pcXVlW2ktMV0gKyAxOworCX0KKworCW52YWx1ZXNfdW5p cXVlID0gdW5pcXVlW252YWx1ZXMtMV07CisKKwkvKgorCSAqIFdhbGsgdGhlIHJhbmdlcywg Zm9yIGVhY2ggcmFuZ2UgZGV0ZXJtaW5lIHRoZSBmaXJzdC9sYXN0IG1hcHBpbmcKKwkgKiB2 YWx1ZS4gVXNlIHRoZSAidW5pcXVlIiBhcnJheSB0byBjb3VudCB0aGUgdW5pcXVlIHZhbHVl cy4KKwkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlcy0+bnJhbmdlczsgaSsrKQor CXsKKwkJaW50CQlzdGFydCwKKwkJCQllbmQsCisJCQkJbnZhbHVlc19tYXRjaCwKKwkJCQlu dW5pcXVlX21hdGNoOworCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJc3RhcnQg PSBsb3dlcl9ib3VuZCh2YWx1ZXMsIG52YWx1ZXMsIHJhbmdlcy0+cmFuZ2VzW2ldLm1pbl92 YWx1ZSwgdHlwY2FjaGUpOworCQllbmQgPSB1cHBlcl9ib3VuZCh2YWx1ZXMsIG52YWx1ZXMs IHJhbmdlcy0+cmFuZ2VzW2ldLm1heF92YWx1ZSwgdHlwY2FjaGUpOworCisJCS8qIGlmIG5v dGhpbmcgbWF0Y2hlcyAoZS5nLiBlbmQ9MCksIHNraXAgdGhpcyByYW5nZSAqLworCQlpZiAo ZW5kIDw9IHN0YXJ0KQorCQkJY29udGludWU7CisKKwkJbnZhbHVlc19tYXRjaCA9IChlbmQg LSBzdGFydCArIDEpOworCQludW5pcXVlX21hdGNoID0gKHVuaXF1ZVtlbmRdIC0gdW5pcXVl W3N0YXJ0XSArIDEpOworCisJCUFzc2VydCgobnZhbHVlc19tYXRjaCA+PSAxKSAmJiAobnZh bHVlc19tYXRjaCA8PSBudmFsdWVzKSk7CisJCUFzc2VydCgobnVuaXF1ZV9tYXRjaCA+PSAx KSAmJiAobnVuaXF1ZV9tYXRjaCA8PSB1bmlxdWVbbnZhbHVlcy0xXSkpOworCisJCW5tYXRj aGVzICs9IG52YWx1ZXNfbWF0Y2g7CisJCW5tYXRjaGVzX3VuaXF1ZSArPSBudW5pcXVlX21h dGNoOworCX0KKworCUFzc2VydChubWF0Y2hlcyA+PSAwKTsKKwlBc3NlcnQobm1hdGNoZXNf dW5pcXVlID49IDApOworCisJc3RhdHMtPmF2Z19tYXRjaGVzID0gKGRvdWJsZSkgbm1hdGNo ZXMgLyBudW1yb3dzOworCXN0YXRzLT5hdmdfbWF0Y2hlc191bmlxdWUgPSAoZG91YmxlKSBu bWF0Y2hlc191bmlxdWUgLyBudmFsdWVzX3VuaXF1ZTsKK30KKworLyoKKyAqIGJyaW5fbWlu bWF4X3ZhbHVlX3N0YXRzCisgKgkJQ2FsY3VsYXRlIHN0YXRpc3RpY3MgYWJvdXQgbWludmFs L21heHZhbCB2YWx1ZXMuCisgKgorICogV2UgY2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgZGlz dGluY3QgdmFsdWVzLCBhbmQgYWxzbyBjb3JyZWxhdGlvbiB3aXRoIHJlc3BlY3QKKyAqIHRv IGJsa25vX3N0YXJ0LiBXZSBkb24ndCBjYWxjdWxhdGUgdGhlIHJlZ3VsYXIgY29ycmVsYXRp b24gY29lZmZpY2llbnQsIGJlY2F1c2UKKyAqIG91ciBnb2FsIGlzIHRvIGVzdGltYXRlIGhv dyBzZXF1ZW50aWFsIHRoZSBhY2Nlc3NlcyBhcmUuIFRoZSByZWd1bGFyIGNvcnJlbGF0aW9u CisgKiB3b3VsZCBwcm9kdWNlIDAgZm9yIGN5Y2xpY2FsIGRhdGEgc2V0cyBsaWtlIG1vZChp LDEwMDAwMDApLCBidXQgaXQgbWF5IGJlIHF1aXRlCisgKiBzZXF1YW50aWFsIGFjY2Vzcy4g TWF5YmUgaXQgc2hvdWxkIGJlIGNhbGxlZCBkaWZmZXJlbnRseSwgbm90IGNvcnJlbGF0aW9u PworICoKKyAqIFhYWCBNYXliZSB0aGlzIHNob3VsZCBjYWxjdWxhdGUgbWludmFsIHZzLiBt YXh2YWwgY29ycmVsYXRpb24gdG9vPworICoKKyAqIFhYWCBJIGRvbid0IGtub3cgaG93IGlt cG9ydGFudCB0aGUgc2VxdWVudGlhbGl0eSBpcyAtIEJSSU4gZ2VuZXJhbGx5IHVzZXMgMU1C CisgKiBwYWdlIHJhbmdlcywgd2hpY2ggaXMgcHJldHR5IHNlcXVlbnRpYWwgYW5kIHRoZSBv bmUgcmFuZG9tIHNlZWsgaW4gYmV0d2VlbiBpcworICogbGlrZWx5IGdvaW5nIHRvIGJlIG5l Z2xpZ2libGUuIE1heWJlIGZvciBzbWFsbCBwYWdlIHJhbmdlcyBpdCdsbCBtYXR0ZXIsIHRo b3VnaC4KKyAqLworc3RhdGljIHZvaWQKK2JyaW5fbWlubWF4X3ZhbHVlX3N0YXRzKEJyaW5S YW5nZSAqKm1pbnJhbmdlcywgQnJpblJhbmdlICoqbWF4cmFuZ2VzLAorCQkJCQkJaW50IG5y YW5nZXMsIFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwKKwkJCQkJCUJyaW5NaW5tYXhTdGF0 cyAqc3RhdHMpCit7CisJLyogKi8KKwlpbnQ2NAltaW52YWxfbmRpc3QgPSAxLAorCQkJbWF4 dmFsX25kaXN0ID0gMSwKKwkJCW1pbnZhbF9jb3JyID0gMCwKKwkJCW1heHZhbF9jb3JyID0g MDsKKworCWZvciAoaW50IGkgPSAxOyBpIDwgbnJhbmdlczsgaSsrKQorCXsKKwkJaWYgKHJh bmdlX3ZhbHVlc19jbXAoJm1pbnJhbmdlc1tpLTFdLT5taW5fdmFsdWUsICZtaW5yYW5nZXNb aV0tPm1pbl92YWx1ZSwgdHlwY2FjaGUpICE9IDApCisJCQltaW52YWxfbmRpc3QrKzsKKwor CQlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmbWF4cmFuZ2VzW2ktMV0tPm1heF92YWx1ZSwgJm1h eHJhbmdlc1tpXS0+bWF4X3ZhbHVlLCB0eXBjYWNoZSkgIT0gMCkKKwkJCW1heHZhbF9uZGlz dCsrOworCisJCS8qIGlzIGl0IGltbWVkaWF0ZWx5IHNlcXVlbnRpYWw/ICovCisJCWlmICht aW5yYW5nZXNbaS0xXS0+Ymxrbm9fZW5kICsgMSA9PSBtaW5yYW5nZXNbaV0tPmJsa25vX3N0 YXJ0KQorCQkJbWludmFsX2NvcnIrKzsKKworCQkvKiBpcyBpdCBpbW1lZGlhdGVseSBzZXF1 ZW50aWFsPyAqLworCQlpZiAobWF4cmFuZ2VzW2ktMV0tPmJsa25vX2VuZCArIDEgPT0gbWF4 cmFuZ2VzW2ldLT5ibGtub19zdGFydCkKKwkJCW1heHZhbF9jb3JyKys7CisJfQorCisJc3Rh dHMtPm1pbnZhbF9uZGlzdGluY3QgPSBtaW52YWxfbmRpc3Q7CisJc3RhdHMtPm1heHZhbF9u ZGlzdGluY3QgPSBtYXh2YWxfbmRpc3Q7CisKKwlzdGF0cy0+bWludmFsX2NvcnJlbGF0aW9u ID0gKGRvdWJsZSkgbWludmFsX2NvcnIgLyBucmFuZ2VzOworCXN0YXRzLT5tYXh2YWxfY29y cmVsYXRpb24gPSAoZG91YmxlKSBtYXh2YWxfY29yciAvIG5yYW5nZXM7Cit9CisKKy8qCisg KiBicmluX21pbm1heF9pbmNyZW1lbnRfc3RhdHMKKyAqCQlDYWxjdWxhdGUgdGhlIGluY3Jl bWVudCBzaXplIGZvciBtaW52YWwvbWF4dmFsIHN0ZXBzLgorICoKKyAqIENhbGN1bGF0ZXMg dGhlIG1pbnZhbC9tYXh2YWwgaW5jcmVtZW50IHNpemUsIGkuZS4gbnVtYmVyIG9mIHJvd3Mg dGhhdCBuZWVkCisgKiB0byBiZSBhZGRlZCB0byB0aGUgc29ydC4gVGhpcyBzZXJ2ZXMgYXMg YW4gaW5wdXQgdG8gY2FsY3VsYXRpb24gb2YgYSBnb29kCisgKiB3YXRlcm1hcmsgc3RlcC4K KyAqLworc3RhdGljIHZvaWQKK2JyaW5fbWlubWF4X2luY3JlbWVudF9zdGF0cyhCcmluUmFu Z2UgKiptaW5yYW5nZXMsIEJyaW5SYW5nZSAqKm1heHJhbmdlcywKKwkJCQkJCQlpbnQgbnJh bmdlcywgRGF0dW0gKnZhbHVlcywgaW50IG52YWx1ZXMsCisJCQkJCQkJVHlwZUNhY2hlRW50 cnkgKnR5cGNhY2hlLCBCcmluTWlubWF4U3RhdHMgKnN0YXRzKQoreworCS8qICovCisJaW50 NjQJbWludmFsX25kaXN0ID0gMSwKKwkJCW1heHZhbF9uZGlzdCA9IDE7CisKKwlkb3VibGUJ c3VtX21pbnZhbCA9IDAsCisJCQlzdW1fbWF4dmFsID0gMCwKKwkJCW1heF9taW52YWwgPSAw LAorCQkJbWF4X21heHZhbCA9IDA7CisKKwlmb3IgKGludCBpID0gMTsgaSA8IG5yYW5nZXM7 IGkrKykKKwl7CisJCWlmIChyYW5nZV92YWx1ZXNfY21wKCZtaW5yYW5nZXNbaS0xXS0+bWlu X3ZhbHVlLCAmbWlucmFuZ2VzW2ldLT5taW5fdmFsdWUsIHR5cGNhY2hlKSAhPSAwKQorCQl7 CisJCQlkb3VibGUJcDsKKwkJCWludAkJc3RhcnQgPSB1cHBlcl9ib3VuZCh2YWx1ZXMsIG52 YWx1ZXMsIG1pbnJhbmdlc1tpLTFdLT5taW5fdmFsdWUsIHR5cGNhY2hlKTsKKwkJCWludAkJ ZW5kID0gdXBwZXJfYm91bmQodmFsdWVzLCBudmFsdWVzLCBtaW5yYW5nZXNbaV0tPm1pbl92 YWx1ZSwgdHlwY2FjaGUpOworCisJCQkvKgorCQkJICogTWF5YmUgdGhlcmUgYXJlIG5vIG1h dGNoaW5nIHJvd3MsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIGNvdW50CisJCQkgKiB0aGlzIGFz IGRpc3RpbmN0IG1pbnZhbCAoZXZlbiB0aG91Z2ggdGhlIHNhbXBsZSBpbmNyZWFzZSBpcyAw KS4KKwkJCSAqLworCQkJbWludmFsX25kaXN0Kys7CisKKwkJCUFzc2VydChlbmQgPj0gc3Rh cnQpOworCisJCQkvKiBubyBzYW1wbGUgcm93cyBtYXRjaCB0aGlzLCBzbyBza2lwICovCisJ CQlpZiAoZW5kID09IHN0YXJ0KQorCQkJCWNvbnRpbnVlOworCisJCQlwID0gKGRvdWJsZSkg KGVuZCAtIHN0YXJ0KSAvIG52YWx1ZXM7CisKKwkJCW1heF9taW52YWwgPSBNYXgobWF4X21p bnZhbCwgcCk7CisJCQlzdW1fbWludmFsICs9IHA7CisJCX0KKworCQlpZiAocmFuZ2VfdmFs dWVzX2NtcCgmbWF4cmFuZ2VzW2ktMV0tPm1heF92YWx1ZSwgJm1heHJhbmdlc1tpXS0+bWF4 X3ZhbHVlLCB0eXBjYWNoZSkgIT0gMCkKKwkJeworCQkJZG91YmxlCXA7CisJCQlpbnQJCXN0 YXJ0ID0gdXBwZXJfYm91bmQodmFsdWVzLCBudmFsdWVzLCBtYXhyYW5nZXNbaS0xXS0+bWF4 X3ZhbHVlLCB0eXBjYWNoZSk7CisJCQlpbnQJCWVuZCA9IHVwcGVyX2JvdW5kKHZhbHVlcywg bnZhbHVlcywgbWF4cmFuZ2VzW2ldLT5tYXhfdmFsdWUsIHR5cGNhY2hlKTsKKworCQkJLyoK KwkJCSAqIE1heWJlIHRoZXJlIGFyZSBubyBtYXRjaGluZyByb3dzLCBidXQgd2Ugc3RpbGwg bmVlZCB0byBjb3VudAorCQkJICogdGhpcyBhcyBkaXN0aW5jdCBtYXh2YWwgKGV2ZW4gdGhv dWdoIHRoZSBzYW1wbGUgaW5jcmVhc2UgaXMgMCkuCisJCQkgKi8KKwkJCW1heHZhbF9uZGlz dCsrOworCisJCQlBc3NlcnQoZW5kID49IHN0YXJ0KTsKKworCQkJLyogbm8gc2FtcGxlIHJv d3MgbWF0Y2ggdGhpcywgc28gc2tpcCAqLworCQkJaWYgKGVuZCA9PSBzdGFydCkKKwkJCQlj b250aW51ZTsKKworCQkJcCA9IChkb3VibGUpIChlbmQgLSBzdGFydCkgLyBudmFsdWVzOwor CisJCQltYXhfbWF4dmFsID0gTWF4KG1heF9tYXh2YWwsIHApOworCQkJc3VtX21heHZhbCAr PSBwOworCQl9CisJfQorCisJc3RhdHMtPm1pbnZhbF9pbmNyZW1lbnRfYXZnID0gKHN1bV9t aW52YWwgLyBtaW52YWxfbmRpc3QpOworCXN0YXRzLT5taW52YWxfaW5jcmVtZW50X21heCA9 IG1heF9taW52YWw7CisKKwlzdGF0cy0+bWF4dmFsX2luY3JlbWVudF9hdmcgPSAoc3VtX21h eHZhbCAvIG1heHZhbF9uZGlzdCk7CisJc3RhdHMtPm1heHZhbF9pbmNyZW1lbnRfbWF4ID0g bWF4X21heHZhbDsKK30KKworLyoKKyAqIGJyaW5fbWlubWF4X3N0YXRzCisgKgkJQ2FsY3Vs YXRlIGN1c3RvbSBzdGF0aXN0aWNzIGZvciBhIEJSSU4gbWlubWF4IGluZGV4LgorICoKKyAq IEF0IHRoZSBtb21lbnQgdGhpcyBjYWxjdWxhdGVzOgorICoKKyAqICAtIG51bWJlciBvZiBz dW1tYXJpemVkL25vdC1zdW1tYXJpemVkIGFuZCBhbGwvaGFzIG51bGxzIHJhbmdlcworICog IC0gYXZlcmFnZSBudW1iZXIgb2Ygb3ZlcmxhcHMgZm9yIGEgcmFuZ2UKKyAqICAtIGF2ZXJh Z2UgbnVtYmVyIG9mIHJvd3MgbWF0Y2hpbmcgYSByYW5nZQorICogIC0gbnVtYmVyIG9mIGRp c3RpbmN0IG1pbnZhbC9tYXh2YWwgdmFsdWVzCisgKgorICogWFhYIFRoaXMgY291bGQgYWxz byBjYWxjdWxhdGUgY29ycmVsYXRpb24gb2YgdGhlIHJhbmdlIG1pbnZhbCwgc28gdGhhdAor ICogd2UgY2FuIGVzdGltYXRlIGhvdyBtdWNoIHJhbmRvbSBJL08gd2lsbCBoYXBwZW4gZHVy aW5nIHRoZSBCcmluU29ydC4KKyAqIEFuZCBwZXJoYXBzIHdlIHNob3VsZCBhbHNvIHNvcnQg dGhlIHJhbmdlcyBieSAobWludmFsLGJsb2NrX3N0YXJ0KSB0bworICogbWFrZSB0aGlzIGFz IHNlcXVlbnRpYWwgYXMgcG9zc2libGU/CisgKgorICogWFhYIEFub3RoZXIgaW50ZXJlc3Rp bmcgc3RhdGlzdGljcyBtaWdodCBiZSB0aGUgbnVtYmVyIG9mIHJhbmdlcyB3aXRoCisgKiB0 aGUgc2FtZSBtaW52YWwgKG9yIG51bWJlciBvZiBkaXN0aW5jdCBtaW52YWwgdmFsdWVzKSwg YmVjYXVzZSB0aGF0J3MKKyAqIGVzc2VudGlhbGx5IHdoYXQgd2UgbmVlZCB0byBlc3RpbWF0 ZSBob3cgbWFueSByYW5nZXMgd2lsbCBiZSByZWFkIGluCisgKiBvbmUgYnJpbnNvcnQgc3Rl cC4gSW4gZmFjdCwga25vd2luZyB0aGUgbnVtYmVyIG9mIGRpc3RpbmN0IG1pbnZhbAorICog dmFsdWVzIHRlbGxzIHVzIHRoZSBudW1iZXIgb2YgQnJpblNvcnQgbG9vcHMuCisgKgorICog WFhYIFdlIG1pZ2h0IGFsc28gY2FsY3VsYXRlIGEgaGlzdG9ncmFtIG9mIG1pbnZhbC9tYXh2 YWwgdmFsdWVzLgorICoKKyAqIFhYWCBJIHdvbmRlciBpZiB3ZSBjb3VsZCB0cmFjayBmb3Ig ZWFjaCByYW5nZSB0cmFjayBwcm9iYWJpbGl0aWVzOgorICoKKyAqIC0gUDEgPSBQKHYgPD0g bWludmFsKQorICogLSBQMiA9IFAoeCA8PSBNYXgobWF4dmFsKSkgZm9yIE1heChtYXh2YWwp IG92ZXIgcHJlY2VkaW5nIHJhbmdlcworICoKKyAqIFRoYXQgd291bGQgYWxsb3cgdXMgdG8g ZXN0aW1hdGUgaG93IG1hbnkgcmFuZ2VzIHdlJ2xsIGhhdmUgdG8gcmVhZCB0byBwcm9kdWNl CisgKiBhIHBhcnRpY3VsYXIgbnVtYmVyIG9mIHJvd3MsIGJlY2F1c2Ugd2UgbmVlZCB0aGUg Zmlyc3QgcHJvYmFiaWxpdHkgdG8gZXhjZWVkCisgKiB0aGUgcmVxdWVzdGVkIG51bWJlciBv ZiByb3dzIChmcmFjdGlvbiBvZiB0aGUgdGFibGUpOgorICoKKyAqICAgICAobGltaXQgcm93 cyAvIHJlbHR1cGxlcykgPD0gUCh2IDw9IG1pbnZhbCkKKyAqCisgKiBhbmQgdGhlbiB0aGUg c2Vjb25kIHByb2JhYmlsaXR5IHdvdWxkIHNheSBob3cgbWFueSByb3dzIHdlJ2xsIHByb2Nl c3MgKGVpdGhlcgorICogc29ydCBvciBzcGlsbCkuIEFuZCBpbnZlcnNlbHkgZm9yIHRoZSBE RVNDIG9yZGVyaW5nLgorICoKKyAqIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gUDEgZm9yIHR3 byByYW5nZXMgaXMgaG93IG11Y2ggd2UnZCBoYXZlIHRvIHNvcnQKKyAqIGlmIHdlIG1vdmVk IHRoZSB3YXRlcm1hcmsgYmV0d2VlbiB0aGUgcmFuZ2VzIChmaXJzdCBtaW52YWwgdG8gc2Vj b25kIG9uZSkuCisgKiBUaGUgKFAyIC0gUDEpIGZvciB0aGUgbmV3IHdhdGVybWFyayByYW5n ZSBtZWFzdXJlcyB0aGUgbnVtYmVyIG9mIHJvd3MgaW4KKyAqIHRoZSB0dXBsZXN0b3JlLiBX ZSdsbCBuZWVkIHRvIGFnZ3JlZ2F0ZSB0aGlzLCB0aG91Z2gsIHdlIGNhbid0IGtlZXAgdGhl CisgKiB3aG9sZSBkYXRhIC0gcHJvYmFibHkgYXZlcmFnZS9tZWRpYW4vbWF4IGZvciB0aGUg ZGlmZmVyZW5jZXMgd291bGQgYmUgbmljZS4KKyAqIE1pZ2h0IGJlIHRyaWNreSBmb3IgZGlm ZmVyZW50IHdhdGVybWFyayBzdGVwIHZhbHVlcywgdGhvdWdoLgorICoKKyAqIFRoaXMgd291 bGQgYWxzbyBhbGxvdyBlc3RpbWF0aW5nIGhvdyBtYW55IHJvd3Mgd2lsbCBzcGlsbCBmcm9t IGVhY2ggcmFuZ2UsCisgKiBiZWNhdXNlIHdlIGhhdmUgYW4gZXN0aW1hdGUgaG93IG1hbnkg cm93cyBtYXRjaCBhIHJhbmdlIG9uIGF2ZXJhZ2UsIGFuZAorICogd2UgY2FuIGNvbXBhcmUg aXQgdG8gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBQMS4KKyAqCisgKiBPbmUgaXNzdWUgaXMg d2UgZG9uJ3QgaGF2ZSBhY3R1YWwgdHVwbGVzIGZyb20gdGhlIHJhbmdlcywgc28gd2UgY2Fu J3QKKyAqIG1lYXN1cmUgZXhhY3RseSBob3cgbWFueSByb3dzIHdvdWxkIHdlIGFkZC4gQnV0 IHdlIGNhbiBtYXRjaCB0aGUgc2FtcGxlCisgKiBhbmQgYXQgbGVhc3QgZXN0aW1hdGUgdGhl IHRoZSBwcm9iYWJpbGl0eSBkaWZmZXJlbmNlLgorICoKKyAqIEFjdHVhbGx5IC0gd2UgZG8g a25vdyB0aGUgdHVwbGVzICphcmUqIGluIHRob3NlIHJhbmdlcywgYmVjYXVzZSBpZiB3ZQor ICogYXNzdW1lIHRoZSB0dXBsZSBpcyBpbiBzb21lIG90aGVyIHJhbmdlLCB0aGF0IHJhbmdl IHdvdWxkIGhhdmUgdG8gaGF2ZQorICogYSBtaW5pbWFsL21heGltYWwgdmFsdWUgc28gdGhh dCB0aGUgdmFsdWUgaXMgY29uc2lzdGVudC4gV2hpY2ggbWVhbnMKKyAqIHRoZSByYW5nZSBo YXMgdG8gYmUgYmV0d2VlbiB0aG9zZSByYW5nZXMuIE9mIGNvdXJzZSwgdGhpcyBvbmx5IGVz dGltYXRlcworICogdGhlIHJvd3Mgd2UnZCBnb2luZyB0byBhZGQgdG8gdGhlIHR1cGxlc29y dCAtIHRoZXJlIG1pZ2h0IGJlIG1vcmUgcm93cworICogd2UgcmVhZCBhbmQgc3BpbGwgdG8g dHVwbGVzdG9yZSwgYnV0IHRoYXQncyBzb21ldGhpbmcgd2UgY2FuIGVzdGltYXRlCisgKiB1 c2luZyBhdmVyYWdlIHR1cGxlcyBwZXIgcmFuZ2UuCisgKi8KK0RhdHVtCiticmluX21pbm1h eF9zdGF0cyhQR19GVU5DVElPTl9BUkdTKQoreworCVJlbGF0aW9uCQloZWFwUmVsID0gKFJl bGF0aW9uKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKwlSZWxhdGlvbgkJaW5kZXhSZWwgPSAo UmVsYXRpb24pIFBHX0dFVEFSR19QT0lOVEVSKDEpOworCUF0dHJOdW1iZXIJCWF0dG51bSA9 IFBHX0dFVEFSR19JTlQxNigyKTsJLyogaW5kZXggYXR0bnVtICovCisJQXR0ck51bWJlcgkJ aGVhcF9hdHRudW0gPSBQR19HRVRBUkdfSU5UMTYoMyk7CisJRXhwcgkJICAgKmV4cHIgPSAo RXhwciAqKSBQR19HRVRBUkdfUE9JTlRFUig0KTsKKwlIZWFwVHVwbGUJICAgKnJvd3MgPSAo SGVhcFR1cGxlICopIFBHX0dFVEFSR19QT0lOVEVSKDUpOworCWludAkJCQludW1yb3dzID0g UEdfR0VUQVJHX0lOVDMyKDYpOworCisJQnJpbk9wYXF1ZSAqb3BhcXVlOworCUJsb2NrTnVt YmVyIG5ibG9ja3M7CisJQmxvY2tOdW1iZXIJbnJhbmdlczsKKwlCbG9ja051bWJlcgloZWFw QmxrOworCUJyaW5NZW1UdXBsZSAqZHR1cDsKKwlCcmluVHVwbGUgICpidHVwID0gTlVMTDsK KwlTaXplCQlidHVwc3ogPSAwOworCUJ1ZmZlcgkJYnVmID0gSW52YWxpZEJ1ZmZlcjsKKwlC cmluUmFuZ2VzICAqcmFuZ2VzOworCUJsb2NrTnVtYmVyCXBhZ2VzUGVyUmFuZ2U7CisJQnJp bkRlc2MJICAgKmJkZXNjOworCUJyaW5NaW5tYXhTdGF0cyAqc3RhdHM7CisJRm9ybV9wZ19h dHRyaWJ1dGUgYXR0cjsKKworCU9pZAkJCQl0eXBvaWQ7CisJVHlwZUNhY2hlRW50cnkgKnR5 cGNhY2hlOworCUJyaW5SYW5nZQkgICoqbWlucmFuZ2VzLAorCQkJCSAgKiptYXhyYW5nZXM7 CisJaW50NjQJCQlwcmV2X21pbl9pbmRleDsKKworCS8qIGV4cHJlc3Npb24gc3RhdHMgKi8K KwlFU3RhdGUJICAgKmVzdGF0ZTsKKwlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisJRXhwclN0 YXRlICAqZXhwcnN0YXRlOworCVR1cGxlVGFibGVTbG90ICpzbG90OworCisJLyogYXR0bnVt IG9yIGV4cHJlc3Npb24gaGFzIHRvIGJlIHN1cHBsaWVkICovCisJQXNzZXJ0KEF0dHJpYnV0 ZU51bWJlcklzVmFsaWQoaGVhcF9hdHRudW0pIHx8IChleHByICE9IE5VTEwpKTsKKworCS8q IGJ1dCBub3QgYm90aCBvZiB0aGVtIGF0IHRoZSBzYW1lIHRpbWUgKi8KKwlBc3NlcnQoIShB dHRyaWJ1dGVOdW1iZXJJc1ZhbGlkKGhlYXBfYXR0bnVtKSAmJiAoZXhwciAhPSBOVUxMKSkp OworCisJLyoKKwkgKiBNb3N0bHkgd2hhdCBicmluYmVnaW5zY2FuIGRvZXMgdG8gaW5pdGlh bGl6ZSBCcmluT3BhcXVlLCBleGNlcHQgdGhhdAorCSAqIHdlIHVzZSBhY3RpdmUgc25hcHNo b3QgaW5zdGVhZCBvZiB0aGUgc2NhbiBzbmFwc2hvdC4KKwkgKi8KKwlvcGFxdWUgPSBwYWxs b2Nfb2JqZWN0KEJyaW5PcGFxdWUpOworCW9wYXF1ZS0+Ym9fcm1BY2Nlc3MgPSBicmluUmV2 bWFwSW5pdGlhbGl6ZShpbmRleFJlbCwKKwkJCQkJCQkJCQkJICAgJm9wYXF1ZS0+Ym9fcGFn ZXNQZXJSYW5nZSwKKwkJCQkJCQkJCQkJICAgR2V0QWN0aXZlU25hcHNob3QoKSk7CisJb3Bh cXVlLT5ib19iZGVzYyA9IGJyaW5fYnVpbGRfZGVzYyhpbmRleFJlbCk7CisKKwliZGVzYyA9 IG9wYXF1ZS0+Ym9fYmRlc2M7CisJcGFnZXNQZXJSYW5nZSA9IG9wYXF1ZS0+Ym9fcGFnZXNQ ZXJSYW5nZTsKKworCS8qIG1ha2Ugc3VyZSB0aGUgcHJvdmlkZWQgYXR0bnVtIGlzIHZhbGlk ICovCisJQXNzZXJ0KChhdHRudW0gPiAwKSAmJiAoYXR0bnVtIDw9IGJkZXNjLT5iZF90dXBk ZXNjLT5uYXR0cykpOworCisJLyogYXR0cmlidXRlIGluZm9ybWF0aW9uICovCisJYXR0ciA9 IFR1cGxlRGVzY0F0dHIoYmRlc2MtPmJkX3R1cGRlc2MsIGF0dG51bSAtIDEpOworCisJLyoK KwkgKiBXZSBuZWVkIHRvIGtub3cgdGhlIHNpemUgb2YgdGhlIHRhYmxlIHNvIHRoYXQgd2Ug a25vdyBob3cgbG9uZyB0byBpdGVyYXRlCisJICogb24gdGhlIHJldm1hcCAoYW5kIHRvIHBy ZS1hbGxvY2F0ZSB0aGUgYXJyYXlzKS4KKwkgKi8KKwluYmxvY2tzID0gUmVsYXRpb25HZXRO dW1iZXJPZkJsb2NrcyhoZWFwUmVsKTsKKworCS8qCisJICogSG93IG1hbnkgcmFuZ2VzIGNh biB0aGVyZSBiZT8gV2Ugc2ltcGx5IGxvb2sgYXQgdGhlIG51bWJlciBvZiBwYWdlcywKKwkg KiBkaXZpZGUgaXQgYnkgdGhlIHBhZ2VzX3Blcl9yYW5nZS4KKwkgKgorCSAqIFhYWCBXZSBu ZWVkIHRvIGJlIGNhcmVmdWwgbm90IHRvIG92ZXJmbG93IG5yYW5nZXMsIHNvIHdlIGp1c3Qg ZGl2aWRlCisJICogYW5kIHRoZW4gbWF5YmUgYWRkIDEgZm9yIHBhcnRpYWwgcmFuZ2VzLgor CSAqLworCW5yYW5nZXMgPSAobmJsb2NrcyAvIHBhZ2VzUGVyUmFuZ2UpOworCWlmIChuYmxv Y2tzICUgcGFnZXNQZXJSYW5nZSAhPSAwKQorCQlucmFuZ2VzICs9IDE7CisKKwkvKiBhbGxv Y2F0ZSBmb3Igc3BhY2UsIGFuZCBhbHNvIGZvciB0aGUgYWx0ZXJuYXRpdmUgb3JkZXJpbmcg Ki8KKwlyYW5nZXMgPSBwYWxsb2MwKG9mZnNldG9mKEJyaW5SYW5nZXMsIHJhbmdlcykgKyBu cmFuZ2VzICogc2l6ZW9mKEJyaW5SYW5nZSkpOworCXJhbmdlcy0+bnJhbmdlcyA9IDA7CisK KwkvKiBhbGxvY2F0ZSBhbiBpbml0aWFsIGluLW1lbW9yeSB0dXBsZSwgb3V0IG9mIHRoZSBw ZXItcmFuZ2UgbWVtY3h0ICovCisJZHR1cCA9IGJyaW5fbmV3X21lbXR1cGxlKGJkZXNjKTsK KworCS8qIHJlc3VsdCBzdGF0cyAqLworCXN0YXRzID0gcGFsbG9jMChzaXplb2YoQnJpbk1p bm1heFN0YXRzKSk7CisJU0VUX1ZBUlNJWkUoc3RhdHMsIHNpemVvZihCcmluTWlubWF4U3Rh dHMpKTsKKworCS8qCisJICogTm93IHNjYW4gdGhlIHJldm1hcC4gIFdlIHN0YXJ0IGJ5IHF1 ZXJ5aW5nIGZvciBoZWFwIHBhZ2UgMCwKKwkgKiBpbmNyZW1lbnRpbmcgYnkgdGhlIG51bWJl ciBvZiBwYWdlcyBwZXIgcmFuZ2U7IHRoaXMgZ2l2ZXMgdXMgYSBmdWxsCisJICogdmlldyBv ZiB0aGUgdGFibGUuCisJICoKKwkgKiBYWFggV2UgY291bnQgdGhlIHJhbmdlcywgYW5kIGNv dW50IHRoZSBzcGVjaWFsIHR5cGVzIChub3Qgc3VtbWFyaXplZCwKKwkgKiBhbGwtbnVsbCBh bmQgaGFzLW51bGwpLiBUaGUgcmVndWxhciByYW5nZXMgYXJlIGFjY3VtdWxhdGVkIGludG8g YW4KKwkgKiBhcnJheSwgc28gdGhhdCB3ZSBjYW4gY2FsY3VsYXRlIGFkZGl0aW9uYWwgc3Rh dGlzdGljcyAob3ZlcmxhcHMsIGhpdHMKKwkgKiBmb3Igc2FtcGxlIHR1cGxlcywgZXRjKS4K KwkgKgorCSAqIFhYWCBUaGlzIG5lZWRzIHJldGhpbmtpbmcgdG8gbWFrZSBpdCB3b3JrIHdp dGggbGFyZ2UgaW5kZXhlcyB3aXRoIG1vcmUKKwkgKiByYW5nZXMgdGhhbiB3ZSBjYW4gZml0 IGludG8gbWVtb3J5ICh3b3JrX21lbS9tYWludGVuYW5jZV93b3JrX21lbSkuCisJICovCisJ Zm9yIChoZWFwQmxrID0gMDsgaGVhcEJsayA8IG5ibG9ja3M7IGhlYXBCbGsgKz0gcGFnZXNQ ZXJSYW5nZSkKKwl7CisJCWJvb2wJCWdvdHR1cGxlID0gZmFsc2U7CisJCUJyaW5UdXBsZSAg KnR1cDsKKwkJT2Zmc2V0TnVtYmVyIG9mZjsKKwkJU2l6ZQkJc2l6ZTsKKworCQlzdGF0cy0+ bl9yYW5nZXMrKzsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCXR1cCA9IGJy aW5HZXRUdXBsZUZvckhlYXBCbG9jayhvcGFxdWUtPmJvX3JtQWNjZXNzLCBoZWFwQmxrLCAm YnVmLAorCQkJCQkJCQkJICAgJm9mZiwgJnNpemUsIEJVRkZFUl9MT0NLX1NIQVJFLAorCQkJ CQkJCQkJICAgR2V0QWN0aXZlU25hcHNob3QoKSk7CisJCWlmICh0dXApCisJCXsKKwkJCWdv dHR1cGxlID0gdHJ1ZTsKKwkJCWJ0dXAgPSBicmluX2NvcHlfdHVwbGUodHVwLCBzaXplLCBi dHVwLCAmYnR1cHN6KTsKKwkJCUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0sp OworCQl9CisKKwkJLyogUmFuZ2VzIHdpdGggbm8gaW5kZXhlZCB0dXBsZSBhcmUgaWdub3Jl ZCBmb3Igb3ZlcmxhcCBhbmFseXNpcy4gKi8KKwkJaWYgKCFnb3R0dXBsZSkKKwkJeworCQkJ Y29udGludWU7CisJCX0KKwkJZWxzZQorCQl7CisJCQlkdHVwID0gYnJpbl9kZWZvcm1fdHVw bGUoYmRlc2MsIGJ0dXAsIGR0dXApOworCQkJaWYgKGR0dXAtPmJ0X3BsYWNlaG9sZGVyKQor CQkJeworCQkJCS8qIFBsYWNlaG9sZGVycyBjYW4gYmUgaWdub3JlZCB0b28sIGFzIGlmIG5v dCBzdW1tYXJpemVkLiAqLworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJZWxzZQorCQkJewor CQkJCUJyaW5WYWx1ZXMgKmJ2YWw7CisKKwkJCQlidmFsID0gJmR0dXAtPmJ0X2NvbHVtbnNb YXR0bnVtIC0gMV07CisKKwkJCQkvKiBPSyB0aGlzIHJhbmdlIGlzIHN1bW1hcml6ZWQgKi8K KwkJCQlzdGF0cy0+bl9zdW1tYXJpemVkKys7CisKKwkJCQlpZiAoYnZhbC0+YnZfYWxsbnVs bHMpCisJCQkJCXN0YXRzLT5uX2FsbF9udWxscysrOworCisJCQkJaWYgKGJ2YWwtPmJ2X2hh c251bGxzKQorCQkJCQlzdGF0cy0+bl9oYXNfbnVsbHMrKzsKKworCQkJCWlmICghYnZhbC0+ YnZfYWxsbnVsbHMpCisJCQkJeworCQkJCQlCcmluUmFuZ2UgICpyYW5nZTsKKworCQkJCQly YW5nZSA9ICZyYW5nZXMtPnJhbmdlc1tyYW5nZXMtPm5yYW5nZXMrK107CisKKwkJCQkJcmFu Z2UtPmJsa25vX3N0YXJ0ID0gaGVhcEJsazsKKwkJCQkJcmFuZ2UtPmJsa25vX2VuZCA9IGhl YXBCbGsgKyAocGFnZXNQZXJSYW5nZSAtIDEpOworCisJCQkJCXJhbmdlLT5taW5fdmFsdWUg PSBkYXR1bUNvcHkoYnZhbC0+YnZfdmFsdWVzWzBdLAorCQkJCQkJCQkJCQkJIGF0dHItPmF0 dGJ5dmFsLCBhdHRyLT5hdHRsZW4pOworCQkJCQlyYW5nZS0+bWF4X3ZhbHVlID0gZGF0dW1D b3B5KGJ2YWwtPmJ2X3ZhbHVlc1sxXSwKKwkJCQkJCQkJCQkJCSBhdHRyLT5hdHRieXZhbCwg YXR0ci0+YXR0bGVuKTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlpZiAoYnVmICE9IElu dmFsaWRCdWZmZXIpCisJCVJlbGVhc2VCdWZmZXIoYnVmKTsKKworCS8qIGlmIHdlIGhhdmUg bm8gcmVndWxhciByYW5nZXMsIHdlJ3JlIGRvbmUgKi8KKwlpZiAocmFuZ2VzLT5ucmFuZ2Vz ID09IDApCisJCWdvdG8gY2xlYW51cDsKKworCS8qCisJICogQnVpbGQgYXV4aWxpYXJ5IGlu Zm8gdG8gb3B0aW1pemUgdGhlIGNhbGN1bGF0aW9uLgorCSAqCisJICogV2UgaGF2ZSByYW5n ZXMgaW4gdGhlIGJsb2NrbnVtIG9yZGVyLCBidXQgdGhhdCBpcyBub3QgdmVyeSB1c2VmdWwg d2hlbgorCSAqIGNhbGN1bGF0aW5nIHdoaWNoIHJhbmdlcyBpbnRlcnN0ZWN0IC0gd2UgY291 bGQgY3Jvc3MtY2hlY2sgZXZlcnkgcmFuZ2UKKwkgKiBhZ2FpbnN0IGV2ZXJ5IG90aGVyIHJh bmdlLCBidXQgdGhhdCdzIE8oTl4yKSBhbmQgdGh1cyBtYXkgZ2V0IGV4dHJlbWVseQorCSAq IGV4cGVuc2l2ZSBwcmV0dHkgcXVpY2spLgorCSAqCisJICogVG8gbWFrZSB0aGF0IGNoZWFw ZXIsIHdlJ2xsIGJ1aWxkIHR3byBvcmRlcmluZ3MsIGFsbG93aW5nIHVzIHRvIHF1aWNrbHkK KwkgKiBlbGltaW5hdGUgcmFuZ2VzIHRoYXQgY2FuJ3QgcG9zc2libHkgb3ZlcmxhcDoKKwkg KgorCSAqIC0gbWlucmFuZ2VzID0gcmFuZ2VzIG9yZGVyZWQgYnkgbWluX3ZhbHVlCisJICog LSBtYXhyYW5nZXMgPSByYW5nZXMgb3JkZXJlZCBieSBtYXhfdmFsdWUKKwkgKgorCSAqIFRv IGNvdW50IGludGVyc2VjdGlvbnMsIHdlJ2xsIHRoZW4gd2FsayBtYXhyYW5nZXMgKGkuZS4g cmFuZ2VzIG9yZGVyZWQKKwkgKiBieSBtYXh2YWwpLCBhbmQgZm9yIGVhY2ggZm9sbG93aW5n IHJhbmdlIHdlJ2xsIGNoZWNrIGlmIGl0IG92ZXJsYXBzLgorCSAqIElmIHllcywgd2UnbGwg cHJvY2VlZCB0byB0aGUgbmV4dCBvbmUsIHVudGlsIHdlIGZpbmQgYSByYW5nZSB0aGF0IGRv ZXMKKwkgKiBub3Qgb3ZlcmxhcC4gQnV0IHRoZXJlIG1pZ2h0IGJlIGEgbGF0ZXIgcGFnZSBv dmVybGFwcGluZyAtIGJ1dCB3ZSBjYW4KKwkgKiB1c2UgYSBtaW5faW5kZXhfbG93ZXN0IHRy YWNraW5nIHRoZSBtaW5pbXVtIG1pbl9pbmRleCBmb3IgImZ1dHVyZSIKKwkgKiByYW5nZXMg dG8gcXVpY2tseSBkZWNpZGUgaWYgdGhlcmUgYXJlIHN1Y2ggcmFuZ2VzLiBJZiB0aGVyZSBh cmUgbm9uZSwKKwkgKiB3ZSBjYW4gdGVybWluYXRlIChhbmQgcHJvY2VlZCB0byB0aGUgbmV4 dCBtYXhyYW5nZXMgZWxlbWVudCksIGVsc2Ugd2UKKwkgKiBoYXZlIHRvIHByb2Nlc3MgYWRk aXRpb25hbCByYW5nZXMuCisJICoKKwkgKiBOb3RlOiBUaGlzIG9ubHkgY291bnRzIG92ZXJs YXBzIHdpdGggcmFuZ2VzIHdpdGggbWF4X3ZhbHVlIGhpZ2hlciB0aGFuCisJICogdGhlIGN1 cnJlbnQgb25lIC0gd2Ugd2FudCB0byBjb3VudCBhbGwsIGJ1dCB0aGUgb3ZlcmxhcHMgd2l0 aCBwcmVjZWRpbmcKKwkgKiByYW5nZXMgaGF2ZSBhbHJlYWR5IGJlZW4gY291bnRlZCB3aGVu IHByb2Nlc3NpbmcgdGhvc2UgcHJlY2VkaW5nIHJhbmdlcy4KKwkgKiBUaGF0IGlzLCB3ZSds bCBlbmQgdXAgd2l0aCBjb3VudGluZyBlYWNoIG92ZXJsYXAganVzdCBmb3Igb25lIG9mIHRo b3NlCisJICogcmFuZ2VzLCBzbyB3ZSBnZXQgb25seSAxLzIgdGhlIGNvdW50LgorCSAqCisJ ICogTm90ZTogV2UgZG9uJ3QgY291bnQgdGhlIHJhbmdlIGFzIG92ZXJsYXBwaW5nIHdpdGgg aXRzZWxmLiBUaGlzIG5lZWRzCisJICogdG8gYmUgY29uc2lkZXJlZCBsYXRlciwgd2hlbiBh cHBseWluZyB0aGUgc3RhdGlzdGljcy4KKwkgKgorCSAqCisJICogWFhYIFRoaXMgd2lsbCBu b3Qgd29yayBmb3IgdmVyeSBtYW55IHJhbmdlcyAtIHdlIGNhbiBoYXZlIHVwIHRvIDJeMzIg b2YKKwkgKiB0aGVtLCBzbyBhbGxvY2F0aW5nIGEgfjMyQiBzdHJ1Y3QgZm9yIGVhY2ggd291 bGQgbmVlZCBhIGxvdCBvZiBtZW1vcnkuCisJICogTm90IHN1cmUgd2hhdCB0byBkbyBhYm91 dCB0aGF0LCBwZXJoYXBzIHdlIGNvdWxkIHNhbXBsZSBhIGNvdXBsZSByYW5nZXMKKwkgKiBh bmQgZG8gc29tZSBjYWxjdWxhdGlvbnMgYmFzZWQgb24gdGhhdD8gVGhhdCBpcywgd2UgY291 bGQgcHJvY2VzcyBhbGwKKwkgKiByYW5nZXMgdXAgdG8gc29tZSBudW1iZXIgKHNheSwgc3Rh dGlzdGljc190YXJnZXQgKiAzMDAsIGFzIGZvciByb3dzKSwgYW5kCisJICogdGhlbiBzYW1w bGUgcmFuZ2VzIGZvciBsYXJnZXIgdGFibGVzLiBUaGVuIHNvcnQgdGhlIHNhbXBsZWQgcmFu Z2VzLCBhbmQKKwkgKiB3YWxrIHRocm91Z2ggYWxsIHJhbmdlcyBvbmNlLCBjb21wYXJpbmcg dGhlbSB0byB0aGUgc2FtcGxlIGFuZCBjb3VudGluZworCSAqIG92ZXJsYXBzIChoYXZpbmcg dGhlbSBzb3J0ZWQgc2hvdWxkIGFsbG93IG1ha2luZyB0aGlzIHF1aXRlIGVmZmljaWVudCwK KwkgKiBJIHRoaW5rIC0gZm9sbG93aW5nIGFsZ29yaXRobSBzaW1pbGFyIHRvIHRoZSBvbmUg aW1wbGVtZW50ZWQgaGVyZSkuCisJICovCisKKwkvKiBpbmZvIGFib3V0IG9yZGVyaW5nIGZv ciB0aGUgZGF0YSB0eXBlICovCisJdHlwb2lkID0gZ2V0X2F0dHR5cGUoUmVsYXRpb25HZXRS ZWxpZChpbmRleFJlbCksIGF0dG51bSk7CisJdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNo ZSh0eXBvaWQsIFRZUEVDQUNIRV9DTVBfUFJPQ19GSU5GTyk7CisKKwkvKiBzaG91bGRuJ3Qg aGFwcGVuLCBJIHRoaW5rIC0gd2UgdXNlIHRoaXMgdG8gYnVpbGQgdGhlIGluZGV4ICovCisJ QXNzZXJ0KE9pZElzVmFsaWQodHlwY2FjaGUtPmNtcF9wcm9jX2ZpbmZvLmZuX29pZCkpOwor CisJbWlucmFuZ2VzID0gKEJyaW5SYW5nZSAqKikgcGFsbG9jMChyYW5nZXMtPm5yYW5nZXMg KiBzaXplb2YoQnJpblJhbmdlcyAqKSk7CisJbWF4cmFuZ2VzID0gKEJyaW5SYW5nZSAqKikg cGFsbG9jMChyYW5nZXMtPm5yYW5nZXMgKiBzaXplb2YoQnJpblJhbmdlcyAqKSk7CisKKwkv KgorCSAqIEJ1aWxkIGFuZCBzb3J0IHRoZSByYW5nZXMgbWluX3ZhbHVlIC8gbWF4X3ZhbHVl IChqdXN0IHBvaW50ZXJzCisJICogdG8gdGhlIG1haW4gYXJyYXkpLiBUaGVuIGdvIGFuZCBh c3NpZ24gdGhlIG1pbl9pbmRleCB0byBlYWNoCisJICogcmFuZ2UsIGFuZCBmaW5hbGx5IHdh bGsgdGhlIG1heHJhbmdlcyBhcnJheSBiYWNrd2FyZHMgYW5kIHRyYWNrCisJICogdGhlIG1p bl9pbmRleF9sb3dlc3QgYXMgbWluaW11bSBvZiAiZnV0dXJlIiBpbmRleGVzLgorCSAqLwor CWZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2VzLT5ucmFuZ2VzOyBpKyspCisJeworCQltaW5y YW5nZXNbaV0gPSAmcmFuZ2VzLT5yYW5nZXNbaV07CisJCW1heHJhbmdlc1tpXSA9ICZyYW5n ZXMtPnJhbmdlc1tpXTsKKwl9CisKKwlxc29ydF9hcmcobWlucmFuZ2VzLCByYW5nZXMtPm5y YW5nZXMsIHNpemVvZihCcmluUmFuZ2UgKiksCisJCQkgIHJhbmdlX21pbnZhbF9jbXAsIHR5 cGNhY2hlKTsKKworCXFzb3J0X2FyZyhtYXhyYW5nZXMsIHJhbmdlcy0+bnJhbmdlcywgc2l6 ZW9mKEJyaW5SYW5nZSAqKSwKKwkJCSAgcmFuZ2VfbWF4dmFsX2NtcCwgdHlwY2FjaGUpOwor CisJLyoKKwkgKiBVcGRhdGUgdGhlIG1pbl9pbmRleCBmb3IgZWFjaCByYW5nZS4gSWYgdGhl IHZhbHVlcyBhcmUgZXF1YWwsIGJlIHN1cmUgdG8KKwkgKiBwaWNrIHRoZSBsb3dlc3QgaW5k ZXggd2l0aCB0aGF0IG1pbl92YWx1ZS4KKwkgKi8KKwltaW5yYW5nZXNbMF0tPm1pbl9pbmRl eCA9IDA7CisJZm9yIChpbnQgaSA9IDE7IGkgPCByYW5nZXMtPm5yYW5nZXM7IGkrKykKKwl7 CisJCWlmIChyYW5nZV92YWx1ZXNfY21wKCZtaW5yYW5nZXNbaV0tPm1pbl92YWx1ZSwgJm1p bnJhbmdlc1tpLTFdLT5taW5fdmFsdWUsIHR5cGNhY2hlKSA9PSAwKQorCQkJbWlucmFuZ2Vz W2ldLT5taW5faW5kZXggPSBtaW5yYW5nZXNbaS0xXS0+bWluX2luZGV4OworCQllbHNlCisJ CQltaW5yYW5nZXNbaV0tPm1pbl9pbmRleCA9IGk7CisJfQorCisJLyoKKwkgKiBXYWxrIHRo ZSBtYXhyYW5nZXMgYmFja3dhcmQgYW5kIGFzc2lnbiB0aGUgbWluX2luZGV4X2xvd2VzdCBh cworCSAqIGEgcnVubmluZyBtaW5pbXVtLgorCSAqLworCXByZXZfbWluX2luZGV4ID0gcmFu Z2VzLT5ucmFuZ2VzOworCWZvciAoaW50IGkgPSAocmFuZ2VzLT5ucmFuZ2VzIC0gMSk7IGkg Pj0gMDsgaS0tKQorCXsKKwkJbWF4cmFuZ2VzW2ldLT5taW5faW5kZXhfbG93ZXN0ID0gTWlu KG1heHJhbmdlc1tpXS0+bWluX2luZGV4LAorCQkJCQkJCQkJCQkgcHJldl9taW5faW5kZXgp OworCQlwcmV2X21pbl9pbmRleCA9IG1heHJhbmdlc1tpXS0+bWluX2luZGV4X2xvd2VzdDsK Kwl9CisKKwkvKiBjYWxjdWxhdGUgYXZlcmFnZSBudW1iZXIgb2Ygb3ZlcmxhcHBpbmcgcmFu Z2VzIGZvciBhbnkgcmFuZ2UgKi8KKwlicmluX21pbm1heF9jb3VudF9vdmVybGFwcyhtaW5y YW5nZXMsIHJhbmdlcy0+bnJhbmdlcywgdHlwY2FjaGUsIHN0YXRzKTsKKworCS8qIGNhbGN1 bGF0ZSBtaW52YWwvbWF4dmFsIHN0YXRzIChkaXN0aW5jdCB2YWx1ZXMgYW5kIGNvcnJlbGF0 aW9uKSAqLworCWJyaW5fbWlubWF4X3ZhbHVlX3N0YXRzKG1pbnJhbmdlcywgbWF4cmFuZ2Vz LAorCQkJCQkJCXJhbmdlcy0+bnJhbmdlcywgdHlwY2FjaGUsIHN0YXRzKTsKKworCS8qCisJ ICogSWYgcHJvY2Vzc2luZyBleHByZXNzaW9uLCBwcmVwYXJlIGNvbnRleHQgdG8gZXZhbHVh dGUgaXQuCisJICoKKwkgKiBYWFggY2xlYW51cCAvIHJlZmFjdG9yaW5nIG5lZWRlZAorCSAq LworCWlmIChleHByKQorCXsKKwkJZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOwor CQllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKworCQkvKiBO ZWVkIGEgc2xvdCB0byBob2xkIHRoZSBjdXJyZW50IGhlYXAgdHVwbGUsIHRvbyAqLworCQlz bG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IoaGVhcFJl bCksCisJCQkJCQkJCQkJJlRUU09wc0hlYXBUdXBsZSk7CisKKwkJLyogQXJyYW5nZSBmb3Ig ZWNvbnRleHQncyBzY2FuIHR1cGxlIHRvIGJlIHRoZSB0dXBsZSB1bmRlciB0ZXN0ICovCisJ CWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNsb3Q7CisKKwkJZXhwcnN0YXRlID0gRXhl Y1ByZXBhcmVFeHByKGV4cHIsIGVzdGF0ZSk7CisJfQorCisJLyogbWF0Y2ggdHVwbGVzIHRv IHJhbmdlcyAqLworCXsKKwkJaW50CQludmFsdWVzID0gMDsKKwkJRGF0dW0gICp2YWx1ZXMg PSAoRGF0dW0gKikgcGFsbG9jMChudW1yb3dzICogc2l6ZW9mKERhdHVtKSk7CisKKwkJVHVw bGVEZXNjCXRkZXNjID0gUmVsYXRpb25HZXREZXNjcihoZWFwUmVsKTsKKworCQlmb3IgKGlu dCBpID0gMDsgaSA8IG51bXJvd3M7IGkrKykKKwkJeworCQkJYm9vbAlpc251bGw7CisJCQlE YXR1bQl2YWx1ZTsKKworCQkJaWYgKCFleHByKQorCQkJCXZhbHVlID0gaGVhcF9nZXRhdHRy KHJvd3NbaV0sIGhlYXBfYXR0bnVtLCB0ZGVzYywgJmlzbnVsbCk7CisJCQllbHNlCisJCQl7 CisJCQkJLyoKKwkJCQkgKiBSZXNldCB0aGUgcGVyLXR1cGxlIGNvbnRleHQgZWFjaCB0aW1l LCB0byByZWNsYWltIGFueSBjcnVmdAorCQkJCSAqIGxlZnQgYmVoaW5kIGJ5IGV2YWx1YXRp bmcgdGhlIHByZWRpY2F0ZSBvciBpbmRleCBleHByZXNzaW9ucy4KKwkJCQkgKi8KKwkJCQlS ZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKworCQkJCS8qIFNldCB1cCBmb3IgcHJlZGlj YXRlIG9yIGV4cHJlc3Npb24gZXZhbHVhdGlvbiAqLworCQkJCUV4ZWNTdG9yZUhlYXBUdXBs ZShyb3dzW2ldLCBzbG90LCBmYWxzZSk7CisKKwkJCQl2YWx1ZSA9IEV4ZWNFdmFsRXhwcihl eHByc3RhdGUsCisJCQkJCQkJCQkgR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpLAor CQkJCQkJCQkJICZpc251bGwpOworCQkJfQorCisJCQlpZiAoIWlzbnVsbCkKKwkJCQl2YWx1 ZXNbbnZhbHVlcysrXSA9IHZhbHVlOworCQl9CisKKwkJcXNvcnRfYXJnKHZhbHVlcywgbnZh bHVlcywgc2l6ZW9mKERhdHVtKSwgcmFuZ2VfdmFsdWVzX2NtcCwgdHlwY2FjaGUpOworCisJ CS8qIG9wdGltaXplZCBhbGdvcml0aG0gKi8KKwkJYnJpbl9taW5tYXhfbWF0Y2hfdHVwbGVz X3RvX3JhbmdlcyhyYW5nZXMsCisJCQkJCQkJCQkJICAgbnVtcm93cywgcm93cywgbnZhbHVl cywgdmFsdWVzLAorCQkJCQkJCQkJCSAgIHR5cGNhY2hlLCBzdGF0cyk7CisKKwkJYnJpbl9t aW5tYXhfaW5jcmVtZW50X3N0YXRzKG1pbnJhbmdlcywgbWF4cmFuZ2VzLCByYW5nZXMtPm5y YW5nZXMsCisJCQkJCQkJCQl2YWx1ZXMsIG52YWx1ZXMsIHR5cGNhY2hlLCBzdGF0cyk7CisJ fQorCisJLyogWFhYIGNsZWFudXAgLyByZWZhY3RvcmluZyBuZWVkZWQgKi8KKwlpZiAoZXhw cikKKwl7CisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJCUZyZWVF eGVjdXRvclN0YXRlKGVzdGF0ZSk7CisJfQorCisJLyoKKwkgKiBQb3NzaWJseSBxdWl0ZSBs YXJnZSwgc28gcmVsZWFzZSBleHBsaWNpdGx5IGFuZCBkb24ndCByZWx5CisJICogb24gdGhl IG1lbW9yeSBjb250ZXh0IHRvIGRpc2NhcmQgdGhpcy4KKwkgKi8KKwlwZnJlZShtaW5yYW5n ZXMpOworCXBmcmVlKG1heHJhbmdlcyk7CisKK2NsZWFudXA6CisJLyogcG9zc2libHkgcXVp dGUgbGFyZ2UsIHNvIHJlbGVhc2UgZXhwbGljaXRseSAqLworCXBmcmVlKHJhbmdlcyk7CisK KwkvKiBmcmVlIHRoZSBCcmluT3BhcXVlLCBqdXN0IGxpa2UgYnJpbmVuZHNjYW4oKSB3b3Vs ZCAqLworCWJyaW5SZXZtYXBUZXJtaW5hdGUob3BhcXVlLT5ib19ybUFjY2Vzcyk7CisJYnJp bl9mcmVlX2Rlc2Mob3BhcXVlLT5ib19iZGVzYyk7CisKKwlQR19SRVRVUk5fUE9JTlRFUihz dGF0cyk7Cit9CisKIC8qCiAgKiBDYWNoZSBhbmQgcmV0dXJuIHRoZSBwcm9jZWR1cmUgZm9y IHRoZSBnaXZlbiBzdHJhdGVneS4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKaW5kZXgg YmZkOTgxYWEzZi4uZmZjNzJmMjE4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpAQCAt MTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSA8bWF0aC5oPgogCisjaW5jbHVkZSAiYWNjZXNz L2JyaW5faW50ZXJuYWwuaCIKICNpbmNsdWRlICJhY2Nlc3MvZGV0b2FzdC5oIgogI2luY2x1 ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKQEAg LTMwLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKICNpbmNsdWRl ICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfYW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlv bi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfaW5oZXJpdHMuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX25hbWVzcGFjZS5oIgpAQCAtODEsNiArODMsNyBAQCB0eXBlZGVmIHN0cnVjdCBB bmxJbmRleERhdGEKIAogLyogRGVmYXVsdCBzdGF0aXN0aWNzIHRhcmdldCAoR1VDIHBhcmFt ZXRlcikgKi8KIGludAkJCWRlZmF1bHRfc3RhdGlzdGljc190YXJnZXQgPSAxMDA7Citib29s CQllbmFibGVfaW5kZXhhbV9zdGF0cyA9IGZhbHNlOwogCiAvKiBBIGZldyB2YXJpYWJsZXMg dGhhdCBkb24ndCBzZWVtIHdvcnRoIHBhc3NpbmcgYXJvdW5kIGFzIHBhcmFtZXRlcnMgKi8K IHN0YXRpYyBNZW1vcnlDb250ZXh0IGFubF9jb250ZXh0ID0gTlVMTDsKQEAgLTkyLDcgKzk1 LDcgQEAgc3RhdGljIHZvaWQgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLAogCQkJ CQkJICAgQWNxdWlyZVNhbXBsZVJvd3NGdW5jIGFjcXVpcmVmdW5jLCBCbG9ja051bWJlciBy ZWxwYWdlcywKIAkJCQkJCSAgIGJvb2wgaW5oLCBib29sIGluX291dGVyX3hhY3QsIGludCBl bGV2ZWwpOwogc3RhdGljIHZvaWQgY29tcHV0ZV9pbmRleF9zdGF0cyhSZWxhdGlvbiBvbmVy ZWwsIGRvdWJsZSB0b3RhbHJvd3MsCi0JCQkJCQkJCUFubEluZGV4RGF0YSAqaW5kZXhkYXRh LCBpbnQgbmluZGV4ZXMsCisJCQkJCQkJCUFubEluZGV4RGF0YSAqaW5kZXhkYXRhLCBSZWxh dGlvbiAqaW5kZXhSZWxzLCBpbnQgbmluZGV4ZXMsCiAJCQkJCQkJCUhlYXBUdXBsZSAqcm93 cywgaW50IG51bXJvd3MsCiAJCQkJCQkJCU1lbW9yeUNvbnRleHQgY29sX2NvbnRleHQpOwog c3RhdGljIFZhY0F0dHJTdGF0cyAqZXhhbWluZV9hdHRyaWJ1dGUoUmVsYXRpb24gb25lcmVs LCBpbnQgYXR0bnVtLApAQCAtNDU0LDE1ICs0NTcsNDkgQEAgZG9fYW5hbHl6ZV9yZWwoUmVs YXRpb24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkJewogCQkJQW5sSW5kZXhE YXRhICp0aGlzZGF0YSA9ICZpbmRleGRhdGFbaW5kXTsKIAkJCUluZGV4SW5mbyAgKmluZGV4 SW5mbzsKKwkJCWJvb2wJCWNvbGxlY3RBbVN0YXRzOworCQkJT2lkCQkJcmVncHJvYzsKIAog CQkJdGhpc2RhdGEtPmluZGV4SW5mbyA9IGluZGV4SW5mbyA9IEJ1aWxkSW5kZXhJbmZvKEly ZWxbaW5kXSk7CiAJCQl0aGlzZGF0YS0+dHVwbGVGcmFjdCA9IDEuMDsgLyogZml4IGxhdGVy IGlmIHBhcnRpYWwgKi8KLQkJCWlmIChpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zICE9IE5J TCAmJiB2YV9jb2xzID09IE5JTCkKKworCQkJLyoKKwkJCSAqIFNob3VsZCB3ZSBjb2xsZWN0 IEFNLXNwZWNpZmljIHN0YXRpc3RpY3MgZm9yIGFueSBvZiB0aGUgY29sdW1ucz8KKwkJCSAq CisJCQkgKiBJZiBBTS1zcGVjaWZpYyBzdGF0aXN0aWNzIGFyZSBlbmFibGVkICh1c2luZyBh IEdVQyksIHNlZSBpZiB3ZQorCQkJICogaGF2ZSBhbiBvcHRpb25hbCBzdXBwb3J0IHByb2Nl ZHVyZSB0byBidWlsZCB0aGUgc3RhdGlzdGljcy4KKwkJCSAqCisJCQkgKiBJZiB0aGVyZSdz IGFueSBzdWNoIGF0dHJpYnV0ZSwgd2UganVzdCBmb3JjZSBidWlsZGluZyBzdGF0cworCQkJ ICogZXZlbiBmb3IgcmVndWxhciBpbmRleCBrZXlzIChub3QganVzdCBleHByZXNzaW9ucykg YW5kIGluZGV4ZXMKKwkJCSAqIHdpdGhvdXQgcHJlZGljYXRlcy4gSXQnZCBiZSBnb29kIHRv IG9ubHkgYnVpbGQgdGhlIEFNIHN0YXRzLCBidXQKKwkJCSAqIGZvciBub3cgdGhpcyBpcyBn b29kIGVub3VnaC4KKwkJCSAqCisJCQkgKiBYWFggVGhlIEdVQyBpcyB0aGVyZSBtb3Jlc3Rs eSB0byBtYWtlIGl0IGVhc2llciB0byBlbmFibGUvZGlzYWJsZQorCQkJICogdGhpcyBkdXJp bmcgZGV2ZWxvcG1lbnQuCisJCQkgKgorCQkJICogRklYTUUgT25seSBidWlsZCB0aGUgQU0g c3RhdGlzdGljcywgbm90IHRoZSBvdGhlciBzdGF0cy4gQW5kIG9ubHkKKwkJCSAqIGRvIHRo YXQgZm9yIHRoZSBrZXlzIHdpdGggdGhlIG9wdGlvbmFsIHByb2NlZHVyZS4gbm90IGFsbCBv ZiB0aGVtLgorCQkJICovCisJCQljb2xsZWN0QW1TdGF0cyA9IGZhbHNlOworCQkJaWYgKGVu YWJsZV9pbmRleGFtX3N0YXRzICYmIChJcmVsW2luZF0tPnJkX2luZGFtLT5hbXN0YXRzcHJv Y251bSAhPSAwKSkKKwkJCXsKKwkJCQlmb3IgKGludCBqID0gMDsgaiA8IGluZGV4SW5mby0+ aWlfTnVtSW5kZXhBdHRyczsgaisrKQorCQkJCXsKKwkJCQkJcmVncHJvYyA9IGluZGV4X2dl dHByb2NpZChJcmVsW2luZF0sIChqKzEpLCBJcmVsW2luZF0tPnJkX2luZGFtLT5hbXN0YXRz cHJvY251bSk7CisJCQkJCWlmIChPaWRJc1ZhbGlkKHJlZ3Byb2MpKQorCQkJCQl7CisJCQkJ CQljb2xsZWN0QW1TdGF0cyA9IHRydWU7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0K KwkJCX0KKworCQkJaWYgKChpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zICE9IE5JTCB8fCBj b2xsZWN0QW1TdGF0cykgJiYgdmFfY29scyA9PSBOSUwpCiAJCQl7CiAJCQkJTGlzdENlbGwg ICAqaW5kZXhwcl9pdGVtID0gbGlzdF9oZWFkKGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMp OwogCiAJCQkJdGhpc2RhdGEtPnZhY2F0dHJzdGF0cyA9IChWYWNBdHRyU3RhdHMgKiopCi0J CQkJCXBhbGxvYyhpbmRleEluZm8tPmlpX051bUluZGV4QXR0cnMgKiBzaXplb2YoVmFjQXR0 clN0YXRzICopKTsKKwkJCQkJcGFsbG9jMChpbmRleEluZm8tPmlpX051bUluZGV4QXR0cnMg KiBzaXplb2YoVmFjQXR0clN0YXRzICopKTsKIAkJCQl0Y250ID0gMDsKIAkJCQlmb3IgKGkg PSAwOyBpIDwgaW5kZXhJbmZvLT5paV9OdW1JbmRleEF0dHJzOyBpKyspCiAJCQkJewpAQCAt NDgzLDYgKzUyMCwxMiBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1 bVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJaWYgKHRoaXNkYXRhLT52YWNhdHRyc3RhdHNbdGNu dF0gIT0gTlVMTCkKIAkJCQkJCQl0Y250Kys7CiAJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7 CisJCQkJCQl0aGlzZGF0YS0+dmFjYXR0cnN0YXRzW3RjbnRdID0KKwkJCQkJCQlleGFtaW5l X2F0dHJpYnV0ZShJcmVsW2luZF0sIGkgKyAxLCBOVUxMKTsKKwkJCQkJCXRjbnQrKzsKKwkJ CQkJfQogCQkJCX0KIAkJCQl0aGlzZGF0YS0+YXR0cl9jbnQgPSB0Y250OwogCQkJfQpAQCAt NTg4LDcgKzYzMSw3IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgVmFjdXVt UGFyYW1zICpwYXJhbXMsCiAKIAkJaWYgKG5pbmRleGVzID4gMCkKIAkJCWNvbXB1dGVfaW5k ZXhfc3RhdHMob25lcmVsLCB0b3RhbHJvd3MsCi0JCQkJCQkJCWluZGV4ZGF0YSwgbmluZGV4 ZXMsCisJCQkJCQkJCWluZGV4ZGF0YSwgSXJlbCwgbmluZGV4ZXMsCiAJCQkJCQkJCXJvd3Ms IG51bXJvd3MsCiAJCQkJCQkJCWNvbF9jb250ZXh0KTsKIApAQCAtODIzLDEyICs4NjYsOTMg QEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFt cywKIAlhbmxfY29udGV4dCA9IE5VTEw7CiB9CiAKKy8qCisgKiBjb21wdXRlX2luZGV4YW1f c3RhdHMKKyAqCQlDYWxsIHRoZSBvcHRpb25hbCBwcm9jZWR1cmUgdG8gY29tcHV0ZSBBTS1z cGVjaWZpYyBzdGF0aXN0aWNzLgorICoKKyAqIFdlIHNpbXBseSBjYWxsIHRoZSBwcm9jZWR1 cmUsIHdoaWNoIGlzIGV4cGVjdGVkIHRvIHByb2R1Y2UgYSBieXRlYSB2YWx1ZS4KKyAqCisg KiBBdCB0aGUgbW9tZW50IHRoaXMgb25seSBkZWFscyB3aXRoIEJSSU4gaW5kZXhlcywgYW5k IGJhaWxzIG91dCBmb3Igb3RoZXIKKyAqIGFjY2VzcyBtZXRob2RzLCBidXQgaXQgc2hvdWxk IGJlIGdlbmVyaWMgLSB1c2Ugc29tZXRoaW5nIGxpa2UgYW1vcHRzcHJvY251bQorICogYW5k IGp1c3QgY2hlY2sgaWYgdGhlIHByb2NlZHVyZSBleGlzdHMuCisgKi8KK3N0YXRpYyB2b2lk Citjb21wdXRlX2luZGV4YW1fc3RhdHMoUmVsYXRpb24gb25lcmVsLAorCQkJCQkgIFJlbGF0 aW9uIGluZGV4UmVsLCBJbmRleEluZm8gKmluZGV4SW5mbywKKwkJCQkJICBkb3VibGUgdG90 YWxyb3dzLCBBbmxJbmRleERhdGEgKmluZGV4ZGF0YSwKKwkJCQkJICBIZWFwVHVwbGUgKnJv d3MsIGludCBudW1yb3dzKQoreworCWludAkJZXhwcmlkeDsKKworCWlmICghZW5hYmxlX2lu ZGV4YW1fc3RhdHMpCisJCXJldHVybjsKKworCS8qIGlnbm9yZSBpbmRleCBBTXMgd2l0aG91 dCB0aGUgb3B0aW9uYWwgcHJvY2VkdXJlICovCisJaWYgKGluZGV4UmVsLT5yZF9pbmRhbS0+ YW1zdGF0c3Byb2NudW0gPT0gMCkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBMb29rIGF0IGF0 dHJpYnV0ZXMsIGFuZCBjYWxjdWxhdGUgc3RhdHMgZm9yIHRob3NlIHRoYXQgaGF2ZSB0aGUK KwkgKiBvcHRpb25hbCBzdGF0cyBwcm9jIGZvciB0aGUgb3BmYW1pbHkuCisJICovCisJZXhw cmlkeCA9IDA7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRleEluZm8tPmlpX051bUluZGV4 QXR0cnM7IGkrKykKKwl7CisJCUF0dHJOdW1iZXIJCWF0dG5vID0gKGkgKyAxKTsKKwkJQXR0 ck51bWJlcgkJYXR0bnVtID0gaW5kZXhJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2ldOwkv KiBoZWFwIGF0dG51bSAqLworCQlSZWdQcm9jZWR1cmUJcmVncHJvYzsKKwkJRm1nckluZm8J ICAgKnN0YXRzcHJvYzsKKwkJRGF0dW0JCQlkYXR1bTsKKwkJVmFjQXR0clN0YXRzICAgKnN0 YXRzOworCQlNZW1vcnlDb250ZXh0CW9sZGN4dDsKKwkJTm9kZQkJICAgKmV4cHIgPSBOVUxM OworCisJCWlmICghQXR0cmlidXRlTnVtYmVySXNWYWxpZChhdHRudW0pKQorCQl7CisJCQll eHByID0gKE5vZGUgKikgbGlzdF9udGgoUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zKGlu ZGV4UmVsKSwKKwkJCQkJCQkJCSBleHByaWR4KTsKKwkJCWV4cHJpZHgrKzsKKwkJfQorCisJ CS8qIGRvIHRoaXMgZmlyc3QsIGFzIGl0IGRvZXNuJ3QgZmFpbCB3aGVuIHByb2Mgbm90IGRl ZmluZWQgKi8KKwkJcmVncHJvYyA9IGluZGV4X2dldHByb2NpZChpbmRleFJlbCwgYXR0bm8s IGluZGV4UmVsLT5yZF9pbmRhbS0+YW1zdGF0c3Byb2NudW0pOworCisJCS8qIGlnbm9yZSBv cGNsYXNzZXMgd2l0aG91dCB0aGUgb3B0aW9uYWwgcHJvY2VkdXJlICovCisJCWlmICghUmVn UHJvY2VkdXJlSXNWYWxpZChyZWdwcm9jKSkKKwkJCWNvbnRpbnVlOworCisJCXN0YXRzcHJv YyA9IGluZGV4X2dldHByb2NpbmZvKGluZGV4UmVsLCBhdHRubywgaW5kZXhSZWwtPnJkX2lu ZGFtLT5hbXN0YXRzcHJvY251bSk7CisJCUFzc2VydChzdGF0c3Byb2MgIT0gTlVMTCk7CisK KwkJc3RhdHMgPSBpbmRleGRhdGEtPnZhY2F0dHJzdGF0c1tpXTsKKworCQlvbGRjeHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oc3RhdHMtPmFubF9jb250ZXh0KTsKKworCQkvKiBjYWxs IHRoZSBwcm9jLCBsZXQgdGhlIEFNIGNhbGN1bGF0ZSB3aGF0ZXZlciBpdCB3YW50cyAqLwor CQkvKiBYWFggbWF5YmUgd2Ugc2hvdWxkIGp1c3QgcGFzcyB0aGUgaW5kZXggYXR0bm8gYW5k IGxlYXZlIHRoZQorCQkgKiBleHByZXNzaW9uIGhhbmRsaW5nIHVwIHRvIHRoZSBwcm9jZWR1 cmU/ICovCisJCWRhdHVtID0gRnVuY3Rpb25DYWxsN0NvbGwoc3RhdHNwcm9jLAorCQkJCQkJ CQkgIEludmFsaWRPaWQsIC8qIEZJWE1FIGNvcnJlY3QgY29sbGF0aW9uICovCisJCQkJCQkJ CSAgUG9pbnRlckdldERhdHVtKG9uZXJlbCksCisJCQkJCQkJCSAgUG9pbnRlckdldERhdHVt KGluZGV4UmVsKSwKKwkJCQkJCQkJICBJbnQxNkdldERhdHVtKGF0dG5vKSwKKwkJCQkJCQkJ ICBJbnQxNkdldERhdHVtKGF0dG51bSksCisJCQkJCQkJCSAgUG9pbnRlckdldERhdHVtKGV4 cHIpLAorCQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bShyb3dzKSwKKwkJCQkJCQkJICBJbnQz MkdldERhdHVtKG51bXJvd3MpKTsKKworCQlzdGF0cy0+c3RhaW5kZXhhbSA9IGRhdHVtOwor CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCX0KK30KKwogLyoKICAqIENv bXB1dGUgc3RhdGlzdGljcyBhYm91dCBpbmRleGVzIG9mIGEgcmVsYXRpb24KICAqLwogc3Rh dGljIHZvaWQKIGNvbXB1dGVfaW5kZXhfc3RhdHMoUmVsYXRpb24gb25lcmVsLCBkb3VibGUg dG90YWxyb3dzLAotCQkJCQlBbmxJbmRleERhdGEgKmluZGV4ZGF0YSwgaW50IG5pbmRleGVz LAorCQkJCQlBbmxJbmRleERhdGEgKmluZGV4ZGF0YSwgUmVsYXRpb24gKmluZGV4UmVscywg aW50IG5pbmRleGVzLAogCQkJCQlIZWFwVHVwbGUgKnJvd3MsIGludCBudW1yb3dzLAogCQkJ CQlNZW1vcnlDb250ZXh0IGNvbF9jb250ZXh0KQogewpAQCAtODQ4LDYgKzk3Miw3IEBAIGNv bXB1dGVfaW5kZXhfc3RhdHMoUmVsYXRpb24gb25lcmVsLCBkb3VibGUgdG90YWxyb3dzLAog CXsKIAkJQW5sSW5kZXhEYXRhICp0aGlzZGF0YSA9ICZpbmRleGRhdGFbaW5kXTsKIAkJSW5k ZXhJbmZvICAqaW5kZXhJbmZvID0gdGhpc2RhdGEtPmluZGV4SW5mbzsKKwkJUmVsYXRpb24J aW5kZXhSZWwgPSBpbmRleFJlbHNbaW5kXTsKIAkJaW50CQkJYXR0cl9jbnQgPSB0aGlzZGF0 YS0+YXR0cl9jbnQ7CiAJCVR1cGxlVGFibGVTbG90ICpzbG90OwogCQlFU3RhdGUJICAgKmVz dGF0ZTsKQEAgLTg2MCw2ICs5ODUsMTMgQEAgY29tcHV0ZV9pbmRleF9zdGF0cyhSZWxhdGlv biBvbmVyZWwsIGRvdWJsZSB0b3RhbHJvd3MsCiAJCQkJCXJvd25vOwogCQlkb3VibGUJCXRv dGFsaW5kZXhyb3dzOwogCisJCS8qCisJCSAqIElmIHRoaXMgaXMgYSBCUklOIGluZGV4LCB0 cnkgY2FsbGluZyBhIHByb2NlZHVyZSB0byBjb2xsZWN0CisJCSAqIGV4dHJhIG9wZmFtaWx5 LXNwZWNpZmljIHN0YXRpc3RpY3MgKGlmIHByb2NlZHVyZSBkZWZpbmVkKS4KKwkJICovCisJ CWNvbXB1dGVfaW5kZXhhbV9zdGF0cyhvbmVyZWwsIGluZGV4UmVsLCBpbmRleEluZm8sIHRv dGFscm93cywKKwkJCQkJCQkgIHRoaXNkYXRhLCByb3dzLCBudW1yb3dzKTsKKwogCQkvKiBJ Z25vcmUgaW5kZXggaWYgbm8gY29sdW1ucyB0byBhbmFseXplIGFuZCBub3QgcGFydGlhbCAq LwogCQlpZiAoYXR0cl9jbnQgPT0gMCAmJiBpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSA9PSBO SUwpCiAJCQljb250aW51ZTsKQEAgLTE2NjIsNiArMTc5NCwxMyBAQCB1cGRhdGVfYXR0c3Rh dHMoT2lkIHJlbGlkLCBib29sIGluaCwgaW50IG5hdHRzLCBWYWNBdHRyU3RhdHMgKip2YWNh dHRyc3RhdHMpCiAJCXZhbHVlc1tBbnVtX3BnX3N0YXRpc3RpY19zdGFudWxsZnJhYyAtIDFd ID0gRmxvYXQ0R2V0RGF0dW0oc3RhdHMtPnN0YW51bGxmcmFjKTsKIAkJdmFsdWVzW0FudW1f cGdfc3RhdGlzdGljX3N0YXdpZHRoIC0gMV0gPSBJbnQzMkdldERhdHVtKHN0YXRzLT5zdGF3 aWR0aCk7CiAJCXZhbHVlc1tBbnVtX3BnX3N0YXRpc3RpY19zdGFkaXN0aW5jdCAtIDFdID0g RmxvYXQ0R2V0RGF0dW0oc3RhdHMtPnN0YWRpc3RpbmN0KTsKKworCQkvKiBvcHRpb25hbCBB TS1zcGVjaWZpYyBzdGF0cyAqLworCQlpZiAoRGF0dW1HZXRQb2ludGVyKHN0YXRzLT5zdGFp bmRleGFtKSAhPSBOVUxMKQorCQkJdmFsdWVzW0FudW1fcGdfc3RhdGlzdGljX3N0YWluZGV4 YW0gLSAxXSA9IHN0YXRzLT5zdGFpbmRleGFtOworCQllbHNlCisJCQludWxsc1tBbnVtX3Bn X3N0YXRpc3RpY19zdGFpbmRleGFtIC0gMV0gPSB0cnVlOworCiAJCWkgPSBBbnVtX3BnX3N0 YXRpc3RpY19zdGFraW5kMSAtIDE7CiAJCWZvciAoayA9IDA7IGsgPCBTVEFUSVNUSUNfTlVN X1NMT1RTOyBrKyspCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3Mv ZXh0ZW5kZWRfc3RhdHMuYyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3Rh dHMuYwppbmRleCA5ZjY3YTU3NzI0Li4zZTY2ZjZjYjJjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rh dGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCkBAIC0yMzQ1LDYgKzIzNDUsOCBAQCBzZXJpYWxp emVfZXhwcl9zdGF0cyhBbmxFeHByRGF0YSAqZXhwcmRhdGEsIGludCBuZXhwcnMpCiAJCXZh bHVlc1tBbnVtX3BnX3N0YXRpc3RpY19zdGFudWxsZnJhYyAtIDFdID0gRmxvYXQ0R2V0RGF0 dW0oc3RhdHMtPnN0YW51bGxmcmFjKTsKIAkJdmFsdWVzW0FudW1fcGdfc3RhdGlzdGljX3N0 YXdpZHRoIC0gMV0gPSBJbnQzMkdldERhdHVtKHN0YXRzLT5zdGF3aWR0aCk7CiAJCXZhbHVl c1tBbnVtX3BnX3N0YXRpc3RpY19zdGFkaXN0aW5jdCAtIDFdID0gRmxvYXQ0R2V0RGF0dW0o c3RhdHMtPnN0YWRpc3RpbmN0KTsKKwkJbnVsbHNbQW51bV9wZ19zdGF0aXN0aWNfc3RhaW5k ZXhhbSAtIDFdID0gdHJ1ZTsKKwogCQlpID0gQW51bV9wZ19zdGF0aXN0aWNfc3Rha2luZDEg LSAxOwogCQlmb3IgKGsgPSAwOyBrIDwgU1RBVElTVElDX05VTV9TTE9UUzsgaysrKQogCQl7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IGM0ZmNkMDA3NmUuLjEwNThhOGQ1 MTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCkBAIC03ODM0LDYgKzc4MzQsNyBA QCBicmluY29zdGVzdGltYXRlKFBsYW5uZXJJbmZvICpyb290LCBJbmRleFBhdGggKnBhdGgs IGRvdWJsZSBsb29wX2NvdW50LAogCVJlbGF0aW9uCWluZGV4UmVsOwogCUxpc3RDZWxsICAg Kmw7CiAJVmFyaWFibGVTdGF0RGF0YSB2YXJkYXRhOworCWRvdWJsZQkJYXZlcmFnZU92ZXJs YXBzOwogCiAJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pOwogCkBAIC03 ODgxLDYgKzc4ODIsNyBAQCBicmluY29zdGVzdGltYXRlKFBsYW5uZXJJbmZvICpyb290LCBJ bmRleFBhdGggKnBhdGgsIGRvdWJsZSBsb29wX2NvdW50LAogCSAqIGNvcnJlbGF0aW9uIHN0 YXRpc3RpY3MsIHdlIHdpbGwga2VlcCBpdCBhcyAwLgogCSAqLwogCSppbmRleENvcnJlbGF0 aW9uID0gMDsKKwlhdmVyYWdlT3ZlcmxhcHMgPSAwLjA7CiAKIAlmb3JlYWNoKGwsIHBhdGgt PmluZGV4Y2xhdXNlcykKIAl7CkBAIC03ODkwLDYgKzc4OTIsMzYgQEAgYnJpbmNvc3Rlc3Rp bWF0ZShQbGFubmVySW5mbyAqcm9vdCwgSW5kZXhQYXRoICpwYXRoLCBkb3VibGUgbG9vcF9j b3VudCwKIAkJLyogYXR0ZW1wdCB0byBsb29rdXAgc3RhdHMgaW4gcmVsYXRpb24gZm9yIHRo aXMgaW5kZXggY29sdW1uICovCiAJCWlmIChhdHRudW0gIT0gMCkKIAkJeworCQkJLyoKKwkJ CSAqIElmIEFNLXNwZWNpZmljIHN0YXRpc3RpY3MgYXJlIGVuYWJsZWQsIHRyeSBsb29raW5n IHVwIHRoZSBzdGF0cworCQkJICogZm9yIHRoZSBpbmRleCBrZXkuIFdlIG9ubHkgaGF2ZSB0 aGlzIGZvciBtaW5tYXggb3BjbGFzc2VzLCBzbworCQkJICogd2UganVzdCBjYXN0IGl0IGxp a2UgdGhhdC4gQnV0IG90aGVyIEJSSU4gb3BjbGFzc2VzIG1pZ2h0IG5lZWQKKwkJCSAqIG90 aGVyIHN0YXRzIHNvIGVpdGhlciB3ZSBuZWVkIHRvIGFic3RyYWN0IHRoaXMgc29tZWhvdywg b3IgbWF5YmUKKwkJCSAqIGp1c3QgY29sbGVjdCBhIHN1ZmZpY2llbnRseSBnZW5lcmljIHN0 YXRzIGZvciBhbGwgQlJJTiBpbmRleGVzLgorCQkJICoKKwkJCSAqIFhYWCBNYWtlIHRoaXMg bm9uLW1pbm1heCBzcGVjaWZpYy4KKwkJCSAqLworCQkJaWYgKGVuYWJsZV9pbmRleGFtX3N0 YXRzKQorCQkJeworCQkJCUJyaW5NaW5tYXhTdGF0cyAgKmFtc3RhdHMKKwkJCQkJPSAoQnJp bk1pbm1heFN0YXRzICopIGdldF9hdHRpbmRleGFtKGluZGV4LT5pbmRleG9pZCwgYXR0bnVt KTsKKworCQkJCWlmIChhbXN0YXRzKQorCQkJCXsKKwkJCQkJZWxvZyhERUJVRzEsICJmb3Vu ZCBBTSBzdGF0czogYXR0bnVtICVkIG5fcmFuZ2VzICVsbGQgbl9zdW1tYXJpemVkICVsbGQg bl9hbGxfbnVsbHMgJWxsZCBuX2hhc19udWxscyAlbGxkIGF2Z19vdmVybGFwcyAlZiIsCisJ CQkJCQkgYXR0bnVtLCAobG9uZyBsb25nKWFtc3RhdHMtPm5fcmFuZ2VzLCAobG9uZyBsb25n KWFtc3RhdHMtPm5fc3VtbWFyaXplZCwKKwkJCQkJCSAobG9uZyBsb25nKWFtc3RhdHMtPm5f YWxsX251bGxzLCAobG9uZyBsb25nKWFtc3RhdHMtPm5faGFzX251bGxzLAorCQkJCQkJIGFt c3RhdHMtPmF2Z19vdmVybGFwcyk7CisKKwkJCQkJLyoKKwkJCQkJICogVGhlIG9ubHkgdGhp bmcgd2UgdXNlIGF0IHRoZSBtb21lbnQgaXMgdGhlIGF2ZXJhZ2UgbnVtYmVyCisJCQkJCSAq IG9mIG92ZXJsYXBzIGZvciBhIHNpbmdsZSByYW5nZS4gVXNlIHRoZSBvdGhlciBzdHVmZiB0 b28uCisJCQkJCSAqLworCQkJCQlhdmVyYWdlT3ZlcmxhcHMgPSBNYXgoYXZlcmFnZU92ZXJs YXBzLAorCQkJCQkJCQkJCSAgMS4wICsgYW1zdGF0cy0+YXZnX292ZXJsYXBzKTsKKwkJCQl9 CisJCQl9CisKIAkJCS8qIFNpbXBsZSB2YXJpYWJsZSAtLSBsb29rIHRvIHN0YXRzIGZvciB0 aGUgdW5kZXJseWluZyB0YWJsZSAqLwogCQkJaWYgKGdldF9yZWxhdGlvbl9zdGF0c19ob29r ICYmCiAJCQkJKCpnZXRfcmVsYXRpb25fc3RhdHNfaG9vaykgKHJvb3QsIHJ0ZSwgYXR0bnVt LCAmdmFyZGF0YSkpCkBAIC03OTcwLDYgKzgwMDIsMTQgQEAgYnJpbmNvc3Rlc3RpbWF0ZShQ bGFubmVySW5mbyAqcm9vdCwgSW5kZXhQYXRoICpwYXRoLCBkb3VibGUgbG9vcF9jb3VudCwK IAkJCQkJCQkJCQkJIGJhc2VyZWwtPnJlbGlkLAogCQkJCQkJCQkJCQkgSk9JTl9JTk5FUiwg TlVMTCk7CiAKKwkvKgorCSAqIFhYWCBDYW4gd2UgY29tYmluZSBxdWFsU2VsZWN0aXZpdHkg d2l0aCB0aGUgYXZlcmFnZSBudW1iZXIgb2YgbWF0Y2hpbmcKKwkgKiByYW5nZXMgcGVyIHZh bHVlPyBxdWFsU2VsZWN0aXZpdHkgZXN0aW1hdGVzIGhvdyBtYW55IHR1cGxlcyBhciB3ZQor CSAqIGdvaW5nIHRvIG1hdGNoLCBhbmQgYXZlcmFnZSBudW1iZXIgb2YgbWF0Y2hlcyBzYXlz IGhvdyBtYW55IHJhbmdlcworCSAqIHdpbGwgZWFjaCBvZiB0aG9zZSBtYXRjaCBvbiBhdmVy YWdlLiBXZSBkb24ndCBrbm93IGhvdyBtYW55IHdpbGwKKwkgKiBiZSBkdXBsaWNhdGUsIGJ1 dCBpdCBnaXZlcyB1cyBhIHdvcnN0LWNhc2UgZXN0aW1hdGUsIGF0IGxlYXN0LgorCSAqLwor CiAJLyoKIAkgKiBOb3cgY2FsY3VsYXRlIHRoZSBtaW5pbXVtIHBvc3NpYmxlIHJhbmdlcyB3 ZSBjb3VsZCBtYXRjaCB3aXRoIGlmIGFsbCBvZgogCSAqIHRoZSByb3dzIHdlcmUgaW4gdGhl IHBlcmZlY3Qgb3JkZXIgaW4gdGhlIHRhYmxlJ3MgaGVhcC4KQEAgLTc5ODYsNiArODAyNiwy NSBAQCBicmluY29zdGVzdGltYXRlKFBsYW5uZXJJbmZvICpyb290LCBJbmRleFBhdGggKnBh dGgsIGRvdWJsZSBsb29wX2NvdW50LAogCWVsc2UKIAkJZXN0aW1hdGVkUmFuZ2VzID0gTWlu KG1pbmltYWxSYW5nZXMgLyAqaW5kZXhDb3JyZWxhdGlvbiwgaW5kZXhSYW5nZXMpOwogCisJ ZWxvZyhERUJVRzEsICJiZWZvcmUgaW5kZXggQU0gc3RhdHM6IGNlc3RpbWF0ZWRSYW5nZXMg PSAlZiIsIGVzdGltYXRlZFJhbmdlcyk7CisKKwkvKgorCSAqIElmIHdlIGZvdW5kIHNvbWUg QU0gc3RhdHMsIGxvb2sgYXQgYXZlcmFnZSBudW1iZXIgb2Ygb3ZlcmxhcHBpbmcgcmFuZ2Vz LAorCSAqIGFuZCBhcHBseSB0aGF0IHRvIHRoZSBjdXJyZW50bHkgZXN0aW1hdGVkIHJhbmdl cy4KKwkgKgorCSAqIFhYWCBXZSBwcmV0dHkgbXVjaCBjb21iaW5lIHRoaXMgd2l0aCBjb3Jy ZWxhdGlvbiBpbmZvIChiZWNhdXNlIGl0IHdhcworCSAqIGFscmVhZHkgYXBwbGllZCBpbiB0 aGUgZXN0aW1hdGVkUmFuZ2VzIGZvcm11bGEgYWJvdmUpLCB3aGljaCBtaWdodCBiZQorCSAq IG92ZXJseSBwZXNzaW1pc3RpYy4gVGhlIG92ZXJsYXBzIHN0YXRzIHNlZW1zIHNvbWV3aGF0 IHJlZHVuZGFudCB3aXRoCisJICogdGhlIGNvcnJlbGF0aW9uLCBzbyBtYXliZSB3ZSBzaG91 bGQgZG8ganVzdCBvbmU/IFRoZSBBTSBzdGF0cyBzZWVtcworCSAqIGxpa2UgYSBtb3JlIHJl bGlhYmxlIGluZm9ybWF0aW9uLCBiZWNhdXNlIHRoZSBjb3JyZWxhdGlvbiBpcyBub3QgdmVy eQorCSAqIHNlbnNpdGl2ZSB0byBvdXRsaWVycywgZm9yIGV4YW1wbGUuIFNvIG1heWJlIGxl dCdzIHByZWZlciB0aGF0LCBhbmQKKwkgKiBvbmx5IHVzZSB0aGUgY29ycmVsYXRpb24gYXMg ZmFsbGJhY2sgd2hlbiBBTSBzdGF0cyBhcmUgbm90IGF2YWlsYWJsZT8KKwkgKi8KKwlpZiAo YXZlcmFnZU92ZXJsYXBzID4gMC4wKQorCQllc3RpbWF0ZWRSYW5nZXMgPSBNaW4oZXN0aW1h dGVkUmFuZ2VzICogYXZlcmFnZU92ZXJsYXBzLCBpbmRleFJhbmdlcyk7CisKKwllbG9nKERF QlVHMSwgImFmdGVyIGluZGV4IEFNIHN0YXRzOiBjZXN0aW1hdGVkUmFuZ2VzID0gJWYiLCBl c3RpbWF0ZWRSYW5nZXMpOworCiAJLyogd2UgZXhwZWN0IHRvIHZpc2l0IHRoaXMgcG9ydGlv biBvZiB0aGUgdGFibGUgKi8KIAlzZWxlYyA9IGVzdGltYXRlZFJhbmdlcyAvIGluZGV4UmFu Z2VzOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4IDYwOTc4Zjk0 MTUuLmY4NTEyZTNkZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xz eXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBA IC0zMTM4LDYgKzMxMzgsNDcgQEAgZ2V0X2F0dGF2Z3dpZHRoKE9pZCByZWxpZCwgQXR0ck51 bWJlciBhdHRudW0pCiAJcmV0dXJuIDA7CiB9CiAKKworLyoKKyAqIGdldF9hdHRzdGFpbmRl eGFtCisgKgorICoJICBHaXZlbiB0aGUgdGFibGUgYW5kIGF0dHJpYnV0ZSBudW1iZXIgb2Yg YSBjb2x1bW4sIGdldCB0aGUgaW5kZXggQU0KKyAqCSAgc3RhdGlzdGljcy4gIFJldHVybiBO VUxMIGlmIG5vIGRhdGEgYXZhaWxhYmxlLgorICoKKyAqIEN1cnJlbnRseSB0aGlzIGlzIG9u bHkgY29uc3VsdGVkIGZvciBpbmRpdmlkdWFsIHRhYmxlcywgbm90IGZvciBpbmhlcml0YW5j ZQorICogdHJlZXMsIHNvIHdlIGRvbid0IG5lZWQgYW4gImluaCIgcGFyYW1ldGVyLgorICov CitieXRlYSAqCitnZXRfYXR0aW5kZXhhbShPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVt KQoreworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUzKFNUQVRSRUxB VFRJTkgsCisJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkgSW50MTZH ZXREYXR1bShhdHRudW0pLAorCQkJCQkJIEJvb2xHZXREYXR1bShmYWxzZSkpOworCWlmIChI ZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCURhdHVtCXZhbDsKKwkJYnl0ZWEgICpyZXR2 YWwgPSBOVUxMOworCQlib29sCWlzbnVsbDsKKworCQl2YWwgPSBTeXNDYWNoZUdldEF0dHIo U1RBVFJFTEFUVElOSCwgdHAsCisJCQkJCQkJICBBbnVtX3BnX3N0YXRpc3RpY19zdGFpbmRl eGFtLAorCQkJCQkJCSAgJmlzbnVsbCk7CisKKwkJaWYgKCFpc251bGwpCisJCQlyZXR2YWwg PSAoYnl0ZWEgKikgUEdfREVUT0FTVF9EQVRVTSh2YWwpOworCisJCS8vIHN0YWluZGV4YW0g PSAoKEZvcm1fcGdfc3RhdGlzdGljKSBHRVRTVFJVQ1QodHApKS0+c3RhaW5kZXhhbTsKKwkJ UmVsZWFzZVN5c0NhY2hlKHRwKTsKKworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCXJldHVy biBOVUxMOworfQorCiAvKgogICogZ2V0X2F0dHN0YXRzc2xvdAogICoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggYzE0NDU2MDYwYy4uZTQyZjgzNDhlYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTEwMjUsNiArMTAyNSwxNiBA QCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQogCQl0cnVlLAog CQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKKwl7CisJCXsiZW5hYmxlX2luZGV4YW1fc3RhdHMi LCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX01FVEhPRCwKKwkJCWdldHRleHRfbm9vcCgi RW5hYmxlcyB0aGUgcGxhbm5lcidzIHVzZSBvZiBpbmRleCBBTSBzdGF0cy4iKSwKKwkJCU5V TEwsCisJCQlHVUNfRVhQTEFJTgorCQl9LAorCQkmZW5hYmxlX2luZGV4YW1fc3RhdHMsCisJ CWZhbHNlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKIAl7CiAJCXsiZ2VxbyIsIFBHQ19V U0VSU0VULCBRVUVSWV9UVU5JTkdfR0VRTywKIAkJCWdldHRleHRfbm9vcCgiRW5hYmxlcyBn ZW5ldGljIHF1ZXJ5IG9wdGltaXphdGlvbi4iKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBlNGMwMjY5ZmEzLi45Y2E1MjMw NzNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlCkBAIC0zNzksNiArMzc5LDcgQEAKICNlbmFibGVfaGFzaGFnZyA9IG9uCiAjZW5h YmxlX2hhc2hqb2luID0gb24KICNlbmFibGVfaW5jcmVtZW50YWxfc29ydCA9IG9uCisjZW5h YmxlX2luZGV4YW1fc3RhdHMgPSBvZmYKICNlbmFibGVfaW5kZXhzY2FuID0gb24KICNlbmFi bGVfaW5kZXhvbmx5c2NhbiA9IG9uCiAjZW5hYmxlX21hdGVyaWFsID0gb24KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbWFwaS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2Ft YXBpLmgKaW5kZXggNDQ3NmZmN2ZiYS4uZTQ3N2UyZTgzYyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2FtYXBpLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBpLmgK QEAgLTIxNiw2ICsyMTYsOCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEFtUm91dGluZQogCXVp bnQxNgkJYW1zdXBwb3J0OwogCS8qIG9wY2xhc3Mgb3B0aW9ucyBzdXBwb3J0IGZ1bmN0aW9u IG51bWJlciBvciAwICovCiAJdWludDE2CQlhbW9wdHNwcm9jbnVtOworCS8qIG9wY2xhc3Mg c3RhdGlzdGljcyBzdXBwb3J0IGZ1bmN0aW9uIG51bWJlciBvciAwICovCisJdWludDE2CQlh bXN0YXRzcHJvY251bTsKIAkvKiBkb2VzIEFNIHN1cHBvcnQgT1JERVIgQlkgaW5kZXhlZCBj b2x1bW4ncyB2YWx1ZT8gKi8KIAlib29sCQlhbWNhbm9yZGVyOwogCS8qIGRvZXMgQU0gc3Vw cG9ydCBPUkRFUiBCWSByZXN1bHQgb2YgYW4gb3BlcmF0b3Igb24gaW5kZXhlZCBjb2x1bW4/ ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbi5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2JyaW4uaAppbmRleCBlZDY2ZjFiM2Q1Li4xZDIxYjgxNmZjIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbi5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9icmluLmgKQEAgLTM0LDYgKzM0LDY5IEBAIHR5cGVkZWYgc3RydWN0IEJyaW5TdGF0c0Rh dGEKIAlCbG9ja051bWJlciByZXZtYXBOdW1QYWdlczsKIH0gQnJpblN0YXRzRGF0YTsKIAor LyoKKyAqIEluZm8gYWJvdXQgcmFuZ2VzIGZvciBCUklOIFNvcnQuCisgKi8KK3R5cGVkZWYg c3RydWN0IEJyaW5SYW5nZQoreworCUJsb2NrTnVtYmVyIGJsa25vX3N0YXJ0OworCUJsb2Nr TnVtYmVyIGJsa25vX2VuZDsKKworCURhdHVtCW1pbl92YWx1ZTsKKwlEYXR1bQltYXhfdmFs dWU7CisJYm9vbAloYXNfbnVsbHM7CisJYm9vbAlhbGxfbnVsbHM7CisJYm9vbAlub3Rfc3Vt bWFyaXplZDsKKworCS8qCisJICogSW5kZXggb2YgdGhlIHJhbmdlIHdoZW4gb3JkZXJlZCBi eSBtaW5fdmFsdWUgKGlmIHRoZXJlIGFyZSBtdWx0aXBsZQorCSAqIHJhbmdlcyB3aXRoIHRo ZSBzYW1lIG1pbl92YWx1ZSwgaXQncyB0aGUgbG93ZXN0IG9uZSkuCisJICovCisJdWludDMy CW1pbl9pbmRleDsKKworCS8qCisJICogTWluaW11bSBtaW5faW5kZXggZnJvbSBhbGwgcmFu Z2VzIHdpdGggaGlnaGVyIG1heF92YWx1ZSAoaS5lLiB3aGVuCisJICogc29ydGVkIGJ5IG1h eF92YWx1ZSkuIElmIHRoZXJlIGFyZSBtdWx0aXBsZSByYW5nZXMgd2l0aCB0aGUgc2FtZQor CSAqIG1heF92YWx1ZSwgaXQgZGVwZW5kcyBvbiB0aGUgb3JkZXJpbmcgKGkuZS4gdGhlIHJh bmdlcyBtYXkgZ2V0CisJICogZGlmZmVyZW50IG1pbl9pbmRleF9sb3dlc3QsIGRlcGVuZGlu ZyBvbiB0aGUgZXhhY3Qgb3JkZXJpbmcpLgorCSAqLworCXVpbnQzMgltaW5faW5kZXhfbG93 ZXN0OworfSBCcmluUmFuZ2U7CisKK3R5cGVkZWYgc3RydWN0IEJyaW5SYW5nZXMKK3sKKwlp bnQJCQlucmFuZ2VzOworCUJyaW5SYW5nZQlyYW5nZXNbRkxFWElCTEVfQVJSQVlfTUVNQkVS XTsKK30gQnJpblJhbmdlczsKKwordHlwZWRlZiBzdHJ1Y3QgQnJpbk1pbm1heFN0YXRzCit7 CisJaW50MzIJCXZsX2xlbl87CQkvKiB2YXJsZW5hIGhlYWRlciAoZG8gbm90IHRvdWNoIGRp cmVjdGx5ISkgKi8KKwlpbnQ2NAkJbl9yYW5nZXM7CisJaW50NjQJCW5fc3VtbWFyaXplZDsK KwlpbnQ2NAkJbl9hbGxfbnVsbHM7CisJaW50NjQJCW5faGFzX251bGxzOworCisJLyogYXZl cmFnZSBudW1iZXIgb2Ygb3ZlcmxhcHBpbmcgcmFuZ2VzICovCisJZG91YmxlCQlhdmdfb3Zl cmxhcHM7CisKKwkvKiBhdmVyYWdlIG51bWJlciBvZiBtYXRjaGluZyByYW5nZXMgKHBlciB2 YWx1ZSkgKi8KKwlkb3VibGUJCWF2Z19tYXRjaGVzOworCWRvdWJsZQkJYXZnX21hdGNoZXNf dW5pcXVlOworCisJLyogbWludmFsL21heHZhbCBzdGF0cyAobmRpc3RpbmN0LCBjb3JyZWxh dGlvbiB0byBibGtubykgKi8KKwlpbnQ2NAkJbWludmFsX25kaXN0aW5jdDsKKwlpbnQ2NAkJ bWF4dmFsX25kaXN0aW5jdDsKKwlkb3VibGUJCW1pbnZhbF9jb3JyZWxhdGlvbjsKKwlkb3Vi bGUJCW1heHZhbF9jb3JyZWxhdGlvbjsKKworCS8qIG1pbnZhbC9tYXh2YWwgaW5jcmVtZW50 IHN0YXRzICovCisJZG91YmxlCQltaW52YWxfaW5jcmVtZW50X2F2ZzsKKwlkb3VibGUJCW1p bnZhbF9pbmNyZW1lbnRfbWF4OworCWRvdWJsZQkJbWF4dmFsX2luY3JlbWVudF9hdmc7CisJ ZG91YmxlCQltYXh2YWxfaW5jcmVtZW50X21heDsKKworfSBCcmluTWlubWF4U3RhdHM7CiAK ICNkZWZpbmUgQlJJTl9ERUZBVUxUX1BBR0VTX1BFUl9SQU5HRQkxMjgKICNkZWZpbmUgQnJp bkdldFBhZ2VzUGVyUmFuZ2UocmVsYXRpb24pIFwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9icmluX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl9pbnRl cm5hbC5oCmluZGV4IDk3ZGRjOTI1YjIuLmVhYzc5NmU2ZjQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9icmluX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2JyaW5faW50ZXJuYWwuaApAQCAtNzUsNiArNzUsNyBAQCB0eXBlZGVmIHN0cnVjdCBCcmlu RGVzYwogI2RlZmluZSBCUklOX1BST0NOVU1fT1BUSU9OUyAJCTUJLyogb3B0aW9uYWwgKi8K IC8qIHByb2NlZHVyZSBudW1iZXJzIHVwIHRvIDEwIGFyZSByZXNlcnZlZCBmb3IgQlJJTiBm dXR1cmUgZXhwYW5zaW9uICovCiAjZGVmaW5lIEJSSU5fRklSU1RfT1BUSU9OQUxfUFJPQ05V TSAxMQorI2RlZmluZSBCUklOX1BST0NOVU1fU1RBVElTVElDUwkJMTEJLyogb3B0aW9uYWwg Ki8KICNkZWZpbmUgQlJJTl9MQVNUX09QVElPTkFMX1BST0NOVU0JMTUKIAogI3VuZGVmIEJS SU5fREVCVUcKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRh dCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAppbmRleCA1Yjk1MDEyOWRl Li45YmJkMWYxNGYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJv Yy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CkBAIC04MDQs NiArODA0LDggQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnl0ZWFfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdieXRlYScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYnl0ZWEnLCBhbXByb2Nu dW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vYnl0ZWFfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdi eXRlYScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYnl0ZWEnLCBhbXByb2NudW0gPT4gJzEx JywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKIAogIyBibG9vbSBieXRlYQog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnl0ZWFfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2J5dGVhJywKQEAgLTgzNSw2ICs4MzcsOCBAQAogICBhbXByb2MgPT4gJ2JyaW5f bWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9jaGFyX21p bm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnY2hhcicsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf dW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9jaGFyX21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnY2hhcics IGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAog CiAjIGJsb29tICJjaGFyIgogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vY2hhcl9ibG9vbV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCkBAIC04NjQsNiArODY4LDggQEAKICAg YW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vbmFtZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ25hbWUnLAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ25hbWUnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmFt ZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ25hbWUnLAorICBhbXByb2NyaWdo dHR5cGUgPT4gJ25hbWUnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21p bm1heF9zdGF0cycgfSwKIAogIyBibG9vbSBuYW1lCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9uYW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICduYW1lJywKQEAgLTg5Myw2 ICs4OTksOCBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnaW50OCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251 bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn aW50OCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251bSA9PiAnMTEn LCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAogCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50Mics CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251bSA9PiAnMScsCkBAIC05 MDUsNiArOTEzLDggQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9 LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2ludDInLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDInLCBhbXBy b2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ2ludDInLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDInLCBhbXByb2NudW0gPT4g JzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKIAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2lu dDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXByb2NudW0gPT4gJzEnLApA QCAtOTE3LDYgKzkyNyw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVu dCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdpbnQ0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ0Jywg YW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sg YW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdpbnQ0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ0JywgYW1wcm9jbnVt ID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCiAKICMgbWlubWF4 IG11bHRpIGludGVnZXI6IGludDIsIGludDQsIGludDgKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL2ludGVnZXJfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQy JywKQEAgLTEwMzQsNiArMTA0Niw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29u c2lzdGVudCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRfbWlubWF4X29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICd0ZXh0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0ZXh0 JywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwK K3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICd0ZXh0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0ZXh0JywgYW1wcm9jbnVt ID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCiAKICMgYmxvb20g dGV4dAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGV4dF9ibG9vbV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAndGV4dCcsCkBAIC0xMDYyLDYgKzEwNzYsOCBAQAogICBhbXByb2MgPT4g J2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9v aWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdvaWQnLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ29pZCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9vaWRfbWlubWF4X29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdvaWQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ29pZCcs IGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAog CiAjIG1pbm1heCBtdWx0aSBvaWQKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL29pZF9taW5t YXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ29pZCcsCkBAIC0xMTEwLDYgKzEx MjYsOCBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi90aWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICd0aWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpZCcsIGFtcHJvY251bSA9PiAnNCcs IGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi90aWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aWQnLAorICBhbXBy b2NyaWdodHR5cGUgPT4gJ3RpZCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X3N0YXRzJyB9LAogCiAjIGJsb29tIHRpZAogeyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vdGlkX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aWQnLApAQCAtMTE2 MCw2ICsxMTc4LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdmbG9hdDQnLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zs b2F0NCcsIGFtcHJvY251bSA9PiAnMTEnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0 YXRzJyB9LAogCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0OCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxv YXQ4JywgYW1wcm9jbnVtID0+ICcxJywKQEAgLTExNzMsNiArMTE5NCw5IEBACiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J2Zsb2F0OCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ4JywgYW1wcm9jbnVtID0+ ICc0JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFt aWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxv YXQ4JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgnLCBhbXByb2NudW0gPT4gJzEx JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKIAogIyBtaW5tYXggbXVs dGkgZmxvYXQKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9tdWx0aV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ0JywKQEAgLTEyNjEsNiArMTI4NSw5IEBA CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyX21pbm1heF9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnbWFjYWRkcicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcics IGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0s Cit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyX21pbm1heF9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnbWFjYWRkcicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcics IGFtcHJvY251bSA9PiAnMTEnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9 LAogCiAjIG1pbm1heCBtdWx0aSBtYWNhZGRyCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9t YWNhZGRyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFjYWRkcics CkBAIC0xMzE0LDYgKzEzNDEsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRk cjhfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyOCcsCiAgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnbWFjYWRkcjgnLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFj YWRkcjhfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyOCcsCisgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcjgnLCBhbXByb2NudW0gPT4gJzExJywKKyAgYW1w cm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKIAogIyBtaW5tYXggbXVsdGkgbWFjYWRk cjgKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHI4X21pbm1heF9tdWx0aV9vcHMn LApAQCAtMTM2Niw2ICsxMzk2LDggQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25z aXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2lu ZXQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9 LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2luZXQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXBy b2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKIAogIyBt aW5tYXggbXVsdGkgaW5ldAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19taW5t YXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLApAQCAtMTQzNiw2ICsx NDY4LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2JwY2hhcl9taW5tYXhfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ2JwY2hhcicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYnBj aGFyJywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlv bicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2JwY2hhcl9taW5tYXhfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2JwY2hhcicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYnBjaGFy JywgYW1wcm9jbnVtID0+ICcxMScsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMn IH0sCiAKICMgYmxvb20gY2hhcmFjdGVyCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9icGNo YXJfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2JwY2hhcicsCkBAIC0xNDY3LDYg KzE1MDIsOCBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAndGltZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZScsIGFtcHJvY251bSA9 PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi90aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZScs CisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZScsIGFtcHJvY251bSA9PiAnMTEnLCBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAogCiAjIG1pbm1heCBtdWx0aSB0aW1lIHdp dGhvdXQgdGltZSB6b25lCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1lX21pbm1heF9t dWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZScsCkBAIC0xNTE3LDYgKzE1NTQs OSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICd0aW1lc3RhbXAnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3Rp bWVzdGFtcCcsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf dW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAndGltZXN0YW1wJywgYW1wcm9jbnVtID0+ICcxMScsCisgIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfc3RhdHMnIH0sCiAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21p bm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHonLAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywgYW1wcm9jbnVtID0+ICcxJywKQEAgLTE1MzAs NiArMTU3MCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICd0aW1lc3RhbXB0eicsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGlt ZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywKKyAgYW1w cm9jcmlnaHR0eXBlID0+ICd0aW1lc3RhbXB0eicsIGFtcHJvY251bSA9PiAnMTEnLAorICBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAogCiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9kYXRldGltZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ2RhdGUnLCBhbXByb2NudW0gPT4gJzEnLApAQCAtMTU0 Miw2ICsxNTg1LDggQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9 LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdkYXRlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1w cm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1w cm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAnZGF0ZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZGF0ZScsIGFtcHJvY251bSA9 PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAogCiAjIG1pbm1heCBt dWx0aSBkYXRldGltZSAoZGF0ZSwgdGltZXN0YW1wLCB0aW1lc3RhbXB0eikKIHsgYW1wcm9j ZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9tdWx0aV9vcHMnLApAQCAtMTY2OCw2 ICsxNzEzLDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVydmFsX21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50ZXJ2YWwnLAogICBhbXByb2NyaWdodHR5cGUg PT4gJ2ludGVydmFsJywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21p bm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVydmFsX21pbm1h eF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50ZXJ2YWwnLAorICBhbXByb2NyaWdodHR5 cGUgPT4gJ2ludGVydmFsJywgYW1wcm9jbnVtID0+ICcxMScsCisgIGFtcHJvYyA9PiAnYnJp bl9taW5tYXhfc3RhdHMnIH0sCiAKICMgbWlubWF4IG11bHRpIGludGVydmFsCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9taW5tYXhfbXVsdGlfb3BzJywKQEAgLTE3MjEs NiArMTc2OSw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfbWlubWF4X29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1ldHonLAogICBhbXByb2NyaWdodHR5cGUgPT4g J3RpbWV0eicsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf dW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfbWlubWF4X29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICd0aW1ldHonLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3Rp bWV0eicsIGFtcHJvY251bSA9PiAnMTEnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0 YXRzJyB9LAogCiAjIG1pbm1heCBtdWx0aSB0aW1lIHdpdGggdGltZSB6b25lCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICd0aW1ldHonLApAQCAtMTc3MSw2ICsxODIyLDggQEAKICAgYW1wcm9jID0+ICdi cmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYml0 X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYml0JywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdiaXQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYml0X21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnYml0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdiaXQnLCBh bXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKIAog IyBtaW5tYXggYml0IHZhcnlpbmcKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3ZhcmJpdF9t aW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3ZhcmJpdCcsCkBAIC0xNzg1LDYgKzE4 MzgsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdmFyYml0X21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAndmFyYml0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd2YXJi aXQnLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9u JyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdmFyYml0X21pbm1heF9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAndmFyYml0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd2YXJiaXQn LCBhbXByb2NudW0gPT4gJzExJywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycg fSwKIAogIyBtaW5tYXggbnVtZXJpYwogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbnVtZXJp Y19taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMnLApAQCAtMTc5OSw2 ICsxODU1LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL251bWVyaWNfbWlubWF4X29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdudW1lcmljJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdudW1lcmljJywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21pbm1h eF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL251bWVyaWNfbWlubWF4X29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdudW1lcmljJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ ICdudW1lcmljJywgYW1wcm9jbnVtID0+ICcxMScsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfc3RhdHMnIH0sCiAKICMgbWlubWF4IG11bHRpIG51bWVyaWMKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL251bWVyaWNfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdudW1lcmljJywKQEAgLTE4NTEsNiArMTkxMCw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3V1aWRfbWlu bWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd1dWlkJywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICd1dWlkJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91 bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3V1aWRfbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICd1dWlkJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd1dWlkJywg YW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCiAK ICMgbWlubWF4IG11bHRpIHV1aWQKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3V1aWRfbWlu bWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd1dWlkJywKQEAgLTE5MjQsNiAr MTk4NSw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9wZ19sc25fbWlubWF4X29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdwZ19sc24nLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3Bn X2xzbicsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5p b24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9wZ19sc25fbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdwZ19sc24nLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3BnX2xz bicsIGFtcHJvY251bSA9PiAnMTEnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRz JyB9LAogCiAjIG1pbm1heCBtdWx0aSBwZ19sc24KIHsgYW1wcm9jZmFtaWx5ID0+ICdicmlu L3BnX2xzbl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2xzbics CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA2OTk2MDczOTg5Li5lNTBhMjFmYzIy IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTg1MjcsNiArODUyNywxMCBAQAog eyBvaWQgPT4gJzMzODYnLCBkZXNjciA9PiAnQlJJTiBtaW5tYXggc3VwcG9ydCcsCiAgIHBy b25hbWUgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCiAg IHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBpbnRlcm5hbCBpbnRlcm5hbCcsIHByb3NyYyA9 PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IG9pZCA9PiAnOTgwMCcsIGRlc2NyID0+ICdC UklOIG1pbm1heCBzdXBwb3J0JywKKyAgcHJvbmFtZSA9PiAnYnJpbl9taW5tYXhfc3RhdHMn LCBwcm9yZXR0eXBlID0+ICdib29sJywKKyAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGlu dGVybmFsIGludDIgaW50MiBpbnRlcm5hbCBpbnQ0JywKKyAgcHJvc3JjID0+ICdicmluX21p bm1heF9zdGF0cycgfSwKIAogIyBCUklOIG1pbm1heCBtdWx0aQogeyBvaWQgPT4gJzQ2MTYn LCBkZXNjciA9PiAnQlJJTiBtdWx0aSBtaW5tYXggc3VwcG9ydCcsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N0YXRpc3RpYy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19zdGF0aXN0aWMuaAppbmRleCA4NzcwYzViNGM2Li5kM2QwYmNlMjU3IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N0YXRpc3RpYy5oCisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfc3RhdGlzdGljLmgKQEAgLTEyMSw2ICsxMjEsMTEgQEAgQ0FUQUxP RyhwZ19zdGF0aXN0aWMsMjYxOSxTdGF0aXN0aWNSZWxhdGlvbklkKQogCWFueWFycmF5CXN0 YXZhbHVlczM7CiAJYW55YXJyYXkJc3RhdmFsdWVzNDsKIAlhbnlhcnJheQlzdGF2YWx1ZXM1 OworCisJLyoKKwkgKiBTdGF0aXN0aWNzIGNhbGN1bGF0ZWQgYnkgaW5kZXggQU0gKGUuZy4g QlJJTiBmb3IgcmFuZ2VzLCBldGMuKS4KKwkgKi8KKwlieXRlYQkJc3RhaW5kZXhhbTsKICNl bmRpZgogfSBGb3JtRGF0YV9wZ19zdGF0aXN0aWM7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgK aW5kZXggNGFmMDI5NDBjNS4uMTBhOGVjODNjZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgK QEAgLTE1MSw2ICsxNTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBWYWNBdHRyU3RhdHMKIAlmbG9h dDQJICAgKnN0YW51bWJlcnNbU1RBVElTVElDX05VTV9TTE9UU107CiAJaW50CQkJbnVtdmFs dWVzW1NUQVRJU1RJQ19OVU1fU0xPVFNdOwogCURhdHVtCSAgICpzdGF2YWx1ZXNbU1RBVElT VElDX05VTV9TTE9UU107CisJRGF0dW0JCXN0YWluZGV4YW07CQkvKiBpbmRleC1zcGVjaWZp YyBzdGF0cyAoYXMgYnl0ZWEpICovCiAKIAkvKgogCSAqIFRoZXNlIGZpZWxkcyBkZXNjcmli ZSB0aGUgc3RhdmFsdWVzW25dIGVsZW1lbnQgdHlwZXMuIFRoZXkgd2lsbCBiZQpAQCAtMjk5 LDYgKzMwMCw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgdmFjdXVtX211bHRpeGFjdF9m cmVlemVfbWluX2FnZTsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgdmFjdXVtX211bHRpeGFj dF9mcmVlemVfdGFibGVfYWdlOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCB2YWN1dW1fZmFp bHNhZmVfYWdlOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCB2YWN1dW1fbXVsdGl4YWN0X2Zh aWxzYWZlX2FnZTsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9pbmRleGFtX3N0 YXRzOwogCiAvKgogICogTWF4aW11bSB2YWx1ZSBmb3IgZGVmYXVsdF9zdGF0aXN0aWNzX3Rh cmdldCBhbmQgcGVyLWNvbHVtbiBzdGF0aXN0aWNzCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmlu ZGV4IDRmNTQxOGI5NzIuLmZjZWY5MWQzMDYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL2xzeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBA IC0xODUsNiArMTg1LDcgQEAgZXh0ZXJuIE9pZAlnZXRCYXNlVHlwZShPaWQgdHlwaWQpOwog ZXh0ZXJuIE9pZAlnZXRCYXNlVHlwZUFuZFR5cG1vZChPaWQgdHlwaWQsIGludDMyICp0eXBt b2QpOwogZXh0ZXJuIGludDMyIGdldF90eXBhdmd3aWR0aChPaWQgdHlwaWQsIGludDMyIHR5 cG1vZCk7CiBleHRlcm4gaW50MzIgZ2V0X2F0dGF2Z3dpZHRoKE9pZCByZWxpZCwgQXR0ck51 bWJlciBhdHRudW0pOworZXh0ZXJuIGJ5dGVhICpnZXRfYXR0aW5kZXhhbShPaWQgcmVsaWQs IEF0dHJOdW1iZXIgYXR0bnVtKTsKIGV4dGVybiBib29sIGdldF9hdHRzdGF0c3Nsb3QoQXR0 U3RhdHNTbG90ICpzc2xvdCwgSGVhcFR1cGxlIHN0YXRzdHVwbGUsCiAJCQkJCQkJIGludCBy ZXFraW5kLCBPaWQgcmVxb3AsIGludCBmbGFncyk7CiBleHRlcm4gdm9pZCBmcmVlX2F0dHN0 YXRzc2xvdChBdHRTdGF0c1Nsb3QgKnNzbG90KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zeXN2aWV3cy5vdXQKaW5kZXggMDAxYzZlN2ViOS4uYjdmZGE2ZmM4MiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKQEAgLTExNyw2ICsxMTcsNyBAQCBz ZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAn ZW5hYmxlJSc7CiAgZW5hYmxlX2hhc2hhZ2cgICAgICAgICAgICAgICAgIHwgb24KICBlbmFi bGVfaGFzaGpvaW4gICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9pbmNyZW1lbnRhbF9z b3J0ICAgICAgICB8IG9uCisgZW5hYmxlX2luZGV4YW1fc3RhdHMgICAgICAgICAgIHwgb2Zm CiAgZW5hYmxlX2luZGV4b25seXNjYW4gICAgICAgICAgIHwgb24KICBlbmFibGVfaW5kZXhz Y2FuICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9tYXRlcmlhbCAgICAgICAgICAgICAg ICB8IG9uCkBAIC0xMzIsNyArMTMzLDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBw Z19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9zZXFzY2Fu ICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3NvcnQgICAgICAgICAgICAgICAgICAg IHwgb24KICBlbmFibGVfdGlkc2NhbiAgICAgICAgICAgICAgICAgfCBvbgotKDIxIHJvd3Mp CisoMjIgcm93cykKIAogLS0gVGVzdCB0aGF0IHRoZSBwZ190aW1lem9uZV9uYW1lcyBhbmQg cGdfdGltZXpvbmVfYWJicmV2cyB2aWV3cyBhcmUKIC0tIG1vcmUtb3ItbGVzcyB3b3JraW5n LiAgV2UgY2FuJ3QgdGVzdCB0aGVpciBjb250ZW50cyBpbiBhbnkgZ3JlYXQgZGV0YWlsCi0t IAoyLjQxLjAKCg== --------------CooOQ6LlXwcsddypE9zFAJMn Content-Type: text/x-patch; charset=UTF-8; name="0002-wip-introduce-debug_brin_stats-20230710.patch" Content-Disposition: attachment; filename="0002-wip-introduce-debug_brin_stats-20230710.patch" Content-Transfer-Encoding: base64 RnJvbSBhMWU1ZjM4ODY0MzRjZGE4Njk3NmIxMjc3OThhYTU2MDI3NzU3NjE4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyOSBPY3QgMjAyMiAxNzo0Njo1MSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDIvMTFdIHdpcDogaW50cm9kdWNlIGRlYnVnX2JyaW5fc3RhdHMKCi0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyB8IDgwICsrKysrKysr KysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVz LmMgICB8IDE4ICsrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKaW5kZXggNjQxNTAyMDRmYy4u YzY2YjZmZWFmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9t aW5tYXguYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5jCkBA IC0yOCw2ICsyOCwxMCBAQAogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVk ZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKKyNpZmRlZiBERUJVR19CUklOX1NUQVRTCitib29s IGRlYnVnX2JyaW5fc3RhdHMgPSBmYWxzZTsKKyNlbmRpZgorCiB0eXBlZGVmIHN0cnVjdCBN aW5tYXhPcGFxdWUKIHsKIAlPaWQJCQljYWNoZWRfc3VidHlwZTsKQEAgLTQ5Myw2ICs0OTcs MTMgQEAgYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMoQnJpblJhbmdlICoqbWlucmFuZ2Vz LCBpbnQgbnJhbmdlcywKIHsKIAlpbnQ2NAlub3ZlcmxhcHM7CiAKKyNpZmRlZiBERUJVR19C UklOX1NUQVRTCisJVGltZXN0YW1wVHoJCXN0YXJ0X3RzOworCisJaWYgKGRlYnVnX2JyaW5f c3RhdHMpCisJCXN0YXJ0X3RzID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworI2VuZGlmCisK IAlub3ZlcmxhcHMgPSAwOwogCWZvciAoaW50IGkgPSAwOyBpIDwgbnJhbmdlczsgaSsrKQog CXsKQEAgLTUxNSw2ICs1MjYsMTYgQEAgYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMoQnJp blJhbmdlICoqbWlucmFuZ2VzLCBpbnQgbnJhbmdlcywKIAkgKi8KIAlub3ZlcmxhcHMgKj0g MjsKIAorI2lmZGVmIERFQlVHX0JSSU5fU1RBVFMKKwlpZiAoZGVidWdfYnJpbl9zdGF0cykK Kwl7CisJCWVsb2coV0FSTklORywgIi0tLS0tIGJyaW5fbWlubWF4X2NvdW50X292ZXJsYXBz IC0tLS0tIik7CisJCWVsb2coV0FSTklORywgIm5vdmVybGFwcyA9ICVsZCIsIG5vdmVybGFw cyk7CisJCWVsb2coV0FSTklORywgImR1cmF0aW9uID0gJWxkIiwgVGltZXN0YW1wRGlmZmVy ZW5jZU1pbGxpc2Vjb25kcyhzdGFydF90cywKKwkJCQkJCQkJCQlHZXRDdXJyZW50VGltZXN0 YW1wKCkpKTsKKwl9CisjZW5kaWYKKwogCXN0YXRzLT5hdmdfb3ZlcmxhcHMgPSAoZG91Ymxl KSBub3ZlcmxhcHMgLyBucmFuZ2VzOwogfQogCkBAIC01NDAsNiArNTYxLDEzIEBAIGJyaW5f bWlubWF4X21hdGNoX3R1cGxlc190b19yYW5nZXMoQnJpblJhbmdlcyAqcmFuZ2VzLAogCiAJ aW50NjQgICp1bmlxdWUgPSAoaW50NjQgKikgcGFsbG9jMChzaXplb2YoaW50NjQpICogbnZh bHVlcyk7CiAKKyNpZmRlZiBERUJVR19CUklOX1NUQVRTCisJVGltZXN0YW1wVHoJCXN0YXJ0 X3RzOworCisJaWYgKGRlYnVnX2JyaW5fc3RhdHMpCisJCXN0YXJ0X3RzID0gR2V0Q3VycmVu dFRpbWVzdGFtcCgpOworI2VuZGlmCisKIAkvKgogCSAqIEJ1aWxkIHJ1bm5pbmcgY291bnQg b2YgdW5pcXVlIHZhbHVlcy4gV2Uga25vdyB0aGVyZSBhcmUgdW5pcXVlW2ldCiAJICogdW5p cXVlIHZhbHVlcyBpbiB2YWx1ZXMgYXJyYXkgdXAgdG8gaW5kZXggImkiLgpAQCAtNTg4LDYg KzYxNiwxOCBAQCBicmluX21pbm1heF9tYXRjaF90dXBsZXNfdG9fcmFuZ2VzKEJyaW5SYW5n ZXMgKnJhbmdlcywKIAlBc3NlcnQobm1hdGNoZXMgPj0gMCk7CiAJQXNzZXJ0KG5tYXRjaGVz X3VuaXF1ZSA+PSAwKTsKIAorI2lmZGVmIERFQlVHX0JSSU5fU1RBVFMKKwlpZiAoZGVidWdf YnJpbl9zdGF0cykKKwl7CisJCWVsb2coV0FSTklORywgIi0tLS0tIGJyaW5fbWlubWF4X21h dGNoX3R1cGxlc190b19yYW5nZXMgLS0tLS0iKTsKKwkJZWxvZyhXQVJOSU5HLCAibm1hdGNo ZXMgPSAlbGQgJWYiLCBubWF0Y2hlcywgKGRvdWJsZSkgbm1hdGNoZXMgLyBudW1yb3dzKTsK KwkJZWxvZyhXQVJOSU5HLCAibm1hdGNoZXMgdW5pcXVlID0gJWxkICVsZCAlZiIsIG5tYXRj aGVzX3VuaXF1ZSwgbnZhbHVlc191bmlxdWUsCisJCQkoZG91YmxlKSBubWF0Y2hlc191bmlx dWUgLyBudmFsdWVzX3VuaXF1ZSk7CisJCWVsb2coV0FSTklORywgImR1cmF0aW9uID0gJWxk IiwgVGltZXN0YW1wRGlmZmVyZW5jZU1pbGxpc2Vjb25kcyhzdGFydF90cywKKwkJCQkJCQkJ CUdldEN1cnJlbnRUaW1lc3RhbXAoKSkpOworCX0KKyNlbmRpZgorCiAJc3RhdHMtPmF2Z19t YXRjaGVzID0gKGRvdWJsZSkgbm1hdGNoZXMgLyBudW1yb3dzOwogCXN0YXRzLT5hdmdfbWF0 Y2hlc191bmlxdWUgPSAoZG91YmxlKSBubWF0Y2hlc191bmlxdWUgLyBudmFsdWVzX3VuaXF1 ZTsKIH0KQEAgLTYxOSw2ICs2NTksMTMgQEAgYnJpbl9taW5tYXhfdmFsdWVfc3RhdHMoQnJp blJhbmdlICoqbWlucmFuZ2VzLCBCcmluUmFuZ2UgKiptYXhyYW5nZXMsCiAJCQltaW52YWxf Y29yciA9IDAsCiAJCQltYXh2YWxfY29yciA9IDA7CiAKKyNpZmRlZiBERUJVR19CUklOX1NU QVRTCisJVGltZXN0YW1wVHoJCXN0YXJ0X3RzOworCisJaWYgKGRlYnVnX2JyaW5fc3RhdHMp CisJCXN0YXJ0X3RzID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworI2VuZGlmCisKIAlmb3Ig KGludCBpID0gMTsgaSA8IG5yYW5nZXM7IGkrKykKIAl7CiAJCWlmIChyYW5nZV92YWx1ZXNf Y21wKCZtaW5yYW5nZXNbaS0xXS0+bWluX3ZhbHVlLCAmbWlucmFuZ2VzW2ldLT5taW5fdmFs dWUsIHR5cGNhY2hlKSAhPSAwKQpAQCAtNjQxLDYgKzY4OCwxOSBAQCBicmluX21pbm1heF92 YWx1ZV9zdGF0cyhCcmluUmFuZ2UgKiptaW5yYW5nZXMsIEJyaW5SYW5nZSAqKm1heHJhbmdl cywKIAogCXN0YXRzLT5taW52YWxfY29ycmVsYXRpb24gPSAoZG91YmxlKSBtaW52YWxfY29y ciAvIG5yYW5nZXM7CiAJc3RhdHMtPm1heHZhbF9jb3JyZWxhdGlvbiA9IChkb3VibGUpIG1h eHZhbF9jb3JyIC8gbnJhbmdlczsKKworI2lmZGVmIERFQlVHX0JSSU5fU1RBVFMKKwlpZiAo ZGVidWdfYnJpbl9zdGF0cykKKwl7CisJCWVsb2coV0FSTklORywgIi0tLS0tIGJyaW5fbWlu bWF4X3ZhbHVlX3N0YXRzIC0tLS0tIik7CisJCWVsb2coV0FSTklORywgIm1pbnZhbCBuZGlz dGluY3QgIiBJTlQ2NF9GT1JNQVQgIiBjb3JyZWxhdGlvbiAlZiIsCisJCQkgc3RhdHMtPm1p bnZhbF9uZGlzdGluY3QsIHN0YXRzLT5taW52YWxfY29ycmVsYXRpb24pOworCQllbG9nKFdB Uk5JTkcsICJtYXh2YWwgbmRpc3RpbmN0ICIgSU5UNjRfRk9STUFUICIgY29ycmVsYXRpb24g JWYiLAorCQkJIHN0YXRzLT5tYXh2YWxfbmRpc3RpbmN0LCBzdGF0cy0+bWF4dmFsX2NvcnJl bGF0aW9uKTsKKwkJZWxvZyhXQVJOSU5HLCAiZHVyYXRpb24gPSAlbGQiLCBUaW1lc3RhbXBE aWZmZXJlbmNlTWlsbGlzZWNvbmRzKHN0YXJ0X3RzLAorCQkJCQkJCQkJCUdldEN1cnJlbnRU aW1lc3RhbXAoKSkpOworCX0KKyNlbmRpZgogfQogCiAvKgpAQCAtNjY1LDYgKzcyNSwxMyBA QCBicmluX21pbm1heF9pbmNyZW1lbnRfc3RhdHMoQnJpblJhbmdlICoqbWlucmFuZ2VzLCBC cmluUmFuZ2UgKiptYXhyYW5nZXMsCiAJCQltYXhfbWludmFsID0gMCwKIAkJCW1heF9tYXh2 YWwgPSAwOwogCisjaWZkZWYgREVCVUdfQlJJTl9TVEFUUworCVRpbWVzdGFtcFR6CQlzdGFy dF90czsKKworCWlmIChkZWJ1Z19icmluX3N0YXRzKQorCQlzdGFydF90cyA9IEdldEN1cnJl bnRUaW1lc3RhbXAoKTsKKyNlbmRpZgorCiAJZm9yIChpbnQgaSA9IDE7IGkgPCBucmFuZ2Vz OyBpKyspCiAJewogCQlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmbWlucmFuZ2VzW2ktMV0tPm1p bl92YWx1ZSwgJm1pbnJhbmdlc1tpXS0+bWluX3ZhbHVlLCB0eXBjYWNoZSkgIT0gMCkKQEAg LTcxNiw2ICs3ODMsMTkgQEAgYnJpbl9taW5tYXhfaW5jcmVtZW50X3N0YXRzKEJyaW5SYW5n ZSAqKm1pbnJhbmdlcywgQnJpblJhbmdlICoqbWF4cmFuZ2VzLAogCQl9CiAJfQogCisjaWZk ZWYgREVCVUdfQlJJTl9TVEFUUworCWlmIChkZWJ1Z19icmluX3N0YXRzKQorCXsKKwkJZWxv ZyhXQVJOSU5HLCAiLS0tLS0gYnJpbl9taW5tYXhfaW5jcmVtZW50X3N0YXRzIC0tLS0tIik7 CisJCWVsb2coV0FSTklORywgIm1pbnZhbCBuZGlzdGluY3QgJWxkIHN1bSAlZiBtYXggJWYg YXZnICVmIiwKKwkJCSBtaW52YWxfbmRpc3QsIHN1bV9taW52YWwsIG1heF9taW52YWwsIHN1 bV9taW52YWwgLyBtaW52YWxfbmRpc3QpOworCQllbG9nKFdBUk5JTkcsICJtYXh2YWwgbmRp c3RpbmN0ICVsZCBzdW0gJWYgbWF4ICVmIGF2ZyAlZiIsCisJCQkgbWF4dmFsX25kaXN0LCBz dW1fbWF4dmFsLCBtYXhfbWF4dmFsLCBzdW1fbWF4dmFsIC8gbWF4dmFsX25kaXN0KTsKKwkJ ZWxvZyhXQVJOSU5HLCAiZHVyYXRpb24gPSAlbGQiLCBUaW1lc3RhbXBEaWZmZXJlbmNlTWls bGlzZWNvbmRzKHN0YXJ0X3RzLAorCQkJCQkJCQkJCUdldEN1cnJlbnRUaW1lc3RhbXAoKSkp OworCX0KKyNlbmRpZgorCiAJc3RhdHMtPm1pbnZhbF9pbmNyZW1lbnRfYXZnID0gKHN1bV9t aW52YWwgLyBtaW52YWxfbmRpc3QpOwogCXN0YXRzLT5taW52YWxfaW5jcmVtZW50X21heCA9 IG1heF9taW52YWw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXgg ZTQyZjgzNDhlYS4uOTcxMWEyM2MzNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKQEAgLTk4LDYgKzk4LDEwIEBAIGV4dGVybiBjaGFyICp0ZW1wX3RhYmxlc3BhY2Vz OwogZXh0ZXJuIGJvb2wgaWdub3JlX2NoZWNrc3VtX2ZhaWx1cmU7CiBleHRlcm4gYm9vbCBp Z25vcmVfaW52YWxpZF9wYWdlczsKIAorI2lmZGVmIERFQlVHX0JSSU5fU1RBVFMKK2V4dGVy biBib29sIGRlYnVnX2JyaW5fc3RhdHM7CisjZW5kaWYKKwogI2lmZGVmIFRSQUNFX1NZTkNT Q0FOCiBleHRlcm4gYm9vbCB0cmFjZV9zeW5jc2NhbjsKICNlbmRpZgpAQCAtMTI1Myw2ICsx MjU3LDIwIEBAIHN0cnVjdCBjb25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJ CU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisjaWZkZWYgREVCVUdfQlJJTl9TVEFUUworCS8q IHRoaXMgaXMgdW5kb2N1bWVudGVkIGJlY2F1c2Ugbm90IGV4cG9zZWQgaW4gYSBzdGFuZGFy ZCBidWlsZCAqLworCXsKKwkJeyJkZWJ1Z19icmluX3N0YXRzIiwgUEdDX1VTRVJTRVQsIERF VkVMT1BFUl9PUFRJT05TLAorCQkJZ2V0dGV4dF9ub29wKCJQcmludCBpbmZvIGFib3V0IGNh bGN1bGF0ZWQgQlJJTiBzdGF0aXN0aWNzLiIpLAorCQkJTlVMTCwKKwkJCUdVQ19OT1RfSU5f U0FNUExFCisJCX0sCisJCSZkZWJ1Z19icmluX3N0YXRzLAorCQlmYWxzZSwKKwkJTlVMTCwg TlVMTCwgTlVMTAorCX0sCisjZW5kaWYKKwogCXsKIAkJeyJleGl0X29uX2Vycm9yIiwgUEdD X1VTRVJTRVQsIEVSUk9SX0hBTkRMSU5HX09QVElPTlMsCiAJCQlnZXR0ZXh0X25vb3AoIlRl cm1pbmF0ZSBzZXNzaW9uIG9uIGFueSBlcnJvci4iKSwKLS0gCjIuNDEuMAoK --------------CooOQ6LlXwcsddypE9zFAJMn Content-Type: text/x-patch; charset=UTF-8; name="0003-wip-introduce-debug_brin_cross_check-20230710.patch" Content-Disposition: attachment; filename="0003-wip-introduce-debug_brin_cross_check-20230710.patch" Content-Transfer-Encoding: base64 RnJvbSAzODVjNWNkOTIwMDdmNzMzNmVmYjk1OTQ3NTJmMjFhMWUyNzYwNGU5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyOSBPY3QgMjAyMiAyMDo0NzozMSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDMvMTFdIHdpcDogaW50cm9kdWNlIGRlYnVnX2JyaW5fY3Jvc3NfY2hl Y2sKCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyB8IDU3NCAr KysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMgICB8ICAxMCArCiAyIGZpbGVzIGNoYW5nZWQsIDU4NCBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKaW5kZXggYzY2YjZmZWFm ZC4uYTRjMDBjYWFmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJp bl9taW5tYXguYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5j CkBAIC0zMCw2ICszMCw3IEBACiAKICNpZmRlZiBERUJVR19CUklOX1NUQVRTCiBib29sIGRl YnVnX2JyaW5fc3RhdHMgPSBmYWxzZTsKK2Jvb2wgZGVidWdfYnJpbl9jcm9zc19jaGVjayA9 IGZhbHNlOwogI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IE1pbm1heE9wYXF1ZQpAQCAtMzQw LDYgKzM0MSw1MCBAQCByYW5nZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZv aWQgKmIsIHZvaWQgKmFyZykKIAlyZXR1cm4gRGF0dW1HZXRJbnQzMihjKTsKIH0KIAorI2lm ZGVmIERFQlVHX0JSSU5fU1RBVFMKKy8qCisgKiBtYXh2YWxfc3RhcnQKKyAqCQlEZXRlcm1p bmUgZmlyc3QgaW5kZXggc28gdGhhdCAobWF4dmFsdWUgPj0gdmFsdWUpLgorICoKKyAqIFRo ZSBhcnJheSBvZiByYW5nZXMgaXMgZXhwZWN0ZWQgdG8gYmUgc29ydGVkIGJ5IG1heHZhbHVl LCBzbyB0aGlzIGlzIHRoZSBmaXJzdAorICogcmFuZ2UgdGhhdCBjYW4gcG9zc2libHkgaW50 ZXJzZWN0IHdpdGggcmFuZ2UgaGF2aW5nICJ2YWx1ZSIgYXMgbWludmFsLgorICovCitzdGF0 aWMgaW50CittYXh2YWxfc3RhcnQoQnJpblJhbmdlICoqcmFuZ2VzLCBpbnQgbnJhbmdlcywg RGF0dW0gdmFsdWUsIFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSkKK3sKKwlpbnQJCXN0YXJ0 ID0gMCwKKwkJCWVuZCA9IChucmFuZ2VzIC0gMSk7CisKKwkvLyBldmVyeXRoaW5nIG1hdGNo ZXMKKwlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmdmFsdWUsICZyYW5nZXNbc3RhcnRdLT5tYXhf dmFsdWUsIHR5cGNhY2hlKSA8PSAwKQorCQlyZXR1cm4gMDsKKworCS8vIG5vIG1hdGNoZXMK KwlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmdmFsdWUsICZyYW5nZXNbZW5kXS0+bWF4X3ZhbHVl LCB0eXBjYWNoZSkgPiAwKQorCQlyZXR1cm4gbnJhbmdlczsKKworCXdoaWxlICgoZW5kIC0g c3RhcnQpID4gMCkKKwl7CisJCWludAkgbWlkcG9pbnQ7CisJCWludAkgcjsKKworCQltaWRw b2ludCA9IHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAvIDI7CisKKwkJciA9IHJhbmdlX3ZhbHVl c19jbXAoJnZhbHVlLCAmcmFuZ2VzW21pZHBvaW50XS0+bWF4X3ZhbHVlLCB0eXBjYWNoZSk7 CisKKwkJaWYgKHIgPD0gMCkKKwkJCWVuZCA9IG1pZHBvaW50OworCQllbHNlCisJCQlzdGFy dCA9IChtaWRwb2ludCArIDEpOworCX0KKworCUFzc2VydChyYW5nZXNbc3RhcnRdLT5tYXhf dmFsdWUgPj0gdmFsdWUpOworCUFzc2VydChyYW5nZXNbc3RhcnQtMV0tPm1heF92YWx1ZSA8 IHZhbHVlKTsKKworCXJldHVybiBzdGFydDsKK30KKyNlbmRpZgorCiAvKgogICogbWludmFs X2VuZAogICoJCURldGVybWluZSBmaXJzdCBpbmRleCBzbyB0aGF0IChtaW52YWwgPiB2YWx1 ZSkuCkBAIC02MzIsNiArNjc3LDMxNiBAQCBicmluX21pbm1heF9tYXRjaF90dXBsZXNfdG9f cmFuZ2VzKEJyaW5SYW5nZXMgKnJhbmdlcywKIAlzdGF0cy0+YXZnX21hdGNoZXNfdW5pcXVl ID0gKGRvdWJsZSkgbm1hdGNoZXNfdW5pcXVlIC8gbnZhbHVlc191bmlxdWU7CiB9CiAKKyNp ZmRlZiBERUJVR19CUklOX1NUQVRTCisvKgorICogU2ltcGxlIGhpc3RvZ3JhbSwgd2l0aCBi aW5zIHRyYWNraW5nIHZhbHVlIGFuZCB0d28gb3ZlcmxhcCBjb3VudHMuCisgKgorICogWFhY IE1heWJlIHdlIHNob3VsZCBoYXZlIHR3byBzZXBhcmF0ZSBoaXN0b2dyYW1zLCBvbmUgZm9y IGFsbCBjb3VudHMgYW5kCisgKiBhbm90aGVyIG9uZSBmb3IgInVuaXF1ZSIgdmFsdWVzLgor ICoKKyAqIFhYWCBTZXJpYWxpemUgdGhlIGhpc3RvZ3JhbS4gVGhlcmUgbWlnaHQgYmUgYSBk YXRhIHNldCB3aGVyZSB3ZSBoYXZlIHZlcnkKKyAqIG1hbnkgZGlzdGluY3QgYnVja2V0cyAo dmFsdWVzIGhhdmluZyB2ZXJ5IGRpZmZlcmVudCBudW1iZXIgb2YgbWF0Y2hpbmcKKyAqIHJh bmdlcykgLSBub3Qgc3VyZSBpZiB0aGVyZSdzIHNvbWUgc29ydCBvZiB1cHBlciBsaW1pdCAo YnV0IGhhcmQgdG8gc2F5IGZvcgorICogb3RoZXIgb3BjbGFzc2VzLCBsaWtlIGJsb29tKS4g QW5kIHdlIGRvbid0IHdhbnQgYXJiaXRyYXJpbHkgbGFyZ2UgaGlzdG9ncmFtLAorICogdG8g a2VlcCB0aGUgc3RhdGlzdGljcyBmYWlybHkgc21hbGwsIEkgZ3Vlc3MuIFNvIHdlJ2QgbmVl ZCB0byBwaWNrIGEgc3Vic2V0LAorICogbWVyZ2UgYnVja2V0cyB3aXRoICJzaW1pbGFyIiBj b3VudHMsIG9yIGFwcHJveGltYXRlIGl0IHNvbWVob3cuIEZvciBub3cgd2UKKyAqIGRvbid0 IHNlcmlhbGl6ZSBpdCwgYmVjYXVzZSB3ZSBkb24ndCB1c2UgdGhlIGhpc3RvZ3JhbS4KKyAq LwordHlwZWRlZiBzdHJ1Y3QgaGlzdG9ncmFtX2Jpbl90Cit7CisJaW50NjQJdmFsdWU7CisJ aW50NjQJY291bnQ7Cit9IGhpc3RvZ3JhbV9iaW5fdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGlz dG9ncmFtX3QKK3sKKwlpbnQJCQkJbmJpbnM7CisJaW50CQkJCW5iaW5zX21heDsKKwloaXN0 b2dyYW1fYmluX3QJYmluc1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBoaXN0b2dyYW1f dDsKKworI2RlZmluZSBISVNUT0dSQU1fQklOU19TVEFSVCAzMgorCisvKiBhbGxvY2F0ZSBo aXN0b2dyYW0gd2l0aCBkZWZhdWx0IG51bWJlciBvZiBiaW5zICovCitzdGF0aWMgaGlzdG9n cmFtX3QgKgoraGlzdG9ncmFtX2luaXQodm9pZCkKK3sKKwloaXN0b2dyYW1fdCAqaGlzdDsK KworCWhpc3QgPSAoaGlzdG9ncmFtX3QgKikgcGFsbG9jMChvZmZzZXRvZihoaXN0b2dyYW1f dCwgYmlucykgKworCQkJCQkJCQkgICBzaXplb2YoaGlzdG9ncmFtX2Jpbl90KSAqIEhJU1RP R1JBTV9CSU5TX1NUQVJUKTsKKwloaXN0LT5uYmluc19tYXggPSBISVNUT0dSQU1fQklOU19T VEFSVDsKKworCXJldHVybiBoaXN0OworfQorCisvKgorICogaGlzdG9ncmFtX2FkZAorICoJ CQkgQWRkIGEgaGl0IGZvciBhIHBhcnRpY3VsYXIgdmFsdWUgdG8gdGhlIGhpc3RvZ3JhbS4K KyAqCisgKiBYWFggV2UgZG9uJ3Qgc29ydCB0aGUgYmlucywgc28ganVzdCBkbyBiaW5hcnkg c29ydC4gRm9yIGxhcmdlIG51bWJlciBvZiB2YWx1ZXMKKyAqIHRoaXMgbWlnaHQgYmUgYW4g aXNzdWUsIGZvciBzbWFsbCBudW1iZXIgb2YgdmFsdWVzIGEgbGluZWFyIHNlYXJjaCBpcyBm aW5lLgorICovCitzdGF0aWMgaGlzdG9ncmFtX3QgKgoraGlzdG9ncmFtX2FkZChoaXN0b2dy YW1fdCAqaGlzdCwgaW50IHZhbHVlKQoreworCWJvb2wJZm91bmQgPSBmYWxzZTsKKwloaXN0 b2dyYW1fYmluX3QgKmJpbjsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgaGlzdC0+bmJpbnM7 IGkrKykKKwl7CisJCWlmIChoaXN0LT5iaW5zW2ldLnZhbHVlID09IHZhbHVlKQorCQl7CisJ CQliaW4gPSAmaGlzdC0+Ymluc1tpXTsKKwkJCWZvdW5kID0gdHJ1ZTsKKwkJfQorCX0KKwor CWlmICghZm91bmQpCisJeworCQlpZiAoaGlzdC0+bmJpbnMgPT0gaGlzdC0+bmJpbnNfbWF4 KQorCQl7CisJCQlpbnQJCW5iaW5zID0gKDIgKiBoaXN0LT5uYmluc19tYXgpOworCisJCQlo aXN0ID0gcmVwYWxsb2MoaGlzdCwgb2Zmc2V0b2YoaGlzdG9ncmFtX3QsIGJpbnMpICsKKwkJ CQkJCQlzaXplb2YoaGlzdG9ncmFtX2Jpbl90KSAqIG5iaW5zKTsKKwkJCWhpc3QtPm5iaW5z X21heCA9IG5iaW5zOworCQl9CisKKwkJQXNzZXJ0KGhpc3QtPm5iaW5zIDwgaGlzdC0+bmJp bnNfbWF4KTsKKworCQliaW4gPSAmaGlzdC0+Ymluc1toaXN0LT5uYmlucysrXTsKKwkJYmlu LT52YWx1ZSA9IHZhbHVlOworCQliaW4tPmNvdW50ID0gMDsKKwl9CisKKwliaW4tPmNvdW50 ICs9IDE7CisKKwlBc3NlcnQoYmluLT52YWx1ZSA9PSB2YWx1ZSk7CisJQXNzZXJ0KGJpbi0+ Y291bnQgPj0gMCk7CisKKwlyZXR1cm4gaGlzdDsKK30KKworLyogdXNlZCB0byBzb3J0IGhp c3RvZ3JhbSBiaW5zIGJ5IHZhbHVlICovCitzdGF0aWMgaW50CitoaXN0b2dyYW1fYmluX2Nt cChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQoreworCWhpc3RvZ3JhbV9iaW5fdCAq YmEgPSAoaGlzdG9ncmFtX2Jpbl90ICopIGE7CisJaGlzdG9ncmFtX2Jpbl90ICpiYiA9ICho aXN0b2dyYW1fYmluX3QgKikgYjsKKworCWlmIChiYS0+dmFsdWUgPCBiYi0+dmFsdWUpCisJ CXJldHVybiAtMTsKKworCWlmIChiYi0+dmFsdWUgPCBiYS0+dmFsdWUpCisJCXJldHVybiAx OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitoaXN0b2dyYW1fcHJpbnQoaGlz dG9ncmFtX3QgKmhpc3QpCit7CisJcmV0dXJuOworCisJZWxvZyhXQVJOSU5HLCAiLS0tLS0g aGlzdG9ncmFtIC0tLS0tIik7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBoaXN0LT5uYmluczsg aSsrKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAiYmluICVkIHZhbHVlICVsZCBjb3VudCAlbGQi LAorCQkJCWksIGhpc3QtPmJpbnNbaV0udmFsdWUsIGhpc3QtPmJpbnNbaV0uY291bnQpOwor CX0KK30KKworLyoKKyAqIGJyaW5fbWlubWF4X21hdGNoX3R1cGxlc190b19yYW5nZXMyCisg KgkJTWF0Y2ggdHVwbGVzIHRvIHJhbmdlcywgY291bnQgYXZlcmFnZSBudW1iZXIgb2YgcmFu Z2VzIHBlciB0dXBsZS4KKyAqCisgKiBNYXRjaCBzYW1wbGUgdHVwbGVzIHRvIHRoZSByYW5n ZXMsIHNvIHRoYXQgd2UgY2FuIGNvdW50IGhvdyBtYW55IHJhbmdlcworICogYSB2YWx1ZSBt YXRjaGVzIG9uIGF2ZXJhZ2UuIFRoaXMgbWlnaHQgc2VlbSByZWR1bmRhbnQgdG8gdGhlIG51 bWJlciBvZgorICogb3ZlcmxhcHMsIGJlY2F1c2UgdGhlIHZhbHVlIGlzIH5hdmdfb3Zlcmxh cHMvMi4KKyAqCisgKiBJbWFnaW5lIHJhbmdlcyBhcnJhbmdlZCBpbiAic2hpZnRlZCIgdW5p Zm9ybWx5IGJ5IDEvb3ZlcmxhcHMsIGUuZy4gd2l0aCAzCisgKiBvdmVybGFwcyBbMCwxMDBd LCBbMzMsMTMzXSwgWzY2LCAxNjZdIGFuZCBzbyBvbi4gQSByYW5kb20gdmFsdWUgd2lsbCBo aXQKKyAqIG9ubHkgaGFsZiBvZiB0aGVyZSByYW5nZXMsIHRodXMgMS8yLiBUaGlzIGNhbiBi ZSBleHRlbmRlZCB0byByYW5kb21seQorICogb3ZlcmxhcHBpbmcgcmFuZ2VzLgorICoKKyAq IEhvd2V2ZXIsIHdlIG1heSBub3QgYmUgYWJsZSB0byBjb3VudCBvdmVybGFwcyBmb3Igc29t ZSBvcGNsYXNzZXMgKGUuZy4gZm9yCisgKiBibG9vbSByYW5nZXMpLCBpbiB3aGljaCBjYXNl IHdlIGhhdmUgYXQgbGVhc3QgdGhpcy4KKyAqCisgKiBUaGlzIHNpbXBseSB3YWxrcyB0aGUg dmFsdWVzLCBhbmQgZGV0ZXJtaW5lcyBtYXRjaGluZyByYW5nZXMgYnkgbG9va2luZworICog Zm9yIGxvd2VyL3VwcGVyIGJvdW5kIGluIHJhbmdlcyBvcmRlcmVkIGJ5IG1pbnZhbC9tYXh2 YWwuCisgKgorICogWFhYIFRoZSBvdGhlciBxdWVzdGlvbiBpcyB3aGF0IHRvIGRvIGFib3V0 IGR1cGxpY2F0ZSB2YWx1ZXMuIElmIHdlIGhhdmUgYQorICogdmVyeSBmcmVxdWVudCB2YWx1 ZSBpbiB0aGUgc2FtcGxlLCBpdCdzIGxpa2VseSBpbiBtYW55IHBsYWNlcy9yYW5nZXMuIFdo aWNoCisgKiB3aWxsIHNrZXcgdGhlIGF2ZXJhZ2UsIGJlY2F1c2UgaXQnbGwgYmUgYWRkZWQg cmVwZWF0ZWRseS4gU28gd2UgYWxzbyBjb3VudAorICogYXZnX3JhbmdlcyBmb3IgdW5pcXVl IHZhbHVlcy4KKyAqCisgKiBYWFggVGhlIHJlbGF0aW9uc2hpcCB0aGF0IChhdmVyYWdlX21h dGNoZXMgfiBhdmVyYWdlX292ZXJsYXBzLzIpIG9ubHkKKyAqIHdvcmtzIGZvciBtaW5tYXgg b3BjbGFzcywgYW5kIGNhbid0IGJlIGV4dGVuZGVkIHRvIG1pbm1heC1tdWx0aS4gVGhlCisg KiBvdmVybGFwcyBjYW4gb25seSBjb25zaWRlciB0aGUgdHdvIGV4dHJlbWUgdmFsdWVzIChl c3NlbnRpYWxseSB0cmVhdGluZworICogdGhlIHN1bW1hcnkgYXMgYSBzaW5nbGUgbWlubWF4 IHJhbmdlKSwgYmVjYXVzZSB0aGF0J3Mgd2hhdCBicmluc29ydAorICogbmVlZHMuIEJ1dCB0 aGUgbWlubWF4LW11bHRpIHJhbmdlIG1heSBoYXZlICJnYXBzIiAoa2luZGEgdGhlIHdob2xl IHBvaW50CisgKiBvZiB0aGVzZSBvcGNsYXNzZXMpLCB3aGljaCBhZmZlY3RzIG1hdGNoaW5n IHR1cGxlcyB0byByYW5nZXMuCisgKgorICogWFhYIFRoaXMgYWxzbyBidWlsZHMgaGlzdG9n cmFtcyBvZiB0aGUgbnVtYmVyIG9mIG1hdGNoZXMsIGJvdGggZm9yIHRoZQorICogcmF3IGFu ZCB1bmlxdWUgdmFsdWVzLiBBdCB0aGUgbW9tZW50IHdlIGRvbid0IGRvIGFueXRoaW5nIHdp dGggdGhlCisgKiByZXN1bHRzLCB0aG91Z2ggKGV4Y2VwdCBmb3IgcHJpbnRpbmcgdGhvc2Up LgorICovCitzdGF0aWMgdm9pZAorYnJpbl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3Jhbmdl czIoQnJpblJhbmdlcyAqcmFuZ2VzLAorCQkJCQkJCQkJQnJpblJhbmdlICoqbWlucmFuZ2Vz LCBCcmluUmFuZ2UgKiptYXhyYW5nZXMsCisJCQkJCQkJCQlpbnQgbnVtcm93cywgSGVhcFR1 cGxlICpyb3dzLAorCQkJCQkJCQkJaW50IG52YWx1ZXMsIERhdHVtICp2YWx1ZXMsCisJCQkJ CQkJCQlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsCisJCQkJCQkJCQlCcmluTWlubWF4U3Rh dHMgKnN0YXRzKQoreworCWludDY0CW5tYXRjaGVzID0gMDsKKwlpbnQ2NAlubWF0Y2hlc191 bmlxdWUgPSAwOworCWludDY0CW5tYXRjaGVzX3ZhbHVlID0gMDsKKwlpbnQ2NAludmFsdWVz X3VuaXF1ZSA9IDA7CisKKwloaXN0b2dyYW1fdAkgICAqaGlzdCA9IGhpc3RvZ3JhbV9pbml0 KCk7CisJaGlzdG9ncmFtX3QJICAgKmhpc3RfdW5pcXVlID0gaGlzdG9ncmFtX2luaXQoKTsK KwlUaW1lc3RhbXBUegkJc3RhcnRfdHMgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwlm b3IgKGludCBpID0gMDsgaSA8IG52YWx1ZXM7IGkrKykKKwl7CisJCWludAkJc3RhcnQ7CisJ CWludAkJZW5kOworCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyoKKwkJICog U2FtZSB2YWx1ZSBhcyBwcmVjZWRpbmcsIHNvIGp1c3QgdXNlIHRoZSBwcmVjZWRpbmcgY291 bnQuCisJCSAqIFdlIGRvbid0IGluY3JlbWVudCB0aGUgdW5pcXVlIGNvdW50ZXJzLCBiZWNh dXNlIHRoaXMgaXMKKwkJICogYSBkdXBsaWNhdGUuCisJCSAqLworCQlpZiAoKGkgPiAwKSAm JiAocmFuZ2VfdmFsdWVzX2NtcCgmdmFsdWVzW2ktMV0sICZ2YWx1ZXNbaV0sIHR5cGNhY2hl KSA9PSAwKSkKKwkJeworCQkJbm1hdGNoZXMgKz0gbm1hdGNoZXNfdmFsdWU7CisJCQloaXN0 ID0gaGlzdG9ncmFtX2FkZChoaXN0LCBubWF0Y2hlc192YWx1ZSk7CisJCQljb250aW51ZTsK KwkJfQorCisJCW5tYXRjaGVzX3ZhbHVlID0gMDsKKworCQlzdGFydCA9IG1heHZhbF9zdGFy dChtYXhyYW5nZXMsIHJhbmdlcy0+bnJhbmdlcywgdmFsdWVzW2ldLCB0eXBjYWNoZSk7CisJ CWVuZCA9IG1pbnZhbF9lbmQobWlucmFuZ2VzLCByYW5nZXMtPm5yYW5nZXMsIHZhbHVlc1tp XSwgdHlwY2FjaGUpOworCisJCWZvciAoaW50IGogPSBzdGFydDsgaiA8IHJhbmdlcy0+bnJh bmdlczsgaisrKQorCQl7CisJCQlpZiAobWF4cmFuZ2VzW2pdLT5taW5faW5kZXggPj0gZW5k KQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAobWF4cmFuZ2VzW2pdLT5taW5faW5kZXhfbG93 ZXN0ID49IGVuZCkKKwkJCQlicmVhazsKKworCQkJbm1hdGNoZXNfdmFsdWUrKzsKKwkJfQor CisJCWhpc3QgPSBoaXN0b2dyYW1fYWRkKGhpc3QsIG5tYXRjaGVzX3ZhbHVlKTsKKwkJaGlz dF91bmlxdWUgPSBoaXN0b2dyYW1fYWRkKGhpc3RfdW5pcXVlLCBubWF0Y2hlc192YWx1ZSk7 CisKKwkJbm1hdGNoZXMgKz0gbm1hdGNoZXNfdmFsdWU7CisJCW5tYXRjaGVzX3VuaXF1ZSAr PSBubWF0Y2hlc192YWx1ZTsKKwkJbnZhbHVlc191bmlxdWUrKzsKKwl9CisKKwlpZiAoZGVi dWdfYnJpbl9zdGF0cykKKwl7CisJCWVsb2coV0FSTklORywgIi0tLS0tIGJyaW5fbWlubWF4 X21hdGNoX3R1cGxlc190b19yYW5nZXMyIC0tLS0tIik7CisJCWVsb2coV0FSTklORywgIm5t YXRjaGVzID0gJWxkICVmIiwgbm1hdGNoZXMsIChkb3VibGUpIG5tYXRjaGVzIC8gbnVtcm93 cyk7CisJCWVsb2coV0FSTklORywgIm5tYXRjaGVzIHVuaXF1ZSA9ICVsZCAlbGQgJWYiLAor CQkJIG5tYXRjaGVzX3VuaXF1ZSwgbnZhbHVlc191bmlxdWUsIChkb3VibGUpIG5tYXRjaGVz X3VuaXF1ZSAvIG52YWx1ZXNfdW5pcXVlKTsKKwkJZWxvZyhXQVJOSU5HLCAiZHVyYXRpb24g PSAlbGQiLCBUaW1lc3RhbXBEaWZmZXJlbmNlTWlsbGlzZWNvbmRzKHN0YXJ0X3RzLAorCQkJ CQkJCQkJCUdldEN1cnJlbnRUaW1lc3RhbXAoKSkpOworCX0KKworCWlmIChzdGF0cy0+YXZn X21hdGNoZXMgIT0gKGRvdWJsZSkgbm1hdGNoZXMgLyBudW1yb3dzKQorCQllbG9nKEVSUk9S LCAiYnJpbl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3JhbmdlczI6IGF2Z19tYXRjaGVzIG1p c21hdGNoICVmICE9ICVmIiwKKwkJCSBzdGF0cy0+YXZnX21hdGNoZXMsIChkb3VibGUpIG5t YXRjaGVzIC8gbnVtcm93cyk7CisKKwlpZiAoc3RhdHMtPmF2Z19tYXRjaGVzX3VuaXF1ZSAh PSAoZG91YmxlKSBubWF0Y2hlc191bmlxdWUgLyBudmFsdWVzX3VuaXF1ZSkKKwkJZWxvZyhF UlJPUiwgImJyaW5fbWlubWF4X21hdGNoX3R1cGxlc190b19yYW5nZXMyOiBhdmdfbWF0Y2hl c191bmlxdWUgbWlzbWF0Y2ggJWYgIT0gJWYiLAorCQkJIHN0YXRzLT5hdmdfbWF0Y2hlc191 bmlxdWUsIChkb3VibGUpIG5tYXRjaGVzX3VuaXF1ZSAvIG52YWx1ZXNfdW5pcXVlKTsKKwor CXBnX3Fzb3J0KGhpc3QtPmJpbnMsIGhpc3QtPm5iaW5zLCBzaXplb2YoaGlzdG9ncmFtX2Jp bl90KSwgaGlzdG9ncmFtX2Jpbl9jbXApOworCXBnX3Fzb3J0KGhpc3RfdW5pcXVlLT5iaW5z LCBoaXN0X3VuaXF1ZS0+bmJpbnMsIHNpemVvZihoaXN0b2dyYW1fYmluX3QpLCBoaXN0b2dy YW1fYmluX2NtcCk7CisKKwloaXN0b2dyYW1fcHJpbnQoaGlzdCk7CisJaGlzdG9ncmFtX3By aW50KGhpc3RfdW5pcXVlKTsKKworCXBmcmVlKGhpc3QpOworCXBmcmVlKGhpc3RfdW5pcXVl KTsKK30KKworLyoKKyAqIGJyaW5fbWlubWF4X21hdGNoX3R1cGxlc190b19yYW5nZXNfYnJ1 dGVmb3JjZQorICoJCU1hdGNoIHR1cGxlcyB0byByYW5nZXMsIGNvdW50IGF2ZXJhZ2UgbnVt YmVyIG9mIHJhbmdlcyBwZXIgdHVwbGUuCisgKgorICogQnJ1dGVmb3JjZSBhcHByb2FjaCwg dXNlZCBtb3N0bHkgZm9yIGNyb3NzLWNoZWNraW5nLgorICovCitzdGF0aWMgdm9pZAorYnJp bl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3Jhbmdlc19icnV0ZWZvcmNlKEJyaW5SYW5nZXMg KnJhbmdlcywKKwkJCQkJCQkJCQkJICBpbnQgbnVtcm93cywgSGVhcFR1cGxlICpyb3dzLAor CQkJCQkJCQkJCQkgIGludCBudmFsdWVzLCBEYXR1bSAqdmFsdWVzLAorCQkJCQkJCQkJCQkg IFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwKKwkJCQkJCQkJCQkJICBCcmluTWlubWF4U3Rh dHMgKnN0YXRzKQoreworCWludDY0CW5tYXRjaGVzID0gMDsKKwlpbnQ2NAlubWF0Y2hlc191 bmlxdWUgPSAwOworCWludDY0CW52YWx1ZXNfdW5pcXVlID0gMDsKKworCVRpbWVzdGFtcFR6 CQlzdGFydF90cyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKworCWZvciAoaW50IGkgPSAw OyBpIDwgbnZhbHVlczsgaSsrKQorCXsKKwkJYm9vbAlpc191bmlxdWU7CisJCWludDY0CW5t YXRjaGVzX3ZhbHVlID0gMDsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8q IGlzIHRoaXMgYSBuZXcgdmFsdWU/ICovCisJCWlzX3VuaXF1ZSA9ICgoaSA9PSAwKSB8fCAo cmFuZ2VfdmFsdWVzX2NtcCgmdmFsdWVzW2ktMV0sICZ2YWx1ZXNbaV0sIHR5cGNhY2hlKSAh PSAwKSk7CisKKwkJLyogY291bnQgdW5pcXVlIHZhbHVlcyAqLworCQludmFsdWVzX3VuaXF1 ZSArPSAoaXNfdW5pcXVlKSA/IDEgOiAwOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgcmFu Z2VzLT5ucmFuZ2VzOyBqKyspCisJCXsKKwkJCWlmIChyYW5nZV92YWx1ZXNfY21wKCZ2YWx1 ZXNbaV0sICZyYW5nZXMtPnJhbmdlc1tqXS5taW5fdmFsdWUsIHR5cGNhY2hlKSA8IDApCisJ CQkJY29udGludWU7CisKKwkJCWlmIChyYW5nZV92YWx1ZXNfY21wKCZ2YWx1ZXNbaV0sICZy YW5nZXMtPnJhbmdlc1tqXS5tYXhfdmFsdWUsIHR5cGNhY2hlKSA+IDApCisJCQkJY29udGlu dWU7CisKKwkJCW5tYXRjaGVzX3ZhbHVlKys7CisJCX0KKworCQlubWF0Y2hlcyArPSBubWF0 Y2hlc192YWx1ZTsKKwkJbm1hdGNoZXNfdW5pcXVlICs9IChpc191bmlxdWUpID8gbm1hdGNo ZXNfdmFsdWUgOiAwOworCX0KKworCWlmIChkZWJ1Z19icmluX3N0YXRzKQorCXsKKwkJZWxv ZyhXQVJOSU5HLCAiLS0tLS0gYnJpbl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3Jhbmdlc19i cnV0ZWZvcmNlIC0tLS0tIik7CisJCWVsb2coV0FSTklORywgIm5tYXRjaGVzID0gJWxkICVm Iiwgbm1hdGNoZXMsIChkb3VibGUpIG5tYXRjaGVzIC8gbnVtcm93cyk7CisJCWVsb2coV0FS TklORywgIm5tYXRjaGVzIHVuaXF1ZSA9ICVsZCAlbGQgJWYiLCBubWF0Y2hlc191bmlxdWUs IG52YWx1ZXNfdW5pcXVlLAorCQkJIChkb3VibGUpIG5tYXRjaGVzX3VuaXF1ZSAvIG52YWx1 ZXNfdW5pcXVlKTsKKwkJZWxvZyhXQVJOSU5HLCAiZHVyYXRpb24gPSAlbGQiLCBUaW1lc3Rh bXBEaWZmZXJlbmNlTWlsbGlzZWNvbmRzKHN0YXJ0X3RzLAorCQkJCQkJCQkJCUdldEN1cnJl bnRUaW1lc3RhbXAoKSkpOworCX0KKworCWlmIChzdGF0cy0+YXZnX21hdGNoZXMgIT0gKGRv dWJsZSkgbm1hdGNoZXMgLyBudW1yb3dzKQorCQllbG9nKEVSUk9SLCAiYnJpbl9taW5tYXhf bWF0Y2hfdHVwbGVzX3RvX3Jhbmdlc19icnV0ZWZvcmNlOiBhdmdfbWF0Y2hlcyBtaXNtYXRj aCAlZiAhPSAlZiIsCisJCQkgc3RhdHMtPmF2Z19tYXRjaGVzLCAoZG91YmxlKSBubWF0Y2hl cyAvIG51bXJvd3MpOworCisJaWYgKHN0YXRzLT5hdmdfbWF0Y2hlc191bmlxdWUgIT0gKGRv dWJsZSkgbm1hdGNoZXNfdW5pcXVlIC8gbnZhbHVlc191bmlxdWUpCisJCWVsb2coRVJST1Is ICJicmluX21pbm1heF9tYXRjaF90dXBsZXNfdG9fcmFuZ2VzX2JydXRlZm9yY2U6IGF2Z19t YXRjaGVzX3VuaXF1ZSBtaXNtYXRjaCAlZiAhPSAlZiIsCisJCQkgc3RhdHMtPmF2Z19tYXRj aGVzX3VuaXF1ZSwgKGRvdWJsZSkgbm1hdGNoZXNfdW5pcXVlIC8gbnZhbHVlc191bmlxdWUp OworfQorI2VuZGlmCisKIC8qCiAgKiBicmluX21pbm1heF92YWx1ZV9zdGF0cwogICoJCUNh bGN1bGF0ZSBzdGF0aXN0aWNzIGFib3V0IG1pbnZhbC9tYXh2YWwgdmFsdWVzLgpAQCAtODAz LDYgKzExNTgsMTk4IEBAIGJyaW5fbWlubWF4X2luY3JlbWVudF9zdGF0cyhCcmluUmFuZ2Ug KiptaW5yYW5nZXMsIEJyaW5SYW5nZSAqKm1heHJhbmdlcywKIAlzdGF0cy0+bWF4dmFsX2lu Y3JlbWVudF9tYXggPSBtYXhfbWF4dmFsOwogfQogCisjaWZkZWYgREVCVUdfQlJJTl9TVEFU UworLyoKKyAqIGJyaW5fbWlubWF4X2NvdW50X292ZXJsYXBzMgorICoJCUNhbGN1bGF0ZSBu dW1iZXIgb2Ygb3ZlcmxhcHMuCisgKgorICogVGhpcyB1c2VzIHRoZSBtaW5yYW5nZXMvbWF4 cmFuZ2VzIHRvIHF1aWNrbHkgZWxpbWluYXRlIHJhbmdlcyB0aGF0IGNhbid0CisgKiBwb3Nz aWJseSBpbnRlcnNlY3QuCisgKgorICogWFhYIFNlZW1zIHJhdGhlciBjb21wbGljYXRlZCBh bmQgd29ya3MgcG9vcmx5IGZvciB3aWRlIHJhbmdlcyAod2l0aCBvdXRsaWVyCisgKiB2YWx1 ZXMpLCBicmluX21pbm1heF9jb3VudF9vdmVybGFwcyBpcyBsaWtlbHkgYmV0dGVyLgorICov CitzdGF0aWMgdm9pZAorYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMyKEJyaW5SYW5nZXMg KnJhbmdlcywKKwkJCQkJCSAgIEJyaW5SYW5nZSAqKm1pbnJhbmdlcywgQnJpblJhbmdlICoq bWF4cmFuZ2VzLAorCQkJCQkJICAgVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLCBCcmluTWlu bWF4U3RhdHMgKnN0YXRzKQoreworCWludDY0CQkJbm92ZXJsYXBzOworCVRpbWVzdGFtcFR6 CQlzdGFydF90cyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKworCS8qCisJICogV2FsayB0 aGUgcmFuZ2VzIG9yZGVyZWQgYnkgbWF4X3ZhbHVlcywgc2VlIGhvdyBtYW55IHJhbmdlcyBv dmVybGFwLgorCSAqCisJICogT25jZSB3ZSBnZXQgdG8gYSBzdGF0ZSB3aGVyZSAobWluX3Zh bHVlID4gY3VycmVudC5tYXhfdmFsdWUpIGZvcgorCSAqIGFsbCBmdXR1cmUgcmFuZ2VzLCB3 ZSBrbm93IG5vbmUgb2YgdGhlbSBjYW4gb3ZlcmxhcCBhbmQgd2UgY2FuCisJICogdGVybWlu YXRlLiBUaGlzIGlzIHdoYXQgbWluX2luZGV4X2xvd2VzdCBpcyBmb3IuCisJICoKKwkgKiBY WFggSWYgdGhlcmUgYXJlIHZlcnkgd2lkZSByYW5nZXMgKHdpdGggb3V0bGllciBtaW4vbWF4 IHZhbHVlcyksCisJICogdGhlIG1pbl9pbmRleF9sb3dlc3QgaXMgZ29pbmcgdG8gYmUgcHJl dHR5IHVzZWxlc3MsIGJlY2F1c2UgdGhlCisJICogcmFuZ2Ugd2lsbCBiZSBzb3J0ZWQgYXQg dGhlIHZlcnkgZW5kIGJ5IG1heF92YWx1ZSwgYnV0IHdpbGwgaGF2ZQorCSAqIHZlcnkgbG93 IG1pbl9pbmRleCwgc28gdGhpcyB3b24ndCB3b3JrLgorCSAqCisJICogWFhYIFdlIGNvdWxk IGNvbGxlY3QgYSBtb3JlIGVsYWJvcmF0ZSBzdHVmZiwgbGlrZSBmb3IgZXhhbXBsZSBhCisJ ICogaGlzdG9ncmFtIG9mIG51bWJlciBvZiBvdmVybGFwcywgb3IgbWF4aW11bSBudW1iZXIg b2Ygb3ZlcmxhcHMuCisJICogU28gd2UnZCBoYXZlIGF2ZXJhZ2UsIGJ1dCB0aGVuIGFsc28g YW4gaW5mbyBpZiB0aGVyZSBhcmUgc29tZQorCSAqIHJhbmdlcyB3aXRoIHZlcnkgbWFueSBv dmVybGFwcy4KKwkgKi8KKwlub3ZlcmxhcHMgPSAwOworCWZvciAoaW50IGkgPSAwOyBpIDwg cmFuZ2VzLT5ucmFuZ2VzOyBpKyspCisJeworCQlpbnQJCQlpZHggPSAoaSArIDEpOworCQlC cmluUmFuZ2UgKnJhID0gbWF4cmFuZ2VzW2ldOworCQl1aW50NjQJCW1pbl9pbmRleCA9IHJh LT5taW5faW5kZXg7CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworI2lmZGVmIE5P VF9VU0VECisJCS8qCisJCSAqIFhYWCBOb3QgbmVlZGVkLCB3ZSBjYW4ganVzdCBjb3VudCAi ZnV0dXJlIiByYW5nZXMgYW5kIHRoZW4KKwkJICogd2UganVzdCBtdWx0aXBseSBieSAyLgor CQkgKi8KKworCQkvKgorCQkgKiBXaGF0J3MgdGhlIGZpcnN0IHJhbmdlIHRoYXQgbWlnaHQg b3ZlcmxhcCB3aXRoIHRoaXMgb25lPworCQkgKiBuZWVkcyB0byBoYXZlIG1heHZhbCA+IGN1 cnJlbnQubWludmFsLgorCQkgKi8KKwkJd2hpbGUgKGlkeCA+IDApCisJCXsKKwkJCUJyaW5S YW5nZSAqcmIgPSBtYXhyYW5nZXNbaWR4IC0gMV07CisKKwkJCS8qIHRoZSByYW5nZSBpcyBi ZWZvcmUgdGhlIGN1cnJlbnQgb25lLCBzbyBjYW4ndCBpbnRlcnNlY3QgKi8KKwkJCWlmIChy YW5nZV92YWx1ZXNfY21wKCZyYi0+bWF4X3ZhbHVlLCAmcmEtPm1pbl92YWx1ZSwgdHlwY2Fj aGUpIDwgMCkKKwkJCQlicmVhazsKKworCQkJaWR4LS07CisJCX0KKyNlbmRpZgorCisJCS8q CisJCSAqIEZpbmQgdGhlIGZpcnN0IG1pbl9pbmRleCB0aGF0IGlzIGhpZ2hlciB0aGFuIHRo ZSBtYXhfdmFsdWUsCisJCSAqIHNvIHRoYXQgd2UgY2FuIGNvbXBhcmUgdGhhdCBpbnN0ZWFk IG9mIHRoZSB2YWx1ZXMgaW4gdGhlCisJCSAqIG5leHQgbG9vcC4gVGhlcmUgc2hvdWxkIGJl IGZld2VyIHZhbHVlIGNvbXBhcmlzb25zIHRoYW4gaW4KKwkJICogdGhlIG5leHQgbG9vcCwg c28gd2UnbGwgc2F2ZSBvbiBmdW5jdGlvbiBjYWxscy4KKwkJICovCisJCXdoaWxlIChtaW5f aW5kZXggPCByYW5nZXMtPm5yYW5nZXMpCisJCXsKKwkJCWlmIChyYW5nZV92YWx1ZXNfY21w KCZtaW5yYW5nZXNbbWluX2luZGV4XS0+bWluX3ZhbHVlLAorCQkJCQkJCQkgJnJhLT5tYXhf dmFsdWUsIHR5cGNhY2hlKSA+IDApCisJCQkJYnJlYWs7CisKKwkJCW1pbl9pbmRleCsrOwor CQl9CisKKwkJLyoKKwkJICogV2FsayB0aGUgZm9sbG93aW5nIHJhbmdlcyAob3JkZXJlZCBi eSBtYXhfdmFsdWUpLCBhbmQgY2hlY2sKKwkJICogaWYgaXQgb3ZlcmxhcHMuIElmIGl0IG1h dGNoZXMsIHdlIGxvb2sgYXQgdGhlIG5leHQgb25lLiBJZgorCQkgKiBub3QsIHdlIGNoZWNr IGlmIHRoZXJlIGNhbiBiZSBtb3JlIHJhbmdlcy4KKwkJICovCisJCWZvciAoaW50IGogPSBp ZHg7IGogPCByYW5nZXMtPm5yYW5nZXM7IGorKykKKwkJeworCQkJQnJpblJhbmdlICpyYiA9 IG1heHJhbmdlc1tqXTsKKworCQkJLyogdGhlIHJhbmdlIG92ZXJsYXBzIC0ganVzdCBjb250 aW51ZSB3aXRoIHRoZSBuZXh0IG9uZSAqLworCQkJLy8gaWYgKHJhbmdlX3ZhbHVlc19jbXAo JnJiLT5taW5fdmFsdWUsICZyYS0+bWF4X3ZhbHVlLCB0eXBjYWNoZSkgPD0gMCkKKwkJCWlm IChyYi0+bWluX2luZGV4IDwgbWluX2luZGV4KQorCQkJeworCQkJCW5vdmVybGFwcysrOwor CQkJCWNvbnRpbnVlOworCQkJfQorCisJCQkvKgorCQkJICogQXJlIHRoZXJlIGFueSBmdXR1 cmUgcmFuZ2VzIHRoYXQgbWlnaHQgb3ZlcmxhcD8gV2UgY2FuCisJCQkgKiBjaGVjayB0aGUg bWluX2luZGV4X2xvd2VzdCB0byBkZWNpZGUgcXVpY2tseS4KKwkJCSAqLworCQkJIGlmIChy Yi0+bWluX2luZGV4X2xvd2VzdCA+PSBtaW5faW5kZXgpCisJCQkJCWJyZWFrOworCQl9CisJ fQorCisJLyoKKwkgKiBXZSBvbmx5IGNvdW50IGludGVyc2VjdCBmb3IgImZvbGxvd2luZyIg cmFuZ2VzIHdoZW4gb3JkZXJlZCBieSBtYXh2YWwsCisJICogc28gd2Ugb25seSBzZWUgMS8y IHRoZSBvdmVybGFwcy4gU28gZG91YmxlIHRoZSByZXN1bHQuCisJICovCisJbm92ZXJsYXBz ICo9IDI7CisKKwlpZiAoZGVidWdfYnJpbl9zdGF0cykKKwl7CisJCWVsb2coV0FSTklORywg Ii0tLS0tIGJyaW5fbWlubWF4X2NvdW50X292ZXJsYXBzMiAtLS0tLSIpOworCQllbG9nKFdB Uk5JTkcsICJub3ZlcmxhcHMgPSAlbGQiLCBub3ZlcmxhcHMpOworCQllbG9nKFdBUk5JTkcs ICJkdXJhdGlvbiA9ICVsZCIsIFRpbWVzdGFtcERpZmZlcmVuY2VNaWxsaXNlY29uZHMoc3Rh cnRfdHMsCisJCQkJCQkJCQkJR2V0Q3VycmVudFRpbWVzdGFtcCgpKSk7CisJfQorCisJaWYg KHN0YXRzLT5hdmdfb3ZlcmxhcHMgIT0gKGRvdWJsZSkgbm92ZXJsYXBzIC8gcmFuZ2VzLT5u cmFuZ2VzKQorCQllbG9nKEVSUk9SLCAiYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMyOiBt aXNtYXRjaCAlZiAhPSAlZiIsCisJCQkgc3RhdHMtPmF2Z19vdmVybGFwcywgKGRvdWJsZSkg bm92ZXJsYXBzIC8gcmFuZ2VzLT5ucmFuZ2VzKTsKK30KKworLyoKKyAqIGJyaW5fbWlubWF4 X2NvdW50X292ZXJsYXBzX2JydXRlZm9yY2UKKyAqCQlDYWxjdWxhdGUgbnVtYmVyIG9mIG92 ZXJsYXBzIGJ5IGJydXRlIGZvcmNlLgorICoKKyAqIEFjdHVhbGx5IGNvbXBhcmVzIGV2ZXJ5 IHJhbmdlIHRvIGV2ZXJ5IG90aGVyIHJhbmdlLiBRdWl0ZSBleHBlbnNpdmUsIHVzZWQKKyAq IHByaW1hcmlseSB0byBjcm9zcy1jaGVjayB0aGUgb3RoZXIgYWxnb3JpdGhtcy4KKyAqLwor c3RhdGljIHZvaWQKK2JyaW5fbWlubWF4X2NvdW50X292ZXJsYXBzX2JydXRlZm9yY2UoQnJp blJhbmdlcyAqcmFuZ2VzLAorCQkJCQkJCQkJICBUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUs CisJCQkJCQkJCQkgIEJyaW5NaW5tYXhTdGF0cyAqc3RhdHMpCit7CisJaW50NjQJCQlub3Zl cmxhcHM7CisJVGltZXN0YW1wVHoJCXN0YXJ0X3RzID0gR2V0Q3VycmVudFRpbWVzdGFtcCgp OworCisJLyoKKwkgKiBCcnV0ZSBmb3JjZSBjYWxjdWxhdGlvbiBvZiBvdmVybGFwcGluZyBy YW5nZXMsIGNvbXBhcmluZyBlYWNoCisJICogcmFuZ2UgdG8gZXZlcnkgb3RoZXIgcmFuZ2Ug LSBib3VuZCB0byBiZSBwcmV0dHkgZXhwZW5zaXZlLCBhcworCSAqIGl0J3MgcHJldHR5IG11 Y2ggTyhOXjIpLiBLZXB0IG1vc3RseSBmb3IgZWFzeSBjcm9zcy1jaGVjayB3aXRoCisJICog dGhlIHByZWNlZGluZyAib3B0aW1pemVkIiBjb2RlLgorCSAqLworCW5vdmVybGFwcyA9IDA7 CisJZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZXMtPm5yYW5nZXM7IGkrKykKKwl7CisJCUJy aW5SYW5nZSAqcmEgPSAmcmFuZ2VzLT5yYW5nZXNbaV07CisKKwkJZm9yIChpbnQgaiA9IDA7 IGogPCByYW5nZXMtPm5yYW5nZXM7IGorKykKKwkJeworCQkJQnJpblJhbmdlICpyYiA9ICZy YW5nZXMtPnJhbmdlc1tqXTsKKworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkJ aWYgKGkgPT0gaikKKwkJCQljb250aW51ZTsKKworCQkJaWYgKHJhbmdlX3ZhbHVlc19jbXAo JnJhLT5tYXhfdmFsdWUsICZyYi0+bWluX3ZhbHVlLCB0eXBjYWNoZSkgPCAwKQorCQkJCWNv bnRpbnVlOworCisJCQlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmcmItPm1heF92YWx1ZSwgJnJh LT5taW5fdmFsdWUsIHR5cGNhY2hlKSA8IDApCisJCQkJY29udGludWU7CisKKyNpZiAwCisJ CQllbG9nKERFQlVHMSwgIlslbGQsJWxkXSBvdmVybGFwcyBbJWxkLCVsZF0iLAorCQkJCSBy YS0+bWluX3ZhbHVlLCByYS0+bWF4X3ZhbHVlLAorCQkJCSByYi0+bWluX3ZhbHVlLCByYi0+ bWF4X3ZhbHVlKTsKKyNlbmRpZgorCisJCQlub3ZlcmxhcHMrKzsKKwkJfQorCX0KKworCWlm IChkZWJ1Z19icmluX3N0YXRzKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAiLS0tLS0gYnJpbl9t aW5tYXhfY291bnRfb3ZlcmxhcHNfYnJ1dGVmb3JjZSAtLS0tLSIpOworCQllbG9nKFdBUk5J TkcsICJub3ZlcmxhcHMgPSAlbGQiLCBub3ZlcmxhcHMpOworCQllbG9nKFdBUk5JTkcsICJk dXJhdGlvbiA9ICVsZCIsIFRpbWVzdGFtcERpZmZlcmVuY2VNaWxsaXNlY29uZHMoc3RhcnRf dHMsCisJCQkJCQkJCQkJR2V0Q3VycmVudFRpbWVzdGFtcCgpKSk7CisJfQorCisJaWYgKHN0 YXRzLT5hdmdfb3ZlcmxhcHMgIT0gKGRvdWJsZSkgbm92ZXJsYXBzIC8gcmFuZ2VzLT5ucmFu Z2VzKQorCQllbG9nKEVSUk9SLCAiYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMyOiBtaXNt YXRjaCAlZiAhPSAlZiIsCisJCQkgc3RhdHMtPmF2Z19vdmVybGFwcywgKGRvdWJsZSkgbm92 ZXJsYXBzIC8gcmFuZ2VzLT5ucmFuZ2VzKTsKK30KKyNlbmRpZgorCiAvKgogICogYnJpbl9t aW5tYXhfc3RhdHMKICAqCQlDYWxjdWxhdGUgY3VzdG9tIHN0YXRpc3RpY3MgZm9yIGEgQlJJ TiBtaW5tYXggaW5kZXguCkBAIC04MTQsNiArMTM2MSwxMSBAQCBicmluX21pbm1heF9pbmNy ZW1lbnRfc3RhdHMoQnJpblJhbmdlICoqbWlucmFuZ2VzLCBCcmluUmFuZ2UgKiptYXhyYW5n ZXMsCiAgKiAgLSBhdmVyYWdlIG51bWJlciBvZiByb3dzIG1hdGNoaW5nIGEgcmFuZ2UKICAq ICAtIG51bWJlciBvZiBkaXN0aW5jdCBtaW52YWwvbWF4dmFsIHZhbHVlcwogICoKKyAqIFRo ZXJlIGFyZSBtdWx0aXBsZSB3YXlzIHRvIGNhbGN1bGF0ZSBzb21lIG9mIHRoZSBtZXRyaWNz LCBzbyB0byBhbGxvdworICogY3Jvc3MtY2hlY2tpbmcgZHVyaW5nIGRldmVsb3BtZW50IGl0 J3MgcG9zc2libGUgdG8gcnVuIGFuZCBjb21wYXJlIGFsbC4KKyAqIFRvIGRvIHRoYXQsIGRl ZmluZSBTVEFUU19DUk9TU19DSEVDSy4gVGhlcmUncyBhbHNvIFNUQVRTX0RFQlVHIGRlZmlu ZQorICogdGhhdCBzaW1wbHkgcHJpbnRzIHRoZSBjYWxjdWxhdGVkIHJlc3VsdHMuCisgKgog ICogWFhYIFRoaXMgY291bGQgYWxzbyBjYWxjdWxhdGUgY29ycmVsYXRpb24gb2YgdGhlIHJh bmdlIG1pbnZhbCwgc28gdGhhdAogICogd2UgY2FuIGVzdGltYXRlIGhvdyBtdWNoIHJhbmRv bSBJL08gd2lsbCBoYXBwZW4gZHVyaW5nIHRoZSBCcmluU29ydC4KICAqIEFuZCBwZXJoYXBz IHdlIHNob3VsZCBhbHNvIHNvcnQgdGhlIHJhbmdlcyBieSAobWludmFsLGJsb2NrX3N0YXJ0 KSB0bwpAQCAtMTE0MSw2ICsxNjkzLDE0IEBAIGJyaW5fbWlubWF4X3N0YXRzKFBHX0ZVTkNU SU9OX0FSR1MpCiAJLyogY2FsY3VsYXRlIGF2ZXJhZ2UgbnVtYmVyIG9mIG92ZXJsYXBwaW5n IHJhbmdlcyBmb3IgYW55IHJhbmdlICovCiAJYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMo bWlucmFuZ2VzLCByYW5nZXMtPm5yYW5nZXMsIHR5cGNhY2hlLCBzdGF0cyk7CiAKKyNpZmRl ZiBERUJVR19CUklOX1NUQVRTCisJaWYgKGRlYnVnX2JyaW5fY3Jvc3NfY2hlY2spCisJewor CQlicmluX21pbm1heF9jb3VudF9vdmVybGFwczIocmFuZ2VzLCBtaW5yYW5nZXMsIG1heHJh bmdlcywgdHlwY2FjaGUsIHN0YXRzKTsKKwkJYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHNf YnJ1dGVmb3JjZShyYW5nZXMsIHR5cGNhY2hlLCBzdGF0cyk7CisJfQorI2VuZGlmCisKIAkv KiBjYWxjdWxhdGUgbWludmFsL21heHZhbCBzdGF0cyAoZGlzdGluY3QgdmFsdWVzIGFuZCBj b3JyZWxhdGlvbikgKi8KIAlicmluX21pbm1heF92YWx1ZV9zdGF0cyhtaW5yYW5nZXMsIG1h eHJhbmdlcywKIAkJCQkJCQlyYW5nZXMtPm5yYW5nZXMsIHR5cGNhY2hlLCBzdGF0cyk7CkBA IC0xMjA2LDYgKzE3NjYsMjAgQEAgYnJpbl9taW5tYXhfc3RhdHMoUEdfRlVOQ1RJT05fQVJH UykKIAkJCQkJCQkJCQkgICBudW1yb3dzLCByb3dzLCBudmFsdWVzLCB2YWx1ZXMsCiAJCQkJ CQkJCQkJICAgdHlwY2FjaGUsIHN0YXRzKTsKIAorI2lmZGVmIERFQlVHX0JSSU5fU1RBVFMK KwkJaWYgKGRlYnVnX2JyaW5fY3Jvc3NfY2hlY2spCisJCXsKKwkJCWJyaW5fbWlubWF4X21h dGNoX3R1cGxlc190b19yYW5nZXMyKHJhbmdlcywgbWlucmFuZ2VzLCBtYXhyYW5nZXMsCisJ CQkJCQkJCQkJCQludW1yb3dzLCByb3dzLCBudmFsdWVzLCB2YWx1ZXMsCisJCQkJCQkJCQkJ CQl0eXBjYWNoZSwgc3RhdHMpOworCisJCQlicmluX21pbm1heF9tYXRjaF90dXBsZXNfdG9f cmFuZ2VzX2JydXRlZm9yY2UocmFuZ2VzLAorCQkJCQkJCQkJCQkJCQkgIG51bXJvd3MsIHJv d3MsCisJCQkJCQkJCQkJCQkJCSAgbnZhbHVlcywgdmFsdWVzLAorCQkJCQkJCQkJCQkJCQkg IHR5cGNhY2hlLCBzdGF0cyk7CisJCX0KKyNlbmRpZgorCiAJCWJyaW5fbWlubWF4X2luY3Jl bWVudF9zdGF0cyhtaW5yYW5nZXMsIG1heHJhbmdlcywgcmFuZ2VzLT5ucmFuZ2VzLAogCQkJ CQkJCQkJdmFsdWVzLCBudmFsdWVzLCB0eXBjYWNoZSwgc3RhdHMpOwogCX0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggOTcxMWEyM2MzNC4uMmZhN2FjMDA1MiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTEwMCw2ICsxMDAsNyBA QCBleHRlcm4gYm9vbCBpZ25vcmVfaW52YWxpZF9wYWdlczsKIAogI2lmZGVmIERFQlVHX0JS SU5fU1RBVFMKIGV4dGVybiBib29sIGRlYnVnX2JyaW5fc3RhdHM7CitleHRlcm4gYm9vbCBk ZWJ1Z19icmluX2Nyb3NzX2NoZWNrOwogI2VuZGlmCiAKICNpZmRlZiBUUkFDRV9TWU5DU0NB TgpAQCAtMTI2OSw2ICsxMjcwLDE1IEBAIHN0cnVjdCBjb25maWdfYm9vbCBDb25maWd1cmVO YW1lc0Jvb2xbXSA9CiAJCWZhbHNlLAogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKKwl7CisJ CXsiZGVidWdfYnJpbl9jcm9zc19jaGVjayIsIFBHQ19VU0VSU0VULCBERVZFTE9QRVJfT1BU SU9OUywKKwkJCWdldHRleHRfbm9vcCgiQ3Jvc3MtY2hlY2sgY2FsY3VsYXRpb24gb2YgQlJJ TiBzdGF0aXN0aWNzLiIpLAorCQkJTlVMTAorCQl9LAorCQkmZGVidWdfYnJpbl9jcm9zc19j aGVjaywKKwkJZmFsc2UsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogI2VuZGlmCiAKIAl7 Ci0tIAoyLjQxLjAKCg== --------------CooOQ6LlXwcsddypE9zFAJMn Content-Type: text/x-patch; charset=UTF-8; name="0004-Allow-BRIN-indexes-to-produce-sorted-output-20230710.patch" Content-Disposition: attachment; filename*0="0004-Allow-BRIN-indexes-to-produce-sorted-output-20230710.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxY2I0OTdiYTVhY2U2MjQxOTRlMmMzNmYyNTFhYWQ5ZTEyNTk2MjFhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA5IE9jdCAyMDIyIDExOjMzOjM3ICswMjAwClN1Ympl Y3Q6IFtQQVRDSCAwNC8xMV0gQWxsb3cgQlJJTiBpbmRleGVzIHRvIHByb2R1Y2Ugc29ydGVk IG91dHB1dAoKU29tZSBCUklOIGluZGV4ZXMgY2FuIGJlIHVzZWQgdG8gcHJvZHVjZSBzb3J0 ZWQgb3V0cHV0LCBieSB1c2luZyB0aGUKcmFuZ2UgaW5mb3JtYXRpb24gdG8gc29ydCB0dXBs ZXMgaW5jcmVtZW50YWxseS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkKaW50ZXJlc3RpbmcgZm9y IExJTUlUIHF1ZXJpZXMsIHdoaWNoIG9ubHkgbmVlZCB0byBzY2FuIHRoZSBmaXJzdCBmZXcK cm93cywgYW5kIGFsdGVybmF0aXZlIHBsYW5zIChlLmcuIFNlcSBTY2FuICsgU29ydCkgaGF2 ZSBhIHZlcnkgaGlnaApzdGFydHVwIGNvc3QuCgpPZiBjb3Vyc2UsIGlmIHRoZXJlIGFyZSBl LmcuIEJUUkVFIGluZGV4ZXMgdGhpcyBpcyBnb2luZyB0byBiZSBzbG93ZXIsCmJ1dCBwZW9w bGUgYXJlIHVubGlrZWx5IHRvIGhhdmUgYm90aCBpbmRleCB0eXBlcyBvbiB0aGUgc2FtZSBj b2x1bW4uCgpUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIHVzZSBlbmFibGVfYnJpbnNv cnQgR1VDIHRvIGVuYWJsZSBpdC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu X21pbm1heC5jICAgICAgICAgfCAgNDAyICsrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYyAgICAgICAgICAgICAgICB8ICAgNDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv TWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUHJvY25vZGUuYyAgICAgICAgICAgfCAgIDEwICsKIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJyaW5Tb3J0LmMgICAgICAgICAgIHwgMTYxMiArKysrKysrKysrKysrKysr Kwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyAgICAgICAgIHwgIDI1 NCArKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgICAgICAgICB8 ICAxODMgKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMgICAgICAg ICB8ICAgNDkgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jICAg ICAgIHwgIDI2MCArKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAg ICAgICAgICB8ICAgMTkgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUu YyAgICAgICAgIHwgICA1NyArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YyAgICAgICAgICAgfCAgIDI4ICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZSB8ICAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNv cnQuYyAgICAgICAgICAgIHwgICAxMiArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbi5oICAg ICAgICAgICAgICAgICAgICAgfCAgIDM1IC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9icmluX2lu dGVybmFsLmggICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19h bXByb2MuZGF0ICAgICAgICAgICAgIHwgICA2NCArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9y L25vZGVCcmluU29ydC5oICAgICAgICAgICB8ICAgNDcgKwogc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgIDEwOCArKwogc3JjL2luY2x1ZGUvbm9k ZXMvcGF0aG5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAxMSArCiBzcmMvaW5jbHVkZS9u b2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDMyICsKIHNyYy9pbmNsdWRl L29wdGltaXplci9jb3N0LmggICAgICAgICAgICAgICAgICB8ICAgIDMgKwogc3JjL2luY2x1 ZGUvb3B0aW1pemVyL3BhdGhub2RlLmggICAgICAgICAgICAgIHwgICAgOSArCiBzcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9p bmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgICAgICAgIHwgICAgMyArLQog MjggZmlsZXMgY2hhbmdlZCwgMzIxNyBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVCcmluU29y dC5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXgu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKaW5kZXggYTRjMDBj YWFmZC4uMTYyNjUwY2Y3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbl9taW5tYXguYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1h eC5jCkBAIC0xNiw2ICsxNiwxMCBAQAogI2luY2x1ZGUgImFjY2Vzcy9icmluX3R1cGxlLmgi CiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVt LmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxl YW0uaCIKKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19hbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYW1vcC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCkBAIC00Myw2 ICs0Nyw5IEBAIHN0YXRpYyBGbWdySW5mbyAqbWlubWF4X2dldF9zdHJhdGVneV9wcm9jaW5m byhCcmluRGVzYyAqYmRlc2MsIHVpbnQxNiBhdHRubywKIAkJCQkJCQkJCQkJICBPaWQgc3Vi dHlwZSwgdWludDE2IHN0cmF0ZWd5bnVtKTsKIAogCisvKiBwcmludCBpbmZvIGFib3V0IHJh bmdlcyAqLworI2RlZmluZSBCUklOU09SVF9ERUJVRworCiBEYXR1bQogYnJpbl9taW5tYXhf b3BjaW5mbyhQR19GVU5DVElPTl9BUkdTKQogewpAQCAtMTgwOSw2ICsxODE2LDQwMSBAQCBj bGVhbnVwOgogCVBHX1JFVFVSTl9QT0lOVEVSKHN0YXRzKTsKIH0KIAorLyoKKyAqIGJyaW5f bWlubWF4X3JhbmdlX3R1cGRlc2MKKyAqCQlDcmVhdGUgYSB0dXBsZSBkZXNjcmlwdG9yIHRv IHN0b3JlIEJyaW5SYW5nZSBkYXRhLgorICovCitzdGF0aWMgVHVwbGVEZXNjCiticmluX21p bm1heF9yYW5nZV90dXBkZXNjKEJyaW5EZXNjICpicmRlc2MsIEF0dHJOdW1iZXIgYXR0bnVt KQoreworCVR1cGxlRGVzYwl0dXBkZXNjOworCUF0dHJOdW1iZXIJYXR0bm8gPSAxOworCisJ LyogZXhwZWN0IG1pbmltdW0gYW5kIG1heGltdW0gKi8KKwlBc3NlcnQoYnJkZXNjLT5iZF9p bmZvW2F0dG51bSAtIDFdLT5vaV9uc3RvcmVkID09IDIpOworCisJdHVwZGVzYyA9IENyZWF0 ZVRlbXBsYXRlVHVwbGVEZXNjKDcpOworCisJLyogYmxrbm9fc3RhcnQgKi8KKwlUdXBsZURl c2NJbml0RW50cnkodHVwZGVzYywgYXR0bm8rKywgTlVMTCwgSU5UNE9JRCwgLTEsIDApOwor CisJLyogYmxrbm9fZW5kIChjb3VsZCBiZSBjYWxjdWxhdGVkIGFzIGJsa25vX3N0YXJ0ICsg cGFnZXNfcGVyX3JhbmdlKSAqLworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCBhdHRu bysrLCBOVUxMLCBJTlQ0T0lELCAtMSwgMCk7CisKKwkvKiBoYXNfbnVsbHMgKi8KKwlUdXBs ZURlc2NJbml0RW50cnkodHVwZGVzYywgYXR0bm8rKywgTlVMTCwgQk9PTE9JRCwgLTEsIDAp OworCisJLyogYWxsX251bGxzICovCisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIGF0 dG5vKyssIE5VTEwsIEJPT0xPSUQsIC0xLCAwKTsKKworCS8qIG5vdF9zdW1tYXJpemVkICov CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIGF0dG5vKyssIE5VTEwsIEJPT0xPSUQs IC0xLCAwKTsKKworCS8qIG1pbl92YWx1ZSAqLworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBk ZXNjLCBhdHRubysrLCBOVUxMLAorCQkJCQkgICBicmRlc2MtPmJkX2luZm9bYXR0bnVtIC0g MV0tPm9pX3R5cGNhY2hlWzBdLT50eXBlX2lkLAorCQkJCQkJCQkgICAtMSwgMCk7CisKKwkv KiBtYXhfdmFsdWUgKi8KKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgYXR0bm8rKywg TlVMTCwKKwkJCQkJICAgYnJkZXNjLT5iZF9pbmZvW2F0dG51bSAtIDFdLT5vaV90eXBjYWNo ZVswXS0+dHlwZV9pZCwKKwkJCQkJCQkJICAgLTEsIDApOworCisJcmV0dXJuIHR1cGRlc2M7 Cit9CisKKy8qCisgKiBicmluX21pbm1heF9zY2FuX2luaXQKKyAqCQlQcmVwYXJlIHRoZSBC cmluUmFuZ2VTY2FuRGVzYyBpbmNsdWRpbmcgdGhlIHNvcnRpbmcgaW5mbyBldGMuCisgKgor ICogV2Ugd2FudCB0byBoYXZlIHRoZSByYW5nZXMgaW4gcm91Z2hseSB0aGlzIG9yZGVyCisg KgorICogLSBub3Qtc3VtbWFyaXplZAorICogLSBzdW1tYXJpemVkLCBub24tbnVsbCB2YWx1 ZXMKKyAqIC0gc3VtbWFyaXplZCwgYWxsLW51bGxzCisgKgorICogV2UgZG8gaXQgdGhpcyB3 YXksIGJlY2F1c2UgdGhlIG5vdC1zdW1tYXJpemVkIHJhbmdlcyBuZWVkIHRvIGJlCisgKiBz Y2FubmVkIGFsd2F5cyAoYm90aCB0byBwcm9kdWNlIE5VTEwgYW5kIG5vbi1OVUxMIHZhbHVl cyksIGFuZAorICogd2UgbmVlZCB0byByZWFkIGFsbCBvZiB0aGVtIGludG8gdGhlIHR1cGxl c29ydCBiZWZvcmUgcHJvZHVjaW5nCisgKiBhbnl0aGluZy4gU28gcGxhY2luZyB0aGVtIGF0 IHRoZSBiZWdpbm5pbmcgaXMgcmVhc29uYWJsZS4KKyAqCisgKiBUaGUgYWxsLW51bGxzIHJh bmdlcyBhcmUgcGxhY2VkIGxhc3QsIGJlY2F1c2Ugd2hlbiBwcm9jZXNzaW5nCisgKiBOVUxM cyB3ZSBuZWVkIHRvIHNjYW4gZXZlcnl0aGluZyBhbnl3YXkgKHNvbWUgb2YgdGhlIHJhbmdl cyBtaWdodAorICogaGF2ZSBoYXNfbnVsbHM9dHJ1ZSkuIEJ1dCBmb3Igbm9uLU5VTEwgdmFs dWVzIHdlIGNhbiBhYm9ydCBvbmNlCisgKiB3ZSBoaXQgdGhlIGZpcnN0IGFsbC1udWxscyBy YW5nZS4KKyAqCisgKiBUaGUgcmVndWxhciByYW5nZXMgYXJlIHNvcnRlZCBieSBibGtub19z dGFydCwgdG8gbWFrZSBpdCBtYXliZQorICogYSBiaXQgbW9yZSBzZXF1ZW50aWFsIChidXQg dGhpcyBvbmx5IGhlbHBzIGlmIHRoZXJlIGFyZSByYW5nZXMKKyAqIHdpdGggdGhlIHNhbWUg bWludmFsKS4KKyAqLworc3RhdGljIEJyaW5SYW5nZVNjYW5EZXNjICoKK2JyaW5fbWlubWF4 X3NjYW5faW5pdChCcmluRGVzYyAqYmRlc2MsIE9pZCBjb2xsYXRpb24sIEF0dHJOdW1iZXIg YXR0bnVtLCBib29sIGFzYykKK3sKKwlCcmluUmFuZ2VTY2FuRGVzYyAgKnNjYW47CisKKwkv KiBzb3J0IGJ5IChub3Rfc3VtbWFyaXplZCwgbWludmFsLCBibGtub19zdGFydCwgYWxsX251 bGxzKSAqLworCUF0dHJOdW1iZXIJCQlrZXlzWzRdOworCU9pZAkJCQkJY29sbGF0aW9uc1s0 XTsKKwlib29sCQkJCW51bGxzRmlyc3RbNF07CisJT2lkCQkJCQlvcGVyYXRvcnNbNF07CisJ T2lkCQkJCQl0eXBpZDsKKwlUeXBlQ2FjaGVFbnRyeQkgICAqdHlwY2FjaGU7CisKKwkvKiB3 ZSBleHBlY3QgdG8gaGF2ZSBtaW4vbWF4IHZhbHVlIGZvciBlYWNoIHJhbmdlLCBzYW1lIHR5 cGUgZm9yIGJvdGggKi8KKwlBc3NlcnQoYmRlc2MtPmJkX2luZm9bYXR0bnVtIC0gMV0tPm9p X25zdG9yZWQgPT0gMik7CisJQXNzZXJ0KGJkZXNjLT5iZF9pbmZvW2F0dG51bSAtIDFdLT5v aV90eXBjYWNoZVswXS0+dHlwZV9pZCA9PQorCQkgICBiZGVzYy0+YmRfaW5mb1thdHRudW0g LSAxXS0+b2lfdHlwY2FjaGVbMV0tPnR5cGVfaWQpOworCisJc2NhbiA9IChCcmluUmFuZ2VT Y2FuRGVzYyAqKSBwYWxsb2MwKHNpemVvZihCcmluUmFuZ2VTY2FuRGVzYykpOworCisJLyog YnVpbGQgdHVwbGUgZGVzY3JpcHRvciBmb3IgcmFuZ2UgZGF0YSAqLworCXNjYW4tPnRkZXNj ID0gYnJpbl9taW5tYXhfcmFuZ2VfdHVwZGVzYyhiZGVzYywgYXR0bnVtKTsKKworCS8qIGlu aXRpYWxpemUgb3JkZXJpbmcgaW5mbyAqLworCWtleXNbMF0gPSA1OwkJCQkvKiBub3Rfc3Vt bWFyaXplZCAqLworCWtleXNbMV0gPSA0OwkJCQkvKiBhbGxfbnVsbHMgKi8KKwlrZXlzWzJd ID0gKGFzYykgPyA2IDogNzsJLyogbWluX3ZhbHVlIChhc2MpIG9yIG1heF92YWx1ZSAoZGVz YykgKi8KKwlrZXlzWzNdID0gMTsJCQkJLyogYmxrbm9fc3RhcnQgKi8KKworCWNvbGxhdGlv bnNbMF0gPSBJbnZhbGlkT2lkOwkvKiBGSVhNRSAqLworCWNvbGxhdGlvbnNbMV0gPSBJbnZh bGlkT2lkOwkvKiBGSVhNRSAqLworCWNvbGxhdGlvbnNbMl0gPSBjb2xsYXRpb247CS8qIEZJ WE1FICovCisJY29sbGF0aW9uc1szXSA9IEludmFsaWRPaWQ7CS8qIEZJWE1FICovCisKKwkv KiB1bnJlbGF0ZWQgdG8gdGhlIG9yZGVyaW5nIGRlc2lyZWQgYnkgdGhlIHVzZXIgKi8KKwlu dWxsc0ZpcnN0WzBdID0gZmFsc2U7CisJbnVsbHNGaXJzdFsxXSA9IGZhbHNlOworCW51bGxz Rmlyc3RbMl0gPSBmYWxzZTsKKwludWxsc0ZpcnN0WzNdID0gZmFsc2U7CisKKwkvKiBsb29r dXAgc29ydCBvcGVyYXRvciBmb3IgdGhlIGJvb2xlYW4gdHlwZSAodXNlZCBmb3Igbm90X3N1 bW1hcml6ZWQpICovCisJdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShCT09MT0lELCBU WVBFQ0FDSEVfR1RfT1BSKTsKKwlvcGVyYXRvcnNbMF0gPSB0eXBjYWNoZS0+Z3Rfb3ByOwor CisJLyogbG9va3VwIHNvcnQgb3BlcmF0b3IgZm9yIHRoZSBib29sZWFuIHR5cGUgKHVzZWQg Zm9yIGFsbF9udWxscykgKi8KKwl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKEJPT0xP SUQsIFRZUEVDQUNIRV9MVF9PUFIpOworCW9wZXJhdG9yc1sxXSA9IHR5cGNhY2hlLT5sdF9v cHI7CisKKwkvKiBsb29rdXAgc29ydCBvcGVyYXRvciBmb3IgdGhlIG1pbi9tYXggdHlwZSAq LworCXR5cGlkID0gYmRlc2MtPmJkX2luZm9bYXR0bnVtIC0gMV0tPm9pX3R5cGNhY2hlWzBd LT50eXBlX2lkOworCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUodHlwaWQsIFRZUEVD QUNIRV9MVF9PUFIgfCBUWVBFQ0FDSEVfR1RfT1BSKTsKKwlvcGVyYXRvcnNbMl0gPSAoYXNj KSA/IHR5cGNhY2hlLT5sdF9vcHIgOiB0eXBjYWNoZS0+Z3Rfb3ByOworCisJLyogbG9va3Vw IHNvcnQgb3BlcmF0b3IgZm9yIHRoZSBiaWdpbnQgdHlwZSAodXNlZCBmb3IgYmxrbm9fc3Rh cnQpICovCisJdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShJTlQ0T0lELCBUWVBFQ0FD SEVfTFRfT1BSKTsKKwlvcGVyYXRvcnNbM10gPSB0eXBjYWNoZS0+bHRfb3ByOworCisJLyoK KwkgKiBYWFggYmV0dGVyIHRvIGtlZXAgdGhpcyBzbWFsbCBlbm91Z2ggdG8gZml0IGludG8g TDIvTDMsIGxhcmdlIHZhbHVlcworCSAqIG9mIHdvcmtfbWVtIG1heSBlYXNpbHkgbWFrZSB0 aGlzIHNsb3dlci4KKwkgKi8KKwlzY2FuLT5yYW5nZXMgPSB0dXBsZXNvcnRfYmVnaW5faGVh cChzY2FuLT50ZGVzYywKKwkJCQkJCQkJCQk0LCAvKiBua2V5cyAqLworCQkJCQkJCQkJCWtl eXMsCisJCQkJCQkJCQkJb3BlcmF0b3JzLAorCQkJCQkJCQkJCWNvbGxhdGlvbnMsCisJCQkJ CQkJCQkJbnVsbHNGaXJzdCwKKwkJCQkJCQkJCQl3b3JrX21lbSwKKwkJCQkJCQkJCQlOVUxM LAorCQkJCQkJCQkJCVRVUExFU09SVF9SQU5ET01BQ0NFU1MpOworCisJc2Nhbi0+c2xvdCA9 IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChzY2FuLT50ZGVzYywKKwkJCQkJCQkJCQkgICZU VFNPcHNNaW5pbWFsVHVwbGUpOworCisJcmV0dXJuIHNjYW47Cit9CisKKy8qCisgKiBicmlu X21pbm1heF9zY2FuX2FkZF90dXBsZQorICoJCUZvcm0gYW5kIHN0b3JlIGEgdHVwbGUgcmVw cmVzZW50aW5nIHRoZSBCUklOIHJhbmdlIHRvIHRoZSB0dXBsZXN0b3JlLgorICovCitzdGF0 aWMgdm9pZAorYnJpbl9taW5tYXhfc2Nhbl9hZGRfdHVwbGUoQnJpblJhbmdlU2NhbkRlc2Mg KnNjYW4sIFR1cGxlVGFibGVTbG90ICpzbG90LAorCQkJCQkJICAgQmxvY2tOdW1iZXIgYmxv Y2tfc3RhcnQsIEJsb2NrTnVtYmVyIGJsb2NrX2VuZCwKKwkJCQkJCSAgIGJvb2wgaGFzX251 bGxzLCBib29sIGFsbF9udWxscywgYm9vbCBub3Rfc3VtbWFyaXplZCwKKwkJCQkJCSAgIERh dHVtIG1pbl92YWx1ZSwgRGF0dW0gbWF4X3ZhbHVlKQoreworCUV4ZWNDbGVhclR1cGxlKHNs b3QpOworCisJbWVtc2V0KHNsb3QtPnR0c19pc251bGwsIGZhbHNlLCA3ICogc2l6ZW9mKGJv b2wpKTsKKworCXNsb3QtPnR0c192YWx1ZXNbMF0gPSBVSW50MzJHZXREYXR1bShibG9ja19z dGFydCk7CisJc2xvdC0+dHRzX3ZhbHVlc1sxXSA9IFVJbnQzMkdldERhdHVtKGJsb2NrX2Vu ZCk7CisJc2xvdC0+dHRzX3ZhbHVlc1syXSA9IEJvb2xHZXREYXR1bShoYXNfbnVsbHMpOwor CXNsb3QtPnR0c192YWx1ZXNbM10gPSBCb29sR2V0RGF0dW0oYWxsX251bGxzKTsKKwlzbG90 LT50dHNfdmFsdWVzWzRdID0gQm9vbEdldERhdHVtKG5vdF9zdW1tYXJpemVkKTsKKwlzbG90 LT50dHNfdmFsdWVzWzVdID0gbWluX3ZhbHVlOworCXNsb3QtPnR0c192YWx1ZXNbNl0gPSBt YXhfdmFsdWU7CisKKwlpZiAoYWxsX251bGxzIHx8IG5vdF9zdW1tYXJpemVkKQorCXsKKwkJ c2xvdC0+dHRzX2lzbnVsbFs1XSA9IHRydWU7CisJCXNsb3QtPnR0c19pc251bGxbNl0gPSB0 cnVlOworCX0KKworCUV4ZWNTdG9yZVZpcnR1YWxUdXBsZShzbG90KTsKKworCXR1cGxlc29y dF9wdXR0dXBsZXNsb3Qoc2Nhbi0+cmFuZ2VzLCBzbG90KTsKKworCXNjYW4tPm5yYW5nZXMr KzsKK30KKworI2lmZGVmIEJSSU5TT1JUX0RFQlVHCisvKgorICogYnJpbl9taW5tYXhfc2Nh bl9uZXh0CisgKgkJUmV0dXJuIHRoZSBuZXh0IEJSSU4gcmFuZ2UgaW5mb3JtYXRpb24gZnJv bSB0aGUgdHVwbGVzdG9yZS4KKyAqCisgKiBSZXR1cm5zIE5VTEwgd2hlbiB0aGVyZSBhcmUg bm8gbW9yZSByYW5nZXMuCisgKi8KK3N0YXRpYyBCcmluUmFuZ2UgKgorYnJpbl9taW5tYXhf c2Nhbl9uZXh0KEJyaW5SYW5nZVNjYW5EZXNjICpzY2FuKQoreworCWlmICh0dXBsZXNvcnRf Z2V0dHVwbGVzbG90KHNjYW4tPnJhbmdlcywgdHJ1ZSwgZmFsc2UsIHNjYW4tPnNsb3QsIE5V TEwpKQorCXsKKwkJYm9vbAkJaXNudWxsOworCQlCcmluUmFuZ2UgICpyYW5nZSA9IChCcmlu UmFuZ2UgKikgcGFsbG9jKHNpemVvZihCcmluUmFuZ2UpKTsKKworCQlyYW5nZS0+Ymxrbm9f c3RhcnQgPSBzbG90X2dldGF0dHIoc2Nhbi0+c2xvdCwgMSwgJmlzbnVsbCk7CisJCXJhbmdl LT5ibGtub19lbmQgPSBzbG90X2dldGF0dHIoc2Nhbi0+c2xvdCwgMiwgJmlzbnVsbCk7CisJ CXJhbmdlLT5oYXNfbnVsbHMgPSBzbG90X2dldGF0dHIoc2Nhbi0+c2xvdCwgMywgJmlzbnVs bCk7CisJCXJhbmdlLT5hbGxfbnVsbHMgPSBzbG90X2dldGF0dHIoc2Nhbi0+c2xvdCwgNCwg JmlzbnVsbCk7CisJCXJhbmdlLT5ub3Rfc3VtbWFyaXplZCA9IHNsb3RfZ2V0YXR0cihzY2Fu LT5zbG90LCA1LCAmaXNudWxsKTsKKwkJcmFuZ2UtPm1pbl92YWx1ZSA9IHNsb3RfZ2V0YXR0 cihzY2FuLT5zbG90LCA2LCAmaXNudWxsKTsKKwkJcmFuZ2UtPm1heF92YWx1ZSA9IHNsb3Rf Z2V0YXR0cihzY2FuLT5zbG90LCA3LCAmaXNudWxsKTsKKworCQlyZXR1cm4gcmFuZ2U7CisJ fQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBicmluX21pbm1heF9zY2FuX2R1bXAK KyAqCQlQcmludCBpbmZvIGFib3V0IGFsbCBwYWdlIHJhbmdlcyBzdG9yZWQgaW4gdGhlIHR1 cGxlc3RvcmUuCisgKi8KK3N0YXRpYyB2b2lkCiticmluX21pbm1heF9zY2FuX2R1bXAoQnJp blJhbmdlU2NhbkRlc2MgKnNjYW4pCit7CisJQnJpblJhbmdlICpyYW5nZTsKKworCWlmICgh bWVzc2FnZV9sZXZlbF9pc19pbnRlcmVzdGluZyhXQVJOSU5HKSkKKwkJcmV0dXJuOworCisJ ZWxvZyhXQVJOSU5HLCAiPT09PT0gZHVtcGluZyA9PT09PSIpOworCXdoaWxlICgocmFuZ2Ug PSBicmluX21pbm1heF9zY2FuX25leHQoc2NhbikpICE9IE5VTEwpCisJeworCQllbG9nKFdB Uk5JTkcsICJbJXUgJXVdIGhhc19udWxscyAlZCBhbGxfbnVsbHMgJWQgbm90X3N1bW1hcml6 ZWQgJWQgdmFsdWVzIFslbGQgJWxkXSIsCisJCQkgcmFuZ2UtPmJsa25vX3N0YXJ0LCByYW5n ZS0+Ymxrbm9fZW5kLAorCQkJIHJhbmdlLT5oYXNfbnVsbHMsIHJhbmdlLT5hbGxfbnVsbHMs IHJhbmdlLT5ub3Rfc3VtbWFyaXplZCwKKwkJCSByYW5nZS0+bWluX3ZhbHVlLCByYW5nZS0+ bWF4X3ZhbHVlKTsKKworCQlwZnJlZShyYW5nZSk7CisJfQorCisJLyogcmVzZXQgdGhlIHR1 cGxlc3RvcmUsIHNvIHRoYXQgd2UgY2FuIHN0YXJ0IHNjYW5uaW5nIGFnYWluICovCisJdHVw bGVzb3J0X3Jlc2NhbihzY2FuLT5yYW5nZXMpOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lk CiticmluX21pbm1heF9zY2FuX2ZpbmFsaXplKEJyaW5SYW5nZVNjYW5EZXNjICpzY2FuKQor eworCXR1cGxlc29ydF9wZXJmb3Jtc29ydChzY2FuLT5yYW5nZXMpOworfQorCisvKgorICog YnJpbl9taW5tYXhfcmFuZ2VzCisgKgkJTG9hZCB0aGUgQlJJTiByYW5nZXMgYW5kIHNvcnQg dGhlbS4KKyAqLworRGF0dW0KK2JyaW5fbWlubWF4X3JhbmdlcyhQR19GVU5DVElPTl9BUkdT KQoreworCUluZGV4U2NhbkRlc2MJc2NhbiA9IChJbmRleFNjYW5EZXNjKSBQR19HRVRBUkdf UE9JTlRFUigwKTsKKwlBdHRyTnVtYmVyCQlhdHRudW0gPSBQR19HRVRBUkdfSU5UMTYoMSk7 CisJYm9vbAkJCWFzYyA9IFBHX0dFVEFSR19CT09MKDIpOworCU9pZAkJCQljb2xsb2lkID0g UEdfR0VUX0NPTExBVElPTigpOworCUJyaW5PcGFxdWUgKm9wYXF1ZTsKKwlSZWxhdGlvbglp bmRleFJlbDsKKwlSZWxhdGlvbgloZWFwUmVsOworCUJsb2NrTnVtYmVyIG5ibG9ja3M7CisJ QmxvY2tOdW1iZXIJaGVhcEJsazsKKwlPaWQJCQloZWFwT2lkOworCUJyaW5NZW1UdXBsZSAq ZHR1cDsKKwlCcmluVHVwbGUgICpidHVwID0gTlVMTDsKKwlTaXplCQlidHVwc3ogPSAwOwor CUJ1ZmZlcgkJYnVmID0gSW52YWxpZEJ1ZmZlcjsKKwlCbG9ja051bWJlcglwYWdlc1BlclJh bmdlOworCUJyaW5EZXNjCSAgICpiZGVzYzsKKwlCcmluUmFuZ2VTY2FuRGVzYyAqYnJzY2Fu OworCVR1cGxlVGFibGVTbG90ICpzbG90OworCisJLyoKKwkgKiBEZXRlcm1pbmUgaG93IG1h bnkgQlJJTiByYW5nZXMgY291bGQgdGhlcmUgYmUsIGFsbG9jYXRlIHNwYWNlIGFuZCByZWFk CisJICogYWxsIHRoZSBtaW4vbWF4IHZhbHVlcy4KKwkgKi8KKwlvcGFxdWUgPSAoQnJpbk9w YXF1ZSAqKSBzY2FuLT5vcGFxdWU7CisJYmRlc2MgPSBvcGFxdWUtPmJvX2JkZXNjOworCXBh Z2VzUGVyUmFuZ2UgPSBvcGFxdWUtPmJvX3BhZ2VzUGVyUmFuZ2U7CisKKwlpbmRleFJlbCA9 IGJkZXNjLT5iZF9pbmRleDsKKworCS8qIG1ha2Ugc3VyZSB0aGUgcHJvdmlkZWQgYXR0bnVt IGlzIHZhbGlkICovCisJQXNzZXJ0KChhdHRudW0gPiAwKSAmJiAoYXR0bnVtIDw9IGJkZXNj LT5iZF90dXBkZXNjLT5uYXR0cykpOworCisJLyoKKwkgKiBXZSBuZWVkIHRvIGtub3cgdGhl IHNpemUgb2YgdGhlIHRhYmxlIHNvIHRoYXQgd2Uga25vdyBob3cgbG9uZyB0byBpdGVyYXRl CisJICogb24gdGhlIHJldm1hcCAoYW5kIHRvIHByZS1hbGxvY2F0ZSB0aGUgYXJyYXlzKS4K KwkgKi8KKwloZWFwT2lkID0gSW5kZXhHZXRSZWxhdGlvbihSZWxhdGlvbkdldFJlbGlkKGlu ZGV4UmVsKSwgZmFsc2UpOworCWhlYXBSZWwgPSB0YWJsZV9vcGVuKGhlYXBPaWQsIEFjY2Vz c1NoYXJlTG9jayk7CisJbmJsb2NrcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MoaGVh cFJlbCk7CisJdGFibGVfY2xvc2UoaGVhcFJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8q IGFsbG9jYXRlIGFuIGluaXRpYWwgaW4tbWVtb3J5IHR1cGxlLCBvdXQgb2YgdGhlIHBlci1y YW5nZSBtZW1jeHQgKi8KKwlkdHVwID0gYnJpbl9uZXdfbWVtdHVwbGUoYmRlc2MpOworCisJ LyogaW5pdGlhbGl6ZSB0aGUgc2NhbiBkZXNjcmliaW5nIHNjYW4gb2YgcmFuZ2VzIHNvcnRl ZCBieSBtaW52YWwgKi8KKwlicnNjYW4gPSBicmluX21pbm1heF9zY2FuX2luaXQoYmRlc2Ms IGNvbGxvaWQsIGF0dG51bSwgYXNjKTsKKworCXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJs ZVNsb3QoYnJzY2FuLT50ZGVzYywgJlRUU09wc1ZpcnR1YWwpOworCisJLyoKKwkgKiBOb3cg c2NhbiB0aGUgcmV2bWFwLiAgV2Ugc3RhcnQgYnkgcXVlcnlpbmcgZm9yIGhlYXAgcGFnZSAw LAorCSAqIGluY3JlbWVudGluZyBieSB0aGUgbnVtYmVyIG9mIHBhZ2VzIHBlciByYW5nZTsg dGhpcyBnaXZlcyB1cyBhIGZ1bGwKKwkgKiB2aWV3IG9mIHRoZSB0YWJsZS4KKwkgKgorCSAq IFhYWCBUaGUgc29ydCBtYXkgYmUgcXVpdGUgZXhwZW5zaXZlLCBlLmcuIGZvciBzbWFsbCBC UklOIHJhbmdlcy4gTWF5YmUKKwkgKiB3ZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIHNvbWVob3c/ IEZvciBleGFtcGxlLCB3ZSBrbm93IHRoZSBub3Qtc3VtbWFyaXplZAorCSAqIHJhbmdlcyBh cmUgYWx3YXlzIGdvaW5nIHRvIGJlIGZpcnN0LCBhbmQgYWxsLW51bGwgcmFuZ2VzIGxhc3Qs IHNvIG1heWJlCisJICogd2UgY291bGQgc3Rhc2ggdGhvc2Ugc29tZXdoZXJlLCBhbmQgbm90 IHNvcnQgdGhlbT8gQnV0IHRoZXJlIGFyZSBsaWtlbHkKKwkgKiBvbmx5IHZlcnkgZmV3IHN1 Y2ggcmFuZ2VzLCBpbiBtb3N0IGNhc2VzLiBNb3Jlb3ZlciwgaG93IHdvdWxkIHdlIHRoZW4K KwkgKiBwcmVwZW5kL2FwcGVuZCB0aG9zZSByYW5nZXMgdG8gdGhlIHNvcnRlZCBvbmVzPyBQ cm9iYWJseSB3b3VsZCBoYXZlIHRvCisJICogc3RvcmUgdGhlbSBpbiBhIHR1cGxlc3RvcmUs IG9yIHNvbWV0aGluZy4KKwkgKgorCSAqIFhYWCBTZWVtcyB0aGF0IGhhdmluZyBsYXJnZSB3 b3JrX21lbSBjYW4gYmUgcXVpdGUgZGV0cmltZW50YWwsIGJlY2F1c2UKKwkgKiB0aGVuIGl0 IG92ZXJmbG93cyBMMi9MMyBjYWNoZXMsIG1ha2luZyB0aGUgc29ydCBtdWNoIHNsb3dlci4K KwkgKgorCSAqIFhYWCBJZiB0aGVyZSBhcmUgb3RoZXIgaW5kZXhlcywgd291bGQgYmUgZ3Jl YXQgdG8gZmlsdGVyIHRoZSByYW5nZXMsIHNvCisJICogdGhhdCB3ZSBvbmx5IHNvcnQgdGhl IGludGVyZXN0aW5nIG9uZXMgLSByZWR1Y2VzIHRoZSBudW1iZXIgb2YgcmFuZ2VzLAorCSAq IG1ha2VzIHRoZSBzb3J0IGZhc3Rlci4KKwkgKgorCSAqIFhYWCBBbm90aGVyIG9wdGlvbiBp cyBtYWtpbmcgdGhpcyBpbmNyZW1lbnRhbCAtIGUuZy4gb25seSBhc2sgZm9yIHRoZQorCSAq IGZpcnN0IDEwMDAgcmFuZ2VzLCB1c2luZyBhIHRvcC1OIHNvcnQuIEFuZCB0aGVuIGlmIGl0 J3Mgbm90IGVub3VnaCB3ZQorCSAqIGNvdWxkIHJlcXVlc3QgYW5vdGhlciBjaHVuay4gQnV0 IHRoZSBzZWNvbmQgcmVxdWVzdCB3b3VsZCBoYXZlIHRvIGJlCisJICogcmF0aGVyIHVubGlr ZWx5IChiZWNhdXNlIHF1aXRlIGV4cGVuc2l2ZSksIGFuZCB0aGUgdG9wLU4gc29ydCBkb2Vz IG5vdAorCSAqIHNlZW0gYWxsIHRoYXQgZmFzdGVyIChhcyBsb25nIGFzIHdlIGRvbid0IG92 ZXJmbG93IEwyL0wzKS4KKwkgKi8KKwlmb3IgKGhlYXBCbGsgPSAwOyBoZWFwQmxrIDwgbmJs b2NrczsgaGVhcEJsayArPSBwYWdlc1BlclJhbmdlKQorCXsKKwkJYm9vbAkJZ290dHVwbGUg PSBmYWxzZTsKKwkJQnJpblR1cGxlICAqdHVwOworCQlPZmZzZXROdW1iZXIgb2ZmOworCQlT aXplCQlzaXplOworCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJdHVwID0gYnJp bkdldFR1cGxlRm9ySGVhcEJsb2NrKG9wYXF1ZS0+Ym9fcm1BY2Nlc3MsIGhlYXBCbGssICZi dWYsCisJCQkJCQkJCQkgICAmb2ZmLCAmc2l6ZSwgQlVGRkVSX0xPQ0tfU0hBUkUsCisJCQkJ CQkJCQkgICBzY2FuLT54c19zbmFwc2hvdCk7CisJCWlmICh0dXApCisJCXsKKwkJCWdvdHR1 cGxlID0gdHJ1ZTsKKwkJCWJ0dXAgPSBicmluX2NvcHlfdHVwbGUodHVwLCBzaXplLCBidHVw LCAmYnR1cHN6KTsKKwkJCUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOwor CQl9CisKKwkJLyoKKwkJICogUmFuZ2VzIHdpdGggbm8gaW5kZXhlZCB0dXBsZSBtYXkgY29u dGFpbiBhbnl0aGluZy4KKwkJICovCisJCWlmICghZ290dHVwbGUpCisJCXsKKwkJCWJyaW5f bWlubWF4X3NjYW5fYWRkX3R1cGxlKGJyc2Nhbiwgc2xvdCwKKwkJCQkJCQkJCSAgIGhlYXBC bGssIGhlYXBCbGsgKyAocGFnZXNQZXJSYW5nZSAtIDEpLAorCQkJCQkJCQkJICAgZmFsc2Us IGZhbHNlLCB0cnVlLCAwLCAwKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWR0dXAgPSBicmlu X2RlZm9ybV90dXBsZShiZGVzYywgYnR1cCwgZHR1cCk7CisJCQlpZiAoZHR1cC0+YnRfcGxh Y2Vob2xkZXIpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBQbGFjZWhvbGRlciB0dXBsZXMgYXJl IHRyZWF0ZWQgYXMgaWYgbm90IHN1bW1hcml6ZWQuCisJCQkJICoKKwkJCQkgKiBYWFggSXMg dGhpcyBjb3JyZWN0PworCQkJCSAqLworCQkJCWJyaW5fbWlubWF4X3NjYW5fYWRkX3R1cGxl KGJyc2Nhbiwgc2xvdCwKKwkJCQkJCQkJCQkgICBoZWFwQmxrLCBoZWFwQmxrICsgKHBhZ2Vz UGVyUmFuZ2UgLSAxKSwKKwkJCQkJCQkJCQkgICBmYWxzZSwgZmFsc2UsIHRydWUsIDAsIDAp OworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCUJyaW5WYWx1ZXMgKmJ2YWw7CisKKwkJCQli dmFsID0gJmR0dXAtPmJ0X2NvbHVtbnNbYXR0bnVtIC0gMV07CisKKwkJCQlicmluX21pbm1h eF9zY2FuX2FkZF90dXBsZShicnNjYW4sIHNsb3QsCisJCQkJCQkJCQkJICAgaGVhcEJsaywg aGVhcEJsayArIChwYWdlc1BlclJhbmdlIC0gMSksCisJCQkJCQkJCQkJICAgYnZhbC0+YnZf aGFzbnVsbHMsIGJ2YWwtPmJ2X2FsbG51bGxzLCBmYWxzZSwKKwkJCQkJCQkJCQkgICBidmFs LT5idl92YWx1ZXNbMF0sIGJ2YWwtPmJ2X3ZhbHVlc1sxXSk7CisJCQl9CisJCX0KKwl9CisK KwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCisJaWYgKGJ1ZiAhPSBJ bnZhbGlkQnVmZmVyKQorCQlSZWxlYXNlQnVmZmVyKGJ1Zik7CisKKwkvKiBkbyB0aGUgc29y dCBhbmQgYW55IG5lY2Vzc2FyeSBwb3N0LXByb2Nlc3NpbmcgKi8KKwlicmluX21pbm1heF9z Y2FuX2ZpbmFsaXplKGJyc2Nhbik7CisKKyNpZmRlZiBCUklOU09SVF9ERUJVRworCWJyaW5f bWlubWF4X3NjYW5fZHVtcChicnNjYW4pOworI2VuZGlmCisKKwlQR19SRVRVUk5fUE9JTlRF UihicnNjYW4pOworfQorCiAvKgogICogQ2FjaGUgYW5kIHJldHVybiB0aGUgcHJvY2VkdXJl IGZvciB0aGUgZ2l2ZW4gc3RyYXRlZ3kuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmlu ZGV4IDg1NzBiMTRmNjIuLmQyZWFlOWVhMWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMK QEAgLTg1LDYgKzg1LDggQEAgc3RhdGljIHZvaWQgc2hvd19zb3J0X2tleXMoU29ydFN0YXRl ICpzb3J0c3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJCQkJCSAgIEV4cGxhaW5TdGF0ZSAq ZXMpOwogc3RhdGljIHZvaWQgc2hvd19pbmNyZW1lbnRhbF9zb3J0X2tleXMoSW5jcmVtZW50 YWxTb3J0U3RhdGUgKmluY3Jzb3J0c3RhdGUsCiAJCQkJCQkJCQkgICBMaXN0ICphbmNlc3Rv cnMsIEV4cGxhaW5TdGF0ZSAqZXMpOworc3RhdGljIHZvaWQgc2hvd19icmluc29ydF9rZXlz KEJyaW5Tb3J0U3RhdGUgKnNvcnRzdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAorCQkJCQkJCSAg IEV4cGxhaW5TdGF0ZSAqZXMpOwogc3RhdGljIHZvaWQgc2hvd19tZXJnZV9hcHBlbmRfa2V5 cyhNZXJnZUFwcGVuZFN0YXRlICptc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJCQkJCQkJ ICAgRXhwbGFpblN0YXRlICplcyk7CiBzdGF0aWMgdm9pZCBzaG93X2FnZ19rZXlzKEFnZ1N0 YXRlICphc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKQEAgLTExMTEsNiArMTExMyw3IEBAIEV4 cGxhaW5QcmVTY2FuTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgQml0bWFwc2V0ICoqcmVs c191c2VkKQogCQljYXNlIFRfSW5kZXhTY2FuOgogCQljYXNlIFRfSW5kZXhPbmx5U2NhbjoK IAkJY2FzZSBUX0JpdG1hcEhlYXBTY2FuOgorCQljYXNlIFRfQnJpblNvcnQ6CiAJCWNhc2Ug VF9UaWRTY2FuOgogCQljYXNlIFRfVGlkUmFuZ2VTY2FuOgogCQljYXNlIFRfU3VicXVlcnlT Y2FuOgpAQCAtMTI3Myw2ICsxMjc2LDkgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFu c3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJY2FzZSBUX0luZGV4T25seVNjYW46CiAJCQlw bmFtZSA9IHNuYW1lID0gIkluZGV4IE9ubHkgU2NhbiI7CiAJCQlicmVhazsKKwkJY2FzZSBU X0JyaW5Tb3J0OgorCQkJcG5hbWUgPSBzbmFtZSA9ICJCUklOIFNvcnQiOworCQkJYnJlYWs7 CiAJCWNhc2UgVF9CaXRtYXBJbmRleFNjYW46CiAJCQlwbmFtZSA9IHNuYW1lID0gIkJpdG1h cCBJbmRleCBTY2FuIjsKIAkJCWJyZWFrOwpAQCAtMTUxOSw2ICsxNTI1LDE2IEBAIEV4cGxh aW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJCQkJRXhw bGFpblNjYW5UYXJnZXQoKFNjYW4gKikgaW5kZXhvbmx5c2NhbiwgZXMpOwogCQkJfQogCQkJ YnJlYWs7CisJCWNhc2UgVF9CcmluU29ydDoKKwkJCXsKKwkJCQlCcmluU29ydCAgKmJyaW5z b3J0ID0gKEJyaW5Tb3J0ICopIHBsYW47CisKKwkJCQlFeHBsYWluSW5kZXhTY2FuRGV0YWls cyhicmluc29ydC0+aW5kZXhpZCwKKwkJCQkJCQkJCQlicmluc29ydC0+aW5kZXhvcmRlcmRp ciwKKwkJCQkJCQkJCQllcyk7CisJCQkJRXhwbGFpblNjYW5UYXJnZXQoKFNjYW4gKikgYnJp bnNvcnQsIGVzKTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfQml0bWFwSW5kZXhTY2Fu OgogCQkJewogCQkJCUJpdG1hcEluZGV4U2NhbiAqYml0bWFwaW5kZXhzY2FuID0gKEJpdG1h cEluZGV4U2NhbiAqKSBwbGFuOwpAQCAtMTgwNCw2ICsxODIwLDE4IEBAIEV4cGxhaW5Ob2Rl KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJCQkJRXhwbGFpblBy b3BlcnR5RmxvYXQoIkhlYXAgRmV0Y2hlcyIsIE5VTEwsCiAJCQkJCQkJCQkgcGxhbnN0YXRl LT5pbnN0cnVtZW50LT5udHVwbGVzMiwgMCwgZXMpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9C cmluU29ydDoKKwkJCXNob3dfc2Nhbl9xdWFsKCgoQnJpblNvcnQgKikgcGxhbiktPmluZGV4 cXVhbG9yaWcsCisJCQkJCQkgICAiSW5kZXggQ29uZCIsIHBsYW5zdGF0ZSwgYW5jZXN0b3Jz LCBlcyk7CisJCQlpZiAoKChCcmluU29ydCAqKSBwbGFuKS0+aW5kZXhxdWFsb3JpZykKKwkJ CQlzaG93X2luc3RydW1lbnRhdGlvbl9jb3VudCgiUm93cyBSZW1vdmVkIGJ5IEluZGV4IFJl Y2hlY2siLCAyLAorCQkJCQkJCQkJCSAgIHBsYW5zdGF0ZSwgZXMpOworCQkJc2hvd19zY2Fu X3F1YWwocGxhbi0+cXVhbCwgIkZpbHRlciIsIHBsYW5zdGF0ZSwgYW5jZXN0b3JzLCBlcyk7 CisJCQlzaG93X2JyaW5zb3J0X2tleXMoY2FzdE5vZGUoQnJpblNvcnRTdGF0ZSwgcGxhbnN0 YXRlKSwgYW5jZXN0b3JzLCBlcyk7CisJCQlpZiAocGxhbi0+cXVhbCkKKwkJCQlzaG93X2lu c3RydW1lbnRhdGlvbl9jb3VudCgiUm93cyBSZW1vdmVkIGJ5IEZpbHRlciIsIDEsCisJCQkJ CQkJCQkJICAgcGxhbnN0YXRlLCBlcyk7CisJCQlicmVhazsKIAkJY2FzZSBUX0JpdG1hcElu ZGV4U2NhbjoKIAkJCXNob3dfc2Nhbl9xdWFsKCgoQml0bWFwSW5kZXhTY2FuICopIHBsYW4p LT5pbmRleHF1YWxvcmlnLAogCQkJCQkJICAgIkluZGV4IENvbmQiLCBwbGFuc3RhdGUsIGFu Y2VzdG9ycywgZXMpOwpAQCAtMjQwMyw2ICsyNDMxLDIxIEBAIHNob3dfaW5jcmVtZW50YWxf c29ydF9rZXlzKEluY3JlbWVudGFsU29ydFN0YXRlICppbmNyc29ydHN0YXRlLAogCQkJCQkJ IGFuY2VzdG9ycywgZXMpOwogfQogCisvKgorICogU2hvdyB0aGUgc29ydCBrZXlzIGZvciBh IEJSSU4gU29ydCBub2RlLgorICovCitzdGF0aWMgdm9pZAorc2hvd19icmluc29ydF9rZXlz KEJyaW5Tb3J0U3RhdGUgKnNvcnRzdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLCBFeHBsYWluU3Rh dGUgKmVzKQoreworCUJyaW5Tb3J0CSAgICpwbGFuID0gKEJyaW5Tb3J0ICopIHNvcnRzdGF0 ZS0+c3MucHMucGxhbjsKKworCXNob3dfc29ydF9ncm91cF9rZXlzKChQbGFuU3RhdGUgKikg c29ydHN0YXRlLCAiU29ydCBLZXkiLAorCQkJCQkJIHBsYW4tPm51bUNvbHMsIDAsIHBsYW4t PnNvcnRDb2xJZHgsCisJCQkJCQkgcGxhbi0+c29ydE9wZXJhdG9ycywgcGxhbi0+Y29sbGF0 aW9ucywKKwkJCQkJCSBwbGFuLT5udWxsc0ZpcnN0LAorCQkJCQkJIGFuY2VzdG9ycywgZXMp OworfQorCiAvKgogICogTGlrZXdpc2UsIGZvciBhIE1lcmdlQXBwZW5kIG5vZGUuCiAgKi8K QEAgLTM4MjMsNiArMzg2Niw3IEBAIEV4cGxhaW5UYXJnZXRSZWwoUGxhbiAqcGxhbiwgSW5k ZXggcnRpLCBFeHBsYWluU3RhdGUgKmVzKQogCQljYXNlIFRfRm9yZWlnblNjYW46CiAJCWNh c2UgVF9DdXN0b21TY2FuOgogCQljYXNlIFRfTW9kaWZ5VGFibGU6CisJCWNhc2UgVF9Ccmlu U29ydDoKIAkJCS8qIEFzc2VydCBpdCdzIG9uIGEgcmVhbCByZWxhdGlvbiAqLwogCQkJQXNz ZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pOwogCQkJb2JqZWN0bmFtZSA9IGdl dF9yZWxfbmFtZShydGUtPnJlbGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUKaW5kZXggMTEx MThkMGNlMC4uYmNhYTJjZThlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv TWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUKQEAgLTM4LDYg KzM4LDcgQEAgT0JKUyA9IFwKIAlub2RlQml0bWFwSGVhcHNjYW4ubyBcCiAJbm9kZUJpdG1h cEluZGV4c2Nhbi5vIFwKIAlub2RlQml0bWFwT3IubyBcCisJbm9kZUJyaW5Tb3J0Lm8gXAog CW5vZGVDdGVzY2FuLm8gXAogCW5vZGVDdXN0b20ubyBcCiAJbm9kZUZvcmVpZ25zY2FuLm8g XApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwppbmRleCA0ZDI4OGJjOGQ0Li45 M2QxMDA3ODA5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25v ZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpAQCAtNzks NiArNzksNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5oIgog I2luY2x1ZGUgImV4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uaCIKICNpbmNsdWRlICJl eGVjdXRvci9ub2RlQml0bWFwT3IuaCIKKyNpbmNsdWRlICJleGVjdXRvci9ub2RlQnJpblNv cnQuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlQ3Rlc2Nhbi5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL25vZGVDdXN0b20uaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlRm9yZWlnbnNj YW4uaCIKQEAgLTIyNiw2ICsyMjcsMTEgQEAgRXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCQkJCQkJCQkJCQkgZXN0YXRlLCBlZmxh Z3MpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0JyaW5Tb3J0OgorCQkJcmVzdWx0ID0gKFBs YW5TdGF0ZSAqKSBFeGVjSW5pdEJyaW5Tb3J0KChCcmluU29ydCAqKSBub2RlLAorCQkJCQkJ CQkJCQkJCWVzdGF0ZSwgZWZsYWdzKTsKKwkJCWJyZWFrOworCiAJCWNhc2UgVF9CaXRtYXBJ bmRleFNjYW46CiAJCQlyZXN1bHQgPSAoUGxhblN0YXRlICopIEV4ZWNJbml0Qml0bWFwSW5k ZXhTY2FuKChCaXRtYXBJbmRleFNjYW4gKikgbm9kZSwKIAkJCQkJCQkJCQkJCQkJICAgZXN0 YXRlLCBlZmxhZ3MpOwpAQCAtNjM5LDYgKzY0NSwxMCBAQCBFeGVjRW5kTm9kZShQbGFuU3Rh dGUgKm5vZGUpCiAJCQlFeGVjRW5kSW5kZXhPbmx5U2NhbigoSW5kZXhPbmx5U2NhblN0YXRl ICopIG5vZGUpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0JyaW5Tb3J0U3RhdGU6CisJCQlF eGVjRW5kQnJpblNvcnQoKEJyaW5Tb3J0U3RhdGUgKikgbm9kZSk7CisJCQlicmVhazsKKwog CQljYXNlIFRfQml0bWFwSW5kZXhTY2FuU3RhdGU6CiAJCQlFeGVjRW5kQml0bWFwSW5kZXhT Y2FuKChCaXRtYXBJbmRleFNjYW5TdGF0ZSAqKSBub2RlKTsKIAkJCWJyZWFrOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9tZXNvbi5idWlsZAppbmRleCA2NWY5NDU3YzliLi5lZDdmMzhhMTM5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9tZXNvbi5idWlsZApAQCAtMjYsNiArMjYsNyBAQCBiYWNrZW5kX3Nv dXJjZXMgKz0gZmlsZXMoCiAgICdub2RlQml0bWFwSGVhcHNjYW4uYycsCiAgICdub2RlQml0 bWFwSW5kZXhzY2FuLmMnLAogICAnbm9kZUJpdG1hcE9yLmMnLAorICAnbm9kZUJyaW5Tb3J0 LmMnLAogICAnbm9kZUN0ZXNjYW4uYycsCiAgICdub2RlQ3VzdG9tLmMnLAogICAnbm9kZUZv cmVpZ25zY2FuLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJy aW5Tb3J0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45NTA1ZWFmYzU0Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMKQEAgLTAsMCAr MSwxNjEyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBub2RlQnJpblNvcnQu YworICoJICBSb3V0aW5lcyB0byBzdXBwb3J0IHNvcnRlZCBzY2FuIG9mIHJlbGF0aW9ucyB1 c2luZyBhIEJSSU4gaW5kZXgKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYt MjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxp Zm9ybmlhCisgKgorICoKKyAqIFRoZSBvdmVyYWxsIGFsZ29yaXRobSBpcyByb3VnaGx5IHRo aXM6CisgKgorICogMCkgaW5pdGlhbGl6ZSBhIHR1cGxlc3RvcmUgYW5kIGEgdHVwbGVzb3J0 CisgKgorICogMSkgZmV0Y2ggbGlzdCBvZiBwYWdlIHJhbmdlcyBmcm9tIHRoZSBCUklOIGlu ZGV4LCBzb3J0ZWQgYnkgbWludmFsCisgKiAgICAod2l0aCB0aGUgbm90LXN1bW1hcml6ZWQg cmFuZ2VzIGZpcnN0LCBhbmQgYWxsLW51bGwgcmFuZ2VzIGxhc3QpCisgKgorICogMikgZm9y IE5VTExTIEZJUlNUIG9yZGVyaW5nLCB3YWxrIGFsbCByYW5nZXMgdGhhdCBtYXkgY29udGFp biBOVUxMCisgKiAgICB2YWx1ZXMgYW5kIG91dHB1dCB0aGVtIChhbmQgcmV0dXJuIHRvIHRo ZSBiZWdpbm5pbmcgb2YgdGhlIGxpc3QpCisgKgorICogMykgd2hpbGUgdGhlcmUgYXJlIHJh bmdlcyBpbiB0aGUgbGlzdCwgZG8gdGhpczoKKyAqCisgKiAgIGEpIGdldCBuZXh0IChkaXN0 aW5jdCkgbWludmFsIGZyb20gdGhlIGxpc3QsIGNhbGwgaXQgd2F0ZXJtYXJrCisgKgorICog ICBiKSBpZiB0aGVyZSBhcmUgYW55IHR1cGxlcyBpbiB0aGUgdHVwbGVzdG9yZSwgbW92ZSB0 aGVtIHRvIHR1cGxlc29ydAorICoKKyAqICAgYykgcHJvY2VzcyBhbGwgcmFuZ2VzIHdpdGgg KG1pbnZhbCA8IHdhdGVybWFyaykgLSByZWFkIHR1cGxlcyBhbmQgZmVlZAorICogICAgICB0 aGVtIGVpdGhlciBpbnRvIHR1cGxlc3RvcmUgKHdoZW4gdmFsdWUgPCB3YXRlcm1hcmspIG9y IHR1cGxlc3RvcmUKKyAqCisgKiAgIGQpIHNvcnQgdGhlIHR1cGxlc3RvcmUsIG91dHB1dCBh bGwgdGhlIHR1cGxlcworICoKKyAqIDQpIGlmIHNvbWUgdHVwbGVzIHJlbWFpbiBpbiB0aGUg dHVwbGVzdG9yZSwgc29ydCBhbmQgb3V0cHV0IHRoZW0KKyAqCisgKiA1KSBmb3IgTlVMTFMg TEFTVCBvcmRlcmluZywgd2FsayBhbGwgcmFuZ2VzIHRoYXQgbWF5IGNvbnRhaW4gTlVMTAor ICogICAgdmFsdWVzIGFuZCBvdXRwdXQgdGhlbSAoYW5kIHJldHVybiB0byB0aGUgYmVnaW5u aW5nIG9mIHRoZSBsaXN0KQorICoKKyAqCisgKiBGb3IgREVTQyBvcmRlcmluZ3MgdGhlIHBy b2Nlc3MgaXMgYWxtb3N0IHRoZSBzYW1lLCBleGNlcHQgdGhhdCB3ZSBsb29rCisgKiBhdCBt YXh2YWwgYW5kIHVzZSAnPicgb3BlcmF0b3IgKGJ1dCB0aGF0J3MgdHJhbnNwYXJlbnQpLgor ICoKKyAqIFRoZXJlJ3MgYSBjb3VwbGUgcG9zc2libGUgdGhpbmdzIHRoYXQgbWlnaHQgYmUg ZG9uZSBpbiBkaWZmZXJlbnQgd2F5czoKKyAqCisgKiAxKSBOb3QgdXNpbmcgdHVwbGVzdG9y ZSwgYW5kIGZlZWRpbmcgdHVwbGVzIG9ubHkgdG8gYSB0dXBsZXNvcnQuIFRoZW4KKyAqIHdo aWxlIHByb2R1Y2luZyB0aGUgdHVwbGVzLCB3ZSdkIG9ubHkgb3V0cHV0IHR1cGxlcyB1cCB0 byB0aGUgY3VycmVudAorICogd2F0ZXJtYXJrLCBhbmQgdGhlbiB3ZSdkIGtlZXAgdGhlIHJl bWFpbmluZyB0dXBsZXMgZm9yIHRoZSBuZXh0IHJvdW5kLgorICogRWl0aGVyIHdlJ2QgbmVl ZCB0byB0cmFuc2ZlciB0aGVtIGludG8gYSBzZWNvbmQgdHVwbGVzb3J0LCBvciBhbGxvdwor ICogInJlb3BlbmluZyIgdGhlIHR1cGxlc29ydCBhbmQgYWRkaW5nIG1vcmUgdHVwbGVzLiBB bmQgdGhlbiBvbmx5IHRoZQorICogcGFydCBzaW5jZSB0aGUgd2F0ZXJtYXJrIHdvdWxkIGdl dCBzb3J0ZWQgKHBvc3NpYmx5IHVzaW5nIGEgbWVyZ2Utc29ydAorICogd2l0aCB0aGUgYWxy ZWFkeSBzb3J0ZWQgcGFydCkuCisgKgorICoKKyAqIDIpIFRoZSBvdGhlciBxdWVzdGlvbiBp cyB3aGF0IHRvIGRvIHdpdGggTlVMTCB2YWx1ZXMgLSBhdCB0aGUgbW9tZW50IHdlCisgKiBq dXN0IHJlYWQgdGhlIHJhbmdlcywgb3V0cHV0IHRoZSBOVUxMIHR1cGxlcyBhbmQgdGhhdCdz IGl0IC0gd2UncmUgbm90CisgKiByZXRhaW5pbmcgYW55IG5vbi1OVUxMIHR1cGxlcywgc28g dGhhdCB3ZSdsbCByZWFkIHRoZSByYW5nZXMgYWdhaW4gaW4KKyAqIHRoZSBzZWNvbmQgcmFu Z2UuIFRoZSBsb2dpYyBoZXJlIGlzIHRoYXQgZWl0aGVyIHRoZXJlIGFyZSB2ZXJ5IGZldwor ICogc3VjaCByYW5nZXMsIHNvIGl0J3Mgd29uJ3QgY29zdCBtdWNoIHRvIGp1c3QgcmUtcmVh ZCB0aGVtLiBPciBtYXliZQorICogdGhlcmUgYXJlIHZlcnkgbWFueSBzdWNoIHJhbmdlcywg YW5kIHdlJ2QgZG8gYSBsb3Qgb2Ygc3BpbGxpbmcgdG8gdGhlCisgKiB0dXBsZXN0b3JlLCBh bmQgaXQncyBub3QgbXVjaCBtb3JlIGV4cGVuc2l2ZSB0byBqdXN0IHJlLXJlYWQgdGhlIHNv dXJjZQorICogZGF0YS4gVGhlcmUgYXJlIGNvdW50ZXItZXhhbXBsZXMsIHRob3VnaCAtIGUu Zy4sIHRoZXJlIG1pZ2h0IGJlIG1hbnkKKyAqIGhhc19udWxscyByYW5nZXMsIGJ1dCB3aXRo IHZlcnkgZmV3IG5vbi1OVUxMIHR1cGxlcy4gSW4gdGhpcyBjYXNlIGl0CisgKiBtaWdodCBi ZSBiZXR0ZXIgdG8gYWN0dWFsbHkgc3BpbGwgdGhlIHR1cGxlcyBpbnN0ZWFkIG9mIHJlLXJl YWRpbmcgYWxsCisgKiB0aGUgcmFuZ2VzLiBNYXliZSB0aGlzIGlzIHNvbWV0aGluZyB3ZSBj YW4gZG8gYXQgcnVuLXRpbWUsIG9yIG1heWJlIHdlCisgKiBjb3VsZCBlc3RpbWF0ZSB0aGlz IGF0IHBsYW5uaW5nIHRpbWUuIFdlIGRvIGtub3cgdGhlIG51bGxfZnJhYyBmb3IgdGhlCisg KiBjb2x1bW4sIHNvIHdlIGtub3cgdGhlIG51bWJlciBvZiBOVUxMIHJvd3MuIEFuZCB3ZSBh bHNvIGtub3cgdGhlIG51bWJlcgorICogb2YgYWxsX251bGxzIGFuZCBoYXNfbnVsbHMgcmFu Z2VzLiBXZSBjYW4gZXN0aW1hdGUgdGhlIG51bWJlciBvZiByb3dzCisgKiBwZXIgcmFuZ2Us IGFuZCB3ZSBjYW4gZXN0aW1hdGUgaG93IG1hbnkgbm9uLU5VTEwgcm93cyBhcmUgaW4gdGhl CisgKiBoYXNfbnVsbHMgcmFuZ2VzICh3ZSBkb24ndCBuZWVkIHRvIHJlLXJlYWQgYWxsLW51 bGxzIHJhbmdlcykuIFRoZXJlJ3MKKyAqIGFsc28gdGhlIGZpbHRlciwgd2hpY2ggbWF5IHJl ZHVjZSB0aGUgYW1vdW50IG9mIHJvd3MgdG8gc3RvcmUuCisgKgorICogU28gd2UnZCBuZWVk IHRvIGNvbXBhcmUgdHdvIG1ldHJpY3MgY2FsY3VsYXRlZCByb3VnaGx5IGxpa2UgdGhpczoK KyAqCisgKiAgIGNvc3QocmUtcmVhZGluZyBoYXMtbnVsbHMgcmFuZ2VzKQorICogICAgICA9 IGNvc3QocmFuZG9tX3BhZ2VfY29zdCAqIG5faGFzX251bGxzICsgc2VxX3BhZ2VfY29zdCAq IHBhZ2VzX3Blcl9yYW5nZSkKKyAqCisgKiAgIGNvc3Qoc3BpbGxpbmcgbm9uLU5VTEwgcm93 cyBmcm9tIGhhcy1udWxscyByYW5nZXMpCisgKiAgICAgID0gY29zdChudW1yb3dzICogd2lk dGggLyBCTENLU1ogKiBzZXFfcGFnZV9jb3N0ICogMikKKyAqCisgKiB3aGVyZSBudW1yb3dz IGlzIHRoZSBudW1iZXIgb2Ygbm9uLU5VTEwgcm93cyBpbiBoYXNfbnVsbCByYW5nZXMsIHdo aWNoCisgKiBjYW4gYmUgY2FsY3VsYXRlZCBsaWtlIHRoaXM6CisgKgorICogICAvLyBlc3Rp bWF0ZWQgbnVtYmVyIG9mIHJvd3MgaW4gaGFzLW51bGwgcmFuZ2VzCisgKiAgIHJvd3NfaW5f aGFzX251bGxzID0gKHJlbHR1cGxlcyAvIHJlbHBhZ2VzKSAqIHBhZ2VzX3Blcl9yYW5nZSAq IG5faGFzX251bGxzCisgKgorICogICAvLyBudW1iZXIgb2YgTlVMTCByb3dzIGluIHRoZSBo YXMtbnVsbHMgcmFuZ2VzCisgKiAgIG51bGxzX2luX3JhbmdlcyA9IHJlbHR1cGxlcyAqIG51 bGxfZnJhYyAtIG5fYWxsX251bGxzICogKHJlbHR1cGxlcyAvIHJlbHBhZ2VzKQorICoKKyAq ICAgLy8gbnVtcm93cyBpcyB0aGUgZGlmZmVyZW5jZSwgbXVsdGlwbGllZCBieSBzZWxlY3Rp dml0eSBvZiB0aGUgaW5kZXgKKyAqICAgLy8gZmlsdGVyIGNvbmRpdGlvbiAodmFsdWUgYmV0 d2VlbiAwLjAgYW5kIDEuMCkKKyAqICAgbnVtcm93cyA9IChyb3dzX2luX2hhc19udWxscyAt IG51bGxzX2luX3JhbmdlcykgKiBzZWxlY3Rpdml0eQorICoKKyAqIFRoaXMgaWdub3JlcyBu b24tc3VtbWFyaXplZCByYW5nZXMsIGJ1dCB0aGVyZSBzaG91bGQgYmUgb25seSB2ZXJ5IGZl dyBvZgorICogdGhvc2UsIHNvIGl0IHNob3VsZCBub3QgbWFrZSBhIGh1Z2UgZGlmZmVyZW5j ZS4gT3RoZXJ3aXNlIHdlIGNhbiBkaXZpZGUKKyAqIHRoZW0gYmV0d2VlbiByZWd1bGFyLCBo YXMtbnVsbHMgYW5kIGFsbC1udWxscyBwYWdlcyB0byBrZWVwIHRoZSByYXRpby4KKyAqCisg KgorICogMykgSG93IGxhcmdlIHN0ZXAgdG8gbWFrZSB3aGVuIHVwZGF0aW5nIHRoZSB3YXRl cm1hcms/CisgKgorICogV2hlbiB1cGRhdGluZyB0aGUgd2F0ZXJtYXJrLCBvbmUgb3B0aW9u IGlzIHRvIHNpbXBseSBwcm9jZWVkIHRvIHRoZSBuZXh0CisgKiBkaXN0aW5jdCBtaW52YWwg dmFsdWUsIHdoaWNoIGlzIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBzdGVwIHdlIGNhbiBtYWtl LgorICogVGhpcyBtYXkgYmUgYm90aCBmaW5lIGFuZCB2ZXJ5IGluZWZmaWNpZW50LCBkZXBl bmRpbmcgb24gaG93IG1hbnkgcm93cworICogZW5kIHVwIGluIHRoZSB0dXBsZXNvcnQgYW5k IGhvdyBtYW55IHJvd3Mgd2UgZW5kIHVwIHNwaWxsaW5nIChwb3NzaWJseQorICogcmVwZWF0 ZWRseSB0byB0aGUgdHVwbGVzdG9yZSkuCisgKgorICogV2hlbiBoYXZpbmcgdG8gc29ydCBs YXJnZSBudW1iZXIgb2Ygcm93cywgaXQncyBpbmVmZmljaWVudCB0byBydW4gbWFueQorICog dGlueSBzb3J0cywgZXZlbiBpZiBpdCBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdC4gRm9yIGV4 YW1wbGUgd2hlbiBzb3J0aW5nCisgKiAxTSByb3dzLCB3ZSBtYXkgc3BsaXQgdGhpcyBhcyBl aXRoZXIgKGEpIDEwMDAwMHggc29ydHMgb2YgMTAgcm93cywgb3IKKyAqIChiKSAxMDAwIHNv cnRzIG9mIDEwMDAgcm93cy4gVGhlIChiKSBvcHRpb24gaXMgYWxtb3N0IGNlcnRhaW5seSBt b3JlCisgKiBlZmZpY2llbnQuIE1heWJlIHNvcnRzIG9mIDEwayByb3dzIHdvdWxkIGJlIGV2 ZW4gYmV0dGVyLCBpZiBpdCBmaXRzCisgKiBpbnRvIHdvcmtfbWVtLgorICoKKyAqIFRoaXMg Z2V0cyBiYWNrIHRvIGhvdyBsYXJnZSB0aGUgcGFnZSByYW5nZXMgYXJlLCBhbmQgaWYvaG93 IG11Y2ggdGhleQorICogb3ZlcmxhcC4gV2l0aCB0aW55IHJhbmdlcyAoZS5nLiBhIHNpbmds ZS1wYWdlIHJhbmdlcyksIGEgc2luZ2xlIHJhbmdlCisgKiBjYW4gb25seSBhZGQgYXMgbWFu eSByb3dzIGFzIHdlIGNhbiBmaXQgb24gYSBzaW5nbGUgcGFnZS4gU28gd2UgbmVlZAorICog bW9yZSByYW5nZXMgYnkgZGVmYXVsdCAtIGhvdyBtYW55IHdhdGVybWFyayBzdGVwcyB0aGF0 IGlzIGRlcGVuZHMgb24KKyAqIGhvdyBtYW55IGRpc3RpbmN0IG1pbnZhbCB2YWx1ZXMgYXJl IHRoZXJlIC4uLgorICoKKyAqIFRoZW4gdGhlcmUncyBvdmVybGFwcyAtIGlmIHJhbmdlcyBk byBub3Qgb3ZlcmxhcCwgd2UncmUgZG9uZSBhbmQgd2UnbGwKKyAqIGFkZCB0aGUgd2hvbGUg cmFuZ2UgYmVjYXVzZSB0aGUgbmV4dCB3YXRlcm1hcmsgaXMgYWJvdmUgbWF4dmFsLiBCdXQK KyAqIHdoZW4gdGhlIHJhbmdlcyBvdmVybGFwLCB3ZSdsbCBvbmx5IGFkZCB0aGUgZmlyc3Qg cGFydCAoYXNzdW1pbmcgdGhlCisgKiBtaW52YWwgb2YgdGhlIG5leHQgcmFuZ2UgaXMgdGhl IHdhdGVybWFyaykuIEFzc3VtZSAxMCBvdmVybGFwcGluZworICogcmFuZ2VzIC0gaW1hZ2lu ZSBmb3IgZXhhbXBsZSByYW5nZXMgc2hpZnRlZCBieSAxMCUsIHNvIHNvbWV0aGluZyBsaWtl CisgKgorICogICBbMCwxMDBdIFsxMCwxMTBdLCBbMjAsMTIwXSwgWzMwLCAxMzBdLCAuLi4s IFs5MCwgMTkwXQorICoKKyAqIEluIHRoZSBmaXJzdCBzdGVwIHdlIHVzZSB3YXRlcm1hcms9 MTAgYW5kIGxvYWQgdGhlIGZpcnN0IHJhbmdlLCB3aXRoCisgKiBtYXliZSAxMDAwIHJvd3Mg aW4gdG90YWwuIEJ1dCBhc3N1bWluZyB1bmlmb3JtIGRpc3RyaWJ1dGlvbiwgb25seSBhYm91 dAorICogMTAwIHJvd3Mgd2lsbCBnbyBpbnRvIHRoZSB0dXBsZXNvcnQsIHRoZSByZW1haW5p bmcgOTAwIHJvd3Mgd2lsbCBnbyBpbnRvCisgKiB0aGUgdHVwbGVzdG9yZSAoYXNzdW1pbmcg dW5pZm9ybSBkaXN0cmlidXRpb24pLiBUaGVuIGluIHRoZSBzZWNvbmQgc3RlcAorICogd2Ug c29ydCBhbm90aGVyIDEwMCByb3dzIGFuZCB0aGUgcmVtYWluaW5nIDgwMCByb3dzIHdpbGwg YmUgbW92ZWQgaW50bworICogYSBuZXcgdHVwbGVzdG9yZS4gQW5kIHNvIG9uIGFuZCBzbyBv bi4KKyAqCisgKiBUaGlzIG1lYW5zIHRoYXQgaW5jcmVtZW50aW5nIHRoZSB3YXRlcm1hcmtz IGJ5IHNpbmdsZSBzdGVwcyBtYXkgYmUKKyAqIHF1aXRlIGluZWZmaWNpZW50LCBhbmQgd2Ug bmVlZCB0byByZWZsZWN0IGJvdGggdGhlIHJhbmdlIHNpemUgYW5kCisgKiBob3cgbXVjaCB0 aGUgcmFuZ2VzIG92ZXJsYXAuCisgKgorICogSW4gZmFjdCwgbWF5YmUgd2Ugc2hvdWxkIG5v dCBkZXRlcm1pbmUgdGhlIHN0ZXAgYXMgbnVtYmVyIG9mIG1pbnZhbAorICogdmFsdWVzIHRv IHNraXAsIGJ1dCBob3cgbWFueSByYW5nZXMgd291bGQgdGhhdCBtZWFuIHJlYWRpbmcuIEJl Y2F1c2UKKyAqIGlmIHdlIGhhdmUgYSBtaW52YWwgd2l0aCBtYW55IGR1cGxpY2F0ZXMsIHRo YXQgbWF5IGxvYWQgbWFueSByb3dzLgorICogT3IgZXZlbiBiZXR0ZXIsIHdlIGNvdWxkIGxv b2sgYXQgaG93IG1hbnkgcm93cyB3b3VsZCB0aGF0IG1lYW4gbG9hZGluZworICogaW50byB0 aGUgdHVwbGVzdG9yZSAtIGlmIHdlIHRyYWNrIFAoeDxtaW52YWwpIGZvciBlYWNoIHJhbmdl IChlLmcuIGJ5CisgKiBjYWxjdWxhdGluZyBhdmVyYWdlIHZhbHVlIGR1cmluZyBBTkFMWVpF LCBvciBwZXJoYXBzIGJ5IGVzdGltYXRpbmcKKyAqIGl0IGZyb20gcGVyLWNvbHVtbiBzdGF0 cyksIHRoZW4gd2Uga25vdyB0aGUgaW5jcmVtZW50IGlzIGdvaW5nIHRvIGJlCisgKiBhYm91 dAorICoKKyAqICAgICBQKHggPCBtaW52YWxbaV0pIC0gUCh4IDwgbWludmFsW2ktMV0pCisg KgorICogYW5kIHdlIGNhbiBzdG9wIG9uY2Ugd2UnZCBleGNlZWQgd29ya19tZW0gKHdpdGgg c29tZSBzbGFjaykuIFNlZSBjb21tZW50CisgKiBmb3IgYnJpbl9taW5tYXhfc3RhdHMoKSBm b3IgbW9yZSB0aG91Z2h0cy4KKyAqCisgKgorICogNCkgTElNSVQvT0ZGU0VUIHZzLiBmdWxs IHNvcnQKKyAqCisgKiBUaGVyZSdzIG9uZSBjYXNlIHdoZXJlIHZlcnkgc21hbGwgc29ydHMg bWF5IGJlIGFjdHVhbGx5IG9wdGltYWwsIGFuZAorICogdGhhdCdzIHF1ZXJpZXMgdGhhdCBu ZWVkIHRvIHByb2Nlc3Mgb25seSB2ZXJ5IGZldyByb3dzIC0gc2F5LCBMSU1JVAorICogcXVl cmllcyB3aXRoIHZlcnkgc21hbGwgYm91bmQuCisgKgorICoKKyAqIEZJWE1FIGhhbmRsaW5n IG9mIG90aGVyIGJyaW4gb3BjbGFzc2VzIChtaW5tYXgtbXVsdGkpCisgKgorICogRklYTUUg aW1wcm92ZSBjb3N0aW5nCisgKgorICoKKyAqIEltcHJvdmVtZW50IGlkZWFzOgorICoKKyAq IDEpIG11bHRpcGxlIHR1cGxlc3RvcmVzIGZvciBvdmVybGFwcGluZyByYW5nZXMKKyAqCisg KiBXaGVuIHRoZXJlIGFyZSBtYW55IG92ZXJsYXBwaW5nIHJhbmdlcyAoc28gdGhhdCBtYXh2 YWwgPiBjdXJyZW50Lm1heHZhbCksCisgKiB3ZSdyZSBsb2FkaW5nIGFsbCB0aGUgImZ1dHVy ZSIgdHVwbGVzIGludG8gYSBuZXcgdHVwbGVzdG9yZS4gSG93ZXZlciwgaWYKKyAqIHRoZXJl IGFyZSBtdWx0aXBsZSBzdWNoIHJhbmdlcyAoaW1hZ2luZSByYW5nZXMgInNoaWZ0aW5nIiBi eSAxMCUsIHdoaWNoCisgKiBnaXZlcyB1cyA5IG1vcmUgcmFuZ2VzKSwgd2Uga25vdyBpbiB0 aGUgbmV4dCByb3VuZCB3ZSdsbCBvbmx5IG5lZWQgcm93cworICogdW50aWwgdGhlIG5leHQg bWF4dmFsLiBXZSdsbCBub3Qgc29ydCB0aGVzZSByb3dzLCBidXQgd2UnbGwgc3RpbGwgc2h1 ZmZsZQorICogdGhlbSBhcm91bmQgdW50aWwgd2UgZ2V0IHRvIHRoZSBwcm9wZXIgcmFuZ2Ug KHNvIGFib3V0IDEweCBlYWNoIHJvdykuCisgKiBNYXliZSB3ZSBzaG91bGQgcHJlLWFsbG9j YXRlIHRoZSB0dXBsZXN0b3JlcyAob3IgbWF5YmUgZXZlbiB0dXBsZXNvcnRzKQorICogZm9y IGZ1dHVyZSByYW5nZXMsIGFuZCByb3V0ZSB0aGUgdHVwbGVzIHRvIHRoZSBjb3JyZWN0IG9u ZT8gTWF5YmUgd2UKKyAqIGNvdWxkIGJlIGEgYml0IHNtYXJ0ZXIgYW5kIGRpc2NhcmQgdHVw bGVzIG9uY2Ugd2UgaGF2ZSBlbm91Z2ggcm93cyBmb3IKKyAqIHRoZSBwcmVjZWRpbmcgcmFu Z2VzIChzYXksIHdpdGggTElNSVQgcXVlcmllcykuIFdlJ2QgYWxzbyBuZWVkIHRvIHdvcnJ5 CisgKiBhYm91dCB3b3JrX21lbSwgdGhvdWdoIC0gd2UgY2FuJ3QganVzdCB1c2UgbWFueSB0 dXBsZXN0b3JlcywgZWFjaCB3aXRoCisgKiB3aG9sZSB3b3JrX21lbS4gU28gd2UnZCBwcm9i YWJseSB1c2UgZS5nLiB3b3JrX21lbS8yIGZvciB0aGUgbmV4dCBvbmUsCisgKiBhbmQgdGhl biAvNCwgLzggZXRjLiBmb3IgdGhlIGZvbGxvd2luZyBvbmVzLiBUaGF0J3Mgd29ya19tZW0g aW4gdG90YWwuCisgKiBBbmQgdGhlcmUnZCBuZWVkIHRvIGJlIHNvbWUgbGltaXQgb24gbnVt YmVyIG9mIHR1cGxlc3RvcmVzLCBJIGd1ZXNzLgorICoKKyAqIDIpIGhhbmRsaW5nIE5VTEwg dmFsdWVzCisgKgorICogV2UgbmVlZCB0byBoYW5kbGUgTlVMTFMgRklSU1QgLyBOVUxMUyBM QVNUIGNhc2VzLiBUaGUgcXVlc3Rpb24gaXMgaG93CisgKiB0byBkbyB0aGF0IC0gdGhlIGVh c2llc3Qgd2F5IGlzIHRvIHNpbXBseSBkbyBhIHNlcGFyYXRlIHNjYW4gb2YgcmFuZ2VzCisg KiB0aGF0IG1pZ2h0IGNvbnRhaW4gTlVMTCB2YWx1ZXMsIHByb2Nlc3NpbmcganVzdCByb3dz IHdpdGggTlVMTHMsIGFuZAorICogZGlzY2FyZGluZyBvdGhlciByb3dzLiBBbmQgdGhlbiBw cm9jZXNzIG5vbi1OVUxMIHZhbHVlcyBhcyBjdXJyZW50bHkuCisgKiBUaGUgTlVMTCBzY2Fu IHdvdWxkIGhhcHBlbiBiZWZvcmUvYWZ0ZXIgdGhpcyByZWd1bGFyIHBoYXNlLgorICoKKyAq IEJ5dCBtYXliZSB3ZSBjb3VsZCBiZSBzbWFydGVyLCBhbmQgbm90IGRvIHNlcGFyYXRlIHNj YW5zLiBXaGVuIHJlYWRpbmcKKyAqIGEgcGFnZSwgd2UgbWlnaHQgc3Rhc2ggdGhlIHR1cGxl IGluIGEgdHVwbGVzdG9yZSwgc28gdGhhdCB3ZSBjYW4gcmVhZAorICogaXQgdGhlIG5leHQg cm91bmQuIE9idmlvdXNseSwgdGhpcyBtaWdodCBiZSBleHBlbnNpdmUgaWYgd2UgbmVlZCB0 bworICoga2VlcCB0b28gbWFueSByb3dzLCBzbyB0aGUgdHVwbGVzdG9yZSB3b3VsZCBncm93 IHRvbyBsYXJnZSAtIGluIHRoYXQKKyAqIGNhc2UgaXQgbWlnaHQgYmUgYmV0dGVyIHRvIGp1 c3QgZG8gdGhlIHR3byBzY2Fucy4KKyAqCisgKiAzKSBwYXJhbGxlbGlzbQorICoKKyAqIFBy ZXN1bWFibHkgd2UgY291bGQgZG8gYSBwYXJhbGxlbCB2ZXJzaW9uIG9mIHRoaXMuIFRoZSBs ZWFkZXIgb3IgZmlyc3QKKyAqIHdvcmtlciB3b3VsZCBwcmVwYXJlIHRoZSByYW5nZSBpbmZv cm1hdGlvbiwgYW5kIHRoZSB3b3JrZXJzIHdvdWxkIHRoZW4KKyAqIGdyYWIgcmFuZ2VzIChp biBhIGtpbmRhIHJvdW5kIHJvYmluIG1hbm5lciksIHNvcnQgdGhlbSBpbmRlcGVuZGVudGx5 LAorICogYW5kIHRoZW4gdGhlIHJlc3VsdHMgd291bGQgYmUgbWVyZ2VkIGJ5IEdhdGhlciBN ZXJnZS4KKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQnJpblNvcnQuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisvKgor ICogSU5URVJGQUNFIFJPVVRJTkVTCisgKgkJRXhlY0JyaW5Tb3J0CQkJc2NhbnMgYSByZWxh dGlvbiB1c2luZyBhbiBpbmRleAorICoJCUluZGV4TmV4dAkJCQlyZXRyaWV2ZSBuZXh0IHR1 cGxlIHVzaW5nIGluZGV4CisgKgkJRXhlY0luaXRCcmluU29ydAkJY3JlYXRlcyBhbmQgaW5p dGlhbGl6ZXMgc3RhdGUgaW5mby4KKyAqCQlFeGVjUmVTY2FuQnJpblNvcnQJCXJlc2NhbnMg dGhlIGluZGV4ZWQgcmVsYXRpb24uCisgKgkJRXhlY0VuZEJyaW5Tb3J0CQkJcmVsZWFzZXMg YWxsIHN0b3JhZ2UuCisgKgkJRXhlY0JyaW5Tb3J0TWFya1BvcwkJbWFya3Mgc2NhbiBwb3Np dGlvbi4KKyAqCQlFeGVjQnJpblNvcnRSZXN0clBvcwlyZXN0b3JlcyBzY2FuIHBvc2l0aW9u LgorICoJCUV4ZWNCcmluU29ydEVzdGltYXRlCWVzdGltYXRlcyBEU00gc3BhY2UgbmVlZGVk IGZvciBwYXJhbGxlbCBpbmRleCBzY2FuCisgKgkJRXhlY0JyaW5Tb3J0SW5pdGlhbGl6ZURT TSBpbml0aWFsaXplIERTTSBmb3IgcGFyYWxsZWwgQnJpblNvcnQKKyAqCQlFeGVjQnJpblNv cnRSZUluaXRpYWxpemVEU00gcmVpbml0aWFsaXplIERTTSBmb3IgZnJlc2ggc2NhbgorICoJ CUV4ZWNCcmluU29ydEluaXRpYWxpemVXb3JrZXIgYXR0YWNoIHRvIERTTSBpbmZvIGluIHBh cmFsbGVsIHdvcmtlcgorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUg ImFjY2Vzcy9icmluLmgiCisjaW5jbHVkZSAiYWNjZXNzL2JyaW5faW50ZXJuYWwuaCIKKyNp bmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCisjaW5jbHVkZSAiYWNjZXNzL3JlbHNjYW4uaCIK KyNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5o IgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2Ft LmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2RlYnVnLmgiCisjaW5jbHVkZSAiZXhlY3V0 b3Ivbm9kZUJyaW5Tb3J0LmgiCisjaW5jbHVkZSAibGliL3BhaXJpbmdoZWFwLmgiCisjaW5j bHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5j bHVkZSAidXRpbHMvYXJyYXkuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgorI2luY2x1 ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisj aW5jbHVkZSAidXRpbHMvcmVsLmgiCisKKworc3RhdGljIFR1cGxlVGFibGVTbG90ICpJbmRl eE5leHQoQnJpblNvcnRTdGF0ZSAqbm9kZSk7CitzdGF0aWMgYm9vbCBJbmRleFJlY2hlY2so QnJpblNvcnRTdGF0ZSAqbm9kZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworc3RhdGljIHZv aWQgRXhlY0luaXRCcmluU29ydFJhbmdlcyhCcmluU29ydCAqbm9kZSwgQnJpblNvcnRTdGF0 ZSAqcGxhbnN0YXRlKTsKKworI2lmZGVmIERFQlVHX0JSSU5fU09SVAorYm9vbCBkZWJ1Z19i cmluX3NvcnQgPSBmYWxzZTsKKyNlbmRpZgorCisvKiBkbyB2YXJpb3VzIGNvbnNpc3RlbmN5 IGNoZWNrcyAqLworc3RhdGljIHZvaWQKK0Fzc2VydENoZWNrUmFuZ2VzKEJyaW5Tb3J0U3Rh dGUgKm5vZGUpCit7CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCisjZW5kaWYKK30K KworLyoKKyAqIGJyaW5zb3J0X3N0YXJ0X3RpZHNjYW4KKyAqCQlTdGFydCBzY2FubmluZyB0 dXBsZXMgZnJvbSBhIGdpdmVuIHBhZ2UgcmFuZ2UuCisgKgorICogV2Ugb3BlbiBhIFRJRCBy YW5nZSBzY2FuIGZvciB0aGUgZ2l2ZW4gcmFuZ2UsIGFuZCBpbml0aWFsaXplIHRoZSB0dXBs ZXNvcnQuCisgKiBPcHRpb25hbGx5LCB3ZSB1cGRhdGUgdGhlIHdhdGVybWFyayAod2l0aCBl aXRoZXIgaGlnaC9sb3cgdmFsdWUpLiBXZSBvbmx5CisgKiBuZWVkIHRvIGRvIHRoaXMgZm9y IHRoZSBtYWluIHBhZ2UgcmFuZ2UsIG5vdCBmb3IgdGhlIGludGVyc2VjdGluZyByYW5nZXMu CisgKgorICogWFhYIE1heWJlIHdlIHNob3VsZCBpbml0aWFsaXplIHRoZSB0aWRzY2FuIG9u bHkgb25jZSwgYW5kIHRoZW4gZG8gcmVzY2FuCisgKiBmb3IgdGhlIGZvbGxvd2luZyByYW5n ZXM/IEFuZCBzaW1pbGFybHkgZm9yIHRoZSB0dXBsZXNvcnQ/CisgKi8KK3N0YXRpYyB2b2lk Citicmluc29ydF9zdGFydF90aWRzY2FuKEJyaW5Tb3J0U3RhdGUgKm5vZGUpCit7CisJQnJp blNvcnQgICAqcGxhbiA9IChCcmluU29ydCAqKSBub2RlLT5zcy5wcy5wbGFuOworCUVTdGF0 ZQkgICAqZXN0YXRlID0gbm9kZS0+c3MucHMuc3RhdGU7CisJQnJpblJhbmdlICAqcmFuZ2Ug PSBub2RlLT5ic19yYW5nZTsKKworCS8qIFRoZXJlIG11c3Qgbm90IGJlIGFueSBUSUQgc2Nh biBpbiBwcm9ncmVzcyB5ZXQuICovCisJQXNzZXJ0KG5vZGUtPnNzLnNzX2N1cnJlbnRTY2Fu RGVzYyA9PSBOVUxMKTsKKworCS8qIEluaXRpYWxpemUgdGhlIFRJRCByYW5nZSBzY2FuLCBm b3IgdGhlIHByb3ZpZGVkIGJsb2NrIHJhbmdlLiAqLworCWlmIChub2RlLT5zcy5zc19jdXJy ZW50U2NhbkRlc2MgPT0gTlVMTCkKKwl7CisJCVRhYmxlU2NhbkRlc2MJCXRzY2FuZGVzYzsK KwkJSXRlbVBvaW50ZXJEYXRhCQltaW50aWQsCisJCQkJCQkJbWF4dGlkOworCisJCUl0ZW1Q b2ludGVyU2V0QmxvY2tOdW1iZXIoJm1pbnRpZCwgcmFuZ2UtPmJsa25vX3N0YXJ0KTsKKwkJ SXRlbVBvaW50ZXJTZXRPZmZzZXROdW1iZXIoJm1pbnRpZCwgMCk7CisKKwkJSXRlbVBvaW50 ZXJTZXRCbG9ja051bWJlcigmbWF4dGlkLCByYW5nZS0+Ymxrbm9fZW5kKTsKKwkJSXRlbVBv aW50ZXJTZXRPZmZzZXROdW1iZXIoJm1heHRpZCwgTWF4SGVhcFR1cGxlc1BlclBhZ2UpOwor CisJCWVsb2coREVCVUcxLCAibG9hZGluZyByYW5nZSBibG9ja3MgWyV1LCAldV0iLAorCQkJ IHJhbmdlLT5ibGtub19zdGFydCwgcmFuZ2UtPmJsa25vX2VuZCk7CisKKwkJdHNjYW5kZXNj ID0gdGFibGVfYmVnaW5zY2FuX3RpZHJhbmdlKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlv biwKKwkJCQkJCQkJCQkJIGVzdGF0ZS0+ZXNfc25hcHNob3QsCisJCQkJCQkJCQkJCSAmbWlu dGlkLCAmbWF4dGlkKTsKKwkJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gdHNjYW5k ZXNjOworCX0KKworCWlmIChub2RlLT5ic190dXBsZXNvcnRzdGF0ZSA9PSBOVUxMKQorCXsK KwkJVHVwbGVEZXNjCXR1cERlc2MgPSAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVEZXNj KTsKKworCQlub2RlLT5ic190dXBsZXNvcnRzdGF0ZSA9IHR1cGxlc29ydF9iZWdpbl9oZWFw KHR1cERlc2MsCisJCQkJCQkJCQkJCQkJcGxhbi0+bnVtQ29scywKKwkJCQkJCQkJCQkJCQlw bGFuLT5zb3J0Q29sSWR4LAorCQkJCQkJCQkJCQkJCXBsYW4tPnNvcnRPcGVyYXRvcnMsCisJ CQkJCQkJCQkJCQkJcGxhbi0+Y29sbGF0aW9ucywKKwkJCQkJCQkJCQkJCQlwbGFuLT5udWxs c0ZpcnN0LAorCQkJCQkJCQkJCQkJCXdvcmtfbWVtLAorCQkJCQkJCQkJCQkJCU5VTEwsCisJ CQkJCQkJCQkJCQkJVFVQTEVTT1JUX05PTkUpOworCX0KKworCWlmIChub2RlLT5ic190dXBs ZXN0b3JlID09IE5VTEwpCisJeworCQlub2RlLT5ic190dXBsZXN0b3JlID0gdHVwbGVzdG9y ZV9iZWdpbl9oZWFwKGZhbHNlLCBmYWxzZSwgd29ya19tZW0pOworCX0KK30KKworLyoKKyAq IGJyaW5zb3J0X2VuZF90aWRzY2FuCisgKgkJRmluaXNoIHRoZSBUSUQgcmFuZ2Ugc2Nhbi4K KyAqLworc3RhdGljIHZvaWQKK2JyaW5zb3J0X2VuZF90aWRzY2FuKEJyaW5Tb3J0U3RhdGUg Km5vZGUpCit7CisJLyogZ2V0IHRoZSBmaXJzdCByYW5nZSwgcmVhZCBhbGwgdHVwbGVzIHVz aW5nIGEgdGlkIHJhbmdlIHNjYW4gKi8KKwlpZiAobm9kZS0+c3Muc3NfY3VycmVudFNjYW5E ZXNjICE9IE5VTEwpCisJeworCQl0YWJsZV9lbmRzY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRT Y2FuRGVzYyk7CisJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CisJfQor fQorCisvKgorICogYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyaworICoJCUFkdmFuY2UgdGhl IHdhdGVybWFyayB0byB0aGUgbmV4dCBtaW52YWwgKG9yIG1heHZhbCBmb3IgREVTQykuCisg KgorICogV2UgY291bGQgY291bGQgYWN0dWFsbHkgYWR2YW5jZSB0aGUgd2F0ZXJtYXJrIGJ5 IG11bHRpcGxlIHN0ZXBzIChub3QgdG8KKyAqIHRoZSBpbW1lZGlhdGVseSBmb2xsb3dpbmcg bWludmFsLCBidXQgYSBjb3VwbGUgbW9yZSksIHRvIGFjY3VtdWxhdGUgbW9yZQorICogcm93 cyBpbiB0aGUgdHVwbGVzb3J0LiBUaGUgbnVtYmVyIG9mIHN0ZXBzIHdlIG1ha2UgY29ycmVs YXRlcyB3aXRoIHRoZQorICogYW1vdW50IG9mIGRhdGEgd2Ugc29ydCBpbiBhIGdpdmVuIHN0 ZXAsIGJ1dCB3ZSBkb24ndCBrbm93IGluIGFkdmFuY2UKKyAqIGhvdyBtYW55IHJvd3MgKG9y IGJ5dGVzKSB3aWxsIHRoYXQgYWN0dWFsbHkgYmUuIFdlIGNvdWxkIGRvIHNvbWUgc2ltcGxl CisgKiBoZXVyaXN0aWNzIChtZWFzdXJlIHBhc3Qgc29ydHMgYW5kIGV4dHJhcG9sYXRlKS4K KyAqCisgKiBYWFggV2l0aCBhIHNlcGFyYXRlIF9zZXQgYW5kIF9lbXB0eSBmbGFncywgd2Ug ZG9uJ3QgcmVhbGx5IG5lZWQgdG8gcGFzcworICogYSBzZXBhcmF0ZSAiZmlyc3QiIHBhcmFt ZXRlciAtICJzZXQ9ZmFsc2UiIGhhcyB0aGUgc2FtZSBtZWFuaW5nLgorICovCitzdGF0aWMg dm9pZAorYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhCcmluU29ydFN0YXRlICpub2RlLCBi b29sIGFzYykKK3sKKwlpbnQJCWNtcDsKKwlib29sCWZvdW5kID0gZmFsc2U7CisKKwl0dXBs ZXNvcnRfbWFya3Bvcyhub2RlLT5ic19zY2FuLT5yYW5nZXMpOworCisJd2hpbGUgKHR1cGxl c29ydF9nZXR0dXBsZXNsb3Qobm9kZS0+YnNfc2Nhbi0+cmFuZ2VzLCB0cnVlLCBmYWxzZSwg bm9kZS0+YnNfc2Nhbi0+c2xvdCwgTlVMTCkpCisJeworCQlib29sCWlzbnVsbDsKKwkJRGF0 dW0JdmFsdWU7CisJCWJvb2wJYWxsX251bGxzOworCQlib29sCW5vdF9zdW1tYXJpemVkOwor CisJCWFsbF9udWxscyA9IERhdHVtR2V0Qm9vbChzbG90X2dldGF0dHIobm9kZS0+YnNfc2Nh bi0+c2xvdCwgNCwgJmlzbnVsbCkpOworCQlBc3NlcnQoIWlzbnVsbCk7CisKKwkJbm90X3N1 bW1hcml6ZWQgPSBEYXR1bUdldEJvb2woc2xvdF9nZXRhdHRyKG5vZGUtPmJzX3NjYW4tPnNs b3QsIDUsICZpc251bGwpKTsKKwkJQXNzZXJ0KCFpc251bGwpOworCisJCS8qIHdlIGlnbm9y ZSByYW5nZXMgdGhhdCBhcmUgZWl0aGVyIGFsbF9udWxscyBvciBub3Qgc3VtbWFyaXplZCAq LworCQlpZiAoYWxsX251bGxzIHx8IG5vdF9zdW1tYXJpemVkKQorCQkJY29udGludWU7CisK KwkJLyogdXNlIGVpdGhlciBtaW52YWwgb3IgbWF4dmFsLCBkZXBlbmRpbmcgb24gdGhlIEFT QyAvIERFU0MgKi8KKwkJaWYgKGFzYykKKwkJCXZhbHVlID0gc2xvdF9nZXRhdHRyKG5vZGUt PmJzX3NjYW4tPnNsb3QsIDYsICZpc251bGwpOworCQllbHNlCisJCQl2YWx1ZSA9IHNsb3Rf Z2V0YXR0cihub2RlLT5ic19zY2FuLT5zbG90LCA3LCAmaXNudWxsKTsKKworCQlpZiAoIW5v ZGUtPmJzX3dhdGVybWFya19zZXQpCisJCXsKKwkJCW5vZGUtPmJzX3dhdGVybWFya19zZXQg PSB0cnVlOworCQkJbm9kZS0+YnNfd2F0ZXJtYXJrID0gdmFsdWU7CisJCQljb250aW51ZTsK KwkJfQorCisJCWNtcCA9IEFwcGx5U29ydENvbXBhcmF0b3Iobm9kZS0+YnNfd2F0ZXJtYXJr LCBmYWxzZSwgdmFsdWUsIGZhbHNlLAorCQkJCQkJCQkgICZub2RlLT5ic19zb3J0c3VwcG9y dCk7CisKKwkJaWYgKGNtcCA8IDApCisJCXsKKwkJCW5vZGUtPmJzX3dhdGVybWFya19zZXQg PSB0cnVlOworCQkJbm9kZS0+YnNfd2F0ZXJtYXJrID0gdmFsdWU7CisJCQlmb3VuZCA9IHRy dWU7CisJCQlicmVhazsKKwkJfQorCX0KKworCXR1cGxlc29ydF9yZXN0b3JlcG9zKG5vZGUt PmJzX3NjYW4tPnJhbmdlcyk7CisKKwlub2RlLT5ic193YXRlcm1hcmtfZW1wdHkgPSAoIWZv dW5kKTsKK30KKworLyoKKyAqIGJyaW5zb3J0X2xvYWRfdHVwbGVzCisgKgkJTG9hZCB0dXBs ZXMgZnJvbSB0aGUgVElEIHJhbmdlIHNjYW4sIGFkZCB0aGVtIHRvIHR1cGxlc29ydC9zdG9y ZS4KKyAqCisgKiBXaGVuIGNhbGxlZCBmb3IgdGhlICJjdXJyZW50IiByYW5nZSwgd2UgZG9u J3QgbmVlZCB0byBjaGVjayB0aGUgd2F0ZXJtYXJrLAorICogd2Uga25vdyB0aGUgdHVwbGUg Z29lcyBpbnRvIHRoZSB0dXBsZXNvcnQuIFNvIHdpdGggY2hlY2tfd2F0ZXJtYXJrIHdlCisg KiBza2lwIHRoZSBjb21wYXJhdG9yIGNhbGwgdG8gc2F2ZSBDUFUgY29zdC4KKyAqLworc3Rh dGljIHZvaWQKK2JyaW5zb3J0X2xvYWRfdHVwbGVzKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIGJv b2wgY2hlY2tfd2F0ZXJtYXJrLCBib29sIG51bGxfcHJvY2Vzc2luZykKK3sKKwlCcmluU29y dAkgICAqcGxhbiA9IChCcmluU29ydCAqKSBub2RlLT5zcy5wcy5wbGFuOworCVRhYmxlU2Nh bkRlc2MJc2NhbjsKKwlFU3RhdGUJCSAgICplc3RhdGU7CisJU2NhbkRpcmVjdGlvbglkaXJl Y3Rpb247CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJQnJpblJhbmdlCSAgICpyYW5nZSA9 IG5vZGUtPmJzX3JhbmdlOworCVByb2plY3Rpb25JbmZvICpwcm9qSW5mbzsKKworCWVzdGF0 ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOworCWRpcmVjdGlvbiA9IGVzdGF0ZS0+ZXNfZGlyZWN0 aW9uOworCXByb2pJbmZvID0gbm9kZS0+YnNfUHJvakluZm87CisKKwlzbG90ID0gbm9kZS0+ c3Muc3NfU2NhblR1cGxlU2xvdDsKKworCUFzc2VydChub2RlLT5ic19yYW5nZSAhPSBOVUxM KTsKKworCS8qCisJICogSWYgd2UncmUgbm90IHByb2Nlc3NpZ24gTlVMTFMsIGFuZCB0aGlz IGlzIGFsbC1udWxscyByYW5nZSwgd2UgY2FuCisJICoganVzdCBza2lwIGl0IC0gd2Ugd29u J3QgZmluZCBhbnkgbm9uLU5VTEwgdHVwbGVzIGluIGl0LgorCSAqCisJICogWFhYIFNob3Vs ZG4ndCBoYXBwZW4sIHRoYW5rcyB0byBsb2dpYyBpbiBicmluc29ydF9uZXh0X3JhbmdlKCku CisJICovCisJaWYgKCFudWxsX3Byb2Nlc3NpbmcgJiYgcmFuZ2UtPmFsbF9udWxscykKKwkJ cmV0dXJuOworCisJLyoKKwkgKiBTaW1pbGFybHksIGlmIHdlJ3JlIHByb2Nlc3NpbmcgTlVM THMgYW5kIHRoaXMgcmFuZ2UgZG9lcyBub3QgaGF2ZQorCSAqIGhhc19udWxscyBmbGFnLCB3 ZSBjYW4gc2tpcCBpdC4KKwkgKgorCSAqIFhYWCBTaG91bGRuJ3QgaGFwcGVuLCB0aGFua3Mg dG8gbG9naWMgaW4gYnJpbnNvcnRfbmV4dF9yYW5nZSgpLgorCSAqLworCWlmIChudWxsX3By b2Nlc3NpbmcgJiYgIShyYW5nZS0+aGFzX251bGxzIHx8IHJhbmdlLT5ub3Rfc3VtbWFyaXpl ZCB8fCByYW5nZS0+YWxsX251bGxzKSkKKwkJcmV0dXJuOworCisJYnJpbnNvcnRfc3RhcnRf dGlkc2Nhbihub2RlKTsKKworCXNjYW4gPSBub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2M7 CisKKwkvKgorCSAqIFJlYWQgdHVwbGVzLCBldmFsdWF0ZSB0aGUgZmlsdGVyIChzbyB0aGF0 IHdlIGRvbid0IGtlZXAgdHVwbGVzIG9ubHkgdG8KKwkgKiBkaXNjYXJkIHRoZW0gbGF0ZXIp LCBhbmQgZGVjaWRlIGlmIGl0IGdvZXMgaW50byB0aGUgY3VycmVudCByYW5nZQorCSAqICh0 dXBsZXNvcnQpIG9yIG92ZXJmbG93ICh0dXBsZXN0b3JlKS4KKwkgKi8KKwl3aGlsZSAodGFi bGVfc2Nhbl9nZXRuZXh0c2xvdF90aWRyYW5nZShzY2FuLCBkaXJlY3Rpb24sIHNsb3QpKQor CXsKKwkJRXhwckNvbnRleHQgKmVjb250ZXh0OworCQlFeHByU3RhdGUgICpxdWFsOworCisJ CS8qCisJCSAqIEZldGNoIGRhdGEgZnJvbSBub2RlCisJCSAqLworCQlxdWFsID0gbm9kZS0+ YnNfcXVhbDsKKwkJZWNvbnRleHQgPSBub2RlLT5zcy5wcy5wc19FeHByQ29udGV4dDsKKwor CQkvKgorCQkgKiBwbGFjZSB0aGUgY3VycmVudCB0dXBsZSBpbnRvIHRoZSBleHByIGNvbnRl eHQKKwkJICovCisJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNsb3Q7CisKKwkJLyoK KwkJICogY2hlY2sgdGhhdCB0aGUgY3VycmVudCB0dXBsZSBzYXRpc2ZpZXMgdGhlIHF1YWwt Y2xhdXNlCisJCSAqCisJCSAqIGNoZWNrIGZvciBub24tbnVsbCBxdWFsIGhlcmUgdG8gYXZv aWQgYSBmdW5jdGlvbiBjYWxsIHRvIEV4ZWNRdWFsKCkKKwkJICogd2hlbiB0aGUgcXVhbCBp cyBudWxsIC4uLiBzYXZlcyBvbmx5IGEgZmV3IGN5Y2xlcywgYnV0IHRoZXkgYWRkIHVwCisJ CSAqIC4uLgorCQkgKgorCQkgKiBYWFggRG9uZSBoZXJlLCBiZWNhdXNlIGluIEV4ZWNTY2Fu IHdlJ2xsIGdldCBkaWZmZXJlbnQgc2xvdCB0eXBlCisJCSAqIChtaW5pbWFsIHR1cGxlIHZz LiBidWZmZXJlZCB0dXBsZSkuIFNjYW4gZXhwZWN0cyBzbG90IHdoaWxlIHJlYWRpbmcKKwkJ ICogZnJvbSB0aGUgdGFibGUgKGxpa2UgaGVyZSksIGJ1dCB3ZSdyZSBzdGFzaGluZyBpdCBp bnRvIGEgdHVwbGVzb3J0LgorCQkgKgorCQkgKiBYWFggTWF5YmUgd2UgY291bGQgZWxpbWlu YXRlIG1hbnkgdHVwbGVzIGJ5IGxldmVyYWdpbmcgdGhlIEJSSU4KKwkJICogcmFuZ2UsIGJ5 IGV4ZWN1dGluZyB0aGUgY29uc2lzdGVudCBmdW5jdGlvbi4gQnV0IHdlIGRvbid0IGhhdmUK KwkJICogdGhlIHF1YWwgaW4gYXBwcm9wcmlhdGUgZm9ybWF0IGF0IHRoZSBtb21lbnQsIHNv IHdlJ2QgcHJlcHJvY2VzcworCQkgKiB0aGUga2V5cyBzaW1pbGFybHkgdG8gYnJpbmdldGJp dG1hcCgpLiBJbiB3aGljaCBjYXNlIHdlIHNob3VsZAorCQkgKiBwcm9iYWJseSBldmFsdWF0 ZSB0aGUgc3R1ZmYgd2hpbGUgYnVpbGRpbmcgdGhlIHJhbmdlcz8gQWx0aG91Z2gsCisJCSAq IGlmIHRoZSAiY29uc2lzdGVudCIgZnVuY3Rpb24gaXMgZXhwZW5zaXZlLCBpdCBtaWdodCBi ZSBjaGVhcGVyCisJCSAqIHRvIGRvIHRoYXQgaW5jcmVtZW50YWxseSwgYXMgd2UgbmVlZCB0 aGUgcmFuZ2VzLiBXb3VsZCBiZSBhIHdpbgorCQkgKiBmb3IgTElNSVQgcXVlcmllcywgZm9y IGV4YW1wbGUuCisJCSAqCisJCSAqIFhYWCBIb3dldmVyLCBtYXliZSB3ZSBjb3VsZCBhbHNv IGxldmVyYWdlIG90aGVyIGJpdG1hcCBpbmRleGVzLAorCQkgKiBwYXJ0aWN1bGFybHkgZm9y IEJSSU4gaW5kZXhlcyBiZWNhdXNlIHRoYXQgbWFrZXMgaXQgc2ltcGxlciB0bworCQkgKiBl bGltaW5hdGUgdGhlIHJhbmdlcyBpbmNyZW1lbnRhbGx5IC0gd2Uga25vdyB3aGljaCByYW5n ZXMgdG8KKwkJICogbG9hZCBmcm9tIHRoZSBpbmRleCwgd2hpbGUgZm9yIG90aGVyIGluZGV4 ZXMgKGUuZy4gYnRyZWUpIHdlCisJCSAqIGhhdmUgdG8gcmVhZCB0aGUgd2hvbGUgaW5kZXgg YW5kIGJ1aWxkIGEgYml0bWFwIGluIG9yZGVyIHRvIGhhdmUKKwkJICogYSBiaXRtYXAgZm9y IGFueSByYW5nZS4gQWx0aG91Z2gsIGlmIHRoZSBjb25kaXRpb24gaXMgdmVyeQorCQkgKiBz ZWxlY3RpdmUsIHdlIG1heSBuZWVkIHRvIHJlYWQgb25seSBhIHNtYWxsIGZyYWN0aW9uIG9m IHRoZQorCQkgKiBpbmRleCwgc28gbWF5YmUgdGhhdCdzIE9LLgorCQkgKi8KKwkJaWYgKHF1 YWwgPT0gTlVMTCB8fCBFeGVjUXVhbChxdWFsLCBlY29udGV4dCkpCisJCXsKKwkJCWludAkJ Y21wID0gMDsJLyogbWF0dGVycyBmb3IgY2hlY2tfd2F0ZXJtYXJrPWZhbHNlICovCisJCQlE YXR1bQl2YWx1ZTsKKwkJCWJvb2wJaXNudWxsOworCQkJVHVwbGVUYWJsZVNsb3QgKnRtcHNs b3Q7CisKKwkJCWlmIChwcm9qSW5mbykKKwkJCQl0bXBzbG90ID0gRXhlY1Byb2plY3QocHJv akluZm8pOworCQkJZWxzZQorCQkJCXRtcHNsb3QgPSBzbG90OworCisJCQl2YWx1ZSA9IHNs b3RfZ2V0YXR0cih0bXBzbG90LCBwbGFuLT5zb3J0Q29sSWR4WzBdLCAmaXNudWxsKTsKKwor CQkJLyoKKwkJCSAqIEhhbmRsZSBOVUxMIHZhbHVlcyAtIHN0YXNoIHRoZW0gaW50byB0aGUg dHVwbGVzdG9yZSwgYW5kIHRoZW4KKwkJCSAqIHdlJ2xsIG91dHB1dCB0aGVtIGluICJwcm9j ZXNzIiBzdGFnZS4KKwkJCSAqCisJCQkgKiBYWFggQ2FuIHdlIGJlIGEgYml0IHNtYXJ0ZXIg Zm9yIExJTUlUIHF1ZXJpZXMgYW5kIHN0b3AgcmVhZGluZworCQkJICogcm93cyBvbmNlIHdl IGdldCB0aGUgbnVtYmVyIHdlIG5lZWQgdG8gcHJvZHVjZT8gUHJvYmFibHkgbm90LAorCQkJ ICogYmVjYXVzZSB0aGUgb3JkZXJpbmcgbWF5IHJlZmVyZW5jZSBvdGhlciBjb2x1bW5zICh3 aGljaCB3ZSBtYXkKKwkJCSAqIHNhdGlzZnkgdGhyb3VnaCBJbmNyZW1lbnRhbFNvcnQpLiBC dXQgYWxsIE5VTEwgY29sdW1ucyBhcmUKKwkJCSAqIGNvbnNpZGVyZWQgZXF1YWwsIHNvIHdl IG5lZWQgYWxsIHRoZSByb3dzIHRvIHByb3Blcmx5IGNvbXBhcmUKKwkJCSAqIHRoZSBvdGhl ciBrZXlzLgorCQkJICovCisJCQlpZiAobnVsbF9wcm9jZXNzaW5nKQorCQkJeworCQkJCS8q IFN0YXNoIGl0IHRvIHRoZSB0dXBsZXN0b3JlICh3aGVuIE5VTEwsIG9yIGlnbm9yZQorCQkJ CSAqIGl0ICh3aGVuIG5vdC1OVUxMKS4gKi8KKwkJCQlpZiAoaXNudWxsKQorCQkJCQl0dXBs ZXN0b3JlX3B1dHR1cGxlc2xvdChub2RlLT5ic190dXBsZXN0b3JlLCB0bXBzbG90KTsKKwor CQkJCS8qIE5VTEwgb3Igbm90LCB3ZSdyZSBkb25lICovCisJCQkJY29udGludWU7CisJCQl9 CisKKwkJCS8qIHdlJ3JlIG5vdCBwcm9jZXNzaW5nIE5VTEwgdmFsdWVzLCBzbyBpZ25vcmUg TlVMTHMgKi8KKwkJCWlmIChpc251bGwpCisJCQkJY29udGludWU7CisKKwkJCS8qCisJCQkg KiBPdGhlcndpc2UgY29tcGFyZSB0byB3YXRlcm1hcmssIGFuZCBzdGFzaCBpdCBlaXRoZXIg dG8gdGhlCisJCQkgKiB0dXBsZXNvcnQgb3IgdHVwbGVzdG9yZS4KKwkJCSAqLworCQkJaWYg KGNoZWNrX3dhdGVybWFyayAmJiBub2RlLT5ic193YXRlcm1hcmtfc2V0ICYmICFub2RlLT5i c193YXRlcm1hcmtfZW1wdHkpCisJCQkJY21wID0gQXBwbHlTb3J0Q29tcGFyYXRvcih2YWx1 ZSwgZmFsc2UsCisJCQkJCQkJCQkJICBub2RlLT5ic193YXRlcm1hcmssIGZhbHNlLAorCQkJ CQkJCQkJCSAgJm5vZGUtPmJzX3NvcnRzdXBwb3J0KTsKKworCQkJaWYgKGNtcCA8PSAwKQor CQkJCXR1cGxlc29ydF9wdXR0dXBsZXNsb3Qobm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUsIHRt cHNsb3QpOworCQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICogWFhYIFdlIGNhbiBiZSBh IGJpdCBzbWFydGVyIGZvciBMSU1JVCBxdWVyaWVzIC0gb25jZSB3ZQorCQkJCSAqIGtub3cg d2UgaGF2ZSBtb3JlIHJvd3MgaW4gdGhlIHR1cGxlc29ydCB0aGFuIHdlIG5lZWQgdG8KKwkJ CQkgKiBvdXRwdXQsIHdlIGNhbiBzdG9wIHNwaWxsaW5nIC0gdGhvc2Ugcm93cyBhcmUgbm90 IGdvaW5nCisJCQkJICogdG8gYmUgbmVlZGVkLiBXZSBjYW4gZGlzY2FyZCB0aGUgdHVwbGVz b3J0IChubyBuZWVkIHRvCisJCQkJICogcmVzcGlsbCkgYW5kIHN0b3Agc3BpbGxpbmcuCisJ CQkJICovCisJCQkJdHVwbGVzdG9yZV9wdXR0dXBsZXNsb3Qobm9kZS0+YnNfdHVwbGVzdG9y ZSwgdG1wc2xvdCk7CisJCQl9CisJCX0KKworCQlFeGVjQ2xlYXJUdXBsZShzbG90KTsKKwl9 CisKKwlFeGVjQ2xlYXJUdXBsZShzbG90KTsKKworCWJyaW5zb3J0X2VuZF90aWRzY2FuKG5v ZGUpOworfQorCisvKgorICogYnJpbnNvcnRfbG9hZF9zcGlsbF90dXBsZXMKKyAqCQlMb2Fk IHR1cGxlcyBmcm9tIHRoZSBzcGlsbCB0dXBsZXN0b3JlLCBhbmQgZWl0aGVyIHN0YXNoIHRo ZW0gaW50bworICoJCWEgdHVwbGVzb3J0IG9yIGEgbmV3IHR1cGxlc3RvcmUuCisgKgorICog QWZ0ZXIgcHJvY2Vzc2luZyB0aGUgbGFzdCByYW5nZSwgd2Ugd2FudCB0byBwcm9jZXNzIGFs bCByZW1haW5pbmcgcmFuZ2VzLAorICogc28gd2l0aCBjaGVja193YXRlcm1hcms9ZmFsc2Ug d2Ugc2tpcCB0aGUgY2hlY2suCisgKi8KK3N0YXRpYyB2b2lkCiticmluc29ydF9sb2FkX3Nw aWxsX3R1cGxlcyhCcmluU29ydFN0YXRlICpub2RlLCBib29sIGNoZWNrX3dhdGVybWFyaykK K3sKKwlCcmluU29ydCAgICpwbGFuID0gKEJyaW5Tb3J0ICopIG5vZGUtPnNzLnBzLnBsYW47 CisJVHVwbGVzdG9yZXN0YXRlICp0dXBzdG9yZTsKKwlUdXBsZVRhYmxlU2xvdCAqc2xvdDsK KwlQcm9qZWN0aW9uSW5mbyAqcHJvakluZm87CisKKwlwcm9qSW5mbyA9IG5vZGUtPmJzX1By b2pJbmZvOworCisJaWYgKG5vZGUtPmJzX3R1cGxlc3RvcmUgPT0gTlVMTCkKKwkJcmV0dXJu OworCisJLyogc3RhcnQgc2Nhbm5pbmcgdGhlIGV4aXN0aW5nIHR1cGxlc3RvcmUgKFhYWCBu ZWVkZWQ/KSAqLworCXR1cGxlc3RvcmVfcmVzY2FuKG5vZGUtPmJzX3R1cGxlc3RvcmUpOwor CisJLyoKKwkgKiBDcmVhdGUgYSBuZXcgdHVwbGVzdG9yZSwgZm9yIHR1cGxlcyB0aGF0IGV4 Y2VlZCB0aGUgd2F0ZXJtYXJrIGFuZCBzbworCSAqIHNob3VsZCBub3QgYmUgaW5jbHVkZWQg aW4gdGhlIGN1cnJlbnQgc29ydC4KKwkgKi8KKwl0dXBzdG9yZSA9IHR1cGxlc3RvcmVfYmVn aW5faGVhcChmYWxzZSwgZmFsc2UsIHdvcmtfbWVtKTsKKworCS8qCisJICogV2UgbmVlZCBh IHNsb3QgZm9yIG1pbmltYWwgdHVwbGVzLiBUaGUgc2NhbiBzbG90IHVzZXMgYnVmZmVyZWQg dHVwbGVzLAorCSAqIHNvIGl0J2QgdHJpZ2dlciBhbiBlcnJvciBpbiB0aGUgbG9vcC4KKwkg Ki8KKwlpZiAocHJvakluZm8pCisJCXNsb3QgPSBub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBs ZVNsb3Q7CisJZWxzZQorCXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRp b25HZXREZXNjcihub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24pLAorCQkJCQkJCQkJJlRU U09wc01pbmltYWxUdXBsZSk7CisKKwl3aGlsZSAodHVwbGVzdG9yZV9nZXR0dXBsZXNsb3Qo bm9kZS0+YnNfdHVwbGVzdG9yZSwgdHJ1ZSwgdHJ1ZSwgc2xvdCkpCisJeworCQlpbnQJCWNt cCA9IDA7CS8qIG1hdHRlcnMgZm9yIGNoZWNrX3dhdGVybWFyaz1mYWxzZSAqLworCQlib29s CWlzbnVsbDsKKwkJRGF0dW0JdmFsdWU7CisKKwkJdmFsdWUgPSBzbG90X2dldGF0dHIoc2xv dCwgcGxhbi0+c29ydENvbElkeFswXSwgJmlzbnVsbCk7CisKKwkJLyogV2Ugc2hvdWxkbid0 IGhhdmUgTlVMTCB2YWx1ZXMgaW4gdGhlIHNwaWxsLCBhdCBsZWFzdCBub3Qgbm93LiAqLwor CQlBc3NlcnQoIWlzbnVsbCk7CisKKwkJaWYgKGNoZWNrX3dhdGVybWFyayAmJiBub2RlLT5i c193YXRlcm1hcmtfc2V0ICYmICFub2RlLT5ic193YXRlcm1hcmtfZW1wdHkpCisJCQljbXAg PSBBcHBseVNvcnRDb21wYXJhdG9yKHZhbHVlLCBmYWxzZSwKKwkJCQkJCQkJCSAgbm9kZS0+ YnNfd2F0ZXJtYXJrLCBmYWxzZSwKKwkJCQkJCQkJCSAgJm5vZGUtPmJzX3NvcnRzdXBwb3J0 KTsKKworCQlpZiAoY21wIDw9IDApCisJCQl0dXBsZXNvcnRfcHV0dHVwbGVzbG90KG5vZGUt PmJzX3R1cGxlc29ydHN0YXRlLCBzbG90KTsKKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICog WFhYIFdlIGNhbiBiZSBhIGJpdCBzbWFydGVyIGZvciBMSU1JVCBxdWVyaWVzIC0gb25jZSB3 ZQorCQkJICoga25vdyB3ZSBoYXZlIG1vcmUgcm93cyBpbiB0aGUgdHVwbGVzb3J0IHRoYW4g d2UgbmVlZCB0bworCQkJICogb3V0cHV0LCB3ZSBjYW4gc3RvcCBzcGlsbGluZyAtIHRob3Nl IHJvd3MgYXJlIG5vdCBnb2luZworCQkJICogdG8gYmUgbmVlZGVkLiBXZSBjYW4gZGlzY2Fy ZCB0aGUgdHVwbGVzb3J0IChubyBuZWVkIHRvCisJCQkgKiByZXNwaWxsKSBhbmQgc3RvcCBz cGlsbGluZy4KKwkJCSAqLworCQkJdHVwbGVzdG9yZV9wdXR0dXBsZXNsb3QodHVwc3RvcmUs IHNsb3QpOworCQl9CisJfQorCisJLyoKKwkgKiBEaXNjYXJkIHRoZSBleGlzdGluZyB0dXBs ZXN0b3JlICh0aGF0IHdlIGp1c3QgcHJvY2Vzc2VkKSwgdXNlIHRoZSBuZXcKKwkgKiBvbmUg aW5zdGVhZC4KKwkgKi8KKwl0dXBsZXN0b3JlX2VuZChub2RlLT5ic190dXBsZXN0b3JlKTsK Kwlub2RlLT5ic190dXBsZXN0b3JlID0gdHVwc3RvcmU7CisKKwlpZiAoIXByb2pJbmZvKQor CQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworfQorCitzdGF0aWMgYm9v bAorYnJpbnNvcnRfbmV4dF9yYW5nZShCcmluU29ydFN0YXRlICpub2RlLCBib29sIGFzYykK K3sKKwkvKiBGSVhNRSBmcmVlIHRoZSBjdXJyZW50IGJzX3JhbmdlLCBpZiBhbnkgKi8KKwlu b2RlLT5ic19yYW5nZSA9IE5VTEw7CisKKwkvKgorCSAqIE1hcmsgdGhlIHBvc2l0aW9uLCBz byB0aGF0IHdlIGNhbiByZXN0b3JlIGl0IGluIGNhc2Ugd2UgcmVhY2ggdGhlCisJICogY3Vy cmVudCB3YXRlcm1hcmsuCisJICovCisJdHVwbGVzb3J0X21hcmtwb3Mobm9kZS0+YnNfc2Nh bi0+cmFuZ2VzKTsKKworCS8qCisJICogR2V0IHRoZSBuZXh0IHJhbmdlIGFuZCByZXR1cm4g aXQsIHVubGVzcyB3ZSBjYW4gcHJvdmUgaXQncyB0aGUgbGFzdAorCSAqIHJhbmdlIHRoYXQg Y2FuIHBvc3NpYmx5IG1hdGNoIHRoZSBjdXJyZW50IGNvbmRpdG9uICh0aGFua3MgdG8gaG93 IHdlCisJICogb3JkZXIgdGhlIHJhbmdlcykuCisJICoKKwkgKiBBbHNvIHNraXAgcmFuZ2Vz IHRoYXQgY2FuJ3QgcG9zc2libHkgbWF0Y2ggKGUuZy4gYmVjYXVzZSB3ZSBhcmUgaW4KKwkg KiBOVUxMIHByb2Nlc3NpbmcsIGFuZCB0aGUgcmFuZ2UgaGFzIG5vIE5VTExzKS4KKwkgKi8K Kwl3aGlsZSAodHVwbGVzb3J0X2dldHR1cGxlc2xvdChub2RlLT5ic19zY2FuLT5yYW5nZXMs IHRydWUsIGZhbHNlLCBub2RlLT5ic19zY2FuLT5zbG90LCBOVUxMKSkKKwl7CisJCWJvb2wJ CWlzbnVsbDsKKwkJRGF0dW0JCXZhbHVlOworCisJCUJyaW5SYW5nZSAgKnJhbmdlID0gKEJy aW5SYW5nZSAqKSBwYWxsb2Moc2l6ZW9mKEJyaW5SYW5nZSkpOworCisJCXJhbmdlLT5ibGtu b19zdGFydCA9IERhdHVtR2V0VUludDMyKHNsb3RfZ2V0YXR0cihub2RlLT5ic19zY2FuLT5z bG90LCAxLCAmaXNudWxsKSk7CisJCXJhbmdlLT5ibGtub19lbmQgPSBEYXR1bUdldFVJbnQz MihzbG90X2dldGF0dHIobm9kZS0+YnNfc2Nhbi0+c2xvdCwgMiwgJmlzbnVsbCkpOworCQly YW5nZS0+aGFzX251bGxzID0gRGF0dW1HZXRCb29sKHNsb3RfZ2V0YXR0cihub2RlLT5ic19z Y2FuLT5zbG90LCAzLCAmaXNudWxsKSk7CisJCXJhbmdlLT5hbGxfbnVsbHMgPSBEYXR1bUdl dEJvb2woc2xvdF9nZXRhdHRyKG5vZGUtPmJzX3NjYW4tPnNsb3QsIDQsICZpc251bGwpKTsK KwkJcmFuZ2UtPm5vdF9zdW1tYXJpemVkID0gRGF0dW1HZXRCb29sKHNsb3RfZ2V0YXR0cihu b2RlLT5ic19zY2FuLT5zbG90LCA1LCAmaXNudWxsKSk7CisJCXJhbmdlLT5taW5fdmFsdWUg PSBzbG90X2dldGF0dHIobm9kZS0+YnNfc2Nhbi0+c2xvdCwgNiwgJmlzbnVsbCk7CisJCXJh bmdlLT5tYXhfdmFsdWUgPSBzbG90X2dldGF0dHIobm9kZS0+YnNfc2Nhbi0+c2xvdCwgNywg JmlzbnVsbCk7CisKKwkJLyoKKwkJICogTm90LXN1bW1hcml6ZWQgcmFuZ2VzIG1hdGNoIGly cmVzcGVjdGVkbHkgb2YgdGhlIHdhdGVybWFyayAoaWYKKwkJICogaXQncyBzZXQgYXQgYWxs KS4KKwkJICovCisJCWlmIChyYW5nZS0+bm90X3N1bW1hcml6ZWQpCisJCXsKKwkJCW5vZGUt PmJzX3JhbmdlID0gcmFuZ2U7CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCisJCS8qCisJCSAq IFRoZSByYW5nZSBpcyBzdW1tYXJpemVkLCBidXQgbWF5YmUgdGhlIHdhdGVybWFyayBpcyBu b3Q/IFRoYXQKKwkJICogd291bGQgbWVhbiB3ZSdyZSBwcm9jZXNzaW5nIE5VTEwgdmFsdWVz LCBzbyB3ZSBza2lwIHJhbmdlcyB0aGF0CisJCSAqIGNhbid0IHBvc3NpYmx5IG1hdGNoIChp LmUuIHdpdGggYWxsX251bGxzPWhhc19udWxscz1mYWxzZSkuCisJCSAqLworCQlpZiAoIW5v ZGUtPmJzX3dhdGVybWFya19zZXQpCisJCXsKKwkJCWlmIChyYW5nZS0+YWxsX251bGxzIHx8 IHJhbmdlLT5oYXNfbnVsbHMpCisJCQl7CisJCQkJbm9kZS0+YnNfcmFuZ2UgPSByYW5nZTsK KwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKworCQkJLyogdXBkYXRlIHRoZSBwb3NpdGlvbiBh bmQgdHJ5IHRoZSBuZXh0IHJhbmdlICovCisJCQl0dXBsZXNvcnRfbWFya3Bvcyhub2RlLT5i c19zY2FuLT5yYW5nZXMpOworCQkJcGZyZWUocmFuZ2UpOworCisJCQljb250aW51ZTsKKwkJ fQorCisJCS8qCisJCSAqIFdhdGVybWFyayBpcyBzZXQsIGJ1dCBpdCdzIGVtcHR5IC0gZXZl cnl0aGluZyBtYXRjaGVzIChleGNlcHQKKwkJICogZm9yIE5VTEwtb25seSByYW5nZXMsIGJl Y2F1c2Ugd2UncmUgZGVmaW5pdGVseSBub3QgcHJvY2Vzc2luZworCQkgKiBOVUxMUywgYmVj YXVzZSB0aGVuIHdlIHdvdWxkbid0IGhhdmUgd2F0ZXJtYXJrIHNldCkuCisJCSAqLworCQlp ZiAobm9kZS0+YnNfd2F0ZXJtYXJrX2VtcHR5KQorCQl7CisJCQlub2RlLT5ic19yYW5nZSA9 IHJhbmdlOworCQkJcmV0dXJuIHRydWU7CisJCX0KKworCQkvKgorCQkgKiBTbyBub3cgd2Ug aGF2ZSBhIHN1bW1hcml6ZWQgcmFuZ2UsIGFuZCB3ZSBrbm93IHRoZSB3YXRlcm1hcmsKKwkJ ICogaXMgc2V0IHRvbyAoc28gd2UncmUgbm90IHByb2Nlc3NpbmcgTlVMTHMpLiBXZSBwbGFj ZSB0aGUgcmFuZ2VzCisJCSAqIHdpdGggb25seSBudWxscyBsYXN0LCBzbyBvbmNlIHdlIGhp dCBvbmUgd2UncmUgZG9uZS4KKwkJICovCisJCWlmIChyYW5nZS0+YWxsX251bGxzKQorCQl7 CisJCQlwZnJlZShyYW5nZSk7CisJCQlyZXR1cm4gZmFsc2U7CS8qIG5vIG1vcmUgbWF0Y2hp bmcgcmFuZ2VzICovCisJCX0KKworCQkvKgorCQkgKiBDb21wYXJlIHRoZSByYW5nZSB0byB0 aGUgd2F0ZXJtYXJrLCB1c2luZyBlaXRoZXIgdGhlIG1pbnZhbCBvcgorCQkgKiBtYXh2YWws IGRlcGVuZGluZyBvbiBBU0MvREVTQyBvcmRlcmluZy4gSWYgdGhlIHJhbmdlIHByZWNlZGVz IHRoZQorCQkgKiB3YXRlcm1hcmssIHJldHVybiBpdC4gT3RoZXJ3aXNlIGFib3J0LCBhbGwg dGhlIGZ1dHVyZSByYW5nZXMgYXJlCisJCSAqIGVpdGhlciBub3QgbWF0Y2hpbmcgdGhlIHdh dGVybWFyayAodGhhbmtzIHRvIG9yZGVyaW5nKSBvciBjb250YWluCisJCSAqIG9ubHkgTlVM TCB2YWx1ZXMuCisJCSAqLworCisJCS8qIHVzZSBtaW52YWwgb3IgbWF4dmFsLCBkZXBlbmRp bmcgb24gQVNDIC8gREVTQyAqLworCQl2YWx1ZSA9IChhc2MpID8gcmFuZ2UtPm1pbl92YWx1 ZSA6IHJhbmdlLT5tYXhfdmFsdWU7CisKKwkJLyoKKwkJICogY29tcGFyZSBpdCB0byB0aGUg Y3VycmVudCB3YXRlcm1hcmsgKGlmIHNldCkKKwkJICoKKwkJICogWFhYIFdlIGRvbid0IHVz ZSAoLi4uIDw9IDApIGhlcmUsIGJlY2F1c2UgdGhlbiB3ZSdkIGxvYWQgcmFuZ2VzCisJCSAq IHdpdGggdGhhdCBtaW52YWwgKGFuZCB0aGVyZSBtaWdodCBiZSBtdWx0aXBsZSksIGJ1dCBt b3N0IG9mIHRoZQorCQkgKiByb3dzIHdvdWxkIGdvIGludG8gdGhlIHR1cGxlc3RvcmUsIGJl Y2F1c2Ugb25seSByb3dzIG1hdGNoaW5nIHRoZQorCQkgKiBtaW52YWwgZXhhY3RseSB3b3Vs ZCBiZSBsb2FkZWQgaW50byB0dXBsZXNvcnQuCisJCSAqLworCQlpZiAoQXBwbHlTb3J0Q29t cGFyYXRvcih2YWx1ZSwgZmFsc2UsCisJCQkJCQkJCSBub2RlLT5ic193YXRlcm1hcmssIGZh bHNlLAorCQkJCQkJCQkgJm5vZGUtPmJzX3NvcnRzdXBwb3J0KSA8IDApCisJCXsKKwkJCW5v ZGUtPmJzX3JhbmdlID0gcmFuZ2U7CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCisJCXBmcmVl KHJhbmdlKTsKKwkJYnJlYWs7CisJfQorCisJLyogbm90IGEgbWF0Y2hpbmcgcmFuZ2UsIHdl J3JlIGRvbmUgKi8KKwl0dXBsZXNvcnRfcmVzdG9yZXBvcyhub2RlLT5ic19zY2FuLT5yYW5n ZXMpOworCisJcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbAorYnJpbnNvcnRfcmFu Z2Vfd2l0aF9udWxscyhCcmluU29ydFN0YXRlICpub2RlKQoreworCUJyaW5SYW5nZSAqcmFu Z2UgPSBub2RlLT5ic19yYW5nZTsKKworCWlmIChyYW5nZS0+YWxsX251bGxzIHx8IHJhbmdl LT5oYXNfbnVsbHMgfHwgcmFuZ2UtPm5vdF9zdW1tYXJpemVkKQorCQlyZXR1cm4gdHJ1ZTsK KworCXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQKK2JyaW5zb3J0X3Jlc2NhbihC cmluU29ydFN0YXRlICpub2RlKQoreworCXR1cGxlc29ydF9yZXNjYW4obm9kZS0+YnNfc2Nh bi0+cmFuZ2VzKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUluZGV4TmV4dAorICoKKyAq CQlSZXRyaWV2ZSBhIHR1cGxlIGZyb20gdGhlIEJyaW5Tb3J0IG5vZGUncyBjdXJyZW50UmVs YXRpb24KKyAqCQl1c2luZyB0aGUgaW5kZXggc3BlY2lmaWVkIGluIHRoZSBCcmluU29ydFN0 YXRlIGluZm9ybWF0aW9uLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgVHVwbGVUYWJs ZVNsb3QgKgorSW5kZXhOZXh0KEJyaW5Tb3J0U3RhdGUgKm5vZGUpCit7CisJQnJpblNvcnQg ICAqcGxhbiA9IChCcmluU29ydCAqKSBub2RlLT5zcy5wcy5wbGFuOworCUVTdGF0ZQkgICAq ZXN0YXRlOworCVNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uOworCUluZGV4U2NhbkRlc2Mgc2Nh bmRlc2M7CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJYm9vbAkJbnVsbHNGaXJzdDsKKwli b29sCQlhc2M7CisKKwkvKgorCSAqIGV4dHJhY3QgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZy b20gaW5kZXggc2NhbiBub2RlCisJICovCisJZXN0YXRlID0gbm9kZS0+c3MucHMuc3RhdGU7 CisJZGlyZWN0aW9uID0gZXN0YXRlLT5lc19kaXJlY3Rpb247CisKKwkvKiBmbGlwIGRpcmVj dGlvbiBpZiB0aGlzIGlzIGFuIG92ZXJhbGwgYmFja3dhcmQgc2NhbiAqLworCS8qIFhYWCBG b3IgQlJJTiBpbmRleGVzIHRoaXMgaXMgYWx3YXlzIGZvcndhcmQgZGlyZWN0aW9uICovCisJ Ly8gaWYgKFNjYW5EaXJlY3Rpb25Jc0JhY2t3YXJkKCgoQnJpblNvcnQgKikgbm9kZS0+c3Mu cHMucGxhbiktPmluZGV4b3JkZXJkaXIpKQorCWlmIChmYWxzZSkKKwl7CisJCWlmIChTY2Fu RGlyZWN0aW9uSXNGb3J3YXJkKGRpcmVjdGlvbikpCisJCQlkaXJlY3Rpb24gPSBCYWNrd2Fy ZFNjYW5EaXJlY3Rpb247CisJCWVsc2UgaWYgKFNjYW5EaXJlY3Rpb25Jc0JhY2t3YXJkKGRp cmVjdGlvbikpCisJCQlkaXJlY3Rpb24gPSBGb3J3YXJkU2NhbkRpcmVjdGlvbjsKKwl9CisJ c2NhbmRlc2MgPSBub2RlLT5pc3NfU2NhbkRlc2M7CisJc2xvdCA9IG5vZGUtPnNzLnNzX1Nj YW5UdXBsZVNsb3Q7CisKKwludWxsc0ZpcnN0ID0gcGxhbi0+bnVsbHNGaXJzdFswXTsKKwlh c2MgPSBTY2FuRGlyZWN0aW9uSXNGb3J3YXJkKHBsYW4tPmluZGV4b3JkZXJkaXIpOworCisJ aWYgKHNjYW5kZXNjID09IE5VTEwpCisJeworCQkvKgorCQkgKiBXZSByZWFjaCBoZXJlIGlm IHRoZSBpbmRleCBzY2FuIGlzIG5vdCBwYXJhbGxlbCwgb3IgaWYgd2UncmUKKwkJICogc2Vy aWFsbHkgZXhlY3V0aW5nIGFuIGluZGV4IHNjYW4gdGhhdCB3YXMgcGxhbm5lZCB0byBiZSBw YXJhbGxlbC4KKwkJICovCisJCXNjYW5kZXNjID0gaW5kZXhfYmVnaW5zY2FuKG5vZGUtPnNz LnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJICAgbm9kZS0+aXNzX1JlbGF0aW9uRGVz YywKKwkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKKwkJCQkJCQkJICAgbm9kZS0+ aXNzX051bVNjYW5LZXlzLAorCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMp OworCisJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOworCisJCS8qCisJCSAqIElm IG5vIHJ1bi10aW1lIGtleXMgdG8gY2FsY3VsYXRlIG9yIHRoZXkgYXJlIHJlYWR5LCBnbyBh aGVhZCBhbmQKKwkJICogcGFzcyB0aGUgc2NhbmtleXMgdG8gdGhlIGluZGV4IEFNLgorCQkg Ki8KKwkJaWYgKG5vZGUtPmlzc19OdW1SdW50aW1lS2V5cyA9PSAwIHx8IG5vZGUtPmlzc19S dW50aW1lS2V5c1JlYWR5KQorCQkJaW5kZXhfcmVzY2FuKHNjYW5kZXNjLAorCQkJCQkJIG5v ZGUtPmlzc19TY2FuS2V5cywgbm9kZS0+aXNzX051bVNjYW5LZXlzLAorCQkJCQkJIG5vZGUt Pmlzc19PcmRlckJ5S2V5cywgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzKTsKKworCQkvKgor CQkgKiBMb2FkIGluZm8gYWJvdXQgQlJJTiByYW5nZXMsIHNvcnQgdGhlbSB0byBtYXRjaCB0 aGUgZGVzaXJlZCBvcmRlcmluZy4KKwkJICovCisJCUV4ZWNJbml0QnJpblNvcnRSYW5nZXMo cGxhbiwgbm9kZSk7CisJCW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfU1RBUlQ7CisJfQor CisJLyoKKwkgKiBvaywgbm93IHRoYXQgd2UgaGF2ZSB3aGF0IHdlIG5lZWQsIGZldGNoIHRo ZSBuZXh0IHR1cGxlLgorCSAqLworCXdoaWxlIChub2RlLT5ic19waGFzZSAhPSBCUklOU09S VF9GSU5JU0hFRCkKKwl7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJZWxvZyhE RUJVRzEsICJwaGFzZSA9ICVkIiwgbm9kZS0+YnNfcGhhc2UpOworCisJCUFzc2VydENoZWNr UmFuZ2VzKG5vZGUpOworCisJCXN3aXRjaCAobm9kZS0+YnNfcGhhc2UpCisJCXsKKwkJCWNh c2UgQlJJTlNPUlRfU1RBUlQ6CisKKwkJCQllbG9nKERFQlVHMSwgInBoYXNlID0gU1RBUlQi KTsKKworCQkJCS8qCisJCQkJICogSWYgd2UgaGF2ZSBOVUxMUyBGSVJTVCwgbW92ZSB0byB0 aGF0IHN0YWdlLiBPdGhlcndpc2UKKwkJCQkgKiBzdGFydCBzY2FubmluZyByZWd1bGFyIHJh bmdlcy4KKwkJCQkgKi8KKwkJCQlpZiAobnVsbHNGaXJzdCkKKwkJCQkJbm9kZS0+YnNfcGhh c2UgPSBCUklOU09SVF9MT0FEX05VTExTOworCQkJCWVsc2UKKwkJCQl7CisJCQkJCW5vZGUt PmJzX3BoYXNlID0gQlJJTlNPUlRfTE9BRF9SQU5HRTsKKworCQkJCQkvKiBzZXQgdGhlIGZp cnN0IHdhdGVybWFyayAqLworCQkJCQlicmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKG5vZGUs IGFzYyk7CisJCQkJfQorCisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQlJJTlNPUlRfTE9BRF9S QU5HRToKKwkJCQl7CisJCQkJCWVsb2coREVCVUcxLCAicGhhc2UgPSBMT0FEX1JBTkdFIik7 CisKKwkJCQkJLyoKKwkJCQkJICogTG9hZCB0dXBsZXMgbWF0Y2hpbmcgdGhlIG5ldyB3YXRl cm1hcmsgZnJvbSB0aGUgZXhpc3RpbmcKKwkJCQkJICogc3BpbGwgdHVwbGVzdG9yZS4gV2Ug ZG8gdGhpcyBiZWZvcmUgbG9hZGluZyB0dXBsZXMgZnJvbQorCQkJCQkgKiB0aGUgbmV4dCBj aHVuayBvZiByYW5nZXMsIGJlY2F1c2UgdGhvc2Ugd2lsbCBhZGQgdHVwbGVzCisJCQkJCSAq IHRvIHRoZSBzcGlsbCwgYW5kIHdlJ2QgZW5kIHVwIHByb2Nlc3NpbmcgdGhvc2UgdHdpY2Uu CisJCQkJCSAqLworCQkJCQlicmluc29ydF9sb2FkX3NwaWxsX3R1cGxlcyhub2RlLCB0cnVl KTsKKworCQkJCQkvKgorCQkJCQkgKiBMb2FkIHR1cGxlcyBmcm9tIHJhbmdlcywgdW50aWwg d2UgZmluZCBhIHJhbmdlIHRoYXQgaGFzCisJCQkJCSAqIG1pbl92YWx1ZSA+PSB3YXRlcm1h cmsuCisJCQkJCSAqCisJCQkJCSAqIFhYWCBJbiBmYWN0LCB3ZSBhcmUgZ3VhcmFudGVlZCB0 byBmaW5kIGFuIGV4YWN0IG1hdGNoCisJCQkJCSAqIGZvciB0aGUgd2F0ZXJtYXJrLCBiZWNh dXNlIG9mIGhvdyB3ZSBwaWNrIHRoZSB3YXRlcm1hcmsuCisJCQkJCSAqLworCQkJCQl3aGls ZSAoYnJpbnNvcnRfbmV4dF9yYW5nZShub2RlLCBhc2MpKQorCQkJCQkJYnJpbnNvcnRfbG9h ZF90dXBsZXMobm9kZSwgdHJ1ZSwgZmFsc2UpOworCisJCQkJCS8qCisJCQkJCSAqIElmIHdl IGhhdmUgbG9hZGVkIGFueSB0dXBsZXMgaW50byB0aGUgdHVwbGVzb3J0LCB0cnkKKwkJCQkJ ICogc29ydGluZyBpdCBhbmQgbW92ZSB0byBwcm9kdWNpbmcgdGhlIHR1cGxlcy4KKwkJCQkJ ICoKKwkJCQkJICogWFhYIFRoZSByYW5nZSBtaWdodCBoYXZlIG5vIHJvd3MgbWF0Y2hpbmcg dGhlIGN1cnJlbnQKKwkJCQkJICogd2F0ZXJtYXJrLCBpbiB3aGljaCBjYXNlIHRoZSB0dXBs ZXNvcnQgaXMgZW1wdHkuCisJCQkJCSAqLworCQkJCQlpZiAobm9kZS0+YnNfdHVwbGVzb3J0 c3RhdGUpCisJCQkJCXsKKyNpZmRlZiBERUJVR19CUklOX1NPUlQKKwkJCQkJCXR1cGxlc29y dF9yZXNldF9zdGF0cyhub2RlLT5ic190dXBsZXNvcnRzdGF0ZSk7CisjZW5kaWYKKworCQkJ CQkJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KG5vZGUtPmJzX3R1cGxlc29ydHN0YXRlKTsKKwor I2lmZGVmIERFQlVHX0JSSU5fU09SVAorCQkJCQkJaWYgKGRlYnVnX2JyaW5fc29ydCkKKwkJ CQkJCXsKKwkJCQkJCQlUdXBsZXNvcnRJbnN0cnVtZW50YXRpb24gc3RhdHM7CisKKwkJCQkJ CQltZW1zZXQoJnN0YXRzLCAwLCBzaXplb2YoVHVwbGVzb3J0SW5zdHJ1bWVudGF0aW9uKSk7 CisJCQkJCQkJdHVwbGVzb3J0X2dldF9zdGF0cyhub2RlLT5ic190dXBsZXNvcnRzdGF0ZSwg JnN0YXRzKTsKKworCQkJCQkJCXR1cGxlc29ydF9nZXRfc3RhdHMobm9kZS0+YnNfdHVwbGVz b3J0c3RhdGUsICZzdGF0cyk7CisKKwkJCQkJCQllbG9nKFdBUk5JTkcsICJtZXRob2Q6ICVz ICBzcGFjZTogJWxkIGtCICglcykiLAorCQkJCQkJCQkgdHVwbGVzb3J0X21ldGhvZF9uYW1l KHN0YXRzLnNvcnRNZXRob2QpLAorCQkJCQkJCQkgc3RhdHMuc3BhY2VVc2VkLAorCQkJCQkJ CQkgdHVwbGVzb3J0X3NwYWNlX3R5cGVfbmFtZShzdGF0cy5zcGFjZVR5cGUpKTsKKwkJCQkJ CX0KKyNlbmRpZgorCQkJCQl9CisKKwkJCQkJbm9kZS0+YnNfcGhhc2UgPSBCUklOU09SVF9Q Uk9DRVNTX1JBTkdFOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCWNhc2UgQlJJTlNPUlRf UFJPQ0VTU19SQU5HRToKKworCQkJCWVsb2coREVCVUcxLCAicGhhc2UgQlJJTlNPUlRfUFJP Q0VTU19SQU5HRSIpOworCisJCQkJc2xvdCA9IG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxl U2xvdDsKKworCQkJCS8qIHJlYWQgdHVwbGVzIGZyb20gdGhlIHR1cGxlc29ydCByYW5nZSwg YW5kIG91dHB1dCB0aGVtICovCisJCQkJaWYgKG5vZGUtPmJzX3R1cGxlc29ydHN0YXRlICE9 IE5VTEwpCisJCQkJeworCQkJCQlpZiAodHVwbGVzb3J0X2dldHR1cGxlc2xvdChub2RlLT5i c190dXBsZXNvcnRzdGF0ZSwKKwkJCQkJCQkJCQlTY2FuRGlyZWN0aW9uSXNGb3J3YXJkKGRp cmVjdGlvbiksCisJCQkJCQkJCQkJZmFsc2UsIHNsb3QsIE5VTEwpKQorCQkJCQkJcmV0dXJu IHNsb3Q7CisKKwkJCQkJLyogb25jZSB3ZSdyZSBkb25lIHdpdGggdGhlIHR1cGxlc29ydCwg cmVzZXQgaXQgKi8KKwkJCQkJdHVwbGVzb3J0X3Jlc2V0KG5vZGUtPmJzX3R1cGxlc29ydHN0 YXRlKTsKKwkJCQl9CisKKwkJCQkvKgorCQkJCSAqIE5vdyB0aGF0IHdlIHByb2Nlc3NlZCB0 dXBsZXMgZnJvbSB0aGUgbGFzdCByYW5nZSBiYXRjaCwKKwkJCQkgKiBzZWUgaWYgd2UgcmVh Y2hlZCB0aGUgZW5kIG9mIGlmIHdlIHNob3VsZCB0cnkgdXBkYXRpbmcKKwkJCQkgKiB0aGUg d2F0ZXJtYXJrIG9uY2UgYWdhaW4uIElmIHRoZSB3YXRlcm1hcmsgaXMgbm90IHNldCwKKwkJ CQkgKiB3ZSd2ZSBhbHJlYWR5IHByb2Nlc3NlZCB0aGUgbGFzdCByYW5nZS4KKwkJCQkgKi8K KwkJCQlpZiAobm9kZS0+YnNfd2F0ZXJtYXJrX2VtcHR5KQorCQkJCXsKKwkJCQkJaWYgKG51 bGxzRmlyc3QpCisJCQkJCQlub2RlLT5ic19waGFzZSA9IEJSSU5TT1JUX0ZJTklTSEVEOwor CQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCWJyaW5zb3J0X3Jlc2Nhbihub2RlKTsKKwkJCQkJ CW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfTE9BRF9OVUxMUzsKKwkJCQkJCW5vZGUtPmJz X3dhdGVybWFya19zZXQgPSBmYWxzZTsKKwkJCQkJCW5vZGUtPmJzX3dhdGVybWFya19lbXB0 eSA9IGZhbHNlOworCQkJCQl9CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCS8qIHVw ZHRlIHRoZSB3YXRlcm1hcmsgYW5kIHRyeSByZWFkaW5nIG1vcmUgcmFuZ2VzICovCisJCQkJ CW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfTE9BRF9SQU5HRTsKKwkJCQkJYnJpbnNvcnRf dXBkYXRlX3dhdGVybWFyayhub2RlLCBhc2MpOworCQkJCX0KKworCQkJCWJyZWFrOworCisJ CQljYXNlIEJSSU5TT1JUX0xPQURfTlVMTFM6CisJCQkJeworCQkJCQllbG9nKERFQlVHMSwg InBoYXNlID0gTE9BRF9OVUxMUyIpOworCisJCQkJCS8qCisJCQkJCSAqIFRyeSBsb2FkaW5n IGFub3RoZXIgcmFuZ2UuIElmIHRoZXJlIGFyZSBubyBtb3JlIHJhbmdlcywKKwkJCQkJICog d2UncmUgZG9uZSBhbmQgd2UgbW92ZSBlaXRoZXIgdG8gbG9hZGluZyByZWd1bGFyIHJhbmdl cy4KKwkJCQkJICogT3RoZXJ3aXNlIGNoZWNrIGlmIHRoaXMgcmFuZ2UgY2FuIGNvbnRhaW4g TlVMTCB2YWx1ZXMuCisJCQkJCSAqIElmIHllcywgcHJvY2VzcyB0aGUgcmFuZ2UuIElmIG5v dCwgdHJ5IGxvYWRpbmcgYW5vdGhlcgorCQkJCQkgKiBvbmUgZnJvbSB0aGUgbGlzdC4KKwkJ CQkJICovCisJCQkJCXdoaWxlICh0cnVlKQorCQkJCQl7CisJCQkJCQkvKiBubyBtb3JlIHJh bmdlcyAtIHRlcm1pbmF0ZSBvciBsb2FkIHJlZ3VsYXIgcmFuZ2VzICovCisJCQkJCQlpZiAo IWJyaW5zb3J0X25leHRfcmFuZ2Uobm9kZSwgYXNjKSkKKwkJCQkJCXsKKwkJCQkJCQlpZiAo bnVsbHNGaXJzdCkKKwkJCQkJCQl7CisJCQkJCQkJCWJyaW5zb3J0X3Jlc2Nhbihub2RlKTsK KwkJCQkJCQkJbm9kZS0+YnNfcGhhc2UgPSBCUklOU09SVF9MT0FEX1JBTkdFOworCQkJCQkJ CQlicmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKG5vZGUsIGFzYyk7CisJCQkJCQkJfQorCQkJ CQkJCWVsc2UKKwkJCQkJCQkJbm9kZS0+YnNfcGhhc2UgPSBCUklOU09SVF9GSU5JU0hFRDsK KworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCisJCQkJCQkvKiBJZiB0aGlzIHJhbmdlICht YXkpIGhhdmUgbnVsbHMsIHByb2NlcyB0aGVtICovCisJCQkJCQlpZiAoYnJpbnNvcnRfcmFu Z2Vfd2l0aF9udWxscyhub2RlKSkKKwkJCQkJCQlicmVhazsKKwkJCQkJfQorCisJCQkJCWlm IChub2RlLT5ic19yYW5nZSA9PSBOVUxMKQorCQkJCQkJYnJlYWs7CisKKwkJCQkJLyoKKwkJ CQkJICogVGhlcmUgc2hvdWxkIGJlIG5vdGhpbmcgbGVmdCBpbiB0aGUgdHVwbGVzdG9yZSwg YmVjYXVzZQorCQkJCQkgKiB3ZSBmbHVzaCB0aGF0IGF0IHRoZSBlbmQgb2YgcHJvY2Vzc2lu ZyByZWd1bGFyIHR1cGxlcywKKwkJCQkJICogYW5kIHdlIGRvbid0IHJldGFpbiB0dXBsZXMg YmV0d2VlbiBOVUxMIHJhbmdlcy4KKwkJCQkJICovCisJCQkJCS8vIEFzc2VydChub2RlLT5i c190dXBsZXN0b3JlID09IE5VTEwpOworCisJCQkJCS8qCisJCQkJCSAqIExvYWQgdGhlIG5l eHQgdW5wcm9jZXNzZWQgLyBOVUxMIHJhbmdlLiBXZSBkb24ndCBuZWVkIHRvCisJCQkJCSAq IGNoZWNrIHdhdGVybWFyayB3aGlsZSBwcm9jZXNzaW5nIE5VTExTLgorCQkJCQkgKi8KKwkJ CQkJYnJpbnNvcnRfbG9hZF90dXBsZXMobm9kZSwgZmFsc2UsIHRydWUpOworCisJCQkJCW5v ZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfUFJPQ0VTU19OVUxMUzsKKwkJCQkJYnJlYWs7CisJ CQkJfQorCisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQlJJTlNPUlRfUFJPQ0VTU19OVUxMUzoK KworCQkJCWVsb2coREVCVUcxLCAicGhhc2UgPSBMT0FEX05VTExTIik7CisKKwkJCQlzbG90 ID0gbm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90OworCisJCQkJQXNzZXJ0KG5vZGUt PmJzX3R1cGxlc3RvcmUgIT0gTlVMTCk7CisKKwkJCQkvKiByZWFkIHR1cGxlcyBmcm9tIHRo ZSB0dXBsZXNvcnQgcmFuZ2UsIGFuZCBvdXRwdXQgdGhlbSAqLworCQkJCWlmIChub2RlLT5i c190dXBsZXN0b3JlICE9IE5VTEwpCisJCQkJeworCisJCQkJCXdoaWxlICh0dXBsZXN0b3Jl X2dldHR1cGxlc2xvdChub2RlLT5ic190dXBsZXN0b3JlLCB0cnVlLCB0cnVlLCBzbG90KSkK KwkJCQkJCXJldHVybiBzbG90OworCisJCQkJCXR1cGxlc3RvcmVfZW5kKG5vZGUtPmJzX3R1 cGxlc3RvcmUpOworCQkJCQlub2RlLT5ic190dXBsZXN0b3JlID0gTlVMTDsKKworCQkJCQlu b2RlLT5ic19waGFzZSA9IEJSSU5TT1JUX0xPQURfTlVMTFM7CS8qIGxvYWQgbmV4dCByYW5n ZSAqLworCQkJCX0KKworCQkJCWJyZWFrOworCisJCQljYXNlIEJSSU5TT1JUX0ZJTklTSEVE OgorCQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIEJyaW5Tb3J0IHBoYXNlOiBGSU5JU0hF RCIpOworCQkJCWJyZWFrOworCQl9CisJfQorCisJLyoKKwkgKiBpZiB3ZSBnZXQgaGVyZSBp dCBtZWFucyB0aGUgaW5kZXggc2NhbiBmYWlsZWQgc28gd2UgYXJlIGF0IHRoZSBlbmQgb2YK KwkgKiB0aGUgc2Nhbi4uCisJICovCisJbm9kZS0+aXNzX1JlYWNoZWRFbmQgPSB0cnVlOwor CXJldHVybiBFeGVjQ2xlYXJUdXBsZShzbG90KTsKK30KKworLyoKKyAqIEluZGV4UmVjaGVj ayAtLSBhY2Nlc3MgbWV0aG9kIHJvdXRpbmUgdG8gcmVjaGVjayBhIHR1cGxlIGluIEV2YWxQ bGFuUXVhbAorICovCitzdGF0aWMgYm9vbAorSW5kZXhSZWNoZWNrKEJyaW5Tb3J0U3RhdGUg Km5vZGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQoreworCUV4cHJDb250ZXh0ICplY29udGV4 dDsKKworCS8qCisJICogZXh0cmFjdCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZnJvbSBpbmRl eCBzY2FuIG5vZGUKKwkgKi8KKwllY29udGV4dCA9IG5vZGUtPnNzLnBzLnBzX0V4cHJDb250 ZXh0OworCisJLyogRG9lcyB0aGUgdHVwbGUgbWVldCB0aGUgaW5kZXhxdWFsIGNvbmRpdGlv bj8gKi8KKwllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90OworCXJldHVybiBFeGVj UXVhbEFuZFJlc2V0KG5vZGUtPmluZGV4cXVhbG9yaWcsIGVjb250ZXh0KTsKK30KKworCisv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgkJRXhlY0JyaW5Tb3J0KG5vZGUpCisgKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjQnJpblNvcnQoUGxhblN0YXRlICpw c3RhdGUpCit7CisJQnJpblNvcnRTdGF0ZSAqbm9kZSA9IGNhc3ROb2RlKEJyaW5Tb3J0U3Rh dGUsIHBzdGF0ZSk7CisKKwkvKgorCSAqIElmIHdlIGhhdmUgcnVudGltZSBrZXlzIGFuZCB0 aGV5J3ZlIG5vdCBhbHJlYWR5IGJlZW4gc2V0IHVwLCBkbyBpdCBub3cuCisJICovCisJaWYg KG5vZGUtPmlzc19OdW1SdW50aW1lS2V5cyAhPSAwICYmICFub2RlLT5pc3NfUnVudGltZUtl eXNSZWFkeSkKKwkJRXhlY1JlU2NhbigoUGxhblN0YXRlICopIG5vZGUpOworCisJcmV0dXJu IEV4ZWNTY2FuKCZub2RlLT5zcywKKwkJCQkJKEV4ZWNTY2FuQWNjZXNzTXRkKSBJbmRleE5l eHQsCisJCQkJCShFeGVjU2NhblJlY2hlY2tNdGQpIEluZGV4UmVjaGVjayk7Cit9CisKKy8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCQlFeGVjUmVTY2FuQnJpblNvcnQobm9kZSkKKyAqCisgKgkJUmVj YWxjdWxhdGVzIHRoZSB2YWx1ZXMgb2YgYW55IHNjYW4ga2V5cyB3aG9zZSB2YWx1ZSBkZXBl bmRzIG9uCisgKgkJaW5mb3JtYXRpb24ga25vd24gYXQgcnVudGltZSwgdGhlbiByZXNjYW5z IHRoZSBpbmRleGVkIHJlbGF0aW9uLgorICoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAor RXhlY1JlU2NhbkJyaW5Tb3J0KEJyaW5Tb3J0U3RhdGUgKm5vZGUpCit7CisJLyoKKwkgKiBJ ZiB3ZSBhcmUgZG9pbmcgcnVudGltZSBrZXkgY2FsY3VsYXRpb25zIChpZSwgYW55IG9mIHRo ZSBpbmRleCBrZXkKKwkgKiB2YWx1ZXMgd2VyZW4ndCBzaW1wbGUgQ29uc3RzKSwgY29tcHV0 ZSB0aGUgbmV3IGtleSB2YWx1ZXMuICBCdXQgZmlyc3QsCisJICogcmVzZXQgdGhlIGNvbnRl eHQgc28gd2UgZG9uJ3QgbGVhayBtZW1vcnkgYXMgZWFjaCBvdXRlciB0dXBsZSBpcworCSAq IHNjYW5uZWQuICBOb3RlIHRoaXMgYXNzdW1lcyB0aGF0IHdlIHdpbGwgcmVjYWxjdWxhdGUg KmFsbCogcnVudGltZSBrZXlzCisJICogb24gZWFjaCBjYWxsLgorCSAqLworCWlmIChub2Rl LT5pc3NfTnVtUnVudGltZUtleXMgIT0gMCkKKwl7CisJCUV4cHJDb250ZXh0ICplY29udGV4 dCA9IG5vZGUtPmlzc19SdW50aW1lQ29udGV4dDsKKworCQlSZXNldEV4cHJDb250ZXh0KGVj b250ZXh0KTsKKwkJRXhlY0luZGV4RXZhbFJ1bnRpbWVLZXlzKGVjb250ZXh0LAorCQkJCQkJ CQkgbm9kZS0+aXNzX1J1bnRpbWVLZXlzLAorCQkJCQkJCQkgbm9kZS0+aXNzX051bVJ1bnRp bWVLZXlzKTsKKwl9CisJbm9kZS0+aXNzX1J1bnRpbWVLZXlzUmVhZHkgPSB0cnVlOworCisJ LyogcmVzZXQgaW5kZXggc2NhbiAqLworCWlmIChub2RlLT5pc3NfU2NhbkRlc2MpCisJCWlu ZGV4X3Jlc2Nhbihub2RlLT5pc3NfU2NhbkRlc2MsCisJCQkJCSBub2RlLT5pc3NfU2Nhbktl eXMsIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKKwkJCQkJIG5vZGUtPmlzc19PcmRlckJ5S2V5 cywgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzKTsKKwlub2RlLT5pc3NfUmVhY2hlZEVuZCA9 IGZhbHNlOworCisJRXhlY1NjYW5SZVNjYW4oJm5vZGUtPnNzKTsKK30KKworCisvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKgkJRXhlY0VuZEJyaW5Tb3J0CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQK K0V4ZWNFbmRCcmluU29ydChCcmluU29ydFN0YXRlICpub2RlKQoreworCVJlbGF0aW9uCWlu ZGV4UmVsYXRpb25EZXNjOworCUluZGV4U2NhbkRlc2MgSW5kZXhTY2FuRGVzYzsKKworCS8q CisJICogZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCisJICovCisJaW5kZXhS ZWxhdGlvbkRlc2MgPSBub2RlLT5pc3NfUmVsYXRpb25EZXNjOworCUluZGV4U2NhbkRlc2Mg PSBub2RlLT5pc3NfU2NhbkRlc2M7CisKKwkvKgorCSAqIGNsZWFyIG91dCB0dXBsZSB0YWJs ZSBzbG90cworCSAqLworCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCisJ CUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CisJRXhl Y0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisKKwkvKgorCSAqIGNs b3NlIHRoZSBpbmRleCByZWxhdGlvbiAobm8tb3AgaWYgd2UgZGlkbid0IG9wZW4gaXQpCisJ ICovCisJaWYgKEluZGV4U2NhbkRlc2MpCisJCWluZGV4X2VuZHNjYW4oSW5kZXhTY2FuRGVz Yyk7CisJaWYgKGluZGV4UmVsYXRpb25EZXNjKQorCQlpbmRleF9jbG9zZShpbmRleFJlbGF0 aW9uRGVzYywgTm9Mb2NrKTsKKworCWlmIChub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2Mg IT0gTlVMTCkKKwkJdGFibGVfZW5kc2Nhbihub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2Mp OworCisJaWYgKG5vZGUtPmJzX3R1cGxlc3RvcmUgIT0gTlVMTCkKKwkJdHVwbGVzdG9yZV9l bmQobm9kZS0+YnNfdHVwbGVzdG9yZSk7CisJbm9kZS0+YnNfdHVwbGVzdG9yZSA9IE5VTEw7 CisKKwlpZiAobm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUgIT0gTlVMTCkKKwkJdHVwbGVzb3J0 X2VuZChub2RlLT5ic190dXBsZXNvcnRzdGF0ZSk7CisJbm9kZS0+YnNfdHVwbGVzb3J0c3Rh dGUgPSBOVUxMOworCisJaWYgKG5vZGUtPmJzX3NjYW4tPnJhbmdlcyAhPSBOVUxMKQorCQl0 dXBsZXNvcnRfZW5kKG5vZGUtPmJzX3NjYW4tPnJhbmdlcyk7CisJbm9kZS0+YnNfc2Nhbi0+ cmFuZ2VzID0gTlVMTDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNCcmluU29ydE1h cmtQb3MKKyAqCisgKiBOb3RlOiB3ZSBhc3N1bWUgdGhhdCBubyBjYWxsZXIgYXR0ZW1wdHMg dG8gc2V0IGEgbWFyayBiZWZvcmUgaGF2aW5nIHJlYWQKKyAqIGF0IGxlYXN0IG9uZSB0dXBs ZS4gIE90aGVyd2lzZSwgaXNzX1NjYW5EZXNjIG1pZ2h0IHN0aWxsIGJlIE5VTEwuCisgKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KK3ZvaWQKK0V4ZWNCcmluU29ydE1hcmtQb3MoQnJpblNvcnRTdGF0 ZSAqbm9kZSkKK3sKKwlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOwor CUVQUVN0YXRlICAgKmVwcXN0YXRlID0gZXN0YXRlLT5lc19lcHFfYWN0aXZlOworCisJaWYg KGVwcXN0YXRlICE9IE5VTEwpCisJeworCQkvKgorCQkgKiBXZSBhcmUgaW5zaWRlIGFuIEV2 YWxQbGFuUXVhbCByZWNoZWNrLiAgSWYgYSB0ZXN0IHR1cGxlIGV4aXN0cyBmb3IKKwkJICog dGhpcyByZWxhdGlvbiwgdGhlbiB3ZSBzaG91bGRuJ3QgYWNjZXNzIHRoZSBpbmRleCBhdCBh bGwuICBXZSB3b3VsZAorCQkgKiBpbnN0ZWFkIG5lZWQgdG8gc2F2ZSwgYW5kIGxhdGVyIHJl c3RvcmUsIHRoZSBzdGF0ZSBvZiB0aGUKKwkJICogcmVsc3Vic19kb25lIGZsYWcsIHNvIHRo YXQgcmUtZmV0Y2hpbmcgdGhlIHRlc3QgdHVwbGUgaXMgcG9zc2libGUuCisJCSAqIEhvd2V2 ZXIsIGdpdmVuIHRoZSBhc3N1bXB0aW9uIHRoYXQgbm8gY2FsbGVyIHNldHMgYSBtYXJrIGF0 IHRoZQorCQkgKiBzdGFydCBvZiB0aGUgc2Nhbiwgd2UgY2FuIG9ubHkgZ2V0IGhlcmUgd2l0 aCByZWxzdWJzX2RvbmVbaV0KKwkJICogYWxyZWFkeSBzZXQsIGFuZCBzbyBubyBzdGF0ZSBu ZWVkIGJlIHNhdmVkLgorCQkgKi8KKwkJSW5kZXgJCXNjYW5yZWxpZCA9ICgoU2NhbiAqKSBu b2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkOworCisJCUFzc2VydChzY2FucmVsaWQgPiAw KTsKKwkJaWYgKGVwcXN0YXRlLT5yZWxzdWJzX3Nsb3Rbc2NhbnJlbGlkIC0gMV0gIT0gTlVM TCB8fAorCQkJZXBxc3RhdGUtPnJlbHN1YnNfcm93bWFya1tzY2FucmVsaWQgLSAxXSAhPSBO VUxMKQorCQl7CisJCQkvKiBWZXJpZnkgdGhlIGNsYWltIGFib3ZlICovCisJCQlpZiAoIWVw cXN0YXRlLT5yZWxzdWJzX2RvbmVbc2NhbnJlbGlkIC0gMV0pCisJCQkJZWxvZyhFUlJPUiwg InVuZXhwZWN0ZWQgRXhlY0JyaW5Tb3J0TWFya1BvcyBjYWxsIGluIEVQUSByZWNoZWNrIik7 CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlpbmRleF9tYXJrcG9zKG5vZGUtPmlzc19TY2Fu RGVzYyk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjSW5kZXhSZXN0clBvcworICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjQnJpblNvcnRSZXN0clBvcyhCcmluU29ydFN0 YXRlICpub2RlKQoreworCUVTdGF0ZQkgICAqZXN0YXRlID0gbm9kZS0+c3MucHMuc3RhdGU7 CisJRVBRU3RhdGUgICAqZXBxc3RhdGUgPSBlc3RhdGUtPmVzX2VwcV9hY3RpdmU7CisKKwlp ZiAoZXN0YXRlLT5lc19lcHFfYWN0aXZlICE9IE5VTEwpCisJeworCQkvKiBTZWUgY29tbWVu dHMgaW4gRXhlY0luZGV4TWFya1BvcyAqLworCQlJbmRleAkJc2NhbnJlbGlkID0gKChTY2Fu ICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQ7CisKKwkJQXNzZXJ0KHNjYW5yZWxp ZCA+IDApOworCQlpZiAoZXBxc3RhdGUtPnJlbHN1YnNfc2xvdFtzY2FucmVsaWQgLSAxXSAh PSBOVUxMIHx8CisJCQllcHFzdGF0ZS0+cmVsc3Vic19yb3dtYXJrW3NjYW5yZWxpZCAtIDFd ICE9IE5VTEwpCisJCXsKKwkJCS8qIFZlcmlmeSB0aGUgY2xhaW0gYWJvdmUgKi8KKwkJCWlm ICghZXBxc3RhdGUtPnJlbHN1YnNfZG9uZVtzY2FucmVsaWQgLSAxXSkKKwkJCQllbG9nKEVS Uk9SLCAidW5leHBlY3RlZCBFeGVjQnJpblNvcnRSZXN0clBvcyBjYWxsIGluIEVQUSByZWNo ZWNrIik7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlpbmRleF9yZXN0cnBvcyhub2RlLT5p c3NfU2NhbkRlc2MpOworfQorCisvKgorICogc29tZXdoYXQgY3JpcHBsZWQgdmVyc29uIG9m IGJyaW5nZXRiaXRtYXAKKyAqCisgKiBYWFggV2UgZG9uJ3QgY2FsbCBjb25zaXN0ZW50IGZ1 bmN0aW9uIChvciBhbnkgb3RoZXIgZnVuY3Rpb24pLCBzbyB1bmxpa2UKKyAqIGJyaW5nZXRi aXRtYXAgd2UgZG9uJ3Qgc2V0IGEgc2VwYXJhdGUgbWVtb3J5IGNvbnRleHQuIElmIHdlIGVu ZCB1cCBmaWx0ZXJpbmcKKyAqIHRoZSByYW5nZXMgc29tZWhvdyAoZS5nLiBieSBXSEVSRSBj b25kaXRpb25zKSwgdGhpcyBtaWdodCBiZSBuZWNlc3NhcnkuCisgKgorICogWFhYIFNob3Vs ZCBiZSBwYXJ0IG9mIG9wY2xhc3MsIHRvIHNvbWV3aGVyZSBpbiBicmluX21pbm1heC5jIGV0 Yy4KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNJbml0QnJpblNvcnRSYW5nZXMoQnJpblNvcnQg Km5vZGUsIEJyaW5Tb3J0U3RhdGUgKnBsYW5zdGF0ZSkKK3sKKwlJbmRleFNjYW5EZXNjCXNj YW4gPSBwbGFuc3RhdGUtPmlzc19TY2FuRGVzYzsKKwlSZWxhdGlvbglpbmRleFJlbCA9IHBs YW5zdGF0ZS0+aXNzX1JlbGF0aW9uRGVzYzsKKwlpbnQJCQlhdHRubzsKKwlGbWdySW5mbyAg ICpyYW5nZXByb2M7CisJQnJpblJhbmdlU2NhbkRlc2MgKmJyc2NhbjsKKwlib29sCQlhc2M7 CisKKwkvKiBCUklOIFNvcnQgb25seSBhbGxvd3MgT1JERVIgQlkgdXNpbmcgYSBzaW5nbGUg Y29sdW1uICovCisJQXNzZXJ0KG5vZGUtPm51bUNvbHMgPT0gMSk7CisKKwlhdHRubyA9IG5v ZGUtPmF0dG51bXNbMF07CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB3ZSBtYXRjaGVkIHRoZSBz b3J0IGtleSAtIGlmIG5vdCwgd2Ugc2hvdWxkIG5vdCBoYXZlIGdvdAorCSAqIHRvIHRoaXMg cGxhY2UgYXQgYWxsICh0cnkgc29ydGluZyB1c2luZyB0aGlzIGluZGV4KS4KKwkgKi8KKwlB c3NlcnQoQXR0ck51bWJlcklzRm9yVXNlckRlZmluZWRBdHRyKGF0dG5vKSk7CisKKwkvKgor CSAqIGdldCBwcm9jZWR1cmUgdG8gZ2VuZXJhdGUgc29ydCByYW5nZXMKKwkgKgorCSAqIEZJ WE1FIHdlIGNhbid0IHJlbHkgb24gYSBwYXJ0aWN1bGFyIHByb2NudW0gdG8gaWRlbnRpZnkg d2hpY2ggb3BjbGFzcworCSAqIGFsbG93cyBidWlsZGluZyBzb3J0IHJhbmdlcywgYmVjYXVz ZSB0aGUgb3B0aW5hbCBwcm9jbnVtcyBhcmUgbm90CisJICogdW5pcXVlIChlLmcuIGluY2x1 c2lvbl9vcHMgaGF2ZSAxMiB0b28pLiBTbyB3ZSBwcm9iYWJseSBuZWVkIGEgZmxhZworCSAq IGZvciB0aGUgb3BjbGFzcy4KKwkgKi8KKwlyYW5nZXByb2MgPSBpbmRleF9nZXRwcm9jaW5m byhpbmRleFJlbCwgYXR0bm8sIEJSSU5fUFJPQ05VTV9SQU5HRVMpOworCisJLyoKKwkgKiBT aG91bGQgbm90IGdldCBoZXJlIHdpdGhvdXQgYSBwcm9jLCB0aGFua3MgdG8gdGhlIGNoZWNr IGJlZm9yZQorCSAqIGJ1aWxkaW5nIHRoZSBCcmluU29ydCBwYXRoLgorCSAqLworCUFzc2Vy dChPaWRJc1ZhbGlkKHJhbmdlcHJvYy0+Zm5fb2lkKSk7CisKKwltZW1zZXQoJnBsYW5zdGF0 ZS0+YnNfc29ydHN1cHBvcnQsIDAsIHNpemVvZihTb3J0U3VwcG9ydERhdGEpKTsKKworCXBs YW5zdGF0ZS0+YnNfc29ydHN1cHBvcnQuc3N1cF9jb2xsYXRpb24gPSBub2RlLT5jb2xsYXRp b25zWzBdOworCXBsYW5zdGF0ZS0+YnNfc29ydHN1cHBvcnQuc3N1cF9jeHQgPSBDdXJyZW50 TWVtb3J5Q29udGV4dDsgLy8gRklYTUUKKworCVByZXBhcmVTb3J0U3VwcG9ydEZyb21PcmRl cmluZ09wKG5vZGUtPnNvcnRPcGVyYXRvcnNbMF0sICZwbGFuc3RhdGUtPmJzX3NvcnRzdXBw b3J0KTsKKworCS8qCisJICogRGV0ZXJtaW5lIGlmIHRoaXMgQVNDIG9yIERFU0Mgc29ydCwg c28gdGhhdCB3ZSBjYW4gcmVxdWVzdCB0aGUKKwkgKiByYW5nZXMgaW4gdGhlIGFwcHJvcHJp YXRlIG9yZGVyIChvcmRlcmVkIGVpdGhlciBieSBtaW52YWwgZm9yCisJICogQVNDLCBvciBi eSBtYXh2YWwgZm9yIERFU0MpLgorCSAqLworCWFzYyA9IFNjYW5EaXJlY3Rpb25Jc0Zvcndh cmQobm9kZS0+aW5kZXhvcmRlcmRpcik7CisKKwkvKgorCSAqIEFzayB0aGUgb3BjbGFzcyB0 byBwcm9kdWNlIHJhbmdlcyBpbiBhcHByb3ByaWF0ZSBvcmRlcmluZy4KKwkgKgorCSAqIFhY WCBQYXNzIGluZm8gYWJvdXQgQVNDL0RFU0MsIE5VTExTIEZJUlNUL0xBU1QuCisJICovCisJ YnJzY2FuID0gKEJyaW5SYW5nZVNjYW5EZXNjICopIERhdHVtR2V0UG9pbnRlcihGdW5jdGlv bkNhbGwzQ29sbChyYW5nZXByb2MsCisJCQkJCQkJCQkJCW5vZGUtPmNvbGxhdGlvbnNbMF0s CisJCQkJCQkJCQkJCVBvaW50ZXJHZXREYXR1bShzY2FuKSwKKwkJCQkJCQkJCQkJSW50MTZH ZXREYXR1bShhdHRubyksCisJCQkJCQkJCQkJCUJvb2xHZXREYXR1bShhc2MpKSk7CisKKwkv KiBhbGxvY2F0ZSBmb3Igc3BhY2UsIGFuZCBhbHNvIGZvciB0aGUgYWx0ZXJuYXRpdmUgb3Jk ZXJpbmcgKi8KKwlwbGFuc3RhdGUtPmJzX3NjYW4gPSBicnNjYW47Cit9CisKKy8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCQlFeGVjSW5pdEJyaW5Tb3J0CisgKgorICoJCUluaXRpYWxpemVzIHRoZSBp bmRleCBzY2FuJ3Mgc3RhdGUgaW5mb3JtYXRpb24sIGNyZWF0ZXMKKyAqCQlzY2FuIGtleXMs IGFuZCBvcGVucyB0aGUgYmFzZSBhbmQgaW5kZXggcmVsYXRpb25zLgorICoKKyAqCQlOb3Rl OiBpbmRleCBzY2FucyBoYXZlIDIgc2V0cyBvZiBzdGF0ZSBpbmZvcm1hdGlvbiBiZWNhdXNl CisgKgkJCSAgd2UgaGF2ZSB0byBrZWVwIHRyYWNrIG9mIHRoZSBiYXNlIHJlbGF0aW9uIGFu ZCB0aGUKKyAqCQkJICBpbmRleCByZWxhdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworQnJp blNvcnRTdGF0ZSAqCitFeGVjSW5pdEJyaW5Tb3J0KEJyaW5Tb3J0ICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKK3sKKwlCcmluU29ydFN0YXRlICppbmRleHN0YXRlOwor CVJlbGF0aW9uCWN1cnJlbnRSZWxhdGlvbjsKKwlMT0NLTU9ERQlsb2NrbW9kZTsKKworCS8q CisJICogY3JlYXRlIHN0YXRlIHN0cnVjdHVyZQorCSAqLworCWluZGV4c3RhdGUgPSBtYWtl Tm9kZShCcmluU29ydFN0YXRlKTsKKwlpbmRleHN0YXRlLT5zcy5wcy5wbGFuID0gKFBsYW4g Kikgbm9kZTsKKwlpbmRleHN0YXRlLT5zcy5wcy5zdGF0ZSA9IGVzdGF0ZTsKKwlpbmRleHN0 YXRlLT5zcy5wcy5FeGVjUHJvY05vZGUgPSBFeGVjQnJpblNvcnQ7CisKKwkvKgorCSAqIE1p c2NlbGxhbmVvdXMgaW5pdGlhbGl6YXRpb24KKwkgKgorCSAqIGNyZWF0ZSBleHByZXNzaW9u IGNvbnRleHQgZm9yIG5vZGUKKwkgKi8KKwlFeGVjQXNzaWduRXhwckNvbnRleHQoZXN0YXRl LCAmaW5kZXhzdGF0ZS0+c3MucHMpOworCisJLyoKKwkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0 aW9uCisJICovCisJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0 YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKworCWluZGV4c3RhdGUtPnNz LnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsKKwlpbmRleHN0YXRlLT5z cy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBubyBoZWFwIHNjYW4gaGVyZSAqLwor CisJLyoKKwkgKiBnZXQgdGhlIHNjYW4gdHlwZSBmcm9tIHRoZSByZWxhdGlvbiBkZXNjcmlw dG9yLgorCSAqLworCUV4ZWNJbml0U2NhblR1cGxlU2xvdChlc3RhdGUsICZpbmRleHN0YXRl LT5zcywKKwkJCQkJCSAgUmVsYXRpb25HZXREZXNjcihjdXJyZW50UmVsYXRpb24pLAorCQkJ CQkJICB0YWJsZV9zbG90X2NhbGxiYWNrcyhjdXJyZW50UmVsYXRpb24pKTsKKworCS8qCisJ ICogSW5pdGlhbGl6ZSByZXN1bHQgdHlwZSBhbmQgcHJvamVjdGlvbi4KKwkgKi8KKwlFeGVj SW5pdFJlc3VsdFR1cGxlU2xvdFRMKCZpbmRleHN0YXRlLT5zcy5wcywgJlRUU09wc01pbmlt YWxUdXBsZSk7CisJLy8gRXhlY0luaXRSZXN1bHRUeXBlVEwoJmluZGV4c3RhdGUtPnNzLnBz KTsKKwkvLyBFeGVjQXNzaWduU2NhblByb2plY3Rpb25JbmZvKCZpbmRleHN0YXRlLT5zcyk7 CisJLy8gRXhlY0luaXRSZXN1bHRTbG90KCZpbmRleHN0YXRlLT5zcy5wcywgJlRUU09wc1Zp cnR1YWwpOworCisJaW5kZXhzdGF0ZS0+YnNfUHJvakluZm8gPSBFeGVjQnVpbGRQcm9qZWN0 aW9uSW5mbygoKFBsYW4gKikgbm9kZSktPnRhcmdldGxpc3QsCisJCQkJCQkJCQkJCQkJICBp bmRleHN0YXRlLT5zcy5wcy5wc19FeHByQ29udGV4dCwKKwkJCQkJCQkJCQkJCQkgIGluZGV4 c3RhdGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCwKKwkJCQkJCQkJCQkJCQkgICZpbmRl eHN0YXRlLT5zcy5wcywKKwkJCQkJCQkJCQkJCQkgIGluZGV4c3RhdGUtPnNzLnNzX1NjYW5U dXBsZVNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IpOworCisJLyoKKwkgKiBpbml0aWFsaXpl IGNoaWxkIGV4cHJlc3Npb25zCisJICoKKwkgKiBOb3RlOiB3ZSBkb24ndCBpbml0aWFsaXpl IGFsbCBvZiB0aGUgaW5kZXhxdWFsIGV4cHJlc3Npb24sIG9ubHkgdGhlCisJICogc3ViLXBh cnRzIGNvcnJlc3BvbmRpbmcgdG8gcnVudGltZSBrZXlzIChzZWUgYmVsb3cpLiAgTGlrZXdp c2UgZm9yCisJICogaW5kZXhvcmRlcmJ5LCBpZiBhbnkuICBCdXQgdGhlIGluZGV4cXVhbG9y aWcgZXhwcmVzc2lvbiBpcyBhbHdheXMKKwkgKiBpbml0aWFsaXplZCBldmVuIHRob3VnaCBp dCB3aWxsIG9ubHkgYmUgdXNlZCBpbiBzb21lIHVuY29tbW9uIGNhc2VzIC0tLQorCSAqIHdv dWxkIGJlIG5pY2UgdG8gaW1wcm92ZSB0aGF0LiAgKFByb2JsZW0gaXMgdGhhdCBhbnkgU3Vi UGxhbnMgcHJlc2VudAorCSAqIGluIHRoZSBleHByZXNzaW9uIG11c3QgYmUgZm91bmQgbm93 Li4uKQorCSAqLworCWluZGV4c3RhdGUtPnNzLnBzLnF1YWwgPQorCQlFeGVjSW5pdFF1YWwo bm9kZS0+c2Nhbi5wbGFuLnF1YWwsIChQbGFuU3RhdGUgKikgaW5kZXhzdGF0ZSk7CisJaW5k ZXhzdGF0ZS0+aW5kZXhxdWFsb3JpZyA9CisJCUV4ZWNJbml0UXVhbChub2RlLT5pbmRleHF1 YWxvcmlnLCAoUGxhblN0YXRlICopIGluZGV4c3RhdGUpOworCisJLyoKKwkgKiBJZiB3ZSBh cmUganVzdCBkb2luZyBFWFBMQUlOIChpZSwgYXJlbid0IGdvaW5nIHRvIHJ1biB0aGUgcGxh biksIHN0b3AKKwkgKiBoZXJlLiAgVGhpcyBhbGxvd3MgYW4gaW5kZXgtYWR2aXNvciBwbHVn aW4gdG8gRVhQTEFJTiBhIHBsYW4gY29udGFpbmluZworCSAqIHJlZmVyZW5jZXMgdG8gbm9u ZXhpc3RlbnQgaW5kZXhlcy4KKwkgKi8KKwlpZiAoZWZsYWdzICYgRVhFQ19GTEFHX0VYUExB SU5fT05MWSkKKwkJcmV0dXJuIGluZGV4c3RhdGU7CisKKwkvKiBPcGVuIHRoZSBpbmRleCBy ZWxhdGlvbi4gKi8KKwlsb2NrbW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+c2Nhbi5zY2Fu cmVsaWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOworCWluZGV4c3RhdGUtPmlzc19SZWxhdGlv bkRlc2MgPSBpbmRleF9vcGVuKG5vZGUtPmluZGV4aWQsIGxvY2ttb2RlKTsKKworCS8qCisJ ICogSW5pdGlhbGl6ZSBpbmRleC1zcGVjaWZpYyBzY2FuIHN0YXRlCisJICovCisJaW5kZXhz dGF0ZS0+aXNzX1J1bnRpbWVLZXlzUmVhZHkgPSBmYWxzZTsKKwlpbmRleHN0YXRlLT5pc3Nf UnVudGltZUtleXMgPSBOVUxMOworCWluZGV4c3RhdGUtPmlzc19OdW1SdW50aW1lS2V5cyA9 IDA7CisKKwkvKgorCSAqIGJ1aWxkIHRoZSBpbmRleCBzY2FuIGtleXMgZnJvbSB0aGUgaW5k ZXggcXVhbGlmaWNhdGlvbgorCSAqLworCUV4ZWNJbmRleEJ1aWxkU2NhbktleXMoKFBsYW5T dGF0ZSAqKSBpbmRleHN0YXRlLAorCQkJCQkJICAgaW5kZXhzdGF0ZS0+aXNzX1JlbGF0aW9u RGVzYywKKwkJCQkJCSAgIG5vZGUtPmluZGV4cXVhbCwKKwkJCQkJCSAgIGZhbHNlLAorCQkJ CQkJICAgJmluZGV4c3RhdGUtPmlzc19TY2FuS2V5cywKKwkJCQkJCSAgICZpbmRleHN0YXRl LT5pc3NfTnVtU2NhbktleXMsCisJCQkJCQkgICAmaW5kZXhzdGF0ZS0+aXNzX1J1bnRpbWVL ZXlzLAorCQkJCQkJICAgJmluZGV4c3RhdGUtPmlzc19OdW1SdW50aW1lS2V5cywKKwkJCQkJ CSAgIE5VTEwsCS8qIG5vIEFycmF5S2V5cyAqLworCQkJCQkJICAgTlVMTCk7CisKKwkvKgor CSAqIElmIHdlIGhhdmUgcnVudGltZSBrZXlzLCB3ZSBuZWVkIGFuIEV4cHJDb250ZXh0IHRv IGV2YWx1YXRlIHRoZW0uIFRoZQorCSAqIG5vZGUncyBzdGFuZGFyZCBjb250ZXh0IHdvbid0 IGRvIGJlY2F1c2Ugd2Ugd2FudCB0byByZXNldCB0aGF0IGNvbnRleHQKKwkgKiBmb3IgZXZl cnkgdHVwbGUuICBTbywgYnVpbGQgYW5vdGhlciBjb250ZXh0IGp1c3QgbGlrZSB0aGUgb3Ro ZXIgb25lLi4uCisJICogLXRnbCA3LzExLzAwCisJICovCisJaWYgKGluZGV4c3RhdGUtPmlz c19OdW1SdW50aW1lS2V5cyAhPSAwKQorCXsKKwkJRXhwckNvbnRleHQgKnN0ZGVjb250ZXh0 ID0gaW5kZXhzdGF0ZS0+c3MucHMucHNfRXhwckNvbnRleHQ7CisKKwkJRXhlY0Fzc2lnbkV4 cHJDb250ZXh0KGVzdGF0ZSwgJmluZGV4c3RhdGUtPnNzLnBzKTsKKwkJaW5kZXhzdGF0ZS0+ aXNzX1J1bnRpbWVDb250ZXh0ID0gaW5kZXhzdGF0ZS0+c3MucHMucHNfRXhwckNvbnRleHQ7 CisJCWluZGV4c3RhdGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0ID0gc3RkZWNvbnRleHQ7CisJ fQorCWVsc2UKKwl7CisJCWluZGV4c3RhdGUtPmlzc19SdW50aW1lQ29udGV4dCA9IE5VTEw7 CisJfQorCisJaW5kZXhzdGF0ZS0+YnNfdHVwbGVzb3J0c3RhdGUgPSBOVUxMOworCWluZGV4 c3RhdGUtPmJzX3F1YWwgPSBpbmRleHN0YXRlLT5zcy5wcy5xdWFsOworCWluZGV4c3RhdGUt PnNzLnBzLnF1YWwgPSBOVUxMOworCS8vIEV4ZWNJbml0UmVzdWx0VHVwbGVTbG90VEwoJmlu ZGV4c3RhdGUtPnNzLnBzLCAmVFRTT3BzTWluaW1hbFR1cGxlKTsKKworCS8qCisJICogYWxs IGRvbmUuCisJICovCisJcmV0dXJuIGluZGV4c3RhdGU7Cit9CisKKy8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqCQkJCQkJUGFyYWxsZWwgU2NhbiBTdXBwb3J0CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKwor LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoJCUV4ZWNCcmluU29ydEVzdGltYXRlCisgKgorICoJCUNvbXB1 dGUgdGhlIGFtb3VudCBvZiBzcGFjZSB3ZSdsbCBuZWVkIGluIHRoZSBwYXJhbGxlbAorICoJ CXF1ZXJ5IERTTSwgYW5kIGluZm9ybSBwY3h0LT5lc3RpbWF0b3IgYWJvdXQgb3VyIG5lZWRz LgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjQnJpblNvcnRFc3RpbWF0ZShCcmlu U29ydFN0YXRlICpub2RlLAorCQkJCQkgIFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKK3sKKwlF U3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOworCisJbm9kZS0+aXNzX1Bz Y2FuTGVuID0gaW5kZXhfcGFyYWxsZWxzY2FuX2VzdGltYXRlKG5vZGUtPmlzc19SZWxhdGlv bkRlc2MsCisJCQkJCQkJCQkJCQkJIGVzdGF0ZS0+ZXNfc25hcHNob3QpOworCXNobV90b2Nf ZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgbm9kZS0+aXNzX1BzY2FuTGVuKTsK KwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7Cit9CisKKy8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCQlFeGVjQnJpblNvcnRJbml0aWFsaXplRFNNCisgKgorICoJCVNl dCB1cCBhIHBhcmFsbGVsIGluZGV4IHNjYW4gZGVzY3JpcHRvci4KKyAqIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqLwordm9pZAorRXhlY0JyaW5Tb3J0SW5pdGlhbGl6ZURTTShCcmluU29ydFN0YXRlICpu b2RlLAorCQkJCQkJICAgUGFyYWxsZWxDb250ZXh0ICpwY3h0KQoreworCUVTdGF0ZQkgICAq ZXN0YXRlID0gbm9kZS0+c3MucHMuc3RhdGU7CisJUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBp c2NhbjsKKworCXBpc2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2RlLT5p c3NfUHNjYW5MZW4pOworCWluZGV4X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKG5vZGUtPnNz LnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJICBub2RlLT5pc3NfUmVsYXRpb25EZXNj LAorCQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCisJCQkJCQkJCSAgcGlzY2FuKTsK KwlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9k ZV9pZCwgcGlzY2FuKTsKKwlub2RlLT5pc3NfU2NhbkRlc2MgPQorCQlpbmRleF9iZWdpbnNj YW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkgbm9k ZS0+aXNzX1JlbGF0aW9uRGVzYywKKwkJCQkJCQkJIG5vZGUtPmlzc19OdW1TY2FuS2V5cywK KwkJCQkJCQkJIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywKKwkJCQkJCQkJIHBpc2Nhbik7 CisKKwkvKgorCSAqIElmIG5vIHJ1bi10aW1lIGtleXMgdG8gY2FsY3VsYXRlIG9yIHRoZXkg YXJlIHJlYWR5LCBnbyBhaGVhZCBhbmQgcGFzcworCSAqIHRoZSBzY2Fua2V5cyB0byB0aGUg aW5kZXggQU0uCisJICovCisJaWYgKG5vZGUtPmlzc19OdW1SdW50aW1lS2V5cyA9PSAwIHx8 IG5vZGUtPmlzc19SdW50aW1lS2V5c1JlYWR5KQorCQlpbmRleF9yZXNjYW4obm9kZS0+aXNz X1NjYW5EZXNjLAorCQkJCQkgbm9kZS0+aXNzX1NjYW5LZXlzLCBub2RlLT5pc3NfTnVtU2Nh bktleXMsCisJCQkJCSBub2RlLT5pc3NfT3JkZXJCeUtleXMsIG5vZGUtPmlzc19OdW1PcmRl ckJ5S2V5cyk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjQnJpblNvcnRSZUluaXRp YWxpemVEU00KKyAqCisgKgkJUmVzZXQgc2hhcmVkIHN0YXRlIGJlZm9yZSBiZWdpbm5pbmcg YSBmcmVzaCBzY2FuLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjQnJpblNvcnRS ZUluaXRpYWxpemVEU00oQnJpblNvcnRTdGF0ZSAqbm9kZSwKKwkJCQkJCQkgUGFyYWxsZWxD b250ZXh0ICpwY3h0KQoreworCWluZGV4X3BhcmFsbGVscmVzY2FuKG5vZGUtPmlzc19TY2Fu RGVzYyk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjQnJpblNvcnRJbml0aWFsaXpl V29ya2VyCisgKgorICoJCUNvcHkgcmVsZXZhbnQgaW5mb3JtYXRpb24gZnJvbSBUT0MgaW50 byBwbGFuc3RhdGUuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0V4ZWNCcmluU29ydElu aXRpYWxpemVXb3JrZXIoQnJpblNvcnRTdGF0ZSAqbm9kZSwKKwkJCQkJCQkgIFBhcmFsbGVs V29ya2VyQ29udGV4dCAqcHdjeHQpCit7CisJUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBpc2Nh bjsKKworCXBpc2NhbiA9IHNobV90b2NfbG9va3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBz LnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2UpOworCW5vZGUtPmlzc19TY2FuRGVzYyA9CisJ CWluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24s CisJCQkJCQkJCSBub2RlLT5pc3NfUmVsYXRpb25EZXNjLAorCQkJCQkJCQkgbm9kZS0+aXNz X051bVNjYW5LZXlzLAorCQkJCQkJCQkgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzLAorCQkJ CQkJCQkgcGlzY2FuKTsKKworCS8qCisJICogSWYgbm8gcnVuLXRpbWUga2V5cyB0byBjYWxj dWxhdGUgb3IgdGhleSBhcmUgcmVhZHksIGdvIGFoZWFkIGFuZCBwYXNzCisJICogdGhlIHNj YW5rZXlzIHRvIHRoZSBpbmRleCBBTS4KKwkgKi8KKwlpZiAobm9kZS0+aXNzX051bVJ1bnRp bWVLZXlzID09IDAgfHwgbm9kZS0+aXNzX1J1bnRpbWVLZXlzUmVhZHkpCisJCWluZGV4X3Jl c2Nhbihub2RlLT5pc3NfU2NhbkRlc2MsCisJCQkJCSBub2RlLT5pc3NfU2NhbktleXMsIG5v ZGUtPmlzc19OdW1TY2FuS2V5cywKKwkJCQkJIG5vZGUtPmlzc19PcmRlckJ5S2V5cywgbm9k ZS0+aXNzX051bU9yZGVyQnlLZXlzKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wYXRoL2Nvc3RzaXplLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9j b3N0c2l6ZS5jCmluZGV4IGVmNDc1ZDk1YTEuLjk0YjVjOGRmODEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwpAQCAtNzkyLDYgKzc5MiwyNjAgQEAgY29zdF9p bmRleChJbmRleFBhdGggKnBhdGgsIFBsYW5uZXJJbmZvICpyb290LCBkb3VibGUgbG9vcF9j b3VudCwKIAlwYXRoLT5wYXRoLnRvdGFsX2Nvc3QgPSBzdGFydHVwX2Nvc3QgKyBydW5fY29z dDsKIH0KIAordm9pZAorY29zdF9icmluc29ydChCcmluU29ydFBhdGggKnBhdGgsIFBsYW5u ZXJJbmZvICpyb290LCBkb3VibGUgbG9vcF9jb3VudCwKKwkJICAgYm9vbCBwYXJ0aWFsX3Bh dGgpCit7CisJSW5kZXhPcHRJbmZvICppbmRleCA9IHBhdGgtPmlwYXRoLmluZGV4aW5mbzsK KwlSZWxPcHRJbmZvICpiYXNlcmVsID0gaW5kZXgtPnJlbDsKKwlhbWNvc3Rlc3RpbWF0ZV9m dW5jdGlvbiBhbWNvc3Rlc3RpbWF0ZTsKKwlMaXN0CSAgICpxcHF1YWxzOworCUNvc3QJCXN0 YXJ0dXBfY29zdCA9IDA7CisJQ29zdAkJcnVuX2Nvc3QgPSAwOworCUNvc3QJCWNwdV9ydW5f Y29zdCA9IDA7CisJQ29zdAkJaW5kZXhTdGFydHVwQ29zdDsKKwlDb3N0CQlpbmRleFRvdGFs Q29zdDsKKwlTZWxlY3Rpdml0eSBpbmRleFNlbGVjdGl2aXR5OworCWRvdWJsZQkJaW5kZXhD b3JyZWxhdGlvbiwKKwkJCQljc3F1YXJlZDsKKwlkb3VibGUJCXNwY19zZXFfcGFnZV9jb3N0 LAorCQkJCXNwY19yYW5kb21fcGFnZV9jb3N0OworCUNvc3QJCW1pbl9JT19jb3N0LAorCQkJ CW1heF9JT19jb3N0OworCVF1YWxDb3N0CXFwcXVhbF9jb3N0OworCUNvc3QJCWNwdV9wZXJf dHVwbGU7CisJZG91YmxlCQl0dXBsZXNfZmV0Y2hlZDsKKwlkb3VibGUJCXBhZ2VzX2ZldGNo ZWQ7CisJZG91YmxlCQlyYW5kX2hlYXBfcGFnZXM7CisJZG91YmxlCQlpbmRleF9wYWdlczsK KworCS8qIFNob3VsZCBvbmx5IGJlIGFwcGxpZWQgdG8gYmFzZSByZWxhdGlvbnMgKi8KKwlB c3NlcnQoSXNBKGJhc2VyZWwsIFJlbE9wdEluZm8pICYmCisJCSAgIElzQShpbmRleCwgSW5k ZXhPcHRJbmZvKSk7CisJQXNzZXJ0KGJhc2VyZWwtPnJlbGlkID4gMCk7CisJQXNzZXJ0KGJh c2VyZWwtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKTsKKworCS8qCisJICogTWFyayB0aGUg cGF0aCB3aXRoIHRoZSBjb3JyZWN0IHJvdyBlc3RpbWF0ZSwgYW5kIGlkZW50aWZ5IHdoaWNo IHF1YWxzCisJICogd2lsbCBuZWVkIHRvIGJlIGVuZm9yY2VkIGFzIHFwcXVhbHMuICBXZSBu ZWVkIG5vdCBjaGVjayBhbnkgcXVhbHMgdGhhdAorCSAqIGFyZSBpbXBsaWVkIGJ5IHRoZSBp bmRleCdzIHByZWRpY2F0ZSwgc28gd2UgY2FuIHVzZSBpbmRyZXN0cmljdGluZm8gbm90CisJ ICogYmFzZXJlc3RyaWN0aW5mbyBhcyB0aGUgbGlzdCBvZiByZWxldmFudCByZXN0cmljdGlv biBjbGF1c2VzIGZvciB0aGUKKwkgKiByZWwuCisJICovCisJaWYgKHBhdGgtPmlwYXRoLnBh dGgucGFyYW1faW5mbykKKwl7CisJCXBhdGgtPmlwYXRoLnBhdGgucm93cyA9IHBhdGgtPmlw YXRoLnBhdGgucGFyYW1faW5mby0+cHBpX3Jvd3M7CisJCS8qIHFwcXVhbHMgY29tZSBmcm9t IHRoZSByZWwncyByZXN0cmljdGlvbiBjbGF1c2VzIGFuZCBwcGlfY2xhdXNlcyAqLworCQlx cHF1YWxzID0gbGlzdF9jb25jYXQoZXh0cmFjdF9ub25pbmRleF9jb25kaXRpb25zKHBhdGgt PmlwYXRoLmluZGV4aW5mby0+aW5kcmVzdHJpY3RpbmZvLAorCQkJCQkJCQkJCQkJCQkgIHBh dGgtPmlwYXRoLmluZGV4Y2xhdXNlcyksCisJCQkJCQkJICBleHRyYWN0X25vbmluZGV4X2Nv bmRpdGlvbnMocGF0aC0+aXBhdGgucGF0aC5wYXJhbV9pbmZvLT5wcGlfY2xhdXNlcywKKwkJ CQkJCQkJCQkJCQkJICBwYXRoLT5pcGF0aC5pbmRleGNsYXVzZXMpKTsKKwl9CisJZWxzZQor CXsKKwkJcGF0aC0+aXBhdGgucGF0aC5yb3dzID0gYmFzZXJlbC0+cm93czsKKwkJLyogcXBx dWFscyBjb21lIGZyb20ganVzdCB0aGUgcmVsJ3MgcmVzdHJpY3Rpb24gY2xhdXNlcyAqLwor CQlxcHF1YWxzID0gZXh0cmFjdF9ub25pbmRleF9jb25kaXRpb25zKHBhdGgtPmlwYXRoLmlu ZGV4aW5mby0+aW5kcmVzdHJpY3RpbmZvLAorCQkJCQkJCQkJCQkgIHBhdGgtPmlwYXRoLmlu ZGV4Y2xhdXNlcyk7CisJfQorCisJaWYgKCFlbmFibGVfaW5kZXhzY2FuKQorCQlzdGFydHVw X2Nvc3QgKz0gZGlzYWJsZV9jb3N0OworCS8qIHdlIGRvbid0IG5lZWQgdG8gY2hlY2sgZW5h YmxlX2luZGV4b25seXNjYW47IGluZHhwYXRoLmMgZG9lcyB0aGF0ICovCisKKwkvKgorCSAq IENhbGwgaW5kZXgtYWNjZXNzLW1ldGhvZC1zcGVjaWZpYyBjb2RlIHRvIGVzdGltYXRlIHRo ZSBwcm9jZXNzaW5nIGNvc3QKKwkgKiBmb3Igc2Nhbm5pbmcgdGhlIGluZGV4LCBhcyB3ZWxs IGFzIHRoZSBzZWxlY3Rpdml0eSBvZiB0aGUgaW5kZXggKGllLAorCSAqIHRoZSBmcmFjdGlv biBvZiBtYWluLXRhYmxlIHR1cGxlcyB3ZSB3aWxsIGhhdmUgdG8gcmV0cmlldmUpIGFuZCBp dHMKKwkgKiBjb3JyZWxhdGlvbiB0byB0aGUgbWFpbi10YWJsZSB0dXBsZSBvcmRlci4gIFdl IG5lZWQgYSBjYXN0IGhlcmUgYmVjYXVzZQorCSAqIHBhdGhub2Rlcy5oIHVzZXMgYSB3ZWFr IGZ1bmN0aW9uIHR5cGUgdG8gYXZvaWQgaW5jbHVkaW5nIGFtYXBpLmguCisJICovCisJYW1j b3N0ZXN0aW1hdGUgPSAoYW1jb3N0ZXN0aW1hdGVfZnVuY3Rpb24pIGluZGV4LT5hbWNvc3Rl c3RpbWF0ZTsKKwlhbWNvc3Rlc3RpbWF0ZShyb290LCAmcGF0aC0+aXBhdGgsIGxvb3BfY291 bnQsCisJCQkJICAgJmluZGV4U3RhcnR1cENvc3QsICZpbmRleFRvdGFsQ29zdCwKKwkJCQkg ICAmaW5kZXhTZWxlY3Rpdml0eSwgJmluZGV4Q29ycmVsYXRpb24sCisJCQkJICAgJmluZGV4 X3BhZ2VzKTsKKworCS8qCisJICogU2F2ZSBhbWNvc3Rlc3RpbWF0ZSdzIHJlc3VsdHMgZm9y IHBvc3NpYmxlIHVzZSBpbiBiaXRtYXAgc2NhbiBwbGFubmluZy4KKwkgKiBXZSBkb24ndCBi b3RoZXIgdG8gc2F2ZSBpbmRleFN0YXJ0dXBDb3N0IG9yIGluZGV4Q29ycmVsYXRpb24sIGJl Y2F1c2UgYQorCSAqIGJpdG1hcCBzY2FuIGRvZXNuJ3QgY2FyZSBhYm91dCBlaXRoZXIuCisJ ICovCisJcGF0aC0+aXBhdGguaW5kZXh0b3RhbGNvc3QgPSBpbmRleFRvdGFsQ29zdDsKKwlw YXRoLT5pcGF0aC5pbmRleHNlbGVjdGl2aXR5ID0gaW5kZXhTZWxlY3Rpdml0eTsKKworCS8q IGFsbCBjb3N0cyBmb3IgdG91Y2hpbmcgaW5kZXggaXRzZWxmIGluY2x1ZGVkIGhlcmUgKi8K KwlzdGFydHVwX2Nvc3QgKz0gaW5kZXhTdGFydHVwQ29zdDsKKwlydW5fY29zdCArPSBpbmRl eFRvdGFsQ29zdCAtIGluZGV4U3RhcnR1cENvc3Q7CisKKwkvKiBlc3RpbWF0ZSBudW1iZXIg b2YgbWFpbi10YWJsZSB0dXBsZXMgZmV0Y2hlZCAqLworCXR1cGxlc19mZXRjaGVkID0gY2xh bXBfcm93X2VzdChpbmRleFNlbGVjdGl2aXR5ICogYmFzZXJlbC0+dHVwbGVzKTsKKworCS8q IGZldGNoIGVzdGltYXRlZCBwYWdlIGNvc3RzIGZvciB0YWJsZXNwYWNlIGNvbnRhaW5pbmcg dGFibGUgKi8KKwlnZXRfdGFibGVzcGFjZV9wYWdlX2Nvc3RzKGJhc2VyZWwtPnJlbHRhYmxl c3BhY2UsCisJCQkJCQkJICAmc3BjX3JhbmRvbV9wYWdlX2Nvc3QsCisJCQkJCQkJICAmc3Bj X3NlcV9wYWdlX2Nvc3QpOworCisJLyotLS0tLS0tLS0tCisJICogRXN0aW1hdGUgbnVtYmVy IG9mIG1haW4tdGFibGUgcGFnZXMgZmV0Y2hlZCwgYW5kIGNvbXB1dGUgSS9PIGNvc3QuCisJ ICoKKwkgKiBXaGVuIHRoZSBpbmRleCBvcmRlcmluZyBpcyB1bmNvcnJlbGF0ZWQgd2l0aCB0 aGUgdGFibGUgb3JkZXJpbmcsCisJICogd2UgdXNlIGFuIGFwcHJveGltYXRpb24gcHJvcG9z ZWQgYnkgTWFja2VydCBhbmQgTG9obWFuIChzZWUKKwkgKiBpbmRleF9wYWdlc19mZXRjaGVk KCkgZm9yIGRldGFpbHMpIHRvIGNvbXB1dGUgdGhlIG51bWJlciBvZiBwYWdlcworCSAqIGZl dGNoZWQsIGFuZCB0aGVuIGNoYXJnZSBzcGNfcmFuZG9tX3BhZ2VfY29zdCBwZXIgcGFnZSBm ZXRjaGVkLgorCSAqCisJICogV2hlbiB0aGUgaW5kZXggb3JkZXJpbmcgaXMgZXhhY3RseSBj b3JyZWxhdGVkIHdpdGggdGhlIHRhYmxlIG9yZGVyaW5nCisJICogKGp1c3QgYWZ0ZXIgYSBD TFVTVEVSLCBmb3IgZXhhbXBsZSksIHRoZSBudW1iZXIgb2YgcGFnZXMgZmV0Y2hlZCBzaG91 bGQKKwkgKiBiZSBleGFjdGx5IHNlbGVjdGl2aXR5ICogdGFibGVfc2l6ZS4gIFdoYXQncyBt b3JlLCBhbGwgYnV0IHRoZSBmaXJzdAorCSAqIHdpbGwgYmUgc2VxdWVudGlhbCBmZXRjaGVz LCBub3QgdGhlIHJhbmRvbSBmZXRjaGVzIHRoYXQgb2NjdXIgaW4gdGhlCisJICogdW5jb3Jy ZWxhdGVkIGNhc2UuICBTbyBpZiB0aGUgbnVtYmVyIG9mIHBhZ2VzIGlzIG1vcmUgdGhhbiAx LCB3ZQorCSAqIG91Z2h0IHRvIGNoYXJnZQorCSAqCQlzcGNfcmFuZG9tX3BhZ2VfY29zdCAr IChwYWdlc19mZXRjaGVkIC0gMSkgKiBzcGNfc2VxX3BhZ2VfY29zdAorCSAqIEZvciBwYXJ0 aWFsbHktY29ycmVsYXRlZCBpbmRleGVzLCB3ZSBvdWdodCB0byBjaGFyZ2Ugc29tZXdoZXJl IGJldHdlZW4KKwkgKiB0aGVzZSB0d28gZXN0aW1hdGVzLiAgV2UgY3VycmVudGx5IGludGVy cG9sYXRlIGxpbmVhcmx5IGJldHdlZW4gdGhlCisJICogZXN0aW1hdGVzIGJhc2VkIG9uIHRo ZSBjb3JyZWxhdGlvbiBzcXVhcmVkIChYWFggaXMgdGhhdCBhcHByb3ByaWF0ZT8pLgorCSAq CisJICogSWYgaXQncyBhbiBpbmRleC1vbmx5IHNjYW4sIHRoZW4gd2Ugd2lsbCBub3QgbmVl ZCB0byBmZXRjaCBhbnkgaGVhcAorCSAqIHBhZ2VzIGZvciB3aGljaCB0aGUgdmlzaWJpbGl0 eSBtYXAgc2hvd3MgYWxsIHR1cGxlcyBhcmUgdmlzaWJsZS4KKwkgKiBIZW5jZSwgcmVkdWNl IHRoZSBlc3RpbWF0ZWQgbnVtYmVyIG9mIGhlYXAgZmV0Y2hlcyBhY2NvcmRpbmdseS4KKwkg KiBXZSB1c2UgdGhlIG1lYXN1cmVkIGZyYWN0aW9uIG9mIHRoZSBlbnRpcmUgaGVhcCB0aGF0 IGlzIGFsbC12aXNpYmxlLAorCSAqIHdoaWNoIG1pZ2h0IG5vdCBiZSBwYXJ0aWN1bGFybHkg cmVsZXZhbnQgdG8gdGhlIHN1YnNldCBvZiB0aGUgaGVhcAorCSAqIHRoYXQgdGhpcyBxdWVy eSB3aWxsIGZldGNoOyBidXQgaXQncyBub3QgY2xlYXIgaG93IHRvIGRvIGJldHRlci4KKwkg Ki0tLS0tLS0tLS0KKwkgKi8KKwlpZiAobG9vcF9jb3VudCA+IDEpCisJeworCQkvKgorCQkg KiBGb3IgcmVwZWF0ZWQgaW5kZXhzY2FucywgdGhlIGFwcHJvcHJpYXRlIGVzdGltYXRlIGZv ciB0aGUKKwkJICogdW5jb3JyZWxhdGVkIGNhc2UgaXMgdG8gc2NhbGUgdXAgdGhlIG51bWJl ciBvZiB0dXBsZXMgZmV0Y2hlZCBpbgorCQkgKiB0aGUgTWFja2VydCBhbmQgTG9obWFuIGZv cm11bGEgYnkgdGhlIG51bWJlciBvZiBzY2Fucywgc28gdGhhdCB3ZQorCQkgKiBlc3RpbWF0 ZSB0aGUgbnVtYmVyIG9mIHBhZ2VzIGZldGNoZWQgYnkgYWxsIHRoZSBzY2FuczsgdGhlbgor CQkgKiBwcm8tcmF0ZSB0aGUgY29zdHMgZm9yIG9uZSBzY2FuLiAgSW4gdGhpcyBjYXNlIHdl IGFzc3VtZSBhbGwgdGhlCisJCSAqIGZldGNoZXMgYXJlIHJhbmRvbSBhY2Nlc3Nlcy4KKwkJ ICovCisJCXBhZ2VzX2ZldGNoZWQgPSBpbmRleF9wYWdlc19mZXRjaGVkKHR1cGxlc19mZXRj aGVkICogbG9vcF9jb3VudCwKKwkJCQkJCQkJCQkJYmFzZXJlbC0+cGFnZXMsCisJCQkJCQkJ CQkJCShkb3VibGUpIGluZGV4LT5wYWdlcywKKwkJCQkJCQkJCQkJcm9vdCk7CisKKwkJcmFu ZF9oZWFwX3BhZ2VzID0gcGFnZXNfZmV0Y2hlZDsKKworCQltYXhfSU9fY29zdCA9IChwYWdl c19mZXRjaGVkICogc3BjX3JhbmRvbV9wYWdlX2Nvc3QpIC8gbG9vcF9jb3VudDsKKworCQkv KgorCQkgKiBJbiB0aGUgcGVyZmVjdGx5IGNvcnJlbGF0ZWQgY2FzZSwgdGhlIG51bWJlciBv ZiBwYWdlcyB0b3VjaGVkIGJ5CisJCSAqIGVhY2ggc2NhbiBpcyBzZWxlY3Rpdml0eSAqIHRh YmxlX3NpemUsIGFuZCB3ZSBjYW4gdXNlIHRoZSBNYWNrZXJ0CisJCSAqIGFuZCBMb2htYW4g Zm9ybXVsYSBhdCB0aGUgcGFnZSBsZXZlbCB0byBlc3RpbWF0ZSBob3cgbXVjaCB3b3JrIGlz CisJCSAqIHNhdmVkIGJ5IGNhY2hpbmcgYWNyb3NzIHNjYW5zLiAgV2Ugc3RpbGwgYXNzdW1l IGFsbCB0aGUgZmV0Y2hlcyBhcmUKKwkJICogcmFuZG9tLCB0aG91Z2gsIHdoaWNoIGlzIGFu IG92ZXJlc3RpbWF0ZSB0aGF0J3MgaGFyZCB0byBjb3JyZWN0IGZvcgorCQkgKiB3aXRob3V0 IGRvdWJsZS1jb3VudGluZyB0aGUgY2FjaGUgZWZmZWN0cy4gIChCdXQgaW4gbW9zdCBjYXNl cworCQkgKiB3aGVyZSBzdWNoIGEgcGxhbiBpcyBhY3R1YWxseSBpbnRlcmVzdGluZywgb25s eSBvbmUgcGFnZSB3b3VsZCBnZXQKKwkJICogZmV0Y2hlZCBwZXIgc2NhbiBhbnl3YXksIHNv IGl0IHNob3VsZG4ndCBtYXR0ZXIgbXVjaC4pCisJCSAqLworCQlwYWdlc19mZXRjaGVkID0g Y2VpbChpbmRleFNlbGVjdGl2aXR5ICogKGRvdWJsZSkgYmFzZXJlbC0+cGFnZXMpOworCisJ CXBhZ2VzX2ZldGNoZWQgPSBpbmRleF9wYWdlc19mZXRjaGVkKHBhZ2VzX2ZldGNoZWQgKiBs b29wX2NvdW50LAorCQkJCQkJCQkJCQliYXNlcmVsLT5wYWdlcywKKwkJCQkJCQkJCQkJKGRv dWJsZSkgaW5kZXgtPnBhZ2VzLAorCQkJCQkJCQkJCQlyb290KTsKKworCQltaW5fSU9fY29z dCA9IChwYWdlc19mZXRjaGVkICogc3BjX3JhbmRvbV9wYWdlX2Nvc3QpIC8gbG9vcF9jb3Vu dDsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogTm9ybWFsIGNhc2U6IGFwcGx5IHRoZSBN YWNrZXJ0IGFuZCBMb2htYW4gZm9ybXVsYSwgYW5kIHRoZW4KKwkJICogaW50ZXJwb2xhdGUg YmV0d2VlbiB0aGF0IGFuZCB0aGUgY29ycmVsYXRpb24tZGVyaXZlZCByZXN1bHQuCisJCSAq LworCQlwYWdlc19mZXRjaGVkID0gaW5kZXhfcGFnZXNfZmV0Y2hlZCh0dXBsZXNfZmV0Y2hl ZCwKKwkJCQkJCQkJCQkJYmFzZXJlbC0+cGFnZXMsCisJCQkJCQkJCQkJCShkb3VibGUpIGlu ZGV4LT5wYWdlcywKKwkJCQkJCQkJCQkJcm9vdCk7CisKKwkJcmFuZF9oZWFwX3BhZ2VzID0g cGFnZXNfZmV0Y2hlZDsKKworCQkvKiBtYXhfSU9fY29zdCBpcyBmb3IgdGhlIHBlcmZlY3Rs eSB1bmNvcnJlbGF0ZWQgY2FzZSAoY3NxdWFyZWQ9MCkgKi8KKwkJbWF4X0lPX2Nvc3QgPSBw YWdlc19mZXRjaGVkICogc3BjX3JhbmRvbV9wYWdlX2Nvc3Q7CisKKwkJLyogbWluX0lPX2Nv c3QgaXMgZm9yIHRoZSBwZXJmZWN0bHkgY29ycmVsYXRlZCBjYXNlIChjc3F1YXJlZD0xKSAq LworCQlwYWdlc19mZXRjaGVkID0gY2VpbChpbmRleFNlbGVjdGl2aXR5ICogKGRvdWJsZSkg YmFzZXJlbC0+cGFnZXMpOworCisJCWlmIChwYWdlc19mZXRjaGVkID4gMCkKKwkJeworCQkJ bWluX0lPX2Nvc3QgPSBzcGNfcmFuZG9tX3BhZ2VfY29zdDsKKwkJCWlmIChwYWdlc19mZXRj aGVkID4gMSkKKwkJCQltaW5fSU9fY29zdCArPSAocGFnZXNfZmV0Y2hlZCAtIDEpICogc3Bj X3NlcV9wYWdlX2Nvc3Q7CisJCX0KKwkJZWxzZQorCQkJbWluX0lPX2Nvc3QgPSAwOworCX0K KworCWlmIChwYXJ0aWFsX3BhdGgpCisJeworCQkvKgorCQkgKiBFc3RpbWF0ZSB0aGUgbnVt YmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMgcmVxdWlyZWQgdG8gc2NhbiBpbmRleC4gVXNlCisJ CSAqIHRoZSBudW1iZXIgb2YgaGVhcCBwYWdlcyBjb21wdXRlZCBjb25zaWRlcmluZyBoZWFw IGZldGNoZXMgd29uJ3QgYmUKKwkJICogc2VxdWVudGlhbCBhcyBmb3IgcGFyYWxsZWwgc2Nh bnMgdGhlIHBhZ2VzIGFyZSBhY2Nlc3NlZCBpbiByYW5kb20KKwkJICogb3JkZXIuCisJCSAq LworCQlwYXRoLT5pcGF0aC5wYXRoLnBhcmFsbGVsX3dvcmtlcnMgPSBjb21wdXRlX3BhcmFs bGVsX3dvcmtlcihiYXNlcmVsLAorCQkJCQkJCQkJCQkJCQkJICByYW5kX2hlYXBfcGFnZXMs CisJCQkJCQkJCQkJCQkJCQkgIGluZGV4X3BhZ2VzLAorCQkJCQkJCQkJCQkJCQkJICBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyKTsKKworCQkvKgorCQkgKiBGYWxsIG91dCBp ZiB3b3JrZXJzIGNhbid0IGJlIGFzc2lnbmVkIGZvciBwYXJhbGxlbCBzY2FuLCBiZWNhdXNl IGluCisJCSAqIHN1Y2ggYSBjYXNlIHRoaXMgcGF0aCB3aWxsIGJlIHJlamVjdGVkLiAgU28g dGhlcmUgaXMgbm8gYmVuZWZpdCBpbgorCQkgKiBkb2luZyBleHRyYSBjb21wdXRhdGlvbi4K KwkJICovCisJCWlmIChwYXRoLT5pcGF0aC5wYXRoLnBhcmFsbGVsX3dvcmtlcnMgPD0gMCkK KwkJCXJldHVybjsKKworCQlwYXRoLT5pcGF0aC5wYXRoLnBhcmFsbGVsX2F3YXJlID0gdHJ1 ZTsKKwl9CisKKwkvKgorCSAqIE5vdyBpbnRlcnBvbGF0ZSBiYXNlZCBvbiBlc3RpbWF0ZWQg aW5kZXggb3JkZXIgY29ycmVsYXRpb24gdG8gZ2V0IHRvdGFsCisJICogZGlzayBJL08gY29z dCBmb3IgbWFpbiB0YWJsZSBhY2Nlc3Nlcy4KKwkgKi8KKwljc3F1YXJlZCA9IGluZGV4Q29y cmVsYXRpb24gKiBpbmRleENvcnJlbGF0aW9uOworCisJcnVuX2Nvc3QgKz0gbWF4X0lPX2Nv c3QgKyBjc3F1YXJlZCAqIChtaW5fSU9fY29zdCAtIG1heF9JT19jb3N0KTsKKworCS8qCisJ ICogRXN0aW1hdGUgQ1BVIGNvc3RzIHBlciB0dXBsZS4KKwkgKgorCSAqIFdoYXQgd2Ugd2Fu dCBoZXJlIGlzIGNwdV90dXBsZV9jb3N0IHBsdXMgdGhlIGV2YWx1YXRpb24gY29zdHMgb2Yg YW55CisJICogcXVhbCBjbGF1c2VzIHRoYXQgd2UgaGF2ZSB0byBldmFsdWF0ZSBhcyBxcHF1 YWxzLgorCSAqLworCWNvc3RfcXVhbF9ldmFsKCZxcHF1YWxfY29zdCwgcXBxdWFscywgcm9v dCk7CisKKwlzdGFydHVwX2Nvc3QgKz0gcXBxdWFsX2Nvc3Quc3RhcnR1cDsKKwljcHVfcGVy X3R1cGxlID0gY3B1X3R1cGxlX2Nvc3QgKyBxcHF1YWxfY29zdC5wZXJfdHVwbGU7CisKKwlj cHVfcnVuX2Nvc3QgKz0gY3B1X3Blcl90dXBsZSAqIHR1cGxlc19mZXRjaGVkOworCisJLyog dGxpc3QgZXZhbCBjb3N0cyBhcmUgcGFpZCBwZXIgb3V0cHV0IHJvdywgbm90IHBlciB0dXBs ZSBzY2FubmVkICovCisJc3RhcnR1cF9jb3N0ICs9IHBhdGgtPmlwYXRoLnBhdGgucGF0aHRh cmdldC0+Y29zdC5zdGFydHVwOworCWNwdV9ydW5fY29zdCArPSBwYXRoLT5pcGF0aC5wYXRo LnBhdGh0YXJnZXQtPmNvc3QucGVyX3R1cGxlICogcGF0aC0+aXBhdGgucGF0aC5yb3dzOwor CisJLyogQWRqdXN0IGNvc3RpbmcgZm9yIHBhcmFsbGVsaXNtLCBpZiB1c2VkLiAqLworCWlm IChwYXRoLT5pcGF0aC5wYXRoLnBhcmFsbGVsX3dvcmtlcnMgPiAwKQorCXsKKwkJZG91Ymxl CQlwYXJhbGxlbF9kaXZpc29yID0gZ2V0X3BhcmFsbGVsX2Rpdmlzb3IoJnBhdGgtPmlwYXRo LnBhdGgpOworCisJCXBhdGgtPmlwYXRoLnBhdGgucm93cyA9IGNsYW1wX3Jvd19lc3QocGF0 aC0+aXBhdGgucGF0aC5yb3dzIC8gcGFyYWxsZWxfZGl2aXNvcik7CisKKwkJLyogVGhlIENQ VSBjb3N0IGlzIGRpdmlkZWQgYW1vbmcgYWxsIHRoZSB3b3JrZXJzLiAqLworCQljcHVfcnVu X2Nvc3QgLz0gcGFyYWxsZWxfZGl2aXNvcjsKKwl9CisKKwlydW5fY29zdCArPSBjcHVfcnVu X2Nvc3Q7CisKKwlwYXRoLT5pcGF0aC5wYXRoLnN0YXJ0dXBfY29zdCA9IHN0YXJ0dXBfY29z dDsKKwlwYXRoLT5pcGF0aC5wYXRoLnRvdGFsX2Nvc3QgPSBzdGFydHVwX2Nvc3QgKyBydW5f Y29zdDsKK30KKwogLyoKICAqIGV4dHJhY3Rfbm9uaW5kZXhfY29uZGl0aW9ucwogICoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IDZhOTNkNzY3YTUuLjM1 Njc5YTI1ZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhw YXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYwpAQCAt MTcsMTIgKzE3LDE2IEBACiAKICNpbmNsdWRlIDxtYXRoLmg+CiAKKyNpbmNsdWRlICJhY2Nl c3MvYnJpbl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgImFjY2Vzcy9yZWxhdGlvbi5oIgogI2lu Y2x1ZGUgImFjY2Vzcy9zdHJhdG51bS5oIgogI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3Bl cmF0b3IuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX29wZmFtaWx5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAj aW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvc3VwcG9ydG5v ZGVzLmgiCkBAIC0zMiwxMCArMzYsMTMgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGF0aHMu aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcHJlcC5oIgogI2luY2x1ZGUgIm9wdGltaXplci9y ZXN0cmljdGluZm8uaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgogCiAKK2Jvb2wJ CWVuYWJsZV9icmluc29ydCA9IHRydWU7CisKIC8qIFhYWCBzZWUgUGFydENvbGxNYXRjaGVz RXhwckNvbGwgKi8KICNkZWZpbmUgSW5kZXhDb2xsTWF0Y2hlc0V4cHJDb2xsKGlkeGNvbGxh dGlvbiwgZXhwcmNvbGxhdGlvbikgXAogCSgoaWR4Y29sbGF0aW9uKSA9PSBJbnZhbGlkT2lk IHx8IChpZHhjb2xsYXRpb24pID09IChleHByY29sbGF0aW9uKSkKQEAgLTExMDYsNiArMTEx MywxODIgQEAgYnVpbGRfaW5kZXhfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdElu Zm8gKnJlbCwKIAkJfQogCX0KIAorCS8qCisJICogSWYgdGhpcyBpcyBhIEJSSU4gaW5kZXgg d2l0aCBzdWl0YWJsZSBvcGNsYXNzIChtaW5tYXggb3Igc3VjaCksIHdlIG1heQorCSAqIHRy eSBkb2luZyBCUklOIHNvcnQuIEJSSU4gaW5kZXhlcyBhcmUgbm90IG9yZGVyZWQgYW5kIGFt Y2Fub3JkZXJieW9wCisJICogaXMgc2V0IHRvIGZhbHNlLCBzbyB3ZSBwcm9iYWJseSB3aWxs IG5lZWQgc29tZSBuZXcgb3BjbGFzcyBmbGFnIHRvCisJICogbWFyayBpbmRleGVzIHRoYXQg c3VwcG9ydCB0aGlzLgorCSAqLworCWlmIChlbmFibGVfYnJpbnNvcnQgJiYgcGF0aGtleXNf cG9zc2libHlfdXNlZnVsKQorCXsKKwkJTGlzdENlbGwgKmxjOworCQlSZWxhdGlvbiByZWwy ID0gcmVsYXRpb25fb3BlbihpbmRleC0+aW5kZXhvaWQsIE5vTG9jayk7CisJCWludAkJIGlk eDsKKworCQkvKgorCQkgKiBUcnkgZ2VuZXJhdGluZyBzb3J0ZWQgcGF0aHMgZm9yIGVhY2gg a2V5IHdpdGggdGhlIHJpZ2h0IG9wY2xhc3MuCisJCSAqLworCQlpZHggPSAtMTsKKwkJZm9y ZWFjaChsYywgaW5kZXgtPmluZGV4dGxpc3QpCisJCXsKKwkJCVRhcmdldEVudHJ5CSAgICpp bmRleHRsZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGMpOworCQkJQnJpblNvcnRQYXRo ICAgKmJwYXRoOworCQkJT2lkCQkJCXJhbmdlcHJvYzsKKwkJCUF0dHJOdW1iZXIJCWF0dG51 bTsKKworCQkJaWR4Kys7CisJCQlhdHRudW0gPSAoaWR4ICsgMSk7CisKKworCQkJLyogWFhY IGlnbm9yZSBub24tQlJJTiBpbmRleGVzICovCisJCQlpZiAocmVsMi0+cmRfcmVsLT5yZWxh bSAhPSBCUklOX0FNX09JRCkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIFhYWCBJ Z25vcmUga2V5cyBub3QgdXNpbmcgYW4gb3BjbGFzcyB3aXRoIHRoZSAicmFuZ2VzIiBwcm9j LgorCQkJICogRm9yIG5vdyB3ZSBvbmx5IGRvIHRoaXMgZm9yIHNvbWUgbWlubWF4IG9wY2xh c3NlcywgYnV0IGFkZGluZworCQkJICogaXQgdG8gYWxsIG1pbm1heCBpcyBzaW1wbGUsIGFu ZCBhZGRpbmcgaXQgdG8gbWlubWF4LW11bHRpCisJCQkgKiBzaG91bGQgbm90IGJlIHZlcnkg aGFyZC4KKwkJCSAqLworCQkJcmFuZ2Vwcm9jID0gaW5kZXhfZ2V0cHJvY2lkKHJlbDIsIGF0 dG51bSwgQlJJTl9QUk9DTlVNX1JBTkdFUyk7CisJCQlpZiAoIU9pZElzVmFsaWQocmFuZ2Vw cm9jKSkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIFhYWCBzdHVmZiBleHRyYWN0 ZWQgZnJvbSBidWlsZF9pbmRleF9wYXRoa2V5cywgZXhjZXB0IHRoYXQgd2UKKwkJCSAqIG9u bHkgZGVhbCB3aXRoIGEgc2luZ2xlIGluZGV4IGtleSAocHJvZHVjaW5nIGEgc2luZ2xlIHBh dGhrZXkpLAorCQkJICogc28gd2Ugb25seSBzb3J0IG9uIGEgc2luZ2xlIGNvbHVtbi4gSSBn dWVzcyB3ZSBjb3VsZCB1c2UgbW9yZQorCQkJICogaW5kZXgga2V5cyBhbmQgc29ydCBvbiBt b3JlIGV4cHJlc3Npb25zPyBXb3VsZCB0aGF0IG1lYW4gdGhlc2UKKwkJCSAqIGtleXMgbmVl ZCB0byBiZSByYXRoZXIgd2VsbCBjb3JyZWxhdGVkPyBJbiBhbnkgY2FzZSwgaXQgc2VlbXMK KwkJCSAqIHJhdGhlciBjb21wbGV4IHRvIGltcGxlbWVudCwgc28gSSBsZWF2ZSBpdCBhcyBh IHBvc3NpYmxlCisJCQkgKiBmdXR1cmUgaW1wcm92ZW1lbnQuCisJCQkgKgorCQkJICogWFhY IFRoaXMgY291bGQgYWxzbyB1c2UgdGhlIG90aGVyIEJSSU4ga2V5cyAoZXZlbiBmcm9tIG90 aGVyCisJCQkgKiBpbmRleGVzKSBpbiBhIGRpZmZlcmVudCB3YXkgLSB3ZSBtaWdodCB1c2Ug dGhlIG90aGVyIHJhbmdlcworCQkJICogdG8gcXVpY2tseSBlbGltaW5hdGUgc29tZSBvZiB0 aGUgY2h1bmtzLCBlc3NlbnRpYWxseSBsaWtlIGEKKwkJCSAqIGJpdG1hcCwgYnV0IG1heWJl IHdpdGhvdXQgdXNpbmcgdGhlIGJpdG1hcC4gT3Igd2UgbWlnaHQgdXNlCisJCQkgKiBvdGhl ciBpbmRleGVzIHRocm91Z2ggYml0bWFwcy4KKwkJCSAqCisJCQkgKiBYWFggVGhpcyBmYWtl cyBhIG51bWJlciBvZiBwYXJhbWV0ZXJzLCBiZWNhdXNlIHdlIGRvbid0IHN0b3JlCisJCQkg KiB0aGUgYnRyZWUgb3BjbGFzcyBpbiB0aGUgaW5kZXgsIGluc3RlYWQgd2UgdXNlIHRoZSBk ZWZhdWx0CisJCQkgKiBvbmUgZm9yIHRoZSBrZXkgZGF0YSB0eXBlLiBBbmQgQlJJTiBkb2Vz IG5vdCBhbGxvdyBzcGVjaWZ5aW5nCisJCQkgKgorCQkJICogWFhYIFdlIGRvbid0IGFkZCB0 aGUgcGF0aCB0byByZXN1bHQsIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcworCQkJICogc3Vw cG9zZWQgdG8gZ2VuZXJhdGUgSW5kZXhQYXRocy4gSW5zdGVhZCwgd2UganVzdCBhZGQgdGhl IHBhdGgKKwkJCSAqIHVzaW5nIGFkZF9wYXRoKCkuIFdlIHNob3VsZCBiZSBidWlsZGluZyB0 aGlzIGluIGEgZGlmZmVyZW50CisJCQkgKiBwbGFjZSwgcGVyaGFwcyBpbiBjcmVhdGVfaW5k ZXhfcGF0aHMoKSBvciBzby4KKwkJCSAqCisJCQkgKiBYWFggQnkgYnVpbGRpbmcgaXQgZWxz ZXdoZXJlLCB3ZSBjb3VsZCBhbHNvIGxldmVyYWdlIHRoZSBpbmRleAorCQkJICogcGF0aHMg d2UndmUgYnVpbHQgaGVyZSwgcGFydGljdWxhcmx5IHRoZSBiaXRtYXAgaW5kZXggcGF0aHMs CisJCQkgKiB3aGljaCB3ZSBjb3VsZCB1c2UgdG8gZWxpbWluYXRlIG1hbnkgb2YgdGhlIHJh bmdlcy4KKwkJCSAqCisJCQkgKiBYWFggV2UgZG9uJ3QgaGF2ZSBhbnkgZXhwbGljaXQgb3Jk ZXJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZQorCQkJICogQlJJTiBpbmRleCwgZS5nLiB3ZSBk b24ndCBoYXZlIEFTQy9ERVNDIGFuZCBOVUxMUyBGSVJTVC9MQVNULgorCQkJICogU28gdGhp cyBpcyBub3QgZW5jb2RlZCBpbiB0aGUgaW5kZXgsIGFuZCB3ZSBjYW4gc2F0aXNmeSBhbGwK KwkJCSAqIHRoZXNlIGNhc2VzIC0gYnV0IHdlIG5lZWQgdG8gYWRkIHBhdGhzIGZvciBlYWNo IGNvbWJpbmF0aW9uLgorCQkJICogSSB3b25kZXIgaWYgdGhlcmUncyBhIGJldHRlciB3YXkg dG8gZG8gdGhpcy4KKwkJCSAqLworCisJCQkvKiBBU0MgTlVMTFMgTEFTVCAqLworCQkJaW5k ZXhfcGF0aGtleXMgPSBidWlsZF9pbmRleF9wYXRoa2V5c19icmluKHJvb3QsIGluZGV4LCBp bmRleHRsZSwKKwkJCQkJCQkJCQkJCQkgICBpZHgsCisJCQkJCQkJCQkJCQkJICAgZmFsc2Us CS8qIHJldmVyc2Vfc29ydCAqLworCQkJCQkJCQkJCQkJCSAgIGZhbHNlKTsJLyogbnVsbHNf Zmlyc3QgKi8KKworCQkJdXNlZnVsX3BhdGhrZXlzID0gdHJ1bmNhdGVfdXNlbGVzc19wYXRo a2V5cyhyb290LCByZWwsCisJCQkJCQkJCQkJCQkJCWluZGV4X3BhdGhrZXlzKTsKKworCQkJ aWYgKHVzZWZ1bF9wYXRoa2V5cyAhPSBOSUwpCisJCQl7CisJCQkJYnBhdGggPSBjcmVhdGVf YnJpbnNvcnRfcGF0aChyb290LCBpbmRleCwKKwkJCQkJCQkJCQkJIGluZGV4X2NsYXVzZXMs CisJCQkJCQkJCQkJCSB1c2VmdWxfcGF0aGtleXMsCisJCQkJCQkJCQkJCSBGb3J3YXJkU2Nh bkRpcmVjdGlvbiwKKwkJCQkJCQkJCQkJIGluZGV4X29ubHlfc2NhbiwKKwkJCQkJCQkJCQkJ IG91dGVyX3JlbGlkcywKKwkJCQkJCQkJCQkJIGxvb3BfY291bnQsCisJCQkJCQkJCQkJCSBm YWxzZSk7CisKKwkJCQkvKiBjaGVhdCBhbmQgYWRkIGl0IGFueXdheSAqLworCQkJCWFkZF9w YXRoKHJlbCwgKFBhdGggKikgYnBhdGgpOworCQkJfQorCisJCQkvKiBERVNDIE5VTExTIExB U1QgKi8KKwkJCWluZGV4X3BhdGhrZXlzID0gYnVpbGRfaW5kZXhfcGF0aGtleXNfYnJpbihy b290LCBpbmRleCwgaW5kZXh0bGUsCisJCQkJCQkJCQkJCQkJICAgaWR4LAorCQkJCQkJCQkJ CQkJCSAgIHRydWUsCS8qIHJldmVyc2Vfc29ydCAqLworCQkJCQkJCQkJCQkJCSAgIGZhbHNl KTsJLyogbnVsbHNfZmlyc3QgKi8KKworCQkJdXNlZnVsX3BhdGhrZXlzID0gdHJ1bmNhdGVf dXNlbGVzc19wYXRoa2V5cyhyb290LCByZWwsCisJCQkJCQkJCQkJCQkJCWluZGV4X3BhdGhr ZXlzKTsKKworCQkJaWYgKHVzZWZ1bF9wYXRoa2V5cyAhPSBOSUwpCisJCQl7CisJCQkJYnBh dGggPSBjcmVhdGVfYnJpbnNvcnRfcGF0aChyb290LCBpbmRleCwKKwkJCQkJCQkJCQkJIGlu ZGV4X2NsYXVzZXMsCisJCQkJCQkJCQkJCSB1c2VmdWxfcGF0aGtleXMsCisJCQkJCQkJCQkJ CSBCYWNrd2FyZFNjYW5EaXJlY3Rpb24sCisJCQkJCQkJCQkJCSBpbmRleF9vbmx5X3NjYW4s CisJCQkJCQkJCQkJCSBvdXRlcl9yZWxpZHMsCisJCQkJCQkJCQkJCSBsb29wX2NvdW50LAor CQkJCQkJCQkJCQkgZmFsc2UpOworCisJCQkJLyogY2hlYXQgYW5kIGFkZCBpdCBhbnl3YXkg Ki8KKwkJCQlhZGRfcGF0aChyZWwsIChQYXRoICopIGJwYXRoKTsKKwkJCX0KKworCQkJLyog QVNDIE5VTExTIEZJUlNUICovCisJCQlpbmRleF9wYXRoa2V5cyA9IGJ1aWxkX2luZGV4X3Bh dGhrZXlzX2JyaW4ocm9vdCwgaW5kZXgsIGluZGV4dGxlLAorCQkJCQkJCQkJCQkJCSAgIGlk eCwKKwkJCQkJCQkJCQkJCQkgICBmYWxzZSwJLyogcmV2ZXJzZV9zb3J0ICovCisJCQkJCQkJ CQkJCQkJICAgdHJ1ZSk7CS8qIG51bGxzX2ZpcnN0ICovCisKKwkJCXVzZWZ1bF9wYXRoa2V5 cyA9IHRydW5jYXRlX3VzZWxlc3NfcGF0aGtleXMocm9vdCwgcmVsLAorCQkJCQkJCQkJCQkJ CQlpbmRleF9wYXRoa2V5cyk7CisKKwkJCWlmICh1c2VmdWxfcGF0aGtleXMgIT0gTklMKQor CQkJeworCQkJCWJwYXRoID0gY3JlYXRlX2JyaW5zb3J0X3BhdGgocm9vdCwgaW5kZXgsCisJ CQkJCQkJCQkJCSBpbmRleF9jbGF1c2VzLAorCQkJCQkJCQkJCQkgdXNlZnVsX3BhdGhrZXlz LAorCQkJCQkJCQkJCQkgRm9yd2FyZFNjYW5EaXJlY3Rpb24sCisJCQkJCQkJCQkJCSBpbmRl eF9vbmx5X3NjYW4sCisJCQkJCQkJCQkJCSBvdXRlcl9yZWxpZHMsCisJCQkJCQkJCQkJCSBs b29wX2NvdW50LAorCQkJCQkJCQkJCQkgZmFsc2UpOworCisJCQkJLyogY2hlYXQgYW5kIGFk ZCBpdCBhbnl3YXkgKi8KKwkJCQlhZGRfcGF0aChyZWwsIChQYXRoICopIGJwYXRoKTsKKwkJ CX0KKworCQkJLyogREVTQyBOVUxMUyBGSVJTVCAqLworCQkJaW5kZXhfcGF0aGtleXMgPSBi dWlsZF9pbmRleF9wYXRoa2V5c19icmluKHJvb3QsIGluZGV4LCBpbmRleHRsZSwKKwkJCQkJ CQkJCQkJCQkgICBpZHgsCisJCQkJCQkJCQkJCQkJICAgdHJ1ZSwJLyogcmV2ZXJzZV9zb3J0 ICovCisJCQkJCQkJCQkJCQkJICAgdHJ1ZSk7CS8qIG51bGxzX2ZpcnN0ICovCisKKwkJCXVz ZWZ1bF9wYXRoa2V5cyA9IHRydW5jYXRlX3VzZWxlc3NfcGF0aGtleXMocm9vdCwgcmVsLAor CQkJCQkJCQkJCQkJCQlpbmRleF9wYXRoa2V5cyk7CisKKwkJCWlmICh1c2VmdWxfcGF0aGtl eXMgIT0gTklMKQorCQkJeworCQkJCWJwYXRoID0gY3JlYXRlX2JyaW5zb3J0X3BhdGgocm9v dCwgaW5kZXgsCisJCQkJCQkJCQkJCSBpbmRleF9jbGF1c2VzLAorCQkJCQkJCQkJCQkgdXNl ZnVsX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkgQmFja3dhcmRTY2FuRGlyZWN0aW9uLAorCQkJ CQkJCQkJCQkgaW5kZXhfb25seV9zY2FuLAorCQkJCQkJCQkJCQkgb3V0ZXJfcmVsaWRzLAor CQkJCQkJCQkJCQkgbG9vcF9jb3VudCwKKwkJCQkJCQkJCQkJIGZhbHNlKTsKKworCQkJCS8q IGNoZWF0IGFuZCBhZGQgaXQgYW55d2F5ICovCisJCQkJYWRkX3BhdGgocmVsLCAoUGF0aCAq KSBicGF0aCk7CisJCQl9CisJCX0KKworCQlyZWxhdGlvbl9jbG9zZShyZWwyLCBOb0xvY2sp OworCX0KKwogCXJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9wYXRoa2V5cy5jCmluZGV4IGU1M2VhODQyMjQuLjNkNjZjMGQ4NzEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvcGF0aGtleXMuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1 ZGUgIm9wdGltaXplci9wYXRocy5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0Ym91 bmRzLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMv dHlwY2FjaGUuaCIKIAogCiBzdGF0aWMgYm9vbCBwYXRoa2V5X2lzX3JlZHVuZGFudChQYXRo S2V5ICpuZXdfcGF0aGtleSwgTGlzdCAqcGF0aGtleXMpOwpAQCAtNjIyLDYgKzYyMyw1NCBA QCBidWlsZF9pbmRleF9wYXRoa2V5cyhQbGFubmVySW5mbyAqcm9vdCwKIAlyZXR1cm4gcmV0 dmFsOwogfQogCisKK0xpc3QgKgorYnVpbGRfaW5kZXhfcGF0aGtleXNfYnJpbihQbGFubmVy SW5mbyAqcm9vdCwKKwkJCQkJCSAgSW5kZXhPcHRJbmZvICppbmRleCwKKwkJCQkJCSAgVGFy Z2V0RW50cnkgICp0bGUsCisJCQkJCQkgIGludCBpZHgsCisJCQkJCQkgIGJvb2wgcmV2ZXJz ZV9zb3J0LAorCQkJCQkJICBib29sIG51bGxzX2ZpcnN0KQoreworCVR5cGVDYWNoZUVudHJ5 ICp0eXBjYWNoZTsKKwlQYXRoS2V5CQkgICAqY3BhdGhrZXk7CisJT2lkCQkJCXNvcnRvcGZh bWlseTsKKworCS8qCisJICogR2V0IGRlZmF1bHQgYnRyZWUgb3BmYW1pbHkgZm9yIHRoZSB0 eXBlLCBleHRyYWN0ZWQgZnJvbSB0aGUKKwkgKiBlbnRyeSBpbiBpbmRleCB0YXJnZXRsaXN0 LgorCSAqCisJICogWFhYIElzIHRoZXJlIGEgYmV0dGVyIC8gbW9yZSBjb3JyZWN0IHdheSB0 byBkbyB0aGlzPworCSAqLworCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUoZXhwclR5 cGUoKE5vZGUgKikgdGxlLT5leHByKSwKKwkJCQkJCQkJIFRZUEVDQUNIRV9CVFJFRV9PUEZB TUlMWSk7CisJc29ydG9wZmFtaWx5ID0gdHlwY2FjaGUtPmJ0cmVlX29wZjsKKworCS8qCisJ ICogT0ssIHRyeSB0byBtYWtlIGEgY2Fub25pY2FsIHBhdGhrZXkgZm9yIHRoaXMgc29ydCBr ZXkuICBOb3RlIHdlJ3JlCisJICogdW5kZXJuZWF0aCBhbnkgb3V0ZXIgam9pbnMsIHNvIG51 bGxhYmxlX3JlbGlkcyBzaG91bGQgYmUgTlVMTC4KKwkgKi8KKwljcGF0aGtleSA9IG1ha2Vf cGF0aGtleV9mcm9tX3NvcnRpbmZvKHJvb3QsCisJCQkJCQkJCQkJICB0bGUtPmV4cHIsCisJ CQkJCQkJCQkJICBzb3J0b3BmYW1pbHksCisJCQkJCQkJCQkJICBpbmRleC0+b3BjaW50eXBl W2lkeF0sCisJCQkJCQkJCQkJICBpbmRleC0+aW5kZXhjb2xsYXRpb25zW2lkeF0sCisJCQkJ CQkJCQkJICByZXZlcnNlX3NvcnQsCisJCQkJCQkJCQkJICBudWxsc19maXJzdCwKKwkJCQkJ CQkJCQkgIDAsCisJCQkJCQkJCQkJICBpbmRleC0+cmVsLT5yZWxpZHMsCisJCQkJCQkJCQkJ ICBmYWxzZSk7CisKKwkvKgorCSAqIFRoZXJlIG1heSBiZSBubyBwYXRoa2V5IGlmIHdlIGhh dmVuJ3QgbWF0Y2hlZCBhbnkgc29ydGtleSwgaW4gd2hpY2gKKwkgKiBjYXNlIGlnbm9yZSBp dC4KKwkgKi8KKwlpZiAoIWNwYXRoa2V5KQorCQlyZXR1cm4gTklMOworCisJcmV0dXJuIGxp c3RfbWFrZTEoY3BhdGhrZXkpOworfQorCiAvKgogICogcGFydGtleV9pc19ib29sX2NvbnN0 YW50X2Zvcl9xdWVyeQogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBs YW4uYwppbmRleCBlYzczNzg5YmMyLi40ZWVhOTQyZGJmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0xOCw2ICsxOCw3IEBACiAKICNpbmNsdWRl IDxtYXRoLmg+CiAKKyNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nl c3Mvc3lzYXR0ci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xhc3MuaCIKICNpbmNsdWRl ICJmb3JlaWduL2Zkd2FwaS5oIgpAQCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUgInBhcnNl ci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydHBydW5lLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAK IAogLyoKQEAgLTEyNCw2ICsxMjYsOCBAQCBzdGF0aWMgU2FtcGxlU2NhbiAqY3JlYXRlX3Nh bXBsZXNjYW5fcGxhbihQbGFubmVySW5mbyAqcm9vdCwgUGF0aCAqYmVzdF9wYXRoLAogCQkJ CQkJCQkJCSAgTGlzdCAqdGxpc3QsIExpc3QgKnNjYW5fY2xhdXNlcyk7CiBzdGF0aWMgU2Nh biAqY3JlYXRlX2luZGV4c2Nhbl9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBJbmRleFBhdGgg KmJlc3RfcGF0aCwKIAkJCQkJCQkJICAgTGlzdCAqdGxpc3QsIExpc3QgKnNjYW5fY2xhdXNl cywgYm9vbCBpbmRleG9ubHkpOworc3RhdGljIEJyaW5Tb3J0ICpjcmVhdGVfYnJpbnNvcnRf cGxhbihQbGFubmVySW5mbyAqcm9vdCwgQnJpblNvcnRQYXRoICpiZXN0X3BhdGgsCisJCQkJ CQkJCQkgIExpc3QgKnRsaXN0LCBMaXN0ICpzY2FuX2NsYXVzZXMpOwogc3RhdGljIEJpdG1h cEhlYXBTY2FuICpjcmVhdGVfYml0bWFwX3NjYW5fcGxhbihQbGFubmVySW5mbyAqcm9vdCwK IAkJCQkJCQkJCQkJICAgQml0bWFwSGVhcFBhdGggKmJlc3RfcGF0aCwKIAkJCQkJCQkJCQkJ ICAgTGlzdCAqdGxpc3QsIExpc3QgKnNjYW5fY2xhdXNlcyk7CkBAIC0xOTEsNiArMTk1LDkg QEAgc3RhdGljIEluZGV4T25seVNjYW4gKm1ha2VfaW5kZXhvbmx5c2NhbihMaXN0ICpxcHRs aXN0LCBMaXN0ICpxcHF1YWwsCiAJCQkJCQkJCQkJIExpc3QgKmluZGV4b3JkZXJieSwKIAkJ CQkJCQkJCQkgTGlzdCAqaW5kZXh0bGlzdCwKIAkJCQkJCQkJCQkgU2NhbkRpcmVjdGlvbiBp bmRleHNjYW5kaXIpOworc3RhdGljIEJyaW5Tb3J0ICptYWtlX2JyaW5zb3J0KExpc3QgKnFw dGxpc3QsIExpc3QgKnFwcXVhbCwgSW5kZXggc2NhbnJlbGlkLAorCQkJCQkJCSAgIE9pZCBp bmRleGlkLCBMaXN0ICppbmRleHF1YWwsIExpc3QgKmluZGV4cXVhbG9yaWcsCisJCQkJCQkJ ICAgU2NhbkRpcmVjdGlvbiBpbmRleHNjYW5kaXIpOwogc3RhdGljIEJpdG1hcEluZGV4U2Nh biAqbWFrZV9iaXRtYXBfaW5kZXhzY2FuKEluZGV4IHNjYW5yZWxpZCwgT2lkIGluZGV4aWQs CiAJCQkJCQkJCQkJCSAgTGlzdCAqaW5kZXhxdWFsLAogCQkJCQkJCQkJCQkgIExpc3QgKmlu ZGV4cXVhbG9yaWcpOwpAQCAtNDEwLDYgKzQxNyw5IEBAIGNyZWF0ZV9wbGFuX3JlY3Vyc2Uo UGxhbm5lckluZm8gKnJvb3QsIFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCQljYXNl IFRfQ3VzdG9tU2NhbjoKIAkJCXBsYW4gPSBjcmVhdGVfc2Nhbl9wbGFuKHJvb3QsIGJlc3Rf cGF0aCwgZmxhZ3MpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9CcmluU29ydDoKKwkJCXBsYW4g PSBjcmVhdGVfc2Nhbl9wbGFuKHJvb3QsIGJlc3RfcGF0aCwgZmxhZ3MpOworCQkJYnJlYWs7 CiAJCWNhc2UgVF9IYXNoSm9pbjoKIAkJY2FzZSBUX01lcmdlSm9pbjoKIAkJY2FzZSBUX05l c3RMb29wOgpAQCAtNzc2LDYgKzc4NiwxMyBAQCBjcmVhdGVfc2Nhbl9wbGFuKFBsYW5uZXJJ bmZvICpyb290LCBQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAkJCQkJCQkJCQkJCSAg IHNjYW5fY2xhdXNlcyk7CiAJCQlicmVhazsKIAorCQljYXNlIFRfQnJpblNvcnQ6CisJCQlw bGFuID0gKFBsYW4gKikgY3JlYXRlX2JyaW5zb3J0X3BsYW4ocm9vdCwKKwkJCQkJCQkJCQkJ CSAoQnJpblNvcnRQYXRoICopIGJlc3RfcGF0aCwKKwkJCQkJCQkJCQkJCSB0bGlzdCwKKwkJ CQkJCQkJCQkJCSBzY2FuX2NsYXVzZXMpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQp IGJlc3RfcGF0aC0+cGF0aHR5cGUpOwpAQCAtMzE3MCw2ICszMTg3LDIyMyBAQCBjcmVhdGVf aW5kZXhzY2FuX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsCiAJcmV0dXJuIHNjYW5fcGxhbjsK IH0KIAorLyoKKyAqIGNyZWF0ZV9icmluc29ydF9wbGFuCisgKgkgIFJldHVybnMgYSBicmlu c29ydCBwbGFuIGZvciB0aGUgYmFzZSByZWxhdGlvbiBzY2FubmVkIGJ5ICdiZXN0X3BhdGgn CisgKgkgIHdpdGggcmVzdHJpY3Rpb24gY2xhdXNlcyAnc2Nhbl9jbGF1c2VzJyBhbmQgdGFy Z2V0bGlzdCAndGxpc3QnLgorICoKKyAqIFRoaXMgaXMgbW9zdGx5IGEgc2xpZ2hseSBzaW1w bGlmaWVkIHZlcnNpb24gb2YgY3JlYXRlX2luZGV4c2Nhbl9wbGFuLCB3aXRoCisgKiB0aGUg dW5lY2Vzc2FyeSBwYXJ0cyByZW1vdmVkICh3ZSBkb24ndCBzdXBwb3J0IGluZGV4b25seSBz Y2Fucywgb3IgcmVvcmRlcmluZworICogYW5kIHNpbWlsYXIgc3R1ZmYpLgorICovCitzdGF0 aWMgQnJpblNvcnQgKgorY3JlYXRlX2JyaW5zb3J0X3BsYW4oUGxhbm5lckluZm8gKnJvb3Qs CisJCQkJCSBCcmluU29ydFBhdGggKmJlc3RfcGF0aCwKKwkJCQkJIExpc3QgKnRsaXN0LAor CQkJCQkgTGlzdCAqc2Nhbl9jbGF1c2VzKQoreworCUJyaW5Tb3J0ICAgKmJyaW5zb3J0X3Bs YW47CisJTGlzdAkgICAqaW5kZXhjbGF1c2VzID0gYmVzdF9wYXRoLT5pcGF0aC5pbmRleGNs YXVzZXM7CisJSW5kZXgJCWJhc2VyZWxpZCA9IGJlc3RfcGF0aC0+aXBhdGgucGF0aC5wYXJl bnQtPnJlbGlkOworCUluZGV4T3B0SW5mbyAqaW5kZXhpbmZvID0gYmVzdF9wYXRoLT5pcGF0 aC5pbmRleGluZm87CisJT2lkCQkJaW5kZXhvaWQgPSBpbmRleGluZm8tPmluZGV4b2lkOwor CVJlbGF0aW9uCWluZGV4UmVsOworCUxpc3QJICAgKmluZGV4cHJzOworCUxpc3QJICAgKnFw cXVhbDsKKwlMaXN0CSAgICpzdHJpcHBlZF9pbmRleHF1YWxzOworCUxpc3QJICAgKmZpeGVk X2luZGV4cXVhbHM7CisJTGlzdENlbGwgICAqbDsKKworCUxpc3QJICAgKnBhdGhrZXlzID0g YmVzdF9wYXRoLT5pcGF0aC5wYXRoLnBhdGhrZXlzOworCisJLyogaXQgc2hvdWxkIGJlIGEg YmFzZSByZWwuLi4gKi8KKwlBc3NlcnQoYmFzZXJlbGlkID4gMCk7CisJQXNzZXJ0KGJlc3Rf cGF0aC0+aXBhdGgucGF0aC5wYXJlbnQtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKTsKKwor CS8qCisJICogRXh0cmFjdCB0aGUgaW5kZXggcXVhbCBleHByZXNzaW9ucyAoc3RyaXBwZWQg b2YgUmVzdHJpY3RJbmZvcykgZnJvbSB0aGUKKwkgKiBJbmRleENsYXVzZXMgbGlzdCwgYW5k IHByZXBhcmUgYSBjb3B5IHdpdGggaW5kZXggVmFycyBzdWJzdGl0dXRlZCBmb3IKKwkgKiB0 YWJsZSBWYXJzLiAgKFRoaXMgc3RlcCBhbHNvIGRvZXMgcmVwbGFjZV9uZXN0bG9vcF9wYXJh bXMgb24gdGhlCisJICogZml4ZWRfaW5kZXhxdWFscy4pCisJICovCisJZml4X2luZGV4cXVh bF9yZWZlcmVuY2VzKHJvb3QsICZiZXN0X3BhdGgtPmlwYXRoLAorCQkJCQkJCSAmc3RyaXBw ZWRfaW5kZXhxdWFscywKKwkJCQkJCQkgJmZpeGVkX2luZGV4cXVhbHMpOworCisJLyoKKwkg KiBUaGUgcXBxdWFsIGxpc3QgbXVzdCBjb250YWluIGFsbCByZXN0cmljdGlvbnMgbm90IGF1 dG9tYXRpY2FsbHkgaGFuZGxlZAorCSAqIGJ5IHRoZSBpbmRleCwgb3RoZXIgdGhhbiBwc2V1 ZG9jb25zdGFudCBjbGF1c2VzIHdoaWNoIHdpbGwgYmUgaGFuZGxlZAorCSAqIGJ5IGEgc2Vw YXJhdGUgZ2F0aW5nIHBsYW4gbm9kZS4gIEFsbCB0aGUgcHJlZGljYXRlcyBpbiB0aGUgaW5k ZXhxdWFscworCSAqIHdpbGwgYmUgY2hlY2tlZCAoZWl0aGVyIGJ5IHRoZSBpbmRleCBpdHNl bGYsIG9yIGJ5IG5vZGVJbmRleHNjYW4uYyksCisJICogYnV0IGlmIHRoZXJlIGFyZSBhbnkg InNwZWNpYWwiIG9wZXJhdG9ycyBpbnZvbHZlZCB0aGVuIHRoZXkgbXVzdCBiZQorCSAqIGlu Y2x1ZGVkIGluIHFwcXVhbC4gIFRoZSB1cHNob3QgaXMgdGhhdCBxcHF1YWwgbXVzdCBjb250 YWluCisJICogc2Nhbl9jbGF1c2VzIG1pbnVzIHdoYXRldmVyIGFwcGVhcnMgaW4gaW5kZXhx dWFscy4KKwkgKgorCSAqIGlzX3JlZHVuZGFudF93aXRoX2luZGV4Y2xhdXNlcygpIGRldGVj dHMgY2FzZXMgd2hlcmUgYSBzY2FuIGNsYXVzZSBpcworCSAqIHByZXNlbnQgaW4gdGhlIGlu ZGV4Y2xhdXNlcyBsaXN0IG9yIGlzIGdlbmVyYXRlZCBmcm9tIHRoZSBzYW1lCisJICogRXF1 aXZhbGVuY2VDbGFzcyBhcyBzb21lIGluZGV4Y2xhdXNlLCBhbmQgaXMgdGhlcmVmb3JlIHJl ZHVuZGFudCB3aXRoCisJICogaXQsIHRob3VnaCBub3QgZXF1YWwuICAoVGhlIGxhdHRlciBo YXBwZW5zIHdoZW4gaW5keHBhdGguYyBwcmVmZXJzIGEKKwkgKiBkaWZmZXJlbnQgZGVyaXZl ZCBlcXVhbGl0eSB0aGFuIHdoYXQgZ2VuZXJhdGVfam9pbl9pbXBsaWVkX2VxdWFsaXRpZXMK KwkgKiBwaWNrZWQgZm9yIGEgcGFyYW1ldGVyaXplZCBzY2FuJ3MgcHBpX2NsYXVzZXMuKSAg Tm90ZSB0aGF0IGl0IHdpbGwgbm90CisJICogbWF0Y2ggdG8gbG9zc3kgaW5kZXggY2xhdXNl cywgd2hpY2ggaXMgY3JpdGljYWwgYmVjYXVzZSB3ZSBoYXZlIHRvCisJICogaW5jbHVkZSB0 aGUgb3JpZ2luYWwgY2xhdXNlIGluIHFwcXVhbCBpbiB0aGF0IGNhc2UuCisJICoKKwkgKiBJ biBzb21lIHNpdHVhdGlvbnMgKHBhcnRpY3VsYXJseSB3aXRoIE9SJ2QgaW5kZXggY29uZGl0 aW9ucykgd2UgbWF5CisJICogaGF2ZSBzY2FuX2NsYXVzZXMgdGhhdCBhcmUgbm90IGVxdWFs IHRvLCBidXQgYXJlIGxvZ2ljYWxseSBpbXBsaWVkIGJ5LAorCSAqIHRoZSBpbmRleCBxdWFs czsgc28gd2UgYWxzbyB0cnkgYSBwcmVkaWNhdGVfaW1wbGllZF9ieSgpIGNoZWNrIHRvIHNl ZQorCSAqIGlmIHdlIGNhbiBkaXNjYXJkIHF1YWxzIHRoYXQgd2F5LiAgKHByZWRpY2F0ZV9p bXBsaWVkX2J5IGFzc3VtZXMgaXRzCisJICogZmlyc3QgaW5wdXQgY29udGFpbnMgb25seSBp bW11dGFibGUgZnVuY3Rpb25zLCBzbyB3ZSBoYXZlIHRvIGNoZWNrCisJICogdGhhdC4pCisJ ICoKKwkgKiBOb3RlOiBpZiB5b3UgY2hhbmdlIHRoaXMgYml0IG9mIGNvZGUgeW91IHNob3Vs ZCBhbHNvIGxvb2sgYXQKKwkgKiBleHRyYWN0X25vbmluZGV4X2NvbmRpdGlvbnMoKSBpbiBj b3N0c2l6ZS5jLgorCSAqLworCXFwcXVhbCA9IE5JTDsKKwlmb3JlYWNoKGwsIHNjYW5fY2xh dXNlcykKKwl7CisJCVJlc3RyaWN0SW5mbyAqcmluZm8gPSBsZmlyc3Rfbm9kZShSZXN0cmlj dEluZm8sIGwpOworCisJCWlmIChyaW5mby0+cHNldWRvY29uc3RhbnQpCisJCQljb250aW51 ZTsJCQkvKiB3ZSBtYXkgZHJvcCBwc2V1ZG9jb25zdGFudHMgaGVyZSAqLworCQlpZiAoaXNf cmVkdW5kYW50X3dpdGhfaW5kZXhjbGF1c2VzKHJpbmZvLCBpbmRleGNsYXVzZXMpKQorCQkJ Y29udGludWU7CQkJLyogZHVwIG9yIGRlcml2ZWQgZnJvbSBzYW1lIEVxdWl2YWxlbmNlQ2xh c3MgKi8KKwkJaWYgKCFjb250YWluX211dGFibGVfZnVuY3Rpb25zKChOb2RlICopIHJpbmZv LT5jbGF1c2UpICYmCisJCQlwcmVkaWNhdGVfaW1wbGllZF9ieShsaXN0X21ha2UxKHJpbmZv LT5jbGF1c2UpLCBzdHJpcHBlZF9pbmRleHF1YWxzLAorCQkJCQkJCQkgZmFsc2UpKQorCQkJ Y29udGludWU7CQkJLyogcHJvdmFibHkgaW1wbGllZCBieSBpbmRleHF1YWxzICovCisJCXFw cXVhbCA9IGxhcHBlbmQocXBxdWFsLCByaW5mbyk7CisJfQorCisJLyogU29ydCBjbGF1c2Vz IGludG8gYmVzdCBleGVjdXRpb24gb3JkZXIgKi8KKwlxcHF1YWwgPSBvcmRlcl9xdWFsX2Ns YXVzZXMocm9vdCwgcXBxdWFsKTsKKworCS8qIFJlZHVjZSBSZXN0cmljdEluZm8gbGlzdCB0 byBiYXJlIGV4cHJlc3Npb25zOyBpZ25vcmUgcHNldWRvY29uc3RhbnRzICovCisJcXBxdWFs ID0gZXh0cmFjdF9hY3R1YWxfY2xhdXNlcyhxcHF1YWwsIGZhbHNlKTsKKworCS8qCisJICog V2UgaGF2ZSB0byByZXBsYWNlIGFueSBvdXRlci1yZWxhdGlvbiB2YXJpYWJsZXMgd2l0aCBu ZXN0bG9vcCBwYXJhbXMgaW4KKwkgKiB0aGUgaW5kZXhxdWFsb3JpZywgcXBxdWFsLCBhbmQg aW5kZXhvcmRlcmJ5b3JpZyBleHByZXNzaW9ucy4gIEEgYml0CisJICogYW5ub3lpbmcgdG8g aGF2ZSB0byBkbyB0aGlzIHNlcGFyYXRlbHkgZnJvbSB0aGUgcHJvY2Vzc2luZyBpbgorCSAq IGZpeF9pbmRleHF1YWxfcmVmZXJlbmNlcyAtLS0gcmV0aGluayB0aGlzIHdoZW4gZ2VuZXJh bGl6aW5nIHRoZSBpbm5lcgorCSAqIGluZGV4c2NhbiBzdXBwb3J0LiAgQnV0IG5vdGUgd2Ug Y2FuJ3QgcmVhbGx5IGRvIHRoaXMgZWFybGllciBiZWNhdXNlCisJICogaXQnZCBicmVhayB0 aGUgY29tcGFyaXNvbnMgdG8gcHJlZGljYXRlcyBhYm92ZSAuLi4gKG9yIHdvdWxkIGl0PyAg VGhvc2UKKwkgKiB3b3VsZG4ndCBoYXZlIG91dGVyIHJlZnMpCisJICovCisJaWYgKGJlc3Rf cGF0aC0+aXBhdGgucGF0aC5wYXJhbV9pbmZvKQorCXsKKwkJc3RyaXBwZWRfaW5kZXhxdWFs cyA9IChMaXN0ICopCisJCQlyZXBsYWNlX25lc3Rsb29wX3BhcmFtcyhyb290LCAoTm9kZSAq KSBzdHJpcHBlZF9pbmRleHF1YWxzKTsKKwkJcXBxdWFsID0gKExpc3QgKikKKwkJCXJlcGxh Y2VfbmVzdGxvb3BfcGFyYW1zKHJvb3QsIChOb2RlICopIHFwcXVhbCk7CisJfQorCisJLyog RmluYWxseSByZWFkeSB0byBidWlsZCB0aGUgcGxhbiBub2RlICovCisJYnJpbnNvcnRfcGxh biA9IG1ha2VfYnJpbnNvcnQodGxpc3QsCisJCQkJCQkJCSAgcXBxdWFsLAorCQkJCQkJCQkg IGJhc2VyZWxpZCwKKwkJCQkJCQkJICBpbmRleG9pZCwKKwkJCQkJCQkJICBmaXhlZF9pbmRl eHF1YWxzLAorCQkJCQkJCQkgIHN0cmlwcGVkX2luZGV4cXVhbHMsCisJCQkJCQkJCSAgYmVz dF9wYXRoLT5pcGF0aC5pbmRleHNjYW5kaXIpOworCisJQXNzZXJ0KGxpc3RfbGVuZ3RoKHBh dGhrZXlzKSA9PSAxKTsKKworCWlmIChwYXRoa2V5cyAhPSBOSUwpCisJeworCQkvKgorCQkg KiBDb21wdXRlIHNvcnQgY29sdW1uIGluZm8sIGFuZCBhZGp1c3QgdGhlIEFwcGVuZCdzIHRs aXN0IGFzIG5lZWRlZC4KKwkJICogQmVjYXVzZSB3ZSBwYXNzIGFkanVzdF90bGlzdF9pbl9w bGFjZSA9IHRydWUsIHdlIG1heSBpZ25vcmUgdGhlCisJCSAqIGZ1bmN0aW9uIHJlc3VsdDsg aXQgbXVzdCBiZSB0aGUgc2FtZSBwbGFuIG5vZGUuICBIb3dldmVyLCB3ZSB0aGVuCisJCSAq IG5lZWQgdG8gZGV0ZWN0IHdoZXRoZXIgYW55IHRsaXN0IGVudHJpZXMgd2VyZSBhZGRlZC4K KwkJICovCisJCSh2b2lkKSBwcmVwYXJlX3NvcnRfZnJvbV9wYXRoa2V5cygoUGxhbiAqKSBi cmluc29ydF9wbGFuLCBwYXRoa2V5cywKKwkJCQkJCQkJCQkgIGJlc3RfcGF0aC0+aXBhdGgu cGF0aC5wYXJlbnQtPnJlbGlkcywKKwkJCQkJCQkJCQkgIE5VTEwsCisJCQkJCQkJCQkJICB0 cnVlLAorCQkJCQkJCQkJCSAgJmJyaW5zb3J0X3BsYW4tPm51bUNvbHMsCisJCQkJCQkJCQkJ ICAmYnJpbnNvcnRfcGxhbi0+c29ydENvbElkeCwKKwkJCQkJCQkJCQkgICZicmluc29ydF9w bGFuLT5zb3J0T3BlcmF0b3JzLAorCQkJCQkJCQkJCSAgJmJyaW5zb3J0X3BsYW4tPmNvbGxh dGlvbnMsCisJCQkJCQkJCQkJICAmYnJpbnNvcnRfcGxhbi0+bnVsbHNGaXJzdCk7CisJCS8v dGxpc3Rfd2FzX2NoYW5nZWQgPSAob3JpZ190bGlzdF9sZW5ndGggIT0gbGlzdF9sZW5ndGgo cGxhbi0+cGxhbi50YXJnZXRsaXN0KSk7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgYnJpbnNv cnRfcGxhbi0+bnVtQ29sczsgaSsrKQorCQkJZWxvZyhERUJVRzEsICIlZCA9PiAlZCAlZCAl ZCAlZCIsIGksCisJCQkJIGJyaW5zb3J0X3BsYW4tPnNvcnRDb2xJZHhbaV0sCisJCQkJIGJy aW5zb3J0X3BsYW4tPnNvcnRPcGVyYXRvcnNbaV0sCisJCQkJIGJyaW5zb3J0X3BsYW4tPmNv bGxhdGlvbnNbaV0sCisJCQkJIGJyaW5zb3J0X3BsYW4tPm51bGxzRmlyc3RbaV0pOworCX0K KworCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJmJyaW5zb3J0X3BsYW4tPnNjYW4ucGxhbiwg JmJlc3RfcGF0aC0+aXBhdGgucGF0aCk7CisKKwkvKgorCSAqIE5vdyBsb29rdXAgdGhlIGlu ZGV4IGF0dG51bXMgZm9yIHNvcnQgZXhwcmVzc2lvbnMuCisJICoKKwkgKiBEZXRlcm1pbmUg aW5kZXggYXR0bnVtIHdlJ3JlIGludGVyZXN0ZWQgaW4uIHNvcnRDb2xJZHggaXMgYW4gaW5k ZXggaW50bworCSAqIHRoZSB0YXJnZXQgbGlzdCwgc28gd2UgbmVlZCB0byBncmFiIHRoZSBl eHByZXNzaW9uIGFuZCB0cnkgdG8gbWF0Y2ggaXQKKwkgKiB0byB0aGUgaW5kZXguIFRoZSBl eHByZXNzaW9uIG1heSBiZSBlaXRoZXIgcGxhaW4gVmFyIChpbiB3aGljaCBjYXNlIHdlCisJ ICogbWF0Y2ggaXQgdG8gaW5ka2V5cyB2YWx1ZSksIG9yIGFuIGV4cHJlc3Npb24gKGluIHdo aWNoIGNhc2Ugd2UgbWF0Y2ggaXQKKwkgKiB0byBpbmRleHBycykuCisJICoKKwkgKiBYWFgg V2UndmUgYWxyZWFkeSBtYXRjaGVkIHRoZSBzb3J0IGtleSB0byB0aGUgaW5kZXgsIG90aGVy d2lzZSB3ZSB3b3VsZAorCSAqIG5vdCBnZXQgaGVyZS4gU28gbWF5YmUgd2UgY291bGQganVz dCByZW1lbWJlciBpdCwgc29tZWhvdz8gQWxzbywgd2UgbXVzdAorCSAqIGtlZXAgdGhlIGRl Y2lzaW9ucyBtYWRlIGluIHRoZXNlIHR3byBwbGFjZXMgY29uc2lzdGVudCAtIGlmIHdlIGZh aWwgdG8KKwkgKiBtYXRjaCBhIHNvcnQga2V5IGhlcmUgKHdoaWNoIHdlIG1hdGNoZWQgYmVm b3JlKSwgd2UgaGF2ZSBhIHByb2JsZW0uCisJICoKKwkgKiBGSVhNRSBsb2NrIG1vZGUgZm9y IGluZGV4X29wZW4KKwkgKi8KKwlpbmRleFJlbCA9IGluZGV4X29wZW4oaW5kZXhvaWQsIE5v TG9jayk7CisJaW5kZXhwcnMgPSBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoaW5kZXhS ZWwpOworCisJYnJpbnNvcnRfcGxhbi0+YXR0bnVtcworCQk9IChBdHRyTnVtYmVyICopIHBh bGxvYzAoc2l6ZW9mKEF0dHJOdW1iZXIpICogYnJpbnNvcnRfcGxhbi0+bnVtQ29scyk7CisK Kwlmb3IgKGludCBpID0gMDsgaSA8IGJyaW5zb3J0X3BsYW4tPm51bUNvbHM7IGkrKykKKwl7 CisJCVRhcmdldEVudHJ5ICp0bGU7CisJCWludAkJCWV4cHJpZHggPSAwOwkvKiBleHByZXNz aW9uIGluZGV4ICovCisKKwkJdGxlID0gbGlzdF9udGgoYnJpbnNvcnRfcGxhbi0+c2Nhbi5w bGFuLnRhcmdldGxpc3QsCisJCQkJCSAgIGJyaW5zb3J0X3BsYW4tPnNvcnRDb2xJZHhbaV0g LSAxKTsJLyogRklYTUUgcHJvcGVyIGNvbGlkeCAqLworCisJCS8qIGZpbmQgdGhlIGluZGV4 IGtleSBtYXRjaGluZyB0aGUgZXhwcmVzc2lvbiBmcm9tIHRoZSB0YXJnZXQgZW50cnkgKi8K KwkJZm9yIChpbnQgaiA9IDA7IGogPCBpbmRleFJlbC0+cmRfaW5kZXgtPmluZG5hdHRzOyBq KyspCisJCXsKKwkJCUF0dHJOdW1iZXIgaW5ka2V5ID0gaW5kZXhSZWwtPnJkX2luZGV4LT5p bmRrZXkudmFsdWVzW2pdOworCisJCQlpZiAoQXR0cmlidXRlTnVtYmVySXNWYWxpZChpbmRr ZXkpKQorCQkJeworCQkJCVZhciAqdmFyID0gKFZhciAqKSB0bGUtPmV4cHI7CisKKwkJCQlp ZiAoIUlzQSh0bGUtPmV4cHIsIFZhcikpCisJCQkJCWNvbnRpbnVlOworCisJCQkJaWYgKHZh ci0+dmFyYXR0bm8gPT0gaW5ka2V5KQorCQkJCXsKKwkJCQkJYnJpbnNvcnRfcGxhbi0+YXR0 bnVtc1tpXSA9IChqICsgMSk7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWVsc2UK KwkJCXsKKwkJCQlOb2RlICpleHByID0gKE5vZGUgKikgbGlzdF9udGgoaW5kZXhwcnMsIGV4 cHJpZHgpOworCisJCQkJaWYgKGVxdWFsKGV4cHIsIHRsZS0+ZXhwcikpCisJCQkJeworCQkJ CQlicmluc29ydF9wbGFuLT5hdHRudW1zW2ldID0gKGogKyAxKTsKKwkJCQkJYnJlYWs7CisJ CQkJfQorCisJCQkJZXhwcmlkeCsrOworCQkJfQorCQl9CisJfQorCisJaW5kZXhfY2xvc2Uo aW5kZXhSZWwsIE5vTG9jayk7CisKKwlyZXR1cm4gYnJpbnNvcnRfcGxhbjsKK30KKwogLyoK ICAqIGNyZWF0ZV9iaXRtYXBfc2Nhbl9wbGFuCiAgKgkgIFJldHVybnMgYSBiaXRtYXAgc2Nh biBwbGFuIGZvciB0aGUgYmFzZSByZWxhdGlvbiBzY2FubmVkIGJ5ICdiZXN0X3BhdGgnCkBA IC01NTI0LDYgKzU3NTgsMzEgQEAgbWFrZV9pbmRleHNjYW4oTGlzdCAqcXB0bGlzdCwKIAly ZXR1cm4gbm9kZTsKIH0KIAorc3RhdGljIEJyaW5Tb3J0ICoKK21ha2VfYnJpbnNvcnQoTGlz dCAqcXB0bGlzdCwKKwkJCSAgIExpc3QgKnFwcXVhbCwKKwkJCSAgIEluZGV4IHNjYW5yZWxp ZCwKKwkJCSAgIE9pZCBpbmRleGlkLAorCQkJICAgTGlzdCAqaW5kZXhxdWFsLAorCQkJICAg TGlzdCAqaW5kZXhxdWFsb3JpZywKKwkJCSAgIFNjYW5EaXJlY3Rpb24gaW5kZXhzY2FuZGly KQoreworCUJyaW5Tb3J0ICAqbm9kZSA9IG1ha2VOb2RlKEJyaW5Tb3J0KTsKKwlQbGFuCSAg ICpwbGFuID0gJm5vZGUtPnNjYW4ucGxhbjsKKworCXBsYW4tPnRhcmdldGxpc3QgPSBxcHRs aXN0OworCXBsYW4tPnF1YWwgPSBxcHF1YWw7CisJcGxhbi0+bGVmdHRyZWUgPSBOVUxMOwor CXBsYW4tPnJpZ2h0dHJlZSA9IE5VTEw7CisJbm9kZS0+c2Nhbi5zY2FucmVsaWQgPSBzY2Fu cmVsaWQ7CisJbm9kZS0+aW5kZXhpZCA9IGluZGV4aWQ7CisJbm9kZS0+aW5kZXhxdWFsID0g aW5kZXhxdWFsOworCW5vZGUtPmluZGV4cXVhbG9yaWcgPSBpbmRleHF1YWxvcmlnOworCW5v ZGUtPmluZGV4b3JkZXJkaXIgPSBpbmRleHNjYW5kaXI7CisKKwlyZXR1cm4gbm9kZTsKK30K Kwogc3RhdGljIEluZGV4T25seVNjYW4gKgogbWFrZV9pbmRleG9ubHlzY2FuKExpc3QgKnFw dGxpc3QsCiAJCQkJICAgTGlzdCAqcXBxdWFsLApAQCAtNzE1OCw2ICs3NDE3LDcgQEAgaXNf cHJvamVjdGlvbl9jYXBhYmxlX3BhdGgoUGF0aCAqcGF0aCkKIAkJY2FzZSBUX01lbW9pemU6 CiAJCWNhc2UgVF9Tb3J0OgogCQljYXNlIFRfSW5jcmVtZW50YWxTb3J0OgorCQljYXNlIFRf QnJpblNvcnQ6CiAJCWNhc2UgVF9VbmlxdWU6CiAJCWNhc2UgVF9TZXRPcDoKIAkJY2FzZSBU X0xvY2tSb3dzOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0 cmVmcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IGM2 Mzc1OGNiMmIuLmIxOTgxMTljOWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3NldHJlZnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRy ZWZzLmMKQEAgLTY4MSw2ICs2ODEsMjUgQEAgc2V0X3BsYW5fcmVmcyhQbGFubmVySW5mbyAq cm9vdCwgUGxhbiAqcGxhbiwgaW50IHJ0b2Zmc2V0KQogCQkJCXJldHVybiBzZXRfaW5kZXhv bmx5c2Nhbl9yZWZlcmVuY2VzKHJvb3QsIHNwbGFuLCBydG9mZnNldCk7CiAJCQl9CiAJCQli cmVhazsKKwkJY2FzZSBUX0JyaW5Tb3J0OgorCQkJeworCQkJCUJyaW5Tb3J0ICAqc3BsYW4g PSAoQnJpblNvcnQgKikgcGxhbjsKKworCQkJCXNwbGFuLT5zY2FuLnNjYW5yZWxpZCArPSBy dG9mZnNldDsKKwkJCQlzcGxhbi0+c2Nhbi5wbGFuLnRhcmdldGxpc3QgPQorCQkJCQlmaXhf c2Nhbl9saXN0KHJvb3QsIHNwbGFuLT5zY2FuLnBsYW4udGFyZ2V0bGlzdCwKKwkJCQkJCQkJ ICBydG9mZnNldCwgTlVNX0VYRUNfVExJU1QocGxhbikpOworCQkJCXNwbGFuLT5zY2FuLnBs YW4ucXVhbCA9CisJCQkJCWZpeF9zY2FuX2xpc3Qocm9vdCwgc3BsYW4tPnNjYW4ucGxhbi5x dWFsLAorCQkJCQkJCQkgIHJ0b2Zmc2V0LCBOVU1fRVhFQ19RVUFMKHBsYW4pKTsKKwkJCQlz cGxhbi0+aW5kZXhxdWFsID0KKwkJCQkJZml4X3NjYW5fbGlzdChyb290LCBzcGxhbi0+aW5k ZXhxdWFsLAorCQkJCQkJCQkgIHJ0b2Zmc2V0LCAxKTsKKwkJCQlzcGxhbi0+aW5kZXhxdWFs b3JpZyA9CisJCQkJCWZpeF9zY2FuX2xpc3Qocm9vdCwgc3BsYW4tPmluZGV4cXVhbG9yaWcs CisJCQkJCQkJCSAgcnRvZmZzZXQsIE5VTV9FWEVDX1FVQUwocGxhbikpOworCQkJfQorCQkJ YnJlYWs7CiAJCWNhc2UgVF9CaXRtYXBJbmRleFNjYW46CiAJCQl7CiAJCQkJQml0bWFwSW5k ZXhTY2FuICpzcGxhbiA9IChCaXRtYXBJbmRleFNjYW4gKikgcGxhbjsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCmluZGV4IDVmNTU5Njg0MWMuLjFhZDQyMzVjZDIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwpAQCAtMTAyOCw2ICsx MDI4LDYzIEBAIGNyZWF0ZV9pbmRleF9wYXRoKFBsYW5uZXJJbmZvICpyb290LAogCXJldHVy biBwYXRobm9kZTsKIH0KIAorCisvKgorICogY3JlYXRlX2JyaW5zb3J0X3BhdGgKKyAqCSAg Q3JlYXRlcyBhIHBhdGggbm9kZSBmb3Igc29ydGVkIGJyaW4gc29ydCBzY2FuLgorICoKKyAq ICdpbmRleCcgaXMgYSB1c2FibGUgaW5kZXguCisgKiAnaW5kZXhjbGF1c2VzJyBpcyBhIGxp c3Qgb2YgSW5kZXhDbGF1c2Ugbm9kZXMgcmVwcmVzZW50aW5nIGNsYXVzZXMKKyAqCQkJdG8g YmUgZW5mb3JjZWQgYXMgcXVhbCBjb25kaXRpb25zIGluIHRoZSBzY2FuLgorICogJ2luZGV4 b3JkZXJieXMnIGlzIGEgbGlzdCBvZiBiYXJlIGV4cHJlc3Npb25zIChubyBSZXN0cmljdElu Zm9zKQorICoJCQl0byBiZSB1c2VkIGFzIGluZGV4IG9yZGVyaW5nIG9wZXJhdG9ycyBpbiB0 aGUgc2Nhbi4KKyAqICdpbmRleG9yZGVyYnljb2xzJyBpcyBhbiBpbnRlZ2VyIGxpc3Qgb2Yg aW5kZXggY29sdW1uIG51bWJlcnMgKHplcm8gYmFzZWQpCisgKgkJCXRoZSBvcmRlcmluZyBv cGVyYXRvcnMgY2FuIGJlIHVzZWQgd2l0aC4KKyAqICdwYXRoa2V5cycgZGVzY3JpYmVzIHRo ZSBvcmRlcmluZyBvZiB0aGUgcGF0aC4KKyAqICdpbmRleHNjYW5kaXInIGlzIEZvcndhcmRT Y2FuRGlyZWN0aW9uIG9yIEJhY2t3YXJkU2NhbkRpcmVjdGlvbgorICoJCQlmb3IgYW4gb3Jk ZXJlZCBpbmRleCwgb3IgTm9Nb3ZlbWVudFNjYW5EaXJlY3Rpb24gZm9yCisgKgkJCWFuIHVu b3JkZXJlZCBpbmRleC4KKyAqICdpbmRleG9ubHknIGlzIHRydWUgaWYgYW4gaW5kZXgtb25s eSBzY2FuIGlzIHdhbnRlZC4KKyAqICdyZXF1aXJlZF9vdXRlcicgaXMgdGhlIHNldCBvZiBv dXRlciByZWxpZHMgZm9yIGEgcGFyYW1ldGVyaXplZCBwYXRoLgorICogJ2xvb3BfY291bnQn IGlzIHRoZSBudW1iZXIgb2YgcmVwZXRpdGlvbnMgb2YgdGhlIGluZGV4c2NhbiB0byBmYWN0 b3IgaW50bworICoJCWVzdGltYXRlcyBvZiBjYWNoaW5nIGJlaGF2aW9yLgorICogJ3BhcnRp YWxfcGF0aCcgaXMgdHJ1ZSBpZiBjb25zdHJ1Y3RpbmcgYSBwYXJhbGxlbCBpbmRleCBzY2Fu IHBhdGguCisgKgorICogUmV0dXJucyB0aGUgbmV3IHBhdGggbm9kZS4KKyAqLworQnJpblNv cnRQYXRoICoKK2NyZWF0ZV9icmluc29ydF9wYXRoKFBsYW5uZXJJbmZvICpyb290LAorCQkJ CQkgSW5kZXhPcHRJbmZvICppbmRleCwKKwkJCQkJIExpc3QgKmluZGV4Y2xhdXNlcywKKwkJ CQkJIExpc3QgKnBhdGhrZXlzLAorCQkJCQkgU2NhbkRpcmVjdGlvbiBpbmRleHNjYW5kaXIs CisJCQkJCSBib29sIGluZGV4b25seSwKKwkJCQkJIFJlbGlkcyByZXF1aXJlZF9vdXRlciwK KwkJCQkJIGRvdWJsZSBsb29wX2NvdW50LAorCQkJCQkgYm9vbCBwYXJ0aWFsX3BhdGgpCit7 CisJQnJpblNvcnRQYXRoICAqcGF0aG5vZGUgPSBtYWtlTm9kZShCcmluU29ydFBhdGgpOwor CVJlbE9wdEluZm8gKnJlbCA9IGluZGV4LT5yZWw7CisKKwlwYXRobm9kZS0+aXBhdGgucGF0 aC5wYXRodHlwZSA9IFRfQnJpblNvcnQ7CisJcGF0aG5vZGUtPmlwYXRoLnBhdGgucGFyZW50 ID0gcmVsOworCXBhdGhub2RlLT5pcGF0aC5wYXRoLnBhdGh0YXJnZXQgPSByZWwtPnJlbHRh cmdldDsKKwlwYXRobm9kZS0+aXBhdGgucGF0aC5wYXJhbV9pbmZvID0gZ2V0X2Jhc2VyZWxf cGFyYW1wYXRoaW5mbyhyb290LCByZWwsCisJCQkJCQkJCQkJCQkJCSAgcmVxdWlyZWRfb3V0 ZXIpOworCXBhdGhub2RlLT5pcGF0aC5wYXRoLnBhcmFsbGVsX2F3YXJlID0gZmFsc2U7CisJ cGF0aG5vZGUtPmlwYXRoLnBhdGgucGFyYWxsZWxfc2FmZSA9IHJlbC0+Y29uc2lkZXJfcGFy YWxsZWw7CisJcGF0aG5vZGUtPmlwYXRoLnBhdGgucGFyYWxsZWxfd29ya2VycyA9IDA7CisJ cGF0aG5vZGUtPmlwYXRoLnBhdGgucGF0aGtleXMgPSBwYXRoa2V5czsKKworCXBhdGhub2Rl LT5pcGF0aC5pbmRleGluZm8gPSBpbmRleDsKKwlwYXRobm9kZS0+aXBhdGguaW5kZXhjbGF1 c2VzID0gaW5kZXhjbGF1c2VzOworCXBhdGhub2RlLT5pcGF0aC5pbmRleHNjYW5kaXIgPSBp bmRleHNjYW5kaXI7CisKKwljb3N0X2JyaW5zb3J0KHBhdGhub2RlLCByb290LCBsb29wX2Nv dW50LCBwYXJ0aWFsX3BhdGgpOworCisJcmV0dXJuIHBhdGhub2RlOworfQorCiAvKgogICog Y3JlYXRlX2JpdG1hcF9oZWFwX3BhdGgKICAqCSAgQ3JlYXRlcyBhIHBhdGggbm9kZSBmb3Ig YSBiaXRtYXAgc2Nhbi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXgg MmZhN2FjMDA1Mi4uZTY5NjAyOWNmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKQEAgLTEwMyw2ICsxMDMsMTAgQEAgZXh0ZXJuIGJvb2wgZGVidWdfYnJpbl9zdGF0 czsKIGV4dGVybiBib29sIGRlYnVnX2JyaW5fY3Jvc3NfY2hlY2s7CiAjZW5kaWYKIAorI2lm ZGVmIERFQlVHX0JSSU5fU09SVAorZXh0ZXJuIGJvb2wgZGVidWdfYnJpbl9zb3J0OworI2Vu ZGlmCisKICNpZmRlZiBUUkFDRV9TWU5DU0NBTgogZXh0ZXJuIGJvb2wgdHJhY2Vfc3luY3Nj YW47CiAjZW5kaWYKQEAgLTEwNDAsNiArMTA0NCwxNiBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wg Q29uZmlndXJlTmFtZXNCb29sW10gPQogCQlmYWxzZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAog CX0sCisJeworCQl7ImVuYWJsZV9icmluc29ydCIsIFBHQ19VU0VSU0VULCBRVUVSWV9UVU5J TkdfTUVUSE9ELAorCQkJZ2V0dGV4dF9ub29wKCJFbmFibGVzIHRoZSBwbGFubmVyJ3MgdXNl IG9mIEJSSU4gc29ydCBwbGFucy4iKSwKKwkJCU5VTEwsCisJCQlHVUNfRVhQTEFJTgorCQl9 LAorCQkmZW5hYmxlX2JyaW5zb3J0LAorCQl0cnVlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJ fSwKIAl7CiAJCXsiZ2VxbyIsIFBHQ19VU0VSU0VULCBRVUVSWV9UVU5JTkdfR0VRTywKIAkJ CWdldHRleHRfbm9vcCgiRW5hYmxlcyBnZW5ldGljIHF1ZXJ5IG9wdGltaXphdGlvbi4iKSwK QEAgLTEyODEsNiArMTI5NSwyMCBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFt ZXNCb29sW10gPQogCX0sCiAjZW5kaWYKIAorI2lmZGVmIERFQlVHX0JSSU5fU09SVAorCS8q IHRoaXMgaXMgdW5kb2N1bWVudGVkIGJlY2F1c2Ugbm90IGV4cG9zZWQgaW4gYSBzdGFuZGFy ZCBidWlsZCAqLworCXsKKwkJeyJkZWJ1Z19icmluX3NvcnQiLCBQR0NfVVNFUlNFVCwgREVW RUxPUEVSX09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoIlByaW50IGluZm8gYWJvdXQgQlJJ TiBzb3J0aW5nLiIpLAorCQkJTlVMTCwKKwkJCUdVQ19OT1RfSU5fU0FNUExFCisJCX0sCisJ CSZkZWJ1Z19icmluX3NvcnQsCisJCWZhbHNlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwK KyNlbmRpZgorCiAJewogCQl7ImV4aXRfb25fZXJyb3IiLCBQR0NfVVNFUlNFVCwgRVJST1Jf SEFORExJTkdfT1BUSU9OUywKIAkJCWdldHRleHRfbm9vcCgiVGVybWluYXRlIHNlc3Npb24g b24gYW55IGVycm9yLiIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jl c3FsLmNvbmYuc2FtcGxlCmluZGV4IDljYTUyMzA3M2YuLmFmNTlkOTA0OGQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM3 NSw2ICszNzUsNyBAQAogCiAjZW5hYmxlX2FzeW5jX2FwcGVuZCA9IG9uCiAjZW5hYmxlX2Jp dG1hcHNjYW4gPSBvbgorI2VuYWJsZV9icmluc29ydCA9IG9mZgogI2VuYWJsZV9nYXRoZXJt ZXJnZSA9IG9uCiAjZW5hYmxlX2hhc2hhZ2cgPSBvbgogI2VuYWJsZV9oYXNoam9pbiA9IG9u CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnQuYwppbmRleCBlNWE0ZTViMzcxLi4wYzJj MmUxMTIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydC5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0LmMKQEAgLTI1NzQsNiAr MjU3NCwxOCBAQCB0dXBsZXNvcnRfZ2V0X3N0YXRzKFR1cGxlc29ydHN0YXRlICpzdGF0ZSwK IAl9CiB9CiAKKy8qCisgKiB0dXBsZXNvcnRfcmVzZXRfc3RhdHMgLSByZXNldCBzdW1tYXJ5 IHN0YXRpc3RpY3MKKyAqCisgKiBUaGlzIGNhbiBiZSBjYWxsZWQgYmVmb3JlIHR1cGxlc29y dF9wZXJmb3Jtc29ydCgpIHN0YXJ0cy4KKyAqLwordm9pZAordHVwbGVzb3J0X3Jlc2V0X3N0 YXRzKFR1cGxlc29ydHN0YXRlICpzdGF0ZSkKK3sKKwlzdGF0ZS0+aXNNYXhTcGFjZURpc2sg PSBmYWxzZTsKKwlzdGF0ZS0+bWF4U3BhY2UgPSAwOworfQorCiAvKgogICogQ29udmVydCBU dXBsZXNvcnRNZXRob2QgdG8gYSBzdHJpbmcuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9icmluLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbi5oCmluZGV4IDFk MjFiODE2ZmMuLmNkZmE3NDIxYWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9i cmluLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW4uaApAQCAtMzQsNDEgKzM0LDYg QEAgdHlwZWRlZiBzdHJ1Y3QgQnJpblN0YXRzRGF0YQogCUJsb2NrTnVtYmVyIHJldm1hcE51 bVBhZ2VzOwogfSBCcmluU3RhdHNEYXRhOwogCi0vKgotICogSW5mbyBhYm91dCByYW5nZXMg Zm9yIEJSSU4gU29ydC4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgQnJpblJhbmdlCi17Ci0JQmxv Y2tOdW1iZXIgYmxrbm9fc3RhcnQ7Ci0JQmxvY2tOdW1iZXIgYmxrbm9fZW5kOwotCi0JRGF0 dW0JbWluX3ZhbHVlOwotCURhdHVtCW1heF92YWx1ZTsKLQlib29sCWhhc19udWxsczsKLQli b29sCWFsbF9udWxsczsKLQlib29sCW5vdF9zdW1tYXJpemVkOwotCi0JLyoKLQkgKiBJbmRl eCBvZiB0aGUgcmFuZ2Ugd2hlbiBvcmRlcmVkIGJ5IG1pbl92YWx1ZSAoaWYgdGhlcmUgYXJl IG11bHRpcGxlCi0JICogcmFuZ2VzIHdpdGggdGhlIHNhbWUgbWluX3ZhbHVlLCBpdCdzIHRo ZSBsb3dlc3Qgb25lKS4KLQkgKi8KLQl1aW50MzIJbWluX2luZGV4OwotCi0JLyoKLQkgKiBN aW5pbXVtIG1pbl9pbmRleCBmcm9tIGFsbCByYW5nZXMgd2l0aCBoaWdoZXIgbWF4X3ZhbHVl IChpLmUuIHdoZW4KLQkgKiBzb3J0ZWQgYnkgbWF4X3ZhbHVlKS4gSWYgdGhlcmUgYXJlIG11 bHRpcGxlIHJhbmdlcyB3aXRoIHRoZSBzYW1lCi0JICogbWF4X3ZhbHVlLCBpdCBkZXBlbmRz IG9uIHRoZSBvcmRlcmluZyAoaS5lLiB0aGUgcmFuZ2VzIG1heSBnZXQKLQkgKiBkaWZmZXJl bnQgbWluX2luZGV4X2xvd2VzdCwgZGVwZW5kaW5nIG9uIHRoZSBleGFjdCBvcmRlcmluZyku Ci0JICovCi0JdWludDMyCW1pbl9pbmRleF9sb3dlc3Q7Ci19IEJyaW5SYW5nZTsKLQotdHlw ZWRlZiBzdHJ1Y3QgQnJpblJhbmdlcwotewotCWludAkJCW5yYW5nZXM7Ci0JQnJpblJhbmdl CXJhbmdlc1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwotfSBCcmluUmFuZ2VzOwotCiB0eXBl ZGVmIHN0cnVjdCBCcmluTWlubWF4U3RhdHMKIHsKIAlpbnQzMgkJdmxfbGVuXzsJCS8qIHZh cmxlbmEgaGVhZGVyIChkbyBub3QgdG91Y2ggZGlyZWN0bHkhKSAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5faW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9icmluX2ludGVybmFsLmgKaW5kZXggZWFjNzk2ZTZmNC4uNmRkM2YzZTNjMSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5faW50ZXJuYWwuaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvYnJpbl9pbnRlcm5hbC5oCkBAIC03Niw2ICs3Niw3IEBAIHR5cGVkZWYg c3RydWN0IEJyaW5EZXNjCiAvKiBwcm9jZWR1cmUgbnVtYmVycyB1cCB0byAxMCBhcmUgcmVz ZXJ2ZWQgZm9yIEJSSU4gZnV0dXJlIGV4cGFuc2lvbiAqLwogI2RlZmluZSBCUklOX0ZJUlNU X09QVElPTkFMX1BST0NOVU0gMTEKICNkZWZpbmUgQlJJTl9QUk9DTlVNX1NUQVRJU1RJQ1MJ CTExCS8qIG9wdGlvbmFsICovCisjZGVmaW5lIEJSSU5fUFJPQ05VTV9SQU5HRVMgCQkxMgkv KiBvcHRpb25hbCAqLwogI2RlZmluZSBCUklOX0xBU1RfT1BUSU9OQUxfUFJPQ05VTQkxNQog CiAjdW5kZWYgQlJJTl9ERUJVRwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19hbXByb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CmluZGV4 IDliYmQxZjE0ZjEuLmI0OTk2OTliMzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfYW1wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5k YXQKQEAgLTgwNiw2ICs4MDYsOCBAQAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2J5dGVhJywg YW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL2J5dGVhX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAnYnl0ZWEnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2J5dGVhJywgYW1wcm9jbnVt ID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCit7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9ieXRlYV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2J5 dGVhJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdieXRlYScsIGFtcHJvY251bSA9PiAnMTIn LCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogIyBibG9vbSBieXRlYQog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnl0ZWFfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2J5dGVhJywKQEAgLTgzOSw2ICs4NDEsOCBAQAogICBhbXByb2NyaWdodHR5cGUg PT4gJ2NoYXInLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3Vu aW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vY2hhcl9taW5tYXhfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2NoYXInLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2NoYXInLCBh bXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKK3sg YW1wcm9jZmFtaWx5ID0+ICdicmluL2NoYXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdjaGFyJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdjaGFyJywgYW1wcm9jbnVtID0+ ICcxMicsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJyB9LAogCiAjIGJsb29tICJj aGFyIgogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vY2hhcl9ibG9vbV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnY2hhcicsCkBAIC04NzAsNiArODc0LDggQEAKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICduYW1lJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1h eF91bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25hbWVfbWlubWF4X29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICduYW1lJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICduYW1l JywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0s Cit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnbmFtZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbmFtZScsIGFtcHJvY251 bSA9PiAnMTInLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogIyBibG9v bSBuYW1lCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX2Jsb29tX29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICduYW1lJywKQEAgLTkwMSw2ICs5MDcsOCBAQAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ2ludDgnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlu bWF4X3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4g J2ludDgnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0 cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdpbnQ4JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ4Jywg YW1wcm9jbnVtID0+ICcxMicsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJyB9LAog CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnaW50MicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJv Y251bSA9PiAnMScsCkBAIC05MTUsNiArOTIzLDggQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdpbnQyJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlv bicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdpbnQyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQyJywg YW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCit7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnaW50MicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251 bSA9PiAnMTInLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogeyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ2ludDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXByb2NudW0gPT4g JzEnLApAQCAtOTI5LDYgKzkzOSw4IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50NCcs IGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnaW50NCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50NCcsIGFtcHJvY251 bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J2ludDQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXByb2NudW0gPT4gJzEy JywgYW1wcm9jID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKICMgbWlubWF4IG11bHRp IGludGVnZXI6IGludDIsIGludDQsIGludDgKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2lu dGVnZXJfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQyJywKQEAg LTEwNDgsNiArMTA2MCw4IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGV4dCcsIGFtcHJv Y251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi90ZXh0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn dGV4dCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGV4dCcsIGFtcHJvY251bSA9PiAnMTEn LCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vdGV4dF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RleHQnLAorICBh bXByb2NyaWdodHR5cGUgPT4gJ3RleHQnLCBhbXByb2NudW0gPT4gJzEyJywgYW1wcm9jID0+ ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKICMgYmxvb20gdGV4dAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vdGV4dF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGV4dCcs CkBAIC0xMDc4LDYgKzEwOTIsOCBAQAogICBhbXByb2NyaWdodHR5cGUgPT4gJ29pZCcsIGFt cHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9vaWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdvaWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ29pZCcsIGFtcHJvY251bSA9PiAnMTEn LCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vb2lkX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywKKyAgYW1w cm9jcmlnaHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzEyJywgYW1wcm9jID0+ICdi cmluX21pbm1heF9yYW5nZXMnIH0sCiAKICMgbWlubWF4IG11bHRpIG9pZAogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vb2lkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnb2lkJywKQEAgLTExMjgsNiArMTE0NCw4IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn dGlkJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpZF9taW5tYXhfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ3RpZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlkJywgYW1wcm9jbnVt ID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCit7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi90aWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aWQn LAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpZCcsIGFtcHJvY251bSA9PiAnMTInLCBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogIyBibG9vbSB0aWQKIHsgYW1wcm9j ZmFtaWx5ID0+ICdicmluL3RpZF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGlk JywKQEAgLTExODEsNiArMTE5OSw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9h dF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcsCiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAnZmxvYXQ0JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfc3RhdHMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9t aW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcsCisgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnZmxvYXQ0JywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAnYnJp bl9taW5tYXhfcmFuZ2VzJyB9LAogCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9t aW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0OCcsCiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnZmxvYXQ4JywgYW1wcm9jbnVtID0+ICcxJywKQEAgLTExOTcsNiArMTIxOCw5 IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2Zsb2F0OCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ4Jywg YW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0s Cit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2Zsb2F0OCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ4JywgYW1w cm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJyB9LAog CiAjIG1pbm1heCBtdWx0aSBmbG9hdAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRf bWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLApAQCAtMTI4 OCw2ICsxMzEyLDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHJfbWlubWF4 X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdtYWNhZGRyJywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfc3RhdHMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyX21pbm1h eF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFjYWRkcicsCisgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnbWFjYWRkcicsIGFtcHJvY251bSA9PiAnMTInLAorICBhbXByb2MgPT4gJ2JyaW5f bWlubWF4X3JhbmdlcycgfSwKIAogIyBtaW5tYXggbXVsdGkgbWFjYWRkcgogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ21hY2FkZHInLApAQCAtMTM0NCw2ICsxMzcxLDkgQEAKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL21hY2FkZHI4X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFj YWRkcjgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jbnVtID0+ ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCit7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9tYWNhZGRyOF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J21hY2FkZHI4JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRyOCcsIGFtcHJvY251 bSA9PiAnMTInLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogIyBt aW5tYXggbXVsdGkgbWFjYWRkcjgKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHI4 X21pbm1heF9tdWx0aV9vcHMnLApAQCAtMTM5OCw2ICsxNDI4LDggQEAKICAgYW1wcm9jcmln aHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21p bm1heF91bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdvcmtfbWlubWF4 X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdpbmV0JywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3Rh dHMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uZXR3b3JrX21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW5ldCcs IGFtcHJvY251bSA9PiAnMTInLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwK IAogIyBtaW5tYXggbXVsdGkgaW5ldAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29y a19taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLApAQCAtMTQ3 MSw2ICsxNTAzLDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2JwY2hhcl9taW5tYXhf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2JwY2hhcicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAnYnBjaGFyJywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfc3RhdHMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9icGNoYXJfbWlubWF4X29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdicGNoYXInLAorICBhbXByb2NyaWdodHR5cGUgPT4g J2JwY2hhcicsIGFtcHJvY251bSA9PiAnMTInLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X3JhbmdlcycgfSwKIAogIyBibG9vbSBjaGFyYWN0ZXIKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL2JwY2hhcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnBjaGFyJywKQEAg LTE1MDQsNiArMTUzOSw4IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZScsIGFtcHJv Y251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi90aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn dGltZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZScsIGFtcHJvY251bSA9PiAnMTEn LCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vdGltZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWUnLAorICBh bXByb2NyaWdodHR5cGUgPT4gJ3RpbWUnLCBhbXByb2NudW0gPT4gJzEyJywgYW1wcm9jID0+ ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKICMgbWlubWF4IG11bHRpIHRpbWUgd2l0aG91 dCB0aW1lIHpvbmUKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWVfbWlubWF4X211bHRp X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lJywKQEAgLTE1NTcsNiArMTU5NCw5IEBA CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ3RpbWVzdGFtcCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0 YW1wJywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3Rh dHMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn dGltZXN0YW1wJywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfcmFuZ2VzJyB9LAogCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5t YXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywKICAgYW1wcm9jcmln aHR0eXBlID0+ICd0aW1lc3RhbXB0eicsIGFtcHJvY251bSA9PiAnMScsCkBAIC0xNTczLDYg KzE2MTMsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3RhbXB0eicsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAndGltZXN0YW1wdHonLCBhbXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdi cmluX21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1l X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHonLAorICBhbXBy b2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJyB9LAogCiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9kYXRldGltZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ2RhdGUnLCBhbXByb2NudW0gPT4gJzEnLApAQCAtMTU4 Nyw2ICsxNjMwLDggQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVt ID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn ZGF0ZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZGF0ZScsIGFtcHJvY251bSA9PiAnMTEn LCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRlJywK KyAgYW1wcm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVtID0+ICcxMicsIGFtcHJv YyA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJyB9LAogCiAjIG1pbm1heCBtdWx0aSBkYXRldGlt ZSAoZGF0ZSwgdGltZXN0YW1wLCB0aW1lc3RhbXB0eikKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL2RhdGV0aW1lX21pbm1heF9tdWx0aV9vcHMnLApAQCAtMTcxNiw2ICsxNzYxLDkgQEAK IHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVydmFsX21pbm1heF9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnaW50ZXJ2YWwnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludGVydmFs JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMn IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9taW5tYXhfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnRl cnZhbCcsIGFtcHJvY251bSA9PiAnMTInLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3Jh bmdlcycgfSwKIAogIyBtaW5tYXggbXVsdGkgaW50ZXJ2YWwKIHsgYW1wcm9jZmFtaWx5ID0+ ICdicmluL2ludGVydmFsX21pbm1heF9tdWx0aV9vcHMnLApAQCAtMTc3Miw2ICsxODIwLDkg QEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ3RpbWV0eicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXR6Jywg YW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0s Cit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfbWlubWF4X29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICd0aW1ldHonLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWV0eicsIGFt cHJvY251bSA9PiAnMTInLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwK IAogIyBtaW5tYXggbXVsdGkgdGltZSB3aXRoIHRpbWUgem9uZQogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vdGltZXR6X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn dGltZXR6JywKQEAgLTE4MjQsNiArMTg3NSw4IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn Yml0JywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2JpdF9taW5tYXhfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2JpdCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYml0JywgYW1wcm9jbnVt ID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCit7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9iaXRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdiaXQn LAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2JpdCcsIGFtcHJvY251bSA9PiAnMTInLCBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogIyBtaW5tYXggYml0IHZhcnlpbmcK IHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3ZhcmJpdF9taW5tYXhfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ3ZhcmJpdCcsCkBAIC0xODQxLDYgKzE4OTQsOSBAQAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vdmFyYml0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndmFy Yml0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd2YXJiaXQnLCBhbXByb2NudW0gPT4gJzEx JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5 ID0+ICdicmluL3ZhcmJpdF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3ZhcmJp dCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndmFyYml0JywgYW1wcm9jbnVtID0+ICcxMics CisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJyB9LAogCiAjIG1pbm1heCBudW1l cmljCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9udW1lcmljX21pbm1heF9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCkBAIC0xODU4LDYgKzE5MTQsOSBAQAogeyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vbnVtZXJpY19taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ251bWVyaWMnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ251bWVyaWMnLCBhbXByb2Nu dW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKK3sgYW1w cm9jZmFtaWx5ID0+ICdicmluL251bWVyaWNfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdudW1lcmljJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdudW1lcmljJywgYW1wcm9j bnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJyB9LAogCiAj IG1pbm1heCBtdWx0aSBudW1lcmljCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9udW1lcmlj X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCkBAIC0x OTEyLDYgKzE5NzEsOCBAQAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3V1aWQnLCBhbXByb2Nu dW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vdXVpZF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3V1 aWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3V1aWQnLCBhbXByb2NudW0gPT4gJzExJywg YW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdi cmluL3V1aWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd1dWlkJywKKyAgYW1w cm9jcmlnaHR0eXBlID0+ICd1dWlkJywgYW1wcm9jbnVtID0+ICcxMicsIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfcmFuZ2VzJyB9LAogCiAjIG1pbm1heCBtdWx0aSB1dWlkCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi91dWlkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAndXVpZCcsCkBAIC0xOTg4LDYgKzIwNDksOSBAQAogeyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vcGdfbHNuX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncGdfbHNuJywK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICdwZ19sc24nLCBhbXByb2NudW0gPT4gJzExJywKICAg YW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdi cmluL3BnX2xzbl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2xzbicsCisg IGFtcHJvY3JpZ2h0dHlwZSA9PiAncGdfbHNuJywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJyB9LAogCiAjIG1pbm1heCBtdWx0aSBwZ19s c24KIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3BnX2xzbl9taW5tYXhfbXVsdGlfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2xzbicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApp bmRleCBlNTBhMjFmYzIyLi4zMjgwNzUxMzgwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKQEAgLTg1MzEsNiArODUzMSw5IEBACiAgIHByb25hbWUgPT4gJ2JyaW5fbWlubWF4X3N0 YXRzJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCiAgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5h bCBpbnRlcm5hbCBpbnQyIGludDIgaW50ZXJuYWwgaW50NCcsCiAgIHByb3NyYyA9PiAnYnJp bl9taW5tYXhfc3RhdHMnIH0sCit7IG9pZCA9PiAnOTgwMScsIGRlc2NyID0+ICdCUklOIG1p bm1heCBzdXBwb3J0JywKKyAgcHJvbmFtZSA9PiAnYnJpbl9taW5tYXhfcmFuZ2VzJywgcHJv cmV0dHlwZSA9PiAnYm9vbCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBpbnQyIGJv b2wnLCBwcm9zcmMgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogIyBCUklOIG1pbm1h eCBtdWx0aQogeyBvaWQgPT4gJzQ2MTYnLCBkZXNjciA9PiAnQlJJTiBtdWx0aSBtaW5tYXgg c3VwcG9ydCcsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQnJpblNv cnQuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVCcmluU29ydC5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNjYWM1OTlkODEKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQnJpblNvcnQuaApAQCAtMCwwICsxLDQ3 IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBub2RlQnJpblNvcnQuaAorICoK KyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAq IHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVCcmluU29ydC5oCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgTk9ERUJSSU5fU09SVF9ICisjZGVmaW5lIE5PREVC UklOX1NPUlRfSAorCisjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCisjaW5jbHVkZSAiYWNj ZXNzL3BhcmFsbGVsLmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCisKK2V4dGVy biBCcmluU29ydFN0YXRlICpFeGVjSW5pdEJyaW5Tb3J0KEJyaW5Tb3J0ICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncyk7CitleHRlcm4gdm9pZCBFeGVjRW5kQnJpblNvcnQo QnJpblNvcnRTdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9pZCBFeGVjQnJpblNvcnRNYXJrUG9z KEJyaW5Tb3J0U3RhdGUgKm5vZGUpOworZXh0ZXJuIHZvaWQgRXhlY0JyaW5Tb3J0UmVzdHJQ b3MoQnJpblNvcnRTdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9pZCBFeGVjUmVTY2FuQnJpblNv cnQoQnJpblNvcnRTdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9pZCBFeGVjQnJpblNvcnRFc3Rp bWF0ZShCcmluU29ydFN0YXRlICpub2RlLCBQYXJhbGxlbENvbnRleHQgKnBjeHQpOworZXh0 ZXJuIHZvaWQgRXhlY0JyaW5Tb3J0SW5pdGlhbGl6ZURTTShCcmluU29ydFN0YXRlICpub2Rl LCBQYXJhbGxlbENvbnRleHQgKnBjeHQpOworZXh0ZXJuIHZvaWQgRXhlY0JyaW5Tb3J0UmVJ bml0aWFsaXplRFNNKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIFBhcmFsbGVsQ29udGV4dCAqcGN4 dCk7CitleHRlcm4gdm9pZCBFeGVjQnJpblNvcnRJbml0aWFsaXplV29ya2VyKEJyaW5Tb3J0 U3RhdGUgKm5vZGUsCisJCQkJCQkJCQkJICBQYXJhbGxlbFdvcmtlckNvbnRleHQgKnB3Y3h0 KTsKKworLyoKKyAqIFRoZXNlIHJvdXRpbmVzIGFyZSBleHBvcnRlZCB0byBzaGFyZSBjb2Rl IHdpdGggbm9kZUluZGV4b25seXNjYW4uYyBhbmQKKyAqIG5vZGVCaXRtYXBCcmluU29ydC5j CisgKi8KK2V4dGVybiB2b2lkIEV4ZWNJbmRleEJ1aWxkU2NhbktleXMoUGxhblN0YXRlICpw bGFuc3RhdGUsIFJlbGF0aW9uIGluZGV4LAorCQkJCQkJCQkgICBMaXN0ICpxdWFscywgYm9v bCBpc29yZGVyYnksCisJCQkJCQkJCSAgIFNjYW5LZXkgKnNjYW5LZXlzLCBpbnQgKm51bVNj YW5LZXlzLAorCQkJCQkJCQkgICBJbmRleFJ1bnRpbWVLZXlJbmZvICoqcnVudGltZUtleXMs IGludCAqbnVtUnVudGltZUtleXMsCisJCQkJCQkJCSAgIEluZGV4QXJyYXlLZXlJbmZvICoq YXJyYXlLZXlzLCBpbnQgKm51bUFycmF5S2V5cyk7CitleHRlcm4gdm9pZCBFeGVjSW5kZXhF dmFsUnVudGltZUtleXMoRXhwckNvbnRleHQgKmVjb250ZXh0LAorCQkJCQkJCQkJIEluZGV4 UnVudGltZUtleUluZm8gKnJ1bnRpbWVLZXlzLCBpbnQgbnVtUnVudGltZUtleXMpOworZXh0 ZXJuIGJvb2wgRXhlY0luZGV4RXZhbEFycmF5S2V5cyhFeHByQ29udGV4dCAqZWNvbnRleHQs CisJCQkJCQkJCSAgIEluZGV4QXJyYXlLZXlJbmZvICphcnJheUtleXMsIGludCBudW1BcnJh eUtleXMpOworZXh0ZXJuIGJvb2wgRXhlY0luZGV4QWR2YW5jZUFycmF5S2V5cyhJbmRleEFy cmF5S2V5SW5mbyAqYXJyYXlLZXlzLCBpbnQgbnVtQXJyYXlLZXlzKTsKKworI2VuZGlmCQkJ CQkJCS8qIE5PREVCUklOX1NPUlRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBj YjcxNGY0YTE5Li5jYmFhNTQwNzY4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTU4 Myw2ICsxNTgzLDExNCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFNjYW5TdGF0ZQogCVNpemUJ CWlzc19Qc2NhbkxlbjsKIH0gSW5kZXhTY2FuU3RhdGU7CiAKK3R5cGVkZWYgZW51bSB7CisJ QlJJTlNPUlRfU1RBUlQsCisJQlJJTlNPUlRfTE9BRF9SQU5HRSwKKwlCUklOU09SVF9QUk9D RVNTX1JBTkdFLAorCUJSSU5TT1JUX0xPQURfTlVMTFMsCisJQlJJTlNPUlRfUFJPQ0VTU19O VUxMUywKKwlCUklOU09SVF9GSU5JU0hFRAorfSBCcmluU29ydFBoYXNlOworCit0eXBlZGVm IHN0cnVjdCBCcmluUmFuZ2VTY2FuRGVzYworeworCS8qIHJhbmdlIGluZm8gdHVwbGUgZGVz Y3JpcHRvciAqLworCVR1cGxlRGVzYwkJdGRlc2M7CisKKwkvKiByYW5nZXMsIHNvcnRlZCBi eSBtaW52YWwsIGJsa25vX3N0YXJ0ICovCisJVHVwbGVzb3J0c3RhdGUgKnJhbmdlczsKKwor CS8qIG51bWJlciBvZiByYW5nZXMgaW4gdGhlIHR1cGxlc29ydCAqLworCWludDY0CQkJbnJh bmdlczsKKworCS8qIGRpc3RpbmN0IG1pbnZhbCAoc29ydGVkKSAqLworCVR1cGxlc3RvcmVz dGF0ZSAqbWludmFsczsKKworCS8qIHNsb3QgZm9yIGFjY2Vzc2luZyB0aGUgdHVwbGVzb3J0 L3R1cGxlc3RvcmUgKi8KKwlUdXBsZVRhYmxlU2xvdCAgKnNsb3Q7CisKK30gQnJpblJhbmdl U2NhbkRlc2M7CisKKy8qCisgKiBJbmZvIGFib3V0IHJhbmdlcyBmb3IgQlJJTiBTb3J0Lgor ICovCit0eXBlZGVmIHN0cnVjdCBCcmluUmFuZ2UKK3sKKwlCbG9ja051bWJlciBibGtub19z dGFydDsKKwlCbG9ja051bWJlciBibGtub19lbmQ7CisKKwlEYXR1bQltaW5fdmFsdWU7CisJ RGF0dW0JbWF4X3ZhbHVlOworCWJvb2wJaGFzX251bGxzOworCWJvb2wJYWxsX251bGxzOwor CWJvb2wJbm90X3N1bW1hcml6ZWQ7CisKKwkvKgorCSAqIEluZGV4IG9mIHRoZSByYW5nZSB3 aGVuIG9yZGVyZWQgYnkgbWluX3ZhbHVlIChpZiB0aGVyZSBhcmUgbXVsdGlwbGUKKwkgKiBy YW5nZXMgd2l0aCB0aGUgc2FtZSBtaW5fdmFsdWUsIGl0J3MgdGhlIGxvd2VzdCBvbmUpLgor CSAqLworCXVpbnQzMgltaW5faW5kZXg7CisKKwkvKgorCSAqIE1pbmltdW0gbWluX2luZGV4 IGZyb20gYWxsIHJhbmdlcyB3aXRoIGhpZ2hlciBtYXhfdmFsdWUgKGkuZS4gd2hlbgorCSAq IHNvcnRlZCBieSBtYXhfdmFsdWUpLiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgcmFuZ2VzIHdp dGggdGhlIHNhbWUKKwkgKiBtYXhfdmFsdWUsIGl0IGRlcGVuZHMgb24gdGhlIG9yZGVyaW5n IChpLmUuIHRoZSByYW5nZXMgbWF5IGdldAorCSAqIGRpZmZlcmVudCBtaW5faW5kZXhfbG93 ZXN0LCBkZXBlbmRpbmcgb24gdGhlIGV4YWN0IG9yZGVyaW5nKS4KKwkgKi8KKwl1aW50MzIJ bWluX2luZGV4X2xvd2VzdDsKK30gQnJpblJhbmdlOworCit0eXBlZGVmIHN0cnVjdCBCcmlu UmFuZ2VzCit7CisJaW50CQkJbnJhbmdlczsKKwlCcmluUmFuZ2UJcmFuZ2VzW0ZMRVhJQkxF X0FSUkFZX01FTUJFUl07Cit9IEJyaW5SYW5nZXM7CisKK3R5cGVkZWYgc3RydWN0IEJyaW5T b3J0U3RhdGUKK3sKKwlTY2FuU3RhdGUJc3M7CQkJCS8qIGl0cyBmaXJzdCBmaWVsZCBpcyBO b2RlVGFnICovCisJRXhwclN0YXRlICAqaW5kZXhxdWFsb3JpZzsKKwlMaXN0CSAgICppbmRl eG9yZGVyYnlvcmlnOworCXN0cnVjdCBTY2FuS2V5RGF0YSAqaXNzX1NjYW5LZXlzOworCWlu dAkJCWlzc19OdW1TY2FuS2V5czsKKwlzdHJ1Y3QgU2NhbktleURhdGEgKmlzc19PcmRlckJ5 S2V5czsKKwlpbnQJCQlpc3NfTnVtT3JkZXJCeUtleXM7CisJSW5kZXhSdW50aW1lS2V5SW5m byAqaXNzX1J1bnRpbWVLZXlzOworCWludAkJCWlzc19OdW1SdW50aW1lS2V5czsKKwlib29s CQlpc3NfUnVudGltZUtleXNSZWFkeTsKKwlFeHByQ29udGV4dCAqaXNzX1J1bnRpbWVDb250 ZXh0OworCVJlbGF0aW9uCWlzc19SZWxhdGlvbkRlc2M7CisJc3RydWN0IEluZGV4U2NhbkRl c2NEYXRhICppc3NfU2NhbkRlc2M7CisKKwkvKiBUaGVzZSBhcmUgbmVlZGVkIGZvciByZS1j aGVja2luZyBPUkRFUiBCWSBleHByIG9yZGVyaW5nICovCisJcGFpcmluZ2hlYXAgKmlzc19S ZW9yZGVyUXVldWU7CisJYm9vbAkJaXNzX1JlYWNoZWRFbmQ7CisJRGF0dW0JICAgKmlzc19P cmRlckJ5VmFsdWVzOworCWJvb2wJICAgKmlzc19PcmRlckJ5TnVsbHM7CisJU29ydFN1cHBv cnQgaXNzX1NvcnRTdXBwb3J0OworCWJvb2wJICAgKmlzc19PcmRlckJ5VHlwQnlWYWxzOwor CWludDE2CSAgICppc3NfT3JkZXJCeVR5cExlbnM7CisJU2l6ZQkJaXNzX1BzY2FuTGVuOwor CisJLyogKi8KKwlCcmluUmFuZ2VTY2FuRGVzYyAqYnNfc2NhbjsKKwlCcmluUmFuZ2UJICAg KmJzX3JhbmdlOworCUV4cHJTdGF0ZQkgICAqYnNfcXVhbDsKKwlEYXR1bQkJCWJzX3dhdGVy bWFyazsKKwlib29sCQkJYnNfd2F0ZXJtYXJrX3NldDsKKwlib29sCQkJYnNfd2F0ZXJtYXJr X2VtcHR5OworCUJyaW5Tb3J0UGhhc2UJYnNfcGhhc2U7CisJU29ydFN1cHBvcnREYXRhCWJz X3NvcnRzdXBwb3J0OworCVByb2plY3Rpb25JbmZvICpic19Qcm9qSW5mbzsKKworCS8qCisJ ICogV2UgbmVlZCB0d28gdHVwbGVzb3J0IGluc3RhbmNlcyAtIG9uZSBmb3IgY3VycmVudCBy YW5nZSwgb25lIGZvcgorCSAqIHNwaWxsLW92ZXIgdHVwbGVzIGZyb20gdGhlIG92ZXJsYXBw aW5nIHJhbmdlcworCSAqLworCXZvaWQJCSAgICpic190dXBsZXNvcnRzdGF0ZTsKKwlUdXBs ZXN0b3Jlc3RhdGUgKmJzX3R1cGxlc3RvcmU7Cit9IEJyaW5Tb3J0U3RhdGU7CisKIC8qIC0t LS0tLS0tLS0tLS0tLS0KICAqCSBJbmRleE9ubHlTY2FuU3RhdGUgaW5mb3JtYXRpb24KICAq CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IGMxN2I1M2Y3YWQuLjBkYmUwMGVmN2QgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0xNjg0LDYgKzE2ODQsMTcgQEAgdHlwZWRlZiBz dHJ1Y3QgSW5kZXhQYXRoCiAJU2VsZWN0aXZpdHkgaW5kZXhzZWxlY3Rpdml0eTsKIH0gSW5k ZXhQYXRoOwogCisvKgorICogcmVhZCBzb3J0ZWQgZGF0YSBmcm9tIGJyaW4gaW5kZXgKKyAq CisgKiBXZSB1c2UgSW5kZXhQYXRoLCBiZWNhdXNlIHRoYXQncyB3aGF0IGFtY29zdGVzdGlt YXRlIGlzIGV4cGVjdGluZywgYnV0CisgKiB3ZSB0eXBlZGVmIGl0IGFzIGEgc2VwYXJhdGUg c3RydWN0LgorICovCit0eXBlZGVmIHN0cnVjdCBCcmluU29ydFBhdGgKK3sKKwlJbmRleFBh dGgJaXBhdGg7Cit9IEJyaW5Tb3J0UGF0aDsKKwogLyoKICAqIEVhY2ggSW5kZXhDbGF1c2Ug cmVmZXJlbmNlcyBhIFJlc3RyaWN0SW5mbyBub2RlIGZyb20gdGhlIHF1ZXJ5J3MgV0hFUkUK ICAqIG9yIEpPSU4gY29uZGl0aW9ucywgYW5kIHNob3dzIGhvdyB0aGF0IHJlc3RyaWN0aW9u IGNhbiBiZSBhcHBsaWVkIHRvCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFu bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDFiNzg3ZmUw MzEuLmI0ZmE1ZmFmZjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC00OTgsNiArNDk4 LDM4IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4T25seVNjYW4KIAlTY2FuRGlyZWN0aW9uIGlu ZGV4b3JkZXJkaXI7CS8qIGZvcndhcmQgb3IgYmFja3dhcmQgb3IgZG9uJ3QgY2FyZSAqLwog fSBJbmRleE9ubHlTY2FuOwogCisvKgorICogWFhYIERvZXMgaXQgbWFrZSBzZW5zZSAoaXMg aXQgcG9zc2libGUpIHRvIGhhdmUgYSBzb3J0IGJ5IG1vcmUgdGhhbiBvbmUKKyAqIGNvbHVt biwgdXNpbmcgYSBCUklOIGluZGV4PworICovCit0eXBlZGVmIHN0cnVjdCBCcmluU29ydAor eworCVNjYW4JCXNjYW47CisJT2lkCQkJaW5kZXhpZDsJCS8qIE9JRCBvZiBpbmRleCB0byBz Y2FuICovCisJTGlzdAkgICAqaW5kZXhxdWFsOwkJLyogbGlzdCBvZiBpbmRleCBxdWFscyAo dXN1YWxseSBPcEV4cHJzKSAqLworCUxpc3QJICAgKmluZGV4cXVhbG9yaWc7CS8qIHRoZSBz YW1lIGluIG9yaWdpbmFsIGZvcm0gKi8KKwlTY2FuRGlyZWN0aW9uIGluZGV4b3JkZXJkaXI7 CS8qIGZvcndhcmQgb3IgYmFja3dhcmQgb3IgZG9uJ3QgY2FyZSAqLworCisJLyogbnVtYmVy IG9mIHNvcnQta2V5IGNvbHVtbnMgKi8KKwlpbnQJCQludW1Db2xzOworCisJLyogYXR0bnVt cyBpbiB0aGUgaW5kZXggKi8KKwlBdHRyTnVtYmVyICphdHRudW1zIHBnX25vZGVfYXR0cihh cnJheV9zaXplKG51bUNvbHMpKTsKKworCS8qIHRoZWlyIGluZGV4ZXMgaW4gdGhlIHRhcmdl dCBsaXN0ICovCisJQXR0ck51bWJlciAqc29ydENvbElkeCBwZ19ub2RlX2F0dHIoYXJyYXlf c2l6ZShudW1Db2xzKSk7CisKKwkvKiBPSURzIG9mIG9wZXJhdG9ycyB0byBzb3J0IHRoZW0g YnkgKi8KKwlPaWQJCSAgICpzb3J0T3BlcmF0b3JzIHBnX25vZGVfYXR0cihhcnJheV9zaXpl KG51bUNvbHMpKTsKKworCS8qIE9JRHMgb2YgY29sbGF0aW9ucyAqLworCU9pZAkJICAgKmNv bGxhdGlvbnMgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOworCisJLyogTlVM TFMgRklSU1QvTEFTVCBkaXJlY3Rpb25zICovCisJYm9vbAkgICAqbnVsbHNGaXJzdCBwZ19u b2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSk7CisKK30gQnJpblNvcnQ7CisKIC8qIC0t LS0tLS0tLS0tLS0tLS0KICAqCQliaXRtYXAgaW5kZXggc2NhbiBub2RlCiAgKgpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2Nvc3QuaCBiL3NyYy9pbmNsdWRlL29wdGlt aXplci9jb3N0LmgKaW5kZXggNmNmNDk3MDVkMy4uMWZlZDQzNjQ1YSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvb3B0aW1pemVyL2Nvc3QuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvY29zdC5oCkBAIC03MCw2ICs3MCw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVu YWJsZV9wYXJhbGxlbF9oYXNoOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX3Bh cnRpdGlvbl9wcnVuaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX3ByZXNv cnRlZF9hZ2dyZWdhdGU7CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBlbmFibGVfYXN5bmNf YXBwZW5kOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX2JyaW5zb3J0OwogZXh0 ZXJuIFBHRExMSU1QT1JUIGludCBjb25zdHJhaW50X2V4Y2x1c2lvbjsKIAogZXh0ZXJuIGRv dWJsZSBpbmRleF9wYWdlc19mZXRjaGVkKGRvdWJsZSB0dXBsZXNfZmV0Y2hlZCwgQmxvY2tO dW1iZXIgcGFnZXMsCkBAIC04MCw2ICs4MSw4IEBAIGV4dGVybiB2b2lkIGNvc3Rfc2FtcGxl c2NhbihQYXRoICpwYXRoLCBQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqYmFzZXJl bCwKIAkJCQkJCQlQYXJhbVBhdGhJbmZvICpwYXJhbV9pbmZvKTsKIGV4dGVybiB2b2lkIGNv c3RfaW5kZXgoSW5kZXhQYXRoICpwYXRoLCBQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJICAg ZG91YmxlIGxvb3BfY291bnQsIGJvb2wgcGFydGlhbF9wYXRoKTsKK2V4dGVybiB2b2lkIGNv c3RfYnJpbnNvcnQoQnJpblNvcnRQYXRoICpwYXRoLCBQbGFubmVySW5mbyAqcm9vdCwKKwkJ CQkJCSAgZG91YmxlIGxvb3BfY291bnQsIGJvb2wgcGFydGlhbF9wYXRoKTsKIGV4dGVybiB2 b2lkIGNvc3RfYml0bWFwX2hlYXBfc2NhbihQYXRoICpwYXRoLCBQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqYmFzZXJlbCwKIAkJCQkJCQkJICBQYXJhbVBhdGhJbmZvICpwYXJh bV9pbmZvLAogCQkJCQkJCQkgIFBhdGggKmJpdG1hcHF1YWwsIGRvdWJsZSBsb29wX2NvdW50 KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oIGIvc3Jj L2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKaW5kZXggMDAxZTc1YjViNy4uZWJiNjRk NTI1YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKKysr IGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKQEAgLTQ5LDYgKzQ5LDE1IEBA IGV4dGVybiBJbmRleFBhdGggKmNyZWF0ZV9pbmRleF9wYXRoKFBsYW5uZXJJbmZvICpyb290 LAogCQkJCQkJCQkJUmVsaWRzIHJlcXVpcmVkX291dGVyLAogCQkJCQkJCQkJZG91YmxlIGxv b3BfY291bnQsCiAJCQkJCQkJCQlib29sIHBhcnRpYWxfcGF0aCk7CitleHRlcm4gQnJpblNv cnRQYXRoICpjcmVhdGVfYnJpbnNvcnRfcGF0aChQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJ CQkJCUluZGV4T3B0SW5mbyAqaW5kZXgsCisJCQkJCQkJCQlMaXN0ICppbmRleGNsYXVzZXMs CisJCQkJCQkJCQlMaXN0ICpwYXRoa2V5cywKKwkJCQkJCQkJCVNjYW5EaXJlY3Rpb24gaW5k ZXhzY2FuZGlyLAorCQkJCQkJCQkJYm9vbCBpbmRleG9ubHksCisJCQkJCQkJCQlSZWxpZHMg cmVxdWlyZWRfb3V0ZXIsCisJCQkJCQkJCQlkb3VibGUgbG9vcF9jb3VudCwKKwkJCQkJCQkJ CWJvb2wgcGFydGlhbF9wYXRoKTsKIGV4dGVybiBCaXRtYXBIZWFwUGF0aCAqY3JlYXRlX2Jp dG1hcF9oZWFwX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCSAgIFJlbE9w dEluZm8gKnJlbCwKIAkJCQkJCQkJCQkJICAgUGF0aCAqYml0bWFwcXVhbCwKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oIGIvc3JjL2luY2x1ZGUvb3B0aW1p emVyL3BhdGhzLmgKaW5kZXggNTBiYzNiNTAzYS4uOWZhZTliYWUwMCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1p emVyL3BhdGhzLmgKQEAgLTIxNiw2ICsyMTYsOSBAQCBleHRlcm4gUGF0aCAqZ2V0X2NoZWFw ZXN0X2ZyYWN0aW9uYWxfcGF0aF9mb3JfcGF0aGtleXMoTGlzdCAqcGF0aHMsCiBleHRlcm4g UGF0aCAqZ2V0X2NoZWFwZXN0X3BhcmFsbGVsX3NhZmVfdG90YWxfaW5uZXIoTGlzdCAqcGF0 aHMpOwogZXh0ZXJuIExpc3QgKmJ1aWxkX2luZGV4X3BhdGhrZXlzKFBsYW5uZXJJbmZvICpy b290LCBJbmRleE9wdEluZm8gKmluZGV4LAogCQkJCQkJCQkgIFNjYW5EaXJlY3Rpb24gc2Nh bmRpcik7CitleHRlcm4gTGlzdCAqYnVpbGRfaW5kZXhfcGF0aGtleXNfYnJpbihQbGFubmVy SW5mbyAqcm9vdCwgSW5kZXhPcHRJbmZvICppbmRleCwKKwkJCQkJCQkJICBUYXJnZXRFbnRy eSAqdGxlLCBpbnQgaWR4LAorCQkJCQkJCQkgIGJvb2wgcmV2ZXJzZV9zb3J0LCBib29sIG51 bGxzX2ZpcnN0KTsKIGV4dGVybiBMaXN0ICpidWlsZF9wYXJ0aXRpb25fcGF0aGtleXMoUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcnRyZWwsCiAJCQkJCQkJCQkgIFNjYW5E aXJlY3Rpb24gc2NhbmRpciwgYm9vbCAqcGFydGlhbGtleXMpOwogZXh0ZXJuIExpc3QgKmJ1 aWxkX2V4cHJlc3Npb25fcGF0aGtleShQbGFubmVySW5mbyAqcm9vdCwgRXhwciAqZXhwciwK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvdHVwbGVzb3J0LmgKaW5kZXggYWYwNTdiNjM1OC4uZmI0ZTY1Y2YwZiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvdHVwbGVzb3J0LmgKQEAgLTM2Nyw2ICszNjcsNyBAQCBleHRlcm4gdm9pZCB0 dXBsZXNvcnRfcmVzZXQoVHVwbGVzb3J0c3RhdGUgKnN0YXRlKTsKIAogZXh0ZXJuIHZvaWQg dHVwbGVzb3J0X2dldF9zdGF0cyhUdXBsZXNvcnRzdGF0ZSAqc3RhdGUsCiAJCQkJCQkJCVR1 cGxlc29ydEluc3RydW1lbnRhdGlvbiAqc3RhdHMpOworZXh0ZXJuIHZvaWQgdHVwbGVzb3J0 X3Jlc2V0X3N0YXRzKFR1cGxlc29ydHN0YXRlICpzdGF0ZSk7CiBleHRlcm4gY29uc3QgY2hh ciAqdHVwbGVzb3J0X21ldGhvZF9uYW1lKFR1cGxlc29ydE1ldGhvZCBtKTsKIGV4dGVybiBj b25zdCBjaGFyICp0dXBsZXNvcnRfc3BhY2VfdHlwZV9uYW1lKFR1cGxlc29ydFNwYWNlVHlw ZSB0KTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3 cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dAppbmRleCBi N2ZkYTZmYzgyLi4zMDhlOTEyYzIxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N5c3ZpZXdzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5 c3ZpZXdzLm91dApAQCAtMTEzLDYgKzExMyw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZy b20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQogIGVuYWJsZV9hc3luY19hcHBlbmQg ICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2JpdG1hcHNjYW4gICAgICAgICAgICAgIHwgb24K KyBlbmFibGVfYnJpbnNvcnQgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9nYXRoZXJt ZXJnZSAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2hhc2hhZ2cgICAgICAgICAgICAgICAg IHwgb24KICBlbmFibGVfaGFzaGpvaW4gICAgICAgICAgICAgICAgfCBvbgpAQCAtMTMzLDcg KzEzNCw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mgd2hlcmUg bmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfc2Vxc2NhbiAgICAgICAgICAgICAgICAg fCBvbgogIGVuYWJsZV9zb3J0ICAgICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3Rp ZHNjYW4gICAgICAgICAgICAgICAgIHwgb24KLSgyMiByb3dzKQorKDIzIHJvd3MpCiAKIC0t IFRlc3QgdGhhdCB0aGUgcGdfdGltZXpvbmVfbmFtZXMgYW5kIHBnX3RpbWV6b25lX2FiYnJl dnMgdmlld3MgYXJlCiAtLSBtb3JlLW9yLWxlc3Mgd29ya2luZy4gIFdlIGNhbid0IHRlc3Qg dGhlaXIgY29udGVudHMgaW4gYW55IGdyZWF0IGRldGFpbAotLSAKMi40MS4wCgo= --------------CooOQ6LlXwcsddypE9zFAJMn Content-Type: text/x-patch; charset=UTF-8; name="0005-wip-brinsort-explain-stats-20230710.patch" Content-Disposition: attachment; filename="0005-wip-brinsort-explain-stats-20230710.patch" Content-Transfer-Encoding: base64 RnJvbSA5MzgxNThkYzNmYTg4ZjZiZWQxZTE2YmNmNDVhYWIzM2Y5ZjE1ZGNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyOSBPY3QgMjAyMiAyMjowMTowMSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDUvMTFdIHdpcDogYnJpbnNvcnQgZXhwbGFpbiBzdGF0cwoKU2hvdyBz b21lIGludGVybmFsIHN0YXRzIGFib3V0IEJSSU4gU29ydCBpbiBFWFBMQUlOIG91dHB1dC4K LS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICB8IDEzMiArKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNv cnQuYyB8ICA2NiArKysrKysrKysrKy0tLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmggICAgICAgfCAgMzkgKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjIzIGluc2VydGlv bnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBk MmVhZTllYTFmLi42ZDE2MDkwMTFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC04 Nyw2ICs4Nyw4IEBAIHN0YXRpYyB2b2lkIHNob3dfaW5jcmVtZW50YWxfc29ydF9rZXlzKElu Y3JlbWVudGFsU29ydFN0YXRlICppbmNyc29ydHN0YXRlLAogCQkJCQkJCQkJICAgTGlzdCAq YW5jZXN0b3JzLCBFeHBsYWluU3RhdGUgKmVzKTsKIHN0YXRpYyB2b2lkIHNob3dfYnJpbnNv cnRfa2V5cyhCcmluU29ydFN0YXRlICpzb3J0c3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJ CQkJCQkgICBFeHBsYWluU3RhdGUgKmVzKTsKK3N0YXRpYyB2b2lkIHNob3dfYnJpbnNvcnRf c3RhdHMoQnJpblNvcnRTdGF0ZSAqc29ydHN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCisJCQkJ CQkJCUV4cGxhaW5TdGF0ZSAqZXMpOwogc3RhdGljIHZvaWQgc2hvd19tZXJnZV9hcHBlbmRf a2V5cyhNZXJnZUFwcGVuZFN0YXRlICptc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJCQkJ CQkJICAgRXhwbGFpblN0YXRlICplcyk7CiBzdGF0aWMgdm9pZCBzaG93X2FnZ19rZXlzKEFn Z1N0YXRlICphc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKQEAgLTE4MjgsNiArMTgzMCw3IEBA IEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJ CQkJCQkJCQkJICAgcGxhbnN0YXRlLCBlcyk7CiAJCQlzaG93X3NjYW5fcXVhbChwbGFuLT5x dWFsLCAiRmlsdGVyIiwgcGxhbnN0YXRlLCBhbmNlc3RvcnMsIGVzKTsKIAkJCXNob3dfYnJp bnNvcnRfa2V5cyhjYXN0Tm9kZShCcmluU29ydFN0YXRlLCBwbGFuc3RhdGUpLCBhbmNlc3Rv cnMsIGVzKTsKKwkJCXNob3dfYnJpbnNvcnRfc3RhdHMoY2FzdE5vZGUoQnJpblNvcnRTdGF0 ZSwgcGxhbnN0YXRlKSwgYW5jZXN0b3JzLCBlcyk7CiAJCQlpZiAocGxhbi0+cXVhbCkKIAkJ CQlzaG93X2luc3RydW1lbnRhdGlvbl9jb3VudCgiUm93cyBSZW1vdmVkIGJ5IEZpbHRlciIs IDEsCiAJCQkJCQkJCQkJICAgcGxhbnN0YXRlLCBlcyk7CkBAIC0yNDQ2LDYgKzI0NDksMTM1 IEBAIHNob3dfYnJpbnNvcnRfa2V5cyhCcmluU29ydFN0YXRlICpzb3J0c3RhdGUsIExpc3Qg KmFuY2VzdG9ycywgRXhwbGFpblN0YXRlICplcykKIAkJCQkJCSBhbmNlc3RvcnMsIGVzKTsK IH0KIAorc3RhdGljIHZvaWQKK3Nob3dfYnJpbnNvcnRfc3RhdHMoQnJpblNvcnRTdGF0ZSAq c29ydHN0YXRlLCBMaXN0ICphbmNlc3RvcnMsIEV4cGxhaW5TdGF0ZSAqZXMpCit7CisJQnJp blNvcnRTdGF0cyAgKnN0YXRzID0gJnNvcnRzdGF0ZS0+YnNfc3RhdHM7CisKKwlpZiAoc29y dHN0YXRlLT5ic19zY2FuICE9IE5VTEwgJiYKKwkJc29ydHN0YXRlLT5ic19zY2FuLT5yYW5n ZXMgIT0gTlVMTCkKKwl7CisJCVR1cGxlc29ydEluc3RydW1lbnRhdGlvbiBzdGF0czsKKwor CQltZW1zZXQoJnN0YXRzLCAwLCBzaXplb2YoVHVwbGVzb3J0SW5zdHJ1bWVudGF0aW9uKSk7 CisJCXR1cGxlc29ydF9nZXRfc3RhdHMoc29ydHN0YXRlLT5ic19zY2FuLT5yYW5nZXMsICZz dGF0cyk7CisKKwkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQlhcHBlbmRTdHJpbmdJbmZv KGVzLT5zdHIsICJSYW5nZXM6ICIgSU5UNjRfRk9STUFUICIgIEJ1aWxkIHRpbWU6ICIgSU5U NjRfRk9STUFUICIgIE1ldGhvZDogJXMgIFNwYWNlOiAiIElOVDY0X0ZPUk1BVCAiIGtCICgl cylcbiIsCisJCQkJCQkgc29ydHN0YXRlLT5ic19zY2FuLT5ucmFuZ2VzLAorCQkJCQkJIHNv cnRzdGF0ZS0+YnNfc3RhdHMucmFuZ2VzX2J1aWxkX21zLAorCQkJCQkJIHR1cGxlc29ydF9t ZXRob2RfbmFtZShzdGF0cy5zb3J0TWV0aG9kKSwKKwkJCQkJCSBzdGF0cy5zcGFjZVVzZWQs CisJCQkJCQkgdHVwbGVzb3J0X3NwYWNlX3R5cGVfbmFtZShzdGF0cy5zcGFjZVR5cGUpKTsK Kwl9CisKKwlpZiAoc3RhdHMtPnNvcnRfY291bnQgPiAwKQorCXsKKwkJRXhwbGFpblByb3Bl cnR5SW50ZWdlcigiUmFuZ2VzIFByb2Nlc3NlZCIsIE5VTEwsIChpbnQ2NCkKKwkJCQkJCQkg ICBzdGF0cy0+cmFuZ2VfY291bnQsIGVzKTsKKworCQlpZiAoZXMtPmZvcm1hdCA9PSBFWFBM QUlOX0ZPUk1BVF9URVhUKQorCQl7CisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJTb3J0 cyIsIE5VTEwsIChpbnQ2NCkKKwkJCQkJCQkJICAgc3RhdHMtPnNvcnRfY291bnQsIGVzKTsK KworCQkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+ c3RyLCAiVHVwbGVzIFNvcnRlZDogIiBJTlQ2NF9GT1JNQVQgIiAgUGVyLXNvcnQ6ICIgSU5U NjRfRk9STUFUICAiICBEaXJlY3Q6ICIgSU5UNjRfRk9STUFUICIgIFNwaWxsZWQ6ICIgSU5U NjRfRk9STUFUICIgIFJlc3BpbGxlZDogIiBJTlQ2NF9GT1JNQVQgIlxuIiwKKwkJCQkJCQkg c3RhdHMtPm50dXBsZXNfdHVwbGVzb3J0X2FsbCwKKwkJCQkJCQkgc3RhdHMtPm50dXBsZXNf dHVwbGVzb3J0X2FsbCAvIHN0YXRzLT5zb3J0X2NvdW50LAorCQkJCQkJCSBzdGF0cy0+bnR1 cGxlc190dXBsZXNvcnRfZGlyZWN0LAorCQkJCQkJCSBzdGF0cy0+bnR1cGxlc19zcGlsbGVk LAorCQkJCQkJCSBzdGF0cy0+bnR1cGxlc19yZXNwaWxsZWQpOworCQl9CisJCWVsc2UKKwkJ eworCQkJRXhwbGFpbk9wZW5Hcm91cCgiU29ydHMiLCAiU29ydHMiLCB0cnVlLCBlcyk7CisK KwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIkNvdW50IiwgTlVMTCwgKGludDY0KQorCQkJ CQkJCQkgICBzdGF0cy0+c29ydF9jb3VudCwgZXMpOworCisJCQlFeHBsYWluUHJvcGVydHlJ bnRlZ2VyKCJUdXBsZXMgcGVyIHNvcnQiLCBOVUxMLCAoaW50NjQpCisJCQkJCQkJCSAgIHN0 YXRzLT5udHVwbGVzX3R1cGxlc29ydF9hbGwgLyBzdGF0cy0+c29ydF9jb3VudCwgZXMpOwor CisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJTb3J0ZWQgdHVwbGVzIChhbGwpIiwgTlVM TCwgKGludDY0KQorCQkJCQkJCQkgICBzdGF0cy0+bnR1cGxlc190dXBsZXNvcnRfYWxsLCBl cyk7CisKKwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlNvcnRlZCB0dXBsZXMgKGRpcmVj dCkiLCBOVUxMLCAoaW50NjQpCisJCQkJCQkJCSAgIHN0YXRzLT5udHVwbGVzX3R1cGxlc29y dF9kaXJlY3QsIGVzKTsKKworCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiU3BpbGxlZCB0 dXBsZXMiLCBOVUxMLCAoaW50NjQpCisJCQkJCQkJCSAgIHN0YXRzLT5udHVwbGVzX3NwaWxs ZWQsIGVzKTsKKworCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiUmVzcGlsbGVkIHR1cGxl cyIsIE5VTEwsIChpbnQ2NCkKKwkJCQkJCQkJICAgc3RhdHMtPm50dXBsZXNfcmVzcGlsbGVk LCBlcyk7CisKKwkJCUV4cGxhaW5DbG9zZUdyb3VwKCJTb3J0cyIsICJTb3J0cyIsIHRydWUs IGVzKTsKKwkJfQorCX0KKworCWlmIChzdGF0cy0+c29ydF9jb3VudF9pbl9tZW1vcnkgPiAw KQorCXsKKwkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKKwkJewor CQkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3Ry LCAiU29ydHMgKGluLW1lbW9yeSkgIENvdW50OiAiIElOVDY0X0ZPUk1BVCAiICBTcGFjZSBU b3RhbDogIiBJTlQ2NF9GT1JNQVQgICIga0IgIE1heGltdW06ICIgSU5UNjRfRk9STUFUICIg a0IgIEF2ZXJhZ2U6ICIgSU5UNjRfRk9STUFUICIga0JcbiIsCisJCQkJCQkJIHN0YXRzLT5z b3J0X2NvdW50X2luX21lbW9yeSwKKwkJCQkJCQkgc3RhdHMtPnRvdGFsX3NwYWNlX3VzZWRf aW5fbWVtb3J5LAorCQkJCQkJCSBzdGF0cy0+bWF4X3NwYWNlX3VzZWRfaW5fbWVtb3J5LAor CQkJCQkJCSBzdGF0cy0+dG90YWxfc3BhY2VfdXNlZF9pbl9tZW1vcnkgLyBzdGF0cy0+c29y dF9jb3VudF9pbl9tZW1vcnkpOworCQl9CisJCWVsc2UKKwkJeworCQkJRXhwbGFpbk9wZW5H cm91cCgiSW4tTWVtb3J5IFNvcnRzIiwgIkluLU1lbW9yeSBTb3J0cyIsIHRydWUsIGVzKTsK KworCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiQ291bnQiLCBOVUxMLCAoaW50NjQpCisJ CQkJCQkJCSAgIHN0YXRzLT5zb3J0X2NvdW50X2luX21lbW9yeSwgZXMpOworCisJCQlFeHBs YWluUHJvcGVydHlJbnRlZ2VyKCJBdmVyYWdlIHNwYWNlIiwgImtCIiwgKGludDY0KQorCQkJ CQkJCQkgICBzdGF0cy0+dG90YWxfc3BhY2VfdXNlZF9pbl9tZW1vcnkgLyBzdGF0cy0+c29y dF9jb3VudF9pbl9tZW1vcnksIGVzKTsKKworCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigi TWF4aW11bSBzcGFjZSIsICJrQiIsIChpbnQ2NCkKKwkJCQkJCQkJICAgc3RhdHMtPm1heF9z cGFjZV91c2VkX2luX21lbW9yeSwgZXMpOworCisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2Vy KCJUb3RhbCBzcGFjZSIsICJrQiIsIChpbnQ2NCkKKwkJCQkJCQkJICAgc3RhdHMtPnRvdGFs X3NwYWNlX3VzZWRfaW5fbWVtb3J5LCBlcyk7CisKKwkJCUV4cGxhaW5DbG9zZUdyb3VwKCJJ bi1NZW1vcnkgU29ydHMiLCAiSW4tTWVtb3J5IFNvcnRzIiwgdHJ1ZSwgZXMpOworCQl9CisJ fQorCisJaWYgKHN0YXRzLT5zb3J0X2NvdW50X29uX2Rpc2sgPiAwKQorCXsKKwkJaWYgKGVz LT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKKwkJeworCQkJRXhwbGFpbkluZGVu dFRleHQoZXMpOworCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiU29ydHMgKG9uLWRp c2spICBDb3VudDogIiBJTlQ2NF9GT1JNQVQgIiAgU3BhY2UgVG90YWw6ICIgSU5UNjRfRk9S TUFUICAiIGtCICBNYXhpbXVtOiAiIElOVDY0X0ZPUk1BVCAiIGtCICBBdmVyYWdlOiAiIElO VDY0X0ZPUk1BVCAiIGtCXG4iLAorCQkJCQkJCSBzdGF0cy0+c29ydF9jb3VudF9vbl9kaXNr LAorCQkJCQkJCSBzdGF0cy0+dG90YWxfc3BhY2VfdXNlZF9vbl9kaXNrLAorCQkJCQkJCSBz dGF0cy0+bWF4X3NwYWNlX3VzZWRfb25fZGlzaywKKwkJCQkJCQkgc3RhdHMtPnRvdGFsX3Nw YWNlX3VzZWRfb25fZGlzayAvIHN0YXRzLT5zb3J0X2NvdW50X29uX2Rpc2spOworCQl9CisJ CWVsc2UKKwkJeworCQkJRXhwbGFpbk9wZW5Hcm91cCgiT24tRGlzayBTb3J0cyIsICJPbi1E aXNrIFNvcnRzIiwgdHJ1ZSwgZXMpOworCisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJD b3VudCIsIE5VTEwsIChpbnQ2NCkKKwkJCQkJCQkJICAgc3RhdHMtPnNvcnRfY291bnRfb25f ZGlzaywgZXMpOworCisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJBdmVyYWdlIHNwYWNl IiwgImtCIiwgKGludDY0KQorCQkJCQkJCQkgICBzdGF0cy0+dG90YWxfc3BhY2VfdXNlZF9v bl9kaXNrIC8gc3RhdHMtPnNvcnRfY291bnRfb25fZGlzaywgZXMpOworCisJCQlFeHBsYWlu UHJvcGVydHlJbnRlZ2VyKCJNYXhpbXVtIHNwYWNlIiwgImtCIiwgKGludDY0KQorCQkJCQkJ CQkgICBzdGF0cy0+bWF4X3NwYWNlX3VzZWRfb25fZGlzaywgZXMpOworCisJCQlFeHBsYWlu UHJvcGVydHlJbnRlZ2VyKCJUb3RhbCBzcGFjZSIsICJrQiIsIChpbnQ2NCkKKwkJCQkJCQkJ ICAgc3RhdHMtPnRvdGFsX3NwYWNlX3VzZWRfb25fZGlzaywgZXMpOworCisJCQlFeHBsYWlu Q2xvc2VHcm91cCgiT24tRGlzayBTb3J0cyIsICJPbi1EaXNrIFNvcnRzIiwgdHJ1ZSwgZXMp OworCQl9CisJfQorfQorCiAvKgogICogTGlrZXdpc2UsIGZvciBhIE1lcmdlQXBwZW5kIG5v ZGUuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29y dC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMKaW5kZXggOTUwNWVh ZmM1NC4uNjE0ZDI4YzgzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJyaW5Tb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMK QEAgLTQ1MCw2ICs0NTAsOCBAQCBicmluc29ydF9sb2FkX3R1cGxlcyhCcmluU29ydFN0YXRl ICpub2RlLCBib29sIGNoZWNrX3dhdGVybWFyaywgYm9vbCBudWxsX3Byb2NlcwogCWlmIChu dWxsX3Byb2Nlc3NpbmcgJiYgIShyYW5nZS0+aGFzX251bGxzIHx8IHJhbmdlLT5ub3Rfc3Vt bWFyaXplZCB8fCByYW5nZS0+YWxsX251bGxzKSkKIAkJcmV0dXJuOwogCisJbm9kZS0+YnNf c3RhdHMucmFuZ2VfY291bnQrKzsKKwogCWJyaW5zb3J0X3N0YXJ0X3RpZHNjYW4obm9kZSk7 CiAKIAlzY2FuID0gbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjOwpAQCAtNTM0LDcgKzUz NiwxMCBAQCBicmluc29ydF9sb2FkX3R1cGxlcyhCcmluU29ydFN0YXRlICpub2RlLCBib29s IGNoZWNrX3dhdGVybWFyaywgYm9vbCBudWxsX3Byb2NlcwogCQkJCS8qIFN0YXNoIGl0IHRv IHRoZSB0dXBsZXN0b3JlICh3aGVuIE5VTEwsIG9yIGlnbm9yZQogCQkJCSAqIGl0ICh3aGVu IG5vdC1OVUxMKS4gKi8KIAkJCQlpZiAoaXNudWxsKQorCQkJCXsKIAkJCQkJdHVwbGVzdG9y ZV9wdXR0dXBsZXNsb3Qobm9kZS0+YnNfdHVwbGVzdG9yZSwgdG1wc2xvdCk7CisJCQkJCW5v ZGUtPmJzX3N0YXRzLm50dXBsZXNfc3BpbGxlZCsrOworCQkJCX0KIAogCQkJCS8qIE5VTEwg b3Igbm90LCB3ZSdyZSBkb25lICovCiAJCQkJY29udGludWU7CkBAIC01NTQsNyArNTU5LDEy IEBAIGJyaW5zb3J0X2xvYWRfdHVwbGVzKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIGJvb2wgY2hl Y2tfd2F0ZXJtYXJrLCBib29sIG51bGxfcHJvY2VzCiAJCQkJCQkJCQkJICAmbm9kZS0+YnNf c29ydHN1cHBvcnQpOwogCiAJCQlpZiAoY21wIDw9IDApCisJCQl7CiAJCQkJdHVwbGVzb3J0 X3B1dHR1cGxlc2xvdChub2RlLT5ic190dXBsZXNvcnRzdGF0ZSwgdG1wc2xvdCk7CisJCQkJ bm9kZS0+YnNfc3RhdHMubnR1cGxlc190dXBsZXNvcnRfZGlyZWN0Kys7CisJCQkJbm9kZS0+ YnNfc3RhdHMubnR1cGxlc190dXBsZXNvcnRfYWxsKys7CisJCQkJbm9kZS0+YnNfc3RhdHMu bnR1cGxlc190dXBsZXNvcnQrKzsKKwkJCX0KIAkJCWVsc2UKIAkJCXsKIAkJCQkvKgpAQCAt NTY1LDYgKzU3NSw3IEBAIGJyaW5zb3J0X2xvYWRfdHVwbGVzKEJyaW5Tb3J0U3RhdGUgKm5v ZGUsIGJvb2wgY2hlY2tfd2F0ZXJtYXJrLCBib29sIG51bGxfcHJvY2VzCiAJCQkJICogcmVz cGlsbCkgYW5kIHN0b3Agc3BpbGxpbmcuCiAJCQkJICovCiAJCQkJdHVwbGVzdG9yZV9wdXR0 dXBsZXNsb3Qobm9kZS0+YnNfdHVwbGVzdG9yZSwgdG1wc2xvdCk7CisJCQkJbm9kZS0+YnNf c3RhdHMubnR1cGxlc19zcGlsbGVkKys7CiAJCQl9CiAJCX0KIApAQCAtNjMzLDcgKzY0NCwx MSBAQCBicmluc29ydF9sb2FkX3NwaWxsX3R1cGxlcyhCcmluU29ydFN0YXRlICpub2RlLCBi b29sIGNoZWNrX3dhdGVybWFyaykKIAkJCQkJCQkJCSAgJm5vZGUtPmJzX3NvcnRzdXBwb3J0 KTsKIAogCQlpZiAoY21wIDw9IDApCisJCXsKIAkJCXR1cGxlc29ydF9wdXR0dXBsZXNsb3Qo bm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUsIHNsb3QpOworCQkJbm9kZS0+YnNfc3RhdHMubnR1 cGxlc190dXBsZXNvcnRfYWxsKys7CisJCQlub2RlLT5ic19zdGF0cy5udHVwbGVzX3R1cGxl c29ydCsrOworCQl9CiAJCWVsc2UKIAkJewogCQkJLyoKQEAgLTY0NCw2ICs2NTksNyBAQCBi cmluc29ydF9sb2FkX3NwaWxsX3R1cGxlcyhCcmluU29ydFN0YXRlICpub2RlLCBib29sIGNo ZWNrX3dhdGVybWFyaykKIAkJCSAqIHJlc3BpbGwpIGFuZCBzdG9wIHNwaWxsaW5nLgogCQkJ ICovCiAJCQl0dXBsZXN0b3JlX3B1dHR1cGxlc2xvdCh0dXBzdG9yZSwgc2xvdCk7CisJCQlu b2RlLT5ic19zdGF0cy5udHVwbGVzX3Jlc3BpbGxlZCsrOwogCQl9CiAJfQogCkBAIC05MzMs MjMgKzk0OSw0MCBAQCBJbmRleE5leHQoQnJpblNvcnRTdGF0ZSAqbm9kZSkKIAkJCQkJICov CiAJCQkJCWlmIChub2RlLT5ic190dXBsZXNvcnRzdGF0ZSkKIAkJCQkJewotI2lmZGVmIERF QlVHX0JSSU5fU09SVAorCQkJCQkJVHVwbGVzb3J0SW5zdHJ1bWVudGF0aW9uIHN0YXRzOwor CisJCQkJCQkvKgorCQkJCQkJICogUmVzZXQgdHVwbGVzb3J0IHN0YXRpc3RpY3MgYmV0d2Vl biBydW5zLCBvdGhlcndpc2UKKwkJCQkJCSAqIHdlJ2xsIGtlZXAgcmUtdXNpbmcgc3RhdHMg ZnJvbSB0aGUgbGFyZ2VzdCBydW4uCisJCQkJCQkgKi8KIAkJCQkJCXR1cGxlc29ydF9yZXNl dF9zdGF0cyhub2RlLT5ic190dXBsZXNvcnRzdGF0ZSk7Ci0jZW5kaWYKIAogCQkJCQkJdHVw bGVzb3J0X3BlcmZvcm1zb3J0KG5vZGUtPmJzX3R1cGxlc29ydHN0YXRlKTsKIAotI2lmZGVm IERFQlVHX0JSSU5fU09SVAotCQkJCQkJaWYgKGRlYnVnX2JyaW5fc29ydCkKLQkJCQkJCXsK LQkJCQkJCQlUdXBsZXNvcnRJbnN0cnVtZW50YXRpb24gc3RhdHM7CisJCQkJCQlub2RlLT5i c19zdGF0cy5zb3J0X2NvdW50Kys7CisJCQkJCQlub2RlLT5ic19zdGF0cy5udHVwbGVzX3R1 cGxlc29ydCA9IDA7CiAKLQkJCQkJCQltZW1zZXQoJnN0YXRzLCAwLCBzaXplb2YoVHVwbGVz b3J0SW5zdHJ1bWVudGF0aW9uKSk7Ci0JCQkJCQkJdHVwbGVzb3J0X2dldF9zdGF0cyhub2Rl LT5ic190dXBsZXNvcnRzdGF0ZSwgJnN0YXRzKTsKKwkJCQkJCXR1cGxlc29ydF9nZXRfc3Rh dHMobm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUsICZzdGF0cyk7CiAKLQkJCQkJCQl0dXBsZXNv cnRfZ2V0X3N0YXRzKG5vZGUtPmJzX3R1cGxlc29ydHN0YXRlLCAmc3RhdHMpOworCQkJCQkJ aWYgKHN0YXRzLnNwYWNlVHlwZSA9PSBTT1JUX1NQQUNFX1RZUEVfRElTSykKKwkJCQkJCXsK KwkJCQkJCQlub2RlLT5ic19zdGF0cy5zb3J0X2NvdW50X29uX2Rpc2srKzsKKwkJCQkJCQlu b2RlLT5ic19zdGF0cy50b3RhbF9zcGFjZV91c2VkX29uX2Rpc2sgKz0gc3RhdHMuc3BhY2VV c2VkOworCQkJCQkJCW5vZGUtPmJzX3N0YXRzLm1heF9zcGFjZV91c2VkX29uX2Rpc2sgPSBN YXgobm9kZS0+YnNfc3RhdHMubWF4X3NwYWNlX3VzZWRfb25fZGlzaywKKwkJCQkJCQkJCQkJ CQkJCQkJCXN0YXRzLnNwYWNlVXNlZCk7CisJCQkJCQl9CisJCQkJCQllbHNlIGlmIChzdGF0 cy5zcGFjZVR5cGUgPT0gU09SVF9TUEFDRV9UWVBFX01FTU9SWSkKKwkJCQkJCXsKKwkJCQkJ CQlub2RlLT5ic19zdGF0cy5zb3J0X2NvdW50X2luX21lbW9yeSsrOworCQkJCQkJCW5vZGUt PmJzX3N0YXRzLnRvdGFsX3NwYWNlX3VzZWRfaW5fbWVtb3J5ICs9IHN0YXRzLnNwYWNlVXNl ZDsKKwkJCQkJCQlub2RlLT5ic19zdGF0cy5tYXhfc3BhY2VfdXNlZF9pbl9tZW1vcnkgPSBN YXgobm9kZS0+YnNfc3RhdHMubWF4X3NwYWNlX3VzZWRfaW5fbWVtb3J5LAorCQkJCQkJCQkJ CQkJCQkJCQkJICBzdGF0cy5zcGFjZVVzZWQpOworCQkJCQkJfQogCi0JCQkJCQkJZWxvZyhX QVJOSU5HLCAibWV0aG9kOiAlcyAgc3BhY2U6ICVsZCBrQiAoJXMpIiwKKyNpZmRlZiBERUJV R19CUklOX1NPUlQKKwkJCQkJCWlmIChkZWJ1Z19icmluX3NvcnQpCisJCQkJCQl7CisJCQkJ CQkJZWxvZyhXQVJOSU5HLCAibWV0aG9kOiAlcyAgc3BhY2U6ICIgSU5UNjRfRk9STUFUICIg a0IgKCVzKSIsCiAJCQkJCQkJCSB0dXBsZXNvcnRfbWV0aG9kX25hbWUoc3RhdHMuc29ydE1l dGhvZCksCiAJCQkJCQkJCSBzdGF0cy5zcGFjZVVzZWQsCiAJCQkJCQkJCSB0dXBsZXNvcnRf c3BhY2VfdHlwZV9uYW1lKHN0YXRzLnNwYWNlVHlwZSkpOwpAQCAtMTIxOSw5ICsxMjUyLDEw IEBAIEV4ZWNFbmRCcmluU29ydChCcmluU29ydFN0YXRlICpub2RlKQogCQl0dXBsZXNvcnRf ZW5kKG5vZGUtPmJzX3R1cGxlc29ydHN0YXRlKTsKIAlub2RlLT5ic190dXBsZXNvcnRzdGF0 ZSA9IE5VTEw7CiAKLQlpZiAobm9kZS0+YnNfc2Nhbi0+cmFuZ2VzICE9IE5VTEwpCisJaWYg KG5vZGUtPmJzX3NjYW4gIT0gTlVMTCAmJgorCQlub2RlLT5ic19zY2FuLT5yYW5nZXMgIT0g TlVMTCkKIAkJdHVwbGVzb3J0X2VuZChub2RlLT5ic19zY2FuLT5yYW5nZXMpOwotCW5vZGUt PmJzX3NjYW4tPnJhbmdlcyA9IE5VTEw7CisJbm9kZS0+YnNfc2NhbiA9IE5VTEw7CiB9CiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KQEAgLTEzMTEsNiArMTM0NSw3IEBAIEV4ZWNJbml0QnJpblNvcnRS YW5nZXMoQnJpblNvcnQgKm5vZGUsIEJyaW5Tb3J0U3RhdGUgKnBsYW5zdGF0ZSkKIAlGbWdy SW5mbyAgICpyYW5nZXByb2M7CiAJQnJpblJhbmdlU2NhbkRlc2MgKmJyc2NhbjsKIAlib29s CQlhc2M7CisJVGltZXN0YW1wVHoJc3RhcnRfdHM7CiAKIAkvKiBCUklOIFNvcnQgb25seSBh bGxvd3MgT1JERVIgQlkgdXNpbmcgYSBzaW5nbGUgY29sdW1uICovCiAJQXNzZXJ0KG5vZGUt Pm51bUNvbHMgPT0gMSk7CkBAIC0xMzU1LDE1ICsxMzkwLDE4IEBAIEV4ZWNJbml0QnJpblNv cnRSYW5nZXMoQnJpblNvcnQgKm5vZGUsIEJyaW5Tb3J0U3RhdGUgKnBsYW5zdGF0ZSkKIAog CS8qCiAJICogQXNrIHRoZSBvcGNsYXNzIHRvIHByb2R1Y2UgcmFuZ2VzIGluIGFwcHJvcHJp YXRlIG9yZGVyaW5nLgotCSAqCi0JICogWFhYIFBhc3MgaW5mbyBhYm91dCBBU0MvREVTQywg TlVMTFMgRklSU1QvTEFTVC4KIAkgKi8KKwlzdGFydF90cyA9IEdldEN1cnJlbnRUaW1lc3Rh bXAoKTsKKwogCWJyc2NhbiA9IChCcmluUmFuZ2VTY2FuRGVzYyAqKSBEYXR1bUdldFBvaW50 ZXIoRnVuY3Rpb25DYWxsM0NvbGwocmFuZ2Vwcm9jLAogCQkJCQkJCQkJCQlub2RlLT5jb2xs YXRpb25zWzBdLAogCQkJCQkJCQkJCQlQb2ludGVyR2V0RGF0dW0oc2NhbiksCiAJCQkJCQkJ CQkJCUludDE2R2V0RGF0dW0oYXR0bm8pLAogCQkJCQkJCQkJCQlCb29sR2V0RGF0dW0oYXNj KSkpOwogCisJcGxhbnN0YXRlLT5ic19zdGF0cy5yYW5nZXNfYnVpbGRfbXMKKwkJPSBUaW1l c3RhbXBEaWZmZXJlbmNlTWlsbGlzZWNvbmRzKHN0YXJ0X3RzLCBHZXRDdXJyZW50VGltZXN0 YW1wKCkpOworCiAJLyogYWxsb2NhdGUgZm9yIHNwYWNlLCBhbmQgYWxzbyBmb3IgdGhlIGFs dGVybmF0aXZlIG9yZGVyaW5nICovCiAJcGxhbnN0YXRlLT5ic19zY2FuID0gYnJzY2FuOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBjYmFhNTQwNzY4Li5iNjM1YTg0NWUxIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTY0Niw2ICsxNjQ2LDQ0IEBAIHR5cGVkZWYg c3RydWN0IEJyaW5SYW5nZXMKIAlCcmluUmFuZ2UJcmFuZ2VzW0ZMRVhJQkxFX0FSUkFZX01F TUJFUl07CiB9IEJyaW5SYW5nZXM7CiAKK3R5cGVkZWYgc3RydWN0IEJyaW5Tb3J0U3RhdHMK K3sKKwkvKiBudW1iZXIgb2Ygc29ydHMgKi8KKwlpbnQ2NAlzb3J0X2NvdW50OworCisJLyog bnVtYmVyIG9mIHJhbmdlcyBsb2FkZWQgKi8KKwlpbnQ2NAlyYW5nZV9jb3VudDsKKworCS8q IHR1cGxlcyBpbiB0aGUgY3VycmVudCB0dXBsZXNvcnQgKi8KKwlpbnQ2NAludHVwbGVzX3R1 cGxlc29ydDsKKworCS8qIHR1cGxlcyB3cml0dGVuIGRpcmVjdGx5IHRvIHR1cGxlc29ydCAq LworCWludDY0CW50dXBsZXNfdHVwbGVzb3J0X2RpcmVjdDsKKworCS8qIHR1cGxlcyB3cml0 dGVuIHRvIHR1cGxlc29ydCAoYWxsKSAqLworCWludDY0CW50dXBsZXNfdHVwbGVzb3J0X2Fs bDsKKworCS8qIHR1cGxlcyB3cml0dGVuIHRvIHR1cGxlc3RvcmUgKi8KKwlpbnQ2NAludHVw bGVzX3NwaWxsZWQ7CisKKwkvKiB0dXBsZXMgY29waWVkIGZyb20gb2xkIHRvIG5ldyB0dXBs ZXN0b3JlICovCisJaW50NjQJbnR1cGxlc19yZXNwaWxsZWQ7CisKKwkvKiBudW1iZXIgb2Yg aW4tbWVtb3J5L29uLWRpc2sgc29ydHMgKi8KKwlpbnQ2NAlzb3J0X2NvdW50X2luX21lbW9y eTsKKwlpbnQ2NAlzb3J0X2NvdW50X29uX2Rpc2s7CisKKwkvKiB0b3RhbC9tYXhpbXVtIGFt b3VudCBvZiBzcGFjZSB1c2VkIGJ5IGVpdGhlciBzb3J0ICovCisJaW50NjQJdG90YWxfc3Bh Y2VfdXNlZF9pbl9tZW1vcnk7CisJaW50NjQJdG90YWxfc3BhY2VfdXNlZF9vbl9kaXNrOwor CWludDY0CW1heF9zcGFjZV91c2VkX2luX21lbW9yeTsKKwlpbnQ2NAltYXhfc3BhY2VfdXNl ZF9vbl9kaXNrOworCisJLyogdGltZSB0byBidWlsZCByYW5nZXMgKG1pbGxpc2Vjb25kcykg Ki8KKwlpbnQ2NAlyYW5nZXNfYnVpbGRfbXM7CisKK30gQnJpblNvcnRTdGF0czsKKwogdHlw ZWRlZiBzdHJ1Y3QgQnJpblNvcnRTdGF0ZQogewogCVNjYW5TdGF0ZQlzczsJCQkJLyogaXRz IGZpcnN0IGZpZWxkIGlzIE5vZGVUYWcgKi8KQEAgLTE2ODIsNiArMTcyMCw3IEBAIHR5cGVk ZWYgc3RydWN0IEJyaW5Tb3J0U3RhdGUKIAlCcmluU29ydFBoYXNlCWJzX3BoYXNlOwogCVNv cnRTdXBwb3J0RGF0YQlic19zb3J0c3VwcG9ydDsKIAlQcm9qZWN0aW9uSW5mbyAqYnNfUHJv akluZm87CisJQnJpblNvcnRTdGF0cwlic19zdGF0czsKIAogCS8qCiAJICogV2UgbmVlZCB0 d28gdHVwbGVzb3J0IGluc3RhbmNlcyAtIG9uZSBmb3IgY3VycmVudCByYW5nZSwgb25lIGZv cgotLSAKMi40MS4wCgo= --------------CooOQ6LlXwcsddypE9zFAJMn Content-Type: text/x-patch; charset=UTF-8; name="0006-wip-multiple-watermark-steps-20230710.patch" Content-Disposition: attachment; filename="0006-wip-multiple-watermark-steps-20230710.patch" Content-Transfer-Encoding: base64 RnJvbSA4Y2M2NGM2N2UzN2U3MGFkMjA1NjcwZDMyNGZhNWNmYzBkNjZjZjQ0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCAyMCBPY3QgMjAyMiAxMzowMzowMCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDYvMTFdIHdpcDogbXVsdGlwbGUgd2F0ZXJtYXJrIHN0ZXBzCgpBbGxv dyBpbmNyZW1lbnRpbmcgdGhlIG1pbnZhbCB3YXRlcm1hcmsgZmFzdGVyLCBieSBza2lwcGlu ZyBzb21lIG1pbnZhbAp2YWx1ZXMuIFRoaXMgYWxsb3dzIHNvcnRpbmcgbW9yZSBkYXRhIGF0 IG9uY2UgKGluc3RlYWQgb2YgbWFueSB0aW55CnNvcnRzLCB3aGljaCBpcyBpbmVmZmljaWVu dCkuIFRoaXMgYWxzbyByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygcm93cyB3ZQpuZWVkIHRvIHNw aWxsIChhbmQgcG9zc2libHkgdHJhbnNmZXIgbXVsdGlwbGUgdGltZXMpLgoKVG8gdXNlIGEg ZGlmZmVyZW50IHdhdGVybWFyayBzdGVwLCB1c2UgYSBuZXcgR1VDOgoKICBTRVQgYnJpbnNv cnRfd2F0ZXJtYXJrX3N0ZXAgPSAxNgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyAgICAgIHwgIDMgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5j IHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3RhYmxlcy5jIHwgMTIgKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDY4IGlu c2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmlu ZGV4IDZkMTYwOTAxMWUuLjg5M2JjZTY0Y2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMK QEAgLTQ3LDYgKzQ3LDcgQEAgRXhwbGFpbk9uZVF1ZXJ5X2hvb2tfdHlwZSBFeHBsYWluT25l UXVlcnlfaG9vayA9IE5VTEw7CiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9s IGluIGV4cGxhaW5fZ2V0X2luZGV4X25hbWUoKSAqLwogZXhwbGFpbl9nZXRfaW5kZXhfbmFt ZV9ob29rX3R5cGUgZXhwbGFpbl9nZXRfaW5kZXhfbmFtZV9ob29rID0gTlVMTDsKIAorZXh0 ZXJuIGludCBicmluc29ydF93YXRlcm1hcmtfc3RlcDsKIAogLyogT1ItYWJsZSBmbGFncyBm b3IgRXhwbGFpblhNTFRhZygpICovCiAjZGVmaW5lIFhfT1BFTklORyAwCkBAIC0yNDcxLDYg KzI0NzIsOCBAQCBzaG93X2JyaW5zb3J0X3N0YXRzKEJyaW5Tb3J0U3RhdGUgKnNvcnRzdGF0 ZSwgTGlzdCAqYW5jZXN0b3JzLCBFeHBsYWluU3RhdGUgKmVzKQogCQkJCQkJIHR1cGxlc29y dF9zcGFjZV90eXBlX25hbWUoc3RhdHMuc3BhY2VUeXBlKSk7CiAJfQogCisJRXhwbGFpblBy b3BlcnR5SW50ZWdlcigiU3RlcCIsIE5VTEwsIChpbnQ2NCkgYnJpbnNvcnRfd2F0ZXJtYXJr X3N0ZXAsIGVzKTsKKwogCWlmIChzdGF0cy0+c29ydF9jb3VudCA+IDApCiAJewogCQlFeHBs YWluUHJvcGVydHlJbnRlZ2VyKCJSYW5nZXMgUHJvY2Vzc2VkIiwgTlVMTCwgKGludDY0KQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQuYwppbmRleCA2MTRkMjhjODNiLi4xNWQx NTc5NzczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQuYwpAQCAtMjQ4LDYg KzI0OCwxNCBAQCBzdGF0aWMgdm9pZCBFeGVjSW5pdEJyaW5Tb3J0UmFuZ2VzKEJyaW5Tb3J0 ICpub2RlLCBCcmluU29ydFN0YXRlICpwbGFuc3RhdGUpOwogYm9vbCBkZWJ1Z19icmluX3Nv cnQgPSBmYWxzZTsKICNlbmRpZgogCisvKgorICogSG93IG1hbnkgZGlzdGluY3QgbWludmFs IHZhbHVlcyB0byBsb29rIGZvcndhcmQgZm9yIHRoZSBuZXh0IHdhdGVybWFyaz8KKyAqCisg KiBUaGUgc21hbGxlc3Qgc3RlcCB3ZSBjYW4gZG8gaXMgMSwgd2hpY2ggbWVhbnMgdGhlIGlt bWVkaWF0ZWx5IGZvbGxvd2luZworICogKHdoaWxlIGRpc3RpbmN0KSBtaW52YWwuCisgKi8K K2ludCBicmluc29ydF93YXRlcm1hcmtfc3RlcCA9IDE7CisKIC8qIGRvIHZhcmlvdXMgY29u c2lzdGVuY3kgY2hlY2tzICovCiBzdGF0aWMgdm9pZAogQXNzZXJ0Q2hlY2tSYW5nZXMoQnJp blNvcnRTdGF0ZSAqbm9kZSkKQEAgLTM1MSwxMSArMzU5LDI0IEBAIGJyaW5zb3J0X2VuZF90 aWRzY2FuKEJyaW5Tb3J0U3RhdGUgKm5vZGUpCiAgKiBhIHNlcGFyYXRlICJmaXJzdCIgcGFy YW1ldGVyIC0gInNldD1mYWxzZSIgaGFzIHRoZSBzYW1lIG1lYW5pbmcuCiAgKi8KIHN0YXRp YyB2b2lkCi1icmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKEJyaW5Tb3J0U3RhdGUgKm5vZGUs IGJvb2wgYXNjKQorYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhCcmluU29ydFN0YXRlICpu b2RlLCBib29sIGZpcnN0LCBib29sIGFzYywgaW50IHN0ZXBzKQogewogCWludAkJY21wOwor CisJLyogYXNzdW1lIHdlIGhhdmVuJ3QgZm91bmQgYSB3YXRlcm1hcmsgKi8KIAlib29sCWZv dW5kID0gZmFsc2U7CiAKKwlBc3NlcnQoc3RlcHMgPiAwKTsKKworCS8qCisJICogSWYgdGhl IHdhdGVybWFyayBpcyBlbXB0eSwgZWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwgKGlu CisJICogd2hpY2ggY2FzZSB3ZSBqdXN0IHVzZSB0aGUgZmlyc3QgKG9yIHJhdGhlciBzZWNv bmQpIHZhbHVlLgorCSAqIE90aGVyd2lzZSBpdCBtZWFucyB3ZSd2ZSByZWFjaGVkIHRoZSBl bmQsIHNvIG5vIHBvaW50IGluIGxvb2tpbmcKKwkgKiBmb3IgbW9yZSB3YXRlcm1hcmtzLgor CSAqLworCWlmIChub2RlLT5ic193YXRlcm1hcmtfZW1wdHkgJiYgIWZpcnN0KQorCQlyZXR1 cm47CisKIAl0dXBsZXNvcnRfbWFya3Bvcyhub2RlLT5ic19zY2FuLT5yYW5nZXMpOwogCiAJ d2hpbGUgKHR1cGxlc29ydF9nZXR0dXBsZXNsb3Qobm9kZS0+YnNfc2Nhbi0+cmFuZ2VzLCB0 cnVlLCBmYWxzZSwgbm9kZS0+YnNfc2Nhbi0+c2xvdCwgTlVMTCkpCkBAIC0zODEsMjIgKzQw Miw0OCBAQCBicmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKEJyaW5Tb3J0U3RhdGUgKm5vZGUs IGJvb2wgYXNjKQogCQllbHNlCiAJCQl2YWx1ZSA9IHNsb3RfZ2V0YXR0cihub2RlLT5ic19z Y2FuLT5zbG90LCA3LCAmaXNudWxsKTsKIAorCQkvKgorCQkgKiBIYXMgdG8gYmUgdGhlIGZp cnN0IGNhbGwgKG90aGVyd2lzZSB3ZSB3b3VsZCBub3QgZ2V0IGhlcmUsIGJlY2F1c2Ugd2UK KwkJICogdGVybWluYXRlIGFmdGVyIGJzX3dhdGVybWFya19zZXQgZ2V0cyBmbGlwcGVkIGJh Y2sgdG8gZmFsc2UpLCBzbyB3ZQorCQkgKiBqdXN0IHNldCB0aGUgdmFsdWUuIEJ1dCB3ZSBk b24ndCBjb3VudCB0aGlzIGFzIGEgc3RlcCwgYmVjYXVzZSB0aGF0CisJCSAqIGp1c3QgcGlj a3MgdGhlIGZpcnN0IG1pbnZhbCB2YWx1ZSwgYXMgd2UgY2VydGFpbmx5IG5lZWQgdG8gZG8g YXQgbGVhc3QKKwkJICogb25lIG1vcmUgc3RlcC4KKwkJICoKKwkJICogWFhYIEFjdHVhbGx5 LCBkbyB3ZSBuZWVkIHRvIG1ha2UgYW5vdGhlciBzdGVwPyBNYXliZSB0aGVyZSBhcmUgZW5v dWdoCisJCSAqIG5vdC1zdW1tYXJpemVkIHJhbmdlcz8gQWx0aG91Z2gsIHdlIGRvbid0IGtu b3cgd2hhdCB2YWx1ZXMgYXJlIGluCisJCSAqIHRob3NlLCByYW5nZXMsIGFuZCB3aXRoIGlu Y3JlYXNpbmcgZGF0YSB3ZSBtaWdodCBlYXNpbHkgZW5kIHVwIGp1c3QKKwkJICogd3JpdGlu ZyBhbGwgb2YgaXQgaW50byB0aGUgc3BpbGwgdHVwbGVzdG9yZS4gU28gbWFraW5nIG9uZSBt b3JlIHN0ZXAKKwkJICogc2VlbXMgbGlrZSBhIGJldHRlciBpZGVhIC0gd2UnbGwgYXQgbGVh c3QgYmUgYWJsZSB0byBwcm9kdWNlIHNvbWV0aGluZworCQkgKiB3aGljaCBpcyBnb29kIGZv ciBMSU1JVCBxdWVyaWVzLgorCQkgKi8KIAkJaWYgKCFub2RlLT5ic193YXRlcm1hcmtfc2V0 KQogCQl7CisJCQlBc3NlcnQoZmlyc3QpOwogCQkJbm9kZS0+YnNfd2F0ZXJtYXJrX3NldCA9 IHRydWU7CiAJCQlub2RlLT5ic193YXRlcm1hcmsgPSB2YWx1ZTsKKwkJCWZvdW5kID0gdHJ1 ZTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKIAkJY21wID0gQXBwbHlTb3J0Q29tcGFyYXRvcihu b2RlLT5ic193YXRlcm1hcmssIGZhbHNlLCB2YWx1ZSwgZmFsc2UsCiAJCQkJCQkJCSAgJm5v ZGUtPmJzX3NvcnRzdXBwb3J0KTsKIAotCQlpZiAoY21wIDwgMCkKKwkJLyoKKwkJICogVmFs dWVzIHNob3VsZCBub3QgZGVjcmVhc2UgKG9yIHdoYXRldmVyIHRoZSBvcGVyYXRvciBzYXlz LCBtaWdodAorCQkgKiBiZSBhIERFU0Mgc29ydCkuCisJCSAqLworCQlBc3NlcnQoY21wIDw9 IDApOworCisJCWlmIChjbXAgPCAwKQkvKiBuZXcgd2F0ZXJtYXJrIHZhbHVlICovCiAJCXsK IAkJCW5vZGUtPmJzX3dhdGVybWFya19zZXQgPSB0cnVlOwogCQkJbm9kZS0+YnNfd2F0ZXJt YXJrID0gdmFsdWU7CiAJCQlmb3VuZCA9IHRydWU7Ci0JCQlicmVhazsKKworCQkJc3RlcHMt LTsKKworCQkJaWYgKHN0ZXBzID09IDApCisJCQkJYnJlYWs7CiAJCX0KIAl9CiAKQEAgLTkx Myw3ICs5NjAsNyBAQCBJbmRleE5leHQoQnJpblNvcnRTdGF0ZSAqbm9kZSkKIAkJCQkJbm9k ZS0+YnNfcGhhc2UgPSBCUklOU09SVF9MT0FEX1JBTkdFOwogCiAJCQkJCS8qIHNldCB0aGUg Zmlyc3Qgd2F0ZXJtYXJrICovCi0JCQkJCWJyaW5zb3J0X3VwZGF0ZV93YXRlcm1hcmsobm9k ZSwgYXNjKTsKKwkJCQkJYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhub2RlLCB0cnVlLCBh c2MsIGJyaW5zb3J0X3dhdGVybWFya19zdGVwKTsKIAkJCQl9CiAKIAkJCQlicmVhazsKQEAg LTEwMzQsNyArMTA4MSw3IEBAIEluZGV4TmV4dChCcmluU29ydFN0YXRlICpub2RlKQogCQkJ CXsKIAkJCQkJLyogdXBkdGUgdGhlIHdhdGVybWFyayBhbmQgdHJ5IHJlYWRpbmcgbW9yZSBy YW5nZXMgKi8KIAkJCQkJbm9kZS0+YnNfcGhhc2UgPSBCUklOU09SVF9MT0FEX1JBTkdFOwot CQkJCQlicmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKG5vZGUsIGFzYyk7CisJCQkJCWJyaW5z b3J0X3VwZGF0ZV93YXRlcm1hcmsobm9kZSwgZmFsc2UsIGFzYywgYnJpbnNvcnRfd2F0ZXJt YXJrX3N0ZXApOwogCQkJCX0KIAogCQkJCWJyZWFrOwpAQCAtMTA1OSw3ICsxMTA2LDcgQEAg SW5kZXhOZXh0KEJyaW5Tb3J0U3RhdGUgKm5vZGUpCiAJCQkJCQkJewogCQkJCQkJCQlicmlu c29ydF9yZXNjYW4obm9kZSk7CiAJCQkJCQkJCW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRf TE9BRF9SQU5HRTsKLQkJCQkJCQkJYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhub2RlLCBh c2MpOworCQkJCQkJCQlicmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKG5vZGUsIHRydWUsIGFz YywgYnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXApOwogCQkJCQkJCX0KIAkJCQkJCQllbHNlCiAJ CQkJCQkJCW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfRklOSVNIRUQ7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IGU2OTYwMjljZjMuLjFiNzk4YTc4ODYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC05Nyw2ICs5Nyw3IEBAIGV4 dGVybiBjaGFyICpkZWZhdWx0X3RhYmxlc3BhY2U7CiBleHRlcm4gY2hhciAqdGVtcF90YWJs ZXNwYWNlczsKIGV4dGVybiBib29sIGlnbm9yZV9jaGVja3N1bV9mYWlsdXJlOwogZXh0ZXJu IGJvb2wgaWdub3JlX2ludmFsaWRfcGFnZXM7CitleHRlcm4gaW50CWJyaW5zb3J0X3dhdGVy bWFya19zdGVwOwogCiAjaWZkZWYgREVCVUdfQlJJTl9TVEFUUwogZXh0ZXJuIGJvb2wgZGVi dWdfYnJpbl9zdGF0czsKQEAgLTM1NzksNiArMzU4MCwxNyBAQCBzdHJ1Y3QgY29uZmlnX2lu dCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7 CisJCXsiYnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXAiLCBQR0NfVVNFUlNFVCwgREVWRUxPUEVS X09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoInNldHMgdGhlIHN0ZXAgZm9yIGJyaW5zb3J0 IHdhdGVybWFyayBpbmNyZW1lbnRzIiksCisJCQlOVUxMLAorCQkJR1VDX05PVF9JTl9TQU1Q TEUKKwkJfSwKKwkJJmJyaW5zb3J0X3dhdGVybWFya19zdGVwLAorCQkxLCAxLCBJTlRfTUFY LAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCS8qIEVuZC1vZi1saXN0IG1hcmtlciAq LwogCXsKIAkJe05VTEwsIDAsIDAsIE5VTEwsIE5VTEx9LCBOVUxMLCAwLCAwLCAwLCBOVUxM LCBOVUxMLCBOVUxMCi0tIAoyLjQxLjAKCg== --------------CooOQ6LlXwcsddypE9zFAJMn Content-Type: text/x-patch; charset=UTF-8; name="0007-wip-adjust-watermark-step-20230710.patch" Content-Disposition: attachment; filename="0007-wip-adjust-watermark-step-20230710.patch" Content-Transfer-Encoding: base64 RnJvbSAzY2NlNzA3YzFmZjU5Y2JmYmFjMThiZTJiNzBiMGQxZmJjYTkzOTM0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyMiBPY3QgMjAyMiAwMDowNjoyOCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDcvMTFdIHdpcDogYWRqdXN0IHdhdGVybWFyayBzdGVwCgpMb29rIGF0 IGF2YWlsYWJsZSBzdGF0aXN0aWNzIC0gbnVtYmVyIG9mIHBvc3NpYmxlIHdhdGVybWFyayB2 YWx1ZXMsCm51bWJlciBvZiByb3dzLCB3b3JrX21lbSwgZXRjLiBhbmQgcGljayBhIGdvb2Qg d2F0ZXJtYXJrX3N0ZXAgdmFsdWUuCgpUbyBjYWxjdWxhdGUgc3RlcCB1c2luZyBzdGF0aXN0 aWNzLCBzZXQgdGhlIEdVQyB0byAwOgoKICAgU0VUIGJyaW5zb3J0X3dhdGVybWFya19zdGVw ID0gMDsKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgfCAg NiArKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5jICAgICB8IDIxICsr KystLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCA3MCAr KysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYyAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAg ICAgICAgIHwgIDUgKysKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAg ICB8ICAzICsrCiA2IGZpbGVzIGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCA4OTNiY2U2NGNiLi4wMjBm YjM4Y2FlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0yNDU0LDYgKzI0NTQsNyBA QCBzdGF0aWMgdm9pZAogc2hvd19icmluc29ydF9zdGF0cyhCcmluU29ydFN0YXRlICpzb3J0 c3RhdGUsIExpc3QgKmFuY2VzdG9ycywgRXhwbGFpblN0YXRlICplcykKIHsKIAlCcmluU29y dFN0YXRzICAqc3RhdHMgPSAmc29ydHN0YXRlLT5ic19zdGF0czsKKwlCcmluU29ydCAgICpw bGFuID0gKEJyaW5Tb3J0ICopIHNvcnRzdGF0ZS0+c3MucHMucGxhbjsKIAogCWlmIChzb3J0 c3RhdGUtPmJzX3NjYW4gIT0gTlVMTCAmJgogCQlzb3J0c3RhdGUtPmJzX3NjYW4tPnJhbmdl cyAhPSBOVUxMKQpAQCAtMjQ3Niw2ICsyNDc3LDkgQEAgc2hvd19icmluc29ydF9zdGF0cyhC cmluU29ydFN0YXRlICpzb3J0c3RhdGUsIExpc3QgKmFuY2VzdG9ycywgRXhwbGFpblN0YXRl ICplcykKIAogCWlmIChzdGF0cy0+c29ydF9jb3VudCA+IDApCiAJeworCQlFeHBsYWluUHJv cGVydHlJbnRlZ2VyKCJBdmVyYWdlIFN0ZXAiLCBOVUxMLCAoaW50NjQpCisJCQkJCQkJICAg c3RhdHMtPndhdGVybWFya191cGRhdGVzX3N0ZXBzIC8gc3RhdHMtPndhdGVybWFya191cGRh dGVzX2NvdW50LCBlcyk7CisKIAkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiUmFuZ2VzIFBy b2Nlc3NlZCIsIE5VTEwsIChpbnQ2NCkKIAkJCQkJCQkgICBzdGF0cy0+cmFuZ2VfY291bnQs IGVzKTsKIApAQCAtMjUxNyw2ICsyNTIxLDggQEAgc2hvd19icmluc29ydF9zdGF0cyhCcmlu U29ydFN0YXRlICpzb3J0c3RhdGUsIExpc3QgKmFuY2VzdG9ycywgRXhwbGFpblN0YXRlICpl cykKIAkJCUV4cGxhaW5DbG9zZUdyb3VwKCJTb3J0cyIsICJTb3J0cyIsIHRydWUsIGVzKTsK IAkJfQogCX0KKwllbHNlCisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIkluaXRpYWwgU3Rl cCIsIE5VTEwsIChpbnQ2NCkgcGxhbi0+d2F0ZXJtYXJrX3N0ZXAsIGVzKTsKIAogCWlmIChz dGF0cy0+c29ydF9jb3VudF9pbl9tZW1vcnkgPiAwKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJyaW5Tb3J0LmMKaW5kZXggMTVkMTU3OTc3My4uZjgzNTYyMDJiNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMKQEAgLTI0OCwxNCArMjQ4LDYgQEAgc3RhdGlj IHZvaWQgRXhlY0luaXRCcmluU29ydFJhbmdlcyhCcmluU29ydCAqbm9kZSwgQnJpblNvcnRT dGF0ZSAqcGxhbnN0YXRlKTsKIGJvb2wgZGVidWdfYnJpbl9zb3J0ID0gZmFsc2U7CiAjZW5k aWYKIAotLyoKLSAqIEhvdyBtYW55IGRpc3RpbmN0IG1pbnZhbCB2YWx1ZXMgdG8gbG9vayBm b3J3YXJkIGZvciB0aGUgbmV4dCB3YXRlcm1hcms/Ci0gKgotICogVGhlIHNtYWxsZXN0IHN0 ZXAgd2UgY2FuIGRvIGlzIDEsIHdoaWNoIG1lYW5zIHRoZSBpbW1lZGlhdGVseSBmb2xsb3dp bmcKLSAqICh3aGlsZSBkaXN0aW5jdCkgbWludmFsLgotICovCi1pbnQgYnJpbnNvcnRfd2F0 ZXJtYXJrX3N0ZXAgPSAxOwotCiAvKiBkbyB2YXJpb3VzIGNvbnNpc3RlbmN5IGNoZWNrcyAq Lwogc3RhdGljIHZvaWQKIEFzc2VydENoZWNrUmFuZ2VzKEJyaW5Tb3J0U3RhdGUgKm5vZGUp CkBAIC0zNTksOSArMzUxLDExIEBAIGJyaW5zb3J0X2VuZF90aWRzY2FuKEJyaW5Tb3J0U3Rh dGUgKm5vZGUpCiAgKiBhIHNlcGFyYXRlICJmaXJzdCIgcGFyYW1ldGVyIC0gInNldD1mYWxz ZSIgaGFzIHRoZSBzYW1lIG1lYW5pbmcuCiAgKi8KIHN0YXRpYyB2b2lkCi1icmluc29ydF91 cGRhdGVfd2F0ZXJtYXJrKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIGJvb2wgZmlyc3QsIGJvb2wg YXNjLCBpbnQgc3RlcHMpCiticmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKEJyaW5Tb3J0U3Rh dGUgKm5vZGUsIGJvb2wgZmlyc3QsIGJvb2wgYXNjKQogewogCWludAkJY21wOworCUJyaW5T b3J0ICAgKnBsYW4gPSAoQnJpblNvcnQgKikgbm9kZS0+c3MucHMucGxhbjsKKwlpbnQJCQlz dGVwcyA9IHBsYW4tPndhdGVybWFya19zdGVwOwogCiAJLyogYXNzdW1lIHdlIGhhdmVuJ3Qg Zm91bmQgYSB3YXRlcm1hcmsgKi8KIAlib29sCWZvdW5kID0gZmFsc2U7CkBAIC00NDksNiAr NDQzLDkgQEAgYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhCcmluU29ydFN0YXRlICpub2Rl LCBib29sIGZpcnN0LCBib29sIGFzYywgaW50IHN0ZXBzKQogCiAJdHVwbGVzb3J0X3Jlc3Rv cmVwb3Mobm9kZS0+YnNfc2Nhbi0+cmFuZ2VzKTsKIAorCW5vZGUtPmJzX3N0YXRzLndhdGVy bWFya191cGRhdGVzX2NvdW50Kys7CisJbm9kZS0+YnNfc3RhdHMud2F0ZXJtYXJrX3VwZGF0 ZXNfc3RlcHMgKz0gcGxhbi0+d2F0ZXJtYXJrX3N0ZXA7CisKIAlub2RlLT5ic193YXRlcm1h cmtfZW1wdHkgPSAoIWZvdW5kKTsKIH0KIApAQCAtOTYwLDcgKzk1Nyw3IEBAIEluZGV4TmV4 dChCcmluU29ydFN0YXRlICpub2RlKQogCQkJCQlub2RlLT5ic19waGFzZSA9IEJSSU5TT1JU X0xPQURfUkFOR0U7CiAKIAkJCQkJLyogc2V0IHRoZSBmaXJzdCB3YXRlcm1hcmsgKi8KLQkJ CQkJYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhub2RlLCB0cnVlLCBhc2MsIGJyaW5zb3J0 X3dhdGVybWFya19zdGVwKTsKKwkJCQkJYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhub2Rl LCB0cnVlLCBhc2MpOwogCQkJCX0KIAogCQkJCWJyZWFrOwpAQCAtMTA4MSw3ICsxMDc4LDcg QEAgSW5kZXhOZXh0KEJyaW5Tb3J0U3RhdGUgKm5vZGUpCiAJCQkJewogCQkJCQkvKiB1cGR0 ZSB0aGUgd2F0ZXJtYXJrIGFuZCB0cnkgcmVhZGluZyBtb3JlIHJhbmdlcyAqLwogCQkJCQlu b2RlLT5ic19waGFzZSA9IEJSSU5TT1JUX0xPQURfUkFOR0U7Ci0JCQkJCWJyaW5zb3J0X3Vw ZGF0ZV93YXRlcm1hcmsobm9kZSwgZmFsc2UsIGFzYywgYnJpbnNvcnRfd2F0ZXJtYXJrX3N0 ZXApOworCQkJCQlicmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKG5vZGUsIGZhbHNlLCBhc2Mp OwogCQkJCX0KIAogCQkJCWJyZWFrOwpAQCAtMTEwNiw3ICsxMTAzLDcgQEAgSW5kZXhOZXh0 KEJyaW5Tb3J0U3RhdGUgKm5vZGUpCiAJCQkJCQkJewogCQkJCQkJCQlicmluc29ydF9yZXNj YW4obm9kZSk7CiAJCQkJCQkJCW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfTE9BRF9SQU5H RTsKLQkJCQkJCQkJYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhub2RlLCB0cnVlLCBhc2Ms IGJyaW5zb3J0X3dhdGVybWFya19zdGVwKTsKKwkJCQkJCQkJYnJpbnNvcnRfdXBkYXRlX3dh dGVybWFyayhub2RlLCB0cnVlLCBhc2MpOwogCQkJCQkJCX0KIAkJCQkJCQllbHNlCiAJCQkJ CQkJCW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfRklOSVNIRUQ7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggNGVlYTk0MmRiZi4uNmEzYTM4ZGQx NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5j CisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMTgs NiArMTgsNyBAQAogCiAjaW5jbHVkZSA8bWF0aC5oPgogCisjaW5jbHVkZSAiYWNjZXNzL2Jy aW4uaCIKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3lz YXR0ci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xhc3MuaCIKQEAgLTMyMyw2ICszMjQs MTQgQEAgc3RhdGljIEdhdGhlck1lcmdlICpjcmVhdGVfZ2F0aGVyX21lcmdlX3BsYW4oUGxh bm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCSBHYXRoZXJNZXJnZVBhdGggKmJlc3RfcGF0 aCk7CiAKIAorLyoKKyAqIEhvdyBtYW55IGRpc3RpbmN0IG1pbnZhbCB2YWx1ZXMgdG8gbG9v ayBmb3J3YXJkIGZvciB0aGUgbmV4dCB3YXRlcm1hcms/CisgKgorICogVGhlIHNtYWxsZXN0 IHN0ZXAgd2UgY2FuIGRvIGlzIDEsIHdoaWNoIG1lYW5zIHRoZSBpbW1lZGlhdGVseSBmb2xs b3dpbmcKKyAqICh3aGlsZSBkaXN0aW5jdCkgbWludmFsLgorICovCitpbnQgYnJpbnNvcnRf d2F0ZXJtYXJrX3N0ZXAgPSAwOworCiAvKgogICogY3JlYXRlX3BsYW4KICAqCSAgQ3JlYXRl cyB0aGUgYWNjZXNzIHBsYW4gZm9yIGEgcXVlcnkgYnkgcmVjdXJzaXZlbHkgcHJvY2Vzc2lu ZyB0aGUKQEAgLTM0MDEsNiArMzQxMCw2NyBAQCBjcmVhdGVfYnJpbnNvcnRfcGxhbihQbGFu bmVySW5mbyAqcm9vdCwKIAogCWluZGV4X2Nsb3NlKGluZGV4UmVsLCBOb0xvY2spOwogCisJ LyoKKwkgKiBkZXRlcm1pbmUgd2F0ZXJtYXJrIHN0ZXAgKGhvdyBmYXN0IHRvIGFkdmFuY2Up CisJICoKKwkgKiBJZiB0aGUgYnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXAgaXMgc2V0IHRvIGEg bm9uLXplcm8gdmFsdWUsIHdlIGp1c3QgdXNlCisJICogdGhhdCB2YWx1ZSBkaXJlY3RseS4g T3RoZXJ3aXNlIHdlIHBpY2sgYSB2YWx1ZSB1c2luZyBzb21lIHNpbXBsZQorCSAqIGhldXJp c3RpY3MgLSB3ZSBkb24ndCB3YW50IHRoZSByb3dzIHRvIGV4Y2VlZCB3b3JrX21lbSwgYW5k IHdlIGxlYXZlCisJICogYSBiaXQgc2xhY2sgKGJlY2F1c2Ugd2UncmUgYWRkaW5nIGJhdGNo ZXMgb2Ygcm93cywgbm90IHJvdyBieSByb3cpLgorCSAqCisJICogVGhpcyBoYXMgYSB3ZWFr bmVzcywgYmVjYXVzZSBpdCBhc3N1bWVzIHdlIGluY3JlbWVudGFsbHkgYWRkIHRoZSBzYW1l CisJICogbnVtYmVyIG9mIHJvd3MgaW50byB0aGUgInNvcnQiIHNldCAtIGJ1dCBpbWFnaW5l IHZlcnkgd2lkZSBvdmVybGFwcGluZworCSAqIHJhbmdlcyAoZS5nLiByYW5kb20gZGF0YSBv biB0aGUgc2FtZSBkb21haW4pLiBNb3N0IG9mIHRoZW0gd2lsbCBoYXZlCisJICogYWJvdXQg dGhlIHNhbWUgbWludmFsLCBzbyB0aGUgc29ydCBncm93cyBvbmx5IHZlcnkgc2xvd2x5LiBV bnRpbCB0aGUKKwkgKiB2ZXJ5IGxhc3QgcmFuZ2UsIHRoYXQgcmVtb3ZlcyB0aGUgd2F0ZXJt YXJrIGFuZCBvbmx5IHRoZW4gZG8gbW9zdCBvZgorCSAqIHRoZSByb3dzIGdldCB0byB0aGUg dHVwbGVzb3J0LgorCSAqCisJICogWFhYIEJ1dCBtYXliZSB3ZSBjYW4gbG9vayBhdCB0aGUg b3RoZXIgc3RhdGlzdGljcyB3ZSBoYXZlLCBsaWtlIG51bWJlcgorCSAqIG9mIG92ZXJsYXBz IGFuZCBhdmVyYWdlIHJhbmdlIHNlbGVjdGl2aXR5ICglIG9mIHR1cGxlcyBtYXRjaGluZyks IGFuZAorCSAqIGRlZHVjZSBzb21ldGhpbmcgZnJvbSB0aGF0PworCSAqCisJICogWFhYIENv dWxkIHdlIG1heWJlIGFkanVzdCB0aGUgd2F0ZXJtYXJrIHN0ZXAgYWRhcHRpdmVseSBhdCBy dW50aW1lPworCSAqIFRoYXQgaXMsIHdoZW4gd2UgZ2V0IHRvIHRoZSAic29ydCIgc3RlcCwg bWF5YmUgY2hlY2sgaG93IG1hbnkgcm93cworCSAqIGFyZSB0aGVyZSwgYW5kIGlmIHRoZXJl IGFyZSBvbmx5IGZldyB0aGVuIHRyeSBpbmNyZWFzaW5nIHRoZSBzdGVwPworCSAqLworCWJy aW5zb3J0X3BsYW4tPndhdGVybWFya19zdGVwID0gYnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXA7 CisKKwlpZiAoYnJpbnNvcnRfcGxhbi0+d2F0ZXJtYXJrX3N0ZXAgPT0gMCkKKwl7CisJCUJy aW5NaW5tYXhTdGF0cyAqYW1zdGF0czsKKworCQkvKiovCisJCUNhcmRpbmFsaXR5CQlyb3dz ID0gYnJpbnNvcnRfcGxhbi0+c2Nhbi5wbGFuLnBsYW5fcm93czsKKworCQkvKiBlc3RpbWF0 ZSByb3dzaXplIGluIHRoZSB0dXBsZXNvcnQgKi8KKwkJaW50CQkJCXdpZHRoID0gYnJpbnNv cnRfcGxhbi0+c2Nhbi5wbGFuLnBsYW5fd2lkdGg7CisJCWludAkJCQl0dXB3aWR0aCA9IChN QVhBTElHTih3aWR0aCkgKyBNQVhBTElHTihTaXplb2ZIZWFwVHVwbGVIZWFkZXIpKTsKKwor CQkvKiBEb24ndCBvdmVyZmxvdyB3b3JrX21lbSAodXNlIG9ubHkgaGFsZiB0byBhYnNvcmIg dmFyaWF0aW9ucy4gKi8KKwkJaW50CQkJCW1heHJvd3MgPSAod29ya19tZW0gKiAxMDI0TCAv IHR1cHdpZHRoIC8gMik7CisKKwkJLyogSWYgdGhpcyBpcyBhIExJTUlUIHF1ZXJ5LCBhaW0g b25seSBmb3IgdGhlIHJlcXVpcmVkIG51bWJlciBvZiByb3dzLiAqLworCQlpZiAocm9vdC0+ bGltaXRfdHVwbGVzID4gMCkKKwkJCW1heHJvd3MgPSBNaW4obWF4cm93cywgcm9vdC0+bGlt aXRfdHVwbGVzKTsKKworCQkvKiBVc2UgdGhlIGF0dG51bSBjYWxjdWxhdGVkIGFib3ZlLiAq LworCQlhbXN0YXRzID0gKEJyaW5NaW5tYXhTdGF0cyAqKSBnZXRfYXR0aW5kZXhhbShicmlu c29ydF9wbGFuLT5pbmRleGlkLAorCQkJCQkJCQkJCQkJCSBicmluc29ydF9wbGFuLT5hdHRu dW1zWzBdKTsKKworCQlpZiAoYW1zdGF0cykKKwkJeworCQkJZG91YmxlCXBjdF9wZXJfc3Rl cCA9IE1heChhbXN0YXRzLT5taW52YWxfaW5jcmVtZW50X2F2ZywKKwkJCQkJCQkJCSAgIGFt c3RhdHMtPm1heHZhbF9pbmNyZW1lbnRfYXZnKTsKKwkJCWRvdWJsZQlyb3dzX3Blcl9zdGVw ID0gTWF4KDEuMCwgcGN0X3Blcl9zdGVwICogcm93cyk7CisKKwkJCWJyaW5zb3J0X3BsYW4t PndhdGVybWFya19zdGVwID0gKGludCkgKG1heHJvd3MgLyByb3dzX3Blcl9zdGVwKTsKKwkJ fQorCisJCS8qIHNvbWUgcm91Z2ggc2FmZXR5IGVzdGltYXRlcyAqLworCQlicmluc29ydF9w bGFuLT53YXRlcm1hcmtfc3RlcCA9IE1heChicmluc29ydF9wbGFuLT53YXRlcm1hcmtfc3Rl cCwgMSk7CisJCWJyaW5zb3J0X3BsYW4tPndhdGVybWFya19zdGVwID0gTWluKGJyaW5zb3J0 X3BsYW4tPndhdGVybWFya19zdGVwLCA4MTkyKTsKKwl9CisKIAlyZXR1cm4gYnJpbnNvcnRf cGxhbjsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCAxYjc5 OGE3ODg2Li41ZThkNGUzODUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YwpAQCAtMzU4Nyw3ICszNTg3LDcgQEAgc3RydWN0IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFt ZXNJbnRbXSA9CiAJCQlHVUNfTk9UX0lOX1NBTVBMRQogCQl9LAogCQkmYnJpbnNvcnRfd2F0 ZXJtYXJrX3N0ZXAsCi0JCTEsIDEsIElOVF9NQVgsCisJCTAsIDAsIElOVF9NQVgsCiAJCU5V TEwsIE5VTEwsIE5VTEwKIAl9LAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGI2MzVh ODQ1ZTEuLmFlNjlhOTljYjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0xNjgyLDYg KzE2ODIsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpblNvcnRTdGF0cwogCS8qIHRpbWUgdG8g YnVpbGQgcmFuZ2VzIChtaWxsaXNlY29uZHMpICovCiAJaW50NjQJcmFuZ2VzX2J1aWxkX21z OwogCisJLyogbnVtYmVyL3N1bSBvZiB3YXRlcm1hcmsgdXBkYXRlIHN0ZXBzICovCisJaW50 NjQJd2F0ZXJtYXJrX3VwZGF0ZXNfc3RlcHM7CisJaW50NjQJd2F0ZXJtYXJrX3VwZGF0ZXNf Y291bnQ7CisKIH0gQnJpblNvcnRTdGF0czsKIAogdHlwZWRlZiBzdHJ1Y3QgQnJpblNvcnRT dGF0ZQpAQCAtMTcxNCw2ICsxNzE4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpblNvcnRTdGF0 ZQogCUJyaW5SYW5nZVNjYW5EZXNjICpic19zY2FuOwogCUJyaW5SYW5nZQkgICAqYnNfcmFu Z2U7CiAJRXhwclN0YXRlCSAgICpic19xdWFsOworCWludAkJCQlic193YXRlcm1hcmtfc3Rl cDsKIAlEYXR1bQkJCWJzX3dhdGVybWFyazsKIAlib29sCQkJYnNfd2F0ZXJtYXJrX3NldDsK IAlib29sCQkJYnNfd2F0ZXJtYXJrX2VtcHR5OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRl eCBiNGZhNWZhZmY1Li45ZDc4NGY2MzczIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAt NTI4LDYgKzUyOCw5IEBAIHR5cGVkZWYgc3RydWN0IEJyaW5Tb3J0CiAJLyogTlVMTFMgRklS U1QvTEFTVCBkaXJlY3Rpb25zICovCiAJYm9vbAkgICAqbnVsbHNGaXJzdCBwZ19ub2RlX2F0 dHIoYXJyYXlfc2l6ZShudW1Db2xzKSk7CiAKKwkvKiBudW1iZXIgb2Ygd2F0ZXJtYXJrIHN0 ZXBzIHRvIG1ha2UgKi8KKwlpbnQJCQl3YXRlcm1hcmtfc3RlcDsKKwogfSBCcmluU29ydDsK IAogLyogLS0tLS0tLS0tLS0tLS0tLQotLSAKMi40MS4wCgo= --------------CooOQ6LlXwcsddypE9zFAJMn Content-Type: text/x-patch; charset=UTF-8; name="0008-wip-adaptive-watermark-step-20230710.patch" Content-Disposition: attachment; filename="0008-wip-adaptive-watermark-step-20230710.patch" Content-Transfer-Encoding: base64 RnJvbSAwYjIyMDUwNTk3YTQwYWFmNzlkOWI2NTA0YzA5NWQwZDA4YmE1YTkzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyMiBPY3QgMjAyMiAwMTozOTozOSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDgvMTFdIHdpcDogYWRhcHRpdmUgd2F0ZXJtYXJrIHN0ZXAKCkFub3Ro ZXIgb3B0aW9uIGl0IHRvIGFkanVzdCB0aGUgd2F0ZXJtYXJrIHN0ZXAgYmFzZWQgb24gcGFz dCB0dXBsZXNvcnQKZXhlY3V0aW9ucywgYW5kIGVpdGhlciBpbmNyZWFzZSBvciBkZWNyZWFz ZSB0aGUgc3RlcCwgYmFzZWQgb24gd2hldGhlcgp0aGUgc29ydCB3YXMgaW4tbWVtb3J5IG9y IG9uLWRpc2ssIGV0Yy4KClRvIGRvIHRoaXMsIHNldCB0aGUgR1VDIHRvIC0xOgoKICBTRVQg YnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXAgPSAtMTsKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluX21pbm1heC5jICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVCcmluU29ydC5jICAgICB8IDE4OSArKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8ICAyMSArLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9ub2Rl cy9wbGFubm9kZXMuaCAgICAgICAgICAgfCAgIDMgKy0KIDYgZmlsZXMgY2hhbmdlZCwgMjA2 IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluX21pbm1heC5jCmluZGV4IDE2MjY1MGNmNzMuLjYzOTBmOTNhMGQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYwpAQCAtNDcsOSArNDcsNiBAQCBzdGF0 aWMgRm1nckluZm8gKm1pbm1heF9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oQnJpbkRlc2MgKmJk ZXNjLCB1aW50MTYgYXR0bm8sCiAJCQkJCQkJCQkJCSAgT2lkIHN1YnR5cGUsIHVpbnQxNiBz dHJhdGVneW51bSk7CiAKIAotLyogcHJpbnQgaW5mbyBhYm91dCByYW5nZXMgKi8KLSNkZWZp bmUgQlJJTlNPUlRfREVCVUcKLQogRGF0dW0KIGJyaW5fbWlubWF4X29wY2luZm8oUEdfRlVO Q1RJT05fQVJHUykKIHsKQEAgLTE5OTUsNyArMTk5Miw3IEBAIGJyaW5fbWlubWF4X3NjYW5f YWRkX3R1cGxlKEJyaW5SYW5nZVNjYW5EZXNjICpzY2FuLCBUdXBsZVRhYmxlU2xvdCAqc2xv dCwKIAlzY2FuLT5ucmFuZ2VzKys7CiB9CiAKLSNpZmRlZiBCUklOU09SVF9ERUJVRworI2lm ZGVmIEJSSU5fU09SVF9ERUJVRwogLyoKICAqIGJyaW5fbWlubWF4X3NjYW5fbmV4dAogICoJ CVJldHVybiB0aGUgbmV4dCBCUklOIHJhbmdlIGluZm9ybWF0aW9uIGZyb20gdGhlIHR1cGxl c3RvcmUuCkBAIC0yMjA0LDcgKzIyMDEsNyBAQCBicmluX21pbm1heF9yYW5nZXMoUEdfRlVO Q1RJT05fQVJHUykKIAkvKiBkbyB0aGUgc29ydCBhbmQgYW55IG5lY2Vzc2FyeSBwb3N0LXBy b2Nlc3NpbmcgKi8KIAlicmluX21pbm1heF9zY2FuX2ZpbmFsaXplKGJyc2Nhbik7CiAKLSNp ZmRlZiBCUklOU09SVF9ERUJVRworI2lmZGVmIEJSSU5fU09SVF9ERUJVRwogCWJyaW5fbWlu bWF4X3NjYW5fZHVtcChicnNjYW4pOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJyaW5Tb3J0LmMKaW5kZXggZjgzNTYyMDJiNy4uMDg1MDdmMmI1ZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMKQEAgLTIxOCw2ICsyMTgsOCBAQAogICoJCUV4ZWNC cmluU29ydFJlSW5pdGlhbGl6ZURTTSByZWluaXRpYWxpemUgRFNNIGZvciBmcmVzaCBzY2Fu CiAgKgkJRXhlY0JyaW5Tb3J0SW5pdGlhbGl6ZVdvcmtlciBhdHRhY2ggdG8gRFNNIGluZm8g aW4gcGFyYWxsZWwgd29ya2VyCiAgKi8KKyNpbmNsdWRlIDxtYXRoLmg+CisKICNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL2JyaW4uaCIKQEAgLTI0OCw2ICsy NTAsMTQgQEAgc3RhdGljIHZvaWQgRXhlY0luaXRCcmluU29ydFJhbmdlcyhCcmluU29ydCAq bm9kZSwgQnJpblNvcnRTdGF0ZSAqcGxhbnN0YXRlKTsKIGJvb2wgZGVidWdfYnJpbl9zb3J0 ID0gZmFsc2U7CiAjZW5kaWYKIAorLyoKKyAqIEhvdyBtYW55IGRpc3RpbmN0IG1pbnZhbCB2 YWx1ZXMgdG8gbG9vayBmb3J3YXJkIGZvciB0aGUgbmV4dCB3YXRlcm1hcms/CisgKgorICog VGhlIHNtYWxsZXN0IHN0ZXAgd2UgY2FuIGRvIGlzIDEsIHdoaWNoIG1lYW5zIHRoZSBpbW1l ZGlhdGVseSBmb2xsb3dpbmcKKyAqICh3aGlsZSBkaXN0aW5jdCkgbWludmFsLgorICovCitp bnQJYnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXAgPSAwOworCiAvKiBkbyB2YXJpb3VzIGNvbnNp c3RlbmN5IGNoZWNrcyAqLwogc3RhdGljIHZvaWQKIEFzc2VydENoZWNrUmFuZ2VzKEJyaW5T b3J0U3RhdGUgKm5vZGUpCkBAIC04NTksNiArODY5LDE3NSBAQCBicmluc29ydF9yZXNjYW4o QnJpblNvcnRTdGF0ZSAqbm9kZSkKIAl0dXBsZXNvcnRfcmVzY2FuKG5vZGUtPmJzX3NjYW4t PnJhbmdlcyk7CiB9CiAKKy8qCisgKiBMb29rIGF0IHRoZSB0dXBsZXNvcnQgc3RhdGlzdGlj cywgYW5kIG1heWJlIGluY3JlYXNlIG9yIGRlY3JlYXNlIHRoZQorICogd2F0ZXJtYXJrIHN0 ZXAuIElmIHRoZSBsYXN0IHNvcnQgd2FzIGluLW1lbW9yeSwgd2UgZGVjcmVhc2UgdGhlIHN0 ZXAuCisgKiBJZiB0aGUgc29ydCB3YXMgaW4tbWVtb3J5LCBidXQgd2UgdXNlZCBsZXNzIHRo YW4gd29ya19tZW0vMywgaW5jcmVtZW50CisgKiB0aGUgc3RlcCB2YWx1ZS4KKyAqCisgKiBY WFggVGhpcyBzaG91bGQgcHJvYmFibHkgYmVoYXZlIGRpZmZlcmVudGx5IGZvciBMSU1JVCBx dWVyaWVzLCBzbyB0aGF0CisgKiB3ZSBkb24ndCBsb2FkIHRvbyBtYW55IHJvd3MgdW5uZWNl c3NhcmlseS4gV2UgYWxyZWFkeSBjb25zaWRlciB0aGF0IGluCisgKiBjcmVhdGVfYnJpbnNv cnRfcGxhbiwgYnV0IG1heWJlIHdlIHNob3VsZCBsaW1pdCBpbmNyZW1lbnRzIHRvIHRoZSBz dGVwCisgKiB2YWx1ZSBoZXJlIHRvbyAtIHNheSwgYnkgdHJhY2tpbmcgaG93IG1hbnkgcm93 cyBhcmUgd2Ugc3VwcG9zZWQgdG8KKyAqIHByb2R1Y2UsIGFuZCBsaW1pdGluZyB0aGUgd2F0 ZXJtYXJrIHNvIHRoYXQgd2UgZG9uJ3QgcHJvY2VzcyB0b28gbWFueQorICogcm93cyBpbiBm dXR1cmUgc3RlcHMuCisgKgorICogWFhYIFdlIG1pZ2h0IGFsc28gdHJhY2sgdGhlIG51bWJl ciBvZiByb3dzIGluIHRoZSBzb3J0IGFuZCBzcGFjZSB1c2VkLAorICogdG8gY2FsY3VsYXRl IG1vcmUgYWNjdXJhdGUgZXN0aW1hdGUgb2Ygcm93IHdpZHRoLiBBbmQgdGhlbiB1c2UgdGhh dCB0bworICogY2FsY3VsYXRlIG51bWJlciBvZiByb3dzIHRoYXQgZml0IGludG8gd29ya19t ZW0uIEJ1dCB0aGUgbnVtYmVyIG9mIHJvd3MKKyAqIHRoYXQgZ28gaW50byB0dXBsZXNvcnQg KHBlciByYW5nZSkgYWRkZWQgd291bGQgc3RpbGwgcmVtYWluIGZhaXJseQorICogaW5hY2N1 cmF0ZSwgc28gbm90IHN1cmUgaG93IGdvb2QgdGhpcyB3b3VkIGJlLgorICovCitzdGF0aWMg dm9pZAorYnJpbnNvcnRfYWRqdXN0X3dhdGVybWFya19zdGVwKEJyaW5Tb3J0U3RhdGUgKm5v ZGUsIFR1cGxlc29ydEluc3RydW1lbnRhdGlvbiAqc3RhdHMpCit7CisJQnJpblNvcnQgICAq cGxhbiA9IChCcmluU29ydCAqKSBub2RlLT5zcy5wcy5wbGFuOworCisJaWYgKGJyaW5zb3J0 X3dhdGVybWFya19zdGVwICE9IC0xKQorCQlyZXR1cm47CisKKwlpZiAoc3RhdHMtPnNwYWNl VHlwZSA9PSBTT1JUX1NQQUNFX1RZUEVfRElTSykKKwl7CisJCS8qCisJCSAqIFdlIGRvbid0 IGtub3cgaG93IG11Y2ggdG8gZGVjcmVhc2UgdGhlIHN0ZXAgKGhhcmQgdG8gZXN0aW1hdGUK KwkJICogZHVlIHRvIHNwYWNlIG5lZWRlZCBmb3IgaW4tbWVtb3J5IGFuZCBvbi1kaXNrIHNv cnRzIGlzIG5vdAorCQkgKiBlYXNpbHkgY29tcGFyYWJsZSwgc28gd2UganVzdCBjdXQgdGhl IHN0ZXAgaW4gaGFsZi4gRm9yIHRoZQorCQkgKiBpbi1tZW1vcnkgc29ydCwgd2UgdGhlbiBj YW4gZG8gYmV0dGVyIGVzdGltYXRlIGFuZCBpbmNyZWFzZQorCQkgKiB0aGUgc3RlcCBtb3Jl IGFjY3VyYXRlbHkuCisJCSAqLworCQlwbGFuLT53YXRlcm1hcmtfc3RlcCA9IE1heCgxLCBw bGFuLT53YXRlcm1hcmtfc3RlcCAvIDIpOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBB ZGp1c3QgdGhlIHN0ZXAgYmFzZWQgb24gdGhlIGxhc3Qgc29ydCAtIHdlIHNob290IGZvciAy LzMgb2YKKwkJICogd29ya19tZW0sIHRvIGtlZXAgc29tZSBzbGFjayAoYW5kIG5vdCBzd2l0 Y2ggdG8gb24tZGlzayBzb3J0CisJCSAqIGR1ZSB0byBtaW5vciBkaWZmZXJlbmNlcykuIFdl IGNhbGN1bGF0ZSB0aGUgYXZlcmFnZSByb3cgd2lkdGgKKwkJICogdXNpbmcgc3BhY2UgdXNl ZCBhbmQgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIHR1cGxlc29ydCwgbnVtYmVyCisJCSAqIG9m IHJvd3Mgd2UgY291bGQgZml0IGludG8gd29ya19tZW0sIGFuZCBob3cgbWFueSBzdGVwcyB3 b3VsZAorCQkgKiB0aGF0IG1lYW4gKGFzc3VtaW5nIG51bWJlciBvZiByb3dzIGlzIHByb3Bv cnRpb25hbCB0byB0aGUKKwkJICogbnVtYmVyIG9mIHN0ZXBzKS4KKwkJICoKKwkJICogV2Ug bmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IHRoZSBudW1iZXIgb2Ygcm93cyB3ZSdyZSBzdXBw b3NlZAorCQkgKiB0byBwcm9kdWNlIChhbmQgaG93IG1hbnkgd2UgYWxyZWFkeSBwcm9kdWNl ZCkuIENvbnNpZGVyIGZvcgorCQkgKiBleGFtcGxlIGEgcXVlcnkgd2l0aCBMSU1JVCAxMDAw LCBhbmQgdGhhdCB3ZSBwcm9kdWNlIDk5OSByb3dzCisJCSAqIGluIHRoZSBmaXJzdCBzb3J0 LCBzbyB0aGF0IHdlIG5lZWQgb25seSAxIG1vcmUgcm93LiBJdCB3b3VsZAorCQkgKiBiZSBz aWxseSB0byBwaWNrIHRoZSBzdGVwcyB3aXRoIHRoZSBnb2FsIHRvICJmaWxsIHdvcmtfbWVt IgorCQkgKiBpbnN0ZWFkIG9mIGp1c3QgZW5vdWdoIHRvIHByb2R1Y2UgdGhlIG9uZSByb3cu CisJCSAqCisJCSAqIFhYWCBJbiBwcmluY2lwbGUsIHdlIGRvbid0IGtub3cgaG93IG1hbnkg cm93cyB3aWxsIG5lZWQgdG8gYmUKKwkJICogcmVhZCBmcm9tIHRoZSB0YWJsZSAtIHRoZXJl IG1heSBiZSBpbnRlcmVzdGluZyByb3dzIGFscmVhZHkgaW4KKwkJICogdGhlIHR1cGxlc3Rv cmUgKGluIHdoaWNoIGNhc2Ugd2UgY291bGQgZG8gYSBzbWFsbGVyIHN0ZXApLiBCdXQKKwkJ ICogd2UgZG9uJ3Qga25vdyBob3cgbWFueSBzdWNoIHJvd3MgYXJlIHRoZXJlIC0gbWF5YmUg aWYgd2UgaGFkCisJCSAqIG11bHRpcGxlIHNtYWxsZXIgdHVwbGVzdG9yZXMsIHdoaWNoIHdv dWxkIGFsc28gcmVkdWNlIHRoZQorCQkgKiBhbW91bnQgb2YgInJlc3BpbGwiIHdlIG5lZWQg dG8gZG8uCisJCSAqLworCQlpbnQJCW5yb3dzX3JlbWFpbmluZzsKKwkJaW50CQlzdGVwID0g cGxhbi0+d2F0ZXJtYXJrX3N0ZXA7CisJCWludAkJc3RlcF9tYXggPSBwbGFuLT53YXRlcm1h cmtfc3RlcCAqIDI7CisKKwkJLyogbnVtYmVyIG9mIHJlbWFpbmluZyByb3dzIHdlJ3JlIGV4 cGVjdGVkIHRvIHByb2R1Y2UgKi8KKwkJbnJvd3NfcmVtYWluaW5nID0gTWF4KDEuMCwgcGxh bi0+c3RlcF9tYXhyb3dzIC0gbm9kZS0+YnNfc3RhdHMubnR1cGxlc190dXBsZXNvcnRfYWxs KTsKKworCQkvKgorCQkgKiBJZiB3ZSBzb3J0ZWQgYW55IHJvd3MsIGNhbGN1bGF0ZSBob3cg bWFueSBzaW1pbGFyIHJvd3Mgd2UgY2FuIGZpdAorCQkgKiBpbnRvIHdvcmtfbWVtLiBXZSBy ZXN0cmljdCBvdXJzZWx2ZXMgdG8gMi8zIG9mIHdvcmtfbWVtLCB0byBsZWF2ZQorCQkgKiBh IGJpdCBvZiBzbGFjayBzcGFjZS4KKwkJICoKKwkJICogWFhYIEhvcGVmdWxseSB0aGUgYXZl cmFnZSB3aWR0aCBpcyBzb21ld2hhdCBhY2N1cmF0ZSwgYnV0IG1heWJlCisJCSAqIHdlIHNo b3VsZCByZW1lbWJlciB0aGUgd2lkdGggd2Ugb3JpZ2luYWxseSBleHBlY3RlZCwgYW5kIGNv bWJpbmUKKwkJICogdGhhdCBzb21laG93LiBNYXliZSB3ZSBzaG91bGQgbm90IHVzZSBqdXN0 IHRoZSBsYXN0IHR1cGxlc29ydCwKKwkJICogYnV0IGluc3RlYWQgYWNjdW11bGF0ZSBhdmVy YWdlIGZyb20gYWxsIHByZWNlZGluZyBzb3J0cyBhbmQKKwkJICogY29tYmluZSB0aGVtIHNv bWVob3cgKHNheSwgdXNpbmcgd2VpZ2h0ZWQgYXZlcmFnZSB3aXRoIG9sZGVyCisJCSAqIHZh bHVlcyBoYXZpbmcgbGVzcyBpbmZsdWVuY2UpLgorCQkgKi8KKwkJaWYgKG5vZGUtPmJzX3N0 YXRzLm50dXBsZXNfdHVwbGVzb3J0ID4gMCkKKwkJeworCQkJaW50CQlucm93c193bWVtOwor CQkJaW50CQlhdmd3aWR0aDsKKworCQkJLyogYXZlcmFnZSB0dXBsZSB3aWR0aCwgY2FsY3Vs YXRlZCBmcm9tIGxhc3Qgc29ydCAqLworCQkJYXZnd2lkdGggPSAoc3RhdHMtPnNwYWNlVXNl ZCAqIDEwMjRMIC8gbm9kZS0+YnNfc3RhdHMubnR1cGxlc190dXBsZXNvcnQpOworCisJCQkv KgorCQkJICogQ2FsY3VsYXRlIHRoZSBudW1lciBvZiByb3dzIHRvIGZpdCBpbnRvIDIvMyBv ZiB3b3JrX21lbSwgYnV0CisJCQkgKiBjYXAgdG8gdGhlIG51bWJlciBvZiByb3dzIHdlJ3Jl IGV4cGVjdGVkIHRvIHByb2R1Y2UuCisJCQkgKi8KKwkJCW5yb3dzX3dtZW0gPSBNaW4obnJv d3NfcmVtYWluaW5nLCAoMiAqIDEwMjRMICogd29ya19tZW0gLyAzKSAvIGF2Z3dpZHRoKTsK KworCQkJLyogc2NhbGUgdGhlIG51bWJlciBvZiBzdGVwcyB0byBwcm9kdWNlIHRoZSBudW1i ZXIgb2Ygcm93cyAqLworCQkJc3RlcCA9IHN0ZXAgKiAoKGRvdWJsZSkgKG5yb3dzX3dtZW0g KiBhdmd3aWR0aCkgLyAoc3RhdHMtPnNwYWNlVXNlZCAqIDEwMjRMKSk7CisKKwkJCS8qIHJl bWVtYmVyIHRoaXMgYXMgdGhlIG1heCwgc28gdGhhdCB3ZSBkb24ndCBvdmVyZmxvdyB3b3Jr X21lbSAqLworCQkJc3RlcF9tYXggPSBNaW4oc3RlcCwgc3RlcF9tYXgpOworCisJCQkvKiBo b3dldmVyLCBtYWtlIHN1cmUgd2UgZG9uJ3QgZ3JvdyB0b28gZmFzdCAtIGNhcCB0byAyeCAq LworCQkJc3RlcCA9IE1pbihzdGVwLCBzdGVwX21heCk7CisJCX0KKworCQkvKgorCQkgKiBO b3cgY2FsY3VsYXRlIGF2ZXJhZ2Ugc3RlcCBzaXplIHVzaW5nIGRhdGEgZnJvbSBhbGwgc29y dHMgd2UgZGlkCisJCSAqIHVwIHRvIG5vdy4gVGhlbiB3ZSBjYWxjdWxhdGUgdGhlIG51bWJl ciBvZiBzdGVwcyB3ZSBleHBlY3QgdG8gYmUKKwkJICogbmVjZXNzYXJ5LgorCQkgKgorCQkg KiBJZiB3ZSBoYWQgY2FsY3VsYXRlZCBhdmVyYWdlIG51bWJlciBvZiByb3dzIHBlciBzdGVw IGZyb20gQU0gc3RhdHMsCisJCSAqIGNvbnNpZGVyIHRoYXQgdG9vLiBJdCdzIHBvc3NpYmxl IHRoZSBiYXRjaCBoYWQganVzdCBvbmUgcm93LCB3aGljaAorCQkgKiBtaWdodCByZXN1bHQg aW4gdmVyeSBoaWdoIGVzdGltYXRlIG9mIHN0ZXBzIC0gaXQnZCBiZSBzaWxseSB0bworCQkg KiBqdW1wIGUuZy4gZnJvbSAxIHRvIDEwMDAgYmFzZWQgb24gdGhpcyB1bnJlbGlhYmxlIHN0 YXRpc3RpY3MuIFRvCisJCSAqIHByZXZlbnQgdGhhdCwgd2UgY29tYmluZSB0aGUgdHdvIHJv d3NfcGVyX3N0ZXAgc291cmNlcyBhcyB3ZWlnaHRlZAorCQkgKiBzdW0sIHVzaW5nIHRoZSBv YnNlcnZlZCB2cy4gdGFyZ2V0IG51bWJlciBvZiByb3dzIGFzIHdlaWdodC4gVGhlCisJCSAq IGNsb3NlciB3ZSdyZSB0byB0aGUgdGFyZ2V0LCB0aGUgbW9yZSByZWxpYWJsZSB2YWx1ZSBm cm9tIHBhc3QKKwkJICogZXhlY3V0aW9ucyBpcy4KKwkJICoKKwkJICogQnV0IHdlIGRvbid0 IHdhbnQgdG8gb3ZlcmZsb3cgd29ya19tZW0sIHNvIGNhcCBieSBzdGVwX21heC4KKwkJICov CisJCWlmIChub2RlLT5ic19zdGF0cy5udHVwbGVzX3R1cGxlc29ydF9hbGwgPiAwKQorCQl7 CisJCQlkb3VibGUJCXJvd3NfcGVyX3N0ZXA7CisKKwkJCS8qIGF2ZXJhZ2UgbnVtYmVyIG9m IHJvd3Mgd2UgcHJvZHVjZWQgcGVyIHN0ZXAgc28gZmFyICovCisJCQlyb3dzX3Blcl9zdGVw ID0gKGRvdWJsZSkgbm9kZS0+YnNfc3RhdHMubnR1cGxlc190dXBsZXNvcnRfYWxsIC8gbm9k ZS0+YnNfc3RhdHMud2F0ZXJtYXJrX3VwZGF0ZXNfc3RlcHM7CisKKwkJCS8qCisJCQkgKiBJ ZiB3ZSBoYXZlIEFNIHN0YXRzIHdpdGggYXZlcmFnZSBudW1iZXIgb2Ygcm93cyBwZXIgc3Rl cCwgY29uc2lkZXIKKwkJCSAqIHRoYXQgdG9vIC0gYXBwcm94aW1hdGUgZGVwZW5kaW5nIG9u IHdoYXQgZnJhY3Rpb24gb2Ygcm93cyB3ZSBhbHJlYWR5CisJCQkgKiBwcm9kdWNlZCAod2l0 aCBoaWdoZXIgZnJhY3Rpb24gb2Ygcm93cyBwcm9kdWNlZCB3ZSBwcmVmZXIgdGhlIGxvY2Fs CisJCQkgKiBhdmVyYWdlLCBhcyBvcHBvc2VkIHRvIHRoZSBnbG9iYWwgYXZlcmFnZSBmcm9t IGluZGV4IEFNIHN0YXRzKS4KKwkJCSAqLworCQkJaWYgKHBsYW4tPnJvd3NfcGVyX3N0ZXAg PiAwKQorCQkJeworCQkJCS8qIG51bWJlciBvZiByb3dzIHdlIGFscmVhZHkgcHJvZHVjZWQg KGFzIGEgZnJhY3Rpb24pICovCisJCQkJZG91YmxlIHdlaWdodCA9IChkb3VibGUpIG5vZGUt PmJzX3N0YXRzLm50dXBsZXNfdHVwbGVzb3J0X2FsbCAvIHBsYW4tPnN0ZXBfbWF4cm93czsK KworCQkJCS8qIHBhcmFub2lhICovCisJCQkJd2VpZ2h0ID0gTWluKDEuMCwgd2VpZ2h0KTsK KworCQkJCS8qCisJCQkJICogQXBwcm94aW1hdGUgYmV0d2VlbiBpbmRleCBBTSBhbmQgImxv Y2FsIiBhdmVyYWdlIGNhbGN1bGF0ZWQKKwkJCQkgKiBmcm9tIHBhc3QgZXhlY3V0aW9ucy4g VGhlIGNsb3NlciB3ZSBnZXQgdG8gdGFyZ2V0IHJvd3MsIHRoZQorCQkJCSAqIG1vcmUgd2Ug aWdub3JlIHRoZSBpbmRleCBBTSBzdGF0cy4KKwkJCQkgKi8KKwkJCQlyb3dzX3Blcl9zdGVw ID0gd2VpZ2h0ICogcm93c19wZXJfc3RlcCArICgxIC0gd2VpZ2h0KSAqIHBsYW4tPnJvd3Nf cGVyX3N0ZXA7CisJCQl9CisKKwkJCS8qIGFwcHJveGltYXRlIHRoZSBzdGVwcyBiZXR3ZWVu ICovCisJCQlzdGVwID0gTWF4KHN0ZXAsIGNlaWwoKGRvdWJsZSkgbnJvd3NfcmVtYWluaW5n IC8gcm93c19wZXJfc3RlcCkpOworCisJCQkvKgorCQkJICogQnV0IGRvbid0IG92ZXJmbG93 IHRoZSBjdXJyZW50IG1heCAod2hpY2ggaXMgc2V0IGVpdGhlcgorCQkJICogYXMgMnggc3Rh cnRpbmcgdmFsdWUsIG9yIGZyb20gd29ya19tZW0uCisJCQkgKi8KKwkJCXN0ZXAgPSBNaW4o c3RlcCwgc3RlcF9tYXgpOworCQl9CisKKwkJcGxhbi0+d2F0ZXJtYXJrX3N0ZXAgPSBzdGVw OworCisJfQorCisJcGxhbi0+d2F0ZXJtYXJrX3N0ZXAgPSBNYXgoMSwgcGxhbi0+d2F0ZXJt YXJrX3N0ZXApOworCXBsYW4tPndhdGVybWFya19zdGVwID0gTWluKDgxOTIsIHBsYW4tPndh dGVybWFya19zdGVwKTsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUluZGV4TmV4dAogICoK QEAgLTk5NywxMyArMTE3NiwyMSBAQCBJbmRleE5leHQoQnJpblNvcnRTdGF0ZSAqbm9kZSkK IAogCQkJCQkJLyoKIAkJCQkJCSAqIFJlc2V0IHR1cGxlc29ydCBzdGF0aXN0aWNzIGJldHdl ZW4gcnVucywgb3RoZXJ3aXNlCi0JCQkJCQkgKiB3ZSdsbCBrZWVwIHJlLXVzaW5nIHN0YXRz IGZyb20gdGhlIGxhcmdlc3QgcnVuLgorCQkJCQkJICogd2UnbGwga2VlcCByZS11c2luZyBz dGF0cyBmcm9tIHRoZSBsYXJnZXN0IHJ1biwgd2hpY2gKKwkJCQkJCSAqIHdvdWxkIHRoZW4g Y29uZnVzZSB0aGUgYWRhcHRpdmUgYWRqdXN0bWVudCBvZiB0aGUKKwkJCQkJCSAqIHdhdGVy bWFyayBzdGVwLgogCQkJCQkJICovCiAJCQkJCQl0dXBsZXNvcnRfcmVzZXRfc3RhdHMobm9k ZS0+YnNfdHVwbGVzb3J0c3RhdGUpOwogCiAJCQkJCQl0dXBsZXNvcnRfcGVyZm9ybXNvcnQo bm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUpOwogCiAJCQkJCQlub2RlLT5ic19zdGF0cy5zb3J0 X2NvdW50Kys7CisKKwkJCQkJCW1lbXNldCgmc3RhdHMsIDAsIHNpemVvZihUdXBsZXNvcnRJ bnN0cnVtZW50YXRpb24pKTsKKwkJCQkJCXR1cGxlc29ydF9nZXRfc3RhdHMobm9kZS0+YnNf dHVwbGVzb3J0c3RhdGUsICZzdGF0cyk7CisKKwkJCQkJCWJyaW5zb3J0X2FkanVzdF93YXRl cm1hcmtfc3RlcChub2RlLCAmc3RhdHMpOworCiAJCQkJCQlub2RlLT5ic19zdGF0cy5udHVw bGVzX3R1cGxlc29ydCA9IDA7CiAKIAkJCQkJCXR1cGxlc29ydF9nZXRfc3RhdHMobm9kZS0+ YnNfdHVwbGVzb3J0c3RhdGUsICZzdGF0cyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9jcmVhdGVwbGFuLmMKaW5kZXggNmEzYTM4ZGQxNC4uM2U0MDZkMDRlYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMzI0LDEzICszMjQsOCBA QCBzdGF0aWMgR2F0aGVyTWVyZ2UgKmNyZWF0ZV9nYXRoZXJfbWVyZ2VfcGxhbihQbGFubmVy SW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJIEdhdGhlck1lcmdlUGF0aCAqYmVzdF9wYXRoKTsK IAogCi0vKgotICogSG93IG1hbnkgZGlzdGluY3QgbWludmFsIHZhbHVlcyB0byBsb29rIGZv cndhcmQgZm9yIHRoZSBuZXh0IHdhdGVybWFyaz8KLSAqCi0gKiBUaGUgc21hbGxlc3Qgc3Rl cCB3ZSBjYW4gZG8gaXMgMSwgd2hpY2ggbWVhbnMgdGhlIGltbWVkaWF0ZWx5IGZvbGxvd2lu ZwotICogKHdoaWxlIGRpc3RpbmN0KSBtaW52YWwuCi0gKi8KLWludCBicmluc29ydF93YXRl cm1hcmtfc3RlcCA9IDA7CisvKiBkZWZpbmVkIGluIG5vZGVCcmluU29ydC5jICovCitleHRl cm4gaW50IGJyaW5zb3J0X3dhdGVybWFya19zdGVwOwogCiAvKgogICogY3JlYXRlX3BsYW4K QEAgLTM0MzQsOCArMzQyOSwxNCBAQCBjcmVhdGVfYnJpbnNvcnRfcGxhbihQbGFubmVySW5m byAqcm9vdCwKIAkgKiBhcmUgdGhlcmUsIGFuZCBpZiB0aGVyZSBhcmUgb25seSBmZXcgdGhl biB0cnkgaW5jcmVhc2luZyB0aGUgc3RlcD8KIAkgKi8KIAlicmluc29ydF9wbGFuLT53YXRl cm1hcmtfc3RlcCA9IGJyaW5zb3J0X3dhdGVybWFya19zdGVwOworCWJyaW5zb3J0X3BsYW4t PnJvd3NfcGVyX3N0ZXAgPSAtMTsKIAotCWlmIChicmluc29ydF9wbGFuLT53YXRlcm1hcmtf c3RlcCA9PSAwKQorCWlmIChyb290LT5saW1pdF90dXBsZXMgPiAwKQorCQlicmluc29ydF9w bGFuLT5zdGVwX21heHJvd3MgPSByb290LT5saW1pdF90dXBsZXM7CisJZWxzZQorCQlicmlu c29ydF9wbGFuLT5zdGVwX21heHJvd3MgPSBicmluc29ydF9wbGFuLT5zY2FuLnBsYW4ucGxh bl9yb3dzOworCisJaWYgKGJyaW5zb3J0X3BsYW4tPndhdGVybWFya19zdGVwIDw9IDApCiAJ ewogCQlCcmluTWlubWF4U3RhdHMgKmFtc3RhdHM7CiAKQEAgLTM0NjMsNyArMzQ2NCw5IEBA IGNyZWF0ZV9icmluc29ydF9wbGFuKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJICAg YW1zdGF0cy0+bWF4dmFsX2luY3JlbWVudF9hdmcpOwogCQkJZG91YmxlCXJvd3NfcGVyX3N0 ZXAgPSBNYXgoMS4wLCBwY3RfcGVyX3N0ZXAgKiByb3dzKTsKIAotCQkJYnJpbnNvcnRfcGxh bi0+d2F0ZXJtYXJrX3N0ZXAgPSAoaW50KSAobWF4cm93cyAvIHJvd3NfcGVyX3N0ZXApOwor CQkJYnJpbnNvcnRfcGxhbi0+cm93c19wZXJfc3RlcCA9IHJvd3NfcGVyX3N0ZXA7CisKKwkJ CWJyaW5zb3J0X3BsYW4tPndhdGVybWFya19zdGVwID0gKGludCkgY2VpbChtYXhyb3dzIC8g cm93c19wZXJfc3RlcCk7CiAJCX0KIAogCQkvKiBzb21lIHJvdWdoIHNhZmV0eSBlc3RpbWF0 ZXMgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggNWU4ZDRlMzg1 Mi4uNDNlNzM5OTVlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAg LTM1ODcsNyArMzU4Nyw3IEBAIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50 W10gPQogCQkJR1VDX05PVF9JTl9TQU1QTEUKIAkJfSwKIAkJJmJyaW5zb3J0X3dhdGVybWFy a19zdGVwLAotCQkwLCAwLCBJTlRfTUFYLAorCQkwLCAtMSwgSU5UX01BWCwKIAkJTlVMTCwg TlVMTCwgTlVMTAogCX0sCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggYWU2OWE5OWNi OC4uMjFkNzVmNzQ5ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTE3MzEsNyArMTcz MSw3IEBAIHR5cGVkZWYgc3RydWN0IEJyaW5Tb3J0U3RhdGUKIAkgKiBXZSBuZWVkIHR3byB0 dXBsZXNvcnQgaW5zdGFuY2VzIC0gb25lIGZvciBjdXJyZW50IHJhbmdlLCBvbmUgZm9yCiAJ ICogc3BpbGwtb3ZlciB0dXBsZXMgZnJvbSB0aGUgb3ZlcmxhcHBpbmcgcmFuZ2VzCiAJICov Ci0Jdm9pZAkJICAgKmJzX3R1cGxlc29ydHN0YXRlOworCVR1cGxlc29ydHN0YXRlICAqYnNf dHVwbGVzb3J0c3RhdGU7CiAJVHVwbGVzdG9yZXN0YXRlICpic190dXBsZXN0b3JlOwogfSBC cmluU29ydFN0YXRlOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDlkNzg0ZjYzNzMu LjA2MDBiMWYzNzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC01MzAsNyArNTMwLDgg QEAgdHlwZWRlZiBzdHJ1Y3QgQnJpblNvcnQKIAogCS8qIG51bWJlciBvZiB3YXRlcm1hcmsg c3RlcHMgdG8gbWFrZSAqLwogCWludAkJCXdhdGVybWFya19zdGVwOwotCisJaW50CQkJc3Rl cF9tYXhyb3dzOworCWludAkJCXJvd3NfcGVyX3N0ZXA7CiB9IEJyaW5Tb3J0OwogCiAvKiAt LS0tLS0tLS0tLS0tLS0tCi0tIAoyLjQxLjAKCg== --------------CooOQ6LlXwcsddypE9zFAJMn Content-Type: text/x-patch; charset=UTF-8; name="0009-wip-add-brinsort-regression-tests-20230710.patch" Content-Disposition: attachment; filename="0009-wip-add-brinsort-regression-tests-20230710.patch" Content-Transfer-Encoding: base64 RnJvbSA2NTg4OTc4ZTEyYTM0OWZjZmRhZmQ3NzQ1YWYwMWE3OTA4Y2NiZTAxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogRnJpLCAzIEZlYiAyMDIzIDEzOjE5OjI0ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAwOS8xMV0gd2lwOiBhZGQgYnJpbnNvcnQgcmVncmVzc2lvbiB0ZXN0cwoK LS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydC5vdXQgICAgICAgfCA1 MzYgKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9l eHBycy5vdXQgfCA3NzYgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2JyaW5fc29ydF9tdWx0aS5vdXQgfCA1MzMgKysrKysrKysrKysrCiAuLi4vZXhw ZWN0ZWQvYnJpbl9zb3J0X211bHRpX2V4cHJzLm91dCAgICAgICAgfCA3NzIgKysrKysrKysr KysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAg ICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3NvcnQuc3FsICAgICAgICAg ICAgfCAyMzggKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3NvcnRfZXhwcnMu c3FsICAgICAgfCAzNzMgKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3Nv cnRfbXVsdGkuc3FsICAgICAgfCAyMzUgKysrKysrCiAuLi4vcmVncmVzcy9zcWwvYnJpbl9z b3J0X211bHRpX2V4cHJzLnNxbCAgICAgfCAzNjkgKysrKysrKysrCiA5IGZpbGVzIGNoYW5n ZWQsIDM4MzggaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0X2V4cHJzLm91dAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0X211bHRpLm91dAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0 X211bHRpX2V4cHJzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2JyaW5fc29ydC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNz L3NxbC9icmluX3NvcnRfZXhwcnMuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv cmVncmVzcy9zcWwvYnJpbl9zb3J0X211bHRpLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5fc29ydF9tdWx0aV9leHBycy5zcWwKCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydC5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uMzUwYTEwMWE1YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0Lm91dApAQCAtMCwwICsxLDUzNiBAQAor LS0gZnVuY3Rpb24gdG8gdmVyaWZ5IHZhcmlvdXMgc29ydC1yZWxhdGVkIGRhdGEgKHRvdGFs IHJvd3MsIG9yZGVyaW5nKQorY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcocF9zcWwgdGV4dCwgcF9yb3dzX2V4cGVjdGVkIGludCwgcF9kZXNj IGJvb2xlYW4pIHJldHVybnMgdm9pZCBhcyAkJAorZGVjbGFyZQorICAgIHZfY3VycyByZWZj dXJzb3I7CisgICAgdl9yb3cgcmVjb3JkOworICAgIHZfcHJldiByZWNvcmQ7CisgICAgdl9i cmluX3NvcnRfZm91bmQgYm9vbCA6PSBmYWxzZTsKKyAgICB2X2NvdW50IGludCA6PSAwOwor YmVnaW4KKworICAgIC0tIG5lZWRlZCBiZWNhdXNlIHRoZSBwX3NxbCBxdWVyeSBoYXMgZGlm ZmVyZW50IGRhdGEgdHlwZXMKKyAgICBleGVjdXRlICdkaXNjYXJkIHBsYW5zJzsKKworICAg IE9QRU4gdl9jdXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VURSBmb3JtYXQoJ2V4cGxhaW4gJXMn LCBwX3NxbCk7CisKKyAgICBMT09QCisgICAgICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93 OworCisgICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAgICAgICAgICBFWElUOworICAg ICAgICBFTkQgSUY7CisKKyAgICAgICAgSUYgdl9yb3c6OnRleHQgTElLRSAnJUJSSU4gU29y dCUnIFRIRU4KKyAgICAgICAgICAgIHZfYnJpbl9zb3J0X2ZvdW5kIDo9IHRydWU7CisgICAg ICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisgICAgRU5EIExPT1A7CisKKyAgICBD TE9TRSB2X2N1cnM7CisKKyAgICBJRiBOT1Qgdl9icmluX3NvcnRfZm91bmQgVEhFTgorICAg ICAgICBSQUlTRSBFWENFUFRJT04gJ0JSSU4gU29ydDogbm90IGZvdW5kJzsKKyAgICBFTkQg SUY7CisKKyAgICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KHBf c3FsKTsKKworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7CisK KyAgICAgICAgSUYgTk9UIEZPVU5EIFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAg IEVORCBJRjsKKworICAgICAgICBJRiB2X3ByZXYgSVMgTk9UIE5VTEwgVEhFTgorICAgICAg ICAgICAgSUYgdl9wcmV2LnZhbCA+IHZfcm93LnZhbCBBTkQgTk9UIHBfZGVzYyBUSEVOCisg ICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAlID4g JSAoYXNjKScsIHZfcHJldi52YWwsIHZfcm93LnZhbDsKKyAgICAgICAgICAgIEVORCBJRjsK KyAgICAgICAgICAgIElGIHZfcHJldi52YWwgPCB2X3Jvdy52YWwgQU5EIHBfZGVzYyBUSEVO CisgICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAl IDwgJSAoZGVzYyknLCB2X3ByZXYudmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQg SUY7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICB2X3ByZXYgOj0gdl9yb3c7CisgICAg ICAgIHZfY291bnQgOj0gdl9jb3VudCArIDE7CisgICAgRU5EIExPT1A7CisKKyAgICBDTE9T RSB2X2N1cnM7CisKKyAgICBJRiB2X2NvdW50ICE9IHBfcm93c19leHBlY3RlZCBUSEVOCisg ICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnY291bnQgbWlzbWF0Y2g6ICUgIT0gJScsIHZfY291 bnQsIHBfcm93c19leHBlY3RlZDsKKyAgICBFTkQgSUY7CisKK2VuZDsKKyQkIGxhbmd1YWdl IHBscGdzcWw7CitjcmVhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3QgKGludF92YWwgaW50LCBi aWdpbnRfdmFsIGJpZ2ludCwgdGV4dF92YWwgdGV4dCwgaW5ldF92YWwgaW5ldCkgd2l0aCAo ZmlsbGZhY3Rvcj0xMCk7CistLSBzZXF1ZW50aWFsIHZhbHVlcworaW5zZXJ0IGludG8gYnJp bl9zb3J0X3Rlc3QKK3NlbGVjdAorCWksCisJLWksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQg bGVhc3Qgb3Bwb3NpdGUKKwlscGFkKGk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAn KSwKKwknMTAuMC4wLjAnOjppbmV0ICsgaQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAw KSBzKGkpOworLS0gY3JlYXRlIGJyaW4gaW5kZXhlcyBvbiBpbmRpdmlkdWFsIGNvbHVtbnMK K2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF9pbnRfaWR4IG9uIGJyaW5fc29ydF90ZXN0 IHVzaW5nIGJyaW4gKGludF92YWwpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK2NyZWF0 ZSBpbmRleCBicmluX3NvcnRfdGVzdF9iaWdpbnRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVz aW5nIGJyaW4gKGJpZ2ludF92YWwpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK2NyZWF0 ZSBpbmRleCBicmluX3NvcnRfdGVzdF90ZXh0X2lkeCBvbiBicmluX3NvcnRfdGVzdCB1c2lu ZyBicmluICh0ZXh0X3ZhbCkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworY3JlYXRlIGlu ZGV4IGJyaW5fc29ydF90ZXN0X2luZXRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJy aW4gKGluZXRfdmFsIGluZXRfbWlubWF4X29wcykgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEp OworLS0KK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0Oworc2V0IGVuYWJsZV9zZXFz Y2FuID0gb2ZmOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsJywgMTAw MCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IGludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGlu dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNj IGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFs c2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92 YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCcsIDEwMDAs IGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSBiaWdpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxpbWl0IDEwMCcsIDEwMCwg ZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSBpbmV0X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYycsIDEwMDAsIHRydWUpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBp bmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBs aW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBp bmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgdGV4dF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MnLCAxMDAwLCB0cnVl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92 YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92 YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIHNlbWktcmFuZG9t IGRhdGEgKHNlcXVlbnRpYWwgKyByYW5kb21uZXNzKQordHJ1bmNhdGUgdGFibGUgYnJpbl9z b3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmluX3NvcnRfdGVzdAorc2VsZWN0CisJaSArICgx MDAgKiByYW5kb20oKSk6OmludCwKKwktKGkgKyAoMTAwICogcmFuZG9tKCkpOjppbnQpLAkt LSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZCgoaSArICgxMDAg KiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwkn MTAuMC4wLjAnOjppbmV0ICsgKGkgKyAxMDAgKiByYW5kb20oKTo6aW50KQorZnJvbSBnZW5l cmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworcmVpbmRleCB0YWJsZSBicmluX3NvcnRfdGVz dDsKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0Oworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSBpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBp bnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGlt aXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgYmlnaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdp bnRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAx MDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmln aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFs IGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCcsIDEwMDAsIGZhbHNl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92 YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFs c2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0 X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29y dF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwnLCAxMDAwLCBm YWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRl eHRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRl eHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRl c2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg dGV4dF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKKy0tIHJhbmRvbSBkYXRhCit0cnVuY2F0ZSB0YWJsZSBicmluX3NvcnRfdGVz dDsKK2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwkoMTAwMCAqIHJhbmRv bSgpKTo6aW50LAorCS0oKDEwMDAgKiByYW5kb20oKSk6OmludCksCS0tIHNhbWUgYXMgaW50 LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKCgoMTAwMCAqIHJhbmRvbSgpKTo6aW50 KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQg KyAoMTAwMCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDAp IHMoaSk7CityZWluZGV4IHRhYmxlIGJyaW5fc29ydF90ZXN0OwordmFjdXVtIGFuYWx5emUg YnJpbl9zb3J0X3Rlc3Q7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwn LCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFs IGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg aW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsJywg MTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGJpZ2ludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwJywg MTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGluZXRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRf dmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRf dmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9j aGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYycsIDEwMDAs IHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0 ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAs IHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0 ZXh0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworZHJvcCB0YWJs ZSBicmluX3NvcnRfdGVzdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvYnJpbl9zb3J0X2V4cHJzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJp bl9zb3J0X2V4cHJzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li45MDQ0YjQ5OTFhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9icmluX3NvcnRfZXhwcnMub3V0CkBAIC0wLDAgKzEsNzc2IEBACistLSBmdW5jdGlv biB0byB2ZXJpZnkgdmFyaW91cyBzb3J0LXJlbGF0ZWQgZGF0YSAodG90YWwgcm93cywgb3Jk ZXJpbmcpCitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRl cmluZyhwX3NxbCB0ZXh0LCBwX3Jvd3NfZXhwZWN0ZWQgaW50LCBwX2Rlc2MgYm9vbGVhbikg cmV0dXJucyB2b2lkIGFzICQkCitkZWNsYXJlCisgICAgdl9jdXJzIHJlZmN1cnNvcjsKKyAg ICB2X3JvdyByZWNvcmQ7CisgICAgdl9wcmV2IHJlY29yZDsKKyAgICB2X2JyaW5fc29ydF9m b3VuZCBib29sIDo9IGZhbHNlOworICAgIHZfY291bnQgaW50IDo9IDA7CitiZWdpbgorCisg ICAgLS0gbmVlZGVkIGJlY2F1c2UgdGhlIHBfc3FsIHF1ZXJ5IGhhcyBkaWZmZXJlbnQgZGF0 YSB0eXBlcworICAgIGV4ZWN1dGUgJ2Rpc2NhcmQgcGxhbnMnOworCisgICAgT1BFTiB2X2N1 cnMgTk8gU0NST0xMIEZPUiBFWEVDVVRFIGZvcm1hdCgnZXhwbGFpbiAlcycsIHBfc3FsKTsK KworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7CisKKyAgICAg ICAgSUYgTk9UIEZPVU5EIFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJ RjsKKworICAgICAgICBJRiB2X3Jvdzo6dGV4dCBMSUtFICclQlJJTiBTb3J0JScgVEhFTgor ICAgICAgICAgICAgdl9icmluX3NvcnRfZm91bmQgOj0gdHJ1ZTsKKyAgICAgICAgICAgIEVY SVQ7CisgICAgICAgIEVORCBJRjsKKyAgICBFTkQgTE9PUDsKKworICAgIENMT1NFIHZfY3Vy czsKKworICAgIElGIE5PVCB2X2JyaW5fc29ydF9mb3VuZCBUSEVOCisgICAgICAgIFJBSVNF IEVYQ0VQVElPTiAnQlJJTiBTb3J0OiBub3QgZm91bmQnOworICAgIEVORCBJRjsKKworICAg IE9QRU4gdl9jdXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VURSBmb3JtYXQocF9zcWwpOworCisg ICAgTE9PUAorICAgICAgICBGRVRDSCB2X2N1cnMgSU5UTyB2X3JvdzsKKworICAgICAgICBJ RiBOT1QgRk9VTkQgVEhFTgorICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOwor CisgICAgICAgIElGIHZfcHJldiBJUyBOT1QgTlVMTCBUSEVOCisgICAgICAgICAgICBJRiB2 X3ByZXYudmFsID4gdl9yb3cudmFsIEFORCBOT1QgcF9kZXNjIFRIRU4KKyAgICAgICAgICAg ICAgICBSQUlTRSBFWENFUFRJT04gJ29yZGVyaW5nIG1pc21hdGNoICUgPiAlIChhc2MpJywg dl9wcmV2LnZhbCwgdl9yb3cudmFsOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICAg ICAgSUYgdl9wcmV2LnZhbCA8IHZfcm93LnZhbCBBTkQgcF9kZXNjIFRIRU4KKyAgICAgICAg ICAgICAgICBSQUlTRSBFWENFUFRJT04gJ29yZGVyaW5nIG1pc21hdGNoICUgPCAlIChkZXNj KScsIHZfcHJldi52YWwsIHZfcm93LnZhbDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAg ICAgRU5EIElGOworCisgICAgICAgIHZfcHJldiA6PSB2X3JvdzsKKyAgICAgICAgdl9jb3Vu dCA6PSB2X2NvdW50ICsgMTsKKyAgICBFTkQgTE9PUDsKKworICAgIENMT1NFIHZfY3VyczsK KworICAgIElGIHZfY291bnQgIT0gcF9yb3dzX2V4cGVjdGVkIFRIRU4KKyAgICAgICAgUkFJ U0UgRVhDRVBUSU9OICdjb3VudCBtaXNtYXRjaDogJSAhPSAlJywgdl9jb3VudCwgcF9yb3dz X2V4cGVjdGVkOworICAgIEVORCBJRjsKKworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3NxbDsK K2NyZWF0ZSB0YWJsZSBicmluX3NvcnRfdGVzdCAoaW50X3ZhbCBpbnQsIGJpZ2ludF92YWwg YmlnaW50LCB0ZXh0X3ZhbCB0ZXh0LCBpbmV0X3ZhbCBpbmV0KSB3aXRoIChmaWxsZmFjdG9y PTEwKTsKKy0tIHNlcXVlbnRpYWwgdmFsdWVzCitpbnNlcnQgaW50byBicmluX3NvcnRfdGVz dAorc2VsZWN0CisJaSwKKwktaSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBv c2l0ZQorCWxwYWQoaTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4w LjAuMCc6OmluZXQgKyBpCitmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7Cist LSBjcmVhdGUgYnJpbiBpbmRleGVzIG9uIGluZGl2aWR1YWwgY29sdW1ucworY3JlYXRlIGlu ZGV4IGJyaW5fc29ydF90ZXN0X2ludF9pZHggb24gYnJpbl9zb3J0X3Rlc3QgdXNpbmcgYnJp biAoKGludF92YWwgKyAxKSkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworY3JlYXRlIGlu ZGV4IGJyaW5fc29ydF90ZXN0X2JpZ2ludF9pZHggb24gYnJpbl9zb3J0X3Rlc3QgdXNpbmcg YnJpbiAoKGJpZ2ludF92YWwgKyAxKSkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworY3Jl YXRlIGluZGV4IGJyaW5fc29ydF90ZXN0X3RleHRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVz aW5nIGJyaW4gKCgneCcgfHwgdGV4dF92YWwpKSB3aXRoIChwYWdlc19wZXJfcmFuZ2U9MSk7 CitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3RfaW5ldF9pZHggb24gYnJpbl9zb3J0X3Rl c3QgdXNpbmcgYnJpbiAoKGluZXRfdmFsICsgMSkgaW5ldF9taW5tYXhfb3BzKSB3aXRoIChw YWdlc19wZXJfcmFuZ2U9MSk7CistLQordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7 CitzZXQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CistLSBtYXRjaGluZyBleHByZXNzaW9uCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSknLCAxMDAw LCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0 cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92 YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6 ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0 IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0g MSkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxz ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwg ZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4p IGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJS SU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJ U0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6 IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKy0tIG1hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGJpZ2ludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2Mn LCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRf dmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29y dF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3Zh bCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitF UlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rp b24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUg MzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChi aWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJp Z2ludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDog bm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NP TlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0 LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywg MTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQ TC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIs Ym9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwv cGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJv b2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQ TC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIs Ym9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFs KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92 YWwpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAs IHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgn J3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRf dmFsKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NP TlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0 LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAw LCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9w Z1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9v bGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2Up OworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1 bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBs aW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOwor RVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0 aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5l IDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo Jyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNl KTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBm dW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikg bGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBM L3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixi b29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKScsIDEwMDAs IGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBs aW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAx MDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW5ldF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFs c2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSknLCAxMDAwLCBmYWxz ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwg ZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4p IGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0 OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVj a19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQg MTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05U RVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxp bnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0 cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NR TCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVh bikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsK K0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5j dGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGlu ZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu ZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitF UlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rp b24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUg MzEgYXQgUkFJU0UKKy0tIHNlbWktcmFuZG9tIGRhdGEgKHNlcXVlbnRpYWwgKyByYW5kb21u ZXNzKQordHJ1bmNhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmlu X3NvcnRfdGVzdAorc2VsZWN0CisJaSArICgxMDAgKiByYW5kb20oKSk6OmludCwKKwktKGkg KyAoMTAwICogcmFuZG9tKCkpOjppbnQpLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0 IG9wcG9zaXRlCisJbHBhZCgoaSArICgxMDAgKiByYW5kb20oKSk6OmludCk6OnRleHQgfHwg bWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgKGkgKyAxMDAg KiByYW5kb20oKTo6aW50KQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOwor cmVpbmRleCB0YWJsZSBicmluX3NvcnRfdGVzdDsKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29y dF90ZXN0OworLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkg ZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVl KTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBm dW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikg bGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNv cnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBM L3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixi b29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSknLCAx MDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2lu dF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRl c2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hp bmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo YmlnaW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5v dCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYycs IDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDog IFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdl cixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7 CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVu Y3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxp bmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjog IEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQg UkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBC UklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJB SVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFs IC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjog IEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQg UkFJU0UKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9j aGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRl eHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwg dGV4dF92YWwpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFs KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92 YWwpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7 CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVu Y3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxp bmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJS SU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJ U0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8 IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0 OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVj a19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFs KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92 YWwpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBu b3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19v cmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwp IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29y dDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRf dmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAg QlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmlu c29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBS QUlTRQorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEp IGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29y dF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsg MSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0t IG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbmV0X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNv cnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNj JywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhU OiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRl Z2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOwor RVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0 aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5l IDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4g U29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxp bWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDog bm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5v dCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCistLSByYW5k b20gZGF0YQordHJ1bmNhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBi cmluX3NvcnRfdGVzdAorc2VsZWN0CisJKDEwMDAgKiByYW5kb20oKSk6OmludCwKKwktKCgx MDAwICogcmFuZG9tKCkpOjppbnQpLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9w cG9zaXRlCisJbHBhZCgoKDEwMDAgKiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1KGk6 OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgKDEwMDAgKiByYW5kb20o KTo6aW50KQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworcmVpbmRleCB0 YWJsZSBicmluX3NvcnRfdGVzdDsKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0Owor LS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYycsIDEw MDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAx KSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJl c3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAx KScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9S OiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBi cmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBh dCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAt IDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAn LCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDog IFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdl cixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZh bHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NR TCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVh bikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUp OworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1 bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBs aW5lIDMxIGF0IFJBSVNFCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAx KSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQg MTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVz c2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3Zh bCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRy dWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FM IGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFu KSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjog IEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQg UkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29y dDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6 IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29y dDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKy0t IG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29y dF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8 IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4Jycg fHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwp IGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2Mg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBt aXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitFUlJPUjog IEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQg UkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScn IHx8IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDog bm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFs KSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2Mg bGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQK K0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0 ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZv dW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNj IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0 OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVj a19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorLS0g bWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MnLCAx MDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3Zh bCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjJywgMTAwMCwg dHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdT UUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xl YW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBC UklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJB SVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAx KSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5k CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco dGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitkcm9wIHRhYmxlIGJyaW5f c29ydF90ZXN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmlu X3NvcnRfbXVsdGkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmluX3NvcnRf bXVsdGkub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjUxMjUx MWY3MTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Jy aW5fc29ydF9tdWx0aS5vdXQKQEAgLTAsMCArMSw1MzMgQEAKKy0tIGZ1bmN0aW9uIHRvIHZl cmlmeSB2YXJpb3VzIHNvcnQtcmVsYXRlZCBkYXRhICh0b3RhbCByb3dzLCBvcmRlcmluZykK K2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHBf c3FsIHRleHQsIHBfcm93c19leHBlY3RlZCBpbnQsIHBfZGVzYyBib29sZWFuKSByZXR1cm5z IHZvaWQgYXMgJCQKK2RlY2xhcmUKKyAgICB2X2N1cnMgcmVmY3Vyc29yOworICAgIHZfcm93 IHJlY29yZDsKKyAgICB2X3ByZXYgcmVjb3JkOworICAgIHZfYnJpbl9zb3J0X2ZvdW5kIGJv b2wgOj0gZmFsc2U7CisgICAgdl9jb3VudCBpbnQgOj0gMDsKK2JlZ2luCisKKyAgICAtLSBu ZWVkZWQgYmVjYXVzZSB0aGUgcF9zcWwgcXVlcnkgaGFzIGRpZmZlcmVudCBkYXRhIHR5cGVz CisgICAgZXhlY3V0ZSAnZGlzY2FyZCBwbGFucyc7CisKKyAgICBPUEVOIHZfY3VycyBOTyBT Q1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KCdleHBsYWluICVzJywgcF9zcWwpOworCisgICAg TE9PUAorICAgICAgICBGRVRDSCB2X2N1cnMgSU5UTyB2X3JvdzsKKworICAgICAgICBJRiBO T1QgRk9VTkQgVEhFTgorICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworCisg ICAgICAgIElGIHZfcm93Ojp0ZXh0IExJS0UgJyVCUklOIFNvcnQlJyBUSEVOCisgICAgICAg ICAgICB2X2JyaW5fc29ydF9mb3VuZCA6PSB0cnVlOworICAgICAgICAgICAgRVhJVDsKKyAg ICAgICAgRU5EIElGOworICAgIEVORCBMT09QOworCisgICAgQ0xPU0Ugdl9jdXJzOworCisg ICAgSUYgTk9UIHZfYnJpbl9zb3J0X2ZvdW5kIFRIRU4KKyAgICAgICAgUkFJU0UgRVhDRVBU SU9OICdCUklOIFNvcnQ6IG5vdCBmb3VuZCc7CisgICAgRU5EIElGOworCisgICAgT1BFTiB2 X2N1cnMgTk8gU0NST0xMIEZPUiBFWEVDVVRFIGZvcm1hdChwX3NxbCk7CisKKyAgICBMT09Q CisgICAgICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93OworCisgICAgICAgIElGIE5PVCBG T1VORCBUSEVOCisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisKKyAgICAg ICAgSUYgdl9wcmV2IElTIE5PVCBOVUxMIFRIRU4KKyAgICAgICAgICAgIElGIHZfcHJldi52 YWwgPiB2X3Jvdy52YWwgQU5EIE5PVCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAgICAgIFJB SVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA+ICUgKGFzYyknLCB2X3ByZXYu dmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgICAgICBJRiB2 X3ByZXYudmFsIDwgdl9yb3cudmFsIEFORCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAgICAg IFJBSVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA8ICUgKGRlc2MpJywgdl9w cmV2LnZhbCwgdl9yb3cudmFsOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICBFTkQg SUY7CisKKyAgICAgICAgdl9wcmV2IDo9IHZfcm93OworICAgICAgICB2X2NvdW50IDo9IHZf Y291bnQgKyAxOworICAgIEVORCBMT09QOworCisgICAgQ0xPU0Ugdl9jdXJzOworCisgICAg SUYgdl9jb3VudCAhPSBwX3Jvd3NfZXhwZWN0ZWQgVEhFTgorICAgICAgICBSQUlTRSBFWENF UFRJT04gJ2NvdW50IG1pc21hdGNoOiAlICE9ICUnLCB2X2NvdW50LCBwX3Jvd3NfZXhwZWN0 ZWQ7CisgICAgRU5EIElGOworCitlbmQ7CiskJCBsYW5ndWFnZSBwbHBnc3FsOworY3JlYXRl IHRhYmxlIGJyaW5fc29ydF90ZXN0IChpbnRfdmFsIGludCwgYmlnaW50X3ZhbCBiaWdpbnQs IHRleHRfdmFsIHRleHQsIGluZXRfdmFsIGluZXQpIHdpdGggKGZpbGxmYWN0b3I9MTApOwor LS0gc2VxdWVudGlhbCB2YWx1ZXMKK2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxl Y3QKKwlpLAorCS1pLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJ bHBhZChpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4wJzo6 aW5ldCArIGkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKKy0tIGNyZWF0 ZSBicmluIGluZGV4ZXMgb24gaW5kaXZpZHVhbCBjb2x1bW5zCitjcmVhdGUgaW5kZXggYnJp bl9zb3J0X3Rlc3RfbXVsdGlfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKGlu dF92YWwsIGJpZ2ludF92YWwsIHRleHRfdmFsLCBpbmV0X3ZhbCBpbmV0X21pbm1heF9vcHMp IHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKKy0tCit2YWN1dW0gYW5hbHl6ZSBicmluX3Nv cnRfdGVzdDsKK3NldCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxp bWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGJpZ2ludF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmln aW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywg MTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSBiaWdpbnRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJp Z2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3Zh bCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9j aGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwnLCAxMDAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRf dmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2Mg bGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZh bHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5l dF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsJywgMTAwMCwg ZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0 ZXh0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0 ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBk ZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCistLSBzZW1pLXJhbmRvbSBkYXRhIChzZXF1ZW50aWFsICsgcmFuZG9tbmVz cykKK3RydW5jYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9z b3J0X3Rlc3QKK3NlbGVjdAorCWkgKyAoMTAwICogcmFuZG9tKCkpOjppbnQsCisJLShpICsg KDEwMCAqIHJhbmRvbSgpKTo6aW50KSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBv cHBvc2l0ZQorCWxwYWQoKGkgKyAoMTAwICogcmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1k NShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArIChpICsgMTAwICog cmFuZG9tKCk6OmludCkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKK3Jl aW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7Cit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRf dGVzdDsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCcsIDEwMDAsIGZh bHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRf dmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1p dCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRl c2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwnLCAxMDAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmln aW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdp bnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW5ldF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQg MTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IHRleHRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRl eHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxp bWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRl eHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxp bWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSByYW5kb20gZGF0YQordHJ1 bmNhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmluX3NvcnRfdGVz dAorc2VsZWN0CisJKDEwMDAgKiByYW5kb20oKSk6OmludCwKKwktKCgxMDAwICogcmFuZG9t KCkpOjppbnQpLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBh ZCgoKDEwMDAgKiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwg JzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgKDEwMDAgKiByYW5kb20oKTo6aW50KQorZnJv bSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworcmVpbmRleCB0YWJsZSBicmluX3Nv cnRfdGVzdDsKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0Oworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYycsIDEwMDAsIHRy dWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92 YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MnLCAxMDAw LCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSBiaWdpbnRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAx MDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdp bnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCcsIDEwMDAs IGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg aW5ldF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg aW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwg ZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4 dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwnLCAx MDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IHRleHRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRf dmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK2Ryb3AgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9tdWx0aV9leHBycy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9tdWx0aV9leHBycy5vdXQK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uN2ZhZGU0ZTdjNAotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0X211 bHRpX2V4cHJzLm91dApAQCAtMCwwICsxLDc3MiBAQAorLS0gZnVuY3Rpb24gdG8gdmVyaWZ5 IHZhcmlvdXMgc29ydC1yZWxhdGVkIGRhdGEgKHRvdGFsIHJvd3MsIG9yZGVyaW5nKQorY3Jl YXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcocF9zcWwg dGV4dCwgcF9yb3dzX2V4cGVjdGVkIGludCwgcF9kZXNjIGJvb2xlYW4pIHJldHVybnMgdm9p ZCBhcyAkJAorZGVjbGFyZQorICAgIHZfY3VycyByZWZjdXJzb3I7CisgICAgdl9yb3cgcmVj b3JkOworICAgIHZfcHJldiByZWNvcmQ7CisgICAgdl9icmluX3NvcnRfZm91bmQgYm9vbCA6 PSBmYWxzZTsKKyAgICB2X2NvdW50IGludCA6PSAwOworYmVnaW4KKworICAgIC0tIG5lZWRl ZCBiZWNhdXNlIHRoZSBwX3NxbCBxdWVyeSBoYXMgZGlmZmVyZW50IGRhdGEgdHlwZXMKKyAg ICBleGVjdXRlICdkaXNjYXJkIHBsYW5zJzsKKworICAgIE9QRU4gdl9jdXJzIE5PIFNDUk9M TCBGT1IgRVhFQ1VURSBmb3JtYXQoJ2V4cGxhaW4gJXMnLCBwX3NxbCk7CisKKyAgICBMT09Q CisgICAgICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93OworCisgICAgICAgIElGIE5PVCBG T1VORCBUSEVOCisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisKKyAgICAg ICAgSUYgdl9yb3c6OnRleHQgTElLRSAnJUJSSU4gU29ydCUnIFRIRU4KKyAgICAgICAgICAg IHZfYnJpbl9zb3J0X2ZvdW5kIDo9IHRydWU7CisgICAgICAgICAgICBFWElUOworICAgICAg ICBFTkQgSUY7CisgICAgRU5EIExPT1A7CisKKyAgICBDTE9TRSB2X2N1cnM7CisKKyAgICBJ RiBOT1Qgdl9icmluX3NvcnRfZm91bmQgVEhFTgorICAgICAgICBSQUlTRSBFWENFUFRJT04g J0JSSU4gU29ydDogbm90IGZvdW5kJzsKKyAgICBFTkQgSUY7CisKKyAgICBPUEVOIHZfY3Vy cyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KHBfc3FsKTsKKworICAgIExPT1AKKyAg ICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7CisKKyAgICAgICAgSUYgTk9UIEZPVU5E IFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICBJ RiB2X3ByZXYgSVMgTk9UIE5VTEwgVEhFTgorICAgICAgICAgICAgSUYgdl9wcmV2LnZhbCA+ IHZfcm93LnZhbCBBTkQgTk9UIHBfZGVzYyBUSEVOCisgICAgICAgICAgICAgICAgUkFJU0Ug RVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAlID4gJSAoYXNjKScsIHZfcHJldi52YWws IHZfcm93LnZhbDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgICAgIElGIHZfcHJl di52YWwgPCB2X3Jvdy52YWwgQU5EIHBfZGVzYyBUSEVOCisgICAgICAgICAgICAgICAgUkFJ U0UgRVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAlIDwgJSAoZGVzYyknLCB2X3ByZXYu dmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgIEVORCBJRjsK KworICAgICAgICB2X3ByZXYgOj0gdl9yb3c7CisgICAgICAgIHZfY291bnQgOj0gdl9jb3Vu dCArIDE7CisgICAgRU5EIExPT1A7CisKKyAgICBDTE9TRSB2X2N1cnM7CisKKyAgICBJRiB2 X2NvdW50ICE9IHBfcm93c19leHBlY3RlZCBUSEVOCisgICAgICAgIFJBSVNFIEVYQ0VQVElP TiAnY291bnQgbWlzbWF0Y2g6ICUgIT0gJScsIHZfY291bnQsIHBfcm93c19leHBlY3RlZDsK KyAgICBFTkQgSUY7CisKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWw7CitjcmVhdGUgdGFi bGUgYnJpbl9zb3J0X3Rlc3QgKGludF92YWwgaW50LCBiaWdpbnRfdmFsIGJpZ2ludCwgdGV4 dF92YWwgdGV4dCwgaW5ldF92YWwgaW5ldCkgd2l0aCAoZmlsbGZhY3Rvcj0xMCk7CistLSBz ZXF1ZW50aWFsIHZhbHVlcworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAor CWksCisJLWksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFk KGk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0 ICsgaQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworLS0gY3JlYXRlIGJy aW4gaW5kZXhlcyBvbiBpbmRpdmlkdWFsIGNvbHVtbnMKK2NyZWF0ZSBpbmRleCBicmluX3Nv cnRfdGVzdF9pbnRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKChpbnRfdmFs ICsgMSksIChiaWdpbnRfdmFsICsgMSksICgneCcgfHwgdGV4dF92YWwpLCAoaW5ldF92YWwg KyAxKSBpbmV0X21pbm1heF9vcHMpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK3ZhY3V1 bSBhbmFseXplIGJyaW5fc29ydF90ZXN0Oworc2V0IGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor LS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYycsIDEw MDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAx KSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJl c3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAx KScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9S OiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBi cmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBh dCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAt IDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAn LCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDog IFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdl cixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZh bHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NR TCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVh bikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUp OworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1 bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBs aW5lIDMxIGF0IFJBSVNFCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAx KSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQg MTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVz c2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3Zh bCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRy dWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FM IGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFu KSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjog IEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQg UkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29y dDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6 IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29y dDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKy0t IG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29y dF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8 IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4Jycg fHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwp IGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2Mg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBt aXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitFUlJPUjog IEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQg UkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScn IHx8IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDog bm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFs KSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2Mg bGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQK K0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0 ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZv dW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNj IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0 OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVj a19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorLS0g bWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MnLCAx MDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3Zh bCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjJywgMTAwMCwg dHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdT UUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xl YW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBC UklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJB SVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAx KSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5k CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco dGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCistLSBzZW1pLXJhbmRvbSBk YXRhIChzZXF1ZW50aWFsICsgcmFuZG9tbmVzcykKK3RydW5jYXRlIHRhYmxlIGJyaW5fc29y dF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCWkgKyAoMTAw ICogcmFuZG9tKCkpOjppbnQsCisJLShpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50KSwJLS0g c2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoKGkgKyAoMTAwICog cmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEw LjAuMC4wJzo6aW5ldCArIChpICsgMTAwICogcmFuZG9tKCk6OmludCkKK2Zyb20gZ2VuZXJh dGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7 Cit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKy0tIG1hdGNoaW5nIGV4cHJlc3Np b24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKScs IDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29y dF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEp IGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAx MDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitF UlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rp b24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUg MzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92 YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZv dW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAs IGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9w Z1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9v bGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9S OiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBi cmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBh dCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAt IDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4g U29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNj IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0 OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVj a19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorLS0g bWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkg ZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBm YWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChi aWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJp Z2ludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmln aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdp bnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKScsIDEwMDAsIGZhbHNl KTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBm dW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikg bGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBT b3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9j aGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEp IGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAx MDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVY VDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50 ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVY VDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50 ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCistLSBtYXRjaGluZyBleHByZXNzaW9u CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4 dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjJywg MTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAxMDAsIGZh bHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBm YWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lv bgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRl eHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwg dGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYycs IDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDog IFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdl cixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBm YWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdT UUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xl YW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1 ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwg ZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4p IGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3Bn U1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29s ZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhU OiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRl Z2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24K K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpJywg MTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAr IDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0IDEw MCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKScsIDEwMDAs IGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9w Z1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9v bGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklO IFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNF CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBs aW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQK K0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0 ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAx MDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBM L3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixi b29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFs c2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FM IGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFu KSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVl KTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBm dW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikg bGluZSAzMSBhdCBSQUlTRQorLS0gcmFuZG9tIGRhdGEKK3RydW5jYXRlIHRhYmxlIGJyaW5f c29ydF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCSgxMDAw ICogcmFuZG9tKCkpOjppbnQsCisJLSgoMTAwMCAqIHJhbmRvbSgpKTo6aW50KSwJLS0gc2Ft ZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoKCgxMDAwICogcmFuZG9t KCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4w Jzo6aW5ldCArICgxMDAwICogcmFuZG9tKCk6OmludCkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVz KDEsMTAwMCkgcyhpKTsKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7Cit2YWN1dW0g YW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKScsIDEwMDAsIGZh bHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGxpbWl0IDEw MCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUp OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAr IDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitFUlJPUjogIEJS SU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJ U0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBk ZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05U RVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxp bnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsK K0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5j dGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGlu ZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50 X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBT b3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9j aGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorLS0gbWF0Y2hpbmcg ZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJp Z2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmln aW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYycsIDEw MDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChi aWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJp Z2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwg KyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsg MSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9S OiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBi cmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBh dCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2lu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50 X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3Qg Zm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRl cmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEw MCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVY VDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50 ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAs IHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3Bn U1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29s ZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZh bHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NR TCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVh bikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3Bn U1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29s ZWFuKSBsaW5lIDMxIGF0IFJBSVNFCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkn LCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcn eCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo Jyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcn IHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4 JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgn J3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0 cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwp JywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVY VDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50 ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRy dWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FM IGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFu KSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitF UlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rp b24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUg MzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgn J3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJP UjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24g YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEg YXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcn eScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOwor RVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0 aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5l IDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo Jyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg dHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdT UUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xl YW4pIGxpbmUgMzEgYXQgUkFJU0UKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpJywgMTAwMCwgZmFs c2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW5ldF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0 IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwg dHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsK K0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5j dGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGlu ZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu ZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5v dCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUp OworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1 bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBs aW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW5ldF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJS T1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9u IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMx IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5l dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92 YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9S OiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBi cmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBh dCBSQUlTRQorZHJvcCB0YWJsZSBicmluX3NvcnRfdGVzdDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCmluZGV4IGNmNDZmYTMzNTkuLjE1ZWFkMjRkNGQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTMxLDMgKzEzMSw5IEBAIHRlc3Q6IGZhc3Rf ZGVmYXVsdAogIyBydW4gdGFibGVzcGFjZSB0ZXN0IGF0IHRoZSBlbmQgYmVjYXVzZSBpdCBk cm9wcyB0aGUgdGFibGVzcGFjZSBjcmVhdGVkIGR1cmluZwogIyBzZXR1cCB0aGF0IG90aGVy IHRlc3RzIG1heSB1c2UuCiB0ZXN0OiB0YWJsZXNwYWNlCisKKyMgdHJ5IHNvcnRpbmcgdXNp bmcgQlJJTiBpbmRleAordGVzdDogYnJpbl9zb3J0Cit0ZXN0OiBicmluX3NvcnRfbXVsdGkK K3Rlc3Q6IGJyaW5fc29ydF9leHBycwordGVzdDogYnJpbl9zb3J0X211bHRpX2V4cHJzCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3NvcnQuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvYnJpbl9zb3J0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi5iMzhiZDQyNDU3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvYnJpbl9zb3J0LnNxbApAQCAtMCwwICsxLDIzOCBAQAorLS0gZnVuY3Rp b24gdG8gdmVyaWZ5IHZhcmlvdXMgc29ydC1yZWxhdGVkIGRhdGEgKHRvdGFsIHJvd3MsIG9y ZGVyaW5nKQorY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcocF9zcWwgdGV4dCwgcF9yb3dzX2V4cGVjdGVkIGludCwgcF9kZXNjIGJvb2xlYW4p IHJldHVybnMgdm9pZCBhcyAkJAorZGVjbGFyZQorICAgIHZfY3VycyByZWZjdXJzb3I7Cisg ICAgdl9yb3cgcmVjb3JkOworICAgIHZfcHJldiByZWNvcmQ7CisgICAgdl9icmluX3NvcnRf Zm91bmQgYm9vbCA6PSBmYWxzZTsKKyAgICB2X2NvdW50IGludCA6PSAwOworYmVnaW4KKwor ICAgIC0tIG5lZWRlZCBiZWNhdXNlIHRoZSBwX3NxbCBxdWVyeSBoYXMgZGlmZmVyZW50IGRh dGEgdHlwZXMKKyAgICBleGVjdXRlICdkaXNjYXJkIHBsYW5zJzsKKworICAgIE9QRU4gdl9j dXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VURSBmb3JtYXQoJ2V4cGxhaW4gJXMnLCBwX3NxbCk7 CisKKyAgICBMT09QCisgICAgICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93OworCisgICAg ICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQg SUY7CisKKyAgICAgICAgSUYgdl9yb3c6OnRleHQgTElLRSAnJUJSSU4gU29ydCUnIFRIRU4K KyAgICAgICAgICAgIHZfYnJpbl9zb3J0X2ZvdW5kIDo9IHRydWU7CisgICAgICAgICAgICBF WElUOworICAgICAgICBFTkQgSUY7CisgICAgRU5EIExPT1A7CisKKyAgICBDTE9TRSB2X2N1 cnM7CisKKyAgICBJRiBOT1Qgdl9icmluX3NvcnRfZm91bmQgVEhFTgorICAgICAgICBSQUlT RSBFWENFUFRJT04gJ0JSSU4gU29ydDogbm90IGZvdW5kJzsKKyAgICBFTkQgSUY7CisKKyAg ICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KHBfc3FsKTsKKwor ICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7CisKKyAgICAgICAg SUYgTk9UIEZPVU5EIFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsK KworICAgICAgICBJRiB2X3ByZXYgSVMgTk9UIE5VTEwgVEhFTgorICAgICAgICAgICAgSUYg dl9wcmV2LnZhbCA+IHZfcm93LnZhbCBBTkQgTk9UIHBfZGVzYyBUSEVOCisgICAgICAgICAg ICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAlID4gJSAoYXNjKScs IHZfcHJldi52YWwsIHZfcm93LnZhbDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAg ICAgIElGIHZfcHJldi52YWwgPCB2X3Jvdy52YWwgQU5EIHBfZGVzYyBUSEVOCisgICAgICAg ICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAlIDwgJSAoZGVz YyknLCB2X3ByZXYudmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQgSUY7CisgICAg ICAgIEVORCBJRjsKKworICAgICAgICB2X3ByZXYgOj0gdl9yb3c7CisgICAgICAgIHZfY291 bnQgOj0gdl9jb3VudCArIDE7CisgICAgRU5EIExPT1A7CisKKyAgICBDTE9TRSB2X2N1cnM7 CisKKyAgICBJRiB2X2NvdW50ICE9IHBfcm93c19leHBlY3RlZCBUSEVOCisgICAgICAgIFJB SVNFIEVYQ0VQVElPTiAnY291bnQgbWlzbWF0Y2g6ICUgIT0gJScsIHZfY291bnQsIHBfcm93 c19leHBlY3RlZDsKKyAgICBFTkQgSUY7CisKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWw7 CisKK2NyZWF0ZSB0YWJsZSBicmluX3NvcnRfdGVzdCAoaW50X3ZhbCBpbnQsIGJpZ2ludF92 YWwgYmlnaW50LCB0ZXh0X3ZhbCB0ZXh0LCBpbmV0X3ZhbCBpbmV0KSB3aXRoIChmaWxsZmFj dG9yPTEwKTsKKworLS0gc2VxdWVudGlhbCB2YWx1ZXMKK2luc2VydCBpbnRvIGJyaW5fc29y dF90ZXN0CitzZWxlY3QKKwlpLAorCS1pLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0 IG9wcG9zaXRlCisJbHBhZChpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJ JzEwLjAuMC4wJzo6aW5ldCArIGkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhp KTsKKworLS0gY3JlYXRlIGJyaW4gaW5kZXhlcyBvbiBpbmRpdmlkdWFsIGNvbHVtbnMKK2Ny ZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF9pbnRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVz aW5nIGJyaW4gKGludF92YWwpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK2NyZWF0ZSBp bmRleCBicmluX3NvcnRfdGVzdF9iaWdpbnRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5n IGJyaW4gKGJpZ2ludF92YWwpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK2NyZWF0ZSBp bmRleCBicmluX3NvcnRfdGVzdF90ZXh0X2lkeCBvbiBicmluX3NvcnRfdGVzdCB1c2luZyBi cmluICh0ZXh0X3ZhbCkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworY3JlYXRlIGluZGV4 IGJyaW5fc29ydF90ZXN0X2luZXRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4g KGluZXRfdmFsIGluZXRfbWlubWF4X29wcykgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOwor CistLQordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CisKK3NldCBlbmFibGVfc2Vx c2NhbiA9IG9mZjsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsJywg MTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRl c2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRf dmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxpbWl0IDEw MCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdp bnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdp bnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwg ZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCcsIDEw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5l dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgdGV4dF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSB0ZXh0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAs IHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisKKworLS0gc2VtaS1yYW5kb20gZGF0YSAoc2VxdWVudGlhbCArIHJhbmRvbW5lc3Mp Cit0cnVuY2F0ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsKK2luc2VydCBpbnRvIGJyaW5fc29y dF90ZXN0CitzZWxlY3QKKwlpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50LAorCS0oaSArICgx MDAgKiByYW5kb20oKSk6OmludCksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bw b3NpdGUKKwlscGFkKChpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50KTo6dGV4dCB8fCBtZDUo aTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyAoaSArIDEwMCAqIHJh bmRvbSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CisKK3Jl aW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CisKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29y dF90ZXN0OworCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGlu dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCcsIDEw MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGlu dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNj JywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3Zh bCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50 X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRl c2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAnLCAxMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2Mg bGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW5ldF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IHRleHRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgdGV4dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0 cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUp OworCisKKy0tIHJhbmRvbSBkYXRhCit0cnVuY2F0ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsK K2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwkoMTAwMCAqIHJhbmRvbSgp KTo6aW50LAorCS0oKDEwMDAgKiByYW5kb20oKSk6OmludCksCS0tIHNhbWUgYXMgaW50LCBi dXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKCgoMTAwMCAqIHJhbmRvbSgpKTo6aW50KTo6 dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyAo MTAwMCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMo aSk7CisKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CisKK3ZhY3V1bSBhbmFseXpl IGJyaW5fc29ydF90ZXN0OworCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50 X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50 X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFs IGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjJywgMTAwMCwg dHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2lu dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBs aW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdp bnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsJywgMTAwMCwgZmFsc2UpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYycsIDEwMDAsIHRy dWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRf dmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IHRleHRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAw JywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92 YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIHRydWUpOworCisKK2Ryb3AgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3NvcnRfZXhwcnMuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvYnJpbl9zb3J0X2V4cHJzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi5jMmRjY2Y2NjE4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvYnJpbl9zb3J0X2V4cHJzLnNxbApAQCAtMCwwICsxLDM3MyBAQAor LS0gZnVuY3Rpb24gdG8gdmVyaWZ5IHZhcmlvdXMgc29ydC1yZWxhdGVkIGRhdGEgKHRvdGFs IHJvd3MsIG9yZGVyaW5nKQorY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcocF9zcWwgdGV4dCwgcF9yb3dzX2V4cGVjdGVkIGludCwgcF9kZXNj IGJvb2xlYW4pIHJldHVybnMgdm9pZCBhcyAkJAorZGVjbGFyZQorICAgIHZfY3VycyByZWZj dXJzb3I7CisgICAgdl9yb3cgcmVjb3JkOworICAgIHZfcHJldiByZWNvcmQ7CisgICAgdl9i cmluX3NvcnRfZm91bmQgYm9vbCA6PSBmYWxzZTsKKyAgICB2X2NvdW50IGludCA6PSAwOwor YmVnaW4KKworICAgIC0tIG5lZWRlZCBiZWNhdXNlIHRoZSBwX3NxbCBxdWVyeSBoYXMgZGlm ZmVyZW50IGRhdGEgdHlwZXMKKyAgICBleGVjdXRlICdkaXNjYXJkIHBsYW5zJzsKKworICAg IE9QRU4gdl9jdXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VURSBmb3JtYXQoJ2V4cGxhaW4gJXMn LCBwX3NxbCk7CisKKyAgICBMT09QCisgICAgICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93 OworCisgICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAgICAgICAgICBFWElUOworICAg ICAgICBFTkQgSUY7CisKKyAgICAgICAgSUYgdl9yb3c6OnRleHQgTElLRSAnJUJSSU4gU29y dCUnIFRIRU4KKyAgICAgICAgICAgIHZfYnJpbl9zb3J0X2ZvdW5kIDo9IHRydWU7CisgICAg ICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisgICAgRU5EIExPT1A7CisKKyAgICBD TE9TRSB2X2N1cnM7CisKKyAgICBJRiBOT1Qgdl9icmluX3NvcnRfZm91bmQgVEhFTgorICAg ICAgICBSQUlTRSBFWENFUFRJT04gJ0JSSU4gU29ydDogbm90IGZvdW5kJzsKKyAgICBFTkQg SUY7CisKKyAgICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KHBf c3FsKTsKKworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7CisK KyAgICAgICAgSUYgTk9UIEZPVU5EIFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAg IEVORCBJRjsKKworICAgICAgICBJRiB2X3ByZXYgSVMgTk9UIE5VTEwgVEhFTgorICAgICAg ICAgICAgSUYgdl9wcmV2LnZhbCA+IHZfcm93LnZhbCBBTkQgTk9UIHBfZGVzYyBUSEVOCisg ICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAlID4g JSAoYXNjKScsIHZfcHJldi52YWwsIHZfcm93LnZhbDsKKyAgICAgICAgICAgIEVORCBJRjsK KyAgICAgICAgICAgIElGIHZfcHJldi52YWwgPCB2X3Jvdy52YWwgQU5EIHBfZGVzYyBUSEVO CisgICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAl IDwgJSAoZGVzYyknLCB2X3ByZXYudmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQg SUY7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICB2X3ByZXYgOj0gdl9yb3c7CisgICAg ICAgIHZfY291bnQgOj0gdl9jb3VudCArIDE7CisgICAgRU5EIExPT1A7CisKKyAgICBDTE9T RSB2X2N1cnM7CisKKyAgICBJRiB2X2NvdW50ICE9IHBfcm93c19leHBlY3RlZCBUSEVOCisg ICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnY291bnQgbWlzbWF0Y2g6ICUgIT0gJScsIHZfY291 bnQsIHBfcm93c19leHBlY3RlZDsKKyAgICBFTkQgSUY7CisKK2VuZDsKKyQkIGxhbmd1YWdl IHBscGdzcWw7CisKK2NyZWF0ZSB0YWJsZSBicmluX3NvcnRfdGVzdCAoaW50X3ZhbCBpbnQs IGJpZ2ludF92YWwgYmlnaW50LCB0ZXh0X3ZhbCB0ZXh0LCBpbmV0X3ZhbCBpbmV0KSB3aXRo IChmaWxsZmFjdG9yPTEwKTsKKworLS0gc2VxdWVudGlhbCB2YWx1ZXMKK2luc2VydCBpbnRv IGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwlpLAorCS1pLAktLSBzYW1lIGFzIGludCwgYnV0 IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZChpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAs ICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArIGkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEs MTAwMCkgcyhpKTsKKworLS0gY3JlYXRlIGJyaW4gaW5kZXhlcyBvbiBpbmRpdmlkdWFsIGNv bHVtbnMKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF9pbnRfaWR4IG9uIGJyaW5fc29y dF90ZXN0IHVzaW5nIGJyaW4gKChpbnRfdmFsICsgMSkpIHdpdGggKHBhZ2VzX3Blcl9yYW5n ZT0xKTsKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF9iaWdpbnRfaWR4IG9uIGJyaW5f c29ydF90ZXN0IHVzaW5nIGJyaW4gKChiaWdpbnRfdmFsICsgMSkpIHdpdGggKHBhZ2VzX3Bl cl9yYW5nZT0xKTsKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF90ZXh0X2lkeCBvbiBi cmluX3NvcnRfdGVzdCB1c2luZyBicmluICgoJ3gnIHx8IHRleHRfdmFsKSkgd2l0aCAocGFn ZXNfcGVyX3JhbmdlPTEpOworY3JlYXRlIGluZGV4IGJyaW5fc29ydF90ZXN0X2luZXRfaWR4 IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKChpbmV0X3ZhbCArIDEpIGluZXRfbWlu bWF4X29wcykgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworCistLQordmFjdXVtIGFuYWx5 emUgYnJpbl9zb3J0X3Rlc3Q7CisKK3NldCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKKworLS0g bWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGxpbWl0IDEw MCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjJywgMTAwMCwg dHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwg LSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIHRydWUpOworCisKKworLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJp Z2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmln aW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2lu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50 X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgdHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKScsIDEwMDAsIGZh bHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwg LSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IHRydWUpOworCisKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZh bHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcn IHx8IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0 X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRl eHRfdmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRl c2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGlu ZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo Jyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 ICgnJ3knJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEw MDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo Jyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkg ZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCB0cnVlKTsKKworCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKScsIDEwMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEp IGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0 IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBk ZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworLS0gbWlzbWF0Y2hp bmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu ZXRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEw MCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgdHJ1ZSk7CisKKworLS0gc2VtaS1yYW5kb20gZGF0YSAoc2VxdWVudGlhbCArIHJhbmRv bW5lc3MpCit0cnVuY2F0ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsKK2luc2VydCBpbnRvIGJy aW5fc29ydF90ZXN0CitzZWxlY3QKKwlpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50LAorCS0o aSArICgxMDAgKiByYW5kb20oKSk6OmludCksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVh c3Qgb3Bwb3NpdGUKKwlscGFkKChpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50KTo6dGV4dCB8 fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyAoaSArIDEw MCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7 CisKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CisKK3ZhY3V1bSBhbmFseXplIGJy aW5fc29ydF90ZXN0OworCisKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNj JywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGludF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEw MCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92 YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9u CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAx MDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRf dmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBk ZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCisKKy0tIG1hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGJpZ2ludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7 CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwg KyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwg dHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2lu dF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2Mg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBl eHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmln aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdp bnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkg bGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUp OworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFs IC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCistLSBtYXRjaGluZyBleHByZXNz aW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwg dGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUp OworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwg dGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1p dCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgn J3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0 cnVlKTsKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFs c2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8 IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5Jycg fHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCcs IDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRf dmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4 dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworLS0gbWF0Y2hpbmcg ZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu ZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRf dmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcs IDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu ZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg dHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycs IDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW5ldF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywg MTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu ZXRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKKy0tIHJhbmRvbSBkYXRhCit0 cnVuY2F0ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsKK2luc2VydCBpbnRvIGJyaW5fc29ydF90 ZXN0CitzZWxlY3QKKwkoMTAwMCAqIHJhbmRvbSgpKTo6aW50LAorCS0oKDEwMDAgKiByYW5k b20oKSk6OmludCksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwls cGFkKCgoMTAwMCAqIHJhbmRvbSgpKTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQw LCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyAoMTAwMCAqIHJhbmRvbSgpOjppbnQpCitm cm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CisKK3JlaW5kZXggdGFibGUgYnJp bl9zb3J0X3Rlc3Q7CisKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0OworCisKKy0t IG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRy dWUpOworCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAs IHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFs IC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUp OworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCB0cnVlKTsKKworCisKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKScsIDEw MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChi aWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJp Z2ludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2lu dF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSknLCAxMDAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRf dmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFs IC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCB0cnVlKTsKKworCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4Jycg fHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4 dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBk ZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworLS0gbWlzbWF0Y2hp bmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoJyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MnLCAx MDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwp IGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgdHJ1ZSk7CisKKworLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAx KSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1p dCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW5ldF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2Up Oworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkg ZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1pc21hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIHRydWUpOworCisKK2Ryb3AgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3NvcnRfbXVsdGkuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvYnJpbl9zb3J0X211bHRpLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi5lNWQ5Njg3N2QzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvYnJpbl9zb3J0X211bHRpLnNxbApAQCAtMCwwICsxLDIzNSBAQAor LS0gZnVuY3Rpb24gdG8gdmVyaWZ5IHZhcmlvdXMgc29ydC1yZWxhdGVkIGRhdGEgKHRvdGFs IHJvd3MsIG9yZGVyaW5nKQorY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcocF9zcWwgdGV4dCwgcF9yb3dzX2V4cGVjdGVkIGludCwgcF9kZXNj IGJvb2xlYW4pIHJldHVybnMgdm9pZCBhcyAkJAorZGVjbGFyZQorICAgIHZfY3VycyByZWZj dXJzb3I7CisgICAgdl9yb3cgcmVjb3JkOworICAgIHZfcHJldiByZWNvcmQ7CisgICAgdl9i cmluX3NvcnRfZm91bmQgYm9vbCA6PSBmYWxzZTsKKyAgICB2X2NvdW50IGludCA6PSAwOwor YmVnaW4KKworICAgIC0tIG5lZWRlZCBiZWNhdXNlIHRoZSBwX3NxbCBxdWVyeSBoYXMgZGlm ZmVyZW50IGRhdGEgdHlwZXMKKyAgICBleGVjdXRlICdkaXNjYXJkIHBsYW5zJzsKKworICAg IE9QRU4gdl9jdXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VURSBmb3JtYXQoJ2V4cGxhaW4gJXMn LCBwX3NxbCk7CisKKyAgICBMT09QCisgICAgICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93 OworCisgICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAgICAgICAgICBFWElUOworICAg ICAgICBFTkQgSUY7CisKKyAgICAgICAgSUYgdl9yb3c6OnRleHQgTElLRSAnJUJSSU4gU29y dCUnIFRIRU4KKyAgICAgICAgICAgIHZfYnJpbl9zb3J0X2ZvdW5kIDo9IHRydWU7CisgICAg ICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisgICAgRU5EIExPT1A7CisKKyAgICBD TE9TRSB2X2N1cnM7CisKKyAgICBJRiBOT1Qgdl9icmluX3NvcnRfZm91bmQgVEhFTgorICAg ICAgICBSQUlTRSBFWENFUFRJT04gJ0JSSU4gU29ydDogbm90IGZvdW5kJzsKKyAgICBFTkQg SUY7CisKKyAgICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KHBf c3FsKTsKKworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7CisK KyAgICAgICAgSUYgTk9UIEZPVU5EIFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAg IEVORCBJRjsKKworICAgICAgICBJRiB2X3ByZXYgSVMgTk9UIE5VTEwgVEhFTgorICAgICAg ICAgICAgSUYgdl9wcmV2LnZhbCA+IHZfcm93LnZhbCBBTkQgTk9UIHBfZGVzYyBUSEVOCisg ICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAlID4g JSAoYXNjKScsIHZfcHJldi52YWwsIHZfcm93LnZhbDsKKyAgICAgICAgICAgIEVORCBJRjsK KyAgICAgICAgICAgIElGIHZfcHJldi52YWwgPCB2X3Jvdy52YWwgQU5EIHBfZGVzYyBUSEVO CisgICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAl IDwgJSAoZGVzYyknLCB2X3ByZXYudmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQg SUY7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICB2X3ByZXYgOj0gdl9yb3c7CisgICAg ICAgIHZfY291bnQgOj0gdl9jb3VudCArIDE7CisgICAgRU5EIExPT1A7CisKKyAgICBDTE9T RSB2X2N1cnM7CisKKyAgICBJRiB2X2NvdW50ICE9IHBfcm93c19leHBlY3RlZCBUSEVOCisg ICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnY291bnQgbWlzbWF0Y2g6ICUgIT0gJScsIHZfY291 bnQsIHBfcm93c19leHBlY3RlZDsKKyAgICBFTkQgSUY7CisKK2VuZDsKKyQkIGxhbmd1YWdl IHBscGdzcWw7CisKK2NyZWF0ZSB0YWJsZSBicmluX3NvcnRfdGVzdCAoaW50X3ZhbCBpbnQs IGJpZ2ludF92YWwgYmlnaW50LCB0ZXh0X3ZhbCB0ZXh0LCBpbmV0X3ZhbCBpbmV0KSB3aXRo IChmaWxsZmFjdG9yPTEwKTsKKworLS0gc2VxdWVudGlhbCB2YWx1ZXMKK2luc2VydCBpbnRv IGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwlpLAorCS1pLAktLSBzYW1lIGFzIGludCwgYnV0 IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZChpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAs ICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArIGkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEs MTAwMCkgcyhpKTsKKworLS0gY3JlYXRlIGJyaW4gaW5kZXhlcyBvbiBpbmRpdmlkdWFsIGNv bHVtbnMKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF9tdWx0aV9pZHggb24gYnJpbl9z b3J0X3Rlc3QgdXNpbmcgYnJpbiAoaW50X3ZhbCwgYmlnaW50X3ZhbCwgdGV4dF92YWwsIGlu ZXRfdmFsIGluZXRfbWlubWF4X29wcykgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworCist LQordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CisKK3NldCBlbmFibGVfc2Vxc2Nh biA9IG9mZjsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsJywgMTAw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2Mn LCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFs IGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBiaWdpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxpbWl0IDEwMCcs IDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg YmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRf dmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCcsIDEwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSBpbmV0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg dGV4dF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSB0ZXh0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRy dWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisKKworLS0gc2VtaS1yYW5kb20gZGF0YSAoc2VxdWVudGlhbCArIHJhbmRvbW5lc3MpCit0 cnVuY2F0ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsKK2luc2VydCBpbnRvIGJyaW5fc29ydF90 ZXN0CitzZWxlY3QKKwlpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50LAorCS0oaSArICgxMDAg KiByYW5kb20oKSk6OmludCksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3Np dGUKKwlscGFkKChpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6 dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyAoaSArIDEwMCAqIHJhbmRv bSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CisKK3JlaW5k ZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CisKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90 ZXN0OworCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCcsIDEwMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjJywg MTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBs aW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg aW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFs c2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAnLCAx MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJp Z2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3Zh bCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFs c2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2Mg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZh bHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGlt aXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg aW5ldF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRl eHRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg dGV4dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVl KTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOwor CisKKy0tIHJhbmRvbSBkYXRhCit0cnVuY2F0ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsKK2lu c2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwkoMTAwMCAqIHJhbmRvbSgpKTo6 aW50LAorCS0oKDEwMDAgKiByYW5kb20oKSk6OmludCksCS0tIHNhbWUgYXMgaW50LCBidXQg YXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKCgoMTAwMCAqIHJhbmRvbSgpKTo6aW50KTo6dGV4 dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyAoMTAw MCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7 CisKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CisKK3ZhY3V1bSBhbmFseXplIGJy aW5fc29ydF90ZXN0OworCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3Zh bCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3Zh bCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg aW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRl c2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1 ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg YmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg YmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRf dmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsJywgMTAwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYycsIDEwMDAsIHRydWUp OworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFs IGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IHRleHRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgdGV4dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwJywg MTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg dGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IHRydWUpOworCisKK2Ryb3AgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3NvcnRfbXVsdGlfZXhwcnMuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvYnJpbl9zb3J0X211bHRpX2V4cHJzLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zZWY3YzhhY2VlCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbl9zb3J0X211bHRpX2V4cHJzLnNxbApAQCAt MCwwICsxLDM2OSBAQAorLS0gZnVuY3Rpb24gdG8gdmVyaWZ5IHZhcmlvdXMgc29ydC1yZWxh dGVkIGRhdGEgKHRvdGFsIHJvd3MsIG9yZGVyaW5nKQorY3JlYXRlIG9yIHJlcGxhY2UgZnVu Y3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcocF9zcWwgdGV4dCwgcF9yb3dzX2V4cGVj dGVkIGludCwgcF9kZXNjIGJvb2xlYW4pIHJldHVybnMgdm9pZCBhcyAkJAorZGVjbGFyZQor ICAgIHZfY3VycyByZWZjdXJzb3I7CisgICAgdl9yb3cgcmVjb3JkOworICAgIHZfcHJldiBy ZWNvcmQ7CisgICAgdl9icmluX3NvcnRfZm91bmQgYm9vbCA6PSBmYWxzZTsKKyAgICB2X2Nv dW50IGludCA6PSAwOworYmVnaW4KKworICAgIC0tIG5lZWRlZCBiZWNhdXNlIHRoZSBwX3Nx bCBxdWVyeSBoYXMgZGlmZmVyZW50IGRhdGEgdHlwZXMKKyAgICBleGVjdXRlICdkaXNjYXJk IHBsYW5zJzsKKworICAgIE9QRU4gdl9jdXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VURSBmb3Jt YXQoJ2V4cGxhaW4gJXMnLCBwX3NxbCk7CisKKyAgICBMT09QCisgICAgICAgIEZFVENIIHZf Y3VycyBJTlRPIHZfcm93OworCisgICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAgICAg ICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisKKyAgICAgICAgSUYgdl9yb3c6OnRleHQg TElLRSAnJUJSSU4gU29ydCUnIFRIRU4KKyAgICAgICAgICAgIHZfYnJpbl9zb3J0X2ZvdW5k IDo9IHRydWU7CisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisgICAgRU5E IExPT1A7CisKKyAgICBDTE9TRSB2X2N1cnM7CisKKyAgICBJRiBOT1Qgdl9icmluX3NvcnRf Zm91bmQgVEhFTgorICAgICAgICBSQUlTRSBFWENFUFRJT04gJ0JSSU4gU29ydDogbm90IGZv dW5kJzsKKyAgICBFTkQgSUY7CisKKyAgICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwgRk9SIEVY RUNVVEUgZm9ybWF0KHBfc3FsKTsKKworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJz IElOVE8gdl9yb3c7CisKKyAgICAgICAgSUYgTk9UIEZPVU5EIFRIRU4KKyAgICAgICAgICAg IEVYSVQ7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICBJRiB2X3ByZXYgSVMgTk9UIE5V TEwgVEhFTgorICAgICAgICAgICAgSUYgdl9wcmV2LnZhbCA+IHZfcm93LnZhbCBBTkQgTk9U IHBfZGVzYyBUSEVOCisgICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRlcmlu ZyBtaXNtYXRjaCAlID4gJSAoYXNjKScsIHZfcHJldi52YWwsIHZfcm93LnZhbDsKKyAgICAg ICAgICAgIEVORCBJRjsKKyAgICAgICAgICAgIElGIHZfcHJldi52YWwgPCB2X3Jvdy52YWwg QU5EIHBfZGVzYyBUSEVOCisgICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRl cmluZyBtaXNtYXRjaCAlIDwgJSAoZGVzYyknLCB2X3ByZXYudmFsLCB2X3Jvdy52YWw7Cisg ICAgICAgICAgICBFTkQgSUY7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICB2X3ByZXYg Oj0gdl9yb3c7CisgICAgICAgIHZfY291bnQgOj0gdl9jb3VudCArIDE7CisgICAgRU5EIExP T1A7CisKKyAgICBDTE9TRSB2X2N1cnM7CisKKyAgICBJRiB2X2NvdW50ICE9IHBfcm93c19l eHBlY3RlZCBUSEVOCisgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnY291bnQgbWlzbWF0Y2g6 ICUgIT0gJScsIHZfY291bnQsIHBfcm93c19leHBlY3RlZDsKKyAgICBFTkQgSUY7CisKK2Vu ZDsKKyQkIGxhbmd1YWdlIHBscGdzcWw7CisKK2NyZWF0ZSB0YWJsZSBicmluX3NvcnRfdGVz dCAoaW50X3ZhbCBpbnQsIGJpZ2ludF92YWwgYmlnaW50LCB0ZXh0X3ZhbCB0ZXh0LCBpbmV0 X3ZhbCBpbmV0KSB3aXRoIChmaWxsZmFjdG9yPTEwKTsKKworLS0gc2VxdWVudGlhbCB2YWx1 ZXMKK2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwlpLAorCS1pLAktLSBz YW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZChpOjp0ZXh0IHx8IG1k NShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArIGkKK2Zyb20gZ2Vu ZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKKworLS0gY3JlYXRlIGJyaW4gaW5kZXhlcyBv biBpbmRpdmlkdWFsIGNvbHVtbnMKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF9pbnRf aWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKChpbnRfdmFsICsgMSksIChiaWdp bnRfdmFsICsgMSksICgneCcgfHwgdGV4dF92YWwpLCAoaW5ldF92YWwgKyAxKSBpbmV0X21p bm1heF9vcHMpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKKwordmFjdXVtIGFuYWx5emUg YnJpbl9zb3J0X3Rlc3Q7CisKK3NldCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKKworLS0gbWF0 Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGxpbWl0IDEwMCcs IDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50 X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1 ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAx KSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIHRydWUpOworCisKKworLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2lu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50 X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFs c2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3Zh bCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgdHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKScsIDEwMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwg LSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAx KSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRy dWUpOworCisKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8 IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAx MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgn J3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRf dmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2Mg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBl eHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4 JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgn J3knJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAs IHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4 JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgn J3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKKworCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRl c2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0IDEw MCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNj IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworLS0gbWlzbWF0Y2hpbmcg ZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu ZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRf dmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCcs IDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu ZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg dHJ1ZSk7CisKKworLS0gc2VtaS1yYW5kb20gZGF0YSAoc2VxdWVudGlhbCArIHJhbmRvbW5l c3MpCit0cnVuY2F0ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsKK2luc2VydCBpbnRvIGJyaW5f c29ydF90ZXN0CitzZWxlY3QKKwlpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50LAorCS0oaSAr ICgxMDAgKiByYW5kb20oKSk6OmludCksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qg b3Bwb3NpdGUKKwlscGFkKChpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50KTo6dGV4dCB8fCBt ZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyAoaSArIDEwMCAq IHJhbmRvbSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CisK K3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CisKK3ZhY3V1bSBhbmFseXplIGJyaW5f c29ydF90ZXN0OworCisKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjJywg MTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwg dHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwg KyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAw LCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFs IC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1p dCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNj IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCisKKy0tIG1hdGNoaW5n IGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChi aWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJp Z2ludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAx KSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBleHBy ZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRf dmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGlt aXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0g MSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCistLSBtYXRjaGluZyBleHByZXNzaW9u CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4 dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4 dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAx MDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcn eCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVl KTsKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2Up Oworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRl eHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwg dGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCcsIDEw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcn eCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo Jyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFs KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92 YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworLS0gbWF0Y2hpbmcgZXhw cmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFs ICsgMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW5ldF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu ZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRf dmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEw MDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAw LCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu ZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRf dmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKKy0tIHJhbmRvbSBkYXRhCit0cnVu Y2F0ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsKK2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0 CitzZWxlY3QKKwkoMTAwMCAqIHJhbmRvbSgpKTo6aW50LAorCS0oKDEwMDAgKiByYW5kb20o KSk6OmludCksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFk KCgoMTAwMCAqIHJhbmRvbSgpKTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAn MCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyAoMTAwMCAqIHJhbmRvbSgpOjppbnQpCitmcm9t IGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CisKK3JlaW5kZXggdGFibGUgYnJpbl9z b3J0X3Rlc3Q7CisKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0OworCisKKy0tIG1h dGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUp OworCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRy dWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0g MSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCB0cnVlKTsKKworCisKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKScsIDEwMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2lu dF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZh bHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFs IC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0g MSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0 cnVlKTsKKworCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwg dGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywg MTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo Jyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92 YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0 X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNj IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworLS0gbWlzbWF0Y2hpbmcg ZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcn eCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo Jyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAw LCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcn eCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo Jyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRl c2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgdHJ1ZSk7CisKKworLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBk ZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAx MDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW5ldF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5n IGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0 X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IHRydWUpOworCisKK2Ryb3AgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7Ci0tIAoyLjQxLjAKCg== --------------CooOQ6LlXwcsddypE9zFAJMn Content-Type: text/x-patch; charset=UTF-8; name="0010-wip-add-brinsort-amstats-regression-tests-20230710.patch" Content-Disposition: attachment; filename*0="0010-wip-add-brinsort-amstats-regression-tests-20230710.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSAzMjNlZGQxOWI2NzNmMGFjN2NmNDc2ZDFlYmY4ODFiNjcyNzJhN2QyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAxOCBGZWIgMjAyMyAxNjo0MTozMyArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggMTAvMTFdIHdpcDogYWRkIGJyaW5zb3J0IGFtc3RhdHMgcmVncmVzc2lv biB0ZXN0cwoKLS0tCiAuLi4vcmVncmVzcy9leHBlY3RlZC9icmluX3NvcnRfYW1zdGF0cy5v dXQgICAgfCA1MzcgKysrKysrKysrKysrCiAuLi4vZXhwZWN0ZWQvYnJpbl9zb3J0X2V4cHJz X2Ftc3RhdHMub3V0ICAgICAgfCA3NjIgKysrKysrKysrKysrKysrKysrCiAuLi4vZXhwZWN0 ZWQvYnJpbl9zb3J0X211bHRpX2Ftc3RhdHMub3V0ICAgICAgfCA1MzQgKysrKysrKysrKysr CiAuLi4vYnJpbl9zb3J0X211bHRpX2V4cHJzX2Ftc3RhdHMub3V0ICAgICAgICAgfCA3NTgg KysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUg ICAgICAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3NvcnRfYW1z dGF0cy5zcWwgICAgfCAyNDAgKysrKysrCiAuLi4vcmVncmVzcy9zcWwvYnJpbl9zb3J0X2V4 cHJzX2Ftc3RhdHMuc3FsICAgfCAyNzAgKysrKysrKwogLi4uL3JlZ3Jlc3Mvc3FsL2JyaW5f c29ydF9tdWx0aV9hbXN0YXRzLnNxbCAgIHwgMjM3ICsrKysrKwogLi4uL3NxbC9icmluX3Nv cnRfbXVsdGlfZXhwcnNfYW1zdGF0cy5zcWwgICAgIHwgMjY1ICsrKysrKwogOSBmaWxlcyBj aGFuZ2VkLCAzNjA5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9hbXN0YXRzLm91dAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0X2V4cHJzX2Ftc3Rh dHMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9i cmluX3NvcnRfbXVsdGlfYW1zdGF0cy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9tdWx0aV9leHByc19hbXN0YXRzLm91dAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5fc29ydF9hbXN0 YXRzLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5f c29ydF9leHByc19hbXN0YXRzLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2JyaW5fc29ydF9tdWx0aV9hbXN0YXRzLnNxbAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5fc29ydF9tdWx0aV9leHByc19hbXN0YXRz LnNxbAoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0 X2Ftc3RhdHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmluX3NvcnRfYW1z dGF0cy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYzNjYmEy MDUwMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJp bl9zb3J0X2Ftc3RhdHMub3V0CkBAIC0wLDAgKzEsNTM3IEBACitzZXQgZW5hYmxlX2luZGV4 YW1fc3RhdHMgPSB0cnVlOworLS0gZnVuY3Rpb24gdG8gdmVyaWZ5IHZhcmlvdXMgc29ydC1y ZWxhdGVkIGRhdGEgKHRvdGFsIHJvd3MsIG9yZGVyaW5nKQorY3JlYXRlIG9yIHJlcGxhY2Ug ZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcocF9zcWwgdGV4dCwgcF9yb3dzX2V4 cGVjdGVkIGludCwgcF9kZXNjIGJvb2xlYW4pIHJldHVybnMgdm9pZCBhcyAkJAorZGVjbGFy ZQorICAgIHZfY3VycyByZWZjdXJzb3I7CisgICAgdl9yb3cgcmVjb3JkOworICAgIHZfcHJl diByZWNvcmQ7CisgICAgdl9icmluX3NvcnRfZm91bmQgYm9vbCA6PSBmYWxzZTsKKyAgICB2 X2NvdW50IGludCA6PSAwOworYmVnaW4KKworICAgIC0tIG5lZWRlZCBiZWNhdXNlIHRoZSBw X3NxbCBxdWVyeSBoYXMgZGlmZmVyZW50IGRhdGEgdHlwZXMKKyAgICBleGVjdXRlICdkaXNj YXJkIHBsYW5zJzsKKworICAgIE9QRU4gdl9jdXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VURSBm b3JtYXQoJ2V4cGxhaW4gJXMnLCBwX3NxbCk7CisKKyAgICBMT09QCisgICAgICAgIEZFVENI IHZfY3VycyBJTlRPIHZfcm93OworCisgICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAg ICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisKKyAgICAgICAgSUYgdl9yb3c6OnRl eHQgTElLRSAnJUJSSU4gU29ydCUnIFRIRU4KKyAgICAgICAgICAgIHZfYnJpbl9zb3J0X2Zv dW5kIDo9IHRydWU7CisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisgICAg RU5EIExPT1A7CisKKyAgICBDTE9TRSB2X2N1cnM7CisKKyAgICBJRiBOT1Qgdl9icmluX3Nv cnRfZm91bmQgVEhFTgorICAgICAgICBSQUlTRSBFWENFUFRJT04gJ0JSSU4gU29ydDogbm90 IGZvdW5kJzsKKyAgICBFTkQgSUY7CisKKyAgICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwgRk9S IEVYRUNVVEUgZm9ybWF0KHBfc3FsKTsKKworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9j dXJzIElOVE8gdl9yb3c7CisKKyAgICAgICAgSUYgTk9UIEZPVU5EIFRIRU4KKyAgICAgICAg ICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICBJRiB2X3ByZXYgSVMgTk9U IE5VTEwgVEhFTgorICAgICAgICAgICAgSUYgdl9wcmV2LnZhbCA+IHZfcm93LnZhbCBBTkQg Tk9UIHBfZGVzYyBUSEVOCisgICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRl cmluZyBtaXNtYXRjaCAlID4gJSAoYXNjKScsIHZfcHJldi52YWwsIHZfcm93LnZhbDsKKyAg ICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgICAgIElGIHZfcHJldi52YWwgPCB2X3Jvdy52 YWwgQU5EIHBfZGVzYyBUSEVOCisgICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdv cmRlcmluZyBtaXNtYXRjaCAlIDwgJSAoZGVzYyknLCB2X3ByZXYudmFsLCB2X3Jvdy52YWw7 CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICB2X3By ZXYgOj0gdl9yb3c7CisgICAgICAgIHZfY291bnQgOj0gdl9jb3VudCArIDE7CisgICAgRU5E IExPT1A7CisKKyAgICBDTE9TRSB2X2N1cnM7CisKKyAgICBJRiB2X2NvdW50ICE9IHBfcm93 c19leHBlY3RlZCBUSEVOCisgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnY291bnQgbWlzbWF0 Y2g6ICUgIT0gJScsIHZfY291bnQsIHBfcm93c19leHBlY3RlZDsKKyAgICBFTkQgSUY7CisK K2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWw7CitjcmVhdGUgdGFibGUgYnJpbl9zb3J0X3Rl c3QgKGludF92YWwgaW50LCBiaWdpbnRfdmFsIGJpZ2ludCwgdGV4dF92YWwgdGV4dCwgaW5l dF92YWwgaW5ldCkgd2l0aCAoZmlsbGZhY3Rvcj0xMCk7CistLSBzZXF1ZW50aWFsIHZhbHVl cworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCWksCisJLWksCS0tIHNh bWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKGk6OnRleHQgfHwgbWQ1 KGk6OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgaQorZnJvbSBnZW5l cmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworLS0gY3JlYXRlIGJyaW4gaW5kZXhlcyBvbiBp bmRpdmlkdWFsIGNvbHVtbnMKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF9pbnRfaWR4 IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKGludF92YWwpIHdpdGggKHBhZ2VzX3Bl cl9yYW5nZT0xKTsKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF9iaWdpbnRfaWR4IG9u IGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKGJpZ2ludF92YWwpIHdpdGggKHBhZ2VzX3Bl cl9yYW5nZT0xKTsKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF90ZXh0X2lkeCBvbiBi cmluX3NvcnRfdGVzdCB1c2luZyBicmluICh0ZXh0X3ZhbCkgd2l0aCAocGFnZXNfcGVyX3Jh bmdlPTEpOworY3JlYXRlIGluZGV4IGJyaW5fc29ydF90ZXN0X2luZXRfaWR4IG9uIGJyaW5f c29ydF90ZXN0IHVzaW5nIGJyaW4gKGluZXRfdmFsIGluZXRfbWlubWF4X29wcykgd2l0aCAo cGFnZXNfcGVyX3JhbmdlPTEpOworLS0KK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0 Oworc2V0IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSBpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg dHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg YmlnaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmln aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFs IGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRy dWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJp Z2ludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29y dF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2Mg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5l dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVz YycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9j aGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBsaW1pdCAx MDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBp bmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBk ZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwnLCAxMDAwLCBmYWxzZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFs IGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGlt aXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92 YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKKy0tIHNlbWktcmFuZG9tIGRhdGEgKHNlcXVlbnRpYWwgKyByYW5kb21uZXNzKQordHJ1 bmNhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmluX3NvcnRfdGVz dAorc2VsZWN0CisJaSArICgxMDAgKiByYW5kb20oKSk6OmludCwKKwktKGkgKyAoMTAwICog cmFuZG9tKCkpOjppbnQpLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRl CisJbHBhZCgoaSArICgxMDAgKiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1KGk6OnRl eHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgKGkgKyAxMDAgKiByYW5kb20o KTo6aW50KQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworcmVpbmRleCB0 YWJsZSBicmluX3NvcnRfdGVzdDsKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0Owor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsJywgMTAwMCwgZmFsc2UpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBp bnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVz YycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcs IDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmln aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFs IGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdp bnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwg ZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSBiaWdpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRy dWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0 X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAnLCAx MDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW5ldF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg dGV4dF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29y dF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29y dF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIHJhbmRvbSBkYXRhCit0cnVuY2F0ZSB0 YWJsZSBicmluX3NvcnRfdGVzdDsKK2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxl Y3QKKwkoMTAwMCAqIHJhbmRvbSgpKTo6aW50LAorCS0oKDEwMDAgKiByYW5kb20oKSk6Omlu dCksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKCgoMTAw MCAqIHJhbmRvbSgpKTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAor CScxMC4wLjAuMCc6OmluZXQgKyAoMTAwMCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdlbmVy YXRlX3NlcmllcygxLDEwMDApIHMoaSk7CityZWluZGV4IHRhYmxlIGJyaW5fc29ydF90ZXN0 OwordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGludF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGlu dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSBiaWdpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYycsIDEwMDAsIHRydWUp OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2lu dF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEw MCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdp bnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwg ZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsJywgMTAwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3Zh bCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxp bWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRf dmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCcsIDEwMDAsIGZh bHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4 dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4 dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0 ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworZHJvcCB0YWJsZSBicmluX3NvcnRfdGVzdDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0X2V4cHJzX2Ftc3RhdHMub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmluX3NvcnRfZXhwcnNfYW1zdGF0cy5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYjAzOGY3Y2UwMQotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0X2V4cHJz X2Ftc3RhdHMub3V0CkBAIC0wLDAgKzEsNzYyIEBACitzZXQgZW5hYmxlX2luZGV4YW1fc3Rh dHMgPSB0cnVlOworLS0gZnVuY3Rpb24gdG8gdmVyaWZ5IHZhcmlvdXMgc29ydC1yZWxhdGVk IGRhdGEgKHRvdGFsIHJvd3MsIG9yZGVyaW5nKQorY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rp b24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcocF9zcWwgdGV4dCwgcF9yb3dzX2V4cGVjdGVk IGludCwgcF9kZXNjIGJvb2xlYW4pIHJldHVybnMgdm9pZCBhcyAkJAorZGVjbGFyZQorICAg IHZfY3VycyByZWZjdXJzb3I7CisgICAgdl9yb3cgcmVjb3JkOworICAgIHZfcHJldiByZWNv cmQ7CisgICAgdl9icmluX3NvcnRfZm91bmQgYm9vbCA6PSBmYWxzZTsKKyAgICB2X2NvdW50 IGludCA6PSAwOworYmVnaW4KKyAgICAtLSBuZWVkZWQgYmVjYXVzZSB0aGUgcF9zcWwgcXVl cnkgaGFzIGRpZmZlcmVudCBkYXRhIHR5cGVzCisgICAgZXhlY3V0ZSAnZGlzY2FyZCBwbGFu cyc7CisgICAgT1BFTiB2X2N1cnMgTk8gU0NST0xMIEZPUiBFWEVDVVRFIGZvcm1hdCgnZXhw bGFpbiAlcycsIHBfc3FsKTsKKyAgICBMT09QCisgICAgICAgIEZFVENIIHZfY3VycyBJTlRP IHZfcm93OworICAgICAgICBJRiBOT1QgRk9VTkQgVEhFTgorICAgICAgICAgICAgRVhJVDsK KyAgICAgICAgRU5EIElGOworICAgICAgICBJRiB2X3Jvdzo6dGV4dCBMSUtFICclQlJJTiBT b3J0JScgVEhFTgorICAgICAgICAgICAgdl9icmluX3NvcnRfZm91bmQgOj0gdHJ1ZTsKKyAg ICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsKKyAgICBFTkQgTE9PUDsKKyAgICBD TE9TRSB2X2N1cnM7CisgICAgSUYgTk9UIHZfYnJpbl9zb3J0X2ZvdW5kIFRIRU4KKyAgICAg ICAgUkFJU0UgRVhDRVBUSU9OICdCUklOIFNvcnQ6IG5vdCBmb3VuZCc7CisgICAgRU5EIElG OworICAgIE9QRU4gdl9jdXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VURSBmb3JtYXQocF9zcWwp OworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7CisgICAgICAg IElGIE5PVCBGT1VORCBUSEVOCisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7 CisgICAgICAgIElGIHZfcHJldiBJUyBOT1QgTlVMTCBUSEVOCisgICAgICAgICAgICBJRiB2 X3ByZXYudmFsID4gdl9yb3cudmFsIEFORCBOT1QgcF9kZXNjIFRIRU4KKyAgICAgICAgICAg ICAgICBSQUlTRSBFWENFUFRJT04gJ29yZGVyaW5nIG1pc21hdGNoICUgPiAlIChhc2MpJywg dl9wcmV2LnZhbCwgdl9yb3cudmFsOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICAg ICAgSUYgdl9wcmV2LnZhbCA8IHZfcm93LnZhbCBBTkQgcF9kZXNjIFRIRU4KKyAgICAgICAg ICAgICAgICBSQUlTRSBFWENFUFRJT04gJ29yZGVyaW5nIG1pc21hdGNoICUgPCAlIChkZXNj KScsIHZfcHJldi52YWwsIHZfcm93LnZhbDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAg ICAgRU5EIElGOworICAgICAgICB2X3ByZXYgOj0gdl9yb3c7CisgICAgICAgIHZfY291bnQg Oj0gdl9jb3VudCArIDE7CisgICAgRU5EIExPT1A7CisgICAgQ0xPU0Ugdl9jdXJzOworICAg IElGIHZfY291bnQgIT0gcF9yb3dzX2V4cGVjdGVkIFRIRU4KKyAgICAgICAgUkFJU0UgRVhD RVBUSU9OICdjb3VudCBtaXNtYXRjaDogJSAhPSAlJywgdl9jb3VudCwgcF9yb3dzX2V4cGVj dGVkOworICAgIEVORCBJRjsKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWw7CitjcmVhdGUg dGFibGUgYnJpbl9zb3J0X3Rlc3QgKGludF92YWwgaW50LCBiaWdpbnRfdmFsIGJpZ2ludCwg dGV4dF92YWwgdGV4dCwgaW5ldF92YWwgaW5ldCkgd2l0aCAoZmlsbGZhY3Rvcj0xMCk7Cist LSBzZXF1ZW50aWFsIHZhbHVlcworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVj dAorCWksCisJLWksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwls cGFkKGk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjpp bmV0ICsgaQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworLS0gY3JlYXRl IGJyaW4gaW5kZXhlcyBvbiBpbmRpdmlkdWFsIGNvbHVtbnMKK2NyZWF0ZSBpbmRleCBicmlu X3NvcnRfdGVzdF9pbnRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKChpbnRf dmFsICsgMSkpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK2NyZWF0ZSBpbmRleCBicmlu X3NvcnRfdGVzdF9iaWdpbnRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKChi aWdpbnRfdmFsICsgMSkpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK2NyZWF0ZSBpbmRl eCBicmluX3NvcnRfdGVzdF90ZXh0X2lkeCBvbiBicmluX3NvcnRfdGVzdCB1c2luZyBicmlu ICgoJ3gnIHx8IHRleHRfdmFsKSkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworY3JlYXRl IGluZGV4IGJyaW5fc29ydF90ZXN0X2luZXRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5n IGJyaW4gKChpbmV0X3ZhbCArIDEpIGluZXRfbWlubWF4X29wcykgd2l0aCAocGFnZXNfcGVy X3JhbmdlPTEpOworLS0KK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0Oworc2V0IGVu YWJsZV9zZXFzY2FuID0gb2ZmOworLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwJywg MTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92 YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkg ZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK Ky0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGludF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBT b3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9j aGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2Mn LCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJS T1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9u IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0 IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFs IC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6 IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCistLSBtYXRjaGluZyBleHBy ZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRf dmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjJywgMTAwMCwg dHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2lu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50 X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEp IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBk ZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor LS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBC UklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJB SVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFs IC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywg MTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAg UEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2Vy LGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1 ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwg ZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4p IGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGJpZ2ludF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2Up OworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1 bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBs aW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1 ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwg ZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4p IGxpbmUgMjQgYXQgUkFJU0UKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEw MDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4Jycg fHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwg dGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcn IHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4 JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUp OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCknLCAx MDAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAg UEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2Vy LGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7 CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVu Y3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxp bmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9S OiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBi cmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBh dCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcn IHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5 JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAg QlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmlu c29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBS QUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8 IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5Jycg fHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJP UjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24g YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQg YXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcn eScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVl KTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBm dW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikg bGluZSAyNCBhdCBSQUlTRQorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGluZXRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu ZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRf dmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJS T1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9u IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0 IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5l dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92 YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZv dW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEw MCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBM L3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixi b29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitF UlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rp b24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUg MjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0 X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjog IEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQg UkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAt IDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBC UklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJB SVNFCistLSBzZW1pLXJhbmRvbSBkYXRhIChzZXF1ZW50aWFsICsgcmFuZG9tbmVzcykKK3Ry dW5jYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rl c3QKK3NlbGVjdAorCWkgKyAoMTAwICogcmFuZG9tKCkpOjppbnQsCisJLShpICsgKDEwMCAq IHJhbmRvbSgpKTo6aW50KSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0 ZQorCWxwYWQoKGkgKyAoMTAwICogcmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0 ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArIChpICsgMTAwICogcmFuZG9t KCk6OmludCkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKK3JlaW5kZXgg dGFibGUgYnJpbl9zb3J0X3Rlc3Q7Cit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsK Ky0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MnLCAx MDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW50X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsg MSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHBy ZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0g MSknLCAxMDAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05U RVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxp bnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJP UjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24g YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQg YXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwg LSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3Qg Zm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRl cmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAw JywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBm YWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdT UUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xl YW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVl KTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBm dW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikg bGluZSAyNCBhdCBSQUlTRQorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAwMCwgZmFs c2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsg MSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0 IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJl c3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQK K0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0 ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0 cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NR TCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVh bikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6 ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0 IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRf dmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNv cnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0 OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVj a19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRl c2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNv cnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCist LSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcn IHx8IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFs KSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2Mg bGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNj IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0g bWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworRVJST1I6 ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0 IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4Jycg fHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3kn JyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6 IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3Zh bCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZv dW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNj IGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5k CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco dGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29y dDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKKy0t IG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjJywg MTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5l dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92 YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRj aGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW5ldF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3Qg Zm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRl cmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAs IHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3Bn U1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29s ZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAg QlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmlu c29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBS QUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0g MSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5v dCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQK K0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0 ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorLS0gcmFuZG9tIGRhdGEK K3RydW5jYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0 X3Rlc3QKK3NlbGVjdAorCSgxMDAwICogcmFuZG9tKCkpOjppbnQsCisJLSgoMTAwMCAqIHJh bmRvbSgpKTo6aW50KSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQor CWxwYWQoKCgxMDAwICogcmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwg NDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArICgxMDAwICogcmFuZG9tKCk6OmludCkK K2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKK3JlaW5kZXggdGFibGUgYnJp bl9zb3J0X3Rlc3Q7Cit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKy0tIG1hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW50X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAw LCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwv cGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJv b2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4g U29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NP TlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0 LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0 cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NR TCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVh bikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitF UlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rp b24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUg MjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92 YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9S OiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBi cmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBh dCBSQUlTRQorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmln aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdp bnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQg MTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEw MCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKScs IDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VS Uk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlv biBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAy NCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJp Z2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmln aW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNv cnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkg ZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCistLSBtYXRjaGlu ZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo Jyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRf dmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAw JywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hp bmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoJyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNv cnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92 YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0 X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQg MTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05U RVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxp bnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEw MCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhU OiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRl Z2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09O VEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQs aW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZv dW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKKy0tIG1hdGNoaW5n IGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0 X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBk ZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHBy ZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwg LSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NP TlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0 LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOwor RVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0 aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5l IDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0 OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVj a19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVY VDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50 ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorZHJvcCB0YWJsZSBicmluX3NvcnRfdGVz dDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0X211 bHRpX2Ftc3RhdHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmluX3NvcnRf bXVsdGlfYW1zdGF0cy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uNGU3MWYyMWNmMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvYnJpbl9zb3J0X211bHRpX2Ftc3RhdHMub3V0CkBAIC0wLDAgKzEsNTM0IEBACitz ZXQgZW5hYmxlX2luZGV4YW1fc3RhdHMgPSB0cnVlOworLS0gZnVuY3Rpb24gdG8gdmVyaWZ5 IHZhcmlvdXMgc29ydC1yZWxhdGVkIGRhdGEgKHRvdGFsIHJvd3MsIG9yZGVyaW5nKQorY3Jl YXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcocF9zcWwg dGV4dCwgcF9yb3dzX2V4cGVjdGVkIGludCwgcF9kZXNjIGJvb2xlYW4pIHJldHVybnMgdm9p ZCBhcyAkJAorZGVjbGFyZQorICAgIHZfY3VycyByZWZjdXJzb3I7CisgICAgdl9yb3cgcmVj b3JkOworICAgIHZfcHJldiByZWNvcmQ7CisgICAgdl9icmluX3NvcnRfZm91bmQgYm9vbCA6 PSBmYWxzZTsKKyAgICB2X2NvdW50IGludCA6PSAwOworYmVnaW4KKworICAgIC0tIG5lZWRl ZCBiZWNhdXNlIHRoZSBwX3NxbCBxdWVyeSBoYXMgZGlmZmVyZW50IGRhdGEgdHlwZXMKKyAg ICBleGVjdXRlICdkaXNjYXJkIHBsYW5zJzsKKworICAgIE9QRU4gdl9jdXJzIE5PIFNDUk9M TCBGT1IgRVhFQ1VURSBmb3JtYXQoJ2V4cGxhaW4gJXMnLCBwX3NxbCk7CisKKyAgICBMT09Q CisgICAgICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93OworCisgICAgICAgIElGIE5PVCBG T1VORCBUSEVOCisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisKKyAgICAg ICAgSUYgdl9yb3c6OnRleHQgTElLRSAnJUJSSU4gU29ydCUnIFRIRU4KKyAgICAgICAgICAg IHZfYnJpbl9zb3J0X2ZvdW5kIDo9IHRydWU7CisgICAgICAgICAgICBFWElUOworICAgICAg ICBFTkQgSUY7CisgICAgRU5EIExPT1A7CisKKyAgICBDTE9TRSB2X2N1cnM7CisKKyAgICBJ RiBOT1Qgdl9icmluX3NvcnRfZm91bmQgVEhFTgorICAgICAgICBSQUlTRSBFWENFUFRJT04g J0JSSU4gU29ydDogbm90IGZvdW5kJzsKKyAgICBFTkQgSUY7CisKKyAgICBPUEVOIHZfY3Vy cyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KHBfc3FsKTsKKworICAgIExPT1AKKyAg ICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7CisKKyAgICAgICAgSUYgTk9UIEZPVU5E IFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICBJ RiB2X3ByZXYgSVMgTk9UIE5VTEwgVEhFTgorICAgICAgICAgICAgSUYgdl9wcmV2LnZhbCA+ IHZfcm93LnZhbCBBTkQgTk9UIHBfZGVzYyBUSEVOCisgICAgICAgICAgICAgICAgUkFJU0Ug RVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAlID4gJSAoYXNjKScsIHZfcHJldi52YWws IHZfcm93LnZhbDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgICAgIElGIHZfcHJl di52YWwgPCB2X3Jvdy52YWwgQU5EIHBfZGVzYyBUSEVOCisgICAgICAgICAgICAgICAgUkFJ U0UgRVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAlIDwgJSAoZGVzYyknLCB2X3ByZXYu dmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgIEVORCBJRjsK KworICAgICAgICB2X3ByZXYgOj0gdl9yb3c7CisgICAgICAgIHZfY291bnQgOj0gdl9jb3Vu dCArIDE7CisgICAgRU5EIExPT1A7CisKKyAgICBDTE9TRSB2X2N1cnM7CisKKyAgICBJRiB2 X2NvdW50ICE9IHBfcm93c19leHBlY3RlZCBUSEVOCisgICAgICAgIFJBSVNFIEVYQ0VQVElP TiAnY291bnQgbWlzbWF0Y2g6ICUgIT0gJScsIHZfY291bnQsIHBfcm93c19leHBlY3RlZDsK KyAgICBFTkQgSUY7CisKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWw7CitjcmVhdGUgdGFi bGUgYnJpbl9zb3J0X3Rlc3QgKGludF92YWwgaW50LCBiaWdpbnRfdmFsIGJpZ2ludCwgdGV4 dF92YWwgdGV4dCwgaW5ldF92YWwgaW5ldCkgd2l0aCAoZmlsbGZhY3Rvcj0xMCk7CistLSBz ZXF1ZW50aWFsIHZhbHVlcworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAor CWksCisJLWksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFk KGk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0 ICsgaQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworLS0gY3JlYXRlIGJy aW4gaW5kZXhlcyBvbiBpbmRpdmlkdWFsIGNvbHVtbnMKK2NyZWF0ZSBpbmRleCBicmluX3Nv cnRfdGVzdF9tdWx0aV9pZHggb24gYnJpbl9zb3J0X3Rlc3QgdXNpbmcgYnJpbiAoaW50X3Zh bCwgYmlnaW50X3ZhbCwgdGV4dF92YWwsIGluZXRfdmFsIGluZXRfbWlubWF4X29wcykgd2l0 aCAocGFnZXNfcGVyX3JhbmdlPTEpOworLS0KK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90 ZXN0Oworc2V0IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSBpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQg MTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgYmlnaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg YmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRf dmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAs IHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IGJpZ2ludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRl c2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCcsIDEwMDAsIGZhbHNlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg aW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwg ZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29y dF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBsaW1p dCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3Zh bCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9j aGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwnLCAxMDAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRf dmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2Mg bGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZh bHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4 dF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKKy0tIHNlbWktcmFuZG9tIGRhdGEgKHNlcXVlbnRpYWwgKyByYW5kb21uZXNzKQor dHJ1bmNhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmluX3NvcnRf dGVzdAorc2VsZWN0CisJaSArICgxMDAgKiByYW5kb20oKSk6OmludCwKKwktKGkgKyAoMTAw ICogcmFuZG9tKCkpOjppbnQpLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9z aXRlCisJbHBhZCgoaSArICgxMDAgKiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1KGk6 OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgKGkgKyAxMDAgKiByYW5k b20oKTo6aW50KQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworcmVpbmRl eCB0YWJsZSBicmluX3NvcnRfdGVzdDsKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0 Oworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsJywgMTAwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwg ZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEw MCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg YmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRf dmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBi aWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92 YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBp bmV0X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgaW5ldF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgdGV4dF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQg MTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIHJhbmRvbSBkYXRhCit0cnVuY2F0 ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsKK2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0Citz ZWxlY3QKKwkoMTAwMCAqIHJhbmRvbSgpKTo6aW50LAorCS0oKDEwMDAgKiByYW5kb20oKSk6 OmludCksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKCgo MTAwMCAqIHJhbmRvbSgpKTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcp LAorCScxMC4wLjAuMCc6OmluZXQgKyAoMTAwMCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdl bmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CityZWluZGV4IHRhYmxlIGJyaW5fc29ydF90 ZXN0OwordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGludF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBs aW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSBiaWdpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYycsIDEwMDAsIHRy dWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJp Z2ludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcs IDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBi aWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92 YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsJywgMTAwMCwgZmFs c2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0 X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNj IGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBm YWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGlu ZXRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCcsIDEwMDAs IGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg dGV4dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg dGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwg ZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworZHJvcCB0YWJsZSBicmluX3NvcnRfdGVzdDsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0X211bHRpX2V4cHJzX2Ftc3RhdHMu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmluX3NvcnRfbXVsdGlfZXhwcnNf YW1zdGF0cy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMmI5 YWRmY2U2MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv YnJpbl9zb3J0X211bHRpX2V4cHJzX2Ftc3RhdHMub3V0CkBAIC0wLDAgKzEsNzU4IEBACitz ZXQgZW5hYmxlX2luZGV4YW1fc3RhdHMgPSB0cnVlOworLS0gZnVuY3Rpb24gdG8gdmVyaWZ5 IHZhcmlvdXMgc29ydC1yZWxhdGVkIGRhdGEgKHRvdGFsIHJvd3MsIG9yZGVyaW5nKQorY3Jl YXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcocF9zcWwg dGV4dCwgcF9yb3dzX2V4cGVjdGVkIGludCwgcF9kZXNjIGJvb2xlYW4pIHJldHVybnMgdm9p ZCBhcyAkJAorZGVjbGFyZQorICAgIHZfY3VycyByZWZjdXJzb3I7CisgICAgdl9yb3cgcmVj b3JkOworICAgIHZfcHJldiByZWNvcmQ7CisgICAgdl9icmluX3NvcnRfZm91bmQgYm9vbCA6 PSBmYWxzZTsKKyAgICB2X2NvdW50IGludCA6PSAwOworYmVnaW4KKyAgICAtLSBuZWVkZWQg YmVjYXVzZSB0aGUgcF9zcWwgcXVlcnkgaGFzIGRpZmZlcmVudCBkYXRhIHR5cGVzCisgICAg ZXhlY3V0ZSAnZGlzY2FyZCBwbGFucyc7CisgICAgT1BFTiB2X2N1cnMgTk8gU0NST0xMIEZP UiBFWEVDVVRFIGZvcm1hdCgnZXhwbGFpbiAlcycsIHBfc3FsKTsKKyAgICBMT09QCisgICAg ICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93OworICAgICAgICBJRiBOT1QgRk9VTkQgVEhF TgorICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworICAgICAgICBJRiB2X3Jv dzo6dGV4dCBMSUtFICclQlJJTiBTb3J0JScgVEhFTgorICAgICAgICAgICAgdl9icmluX3Nv cnRfZm91bmQgOj0gdHJ1ZTsKKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsK KyAgICBFTkQgTE9PUDsKKyAgICBDTE9TRSB2X2N1cnM7CisgICAgSUYgTk9UIHZfYnJpbl9z b3J0X2ZvdW5kIFRIRU4KKyAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdCUklOIFNvcnQ6IG5v dCBmb3VuZCc7CisgICAgRU5EIElGOworICAgIE9QRU4gdl9jdXJzIE5PIFNDUk9MTCBGT1Ig RVhFQ1VURSBmb3JtYXQocF9zcWwpOworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJz IElOVE8gdl9yb3c7CisgICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAgICAgICAgICBF WElUOworICAgICAgICBFTkQgSUY7CisgICAgICAgIElGIHZfcHJldiBJUyBOT1QgTlVMTCBU SEVOCisgICAgICAgICAgICBJRiB2X3ByZXYudmFsID4gdl9yb3cudmFsIEFORCBOT1QgcF9k ZXNjIFRIRU4KKyAgICAgICAgICAgICAgICBSQUlTRSBFWENFUFRJT04gJ29yZGVyaW5nIG1p c21hdGNoICUgPiAlIChhc2MpJywgdl9wcmV2LnZhbCwgdl9yb3cudmFsOworICAgICAgICAg ICAgRU5EIElGOworICAgICAgICAgICAgSUYgdl9wcmV2LnZhbCA8IHZfcm93LnZhbCBBTkQg cF9kZXNjIFRIRU4KKyAgICAgICAgICAgICAgICBSQUlTRSBFWENFUFRJT04gJ29yZGVyaW5n IG1pc21hdGNoICUgPCAlIChkZXNjKScsIHZfcHJldi52YWwsIHZfcm93LnZhbDsKKyAgICAg ICAgICAgIEVORCBJRjsKKyAgICAgICAgRU5EIElGOworICAgICAgICB2X3ByZXYgOj0gdl9y b3c7CisgICAgICAgIHZfY291bnQgOj0gdl9jb3VudCArIDE7CisgICAgRU5EIExPT1A7Cisg ICAgQ0xPU0Ugdl9jdXJzOworICAgIElGIHZfY291bnQgIT0gcF9yb3dzX2V4cGVjdGVkIFRI RU4KKyAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdjb3VudCBtaXNtYXRjaDogJSAhPSAlJywg dl9jb3VudCwgcF9yb3dzX2V4cGVjdGVkOworICAgIEVORCBJRjsKK2VuZDsKKyQkIGxhbmd1 YWdlIHBscGdzcWw7CitjcmVhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3QgKGludF92YWwgaW50 LCBiaWdpbnRfdmFsIGJpZ2ludCwgdGV4dF92YWwgdGV4dCwgaW5ldF92YWwgaW5ldCkgd2l0 aCAoZmlsbGZhY3Rvcj0xMCk7CistLSBzZXF1ZW50aWFsIHZhbHVlcworaW5zZXJ0IGludG8g YnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCWksCisJLWksCS0tIHNhbWUgYXMgaW50LCBidXQg YXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKGk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwg JzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgaQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwx MDAwKSBzKGkpOworLS0gY3JlYXRlIGJyaW4gaW5kZXhlcyBvbiBpbmRpdmlkdWFsIGNvbHVt bnMKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF9pbnRfaWR4IG9uIGJyaW5fc29ydF90 ZXN0IHVzaW5nIGJyaW4gKChpbnRfdmFsICsgMSksIChiaWdpbnRfdmFsICsgMSksICgneCcg fHwgdGV4dF92YWwpLCAoaW5ldF92YWwgKyAxKSBpbmV0X21pbm1heF9vcHMpIHdpdGggKHBh Z2VzX3Blcl9yYW5nZT0xKTsKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0Oworc2V0 IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpJywgMTAwMCwgZmFs c2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsg MSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJ TiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29y dF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlT RQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRl c2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOwor RVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0 aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5l IDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRf dmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNv cnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3Qg Zm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRl cmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCistLSBtYXRjaGluZyBl eHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmln aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdp bnRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjJywgMTAw MCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJp Z2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmln aW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9j aGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAr IDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAx KSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9j aGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6 ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0 IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRf dmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhU OiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRl Z2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwg dHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdT UUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xl YW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFs c2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FM IGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFu KSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg dHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdT UUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xl YW4pIGxpbmUgMjQgYXQgUkFJU0UKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScs IDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4 JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgn J3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4Jycg fHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcn eCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo Jyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRy dWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkn LCAxMDAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhU OiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRl Z2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1 ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwg ZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4p IGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VS Uk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlv biBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAy NCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcn eCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo Jyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9S OiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBi cmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBh dCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcn IHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5 JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitF UlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rp b24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUg MjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgn J3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0 cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NR TCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVh bikgbGluZSAyNCBhdCBSQUlTRQorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQg MTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0 cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu ZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOwor RVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0 aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5l IDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCcs IDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDog IFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdl cixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7 CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVu Y3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxp bmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJP UjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24g YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQg YXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3Zh bCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6 ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0 IFJBSVNFCistLSBzZW1pLXJhbmRvbSBkYXRhIChzZXF1ZW50aWFsICsgcmFuZG9tbmVzcykK K3RydW5jYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0 X3Rlc3QKK3NlbGVjdAorCWkgKyAoMTAwICogcmFuZG9tKCkpOjppbnQsCisJLShpICsgKDEw MCAqIHJhbmRvbSgpKTo6aW50KSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBv c2l0ZQorCWxwYWQoKGkgKyAoMTAwICogcmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1kNShp Ojp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArIChpICsgMTAwICogcmFu ZG9tKCk6OmludCkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKK3JlaW5k ZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7Cit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVz dDsKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2Mn LCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFs ICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBl eHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFs IC0gMSknLCAxMDAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitD T05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4 dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitF UlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rp b24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUg MjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92 YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBu b3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19v cmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQg MTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwv cGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJv b2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0 cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NR TCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVh bikgbGluZSAyNCBhdCBSQUlTRQorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAwMCwg ZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFs ICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxp bWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4 cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2lu dF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAw LCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9w Z1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9v bGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJS T1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9u IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0 IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmln aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdp bnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklO IFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNF CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0g MSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBT b3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9j aGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEp IGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklO IFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNF CistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcn eCcnIHx8IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRf dmFsKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRl c2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBk ZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor LS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworRVJS T1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9u IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0 IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4 JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgn J3knJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNv cnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92 YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0 X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBk ZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZv dW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5v dCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkg ZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4g U29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UK Ky0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbmV0X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNj JywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxp bWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNt YXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW5ldF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBu b3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19v cmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEw MDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBM L3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixi b29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9S OiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBi cmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBh dCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFs IC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6 IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorLS0gcmFuZG9tIGRh dGEKK3RydW5jYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9z b3J0X3Rlc3QKK3NlbGVjdAorCSgxMDAwICogcmFuZG9tKCkpOjppbnQsCisJLSgoMTAwMCAq IHJhbmRvbSgpKTo6aW50KSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0 ZQorCWxwYWQoKCgxMDAwICogcmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0 KSwgNDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArICgxMDAwICogcmFuZG9tKCk6Omlu dCkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKK3JlaW5kZXggdGFibGUg YnJpbl9zb3J0X3Rlc3Q7Cit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKy0tIG1h dGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0 cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW50X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9u CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAx MDAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAg UEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2Vy LGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJS SU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJ U0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBs aW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQK K0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0 ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAw LCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9w Z1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9v bGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7 CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVu Y3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxp bmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VS Uk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlv biBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAy NCBhdCBSQUlTRQorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo YmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChi aWdpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGlt aXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcs IDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24K K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAx KScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsK K0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5j dGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGlu ZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo YmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklO IFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNF CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0g MSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5v dCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3Qg Zm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRl cmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5v dCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCistLSBtYXRj aGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0 X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRl eHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQg MTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0 Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoJyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklO IFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNF CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4 dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0 ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGlt aXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitD T05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4 dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0 IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05U RVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxp bnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMjQgYXQgUkFJU0UKKy0tIG1hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjJywgMTAwMCwg dHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAx KSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBl eHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5l dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92 YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQK K0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0 ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUp OworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1 bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBs aW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW5ldF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBT b3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9j aGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09O VEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQs aW50ZWdlcixib29sZWFuKSBsaW5lIDI0IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAyNCBhdCBSQUlTRQorZHJvcCB0YWJsZSBicmluX3NvcnRf dGVzdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUg Yi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDE1ZWFkMjRkNGQu LjliMzYyMDI1MTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTM3 LDMgKzEzNyw5IEBAIHRlc3Q6IGJyaW5fc29ydAogdGVzdDogYnJpbl9zb3J0X211bHRpCiB0 ZXN0OiBicmluX3NvcnRfZXhwcnMKIHRlc3Q6IGJyaW5fc29ydF9tdWx0aV9leHBycworCisj IHRyeSBzb3J0aW5nIHVzaW5nIEJSSU4gaW5kZXggd2l0aCBpbmRleGFtIHN0YXRzCit0ZXN0 OiBicmluX3NvcnRfYW1zdGF0cwordGVzdDogYnJpbl9zb3J0X211bHRpX2Ftc3RhdHMKK3Rl c3Q6IGJyaW5fc29ydF9leHByc19hbXN0YXRzCit0ZXN0OiBicmluX3NvcnRfbXVsdGlfZXhw cnNfYW1zdGF0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbl9zb3J0 X2Ftc3RhdHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbl9zb3J0X2Ftc3RhdHMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmMzZGExODk2NzUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3NvcnRfYW1z dGF0cy5zcWwKQEAgLTAsMCArMSwyNDAgQEAKK3NldCBlbmFibGVfaW5kZXhhbV9zdGF0cyA9 IHRydWU7CisKKy0tIGZ1bmN0aW9uIHRvIHZlcmlmeSB2YXJpb3VzIHNvcnQtcmVsYXRlZCBk YXRhICh0b3RhbCByb3dzLCBvcmRlcmluZykKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9u IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHBfc3FsIHRleHQsIHBfcm93c19leHBlY3RlZCBp bnQsIHBfZGVzYyBib29sZWFuKSByZXR1cm5zIHZvaWQgYXMgJCQKK2RlY2xhcmUKKyAgICB2 X2N1cnMgcmVmY3Vyc29yOworICAgIHZfcm93IHJlY29yZDsKKyAgICB2X3ByZXYgcmVjb3Jk OworICAgIHZfYnJpbl9zb3J0X2ZvdW5kIGJvb2wgOj0gZmFsc2U7CisgICAgdl9jb3VudCBp bnQgOj0gMDsKK2JlZ2luCisKKyAgICAtLSBuZWVkZWQgYmVjYXVzZSB0aGUgcF9zcWwgcXVl cnkgaGFzIGRpZmZlcmVudCBkYXRhIHR5cGVzCisgICAgZXhlY3V0ZSAnZGlzY2FyZCBwbGFu cyc7CisKKyAgICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KCdl eHBsYWluICVzJywgcF9zcWwpOworCisgICAgTE9PUAorICAgICAgICBGRVRDSCB2X2N1cnMg SU5UTyB2X3JvdzsKKworICAgICAgICBJRiBOT1QgRk9VTkQgVEhFTgorICAgICAgICAgICAg RVhJVDsKKyAgICAgICAgRU5EIElGOworCisgICAgICAgIElGIHZfcm93Ojp0ZXh0IExJS0Ug JyVCUklOIFNvcnQlJyBUSEVOCisgICAgICAgICAgICB2X2JyaW5fc29ydF9mb3VuZCA6PSB0 cnVlOworICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworICAgIEVORCBMT09Q OworCisgICAgQ0xPU0Ugdl9jdXJzOworCisgICAgSUYgTk9UIHZfYnJpbl9zb3J0X2ZvdW5k IFRIRU4KKyAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdCUklOIFNvcnQ6IG5vdCBmb3VuZCc7 CisgICAgRU5EIElGOworCisgICAgT1BFTiB2X2N1cnMgTk8gU0NST0xMIEZPUiBFWEVDVVRF IGZvcm1hdChwX3NxbCk7CisKKyAgICBMT09QCisgICAgICAgIEZFVENIIHZfY3VycyBJTlRP IHZfcm93OworCisgICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAgICAgICAgICBFWElU OworICAgICAgICBFTkQgSUY7CisKKyAgICAgICAgSUYgdl9wcmV2IElTIE5PVCBOVUxMIFRI RU4KKyAgICAgICAgICAgIElGIHZfcHJldi52YWwgPiB2X3Jvdy52YWwgQU5EIE5PVCBwX2Rl c2MgVEhFTgorICAgICAgICAgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlz bWF0Y2ggJSA+ICUgKGFzYyknLCB2X3ByZXYudmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAg ICBFTkQgSUY7CisgICAgICAgICAgICBJRiB2X3ByZXYudmFsIDwgdl9yb3cudmFsIEFORCBw X2Rlc2MgVEhFTgorICAgICAgICAgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcg bWlzbWF0Y2ggJSA8ICUgKGRlc2MpJywgdl9wcmV2LnZhbCwgdl9yb3cudmFsOworICAgICAg ICAgICAgRU5EIElGOworICAgICAgICBFTkQgSUY7CisKKyAgICAgICAgdl9wcmV2IDo9IHZf cm93OworICAgICAgICB2X2NvdW50IDo9IHZfY291bnQgKyAxOworICAgIEVORCBMT09QOwor CisgICAgQ0xPU0Ugdl9jdXJzOworCisgICAgSUYgdl9jb3VudCAhPSBwX3Jvd3NfZXhwZWN0 ZWQgVEhFTgorICAgICAgICBSQUlTRSBFWENFUFRJT04gJ2NvdW50IG1pc21hdGNoOiAlICE9 ICUnLCB2X2NvdW50LCBwX3Jvd3NfZXhwZWN0ZWQ7CisgICAgRU5EIElGOworCitlbmQ7Cisk JCBsYW5ndWFnZSBwbHBnc3FsOworCitjcmVhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3QgKGlu dF92YWwgaW50LCBiaWdpbnRfdmFsIGJpZ2ludCwgdGV4dF92YWwgdGV4dCwgaW5ldF92YWwg aW5ldCkgd2l0aCAoZmlsbGZhY3Rvcj0xMCk7CisKKy0tIHNlcXVlbnRpYWwgdmFsdWVzCitp bnNlcnQgaW50byBicmluX3NvcnRfdGVzdAorc2VsZWN0CisJaSwKKwktaSwJLS0gc2FtZSBh cyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoaTo6dGV4dCB8fCBtZDUoaTo6 dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyBpCitmcm9tIGdlbmVyYXRl X3NlcmllcygxLDEwMDApIHMoaSk7CisKKy0tIGNyZWF0ZSBicmluIGluZGV4ZXMgb24gaW5k aXZpZHVhbCBjb2x1bW5zCitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3RfaW50X2lkeCBv biBicmluX3NvcnRfdGVzdCB1c2luZyBicmluIChpbnRfdmFsKSB3aXRoIChwYWdlc19wZXJf cmFuZ2U9MSk7CitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3RfYmlnaW50X2lkeCBvbiBi cmluX3NvcnRfdGVzdCB1c2luZyBicmluIChiaWdpbnRfdmFsKSB3aXRoIChwYWdlc19wZXJf cmFuZ2U9MSk7CitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3RfdGV4dF9pZHggb24gYnJp bl9zb3J0X3Rlc3QgdXNpbmcgYnJpbiAodGV4dF92YWwpIHdpdGggKHBhZ2VzX3Blcl9yYW5n ZT0xKTsKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF9pbmV0X2lkeCBvbiBicmluX3Nv cnRfdGVzdCB1c2luZyBicmluIChpbmV0X3ZhbCBpbmV0X21pbm1heF9vcHMpIHdpdGggKHBh Z2VzX3Blcl9yYW5nZT0xKTsKKworLS0KK3ZhY3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0 OworCitzZXQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwg dHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOwor CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCcsIDEwMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2lu dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBk ZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg YmlnaW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSBiaWdpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRy dWUpOworCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsJywgMTAw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5l dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVz YycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0 X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFs IGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAx MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRl eHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRl c2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKKy0tIHNlbWktcmFuZG9tIGRhdGEgKHNlcXVl bnRpYWwgKyByYW5kb21uZXNzKQordHJ1bmNhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7Citp bnNlcnQgaW50byBicmluX3NvcnRfdGVzdAorc2VsZWN0CisJaSArICgxMDAgKiByYW5kb20o KSk6OmludCwKKwktKGkgKyAoMTAwICogcmFuZG9tKCkpOjppbnQpLAktLSBzYW1lIGFzIGlu dCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZCgoaSArICgxMDAgKiByYW5kb20oKSk6 OmludCk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjpp bmV0ICsgKGkgKyAxMDAgKiByYW5kb20oKTo6aW50KQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMo MSwxMDAwKSBzKGkpOworCityZWluZGV4IHRhYmxlIGJyaW5fc29ydF90ZXN0OworCit2YWN1 dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGludF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRy dWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwnLCAxMDAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVz YycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJp Z2ludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVl KTsKKworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCcsIDEwMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2Mn LCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92 YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBp bmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBk ZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwJywgMTAw LCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNj IGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IHRleHRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCistLSByYW5kb20gZGF0YQordHJ1bmNhdGUgdGFi bGUgYnJpbl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmluX3NvcnRfdGVzdAorc2VsZWN0 CisJKDEwMDAgKiByYW5kb20oKSk6OmludCwKKwktKCgxMDAwICogcmFuZG9tKCkpOjppbnQp LAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZCgoKDEwMDAg KiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwkn MTAuMC4wLjAnOjppbmV0ICsgKDEwMDAgKiByYW5kb20oKTo6aW50KQorZnJvbSBnZW5lcmF0 ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworCityZWluZGV4IHRhYmxlIGJyaW5fc29ydF90ZXN0 OworCit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKworCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IGludF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1pdCAxMDAn LCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0 cnVlKTsKKworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdp bnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwn LCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2lu dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAs IHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdp bnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKKworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3Zh bCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRf dmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW5ldF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBp bmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCcsIDEwMDAsIGZhbHNlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MnLCAxMDAwLCB0 cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQg MTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0 X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCitkcm9wIHRhYmxlIGJyaW5fc29y dF90ZXN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbl9zb3J0X2V4 cHJzX2Ftc3RhdHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbl9zb3J0X2V4cHJz X2Ftc3RhdHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjAy YTlmMjNmODAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9icmlu X3NvcnRfZXhwcnNfYW1zdGF0cy5zcWwKQEAgLTAsMCArMSwyNzAgQEAKK3NldCBlbmFibGVf aW5kZXhhbV9zdGF0cyA9IHRydWU7CistLSBmdW5jdGlvbiB0byB2ZXJpZnkgdmFyaW91cyBz b3J0LXJlbGF0ZWQgZGF0YSAodG90YWwgcm93cywgb3JkZXJpbmcpCitjcmVhdGUgb3IgcmVw bGFjZSBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyhwX3NxbCB0ZXh0LCBwX3Jv d3NfZXhwZWN0ZWQgaW50LCBwX2Rlc2MgYm9vbGVhbikgcmV0dXJucyB2b2lkIGFzICQkCitk ZWNsYXJlCisgICAgdl9jdXJzIHJlZmN1cnNvcjsKKyAgICB2X3JvdyByZWNvcmQ7CisgICAg dl9wcmV2IHJlY29yZDsKKyAgICB2X2JyaW5fc29ydF9mb3VuZCBib29sIDo9IGZhbHNlOwor ICAgIHZfY291bnQgaW50IDo9IDA7CitiZWdpbgorICAgIC0tIG5lZWRlZCBiZWNhdXNlIHRo ZSBwX3NxbCBxdWVyeSBoYXMgZGlmZmVyZW50IGRhdGEgdHlwZXMKKyAgICBleGVjdXRlICdk aXNjYXJkIHBsYW5zJzsKKyAgICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUg Zm9ybWF0KCdleHBsYWluICVzJywgcF9zcWwpOworICAgIExPT1AKKyAgICAgICAgRkVUQ0gg dl9jdXJzIElOVE8gdl9yb3c7CisgICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAgICAg ICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisgICAgICAgIElGIHZfcm93Ojp0ZXh0IExJ S0UgJyVCUklOIFNvcnQlJyBUSEVOCisgICAgICAgICAgICB2X2JyaW5fc29ydF9mb3VuZCA6 PSB0cnVlOworICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworICAgIEVORCBM T09QOworICAgIENMT1NFIHZfY3VyczsKKyAgICBJRiBOT1Qgdl9icmluX3NvcnRfZm91bmQg VEhFTgorICAgICAgICBSQUlTRSBFWENFUFRJT04gJ0JSSU4gU29ydDogbm90IGZvdW5kJzsK KyAgICBFTkQgSUY7CisgICAgT1BFTiB2X2N1cnMgTk8gU0NST0xMIEZPUiBFWEVDVVRFIGZv cm1hdChwX3NxbCk7CisgICAgTE9PUAorICAgICAgICBGRVRDSCB2X2N1cnMgSU5UTyB2X3Jv dzsKKyAgICAgICAgSUYgTk9UIEZPVU5EIFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAg ICAgIEVORCBJRjsKKyAgICAgICAgSUYgdl9wcmV2IElTIE5PVCBOVUxMIFRIRU4KKyAgICAg ICAgICAgIElGIHZfcHJldi52YWwgPiB2X3Jvdy52YWwgQU5EIE5PVCBwX2Rlc2MgVEhFTgor ICAgICAgICAgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA+ ICUgKGFzYyknLCB2X3ByZXYudmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQgSUY7 CisgICAgICAgICAgICBJRiB2X3ByZXYudmFsIDwgdl9yb3cudmFsIEFORCBwX2Rlc2MgVEhF TgorICAgICAgICAgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2gg JSA8ICUgKGRlc2MpJywgdl9wcmV2LnZhbCwgdl9yb3cudmFsOworICAgICAgICAgICAgRU5E IElGOworICAgICAgICBFTkQgSUY7CisgICAgICAgIHZfcHJldiA6PSB2X3JvdzsKKyAgICAg ICAgdl9jb3VudCA6PSB2X2NvdW50ICsgMTsKKyAgICBFTkQgTE9PUDsKKyAgICBDTE9TRSB2 X2N1cnM7CisgICAgSUYgdl9jb3VudCAhPSBwX3Jvd3NfZXhwZWN0ZWQgVEhFTgorICAgICAg ICBSQUlTRSBFWENFUFRJT04gJ2NvdW50IG1pc21hdGNoOiAlICE9ICUnLCB2X2NvdW50LCBw X3Jvd3NfZXhwZWN0ZWQ7CisgICAgRU5EIElGOworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3Nx bDsKK2NyZWF0ZSB0YWJsZSBicmluX3NvcnRfdGVzdCAoaW50X3ZhbCBpbnQsIGJpZ2ludF92 YWwgYmlnaW50LCB0ZXh0X3ZhbCB0ZXh0LCBpbmV0X3ZhbCBpbmV0KSB3aXRoIChmaWxsZmFj dG9yPTEwKTsKKy0tIHNlcXVlbnRpYWwgdmFsdWVzCitpbnNlcnQgaW50byBicmluX3NvcnRf dGVzdAorc2VsZWN0CisJaSwKKwktaSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBv cHBvc2l0ZQorCWxwYWQoaTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScx MC4wLjAuMCc6OmluZXQgKyBpCitmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7 CistLSBjcmVhdGUgYnJpbiBpbmRleGVzIG9uIGluZGl2aWR1YWwgY29sdW1ucworY3JlYXRl IGluZGV4IGJyaW5fc29ydF90ZXN0X2ludF9pZHggb24gYnJpbl9zb3J0X3Rlc3QgdXNpbmcg YnJpbiAoKGludF92YWwgKyAxKSkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworY3JlYXRl IGluZGV4IGJyaW5fc29ydF90ZXN0X2JpZ2ludF9pZHggb24gYnJpbl9zb3J0X3Rlc3QgdXNp bmcgYnJpbiAoKGJpZ2ludF92YWwgKyAxKSkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOwor Y3JlYXRlIGluZGV4IGJyaW5fc29ydF90ZXN0X3RleHRfaWR4IG9uIGJyaW5fc29ydF90ZXN0 IHVzaW5nIGJyaW4gKCgneCcgfHwgdGV4dF92YWwpKSB3aXRoIChwYWdlc19wZXJfcmFuZ2U9 MSk7CitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3RfaW5ldF9pZHggb24gYnJpbl9zb3J0 X3Rlc3QgdXNpbmcgYnJpbiAoKGluZXRfdmFsICsgMSkgaW5ldF9taW5tYXhfb3BzKSB3aXRo IChwYWdlc19wZXJfcmFuZ2U9MSk7CistLQordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rl c3Q7CitzZXQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CisKKy0tIG1hdGNoaW5nIGV4cHJlc3Np b24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKScs IDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CistLSBtaXNtYXRjaGluZyBl eHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFs IC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFs c2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEp IGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAt IDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtYXRj aGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChiaWdpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUp Oworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAr IDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0 cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworLS0gbWlzbWF0Y2hpbmcgZXhwcmVz c2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3Zh bCAtIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCB0cnVlKTsKKworLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwp JywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBs aW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwg dHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4Jycg fHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRf dmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKy0tIG1pc21h dGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNj JywgMTAwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3Zh bCkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpJywgMTAwMCwgZmFsc2Up Oworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkg ZGVzYycsIDEwMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0IDEw MCcsIDEwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW5ldF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CistLSBtaXNtYXRjaGluZyBleHBy ZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwg LSAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFs IC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOwor LS0gc2VtaS1yYW5kb20gZGF0YSAoc2VxdWVudGlhbCArIHJhbmRvbW5lc3MpCit0cnVuY2F0 ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsKK2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0Citz ZWxlY3QKKwlpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50LAorCS0oaSArICgxMDAgKiByYW5k b20oKSk6OmludCksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwls cGFkKChpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCks IDQwLCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyAoaSArIDEwMCAqIHJhbmRvbSgpOjpp bnQpCitmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CityZWluZGV4IHRhYmxl IGJyaW5fc29ydF90ZXN0OwordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CisKKy0t IG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7 CistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUp Oworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGxp bWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IHRydWUpOworCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkg ZGVzYycsIDEwMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2Mg bGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2lu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50 X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworLS0g bWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoYmlnaW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAw LCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2lu dF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcs IDEwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo YmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChi aWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBk ZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworLS0gbWF0Y2hpbmcg ZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcn eCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo Jyd4JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAw LCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcn eCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNj IGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCB0cnVlKTsKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZh bHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScn IHx8IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywg MTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo Jyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFs KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92 YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1hdGNoaW5nIGV4cHJl c3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAr IDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGluZXRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwg KyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu ZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7Cist LSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW5ldF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEp IGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIHRydWUpOworLS0gcmFuZG9tIGRhdGEKK3RydW5jYXRlIHRhYmxlIGJyaW5f c29ydF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCSgxMDAw ICogcmFuZG9tKCkpOjppbnQsCisJLSgoMTAwMCAqIHJhbmRvbSgpKTo6aW50KSwJLS0gc2Ft ZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoKCgxMDAwICogcmFuZG9t KCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4w Jzo6aW5ldCArICgxMDAwICogcmFuZG9tKCk6OmludCkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVz KDEsMTAwMCkgcyhpKTsKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7Cit2YWN1dW0g YW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKworLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpJywgMTAwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAr IDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEw MCcsIDEwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Np b24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKScs IDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1hdGNoaW5nIGV4 cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2lu dF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGlt aXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEp IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkn LCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChiaWdpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJp Z2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmln aW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIHRydWUpOworCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCknLCAxMDAw LCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4 JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgn J3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEw MCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0 X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRl eHRfdmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRl c2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworLS0gbWlzbWF0Y2hpbmcg ZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcn eCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo Jyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAw LCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcn eScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNj IGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCB0cnVlKTsKKworLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjJywg MTAwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAw LCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3Zh bCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24K K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpJywg MTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu ZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBk ZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFs IC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7Citkcm9wIHRh YmxlIGJyaW5fc29ydF90ZXN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv YnJpbl9zb3J0X211bHRpX2Ftc3RhdHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJp bl9zb3J0X211bHRpX2Ftc3RhdHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLjFiZDhjNzgwMmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9icmluX3NvcnRfbXVsdGlfYW1zdGF0cy5zcWwKQEAgLTAsMCArMSwyMzcgQEAK K3NldCBlbmFibGVfaW5kZXhhbV9zdGF0cyA9IHRydWU7CisKKy0tIGZ1bmN0aW9uIHRvIHZl cmlmeSB2YXJpb3VzIHNvcnQtcmVsYXRlZCBkYXRhICh0b3RhbCByb3dzLCBvcmRlcmluZykK K2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHBf c3FsIHRleHQsIHBfcm93c19leHBlY3RlZCBpbnQsIHBfZGVzYyBib29sZWFuKSByZXR1cm5z IHZvaWQgYXMgJCQKK2RlY2xhcmUKKyAgICB2X2N1cnMgcmVmY3Vyc29yOworICAgIHZfcm93 IHJlY29yZDsKKyAgICB2X3ByZXYgcmVjb3JkOworICAgIHZfYnJpbl9zb3J0X2ZvdW5kIGJv b2wgOj0gZmFsc2U7CisgICAgdl9jb3VudCBpbnQgOj0gMDsKK2JlZ2luCisKKyAgICAtLSBu ZWVkZWQgYmVjYXVzZSB0aGUgcF9zcWwgcXVlcnkgaGFzIGRpZmZlcmVudCBkYXRhIHR5cGVz CisgICAgZXhlY3V0ZSAnZGlzY2FyZCBwbGFucyc7CisKKyAgICBPUEVOIHZfY3VycyBOTyBT Q1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KCdleHBsYWluICVzJywgcF9zcWwpOworCisgICAg TE9PUAorICAgICAgICBGRVRDSCB2X2N1cnMgSU5UTyB2X3JvdzsKKworICAgICAgICBJRiBO T1QgRk9VTkQgVEhFTgorICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworCisg ICAgICAgIElGIHZfcm93Ojp0ZXh0IExJS0UgJyVCUklOIFNvcnQlJyBUSEVOCisgICAgICAg ICAgICB2X2JyaW5fc29ydF9mb3VuZCA6PSB0cnVlOworICAgICAgICAgICAgRVhJVDsKKyAg ICAgICAgRU5EIElGOworICAgIEVORCBMT09QOworCisgICAgQ0xPU0Ugdl9jdXJzOworCisg ICAgSUYgTk9UIHZfYnJpbl9zb3J0X2ZvdW5kIFRIRU4KKyAgICAgICAgUkFJU0UgRVhDRVBU SU9OICdCUklOIFNvcnQ6IG5vdCBmb3VuZCc7CisgICAgRU5EIElGOworCisgICAgT1BFTiB2 X2N1cnMgTk8gU0NST0xMIEZPUiBFWEVDVVRFIGZvcm1hdChwX3NxbCk7CisKKyAgICBMT09Q CisgICAgICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93OworCisgICAgICAgIElGIE5PVCBG T1VORCBUSEVOCisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisKKyAgICAg ICAgSUYgdl9wcmV2IElTIE5PVCBOVUxMIFRIRU4KKyAgICAgICAgICAgIElGIHZfcHJldi52 YWwgPiB2X3Jvdy52YWwgQU5EIE5PVCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAgICAgIFJB SVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA+ICUgKGFzYyknLCB2X3ByZXYu dmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgICAgICBJRiB2 X3ByZXYudmFsIDwgdl9yb3cudmFsIEFORCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAgICAg IFJBSVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA8ICUgKGRlc2MpJywgdl9w cmV2LnZhbCwgdl9yb3cudmFsOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICBFTkQg SUY7CisKKyAgICAgICAgdl9wcmV2IDo9IHZfcm93OworICAgICAgICB2X2NvdW50IDo9IHZf Y291bnQgKyAxOworICAgIEVORCBMT09QOworCisgICAgQ0xPU0Ugdl9jdXJzOworCisgICAg SUYgdl9jb3VudCAhPSBwX3Jvd3NfZXhwZWN0ZWQgVEhFTgorICAgICAgICBSQUlTRSBFWENF UFRJT04gJ2NvdW50IG1pc21hdGNoOiAlICE9ICUnLCB2X2NvdW50LCBwX3Jvd3NfZXhwZWN0 ZWQ7CisgICAgRU5EIElGOworCitlbmQ7CiskJCBsYW5ndWFnZSBwbHBnc3FsOworCitjcmVh dGUgdGFibGUgYnJpbl9zb3J0X3Rlc3QgKGludF92YWwgaW50LCBiaWdpbnRfdmFsIGJpZ2lu dCwgdGV4dF92YWwgdGV4dCwgaW5ldF92YWwgaW5ldCkgd2l0aCAoZmlsbGZhY3Rvcj0xMCk7 CisKKy0tIHNlcXVlbnRpYWwgdmFsdWVzCitpbnNlcnQgaW50byBicmluX3NvcnRfdGVzdAor c2VsZWN0CisJaSwKKwktaSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0 ZQorCWxwYWQoaTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAu MCc6OmluZXQgKyBpCitmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CisKKy0t IGNyZWF0ZSBicmluIGluZGV4ZXMgb24gaW5kaXZpZHVhbCBjb2x1bW5zCitjcmVhdGUgaW5k ZXggYnJpbl9zb3J0X3Rlc3RfbXVsdGlfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJy aW4gKGludF92YWwsIGJpZ2ludF92YWwsIHRleHRfdmFsLCBpbmV0X3ZhbCBpbmV0X21pbm1h eF9vcHMpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKKworLS0KK3ZhY3V1bSBhbmFseXpl IGJyaW5fc29ydF90ZXN0OworCitzZXQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxp bWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg aW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmln aW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgYmlnaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEw MCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmln aW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIHRydWUpOworCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IGluZXRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW5ldF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0 cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUp OworCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsJywgMTAwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYycs IDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3Zh bCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRl eHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRl c2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKKy0tIHNlbWktcmFu ZG9tIGRhdGEgKHNlcXVlbnRpYWwgKyByYW5kb21uZXNzKQordHJ1bmNhdGUgdGFibGUgYnJp bl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmluX3NvcnRfdGVzdAorc2VsZWN0CisJaSAr ICgxMDAgKiByYW5kb20oKSk6OmludCwKKwktKGkgKyAoMTAwICogcmFuZG9tKCkpOjppbnQp LAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZCgoaSArICgx MDAgKiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwK KwknMTAuMC4wLjAnOjppbmV0ICsgKGkgKyAxMDAgKiByYW5kb20oKTo6aW50KQorZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworCityZWluZGV4IHRhYmxlIGJyaW5fc29y dF90ZXN0OworCit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKworCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwJywgMTAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1p dCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGlu dF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKKworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2lu dF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IGJpZ2ludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAn LCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2lu dF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCB0cnVlKTsKKworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBp bmV0X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IGluZXRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsK KworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCcsIDEwMDAsIGZh bHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MnLCAx MDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg dGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwg bGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNj IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCistLSByYW5kb20gZGF0 YQordHJ1bmNhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmluX3Nv cnRfdGVzdAorc2VsZWN0CisJKDEwMDAgKiByYW5kb20oKSk6OmludCwKKwktKCgxMDAwICog cmFuZG9tKCkpOjppbnQpLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRl CisJbHBhZCgoKDEwMDAgKiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1KGk6OnRleHQp LCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgKDEwMDAgKiByYW5kb20oKTo6aW50 KQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworCityZWluZGV4IHRhYmxl IGJyaW5fc29ydF90ZXN0OworCit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwnLCAxMDAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYycsIDEwMDAsIHRy dWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwg ZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IGJpZ2ludF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSBpbmV0X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCcs IDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFs IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCB0cnVlKTsKKworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0 ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCcs IDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFs IGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg dGV4dF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0 X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCitkcm9w IHRhYmxlIGJyaW5fc29ydF90ZXN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvYnJpbl9zb3J0X211bHRpX2V4cHJzX2Ftc3RhdHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvYnJpbl9zb3J0X211bHRpX2V4cHJzX2Ftc3RhdHMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmQ5MTY2NjY0MmMKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3NvcnRfbXVsdGlfZXhwcnNfYW1zdGF0cy5z cWwKQEAgLTAsMCArMSwyNjUgQEAKK3NldCBlbmFibGVfaW5kZXhhbV9zdGF0cyA9IHRydWU7 CistLSBmdW5jdGlvbiB0byB2ZXJpZnkgdmFyaW91cyBzb3J0LXJlbGF0ZWQgZGF0YSAodG90 YWwgcm93cywgb3JkZXJpbmcpCitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBicmluc29y dF9jaGVja19vcmRlcmluZyhwX3NxbCB0ZXh0LCBwX3Jvd3NfZXhwZWN0ZWQgaW50LCBwX2Rl c2MgYm9vbGVhbikgcmV0dXJucyB2b2lkIGFzICQkCitkZWNsYXJlCisgICAgdl9jdXJzIHJl ZmN1cnNvcjsKKyAgICB2X3JvdyByZWNvcmQ7CisgICAgdl9wcmV2IHJlY29yZDsKKyAgICB2 X2JyaW5fc29ydF9mb3VuZCBib29sIDo9IGZhbHNlOworICAgIHZfY291bnQgaW50IDo9IDA7 CitiZWdpbgorICAgIC0tIG5lZWRlZCBiZWNhdXNlIHRoZSBwX3NxbCBxdWVyeSBoYXMgZGlm ZmVyZW50IGRhdGEgdHlwZXMKKyAgICBleGVjdXRlICdkaXNjYXJkIHBsYW5zJzsKKyAgICBP UEVOIHZfY3VycyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KCdleHBsYWluICVzJywg cF9zcWwpOworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7Cisg ICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAgICAgICAgICBFWElUOworICAgICAgICBF TkQgSUY7CisgICAgICAgIElGIHZfcm93Ojp0ZXh0IExJS0UgJyVCUklOIFNvcnQlJyBUSEVO CisgICAgICAgICAgICB2X2JyaW5fc29ydF9mb3VuZCA6PSB0cnVlOworICAgICAgICAgICAg RVhJVDsKKyAgICAgICAgRU5EIElGOworICAgIEVORCBMT09QOworICAgIENMT1NFIHZfY3Vy czsKKyAgICBJRiBOT1Qgdl9icmluX3NvcnRfZm91bmQgVEhFTgorICAgICAgICBSQUlTRSBF WENFUFRJT04gJ0JSSU4gU29ydDogbm90IGZvdW5kJzsKKyAgICBFTkQgSUY7CisgICAgT1BF TiB2X2N1cnMgTk8gU0NST0xMIEZPUiBFWEVDVVRFIGZvcm1hdChwX3NxbCk7CisgICAgTE9P UAorICAgICAgICBGRVRDSCB2X2N1cnMgSU5UTyB2X3JvdzsKKyAgICAgICAgSUYgTk9UIEZP VU5EIFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsKKyAgICAgICAg SUYgdl9wcmV2IElTIE5PVCBOVUxMIFRIRU4KKyAgICAgICAgICAgIElGIHZfcHJldi52YWwg PiB2X3Jvdy52YWwgQU5EIE5PVCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAgICAgIFJBSVNF IEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA+ICUgKGFzYyknLCB2X3ByZXYudmFs LCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgICAgICBJRiB2X3By ZXYudmFsIDwgdl9yb3cudmFsIEFORCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAgICAgIFJB SVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA8ICUgKGRlc2MpJywgdl9wcmV2 LnZhbCwgdl9yb3cudmFsOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICBFTkQgSUY7 CisgICAgICAgIHZfcHJldiA6PSB2X3JvdzsKKyAgICAgICAgdl9jb3VudCA6PSB2X2NvdW50 ICsgMTsKKyAgICBFTkQgTE9PUDsKKyAgICBDTE9TRSB2X2N1cnM7CisgICAgSUYgdl9jb3Vu dCAhPSBwX3Jvd3NfZXhwZWN0ZWQgVEhFTgorICAgICAgICBSQUlTRSBFWENFUFRJT04gJ2Nv dW50IG1pc21hdGNoOiAlICE9ICUnLCB2X2NvdW50LCBwX3Jvd3NfZXhwZWN0ZWQ7CisgICAg RU5EIElGOworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK2NyZWF0ZSB0YWJsZSBicmlu X3NvcnRfdGVzdCAoaW50X3ZhbCBpbnQsIGJpZ2ludF92YWwgYmlnaW50LCB0ZXh0X3ZhbCB0 ZXh0LCBpbmV0X3ZhbCBpbmV0KSB3aXRoIChmaWxsZmFjdG9yPTEwKTsKKy0tIHNlcXVlbnRp YWwgdmFsdWVzCitpbnNlcnQgaW50byBicmluX3NvcnRfdGVzdAorc2VsZWN0CisJaSwKKwkt aSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoaTo6dGV4 dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyBpCitm cm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CistLSBjcmVhdGUgYnJpbiBpbmRl eGVzIG9uIGluZGl2aWR1YWwgY29sdW1ucworY3JlYXRlIGluZGV4IGJyaW5fc29ydF90ZXN0 X2ludF9pZHggb24gYnJpbl9zb3J0X3Rlc3QgdXNpbmcgYnJpbiAoKGludF92YWwgKyAxKSwg KGJpZ2ludF92YWwgKyAxKSwgKCd4JyB8fCB0ZXh0X3ZhbCksIChpbmV0X3ZhbCArIDEpIGlu ZXRfbWlubWF4X29wcykgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOwordmFjdXVtIGFuYWx5 emUgYnJpbl9zb3J0X3Rlc3Q7CitzZXQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CistLSBtYXRj aGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bnRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3Zh bCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50 X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworLS0g bWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVl KTsKKworLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2Mn LCAxMDAwLCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0 IDEwMCcsIDEwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwg KyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKy0tIG1pc21h dGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGJpZ2ludF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1 ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFs IC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAs IHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2lu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50 X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1hdGNoaW5nIGV4cHJl c3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcn IHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1 ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwg dGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1p dCAxMDAnLCAxMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4 JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgn J3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1 ZSk7CistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4 dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0 ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCcsIDEwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcn IHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5 JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtYXRjaGluZyBleHByZXNzaW9u CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKScs IDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2Up Oworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkg ZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3Zh bCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworLS0gbWlz bWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGluZXRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKKy0tIHNlbWktcmFuZG9tIGRhdGEgKHNlcXVlbnRpYWwgKyByYW5kb21u ZXNzKQordHJ1bmNhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmlu X3NvcnRfdGVzdAorc2VsZWN0CisJaSArICgxMDAgKiByYW5kb20oKSk6OmludCwKKwktKGkg KyAoMTAwICogcmFuZG9tKCkpOjppbnQpLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0 IG9wcG9zaXRlCisJbHBhZCgoaSArICgxMDAgKiByYW5kb20oKSk6OmludCk6OnRleHQgfHwg bWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgKGkgKyAxMDAg KiByYW5kb20oKTo6aW50KQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOwor cmVpbmRleCB0YWJsZSBicmluX3NvcnRfdGVzdDsKK3ZhY3V1bSBhbmFseXplIGJyaW5fc29y dF90ZXN0OworCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAs IHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAr IDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIHRydWUpOworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2Mn LCAxMDAwLCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwg dHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0g MSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCB0cnVlKTsKKworLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJp Z2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmln aW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZh bHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCB0cnVlKTsKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAx KSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmln aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdp bnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisK Ky0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFs KSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4 dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3Zh bCknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwp IGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywgMTAw LCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcn eScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRf dmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4 dF92YWwpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBt YXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW5ldF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0 IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIHRydWUpOworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNj JywgMTAwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW5ldF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywg MTAwLCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0 X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKy0tIHJhbmRvbSBkYXRhCit0cnVuY2F0 ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsKK2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0Citz ZWxlY3QKKwkoMTAwMCAqIHJhbmRvbSgpKTo6aW50LAorCS0oKDEwMDAgKiByYW5kb20oKSk6 OmludCksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKCgo MTAwMCAqIHJhbmRvbSgpKTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcp LAorCScxMC4wLjAuMCc6OmluZXQgKyAoMTAwMCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdl bmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CityZWluZGV4IHRhYmxlIGJyaW5fc29ydF90 ZXN0OwordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CisKKy0tIG1hdGNoaW5nIGV4 cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwg KyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkg ZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsg MSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CistLSBtaXNtYXRj aGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3Zh bCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50 X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCist LSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChiaWdpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAs IHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2lu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50 X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywg MTAwLCB0cnVlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChi aWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJp Z2ludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRl c2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworLS0gbWlzbWF0Y2hpbmcg ZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJp Z2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmln aW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBs aW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0g MSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRf dmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4 dF92YWwpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRf dmFsKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcs IDEwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo Jyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8 IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKy0t IG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFs KSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4 dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0 ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpJywgMTAwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFs ICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjIGxp bWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW5ldF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2Up Oworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkg ZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CistLSBtaXNtYXRjaGlu ZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCcs IDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu ZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRy dWUpOworZHJvcCB0YWJsZSBicmluX3NvcnRfdGVzdDsKLS0gCjIuNDEuMAoK --------------CooOQ6LlXwcsddypE9zFAJMn Content-Type: text/x-patch; charset=UTF-8; name="0011-wip-test-generator-script-20230710.patch" Content-Disposition: attachment; filename="0011-wip-test-generator-script-20230710.patch" Content-Transfer-Encoding: base64 RnJvbSA0OGI0ZTFhODcwOWNiYjUxZTNlMGNiNGY1NDQyZGY3NzMwODBhZjQ5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCA2IEZlYiAyMDIzIDAzOjQyOjUyICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAxMS8xMV0gd2lwOiB0ZXN0IGdlbmVyYXRvciBzY3JpcHQKCi0tLQogYnJp bi10ZXN0LnB5IHwgMzg2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDM4NiBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgYnJpbi10ZXN0LnB5CgpkaWZmIC0tZ2l0IGEvYnJpbi10ZXN0LnB5 IGIvYnJpbi10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmM5MGVjNzk4YmUKLS0tIC9kZXYvbnVsbAorKysgYi9icmluLXRlc3QucHkKQEAgLTAsMCAr MSwzODYgQEAKK2ltcG9ydCBwc3ljb3BnMgoraW1wb3J0IHBzeWNvcGcyLmV4dHJhcworaW1w b3J0IHJhbmRvbQoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCByZQorCitmcm9t IGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSBzdGF0aXN0aWNzIGltcG9ydCBtZWFu CisKK2NvbHMgPSBbKCdpbnRfdmFsJywgJ2ludDRfbWlubWF4X29wcycpLAorCQkoJ2JpZ2lu dF92YWwnLCAnaW50OF9taW5tYXhfb3BzJyksCisJCSgndGV4dF92YWwnLCAndGV4dF9taW5t YXhfb3BzJyksCisJCSgnaW5ldF92YWwnLCAnaW5ldF9taW5tYXhfb3BzJyksCisJCSgnKGlu dF92YWwrMSknLCAnaW50NF9taW5tYXhfb3BzJyksCisJCSgnKGJpZ2ludF92YWwrMSknLCAn aW50OF9taW5tYXhfb3BzJyksCisJCSgiKCd4JyB8fCB0ZXh0X3ZhbCkiLCAndGV4dF9taW5t YXhfb3BzJyksCisJCSgnKGluZXRfdmFsICsgMSknLCAnaW5ldF9taW5tYXhfb3BzJyksCisJ CSgnKGludF92YWwrMiknLCAnaW50NF9taW5tYXhfb3BzJyksCisJCSgnKGJpZ2ludF92YWwr MiknLCAnaW50OF9taW5tYXhfb3BzJyksCisJCSgiKCd5JyB8fCB0ZXh0X3ZhbCkiLCAndGV4 dF9taW5tYXhfb3BzJyksCisJCSgnKGluZXRfdmFsICsgMiknLCAnaW5ldF9taW5tYXhfb3Bz JyldCisKKyMgcmFuZG9tbHkgcmVvcmRlciB0aGUgdGFibGUgY29sdW1ucworI3RhYmxlX2Nv bHMgPSBbKCdpbnRfdmFsIGludCcsICdpJywgJ2kgKyAlKHNrZXcpZCAqIHJhbmRvbSgpJywg J2kgKyAxMDAwMDAwICogcmFuZG9tKCknKSwKKyMJCQkgICgnYmlnaW50X3ZhbCBiaWdpbnQn LCAnLWknLCAnLWkgLSAxMDAgKiByYW5kb20oKScsICctMSAtIDEwMDAwMDAgKiByYW5kb20o KScpLAorIwkJCSAgKCdpbmV0X3ZhbCBpbmV0JywgIicxMC4wLjAuMCc6OmluZXQgKyBpIiwg IicxMC4wLjAuMCc6OmluZXQgKyBpICogMTAwICogcmFuZG9tKCk6OmludCIsICInMTAuMC4w LjAnOjppbmV0ICsgaSArIDEwMDAwMDAgKiByYW5kb20oKTo6aW50IiksCisjCQkJICAoJ3Rl eHRfdmFsIHRleHQnLCAibHBhZChpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyki LCAibHBhZCgoaSArIDEwMCpyYW5kb20oKTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCks IDQwLCAnMCcpIiwgImxwYWQoKGkgKyAxMDAwMDAwKnJhbmRvbSgpOjppbnQpOjp0ZXh0IHx8 IG1kNShpOjp0ZXh0KSwgNDAsICcwJykiKV0KKwordGFibGVfY29scyA9IFsoJ2ludF92YWwg aW50JywgJ2kgKyAlKHJhbmRvbW5lc3MpZCAqIHJhbmRvbSgpJyksCisJCQkgICgnYmlnaW50 X3ZhbCBiaWdpbnQnLCAnLWkgLSAlKHJhbmRvbW5lc3MpZCAqIHJhbmRvbSgpJyksCisJCQkg ICgnaW5ldF92YWwgaW5ldCcsICInMTAuMC4wLjAnOjppbmV0ICsgaSArICUocmFuZG9tbmVz cylkICogcmFuZG9tKCk6OmludCIpLAorCQkJICAoJ3RleHRfdmFsIHRleHQnLCAibHBhZCgo aSArICUocmFuZG9tbmVzcylkICogcmFuZG9tKCk6OmludCk6OnRleHQgfHwgbWQ1KGk6OnRl eHQpLCA0MCwgJzAnKSIpXQorCisKK2RlZiBleGVjdXRlX3F1ZXJ5KGN1ciwgcXVlcnksIGZl dGNoX3Jlc3VsdCA9IEZhbHNlKToKKworCWN1ci5leGVjdXRlKHF1ZXJ5KQorCisJaWYgZmV0 Y2hfcmVzdWx0OgorCQlyZXR1cm4gY3VyLmZldGNoYWxsKCkKKworCisjIHJlY3JlYXRlIHRo ZSB0YWJsZSB3aXRoIHRoZSBjb2x1bW5zIGluIHJhbmRvbWl6ZWQgb3JkZXIKK2RlZiByZWNy ZWF0ZV90YWJsZShjb25uLCBucm93cywgcmFuZG9tbmVzcywgZmlsbGZhY3Rvcik6CisKKwly YW5kb20uc2h1ZmZsZSh0YWJsZV9jb2xzKQorCisJY3VyID0gY29ubi5jdXJzb3IoKQorCisJ ZXhlY3V0ZV9xdWVyeShjdXIsICdCRUdJTicpCisKKwlleGVjdXRlX3F1ZXJ5KGN1ciwgJ0RS T1AgVEFCTEUgSUYgRVhJU1RTIHRlc3RfdGFibGUnKQorCisJZXhlY3V0ZV9xdWVyeShjdXIs ICdDUkVBVEUgVEFCTEUgdGVzdF90YWJsZSAoJXMpIHdpdGggKGZpbGxmYWN0b3I9JWQpJyAl ICgnLCAnLmpvaW4oW3ZbMF0gZm9yIHYgaW4gdGFibGVfY29sc10pLCBmaWxsZmFjdG9yKSkK KwlwcmludCgnQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUgKCVzKSB3aXRoIChmaWxsZmFjdG9y PSVkKScgJSAoJywgJy5qb2luKFt2WzBdIGZvciB2IGluIHRhYmxlX2NvbHNdKSwgZmlsbGZh Y3RvcikpCisKKwlpbnNlcnRfc3FsID0gJ0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgU0VMRUNU ICVzIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsJWQpIHMoaSknICUgKCcsICcuam9pbihbdlsx XSBmb3IgdiBpbiB0YWJsZV9jb2xzXSksIG5yb3dzKQorCWluc2VydF9zcWwgPSBpbnNlcnRf c3FsICUgeydyYW5kb21uZXNzJyA6IGludChucm93cyAqIHJhbmRvbW5lc3MpLCAncm93cycg OiBucm93c30KKworCXByaW50KGluc2VydF9zcWwpCisKKwlleGVjdXRlX3F1ZXJ5KGN1ciwg aW5zZXJ0X3NxbCkKKworCWV4ZWN1dGVfcXVlcnkoY3VyLCAnQ09NTUlUJykKKworCWN1ci5j bG9zZSgpCisKKworZGVmIGNyZWF0ZV9pbmRleGVzKGNvbm4sIHBhZ2VzX3Blcl9yYW5nZSk6 CisKKwljdXIgPSBjb25uLmN1cnNvcigpCisKKwludW1faW5kZXhlcyA9IHJhbmRvbS5yYW5k aW50KDEsbGVuKGNvbHMpKQorCisJIyByYW5kb21seSBwaWNrIGNvbHVtbnMgdG8gaW5kZXgK KwlpbmRleGVkID0gcmFuZG9tLnNhbXBsZShjb2xzLCBudW1faW5kZXhlcykKKworCWZvciBj IGluIGluZGV4ZWQ6CisJCSMgZiA9IHJhbmRvbS5yYW5kb20oKQorCQkjIG51bV9wYWdlcyA9 IDEgKyBpbnQoZiAqIGYgKiBmICogMjU2KQorCQlpbmRleF9zcWwgPSAnQ1JFQVRFIElOREVY IE9OIHRlc3RfdGFibGUgVVNJTkcgYnJpbiAoJXMgJXMpIFdJVEggKHBhZ2VzX3Blcl9yYW5n ZT0lZCknICUgKGNbMF0sIGNbMV0sIHBhZ2VzX3Blcl9yYW5nZSkKKwkJcHJpbnQoaW5kZXhf c3FsKQorCQlleGVjdXRlX3F1ZXJ5KGN1ciwgaW5kZXhfc3FsKQorCisJY3VyLmNsb3NlKCkK KworCXJldHVybiBpbmRleGVkCisKKworZGVmIGJyaW5zb3J0X2luX2V4cGxhaW4oY3VyLCBx dWVyeSk6CisKKwljdXIuZXhlY3V0ZSgnZXhwbGFpbiAnICsgcXVlcnkpCisJZm9yIHIgaW4g Y3VyLmZldGNoYWxsKCk6CisJCWlmICdCUklOIFNvcnQnIGluIHJbJ1FVRVJZIFBMQU4nXToK KwkJCXJldHVybiBUcnVlCisKKwlyZXR1cm4gRmFsc2UKKworCitkZWYgY29tcGFyZV9kZWZh dWx0KGEsIGIpOgorCWlmIGEgPCBiOgorCQlyZXR1cm4gLTEKKwllbGlmIGEgPiBiOgorCQly ZXR1cm4gMQorCXJldHVybiAwCisKKworZGVmIGNvbXBhcmVfaW5ldChhLCBiKToKKwlhID0g W2ludCh2KSBmb3IgdiBpbiBhLnNwbGl0KCcuJyldCisJYiA9IFtpbnQodikgZm9yIHYgaW4g Yi5zcGxpdCgnLicpXQorCisJZm9yIHAgaW4gcmFuZ2UoMCw0KToKKwkJciA9IGNvbXBhcmVf ZGVmYXVsdChhW3BdLCBiW3BdKQorCQlpZiByICE9IDA6CisJCQlyZXR1cm4gcgorCisJcmV0 dXJuIHIKKworCitkZWYgY2hlY2tfb3JkZXJpbmcoY29ubiwgY29uZmlnLCBxdWVyeSwgZXhw ZWN0ZWRfcm93cywgc2VsZWN0X3N0YXIsIHNlbGVjdF9saXN0LCBzb3J0X2xpc3QsIGlzX2Rl c2MpOgorCisJY3VyID0gY29ubi5jdXJzb3IoKQorCisJZGF0YSA9IGV4ZWN1dGVfcXVlcnko Y3VyLCBxdWVyeSwgVHJ1ZSkKKworCWlmIGxlbihkYXRhKSAhPSBleHBlY3RlZF9yb3dzOgor CQlwcmludCgnRVJST1I6IHVuZXhwZWN0ZWQgbnVtYmVyIG9mIHJvd3MgJXMgJXMnICUgKGV4 cGVjdGVkX3Jvd3MsIGxlbihkYXRhKSkpCisJCXN5cy5leGl0KDEpCisKKwkjIHdoYXQgcHJl Zml4IHdlIGNhbiBjaGVjayBvcmRlcmluZyBmb3IgKHNvbWUgc29ydCBjb2x1bW5zIG1heSBu b3QgYmUKKwkjIGluY2x1ZGVkIGluIHRoZSByZXN1bHQsIGFuZCB3ZSBuZWVkIGEgY29udGlu dW91cyBwcmVmaXgpCisJcHJlZml4ID0gW10KKwlpbmRleGVzID0gW10KKwlzb3J0X29yZGVy ID0ge30KKwlmb3IgcyBpbiBzb3J0X2xpc3Q6CisJCWlmIHNlbGVjdF9zdGFyOgorCQkJaWYg c1swXSBub3QgaW4gW3ggZm9yIHggaW4gdGFibGVfY29sc106CisJCQkJYnJlYWsKKworCQkJ aWR4ID0gW3ggZm9yIHggaW4gdGFibGVfY29sc10uaW5kZXgoc1swXSkKKwkJZWxzZToKKwkJ CWlmIHMgbm90IGluIHNlbGVjdF9saXN0OgorCQkJCWJyZWFrCisKKwkJCWlkeCA9IHNlbGVj dF9saXN0LmluZGV4KHMpCisKKwkJaWYgaWR4IGlzIE5vbmU6CisJCQlicmVhaworCisJCXNv cnRfaWR4ID0gc29ydF9saXN0LmluZGV4KHMpCisKKwkJcHJlZml4LmFwcGVuZChzKQorCQlp bmRleGVzLmFwcGVuZChpZHgpCisJCSMgc29ydF9vcmRlci51cGRhdGUoe3NlbGVjdF9saXN0 LmluZGV4KHMpIDogaXNfZGVzY1tzb3J0X2xpc3QuaW5kZXgocyldfSkKKwkJc29ydF9vcmRl ci51cGRhdGUoe2lkeCA6IGlzX2Rlc2Nbc29ydF9pZHhdfSkKKworCSMgcHJpbnQoIlBSRUZJ WCIsIGluZGV4ZXMsIHByZWZpeCkKKworCWlmIGxlbihwcmVmaXgpICE9IDA6CisJCXByZXYg PSBOb25lCisJCWZvciByb3cgaW4gZGF0YToKKwkJCWlmIHByZXYgaXMgbm90IE5vbmU6CisK KwkJCQlmb3IgaWR4IGluIGluZGV4ZXM6CisKKwkJCQkJaWYgc2VsZWN0X2xpc3RbaWR4XVsx XSA9PSAnaW5ldF9taW5tYXhfb3BzJzoKKwkJCQkJCXIgPSBjb21wYXJlX2luZXQocHJldltp ZHhdLCByb3dbaWR4XSkKKwkJCQkJZWxzZToKKwkJCQkJCXIgPSBjb21wYXJlX2RlZmF1bHQo cHJldltpZHhdLCByb3dbaWR4XSkKKworCQkJCQlpZiBzb3J0X29yZGVyW2lkeF06CisJCQkJ CQlyID0gLXIKKworCQkJCQlpZiByID4gMDoKKwkJCQkJCXByaW50KCJFUlJPUjogaW5jb3Jy ZWN0IG9yZGVyaW5nICVzID4gJXMiICUgKHByZXZbaWR4XSwgcm93W2lkeF0pKQorCQkJCQkJ c3lzLmV4aXQoMSkKKworCQkJCQlpZiByIDwgMDoKKwkJCQkJCWJyZWFrCisKKwkJCXByZXYg PSByb3cKKworCWN1ci5jbG9zZSgpCisKKworZGVmIHJ1bl9xdWVyaWVzKGNvbm4sIGNvbmZp ZywgaW5kZXhlZF9jb2xzLCBudW1fcXVlcmllcyA9IDEwMDApOgorCisJbnF1ZXJ5ID0gMAor CisJd2hpbGUgbnF1ZXJ5IDwgbnVtX3F1ZXJpZXM6CisJCWlmIHJ1bl9xdWVyeShjb25uLCBj b25maWcsIGluZGV4ZWRfY29scyk6CisJCQlucXVlcnkgKz0gMQorCisKK2RlZiBxdWVyeV90 aW1pbmcoY3VyLCBxdWVyeSk6CisKKwlydW5zID0gW10KKworCSMgZ2V0IGV4cGxhaW4gcGxh biBhbmQgY29zdHMgZnJvbSB0aGUgZmlyc3Qgbm9kZQorCXIgPSBleGVjdXRlX3F1ZXJ5KGN1 ciwgJ2V4cGxhaW4gKGFuYWx5emUsIHRpbWluZyBvZmYpICVzJyAlIChxdWVyeSwpLCBUcnVl KQorCXByaW50KCIiKQorCXByaW50KCJcbiIuam9pbihbJyAgICAnICsgeFswXSBmb3IgeCBp biByXSkpCisJcHJpbnQoIiIpCisKKwlzeXMuc3Rkb3V0LmZsdXNoKCkKKworCXIgPSByZS5z ZWFyY2goJ2Nvc3Q9KFteXHNdKilcLlwuKFteXHNdKiknLCByWzBdWzBdKQorCWNvc3RzID0g W2Zsb2F0KHIuZ3JvdXBzKClbMF0pLCBmbG9hdChyLmdyb3VwcygpWzFdKV0KKworCWZvciBy IGluIHJhbmdlKDAsMSk6CisJCXMgPSB0aW1lLnRpbWUoKQorCQlleGVjdXRlX3F1ZXJ5KGN1 ciwgcXVlcnkpCisJCWQgPSB0aW1lLnRpbWUoKQorCQlydW5zLmFwcGVuZChkLXMpCisKKwkj IHByaW50KCJydW5zICVzID0+IG1lYW4gJXMiICUgKHN0cihydW5zKSwgbWVhbihydW5zKSkp CisKKwlzeXMuc3Rkb3V0LmZsdXNoKCkKKworCXJldHVybiAobWVhbihydW5zKSwgY29zdHMp CisKKworZGVmIGNoZWNrX3RpbWluZyhjb25uLCBjb25maWcsIHF1ZXJ5KToKKworCWN1ciA9 IGNvbm4uY3Vyc29yKCkKKworCSMgZ2V0IHRpbWluZyBmb3IgYSBzaW1wbGUgcGxhbiB3aXRo b3V0IGEgQlJJTiBzb3J0CisKKwlleGVjdXRlX3F1ZXJ5KGN1ciwgJ3NldCBlbmFibGVfc2Vx c2NhbiA9IG9uJykKKwlleGVjdXRlX3F1ZXJ5KGN1ciwgJ3NldCBlbmFibGVfYnJpbnNvcnQg PSBvZmYnKQorCisJKHNlcXNjYW5fdGltZSwgc2Vxc2Nhbl9jb3N0cykgPSBxdWVyeV90aW1p bmcoY3VyLCBxdWVyeSkKKworCSMgZ2V0IHRpbWluZyBmb3IgYSBzaW1wbGUgcGxhbiB3aXRo IGEgQlJJTiBzb3J0CisJZXhlY3V0ZV9xdWVyeShjdXIsICdzZXQgZW5hYmxlX3NlcXNjYW4g PSBvZmYnKQorCWV4ZWN1dGVfcXVlcnkoY3VyLCAnc2V0IGVuYWJsZV9icmluc29ydCA9IG9u JykKKwlleGVjdXRlX3F1ZXJ5KGN1ciwgcXVlcnkpCisKKwkoYnJpbnNvcnRfdGltZSwgYnJp bnNvcnRfY29zdHMpID0gcXVlcnlfdGltaW5nKGN1ciwgcXVlcnkpCisKKwlwcmludCAoInRp bWluZyIsICdyb3dzJywgY29uZmlnWyducm93cyddLCAncGFnZXNfcGVyX3JhbmdlJywgY29u ZmlnWydwYWdlc19wZXJfcmFuZ2UnXSwgJ3JhbmRvbW5lc3MnLCBjb25maWdbJ3JhbmRvbW5l c3MnXSwgJ2ZpbGxmYWN0b3InLCBjb25maWdbJ2ZpbGxmYWN0b3InXSwgJ3dvcmtfbWVtJywg Y29uZmlnWyd3b3JrX21lbSddLCAnd2F0ZXJtYXJrX3N0ZXAnLCBjb25maWdbJ3dhdGVybWFy a19zdGVwJ10sICdsaW1pdCcsIGNvbmZpZ1snbGltaXQnXSwgJ29mZnNldCcsIGNvbmZpZ1sn b2Zmc2V0J10sICJzZXFzY2FuIiwgc2Vxc2Nhbl90aW1lLCAiYnJpbnNvcnQiLCBicmluc29y dF90aW1lLCAiY29zdHMgc2Vxc2NhbiIsIHNlcXNjYW5fY29zdHNbMF0sIHNlcXNjYW5fY29z dHNbMV0sICJicmluc29ydCIsIGJyaW5zb3J0X2Nvc3RzWzBdLCBicmluc29ydF9jb3N0c1sx XSkKKwkjIHByaW50ICgiYnJpbnNvcnQgdGltaW5nIiwgYnJpbnNvcnRfdGltZSwgImNvc3Rz IiwgYnJpbnNvcnRfY29zdHNbMF0sIGJyaW5zb3J0X2Nvc3RzWzFdKQorCisJaWYgKHNlcXNj YW5fY29zdHNbMV0gKiAxLjEgPCBicmluc29ydF9jb3N0c1sxXSkgYW5kIChzZXFzY2FuX3Rp bWUgPiBicmluc29ydF90aW1lICogMS4xKToKKwkJcHJpbnQgKCJDT1NUSU5HIElTU1VFICgl ZiA8ICVmKSAmJiAoJWYgPiAlZikiICUgKHNlcXNjYW5fY29zdHNbMV0sIGJyaW5zb3J0X2Nv c3RzWzFdLCBzZXFzY2FuX3RpbWUsIGJyaW5zb3J0X3RpbWUpKQorCisJaWYgKHNlcXNjYW5f Y29zdHNbMV0gPiBicmluc29ydF9jb3N0c1sxXSAqIDEuMSkgYW5kIChzZXFzY2FuX3RpbWUg KiAxLjEgPCBicmluc29ydF90aW1lKToKKwkJcHJpbnQgKCJDT1NUSU5HIElTU1VFICglZiA+ ICVmKSAmJiAoJWYgPCAlZikiICUgKHNlcXNjYW5fY29zdHNbMV0sIGJyaW5zb3J0X2Nvc3Rz WzFdLCBzZXFzY2FuX3RpbWUsIGJyaW5zb3J0X3RpbWUpKQorCisJc3lzLnN0ZG91dC5mbHVz aCgpCisKKworZGVmIHJ1bl9xdWVyeShjb25uLCBjb25maWcsIGluZGV4ZWRfY29scyk6CisK KwlsaW1pdF9yb3dzID0gY29uZmlnWyducm93cyddCisJb2Zmc2V0X3Jvd3MgPSAwCisKKwlj dXIgPSBjb25uLmN1cnNvcihjdXJzb3JfZmFjdG9yeT1wc3ljb3BnMi5leHRyYXMuUmVhbERp Y3RDdXJzb3IpCisKKwkjIHJhbmRvbSBjb2x1bW5zIHRvIHJlZmVyZW5jZSBpbiB0aGUgU0VM RUNUIGxpc3QsIG1heSBub3QgaW5jbHVkZSBzb3J0IGNvbHVtbihzKQorCXNlbGVjdF9saXN0 ID0gcmFuZG9tLnNhbXBsZShjb2xzLCByYW5kb20ucmFuZGludCgxLGxlbihjb2xzKSkpCisK KwkjIGJ1dCBtYXliZSBqdXN0IGRvIHNlbGVjdCAqLCBzbyB0aGF0IHdlIGRvbid0IGRvIGEg cHJvamVjdGlvbgorCXNlbGVjdF9zdGFyID0gRmFsc2UKKwlpZiByYW5kb20ucmFuZG9tKCkg PCAwLjU6CisJCXNlbGVjdF9zdGFyID0gVHJ1ZQorCQlzZWxlY3RfbGlzdCA9IFsoJyonLCBO b25lKV0KKworCSMgcmFuZG9tIGNvbHVtbnMgdG8gcmVmZXJlbmNlIGluIHRoZSBPUkRFUiBC WSBjbGF1c2UKKwlzb3J0X2xpc3QgPSByYW5kb20uc2FtcGxlKGNvbHMsIHJhbmRvbS5yYW5k aW50KDEsbGVuKGNvbHMpKSkKKworCSMgZ2VuZXJhdGUgcmFuZG9tIEFTQyAvIERFU0MgbW9k aWZpZXJzCisJaXNfZGVzYyA9IFtdCisJb3JkZXJfYnkgPSBbXQorCWZvciBzIGluIHJhbmdl KDAsbGVuKHNvcnRfbGlzdCkpOgorCQlkZXNjID0gcmFuZG9tLmNob2ljZShbVHJ1ZSwgRmFs c2VdKQorCQlpc19kZXNjLmFwcGVuZChkZXNjKQorCQl4ID0gc29ydF9saXN0W3NdWzBdCisJ CWlmIGRlc2M6CisJCQl4ID0geCArICcgREVTQycKKwkJb3JkZXJfYnkuYXBwZW5kKHgpCisK KwlxdWVyeSA9ICdTRUxFQ1QgJXMgRlJPTSB0ZXN0X3RhYmxlIE9SREVSIEJZICVzJyAlICgn LCAnLmpvaW4oW3ZbMF0gZm9yIHYgaW4gc2VsZWN0X2xpc3RdKSwgJywgJy5qb2luKG9yZGVy X2J5KSkKKworCSMgcmFuZG9tbHkgYWRkIExJTUlUIGFuZCBPRkZTRVQgY2xhdXNlKHMpCisJ aWYgcmFuZG9tLnJhbmRvbSgpIDwgMC41OgorCisJCWxpbWl0X3Jvd3MgPSAxICsgaW50KHBv dyhyYW5kb20ucmFuZG9tKCksIDMpICogcmFuZG9tLnJhbmRpbnQoMSxjb25maWdbJ25yb3dz J10pKQorCQlxdWVyeSA9IHF1ZXJ5ICsgJyBMSU1JVCAlZCcgJSAobGltaXRfcm93cywpOwor CisJCWlmIGxpbWl0X3Jvd3MgPCBjb25maWdbJ25yb3dzJ10gYW5kIHJhbmRvbS5yYW5kb20o KSA8IDAuNToKKworCQkJb2Zmc2V0X3Jvd3MgPSBpbnQocG93KHJhbmRvbS5yYW5kb20oKSwg MykgKiByYW5kb20ucmFuZGludCgxLGNvbmZpZ1snbnJvd3MnXSAtIGxpbWl0X3Jvd3MpKQor CQkJcXVlcnkgPSBxdWVyeSArICcgT0ZGU0VUICVkJyAlIChvZmZzZXRfcm93cywpOworCisJ ZXhwZWN0ZWRfcm93cyA9IG1pbihsaW1pdF9yb3dzLCBjb25maWdbJ25yb3dzJ10gLSBvZmZz ZXRfcm93cykKKworCSMgd2F0ZXJtYXJrX3N0ZXAgPSByYW5kb20ucmFuZGludCgtMSwgMykK Kwl3YXRlcm1hcmtfc3RlcCA9IHJhbmRvbS5jaG9pY2UoWy0xLCAwLCAxLCA4LCAzMiwgMTI4 XSkKKwlleGVjdXRlX3F1ZXJ5KGN1ciwgJ1NFVCBicmluc29ydF93YXRlcm1hcmtfc3RlcCA9 ICVkJyAlICh3YXRlcm1hcmtfc3RlcCwpKQorCisJZiA9IHJhbmRvbS5yYW5kb20oKQorCSN3 b3JrX21lbV9rYiA9IDY0ICsgaW50KChmICogZiAqIGYpICogcmFuZG9tLnJhbmRpbnQoNjQs IDMyNzY4KSkKKwl3b3JrX21lbV9rYiA9IHJhbmRvbS5jaG9pY2UoWzY0LCAxMDI0LCA0MDk2 LCAzMjc2OF0pCisKKwlleGVjdXRlX3F1ZXJ5KGN1ciwgIlNFVCB3b3JrX21lbSA9ICclZGtC JyIgJSAod29ya19tZW1fa2IsKSkKKworCWNvbmZpZyA9IGNvbmZpZy5jb3B5KCkKKwljb25m aWcudXBkYXRlKHsnd29ya19tZW0nIDogd29ya19tZW1fa2J9KQorCWNvbmZpZy51cGRhdGUo eyd3YXRlcm1hcmtfc3RlcCcgOiB3YXRlcm1hcmtfc3RlcH0pCisJY29uZmlnLnVwZGF0ZSh7 J2xpbWl0JyA6IGxpbWl0X3Jvd3N9KQorCWNvbmZpZy51cGRhdGUoeydvZmZzZXQnIDogb2Zm c2V0X3Jvd3N9KQorCisJIyBkbyB3ZSBleHBlY3QgYnJpbnNvcnQgb3Igbm90PyBvbmx5IHdo ZW4gdGhlIGZpcnN0IE9SREVSIEJZIGlzIGluZGV4ZWQKKwlpZiBzb3J0X2xpc3RbMF0gaW4g aW5kZXhlZF9jb2xzOgorCisJCXByaW50KCctLS0tLS0tLS0tLS0tLScsIGRhdGV0aW1lLm5v dygpLCAnLS0tLS0tLS0tLS0tLS0nKQorCQlwcmludCgiU1FMOiIsIHF1ZXJ5KQorCQlwcmlu dCgiQ09ORklHOiIsIGNvbmZpZykKKworCQlpZiBicmluc29ydF9pbl9leHBsYWluKGN1ciwg cXVlcnkpOgorCQkJY2hlY2tfb3JkZXJpbmcoY29ubiwgY29uZmlnLCBxdWVyeSwgZXhwZWN0 ZWRfcm93cywgc2VsZWN0X3N0YXIsIHNlbGVjdF9saXN0LCBzb3J0X2xpc3QsIGlzX2Rlc2Mp CisJCQljaGVja190aW1pbmcoY29ubiwgY29uZmlnLCBxdWVyeSkKKwkJZWxzZToKKwkJCXBy aW50KCJFUlJPUjogQlJJTiBTb3J0IG5vdCBpbiBwbGFuIikKKwkJCXN5cy5leGl0KDEpCisK KwkJcmVzdWx0ID0gVHJ1ZQorCisJZWxzZToKKworCQlpZiBicmluc29ydF9pbl9leHBsYWlu KGN1ciwgcXVlcnkpOgorCQkJcHJpbnQoIkVSUk9SOiBCUklOIFNvcnQgaW4gcGxhbiIpCisJ CQlzeXMuZXhpdCgxKQorCisJCXJlc3VsdCA9IEZhbHNlCisKKwljdXIuY2xvc2UoKQorCisJ cmV0dXJuIHJlc3VsdAorCisKK2RlZiBzZXR1cF9jb25uZWN0aW9uKGNvbm4pOgorCWN1ciA9 IGNvbm4uY3Vyc29yKCkKKworCSMgZm9yY2UgaW5kZXggYWNjZXNzCisJZXhlY3V0ZV9xdWVy eShjdXIsICdTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmYnKQorCWV4ZWN1dGVfcXVlcnkoY3Vy LCAnU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwJykKKworCWN1ci5j bG9zZSgpCisKKworcnVuX2lkID0gMAorCit3aGlsZSBUcnVlOgorCisJcnVuX2lkICs9IDEK KworCWNvbmZpZyA9IHt9CisKKwljb25uID0gcHN5Y29wZzIuY29ubmVjdCgnaG9zdD1sb2Nh bGhvc3QgcG9ydD01NDMyIGRibmFtZT10ZXN0IHVzZXI9dXNlcicpCisKKwlzZXR1cF9jb25u ZWN0aW9uKGNvbm4pCisKKwlwcmludCgnPT09PT09PT09PSBydW4gJWQgPT09PT09PT09PScg JSAocnVuX2lkLCkpCisKKwkjIGRhdGEgZGlzdHJpYnV0aW9uICgxIC0gc2VxdWVudGlhbCwg MyAtIHJhbmRvbSkKKwljb25maWdbJ3JhbmRvbW5lc3MnXSA9IHJhbmRvbS5jaG9pY2UoWzAs IDAuMDUsIDAuMSwgMC4yNSwgMC41LCAxLjBdKQorCisJIyByYW5kb20gZmlsbGZhY3Rvciwg c2tld2VkIGNsb3NlciB0byAxMCUKKwljb25maWdbJ2ZpbGxmYWN0b3InXSA9IDEwICsgaW50 KHBvdyhyYW5kb20ucmFuZG9tKCksMykgKiA5MCkKKworCSMgcmFuZG9tIG51bWJlciBvZiBy b3dzCisJY29uZmlnWyducm93cyddID0gcmFuZG9tLmNob2ljZShbMTAwMDAwLCAxMDAwMDAw XSkKKworCSMgcGFnZXMgcGVyIEJSSU4gcmFuZ2UgKGZvciBhbGwgaW5kZXhlcykKKwljb25m aWdbJ3BhZ2VzX3Blcl9yYW5nZSddID0gcmFuZG9tLmNob2ljZShbMSwgMzIsIDEyOF0pCisK KwlyZWNyZWF0ZV90YWJsZShjb25uLCBjb25maWdbJ25yb3dzJ10sIGNvbmZpZ1sncmFuZG9t bmVzcyddLCBjb25maWdbJ2ZpbGxmYWN0b3InXSkKKworCWluZGV4ZWRfY29scyA9IGNyZWF0 ZV9pbmRleGVzKGNvbm4sIGNvbmZpZ1sncGFnZXNfcGVyX3JhbmdlJ10pCisKKwlydW5fcXVl cmllcyhjb25uLCBjb25maWcsIGluZGV4ZWRfY29scykKKworCWNvbm4uY2xvc2UoKQotLSAK Mi40MS4wCgo= --------------CooOQ6LlXwcsddypE9zFAJMn--